diff --git a/.gitignore b/.gitignore index 2e8693ae7ebaf8b45dff4715595586d1e30d1579..ba0ae100d1e02b07aecb5bd25e0a2df7f6ae594b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ venv ippisite/docs/build ippisite/docs/source/_autosummary +ippisite/docs/source/ippidb +ippisite/docs/source/ippisite /ippidb_backend/PrepareFingerPrints/nbproject/private/ /ippidb_backend/PrepareFingerPrints/build/ /ippidb_backend/PrepareFingerPrints/dist/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d95ae749951ece6a9181b243bd406e1c74463324..67dc84c19dd9751928847e247c822c259e2afcce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -62,7 +62,7 @@ test-centos7: - coverage html - pip3.6 install sphinx sphinx-argparse sphinxcontrib.bibtex sphinx_rtd_theme - cd docs - - make html + - PYTHON=python3.6 make html artifacts: paths: - ippisite/htmlcov diff --git a/ansible/celeryd b/ansible/celeryd index a610beb5869e4a39d6cd1df972084e4768649eec..5737f428d81caef3b1b8328243160e020bab2f1e 100644 --- a/ansible/celeryd +++ b/ansible/celeryd @@ -5,11 +5,10 @@ CELERYD_CHDIR="/home/ippidb/ippidb-web-{{ http_port }}/ippisite" CELERYD_OPTS="--time-limit=172800 --concurrency=1 --max-tasks-per-child=1" CELERYD_LOG_FILE="/var/ippidb-{{ http_port }}-celery/celery%n%I.log" CELERYD_PID_FILE="/var/ippidb-{{ http_port }}-celery/celery%n.pid" -CELERYD_LOG_LEVEL="DEBUG" +CELERYD_LOG_LEVEL="INFO" CELERYD_USER="celery-{{ http_port }}" CELERYD_GROUP="ippidb" CELERYD_QUEUE="celery-{{ http_port }}" CELERY_CREATE_DIRS=1 -SYSTEMD_LOG_LEVEL=debug DJANGO_SETTINGS_MODULE=ippisite.{{ ansible_hostname }}_settings BABEL_LIBDIR=/usr/lib64/openbabel/ \ No newline at end of file diff --git a/ansible/deploy.yaml b/ansible/deploy.yaml index 69b68f81ba297cbb27617a3a0df473b945fae2aa..3d50d455f3bd657cc0c9d2cfd36ac31df7320571 100644 --- a/ansible/deploy.yaml +++ b/ansible/deploy.yaml @@ -12,7 +12,11 @@ - name: Create celery user user: name=celery-{{ http_port }} groups={{ deploy_user_name }} append=yes state=present createhome=yes become: true - register: newuser + register: newuser + - name: Set the path to {{ deploy_user_name }} home to executable by group so that celery user can cd into it + file: + path: /home/{{ deploy_user_name }} + mode: g+x # Install basic non-virtualenv requirements # - name: install git diff --git a/ippisite/.flake8 b/ippisite/.flake8 index 41410fc35e285d25d83b87604a60eb21537d5611..9e79423b4feea5d39723498bb0735c3791a950ee 100644 --- a/ippisite/.flake8 +++ b/ippisite/.flake8 @@ -1,4 +1,4 @@ [flake8] max-line-length = 120 ignore = W503 -exclude = */migrations/*.py, manage.py, docs/source/conf.py +exclude = */migrations/*.py, manage.py, docs/source/conf.py, get-pip.py diff --git a/ippisite/.gitignore b/ippisite/.gitignore index 9f6cdf4dd2f9e7f6adfca98b21325e15a81fad93..ef979c07373211388dc5153ceb0a72991a73abac 100644 --- a/ippisite/.gitignore +++ b/ippisite/.gitignore @@ -14,6 +14,7 @@ ippisite/db.sqlite3 django.mo ippisite/.idea/ db.sqlite3 +tests_contribute_cache.sqlite #bryan custom *IPPIDB_PPI.xlsx* diff --git a/ippisite/docs/Makefile b/ippisite/docs/Makefile index 69fe55ecfa9aade66e1412aef0ee7d04a9bcde86..2d45653d881621ef72b0461f44d29827e85f416f 100644 --- a/ippisite/docs/Makefile +++ b/ippisite/docs/Makefile @@ -3,6 +3,8 @@ # You can set these variables from the command line. SPHINXOPTS = +SPHINXAPI = sphinx-apidoc +SPHINXAPISRC = .. SPHINXBUILD = sphinx-build SOURCEDIR = source BUILDDIR = build @@ -16,4 +18,6 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXAPI) -o $(SOURCEDIR) $(SPHINXAPISRC) + $(PYTHON) ../manage.py graph_models ippidb --dot > source/db.dot + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/ippisite/docs/source/conf.py b/ippisite/docs/source/conf.py index 2a36bfceca8a59f6951aaaa54dda5e4e70c9656f..a1a1ce100238349db5d46be5be76962191748f29 100644 --- a/ippisite/docs/source/conf.py +++ b/ippisite/docs/source/conf.py @@ -19,24 +19,26 @@ import os import sys import matplotlib + # avoid using tkinter with matplotlib -matplotlib.use('agg') +matplotlib.use("agg") -sys.path.insert(0, os.path.abspath('../..')) +sys.path.insert(0, os.path.abspath("../..")) import django -os.environ['DJANGO_SETTINGS_MODULE'] = 'ippisite.settings' + +os.environ["DJANGO_SETTINGS_MODULE"] = "ippisite.settings" django.setup() # -- Project information ----------------------------------------------------- -project = 'iPPI-DB' -copyright = '2018, Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio' -author = 'Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio' +project = "iPPI-DB" +copyright = "2018, Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio" +author = "Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio" # The short X.Y version -version = '' +version = "" # The full version, including alpha/beta/rc tags -release = '' +release = "" # -- General configuration --------------------------------------------------- @@ -49,25 +51,26 @@ release = '' # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autosummary', - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.coverage', - 'sphinx.ext.viewcode', - 'sphinx.ext.graphviz' + "sphinx.ext.autosummary", + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.coverage", + "sphinx.ext.viewcode", + "sphinx.ext.graphviz", + "sphinxcontrib.bibtex", ] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +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' +source_suffix = ".rst" # The master toctree document. -master_doc = 'index' +master_doc = "index" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -90,7 +93,7 @@ pygments_style = None # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme @@ -102,7 +105,7 @@ html_theme = 'sphinx_rtd_theme' # 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'] +html_static_path = ["_static"] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -118,7 +121,7 @@ html_static_path = ['_static'] # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. -htmlhelp_basename = 'iPPI-DBdoc' +htmlhelp_basename = "iPPI-DBdoc" # -- Options for LaTeX output ------------------------------------------------ @@ -127,15 +130,12 @@ 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', @@ -145,8 +145,13 @@ latex_elements = { # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'iPPI-DB.tex', 'iPPI-DB Documentation', - 'Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio', 'manual'), + ( + master_doc, + "iPPI-DB.tex", + "iPPI-DB Documentation", + "Rachel Torchet, Alexandra Moine-Franel, Hélène Borges, Bryan Brancotte, Olivia Doppelt-Azeroual, Fabien Mareuil, Hervé Ménager, Olivier Sperandio", + "manual", + ), ] @@ -154,10 +159,7 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'ippi-db', 'iPPI-DB Documentation', - [author], 1) -] +man_pages = [(master_doc, "ippi-db", "iPPI-DB Documentation", [author], 1)] # -- Options for Texinfo output ---------------------------------------------- @@ -166,9 +168,15 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'iPPI-DB', 'iPPI-DB Documentation', - author, 'iPPI-DB', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "iPPI-DB", + "iPPI-DB Documentation", + author, + "iPPI-DB", + "One line description of project.", + "Miscellaneous", + ), ] @@ -187,7 +195,7 @@ epub_title = project # epub_uid = '' # A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] +epub_exclude_files = ["search.html"] # -- Extension configuration ------------------------------------------------- @@ -195,16 +203,16 @@ epub_exclude_files = ['search.html'] # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} +intersphinx_mapping = {"https://docs.python.org/": None} # -- Extension configuration -------------------------------------------------i autoclass_content = "both" # include both class docstring and __init__ autodoc_default_flags = [ - # Make sure that any autodoc declarations show the right members - "members", - "private-members", - "show-inheritance", + # Make sure that any autodoc declarations show the right members + "members", + "private-members", + "show-inheritance", ] autosummary_generate = True # Make _autosummary files and include them napoleon_numpy_docstring = False # Force consistency, leave only Google @@ -212,7 +220,11 @@ napoleon_use_rtype = False # More legible # The suffix of source filenames. autosummary_generate = True -exclude_patterns = ['_build'] +exclude_patterns = ["_build"] -#do not try to import tkinter for sphinx -autodoc_mock_imports = ['_tkinter'] \ No newline at end of file +# do not try to import tkinter for sphinx +autodoc_mock_imports = ["_tkinter"] + +bibtex_bibfiles = [ + "refs.bib", +] diff --git a/ippisite/docs/source/configuration.rst b/ippisite/docs/source/configuration.rst index bf51e9f50426a7b17ae375c534e786eb501a6493..53d9bf259579c61b05c5345743c93c38cf1810d5 100644 --- a/ippisite/docs/source/configuration.rst +++ b/ippisite/docs/source/configuration.rst @@ -51,20 +51,21 @@ You can then navigate to the django admin interface of iPPI-DB, and create an en .. image:: img/ORCID_conf_7.png :width: 100% -GitHub authentication configuration +.. GitHub authentication is commented because it does not currently work +.. GitHub authentication configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The configuration for GitHub authentication follows the same principle: configure the app on the provider website, then enter the provided `Client ID` and `Client secret` -on the django admin interface website. - -.. image:: img/Github_conf_1.png - :width: 100% - -.. image:: img/Github_conf_2.png - :width: 100% - -.. image:: img/Github_conf_3.png - :width: 100% +.. The configuration for GitHub authentication follows the same principle: configure the app on the provider website, then enter the provided `Client ID` and `Client secret` + on the django admin interface website. +.. + .. image:: img/Github_conf_1.png + :width: 100% +.. + .. image:: img/Github_conf_2.png + :width: 100% +.. + .. image:: img/Github_conf_3.png + :width: 100% diff --git a/ippisite/docs/source/db.dot b/ippisite/docs/source/db.dot deleted file mode 100644 index bda9160383810fe29724b1b3ef5c1aa926331cec..0000000000000000000000000000000000000000 --- a/ippisite/docs/source/db.dot +++ /dev/null @@ -1,2450 +0,0 @@ -digraph model_graph { - graph [bb="0,0,3198.5,2516", - fontname=Roboto, - fontsize=8, - splines=true - ]; - node [fontname=Roboto, - fontsize=8, - label="\N", - shape=plaintext - ]; - edge [fontname=Roboto, - fontsize=8 - ]; - subgraph cluster_ippidb { - graph [bb="36.467,0,3124.5,2516", - color=olivedrab4, - label=< - <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER"> - <FONT FACE="Roboto" COLOR="Black" POINT-SIZE="10"> - <B>ippidb</B> - </FONT> - </TD></TR> - </TABLE> - >, - lheight=0.26, - lp="1580.5,2502.5", - lwidth=2.31, - style=rounded - ]; - ippidb_models_AutoFillableModel [height=0.5, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - AutoFillableModel - </B></FONT></TD></TR> - - </TABLE> - >, - pos="2007.5,26", - width=2.6389]; - ippidb_models_Bibliography [height=3.0833, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Bibliography<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">authors_list</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">biblio_year</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">PositiveSmallIntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">cytotox</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">id_source</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">in_cellulo</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">in_silico</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">in_vitro</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">in_vivo</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">journal_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">pharmacokinetic</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">source</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">title</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">xray</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1023.5,658", - width=3.8611]; - ippidb_models_Bibliography -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="1189.5,287", - pos="e,1912.1,28.366 1156,546.89 1161.9,533.98 1165.5,520.15 1165.5,505.5 1165.5,505.5 1165.5,505.5 1165.5,90 1165.5,53.476 1675.9,35.03 \ -1901.9,28.652"]; - ippidb_models_Taxonomy [height=1.0972, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Taxonomy<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">taxonomy_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1883.5,188.5", - width=2.9167]; - ippidb_models_Taxonomy -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="1978.5,90", - pos="e,1988.5,44.056 1907.2,148.99 1920.2,128.13 1937.3,102.47 1954.5,81 1962.7,70.812 1972.4,60.326 1981.3,51.279"]; - ippidb_models_MolecularFunction [height=1.0972, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - MolecularFunction<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">description</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">go_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2123.5,188.5", - width=2.7083]; - ippidb_models_MolecularFunction -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="2082.5,90", - pos="e,2020.6,44.351 2095.1,148.75 2073.8,118.86 2045.1,78.742 2026.5,52.633"]; - ippidb_models_Protein [height=1.8194, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Protein<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>organism</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">entry_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">gene_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">recommended_name_long</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">short_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">uniprot_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2256.5,398.5", - width=4]; - ippidb_models_Protein -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="2281.5,188.5", - pos="e,2102.7,32.781 2257.3,332.76 2257.4,317.72 2257.5,301.81 2257.5,287 2257.5,287 2257.5,287 2257.5,90 2257.5,58.294 2181.1,42.083 \ -2112.7,33.926"]; - ippidb_models_Protein -> ippidb_models_Taxonomy [arrowhead=none, - arrowtail=dot, - dir=both, - label=" organism (protein)", - lp="1944.5,287", - pos="s,2112.4,360.35 2104.6,358.24 2012.3,333.15 1910.9,304.14 1903.5,296 1887.1,277.85 1882.1,250.7 1881.2,228.22"]; - ippidb_models_Protein -> ippidb_models_MolecularFunction [arrowhead=dot, - arrowtail=dot, - dir=both, - label=" molecular_functions (protein)", - lp="2189,287", - pos="s,2152.6,332.88 e,2116.3,228.25 2146.9,326.82 2138.4,317.41 2131.1,307.13 2125.5,296 2116.5,277.88 2114.7,255.81 2115.7,236.39"]; - ippidb_models_Domain [height=1.4583, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Domain<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">domain_family</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">pfam_acc</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">pfam_description</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">pfam_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2434.5,188.5", - width=3.0694]; - ippidb_models_Protein -> ippidb_models_Domain [arrowhead=dot, - arrowtail=dot, - dir=both, - label=" domains (protein)", - lp="2392,287", - pos="s,2307.5,332.79 e,2384.9,241.44 2312.6,326.42 2325.5,310.32 2339.3,293.44 2352.5,278 2361,268.05 2370.2,257.66 2379.3,247.63"]; - ippidb_models_Domain -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="2352.5,90", - pos="e,2102.5,34.539 2378,135.81 2346.4,109.33 2304.9,79.285 2262.5,62 2235.6,51.028 2170.3,41.917 2112.5,35.606"]; - ippidb_models_ProteinDomainComplex [height=1.1528, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - ProteinDomainComplex - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>domain</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>protein</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">ppc_copy_nb</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2436.5,658", - width=3.1944]; - ippidb_models_ProteinDomainComplex -> ippidb_models_Protein [arrowhead=none, - arrowtail=dot, - dir=both, - label=" protein (proteindomaincomplex)", - lp="2361.5,505.5", - pos="s,2384.9,616.45 2378.7,610.86 2349,584.01 2314.4,548.17 2291.5,510 2283.1,495.99 2276.5,479.76 2271.5,464.1"]; - ippidb_models_ProteinDomainComplex -> ippidb_models_Domain [arrowhead=none, - arrowtail=dot, - dir=both, - label=" domain (proteindomaincomplex)", - lp="2507.5,398.5", - pos="s,2436.5,616.25 2436.5,608.1 2436.5,578.31 2436.5,539.74 2436.5,505.5 2436.5,505.5 2436.5,505.5 2436.5,287 2436.5,272.12 2436.3,\ -255.98 2436,241.15"]; - ippidb_models_ProteinDomainBoundComplex [height=0.79167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - ProteinDomainBoundComplex - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>proteindomaincomplex_ptr</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>OneToOneField (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">ppp_copy_nb_per_p</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2956.5,1453", - width=4.4306]; - ippidb_models_ProteinDomainBoundComplex -> ippidb_models_ProteinDomainComplex [arrowhead=empty, - arrowtail=none, - dir=both, - label=" multi-table\ninheritance", - lp="2773,824", - pos="e,2536.7,699.53 2954.9,1424.3 2948.5,1335.7 2918.6,1061.3 2788.5,887 2726.4,803.77 2624.4,742.26 2546.1,704.07"]; - ippidb_models_ProteinDomainPartnerComplex [height=0.61111, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - ProteinDomainPartnerComplex - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>proteindomaincomplex_ptr</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>OneToOneField (id)</B></FONT> - </TD></TR> - - - </TABLE> - >, - pos="2619.5,1453", - width=4.4306]; - ippidb_models_ProteinDomainPartnerComplex -> ippidb_models_ProteinDomainComplex [arrowhead=empty, - arrowtail=none, - dir=both, - label=" multi-table\ninheritance", - lp="2553,824", - pos="e,2464.3,699.59 2618.7,1430.8 2615.3,1346.9 2597.8,1041.4 2517.5,806 2505.8,771.73 2486.5,736.04 2469.7,708.3"]; - ippidb_models_Symmetry [height=0.97222, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Symmetry - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">code</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">description</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1687.5,398.5", - width=2.7083]; - ippidb_models_Disease [height=0.97222, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Disease - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">identifier</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1895.5,398.5", - width=2.5833]; - ippidb_models_PpiFamily [height=0.79167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - PpiFamily - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1485.5,398.5", - width=2.4028]; - ippidb_models_Ppi [height=1.6389, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Ppi<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>family</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>symmetry</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pdb_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">pockets_nb</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1901.5,658", - width=3.0972]; - ippidb_models_Ppi -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="2031.5,287", - pos="e,2007.5,44.207 1966.8,598.94 1988.6,572.91 2007.5,540.32 2007.5,505.5 2007.5,505.5 2007.5,505.5 2007.5,90 2007.5,78.296 2007.5,\ -65.388 2007.5,54.248"]; - ippidb_models_Ppi -> ippidb_models_Symmetry [arrowhead=none, - arrowtail=dot, - dir=both, - label=" symmetry (ppi)", - lp="1813,505.5", - pos="s,1852.7,598.79 1847.4,592.41 1805.8,541.93 1749.9,474.14 1716.4,433.53"]; - ippidb_models_Ppi -> ippidb_models_Disease [arrowhead=dot, - arrowtail=dot, - dir=both, - label=" diseases (ppi)", - lp="1928.5,505.5", - pos="s,1900.1,598.79 e,1896.3,433.53 1899.9,590.55 1898.9,543.52 1897.4,482.16 1896.5,441.61"]; - ippidb_models_Ppi -> ippidb_models_PpiFamily [arrowhead=none, - arrowtail=dot, - dir=both, - label=" family (ppi)", - lp="1679.5,505.5", - pos="s,1800.8,598.85 1793.7,594.6 1731.2,557.37 1651.3,508.94 1581.5,464 1563.2,452.21 1543.2,438.71 1526.3,427.04"]; - ippidb_models_PpiComplex [height=1.1528, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - PpiComplex - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>complex</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>ppi</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">cc_nb</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2334.5,1453", - width=2.9861]; - ippidb_models_PpiComplex -> ippidb_models_ProteinDomainComplex [arrowhead=none, - arrowtail=dot, - dir=both, - label=" complex (ppicomplex)", - lp="2465,824", - pos="s,2339.8,1411.4 2340.9,1403.4 2359.5,1258 2413.9,834.46 2431.2,699.69"]; - ippidb_models_PpiComplex -> ippidb_models_Ppi [arrowhead=none, - arrowtail=dot, - dir=both, - label=" ppi (ppicomplex)", - lp="2215.5,824", - pos="s,2334.4,1411.3 2334.2,1403.3 2331.5,1299.8 2313.8,1056.8 2212.5,887 2166.1,809.27 2082.2,749.83 2013.2,711.02"]; - ippidb_models_Compound [height=15.722, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Compound<BR/><<FONT FACE="Roboto"><I>AutoFillableModel</I></FONT>> - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">a_log_p</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">aromatic_ratio</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">balaban_index</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">best_activity</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">best_activity_ppi_family_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">binding_role</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">bindtest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">canonical_smile</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">celltest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">chembl_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">chemspider_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">common_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">cytoxtest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">fsp3</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">gc_molar_refractivity</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">hba_hbd</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">inchi</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">inchikey</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">inhibition_role</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">inhitest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">insilico_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">is_macrocycle</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">iupac_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">le</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">FloatField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">ligand_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky_a_log_p</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky_hba</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky_hbd</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky_mw</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lipinsky_score</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">lle</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">FloatField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">log_d</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">mean_atom_vol_vdw</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">molecular_weight</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_acceptor_h</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_aliphatic_amines</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_aromatic_bonds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_aromatic_ether</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_aromatic_sssr</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_atom</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_atom_non_h</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_benzene_like_rings</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_bonds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_bonds_non_h</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_br</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_c</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_chiral_centers</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_circuits</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_cl</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_csp2</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_csp3</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_donor_h</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_double_bonds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_f</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_i</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_multiple_bonds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_n</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_o</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_rings</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">nb_rotatable_bonds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pdb_ligand_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pfizer</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pfizer_a_log_p</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pfizer_tpsa</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pktest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pubchem_id</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pubs</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">randic_index</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">rdf070m</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">rotatable_bond_fraction</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">stabilisation_role</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">stabtest_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">sum_atom_polar</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">sum_atom_vol_vdw</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">tests_av</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">tpsa</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">ui</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">veber</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">veber_hba_hbd</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">veber_rb</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">veber_tpsa</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">wiener_index</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="423.47,1453", - width=3.9722]; - ippidb_models_Compound -> ippidb_models_AutoFillableModel [arrowhead=empty, - arrowtail=none, - dir=both, - label=" abstract\ninheritance", - lp="526.47,398.5", - pos="e,1912.5,27.549 501.26,886.8 502.05,865.62 502.47,844.64 502.47,824 502.47,824 502.47,824 502.47,90 502.47,54.917 1560.5,33.673 \ -1902.4,27.724"]; - ippidb_models_CompoundTanimoto [height=1.3333, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CompoundTanimoto - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">canonical_smiles</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">fingerprint</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">tanimoto</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="652.47,2189", - width=3.4306]; - ippidb_models_CompoundTanimoto -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (compoundtanimoto)", - lp="638.97,2060.5", - pos="s,614.47,2141 609.78,2134.4 595.23,2113.6 580,2089.1 569.47,2065 562.91,2050 556.61,2034.6 550.58,2019"]; - ippidb_models_PcaBiplotData [height=0.79167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - PcaBiplotData - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">pca_biplot_data</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2740.5,2420", - width=2.9861]; - ippidb_models_LeLleBiplotData [height=0.79167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - LeLleBiplotData - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">le_lle_biplot_data</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">TextField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1968.5,2420", - width=3.0694]; - ippidb_models_CellLine [height=0.79167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CellLine - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1267.5,658", - width=2.4028]; - ippidb_models_TestActivityDescription [height=2.4167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - TestActivityDescription - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>biblio</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>cell_line</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>ppi</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>protein_domain_bound_complex</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (proteindomaincomplex_ptr)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">is_primary</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">nb_active_compounds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">protein_bound_construct</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">test_modulation_type</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">test_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">test_type</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="2179.5,2189", - width=6.1528]; - ippidb_models_TestActivityDescription -> ippidb_models_Bibliography [arrowhead=none, - arrowtail=dot, - dir=both, - label=" biblio (testactivitydescription)", - lp="1448.5,1453", - pos="s,2010.2,2101.9 2002.8,2098.7 1963.1,2081.9 1920.6,2066.3 1879.5,2056 1852.8,2049.3 1403.6,2038.9 1384.5,2019 1291,1921.8 1426.9,\ -909.57 1340.5,806 1291.5,747.28 1242,800.77 1172.5,769 1169.3,767.53 1166,765.97 1162.8,764.35"]; - ippidb_models_TestActivityDescription -> ippidb_models_ProteinDomainBoundComplex [arrowhead=none, - arrowtail=dot, - dir=both, - label=" protein_domain_bound_complex (testactivitydescription)", - lp="2851,2060.5", - pos="s,2401.2,2150.4 2409.2,2148.8 2558,2118.4 2733.9,2072.7 2788.5,2019 2944.7,1865.3 2957.2,1573.7 2957,1481.6"]; - ippidb_models_TestActivityDescription -> ippidb_models_Ppi [arrowhead=none, - arrowtail=dot, - dir=both, - label=" ppi (testactivitydescription)", - lp="2149.5,1453", - pos="s,2100.4,2101.9 2097.2,2094.4 2093,2083.6 2090.5,2072.2 2090.5,2060.5 2090.5,2060.5 2090.5,2060.5 2090.5,824 2090.5,774.87 2054,\ -736.86 2013.1,709.69"]; - ippidb_models_TestActivityDescription -> ippidb_models_CellLine [arrowhead=none, - arrowtail=dot, - dir=both, - label=" cell_line (testactivitydescription)", - lp="1741,1453", - pos="s,2061.2,2101.8 2054.3,2097.7 2027.1,2081.5 1997.7,2066.4 1968.5,2056 1964.6,2054.6 1674.3,2022.1 1671.5,2019 1629.9,1971.9 1655.7,\ -947.88 1671.5,887 1681,850.53 1718.4,836.68 1696.5,806 1656.1,749.38 1467.5,700.48 1354.2,675.57"]; - ippidb_models_CompoundActivityResult [height=1.6944, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CompoundActivityResult - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>test_activity_description</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">activity</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">activity_type</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">inhibition_percentage</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">modulation_type</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="622.47,2420", - width=4.0278]; - ippidb_models_CompoundActivityResult -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (compoundactivityresult)", - lp="442.47,2189", - pos="s,477.35,2372.4 470.13,2368.7 428.55,2346.9 388.41,2316.8 364.47,2276 325.32,2209.3 318.47,2164.2 364.47,2102 397.92,2056.8 452.02,\ -2110.2 485.47,2065 496.27,2050.4 505.36,2035.1 512.92,2019.1"]; - ippidb_models_CompoundActivityResult -> ippidb_models_TestActivityDescription [arrowhead=none, - arrowtail=dot, - dir=both, - label=" test_activity_description (compoundactivityresult)", - lp="1877.5,2317.5", - pos="s,767.74,2416.2 775.76,2415.9 1024.9,2406.3 1531.8,2375.4 1948.5,2276 1951.6,2275.3 1954.8,2274.5 1957.9,2273.7"]; - ippidb_models_TestCytotoxDescription [height=1.3333, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - TestCytotoxDescription - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>biblio</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>cell_line</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">compound_concentration</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">test_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="905.47,1453", - width=3.9167]; - ippidb_models_TestCytotoxDescription -> ippidb_models_Bibliography [arrowhead=none, - arrowtail=dot, - dir=both, - label=" biblio (testcytotoxdescription)", - lp="957.97,824", - pos="s,892.82,1404.7 890.92,1396.6 864.01,1281.3 815.9,1011.8 893.47,806 898.23,793.36 904.62,781.1 912.02,769.39"]; - ippidb_models_TestCytotoxDescription -> ippidb_models_CellLine [arrowhead=none, - arrowtail=dot, - dir=both, - label=" cell_line (testcytotoxdescription)", - lp="1266.5,824", - pos="s,904.74,1404.8 904.84,1396.7 906.61,1285.5 925.95,1035.8 1056.5,887 1091.1,847.6 1126.4,876.88 1165.5,842 1214,798.74 1244.4,726.68 \ -1258.4,686.79"]; - ippidb_models_CompoundCytotoxicityResult [height=1.1528, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CompoundCytotoxicityResult - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>test_cytotoxicity_description</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">toxicity</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1216.5,2189", - width=4.3194]; - ippidb_models_CompoundCytotoxicityResult -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (compoundcytotoxicityresult)", - lp="1000.5,2060.5", - pos="s,1146.8,2147.4 1139.6,2143.5 1112.4,2128.8 1081.2,2113.3 1051.5,2102 972.31,2071.8 949.73,2071.7 866.47,2056 803.49,2044.1 628.88,\ -2061 580.47,2019 575.75,2014.9 571.17,2010.7 566.72,2006.3"]; - ippidb_models_CompoundCytotoxicityResult -> ippidb_models_TestCytotoxDescription [arrowhead=none, - arrowtail=dot, - dir=both, - label=" test_cytotoxicity_description (compoundcytotoxicityresult)", - lp="1233.5,2060.5", - pos="s,1183,2147.4 1177.6,2140.9 1155.9,2114.9 1127.7,2082.7 1100.5,2056 1082.3,2038.1 1070.2,2040.6 1056.5,2019 948.59,1849.3 917.28,\ -1604 908.61,1501.2"]; - ippidb_models_TestPKDescription [height=1.875, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - TestPKDescription - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>biblio</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>organism</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">administration_mode</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">concentration</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">dose</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">dose_interval</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">test_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1197.5,1453", - width=3.6806]; - ippidb_models_TestPKDescription -> ippidb_models_Bibliography [arrowhead=none, - arrowtail=dot, - dir=both, - label=" biblio (testpkdescription)", - lp="1112,824", - pos="s,1181.3,1385.4 1179.4,1377.3 1151.9,1262 1098.9,1035.4 1058.5,842 1053.6,818.45 1048.6,793.13 1044,769.05"]; - ippidb_models_TestPKDescription -> ippidb_models_Taxonomy [arrowhead=none, - arrowtail=dot, - dir=both, - label=" organism (testpkdescription)", - lp="1435.5,505.5", - pos="s,1217.5,1385.2 1219.7,1377.6 1255.7,1252.3 1326.4,993.1 1363.5,769 1371.6,720.13 1373.5,707.53 1373.5,658 1373.5,658 1373.5,658 \ -1373.5,287 1373.5,246.14 1629.2,213.76 1778.4,198.34"]; - ippidb_models_CompoundPKResult [height=2.4167, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CompoundPKResult - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>test_pk_description</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">auc</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">c_max</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">clearance</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">oral_bioavailability</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">t_demi</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">t_max</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">tolerated</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">NullBooleanField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">voldistribution</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1523.5,2189", - width=3.7083]; - ippidb_models_CompoundPKResult -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (compoundpkresult)", - lp="1449,2060.5", - pos="s,1438.2,2101.7 1431.7,2096.6 1410.6,2080.3 1387,2065.5 1362.5,2056 1281.4,2024.6 648.45,2073.3 580.47,2019 575.69,2015.2 571.04,\ -2011.2 566.54,2007.2"]; - ippidb_models_CompoundPKResult -> ippidb_models_TestPKDescription [arrowhead=none, - arrowtail=dot, - dir=both, - label=" test_pk_description (compoundpkresult)", - lp="1648.5,2060.5", - pos="s,1568.1,2102 1569,2093.9 1569.7,2080.1 1566.7,2067 1557.5,2056 1526.6,2019.2 1379.8,2051.5 1344.5,2019 1202.8,1888.5 1190.4,1640.5 \ -1193.5,1520.9"]; - ippidb_models_CompoundAction [height=1.3333, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - CompoundAction - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>ppi</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">activation_mode</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">nb_copy_compounds</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">IntegerField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1807.5,2189", - width=3.6667]; - ippidb_models_CompoundAction -> ippidb_models_Ppi [arrowhead=none, - arrowtail=dot, - dir=both, - label=" ppi (compoundaction)", - lp="1592,1453", - pos="s,1860.6,2141 1866,2134.5 1886.6,2108.9 1900.1,2079 1879.5,2056 1854.5,2028.1 1569.5,2046.9 1544.5,2019 1502.5,1972.2 1514.6,942.31 \ -1544.5,887 1595.8,792.13 1705.3,730.85 1789.6,695.78"]; - ippidb_models_CompoundAction -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (compoundaction)", - lp="1812,2060.5", - pos="s,1795.9,2140.8 1793.1,2133 1782.8,2104.9 1765.8,2073.2 1738.5,2056 1684,2021.7 631.08,2058.8 580.47,2019 575.76,2015.3 571.18,2011.5 \ -566.74,2007.5"]; - ippidb_models_RefCompoundBiblio [height=1.1528, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - RefCompoundBiblio - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>bibliography</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">compound_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">CharField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="918.47,2189", - width=3.4444]; - ippidb_models_RefCompoundBiblio -> ippidb_models_Bibliography [arrowhead=none, - arrowtail=dot, - dir=both, - label=" bibliography (refcompoundbiblio)", - lp="683.47,1453", - pos="s,913.31,2147.3 911.6,2139.4 904.96,2110.6 891.94,2076.2 866.47,2056 776.78,1984.8 686.41,2105.6 611.47,2019 570.32,1971.4 579.58,\ -941.21 611.47,887 670.03,787.46 789.23,728.07 884.42,694.82"]; - ippidb_models_RefCompoundBiblio -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (refcompoundbiblio)", - lp="794.47,2060.5", - pos="s,855.89,2147.3 849.06,2142.8 828.68,2129.5 806.28,2115 785.47,2102 751.67,2080.9 745.03,2071.9 708.47,2056 654.16,2032.4 622.12,\ -2061.1 580.47,2019 575.72,2014.2 571.11,2009.3 566.63,2004.2"]; - ippidb_models_DrugBankCompound [height=0.97222, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - DrugBankCompound - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>TextField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">canonical_smiles</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">common_name</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">TextField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="153.47,1453", - width=3.0139]; - ippidb_models_DrugbankCompoundTanimoto [height=1.1528, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - DrugbankCompoundTanimoto - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>drugbank_compound</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">tanimoto</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">DecimalField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="181.47,2189", - width=3.8056]; - ippidb_models_DrugbankCompoundTanimoto -> ippidb_models_Compound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" compound (drugbankcompoundtanimoto)", - lp="392.47,2060.5", - pos="s,232.64,2147.4 238.56,2141.9 260.79,2120.6 284.47,2093.8 299.47,2065 307.23,2050.1 314.51,2034.8 321.33,2019.1"]; - ippidb_models_DrugbankCompoundTanimoto -> ippidb_models_DrugBankCompound [arrowhead=none, - arrowtail=dot, - dir=both, - label=" drugbank_compound (drugbankcompoundtanimoto)", - lp="187.97,2060.5", - pos="s,133.09,2147.3 127.45,2141.5 107.4,2120.3 86.982,2093.7 76.467,2065 0,1856.4 98.081,1583.9 137.99,1488.1"]; - ippidb_models_Contribution [height=1.6944, - label=< - <TABLE BGCOLOR="white" BORDER="1" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="5" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" COLOR="white" POINT-SIZE="10"><B> - Contribution - </B></FONT></TD></TR> - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>id</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>AutoField</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>bibliography</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>contributor</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto"><B>ppi</B></FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto"><B>ForeignKey (id)</B></FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">created_at</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DateTimeField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT COLOR="#7B7B7B" FACE="Roboto">updated_at</FONT> - </TD><TD ALIGN="LEFT"> - <FONT COLOR="#7B7B7B" FACE="Roboto">DateTimeField</FONT> - </TD></TR> - - - - <TR><TD ALIGN="LEFT" BORDER="0"> - <FONT FACE="Roboto">validated</FONT> - </TD><TD ALIGN="LEFT"> - <FONT FACE="Roboto">BooleanField</FONT> - </TD></TR> - - - </TABLE> - >, - pos="1936.5,1453", - width=3.2639]; - ippidb_models_Contribution -> ippidb_models_Bibliography [arrowhead=none, - arrowtail=dot, - dir=both, - label=" bibliography (contribution)", - lp="1807,824", - pos="s,1941.5,1391.6 1941.9,1383.6 1947.1,1264.5 1939.1,1021.3 1804.5,887 1664.7,747.49 1566.5,818.19 1371.5,787 1283.8,772.98 1255.4,\ -800.72 1172.5,769 1169.2,767.73 1165.9,766.37 1162.6,764.92"]; - ippidb_models_Contribution -> ippidb_models_Ppi [arrowhead=none, - arrowtail=dot, - dir=both, - label=" ppi (contribution)", - lp="1947.5,824", - pos="s,1933.8,1391.9 1933.5,1383.9 1926.7,1230 1910.4,861.18 1904.1,717.1"]; - } - django_contrib_auth_models_User [height=0.5, - label=< - <TABLE BGCOLOR="white" BORDER="0" CELLBORDER="0" CELLSPACING="0"> - <TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="#1b563f"> - <FONT FACE="Roboto" POINT-SIZE="12" COLOR="white">User</FONT> - </TD></TR> - </TABLE> - >, - pos="3165.5,824", - width=0.91667]; - ippidb_models_Contribution -> django_contrib_auth_models_User [arrowhead=none, - arrowtail=dot, - dir=both, - label=" contributor (contribution)", - lp="2219,864.5", - pos="s,1929.5,1391.9 1928.8,1383.7 1919.7,1261.6 1921,1009.3 2068.5,887 2159.3,811.78 3014.2,870.89 3128.5,842 3129.7,841.68 3131,841.33 \ -3132.3,840.93"]; -} diff --git a/ippisite/docs/source/index.rst b/ippisite/docs/source/index.rst index 8d09665ea9148becdc03547207a7382a15d45395..356e8b16c6e9a729a14325c1c5fa628664df703c 100644 --- a/ippisite/docs/source/index.rst +++ b/ippisite/docs/source/index.rst @@ -18,6 +18,7 @@ These pages contain the documentation for technical maintenance and development install configuration database + webservices modules diff --git a/ippisite/docs/source/references.bib b/ippisite/docs/source/references.bib new file mode 100644 index 0000000000000000000000000000000000000000..7bf17800724d748558a7008c9ec8f078a02c0ab2 --- /dev/null +++ b/ippisite/docs/source/references.bib @@ -0,0 +1,20930 @@ +@article{schneider_quotscaffold-hoppingquot_1999, + title = {{'Scaffold-Hopping' by topological pharmacophore search: A contribution to virtual screening}}, + year = {1999}, + journal = {Angewandte Chemie - International Edition}, + author = {Schneider, Gisbert and Neidhart, Werner and Giller, Thomas and Schmid, Gerard}, + number = {19}, + pages = {2894--2896}, + volume = {38}, + doi = {10.1002/(SICI)1521-3773(19991004)38:19<2894::AID-ANIE2894>3.0.CO;2-F}, + issn = {14337851}, + keywords = {Computer chemistry, Drug research, Structure-activity relationships, Virtual screening} +} + +@article{parks_14-benzodiazepine-25-diones_2005, + title = {{1,4-Benzodiazepine-2,5-diones as small molecule antagonists of the {\{}HDM{\}}2–p53 interaction: discovery and {\{}SAR{\}}}}, + author = {Parks, Daniel J and LaFrance, Louis V and Calvo, Raul R and Milkiewicz, Karen L and Gupta, Varsha and Lattanze, Jennifer and Ramachandren, Kannan and Carver, Theodore E and Petrella, Eugene C and Cummings, Maxwell D and Maguire, Diane and Grasberger, Bruce L and Lu, Tianbao}, + pages = {765--770}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.11.009} +} + +@article{wattanasin_14-diazepane-25-diones_2005, + title = {{1,4-Diazepane-2,5-diones as novel inhibitors of {\{}LFA{\}}-1}}, + author = {Wattanasin, Sompong and Kallen, Joerg and Myers, Stewart and Guo, Qin and Sabio, Michael and Ehrhardt, Claus and Albert, Rainer and Hommel, Ulrich and Weckbecker, Gisbert and Welzenbach, Karl and Weitz-Schmidt, Gabriele}, + pages = {1217--1220}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.11.072} +} + +@article{horwell_23-substituted_1997, + title = {{2,3-Substituted 2-azanorbornanes as polar {$\beta$}-turn mimetics}}, + author = {Horwell, David C and Naylor, Dorica and Willems, Henriëtte M G}, + pages = {31--36}, + volume = {7}, + doi = {10.1016/S0960-894X(96)00570-7} +} + +@article{ruffoni_2-amino-3-phenylsulfanylnorbornane-2-carboxylate:_2014, + title = {{2-Amino-3-(phenylsulfanyl)norbornane-2-carboxylate: an appealing scaffold for the design of Rac1-Tiam1 protein-protein interaction inhibitors.}}, + author = {Ruffoni, Alessandro and Ferri, Nicola and Bernini, Sergio Kevin and Ricci, Chiara and Corsini, Alberto and Maffucci, Irene and Clerici, Francesca and Contini, Alessandro}, + doi = {10.1021/jm401924s} +} + +@article{mullard_2012_2013, + title = {{2012 {\{}FDA{\}} drug approvals}}, + author = {Mullard, Asher}, + pages = {87--90}, + volume = {12}, + doi = {10.1038/nrd3946} +} + +@article{clark_2d_2010, + title = {{2D Depiction of Fragment Hierarchies}}, + author = {Clark, Alex M}, + pages = {37--46}, + volume = {50}, + doi = {10.1021/ci900350h} +} + +@article{basse_2p2idb_2016, + title = {{2P2Idb v2: Update of a structural database dedicated to orthosteric modulation of protein-protein interactions}}, + shorttitle = {2P2Idb v2}, + year = {2016}, + journal = {Database}, + author = {Basse, Marie Jeanne and Betzi, Stéphane and Morelli, Xavier and Roche, Philippe}, + volume = {2016}, + doi = {10.1093/database/baw007}, + issn = {17580463}, + pmid = {26980515}, + keywords = {Algorithms, Computational Biology, Databases, Internet, Ligands, Protein, Protein Interaction Mapping, Proteins, Software, User-Computer Interface} +} + +@article{basse_2p2idb:_2013, + title = {{2P2Idb: a structural database dedicated to orthosteric modulation of protein–protein interactions}}, + shorttitle = {2P2Idb}, + year = {2012}, + journal = {Nucleic Acids Research}, + author = {Basse, Marie Jeanne and Betzi, Stéphane and Bourgeas, Raphaël and Bouzidi, Sofia and Chetrit, Bernard and Hamon, Véronique and Morelli, Xavier and Roche, Philippe}, + number = {D1}, + pages = {D824-D827}, + volume = {41}, + url = {http://nar.oxfordjournals.org/content/41/D1/D824}, + doi = {10.1093/nar/gks1002}, + issn = {0305-1048}, + pmid = {23203891} +} + +@article{hewings_35-dimethylisoxazoles_2011, + title = {{3,5-dimethylisoxazoles act as acetyl-lysine-mimetic bromodomain ligands.}}, + author = {Hewings, David S and Wang, Minghua and Philpott, Martin and Fedorov, Oleg and Uttarkar, Sagar and Filippakopoulos, Panagis and Picaud, Sarah and Vuppusetty, Chaitanya and Marsden, Brian and Knapp, Stefan and Conway, Stuart J and Heightman, Tom D}, + pages = {6761--6770}, + volume = {54}, + doi = {10.1021/jm200640v} +} + +@article{priestle_3-d_2009, + title = {{3-D clustering: a tool for high throughput docking}}, + author = {Priestle, John P}, + pages = {551--560}, + volume = {15}, + doi = {10.1007/s00894-008-0360-6} +} + +@article{kombo_3d_2013, + title = {{3D Molecular Descriptors Important for Clinical Success.}}, + author = {Kombo, David C and Tallapragada, Kartik and Jain, Rachit and Chewning, Joseph and Mazurov, Anatoly A and Speake, Jason D and Hauser, Terry A and Toler, Steve}, + doi = {10.1021/ci300445e} +} + +@misc{novartis_ag_6-oxo.-1_2008, + title = {{6-Oxo.-1, 6-Dihydropyrimidin-2-Yls in the Treatment of Proliferative Diseases}}, + pages = {C07D 233/ 96 A I; C07D 241/ 18 A I; C07D 403/ 10 A} +} + +@article{blum_970_2009, + title = {{970 Million druglike small molecules for virtual screening in the chemical universe database GDB-13}}, + year = {2009}, + journal = {Journal of the American Chemical Society}, + author = {Blum, Lorenz C. and Reymond, Jean Louis}, + number = {25}, + pages = {8732--8733}, + volume = {131}, + doi = {10.1021/ja902302h}, + issn = {00027863} +} + +@misc{noauthor_97697_3_supp_1993189_mn3mbl.pdf_2013, + title = {{97697{\_}3{\_}supp{\_}1993189{\_}mn3mbl.pdf - Methods}} +} + +@article{ttermann_biased_2012, + title = {{A biased ligand for {\{}OXE{\}}-R uncouples G{\&}amp;alpha; and G{\&}amp;beta;{\&}amp;gamma; signaling within a heterotrimer}}, + author = {ttermann, Stefanie Bl auml and Peters, Lucas and Ottersbach, Philipp Aaron and Bock, Andreas and Konya, Viktoria and Weaver, C David and Gonzalez, Angel and der, Ralf Schr ouml and Tyagi, Rahul and Luschnig, Petra and b, J uuml rgen G auml and Hennen, Stephanie and Ulven, Trond and Pardo, Leonardo and Mohr, Klaus and tschow, Michael G uuml and Heinemann, Akos and Kostenis, Evi}, + pages = {632--639}, + volume = {8}, + doi = {10.1038/nchembio.962} +} + +@article{kraft_cell-based_nodate, + title = {{A cell-based fascin bioassay identifies compounds with potential anti-metastasis or cognition-enhancing functions}}, + author = {Kraft, Robert and Kahn, Allon and Medina-Franco, Jose L and Orlowski, Mikayla L and Baynes, Cayla and L{\'{o}}pez-Vallejo, Fabian and Barnard, Kobus and Maggiora, Gerald M and Restifo, Linda L} +} + +@article{rosania_cheminformatic_2007, + title = {{A cheminformatic toolkit for mining biomedical knowledge}}, + year = {2007}, + journal = {Pharmaceutical Research}, + author = {Rosania, Gus R. and Crippen, Gordon and Woolf, Peter and States, David and Shedden, Kerby}, + number = {10}, + pages = {1791--1802}, + volume = {24}, + url = {http://www.scopus.com/inward/record.url?eid=2-s2.0-34548558833&partnerID=40&md5=90588e8cd4df36367e72d239de074f65}, + doi = {10.1007/s11095-007-9285-5}, + issn = {07248741}, + keywords = {Bioactivity fingerprints, Bioinformatics, Chemical genetics, Chemical genomics, Chemical space, Cheminformatics, Data mining, High throughput screening, Mathematical modeling, QSAR} +} + +@article{hu_comparative_2010, + title = {{A comparative analysis of protein interfaces}}, + author = {Hu, Jing and Yan, Changhui}, + pages = {1450--1458}, + volume = {17} +} + +@article{kwon_comprehensive_2012, + title = {{A comprehensive manually curated protein-protein interaction database for the death domain superfamily}}, + year = {2012}, + journal = {Nucleic Acids Research}, + author = {Kwon, Dongseop and Yoon, Jong Hwan and Shin, Soo Yong and Jang, Tae Ho and Kim, Hong Gee and So, Insuk and Jeon, Ju Hong and Park, Hyun Ho}, + number = {D1}, + pages = {D331--6}, + volume = {40}, + doi = {10.1093/nar/gkr1149}, + issn = {03051048} +} + +@article{hu_computational_2010, + title = {{A computational analysis of the binding model of {\{}MDM{\}}2 with inhibitors}}, + author = {Hu, Guodong and Wang, Dunyou and Liu, Xinguo and Zhang, Qinggang}, + pages = {687--697}, + volume = {24}, + doi = {10.1007/s10822-010-9366-0} +} + +@article{li_computer_1997, + title = {{A computer screening approach to immunoglobulin superfamily structures and interactions: discovery of small non-peptidic {\{}CD{\}}4 inhibitors as novel immunotherapeutics}}, + author = {Li, S and Gao, J and Satoh, T and Friedman, T M and Edling, A E and Koch, U and Choksi, S and Han, X and Korngold, R and Huang, Z}, + pages = {73--78}, + volume = {94} +} + +@article{xu_credit-card_2006, + title = {{A credit-card library approach for disrupting protein-protein interactions}}, + author = {Xu, Y and Shi, J and Yamamoto, N and Moss, J} +} + +@article{xu_credit-card_2006-1, + title = {{A credit-card library approach for disrupting protein–protein interactions}}, + author = {Xu, Yang and Shi, Jin and Yamamoto, Noboru and Moss, Jason A and Vogt, Peter K and Janda, Kim D}, + pages = {2660--2673}, + volume = {14}, + doi = {10.1016/j.bmc.2005.11.052} +} + +@article{bucci_decade_2010, + title = {{A decade of chemical biology}}, + author = {Bucci, M and Goodman, C} +} + +@article{hajduk_decade_2007, + title = {{A decade of fragment-based drug design: strategic advances and lessons learned}}, + author = {Hajduk, Philip J and Greer, Jonathan}, + pages = {211--219}, + volume = {6}, + doi = {10.1038/nrd2220} +} + +@article{godden_distance_2006, + title = {{A Distance Function for Retrieval of Active Molecules from Complex Chemical Space Representations}}, + author = {Godden, Jeffrey W and Bajorath, Jürgen}, + pages = {1094--1097}, + volume = {46}, + doi = {10.1021/ci050510i} +} + +@article{arnaud_dominant_2010, + title = {{A dominant mutation in the gene encoding the erythroid transcription factor {\{}KLF{\}}1 causes a congenital dyserythropoietic anemia}}, + author = {Arnaud, Lionel and Saison, Carole and Helias, Virginie and Lucien, Nicole and Steschenko, Dominique and Giarratana, Marie-Catherine and Prehu, Claude and Foliguet, Bernard and Montout, Lory and de Brevern, Alexandre G and Francina, Alain and Ripoche, Pierre and Fenneteau, Odile and Da Costa, Lydie and Peyrard, Thierry and Coghlan, Gail and Illum, Niels and Birgens, Henrik and Tamary, Hannah and Iolascon, Achille and Delaunay, Jean and Tchernia, Gil and Cartron, Jean-Pierre}, + number = {5}, + pages = {721--727}, + volume = {87}, + doi = {10.1016/j.ajhg.2010.10.010}, + issn = {1537-6605}, + pmid = {21055716}, + keywords = {Anemia, Base Sequence, Cell Differentiation, Congenital, Dyserythropoietic, Erythroblasts, Erythropoiesis, Humans, Infant, Kruppel-Like Transcription Factors, Male, Models, Molecular, Mutation, Newborn} +} + +@article{ouizougun-oubari_druggable_2015, + title = {{A Druggable Pocket at the Nucleocapsid/Phosphoprotein Interaction Site of Human Respiratory Syncytial Virus}}, + year = {2015}, + journal = {Journal of Virology}, + author = {Ouizougun-Oubari, Mohamed and Pereira, Nelson and Tarus, Bogdan and Galloux, Marie and Lassoued, Safa and Fix, Jenna and Tortorici, M. Alejandra and Hoos, Sylviane and Baron, Bruno and England, Patrick and Desma{\"{e}}le, Didier and Couvreur, Patrick and Bontems, François and Rey, Félix A. and El{\'{e}}ou{\"{e}}t, Jean-François and Sizun, Christina and Slama-Schwok, Anny and Duquerroy, Stéphane}, + number = {21}, + pages = {11129--11143}, + volume = {89}, + doi = {10.1128/jvi.01612-15}, + issn = {0022-538X}, + pmid = {26246564}, + keywords = {Antiviral Agents, Calorimetry, Crystallography, Drug Design, Human, Humans, Luminescent Proteins, Magnetic Resonance Spectroscopy, Models, Molecular, Nucleocapsid, Phosphoproteins, Protein Conformation, Respiratory Syncytial Virus, Respiratory Syncytial Virus Infections, X-Ray, X-Ray Diffraction} +} + +@article{caporuscio_dynamic_2009, + title = {{A dynamic target-based pharmacophoric model mapping the CD4 binding site on HIV-1 gp120 to identify new inhibitors of gp120-CD4 protein-protein interactions}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Caporuscio, Fabiana and Tafi, Andrea and Gonz{\'{a}}lez, Emmanuel and Manetti, Fabrizio and Est{\'{e}}, José A. and Botta, Maurizio}, + number = {21}, + pages = {6087--6091}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.09.029}, + issn = {0960894X}, + keywords = {Pharmacophore modeling, Phe43 cavity, Protein-protein interactions, Structure-based drug design, gp120-CD4 interactions} +} + +@article{caporuscio_dynamic_2009-1, + title = {{A dynamic target-based pharmacophoric model mapping the {\{}CD{\}}4 binding site on {\{}HIV{\}}-1 gp120 to identify new inhibitors of gp120-{\{}CD{\}}4 protein-protein interactions}}, + author = {Caporuscio, Fabiana and Tafi, Andrea and Gonz{\'{a}}lez, Emmanuel and Manetti, Fabrizio and Est{\'{e}}, José A and Botta, Maurizio}, + pages = {6087--6091}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.09.029} +} + +@article{cho_feature-based_2009, + title = {{A feature-based approach to modeling protein-protein interaction hot spots}}, + author = {Cho, Kyu-il and Kim, Dongsup and Lee, Doheon}, + pages = {2672--2687}, + volume = {37}, + doi = {10.1093/nar/gkp132} +} + +@article{tsuganezawa_fluorescent-based_2013, + title = {{A fluorescent-based high-throughput screening assay for small molecules that inhibit the interaction of MdmX with p53}}, + year = {2013}, + journal = {Journal of Biomolecular Screening}, + author = {Tsuganezawa, Keiko and Nakagawa, Yukari and Kato, Miki and Taruya, Shigenao and Takahashi, Fumio and Endoh, Morio and Utata, Rei and Mori, Masumi and Ogawa, Naoko and Honma, Teruki and Yokoyama, Shigeyuki and Hashizume, Yoshinobu and Aoki, Masaaki and Kasai, Takuma and Kigawa, Takanori and Kojima, Hirotatsu and Okabe, Takayoshi and Nagano, Tetsuo and Tanaka, Akiko}, + number = {2}, + pages = {191--198}, + volume = {18}, + doi = {10.1177/1087057112460729}, + issn = {10870571}, + keywords = {Mdm2, MdmX, fluorescence, p53, protein-protein interaction} +} + +@article{clackson_hot_1995, + title = {{A hot spot of binding energy in a hormone-receptor interface.}}, + year = {1995}, + journal = {Science}, + author = {Clackson, T and Wells, J A}, + pages = {383--386}, + volume = {267} +} + +@article{o._villoutreix_leap_2012, + title = {{A Leap into the Chemical Space of Protein-Protein Interaction Inhibitors}}, + year = {2013}, + journal = {Protein-Protein Interactions in Drug Discovery}, + author = {Villoutreix, Bruno O. and Labb{\'{e}}, C. and Lagorce, David and Laconde, Guillaume and Sperandio, Olivier}, + number = {30}, + pages = {63--83}, + volume = {56}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=1381-6128&volume=18&issue=30&spage=4648}, + isbn = {9783527648207}, + doi = {10.1002/9783527648207.ch4}, + issn = {13816128}, + keywords = {Allosteric modulation, Chemical space, Inhibitor, Interface, Orthosteric modulation, Protein-protein interaction} +} + +@article{adams_mapping_2009, + title = {{A mapping of drug space from the viewpoint of small molecule metabolism.}}, + author = {Adams, James Corey and Keiser, Michael J and Basuino, Li and Chambers, Henry F and Lee, Deok-Sun and Wiest, Olaf G and Babbitt, Patricia C}, + pages = {e1000474}, + volume = {5}, + doi = {10.1371/journal.pcbi.1000474} +} + +@article{ivetac_molecular_2012, + title = {{A molecular dynamics ensemble-based approach for the mapping of druggable binding sites}}, + year = {2012}, + journal = {Methods in Molecular Biology}, + author = {Ivetac, Anthony and McCammon, J. Andrew}, + pages = {3--12}, + volume = {819}, + isbn = {9781617794643}, + doi = {10.1007/978-1-61779-465-0{\_}1}, + issn = {10643745}, + keywords = {Allosteric, Binding site, Docking, Drug design, Molecular dynamics simulation} +} + +@article{andersson_multivariate_2011, + title = {{A Multivariate Chemical Similarity Approach to Search for Drugs of Potential Environmental Concern}}, + author = {Andersson, Patrik L and Fick, Jerker and R{\"{a}}nnar, Stefan}, + pages = {1788--1794}, + volume = {51}, + doi = {10.1021/ci200107b} +} + +@article{gustafsson_case_2004, + title = {{A new oral anticoagulant: The 50-year challenge}}, + year = {2004}, + journal = {Nature Reviews Drug Discovery}, + author = {Gustafsson, David and Bylund, Ruth and Antonsson, Thomas and Nilsson, Ingemar and Nystr{\"{o}}m, Jan Erik and Eriksson, Ulf and Bredberg, Ulf and Teger-Nilsson, Ann Catrine}, + number = {8}, + pages = {649--659}, + volume = {3}, + doi = {10.1038/nrd1466}, + issn = {14741776} +} + +@article{chen_novel_2012, + title = {{A novel obatoclax derivative, {\{}SC{\}}-2001, induces apoptosis in hepatocellular carcinoma cells through {\{}SHP{\}}-1-dependent {\{}STAT{\}}3 inactivation.}}, + author = {Chen, Kuen-Feng and Su, Jung-Chen and Liu, Chun-Yu and Huang, Jui-Wen and Chen, Kuei-Chiu and Chen, Wei-Lin and Tai, Wei-Tien and Shiau, Chung-Wai}, + doi = {10.1016/j.canlet.2012.03.023} +} + +@article{chahil_novel_2012, + title = {{A novel pathogenic variant of the {\{}LDLR{\}} gene in the Asian population and its clinical correlation with familial hypercholesterolemia.}}, + author = {Chahil, J K and Lye, S H and Bagali, P G and Alex, L}, + doi = {10.1007/s11033-012-1626-8} +} + +@article{zinzalla_novel_2010, + title = {{A novel small-molecule inhibitor of IL-6 signalling}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Zinzalla, Giovanna and Haque, Mohammad R. and Piku Basu, B. and Anderson, John and Kaye, Samantha L. and Haider, Shozeb and Hasan, Fyeza and Antonow, Dyeison and Essex, Samantha and Rahman, Khondaker M. and Palmer, Jonathan and Morgenstern, Daniel and Wilderspin, Andrew F. and Neidle, Stephen and Thurston, David E.}, + number = {23}, + pages = {7029--7032}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.09.117}, + issn = {0960894X}, + keywords = {IL-6 signalling, Inhibitor, STAT3, Small molecule} +} + +@article{yan_novel_2010, + title = {{A Novel Water-Soluble Gossypol Derivative Increases Chemotherapeutic Sensitivity and Promotes Growth Inhibition in Colon Cancer}}, + author = {Yan, Fei and Cao, Xing-Xin and Jiang, Hai-Xia and Zhao, Xiao-Long and Wang, Jian-Yong and Lin, Yi-Hui and Liu, Qiao-Ling and Zhang, Chen and Jiang, Biao and Guo, Fang}, + pages = {5502--5510}, + volume = {53}, + doi = {10.1021/jm1001698} +} + +@article{schimmer_phase_2008, + title = {{A Phase I Study of the Pan Bcl-2 Family Inhibitor Obatoclax Mesylate in Patients with Advanced Hematologic Malignancies}}, + author = {Schimmer, A D and O{\textbackslash}textbackslash{\&}apos;Brien, S and Kantarjian, H and Brandwein, J and Cheson, B D and Minden, M D and Yee, K and Ravandi, F and Giles, F and Schuh, A and Gupta, V and Andreeff, M and Koller, C and Chang, H and Kamel-Reid, S and Berger, M and Viallet, J and Borthakur, G}, + pages = {8295--8301}, + volume = {14}, + doi = {10.1158/1078-0432.CCR-08-0999} +} + +@article{singh_physicochemical_2012, + title = {{A physicochemical descriptor-based scoring scheme for effective and rapid filtering of kinase-like chemical space.}}, + author = {Singh, Narender and Sun, Hongmao and Chaudhury, Sidhartha and Abdulhameed, Mohamed Diwan M and Wallqvist, Anders and Tawa, Gregory}, + pages = {4}, + volume = {4}, + doi = {10.1186/1758-2946-4-4} +} + +@article{cai_potent_2011, + title = {{A Potent and Orally Active Antagonist ({\{}SM{\}}-406/{\{}AT{\}}-406) of Multiple Inhibitor of Apoptosis Proteins ({\{}IAPs{\}}) in Clinical Development for Cancer Treatment}}, + author = {Cai, Qian and Sun, Haiying and Peng, Yuefeng and Lu, Jianfeng and Nikolovska-Coleska, Zaneta and Mceachern, Donna and Liu, Liu and Qiu, Su and Yang, Chao-Yie and Miller, Rebecca and Yi, Han and Zhang, Tao and Sun, Duxin and Kang, Sanmao and Guo, Ming and Leopold, Lance and Yang, Dajun and Wang, Shaomeng}, + pages = {2714--2726}, + volume = {54}, + doi = {10.1021/jm101505d} +} + +@article{olbe_proton-pump_2003, + title = {{A proton-pump inhibitor expedition: the case histories of omeprazole and esomeprazole}}, + author = {Olbe, Lars and Carlsson, Enar and Lindberg, Per}, + pages = {132--139}, + volume = {2}, + doi = {10.1038/nrd1010} +} + +@article{knapp_public-private_2012, + title = {{A public-private partnership to unlock the untargeted kinome}}, + author = {Knapp, Stefan and Arruda, Paulo and Blagg, Julian and Burley, Stephen and Drewry, David H and Edwards, Aled and Fabbro, Doriano and Gillespie, Paul and Gray, Nathanael S and Kuster, Bernhard and Lackey, Karen E and Mazzafera, Paulo and Tomkinson, Nicholas C O and Willson, Timothy M and Workman, Paul and Zuercher, William J}, + pages = {3--6}, + volume = {9}, + doi = {10.1038/nchembio.1113} +} + +@article{frank_ratchet-like_2000, + title = {{A ratchet-like inter-subunit reorganization of the ribosome during translocation}}, + author = {Frank, J and Agrawal, R K}, + pages = {318--322}, + volume = {406}, + doi = {10.1038/35018597}, + issn = {0028-0836 (Print) 0028-0836 (Linking)}, + keywords = {Biological Transport, Cryoelectron Microscopy, Escherichia coli, Guanosine Triphosphate/metabolism, Hydrolysis, Macromolecular Substances, Messenger/metabolism, Models, Molecular, Molecular Conformation, Peptide Elongation Factor G/metabolism, Ribosomes/chemistry/metabolism/*ultrastructure, Transfer/metabolism, {\{}RNA{\}}} +} + +@article{wetzel_scaffold-tree-merging_2010, + title = {{A scaffold-tree-merging strategy for prospective bioactivity annotation of gamma-pyrones}}, + author = {Wetzel, Stefan and Wilk, Wolfram and Chammaa, Samy and Sperl, Bianca and Roth, Anke G and Yektaoglu, Aybike and Renner, Steffen and Berg, Thorsten and Arenz, Christoph and Giannis, Athanassios and Oprea, Tudor I and Rauh, Daniel and Kaiser, Markus and Waldmann, Herbert}, + pages = {3666--3670}, + volume = {49}, + doi = {10.1002/anie.200906555} +} + +@article{deursen_searchable_2010, + title = {{A Searchable Map of {\{}PubChem{\}}}}, + author = {Deursen, Ruud van and Blum, Lorenz C and Reymond, Jean-Louis}, + pages = {1924--1934}, + volume = {50}, + doi = {10.1021/ci100237q} +} + +@article{anders_semisynthetic_2013, + title = {{A semisynthetic fusicoccane stabilizes a protein-protein interaction and enhances the expression of K+ channels at the cell surface}}, + author = {Anders, Carolin and Higuchi, Yusuke and Koschinsky, Kristin and Bartel, Maria and Schumacher, Benjamin and Thiel, Philipp and Nitta, Hajime and Preisig-M{\"{u}}ller, Regina and Schlichth{\"{o}}rl, Günter and Renigunta, Vijay and Ohkanda, Junko and Daut, Jürgen and Kato, Nobuo and Ottmann, Christian}, + number = {4}, + pages = {583--593}, + volume = {20}, + doi = {10.1016/j.chembiol.2013.03.015}, + issn = {1879-1301}, + pmid = {23601647}, + keywords = {14-3-3 Proteins, Amino Acid Sequence, Animals, Binding Sites, Biological Transport, Cell Membrane, Crystallography, Diterpenes, Humans, Kinetics, Molecular Conformation, Molecular Sequence Data, Oocytes, Potassium Channels, Protein Binding, Protein Interaction Domains and Motifs, Protein Stability, Protein Structure, Tandem Pore Domain, Tertiary, X-Ray, Xenopus laevis} +} + +@article{rush_shape-based_2005, + title = {{A shape-based 3-D scaffold hopping method and its application to a bacterial protein-protein interaction}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Rush, Thomas S. and Grant, J. Andrew and Mosyak, Lidia and Nicholls, Anthony}, + number = {5}, + pages = {1489--1495}, + volume = {48}, + doi = {10.1021/jm040163o}, + issn = {00222623} +} + +@article{erkizan_small_2009, + title = {{A small molecule blocking oncogenic protein {\{}EWS{\}}-{\{}FLI{\}}1 interaction with {\{}RNA{\}} helicase A inhibits growth of Ewing{\&}apos;s sarcoma}}, + author = {Erkizan, Hayriye V and Kong, Yali and Merchant, Melinda and Schlottmann, Silke and Barber-Rotenberg, Julie S and Yuan, Linshan and Abaan, Ogan D and Chou, Tsu-Hang and Dakshanamurthy, Sivanesan and Brown, Milton L and Uren, Aykut and Toretsky, Jeffrey A}, + pages = {750--756}, + volume = {15}, + doi = {10.1038/nm.1983} +} + +@article{zhou_small_2013, + title = {{A small-molecule blocking ribonucleotide reductase holoenzyme formation inhibits cancer cell growth and overcomes drug resistance}}, + year = {2013}, + journal = {Cancer Research}, + author = {Zhou, Bingsen and Su, Leila and Hu, Shuya and Hu, Weidong and Yip, M. L.Richard and Wu, Jun and Gaur, Shikha and Smith, D. Lynne and Yuan, Yate Ching and Synold, Timothy W. and Horne, David and Yen, Yun}, + number = {21}, + pages = {6484--6493}, + volume = {73}, + doi = {10.1158/0008-5472.CAN-13-1094}, + issn = {00085472} +} + +@article{cerchietti_small-molecule_2010, + title = {{A Small-Molecule Inhibitor of {\{}BCL{\}}6 Kills {\{}DLBCL{\}} Cells In Vitro and In Vivo}}, + author = {Cerchietti, Leandro C and Ghetu, Alexandru F and Zhu, Xiao and Da Silva, Gustavo F and Zhong, Shijun and Matthews, Marilyn and Bunting, Karen L and Polo, Jose M and Far{\`{e}}s, Christophe and Arrowsmith, Cheryl H and Yang, Shao Ning and Garcia, Monica and Coop, Andrew and MacKerell Jr., Alexander D and Priv{\'{e}}, Gilbert G and Melnick, Ari}, + pages = {400--411}, + volume = {17}, + doi = {10.1016/j.ccr.2009.12.050} +} + +@article{tuncbag_survey_2009, + title = {{A survey of available tools and web servers for analysis of protein–protein interactions and interfaces}}, + author = {Tuncbag, Nurcan and Kar, Gozde and Keskin, Ozlem and Gursoy, Attila and Nussinov, Ruth} +} + +@article{chang_systematic_2011, + title = {{A Systematic Family-wide Investigation Reveals that ∼30{\%} of Mammalian {\{}PDZ{\}} Domains Engage in {\{}PDZ{\}}-{\{}PDZ{\}} Interactions.}}, + author = {Chang, Bryan H and Gujral, Taranjit S and Karp, Ethan S and Bukhalid, Raghida and Grantcharova, Viara P and Macbeath, Gavin}, + pages = {1143--1152}, + volume = {18}, + doi = {10.1016/j.chembiol.2011.06.013}, + keywords = {new target, {\{}PPI{\}}} +} + +@article{ekins_turning_2009, + title = {{A Turning Point For Blood–Brain Barrier Modeling}}, + author = {Ekins, Sean and Tropsha, Alexander}, + pages = {1283--1284}, + volume = {26}, + doi = {10.1007/s11095-009-9832-3} +} + +@article{accordino_unifying_2012, + title = {{A unifying motif of intermolecular cooperativity in protein associations.}}, + author = {Accordino, S R and Rodriguez Fris, J A and Appignanesi, G A and Fern{\'{a}}ndez, A}, + pages = {9736}, + volume = {35}, + doi = {10.1140/epje/i2012-12059-0} +} + +@article{shimogawa_wrench-shaped_2004, + title = {{A wrench-shaped synthetic molecule that modulates a transcription factor-coactivator interaction}}, + author = {Shimogawa, Hiroki and Kwon, Youngjoo and Mao, Qian and Kawazoe, Yoshinori and Choi, Yongmun and Asada, Shinichi and Kigoshi, Hideo and Uesugi, Motonari}, + pages = {3461--3471}, + volume = {126}, + doi = {10.1021/ja038855+} +} + +@article{tse_abt-263:_2008, + title = {{ABT-263: A potent and orally bioavailable Bcl-2 family inhibitor}}, + year = {2008}, + journal = {Cancer Research}, + author = {Tse, Christin and Shoemaker, Alexander R. and Adickes, Jessica and Anderson, Mark G. and Chen, Jun and Jin, Sha and Johnson, Eric F. and Marsh, Kennan C. and Mitten, Michael J. and Nimmer, Paul and Roberts, Lisa and Tahir, Stephen K. and Xiao, Yu and Yang, Xiufen and Zhang, Haichao and Fesik, Stephen and Rosenberg, Saul H. and Elmore, Steven W.}, + number = {9}, + pages = {3421--3428}, + volume = {68}, + doi = {10.1158/0008-5472.CAN-07-5836}, + issn = {00085472} +} + +@article{kim_accelerated_2012, + title = {{Accelerated disassembly of {\{}IgE{\}}-receptor complexes by a disruptive macromolecular inhibitor}}, + author = {Kim, Beomkyu and Eggel, Alexander and Tarchevskaya, Svetlana S and Vogel, Monique and Prinz, Heino and Jardetzky, Theodore S}, + pages = {613--617}, + volume = {491}, + doi = {doi:10.1038/nature11546} +} + +@article{kamisetty_accounting_2011, + title = {{Accounting for conformational entropy in predicting binding free energies of protein-protein interactions}}, + author = {Kamisetty, Hetunandan and Ramanathan, Arvind and Bailey-Kellogg, Chris and Langmead, Christopher James}, + pages = {444--462}, + volume = {79}, + doi = {10.1002/prot.22894} +} + +@article{yecies_acquired_2010, + title = {{Acquired resistance to {\{}ABT{\}}-737 in lymphoma cells that up-regulate {\{}MCL{\}}-1 and {\{}BFL{\}}-1}}, + author = {Yecies, D and Carlson, N E and Deng, J and Letai, A}, + pages = {3304--3313}, + volume = {115}, + doi = {10.1182/blood-2009-07-233304}, + issn = {1528-0020 (Electronic) 0006-4971 (Linking)}, + keywords = {Antineoplastic Agents/*pharmacology, Apoptosis Regulatory Proteins/metabolism, Biphenyl Compounds/*pharmacology, Cell Line, Diffuse/genetics/*metabolism, Drug Resistance, Gene Expression, Gene Expression Profiling, Humans, Immunoblotting, Immunoprecipitation, Large B-Cell, Lymphoma, Membrane Proteins/metabolism, Myeloid Cell Leukemia Sequence 1 Protein, Neoplasm/*genetics, Nitrophenols/*pharmacology, Piperazines/pharmacology, Proto-Oncogene Proteins c-bcl-2/genetics/*metabol, Proto-Oncogene Proteins/metabolism, Reverse Transcriptase Polymerase Chain Reaction, Sulfonamides/*pharmacology, Tumor, Up-Regulation, {\{}BH{\}}3 Interacting Domain Death Agonist Protein/me} +} + +@article{graves_activation_2012, + title = {{Activation of the p53 pathway by small-molecule-induced MDM2 and MDMX dimerization}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Graves, B. and Thompson, T. and Xia, M. and Janson, C. and Lukacs, C. and Deo, D. and Di Lello, P. and Fry, D. and Garvie, C. and Huang, K.-S. and Gao, L. and Tovar, C. and Lovey, A. and Wanner, J. and Vassilev, L. T.}, + number = {29}, + pages = {11788--11793}, + volume = {109}, + doi = {10.1073/pnas.1203789109}, + issn = {0027-8424} +} + +@article{shoemaker_activity_2008, + title = {{Activity of the Bcl-2 family inhibitor {\{}ABT{\}}-263 in a panel of small cell lung cancer xenograft models.}}, + author = {Shoemaker, Alex R and Mitten, Michael J and Adickes, Jessica and Ackler, Scott and Refici, Marion and Ferguson, Debra and Oleksijew, Anatol and O{\textbackslash}textbackslash{\&}apos;Connor, Jacqueline M and Wang, Baole and Frost, David J and Bauch, Joy and Marsh, Kennan and Tahir, Steven K and Yang, Xiufen and Tse, Christin and Fesik, Stephen W and Rosenberg, Saul H and Elmore, Steven W}, + pages = {3268--3277}, + volume = {14}, + doi = {10.1158/1078-0432.CCR-07-4622} +} + +@article{tang_acylpyrogallols_2008, + title = {{Acylpyrogallols as Inhibitors of Antiapoptotic Bcl-2 Proteins}}, + author = {Tang, Guozhi and Nikolovska-Coleska, Zaneta and Qiu, Su and Yang, Chao-Yie and Guo, Jie and Wang, Shaomeng}, + pages = {717--720}, + volume = {51}, + doi = {10.1021/jm701358v} +} + +@article{zaminer_addressing_2010, + title = {{Addressing protein-protein interactions with small molecules: A pro-pro dipeptide mimic with a PPII helix conformation as a module for the synthesis of PRD-binding ligands}}, + year = {2010}, + journal = {Angewandte Chemie - International Edition}, + author = {Zaminer, Jan and Brockmann, Christoph and Huy, Peter and Opitz, Robert and Reuter, Cédric and Beyermann, Michael and Freund, Christian and M{\"{u}}ller, Matthias and Oschkinat, Hartmut and Schmalz, Hans Günther and K{\"{u}}hne, Ronald}, + number = {39}, + pages = {7111--7115}, + volume = {49}, + doi = {10.1002/anie.201001739}, + issn = {14337851}, + keywords = {Conformational analysis, Molecular modeling, Peptide mimics, Protein-protein interactions, Ring-closing metathesis} +} + +@article{de_bodinat_agomelatine_2010, + title = {{Agomelatine, the first melatonergic antidepressant: discovery, characterization and development}}, + author = {de Bodinat, Christian and Guardiola-Lemaitre, Béatrice and Moca{\"{e}}r, Elisabeth and Renard, Pierre and Mu{\~{n}}oz, Carmen and Millan, Mark J}, + doi = {10.1038/nrd3140} +} + +@article{nisius_alignment-independent_2012, + title = {{Alignment-Independent Comparison of Binding Sites Based on {\{}DrugScore{\}} Potential Fields Encoded by 3D Zernike Descriptors}}, + author = {Nisius, Britta and Gohlke, Holger}, + pages = {120822125800005}, + doi = {10.1021/ci300244y} +} + +@article{jensen_aliskiren:_2008, + title = {{Aliskiren: the first renin inhibitor for clinical treatment}}, + author = {Jensen, Chris and Herold, Peter and Brunner, Hans Rudolf}, + pages = {399--410}, + volume = {7}, + doi = {10.1038/nrd2550} +} + +@article{mcmillan_allosteric_2000, + title = {{Allosteric inhibitors of inducible nitric oxide synthase dimerization discovered via combinatorial chemistry}}, + author = {McMillan, K and Adler, M and Auld, D S and Baldwin, J J and Blasko, E and Browne, L J and Chelsky, D and Davey, D and Dolle, R E and Eagen, K A and Erickson, S and Feldman, R I and Glaser, C B and Mallari, C and Morrissey, M M and Ohlmeyer, M H and Pan, G and Parkinson, J F and Phillips, G B and Polokoff, M A and Sigal, N H and Vergona, R and Whitlow, M and Young, T A and Devlin, J J}, + pages = {1506--1511}, + volume = {97} +} + +@article{wang_amino-substituted_2005, + title = {{Amino-substituted heterocycles as isosteres of trans-cinnamides: design and synthesis of heterocyclic biaryl sulfides as potent antagonists of {\{}LFA{\}}-1/{\{}ICAM{\}}-1 binding}}, + author = {Wang, Gary T and Wang, Sheldon and Gentles, Robert and Sowin, Thomas and Leitza, Sandra and Reilly, Edward B and von Geldern, Thomas W}, + pages = {195--201}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.10.008} +} + +@article{waring_analysis_2015, + title = {{An analysis of the attrition of drug candidates from four major pharmaceutical companies}}, + author = {Waring, Michael J and Arrowsmith, John and Leach, Andrew R and Leeson, Paul D and Mandrell, Sam and Owen, Robert M and Pairaudeau, Garry and Pennie, William D and Pickett, Stephen D and Wang, Jibo and Wallace, Owen and Weir, Alex}, + number = {7}, + pages = {475--486}, + volume = {14}, + doi = {10.1038/nrd4609}, + issn = {1474-1784}, + pmid = {26091267}, + keywords = {Animals, Drug Delivery Systems, Drug Discovery, Drug Evaluation, Drug Industry, Drugs, Humans, Investigational, Preclinical, Statistics as Topic} +} + +@article{perola_analysis_2010, + title = {{An analysis of the binding efficiencies of drugs and their leads in successful drug discovery programs}}, + author = {Perola, Emanuele}, + pages = {2986--2997}, + volume = {53}, + doi = {10.1021/jm100118x} +} + +@article{xue_effective_2013, + title = {{An Effective Screening Strategy Using Ensembled Pharmacophore Models Combined with Cascade Docking: Application to p53-{\{}MDM{\}}2 Interaction Inhibitors.}}, + author = {Xue, Xin and Sun, Haopeng}, + doi = {10.1021/ci400348f} +} + +@article{venkatesan_empirical_2008, + title = {{An empirical framework for binary interactome mapping}}, + author = {Venkatesan, Kavitha and Rual, Jean-François and Vazquez, Alexei and Stelzl, Ulrich and Lemmens, Irma and Hirozane-Kishikawa, Tomoko and Hao, Tong and Zenkner, Martina and Xin, Xiaofeng and Goh, Kwang-Il and Yildirim, Muhammed A and Simonis, Nicolas and Heinzmann, Kathrin and Gebreab, Fana and Sahalie, Julie M and Cevik, Sebiha and Simon, Christophe and de Smet, Anne-Sophie and Dann, Elizabeth and Smolyar, Alex and Vinayagam, Arunachalam and Yu, Haiyuan and Szeto, David and Borick, Heather and Dricot, Amélie and Klitgord, Niels and Murray, Ryan R and Lin, Chenwei and Lalowski, Maciej and Timm, Jan and Rau, Kirstin and Boone, Charles and Braun, Pascal and Cusick, Michael E and Roth, Frederick P and Hill, David E and Tavernier, Jan and Wanker, Erich E and Barab{\'{a}}si, Albert-László and Vidal, Marc}, + pages = {83--90}, + volume = {6}, + doi = {10.1038/nmeth.1280} +} + +@article{oltersdorf_inhibitor_2005, + title = {{An inhibitor of Bcl-2 family proteins induces regression of solid tumours}}, + author = {Oltersdorf, Tilman and Elmore, Steven W and Shoemaker, Alexander R and Armstrong, Robert C and Augeri, David J and Belli, Barbara A and Bruncko, Milan and Deckwerth, Thomas L and Dinges, Jurgen and Hajduk, Philip J and Joseph, Mary K and Kitada, Shinichi and Korsmeyer, Stanley J and Kunzer, Aaron R and Letai, Anthony and Li, Chi and Mitten, Michael J and Nettesheim, David G and Ng, ShiChung and Nimmer, Paul M and O{\textbackslash}textbackslash{\&}apos;Connor, Jacqueline M and Oleksijew, Anatol and Petros, Andrew M and Reed, John C and Shen, Wang and Tahir, Stephen K and Thompson, Craig B and Tomaselli, Kevin J and Wang, Baole and Wendt, Michael D and Zhang, Haichao and Fesik, Stephen W and Rosenberg, Saul H}, + pages = {677--681}, + volume = {435}, + doi = {10.1038/nature03579} +} + +@article{ritschel_integrative_2009, + title = {{An integrative approach combining noncovalent mass spectrometry, enzyme kinetics and X-ray crystallography to decipher Tgt protein-protein and protein-{\{}RNA{\}} interaction}}, + author = {Ritschel, Tina and Atmanene, Cédric and Reuter, Klaus and Van Dorsselaer, Alain and Sanglier-Cianferani, Sarah and Klebe, Gerhard}, + pages = {833--847}, + volume = {393}, + doi = {10.1016/j.jmb.2009.07.040} +} + +@article{richter_optimised_2012, + title = {{An Optimised Small-Molecule Stabiliser of the 14-3-3-{\{}PMA{\}}2 Protein-Protein Interaction.}}, + author = {Richter, Anja and Rose, Rolf and Hedberg, Christian and Waldmann, Herbert and Ottmann, Christian}, + doi = {10.1002/chem.201103761} +} + +@article{patgiri_orthosteric_2011, + title = {{An orthosteric inhibitor of the Ras-Sos interaction.}}, + author = {Patgiri, Anupam and Yadav, Kamlesh K and Arora, Paramjit S and Bar-Sagi, Dafna}, + pages = {585--587}, + volume = {7}, + doi = {10.1038/nchembio.612} +} + +@article{navaratnam_overview_2006, + title = {{An overview of cytidine deaminases}}, + author = {Navaratnam, N and Sarwar, R}, + pages = {195--200}, + volume = {83}, + doi = {10.1532/IJH97.06032}, + issn = {0925-5710 (Print) 0925-5710 (Linking)}, + keywords = {*Gene Expression Regulation, Animals, Binding Sites, Cytidine Deaminase/genetics/*metabolism, Cytosine Deaminase/genetics/*metabolism, Enzyme Activation, Enzymologic, Escherichia coli/enzymology/genetics, Humans, Neoplasms/*enzymology/genetics, Neoplastic, Oncogene Proteins/genetics/*metabolism, Virus Diseases/*enzymology/genetics, {\{}RNA{\}} Editing/genetics} +} + +@article{yabuuchi_analysis_2011, + title = {{Analysis of multiple compound-protein interactions reveals novel bioactive molecules.}}, + author = {Yabuuchi, Hiroaki and Niijima, Satoshi and Takematsu, Hiromu and Ida, Tomomi and Hirokawa, Takatsugu and Hara, Takafumi and Ogawa, Teppei and Minowa, Yohsuke and Tsujimoto, Gozoh and Okuno, Yasushi}, + pages = {472}, + volume = {7}, + doi = {10.1038/msb.2011.5}, + keywords = {chemogenomics} +} + +@article{ndubaku_antagonism_2009, + title = {{Antagonism of c-{\{}IAP{\}} and {\{}XIAP{\}} Proteins Is Required for Efficient Induction of Cell Death by Small-Molecule {\{}IAP{\}} Antagonists}}, + author = {Ndubaku, Chudi and Varfolomeev, Eugene and Wang, Lan and Zobel, Kerry and Lau, Kevin and Elliott, Linda O and Maurer, Brigitte and Fedorova, Anna V and Dynek, Jasmin N and Koehler, Michael and Hymowitz, Sarah G and Tsui, Vickie and Deshayes, Kurt and Fairbrother, Wayne J and Flygare, John A and Vucic, Domagoj}, + pages = {557--566}, + volume = {4}, + doi = {10.1021/cb900083m} +} + +@article{mazars_antagonistes_2005, + title = {{Antagonistes de Bcl-2, th{\'{e}}rapies anticanc{\'{e}}reuses alternatives}}, + author = {Mazars, Anne and Geneste, Olivier and Hickman, John}, + pages = {253--265}, + volume = {199}, + doi = {10.1051/jbio:2005027} +} + +@article{cohen_antagonists_2010, + title = {{Antagonists of inhibitor of apoptosis proteins based on thiazole amide isosteres}}, + author = {Cohen, Frederick and Koehler, Michael F T and Bergeron, Philippe and Elliott, Linda O and Flygare, John A and Franklin, Matthew C and Gazzard, Lewis and Keteltas, Stephen F and Lau, Kevin and Ly, Cuong Q and Tsui, Vickie and Fairbrother, Wayne J}, + pages = {2229--2233}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.02.021} +} + +@article{liu_anti-cancer_2012, + title = {{Anti-cancer drug discovery and development: Bcl-2 family small molecule inhibitors}}, + author = {Liu, Qiang and Wang, Hong-Gang}, + pages = {557--565}, + volume = {5}, + doi = {10.4161/cib.21554} +} + +@article{crunkhorn_anticancer_2011, + title = {{Anticancer drugs: Stapled peptide rescues p53}}, + author = {Crunkhorn, Sarah}, + pages = {21}, + volume = {10}, + doi = {10.1038/nrd3342} +} + +@article{wei_apogossypol_2009, + title = {{Apogossypol derivatives as pan-active inhibitors of antiapoptotic B-cell lymphoma/leukemia-2 (Bcl-2) family proteins}}, + author = {Wei, Jun and Kitada, Shinichi and Rega, Michele F and Stebbins, John L and Zhai, Dayong and Cellitti, Jason and Yuan, Hongbin and Emdadi, Aras and Dahl, Russell and Zhang, Ziming and Yang, Li and Reed, John C and Pellecchia, Maurizio}, + pages = {4511--4523}, + volume = {52}, + doi = {10.1021/jm900472s} +} + +@article{joce_application_2010, + title = {{Application of a novel in silico high-throughput screen to identify selective inhibitors for protein-protein interactions}}, + author = {Joce, Catherine and Stahl, Joshua A and Shridhar, Mitesh and Hutchinson, Mark R and Watkins, Linda R and Fedichev, Peter O and Yin, Hang}, + pages = {5411--5413}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.07.103} +} + +@article{liu_application_2012, + title = {{Application of consensus scoring and principal component analysis for virtual screening against {$\beta$}-secretase ({\{}BACE{\}}-1).}}, + author = {Liu, Shu and Fu, Rao and Zhou, Li-Hua and Chen, Sheng-Ping}, + pages = {e38086}, + volume = {7}, + doi = {10.1371/journal.pone.0038086} +} + +@article{veljkovic_application_2007, + title = {{Application of the {\{}EIIP{\}}/{\{}ISM{\}} bioinformatics concept in development of new drugs}}, + author = {Veljkovic, V and Veljkovic, N and Est{\'{e}}, J A and H{\"{u}}ther, A and Dietrich, U}, + pages = {441--453}, + volume = {14} +} + +@article{helguera_applications_2008, + title = {{Applications of 2D Descriptors in Drug Design: A DRAGON Tale}}, + year = {2008}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Helguera, Aliuska and Combes, Robert and Gonzalez, Maykel and Cordeiro, M. Natalia}, + number = {18}, + pages = {1628--1655}, + volume = {8}, + doi = {10.2174/156802608786786598}, + issn = {15680266} +} + +@article{lloyd_approaches_2013, + title = {{Approaches to Scaffold Hopping}}, + author = {Lloyd, David G}, + pages = {e451--e452}, + volume = {10}, + doi = {10.1016/j.ddtec.2013.09.001} +} + +@article{moreira_are_2013, + title = {{Are hot-spots occluded from water?}}, + author = {Moreira, Irina Sousa and Ramos, Rui Miguel and Martins, Joao Miguel and Fernandes, Pedro Alexandrino and Ramos, Maria João}, + doi = {10.1080/07391102.2012.758598} +} + +@article{schnur_are_2006, + title = {{Are target-family-privileged substructures truly privileged?}}, + author = {Schnur, Dora M and Hermsmeier, Mark A and Tebben, Andrew J}, + pages = {2000--2009}, + volume = {49}, + doi = {10.1021/jm0502900} +} + +@article{ohno_are_2010, + title = {{Are There Differences between Launched Drugs, Clinical Candidates, and Commercially Available Compounds?}}, + author = {Ohno, Kazuki and Nagahara, Yuichi and Tsunoyama, Kazuhisa and Orita, Masaya}, + pages = {815--821}, + volume = {50}, + doi = {10.1021/ci100023s} +} + +@article{zhang_arf_1998, + title = {{ARF promotes MDM2 degradation and stabilizes p53: ARF-INK4a locus deletion impairs both the Rb and p53 tumor suppression pathways}}, + year = {1998}, + journal = {Cell}, + author = {Y, Zhang and Y, Xiong and WG, Yarbrough}, + number = {6}, + pages = {725--34}, + volume = {92} +} + +@article{lanzarotti_aromatic-aromatic_2011, + title = {{Aromatic-aromatic interactions in proteins: beyond the dimer.}}, + author = {Lanzarotti, Esteban and Biekofsky, Rolf R and Estrin, DarÃo A and Marti, Marcelo A and Turjanski, Adrián G}, + pages = {1623--1633}, + volume = {51}, + doi = {10.1021/ci200062e}, + keywords = {PPI} +} + +@misc{asinex_asinex_2012, + title = {{Asinex}}, + shorttitle = {Asinex}, + author = {{Asinex}}, + publisher = {http://www.asinex.com} +} + +@article{bieler_assay_2011, + title = {{Assay Related Target Similarity ({\{}ARTS{\}}) - Chemogenomics Approach for Quantitative Comparison of Biological Targets}}, + author = {Bieler, Michael and Heilker, Ralf and K{\"{o}}ppen, Herbert and Schneider, Gisbert}, + pages = {1897--1905}, + volume = {51}, + doi = {10.1021/ci200105t} +} + +@article{bullock_assessing_2011, + title = {{Assessing helical protein interfaces for inhibitor design.}}, + author = {Bullock, Brooke N and Jochim, Andrea L and Arora, Paramjit S}, + pages = {14220--14223}, + volume = {133}, + doi = {10.1021/ja206074j}, + keywords = {PPI} +} + +@article{sugaya_assessing_2009, + title = {{Assessing the druggability of protein-protein interactions by a supervised machine-learning method.}}, + author = {Sugaya, Nobuyoshi and Ikeda, Kazuyoshi}, + pages = {263}, + volume = {10}, + doi = {10.1186/1471-2105-10-263} +} + +@article{krier_assessing_2006, + title = {{Assessing the Scaffold Diversity of Screening Libraries}}, + author = {Krier, Mireille and Bret, Guillaume and Rognan, Didier}, + pages = {512--524}, + volume = {46}, + doi = {10.1021/ci050352v} +} + +@article{bourgeas_atomic_2010, + title = {{Atomic analysis of protein-protein Interfaces with known inhibitors: The 2P2I database}}, + year = {2010}, + journal = {PLoS ONE}, + author = {Bourgeas, Raphaël and Basse, Marie Jeanne and Morelli, Xavier and Roche, Philippe}, + number = {3}, + pages = {e9598}, + volume = {5}, + doi = {10.1371/journal.pone.0009598}, + issn = {19326203} +} + +@article{bourgeas_atomic_2010-1, + title = {{Atomic analysis of protein-protein Interfaces with known inhibitors: The 2P2I database}}, + year = {2010}, + journal = {PLoS ONE}, + author = {Bourgeas, Raphaël and Basse, Marie Jeanne and Morelli, Xavier and Roche, Philippe}, + number = {3}, + pages = {e9598}, + volume = {5}, + doi = {10.1371/journal.pone.0009598}, + issn = {19326203}, + keywords = {Biophysics/methods, Computational Biology/methods, Databases, Dimerization, Humans, Hydrogen Bonding, Internet, Models, Principal Component Analysis, Protein, Protein Conformation, Protein Interaction Mapping/*methods, Protein Structure, Salts/chemistry, Secondary, Statistical} +} + +@article{higueruelo_atomic_2009, + title = {{Atomic interactions and profile of small molecules disrupting protein-protein interfaces: The TIMBAL database}}, + year = {2009}, + journal = {Chemical Biology and Drug Design}, + author = {Higueruelo, AlÃcia P. and Schreyer, Adrian and Bickerton, G. Richard J and Pitt, Will R. and Groom, Colin R. and Blundell, Tom L.}, + number = {5}, + pages = {457--467}, + volume = {74}, + doi = {10.1111/j.1747-0285.2009.00889.x}, + issn = {17470277}, + keywords = {CREDO, Database, Druggable, Drugs, Multi-protein complexes, PICCOLO, Protein-protein interactions, Small molecules, TIMBAL} +} + +@article{porter_atropisomeric_2009, + title = {{Atropisomeric small molecule Bcl-2 ligands: Determination of bioactive conformation}}, + author = {Porter, John and Payne, Andrew and Whitcombe, Ian and de Candole, Ben and Ford, Daniel and Garlish, Rachel and Hold, Adam and Hutchinson, Brian and Trevitt, Graham and Turner, James and Edwards, Chloe and Watkins, Clare and Davis, Jeremy and Stubberfield, Colin}, + pages = {1767--1772}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.01.071} +} + +@article{harris_automated_2008, + title = {{Automated prediction of ligand-binding sites in proteins}}, + author = {Harris, Rodney and Olson, Arthur J and Goodsell, David S}, + pages = {1506--1517}, + volume = {70}, + doi = {10.1002/prot.21645} +} + +@article{kolb_automatic_2006, + title = {{Automatic and efficient decomposition of two-dimensional structures of small molecules for fragment-based high-throughput docking}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {Kolb, Peter and Caflisch, Amedeo}, + number = {25}, + pages = {7384--7392}, + volume = {49}, + doi = {10.1021/jm060838i}, + issn = {00222623} +} + +@article{bjorkelund_avoiding_2011, + title = {{Avoiding false negative results in specificity analysis of protein-protein interactions}}, + author = {Bj{\"{o}}rkelund, Hanna and Gedda, Lars and Andersson, Karl}, + pages = {81--89}, + volume = {24}, + doi = {10.1002/jmr.1026} +} + +@article{foster_balancing_2012, + title = {{Balancing target flexibility and target denaturation in computational fragment-based inhibitor discovery}}, + author = {Foster, Theresa J and MacKerell Jr., Alexander D and Guvench, Olgun}, + pages = {n/a--n/a}, + doi = {10.1002/jcc.23026} +} + +@article{vogt_bayesian_2007, + title = {{Bayesian Interpretation of a Distance Function for Navigating High-Dimensional Descriptor Spaces}}, + author = {Vogt, Martin and Godden, Jeffrey W and Bajorath, Jürgen}, + pages = {39--46}, + volume = {47}, + doi = {10.1021/ci600280b} +} + +@article{gross_bcl-2_1999, + title = {{BCL-2 family members and the mitochondria in apoptosis}}, + year = {1999}, + journal = {Genes and Development}, + author = {Gross, Atan and McDonnell, James M. and Korsmeyer, Stanley J.}, + number = {15}, + pages = {1899--1911}, + volume = {13}, + doi = {10.1101/gad.13.15.1899}, + issn = {08909369} +} + +@article{noauthor_bcl-2.breast-cancer_2000, + title = {{Bcl-2.breast-cancer}}, + pages = {1--12} +} + +@article{cassonnet_benchmarking_2011, + title = {{Benchmarking a luciferase complementation assay for detecting protein complexes}}, + author = {Cassonnet, Patricia and Rolloy, Caroline and Neveu, Gregory and Vidalain, Pierre-Olivier and Chantier, Thibault and Pellet, Johann and Jones, Louis and Muller, Mandy and Demeret, Caroline and Gaud, Guillaume and Vuillier, Françoise and Lotteau, Vincent and Tangy, Fréderic and Favre, Michel and Jacob, Yves}, + number = {12}, + pages = {990--992}, + volume = {8}, + doi = {10.1038/nmeth.1773}, + issn = {1548-7105}, + pmid = {22127214}, + keywords = {Animals, Benchmarking, Copepoda, Databases, Genetic Complementation Test, High-Throughput Screening Assays, Humans, Luciferases, Luminescence, Protein, Protein Binding, Protein Interaction Mapping, Proteomics} +} + +@article{filippakopoulos_benzodiazepines_2011, + title = {{Benzodiazepines and benzotriazepines as protein interaction inhibitors targeting bromodomains of the {\{}BET{\}} family.}}, + author = {Filippakopoulos, Panagis and Picaud, Sarah and Fedorov, Oleg and Keller, Marco and Wrobel, Matthias and Morgenstern, Olaf and Bracher, Franz and Knapp, Stefan}, + doi = {10.1016/j.bmc.2011.10.080} +} + +@article{banerjee_bet_nodate, + title = {{BET bromodomain inhibition as a novel strategy for reactivation of HIV-1}}, + year = {2012}, + journal = {Journal of Leukocyte Biology}, + author = {Banerjee, Camellia and Archin, Nancie and Michaels, Daniel and Belkina, Anna C. and Denis, Gerald V. and Bradner, James and Sebastiani, Paola and Margolis, David M. and Montano, Monty}, + number = {6}, + pages = {1147--1154}, + volume = {92}, + doi = {10.1189/jlb.0312165} +} + +@article{whitty_between_2006, + title = {{Between a rock and a hard place?}}, + author = {Whitty, Adrian and Kumaravel, Gnanasambandam}, + pages = {112--118}, + volume = {2}, + doi = {10.1038/nchembio0306-112} +} + +@article{kogej_big_2012, + title = {{Big pharma screening collections: more of the same or unique libraries? The {\{}AstraZeneca{\}}-Bayer Pharma {\{}AG{\}} case.}}, + author = {Kogej, Thierry and Blomberg, Niklas and Greasley, Peter J and Mundt, Stefan and Vainio, Mikko J and Schamberger, Jens and Schmidt, Georg and H{\"{u}}ser, Jörg}, + doi = {10.1016/j.drudis.2012.10.011} +} + +@article{day_binding_2012, + title = {{Binding Efficiency of Protein-Protein Complexes.}}, + author = {Day, Eric S and Cote, Shaun M and Whitty, Adrian}, + doi = {10.1021/bi301039t} +} + +@article{wisen_binding_2010, + title = {{Binding of a small molecule at a protein-protein interface regulates the chaperone activity of hsp70-hsp40}}, + author = {Wis{\'{e}}n, Susanne and Bertelsen, Eric B and Thompson, Andrea D and Patury, Srikanth and Ung, Peter and Chang, Lyra and Evans, Christopher G and Walter, Gladis M and Wipf, Peter and Carlson, Heather A and Brodsky, Jeffrey L and Zuiderweg, Erik R P and Gestwicki, Jason E}, + pages = {611--622}, + volume = {5}, + doi = {10.1021/cb1000422} +} + +@article{huang_binding-site_2010, + title = {{Binding-site assessment by virtual fragment screening}}, + author = {Huang, Niu and Jacobson, Matthew P}, + pages = {e10109}, + volume = {5}, + doi = {10.1371/journal.pone.0010109} +} + +@article{renner_bioactivity-guided_2009, + title = {{Bioactivity-guided mapping and navigation of chemical space}}, + author = {Renner, Steffen and Van Otterlo, Willem A L and Dominguez Seoane, Marta and M{\"{o}}cklinghoff, Sabine and Hofmann, Bettina and Wetzel, Stefan and Schuffenhauer, Ansgar and Ertl, Peter and Oprea, Tudor I and Steinhilber, Dieter and Brunsveld, Luc and Rauh, Daniel and Waldmann, Herbert}, + pages = {585--592}, + volume = {5}, + doi = {10.1038/nchembio.188} +} + +@article{bon_bioactivity-guided_2010, + title = {{Bioactivity-guided navigation of chemical space}}, + year = {2010}, + journal = {Accounts of Chemical Research}, + author = {Bon, Robin S. and Waldmann, Herbert}, + number = {8}, + pages = {1103--1114}, + volume = {43}, + doi = {10.1021/ar100014h}, + issn = {00014842} +} + +@article{petrone_biodiversity_2013, + title = {{Biodiversity of small molecules - a new perspective in screening set selection.}}, + author = {Petrone, Paula M and Wassermann, Anne Mai and Lounkine, Eugen and Kutchukian, Peter and Simms, Benjamin and Jenkins, Jeremy and Selzer, Paul and Glick, Meir}, + pages = {674--680}, + volume = {18}, + doi = {10.1016/j.drudis.2013.02.005} +} + +@article{rabal_biologically_2012, + title = {{Biologically relevant chemical space navigator: from patent and structure-activity relationship analysis to library acquisition and design.}}, + author = {Rabal, Obdulia and Oyarzabal, Julen}, + pages = {3123--3137}, + volume = {52}, + doi = {10.1021/ci3004539} +} + +@article{kaiser_biology-inspired_2008, + title = {{Biology-inspired synthesis of compound libraries}}, + author = {Kaiser, M and Wetzel, S and Kumar, K and Waldmann, H}, + pages = {1186--1201}, + volume = {65}, + doi = {10.1007/s00018-007-7492-1} +} + +@article{kaiser_biology-inspired_2008-1, + title = {{Biology-inspired synthesis of compound libraries}}, + author = {Kaiser, M and Wetzel, S and Kumar, K and Waldmann, H}, + pages = {1186--1201}, + volume = {65}, + doi = {10.1007/s00018-007-7492-1}, + issn = {1420-682X (Print) 1420-682X (Linking)}, + keywords = {Binding Sites, Biological Products/chemistry/classification, Conserved Sequence, Protein, Small Molecule Libraries/*chemical synthesis, Structural Homology} +} + +@article{wetzel_biology-oriented_2011, + title = {{Biology-Oriented Synthesis}}, + author = {Wetzel, Stefan and Bon, Robin S and Kumar, Kamal and Waldmann, Herbert}, + pages = {10800--10826}, + volume = {50}, + doi = {10.1002/anie.201007004} +} + +@article{dragulescu-andrasi_bioluminescence_2011, + title = {{Bioluminescence resonance energy transfer ({\{}BRET{\}}) imaging of protein-protein interactions within deep tissues of living subjects}}, + author = {Dragulescu-Andrasi, Anca and Chan, Carmel T and De, Abhijit and Massoud, Tarik F and Gambhir, Sanjiv S}, + doi = {10.1073/pnas.1100923108}, + keywords = {{\{}PPI{\}} exp} +} + +@article{bauer_biomimetic_2012, + title = {{Biomimetic diversity-oriented synthesis of benzannulated medium rings via ring expansion}}, + author = {Bauer, Renato A and Wenderski, Todd A and Tan, Derek S}, + pages = {21--29}, + volume = {9}, + doi = {10.1038/nchembio.1130} +} + +@article{wassermann_bioturbo_2013, + title = {{Bioturbo Similarity Searching: Combining Chemical and Biological Similarity To Discover Structurally Diverse Bioactive Molecules.}}, + author = {Wassermann, Anne Mai and Lounkine, Eugen and Glick, Meir}, + doi = {10.1021/ci300607r} +} + +@article{machida_bivalent_2010, + title = {{Bivalent Inhibitors for Disrupting Protein Surface-Substrate Interactions and for Dual Inhibition of Protein Prenyltransferases}}, + author = {Machida, Shinnosuke and Kato, Nobuo and Harada, Kazuo and Ohkanda, Junko}, + doi = {10.1021/ja1086112} +} + +@article{tsou_blocking_2012, + title = {{Blocking {\{}HIV{\}}-1 entry by a gp120 surface binding inhibitor.}}, + author = {Tsou, Lun K and Chen, Chin-Ho and Dutschman, Ginger E and Cheng, Yung-Chi and Hamilton, Andrew D}, + doi = {10.1016/j.bmcl.2012.02.079} +} + +@article{ahmed_bound_2011, + title = {{Bound water at protein-protein interfaces: Partners, roles and hydrophobic bubbles as a conserved motif}}, + year = {2011}, + journal = {PLoS ONE}, + author = {Ahmed, Mostafa H. and Spyrakis, Francesca and Cozzini, Pietro and Tripathi, Parijat K. and Mozzarelli, Andrea and Scarsdale, J. Neel and Safo, Martin A. and Kellogg, Glen E.}, + editor = {Deane, Charlotte M}, + number = {9}, + pages = {e24712}, + volume = {6}, + doi = {10.1371/journal.pone.0024712}, + issn = {19326203}, + keywords = {Amino Acids, Biochemistry, Biology, Biophysics, Chemical Biology, Chemistry, Computational Biology, Crystallography, Humans, Macromolecular Assemblies, Macromolecular Complex Analysis, Macromolecular Structure Analysis, Medicine, Protein Interactions, Protein Structure, Protein-Serine-Threonine Kinases, Proteins, Q, R, Receptors, Research Article, Science, Solvents, Transforming Growth Factor beta, Water, X-Ray} +} + +@article{farooqi_breast_2012, + title = {{Breast Cancer Proteome Takes More Than Two to Tango on {\{}TRAIL{\}}: Beat Them at Their Own Game.}}, + author = {Farooqi, Ammad Ahmad and Fayyaz, Sundas and Tahir, Muhammad and Iqbal, Muhammed Javed and Bhatti, Shahzad}, + doi = {10.1007/s00232-012-9490-y} +} + +@article{deng_broad_2010, + title = {{Broad spectrum alkynyl inhibitors of T315I Bcr-Abl.}}, + author = {Deng, Xianming and Lim, Sang Min and Zhang, Jianming and Gray, Nathanael S}, + pages = {4196--4200}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.05.043} +} + +@article{sheppard_building_2013, + title = {{Building in molecular diversity for targeted libraries}}, + author = {Sheppard, David W and MacRitchie, Jacqueline A}, + pages = {e461--e466}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.12.002} +} + +@article{owens_can_2005, + title = {{Can making a correlation be patented?}}, + author = {Owens, Joanna}, + pages = {950}, + volume = {4}, + doi = {10.1038/nrd1821} +} + +@article{london_can_2010, + title = {{Can self-inhibitory peptides be derived from the interfaces of globular protein-protein interactions?}}, + author = {London, Nir and Raveh, Barak and Movshovitz-Attias, Dana and Schueler-Furman, Ora}, + pages = {3140--3149}, + volume = {78}, + doi = {10.1002/prot.22785} +} + +@article{olivier_can_2006, + title = {{Can {\{}NF{\}}-{\{}kappaB{\}} be a target for novel and efficient anti-cancer agents?}}, + author = {Olivier, Sabine and Robe, Pierre and Bours, Vincent}, + pages = {1054--1068}, + volume = {72}, + doi = {10.1016/j.bcp.2006.07.023} +} + +@article{flemming_cardiology:_2013, + title = {{Cardiology: Bromodomain inhibition halts heart failure}}, + author = {Flemming, Alexandra}, + pages = {740--741}, + volume = {12}, + doi = {10.1038/nrd4134} +} + +@article{lacey_case_2012, + title = {{Case history: Bench to bedside: elucidation of the {\{}OPG{\}}–{\{}RANK{\}}–{\{}RANKL{\}} pathway and the development of denosumab}}, + author = {Lacey, David L and Boyle, William J and Simonet, W Scott and Kostenuik, Paul J and Dougall, William C and Sullivan, John K and Martin, Javier San and Dansey, Roger}, + pages = {1--19}, + doi = {10.1038/nrd3705} +} + +@article{ferrara_case_2004, + title = {{Case history: Discovery and development of bevacizumab, an anti-{\{}VEGF{\}} antibody for treating cancer}}, + author = {Ferrara, Napoleone and Hillan, Kenneth J and Gerber, Hans-Peter and Novotny, William}, + pages = {391--400}, + volume = {3}, + doi = {10.1038/nrd1381} +} + +@article{matthews_case_2004, + title = {{Case history: Enfuvirtide: the first therapy to inhibit the entry of {\{}HIV{\}}-1 into host {\{}CD{\}}4 lymphocytes}}, + author = {Matthews, Tom and Salgo, Miklos and Greenberg, Michael and Chung, Jain and DeMasi, Ralph and Bolognesi, Dani}, + pages = {215--225}, + volume = {3}, + doi = {10.1038/nrd1331} +} + +@article{tobert_case_2003, + title = {{Case history: Lovastatin and beyond: the history of the {\{}HMG{\}}-{\{}CoA{\}} reductase inhibitors}}, + author = {Tobert, Jonathan A}, + pages = {517--526}, + volume = {2}, + doi = {10.1038/nrd1112} +} + +@article{sonavane_cavities_2008, + title = {{Cavities and atomic packing in protein structures and interfaces}}, + author = {Sonavane, Shrihari and Chakrabarti, Pinak}, + pages = {e1000188}, + volume = {4}, + doi = {10.1371/journal.pcbi.1000188} +} + +@article{ameisen_cell_1991, + title = {{Cell dysfunction and depletion in {\{}AIDS{\}}: the programmed cell death hypothesis}}, + author = {Ameisen, J C and Capron, A}, + pages = {102--105}, + volume = {12}, + issn = {0167-5699 (Print) 0167-5699 (Linking)}, + keywords = {*Cell Survival/drug effects, Acquired Immunodeficiency Syndrome/*pathology, Biological, Endodeoxyribonucleases/biosynthesis/physiology, Gene Expression Regulation, Hematopoietic Stem Cells/pathology, Lymphocyte Activation/drug effects, Mitogens/pharmacology, Models, Signal Transduction, {\{}AIDS{\}} Dementia Complex/pathology, {\{}CD{\}}4-Positive T-Lymphocytes/drug effects/immunol, {\{}HIV{\}} Envelope Protein gp120/physiology, {\{}HIV{\}}/physiology} +} + +@article{pons_cell-dock:_nodate, + title = {{Cell-Dock: high-performance protein-protein docking}}, + author = {Pons, Carles and Jim{\'{e}}nez-Gonz{\'{a}}lez, Daniel and Gonz{\'{a}}lez-{\'{A}}lvarez, Cecilia and Servat, Harald and Cabrera-Ben{\'{i}}tez, Daniel and Aguilar, Xavier and Fern{\'{a}}ndez-Recio, Juan} +} + +@article{stoll_chalcone_2001, + title = {{Chalcone derivatives antagonize interactions between the human oncoprotein {\{}MDM{\}}2 and p53}}, + author = {Stoll, R and Renner, C and Hansen, S and Palme, S and Klein, C and Belling, A and Zeslawski, W and Kamionka, M and Rehm, T and M{\"{u}}hlhahn, P and Schumacher, R and Hesse, F and Kaluza, B and Voelter, W and Engh, R A and Holak, T A}, + pages = {336--344}, + volume = {40} +} + +@article{bade_characteristics_2010, + title = {{Characteristics of known drug space. Natural products, their derivatives and synthetic drugs.}}, + author = {Bade, Richard and Chan, Ho-Fung and Reynisson, Jóhannes}, + pages = {5646--5652}, + volume = {45}, + doi = {10.1016/j.ejmech.2010.09.018} +} + +@article{sborgi_characterization_2010, + title = {{Characterization of a novel interaction between Bcl-2 members diva and harakiri}}, + year = {2010}, + journal = {PLoS ONE}, + author = {Sborgi, Lorenzo and Barrera-Vilarmau, Susana and Obreg{\'{o}}n, Patricia and de Alba, Eva}, + number = {12}, + pages = {e15575}, + volume = {5}, + doi = {10.1371/journal.pone.0015575}, + issn = {19326203} +} + +@article{barakat_characterization_2009, + title = {{Characterization of an inhibitory dynamic pharmacophore for the ERCC1-XPA interaction using a combined molecular dynamics and virtual screening approach}}, + year = {2009}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Barakat, Khaled H. and Torin Huzil, J. and Luchko, Tyler and Jordheim, Lars and Dumontet, Charles and Tuszynski, Jack}, + number = {2}, + pages = {113--130}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.04.009}, + issn = {10933263}, + keywords = {Clustering, DrugBank, ERCC1, NCI dtp database, Pharmacophore, UCN01, Virtual screening, XPA} +} + +@article{griffiths_characterization_2013, + title = {{Characterization of Heterocyclic Rings through Quantum Chemical Topology.}}, + author = {Griffiths, Mark Z and Popelier, Paul L A}, + pages = {1714--1725}, + volume = {53}, + doi = {10.1021/ci400235u} +} + +@article{talavera_characterization_2011, + title = {{Characterization of protein-protein interaction interfaces from a single species}}, + author = {Talavera, David and Robertson, David L and Lovell, Simon C}, + pages = {e21053}, + volume = {6}, + doi = {10.1371/journal.pone.0021053} +} + +@article{jensen_characterizing_2011, + title = {{Characterizing weak protein-protein complexes by NMR residual dipolar couplings}}, + year = {2011}, + journal = {European Biophysics Journal}, + author = {Jensen, Malene Ringkjøbing and Ortega-Roldan, Jose Luis and Salmon, Loïc and Van Nuland, Nico and Blackledge, Martin}, + number = {12}, + pages = {1371--1381}, + volume = {40}, + doi = {10.1007/s00249-011-0720-5}, + issn = {01757571}, + keywords = {Complex, Dynamics, Interaction, NMR, Protein, Structure} +} + +@article{lachance_charting_2012, + title = {{Charting, Navigating, and Populating Natural Product Chemical Space for Drug Discovery}}, + author = {Lachance, Hugo and Wetzel, Stefan and Kumar, Kamal and Waldmann, Herbert}, + pages = {5989--6001}, + volume = {55}, + doi = {10.1021/jm300288g} +} + +@article{noauthor_chemaxon_nodate, + title = {{Chemaxon}} +} + +@article{davies_chembl_2015, + title = {{ChEMBL web services: Streamlining access to drug discovery data and utilities}}, + shorttitle = {{\{}ChEMBL{\}} web services}, + year = {2015}, + journal = {Nucleic Acids Research}, + author = {Davies, Mark and Nowotka, MichaÅ‚ and Papadatos, George and Dedman, Nathan and Gaulton, Anna and Atkinson, Francis and Bellis, Louisa and Overington, John P.}, + number = {W1}, + pages = {W612-W620}, + volume = {43}, + doi = {10.1093/nar/gkv352}, + issn = {13624962}, + pmid = {25883136}, + keywords = {Chemical, Databases, Drug Discovery, Internet, Systems Integration, User-Computer Interface} +} + +@misc{chemdiv_chemdiv_2012, + title = {{ChemDiv}}, + author = {{ChemDiv}}, + publisher = {http://www.chemdiv.com} +} + +@article{rosen_chemgps-np_2009, + title = {{ChemGPS-NP and the Exploration of Biologically Relevant Chemical Space}}, + year = {2009}, + author = {Ros{\'{e}}n, Josefin}, + url = {http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A160221&dswid=-1749}, + keywords = {Farmaceutisk vetenskap, Pharmaceutical Sciences, Pharmacognosy, farmakognosi} +} + +@article{che_chemical_2012, + title = {{Chemical and biological properties of frequent screening hits.}}, + author = {Che, Jianwei and King, Frederick and Zhou, Bin and Zhou, Yingyao}, + doi = {10.1021/ci300005y} +} + +@article{morelli_chemical_2011, + title = {{Chemical and structural lessons from recent successes in protein-protein interaction inhibition (2P2I)}}, + year = {2011}, + journal = {Current Opinion in Chemical Biology}, + author = {Morelli, Xavier and Bourgeas, Raphaël and Roche, Philippe}, + number = {4}, + pages = {475--481}, + volume = {15}, + doi = {10.1016/j.cbpa.2011.05.024}, + issn = {13675931}, + keywords = {PPI} +} + +@article{harrison_chemical_2009, + title = {{Chemical biology: Branching out into chemical space}}, + author = {Harrison, Charlotte}, + pages = {615}, + volume = {8}, + doi = {10.1038/nrd2969} +} + +@article{mauser_chemical_2007, + title = {{Chemical Fragment Spaces for de novo Design}}, + author = {Mauser, Harald and Stahl, Martin}, + pages = {318--324}, + volume = {47}, + doi = {10.1021/ci6003652} +} + +@article{gasteiger_chemical_1996, + title = {{Chemical Information in 3D Space}}, + author = {Gasteiger, Johann}, + pages = {1030--1037}, + volume = {36} +} + +@article{dobson_chemical_2004, + title = {{Chemical space and biology}}, + year = {2004}, + journal = {Nature}, + author = {Dobson, Christopher M.}, + number = {7019}, + pages = {824--828}, + volume = {432}, + doi = {10.1038/nature03192}, + issn = {00280836} +} + +@article{brooijmans_chemical_2010, + title = {{Chemical space sampling in virtual screening by different crystal structures}}, + year = {2010}, + journal = {Chemical Biology and Drug Design}, + author = {Brooijmans, Natasja and Humblet, Christine}, + number = {6}, + pages = {472--479}, + volume = {76}, + doi = {10.1111/j.1747-0285.2010.01041.x}, + issn = {17470277}, + keywords = {Binding sites, Computer-aided design, Crystallography: X-ray, Docking, Drug design, Models: molecular, Protein conformation, Protein kinases} +} + +@article{peter_chemical_2004, + title = {{Chemical space/contents}}, + author = {Peter, Kirkpatrick}, + pages = {1}, + volume = {432} +} + +@article{dastidar_chemical_2011, + title = {{Chemical states of the N-terminal {\&}quot;lid{\&}quot; of {\{}MDM{\}}2 regulate p53 binding: Simulations reveal complexities of modulation}}, + author = {Dastidar, Shubhra Ghosh and Raghunathan, Devanathan and Nicholson, Judith and Hupp, Ted R and Lane, David P and Verma, Chandra S}, + volume = {10} +} + +@article{merlot_chemical_2003, + title = {{Chemical substructures in drug discovery.}}, + author = {Merlot, C and Domine, D and Cleva, C and Church, D J}, + pages = {594}, + volume = {8} +} + +@article{ertl_cheminformatics_2007, + title = {{Cheminformatics analysis of natural products: Lessons from nature inspiring the design of new drugs}}, + year = {2008}, + journal = {Progress in Drug Research}, + author = {Ertl, Peter and Schuffenhauer, Ansgar}, + pages = {217--235}, + volume = {66}, + isbn = {9783764385941}, + doi = {10.1007/978-3-7643-8595-8-4}, + issn = {0071786X} +} + +@article{akella_cheminformatics_2010, + title = {{Cheminformatics approaches to analyze diversity in compound screening libraries}}, + author = {Akella, Lakshmi B and Decaprio, David}, + pages = {325--330}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.03.017} +} + +@article{oprea_chemography:_2001, + title = {{Chemography: the art of navigating in chemical space}}, + author = {Oprea, T} +} + +@article{singh_chemoinformatic_2009, + title = {{Chemoinformatic Analysis of Combinatorial Libraries, Drugs, Natural Products, and Molecular Libraries Small Molecule Repository}}, + author = {Singh, Narender and Guha, Rajarshi and Giulianotti, Marc A and Pinilla, Clemencia and Houghten, Richard A and Medina-Franco, Jose L}, + pages = {1010--1024}, + volume = {49}, + doi = {10.1021/ci800426u} +} + +@article{scotti_chemometric_2010, + title = {{Chemometric studies on natural products as potential inhibitors of the {\{}NADH{\}} oxidase from Trypanosoma cruzi using the {\{}VolSurf{\}} approach.}}, + author = {Scotti, Luciana and Ferreira, Elizabeth Igne and Silva, Marcelo Sobral da and Scotti, Marcus Tullius}, + pages = {7363--7377}, + volume = {15}, + doi = {10.3390/molecules15107363} +} + +@article{cianchetta_chemometric_2004, + title = {{Chemometric Studies on the Bactericidal Activity of Quinolones via an Extended {\{}VolSurf{\}} Approach}}, + author = {Cianchetta, Giovanni and Mannhold, Raimund and Cruciani, Gabriele and Baroni, Massimo and Cecchetti, Violetta}, + pages = {3193--3201}, + volume = {47}, + doi = {10.1021/jm030986y} +} + +@article{lounkine_chemotography_2012, + title = {{Chemotography for multi-target {\{}SAR{\}} analysis in the context of biological pathways.}}, + author = {Lounkine, Eugen and Kutchukian, Peter and Petrone, Paula and Davies, John W and Glick, Meir}, + doi = {10.1016/j.bmc.2012.02.034} +} + +@article{mullard_cholesterol-lowering_2012, + title = {{Cholesterol-lowering blockbuster candidates speed into Phase {\{}III{\}} trials}}, + author = {Mullard, Asher}, + pages = {817--819}, + volume = {11}, + doi = {10.1038/nrd3879} +} + +@article{noauthor_chris_2012, + title = {{Chris lipinski}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + number = {12}, + pages = {900--901}, + volume = {11}, + doi = {10.1038/nrd3895}, + issn = {14741776} +} + +@misc{f_hoffmann-la_roche_ag_cis-245-triaryl-imidazolines_2005, + title = {{Cis-2,4,5-Triaryl-Imidazolines}}, + pages = {C07D 233/ 22 A I; C07D 233/ 36 A I; C07D 233/ 54 A} +} + +@article{awale_cluster_2012, + title = {{Cluster analysis of the {\{}DrugBank{\}} chemical space using molecular quantum numbers.}}, + author = {Awale, Mahendra and Reymond, Jean-Louis}, + doi = {10.1016/j.bmc.2012.03.017} +} + +@article{jothi_co-evolutionary_2006, + title = {{Co-evolutionary analysis of domains in interacting proteins reveals insights into domain-domain interactions mediating protein-protein interactions}}, + author = {Jothi, Raja and Cherukuri, Praveen F and Tasneem, Asba and Przytycka, Teresa M}, + number = {4}, + pages = {861--875}, + volume = {362}, + doi = {10.1016/j.jmb.2006.07.072}, + issn = {0022-2836}, + pmid = {16949097}, + keywords = {Amino Acid Sequence, Dimerization, Evolution, Karyopherins, Membrane Proteins, Molecular, Mutation, Nuclear Proteins, Nucleocytoplasmic Transport Proteins, Protein Binding, Protein Interaction Mapping, Protein Structure, Proton-Translocating {\{}ATPases{\}}, Reproducibility of Results, Saccharomyces cerevisiae Proteins, Tertiary, Yeasts, {\{}COP{\}}-Coated Vesicles, {\{}DNA{\}}-Directed {\{}RNA{\}} Polymerases, {\{}GTPase{\}}-Activating Proteins} +} + +@article{saxena_collection_2006, + title = {{Collection and preparation of molecular databases for virtual screening}}, + author = {Saxena, A K and Prathipati, P}, + pages = {371--392}, + volume = {17}, + doi = {10.1080/10629360600884462} +} + +@article{suenderhauf_combinatorial_2011, + title = {{Combinatorial {\{}QSAR{\}} modeling of human intestinal absorption.}}, + author = {Suenderhauf, Claudia and Hammann, Felix and Maunz, Andreas and Helma, Christoph and Huwyler, Jörg}, + pages = {213--224}, + volume = {8}, + doi = {10.1021/mp100279d} +} + +@article{volkamer_combining_2012, + title = {{Combining global and local measures for structure-based druggability predictions.}}, + author = {Volkamer, Andrea and Kuhn, Daniel and Grombacher, Thomas and Rippmann, Friedrich and Rarey, Matthias}, + pages = {360--372}, + volume = {52}, + doi = {10.1021/ci200454v} +} + +@article{hu_combining_2011, + title = {{Combining Horizontal and Vertical Substructure Relationships in Scaffold Hierarchies for Activity Prediction}}, + author = {Hu, Ye and Bajorath, Jürgen}, + doi = {10.1021/ci100448a}, + keywords = {chemical space} +} + +@article{zen_comparing_2010, + title = {{Comparing interfacial dynamics in protein-protein complexes: an elastic network approach.}}, + author = {Zen, Andrea and Micheletti, Cristian and Keskin, Ozlem and Nussinov, Ruth}, + pages = {26}, + volume = {10}, + doi = {10.1186/1472-6807-10-26} +} + +@article{desaphy_comparison_2012, + title = {{Comparison and druggability prediction of protein-ligand binding sites from pharmacophore-annotated cavity shapes}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Desaphy, Jérémy and Azdimousa, Karima and Kellenberger, Esther and Rognan, Didier}, + number = {8}, + month = {8}, + pages = {2287--2299}, + volume = {52}, + url = {https://pubs.acs.org/doi/10.1021/ci300184x}, + doi = {10.1021/ci300184x}, + issn = {15499596}, + keywords = {Binding Sites, Computational Biology/*methods, Drug Evaluation, Drug-Related Side Effects and Adverse Reactions, Humans, Ligands, Models, Molecular, Pharmaceutical Preparations/chemistry/*metabolism, Preclinical, Protein Conformation, Proteins/*chemistry/*metabolism, User-Computer Interface} +} + +@article{lu_comparison_1996, + title = {{Comparison of activated protein C/protein S-mediated inactivation of human factor {\{}VIII{\}} and factor V}}, + author = {Lu, D and Kalafatis, M and Mann, K G and Long, G L}, + pages = {4708--4717}, + volume = {87}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {Factor Va/*metabolism, Factor {\{}VIIIa{\}}/*metabolism, Humans, Kinetics, Protein C/*metabolism, Protein S/*metabolism, Recombinant Proteins/metabolism, Thrombin/metabolism} +} + +@article{voigt_comparison_2001, + title = {{Comparison of the {\{}NCI{\}} Open Database with Seven Large Chemical Structural Databases}}, + author = {Voigt, J H and Bienfait, B and Wang, S and Nicklaus, M C}, + pages = {702--712}, + volume = {41}, + doi = {10.1021/ci000150t} +} + +@article{kufareva_compound_2012, + title = {{Compound activity prediction using models of binding pockets or ligand properties in 3D.}}, + author = {Kufareva, Irina and Chen, Yu-Chen and Ilatovskiy, Andrey V and Abagyan, Ruben}, + pages = {1869--1882}, + volume = {12} +} + +@article{khan_comprehensive_2012, + title = {{Comprehensive data-driven analysis of the impact of chemoinformatic structure on the genome-wide biological response profiles of cancer cells to 1159 drugs.}}, + author = {Khan, Suleiman A and Faisal, Ali and Mpindi, John Patrick and Parkkinen, Juuso A and Kalliokoski, Tuomo and Poso, Antti and Kallioniemi, Olli P and Wennerberg, Krister and Kaski, Samuel}, + pages = {112}, + volume = {13}, + doi = {10.1186/1471-2105-13-112} +} + +@article{whitby_comprehensive_2012, + title = {{Comprehensive Peptidomimetic Libraries Targeting Protein-Protein Interactions.}}, + author = {Whitby, Landon R and Boger, Dale L}, + doi = {10.1021/ar300025n} +} + +@article{george_comprehensive_nodate, + title = {{Comprehensive, atomic-level characterization of structurally characterized protein-protein interactions: The PICCOLO database}}, + year = {2011}, + journal = {BMC Bioinformatics}, + author = {Bickerton, George R. and Higueruelo, Alicia P. and Blundell, Tom L.}, + volume = {12}, + doi = {10.1186/1471-2105-12-313}, + issn = {14712105} +} + +@article{isvoran_computational_2013, + title = {{Computational analysis of protein-protein interfaces involving an alpha helix: Insights for terphenyl-like molecules binding}}, + year = {2013}, + journal = {BMC Pharmacology and Toxicology}, + author = {Isvoran, Adriana and Craciun, Dana and Martiny, Virginie and Sperandio, Olivier and Miteva, Maria A.}, + pages = {31}, + volume = {14}, + isbn = {2050-6511}, + doi = {10.1186/2050-6511-14-31}, + issn = {20506511}, + pmid = {23768251} +} + +@article{harrison_computational_2013-1, + title = {{Computational chemistry: Designing optimal ligand-binding proteins}}, + author = {Harrison, Charlotte}, + pages = {742}, + volume = {12}, + doi = {10.1038/nrd4141} +} + +@article{harrison_computational_2013, + title = {{Computational chemistry: Homing in on desired drug properties}}, + year = {2013}, + journal = {Nature Reviews Drug Discovery}, + author = {Harrison, Charlotte}, + number = {2}, + pages = {101}, + volume = {12}, + doi = {10.1038/nrd3938}, + issn = {14741776} +} + +@article{bienstock_computational_2012, + title = {{Computational drug design targeting protein-protein interactions.}}, + author = {Bienstock, Rachelle J}, + pages = {1240--1254}, + volume = {18} +} + +@article{zhong_computational_2007, + title = {{Computational Identification of Inhibitors of Protein-Protein Interactions}}, + year = {2006}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Zhong, Shijun and Macias, Alba and MacKerell, Alexander}, + number = {1}, + pages = {63--82}, + volume = {7}, + doi = {10.2174/156802607779318334}, + issn = {15680266}, + pmid = {17266596} +} + +@article{harrison_adverse_2012, + title = {{Computational model predicts side effects}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Harrison, Charlotte}, + number = {8}, + pages = {602--602}, + volume = {11}, + doi = {10.1038/nrd3813}, + issn = {1474-1776} +} + +@article{gokhale_conformationally_2011, + title = {{Conformationally Constrained Peptides from {\{}CD{\}}2 To Modulate Protein-Protein Interactions between {\{}CD{\}}2 and {\{}CD{\}}58}}, + author = {Gokhale, Ameya and Weldeghiorghis, Thomas K and Taneja, Veena and Satyanarayanajois, Seetharama D}, + doi = {10.1021/jm200004e}, + keywords = {new target} +} + +@article{nicolaes_congenital_2003, + title = {{Congenital and acquired activated protein C resistance}}, + author = {Nicolaes, G A and Dahlback, B}, + pages = {33--46}, + volume = {3}, + doi = {10.1055/s-2003-38331}, + issn = {1528-9648 (Print) 1528-9648 (Linking)}, + keywords = {Activated Protein C Resistance/*congenital/diagno, Blood Coagulation Factors/physiology, Humans, Phenotype, Risk Factors, Venous Thrombosis/congenital/diagnosis/epidemiolo} +} + +@article{bauer_construction_1972, + title = {{Construction confidence sets using rank statistics.}}, + author = {Bauer, D F}, + pages = {687--690}, + volume = {67} +} + +@article{tirado-rives_contribution_2006, + title = {{Contribution of conformer focusing to the uncertainty in predicting free energies for protein-ligand binding}}, + author = {Tirado-Rives, J and Jorgensen, W L}, + pages = {5880--5884}, + volume = {49}, + doi = {10.1021/jm060763i}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Drug Design, *Ligands, *Thermodynamics, Binding Sites, Models, Molecular, Molecular Conformation, Protein Binding, Proteins/*chemistry} +} + +@article{vajda_convergence_2009, + title = {{Convergence and combination of methods in protein-protein docking.}}, + author = {Vajda, Sandor and Kozakov, Dima}, + pages = {164--170}, + volume = {19}, + doi = {10.1016/j.sbi.2009.02.008} +} + +@article{kirys_correlation_2012, + title = {{Correlation analysis of the side-chains conformational distribution in bound and unbound proteins.}}, + author = {Kirys, Tatsiana and Ruvinsky, Anatoly M and Tuzikov, Alexander V and Vakser, Ilya A}, + pages = {236}, + volume = {13}, + doi = {10.1186/1471-2105-13-236} +} + +@article{kallen_crystal_2009, + title = {{Crystal Structures of Human {\{}MdmX{\}} ({\{}HdmX{\}}) in Complex with p53 Peptide Analogues Reveal Surprising Conformational Changes}}, + author = {Kallen, Joerg and Goepfert, Arnaud and Blechschmidt, Anke and Izaac, Aude and Geiser, Martin and Tavares, Gisele and Ramage, Paul and Furet, Pascal and Masuya, Keiichi and Lisztwan, Joanna}, + pages = {8812--8821}, + volume = {284}, + doi = {10.1074/jbc.M809096200} +} + +@article{guha_cyclin-dependent_2012, + title = {{Cyclin-dependent kinase inhibitors move into Phase {\{}III{\}}}}, + author = {Guha, Malini}, + pages = {892--894}, + volume = {11}, + doi = {10.1038/nrd3908} +} + +@article{du_d77_2008, + title = {{D77, one benzoic acid derivative, functions as a novel anti-{\{}HIV{\}}-1 inhibitor targeting the interaction between integrase and cellular {\{}LEDGF{\}}/p75.}}, + author = {Du, Li and Zhao, Yaxue and Chen, Jing and Yang, Liumeng and Zheng, Yongtang and Tang, Yun and Shen, Xu and Jiang, Hualiang}, + pages = {139--144}, + volume = {375}, + doi = {10.1016/j.bbrc.2008.07.139} +} + +@article{ncbi_resource_coordinators_database_2015, + title = {{Database resources of the National Center for Biotechnology Information}}, + year = {2015}, + journal = {Nucleic Acids Research}, + author = {Barrett, Tanya and Beck, Jeff and Benson, Dennis A. and Bollin, Colleen and Bolton, Evan and Bourexis, Devon and Brister, J. Rodney and Bryant, Stephen H. and Canese, Kathi and Clark, Karen and Dicuccio, Michael and Dondoshansky, Ilya and Federhen, Scott and Feolo, Michael and Funk, Kathryn and Geer, Lewis Y. and Gorelenkov, Viatcheslav and Hoeppner, Marilu and Holmes, Brad and Johnson, Mark and Khotomlianski, Viatcheslav and Kimchi, Avi and Kimelman, Michael and Kitts, Paul and Klimke, William and Krasnov, Sergey and Kuznetsov, Anatoliy and Landrum, Melissa J. and Landsman, David and Lee, Jennifer M. and Lipman, David J. and Lu, Zhiyong and Madden, Thomas L. and Madej, Tom and Marchler-Bauer, Aron and Karsch-Mizrachi, Ilene and Murphy, Terence and Orris, Rebecca and Ostell, James and O'Sullivan, Christopher and Panchenko, Anna and Phan, Lon and Preuss, Don and Pruitt, Kim D. and Rubinstein, Wendy and Sayers, Eric W. and Schneider, Valerie and Schuler, Gregory D. and Sherry, Stephen T. and Sirotkin, Karl and Siyan, Karanjit and Slotta, Douglas and Soboleva, Alexandra and Soussov, Vladimir and Starchenko, Grigory and Tatusova, Tatiana A. and Trawick, Bart W. and Vakatov, Denis and Wang, Yanli and Ward, Minghong and Wilbur, W. John and Yaschenko, Eugene and Zbicz., Kerry}, + number = {D1}, + pages = {D6-D17}, + volume = {43}, + doi = {10.1093/nar/gku1130}, + issn = {13624962}, + keywords = {*Databases, Bacteria/classification, Databases, Gene Expression, Genetic, Genetic Variation, Genetics, Genomics, Humans, Medical, National Library of Medicine (U.S.), Protein, Sequence Alignment, Sequence Analysis, United States, {\{}DNA{\}}, {\{}PubMed{\}}, {\{}RNA{\}}} +} + +@article{potin_novo_2005, + title = {{De novo design, synthesis, and in vitro activity of {\{}LFA{\}}-1 antagonists based on a bicyclic[5.5]hydantoin scaffold}}, + author = {Potin, Dominique and Launay, Michele and Nicolai, Eric and Fabreguette, Maud and Malabre, Patrice and Caussade, François and Besse, Dominique and Skala, Stacey and Stetsko, Dawn K and Todderud, Gordon and Beno, Brett R and Cheney, Daniel L and Chang, Chiehying J and Sheriff, Steven and Hollenbaugh, Diane L and Barrish, Joel C and Iwanowicz, Edwin J and Suchard, Suzanne J and Dhar, T G Murali}, + pages = {1161--1164}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.12.007} +} + +@article{fayne_-peptidising_2013, + title = {{De-peptidising protein-protein interactions - Big jobs for small molecules}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Fayne, Darren}, + number = {4}, + pages = {e467--e474}, + volume = {10}, + doi = {10.1016/j.ddtec.2013.08.002}, + issn = {17406749} +} + +@article{wager_defining_2010, + title = {{Defining Desirable Central Nervous System Drug Space through the Alignment of Molecular Properties, in Vitro {\{}ADME{\}}, and Safety Attributes}}, + author = {Wager, Travis T and Chandrasekaran, Ramalakshmi Y and Hou, Xinjun and Troutman, Matthew D and Verhoest, Patrick R and Villalobos, Anabella and Will, Yvonne}, + pages = {420--434}, + volume = {1}, + doi = {10.1038/nchembio.395} +} + +@article{noauthor_defining_nodate, + title = {{Defining Desirable Central Nervous System Drug Space through the Alignment of Molecular Properties, in Vitro {\{}ADME{\}}, and Safety Attributes}} +} + +@article{antuch_design_2006, + title = {{Design and modular parallel synthesis of a {\{}MCR{\}} derived alpha-helix mimetic protein-protein interaction inhibitor scaffold}}, + author = {Antuch, Walfrido and Menon, Sanjay and Chen, Quin-Zene and Lu, Yingchun and Sakamuri, Sukumar and Beck, Barbara and Schauer-Vukasinovi{\'{c}}, Vesna and Agarwal, Seema and Hess, Sibylle and D{\"{o}}mling, Alexander}, + pages = {1740--1743}, + volume = {16}, + doi = {10.1016/j.bmcl.2005.11.102} +} + +@article{tran_design_2009, + title = {{Design and optimisation of potent gp120-{\{}CD{\}}4 inhibitors}}, + author = {Tran, Thien-Duc and Adam, Fiona M and Calo, Frederick and Fenwick, David R and Fok-Seang, Juin and Gardner, Iain and Hay, Duncan A and Perros, Manos and Rawal, Jaiessh and Middleton, Donald S and Parkinson, Tanya and Pickford, Christopher and Platts, Michelle and Randall, Amy and Stephenson, Peter T and Vuong, Hannah and Williams, David H}, + pages = {5250--5255}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.06.102} +} + +@article{kohli_design_2012, + title = {{Design and rationale of the LAPLACE-TIMI 57 trial: A phase II, double-blind, placebo-controlled study of the efficacy and tolerability of a monoclonal antibody inhibitor of PCSK 9 in subjects with hypercholesterolemia on background statin therapy}}, + year = {2012}, + journal = {Clinical Cardiology}, + author = {Kohli, Payal and Desai, Nihar R. and Giugliano, Robert P. and Kim, Jae B. and Somaratne, Ransi and Huang, Fannie and Knusel, Beat and McDonald, Shannon and Abrahamsen, Timothy and Wasserman, Scott M. and Scott, Robert and Sabatine, Marc S.}, + number = {7}, + pages = {385--391}, + volume = {35}, + doi = {10.1002/clc.22014}, + issn = {01609289} +} + +@article{guckian_design_2008, + title = {{Design and synthesis of a series of meta aniline-based {\{}LFA{\}}-1 {\{}ICAM{\}} inhibitors}}, + author = {Guckian, Kevin M and Lin, Edward Yin-Shiang and Silvian, Laura and Friedman, Jessica E and Chin, Donovan and Scott, Daniel M}, + pages = {5249--5251}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.08.061} +} + +@article{crisostomo_design_2009, + title = {{Design and synthesis of a simplified inhibitor for {\{}XIAP{\}}-{\{}BIR{\}}3 domain}}, + author = {Cris{\'{o}}stomo, Fernando R Pinacho and Feng, Yongmei and Zhu, Xuejun and Welsh, Kate and An, Jing and Reed, John C and Huang, Ziwei}, + pages = {6413--6418}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.09.058} +} + +@article{dehnhardt_design_2010-1, + title = {{Design and synthesis of novel diaminoquinazolines with in vivo efficacy for beta-catenin/T-cell transcriptional factor 4 pathway inhibition}}, + author = {Dehnhardt, Christoph M and Venkatesan, Aranapakam M and Chen, Zecheng and Ayral-Kaloustian, Semiramis and Dos Santos, Osvaldo and Delos Santos, Efren and Curran, Kevin and Follettie, Max T and Diesl, Veronica and Lucas, Judy and Geng, Yi and Dejoy, Susan Quinn and Petersen, Rosanne and Chaudhary, Inder and Brooijmans, Natasja and Mansour, Tarek S and Arndt, Kim and Chen, Lei}, + pages = {897--910}, + volume = {53}, + doi = {10.1021/jm901370m} +} + +@article{dehnhardt_design_2010, + title = {{Design and Synthesis of Novel Diaminoquinazolines with in {\{}VivoEfficacy{\}} for {$\beta$}-Catenin/T-Cell Transcriptional Factor 4 Pathway Inhibition}}, + author = {Dehnhardt, Christoph M and Venkatesan, Aranapakam M and Chen, Zecheng and Ayral-Kaloustian, Semiramis and Dos Santos, Osvaldo and Delos Santos, Efren and Curran, Kevin and Follettie, Max T and Diesl, Veronica and Lucas, Judy and Geng, Yi and Dejoy, Susan Quinn and Petersen, Rosanne and Chaudhary, Inder and Brooijmans, Natasja and Mansour, Tarek S and Arndt, Kim and Chen, Lei}, + pages = {897--910}, + volume = {53}, + doi = {10.1021/jm901370m} +} + +@article{venhorst_design_2010, + title = {{Design of a High Fragment Efficiency Library by Molecular Graph Theory}}, + author = {Venhorst, Jennifer and N{\'{u}}{\~{n}}ez, Sara and Kruse, Chris G}, + pages = {499--503}, + volume = {1}, + doi = {10.1021/ml100163s} +} + +@article{de_la_vega_de_leon_design_2012, + title = {{Design of a Three-Dimensional Multitarget Activity Landscape.}}, + author = {de la Vega de Le{\'{o}}n, Antonio and Bajorath, Jürgen}, + doi = {10.1021/ci300444p} +} + +@article{dodd_design_2007, + title = {{Design of LFA-1 antagonists based on a 2,3-dihydro-1H-pyrrolizin-5(7aH)-one scaffold}}, + year = {2007}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Dodd, Dharmpal S. and Sheriff, Steven and Chang, Chieh Ying J. and Stetsko, Dawn K. and Phillips, Linda M. and Zhang, Yingru and Launay, Michele and Potin, Dominique and Vaccaro, Wayne and Poss, Michael A. and McKinnon, Murray and Barrish, Joel C. and Suchard, Suzanne J. and Murali Dhar, T. G.}, + number = {7}, + pages = {1908--1911}, + volume = {17}, + doi = {10.1016/j.bmcl.2007.01.036}, + issn = {0960894X}, + keywords = {2,3-Dihydro-1H-pyrrolizin-5-(7aH)-one, LFA-1 antagonists, LFA-1/ICAM interaction} +} + +@article{fry_design_2013, + title = {{Design of Libraries Targeting Protein-Protein Interfaces}}, + year = {2013}, + journal = {ChemMedChem}, + author = {Fry, David and Huang, Kuo Sen and DiLello, Paola and Mohr, Peter and M{\"{u}}ller, Klaus and So, Sung Sau and Harada, Takeo and Stahl, Martin and Vu, Binh and Mauser, Harald}, + number = {5}, + pages = {726--732}, + volume = {8}, + doi = {10.1002/cmdc.201200540}, + issn = {18607179}, + pmid = {23436619}, + keywords = {Library design, Pharmacophore searching, Protein-protein inhibition, Structure-based design} +} + +@article{segers_design_2007, + title = {{Design of protein membrane interaction inhibitors by virtual ligand screening, proof of concept with the C2 domain of factor V}}, + year = {2007}, + journal = {Proc Natl Acad Sci U S A}, + author = {Segers, K and Sperandio, O and Sack, M and Fischer, R and Miteva, M A and Rosing, J and Nicolaes, G A and Villoutreix, B O}, + number = {31}, + pages = {12697--12702}, + volume = {104}, + url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17646652}, + isbn = {0027-8424 (Print) 0027-8424 (Linking)}, + doi = {10.1073/pnas.0701051104}, + issn = {0027-8424}, + pmid = {17646652}, + keywords = {Binding Sites, Cell Membrane/*metabolism, Drug Evaluation, Preclinical, Factor V/antagonists {\&} inhibitors/*chemistry/genet, Humans, Inhibitory Concentration 50, Ligands, Models, Molecular, Protein Binding, Protein Structure, Tertiary, Titrimetry} +} + +@article{robinson_design_2009, + title = {{Design of protein-protein interaction inhibitors based on protein epitope mimetics}}, + author = {Robinson, John A}, + pages = {971--973}, + volume = {10}, + doi = {10.1002/cbic.200900055} +} + +@article{zobel_design_2006, + title = {{Design, synthesis, and biological activity of a potent Smac mimetic that sensitizes cancer cells to apoptosis by antagonizing IAPs.}}, + year = {2006}, + journal = {ACS chemical biology}, + author = {Zobel, Kerry and Wang, Lan and Varfolomeev, Eugene and Franklin, Matthew C. and Elliott, Linda O. and Wallweber, Heidi J.A. and Okawa, David C. and Flygare, John A. and Vucic, Domagoj and Fairbrother, Wayne J. and Deshayes, Kurt}, + number = {8}, + pages = {525--533}, + volume = {1}, + doi = {10.1021/cb600276q}, + issn = {15548937} +} + +@article{sun_design_2007, + title = {{Design, Synthesis, and Characterization of a Potent, Nonpeptide, Cell-Permeable, Bivalent Smac Mimetic That Concurrently Targets Both the {\{}BIR{\}}2 and {\{}BIR{\}}3 Domains in {\{}XIAP{\}}}}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Lu, Jianfeng and Meagher, Jennifer L and Yang, Chao-Yie and Qiu, Su and Tomita, York and Ueda, Yumi and Jiang, Sheng and Krajewski, Krzysztof and Roller, Peter P and Stuckey, Jeanne A and Wang, Shaomeng}, + pages = {15279--15294}, + volume = {129}, + doi = {10.1021/ja074725f} +} + +@article{sun_design_2006, + title = {{Design, Synthesis, and Evaluation of a Potent, Cell-Permeable, Conformationally Constrained Second Mitochondria Derived Activator of Caspase (Smac) Mimetic}}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Lu, Jianfeng and Qiu, Su and Yang, Chao-Yie and Gao, Wei and Meagher, Jennifer and Stuckey, Jeanne and Wang, Shaomeng}, + pages = {7916--7920}, + volume = {49}, + doi = {10.1021/jm061108d} +} + +@article{sun_design_2009, + title = {{Design, synthesis, and evaluation of potent, nonpeptidic mimetics of second mitochondria-derived activator of caspases}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Sun, Wei and Nikolovska-Coleska, Zaneta and Qin, Dongguang and Sun, Haiying and Yang, Chao Yie and Bai, Longchuang and Qiu, Su and Wang, You and Ma, Dawei and Wang, Shaomeng}, + number = {3}, + pages = {593--596}, + volume = {52}, + doi = {10.1021/jm801101z}, + issn = {00222623} +} + +@article{zhang_design_2008, + title = {{Design, Synthesis, and Evaluation of Tricyclic, Conformationally Constrained Small-Molecule Mimetics of Second Mitochondria-Derived Activator of Caspases}}, + author = {Zhang, Bin and Nikolovska-Coleska, Zaneta and Zhang, Yan and Bai, Longchuan and Qiu, Su and Yang, Chao-Yie and Sun, Haiying and Wang, Shaomeng and Wu, Yikang}, + pages = {7352--7355}, + volume = {51}, + doi = {10.1021/jm801146d} +} + +@article{feng_design_2010, + title = {{Design, synthesis, and interaction study of quinazoline-2(1 H)-thione derivatives as novel potential Bcl-x L inhibitors}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Feng, Yu and Ding, Xiao and Chen, Tao and Chen, Lili and Liu, Fang and Jia, Xu and Luo, Xiaomin and Shen, Xu and Chen, Kaixian and Jiang, Hualiang and Wang, Hui and Liu, Hong and Liu, Dongxiang}, + number = {9}, + pages = {3465--3479}, + volume = {53}, + doi = {10.1021/jm901004c}, + issn = {00222623} +} + +@article{sanchez_claros_detecting_2012, + title = {{Detecting mutually exclusive interactions in protein-protein interaction maps.}}, + author = {S{\'{a}}nchez Claros, Carmen and Tramontano, Anna}, + pages = {e38765}, + volume = {7}, + doi = {10.1371/journal.pone.0038765} +} + +@article{kenny_development_2003, + title = {{Development of a fluorescence polarization assay to screen for inhibitors of the FtsZ/ZipA interaction}}, + year = {2003}, + journal = {Analytical Biochemistry}, + author = {Kenny, Cynthia Hess and Ding, Weidong and Kelleher, Kerry and Benard, Susan and Dushin, Elizabeth Glasfeld and Sutherland, Alan G. and Mosyak, Lidia and Kriz, Ronald and Ellestad, George}, + number = {2}, + pages = {224--233}, + volume = {323}, + doi = {10.1016/j.ab.2003.08.033}, + issn = {00032697}, + keywords = {Fluorescence polarization, FtsZ, Phage display, Protein crystallography, Protein-protein interactions, ZipA} +} + +@article{zhang_development_2002, + title = {{Development of a high-throughput fluorescence polarization assay for Bcl-x(L).}}, + author = {Zhang, Haichao and Nimmer, Paul and Rosenberg, Saul H and Ng, Shi-Chung and Joseph, Mary}, + pages = {70--75}, + volume = {307} +} + +@article{valli_development_2013, + title = {{Development of a natural products database from the biodiversity of Brazil}}, + author = {Valli, M and dos Santos, R N and Figueira, L D and Nakajima, C H and Castro-Gamboa, I and Andricopulo, A D and Bolzani, V S}, + pages = {439--444}, + volume = {76}, + doi = {10.1021/np3006875}, + issn = {1520-6025 (Electronic) 0163-3864 (Linking)}, + keywords = {*Biodiversity, *Biological Products, Brazil, Databases, Factual, Internet, Molecular Structure} +} + +@article{kutzki_development_2002, + title = {{Development of a potent Bcl-x(L) antagonist based on alpha-helix mimicry}}, + author = {Kutzki, Olaf and Park, Hyung Soon and Ernst, Justin T and Orner, Brendan P and Yin, Hang and Hamilton, Andrew D}, + pages = {11838--11839}, + volume = {124} +} + +@article{wang_development_2008, + title = {{Development of dimeric modulators for anti-apoptotic Bcl-2 proteins}}, + year = {2008}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Wang, Liangyou and Kong, Fansen and Kokoski, Candis L. and Andrews, David W. and Xing, Chengguo}, + number = {1}, + pages = {236--240}, + volume = {18}, + doi = {10.1016/j.bmcl.2007.10.088}, + issn = {0960894X}, + keywords = {Antagonist, Apoptosis, BH3I-1, Bcl-2, Dimeric, Modulator, Monomeric, Potency} +} + +@article{sasaki_development_2012, + title = {{Development of live-cell imaging probes for monitoring histone modifications.}}, + author = {Sasaki, Kazuki and Ito, Akihiro and Yoshida, Minoru}, + pages = {1887--1892}, + volume = {20}, + doi = {10.1016/j.bmc.2012.01.018} +} + +@article{xing_development_2007, + title = {{Development of selective inhibitors for anti-apoptotic Bcl-2 proteins from {\{}BHI{\}}-1}}, + author = {Xing, Chengguo and Wang, Liangyou and Tang, XiaoHu and Sham, Yuk Y}, + pages = {2167--2176}, + volume = {15}, + doi = {10.1016/j.bmc.2006.12.020} +} + +@article{Schneider1999Scaffold-HoppingScreening, + title = {{'Scaffold-Hopping' by topological pharmacophore search: A contribution to virtual screening}}, + year = {1999}, + journal = {Angewandte Chemie - International Edition}, + author = {Schneider, Gisbert and Neidhart, Werner and Giller, Thomas and Schmid, Gerard}, + number = {19}, + pages = {2894--2896}, + volume = {38}, + doi = {10.1002/(SICI)1521-3773(19991004)38:19<2894::AID-ANIE2894>3.0.CO;2-F}, + issn = {14337851}, + pmid = {10540384}, + keywords = {Computer chemistry, Drug research, Structure-activity relationships, Virtual screening} +} + +@article{NoTitle, + title = {{(No Title)}}, + pmid = {24012996} +} + +@article{NoTitleb, + title = {{(No Title)}}, + pmid = {32228252} +} + +@article{Blvd, + title = {{*,{\$} , *,{\$} , 1,*, {\#},{\$} , 1,{\#} * {\#} {\$} ,}}, + author = {Blvd, Harry Hines}, + volume = {9} +} + +@article{Marechal2013124-OxadiazolesProteasome, + title = {{1,2,4-Oxadiazoles Identified by Virtual Screening and their Non-Covalent Inhibition of the Human 20S Proteasome}}, + year = {2013}, + journal = {Current Medicinal Chemistry}, + author = {Mar{\'{e}}chal, X. and Genin, E. and Qin, L. and Sperandio, O. and Montes, M. and Basse, N. and Richy, N. and Miteva, M.A. and Reboud-Ravaux, M. and Vidal, J. and Villoutreix, B.O.}, + number = {18}, + pages = {2351--2362}, + volume = {20}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=0929-8673&volume=20&issue=18&spage=2351}, + doi = {10.2174/0929867311320180006}, + issn = {09298673}, + keywords = {Chymotrypsin-like subsite S5 binding, Cytotoxicity, Non-covalent inhibitors, Oxadiazoles, Proteasome, Virtual screening} +} + +@article{Parks200514-Benzodiazepine-25-dionesSAR, + title = {{1,4-Benzodiazepine-2,5-diones as small molecule antagonists of the HDM2-p53 interaction: Discovery and SAR}}, + year = {2005}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Parks, Daniel J. and LaFrance, Louis V. and Calvo, Raul R. and Milkiewicz, Karen L. and Gupta, Varsha and Lattanze, Jennifer and Ramachandren, Kannan and Carver, Theodore E. and Petrella, Eugene C. and Cummings, Maxwell D. and Maguire, Diane and Grasberger, Bruce L. and Lu, Tianbao}, + number = {3}, + pages = {765--770}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.11.009}, + issn = {0960894X}, + keywords = {1,4-Benzodiazepine-2,5-diones, Fluorescence polarization peptide displacement ass, HDM2, Thermofluor, p53, p53-HDM2 interaction} +} + +@article{Wattanasin200314-Diazepane-2-onesLFA-1, + title = {{1,4-Diazepane-2-ones as novel inhibitors of LFA-1}}, + year = {2003}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Wattanasin, Sompong and Albert, Rainer and Ehrhardt, Claus and Roche, Didier and Sabio, Michael and Hommel, Ulrich and Welzenbach, Karl and Weitz-Schmidt, Gabriele}, + number = {3}, + pages = {499--502}, + volume = {13}, + doi = {10.1016/S0960-894X(02)00991-5}, + issn = {0960894X} +} + +@article{Ru20132Inhibitors, + title = {{2 ‑ Amino-3-(phenylsulfanyl)norbornane-2-carboxylate: An Appealing Sca ff old for the Design of Rac1 − Tiam1 Protein − Protein Interaction Inhibitors}}, + year = {2013}, + author = {Ru, Alessandro and Ferri, Nicola and Bernini, Sergio K and Ricci, Chiara and Corsini, Alberto and Ma, Irene and Clerici, Francesca and Contini, Alessandro and Venezian, Via}, + pages = {1--10} +} + +@article{Ruffoni20142-Amino-3-phenylsulfanylnorbornane-2-carboxylate:Inhibitors, + title = {{2-Amino-3-(phenylsulfanyl)norbornane-2-carboxylate: An appealing scaffold for the design of Rac1-Tiam1 protein-protein interaction inhibitors}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Ruffoni, Alessandro and Ferri, Nicola and Bernini, Sergio K. and Ricci, Chiara and Corsini, Alberto and Maffucci, Irene and Clerici, Francesca and Contini, Alessandro}, + number = {7}, + pages = {2953--2962}, + volume = {57}, + doi = {10.1021/jm401924s}, + issn = {15204804} +} + +@article{Tiberi20142-AminothiazolonesInhibitors, + title = {{2-Aminothiazolones as anti-hiv agents that act as gp120-cd4 inhibitors}}, + year = {2014}, + journal = {Antimicrobial Agents and Chemotherapy}, + author = {Tiberi, Marika and Tintori, Cristina and Ceresola, Elisa Rita and Fazi, Roberta and Zamperini, Claudio and Calandro, Pierpaolo and Franchi, Luigi and Selvaraj, Manikandan and Botta, Lorenzo and Sampaolo, Michela and Saita, Diego and Ferrarese, Roberto and Clementi, Massimo and Canducci, Filippo and Botta, Maurizio}, + number = {6}, + pages = {3043--3052}, + volume = {58}, + doi = {10.1128/AAC.02739-13}, + issn = {10986596} +} + +@article{Frantz20062005First, + title = {{2005 approvals: Safety first}}, + year = {2006}, + journal = {Nature Reviews Drug Discovery}, + author = {Frantz, Simon}, + number = {2}, + pages = {92--93}, + volume = {5}, + doi = {10.1038/nrd1973}, + issn = {1474-1776} +} + +@article{Owens20072006Niche., + title = {{2006 Drug Approvals: Finding the Niche.}}, + year = {2007}, + journal = {Nature reviews. Drug discovery}, + author = {Owens, Joanna}, + number = {2}, + pages = {99--101}, + volume = {6}, + doi = {10.1038/nrd2247}, + issn = {14741776} +} + +@article{Hughes20082007Flux., + title = {{2007 FDA drug approvals: a year of flux.}}, + year = {2008}, + journal = {Nature reviews. Drug discovery}, + author = {Hughes, Bethan}, + number = {2}, + pages = {107--109}, + volume = {7}, + doi = {10.1038/nrd2514}, + issn = {14741784} +} + +@article{Hughes20092008Approvals, + title = {{2008 FDA drug approvals}}, + year = {2009}, + journal = {Nature Reviews Drug Discovery}, + author = {Hughes, Bethan}, + number = {2}, + pages = {93--96}, + volume = {8}, + doi = {10.1038/nrd2813}, + issn = {14741776} +} + +@article{Hughes20102009Approvals, + title = {{2009 FDA drug approvals}}, + year = {2010}, + journal = {Nature Reviews Drug Discovery}, + author = {Hughes, Bethan}, + number = {2}, + pages = {89--92}, + volume = {9}, + doi = {10.1038/nrd3101}, + issn = {14741776} +} + +@article{Mullard20112010Approvals, + title = {{2010 FDA drug approvals}}, + year = {2011}, + journal = {Nature Reviews Drug Discovery}, + author = {Mullard, Asher}, + number = {2}, + pages = {82--85}, + volume = {10}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3370}, + doi = {10.1038/nrd3370}, + issn = {14741784} +} + +@article{Mullard20122011Approvals, + title = {{2011 FDA drug approvals}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Mullard, Asher}, + number = {2}, + pages = {91--94}, + volume = {11}, + doi = {10.1038/nrd3657}, + issn = {14741776} +} + +@article{Mullard20142013Approvals, + title = {{2013 FDA drug approvals}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + author = {Mullard, Asher}, + number = {2}, + pages = {85--89}, + volume = {13}, + doi = {10.1038/nrd4239}, + issn = {14741776} +} + +@article{Orthosteric2P2IMachine, + title = {{2P2I HUNTER : A Tool for Filtering Orthosteric Protein-Protein Interaction Modulators via a Dedicated Support Vector Machine}}, + author = {Orthosteric, Filtering and Modulators, Protein-protein Interaction and Support, Dedicated and Machine, Vector}, + pages = {1--12} +} + +@article{Hamon20132P2Ichem:Interactions, + title = {{2P2Ichem: Focused chemical libraries dedicated to orthosteric modulation of protein-protein interactions}}, + year = {2013}, + journal = {MedChemComm}, + author = {Hamon, Véronique and Brunel, Jean Michel and Combes, Sébastien and Basse, Marie Jeanne and Roche, Philippe and Morelli, Xavier}, + number = {5}, + pages = {797--809}, + volume = {4}, + doi = {10.1039/c3md00018d}, + issn = {20402503} +} + +@article{Basse20162P2IdbInteractions, + title = {{2P2Idb v2: Update of a structural database dedicated to orthosteric modulation of protein-protein interactions}}, + year = {2016}, + journal = {Database}, + author = {Basse, Marie Jeanne and Betzi, Stéphane and Morelli, Xavier and Roche, Philippe}, + volume = {2016}, + doi = {10.1093/database/baw007}, + issn = {17580463}, + language = {eng} +} + +@article{Hamon20142P2IHUNTER:Machine, + title = {{2P2IHUNTER: A tool for filtering orthosteric protein-protein interaction modulators via a dedicated support vector machine}}, + year = {2014}, + journal = {Journal of the Royal Society Interface}, + author = {Hamon, Véronique and Bourgeas, Raphael and Ducrot, Pierre and Theret, Isabelle and Xuereb, Laura and Basse, Marie Jeanne and Brunel, Jean Michel and Combes, Sebastien and Morelli, Xavier and Roche, Philippe}, + number = {90}, + volume = {11}, + doi = {10.1098/rsif.2013.0860}, + issn = {17425662}, + keywords = {Drug design, Filtering algorithm, Focused chemical library, Protein-protein interactions, Small molecule inhibitors, Support vector machine} +} + +@article{Ligands20113Acetyl-lysine-mimetic, + title = {{3 , 5-Dimethylisoxazoles Act As Acetyl-lysine-mimetic}}, + year = {2011}, + author = {Ligands, Bromodomain and Hewings, David S and Wang, Minghua and Philpott, Martin and Fedorov, Oleg and Uttarkar, Sagar and Filippakopoulos, Panagis and Picaud, Sarah and Vuppusetty, Chaitanya and Marsden, Brian and Knapp, Stefan and Conway, Stuart J and Heightman, Tom D}, + pages = {6761--6770} +} + +@article{Zhang20113-Thiomorpholin-8-oxo-8Stud, + title = {{3-Thiomorpholin-8-oxo-8 h -acenaphtho[1,2- b ]pyrrole-9-carbonitrile (S1) based molecules as potent, dual inhibitors of B-cell lymphoma 2 (Bcl-2) and myeloid cell leukemia sequence 1 (Mcl-1): Structure-based design and structure-activity relationship stud}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Zhang, Zhichao and Wu, Guiye and Xie, Feibo and Song, Ting and Chang, Xilong}, + number = {4}, + pages = {1101--1105}, + volume = {54}, + doi = {10.1021/jm101181u}, + issn = {15204804} +} + +@article{Zhang20113-Thiomorpholin-8-oxo-8Studb, + title = {{3-Thiomorpholin-8-oxo-8 h -acenaphtho[1,2- b ]pyrrole-9-carbonitrile (S1) based molecules as potent, dual inhibitors of B-cell lymphoma 2 (Bcl-2) and myeloid cell leukemia sequence 1 (Mcl-1): Structure-based design and structure-activity relationship stud}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Zhang, Zhichao and Wu, Guiye and Xie, Feibo and Song, Ting and Chang, Xilong}, + number = {4}, + pages = {1101--1105}, + volume = {54}, + doi = {10.1021/jm101181u}, + issn = {15204804} +} + +@article{Rodrigues2013:Inhibitors, + title = {{: A Biophysical Model for Predicting the Binding A ffi nity of Protein − Protein Interaction Inhibitors}}, + year = {2013}, + author = {Rodrigues, P G L M and Bonvin, Alexandre M J J} +} + +@article{Karimova1998APathway, + title = {{A bacterial two-hybrid system based on a reconstituted signal transduction pathway}}, + year = {1998}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Karimova, Gouzel and Pidoux, Josette and Ullmann, Agnes and Ladant, Daniel}, + doi = {10.1073/pnas.95.10.5752}, + issn = {00278424}, + pmid = {9576956} +} + +@article{Karimova1998APathwayb, + title = {{A bacterial two-hybrid system based on a reconstituted signal transduction pathway}}, + year = {1998}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Karimova, Gouzel and Pidoux, Josette and Ullmann, Agnes and Ladant, Daniel}, + number = {10}, + month = {5}, + pages = {5752--5756}, + volume = {95}, + publisher = {National Academy of Sciences}, + doi = {10.1073/pnas.95.10.5752}, + issn = {00278424}, + pmid = {9576956} +} + +@article{Blattermann2012AHeterotrimer, + title = {{A biased ligand for OXE-R uncouples G{$\alpha$} and G{$\beta$}{$\gamma$} signaling within a heterotrimer}}, + year = {2012}, + journal = {Nature Chemical Biology}, + author = {Bl{\"{a}}ttermann, Sefanie and Peters, Lucas and Ottersbach, Philipp Aaron and Bock, Andreas and Konya, Viktoria and Weaver, C. David and Gonzalez, Angel and Schr{\"{o}}der, Ralf and Tyagi, Rahul and Luschnig, Petra and G{\"{a}}b, Jürgen and Hennen, Stephanie and Ulven, Trond and Pardo, Leonardo and Mohr, Klaus and G{\"{u}}tschow, Michael and Heinemann, Akos and Kostenis, Evi}, + number = {7}, + pages = {631--638}, + volume = {8}, + doi = {10.1038/nchembio.962}, + issn = {15524469} +} + +@article{Kraft2013AFunctions, + title = {{A cell-based fascin bioassay identifies compounds with potential anti-metastasis or cognition-enhancing functions}}, + year = {2013}, + journal = {DMM Disease Models and Mechanisms}, + author = {Kraft, Robert and Kahn, Allon and Medina-Franco, José L. and Orlowski, Mikayla L. and Baynes, Cayla and Loṕez-Vallejo, Fabian and Barnard, Kobus and Maggiora, Gerald M. and Restifo, Linda L.}, + number = {1}, + pages = {217--235}, + volume = {6}, + doi = {10.1242/dmm.008243}, + issn = {17548403} +} + +@article{Rosania2007AKnowledge, + title = {{A cheminformatic toolkit for mining biomedical knowledge}}, + year = {2007}, + journal = {Pharmaceutical Research}, + author = {Rosania, Gus R. and Crippen, Gordon and Woolf, Peter and States, David and Shedden, Kerby}, + number = {10}, + pages = {1791--1802}, + volume = {24}, + isbn = {1109500792855}, + doi = {10.1007/s11095-007-9285-5}, + issn = {07248741}, + keywords = {Bioactivity fingerprints, Bioinformatics, Chemical genetics, Chemical genomics, Chemical space, Cheminformatics, Data mining, High throughput screening, Mathematical modeling, QSAR} +} + +@article{Glickman2002AReceptors, + title = {{A comparison of ALPHAscreen, TR-FRET, and TRF as assay methods for FXR nuclear receptors}}, + year = {2002}, + journal = {Journal of Biomolecular Screening}, + author = {Glickman, J. Fraser and Wu, Xiang and Mercuri, Robert and Illy, Chantal and Bowen, Benjamin R. and He, Yang and Sills, Matthew}, + number = {1}, + pages = {3--10}, + volume = {7}, + doi = {10.1089/108705702753520288}, + issn = {10870571} +} + +@article{Gao2013AProteins, + title = {{A Comprehensive Survey of Small-Molecule Binding Pockets in Proteins}}, + year = {2013}, + journal = {PLoS Computational Biology}, + author = {Gao, Mu and Skolnick, Jeffrey}, + number = {10}, + volume = {9}, + doi = {10.1371/journal.pcbi.1003302}, + issn = {1553734X} +} + +@article{Hu2010AInhibitors, + title = {{A computational analysis of the binding model of MDM2 with inhibitors}}, + year = {2010}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Hu, Guodong and Wang, Dunyou and Liu, Xinguo and Zhang, Qinggang}, + number = {8}, + pages = {687--697}, + volume = {24}, + isbn = {1082201093660}, + doi = {10.1007/s10822-010-9366-0}, + issn = {0920654X}, + keywords = {Binding model, MDM2, MM-PBSA, Molecular dynamics simulation} +} + +@article{Li1997AImmunotherapeutics, + title = {{A computer screening approach to immunoglobulin superfamily structures and interactions: Discovery of small non-peptidic CD4 inhibitors as novel immunotherapeutics}}, + year = {1997}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Li, Song and Gao, Jimin and Satoh, Takashi and Friedman, Thea M. and Edling, Andrea E. and Koch, Ute and Choksi, Swati and Han, Xiaobing and Korngold, Robert and Huang, Ziwei}, + number = {1}, + pages = {73--78}, + volume = {94}, + doi = {10.1073/pnas.94.1.73}, + issn = {00278424}, + keywords = {autoimmune diseases, drug design, molecular data base, organ transplantation, protein interactions} +} + +@article{Xu2006AInteractions, + title = {{A credit-card library approach for disrupting protein-protein interactions}}, + year = {2006}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Xu, Yang and Shi, Jin and Yamamoto, Noboru and Moss, Jason A. and Vogt, Peter K. and Janda, Kim D.}, + number = {8}, + pages = {2660--2673}, + volume = {14}, + doi = {10.1016/j.bmc.2005.11.052}, + issn = {09680896}, + keywords = {Credit-card library, Myc-Max, Oncogenic transformation, Protein-protein interactions, Transcriptional regulation} +} + +@article{Bucci2010ABiology, + title = {{A decade of chemical biology}}, + year = {2010}, + journal = {Nature Chemical Biology}, + author = {Bucci, Mirella and Goodman, Catherine and Sheppard, Terry L.}, + number = {12}, + pages = {847--854}, + volume = {6}, + doi = {10.1038/nchembio.489}, + issn = {15524469} +} + +@article{Stokes2020ADiscovery, + title = {{A Deep Learning Approach to Antibiotic Discovery}}, + year = {2020}, + journal = {Cell}, + author = {Stokes, Jonathan M. and Yang, Kevin and Swanson, Kyle and Jin, Wengong and Cubillos-Ruiz, Andres and Donghia, Nina M. and MacNair, Craig R. and French, Shawn and Carfrae, Lindsey A. and Bloom-Ackerman, Zohar and Tran, Victoria M. and Chiappino-Pepe, Anush and Badran, Ahmed H. and Andrews, Ian W. and Chory, Emma J. and Church, George M. and Brown, Eric D. and Jaakkola, Tommi S. and Barzilay, Regina and Collins, James J.}, + doi = {10.1016/j.cell.2020.01.021}, + issn = {10974172}, + pmid = {32084340}, + keywords = {antibiotic resistance, antibiotic tolerance, antibiotics, drug discovery, machine learning} +} + +@article{Arnaud2010AAnemia, + title = {{A dominant mutation in the gene encoding the erythroid transcription factor KLF1 causes a congenital dyserythropoietic anemia}}, + year = {2010}, + journal = {American Journal of Human Genetics}, + author = {Arnaud, Lionel and Saison, Carole and Helias, Virginie and Lucien, Nicole and Steschenko, Dominique and Giarratana, Marie Catherine and Prehu, Claude and Foliguet, Bernard and Montout, Lory and De Brevern, Alexandre G. and Francina, Alain and Ripoche, Pierre and Fenneteau, Odile and Da Costa, Lydie and Peyrard, Thierry and Coghlan, Gail and Illum, Niels and Birgens, Henrik and Tamary, Hannah and Iolascon, Achille and Delaunay, Jean and Tchernia, Gil and Cartron, Jean Pierre}, + number = {5}, + pages = {721--727}, + volume = {87}, + publisher = {The American Society of Human Genetics}, + url = {http://dx.doi.org/10.1016/j.ajhg.2010.10.010}, + doi = {10.1016/j.ajhg.2010.10.010}, + issn = {00029297} +} + +@article{Caporuscio2009AInteractions, + title = {{A dynamic target-based pharmacophoric model mapping the CD4 binding site on HIV-1 gp120 to identify new inhibitors of gp120-CD4 protein-protein interactions}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Caporuscio, Fabiana and Tafi, Andrea and Gonz{\'{a}}lez, Emmanuel and Manetti, Fabrizio and Est{\'{e}}, José A. and Botta, Maurizio}, + number = {21}, + pages = {6087--6091}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.09.029}, + issn = {0960894X}, + keywords = {Pharmacophore modeling, Phe43 cavity, Protein-protein interactions, Structure-based drug design, gp120-CD4 interactions} +} + +@article{Caporuscio2009AInteractionsb, + title = {{A dynamic target-based pharmacophoric model mapping the CD4 binding site on HIV-1 gp120 to identify new inhibitors of gp120-CD4 protein-protein interactions}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Caporuscio, Fabiana and Tafi, Andrea and Gonz{\'{a}}lez, Emmanuel and Manetti, Fabrizio and Est{\'{e}}, José A. and Botta, Maurizio}, + number = {21}, + pages = {6087--6091}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.09.029}, + issn = {0960894X}, + keywords = {Pharmacophore modeling, Phe43 cavity, Protein-protein interactions, Structure-based drug design, gp120-CD4 interactions} +} + +@article{Tsuganezawa2013AP53, + title = {{A fluorescent-based high-throughput screening assay for small molecules that inhibit the interaction of MdmX with p53}}, + year = {2013}, + journal = {Journal of Biomolecular Screening}, + author = {Tsuganezawa, Keiko and Nakagawa, Yukari and Kato, Miki and Taruya, Shigenao and Takahashi, Fumio and Endoh, Morio and Utata, Rei and Mori, Masumi and Ogawa, Naoko and Honma, Teruki and Yokoyama, Shigeyuki and Hashizume, Yoshinobu and Aoki, Masaaki and Kasai, Takuma and Kigawa, Takanori and Kojima, Hirotatsu and Okabe, Takayoshi and Nagano, Tetsuo and Tanaka, Akiko}, + number = {2}, + pages = {191--198}, + volume = {18}, + doi = {10.1177/1087057112460729}, + issn = {10870571}, + keywords = {Mdm2, MdmX, fluorescence, p53, protein-protein interaction} +} + +@article{Risso2018AData, + title = {{A general and flexible method for signal extraction from single-cell RNA-seq data}}, + year = {2018}, + journal = {Nature Communications}, + author = {Risso, Davide and Perraudeau, Fanny and Gribkova, Svetlana and Dudoit, Sandrine and Vert, Jean-Philippe}, + number = {1}, + month = {12}, + pages = {284}, + volume = {9}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/29348443 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC5773593 http://www.nature.com/articles/s41467-017-02554-5}, + doi = {10.1038/s41467-017-02554-5}, + issn = {2041-1723}, + pmid = {29348443} +} + +@article{Clackson1995AInterface, + title = {{A hot spot of binding energy in a hormone-receptor interface}}, + year = {1995}, + journal = {Science}, + author = {Clackson, Tim and Wells, James A.}, + number = {5196}, + pages = {383--386}, + volume = {267}, + doi = {10.1126/science.7529940}, + issn = {00368075}, + pmid = {7529940} +} + +@incollection{Villoutreix2013AInhibitors, + title = {{A Leap into the Chemical Space of Protein-Protein Interaction Inhibitors}}, + year = {2013}, + booktitle = {Protein-Protein Interactions in Drug Discovery}, + author = {Villoutreix, Bruno O. and Labb{\'{e}}, C. and Lagorce, David and Laconde, Guillaume and Sperandio, Olivier}, + number = {30}, + pages = {63--83}, + volume = {56}, + isbn = {9783527648207}, + doi = {10.1002/9783527648207.ch4}, + issn = {13816128}, + pmid = {22650260}, + keywords = {Allosteric modulation, Chemical space, Inhibitor, Interface, Orthosteric modulation, Protein-protein interaction} +} + +@incollection{Villoutreix2013AInhibitorsb, + title = {{A Leap into the Chemical Space of Protein-Protein Interaction Inhibitors}}, + year = {2013}, + booktitle = {Protein-Protein Interactions in Drug Discovery}, + author = {Villoutreix, Bruno O. and Labb{\'{e}}, C. and Lagorce, David and Laconde, Guillaume and Sperandio, Olivier}, + pages = {63--83}, + volume = {56}, + isbn = {9783527648207}, + doi = {10.1002/9783527648207.ch4}, + issn = {13816128}, + pmid = {22650260}, + keywords = {Allosteric modulation, Chemical space, Inhibitor, Interface, Orthosteric modulation, Protein-protein interaction} +} + +@incollection{Villoutreix2013AInhibitorsc, + title = {{A Leap into the Chemical Space of Protein-Protein Interaction Inhibitors}}, + year = {2013}, + booktitle = {Protein-Protein Interactions in Drug Discovery}, + author = {Villoutreix, Bruno O. and Labb{\'{e}}, C. and Lagorce, David and Laconde, Guillaume and Sperandio, Olivier}, + month = {6}, + pages = {63--83}, + volume = {56}, + isbn = {9783527648207}, + doi = {10.1002/9783527648207.ch4}, + keywords = {Allosteric modulation, Chemical space, Inhibitor, Interface, Orthosteric modulation, Protein-protein interaction}, + language = {English} +} + +@article{Villoutreix2013AInhibitorsd, + title = {{A Leap into the Chemical Space of Protein-Protein Interaction Inhibitors}}, + year = {2013}, + journal = {Protein-Protein Interactions in Drug Discovery}, + author = {Villoutreix, Bruno O. and Labb{\'{e}}, C. and Lagorce, David and Laconde, Guillaume and Sperandio, Olivier}, + pages = {63--83}, + volume = {56}, + isbn = {9783527648207}, + doi = {10.1002/9783527648207.ch4}, + keywords = {Allosteric modulation, Chemical space, Inhibitor, Interface, Orthosteric modulation, Protein-protein interaction} +} + +@article{ALinks:, + title = {{A list of interesting links:}} +} + +@inproceedings{Jupp2015AEMBL-EBI, + title = {{A new ontology lookup service at EMBL-EBI}}, + year = {2015}, + booktitle = {CEUR Workshop Proceedings}, + author = {Jupp, Simon and Burdett, Tony and Malone, James and Leroy, Catherine and Pearce, Matt and McMurry, Julie and Parkinson, Helen}, + issn = {16130073} +} + +@inproceedings{Jupp2015AEMBL-EBIb, + title = {{A new ontology lookup service at EMBL-EBI}}, + year = {2015}, + booktitle = {CEUR Workshop Proceedings}, + author = {Jupp, Simon and Burdett, Tony and Malone, James and Leroy, Catherine and Pearce, Matt and McMurry, Julie and Parkinson, Helen}, + pages = {118--119}, + volume = {1546}, + issn = {16130073} +} + +@article{Gustafsson2004AChallenge, + title = {{A new oral anticoagulant: The 50-year challenge}}, + year = {2004}, + journal = {Nature Reviews Drug Discovery}, + author = {Gustafsson, David and Bylund, Ruth and Antonsson, Thomas and Nilsson, Ingemar and Nystr{\"{o}}m, Jan Erik and Eriksson, Ulf and Bredberg, Ulf and Teger-Nilsson, Ann Catrine}, + number = {8}, + pages = {649--659}, + volume = {3}, + doi = {10.1038/nrd1466}, + issn = {14741776} +} + +@article{Chen2012AInactivation, + title = {{A novel obatoclax derivative, SC-2001, induces apoptosis in hepatocellular carcinoma cells through SHP-1-dependent STAT3 inactivation}}, + year = {2012}, + journal = {Cancer Letters}, + author = {Chen, Kuen Feng and Su, Jung Chen and Liu, Chun Yu and Huang, Jui Wen and Chen, Kuei Chiu and Chen, Wei Lin and Tai, Wei Tien and Shiau, Chung Wai}, + number = {1}, + pages = {27--35}, + volume = {321}, + publisher = {Elsevier Ireland Ltd}, + url = {http://dx.doi.org/10.1016/j.canlet.2012.03.023}, + doi = {10.1016/j.canlet.2012.03.023}, + issn = {03043835}, + keywords = {HCC, Obatoclax, SC-2001, SHP-1, STAT3} +} + +@article{Zinzalla2010ASignalling, + title = {{A novel small-molecule inhibitor of IL-6 signalling}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Zinzalla, Giovanna and Haque, Mohammad R. and Piku Basu, B. and Anderson, John and Kaye, Samantha L. and Haider, Shozeb and Hasan, Fyeza and Antonow, Dyeison and Essex, Samantha and Rahman, Khondaker M. and Palmer, Jonathan and Morgenstern, Daniel and Wilderspin, Andrew F. and Neidle, Stephen and Thurston, David E.}, + number = {23}, + pages = {7029--7032}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.09.117}, + issn = {0960894X}, + keywords = {IL-6 signalling, Inhibitor, STAT3, Small molecule} +} + +@article{Schimmer2008AMalignancies, + title = {{A phase i study of the pan bcl-2FamilyInhibitor obatoclax mesylate in patients with advanced hematologic malignancies}}, + year = {2008}, + journal = {Clinical Cancer Research}, + author = {Schimmer, Aaron D. and O'Brien, Susan and Kantarjian, Hagop and Brandwein, Joseph and Cheson, Bruce D. and Minden, Mark D. and Yee, Karen and Ravandi, Farhad and Giles, Francis and Schuh, Andre and Gupta, Vikas and Andreeff, Michael and Koller, Charles and Chang, Hong and Kamel-Reid, Suzanne and Berger, Mark and Viallet, Jean and Borthakur, Gautam}, + number = {24}, + pages = {8295--8301}, + volume = {14}, + doi = {10.1158/1078-0432.CCR-08-0999}, + issn = {10780432} +} + +@article{Cai+2011AQianAccess, + title = {{A potent and orally active antagonist of multiple inhibitor of apoptosis proteins (IAPs) (SM-406/AT-406) in clinical development for cancer treatment QianAccess}}, + year = {2011}, + journal = {Biophysical Chemistry}, + author = {Cai+, Qian and Sun+, Haiying and Peng+, Yuefeng and Lu+, Jianfeng and Zaneta Nikolovska-Coleska+, Donna McEachern+ and Liu+, Liu and Qiu+, Su and Yang+, Chao-Yie and Miller+, Rebecca and Yi+, Han and Zhang{$\Delta$}, Tao and Sun{$\Delta$}, Duxin and Kang{\S}, Sanmao and Guo{\S}, Ming and Leopold{\S}, Lance and Yang{\S}, Dajun and Wang+, Shaomeng}, + number = {5}, + pages = {2432--2437}, + volume = {257}, + isbn = {6176321972}, + doi = {10.1016/j.immuni.2010.12.017.Two-stage}, + issn = {15378276}, + pmid = {1000000221}, + arxivId = {NIHMS150003} +} + +@article{Mareuil2017AServices, + title = {{A public Galaxy platform at Pasteur used as an execution engine for web services}}, + year = {2017}, + journal = {F1000Research}, + author = {Mareuil, Fabien and Doppelt-Azeroual, Olivia and M{\'{e}}nager, Hervé}, + pages = {157022}, + volume = {6}, + url = {https://f1000research.com/posters/6-1030}, + doi = {10.7490/F1000RESEARCH.1114334.1} +} + +@article{No1970AAttempts, + title = {{A QUANTUM-CHEA ' iICAL APPROACH TO THE CHEMICAL DECINITION OF AROtiiATICITY J . Kruseewskl a / and T . I {\%}. Krygowskl b ' a / Dept . of Physical Chemlstry , Univ . of Ebdk , Poland Recently , the problem of aromaticlty In general as well as some attempts }}, + year = {1970}, + author = {No, Tetrahedron Letters and Press, Pergamn and Britain, Great}, + number = {4} +} + +@article{Baskin2016ADiscovery, + title = {{A renaissance of neural networks in drug discovery}}, + year = {2016}, + journal = {Expert Opinion on Drug Discovery}, + author = {Baskin, Igor I. and Winkler, David and Tetko, Igor V.}, + number = {8}, + month = {8}, + pages = {785--795}, + volume = {11}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/27295548 http://www.tandfonline.com/doi/full/10.1080/17460441.2016.1201262}, + doi = {10.1080/17460441.2016.1201262}, + issn = {1746-0441}, + pmid = {27295548}, + keywords = {Deep learning, neural network ensembles, neural networks, overfitting, structure-activity relationships} +} + +@article{Ndubaku2009ARTICLE, + title = {{A RTICLE}}, + year = {2009}, + author = {Ndubaku, Chudi and Varfolomeev, Eugene and Wang, Lan and Zobel, Kerry and Lau, Kevin and Elliott, Linda O and Maurer, Brigitte and Fedorova, Anna V and Dynek, Jasmin N and Koehler, Michael and Hymowitz, Sarah G and Tsui, Vickie and Deshayes, Kurt and Fairbrother, Wayne J and Flygare, John A and Vucic, Domagoj}, + number = {7}, + pages = {557--566}, + volume = {4} +} + +@article{Smac2006ARTICLE, + title = {{A RTICLE}}, + year = {2006}, + author = {Smac, Potent and That, Mimetic and Cancer, Sensitizes}, + number = {8}, + pages = {525--534}, + volume = {1} +} + +@article{Gordon2020ADrug-Repurposing, + title = {{A SARS-CoV-2-Human Protein-Protein Interaction Map Reveals Drug Targets and Potential Drug-Repurposing}}, + year = {2020}, + journal = {bioRxiv}, + author = {Gordon, David E and Jang, Gwendolyn M and Bouhaddou, Mehdi and Xu, Jiewei and Obernier, Kirsten and O’Meara, Matthew J and Guo, Jeffrey Z and Swaney, Danielle L and Tummino, Tia A and Huettenhain, Ruth and Kaake, Robyn M and Richards, Alicia L and Tutuncuoglu, Beril and Foussard, Helene and Batra, Jyoti and Haas, Kelsey and Modak, Maya and Kim, Minkyu and Haas, Paige and Polacco, Benjamin J and Braberg, Hannes and Fabius, Jacqueline M and Eckhardt, Manon and Soucheray, Margaret and Bennett, Melanie J and Cakir, Merve and McGregor, Michael J and Li, Qiongyu and Naing, Zun Zar Chi and Zhou, Yuan and Peng, Shiming and Kirby, Ilsa T and Melnyk, James E and Chorba, John S and Lou, Kevin and Dai, Shizhong A and Shen, Wenqi and Shi, Ying and Zhang, Ziyang and Barrio-Hernandez, Inigo and Memon, Danish and Hernandez-Armenta, Claudia and Mathy, Christopher J P and Perica, Tina and Pilla, Kala B and Ganesan, Sai J and Saltzberg, Daniel J and Ramachandran, Rakesh and Liu, Xi and Rosenthal, Sara B and Calviello, Lorenzo and Venkataramanan, Srivats and Liboy-Lugo, Jose and Lin, Yizhu and Wankowicz, Stephanie A and Bohn, Markus and Sharp, Phillip P and Trenker, Raphael and Young, Janet M and Cavero, Devin A and Hiatt, Joseph and Roth, Theodore L and Rathore, Ujjwal and Subramanian, Advait and Noack, Julia and Hubert, Mathieu and Roesch, Ferdinand and Vallet, Thomas and Meyer, Björn and White, Kris M and Miorin, Lisa and Rosenberg, Oren S and Verba, Kliment A and Agard, David and Ott, Melanie and Emerman, Michael and Ruggero, Davide and Garc{\'{i}}a-Sastre, Adolfo and Jura, Natalia and von Zastrow, Mark and Taunton, Jack and Ashworth, Alan and Schwartz, Olivier and Vignuzzi, Marco and d’Enfert, Christophe and Mukherjee, Shaeri and Jacobson, Matt and Malik, Harmit S and Fujimori, Danica G and Ideker, Trey and Craik, Charles S and Floor, Stephen and Fraser, James S and Gross, John and Sali, Andrej and Kortemme, Tanja and Beltrao, Pedro and Shokat, Kevan and Shoichet, Brian K and Krogan, Nevan J}, + month = {1}, + pages = {2020.03.22.002386}, + url = {http://biorxiv.org/content/early/2020/03/27/2020.03.22.002386.abstract}, + doi = {10.1101/2020.03.22.002386} +} + +@article{Kruidenier2012AResponse, + title = {{A selective jumonji H3K27 demethylase inhibitor modulates the proinflammatory macrophage response}}, + year = {2012}, + journal = {Nature}, + author = {Kruidenier, Laurens and Chung, Chun Wa and Cheng, Zhongjun and Liddle, John and Che, Kahing and Joberty, Gerard and Bantscheff, Marcus and Bountra, Chas and Bridges, Angela and Diallo, Hawa and Eberhard, Dirk and Hutchinson, Sue and Jones, Emma and Katso, Roy and Leveridge, Melanie and Mander, Palwinder K. and Mosley, Julie and Ramirez-Molina, Cesar and Rowland, Paul and Schofield, Christopher J. and Sheppard, Robert J. and Smith, Julia E. and Swales, Catherine and Tanner, Robert and Thomas, Pamela and Tumber, Anthony and Drewes, Gerard and Oppermann, Udo and Patel, Dinshaw J. and Lee, Kevin and Wilson, David M.}, + number = {7411}, + pages = {404--408}, + volume = {488}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nature11262}, + doi = {10.1038/nature11262}, + issn = {00280836} +} + +@article{Kruidenier2012AResponseb, + title = {{A selective jumonji H3K27 demethylase inhibitor modulates the proinflammatory macrophage response}}, + year = {2012}, + journal = {Nature}, + author = {Kruidenier, Laurens and Chung, Chun Wa and Cheng, Zhongjun and Liddle, John and Che, Kahing and Joberty, Gerard and Bantscheff, Marcus and Bountra, Chas and Bridges, Angela and Diallo, Hawa and Eberhard, Dirk and Hutchinson, Sue and Jones, Emma and Katso, Roy and Leveridge, Melanie and Mander, Palwinder K. and Mosley, Julie and Ramirez-Molina, Cesar and Rowland, Paul and Schofield, Christopher J. and Sheppard, Robert J. and Smith, Julia E. and Swales, Catherine and Tanner, Robert and Thomas, Pamela and Tumber, Anthony and Drewes, Gerard and Oppermann, Udo and Patel, Dinshaw J. and Lee, Kevin and Wilson, David M.}, + number = {7411}, + pages = {404--408}, + volume = {488}, + doi = {10.1038/nature11262}, + issn = {00280836} +} + +@article{Anders2013ASurface, + title = {{A semisynthetic fusicoccane stabilizes a protein-protein interaction and enhances the expression of K+ channels at the cell surface}}, + year = {2013}, + journal = {Chemistry {\&} Biology}, + author = {Anders, Carolin and Higuchi, Yusuke and Koschinsky, Kristin and Bartel, Maria and Schumacher, Benjamin and Thiel, Philipp and Nitta, Hajime and Preisig-M{\"{u}}ller, Regina and Schlichth{\"{o}}rl, Günter and Renigunta, Vijay and Ohkanda, Junko and Daut, Jürgen and Kato, Nobuo and Ottmann, Christian}, + number = {4}, + month = {4}, + pages = {583--593}, + volume = {20}, + doi = {10.1016/j.chembiol.2013.03.015}, + issn = {1879-1301}, + language = {eng} +} + +@article{Erkizan2009ASarcoma, + title = {{A small molecule blocking oncogenic protein EWS-FLI1 interaction with RNA helicase A inhibits growth of Ewing's sarcoma}}, + year = {2009}, + journal = {Nature Medicine}, + author = {Erkizan, Hayriye V. and Kong, Yali and Merchant, Melinda and Schlottmann, Silke and Barber-Rotenberg, Julie S. and Yuan, Linshan and Abaan, Ogan D. and Chou, Tsu Hang and Dakshanamurthy, Sivanesan and Brown, Milton L. and Ren, Aykut and Toretsky, Jeffrey A.}, + number = {7}, + pages = {750--756}, + volume = {15}, + doi = {10.1038/nm.1983}, + issn = {10788956} +} + +@article{Cerchietti2010AVivo, + title = {{A Small-Molecule Inhibitor of BCL6 Kills DLBCL Cells In Vitro and In Vivo}}, + year = {2010}, + journal = {Cancer Cell}, + author = {Cerchietti, Leandro C. and Ghetu, Alexandru F. and Zhu, Xiao and Da Silva, Gustavo F. and Zhong, Shijun and Matthews, Marilyn and Bunting, Karen L. and Polo, Jose M. and Far{\`{e}}s, Christophe and Arrowsmith, Cheryl H. and Yang, Shao Ning and Garcia, Monica and Coop, Andrew and MacKerell, Alexander D. and Priv{\'{e}}, Gilbert G. and Melnick, Ari}, + number = {4}, + pages = {400--411}, + volume = {17}, + doi = {10.1016/j.ccr.2009.12.050}, + issn = {15356108}, + keywords = {CELLCYCLE, CHEMBIO} +} + +@article{Tse2008ABT-263:Inhibitor, + title = {{ABT-263: A potent and orally bioavailable Bcl-2 family inhibitor}}, + year = {2008}, + journal = {Cancer Research}, + author = {Tse, Christin and Shoemaker, Alexander R. and Adickes, Jessica and Anderson, Mark G. and Chen, Jun and Jin, Sha and Johnson, Eric F. and Marsh, Kennan C. and Mitten, Michael J. and Nimmer, Paul and Roberts, Lisa and Tahir, Stephen K. and Xiao, Yu and Yang, Xiufen and Zhang, Haichao and Fesik, Stephen and Rosenberg, Saul H. and Elmore, Steven W.}, + number = {9}, + pages = {3421--3428}, + volume = {68}, + doi = {10.1158/0008-5472.CAN-07-5836}, + issn = {00085472} +} + +@article{Kim2012AcceleratedInhibitor, + title = {{Accelerated disassembly of IgE-receptor complexes by a disruptive macromolecular inhibitor}}, + year = {2012}, + journal = {Nature}, + author = {Kim, Beomkyu and Eggel, Alexander and Tarchevskaya, Svetlana S. and Vogel, Monique and Prinz, Heino and Jardetzky, Theodore S.}, + number = {7425}, + pages = {613--617}, + volume = {491}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nature11546}, + doi = {10.1038/nature11546}, + issn = {00280836} +} + +@article{Levatic2013AccurateScreen, + title = {{Accurate models for P-gp drug recognition induced from a cancer cell line cytotoxicity screen}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Levati{\'{c}}, Jurica and {\'{C}}urak, Jasna and Kralj, Marijeta and {\v{S}}muc, Tomislav and Osmak, Maja and Supek, Fran}, + number = {14}, + pages = {5691--5708}, + volume = {56}, + doi = {10.1021/jm400328s}, + issn = {00222623} +} + +@article{Cruz-Monteagudo2014ActivityHyde, + title = {{Activity cliffs in drug discovery: Dr Jekyll or Mr Hyde?}}, + year = {2014}, + journal = {Drug Discovery Today}, + author = {Cruz-Monteagudo, Maykel and Medina-Franco, José L. and P{\'{e}}rez-Castillo, Yunierkis and Nicolotti, Orazio and Cordeiro, M. Natália D.S. and Borges, Fernanda}, + number = {8}, + pages = {1069--1080}, + volume = {19}, + doi = {10.1016/j.drudis.2014.02.003}, + issn = {18785832} +} + +@article{Shoemaker2008ActivityModels, + title = {{Activity of the Bcl-2 family inhibitor ABT-263 in a panel of small cell lung cancer xenograft models}}, + year = {2008}, + journal = {Clinical Cancer Research}, + author = {Shoemaker, Alex R. and Mitten, Michael J. and Adickes, Jessica and Ackler, Scott and Refici, Marion and Ferguson, Debra and Oleksijew, Anatol and O'Connor, Jacqueline M. and Wang, Baole and Frost, David J. and Bauch, Joy and Marsh, Kennan and K.tahir, Steven and Yang, Xiufen and Tse, Christin and Fesik, Stephen W. and Rosenberg, Saul H. and Elmore, Steven W.}, + number = {11}, + pages = {3268--3277}, + volume = {14}, + doi = {10.1158/1078-0432.CCR-07-4622}, + issn = {10780432} +} + +@article{Ferreira2019ADMETDiscovery., + title = {{ADMET modeling approaches in drug discovery.}}, + year = {2019}, + journal = {Drug discovery today}, + author = {Ferreira, Leonardo L G and Andricopulo, Adriano D}, + month = {3}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1359644618303301 http://www.ncbi.nlm.nih.gov/pubmed/30890362}, + doi = {10.1016/j.drudis.2019.03.015}, + issn = {1878-5832}, + pmid = {30890362} +} + +@article{Maingot2013Aggrecanase-2Group, + title = {{Aggrecanase-2 inhibitors based on the acylthiosemicarbazide zinc-binding group}}, + year = {2013}, + journal = {European Journal of Medicinal Chemistry}, + author = {Maingot, L. and Elbakali, J. and Dumont, J. and Bosc, D. and Cousaert, N. and Urban, A. and Deglane, G. and Villoutreix, B. and Nagase, H. and Sperandio, O. and Leroux, F. and Deprez, B. and Deprez-Poulain, R.}, + number = {}, + volume = {69}, + doi = {10.1016/j.ejmech.2013.08.027}, + issn = {02235234}, + keywords = {Acylthiosemicarbazide, Aggrecanase, Library} +} + +@article{Jensen2008Aliskiren:Treatment, + title = {{Aliskiren: The first renin inhibitor for clinical treatment}}, + year = {2008}, + journal = {Nature Reviews Drug Discovery}, + author = {Jensen, Chris and Herold, Peter and Brunner, Hans Rudolf}, + number = {5}, + pages = {399--410}, + volume = {7}, + doi = {10.1038/nrd2550}, + issn = {14741776} +} + +@article{Venkatesan2009AnMapping, + title = {{An empirical framework for binary interactome mapping}}, + year = {2009}, + journal = {Nature Methods}, + author = {Venkatesan, Kavitha and Rual, Jean François and Vazquez, Alexei and Stelzl, Ulrich and Lemmens, Irma and Hirozane-Kishikawa, Tomoko and Hao, Tong and Zenkner, Martina and Xin, Xiaofeng and Goh, Kwang Il and Yildirim, Muhammed A. and Simonis, Nicolas and Heinzmann, Kathrin and Gebreab, Fana and Sahalie, Julie M. and Cevik, Sebiha and Simon, Christophe and de Smet, Anne Sophie and Dann, Elizabeth and Smolyar, Alex and Vinayagam, Arunachalam and Yu, Haiyuan and Szeto, David and Borick, Heather and Dricot, Amélie and Klitgord, Niels and Murray, Ryan R. and Lin, Chenwei and Lalowski, Maciej and Timm, Jan and Rau, Kirstin and Boone, Charles and Braun, Pascal and Cusick, Michael E. and Roth, Frederick P. and Hill, David E. and Tavernier, Jan and Wanker, Erich E. and Barab{\'{a}}si, Albert László and Vidal, Marc}, + number = {1}, + month = {1}, + pages = {83--90}, + volume = {6}, + url = {http://www.nature.com/doifinder/10.1038/nmeth.1280 http://www.ncbi.nlm.nih.gov/pubmed/19060904 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC2872561}, + doi = {10.1038/nmeth.1280}, + issn = {15487091}, + pmid = {19060904} +} + +@article{VenkatesanK2009AnMapping., + title = {{An empirical framework for binary interactome mapping.}}, + year = {2009}, + journal = {Nature methods}, + author = {Venkatesan K, JF Rual and Vazquez, A and Stelzl, U and Lemmens, I and Hirozane-Kishikawa, T and Hao, T}, + number = {1}, + pages = {83--90}, + volume = {6}, + url = {http://www.worldcat.org/oclc/316892705}, + doi = {10.1038/nmeth.1280.An} +} + +@article{Paschos2011AnProliferation, + title = {{An in vivo high-throughput screening approach targeting the type IV secretion system component VirB8 identified inhibitors of Brucella abortus 2308 proliferation}}, + year = {2011}, + journal = {Infection and Immunity}, + author = {Paschos, Athanasios and Den Hartigh, Andreas and Smith, Mark A. and Atluri, Vidya L. and Sivanesan, Durga and Tsolis, Renée M. and Baron, Christian}, + doi = {10.1128/IAI.00993-10}, + issn = {10985522} +} + +@article{Nakadai2016AnInterfaces, + title = {{An Intriguing Correlation Based on the Superimposition of Residue Pairs with Inhibitors that Target Protein-Protein Interfaces}}, + year = {2016}, + journal = {Scientific Reports}, + author = {Nakadai, Masakazu and Tomida, Shuta and Sekimizu, Kazuhisa}, + pages = {1--10}, + volume = {6}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/srep18543}, + doi = {10.1038/srep18543}, + issn = {20452322} +} + +@article{Richter2012AnInteraction, + title = {{An optimised small-molecule stabiliser of the 14-3-3-PMA2 protein-protein interaction}}, + year = {2012}, + journal = {Chemistry - A European Journal}, + author = {Richter, Anja and Rose, Rolf and Hedberg, Christian and Waldmann, Herbert and Ottmann, Christian}, + number = {21}, + pages = {6520--6527}, + volume = {18}, + doi = {10.1002/chem.201103761}, + issn = {09476539}, + keywords = {X-ray crystallography, chemical synthesis, crystal structures, protein-protein interactions, structure-activity relationships} +} + +@article{Richter2012AnInteractionb, + title = {{An optimised small-molecule stabiliser of the 14-3-3-PMA2 protein-protein interaction}}, + year = {2012}, + journal = {Chemistry - A European Journal}, + author = {Richter, Anja and Rose, Rolf and Hedberg, Christian and Waldmann, Herbert and Ottmann, Christian}, + number = {21}, + pages = {6520--6527}, + volume = {18}, + doi = {10.1002/chem.201103761}, + issn = {09476539}, + keywords = {X-ray crystallography, chemical synthesis, crystal structures, protein-protein interactions, structure-activity relationships} +} + +@article{Sudha2014AnPrinciples, + title = {{An overview of recent advances in structural bioinformatics of protein-protein interactions and a guide to their principles}}, + year = {2014}, + journal = {Progress in Biophysics and Molecular Biology}, + author = {Sudha, Govindarajan and Nussinov, Ruth and Srinivasan, Narayanaswamy}, + number = {2-3}, + pages = {141--150}, + volume = {116}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.pbiomolbio.2014.07.004}, + doi = {10.1016/j.pbiomolbio.2014.07.004}, + issn = {00796107}, + keywords = {Conformation, Evolution, Function, Interaction, Protein-protein complexes, Structure} +} + +@article{Ouellette2017AnalysisTechnique, + title = {{Analysis of membrane protein interactions with a bacterial adenylate cyclase-based two-hybrid (BACTH) technique}}, + year = {2017}, + journal = {Current Protocols in Molecular Biology}, + author = {Ouellette, Scot P. and Karimova, Gouzel and Davi, Marilyne and Ladant, Daniel}, + doi = {10.1002/cpmb.36}, + issn = {19343647}, + keywords = {CAMP signaling, Escherichia coli, Library screening, Membrane protein, Protein interaction assay, Two-hybrid technique} +} + +@article{Watkins2014AnatomyInterfaces, + title = {{Anatomy of {$\beta$} ‑ Strands at Protein − Protein Interfaces}}, + year = {2014}, + author = {Watkins, Andrew M and Arora, Paramjit S} +} + +@article{Meireles2010ANCHOR:Discovery, + title = {{ANCHOR: A web server and database for analysis of protein-protein interaction binding pockets for drug discovery}}, + year = {2010}, + journal = {Nucleic Acids Research}, + author = {Meireles, Lidio M.C. and D{\"{o}}mling, Alexander S. and Camacho, Carlos J.}, + number = {SUPPL. 2}, + pages = {1--5}, + volume = {38}, + doi = {10.1093/nar/gkq502}, + issn = {03051048} +} + +@article{Cohen2010AntagonistsIsosteres, + title = {{Antagonists of inhibitor of apoptosis proteins based on thiazole amide isosteres}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Cohen, Frederick and Koehler, Michael F.T. and Bergeron, Philippe and Elliott, Linda O. and Flygare, John A. and Franklin, Matthew C. and Gazzard, Lewis and Keteltas, Stephen F. and Lau, Kevin and Ly, Cuong Q. and Tsui, Vickie and Fairbrother, Wayne J.}, + number = {7}, + pages = {2229--2233}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.02.021}, + issn = {0960894X}, + keywords = {IAP antagonist, Peptidomimetic, Protein-protein interaction} +} + +@article{Crunkhorn2011AnticancerP53, + title = {{Anticancer drugs: Stapled peptide rescues p53}}, + year = {2011}, + journal = {Nature Reviews Drug Discovery}, + author = {Crunkhorn, Sarah}, + number = {1}, + pages = {21}, + volume = {10}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3342}, + doi = {10.1038/nrd3342}, + issn = {14741776} +} + +@article{Gao2013APoc:Pockets, + title = {{APoc: Large-scale identification of similar protein pockets}}, + year = {2013}, + journal = {Bioinformatics}, + author = {Gao, Mu and Skolnick, Jeffrey}, + number = {5}, + pages = {597--604}, + volume = {29}, + doi = {10.1093/bioinformatics/btt024}, + issn = {13674803} +} + +@article{Wei2009ApogossypolProteins, + title = {{Apogossypol derivatives as pan-active inhibitors of antiapoptotic B-cell lymphoma/leukemia-2 (Bcl-2) family proteins}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Wei, Jun and Kitada, Shinichi and Rega, Michele F. and Stebbins, John L. and Zhai, Dayong and Cellitti, Jason and Yuan, Hongbin and Emdadi, Aras and Dahl, Russell and Zhang, Ziming and Yang, Li and Reed, John C. and Pellecchia, Maurizio}, + number = {14}, + pages = {4511--4523}, + volume = {52}, + doi = {10.1021/jm900472s}, + issn = {00222623} +} + +@article{Joce2010ApplicationInteractions, + title = {{Application of a novel in silico high-throughput screen to identify selective inhibitors for protein-protein interactions}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Joce, Catherine and Stahl, Joshua A. and Shridhar, Mitesh and Hutchinson, Mark R. and Watkins, Linda R. and Fedichev, Peter O. and Yin, Hang}, + number = {18}, + pages = {5411--5413}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.07.103}, + issn = {0960894X}, + keywords = {MD-2, Protein-protein interactions, TLR4, Virtual screening} +} + +@article{Kollmann2014ApplicationAntagonists, + title = {{Application of encoded library technology (ELT) to a protein-protein interaction target: Discovery of a potent class of integrin lymphocyte function-associated antigen 1 (LFA-1) antagonists}}, + year = {2014}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Kollmann, Christopher S. and Bai, Xiaopeng and Tsai, Ching Hsuan and Yang, Hongfang and Lind, Kenneth E. and Skinner, Steven R. and Zhu, Zhengrong and Israel, David I. and Cuozzo, John W. and Morgan, Barry A. and Yuki, Koichi and Xie, Can and Springer, Timothy A. and Shimaoka, Motomu and Evindar, Ghotas}, + number = {7}, + pages = {2353--2365}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2014.01.050}, + doi = {10.1016/j.bmc.2014.01.050}, + issn = {14643391}, + keywords = {Affinity-based selections, DNA-encoded libraries, Encoded Library Technology, Intercellular Adhesion Molecule 1, Lymphocyte Function-associated Antigen 1, Protein-Protein Interactions} +} + +@article{Helguera2008ApplicationsTale, + title = {{Applications of 2D Descriptors in Drug Design: A DRAGON Tale}}, + year = {2008}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Helguera, Aliuska and Combes, Robert and Gonzalez, Maykel and Cordeiro, M. Natalia}, + number = {18}, + pages = {1628--1655}, + volume = {8}, + doi = {10.2174/156802608786786598}, + issn = {15680266}, + keywords = {2d-descriptors, adme, anti-, anticancer, dragon software, drug design, enzymatic inhibition, microbial, receptors affinity, tox} +} + +@misc{Mamoshina2016ApplicationsBiomedicine, + title = {{Applications of Deep Learning in Biomedicine}}, + year = {2016}, + booktitle = {Molecular Pharmaceutics}, + author = {Mamoshina, Polina and Vieira, Armando and Putin, Evgeny and Zhavoronkov, Alex}, + number = {5}, + month = {5}, + pages = {1445--1454}, + volume = {13}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.molpharmaceut.5b00982}, + issn = {15438392}, + keywords = {RBM, artificial intelligence, biomarker development, deep learning, deep neural networks, genomics, transcriptomics} +} + +@article{Carpenter2003ApprovalMatter, + title = {{Approval times for new drugs: does the source of funding for FDA staff matter?}}, + year = {2003}, + journal = {Health affairs (Project Hope)}, + author = {Carpenter, Daniel and Chernew, Michael and Smith, Dean G. and Fendrick, A. Mark}, + number = {February}, + pages = {2003--2005}, + volume = {Suppl Web }, + doi = {10.1377/hlthaff.w3.618}, + issn = {02782715} +} + +@article{Moreira2014AreWater, + title = {{Are hot-spots occluded from water?}}, + year = {2014}, + journal = {Journal of Biomolecular Structure and Dynamics}, + author = {Moreira, Irina Sousa and Ramos, Rui Miguel and Martins, Joao Miguel and Fernandes, Pedro Alexandrino and Ramos, Maria João}, + number = {2}, + pages = {186--197}, + volume = {32}, + doi = {10.1080/07391102.2012.758598}, + issn = {07391102}, + keywords = {Hot-spots, Interfacial water, O-ring theory, Occlusion from water, Solvent-accessible surface area} +} + +@article{Ohno2010AreCompounds, + title = {{Are there differences between launched drugs, clinical candidates, and commercially available compounds?}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Ohno, Kazuki and Nagahara, Yuichi and Tsunoyama, Kazuhisa and Orita, Masaya}, + number = {5}, + pages = {815--821}, + volume = {50}, + doi = {10.1021/ci100023s}, + issn = {15499596} +} + +@article{Zhang1998ARFPathways, + title = {{ARF promotes MDM2 degradation and stabilizes p53: ARF-INK4a locus deletion impairs both the Rb and p53 tumor suppression pathways}}, + year = {1998}, + journal = {Cell}, + author = {Zhang, Yanping and Xiong, Yue and Yarbrough, Wendell G.}, + number = {6}, + pages = {725--734}, + volume = {92}, + doi = {10.1016/S0092-8674(00)81401-4}, + issn = {00928674} +} + +@article{Bullock2011AssessingDesign, + title = {{Assessing helical protein interfaces for inhibitor design}}, + year = {2011}, + journal = {Journal of the American Chemical Society}, + author = {Bullock, Brooke N. and Jochim, Andrea L. and Arora, Paramjit S.}, + number = {36}, + pages = {14220--14223}, + volume = {133}, + doi = {10.1021/ja206074j}, + issn = {00027863} +} + +@article{Sugaya2009AssessingMethod, + title = {{Assessing the druggability of protein-protein interactions by a supervised machine-learning method}}, + year = {2009}, + journal = {BMC Bioinformatics}, + author = {Sugaya, Nobuyoshi and Ikeda, Kazuyoshi}, + pages = {263}, + volume = {10}, + isbn = {1471210510}, + doi = {10.1186/1471-2105-10-263}, + issn = {14712105} +} + +@article{Zerp2009AT-101Apoptosis, + title = {{AT-101, a small molecule inhibitor of anti-apoptotic Bcl-2 family members, activates the SAPK/JNK pathway and enhances radiation-induced apoptosis}}, + year = {2009}, + journal = {Radiation Oncology}, + author = {Zerp, Shuraila F. and Stoter, Rianne and Kuipers, Gitta and Yang, Dajun and Lippman, Marc E. and van Blitterswijk, Wim J. and Bartelink, Harry and Rooswinkel, Rogier and Lafleur, Vincent and Verheij, Marcel}, + number = {1}, + pages = {47}, + volume = {4}, + doi = {10.1186/1748-717X-4-47}, + issn = {1748717X} +} + +@article{Porter2009AtropisomericConformation, + title = {{Atropisomeric small molecule Bcl-2 ligands: Determination of bioactive conformation}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Porter, John and Payne, Andrew and Whitcombe, Ian and de Candole, Ben and Ford, Daniel and Garlish, Rachel and Hold, Adam and Hutchinson, Brian and Trevitt, Graham and Turner, James and Edwards, Chloe and Watkins, Clare and Davis, Jeremy and Stubberfield, Colin}, + number = {6}, + pages = {1767--1772}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.01.071}, + issn = {0960894X}, + keywords = {Apoptosis, Atropisomerism, Bcl-2, Protein-protein interaction} +} + +@article{Trott2010AutodockDocking, + title = {{Autodock vina: improving the speed and accuracy of docking}}, + year = {2010}, + journal = {Journal of Computational Chemistry}, + author = {Trott, Oleg and Olson, Aj}, + number = {2}, + pages = {455--461}, + volume = {31}, + isbn = {0333-7308 (Print) 0333-7308}, + doi = {10.1002/jcc.21334.AutoDock}, + issn = {1096-987X}, + pmid = {19499576} +} + +@article{Besnard2012AutomatedProfiles, + title = {{Automated design of ligands to polypharmacological profiles}}, + year = {2012}, + journal = {Nature}, + author = {Besnard, Jérémy and Ruda, Gian Filippo and Setola, Vincent and Abecassis, Keren and Rodriguiz, Ramona M. and Huang, Xi Ping and Norval, Suzanne and Sassano, Maria F. and Shin, Antony I. and Webster, Lauren A. and Simeons, Frederick R.C. and Stojanovski, Laste and Prat, Annik and Seidah, Nabil G. and Constam, Daniel B. and Bickerton, G. Richard and Read, Kevin D. and Wetsel, William C. and Gilbert, Ian H. and Roth, Bryan L. and Hopkins, Andrew L.}, + number = {7428}, + pages = {215--220}, + volume = {492}, + doi = {10.1038/nature11691}, + issn = {00280836} +} + +@article{Ferber2016AutomatedRestraints., + title = {{Automated structure modeling of large protein assemblies using crosslinks as distance restraints.}}, + year = {2016}, + journal = {Nature methods}, + author = {Ferber, Mathias and Kosinski, Jan and Ori, Alessandro and Rashid, Umar J and Moreno-Morcillo, MarÃa and Simon, Bernd and Bouvier, Guillaume and Batista, Paulo Ricardo and M{\"{u}}ller, Christoph W and Beck, Martin and Nilges, Michael}, + number = {6}, + month = {6}, + pages = {515--20}, + volume = {13}, + url = {http://www.nature.com/articles/nmeth.3838 http://www.ncbi.nlm.nih.gov/pubmed/27111507}, + doi = {10.1038/nmeth.3838}, + issn = {1548-7105}, + pmid = {27111507} +} + +@article{Bouvier2018AutomaticMaps, + title = {{Automatic Building of Protein Atomic Models from Cryo-EM Maps}}, + year = {2018}, + journal = {Biophysical Journal}, + author = {Bouvier, Guillaume and Bardiaux, Benjamin and Nilges, Michael}, + number = {3}, + month = {2}, + pages = {190a-191a}, + volume = {114}, + publisher = {Elsevier}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S000634951732297X}, + doi = {10.1016/j.bpj.2017.11.1065}, + issn = {00063495} +} + +@article{Gomez-Bombarelli2018AutomaticMolecules, + title = {{Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules}}, + year = {2018}, + journal = {ACS Central Science}, + author = {G{\'{o}}mez-Bombarelli, Rafael and Wei, Jennifer N. and Duvenaud, David and Hern{\'{a}}ndez-Lobato, José Miguel and S{\'{a}}nchez-Lengeling, BenjamÃn and Sheberla, Dennis and Aguilera-Iparraguirre, Jorge and Hirzel, Timothy D. and Adams, Ryan P. and Aspuru-Guzik, Alán}, + number = {2}, + month = {2}, + pages = {268--276}, + volume = {4}, + url = {http://pubs.acs.org/doi/10.1021/acscentsci.7b00572}, + doi = {10.1021/acscentsci.7b00572}, + issn = {2374-7943} +} + +@article{Gomez-Bombarelli2018AutomaticMoleculesb, + title = {{Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules}}, + year = {2018}, + journal = {ACS Central Science}, + author = {G{\'{o}}mez-Bombarelli, Rafael and Wei, Jennifer N. and Duvenaud, David and Hern{\'{a}}ndez-Lobato, José Miguel and S{\'{a}}nchez-Lengeling, BenjamÃn and Sheberla, Dennis and Aguilera-Iparraguirre, Jorge and Hirzel, Timothy D. and Adams, Ryan P. and Aspuru-Guzik, Alán}, + number = {2}, + month = {10}, + pages = {268--276}, + volume = {4}, + url = {http://arxiv.org/abs/1610.02415 http://dx.doi.org/10.1021/acscentsci.7b00572}, + doi = {10.1021/acscentsci.7b00572}, + issn = {23747951}, + arxivId = {1610.02415} +} + +@article{Gomez-Bombarelli2018AutomaticMoleculesc, + title = {{Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules}}, + year = {2018}, + journal = {ACS Central Science}, + author = {G{\'{o}}mez-Bombarelli, Rafael and Wei, Jennifer N. and Duvenaud, David and Hern{\'{a}}ndez-Lobato, José Miguel and S{\'{a}}nchez-Lengeling, BenjamÃn and Sheberla, Dennis and Aguilera-Iparraguirre, Jorge and Hirzel, Timothy D. and Adams, Ryan P. and Aspuru-Guzik, Alán}, + number = {2}, + month = {2}, + pages = {268--276}, + volume = {4}, + url = {http://pubs.acs.org/doi/10.1021/acscentsci.7b00572}, + doi = {10.1021/acscentsci.7b00572}, + issn = {23747951} +} + +@article{Gomez-Bombarelli2018AutomaticMoleculesd, + title = {{Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules}}, + year = {2018}, + journal = {ACS Central Science}, + author = {G{\'{o}}mez-Bombarelli, Rafael and Wei, Jennifer N. and Duvenaud, David and Hern{\'{a}}ndez-Lobato, José Miguel and S{\'{a}}nchez-Lengeling, BenjamÃn and Sheberla, Dennis and Aguilera-Iparraguirre, Jorge and Hirzel, Timothy D. and Adams, Ryan P. and Aspuru-Guzik, Alán}, + doi = {10.1021/acscentsci.7b00572}, + issn = {23747951}, + arxivId = {1610.02415} +} + +@article{Gomez-Bombarelli2018AutomaticMolecules., + title = {{Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules.}}, + year = {2018}, + journal = {ACS central science}, + author = {G{\'{o}}mez-Bombarelli, Rafael and Wei, Jennifer N and Duvenaud, David and Hern{\'{a}}ndez-Lobato, José Miguel and S{\'{a}}nchez-Lengeling, BenjamÃn and Sheberla, Dennis and Aguilera-Iparraguirre, Jorge and Hirzel, Timothy D and Adams, Ryan P and Aspuru-Guzik, Alán}, + number = {2}, + month = {2}, + pages = {268--276}, + volume = {4}, + url = {http://pubs.acs.org/doi/10.1021/acscentsci.7b00572 http://www.ncbi.nlm.nih.gov/pubmed/29532027 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC5833007}, + doi = {10.1021/acscentsci.7b00572}, + issn = {2374-7943}, + pmid = {29532027} +} + +@article{Bjorkelund2011AvoidingInteractions, + title = {{Avoiding false negative results in specificity analysis of protein-protein interactions}}, + year = {2011}, + journal = {Journal of Molecular Recognition}, + author = {Bj{\"{o}}rkelund, Hanna and Gedda, Lars and Andersson, Karl}, + number = {1}, + pages = {81--89}, + volume = {24}, + doi = {10.1002/jmr.1026}, + issn = {09523499}, + keywords = {affinity, competition assay, kinetics, specificity} +} + +@article{DenBlaauwen2014BacterialTargets, + title = {{Bacterial cell division proteins as antibiotic targets}}, + year = {2014}, + journal = {Bioorganic Chemistry}, + author = {Den Blaauwen, Tanneke and Andreu, José M. and Monasterio, Octavio}, + doi = {10.1016/j.bioorg.2014.03.007}, + issn = {10902120}, + keywords = {Antimicrobials, Bacterial cell division, ClpP, Divisome, EnvC, FtsA, FtsB, FtsEX, FtsL, FtsQ, FtsW, FtsZ, MraY, Mur, PcsB, Penicillin Binding Proteins, Translgycolysase activity, ZipA} +} + +@article{Lessene2008BCL-2Therapy, + title = {{BCL-2 family antagonists for cancer therapy}}, + year = {2008}, + journal = {Nature Reviews Drug Discovery}, + author = {Lessene, Guillaume and Czabotar, Peter E. and Colman, Peter M.}, + number = {12}, + pages = {989--1000}, + volume = {7}, + doi = {10.1038/nrd2658}, + issn = {14741776} +} + +@article{Gross1999BCL-2Apoptosis, + title = {{BCL-2 family members and the mitochondria in apoptosis}}, + year = {1999}, + journal = {Genes and Development}, + author = {Gross, Atan and McDonnell, James M. and Korsmeyer, Stanley J.}, + number = {15}, + pages = {1899--1911}, + volume = {13}, + doi = {10.1101/gad.13.15.1899}, + issn = {08909369}, + pmid = {10444588} +} + +@article{Schorr1999Bcl-2Cancer, + title = {{Bcl-2 Gene Family and Related Proteins in Mammary Gland Involution and Breast Cancer}}, + year = {1999}, + journal = {Journal of Mammary Gland Biology and Neoplasia}, + author = {Schorr, Kristel and Li, Minglin and Krajewski, Stanislaw and Reed, John C. and Furth, Priscilla A.}, + number = {2}, + pages = {153--164}, + volume = {4}, + doi = {10.1023/A:1018773123899}, + issn = {10833021}, + keywords = {Apoptosis, Bcl-2 family, Breast cancer, Involution, Mammary gland} +} + +@article{Filippakopoulos2012BenzodiazepinesFamily, + title = {{Benzodiazepines and benzotriazepines as protein interaction inhibitors targeting bromodomains of the BET family}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Filippakopoulos, Panagis and Picaud, Sarah and Fedorov, Oleg and Keller, Marco and Wrobel, Matthias and Morgenstern, Olaf and Bracher, Franz and Knapp, Stefan}, + number = {6}, + pages = {1878--1886}, + volume = {20}, + doi = {10.1016/j.bmc.2011.10.080}, + issn = {09680896}, + keywords = {Alprazolam, BRD4, Benzodiazepines, Benzotriazepines, Bromodomains} +} + +@article{Delmore2011BETC-Myc, + title = {{BET bromodomain inhibition as a therapeutic strategy to target c-Myc}}, + year = {2011}, + journal = {Cell}, + author = {Delmore, Jake E. and Issa, Ghayas C. and Lemieux, Madeleine E. and Rahl, Peter B. and Shi, Junwei and Jacobs, Hannah M. and Kastritis, Efstathios and Gilpatrick, Timothy and Paranal, Ronald M. and Qi, Jun and Chesi, Marta and Schinzel, Anna C. and McKeown, Michael R. and Heffernan, Timothy P. and Vakoc, Christopher R. and Bergsagel, P. Leif and Ghobrial, Irene M. and Richardson, Paul G. and Young, Richard A. and Hahn, William C. and Anderson, Kenneth C. and Kung, Andrew L. and Bradner, James E. and Mitsiades, Constantine S.}, + number = {6}, + pages = {904--917}, + volume = {146}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.cell.2011.08.017}, + doi = {10.1016/j.cell.2011.08.017}, + issn = {00928674} +} + +@article{Kogej2013BigCase, + title = {{Big pharma screening collections: More of the same or unique libraries? the AstraZeneca-Bayer Pharma AG case}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Kogej, Thierry and Blomberg, Niklas and Greasley, Peter J. and Mundt, Stefan and Vainio, Mikko J. and Schamberger, Jens and Schmidt, Georg and H{\"{u}}ser, Jörg}, + number = {19-20}, + pages = {1014--1024}, + volume = {18}, + doi = {10.1016/j.drudis.2012.10.011}, + issn = {13596446} +} + +@article{Day2012BindingComplexes, + title = {{Binding efficiency of protein-protein complexes}}, + year = {2012}, + journal = {Biochemistry}, + author = {Day, Eric S. and Cote, Shaun M. and Whitty, Adrian}, + number = {45}, + pages = {9124--9136}, + volume = {51}, + doi = {10.1021/bi301039t}, + issn = {00062960} +} + +@article{Wisen2010BindingHsp70-Hsp40, + title = {{Binding of a small molecule at a protein-protein interface regulates the chaperone activity of Hsp70-Hsp40}}, + year = {2010}, + journal = {ACS Chemical Biology}, + author = {Wis{\'{e}}n, Susanne and Bertelsen, Eric B. and Thompson, Andrea D. and Patury, Srikanth and Ung, Peter and Chang, Lyra and Evans, Christopher G. and Walter, Gladis M. and Wipf, Peter and Carlson, Heather A. and Brodsky, Jeffrey L. and Zuiderweg, Erik R.P. and Gestwicki, Jason E.}, + number = {6}, + pages = {611--622}, + volume = {5}, + doi = {10.1021/cb1000422}, + issn = {15548937} +} + +@article{Rani2015BioactiveGroups, + title = {{Bioactive heterocycles containing endocyclic N-hydroxy groups}}, + year = {2015}, + journal = {European Journal of Medicinal Chemistry}, + author = {Rani, Reshma and Granchi, Carlotta}, + number = {1}, + pages = {505--524}, + volume = {97}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2014.11.031}, + doi = {10.1016/j.ejmech.2014.11.031}, + issn = {17683254}, + keywords = {Bioactivity, Metabolism, N-Hydroxy-heterocycles} +} + +@article{Wirth2011BioactiveTarget, + title = {{Bioactive molecules: Perfectly shaped for their target?}}, + year = {2011}, + journal = {Molecular Informatics}, + author = {Wirth, Matthias and Sauer, Wolfgang H.B.}, + number = {8}, + pages = {677--688}, + volume = {30}, + doi = {10.1002/minf.201100034}, + issn = {18681743}, + keywords = {Clustering assessment, Drug likeness, Molecular shape, Multiconformational analysis, NPR descriptor} +} + +@article{Renner2009Bioactivity-guidedSpace, + title = {{Bioactivity-guided mapping and navigation of chemical space}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Renner, Steffen and Van Otterlo, Willem A.L. and Dominguez Seoane, Marta and M{\"{o}}cklinghoff, Sabine and Hofmann, Bettina and Wetzel, Stefan and Schuffenhauer, Ansgar and Ertl, Peter and Oprea, Tudor I. and Steinhilber, Dieter and Brunsveld, Luc and Rauh, Daniel and Waldmann, Herbert}, + number = {8}, + pages = {585--592}, + volume = {5}, + doi = {10.1038/nchembio.188}, + issn = {15524469}, + pmid = {19561619} +} + +@article{Renner2009Bioactivity-guidedSpaceb, + title = {{Bioactivity-guided mapping and navigation of chemical space}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Renner, Steffen and Van Otterlo, Willem A.L. and Dominguez Seoane, Marta and M{\"{o}}cklinghoff, Sabine and Hofmann, Bettina and Wetzel, Stefan and Schuffenhauer, Ansgar and Ertl, Peter and Oprea, Tudor I. and Steinhilber, Dieter and Brunsveld, Luc and Rauh, Daniel and Waldmann, Herbert}, + number = {8}, + pages = {585--592}, + volume = {5}, + doi = {10.1038/nchembio.188}, + issn = {15524469}, + pmid = {19561619} +} + +@article{Kombarov2010BioCores:Discovery, + title = {{BioCores: Identification of a drug/natural product-based privileged structural motif for small-molecule lead discovery}}, + year = {2010}, + journal = {Molecular Diversity}, + author = {Kombarov, Roman and Altieri, Andrea and Genis, Dmitry and Kirpichenok, Mikhail and Kochubey, Valeriy and Rakitina, Natalia and Titarenko, Zoya}, + number = {1}, + pages = {193--200}, + volume = {14}, + doi = {10.1007/s11030-009-9157-5}, + issn = {13811991}, + keywords = {Compound libraries, Diversity, Natural products, Scaffold design} +} + +@article{Cherrak2018BiogenesisBaseplate, + title = {{Biogenesis and structure of a type VI secretion baseplate}}, + year = {2018}, + journal = {Nature Microbiology}, + author = {Cherrak, Yassine and Rapisarda, Chiara and Pellarin, Riccardo and Bouvier, Guillaume and Bardiaux, Benjamin and Allain, Fabrice and Malosse, Christian and Rey, Martial and Chamot-Rooke, Julia and Cascales, Eric and Fronzes, Rémi and Durand, Eric}, + number = {12}, + month = {12}, + pages = {1404--1416}, + volume = {3}, + publisher = {Nature Publishing Group}, + url = {http://www.nature.com/articles/s41564-018-0260-1}, + doi = {10.1038/s41564-018-0260-1}, + issn = {20585276}, + keywords = {Bacterial pathogenesis, Bacterial secretion, Cryoelectron microscopy} +} + +@article{Rabal2012BiologicallyDesign, + title = {{Biologically relevant chemical space navigator: From patent and structure-activity relationship analysis to library acquisition and design}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Rabal, Obdulia and Oyarzabal, Julen}, + number = {12}, + pages = {3123--3137}, + volume = {52}, + doi = {10.1021/ci3004539}, + issn = {15499596} +} + +@article{Kaiser2008Biology-inspiredLibraries, + title = {{Biology-inspired synthesis of compound libraries}}, + year = {2008}, + journal = {Cellular and Molecular Life Sciences}, + author = {Kaiser, M. and Wetzel, S. and Kumar, K. and Waldmann, H.}, + number = {7-8}, + pages = {1186--1201}, + volume = {65}, + isbn = {4923113324}, + doi = {10.1007/s00018-007-7492-1}, + issn = {1420682X}, + pmid = {18193390}, + keywords = {Biology-oriented synthesis (BIOS), Chemical biology, Compound libraries, Diversity-oriented synthesis (DOS)} +} + +@article{Wetzel2011Biology-orientedSynthesis, + title = {{Biology-oriented synthesis}}, + year = {2011}, + journal = {Angewandte Chemie - International Edition}, + author = {Wetzel, Stefan and Bon, Robin S. and Kumar, Kamal and Waldmann, Herbert}, + number = {46}, + pages = {10800--10826}, + volume = {50}, + doi = {10.1002/anie.201007004}, + issn = {14337851}, + pmid = {22038946}, + keywords = {bioorganic chemistry, chemoinformatics, medicinal chemistry, natural products, synthesis design} +} + +@article{Bauer2013BiomimeticExpansion, + title = {{Biomimetic diversity-oriented synthesis of benzannulated medium rings via ring expansion}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Bauer, Renato A. and Wenderski, Todd A. and Tan, Derek S.}, + number = {1}, + pages = {21--29}, + volume = {9}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1130}, + doi = {10.1038/nchembio.1130}, + issn = {15524450} +} + +@misc{Bioorg_Med_Chem_2012_Lounkine.pdf, + title = {{Bioorg{\_}Med{\_}Chem{\_}2012{\_}Lounkine.pdf}} +} + +@inproceedings{Gray2017Bioschemas:Annotation, + title = {{Bioschemas: From potato salad to protein annotation}}, + year = {2017}, + booktitle = {CEUR Workshop Proceedings}, + author = {Gray, Alasdair J.G. and Goble, Carole and Jimenez, Rafael C.}, + volume = {1963}, + issn = {16130073}, + keywords = {Data discovery, Dataset descriptions, Metadata, Schema.org} +} + +@article{Cokelaer2013BioServices:Programmatically, + title = {{BioServices: A common Python package to access biological Web Services programmatically}}, + year = {2013}, + journal = {Bioinformatics}, + author = {Cokelaer, Thomas and Pultz, Dennis and Harder, Lea M. and Serra-Musach, Jordi and Saez-Rodriguez, Julio and Valencia, Alfonso}, + doi = {10.1093/bioinformatics/btt547}, + issn = {14602059} +} + +@article{Tsou2012BlockingInhibitor, + title = {{Blocking HIV-1 entry by a gp120 surface binding inhibitor}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Tsou, Lun K. and Chen, Chin Ho and Dutschman, Ginger E. and Cheng, Yung Chi and Hamilton, Andrew D.}, + number = {9}, + pages = {3358--3361}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2012.02.079}, + doi = {10.1016/j.bmcl.2012.02.079}, + issn = {0960894X}, + keywords = {Calix[4]arene scaffold, HIV-entry inhibitor, Protein surface recognition, Proteomimetic inhibitor} +} + +@article{Carry2013BMCLClinic, + title = {{BMCL Digest Inhibitors of the p53/hdm2 protein-protein interaction - Path to the clinic}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Carry, Jean Christophe and Garcia-Echeverria, Carlos}, + number = {9}, + pages = {2480--2485}, + volume = {23}, + doi = {10.1016/j.bmcl.2013.03.034}, + issn = {14643405}, + keywords = {Anticancer agent, Protein-protein interaction, hdm2, hdmx, p53} +} + +@misc{BookCh_QTAIM_Matito_2007.pdf, + title = {{BookCh{\_}QTAIM{\_}Matito{\_}2007.pdf}} +} + +@article{Farooqi2012BreastGame, + title = {{Breast cancer proteome takes more than two to tango on trail: Beat them at their own game}}, + year = {2012}, + journal = {Journal of Membrane Biology}, + author = {Farooqi, Ammad Ahmad and Fayyaz, Sundas and Tahir, Muhammad and Iqbal, Muhammed Javed and Bhatti, Shahzad}, + number = {12}, + pages = {763--777}, + volume = {245}, + doi = {10.1007/s00232-012-9490-y}, + issn = {00222631}, + keywords = {Biochemistry/molecular biology, Cell physiology, Cell signaling, Membrane transport, Membrane-drug physical interaction, Structure function membrane rafts, Transport physiology} +} + +@article{Peyroche2004BrefeldinComplex, + title = {{Brefeldin A Acts to Stabilize an Abortive ARF–GDP–Sec7 Domain Protein Complex}}, + year = {2004}, + journal = {Molecular Cell}, + author = {Peyroche, Anne and Antonny, Bruno and Robineau, Sylviane and Acker, Joel and Cherfils, Jacqueline and Jackson, Catherine L.}, + number = {3}, + pages = {275--285}, + volume = {3}, + doi = {10.1016/s1097-2765(00)80455-4}, + issn = {10972765} +} + +@article{SungnakBrief, + title = {{Brief CommuniCation We investigated SARS-CoV-2 potential tropism by survey-ing expression of viral entry-associated genes in single-cell RNA-sequencing data from multiple tissues from healthy human donors SARS-CoV-2 entry factors are highly expressed in nasal epithelial cells together with innate immune genes and HCA Lung Biological Network* ✉}}, + journal = {Nature Medicine}, + author = {Sungnak, Waradon and Huang, Ni and B{\'{e}}cavin, Christophe and Berg, Marijn and Queen, Rachel and Litvinukova, Monika and Talavera-L{\'{o}}pez, Carlos and Maatz, Henrike and Reichart, Daniel and Sampaziotis, Fotios and Worlock, Kaylee B and Yoshida, Masahiro and Barnes, Josephine L}, + url = {https://doi.org/10.1038/s41591-020-0868-6}, + doi = {10.1038/s41591-020-0868-6} +} + +@article{Deng2010BroadBcr-Abl, + title = {{Broad spectrum alkynyl inhibitors of T315I Bcr-Abl}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Deng, Xianming and Lim, Sang Min and Zhang, Jianming and Gray, Nathanael S.}, + number = {14}, + pages = {4196--4200}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2010.05.043}, + doi = {10.1016/j.bmcl.2010.05.043}, + issn = {0960894X}, + keywords = {Kinase inhibitors, T315I Bcr-Abl} +} + +@article{Baud2014BromodomainProbes, + title = {{Bromodomain Chemical Probes}}, + year = {2014}, + journal = {Science}, + author = {Baud, Matthias G J and Lin-shiao, Enrique and Cardote, Teresa and Tallant, Cynthia and Pschibul, Annica and Chan, Kwok-ho and Zengerle, Michael and Garcia, Jordi R and Kwan, Terence T and Ferguson, Fleur M and Ciulli, Alessio}, + pages = {638--641}, + volume = {346} +} + +@article{Sheppard2013BuildingLibraries, + title = {{Building in molecular diversity for targeted libraries}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Sheppard, David W. and Macritchie, Jacqueline A.}, + number = {4}, + pages = {e461-e466}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.12.002}, + doi = {10.1016/j.ddtec.2012.12.002}, + issn = {17406749} +} + +@article{Meier2013CanProductivity, + title = {{Can emerging drug classes improve R{\&}D productivity?}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Meier, Christoph and Cairns-Smith, Sarah and Schulze, Ulrik}, + number = {13-14}, + pages = {607--609}, + volume = {18}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.drudis.2013.05.006}, + doi = {10.1016/j.drudis.2013.05.006}, + issn = {13596446} +} + +@article{Owens2005CanPatented, + title = {{Can making a correlation be patented?}}, + year = {2005}, + journal = {Nature Reviews Drug Discovery}, + author = {Owens, Joanna}, + number = {12}, + pages = {950}, + volume = {4}, + doi = {10.1038/nrd1821}, + issn = {14741776} +} + +@article{London2010CanInteractions, + title = {{Can self-inhibitory peptides be derived from the interfaces of globular protein-protein interactions?}}, + year = {2010}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {London, Nir and Raveh, Barak and Movshovitz-Attias, Dana and Schueler-Furman, Ora}, + number = {15}, + pages = {3140--3149}, + volume = {78}, + doi = {10.1002/prot.22785}, + issn = {08873585}, + keywords = {Derived peptides, Inhibitory peptides, Mimicry peptides, Peptide docking, Protein-protein interactions, Rosetta FlexPepDock} +} + +@article{Shangary2009Cancer, + title = {{cancer}}, + year = {2009}, + author = {Shangary, Sanjeev and Ding, Ke and Qiu, Su and Nikolovska-coleska, Zaneta and Joshua, A and Liu, Meilan and Wang, Guoping and Lu, Yipin and Mceachern, Donna and Bradford, Carol R and Carey, Thomas E and Wang, Shaomeng}, + number = {6}, + pages = {1533--1542}, + volume = {7} +} + +@article{Flemming2013Cardiology:Failure, + title = {{Cardiology: Bromodomain inhibition halts heart failure}}, + year = {2013}, + journal = {Nature Reviews Drug Discovery}, + author = {Flemming, Alexandra}, + number = {10}, + pages = {740--741}, + volume = {12}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd4134}, + doi = {10.1038/nrd4134}, + issn = {14741776} +} + +@article{Urich2015CargoPeptides, + title = {{Cargo Delivery into the Brain by in vivo identified Transport Peptides}}, + year = {2015}, + journal = {Scientific Reports}, + author = {Urich, Eduard and Schmucki, Roland and Ruderisch, Nadine and Kitas, Eric and Certa, Ulrich and Jacobsen, Helmut and Schweitzer, Christophe and Bergadano, Alessandra and Ebeling, Martin and Loetscher, Hansruedi and Freskg{\aa}rd, Per Ola}, + pages = {1--14}, + volume = {5}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/srep14104}, + doi = {10.1038/srep14104}, + issn = {20452322} +} + +@article{Moritz2019Cascaded-CNN:Maps, + title = {{Cascaded-CNN: Deep Learning to Predict Protein Backbone Structure from High-Resolution Cryo-EM Density Maps}}, + year = {2019}, + journal = {bioRxiv}, + author = {Moritz, Spencer A. and Pfab, Jonas and Wu, Tianqi and Hou, Jie and Cheng, Jianlin and Cao, Renzhi and Wang, Liguo and Si, Dong}, + month = {3}, + pages = {572990}, + publisher = {Cold Spring Harbor Laboratory}, + url = {https://www.biorxiv.org/content/10.1101/572990v3}, + doi = {10.1101/572990} +} + +@article{Moritz2019Cascaded-CNN:Mapsb, + title = {{Cascaded-CNN: Deep Learning to Predict Protein Backbone Structure from High-Resolution Cryo-EM Density Maps}}, + year = {2019}, + journal = {bioRxiv}, + author = {Moritz, Spencer A. and Pfab, Jonas and Wu, Tianqi and Hou, Jie and Cheng, Jianlin and Cao, Renzhi and Wang, Liguo and Si, Dong}, + month = {3}, + pages = {572990}, + publisher = {Cold Spring Harbor Laboratory}, + url = {https://www.biorxiv.org/content/10.1101/572990v3}, + doi = {10.1101/572990} +} + +@article{Ts2003ChRy, + title = {{Ch e m i c a l s ub s tru c tur e s i n drug d i s c ov e ry}}, + year = {2003}, + author = {Ts, H and Et, A D M}, + number = {03}, + volume = {6446} +} + +@article{Bade2010CharacteristicsDrugs, + title = {{Characteristics of known drug space. Natural products, their derivatives and synthetic drugs}}, + year = {2010}, + journal = {European Journal of Medicinal Chemistry}, + author = {Bade, Richard and Chan, Ho Fung and Reynisson, Jóhannes}, + number = {12}, + pages = {5646--5652}, + volume = {45}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2010.09.018}, + doi = {10.1016/j.ejmech.2010.09.018}, + issn = {02235234}, + keywords = {Drug-like chemical space, Known drug space, Marketed drug compounds, Molecular descriptors and drug development/discove, Natural derivatives, Natural products, Semi-synthetic drugs, Synthetic drugs} +} + +@article{Sborgi2010CharacterizationHarakiri, + title = {{Characterization of a novel interaction between Bcl-2 members diva and harakiri}}, + year = {2010}, + journal = {PLoS ONE}, + author = {Sborgi, Lorenzo and Barrera-Vilarmau, Susana and Obreg{\'{o}}n, Patricia and de Alba, Eva}, + number = {12}, + volume = {5}, + doi = {10.1371/journal.pone.0015575}, + issn = {19326203} +} + +@article{Galloux2012CharacterizationNucleoprotein, + title = {{Characterization of a Viral Phosphoprotein Binding Site on the Surface of the Respiratory Syncytial Nucleoprotein}}, + year = {2012}, + journal = {Journal of Virology}, + author = {Galloux, Marie and Tarus, Bogdan and Blazevic, Ilfad and Fix, Jenna and Duquerroy, Stéphane and El{\'{e}}ou{\"{e}}t, Jean-François}, + doi = {10.1128/jvi.00058-12}, + issn = {0022-538X}, + pmid = {22623798} +} + +@article{Barakat2009CharacterizationApproach, + title = {{Characterization of an inhibitory dynamic pharmacophore for the ERCC1-XPA interaction using a combined molecular dynamics and virtual screening approach}}, + year = {2009}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Barakat, Khaled H. and Torin Huzil, J. and Luchko, Tyler and Jordheim, Lars and Dumontet, Charles and Tuszynski, Jack}, + number = {2}, + pages = {113--130}, + volume = {28}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.jmgm.2009.04.009}, + doi = {10.1016/j.jmgm.2009.04.009}, + issn = {10933263}, + keywords = {Clustering, DrugBank, ERCC1, NCI dtp database, Pharmacophore, UCN01, Virtual screening, XPA} +} + +@article{Griffiths2013CharacterizationTopology, + title = {{Characterization of heterocyclic rings through quantum chemical topology}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Griffiths, Mark Z. and Popelier, Paul L.A.}, + number = {7}, + pages = {1714--1725}, + volume = {53}, + doi = {10.1021/ci400235u}, + issn = {15499596} +} + +@article{Karimova2009CharacterizationMachinery, + title = {{Characterization of YmgF, a 72-residue inner membrane protein that associates with the Escherichia coli cell division machinery}}, + year = {2009}, + journal = {Journal of Bacteriology}, + author = {Karimova, Gouzel and Robichon, Carine and Ladant, Daniel}, + doi = {10.1128/JB.00331-08}, + issn = {00219193} +} + +@article{Rosen2009ChemGPS-NPSpace, + title = {{ChemGPS-NP and the Exploration of Biologically Relevant Chemical Space}}, + year = {2009}, + author = {Ros{\'{e}}n, Josefin}, + url = {http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A160221&dswid=-1749}, + keywords = {Farmaceutisk vetenskap, Pharmaceutical Sciences, Pharmacognosy, farmakognosi} +} + +@article{Rosen2009ChemGPS-NPWeb:Online, + title = {{ChemGPS-NPWeb: Chemical space navigation online}}, + year = {2009}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Ros{\'{e}}n, Josefin and L{\"{o}}vgren, Anders and Kogej, Thierry and Muresan, Sorel and Gottfries, Johan and Backlund, Anders}, + number = {4}, + pages = {253--259}, + volume = {23}, + doi = {10.1007/s10822-008-9255-y}, + issn = {0920654X}, + keywords = {Biologically active compounds, ChemGPS-NP, Chemical space, Drug discovery, Internet tool, Natural products} +} + +@article{Rosen2009ChemGPS-NPWeb:Onlineb, + title = {{ChemGPS-NPWeb: Chemical space navigation online}}, + year = {2009}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Ros{\'{e}}n, Josefin and L{\"{o}}vgren, Anders and Kogej, Thierry and Muresan, Sorel and Gottfries, Johan and Backlund, Anders}, + number = {4}, + pages = {253--259}, + volume = {23}, + doi = {10.1007/s10822-008-9255-y}, + issn = {0920654X}, + keywords = {Biologically active compounds, ChemGPS-NP, Chemical space, Drug discovery, Internet tool, Natural products} +} + +@article{Morelli2011Chemical2P2I, + title = {{Chemical and structural lessons from recent successes in protein-protein interaction inhibition (2P2I)}}, + year = {2011}, + journal = {Current Opinion in Chemical Biology}, + author = {Morelli, Xavier and Bourgeas, Raphaël and Roche, Philippe}, + number = {4}, + pages = {475--481}, + volume = {15}, + doi = {10.1016/j.cbpa.2011.05.024}, + issn = {13675931} +} + +@incollection{Lagorce2012ChemicalScreening, + title = {{Chemical Libraries for Virtual Screening}}, + year = {2012}, + booktitle = {In-Silico Lead Discovery}, + author = {Lagorce, D. and Sperandio, O. and Miteva, M.A. and Villoutreix, B.O.}, + pages = {1--19}, + url = {http://www.eurekaselect.com/node/53281}, + isbn = {9781608056798}, + doi = {10.2174/978160805142711101010001} +} + +@article{Lowe2011ChemicalSolution, + title = {{Chemical name to structure: OPSIN, an open source solution}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Lowe, Daniel M. and Corbett, Peter T. and Murray-Rust, Peter and Glen, Robert C.}, + doi = {10.1021/ci100384d}, + issn = {15499596} +} + +@article{Cumming2013ChemicalQuality, + title = {{Chemical predictive modelling to improve compound quality}}, + year = {2013}, + journal = {Nature Reviews Drug Discovery}, + author = {Cumming, John G. and Davis, Andrew M. and Muresan, Sorel and Haeberlein, Markus and Chen, Hongming}, + number = {12}, + pages = {948--962}, + volume = {12}, + doi = {10.1038/nrd4128}, + issn = {14741776} +} + +@article{Dastidar2011ChemicalModulation, + title = {{Chemical states of the N-terminal "lid" of MDM2 regulate p53 binding: Simulations reveal complexities of modulation}}, + year = {2011}, + journal = {Cell Cycle}, + author = {Dastidar, Shubhra Ghosh and Raghunathan, Devanathan and Nicholson, Judith and Hupp, Ted R. and Lane, David P. and Verma, Chandra S.}, + number = {1}, + pages = {82--89}, + volume = {10}, + doi = {10.4161/cc.10.1.14345}, + issn = {15514005}, + keywords = {MD simulation, MDM2, N-terminal lid, Phosphorylation, p53 regulation} +} + +@article{vanWesten2014ChemicalModulation, + title = {{Chemical, Target, and Bioactive Properties of Allosteric Modulation}}, + year = {2014}, + journal = {PLoS Computational Biology}, + author = {van Westen, Gerard J.P. and Gaulton, Anna and Overington, John P.}, + number = {4}, + volume = {10}, + doi = {10.1371/journal.pcbi.1003559}, + issn = {15537358} +} + +@article{Ertl2008CheminformaticsDrugs, + title = {{Cheminformatics analysis of natural products: Lessons from nature inspiring the design of new drugs}}, + year = {2008}, + journal = {Progress in Drug Research}, + author = {Ertl, Peter and Schuffenhauer, Ansgar}, + pages = {217--235}, + volume = {66}, + isbn = {9783764385941}, + doi = {10.1007/978-3-7643-8595-8-4}, + issn = {0071786X}, + pmid = {18416307} +} + +@article{Akella2010CheminformaticsLibraries, + title = {{Cheminformatics approaches to analyze diversity in compound screening libraries}}, + year = {2010}, + journal = {Current Opinion in Chemical Biology}, + author = {Akella, Lakshmi B. and DeCaprio, David}, + number = {3}, + pages = {325--330}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.03.017}, + issn = {13675931} +} + +@article{Team2010ChemistryBiology, + title = {{Chemistry {\&} Biology}}, + year = {2010}, + author = {Team, Molecular Pharmacology and Laboratories, Haddow and Team, Medicinal Chemistry and Laboratories, Haddow}, + number = {6}, + pages = {561--577}, + volume = {17} +} + +@article{Jacoby2009ChemogenomicsApplications, + title = {{Chemogenomics : Methods and Applications}}, + year = {2009}, + journal = {Methods in molecular biology (Clifton, N.J.)}, + author = {Jacoby, Edgar}, + pages = {225--247}, + volume = {575}, + isbn = {978-1-60761-273-5}, + doi = {10.1007/978-1-60761-274-2}, + issn = {1940-6029}, + pmid = {19727618}, + keywords = {homology models, hts, mdm2, mdm4, mts, p53, virtual screening} +} + +@article{Singh2009ChemoinformaticRepository, + title = {{Chemoinformatic analysis of combinatorial libraries, drugs, natural products, and molecular libraries Small Molecule Repository}}, + year = {2009}, + journal = {Journal of Chemical Information and Modeling}, + author = {Singh, Narender and Guha, Rajarshi and Giulianotti, Marc A. and Pinilla, Clemencia and Houghten, Richard A. and Medina-Franco, Jose L.}, + number = {4}, + pages = {1010--1024}, + volume = {49}, + doi = {10.1021/ci800426u}, + issn = {15499596} +} + +@article{Scotti2010ChemometricApproach, + title = {{Chemometric studies on natural products as potential inhibitors of the nadh oxidase from trypanosoma cruzi using the volsurf approach}}, + year = {2010}, + journal = {Molecules}, + author = {Scotti, Luciana and Ferreira, Elizabeth Igne and Da Silva, Marcelo Sobral and Scotti, Marcus Tullius}, + number = {10}, + pages = {7363--7377}, + volume = {15}, + doi = {10.3390/molecules15107363}, + issn = {14203049}, + keywords = {Antichagasic agents, Natural products, VolSurf} +} + +@article{Lounkine2012ChemotographyPathways, + title = {{Chemotography for multi-target SAR analysis in the context of biological pathways}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Lounkine, Eugen and Kutchukian, Peter and Petrone, Paula and Davies, John W. and Glick, Meir}, + number = {18}, + pages = {5416--5427}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.02.034}, + doi = {10.1016/j.bmc.2012.02.034}, + issn = {09680896}, + keywords = {Chemical space, Chemogenomics, Color, Molecular fingerprints, Molecular pathways, Systems pharmacology, Visualization} +} + +@article{Kjrulff2013ChemProt-2.0:Database, + title = {{ChemProt-2.0: Visual navigation in a disease chemical biology database}}, + year = {2013}, + journal = {Nucleic Acids Research}, + author = {Kj{\ae}rulff, Sonny Kim and Wich, Louis and Kringelum, Jens and Jacobsen, Ulrik P. and Kouskoumvekaki, Irene and Audouze, Karine and Lund, Ole and Brunak, Søren and Oprea, Tudor I. and Taboureau, Olivier}, + number = {D1}, + pages = {1--6}, + volume = {41}, + doi = {10.1093/nar/gks1166}, + issn = {03051048} +} + +@article{Gutlein2012CheS-Mapper3D, + title = {{CheS-Mapper - Chemical space mapping and visualization in 3D}}, + year = {2012}, + journal = {Journal of Cheminformatics}, + author = {G{\"{u}}tlein, Martin and Karwath, Andreas and Kramer, Stefan}, + number = {3}, + pages = {7}, + volume = {4}, + publisher = {Chemistry Central Ltd}, + url = {http://www.jcheminf.com/content/4/1/7}, + doi = {10.1186/1758-2946-4-7}, + issn = {17582946} +} + +@article{Mullard2012Cholesterol-loweringTrials., + title = {{Cholesterol-lowering blockbuster candidates speed into Phase III trials.}}, + year = {2012}, + journal = {Nature reviews. Drug discovery}, + author = {Mullard, Asher}, + number = {11}, + pages = {817--819}, + volume = {11}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3879}, + doi = {10.1038/nrd3879}, + issn = {14741784} +} + +@article{Awale2012ClusterNumbers, + title = {{Cluster analysis of the DrugBank chemical space using molecular quantum numbers}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Awale, Mahendra and Reymond, Jean Louis}, + number = {18}, + pages = {5372--5378}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.03.017}, + doi = {10.1016/j.bmc.2012.03.017}, + issn = {09680896}, + keywords = {Chemical space, Cheminformatics, Clustering, Descriptors, DrugBank, Fingerprints, Virtual screening} +} + +@article{Zhu2008CombinatorialPyriformis, + title = {{Combinatorial QSAR modeling of chemical toxicants tested against Tetrahymena pyriformis}}, + year = {2008}, + journal = {Journal of Chemical Information and Modeling}, + author = {Zhu, Hao and Tropsha, Alexander and Fourches, Denis and Varnek, Alexandre and Papa, Ester and Gramatical, Paola and {\"{O}}berg, Tomas and Dao, Phuong and Cherkasov, Artem and Tetko, Igor V.}, + number = {4}, + pages = {766--784}, + volume = {48}, + isbn = {1109500998}, + doi = {10.1021/ci700443v}, + issn = {15499596} +} + +@article{Suenderhauf2011CombinatorialAbsorption, + title = {{Combinatorial QSAR modeling of human intestinal absorption}}, + year = {2011}, + journal = {Molecular Pharmaceutics}, + author = {Suenderhauf, Claudia and Hammann, Felix and Maunz, Andreas and Helma, Christoph and Huwyler, Jörg}, + number = {1}, + pages = {213--224}, + volume = {8}, + doi = {10.1021/mp100279d}, + issn = {15438384}, + keywords = {Artificial neural network, Decision tree induction, Intestinal drug absorption, Machine learning, Molecular modeling, Naive Bayes, QSAR, Receiver operating characteristics, Support vector machines} +} + +@article{Sperandio2008CombiningProjects, + title = {{Combining Ligand- and Structure-Based Methods in Drug Design Projects}}, + year = {2008}, + journal = {Current Computer-Aided Drug Design}, + author = {Sperandio, Olivier and Miteva, Maria A and Villoutreix, Bruno O}, + number = {3}, + pages = {250--258}, + volume = {648}, + isbn = {1573-4099}, + doi = {10.2174/157340908785747447}, + issn = {15734099}, + keywords = {drug design, ligand-based drug design, pharmacophore, qsar, structure-based drug design, virtual screening} +} + +@article{Lock2020CommunityPublications, + title = {{Community curation in PomBase: enabling fission yeast experts to provide detailed, standardized, sharable annotation from research publications}}, + year = {2020}, + journal = {Database : the journal of biological databases and curation}, + author = {Lock, Antonia and Harris, Midori A. and Rutherford, Kim and Hayles, Jacqueline and Wood, Valerie}, + volume = {2020}, + doi = {10.1093/database/baaa028}, + issn = {17580463}, + pmid = {32353878} +} + +@article{Sosnin2019ComparativeSpace, + title = {{Comparative Study of Multitask Toxicity Modeling on a Broad Chemical Space}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Sosnin, Sergey and Karlov, Dmitry and Tetko, Igor V. and Fedorov, Maxim V.}, + number = {3}, + month = {3}, + pages = {1062--1072}, + volume = {59}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.jcim.8b00685}, + issn = {15205142}, + pmid = {30589269} +} + +@article{Landeta2015CompoundsBacteria, + title = {{Compounds targeting disulfide bond forming enzyme DsbB of Gram-negative bacteria}}, + year = {2015}, + journal = {Nature Chemical Biology}, + author = {Landeta, Cristina and Blazyk, Jessica L. and Hatahet, Feras and Meehan, Brian M. and Eser, Markus and Myrick, Alissa and Bronstain, Ludmila and Minami, Shoko and Arnold, Holly and Ke, Na and Rubin, Eric J. and Furie, Barbara C. and Furie, Bruce and Beckwith, Jon and Dutton, Rachel and Boyd, Dana}, + doi = {10.1038/nchembio.1752}, + issn = {15524469} +} + +@article{Landeta2015CompoundsBacteriab, + title = {{Compounds targeting disulfide bond forming enzyme DsbB of Gram-negative bacteria}}, + year = {2015}, + journal = {Nature Chemical Biology}, + author = {Landeta, Cristina and Blazyk, Jessica L. and Hatahet, Feras and Meehan, Brian M. and Eser, Markus and Myrick, Alissa and Bronstain, Ludmila and Minami, Shoko and Arnold, Holly and Ke, Na and Rubin, Eric J. and Furie, Barbara C. and Furie, Bruce and Beckwith, Jon and Dutton, Rachel and Boyd, Dana}, + number = {4}, + month = {4}, + pages = {292--298}, + volume = {11}, + publisher = {Nature Publishing Group}, + doi = {10.1038/nchembio.1752}, + issn = {15524469} +} + +@article{Gavenonis2014ComprehensiveDesign, + title = {{Comprehensive analysis of loops at protein-protein interfaces for macrocycle design}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Gavenonis, Jason and Sheneman, Bradley A. and Siegert, Timothy R. and Eshelman, Matthew R. and Kritzer, Joshua A.}, + number = {9}, + pages = {716--722}, + volume = {10}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1580}, + doi = {10.1038/nchembio.1580}, + issn = {15524469} +} + +@article{Gavenonis2014ComprehensiveDesignb, + title = {{Comprehensive analysis of loops at protein-protein interfaces for macrocycle design}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Gavenonis, Jason and Sheneman, Bradley A. and Siegert, Timothy R. and Eshelman, Matthew R. and Kritzer, Joshua A.}, + number = {9}, + pages = {716--722}, + volume = {10}, + doi = {10.1038/nchembio.1580}, + issn = {15524469} +} + +@article{Khan2012ComprehensiveDrugs, + title = {{Comprehensive data-driven analysis of the impact of chemoinformatic structure on the genome-wide biological response profiles of cancer cells to 1159 drugs}}, + year = {2012}, + journal = {BMC Bioinformatics}, + author = {Khan, Suleiman A. and Faisal, Ali and Mpindi, John P. and Parkkinen, Juuso A. and Kalliokoski, Tuomo and Poso, Antti and Kallioniemi, Olli P. and Wennerberg, Krister and Kaski, Samuel}, + number = {1}, + pages = {1}, + volume = {13}, + publisher = {BMC Bioinformatics}, + url = {BMC Bioinformatics}, + doi = {10.1186/1471-2105-13-112}, + issn = {14712105} +} + +@article{Schulz-gasch2016ComprehensiveGuide, + title = {{Comprehensive Guide}}, + year = {2016}, + author = {Schulz-gasch, Tanja and Ehrlich, Hans-christian and Guba, Wolfgang and Rarey, Matthias} +} + +@article{Bickerton2011ComprehensiveDatabase, + title = {{Comprehensive, atomic-level characterization of structurally characterized protein-protein interactions: The PICCOLO database}}, + year = {2011}, + journal = {BMC Bioinformatics}, + author = {Bickerton, George R. and Higueruelo, Alicia P. and Blundell, Tom L.}, + number = {July}, + volume = {12}, + doi = {10.1186/1471-2105-12-313}, + issn = {14712105} +} + +@article{Isvoran2013ComputationalBinding, + title = {{Computational analysis of protein-protein interfaces involving an alpha helix: Insights for terphenyl-like molecules binding}}, + year = {2013}, + journal = {BMC Pharmacology and Toxicology}, + author = {Isvoran, Adriana and Craciun, Dana and Martiny, Virginie and Sperandio, Olivier and Miteva, Maria A.}, + volume = {14}, + isbn = {2050-6511}, + doi = {10.1186/2050-6511-14-31}, + issn = {20506511}, + pmid = {23768251} +} + +@article{Medema2015ComputationalDiscovery, + title = {{Computational approaches to natural product discovery}}, + year = {2015}, + journal = {Nature Chemical Biology}, + author = {Medema, Marnix H. and Fischbach, Michael A.}, + number = {9}, + pages = {639--648}, + volume = {11}, + doi = {10.1038/nchembio.1884}, + issn = {15524469} +} + +@article{Ivetac2012ComputationalDesign, + title = {{Computational Drug Discovery and Design}}, + year = {2012}, + journal = {Computational Drug Discovery and Design}, + author = {Ivetac, Anthony and Mccammon, J Andrew}, + number = {1}, + pages = {3--12}, + volume = {819}, + url = {http://link.springer.com/10.1007/978-1-61779-465-0}, + isbn = {978-1-61779-464-3}, + doi = {10.1007/978-1-61779-465-0}, + keywords = {allosteric, binding site, docking, drug design, molecular dynamics simulation} +} + +@article{Wang2016ComputationalMolecules, + title = {{Computational probing protein-protein interactions targeting small molecules}}, + year = {2016}, + journal = {Bioinformatics}, + author = {Wang, Yong Cui and Chen, Shi Long and Deng, Nai Yang and Wang, Yong}, + number = {2}, + pages = {226--234}, + volume = {32}, + doi = {10.1093/bioinformatics/btv528}, + issn = {14602059} +} + +@article{Hasselgren2018ComputationalDiscovery., + title = {{Computational Toxicology and Drug Discovery.}}, + year = {2018}, + journal = {Methods in molecular biology (Clifton, N.J.)}, + author = {Hasselgren, Catrin and Myatt, Glenn J}, + pages = {233--244}, + volume = {1800}, + url = {http://link.springer.com/10.1007/978-1-4939-7899-1_11 http://www.ncbi.nlm.nih.gov/pubmed/29934896}, + doi = {10.1007/978-1-4939-7899-1{\_}11}, + issn = {1940-6029}, + pmid = {29934896}, + keywords = {Computational toxicology, Drug discovery, Hit identification, Lead identification, Lead optimization} +} + +@article{Gokhale2011ConformationallyCD58, + title = {{Conformationally constrained peptides from CD2 to modulate protein-protein interactions between CD2 and CD58}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Gokhale, Ameya and Weldeghiorghis, Thomas K. and Taneja, Veena and Satyanarayanajois, Seetharama D.}, + number = {15}, + pages = {5307--5319}, + volume = {54}, + doi = {10.1021/jm200004e}, + issn = {00222623} +} + +@article{Tarcsay2013ContributionsPromiscuity, + title = {{Contributions of molecular properties to drug promiscuity}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Tarcsay, Ãkos and Keser{\'{u}}, György M.}, + number = {5}, + pages = {1789--1795}, + volume = {56}, + doi = {10.1021/jm301514n}, + issn = {00222623} +} + +@misc{Duvenaud2015ConvolutionalFingerprints, + title = {{Convolutional Networks on Graphs for Learning Molecular Fingerprints}}, + year = {2015}, + author = {Duvenaud, David K. and Maclaurin, Dougal and Iparraguirre, Jorge and Bombarell, Rafael and Hirzel, Timothy and Aspuru-Guzik, Alan and Adams, Ryan P.}, + pages = {2224--2232}, + url = {https://papers.nips.cc/paper/5954-convolutional-networks-on-graphs-for-learning-molecular-fingerprints} +} + +@article{Pan2014CoreInteraction, + title = {{Core modification of substituted piperidines as Novel inhibitors of HDM2-p53 protein-protein interaction}}, + year = {2014}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Pan, Weidong and Lahue, Brian R. and Ma, Yao and Nair, Latha G. and Shipps, Gerald W. and Wang, Yaolin and Doll, Ronald and Bogen, Stéphane L.}, + number = {8}, + pages = {1983--1986}, + volume = {24}, + doi = {10.1016/j.bmcl.2014.02.055}, + issn = {14643405}, + keywords = {Cancer, HDM2, Protein-protein interaction, p53} +} + +@article{Pan2014CoreInteractionb, + title = {{Core modification of substituted piperidines as Novel inhibitors of HDM2-p53 protein-protein interaction}}, + year = {2014}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Pan, Weidong and Lahue, Brian R. and Ma, Yao and Nair, Latha G. and Shipps, Gerald W. and Wang, Yaolin and Doll, Ronald and Bogen, Stéphane L.}, + number = {8}, + pages = {1983--1986}, + volume = {24}, + doi = {10.1016/j.bmcl.2014.02.055}, + issn = {14643405}, + keywords = {Cancer, HDM2, Protein-protein interaction, p53} +} + +@article{Busse2013Corrigendum:Control, + title = {{Corrigendum: Global quantification of mammalian gene expression control}}, + year = {2013}, + journal = {Nature}, + author = {Busse, Dorothea and Li, Na and Dittmar, Gunnar and Schuchhardt, Johannes and Wolf, Jana and Chen, Wei and Selbach, Matthias}, + number = {7439}, + pages = {126--127}, + volume = {495}, + doi = {10.1038/nature11848}, + issn = {00280836} +} + +@article{South2020COVID-19Consequences, + title = {{COVID-19, ACE2 and the Cardiovascular Consequences}}, + year = {2020}, + journal = {American Journal of Physiology-Heart and Circulatory Physiology}, + author = {South, Andrew Michael and Diz, Debra and Chappell, Mark C.}, + month = {3}, + publisher = {American Physiological Society}, + doi = {10.1152/ajpheart.00217.2020}, + issn = {0363-6135} +} + +@article{Renaud2018Cryo-EMProspects, + title = {{Cryo-EM in drug discovery: achievements, limitations and prospects}}, + year = {2018}, + journal = {Nature Reviews Drug Discovery}, + author = {Renaud, Jean-Paul and Chari, Ashwin and Ciferri, Claudio and Liu, Wen-ti and R{\'{e}}migy, Hervé-William and Stark, Holger and Wiesmann, Christian}, + number = {7}, + month = {6}, + pages = {471--492}, + volume = {17}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/29880918 http://www.nature.com/doifinder/10.1038/nrd.2018.77}, + doi = {10.1038/nrd.2018.77}, + issn = {1474-1776}, + pmid = {29880918} +} + +@article{Song2018Cryo-EMACE2, + title = {{Cryo-EM structure of the SARS coronavirus spike glycoprotein in complex with its host cell receptor ACE2}}, + year = {2018}, + journal = {PLoS Pathogens}, + author = {Song, Wenfei and Gui, Miao and Wang, Xinquan and Xiang, Ye}, + doi = {10.1371/journal.ppat.1007236}, + issn = {15537374} +} + +@misc{Vajda2018CrypticDruggability, + title = {{Cryptic binding sites on proteins: definition, detection, and druggability}}, + year = {2018}, + booktitle = {Current Opinion in Chemical Biology}, + author = {Vajda, Sandor and Beglov, Dmitri and Wakefield, Amanda E. and Egbert, Megan and Whitty, Adrian}, + doi = {10.1016/j.cbpa.2018.05.003}, + issn = {18790402} +} + +@article{Vajda2018CrypticDruggability., + title = {{Cryptic binding sites on proteins: definition, detection, and druggability.}}, + year = {2018}, + journal = {Current opinion in chemical biology}, + author = {Vajda, Sandor and Beglov, Dmitri and Wakefield, Amanda E and Egbert, Megan and Whitty, Adrian}, + month = {6}, + pages = {1--8}, + volume = {44}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1367593118300589 http://www.ncbi.nlm.nih.gov/pubmed/29800865 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC6088748}, + doi = {10.1016/j.cbpa.2018.05.003}, + issn = {1879-0402}, + pmid = {29800865} +} + +@article{Stanfield1990CrystalA, + title = {{Crystal structures of an antibody to a peptide and its complex with peptide antigen at 2.8 A}}, + year = {1990}, + journal = {Science}, + author = {Stanfield, R. and Fieser, T. and Lerner, R. and Wilson, I.}, + number = {4956}, + month = {5}, + pages = {712--719}, + volume = {248}, + publisher = {American Association for the Advancement of Science}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/2333521 http://www.sciencemag.org/cgi/doi/10.1126/science.2333521}, + doi = {10.1126/science.2333521}, + issn = {0036-8075}, + pmid = {2333521} +} + +@article{Stanfield1990CrystalAb, + title = {{Crystal structures of an antibody to a peptide and its complex with peptide antigen at 2.8 A}}, + year = {1990}, + journal = {Science}, + author = {Stanfield, R. and Fieser, T. and Lerner, R. and Wilson, I.}, + number = {4956}, + month = {5}, + pages = {712--719}, + volume = {248}, + publisher = {American Association for the Advancement of Science}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/2333521 http://www.sciencemag.org/cgi/doi/10.1126/science.2333521}, + doi = {10.1126/science.2333521}, + issn = {0036-8075}, + pmid = {2333521} +} + +@article{Zhao2015CurrentSpace, + title = {{Current kinase inhibitors cover a tiny fraction of fragment space}}, + year = {2015}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Zhao, Hongtao and Caflisch, Amedeo}, + number = {11}, + pages = {2372--2376}, + volume = {25}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2015.04.005}, + doi = {10.1016/j.bmcl.2015.04.005}, + issn = {14643405}, + keywords = {Chemical space, Fragment-based drug discovery, Fragmentation, Kinase, Tricyclic ring systems} +} + +@article{NhCycloadditionsMultip, + title = {{Cycloadditions of Unsaturated Species 1 , 3-  dipolar cycloaddition reactions Nucleophilic substitution chemistry Epoxide ring-  opening reactions Carbonyl chemistry of the “ non-  aldol †type Chloroformate + amine Additions to carbon-  carbon multip}}, + author = {Nh, S}, + pages = {3--4} +} + +@article{Park2004DR, + title = {{D is c o v e ry o f P o te n t An ta g o n is ts o f th e An tia p o p to tic P ro te in XIAP fo r th e Tre a tm e n t o f Ca n c e r}}, + year = {2004}, + author = {Park, Abbott}, + pages = {4417--4426} +} + +@article{Du2008D77LEDGF/p75, + title = {{D77, one benzoic acid derivative, functions as a novel anti-HIV-1 inhibitor targeting the interaction between integrase and cellular LEDGF/p75}}, + year = {2008}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Du, Li and Zhao, Yaxue and Chen, Jing and Yang, Liumeng and Zheng, Yongtang and Tang, Yun and Shen, Xu and Jiang, Hualiang}, + number = {1}, + pages = {139--144}, + volume = {375}, + doi = {10.1016/j.bbrc.2008.07.139}, + issn = {0006291X}, + keywords = {HIV-1 integrase, Lens epithelium-derived growth factor (LEDGF/p75), Molecular docking, Site-directed mutagenesis, Surface plasmon resonance (SPR), Yeast two-hybrid assay} +} + +@book{2020DassaultSystemes, + title = {{Dassault Syst{\`{e}}mes BIOVIA, Pipeline Pilot,9.5, San Diego: Dassault Syst{\`{e}}mes,}}, + year = {2020} +} + +@article{Yongye2012DataCompounds, + title = {{Data mining of protein-binding profiling data identifies structural modifications that distinguish selective and promiscuous compounds}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Yongye, Austin B. and Medina-Franco, José L.}, + number = {9}, + pages = {2454--2461}, + volume = {52}, + doi = {10.1021/ci3002606}, + issn = {15499596} +} + +@book{Witten2011DataEBook, + title = {{Data Mining: Practical Machine Learning Tools and Techniques (Google eBook)}}, + year = {2011}, + booktitle = {Complementary literature None}, + author = {Witten, Ian H and Frank, Eibe and Hall, Mark a}, + pages = {664}, + url = {http://books.google.com/books?id=bDtLM8CODsQC&pgis=1}, + isbn = {0080890369}, + issn = {14337851} +} + +@article{Golbraikh2014DataQSAR, + title = {{Data set modelability by QSAR}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Golbraikh, Alexander and Muratov, Eugene and Fourches, Denis and Tropsha, Alexander}, + number = {1}, + pages = {1--4}, + volume = {54}, + doi = {10.1021/ci400572x}, + issn = {15499596} +} + +@article{Agarwala2018DatabaseInformation, + title = {{Database resources of the National Center for Biotechnology Information}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Agarwala, Richa and Barrett, Tanya and Beck, Jeff and Benson, Dennis A. and Bollin, Colleen and Bolton, Evan and Bourexis, Devon and Brister, J. Rodney and Bryant, Stephen H. and Canese, Kathi and Cavanaugh, Mark and Charowhas, Chad and Clark, Karen and Dondoshansky, Ilya and Feolo, Michael and Fitzpatrick, Lawrence and Funk, Kathryn and Geer, Lewis Y. and Gorelenkov, Viatcheslav and Graeff, Alan and Hlavina, Wratko and Holmes, Brad and Johnson, Mark and Kattman, Brandi and Khotomlianski, Viatcheslav and Kimchi, Avi and Kimelman, Michael and Kimura, Masato and Kitts, Paul and Klimke, William and Kotliarov, Alex and Krasnov, Sergey and Kuznetsov, Anatoliy and Landrum, Melissa J. and Landsman, David and Lathrop, Stacy and Lee, Jennifer M. and Leubsdorf, Carl and Lu, Zhiyong and Madden, Thomas L. and Marchler-Bauer, Aron and Malheiro, Adriana and Meric, Peter and Karsch-Mizrachi, Ilene and Mnev, Anatoly and Murphy, Terence and Orris, Rebecca and Ostell, James and O'Sullivan, Christopher and Palanigobu, Vasuki and Panchenko, Anna R. and Phan, Lon and Pierov, Borys and Pruitt, Kim D. and Rodarmer, Kurt and Sayers, Eric W. and Schneider, Valerie and Schoch, Conrad L. and Schuler, Gregory D. and Sherry, Stephen T. and Siyan, Karanjit and Soboleva, Alexandra and Soussov, Vladimir and Starchenko, Grigory and Tatusova, Tatiana A. and Thibaud-Nissen, Francoise and Todorov, Kamen and Trawick, Bart W. and Vakatov, Denis and Ward, Minghong and Yaschenko, Eugene and Zasypkin, Aleksandr and Zbicz, Kerry}, + number = {D1}, + pages = {D8-D13}, + volume = {46}, + doi = {10.1093/nar/gkx1095}, + issn = {13624962} +} + +@article{Agarwala2017DatabaseInformation, + title = {{Database Resources of the National Center for Biotechnology Information}}, + year = {2017}, + journal = {Nucleic Acids Research}, + author = {Agarwala, Richa and Barrett, Tanya and Beck, Jeff and Benson, Dennis A. and Bollin, Colleen and Bolton, Evan and Bourexis, Devon and Brister, J. Rodney and Bryant, Stephen H. and Canese, Kathi and Charowhas, Chad and Clark, Karen and DiCuccio, Michael and Dondoshansky, Ilya and Feolo, Michael and Funk, Kathryn and Geer, Lewis Y. and Gorelenkov, Viatcheslav and Hlavina, Wratko and Hoeppner, Marilu and Holmes, Brad and Johnson, Mark and Khotomlianski, Viatcheslav and Kimchi, Avi and Kimelman, Michael and Kitts, Paul and Klimke, William and Krasnov, Sergey and Kuznetsov, Anatoliy and Landrum, Melissa J. and Landsman, David and Lee, Jennifer M. and Lipman, David J. and Lu, Zhiyong and Madden, Thomas L. and Madej, Tom and Marchler-Bauer, Aron and Karsch-Mizrachi, Ilene and Murphy, Terence and Orris, Rebecca and Ostell, James and O'Sullivan, Christopher and Palanigobu, Vasuki and Panchenko, Anna R. and Phan, Lon and Pruitt, Kim D. and Rodarmer, Kurt and Rubinstein, Wendy and Sayers, Eric W. and Schneider, Valerie and Schoch, Conrad L. and Schuler, Gregory D. and Sherry, Stephen T. and Sirotkin, Karl and Siyan, Karanjit and Slotta, Douglas and Soboleva, Alexandra and Soussov, Vladimir and Starchenko, Grigory and Tatusova, Tatiana A. and Todorov, Kamen and Trawick, Bart W. and Vakatov, Denis and Wang, Yanli and Ward, Minghong and Wilbur, W. John and Yaschenko, Eugene and Zbicz, Kerry}, + doi = {10.1093/nar/gkw1071}, + issn = {13624962}, + pmid = {27899561} +} + +@article{Sattarov2019DeMapping, + title = {{De Novo Molecular Design by Combining Deep Autoencoder Recurrent Neural Networks with Generative Topographic Mapping}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Sattarov, Boris and Baskin, Igor I. and Horvath, Dragos and Marcou, Gilles and Bjerrum, Esben Jannik and Varnek, Alexandre}, + number = {3}, + month = {3}, + pages = {1182--1196}, + volume = {59}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.jcim.8b00751}, + issn = {15205142}, + pmid = {30785751} +} + +@article{Pogany2019DeSMILES, + title = {{De Novo Molecule Design by Translating from Reduced Graphs to SMILES}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Pog{\'{a}}ny, Peter and Arad, Navot and Genway, Sam and Pickett, Stephen D.}, + number = {3}, + month = {3}, + pages = {1136--1146}, + volume = {59}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.jcim.8b00626}, + issn = {15205142} +} + +@article{Brady2014De-novoCharacterization, + title = {{De-novo designed library of benzoylureas as inhibitors of BCL-X L: Synthesis, structural and biochemical characterization}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Brady, Ryan M. and Vom, Amelia and Roy, Michael J. and Toovey, Nathan and Smith, Brian J. and Moss, Rebecca M. and Hatzis, Effie and Huang, David C.S. and Parisot, John P. and Yang, Hong and Street, Ian P. and Colman, Peter M. and Czabotar, Peter E. and Baell, Jonathan B. and Lessene, Guillaume}, + number = {4}, + pages = {1323--1343}, + volume = {57}, + doi = {10.1021/jm401948b}, + issn = {00222623} +} + +@article{Fayne2013De-peptidisingMolecules, + title = {{De-peptidising protein-protein interactions - Big jobs for small molecules}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Fayne, Darren}, + number = {4}, + pages = {e467-e474}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2013.08.002}, + doi = {10.1016/j.ddtec.2013.08.002}, + issn = {17406749} +} + +@article{Gainza2020DecipheringLearning, + title = {{Deciphering interaction fingerprints from protein molecular surfaces using geometric deep learning}}, + year = {2020}, + journal = {Nature Methods}, + author = {Gainza, P. and Sverrisson, F. and Monti, F. and Rodol{\`{a}}, E. and Boscaini, D. and Bronstein, M. M. and Correia, B. E.}, + number = {2}, + month = {2}, + pages = {184--192}, + volume = {17}, + publisher = {Nature Research}, + doi = {10.1038/s41592-019-0666-6}, + issn = {15487105}, + pmid = {31819266} +} + +@article{Gainza2020DecipheringLearningb, + title = {{Deciphering interaction fingerprints from protein molecular surfaces using geometric deep learning}}, + year = {2020}, + journal = {Nature Methods}, + author = {Gainza, P. and Sverrisson, F. and Monti, F. and Rodol{\`{a}}, E. and Boscaini, D. and Bronstein, M. M. and Correia, B. E.}, + number = {2}, + month = {2}, + pages = {184--192}, + volume = {17}, + publisher = {Nature Research}, + doi = {10.1038/s41592-019-0666-6}, + issn = {15487105}, + pmid = {31819266}, + keywords = {Machine learning, Protein function predictions, Protein structure predictions, Proteins} +} + +@article{Mater2019DeepChemistry, + title = {{Deep Learning in Chemistry}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Mater, Adam C. and Coote, Michelle L.}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.jcim.9b00266}, + issn = {15205142}, + keywords = {Cheminformatics, Computational chemistry, Deep learning, Drug design, Machine learning, Materials design, Open sourcing, Quantum mechanical calculations, Representation learning, Synthesis planning} +} + +@article{Cai2019DeepCardiotoxicity, + title = {{Deep Learning-Based Prediction of Drug-Induced Cardiotoxicity}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Cai, Chuipu and Guo, Pengfei and Zhou, Yadi and Zhou, Jingwei and Wang, Qi and Zhang, Fengxue and Fang, Jiansong and Cheng, Feixiong}, + number = {3}, + month = {3}, + pages = {1073--1084}, + volume = {59}, + publisher = {American Chemical Society}, + doi = {10.1021/acs.jcim.8b00769}, + issn = {15205142}, + pmid = {30715873} +} + +@article{Pu2019Deepdrug3D:Network, + title = {{Deepdrug3D: Classification of ligand-binding pockets in proteins with a convolutional neural network}}, + year = {2019}, + journal = {PLoS Computational Biology}, + author = {Pu, Limeng and Govindaraj, Rajiv Gandhi and Lemoine, Jeffrey Mitchell and Wu, Hsiao Chun and Brylinski, Michal}, + number = {2}, + month = {2}, + pages = {e1006718}, + volume = {15}, + publisher = {Public Library of Science}, + doi = {10.1371/journal.pcbi.1006718}, + issn = {15537358} +} + +@article{Pu2019Deepdrug3D:Networkb, + title = {{Deepdrug3D: Classification of ligand-binding pockets in proteins with a convolutional neural network}}, + year = {2019}, + journal = {PLoS Computational Biology}, + author = {Pu, Limeng and Govindaraj, Rajiv Gandhi and Lemoine, Jeffrey Mitchell and Wu, Hsiao Chun and Brylinski, Michal}, + number = {2}, + month = {2}, + volume = {15}, + publisher = {Public Library of Science}, + doi = {10.1371/journal.pcbi.1006718}, + issn = {15537358} +} + +@article{Pu2019DeepDrug3D:Network., + title = {{DeepDrug3D: Classification of ligand-binding pockets in proteins with a convolutional neural network.}}, + year = {2019}, + journal = {PLoS computational biology}, + author = {Pu, Limeng and Govindaraj, Rajiv Gandhi and Lemoine, Jeffrey Mitchell and Wu, Hsiao-Chun and Brylinski, Michal}, + editor = {Schneidman-Duhovny, Dina}, + number = {2}, + month = {2}, + pages = {e1006718}, + volume = {15}, + url = {http://dx.plos.org/10.1371/journal.pcbi.1006718 http://www.ncbi.nlm.nih.gov/pubmed/30716081 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC6375647}, + doi = {10.1371/journal.pcbi.1006718}, + issn = {1553-7358}, + pmid = {30716081} +} + +@misc{DeepGOPlus:Academic, + title = {{DeepGOPlus: improved protein function prediction from sequence | Bioinformatics | Oxford Academic}}, + url = {https://academic.oup.com/bioinformatics/article/36/2/422/5539866} +} + +@article{Jimenez2017DeepSite:Networks, + title = {{DeepSite: Protein-binding site predictor using 3D-convolutional neural networks}}, + year = {2017}, + journal = {Bioinformatics}, + author = {Jim{\'{e}}nez, J. and Doerr, S. and Mart{\'{i}}nez-Rosell, G. and Rose, A. S. and De Fabritiis, G.}, + number = {19}, + pages = {3036--3042}, + volume = {33}, + publisher = {Oxford University Press}, + doi = {10.1093/bioinformatics/btx350}, + issn = {14602059}, + pmid = {28575181} +} + +@article{Wager2010DefiningAttributes, + title = {{Defining desirable central nervous system drug space through the alignment of molecular properties, in vitro ADME, and safety attributes}}, + year = {2010}, + journal = {ACS Chemical Neuroscience}, + author = {Wager, Travis T. and Chandrasekaran, Ramalakshmi Y. and Hou, Xinjun and Troutman, Matthew D. and Verhoest, Patrick R. and Villalobos, Anabella and Will, Yvonne}, + number = {6}, + pages = {420--434}, + volume = {1}, + doi = {10.1021/cn100007x}, + issn = {19487193}, + keywords = {CNS candidates, CNS drugs, Central nervous system (CNS), High-throughput screening, Hydrogen bond donor, Lipophilicity, Madin-Darby canine kidney, Molecular weight, Most basic pKa, Passive permeability, Polarity, Topological polar surface area} +} + +@article{Brustle2002DescriptorsDrug-likeness, + title = {{Descriptors, physical properties, and drug-likeness}}, + year = {2002}, + journal = {Journal of Medicinal Chemistry}, + author = {Br{\"{u}}stle, Matthias and Beck, Bernd and Schindler, Torsten and King, William and Mitchell, Timothy and Clark, Timothy}, + number = {16}, + pages = {3345--3355}, + volume = {45}, + doi = {10.1021/jm011027b}, + issn = {00222623} +} + +@article{Zwierzyna2015DesignSets, + title = {{Design and characterization of chemical space networks for different compound data sets}}, + year = {2015}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Zwierzyna, Magdalena and Vogt, Martin and Maggiora, Gerald M. and Bajorath, Jürgen}, + number = {2}, + pages = {113--125}, + volume = {29}, + doi = {10.1007/s10822-014-9821-4}, + issn = {15734951}, + keywords = {Bioactive compounds, Chemical space, Networks, Similarity, Statistical analysis, Topology} +} + +@article{Li2014DesignLEDGF/p75, + title = {{Design and discovery of flavonoid-based HIV-1 integrase inhibitors targeting both the active site and the interaction with LEDGF/p75}}, + year = {2014}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Li, Bo Wen and Zhang, Feng Hua and Serrao, Erik and Chen, Huan and Sanchez, Tino W. and Yang, Liu Meng and Neamati, Nouri and Zheng, Yong Tang and Wang, Hui and Long, Ya Qiu}, + number = {12}, + pages = {3146--3158}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2014.04.016}, + doi = {10.1016/j.bmc.2014.04.016}, + issn = {14643391}, + keywords = {Chelation, Flavonoid, HIV-1 integrase inhibitors, LEDGF/p75, Strand transfer} +} + +@article{Tran2009DesignInhibitors, + title = {{Design and optimisation of potent gp120-CD4 inhibitors}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Tran, Thien Duc and Adam, Fiona M. and Calo, Frederick and Fenwick, David R. and Fok-Seang, Juin and Gardner, Iain and Hay, Duncan A. and Perros, Manos and Rawal, Jaiessh and Middleton, Donald S. and Parkinson, Tanya and Pickford, Christopher and Platts, Michelle and Randall, Amy and Stephenson, Peter T. and Vuong, Hannah and Williams, David H.}, + number = {17}, + pages = {5250--5255}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.06.102}, + issn = {0960894X}, + keywords = {Antiviral, HIV-1, gp120-CD4 inhibitor} +} + +@article{Kohli2012DesignTherapy, + title = {{Design and rationale of the LAPLACE-TIMI 57 trial: A phase II, double-blind, placebo-controlled study of the efficacy and tolerability of a monoclonal antibody inhibitor of PCSK 9 in subjects with hypercholesterolemia on background statin therapy}}, + year = {2012}, + journal = {Clinical Cardiology}, + author = {Kohli, Payal and Desai, Nihar R. and Giugliano, Robert P. and Kim, Jae B. and Somaratne, Ransi and Huang, Fannie and Knusel, Beat and McDonald, Shannon and Abrahamsen, Timothy and Wasserman, Scott M. and Scott, Robert and Sabatine, Marc S.}, + number = {7}, + pages = {385--391}, + volume = {35}, + doi = {10.1002/clc.22014}, + issn = {01609289} +} + +@article{Guckian2008DesignInhibitors, + title = {{Design and synthesis of a series of meta aniline-based LFA-1 ICAM inhibitors}}, + year = {2008}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Guckian, Kevin M. and Lin, Edward Yin Shiang and Silvian, Laura and Friedman, Jessica E. and Chin, Donovan and Scott, Daniel M.}, + number = {19}, + pages = {5249--5251}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.08.061}, + issn = {0960894X}, + keywords = {ICAM, LFA-1, LFA-1/ICAM inhibitors, i-Domain} +} + +@article{PinachoCrisostomo2009DesignDomain, + title = {{Design and synthesis of a simplified inhibitor for XIAP-BIR3 domain}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Pinacho Cris{\'{o}}stomo, Fernando R. and Feng, Yongmei and Zhu, Xuejun and Welsh, Kate and An, Jing and Reed, John C. and Huang, Ziwei}, + number = {22}, + pages = {6413--6418}, + volume = {19}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2009.09.058}, + doi = {10.1016/j.bmcl.2009.09.058}, + issn = {0960894X}, + keywords = {Molecular simplification, Small molecule, XIAP-BIR3 domain} +} + +@article{Dehnhardt2010DesignInhibition, + title = {{Design and synthesis of novel diaminoquinazolines with in vivo efficacy for {$\beta$}-catenin/t-cell transcriptional factor 4 pathway inhibition}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Dehnhardt, Christoph M. and Venkatesan, Aranapakam M. and Chen, Zecheng and Ayral-Kaloustian, Semiramis and Dos Santos, Osvaldo Dos and Delos Santos, Efren and Curran, Kevin and Follettie, Max T. and Diesl, Veronica and Lucas, Judy and Geng, Yi and DeJoy, Susan Quinn and Petersen, Rosanne and Chaudhary, Inder and Brooijmans, Natasja and Mansour, Tarek S. and Arndt, Kim and Chen, Lei}, + number = {2}, + pages = {897--910}, + volume = {53}, + doi = {10.1021/jm901370m}, + issn = {00222623} +} + +@article{Horvath2014DesignEU-OPENSCREEN, + title = {{Design of a general-purpose European compound screening library for EU-OPENSCREEN}}, + year = {2014}, + journal = {ChemMedChem}, + author = {Horvath, Dragos and Lisurek, Michael and Rupp, Bernd and K{\"{u}}hne, Ronald and Specker, Edgar and von Kries, Jens and Rognan, Didier and Andersson, C. David and Almqvist, Fredrik and Elofsson, Mikael and Enqvist, Per Anders and Gustavsson, Anna Lena and Remez, Nikita and Mestres, Jordi and Marcou, Gilles and Varnek, Alexander and Hibert, Marcel and Quintana, Jordi and Frank, Ronald}, + number = {10}, + pages = {2309--2326}, + volume = {9}, + doi = {10.1002/cmdc.201402126}, + issn = {18607187}, + keywords = {EU-OPENSCREEN, chemical space mapping, commercial compound selection, library design, molecular diversity, self-organizing maps} +} + +@article{Venhorst2010DesignTheory, + title = {{Design of a high fragment efficiency library by molecular graph theory}}, + year = {2010}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Venhorst, Jennifer and N{\'{u}}{\~{n}}ez, Sara and Kruse, Chris G.}, + number = {9}, + pages = {499--503}, + volume = {1}, + doi = {10.1021/ml100163s}, + issn = {19485875}, + keywords = {Fragment screening, GDB-13, graph pharmacophore, ligand efficiency, trypsin inhibition, virtual screening} +} + +@article{DeLaVegaDeLeon2012DesignLandscape, + title = {{Design of a three-dimensional multitarget activity landscape}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {De La Vega De Le{\'{o}}n, Antonio and Bajorath, Jürgen}, + number = {11}, + pages = {2876--2883}, + volume = {52}, + doi = {10.1021/ci300444p}, + issn = {15499596} +} + +@article{Segers2007DesignV, + title = {{Design of protein membrane interaction inhibitors by virtual ligand screening, proof of concept with the C2 domain of factor V}}, + year = {2007}, + journal = {Proc Natl Acad Sci U S A}, + author = {Segers, K. and Sperandio, O. and Sack, M. and Fischer, R. and Miteva, M A and Rosing, J. and Nicolaes, G A and Villoutreix, B O}, + number = {31}, + pages = {12697--12702}, + volume = {104}, + url = {http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=17646652}, + isbn = {0027-8424 (Print) 0027-8424 (Linking)}, + doi = {10.1073/pnas.0701051104}, + issn = {0027-8424}, + pmid = {17646652}, + keywords = {Binding Sites, Cell Membrane/*metabolism, Drug Evaluation, Factor V/antagonists {\&} inhibitors/*chemistry/genet, Humans, Inhibitory Concentration 50, Ligands, Models, Molecular, Preclinical, Protein Binding, Protein Structure, Tertiary, Titrimetry} +} + +@article{Gogate2014DesignInteraction, + title = {{Design, synthesis, and biological evaluation of novel FAK scaffold inhibitors targeting the FAK-VEGFR3 protein-protein interaction}}, + year = {2014}, + journal = {European Journal of Medicinal Chemistry}, + author = {Gogate, Priyanka N. and Ethirajan, Manivannan and Kurenova, Elena V. and Magis, Andrew T. and Pandey, Ravindra K. and Cance, William G.}, + pages = {154--166}, + volume = {80}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2014.04.041}, + doi = {10.1016/j.ejmech.2014.04.041}, + issn = {17683254}, + keywords = {FAK scaffold inhibitor, Focal adhesion kinase, Focal adhesion targeting domain, Protein-protein interaction, Vascular endothelial growth factor receptor-3} +} + +@article{Sun2007DesignXIAP, + title = {{Design, synthesis, and characterization of a potent, nonpeptide, cell-permeable, bivalent smac mimetic that concurrently targets both the BIR2 and BIR3 domains in XIAP}}, + year = {2007}, + journal = {Journal of the American Chemical Society}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Lu, Jianfeng and Meagher, Jennifer L. and Yang, Chao Yie and Qiu, Su and Tomita, York and Ueda, Yumi and Jiang, Sheng and Krajewski, Krzysztof and Roller, Peter P. and Stuckey, Jeanne A. and Wang, Shaomeng}, + number = {49}, + pages = {15279--15294}, + volume = {129}, + doi = {10.1021/ja074725f}, + issn = {00027863} +} + +@article{Sun2009DesignCaspases, + title = {{Design, synthesis, and evaluation of potent, nonpeptidic mimetics of second mitochondria-derived activator of caspases}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Sun, Wei and Nikolovska-Coleska, Zaneta and Qin, Dongguang and Sun, Haiying and Yang, Chao Yie and Bai, Longchuang and Qiu, Su and Wang, You and Ma, Dawei and Wang, Shaomeng}, + number = {3}, + pages = {593--596}, + volume = {52}, + doi = {10.1021/jm801101z}, + issn = {00222623} +} + +@article{Feng2010DesignInhibitors, + title = {{Design, synthesis, and interaction study of quinazoline-2(1 H)-thione derivatives as novel potential Bcl-xL inhibitors}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Feng, Yu and Ding, Xiao and Chen, Tao and Chen, Lili and Liu, Fang and Jia, Xu and Luo, Xiaomin and Shen, Xu and Chen, Kaixian and Jiang, Hualiang and Wang, Hui and Liu, Hong and Liu, Dongxiang}, + number = {9}, + pages = {3465--3479}, + volume = {53}, + doi = {10.1021/jm901004c}, + issn = {00222623} +} + +@article{Feng2010DesignInhibitorsb, + title = {{Design, synthesis, and interaction study of quinazoline-2(1 H)-thione derivatives as novel potential Bcl-xL inhibitors}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Feng, Yu and Ding, Xiao and Chen, Tao and Chen, Lili and Liu, Fang and Jia, Xu and Luo, Xiaomin and Shen, Xu and Chen, Kaixian and Jiang, Hualiang and Wang, Hui and Liu, Hong and Liu, Dongxiang}, + number = {9}, + pages = {3465--3479}, + volume = {53}, + doi = {10.1021/jm901004c}, + issn = {00222623} +} + +@article{Reynes2010DesigningMethods, + title = {{Designing focused chemical libraries enriched in protein-protein interaction inhibitors using machine-learning methods}}, + year = {2010}, + journal = {PLoS Computational Biology}, + author = {Reyn{\`{e}}s, Christelle and Host, Hélène and Camproux, Anne Claude and Laconde, Guillaume and Leroux, Florence and Mazars, Anne and Deprez, Benoit and Fahraeus, Robin and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {3}, + month = {4}, + pages = {e1000695}, + volume = {6}, + isbn = {10.1371/journal.pcbi.1000695}, + doi = {10.1371/journal.pcbi.1000695}, + issn = {1553734X}, + pmid = {20221258}, + language = {English} +} + +@article{Reynes2010DesigningMethodsb, + title = {{Designing focused chemical libraries enriched in protein-protein interaction inhibitors using machine-learning methods}}, + year = {2010}, + journal = {PLoS Computational Biology}, + author = {Reyn{\`{e}}s, Christelle and Host, Hélène and Camproux, Anne Claude and Laconde, Guillaume and Leroux, Florence and Mazars, Anne and Deprez, Benoit and Fahraeus, Robin and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {3}, + pages = {20--23}, + volume = {6}, + doi = {10.1371/journal.pcbi.1000695}, + issn = {1553734X} +} + +@article{Harrison2013DesigningProteins, + title = {{Designing optimal ligand-binding proteins}}, + year = {2013}, + journal = {Nature Reviews Drug Discovery}, + author = {Harrison, Charlotte}, + number = {10}, + pages = {742--742}, + volume = {12}, + doi = {10.1038/nrd4141}, + issn = {1474-1776} +} + +@article{Claros2012DetectingMaps, + title = {{Detecting mutually exclusive interactions in protein-protein interaction maps}}, + year = {2012}, + journal = {PLoS ONE}, + author = {Claros, Carmen and Tramontano, Anna}, + number = {6}, + pages = {1--6}, + volume = {7}, + doi = {10.1371/journal.pone.0038765}, + issn = {19326203} +} + +@article{Clark2009DetectionMolecules, + title = {{Detection and assignment of common scaffolds in project databases of lead molecules}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Clark, Alex M. and Labute, Paul}, + number = {2}, + pages = {469--483}, + volume = {52}, + doi = {10.1021/jm801098a}, + issn = {00222623} +} + +@article{Kenny2003DevelopmentInteraction, + title = {{Development of a fluorescence polarization assay to screen for inhibitors of the FtsZ/ZipA interaction}}, + year = {2003}, + journal = {Analytical Biochemistry}, + author = {Kenny, Cynthia Hess and Ding, Weidong and Kelleher, Kerry and Benard, Susan and Dushin, Elizabeth Glasfeld and Sutherland, Alan G. and Mosyak, Lidia and Kriz, Ronald and Ellestad, George}, + number = {2}, + pages = {224--233}, + volume = {323}, + doi = {10.1016/j.ab.2003.08.033}, + issn = {00032697}, + keywords = {Fluorescence polarization, FtsZ, Phage display, Protein crystallography, Protein-protein interactions, ZipA} +} + +@article{Sasaki2012DevelopmentModifications, + title = {{Development of live-cell imaging probes for monitoring histone modifications}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Sasaki, Kazuki and Ito, Akihiro and Yoshida, Minoru}, + number = {6}, + pages = {1887--1892}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.01.018}, + doi = {10.1016/j.bmc.2012.01.018}, + issn = {09680896}, + keywords = {Acetylation, Bromodomain, Fluorescence, Histac, Histone, Imaging} +} + +@incollection{Voter2018DevelopmentDiseases, + title = {{Development of Protein–Protein Interaction Inhibitors for the Treatment of Infectious Diseases}}, + year = {2018}, + booktitle = {Advances in Protein Chemistry and Structural Biology}, + author = {Voter, Andrew F. and Keck, James L.}, + isbn = {9780128143421}, + doi = {10.1016/bs.apcsb.2017.07.005}, + issn = {18761623}, + keywords = {Antibiotic resistance, Antibiotics, Antiviral, Drug discovery, Protein–protein interactions, Small-molecule inhibitors} +} +@article{jo_development_2012, + title = {{Development of {$\alpha$}-helical calpain probes by mimicking a natural protein-protein interaction}}, + year = {2012}, + journal = {Journal of the American Chemical Society}, + author = {Jo, Hyunil and Meinhardt, Nataline and Wu, Yibing and Kulkarni, Swapnil and Hu, Xiaozhen and Low, Kristin E. and Davies, Peter L. and Degrado, William F. and Greenbaum, Doron C.}, + number = {42}, + pages = {17704--17713}, + volume = {134}, + doi = {10.1021/ja307599z}, + issn = {00027863} +} + +@article{weiss_dexrazoxane_1999, + title = {{Dexrazoxane ({\{}ICRF{\}}-187)}}, + author = {Weiss, G and Loyevsky, M and Gordeuk, V R}, + number = {1}, + pages = {155--158}, + volume = {32}, + issn = {0306-3623}, + pmid = {9888268}, + keywords = {Animals, Antibiotics, Antineoplastic, Antineoplastic Agents, Heart, Humans, Iron, Razoxane, Topoisomerase {\{}II{\}} Inhibitors} +} + +@article{zhao_diastereomeric_2013, + title = {{Diastereomeric Spirooxindoles as Highly Potent and Efficacious {\{}MDM{\}}2 Inhibitors}}, + author = {Zhao, Yujun and Liu, Liu and Sun, Wei and Lu, Jianfeng and Mceachern, Donna and Li, Xiaoqin and Yu, Shanghai and Bernard, Denzil and Ochsenbein, Philippe and Ferey, Vincent and Carry, Jean-Christophe and Deschamps, Jeffrey R and Sun, Duxin and Wang, Shaomeng}, + pages = {7223--7234}, + volume = {135}, + doi = {10.1021/ja3125417} +} + +@article{reyna_direct_2012, + title = {{Direct and selective small-molecule activation of proapoptotic {\{}BAX{\}}}}, + author = {Reyna, Denis E and Bellairs, Joseph A and Leshchiner, Elizaveta S and Gavathiotis, Evripidis and Walensky, Loren D}, + pages = {640--646}, + volume = {8}, + doi = {10.1038/nchembio.995} +} + +@article{nakamura_direct_2010, + title = {{Direct determination of the insulin-insulin receptor interface using transferred cross-saturation experiments}}, + author = {Nakamura, Takefumi and Takahashi, Hideo and Takahashi, Mitsuo and Shimba, Nobuhisa and Suzuki, Ei-Ichiro and Shimada, Ichio}, + pages = {1917--1922}, + volume = {53}, + doi = {10.1021/jm901099v} +} + +@article{ashkenazi_directing_2008, + title = {{Directing cancer cells to self-destruct with pro-apoptotic receptor agonists}}, + author = {Ashkenazi, Avi}, + pages = {1001--1012}, + volume = {7}, + doi = {10.1038/nrd2637} +} + +@article{grasberger_discovery_2005, + title = {{Discovery and Cocrystal Structure of Benzodiazepinedione {\{}HDM{\}}2 Antagonists That Activate p53 in Cells}}, + author = {Grasberger, Bruce L and Lu, Tianbao and Schubert, Carsten and Parks, Daniel J and Carver, Theodore E and Koblish, Holly K and Cummings, Maxwell D and LaFrance, Louis V and Milkiewicz, Karen L and Calvo, Raul R and Maguire, Diane and Lattanze, Jennifer and Franks, Carol F and Zhao, Shuyuan and Ramachandren, Kannan and Bylebyl, Gwendolyn R and Zhang, Marie and Manthey, Carl L and Petrella, Eugene C and Pantoliano, Michael W and Deckman, Ingrid C and Spurlino, John C and Maroney, Anna C and Tomczuk, Bruce E and Molloy, Christopher J and Bone, Roger F}, + pages = {909--912}, + volume = {48}, + doi = {10.1021/jm049137g} +} + +@article{allen_discovery_2009, + title = {{Discovery and optimization of chromenotriazolopyrimidines as potent inhibitors of the mouse double minute 2-tumor protein 53 protein-protein interaction}}, + author = {Allen, John G and Bourbeau, Matthew P and Wohlhieter, G Erich and Bartberger, Michael D and Michelsen, Klaus and Hungate, Randall and Gadwood, Robert C and Gaston, Rick D and Evans, Bruce and Mann, Larry W and Matison, Michael E and Schneider, Stephen and Huang, Xin and Yu, Dongyin and Andrews, Paul S and Reichelt, Andreas and Long, Alexander M and Yakowec, Peter and Yang, Evelyn Y and Lee, Tani Ann and Oliner, Jonathan D}, + pages = {7044--7053}, + volume = {52}, + doi = {10.1021/jm900681h} +} + +@article{allen_discovery_2009-1, + title = {{Discovery and Optimization of Chromenotriazolopyrimidines as Potent Inhibitors of the Mouse Double Minute 2−Tumor Protein 53 Protein−Protein Interaction}}, + author = {Allen, John G and Bourbeau, Matthew P and Wohlhieter, G Erich and Bartberger, Michael D and Michelsen, Klaus and Hungate, Randall and Gadwood, Robert C and Gaston, Rick D and Evans, Bruce and Mann, Larry W and Matison, Michael E and Schneider, Stephen and Huang, Xin and Yu, Dongyin and Andrews, Paul S and Reichelt, Andreas and Long, Alexander M and Yakowec, Peter and Yang, Evelyn Y and Lee, Tani Ann and Oliner, Jonathan D}, + pages = {7044--7053}, + volume = {52}, + doi = {10.1021/jm900681h} +} + +@article{wang_discovery_2013, + title = {{Discovery and structure-activity relationships of small molecules that block the human immunoglobulin G-human neonatal Fc receptor ({\{}hIgG{\}}-{\{}hFcRn{\}}) protein-protein interaction.}}, + author = {Wang, Zhaolin and Fraley, Cara and Mezo, Adam R}, + pages = {1253--1256}, + volume = {23}, + doi = {10.1016/j.bmcl.2013.01.014} +} + +@article{kessler_discovery_2013, + title = {{Discovery and synthesis of novel benzofurazan derivatives as inhibitors of influenza A virus.}}, + author = {Kessler, Ulrich and Castagnolo, Daniele and Pagano, Mafalda and Deodato, Davide and Bernardini, Martina and Pilger, Beatrice and Ranadheera, Charlene and Botta, Maurizio}, + doi = {10.1016/j.bmcl.2013.08.048} +} + +@article{link_discovery_2001, + title = {{Discovery and {\{}SAR{\}} of diarylsulfide cyclopropylamide {\{}LFA{\}}-1/{\{}ICAM{\}}-1 interaction antagonists.}}, + author = {Link, J T and Sorensen, B and Liu, G and Pei, Z and Reilly, E B and Leitza, S and Okasinski, G}, + pages = {973--976}, + volume = {11} +} + +@article{lu_discovery_2006, + title = {{Discovery of a Nanomolar Inhibitor of the Human Murine Double Minute 2 ({\{}MDM{\}}2)−p53 Interaction through an Integrated, Virtual Database Screening Strategy}}, + author = {Lu, Yipin and Nikolovska-Coleska, Zaneta and Fang, Xueliang and Gao, Wei and Shangary, Sanjeev and Qiu, Su and Qin, Dongguang and Wang, Shaomeng}, + pages = {3759--3762}, + volume = {49}, + doi = {10.1021/jm060023} +} + +@article{serrao_discovery_2013, + title = {{Discovery of a novel 5-carbonyl-1H-imidazole-4-carboxamide class of inhibitors of the {\{}HIV{\}}-1 integrase-{\{}LEDGF{\}}/p75 interaction.}}, + author = {Serrao, Erik and Xu, Zhong-Liang and Debnath, Bikash and Christ, Frauke and Debyser, Zeger and Long, Ya-Qiu and Neamati, Nouri}, + doi = {10.1016/j.bmc.2013.07.047} +} + +@article{petros_discovery_2010, + title = {{Discovery of a potent and selective Bcl-2 inhibitor using {\{}SAR{\}} by {\{}NMR{\}}}}, + author = {Petros, Andrew M and Huth, Jeffrey R and Oost, Thorsten and Park, Cheol-Min and Ding, Hong and Wang, Xilu and Zhang, Haichao and Nimmer, Paul and Mendoza, Renaldo and Sun, Chaohong and Mack, Jamey and Walter, Karl and Dorwin, Sarah and Gramling, Emily and Ladror, Uri and Rosenberg, Saul H and Elmore, Steven W and Fesik, Stephen W and Hajduk, Philip J}, + pages = {6587--6591}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.09.033} +} + +@article{frank_discovery_2013, + title = {{Discovery of a potent inhibitor of replication protein A protein-protein interactions using a fragment-linking approach}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Frank, Andreas O. and Feldkamp, Michael D. and Kennedy, J. Phillip and Waterson, Alex G. and Pelz, Nicholas F. and Patrone, James D. and Vangamudi, Bhavatarini and Camper, Demarco V. and Rossanese, Olivia W. and Chazin, Walter J. and Fesik, Stephen W.}, + number = {22}, + pages = {9242--9250}, + volume = {56}, + doi = {10.1021/jm401333u}, + issn = {00222623} +} + +@article{petros_discovery_2006, + title = {{Discovery of a potent inhibitor of the antiapoptotic protein Bcl-{\{}xL{\}} from {\{}NMR{\}} and parallel synthesis.}}, + author = {Petros, Andrew M and Dinges, Jurgen and Augeri, David J and Baumeister, Steven A and Betebenner, David A and Bures, Mark G and Elmore, Steven W and Hajduk, Philip J and Joseph, Mary K and Landis, Shelley K and Nettesheim, David G and Rosenberg, Saul H and Shen, Wang and Thomas, Sheela and Wang, Xilu and Zanze, Irini and Zhang, Haichao and Fesik, Stephen W}, + pages = {656--663}, + volume = {49}, + doi = {10.1021/jm0507532} +} + +@article{braisted_discovery_2003, + title = {{Discovery of a Potent Small Molecule {\{}IL{\}}-2 Inhibitor through Fragment Assembly}}, + author = {Braisted, Andrew C and Oslob, Johan D and Delano, Warren L and Hyde, Jennifer and McDowell, Robert S and Waal, Nathan and Yu, Chul and Arkin, Michelle R and Raimundo, Brian C}, + pages = {3714--3715}, + volume = {125}, + doi = {10.1021/ja034247i} +} + +@article{flygare_discovery_2012, + title = {{Discovery of a Potent Small-Molecule Antagonist of Inhibitor of Apoptosis ({\{}IAP{\}}) Proteins and Clinical Candidate for the Treatment of Cancer ({\{}GDC{\}}-0152).}}, + author = {Flygare, John A and Beresini, Maureen and Budha, Nageshwar and Chan, Helen and Chan, Iris T and Cheeti, Sravanthi and Cohen, Frederick and Deshayes, Kurt and Doerner, Karl and Eckhardt, S Gail and Elliott, Linda O and Feng, Bainian and Franklin, Matthew C and Reisner, Stacy Frankovitz and Gazzard, Lewis and Halladay, Jason and Hymowitz, Sarah G and La, Hank and Lorusso, Patricia and Maurer, Brigitte and Murray, Lesley and Plise, Emile and Quan, Clifford and Stephan, Jean-Philippe and Young, Shin G and Tom, Jeffrey and Tsui, Vickie and Um, Joanne and Varfolomeev, Eugene and Vucic, Domagoj and Wagner, Andrew J and Wallweber, Heidi J A and Wang, Lan and Ware, Joseph and Wen, Zhaoyang and Wong, Harvey and Wong, Jonathan M and Wong, Melisa and Wong, Susan and Yu, Ron and Zobel, Kerry and Fairbrother, Wayne J}, + doi = {10.1021/jm300060k} +} + +@article{williams_discovery_2009, + title = {{Discovery of a small molecule inhibitor through interference with the gp120–{\{}CD{\}}4 interaction}}, + author = {Williams, David H and Adam, Fiona and Fenwick, David R and Fok-Seang, Juin and Gardner, Iain and Hay, Duncan and Jaiessh, Rawal and Middleton, Donald S and Mowbray, Charles E and Parkinson, Tanya and Perros, Manos and Pickford, Christopher and Platts, Michelle and Randall, Amy and Siddle, Daniel and Stephenson, Peter T and Tran, Thien-Duc and Vuong, Hannah}, + pages = {5246--5249}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.06.080} +} + +@article{lee_discovery_2004, + title = {{Discovery of a small molecule that inhibits the interaction of anthrax edema factor with its cellular activator, calmodulin}}, + author = {Lee, Young-Sam and Bergson, Pamela and He, Wei Song and Mrksich, Milan and Tang, Wei-Jen}, + pages = {1139--1146}, + volume = {11}, + doi = {10.1016/j.chembiol.2004.05.020} +} + +@article{park_discovery_2008, + title = {{Discovery of an orally bioavailable small molecule inhibitor of prosurvival B-cell lymphoma 2 proteins.}}, + author = {Park, Cheol-Min and Bruncko, Milan and Adickes, Jessica and Bauch, Joy and Ding, Hong and Kunzer, Aaron and Marsh, Kennan C and Nimmer, Paul and Shoemaker, Alexander R and Song, Xiaohong and Tahir, Stephen K and Tse, Christin and Wang, Xilu and Wendt, Michael D and Yang, Xiufen and Zhang, Haichao and Fesik, Stephen W and Rosenberg, Saul H and Elmore, Steven W}, + pages = {6902--6915}, + volume = {51}, + doi = {10.1021/jm800669s} +} + +@article{nikolovska-coleska_discovery_2009, + title = {{Discovery of embelin as a cell-permeable, small-molecular weight inhibitor of {\{}XIAP{\}} through structure-based computational screening of a traditional herbal medicine three-dimensional structure database}}, + author = {Nikolovska-Coleska, Zaneta and Xu, Liang and Hu, Zengjian and Tomita, York and Li, Peng and Roller, Peter P and Wang, Renxiao and Fang, Xueliang and Guo, Ribo and Zhang, Manchao and Lippman, Marc E and Yang, Dajun and Wang, Shaomeng}, + pages = {2430--2440}, + volume = {47}, + doi = {10.1021/jm030420+} +} + +@article{miyazaki_discovery_2012, + title = {{Discovery of novel dihydroimidazothiazole derivatives as p53-{\{}MDM{\}}2 protein-protein interaction inhibitors: synthesis, biological evaluation and structure-activity relationships.}}, + author = {Miyazaki, Masaki and Kawato, Haruko and Naito, Hiroyuki and Ikeda, Masahiro and Miyazaki, Masaya and Kitagawa, Mayumi and Seki, Takahiko and Fukutake, Setsuko and Aonuma, Masashi and Soga, Tsunehiko}, + pages = {6338--6342}, + volume = {22}, + doi = {10.1016/j.bmcl.2012.08.086} +} + +@article{sanchez_discovery_2012, + title = {{Discovery of novel inhibitors of LEDGF/p75-IN protein-protein interactions}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Sanchez, Tino Wilson and Debnath, Bikash and Christ, Frauke and Otake, Hiroyuki and Debyser, Zeger and Neamati, Nouri}, + number = {4}, + pages = {957--963}, + volume = {21}, + doi = {10.1016/j.bmc.2012.12.012}, + issn = {09680896}, + keywords = {Antiviral, HIV, Hydrazines, Integrase, LEDGF/p75, N-Acylhydrazones} +} + +@article{odolczyk_discovery_2013, + title = {{Discovery of novel potent {$\Delta$}F508-{\{}CFTR{\}} correctors that target the nucleotide binding domain.}}, + author = {Odolczyk, Norbert and Fritsch, Janine and Norez, Caroline and Servel, Nathalie and da Cunha, Melanie Faria and Bitam, Sara and Kupniewska, Anna and Wiszniewski, Ludovic and Colas, Julien and Tarnowski, Krzysztof and Tondelier, Danielle and Roldan, Ariel and Saussereau, Emilie L and Melin-Heschel, Patricia and Wieczorek, Grzegorz and Lukacs, Gergely and Dadlez, Michal and Faure, Grazyna and Herrmann, Harald and Ollero, Mario and Becq, Frédéric and Zielenkiewicz, Piotr and Edelman, Aleksander}, + doi = {10.1002/emmm.201302699} +} + +@article{zhang_discovery_2013, + title = {{Discovery of Potent and Orally Active p53-{\{}MDM{\}}2 Inhibitors {\{}RO{\}}5353 and {\{}RO{\}}2468 for Potential Clinical Development}}, + author = {Zhang, Zhuming and Chu, Xin-Jie and Liu, Jin-Jun and Ding, Qingjie and Zhang, Jing and Bartkovitz, David and Jiang, Nan and Karnachi, Prabha and So, Sung-Sau and Tovar, Christian and Filipovic, Zoran M and Higgins, Brian and Glenn, Kelli and Packman, Kathryn and Vassilev, Lyubomir T and Graves, Bradford}, + pages = {131229105157002}, + doi = {10.1021/ml400359z} +} + +@article{yu_discovery_2014, + title = {{Discovery of Potent and Simplified Piperidinone-Based Inhibitors of the {\{}MDM{\}}2-p53 Interaction}}, + author = {Yu, M and Wang, Y and Zhu, J and Bartberger, M D and Canon, J and Chen, A and Chow, D and Eksterowicz, J and Fox, B and Fu, J and Gribble, M and Huang, X and Li, Z and Liu, J J and Lo, M C and McMinn, D and Oliner, J D and Osgood, T and Rew, Y and Saiki, A Y and Shaffer, P and Yan, X and Ye, Q and Yu, D and Zhao, X and Zhou, J and Olson, S H and Medina, J C and Sun, D}, + pages = {894--899}, + volume = {5}, + doi = {10.1021/ml500142b}, + issn = {1948-5875 (Electronic) 1948-5875 (Linking)} +} + +@article{oost_discovery_2004, + title = {{Discovery of potent antagonists of the antiapoptotic protein XIAP for the treatment of cancer}}, + year = {2004}, + journal = {Journal of Medicinal Chemistry}, + author = {Oost, Thorsten K. and Sun, Chaohong and Armstrong, Robert C. and Al-Assaad, Ali Samer and Betz, Stephen F. and Deckwerth, Thomas L. and Ding, Hong and Elmore, Steven W. and Meadows, Robert P. and Olejniczak, Edward T. and Oleksijew, Andrew and Oltersdorf, Tilman and Rosenberg, Saul H. and Shoemaker, Alexander R. and Tomaselli, Kevin J. and Zou, Hua and Fesik, Stephen W.}, + number = {18}, + pages = {4417--4426}, + volume = {47}, + doi = {10.1021/jm040037k}, + issn = {00222623} +} + +@article{friberg_discovery_2013, + title = {{Discovery of potent myeloid cell leukemia 1 (Mcl-1) inhibitors using fragment-based methods and structure-based design.}}, + author = {Friberg, Anders and Vigil, Dominico and Zhao, Bin and Daniels, R Nathan and Burke, Jason P and Garcia-Barrantes, Pedro M and Camper, DeMarco and Chauder, Brian A and Lee, Taekyu and Olejniczak, Edward T and Fesik, Stephen W}, + pages = {15--30}, + volume = {56}, + doi = {10.1021/jm301448p}, + keywords = {PPI} +} + +@article{patrone_discovery_2013, + title = {{Discovery of protein-protein interaction inhibitors of replication protein A}}, + year = {2013}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Patrone, James D. and Kennedy, J. Phillip and Frank, Andreas O. and Feldkamp, Michael D. and Vangamudi, Bhavatarini and Pelz, Nicholas F. and Rossanese, Olivia W. and Waterson, Alex G. and Chazin, Walter J. and Fesik, Stephen W.}, + number = {7}, + pages = {601--605}, + volume = {4}, + doi = {10.1021/ml400032y}, + issn = {19485875}, + keywords = {DNA damage, Replication protein A, fragment-based discovery} +} + +@article{uvebrant_discovery_2007, + title = {{Discovery of selective small-molecule {\{}CD{\}}80 inhibitors.}}, + author = {Uvebrant, Kristina and da Gra{\c{c}}a Thrige, Dorthe and Ros{\'{e}}n, Anna and Akesson, Mats and Berg, Helena and Walse, Björn and Bj{\"{o}}rk, Per}, + pages = {464--472}, + volume = {12}, + doi = {10.1177/1087057107300464} +} + +@article{casey_discovery_2009, + title = {{Discovery of Small Molecule Inhibitors of Protein−Protein Interactions Using Combined Ligand and Target Score Normalization}}, + author = {Casey, Fergal P and Pihan, Emilie and Shields, Denis C}, + pages = {2708--2717}, + volume = {49}, + doi = {10.1021/ci900294x} +} + +@article{zhong_discovery_2010, + title = {{Discovery of tetrahydroisoquinoline ({\{}THIQ{\}}) derivatives as potent and orally bioavailable {\{}LFA{\}}-1/{\{}ICAM{\}}-1 antagonists}}, + author = {Zhong, Min and Shen, Wang and Barr, Kenneth J and Arbitrario, Jennifer P and Arkin, Michelle R and Bui, Minna and Chen, Teresa and Cunningham, Brian C and Evanchik, Marc J and Hanan, Emily J and Hoch, Ute and Huen, Karen and Hyde, Jennifer and Kumer, Jeffery L and Lac, Teresa and Lawrence, Chris E and Martell, Jose R and Oslob, Johan D and Paulvannan, Kumar and Prabhu, Saileta and Silverman, Jeffrey A and Wright, Jasmin and Yu, Chul H and Zhu, Jiang and Flanagan, W Mike}, + pages = {5269--5273}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.06.145} +} + +@article{nandhikonda_discovery_2012, + title = {{Discovery of the first irreversible small molecule inhibitors of the interaction between the vitamin D receptor and coactivators.}}, + author = {Nandhikonda, Premchendar and Lynt, Wen Z and McCallum, Megan M and Ara, Tahniyath and Baranowski, Athena M and Yuan, Nina Y and Pearson, Dana and Bikle, Daniel D and Guy, R Kiplin and Arnold, Leggy A}, + pages = {4640--4651}, + volume = {55}, + doi = {10.1021/jm300460c} +} + +@article{yoakim_discovery_2003, + title = {{Discovery of the first series of inhibitors of human papillomavirus type 11: inhibition of the assembly of the E1–E2–Origin {\{}DNA{\}} complex}}, + author = {Yoakim, Christiane and Ogilvie, William W and Goudreau, Nathalie and Naud, Julie and Hach{\'{e}}, Bruno and O{\textbackslash}textbackslash{\&}apos;Meara, Jeff A and Cordingley, Michael G and Archambault, Jacques and White, Peter W}, + pages = {2539--2541}, + volume = {13}, + doi = {10.1016/S0960-894X(03)00510-9} +} + +@article{ding_discovery_2013, + title = {{Discovery of {\{}RG{\}}7388, a Potent and Selective p53–{\{}MDM{\}}2 Inhibitor in Clinical Development}}, + author = {Ding, Qingjie and Zhang, Zhuming and Liu, Jin-Jun and Jiang, Nan and Zhang, Jing and Ross, Tina M and Chu, Xin-Jie and Bartkovitz, David and Podlaski, Frank and Janson, Cheryl and Tovar, Christian and Filipovic, Zoran M and Higgins, Brian and Glenn, Kelli and Packman, Kathryn and Vassilev, Lyubomir T and Graves, Bradford}, + pages = {5979--5983}, + volume = {56}, + doi = {10.1021/jm400487c} +} + +@article{zhuang_discovery_2012, + title = {{Discovery, synthesis, and biological evaluation of orally active pyrrolidone derivatives as novel inhibitors of p53-MDM2 protein-protein interaction}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Zhuang, Chunlin and Miao, Zhenyuan and Zhu, Lingjian and Dong, Guoqiang and Guo, Zizhao and Wang, Shengzheng and Zhang, Yongqiang and Wu, Yuelin and Yao, Jianzhong and Sheng, Chunquan and Zhang, Wannian}, + number = {22}, + pages = {9630--9642}, + volume = {55}, + doi = {10.1021/jm300969t}, + issn = {00222623} +} + +@article{cummings_disrupting_2010, + title = {{Disrupting protein-protein interactions with non-peptidic, small molecule alpha-helix mimetics}}, + author = {Cummings, Christopher G and Hamilton, Andrew D}, + pages = {341--346}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.04.001} +} + +@article{cricca_disruption_2009, + title = {{Disruption of HPV 16 E1 and E2 genes in precancerous cervical lesions}}, + year = {2009}, + journal = {Journal of Virological Methods}, + author = {Cricca, Monica and Venturoli, Simona and Leo, Elisa and Costa, Silvano and Musiani, Monica and Zerbini, Marialuisa}, + number = {1-2}, + pages = {180--183}, + volume = {158}, + doi = {10.1016/j.jviromet.2009.01.005}, + issn = {01660934}, + keywords = {Cervical lesion, E1/E2 genes, HPV 16, Integration site} +} + +@article{kern_disruption_2007, + title = {{Disruption of the Keap1-containing ubiquitination complex as an antioxidant therapy}}, + author = {Kern, Jonathan T and Hannink, Mark and Hess, J Fred}, + pages = {972--978}, + volume = {7} +} + +@article{florio_disruption_2009, + title = {{Disruption of {\{}nNOS{\}}-{\{}PSD{\}}95 protein-protein interaction inhibits acute thermal hyperalgesia and chronic mechanical allodynia in rodents}}, + author = {Florio, S K and Loh, C and Huang, S M and Iwamaye, A E and Kitto, K F and Fowler, K W and Treiberg, J A and Hayflick, J S and Walker, J M and Fairbanks, C A and Lai, Y}, + pages = {494--506}, + volume = {158}, + doi = {10.1111/j.1476-5381.2009.00300.x} +} + +@article{van_molle_dissecting_2012, + title = {{Dissecting Fragment-Based Lead Discovery at the von Hippel-Lindau Protein:Hypoxia Inducible Factor 1{$\alpha$} Protein-Protein Interface}}, + author = {Van Molle, Inge and Thomann, Andreas and Buckley, Dennis L and So, Ernest C and Lang, Steffen and Crews, Craig M and Ciulli, Alessio}, + pages = {1300--1312}, + volume = {19}, + doi = {10.1016/j.chembiol.2012.08.015} +} + +@article{balaban_distance_1982, + title = {{Distance Connectivity Index}}, + author = {Balaban, A T}, + pages = {399--404}, + volume = {89} +} + +@article{ji_distribution_2007, + title = {{Distribution patterns of small-molecule ligands in the protein universe and implications for origin of life and drug discovery}}, + author = {Ji, H F and Kong, D X and Shen, L and Chen, L L and Ma, B G} +} + +@article{nooren_diversity_2003, + title = {{Diversity of protein-protein interactions.}}, + author = {Nooren, Irene M A and Thornton, Janet M}, + pages = {3486--3492}, + volume = {22}, + doi = {10.1093/emboj/cdg359} +} + +@article{nguyen_diversity_2013, + title = {{Diversity selection of compounds based on {\&}apos;Protein Affinity Fingerprints{\&}apos; improves sampling of bioactive chemical space.}}, + author = {Nguyen, Ha P and Koutsoukas, Alexios and Mohd Fauzi, Fazlin and Drakakis, Georgios and Maciejewski, Mateusz and Glen, Robert C and Bender, Andreas}, + doi = {10.1111/cbdd.12155} +} + +@article{ibbeson_diversity-oriented_2014, + title = {{Diversity-oriented synthesis as a tool for identifying new modulators of mitosis}}, + year = {2014}, + journal = {Nature Communications}, + author = {Ibbeson, Brett M. and Laraia, Luca and Alza, Esther and O'Connor, Cornelius J. and Tan, Yaw Sing and Davies, Huw M.L. and Mckenzie, Grahame and Venkitaraman, Ashok R. and Spring, David R.}, + pages = {1--8}, + volume = {5}, + doi = {10.1038/ncomms4155}, + issn = {20411723}, + keywords = {chemical space} +} + +@article{galloway_diversity-oriented_2010, + title = {{Diversity-oriented synthesis as a tool for the discovery of novel biologically active small molecules}}, + author = {Galloway, Warren R J D and Isidro-Llobet, Albert and Spring, David R}, + pages = {1--13}, + volume = {1}, + doi = {10.1038/ncomms1081} +} + +@article{marcaurelle_diversity-oriented_2009, + title = {{Diversity-oriented synthesis of a cytisine-inspired pyridone library leading to the discovery of novel inhibitors of Bcl-2}}, + author = {Marcaurelle, Lisa A and Johannes, Charles and Yohannes, Daniel and Tillotson, Bonnie P and Mann, David}, + pages = {2500--2503}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.03.037} +} + +@article{isidro-llobet_diversity-oriented_2011, + title = {{Diversity-oriented synthesis of macrocyclic peptidomimetics.}}, + author = {Isidro-Llobet, Albert and Murillo, Tiffanie and Bello, Paula and Cilibrizzi, Agostino and Hodgkinson, James T and Galloway, Warren R J D and Bender, Andreas and Welch, Martin and Spring, David R}, + pages = {6793--6798}, + volume = {108}, + doi = {10.1073/pnas.1015267108}, + keywords = {PPI} +} + +@article{teixeira_docking_2009, + title = {{Docking and 3D-{\{}QSAR{\}} studies of {\{}BMS{\}}-806 analogs as {\{}HIV{\}}-1 gp120 entry inhibitors}}, + author = {Teixeira, C and Serradji, N and Maurel, F and Barbault, F}, + pages = {3524--3532}, + volume = {44}, + doi = {10.1016/j.ejmech.2009.03.028} +} + +@article{sinha_docking_2010, + title = {{Docking by structural similarity at protein-protein interfaces.}}, + author = {Sinha, Rohita and Kundrotas, Petras J and Vakser, Ilya A}, + pages = {3235--3241}, + volume = {78}, + doi = {10.1002/prot.22812} +} + +@article{verdonk_docking_2011, + title = {{Docking Performance of Fragments and Druglike Compounds}}, + author = {Verdonk, Marcel L and Giangreco, Ilenia and Hall, Richard J and Korb, Oliver and Mortenson, Paul N and Murray, Christopher W}, + doi = {10.1021/jm200558u}, + keywords = {VLS} +} + +@article{ballester_does_2014, + title = {{Does a More Precise Chemical Description of Protein-Ligand Complexes Lead to More Accurate Prediction of Binding Affinity?}}, + author = {Ballester, Pedro J and Schreyer, Adrian and Blundell, Tom L}, + doi = {10.1021/ci500091r} +} + +@article{meunier_does_2012, + title = {{Does chemistry have a future in therapeutic innovations?}}, + author = {Meunier, Bernard}, + pages = {8702--8706}, + volume = {51}, + doi = {10.1002/anie.201202506} +} + +@article{itzhaki_domain-domain_2011, + title = {{Domain-domain interactions underlying herpesvirus-human protein-protein interaction networks.}}, + author = {Itzhaki, Zohar}, + pages = {e21724}, + volume = {6}, + doi = {10.1371/journal.pone.0021724}, + keywords = {{\{}PPI{\}}, {\{}PPI{\}} network} +} + +@article{wang_drug_2010, + title = {{Drug and Drug Candidate Building Block Analysis}}, + author = {Wang, Junmei and Hou, Tingjun}, + pages = {55--67}, + volume = {50}, + doi = {10.1021/ci900398f} +} + +@article{klabunde_drug_2002, + title = {{Drug design strategies for targeting G-protein-coupled receptors}}, + author = {Klabunde, Thomas and Hessler, Gerhard}, + pages = {928--944}, + volume = {3}, + doi = {10.1002/1439-7633(20021004)3:10{\&}lt;928::AID-CBIC928{\&}gt;3.0.CO;2-5} +} + +@article{li_drug_2014, + title = {{Drug Design Targeting Protein-Protein Interactions ({\{}PPIs{\}}) Using Multiple Ligand Simultaneous Docking ({\{}MLSD{\}}) and Drug Repositioning: Discovery of Raloxifene and Bazedoxifene as Novel Inhibitors of {\{}IL{\}}-6/{\{}GP{\}}130 Interface.}}, + author = {Li, Huameng and Xiao, Hui and Lin, Li and Jou, David and Kumari, Vandana and Lin, Jiayuh and Li, Chenglong}, + pages = {632--641}, + volume = {57}, + doi = {10.1021/jm401144z} +} + +@article{kotz_drug_2012, + title = {{Drug discovery: Polypharmacology on the fly}}, + author = {Kotz, Joanne}, + pages = {679}, + volume = {8}, + doi = {10.1038/nchembio.1036} +} + +@article{kubinyi_drug_2003, + title = {{Drug research: myths, hype and reality}}, + author = {Kubinyi, H}, + pages = {665--668}, + volume = {2}, + doi = {10.1038/nrd1156}, + issn = {1474-1776 (Print) 1474-1776 (Linking)}, + keywords = {*Pharmacokinetics, *Pharmacology, *Research, Chemistry, Humans, Pharmaceutical/*methods, Pharmaceutical/*trends, Technology} +} + +@article{yamanishi_drug_2012, + title = {{Drug side-effect prediction based on the integration of chemical and biological spaces}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Yamanishi, Yoshihiro and Pauwels, Edouard and Kotera, Masaaki}, + number = {12}, + pages = {3284--3292}, + volume = {52}, + doi = {10.1021/ci2005548}, + issn = {15499596} +} + +@article{campillos_drug_2008, + title = {{Drug target identification using side-effect similarity}}, + author = {Campillos, Monica and Kuhn, Michael and Gavin, Anne-Claude and Jensen, Lars Juhl and Bork, Peer}, + pages = {263--266}, + volume = {321}, + doi = {10.1126/science.1158140} +} + +@article{chuprina_drug-_2010, + title = {{Drug- and lead-likeness, target class, and molecular diversity analysis of 7.9 million commercially available organic compounds provided by 29 suppliers}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Chuprina, Alexander and Lukin, Oleg and Demoiseaux, Robert and Buzko, Alexander and Shivanyuk, Alexander}, + number = {4}, + pages = {470--479}, + volume = {50}, + doi = {10.1021/ci900464s}, + issn = {15499596} +} + +@article{fry_drug-like_2008, + title = {{Drug-Like Inhibitors of Protein-Protein Interactions: A Structural Examination of Effective Protein Mimicry}}, + year = {2008}, + journal = {Current Protein {\&} Peptide Science}, + author = {Fry, D.}, + number = {3}, + pages = {240--247}, + volume = {9}, + doi = {10.2174/138920308784533989}, + issn = {13892037} +} + +@article{camp_drug-like_2011, + title = {{Drug-like Properties: Guiding Principles for the Design of Natural Product Libraries.}}, + author = {Camp, David and Davis, Rohan A and Campitelli, Marc and Ebdon, James and Quinn, Ronald J}, + doi = {10.1021/np200687v} +} + +@article{villoutreix_drug-like_2014, + title = {{Drug-Like Protein-Protein Interaction Modulators: Challenges and Opportunities for Drug Discovery and Chemical Biology}}, + author = {Villoutreix, B O and Kuenemann, M A and Poyet, J L and Bruzzoni-Giovanelli, H and Labbe, C and Lagorce, D and Sperandio, O and Miteva, M A}, + pages = {414--437}, + volume = {33}, + doi = {10.1002/minf.201400040}, + issn = {1868-1743 (Print) 1868-1743 (Linking)} +} + +@article{yildirim_drug-target_2007, + title = {{Drug-target network}}, + author = {Yildirim, Muhammed A and Goh, Kwang-Il and Cusick, Michael E and Barab{\'{a}}si, Albert-László and Vidal, Marc}, + pages = {1119--1126}, + volume = {25}, + doi = {10.1038/nbt1338} +} + +@article{knox_drugbank_2011, + title = {{DrugBank 3.0: A comprehensive resource for 'Omics' research on drugs}}, + year = {2011}, + journal = {Nucleic Acids Research}, + author = {Knox, Craig and Law, Vivian and Jewison, Timothy and Liu, Philip and Ly, Son and Frolkis, Alex and Pon, Allison and Banco, Kelly and Mak, Christine and Neveu, Vanessa and Djoumbou, Yannick and Eisner, Roman and Guo, An Chi and Wishart, David S.}, + number = {SUPPL. 1}, + pages = {D1035--41}, + volume = {39}, + doi = {10.1093/nar/gkq1126}, + issn = {03051048} +} + +@article{wishart_drugbank:_2006, + title = {{DrugBank: a comprehensive resource for in silico drug discovery and exploration}}, + year = {2006}, + journal = {Nucleic Acids Research}, + author = {Wishart, D. S.}, + number = {90001}, + pages = {D668-D672}, + volume = {34}, + doi = {10.1093/nar/gkj067}, + issn = {0305-1048}, + pmid = {16381955} +} + +@article{vidler_druggability_2012, + title = {{Druggability Analysis and Structural Classification of Bromodomain Acetyl-lysine Binding Sites.}}, + author = {Vidler, Lewis R and Brown, Nathan and Knapp, Stefan and Hoelder, Swen}, + doi = {10.1021/jm300346w} +} + +@article{wanner_druggability_2011, + title = {{Druggability assessment of protein-Protein interfaces}}, + year = {2011}, + journal = {Future Medicinal Chemistry}, + author = {Wanner, Jutta and Fry, David C. and Peng, Zhengwei and Roberts, John}, + number = {16}, + pages = {2021--2038}, + volume = {3}, + doi = {10.4155/fmc.11.156}, + issn = {17568919} +} + +@article{hajduk_druggability_2005, + title = {{Druggability indices for protein targets derived from {\{}NMR{\}}-based screening data}}, + author = {Hajduk, Philip J and Huth, Jeffrey R and Fesik, Stephen W}, + pages = {2518--2525}, + volume = {48}, + doi = {10.1021/jm049131r} +} + +@article{yu_druggable_2013, + title = {{Druggable chemical space and enumerative combinatorics.}}, + author = {Yu, Melvin J}, + pages = {19}, + volume = {5}, + doi = {10.1186/1758-2946-5-19} +} + +@article{perot_druggable_2010, + title = {{Druggable pockets and binding site centric chemical space: a paradigm shift in drug discovery.}}, + author = {P{\'{e}}rot, Stéphanie and Sperandio, Olivier and Miteva, Maria A and Camproux, Anne-Claude and Villoutreix, Bruno O}, + pages = {656--667}, + volume = {15}, + doi = {10.1016/j.drudis.2010.05.015} +} + +@article{johnson_druggable_2013, + title = {{Druggable protein interaction sites are more predisposed to surface pocket formation than the rest of the protein surface.}}, + author = {Johnson, David K and Karanicolas, John}, + pages = {e1002951}, + volume = {9}, + doi = {10.1371/journal.pcbi.1002951} +} + +@article{coyne_drugging_2010, + title = {{Drugging challenging targets using fragment-based approaches}}, + author = {Coyne, Anthony G and Scott, Duncan E and Abell, Chris}, + pages = {299--307}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.02.010} +} + +@article{chene_drugs_2006, + title = {{Drugs targeting protein-protein interactions}}, + author = {Ch{\`{e}}ne, Patrick}, + pages = {400--411}, + volume = {1}, + doi = {10.1002/cmdc.200600004} +} + +@article{imming_drugs_2006, + title = {{Drugs, their targets and the nature and number of drug targets}}, + year = {2006}, + journal = {Nature Reviews Drug Discovery}, + author = {Imming, Peter and Sinning, Christian and Meyer, Achim}, + number = {10}, + pages = {821--834}, + volume = {5}, + doi = {10.1038/nrd2132}, + issn = {14741784}, + pmid = {17016423}, + keywords = {Animals, Drug Design, Humans, Pharmaceutical Preparations, Pharmacology} +} + +@article{hoerter_dynamics_2004, + title = {{Dynamics inherent in helix 27 from Escherichia coli 16S ribosomal {\{}RNA{\}}}}, + author = {Hoerter, J A and Lambert, M N and Pereira, M J and Walter, N G}, + pages = {14624--14636}, + volume = {43}, + doi = {10.1021/bi048533y}, + issn = {0006-2960 (Print) 0006-2960 (Linking)}, + keywords = {*Thermodynamics, 16S/*chemistry/radiation effects, Bacterial/chemistry/radiation effects, Biomolecular, Escherichia coli Proteins/chemistry, Fluorescence, Fluorescence Resonance Energy Transfer, Guanine/chemistry, Kinetics, Nuclear Magnetic Resonance, Nucleic Acid Conformation/drug effects/radiation, Nucleic Acid Denaturation, Ribosomal, Ribosomal Proteins/chemistry, Ribosomes/chemistry/drug effects/radiation effect, Spectrometry, Tetracycline/pharmacology, Ultraviolet Rays, {\{}RNA{\}}} +} + +@article{pihan_e-drug3d:_2012, + title = {{e-Drug3D: 3D structure collections dedicated to drug repurposing and fragment-based drug design}}, + author = {Pihan, E and Colliandre, L and Guichou, J F and Douguet, D}, + pages = {1540--1541}, + volume = {28}, + doi = {10.1093/bioinformatics/bts186}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)}, + keywords = {*Databases, *Drug Design, *Drug Repositioning, Chemical, Cyclophilins/antagonists {\&} inhibitors, Drug Discovery, Factual, Humans, Internet, Models, Pharmaceutical Preparations/*chemistry} +} + +@article{stein_effect_2012, + title = {{Effect of a monoclonal antibody to PCSK9 on LDL cholesterol}}, + year = {2012}, + journal = {Obstetrical and Gynecological Survey}, + author = {Stein, Evan A. and Mellis, Scott and Yancopoulos, George D. and Stahl, Neil and Logan, Douglas and Smith, William B. and Lisbon, Eleanor and Gutierrez, Maria and Webb, Cheryle and Wu, Richard and Du, Yunling and Kranz, Therese and Gasparino, Evelyn and Swergold, Gary D.}, + number = {7}, + pages = {413--414}, + volume = {67}, + doi = {10.1097/01.ogx.0000418576.52268.43}, + issn = {00297828} +} + +@article{slimani_effect_2012, + title = {{Effect of mutations in {\{}LDLR{\}} and {\{}PCSK{\}}9 genes on phenotypic variability in Tunisian familial hypercholesterolemia patients.}}, + author = {Slimani, Afef and Jelassi, Awatef and Jguirim, Imen and Najah, Mohamed and Rebhi, Lamia and Omezzine, Asma and Maatouk, Faouzi and Hamda, Khaldoun Ben and Kacem, Maha and Rab{\`{e}}s, Jean-Pierre and Abifadel, Marianne and Boileau, Catherine and Rouis, Mustapha and Slimane, Mohamed Naceur and Varret, Mathilde}, + doi = {10.1016/j.atherosclerosis.2012.02.018} +} + +@article{margolles-clark_effective_2010, + title = {{Effective and specific inhibition of the {\{}CD{\}}40-{\{}CD{\}}154 costimulatory interaction by a naphthalenesulphonic acid derivative.}}, + author = {Margolles-Clark, Emilio and Kenyon, Norma S and Ricordi, Camillo and Buchwald, Peter}, + pages = {305--313}, + volume = {76}, + doi = {10.1111/j.1747-0285.2010.01014.x} +} + +@article{liu_efficient_2009, + title = {{Efficient and Diverse Synthesis of Indole Derivatives - The Journal of Organic Chemistry ({\{}ACS{\}} Publications)}}, + author = {Liu, Haixia and D{\"{o}}mling, Alexander}, + pages = {6895--6898}, + volume = {74}, + doi = {10.1021/jo900986z} +} + +@article{wassermann_efficient_2013, + title = {{Efficient Search of Chemical Space: Navigating from Fragments to Structurally Diverse Chemotypes.}}, + author = {Wassermann, Anne Mai and Kutchukian, Peter S and Lounkine, Eugen and Luethi, Tiffany and Hamon, Jacques and Bocker, Michael Thomas and Malik, Hasnain A and Cowan-Jacob, Sandra W and Glick, Meir}, + doi = {10.1021/jm401309q} +} + +@article{pagliaro_emerging_2004, + title = {{Emerging classes of protein–protein interaction inhibitors and new tools for their development}}, + author = {Pagliaro, Len and Felding, Jakob and Audouze, Karine and Nielsen, Søren Jensby and Terry, Robert B and Krog-Jensen, Christian and Butcher, Steven}, + pages = {442--449}, + volume = {8}, + doi = {10.1016/j.cbpa.2004.06.006} +} + +@article{guharoy_empirical_2009, + title = {{Empirical estimation of the energetic contribution of individual interface residues in structures of protein-protein complexes}}, + author = {Guharoy, Mainak and Chakrabarti, Pinak}, + pages = {645--654}, + volume = {23}, + doi = {10.1007/s10822-009-9282-3} +} + +@article{david_koes_enabling_2012, + title = {{Enabling Large-Scale Design, Synthesis and Validation of Small Molecule Protein-Protein Antagonists}}, + author = {David Koes, Kareem Khoury Yijun Huang Wei Wang Michal Bista Grzegorz M Popowicz Siglinde Wolf Tad A Holak Alexander Dömling Carlos J Camacho}, + volume = {7}, + doi = {10.1371/journal.pone.0032839} +} + +@misc{enamine_enamine_2012, + title = {{Enamine}}, + author = {{Enamine}}, + publisher = {http://www.enamine.net} +} + +@article{marugan_enantiomerically_2006, + title = {{Enantiomerically pure 1,4-benzodiazepine-2,5-diones as Hdm2 antagonists}}, + author = {Marugan, Juan Jose and Leonard, Kristi and Raboisson, Pierre and Gushue, Joan M and Calvo, Raul and Koblish, Holly K and Lattanze, Jennifer and Zhao, Shuyuan and Cummings, Maxwell D and Player, Mark R and Schubert, Carsten and Maroney, Anna C and Lu, Tianbao}, + pages = {3115--3120}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.03.067} +} + +@article{parks_enhanced_2006, + title = {{Enhanced pharmacokinetic properties of 1,4-benzodiazepine-2,5-dione antagonists of the {\{}HDM{\}}2-p53 protein–protein interaction through structure-based drug design}}, + author = {Parks, Daniel J and LaFrance, Louis V and Calvo, Raul R and Milkiewicz, Karen L and Jos{\'{e}} Marug{\'{a}}n, Juan and Raboisson, Pierre and Schubert, Carsten and Koblish, Holly K and Zhao, Shuyuan and Franks, Carol F and Lattanze, Jennifer and Carver, Theodore E and Cummings, Maxwell D and Maguire, Diane and Grasberger, Bruce L and Maroney, Anna C and Lu, Tianbao}, + pages = {3310--3314}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.03.055} +} + +@article{drewry_enhancements_2010, + title = {{Enhancements of screening collections to address areas of unmet medical need: an industry perspective}}, + year = {2010}, + journal = {Current Opinion in Chemical Biology}, + author = {Drewry, David H. and Macarron, Ricardo}, + number = {3}, + pages = {289--298}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.03.024}, + issn = {13675931} +} + +@article{meslamani_enhancing_2011, + title = {{Enhancing the accuracy of chemogenomic models with a three-dimensional binding site kernel}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Meslamani, Jamel and Rognan, Didier}, + number = {7}, + pages = {1593--1603}, + volume = {51}, + doi = {10.1021/ci200166t}, + issn = {15499596} +} + +@article{barakat_ensemble-based_2010, + title = {{Ensemble-based virtual screening reveals dual-inhibitors for the p53-{\{}MDM{\}}2/{\{}MDMX{\}} interactions}}, + author = {Barakat, Khaled and Mane, Jonathan and Friesen, Douglas and Tuszynski, Jack}, + pages = {555--568}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.12.003} +} + +@article{ruddigkeit_enumeration_2012, + title = {{Enumeration of 166 Billion Organic Small Molecules in the Chemical Universe Database {\{}GDB{\}}-17.}}, + author = {Ruddigkeit, Lars and van Deursen, Ruud and Blum, Lorenz C and Reymond, Jean-Louis}, + doi = {10.1021/ci300415d} +} + +@article{jazirehi_epigenetic_2013, + title = {{Epigenetic regulation of the {\{}TRAIL{\}}/Apo2L apoptotic pathway by histone deacetylase inhibitors: an attractive approach to bypass melanoma immunotherapy resistance.}}, + author = {Jazirehi, Ali R and Arle, Dylan}, + pages = {55--74}, + volume = {2} +} + +@article{taboureau_established_2012, + title = {{Established and emerging trends in computational drug discovery in the structural genomics era.}}, + author = {Taboureau, Olivier and Baell, Jonathan B and Fern{\'{a}}ndez-Recio, Juan and Villoutreix, Bruno O}, + pages = {29--41}, + volume = {19}, + doi = {10.1016/j.chembiol.2011.12.007} +} + +@article{stumpf_estimating_2008, + title = {{Estimating the size of the human interactome}}, + year = {2008}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Stumpf, M. P. H. and Thorne, T. and de Silva, E. and Stewart, R. and An, H. J. and Lappe, M. and Wiuf, C.}, + number = {19}, + pages = {6959--6964}, + volume = {105}, + doi = {10.1073/pnas.0708078105}, + issn = {0027-8424} +} + +@article{fechner_estimation_2010, + title = {{Estimation of the applicability domain of kernel-based machine learning models for virtual screening.}}, + author = {Fechner, Nikolas and Jahn, Andreas and Hinselmann, Georg and Zell, Andreas}, + pages = {2}, + volume = {2}, + doi = {10.1186/1758-2946-2-2} +} + +@article{polishchuk_estimation_2013, + title = {{Estimation of the size of drug-like chemical space based on {\{}GDB{\}}-17 data.}}, + author = {Polishchuk, P G and Madzhidov, T I and Varnek, A}, + doi = {10.1007/s10822-013-9672-4} +} + +@article{douguet_etude_2007, + title = {{Etude des interactions prot{\'{e}}ine-prot{\'{e}}ine et prot{\'{e}}ine-ligand par bio- et chimie-informatique structurale : Identification de petites mol{\'{e}}cules bio-actives}}, + author = {Douguet, Dominique} +} + +@article{xu_evaluation_2006, + title = {{Evaluation of “credit card†libraries for inhibition of {\{}HIV{\}}-1 gp41 fusogenic core formation}}, + author = {Xu, Y and Lu, H and Kennedy, J and Yan, X} +} + +@article{faller_evolution_2011, + title = {{Evolution of the physicochemical properties of marketed drugs: Can history foretell the future?}}, + year = {2011}, + journal = {Drug Discovery Today}, + author = {Faller, Bernard and Ottaviani, Giorgio and Ertl, Peter and Berellini, Giuliano and Collis, Alan}, + number = {21-22}, + pages = {976--984}, + volume = {16}, + doi = {10.1016/j.drudis.2011.07.003}, + issn = {13596446}, + keywords = {chemical space} +} + +@article{huang_exhaustive_2011, + title = {{Exhaustive Fluorine Scanning toward Potent p53-Mdm2 Antagonists}}, + author = {Huang, Yijun and Wolf, Siglinde and Koes, David and Popowicz, Grzegorz M and Camacho, Carlos J and Holak, Tad A and D{\"{o}}mling, Alexander}, + pages = {49--52}, + volume = {7}, + doi = {10.1002/cmdc.201100428} +} + +@article{barker_expanding_2012, + title = {{Expanding medicinal chemistry space.}}, + author = {Barker, Andy and Kettle, Jason G and Nowak, Thorsten and Pease, J Elizabeth}, + doi = {10.1016/j.drudis.2012.10.008} +} + +@article{lopez-vallejo_expanding_2012, + title = {{Expanding the medicinally relevant chemical space with compound libraries.}}, + author = {L{\'{o}}pez-Vallejo, Fabian and Giulianotti, Marc A and Houghten, Richard A and Medina-Franco, Jose L}, + doi = {10.1016/j.drudis.2012.04.001} +} + +@article{makley_expanding_2012, + title = {{Expanding the Number of ‘Druggable’ Targets: Non-Enzymes and Protein-Protein Interactions}}, + shorttitle = {Expanding the Number of ‘Druggable’ Targets}, + author = {Makley, Leah N and Gestwicki, Jason E}, + pages = {22--32}, + volume = {81}, + doi = {10.1111/cbdd.12066} +} + +@article{bauer_expanding_2010, + title = {{Expanding the range of {\^{a}}€˜druggable{\^{a}}€™ targets with natural product-based libraries: an academic perspective}}, + author = {Bauer, Renato A and Wurst, Jacqueline M and Tan, Derek S}, + pages = {1--7}, + doi = {10.1016/j.cbpa.2010.02.001} +} + +@article{lipinski_experimental_2001, + title = {{Experimental and computational approaches to estimate solubility and permeability in drug discovery and development settings.}}, + author = {Lipinski, C A and Lombardo, F and Dominy, B W and Feeney, P J}, + pages = {3--26}, + volume = {46} +} + +@article{leverson_exploiting_2015, + title = {{Exploiting selective {\{}BCL{\}}-2 family inhibitors to dissect cell survival dependencies and define improved strategies for cancer therapy}}, + author = {Leverson, Joel D and Phillips, Darren C and Mitten, Michael J and Boghaert, Erwin R and Diaz, Dolores and Tahir, Stephen K and Belmont, Lisa D and Nimmer, Paul and Xiao, Yu and Ma, Xiaoju Max and Lowes, Kym N and Kovar, Peter and Chen, Jun and Jin, Sha and Smith, Morey and Xue, John and Zhang, Haichao and Oleksijew, Anatol and Magoc, Terrance J and Vaidya, Kedar S and Albert, Daniel H and Tarrant, Jacqueline M and La, Nghi and Wang, Le and Tao, Zhi-Fu and Wendt, Michael D and Sampath, Deepak and Rosenberg, Saul H and Tse, Chris and Huang, David C S and Fairbrother, Wayne J and Elmore, Steven W and Souers, Andrew J}, + number = {279}, + pages = {279ra40}, + volume = {7}, + doi = {10.1126/scitranslmed.aaa4642}, + issn = {1946-6242}, + pmid = {25787766}, + keywords = {Administration, Aniline Compounds, Animals, Antineoplastic Agents, Benzothiazoles, Bicyclo Compounds, Cell Line, Cell Survival, Gene Expression Profiling, Gene Expression Regulation, Granulocytes, Heterocyclic, Humans, Isoquinolines, Kinetics, Mice, Neoplasm Transplantation, Neoplasms, Neoplastic, Neutropenia, Neutrophils, Oral, Proto-Oncogene Proteins c-bcl-2, Sulfonamides, Taxoids, Thrombocytopenia, Tumor, bcl-X Protein} +} + +@article{tu_exploring_2012, + title = {{Exploring aromatic chemical space with {\{}NEAT{\}}: novel and electronically equivalent aromatic template.}}, + author = {Tu, Meihua and Rai, Brajesh K and Mathiowetz, Alan M and Didiuk, Mary and Pfefferkorn, Jeffrey A and Guzman-Perez, Angel and Benbow, John and Guimar{\~{a}}es, Cristiano R W and Mente, Scot and Hayward, Matthew M and Liras, Spiros}, + pages = {1114--1123}, + volume = {52}, + doi = {10.1021/ci300031s} +} + +@article{stockwell_exploring_2004, + title = {{Exploring biology with small organic molecules}}, + author = {Stockwell, Brent R}, + pages = {846--854}, + volume = {432}, + doi = {10.1038/nature03196} +} + +@article{reymond_exploring_2012, + title = {{Exploring chemical space for drug discovery using the chemical universe database.}}, + author = {Reymond, Jean-Louis and Awale, Mahendra}, + pages = {649--657}, + volume = {3}, + doi = {10.1021/cn3000422} +} + +@article{ko_exploring_2013, + title = {{Exploring key orientations at protein-protein interfaces with small molecule probes.}}, + author = {Ko, Eunhwa and Raghuraman, Arjun and Perez, Lisa M and Ioerger, Thomas R and Burgess, Kevin}, + pages = {167--173}, + volume = {135}, + doi = {10.1021/ja3067258} +} + +@article{deng_exploring_2013, + title = {{Exploring the biologically relevant chemical space for drug discovery.}}, + author = {Deng, Zhi-Luo and Du, Cai-Xia and Li, Xiao and Hu, Ben and Kuang, Zheng-Kun and Wang, Rong and Feng, Shi-Yu and Zhang, Hong-Yu and Kong, De-Xin}, + pages = {2820--2828}, + volume = {53}, + doi = {10.1021/ci400432a} +} + +@article{nantasenamat_exploring_2013, + title = {{Exploring the chemical space of aromatase inhibitors}}, + year = {2013}, + journal = {Molecular Diversity}, + author = {Nantasenamat, Chanin and Li, Hao and Mandi, Prasit and Worachartcheewan, Apilak and Monnor, Teerawat and Isarankura-Na-Ayudhya, Chartchalerm and Prachayasittikul, Virapong}, + number = {4}, + pages = {661--677}, + volume = {17}, + doi = {10.1007/s11030-013-9462-x}, + issn = {13811991}, + keywords = {Aromatase, Aromatase inhibitor, Breast cancer, Chemical space, Data mining, Principal component analysis} +} + +@article{di_leva_exploring_2013, + title = {{Exploring the Chemical Space of G-Quadruplex Binders: Discovery of a Novel Chemotype Targeting the Human Telomeric Sequence.}}, + author = {Di Leva, Francesco Saverio and Zizza, Pasquale and Cingolani, Chiara and D{\textbackslash}textbackslash{\&}apos;Angelo, Carmen and Pagano, Bruno and Amato, Jussara and Salvati, Erica and Sissi, Claudia and Pinato, Odra and Marinelli, Luciana and Cavalli, Andrea and Cosconati, Sandro and Novellino, Ettore and Randazzo, Antonio and Biroccio, Annamaria}, + doi = {10.1021/jm401185b} +} + +@article{zettl_exploring_2010, + title = {{Exploring the chemical space of gamma-secretase modulators.}}, + author = {Zettl, Heiko and Weggen, Sascha and Schneider, Petra and Schneider, Gisbert}, + pages = {402--410}, + volume = {31}, + doi = {10.1016/j.tips.2010.05.007} +} + +@article{rogers_extended-connectivity_2010, + title = {{Extended-connectivity fingerprints}}, + author = {Rogers, David and Hahn, Mathew}, + pages = {742--754}, + volume = {50}, + doi = {10.1021/ci100050t} +} + +@article{yamanishi_extracting_2011, + title = {{Extracting sets of chemical substructures and protein domains governing drug-target interactions}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Yamanishi, Yoshihiro and Pauwels, Edouard and Saigo, Hiroto and Stoven, Véronique}, + number = {5}, + pages = {1183--1194}, + volume = {51}, + doi = {10.1021/ci100476q}, + issn = {15499596}, + keywords = {chemogenomics} +} + +@article{putzeist_factors_2012, + title = {{Factors influencing non-approval of new drugs in Europe}}, + author = {Putzeist, Michelle and Mantel-Teeuwisse, Aukje K and Aronsson, Bo and Rowland, Malcolm and Gispen-de Wied, Christine C and Vamvakas, Spiros and Hoes, Arno W and Leufkens, Hubert G M and Eichler, Hans-Georg}, + pages = {903--904}, + volume = {11}, + doi = {10.1038/nrd3894} +} + +@article{ertl_fast_2000, + title = {{Fast calculation of molecular polar surface area as a sum of fragment-based contributions and its application to the prediction of drug transport properties}}, + author = {Ertl, P and Rohde, B and Selzer, P}, + pages = {3714--3717}, + volume = {43}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Molecular Structure, Biological Availability, Biological Transport, Models, Molecular, Pharmaceutical Preparations/*chemistry/metabolism, Reproducibility of Results} +} + +@article{miteva_fast_2005, + title = {{Fast structure-based virtual ligand screening combining {\{}FRED{\}}, {\{}DOCK{\}}, and Surflex}}, + author = {Miteva, M A and Lee, W H and Montes, M O and Villoutreix, B O}, + pages = {6012--6022}, + volume = {48}, + doi = {10.1021/jm050262h}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Ligands, *Protein Binding, *Quantitative Structure-Activity Relationship, Binding Sites, Databases, Estrogen/chemistry, Factor {\{}VIIa{\}}/chemistry, Factual, Molecular Structure, Neuraminidase/chemistry, Receptors, Thymidine Kinase/chemistry} +} + +@article{smith_features_2012, + title = {{Features of protein-protein interactions that translate into potent inhibitors: topology, surface area and affinity}}, + shorttitle = {Features of protein-protein interactions that tran}, + author = {Smith, Matthew C and Gestwicki, Jason E}, + pages = {e16}, + volume = {14}, + doi = {10.1017/erm.2012.10}, + issn = {1462-3994}, + pmid = {22831787}, + keywords = {Allosteric Regulation, Animals, Humans, Protein Binding, Proteins, Surface Properties} +} + +@article{marabotti_finding_2012, + title = {{Finding inhibitors of protein-protein interactions (i-ppis): a support from bioinformatics}}, + author = {Marabotti, A and Milanesi, L}, + keywords = {PPI} +} + +@article{lepp_finding_2009, + title = {{Finding Key Members in Compound Libraries by Analyzing Networks of Molecules Assembled by Structural Similarity}}, + author = {Lepp, Zsolt and Huang, Chunfei and Okada, Takashi}, + pages = {2429--2443}, + volume = {49}, + doi = {10.1021/ci9001102} +} + +@article{brinkmann_fingolimod_2010, + title = {{Fingolimod ({\{}FTY{\}}720): discovery and development of an oral drug to treat multiple sclerosis}}, + author = {Brinkmann, Volker and Billich, Andreas and Baumruker, Thomas and Heining, Peter and Schmouder, Robert and Francis, Gordon and Aradhye, Shreeram and Burtin, Pascale}, + pages = {883--897}, + volume = {9}, + doi = {10.1038/nrd3248} +} + +@article{tuffery_flexibility_2011, + title = {{Flexibility and binding affinity in protein-ligand, protein-protein and multi-component protein interactions: limitations of current computational approaches}}, + author = {Tuffery, P and Derreumaux, P}, + doi = {10.1098/rsif.2011.0584} +} + +@article{hubbard_fragment_2008, + title = {{Fragment approaches in structure-based drug discovery}}, + author = {Hubbard, R E}, + pages = {1--4}, + doi = {10.1107/S090904950705666X} +} + +@article{sheng_fragment_2013, + title = {{Fragment informatics and computational fragment-based drug design: an overview and update.}}, + author = {Sheng, Chunquan and Zhang, Wannian}, + pages = {554--598}, + volume = {33}, + doi = {10.1002/med.21255} +} + +@article{meiby_fragment_2013, + title = {{Fragment Screening by Weak Affinity Chromatography: Comparison with Established Techniques for Screening against {\{}HSP{\}}90}}, + author = {Meiby, Elinor and Simmonite, Heather and le Strat, Loic and Davis, Ben and Matassova, Natalia and Moore, Jonathan D and Mrosek, Michael and Murray, James and Hubbard, Roderick E and Ohlson, Sten}, + pages = {6756--6766}, + volume = {85}, + doi = {10.1021/ac400715t} +} + +@article{scott_fragment-based_2012, + title = {{Fragment-Based Approaches in Drug Discovery and Chemical Biology}}, + author = {Scott, Duncan E and Coyne, Anthony G and Hudson, Sean A and Abell, Chris}, + pages = {4990--5003}, + volume = {51}, + doi = {10.1021/bi3005126} +} + +@article{barelier_fragment-based_2010, + title = {{Fragment-Based Deconstruction of Bcl-x {\{}LInhibitors{\}}}}, + author = {Barelier, Sarah and Pons, Julien and Marcillat, Olivier and Lancelin, Jean-Marc and Krimm, Isabelle}, + pages = {2577--2588}, + volume = {53}, + doi = {10.1021/jm100009z} +} + +@article{huang_fragment-based_2008, + title = {{Fragment-Based Design of Small Molecule X-Linked Inhibitor of Apoptosis Protein Inhibitors}}, + author = {Huang, Jui-Wen and Zhang, Ziming and Wu, Bainan and Cellitti, Jason F and Zhang, Xiyun and Dahl, Russell and Shiau, Chung-Wai and Welsh, Kate and Emdadi, Aras and Stebbins, John L and Reed, John C and Pellecchia, Maurizio}, + pages = {7111--7118}, + volume = {51}, + doi = {10.1021/jm8006992} +} + +@article{chung_fragment-based_2012, + title = {{Fragment-based discovery of bromodomain inhibitors part 1: inhibitor binding modes and implications for lead discovery.}}, + author = {Chung, Chun-Wa and Dean, Anthony W and Woolven, James M and Bamborough, Paul}, + pages = {576--586}, + volume = {55}, + doi = {10.1021/jm201320w} +} + +@article{bamborough_fragment-based_2012, + title = {{Fragment-based discovery of bromodomain inhibitors part 2: optimization of phenylisoxazole sulfonamides.}}, + author = {Bamborough, Paul and Diallo, Hawa and Goodacre, Jonathan D and Gordon, Laurie and Lewis, Antonia and Seal, Jonathan T and Wilson, David M and Woodrow, Michael D and Chung, Chun-Wa}, + pages = {587--596}, + volume = {55}, + doi = {10.1021/jm201283q} +} + +@article{harner_fragment-based_2013, + title = {{Fragment-based drug discovery using NMR spectroscopy}}, + year = {2013}, + journal = {Journal of Biomolecular NMR}, + author = {Harner, Mary J. and Frank, Andreas O. and Fesik, Stephen W.}, + number = {2}, + pages = {65--75}, + volume = {56}, + doi = {10.1007/s10858-013-9740-z}, + issn = {09252738}, + keywords = {Fragment libraries, Fragment-based drug discovery, Fragment-based screening, Hit identification, NMR spectroscopy} +} + +@article{brenke_fragment-based_2009, + title = {{Fragment-based identification of druggable 'hot spots' of proteins using Fourier domain correlation techniques}}, + author = {Brenke, R and Kozakov, D and Chuang, G Y and Beglov, D and Hall, D and Landon, M R and Mattos, C and Vajda, S}, + pages = {621--627}, + volume = {25}, + doi = {10.1093/bioinformatics/btp036}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)}, + keywords = {Algorithms, Binding Sites, Crystallography, Internet, Models, Molecular, Protein Conformation, Protein Interaction Mapping, Proteins/*chemistry, X-Ray} +} + +@article{ryan_brenke_fragment-based_2009, + title = {{Fragment-based identification of druggable ‘hot spots’ of proteins using Fourier domain correlation techniques}}, + author = {Ryan Brenke, Dima Kozakov Gwo-Yu Chuang Dmitri Beglov David Hall Melissa R Landon Carla Mattos Sandor Vajda}, + pages = {621}, + volume = {25}, + doi = {10.1093/bioinformatics/btp036} +} + +@article{rees_fragment-based_2004, + title = {{Fragment-based lead discovery}}, + author = {Rees, David C and Congreve, Miles and Murray, Christopher W and Carr, Robin}, + pages = {660--672}, + volume = {3}, + doi = {10.1038/nrd1467} +} + +@article{baker_fragment-based_2013, + title = {{Fragment-based lead discovery grows up}}, + author = {Baker, Monya}, + pages = {1--3}, + doi = {10.1038/nrd3926} +} + +@article{chessari_fragment_2009, + title = {{From fragment to clinical candidate-a historical perspective}}, + year = {2009}, + journal = {Drug Discovery Today}, + author = {Chessari, Gianni and Woodhead, Andrew J.}, + number = {13-14}, + pages = {668--675}, + volume = {14}, + doi = {10.1016/j.drudis.2009.04.007}, + issn = {13596446} +} + +@article{koutsoukas_silico_2011, + title = {{From in silico target prediction to multi-target drug design: Current databases, methods and applications}}, + author = {Koutsoukas, Alexios and Simms, Benjamin and Kirchmair, Johannes and Bond, Peter J and Whitmore, Alan V and Zimmer, Steven and Young, Malcolm P and Jenkins, Jeremy L and Glick, Meir and Glen, Robert C and Bender, Andreas}, + doi = {10.1016/j.jprot.2011.05.011}, + keywords = {protein-protein interaction} +} + +@article{mirguet_apoa1_2012, + title = {{From {\{}ApoA{\}}1 upregulation to {\{}BET{\}} family bromodomain inhibition: Discovery of I-{\{}BET{\}}151.}}, + author = {Mirguet, Olivier and Lamotte, Yann and Donche, Frédéric and Toum, Jérôme and Gellibert, Françoise and Bouillot, Anne and Gosmini, Romain and Nguyen, Van-Loc and Delann{\'{e}}e, Delphine and Seal, Jonathan and Blandel, Florence and Boullay, Anne-Bénédicte and Boursier, Eric and Martin, Sandrine and Brusq, Jean-Marie and Krysa, Gael and Riou, Alizon and Tellier, Rémi and Costaz, Agnès and Huet, Pascal and Dudit, Yann and Trottet, Lionel and Kirilovsky, Jorge and Nicodeme, Edwige}, + doi = {10.1016/j.bmcl.2012.01.125} +} + +@article{lexa_full_2010, + title = {{Full Protein Flexibility Is Essential for Proper Hot-Spot Mapping}}, + author = {Lexa, Katrina W and Carlson, Heather A}, + doi = {10.1021/ja1079332} +} + +@article{sage_g-protein_2011, + title = {{G-Protein Coupled Receptors Virtual Screening Using Genetic Algorithm Focused Chemical Space}}, + author = {Sage, Carleton and Wang, Runtong and Jones, Gareth}, + pages = {1754--1761}, + volume = {51}, + doi = {10.1021/ci200043z} +} + +@article{obrezanova_gaussian_2010, + title = {{Gaussian Processes for Classification: {\{}QSAR{\}} Modeling of {\{}ADMET{\}} and Target Activity}}, + author = {Obrezanova, Olga and Segall, Matthew D}, + pages = {1053--1061}, + volume = {50}, + doi = {10.1021/ci900406x} +} + +@article{gleeson_generation_2008, + title = {{Generation of a set of simple, interpretable {\{}ADMET{\}} rules of thumb}}, + author = {Gleeson, M P}, + pages = {817--834}, + volume = {51}, + doi = {10.1021/jm701122q}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Pharmacokinetics, *Quantitative Structure-Activity Relationship, Animals, Biological Availability, Blood Proteins/metabolism, Brain/metabolism, Cell Membrane Permeability, Chemistry, Cytochrome P-450 Enzyme Inhibitors, Drug Design, Drug Industry, Drug-Related Side Effects and Adverse Reactions, Ether-A-Go-Go Potassium Channels/metabolism, Molecular Weight, P-Glycoprotein/metabolism, Pharmaceutical, Pharmaceutical Preparations/*chemistry/metabolism, Private Sector, Protein Binding, Solubility, Tissue Distribution} +} + +@article{liu-chittenden_genetic_2012, + title = {{Genetic and pharmacological disruption of the {\{}TEAD{\}}-{\{}YAP{\}} complex suppresses the oncogenic activity of {\{}YAP{\}}}}, + author = {Liu-Chittenden, Y and Huang, B and Shim, J S and Chen, Q and Lee, S J and Anders, R A and Liu, J O and Pan, D}, + pages = {1300--1305}, + volume = {26}, + doi = {10.1101/gad.192856.112} +} + +@article{young_getting_2011, + title = {{Getting physical in drug discovery {\{}II{\}}: the impact of chromatographic hydrophobicity measurements and aromaticity.}}, + author = {Young, Robert J and Green, Darren V S and Luscombe, Christopher N and Hill, Alan P}, + pages = {822--830}, + volume = {16}, + doi = {10.1016/j.drudis.2011.06.001} +} + +@article{hill_getting_2010, + title = {{Getting physical in drug discovery: a contemporary perspective on solubility and hydrophobicity.}}, + author = {Hill, Alan P and Young, Robert J}, + pages = {648--655}, + volume = {15}, + doi = {10.1016/j.drudis.2010.05.016} +} + +@article{capdeville_glivec_2002, + title = {{Glivec ({\{}STI{\}}571, imatinib), a rationally developed, targeted anticancer drug}}, + author = {Capdeville, Renaud and Buchdunger, Elisabeth and Zimmermann, Juerg and Matter, Alex}, + pages = {493--502}, + volume = {1}, + doi = {10.1038/nrd839} +} + +@article{jager_global_2013, + title = {{Global landscape of {\{}HIV{\}}-human protein complexes}}, + author = {J{\"{a}}ger, Stefanie and Cimermancic, Peter and Gulbahce, Natali and Johnson, Jeffrey R and McGovern, Kathryn E and Clarke, Starlynn C and Shales, Michael and Mercenne, Gaelle and Pache, Lars and Li, Kathy and Hernandez, Hilda and Jang, Gwendolyn M and Roth, Shoshannah L and Akiva, Eyal and Marlett, John and Stephens, Melanie and D’Orso, Iván and Fernandes, Jason and Fahey, Marie and Mahon, Cathal and O’Donoghue, Anthony J and Todorovic, Aleksandar and Morris, John H and Maltby, David A and Alber, Tom and Cagney, Gerard and Bushman, Frederic D and Young, John A and Chanda, Sumit K and Sundquist, Wesley I and Kortemme, Tanja and Hernandez, Ryan D and Craik, Charles S and Burlingame, Alma and Sali, Andrej and Frankel, Alan D and Krogan, Nevan J}, + pages = {365--370}, + volume = {481}, + doi = {10.1038/nature10719} +} + +@article{paolini_global_2006, + title = {{Global mapping of pharmacological space.}}, + author = {Paolini, Gaia V and Shapland, Richard H B and Van Hoorn, Willem P and Mason, Jonathan S and Hopkins, Andrew L}, + pages = {805--815}, + volume = {24}, + doi = {10.1038/nbt1228} +} + +@article{walters_going_2012, + title = {{Going further than Lipinski{\&}apos;s rule in drug design}}, + author = {Walters, W Patrick}, + pages = {99--107}, + volume = {7}, + doi = {10.1517/17460441.2012.648612} +} + +@article{dandapani_grand_2010, + title = {{Grand challenge commentary: Accessing new chemical space for {\&}apos;undruggable{\&}apos; targets.}}, + author = {Dandapani, Sivaraman and Marcaurelle, Lisa A}, + pages = {861--863}, + volume = {6}, + doi = {10.1038/nchembio.479} +} + +@article{todeschini_handbook_2008, + title = {{Handbook of Molecular Descriptors [Methods, Principles of Medicinal Chem 11] - R. Todeschini, V. Consonni (Wiley, 2000) {\{}WW{\}}}}, + author = {Todeschini, R and Consonni, V}, + pages = {1--688} +} + +@article{edwards_helix-mediated_2011, + title = {{Helix-mediated protein-protein interactions as targets for intervention using foldamers}}, + author = {Edwards, Thomas A and Wilson, Andrew J}, + pages = {743--754}, + volume = {41}, + doi = {10.1007/s00726-011-0880-8} +} + +@article{li_henryin_2013, + title = {{Henryin, an ent-kaurane Diterpenoid, Inhibits Wnt Signaling through Interference with {$\beta$}-Catenin/TCF4 Interaction in Colorectal Cancer Cells}}, + year = {2013}, + journal = {PLoS ONE}, + author = {Li, Xingyao and Pu, Jianxin and Jiang, Shiyou and Su, Jia and Kong, Lingmei and Mao, Bingyu and Sun, Handong and Li, Yan}, + number = {7}, + pages = {e68525}, + volume = {8}, + doi = {10.1371/journal.pone.0068525}, + issn = {19326203} +} + +@article{pitt_heteroaromatic_2009, + title = {{Heteroaromatic rings of the future}}, + author = {Pitt, William R and Parry, David M and Perry, Benjamin G and Groom, Colin R}, + pages = {2952--2963}, + volume = {52}, + doi = {10.1021/jm801513z} +} + +@misc{genentech_heterocyclic_2010, + title = {{Heterocyclic Compounds and Methods of Use}}, + pages = {A01N 43/ 00 A I} +} + +@article{ward_jr_hierarchical_1963, + title = {{Hierarchical grouping to optimize an objective function.}}, + author = {Ward Jr, J H}, + pages = {236--244}, + volume = {58} +} + +@article{wilkens_hiers:_2005, + title = {{HierS: Hierarchical scaffold clustering using topological chemical graphs}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Wilkens, Steven J. and Janes, Jeff and Su, Andrew I.}, + number = {9}, + pages = {3182--3193}, + volume = {48}, + doi = {10.1021/jm049032d}, + issn = {00222623} +} + +@article{morales_high_2005, + title = {{High expression of bfl-1 contributes to the apoptosis resistant phenotype in B-cell chronic lymphocytic leukemia}}, + author = {Morales, A A and Olsson, A and Celsing, F and Osterborg, A and Jondal, M and Osorio, L M}, + pages = {730--737}, + volume = {113}, + doi = {10.1002/ijc.20614}, + issn = {0020-7136 (Print) 0020-7136 (Linking)}, + keywords = {*Drug Resistance, 80 and over, Aged, Antineoplastic Agents/adverse effects, Apoptosis/*genetics, B-Cell/metabolism/*pathology, Chronic, Culture Media, Cultured, Female, Gene Expression Regulation, Humans, Leukemia, Leukemic, Lymphocytic, Male, Middle Aged, Neoplasm, Oligonucleotide Array Sequence Analysis, Phenotype, Proto-Oncogene Proteins c-bcl-2/*genetics, Reverse Transcriptase Polymerase Chain Reaction, Serum-Free/pharmacology, Tumor Cells, Up-Regulation, Vidarabine/adverse effects/*analogs {\&} derivatives, {\{}DNA{\}} (Cytosine-5-)-Methyltransferase/antagonists} +} + +@article{he_high-affinity_2014, + title = {{High-Affinity Small-Molecule Inhibitors of the Menin-Mixed Lineage Leukemia ({\{}MLL{\}}) Interaction Closely Mimic a Natural Protein-Protein Interaction.}}, + author = {He, Shihan and Senter, Timothy J and Pollock, Jonathan and Han, Changho and Upadhyay, Sunil Kumar and Purohit, Trupta and Gogliotti, Rocco D and Lindsley, Craig W and Cierpicki, Tomasz and Stauffer, Shaun R and Grembecka, Jolanta}, + doi = {10.1021/jm401868d} +} + +@article{karatas_high-affinity_2013, + title = {{High-affinity, small-molecule peptidomimetic inhibitors of mll1/wdr5 protein-protein interaction}}, + year = {2013}, + journal = {Journal of the American Chemical Society}, + author = {Karatas, Hacer and Townsend, Elizabeth C. and Cao, Fang and Chen, Yong and Bernard, Denzil and Liu, Liu and Lei, Ming and Dou, Yali and Wang, Shaomeng}, + number = {2}, + pages = {669--682}, + volume = {135}, + doi = {10.1021/ja306028q}, + issn = {00027863} +} + +@article{cautain_high-content_2013, + title = {{High-content screening of natural products reveals novel nuclear export inhibitors}}, + year = {2014}, + journal = {Journal of Biomolecular Screening}, + author = {Cautain, Bastien and De Pedro, Nuria and Garz{\'{o}}n, Virginia Murillo and De Escalona, MarÃa Muñoz and Gonz{\'{a}}lez Men{\'{e}}ndez, Victor and Tormo, José R. and Martin, Jesús and El Aouad, Noureddine and Reyes, Fernando and Asensio, Francisco and Genilloud, Olga and Vicente, Francisca and Link, Wolfgang}, + number = {1}, + pages = {57--65}, + volume = {19}, + doi = {10.1177/1087057113501389}, + issn = {10870571}, + keywords = {high-content screening, natural products screening, oncology, phenotypic drug discovery, reporter gene assays} +} + +@article{zhai_high-throughput_2012, + title = {{High-throughput fluorescence polarization assay for chemical library screening against anti-apoptotic Bcl-2 family member Bfl-1}}, + year = {2012}, + journal = {Journal of Biomolecular Screening}, + author = {Zhai, Dayong and Godoi, Paulo and Sergienko, Eduard and Dahl, Russell and Chan, Xochella and Brown, Brock and Rascon, Justin and Hurder, Andrew and Su, Ying and Chung, Thomas D.Y. and Jin, Chaofang and Diaz, Paul and Reed, John C.}, + number = {3}, + pages = {350--360}, + volume = {17}, + doi = {10.1177/1087057111429372}, + issn = {10870571}, + keywords = {cancer and cancer drugs, fluorescence polarization methods, immune system diseases, inflammatory diseases, protein-protein interactions} +} + +@article{an_hole_2012, + title = {{Hole filling and library optimization: Application to commercially available fragment libraries.}}, + author = {An, Yuling and Sherman, Woody and Dixon, Steven L}, + doi = {10.1016/j.bmc.2012.03.037} +} + +@article{hopkins_hopkins_ligand_efficiency_2004, + title = {{Hopkins{\_}ligand{\_}efficiency}}, + author = {Hopkins, Andrew}, + pages = {1--2}, + doi = {10.1016/S1359-6446(04)03069-7} +} + +@article{koutsoukas_how_2013, + title = {{How diverse are diversity assessment methods? A comparative analysis and benchmarking of molecular descriptor space.}}, + author = {Koutsoukas, Alexios and Paricharak, Shardul and Galloway, Warren and Spring, David R and Ijzerman, Adriaan P and Glen, Robert and Marcus, David and Bender, Andreas}, + doi = {10.1021/ci400469u} +} + +@article{heikamp_how_2011, + title = {{How do 2D fingerprints detect structurally diverse active compounds? Revealing compound subset-specific fingerprint features through systematic selection}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Heikamp, Kathrin and Bajorath, Jürgen}, + number = {9}, + pages = {2254--2265}, + volume = {51}, + doi = {10.1021/ci200275m}, + issn = {15499596}, + keywords = {chemical space, {\{}VLS{\}}} +} + +@article{irwin_how_2006, + title = {{How good is your screening library?}}, + author = {Irwin, John J}, + pages = {352--356}, + volume = {10}, + doi = {10.1016/j.cbpa.2006.06.003} +} + +@article{lipkin_how_2008, + title = {{How large does a compound screening collection need to be?}}, + author = {Lipkin, Michael J and Stevens, Adrian P and Livingstone, David J and Harris, C John}, + pages = {482--493}, + volume = {11} +} + +@article{overington_how_2006, + title = {{How many drug targets are there?}}, + author = {Overington, John P and Al-Lazikani, Bissan and Hopkins, Andrew L}, + pages = {993--996}, + volume = {5}, + doi = {10.1038/nrd2199} +} + +@article{kawasaki_how_2010, + title = {{How much binding affinity can be gained by filling a cavity?}}, + year = {2010}, + journal = {Chemical Biology and Drug Design}, + author = {Kawasaki, Yuko and Chufan, Eduardo E. and Lafont, Virginie and Hidaka, Koushi and Kiso, Yoshiaki and Mario Amzel, L. and Freire, Ernesto}, + number = {2}, + pages = {143--151}, + volume = {75}, + doi = {10.1111/j.1747-0285.2009.00921.x}, + issn = {17470277}, + keywords = {Binding affinity, Enthalpy, Entropy, Halogens, Isothermal titration calorimetry, Thermodynamic optimization} +} + +@article{sperandio_how_2010, + title = {{How to choose relevant multiple receptor conformations for virtual screening: A test case of Cdk2 and normal mode analysis}}, + year = {2010}, + journal = {European Biophysics Journal}, + author = {Sperandio, Olivier and Mouawad, Liliane and Pinto, Eulalie and Villoutreix, Bruno O. and Perahia, David and Miteva, Maria A.}, + number = {9}, + pages = {1365--1372}, + volume = {39}, + isbn = {0175-7571}, + doi = {10.1007/s00249-010-0592-0}, + issn = {01757571}, + pmid = {20237920}, + keywords = {Cdk2, Docking, Normal modes, Receptor flexibility, Virtual screening} +} + +@article{paul_how_2010, + title = {{How to improve RD productivity: The pharmaceutical industry's grand challenge}}, + shorttitle = {How to improve R{\&}D productivity}, + year = {2010}, + journal = {Nature Reviews Drug Discovery}, + author = {Paul, Steven M. and Mytelka, Daniel S. and Dunwiddie, Christopher T. and Persinger, Charles C. and Munos, Bernard H. and Lindborg, Stacy R. and Schacht, Aaron L.}, + number = {3}, + pages = {203--214}, + volume = {9}, + doi = {10.1038/nrd3078}, + issn = {14741776}, + pmid = {20168317}, + keywords = {Clinical Trials as Topic, Drug Discovery, Drug Industry, Economic, Efficiency, Humans, Models, Research, Research Design, Time Factors} +} + +@article{roughley_how_2011, + title = {{How well can fragments explore accessed chemical space? A case study from heat shock protein 90.}}, + author = {Roughley, Stephen D and Hubbard, Roderick E}, + pages = {3989--4005}, + volume = {54}, + doi = {10.1021/jm200350g} +} + +@article{swinney_how_2011, + title = {{How were new medicines discovered?}}, + year = {2011}, + journal = {Nature Reviews Drug Discovery}, + author = {Swinney, David C. and Anthony, Jason}, + number = {7}, + pages = {507--519}, + volume = {10}, + doi = {10.1038/nrd3480}, + issn = {14741776} +} + +@article{wu_hts_2013, + title = {{HTS by NMR of combinatorial libraries: A fragment-based approach to ligand discovery}}, + year = {2013}, + journal = {Chemistry and Biology}, + author = {Wu, Bainan and Zhang, Ziming and Noberini, Roberta and Barile, Elisa and Giulianotti, Marc and Pinilla, Clemencia and Houghten, Richard A. and Pasquale, Elena B. and Pellecchia, Maurizio}, + number = {1}, + pages = {19--33}, + volume = {20}, + doi = {10.1016/j.chembiol.2012.10.015}, + issn = {10745521} +} + +@article{kar_human_2009, + title = {{Human cancer protein-protein interaction network: a structural perspective.}}, + author = {Kar, Gozde and Gursoy, Attila and Keskin, Ozlem}, + pages = {e1000601}, + volume = {5}, + doi = {10.1371/journal.pcbi.1000601} +} + +@article{ruffner_human_2007, + title = {{Human protein-protein interaction networks and the value for drug discovery}}, + author = {Ruffner, Heinz and Bauer, Andreas and Bouwmeester, Tewis}, + pages = {709--716}, + volume = {12}, + doi = {10.1016/j.drudis.2007.07.011} +} + +@article{yang_hydrophobic_2011, + title = {{Hydrophobic Binding Hot Spots of Bcl-{\{}xL{\}} Protein-Protein Interfaces by Cosolvent Molecular Dynamics Simulation}}, + author = {Yang, Chao-Yie and Wang, Shaomeng}, + pages = {1--5} +} + +@article{abifadel_identification_2012, + title = {{Identification and characterization of new gain-of-function mutations in the {\{}PCSK{\}}9 gene responsible for autosomal dominant hypercholesterolemia.}}, + author = {Abifadel, Marianne and Guerin, Maryse and Benjannet, Suzanne and Rab{\`{e}}s, Jean-Pierre and Le Goff, Wilfried and Julia, Zélie and Hamelin, Josee and Carreau, Valérie and Varret, Mathilde and Bruckert, Eric and Tosolini, Laurent and Meilhac, Olivier and Couvert, Philippe and Bonnefont-Rousselot, Dominique and Chapman, John and Carri{\'{e}}, Alain and Michel, Jean-Baptiste and Prat, Annik and Seidah, Nabil G and Boileau, Catherine}, + pages = {394--400}, + volume = {223}, + doi = {10.1016/j.atherosclerosis.2012.04.006} +} + +@article{fish_identification_2012, + title = {{Identification of a Chemical Probe for Bromo and Extra C-Terminal Bromodomain Inhibition through Optimization of a Fragment-Derived Hit.}}, + author = {Fish, Paul V and Filippakopoulos, Panagis and Bish, Gerwyn and Brennan, Paul E and Bunnage, Mark E and Cook, Andrew S and Federov, Oleg and Gerstenberger, Brian S and Jones, Hannah and Knapp, Stefan and Marsden, Brian and Nocka, Karl and Owen, Dafydd R and Philpott, Martin and Picaud, Sarah and Primiano, Michael J and Ralph, Michael J and Sciammetta, Nunzio and Trzupek, John D}, + doi = {10.1021/jm3010515} +} + +@article{lawrence_identification_2009, + title = {{Identification of a disruptor of the MDM2-p53 protein-protein interaction facilitated by high-throughput in silico docking}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Lawrence, Harshani R. and Li, Zhenyu and Richard Yip, M. L. and Sung, Shen Shu and Lawrence, Nicholas J. and McLaughlin, Mark L. and McManus, Gregory J. and Zaworotko, Michael J. and Sebti, Saïd M. and Chen, Jiandong and Guida, Wayne C.}, + number = {14}, + pages = {3756--3759}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.04.124}, + issn = {0960894X}, + keywords = {Alphascreenâ„¢, Anticancer, Mdm2-p53, Protein-protein interaction, Virtual screening} +} + +@article{broos_identification_2012, + title = {{Identification of a small molecule that modulates the platelet glycoprotein Ib - Von Willebrand factor interaction.}}, + author = {Broos, Katleen and Trekels, Mieke and Jose, Rani Alphonsa and Demeulemeester, Jonas and Vandenbulcke, Aline and Vandeputte, Nele and Venken, Tom and Egle, Brecht and De Borggraeve, Wim M and Deckmyn, Hans and De Maeyer, Marc}, + pages = {9461--9472}, + volume = {287}, + doi = {10.1074/jbc.M111.311431} +} + +@article{byler_identification_2012, + title = {{Identification of benzoylisoquinolines as potential anti-Chagas agents.}}, + author = {Byler, Kendall G and Brito-Arias, Marco and Marquez-Navarro, Adrian and Nogueda-Torres, Benjamin and Torres-Bustillos, Luis G and Mart{\'{i}}nez-Mayorga, Karina}, + doi = {10.1016/j.bmc.2012.02.046} +} + +@article{pizzirani_identification_2009, + title = {{Identification of Biphenyl-Based Hybrid Molecules Able To Decrease the Intracellular Level of Bcl-2 Protein in Bcl-2 Overexpressing Leukemia Cells}}, + author = {Pizzirani, Daniela and Roberti, Marinella and Grimaudo, Stefania and Di Cristina, Antonietta and Pipitone, Rosaria Maria and Tolomeo, Manlio and Recanatini, Maurizio}, + pages = {6936--6940}, + volume = {52}, + doi = {10.1021/jm900907s} +} + +@article{zhang_identification_2011, + title = {{Identification of cavities on protein surface using multiple computational approaches for drug binding site prediction}}, + author = {Zhang, Z and Li, Y and Lin, B and Schroeder, M and Huang, B}, + pages = {2083--2088}, + volume = {27}, + doi = {10.1093/bioinformatics/btr331}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)}, + keywords = {*Algorithms, *Drug Design, *Software, Binding Sites, Computational Biology/methods, Internet, Ligands, Models, Molecular, Protein Binding, Protein Interaction Mapping, Protein Structure, Protein/*methods, Proteins/*chemistry, Sequence Analysis, Tertiary} +} + +@article{tuncbag_identification_2009, + title = {{Identification of computational hot spots in protein interfaces: combining solvent accessibility and inter-residue potentials improves the accuracy.}}, + author = {Tuncbag, Nurcan and Gursoy, Attila and Keskin, Ozlem}, + pages = {1513--1520}, + volume = {25}, + doi = {10.1093/bioinformatics/btp240} +} + +@article{chu_identification_2013, + title = {{Identification of fragments targeting an alternative pocket on {\{}HIV{\}}-1 gp41 by {\{}NMR{\}} screening and similarity searching.}}, + author = {Chu, Shidong and Gochin, Miriam}, + pages = {5114--5118}, + volume = {23}, + doi = {10.1016/j.bmcl.2013.07.026} +} + +@article{landon_identification_2007, + title = {{Identification of hot spots within druggable binding regions by computational solvent mapping of proteins}}, + author = {Landon, Melissa R and Lancia, David R and Yu, Jessamin and Thiel, Spencer C and Vajda, Sandor}, + pages = {1231--1240}, + volume = {50}, + doi = {10.1021/jm061134b} +} + +@article{sperandio_identification_2014, + title = {{Identification of novel small molecule inhibitors of activated protein C}}, + year = {2014}, + journal = {Thrombosis Research}, + author = {Sperandio, Olivier and Wildhagen, Karin C.A.A. and Schrijver, Roy and Wielders, Simone and Villoutreix, Bruno O. and Nicolaes, Gerry A.F.}, + number = {6}, + pages = {1105--1114}, + volume = {133}, + doi = {10.1016/j.thromres.2014.01.026}, + issn = {18792472}, + pmid = {24513148}, + keywords = {Activated protein C, Drug design, Factor Va, Virtual screening} +} + +@article{yu_identification_2008, + title = {{Identification of Small Molecular Weight Inhibitors of Src Homology 2 Domain-Containing Tyrosine Phosphatase 2 ({\{}SHP{\}}-2) via in Silico Database Screening Combined with Experimental Assay}}, + author = {Yu, Wen-Mei and Guvench, Olgun and Mackerell, Alexander D and Qu, Cheng-Kui}, + pages = {7396--7404}, + volume = {51}, + doi = {10.1021/jm800229d} +} + +@article{corradi_identification_2010, + title = {{Identification of the first non-peptidic small molecule inhibitor of the c-Abl/14-3-3 protein-protein interactions able to drive sensitive and Imatinib-resistant leukemia cells to apoptosis}}, + author = {Corradi, Valentina and Mancini, Manuela and Manetti, Fabrizio and Petta, Sara and Santucci, Maria Alessandra and Botta, Maurizio}, + pages = {6133--6137}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.08.019} +} + +@article{kuenemann_imbalance_2016, + title = {{Imbalance in chemical space: How to facilitate the identification of protein-protein interaction inhibitors}}, + shorttitle = {Imbalance in chemical space}, + year = {2016}, + journal = {Scientific Reports}, + author = {Kuenemann, Mélaine A. and Labb{\'{e}}, Céline M. and Cerdan, Adrien H. and Sperandio, Olivier}, + pages = {23815}, + volume = {6}, + isbn = {0340-6245}, + doi = {10.1038/srep23815}, + issn = {20452322}, + pmid = {27034268} +} + +@article{beck_improvement_2010, + title = {{Improvement of the synthesis and pharmacokinetic properties of chromenotriazolopyrimidine {\{}MDM{\}}2-p53 protein-protein inhibitors}}, + author = {Beck, Hilary P and Degraffenreid, Michael and Fox, Brian and Allen, John G and Rew, Yosup and Schneider, Stephen and Saiki, Anne Y and Yu, Dongyin and Oliner, Jonathan D and Salyers, Kevin and Ye, Qiuping and Olson, Steven}, + doi = {10.1016/j.bmcl.2010.11.027} +} + +@article{meanwell_improving_2011, + title = {{Improving drug candidates by design: A focus on physicochemical properties as a means of improving compound disposition and safety}}, + year = {2011}, + journal = {Chemical Research in Toxicology}, + author = {Meanwell, Nicholas A.}, + number = {9}, + pages = {1420--1456}, + volume = {24}, + doi = {10.1021/tx200211v}, + issn = {0893228X} +} + +@article{nguyen_improving_2013, + title = {{Improving the Prediction of Protein-Protein Interaction Sites Using a Novel Over-Sampling Approach and Predicted Shape Strings.}}, + author = {Nguyen, L A T and Hirose, O and Dang, X T}, + keywords = {PPI} +} + +@article{peers_search_2012, + title = {{In search of preclinical robustness.}}, + author = {Peers, Ian S and Ceuppens, Peter R and Harbron, Chris}, + pages = {733--734}, + volume = {11}, + doi = {10.1038/nrd3849} +} + +@article{su_silico_2010, + title = {{In silico binary classification QSAR models based on 4D-fingerprints and MOE descriptors for prediction of hERG blockage}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Su, Bo Han and Slien, Meng Yu and Esposito, Emilio Xavier and Hopnnger, Anton J. and Tseng, Yufeng J.}, + number = {7}, + pages = {1304--1318}, + volume = {50}, + doi = {10.1021/ci100081j}, + issn = {15499596} +} + +@article{kuenemann_silico_2015, + title = {{In silico design of low molecular weight protein-protein interaction inhibitors: Overall concept and recent advances}}, + author = {Kuenemann, M A and Sperandio, O and Labbe, C M and Lagorce, D and Miteva, M A and Villoutreix, B O}, + doi = {10.1016/j.pbiomolbio.2015.02.006}, + issn = {1873-1732 (Electronic) 0079-6107 (Linking)} +} + +@article{mitra_silico_2010, + title = {{In silico modeling of {\{}pH{\}}-optimum of protein-protein binding}}, + author = {Mitra, Rooplekha C and Zhang, Zhe and Alexov, Emil}, + doi = {10.1002/prot.22931} +} + +@article{dong_silico_2012, + title = {{In silico modeling of {\{}UDP{\}}-glucuronosyltransferase 1A10 substrates using the {\{}VolSurf{\}} approach.}}, + author = {Dong, Dong and Wu, Baojian}, + pages = {3531--3539}, + volume = {101}, + doi = {10.1002/jps.23100} +} + +@article{villoutreix_silico-vitro_2008, + title = {{In Silico-In Vitro Screening of Protein-Protein Interactions: Towards the Next Generation of Therapeutics}}, + year = {2008}, + journal = {Current Pharmaceutical Biotechnology}, + author = {Villoutreix, Bruno and Bastard, Karine and Sperandio, Olivier and Fahraeus, Robin and Poyet, Jean-Luc and Calvo, Fabien and Deprez, Benoit and Miteva, Maria}, + number = {2}, + pages = {103--122}, + volume = {9}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=1389-2010&volume=9&issue=2&spage=103}, + isbn = {1389-2010}, + doi = {10.2174/138920108783955218}, + issn = {13892010}, + pmid = {18393867} +} + +@article{vassilev_vivo_2004, + title = {{In vivo activation of the p53 pathway by small-molecule antagonists of {\{}MDM{\}}2}}, + author = {Vassilev, Lyubomir T and Vu, Binh T and Graves, Bradford and Carvajal, Daisy and Podlaski, Frank and Filipovic, Zoran and Kong, Norman and Kammlott, Ursula and Lukacs, Christine and Klein, Christian and Fotouhi, Nader and Liu, Emily A}, + pages = {844--848}, + volume = {303}, + doi = {10.1126/science.1092472} +} + +@article{chaparro-riggers_increasing_2012, + title = {{Increasing serum half-life and extending cholesterol lowering in vivo by engineering an antibody with {\{}pH{\}}-sensitive binding to {\{}PCSK{\}}9.}}, + author = {Chaparro-Riggers, Javier and Liang, Hong and Devay, Rachel M and Bai, Lanfang and Sutton, Janette E and Chen, Wei and Geng, Tao and Lindquist, Kevin and Galindo Casas, Meritxell and Boustany, Leila M and Brown, Colleen L and Chabot, Jeffrey and Gomes, Bruce and Garzone, Pamela and Rossi, Andrea and Strop, Pavel and Shelton, Dave and Pons, Jaume and Rajpal, Arvind}, + doi = {10.1074/jbc.M111.319764} +} + +@article{mok_increasing_2014, + title = {{Increasing the Coverage of Medicinal Chemistry-Relevant Space in Commercial Fragments Screening.}}, + author = {Mok, N Yi and Brenk, Ruth and Brown, Nathan}, + doi = {10.1021/ci400632y} +} + +@article{zhao_inhibiting_2005, + title = {{Inhibiting protein-protein interactions using designed molecules}}, + author = {Zhao, Lei and Chmielewski, Jean}, + pages = {31--34}, + volume = {15}, + doi = {10.1016/j.sbi.2005.01.005} +} + +@article{shahian_inhibition_2009, + title = {{Inhibition of a viral enzyme by a small-molecule dimer disruptor}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Shahian, Tina and Lee, Gregory M. and Lazic, Ana and Arnold, Leggy A. and Velusamy, Priya and Roels, Christina M. and Guy, R. Kiplin and Craik, Charles S.}, + number = {9}, + pages = {640--646}, + volume = {5}, + doi = {10.1038/nchembio.192}, + issn = {15524469} +} + +@article{cashman_inhibition_2010, + title = {{Inhibition of Bfl-1 with N-aryl maleimides}}, + author = {Cashman, John R and Macdonald, Mary and Ghirmai, Senait and Okolotowicz, Karl J and Sergienko, Eduard and Brown, Brock and Garcia, Xochella and Zhai, Dayong and Dahl, Russell and Reed, John C}, + pages = {6560--6564}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.09.046} +} + +@article{white_inhibition_2003, + title = {{Inhibition of Human Papillomavirus {\{}DNA{\}} Replication by Small Molecule Antagonists of the E1-E2 Protein Interaction}}, + author = {White, Peter W and Titolo, Steve and Brault, Karine and Thauvette, Louise and Pelletier, Alex and Welchner, Ewald and Bourgon, Lise and Doyon, Louise and Ogilvie, William W and Yoakim, Christiane and Cordingley, Michael G and Archambault, Jacques}, + pages = {26765--26772}, + volume = {278}, + doi = {10.1074/jbc.M303608200} +} + +@article{kartner_inhibition_2010, + title = {{Inhibition of osteoclast bone resorption by disrupting vacuolar H+-{\{}ATPase{\}} a3-B2 subunit interaction}}, + author = {Kartner, Norbert and Yao, Yeqi and Li, Keying and Crasto, Gazelle J and Datti, Alessandro and Manolson, Morris F}, + pages = {37476--37490}, + volume = {285}, + doi = {10.1074/jbc.M110.123281} +} + +@article{toogood_inhibition_2002, + title = {{Inhibition of protein-protein association by small molecules: Approaches and progress}}, + year = {2002}, + journal = {Journal of Medicinal Chemistry}, + author = {Toogood, Peter L.}, + number = {8}, + pages = {1543--1558}, + volume = {45}, + doi = {10.1021/jm010468s}, + issn = {00222623} +} + +@article{wilson_inhibition_2009, + title = {{Inhibition of protein-protein interactions using designed molecules.}}, + author = {Wilson, Andrew J}, + pages = {3289--3300}, + volume = {38}, + doi = {10.1039/b807197g} +} + +@article{dawson_inhibition_2011, + title = {{Inhibition of {\{}BET{\}} recruitment to chromatin as an effective treatment for {\{}MLL{\}}-fusion leukaemia}}, + author = {Dawson, Mark A and Prinjha, Rab K and Dittmann, Antje and Giotopoulos, George and Bantscheff, Marcus and Chan, Wai-In and Robson, Samuel C and Chung, Chun-Wa and Hopf, Carsten and Savitski, Mikhail M and Huthmacher, Carola and Gudgin, Emma and Lugo, Dave and Beinke, Soren and Chapman, Trevor D and Roberts, Emma J and Soden, Peter E and Auger, Kurt R and Mirguet, Olivier and Doehner, Konstanze and Delwel, Ruud and Burnett, Alan K and Jeffrey, Phillip and Drewes, Gerard and Lee, Kevin and Huntly, Brian J P and Kouzarides, Tony}, + pages = {529--533}, + volume = {478}, + doi = {doi:10.1038/nature10509} +} + +@article{grillo-bosch_inhibition_2013, + title = {{Inhibition of {\{}PDZ{\}} domain-mediated interactions}}, + author = {Grillo-Bosch, Dolors and Choquet, Daniel and Sainlos, Matthieu}, + pages = {e531--e540}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.10.003} +} + +@article{kwon_inhibition_2012, + title = {{Inhibition of {\{}VEGF{\}} transcription through blockade of the hypoxia inducible factor-1{$\alpha$}-p300 interaction by a small molecule.}}, + author = {Kwon, Hyuk Sung and Kim, Da-Rae and Yang, Eun Gyeong and Park, Yong Keun and Ahn, Hee-Chul and Min, Sun-Joon and Ahn, Dae-Ro}, + doi = {10.1016/j.bmcl.2012.06.054} +} + +@article{azzarito_inhibition_2013, + title = {{Inhibition of {$\alpha$}-helix-mediated protein–protein interactions using designed molecules}}, + author = {Azzarito, Valeria and Long, Kérya and Murphy, Natasha S and Wilson, Andrew J}, + pages = {161--173}, + volume = {5}, + doi = {10.1038/nchem.1568} +} + +@article{cesa_inhibitors_2013, + title = {{Inhibitors of Difficult Protein–Protein Interactions Identified by High-Throughput Screening of Multiprotein Complexes}}, + author = {Cesa, Laura C and Patury, Srikanth and Komiyama, Tomoko and Ahmad, Atta and Zuiderweg, Erik R P and Gestwicki, Jason E}, + pages = {1988--1997}, + volume = {8}, + doi = {10.1021/cb400356m} +} + +@article{silvian_inhibitors_2013, + title = {{Inhibitors of protein–protein interactions: New methodologies to tackle this challenge}}, + author = {Silvian, Laura and Enyedy, Istvan and Kumaravel, Gnanasambandam}, + pages = {e509--e515}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.10.004} +} + +@article{bajwa_inhibitors_2012, + title = {{Inhibitors of the anti-apoptotic Bcl-2 proteins: a patent review}}, + author = {Bajwa, Naval and Liao, Chenzhong and Nikolovska-Coleska, Zaneta}, + pages = {37--55}, + volume = {22}, + doi = {10.1517/13543776.2012.644274} +} + +@article{meanwell_inhibitors_2003, + title = {{Inhibitors of the entry of {\{}HIV{\}} into host cells}}, + author = {Meanwell, Nicholas A and Kadow, John F}, + pages = {451--461}, + volume = {6} +} + +@misc{janssen_pharmaceutica_n_v_inhibitors_2006, + title = {{Inhibitors of the Interaction Between Mdm2 and P53}}, + pages = {C07D 401/ 12 A I; A61K 31/ 4439 A I; A61K 31/ 4709} +} + +@book{manka_inhibitors_2010, + title = {{Inhibitors of the Menin-Mixed Lineage Leukemia ({\{}MLL{\}}) Interaction}}, + shorttitle = {Probe Reports from the {\{}NIH{\}} Molecular Libraries P}, + author = {Manka, Jason and Daniels, Richard N and Dawson, Eric and Daniels, J Scott and Southall, Noel and Jadhav, Ajit and Zheng, Wei and Austin, Chris and Grembecka, Jolanta and Cierpicki, Tomasz and Lindsley, Craig W and Stauffer, Shaun R}, + publisher = {National Center for Biotechnology Information ({\{}US{\}})} +} + +@article{carry_inhibitors_2013, + title = {{Inhibitors of the p53/hdm2 protein{\^{a}}€“protein interaction{\^{a}}€â€path to the clinic}}, + author = {Carry, Jean-Christophe and Garcia-Echeverria, Carlos}, + pages = {2480--2485}, + volume = {23}, + doi = {10.1016/j.bmcl.2013.03.034} +} + +@article{meanwell_inhibitors_2009, + title = {{Inhibitors of {\{}HIV{\}}-1 attachment. Part 2: An initial survey of indole substitution patterns}}, + author = {Meanwell, Nicholas A and Wallace, Owen B and Fang, Haiquan and Wang, Henry and Deshpande, Milind and Wang, Tao and Yin, Zhiwei and Zhang, Zhongxing and Pearce, Bradley C and James, Jennifer and Yeung, Kap-Sun and Qiu, Zhilei and Kim Wright, J J and Yang, Zheng and Zadjura, Lisa and Tweedie, Donald L and Yeola, Suresh and Zhao, Fang and Ranadive, Sunanda and Robinson, Brett A and Gong, Yi-Fei and Wang, Hwei-Gene Heidi and Blair, Wade S and Shi, Pei-Yong and Colonno, Richard J and Lin, Pin-Fang}, + pages = {1977--1981}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.02.040} +} + +@article{wang_inhibitors_2009, + title = {{Inhibitors of {\{}HIV{\}}-1 attachment. Part 4: A study of the effect of piperazine substitution patterns on antiviral potency in the context of indole-based derivatives}}, + author = {Wang, Tao and Kadow, John F and Zhang, Zhongxing and Yin, Zhiwei and Gao, Qi and Wu, Dedong and Parker, Dawn DiGiugno and Yang, Zheng and Zadjura, Lisa and Robinson, Brett A and Gong, Yi-Fei and Blair, Wade S and Shi, Pei-Yong and Yamanaka, Gregory and Lin, Pin-Fang and Meanwell, Nicholas A}, + pages = {5140--5145}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.07.076} +} + +@article{dimasi_innovation_2016, + title = {{Innovation in the pharmaceutical industry: New estimates of R{\&}D costs}}, + shorttitle = {Innovation in the pharmaceutical industry}, + year = {2016}, + journal = {Journal of Health Economics}, + author = {DiMasi, Joseph A. and Grabowski, Henry G. and Hansen, Ronald W.}, + pages = {20--33}, + volume = {47}, + doi = {10.1016/j.jhealeco.2016.01.012}, + issn = {18791646}, + pmid = {26928437}, + keywords = {Discount rate, Innovation, Pharmaceutical industry, R{\&}D cost, Technical success rates} +} + +@article{jiang_insight_2013, + title = {{Insight into the Intermolecular Recognition Mechanism between Keap1 and {\{}IKK{$\beta$}{\}} Combining Homology Modelling, Protein-Protein Docking, Molecular Dynamics Simulations and Virtual Alanine Mutation.}}, + author = {Jiang, Zheng-Yu and Chu, Hong-Xi and Xi, Mei-Yang and Yang, Ting-Ting and Jia, Jian-Min and Huang, Jing-Jie and Guo, Xiao-Ke and Zhang, Xiao-Jin and You, Qi-Dong and Sun, Hao-Peng}, + pages = {e75076}, + volume = {8}, + doi = {10.1371/journal.pone.0075076} +} + +@article{sowmya_insights_2011, + title = {{Insights from the structural analysis of protein heterodimer interfaces}}, + author = {Sowmya, Gopichandran and Anita, Sathyanarayanan and Kangueane, Pandjassarame}, + number = {4}, + pages = {137--143}, + volume = {6}, + issn = {0973-2063}, + pmid = {21572879}, + keywords = {core, heterodimer, interface, polar abundance, protein-protein interaction ({\{}PPI{\}}), surface} +} + +@article{perot_insights_2013, + title = {{Insights into an Original Pocket-Ligand Pair Classification: A Promising Tool for Ligand Profile Prediction}}, + year = {2013}, + journal = {PLoS ONE}, + author = {P{\'{e}}rot, Stéphanie and Regad, Leslie and Reyn{\`{e}}s, Christelle and Sp{\'{e}}randio, Olivier and Miteva, Maria A. and Villoutreix, Bruno O. and Camproux, Anne Claude}, + number = {6}, + pages = {e63730}, + volume = {8}, + doi = {10.1371/journal.pone.0063730}, + issn = {19326203}, + pmid = {23840299} +} + +@article{kabuta_insulin_2010, + title = {{Insulin receptor substrate-3, interacting with Bcl-3, enhances p50 {\{}NF{\}}-{\{}kappaB{\}} activity}}, + author = {Kabuta, Tomohiro and Hakuno, Fumihiko and Cho, Yoshitake and Yamanaka, Daisuke and Chida, Kazuhiro and Asano, Tomoichiro and Wada, Keiji and Takahashi, Shin-Ichiro}, + pages = {697--702}, + volume = {394}, + doi = {10.1016/j.bbrc.2010.03.054} +} + +@article{kabuta_insulin_2010-1, + title = {{Insulin receptor substrate-3, interacting with Bcl-3, enhances p50 {\{}NF{\}}-{$\kappa$}B activity}}, + author = {Kabuta, Tomohiro and Hakuno, Fumihiko and Cho, Yoshitake and Yamanaka, Daisuke and Chida, Kazuhiro and Asano, Tomoichiro and Wada, Keiji and Takahashi, Shin-Ichiro}, + pages = {697--702}, + volume = {394}, + doi = {10.1016/j.bbrc.2010.03.054} +} + +@article{raimundo_integrating_2004, + title = {{Integrating Fragment Assembly and Biophysical Methods in the Chemical Advancement of Small-Molecule Antagonists of {\{}IL{\}}-2: An Approach for Inhibiting Protein−Protein Interactions †}}, + author = {Raimundo, Brian C and Oslob, Johan D and Braisted, Andrew C and Hyde, Jennifer and McDowell, Robert S and Randal, Mike and Waal, Nathan D and Wilkinson, Jennifer and Yu, Chul H and Arkin, Michelle R}, + pages = {3111--3130}, + volume = {47}, + doi = {10.1021/jm049967u} +} + +@article{wetzel_interactive_2009, + title = {{Interactive exploration of chemical space with Scaffold Hunter}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Wetzel, Stefan and Klein, Karsten and Renner, Steffen and Rauh, Daniel and Oprea, Tudor I. and Mutzel, Petra and Waldmann, Herbert}, + number = {8}, + pages = {581--583}, + volume = {5}, + doi = {10.1038/nchembio.187}, + issn = {15524469} +} + +@article{petitjean_interactive_1998, + title = {{Interactive Maximal Common 3D Substructure Searching with the Combined SDM/RMS Algorithm}}, + year = {1998}, + journal = {Computers and Chemistry}, + author = {Petitjean, Michel}, + number = {6}, + pages = {463--465}, + volume = {22}, + doi = {10.1016/S0097-8485(98)00017-5}, + issn = {00978485}, + keywords = {Maximal common 3D substructure, SDM algorithm, Spatial alignments} +} + +@article{mosca_interactome3d:_2013, + title = {{Interactome3D: adding structural details to protein networks}}, + shorttitle = {Interactome3D}, + author = {Mosca, Roberto and C{\'{e}}ol, Arnaud and Aloy, Patrick}, + number = {1}, + pages = {47--53}, + volume = {10}, + doi = {10.1038/nmeth.2289}, + issn = {1548-7105}, + pmid = {23399932}, + keywords = {Animals, Biological, Computer Simulation, Databases, Humans, Models, Multiprotein Complexes, Protein, Protein Conformation, Protein Interaction Mapping, Proteins} +} + +@article{johnson_interface-resolved_2013, + title = {{Interface-Resolved Network of Protein-Protein Interactions}}, + author = {Johnson, Margaret E and Hummer, Gerhard}, + editor = {Russell, Robert B}, + pages = {e1003065}, + volume = {9}, + doi = {10.1371/journal.pcbi.1003065} +} + +@article{pommier_interfacial_2011, + title = {{Interfacial inhibitors: Targeting macromolecular complexes}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Pommier, Yves and Marchand, Christophe}, + number = {1}, + pages = {25--36}, + volume = {11}, + doi = {10.1038/nrd3404}, + issn = {14741784} +} + +@article{alex_intramolecular_2011, + title = {{Intramolecular hydrogen bonding to improve membrane permeability and absorption in beyond rule of five chemical space}}, + author = {Alex, Alexander and Millan, David S and Perez, Manuel and Wakenhut, Florian and Whitlock, Gavin A}, + pages = {669}, + volume = {2}, + doi = {10.1039/c1md00093d} +} + +@article{de_vries_intramolecular_2006, + title = {{Intramolecular surface contacts contain information about protein-protein interface regions}}, + author = {de Vries, Sjoerd J and Bonvin, Alexandre M J J}, + pages = {2094--2098}, + volume = {22}, + doi = {10.1093/bioinformatics/btl275} +} + +@article{de_vleeschouwer_inverse_2012, + title = {{Inverse design of molecules with optimal reactivity properties: acidity of 2-naphthol derivatives.}}, + author = {De Vleeschouwer, Freija and Yang, Weitao and Beratan, David N and Geerlings, Paul and De Proft, Frank}, + pages = {16002--16013}, + volume = {14}, + doi = {10.1039/c2cp42623d} +} + +@article{carter_investigating_2016, + title = {{Investigating investment in biopharmaceutical R{\&}D}}, + author = {Carter, Percy H and Berndt, Ernst R and DiMasi, Joseph A and Trusheim, Mark}, + number = {10}, + pages = {673--674}, + volume = {15}, + doi = {10.1038/nrd.2016.104}, + issn = {1474-1784}, + pmid = {27616295} +} + +@article{cheng_investigating_2010, + title = {{Investigating the correlations among the chemical structures, bioactivity profiles and molecular targets of small molecules}}, + author = {Cheng, Tiejun and Wang, Yanli and Bryant, Stephen H}, + pages = {2881--2888}, + volume = {26}, + doi = {10.1093/bioinformatics/btq550} +} + +@article{axerio-cilies_investigation_2009, + title = {{Investigation of the incidence of}}, + author = {Axerio-Cilies, P and Castaņeda, I and Mirza, A} +} + +@article{yang_investigation_2010, + title = {{Investigation of the relationship between topology and selectivity for druglike molecules.}}, + author = {Yang, Yidong and Chen, Hongming and Nilsson, Ingemar and Muresan, Sorel and Engkvist, Ola}, + pages = {7709--7714}, + volume = {53}, + doi = {10.1021/jm1008456} +} + +@article{hardcastle_isoindolinone-based_2005-1, + title = {{Isoindolinone-based inhibitors of the {\{}MDM{\}}2-p53 protein-protein interaction}}, + author = {Hardcastle, Ian R and Ahmed, Shafiq U and Atkins, Helen and Calvert, A Hilary and Curtin, Nicola J and Farnie, Gillian and Golding, Bernard T and Griffin, Roger J and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J and Kitching, Martin S and Newell, David R and Norbedo, Stefano and Northen, Julian S and Reid, Rebecca J and Saravanan, K and Willems, Henriëtte M G and Lunec, John}, + pages = {1515--1520}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.12.061} +} + +@article{hardcastle_isoindolinone-based_2005, + title = {{Isoindolinone-based inhibitors of the {\{}MDM{\}}2–p53 protein–protein interaction}}, + author = {Hardcastle, Ian R and Ahmed, Shafiq U and Atkins, Helen and Calvert, A Hilary and Curtin, Nicola J and Farnie, Gillian and Golding, Bernard T and Griffin, Roger J and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J and Kitching, Martin S and Newell, David R and Norbedo, Stefano and Northen, Julian S and Reid, Rebecca J and Saravanan, K and Willems, Henriëtte M G and Lunec, John}, + pages = {1515--1520}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.12.061} +} + +@article{enthammer_isolation_2013, + title = {{Isolation of a Novel Thioflavin S-Derived Compound that Inhibits {\{}BAG{\}}-1-Mediated Protein Interactions and Targets {\{}BRAF{\}} Inhibitor-Resistant Cell Lines.}}, + author = {Enthammer, Marion and Papadakis, Emmanouil S and Gachet, Maria Salome and Deutsch, Martin and Schwaiger, Stefan and Koziel, Katarzyna and Ashraf, Muhammad I and Khalid, Sana and Wolber, Gerhard and Packham, Graham and Cutress, Ramsey I and Stuppner, Hermann and Troppmair, Jakob}, + doi = {10.1158/1535-7163.MCT-13-0142} +} + +@article{melkko_isolation_2010, + title = {{Isolation of a small-molecule inhibitor of the antiapoptotic protein Bcl-xL from a DNA-encoded chemical library}}, + year = {2010}, + journal = {ChemMedChem}, + author = {Melkko, Samu and Mannocci, Luca and Dumelin, Christoph E. and Villa, Alessandra and Sommavilla, Roberto and Zhang, Yixin and Gr{\"{u}}tter, Markus G. and Keller, Nadine and Jermutus, Lutz and Jackson, Ronald H. and Scheuermann, Jörg and Neri, Dario}, + number = {4}, + pages = {584--590}, + volume = {5}, + doi = {10.1002/cmdc.200900520}, + issn = {18607179}, + keywords = {Affinity-based screening, Apoptosis, Bcl-xL, High-throughput, Indomethacin, Libraries, Sequencing} +} + +@article{hobbs_j._2012, + title = {{J. Lipid Res.-2012-Wang-jlr.M028563}}, + author = {Hobbs, Helen}, + pages = {1--29} +} + +@article{zhu_kfc2:_2011, + title = {{KFC2: A knowledge-based hot spot prediction method based on interface solvation, atomic density, and plasticity features}}, + year = {2011}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {Zhu, Xiaolei and Mitchell, Julie C.}, + number = {9}, + pages = {2671--2683}, + volume = {79}, + doi = {10.1002/prot.23094}, + issn = {08873585}, + keywords = {Atomic density, Hot spot, Plasticity, Protein-protein interface, SVM, Solvent accessible surface area} +} + +@article{aronov_kinase-likeness_2008, + title = {{Kinase-likeness and kinase-privileged fragments: Toward virtual polypharmacology}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Aronov, Alex M. and McClain, Brian and Moody, Cameron Stuver and Murcko, Mark A.}, + number = {5}, + pages = {1214--1222}, + volume = {51}, + doi = {10.1021/jm701021b}, + issn = {00222623} +} + +@article{jacoby_knowledge-based_2009, + title = {{Knowledge-based virtual screening: application to the {\{}MDM{\}}4/p53 protein-protein interaction}}, + author = {Jacoby, Edgar and Boettcher, Andreas and Mayr, Lorenz M and Brown, Nathan and Jenkins, Jeremy L and Kallen, Joerg and Engeloch, Caroline and Schopfer, Ulrich and Furet, Pascal and Masuya, Keiichi and Lisztwan, Joanna}, + pages = {173--194}, + volume = {575}, + doi = {10.1007/978-1-60761-274-2{\_}7} +} + +@article{mirza_known_2009, + title = {{Known drug space as a metric in exploring the boundaries of drug-like chemical space.}}, + author = {Mirza, Amin and Desai, Radha and Reynisson, Jóhannes}, + pages = {5006--5011}, + volume = {44}, + doi = {10.1016/j.ejmech.2009.08.014} +} + +@article{Weiss1999DexrazoxaneICRF-187, + title = {{Dexrazoxane (ICRF-187)}}, + year = {1999}, + journal = {General Pharmacology}, + author = {Weiss, G. and Loyevsky, M. and Gordeuk, V. R.}, + number = {1}, + month = {1}, + pages = {155--158}, + volume = {32}, + issn = {0306-3623}, + language = {eng} +} + +@article{Zhao2013DiastereomericInhibitors, + title = {{Diastereomeric spirooxindoles as highly potent and efficacious MDM2 inhibitors}}, + year = {2013}, + journal = {Journal of the American Chemical Society}, + author = {Zhao, Yujun and Liu, Liu and Sun, Wei and Lu, Jianfeng and McEachern, Donna and Li, Xiaoqin and Yu, Shanghai and Bernard, Denzil and Ochsenbein, Philippe and Ferey, Vincent and Carry, Jean Christophe and Deschamps, Jeffrey R. and Sun, Duxin and Wang, Shaomeng}, + number = {19}, + pages = {7223--7234}, + volume = {135}, + doi = {10.1021/ja3125417}, + issn = {00027863} +} + +@article{Rogolino2014DiketoacidProcess, + title = {{Diketoacid chelating ligands as dual inhibitors of HIV-1 integration process}}, + year = {2014}, + journal = {European Journal of Medicinal Chemistry}, + author = {Rogolino, Dominga and Carcelli, Mauro and Compari, Carlotta and De Luca, Laura and Ferro, Stefania and Fisicaro, Emilia and Rispoli, Gabriele and Neamati, Nouri and Debyser, Zeger and Christ, Frauke and Chimirri, Alba}, + pages = {425--430}, + volume = {78}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2014.03.070}, + doi = {10.1016/j.ejmech.2014.03.070}, + issn = {17683254}, + keywords = {Antiviral agents, Diketo acid, Dual inhibitors, HIV-1 integrase inhibitors, LEDGF/p75 protein-protein inhibitors, Magnesium complexes} +} + +@article{Gavathiotis2012DirectBAX, + title = {{Direct and selective small-molecule activation of proapoptotic BAX}}, + year = {2012}, + journal = {Nature Chemical Biology}, + author = {Gavathiotis, Evripidis and Reyna, Denis E. and Bellairs, Joseph A. and Leshchiner, Elizaveta S. and Walensky, Loren D.}, + number = {7}, + pages = {639--645}, + volume = {8}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.995}, + doi = {10.1038/nchembio.995}, + issn = {15524469} +} + +@article{Grasberger2005DiscoveryCells, + title = {{Discovery and cocrystal structure of benzodiazepinedione HDM2 antagonists that activate p53 in cells}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Grasberger, Bruce L. and Lu, Tianbao and Schubert, Carsten and Parks, Daniel J. and Carver, Theodore E. and Koblish, Holly K. and Cummings, Maxwell D. and LaFrance, Louis V. and Milkiewicz, Karen L. and Calvo, Raul R. and Maguire, Diane and Lattanze, Jennifer and Franks, Carol F. and Zhao, Shuyuan and Ramachandren, Kannan and Bylebyl, Gwendolyn R. and Zhang, Marie and Manthey, Carl L. and Petrella, Eugene C. and Pantoliano, Michael W. and Deckman, Ingrid C. and Spurlino, John C. and Maroney, Anna C. and Tomczuk, Bruce E. and Molloy, Christopher J. and Bone, Roger F.}, + number = {4}, + pages = {909--912}, + volume = {48}, + doi = {10.1021/jm049137g}, + issn = {00222623} +} + +@article{Grasberger2005DiscoveryCellsb, + title = {{Discovery and cocrystal structure of benzodiazepinedione HDM2 antagonists that activate p53 in cells}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Grasberger, Bruce L. and Lu, Tianbao and Schubert, Carsten and Parks, Daniel J. and Carver, Theodore E. and Koblish, Holly K. and Cummings, Maxwell D. and LaFrance, Louis V. and Milkiewicz, Karen L. and Calvo, Raul R. and Maguire, Diane and Lattanze, Jennifer and Franks, Carol F. and Zhao, Shuyuan and Ramachandren, Kannan and Bylebyl, Gwendolyn R. and Zhang, Marie and Manthey, Carl L. and Petrella, Eugene C. and Pantoliano, Michael W. and Deckman, Ingrid C. and Spurlino, John C. and Maroney, Anna C. and Tomczuk, Bruce E. and Molloy, Christopher J. and Bone, Roger F.}, + number = {4}, + pages = {909--912}, + volume = {48}, + doi = {10.1021/jm049137g}, + issn = {00222623} +} + +@article{Ferrara2004DiscoveryCancer, + title = {{Discovery and development of bevacizumab, an anti-VEGF antibody for treating cancer}}, + year = {2004}, + journal = {Nature Reviews Drug Discovery}, + author = {Ferrara, Napoleone and Hillan, Kenneth J. and Gerber, Hans Peter and Novotny, William}, + number = {5}, + pages = {391--400}, + volume = {3}, + doi = {10.1038/nrd1381}, + issn = {14741776} +} + +@article{Allen2009DiscoveryInteraction, + title = {{Discovery and optimization of chromenotriazolopyrimidines as potent inhibitors of the mouse double minute 2-tumor protein 53 protein-protein interaction}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Allen, John G. and Bourbeau, Matthew P. and Wohlhieter, G. Erich and Bartberger, Michael D. and Michelsen, Klaus and Hungate, Randall and Gadwood, Robert C. and Gaston, Rick D. and Evans, Bruce and Mann, Larry W. and Matison, Michael E. and Schneider, Stephen and Huang, Xin and Yu, Dongyin and Andrews, Paul S. and Reichelt, Andreas and Long, Alexander M. and Yakowec, Peter and Yang, Evelyn Y. and Lee, Tani Ann and Oliner, Jonathan D.}, + number = {22}, + pages = {7044--7053}, + volume = {52}, + doi = {10.1021/jm900681h}, + issn = {00222623} +} + +@article{Wang2013DiscoveryInteraction, + title = {{Discovery and structure-activity relationships of small molecules that block the human immunoglobulin G-human neonatal Fc receptor (hIgG-hFcRn) protein-protein interaction}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Wang, Zhaolin and Fraley, Cara and Mezo, Adam R.}, + number = {5}, + pages = {1253--1256}, + volume = {23}, + url = {http://dx.doi.org/10.1016/j.bmcl.2013.01.014}, + doi = {10.1016/j.bmcl.2013.01.014}, + issn = {0960894X}, + keywords = {FcRn, Inhibitor, Neonatal Fc receptor, Protein-protein interactions, Small molecule} +} + +@article{Kessler2013DiscoveryVirus, + title = {{Discovery and synthesis of novel benzofurazan derivatives as inhibitors of influenza A virus}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Kessler, Ulrich and Castagnolo, Daniele and Pagano, Mafalda and Deodato, Davide and Bernardini, Martina and Pilger, Beatrice and Ranadheera, Charlene and Botta, Maurizio}, + number = {20}, + pages = {5575--5577}, + volume = {23}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2013.08.048}, + doi = {10.1016/j.bmcl.2013.08.048}, + issn = {0960894X}, + keywords = {Antiviral agents, Benzofurazan, H1N1, Influenza virus, Viral RNA polymerase} +} + +@article{James2013DiscoveryDomain, + title = {{Discovery of a chemical probe for the L3MBTL3 methyllysine reader domain}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {James, Lindsey I. and Barsyte-Lovejoy, Dalia and Zhong, Nan and Krichevsky, Liubov and Korboukh, Victoria K. and Herold, J. Martin and MacNevin, Christopher J. and Norris, Jacqueline L. and Sagum, Cari A. and Tempel, Wolfram and Marcon, Edyta and Guo, Hongbo and Gao, Cen and Huang, Xi Ping and Duan, Shili and Emili, Andrew and Greenblatt, Jack F. and Kireev, Dmitri B. and Jin, Jian and Janzen, William P. and Brown, Peter J. and Bedford, Mark T. and Arrowsmith, Cheryl H. and Frye, Stephen V.}, + number = {3}, + pages = {184--191}, + volume = {9}, + doi = {10.1038/nchembio.1157}, + issn = {15524450} +} + +@article{Lu2006DiscoveryStrategy, + title = {{Discovery of a nanomolar inhibitor of the human murine double minute 2 (MDM2)-p53 interaction through an integrated, virtual database screening strategy}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {Lu, Yipin and Nikolovska-Coleska, Zaneta and Fang, Xueliang and Gao, Wei and Shangary, Sanjeev and Qiu, Su and Qin, Dongguang and Wang, Shaomeng}, + number = {13}, + pages = {3759--3762}, + volume = {49}, + doi = {10.1021/jm060023+}, + issn = {00222623} +} + +@article{Serrao2013DiscoveryInteraction, + title = {{Discovery of a novel 5-carbonyl-1H-imidazole-4-carboxamide class of inhibitors of the HIV-1 integrase-LEDGF/p75 interaction}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Serrao, Erik and Xu, Zhong Liang and Debnath, Bikash and Christ, Frauke and Debyser, Zeger and Long, Ya Qiu and Neamati, Nouri}, + number = {19}, + pages = {5963--5972}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2013.07.047}, + doi = {10.1016/j.bmc.2013.07.047}, + issn = {09680896}, + keywords = {Antiviral, HIV-1, Integrase, LEDGF/p75 5-carbonyl-1H-Imidazole-4-carboxamide, Protein-protein interaction} +} + +@article{Petros2006DiscoverySynthesis, + title = {{Discovery of a potent inhibitor of the antiapoptotic protein Bcl-X L from NMR and parallel synthesis}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {Petros, Andrew M. and Dinges, Jurgen and Augeri, David J. and Baumeister, Steven A. and Betebenner, David A. and Bures, Mark G. and Elmore, Steven W. and Hajduk, Philip J. and Joseph, Mary K. and Landis, Shelley K. and Nettesheim, David G. and Rosenberg, Saul H. and Shen, Wang and Thomas, Sheela and Wang, Xilu and Zanze, Irini and Zhang, Haichao and Fesik, Stephen W.}, + number = {2}, + pages = {656--663}, + volume = {49}, + doi = {10.1021/jm0507532}, + issn = {00222623}, + pmid = {16420051} +} + +@article{Braisted2003DiscoveryAssembly, + title = {{Discovery of a potent small molecule IL-2 inhibitor through fragment assembly}}, + year = {2003}, + journal = {Journal of the American Chemical Society}, + author = {Braisted, Andrew C. and Oslob, Johan D. and Delano, Warren L. and Hyde, Jennifer and McDowell, Robert S. and Waal, Nathan and Yu, Chul and Arkin, Michelle R. and Raimundo, Brian C.}, + number = {13}, + pages = {3714--3715}, + volume = {125}, + doi = {10.1021/ja034247i}, + issn = {00027863} +} + +@article{Williams2009DiscoveryInteraction, + title = {{Discovery of a small molecule inhibitor through interference with the gp120-CD4 interaction}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Williams, David H. and Adam, Fiona and Fenwick, David R. and Fok-Seang, Juin and Gardner, Iain and Hay, Duncan and Jaiessh, Rawal and Middleton, Donald S. and Mowbray, Charles E. and Parkinson, Tanya and Perros, Manos and Pickford, Christopher and Platts, Michelle and Randall, Amy and Siddle, Daniel and Stephenson, Peter T. and Tran, Thien Duc and Vuong, Hannah}, + number = {17}, + pages = {5246--5249}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.06.080}, + issn = {0960894X}, + keywords = {Entry inhibitors, HIV, gp120-CD4} +} + +@article{Sun2014DiscoveryDevelopment, + title = {{Discovery of AMG 232, a potent, selective, and orally bioavailable MDM2-p53 inhibitor in clinical development}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Sun, Daqing and Li, Zhihong and Rew, Yosup and Gribble, Michael and Bartberger, Michael D. and Beck, Hilary P. and Canon, Jude and Chen, Ada and Chen, Xiaoqi and Chow, David and Deignan, Jeffrey and Duquette, Jason and Eksterowicz, John and Fisher, Benjamin and Fox, Brian M. and Fu, Jiasheng and Gonzalez, Ana Z. and Gonzalez-Lopez De Turiso, Felix and Houze, Jonathan B. and Huang, Xin and Jiang, Min and Jin, Lixia and Kayser, Frank and Liu, Jiwen and Lo, Mei Chu and Long, Alexander M. and Lucas, Brian and McGee, Lawrence R. and McIntosh, Joel and Mihalic, Jeff and Oliner, Jonathan D. and Osgood, Tao and Peterson, Matthew L. and Roveto, Philip and Saiki, Anne Y. and Shaffer, Paul and Toteva, Maria and Wang, Yingcai and Wang, Yu Chung and Wortman, Sarah and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Yu, Ming and Zhao, Xiaoning and Zhou, Jing and Zhu, Jiang and Olson, Steven H. and Medina, Julio C.}, + number = {4}, + pages = {1454--1472}, + volume = {57}, + doi = {10.1021/jm401753e}, + issn = {00222623} +} + +@article{Park2008DiscoveryProteins, + title = {{Discovery of an orally bioavailable small molecule inhibitor of prosurvival B-cell lymphoma 2 proteins}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Park, Cheol Min and Bruncko, Milan and Adickes, Jessica and Bauch, Joy and Ding, Hong and Kunzer, Aaron and Marsh, Kennan C. and Nimmer, Paul and Shoemaker, Alexander R. and Song, Xiaohong and Tahir, Stephen K. and Tse, Christin and Wang, Xilu and Wendt, Michael D. and Yang, Xiufen and Zhang, Haichao and Fesik, Stephen W. and Rosenberg, Saul H. and Elmore, Steven W.}, + number = {21}, + pages = {6902--6915}, + volume = {51}, + doi = {10.1021/jm800669s}, + issn = {00222623} +} + +@article{Nikolovska-Coleska2004DiscoveryDatabase, + title = {{Discovery of Embelin as a Cell-Permeable, Small-Molecular Weight Inhibitor of XIAP through Structure-Based Computational Screening of a Traditional Herbal Medicine Three-Dimensional Structure Database}}, + year = {2004}, + journal = {Journal of Medicinal Chemistry}, + author = {Nikolovska-Coleska, Zaneta and Xu, Liang and Hu, Zengjian and Tomita, York and Li, Peng and Roller, Peter P. and Wang, Renxiao and Fang, Xueliang and Guo, Ribo and Zhang, Manchao and Lippman, Marc E. and Yang, Dajun and Wang, Shaomeng}, + number = {10}, + pages = {2430--2440}, + volume = {47}, + doi = {10.1021/jm030420+}, + issn = {00222623}, + pmid = {15115387} +} + +@article{Hu2012DiscoveryBioassays, + title = {{Discovery of inhibitors to block interactions of HIV-1 integrase with human LEDGF/p75 via structure-based virtual screening and bioassays}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Hu, Guoping and Li, Xi and Zhang, Xuan and Li, Yaozong and Ma, Lei and Yang, Liu Meng and Liu, Guixia and Li, Weihua and Huang, Jin and Shen, Xu and Hu, Lihong and Zheng, Yong Tang and Tang, Yun}, + number = {22}, + pages = {10108--10117}, + volume = {55}, + doi = {10.1021/jm301226a}, + issn = {00222623} +} + +@article{Miyazaki2012DiscoveryRelationships, + title = {{Discovery of novel dihydroimidazothiazole derivatives as p53-MDM2 protein-protein interaction inhibitors: Synthesis, biological evaluation and structure-activity relationships}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Miyazaki, Masaki and Kawato, Haruko and Naito, Hiroyuki and Ikeda, Masahiro and Miyazaki, Masaya and Kitagawa, Mayumi and Seki, Takahiko and Fukutake, Setsuko and Aonuma, Masashi and Soga, Tsunehiko}, + number = {20}, + pages = {6338--6342}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2012.08.086}, + doi = {10.1016/j.bmcl.2012.08.086}, + issn = {0960894X}, + keywords = {Dihydroimidazothiazole, MDM2, Protein-protein interaction inhibitor, p53} +} + +@article{Sanchez2013DiscoveryInteractions, + title = {{Discovery of novel inhibitors of LEDGF/p75-IN protein-protein interactions}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Sanchez, Tino Wilson and Debnath, Bikash and Christ, Frauke and Otake, Hiroyuki and Debyser, Zeger and Neamati, Nouri}, + number = {4}, + pages = {957--963}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.12.012}, + doi = {10.1016/j.bmc.2012.12.012}, + issn = {09680896}, + keywords = {Antiviral, HIV, Hydrazines, Integrase, LEDGF/p75, N-Acylhydrazones} +} + +@article{Odolczyk2013DiscoveryDomain, + title = {{Discovery of novel potent {$\Delta$}F508-CFTR correctors that target the nucleotide binding domain}}, + year = {2013}, + journal = {EMBO Molecular Medicine}, + author = {Odolczyk, Norbert and Fritsch, Janine and Norez, Caroline and Servel, Nathalie and Da Cunha, Melanie Faria and Bitam, Sara and Kupniewska, Anna and Wiszniewski, Ludovic and Colas, Julien and Tarnowski, Krzysztof and Tondelier, Danielle and Roldan, Ariel and Saussereau, Emilie L. and Melin-Heschel, Patricia and Wieczorek, Grzegorz and Lukacs, Gergely L. and Dadlez, Michal and Faure, Grazyna and Herrmann, Harald and Ollero, Mario and Becq, Frédéric and Zielenkiewicz, Piotr and Edelman, Aleksander}, + number = {10}, + pages = {1484--1501}, + volume = {5}, + doi = {10.1002/emmm.201302699}, + issn = {17574676}, + keywords = {CFTR, Chloride channel, Cystic fibrosis, Drug discovery, {$\Delta$}F508-CFTR correctors} +} + +@article{Zhang2014DiscoveryDevelopment, + title = {{Discovery of potent and orally active p53-MDM2 inhibitors RO5353 and RO2468 for potential clinical development}}, + year = {2014}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Zhang, Zhuming and Chu, Xin Jie and Liu, Jin Jun and Ding, Qingjie and Zhang, Jing and Bartkovitz, David and Jiang, Nan and Karnachi, Prabha and So, Sung Sau and Tovar, Christian and Filipovic, Zoran M. and Higgins, Brian and Glenn, Kelli and Packman, Kathryn and Vassilev, Lyubomir and Graves, Bradford}, + number = {2}, + pages = {124--127}, + volume = {5}, + doi = {10.1021/ml400359z}, + issn = {19485875}, + keywords = {MDM2, apoptosis, cancer, p53, small molecule, wild-type} +} + +@article{Zhang2014DiscoveryDevelopmentb, + title = {{Discovery of potent and orally active p53-MDM2 inhibitors RO5353 and RO2468 for potential clinical development}}, + year = {2014}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Zhang, Zhuming and Chu, Xin Jie and Liu, Jin Jun and Ding, Qingjie and Zhang, Jing and Bartkovitz, David and Jiang, Nan and Karnachi, Prabha and So, Sung Sau and Tovar, Christian and Filipovic, Zoran M. and Higgins, Brian and Glenn, Kelli and Packman, Kathryn and Vassilev, Lyubomir and Graves, Bradford}, + number = {2}, + pages = {124--127}, + volume = {5}, + doi = {10.1021/ml400359z}, + issn = {19485875}, + keywords = {MDM2, apoptosis, cancer, p53, small molecule, wild-type} +} + +@article{Tanaka2013DiscoveryProteins, + title = {{Discovery of potent Mcl-1/Bcl-xL dual inhibitors by using a hybridization strategy based on structural analysis of target proteins}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Tanaka, Yuta and Aikawa, Katsuji and Nishida, Goushi and Homma, Misaki and Sogabe, Satoshi and Igaki, Shigeru and Hayano, Yumi and Sameshima, Tomoya and Miyahisa, Ikuo and Kawamoto, Tomohiro and Tawada, Michiko and Imai, Yumi and Inazuka, Masakazu and Cho, Nobuo and Imaeda, Yasuhiro and Ishikawa, Tomoyasu}, + number = {23}, + pages = {9635--9645}, + volume = {56}, + doi = {10.1021/jm401170c}, + issn = {00222623} +} + +@article{Patrone2013DiscoveryA, + title = {{Discovery of protein-protein interaction inhibitors of replication protein A}}, + year = {2013}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Patrone, James D. and Kennedy, J. Phillip and Frank, Andreas O. and Feldkamp, Michael D. and Vangamudi, Bhavatarini and Pelz, Nicholas F. and Rossanese, Olivia W. and Waterson, Alex G. and Chazin, Walter J. and Fesik, Stephen W.}, + number = {7}, + pages = {601--605}, + volume = {4}, + doi = {10.1021/ml400032y}, + issn = {19485875}, + keywords = {DNA damage, Replication protein A, fragment-based discovery} +} + +@article{Ding2013Discovery2013, + title = {{Discovery of RG7388, a Potent and Selective p53−MDM2 Inhibitor, JMedChem 2013}}, + year = {2013}, + author = {Ding, Qingjie and Zhang, Zhuming and Liu, Jin-jun and Jiang, Nan and Zhang, Jing and Ross, Tina M and Chu, Xin-jie and Bartkovitz, David and Podlaski, Frank and Janson, Cheryl and Tovar, Christian and Filipovic, Zoran M and Higgins, Brian and Glenn, Kelli and Packman, Kathryn and Vassilev, Lyubomir T and Graves, Bradford}, + pages = {5979--5983} +} + +@article{Uvebrant2007DiscoveryInhibitors, + title = {{Discovery of selective small-molecule CD80 inhibitors}}, + year = {2007}, + journal = {Journal of Biomolecular Screening}, + author = {Uvebrant, Kristina and Da Gra{\c{c}}a Thrige, Dorthe and Ros{\'{e}}n, Anna and {\AA}kesson, Mats and Berg, Helena and Walse, Björn and Bj{\"{o}}rk, Per}, + number = {4}, + pages = {464--472}, + volume = {12}, + doi = {10.1177/1087057107300464}, + issn = {10870571}, + keywords = {Costimulation, Drug discovery, Inhibitors, Protein-protein interaction, Screening assay} +} + +@article{Zhong2010DiscoveryAntagonists, + title = {{Discovery of tetrahydroisoquinoline (THIQ) derivatives as potent and orally bioavailable LFA-1/ICAM-1 antagonists}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Zhong, Min and Shen, Wang and Barr, Kenneth J. and Arbitrario, Jennifer P. and Arkin, Michelle R. and Bui, Minna and Chen, Teresa and Cunningham, Brian C. and Evanchik, Marc J. and Hanan, Emily J. and Hoch, Ute and Huen, Karen and Hyde, Jennifer and Kumer, Jeffery L. and Lac, Teresa and Lawrence, Chris E. and Martell, Jose R. and Oslob, Johan D. and Paulvannan, Kumar and Prabhu, Saileta and Silverman, Jeffrey A. and Wright, Jasmin and Yu, Chul H. and Zhu, Jiang and Flanagan, W. Mike}, + number = {17}, + pages = {5269--5273}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.06.145}, + issn = {0960894X}, + keywords = {Antagonist, Intercellular adhesion molecule-1 (ICAM-1), Leukocyte function-associated antigen-1 (LFA-1), Tetrahydroisoquinoline (THIQ) derivative} +} + +@article{Zhuang2012DiscoveryInteraction, + title = {{Discovery, synthesis, and biological evaluation of orally active pyrrolidone derivatives as novel inhibitors of p53-MDM2 protein-protein interaction}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Zhuang, Chunlin and Miao, Zhenyuan and Zhu, Lingjian and Dong, Guoqiang and Guo, Zizhao and Wang, Shengzheng and Zhang, Yongqiang and Wu, Yuelin and Yao, Jianzhong and Sheng, Chunquan and Zhang, Wannian}, + number = {22}, + pages = {9630--9642}, + volume = {55}, + doi = {10.1021/jm300969t}, + issn = {00222623} +} + +@article{Zhuang2012DiscoveryInteractionb, + title = {{Discovery, synthesis, and biological evaluation of orally active pyrrolidone derivatives as novel inhibitors of p53-MDM2 protein-protein interaction}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Zhuang, Chunlin and Miao, Zhenyuan and Zhu, Lingjian and Dong, Guoqiang and Guo, Zizhao and Wang, Shengzheng and Zhang, Yongqiang and Wu, Yuelin and Yao, Jianzhong and Sheng, Chunquan and Zhang, Wannian}, + number = {22}, + pages = {9630--9642}, + volume = {55}, + doi = {10.1021/jm300969t}, + issn = {00222623} +} + +@article{Florio2009DisruptionRodents, + title = {{Disruption of nNOS-PSD95 protein-protein interaction inhibits acute thermal hyperalgesia and chronic mechanical allodynia in rodents}}, + year = {2009}, + journal = {British Journal of Pharmacology}, + author = {Florio, S. K. and Loh, C. and Huang, S. M. and Iwamaye, A. E. and Kitto, K. F. and Fowler, K. W. and Treiberg, J. A. and Hayflick, J. S. and Walker, J. M. and Fairbanks, C. A. and Lai, Y.}, + number = {2}, + pages = {494--506}, + volume = {158}, + doi = {10.1111/j.1476-5381.2009.00300.x}, + issn = {00071188}, + keywords = {Glutamate, Hyperalgesia, Neuronal nitric oxide synthase, Neuropathic pain, Post-synaptic density protein 95} +} + +@article{VanMolle2012DissectingInterface, + title = {{Dissecting fragment-based lead discovery at the von hippel-lindau protein:Hypoxia inducible factor 1{$\alpha$} protein-protein interface}}, + year = {2012}, + journal = {Chemistry and Biology}, + author = {Van Molle, Inge and Thomann, Andreas and Buckley, Dennis L. and So, Ernest C. and Lang, Steffen and Crews, Craig M. and Ciulli, Alessio}, + number = {10}, + pages = {1300--1312}, + volume = {19}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.chembiol.2012.08.015}, + doi = {10.1016/j.chembiol.2012.08.015}, + issn = {10745521} +} + +@article{Ji2007DistributionDiscovery, + title = {{Distribution patterns of small-molecule ligands in the protein universe and implications for origin of life and drug discovery}}, + year = {2007}, + journal = {Genome Biology}, + author = {Ji, Hong Fang and Kong, De Xin and Shen, Liang and Chen, Ling Ling and Ma, Bin Guang and Zhang, Hong Yu}, + number = {8}, + pages = {1--13}, + volume = {8}, + doi = {10.1186/gb-2007-8-8-r176}, + issn = {14747596} +} + +@article{Nooren2003DiversityInteractions, + title = {{Diversity of protein-protein interactions}}, + year = {2003}, + journal = {EMBO Journal}, + author = {Nooren, Irene M.A. and Thornton, Janet M.}, + number = {14}, + pages = {3486--3492}, + volume = {22}, + doi = {10.1093/emboj/cdg359}, + issn = {02614189}, + pmid = {12853464}, + keywords = {Complexes, Protein structures, Protein-protein interactions, Transient interactions} +} + +@article{Ibbeson2014Diversity-orientedMitosis, + title = {{Diversity-oriented synthesis as a tool for identifying new modulators of mitosis}}, + year = {2014}, + journal = {Nature Communications}, + author = {Ibbeson, Brett M. and Laraia, Luca and Alza, Esther and O'Connor, Cornelius J. and Tan, Yaw Sing and Davies, Huw M.L. and Mckenzie, Grahame and Venkitaraman, Ashok R. and Spring, David R.}, + pages = {1--8}, + volume = {5}, + doi = {10.1038/ncomms4155}, + issn = {20411723} +} + +@article{Galloway2010Diversity-orientedMolecules, + title = {{Diversity-oriented synthesis as a tool for the discovery of novel biologically active small molecules}}, + year = {2010}, + journal = {Nature Communications}, + author = {Galloway, Warren R.J.D. and Isidro-Llobet, Albert and Spring, David R.}, + number = {6}, + pages = {1--13}, + volume = {1}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/ncomms1081}, + doi = {10.1038/ncomms1081}, + issn = {20411723}, + pmid = {20865796} +} + +@article{Marcaurelle2009Diversity-orientedBcl-2, + title = {{Diversity-oriented synthesis of a cytisine-inspired pyridone library leading to the discovery of novel inhibitors of Bcl-2}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Marcaurelle, Lisa A. and Johannes, Charles and Yohannes, Daniel and Tillotson, Bonnie P. and Mann, David}, + number = {9}, + pages = {2500--2503}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.03.037}, + issn = {0960894X}, + keywords = {Apoptosis, Diversity-oriented synthesis, Natural product, Protein-protein interaction, Pyridone, Solid-phase} +} + +@article{Kim2016Diversity-orientedInteraction, + title = {{Diversity-oriented synthetic strategy for developing a chemical modulator of protein-protein interaction}}, + year = {2016}, + journal = {Nature Communications}, + author = {Kim, Jonghoon and Jung, Jinjoo and Koo, Jaeyoung and Cho, Wansang and Lee, Won Seok and Kim, Chanwoo and Park, Wonwoo and Park, Seung Bum}, + doi = {10.1038/ncomms13196}, + issn = {20411723} +} + +@article{Douguet2006DockgroundInterfaces, + title = {{Dockground resource for studying protein-protein interfaces}}, + year = {2006}, + journal = {Bioinformatics}, + author = {Douguet, Dominique and Chen, Huei Chi and Tovchigrechko, Andrey and Vakser, Ilya A.}, + number = {21}, + pages = {2612--2618}, + volume = {22}, + doi = {10.1093/bioinformatics/btl447}, + issn = {13674803} +} + +@article{Teixeira2009DockingInhibitors, + title = {{Docking and 3D-QSAR studies of BMS-806 analogs as HIV-1 gp120 entry inhibitors}}, + year = {2009}, + journal = {European Journal of Medicinal Chemistry}, + author = {Teixeira, C. and Serradji, N. and Maurel, F. and Barbault, F.}, + number = {9}, + pages = {3524--3532}, + volume = {44}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2009.03.028}, + doi = {10.1016/j.ejmech.2009.03.028}, + issn = {02235234}, + keywords = {3D-QSAR, CoMFA, CoMSIA, Docking, gp120 inhibitors} +} + +@article{Sinha2010DockingInterfaces, + title = {{Docking by structural similarity at protein-protein interfaces}}, + year = {2010}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {Sinha, Rohita and Kundrotas, Petras J. and Vakser, Ilya A.}, + number = {15}, + pages = {3235--3241}, + volume = {78}, + doi = {10.1002/prot.22812}, + issn = {08873585}, + keywords = {Bioinformatics, Protein modeling, Protein recognition, Structure prediction} +} + +@article{Ballester2014DoesAffinity, + title = {{Does a more precise chemical description of protein-ligand complexes lead to more accurate prediction of binding affinity?}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Ballester, Pedro J. and Schreyer, Adrian and Blundell, Tom L.}, + number = {3}, + pages = {944--955}, + volume = {54}, + doi = {10.1021/ci500091r}, + issn = {15205142} +} + +@article{Wang2010DrugAnalysis, + title = {{Drug and Drug candidate building block analysis}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Wang, Junmei and Hou, Tingjun}, + number = {1}, + pages = {55--67}, + volume = {50}, + doi = {10.1021/ci900398f}, + issn = {15499596} +} + +@article{Li2014DrugInterface, + title = {{Drug design targeting protein-protein interactions (PPIs) using multiple ligand simultaneous docking (MLSD) and drug repositioning: Discovery of raloxifene and bazedoxifene as novel inhibitors of IL-6/GP130 interface}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Li, Huameng and Xiao, Hui and Lin, Li and Jou, David and Kumari, Vandana and Lin, Jiayuh and Li, Chenglong}, + number = {3}, + pages = {632--641}, + volume = {57}, + doi = {10.1021/jm401144z}, + issn = {00222623} +} + +@article{Heinis2014DrugMacrocycles, + title = {{Drug discovery: Tools and rules for macrocycles}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Heinis, Christian}, + number = {9}, + pages = {696--698}, + volume = {10}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1605}, + doi = {10.1038/nchembio.1605}, + issn = {15524469} +} + +@article{Romano2010DrugBinding, + title = {{Drug resistance against HCV NS3/4A inhibitors is defined by the balance of substrate recognition versus inhibitor binding}}, + year = {2010}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Romano, Keith P. and Ali, Akbar and Royer, William E. and Schiffer, Celia A.}, + number = {49}, + month = {12}, + pages = {20986--20991}, + volume = {107}, + doi = {10.1073/pnas.1006370107}, + issn = {00278424}, + keywords = {Drug design, Hepatitis C, Substrate envelope} +} + +@article{Campillos2008DrugSimilarity, + title = {{Drug target identification using side-effect similarity}}, + year = {2008}, + journal = {Science}, + author = {Campillos, Monica and Kuhn, Michael and Gavin, Anne Claude and Jensen, Lars Juhl and Bork, Peer}, + number = {5886}, + pages = {263--266}, + volume = {321}, + doi = {10.1126/science.1158140}, + issn = {00368075} +} + +@article{Campillos2008DrugSimilarityb, + title = {{Drug target identification using side-effect similarity}}, + year = {2008}, + journal = {Science}, + author = {Campillos, Monica and Kuhn, Michael and Gavin, Anne Claude and Jensen, Lars Juhl and Bork, Peer}, + number = {5886}, + pages = {263--266}, + volume = {321}, + doi = {10.1126/science.1158140}, + issn = {00368075} +} + +@article{Chuprina2010Drug-Suppliers, + title = {{Drug- and lead-likeness, target class, and molecular diversity analysis of 7.9 million commercially available organic compounds provided by 29 suppliers}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Chuprina, Alexander and Lukin, Oleg and Demoiseaux, Robert and Buzko, Alexander and Shivanyuk, Alexander}, + number = {4}, + pages = {470--479}, + volume = {50}, + doi = {10.1021/ci900464s}, + issn = {15499596} +} + +@article{Chuprina2010Drug-Suppliersb, + title = {{Drug- and lead-likeness, target class, and molecular diversity analysis of 7.9 million commercially available organic compounds provided by 29 suppliers}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Chuprina, Alexander and Lukin, Oleg and Demoiseaux, Robert and Buzko, Alexander and Shivanyuk, Alexander}, + number = {4}, + pages = {470--479}, + volume = {50}, + doi = {10.1021/ci900464s}, + issn = {15499596} +} + +@article{Fry2008Drug-LikeMimicry, + title = {{Drug-Like Inhibitors of Protein-Protein Interactions: A Structural Examination of Effective Protein Mimicry}}, + year = {2008}, + journal = {Current Protein {\&} Peptide Science}, + author = {Fry, D.}, + number = {3}, + pages = {240--247}, + volume = {9}, + doi = {10.2174/138920308784533989}, + issn = {13892037} +} + +@article{Villoutreix2014Drug-likeBiology, + title = {{Drug-like protein-protein interaction modulators: Challenges and opportunities for drug discovery and chemical biology}}, + year = {2014}, + journal = {Molecular Informatics}, + author = {Villoutreix, Bruno O. and Kuenemann, Melaine A. and Poyet, Jean Luc and Bruzzoni-Giovanelli, Heriberto and Labb{\'{e}}, Céline and Lagorce, David and Sperandio, Olivier and Miteva, Maria A.}, + number = {6-7}, + pages = {414--437}, + volume = {33}, + doi = {10.1002/minf.201400040}, + issn = {18681751}, + keywords = {Drug discovery, Drug-like molecules, In silico methods, PPI network, Protein-protein interaction modulators} +} + +@article{Yildirim2007Drug-targetNetwork, + title = {{Drug-target network}}, + year = {2007}, + journal = {Nature Biotechnology}, + author = {Yildirim, Muhammed A. and Goh, Kwang Il and Cusick, Michael E. and Barab{\'{a}}si, Albert László and Vidal, Marc}, + number = {10}, + pages = {1119--1126}, + volume = {25}, + doi = {10.1038/nbt1338}, + issn = {10870156} +} + +@article{Roider2014Drug2Gene:Network, + title = {{Drug2Gene: An exhaustive resource to explore effectively the drug-target relation network}}, + year = {2014}, + journal = {BMC Bioinformatics}, + author = {Roider, Helge G. and Pavlova, Nadia and Kirov, Ivaylo and Slavov, Stoyan and Slavov, Todor and Uzunov, Zlatyo and Weiss, Bertram}, + number = {1}, + volume = {15}, + doi = {10.1186/1471-2105-15-68}, + issn = {14712105}, + keywords = {Bioactivity, Biological effect, Compound-protein relations, Drug development, Drug discovery, Drug repositioning, Drug-target relations, Knowledge base, Tool compounds} +} + +@article{Wishart2018DrugBank2018, + title = {{DrugBank 5.0: A major update to the DrugBank database for 2018}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Wishart, David S. and Feunang, Yannick D. and Guo, An C. and Lo, Elvis J. and Marcu, Ana and Grant, Jason R. and Sajed, Tanvir and Johnson, Daniel and Li, Carin and Sayeeda, Zinat and Assempour, Nazanin and Iynkkaran, Ithayavani and Liu, Yifeng and MacIejewski, Adam and Gale, Nicola and Wilson, Alex and Chin, Lucy and Cummings, Ryan and Le, DIana and Pon, Allison and Knox, Craig and Wilson, Michael}, + number = {D1}, + pages = {D1074-D1082}, + volume = {46}, + doi = {10.1093/nar/gkx1037}, + issn = {13624962} +} + +@article{Vidler2012DruggabilitySites, + title = {{Druggability analysis and structural classification of bromodomain acetyl-lysine binding sites}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Vidler, Lewis R. and Brown, Nathan and Knapp, Stefan and Hoelder, Swen}, + number = {17}, + pages = {7346--7359}, + volume = {55}, + doi = {10.1021/jm300346w}, + issn = {00222623} +} + +@article{Vidler2012DruggabilitySitesb, + title = {{Druggability analysis and structural classification of bromodomain acetyl-lysine binding sites}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Vidler, Lewis R. and Brown, Nathan and Knapp, Stefan and Hoelder, Swen}, + number = {17}, + pages = {7346--7359}, + volume = {55}, + doi = {10.1021/jm300346w}, + issn = {00222623} +} + +@article{Wanner2011DruggabilityInterfaces, + title = {{Druggability assessment of protein-Protein interfaces}}, + year = {2011}, + journal = {Future Medicinal Chemistry}, + author = {Wanner, Jutta and Fry, David C. and Peng, Zhengwei and Roberts, John}, + number = {16}, + pages = {2021--2038}, + volume = {3}, + doi = {10.4155/fmc.11.156}, + issn = {17568919} +} + +@article{Hajduk2005DruggabilityData, + title = {{Druggability indices for protein targets derived from NMr-based screening data}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Hajduk, Philip J. and Huth, Jeffrey R. and Fesik, Stephen W.}, + number = {7}, + pages = {2518--2525}, + volume = {48}, + doi = {10.1021/jm049131r}, + issn = {00222623} +} + +@misc{Perot2010DruggableDiscovery, + title = {{Druggable pockets and binding site centric chemical space: A paradigm shift in drug discovery}}, + year = {2010}, + booktitle = {Drug Discovery Today}, + author = {P{\'{e}}rot, Stéphanie and Sperandio, Olivier and Miteva, Maria A. and Camproux, Anne Claude and Villoutreix, Bruno O.}, + number = {15-16}, + pages = {656--667}, + volume = {15}, + isbn = {1359-6446}, + doi = {10.1016/j.drudis.2010.05.015}, + issn = {13596446}, + pmid = {20685398} +} + +@article{Chene2006DrugsInteractions., + title = {{Drugs targeting protein-protein interactions.}}, + year = {2006}, + journal = {ChemMedChem}, + author = {Ch{\`{e}}ne, Patrick}, + number = {4}, + pages = {400--411}, + volume = {1}, + doi = {10.1002/cmdc.200600004}, + issn = {18607179} +} + +@article{Kruger2010DrugScorePPIInteractions, + title = {{DrugScorePPI webserver: Fast and accurate in silico alanine scanning for scoring protein-protein interactions}}, + year = {2010}, + journal = {Nucleic Acids Research}, + author = {Kr{\"{u}}ger, Dennis M. and Gohlke, Holger}, + number = {SUPPL. 2}, + pages = {1--7}, + volume = {38}, + isbn = {4921181136}, + doi = {10.1093/nar/gkq471}, + issn = {03051048} +} + +@article{Pihan2012E-Drug3D:Design, + title = {{e-Drug3D: 3D structure collections dedicated to drug repurposing and fragment-based drug design}}, + year = {2012}, + journal = {Bioinformatics}, + author = {Pihan, E. and Colliandre, L. and Guichou, J. F. and Douguet, D.}, + month = {6}, + pages = {1540--1}, + volume = {28}, + doi = {10.1093/bioinformatics/bts186}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)} +} + +@article{Schneider2003EditedBy, + title = {{Edited by Methods and Principles in Medicinal Chemistry Edited by}}, + year = {2003}, + author = {Schneider, G}, + isbn = {3527305211} +} + +@article{Sperandio2012Editorial:Interactions, + title = {{Editorial: [Hot Topics: Toward the Design of Drugs on Protein-Protein Interactions]}}, + year = {2012}, + journal = {Current Pharmaceutical Design}, + author = {Sperandio, Olivier}, + number = {30}, + pages = {4585--4585}, + volume = {18}, + doi = {10.2174/138161212802651661}, + issn = {13816128} +} + +@article{Stein2012EffectCholesterol, + title = {{Effect of a monoclonal antibody to PCSK9 on LDL cholesterol}}, + year = {2012}, + journal = {Obstetrical and Gynecological Survey}, + author = {Stein, Evan A. and Mellis, Scott and Yancopoulos, George D. and Stahl, Neil and Logan, Douglas and Smith, William B. and Lisbon, Eleanor and Gutierrez, Maria and Webb, Cheryle and Wu, Richard and Du, Yunling and Kranz, Therese and Gasparino, Evelyn and Swergold, Gary D.}, + number = {7}, + pages = {413--414}, + volume = {67}, + doi = {10.1097/01.ogx.0000418576.52268.43}, + issn = {00297828} +} + +@article{Slimani2012EffectPatients, + title = {{Effect of mutations in LDLR and PCSK9 genes on phenotypic variability in Tunisian familial hypercholesterolemia patients}}, + year = {2012}, + journal = {Atherosclerosis}, + author = {Slimani, Afef and Jelassi, Awatef and Jguirim, Imen and Najah, Mohamed and Rebhi, Lamia and Omezzine, Asma and Maatouk, Faouzi and Hamda, Khaldoun Ben and Kacem, Maha and Rab{\`{e}}s, Jean Pierre and Abifadel, Marianne and Boileau, Catherine and Rouis, Mustapha and Slimane, Mohamed Naceur and Varret, Mathilde}, + number = {1}, + pages = {158--166}, + volume = {222}, + publisher = {Elsevier Ireland Ltd}, + url = {http://dx.doi.org/10.1016/j.atherosclerosis.2012.02.018}, + doi = {10.1016/j.atherosclerosis.2012.02.018}, + issn = {00219150}, + keywords = {Familial hypercholesterolemia, LDLR gene, PCSK9 gene, Phenotypic variability} +} + +@article{Margolles-Clark2010EffectiveDerivative, + title = {{Effective and specific inhibition of the CD40-CD154 costimulatory interaction by a naphthalenesulphonic acid derivative}}, + year = {2010}, + journal = {Chemical Biology and Drug Design}, + author = {Margolles-Clark, Emilio and Kenyon, Norma S. and Ricordi, Camillo and Buchwald, Peter}, + number = {4}, + pages = {305--313}, + volume = {76}, + doi = {10.1111/j.1747-0285.2010.01014.x}, + issn = {17470277}, + keywords = {BAFF, CD40L, OX40, THP-1 cells, costimulatory blockade, immune suppression, protein-protein interaction} +} + +@article{Xue2013EffectiveInhibitors, + title = {{Effective screening strategy using ensembled pharmacophore models combined with cascade docking: Application to p53-MDM2 interaction inhibitors}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Xue, Xin and Wei, Jin Lian and Xu, Li Li and Xi, Mei Yang and Xu, Xiao Li and Liu, Fang and Guo, Xiao Ke and Wang, Lei and Zhang, Xiao Jin and Zhang, Ming Ye and Lu, Meng Chen and Sun, Hao Peng and You, Qi Dong}, + number = {10}, + pages = {2715--2729}, + volume = {53}, + doi = {10.1021/ci400348f}, + issn = {15499596} +} + +@article{Liu2009EfficientDerivatives, + title = {{Efficient and diverse synthesis of indole derivatives}}, + year = {2009}, + journal = {Journal of Organic Chemistry}, + author = {Liu, Haixia and D{\"{o}}mling, Alexander}, + number = {17}, + pages = {6895--6898}, + volume = {74}, + doi = {10.1021/jo900986z}, + issn = {00223263} +} + +@article{Wassermann2013EfficientChemotypes, + title = {{Efficient search of chemical space: Navigating from fragments to structurally diverse chemotypes}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Wassermann, Anne Mai and Kutchukian, Peter S. and Lounkine, Eugen and Luethi, Tiffany and Hamon, Jacques and Bocker, Michael T. and Malik, Hasnain A. and Cowan-Jacob, Sandra W. and Glick, Meir}, + number = {21}, + pages = {8879--8891}, + volume = {56}, + doi = {10.1021/jm401309q}, + issn = {00222623} +} + +@article{Wassermann2013EfficientChemotypesb, + title = {{Efficient search of chemical space: Navigating from fragments to structurally diverse chemotypes}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Wassermann, Anne Mai and Kutchukian, Peter S. and Lounkine, Eugen and Luethi, Tiffany and Hamon, Jacques and Bocker, Michael T. and Malik, Hasnain A. and Cowan-Jacob, Sandra W. and Glick, Meir}, + number = {21}, + pages = {8879--8891}, + volume = {56}, + doi = {10.1021/jm401309q}, + issn = {00222623} +} + +@article{Pagliaro2004EmergingDevelopment, + title = {{Emerging classes of protein-protein interaction inhibitors and new tools for their development}}, + year = {2004}, + journal = {Current Opinion in Chemical Biology}, + author = {Pagliaro, Len and Felding, Jakob and Audouze, Karine and Nielsen, Søren Jensby and Terry, Robert B. and Krog-Jensen, Christian and Butcher, Steven}, + number = {4}, + pages = {442--449}, + volume = {8}, + doi = {10.1016/j.cbpa.2004.06.006}, + issn = {13675931}, + keywords = {MoA, PCA, PI3K, PIP3, SMPPII, iNOS, inducible nitric oxide synthase, mode of action, phosphatidylinositol 3 kinase, phosphatidylinositol 3,4,5-triphosphate, principal component analysis, small molecule protein-protein interaction inhibit} +} + +@article{Simonis2009EmpiricallyNetwork, + title = {{Empirically controlled mapping of the Caenorhabditis elegans protein-protein interactome network}}, + year = {2009}, + journal = {Nature Methods}, + author = {Simonis, Nicolas and Rual, Jean François and Carvunis, Anne Ruxandra and Tasan, Murat and Lemmens, Irma and Hirozane-Kishikawa, Tomoko and Hao, Tong and Sahalie, Julie M. and Venkatesan, Kavitha and Gebreab, Fana and Cevik, Sebiha and Klitgord, Niels and Fan, Changyu and Braun, Pascal and Li, Ning and Ayivi-Guedehoussou, Nono and Dann, Elizabeth and Bertin, Nicolas and Szeto, David and Dricot, Amélie and Yildirim, Muhammed A. and Lin, Chenwei and de Smet, Anne Sophie and Kao, Huey Ling and Simon, Christophe and Smolyar, Alex and Ahn, Jin Sook and Tewari, Muneesh and Boxem, Mike and Milstein, Stuart and Yu, Haiyuan and Dreze, Matija and Vandenhaute, Jean and Gunsalus, Kristin C. and Cusick, Michael E. and Hill, David E. and Tavernier, Jan and Roth, Frederick P. and Vidal, Marc}, + number = {1}, + pages = {47--54}, + volume = {6}, + doi = {10.1038/nmeth.1279}, + issn = {15491676}, + pmid = {19123269} +} + +@article{Koes2012EnablingAntagonists, + title = {{Enabling large-scale design, synthesis and validation of small molecule protein-protein antagonists}}, + year = {2012}, + journal = {PLoS ONE}, + author = {Koes, David and Khoury, Kareem and Huang, Yijun and Wang, Wei and Bista, Michal and Popowicz, Grzegorz M. and Wolf, Siglinde and Holak, Tad A. and D{\"{o}}mling, Alexander and Camacho, Carlos J.}, + number = {3}, + volume = {7}, + doi = {10.1371/journal.pone.0032839}, + issn = {19326203} +} + +@article{Marugan2006EnantiomericallyAntagonists, + title = {{Enantiomerically pure 1,4-benzodiazepine-2,5-diones as Hdm2 antagonists}}, + year = {2006}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Marugan, Juan Jose and Leonard, Kristi and Raboisson, Pierre and Gushue, Joan M. and Calvo, Raul and Koblish, Holly K. and Lattanze, Jennifer and Zhao, Shuyuan and Cummings, Maxwell D. and Player, Mark R. and Schubert, Carsten and Maroney, Anna C. and Lu, Tianbao}, + number = {12}, + pages = {3115--3120}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.03.067}, + issn = {0960894X}, + keywords = {Hdm2, Protein-protein interaction, p53} +} + +@article{Desaphy2013EncodingGraphs, + title = {{Encoding protein-ligand interaction patterns in fingerprints and graphs}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Desaphy, Jérémy and Raimbaud, Eric and Ducrot, Pierre and Rognan, Didier}, + number = {3}, + pages = {623--637}, + volume = {53}, + doi = {10.1021/ci300566n}, + issn = {15499596} +} + +@article{Parks2006EnhancedDesign, + title = {{Enhanced pharmacokinetic properties of 1,4-benzodiazepine-2,5-dione antagonists of the HDM2-p53 protein-protein interaction through structure-based drug design}}, + year = {2006}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Parks, Daniel J. and LaFrance, Louis V. and Calvo, Raul R. and Milkiewicz, Karen L. and Jos{\'{e}} Marug{\'{a}}n, Juan and Raboisson, Pierre and Schubert, Carsten and Koblish, Holly K. and Zhao, Shuyuan and Franks, Carol F. and Lattanze, Jennifer and Carver, Theodore E. and Cummings, Maxwell D. and Maguire, Diane and Grasberger, Bruce L. and Maroney, Anna C. and Lu, Tianbao}, + number = {12}, + pages = {3310--3314}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.03.055}, + issn = {0960894X}, + keywords = {HDM2, HDM2 antagonist, Pharmacokinetic, Protein-protein interaction, Structure-based drug design, p53} +} + +@article{Barakat2010Ensemble-basedInteractions, + title = {{Ensemble-based virtual screening reveals dual-inhibitors for the p53-MDM2/MDMX interactions}}, + year = {2010}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Barakat, Khaled and Mane, Jonathan and Friesen, Douglas and Tuszynski, Jack}, + number = {6}, + pages = {555--568}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.12.003}, + issn = {10933263}, + keywords = {Clustering, DrugBank, Dual-inhibitor, MDM2, MDMX, NCI database, Virtual screening, p53} +} + +@article{Ashton2014Erratum:10.1021/jm4016735, + title = {{Erratum: Small molecule disruptors of the glucokinase-glucokinase regulatory protein interaction: 1. Discovery of a novel tool compound for in vivo proof-of-concept (Journal of Medicinal Chemistry (2014) 57 (309-324) DOI: 10.1021/jm4016735)}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Ashton, Kate S. and Andrews, Kristin L. and Bryan, Marian C. and Chen, Jie and Chen, Kui and Chen, Michelle and Chmait, Samer and Croghan, Michael and Cupples, Rod and Fotsch, Christopher and Helmering, Joan and Jordan, Steve R. and Kurzeja, Robert J.M. and Michelsen, Klaus and Pennington, Lewis D. and Poon, Steve F. and Sivits, Glenn and Van, Gwyneth and Vonderfecht, Steve L. and Wahl, Robert C. and Zhang, Jiandong and Lloyd, David J. and Hale, Clarence and St. Jean, David J.}, + number = {6}, + pages = {2820}, + volume = {57}, + doi = {10.1021/jm500248d}, + issn = {15204804} +} + +@article{Lovering2009EscapeSuccess, + title = {{Escape from flatland: Increasing saturation as an approach to improving clinical success}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Lovering, Frank and Bikker, Jack and Humblet, Christine}, + number = {21}, + pages = {6752--6756}, + volume = {52}, + doi = {10.1021/jm901241e}, + issn = {00222623}, + pmid = {19827778} +} + +@article{Taboureau2012EstablishedEra, + title = {{Established and emerging trends in computational drug discovery in the structural genomics era}}, + year = {2012}, + journal = {Chemistry and Biology}, + author = {Taboureau, Olivier and Baell, Jonathan B. and Fern{\'{a}}ndez-Recio, Juan and Villoutreix, Bruno O.}, + number = {1}, + pages = {29--41}, + volume = {19}, + doi = {10.1016/j.chembiol.2011.12.007}, + issn = {10745521} +} + +@article{Martin2015EuclideanRavens, + title = {{Euclidean chemical spaces from molecular fingerprints: Hamming distance and Hempel's ravens}}, + year = {2015}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Martin, Eric and Cao, Eddie}, + number = {5}, + pages = {387--395}, + volume = {29}, + doi = {10.1007/s10822-014-9819-y}, + issn = {15734951}, + keywords = {Chemical fingerprint, Chemical space, Hamming similarity, Multi-dimensional scaling, Principal components analysis, Tanimoto similarity} +} + +@article{Plach2017EvolutionaryAdd-ons, + title = {{Evolutionary diversification of protein–protein interactions by interface add-ons}}, + year = {2017}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Plach, Maximilian G. and Semmelmann, Florian and Busch, Florian and Busch, Markus and Heizinger, Leonhard and Wysocki, Vicki H. and Merkl, Rainer and Sterner, Reinhard}, + doi = {10.1073/pnas.1707335114}, + issn = {10916490}, + keywords = {Glutamine amidotransferases, Interface add-on, Protein evolution, Protein interfaces, Protein–protein interactions} +} + +@article{Fraser2002EvolutionaryNetwork, + title = {{Evolutionary rate in the protein interaction network}}, + year = {2002}, + journal = {Science}, + author = {Fraser, Hunter B. and Hirsh, Aaron E. and Steinmetz, Lars M. and Scharfe, Curt and Feldman, Marcus W.}, + doi = {10.1126/science.1068696}, + issn = {00368075} +} + +@article{Lopez-Vallejo2012ExpandingLibraries, + title = {{Expanding the medicinally relevant chemical space with compound libraries}}, + year = {2012}, + journal = {Drug Discovery Today}, + author = {L{\'{o}}pez-Vallejo, Fabian and Giulianotti, Marc A. and Houghten, Richard A. and Medina-Franco, José L.}, + number = {13-14}, + pages = {718--726}, + volume = {17}, + doi = {10.1016/j.drudis.2012.04.001}, + issn = {13596446} +} + +@article{Bauer2010ExpandingPerspective, + title = {{Expanding the range of 'druggable' targets with natural product-based libraries: an academic perspective}}, + year = {2010}, + journal = {Current Opinion in Chemical Biology}, + author = {Bauer, Renato A. and Wurst, Jacqueline M. and Tan, Derek S.}, + number = {3}, + pages = {308--314}, + volume = {14}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.cbpa.2010.02.001}, + doi = {10.1016/j.cbpa.2010.02.001}, + issn = {13675931} +} + +@article{PageExpandingReferences, + title = {{Expanding the Range of Ê»Druggableʼ Targets with Natural Product-based Libraries : An Academic Perspective Supplementary Information Principal component analysis protocol and results PubChem substructure search protocol and results Supplementary references}}, + author = {Page, S and Bauer, Renato A and Wurst, Jacqueline M and Tan, Derek S}, + pages = {2--8} +} + +@article{Carbon2017ExpansionConsortium, + title = {{Expansion of the gene ontology knowledgebase and resources: The gene ontology consortium}}, + year = {2017}, + journal = {Nucleic Acids Research}, + author = {Carbon, S. and Dietze, H. and Lewis, S. E. and Mungall, C. J. and Munoz-Torres, M. C. and Basu, S. and Chisholm, R. L. and Dodson, R. J. and Fey, P. and Thomas, Paul D. and Mi, H. and Muruganujan, A. and Huang, X. and Poudel, S. and Hu, J. C. and Aleksander, S. A. and McIntosh, B. K. and Renfro, D. P. and Siegele, D. A. and Antonazzo, G. and Attrill, H. and Brown, N. H. and Marygold, S. J. and Mc-Quilton, P. and Ponting, L. and Millburn, G. H. and Rey, A. J. and Stefancsik, R. and Tweedie, S. and Falls, K. and Schroeder, A. J. and Courtot, M. and Osumi-Sutherland, D. and Parkinson, H. and Roncaglia, P. and Lovering, R. C. and Foulger, R. E. and Huntley, R. P. and Denny, P. and Campbell, N. H. and Kramarz, B. and Patel, S. and Buxton, J. L. and Umrao, Z. and Deng, A. T. and Alrohaif, H. and Mitchell, K. and Ratnaraj, F. and Omer, W. and Rodr{\'{i}}guez-L{\'{o}}pez, M. and C. Chibucos, M. and Giglio, M. and Nadendla, S. and Duesbury, M. J. and Koch, M. and Meldal, B. H.M. and Melidoni, A. and Porras, P. and Orchard, S. and Shrivastava, A. and Chang, H. Y. and Finn, R. D. and Fraser, M. and Mitchell, A. L. and Nuka, G. and Potter, S. and Rawlings, N. D. and Richardson, L. and Sangrador-Vegas, A. and Young, S. Y. and Blake, J. A. and Christie, K. R. and Dolan, M. E. and Drabkin, H. J. and Hill, D. P. and Ni, L. and Sitnikov, D. and Harris, M. A. and Hayles, J. and Oliver, S. G. and Rutherford, K. and Wood, V. and Bahler, J. and Lock, A. and De Pons, J. and Dwinell, M. and Shimoyama, M. and Laulederkind, S. and Hayman, G. T. and Tutaj, M. and Wang, S. J. and D'Eustachio, P. and Matthews, L. and Balhoff, J. P. and Balakrishnan, R. and Binkley, G. and Cherry, J. M. and Costanzo, M. C. and Engel, S. R. and Miyasato, S. R. and Nash, R. S. and Simison, M. and Skrzypek, M. S. and Weng, S. and Wong, E. D. and Feuermann, M. and Gaudet, P. and Berardini, T. Z. and Li, D. and Muller, B. and Reiser, L. and Huala, E. and Argasinska, J. and Arighi, C. and Auchincloss, A. and Axelsen, K. and Argoud-Puy, G. and Bateman, A. and Bely, B. and Blatter, M. C. and Bonilla, C. and Bougueleret, L. and Boutet, E. and Breuza, L. and Bridge, A. and Britto, R. and Hye- A-Bye, H. and Casals, C. and Cibrian-Uhalte, E. and Coudert, E. and Cusin, I. and Duek-Roggli, P. and Estreicher, A. and Famiglietti, L. and Gane, P. and Garmiri, P. and Georghiou, G. and Gos, A. and Gruaz-Gumowski, N. and Hatton-Ellis, E. and Hinz, U. and Holmes, A. and Hulo, C. and Jungo, F. and Keller, G. and Laiho, K. and Lemercier, P. and Lieberherr, D. and Mac- Dougall, A. and Magrane, M. and Martin, M. J. and Masson, P. and Natale, D. A. and O'Donovan, C. and Pedruzzi, I. and Pichler, K. and Poggioli, D. and Poux, S. and Rivoire, C. and Roechert, B. and Sawford, T. and Schneider, M. and Speretta, E. and Shypitsyna, A. and Stutz, A. and Sundaram, S. and Tognolli, M. and Wu, C. and Xenarios, I. and Yeh, L. S. and Chan, J. and Gao, S. and Howe, K. and Kishore, R. and Lee, R. and Li, Y. and Lomax, J. and Muller, H. M. and Raciti, D. and Van Auken, K. and Berriman, M. and Stein, Paul Kersey, L. and W. Sternberg, P. and Howe, D. and Westerfield, M.}, + number = {D1}, + month = {1}, + pages = {D331-D338}, + volume = {45}, + publisher = {Oxford University Press}, + doi = {10.1093/nar/gkw1108}, + issn = {13624962}, + pmid = {27899567} +} + +@article{Lipinski2001ExperimentalSettings., + title = {{Experimental and computational approaches to estimate solubility and permeability in drug discovery and development settings.}}, + year = {2001}, + journal = {Adv Drug Deliv Rev}, + author = {Lipinski, C. A. and Lombardo, F. and Dominy, B. W. and Feeney, P. J.}, + month = {4}, + pages = {3--26}, + volume = {46}, + language = {English} +} + +@article{Raffa2005ExperimentalInteractions, + title = {{Experimental approaches to determine the thermodynamics of protein-ligand interactions}}, + year = {2005}, + journal = {Protein-Ligand Interactions: From Molecular Recognition to Drug Design}, + author = {Raffa, Robert B.}, + pages = {51--71}, + isbn = {9783527601813}, + doi = {10.1002/3527601813.ch3}, + keywords = {Calorimetric determination, Caveats, Drug design, Equilibrium constant, Experimental approaches, Parameters, Protein-ligand interactions, Thermodynamics, Van't Hoff determination} +} + +@article{Xie2010ExploitingScreening, + title = {{Exploiting PubChem for virtual screening}}, + year = {2010}, + journal = {Expert Opinion on Drug Discovery}, + author = {Xie, Xiang Qun Sean}, + number = {12}, + pages = {1205--1220}, + volume = {5}, + doi = {10.1517/17460441.2010.524924}, + issn = {17460441}, + keywords = {PubChem, cheminformatics, data-mining, polypharmacology, toxicity, virtual screening} +} + +@article{Leverson2015ExploitingTherapy, + title = {{Exploiting selective BCL-2 family inhibitors to dissect cell survival dependencies and define improved strategies for cancer therapy}}, + year = {2015}, + journal = {Science Translational Medicine}, + author = {Leverson, Joel D. and Phillips, Darren C. and Mitten, Michael J. and Boghaert, Erwin R. and Diaz, Dolores and Tahir, Stephen K. and Belmont, Lisa D. and Nimmer, Paul and Xiao, Yu and Ma, Xiaoju Max and Lowes, Kym N. and Kovar, Peter and Chen, Jun and Jin, Sha and Smith, Morey and Xue, John and Zhang, Haichao and Oleksijew, Anatol and Magoc, Terrance J. and Vaidya, Kedar S. and Albert, Daniel H. and Tarrant, Jacqueline M. and La, Nghi and Wang, Le and Tao, Zhi-Fu and Wendt, Michael D. and Sampath, Deepak and Rosenberg, Saul H. and Tse, Chris and Huang, David C. S. and Fairbrother, Wayne J. and Elmore, Steven W. and Souers, Andrew J.}, + number = {279}, + month = {3}, + pages = {279ra40}, + volume = {7}, + doi = {10.1126/scitranslmed.aaa4642}, + issn = {1946-6242}, + language = {ENG} +} + +@article{Ko2013ExploringProbes, + title = {{Exploring key orientations at protein-protein interfaces with small molecule probes}}, + year = {2013}, + journal = {Journal of the American Chemical Society}, + author = {Ko, Eunhwa and Raghuraman, Arjun and Perez, Lisa M. and Ioerger, Thomas R. and Burgess, Kevin}, + number = {1}, + pages = {167--173}, + volume = {135}, + doi = {10.1021/ja3067258}, + issn = {00027863} +} + +@article{DiLeva2013ExploringSequence, + title = {{Exploring the chemical space of G-quadruplex binders: Discovery of a novel chemotype targeting the human telomeric sequence}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Di Leva, Francesco Saverio and Zizza, Pasquale and Cingolani, Chiara and D'Angelo, Carmen and Pagano, Bruno and Amato, Jussara and Salvati, Erica and Sissi, Claudia and Pinato, Odra and Marinelli, Luciana and Cavalli, Andrea and Cosconati, Sandro and Novellino, Ettore and Randazzo, Antonio and Biroccio, Annamaria}, + number = {23}, + pages = {9646--9654}, + volume = {56}, + doi = {10.1021/jm401185b}, + issn = {00222623} +} + +@article{Putzeist2012FactorsEurope, + title = {{Factors influencing non-approval of new drugs in Europe}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Putzeist, Michelle and Mantel-Teeuwisse, Aukje K. and Aronsson, Bo and Rowland, Malcolm and Gispen-De Wied, Christine C. and Vamvakas, Spiros and Hoes, Arno W. and Leufkens, Hubert G.M. and Eichler, Hans Georg}, + number = {12}, + pages = {903--904}, + volume = {11}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3894}, + doi = {10.1038/nrd3894}, + issn = {14741776} +} + +@article{Lagorce2008FAF-Drugs2:Projects, + title = {{FAF-Drugs2: Free ADME/tox filtering tool to assist drug discovery and chemical biology projects}}, + year = {2008}, + journal = {BMC Bioinformatics}, + author = {Lagorce, David and Sperandio, Olivier and Galons, Hervé and Miteva, Maria A. and Villoutreix, Bruno O.}, + volume = {9}, + isbn = {1471-2105 (Linking)}, + doi = {10.1186/1471-2105-9-396}, + issn = {14712105}, + pmid = {18816385} +} + +@article{Lagorce2015FAF-Drugs3:Design, + title = {{FAF-Drugs3: A web server for compound property calculation and chemical library design}}, + year = {2015}, + journal = {Nucleic Acids Research}, + author = {Lagorce, David and Sperandio, Olivier and Baell, Jonathan B. and Miteva, Maria A. and Villoutreix, Bruno O.}, + number = {W1}, + pages = {W200-W207}, + volume = {43}, + isbn = {1362-4962 (Electronic){\textbackslash}r0305-1048 (Linking)}, + doi = {10.1093/nar/gkv353}, + issn = {13624962}, + pmid = {25883137} +} + +@article{2014FDALetters, + title = {{FDA dissects 12 years of complete response letters}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + number = {3}, + pages = {165--165}, + volume = {13}, + doi = {10.1038/nrd4272}, + issn = {1474-1776} +} + +@article{Smith2012FeaturesAffinity, + title = {{Features of protein–protein interactions that translate into potent inhibitors: topology, surface area and affinity}}, + year = {2012}, + journal = {Expert Reviews in Molecular Medicine}, + author = {Smith, Matthew C. and Gestwicki, Jason E.}, + month = {7}, + pages = {e16}, + volume = {14}, + url = {http://www.journals.cambridge.org/abstract_S1462399412000105 http://www.ncbi.nlm.nih.gov/pubmed/22831787 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC3591511}, + doi = {10.1017/erm.2012.10}, + issn = {1462-3994}, + pmid = {22831787} +} + +@article{FigureBXIs., + title = {{Figure S2. Depletion of Bcl-XL by RNAi reduces sensitivity of lung cancer cells to BXIs.}}, + journal = {Cell}, + pages = {1299} +} + +@article{FigurePubChem., + title = {{Figure S2. Evaluating parameters value obtained for sets with inactives selected from PubChem.}}, + pages = {0} +} + +@article{FigureDissociation., + title = {{Figure S3. Treatment of human lung cancer cells with BXI-72 results in Bcl- XL/Bax dissociation.}}, + pages = {1299} +} + +@article{FigureGrowth, + title = {{Figure S4. BXI-61 potently represses lung cancer growth}}, + pages = {1299}, + volume = {61} +} + +@article{FigureIrr, + title = {{Figure S5. Irradiation resistance (IRR) is associated with elevated levels of Bcl- XL and Bcl-2 in human lung cancer cells. Levels of Bcl-XL, Mcl-1, Bcl-2, Bak, or Bax were analyzed by Western blot in lung cancer parental cells (H157-P and H358-P) and irr}}, + pages = {358} +} + +@article{FigureIR, + title = {{Figure S6. Analysis of toxicity for combination of BXI-72 and IR}}, + journal = {Analysis}, + pages = {549}, + volume = {72} +} + +@article{Lepp2009FindingSimilarity, + title = {{Finding key members in compound libraries by analyzing networks of molecules assembled by structural similarity}}, + year = {2009}, + journal = {Journal of Chemical Information and Modeling}, + author = {Lepp, Zsolt and Huang, Chunfei and Okada, Takashi}, + number = {11}, + pages = {2429--2443}, + volume = {49}, + isbn = {8148462135}, + doi = {10.1021/ci9001102}, + issn = {15499596} +} + +@article{Brinkmann2010FingolimodSclerosis, + title = {{Fingolimod (FTY720): Discovery and development of an oral drug to treat multiple sclerosis}}, + year = {2010}, + journal = {Nature Reviews Drug Discovery}, + author = {Brinkmann, Volker and Billich, Andreas and Baumruker, Thomas and Heining, Peter and Schmouder, Robert and Francis, Gordon and Aradhye, Shreeram and Burtin, Pascale}, + number = {11}, + pages = {883--897}, + volume = {9}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3248}, + doi = {10.1038/nrd3248}, + issn = {14741776} +} + +@article{Jubb2015FlexibilityDruggability, + title = {{Flexibility and small pockets at protein-protein interfaces: New insights into druggability}}, + year = {2015}, + journal = {Progress in Biophysics and Molecular Biology}, + author = {Jubb, Harry and Blundell, Tom L. and Ascher, David B.}, + number = {1}, + pages = {2--9}, + volume = {119}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.pbiomolbio.2015.01.009}, + doi = {10.1016/j.pbiomolbio.2015.01.009}, + issn = {00796107}, + keywords = {Hotspots, Inhibitors druggability, Protein-protein interfaces} +} + +@article{VazquezFOCUSAPOPTOSIS, + title = {{FOCUS ON APOPTOSIS}}, + author = {Vazquez, Alexei and Bond, Elisabeth E and Levine, Arnold J and Bond, Gareth L} +} + +@misc{Zhang2014FocusedSpace, + title = {{Focused chemical libraries - Design and enrichment: An example of protein-protein interaction chemical space}}, + year = {2014}, + booktitle = {Future Medicinal Chemistry}, + author = {Zhang, Xu and Betzi, Stéphane and Morelli, Xavier and Roche, Philippe}, + number = {11}, + pages = {1291--1307}, + volume = {6}, + publisher = {Future Science}, + doi = {10.4155/fmc.14.57}, + issn = {17568927} +} + +@article{Bosc2020Fr-PPIChem:Interactions, + title = {{Fr-PPIChem: An Academic Compound Library Dedicated to Protein–Protein Interactions}}, + year = {2020}, + journal = {ACS Chemical Biology}, + author = {Bosc, Nicolas and Muller, Christophe and Hoffer, Laurent and Lagorce, David and Bourg, Stéphane and Derviaux, Carine and Gourdel, Marie-Edith and Rain, Jean-Christophe and Miller, Thomas W. and Villoutreix, Bruno O. and Miteva, Maria A. and Bonnet, Pascal and Morelli, Xavier and Sperandio, Olivier and Roche, Philippe}, + month = {5}, + pages = {acschembio.0c00179}, + url = {https://pubs.acs.org/doi/10.1021/acschembio.0c00179}, + doi = {10.1021/acschembio.0c00179}, + issn = {1554-8929} +} + +@article{Meiby2013FragmentChromatography.pdf, + title = {{Fragment Screening by Weak Affinity Chromatography.pdf}}, + year = {2013}, + author = {Meiby, Elinor and Simmonite, Heather and Strat, Loic and Davis, Ben and Matassova, Natalia and Moore, Jonathan D and Mrosek, Michael and Murray, James and Hubbard, Roderick E and Ohlson, Sten} +} + +@article{Barelier2010Fragment-basedInhibitors, + title = {{Fragment-based deconstruction of Bcl-xL inhibitors}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Barelier, Sarah and Pons, Julien and Marcillat, Olivier and Lancelin, Jean Marc and Krimm, Isabelle}, + number = {6}, + pages = {2577--2588}, + volume = {53}, + doi = {10.1021/jm100009z}, + issn = {15204804} +} + +@article{Huang2008Fragment-basedInhibitors, + title = {{Fragment-based design of small molecule X-linked inhibitor of apoptosis protein inhibitors}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Huang, Jui Wen and Zhang, Ziming and Wu, Bainan and Cellitti, Jason F. and Zhang, Xiyun and Dahl, Russell and Shiau, Chung Wai and Welsh, Kate and Emdadi, Aras and Stebbins, John L. and Reed, John C. and Pellecchia, Maurizio}, + number = {22}, + pages = {7111--7118}, + volume = {51}, + isbn = {8586463159}, + doi = {10.1021/jm8006992}, + issn = {00222623} +} + +@article{Huang2008Fragment-basedInhibitorsb, + title = {{Fragment-based design of small molecule X-linked inhibitor of apoptosis protein inhibitors}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Huang, Jui Wen and Zhang, Ziming and Wu, Bainan and Cellitti, Jason F. and Zhang, Xiyun and Dahl, Russell and Shiau, Chung Wai and Welsh, Kate and Emdadi, Aras and Stebbins, John L. and Reed, John C. and Pellecchia, Maurizio}, + number = {22}, + pages = {7111--7118}, + volume = {51}, + isbn = {8586463159}, + doi = {10.1021/jm8006992}, + issn = {00222623} +} + +@article{Chung2012Fragment-basedDiscovery, + title = {{Fragment-based discovery of bromodomain inhibitors part 1: Inhibitor binding modes and implications for lead discovery}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Chung, Chun Wa and Dean, Anthony W. and Woolven, James M. and Bamborough, Paul}, + number = {2}, + pages = {576--586}, + volume = {55}, + doi = {10.1021/jm201320w}, + issn = {00222623} +} + +@article{Bamborough2012Fragment-basedSulfonamides, + title = {{Fragment-based discovery of bromodomain inhibitors part 2: Optimization of phenylisoxazole sulfonamides}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Bamborough, Paul and Diallo, Hawa and Goodacre, Jonathan D. and Gordon, Laurie and Lewis, Antonia and Seal, Jonathan T. and Wilson, David M. and Woodrow, Michael D. and Chung, Chun Wa}, + number = {2}, + pages = {587--596}, + volume = {55}, + doi = {10.1021/jm201283q}, + issn = {00222623} +} + +@article{Brenke2009Fragment-basedTechniques, + title = {{Fragment-based identification of druggable 'hot spots' of proteins using Fourier domain correlation techniques}}, + year = {2009}, + journal = {Bioinformatics}, + author = {Brenke, Ryan and Kozakov, Dima and Chuang, Gwo Yu and Beglov, Dmitri and Hall, David and Landon, Melissa R. and Mattos, Carla and Vajda, Sandor}, + number = {5}, + pages = {621--627}, + volume = {25}, + doi = {10.1093/bioinformatics/btp036}, + issn = {13674803} +} + +@article{Baker2013Fragment-basedUp., + title = {{Fragment-based lead discovery grows up.}}, + year = {2013}, + journal = {Nature reviews. Drug discovery}, + author = {Baker, Monya}, + number = {1}, + pages = {5--7}, + volume = {12}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3926}, + doi = {10.1038/nrd3926}, + issn = {14741784}, + pmid = {23274457} +} + +@article{BrunoO.Villoutreix2007FreeExperiments, + title = {{Free Resources to Assist Structure-Based Virtual Ligand Screening Experiments}}, + year = {2007}, + journal = {Current Protein {\&} Peptide Science}, + author = {{Bruno O. Villoutreix} and {Nicolas Renault} and {David Lagorce} and {Matthieu Montes} and {Maria A. Miteva}}, + number = {4}, + pages = {381--411}, + volume = {8}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=1389-2037&volume=8&issue=4&spage=381}, + isbn = {1389-2037 (Print)}, + doi = {10.2174/138920307781369391}, + issn = {13892037}, + pmid = {17696871}, + keywords = {Databases, Docking, Scoring, Structural bioinformatics, Structure-based drug design, Virtual ligand screening} +} + +@article{Mirguet2012FromI-BET151, + title = {{From ApoA1 upregulation to BET family bromodomain inhibition: Discovery of I-BET151}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Mirguet, Olivier and Lamotte, Yann and Donche, Frédéric and Toum, Jérôme and Gellibert, Franoise and Bouillot, Anne and Gosmini, Romain and Nguyen, Van Loc and Delann{\'{e}}e, Delphine and Seal, Jonathan and Blandel, Florence and Boullay, Anne Bénédicte and Boursier, Eric and Martin, Sandrine and Brusq, Jean Marie and Krysa, Gael and Riou, Alizon and Tellier, Rémi and Costaz, Agns and Huet, Pascal and Dudit, Yann and Trottet, Lionel and Kirilovsky, Jorge and Nicodeme, Edwige}, + number = {8}, + pages = {2963--2967}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2012.01.125}, + doi = {10.1016/j.bmcl.2012.01.125}, + issn = {0960894X}, + keywords = {7-Isoxazoloquinolines, ApoA1 upregulators, BET family, Bromodomains inhibitors} +} + +@article{Zhang2017FromDiscovery., + title = {{From machine learning to deep learning: progress in machine intelligence for rational drug discovery.}}, + year = {2017}, + journal = {Drug discovery today}, + author = {Zhang, Lu and Tan, Jianjun and Han, Dan and Zhu, Hao}, + number = {11}, + month = {11}, + pages = {1680--1685}, + volume = {22}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1359644616304366 http://www.ncbi.nlm.nih.gov/pubmed/28881183}, + doi = {10.1016/j.drudis.2017.08.010}, + issn = {1878-5832}, + pmid = {28881183} +} + +@misc{Hilgenfeld2013FromCoronaviruses, + title = {{From SARS to MERS: 10 years of research on highly pathogenic human coronaviruses}}, + year = {2013}, + booktitle = {Antiviral Research}, + author = {Hilgenfeld, Rolf and Peiris, Malik}, + number = {1}, + pages = {286--295}, + volume = {100}, + doi = {10.1016/j.antiviral.2013.08.015}, + issn = {01663542}, + keywords = {Antiviral therapy, Coronavirus, Middle East respiratory syndrome, Severe acute respiratory syndrome, Vaccine} +} + +@misc{Taguchi2019FtsWProtein, + title = {{FtsW is a peptidoglycan polymerase that is functional only in complex with its cognate penicillin-binding protein}}, + year = {2019}, + booktitle = {Nature Microbiology}, + author = {Taguchi, Atsushi and Welsh, Michael A. and Marmont, Lindsey S. and Lee, Wonsik and Sjodt, Megan and Kruse, Andrew C. and Kahne, Daniel and Bernhardt, Thomas G. and Walker, Suzanne}, + doi = {10.1038/s41564-018-0345-x}, + issn = {20585276} +} + +@article{Bouvier2014FunctionalMaps, + title = {{Functional motions modulating VanA ligand binding unraveled by self-organizing maps}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Bouvier, Guillaume and Duclert-Savatier, Nathalie and Desdouits, Nathan and Meziane-Cherif, Djalal and Blondel, Arnaud and Courvalin, Patrice and Nilges, Michael and Malliavin, Thérèse E.}, + number = {1}, + pages = {289--301}, + volume = {54}, + doi = {10.1021/ci400354b}, + issn = {15499596} +} + +@misc{GalaxyAcademic, + title = {{Galaxy platform for accessible, reproducible and collaborative biomedical analyses: 2018 update | Nucleic Acids Research | Oxford Academic}}, + url = {https://academic.oup.com/nar/article/46/W1/W537/5001157} +} + +@article{Ortuso2006GBPM:Recognition, + title = {{GBPM: GRID-based pharmacophore model: Concept and application studies to protein-protein recognition}}, + year = {2006}, + journal = {Bioinformatics}, + author = {Ortuso, Francesco and Langer, Thierry and Alcaro, Stefano}, + number = {12}, + pages = {1449--1455}, + volume = {22}, + doi = {10.1093/bioinformatics/btl115}, + issn = {13674803} +} + +@misc{Ashburner2000GeneBiology, + title = {{Gene ontology: Tool for the unification of biology}}, + year = {2000}, + booktitle = {Nature Genetics}, + author = {Ashburner, Michael and Ball, Catherine A. and Blake, Judith A. and Botstein, David and Butler, Heather and Cherry, J. Michael and Davis, Allan P. and Dolinski, Kara and Dwight, Selina S. and Eppig, Janan T. and Harris, Midori A. and Hill, David P. and Issel-Tarver, Laurie and Kasarskis, Andrew and Lewis, Suzanna and Matese, John C. and Richardson, Joel E. and Ringwald, Martin and Rubin, Gerald M. and Sherlock, Gavin}, + number = {1}, + pages = {25--29}, + volume = {25}, + doi = {10.1038/75556}, + issn = {10614036}, + pmid = {10802651} +} + +@article{Liu-Chittenden2012GeneticYAP, + title = {{Genetic and pharmacological disruption of the TEAD-YAP complex suppresses the oncogenic activity of YAP}}, + year = {2012}, + journal = {Genes and Development}, + author = {Liu-Chittenden, Yi and Huang, Bo and Shim, Joong Sup and Chen, Qian and Lee, Se Jin and Anders, Robert A. and Liu, Jun O. and Pan, Duojia}, + number = {12}, + pages = {1300--1305}, + volume = {26}, + doi = {10.1101/gad.192856.112}, + issn = {08909369}, + keywords = {Chemical biology, Hippo signaling, Oncogene, YAP} +} + +@article{Chan2020GenomicWuhan, + title = {{Genomic characterization of the 2019 novel human-pathogenic coronavirus isolated from a patient with atypical pneumonia after visiting Wuhan}}, + year = {2020}, + journal = {Emerging Microbes and Infections}, + author = {Chan, Jasper Fuk Woo and Kok, Kin Hang and Zhu, Zheng and Chu, Hin and To, Kelvin Kai Wang and Yuan, Shuofeng and Yuen, Kwok Yung}, + number = {1}, + month = {1}, + pages = {221--236}, + volume = {9}, + publisher = {Taylor and Francis Ltd.}, + doi = {10.1080/22221751.2020.1719902}, + issn = {22221751}, + pmid = {31987001}, + keywords = {Coronavirus, SARS, Wuhan, bioinformatics, emerging, genome, respiratory, virus} +} + +@misc{Kim2016GettingScreening, + title = {{Getting the most out of PubChem for virtual screening}}, + year = {2016}, + booktitle = {Expert Opinion on Drug Discovery}, + author = {Kim, Sunghwan}, + doi = {10.1080/17460441.2016.1216967}, + issn = {1746045X}, + keywords = {PubChem, biological assay, cheminformatics, computational toxicology, computer-aided drug discovery, data mining, database, polypharmacology, quantitative structure-activity relationship (QSAR, virtual screening} +} + +@article{Capdeville2002GlivecDrug, + title = {{Glivec (ST1571, imatinib), a rationally developed, targeted anticancer drug}}, + year = {2002}, + journal = {Nature Reviews Drug Discovery}, + author = {Capdeville, Renaud and Buchdunger, Elisabeth and Zimmermann, Juerg and Matter, Alex}, + number = {7}, + pages = {493--502}, + volume = {1}, + doi = {10.1038/nrd839}, + issn = {14741776} +} + +@article{Jager2012GlobalComplexes, + title = {{Global landscape of HIV-human protein complexes}}, + year = {2012}, + journal = {Nature}, + author = {J{\"{a}}ger, Stefanie and Cimermancic, Peter and Gulbahce, Natali and Johnson, Jeffrey R. and McGovern, Kathryn E. and Clarke, Starlynn C. and Shales, Michael and Mercenne, Gaelle and Pache, Lars and Li, Kathy and Hernandez, Hilda and Jang, Gwendolyn M. and Roth, Shoshannah L. and Akiva, Eyal and Marlett, John and Stephens, Melanie and D'Orso, Iván and Fernandes, Jason and Fahey, Marie and Mahon, Cathal and OÄdonoghue, Anthony J. and Todorovic, Aleksandar and Morris, John H. and Maltby, David A. and Alber, Tom and Cagney, Gerard and Bushman, Frederic D. and Young, John A. and Chanda, Sumit K. and Sundquist, Wesley I. and Kortemme, Tanja and Hernandez, Ryan D. and Craik, Charles S. and Burlingame, Alma and Sali, Andrej and Frankel, Alan D. and Krogan, Nevan J.}, + number = {7381}, + pages = {365--370}, + volume = {481}, + doi = {10.1038/nature10719}, + issn = {00280836} +} + +@article{Jager2012GlobalComplexesb, + title = {{Global landscape of HIV-human protein complexes}}, + year = {2012}, + journal = {Nature}, + author = {J{\"{a}}ger, Stefanie and Cimermancic, Peter and Gulbahce, Natali and Johnson, Jeffrey R. and McGovern, Kathryn E. and Clarke, Starlynn C. and Shales, Michael and Mercenne, Gaelle and Pache, Lars and Li, Kathy and Hernandez, Hilda and Jang, Gwendolyn M. and Roth, Shoshannah L. and Akiva, Eyal and Marlett, John and Stephens, Melanie and D'Orso, Iván and Fernandes, Jason and Fahey, Marie and Mahon, Cathal and OÄdonoghue, Anthony J. and Todorovic, Aleksandar and Morris, John H. and Maltby, David A. and Alber, Tom and Cagney, Gerard and Bushman, Frederic D. and Young, John A. and Chanda, Sumit K. and Sundquist, Wesley I. and Kortemme, Tanja and Hernandez, Ryan D. and Craik, Charles S. and Burlingame, Alma and Sali, Andrej and Frankel, Alan D. and Krogan, Nevan J.}, + number = {7381}, + pages = {365--370}, + volume = {481}, + doi = {10.1038/nature10719}, + issn = {00280836} +} + +@article{Dandapani2010GrandTargets, + title = {{Grand Challenge Commentary: Accessing new chemical space for 'undruggable' targets}}, + year = {2010}, + journal = {Nature Chemical Biology}, + author = {Dandapani, Sivaraman and Marcaurelle, Lisa A.}, + number = {12}, + pages = {861--863}, + volume = {6}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.479}, + doi = {10.1038/nchembio.479}, + issn = {15524469} +} + +@article{Delporte2003HabilitationRecherches, + title = {{Habilitation {\`{a}} diriger des recherches}}, + year = {2003}, + journal = {Le Temps des m{\'{e}}dias}, + author = {Delporte, Christian}, + number = {1}, + pages = {223}, + volume = {1}, + doi = {10.3917/tdm.001.0223}, + issn = {1764-2507} +} + +@article{Kratz2014HalogenDevelopment., + title = {{Halogen Bond: Its Role beyond Drug−Target Binding Affinity for Drug Discovery and Development.}}, + year = {2014}, + journal = {Journal of chemical information and modeling}, + author = {Kratz, Jadel M and Schuster, Daniela and Edtbauer, Michael and Saxena, Priyanka and Mair, Christina E and Kirchebner, Julia and Matuszczak, Barbara and Baburin, Igor and Hering, Steffen and Rollinger, Judith M}, + number = {1}, + pages = {69--78}, + volume = {54}, + issn = {1549-960X}, + keywords = {icle} +} + +@article{Todeschini2000HandbookDescriptors, + title = {{Handbook of Molecular Descriptors}}, + year = {2000}, + journal = {Wiley-VCH}, + author = {Todeschini, Roberto and Consonni, Viviana}, + pages = {688}, + volume = {11}, + isbn = {3527299130}, + doi = {10.1002/9783527613106}, + issn = {35229913} +} + +@article{Wilkens2005HierS:Graphs, + title = {{HierS: Hierarchical scaffold clustering using topological chemical graphs}}, + year = {2005}, + journal = {Journal of Medicinal Chemistry}, + author = {Wilkens, Steven J. and Janes, Jeff and Su, Andrew I.}, + number = {9}, + pages = {3182--3193}, + volume = {48}, + doi = {10.1021/jm049032d}, + issn = {00222623} +} + +@article{Karatas2013High-AInteraction, + title = {{High-A ffi nity, Small-Molecule Peptidomimetic Inhibitors of MLL1/ WDR5 Protein − Protein Interaction}}, + year = {2013}, + author = {Karatas, Hacer and Townsend, Elizabeth C and Cao, Fang and Chen, Yong and Bernard, Denzil and Liu, Liu and Lei, Ming and Dou, Yali and Wang, Shaomeng} +} + +@article{He2014High-affinityInteraction, + title = {{High-affinity small-molecule inhibitors of the menin-mixed lineage leukemia (MLL) interaction closely mimic a natural protein-protein interaction}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {He, Shihan and Senter, Timothy J. and Pollock, Jonathan and Han, Changho and Upadhyay, Sunil Kumar and Purohit, Trupta and Gogliotti, Rocco D. and Lindsley, Craig W. and Cierpicki, Tomasz and Stauffer, Shaun R. and Grembecka, Jolanta}, + number = {4}, + pages = {1543--1556}, + volume = {57}, + doi = {10.1021/jm401868d}, + issn = {00222623} +} + +@article{He2014High-affinityInteractionb, + title = {{High-affinity small-molecule inhibitors of the menin-mixed lineage leukemia (MLL) interaction closely mimic a natural protein-protein interaction}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {He, Shihan and Senter, Timothy J. and Pollock, Jonathan and Han, Changho and Upadhyay, Sunil Kumar and Purohit, Trupta and Gogliotti, Rocco D. and Lindsley, Craig W. and Cierpicki, Tomasz and Stauffer, Shaun R. and Grembecka, Jolanta}, + number = {4}, + pages = {1543--1556}, + volume = {57}, + doi = {10.1021/jm401868d}, + issn = {00222623} +} + +@article{Zhai2012High-throughputBfl-1, + title = {{High-throughput fluorescence polarization assay for chemical library screening against anti-apoptotic Bcl-2 family member Bfl-1}}, + year = {2012}, + journal = {Journal of Biomolecular Screening}, + author = {Zhai, Dayong and Godoi, Paulo and Sergienko, Eduard and Dahl, Russell and Chan, Xochella and Brown, Brock and Rascon, Justin and Hurder, Andrew and Su, Ying and Chung, Thomas D.Y. and Jin, Chaofang and Diaz, Paul and Reed, John C.}, + number = {3}, + pages = {350--360}, + volume = {17}, + doi = {10.1177/1087057111429372}, + issn = {10870571}, + keywords = {cancer and cancer drugs, fluorescence polarization methods, immune system diseases, inflammatory diseases, protein-protein interactions} +} + +@article{An2012HoleLibraries, + title = {{Hole filling and library optimization: Application to commercially available fragment libraries}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {An, Yuling and Sherman, Woody and Dixon, Steven L.}, + number = {18}, + pages = {5379--5387}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.03.037}, + doi = {10.1016/j.bmc.2012.03.037}, + issn = {09680896}, + keywords = {Chemical fingerprint, Cheminformatics, Compound library optimization, Hole filling} +} + +@article{Whitty2015HorsesTargets, + title = {{Horses for courses: Reaching outside drug-like chemical space for inhibitors of challenging drug targets}}, + year = {2015}, + journal = {Future Medicinal Chemistry}, + author = {Whitty, Adrian and Zhou, Li}, + number = {9}, + pages = {1093--1095}, + volume = {7}, + doi = {10.4155/fmc.15.56}, + issn = {17568927}, + keywords = {ADME, covalent inhibitors, druggability, druglikeness, foldamers, macrocycles, protein-protein interactions} +} + +@article{Ferenczy2013HowOptimizations, + title = {{How are fragments optimized? A retrospective analysis of 145 fragment optimizations}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Ferenczy, György G. and Keseru, György M.}, + number = {6}, + pages = {2478--2486}, + volume = {56}, + doi = {10.1021/jm301851v}, + issn = {00222623} +} + +@article{Heikamp2011HowSelection, + title = {{How do 2D fingerprints detect structurally diverse active compounds? Revealing compound subset-specific fingerprint features through systematic selection}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Heikamp, Kathrin and Bajorath, Jürgen}, + number = {9}, + pages = {2254--2265}, + volume = {51}, + doi = {10.1021/ci200275m}, + issn = {15499596} +} + +@article{Villar2014HowMacrocycles, + title = {{How proteins bind macrocycles}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Villar, Elizabeth A. and Beglov, Dmitri and Chennamadhavuni, Spandan and Porco, John A. and Kozakov, Dima and Vajda, Sandor and Whitty, Adrian}, + number = {9}, + pages = {723--731}, + volume = {10}, + doi = {10.1038/nchembio.1584}, + issn = {15524469} +} + +@article{Villar2014HowMacrocyclesb, + title = {{How proteins bind macrocycles}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Villar, Elizabeth A. and Beglov, Dmitri and Chennamadhavuni, Spandan and Porco, John A. and Kozakov, Dima and Vajda, Sandor and Whitty, Adrian}, + number = {9}, + pages = {723--731}, + volume = {10}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1584}, + doi = {10.1038/nchembio.1584}, + issn = {15524469} +} + +@article{Villar2014HowMacrocyclesc, + title = {{How proteins bind macrocycles}}, + year = {2014}, + journal = {Nature Chemical Biology}, + author = {Villar, Elizabeth A. and Beglov, Dmitri and Chennamadhavuni, Spandan and Porco, John A. and Kozakov, Dima and Vajda, Sandor and Whitty, Adrian}, + number = {9}, + pages = {723--731}, + volume = {10}, + doi = {10.1038/nchembio.1584}, + issn = {15524469} +} + +@article{Sperandio2010HowAnalysis, + title = {{How to choose relevant multiple receptor conformations for virtual screening: A test case of Cdk2 and normal mode analysis}}, + year = {2010}, + journal = {European Biophysics Journal}, + author = {Sperandio, Olivier and Mouawad, Liliane and Pinto, Eulalie and Villoutreix, Bruno O. and Perahia, David and Miteva, Maria A.}, + number = {9}, + pages = {1365--1372}, + volume = {39}, + isbn = {0175-7571}, + doi = {10.1007/s00249-010-0592-0}, + issn = {01757571}, + pmid = {20237920}, + keywords = {Cdk2, Docking, Normal modes, Receptor flexibility, Virtual screening} +} + +@article{Sperandio2010HowAnalysisb, + title = {{How to choose relevant multiple receptor conformations for virtual screening: A test case of Cdk2 and normal mode analysis}}, + year = {2010}, + journal = {European Biophysics Journal}, + author = {Sperandio, Olivier and Mouawad, Liliane and Pinto, Eulalie and Villoutreix, Bruno O. and Perahia, David and Miteva, Maria A.}, + number = {9}, + pages = {1365--1372}, + volume = {39}, + doi = {10.1007/s00249-010-0592-0}, + issn = {01757571}, + keywords = {Cdk2, Docking, Normal modes, Receptor flexibility, Virtual screening} +} + +@article{Roughley2011How90, + title = {{How well can fragments explore accessed chemical space? A case study from heat shock protein 90}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Roughley, Stephen D. and Hubbard, Roderick E.}, + number = {12}, + pages = {3989--4005}, + volume = {54}, + doi = {10.1021/jm200350g}, + issn = {00222623} +} + +@article{Wu2013HTSDiscovery, + title = {{HTS by NMR of combinatorial libraries: A fragment-based approach to ligand discovery}}, + year = {2013}, + journal = {Chemistry and Biology}, + author = {Wu, Bainan and Zhang, Ziming and Noberini, Roberta and Barile, Elisa and Giulianotti, Marc and Pinilla, Clemencia and Houghten, Richard A. and Pasquale, Elena B. and Pellecchia, Maurizio}, + number = {1}, + pages = {19--33}, + volume = {20}, + doi = {10.1016/j.chembiol.2012.10.015}, + issn = {10745521} +} + +@article{Bitencourt-Ferreira2019HydrogenComplexes, + title = {{Hydrogen bonds in protein-ligand complexes}}, + year = {2019}, + journal = {Methods in Molecular Biology}, + author = {Bitencourt-Ferreira, Gabriela and Veit-Acosta, Martina and de Azevedo, Walter Filgueira}, + pages = {93--107}, + volume = {2053}, + isbn = {3527305211}, + doi = {10.1007/978-1-4939-9752-7{\_}7}, + issn = {19406029}, + keywords = {Binding affinity, Drug design, Hydrogen bond interactions, Molecular recognition, Shikimate pathway} +} + +@article{Yang2011HydrophobicInterfaces, + title = {{Hydrophobic Binding Hot Spots of Bcl-xL Protein - Protein Interfaces}}, + year = {2011}, + journal = {ACS Medicinal Chemistry Letters}, + author = {Yang, Chao-yie and Wang, Shaomeng}, + pages = {280--284}, + volume = {2}, + keywords = {1 common features for, bcl-xl protein, cosolvent molecular dynamics simulation, in regulat-, ing many cellular processes, large interface 2 and, many, play a key role, ppis, ppis include their relatively, protein - protein interfaces, rotein - protein interactions, the high plasti-} +} + +@article{Gao2011IAlign:Interfaces, + title = {{IAlign: a method for the structural comparison of protein-protein interfaces}}, + year = {2011}, + journal = {Bioinformatics}, + author = {Gao, Mu and Skolnick, Jeffrey and Rost, Burkhard}, + number = {13}, + pages = {2259--2265}, + volume = {27}, + doi = {10.1093/bioinformatics/btq404}, + issn = {14602059} +} + +@article{IbkForest, + title = {{Ibk J48 Random Forest}}, + pages = {100} +} + +@article{Abifadel2012IdentificationHypercholesterolemia, + title = {{Identification and characterization of new gain-of-function mutations in the PCSK9 gene responsible for autosomal dominant hypercholesterolemia}}, + year = {2012}, + journal = {Atherosclerosis}, + author = {Abifadel, Marianne and Guerin, Maryse and Benjannet, Suzanne and Rab{\`{e}}s, Jean Pierre and Le Goff, Wilfried and Julia, Zélie and Hamelin, Josée and Carreau, Valérie and Varret, Mathilde and Bruckert, Eric and Tosolini, Laurent and Meilhac, Olivier and Couvert, Philippe and Bonnefont-Rousselot, Dominique and Chapman, John and Carri{\'{e}}, Alain and Michel, Jean Baptiste and Prat, Annik and Seidah, Nabil G. and Boileau, Catherine}, + number = {2}, + pages = {394--400}, + volume = {223}, + doi = {10.1016/j.atherosclerosis.2012.04.006}, + issn = {00219150}, + keywords = {Familial hypercholesterolemia, LDL-C, Mutations, PCSK9} +} + +@article{Fish2012IdentificationHit, + title = {{Identification of a chemical probe for bromo and extra C-terminal bromodomain inhibition through optimization of a fragment-derived hit}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Fish, Paul V. and Filippakopoulos, Panagis and Bish, Gerwyn and Brennan, Paul E. and Bunnage, Mark E. and Cook, Andrew S. and Federov, Oleg and Gerstenberger, Brian S. and Jones, Hannah and Knapp, Stefan and Marsden, Brian and Nocka, Karl and Owen, Dafydd R. and Philpott, Martin and Picaud, Sarah and Primiano, Michael J. and Ralph, Michael J. and Sciammetta, Nunzio and Trzupek, John D.}, + number = {22}, + pages = {9831--9837}, + volume = {55}, + doi = {10.1021/jm3010515}, + issn = {00222623} +} + +@article{Fish2012IdentificationCTerminal.pdf, + title = {{Identification of a Chemical Probe for Bromo and Extra C‑Terminal.pdf}}, + year = {2012}, + author = {Fish, Paul V and Filippakopoulos, Panagis and Bish, Gerwyn and Brennan, Paul E and Bunnage, Mark E and Cook, Andrew S and Federov, Oleg and Gerstenberger, Brian S and Jones, Hannah and Knapp, Stefan and Marsden, Brian and Nocka, Karl and Owen, Dafydd R and Philpott, Martin and Picaud, Sarah and Primiano, Michael J and Ralph, Michael J and Sciammetta, Nunzio and Trzupek, John D} +} + +@article{Lawrence2009IdentificationDocking, + title = {{Identification of a disruptor of the MDM2-p53 protein-protein interaction facilitated by high-throughput in silico docking}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Lawrence, Harshani R. and Li, Zhenyu and Richard Yip, M. L. and Sung, Shen Shu and Lawrence, Nicholas J. and McLaughlin, Mark L. and McManus, Gregory J. and Zaworotko, Michael J. and Sebti, Saïd M. and Chen, Jiandong and Guida, Wayne C.}, + number = {14}, + pages = {3756--3759}, + volume = {19}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2009.04.124}, + doi = {10.1016/j.bmcl.2009.04.124}, + issn = {0960894X}, + keywords = {Alphascreenâ„¢, Anticancer, Mdm2-p53, Protein-protein interaction, Virtual screening} +} + +@article{Byler2012IdentificationAgents, + title = {{Identification of benzoylisoquinolines as potential anti-Chagas agents}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Byler, Kendall G. and Brito-Arias, Marco and Marquez-Navarro, Adrian and Nogueda-Torres, Benjamin and Torres-Bustillos, Luis G. and Mart{\'{i}}nez-Mayorga, Karina}, + number = {8}, + pages = {2587--2594}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.02.046}, + doi = {10.1016/j.bmc.2012.02.046}, + issn = {09680896}, + keywords = {Benzoyl isoquinolones, Chemical space, Structural similarity, Trypanosoma cruzi} +} + +@article{Tuncbag2009IdentificationAccuracy, + title = {{Identification of computational hot spots in protein interfaces: Combining solvent accessibility and inter-residue potentials improves the accuracy}}, + year = {2009}, + journal = {Bioinformatics}, + author = {Tuncbag, Nurcan and Gursoy, Attila and Keskin, Ozlem}, + number = {12}, + pages = {1513--1520}, + volume = {25}, + doi = {10.1093/bioinformatics/btp240}, + issn = {13674803} +} + +@article{Chu2013IdentificationSearching, + title = {{Identification of fragments targeting an alternative pocket on HIV-1 gp41 by NMR screening and similarity searching}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Chu, Shidong and Gochin, Miriam}, + number = {18}, + pages = {5114--5118}, + volume = {23}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2013.07.026}, + doi = {10.1016/j.bmcl.2013.07.026}, + issn = {0960894X}, + keywords = {Fragment library, HIV-1 gp41, NMR, ROCS similarity searching, WaterLOGSY} +} + +@article{DiMicco2009IdentificationApproach, + title = {{Identification of lead compounds as antagonists of protein Bcl-x L with a diversity-oriented multidisciplinary approach}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Di Micco, Simone and Vitale, Romina and Pellecchia, Maurizio and Rega, Michele F. and Riva, Renata and Basso, Andrea and Bifulco, Giuseppe}, + number = {23}, + pages = {7856--7867}, + volume = {52}, + doi = {10.1021/jm9010687}, + issn = {00222623} +} + +@article{Sperandio2014IdentificationC, + title = {{Identification of novel small molecule inhibitors of activated protein C}}, + year = {2014}, + journal = {Thrombosis Research}, + author = {Sperandio, Olivier and Wildhagen, Karin C.A.A. and Schrijver, Roy and Wielders, Simone and Villoutreix, Bruno O. and Nicolaes, Gerry A.F.}, + number = {6}, + pages = {1105--1114}, + volume = {133}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.thromres.2014.01.026}, + doi = {10.1016/j.thromres.2014.01.026}, + issn = {18792472}, + keywords = {Activated protein C, Drug design, Factor Va, Virtual screening} +} + +@article{Mathieu2014IdentificationABT-737, + title = {{Identification of small inhibitory molecules targeting the Bfl-1 Anti-apoptotic protein that alleviates resistance to ABT-737}}, + year = {2014}, + journal = {Journal of Biomolecular Screening}, + author = {Mathieu, Anne Laure and Sperandio, Olivier and Pottiez, Virginie and Balzarin, Sophie and Herl{\'{e}}dan, Adrien and Elka{\"{i}}m, Judith O. and Fogeron, Marie Laure and Piveteau, Catherine and Dassonneville, Sandrine and Deprez, Benoit and Villoutreix, Bruno O. and Bonnefoy, Nathalie and Leroux, Florence}, + number = {7}, + pages = {1035--1046}, + volume = {19}, + isbn = {1552-454X (Electronic){\textbackslash}r1087-0571 (Linking)}, + doi = {10.1177/1087057114534070}, + issn = {1552454X}, + pmid = {24809353}, + keywords = {Bcl-2, Bfl-1, apoptosis, high-throughput screening, protein-protein interaction inhibitors} +} + +@article{Yu2008IdentificationAssay, + title = {{Identification of small molecular weight inhibitors of Src homology 2 domain-containing tyrosine phosphatase 2 (SHP-2) via in silico database screening combined with experimental assay}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Yu, Wen Mei and Guvench, Olgun and MacKerell, Alexander D. and Qu, Cheng Kui}, + number = {23}, + pages = {7396--7404}, + volume = {51}, + doi = {10.1021/jm800229d}, + issn = {00222623} +} + +@article{Schorpp2014IdentificationScreens, + title = {{Identification of small-molecule frequent hitters from alphascreen high-throughput screens}}, + year = {2014}, + journal = {Journal of Biomolecular Screening}, + author = {Schorpp, Kenji and Rothenaigner, Ina and Salmina, Elena and Reinshagen, Jeanette and Low, Terence and Brenke, Jara K. and Gopalakrishnan, Jay and Tetko, Igor V. and Gul, Sheraz and Hadian, Kamyar}, + number = {5}, + pages = {715--726}, + volume = {19}, + doi = {10.1177/1087057113516861}, + issn = {1552454X}, + keywords = {Alphascreen, Assay development, Drug discovery, Frequent hitter, High-throughput screening, Protein-protein interaction} +} + +@article{Corradi2010IdentificationApoptosis, + title = {{Identification of the first non-peptidic small molecule inhibitor of the c-Abl/14-3-3 protein-protein interactions able to drive sensitive and Imatinib-resistant leukemia cells to apoptosis}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Corradi, Valentina and Mancini, Manuela and Manetti, Fabrizio and Petta, Sara and Santucci, Maria Alessandra and Botta, Maurizio}, + number = {20}, + pages = {6133--6137}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.08.019}, + issn = {0960894X}, + keywords = {14-3-3 Proteins, Drug discovery, Leukemia, Molecular modeling, Non-peptidic compounds, Protein-protein interactions} +} + +@misc{IEEEClassification, + title = {{IEEE Xplore Abstract - Nearest neighbor pattern classification}}, + url = {http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1053964} +} + +@article{Kuenemann2016ImbalanceInhibitors, + title = {{Imbalance in chemical space: How to facilitate the identification of protein-protein interaction inhibitors}}, + year = {2016}, + journal = {Scientific Reports}, + author = {Kuenemann, Mélaine A. and Labb{\'{e}}, Céline M. and Cerdan, Adrien H. and Sperandio, Olivier}, + month = {4}, + volume = {6}, + publisher = {Nature Publishing Group}, + doi = {10.1038/srep23815}, + issn = {20452322} +} + +@article{Kuenemann2016ImbalanceInhibitorsb, + title = {{Imbalance in chemical space: How to facilitate the identification of protein-protein interaction inhibitors}}, + year = {2016}, + journal = {Scientific Reports}, + author = {Kuenemann, Mélaine A. and Labb{\'{e}}, Céline M. and Cerdan, Adrien H. and Sperandio, Olivier}, + number = {1}, + month = {4}, + pages = {23815}, + volume = {6}, + url = {http://www.nature.com/articles/srep23815}, + doi = {10.1038/srep23815}, + issn = {2045-2322} +} + +@article{Charton2014Imidazole-derivedHydrolysis, + title = {{Imidazole-derived 2-[N-carbamoylmethyl-alkylamino]acetic acids, substrate-dependent modulators of insulin-degrading enzyme in amyloid-{$\beta$} hydrolysis}}, + year = {2014}, + journal = {European Journal of Medicinal Chemistry}, + author = {Charton, Julie and Gauriot, Marion and Guo, Qing and Hennuyer, Nathalie and Marechal, Xavier and Dumont, Julie and Hamdane, Malika and Pottiez, Virginie and Landry, Valerie and Sperandio, Olivier and Flipo, Marion and Buee, Luc and Staels, Bart and Leroux, Florence and Tang, Wei Jen and Deprez, Benoit and Deprez-Poulain, Rebecca}, + pages = {184--193}, + volume = {79}, + isbn = {0223-5234}, + doi = {10.1016/j.ejmech.2014.04.009}, + issn = {17683254}, + pmid = {24735644}, + keywords = {Amyloid-beta peptides, Enzymes, Inhibitors, Medicinal chemistry, Structure-activity relationships, X-ray diffraction} +} + +@article{Tarcsay2012ImpactQuality, + title = {{Impact of lipophilic efficiency on compound quality}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Tarcsay, Ãkos and Ny{\'{i}}ri, Kinga and Keser{\'{u}}, György M.}, + number = {3}, + pages = {1252--1260}, + volume = {55}, + doi = {10.1021/jm201388p}, + issn = {15204804} +} + +@article{Senior2020ImprovedLearning, + title = {{Improved protein structure prediction using potentials from deep learning}}, + year = {2020}, + journal = {Nature}, + author = {Senior, Andrew W. and Evans, Richard and Jumper, John and Kirkpatrick, James and Sifre, Laurent and Green, Tim and Qin, Chongli and {\v{Z}}{\'{i}}dek, Augustin and Nelson, Alexander W.R. and Bridgland, Alex and Penedones, Hugo and Petersen, Stig and Simonyan, Karen and Crossan, Steve and Kohli, Pushmeet and Jones, David T. and Silver, David and Kavukcuoglu, Koray and Hassabis, Demis}, + number = {7792}, + month = {1}, + pages = {706--710}, + volume = {577}, + publisher = {Nature Research}, + doi = {10.1038/s41586-019-1923-7}, + issn = {14764687}, + pmid = {31942072}, + keywords = {Machine learning, Protein structure predictions} +} + +@article{Beck2011ImprovementInhibitors, + title = {{Improvement of the synthesis and pharmacokinetic properties of chromenotriazolopyrimidine MDM2-p53 protein-protein inhibitors}}, + year = {2011}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Beck, Hilary P. and Degraffenreid, Michael and Fox, Brian and Allen, John G. and Rew, Yosup and Schneider, Stephen and Saiki, Anne Y. and Yu, Dongyin and Oliner, Jonathan D. and Salyers, Kevin and Ye, Qiuping and Olson, Steven}, + number = {9}, + pages = {2752--2755}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2010.11.027}, + doi = {10.1016/j.bmcl.2010.11.027}, + issn = {0960894X}, + keywords = {Oncology, Pharmacokinetics, Protein-protein interaction} +} + +@article{Ruan2018ImprovingKernel, + title = {{Improving prediction of heterodimeric protein complexes using combination with pairwise kernel}}, + year = {2018}, + journal = {BMC Bioinformatics}, + author = {Ruan, Peiying and Hayashida, Morihiro and Akutsu, Tatsuya and Vert, Jean-Philippe}, + number = {S1}, + month = {2}, + pages = {39}, + volume = {19}, + url = {https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2017-5}, + doi = {10.1186/s12859-018-2017-5}, + issn = {1471-2105} +} + +@article{Wager2013ImprovingStudies, + title = {{Improving the odds of success in drug discovery: Choosing the best compounds for in vivo toxicology studies}}, + year = {2013}, + journal = {Journal of Medicinal Chemistry}, + author = {Wager, Travis T. and Kormos, Bethany L. and Brady, Joseph T. and Will, Yvonne and Aleo, Michael D. and Stedman, Donald B. and Kuhn, Max and Chandrasekaran, Ramalakshmi Y.}, + number = {23}, + pages = {9771--9779}, + volume = {56}, + doi = {10.1021/jm401485p}, + issn = {00222623} +} + +@incollection{Lagorce2010InPredictions, + title = {{In Silico ADME/Tox Predictions}}, + year = {2010}, + booktitle = {ADMET for Medicinal Chemists: A Practical Guide}, + author = {Lagorce, David and Reynes, Christelle and Camproux, Anne Claude and Miteva, Maria A. and Sperandio, Olivier and Villoutreix, Bruno O.}, + pages = {29--124}, + isbn = {9780470484074}, + doi = {10.1002/9780470915110.ch2}, + keywords = {ADME/Tox predictions - within pharmaceutics compan, Field of drug discovery, comment on key computer m, In silico ADME/Tox predictions - ADME/Tox concepts} +} + +@article{Su2010InMaterial, + title = {{In silico binary QSAR models based on 4D-fingerprints and MOE descriptors for prediction of hERG blockage - supplementary material}}, + year = {2010}, + journal = {Journal of chemical information and modeling}, + author = {Su, Bo-han and Shen, Meng-yu and Esposito, Emilio Xavier and Hopfinger, Anton J and Tseng, Yufeng J}, + number = {7}, + pages = {1304--1318}, + volume = {50} +} + +@misc{Kuenemann2015InAdvances, + title = {{In silico design of low molecular weight protein-protein interaction inhibitors: Overall concept and recent advances}}, + year = {2015}, + booktitle = {Progress in Biophysics and Molecular Biology}, + author = {Kuenemann, Mélaine A. and Sperandio, Olivier and Labb{\'{e}}, Céline M. and Lagorce, David and Miteva, Maria A. and Villoutreix, Bruno O.}, + number = {1}, + pages = {20--32}, + volume = {119}, + isbn = {1873-1732 (Electronic) 0079-6107 (Linking)}, + doi = {10.1016/j.pbiomolbio.2015.02.006}, + issn = {00796107}, + pmid = {25748546}, + keywords = {Bioinformatics, Chemoinformatics, Compound collection, Focused library, Protein-protein interaction inhibitors, Virtual screening} +} + +@article{Kuenemann2015InAdvancesb, + title = {{In silico design of low molecular weight protein-protein interaction inhibitors: Overall concept and recent advances}}, + year = {2015}, + journal = {Progress in Biophysics and Molecular Biology}, + author = {Kuenemann, Mélaine A. and Sperandio, Olivier and Labb{\'{e}}, Céline M. and Lagorce, David and Miteva, Maria A. and Villoutreix, Bruno O.}, + number = {1}, + pages = {20--32}, + volume = {119}, + doi = {10.1016/j.pbiomolbio.2015.02.006}, + issn = {00796107}, + keywords = {Bioinformatics, Chemoinformatics, Compound collection, Focused library, Protein-protein interaction inhibitors, Virtual screening} +} + +@misc{Villoutreix2010InInhibitors, + title = {{In silico studies of blood coagulation proteins: from mosaic proteases to nonenzymatic cofactor inhibitors}}, + year = {2010}, + booktitle = {Current Opinion in Structural Biology}, + author = {Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {2}, + pages = {168--179}, + volume = {20}, + isbn = {1879-033X (Electronic){\textbackslash}r0959-440X (Linking)}, + doi = {10.1016/j.sbi.2009.12.016}, + issn = {0959440X}, + pmid = {20083402} +} + +@article{Villoutreix2008InTherapeutics, + title = {{In Silico-In Vitro Screening of Protein-Protein Interactions: Towards the Next Generation of Therapeutics}}, + year = {2008}, + journal = {Current Pharmaceutical Biotechnology}, + author = {Villoutreix, Bruno and Bastard, Karine and Sperandio, Olivier and Fahraeus, Robin and Poyet, Jean-Luc and Calvo, Fabien and Deprez, Benoit and Miteva, Maria}, + number = {2}, + pages = {103--122}, + volume = {9}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=1389-2010&volume=9&issue=2&spage=103}, + isbn = {1389-2010}, + doi = {10.2174/138920108783955218}, + issn = {13892010}, + pmid = {18393867}, + keywords = {Docking, Drug discovery, Protein-protein interaction, Scoring, Structure-based drug design, Virtual ligand screening} +} + +@article{Villoutreix2008InTherapeuticsb, + title = {{In Silico-In Vitro Screening of Protein-Protein Interactions: Towards the Next Generation of Therapeutics}}, + year = {2008}, + journal = {Current Pharmaceutical Biotechnology}, + author = {Villoutreix, Bruno and Bastard, Karine and Sperandio, Olivier and Fahraeus, Robin and Poyet, Jean-Luc and Calvo, Fabien and Deprez, Benoit and Miteva, Maria}, + number = {2}, + pages = {103--122}, + volume = {9}, + doi = {10.2174/138920108783955218}, + issn = {13892010}, + keywords = {docking, drug discovery, protein-protein interaction, scoring, structure-based drug design, virtual ligand screening} +} + +@article{Ra2004InTio, + title = {{In te g ra tin g F ra g m e n t As s e m bly a n d B io p h y s ic a l Me th o d s in th e Ch e m ic a l Ad v a n c e m e n t o f S m a ll-Mo le c u le An ta g o n is ts o f IL-2 : An Ap p ro a c h fo r In h ibitin g P ro te in - P ro te in In te ra c tio}}, + year = {2004}, + author = {Ra, C and Oslob, D and Br, C and Mcdowell, Rober S and Ra, Mike}, + pages = {3111--3130} +} + +@article{Vassilev2004InMDM2, + title = {{In Vivo Activation of the p53 Pathway by Small-Molecule Antagonists of MDM2}}, + year = {2004}, + journal = {Science}, + author = {Vassilev, Lyubomir T. and Vu, Binh T. and Graves, Bradford and Carvajal, Daisy and Podlaski, Frank and Filipovic, Zoran and Kong, Norman and Kammlott, Ursula and Lukacs, Christine and Klein, Christian and Fotouhi, Nader and Liu, Emily A.}, + number = {5659}, + pages = {844--848}, + volume = {303}, + doi = {10.1126/science.1092472}, + issn = {00368075}, + pmid = {14704432} +} + +@article{Loberg2007InCastration, + title = {{In vivo evaluation of AT-101 (R-(-)-gossypol acetic acid) in androgen-independent growth of VCaP prostate cancer cells in combination with surgical castration}}, + year = {2007}, + journal = {Neoplasia}, + author = {Loberg, Robert D. and McGregory, Natalie and Ying, Chi and Sargent, Erin and Pienta, Kenneth J.}, + number = {12}, + pages = {1030--1037}, + volume = {9}, + doi = {10.1593/neo.07778}, + issn = {14765586}, + keywords = {Apoptosis, BH3 domain, Bcl-2, Hormone refractory, Orchiectomy} +} + +@article{Chaparro-Riggers2012IncreasingPCSK9, + title = {{Increasing serum half-life and extending cholesterol lowering in vivo by engineering antibody with pH-sensitive binding to PCSK9}}, + year = {2012}, + journal = {Journal of Biological Chemistry}, + author = {Chaparro-Riggers, Javier and Liang, Hong and DeVay, Rachel M. and Bai, Lanfang and Sutton, Janette E. and Chen, Wei and Geng, Tao and Lindquist, Kevin and Casas, Meritxell Galindo and Boustany, Leila M. and Brown, Colleen L. and Chabot, Jeffrey and Gomes, Bruce and Garzone, Pamela and Rossi, Andrea and Strop, Pavel and Shelton, Dave and Pons, Jaume and Rajpal, Arvind}, + number = {14}, + pages = {11090--11097}, + volume = {287}, + doi = {10.1074/jbc.M111.319764}, + issn = {00219258} +} + +@article{Mok2014IncreasingScreening, + title = {{Increasing the coverage of medicinal chemistry-relevant space in commercial fragments screening}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Mok, N. Yi and Brenk, Ruth and Brown, Nathan}, + number = {1}, + pages = {79--85}, + volume = {54}, + doi = {10.1021/ci400632y}, + issn = {15499596} +} + +@article{DAguanno2020InhibitionCancer, + title = {{Inhibition of Anti-Apoptotic Bcl-2 Proteins in Preclinical and Clinical Studies: Current Overview in Cancer}}, + year = {2020}, + journal = {Cells}, + author = {D'Aguanno, Simona and Del Bufalo, Donatella}, + number = {5}, + volume = {9}, + doi = {10.3390/cells9051287}, + issn = {20734409}, + pmid = {32455818}, + keywords = {Bcl-2, cancer, inhibitors} +} + +@article{Cheng2013InhibitionGlioblastoma, + title = {{Inhibition of BET bromodomain targets genetically diverse glioblastoma}}, + year = {2013}, + journal = {Clinical Cancer Research}, + author = {Cheng, Zhixiang and Gong, Yuanying and Ma, Yufang and Lu, Kaihua and Lu, Xiang and Pierce, Larry A. and Thompson, Reid C. and Muller, Susanne and Knapp, Stefan and Wang, Jialiang}, + number = {7}, + pages = {1748--1759}, + volume = {19}, + doi = {10.1158/1078-0432.CCR-12-3066}, + issn = {10780432} +} + +@article{Dawson2011InhibitionLeukaemia, + title = {{Inhibition of BET recruitment to chromatin as an effective treatment for MLL-fusion leukaemia}}, + year = {2011}, + journal = {Nature}, + author = {Dawson, Mark A. and Prinjha, Rab K. and Dittmann, Antje and Giotopoulos, George and Bantscheff, Marcus and Chan, Wai In and Robson, Samuel C. and Chung, Chun Wa and Hopf, Carsten and Savitski, Mikhail M. and Huthmacher, Carola and Gudgin, Emma and Lugo, Dave and Beinke, Soren and Chapman, Trevor D. and Roberts, Emma J. and Soden, Peter E. and Auger, Kurt R. and Mirguet, Olivier and Doehner, Konstanze and Delwel, Ruud and Burnett, Alan K. and Jeffrey, Phillip and Drewes, Gerard and Lee, Kevin and Huntly, Brian J.P. and Kouzarides, Tony}, + number = {7370}, + pages = {529--533}, + volume = {478}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nature10509}, + doi = {10.1038/nature10509}, + issn = {00280836} +} + +@article{Dawson2011InhibitionLeukaemiab, + title = {{Inhibition of BET recruitment to chromatin as an effective treatment for MLL-fusion leukaemia}}, + year = {2011}, + journal = {Nature}, + author = {Dawson, Mark A. and Prinjha, Rab K. and Dittmann, Antje and Giotopoulos, George and Bantscheff, Marcus and Chan, Wai In and Robson, Samuel C. and Chung, Chun Wa and Hopf, Carsten and Savitski, Mikhail M. and Huthmacher, Carola and Gudgin, Emma and Lugo, Dave and Beinke, Soren and Chapman, Trevor D. and Roberts, Emma J. and Soden, Peter E. and Auger, Kurt R. and Mirguet, Olivier and Doehner, Konstanze and Delwel, Ruud and Burnett, Alan K. and Jeffrey, Phillip and Drewes, Gerard and Lee, Kevin and Huntly, Brian J.P. and Kouzarides, Tony}, + number = {7370}, + pages = {529--533}, + volume = {478}, + doi = {10.1038/nature10509}, + issn = {00280836} +} + +@article{Cashman2010InhibitionMaleimides, + title = {{Inhibition of Bfl-1 with N-aryl maleimides}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Cashman, John R. and MacDonald, Mary and Ghirmai, Senait and Okolotowicz, Karl J. and Sergienko, Eduard and Brown, Brock and Garcia, Xochella and Zhai, Dayong and Dahl, Russell and Reed, John C.}, + number = {22}, + pages = {6560--6564}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.09.046}, + issn = {0960894X}, + keywords = {Anti-cancer agents, Bfl-1 inhibitors, High-throughput screening, N-Aryl maleimides} +} + +@article{White2003InhibitionInteraction, + title = {{Inhibition of human papillomavirus DNA replication by small molecule antagonists of the E1-E2 protein interaction}}, + year = {2003}, + journal = {Journal of Biological Chemistry}, + author = {White, Peter W. and Titolo, Steve and Brault, Karine and Thauvette, Louise and Pelletier, Alex and Welchner, Ewald and Bourgon, Lise and Doyon, Louise and Ogilvie, William W. and Yoakim, Christiane and Cordingley, Michael G. and Archambault, Jacques}, + number = {29}, + pages = {26765--26772}, + volume = {278}, + doi = {10.1074/jbc.M303608200}, + issn = {00219258} +} + +@article{Sijbrands2012InhibitionHypercholesterolaemia, + title = {{Inhibition of PCSK9 in familial hypercholesterolaemia}}, + year = {2012}, + journal = {The Lancet}, + author = {Sijbrands, Eric J.G.}, + number = {9836}, + pages = {6--7}, + volume = {380}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/S0140-6736(12)60814-9}, + doi = {10.1016/S0140-6736(12)60814-9}, + issn = {1474547X} +} + +@article{Grillo-Bosch2013InhibitionInteractions, + title = {{Inhibition of PDZ domain-mediated interactions}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Grillo-Bosch, Dolors and Choquet, Daniel and Sainlos, Matthieu}, + number = {4}, + pages = {e531-e540}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.10.003}, + doi = {10.1016/j.ddtec.2012.10.003}, + issn = {17406749} +} + +@article{Kwon2012InhibitionMolecule, + title = {{Inhibition of VEGF transcription through blockade of the hypoxia inducible factor-1{$\alpha$}-p300 interaction by a small molecule}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Kwon, Hyuk Sung and Kim, Da Rae and Yang, Eun Gyeong and Park, Yong Keun and Ahn, Hee Chul and Min, Sun Joon and Ahn, Dae Ro}, + number = {16}, + pages = {5249--5252}, + volume = {22}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2012.06.054}, + doi = {10.1016/j.bmcl.2012.06.054}, + issn = {0960894X}, + keywords = {Fluorescence polarization, HIF-1{$\alpha$}-p300 interaction, Inhibitor, Protein-protein interaction, VEGF} +} + +@article{Azzarito2013InhibitionMolecules, + title = {{Inhibition of {$\alpha$}-helix-mediated protein-protein interactions using designed molecules}}, + year = {2013}, + journal = {Nature Chemistry}, + author = {Azzarito, Valeria and Long, Kérya and Murphy, Natasha S. and Wilson, Andrew J.}, + number = {3}, + pages = {161--173}, + volume = {5}, + doi = {10.1038/nchem.1568}, + issn = {17554330} +} + +@article{Cesa2013InhibitorsComplexes, + title = {{Inhibitors of difficult protein-protein interactions identified by high-throughput screening of multiprotein complexes}}, + year = {2013}, + journal = {ACS Chemical Biology}, + author = {Cesa, Laura C. and Patury, Srikanth and Komiyama, Tomoko and Ahmad, Atta and Zuiderweg, Erik R.P. and Gestwicki, Jason E.}, + number = {9}, + pages = {1988--1997}, + volume = {8}, + doi = {10.1021/cb400356m}, + issn = {15548929} +} + +@article{Meanwell2009InhibitorsPatterns, + title = {{Inhibitors of HIV-1 attachment. Part 2: An initial survey of indole substitution patterns}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Meanwell, Nicholas A. and Wallace, Owen B. and Fang, Haiquan and Wang, Henry and Deshpande, Milind and Wang, Tao and Yin, Zhiwei and Zhang, Zhongxing and Pearce, Bradley C. and James, Jennifer and Yeung, Kap Sun and Qiu, Zhilei and Kim Wright, J. J. and Yang, Zheng and Zadjura, Lisa and Tweedie, Donald L. and Yeola, Suresh and Zhao, Fang and Ranadive, Sunanda and Robinson, Brett A. and Gong, Yi Fei and Wang, Hwei Gene Heidi and Blair, Wade S. and Shi, Pei Yong and Colonno, Richard J. and Lin, Pin fang}, + number = {7}, + pages = {1977--1981}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.02.040}, + issn = {0960894X}, + keywords = {HIV-1 attachment inhibitor, HIV-1 entry inhibitor, HIV-1 gp120 inhibitor, HIV-1 inhibitor} +} + +@article{Wang2009InhibitorsDerivatives, + title = {{Inhibitors of HIV-1 attachment. Part 4: A study of the effect of piperazine substitution patterns on antiviral potency in the context of indole-based derivatives}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Wang, Tao and Kadow, John F. and Zhang, Zhongxing and Yin, Zhiwei and Gao, Qi and Wu, Dedong and Parker, Dawn Di Giugno and Yang, Zheng and Zadjura, Lisa and Robinson, Brett A. and Gong, Yi Fei and Blair, Wade S. and Shi, Pei Yong and Yamanaka, Gregory and Lin, Pin Fang and Meanwell, Nicholas A.}, + number = {17}, + pages = {5140--5145}, + volume = {19}, + doi = {10.1016/j.bmcl.2009.07.076}, + issn = {0960894X}, + keywords = {HIV, HIV attachment, Piperazine, gp120} +} + +@article{Silvian2013InhibitorsChallenge, + title = {{Inhibitors of protein-protein interactions: New methodologies to tackle this challenge}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Silvian, Laura and Enyedy, Istvan and Kumaravel, Gnanasambandam}, + number = {4}, + pages = {e509-e515}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.10.004}, + doi = {10.1016/j.ddtec.2012.10.004}, + issn = {17406749} +} + +@article{Roseler2012InsightFalciparum, + title = {{Insight into the selenoproteome of the malaria parasite Plasmodium falciparum}}, + year = {2012}, + journal = {Antioxidants and Redox Signaling}, + author = {R{\"{o}}seler, Anne and Prieto, Judith Helena and Iozef, Rimma and Hecker, Beate and Schirmer, Rolf Heiner and K{\"{u}}lzer, Simone and Przyborski, Jude and Rahlfs, Stefan and Becker, Katja}, + number = {4}, + pages = {534--543}, + volume = {17}, + doi = {10.1089/ars.2011.4276}, + issn = {15230864} +} + +@article{Perot2013InsightsPrediction, + title = {{Insights into an Original Pocket-Ligand Pair Classification: A Promising Tool for Ligand Profile Prediction}}, + year = {2013}, + journal = {PLoS ONE}, + author = {P{\'{e}}rot, Stéphanie and Regad, Leslie and Reyn{\`{e}}s, Christelle and Sp{\'{e}}randio, Olivier and Miteva, Maria A. and Villoutreix, Bruno O. and Camproux, Anne Claude}, + number = {6}, + volume = {8}, + doi = {10.1371/journal.pone.0063730}, + issn = {19326203}, + pmid = {23840299} +} + +@article{Perot2013InsightsPredictionb, + title = {{Insights into an Original Pocket-Ligand Pair Classification: A Promising Tool for Ligand Profile Prediction}}, + year = {2013}, + journal = {PLoS ONE}, + author = {P{\'{e}}rot, Stéphanie and Regad, Leslie and Reyn{\`{e}}s, Christelle and Sp{\'{e}}randio, Olivier and Miteva, Maria A. and Villoutreix, Bruno O. and Camproux, Anne Claude}, + number = {6}, + volume = {8}, + doi = {10.1371/journal.pone.0063730}, + issn = {19326203} +} + +@article{Kabuta2010InsulinActivity, + title = {{Insulin receptor substrate-3, interacting with Bcl-3, enhances p50 NF-{$\kappa$}B activity}}, + year = {2010}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Kabuta, Tomohiro and Hakuno, Fumihiko and Cho, Yoshitake and Yamanaka, Daisuke and Chida, Kazuhiro and Asano, Tomoichiro and Wada, Keiji and Takahashi, Shin Ichiro}, + number = {3}, + pages = {697--702}, + volume = {394}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.bbrc.2010.03.054}, + doi = {10.1016/j.bbrc.2010.03.054}, + issn = {0006291X}, + keywords = {Bcl-3, Cell death, Insulin receptor substrate (IRS)-3, NF-{$\kappa$}B, Tumor necrosis factor (TNF)-{$\alpha$}} +} + +@misc{Mourad2020InteractionCOVID-19, + title = {{Interaction between RAAS inhibitors and ACE2 in the context of COVID-19}}, + year = {2020}, + booktitle = {Nature Reviews Cardiology}, + author = {Mourad, Jean Jacques and Levy, Bernard I.}, + publisher = {Nature Research}, + doi = {10.1038/s41569-020-0368-x}, + issn = {17595010} +} + +@article{Karimova2005InteractionAnalysis, + title = {{Interaction network among Escherichia coli membrane proteins involved in cell division as revealed by bacterial two-hybrid analysis}}, + year = {2005}, + journal = {Journal of Bacteriology}, + author = {Karimova, Gouzel and Dautin, Nathalie and Ladant, Daniel}, + doi = {10.1128/JB.187.7.2233-2243.2005}, + issn = {00219193} +} + +@article{Wetzel2009InteractiveHunter, + title = {{Interactive exploration of chemical space with Scaffold Hunter}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Wetzel, Stefan and Klein, Karsten and Renner, Steffen and Rauh, Daniel and Oprea, Tudor I. and Mutzel, Petra and Waldmann, Herbert}, + number = {8}, + pages = {581--583}, + volume = {5}, + doi = {10.1038/nchembio.187}, + issn = {15524469} +} + +@incollection{Preuer2019InterpretableDiscovery, + title = {{Interpretable Deep Learning in Drug Discovery}}, + year = {2019}, + booktitle = {Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)}, + author = {Preuer, Kristina and Klambauer, Günter and Rippmann, Friedrich and Hochreiter, Sepp and Unterthiner, Thomas}, + pages = {331--345}, + volume = {11700 LNCS}, + doi = {10.1007/978-3-030-28954-6{\_}18}, + issn = {16113349}, + arxivId = {1903.02788}, + keywords = {Deep learning, Drug development, Neural networks, Target prediction} +} + +@article{Kuhn2010IntramolecularChemistry, + title = {{Intramolecular hydrogen bonding in medicinal chemistry}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Kuhn, Bernd and Mohr, Peter and Stahl, Martin}, + number = {6}, + pages = {2601--2611}, + volume = {53}, + doi = {10.1021/jm100087s}, + issn = {00222623} +} + +@article{Alex2011IntramolecularSpace, + title = {{Intramolecular hydrogen bonding to improve membrane permeability and absorption in beyond rule of five chemical space}}, + year = {2011}, + journal = {MedChemComm}, + author = {Alex, Alexander and Millan, David S. and Perez, Manuel and Wakenhut, Florian and Whitlock, Gavin A.}, + number = {7}, + pages = {669--674}, + volume = {2}, + doi = {10.1039/c1md00093d}, + issn = {20402503} +} + +@article{deVries2006IntramolecularRegions, + title = {{Intramolecular surface contacts contain information about protein-protein interface regions}}, + year = {2006}, + journal = {Bioinformatics}, + author = {de Vries, Sjoerd J. and Bonvin, Alexandre M.J.J.}, + number = {17}, + pages = {2094--2098}, + volume = {22}, + doi = {10.1093/bioinformatics/btl275}, + issn = {13674803} +} + +@article{Schneider2005IntroductionModels, + title = {{Introduction to molecular recognition models}}, + year = {2005}, + journal = {Protein-Ligand Interactions: From Molecular Recognition to Drug Design}, + author = {Schneider, Hans Jörg}, + pages = {21--50}, + isbn = {9783527601813}, + doi = {10.1002/3527601813.ch2}, + keywords = {Allosteric effects, Binding mechanism, Chelate effect, Cooperativity, Ditopic interactions, Drug design, Flexible hosts, Hole-size concept, Host-guest complexes, Induced fit, Lock-and-Key principle, Molecular recognition models, Polarization effects, Polytopic interactions, Rigid hosts, Supramolecular complexes} +} + +@article{DeVleeschouwer2012InverseDerivatives, + title = {{Inverse design of molecules with optimal reactivity properties: Acidity of 2-naphthol derivatives}}, + year = {2012}, + journal = {Physical Chemistry Chemical Physics}, + author = {De Vleeschouwer, Freija and Yang, Weitao and Beratan, David N. and Geerlings, Paul and De Proft, Frank}, + number = {46}, + pages = {16002--16013}, + volume = {14}, + doi = {10.1039/c2cp42623d}, + issn = {14639076} +} + +@article{Cheng2010InvestigatingMolecules, + title = {{Investigating the correlations among the chemical structures, bioactivity profiles and molecular targets of small molecules}}, + year = {2010}, + journal = {Bioinformatics}, + author = {Cheng, Tiejun and Wang, Yanli and Bryant, Stephen H.}, + number = {22}, + pages = {2881--2888}, + volume = {26}, + doi = {10.1093/bioinformatics/btq550}, + issn = {13674803} +} + +@article{Axerio-Cilies2009InvestigationCompounds, + title = {{Investigation of the incidence of "undesirable" molecular moieties for high-throughput screening compound libraries in marketed drug compounds}}, + year = {2009}, + journal = {European Journal of Medicinal Chemistry}, + author = {Axerio-Cilies, Peter and Casta{\~{n}}eda, Ivan P. and Mirza, Amin and Reynisson, Jóhannes}, + number = {3}, + pages = {1128--1134}, + volume = {44}, + doi = {10.1016/j.ejmech.2008.06.013}, + issn = {02235234}, + keywords = {Drug chemical space, Drug- and lead-like chemical space and drug discov, Toxic and promiscuous chemical moieties} +} + +@article{Yang2010InvestigationMolecules, + title = {{Investigation of the relationship between topology and selectivity for druglike molecules}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Yang, Yidong and Chen, Hongming and Nilsson, Ingemar and Muresan, Sorel and Engkvist, Ola}, + number = {21}, + pages = {7709--7714}, + volume = {53}, + doi = {10.1021/jm1008456}, + issn = {00222623} +} + +@misc{Labbe2013IPPI-DB:Interactions, + title = {{IPPI-DB: A manually curated and interactive database of small non-peptide inhibitors of protein-protein interactions}}, + year = {2013}, + booktitle = {Drug Discovery Today}, + author = {Labb{\'{e}}, Céline M. and Laconde, Guillaume and Kuenemann, Mélaine A. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {19-20}, + pages = {958--968}, + volume = {18}, + isbn = {1878-5832 (Electronic){\textbackslash}r1359-6446 (Linking)}, + doi = {10.1016/j.drudis.2013.05.003}, + issn = {13596446}, + pmid = {23688585} +} + +@article{Labbe2013IPPI-DB:Interactionsb, + title = {{IPPI-DB: A manually curated and interactive database of small non-peptide inhibitors of protein-protein interactions}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Labb{\'{e}}, Céline M. and Laconde, Guillaume and Kuenemann, Mélaine A. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {19-20}, + pages = {958--968}, + volume = {18}, + doi = {10.1016/j.drudis.2013.05.003}, + issn = {13596446} +} + +@article{Labbe2016IPPI-DB:Interactions, + title = {{IPPI-DB: An online database of modulators of protein-protein interactions}}, + year = {2016}, + journal = {Nucleic Acids Research}, + author = {Labb{\'{e}}, Céline M. and Kuenemann, Mélaine A. and Zarzycka, Barbara and Vriend, Gert and Nicolaes, Gerry A.F. and Lagorce, David and Miteva, Maria A. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {D1}, + month = {1}, + pages = {D542-D547}, + volume = {44}, + isbn = {1362-4962 (Electronic) 0305-1048 (Linking)}, + doi = {10.1093/nar/gkv982}, + issn = {13624962}, + pmid = {26432833}, + language = {en} +} + +@article{Labbe2016IPPI-DB:Interactionsb, + title = {{IPPI-DB: An online database of modulators of protein-protein interactions}}, + year = {2016}, + journal = {Nucleic Acids Research}, + author = {Labb{\'{e}}, Céline M. and Kuenemann, Mélaine A. and Zarzycka, Barbara and Vriend, Gert and Nicolaes, Gerry A.F. and Lagorce, David and Miteva, Maria A. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {D1}, + pages = {D542-D547}, + volume = {44}, + doi = {10.1093/nar/gkv982}, + issn = {13624962} +} + +@article{Labbe2016IPPI-DB:Interactionsc, + title = {{iPPI-DB: an online database of modulators of protein–protein interactions}}, + year = {2016}, + journal = {Nucleic Acids Research}, + author = {Labb{\'{e}}, Céline M. and Kuenemann, Mélaine A. and Zarzycka, Barbara and Vriend, Gert and Nicolaes, Gerry A. F. and Lagorce, David and Miteva, Maria A. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {D1}, + month = {1}, + pages = {D542-D547}, + volume = {44}, + doi = {10.1093/nar/gkv982}, + issn = {0305-1048, 1362-4962}, + language = {en} +} + +@article{Turner2010IRefWeb:Evidence., + title = {{iRefWeb: interactive analysis of consolidated protein interaction data and their supporting evidence.}}, + year = {2010}, + journal = {Database : the journal of biological databases and curation}, + author = {Turner, Brian and Razick, Sabry and Turinsky, Andrei L. and Vlasblom, James and Crowdy, Edgard K. and Cho, Emerson and Morrison, Kyle and Donaldson, Ian M. and Wodak, Shoshana J.}, + pages = {1--15}, + volume = {2010}, + doi = {10.1093/database/baq023}, + issn = {17580463} +} + +@article{Hardcastle2005Isoindolinone-basedInteraction, + title = {{Isoindolinone-based inhibitors of the MDM2-p53 protein-protein interaction}}, + year = {2005}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Hardcastle, Ian R. and Ahmed, Shafiq U. and Atkins, Helen and Calvert, A. Hilary and Curtin, Nicola J. and Farnie, Gillian and Golding, Bernard T. and Griffin, Roger J. and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J. and Kitching, Martin S. and Newell, David R. and Norbedo, Stefano and Northen, Julian S. and Reid, Rebecca J. and Saravanan, K. and Willems, Henriëtte M.G. and Lunec, John}, + number = {5}, + pages = {1515--1520}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.12.061}, + issn = {0960894X}, + keywords = {Cancer, MDM2, Protein-protein interactions, p53} +} + +@article{Hardcastle2005Isoindolinone-basedInteractionb, + title = {{Isoindolinone-based inhibitors of the MDM2-p53 protein-protein interaction}}, + year = {2005}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Hardcastle, Ian R. and Ahmed, Shafiq U. and Atkins, Helen and Calvert, A. Hilary and Curtin, Nicola J. and Farnie, Gillian and Golding, Bernard T. and Griffin, Roger J. and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J. and Kitching, Martin S. and Newell, David R. and Norbedo, Stefano and Northen, Julian S. and Reid, Rebecca J. and Saravanan, K. and Willems, Henriëtte M.G. and Lunec, John}, + number = {5}, + pages = {1515--1520}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.12.061}, + issn = {0960894X}, + keywords = {Cancer, MDM2, Protein-protein interactions, p53} +} + +@misc{J._Med._Chem._2002_Brustle.pdf, + title = {{J.{\_}Med.{\_}Chem.{\_}2002{\_}Br{\"{u}}stle.pdf}} +} + +@article{TangJM070383CInformation, + title = {{JM070383C Supporting Information}}, + author = {Tang, Guozhi and Ding, Ke and Nikolovska-coleska, Zaneta and Yang, Chao-yie and Qiu, Su and Shangary, Sanjeev and Wang, Renxiao and Guo, Jie and Gao, Wei and Meagher, Jennifer and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P and Wang, Shaomeng}, + pages = {1--17} +} + +@article{Zhu2011KFC2:Features, + title = {{KFC2: A knowledge-based hot spot prediction method based on interface solvation, atomic density, and plasticity features}}, + year = {2011}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {Zhu, Xiaolei and Mitchell, Julie C.}, + number = {9}, + pages = {2671--2683}, + volume = {79}, + doi = {10.1002/prot.23094}, + issn = {08873585}, + keywords = {Atomic density, Hot spot, Plasticity, Protein-protein interface, SVM, Solvent accessible surface area} +} + +@misc{KNNDataCamp, + title = {{KNN Classification using Scikit-learn - DataCamp}}, + url = {https://www.datacamp.com/community/tutorials/k-nearest-neighbor-classification-scikit-learn} +} + +@article{Mirza2009KnownSpace, + title = {{Known drug space as a metric in exploring the boundaries of drug-like chemical space}}, + year = {2009}, + journal = {European Journal of Medicinal Chemistry}, + author = {Mirza, Amin and Desai, Radha and Reynisson, Jóhannes}, + number = {12}, + pages = {5006--5011}, + volume = {44}, + doi = {10.1016/j.ejmech.2009.08.014}, + issn = {02235234}, + keywords = {Aryl-amines, Aryl-nitro, Carcinogens, Drug-like chemical space, Halogen atoms and drug development/discovery, Known drug space, Marketed drug compounds, Nitrenium ions, Sulphur atoms} +} + +@article{City2006LOmmentary, + title = {{L Etters / C Ommentary}}, + year = {2006}, + author = {City, Foster}, + number = {2003}, + pages = {2191--2195}, + volume = {2} +} + +@article{Martel2013LargeStudies, + title = {{Large, chemically diverse dataset of log P measurements for benchmarking studies}}, + year = {2013}, + journal = {European Journal of Pharmaceutical Sciences}, + author = {Martel, Sophie and Gillerat, Fabrice and Carosati, Emanuele and Maiarelli, Daniele and Tetko, Igor V. and Mannhold, Raimund and Carrupt, Pierre Alain}, + number = {1-2}, + pages = {21--29}, + volume = {48}, + publisher = {Elsevier B.V.}, + url = {http://dx.doi.org/10.1016/j.ejps.2012.10.019}, + doi = {10.1016/j.ejps.2012.10.019}, + issn = {09280987}, + keywords = {Chemical diversity, Log P, Octanol/water partition coefficients, Ultra high performance liquid chromatography, VolSurf+} +} +@article{martel_large_2012, + title = {{Large, chemically diverse dataset of {\{}logP{\}} measurements for benchmarking studies.}}, + author = {Martel, Sophie and Gillerat, Fabrice and Carosati, Emanuele and Maiarelli, Daniele and Tetko, Igor V and Mannhold, Raimund and Carrupt, Pierre-Alain}, + doi = {10.1016/j.ejps.2012.10.019} +} + +@article{cao_large-scale_2013, + title = {{Large-scale prediction of human kinase-inhibitor interactions using protein sequences and molecular topological structures}}, + year = {2013}, + journal = {Analytica Chimica Acta}, + author = {Cao, Dong Sheng and Zhou, Guang Hua and Liu, Shao and Zhang, Liu Xia and Xu, Qing Song and He, Min and Liang, Yi Zeng}, + pages = {10--18}, + volume = {792}, + doi = {10.1016/j.aca.2013.07.003}, + issn = {00032670}, + keywords = {Binding affinity, Drug-target interactions, Kinase inhibitors, Kinome, Protein kinases, Random forest} +} + +@article{heikamp_large-scale_2011, + title = {{Large-Scale Similarity Search Profiling of {\{}ChEMBL{\}} Compound Data Sets}}, + author = {Heikamp, Kathrin and Bajorath, Jürgen}, + doi = {10.1021/ci200199u}, + keywords = {VLS} +} + +@article{heikamp_large-scale_nodate, + title = {{Large-Scale Similarity Search Profiling of {\{}ChEMBL{\}} Compound Data Sets}}, + author = {Heikamp, K and Bajorath, J} +} + +@article{zhao_lead_2011, + title = {{Lead optimization in the nondrug-like space.}}, + author = {Zhao, Hongyu}, + pages = {158--163}, + volume = {16}, + doi = {10.1016/j.drudis.2010.12.002} +} + +@article{oprea_lead-like_2007, + title = {{Lead-like, drug-like or {\&}quot;Pub-like{\&}quot;: how different are they?}}, + author = {Oprea, Tudor I and Allu, Tharun Kumar and Fara, Dan C and Rad, Ramona F and Ostopovici, Lili and Bologa, Cristian G}, + pages = {113--119}, + volume = {21}, + doi = {10.1007/s10822-007-9105-3} +} + +@article{ben_j_davis_learning_2013, + title = {{Learning from our mistakes: The {\^{a}}€˜unknown knowns{\^{a}}€™ in fragment screening}}, + author = {Davis, Ben J and Erlanson, Daniel A}, + pages = {2844--2852}, + volume = {23}, + doi = {10.1016/j.bmcl.2013.03.028} +} + +@article{chen_lessons_2009, + title = {{Lessons for fragment library design: analysis of output from multiple screening campaigns}}, + author = {Chen, I.-Jen and Hubbard, Roderick E}, + pages = {603--620}, + volume = {23}, + doi = {10.1007/s10822-009-9280-5} +} + +@article{yu_lessons_2017, + title = {{Lessons from (co-)evolution in the docking of proteins and peptides for {\{}CAPRI{\}} Rounds 28-35}}, + author = {Yu, Jinchao and Andreani, Jessica and Ochsenbein, Françoise and Guerois, Raphaël}, + number = {3}, + pages = {378--390}, + volume = {85}, + doi = {10.1002/prot.25180}, + issn = {1097-0134}, + pmid = {27701780}, + keywords = {coevolution, evolutionary information, protein-peptide docking, protein-protein docking, protein-protein interaction, {\{}CAPRI{\}}, {\{}InterEvDock{\}}, {\{}InterEvScore{\}}} +} + +@article{clardy_lessons_2004, + title = {{Lessons from natural molecules}}, + author = {Clardy, Jon and Walsh, Christopher}, + pages = {829--837}, + volume = {432}, + doi = {10.1038/nature03194} +} + +@article{hu_lessons_2011, + title = {{Lessons Learned from Molecular Scaffold Analysis}}, + author = {Hu, Ye and Stumpfe, Dagmar and Bajorath, Jürgen}, + doi = {10.1021/ci200179y}, + keywords = {chemical space} +} + +@article{brenk_lessons_2008, + title = {{Lessons learnt from assembling screening libraries for drug discovery for neglected diseases}}, + author = {Brenk, Ruth and Schipani, Alessandro and James, Daniel and Krasowski, Agata and Gilbert, Ian Hugh and Frearson, Julie and Wyatt, Paul Graham}, + pages = {435--444}, + volume = {3}, + doi = {10.1002/cmdc.200700139} +} + +@article{goodnow_library_2003, + title = {{Library design practices for success in lead generation with small molecule libraries}}, + author = {Goodnow, R A and Guba, W and Haap, W}, + pages = {649--660}, + volume = {6} +} + +@article{reynolds_ligand_2008, + title = {{Ligand Binding Efficiency: Trends, Physical Basis, and Implications}}, + author = {Reynolds, Charles H and Tounge, Brett A and Bembenek, Scott D}, + pages = {2432--2438}, + volume = {51}, + doi = {10.1021/jm701255b} +} + +@article{abad-zapatero_ligand_2010, + title = {{Ligand efficiency indices for an effective mapping of chemico-biological space: the concept of an atlas-like representation}}, + author = {Abad-Zapatero, Cele and Peri{\v{s}}i{\'{c}}, Ognjen and Wass, John and Bento, A PatrÃcia and Overington, John and Al-Lazikani, Bissan and Johnson, Michael E}, + pages = {804--811}, + volume = {15}, + doi = {10.1016/j.drudis.2010.08.004} +} + +@article{quintus_ligand_2009, + title = {{Ligand scaffold hopping combining 3D maximal substructure search and molecular similarity}}, + year = {2009}, + journal = {BMC Bioinformatics}, + author = {Quintus, Flavien and Sperandio, Olivier and Grynberg, Julien and Petitjean, Michel and Tuffery, Pierre}, + pages = {245}, + volume = {10}, + isbn = {1471210510}, + doi = {10.1186/1471-2105-10-245}, + issn = {14712105}, + pmid = {19671127} +} + +@article{de_nanteuil_low_2006, + title = {{Low molecular weight activated protein C inhibitors as a potential treatment for hemophilic disorders}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {De Nanteuil, Guillaume and Gloanec, Philippe and B{\'{e}}guin, Suzette and Giesen, Peter L.A. and Hemker, H. Coenraad and Mennecier, Philippe and Rupin, Alain and Verbeuren, Tony J.}, + number = {17}, + pages = {5047--5050}, + volume = {49}, + doi = {10.1021/jm0606950}, + issn = {00222623}, + keywords = {Benzamidines/chemistry/*pharmacology, Factor {\{}VIIIa{\}}/metabolism, Hemophilia A/*drug therapy, Hemorrhage/*prevention {\&} control, Humans, Molecular Structure, Molecular Weight, Protein C/*antagonists {\&} inhibitors, Serine Proteinase Inhibitors/chemistry/*pharmacol, Structure-Activity Relationship, Thrombin/antagonists {\&} inhibitors/biosynthesis} +} + +@article{vert_machine_2008, + title = {{Machine learning for in silico virtual screening and chemical genomics: new strategies}}, + author = {Vert, Jean-Philippe and Jacob, Laurent}, + pages = {677--685}, + volume = {11} +} + +@article{monge_managing_2006, + title = {{Managing, profiling and analyzing a library of 2.6 million compounds gathered from 32 chemical providers}}, + author = {Monge, Aurélien and Arrault, Alban and Marot, Christophe and Morin-Allory, Luc}, + pages = {389--403}, + volume = {10}, + doi = {10.1007/s11030-006-9033-5} +} + +@article{scheiber_mapping_2009, + title = {{Mapping adverse drug reactions in chemical space.}}, + author = {Scheiber, Josef and Jenkins, Jeremy L and Sukuru, Sai Chetan K and Bender, Andreas and Mikhailov, Dmitri and Milik, Mariusz and Azzaoui, Kamal and Whitebread, Steven and Hamon, Jacques and Urban, Laszlo and Glick, Meir and Davies, John W}, + pages = {3103--3107}, + volume = {52}, + doi = {10.1021/jm801546k} +} + +@article{weitzman_measures_1970, + title = {{Measures of overlap of income distributions of white and Negro families in the United States.}}, + author = {Weitzman, M S}, + volume = {22} +} + +@article{surdo_mechanistic_2011, + title = {{Mechanistic implications for LDL receptor degradation from the PCSK9/LDLR structure at neutral pH}}, + year = {2011}, + journal = {EMBO Reports}, + author = {Surdo, Paola Lo and Bottomley, Matthew J. and Calzetta, Alessandra and Settembre, Ethan C. and Cirillo, Agostino and Pandit, Shilpa and Ni, Yan G. and Hubbard, Brian and Sitlani, Ayesha and Carf{\'{i}}, Andrea}, + number = {12}, + pages = {1300--1305}, + volume = {12}, + doi = {10.1038/embor.2011.205}, + issn = {1469221X}, + keywords = {LDL, PCSK9, hypercholesterolaemia, receptor, structure} +} + +@article{muller_medicinal_2003, + title = {{Medicinal chemistry of target family-directed masterkeys}}, + year = {2003}, + journal = {Drug Discovery Today}, + author = {M{\"{u}}ller, Gerhard}, + number = {15}, + pages = {681--691}, + volume = {8}, + doi = {10.1016/S1359-6446(03)02781-8}, + issn = {13596446}, + keywords = {Drug design, Druggable genome, Medicinal chemistry, Molecular masterkey, Molecular recognition, Privileged structures, Target families, Target family-biased chemistry} +} + +@article{leung_methyl_2012, + title = {{Methyl Effects on Protein–Ligand Binding}}, + author = {Leung, Cheryl S and Leung, Siegfried S F and Tirado-Rives, Julian and Jorgensen, William L}, + pages = {4489--4500}, + volume = {55}, + doi = {10.1021/jm3003697} +} + +@article{thompson_microscale_2011, + title = {{Microscale mesoarrays created by dip-pen nanolithography for screening of protein-protein interactions}}, + author = {Thompson, David G and McKenna, Ekaterina O and Pitt, Andrew and Graham, Duncan}, + doi = {10.1016/j.bios.2011.04.040}, + keywords = {{\{}PPI{\}} exp} +} + +@article{wang_microsoft_2007, + title = {{Microsoft Word - {\{}JM{\}}070383C{\_}Tang{\_}BI33{\_}Supporting{\_}Information{\_}May{\_}7{\_}2007{\_}fina{\ldots}}}, + author = {Wang, Shaomeng}, + pages = {1--17} +} + +@article{de_luca_mining_2012, + title = {{Mining Chemical Reactions Using Neighborhood Behavior and Condensed Graphs of Reactions Approaches.}}, + author = {de Luca, Aurélie and Horvath, Dragos and Marcou, Gilles and Solov{\textbackslash}textbackslash{\&}apos;ev, Vitaly and Varnek, Alexandre}, + doi = {10.1021/ci300149n} +} + +@article{varin_mining_2011, + title = {{Mining for bioactive scaffolds with scaffold networks: improved compound set enrichment from primary screening data.}}, + author = {Varin, Thibault and Schuffenhauer, Ansgar and Ertl, Peter and Renner, Steffen}, + pages = {1528--1538}, + volume = {51}, + doi = {10.1021/ci2000924}, + keywords = {chemical space} +} + +@article{ranu_mining_2009, + title = {{Mining Statistically Significant Molecular Substructures for Efficient Molecular Classification}}, + author = {Ranu, Sayan and Singh, Ambuj K}, + pages = {2537--2550}, + volume = {49}, + doi = {10.1021/ci900035z} +} + +@article{parhofer_mipomersen:_2012, + title = {{Mipomersen: Evidence-based review of its potential in the treatment of homozygous and severe heterozygous familial hypercholesterolemia}}, + year = {2012}, + journal = {Core Evidence}, + author = {Parhofer, Klaus G.}, + pages = {29--38}, + volume = {7}, + doi = {10.2147/CE.S25239}, + issn = {15551741}, + keywords = {Antisense oligonucleotide, Apolipoprotein B, Statin intolerance} +} + +@article{green_and_john_c_nbsp_reed_mitochondria_1998, + title = {{Mitochondria and Apoptosis}}, + author = {{Green} and nbsp Reed, D R}, + pages = {1309--1312}, + volume = {281}, + doi = {10.1126/science.281.5381.1309} +} + +@article{ursu_model-free_2010, + title = {{Model-free drug-likeness from fragments}}, + author = {Ursu, Oleg and Oprea, Tudor I}, + pages = {1387--1394}, + volume = {50}, + doi = {10.1021/ci100202p} +} + +@article{azzaoui_modeling_2007, + title = {{Modeling promiscuity based on in vitro safety pharmacology profiling data}}, + author = {Azzaoui, Kamal and Hamon, Jacques and Faller, Bernard and Whitebread, Steven and Jacoby, Edgar and Bender, Andreas and Jenkins, Jeremy L and Urban, Laszlo}, + pages = {874--880}, + volume = {2}, + doi = {10.1002/cmdc.200700036} +} + +@article{thangudu_modulating_2011, + title = {{Modulating Protein-Protein Interactions with Small Molecules: The Importance of Binding Hotspots.}}, + author = {Thangudu, Ratna Rajesh and Bryant, Stephen H and Panchenko, Anna R and Madej, Thomas}, + doi = {10.1016/j.jmb.2011.12.026} +} + +@article{metz_modulating_2012, + title = {{Modulating protein-protein interactions: from structural determinants of binding to druggability prediction to application.}}, + author = {Metz, Alexander and Ciglia, Emanuele and Gohlke, Holger}, + pages = {4630--4647}, + volume = {18} +} + +@article{maldonado_moldia:_2007, + title = {{MolDiA: A novel molecular diversity analysis tool. 1. Principles and architecture}}, + year = {2007}, + journal = {Journal of Chemical Information and Modeling}, + author = {Maldonado, Ana G. and Doucet, Jean Pierre and Petitjean, Michel and Fan, Bo Tao}, + number = {6}, + pages = {2197--2207}, + volume = {47}, + doi = {10.1021/ci700120v}, + issn = {15499596} +} + +@article{faivre_molecular_2007, + title = {{Molecular basis for sunitinib efficacy and future clinical development}}, + author = {Faivre, Sandrine and Demetri, George and Sargent, William and Raymond, Eric}, + pages = {734--745}, + volume = {6}, + doi = {10.1038/nrd2380} +} + +@article{bonsor_molecular_2011, + title = {{Molecular Basis of a Million-Fold Affinity Maturation Process in a Protein-Protein Interaction}}, + author = {Bonsor, Daniel A and Postel, Sandra and Pierce, Brian G and Wang, Ningyan and Zhu, Penny and Buonpane, Rebecca A and Weng, Zhiping and Kranz, David M and Sundberg, Eric J}, + doi = {10.1016/j.jmb.2011.06.009}, + keywords = {{\{}PPI{\}} exp} +} + +@article{lin_molecular_2009, + title = {{Molecular dynamics simulations of the conformational changes in signal transducers and activators of transcription, Stat1 and Stat3}}, + author = {Lin, Jianping and Buettner, Ralf and Yuan, Yate-Ching and Yip, Richard and Horne, David and Jove, Richard and Vaidehi, Nagarajan}, + pages = {347--356}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.08.013} +} + +@article{cross_molecular_2010, + title = {{Molecular fields in drug discovery: getting old or reaching maturity?}}, + author = {Cross, S and Cruciani, G} +} + +@article{cruciani_molecular_2000, + title = {{Molecular fields in quantitative structure-permeation relationships: The VolSurf approach}}, + year = {2000}, + journal = {Journal of Molecular Structure: THEOCHEM}, + author = {Cruciani, G. and Crivori, P. and Carrupt, P. A. and Testa, B.}, + number = {1-2}, + pages = {17--30}, + volume = {503}, + doi = {10.1016/S0166-1280(99)00360-7}, + issn = {01661280}, + keywords = {3D molecular fields, CombyChem databases, Pharmacokinetic properties, VolSurf} +} + +@article{ignatenko_molecular_2012, + title = {{Molecular Library Synthesis Using Complex Substrates: Expanding the Framework of Triterpenoids.}}, + author = {Ignatenko, Vasily A and Han, Yong and Tochtrop, Gregory P}, + doi = {10.1021/jo302211f} +} + +@article{hann_molecular_2011, + title = {{Molecular obesity, potency and other addictions in drug discovery}}, + year = {2011}, + journal = {MedChemComm}, + author = {Hann, Michael M.}, + number = {5}, + pages = {349--355}, + volume = {2}, + doi = {10.1039/c1md00017a}, + issn = {20402503}, + keywords = {PPI} +} + +@article{monti_molecular_2005, + title = {{Molecular profiling of diffuse large B-cell lymphoma identifies robust subtypes including one characterized by host inflammatory response}}, + author = {Monti, S and Savage, K J and Kutok, J L and Feuerhake, F and Kurtin, P and Mihm, M and Wu, B and Pasqualucci, L and Neuberg, D and Aguiar, R C and Dal Cin, P and Ladd, C and Pinkus, G S and Salles, G and Harris, N L and Dalla-Favera, R and Habermann, T M and Aster, J C and Golub, T R and Shipp, M A}, + pages = {1851--1861}, + volume = {105}, + doi = {10.1182/blood-2004-07-2947}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {*Gene Expression Profiling, *Gene Expression Regulation, Antigen, B-Cell/classification/genetics/pathology, B-Cell/genetics, Cluster Analysis, Diffuse/classification/*genetics/*pathology, Humans, Immunity/genetics, Large B-Cell, Lymphoma, Neoplastic, Oxidative Phosphorylation, Receptors, Signal Transduction/genetics} +} + +@article{hamon_2p2ihunter:_2013, + title = {{Molecular properties that influence the oral bioavailability of drug candidates}}, + year = {2002}, + journal = {Journal of Medicinal Chemistry}, + author = {Veber, Daniel F. and Johnson, Stephen R. and Cheng, Hung Yuan and Smith, Brian R. and Ward, Keith W. and Kopple, Kenneth D.}, + number = {12}, + pages = {2615--2623}, + volume = {45}, + doi = {10.1021/jm020017n}, + issn = {00222623} +} + +@article{veber_molecular_2002-1, + title = {{Molecular properties that influence the oral bioavailability of drug candidates}}, + author = {Veber, D F and Johnson, S R and Cheng, H Y and Smith, B R and Ward, K W and Kopple, K D}, + pages = {2615--2623}, + volume = {45}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Pharmacokinetics, Administration, Animals, Biological Availability, Cross-Over Studies, Databases, Factual, Humans, Hydrogen Bonding, In Vitro Techniques, Lipid Bilayers, Liver/metabolism, Male, Microsomes, Molecular Structure, Molecular Weight, Oral, Permeability, Rats, Sprague-Dawley, Structure-Activity Relationship} +} + +@article{veber_molecular_2002, + title = {{Molecular properties that influence the oral bioavailability of drug candidates.}}, + author = {Veber, Daniel F and Johnson, Stephen R and Cheng, Hung-Yuan and Smith, Brian R and Ward, Keith W and Kopple, Kenneth D}, + pages = {2615--2623}, + volume = {45} +} + +@article{hu_molecular_2010, + title = {{Molecular Scaffolds with High Propensity to Form Multi-Target Activity Cliffs}}, + author = {Hu, Ye and Bajorath, Jürgen}, + pages = {500--510}, + volume = {50}, + doi = {10.1021/ci100059q} +} + +@article{eckert_molecular_2007, + title = {{Molecular similarity analysis in virtual screening: foundations, limitations and novel approaches}}, + author = {Eckert, Hanna and Bajorath, Jürgen}, + pages = {225--233}, + volume = {12}, + doi = {10.1016/j.drudis.2007.01.011} +} + +@article{ciubotariu_molecular_2004, + title = {{Molecular van der Waals space and topological indices from the distance matrix}}, + author = {Ciubotariu, Dan and Medeleanu, Mihai and Vlaia, Vicentiu and Olariu, Tudor and Ciubotariu, Ciprian and Dragos, Dan and Corina, Seiman}, + pages = {1053--1078}, + volume = {9} +} + +@article{awale_mqn-mapplet:_2013, + title = {{MQN-mapplet: Visualization of chemical space with interactive maps of DrugBank, ChEMBL, PubChem, GDB-11, and GDB-13}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Awale, Mahendra and Van Deursen, Ruud and Reymond, Jean Louis}, + number = {2}, + pages = {509--518}, + volume = {53}, + doi = {10.1021/ci300513m}, + issn = {15499596} +} + +@article{hammoudeh_multiple_2009, + title = {{Multiple independent binding sites for small-molecule inhibitors on the oncoprotein c-Myc}}, + year = {2009}, + journal = {Journal of the American Chemical Society}, + author = {Hammoudeh, Dalia I. and Follis, Ariele Viacava and Prochownik, Edward V. and Metallo, Steven J.}, + number = {21}, + pages = {7390--7401}, + volume = {131}, + doi = {10.1021/ja900616b}, + issn = {00027863} +} + +@article{ben_nasr_multiple_2013, + title = {{Multiple structures for virtual ligand screening: defining binding site properties-based criteria to optimize the selection of the query.}}, + author = {Ben Nasr, Nesrine and Guillemain, Hélène and Lagarde, Nathalie and Zagury, Jean-François and Montes, Matthieu}, + pages = {293--311}, + volume = {53}, + doi = {10.1021/ci3004557} +} + +@article{burdick_n-benzoyl_2004, + title = {{N-Benzoyl amino acids as {\{}ICAM{\}}/{\{}LFA{\}}-1 inhibitors. Part 2: Structure–activity relationship of the benzoyl moiety}}, + author = {Burdick, Daniel J and Marsters Jr., James C and Aliagas-Martin, Ignacio and Stanley, Mark and Beresini, Maureen and Clark, Kevin and McDowell, Robert S and Gadek, Thomas R}, + pages = {2055--2059}, + volume = {14}, + doi = {10.1016/j.bmcl.2004.02.046} +} + +@article{breaker_natural_2004, + title = {{Natural and engineered nucleic acids as tools to explore biology}}, + author = {Breaker, Ronald R}, + pages = {838--845}, + volume = {432}, + doi = {10.1038/nature03195} +} + +@article{thomas_natural_2011, + title = {{Natural product-like synthetic libraries}}, + author = {Thomas, Gemma L and Johannes, Charles W}, + doi = {10.1016/j.cbpa.2011.05.022}, + keywords = {{\{}PPI{\}} lib} +} + +@article{ertl_natural_2008, + title = {{Natural Product-likeness Score and Its Application for Prioritization of Compound Libraries}}, + author = {Ertl, Peter and Roggo, Silvio and Schuffenhauer, Ansgar}, + pages = {68--74}, + volume = {48}, + doi = {10.1021/ci700286x} +} + +@article{over_natural-product-derived_2012, + title = {{Natural-product-derived fragments for fragment-based ligand discovery}}, + author = {Over, Björn and Wetzel, Stefan and Gr{\"{u}}tter, Christian and Nakai, Yasushi and Renner, Steffen and Rauh, Daniel and Waldmann, Herbert}, + pages = {21--28}, + volume = {5}, + doi = {10.1038/nchem.1506} +} + +@article{lipinski_navigating_2004, + title = {{Navigating chemical space for biology and medicine.}}, + author = {Lipinski, Christopher and Hopkins, Andrew}, + pages = {855--861}, + volume = {432}, + doi = {10.1038/nature03193} +} + +@article{chooi_navigating_2012, + title = {{Navigating the fungal polyketide chemical space: From genes to molecules}}, + year = {2012}, + journal = {Journal of Organic Chemistry}, + author = {Chooi, Yit Heng and Tang, Yi}, + number = {22}, + pages = {9933--9953}, + volume = {77}, + doi = {10.1021/jo301592k}, + issn = {00223263} +} + +@article{shi_navitoclax_2011, + title = {{Navitoclax ({\{}ABT{\}}-263) Accelerates Apoptosis during Drug-Induced Mitotic Arrest by Antagonizing Bcl-{\{}xL{\}}}}, + author = {Shi, J and Zhou, Y and Huang, H C and Mitchison, T J}, + pages = {4518--4526}, + volume = {71}, + doi = {10.1158/0008-5472.CAN-10-4336} +} + +@article{marlar_neonatal_1990, + title = {{Neonatal purpura fulminans due to homozygous protein C or protein S deficiencies}}, + author = {Marlar, R A and Neumann, A}, + pages = {299--309}, + volume = {16}, + doi = {10.1055/s-2007-1002683}, + issn = {0094-6176 (Print) 0094-6176 (Linking)}, + keywords = {*Protein C Deficiency, Glycoproteins/*deficiency/genetics, Homozygote, Humans, Infant, Newborn, Protein C/genetics, Protein S, Purpura/congenital/*genetics/pathology, Skin Diseases/congenital/*genetics/pathology} +} + +@article{hopkins_network_2008, + title = {{Network pharmacology: the next paradigm in drug discovery}}, + author = {Hopkins, Andrew L}, + pages = {682--690}, + volume = {4}, + doi = {10.1038/nchembio.118} +} + +@article{garcia-garcia_networks_2012, + title = {{Networks of {\{}ProteinProtein{\}} Interactions: From Uncertainty to Molecular Details}}, + author = {Garc{\'{i}}a-Garc{\'{i}}a, Javier and Bonet, Jaume and Guney, Emre and Fornes, Oriol and Planas, Joan and Oliva, Baldo}, + pages = {342--362}, + volume = {31}, + doi = {10.1002/minf.201200005} +} + +@article{hasegawa_new_2012, + title = {{New description of protein-ligand interactions using a spherical self-organizing map.}}, + author = {Hasegawa, Kiyoshi and Funatsu, Kimito}, + pages = {5410--5415}, + volume = {20}, + doi = {10.1016/j.bmc.2012.03.041} +} + +@article{noauthor_new_2004, + title = {{New horizons in chemical space.}}, + pages = {375}, + volume = {3}, + doi = {10.1038/nrd1401} +} + +@article{maingot_new_2010, + title = {{New non-hydroxamic ADAMTS-5 inhibitors based on the 1,2,4-triazole-3-thiol scaffold}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Maingot, Lucie and Leroux, Florence and Landry, Valérie and Dumont, Julie and Nagase, Hideaki and Villoutreix, Bruno and Sperandio, Olivier and Deprez-Poulain, Rebecca and Deprez, Benoit}, + number = {21}, + pages = {6213--6216}, + volume = {20}, + isbn = {1464-3405 (Electronic){\textbackslash}r0960-894X (Linking)}, + doi = {10.1016/j.bmcl.2010.08.108}, + issn = {0960894X}, + pmid = {20846863}, + keywords = {1,2,4-Triazol-3-thiol, ADAMTS-5, Metalloprotease, Triazol-5-thiol} +} + +@article{kortagere_new_2008, + title = {{New Predictive Models for Blood–Brain Barrier Permeability of Drug-like Molecules}}, + author = {Kortagere, Sandhya and Chekmarev, Dmitriy and Welsh, William J and Ekins, Sean}, + pages = {1836--1845}, + volume = {25}, + doi = {10.1007/s11095-008-9584-5} +} + +@article{de_luca_new_2013, + title = {{New scaffolds of natural origin as Integrase-{\{}LEDGF{\}}/p75 interaction inhibitors: Virtual screening and activity assays.}}, + author = {De Luca, Laura and Morreale, Francesca and Christ, Frauke and Debyser, Zeger and Ferro, Stefania and Gitto, Rosaria}, + pages = {405--411}, + volume = {68C}, + doi = {10.1016/j.ejmech.2013.07.025} +} + +@misc{universitaaposdegli_studi_di_milano_new_2009, + title = {{New Smac Mimetic Compounds as Apoptosis Inducers}}, + pages = {C07D 487/ 04 A I; A61K 31/ 5517 A I; A61P 35/ 00 A} +} + +@article{baell_new_2010, + title = {{New substructure filters for removal of pan assay interference compounds (PAINS) from screening libraries and for their exclusion in bioassays}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Baell, Jonathan B. and Holloway, Georgina A.}, + number = {7}, + pages = {2719--2740}, + volume = {53}, + doi = {10.1021/jm901137j}, + issn = {00222623}, + keywords = {Databases, Drug Evaluation, Factual, High-Throughput Screening Assays/*methods, Preclinical/*methods, Reproducibility of Results} +} + +@article{sahebkar_new_2013, + title = {{New Therapies Targeting {\{}apoB{\}} Metabolism for High-Risk Patients with Inherited Dyslipidaemias: What Can the Clinician Expect?}}, + author = {Sahebkar, Amirhossein and Watts, Gerald F}, + doi = {10.1007/s10557-013-6479-4} +} + +@article{moe_notitle_2012, + title = {{No Title}}, + author = {MOE, M O E} +} + +@book{noauthor_notitle_2010, + title = {{No Title}}, + publisher = {Humana Press}, + isbn = {978-1-60761-839-3} +} + +@article{hartman_non-peptide_1992, + title = {{Non-peptide fibrinogen receptor antagonists. 1. Discovery and design of exosite inhibitors}}, + author = {Hartman, G D and Egbertson, M S and Halczenko, W and Laswell, W L and Duggan, M E and Smith, R L and Naylor, A M and Manno, P D and Lynch, R J and Zhang, G}, + pages = {4640--4642}, + volume = {35} +} + +@article{azmi_non-peptidic_2009, + title = {{Non-peptidic small molecule inhibitors against Bcl-2 for cancer therapy}}, + author = {Azmi, Asfar S and Mohammad, Ramzi M}, + pages = {13--21}, + volume = {218}, + doi = {10.1002/jcp.21567} +} + +@article{park_non-peptidic_2005, + title = {{Non-peptidic small molecule inhibitors of XIAP}}, + year = {2005}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Park, Cheol Min and Sun, Chaohong and Olejniczak, Edward T. and Wilson, Alan E. and Meadows, Robert P. and Betz, Stephen F. and Elmore, Steven W. and Fesik, Stephen W.}, + number = {3}, + pages = {771--775}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.11.010}, + issn = {0960894X}, + keywords = {SMAC mimetics, XIAP inhibitors} +} + +@article{rishton_nonleadlikeness_2003, + title = {{Nonleadlikeness and leadlikeness in biochemical screening.}}, + author = {Rishton, Gilbert M}, + pages = {86--96}, + volume = {8} +} + +@article{sun_nonpeptidic_2010, + title = {{Nonpeptidic and potent small-molecule inhibitors of {\{}cIAP{\}}-1/2 and {\{}XIAP{\}} proteins}}, + author = {Sun, Haiying and Lu, Jianfeng and Liu, Liu and Yi, Han and Qiu, Su and Yang, Chao-Yie and Deschamps, Jeffrey R and Wang, Shaomeng}, + pages = {6361--6367}, + volume = {53}, + doi = {10.1021/jm100487z} +} + +@article{leonard_novel_2006, + title = {{Novel 1,4-benzodiazepine-2,5-diones as Hdm2 antagonists with improved cellular activity}}, + author = {Leonard, Kristi and Marugan, Juan Jose and Raboisson, Pierre and Calvo, Raul and Gushue, Joan M and Koblish, Holly K and Lattanze, Jennifer and Zhao, Shuyuan and Cummings, Maxwell D and Player, Mark R and Maroney, Anna C and Lu, Tianbao}, + pages = {3463--3468}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.04.009} +} + +@article{rosen_novel_2009, + title = {{Novel Chemical Space Exploration via Natural Products}}, + author = {Ros{\'{e}}n, Josefin and Gottfries, Johan and Muresan, Sorel and Backlund, Anders and Oprea, Tudor I}, + pages = {1953--1962}, + volume = {52}, + doi = {10.1021/jm801514w} +} + +@misc{f_hoffmann-la_roche_ag_novel_2005, + title = {{Novel Cis-Imidazolines}}, + pages = {A61K 31/ 4164 A I; A61K 31/ 496 A I; A61K 31/ 5377} +} + +@article{li_novel_2009, + title = {{Novel cyclic-imide peptidomimetics as aminopeptidase N inhibitors. Design, chemistry and activity evaluation. Part I}}, + author = {Li, Qianbin and Fang, Hao and Wang, Xuejian and Hu, Liping and Xu, Wenfang}, + pages = {4819--4825}, + volume = {44}, + doi = {10.1016/j.ejmech.2009.07.022} +} + +@article{du_novel_2012, + title = {{Novel Domain Interaction Regulates Secretion of Proprotein Convertase Subtilisin/Kexin Type 9 ({\{}PCSK{\}}9) Protein}}, + author = {Du, Fen and Hui, Yvonne and Zhang, Michelle and Linton, MacRae F and Fazio, Sergio and Fan, Daping}, + pages = {6--7}, + volume = {380}, + doi = {10.1016/S0140-6736(12)60814-9} +} + +@article{lee_novel_2010, + title = {{Novel pyrrolopyrimidine-based {$\alpha$}-helix mimetics: Cell-permeable inhibitors of protein-protein interactions}}, + year = {2011}, + journal = {Journal of the American Chemical Society}, + author = {Lee, Ji Hoon and Zhang, Qi and Jo, Sunhwan and Chai, Sergio C. and Oh, Misook and Im, Wonpil and Lu, Hua and Lim, Hyun Suk}, + number = {4}, + pages = {676--679}, + volume = {133}, + doi = {10.1021/ja108230s}, + issn = {00027863} +} + +@article{park_novel_2013, + title = {{Novel Small-Molecule Inhibitors of Bcl-{\{}XL{\}} to Treat Lung Cancer}}, + author = {Park, D and Magis, A T and Li, R and Owonikoko, T K and Sica, G L and Sun, S Y and Ramalingam, S S and Khuri, F R and Curran, W J and Deng, X}, + pages = {5485--5496}, + volume = {73}, + doi = {10.1158/0008-5472.CAN-12-2272} +} + +@article{de_souza_novel_2009, + title = {{Novel therapeutic modalities to address nondrugable protein interaction targets}}, + year = {2009}, + journal = {Neuropsychopharmacology}, + author = {De Souza, Errol B. and Cload, Sharon T. and Pendergrast, Patrick Shannon and Sah, Dinah W Y}, + number = {1}, + pages = {142--158}, + volume = {34}, + doi = {10.1038/npp.2008.115}, + issn = {0893133X}, + keywords = {Antibodies, Antisense, Aptamers, Protein-protein interaction, Target validation, siRNA} +} + +@article{agarwal_novelty_2013, + title = {{Novelty in the target landscape of the pharmaceutical industry}}, + author = {Agarwal, Pankaj and Sanseau, Philippe and Cardon, Lon R}, + pages = {575--576}, + volume = {12}, + doi = {10.1038/nrd4089} +} + +@article{hergenrother_obtaining_2006, + title = {{Obtaining and screening compound collections: a user{\&}apos;s guide and a call to chemists}}, + author = {HERGENROTHER, P}, + pages = {213--218}, + volume = {10}, + doi = {10.1016/j.cbpa.2006.04.005} +} + +@article{adler_oligophenylenaminones_2011, + title = {{Oligophenylenaminones as scaffolds for {$\alpha$}-helix mimicry.}}, + author = {Adler, Marc J and Hamilton, Andrew D}, + pages = {7040--7047}, + volume = {76}, + doi = {10.1021/jo200917d} +} + +@article{price_silico_2012, + title = {{On silico peptide microarrays for high-resolution mapping of antibody epitopes and diverse protein-protein interactions}}, + author = {Price, Jordan V and Tangsombatvisit, Stephanie and Xu, Guangyu and Yu, Jiangtao and Levy, Dan and Baechler, Emily C and Gozani, Or and Varma, Madoo and Utz, Paul J and Liu, Chih Long}, + pages = {--}, + doi = {10.1038/nm.2913} +} + +@article{bista_mechanism_2012, + title = {{On the mechanism of action of {\{}SJ{\}}-172550 in inhibiting the interaction of {\{}MDM{\}}4 and p53.}}, + author = {Bista, Michal and Smithson, David and Pecak, Aleksandra and Salinas, Gabriella and Pustelny, Katarzyna and Min, Jaeki and Pirog, Artur and Finch, Kristin and Zdzalik, Michal and Waddell, Brett and Wladyka, Benedykt and Kedracka-Krok, Sylwia and Dyer, Michael A and Dubin, Grzegorz and Guy, R Kiplin}, + pages = {e37518}, + volume = {7}, + doi = {10.1371/journal.pone.0037518} +} + +@article{korb_potential_2012, + title = {{On the Potential and Limitations of Ensemble Docking}}, + author = {Korb, Oliver and Olsson, Tjelvar S G and Bowden, Simon and Hall, Richard John and Verdonk, Marcel L and Liebeschuetz, John W and Cole, Jason}, + pages = {120408104640006}, + doi = {10.1021/ci2005934} +} + +@article{villoutreix_one_2013, + title = {{One hundred thousand mouse clicks down the road: Selected online resources supporting drug discovery collected over a decade}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Villoutreix, Bruno O. and Lagorce, David and Labb{\'{e}}, Céline M. and Sperandio, Olivier and Miteva, Maria A.}, + number = {21-22}, + pages = {1081--1089}, + volume = {18}, + isbn = {1359-6446}, + doi = {10.1016/j.drudis.2013.06.013}, + issn = {13596446}, + pmid = {23831439} +} + +@article{van_rijn_opioid-receptor-heteromer-specific_2010, + title = {{Opioid-receptor-heteromer-specific trafficking and pharmacology}}, + author = {Van Rijn, Richard M and Whistler, Jennifer L and Waldhoer, Maria}, + pages = {73--79}, + volume = {10}, + doi = {10.1016/j.coph.2009.09.007} +} + +@article{du_optimization_2013, + title = {{Optimization of Compound Ranking for Structure-Based Virtual Ligand Screening Using an Established {\{}FRED{\}}-Surflex Consensus Approach.}}, + author = {Du, Jiangfeng and Bleylevens, Ivo W M and Bitorina, Albert V and Wichapong, Kanin and Nicolaes, Gerry A F}, + doi = {10.1111/cbdd.12202} +} + +@article{liu_optimization_2013, + title = {{Optimization of non-{\{}ATP{\}} competitive {\{}CDK{\}}/cyclin groove inhibitors through {\{}REPLACE{\}}-mediated fragment assembly.}}, + author = {Liu, Shu and Premnath, Padmavathy Nandha and Bolger, Joshua K and Perkins, Tracy L and Kirkland, Lindsay O and Kontopidis, George and McInnes, Campbell}, + pages = {1573--1582}, + volume = {56}, + doi = {10.1021/jm3013882} +} + +@article{cohen_orally_2009-1, + title = {{Orally bioavailable antagonists of inhibitor of apoptosis proteins based on an azabicyclooctane scaffold}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Cohen, Frederick and Alicke, Bruno and Elliott, Linda O. and Flygare, John A. and Goncharov, Tatiana and Keteltas, Stephen F. and Franklin, Matthew C. and Frankovitz, Stacy and Stephan, Jean Philippe and Tsui, Vickie and Vucic, Domagoj and Wong, Harvey and Fairbrother, Wayne J.}, + number = {6}, + pages = {1723--1730}, + volume = {52}, + doi = {10.1021/jm801450c}, + issn = {00222623} +} + +@article{cohen_orally_2009, + title = {{Orally bioavailable antagonists of inhibitor of apoptosis proteins based on an azabicyclooctane scaffold}}, + author = {Cohen, Frederick and Alicke, Bruno and Elliott, Linda O and Flygare, John A and Goncharov, Tatiana and Keteltas, Stephen F and Franklin, Matthew C and Frankovitz, Stacy and Stephan, Jean-Philippe and Tsui, Vickie and Vucic, Domagoj and Wong, Harvey and Fairbrother, Wayne J}, + pages = {1723--1730}, + volume = {52}, + doi = {10.1021/jm801450c} +} + +@article{buchwald_organic_2010, + title = {{Organic dyes as small molecule protein-protein interaction inhibitors for the {\{}CD{\}}40-{\{}CD{\}}154 costimulatory interaction.}}, + author = {Buchwald, Peter and Margolles-Clark, Emilio and Kenyon, Norma S and Ricordi, Camillo}, + pages = {65--73}, + volume = {23}, + doi = {10.1002/jmr.969} +} + +@article{laraia_overcoming_2015, + title = {{Overcoming Chemical, Biological, and Computational Challenges in the Development of Inhibitors Targeting Protein-Protein Interactions}}, + year = {2015}, + journal = {Chemistry and Biology}, + author = {Laraia, Luca and McKenzie, Grahame and Spring, David R. and Venkitaraman, Ashok R. and Huggins, David J.}, + number = {6}, + pages = {689--703}, + volume = {22}, + doi = {10.1016/j.chembiol.2015.04.019}, + issn = {10745521}, + pmid = {26091166}, + keywords = {Binding Sites, Humans, Molecular Docking Simulation, Protein Binding, Protein Interaction Maps, Proteins, Signal Transduction, Small Molecule Libraries, apoptosis} +} + +@article{vassilev_p53_2005, + title = {{p53 Activation by small molecules: application in oncology}}, + author = {Vassilev, Lyubomir T}, + pages = {4491--4499}, + volume = {48}, + doi = {10.1021/jm058174k} +} + +@article{weber_patented_2010, + title = {{Patented inhibitors of p53-Mdm2 interaction (2006 - 2008)}}, + author = {Weber, Lutz}, + pages = {179--191}, + volume = {20}, + doi = {10.1517/13543770903514129} +} + +@article{ng_pegaptanib_2006, + title = {{Pegaptanib, a targeted anti-{\{}VEGF{\}} aptamer for ocular vascular disease}}, + author = {Ng, Eugene W M and Shima, David T and Calias, Perry and Cunningham, Emmett T and Guyer, David R and Adamis, Anthony P}, + pages = {123--132}, + volume = {5}, + doi = {10.1038/nrd1955} +} + +@article{nicolaes_peptide_1995, + title = {{Peptide bond cleavages and loss of functional activity during inactivation of factor Va and factor {\{}VaR{\}}506Q by activated protein C}}, + author = {Nicolaes, G A and Tans, G and Thomassen, M C and Hemker, H C and Pabinger, I and Varadi, K and Schwarz, H P and Rosing, J}, + pages = {21158--21166}, + volume = {270}, + issn = {0021-9258 (Print) 0021-9258 (Linking)}, + keywords = {Arginine/genetics/metabolism, Blotting, Catalysis, Cell Membrane/metabolism, Factor Va/*antagonists {\&} inhibitors/genetics/meta, Glycine/genetics/metabolism, Humans, Hydrolysis, Kinetics, Mutation, Peptides/*metabolism, Phospholipids/metabolism, Protein C/*metabolism, Prothrombin/metabolism, Western} +} + +@article{charifson_peptide_1997, + title = {{Peptide ligands of pp60(c-src) {\{}SH{\}}2 domains: a thermodynamic and structural study}}, + author = {Charifson, P S and Shewchuk, L M and Rocque, W and Hummel, C W and Jordan, S R and Mohr, C and Pacofsky, G J and Peel, M R and Rodriguez, M and Sternbach, D D and Consler, T G}, + pages = {6283--6293}, + volume = {36}, + doi = {10.1021/bi970019n} +} + +@article{fischer_peptide_2006, + title = {{Peptide, Peptidomimetic, and Small-molecule Antagonists of the p53-{\{}HDM{\}}2 Protein-Protein Interaction.}}, + author = {Fischer, Peter M}, + pages = {3--19}, + volume = {12}, + doi = {10.1007/s10989-006-9016-5} +} + +@article{neduva_peptides_2006, + title = {{Peptides mediating interaction networks: new leads at last}}, + author = {Neduva, Victor and Russell, Robert B}, + pages = {465--471}, + volume = {17}, + doi = {10.1016/j.copbio.2006.08.002} +} + +@article{butenas_peptidomimetic_2006, + title = {{Peptidomimetic inhibitors for activated protein C: implications for hemophilia management}}, + author = {Butenas, S and Orfeo, T and Kalafatis, M and Mann, K G}, + pages = {2411--2416}, + volume = {4}, + doi = {10.1111/j.1538-7836.2006.02226.x}, + issn = {1538-7933 (Print) 1538-7836 (Linking)}, + keywords = {Activated Protein C Resistance/*drug therapy/enzy, Biological, Blood Coagulation Tests/methods, Blood Coagulation/*drug effects, Enzyme Inhibitors/chemical synthesis/*chemistry/t, Factor V/metabolism, Factor Va/metabolism, Factor Xa/metabolism, Hemophilia A/*drug therapy/enzymology, Humans, Models, Protein C/*antagonists {\&} inhibitors/chemistry/met, Proteome/chemistry/metabolism} +} + +@article{machida_peptidomimetic_2012, + title = {{Peptidomimetic modification improves cell permeation of bivalent farnesyltransferase inhibitors.}}, + author = {Machida, Shinnosuke and Tsubamoto, Mai and Kato, Nobuo and Harada, Kazuo and Ohkanda, Junko}, + doi = {10.1016/j.bmc.2012.09.061} +} + +@article{capuzzi_phantom_2017, + title = {{Phantom {\{}PAINS{\}}: Problems with the Utility of Alerts for Pan-Assay {\{}INterference{\}} {\{}CompoundS{\}}}}, + shorttitle = {Phantom {\{}PAINS{\}}}, + author = {Capuzzi, Stephen J and Muratov, Eugene N and Tropsha, Alexander}, + number = {3}, + pages = {417--427}, + volume = {57}, + doi = {10.1021/acs.jcim.6b00465}, + issn = {1549-960X}, + pmid = {28165734} +} + +@article{zhang_pharmacophore_2012, + title = {{Pharmacophore Modeling, 3D-QSAR Studies, and in-silico ADME Prediction of Pyrrolidine Derivatives as Neuraminidase Inhibitors}}, + year = {2012}, + journal = {Chemical Biology and Drug Design}, + author = {Zhang, Jie and Pan, Xiaoyan and Wang, Chen and Wang, Fang and Li, Pengfei and Xu, Wenfang and He, Langchong}, + number = {3}, + pages = {353--359}, + volume = {79}, + doi = {10.1111/j.1747-0285.2011.01299.x}, + issn = {17470277}, + keywords = {ADME, Neuraminidase, Pharmacophore, Pyrrolidine, QSAR} +} + +@article{de_luca_pharmacophore-based_2009, + title = {{Pharmacophore-based discovery of small-molecule inhibitors of protein-protein interactions between {\{}HIV{\}}-1 integrase and cellular cofactor {\{}LEDGF{\}}/p75}}, + author = {De Luca, Laura and Barreca, Maria Letizia and Ferro, Stefania and Christ, Frauke and Iraci, Nunzio and Gitto, Rosaria and Monforte, Anna Maria and Debyser, Zeger and Chimirri, Alba}, + pages = {1311--1316}, + volume = {4}, + doi = {10.1002/cmdc.200900070} +} + +@article{zheng_phenotypic_2013, + title = {{Phenotypic screens as a renewed approach for drug discovery}}, + author = {Zheng, Wei and Thorne, Natasha and McKew, John C}, + number = {21}, + pages = {1067--1073}, + volume = {18}, + doi = {10.1016/j.drudis.2013.07.001}, + issn = {1878-5832}, + pmid = {23850704}, + keywords = {Animals, Drug Approval, Drug Design, Drug Discovery, Drug Industry, Humans, Molecular Targeted Therapy, Phenotype, United States} +} + +@article{swinney_phenotypic_2013, + title = {{Phenotypic vs. target-based drug discovery for first-in-class medicines}}, + author = {Swinney, D C}, + number = {4}, + pages = {299--301}, + volume = {93}, + doi = {10.1038/clpt.2012.236}, + issn = {1532-6535}, + pmid = {23511784}, + keywords = {Animal, Animals, Disease Models, Drug Discovery, Humans, Molecular Targeted Therapy} +} + +@article{carter_photochemically_2001, + title = {{Photochemically enhanced binding of small molecules to the tumor necrosis factor receptor-1 inhibits the binding of {\{}TNF{\}}-alpha.}}, + author = {Carter, P H and Scherle, P A and Muckelbauer, J K and Voss, M E and Liu, R Q and Thompson, L A and Tebben, A J and Solomon, K A and Lo, Y C and Li, Z and Strzemienski, P and Yang, G and Falahatpisheh, N and Xu, M and Wu, Z and Farrow, N A and Ramnarayan, K and Wang, J and Rideout, D and Yalamoori, V and Domaille, P and Underwood, D J and Trzaskos, J M and Friedman, S M and Newton, R C and Decicco, C P and Muckelbauer, J A}, + pages = {11879--11884}, + volume = {98}, + doi = {10.1073/pnas.211178398} +} + +@article{hughes_physiochemical_2008, + title = {{Physiochemical drug properties associated with in vivo toxicological outcomes}}, + author = {Hughes, J D and Blagg, J and Price, D A and Bailey, S and Decrescenzo, G A and Devraj, R V and Ellsworth, E and Fobian, Y M and Gibbs, M E and Gilles, R W and Greene, N and Huang, E and Krieger-Burke, T and Loesel, J and Wager, T and Whiteley, L and Zhang, Y}, + pages = {4872--4875}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.07.071}, + issn = {1464-3405 (Electronic) 0960-894X (Linking)}, + keywords = {*Drug-Related Side Effects and Adverse Reactions, *Structure-Activity Relationship, Animals, Dogs, Drug Evaluation, Female, Humans, Male, Pharmaceutical Preparations/*chemistry, Preclinical, Rats} +} + +@article{firth_plane_2012, + title = {{Plane of Best Fit: A Novel Method to Characterize the Three-Dimensionality of Molecules.}}, + author = {Firth, Nicholas C and Brown, Nathan and Blagg, Julian}, + doi = {10.1021/ci300293f} +} + +@article{mygind_plectasin_2005, + title = {{Plectasin is a peptide antibiotic with therapeutic potential from a saprophytic fungus}}, + author = {Mygind, Per H and Fischer, Rikke L and Schnorr, Kirk M and Hansen, Mogens T and S{\"{o}}nksen, Carsten P and Ludvigsen, Svend and Ravent{\'{o}}s, Dorotea and Buskov, Steen and Christensen, Bjarke and De Maria, Leonardo and Taboureau, Olivier and Yaver, Debbie and Elvig-J{\o}rgensen, Signe G and S{\o}rensen, Marianne V and Christensen, Bjørn E and Kj{\ae}rulff, Søren and Frimodt-Moller, Niels and Lehrer, Robert I and Zasloff, Michael and Kristensen, Hans-Henrik}, + pages = {975--980}, + volume = {437}, + doi = {10.1038/nature04051} +} + +@article{raj_plucking_2012, + title = {{Plucking the high hanging fruit: A systematic approach for targeting protein-protein interactions.}}, + author = {Raj, Monika and Bullock, Brooke N and Arora, Paramjit S}, + doi = {10.1016/j.bmc.2012.11.023} +} + +@article{zheng_pocket-based_2012, + title = {{Pocket-Based Drug Design: Exploring Pocket Space}}, + year = {2013}, + journal = {The AAPS Journal}, + author = {Zheng, Xiliang and Gan, LinFeng and Wang, Erkang and Wang, Jin}, + number = {1}, + pages = {228--241}, + volume = {15}, + doi = {10.1208/s12248-012-9426-6} +} + +@article{craig_pocket-space_2011, + title = {{Pocket-Space Maps To Identify Novel Binding-Site Conformations in Proteins}}, + author = {Craig, Ian R and Pfleger, Christopher and Gohlke, Holger and Essex, Jonathan W and Spiegel, Katrin}, + pages = {110930112454002}, + doi = {10.1021/ci200168b} +} + +@article{berwanger_polyamines:_2010, + title = {{Polyamines: naturally occurring small molecule modulators of electrostatic protein-protein interactions.}}, + author = {Berwanger, Anja and Eyrisch, Susanne and Schuster, Inge and Helms, Volkhard and Bernhardt, Rita}, + pages = {118--125}, + volume = {104}, + doi = {10.1016/j.jinorgbio.2009.10.007} +} + +@article{nim_pooled_2016, + title = {{Pooled screening for antiproliferative inhibitors of protein-protein interactions}}, + author = {Nim, Satra and Jeon, Jouhyun and Corbi-Verge, Carles and Seo, Moon-Hyeong and Ivarsson, Ylva and Moffat, Jason and Tarasova, Nadya and Kim, Philip M}, + number = {4}, + pages = {275--281}, + volume = {12}, + doi = {10.1038/nchembio.2026}, + issn = {1552-4469}, + pmid = {26900867}, + keywords = {Antineoplastic Agents, Antitumor, Cell Line, Cell Proliferation, Cell Survival, Cloning, Drug Discovery, Drug Screening Assays, Humans, Lentivirus, Molecular, Pancreatic Neoplasms, Peptide Library, Protein Interaction Mapping, Protein Interaction Maps, Tumor, {\{}HEK{\}}293 Cells} +} + +@article{yu_potent_2009-1, + title = {{Potent and orally active small-molecule inhibitors of the {\{}MDM{\}}2-p53 interaction}}, + author = {Yu, Shanghai and Qin, Dongguang and Shangary, Sanjeev and Chen, Jianyong and Wang, Guoping and Ding, Ke and Mceachern, Donna and Qiu, Su and Nikolovska-Coleska, Zaneta and Miller, Rebecca and Kang, Sanmao and Yang, Dajun and Wang, Shaomeng}, + pages = {7970--7973}, + volume = {52}, + doi = {10.1021/jm901400z} +} + +@article{yu_potent_2009, + title = {{Potent and Orally Active Small-Molecule Inhibitors of the {\{}MDM{\}}2−p53 Interaction}}, + author = {Yu, Shanghai and Qin, Dongguang and Shangary, Sanjeev and Chen, Jianyong and Wang, Guoping and Ding, Ke and Mceachern, Donna and Qiu, Su and Nikolovska-Coleska, Zaneta and Miller, Rebecca and Kang, Sanmao and Yang, Dajun and Wang, Shaomeng}, + pages = {7970--7973}, + volume = {52}, + doi = {10.1021/jm901400z} +} + +@article{bostrom_potent_2013, + title = {{Potent Fibrinolysis Inhibitor Discovered by Shape and Electrostatic Complementarity to the Drug Tranexamic Acid}}, + author = {Bostr{\"{o}}m, Jonas and Grant, J Andrew and Fjellstr{\"{o}}m, Ola and Thelin, Anders and Gustafsson, David}, + pages = {3273--3280}, + volume = {56}, + doi = {10.1021/jm301818g} +} + +@article{fuller_predicting_2009, + title = {{Predicting druggable binding sites at the protein-protein interface.}}, + author = {Fuller, Jonathan C and Burgoyne, Nicholas J and Jackson, Richard M}, + pages = {155--161}, + volume = {14}, + doi = {10.1016/j.drudis.2008.10.009} +} + +@article{jordan_predicting_2012, + title = {{Predicting protein-protein interface residues using local surface structural similarity.}}, + author = {Jordan, Rafael A and El-Manzalawy, Yasser and Dobbs, Drena and Honavar, Vasant}, + pages = {41}, + volume = {13}, + doi = {10.1186/1471-2105-13-41} +} + +@article{walter_predicting_2013, + title = {{Predicting where Small Molecules Bind at Protein-Protein Interfaces.}}, + author = {Walter, Peter and Metzger, Jennifer and Thiel, Christoph and Helms, Volkhard}, + pages = {e58583}, + volume = {8}, + doi = {10.1371/journal.pone.0058583} +} + +@article{egan_prediction_2000, + title = {{Prediction of drug absorption using multivariate statistics}}, + author = {Egan, W J and Merz, K M and Baldwin, J J}, + pages = {3867--3877}, + volume = {43}, + issn = {0022-2623 (Print) 0022-2623 (Linking)}, + keywords = {*Intestinal Absorption, Biological, Biological Transport, Caco-2 Cells, Cell Membrane Permeability, Humans, Models, Multivariate Analysis, Pharmaceutical Preparations/*metabolism, Reproducibility of Results} +} + +@article{lise_prediction_2009, + title = {{Prediction of hot spot residues at protein-protein interfaces by combining machine learning and energy-based methods}}, + author = {Lise, Stefano and Archambeau, Cedric and Pontil, Massimiliano and Jones, David T}, + pages = {365}, + volume = {10}, + doi = {10.1186/1471-2105-10-365} +} + +@article{ghose_prediction_1998, + title = {{Prediction of Hydrophobic (Lipophilic) Properties of Small Organic Molecules Using Fragmental Methods: An Analysis of {\{}ALOGP{\}} and {\{}CLOGP{\}} Methods}}, + author = {Ghose, Arup K and Viswanadhan, Vellarkad N and Wendoloski, John J}, + pages = {3762--3772}, + volume = {102}, + doi = {10.1021/jp980230o}, + issn = {1089-5639} +} + +@article{neugebauer_prediction_2007, + title = {{Prediction of protein-protein interaction inhibitors by chemoinformatics and machine learning methods}}, + author = {Neugebauer, Alexander and Hartmann, Rolf W and Klein, Christian D}, + pages = {4665--4668}, + volume = {50}, + doi = {10.1021/jm070533j} +} + +@article{zheng_predictive_2012, + title = {{Predictive energy landscapes for protein-protein association.}}, + author = {Zheng, Weihua and Schafer, Nicholas P and Davtyan, Aram and Papoian, Garegin A and Wolynes, Peter G}, + doi = {10.1073/pnas.1216215109} +} + +@article{tamura_prenylcoumarin_2010, + title = {{Prenylcoumarin with Rev-export inhibitory activity from Cnidii Monnieris Fructus.}}, + author = {Tamura, Satoru and Fujitani, Toshiaki and Kaneko, Masafumi and Murakami, Nobutoshi}, + pages = {3717--3720}, + volume = {20}, + doi = {10.1016/j.bmcl.2010.04.081} +} + +@article{jones_principles_1996, + title = {{Principles of protein-protein interactions.}}, + year = {1996}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Jones, S and Thornton, J M}, + number = {1}, + month = {1}, + pages = {13--20}, + volume = {93}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/8552589 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC40170 http://www.pnas.org/cgi/doi/10.1073/pnas.93.1.13}, + doi = {10.1073/pnas.93.1.13}, + issn = {0027-8424}, + pmid = {8552589} +} + +@article{keskin_principles_2008, + title = {{Principles of protein-protein interactions: what are the preferred ways for proteins to interact?}}, + author = {Keskin, Ozlem and Gursoy, Attila and Ma, Buyong and Nussinov, Ruth}, + pages = {1225--1244}, + volume = {108}, + doi = {10.1021/cr040409x} +} + +@article{hajduk_privileged_2000, + title = {{Privileged molecules for protein binding identified from {\{}NMR{\}}-based screening.}}, + author = {Hajduk, P J and Bures, M and Praestgaard, J and Fesik, S W}, + pages = {3443--3447}, + volume = {43} +} + +@article{ji_privileged_2004, + title = {{Privileged scaffolds for blocking protein-protein interactions: 1,4-disubstituted naphthalene antagonists of transcription factor complex {\{}HOX{\}}-{\{}PBX{\}}/{\{}DNA{\}}}}, + author = {Ji, Tao and Lee, Madison and Pruitt, Steven C and Hangauer, David G}, + pages = {3875--3879}, + volume = {14}, + doi = {10.1016/j.bmcl.2004.05.068} +} + +@article{welsch_privileged_2010, + title = {{Privileged scaffolds for library design and drug discovery}}, + author = {Welsch, Matthew E and Snyder, Scott A and Stockwell, Brent R}, + pages = {347--361}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.02.018} +} + +@article{costantino_privileged_2006, + title = {{Privileged structures as leads in medicinal chemistry}}, + author = {Costantino, Luca and Barlocco, Daniela}, + pages = {65--85}, + volume = {13} +} + +@article{caldas_probabilistic_2009, + title = {{Probabilistic retrieval and visualization of biologically relevant microarray experiments.}}, + author = {Caldas, José and Gehlenborg, Nils and Faisal, Ali and Brazma, Alvis and Kaski, Samuel}, + pages = {i145--53}, + volume = {25}, + doi = {10.1093/bioinformatics/btp215} +} + +@article{mcleod_probing_2014, + title = {{Probing chemical space with alkaloid-inspired libraries}}, + author = {McLeod, Michael C and Singh, Gurpreet and suff, James N Plampin suff I I I and Rane, Digamber and Wang, Jenna L and Day, Victor W and Aub{\'{e}}, Jeffrey}, + pages = {133--140}, + volume = {6}, + doi = {10.1038/nchem.1844}, + keywords = {chemical space} +} + +@article{meliciani_probing_2009, + title = {{Probing hot spots on protein-protein interfaces with all-atom free-energy simulation.}}, + author = {Meliciani, Irene and Klenin, Konstantin and Strunk, Timo and Schmitz, Katja and Wenzel, Wolfgang}, + pages = {34114}, + volume = {131}, + doi = {10.1063/1.3177008} +} + +@article{wilson_probing_2013, + title = {{Probing structural adaptivity at {\{}PPI{\}} interfaces with small molecules}}, + author = {Wilson, Christopher G and Arkin, Michelle R}, + pages = {e501--e508}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.10.009} +} + +@article{hartenfeller_probing_2012, + title = {{Probing the Bioactivity-Relevant Chemical Space of Robust Reactions and Common Molecular Building Blocks.}}, + author = {Hartenfeller, Markus and Eberle, Martin and Meier, Peter and Nieto-Oberhuber, Cristina and Altmann, Karl-Heinz and Schneider, Gisbert and Jacoby, Edgar and Renner, Steffen}, + doi = {10.1021/ci200618n} +} + +@article{gleeson_probing_2011, + title = {{Probing the links between in vitro potency, {\{}ADMET{\}} and physicochemical parameters}}, + author = {Gleeson, M Paul and Hersey, Anne and Montanari, Dino and Overington, John}, + pages = {197--208}, + volume = {10}, + doi = {10.1038/nrd3367} +} + +@article{workman_probing_2010, + title = {{Probing the probes: fitness factors for small molecule tools}}, + author = {Workman, Paul and Collins, Ian}, + pages = {561--577}, + volume = {17}, + doi = {10.1016/j.chembiol.2010.05.013} +} + +@article{moore_probing_2010, + title = {{Probing the topological tolerance of multimeric protein interactions: Evaluation of an estrogen/synthetic ligand for FK506 binding protein conjugate}}, + year = {2010}, + journal = {Bioconjugate Chemistry}, + author = {Moore, Terry W. and Gunther, Jillian R. and Katzenellenbogen, John A.}, + number = {10}, + pages = {1880--1889}, + volume = {21}, + doi = {10.1021/bc100266v}, + issn = {10431802} +} + +@article{cummings_processing_2007, + title = {{Processing of small molecule databases for automated docking.}}, + author = {Cummings, Maxwell D and Gibbs, Alan C and DesJarlais, Renee L}, + pages = {107--113}, + volume = {3} +} + +@article{hewings_progress_2012, + title = {{Progress in the development and application of small molecule inhibitors of bromodomain-acetyl-lysine interactions.}}, + author = {Hewings, David S and Rooney, Timothy P C and Jennings, Laura E and Hay, Duncan and Schofield, Christopher Joseph and Brennan, Paul E and Knapp, Stefan and Conway, Stuart J}, + doi = {10.1021/jm300915b} +} + +@article{chung_progress_2011, + title = {{Progress in the Discovery of Small-Molecule Inhibitors of Bromodomain--Histone Interactions}}, + author = {Chung, C w and Witherington, J}, + doi = {10.1177/1087057111421372}, + keywords = {PPI} +} + +@article{fesik_promoting_2005, + title = {{Promoting apoptosis as a strategy for cancer drug discovery}}, + author = {Fesik, S W}, + pages = {876--885}, + volume = {5}, + doi = {10.1038/nrc1736}, + issn = {1474-175X (Print) 1474-175X (Linking)}, + keywords = {Animals, Antineoplastic Agents/*therapeutic use, Apoptosis Regulatory Proteins/metabolism, Apoptosis/*drug effects/*physiology, Humans, Inhibitor of Apoptosis Proteins/chemistry/metabol, Membrane Glycoproteins/metabolism, Neoplasms/*drug therapy, Proto-Oncogene Proteins c-bcl-2/chemistry/metabol, Proto-Oncogene Proteins c-mdm2/chemistry/metaboli, Tumor Necrosis Factor-alpha/metabolism, {\{}TNF{\}}-Related Apoptosis-Inducing Ligand} +} + +@article{bemis_properties_1999, + title = {{Properties of known drugs. 2. Side chains}}, + author = {Bemis, G W and Murcko, M A}, + pages = {5095--5099}, + volume = {42} +} + +@article{balakin_property-based_2002, + title = {{Property-Based Design of {\{}GPCR{\}}-Targeted Library}}, + author = {Balakin, K V and Tkachenko, S E and Lang, S A and Okun, I and Ivashchenko, A A and Savchuk, N P}, + pages = {1332--1342}, + volume = {42}, + doi = {10.1021/ci025538y} +} + +@article{tibolla_proprotein_2011, + title = {{Proprotein convertase subtilisin/kexin type 9 ({\{}PCSK{\}}9): From structure-function relation to therapeutic inhibition}}, + author = {Tibolla, G and Norata, G D and Artali, R and Meneghetti, F and Catapano, A L}, + pages = {1--9}, + doi = {10.1016/j.numecd.2011.06.002} +} + +@article{banaszewska_proprotein_2012, + title = {{Proprotein convertase subtilisin/kexin type 9: A new target molecule for gene therapy.}}, + author = {Banaszewska, Anna and Piechota, Michal and Plewa, Robert}, + doi = {10.2478/s11658-012-0006-7} +} + +@article{chmielewski_protease_2009, + title = {{Protease dimer formation disrupted}}, + author = {Chmielewski, Jean}, + pages = {607--608}, + volume = {5}, + doi = {10.1038/nchembio0909-607} +} + +@article{donner_proteasome_2012, + title = {{Proteasome inhibition: Missing amino acids}}, + author = {Donner, Amy}, + pages = {873}, + volume = {8}, + doi = {doi:10.1038/nchembio.1103} +} + +@article{griffin_protein_2012, + title = {{Protein C anticoagulant and cytoprotective pathways}}, + author = {Griffin, J H and Zlokovic, B V and Mosnier, L O}, + pages = {333--345}, + volume = {95}, + doi = {10.1007/s12185-012-1059-0}, + issn = {1865-3774 (Electronic) 0925-5710 (Linking)}, + keywords = {*Signal Transduction, Animals, Anticoagulants/chemistry/*metabolism, Cell Surface/metabolism, Cytoprotection, Enzyme Activation, Humans, Models, Molecular, Mutation, Protein C/chemistry/genetics/*metabolism, Protein S/metabolism, Receptors, Thrombomodulin/metabolism, Venous Thrombosis/genetics/*metabolism} +} + +@article{schuster-bockler_protein_2008-1, + title = {{Protein interactions in human genetic diseases}}, + year = {2008}, + journal = {Genome Biology}, + author = {Schuster-B{\"{o}}ckler, Benjamin and Bateman, Alex}, + number = {1}, + pages = {R9}, + volume = {9}, + doi = {10.1186/gb-2008-9-1-r9}, + issn = {14747596}, + pmid = {18199329}, + keywords = {Databases, Genetic, Genetic Diseases, Humans, Inborn, Methods, Mutation, Protein, Protein Binding, Proteins} +} + +@article{schuster-bockler_protein_2008, + title = {{Protein interactions in human genetic diseases}}, + author = {Schuster-B{\"{o}}ckler, Benjamin and Bateman, Alex}, + number = {1}, + pages = {R9}, + volume = {9}, + doi = {10.1186/gb-2008-9-1-r9}, + issn = {1474-760X}, + pmid = {18199329}, + keywords = {Databases, Genetic, Genetic Diseases, Humans, Inborn, Methods, Mutation, Protein, Protein Binding, Proteins} +} + +@article{betzi_protein_2007, + title = {{Protein protein interaction inhibition (2P2I) combining high throughput and virtual screening: Application to the HIV-1 Nef protein}}, + year = {2007}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Betzi, S. and Restouin, A. and Opi, S. and Arold, S. T. and Parrot, I. and Guerlesquin, F. and Morelli, X. and Collette, Y.}, + number = {49}, + pages = {19256--19261}, + volume = {104}, + doi = {10.1073/pnas.0707130104}, + issn = {0027-8424} +} + +@article{mason_protein-protein_2008, + title = {{Protein-protein binding is often associated with changes in protonation state}}, + author = {Mason, Aaron C and Jensen, Jan H}, + pages = {81--91}, + volume = {71}, + doi = {10.1002/prot.21657} +} + +@article{mullard_protein-protein_2012, + title = {{Protein-protein interaction inhibitors get into the groove.}}, + author = {Mullard, Asher}, + pages = {173--175} +} + +@article{fletcher_protein-protein_2007, + title = {{Protein-protein interaction inhibitors: small molecules from screening techniques}}, + author = {Fletcher, Steven and Hamilton, Andrew D}, + pages = {922--927}, + volume = {7} +} + +@article{david_protein-protein_2012-1, + title = {{Protein-protein interaction sites are hot spots for disease-associated nonsynonymous {\{}SNPs{\}}}}, + author = {David, Alessia and Razali, Rozami and Wass, Mark N and Sternberg, Michael J E}, + number = {2}, + pages = {359--363}, + volume = {33}, + doi = {10.1002/humu.21656}, + issn = {1098-1004}, + pmid = {22072597}, + keywords = {Amino Acid Substitution, Binding Sites, Humans, Models, Molecular, Polymorphism, Protein Binding, Protein Conformation, Protein Interaction Domains and Motifs, Proteins, Single Nucleotide} +} + +@article{david_protein-protein_2012, + title = {{Protein-protein interaction sites are hot spots for disease-associated nonsynonymous {\{}SNPs{\}}}}, + author = {David, Alessia and Razali, Rozami and Wass, Mark N and Sternberg, Michael J E}, + number = {2}, + pages = {359--363}, + volume = {33}, + doi = {10.1002/humu.21656}, + issn = {1098-1004}, + pmid = {22072597}, + keywords = {Amino Acid Substitution, Binding Sites, Humans, Models, Molecular, Polymorphism, Protein Binding, Protein Conformation, Protein Interaction Domains and Motifs, Proteins, Single Nucleotide} +} + +@article{arkin_protein-protein_2005, + title = {{Protein-protein interactions and cancer: small molecules going in for the kill}}, + author = {Arkin, Michelle}, + pages = {317--324}, + volume = {9}, + doi = {10.1016/j.cbpa.2005.03.001} +} + +@article{garner_protein-protein_2010, + title = {{Protein-Protein Interactions and Cancer: Targeting the Central Dogma}}, + year = {2010}, + journal = {Current Topics in Medicinal Chemistry}, + author = {L. Garner, Amanda and D. Janda, Kim}, + number = {3}, + pages = {258--280}, + volume = {11}, + doi = {10.2174/156802611794072614}, + issn = {15680266} +} + +@article{higueruelo_proteinprotein_2013, + title = {{Protein-protein interactions as druggable targets: Recent technological advances}}, + year = {2013}, + journal = {Current Opinion in Pharmacology}, + author = {Higueruelo, Alicia P. and Jubb, Harry and Blundell, Tom L.}, + number = {5}, + pages = {791--796}, + volume = {13}, + doi = {10.1016/j.coph.2013.05.009}, + issn = {14714973} +} + +@article{fry_protein-protein_2006, + title = {{Protein-protein interactions as targets for small molecule drug discovery}}, + year = {2006}, + journal = {Biopolymers - Peptide Science Section}, + author = {Fry, David C.}, + number = {6}, + pages = {535--552}, + volume = {84}, + doi = {10.1002/bip.20608}, + issn = {00063525}, + keywords = {Drug discovery, PPI, Peptidomimetics, Protein-protein interactions} +} + +@article{chen_protein-protein_2013, + title = {{Protein-protein interactions: General trends in the relationship between binding affinity and interfacial buried surface area.}}, + author = {Chen, Jieming and Sawyer, Nicholas and Regan, Lynne}, + doi = {10.1002/pro.2230} +} + +@article{durdagi_protein-protein_2012, + title = {{Protein-protein interactions: Inhibition of mammalian carbonic anhydrases I-{\{}XV{\}} by the murine inhibitor of carbonic anhydrase and other members of the transferrin family.}}, + author = {Durdagi, S and Vullo, Daniela and Pan, Peiwen and Kahkonen, Niklas and M{\"{a}}{\"{a}}tt{\"{a}}, Juha and Hytonen, Vesa and Scozzafava, Andrea and Parkkila, Seppo and Supuran, Claudiu T}, + doi = {10.1021/jm3004587} +} + +@article{bonetta_protein-protein_2010, + title = {{Protein-protein interactions: Interactome under construction.}}, + author = {Bonetta, Laura}, + pages = {851--854}, + volume = {468}, + doi = {10.1038/468851a} +} + +@article{cochran_protein-protein_2001, + title = {{Protein-protein interfaces: mimics and inhibitors}}, + author = {Cochran, A G}, + pages = {654--659}, + volume = {5} +} + +@article{headd_protein-protein_2007, + title = {{Protein-protein interfaces: properties, preferences, and projections}}, + author = {Headd, Jeffrey J and Ban, Y E Andrew and Brown, Paul and Edelsbrunner, Herbert and Vaidya, Madhuwanti and Rudolph, Johannes}, + pages = {2576--2586}, + volume = {6}, + doi = {10.1021/pr070018+} +} + +@article{mullard_proteinprotein_2012, + title = {{Protein–protein interaction inhibitors get into the groove}}, + author = {Mullard, Asher}, + pages = {173--175}, + volume = {11}, + doi = {doi:10.1038/nrd3680} +} + +@article{van_westen_proteochemometric_2011, + title = {{Proteochemometric modeling as a tool to design selective compounds and for extrapolating to novel targets}}, + author = {Van Westen, Gerard J P and Wegner, Jörg K and Ijzerman, Adriaan P and Van Vlijmen, Herman W T and Bender, A}, + pages = {16}, + volume = {2}, + doi = {10.1039/c0md00165a} +} + +@article{davis_proteome-wide_2011, + title = {{Proteome-wide prediction of overlapping small molecule and protein binding sites using structure.}}, + author = {Davis, Fred P}, + pages = {545--557}, + volume = {7}, + doi = {10.1039/c0mb00200c} +} + +@article{lu_proteomimetic_2006, + title = {{Proteomimetic Libraries: Design, Synthesis, and Evaluation of p53−{\{}MDM{\}}2 Interaction Inhibitors}}, + author = {Lu, Felice and Chi, Seung-Wook and Kim, Do-Hyoung and Han, Kyou-Hoon and Kuntz, Irwin D and Guy, R Kiplin}, + pages = {315--325}, + volume = {8}, + doi = {10.1021/cc050142v} +} + +@article{chen_pubchem_2010, + title = {{PubChem BioAssays as a data source for predictive models}}, + year = {2010}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Chen, Bin and Wild, David J.}, + number = {5}, + pages = {420--426}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.10.001}, + issn = {10933263}, + keywords = {Bayesian, BioAssay, Cheminformatics, Predictive models, PubChem} +} + +@article{tang_pyrogallol-based_2007, + title = {{Pyrogallol-Based Molecules as Potent Inhibitors of the Antiapoptotic Bcl-2 Proteins}}, + author = {Tang, Guozhi and Yang, Chao-Yie and Nikolovska-Coleska, Zaneta and Guo, Jie and Qiu, Su and Wang, Renxiao and Gao, Wei and Wang, Guoping and Stuckey, Jeanne and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P and Wang, Shaomeng}, + pages = {1723--1726}, + volume = {50}, + doi = {10.1021/jm061400l} +} + +@article{zhang_qsar_2008, + title = {{QSAR modeling of the blood-brain barrier permeability for diverse organic compounds}}, + year = {2008}, + journal = {Pharmaceutical Research}, + author = {Zhang, Liying and Zhu, Hao and Oprea, Tudor I. and Golbraikh, Alexander and Tropsha, Alexander}, + number = {8}, + pages = {1902--1914}, + volume = {25}, + doi = {10.1007/s11095-008-9609-0}, + issn = {07248741}, + keywords = {Combinatorial QSAR, Model validation, Predictors of BBB permeability, Support vector machines, k-nearest neighbors} +} + +@article{hert_quantifying_2009, + title = {{Quantifying biogenic bias in screening libraries}}, + author = {Hert, Jérôme and Irwin, John J and Laggner, Christian and Keiser, Michael J and Shoichet, Brian K}, + pages = {479--483}, + volume = {5}, + doi = {10.1038/nchembio.180} +} + +@article{vincentelli_quantifying_2015, + title = {{Quantifying domain-ligand affinities and specificities by high-throughput holdup assay}}, + author = {Vincentelli, Renaud and Luck, Katja and Poirson, Juline and Polanowska, Jolanta and Abdat, Julie and Bl{\'{e}}mont, Marilyne and Turchetto, Jeremy and Iv, François and Ricquier, Kevin and Straub, Marie-Laure and Forster, Anne and Cassonnet, Patricia and Borg, Jean-Paul and Jacob, Yves and Masson, Murielle and Nomin{\'{e}}, Yves and Reboul, Jérôme and Wolff, Nicolas and Charbonnier, Sebastian and Trav{\'{e}}, Gilles}, + number = {8}, + pages = {787--793}, + volume = {12}, + doi = {10.1038/nmeth.3438}, + issn = {1548-7105}, + pmid = {26053890}, + keywords = {Amino Acid Motifs, Chromatography, High-Throughput Screening Assays, Humans, Kinetics, Ligands, Oncogene Proteins, Protein Conformation, Protein Interaction Mapping, Proteins, Proteome, Repressor Proteins, Systems Biology, Viral, {\{}DNA{\}}-Binding Proteins, {\{}PDZ{\}} Domains} +} + +@article{clemons_quantifying_2011, + title = {{Quantifying structure and performance diversity for sets of small molecules comprising small-molecule screening collections}}, + author = {Clemons, P A and Wilson, J A and Dancik, V and Muller, S and Carrinski, H A and Wagner, B K and Koehler, A N and Schreiber, S L}, + pages = {6817--6822}, + volume = {108}, + doi = {10.1073/pnas.1015024108}, + issn = {1091-6490 (Electronic) 0027-8424 (Linking)}, + keywords = {*Databases, *Models, Chemical, Drug Evaluation, Factual, Molecular Structure, Preclinical/*methods, Structure-Activity Relationship} +} + +@article{hert_quantifying_2008, + title = {{Quantifying the relationships among drug classes}}, + author = {Hert, Jérôme and Keiser, Michael J and Irwin, John J and Oprea, Tudor I and Shoichet, Brian K}, + pages = {755--765}, + volume = {48}, + doi = {10.1021/ci8000259} +} + +@article{ertl_quest_2006, + title = {{Quest for the Rings. In Silico Exploration of Ring Universe To Identify Novel Bioactive Heteroaromatic Scaffolds}}, + author = {Ertl, Peter and Jelfs, Stephen and M{\"{u}}hlbacher, Jörg and Schuffenhauer, Ansgar and Selzer, Paul}, + pages = {4568--4573}, + volume = {49}, + doi = {10.1021/jm060217p} +} + +@article{noauthor_r_nodate, + title = {{R Package}}, + year = {2015}, + author = {Wickham, Hadley}, + number = {January}, + pages = {318}, + isbn = {9781491910597} +} + +@article{guha_r-nn_2006, + title = {{R-{\{}NN{\}} curves: an intuitive approach to outlier detection using a distance based method.}}, + author = {Guha, Rajarshi and Dutta, Debojyoti and Jurs, Peter C and Chen, Ting}, + pages = {1713--1722}, + volume = {46}, + doi = {10.1021/ci060013h} +} + +@article{srivastava_rapid_2009, + title = {{Rapid and efficient hydrophilicity tuning of p53/mdm2 antagonists}}, + author = {Srivastava, Stuti and Beck, Barbara and Wang, Wei and Czarna, Anna and Holak, Tad A and D{\"{o}}mling, Alexander}, + pages = {631--639}, + volume = {11}, + doi = {10.1021/cc9000218} +} + +@article{nicolaes_rational_2014, + title = {{Rational design of small molecules targeting the C2 domain of coagulation factor VIII}}, + year = {2014}, + journal = {Blood}, + author = {Nicolaes, Gerry A.F. and Kulharia, Mahesh and Voorberg, Jan and Kaijen, Paul H. and Wroblewska, Aleksandra and Wielders, Simone and Schrijver, Roy and Sperandio, Olivier and Villoutreix, Bruno O.}, + number = {1}, + pages = {113--120}, + volume = {123}, + isbn = {1528-0020 (Electronic){\textbackslash}r0006-4971 (Linking)}, + doi = {10.1182/blood-2013-05-503227}, + issn = {15280020}, + pmid = {24227818} +} + +@article{christ_rational_2010, + title = {{Rational design of small-molecule inhibitors of the {\{}LEDGF{\}}/p75-integrase interaction and {\{}HIV{\}} replication}}, + author = {Christ, Frauke and Voet, Arnout and Marchand, Arnaud and Nicolet, Stefan and Desimmie, Belete A and Marchand, Damien and Bardiot, Dorothée and Van Der Veken, Nam Joo and Van Remoortel, Barbara and Strelkov, Sergei V and De Maeyer, Marc and Chaltin, Patrick and Debyser, Zeger}, + pages = {442--448}, + volume = {6}, + doi = {10.1038/nchembio.370} +} + +@article{desimmie_rational_2013, + title = {{Rational design of {\{}LEDGINs{\}} as first allosteric integrase inhibitors for the treatment of {\{}HIV{\}} infection}}, + author = {Desimmie, Belete A and Demeulemeester, Jonas and Christ, Frauke and Debyser, Zeger}, + pages = {e517--e522}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.10.002} +} + +@article{seneci_rational_2009, + title = {{Rational design, synthesis and characterization of potent, non-peptidic Smac mimics/{\{}XIAP{\}} inhibitors as proapoptotic agents for cancer therapy}}, + author = {Seneci, Pierfausto and Bianchi, Aldo and Battaglia, Cristina and Belvisi, Laura and Bolognesi, Martino and Caprini, Andrea and Cossu, Federica and Franco, Elena de and Matteo, Marilenia de and Delia, Domenico and Drago, Carmelo and Khaled, Amira and Lecis, Daniele and Manzoni, Leonardo and Marizzoni, Moira and Mastrangelo, Eloise and Milani, Mario and Motto, Ilaria and Moroni, Elisabetta and Potenza, Donatella and Rizzo, Vincenzo and Servida, Federica and Turlizzi, Elisa and Varrone, Maurizio and Vasile, Francesca and Scolastico, Carlo}, + pages = {5834--5856}, + volume = {17}, + doi = {10.1016/j.bmc.2009.07.009} +} + +@article{wells_reaching_2007, + title = {{Reaching for high-hanging fruit in drug discovery at protein-protein interfaces}}, + author = {Wells, James A and Mcclendon, Christopher L}, + pages = {1001--1009}, + volume = {450}, + doi = {10.1038/nature06526} +} + +@article{zhu_reactivation_2012, + title = {{Reactivation of Latent HIV-1 by Inhibition of BRD4}}, + year = {2012}, + journal = {Cell Reports}, + author = {Zhu, Jian and Gaiha, Gaurav D. and John, Sinu P. and Pertel, Thomas and Chin, Christopher R. and Gao, Geng and Qu, Hongjing and Walker, Bruce D. and Elledge, Stephen J. and Brass, Abraham L.}, + number = {4}, + pages = {807--816}, + volume = {2}, + doi = {10.1016/j.celrep.2012.09.008}, + issn = {22111247} +} + +@article{congreve_recent_2008, + title = {{Recent developments in fragment-based drug discovery.}}, + author = {Congreve, Miles and Chessari, Gianni and Tisi, Dominic and Woodhead, Andrew J}, + pages = {3661--3680}, + volume = {51}, + doi = {10.1021/jm8000373} +} + +@article{bowes_reducing_2012, + title = {{Reducing safety-related drug attrition: the use of in vitro pharmacological profiling}}, + author = {Bowes, Joanne and Brown, Andrew J and Hamon, Jacques and Jarolimek, Wolfgang and Sridhar, Arun and Waldron, Gareth and Whitebread, Steven}, + pages = {909--922}, + volume = {11}, + doi = {10.1038/nrd3845} +} + +@article{guo_regulating_2012, + title = {{Regulating the {\{}ARNT{\}}/{\{}TACC{\}}3 axis: Multiple approaches to manipulating protein/protein interactions with small molecules.}}, + author = {Guo, Yirui and Partch, Carrie L and Key, Jason and Card, Paul B and Pashkov, Victor and Patel, Anjana and Bruick, Richard K and Wurdak, Heiko and Gardner, Kevin H}, + doi = {10.1021/cb300604u} +} + +@article{dahlback_regulation_2005, + title = {{Regulation of blood coagulation by the protein C anticoagulant pathway: novel insights into structure-function relationships and molecular recognition}}, + author = {Dahlback, B and Villoutreix, B O}, + pages = {1311--1320}, + volume = {25}, + doi = {10.1161/01.ATV.0000168421.13467.82}, + issn = {1524-4636 (Electronic) 1079-5642 (Linking)}, + keywords = {Blood Coagulation/*physiology, Factor Va/metabolism, Factor {\{}VIIa{\}}/metabolism, Humans, Protein C/*chemistry/genetics/*metabolism, Structure-Activity Relationship, Thrombosis/genetics/metabolism/*physiopathology} +} + +@article{zerbe_relationship_2012, + title = {{Relationship between Hot Spot Residues and Ligand Binding Hot Spots in Protein-Protein Interfaces.}}, + author = {Zerbe, Brandon S and Hall, David R and Vajda, Sandor and Whitty, Adrian and Kozakov, Dima}, + pages = {2236--2244}, + volume = {52}, + doi = {10.1021/ci300175u} +} + +@article{schamberger_rendezvous_2011, + title = {{Rendezvous in chemical space? Comparing the small molecule compound libraries of Bayer and Schering.}}, + author = {Schamberger, Jens and Grimm, Michael and Steinmeyer, Andreas and Hillisch, Alexander}, + pages = {636--641}, + volume = {16}, + doi = {10.1016/j.drudis.2011.04.005} +} + +@article{kho_ring_2005, + title = {{Ring systems in mutagenicity databases}}, + author = {Kho, Richard and Villar, Hugo}, + pages = {6671--6678}, + volume = {48} +} + +@article{taylor_rings_2014, + title = {{Rings in Drugs}}, + shorttitle = {Miniperspective}, + author = {Taylor, Richard D and MacCoss, Malcolm and Lawson, Alastair D G}, + pages = {140217070615002}, + doi = {10.1021/jm4017625}, + keywords = {chemical space, {\{}PPI{\}}} +} + +@article{czarna_robust_2010, + title = {{Robust generation of lead compounds for protein-protein interactions by computational and {\{}MCR{\}} chemistry: p53/Hdm2 antagonists.}}, + author = {Czarna, Anna and Beck, Barbara and Srivastava, Stuti and Popowicz, Grzegorz M and Wolf, Siglinde and Huang, Yijun and Bista, Michal and Holak, Tad A and D{\"{o}}mling, Alexander}, + pages = {5352--5356}, + volume = {49}, + doi = {10.1002/anie.201001343} +} + +@article{fujino_robust_2012, + title = {{Robust in vitro affinity maturation strategy based on interface-focused high-throughput mutational scanning}}, + year = {2012}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Fujino, Yasuhiro and Fujita, Risako and Wada, Kouichi and Fujishige, Kotomi and Kanamori, Takashi and Hunt, Lindsey and Shimizu, Yoshihiro and Ueda, Takuya}, + number = {3}, + pages = {395--400}, + volume = {428}, + doi = {10.1016/j.bbrc.2012.10.066}, + issn = {0006291X}, + keywords = {Affinity maturation, Antibody Fab fragment, High-throughput sequencing, Mutation scanning, Protein engineering, Ribosome display} +} + +@article{swapna_roles_2012, + title = {{Roles of residues in the interface of transient protein-protein complexes before complexation}}, + year = {2012}, + journal = {Scientific Reports}, + author = {Swapna, Lakshmipuram S. and Bhaskara, Ramachandra M. and Sharma, Jyoti and Srinivasan, Narayanaswamy}, + pages = {334}, + volume = {2}, + doi = {10.1038/srep00334}, + issn = {20452322} +} + +@article{hung_route_2011, + title = {{Route to three-dimensional fragments using diversity-oriented synthesis}}, + year = {2011}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Hung, A. W. and Ramek, A. and Wang, Y. and Kaya, T. and Wilson, J. A. and Clemons, P. A. and Young, D. W.}, + number = {17}, + pages = {6799--6804}, + volume = {108}, + doi = {10.1073/pnas.1015271108}, + issn = {0027-8424} +} + +@article{bruns_rules_2012, + title = {{Rules for identifying potentially reactive or promiscuous compounds}}, + author = {Bruns, R F and Watson, I A}, + pages = {9763--9772}, + volume = {55}, + doi = {10.1021/jm301008n}, + issn = {1520-4804 (Electronic) 0022-2623 (Linking)}, + keywords = {Animals, Biological Assay/*standards, Drug Discovery/*standards, High-Throughput Screening Assays/*standards, Humans, Molecular Structure, Pharmaceutical Preparations/chemistry/*metabolism, Structure-Activity Relationship, Toxicity Tests/*standards} +} + +@article{mckenney_safety_2012, + title = {{Safety and Efficacy of a Monoclonal Antibody to Proprotein Convertase Subtilisin/Kexin Type 9 Serine Protease, {\{}SAR{\}}236553/{\{}REGN{\}}727, in Patients With Primary Hypercholesterolemia Receiving Ongoing Stable Atorvastatin Therapy}}, + author = {McKenney, J M and Koren, M J and Kereiakes, D J and Hanotin, C and Ferrand, A C and Stein, E A}, + pages = {1--10}, + doi = {10.1016/j.jacc.2012.03.007} +} + +@article{zhao_sample_2008, + title = {{Sample size calculation for the Wilcoxon-Mann-Whitney test adjusting for ties}}, + author = {Zhao, Y D and Rahardja, D and Qu, Y}, + pages = {462--468}, + volume = {27}, + doi = {10.1002/sim.2912}, + issn = {0277-6715 (Print) 0277-6715 (Linking)}, + keywords = {*Algorithms, *Sample Size, *Statistics, Clinical Trials as Topic/statistics {\&} numerical d, Diabetic Retinopathy, Humans, Nonparametric, Smoking, United States} +} + +@article{shelat_scaffold_2007, + title = {{Scaffold composition and biological relevance of screening libraries}}, + year = {2007}, + journal = {Nature Chemical Biology}, + author = {Shelat, Anang A. and Guy, R. Kiplin}, + number = {8}, + pages = {442--446}, + volume = {3}, + doi = {10.1038/nchembio0807-442}, + issn = {15524469} +} + +@article{langdon_scaffold_2011, + title = {{Scaffold Diversity of Exemplified Medicinal Chemistry Space}}, + author = {Langdon, Sarah R and Brown, Nathan and Blagg, Julian}, + doi = {10.1021/ci2001428} +} + +@article{grabowski_scaffold_2008, + title = {{Scaffold diversity of natural products: inspiration for combinatorial library design}}, + author = {Grabowski, Kristina and Baringhaus, Karl-Heinz and Schneider, Gisbert}, + pages = {892--904}, + volume = {25}, + doi = {10.1039/b715668p} +} + +@article{pollock_scaffold_2008, + title = {{Scaffold topologies. 1. Exhaustive enumeration up to eight rings.}}, + author = {Pollock, Sara N and Coutsias, Evangelos A and Wester, Michael J and Oprea, Tudor I}, + pages = {1304--1310}, + volume = {48}, + doi = {10.1021/ci7003412} +} + +@article{wester_scaffold_2008, + title = {{Scaffold Topologies. 2. Analysis of Chemical Databases}}, + author = {Wester, Michael J and Pollock, Sara N and Coutsias, Evangelos A and Allu, Tharun Kumar and Muresan, Sorel and Oprea, Tudor I}, + pages = {1311--1324}, + volume = {48}, + doi = {10.1021/ci700342h} +} + +@article{hershberger_scaffolds_2007, + title = {{Scaffolds for Blocking Protein-Protein Interactions}}, + year = {2007}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Hershberger, Stefan and Lee, Song-Gil and Chmielewski, Jean}, + number = {10}, + pages = {928--942}, + volume = {7}, + doi = {10.2174/156802607780906726}, + issn = {15680266} +} + +@article{zhang_scaling_2012, + title = {{Scaling the druggability landscape of human bromodomains, a new class of drug targets.}}, + author = {Zhang, Guangtao and Sanchez, Roberto and Zhou, Ming-Ming}, + pages = {7342--7345}, + volume = {55}, + doi = {10.1021/jm3011977} +} + +@misc{noauthor_sciencedirect.com_nodate-1, + title = {{sciencedirect.com}} +} + +@article{sacks_scientific_2014, + title = {{Scientific and regulatory reasons for delay and denial of {\{}FDA{\}} approval of initial applications for new drugs, 2000-2012}}, + author = {Sacks, Leonard V and Shamsuddin, Hala H and Yasinskaya, Yuliya I and Bouri, Khaled and Lanthier, Michael L and Sherman, Rachel E}, + number = {4}, + pages = {378--384}, + volume = {311}, + doi = {10.1001/jama.2013.282542}, + issn = {1538-3598}, + pmid = {24449316}, + keywords = {Clinical Trials as Topic, Endpoint Determination, Forms and Records Control, Investigational New Drug Application, Pharmaceutical Preparations, Research Design, Retrospective Studies, Time Factors, United States, United States Food and Drug Administration} +} + +@article{monfardini_screening_2011, + title = {{Screening Multicomponent Reactions for X-Linked Inhibitor of Apoptosis-Baculoviral Inhibitor of Apoptosis Protein Repeats Domain Binder}}, + author = {Monfardini, Ilaria and Huang, Jui-Wen and Beck, Barbara and Cellitti, Jason F and Pellecchia, Maurizio and D{\"{o}}mling, Alexander}, + pages = {110111102046030}, + doi = {10.1021/jm101341m} +} + +@article{sperandio_screening_2008, + title = {{Screening outside the catalytic site: Inhibition of macromolecular interactions through structure-based virtual ligand screening experiments}}, + year = {2008}, + journal = {Open Biochem. J.}, + author = {Sperandio, O and Miteva, M A and Segers, K and Nicolaes, G A F and Villoutreix, B O}, + pages = {29--37}, + volume = {2}, + isbn = {1874-091X (Electronic)}, + doi = {10.2174/1874091X00802010029}, + issn = {1874091X}, + pmid = {18949072}, + keywords = {In silico;Drug discovery;Surface} +} + +@article{van_hoorn_searching_2009, + title = {{Searching chemical space with the Bayesian Idea Generator.}}, + author = {Van Hoorn, Willem P and Bell, Andrew S}, + pages = {2211--2220}, + volume = {49}, + doi = {10.1021/ci900072g} +} + +@article{ehrlich_searching_2013, + title = {{Searching for recursively defined generic chemical patterns in nonenumerated fragment spaces.}}, + author = {Ehrlich, Hans-Christian and Henzler, Angela M and Rarey, Matthias}, + pages = {1676--1688}, + volume = {53}, + doi = {10.1021/ci400107k} +} + +@article{ehrlich_searching_2012, + title = {{Searching for substructures in fragment spaces.}}, + author = {Ehrlich, Hans-Christian and Volkamer, Andrea and Rarey, Matthias}, + pages = {3181--3189}, + volume = {52}, + doi = {10.1021/ci300283a} +} + +@article{morelli_searching_2012, + title = {{Searching for the Holy Grail; Protein-protein interaction analysis and modulation}}, + year = {2012}, + journal = {EMBO Reports}, + author = {Morelli, Xavier and Hupp, Ted}, + number = {10}, + pages = {877--879}, + volume = {13}, + doi = {10.1038/embor.2012.137}, + issn = {1469221X} +} + +@article{zaliani_second-generation_2009, + title = {{Second-generation de novo design: a view from a medicinal chemist perspective}}, + author = {Zaliani, Andrea and Boda, Krisztina and Seidel, Thomas and Herwig, Achim and Schwab, Christof H and Gasteiger, Johann and Clau{\ss}en, Holger and Lemmen, Christian and Degen, Jörg and P{\"{a}}rn, Juri and Rarey, Matthias}, + pages = {593--602}, + volume = {23}, + doi = {10.1007/s10822-009-9291-2} +} + +@article{clark_selecting_2010, + title = {{Selecting chemicals: the emerging utility of {\{}DNA{\}}-encoded libraries}}, + author = {Clark, Matthew A}, + pages = {396--403}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.02.017} +} + +@article{broughton_selection_2004, + title = {{Selection of heterocycles for drug design}}, + author = {Broughton, Howard B and Watson, Ian A}, + pages = {51--58}, + volume = {23}, + doi = {10.1016/j.jmgm.2004.03.016} +} + +@article{gonzalez_selective_2014, + title = {{Selective and Potent Morpholinone Inhibitors of the {\{}MDM{\}}2-p53 Protein-Protein Interaction.}}, + author = {Gonzalez, Ana Z and Eksterowics, John and Bartberger, Michael D and Beck, Hilary Plake and Canon, Jude and Chen, Ada and Chow, David and Duquette, Jason and Fox, Brian M and Fu, Jiasheng and Huang, Xin and Houze, Jonathan B and Jin, Lixia and Li, Yihong and Li, Zhihong and Ling, Yun and Lo, Mei-Chu and Long, Alexander M and McGee, Lawrence R and McIntosh, Joel and McMinn, Dustin L and Oliner, Jonathan D and Osgood, Tao and Rew, Yosup and Saiki, Anne Y and Shaffer, Paul and Wortman, Sarah and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Zhao, Xiaoning and Zhou, Jing and Olson, Steven H and Medina, Julio C and Sun, Daqing}, + doi = {10.1021/jm401767k} +} + +@article{kiessling_selective_2006, + title = {{Selective Inhibition of c-Myc/Max Dimerization and {\{}DNA{\}} Binding by Small Molecules}}, + author = {Kiessling, Anke and Sperl, Bianca and Hollis, Angela and Eick, Dirk and Berg, Thorsten}, + pages = {745--751}, + volume = {13}, + doi = {10.1016/j.chembiol.2006.05.011} +} + +@article{kiessling_selective_2007, + title = {{Selective Inhibition of c-Myc/Max Dimerization by a Pyrazolo[1,5-a]pyrimidine}}, + author = {Kiessling, Anke and Wiesinger, Rita and Sperl, Bianca and Berg, Thorsten}, + pages = {627--630}, + volume = {2}, + doi = {10.1002/cmdc.200600294} +} + +@article{roehrl_selective_2004, + title = {{Selective inhibition of calcineurin-{\{}NFAT{\}} signaling by blocking protein-protein interaction with small organic molecules}}, + author = {Roehrl, Michael H A and Kang, Sunghyun and Aramburu, José and Wagner, Gerhard and Rao, Anjana and Hogan, Patrick G}, + pages = {7554--7559}, + volume = {101}, + doi = {10.1073/pnas.0401835101} +} + +@article{filippakopoulos_selective_2010, + title = {{Selective inhibition of {\{}BET{\}} bromodomains}}, + author = {Filippakopoulos, Panagis and Qi, Jun and Picaud, Sarah and Shen, Yao and Smith, William B and Fedorov, Oleg and Morse, Elizabeth M and Keates, Tracey and Hickman, Tyler T and Felletar, Ildiko and Philpott, Martin and Munro, Shonagh and Mckeown, Michael R and Wang, Yuchuan and Christie, Amanda L and West, Nathan and Cameron, Michael J and Schwartz, Brian and Heightman, Tom D and La Thangue, Nicholas and French, Christopher A and Wiest, Olaf and Kung, Andrew L and Knapp, Stefan and Bradner, James E}, + pages = {1067--1073}, + volume = {468}, + doi = {10.1038/nature09504} +} + +@article{bamborough_selectivity_2011, + title = {{Selectivity of Kinase Inhibitor Fragments}}, + author = {Bamborough, Paul and Brown, Murray J and Christopher, John A and Chung, Chun-Wa and Mellor, Geoff W}, + doi = {10.1021/jm200349b}, + keywords = {chemical space} +} + +@article{schneider_self-organizing_2009, + title = {{Self-organizing maps in drug discovery: compound library design, scaffold-hopping, repurposing}}, + author = {Schneider, P and Tanrikulu, Y and Schneider, G}, + pages = {258--266}, + volume = {16} +} + +@article{reuss_sensitivity_2013, + title = {{Sensitivity of Malignant Peripheral Nerve Sheath Tumor Cells to TRAIL Is Augmented by Loss of NF1 through Modulation of MYC/MAD and Is Potentiated by Curcumin through Induction of ROS}}, + year = {2013}, + journal = {PLoS ONE}, + author = {Reuss, David E. and Mucha, Jana and Hagenlocher, Christian and Ehemann, Volker and Kluwe, Lan and Mautner, Victor and von Deimling, Andreas}, + number = {2}, + pages = {e57152}, + volume = {8}, + doi = {10.1371/journal.pone.0057152}, + issn = {19326203} +} + +@article{cameron_serum_2012, + title = {{Serum levels of proprotein convertase subtilisin/kexin type 9 in subjects with familial hypercholesterolemia indicate that proprotein convertase subtilisin/kexin type 9 is cleared from plasma by low-density lipoprotein receptor-independent pathways.}}, + author = {Cameron, Jamie and Bogsrud, Martin P and Tveten, Kristian and Str{\o}m, Thea Bismo and Holven, Kirsten and Berge, Knut Erik and Leren, Trond P}, + pages = {125--130}, + volume = {160}, + doi = {10.1016/j.trsl.2012.01.010} +} + +@article{guadalupe_severe_2003, + title = {{Severe {\{}CD{\}}4+ T-cell depletion in gut lymphoid tissue during primary human immunodeficiency virus type 1 infection and substantial delay in restoration following highly active antiretroviral therapy}}, + author = {Guadalupe, M and Reay, E and Sankaran, S and Prindiville, T and Flamm, J and McNeil, A and Dandekar, S}, + pages = {11708--11717}, + volume = {77}, + issn = {0022-538X (Print) 0022-538X (Linking)}, + keywords = {*Antiretroviral Therapy, Adult, Cell Movement, Chronic Disease, Female, Flow Cytometry, Highly Active, Humans, Immunohistochemistry, Jejunum/*immunology, Lymphocyte Activation, Lymphoid Tissue/*immunology, Male, Middle Aged, Time Factors, {\{}CD{\}}4 Lymphocyte Count, {\{}CD{\}}4-Positive T-Lymphocytes/immunology/*patholog, {\{}CD{\}}8-Positive T-Lymphocytes/immunology, {\{}HIV{\}} Infections/*drug therapy/immunology/virolog, {\{}HIV{\}}-1/*immunology} +} + +@article{bakken_shaping_2012, + title = {{Shaping a Screening File for Maximal Lead Discovery Efficiency and Effectiveness: Elimination of Molecular Redundancy.}}, + author = {Bakken, Gregory and Boehm, Markus and Bell, Andrew and Everett, Jeremy and Gonzales, Rose and Hepworth, David and Klug-McLeod, Jacquelyn L and Lanfear, Jeremy and Loesel, Jens and Mathias, John and Wood, Terence}, + doi = {10.1021/ci300372a} +} + +@article{guharoy_side-chain_2010, + title = {{Side-chain rotamer transitions at protein-protein interfaces}}, + author = {Guharoy, Mainak and Janin, Joël and Robert, Charles H}, + pages = {3219--3225}, + volume = {78}, + doi = {10.1002/prot.22821} +} + +@article{willett_similarity-based_2006, + title = {{Similarity-based virtual screening using 2D fingerprints}}, + author = {Willett, Peter}, + pages = {1046--1053}, + volume = {11}, + doi = {10.1016/j.drudis.2006.10.005} +} + +@article{drew_size_2012, + title = {{Size estimation of chemical space: how big is it?}}, + author = {Drew, Kurt L M and Baiman, Hakim and Khwaounjoo, Prashanna and Yu, Bo and Reynisson, Jóhannes}, + pages = {490--495}, + volume = {64}, + doi = {10.1111/j.2042-7158.2011.01424.x} +} + +@article{domling_small_2008, + title = {{Small molecular weight protein-protein interaction antagonists: an insurmountable challenge?}}, + author = {D{\"{o}}mling, Alexander}, + pages = {281--291}, + volume = {12}, + doi = {10.1016/j.cbpa.2008.04.603} +} + +@article{watterson_small_2010, + title = {{Small Molecule Antagonist of Leukocyte Function Associated Antigen-1 ({\{}LFA{\}}-1): Structure−Activity Relationships Leading to the Identification of 6-((5 S,9 R)-9-(4-Cyanophenyl)-3-(3,5-dichlorophenyl)-1-methyl-2,4-dioxo-1,3,7-triazaspiro[4.4]nonan-7-yl)nic}}, + author = {Watterson, Scott H and Xiao, Zili and Dodd, Dharmpal S and Tortolani, David R and Vaccaro, Wayne and Potin, Dominique and Launay, Michele and Stetsko, Dawn K and Skala, Stacey and Davis, Patric M and Lee, Deborah and Yang, Xiaoxia and McIntyre, Kim W and Balimane, Praveen and Patel, Karishma and Yang, Zheng and Marathe, Punit and Kadiyala, Pathanjali and Tebben, Andrew J and Sheriff, Steven and Chang, ChiehYing Y and Ziemba, Theresa and Zhang, Huiping and Chen, Bang-Chi and DelMonte, Albert J and Aranibar, Nelly and McKinnon, Murray and Barrish, Joel C and Suchard, Suzanne J and Murali Dhar, T G}, + pages = {3814--3830}, + volume = {53}, + doi = {10.1021/jm100348u} +} + +@article{gadek_small_2003, + title = {{Small molecule antagonists of proteins}}, + author = {Gadek, Thomas R and Nicholas, John B}, + pages = {1--8}, + volume = {65} +} + +@article{stauffer_small_2007, + title = {{Small molecule inhibition of the Bcl-X(L)-{\{}BH{\}}3 protein-protein interaction: proof-of-concept of an in vivo chemopotentiator {\{}ABT{\}}-737}}, + author = {Stauffer, Shaun R}, + pages = {961--965}, + volume = {7} +} + +@article{silvian_small_2011, + title = {{Small molecule inhibition of the {\{}TNF{\}} family cytokine {\{}CD{\}}40 ligand through a subunit fracture mechanism}}, + author = {Silvian, Laura F and Friedman, Jessica E and Strauch, Kathy and Cachero, Teresa G and Day, Eric S and Qian, Fang and Cunningham, Brian and Fung, Amy and Sun, Lihong and Shipps, Gerald W and Su, Lihe and Zheng, Zhongli and Kumaravel, Gnanasambandam and Whitty, Adrian}, + number = {6}, + pages = {636--647}, + volume = {6}, + doi = {10.1021/cb2000346}, + issn = {1554-8937}, + pmid = {21417339}, + keywords = {Animals, Antigens, Cell Line, Cricetinae, Crystallography, Humans, Immunoglobulin Fc Fragments, Models, Molecular, Molecular Structure, Molecular Weight, Protein Binding, Pyridines, Pyrrolidines, X-Ray, {\{}CD{\}}40, {\{}CD{\}}40 Ligand} +} + +@article{glanzer_small_2011, + title = {{Small molecule inhibitor of the RPA70 N-terminal protein interaction domain discovered using in silico and in vitro methods}}, + year = {2011}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Glanzer, Jason G. and Liu, Shengqin and Oakley, Gregory G.}, + number = {8}, + pages = {2589--2595}, + volume = {19}, + doi = {10.1016/j.bmc.2011.03.012}, + issn = {09680896}, + keywords = {Docking, EMSA, High-throughput screen, Inhibitors, Replication Protein A} +} + +@article{daposabramo_small_2013, + title = {{Small molecule inhibitors of human papillomavirus protein - protein interactions.}}, + author = {D{\textbackslash}textbackslash{\&}apos;Abramo, C M and Archambault, J}, + pages = {80--95}, + volume = {5}, + doi = {10.2174/1874357901105010080} +} + +@article{muratore_small_2012, + title = {{Small molecule inhibitors of influenza A and B viruses that act by disrupting subunit interactions of the viral polymerase}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Muratore, G. and Goracci, L. and Mercorelli, B. and Foeglein, A. and Digard, P. and Cruciani, G. and Palu, G. and Loregian, A.}, + number = {16}, + pages = {6247--6252}, + volume = {109}, + doi = {10.1073/pnas.1119817109}, + issn = {0027-8424} +} + +@article{harris_small_2013, + title = {{Small molecule inhibitors of protein interaction with glycosaminoglycans ({\{}SMIGs{\}}), a novel class of bioactive agents with anti-inflammatory properties}}, + author = {Harris, Nicholas and Kogan, Faina Yurgenzon and Il{\textbackslash}textbackslash{\&}apos;kova, Gabriela and Juhas, Stefan and Lahmy, Orly and Gregor, Yevgeniya I and Koppel, Juraj and Zhuk, Regina and Gregor, Paul}, + pages = {1--10}, + doi = {10.1016/j.bbagen.2013.09.023} +} + +@article{rajapakse_small_2007, + title = {{Small molecule inhibitors of the alpha4-paxillin interaction}}, + year = {2012}, + author = {Ginsberg, M and Kummer, C}, + pages = {966--971}, + volume = {7}, + url = {https://www.google.com/patents/US20120245194} +} + +@article{jarvis_small_2010, + title = {{Small molecule inhibitors of the neuropilin-1 vascular endothelial growth factor A ({\{}VEGF{\}}-A) interaction}}, + author = {Jarvis, Ashley and Allerston, Charles K and Jia, Haiyan and Herzog, Birger and Garza-Garcia, Acely and Winfield, Natalie and Ellard, Katie and Aqil, Rehan and Lynch, Rosemary and Chapman, Chris and Hartzoulakis, Basil and Nally, James and Stewart, Mark and Cheng, Lili and Menon, Malini and Tickner, Michelle and Djordjevic, Snezana and Driscoll, Paul C and Zachary, Ian and Selwood, David L}, + pages = {2215--2226}, + volume = {53}, + doi = {10.1021/jm901755g} +} + +@article{smithgall_small_2013, + title = {{Small molecule inhibitors of the {\{}HIV{\}}-1 virulence factor, Nef}}, + author = {Smithgall, Thomas E and Thomas, Gary}, + pages = {e523--e529}, + volume = {10}, + doi = {10.1016/j.ddtec.2013.07.002} +} + +@article{bowman_small_2007, + title = {{Small molecule inhibitors of the {\{}MDM{\}}2-p53 interaction discovered by ensemble-based receptor models.}}, + author = {Bowman, Anna L and Nikolovska-Coleska, Zaneta and Zhong, Haizhen and Wang, Shaomeng and Carlson, Heather A}, + pages = {12809--12814}, + volume = {129}, + doi = {10.1021/ja073687x} +} + +@article{jordheim_small_2013, + title = {{Small molecule inhibitors of {\{}ERCC{\}}1-{\{}XPF{\}} protein-protein interaction synergize alkylating agents in cancer cells.}}, + author = {Jordheim, L P and Barakat, K H and Heinrich-Balard, L and Matera, E L and Cros-Perrial, E and Bouledrak, K and El Sabeh, R and Perez-Pineiro, R and Wishart, D S and Cohen, R and Tuszynski, J and Dumontet, C}, + pages = {12--24}, + volume = {84}, + doi = {10.1124/mol.112.082347} +} + +@article{erbe_small_2002, + title = {{Small molecule ligands define a binding site on the immune regulatory protein B7.1.}}, + author = {Erbe, David V and Wang, Suyue and Xing, Yuzhe and Tobin, James F}, + pages = {7363--7368}, + volume = {277}, + doi = {10.1074/jbc.M110162200} +} + +@article{nguyen_small_2007, + title = {{Small molecule obatoclax ({\{}GX{\}}15-070) antagonizes {\{}MCL{\}}-1 and overcomes {\{}MCL{\}}-1-mediated resistance to apoptosis}}, + author = {Nguyen, Mai and Marcellus, Richard C and Roulston, Anne and Watson, Mark and Serfass, Lucile and Murthy Madiraju, S R and Goulet, Daniel and Viallet, Jean and B{\'{e}}lec, Laurent and Billot, Xavier and Acoca, Stephane and Purisima, Enrico and Wiegmans, Adrian and Cluse, Leonie and Johnstone, Ricky W and Beauparlant, Pierre and Shore, Gordon C}, + pages = {19512--19517}, + volume = {104}, + doi = {10.1073/pnas.0709443104} +} + +@article{dudkina_small_2007, + title = {{Small Molecule Protein-Protein Inhibitors for the p53-MDM2 Interaction}}, + year = {2007}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Dudkina, Anna and Lindsley, Craig}, + number = {10}, + pages = {952--960}, + volume = {7}, + doi = {10.2174/156802607780906762}, + issn = {15680266} +} + +@article{blazer_small_2009, + title = {{Small molecule protein-protein interaction inhibitors as {\{}CNS{\}} therapeutic agents: current progress and future hurdles.}}, + author = {Blazer, Levi L and Neubig, Richard R}, + pages = {126--141}, + volume = {34}, + doi = {10.1038/npp.2008.151} +} + +@article{Vervier2016Large-scaleClassification, + title = {{Large-scale machine learning for metagenomics sequence classification}}, + year = {2016}, + journal = {Bioinformatics}, + author = {Vervier, Kévin and Mah{\'{e}}, Pierre and Tournoud, Maud and Veyrieras, Jean-Baptiste and Vert, Jean-Philippe}, + number = {7}, + month = {4}, + pages = {1023--1032}, + volume = {32}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/26589281 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC4896366 https://academic.oup.com/bioinformatics/article-lookup/doi/10.1093/bioinformatics/btv683}, + doi = {10.1093/bioinformatics/btv683}, + issn = {1367-4803}, + pmid = {26589281} +} + +@article{Lounkine2012Large-scaleTargets, + title = {{Large-scale prediction and testing of drug activity on side-effect targets}}, + year = {2012}, + journal = {Nature}, + author = {Lounkine, Eugen and Keiser, Michael J. and Whitebread, Steven and Mikhailov, Dmitri and Hamon, Jacques and Jenkins, Jeremy L. and Lavan, Paul and Weber, Eckhard and Doak, Allison K. and C{\^{o}}t{\'{e}}, Serge and Shoichet, Brian K. and Urban, Laszlo}, + number = {7403}, + pages = {361--367}, + volume = {486}, + doi = {10.1038/nature11159}, + issn = {00280836} +} + +@article{Heikamp2011Large-scaleSets, + title = {{Large-scale similarity search profiling of ChEMBL compound data sets}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Heikamp, Kathrin and Bajorath, Jürgen}, + number = {8}, + pages = {1831--1839}, + volume = {51}, + doi = {10.1021/ci200199u}, + issn = {15499596} +} + +@article{Sanchez2013LasArgentina, + title = {{Las instituciones de ciencia y tecnolog{\'{i}}a en los procesos de aprendizaje de la producci{\'{o}}n agroalimentaria en Argentina}}, + year = {2013}, + journal = {El sistema argentino de innovaci{\'{o}}n: instituciones, empresas y redes. El desaf{\'{i}}o de la creaci{\'{o}}n y apropiaci{\'{o}}n de conocimiento.}, + author = {Sanchez, Guillermo}, + pages = {1--27}, + isbn = {9789876301596}, + doi = {10.1002/prot}, + keywords = {CONICET, FONCYT, INTA, INTI, arroz, l{\'{a}}cteos, olivo, sistemas de innovaci{\'{o}}n, vinos, vitivinicultura} +} + +@article{Sanchez2013LasArgentinab, + title = {{Las instituciones de ciencia y tecnolog{\'{i}}a en los procesos de aprendizaje de la producci{\'{o}}n agroalimentaria en Argentina}}, + year = {2013}, + journal = {El sistema argentino de innovaci{\'{o}}n: instituciones, empresas y redes. El desaf{\'{i}}o de la creaci{\'{o}}n y apropiaci{\'{o}}n de conocimiento.}, + author = {Sanchez, Guillermo}, + pages = {845--851}, + isbn = {9789876301596}, + doi = {10.1002/prot}, + keywords = {CONICET, FONCYT, INTA, INTI, arroz, l{\'{a}}cteos, olivo, sistemas de innovaci{\'{o}}n, vinos, vitivinicultura} +} + +@article{Winter2019LearningRepresentations, + title = {{Learning continuous and data-driven molecular descriptors by translating equivalent chemical representations}}, + year = {2019}, + journal = {Chemical Science}, + author = {Winter, Robin and Montanari, Floriane and No{\'{e}}, Frank and Clevert, Djork-Arné}, + number = {6}, + pages = {1692--1701}, + volume = {10}, + url = {http://xlink.rsc.org/?DOI=C8SC04175J}, + doi = {10.1039/C8SC04175J}, + issn = {2041-6520} +} + +@article{Winter2019LearningRepresentationsb, + title = {{Learning continuous and data-driven molecular descriptors by translating equivalent chemical representations}}, + year = {2019}, + journal = {Chemical Science}, + author = {Winter, Robin and Montanari, Floriane and No{\'{e}}, Frank and Clevert, Djork-Arné}, + number = {6}, + pages = {1692--1701}, + volume = {10}, + url = {http://xlink.rsc.org/?DOI=C8SC04175J}, + doi = {10.1039/C8SC04175J}, + issn = {2041-6520} +} + +@article{Davis2013LearningScreening, + title = {{Learning from our mistakes: The 'unknown knowns' in fragment screening}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Davis, Ben J. and Erlanson, Daniel A.}, + number = {10}, + pages = {2844--2852}, + volume = {23}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2013.03.028}, + doi = {10.1016/j.bmcl.2013.03.028}, + issn = {14643405} +} + +@article{Teague2011LearningMarket, + title = {{Learning lessons from drugs that have recently entered the market}}, + year = {2011}, + journal = {Drug Discovery Today}, + author = {Teague, Simon J.}, + number = {9-10}, + month = {5}, + pages = {398--411}, + volume = {16}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1359644611000754 http://www.ncbi.nlm.nih.gov/pubmed/21414418}, + doi = {10.1016/j.drudis.2011.03.003}, + issn = {13596446}, + pmid = {21414418} +} + +@article{Sperandio2015LesProteine-proteine, + title = {{Les chimioth{\`{e}}ques ciblant les interactions prot{\'{e}}ine-prot{\'{e}}ine}}, + year = {2015}, + journal = {Medecine/Sciences}, + author = {Sperandio, Olivier and Villoutreix, Bruno O. and Morelli, Xavier and Roche, Philippe}, + number = {3}, + pages = {312--319}, + volume = {31}, + doi = {10.1051/medsci/20153103017}, + issn = {19585381}, + pmid = {25855285} +} + +@article{Chen2009LessonsCampaigns, + title = {{Lessons for fragment library design: Analysis of output from multiple screening campaigns}}, + year = {2009}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Chen, I. Jen and Hubbard, Roderick E.}, + number = {8}, + pages = {603--620}, + volume = {23}, + doi = {10.1007/s10822-009-9280-5}, + issn = {0920654X}, + keywords = {Chemical space, Fragment based drug discovery, Fragment screening, Library design} +} + +@article{Chen2009LessonsCampaignsb, + title = {{Lessons for fragment library design: Analysis of output from multiple screening campaigns}}, + year = {2009}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Chen, I. Jen and Hubbard, Roderick E.}, + number = {8}, + pages = {603--620}, + volume = {23}, + doi = {10.1007/s10822-009-9280-5}, + issn = {0920654X}, + keywords = {Chemical space, Fragment based drug discovery, Fragment screening, Library design} +} + +@article{Villemagne2014LigandApproaches, + title = {{Ligand efficiency driven design of new inhibitors of mycobacterium tuberculosis transcriptional repressor EthR using fragment growing, merging, and linking approaches}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Villemagne, Baptiste and Flipo, Marion and Blondiaux, Nicolas and Crauste, Céline and Malaquin, Sandra and Leroux, Florence and Piveteau, Catherine and Villeret, Vincent and Brodin, Priscille and Villoutreix, Bruno O. and Sperandio, Olivier and Soror, Sameh H. and Wohlk{\"{o}}nig, Alexandre and Wintjens, René and Deprez, Benoit and Baulard, Alain R. and Willand, Nicolas}, + number = {11}, + pages = {4876--4888}, + volume = {57}, + isbn = {1520-4804 (Electronic){\textbackslash}r0022-2623 (Linking)}, + doi = {10.1021/jm500422b}, + issn = {15204804}, + pmid = {24818704} +} + +@article{Abad-Zapatero2010LigandRepresentation, + title = {{Ligand efficiency indices for an effective mapping of chemico-biological space: The concept of an atlas-like representation}}, + year = {2010}, + journal = {Drug Discovery Today}, + author = {Abad-Zapatero, Cele and Peri{\v{s}}i{\'{c}}, Ognjen and Wass, John and Bento, A. PatrÃcia and Overington, John and Al-Lazikani, Bissan and Johnson, Michael E.}, + number = {19-20}, + pages = {804--811}, + volume = {15}, + doi = {10.1016/j.drudis.2010.08.004}, + issn = {13596446} +} + +@article{Hopkins2004LigandSelection, + title = {{Ligand efficiency: A useful metric for lead selection}}, + year = {2004}, + journal = {Drug Discovery Today}, + author = {Hopkins, Andrew L. and Groom, Colin R. and Alex, Alexander}, + number = {10}, + pages = {430--431}, + volume = {9}, + doi = {10.1016/S1359-6446(04)03069-7}, + issn = {13596446}, + keywords = {Drug Discovery, Drugs, Lead optimization, Ligands, Pharmaceutical Science, Potency, Techniques {\&} Methods} +} + +@article{Quintus2009LigandSimilarity, + title = {{Ligand scaffold hopping combining 3D maximal substructure search and molecular similarity}}, + year = {2009}, + journal = {BMC Bioinformatics}, + author = {Quintus, Flavien and Sperandio, Olivier and Grynberg, Julien and Petitjean, Michel and Tuffery, Pierre}, + pages = {245}, + volume = {10}, + isbn = {1471210510}, + doi = {10.1186/1471-2105-10-245}, + issn = {14712105}, + pmid = {19671127} +} + +@article{Quintus2009LigandSimilarityb, + title = {{Ligand scaffold hopping combining 3D maximal substructure search and molecular similarity}}, + year = {2009}, + journal = {BMC Bioinformatics}, + author = {Quintus, Flavien and Sperandio, Olivier and Grynberg, Julien and Petitjean, Michel and Tuffery, Pierre}, + pages = {245}, + volume = {10}, + isbn = {1471210510}, + doi = {10.1186/1471-2105-10-245}, + issn = {14712105} +} + +@article{Wolber2005LigandScout:Filters, + title = {{LigandScout: 3-D pharmacophores derived from protein-bound ligands and their use as virtual screening filters}}, + year = {2005}, + journal = {Journal of Chemical Information and Modeling}, + author = {Wolber, Gerhard and Langer, Thierry}, + number = {1}, + pages = {160--169}, + volume = {45}, + doi = {10.1021/ci049885e}, + issn = {15499596} +} + +@article{Skalic2019LigVoxel:Networks, + title = {{LigVoxel: Inpainting binding pockets using 3D-convolutional neural networks}}, + year = {2019}, + journal = {Bioinformatics}, + author = {Skalic, Miha and Varela-Rial, Alejandro and Jim{\'{e}}nez, José and Mart{\'{i}}nez-Rosell, Gerard and De Fabritiis, Gianni}, + number = {2}, + month = {1}, + pages = {243--250}, + volume = {35}, + publisher = {Oxford University Press}, + doi = {10.1093/bioinformatics/bty583}, + issn = {14602059} +} + +@misc{LigVoxel:PubMed, + title = {{LigVoxel: Inpainting Binding Pockets Using 3D-convolutional Neural Networks - PubMed}}, + url = {https://pubmed.ncbi.nlm.nih.gov/29982392/} +} + +@article{Jain2009LoneCompounds, + title = {{Lone pair ⋯ {$\pi$} interactions between water oxygens and aromatic residues: Quantum chemical studies based on high-resolution protein structures and model compounds}}, + year = {2009}, + journal = {Protein Science}, + author = {Jain, Alok and Ramanathan, Venkatnarayan and Sankararamakrishnan, Ramasubbu}, + number = {3}, + pages = {595--605}, + volume = {18}, + doi = {10.1002/pro.67}, + issn = {09618368}, + keywords = {Ab initio calculation, B-factors, Crystal structure analysis, Dispersion energy, Noncovalent interaction, Water-aromatic interactions} +} + +@article{Benjannet2012Loss-Degradation, + title = {{Loss- and gain-of-function PCSK9 variants: Cleavage specificity, dominant negative effects, and low density lipoprotein receptor (LDLR) degradation}}, + year = {2012}, + journal = {Journal of Biological Chemistry}, + author = {Benjannet, Suzanne and Hamelin, Josée and Chr{\'{e}}tien, Michel and Seidah, Nabil G.}, + number = {40}, + pages = {33745--33755}, + volume = {287}, + doi = {10.1074/jbc.M112.399725}, + issn = {00219258}, + keywords = {autocatalytic zymogen processing, dominant negative, gain-of-function, hypercholesterolemia, ldl-, ldlr degradation, loss-of-function, pcsk9 mutants, proprotein convertase pcsk9} +} + +@article{Tobert2003LovastatinInhibitors, + title = {{Lovastatin and beyond: The history of the HMG-CoA reductase inhibitors}}, + year = {2003}, + journal = {Nature Reviews Drug Discovery}, + author = {Tobert, Jonathan A.}, + number = {7}, + pages = {517--526}, + volume = {2}, + doi = {10.1038/nrd1112}, + issn = {14741776} +} + +@article{Lavecchia2015Machine-learningApplications., + title = {{Machine-learning approaches in drug discovery: methods and applications.}}, + year = {2015}, + journal = {Drug discovery today}, + author = {Lavecchia, Antonio}, + number = {3}, + month = {3}, + pages = {318--31}, + volume = {20}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1359644614004176 http://www.ncbi.nlm.nih.gov/pubmed/25448759}, + doi = {10.1016/j.drudis.2014.10.012}, + issn = {1878-5832}, + pmid = {25448759} +} + +@article{Masi2017MechanismsBacteria, + title = {{Mechanisms of envelope permeability and antibiotic influx and efflux in Gram-negative bacteria}}, + year = {2017}, + journal = {Nature Microbiology}, + author = {Masi, Muriel and R{\'{e}}fregiers, Matthieu and Pos, Klaas M. and Pag{\`{e}}s, Jean Marie}, + doi = {10.1038/nmicrobiol.2017.1}, + issn = {20585276} +} + +@article{Surdo2011MechanisticPH, + title = {{Mechanistic implications for LDL receptor degradation from the PCSK9/LDLR structure at neutral pH}}, + year = {2011}, + journal = {EMBO Reports}, + author = {Surdo, Paola Lo and Bottomley, Matthew J. and Calzetta, Alessandra and Settembre, Ethan C. and Cirillo, Agostino and Pandit, Shilpa and Ni, Yan G. and Hubbard, Brian and Sitlani, Ayesha and Carf{\'{i}}, Andrea}, + number = {12}, + pages = {1300--1305}, + volume = {12}, + doi = {10.1038/embor.2011.205}, + issn = {1469221X}, + keywords = {LDL, PCSK9, hypercholesterolaemia, receptor, structure} +} + +@article{Sperandio2009MED-3DMC:Space, + title = {{MED-3DMC: A new tool to generate 3D conformation ensembles of small molecules with a Monte Carlo sampling of the conformational space}}, + year = {2009}, + journal = {European Journal of Medicinal Chemistry}, + author = {Sperandio, Olivier and Souaille, Marc and Delfaud, François and Miteva, Maria A. and Villoutreix, Bruno O.}, + number = {4}, + pages = {1405--1409}, + volume = {44}, + doi = {10.1016/j.ejmech.2008.09.052}, + issn = {02235234}, + keywords = {MED-3DMC, Multiconformational ensemble, Virtual ligand screening} +} + +@article{Sperandio2007MED-SuMoLig:Hopping, + title = {{MED-SuMoLig: A new ligand-based screening tool for efficient scaffold hopping}}, + year = {2007}, + journal = {Journal of Chemical Information and Modeling}, + author = {Sperandio, Olivier and Andrieu, Olivier and Miteva, Maria A. and Vo, Minh Quane and Souaille, Marc and Delfaud, François and Villoutreix, Bruno O.}, + number = {3}, + pages = {1097--1110}, + volume = {47}, + isbn = {1549-9596}, + doi = {10.1021/ci700031v}, + issn = {15499596}, + pmid = {17477521} +} + +@article{He2005Medicine:TNF-, + title = {{Medicine: Small-molecule inhibition of TNF-{$\alpha$}}}, + year = {2005}, + journal = {Science}, + author = {He, Molly M. and Smith, Annemarie Stroustrup and Oslob, Johan D. and Flanagan, William M. and Braisted, Andrew C. and Whitty, Adrian and Cancilla, Mark T. and Wang, Jun and Lugovskoy, Alexey A. and Yoburn, Josh C. and Fung, Amy D. and Farrington, Graham and Eldredge, John K. and Day, Eric S. and Cruz, Leslie A. and Cachero, Teresa G. and Miller, Stephan K. and Friedman, Jessica E. and Choong, Ingrid C. and Cunningham, Brian C.}, + number = {5750}, + pages = {1022--1025}, + volume = {310}, + doi = {10.1126/science.1116304}, + issn = {00368075} +} + +@article{Fan2011MET-independentAgents, + title = {{MET-independent lung cancer cells evading EGFR kinase inhibitors are therapeutically susceptible to BH3 mimetic agents}}, + year = {2011}, + journal = {Cancer Research}, + author = {Fan, Weiwen and Tang, Zhe and Yin, Lihong and Morrison, Bei and Hafez-Khayyata, Said and Fu, Pingfu and Huang, Honglian and Bagai, Rakesh and Jiang, Shan and Kresak, Adam and Howell, Scott and Vasanji, Amit and Flask, Chris A. and Halmos, Balazs and Koon, Henry and Ma, Patrick C.}, + number = {13}, + pages = {4494--4505}, + volume = {71}, + doi = {10.1158/0008-5472.CAN-10-2668}, + issn = {00085472} +} + +@article{Leung2012MethylBinding, + title = {{Methyl E ff ects on Protein − Ligand Binding}}, + year = {2012}, + author = {Leung, Cheryl S and Leung, Siegfried S F and Tirado-rives, Julian and Jorgensen, William L} +} + +@article{Thompson2011MicroscaleInteractions, + title = {{Microscale mesoarrays created by dip-pen nanolithography for screening of protein-protein interactions}}, + year = {2011}, + journal = {Biosensors and Bioelectronics}, + author = {Thompson, David G. and McKenna, Ekaterina O. and Pitt, Andrew and Graham, Duncan}, + number = {12}, + pages = {4667--4673}, + volume = {26}, + publisher = {Elsevier B.V.}, + url = {http://dx.doi.org/10.1016/j.bios.2011.04.040}, + doi = {10.1016/j.bios.2011.04.040}, + issn = {09565663}, + keywords = {Bionanotechnology, DPN, Mesoarrays, Protein-protein interaction} +} + +@article{DeLuca2012MiningApproaches, + title = {{Mining chemical reactions using neighborhood behavior and condensed graphs of reactions approaches}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {De Luca, Aurélie and Horvath, Dragos and Marcou, Gilles and Solov'Ev, Vitaly and Varnek, Alexandre}, + number = {9}, + pages = {2325--2338}, + volume = {52}, + doi = {10.1021/ci300149n}, + issn = {15499596} +} + +@article{Varin2011MiningData, + title = {{Mining for bioactive scaffolds with scaffold networks: Improved compound set enrichment from primary screening data}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Varin, Thibault and Schuffenhauer, Ansgar and Ertl, Peter and Renner, Steffen}, + number = {7}, + pages = {1528--1538}, + volume = {51}, + doi = {10.1021/ci2000924}, + issn = {15499596} +} + +@article{Ranu2009MiningClassification, + title = {{Mining statistically significant molecular substructures for efficient molecular classification}}, + year = {2009}, + journal = {Journal of Chemical Information and Modeling}, + author = {Ranu, Sayan and Singh, Ambuj K.}, + number = {11}, + pages = {2537--2550}, + volume = {49}, + doi = {10.1021/ci900035z}, + issn = {15499596} +} + +@article{Cisneros2012MinorElongation, + title = {{Minor pseudopilin self-assembly primes type II secretion pseudopilus elongation}}, + year = {2012}, + journal = {EMBO Journal}, + author = {Cisneros, David A. and Bond, Peter J. and Pugsley, Anthony P. and Campos, Manuel and Francetic, Olivera}, + doi = {10.1038/emboj.2011.454}, + issn = {02614189}, + keywords = {bacterial protein secretion, membrane proteins, molecular dynamics, pilus assembly, type IV pili} +} + +@article{Parhofer2012Mipomersen:Hypercholesterolemia, + title = {{Mipomersen: Evidence-based review of its potential in the treatment of homozygous and severe heterozygous familial hypercholesterolemia}}, + year = {2012}, + journal = {Core Evidence}, + author = {Parhofer, Klaus G.}, + pages = {29--38}, + volume = {7}, + doi = {10.2147/CE.S25239}, + issn = {15551741}, + keywords = {Antisense oligonucleotide, Apolipoprotein B, Statin intolerance} +} + +@article{Donner2012MissingAcids, + title = {{Missing amino acids}}, + year = {2012}, + journal = {Nature Chemical Biology}, + author = {Donner, Amy}, + number = {11}, + pages = {873--873}, + volume = {8}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1103}, + doi = {10.1038/nchembio.1103}, + issn = {1552-4450} +} + +@article{Milroy2013ModulatorsInteractions, + title = {{Modulators of Protein  Protein Interactions}}, + year = {2013}, + author = {Milroy, Lech-gustav and Grossmann, Tom N and Hennig, Sven and Brunsveld, Luc and Ottmann, Christian} +} + +@article{Hyock2008MolecularPCSK9, + title = {{Molecular basis for LDL receptor recognition by PCSK9}}, + year = {2008}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Hyock, Joo Kwon and Lagace, Thomas A. and McNutt, Markey C. and Horton, Jay D. and Deisenhofer, Johann}, + number = {6}, + pages = {1820--1825}, + volume = {105}, + doi = {10.1073/pnas.0712064105}, + issn = {00278424}, + keywords = {Crystal structure, Hypercholesterolemia, Proprotein convertase} +} + +@article{Grembecka2010MolecularLeukemias, + title = {{Molecular basis of the mixed lineage leukemia-menin interaction: Implications for targeting mixed lineage leukemias}}, + year = {2010}, + journal = {Journal of Biological Chemistry}, + author = {Grembecka, Jolanta and Belcher, Amalia M. and Hartley, Thomas and Cierpicki, Tomasz}, + number = {52}, + pages = {40690--40698}, + volume = {285}, + doi = {10.1074/jbc.M110.172783}, + issn = {00219258} +} + +@article{Lin2009MolecularStat3, + title = {{Molecular dynamics simulations of the conformational changes in signal transducers and activators of transcription, Stat1 and Stat3}}, + year = {2009}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Lin, Jianping and Buettner, Ralf and Yuan, Yate Ching and Yip, Richard and Horne, David and Jove, Richard and Vaidehi, Nagarajan}, + number = {4}, + pages = {347--356}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.08.013}, + issn = {10933263}, + keywords = {Clustering, Correlation map, Domain motion, Druggable pocket, Molecular dynamics, Signal transducers and activators of transcription} +} + +@misc{Blair2015MolecularResistance, + title = {{Molecular mechanisms of antibiotic resistance}}, + year = {2015}, + booktitle = {Nature Reviews Microbiology}, + author = {Blair, Jessica M.A. and Webber, Mark A. and Baylay, Alison J. and Ogbolu, David O. and Piddock, Laura J.V.}, + doi = {10.1038/nrmicro3380}, + issn = {17401534} +} + +@article{Hann2011MolecularDiscovery, + title = {{Molecular obesity, potency and other addictions in drug discovery}}, + year = {2011}, + journal = {MedChemComm}, + author = {Hann, Michael M.}, + number = {5}, + pages = {349--355}, + volume = {2}, + doi = {10.1039/c1md00017a}, + issn = {20402503} +} + +@article{Hu2010MolecularCliffs, + title = {{Molecular scaffolds with high propensity to form multi-target activity cliffs}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Hu, Ye and Bajorath, Jürgen}, + number = {4}, + pages = {500--510}, + volume = {50}, + doi = {10.1021/ci100059q}, + issn = {15499596} +} + +@article{Hoksza2014Molpher:Exploration, + title = {{Molpher: A software framework for systematic chemical space exploration}}, + year = {2014}, + journal = {Journal of Cheminformatics}, + author = {Hoksza, David and {\v{S}}koda, Petr and Vor{\v{s}}il{\'{a}}k, Milan and Svozil, Daniel}, + number = {1}, + pages = {1--13}, + volume = {6}, + publisher = {Journal of Cheminformatics}, + url = {Journal of Cheminformatics}, + doi = {10.1186/1758-2946-6-7}, + issn = {17582946}, + keywords = {Chemical biology tools, Chemical space exploration, De-novo design, In silico ligand design, Lead discovery, Structure generation} +} + +@article{Awale2013MQN-mapplet:GDB-13, + title = {{MQN-mapplet: Visualization of chemical space with interactive maps of DrugBank, ChEMBL, PubChem, GDB-11, and GDB-13}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Awale, Mahendra and Van Deursen, Ruud and Reymond, Jean Louis}, + number = {2}, + pages = {509--518}, + volume = {53}, + doi = {10.1021/ci300513m}, + issn = {15499596} +} + +@article{Labbe2015MTiOpenScreen:Screening, + title = {{MTiOpenScreen: A web server for structure-based virtual screening}}, + year = {2015}, + journal = {Nucleic Acids Research}, + author = {Labb{\'{e}}, Céline M. and Rey, Julien and Lagorce, David and Vavru{\v{s}}a, Marek and Becot, JéRome and Sperandio, Olivier and Villoutreix, Bruno O. and Tuff{\'{e}}ry, Pierre and Miteva, Maria A.}, + number = {W1}, + pages = {W448-W454}, + volume = {43}, + doi = {10.1093/nar/gkv306}, + issn = {13624962} +} + +@article{Labbe2015MTiOpenScreen:Screeningb, + title = {{MTiOpenScreen: A web server for structure-based virtual screening}}, + year = {2015}, + journal = {Nucleic Acids Research}, + author = {Labb{\'{e}}, Céline M. and Rey, Julien and Lagorce, David and Vavru{\v{s}}a, Marek and Becot, JéRome and Sperandio, Olivier and Villoutreix, Bruno O. and Tuff{\'{e}}ry, Pierre and Miteva, Maria A.}, + number = {W1}, + pages = {W448-W454}, + volume = {43}, + doi = {10.1093/nar/gkv306}, + issn = {13624962} +} + +@article{BenNasr2013MultipleQuery, + title = {{Multiple structures for virtual ligand screening: Defining binding site properties-based criteria to optimize the selection of the query}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Ben Nasr, Nesrine and Guillemain, Hélene and Lagarde, Nathalie and Zagury, Jean Francois and Montes, Matthieu}, + number = {2}, + pages = {293--311}, + volume = {53}, + doi = {10.1021/ci3004557}, + issn = {15499596} +} + +@article{Breaker2004NaturalBiology, + title = {{Natural and engineered nucleic acids as tools to explore biology}}, + year = {2004}, + journal = {Nature}, + author = {Breaker, Ronald R.}, + number = {7019}, + pages = {838--845}, + volume = {432}, + doi = {10.1038/nature03195}, + issn = {00280836} +} + +@article{Over2013Natural-product-derivedDiscovery, + title = {{Natural-product-derived fragments for fragment-based ligand discovery}}, + year = {2013}, + journal = {Nature Chemistry}, + author = {Over, Björn and Wetzel, Stefan and Gr{\"{u}}tter, Christian and Nakai, Yasushi and Renner, Steffen and Rauh, Daniel and Waldmann, Herbert}, + number = {1}, + pages = {21--28}, + volume = {5}, + doi = {10.1038/nchem.1506}, + issn = {17554330}, + pmid = {23247173} +} + +@article{Lipinski2004NavigatingMedicine, + title = {{Navigating chemical space for biology and medicine}}, + year = {2004}, + journal = {Nature}, + author = {Lipinski, Christopher and Hopkins, Andrew}, + number = {7019}, + pages = {855--861}, + volume = {432}, + doi = {10.1038/nature03193}, + issn = {00280836}, + pmid = {15602551} +} + +@article{Cover1967NearestClassification, + title = {{Nearest Neighbor Pattern Classification}}, + year = {1967}, + journal = {IEEE Transactions on Information Theory}, + author = {Cover, T. M. and Hart, P. E.}, + number = {1}, + pages = {21--27}, + volume = {13}, + doi = {10.1109/TIT.1967.1053964}, + issn = {15579654} +} + +@article{Garcia-Garcia2012NetworksDetails, + title = {{Networks of protein-protein interactions: From uncertainty to molecular details}}, + year = {2012}, + journal = {Molecular Informatics}, + author = {Garcia-Garcia, Javier and Bonet, Jaume and Guney, Emre and Fornes, Oriol and Planas, Joan and Oliva, Baldo}, + number = {5}, + pages = {342--362}, + volume = {31}, + doi = {10.1002/minf.201200005}, + issn = {18681743}, + keywords = {Computational methods, Experimental methods, Interactome, Interface, Protein interactions} +} + +@article{Hasegawa2012NewMap, + title = {{New description of protein-ligand interactions using a spherical self-organizing map}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Hasegawa, Kiyoshi and Funatsu, Kimito}, + number = {18}, + pages = {5410--5415}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.03.041}, + doi = {10.1016/j.bmc.2012.03.041}, + issn = {09680896}, + keywords = {Caspase-3 inhibitors, Molecular electrostatic potential, Protein-ligand interactions, Quantitative structure-activity relationship, Spherical self-organizing map} +} + +@article{Mullard2014NewDevelop, + title = {{New drugs cost US{\$}2.6 billion to develop}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + author = {Mullard, Asher}, + number = {12}, + pages = {877--877}, + volume = {13}, + doi = {10.1038/nrd4507}, + issn = {1474-1776} +} + +@article{Kozakov2015NewDruggability, + title = {{New Frontiers in Druggability}}, + year = {2015}, + journal = {Journal of Medicinal Chemistry}, + author = {Kozakov, Dima and Hall, David R. and Napoleon, Raeanne L. and Yueh, Christine and Whitty, Adrian and Vajda, Sandor}, + number = {23}, + pages = {9063--9088}, + volume = {58}, + doi = {10.1021/acs.jmedchem.5b00586}, + issn = {15204804} +} + +@article{Maingot2010NewScaffold, + title = {{New non-hydroxamic ADAMTS-5 inhibitors based on the 1,2,4-triazole-3-thiol scaffold}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Maingot, Lucie and Leroux, Florence and Landry, Valérie and Dumont, Julie and Nagase, Hideaki and Villoutreix, Bruno and Sperandio, Olivier and Deprez-Poulain, Rebecca and Deprez, Benoit}, + number = {21}, + pages = {6213--6216}, + volume = {20}, + isbn = {1464-3405 (Electronic){\textbackslash}r0960-894X (Linking)}, + doi = {10.1016/j.bmcl.2010.08.108}, + issn = {0960894X}, + pmid = {20846863}, + keywords = {1, 2, 4-Triazol-3-thiol, ADAMTS-5, Metalloprotease, Triazol-5-thiol} +} + +@article{Maingot2010NewScaffoldb, + title = {{New non-hydroxamic ADAMTS-5 inhibitors based on the 1,2,4-triazole-3-thiol scaffold}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Maingot, Lucie and Leroux, Florence and Landry, Valérie and Dumont, Julie and Nagase, Hideaki and Villoutreix, Bruno and Sperandio, Olivier and Deprez-Poulain, Rebecca and Deprez, Benoit}, + number = {21}, + pages = {6213--6216}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2010.08.108}, + doi = {10.1016/j.bmcl.2010.08.108}, + issn = {0960894X}, + keywords = {1,2,4-Triazol-3-thiol, ADAMTS-5, Metalloprotease, Triazol-5-thiol} +} + +@article{DeLuca2013NewAssays, + title = {{New scaffolds of natural origin as Integrase-LEDGF/p75 interaction inhibitors: Virtual screening and activity assays}}, + year = {2013}, + journal = {European Journal of Medicinal Chemistry}, + author = {De Luca, Laura and Morreale, Francesca and Christ, Frauke and Debyser, Zeger and Ferro, Stefania and Gitto, Rosaria}, + pages = {405--411}, + volume = {68}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2013.07.025}, + doi = {10.1016/j.ejmech.2013.07.025}, + issn = {17683254}, + keywords = {HIV-1 Integrase, LEDGF/p75, LEDGINs, Natural products, Protein-protein interaction inhibitors, Virtual screening} +} + +@article{Edwards2016NewsAnalysis, + title = {{News Analysis}}, + year = {2016}, + journal = {Engineering and Technology}, + author = {Edwards, Chris}, + number = {4}, + pages = {16--17}, + volume = {11}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3680}, + doi = {10.1049/et.2016.0418}, + issn = {17509637} +} + +@article{MOE2012NoTitle, + title = {{No Title}}, + year = {2012}, + journal = {Chemical Computing Group, Inc}, + author = {MOE, MOE} +} + +@article{MOE2012NoTitleb, + title = {{No Title}}, + year = {2012}, + journal = {Chemical Computing Group, Inc}, + author = {MOE, MOE} +} + +@article{1392No, + title = {{No Title آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡ های Ù†ÙØªÛŒ انرژی زا}}, + year = {1392}, + journal = {شرکت ملی پخش ÙØ±Ø¢Ø±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی‎زا}, + author = {زا, آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی}, + pages = {1--12} +} + +@article{1392Nob, + title = {{No Title آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡ های Ù†ÙØªÛŒ انرژی زا}}, + year = {1392}, + journal = {شرکت ملی پخش ÙØ±Ø¢Ø±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی‎زا}, + author = {زا, آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی}, + pages = {1--3} +} + +@article{1392Noc, + title = {{No Title آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡ های Ù†ÙØªÛŒ انرژی زا}}, + year = {1392}, + journal = {شرکت ملی پخش ÙØ±Ø¢Ø±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی‎زا}, + author = {زا, آمارنامه Ù…ØµØ±Ù ÙØ±Ø¢ÙˆØ±Ø¯Ù‡â€ŽÙ‡Ø§ÛŒ Ù†ÙØªÛŒ انرژی}, + pages = {1299} +} + +@article{Sun2010NonpeptidicProteins, + title = {{Nonpeptidic and potent small-molecule inhibitors of cIAP-1/2 and XIAP proteins}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Sun, Haiying and Lu, Jianfeng and Liu, Liu and Yi, Han and Qiu, Su and Yang, Chao Yie and Deschamps, Jeffrey R. and Wang, Shaomeng}, + number = {17}, + pages = {6361--6367}, + volume = {53}, + doi = {10.1021/jm100487z}, + issn = {00222623} +} + +@article{Leonard2006NovelActivity, + title = {{Novel 1,4-benzodiazepine-2,5-diones as Hdm2 antagonists with improved cellular activity}}, + year = {2006}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Leonard, Kristi and Marugan, Juan Jose and Raboisson, Pierre and Calvo, Raul and Gushue, Joan M. and Koblish, Holly K. and Lattanze, Jennifer and Zhao, Shuyuan and Cummings, Maxwell D. and Player, Mark R. and Maroney, Anna C. and Lu, Tianbao}, + number = {13}, + pages = {3463--3468}, + volume = {16}, + doi = {10.1016/j.bmcl.2006.04.009}, + issn = {0960894X}, + keywords = {Benzodiazepinedione, Hdm2, p53} +} + +@article{Rosen2009NovelProducts, + title = {{Novel Chemical Space Exploration via Natural Products}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Ros{\'{e}}n, Josefin and Gottfries, Johan and Muresan, Sorel and Backlund, Anders and Oprea, Tudor I.}, + number = {7}, + pages = {1953--1962}, + volume = {52}, + doi = {10.1021/jm801514w}, + issn = {00222623} +} + +@article{Li2009NovelI, + title = {{Novel cyclic-imide peptidomimetics as aminopeptidase N inhibitors. Design, chemistry and activity evaluation. Part I}}, + year = {2009}, + journal = {European Journal of Medicinal Chemistry}, + author = {Li, Qianbin and Fang, Hao and Wang, Xuejian and Hu, Liping and Xu, Wenfang}, + number = {12}, + pages = {4819--4825}, + volume = {44}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2009.07.022}, + doi = {10.1016/j.ejmech.2009.07.022}, + issn = {02235234}, + keywords = {Aminopeptidase N, Anti-tumor, Cyclic-imide, Peptidomimetics} +} + +@article{Du2011NovelProtein, + title = {{Novel domain interaction regulates secretion of proprotein convertase subtilisin/kexin type 9 (PCSK9) protein}}, + year = {2011}, + journal = {Journal of Biological Chemistry}, + author = {Du, Fen and Hui, Yvonne and Zhang, Michelle and Linton, MacRae F. and Fazio, Sergio and Fan, Daping}, + number = {50}, + pages = {43054--43061}, + volume = {286}, + doi = {10.1074/jbc.M111.273474}, + issn = {00219258} +} + +@article{Lee2010NovelInteractions, + title = {{Novel Pyrrolopyrimidine-Based R -Helix Mimetics : Cell-Permeable Inhibitors of Protein - Protein Interactions}}, + year = {2010}, + author = {Lee, Ji Hoon and Zhang, Qi and Jo, Sunhwan and Chai, Sergio C and Oh, Misook and Im, Wonpil and Lu, Hua and Lim, Hyun-suk}, + pages = {8--11} +} + +@article{DeSouza2009NovelTargets, + title = {{Novel therapeutic modalities to address nondrugable protein interaction targets}}, + year = {2009}, + journal = {Neuropsychopharmacology}, + author = {De Souza, Errol B. and Cload, Sharon T. and Pendergrast, Patrick Shannon and Sah, Dinah W.Y.}, + number = {1}, + pages = {142--158}, + volume = {34}, + doi = {10.1038/npp.2008.115}, + issn = {0893133X}, + keywords = {Antibodies, Antisense, Aptamers, Protein-protein interaction, Target validation, siRNA} +} + +@article{Agarwal2013NoveltyIndustry, + title = {{Novelty in the target landscape of the pharmaceutical industry}}, + year = {2013}, + journal = {Nature Reviews Drug Discovery}, + author = {Agarwal, Pankaj and Sanseau, Philippe and Cardon, Lon R.}, + number = {8}, + pages = {575--576}, + volume = {12}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd4089}, + doi = {10.1038/nrd4089}, + issn = {14741776} +} + +@article{Hartman1992ObligatoryCrosslin, + title = {{obligatory component of normal aggregation , inhibition of this GP IIb / IIIa-mediated event constitutes an attractive There are six putative recognition sites within fibrinogen for GP IIb / IIIa and thus fibrinogen acts as a hexavalent ligand to crosslin}}, + year = {1992}, + author = {Hartman, George D and Egbertson, Melissa S and Halczenko, Wasyl and Laswell, William L and Duggan, Mark E and Smith, Robert L and Naylor, Adel M and Manno, Patricia D and Lynch, Robert J and Zhang, Guixiang and Chang, Charles T and Gould, Robert J}, + pages = {4640--4642} +} + +@article{Fedorov2014OlegMu, + title = {{Oleg Fedorov, †, ‡ Hannah Lingard, †Chris Wells, †Octovia P. Monteiro, †, ‡ Sarah Picaud, †, {\S} Tracy Keates, †Clarence Yapp, †Martin Philpott, †Sarah J. Martin, †Ildiko Felletar, †Brian D. Marsden, †, ∥ Panagis Filippakopoulos, †, {\S} Susanne Mu}}, + year = {2014}, + author = {Fedorov, Oleg and Lingard, Hannah and Wells, Chris and Monteiro, Octovia P and Picaud, Sarah and Keates, Tracy and Yapp, Clarence and Philpott, Martin and Martin, Sarah J and Felletar, Ildiko and Marsden, Brian D and Filippakopoulos, Panagis and Mu, Susanne and Knapp, Stefan and Brennan, Paul E and Drive, Roosevelt and Ox, Oxford} +} + +@article{Adler2011OligophenylenaminonesMimicry, + title = {{Oligophenylenaminones as scaffolds for {$\alpha$}-helix mimicry}}, + year = {2011}, + journal = {Journal of Organic Chemistry}, + author = {Adler, Marc J. and Hamilton, Andrew D.}, + number = {17}, + pages = {7040--7047}, + volume = {76}, + doi = {10.1021/jo200917d}, + issn = {00223263} +} + +@article{Bista2012OnP53, + title = {{On the mechanism of action of SJ-172550 in inhibiting the interaction of MDM4 and p53}}, + year = {2012}, + journal = {PLoS ONE}, + author = {Bista, Michal and Smithson, David and Pecak, Aleksandra and Salinas, Gabriella and Pustelny, Katarzyna and Min, Jaeki and Pirog, Artur and Finch, Kristin and Zdzalik, Michal and Waddell, Brett and Wladyka, Benedykt and Kedracka-Krok, Sylwia and Dyer, Michael A. and Dubin, Grzegorz and Guy, R. Kiplin}, + number = {6}, + volume = {7}, + doi = {10.1371/journal.pone.0037518}, + issn = {19326203} +} + +@article{Nero2014OncogenicChallenges, + title = {{Oncogenic protein interfaces: Small molecules, big challenges}}, + year = {2014}, + journal = {Nature Reviews Cancer}, + author = {Nero, Tracy L. and Morton, Craig J. and Holien, Jessica K. and Wielens, Jerome and Parker, Michael W.}, + number = {4}, + pages = {248--262}, + volume = {14}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrc3690}, + doi = {10.1038/nrc3690}, + issn = {14741768} +} + +@article{Villoutreix2013OneDecade, + title = {{One hundred thousand mouse clicks down the road: Selected online resources supporting drug discovery collected over a decade}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Villoutreix, B.O. and Lagorce, D. and Labb{\'{e}}, C.M. and Sperandio, O. and Miteva, M.A.}, + number = {21-22}, + volume = {18}, + doi = {10.1016/j.drudis.2013.06.013}, + issn = {13596446} +} + +@article{Villoutreix2013OneDecadeb, + title = {{One hundred thousand mouse clicks down the road: Selected online resources supporting drug discovery collected over a decade}}, + year = {2013}, + journal = {Drug Discovery Today}, + author = {Villoutreix, Bruno O. and Lagorce, David and Labb{\'{e}}, Céline M. and Sperandio, Olivier and Miteva, Maria A.}, + number = {21-22}, + pages = {1081--1089}, + volume = {18}, + doi = {10.1016/j.drudis.2013.06.013}, + issn = {13596446} +} + +@article{OBoyle2011OpenToolbox, + title = {{Open Babel: An Open chemical toolbox}}, + year = {2011}, + journal = {Journal of Cheminformatics}, + author = {O'Boyle, Noel M. and Banck, Michael and James, Craig A. and Morley, Chris and Vandermeersch, Tim and Hutchison, Geoffrey R.}, + number = {10}, + volume = {3}, + doi = {10.1186/1758-2946-3-33}, + issn = {17582946} +} + +@article{Kallas2006OpenServices, + title = {{Open patent services}}, + year = {2006}, + journal = {World Patent Information}, + author = {Kallas, Peter}, + doi = {10.1016/j.wpi.2006.03.007}, + issn = {01722190}, + keywords = {European Patent Office, EPO, German Patent and Trademark Office, GPTO, Open Patent Services, OPS, esp@cenet{\textregistered}} +} + +@misc{Southan2020OpeningBioactivity, + title = {{Opening up connectivity between documents, structures and bioactivity}}, + year = {2020}, + booktitle = {Beilstein Journal of Organic Chemistry}, + author = {Southan, Christopher}, + month = {4}, + pages = {596--606}, + volume = {16}, + publisher = {Beilstein-Institut Zur Forderung der Chemischen Wissenschaften}, + doi = {10.3762/bjoc.16.54}, + issn = {18605397}, + keywords = {Activity data, Chemical structures, Databases, Drug discovery, Protein targets} +} + +@misc{Southan2020OpeningBioactivityb, + title = {{Opening up connectivity between documents, structures and bioactivity}}, + year = {2020}, + booktitle = {Beilstein Journal of Organic Chemistry}, + author = {Southan, Christopher}, + doi = {10.3762/bjoc.16.54}, + issn = {18605397}, + keywords = {Activity data, Chemical structures, Databases, Drug discovery, Protein targets} +} + +@article{vanRijn2010Opioid-receptor-heteromer-specificPharmacology, + title = {{Opioid-receptor-heteromer-specific trafficking and pharmacology}}, + year = {2010}, + journal = {Current Opinion in Pharmacology}, + author = {van Rijn, Richard M. and Whistler, Jennifer L. and Waldhoer, Maria}, + number = {1}, + pages = {73--79}, + volume = {10}, + doi = {10.1016/j.coph.2009.09.007}, + issn = {14714892} +} + +@article{Lepri2014OptimizationOlds, + title = {{Optimization of Small-Molecule Inhibitors of In fl uenza Virus Polymerase: From Thiophene-3-Carboxamide to Polyamido Sca ff olds}}, + year = {2014}, + author = {Lepri, Susan and Nannetti, Giulio and Muratore, Giulia and Cruciani, Gabriele and Ruzziconi, Renzo and Mercorelli, Beatrice and Palu, Giorgio and Loregian, Arianna and Goracci, Laura} +} + +@article{Cohen2009OrallyScaffold, + title = {{Orally bioavailable antagonists of inhibitor of apoptosis proteins based on an azabicyclooctane scaffold}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Cohen, Frederick and Alicke, Bruno and Elliott, Linda O. and Flygare, John A. and Goncharov, Tatiana and Keteltas, Stephen F. and Franklin, Matthew C. and Frankovitz, Stacy and Stephan, Jean Philippe and Tsui, Vickie and Vucic, Domagoj and Wong, Harvey and Fairbrother, Wayne J.}, + number = {6}, + pages = {1723--1730}, + volume = {52}, + doi = {10.1021/jm801450c}, + issn = {00222623} +} + +@article{Cohen2009OrallyScaffoldb, + title = {{Orally bioavailable antagonists of inhibitor of apoptosis proteins based on an azabicyclooctane scaffold}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Cohen, Frederick and Alicke, Bruno and Elliott, Linda O. and Flygare, John A. and Goncharov, Tatiana and Keteltas, Stephen F. and Franklin, Matthew C. and Frankovitz, Stacy and Stephan, Jean Philippe and Tsui, Vickie and Vucic, Domagoj and Wong, Harvey and Fairbrother, Wayne J.}, + number = {6}, + pages = {1723--1730}, + volume = {52}, + doi = {10.1021/jm801450c}, + issn = {00222623} +} + +@article{Haak2012ORCID:Researchers, + title = {{ORCID: A system to uniquely identify researchers}}, + year = {2012}, + journal = {Learned Publishing}, + author = {Haak, Laurel L. and Fenner, Martin and Paglione, Laura and Pentz, Ed and Ratner, Howard}, + number = {4}, + month = {10}, + pages = {259--264}, + volume = {25}, + publisher = {John Wiley {\&} Sons, Ltd}, + url = {http://doi.wiley.com/10.1087/20120404}, + doi = {10.1087/20120404}, + issn = {09531513} +} + +@article{Buchwald2010OrganicInteraction, + title = {{Organic dyes as small molecule protein-protein interaction inhibitors for the CD40-CD154 costimulatory interaction}}, + year = {2010}, + journal = {Journal of Molecular Recognition}, + author = {Buchwald, Peter and Margolles-Clark, Emilio and Kenyon, Norma S. and Ricordi, Camillo}, + number = {1}, + pages = {65--73}, + volume = {23}, + doi = {10.1002/jmr.969}, + issn = {09523499}, + keywords = {Binding free energy, CD40 ligand, Costimulation, Immune suppression, Protein-protein interaction} +} + +@article{Laraia2015OvercomingInteractions, + title = {{Overcoming Chemical, Biological, and Computational Challenges in the Development of Inhibitors Targeting Protein-Protein Interactions}}, + year = {2015}, + journal = {Chemistry {\&} Biology}, + author = {Laraia, Luca and McKenzie, Grahame and Spring, David R. and Venkitaraman, Ashok R. and Huggins, David J.}, + number = {6}, + month = {6}, + pages = {689--703}, + volume = {22}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/26091166 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC4518475 https://linkinghub.elsevier.com/retrieve/pii/S1074552115001635}, + doi = {10.1016/j.chembiol.2015.04.019}, + issn = {10745521}, + pmid = {26091166} +} + +@article{RandPairwise., + title = {{Pairwise T-values and probabilities for each selection size in Figure 6 .}}, + author = {Rand, Self and Hf, Cross and Rand, Cross and Rand, Self and Hf, Cross and Rand, Cross and Rand, Self and Hf, Cross and Rand, Cross and Rand, Self and Hf, Cross and Rand, Cross and Rand, Self and Hf, Cross and Hf, Cross}, + pages = {172} +} + +@article{McKinney2011Pandas:Statistics, + title = {{pandas: a Foundational Python Library for Data Analysis and Statistics}}, + year = {2011}, + journal = {Python for High Performance and Scientific Computing}, + author = {McKinney, Wes}, + pages = {1--9} +} + +@article{Horwell1997Parke-DavisW, + title = {{Parke-Davis Neuroscience Resecrch Centre , Cambridge University Forvie Site , To investigate the role of the dipole moment in the NK-2 alTmity of I we set out to design a Trp-Phe mimetic that would overlay closely with the Trp-Phe {\~{}} turn in MEN10627 and w}}, + year = {1997}, + journal = {Science}, + author = {Horwell, David C and Naylor, Dorica and Willems, Henristte M G and Way, Robinson}, + number = {1}, + pages = {31--36}, + volume = {7} +} + +@article{Mir2018PDBe:Europe, + title = {{PDBe: Towards reusable data delivery infrastructure at protein data bank in Europe}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Mir, Saqib and Alhroub, Younes and Anyango, Stephen and Armstrong, David R. and Berrisford, John M. and Clark, Alice R. and Conroy, Matthew J. and Dana, Jose M. and Deshpande, Mandar and Gupta, Deepti and Gutmanas, Aleksandras and Haslam, Pauline and Mak, Lora and Mukhopadhyay, Abhik and Nadzirin, Nurul and Paysan-Lafosse, Typhaine and Sehnal, David and Sen, Sanchayita and Smart, Oliver S. and Varadi, Mihaly and Kleywegt, Gerard J. and Velankar, Sameer}, + number = {D1}, + pages = {D486-D492}, + volume = {46}, + doi = {10.1093/nar/gkx1070}, + issn = {13624962} +} + +@article{Mir2018PDBe:Europeb, + title = {{PDBe: Towards reusable data delivery infrastructure at protein data bank in Europe}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Mir, Saqib and Alhroub, Younes and Anyango, Stephen and Armstrong, David R. and Berrisford, John M. and Clark, Alice R. and Conroy, Matthew J. and Dana, Jose M. and Deshpande, Mandar and Gupta, Deepti and Gutmanas, Aleksandras and Haslam, Pauline and Mak, Lora and Mukhopadhyay, Abhik and Nadzirin, Nurul and Paysan-Lafosse, Typhaine and Sehnal, David and Sen, Sanchayita and Smart, Oliver S. and Varadi, Mihaly and Kleywegt, Gerard J. and Velankar, Sameer}, + number = {D1}, + pages = {D486-D492}, + volume = {46}, + doi = {10.1093/nar/gkx1070}, + issn = {13624962} +} + +@article{Joosten2009PDB_REDO:PDB, + title = {{PDB{\_}REDO: automated re-refinement of X-ray structure models in the PDB}}, + year = {2009}, + journal = {Journal of Applied Crystallography}, + author = {Joosten, Robbie P. and Salzemann, Jean and Bloch, Vincent and Stockinger, Heinz and Berglund, Ann-Charlott and Blanchet, Christophe and Bongcam-Rudloff, Erik and Combet, Christophe and Da Costa, Ana L. and Deleage, Gilbert and Diarena, Matteo and Fabbretti, Roberto and Fettahi, Géraldine and Flegel, Volker and Gisel, Andreas and Kasam, Vinod and Kervinen, Timo and Korpelainen, Eija and Mattila, Kimmo and Pagni, Marco and Reichstadt, Matthieu and Breton, Vincent and Tickle, Ian J. and Vriend, Gert}, + number = {Pt 3}, + month = {6}, + pages = {376--384}, + volume = {42}, + doi = {10.1107/S0021889809008784}, + issn = {0021-8898}, + language = {eng} +} + +@article{Mendes2011PDZTogether, + title = {{PDZ dimerization brings proteins together}}, + year = {2011}, + journal = {Chemistry and Biology}, + author = {Mendes, Kimberly and Kodadek, Thomas}, + number = {9}, + pages = {1071--1072}, + volume = {18}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.chembiol.2011.09.001}, + doi = {10.1016/j.chembiol.2011.09.001}, + issn = {10745521} +} + +@article{Fischer2006PeptideInteraction, + title = {{Peptide, peptidomimetic, and small-molecule antagonists of the p53-HDM2 protein-protein interaction}}, + year = {2006}, + journal = {International Journal of Peptide Research and Therapeutics}, + author = {Fischer, Peter M.}, + number = {1}, + pages = {3--19}, + volume = {12}, + doi = {10.1007/s10989-006-9016-5}, + issn = {15733149}, + keywords = {Cancer, Drug discovery, HDM2, MDM2, Oncology, Peptidomimetics, Protein-protein interaction, Structure-based design, p53, p53-HDM2 inhibitors} +} + +@article{Machida2013PeptidomimeticInhibitors, + title = {{Peptidomimetic modification improves cell permeation of bivalent farnesyltransferase inhibitors}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Machida, Shinnosuke and Tsubamoto, Mai and Kato, Nobuo and Harada, Kazuo and Ohkanda, Junko}, + number = {14}, + pages = {4004--4010}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.09.061}, + doi = {10.1016/j.bmc.2012.09.061}, + issn = {09680896}, + keywords = {Bivalent inhibitors, Farnesyltransferase, K-Ras4B, Protein-protein interaction, Whole cell activity} +} + +@article{Chan2013PharmacologicalProgression, + title = {{Pharmacological inactivation of Skp2 SCF ubiquitin ligase restricts cancer stem cell traits and cancer progression}}, + year = {2013}, + journal = {Cell}, + author = {Chan, Chia Hsin and Morrow, John Kenneth and Li, Chien Feng and Gao, Yuan and Jin, Guoxiang and Moten, Asad and Stagg, Loren J. and Ladbury, John E. and Cai, Zhen and Xu, Dazhi and Logothetis, Christopher J. and Hung, Mien Chie and Zhang, Shuxing and Lin, Hui Kuan}, + number = {3}, + pages = {556--568}, + volume = {154}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.cell.2013.06.048}, + doi = {10.1016/j.cell.2013.06.048}, + issn = {00928674} +} + +@article{DeLuca2009Pharmacophore-basedLEDGF/p75, + title = {{Pharmacophore-based discovery of small-molecule inhibitors of protein-protein interactions between HIV-1 integrase and cellular cofactor LEDGF/p75}}, + year = {2009}, + journal = {ChemMedChem}, + author = {De Luca, Laura and Barreca, Maria Letizia and Ferro, Stefania and Christ, Frauke and Iraci, Nunzio and Gitto, Rosaria and Monforte, Anna Maria and Debyser, Zeger and Chimirri, Alba}, + number = {8}, + pages = {1311--1316}, + volume = {4}, + doi = {10.1002/cmdc.200900070}, + issn = {18607179}, + keywords = {Antiviral agents, HIV-1 integrase, Inhibitors, Molecular modeling, Protein-protein interactions} +} + +@article{Sheridan2013PhaseWows., + title = {{Phase 3 data for PCSK9 inhibitor wows.}}, + year = {2013}, + journal = {Nature biotechnology}, + author = {Sheridan, Cormac}, + number = {12}, + pages = {1057--1058}, + volume = {31}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nbt1213-1057}, + doi = {10.1038/nbt1213-1057}, + issn = {15461696} +} + +@article{Hughes2008PhysiochemicalOutcomes, + title = {{Physiochemical drug properties associated with in vivo toxicological outcomes}}, + year = {2008}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Hughes, Jason D. and Blagg, Julian and Price, David A. and Bailey, Simon and DeCrescenzo, Gary A. and Devraj, Rajesh V. and Ellsworth, Edmund and Fobian, Yvette M. and Gibbs, Michael E. and Gilles, Richard W. and Greene, Nigel and Huang, Enoch and Krieger-Burke, Teresa and Loesel, Jens and Wager, Travis and Whiteley, Larry and Zhang, Yao}, + number = {17}, + pages = {4872--4875}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.07.071}, + issn = {0960894X}, + keywords = {Adverse events, C log P, Polar surface area, Toxicity} +} + +@article{Firth2012PlaneMolecules, + title = {{Plane of best fit: A novel method to characterize the three-dimensionality of molecules}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Firth, Nicholas C. and Brown, Nathan and Blagg, Julian}, + number = {10}, + pages = {2516--2525}, + volume = {52}, + doi = {10.1021/ci300293f}, + issn = {15499596}, + pmid = {23009689} +} + +@article{Mygind2005PlectasinFungus, + title = {{Plectasin is a peptide antibiotic with therapeutic potential from a saprophytic fungus}}, + year = {2005}, + journal = {Nature}, + author = {Mygind, Per H. and Fischer, Rikke L. and Schnorr, Kirk M. and Hansen, Mogens T. and S{\"{o}}nksen, Carsten P. and Ludvigsen, Svend and Ravent{\'{o}}s, Dorotea and Buskov, Steen and Christensen, Bjarke and De Maria, Leonardo and Taboureau, Olivier and Yaver, Debbie and Elvig-J{\o}rgensen, Signe G. and S{\o}rensen, Marianne V. and Christensen, Bjørn E. and Kj{\ae}rulff, Søren and Frimodt-Moller, Niels and Lehrer, Robert I. and Zasloff, Michael and Kristensen, Hans Henrik}, + number = {7061}, + pages = {975--980}, + volume = {437}, + doi = {10.1038/nature04051}, + issn = {14764687}, + pmid = {16222292} +} + +@article{Raj2013PluckingInteractions, + title = {{Plucking the high hanging fruit: A systematic approach for targeting protein-protein interactions}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Raj, Monika and Bullock, Brooke N. and Arora, Paramjit S.}, + number = {14}, + pages = {4051--4057}, + volume = {21}, + doi = {10.1016/j.bmc.2012.11.023}, + issn = {09680896}, + keywords = {Computational design, Hot spot residues, Protein-protein interactions, Rational design, Secondary structure mimics} +} + +@article{Zheng2013Pocket-basedSpace, + title = {{Pocket-based drug design: Exploring pocket space}}, + year = {2013}, + journal = {AAPS Journal}, + author = {Zheng, Xiliang and Gan, Linfeng and Wang, Erkang and Wang, Jin}, + number = {1}, + pages = {228--241}, + volume = {15}, + doi = {10.1208/s12248-012-9426-6}, + issn = {15507416}, + keywords = {ISR, SPA, computer-aided drug design, pocket} +} + +@article{Craig2011Pocket-spaceProteins, + title = {{Pocket-space maps to identify novel binding-site conformations in proteins}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Craig, Ian R. and Pfleger, Christopher and Gohlke, Holger and Essex, Jonathan W. and Spiegel, Katrin}, + number = {10}, + pages = {2666--2679}, + volume = {51}, + doi = {10.1021/ci200168b}, + issn = {15499596} +} + +@article{Kotz2012PolypharmacologyFly, + title = {{Polypharmacology on the fly}}, + year = {2012}, + journal = {Nature Chemical Biology}, + author = {Kotz, Joanne}, + number = {8}, + pages = {679--679}, + volume = {8}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1036}, + doi = {10.1038/nchembio.1036}, + issn = {1552-4450} +} + +@article{Yu2009PotentInteraction, + title = {{Potent and orally active small-molecule inhibitors of the MDM2-p53 interaction}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Yu, Shanghai and Qin, Dongguang and Shangary, Sanjeev and Chen, Jianyong and Wang, Guoping and Ding, Ke and McEachern, Donna and Qiu, Su and Nikolovska-Coleska, Zaneta and Miller, Rebecca and Kang, Sanmao and Yang, Dajun and Wang, Shaomeng}, + number = {24}, + pages = {7970--7973}, + volume = {52}, + doi = {10.1021/jm901400z}, + issn = {00222623} +} + +@article{Yu2009PotentInteractionb, + title = {{Potent and orally active small-molecule inhibitors of the MDM2-p53 interaction}}, + year = {2009}, + journal = {Journal of Medicinal Chemistry}, + author = {Yu, Shanghai and Qin, Dongguang and Shangary, Sanjeev and Chen, Jianyong and Wang, Guoping and Ding, Ke and McEachern, Donna and Qiu, Su and Nikolovska-Coleska, Zaneta and Miller, Rebecca and Kang, Sanmao and Yang, Dajun and Wang, Shaomeng}, + number = {24}, + pages = {7970--7973}, + volume = {52}, + doi = {10.1021/jm901400z}, + issn = {00222623} +} + +@article{Durrant2014POVMECharacteristics, + title = {{POVME 2.0: An enhanced tool for determining pocket shape and volume characteristics}}, + year = {2014}, + journal = {Journal of Chemical Theory and Computation}, + author = {Durrant, Jacob D. and Votapka, Lane and S{\o}rensen, Jesper and Amaro, Rommie E.}, + number = {11}, + pages = {5047--5056}, + volume = {10}, + doi = {10.1021/ct500381c}, + issn = {15499626} +} + +@article{Raja2013PPInterFinderLiterature, + title = {{PPInterFinder - A mining tool for extracting causal relations on human proteins from literature}}, + year = {2013}, + journal = {Database}, + author = {Raja, Kalpana and Subramani, Suresh and Natarajan, Jeyakumar}, + pages = {1--11}, + volume = {2013}, + doi = {10.1093/database/bas052}, + issn = {17580463} +} + +@article{Fuller2009PredictingInterface., + title = {{Predicting druggable binding sites at the protein-protein interface.}}, + year = {2009}, + journal = {Drug discovery today}, + author = {Fuller, Jonathan C. and Burgoyne, Nicholas J. and Jackson, Richard M.}, + month = {3}, + pages = {155--161}, + volume = {14}, + doi = {10.1016/j.drudis.2008.10.009}, + language = {English} +} + +@article{Lise2009PredictionMethods, + title = {{Prediction of hot spot residues at protein-protein interfaces by combining machine learning and energy-based methods}}, + year = {2009}, + journal = {BMC Bioinformatics}, + author = {Lise, Stefano and Archambeau, Cedric and Pontil, Massimiliano and Jones, David T.}, + pages = {365}, + volume = {10}, + isbn = {1471210510365}, + doi = {10.1186/1471-2105-10-365}, + issn = {14712105} +} + +@article{Bohm2005PredictionDesign, + title = {{Prediction of non-bonded interactions in drug design}}, + year = {2005}, + journal = {Protein-Ligand Interactions: From Molecular Recognition to Drug Design}, + author = {B{\"{o}}hm, Hans Joachim}, + pages = {3--20}, + isbn = {9783527601813}, + doi = {10.1002/3527601813.ch1}, + keywords = {Drug design, LUDI, Non-bonded interactions, Prediction, Protein-ligand interactions, Receptor-ligand interactions, Scoring functions, Virtual screening, de novo design, de novo ligand design} +} + +@article{Neugebauer2007PredictionMethods, + title = {{Prediction of protein-protein interaction inhibitors by chemoinformatics and machine learning methods}}, + year = {2007}, + journal = {Journal of Medicinal Chemistry}, + author = {Neugebauer, Alexander and Hartmann, Rolf W. and Klein, Christian D.}, + number = {19}, + pages = {4665--4668}, + volume = {50}, + doi = {10.1021/jm070533j}, + issn = {00222623} +} + +@article{Richter2017PredictiveAntibiotic, + title = {{Predictive compound accumulation rules yield a broad-spectrum antibiotic}}, + year = {2017}, + journal = {Nature}, + author = {Richter, Michelle F. and Drown, Bryon S. and Riley, Andrew P. and Garcia, Alfredo and Shirai, Tomohiro and Svec, Riley L. and Hergenrother, Paul J.}, + doi = {10.1038/nature22308}, + issn = {14764687} +} + +@article{Richter2017PredictiveAntibioticb, + title = {{Predictive compound accumulation rules yield a broad-spectrum antibiotic}}, + year = {2017}, + journal = {Nature}, + author = {Richter, Michelle F. and Drown, Bryon S. and Riley, Andrew P. and Garcia, Alfredo and Shirai, Tomohiro and Svec, Riley L. and Hergenrother, Paul J.}, + number = {7654}, + month = {5}, + pages = {299--304}, + volume = {545}, + publisher = {Nature Publishing Group}, + doi = {10.1038/nature22308}, + issn = {14764687} +} + +@article{Zheng2012PredictiveAssociation, + title = {{Predictive energy landscapes for protein-protein association}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Zheng, Weihua and Schafer, Nicholas P. and Davtyan, Aram and Papoian, Garegin A. and Wolynes, Peter G.}, + number = {47}, + pages = {19244--19249}, + volume = {109}, + doi = {10.1073/pnas.1216215109}, + issn = {00278424}, + keywords = {Binding interface prediction, Swapped contacts} +} + +@article{Tamura2010PrenylcoumarinFructus, + title = {{Prenylcoumarin with Rev-export inhibitory activity from Cnidii Monnieris Fructus}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Tamura, Satoru and Fujitani, Toshiaki and Kaneko, Masafumi and Murakami, Nobutoshi}, + number = {12}, + pages = {3717--3720}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2010.04.081}, + doi = {10.1016/j.bmcl.2010.04.081}, + issn = {0960894X}, + keywords = {Anti-HIV, Cnidium monnieri Cusson, Osthol, Prenylcoumarin, Rev-export inhibitor} +} + +@article{Zhang2013PrePPI:Interactions, + title = {{PrePPI: A structure-informed database of protein-protein interactions}}, + year = {2013}, + journal = {Nucleic Acids Research}, + author = {Zhang, Qiangfeng Cliff and Petrey, Donald and Garz{\'{o}}n, José Ignacio and Deng, Lei and Honig, Barry}, + number = {D1}, + pages = {828--833}, + volume = {41}, + doi = {10.1093/nar/gks1231}, + issn = {03051048} +} + +@article{Desdouits2015PrincipalProteins, + title = {{Principal Component Analysis reveals correlation of cavities evolution and functional motions in proteins}}, + year = {2015}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Desdouits, Nathan and Nilges, Michael and Blondel, Arnaud}, + pages = {13--24}, + volume = {55}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.jmgm.2014.10.011}, + doi = {10.1016/j.jmgm.2014.10.011}, + issn = {18734243}, + keywords = {Cavity geometry evolution, Drug design, Functional analysis, Molecular dynamics, Principal component analysis, Protein cavities} +} + +@article{Banner2003PrinciplesDesign, + title = {{Principles of Enzyme-Inhibitor Design}}, + year = {2003}, + author = {Banner, D W}, + isbn = {3527305211} +} + +@article{Jones1996PrinciplesInteractions, + title = {{Principles of protein-protein interactions}}, + year = {1996}, + journal = {Proceedings of the National}, + author = {Jones, Susan and Thornton, Janet M JM} +} + +@article{Teichmann2002PrinciplesInteractions, + title = {{Principles of protein-protein interactions}}, + year = {2002}, + journal = {Bioinformatics}, + author = {Teichmann, Sarah A.}, + number = {SUPPL. 2}, + month = {1}, + pages = {13--20}, + volume = {18}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/8552589 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC40170 http://www.pnas.org/cgi/doi/10.1073/pnas.93.1.13}, + doi = {10.1093/bioinformatics/18.suppl{\_}2.S249}, + issn = {13674803}, + pmid = {8552589} +} + +@article{Welsch2010PrivilegedDiscovery, + title = {{Privileged scaffolds for library design and drug discovery}}, + year = {2010}, + journal = {Current Opinion in Chemical Biology}, + author = {Welsch, Matthew E. and Snyder, Scott A. and Stockwell, Brent R.}, + number = {3}, + pages = {347--361}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.02.018}, + issn = {13675931} +} + +@article{Welsch2010PrivilegedDiscoveryb, + title = {{Privileged scaffolds for library design and drug discovery}}, + year = {2010}, + journal = {Current Opinion in Chemical Biology}, + author = {Welsch, Matthew E. and Snyder, Scott A. and Stockwell, Brent R.}, + number = {3}, + pages = {347--361}, + volume = {14}, + doi = {10.1016/j.cbpa.2010.02.018}, + issn = {13675931} +} + +@article{Bosc2017PrivilegedInteractions, + title = {{Privileged Substructures to Modulate Protein-Protein Interactions}}, + year = {2017}, + journal = {Journal of Chemical Information and Modeling}, + author = {Bosc, Nicolas and Kuenemann, Mélaine A. and B{\'{e}}cot, Jerome and Vavrusa, Marek and Cerdan, Adrien H. and Sperandio, Olivier}, + number = {10}, + pages = {2448--2462}, + volume = {57}, + isbn = {0002764210}, + doi = {10.1021/acs.jcim.7b00435}, + issn = {15205142}, + pmid = {28922596} +} + +@article{McLeod2014ProbingLibraries, + title = {{Probing chemical space with alkaloid-inspired libraries}}, + year = {2014}, + journal = {Nature Chemistry}, + author = {McLeod, Michael C. and Singh, Gurpreet and Plampin, James N. and Rane, Digamber and Wang, Jenna L. and Day, Victor W. and Aub{\'{e}}, Jeffrey}, + number = {2}, + pages = {133--140}, + volume = {6}, + doi = {10.1038/nchem.1844}, + issn = {17554330} +} + +@article{Meliciani2009ProbingSimulation, + title = {{Probing hot spots on protein-protein interfaces with all-atom free-energy simulation}}, + year = {2009}, + journal = {Journal of Chemical Physics}, + author = {Meliciani, Irene and Klenin, Konstantin and Strunk, Timo and Schmitz, Katja and Wenzel, Wolfgang}, + number = {3}, + pages = {1--11}, + volume = {131}, + doi = {10.1063/1.3177008}, + issn = {00219606} +} + +@article{2015ProbingQuestions, + title = {{Probing questions}}, + year = {2015}, + journal = {Nature Chemical Biology}, + number = {8}, + pages = {533}, + volume = {11}, + doi = {10.1038/nchembio.1882}, + issn = {15524469} +} + +@article{Wilson2013ProbingMolecules, + title = {{Probing structural adaptivity at PPI interfaces with small molecules}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Wilson, Christopher G. and Arkin, Michelle R.}, + number = {4}, + pages = {e501-e508}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.10.009}, + doi = {10.1016/j.ddtec.2012.10.009}, + issn = {17406749} +} + +@article{Huston2015ProbingEpigenome, + title = {{Probing the epigenome}}, + year = {2015}, + journal = {Nature Chemical Biology}, + author = {Huston, Andrea and Arrowsmith, Cheryl H. and Knapp, Stefan and Schapira, Matthieu}, + number = {8}, + pages = {542--545}, + volume = {11}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1871}, + doi = {10.1038/nchembio.1871}, + issn = {15524469} +} + +@article{Gleeson2011ProbingParameters, + title = {{Probing the links between in vitro potency, ADMET and physicochemical parameters}}, + year = {2011}, + journal = {Nature Reviews Drug Discovery}, + author = {Gleeson, M. Paul and Hersey, Anne and Montanari, Dino and Overington, John}, + number = {3}, + pages = {197--208}, + volume = {10}, + doi = {10.1038/nrd3367}, + issn = {14741776} +} + +@article{Schmuker2007ProcessingOlfaction, + title = {{Processing and classification of chemical data inspired by insect olfaction}}, + year = {2007}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Schmuker, Michael and Schneider, Gisbert}, + number = {51}, + pages = {20285--20289}, + volume = {104}, + doi = {10.1073/pnas.0705683104}, + issn = {00278424}, + keywords = {Bioinformatics, Chemical biology, Computational model, Decorrelation, Olfactory coding} +} + +@article{Hewings2012ProgressInteractions, + title = {{Progress in the development and application of small molecule inhibitors of bromodomain-acetyl-lysine interactions}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Hewings, David S. and Rooney, Timothy P.C. and Jennings, Laura E. and Hay, Duncan A. and Schofield, Christopher J. and Brennan, Paul E. and Knapp, Stefan and Conway, Stuart J.}, + number = {22}, + pages = {9393--9413}, + volume = {55}, + doi = {10.1021/jm300915b}, + issn = {00222623} +} + +@article{Chung2011ProgressInteractions, + title = {{Progress in the discovery of small-molecule inhibitors of bromodomain-histone interactions}}, + year = {2011}, + journal = {Journal of Biomolecular Screening}, + author = {Chung, Chun Wa and Witherington, Jason}, + number = {10}, + pages = {1170--1185}, + volume = {16}, + isbn = {1087057111421}, + doi = {10.1177/1087057111421372}, + issn = {10870571}, + keywords = {AlphaLISA, AlphaScreen, ITC, NMR, TR-FRET, bromodomains, crystallography, epigenetics, fluorescence anisotropy, histone acetyl-lysine reader domains, histone-binding proteins} +} + +@article{Tibolla2011ProproteinInhibition, + title = {{Proprotein convertase subtilisin/kexin type 9 (PCSK9): From structure-function relation to therapeutic inhibition}}, + year = {2011}, + journal = {Nutrition, Metabolism and Cardiovascular Diseases}, + author = {Tibolla, G. and Norata, G. D. and Artali, R. and Meneghetti, F. and Catapano, A. L.}, + number = {11}, + pages = {835--843}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.numecd.2011.06.002}, + doi = {10.1016/j.numecd.2011.06.002}, + issn = {09394753}, + keywords = {LDL receptor, PCSK9, Plasma LDL-cholesterol, Statins} +} + +@article{Banaszewska2012ProproteinTherapy, + title = {{Proprotein convertase subtilisin/kexin type 9: A new target molecule for gene therapy}}, + year = {2012}, + journal = {Cellular and Molecular Biology Letters}, + author = {Banaszewska, Anna and Piechota, Michal and Plewa, Robert}, + number = {2}, + pages = {228--239}, + volume = {17}, + doi = {10.2478/s11658-012-0006-7}, + issn = {16891392}, + keywords = {Ani-PCSK9 antibody, Antisense oligonucleotides, Ezetimibe, Fibrates, Hypercholesterolemia, LDL cholesterol, LDL receptor degradation, PCSK9, RNAi, Statins} +} + +@article{Chmielewski2009ProteaseDisrupted, + title = {{Protease dimer formation disrupted}}, + year = {2009}, + journal = {Nature Chemical Biology}, + author = {Chmielewski, Jean}, + number = {9}, + pages = {607--608}, + volume = {5}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio0909-607}, + doi = {10.1038/nchembio0909-607}, + issn = {15524469} +} + +@article{Griffin2012ProteinPathways, + title = {{Protein C anticoagulant and cytoprotective pathways}}, + year = {2012}, + journal = {International Journal of Hematology}, + author = {Griffin, John H. and Mosnier, Laurent O. and Zlokovic, Berislav V.}, + doi = {10.1007/s12185-012-1059-0}, + issn = {09255710}, + keywords = {Endothelial protein C receptor, Neuroprotection, Protein C, Protein S, Thrombomodulin} +} + +@article{Cong2019ProteinCoevolution, + title = {{Protein interaction networks revealed by proteome coevolution}}, + year = {2019}, + journal = {Science}, + author = {Cong, Qian and Anishchenko, Ivan and Ovchinnikov, Sergey and Baker, David}, + doi = {10.1126/science.aaw6718}, + issn = {10959203}, + pmid = {31296772} +} + +@article{Headd2007ProteinProjections, + title = {{Protein − Protein Interfaces : Properties , Preferences , and Projections Protein - Protein Interfaces : Properties , Preferences , and Projections}}, + year = {2007}, + author = {Headd, Jeffrey J and Ban, Y E Andrew and Brown, Paul and Vaidya, Madhuwanti and Rudolph, Johannes and Headd, Jeffrey J and Ban, Y E Andrew and Brown, Paul and Edelsbrunner, Herbert and Vaidya, Madhuwanti and Rudolph, Johannes}, + doi = {10.1021/pr070018}, + keywords = {geometric topology, protein - protein interactions, protein interfaces, visualization} +} + +@article{EichbornPROTEIN-PROTEININTERACTIONS, + title = {{PROTEIN-PROTEIN INTERACTIONS}}, + author = {Eichborn, Joachim V O N}, + pages = {1--10}, + keywords = {conservation, domain interactions, interaction hot spots, protein interactions} +} + +@article{L.Garner2010Protein-ProteinDogma, + title = {{Protein-Protein Interactions and Cancer: Targeting the Central Dogma}}, + year = {2010}, + journal = {Current Topics in Medicinal Chemistry}, + author = {L. Garner, Amanda and D. Janda, Kim}, + number = {3}, + pages = {258--280}, + volume = {11}, + doi = {10.2174/156802611794072614}, + issn = {15680266}, + keywords = {cancer, mrna splicing, protein-protein interactions, small molecules, transcription, translation} +} + +@article{Brito2017Protein-proteinSystems, + title = {{Protein-protein interactions in virus-host systems}}, + year = {2017}, + journal = {Frontiers in Microbiology}, + author = {Brito, Anderson F. and Pinney, John W.}, + number = {AUG}, + month = {8}, + pages = {1557}, + volume = {8}, + publisher = {Frontiers Media S.A.}, + doi = {10.3389/fmicb.2017.01557}, + issn = {1664302X}, + keywords = {Databases, Integrative biology, Molecular evolution, PPI, Protein interaction networks, Structural biology, Viral evolution, Virus-host interactions} +} + +@article{Durdagi2012Protein-proteinFamily, + title = {{Protein-protein interactions: Inhibition of mammalian carbonic anhydrases I-XV by the murine inhibitor of carbonic anhydrase and other members of the transferrin family}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Durdagi, Serdar and Vullo, Daniela and Pan, Peiwen and K{\"{a}}hk{\"{o}}nen, Niklas and M{\"{a}}{\"{a}}tt{\"{a}}, Juha A. and Hyt{\"{o}}nen, Vesa P. and Scozzafava, Andrea and Parkkila, Seppo and Supuran, Claudiu T.}, + number = {11}, + pages = {5529--5535}, + volume = {55}, + doi = {10.1021/jm3004587}, + issn = {00222623} +} + +@article{Durdagi2012Protein-proteinFamilyb, + title = {{Protein-protein interactions: Inhibition of mammalian carbonic anhydrases I-XV by the murine inhibitor of carbonic anhydrase and other members of the transferrin family}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Durdagi, Serdar and Vullo, Daniela and Pan, Peiwen and K{\"{a}}hk{\"{o}}nen, Niklas and M{\"{a}}{\"{a}}tt{\"{a}}, Juha A. and Hyt{\"{o}}nen, Vesa P. and Scozzafava, Andrea and Parkkila, Seppo and Supuran, Claudiu T.}, + number = {11}, + pages = {5529--5535}, + volume = {55}, + doi = {10.1021/jm3004587}, + issn = {00222623} +} + +@article{Bonetta2010Protein-proteinSearch., + title = {{Protein-protein interactions: Tools for the search.}}, + year = {2010}, + journal = {Nature}, + author = {Bonetta, Laura}, + number = {7325}, + pages = {852}, + volume = {468}, + doi = {10.1038/468852a}, + issn = {14764687} +} + +@article{Mullard2012Proteing-proteinGroove, + title = {{Proteing-protein interaction inhibitors get into the groove}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Mullard, Asher}, + number = {3}, + pages = {173--175}, + volume = {11}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd3680}, + doi = {10.1038/nrd3680}, + issn = {14741776} +} + +@article{VanWesten2011ProteochemometricTargets, + title = {{Proteochemometric modeling as a tool to design selective compounds and for extrapolating to novel targets}}, + year = {2011}, + journal = {MedChemComm}, + author = {Van Westen, Gerard J.P. and Wegner, Jörg K. and Ijzerman, Adriaan P. and Van Vlijmen, Herman W.T. and Bender, A.}, + number = {1}, + pages = {16--30}, + volume = {2}, + doi = {10.1039/c0md00165a}, + issn = {20402503} +} + +@article{Lu2006ProteomimeticInhibitors, + title = {{Proteomimetic libraries: Design, synthesis, and evaluation of p53-MDM2 interaction inhibitors}}, + year = {2006}, + journal = {Journal of Combinatorial Chemistry}, + author = {Lu, Felice and Chi, Seung Wook and Kim, Do Hyoung and Han, Kyou Hoon and Kuntz, Irwin D. and Guy, R. Kiplin}, + number = {3}, + pages = {315--325}, + volume = {8}, + doi = {10.1021/cc050142v}, + issn = {15204766} +} + +@article{Gerega2006PROXIMORP-MS, + title = {{PROXIMO - A new docking algorithm to model protein complexes using data from radical probe mass spectrometry (RP-MS)}}, + year = {2006}, + journal = {Bioinformatics}, + author = {Gerega, Sebastien K. and Downard, Kevin M.}, + number = {14}, + pages = {1702--1709}, + volume = {22}, + doi = {10.1093/bioinformatics/btl178}, + issn = {13674803} +} + +@article{Nivaskumar2016PseudopilinPlatform, + title = {{Pseudopilin residue E5 is essential for recruitment by the type 2 secretion system assembly platform}}, + year = {2016}, + journal = {Molecular Microbiology}, + author = {Nivaskumar, Mangayarkarasi and Santos-Moreno, Javier and Malosse, Christian and Nadeau, Nathalie and Chamot-Rooke, Julia and Tran Van Nhieu, Guy and Francetic, Olivera}, + doi = {10.1111/mmi.13432}, + issn = {13652958} +} + +@article{Kim2019PubChemData, + title = {{PubChem 2019 update: Improved access to chemical data}}, + year = {2019}, + journal = {Nucleic Acids Research}, + author = {Kim, Sunghwan and Chen, Jie and Cheng, Tiejun and Gindulyte, Asta and He, Jia and He, Siqian and Li, Qingliang and Shoemaker, Benjamin A. and Thiessen, Paul A. and Yu, Bo and Zaslavsky, Leonid and Zhang, Jian and Bolton, Evan E.}, + number = {D1}, + month = {10}, + pages = {D1102-D1109}, + volume = {47}, + url = {https://academic.oup.com/nar/advance-article/doi/10.1093/nar/gky1033/5146201}, + doi = {10.1093/nar/gky1033}, + issn = {13624962}, + pmid = {30371825} +} + +@article{Chen2010PubChemModels, + title = {{PubChem BioAssays as a data source for predictive models}}, + year = {2010}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Chen, Bin and Wild, David J.}, + number = {5}, + pages = {420--426}, + volume = {28}, + doi = {10.1016/j.jmgm.2009.10.001}, + issn = {10933263}, + keywords = {Bayesian, BioAssay, Cheminformatics, Predictive models, PubChem} +} + +@article{NantasenamatQSARClinical, + title = {{QSAR modeling of aromatase inhibitory activity of 1-substituted 1 , 2 , 3-triazole analogs of letrozole Center of Data Mining and Biomedical Informatics , Faculty of Medical Technology , Mahidol University , Bangkok 10700 , Thailand Department of Clinical}}, + author = {Nantasenamat, Chanin and Worachartcheewan, Apilak and Prachayasittikul, Supaluk and Isarankura-na-ayudhya, Chartchalerm and Prachayasittikul, Virapong} +} + +@article{Nantasenamat2013QSARLetrozole, + title = {{QSAR modeling of aromatase inhibitory activity of 1-substituted 1,2,3-triazole analogs of letrozole}}, + year = {2013}, + journal = {European Journal of Medicinal Chemistry}, + author = {Nantasenamat, Chanin and Worachartcheewan, Apilak and Prachayasittikul, Supaluk and Isarankura-Na-Ayudhya, Chartchalerm and Prachayasittikul, Virapong}, + pages = {99--114}, + volume = {69}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2013.08.015}, + doi = {10.1016/j.ejmech.2013.08.015}, + issn = {02235234}, + keywords = {Aromatase, Breast cancer, Chemical space, Letrozole, QSAR, Structure-activity relationship, Triazole} +} + +@article{Zhang2008QSARCompounds, + title = {{QSAR modeling of the blood-brain barrier permeability for diverse organic compounds}}, + year = {2008}, + journal = {Pharmaceutical Research}, + author = {Zhang, Liying and Zhu, Hao and Oprea, Tudor I. and Golbraikh, Alexander and Tropsha, Alexander}, + number = {8}, + pages = {1902--1914}, + volume = {25}, + doi = {10.1007/s11095-008-9609-0}, + issn = {07248741}, + keywords = {Combinatorial QSAR, Model validation, Predictors of BBB permeability, Support vector machines, k-nearest neighbors} +} + +@article{Zhang2008QSARCompoundsb, + title = {{QSAR modeling of the blood-brain barrier permeability for diverse organic compounds}}, + year = {2008}, + journal = {Pharmaceutical Research}, + author = {Zhang, Liying and Zhu, Hao and Oprea, Tudor I. and Golbraikh, Alexander and Tropsha, Alexander}, + number = {8}, + pages = {1902--1914}, + volume = {25}, + doi = {10.1007/s11095-008-9609-0}, + issn = {07248741}, + keywords = {Combinatorial QSAR, Model validation, Predictors of BBB permeability, Support vector machines, k-nearest neighbors} +} + +@article{Miller2019QuantitativeInhibitors, + title = {{Quantitative high-throughput screening assays for the discovery and development of SIRP{$\alpha$}-CD47 interaction inhibitors}}, + year = {2019}, + journal = {PLoS ONE}, + author = {Miller, Thomas W. and Amason, Joshua D. and Garcin, Elsa D. and Lamy, Laurence and Dranchak, Patricia K. and Macarthur, Ryan and Braisted, John and Rubin, Jeffrey S. and Burgess, Teresa L. and Farrell, Catherine L. and Roberts, David D. and Inglese, James}, + number = {7}, + volume = {14}, + doi = {10.1371/journal.pone.0218897}, + issn = {19326203} +} + +@article{Schutt2017Quantum-chemicalNetworks, + title = {{Quantum-chemical insights from deep tensor neural networks}}, + year = {2017}, + journal = {Nature Communications}, + author = {Sch{\"{u}}tt, Kristof T. and Arbabzadah, Farhad and Chmiela, Stefan and M{\"{u}}ller, Klaus R. and Tkatchenko, Alexandre}, + pages = {13890}, + volume = {8}, + publisher = {Nature Publishing Group}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/28067221 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC5228054}, + doi = {10.1038/NCOMMS13890}, + issn = {2041-1723}, + pmid = {28067221} +} + +@article{Ertl2006QuestScaffolds, + title = {{Quest for the rings. In silico exploration of ring universe to identify novel bioactive heteroaromatic scaffolds}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {Ertl, Peter and Jelfs, Stephen and M{\"{u}}hlbacher, Jörg and Schuffenhauer, Ansgar and Selzer, Paul}, + number = {15}, + pages = {4568--4573}, + volume = {49}, + doi = {10.1021/jm060217p}, + issn = {00222623} +} + +@article{Kline2008R---gossypolCells, + title = {{R-(-)-gossypol (AT-101) activates programmed cell death in multiple myeloma cells}}, + year = {2008}, + journal = {Experimental Hematology}, + author = {Kline, Michael P. and Rajkumar, S. Vincent and Timm, Michael M. and Kimlinger, Teresa K. and Haug, Jessica L. and Lust, John A. and Greipp, Philip R. and Kumar, Shaji}, + number = {5}, + pages = {568--576}, + volume = {36}, + doi = {10.1016/j.exphem.2008.01.003}, + issn = {0301472X} +} + +@article{Wang2016RaptorX-Property:Prediction, + title = {{RaptorX-Property: a web server for protein structure property prediction}}, + year = {2016}, + journal = {Nucleic acids research}, + author = {Wang, Sheng and Li, Wei and Liu, Shiwang and Xu, Jinbo}, + doi = {10.1093/nar/gkw306}, + issn = {13624962} +} + +@article{Desimmie2013RationalInfection, + title = {{Rational design of LEDGINs as first allosteric integrase inhibitors for the treatment of HIV infection}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Desimmie, Belete A. and Demeulemeester, Jonas and Christ, Frauke and Debyser, Zeger}, + number = {4}, + pages = {e517-e522}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.10.002}, + doi = {10.1016/j.ddtec.2012.10.002}, + issn = {17406749} +} + +@article{Rognan2015RationalInhibitors, + title = {{Rational design of protein-protein interaction inhibitors}}, + year = {2015}, + journal = {MedChemComm}, + author = {Rognan, Didier}, + number = {1}, + pages = {51--60}, + volume = {6}, + publisher = {Royal Society of Chemistry}, + url = {http://dx.doi.org/10.1039/C4MD00328D}, + doi = {10.1039/c4md00328d}, + issn = {20402511} +} + +@article{Nicolaes2014RationalVIII, + title = {{Rational design of small molecules targeting the C2 domain of coagulation factor VIII}}, + year = {2014}, + journal = {Blood}, + author = {Nicolaes, Gerry A.F. and Kulharia, Mahesh and Voorberg, Jan and Kaijen, Paul H. and Wroblewska, Aleksandra and Wielders, Simone and Schrijver, Roy and Sperandio, Olivier and Villoutreix, Bruno O.}, + number = {1}, + pages = {113--120}, + volume = {123}, + isbn = {1528-0020 (Electronic){\textbackslash}r0006-4971 (Linking)}, + doi = {10.1182/blood-2013-05-503227}, + issn = {15280020}, + pmid = {24227818} +} + +@article{Christ2010RationalReplication, + title = {{Rational design of small-molecule inhibitors of the LEDGF/p75-integrase interaction and HIV replication}}, + year = {2010}, + journal = {Nature Chemical Biology}, + author = {Christ, Frauke and Voet, Arnout and Marchand, Arnaud and Nicolet, Stefan and Desimmie, Belete A. and Marchand, Damien and Bardiot, Dorothée and Van Der Veken, Nam Joo and Van Remoortel, Barbara and Strelkov, Sergei V. and De Maeyer, Marc and Chaltin, Patrick and Debyser, Zeger}, + number = {6}, + pages = {442--448}, + volume = {6}, + doi = {10.1038/nchembio.370}, + issn = {15524469} +} + +@article{Christ2010RationalReplicationb, + title = {{Rational design of small-molecule inhibitors of the LEDGF/p75-integrase interaction and HIV replication}}, + year = {2010}, + journal = {Nature Chemical Biology}, + author = {Christ, Frauke and Voet, Arnout and Marchand, Arnaud and Nicolet, Stefan and Desimmie, Belete A. and Marchand, Damien and Bardiot, Dorothée and Van Der Veken, Nam Joo and Van Remoortel, Barbara and Strelkov, Sergei V. and De Maeyer, Marc and Chaltin, Patrick and Debyser, Zeger}, + number = {6}, + pages = {442--448}, + volume = {6}, + doi = {10.1038/nchembio.370}, + issn = {15524469} +} + +@article{Seneci2009RationalTherapy, + title = {{Rational design, synthesis and characterization of potent, non-peptidic Smac mimics/XIAP inhibitors as proapoptotic agents for cancer therapy}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Seneci, Pierfausto and Bianchi, Aldo and Battaglia, Cristina and Belvisi, Laura and Bolognesi, Martino and Caprini, Andrea and Cossu, Federica and Franco, Elena de and Matteo, Marilenia de and Delia, Domenico and Drago, Carmelo and Khaled, Amira and Lecis, Daniele and Manzoni, Leonardo and Marizzoni, Moira and Mastrangelo, Eloise and Milani, Mario and Motto, Ilaria and Moroni, Elisabetta and Potenza, Donatella and Rizzo, Vincenzo and Servida, Federica and Turlizzi, Elisa and Varrone, Maurizio and Vasile, Francesca and Scolastico, Carlo}, + number = {16}, + pages = {5834--5856}, + volume = {17}, + doi = {10.1016/j.bmc.2009.07.009}, + issn = {09680896}, + keywords = {Apoptosis, Crystallography, Medicinal chemistry, NMR, Oncology, Rational drug design, Smac, XIAP} +} + +@misc{Sperandio2010RationalizingInhibitors, + title = {{Rationalizing the chemical space of protein-protein interaction inhibitors}}, + year = {2010}, + booktitle = {Drug Discovery Today}, + author = {Sperandio, Olivier and Reyn{\`{e}}s, Christelle H. and Camproux, Anne Claude and Villoutreix, Bruno O.}, + number = {5-6}, + pages = {220--229}, + volume = {15}, + isbn = {1359-6446}, + doi = {10.1016/j.drudis.2009.11.007}, + issn = {13596446}, + pmid = {19969101} +} + +@misc{Sperandio2010RationalizingInhibitorsb, + title = {{Rationalizing the chemical space of protein-protein interaction inhibitors}}, + year = {2010}, + booktitle = {Drug Discovery Today}, + author = {Sperandio, Olivier and Reyn{\`{e}}s, Christelle H. and Camproux, Anne Claude and Villoutreix, Bruno O.}, + number = {5-6}, + month = {4}, + pages = {220--229}, + volume = {15}, + isbn = {1359-6446}, + doi = {10.1016/j.drudis.2009.11.007}, + issn = {13596446}, + pmid = {19969101}, + language = {English} +} + +@article{Sperandio2010RationalizingInhibitorsc, + title = {{Rationalizing the chemical space of protein-protein interaction inhibitors}}, + year = {2010}, + journal = {Drug Discovery Today}, + author = {Sperandio, Olivier and Reyn{\`{e}}s, Christelle H. and Camproux, Anne Claude and Villoutreix, Bruno O.}, + number = {5-6}, + pages = {220--229}, + volume = {15}, + doi = {10.1016/j.drudis.2009.11.007}, + issn = {13596446} +} + +@article{Andrei2018RationallyInteractions, + title = {{Rationally Designed Semisynthetic Natural Product Analogues for Stabilization of 14-3-3 Protein–Protein Interactions}}, + year = {2018}, + journal = {Angewandte Chemie - International Edition}, + author = {Andrei, Sebastian A. and de Vink, Pim and Sijbesma, Eline and Han, Ling and Brunsveld, Luc and Kato, Nobuo and Ottmann, Christian and Higuchi, Yusuke}, + number = {41}, + pages = {13470--13474}, + volume = {57}, + doi = {10.1002/anie.201806584}, + issn = {15213773}, + keywords = {anticancer, drug discovery, molecular dynamics, natural products, proteins} +} + +@article{Zhu2012ReactivationBRD4, + title = {{Reactivation of Latent HIV-1 by Inhibition of BRD4}}, + year = {2012}, + journal = {Cell Reports}, + author = {Zhu, Jian and Gaiha, Gaurav D. and John, Sinu P. and Pertel, Thomas and Chin, Christopher R. and Gao, Geng and Qu, Hongjing and Walker, Bruce D. and Elledge, Stephen J. and Brass, Abraham L.}, + number = {4}, + pages = {807--816}, + volume = {2}, + publisher = {The Authors}, + url = {http://dx.doi.org/10.1016/j.celrep.2012.09.008}, + doi = {10.1016/j.celrep.2012.09.008}, + issn = {22111247} +} + +@article{Haranahalli2016RecentFtsZ, + title = {{Recent advances in the discovery and development of antibacterial agents targeting the cell-division protein FtsZ}}, + year = {2016}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Haranahalli, Krupanandan and Tong, Simon and Ojima, Iwao}, + doi = {10.1016/j.bmc.2016.05.003}, + issn = {14643391}, + keywords = {Antibacterial agent, Cell division, FtsZ, Inhibitor, Multidrug resistance, Septation, Z-ring protofilament} +} + +@misc{Panteleev2018RecentChemistry, + title = {{Recent applications of machine learning in medicinal chemistry}}, + year = {2018}, + booktitle = {Bioorganic and Medicinal Chemistry Letters}, + author = {Panteleev, Jane and Gao, Hua and Jia, Lei}, + number = {17}, + month = {9}, + pages = {2807--2815}, + volume = {28}, + publisher = {Elsevier Ltd}, + doi = {10.1016/j.bmcl.2018.06.046}, + issn = {14643405} +} + +@article{Congreve2008RecentDiscovery, + title = {{Recent developments in fragment-based drug discovery}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Congreve, Miles and Chessari, Gianni and Tisi, Dominic and Woodhead, Andrew J.}, + number = {13}, + pages = {3661--3680}, + volume = {51}, + doi = {10.1021/jm8000373}, + issn = {00222623} +} + +@article{Congreve2008RecentDiscoveryb, + title = {{Recent developments in fragment-based drug discovery}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Congreve, Miles and Chessari, Gianni and Tisi, Dominic and Woodhead, Andrew J.}, + number = {13}, + pages = {3661--3680}, + volume = {51}, + doi = {10.1021/jm8000373}, + issn = {00222623} +} + +@article{Wan2020ReceptorSARS, + title = {{Receptor recognition by novel coronavirus from Wuhan: An analysis based on decade-long structural studies of SARS}}, + year = {2020}, + journal = {Journal of Virology}, + author = {Wan, Yushun and Shang, Jian and Graham, Rachel and Baric, Ralph S. and Li, Fang}, + month = {1}, + publisher = {American Society for Microbiology}, + doi = {10.1128/jvi.00127-20}, + issn = {0022-538X}, + pmid = {31996437} +} + +@article{Wan2020ReceptorCoronavirus, + title = {{Receptor Recognition by the Novel Coronavirus from Wuhan: an Analysis Based on Decade-Long Structural Studies of SARS Coronavirus}}, + year = {2020}, + journal = {Journal of Virology}, + author = {Wan, Yushun and Shang, Jian and Graham, Rachel and Baric, Ralph S. and Li, Fang}, + number = {7}, + month = {1}, + volume = {94}, + publisher = {American Society for Microbiology}, + doi = {10.1128/jvi.00127-20}, + issn = {0022-538X}, + pmid = {31996437} +} + +@article{BenthamSciencePublisher2006Receptor-BasedEngines, + title = {{Receptor-Based Computational Screening of Compound Databases: The Main Docking-Scoring Engines}}, + year = {2006}, + journal = {Current Protein {\&} Peptide Science}, + author = {Bentham Science Publisher, Bentham Science Publisher}, + number = {5}, + pages = {369--393}, + volume = {7}, + url = {http://www.eurekaselect.com/openurl/content.php?genre=article&issn=1389-2037&volume=7&issue=5&spage=369}, + isbn = {1389-2037 (Print){\textbackslash}r1389-2037 (Linking)}, + doi = {10.2174/138920306778559377}, + issn = {13892037}, + pmid = {17073691}, + keywords = {Docking, Scoring, Structure-based drug design, Virtual ligand screening} +} + +@article{Hofliger2003Receptor-LigandInteraction, + title = {{Receptor-Ligand Interaction}}, + year = {2003}, + author = {H{\"{o}}fliger, M M}, + isbn = {3527305211} +} + +@article{Gianotti2006RecombinantOfficinarum, + title = {{Recombinant expression, purification, and functional analysis of two novel cystatins from sugarcane (Saccharum officinarum)}}, + year = {2006}, + journal = {Protein Expression and Purification}, + author = {Gianotti, Andréia and Rios, Wendy M. and Soares-Costa, Andrea and Nogaroto, Viviane and Carmona, Adriana K. and Oliva, Maria L.V. and Andrade, Sheila S. and Henrique-Silva, Flávio}, + number = {2}, + pages = {483--489}, + volume = {47}, + isbn = {1046-5928 (Print)}, + doi = {10.1016/j.ejmech.2008.09.052}, + issn = {02235234}, + pmid = {16330226}, + keywords = {Canecystatin, Cystatin, Cysteine proteinase inhibitor, Phytocystatin, Saccharum officinarum, Sugarcane} +} + +@article{Zerbe2012RelationshipInterfaces, + title = {{Relationship between Hot Spot Residues and Ligand Binding Hot Spots in Protein–Protein Interfaces}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Zerbe, Brandon S. and Hall, David R. and Vajda, Sandor and Whitty, Adrian and Kozakov, Dima}, + number = {8}, + month = {8}, + pages = {2236--2244}, + volume = {52}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/22770357 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC3623692 http://pubs.acs.org/doi/10.1021/ci300175u}, + doi = {10.1021/ci300175u}, + issn = {1549-9596}, + pmid = {22770357} +} + +@article{Shannon2020RemdesivirActive-sites, + title = {{Remdesivir and SARS-CoV-2: Structural requirements at both nsp12 RdRp and nsp14 Exonuclease active-sites}}, + year = {2020}, + journal = {Antiviral Research}, + author = {Shannon, Ashleigh and Le, Nhung Thi Tuyet and Selisko, Barbara and Eydoux, Cecilia and Alvarez, Karine and Guillemot, Jean Claude and Decroly, Etienne and Peersen, Olve and Ferron, Francois and Canard, Bruno}, + number = {March}, + pages = {104793}, + volume = {178}, + publisher = {Elsevier}, + url = {https://doi.org/10.1016/j.antiviral.2020.104793}, + doi = {10.1016/j.antiviral.2020.104793}, + issn = {18729096}, + pmid = {32283108}, + keywords = {COVID-19, Coronavirus, Exonuclease, Mutation, Nucleotide analogue, RNA-Dependent RNA polymerase, Remdesivir, Resistance} +} + +@article{Battles2019RespiratoryIt., + title = {{Respiratory syncytial virus entry and how to block it.}}, + year = {2019}, + journal = {Nature reviews. Microbiology}, + author = {Battles, Michael B and McLellan, Jason S}, + number = {4}, + month = {4}, + pages = {233--245}, + volume = {17}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/30723301}, + doi = {10.1038/s41579-019-0149-x}, + issn = {1740-1534}, + pmid = {30723301} +} + +@article{Griffiths2017RespiratoryTreatment, + title = {{Respiratory syncytial virus: Infection, detection, and new options for prevention and treatment}}, + year = {2017}, + journal = {Clinical Microbiology Reviews}, + author = {Griffiths, Cameron and Drews, Steven J. and Marchant, David J.}, + number = {1}, + month = {1}, + pages = {277--319}, + volume = {30}, + publisher = {American Society for Microbiology}, + doi = {10.1128/CMR.00010-16}, + issn = {10986618}, + pmid = {27903593}, + keywords = {Diagnostics, Epidemiology, Experimental therapeutics, Immunization, Respiratory syncytial virus, Viral pathogenesis} +} + +@article{Fink2007Reymond_GDB11_JCIMM_2007_ci600423u, + title = {{Reymond{\_}GDB11{\_}JCIMM{\_}2007{\_}ci600423u}}, + year = {2007}, + author = {Fink, Tobias and Reymond, Jean-louis}, + pages = {342--353} +} + +@article{Fujino2012RobustScanning, + title = {{Robust in vitro affinity maturation strategy based on interface-focused high-throughput mutational scanning}}, + year = {2012}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Fujino, Yasuhiro and Fujita, Risako and Wada, Kouichi and Fujishige, Kotomi and Kanamori, Takashi and Hunt, Lindsey and Shimizu, Yoshihiro and Ueda, Takuya}, + number = {3}, + pages = {395--400}, + volume = {428}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.bbrc.2012.10.066}, + doi = {10.1016/j.bbrc.2012.10.066}, + issn = {0006291X}, + keywords = {Affinity maturation, Antibody Fab fragment, High-throughput sequencing, Mutation scanning, Protein engineering, Ribosome display} +} + +@article{Robichon2011RoleFtsB, + title = {{Role of leucine zipper motifs in association of the Escherichia coli cell division proteins FtsL and FtsB}}, + year = {2011}, + journal = {Journal of Bacteriology}, + author = {Robichon, Carine and Karimova, Gouzel and Beckwith, Jon and Ladant, Daniel}, + doi = {10.1128/JB.00324-11}, + issn = {00219193} +} + +@article{Swapna2012RolesComplexation, + title = {{Roles of residues in the interface of transient protein-protein complexes before complexation}}, + year = {2012}, + journal = {Scientific Reports}, + author = {Swapna, Lakshmipuram S. and Bhaskara, Ramachandra M. and Sharma, Jyoti and Srinivasan, Narayanaswamy}, + pages = {1--9}, + volume = {2}, + doi = {10.1038/srep00334}, + issn = {20452322}, + pmid = {22451863} +} + +@article{Bruns2012RulesCompounds, + title = {{Rules for identifying potentially reactive or promiscuous compounds}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Bruns, Robert F. and Watson, Ian A.}, + number = {22}, + pages = {9763--9772}, + volume = {55}, + doi = {10.1021/jm301008n}, + issn = {00222623} +} + +@article{Picaud2013RVX-208Bromodomain, + title = {{RVX-208, an inhibitor of BET transcriptional regulators with selectivity for the second bromodomain}}, + year = {2013}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Picaud, Sarah and Wells, Christopher and Felletar, Ildiko and Brotherton, Deborah and Martin, Sarah and Savitsky, Pavel and Diez-Dacal, Beatriz and Philpott, Martin and Bountra, Chas and Lingard, Hannah and Fedorov, Oleg and M{\"{u}}ller, Susanne and Brennan, Paul E. and Knapp, Stefan and Filippakopoulos, Panagis}, + number = {49}, + pages = {19754--19759}, + volume = {110}, + isbn = {1310658110}, + doi = {10.1073/pnas.1310658110}, + issn = {10916490} +} + +@article{Bailey2010RVX-208.Vivo, + title = {{RVX-208. A Small Molecule That Increases Apolipoprotein A-I and High-Density Lipoprotein Cholesterol In Vitro and In Vivo}}, + year = {2010}, + journal = {Journal of the American College of Cardiology}, + author = {Bailey, Dana and Jahagirdar, Ravi and Gordon, Allan and Hafiane, Anouar and Campbell, Steven and Chatur, Safia and Wagner, Gregory S. and Hansen, Henrik C. and Chiacchia, Fabrizio S. and Johansson, Jan and Krimbou, Larbi and Wong, Norman C.W. and Genest, Jacques}, + number = {23}, + pages = {2580--2589}, + volume = {55}, + doi = {10.1016/j.jacc.2010.02.035}, + issn = {07351097}, + keywords = {HDL-based therapy, apoA-I, atherosclerosis, reverse cholesterol transport} +} + +@article{Ming2000SXps, + title = {{S s p f pmma leis xps}}, + year = {2000}, + author = {Ming, W and Laven, J and Krupers, M and Th{\"{u}}ne, P C and Niemantsverdriet, J W and Brongersma, H H and Linde, R Van Der}, + keywords = {function, oligomeric proteins, protein structure, protein symmetry} +} + +@article{McKenney2012SafetyTherapy, + title = {{Safety and efficacy of a monoclonal antibody to proprotein convertase subtilisin/kexin type 9 serine protease, SAR236553/REGN727, in patients with primary hypercholesterolemia receiving ongoing stable atorvastatin therapy}}, + year = {2012}, + journal = {Journal of the American College of Cardiology}, + author = {McKenney, James M. and Koren, Michael J. and Kereiakes, Dean J. and Hanotin, Corinne and Ferrand, Anne Catherine and Stein, Evan A.}, + number = {25}, + pages = {2344--2353}, + volume = {59}, + publisher = {American College of Cardiology Foundation}, + url = {http://dx.doi.org/10.1016/j.jacc.2012.03.007}, + doi = {10.1016/j.jacc.2012.03.007}, + issn = {07351097}, + keywords = {PCSK9, SAR236553/REGN727, apolipoprotein-B, hypercholesterolemia, low-density lipoprotein cholesterol, safety, statin} +} + +@article{Moroy2015SamplingAnalysis, + title = {{Sampling of conformational ensemble for virtual screening using molecular dynamics simulations and normal mode analysis}}, + year = {2015}, + journal = {Future Medicinal Chemistry}, + author = {Moroy, Gautier and Sperandio, Olivier and Rielland, Shakti and Khemka, Saurabh and Druart, Karen and Goyal, Divij and Perahia, David and Miteva, Maria A}, + number = {17}, + pages = {2317--2331}, + volume = {7}, + url = {http://www.future-science.com/doi/10.4155/fmc.15.150}, + isbn = {8131731448}, + doi = {10.4155/fmc.15.150}, + issn = {17568927}, + pmid = {26599419}, + keywords = {CDK2, DHFR, molecular dynamics simulations, normal mode analysis, protein conformational ensemble, virtual screening} +} + +@article{Lounkine2010SARANEA:Sets, + title = {{SARANEA: A freely available program to mine structure-activity and structure-selectivity relationship information in compound data sets}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Lounkine, Eugen and Wawer, Mathias and Wassermann, Anne Mai and Bajorath, Jürgen}, + number = {1}, + pages = {68--78}, + volume = {50}, + doi = {10.1021/ci900416a}, + issn = {15499596} +} + +@article{Hoffmann2020SARS-CoV-2Inhibitor, + title = {{SARS-CoV-2 Cell Entry Depends on ACE2 and TMPRSS2 and Is Blocked by a Clinically Proven Protease Inhibitor}}, + year = {2020}, + journal = {Cell}, + author = {Hoffmann, Markus and Kleine-Weber, Hannah and Schroeder, Simon and Kr{\"{u}}ger, Nadine and Herrler, Tanja and Erichsen, Sandra and Schiergens, Tobias S and Herrler, Georg and Wu, Nai-Huei and Nitsche, Andreas and M{\"{u}}ller, Marcel A and Drosten, Christian and P{\"{o}}hlmann, Stefan}, + month = {4}, + publisher = {Elsevier}, + url = {https://doi.org/10.1016/j.cell.2020.02.052}, + doi = {10.1016/j.cell.2020.02.052}, + issn = {0092-8674} +} + +@article{Hoffmann2020SARS-CoV-2Inhibitorb, + title = {{SARS-CoV-2 Cell Entry Depends on ACE2 and TMPRSS2 and Is Blocked by a Clinically Proven Protease Inhibitor}}, + year = {2020}, + journal = {Cell}, + author = {Hoffmann, Markus and Kleine-Weber, Hannah and Schroeder, Simon and Kr{\"{u}}ger, Nadine and Herrler, Tanja and Erichsen, Sandra and Schiergens, Tobias S. and Herrler, Georg and Wu, Nai Huei and Nitsche, Andreas and M{\"{u}}ller, Marcel A. and Drosten, Christian and P{\"{o}}hlmann, Stefan}, + month = {4}, + publisher = {Cell Press}, + doi = {10.1016/j.cell.2020.02.052}, + issn = {10974172}, + keywords = {ACE2, COVID-19, SARS-CoV-2, TMPRSS2, coronavirus, entry, neutralization, priming, spike} +} + +@article{Hershberger2007ScaffoldsInteractions, + title = {{Scaffolds for Blocking Protein-Protein Interactions}}, + year = {2007}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Hershberger, Stefan and Lee, Song-Gil and Chmielewski, Jean}, + doi = {10.2174/156802607780906726}, + issn = {15680266} +} + +@article{Sperandio2008ScreeningExperiments, + title = {{Screening Outside the Catalytic Site: Inhibition of Macromolecular Interactions Through Structure-Based Virtual Ligand Screening Experiments}}, + year = {2008}, + journal = {The Open Biochemistry Journal}, + author = {Sperandio, Olivier and Miteva, Maria A and Segers, Kenneth and Nicolaes, Gerry A. F and Villoutreix, Bruno O}, + pages = {29--37}, + volume = {2}, + doi = {10.2174/1874091x00802010029}, + issn = {1874-091X}, + keywords = {drug discovery, protein-membrane inter-, protein-protein interaction, structure-based drug design, virtual screening} +} + +@article{VanHoorn2009SearchingGenerator, + title = {{Searching chemical space with the Bayesian idea generator}}, + year = {2009}, + journal = {Journal of Chemical Information and Modeling}, + author = {Van Hoorn, Willem P. and Bell, Andrew S.}, + number = {10}, + pages = {2211--2220}, + volume = {49}, + doi = {10.1021/ci900072g}, + issn = {15499596} +} + +@article{Morelli2012SearchingModulation, + title = {{Searching for the Holy Grail; Protein-protein interaction analysis and modulation}}, + year = {2012}, + journal = {EMBO Reports}, + author = {Morelli, Xavier and Hupp, Ted}, + number = {10}, + pages = {877--879}, + volume = {13}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/embor.2012.137}, + doi = {10.1038/embor.2012.137}, + issn = {1469221X} +} + +@article{Broughton2004SelectionDesign, + title = {{Selection of heterocycles for drug design}}, + year = {2004}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Broughton, Howard B. and Watson, Ian A.}, + number = {1}, + pages = {51--58}, + volume = {23}, + doi = {10.1016/j.jmgm.2004.03.016}, + issn = {10933263}, + keywords = {ADME, ADMET, Absorption, Descriptors, Distribution, Diversity, Excretion, Heterocycle, Known drugs, Library design, Metabolism, Properties, Ring systems, Similarity, Toxicity} +} + +@article{Gonzalez2014SelectiveInteraction, + title = {{Selective and potent morpholinone inhibitors of the MDM2-p53 protein-protein interaction}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Gonzalez, Ana Z. and Eksterowicz, John and Bartberger, Michael D. and Beck, Hilary P. and Canon, Jude and Chen, Ada and Chow, David and Duquette, Jason and Fox, Brian M. and Fu, Jiasheng and Huang, Xin and Houze, Jonathan B. and Jin, Lixia and Li, Yihong and Li, Zhihong and Ling, Yun and Lo, Mei Chu and Long, Alexander M. and McGee, Lawrence R. and McIntosh, Joel and McMinn, Dustin L. and Oliner, Jonathan D. and Osgood, Tao and Rew, Yosup and Saiki, Anne Y. and Shaffer, Paul and Wortman, Sarah and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Zhao, Xiaoning and Zhou, Jing and Olson, Steven H. and Medina, Julio C. and Sun, Daqing}, + number = {6}, + pages = {2472--2488}, + volume = {57}, + doi = {10.1021/jm401767k}, + issn = {15204804} +} + +@article{Gonzalez2014SelectiveInteractionb, + title = {{Selective and potent morpholinone inhibitors of the MDM2-p53 protein-protein interaction}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Gonzalez, Ana Z. and Eksterowicz, John and Bartberger, Michael D. and Beck, Hilary P. and Canon, Jude and Chen, Ada and Chow, David and Duquette, Jason and Fox, Brian M. and Fu, Jiasheng and Huang, Xin and Houze, Jonathan B. and Jin, Lixia and Li, Yihong and Li, Zhihong and Ling, Yun and Lo, Mei Chu and Long, Alexander M. and McGee, Lawrence R. and McIntosh, Joel and McMinn, Dustin L. and Oliner, Jonathan D. and Osgood, Tao and Rew, Yosup and Saiki, Anne Y. and Shaffer, Paul and Wortman, Sarah and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Zhao, Xiaoning and Zhou, Jing and Olson, Steven H. and Medina, Julio C. and Sun, Daqing}, + number = {6}, + pages = {2472--2488}, + volume = {57}, + doi = {10.1021/jm401767k}, + issn = {15204804} +} + +@article{Filippakopoulos2010SelectiveBromodomains, + title = {{Selective inhibition of BET bromodomains}}, + year = {2010}, + journal = {Nature}, + author = {Filippakopoulos, Panagis and Qi, Jun and Picaud, Sarah and Shen, Yao and Smith, William B. and Fedorov, Oleg and Morse, Elizabeth M. and Keates, Tracey and Hickman, Tyler T. and Felletar, Ildiko and Philpott, Martin and Munro, Shonagh and McKeown, Michael R. and Wang, Yuchuan and Christie, Amanda L. and West, Nathan and Cameron, Michael J. and Schwartz, Brian and Heightman, Tom D. and La Thangue, Nicholas and French, Christopher A. and Wiest, Olaf and Kung, Andrew L. and Knapp, Stefan and Bradner, James E.}, + number = {7327}, + pages = {1067--1073}, + volume = {468}, + doi = {10.1038/nature09504}, + issn = {00280836} +} + +@article{Filippakopoulos2010SelectiveBromodomainsb, + title = {{Selective inhibition of BET bromodomains}}, + year = {2010}, + journal = {Nature}, + author = {Filippakopoulos, Panagis and Qi, Jun and Picaud, Sarah and Shen, Yao and Smith, William B. and Fedorov, Oleg and Morse, Elizabeth M. and Keates, Tracey and Hickman, Tyler T. and Felletar, Ildiko and Philpott, Martin and Munro, Shonagh and McKeown, Michael R. and Wang, Yuchuan and Christie, Amanda L. and West, Nathan and Cameron, Michael J. and Schwartz, Brian and Heightman, Tom D. and La Thangue, Nicholas and French, Christopher A. and Wiest, Olaf and Kung, Andrew L. and Knapp, Stefan and Bradner, James E.}, + number = {7327}, + pages = {1067--1073}, + volume = {468}, + doi = {10.1038/nature09504}, + issn = {00280836} +} + +@article{Kiessling2007SelectivePyrimidine, + title = {{Selective inhibition of c-Myc/max dimerization by a pyrazolo[1,5-a]- pyrimidine}}, + year = {2007}, + journal = {ChemMedChem}, + author = {Kiessling, Anke and Wiesinger, Rita and Sperl, Bianca and Berg, Thorsten}, + number = {5}, + pages = {627--630}, + volume = {2}, + doi = {10.1002/cmdc.200600294}, + issn = {18607179}, + keywords = {Inhibitors, Protein-protein interactions, Screening, Signal transduction, Transcription factor dimerization} +} + +@article{Bandukwala2012SelectiveInhibitors, + title = {{Selective inhibition of CD4+ T-cell cytokine production and autoimmunity by BET protein and c-Myc inhibitors}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Bandukwala, Hozefa S. and Gagnon, John and Togher, Susan and Greenbaum, Jason A. and Lamperti, Edward D. and Parr, Nigel J. and Molesworth, Amy M.H. and Smithers, Nicholas and Lee, Kevin and Witherington, Jason and Tough, David F. and Prinjha, Rab K. and Peters, Bjoern and Rao, Anjana}, + number = {36}, + pages = {14532--14537}, + volume = {109}, + doi = {10.1073/pnas.1212264109}, + issn = {00278424}, + keywords = {5,6-dichloro-1-{$\beta$}-D- ribofuranosylbenzimidazole, BRD inhibitors, BRD4, Positive transcription elongation factor b, Transcriptional pausing} +} + +@article{Cameron2012SerumPathways, + title = {{Serum levels of proprotein convertase subtilisin/kexin type 9 in subjects with familial hypercholesterolemia indicate that proprotein convertase subtilisin/kexin type 9 is cleared from plasma by low-density lipoprotein receptor-independent pathways}}, + year = {2012}, + journal = {Translational Research}, + author = {Cameron, Jamie and Bogsrud, Martin P. and Tveten, Kristian and Strom, Thea Bismo and Holven, Kirsten and Berge, Knut Erik and Leren, Trond P.}, + number = {2}, + pages = {125--130}, + volume = {160}, + doi = {10.1016/j.trsl.2012.01.010}, + issn = {18781810} +} + +@article{Bakken2012ShapingRedundancy, + title = {{Shaping a screening file for maximal lead discovery efficiency and effectiveness: Elimination of molecular redundancy}}, + year = {2012}, + journal = {Journal of Chemical Information and Modeling}, + author = {Bakken, Gregory A. and Bell, Andrew S. and Boehm, Markus and Everett, Jeremy R. and Gonzales, Rosalia and Hepworth, David and Klug-Mcleod, Jacquelyn L. and Lanfear, Jeremy and Loesel, Jens and Mathias, John and Wood, Terence P.}, + number = {11}, + pages = {2937--2949}, + volume = {52}, + doi = {10.1021/ci300372a}, + issn = {15499596} +} + +@article{Kale2012SheddingMembranes, + title = {{Shedding light on apoptosis at subcellular membranes}}, + year = {2012}, + journal = {Cell}, + author = {Kale, Justin and Liu, Qian and Leber, Brian and Andrews, David W.}, + number = {6}, + pages = {1179--1184}, + volume = {151}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.cell.2012.11.013}, + doi = {10.1016/j.cell.2012.11.013}, + issn = {00928674} +} + +@misc{SICandidates.pdf, + title = {{SI Kopple 2002 GSK Molecular properties that influence the oral bioavailability of drug candidates.pdf}} +} + +@article{Sijbesma2019Site-DirectedStabilizers, + title = {{Site-Directed Fragment-Based Screening for the Discovery of Protein-Protein Interaction Stabilizers}}, + year = {2019}, + journal = {Journal of the American Chemical Society}, + author = {Sijbesma, Eline and Hallenbeck, Kenneth K. and Leysen, Seppe and De Vink, Pim J. and Sk{\'{o}}ra, Lukasz and Jahnke, Wolfgang and Brunsveld, Luc and Arkin, Michelle R. and Ottmann, Christian}, + number = {8}, + pages = {3524--3531}, + volume = {141}, + doi = {10.1021/jacs.8b11658}, + issn = {15205126} +} + +@article{Domling2008SmallChallenge, + title = {{Small molecular weight protein-protein interaction antagonists-an insurmountable challenge?}}, + year = {2008}, + journal = {Current Opinion in Chemical Biology}, + author = {D{\"{o}}mling, Alexander}, + number = {3}, + pages = {281--291}, + volume = {12}, + doi = {10.1016/j.cbpa.2008.04.603}, + issn = {13675931} +} + +@article{Watterson2010SmallTriazaspiro4.4nonan-7-ylnico, + title = {{Small molecule antagonist of leukocyte function associated antigen-1 (LFA-1): Structure-activity relationships leading to the identification of 6-((5 S,9 R)-9-(4-Cyanophenyl)-3-(3,5-dichlorophenyl)-1-methyl-2,4-dioxo-1,3,7- triazaspiro[4.4]nonan-7-yl)nico}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Watterson, Scott H. and Xiao, Zili and Dodd, Dharmpal S. and Tortolani, David R. and Vaccaro, Wayne and Potin, Dominique and Launay, Michele and Stetsko, Dawn K. and Skala, Stacey and Davis, Patric M. and Lee, Deborah and Yang, Xiaoxia and McIntyre, Kim W. and Balimane, Praveen and Patel, Karishma and Yang, Zheng and Marathe, Punit and Kadiyala, Pathanjali and Tebben, Andrew J. and Sheriff, Steven and Chang, Chiehying Y. and Ziemba, Theresa and Zhang, Huiping and Chen, Bang Chi and Delmonte, Albert J. and Aranibar, Nelly and McKinnon, Murray and Barrish, Joel C. and Suchard, Suzanne J. and Murali Dhar, T. G.}, + number = {9}, + pages = {3814--3830}, + volume = {53}, + doi = {10.1021/jm100348u}, + issn = {00222623} +} + +@article{Silvian2011SmallMechanism, + title = {{Small molecule inhibition of the TNF family cytokine CD40 ligand through a subunit fracture mechanism}}, + year = {2011}, + journal = {ACS chemical biology}, + author = {Silvian, Laura F. and Friedman, Jessica E. and Strauch, Kathy and Cachero, Teresa G. and Day, Eric S. and Qian, Fang and Cunningham, Brian and Fung, Amy and Sun, Lihong and Shipps, Gerald W. and Su, Lihe and Zheng, Zhongli and Kumaravel, Gnanasambandam and Whitty, Adrian}, + number = {6}, + month = {6}, + pages = {636--647}, + volume = {6}, + doi = {10.1021/cb2000346}, + issn = {1554-8937}, + language = {eng} +} + +@article{Glanzer2011SmallMethods, + title = {{Small molecule inhibitor of the RPA70 N-terminal protein interaction domain discovered using in silico and in vitro methods}}, + year = {2011}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Glanzer, Jason G. and Liu, Shengqin and Oakley, Gregory G.}, + number = {8}, + pages = {2589--2595}, + volume = {19}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2011.03.012}, + doi = {10.1016/j.bmc.2011.03.012}, + issn = {09680896}, + keywords = {Docking, EMSA, High-throughput screen, Inhibitors, Replication Protein A} +} + +@article{Jordheim2013SmallCellss, + title = {{Small molecule inhibitors of ercc1-xpf protein-protein interaction synergize alkylating agents in cancer cellss}}, + year = {2013}, + journal = {Molecular Pharmacology}, + author = {Jordheim, Lars Petter and Barakat, Khaled H. and Heinrich-Balard, Laurence and Matera, Eva Laure and Cros-Perrial, Emeline and Bouledrak, Karima and Sabeh, Rana El and Perez-Pineiro, Rolando and Wishart, David S. and Cohen, Richard and Tuszynski, Jack and Dumontet, Charles}, + number = {1}, + pages = {12--24}, + volume = {84}, + doi = {10.1124/mol.112.082347}, + issn = {0026895X} +} + +@article{DAbramo2011SmallInteractions, + title = {{Small Molecule Inhibitors of Human Papillomavirus Protein - Protein Interactions}}, + year = {2011}, + journal = {The Open Virology Journal}, + author = {D’Abramo, C.M.}, + number = {1}, + pages = {80--95}, + volume = {5}, + doi = {10.2174/1874357901105010080}, + issn = {18743579}, + keywords = {are small, cervical cancer, diseases, double-, e1, e2, e6, e6ap, hpv, hpv infection and associated, human papillomaviruses, induce benign and malignant, protein interaction, small molecule inhibitor, stranded dna viruses that} +} + +@article{Muratore2012SmallPolymerase, + title = {{Small molecule inhibitors of influenza A and B viruses that act by disrupting subunit interactions of the viral polymerase}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Muratore, Giulia and Goracci, Laura and Mercorelli, Beatrice and Foeglein, Ãgnes and Digard, Paul and Cruciani, Gabriele and Pal{\`{u}}, Giorgio and Loregian, Arianna}, + number = {16}, + pages = {6247--6252}, + volume = {109}, + doi = {10.1073/pnas.1119817109}, + issn = {00278424} +} + +@article{Smithgall2013SmallNef, + title = {{Small molecule inhibitors of the HIV-1 virulence factor, Nef}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Smithgall, Thomas E. and Thomas, Gary}, + number = {4}, + pages = {e523-e529}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2013.07.002}, + doi = {10.1016/j.ddtec.2013.07.002}, + issn = {17406749} +} + +@article{Bowman2007SmallModels, + title = {{Small molecule inhibitors of the MDM2-p53 interaction discovered by ensemble-based receptor models}}, + year = {2007}, + journal = {Journal of the American Chemical Society}, + author = {Bowman, Anna L. and Nikolovska-Coleska, Zaneta and Zhong, Haizhen and Wang, Shaomeng and Carlson, Heather A.}, + number = {42}, + pages = {12809--12814}, + volume = {129}, + doi = {10.1021/ja073687x}, + issn = {00027863} +} + +@article{Bowman2007SmallModelsb, + title = {{Small molecule inhibitors of the MDM2-p53 interaction discovered by ensemble-based receptor models}}, + year = {2007}, + journal = {Journal of the American Chemical Society}, + author = {Bowman, Anna L. and Nikolovska-Coleska, Zaneta and Zhong, Haizhen and Wang, Shaomeng and Carlson, Heather A.}, + number = {42}, + pages = {12809--12814}, + volume = {129}, + doi = {10.1021/ja073687x}, + issn = {00027863} +} + +@article{Rajapakse2007SmallInteraction, + title = {{Small Molecule Inhibitors of the XIAP Protein-Protein Interaction}}, + year = {2007}, + journal = {Current Topics in Medicinal Chemistry}, + author = {Rajapakse, Hemaka}, + number = {10}, + pages = {966--971}, + volume = {7}, + doi = {10.2174/156802607780906816}, + issn = {15680266}, + keywords = {apoptosis, bir 2, bir 3, smac, small molecule inhibitor, xiap} +} + +@article{Yakubov2014SmallInteraction, + title = {{Small molecule inhibitors target the tissue transglutaminase and fibronectin interaction}}, + year = {2014}, + journal = {PLoS ONE}, + author = {Yakubov, Bakhtiyor and Chen, Lan and Belkin, Alexey M. and Zhang, Sheng and Chelladurai, Bhadrani and Zhang, Zhong Yin and Matei, Daniela}, + number = {2}, + volume = {9}, + doi = {10.1371/journal.pone.0089285}, + issn = {19326203} +} + +@article{Nguyen2007SmallApoptosis, + title = {{Small molecule obatoclax (GX15-070) antagonizes MCL-1 and overcomes MCL-1-mediated resistance to apoptosis}}, + year = {2007}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Nguyen, Mai and Marcellus, Richard C. and Roulston, Anne and Watson, Mark and Serfass, Lucile and Murthy Madiraju, S. R. and Goulet, Daniel and Viallet, Jean and B{\'{e}}lec, Laurent and Billot, Xavier and Acoca, Stephane and Purisima, Enrico and Wiegmans, Adrian and Cluse, Leonie and Johnstone, Ricky W. and Beauparlant, Pierre and Shore, Gordon C.}, + number = {49}, + pages = {19512--19517}, + volume = {104}, + doi = {10.1073/pnas.0709443104}, + issn = {00278424}, + keywords = {Bak, Bax, Bcl-2, Caspase, Melanoma} +} + +@article{Metz2005SmallMicroarrays, + title = {{Small molecule screening on chemical microarrays}}, + year = {2005}, + journal = {Protein-Ligand Interactions: From Molecular Recognition to Drug Design}, + author = {Metz, Günther and Ottleben, Holger and Vetter, Dirk}, + pages = {213--236}, + isbn = {9783527601813}, + doi = {10.1002/3527601813.ch9}, + keywords = {Chemical microarrays, Drug design, Off-array synthesis, On-array synthesis, Protein affinity fingerprints, Screening on microarrays, Small molecule screening, Spotting} +} +@unpublished{newman_small_2008, + title = {{Small molecules and chemical tools at the interface}}, + author = {Newman, Robert H and Zhang, Jin} +} + +@article{noberini_small_2008, + title = {{Small molecules can selectively inhibit ephrin binding to the {\{}EphA{\}}4 and {\{}EphA{\}}2 receptors}}, + author = {Noberini, Roberta and Koolpe, Mitchell and Peddibhotla, Satyamaheshwar and Dahl, Russell and Su, Ying and Cosford, Nicholas D P and Roth, Gregory P and Pasquale, Elena B}, + pages = {29461--29472}, + volume = {283}, + doi = {10.1074/jbc.M804103200} +} + +@article{mori_small_2013, + title = {{Small molecules modulation of 14-3-3 protein–protein interactions}}, + author = {Mori, Mattia and Vignaroli, Giulia and Botta, Maurizio}, + pages = {e541--e547}, + volume = {10}, + doi = {10.1016/j.ddtec.2012.10.001} +} + +@article{clemons_small_2010, + title = {{Small molecules of different origins have distinct distributions of structural complexity that correlate with protein-binding profiles.}}, + author = {Clemons, Paul A and Bodycombe, Nicole E and Carrinski, Hyman A and Wilson, J Anthony and Shamji, Alykhan F and Wagner, Bridget K and Koehler, Angela N and Schreiber, Stuart L}, + pages = {18787--18792}, + volume = {107}, + doi = {10.1073/pnas.1012741107} +} + +@article{de_luca_small_2010, + title = {{Small molecules targeting the interaction between {\{}HIV{\}}-1 integrase and {\{}LEDGF{\}}/p75 cofactor}}, + author = {De Luca, Laura and Ferro, Stefania and Gitto, Rosaria and Barreca, Maria Letizia and Agnello, Stefano and Christ, Frauke and Debyser, Zeger and Chimirri, Alba}, + pages = {7515--7521}, + volume = {18}, + doi = {10.1016/j.bmc.2010.08.051} +} + +@article{wang_small-molecule_2012, + title = {{Small-molecule activation of the {\{}TRAIL{\}} receptor {\{}DR{\}}5 in human cancer cells}}, + author = {Wang, Gelin and Wang, Xiaoming and Yu, Hong and Wei, Shuguang and Williams, Noelle and Holmes, Daniel L and Halfmann, Randal and Naidoo, Jacinth and Wang, Lai and Li, Lin and Chen, She and Harran, Patrick and Lei, Xiaoguang and Wang, Xiaodong}, + pages = {84--89}, + volume = {9}, + doi = {10.1038/nchembio.1153} +} + +@article{lepourcelet_small-molecule_2004, + title = {{Small-molecule antagonists of the oncogenic Tcf/beta-catenin protein complex}}, + author = {Lepourcelet, Maina and Chen, Ying-Nan P and France, Dennis S and Wang, Huisheng and Crews, Phillip and Petersen, Frank and Bruseo, Charles and Wood, Alexander W and Shivdasani, Ramesh A}, + pages = {91--102}, + volume = {5} +} + +@article{bieschke_small-molecule_2011, + title = {{Small-molecule conversion of toxic oligomers to nontoxic {$\beta$}-sheet-rich amyloid fibrils.}}, + author = {Bieschke, Jan and Herbst, Martin and Wiglenda, Thomas and Friedrich, Ralf P and Boeddrich, Annett and Schiele, Franziska and Kleckers, Daniela and Lopez Del Amo, Juan Miguel and Gr{\"{u}}ning, Björn A and Wang, Qinwen and Schmidt, Michael R and Lurz, Rudi and Anwyl, Roger and Schnoegl, Sigrid and F{\"{a}}ndrich, Marcus and Frank, Ronald F and Reif, Bernd and G{\"{u}}nther, Stefan and Walsh, Dominic M and Wanker, Erich E}, + pages = {93--101}, + volume = {8}, + doi = {10.1038/nchembio.719} +} + +@article{margolles-clark_small-molecule_2009, + title = {{Small-molecule costimulatory blockade: organic dye inhibitors of the {\{}CD{\}}40-{\{}CD{\}}154 interaction}}, + author = {Margolles-Clark, Emilio and Umland, Oliver and Kenyon, Norma S and Ricordi, Camillo and Buchwald, Peter}, + pages = {1133--1143}, + volume = {87}, + doi = {10.1007/s00109-009-0519-3} +} + +@article{moerke_small-molecule_2007, + title = {{Small-molecule inhibition of the interaction between the translation initiation factors {\{}eIF{\}}4E and {\{}eIF{\}}4G}}, + author = {Moerke, Nathan J and Aktas, Huseyin and Chen, Han and Cantel, Sonia and Reibarkh, Mikhail Y and Fahmy, Amr and Gross, John D and Degterev, Alexei and Yuan, Junying and Chorev, Michael and Halperin, Jose A and Wagner, Gerhard}, + pages = {257--267}, + volume = {128}, + doi = {10.1016/j.cell.2006.11.046} +} + +@article{mani_small-molecule_2013, + title = {{Small-molecule inhibition of the uPAR{\textperiodcentered}uPA interaction: Synthesis, biochemical, cellular, in vivo pharmacokinetics and efficacy studies in breast cancer metastasis}}, + year = {2013}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Mani, Timmy and Wang, Fang and Knabe, William Eric and Sinn, Anthony L. and Khanna, May and Jo, Inha and Sandusky, George E. and Sledge, George W. and Jones, David R. and Khanna, Rajesh and Pollok, Karen E. and Meroueh, Samy O.}, + number = {7}, + pages = {2145--2155}, + volume = {21}, + doi = {10.1016/j.bmc.2012.12.047}, + issn = {09680896}, + keywords = {Breast cancer, Cancer, In vivo, Metastasis, Protein-protein interaction inhibitors, Synthesis, Urokinase receptor, Virtual screening} +} + +@article{matzuk_small-molecule_2012, + title = {{Small-Molecule Inhibition of {\{}BRDT{\}} for Male Contraception}}, + author = {Matzuk, Martin M and Mckeown, Michael R and Filippakopoulos, Panagis and Li, Qinglei and Ma, Lang and Agno, Julio E and Lemieux, Madeleine E and Picaud, Sarah and Yu, Richard N and Qi, Jun and Knapp, Stefan and Bradner, James E}, + pages = {673--684}, + volume = {150}, + doi = {10.1016/j.cell.2012.06.045} +} + +@article{senisterra_small-molecule_2013, + title = {{Small-molecule inhibition of {\{}MLL{\}} activity by disruption of its interaction with {\{}WDR{\}}5.}}, + author = {Senisterra, Guillermo and Wu, Hong and Allali-Hassani, Abdellah and Wasney, Gregory A and Barsyte-Lovejoy, Dalia and Dombrovski, Ludmila and Dong, Aiping and Nguyen, Kong T and Smil, David and Bolshan, Yuri and Hajian, Taraneh and He, Hao and Seitova, Alma and Chau, Irene and Li, Fengling and Poda, Gennadiy and Couture, Jean-François and Brown, Peter J and Al-Awar, Rima and Schapira, Matthieu and Arrowsmith, Cheryl H and Vedadi, Masoud}, + pages = {151--159}, + volume = {449}, + doi = {10.1042/BJ20121280} +} + +@article{he_small-molecule_2005, + title = {{Small-molecule inhibition of {\{}TNF{\}}-alpha.}}, + author = {He, Molly M and Smith, Annemarie Stroustrup and Oslob, Johan D and Flanagan, William M and Braisted, Andrew C and Whitty, Adrian and Cancilla, Mark T and Wang, Jun and Lugovskoy, Alexey A and Yoburn, Josh C and Fung, Amy D and Farrington, Graham and Eldredge, John K and Day, Eric S and Cruz, Leslie A and Cachero, Teresa G and Miller, Stephan K and Friedman, Jessica E and Choong, Ingrid C and Cunningham, Brian C}, + pages = {1022--1025}, + volume = {310}, + doi = {10.1126/science.1116304} +} + +@article{koes_small-molecule_2011, + title = {{Small-Molecule Inhibitor Starting Points Learned From Protein-Protein Interaction Inhibitor Structure.}}, + author = {Koes, David Ryan and Camacho, Carlos J}, + doi = {10.1093/bioinformatics/btr717} +} + +@book{vassilev_small-molecule_2010, + title = {{Small-molecule inhibitors of IL-2/IL-2R: Lessons learned and applied}}, + shorttitle = {Current Topics in Microbiology and Immunology0070-}, + year = {2010}, + booktitle = {Current Topics in Microbiology and Immunology}, + author = {Wilson, C. G.M. and Arkin, M. R.}, + number = {1}, + pages = {25--59}, + volume = {348}, + publisher = {Springer Berlin Heidelberg}, + isbn = {978-3-642-17082-9}, + doi = {10.1007/82-2010-93}, + issn = {0070217X} +} + +@article{berg_small-molecule_2008, + title = {{Small-molecule inhibitors of protein-protein interactions.}}, + author = {Berg, Thorsten}, + pages = {666--674}, + volume = {11} +} + +@article{arkin_small-molecule_2014, + title = {{Small-molecule inhibitors of protein-protein interactions: Progressing toward the reality}}, + year = {2014}, + journal = {Chemistry and Biology}, + author = {Arkin, Michelle R. and Tang, Yinyan and Wells, James A.}, + number = {9}, + pages = {1102--1114}, + volume = {21}, + doi = {10.1016/j.chembiol.2014.09.001}, + issn = {10745521} +} + +@article{arkin_small-molecule_2014-1, + title = {{Small-molecule inhibitors of protein-protein interactions: progressing toward the reality}}, + shorttitle = {Small-molecule inhibitors of protein-protein inter}, + author = {Arkin, Michelle R and Tang, Yinyan and Wells, James A}, + number = {9}, + pages = {1102--1114}, + volume = {21}, + doi = {10.1016/j.chembiol.2014.09.001}, + issn = {1879-1301}, + pmid = {25237857}, + keywords = {Allosteric Regulation, Apoptosis Regulatory Proteins, Binding Sites, Humans, Peptides, Protein Interaction Domains and Motifs, Protein Interaction Maps, Protein Structure, Proteins, Secondary, Small Molecule Libraries, Tertiary, {\{}HIV{\}} Integrase} +} + +@article{arkin_small-molecule_2004, + title = {{Small-molecule inhibitors of protein-protein interactions: progressing towards the dream}}, + author = {Arkin, Michelle R and Wells, James A}, + pages = {301--317}, + volume = {3}, + doi = {10.1038/nrd1343} +} + +@article{patel_small-molecule_2008, + title = {{Small-molecule inhibitors of the p53-{\{}HDM{\}}2 interaction for the treatment of cancer}}, + author = {Patel, Sharmila and Player, Mark R}, + pages = {1865--1882}, + volume = {17}, + doi = {10.1517/13543780802493366} +} + +@article{hardcastle_small-molecule_2006, + title = {{Small-Molecule Inhibitors of the {\{}MDM{\}}2-p53 Protein−Protein Interaction Based on an Isoindolinone Scaffold}}, + author = {Hardcastle, Ian R and Ahmed, Shafiq U and Atkins, Helen and Farnie, Gillian and Golding, Bernard T and Griffin, Roger J and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J and Kitching, Martin S and Newell, David R and Norbedo, Stefano and Northen, Julian S and Reid, Rebecca J and Saravanan, K and Willems, Henriëtte M G and Lunec, John}, + pages = {6209--6221}, + volume = {49}, + doi = {10.1021/jm0601194} +} + +@article{wang_small-molecule_2013, + title = {{Small-molecule modulation of Wnt signaling via modulating the Axin-{\{}LRP{\}}5/6 interaction}}, + author = {Wang, Sheng and Yin, Junlin and Chen, Duozhi and Nie, Fen and Song, Xiaomin and Fei, Cong and Miao, Haofei and Jing, Changbin and Ma, Wenjing and Wang, Lei and Xie, Sichun and Li, Chen and Zeng, Rong and Pan, Weijun and Hao, Xiaojiang and Li, Lin}, + pages = {579--585}, + volume = {9}, + doi = {10.1038/nchembio.1309} +} + +@article{buchwald_small-molecule_2010, + title = {{Small-molecule protein-protein interaction inhibitors: therapeutic potential in light of molecular size, chemical space, and ligand binding efficiency considerations.}}, + author = {Buchwald, Peter}, + pages = {724--731}, + volume = {62}, + doi = {10.1002/iub.383} +} + +@article{thiel_small-molecule_2012, + title = {{Small-Molecule Stabilization of Protein-Protein Interactions: An Underestimated Concept in Drug Discovery?}}, + author = {Thiel, Philipp and Kaiser, Markus and Ottmann, Christian}, + doi = {10.1002/anie.201107616} +} + +@article{noauthor_solvated_nodate, + title = {{Solvated protein-protein docking using Kyte-Doolittle-based water preferences - Kastritis - Proteins: Structure, Function, and Bioinformatics - Wiley Online Library}} +} + +@article{milroy_stabilization_2013, + title = {{Stabilization and inhibition of protein-protein interactions: the 14-3-3 case study.}}, + author = {Milroy, Lech-Gustav and Brunsveld, Luc and Ottmann, Christian}, + pages = {27--35}, + volume = {8}, + doi = {10.1021/cb300599t} +} + +@article{zarzycka_stabilization_2016, + title = {{Stabilization of protein-protein interaction complexes through small molecules}}, + author = {Zarzycka, Barbara and Kuenemann, Mélaine A and Miteva, Maria A and Nicolaes, Gerry A F and Vriend, Gert and Sperandio, Olivier}, + number = {1}, + pages = {48--57}, + volume = {21}, + doi = {10.1016/j.drudis.2015.09.011}, + issn = {1878-5832}, + pmid = {26434617}, + keywords = {Biophysical Phenomena, Humans, Protein Binding, Protein Interaction Maps, Small Molecule Libraries} +} + +@article{giordanetto_stabilization_2014, + title = {{Stabilization of protein-protein interactions by small molecules}}, + author = {Giordanetto, Fabrizio and Sch{\"{a}}fer, Anja and Ottmann, Christian}, + number = {11}, + pages = {1812--1821}, + volume = {19}, + doi = {10.1016/j.drudis.2014.08.005}, + issn = {1878-5832}, + pmid = {25173701}, + keywords = {Drug Discovery, Humans, Pharmaceutical Preparations, Protein Stability, Proteins} +} + +@article{jiang_stabilizers_2009, + title = {{Stabilizers of the Max homodimer identified in virtual ligand screening inhibit Myc function}}, + author = {Jiang, Hao and Bower, Kristen E and Beuscher, Albert E and Zhou, Bin and Bobkov, Andrey A and Olson, Arthur J and Vogt, Peter K}, + number = {3}, + pages = {491--502}, + volume = {76}, + doi = {10.1124/mol.109.054858}, + issn = {1521-0111}, + pmid = {19498040}, + keywords = {Antineoplastic Agents, Antitumor, Basic Helix-Loop-Helix Leucine Zipper Transcripti, Binding Sites, Cell Line, Cell Proliferation, Drug Screening Assays, Electrophoretic Mobility Shift Assay, Humans, Ligands, Protein Conformation, Protein Multimerization, Protein Stability, Proto-Oncogene Proteins c-myc, Small Molecule Libraries, Transcriptional Activation, Tumor, {\{}DNA{\}}} +} + +@article{chang_stapled_2013, + title = {{Stapled {$\alpha$}-helical peptide drug development: A potent dual inhibitor of {\{}MDM{\}}2 and {\{}MDMX{\}} for p53-dependent cancer therapy.}}, + author = {Chang, Yong S and Graves, Bradford and Guerlavais, Vincent and Tovar, Christian and Packman, Kathryn and To, Kwong-Him and Olson, Karen A and Kesavan, Kamala and Gangurde, Pranoti and Mukherjee, Aditi and Baker, Theresa and Darlak, Krzysztof and Elkin, Carl and Filipovic, Zoran and Qureshi, Farooq Z and Cai, Hongliang and Berry, Pamela and Feyfant, Eric and Shi, Xiangguo E and Horstick, James and Annis, D Allen and Manning, Anthony M and Fotouhi, Nader and Nash, Huw and Vassilev, Lyubomir T and Sawyer, Tomi K}, + doi = {10.1073/pnas.1303002110} +} + +@article{irwin_staring_2009, + title = {{Staring off into chemical space.}}, + author = {Irwin, John J}, + pages = {536--537}, + volume = {5}, + doi = {10.1038/nchembio0809-536} +} + +@article{aguilar_statistics_2010, + title = {{Statistics and physical origins of {\{}pK{\}} and ionization state changes upon protein-ligand binding}}, + author = {Aguilar, Boris and Anandakrishnan, Ramu and Ruscio, Jory Z and Onufriev, Alexey V}, + pages = {872--880}, + volume = {98}, + doi = {10.1016/j.bpj.2009.11.016} +} + +@article{virshup_stochastic_2013, + title = {{Stochastic voyages into uncharted chemical space produce a representative library of all possible drug-like compounds.}}, + author = {Virshup, Aaron M and Contreras-Garc{\'{i}}a, Julia and Wipf, Peter and Yang, Weitao and Beratan, David N}, + pages = {7296--7303}, + volume = {135}, + doi = {10.1021/ja401184g} +} + +@article{yin_strategies_2005, + title = {{Strategies for targeting protein-protein interactions with synthetic agents}}, + author = {Yin, Hang and Hamilton, Andrew D}, + pages = {4130--4163}, + volume = {44}, + doi = {10.1002/anie.200461786} +} + +@article{block_strategies_2007, + title = {{Strategies to search and design stabilizers of protein-protein interactions: a feasibility study}}, + author = {Block, Peter and Weskamp, Nils and Wolf, Alexander and Klebe, Gerhard}, + pages = {170--186}, + volume = {68}, + doi = {10.1002/prot.21296} +} + +@article{dhruv_structural_2013, + title = {{Structural Basis and Targeting of the Interaction between Fibroblast Growth Factor-inducible 14 and Tumor Necrosis Factor-like Weak Inducer of Apoptosis}}, + author = {Dhruv, H and Loftus, J C and Narang, P and Petit, J L and Fameree, M and Burton, J and Tchegho, G and Chow, D and Yin, H and Al-Abed, Y and Berens, M E and Tran, N L and Meurice, N}, + pages = {32261--32276}, + volume = {288}, + doi = {10.1074/jbc.M113.493536} +} + +@article{liu_structural_2009, + title = {{Structural basis for binding of Smac/{\{}DIABLO{\}} to the {\{}XIAP{\}} {\{}BIR{\}}3 domain}}, + author = {Liu, Z and Sun, C and Olejniczak, E T and Meadows, R P and Betz, S F and Oost, T and Herrmann, J and Wu, J C and Fesik, S W}, + pages = {1004--1008}, + volume = {408}, + doi = {10.1038/35050006} +} + +@article{pazgier_structural_2009, + title = {{Structural basis for high-affinity peptide inhibition of p53 interactions with {\{}MDM{\}}2 and {\{}MDMX{\}}}}, + author = {Pazgier, Marzena and Liu, Min and Zou, Guozhang and Yuan, Weirong and Li, Changqing and Li, Chong and Li, Jing and Monbo, Juahdi and Zella, Davide and Tarasov, Sergey G and Lu, Wuyuan}, + pages = {4665--4670}, + volume = {106}, + doi = {10.1073/pnas.0900947106} +} + +@article{zhang_structural_2000, + title = {{Structural basis of {\{}BFL{\}}-1 for its interaction with {\{}BAX{\}} and its anti-apoptotic action in mammalian and yeast cells.}}, + author = {Zhang, H and Cowan-Jacob, S W and Simonen, M and Greenhalf, W and Heim, J and Meyhack, B}, + pages = {11092--11099}, + volume = {275} +} + +@article{jubb_structural_2012, + title = {{Structural biology and drug discovery for protein-protein interactions}}, + year = {2012}, + journal = {Trends in Pharmacological Sciences}, + author = {Jubb, Harry and Higueruelo, Alicia P. and Winter, Anja and Blundell, Tom L.}, + number = {5}, + pages = {241--248}, + volume = {33}, + doi = {10.1016/j.tips.2012.03.006}, + issn = {01656147} +} + +@article{surade_structural_2012, + title = {{Structural biology and drug discovery of difficult targets: the limits of ligandability.}}, + author = {Surade, Sachin and Blundell, Tom L}, + pages = {42--50}, + volume = {19}, + doi = {10.1016/j.chembiol.2011.12.013} +} + +@article{petros_structural_2004, + title = {{Structural biology of the Bcl-2 family of proteins}}, + author = {Petros, Andrew M and Olejniczak, Edward T and Fesik, Stephen W}, + pages = {83--94}, + volume = {1644}, + doi = {10.1016/j.bbamcr.2003.08.012} +} + +@article{hain_structural_2012, + title = {{Structural characterization and inhibition of the Plasmodium Atg8-Atg3 interaction.}}, + author = {Hain, Adelaide U P and Weltzer, Ryan R and Hammond, Holly and Jayabalasingham, Bamini and Dinglasan, Rhoel R and Graham, David R M and Colquhoun, David R and Coppens, Isabelle and Bosch, Jürgen}, + pages = {551--562}, + volume = {180}, + doi = {10.1016/j.jsb.2012.09.001} +} + +@article{kozakov_structural_2011, + title = {{Structural conservation of druggable hot spots in protein-protein interfaces.}}, + author = {Kozakov, Dima and Hall, David R and Chuang, Gwo-Yu and Cencic, Regina and Brenke, Ryan and Grove, Laurie E and Beglov, Dmitri and Pelletier, Jerry and Whitty, Adrian and Vajda, Sandor}, + pages = {13528--13533}, + volume = {108}, + doi = {10.1073/pnas.1101835108} +} + +@article{khanna_structural_2011, + title = {{Structural diversity of biologically interesting datasets: a scaffold analysis approach}}, + author = {Khanna, Varun and Ranganathan, Shoba}, + pages = {30}, + volume = {3}, + doi = {10.1186/1758-2946-3-30} +} + +@article{von_eichborn_structural_2010, + title = {{Structural features and evolution of protein-protein interactions}}, + author = {Von Eichborn, Joachim and G{\"{u}}nther, Stefan and Preissner, Robert}, + pages = {1--10}, + volume = {22} +} + +@article{shi_structural_2012, + title = {{Structural insights into inhibition of the bivalent menin-{\{}MLL{\}} interaction by small molecules in leukemia}}, + author = {Shi, A and Murai, M J and He, S and Lund, G and Hartley, T and Purohit, T and Reddy, G and Chruszcz, M and Grembecka, J and Cierpicki, T}, + pages = {4461--4469}, + volume = {120}, + doi = {10.1182/blood-2012-05-429274} +} + +@article{bernardo_structural_2010, + title = {{Structural insights into the design of small molecule inhibitors that selectively antagonize Mcl-1}}, + author = {Bernardo, Paul H and Sivaraman, Thirunavukkarasu and Wan, Kah-Fei and Xu, Jin and Krishnamoorthy, Janarthanan and Song, Chun Meng and Tian, Liming and Chin, Jasmine S F and Lim, Diane S W and Mok, Henry Y K and Yu, Victor C and Tong, Joo Chuan and Chai, Christina L L}, + pages = {2314--2318}, + volume = {53}, + doi = {10.1021/jm901469p} +} + +@article{molzan_structural_2012, + title = {{Structural insights of the {\{}MLF{\}}1/14-3-3 interaction.}}, + author = {Molzan, Manuela and Weyand, Michael and Rose, Rolf and Ottmann, Christian}, + pages = {563--571}, + volume = {279}, + doi = {10.1111/j.1742-4658.2011.08445.x} +} + +@article{chen_structural_2011, + title = {{Structural Instability Tuning as a Regulatory Mechanism in Protein-Protein Interactions}}, + author = {Chen, Li and Balabanidou, Vassilia and Remeta, David P and Minetti, Conceição A S A and Portaliou, Athina G and Economou, Anastassios and Kalodimos, Charalampos G}, + pages = {734--744}, + volume = {44}, + doi = {10.1016/j.molcel.2011.09.022} +} + +@article{holzer_structural_2008, + title = {{Structural Modifications of Salicylates: Inhibitors of Human {\{}CD{\}}81â€Receptor {\{}HCV{\}}â€E2 Interaction}}, + author = {Holzer, Marcel and Ziegler, Sigrid and Neugebauer, Alexander and Kronenberger, Bernd and Klein, Christian D and Hartmann, Rolf W}, + pages = {478--484}, + volume = {341}, + doi = {10.1002/ardp.200700261} +} + +@article{smits_structural_2008, + title = {{Structural Plasticity Underpins Promiscuous Binding of the Prosurvival Protein A1}}, + author = {Smits, Callum and Czabotar, Peter E and Hinds, Mark G and Day, Catherine L}, + pages = {818--829}, + volume = {16}, + doi = {10.1016/j.str.2008.02.009} +} + +@article{rodriguez_structure_2009, + title = {{Structure and function of benzoy Iurea-derived A-helix mimetics targeting the Bcl-x L /bak binding interface}}, + year = {2009}, + journal = {ChemMedChem}, + author = {Rodriguez, Johanna M. and Ross, Nathan T. and Katt, William P. and Dhar, Deepali and Lee, Gui in and Hamilton, Andrew D.}, + number = {4}, + pages = {649--656}, + volume = {4}, + doi = {10.1002/cmdc.200800387}, + issn = {18607179}, + keywords = {Bcl-x L, Calorimetry, Protiein-protiein interactionsn benzoylurea scaffo, {$\alpha$}-helix mimetics} +} + +@article{volarath_structure_2007, + title = {{Structure based drug design for {\{}HIV{\}} protease: from molecular modeling to cheminformatics}}, + author = {Volarath, Patra and Harrison, Robert W and Weber, Irene T}, + pages = {1030--1038}, + volume = {7} +} + +@article{jacobs_structure_1998, + title = {{Structure of an {\{}IkappaBalpha{\}}/{\{}NF{\}}-{\{}kappaB{\}} complex}}, + author = {Jacobs, M D and Harrison, S C}, + pages = {749--758}, + volume = {95} +} + +@article{sattler_structure_1997, + title = {{Structure of Bcl-{\{}xL{\}}-Bak peptide complex: recognition between regulators of apoptosis}}, + author = {Sattler, M and Liang, H and Nettesheim, D and Meadows, R P and Harlan, J E and Eberstadt, M and Yoon, H S and Shuker, S B and Chang, B S and Minn, A J and Thompson, C B and Fesik, S W}, + pages = {983--986}, + volume = {275}, + issn = {0036-8075 (Print) 0036-8075 (Linking)}, + keywords = {*Protein Conformation, *Proto-Oncogene Proteins c-bcl-2, Amino Acid Sequence, Apoptosis, Crystallography, Dimerization, Magnetic Resonance Spectroscopy, Membrane Proteins/*chemistry/genetics/metabolism, Models, Molecular, Molecular Sequence Data, Protein Structure, Proto-Oncogene Proteins/*chemistry/metabolism, Secondary, Sequence Deletion, X-Ray, bcl-2 Homologous Antagonist-Killer Protein, bcl-X Protein} +} + +@article{baek_structure_2012, + title = {{Structure of the stapled p53 peptide bound to Mdm2.}}, + author = {Baek, Sohee and Kutchukian, Peter S and Verdine, Gregory L and Huber, Robert and Holak, Tad A and Lee, Ki Won and Popowicz, Grzegorz M}, + pages = {103--106}, + volume = {134}, + doi = {10.1021/ja2090367} +} + +@article{taylor_structure-activity_2012, + title = {{Structure-Activity Relationship of a Broad-Spectrum Insect Odorant Receptor Agonist.}}, + author = {Taylor, Robert W and Romaine, Ian M and Liu, Chao and Murthi, Poornima and Jones, Patrick L and Waterson, Alex G and Sulikowski, Gary A and Zwiebel, Laurence J}, + doi = {10.1021/cb300331z} +} + +@article{chen_structure-based_2009, + title = {{Structure-based and shape-complemented pharmacophore modeling for the discovery of novel checkpoint kinase 1 inhibitors}}, + author = {Chen, Xiu-Mei and Lu, Tao and Lu, Shuai and Li, Hui-Fang and Yuan, Hao-Liang and Ran, Ting and Liu, Hai-Chun and Chen, Ya-Dong}, + pages = {1195--1204}, + volume = {16}, + doi = {10.1007/s00894-009-0630-y} +} + +@article{tang_structure-based_2007, + title = {{Structure-Based Design of Flavonoid Compounds As a New Class of Small-Molecule Inhibitors of the Anti-apoptotic Bcl-2 Proteins}}, + author = {Tang, Guozhi and Ding, Ke and Nikolovska-Coleska, Zaneta and Yang, Chao-Yie and Qiu, Su and Shangary, Sanjeev and Wang, Renxiao and Guo, Jie and Gao, Wei and Meagher, Jennifer and Stuckey, Jeanne and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P and Wang, Shaomeng}, + pages = {3163--3166}, + volume = {50}, + doi = {10.1021/jm070383c} +} + +@article{rew_structure-based_2012, + title = {{Structure-Based Design of Novel Inhibitors of the {\{}MDM{\}}2-p53 Interaction.}}, + author = {Rew, Yosup and Sun, Daqing and Gonzalez Lopez De Turiso, Felix and Bartberger, Michael D and Beck, Hilary Plake and Canon, Jude and Chen, Ada and Chow, David and Deignan, Jeffrey and Fox, Brian M and Huang, Xin and Jiang, Min and Jin, Lixia and Kopecky, David and Li, Yihong and Lo, Mei-Chu and Zhao, Xiaoning and Long, Alexander and Michelsen, Klaus and Oliner, Jonathan D and Osgood, Tao and Saiki, Anne Y and Schneider, Steve and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Jiao, Xianyun and Zhou, Jing and Medina, Julio C and Olson, Steven}, + doi = {10.1021/jm300354j} +} + +@article{ding_structure-based_2005, + title = {{Structure-Based Design of Potent Non-Peptide {\{}MDM{\}}2 Inhibitors}}, + author = {Ding, Ke and Lu, Yipin and Nikolovska-Coleska, Zaneta and Qiu, Su and Ding, Yousong and Gao, Wei and Stuckey, Jeanne and Krajewski, Krzysztof and Roller, Peter P and Tomita, York and Parrish, Damon A and Deschamps, Jeffrey R and Wang, Shaomeng}, + pages = {10130--10131}, + volume = {127}, + doi = {10.1021/ja051147z} +} + +@article{wang_structure-based_2006, + title = {{Structure-Based Design of Potent Small-Molecule Inhibitors of Anti-Apoptotic Bcl-2 Proteins}}, + author = {Wang, Guoping and Nikolovska-Coleska, Zaneta and Yang, Chao-Yie and Wang, Renxiao and Tang, Guozhi and Guo, Jie and Shangary, Sanjeev and Qiu, Su and Gao, Wei and Yang, Dajun and Meagher, Jennifer and Stuckey, Jeanne and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P and Abaan, Hatice Ozel and Tomita, York and Wang, Shaomeng}, + pages = {6139--6142}, + volume = {49}, + doi = {10.1021/jm060460o} +} + +@article{sun_structure-based_2004, + title = {{Structure-Based Design of Potent, Conformationally Constrained Smac Mimetics}}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Yang, Chao-Yie and Xu, Liang and Liu, Meilan and Tomita, York and Pan, Hongguang and Yoshioka, Yoshiko and Krajewski, Krzysztof and Roller, Peter P and Wang, Shaomeng}, + pages = {16686--16687}, + volume = {126}, + doi = {10.1021/ja047438} +} + +@article{vogrig_structure-based_2013, + title = {{Structure-Based Design of {\{}PDZ{\}} Ligands as Inhibitors of 5-{\{}HT{\}}2A Receptor/{\{}PSD{\}}-95 {\{}PDZ{\}}1 Domain Interaction Possessing Anti-hyperalgesic Activity.}}, + author = {Vogrig, Alexandre and Dorr, Liam and Bouzidi, Naoual and Boucherle, Benjamin and Wattiez, Anne-Sophie and Cassier, Elisabeth and Vallon, Gary and Ripoche, Isabelle and Abrunhosa-Thomas, Isabelle and Marin, Philippe and Nauton, Lionel and Thery, Vincent and Courteix, Christine and Lian, Lu-Yun and Ducki, Sylvie}, + doi = {10.1021/cb400308u} +} + +@article{sun_structure-based_2005, + title = {{Structure-based design, synthesis and biochemical testing of novel and potent Smac peptido-mimetics}}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Chen, Jianyong and Yang, Chao-Yie and Tomita, York and Pan, Hongguang and Yoshioka, Yoshiko and Krajewski, Krzysztof and Roller, Peter P and Wang, Shaomeng}, + pages = {793--797}, + volume = {15}, + doi = {10.1016/j.bmcl.2004.11.008} +} + +@article{raboisson_structure-based_2005, + title = {{Structure-based design, synthesis, and biological evaluation of novel 1,4-diazepines as {\{}HDM{\}}2 antagonists}}, + author = {Raboisson, Pierre and Marugan, Juan Jose and Schubert, Carsten and Koblish, Holly K and Lu, Tianbao and Zhao, Shuyuan and Player, Mark R and Maroney, Anna C and Reed, Rolanda L and Huebert, Norman D and Lattanze, Jennifer and Parks, Daniel J and Cummings, Maxwell D}, + pages = {1857--1861}, + volume = {15}, + doi = {10.1016/j.bmcl.2005.02.018} +} + +@article{sun_structure-based_2004-1, + title = {{Structure-Based Design, Synthesis, and Evaluation of Conformationally Constrained Mimetics of the Second Mitochondria-Derived Activator of Caspase That Target the X-Linked Inhibitor of Apoptosis Protein/Caspase-9 Interaction Site}}, + author = {Sun, Haiying and Nikolovska-Coleska, Zaneta and Yang, Chao-Yie and Xu, Liang and Tomita, York and Krajewski, Krzysztof and Roller, Peter P and Wang, Shaomeng}, + pages = {4147--4150}, + volume = {47}, + doi = {10.1021/jm0499108} +} + +@article{sun_structure-based_2008, + title = {{Structure-Based Design, Synthesis, Evaluation, and Crystallographic Studies of Conformationally Constrained Smac Mimetics as Inhibitors of the X-linked Inhibitor of Apoptosis Protein ({\{}XIAP{\}}) †}}, + author = {Sun, Haiying and Stuckey, Jeanne A and Nikolovska-Coleska, Zaneta and Qin, Dongguang and Meagher, Jennifer L and Qiu, Su and Lu, Jianfeng and Yang, Chao-Yie and Saito, Naoyuki G and Wang, Shaomeng}, + pages = {7169--7180}, + volume = {51}, + doi = {10.1021/jm8006849} +} + +@article{orry_structure-based_2006, + title = {{Structure-based development of target-specific compound libraries.}}, + author = {Orry, Andrew J W and Abagyan, Ruben A and Cavasotto, Claudio N}, + pages = {261--266}, + volume = {11}, + doi = {10.1016/S1359-6446(05)03717-7} +} + +@article{viaud_structure-based_2007, + title = {{Structure-based discovery of an inhibitor of Arf activation by Sec7 domains through targeting of protein-protein complexes}}, + author = {Viaud, Julien and Zeghouf, Mahel and Barelli, Hélène and Zeeh, Jean-Christophe and Padilla, André and Guibert, Bernard and Chardin, Pierre and Royer, Catherine A and Cherfils, Jacqueline and Chavanieu, Alain}, + pages = {10370--10375}, + volume = {104}, + doi = {10.1073/pnas.0700773104} +} + +@article{harrison_structure-based_2012, + title = {{Structure-based drug design: Opening the door to an epigenetic target}}, + author = {Harrison, Charlotte}, + pages = {672--673}, + volume = {11}, + doi = {10.1038/nrd3827} +} + +@article{fauman_structure-based_2011, + title = {{Structure-based druggability assessment-identifying suitable targets for small molecule therapeutics}}, + author = {Fauman, Eric B and Rai, Brajesh K and Huang, Enoch S}, + doi = {10.1016/j.cbpa.2011.05.020} +} + +@article{debnath_structure-based_1999, + title = {{Structure-based identification of small molecule antiviral compounds targeted to the gp41 core structure of the human immunodeficiency virus type 1}}, + author = {Debnath, A K and Radigan, L and Jiang, S}, + pages = {3203--3209}, + volume = {42}, + doi = {10.1021/jm990154t} +} + +@article{mysinger_structure-based_2012, + title = {{Structure-based ligand discovery for the protein-protein interface of chemokine receptor {\{}CXCR{\}}4.}}, + author = {Mysinger, Michael M and Weiss, Dahlia R and Ziarek, Joshua J and Gravel, Stéphanie and Doak, Allison K and Karpiak, Joel and Heveker, Nikolaus and Shoichet, Brian K and Volkman, Brian F}, + doi = {10.1073/pnas.1120431109} +} + +@article{cheng_structure-based_2007, + title = {{Structure-based maximal affinity model predicts small-molecule druggability}}, + author = {Cheng, Alan C and Coleman, Ryan G and Smyth, Kathleen T and Cao, Qing and Soulard, Patricia and Caffrey, Daniel R and Salzberg, Anna C and Huang, Enoch S}, + pages = {71--75}, + volume = {25}, + doi = {10.1038/nbt1273} +} + +@article{zhang_structure-based_2012, + title = {{Structure-based prediction of protein–protein interactions on a genome-wide scale}}, + author = {Zhang, Qiangfeng Cliff and Petrey, Donald and Deng, Lei and Qiang, Li and Shi, Yu and Thu, Chan Aye and Bisikirska, Brygida and Lefebvre, Celine and Accili, Domenico and Hunter, Tony and Maniatis, Tom and Califano, Andrea and Honig, Barry}, + pages = {556--560}, + volume = {490}, + doi = {10.1038/nature11503} +} + +@article{popowicz_structures_2010, + title = {{Structures of low molecular weight inhibitors bound to {\{}MDMX{\}} and {\{}MDM{\}}2 reveal new approaches for p53-{\{}MDMX{\}}/{\{}MDM{\}}2 antagonist drug discovery}}, + author = {Popowicz, Grzegorz M and Czarna, Anna and Wolf, Siglinde and Wang, Kan and Wang, Wei and D{\"{o}}mling, Alexander and Holak, Tad A}, + pages = {1104--1111}, + volume = {9}, + doi = {10.4161/cc.9.6.10956} +} + +@article{wist_structureactivity_2007, + title = {{Structure–activity based study of the Smac-binding pocket within the {\{}BIR{\}}3 domain of {\{}XIAP{\}}}}, + author = {Wist, Aislyn D and Gu, Lichuan and Riedl, Stefan J and Shi, Yigong and McLendon, George L}, + pages = {2935--2943}, + volume = {15}, + doi = {10.1016/j.bmc.2007.02.010} +} + +@article{zhong_structureactivity_2011, + title = {{Structure–activity relationship ({\{}SAR{\}}) of the {$\alpha$}-amino acid residue of potent tetrahydroisoquinoline ({\{}THIQ{\}})-derived {\{}LFA{\}}-1/{\{}ICAM{\}}-1 antagonists}}, + author = {Zhong, Min and Hanan, Emily J and Shen, Wang and Bui, Minna and Arkin, Michelle R and Barr, Kenneth J and Evanchik, Marc J and Hoch, Ute and Hyde, Jennifer and Martell, Jose R and Oslob, Johan D and Paulvannan, Kumar and Prabhu, Saileta and Silverman, Jeffrey A and Wright, Jasmin and Yu, Chul H and Zhu, Jiang and Flanagan, W Mike}, + pages = {307--310}, + volume = {21}, + doi = {10.1016/j.bmcl.2010.11.014} +} + +@article{lin_structureactivity_2008, + title = {{Structure–activity relationship of ortho- and meta-phenol based {\{}LFA{\}}-1 {\{}ICAM{\}} inhibitors}}, + author = {Lin, Edward Yin-Shiang and Guckian, Kevin M and Silvian, Laura and Chin, Donovan and Ann Boriack-Sjodin, P and van Vlijmen, Herman and Friedman, Jessica E and Scott, Daniel M}, + pages = {5245--5248}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.08.062} +} + +@article{green_structureactivity_2003, + title = {{Structure–activity studies of a series of dipyrazolo[3,4-b:3′,4′-d]pyridin-3-ones binding to the immune regulatory protein B7.1}}, + author = {Green, Neal J and Xiang, Jason and Chen, Jing and Chen, Lihren and Davies, Audrey M and Erbe, Dave and Tam, Steve and Tobin, James F}, + pages = {2991--3013}, + volume = {11}, + doi = {10.1016/S0968-0896(03)00183-4} +} + +@article{bernardo_structureactivity_2008, + title = {{Structure−Activity Relationship Studies of Phenanthridine-Based Bcl-X {\{}LInhibitors{\}}}}, + author = {Bernardo, Paul H and Wan, Kah-Fei and Sivaraman, Thirunavukkarasu and Xu, Jin and Moore, Felicity K and Hung, Alvin W and Mok, Henry Y K and Yu, Victor C and Chai, Christina L L}, + pages = {6699--6710}, + volume = {51}, + doi = {10.1021/jm8005433} +} + +@article{bruncko_studies_2007, + title = {{Studies Leading to Potent, Dual Inhibitors of Bcl-2 and Bcl-{\{}xL{\}}}}, + author = {Bruncko, Milan and Oost, Thorsten K and Belli, Barbara A and Ding, Hong and Joseph, Mary K and Kunzer, Aaron and Martineau, Darlene and McClellan, William J and Mitten, Michael and Ng, Shi-Chung and Nimmer, Paul M and Oltersdorf, Tilman and Park, Cheol-Min and Petros, Andrew M and Shoemaker, Alexander R and Song, Xiaohong and Wang, Xilu and Wendt, Michael D and Zhang, Haichao and Fesik, Stephen W and Rosenberg, Saul H and Elmore, Steven W}, + pages = {641--662}, + volume = {50}, + doi = {10.1021/jm061152t} +} + +@article{kool_studying_2011, + title = {{Studying protein-protein affinity and immobilized ligand-protein affinity interactions using {\{}MS{\}}-based methods}}, + author = {Kool, Jeroen and Jonker, Niels and Irth, Hubertus and Niessen, Wilfried M A}, + doi = {10.1007/s00216-011-5207-9}, + keywords = {{\{}PPI{\}} exp} +} + +@article{kalliokoski_subpocket_2013, + title = {{Subpocket analysis method for fragment-based drug discovery}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Kalliokoski, Tuomo and Olsson, Tjelvar S.G. and Vulpetti, Anna}, + number = {1}, + pages = {131--141}, + volume = {53}, + doi = {10.1021/ci300523r}, + issn = {15499596} +} + +@article{scholefield_super-resolution_2016, + title = {{Super-resolution microscopy reveals a preformed NEMO lattice structure that is collapsed in incontinentia pigmenti}}, + year = {2016}, + journal = {Nature Communications}, + author = {Scholefield, Janine and Henriques, Ricardo and Savulescu, Anca F. and Fontan, Elisabeth and Boucharlat, Alix and Laplantine, Emmanuel and Smahi, Asma and Isra{\"{e}}l, Alain and Agou, Fabrice and Mhlanga, Musa M.}, + pages = {12629}, + volume = {7}, + doi = {10.1038/ncomms12629}, + issn = {20411723}, + pmid = {27586688} +} + +@article{xiao_supervised_2005, + title = {{Supervised self-organizing maps in drug discovery. 1. Robust behavior with overdetermined data sets}}, + author = {Xiao, Yun-De and Clauset, Aaron and Harris, Rebecca and Bayram, Ersin and Santago, Peter and Schmitt, Jeffrey D}, + pages = {1749--1758}, + volume = {45}, + doi = {10.1021/ci0500839} +} + +@article{xiao_supervised_2006, + title = {{Supervised self-organizing maps in drug discovery. 2. Improvements in descriptor selection and model validation}}, + author = {Xiao, Yun-De and Harris, Rebecca and Bayram, Ersin and Ii, Peter Santago and Schmitt, Jeffrey D}, + pages = {137--144}, + volume = {46}, + doi = {10.1021/ci0500841} +} + +@article{tan_supplementary_2010, + title = {{Supplementary Information v2 dst}}, + author = {Tan, Derek}, + pages = {1--7} +} + +@article{nicodeme_suppression_2010, + title = {{Suppression of inflammation by a synthetic histone mimic}}, + author = {Nicodeme, Edwige and Jeffrey, Kate L and Schaefer, Uwe and Beinke, Soren and Dewell, Scott and Chung, Chun-Wa and Chandwani, Rohit and Marazzi, Ivan and Wilson, Paul and Coste, Hervé and White, Julia and Kirilovsky, Jorge and Rice, Charles M and Lora, Jose M and Prinjha, Rab K and Lee, Kevin and Tarakhovsky, Alexander}, + pages = {1119--1123}, + volume = {468}, + doi = {10.1038/nature09589} +} + +@article{jain_surflex-dock_2007, + title = {{Surflex-Dock 2.1: robust performance from ligand energetic modeling, ring flexibility, and knowledge-based search}}, + author = {Jain, A N}, + pages = {281--306}, + volume = {21}, + doi = {10.1007/s10822-007-9114-2}, + issn = {0920-654X (Print) 0920-654X (Linking)}, + keywords = {*Drug Design, *Models, *Software, *Thermodynamics, Algorithms, Chemical, Ligands, Polycyclic Compounds/*chemistry} +} + +@article{spitzer_surflex-dock:_2012, + title = {{Surflex-Dock: Docking benchmarks and real-world application}}, + author = {Spitzer, R and Jain, A N}, + pages = {687--699}, + volume = {26}, + doi = {10.1007/s10822-011-9533-y}, + issn = {1573-4951 (Electronic) 0920-654X (Linking)}, + keywords = {*Algorithms, *Ligands, *Protein Conformation, Binding Sites, Computer Simulation, Crystallography, Models, Molecular, Protein, Protein Binding, Proteins/*chemistry, Software, Structural Homology, X-Ray} +} + +@article{floris_swimming_2011, + title = {{Swimming into peptidomimetic chemical space using {\{}pepMMsMIMIC{\}}.}}, + author = {Floris, Matteo and Masciocchi, Joel and Fanton, Marco and Moro, Stefano}, + pages = {W261--9}, + volume = {39}, + doi = {10.1093/nar/gkr287} +} + +@article{cummings_synthesis_2009, + title = {{Synthesis and Biological Evaluation of a 5-6-5 Imidazole-Phenyl-Thiazole Based {$\alpha$}-Helix Mimetic}}, + author = {Cummings, Christopher G and Ross, Nathan T and Katt, William P and Hamilton, Andrew D}, + pages = {25--28}, + volume = {11}, + doi = {10.1021/ol8022962} +} + +@article{wei_synthesis_2010, + title = {{Synthesis and biological evaluation of Apogossypolone derivatives as pan-active inhibitors of antiapoptotic B-cell lymphoma/leukemia-2 (Bcl-2) family proteins}}, + author = {Wei, Jun and Kitada, Shinichi and Stebbins, John L and Placzek, William and Zhai, Dayong and Wu, Bainan and Rega, Michele F and Zhang, Ziming and Cellitti, Jason and Yang, Li and Dahl, Russell and Reed, John C and Pellecchia, Maurizio}, + pages = {8000--8011}, + volume = {53}, + doi = {10.1021/jm100746q} +} + +@article{ferro_synthesis_2013, + title = {{Synthesis and biological evaluation of novel antiviral agents as protein–protein interaction inhibitors}}, + author = {Ferro, Stefania and De Luca, Laura and Morreale, Francesca and Christ, Frauke and Debyser, Zeger and Gitto, Rosaria and Chimirri, Alba}, + pages = {1--6}, + doi = {10.3109/14756366.2013.766609} +} + +@article{gao_synthesis_2013, + title = {{Synthesis and Screening of Stereochemically Diverse Combinatorial Libraries of Peptide Tertiary Amides}}, + author = {Gao, Yu and Kodadek, Thomas}, + pages = {360--369}, + volume = {20}, + doi = {10.1016/j.chembiol.2013.01.013} +} + +@article{milkiewicz_synthesis_2010, + title = {{Synthesis and structure-activity relationships of 1,2,3,4-tetrahydropyrido[2,3-b]pyrazines as potent and selective inhibitors of the anaplastic lymphoma kinase}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Milkiewicz, Karen L. and Weinberg, Linda R. and Albom, Mark S. and Angeles, Thelma S. and Cheng, Mangeng and Ghose, Arup K. and Roemmele, Renee C. and Theroff, Jay P. and Underiner, Ted L. and Zificsak, Craig A. and Dorsey, Bruce D.}, + number = {12}, + pages = {4351--4362}, + volume = {18}, + doi = {10.1016/j.bmc.2010.04.087}, + issn = {09680896}, + keywords = {Anaplastic lymphoma kinase, Kinase inhibitors} +} + +@article{madden_synthesis_2011, + title = {{Synthesis of cell-permeable stapled peptide dual inhibitors of the p53-Mdm2/Mdmx interactions via photoinduced cycloaddition}}, + author = {Madden, Michael M and Muppidi, Avinash and Li, Zhenyu and Li, Xiaolong and Chen, Jiandong and Lin, Qing}, + pages = {1472--1475}, + volume = {21}, + doi = {10.1016/j.bmcl.2011.01.004}, + keywords = {PPI} +} + +@article{jochim_systematic_2010, + title = {{Systematic analysis of helical protein interfaces reveals targets for synthetic inhibitors.}}, + author = {Jochim, Andrea L and Arora, Paramjit S}, + pages = {919--923}, + volume = {5}, + doi = {10.1021/cb1001747} +} + +@article{hu_systematic_2010, + title = {{Systematic analysis of public domain compound potency data identifies selective molecular scaffolds across druggable target families}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Hu, Ye and Wassermann, Anne Mai and Lounkine, Eugen and Bajorath, Jürgen}, + number = {2}, + pages = {752--758}, + volume = {53}, + doi = {10.1021/jm9014229}, + issn = {00222623} +} + +@article{jordan_tamoxifen:_2003, + title = {{Tamoxifen: a most unlikely pioneering medicine}}, + author = {Jordan, V Craig}, + pages = {205--213}, + volume = {2}, + doi = {10.1038/nrd1031} +} + +@article{lindsay_target_2003, + title = {{Target discovery}}, + year = {2003}, + journal = {Nature Reviews Drug Discovery}, + author = {Lindsay, Mark A.}, + number = {10}, + pages = {831--838}, + volume = {2}, + doi = {10.1038/nrd1202}, + issn = {14741776}, + pmid = {14526386}, + keywords = {Animal, Animals, Disease Models, Drug Design, Drug Evaluation, Gene Expression Profiling, Gene Silencing, Genome, Genomics, Human, Humans, Oligonucleotide Array Sequence Analysis, Preclinical, Proteomics, Small Interfering, {\{}RNA{\}}} +} + +@article{kinch_target_2015, + title = {{Target selection for {\{}FDA{\}}-approved medicines}}, + author = {Kinch, Michael S and Hoyer, Denton and Patridge, Eric and Plummer, Mark}, + number = {7}, + pages = {784--789}, + volume = {20}, + doi = {10.1016/j.drudis.2014.11.001}, + issn = {1878-5832}, + pmid = {25462532}, + keywords = {Cytoplasmic and Nuclear, Drug Approval, Drug Discovery, G-Protein-Coupled, Humans, Ion Channels, Membrane Transport Proteins, Molecular Targeted Therapy, Pharmaceutical Preparations, Receptors, Signal Transduction, United States, United States Food and Drug Administration} +} + +@article{subbiah_targeted_2011, + title = {{Targeted Therapy of Ewing{\&}apos;s Sarcoma}}, + author = {Subbiah, Vivek and Anderson, Pete}, + pages = {686985}, + volume = {2011}, + doi = {10.1155/2011/686985} +} + +@article{khanna_targeting_2011, + title = {{Targeting Multiple Conformations Leads to Small Molecule Inhibitors of the {\{}uPAR{\}}{\textperiodcentered}{\{}uPA{\}} Protein-Protein Interaction That Block Cancer Cell Invasion.}}, + author = {Khanna, May and Wang, Fang and Jo, Inha and Knabe, W Eric and Wilson, Sarah M and Li, Liwei and Bum-Erdene, Khuchtumur and Li, Jing and W Sledge, George and Khanna, Rajesh and Meroueh, Samy O}, + doi = {10.1021/cb200180m} +} + +@article{ivanov_targeting_2013, + title = {{Targeting protein–protein interactions as an anticancer strategy}}, + author = {Ivanov, Andrei A and Khuri, Fadlo R and Fu, Haian}, + pages = {1--8}, + doi = {10.1016/j.tips.2013.04.007} +} + +@article{gautier_targeting_2011-1, + title = {{Targeting the Proangiogenic {\{}VEGF{\}}-{\{}VEGFR{\}} Protein-Protein Interface with Drug-like Compounds by In Silico and In Vitro Screening.}}, + author = {Gautier, Benoit and Miteva, Maria A and Goncalves, Victor and Huguenot, Florent and Coric, Pascale and Bouaziz, Serge and Seijo, Bili and Gaucher, Jean-François and Broutin, Isabelle and Garbay, Christiane and Lesnard, Aurelien and Rault, Sylvain and Inguimbert, Nicolas and Villoutreix, Bruno O and Vidal, Michel}, + pages = {1631--1639}, + volume = {18}, + doi = {10.1016/j.chembiol.2011.10.016} +} + +@article{gautier_targeting_2011, + title = {{Targeting the Proangiogenic {\{}VEGF{\}}-{\{}VEGFR{\}} Protein-Protein Interface with Drug-like Compounds by In Silico and In{\&}amp;nbsp;Vitro Screening}}, + author = {Gautier, Benoit and Miteva, Maria A and Goncalves, Victor and Huguenot, Florent and Coric, Pascale and Bouaziz, Serge and Seijo, Bili and Gaucher, Jean-François and Broutin, Isabelle and Garbay, Christiane and Lesnard, Aurelien and Rault, Sylvain and Inguimbert, Nicolas and Villoutreix, Bruno O and Vidal, Michel}, + pages = {1631--1639}, + volume = {18}, + doi = {10.1016/j.chembiol.2011.10.016} +} + +@article{crews_targeting_2010, + title = {{Targeting the Undruggable Proteome: The Small Molecules of My Dreams}}, + year = {2010}, + journal = {Chemistry and Biology}, + author = {Crews, Craig M.}, + number = {6}, + pages = {551--555}, + volume = {17}, + doi = {10.1016/j.chembiol.2010.05.011}, + issn = {10745521} +} + +@article{mukherjee_targeting_2010, + title = {{Targeting the {\{}BH{\}}3 Domain Mediated Protein−Protein Interaction of Bcl-{\{}xL{\}} through Virtual Screening}}, + author = {Mukherjee, Prasenjit and Desai, Prashant and Zhou, Yu-Dong and Avery, Mitchell}, + pages = {906--923}, + volume = {50}, + doi = {10.1021/ci1000373} +} + +@article{anderson_targeting_2003, + title = {{Targeting {\{}ICAM{\}}-1/{\{}LFA{\}}-1 interaction for controlling autoimmune diseases: designing peptide and small molecule inhibitors.}}, + author = {Anderson, Meagan E and Siahaan, Teruna J}, + pages = {487--501}, + volume = {24} +} + +@article{mertz_targeting_2011, + title = {{Targeting {\{}MYC{\}} dependence in cancer by inhibiting {\{}BET{\}} bromodomains.}}, + author = {Mertz, Jennifer A and Conery, Andrew R and Bryant, Barbara M and Sandy, Peter and Balasubramanian, Srividya and Mele, Deanna A and Bergeron, Louise and Sims, Robert J}, + pages = {16669--16674}, + volume = {108}, + doi = {10.1073/pnas.1108190108} +} + +@article{porter_tetrahydroisoquinoline_2009, + title = {{Tetrahydroisoquinoline amide substituted phenyl pyrazoles as selective Bcl-2 inhibitors}}, + author = {Porter, John and Payne, Andrew and de Candole, Ben and Ford, Daniel and Hutchinson, Brian and Trevitt, Graham and Turner, James and Edwards, Chloe and Watkins, Clare and Whitcombe, Ian and Davis, Jeremy and Stubberfield, Colin}, + pages = {230--233}, + volume = {19}, + doi = {10.1016/j.bmcl.2008.10.113} +} + +@article{lo_conte_atomic_1999, + title = {{The atomic structure of protein-protein recognition sites}}, + author = {Lo Conte, L and Chothia, C and Janin, J}, + number = {5}, + pages = {2177--2198}, + volume = {285}, + issn = {0022-2836}, + pmid = {9925793}, + keywords = {Amino Acids, Antibodies, Antigens, Binding Sites, Endopeptidases, Hydrogen Bonding, Models, Molecular, Protease Inhibitors, Protein Conformation, Proteins, Water, {\{}GTP{\}}-Binding Proteins} +} + +@article{ackler_bcl-2_2010, + title = {{The Bcl-2 inhibitor ABT-263 enhances the response of multiple chemotherapeutic regimens in hematologic tumors in vivo}}, + year = {2010}, + journal = {Cancer Chemotherapy and Pharmacology}, + author = {Ackler, Scott and Mitten, Michael J. and Foster, Kelly and Oleksijew, Anatol and Refici, Marion and Tahir, Stephen K. and Xiao, Yu and Tse, Christin and Frost, David J. and Fesik, Stephen W. and Rosenberg, Saul H. and Elmore, Steven W. and Shoemaker, Alexander R.}, + number = {5}, + pages = {869--880}, + volume = {66}, + doi = {10.1007/s00280-009-1232-1}, + issn = {03445704}, + keywords = {ABT-263, Apoptosis, Bcl-2, Lymphoma, Myeloma} +} + +@article{seidah_biology_2012, + title = {{The biology and therapeutic targeting of the proprotein convertases}}, + author = {Seidah, Nabil G and Prat, Annik}, + pages = {367--383}, + volume = {11}, + doi = {10.1038/nrd3699} +} + +@article{dougherty_cation-_2012, + title = {{The Cation-{$\pi$} Interaction.}}, + author = {Dougherty, Dennis A}, + doi = {10.1021/ar300265y} +} + +@article{mosnier_cytoprotective_2007, + title = {{The cytoprotective protein C pathway}}, + author = {Mosnier, L O and Zlokovic, B V and Griffin, J H}, + pages = {3161--3172}, + volume = {109}, + doi = {10.1182/blood-2006-09-003004}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {*Apoptosis, *Cytoprotection, Activated Protein C Resistance/*metabolism, Animals, Antigens, Blood Coagulation, Blood Coagulation Factors/metabolism, Cell Surface/metabolism, Endothelium, Gene Expression Regulation, Hemorrhage/metabolism, Humans, Inflammation/metabolism, Ischemia/metabolism, Neovascularization, Physiologic, Protein C Deficiency/metabolism, Protein C/*metabolism, Receptor, Receptors, Risk Factors, Sepsis/metabolism, Stroke/metabolism, Venous Thrombosis/metabolism, Wound Healing, {\{}CD{\}}/metabolism, {\{}PAR{\}}-1/metabolism} +} + +@article{flower_development_2003, + title = {{The development of {\{}COX{\}}2 inhibitors}}, + author = {Flower, Rod J}, + pages = {179--191}, + volume = {2}, + doi = {10.1038/nrd1034} +} + +@article{perzborn_discovery_2010, + title = {{The discovery and development of rivaroxaban, an oral, direct factor Xa inhibitor}}, + author = {Perzborn, Elisabeth and Roehrig, Susanne and Straub, Alexander and Kubitza, Dagmar and Misselwitz, Frank}, + pages = {1--15}, + doi = {10.1038/nrd3185} +} + +@article{prakesch_discovery_2008, + title = {{The discovery of small molecule chemical probes of Bcl-{\{}XL{\}} and Mcl-1}}, + author = {Prakesch, Michael and Denisov, Alexey Yu and Naim, Marwen and Gehring, Kalle and Arya, Prabhat}, + pages = {7443--7449}, + volume = {16}, + doi = {10.1016/j.bmc.2008.06.023} +} + +@article{hopkins_druggable_2002, + title = {{The druggable genome.}}, + author = {Hopkins, Andrew L and Groom, Colin R}, + pages = {727--730}, + volume = {1}, + doi = {10.1038/nrd892} +} + +@article{russ_druggable_2005, + title = {{The druggable genome: an update.}}, + author = {Russ, Andreas P and Lampel, Stefan}, + pages = {1607--1610}, + volume = {10}, + doi = {10.1016/S1359-6446(05)03666-4} +} + +@article{rask-andersen_druggable_2014, + title = {{The Druggable Genome: Evaluation of Drug Targets in Clinical Trials Suggests Major Shifts in Molecular Class and Indication}}, + author = {Rask-Andersen, Mathias and Masuram, Surendar and Schi{\"{o}}th, Helgi B}, + pages = {9--26}, + volume = {54}, + doi = {10.1146/annurev-pharmtox-011613-135943} +} + +@article{shippenberg_dynorphin/kappa_2009, + title = {{The dynorphin/kappa opioid receptor system: a new target for the treatment of addiction and affective disorders?}}, + author = {Shippenberg, Toni S}, + pages = {247}, + volume = {34}, + doi = {10.1038/npp.2008.165} +} + +@article{koehn_evolving_2005, + title = {{The evolving role of natural products in drug discovery}}, + author = {Koehn, Frank E and Carter, Guy T}, + pages = {206--220}, + volume = {4}, + doi = {10.1038/nrd1657} +} + +@article{ganesan_food_2011, + title = {{The food colorant erythrosine is a promiscuous protein-protein interaction inhibitor}}, + author = {Ganesan, Lakshmi and Margolles-Clark, Emilio and Song, Yun and Buchwald, Peter}, + pages = {810--818}, + volume = {81}, + doi = {10.1016/j.bcp.2010.12.020}, + keywords = {promiscuous} +} + +@article{vazquez_genetics_2008, + title = {{The genetics of the p53 pathway, apoptosis and cancer therapy}}, + author = {Vazquez, Alexei and Bond, Elisabeth E and Levine, Arnold J and Bond, Gareth L}, + pages = {979--987}, + volume = {7} +} + +@article{ritchie_graphical_2011, + title = {{The graphical representation of ADME-related molecule properties for medicinal chemists}}, + year = {2011}, + journal = {Drug Discovery Today}, + author = {Ritchie, Timothy J. and Ertl, Peter and Lewis, Richard}, + number = {1-2}, + pages = {65--72}, + volume = {16}, + doi = {10.1016/j.drudis.2010.11.002}, + issn = {13596446} +} + +@article{ritchie_impact_2009, + title = {{The impact of aromatic ring count on compound developability - are too many aromatic rings a liability in drug design?}}, + year = {2009}, + journal = {Drug Discovery Today}, + author = {Ritchie, Timothy J. and Macdonald, S. J F}, + number = {21-22}, + pages = {1011--1020}, + volume = {14}, + doi = {10.1016/j.drudis.2009.07.014}, + issn = {13596446}, + keywords = {*Drug Design, Aromatic/*chemistry/pharmacokinetics, Carbonic Anhydrase Inhibitors, Cytochrome P-450 {\{}CYP{\}}3A Inhibitors, Enzyme Inhibitors/pharmacology, Ether-A-Go-Go Potassium Channels/antagonists {\&} in, Humans, Hydrocarbons, Intestinal Absorption, Lipids/chemistry, Luminescence, Potassium Channel Blockers/pharmacology, Protein Binding, Serum Albumin/metabolism, Solubility, Structure-Activity Relationship} +} + +@article{ritchie_impact_2011, + title = {{The impact of aromatic ring count on compound developability: Further insights by examining carbo- and hetero-aromatic and -aliphatic ring types}}, + year = {2011}, + journal = {Drug Discovery Today}, + author = {Ritchie, Timothy J. and MacDonald, Simon J F and Young, Robert J. and Pickett, Stephen D.}, + number = {3-4}, + pages = {164--171}, + volume = {16}, + doi = {10.1016/j.drudis.2010.11.014}, + issn = {13596446}, + keywords = {*Drug Design, Administration, Aromatic/chemical synthesis/*chemistry, Heterocyclic Compounds/chemical synthesis/*chemis, Humans, Hydrocarbons, Marketing/statistics {\&} numerical data, Oral, Pharmaceutical Preparations/administration {\&} dosa, Pharmacokinetics, Solubility, Structure-Activity Relationship} +} + +@article{jiang_impact_2012, + title = {{The impact of oxygen on metabolic evolution: a chemoinformatic investigation.}}, + author = {Jiang, Ying-Ying and Kong, De-Xin and Qin, Tao and Li, Xiao and Caetano-Anoll{\'{e}}s, Gustavo and Zhang, Hong-Yu}, + pages = {e1002426}, + volume = {8}, + doi = {10.1371/journal.pcbi.1002426} +} + +@article{michel_impact_2012, + title = {{The impact of small molecule binding on the energy landscape of the intrinsically disordered protein C-myc.}}, + author = {Michel, Julien and Cuchillo, Rémi}, + pages = {e41070}, + volume = {7}, + doi = {10.1371/journal.pone.0041070} +} + +@article{kortagere_importance_2009, + title = {{The importance of discerning shape in molecular pharmacology}}, + author = {Kortagere, Sandhya and Krasowski, Matthew D and Ekins, Sean}, + pages = {138--147}, + volume = {30}, + doi = {10.1016/j.tips.2008.12.001} +} + +@article{leeson_influence_2007, + title = {{The influence of drug-like concepts on decision-making in medicinal chemistry}}, + year = {2007}, + journal = {Nature Reviews Drug Discovery}, + author = {Leeson, Paul D. and Springthorpe, Brian}, + number = {11}, + pages = {881--890}, + volume = {6}, + doi = {10.1038/nrd2445}, + issn = {14741776} +} + +@article{keseru_influence_2009, + title = {{The influence of lead discovery strategies on the properties of drug candidates}}, + author = {Keser{\"{u}}, György M and Makara, Gergely M}, + pages = {203--212}, + volume = {8}, + doi = {10.1038/nrd2796} +} + +@article{smusz_influence_2013, + title = {{The influence of the inactives subset generation on the performance of machine learning methods}}, + author = {Smusz, Sabina and Kurczab, RafaÅ‚ and Bojarski, Andrzej J}, + pages = {17}, + volume = {5}, + doi = {10.1145/1656274.1656278} +} + +@article{zhao_initial_2002, + title = {{The initial evaluation of non-peptidic small-molecule HDM2 inhibitors based on p53-HDM2 complex structure}}, + year = {2002}, + journal = {Cancer Letters}, + author = {Zhao, Jianhua and Wang, Mijuan and Chen, Jie and Luo, Aiping and Wang, Xiuqin and Wu, Min and Yin, Dali and Liu, Zhihua}, + number = {1}, + pages = {69--77}, + volume = {183}, + doi = {10.1016/S0304-3835(02)00084-8}, + issn = {03043835}, + keywords = {HDM2, Nonpeptidic small molecule HDM2 inhibitor, p53} +} + +@article{plewczynski_interactome:_2009, + title = {{The interactome: predicting the protein-protein interactions in cells}}, + author = {Plewczy{\'{n}}ski, Dariusz and Ginalski, Krzysztof}, + pages = {1--22}, + volume = {14}, + doi = {10.2478/s11658-008-0024-7} +} + +@article{shelat_interdependence_2007, + title = {{The interdependence between screening methods and screening libraries}}, + author = {Shelat, Anang A and Guy, R Kiplin}, + pages = {244--251}, + volume = {11}, + doi = {10.1016/j.cbpa.2007.05.003} +} + +@article{reichmann_molecular_2007, + title = {{The molecular architecture of protein-protein binding sites}}, + author = {Reichmann, Dana and Rahat, Ofer and Cohen, Mati and Neuvirth, Hani and Schreiber, Gideon}, + pages = {67--76}, + volume = {17}, + doi = {10.1016/j.sbi.2007.01.004} +} + +@article{ertl_molecule_2012, + title = {{The Molecule Cloud - compact visualization of large collections of molecules.}}, + author = {Ertl, Peter and Rohde, Bernhard}, + pages = {12}, + volume = {4}, + doi = {10.1186/1758-2946-4-12} +} + +@article{davis_overlap_2010, + title = {{The overlap of small molecule and protein binding sites within families of protein structures.}}, + author = {Davis, Fred P and Sali, Andrej}, + pages = {e1000668}, + volume = {6}, + doi = {10.1371/journal.pcbi.1000668} +} + +@article{arrowsmith_promise_2015, + title = {{The promise and peril of chemical probes}}, + year = {2015}, + journal = {Nature Chemical Biology}, + author = {Arrowsmith, Cheryl H. and Audia, James E. and Austin, Christopher and Baell, Jonathan and Bennett, Jonathan and Blagg, Julian and Bountra, Chas and Brennan, Paul E. and Brown, Peter J. and Bunnage, Mark E. and Buser-Doepner, Carolyn and Campbell, Robert M. and Carter, Adrian J. and Cohen, Philip and Copeland, Robert A. and Cravatt, Ben and Dahlin, Jayme L. and Dhanak, Dashyant and Edwards, Aled M. and Frye, Stephen V. and Gray, Nathanael and Grimshaw, Charles E. and Hepworth, David and Howe, Trevor and Huber, Kilian V.M. and Jin, Jian and Knapp, Stefan and Kotz, Joanne D. and Kruger, Ryan G. and Lowe, Derek and Mader, Mary M. and Marsden, Brian and Mueller-Fahrnow, Anke and M{\"{u}}ller, Susanne and O'Hagan, Ronan C. and Overington, John P. and Owen, Dafydd R. and Rosenberg, Saul H. and Roth, Brian and Ross, Ruth and Schapira, Matthieu and Schreiber, Stuart L. and Shoichet, Brian and Sundstr{\"{o}}m, Michael and Superti-Furga, Giulio and Taunton, Jack and Toledo-Sherman, Leticia and Walpole, Chris and Walters, Michael A. and Willson, Timothy M. and Workman, Paul and Young, Robert N. and Zuercher, William J.}, + number = {8}, + pages = {536--541}, + volume = {11}, + doi = {10.1038/nchembio.1867}, + issn = {15524469}, + pmid = {26196764}, + keywords = {Biomedical Research, Humans, Information Dissemination, Intellectual Property, Internet, Molecular Probes, Molecular Weight, Sensitivity and Specificity, Small Molecule Libraries} +} + +@article{bemis_properties_1996, + title = {{The properties of known drugs. 1. Molecular frameworks}}, + author = {Bemis, G W and Murcko, M A}, + pages = {2887--2893}, + volume = {39}, + doi = {10.1021/jm9602928} +} + +@article{berman_protein_2000, + title = {{The Protein Data Bank}}, + author = {Berman, H M and Westbrook, J and Feng, Z and Gilliland, G and Bhat, T N and Weissig, H and Shindyalov, I N and Bourne, P E}, + pages = {235--242}, + volume = {28}, + issn = {0305-1048 (Print) 0305-1048 (Linking)}, + keywords = {*Databases, Factual, Information Storage and Retrieval, Internet, Magnetic Resonance Spectroscopy, Protein Conformation, Proteins/*chemistry} +} + +@article{berman_protein_2002, + title = {{The Protein Data Bank}}, + author = {Berman, H M and Battistuz, T and Bhat, T N and Bluhm, W F and Bourne, P E and Burkhardt, K and Feng, Z and Gilliland, G L and Iype, L and Jain, S and Fagan, P and Marvin, J and Padilla, D and Ravichandran, V and Schneider, B and Thanki, N and Weissig, H and Westbrook, J D and Zardecki, C}, + pages = {899--907}, + volume = {58}, + issn = {0907-4449 (Print) 0907-4449 (Linking)}, + keywords = {*Databases, Information Storage and Retrieval, Internet, Protein/standards} +} + +@article{berman_protein_2002-1, + title = {{The Protein Data Bank}}, + author = {Berman, Helen M and Battistuz, Tammy and Bhat, T N and Bluhm, Wolfgang F and Bourne, Philip E and Burkhardt, Kyle and Feng, Zukang and Gilliland, Gary L and Iype, Lisa and Jain, Shri and Fagan, Phoebe and Marvin, Jessica and Padilla, David and Ravichandran, Veerasamy and Schneider, Bohdan and Thanki, Narmada and Weissig, Helge and Westbrook, John D and Zardecki, Christine}, + number = {Pt 6 No 1}, + pages = {899--907}, + volume = {58}, + issn = {0907-4449}, + pmid = {12037327}, + keywords = {Databases, Information Storage and Retrieval, Internet, Protein} +} + +@article{westbrook_protein_2002, + title = {{The Protein Data Bank: unifying the archive}}, + author = {Westbrook, J and Feng, Z and Jain, S and Bhat, T N and Thanki, N and Ravichandran, V and Gilliland, G L and Bluhm, W and Weissig, H and Greer, D S and Bourne, P E and Berman, H M}, + pages = {245--248}, + volume = {30}, + issn = {1362-4962 (Electronic) 0305-1048 (Linking)}, + keywords = {*Databases, Amino Acid Sequence, Animals, Archives, Database Management Systems, Enzymes/chemistry, Forecasting, Information Storage and Retrieval, Internet, Ligands, Polymers/chemistry, Protein, Protein Conformation, Proteins/*chemistry, Quality Control, Stereoisomerism, Terminology as Topic, User-Computer Interface} +} + +@article{arkin_road_2009, + title = {{The road less traveled: modulating signal transduction enzymes by inhibiting their protein-protein interactions}}, + author = {Arkin, Michelle R and Whitty, Adrian}, + pages = {284--290}, + volume = {13}, + doi = {10.1016/j.cbpa.2009.05.125} +} + +@article{buggins_role_2010, + title = {{The role of Bcl-2 family proteins in chronic lymphocytic leukaemia}}, + year = {2010}, + journal = {Leukemia Research}, + author = {Buggins, Andrea G.S. and Pepper, Chris J.}, + number = {7}, + pages = {837--842}, + volume = {34}, + doi = {10.1016/j.leukres.2010.03.011}, + issn = {01452126}, + keywords = {Apoptosis, Bcl-2, Chronic lymphocytic leukaemia, Drug resistance, Microenvironment, Therapeutics} +} + +@article{hopkins_role_2014, + title = {{The role of ligand efficiency metrics in drug discovery}}, + author = {Hopkins, Andrew L and Keser{\"{u}}, György M and Leeson, Paul D and Rees, David C and Reynolds, Charles H}, + pages = {105--121}, + volume = {13}, + doi = {10.1038/nrd4163} +} + +@article{buchan_role_2011, + title = {{The role of translational bioinformatics in drug discovery}}, + author = {Buchan, Natalie S and Rajpal, Deepak K and Webster, Yue and Alatorre, Carlos and Gudivada, Ranga Chandra and Zheng, Chengyi and Sanseau, Philippe and Koehler, Jacob}, + number = {9}, + pages = {426--434}, + volume = {16}, + doi = {10.1016/j.drudis.2011.03.002}, + issn = {1878-5832}, + pmid = {21402166}, + keywords = {Animals, Computational Biology, Drug Discovery, Drug Industry, Humans} +} + +@article{noauthor_role_2000, + title = {{The role of {\{}BCL{\}}-2 family members in apoptosis}}, + pages = {1--2} +} + +@article{schuffenhauer_scaffold_2007, + title = {{The Scaffold Tree − Visualization of the Scaffold Universe by Hierarchical Scaffold Classification}}, + author = {Schuffenhauer, Ansgar and Ertl, Peter and Roggo, Silvio and Wetzel, Stefan and Koch, Marcus A and Waldmann, Herbert}, + pages = {47--58}, + volume = {47}, + doi = {10.1021/ci600338x} +} + +@incollection{ertl_scaffold_2010, + title = {{The scaffold tree: an efficient navigation in the scaffold universe.}}, + shorttitle = {Methods in Molecular Biology}, + author = {Ertl, Peter and Schuffenhauer, Ansgar and Renner, Steffen}, + number = {Chapter 10}, + pages = {245--260}, + volume = {672}, + publisher = {Humana Press}, + isbn = {978-1-60761-839-3} +} + +@article{martiny-baron_small_2010, + title = {{The small molecule specific {\{}EphB{\}}4 kinase inhibitor {\{}NVP{\}}-{\{}BHG{\}}712 inhibits {\{}VEGF{\}} driven angiogenesis}}, + author = {Martiny-Baron, Georg and Holzer, Philipp and Billy, Eric and Schnell, Christian and Brueggen, Joseph and Ferretti, Mireille and Schmiedeberg, Niko and Wood, Jeanette M and Furet, Pascal and Imbach, Patricia}, + pages = {259--267}, + volume = {13}, + doi = {10.1007/s10456-010-9183-z} +} + +@article{meenan_structural_2010, + title = {{The structural and energetic basis for high selectivity in a high-affinity protein-protein interaction}}, + author = {Meenan, Nicola A G and Sharma, Amit and Fleishman, Sarel J and Macdonald, Colin J and Morel, Bertrand and Boetzel, Ruth and Moore, Geoffrey R and Baker, David and Kleanthous, Colin}, + pages = {10080--10085}, + volume = {107}, + doi = {10.1073/pnas.0910756107} +} + +@article{london_structural_2010, + title = {{The Structural Basis of Peptide-Protein Binding Strategies}}, + year = {2010}, + journal = {Structure}, + author = {London, Nir and Movshovitz-Attias, Dana and Schueler-Furman, Ora}, + number = {2}, + pages = {188--199}, + volume = {18}, + doi = {10.1016/j.str.2009.11.012}, + issn = {09692126}, + keywords = {PROTEINS} +} + +@article{gowthaman_structural_2013, + title = {{The structural properties of non-traditional drug targets present new challenges for virtual screening.}}, + author = {Gowthaman, Ragul and Deeds, Eric J and Karanicolas, John}, + doi = {10.1021/ci4002316} +} + +@article{rautureau_structure_2010, + title = {{The structure of Boo/Diva reveals a divergent Bclâ€2 protein}}, + author = {Rautureau, G J P and Day, C L and Hinds, M G}, + pages = {2181--2186}, + volume = {78} +} + +@article{wildhagen_structure-function_2011, + title = {{The structure-function relationship of activated protein C. Lessons from natural and engineered mutations}}, + author = {Wildhagen, K C and Lutgens, E and Loubele, S T and ten Cate, H and Nicolaes, G A}, + pages = {1034--1045}, + volume = {106}, + doi = {10.1160/TH11-08-0522}, + issn = {0340-6245 (Print) 0340-6245 (Linking)}, + keywords = {*Blood Coagulation/genetics, Animals, Anticoagulants/metabolism, Cytoprotection, Factor V/metabolism, Factor {\{}VIII{\}}/metabolism, Genetic Engineering, Humans, Mutation/*genetics, Protein C/*genetics/metabolism, Protein S/metabolism, Structure-Activity Relationship} +} + +@article{ward_systematic_nodate, + title = {{The systematic enumeration of heteroaromatic ring systems as reagents for use in medicinal chemistry}}, + author = {Ward, R}, + keywords = {chemical space, heteroaromatic rings} +} + +@article{noauthor_therapeutic_nodate, + title = {{The therapeutic potential of {\{}PCSK{\}}9 inhibition in primary dyslipidemia, the example from {\{}SAR{\}}236553/{\{}REGN{\}}727, Expert Opinion on Investigational Drugs, Informa Healthcare}} +} + +@article{johnson_two_2013, + title = {{The two faces of Hippo: targeting the Hippo pathway for regenerative medicine and cancer treatment}}, + author = {Johnson, Randy and Halder, Georg}, + pages = {63--79}, + volume = {13}, + doi = {10.1038/nrd4161} +} + +@article{von_itzstein_war_2007, + title = {{The war against influenza: discovery and development of sialidase inhibitors.}}, + author = {von Itzstein, Mark}, + pages = {967--974}, + volume = {6}, + doi = {10.1038/nrd2400} +} + +@article{li_bet_2012, + title = {{The {\{}BET{\}} bromodomain inhibitor {\{}JQ{\}}1 activates {\{}HIV{\}} latency through antagonizing Brd4 inhibition of Tat-transactivation.}}, + author = {Li, Zichong and Guo, Jia and Wu, Yuntao and Zhou, Qiang}, + doi = {10.1093/nar/gks976} +} + +@article{kazi_bh3_2011, + title = {{The {\{}BH{\}}3 -Helical Mimic {\{}BH{\}}3-M6 Disrupts Bcl-{\{}XL{\}}, Bcl-2, and {\{}MCL{\}}-1 Protein-Protein Interactions with Bax, Bak, Bad, or Bim and Induces Apoptosis in a Bax- and Bim-dependent Manner}}, + author = {Kazi, A and Sun, J and Doi, K and Sung, S S and Takahashi, Y and Yin, H and Rodriguez, J M and Becerril, J and Berndt, N and Hamilton, A D and Wang, H G and Sebti, S M}, + pages = {9382--9392}, + volume = {286}, + doi = {10.1074/jbc.M110.203638} +} + +@article{lagorce_faf-drugs2_2011, + title = {{The {\{}FAF{\}}-Drugs2 server: a multistep engine to prepare electronic chemical compound collections.}}, + author = {Lagorce, David and Maupetit, Julien and Baell, Jonathan and Sperandio, Olivier and Tuffery, Pierre and Miteva, Maria A and Galons, Hervé and Villoutreix, Bruno O}, + pages = {2018--2020}, + volume = {27}, + doi = {10.1093/bioinformatics/btr333} +} + +@article{solt_ikappab_2008, + title = {{The {\{}IkappaB{\}} kinase complex: master regulator of {\{}NF{\}}-{\{}kappaB{\}} signaling}}, + author = {Solt, Laura A and May, Michael J}, + pages = {3--18}, + volume = {42}, + doi = {10.1007/s12026-008-8025-1} +} + +@article{christ_ledgf/p75_2013, + title = {{The {\{}LEDGF{\}}/p75 integrase interaction, a novel target for anti-{\{}HIV{\}} therapy.}}, + author = {Christ, Frauke and Debyser, Zeger}, + pages = {102--109}, + volume = {435}, + doi = {10.1016/j.virol.2012.09.033} +} + +@article{stewart_mcl-1_2010, + title = {{The {\{}MCL{\}}-1 {\{}BH{\}}3 helix is an exclusive {\{}MCL{\}}-1 inhibitor and apoptosis sensitizer}}, + author = {Stewart, Michelle L and Fire, Emiko and Keating, Amy E and Walensky, Loren D}, + pages = {595--601}, + volume = {6}, + doi = {10.1038/nchembio.391} +} + +@article{lambert_pcsk9_2012, + title = {{The {\{}PCSK{\}}9 decade.}}, + author = {Lambert, Gilles and Sjouke, Barbara and Choque, Benjamin and Kastelein, John J P and Hovingh, G Kees}, + doi = {10.1194/jlr.R026658} +} + +@article{wang_pdbbind_2005, + title = {{The {\{}PDBbind{\}} database: methodologies and updates.}}, + author = {Wang, Renxiao and Fang, Xueliang and Lu, Yipin and Yang, Chao-Yie and Wang, Shaomeng}, + pages = {4111--4119}, + volume = {48}, + doi = {10.1021/jm048957q} +} + +@article{rose_rcsb_2015, + title = {{The {\{}RCSB{\}} Protein Data Bank: views of structural biology for basic and applied research and education}}, + shorttitle = {The {\{}RCSB{\}} Protein Data Bank}, + author = {Rose, Peter W and Prli{\'{c}}, Andreas and Bi, Chunxiao and Bluhm, Wolfgang F and Christie, Cole H and Dutta, Shuchismita and Green, Rachel Kramer and Goodsell, David S and Westbrook, John D and Woo, Jesse and Young, Jasmine and Zardecki, Christine and Berman, Helen M and Bourne, Philip E and Burley, Stephen K}, + number = {Database issue}, + pages = {D345--356}, + volume = {43}, + doi = {10.1093/nar/gku1214}, + issn = {1362-4962}, + pmid = {25428375}, + keywords = {Binding Sites, Databases, Internet, Membrane Proteins, Molecular Biology, Molecular Sequence Annotation, Multiprotein Complexes, Peptides, Pharmaceutical Preparations, Protein, Protein Conformation, Research, Software} +} + +@article{schwartz_smifp_2013, + title = {{The {\{}SMIfp{\}} ({\{}SMILES{\}} fingerprint) Chemical Space for Virtual Screening and Visualization of Large Databases of Organic Molecules.}}, + author = {Schwartz, Julian and Awale, Mahendra and Reymond, Jean-Louis}, + doi = {10.1021/ci400206h} +} + +@article{barshir_tissuenet_2013, + title = {{The {\{}TissueNet{\}} database of human tissue protein-protein interactions.}}, + author = {Barshir, Ruth and Basha, Omer and Eluk, Amir and Smoly, Ilan Y and Lan, Alexander and Yeger-Lotem, Esti}, + pages = {D841--4}, + volume = {41}, + doi = {10.1093/nar/gks1198} +} + +@article{ling_theoretical_2010, + title = {{Theoretical studies on the interactions of {\{}XIAP{\}}-{\{}BIR{\}}3 domain with bicyclic and tricyclic core monovalent Smac mimetics}}, + author = {Ling, Baoping and Dong, Lihua and Zhang, Rui and Wang, Zhiguo and Liu, Yongjun and Liu, Chengbu}, + pages = {354--362}, + volume = {29}, + doi = {10.1016/j.jmgm.2010.09.011} +} + +@article{sperandio_theoretical_2002, + title = {{Theoretical study of fast repair of {\{}DNA{\}} damage by cistanoside C and analogs: mechanism and docking.}}, + author = {Sperandio, O and Fan, B T and Zakrzewska, K and Jia, Z J and Zheng, R L and Panaye, A and Doucet, J P and El Fassi, N}, + pages = {243--260}, + volume = {13}, + doi = {10.1080/10629360290002749} +} + +@article{prochownik_therapeutic_2010, + title = {{Therapeutic targeting of PP2A}}, + year = {2018}, + journal = {International Journal of Biochemistry and Cell Biology}, + author = {O'Connor, Caitlin M. and Perl, Abbey and Leonard, Daniel and Sangodkar, Jaya and Narla, Goutham}, + pages = {182--193}, + volume = {96}, + doi = {10.1016/j.biocel.2017.10.008}, + issn = {18785875}, + keywords = {ABL-127, Bortezomib, CIP2A, Cancer, Celastrol, Cell signaling, Drug development, Erlotinib, FTY720, LB-100, LCMT-1, OP449, PME-1, PP2A, Phenothiazines, Protein phosphatase 2A, Protein phosphatases, SET, SMAPs, Tumor suppressors} +} + +@article{schon_thermodynamics-based_2011, + title = {{Thermodynamics-based drug design: strategies for inhibiting protein–protein interactions}}, + author = {Sch{\"{o}}n, Arne and Lam, Sonia Y and Freire, Ernesto}, + pages = {1129--1137}, + volume = {3}, + doi = {10.4155/fmc.11.81} +} + +@article{sharp_thioflavin_2009, + title = {{Thioflavin S (NSC71948) Interferes with Bcl-2-Associated Athanogene (BAG-1)-Mediated Protein-Protein Interactions}}, + year = {2009}, + journal = {Journal of Pharmacology and Experimental Therapeutics}, + author = {Sharp, A. and Crabb, S. J. and Johnson, P. W. M. and Hague, A. and Cutress, R. and Townsend, P. A. and Ganesan, A. and Packham, G.}, + number = {2}, + pages = {680--689}, + volume = {331}, + doi = {10.1124/jpet.109.153601}, + issn = {0022-3565} +} + +@article{becker_three-dimensional_1998, + title = {{Three-dimensional structure of the Stat3{$\beta$} homodimer bound to DNA}}, + year = {1998}, + journal = {Nature}, + author = {Becker, Stefan and Groner, Bernd and M{\"{u}}ller, Christoph W.}, + number = {6689}, + pages = {145--151}, + volume = {394}, + doi = {10.1038/28101}, + issn = {00280836} +} + +@article{higueruelo_timbal_2013, + title = {{TIMBAL v2: Update of a database holding small molecules modulating protein-protein interactions}}, + year = {2013}, + journal = {Database}, + author = {Higueruelo, Alicia P. and Jubb, Harry and Blundell, Tom L.}, + pages = {bat039--bat039}, + volume = {2013}, + doi = {10.1093/database/bat039}, + issn = {17580463} +} + +@article{bispinck_time_1998, + title = {{Time course of the tilorone-induced lysosomal accumulation of sulphated glycosaminoglycans in cultured fibroblasts}}, + year = {1998}, + journal = {Experimental and Toxicologic Pathology}, + author = {Bispinck, Freia and Fischer, Jens and L{\"{u}}llmann-Rauch, Renate and Ziecenhagen, Manfred W.}, + number = {4-6}, + pages = {411--415}, + volume = {50}, + doi = {10.1016/S0940-2993(98)80027-4}, + issn = {09402993}, + keywords = {Dicationic amphiphilic drugs, Drugs, dicationic amphiphilic, Glycosaminoglycans, sulphated, Lysosomal GAG storage, Lysosomes, Tilorone} +} + +@article{akritopoulou-zanze_topography-biased_2007, + title = {{Topography-biased compound library design: the shape of things to come?}}, + author = {Akritopoulou-Zanze, Irini and Metz, James T and Djuric, Stevan W}, + pages = {948--952}, + volume = {12}, + doi = {10.1016/j.drudis.2007.08.017} +} + +@article{scharfer_torsion_2013, + title = {{Torsion angle preferences in druglike chemical space: a comprehensive guide.}}, + author = {Sch{\"{a}}rfer, Christin and Schulz-Gasch, Tanja and Ehrlich, Hans-Christian and Guba, Wolfgang and Rarey, Matthias and Stahl, Martin}, + pages = {2016--2028}, + volume = {56}, + doi = {10.1021/jm3016816} +} + +@article{kysilka_towards_2012, + title = {{Towards a better understanding of the specificity of protein-protein interaction}}, + year = {2012}, + journal = {Journal of Molecular Recognition}, + author = {Kysilka, Jiřà and Vondr{\'{a}}{\v{s}}ek, JiÅ™Ã}, + number = {11}, + pages = {604--615}, + volume = {25}, + doi = {10.1002/jmr.2219}, + issn = {09523499}, + keywords = {bioinformatics, empirical potentials, interaction energy, molecular recognition, protein-protein interaction, side chain-side chain interaction, x-ray structure analysis} +} + +@article{keskin_towards_2007, + title = {{Towards drugs targeting multiple proteins in a systems biology approach.}}, + author = {Keskin, O and Gursoy, A and Ma, B and Nussinov, R}, + pages = {943--951}, + volume = {7} +} + +@article{doveston_towards_2013, + title = {{Towards the realisation of lead-oriented synthesis.}}, + author = {Doveston, Richard and Marsden, Stephen and Nelson, Adam}, + doi = {10.1016/j.drudis.2013.11.006} +} + +@article{dow_towards_2011, + title = {{Towards the systematic exploration of chemical space}}, + author = {Dow, Mark and Fisher, Martin and James, Thomas and Marchetti, Francesco and Nelson, Adam}, + pages = {--}, + doi = {10.1039/c1ob06098h} +} + +@article{eyrisch_transient_2007, + title = {{Transient pockets on protein surfaces involved in protein-protein interaction}}, + author = {Eyrisch, Susanne and Helms, Volkhard}, + pages = {3457--3464}, + volume = {50}, + doi = {10.1021/jm070095g} +} + +@article{eyrisch_transient_2012, + title = {{Transient pockets on {\{}XIAP{\}}-{\{}BIR{\}}2: toward the characterization of putative binding sites of small-molecule {\{}XIAP{\}} inhibitors.}}, + author = {Eyrisch, Susanne and Medina-Franco, Jose L and Helms, Volkhard}, + pages = {2031--2042}, + volume = {18}, + doi = {10.1007/s00894-011-1217-y} +} + +@article{acuner_ozbabacan_transient_2011, + title = {{Transient protein-protein interactions}}, + author = {Acuner Ozbabacan, S E and Engin, H B and Gursoy, A and Keskin, O}, + pages = {635--648}, + volume = {24}, + doi = {10.1093/protein/gzr025} +} + +@article{perkins_transient_2010, + title = {{Transient Protein-Protein Interactions: Structural, Functional, and Network Properties}}, + author = {Perkins, James R and Diboun, Ilhem and Dessailly, Benoit H and Lees, Jon G and Orengo, Christine}, + pages = {1233--1243}, + volume = {18}, + doi = {10.1016/j.str.2010.08.007} +} + +@article{fink_transmembrane_2012, + title = {{Transmembrane domains interactions within the membrane milieu: Principles, advances and challenges}}, + year = {2012}, + journal = {Biochimica et Biophysica Acta - Biomembranes}, + author = {Fink, Avner and Sal-Man, Neta and Gerber, Doron and Shai, Yechiel}, + number = {4}, + pages = {974--983}, + volume = {1818}, + doi = {10.1016/j.bbamem.2011.11.029}, + issn = {00052736}, + keywords = {GALEX, Helix-helix interaction, Recognition within the membrane, TOXCAT, ToxR, Transmembrane domain} +} + +@article{rask-andersen_trends_2011, + title = {{Trends in the exploitation of novel drug targets}}, + year = {2011}, + journal = {Nature Reviews Drug Discovery}, + author = {Rask-Andersen, Mathias and Alm{\'{e}}n, Markus Sällman and Schi{\"{o}}th, Helgi B.}, + number = {8}, + pages = {579--590}, + volume = {10}, + doi = {10.1038/nrd3478}, + issn = {14741776}, + pmid = {21804595}, + keywords = {Databases, Drug Approval, Drug Discovery, Factual, G-Protein-Coupled, Genome, Human, Humans, Receptors, United States, United States Food and Drug Administration} +} + +@article{arrowsmith_trial_2011, + title = {{Trial watch: phase {\{}III{\}} and submission failures: 2007-2010}}, + shorttitle = {Trial watch}, + author = {Arrowsmith, John}, + number = {2}, + pages = {87}, + volume = {10}, + doi = {10.1038/nrd3375}, + issn = {1474-1784}, + pmid = {21283095}, + keywords = {Antineoplastic Agents, Clinical Trials, Humans, Neoplasms, Phase {\{}III{\}} as Topic, Treatment Failure} +} + +@article{ma_trp/met/phe_2007, + title = {{Trp/Met/Phe hot spots in protein-protein interactions: potential targets in drug design}}, + author = {Ma, Buyong and Nussinov, Ruth}, + pages = {999--1005}, + volume = {7} +} + +@article{aldeghi_two_2013, + title = {{Two and Three-dimensional Rings in Drugs}}, + author = {Aldeghi, Matteo and Malhotra, Shipra and Selwood, David L and Chan, A W Edith}, + pages = {n/a--n/a}, + doi = {10.1111/cbdd.12260}, + keywords = {chemical space} +} + +@article{aldeghi_two_2013-1, + title = {{Two and Threeâ€dimensional Rings in Drugs}}, + author = {Aldeghi, Matteo and Malhotra, Shipra and Selwood, David L and Chan, A W Edith}, + doi = {10.1111/cbdd.12260} +} + +@article{peironcely_understanding_2011, + title = {{Understanding and classifying metabolite space and Metabolite-Likeness}}, + year = {2011}, + journal = {PLoS ONE}, + author = {Peironcely, Julio E. and Reijmers, Theo and Coulier, Leon and Bender, Andreas and Hankemeier, Thomas}, + number = {12}, + pages = {e28966}, + volume = {6}, + doi = {10.1371/journal.pone.0028966}, + issn = {19326203} +} + +@article{planas-iglesias_understanding_2013, + title = {{Understanding Protein-Protein Interactions Using Local Structural Features.}}, + author = {Planas-Iglesias, Joan and Bonet, Jaume and Garc{\'{i}}a-Garc{\'{i}}a, Javier and Mar{\'{i}}n-L{\'{o}}pez, Manuel A and Feliu, Elisenda and Oliva, Baldo}, + doi = {10.1016/j.jmb.2013.01.014} +} + +@article{zhu_update_2010, + title = {{Update of TTD: Therapeutic Target Database}}, + year = {2009}, + journal = {Nucleic Acids Research}, + author = {Zhu, Feng and Han, Bu Cong and Kumar, Pankaj and Liu, Xiang Hui and Ma, Xiao Hua and Wei, Xiao Na and Huang, Lu and Guo, Yang Fan and Han, Lian Yi and Zheng, Chan Juan and Chen, Yu Zong}, + number = {SUPPL.1}, + pages = {D787--91}, + volume = {38}, + doi = {10.1093/nar/gkp1014}, + issn = {03051048} +} + +@article{gu_use_2013, + title = {{Use of natural products as chemical library for drug discovery and network pharmacology.}}, + author = {Gu, Jiangyong and Gui, Yuanshen and Chen, Lirong and Yuan, Gu and Lu, Hui-Zhe and Xu, Xiaojie}, + pages = {e62839}, + volume = {8}, + doi = {10.1371/journal.pone.0062839} +} + +@article{scott_using_2013, + title = {{Using a Fragment-Based Approach To Target Protein-Protein Interactions}}, + author = {Scott, Duncan E and Ehebauer, Matthias T and Pukala, Tara and Marsh, May and Blundell, Tom L and Venkitaraman, Ashok R and Abell, Chris and Hyv{\"{o}}nen, Marko}, + pages = {332--342}, + volume = {14}, + doi = {10.1002/cbic.201200521} +} + +@article{bower_using_2012, + title = {{Using fragment-based technologies to target protein-protein interactions}}, + author = {Bower, J F and Pannifer, A}, + pages = {4685--4696}, + volume = {18}, + doi = {10.2174/138161212802651689} +} + +@article{xu_using_2002, + title = {{Using molecular equivalence numbers to visually explore structural features that distinguish chemical libraries}}, + author = {Xu, Yong-Jin and Johnson, Mark}, + pages = {912--926}, + volume = {42} +} + +@article{rabal_using_2012, + title = {{Using Novel Descriptor Accounting for Ligand-Receptor Interactions to Define and Visually Explore the Biologically Relevant Chemical Space.}}, + author = {Rabal, Obdulia and Oyarzabal, Julen}, + doi = {10.1021/ci200627v} +} + +@article{bonachera_using_2012, + title = {{Using self-organizing maps to accelerate similarity search.}}, + author = {Bonachera, Fanny and Marcou, Gilles and Kireeva, Natalia and Varnek, Alexandre and Horvath, Dragos}, + doi = {10.1016/j.bmc.2012.04.024} +} + +@article{bollag_vemurafenib:_2012, + title = {{Vemurafenib: The first drug approved for BRAF-mutant cancer}}, + year = {2012}, + journal = {Nature Reviews Drug Discovery}, + author = {Bollag, Gideon and Tsai, James and Zhang, Jiazhong and Zhang, Chao and Ibrahim, Prabha and Nolop, Keith and Hirth, Peter}, + number = {11}, + pages = {873--886}, + volume = {11}, + doi = {10.1038/nrd3847}, + issn = {14741776} +} + +@article{villar_villar_substructure_2007_2009, + title = {{Villar{\_}substructure{\_}2007}}, + author = {Villar, Hugo and Kho, Richard}, + pages = {1--9} +} + +@article{fink_virtual_2007, + title = {{Virtual Exploration of the Chemical Universe up to 11 Atoms of C, N, O, F: Assembly of 26.4 Million Structures (110.9 Million Stereoisomers) and Analysis for New Ring Systems, Stereochemistry, Physicochemical Properties, Compound Classes, and Drug Discove}}, + author = {Fink, Tobias and Reymond, Jean-Louis}, + pages = {342--353}, + volume = {47}, + doi = {10.1021/ci600423u} +} + +@article{geppert_virtual_2012, + title = {{Virtual screening for compounds that mimic protein-protein interface epitopes.}}, + author = {Geppert, Tim and Reisen, Felix and Pillong, Max and H{\"{a}}hnke, Volker and Tanrikulu, Yusuf and Koch, Christian P and Perna, Anna Maria and Perez, Tatiana Batista and Schneider, Petra and Schneider, Gisbert}, + pages = {573--579}, + volume = {33}, + doi = {10.1002/jcc.22894} +} + +@article{shoichet_virtual_2004, + title = {{Virtual screening of chemical libraries}}, + year = {2004}, + journal = {Nature}, + author = {Shoichet, Brian K.}, + number = {7019}, + pages = {862--865}, + volume = {432}, + doi = {10.1038/nature03197}, + issn = {00280836} +} + +@article{le_guilloux_visual_2011, + title = {{Visual Characterization and Diversity Quantification of Chemical Libraries: 1. Creation of Delimited Reference Chemical Subspaces.}}, + author = {Le Guilloux, Vincent and Colliandre, Lionel and Bourg, Stéphane and Gu{\'{e}}negou, Guillaume and Dubois-Chevalier, Julie and Morin-Allory, Luc}, + pages = {1762--1774}, + volume = {51}, + doi = {10.1021/ci200051r} +} + +@article{van_deursen_visualisation_2011, + title = {{Visualisation of the chemical space of fragments, lead-like and drug-like molecules in {\{}PubChem{\}}.}}, + author = {van Deursen, Ruud and Blum, Lorenz C and Reymond, Jean-Louis}, + pages = {649--662}, + volume = {25}, + doi = {10.1007/s10822-011-9437-x} +} + +@article{ashford_visualisation_2012, + title = {{Visualisation of variable binding pockets on protein surfaces by probabilistic analysis of related structure sets.}}, + author = {Ashford, Paul and Moss, David S and Alex, Alexander and Yeap, Siew K and Povia, Alice and Nobeli, Irene and Williams, Mark A}, + pages = {39}, + volume = {13}, + doi = {10.1186/1471-2105-13-39} +} + +@article{ruddigkeit_visualization_2013, + title = {{Visualization and virtual screening of the chemical universe database {\{}GDB{\}}-17.}}, + author = {Ruddigkeit, Lars and Blum, Lorenz C and Reymond, Jean-Louis}, + pages = {56--65}, + volume = {53}, + doi = {10.1021/ci300535x} +} + +@article{kingsford_what_2008, + title = {{What are decision trees?}}, + year = {2008}, + journal = {Nature Biotechnology}, + author = {Kingsford, Carl and Salzberg, Steven L.}, + number = {9}, + pages = {1011--1012}, + volume = {26}, + doi = {10.1038/nbt0908-1011}, + issn = {10870156} +} + +@article{higueruelo_what_2012, + title = {{What Can We Learn from the Evolution of Protein-Ligand Interactions to Aid the Design of New Therapeutics?}}, + year = {2012}, + journal = {PLoS ONE}, + author = {Higueruelo, Alicia P. and Schreyer, Adrian and Bickerton, G. Richard J. and Blundell, Tom L. and Pitt, Will R.}, + number = {12}, + pages = {e51742}, + volume = {7}, + doi = {10.1371/journal.pone.0051742}, + issn = {19326203}, + keywords = {*Drug Design, *Evolution, *Protein Binding, *Proteins/chemistry/metabolism, Humans, Ligands, Models, Molecular, Molecular Targeted Therapy, Software, Water/chemistry} +} + +@article{eyrisch_what_2008, + title = {{What induces pocket openings on protein surface patches involved in protein–protein interactions?}}, + author = {Eyrisch, Susanne and Helms, Volkhard}, + pages = {73--86}, + volume = {23}, + doi = {10.1007/s10822-008-9239-y} +} + +@article{kuenemann_which_2014, + title = {{Which three-dimensional characteristics make efficient inhibitors of protein-protein interactions?}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Kuenemann, Mélaine A. and Bourbon, Laura M.L. and Labb{\'{e}}, Céline M. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {11}, + pages = {3067--3079}, + volume = {54}, + doi = {10.1021/ci500487q}, + issn = {15205142} +} + +@article{orii_wiki-pi:_2012, + title = {{Wiki-Pi: A Web-Server of Annotated Human Protein-Protein Interactions to Aid in Discovery of Protein Function}}, + year = {2012}, + journal = {PLoS ONE}, + author = {Orii, Naoki and Ganapathiraju, Madhavi K.}, + number = {11}, + pages = {e49029}, + volume = {7}, + doi = {10.1371/journal.pone.0049029}, + issn = {19326203} +} + +@article{accordino_wrapping_2012, + title = {{Wrapping mimicking in drug-like small molecules disruptive of protein-protein interfaces.}}, + author = {Accordino, Sebastián R and Morini, Marcela A and Bel{\'{e}}n Sierra, MarÃa and Ariel Rodr{\'{i}}guez Fris, J and Appignanesi, Gustavo A and Fern{\'{a}}ndez, Ariel}, + doi = {10.1002/prot.24069} +} + +@article{souers_abt-199_2013, + title = {{{\{}ABT{\}}-199, a potent and selective {\{}BCL{\}}-2 inhibitor, achieves antitumor activity while sparing platelets}}, + author = {SOUERS, ANDREW J and Leverson, Joel D and Boghaert, Erwin R and Ackler, Scott L and Catron, Nathaniel D and Chen, Jun and Dayton, Brian D and Ding, Hong and Enschede, Sari H and Fairbrother, Wayne J and Huang, David C S and Hymowitz, Sarah G and Jin, Sha and Khaw, Seong Lin and Kovar, Peter J and Lam, Lloyd T and Lee, Jackie and Maecker, Heather L and Marsh, Kennan C and Mason, Kylie D and Mitten, Michael J and Nimmer, Paul M and Oleksijew, Anatol and Park, Chang H and Park, Cheol-Min and Phillips, Darren C and Roberts, Andrew W and Sampath, Deepak and Seymour, John F and Smith, Morey L and Sullivan, Gerard M and Tahir, Stephen K and Tse, Chris and Wendt, Michael D and Xiao, Yu and Xue, John C and Zhang, Haichao and Humerickhouse, Rod A and Rosenberg, Saul H and Elmore, Steven W}, + pages = {202--208}, + volume = {19}, + doi = {10.1038/nm.3048} +} + +@article{hou_adme_2004, + title = {{{\{}ADME{\}} Evaluation in Drug Discovery. 4. Prediction of Aqueous Solubility Based on Atom Contribution Approach}}, + author = {Hou, T J and Xia, K and Zhang, W and Xu, X J}, + pages = {266--275}, + volume = {44}, + doi = {10.1021/ci034184n} +} + +@article{meireles_anchor:_2010, + title = {{{\{}ANCHOR{\}}: a web server and database for analysis of protein-protein interaction binding pockets for drug discovery.}}, + author = {Meireles, Lidio M C and D{\"{o}}mling, Alexander S and Camacho, Carlos J}, + pages = {W407--11}, + volume = {38}, + doi = {10.1093/nar/gkq502} +} + +@article{noauthor_armc_2010_2010, + title = {{{\{}ARMC{\}}{\_}2010}}, + pages = {1--643}, + keywords = {chemical space} +} + +@article{huang_asd:_2011, + title = {{{\{}ASD{\}}: a comprehensive database of allosteric proteins and modulators}}, + author = {Huang, Z and Zhu, L and Cao, Y and Wu, G and Liu, X and Chen, Y and Wang, Q and Shi, T and Zhao, Y and Wang, Y and Li, W and Li, Y and Chen, H and Chen, G and Zhang, J}, + pages = {D663--9}, + volume = {39}, + doi = {10.1093/nar/gkq1022}, + issn = {1362-4962 (Electronic) 0305-1048 (Linking)}, + keywords = {*Databases, Allosteric Regulation, Allosteric Site, Drug Design, Protein, Proteins/chemistry/*metabolism, User-Computer Interface} +} + +@article{durrant_autoclickchem:_2012, + title = {{{\{}AutoClickChem{\}}: click chemistry in silico.}}, + author = {Durrant, Jacob D and McCammon, J Andrew}, + pages = {e1002397}, + volume = {8}, + doi = {10.1371/journal.pcbi.1002397} +} + +@article{trott_autodock_2009, + title = {{{\{}AutoDock{\}} Vina: Improving the speed and accuracy of docking with a new scoring function, efficient optimization, and multithreading}}, + author = {Trott, Oleg and Olson, Arthur J}, + pages = {NA--NA}, + doi = {10.1002/jcc.21334} +} + +@article{lessene_bcl-2_2008, + title = {{{\{}BCL{\}}-2 family antagonists for cancer therapy}}, + author = {Lessene, Guillaume and Czabotar, Peter E and Colman, Peter M}, + pages = {989--1000}, + volume = {7}, + doi = {10.1038/nrd2658} +} + +@article{broccatelli_bddcs_2012, + title = {{{\{}BDDCS{\}} Class Prediction for New Molecular Entities.}}, + author = {Broccatelli, Fabio and Cruciani, Gabriele and Benet, Leslie Z and Oprea, Tudor I}, + doi = {10.1021/mp2004302} +} + +@article{liu_bindingdb:_2007, + title = {{{\{}BindingDB{\}}: a web-accessible database of experimentally determined protein–ligand binding affinities}}, + author = {Liu, Tiqing and Lin, Yuhmei and Wen, Xin and Jorissen, Robert N and Gilson, Michael K}, + pages = {D198--D201}, + volume = {35}, + issn = {0305-1048} +} + +@article{wei_bi-97c1_2010, + title = {{{\{}BI{\}}-97C1, an optically pure Apogossypol derivative as pan-active inhibitor of antiapoptotic B-cell lymphoma/leukemia-2 (Bcl-2) family proteins}}, + author = {Wei, Jun and Stebbins, John L and Kitada, Shinichi and Dash, Rupesh and Placzek, William and Rega, Michele F and Wu, Bainan and Cellitti, Jason and Zhai, Dayong and Yang, Li and Dahl, Russell and Fisher, Paul B and Reed, John C and Pellecchia, Maurizio}, + pages = {4166--4176}, + volume = {53}, + doi = {10.1021/jm1001265} +} + +@article{brenchley_cd4+_2004, + title = {{{\{}CD{\}}4+ T cell depletion during all stages of {\{}HIV{\}} disease occurs predominantly in the gastrointestinal tract}}, + author = {Brenchley, J M and Schacker, T W and Ruff, L E and Price, D A and Taylor, J H and Beilman, G J and Nguyen, P L and Khoruts, A and Larson, M and Haase, A T and Douek, D C}, + pages = {749--759}, + volume = {200}, + doi = {10.1084/jem.20040874}, + issn = {0022-1007 (Print) 0022-1007 (Linking)}, + keywords = {Collagen/metabolism, Digestive System/*immunology/virology, Humans, Immunologic Memory, Lymph Nodes/immunology, Lymphocyte Activation, Receptors, {\{}CCR{\}}5/analysis, {\{}CD{\}}4-Positive T-Lymphocytes/*immunology, {\{}HIV{\}} Infections/etiology/*immunology} +} + +@article{herbeuval_cd4+_2005, + title = {{{\{}CD{\}}4+ T-cell death induced by infectious and noninfectious {\{}HIV{\}}-1: role of type 1 interferon-dependent, {\{}TRAIL{\}}/{\{}DR{\}}5-mediated apoptosis}}, + author = {Herbeuval, J P and Grivel, J C and Boasso, A and Hardy, A W and Chougnet, C and Dolan, M J and Yagita, H and Lifson, J D and Shearer, G M}, + pages = {3524--3531}, + volume = {106}, + doi = {10.1182/blood-2005-03-1243}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {Annexin A5/immunology, Antibodies/immunology/pharmacology, Apoptosis Regulatory Proteins/blood/*immunology, Apoptosis/drug effects/*immunology, Caspase 3, Caspases/immunology, Female, Humans, Interferon Type I/*immunology, Male, Membrane Glycoproteins/blood/*immunology, Receptors, Tumor Necrosis Factor-alpha/*immunology, Tumor Necrosis Factor/*immunology, {\{}CD{\}}4 Lymphocyte Count/methods, {\{}CD{\}}4-Positive T-Lymphocytes/*immunology/virology, {\{}CD{\}}8-Positive T-Lymphocytes/immunology, {\{}HIV{\}} Envelope Protein gp120/immunology, {\{}HIV{\}} Infections/blood/drug therapy/*immunology, {\{}HIV{\}}-1/*immunology, {\{}TNF{\}}-Related Apoptosis-Inducing Ligand} +} + +@article{rosen_chemgps-npweb:_2008, + title = {{{\{}ChemGPS{\}}-{\{}NP{\}}(Web): chemical space navigation online}}, + author = {Ros{\'{e}}n, Josefin and L{\"{o}}vgren, Anders and Kogej, Thierry and Muresan, Sorel and Gottfries, Johan and Backlund, Anders}, + pages = {253--259}, + volume = {23}, + doi = {10.1007/s10822-008-9255-y} +} + +@article{larsson_chemgps-np:_2007, + title = {{{\{}ChemGPS{\}}-{\{}NP{\}}: Tuned for Navigation in Biologically Relevant Chemical Space}}, + author = {Larsson, Josefin and Gottfries, Johan and Muresan, Sorel and Backlund, Anders}, + pages = {789--794}, + volume = {70}, + doi = {10.1021/np070002y} +} + +@article{backman_chemmine_2011, + title = {{{\{}ChemMine{\}} tools: an online service for analyzing and clustering small molecules.}}, + author = {Backman, Tyler W H and Cao, Yiqun and Girke, Thomas}, + pages = {W486--91}, + volume = {39}, + doi = {10.1093/nar/gkr320} +} + +@article{kim_kjaerulff_chemprot-2.0:_2012, + title = {{{\{}ChemProt{\}}-2.0: visual navigation in a disease chemical biology database.}}, + author = {Kim Kj{\ae}rulff, Sonny and Wich, Louis and Kringelum, Jens and Jacobsen, Ulrik P and Kouskoumvekaki, Irene and Audouze, Karine and Lund, Ole and Brunak, Søren and Oprea, Tudor I and Taboureau, Olivier}, + doi = {10.1093/nar/gks1166} +} + +@article{taboureau_chemprot:_2011, + title = {{{\{}ChemProt{\}}: a disease chemical biology database.}}, + author = {Taboureau, Olivier and Nielsen, Sonny Kim and Audouze, Karine and Weinhold, Nils and Edsg{\"{a}}rd, Daniel and Roque, Francisco S and Kouskoumvekaki, Irene and Bora, Alina and Curpan, Ramona and Jensen, Thomas Skøt and Brunak, Søren and Oprea, Tudor I}, + pages = {D367--72}, + volume = {39}, + doi = {10.1093/nar/gkq906} +} + +@article{gutlein_ches-mapper_2012, + title = {{{\{}CheS{\}}-Mapper - Chemical Space Mapping and Visualization in 3D.}}, + author = {Gutlein, Martin and Karwath, Andreas and Kramer, Stefan}, + pages = {7}, + volume = {4}, + doi = {10.1186/1758-2946-4-7} +} + +@article{li_dbac:_2011, + title = {{{\{}DBAC{\}}: A simple prediction method for protein binding hot spots based on burial levels and deeply buried atomic contacts}}, + author = {Li, Zhenhua and Wong, Limsoon and Li, Jinyan}, + pages = {S5}, + volume = {5 Suppl 1}, + doi = {10.1186/1752-0509-5-S1-S5}, + keywords = {{\{}PPI{\}} tool} +} + +@article{liu_dockground_2008-1, + title = {{{\{}DOCKGROUND{\}} protein-protein docking decoy set}}, + author = {Liu, S and Gao, Y and Vakser, I A}, + pages = {2634--2635}, + volume = {24}, + doi = {10.1093/bioinformatics/btn497}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)}, + keywords = {*Computational Biology, *Software, Ligands, Protein Binding, Protein Interaction Mapping/*methods, Proteins/*chemistry/*metabolism} +} + +@article{liu_dockground_2008, + title = {{{\{}DOCKGROUND{\}} protein-protein docking decoy set.}}, + author = {Liu, Shiyong and Gao, Ying and Vakser, Ilya A}, + pages = {2634--2635}, + volume = {24}, + doi = {10.1093/bioinformatics/btn497} +} + +@article{douguet_dockground_2006, + title = {{{\{}DOCKGROUND{\}} resource for studying protein-protein interfaces.}}, + author = {Douguet, Dominique and Chen, Huei-Chi and Tovchigrechko, Andrey and Vakser, Ilya A}, + pages = {2612--2618}, + volume = {22}, + doi = {10.1093/bioinformatics/btl447} +} + +@article{gao_dockground_2007, + title = {{{\{}DOCKGROUND{\}} system of databases for protein recognition studies: unbound structures for docking.}}, + author = {Gao, Ying and Douguet, Dominique and Tovchigrechko, Andrey and Vakser, Ilya A}, + pages = {845--851}, + volume = {69}, + doi = {10.1002/prot.21714} +} + +@article{kruger_drugscoreppi_2010, + title = {{{\{}DrugScorePPI{\}} webserver: fast and accurate in silico alanine scanning for scoring protein-protein interactions.}}, + author = {Kr{\"{u}}ger, Dennis M and Gohlke, Holger}, + pages = {W480--6}, + volume = {38}, + doi = {10.1093/nar/gkq471} +} + +@article{xie_expopindrugdiscov.xiang-qunseanxie.oct28.2010.exploiting_2010, + title = {{{\{}ExpOpinDrugDiscov{\}}.Xiang-{\{}QunSeanXie{\}}.Oct28.2010.Exploiting {\{}PubChem{\}} for virtual screening}}, + author = {Xie, Xiang-Qun Sean}, + pages = {1--16} +} + +@article{lagorce_faf-drugs3:_2015, + title = {{{\{}FAF{\}}-Drugs3: a web server for compound property calculation and chemical library design}}, + shorttitle = {{\{}FAF{\}}-Drugs3}, + author = {Lagorce, David and Sperandio, Olivier and Baell, Jonathan B and Miteva, Maria A and Villoutreix, Bruno O}, + number = {W1}, + pages = {W200--207}, + volume = {43}, + doi = {10.1093/nar/gkv353}, + issn = {1362-4962}, + pmid = {25883137}, + keywords = {Drug Discovery, Internet, Pharmaceutical Preparations, Pharmacokinetics, Software} +} + +@article{ngan_ftsite:_2012, + title = {{{\{}FTSite{\}}: high accuracy detection of ligand binding sites on unbound protein structures}}, + author = {Ngan, C H and Hall, D R and Zerbe, B and Grove, L E and Kozakov, D and Vajda, S}, + pages = {286--287}, + volume = {28}, + doi = {10.1093/bioinformatics/btr651}, + issn = {1367-4811 (Electronic) 1367-4803 (Linking)}, + keywords = {*Algorithms, *Ligands, Binding Sites, Biomolecular, Crystallography, Drug Design, Nuclear Magnetic Resonance, Proteins/*chemistry/*metabolism, Soybeans/enzymology, X-Ray, beta-Amylase/chemistry, {\{}HIV{\}} Protease/chemistry, {\{}HIV{\}}/enzymology} +} + +@article{ortuso_gbpm:_2006, + title = {{{\{}GBPM{\}}: {\{}GRID{\}}-based pharmacophore model: concept and application studies to protein-protein recognition}}, + author = {Ortuso, Francesco and Langer, Thierry and Alcaro, Stefano}, + pages = {1449--1455}, + volume = {22}, + doi = {10.1093/bioinformatics/btl115} +} + +@article{bergey_hippdb:_nodate, + title = {{{\{}HippDB{\}}: A database of readily targeted helical protein-protein interactions}}, + author = {Bergey, Christina M and Watkins, Andrew M and Arora, Paramjit S} +} + +@article{patil_hitpredict:_2011, + title = {{{\{}HitPredict{\}}: a database of quality assessed protein-protein interactions in nine species}}, + author = {Patil, Ashwini and Nakai, Kenta and Nakamura, Haruki}, + pages = {D744--9}, + volume = {39}, + doi = {10.1093/nar/gkq897} +} + +@article{ertl_iade:_2012, + title = {{{\{}IADE{\}}: a system for intelligent automatic design of bioisosteric analogs.}}, + author = {Ertl, Peter and Lewis, Richard}, + pages = {1207--1215}, + volume = {26}, + doi = {10.1007/s10822-012-9609-3} +} + +@article{gao_ialign:_2010, + title = {{{\{}iAlign{\}}: a method for the structural comparison of protein-protein interfaces.}}, + author = {Gao, Mu and Skolnick, Jeffrey}, + pages = {2259--2265}, + volume = {26}, + doi = {10.1093/bioinformatics/btq404} +} + +@article{mannhold_iap_2010, + title = {{{\{}IAP{\}} antagonists: promising candidates for cancer therapy}}, + author = {Mannhold, Raimund and Fulda, Simone and Carosati, Emanuele}, + pages = {210--219}, + volume = {15}, + doi = {10.1016/j.drudis.2010.01.003} +} + +@article{noauthor_idrugs_nodate, + title = {{{\{}iDrugs{\}} Article}} +} + +@article{weatheritt_ielm--web_2012, + title = {{{\{}iELM{\}}--a web server to explore short linear motif-mediated interactions}}, + author = {Weatheritt, R J and Jehl, P and Dinkel, H and Gibson, T J}, + doi = {10.1093/nar/gks444} +} + +@article{labbe_ippi-db:_2013, + title = {{{\{}iPPI{\}}-{\{}DB{\}}: a manually curated and interactive database of small non-peptide inhibitors of protein–protein interactions}}, + shorttitle = {{\{}iPPI{\}}-{\{}DB{\}}}, + author = {Labb{\'{e}}, Céline M and Laconde, Guillaume and Kuenemann, Mélaine A and Villoutreix, Bruno O and Sperandio, Olivier}, + number = {19}, + pages = {958--968}, + volume = {18}, + url = {http://www.sciencedirect.com/science/article/pii/S135964461300130X}, + doi = {10.1016/j.drudis.2013.05.003}, + issn = {1359-6446} +} + +@article{turner_irefweb:_2010, + title = {{{\{}iRefWeb{\}}: interactive analysis of consolidated protein interaction data and their supporting evidence}}, + author = {Turner, Brian and Razick, Sabry and Turinsky, Andrei L and Vlasblom, James and Crowdy, Edgard K and Cho, Emerson and Morrison, Kyle and Donaldson, Ian M and Wodak, Shoshana J}, + pages = {baq023}, + volume = {2010}, + doi = {10.1093/database/baq023} +} + +@article{izumikawa_jbir-22_2010, + title = {{{\{}JBIR{\}}-22, an inhibitor for protein-protein interaction of the homodimer of proteasome assembly factor 3}}, + author = {Izumikawa, Miho and Hashimoto, Junko and Hirokawa, Takatsugu and Sugimoto, Satoshi and Kato, Taira and Takagi, Motoki and Shin-Ya, Kazuo}, + pages = {628--631}, + volume = {73}, + doi = {10.1021/np900788e} +} + +@article{fischer_loft:_2010, + title = {{{\{}LoFT{\}}: Similarity-Driven Multiobjective Focused Library Design}}, + author = {Fischer, J Robert and Lessel, Uta and Rarey, Matthias}, + pages = {1--21}, + volume = {50}, + doi = {10.1021/ci900287p} +} + +@article{benjannet_loss-_2012, + title = {{{\{}LOSS{\}}- {\{}AND{\}} {\{}GAIN{\}}-{\{}OF{\}}-{\{}FUNCTION{\}} {\{}PCSK{\}}9 {\{}VARIANTS{\}}: {\{}CLEAVAGE{\}} {\{}SPECIFICITY{\}}, {\{}DOMINANT{\}} {\{}NEGATIVE{\}} {\{}EFFECTS{\}} {\{}AND{\}} {\{}LDLR{\}} {\{}DEGRADATION{\}}.}}, + author = {Benjannet, Suzanne and Hamelin, Josee and Chretien, Michel and Seidah, Nabil G}, + doi = {10.1074/jbc.M112.399725} +} + +@article{yu_lxtoo:_2012, + title = {{{\{}LXtoo{\}}: an integrated live Linux distribution for the bioinformatics community.}}, + author = {Yu, Guangchuang and Wang, Li-Gen and Meng, Xiao-Hua and He, Qing-Yu}, + pages = {360}, + volume = {5}, + doi = {10.1186/1756-0500-5-360} +} + +@article{gembarska_mdm4_2012, + title = {{{\{}MDM{\}}4 is a key therapeutic target in cutaneous melanoma}}, + author = {Gembarska, Agnieszka and Luciani, Flavie and Fedele, Clare and Russell, Elisabeth A and Dewaele, Michael and Villar, St eacute phanie and Zwolinska, Aleksandra and Haupt, Sue and de Lange, Job and Yip, Dana and Goydos, James and Haigh, Jody J and Haupt, Ygal and Larue, Lionel and Jochemsen, Aart and Shi, Hubing and Moriceau, Gatien and Lo, Roger S and Ghanem, Ghanem and Shackleton, Mark and Bernal, Federico and Marine, Jean-Christophe}, + pages = {1239--1247}, + volume = {18}, + doi = {10.1038/nm.2863} +} + +@article{huang_metapocket:_2009, + title = {{{\{}MetaPocket{\}}: a meta approach to improve protein ligand binding site prediction}}, + author = {Huang, B}, + pages = {325--330}, + volume = {13}, + doi = {10.1089/omi.2009.0045}, + issn = {1557-8100 (Electronic) 1536-2310 (Linking)}, + keywords = {*Software, Algorithms, Binding Sites, Computational Biology/methods, Databases, Ligands, Models, Molecular, Protein, Protein Binding, Protein Interaction Mapping/*methods, Protein/methods, Proteins/*chemistry, Sequence Analysis} +} + +@article{feuerhake_nfkappab_2005, + title = {{{\{}NFkappaB{\}} activity, function, and target-gene signatures in primary mediastinal large B-cell lymphoma and diffuse large B-cell lymphoma subtypes}}, + author = {Feuerhake, F and Kutok, J L and Monti, S and Chen, W and LaCasce, A S and Cattoretti, G and Kurtin, P and Pinkus, G S and de Leval, L and Harris, N L and Savage, K J and Neuberg, D and Habermann, T M and Dalla-Favera, R and Golub, T R and Aster, J C and Shipp, M A}, + pages = {1392--1399}, + volume = {106}, + doi = {10.1182/blood-2004-12-4901}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {*Gene Expression Regulation, Apoptosis, B-Cell/*pathology, Cell Line, Diffuse/*pathology, Gene Expression Profiling, Humans, Large B-Cell, Lymphoma, Mediastinal Neoplasms/*pathology, Neoplastic, Proto-Oncogene Proteins c-rel/*genetics/metabolis, Tumor, {\{}NF{\}}-kappa B/genetics/metabolism/*physiology} +} + +@article{gochin_nmr-assisted_2013, + title = {{{\{}NMR{\}}-assisted computational studies of peptidomimetic inhibitors bound in the hydrophobic pocket of {\{}HIV{\}}-1 glycoprotein 41.}}, + author = {Gochin, Miriam and Whitby, Landon R and Phillips, Aaron H and Boger, Dale L}, + doi = {10.1007/s10822-013-9662-6} +} + +@article{segura_pcrpi-db:_2011, + title = {{{\{}PCRPi{\}}-{\{}DB{\}}: a database of computationally annotated hot spots in protein interfaces}}, + author = {Segura, Joan and Fernandez-Fuentes, Narcis}, + pages = {D755--60}, + volume = {39}, + doi = {10.1093/nar/gkq1068}, + keywords = {{\{}PPI{\}} tool} +} + +@article{velankar_pdbe:_2010, + title = {{{\{}PDBe{\}}: Protein Data Bank in Europe}}, + shorttitle = {PDBe}, + author = {Velankar, S and Best, C and Beuth, B and Boutselakis, C H and Cobley, N and Silva, Sousa Da and W, A and Dimitropoulos, D and Golovin, A and Hirshberg, M and John, M and Krissinel, E B and Newman, R and Oldfield, T and Pajon, A and Penkett, C J and Pineda-Castillo, J and Sahni, G and Sen, S and Slowley, R and Suarez-Uruena, A and Swaminathan, J and van Ginkel, G and Vranken, W F and Henrick, K and Kleywegt, G J}, + number = {suppl{\_}1}, + pages = {D308--D317}, + volume = {38}, + url = {https://academic.oup.com/nar/article/38/suppl_1/D308/3112264/PDBe-Protein-Data-Bank-in-Europe}, + doi = {10.1093/nar/gkp916}, + issn = {0305-1048} +} + +@article{joosten_pdb_redo:_2009, + title = {{{\{}PDB{\}}{\_}REDO: automated re-refinement of X-ray structure models in the {\{}PDB{\}}}}, + shorttitle = {{\{}PDB{\}}{\_}REDO}, + author = {Joosten, Robbie P and Salzemann, Jean and Bloch, Vincent and Stockinger, Heinz and Berglund, Ann-Charlott and Blanchet, Christophe and Bongcam-Rudloff, Erik and Combet, Christophe and Da Costa, Ana L and Deleage, Gilbert and Diarena, Matteo and Fabbretti, Roberto and Fettahi, Géraldine and Flegel, Volker and Gisel, Andreas and Kasam, Vinod and Kervinen, Timo and Korpelainen, Eija and Mattila, Kimmo and Pagni, Marco and Reichstadt, Matthieu and Breton, Vincent and Tickle, Ian J and Vriend, Gert}, + number = {Pt 3}, + pages = {376--384}, + volume = {42}, + doi = {10.1107/S0021889809008784}, + issn = {0021-8898}, + pmid = {22477769} +} + +@article{mendes_pdz_2011, + title = {{{\{}PDZ{\}} Dimerization Brings Proteins Together.}}, + author = {Mendes, Kimberly and Kodadek, Thomas}, + pages = {1071--1072}, + volume = {18}, + doi = {10.1016/j.chembiol.2011.09.001} +} + +@article{vanhee_pepx:_2010, + title = {{{\{}PepX{\}}: a structural database of non-redundant protein-peptide complexes}}, + author = {Vanhee, Peter and Reumers, Joke and Stricher, Francois and Baeten, Lies and Serrano, Luis and Schymkowitz, Joost and Rousseau, Frederic}, + pages = {D545--51}, + volume = {38}, + doi = {10.1093/nar/gkp893} +} + +@article{noauthor_pii:_2011, + title = {{{\{}PII{\}}: S0960-894X(02)00991-5}}, + pages = {1--4} +} + +@misc{tan_pmid20202892-supp_2010, + title = {{{\{}PMID{\}}20202892-supp}}, + author = {Tan, Derek S} +} + +@article{koes_pocketquery:_2012, + title = {{{\{}PocketQuery{\}}: protein-protein interaction inhibitor starting points from protein-protein interaction structure.}}, + author = {Koes, David Ryan and Camacho, Carlos J}, + pages = {W387--92}, + volume = {40}, + doi = {10.1093/nar/gks336} +} + +@article{raja_ppinterfinder--mining_2013, + title = {{{\{}PPInterFinder{\}}--a mining tool for extracting causal relations on human proteins from literature.}}, + author = {Raja, Kalpana and Subramani, Suresh and Natarajan, Jeyakumar}, + pages = {bas052}, + volume = {2013}, + doi = {10.1093/database/bas052} +} + +@article{zhang_preppi:_2013-1, + title = {{{\{}PrePPI{\}}: a structure-informed database of protein-protein interactions}}, + shorttitle = {PrePPI}, + author = {Zhang, Qiangfeng Cliff and Petrey, Donald and Garz{\'{o}}n, José Ignacio and Deng, Lei and Honig, Barry}, + number = {Database issue}, + pages = {D828--833}, + volume = {41}, + doi = {10.1093/nar/gks1231}, + issn = {1362-4962}, + pmid = {23193263}, + keywords = {Bayes Theorem, Databases, Humans, Internet, Multiprotein Complexes, Protein, Protein Conformation, Protein Interaction Mapping, User-Computer Interface} +} + +@article{zhang_preppi:_2013, + title = {{{\{}PrePPI{\}}: a structure-informed database of protein-protein interactions.}}, + author = {Zhang, Qiangfeng Cliff and Petrey, Donald and Garz{\'{o}}n, José Ignacio and Deng, Lei and Honig, Barry}, + pages = {D828--33}, + volume = {41}, + doi = {10.1093/nar/gks1231} +} + +@article{guharoy_price_2011, + title = {{{\{}PRICE{\}} ({\{}PRotein{\}} Interface Conservation and Energetics): a server for the analysis of protein-protein interfaces}}, + author = {Guharoy, Mainak and Pal, Arumay and Dasgupta, Maitrayee and Chakrabarti, Pinak}, + pages = {33--41}, + volume = {12}, + doi = {10.1007/s10969-011-9108-0}, + keywords = {{\{}PPI{\}}, {\{}PPI{\}} tool} +} + +@article{gerega_proximo--new_2006, + title = {{{\{}PROXIMO{\}}--a new docking algorithm to model protein complexes using data from radical probe mass spectrometry ({\{}RP{\}}-{\{}MS{\}})}}, + author = {Gerega, Sebastien K and Downard, Kevin M}, + pages = {1702--1709}, + volume = {22}, + doi = {10.1093/bioinformatics/btl178} +} + +@article{li_pubchem_2010, + title = {{{\{}PubChem{\}} as a public resource for drug discovery.}}, + author = {Li, Qingliang and Cheng, Tiejun and Wang, Yanli and Bryant, Stephen H}, + pages = {1052--1057}, + volume = {15}, + doi = {10.1016/j.drudis.2010.10.003} +} + +@article{Gwak2012SmallDifferentiation, + title = {{Small molecule-based disruption of the Axin/B-catenin protein complex regulates mesenchymal stem cell differentiation}}, + year = {2012}, + journal = {Cell Research}, + author = {Gwak, Jungsug and Hwang, Sun Gwan and Park, Hyung Soon and Choi, Sang Rak and Park, Sun Hee and Kim, Hyunjoon and Ha, Nam Chul and Bae, Sung Jin and Han, Jin Kwan and Kim, Dong Eun and Cho, Jeong Woo and Oh, Sangtaek}, + number = {1}, + pages = {237--247}, + volume = {22}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/cr.2011.127}, + doi = {10.1038/cr.2011.127}, + issn = {10010602}, + keywords = {-Catenin complex, Axin/{$\beta$}, Mesenchymal stem cell, Small molecule, Wnt pathway} +} + +@article{Newman2008SmallInterface, + title = {{Small molecules and chemical tools at the interface}}, + year = {2008}, + journal = {Nature Chemical Biology}, + author = {Newman, Robert H. and Zhang, Jin}, + number = {7}, + pages = {382--386}, + volume = {4}, + doi = {10.1038/nchembio0708-382}, + issn = {15524469} +} + +@article{Noberini2008SmallReceptors, + title = {{Small molecules can selectively inhibit ephrin binding to the EphA4 and EphA2 receptors}}, + year = {2008}, + journal = {Journal of Biological Chemistry}, + author = {Noberini, Roberta and Koolpe, Mitchell and Peddibhotla, Satyamaheshwar and Dahl, Russell and Su, Ying and Cosford, Nicholas D.P. and Roth, Gregory P. and Pasquale, Elena B.}, + number = {43}, + pages = {29461--29472}, + volume = {283}, + doi = {10.1074/jbc.M804103200}, + issn = {00219258} +} + +@article{Mori2013SmallInteractions, + title = {{Small molecules modulation of 14-3-3 protein-protein interactions}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Mori, Mattia and Vignaroli, Giulia and Botta, Maurizio}, + number = {4}, + pages = {e541-e547}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2012.10.001}, + doi = {10.1016/j.ddtec.2012.10.001}, + issn = {17406749} +} + +@article{DeLuca2010SmallCofactor, + title = {{Small molecules targeting the interaction between HIV-1 integrase and LEDGF/p75 cofactor}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {De Luca, Laura and Ferro, Stefania and Gitto, Rosaria and Barreca, Maria Letizia and Agnello, Stefano and Christ, Frauke and Debyser, Zeger and Chimirri, Alba}, + number = {21}, + pages = {7515--7521}, + volume = {18}, + doi = {10.1016/j.bmc.2010.08.051}, + issn = {09680896}, + keywords = {GRID, HIV-1 integrase, LEDGF/p75, Molecular docking, Protein-protein interactions} +} + +@misc{Scott2016SmallChallenge, + title = {{Small molecules, big targets: Drug discovery faces the protein-protein interaction challenge}}, + year = {2016}, + booktitle = {Nature Reviews Drug Discovery}, + author = {Scott, Duncan E. and Bayly, Andrew R. and Abell, Chris and Skidmore, John}, + doi = {10.1038/nrd.2016.29}, + issn = {14741784}, + pmid = {27050677} +} + +@article{Wang2013Small-moleculeCells, + title = {{Small-molecule activation of the TRAIL receptor DR5 in human cancer cells}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Wang, Gelin and Wang, Xiaoming and Yu, Hong and Wei, Shuguang and Williams, Noelle and Holmes, Daniel L. and Halfmann, Randal and Naidoo, Jacinth and Wang, Lai and Li, Lin and Chen, She and Harran, Patrick and Lei, Xiaoguang and Wang, Xiaodong}, + number = {2}, + pages = {84--89}, + volume = {9}, + doi = {10.1038/nchembio.1153}, + issn = {15524450} +} + +@article{Wang2013Small-moleculeCellsb, + title = {{Small-molecule activation of the TRAIL receptor DR5 in human cancer cells}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Wang, Gelin and Wang, Xiaoming and Yu, Hong and Wei, Shuguang and Williams, Noelle and Holmes, Daniel L. and Halfmann, Randal and Naidoo, Jacinth and Wang, Lai and Li, Lin and Chen, She and Harran, Patrick and Lei, Xiaoguang and Wang, Xiaodong}, + number = {2}, + pages = {84--89}, + volume = {9}, + doi = {10.1038/nchembio.1153}, + issn = {15524450} +} + +@article{Wang2013Small-moleculeCellsc, + title = {{Small-molecule activation of the TRAIL receptor DR5 in human cancer cells}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Wang, Gelin and Wang, Xiaoming and Yu, Hong and Wei, Shuguang and Williams, Noelle and Holmes, Daniel L. and Halfmann, Randal and Naidoo, Jacinth and Wang, Lai and Li, Lin and Chen, She and Harran, Patrick and Lei, Xiaoguang and Wang, Xiaodong}, + number = {2}, + pages = {84--89}, + volume = {9}, + doi = {10.1038/nchembio.1153}, + issn = {15524450} +} + +@article{Bieschke2012Small-moleculeFibrils, + title = {{Small-molecule conversion of toxic oligomers to nontoxic {$\beta$}-sheetg-rich amyloid fibrils}}, + year = {2012}, + journal = {Nature Chemical Biology}, + author = {Bieschke, Jan and Herbst, Martin and Wiglenda, Thomas and Friedrich, Ralf P. and Boeddrich, Annett and Schiele, Franziska and Kleckers, Daniela and Lopez Del Amo, Juan Miguel and Gr{\"{u}}ning, Björn A. and Wang, Qinwen and Schmidt, Michael R. and Lurz, Rudi and Anwyl, Roger and Schnoegl, Sigrid and F{\"{a}}ndrich, Marcus and Frank, Ronald F. and Reif, Bernd and G{\"{u}}nther, Stefan and Walsh, Dominic M. and Wanker, Erich E.}, + number = {1}, + pages = {93--101}, + volume = {8}, + doi = {10.1038/nchembio.719}, + issn = {15524469} +} + +@article{Margolles-Clark2009Small-moleculeInteraction, + title = {{Small-molecule costimulatory blockade: Organic dye inhibitors of the CD40-CD154 interaction}}, + year = {2009}, + journal = {Journal of Molecular Medicine}, + author = {Margolles-Clark, Emilio and Umland, Oliver and Kenyon, Norma S. and Ricordi, Camillo and Buchwald, Peter}, + number = {11}, + pages = {1133--1143}, + volume = {87}, + doi = {10.1007/s00109-009-0519-3}, + issn = {09462716}, + keywords = {Azo dyes, CD40L, Direct red 80, Immune suppression, Protein-protein interaction, THP-1 cells} +} + +@article{Senisterra2013Small-moleculeWDR5, + title = {{Small-molecule inhibition of MLL activity by disruption of its interaction with WDR5}}, + year = {2013}, + journal = {Biochemical Journal}, + author = {Senisterra, Guillermo and Wu, Hong and Allali-Hassani, Abdellah and Wasney, Gregory A. and Barsyte-Lovejoy, Dalia and Dombrovski, Ludmila and Dong, Aiping and Nguyen, Kong T. and Smil, David and Bolshan, Yuri and Hajian, Taraneh and He, Hao and Seitova, Alma and Chau, Irene and Li, Fengling and Poda, Gennadiy and Couture, Jean François and Brown, Peter J. and Al-Awar, Rima and Schapira, Matthieu and Arrowsmith, Cheryl H. and Vedadi, Masoud}, + number = {1}, + pages = {151--159}, + volume = {449}, + doi = {10.1042/BJ20121280}, + issn = {02646021}, + keywords = {Histone methyltransferase, Leukaemia, Mixed-lineage leukemia protein (MLL), WD40 repeat protein 5 (WDR5)} +} + +@article{Moerke2007Small-MoleculeEIF4G, + title = {{Small-Molecule Inhibition of the Interaction between the Translation Initiation Factors eIF4E and eIF4G}}, + year = {2007}, + journal = {Cell}, + author = {Moerke, Nathan J. and Aktas, Huseyin and Chen, Han and Cantel, Sonia and Reibarkh, Mikhail Y. and Fahmy, Amr and Gross, John D D. and Degterev, Alexei and Yuan, Junying and Chorev, Michael and Halperin, Jose A. and Wagner, Gerhard}, + number = {2}, + pages = {257--267}, + volume = {128}, + doi = {10.1016/j.cell.2006.11.046}, + issn = {00928674} +} + +@article{Koes2012Small-moleculeStructure, + title = {{Small-molecule inhibitor starting points learned from protein-protein interaction inhibitor structure}}, + year = {2012}, + journal = {Bioinformatics}, + author = {Koes, David Ryan and Camacho, Carlos J.}, + number = {6}, + pages = {784--791}, + volume = {28}, + doi = {10.1093/bioinformatics/btr717}, + issn = {13674803} +} + +@article{Arkin2014Small-moleculeReality, + title = {{Small-molecule inhibitors of protein-protein interactions: progressing toward the reality}}, + year = {2014}, + journal = {Chemistry {\&} Biology}, + author = {Arkin, Michelle R. and Tang, Yinyan and Wells, James A.}, + number = {9}, + month = {9}, + pages = {1102--1114}, + volume = {21}, + doi = {10.1016/j.chembiol.2014.09.001}, + issn = {1879-1301}, + language = {ENG} +} + +@article{Hardcastle2006Small-moleculeScaffold, + title = {{Small-molecule inhibitors of the MDM2-p53 protein-protein interaction based on an isoindolinone scaffold}}, + year = {2006}, + journal = {Journal of Medicinal Chemistry}, + author = {Hardcastle, Ian R. and Ahmed, Shafiq U. and Atkins, Helen and Farnie, Gillian and Golding, Bernard T. and Griffin, Roger J. and Guyenne, Sabrina and Hutton, Claire and K{\"{a}}llblad, Per and Kemp, Stuart J. and Kitching, Martin S. and Newell, David R. and Norbedo, Stefano and Northen, Julian S. and Reid, Rebecca J. and Saravanan, K. and Willems, Henriëtte M.G. and Lunec, John}, + number = {21}, + pages = {6209--6221}, + volume = {49}, + doi = {10.1021/jm0601194}, + issn = {00222623} +} + +@article{Fletcher2015Small-moleculeOncoprotein, + title = {{Small-molecule inhibitors of the Myc oncoprotein}}, + year = {2015}, + journal = {Biochimica et Biophysica Acta - Gene Regulatory Mechanisms}, + author = {Fletcher, Steven and Prochownik, Edward V.}, + number = {5}, + pages = {525--543}, + volume = {1849}, + publisher = {Elsevier B.V.}, + url = {http://dx.doi.org/10.1016/j.bbagrm.2014.03.005}, + doi = {10.1016/j.bbagrm.2014.03.005}, + issn = {18764320}, + keywords = {Cancer, Max, Myc, Protein-protein interaction, Small-molecule inhibitor, Transcription factor} +} + +@article{Patel2008Small-moleculeCancer, + title = {{Small-molecule inhibitors of the p53-HDM2 interaction for the treatment of cancer}}, + year = {2008}, + journal = {Expert Opinion on Investigational Drugs}, + author = {Patel, Sharmila and Player, Mark R.}, + number = {12}, + pages = {1865--1882}, + volume = {17}, + isbn = {1354378080249}, + doi = {10.1517/13543780802493366}, + issn = {13543784}, + keywords = {HDM2, MDM2, Protein-protein interaction, p53} +} + +@article{Herold2011Small-moleculeProteins, + title = {{Small-molecule ligands of methyl-lysine binding proteins}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Herold, J. Martin and Wigle, Tim J. and Norris, Jacqueline L. and Lam, Robert and Korboukh, Victoria K. and Gao, Cen and Ingerman, Lindsey A. and Kireev, Dmitri B. and Senisterra, Guillermo and Vedadi, Masoud and Tripathy, Ashutosh and Brown, Peter J. and Arrowsmith, Cheryl H. and Jin, Jian and Janzen, William P. and Frye, Stephen V.}, + number = {7}, + pages = {2504--2511}, + volume = {54}, + doi = {10.1021/jm200045v}, + issn = {00222623} +} + +@article{Ottmann2013Small-moleculeInteractions, + title = {{Small-molecule modulation of protein-protein interactions}}, + year = {2013}, + journal = {Drug Discovery Today: Technologies}, + author = {Ottmann, Christian}, + number = {4}, + pages = {e499-e500}, + volume = {10}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.ddtec.2013.08.001}, + doi = {10.1016/j.ddtec.2013.08.001}, + issn = {17406749} +} + +@article{Wang2013Small-moleculeInteraction, + title = {{Small-molecule modulation of Wnt signaling via modulating the Axin-LRP5/6 interaction}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Wang, Sheng and Yin, Junlin and Chen, Duozhi and Nie, Fen and Song, Xiaomin and Fei, Cong and Miao, Haofei and Jing, Changbin and Ma, Wenjing and Wang, Lei and Xie, Sichun and Li, Chen and Zeng, Rong and Pan, Weijun and Hao, Xiaojiang and Li, Lin}, + number = {9}, + pages = {579--587}, + volume = {9}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nchembio.1309}, + doi = {10.1038/nchembio.1309}, + issn = {15524450} +} + +@article{Wang2013Small-moleculeInteractionb, + title = {{Small-molecule modulation of Wnt signaling via modulating the Axin-LRP5/6 interaction}}, + year = {2013}, + journal = {Nature Chemical Biology}, + author = {Wang, Sheng and Yin, Junlin and Chen, Duozhi and Nie, Fen and Song, Xiaomin and Fei, Cong and Miao, Haofei and Jing, Changbin and Ma, Wenjing and Wang, Lei and Xie, Sichun and Li, Chen and Zeng, Rong and Pan, Weijun and Hao, Xiaojiang and Li, Lin}, + number = {9}, + pages = {579--587}, + volume = {9}, + doi = {10.1038/nchembio.1309}, + issn = {15524450} +} + +@article{Buchwald2010Small-moleculeConsiderations, + title = {{Small-molecule protein-protein interaction inhibitors: Therapeutic potential in light of molecular size, chemical space, and ligand binding efficiency considerations}}, + year = {2010}, + journal = {IUBMB Life}, + author = {Buchwald, Peter}, + number = {10}, + pages = {724--731}, + volume = {62}, + doi = {10.1002/iub.383}, + issn = {15216543}, + keywords = {drug discovery, druggability, ligand efficiency, molecular size, protein binding} +} + +@article{Burslem2014Small-moleculeInteraction, + title = {{Small-molecule proteomimetic inhibitors of the HIF-1{$\alpha$}-p300 protein-protein interaction}}, + year = {2014}, + journal = {ChemBioChem}, + author = {Burslem, George M. and Kyle, Hannah F. and Breeze, Alexander L. and Edwards, Thomas A. and Nelson, Adam and Warriner, Stuart L. and Wilson, Andrew J.}, + number = {8}, + pages = {1083--1087}, + volume = {15}, + doi = {10.1002/cbic.201400009}, + issn = {14397633}, + keywords = {helix mimetics, hypoxia, inhibitors, peptidomimetics, protein-protein interactions} +} + +@article{Thiel2012Small-moleculeDiscovery, + title = {{Small-molecule stabilization of protein-protein interactions: An underestimated concept in drug discovery?}}, + year = {2012}, + journal = {Angewandte Chemie - International Edition}, + author = {Thiel, Philipp and Kaiser, Markus and Ottmann, Christian}, + number = {9}, + month = {3}, + pages = {2012--2018}, + volume = {51}, + doi = {10.1002/anie.201107616}, + issn = {14337851}, + keywords = {drug design, modulation, protein-protein interaction, small-molecule drugs, stabilization}, + language = {English} +} + +@article{Schwartz2013SMIfpMolecules, + title = {{SMIfp (SMILES fingerprint) chemical space for virtual screening and visualization of large databases of organic molecules}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Schwartz, Julian and Awale, Mahendra and Reymond, Jean Louis}, + number = {8}, + pages = {1979--1989}, + volume = {53}, + doi = {10.1021/ci400206h}, + issn = {15499596} +} + +@article{Probst2018SmilesDrawer:JavaScript, + title = {{SmilesDrawer: Parsing and Drawing SMILES-Encoded Molecular Structures Using Client-Side JavaScript}}, + year = {2018}, + journal = {Journal of Chemical Information and Modeling}, + author = {Probst, Daniel and Reymond, Jean Louis}, + number = {1}, + pages = {1--7}, + volume = {58}, + doi = {10.1021/acs.jcim.7b00425}, + issn = {15205142} +} + +@article{Fischer2016SPLINTS:Stabilizers, + title = {{SPLINTS: Small-molecule protein ligand interface stabilizers}}, + year = {2016}, + journal = {Current Opinion in Structural Biology}, + author = {Fischer, Eric S. and Park, Eunyoung and Eck, Michael J. and Thom{\"{a}}, Nicolas H.}, + pages = {115--122}, + volume = {37}, + doi = {10.1016/j.sbi.2016.01.004}, + issn = {1879033X} +} + +@misc{Zarzycka2016StabilizationMolecules, + title = {{Stabilization of protein-protein interaction complexes through small molecules}}, + year = {2016}, + booktitle = {Drug Discovery Today}, + author = {Zarzycka, Barbara and Kuenemann, Mélaine A. and Miteva, Maria A. and Nicolaes, Gerry A.F. and Vriend, Gert and Sperandio, Olivier}, + number = {1}, + pages = {48--57}, + volume = {21}, + isbn = {1359-6446}, + doi = {10.1016/j.drudis.2015.09.011}, + issn = {18785832}, + pmid = {26434617} +} + +@article{Zarzycka2016StabilizationMoleculesb, + title = {{Stabilization of protein-protein interaction complexes through small molecules}}, + year = {2016}, + journal = {Drug Discovery Today}, + author = {Zarzycka, Barbara and Kuenemann, Mélaine A. and Miteva, Maria A. and Nicolaes, Gerry A.F. and Vriend, Gert and Sperandio, Olivier}, + number = {1}, + pages = {48--57}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.drudis.2015.09.011}, + doi = {10.1016/j.drudis.2015.09.011}, + issn = {18785832} +} + +@article{Giordanetto2014StabilizationMolecules, + title = {{Stabilization of protein-protein interactions by small molecules}}, + year = {2014}, + journal = {Drug Discovery Today}, + author = {Giordanetto, Fabrizio and Sch{\"{a}}fer, Anja and Ottmann, Christian}, + number = {11}, + month = {11}, + pages = {1812--1821}, + volume = {19}, + doi = {10.1016/j.drudis.2014.08.005}, + issn = {1878-5832}, + language = {eng} +} + +@article{Jiang2009StabilizersFunction, + title = {{Stabilizers of the Max homodimer identified in virtual ligand screening inhibit Myc function}}, + year = {2009}, + journal = {Molecular Pharmacology}, + author = {Jiang, Hao and Bower, Kristen E. and Beuscher, Albert E. and Zhou, Bin and Bobkov, Andrey A. and Olson, Arthur J. and Vogt, Peter K.}, + number = {3}, + month = {9}, + pages = {491--502}, + volume = {76}, + doi = {10.1124/mol.109.054858}, + issn = {1521-0111}, + language = {eng} +} + +@article{Chang2013StapledTherapy, + title = {{Stapled {$\alpha$}-helical peptide drug development: A potent dual inhibitor of MDM2 and MDMX for p53-dependent cancer therapy}}, + year = {2013}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Chang, Yong S. and Graves, Bradford and Guerlavais, Vincent and Tovar, Christian and Packman, Kathryn and To, Kwong Him and Olson, Karen A. and Kesavan, Kamala and Gangurde, Pranoti and Mukherjee, Aditi and Baker, Theresa and Darlak, Krzysztof and Elkin, Carl and Filipovic, Zoran and Qureshi, Farooq Z. and Cai, Hongliang and Berry, Pamela and Feyfant, Eric and Shi, Xiangguo E. and Horstick, James and Annis, D. Allen and Manning, Anthony M. and Fotouhi, Nader and Nash, Huw and Vassilev, Lyubomir T. and Sawyer, Tomi K.}, + number = {36}, + volume = {110}, + doi = {10.1073/pnas.1303002110}, + issn = {00278424} +} + +@misc{Cockerill2019StateDevelopment, + title = {{State of the Art in Respiratory Syncytial Virus Drug Discovery and Development}}, + year = {2019}, + booktitle = {Journal of Medicinal Chemistry}, + author = {Cockerill, G. Stuart and Good, James A.D. and Mathews, Neil}, + doi = {10.1021/acs.jmedchem.8b01361}, + issn = {15204804} +} + +@article{Virshup2013StochasticCompounds, + title = {{Stochastic voyages into uncharted chemical space produce a representative library of all possible drug-like compounds}}, + year = {2013}, + journal = {Journal of the American Chemical Society}, + author = {Virshup, Aaron M. and Contreras-Garc{\'{i}}a, Julia and Wipf, Peter and Yang, Weitao and Beratan, David N.}, + number = {19}, + pages = {7296--7303}, + volume = {135}, + doi = {10.1021/ja401184g}, + issn = {00027863} +} + +@article{Shi2017StrainPlates, + title = {{Strain Library Imaging Protocol for high-throughput, automated single-cell microscopy of large bacterial collections arrayed on multiwell plates}}, + year = {2017}, + journal = {Nature Protocols}, + author = {Shi, Handuo and Colavin, Alexandre and Lee, Timothy K. and Huang, Kerwyn Casey}, + doi = {10.1038/nprot.2016.181}, + issn = {17502799} +} + +@article{Shi2017StrainPlatesb, + title = {{Strain Library Imaging Protocol for high-throughput, automated single-cell microscopy of large bacterial collections arrayed on multiwell plates}}, + year = {2017}, + journal = {Nature Protocols}, + author = {Shi, Handuo and Colavin, Alexandre and Lee, Timothy K. and Huang, Kerwyn Casey}, + number = {2}, + month = {2}, + pages = {429--438}, + volume = {12}, + publisher = {Nature Publishing Group}, + doi = {10.1038/nprot.2016.181}, + issn = {17502799} +} + +@article{Yin2005StrategiesAgents, + title = {{Strategies for targeting protein-protein interactions with synthetic agents}}, + year = {2005}, + journal = {Angewandte Chemie - International Edition}, + author = {Yin, Hang and Hamilton, Andrew D.}, + number = {27}, + pages = {4130--4163}, + volume = {44}, + doi = {10.1002/anie.200461786}, + issn = {14337851}, + keywords = {Inhibitors, Molecular recognition, Peptidomimetics, Protein-protein interactions, Rational design} +} + +@article{Block2007StrategiesStudy, + title = {{Strategies to search and design stabilizers of protein-protein interactions: a feasibility study}}, + year = {2007}, + journal = {Proteins: Structure, Function, and Bioinformatics}, + author = {Block, Peter and Weskamp, Nils and Wolf, Alexander and Klebe, Gerhard}, + month = {7}, + pages = {170--186}, + volume = {68}, + doi = {10.1002/prot.21296}, + language = {eng} +} + +@article{Franceschini2013STRINGIntegration, + title = {{STRING v9.1: Protein-protein interaction networks, with increased coverage and integration}}, + year = {2013}, + journal = {Nucleic Acids Research}, + author = {Franceschini, Andrea and Szklarczyk, Damian and Frankild, Sune and Kuhn, Michael and Simonovic, Milan and Roth, Alexander and Lin, Jianyi and Minguez, Pablo and Bork, Peer and Von Mering, Christian and Jensen, Lars J.}, + number = {D1}, + pages = {808--815}, + volume = {41}, + doi = {10.1093/nar/gks1094}, + issn = {03051048}, + pmid = {23203871} +} + +@article{Kureisaite-Ciziene2018StructuralFTSB, + title = {{Structural analysis of the interaction between the bacterial cell division proteins FTSQ and FTSB}}, + year = {2018}, + journal = {mBio}, + author = {Kureisaite-Ciziene, Danguole and Varadajan, Aravindan and McLaughlin, Stephen H. and Glas, Marjolein and Silva, Alejandro Montón and Luirink, Rosa and Mueller, Carolin and Blaauwen, Tanneke Den and Grossmann, Tom N. and Luirink, Joen and L{\"{o}}we, Jan}, + doi = {10.1128/mBio.01346-18}, + issn = {21507511}, + pmid = {30206170}, + keywords = {Bacterial cell division, Biochemistry, Divisome, FTSL, FTSN, Molecular microbiology, Periplasm, Protein structure-function, X-ray crystallography} +} + +@article{Liu2000StructuralDomain, + title = {{Structural basis for binding of Smac/DIABLO to the XIAP BIR3 domain}}, + year = {2000}, + journal = {Nature}, + author = {Liu, Zhihong and Sun, Chaohong and Olejniczak, Edward T. and Meadows, Robert P. and Betz, Stephen F. and Oost, Thorsten and Herrmann, Julia and Wu, Joe C. and Fesik, Stephen W.}, + number = {6815}, + pages = {1004--1008}, + volume = {408}, + doi = {10.1038/35050006}, + issn = {00280836} +} + +@article{Pazgier2009StructuralMDMX, + title = {{Structural basis for high-affinity peptide inhibition of p53 interactions with MDM2 and MDMX}}, + year = {2009}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Pazgier, Marzena and Liu, Min and Zou, Guozhang and Yuan, Weirong and Li, Changqing and Li, Chong and Li, Jing and Monbo, Juahdi and Zella, Davide and Tarasov, Sergey G. and Lu, Wuyuan}, + number = {12}, + pages = {4665--4670}, + volume = {106}, + doi = {10.1073/pnas.0900947106}, + issn = {00278424}, + pmid = {19255450} +} + +@article{Shang2020StructuralSARS-CoV-2, + title = {{Structural basis of receptor recognition by SARS-CoV-2}}, + year = {2020}, + journal = {Nature}, + author = {Shang, Jian and Ye, Gang and Shi, Ke and Wan, Yushun and Luo, Chuming and Aihara, Hideki and Geng, Qibin and Auerbach, Ashley and Li, Fang}, + url = {https://doi.org/10.1038/s41586-020-2179-y}, + doi = {10.1038/s41586-020-2179-y}, + issn = {1476-4687} +} + +@article{Sivaraman2020StructuralTherapeutics., + title = {{Structural Basis of the SARS-CoV-2/SARS-CoV Receptor Binding and Small-Molecule Blockers as Potential Therapeutics.}}, + year = {2020}, + journal = {Annual review of pharmacology and toxicology}, + author = {Sivaraman, Hariharan and Yin, Er Shi and Choong, Yeu Khai and Gavor, Edem and Sivaraman, J}, + month = {6}, + publisher = { Annual Reviews }, + url = {http://www.ncbi.nlm.nih.gov/pubmed/32574109}, + doi = {10.1146/annurev-pharmtox-061220-093932}, + issn = {1545-4304}, + pmid = {32574109} +} + +@article{Khanna2011StructuralApproach, + title = {{Structural diversity of biologically interesting datasets: A scaffold analysis approach}}, + year = {2011}, + journal = {Journal of Cheminformatics}, + author = {Khanna, Varun and Ranganathan, Shoba}, + number = {8}, + volume = {3}, + doi = {10.1186/1758-2946-3-30}, + issn = {17582946} +} + +@article{Shi2012StructuralLeukemia, + title = {{Structural insights into inhibition of the bivalent menin-MLL interaction by small molecules in leukemia}}, + year = {2012}, + journal = {Blood}, + author = {Shi, Aibin and Murai, Marcelo J. and He, Shihan and Lund, George and Hartley, Thomas and Purohit, Trupta and Reddy, Gireesh and Chruszcz, Maksymilian and Grembecka, Jolanta and Cierpicki, Tomasz}, + number = {23}, + pages = {4461--4469}, + volume = {120}, + doi = {10.1182/blood-2012-05-429274}, + issn = {00064971} +} + +@article{Choi2018StructuralDivisome, + title = {{Structural Insights into the FtsQ/FtsB/FtsL Complex, a Key Component of the Divisome}}, + year = {2018}, + journal = {Scientific Reports}, + author = {Choi, Yuri and Kim, Jinwoo and Yoon, Hye Jin and Jin, Kyeong Sik and Ryu, Sangryeol and Lee, Hyung Ho}, + doi = {10.1038/s41598-018-36001-2}, + issn = {20452322} +} + +@article{Li2010StructuralComplex, + title = {{Structural insights into the YAP and TEAD complex}}, + year = {2010}, + journal = {Genes and Development}, + author = {Li, Ze and Zhao, Bin and Wang, Ping and Chen, Fei and Dong, Zhenghong and Yang, Huirong and Guan, Kun Liang and Xu, Yanhui}, + number = {3}, + pages = {235--240}, + volume = {24}, + doi = {10.1101/gad.1865810}, + issn = {08909369}, + keywords = {Hippo, Structure, TEAD, YAP} +} + +@article{Molzan2012StructuralInteraction., + title = {{Structural insights of the MLF1/14-3-3 interaction.}}, + year = {2012}, + journal = {The FEBS journal}, + author = {Molzan, Manuela and Weyand, Michael and Rose, Rolf and Ottmann, Christian}, + month = {3}, + pages = {563--571}, + volume = {279}, + doi = {10.1111/j.1742-4658.2011.08445.x}, + language = {English} +} + +@article{Chen2011StructuralInteractions, + title = {{Structural instability tuning as a regulatory mechanism in protein-protein interactions}}, + year = {2011}, + journal = {Molecular Cell}, + author = {Chen, Li and Balabanidou, Vassilia and Remeta, David P. and Minetti, Conceição A.S.A. and Portaliou, Athina G. and Economou, Anastassios and Kalodimos, Charalampos G.}, + number = {5}, + pages = {734--744}, + volume = {44}, + doi = {10.1016/j.molcel.2011.09.022}, + issn = {10972765} +} + +@article{Holzer2008StructuralInteraction, + title = {{Structural modifications of salicylates: Inhibitors of human CD81-receptor HCV-E2 interaction}}, + year = {2008}, + journal = {Archiv der Pharmazie}, + author = {Holzer, Marcel and Ziegler, Sigrid and Neugebauer, Alexander and Kronenberger, Bernd and Klein, Christian D. and Hartmann, Rolf W.}, + number = {8}, + pages = {478--484}, + volume = {341}, + doi = {10.1002/ardp.200700261}, + issn = {03656233}, + keywords = {Benzyl salicylates, CD81-receptor, Hepatitis C virus, Large extracellular loop, Virtual screening} +} + +@article{Gowthaman2013StructuralScreening, + title = {{Structural properties of non-traditional drug targets present new challenges for virtual screening}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Gowthaman, Ragul and Deeds, Eric J. and Karanicolas, John}, + number = {8}, + pages = {2073--2081}, + volume = {53}, + doi = {10.1021/ci4002316}, + issn = {15499596} +} + +@article{Rodriguez2009StructureInterface, + title = {{Structure and function of benzoy Iurea-derived A-helix mimetics targeting the Bcl-x L /bak binding interface}}, + year = {2009}, + journal = {ChemMedChem}, + author = {Rodriguez, Johanna M. and Ross, Nathan T. and Katt, William P. and Dhar, Deepali and Lee, Gui in and Hamilton, Andrew D.}, + number = {4}, + pages = {649--656}, + volume = {4}, + doi = {10.1002/cmdc.200800387}, + issn = {18607179}, + keywords = {Bcl-x L, Calorimetry, Protiein-protiein interactionsn benzoylurea scaffo, {$\alpha$}-helix mimetics} +} + +@article{Jacobs1998StructureComplex, + title = {{Structure of an I{$\kappa$}B{$\alpha$}/NF-{$\kappa$}B complex}}, + year = {1998}, + journal = {Cell}, + author = {Jacobs, Marc D. and Harrison, Stephen C.}, + number = {6}, + pages = {749--758}, + volume = {95}, + doi = {10.1016/S0092-8674(00)81698-0}, + issn = {00928674} +} + +@article{Lopez-Castilla2017StructurePseudopilus, + title = {{Structure of the calcium-dependent type 2 secretion pseudopilus}}, + year = {2017}, + journal = {Nature Microbiology}, + author = {L{\'{o}}pez-Castilla, Aracelys and Thomassin, Jenny Lee and Bardiaux, Benjamin and Zheng, Weili and Nivaskumar, Mangayarkarasi and Yu, Xiong and Nilges, Michael and Egelman, Edward H. and Izadi-Pruneyre, Nadia and Francetic, Olivera}, + doi = {10.1038/s41564-017-0041-2}, + issn = {20585276} +} + +@article{Lopez-Castilla2017StructurePseudopilus., + title = {{Structure of the calcium-dependent type 2 secretion pseudopilus.}}, + year = {2017}, + journal = {Nature microbiology}, + author = {L{\'{o}}pez-Castilla, Aracelys and Thomassin, Jenny-Lee and Bardiaux, Benjamin and Zheng, Weili and Nivaskumar, Mangayarkarasi and Yu, Xiong and Nilges, Michael and Egelman, Edward H and Izadi-Pruneyre, Nadia and Francetic, Olivera}, + number = {12}, + month = {12}, + pages = {1686--1695}, + volume = {2}, + url = {http://www.nature.com/articles/s41564-017-0041-2 http://www.ncbi.nlm.nih.gov/pubmed/28993624 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC5705324}, + doi = {10.1038/s41564-017-0041-2}, + issn = {2058-5276}, + pmid = {28993624} +} + +@article{Papadopoulos2014StructureEIF4G, + title = {{Structure of the eukaryotic translation initiation factor eIF4E in complex with 4EGI-1 reveals an allosteric mechanism for dissociating eIF4G}}, + year = {2014}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Papadopoulos, Evangelos and Jenni, Simon and Kabha, Eihab and Takrouri, Khuloud J. and Yi, Tingfang and Salvi, Nicola and Luna, Rafael E. and Gavathiotis, Evripidis and Mahalingam, Poornachandran and Arthanari, Haribabu and Rodriguez-Mias, Ricard and Yefidoff-Freedman, Revital and Aktas, Bertal H. and Chorev, Michael and Halperin, Jose A. and Wagner, Gerhard}, + number = {31}, + volume = {111}, + doi = {10.1073/pnas.1410250111}, + issn = {10916490}, + keywords = {Allosteric inhibitor, Inhibitor of protein-protein interaction, NMR spectroscopy} +} + +@article{Papadopoulos2014StructureEIF4Gb, + title = {{Structure of the eukaryotic translation initiation factor eIF4E in complex with 4EGI-1 reveals an allosteric mechanism for dissociating eIF4G}}, + year = {2014}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Papadopoulos, Evangelos and Jenni, Simon and Kabha, Eihab and Takrouri, Khuloud J. and Yi, Tingfang and Salvi, Nicola and Luna, Rafael E. and Gavathiotis, Evripidis and Mahalingam, Poornachandran and Arthanari, Haribabu and Rodriguez-Mias, Ricard and Yefidoff-Freedman, Revital and Aktas, Bertal H. and Chorev, Michael and Halperin, Jose A. and Wagner, Gerhard}, + number = {31}, + volume = {111}, + doi = {10.1073/pnas.1410250111}, + issn = {10916490}, + keywords = {Allosteric inhibitor, Inhibitor of protein-protein interaction, NMR spectroscopy} +} + +@article{Lan2020StructureReceptor, + title = {{Structure of the SARS-CoV-2 spike receptor-binding domain bound to the ACE2 receptor}}, + year = {2020}, + journal = {Nature}, + author = {Lan, Jun and Ge, Jiwan and Yu, Jinfang and Shan, Sisi and Zhou, Huan and Fan, Shilong and Zhang, Qi and Shi, Xuanling and Wang, Qisheng and Zhang, Linqi and Wang, Xinquan}, + doi = {10.1038/s41586-020-2180-5}, + issn = {14764687}, + pmid = {32225176} +} + +@article{Walls2020StructureGlycoprotein, + title = {{Structure, Function, and Antigenicity of the SARS-CoV-2 Spike Glycoprotein}}, + year = {2020}, + journal = {Cell}, + author = {Walls, Alexandra C and Park, Young-Jun and Tortorici, M Alejandra and Wall, Abigail and McGuire, Andrew T and Veesler, David}, + month = {4}, + publisher = {Elsevier}, + url = {https://doi.org/10.1016/j.cell.2020.02.058}, + doi = {10.1016/j.cell.2020.02.058}, + issn = {0092-8674} +} + +@article{Wist2007Structure-activityXIAP, + title = {{Structure-activity based study of the Smac-binding pocket within the BIR3 domain of XIAP}}, + year = {2007}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Wist, Aislyn D. and Gu, Lichuan and Riedl, Stefan J. and Shi, Yigong and McLendon, George L.}, + number = {8}, + pages = {2935--2943}, + volume = {15}, + doi = {10.1016/j.bmc.2007.02.010}, + issn = {09680896}, + keywords = {Apoptosis, Oxazole, Peptide mimetics, Rational design, Smac, XIAP} +} + +@article{Taylor2012Structure-activityAgonist, + title = {{Structure-activity relationship of a broad-spectrum insect odorant receptor agonist}}, + year = {2012}, + journal = {ACS Chemical Biology}, + author = {Taylor, Robert W. and Romaine, Ian M. and Liu, Chao and Murthi, Poornima and Jones, Patrick L. and Waterson, Alex G. and Sulikowski, Gary A. and Zwiebel, Laurence J.}, + number = {10}, + pages = {1647--1652}, + volume = {7}, + doi = {10.1021/cb300331z}, + issn = {15548937} +} + +@article{Lin2008Structure-activityInhibitors, + title = {{Structure-activity relationship of ortho- and meta-phenol based LFA-1 ICAM inhibitors}}, + year = {2008}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Lin, Edward Yin Shiang and Guckian, Kevin M. and Silvian, Laura and Chin, Donovan and Ann Boriack-Sjodin, P. and van Vlijmen, Herman and Friedman, Jessica E. and Scott, Daniel M.}, + number = {19}, + pages = {5245--5248}, + volume = {18}, + doi = {10.1016/j.bmcl.2008.08.062}, + issn = {0960894X}, + keywords = {ICAM, LFA-1, LFA-1/ICAM inhibitors} +} + +@article{Bernardo2008Structure-activityInhibitors, + title = {{Structure-activity relationship studies of phenanthridine-based Bcl-X L inhibitors}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Bernardo, Paul H. and Wan, Kah Fei and Sivaraman, Thirunavukkarasu and Xu, Jin and Moore, Felicity K. and Hung, Alvin W. and Mok, Henry Y.K. and Yu, Victor C. and Chai, Christina L.L.}, + number = {21}, + pages = {6699--6710}, + volume = {51}, + doi = {10.1021/jm8005433}, + issn = {00222623} +} + +@article{Bernardo2008Structure-activityInhibitorsb, + title = {{Structure-activity relationship studies of phenanthridine-based Bcl-X L inhibitors}}, + year = {2008}, + journal = {Journal of Medicinal Chemistry}, + author = {Bernardo, Paul H. and Wan, Kah Fei and Sivaraman, Thirunavukkarasu and Xu, Jin and Moore, Felicity K. and Hung, Alvin W. and Mok, Henry Y.K. and Yu, Victor C. and Chai, Christina L.L.}, + number = {21}, + pages = {6699--6710}, + volume = {51}, + doi = {10.1021/jm8005433}, + issn = {00222623} +} + +@article{Takrouri2014Structure-activityInhibitors, + title = {{Structure-activity relationship study of 4EGI-1, small molecule eIF4E/eIF4G protein-protein interaction inhibitors}}, + year = {2014}, + journal = {European Journal of Medicinal Chemistry}, + author = {Takrouri, Khuloud and Chen, Ting and Papadopoulos, Evangelos and Sahoo, Rupam and Kabha, Eihab and Chen, Han and Cantel, Sonia and Wagner, Gerhard and Halperin, Jose A. and Aktas, Bertal H. and Chorev, Michael}, + pages = {361--377}, + volume = {77}, + publisher = {Elsevier Masson SAS}, + url = {http://dx.doi.org/10.1016/j.ejmech.2014.03.034}, + doi = {10.1016/j.ejmech.2014.03.034}, + issn = {17683254}, + keywords = {4EGI-1, E/Z-isomerization, Florescence polarization assay, Hydrazones, Inhibitors of protein-protein interaction, Thiazol-2-yl hydrazones, Translation initiation, eIF4F} +} + +@article{Green2003Structure-activityB7.1, + title = {{Structure-activity studies of a series of dipyrazolo[3,4-b:3′,4′-d]pyridin-3-ones binding to the immune regulatory protein B7.1}}, + year = {2003}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Green, Neal J. and Xiang, Jason and Chen, Jing and Chen, Lihren and Davies, Audrey M. and Erbe, Dave and Tam, Steve and Tobin, James F.}, + number = {13}, + pages = {2991--3013}, + volume = {11}, + doi = {10.1016/S0968-0896(03)00183-4}, + issn = {09680896} +} + +@article{Tang2007Structure-basedProteins, + title = {{Structure-based design of flavonoid compounds as a new class of small-molecule inhibitors of the anti-apoptotic Bcl-2 proteins}}, + year = {2007}, + journal = {Journal of Medicinal Chemistry}, + author = {Tang, Guozhi and Ding, Ke and Nikolovska-Coleska, Zaneta and Yang, Chao Yie and Qiu, Su and Shangary, Sanjeev and Wang, Renxiao and Guo, Jie and Gao, Wei and Meagher, Jennifer and Stuckey, Jeanne and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P. and Wang, Shaomeng}, + number = {14}, + pages = {3163--3166}, + volume = {50}, + doi = {10.1021/jm070383c}, + issn = {00222623} +} + +@article{Rew2012Structure-basedInteraction, + title = {{Structure-based design of novel inhibitors of the MDM2-p53 interaction}}, + year = {2012}, + journal = {Journal of Medicinal Chemistry}, + author = {Rew, Yosup and Sun, Daqing and Gonzalez-Lopez De Turiso, Felix and Bartberger, Michael D. and Beck, Hilary P. and Canon, Jude and Chen, Ada and Chow, David and Deignan, Jeffrey and Fox, Brian M. and Gustin, Darin and Huang, Xin and Jiang, Min and Jiao, Xianyun and Jin, Lixia and Kayser, Frank and Kopecky, David J. and Li, Yihong and Lo, Mei Chu and Long, Alexander M. and Michelsen, Klaus and Oliner, Jonathan D. and Osgood, Tao and Ragains, Mark and Saiki, Anne Y. and Schneider, Steve and Toteva, Maria and Yakowec, Peter and Yan, Xuelei and Ye, Qiuping and Yu, Dongyin and Zhao, Xiaoning and Zhou, Jing and Medina, Julio C. and Olson, Steven H.}, + number = {11}, + pages = {4936--4954}, + volume = {55}, + doi = {10.1021/jm300354j}, + issn = {00222623} +} + +@article{VogrigStructure-BasedHT, + title = {{Structure-Based Design of PDZ Ligands as Inhibitors of 5 ‑ HT}}, + author = {Vogrig, Alexandre and Dorr, Liam and Bouzidi, Naoual and Boucherle, Benjamin and Wattiez, Anne-sophie and Cassier, Elisabeth and Vallon, Gary and Ripoche, Isabelle and Abrunhosa-thomas, Isabelle and Marin, Philippe and Nauton, Lionel and Thery, Vincent and Courteix, Christine and Lian, Lu-yun and Ducki, Sylvie}, + pages = {1--8} +} + +@article{Ding2005Structure-basedInhibitors, + title = {{Structure-based design of potent non-peptide MDM2 inhibitors}}, + year = {2005}, + journal = {Journal of the American Chemical Society}, + author = {Ding, Ke and Lu, Yipin and Nikolovska-Coleska, Zaneta and Qiu, Su and Ding, Yousong and Gao, Wei and Stuckey, Jeanne and Krajewski, Krzysztof and Roller, Peter P. and Tomita, York and Parrish, Damon A. and Deschamps, Jeffrey R. and Wang, Shaomeng}, + number = {29}, + pages = {10130--10131}, + volume = {127}, + doi = {10.1021/ja051147z}, + issn = {00027863} +} + +@article{Wang2006Structure-BasedProteins, + title = {{Structure-Based Design of Potent Small-Molecule Inhibitors of Anti-Apoptotic Bcl-2 Proteins}}, + year = {2006}, + author = {Wang, Guoping and Nikolovska-coleska, Zaneta and Yang, Chao-yie and Wang, Renxiao and Tang, Guozhi and Guo, Jie and Shangary, Sanjeev and Qiu, Su and Gao, Wei and Yang, Dajun and Meagher, Jennifer and Stuckey, Jeanne and Krajewski, Krzysztof and Jiang, Sheng and Roller, Peter P and Abaan, Hatice Ozel and Tomita, York and Wang, Shaomeng}, + number = {21}, + pages = {19--22}, + volume = {49} +} + +@article{Raboisson2005Structure-basedAntagonists, + title = {{Structure-based design, synthesis, and biological evaluation of novel 1,4-diazepines as HDM2 antagonists}}, + year = {2005}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Raboisson, Pierre and Marug{\'{a}}n, Juan José and Schubert, Carsten and Koblish, Holly K. and Lu, Tianbao and Zhao, Shuyuan and Player, Mark R. and Maroney, Anna C. and Reed, Rolanda L. and Huebert, Norman D. and Lattanze, Jennifer and Parks, Daniel J. and Cummings, Maxwell D.}, + number = {7}, + pages = {1857--1861}, + volume = {15}, + doi = {10.1016/j.bmcl.2005.02.018}, + issn = {0960894X}, + keywords = {Cancer, Diazepine, HDM2-p53, Selenium} +} + +@article{Orry2006Structure-basedLibraries, + title = {{Structure-based development of target-specific compound libraries}}, + year = {2006}, + journal = {Drug Discovery Today}, + author = {Orry, Andrew J.W. and Abagyan, Ruben A. and Cavasotto, Claudio N.}, + number = {5-6}, + pages = {261--266}, + volume = {11}, + doi = {10.1016/S1359-6446(05)03717-7}, + issn = {13596446} +} + +@article{Mysinger2012Structure-basedCXCR4, + title = {{Structure-based ligand discovery for the protein-protein interface of chemokine receptor CXCR4}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Mysinger, Michael M. and Weiss, Dahlia R. and Ziarek, Joshua J. and Gravel, Stéphanie and Doak, Allison K. and Karpiak, Joel and Heveker, Nikolaus and Shoichet, Brian K. and Volkman, Brian F.}, + number = {14}, + pages = {5517--5522}, + volume = {109}, + doi = {10.1073/pnas.1120431109}, + issn = {00278424}, + keywords = {Drug design, Promiscuous aggregation, Virtual screening} +} + +@incollection{Kolodzik2018Structure-BasedScreening, + title = {{Structure-Based Virtual Screening}}, + year = {2018}, + booktitle = {Applied Chemoinformatics}, + author = {Kolodzik, Adrian and Schneider, Nadine and Rarey, Matthias}, + pages = {313--331}, + url = {http://doi.wiley.com/10.1002/9783527806539.ch6h}, + isbn = {978-1-4939-6781-0 978-1-4939-6783-4}, + doi = {10.1002/9783527806539.ch6h}, + issn = {1940-6029}, + pmid = {28150235}, + keywords = {docking algorithms, proteinâ€based pharmacophoric filters, scoring methods, structureâ€based virtual screening, validation methods} +} + +@article{Popowicz2010StructuresDiscovery, + title = {{Structures of low molecular weight inhibitors bound to MDMX and MDM2 reveal new approaches for p53-MDMX/MDM2 antagonist drug discovery}}, + year = {2010}, + journal = {Cell Cycle}, + author = {Popowicz, Grzegorz M. and Czarna, Anna and Wolf, Siglinde and Wang, Kan and Wang, Wei and D{\"{o}}mling, Alexander and Holak, Tad A.}, + number = {6}, + pages = {1104--1111}, + volume = {9}, + doi = {10.4161/cc.9.6.10956}, + issn = {15514005}, + keywords = {Cancer, Drug-design, MDM2, MDMX, Structure, p53} +} + +@article{Popowicz2010StructuresDiscoveryb, + title = {{Structures of low molecular weight inhibitors bound to MDMX and MDM2 reveal new approaches for p53-MDMX/MDM2 antagonist drug discovery}}, + year = {2010}, + journal = {Cell Cycle}, + author = {Popowicz, Grzegorz M. and Czarna, Anna and Wolf, Siglinde and Wang, Kan and Wang, Wei and D{\"{o}}mling, Alexander and Holak, Tad A.}, + number = {6}, + pages = {1104--1111}, + volume = {9}, + doi = {10.4161/cc.9.6.10956}, + issn = {15514005}, + keywords = {Cancer, Drug-design, MDM2, MDMX, Structure, p53} +} + +@article{2003SubjectIndex, + title = {{Subject Index}}, + year = {2003}, + journal = {Role of Cement Science in Sustainable Development}, + pages = {539--541}, + isbn = {3527305211}, + doi = {10.1680/rocsisd.32460.bm02} +} + +@article{Berkoff1976SubstructuralDesign., + title = {{Substructural analysis in drug design.}}, + year = {1976}, + journal = {Experientia. Supplementum}, + author = {Berkoff, C. E. and Cramer, R. D. and Redl, G.}, + pages = {41--44}, + volume = {23}, + doi = {10.1007/978-3-0348-5795-6{\_}5}, + issn = {0071335X}, + keywords = {chemical data management, chemoinformatics, data mining, fragment-based discovery, maximum common substructure, substructure analysis} +} + +@article{Nolan2000SupplementalData, + title = {{Supplemental Data Supplemental Data}}, + year = {2000}, + author = {Nolan, Anthony and Therapy, Cell}, + pages = {1--15}, + volume = {m} +} + +@article{SupplementaryE, + title = {{Supplementary Figure 1 – Alternative syntheses for key building block: (a) Wittig reaction provided lower yield and difficulty in product isolation due to presence of (Z) isomer; (b) Knovenagel condensation gave mixture of regioisomers but exclusively (E)}} +} + +@article{TimeSupplementary:, + title = {{Supplementary material ESM2 : Supplementary material ESM2 :}}, + author = {Time, Retention and Time, Retention and Time, Retention}, + pages = {16--17} +} + +@article{SupplementaryIndex, + title = {{Supplementary Material for “Understanding protein-protein interactions using local structural features†Index}} +} + +@article{2012SupplementaryMethods, + title = {{Supplementary Methods}}, + year = {2012}, + journal = {Acta Neuropsychiatrica}, + number = {4}, + pages = {1--4}, + volume = {24}, + doi = {10.1111/j.1601-5215.2012.00607.x}, + issn = {16015215} +} + +@article{Ace-2005SupplementaryInteresting, + title = {{Supplementary Table 1 . Details of targets used in study . Table 1A . Details for druggable targets . Table 1A shows a set of 22 targets with compounds that have progressed to Phase II or beyond . MDM2 / p53 is an exception and is included an interesting }}, + year = {2005}, + author = {Ace-, Target and Used, P D B Ids and Aldose, Acetylcholinesterase and Cyp, Fungal and Rt, H I V and Coa, Protease H M G and Ii, Phase}, + number = {November}, + pages = {1--2} +} + +@article{2004Supplementary., + title = {{Supplementary Table 2 . References and notes for best affinity values Note .}}, + year = {2004}, + pages = {354825} +} + +@article{DasguptaSupportClassification, + title = {{Support Vector Machines : A Useful Tool for Classification}}, + author = {Dasgupta, Shibasish} +} + +@article{Hewings1865SupportingLigands, + title = {{Supporting Information : mimetic bromodomain ligands}}, + year = {1865}, + author = {Hewings, David S and Wang, Minghua and Philpott, Martin and Fedorov, Oleg and Uttarkar, Sagar}, + number = {1} +} + +@article{KrierSupportingLibraries, + title = {{Supporting Information for : Assessing the Scaffold Diversity of Screening Libraries}}, + author = {Krier, Mireille and Bret, Guillaume and Rognan, Didier and Molwt, M I N and Molwt, M A X}, + pages = {1--11} +} + +@article{SupportingHe, + title = {{Supporting Information High-affinity small molecule inhibitors of the menin-Mixed Lineage Leukemia (MLL) interaction closely mimic a natural protein-protein interaction Shihan He}}, + number = {Mll} +} + +@article{MaingotSupportingBiology, + title = {{Supporting Information New non-hydroxamic ADAMTS-5 inhibitors based on the 1 , 2 , 4-triazole-3-thiol scaffold . Contents : Library Screening {\&} Biology}}, + author = {Maingot, Lucie and Leroux, Florence and Landry, Valérie and Dumont, Julie and Nagase, Hideaki and Villoutreix, Bruno and Sperandio, Olivier and Deprez-, Rebecca}, + number = {0} +} + +@article{Sheeringa1997SupportingInformation, + title = {{Supporting Information Supporting Information}}, + year = {1997}, + author = {Sheeringa, PNAS}, + number = {1}, + pages = {1--5}, + keywords = {10550 north torrey pines, and floyd e, ca 92037, cremeens, dawson, department of chemistry, j{\"{o}}rg zimmermann, la jolla, materials and methods, matthew e, philip e, porting information, road, romesberg, the scripps research institute, wayne yu} +} + +@article{Sheeringa1997SupportingInformationb, + title = {{Supporting Information Supporting Information}}, + year = {1997}, + author = {Sheeringa, PNAS}, + number = {1}, + pages = {1--5}, + keywords = {10550 north torrey pines, and floyd e, ca 92037, cremeens, dawson, department of chemistry, j{\"{o}}rg zimmermann, la jolla, materials and methods, matthew e, philip e, porting information, road, romesberg, the scripps research institute, wayne yu} +} + +@article{Sheeringa1997SupportingInformationc, + title = {{Supporting Information Supporting Information}}, + year = {1997}, + author = {Sheeringa, PNAS}, + number = {1}, + pages = {1--5}, + keywords = {10550 north torrey pines, and floyd e, ca 92037, cremeens, dawson, department of chemistry, j{\"{o}}rg zimmermann, la jolla, materials and methods, matthew e, philip e, porting information, road, romesberg, the scripps research institute, wayne yu} +} + +@article{BrenkeSupportingContents, + title = {{Supporting Online Material for : Fragment-based identification of druggable “ hot spots †of proteins using Fourier domain correlation techniques Table of Contents}}, + author = {Brenke, Ryan and Kozakov, Dima and Chuang, Gwo-yu and Beglov, Dmitri and Hall, David and Landon, Melissa R and Mattos, Carla and Vajda, Sandor}, + pages = {1--19} +} + +@article{Vassilev2004SupportingP53., + title = {{Supporting Online Material Materials and Methods Cloning and purification of recombinant MDM2 and p53.}}, + year = {2004}, + author = {Vassilev, Lyubomir T}, + pages = {0--6}, + volume = {2} +} + +@article{Nicodeme2010SuppressionMimic, + title = {{Suppression of inflammation by a synthetic histone mimic}}, + year = {2010}, + journal = {Nature}, + author = {Nicodeme, Edwige and Jeffrey, Kate L. and Schaefer, Uwe and Beinke, Soren and Dewell, Scott and Chung, Chun Wa and Chandwani, Rohit and Marazzi, Ivan and Wilson, Paul and Coste, Hervé and White, Julia and Kirilovsky, Jorge and Rice, Charles M. and Lora, Jose M. and Prinjha, Rab K. and Lee, Kevin and Tarakhovsky, Alexander}, + number = {7327}, + pages = {1119--1123}, + volume = {468}, + doi = {10.1038/nature09589}, + issn = {00280836} +} + +@article{Zamora2003SurfacePrediction, + title = {{Surface descriptors for protein-ligand affinity prediction}}, + year = {2003}, + journal = {Journal of Medicinal Chemistry}, + author = {Zamora, Ismael and Oprea, Tudor and Cruciani, Gabriele and Pastor, Manuel and Ungell, Anna Lena}, + number = {1}, + pages = {25--33}, + volume = {46}, + doi = {10.1021/jm011051p}, + issn = {00222623} +} + +@article{deSouzal2012SurfaceomeDB:Proteins, + title = {{SurfaceomeDB: A cancer-orientated database for genes encoding cell surface proteins}}, + year = {2012}, + journal = {Cancer Immunity}, + author = {de Souzal, Jorge Estefano Santana and Galante, Pedro Alexandre Favoretto and de Almeida, Renan Valieris Bueno and da Cunha, Julia Pinheiro Chagas and Ohara, Daniel Takatori and Ohno-Machado, Lucila and Old, Lloyd J. and de Souza, Sandro José}, + number = {2}, + pages = {1--5}, + volume = {12}, + issn = {14249634}, + pmid = {23390370}, + keywords = {Cell surface proteins, Gene library, SurfaceomeDB} +} + +@article{Meanwell2011SynopsisDesign, + title = {{Synopsis of some recent tactical application of bioisosteres in drug design}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Meanwell, Nicholas A.}, + number = {8}, + pages = {2529--2591}, + volume = {54}, + doi = {10.1021/jm1013693}, + issn = {00222623}, + pmid = {21413808} +} + +@article{Ferro2014SynthesisInhibitors, + title = {{Synthesis and biological evaluation of novel antiviral agents as protein-protein interaction inhibitors}}, + year = {2014}, + journal = {Journal of Enzyme Inhibition and Medicinal Chemistry}, + author = {Ferro, Stefania and De Luca, Laura and Morreale, Francesca and Christ, Frauke and Debyser, Zeger and Gitto, Rosaria and Chimirri, Alba}, + number = {2}, + pages = {237--242}, + volume = {29}, + doi = {10.3109/14756366.2013.766609}, + issn = {14756374}, + keywords = {Docking studies, HIV-1, Indoles, LEDGF/p75, Synthesis} +} + +@article{Milkiewicz2010SynthesisKinase, + title = {{Synthesis and structure-activity relationships of 1,2,3,4-tetrahydropyrido[2,3-b]pyrazines as potent and selective inhibitors of the anaplastic lymphoma kinase}}, + year = {2010}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Milkiewicz, Karen L. and Weinberg, Linda R. and Albom, Mark S. and Angeles, Thelma S. and Cheng, Mangeng and Ghose, Arup K. and Roemmele, Renee C. and Theroff, Jay P. and Underiner, Ted L. and Zificsak, Craig A. and Dorsey, Bruce D.}, + number = {12}, + pages = {4351--4362}, + volume = {18}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2010.04.087}, + doi = {10.1016/j.bmc.2010.04.087}, + issn = {09680896}, + keywords = {Anaplastic lymphoma kinase, Kinase inhibitors} +} + +@article{Madden2011SynthesisCycloaddition, + title = {{Synthesis of cell-permeable stapled peptide dual inhibitors of the p53-Mdm2/Mdmx interactions via photoinduced cycloaddition}}, + year = {2011}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Madden, Michael M. and Muppidi, Avinash and Li, Zhenyu and Li, Xiaolong and Chen, Jiandong and Lin, Qing}, + number = {5}, + pages = {1472--1475}, + volume = {21}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2011.01.004}, + doi = {10.1016/j.bmcl.2011.01.004}, + issn = {0960894X}, + keywords = {Cellular uptake, Dipolar cycloaddition, Inhibitors, Protein-protein interaction, Stapled peptides} +} + +@article{JochimSystematicInformation, + title = {{Systematic Analysis of Helical Protein Interfaces Reveals Targets for Synthetic Inhibitors - Methods used to Identify HIPP Interactions - Supporting Information}}, + journal = {New York University}, + author = {Jochim, Andrea L and Arora, Paramjit S}, + pages = {1--523} +} + +@article{Hu2010SystematicFamilies, + title = {{Systematic analysis of public domain compound potency data identifies selective molecular scaffolds across druggable target families}}, + year = {2010}, + journal = {Journal of Medicinal Chemistry}, + author = {Hu, Ye and Wassermann, Anne Mai and Lounkine, Eugen and Bajorath, Jürgen}, + number = {2}, + pages = {752--758}, + volume = {53}, + doi = {10.1021/jm9014229}, + issn = {00222623} +} + +@article{Veljkovic2007TN, + title = {{t o t s i u rib n tio t o t s i n}}, + year = {2007}, + author = {Veljkovic, V and Veljkovic, N and Dietrich, U}, + pages = {441--453}, + keywords = {drug development, eiip, hiv-1 entry inhibitors, ism concept, virtual screening} +} + +@article{TableMode, + title = {{Table S1 . Evaluating parameters values obtained in the common-test set mode}}, + volume = {2} +} + +@article{TableDatabase, + title = {{Table S4 . Evaluating parameters values obtained in experiments with inactives from PubChem database}} +} + +@article{Skerra2005TailoringRecognition, + title = {{Tailoring protein scaffolds for ligand recognition}}, + year = {2005}, + journal = {Protein-Ligand Interactions: From Molecular Recognition to Drug Design}, + author = {Skerra, Arne}, + pages = {187--211}, + isbn = {9783527601813}, + doi = {10.1002/3527601813.ch8}, + keywords = {Anticalins, Combinatorial biotechnology, Drug design, Ligand recognition, Lipocalins, Natural compound carrier, Protein scaffolds} +} + +@article{Bouvier2019TargetNMR., + title = {{Target Engagement and Binding Mode of an Antituberculosis Drug to Its Bacterial Target Deciphered in Whole Living Cells by NMR.}}, + year = {2019}, + journal = {Biochemistry}, + author = {Bouvier, Guillaume and Simenel, Catherine and Jang, Jichan and Kalia, Nitin P and Choi, Inhee and Nilges, Michael and Pethe, Kevin and Izadi-Pruneyre, Nadia}, + number = {6}, + month = {2}, + pages = {526--533}, + volume = {58}, + url = {http://pubs.acs.org/doi/10.1021/acs.biochem.8b00975 http://www.ncbi.nlm.nih.gov/pubmed/30521325}, + doi = {10.1021/acs.biochem.8b00975}, + issn = {1520-4995}, + pmid = {30521325} +} + +@article{Subbiah2011TargetedSarcoma, + title = {{Targeted therapy of Ewing's sarcoma}}, + year = {2011}, + journal = {Sarcoma}, + author = {Subbiah, Vivek and Anderson, Pete}, + volume = {2011}, + doi = {10.1155/2011/686985}, + issn = {1357714X} +} + +@article{Mehraein-Ghomi2014TargetingProgression, + title = {{Targeting androgen receptor and JunD interaction for prevention of prostate cancer progression}}, + year = {2014}, + journal = {Prostate}, + author = {Mehraein-Ghomi, Farideh and Kegel, Stacy J. and Church, Dawn R. and Schmidt, Joseph S. and Reuter, Quentin R. and Saphner, Elizabeth L. and Basu, Hirak S. and Wilding, George}, + number = {7}, + pages = {792--803}, + volume = {74}, + doi = {10.1002/pros.22800}, + issn = {10970045}, + keywords = {AR-JunD protein-protein interaction, cellular reactive oxygen species, cyclin D1, small molecule inhibitors} +} + +@article{Filippakopoulos2014TargetingAcetylation, + title = {{Targeting bromodomains: Epigenetic readers of lysine acetylation}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + author = {Filippakopoulos, Panagis and Knapp, Stefan}, + number = {5}, + pages = {337--356}, + volume = {13}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd4286}, + doi = {10.1038/nrd4286}, + issn = {14741784} +} + +@article{Zhou2015TargetingPeptides, + title = {{Targeting Hippo pathway by specific interruption of YAP-TEAD interaction using cyclic YAP-like peptides}}, + year = {2015}, + journal = {FASEB Journal}, + author = {Zhou, Zheng and Hu, Taishan and Xu, Zhiheng and Lin, Zhaohu and Zhang, Zhisen and Feng, Teng and Zhu, Liangcheng and Rong, Yiping and Shen, Hong and Luk, John M. and Zhang, Xiongwen and Qin, Ning}, + number = {2}, + pages = {724--732}, + volume = {29}, + doi = {10.1096/fj.14-262980}, + issn = {15306860}, + keywords = {Disulfide cyclization, HCC xenograft, TEAD-YAP crystal structure} +} + +@article{Khanna2011TargetingInvasion, + title = {{Targeting multiple conformations leads to small molecule inhibitors of the uPAR•uPA protein-protein interaction that block cancer cell invasion}}, + year = {2011}, + journal = {ACS Chemical Biology}, + author = {Khanna, May and Wang, Fang and Jo, Inha and Knabe, W. Eric and Wilson, Sarah M. and Li, Liwei and Bum-Erdene, Khuchtumur and Li, Jing and W. Sledge, George and Khanna, Rajesh and Meroueh, Samy O.}, + number = {11}, + pages = {1232--1243}, + volume = {6}, + doi = {10.1021/cb200180m}, + issn = {15548929} +} + +@article{Khanna2011TargetingInvasionb, + title = {{Targeting multiple conformations leads to small molecule inhibitors of the uPAR•uPA protein-protein interaction that block cancer cell invasion}}, + year = {2011}, + journal = {ACS Chemical Biology}, + author = {Khanna, May and Wang, Fang and Jo, Inha and Knabe, W. Eric and Wilson, Sarah M. and Li, Liwei and Bum-Erdene, Khuchtumur and Li, Jing and W. Sledge, George and Khanna, Rajesh and Meroueh, Samy O.}, + number = {11}, + pages = {1232--1243}, + volume = {6}, + doi = {10.1021/cb200180m}, + issn = {15548929} +} + +@article{Mertz2011TargetingBromodomains, + title = {{Targeting MYC dependence in cancer by inhibiting BET bromodomains}}, + year = {2011}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Mertz, Jennifer A. and Conery, Andrew R. and Bryant, Barbara M. and Sandy, Peter and Balasubramanian, Srividya and Mele, Deanna A. and Bergeron, Louise and Sims, Robert J.}, + number = {40}, + pages = {16669--16674}, + volume = {108}, + doi = {10.1073/pnas.1108190108}, + issn = {00278424}, + keywords = {BRD2, BRD3, BRD4, JQ1} +} + +@article{Mukherjee2010TargetingScreening, + title = {{Targeting the BH3 domain mediated protein-protein interaction of Bcl-Xl through virtual screening}}, + year = {2010}, + journal = {Journal of Chemical Information and Modeling}, + author = {Mukherjee, Prasenjit and Desai, Prashant and Zhou, Yu Dong and Avery, Mitchell}, + number = {5}, + pages = {906--923}, + volume = {50}, + doi = {10.1021/ci1000373}, + issn = {15499596} +} + +@article{Gautier2011TargetingScreening, + title = {{Targeting the proangiogenic VEGF-VEGFR protein-protein interface with drug-like compounds by in silico and in vitro screening}}, + year = {2011}, + journal = {Chemistry and Biology}, + author = {Gautier, Benoit and Miteva, Maria A. and Goncalves, Victor and Huguenot, Florent and Coric, Pascale and Bouaziz, Serge and Seijo, Bili and Gaucher, Jean Franois and Broutin, Isabelle and Garbay, Christiane and Lesnard, Aurelien and Rault, Sylvain and Inguimbert, Nicolas and Villoutreix, Bruno O. and Vidal, Michel}, + number = {12}, + pages = {1631--1639}, + volume = {18}, + doi = {10.1016/j.chembiol.2011.10.016}, + issn = {10745521} +} + +@article{Crews2010TargetingDreams, + title = {{Targeting the Undruggable Proteome: The Small Molecules of My Dreams}}, + year = {2010}, + journal = {Chemistry and Biology}, + author = {Crews, Craig M.}, + number = {6}, + pages = {551--555}, + volume = {17}, + doi = {10.1016/j.chembiol.2010.05.011}, + issn = {10745521} +} + +@article{Buckley2012TargetingInteraction, + title = {{Targeting the von Hippel-Lindau E3 ubiquitin ligase using small molecules to disrupt the VHL/HIF-1{$\alpha$} interaction}}, + year = {2012}, + journal = {Journal of the American Chemical Society}, + author = {Buckley, Dennis L. and Van Molle, Inge and Gareiss, Peter C. and Tae, Hyun Seop and Michel, Julien and Noblin, Devin J. and Jorgensen, William L. and Ciulli, Alessio and Crews, Craig M.}, + number = {10}, + pages = {4465--4468}, + volume = {134}, + doi = {10.1021/ja209924v}, + issn = {00027863} +} + +@article{Kallberg2012Template-basedServer, + title = {{Template-based protein structure modeling using the RaptorX web server}}, + year = {2012}, + journal = {Nature Protocols}, + author = {K{\"{a}}llberg, Morten and Wang, Haipeng and Wang, Sheng and Peng, Jian and Wang, Zhiyong and Lu, Hui and Xu, Jinbo}, + doi = {10.1038/nprot.2012.085}, + issn = {17542189}, + pmid = {22814390} +} + +@article{Hafizi2010Tensin2Membrane, + title = {{Tensin2 reduces intracellular phosphatidylinositol 3,4,5-trisphosphate levels at the plasma membrane}}, + year = {2010}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Hafizi, Sassan and Gustafsson, Anna and Oslakovic, Cecilia and Idevall-Hagren, Olof and Tengholm, Anders and Sperandio, Olivier and Villoutreix, Bruno O. and Dahlb{\"{a}}ck, Björn}, + number = {3}, + pages = {396--401}, + volume = {399}, + isbn = {1090-2104 (Electronic){\textbackslash}r0006-291X (Linking)}, + doi = {10.1016/j.bbrc.2010.07.085}, + issn = {0006291X}, + pmid = {20678486}, + keywords = {Cytoskeleton, Integrin, PTEN, Phosphatase, Phosphoinositide, Tensin} +} + +@article{Hafizi2010Tensin2Membraneb, + title = {{Tensin2 reduces intracellular phosphatidylinositol 3,4,5-trisphosphate levels at the plasma membrane}}, + year = {2010}, + journal = {Biochemical and Biophysical Research Communications}, + author = {Hafizi, Sassan and Gustafsson, Anna and Oslakovic, Cecilia and Idevall-Hagren, Olof and Tengholm, Anders and Sperandio, Olivier and Villoutreix, Bruno O. and Dahlb{\"{a}}ck, Björn}, + number = {3}, + pages = {396--401}, + volume = {399}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.bbrc.2010.07.085}, + doi = {10.1016/j.bbrc.2010.07.085}, + issn = {0006291X}, + keywords = {Cytoskeleton, Integrin, PTEN, Phosphatase, Phosphoinositide, Tensin} +} + +@techreport{ThomasTensorClouds, + title = {{Tensor field networks: Rotation-and translation-equivariant neural networks for 3D point clouds}}, + author = {Thomas, Nathaniel and Smidt, Tess and Kearnes, Steven and Yang, Lusann and Li, Li and Kohlhoff, Kai and Riley, Patrick}, + url = {https://arxiv.org/pdf/1802.08219.pdf}, + arxivId = {1802.08219v3} +} + +@article{Vaupel2014Tetra-substitutedInteraction, + title = {{Tetra-substituted imidazoles as a new class of inhibitors of the p53-MDM2 interaction}}, + year = {2014}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Vaupel, Andrea and Bold, Guido and De Pover, Alain and Stachyra-Valat, Thérèse and Hergovich-Lisztwan, Joanna and Kallen, Joerg and Masuya, Keiichi and Furet, Pascal}, + number = {9}, + pages = {2110--2114}, + volume = {24}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmcl.2014.03.039}, + doi = {10.1016/j.bmcl.2014.03.039}, + issn = {14643405}, + keywords = {MDM2, Protein-protein interaction inhibitors, Structure-based design, p53} +} + +@article{Porter2009TetrahydroisoquinolineInhibitors, + title = {{Tetrahydroisoquinoline amide substituted phenyl pyrazoles as selective Bcl-2 inhibitors}}, + year = {2009}, + journal = {Bioorganic and Medicinal Chemistry Letters}, + author = {Porter, John and Payne, Andrew and de Candole, Ben and Ford, Daniel and Hutchinson, Brian and Trevitt, Graham and Turner, James and Edwards, Chloe and Watkins, Clare and Whitcombe, Ian and Davis, Jeremy and Stubberfield, Colin}, + number = {1}, + pages = {230--233}, + volume = {19}, + doi = {10.1016/j.bmcl.2008.10.113}, + issn = {0960894X}, + keywords = {Apoptosis, Bcl-2, Bcl-xL, Protein-protein interaction} +} + +@article{Wu2020TH17Fedratinib, + title = {{TH17 responses in cytokine storm of COVID-19: An emerging target of JAK2 inhibitor Fedratinib}}, + year = {2020}, + journal = {Journal of Microbiology, Immunology and Infection}, + author = {Wu, Dandan and Yang, Xuexian O.}, + month = {3}, + publisher = {Elsevier Ltd}, + doi = {10.1016/j.jmii.2020.03.005}, + issn = {19959133}, + keywords = {COVID-19, Cytokine storm, JAK2 inhibitor, SARS-CoV-2, TH17} +} + +@article{Benvenuto2020TheEvolution, + title = {{The 2019-new coronavirus epidemic: Evidence for virus evolution}}, + year = {2020}, + journal = {Journal of Medical Virology}, + author = {Benvenuto, Domenico and Giovanetti, Marta and Ciccozzi, Alessandra and Spoto, Silvia and Angeletti, Silvia and Ciccozzi, Massimo}, + number = {4}, + volume = {92}, + doi = {10.1002/jmv.25688}, + issn = {10969071} +} + +@misc{Rowlett2015TheClose-up, + title = {{The bacterial divisome: Ready for its close-up}}, + year = {2015}, + booktitle = {Philosophical Transactions of the Royal Society B: Biological Sciences}, + author = {Rowlett, Veronica W. and Margolin, William}, + doi = {10.1098/rstb.2015.0028}, + issn = {14712970}, + keywords = {Bacteria, Cytokinesis, FtsA, FtsZ, Septum} +} + +@article{Li2013TheTat-transactivation, + title = {{The BET bromodomain inhibitor JQ1 activates HIV latency through antagonizing Brd4 inhibition of Tat-transactivation}}, + year = {2013}, + journal = {Nucleic Acids Research}, + author = {Li, Zichong and Guo, Jia and Wu, Yuntao and Zhou, Qiang}, + number = {1}, + pages = {277--287}, + volume = {41}, + doi = {10.1093/nar/gks976}, + issn = {03051048} +} + +@book{Pickett2003TheConcept, + title = {{The Biophore Concept}}, + year = {2003}, + author = {Pickett, S}, + isbn = {3527305211} +} + +@article{Bento2014TheUpdate, + title = {{The ChEMBL bioactivity database: An update}}, + year = {2014}, + journal = {Nucleic Acids Research}, + author = {Bento, A. PatrÃcia and Gaulton, Anna and Hersey, Anne and Bellis, Louisa J. and Chambers, Jon and Davies, Mark and Kr{\"{u}}ger, Felix A. and Light, Yvonne and Mak, Lora and McGlinchey, Shaun and Nowotka, Michal and Papadatos, George and Santos, Rita and Overington, John P.}, + number = {D1}, + volume = {42}, + doi = {10.1093/nar/gkt1031}, + issn = {03051048} +} + +@article{Gaulton2017The2017, + title = {{The ChEMBL database in 2017}}, + year = {2017}, + journal = {Nucleic Acids Research}, + author = {Gaulton, Anna and Hersey, Anne and Nowotka, Micha L. and Patricia Bento, A. and Chambers, Jon and Mendez, David and Mutowo, Prudence and Atkinson, Francis and Bellis, Louisa J. and Cibrian-Uhalte, Elena and Davies, Mark and Dedman, Nathan and Karlsson, Anneli and Magarinos, MaÅ•ia Paula and Overington, John P. and Papadatos, George and Smit, Ines and Leach, Andrew R.}, + number = {D1}, + month = {1}, + pages = {D945-D954}, + volume = {45}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/27899562 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC5210557 https://academic.oup.com/nar/article-lookup/doi/10.1093/nar/gkw1074}, + isbn = {2076792171}, + doi = {10.1093/nar/gkw1074}, + issn = {13624962}, + pmid = {27899562}, + arxivId = {1612.04326} +} + +@misc{Mosnier2007ThePathway, + title = {{The cytoprotective protein C pathway}}, + year = {2007}, + booktitle = {Blood}, + author = {Mosnier, Laurent O. and Zlokovic, Berislav V. and Griffin, John H.}, + doi = {10.1182/blood-2006-09-003004}, + issn = {00064971}, + pmid = {17110453} +} + +@article{Flower2003TheInhibitors, + title = {{The development of COX2 inhibitors}}, + year = {2003}, + journal = {Nature Reviews Drug Discovery}, + author = {Flower, Rod J.}, + number = {3}, + pages = {179--191}, + volume = {2}, + doi = {10.1038/nrd1034}, + issn = {14741776}, + pmid = {12612644} +} + +@article{Prakesch2008TheMcl-1, + title = {{The discovery of small molecule chemical probes of Bcl-XL and Mcl-1}}, + year = {2008}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Prakesch, Michael and Denisov, Alexey Yu and Naim, Marwen and Gehring, Kalle and Arya, Prabhat}, + number = {15}, + pages = {7443--7449}, + volume = {16}, + doi = {10.1016/j.bmc.2008.06.023}, + issn = {09680896}, + keywords = {Apoptosis, Bcl-2 family, Chemical biology, Combinatorial chemistry, Diversity-oriented synthesis, High-throughput synthesis, Mcl-1, Natural product-inspired probes, Protein-protein interactions, Small molecule-protein interactions by NMR} +} + +@article{Gao2012TheFormation, + title = {{The distribution of ligand-binding pockets around protein-protein interfaces suggests a general mechanism for pocket formation}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences}, + author = {Gao, M. and Skolnick, J.}, + number = {10}, + pages = {3784--3789}, + volume = {109}, + doi = {10.1073/pnas.1117768109}, + issn = {0027-8424} +} + +@article{Gao2012TheFormation., + title = {{The distribution of ligand-binding pockets around protein-protein interfaces suggests a general mechanism for pocket formation.}}, + year = {2012}, + journal = {Proceedings of the National Academy of Sciences of the United States of America}, + author = {Gao, Mu and Skolnick, Jeffrey}, + number = {10}, + month = {3}, + pages = {3784--9}, + volume = {109}, + url = {http://www.pnas.org/cgi/doi/10.1073/pnas.1117768109 http://www.ncbi.nlm.nih.gov/pubmed/22355140 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC3309739}, + doi = {10.1073/pnas.1117768109}, + issn = {1091-6490}, + pmid = {22355140} +} + +@article{Russ2005TheUpdate, + title = {{The druggable genome: An update}}, + year = {2005}, + journal = {Drug Discovery Today}, + author = {Russ, Andreas P. and Lampel, Stefan}, + number = {23-24}, + pages = {1607--1610}, + volume = {10}, + doi = {10.1016/S1359-6446(05)03666-4}, + issn = {13596446} +} + +@article{Shippenberg2009TheDisorders, + title = {{The dynorphin/kappa opioid receptor system: A new target for the treatment of addiction and affective disorders?}}, + year = {2009}, + journal = {Neuropsychopharmacology}, + author = {Shippenberg, Toni S.}, + number = {1}, + pages = {247}, + volume = {34}, + doi = {10.1038/npp.2008.165}, + issn = {0893133X} +} + +@article{deMatos2013TheBioinformatics, + title = {{The Enzyme Portal: A case study in applying user-centred design methods in bioinformatics}}, + year = {2013}, + journal = {BMC Bioinformatics}, + author = {de Matos, Paula and Cham, Jennifer A. and Cao, Hong and Alc{\'{a}}ntara, Rafael and Rowland, Francis and Lopez, Rodrigo and Steinbeck, Christoph}, + volume = {14}, + doi = {10.1186/1471-2105-14-103}, + issn = {14712105}, + keywords = {3D protein structure, Biological pathways, Card sorting, Design, Enzyme, Enzyme portal, Implementation, Personae, Prototyping, Usability testing, User experience, User profiles, User requirements, User-centered design (USA spelling), User-centred design} +} + +@article{Lagorce2011TheCollections, + title = {{The FAF-Drugs2 server: A multistep engine to prepare electronic chemical compound collections}}, + year = {2011}, + journal = {Bioinformatics}, + author = {Lagorce, David and Maupetit, Julien and Baell, Jonathan and Sperandio, Olivier and Tuff{\'{e}}ry, Pierre and Miteva, Maria A. and Galons, Hervé and Villoutreix, Bruno O.}, + number = {14}, + pages = {2018--2020}, + volume = {27}, + isbn = {1367-4803}, + doi = {10.1093/bioinformatics/btr333}, + issn = {13674803}, + pmid = {21636592} +} + +@article{Afgan2018TheUpdate, + title = {{The Galaxy platform for accessible, reproducible and collaborative biomedical analyses: 2018 update}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Afgan, Enis and Baker, Dannon and Batut, Bérénice and Van Den Beek, Marius and Bouvier, Dave and Ech, Martin and Chilton, John and Clements, Dave and Coraor, Nate and Gr{\"{u}}ning, Björn A. and Guerler, Aysam and Hillman-Jackson, Jennifer and Hiltemann, Saskia and Jalili, Vahid and Rasche, Helena and Soranzo, Nicola and Goecks, Jeremy and Taylor, James and Nekrutenko, Anton and Blankenberg, Daniel}, + doi = {10.1093/nar/gky379}, + issn = {13624962} +} + +@article{Carbon2019TheStrong, + title = {{The Gene Ontology Resource: 20 years and still GOing strong}}, + year = {2019}, + journal = {Nucleic Acids Research}, + author = {Carbon, S. and Douglass, E. and Dunn, N. and Good, B. and Harris, N. L. and Lewis, S. E. and Mungall, C. J. and Basu, S. and Chisholm, R. L. and Dodson, R. J. and Hartline, E. and Fey, P. and Thomas, P. D. and Albou, L. P. and Ebert, D. and Kesling, M. J. and Mi, H. and Muruganujan, A. and Huang, X. and Poudel, S. and Mushayahama, T. and Hu, J. C. and LaBonte, S. A. and Siegele, D. A. and Antonazzo, G. and Attrill, H. and Brown, N. H. and Fexova, S. and Garapati, P. and Jones, T. E.M. and Marygold, S. J. and Millburn, G. H. and Rey, A. J. and Trovisco, V. and Dos Santos, G. and Emmert, D. B. and Falls, K. and Zhou, P. and Goodman, J. L. and Strelets, V. B. and Thurmond, J. and Courtot, M. and Osumi, D. S. and Parkinson, H. and Roncaglia, P. and Acencio, M. L. and Kuiper, M. and Lreid, A. and Logie, C. and Lovering, R. C. and Huntley, R. P. and Denny, P. and Campbell, N. H. and Kramarz, B. and Acquaah, V. and Ahmad, S. H. and Chen, H. and Rawson, J. H. and Chibucos, M. C. and Giglio, M. and Nadendla, S. and Tauber, R. and Duesbury, M. J. and Del, N. T. and Meldal, B. H.M. and Perfetto, L. and Porras, P. and Orchard, S. and Shrivastava, A. and Xie, Z. and Chang, H. Y. and Finn, R. D. and Mitchell, A. L. and Rawlings, N. D. and Richardson, L. and Sangrador-Vegas, A. and Blake, J. A. and Christie, K. R. and Dolan, M. E. and Drabkin, H. J. and Hill, D. P. and Ni, L. and Sitnikov, D. and Harris, M. A. and Oliver, S. G. and Rutherford, K. and Wood, V. and Hayles, J. and Bahler, J. and Lock, A. and Bolton, E. R. and De Pons, J. and Dwinell, M. and Hayman, G. T. and Laulederkind, S. J.F. and Shimoyama, M. and Tutaj, M. and Wang, S. J. and D'Eustachio, P. and Matthews, L. and Balhoff, J. P. and Aleksander, S. A. and Binkley, G. and Dunn, B. L. and Cherry, J. M. and Engel, S. R. and Gondwe, F. and Karra, K. and MacPherson, K. A. and Miyasato, S. R. and Nash, R. S. and Ng, P. C. and Sheppard, T. K. and Shrivatsav Vp, A. and Simison, M. and Skrzypek, M. S. and Weng, S. and Wong, E. D. and Feuermann, M. and Gaudet, P. and Bakker, E. and Berardini, T. Z. and Reiser, L. and Subramaniam, S. and Huala, E. and Arighi, C. and Auchincloss, A. and Axelsen, K. and Argoud, G. P. and Bateman, A. and Bely, B. and Blatter, M. C. and Boutet, E. and Breuza, L. and Bridge, A. and Britto, R. and Bye-A-Jee, H. and Casals-Casas, C. and Coudert, E. and Estreicher, A. and Famiglietti, L. and Garmiri, P. and Georghiou, G. and Gos, A. and Gruaz-Gumowski, N. and Hatton-Ellis, E. and Hinz, U. and Hulo, C. and Ignatchenko, A. and Jungo, F. and Keller, G. and Laiho, K. and Lemercier, P. and Lieberherr, D. and Lussi, Y. and Mac-Dougall, A. and Magrane, M. and Martin, M. J. and Masson, P. and Natale, D. A. and Hyka, N. N. and Pedruzzi, I. and Pichler, K. and Poux, S. and Rivoire, C. and Rodriguez-Lopez, M. and Sawford, T. and Speretta, E. and Shypitsyna, A. and Stutz, A. and Sundaram, S. and Tognolli, M. and Tyagi, N. and Warner, K. and Zaru, R. and Wu, C. and Chan, J. and Cho, J. and Gao, S. and Grove, C. and Harrison, M. C. and Howe, K. and Lee, R. and Mendel, J. and Muller, H. M. and Raciti, D. and Van Auken, K. and Berriman, M. and Stein, L. and Sternberg, P. W. and Howe, D. and Toro, S. and Westerfield, M.}, + number = {D1}, + pages = {D330-D338}, + volume = {47}, + doi = {10.1093/nar/gky1055}, + issn = {13624962}, + pmid = {30395331} +} + +@article{Ritchie2011TheTypes, + title = {{The impact of aromatic ring count on compound developability: Further insights by examining carbo- and hetero-aromatic and -aliphatic ring types}}, + year = {2011}, + journal = {Drug Discovery Today}, + author = {Ritchie, Timothy J. and MacDonald, Simon J.F. and Young, Robert J. and Pickett, Stephen D.}, + number = {3-4}, + pages = {164--171}, + volume = {16}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.drudis.2010.11.014}, + doi = {10.1016/j.drudis.2010.11.014}, + issn = {13596446} +} + +@article{Smusz2013TheMethods, + title = {{The influence of the inactives subset generation on the performance of machine learning methods}}, + year = {2013}, + journal = {Journal of Cheminformatics}, + author = {Smusz, Sabina and Kurczab, Rafal and Bojarski, Andrzej J.}, + number = {4}, + pages = {1--8}, + volume = {5}, + doi = {10.1186/1758-2946-5-17}, + issn = {17582946} +} + +@article{Plewczynski2009TheCells, + title = {{The interactome: Predicting the protein-protein interactions in cells}}, + year = {2009}, + journal = {Cellular and Molecular Biology Letters}, + author = {Plewczy{\'{n}}ski, Dariusz and Ginalski, Krzysztof}, + number = {1}, + pages = {1--22}, + volume = {14}, + doi = {10.2478/s11658-008-0024-7}, + issn = {16891392}, + keywords = {Docking, Interactome, PDB database, Physical protein interactions, Protein complexes, Protein interaction networks, Protein-protein interactions} +} + +@article{Roughley2011TheCandidates, + title = {{The medicinal chemist's toolbox: An analysis of reactions used in the pursuit of drug candidates}}, + year = {2011}, + journal = {Journal of Medicinal Chemistry}, + author = {Roughley, Stephen D. and Jordan, Allan M.}, + number = {10}, + pages = {3451--3479}, + volume = {54}, + doi = {10.1021/jm200187y}, + issn = {00222623} +} + +@article{Major1997TheC, + title = {{The molecular virology of hepatitis C}}, + year = {1997}, + journal = {Hepatology}, + author = {Major, Marian E. and Feinstone, Stephen M.}, + number = {6}, + pages = {1527--1538}, + volume = {25}, + doi = {10.1002/hep.510250637}, + issn = {02709139} +} + +@article{Shefchek2020TheSpecies, + title = {{The Monarch Initiative in 2019: an integrative data and analytic platform connecting phenotypes to genotypes across species}}, + year = {2020}, + journal = {Nucleic acids research}, + author = {Shefchek, Kent A. and Harris, Nomi L. and Gargano, Michael and Matentzoglu, Nicolas and Unni, Deepak and Brush, Matthew and Keith, Daniel and Conlin, Tom and Vasilevsky, Nicole and Zhang, Xingmin Aaron and Balhoff, James P. and Babb, Larry and Bello, Susan M. and Blau, Hannah and Bradford, Yvonne and Carbon, Seth and Carmody, Leigh and Chan, Lauren E. and Cipriani, Valentina and Cuzick, Alayne and Rocca, Maria D. and Dunn, Nathan and Essaid, Shahim and Fey, Petra and Grove, Chris and Gourdine, Jean Phillipe and Hamosh, Ada and Harris, Midori and Helbig, Ingo and Hoatlin, Maureen and Joachimiak, Marcin and Jupp, Simon and Lett, Kenneth B. and Lewis, Suzanna E. and McNamara, Craig and Pendlington, Zoë M. and Pilgrim, Clare and Putman, Tim and Ravanmehr, Vida and Reese, Justin and Riggs, Erin and Robb, Sofia and Roncaglia, Paola and Seager, James and Segerdell, Erik and Similuk, Morgan and Storm, Andrea L. and Thaxon, Courtney and Thessen, Anne and Jacobsen, Julius O.B. and McMurry, Julie A. and Groza, Tudor and K{\"{o}}hler, Sebastian and Smedley, Damian and Robinson, Peter N. and Mungall, Christopher J. and Haendel, Melissa A. and Munoz-Torres, Monica C. and Osumi-Sutherland, David}, + number = {D1}, + pages = {D704-D715}, + volume = {48}, + doi = {10.1093/nar/gkz997}, + issn = {13624962} +} + +@article{Finn2016TheFuture, + title = {{The Pfam protein families database: Towards a more sustainable future}}, + year = {2016}, + journal = {Nucleic Acids Research}, + author = {Finn, Robert D. and Coggill, Penelope and Eberhardt, Ruth Y. and Eddy, Sean R. and Mistry, Jaina and Mitchell, Alex L. and Potter, Simon C. and Punta, Marco and Qureshi, Matloob and Sangrador-Vegas, Amaia and Salazar, Gustavo A. and Tate, John and Bateman, Alex}, + number = {D1}, + pages = {D279-D285}, + volume = {44}, + doi = {10.1093/nar/gkv1344}, + issn = {13624962} +} + +@article{Berman2002TheBank, + title = {{The Protein Data Bank}}, + year = {2002}, + journal = {Acta Crystallogr D Biol Crystallogr}, + author = {Berman, H. M. and Battistuz, T. and Bhat, T. N. and Bluhm, W. F. and Bourne, P. E. and Burkhardt, K. and Feng, Z. and Gilliland, G. L. and Iype, L. and Jain, S. and Fagan, P. and Marvin, J. and Padilla, D. and Ravichandran, V. and Schneider, B. and Thanki, N. and Weissig, H. and Westbrook, J. D. and Zardecki, C.}, + month = {6}, + pages = {899--907}, + volume = {58}, + issn = {0907-4449 (Print) 0907-4449 (Linking)} +} + +@article{Berman2000TheBank., + title = {{The Protein Data Bank.}}, + year = {2000}, + journal = {Nucleic acids research}, + author = {Berman, H M and Westbrook, J and Feng, Z and Gilliland, G and Bhat, T N and Weissig, H and Shindyalov, I N and Bourne, P E}, + number = {1}, + month = {1}, + pages = {235--42}, + volume = {28}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/10592235 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=PMC102472}, + issn = {0305-1048}, + pmid = {10592235} +} + +@article{Andersen2020TheSARS-CoV-2, + title = {{The proximal origin of SARS-CoV-2}}, + year = {2020}, + journal = {Nature Medicine}, + author = {Andersen, Kristian G and Rambaut, Andrew and Lipkin, W Ian and Holmes, Edward C and Garry, Robert F}, + url = {https://doi.org/10.1038/s41591-020-0820-9}, + doi = {10.1038/s41591-020-0820-9}, + issn = {1546-170X} +} + +@article{Jassal2020TheKnowledgebase, + title = {{The reactome pathway knowledgebase}}, + year = {2020}, + journal = {Nucleic Acids Research}, + author = {Jassal, Bijay and Matthews, Lisa and Viteri, Guilherme and Gong, Chuqiao and Lorente, Pascual and Fabregat, Antonio and Sidiropoulos, Konstantinos and Cook, Justin and Gillespie, Marc and Haw, Robin and Loney, Fred and May, Bruce and Milacic, Marija and Rothfels, Karen and Sevilla, Cristoffer and Shamovsky, Veronica and Shorser, Solomon and Varusai, Thawfeek and Weiser, Joel and Wu, Guanming and Stein, Lincoln and Hermjakob, Henning and D'Eustachio, Peter}, + doi = {10.1093/nar/gkz1031}, + issn = {13624962}, + pmid = {31691815} +} + +@article{Chen2018TheDiscovery, + title = {{The rise of deep learning in drug discovery}}, + year = {2018}, + journal = {Drug Discovery Today}, + author = {Chen, Hongming and Engkvist, Ola and Wang, Yinhai and Olivecrona, Marcus and Blaschke, Thomas}, + number = {6}, + month = {6}, + pages = {1241--1250}, + volume = {23}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/29366762 https://linkinghub.elsevier.com/retrieve/pii/S1359644617303598}, + doi = {10.1016/j.drudis.2018.01.039}, + issn = {18785832}, + pmid = {29366762} +} + +@article{GrossTheRegulation, + title = {{The role of BCL-2 family members in apoptosis Department of Biological Regulation}}, + author = {Gross, Atan} +} + +@article{Schuffenhauer2007TheClassification, + title = {{The scaffold tree - Visualization of the scaffold universe by hierarchical scaffold classification}}, + year = {2007}, + journal = {Journal of Chemical Information and Modeling}, + author = {Schuffenhauer, Ansgar and Ertl, Peter and Roggo, Silvio and Wetzel, Stefan and Koch, Marcus A. and Waldmann, Herbert}, + number = {1}, + pages = {47--58}, + volume = {47}, + doi = {10.1021/ci600338x}, + issn = {15499596} +} + +@article{Martiny-Baron2010TheAngiogenesis, + title = {{The small molecule specific EphB4 kinase inhibitor NVP-BHG712 inhibits VEGF driven angiogenesis}}, + year = {2010}, + journal = {Angiogenesis}, + author = {Martiny-Baron, Georg and Holzer, Philipp and Billy, Eric and Schnell, Christian and Brueggen, Joseph and Ferretti, Mireille and Schmiedeberg, Niko and Wood, Jeanette M. and Furet, Pascal and Imbach, Patricia}, + number = {3}, + pages = {259--267}, + volume = {13}, + doi = {10.1007/s10456-010-9183-z}, + issn = {09696970}, + keywords = {Angiogenesis, EphB4, EphrinB2, Protein kinase inhibitor, VEGF} +} + +@article{Rautureau2010TheProtein, + title = {{The structure of boo/Diva reveals a divergent:Bcl-2 protein}}, + year = {2010}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {Rautureau, Gilles J.P. and Day, Catherine L. and Hinds, Mark G.}, + number = {9}, + pages = {2181--2186}, + volume = {78}, + doi = {10.1002/prot.22728}, + issn = {08873585}, + keywords = {Apoptosis, BH3-only, Bcl-2, Boo, Diva} +} + +@misc{Wildhagen2011TheMutations, + title = {{The structure-function relationship of activated protein C: Lessons from natural and engineered mutations}}, + year = {2011}, + booktitle = {Thrombosis and Haemostasis}, + author = {Wildhagen, Karin C.A.A. and Lutgens, Esther and Loubele, Sarah T.G.B. and ten Cate, Hugo and Nicolaes, Gerry A.F.}, + doi = {10.1160/TH11-08-0522}, + issn = {03406245}, + keywords = {Activated protein C, Anticoagulation, Cytoprotection, Mutagenesis, Structure-function} +} + +@article{Salam2012TheSAR236553/REGN727, + title = {{The therapeutic potential of PCSK9 inhibition in primary dyslipidemia, the example from SAR236553/REGN727}}, + year = {2012}, + journal = {Expert Opinion on Investigational Drugs}, + author = {Salam, Amar M.}, + number = {10}, + pages = {1585--1588}, + volume = {21}, + doi = {10.1517/13543784.2012.707193}, + issn = {13543784}, + keywords = {Dyslipidemia, PCSK9, SAR236553/REGN727, Trial} +} + +@misc{Thomassin2017TheQuestions, + title = {{The trans-envelope architecture and function of the type 2 secretion system: new insights raising new questions}}, + year = {2017}, + booktitle = {Molecular Microbiology}, + author = {Thomassin, Jenny Lee and Santos Moreno, Javier and Guilvout, Ingrid and Tran Van Nhieu, Guy and Francetic, Olivera}, + doi = {10.1111/mmi.13704}, + issn = {13652958} +} + +@article{vonItzstein2007TheInhibitors, + title = {{The war against influenza: Discovery and development of sialidase inhibitors}}, + year = {2007}, + journal = {Nature Reviews Drug Discovery}, + author = {von Itzstein, Mark}, + number = {12}, + pages = {967--974}, + volume = {6}, + doi = {10.1038/nrd2400}, + issn = {14741776} +} + +@article{Fortmeyer2007TheEffect, + title = {{The zero effect}}, + year = {2007}, + journal = {Architectural Record}, + author = {Fortmeyer, Russell}, + number = {3}, + pages = {153}, + volume = {195}, + doi = {10.1038/news070604-1}, + issn = {0003858X} +} + +@article{Ling2010TheoreticalMimetics, + title = {{Theoretical studies on the interactions of XIAP-BIR3 domain with bicyclic and tricyclic core monovalent Smac mimetics}}, + year = {2010}, + journal = {Journal of Molecular Graphics and Modelling}, + author = {Ling, Baoping and Dong, Lihua and Zhang, Rui and Wang, Zhiguo and Liu, Yongjun and Liu, Chengbu}, + number = {3}, + pages = {354--362}, + volume = {29}, + publisher = {Elsevier Inc.}, + url = {http://dx.doi.org/10.1016/j.jmgm.2010.09.011}, + doi = {10.1016/j.jmgm.2010.09.011}, + issn = {10933263}, + keywords = {Binding free energy, Caspase-9, Molecular docking, Molecular dynamics simulations, Smac mimetics, XIAP-BIR3} +} + +@article{Sperandio2002TheoreticalDocking, + title = {{Theoretical study of fast repair of DNA damage by cistanoside C and analogs: Mechanism and docking}}, + year = {2002}, + journal = {SAR and QSAR in environmental research}, + author = {Sperandio, O. and Fan, B. T. and Panaye, A. and Doucet, J. P. and El Fassi, N. and Zakrzewska, K. and Jia, Z. J. and Zheng, R. L.}, + number = {2}, + pages = {243--260}, + volume = {13}, + isbn = {1062-936X}, + doi = {10.1080/10629360290002749}, + issn = {1062936X}, + pmid = {12071653}, + keywords = {Cistanoside C and analogs, Docking, Mechanism, Phenylpropanoid glycosides, Repair of DNA damage} +} + +@article{Sperandio2002TheoreticalDockingb, + title = {{Theoretical study of fast repair of DNA damage by cistanoside C and analogs: Mechanism and docking}}, + year = {2002}, + journal = {SAR and QSAR in environmental research}, + author = {Sperandio, O. and Fan, B. T. and Panaye, A. and Doucet, J. P. and El Fassi, N. and Zakrzewska, K. and Jia, Z. J. and Zheng, R. L.}, + number = {2}, + pages = {243--260}, + volume = {13}, + doi = {10.1080/10629360290002749}, + issn = {1062936X}, + keywords = {Cistanoside C and analogs, Docking, Mechanism, Phenylpropanoid glycosides, Repair of DNA damage} +} + +@article{Shimaoka2003TherapeuticFunction, + title = {{Therapeutic antagonists and conformational regulation of integrin function}}, + year = {2003}, + journal = {Nature Reviews Drug Discovery}, + author = {Shimaoka, Motomu and Springer, Timothy A.}, + number = {9}, + pages = {703--716}, + volume = {2}, + doi = {10.1038/nrd1174}, + issn = {14741776} +} + +@article{Sabat2014TherapeuticSystem, + title = {{Therapeutic opportunities of the IL-22-IL-22R1 system}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + author = {Sabat, Robert and Ouyang, Wenjun and Wolk, Kerstin}, + number = {1}, + pages = {21--38}, + volume = {13}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd4176}, + doi = {10.1038/nrd4176}, + issn = {14741776} +} + +@article{Boyd2014TherapeuticLigands, + title = {{Therapeutic targeting of EPH receptors and their ligands}}, + year = {2014}, + journal = {Nature Reviews Drug Discovery}, + author = {Boyd, Andrew W. and Bartlett, Perry F. and Lackmann, Martin}, + number = {1}, + pages = {39--62}, + volume = {13}, + publisher = {Nature Publishing Group}, + url = {http://dx.doi.org/10.1038/nrd4175}, + doi = {10.1038/nrd4175}, + issn = {14741776} +} + +@article{Prochownik2010TherapeuticMyc, + title = {{Therapeutic Targeting of Myc}}, + year = {2010}, + journal = {Genes {\&} Cancer}, + author = {Prochownik, E. V. and Vogt, P. K.}, + number = {6}, + pages = {650--659}, + volume = {1}, + doi = {10.1177/1947601910377494}, + issn = {1947-6019}, + pmid = {21132100}, + keywords = {10058-f4, id proteins, mad, max} +} + +@article{Rechfeld2014ThienoquinolinesInteraction, + title = {{Thienoquinolines as novel disruptors of the PKC{$\epsilon$}/RACK2 protein-protein interaction}}, + year = {2014}, + journal = {Journal of Medicinal Chemistry}, + author = {Rechfeld, Florian and Gruber, Peter and Kirchmair, Johannes and Boehler, Markus and Hauser, Nina and Hechenberger, Georg and Garczarczyk, Dorota and Lapa, Gennady B. and Preobrazhenskaya, Maria N. and Goekjian, Peter and Langer, Thierry and Hofmann, Johann}, + number = {8}, + pages = {3235--3246}, + volume = {57}, + doi = {10.1021/jm401605c}, + issn = {15204804} +} + +@article{Becker1998Three-dimensionalDNA, + title = {{Three-dimensional structure of the Stat3{$\beta$} homodimer bound to DNA}}, + year = {1998}, + journal = {Nature}, + author = {Becker, Stefan and Groner, Bernd and M{\"{u}}ller, Christoph W.}, + number = {6689}, + pages = {145--151}, + volume = {394}, + doi = {10.1038/28101}, + issn = {00280836} +} + +@article{Attoub2013ThymoquinoneVivo, + title = {{Thymoquinone as an anticancer agent: Evidence from inhibition of cancer cells viability and invasion in vitro and tumor growth in vivo}}, + year = {2013}, + journal = {Fundamental and Clinical Pharmacology}, + author = {Attoub, Samir and Sperandio, Olivier and Raza, Haider and Arafat, Kholoud and Al-Salam, Suhail and Al Sultan, Mahmood Ahmed and Al Safi, Maha and Takahashi, Takashi and Adem, Abdu}, + number = {5}, + pages = {557--569}, + volume = {27}, + isbn = {1472-8206 (Electronic){\textbackslash}r0767-3981 (Linking)}, + doi = {10.1111/j.1472-8206.2012.01056.x}, + issn = {07673981}, + pmid = {22788741}, + keywords = {DNA damage, Invasion, Lung {\&} breast cancer, Thymoquinone, Tumor growth, Viability} +} + +@article{Higueruelo2013TIMBALInteractions, + title = {{TIMBAL v2: Update of a database holding small molecules modulating protein-protein interactions}}, + year = {2013}, + journal = {Database}, + author = {Higueruelo, Alicia P. and Jubb, Harry and Blundell, Tom L.}, + month = {2}, + pages = {bat039-bat039}, + volume = {2013}, + doi = {10.1093/database/bat039}, + issn = {17580463}, + language = {English} +} + +@article{Bispinck1998TimeFibroblasts, + title = {{Time course of the tilorone-induced lysosomal accumulation of sulphated glycosaminoglycans in cultured fibroblasts}}, + year = {1998}, + journal = {Experimental and Toxicologic Pathology}, + author = {Bispinck, Freia and Fischer, Jens and L{\"{u}}llmann-Rauch, Renate and Ziecenhagen, Manfred W.}, + number = {4-6}, + pages = {411--415}, + volume = {50}, + doi = {10.1016/S0940-2993(98)80027-4}, + issn = {09402993}, + keywords = {Dicationic amphiphilic drugs, Drugs, dicationic amphiphilic, Glycosaminoglycans, sulphated, Lysosomal GAG storage, Lysosomes, Tilorone} +} + +@article{Akritopoulou-Zanze2007Topography-biasedCome, + title = {{Topography-biased compound library design: the shape of things to come?}}, + year = {2007}, + journal = {Drug Discovery Today}, + author = {Akritopoulou-Zanze, Irini and Metz, James T. and Djuric, Stevan W.}, + number = {21-22}, + pages = {948--952}, + volume = {12}, + doi = {10.1016/j.drudis.2007.08.017}, + issn = {13596446} +} + +@article{Waldmann2008TotalsyntheseF-Aktin, + title = {{Totalsynthese von Chondramid C und Bindung an F-Aktin}}, + year = {2008}, + journal = {Angewandte Chemie}, + author = {Waldmann, Herbert and Hu, Tai-Shan and Renner, Steffen and Menninger, Sascha and Tannert, René and Oda, Toshiro and Arndt, Hans-Dieter}, + number = {34}, + pages = {6573--6577}, + volume = {120}, + doi = {10.1002/ange.200801010}, + issn = {00448249} +} + +@article{Yongye2013TowardCompounds, + title = {{Toward an efficient approach to identify molecular scaffolds possessing selective or promiscuous compounds}}, + year = {2013}, + journal = {Chemical Biology and Drug Design}, + author = {Yongye, Austin B. and Medina-Franco, José L.}, + number = {4}, + pages = {367--375}, + volume = {82}, + doi = {10.1111/cbdd.12162}, + issn = {17470277}, + keywords = {Chemoinformatics, Cyclic system, Data mining, Molecular diversity, Molecular scaffolds, Polypharmacology, Structure-activity relationships} +} + +@article{Kysilka2012TowardsInteraction, + title = {{Towards a better understanding of the specificity of protein-protein interaction}}, + year = {2012}, + journal = {Journal of Molecular Recognition}, + author = {Kysilka, Jiřà and Vondr{\'{a}}{\v{s}}ek, JiÅ™Ã}, + number = {11}, + pages = {604--615}, + volume = {25}, + doi = {10.1002/jmr.2219}, + issn = {09523499}, + keywords = {bioinformatics, empirical potentials, interaction energy, molecular recognition, protein-protein interaction, side chain-side chain interaction, x-ray structure analysis} +} + +@article{Rual2005TowardsNetwork, + title = {{Towards a proteome-scale map of the human protein-protein interaction network}}, + year = {2005}, + journal = {Nature}, + author = {Rual, Jean François and Venkatesan, Kavitha and Hao, Tong and Hirozane-Kishikawa, Tomoko and Dricot, Amélie and Li, Ning and Berriz, Gabriel F. and Gibbons, Francis D. and Dreze, Matija and Ayivi-Guedehoussou, Nono and Klitgord, Niels and Simon, Christophe and Boxem, Mike and Milstein, Stuart and Rosenberg, Jennifer and Goldberg, Debra S. and Zhang, Lan V. and Wong, Sharyl L. and Franklin, Giovanni and Li, Siming and Albala, Joanna S. and Lim, Janghoo and Fraughton, Carlene and Llamosas, Estelle and Cevik, Sebiha and Bex, Camille and Lamesch, Philippe and Sikorski, Robert S. and Vandenhaute, Jean and Zoghbi, Huda Y. and Smolyar, Alex and Bosak, Stephanie and Sequerra, Reynaldo and Doucette-Stamm, Lynn and Cusick, Michael E. and Hill, David E. and Roth, Frederick P. and Vidal, Marc}, + number = {7062}, + pages = {1173--1178}, + volume = {437}, + doi = {10.1038/nature04209}, + issn = {00280836}, + pmid = {16189514} +} + +@article{Townshend2018TransferrablePrediction, + title = {{Transferrable End-to-End Learning for Protein Interface Prediction}}, + year = {2018}, + author = {Townshend, Raphael J. L. and Bedi, Rishi and Dror, Ron O.}, + month = {7}, + url = {http://arxiv.org/abs/1807.01297}, + arxivId = {1807.01297} +} + +@article{Eyrisch2012TransientInhibitors, + title = {{Transient pockets on XIAP-BIR2: Toward the characterization of putative binding sites of small-molecule XIAP inhibitors}}, + year = {2012}, + journal = {Journal of Molecular Modeling}, + author = {Eyrisch, Susanne and Medina-Franco, Jose L. and Helms, Volkhard}, + number = {5}, + pages = {2031--2042}, + volume = {18}, + doi = {10.1007/s00894-011-1217-y}, + issn = {16102940}, + keywords = {Apoptosis, Docking, Inhibitors, Molecular dynamics simulation, Pocket detection, Protein-protein interaction, Transient pockets} +} + +@article{AcunerOzbabacan2011TransientInteractions, + title = {{Transient proteinprotein interactions}}, + year = {2011}, + journal = {Protein Engineering, Design and Selection}, + author = {Acuner Ozbabacan, Saliha Ece and Engin, Hatice Billur and Gursoy, Attila and Keskin, Ozlem}, + number = {9}, + pages = {635--648}, + volume = {24}, + doi = {10.1093/protein/gzr025}, + issn = {17410126}, + keywords = {protein interaction types, protein interface, transient protein-protein interactions, transient proteindrug interactions} +} + +@article{Fink2012TransmembraneChallenges, + title = {{Transmembrane domains interactions within the membrane milieu: Principles, advances and challenges}}, + year = {2012}, + journal = {Biochimica et Biophysica Acta - Biomembranes}, + author = {Fink, Avner and Sal-Man, Neta and Gerber, Doron and Shai, Yechiel}, + number = {4}, + pages = {974--983}, + volume = {1818}, + publisher = {Elsevier B.V.}, + url = {http://dx.doi.org/10.1016/j.bbamem.2011.11.029}, + doi = {10.1016/j.bbamem.2011.11.029}, + issn = {00052736}, + keywords = {GALEX, Helix-helix interaction, Recognition within the membrane, TOXCAT, ToxR, Transmembrane domain} +} + +@misc{Nivaskumar2014TypeEscalator, + title = {{Type II secretion system: A magic beanstalk or a protein escalator}}, + year = {2014}, + booktitle = {Biochimica et Biophysica Acta - Molecular Cell Research}, + author = {Nivaskumar, Mangayarkarasi and Francetic, Olivera}, + doi = {10.1016/j.bbamcr.2013.12.020}, + issn = {18792596}, + keywords = {Fiber assembly, Folded protein secretion, Pilotin, Pseudopili, Secretin, Traffic ATPase} +} + +@article{Johnson2016Ultra-High-ThroughputInteractions, + title = {{Ultra-High-Throughput Structure-Based Virtual Screening for Small-Molecule Inhibitors of Protein-Protein Interactions}}, + year = {2016}, + journal = {Journal of Chemical Information and Modeling}, + author = {Johnson, David K. and Karanicolas, John}, + number = {2}, + pages = {399--411}, + volume = {56}, + doi = {10.1021/acs.jcim.5b00572}, + issn = {15205142}, + pmid = {26726827} +} + +@book{Bowles2010UndercoverDesign, + title = {{Undercover User Experience Design}}, + year = {2010}, + booktitle = {The Analyst}, + author = {Bowles, Cennydd and Box, James}, + pages = {183}, + publisher = {New Riders}, + url = {http://scholar.google.com/scholar?hl=en&btnG=Search&q=intitle:Undercover+User+Experience+Design#0}, + isbn = {9780321719904}, + doi = {10.1039/c1an15365j}, + issn = {13645528}, + pmid = {21796289} +} + +@article{Peironcely2011UnderstandingMetabolite-Likeness, + title = {{Understanding and classifying metabolite space and Metabolite-Likeness}}, + year = {2011}, + journal = {PLoS ONE}, + author = {Peironcely, Julio E. and Reijmers, Theo and Coulier, Leon and Bender, Andreas and Hankemeier, Thomas}, + number = {12}, + volume = {6}, + doi = {10.1371/journal.pone.0028966}, + issn = {19326203} +} + +@article{Brown2003UnderstandingDesigned, + title = {{Understanding protein-ligand interactions is central to drug design and the dis- covery of new medicines to benefit human health. It remains true that very few drugs have been designed}}, + year = {2003}, + author = {Brown, D}, + pages = {1--2}, + isbn = {3527305211} +} + +@article{Bateman2019UniProt:Knowledge, + title = {{UniProt: A worldwide hub of protein knowledge}}, + year = {2019}, + journal = {Nucleic Acids Research}, + author = {Bateman, Alex}, + doi = {10.1093/nar/gky1049}, + issn = {13624962} +} + +@inproceedings{Huang2019UnsupervisedDiscovery, + title = {{Unsupervised deep learning by neighbourhood discovery}}, + year = {2019}, + booktitle = {36th International Conference on Machine Learning, ICML 2019}, + author = {Huang, Jiabo and Dong, Qi and Gong, Shaogang and Zhu, Xiatian}, + isbn = {9781510886988}, + arxivId = {1904.11567} +} + +@article{Bonachera2012UsingSearch, + title = {{Using self-organizing maps to accelerate similarity search}}, + year = {2012}, + journal = {Bioorganic and Medicinal Chemistry}, + author = {Bonachera, Fanny and Marcou, Gilles and Kireeva, Natalia and Varnek, Alexandre and Horvath, Dragos}, + number = {18}, + pages = {5396--5409}, + volume = {20}, + publisher = {Elsevier Ltd}, + url = {http://dx.doi.org/10.1016/j.bmc.2012.04.024}, + doi = {10.1016/j.bmc.2012.04.024}, + issn = {09680896}, + keywords = {Chemical space navigation, Fuzzy pharmacophores, Kohonen maps, Similarity searching, Virtual screening} +} + +@article{Cermakova2014ValidationLeukemia, + title = {{Validation and structural characterization of the LEDGF/p75-MLL interface as a new target for the treatment of MLL-dependent leukemia}}, + year = {2014}, + journal = {Cancer Research}, + author = {{\v{C}}ermakov{\'{a}}, KateÅ™ina and Tesina, Petr and Demeulemeester, Jonas and El Ashkar, Sara and M{\'{e}}reau, Hélène and Schwaller, Juerg and {\v{R}}ez{\'{a}}{\v{c}}ov{\'{a}}, PavlÃna and Veverka, Vaclav and De Rijck, Jan}, + number = {18}, + pages = {5139--5151}, + volume = {74}, + doi = {10.1158/0008-5472.CAN-13-3602}, + issn = {15387445} +} + +@article{LeGuilloux2011VisualSubspaces, + title = {{Visual characterization and diversity quantification of chemical libraries: 1. Creation of delimited reference chemical subspaces}}, + year = {2011}, + journal = {Journal of Chemical Information and Modeling}, + author = {Le Guilloux, Vincent and Colliandre, Lionel and Bourg, Stéphane and Gu{\'{e}}negou, Guillaume and Dubois-Chevalier, Julie and Morin-Allory, Luc}, + number = {8}, + pages = {1762--1774}, + volume = {51}, + doi = {10.1021/ci200051r}, + issn = {15499596} +} + +@article{VanDeursen2011VisualisationPubChem, + title = {{Visualisation of the chemical space of fragments, lead-like and drug-like molecules in PubChem}}, + year = {2011}, + journal = {Journal of Computer-Aided Molecular Design}, + author = {Van Deursen, Ruud and Blum, Lorenz C. and Reymond, Jean Louis}, + number = {7}, + pages = {649--662}, + volume = {25}, + doi = {10.1007/s10822-011-9437-x}, + issn = {0920654X}, + keywords = {Chemical space, Fragments, PubChem, Virtual screening} +} + +@article{Ruddigkeit2013VisualizationGDB-17, + title = {{Visualization and virtual screening of the chemical universe database GDB-17}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Ruddigkeit, Lars and Blum, Lorenz C. and Reymond, Jean Louis}, + number = {1}, + pages = {56--65}, + volume = {53}, + doi = {10.1021/ci300535x}, + issn = {15499596} +} + +@article{Davis2015VoicesBiology, + title = {{Voices of chemical biology}}, + year = {2015}, + journal = {Nature chemical biology}, + author = {Davis, Benjamin G and Hsieh-wilson, Linda C and Mccourt, Peter and Chen, Peng and Li, Xiang David and Strauss, Erick and Wang, Lianrong}, + number = {12}, + pages = {900--901}, + volume = {11}, + doi = {10.1038/nchembio.1975}, + issn = {15524469} +} + +@article{Ward2014WhatDesign, + title = {{What does the aromatic ring number mean for drug design?}}, + year = {2014}, + journal = {Expert Opinion on Drug Discovery}, + author = {Ward, Simon E. and Beswick, Paul}, + number = {9}, + pages = {995--1003}, + volume = {9}, + doi = {10.1517/17460441.2014.932346}, + issn = {1746045X}, + keywords = {Aromatic ring, Chemical space, Developability, Heteroaliphatic ring, Heteroaromatic ring, Lipophilicity, Solubility} +} + +@article{Clark2008WhatDiscovery, + title = {{What has virtual screening ever done for drug discovery?}}, + year = {2008}, + journal = {Expert opinion on drug discovery}, + author = {Clark, David E}, + number = {8}, + month = {8}, + pages = {841--51}, + volume = {3}, + url = {https://www.tandfonline.com/doi/full/10.1517/17460441.3.8.841 http://www.ncbi.nlm.nih.gov/pubmed/23484962}, + doi = {10.1517/17460441.3.8.841}, + issn = {1746-0441}, + pmid = {23484962} +} + +@article{Clark2008WhatDiscoveryb, + title = {{What has virtual screening ever done for drug discovery?}}, + year = {2008}, + journal = {Expert Opinion on Drug Discovery}, + author = {Clark, David E}, + number = {8}, + month = {8}, + pages = {841--851}, + volume = {3}, + url = {https://www.tandfonline.com/doi/full/10.1517/17460441.3.8.841}, + doi = {10.1517/17460441.3.8.841}, + issn = {1746-0441}, + pmid = {23484962} +} + +@article{Clark2008WhatDiscoveryc, + title = {{What has virtual screening ever done for drug discovery?}}, + year = {2008}, + journal = {Expert Opinion on Drug Discovery}, + author = {Clark, David E.}, + number = {8}, + pages = {841--851}, + volume = {3}, + doi = {10.1517/17460441.3.8.841}, + issn = {17460441}, + keywords = {Computer-aided drug design, Virtual screening} +} + +@article{Bourbon2014WhichInteractions, + title = {{Which Three-Dimensional Characteristics Make E ffi cient Inhibitors of Protein − Protein Interactions?}}, + year = {2014}, + author = {Bourbon, Laura M L and Villoutreix, Bruno O and Sperandio, Olivier} +} + +@article{Kuenemann2014WhichInteractions, + title = {{Which three-dimensional characteristics make efficient inhibitors of protein-protein interactions?}}, + year = {2014}, + journal = {Journal of Chemical Information and Modeling}, + author = {Kuenemann, Mélaine A. and Bourbon, Laura M.L. and Labb{\'{e}}, Céline M. and Villoutreix, Bruno O. and Sperandio, Olivier}, + number = {11}, + month = {11}, + pages = {3067--3079}, + volume = {54}, + isbn = {0006-3002 (Print)}, + doi = {10.1021/ci500487q}, + issn = {15205142}, + pmid = {25285479} +} + +@article{Lee2018WormBaseStage, + title = {{WormBase 2017: Molting into a new stage}}, + year = {2018}, + journal = {Nucleic Acids Research}, + author = {Lee, Raymond Y.N. and Howe, Kevin L. and Harris, Todd W. and Arnaboldi, Valerio and Cain, Scott and Chan, Juancarlos and Chen, Wen J. and Davis, Paul and Gao, Sibyl and Grove, Christian and Kishore, Ranjana and Muller, Hans Michael and Nakamura, Cecilia and Nuin, Paulo and Paulini, Michael and Raciti, Daniela and Rodgers, Faye and Russell, Matt and Schindelman, Gary and Tuli, Mary Ann and Van Auken, Kimberly and Wang, Qinghua and Williams, Gary and Wright, Adam and Yook, Karen and Berriman, Matthew and Kersey, Paul and Schedl, Tim and Stein, Lincoln and Sternberg, Paul W.}, + doi = {10.1093/nar/gkx998}, + issn = {13624962}, + pmid = {29069413} +} + +@article{Accordino2012WrappingInterfaces, + title = {{Wrapping mimicking in drug-like small molecules disruptive of protein-protein interfaces}}, + year = {2012}, + journal = {Proteins: Structure, Function and Bioinformatics}, + author = {Accordino, Sebastián R. and Morini, Marcela A. and Sierra, MarÃa Belén and Fris, J. Ariel RodrÃguez and Appignanesi, Gustavo A. and Fern{\'{a}}ndez, Ariel}, + number = {7}, + pages = {1755--1765}, + volume = {80}, + doi = {10.1002/prot.24069}, + issn = {08873585}, + keywords = {Binding, Design, Drug, Interface, Protein} +} + +@article{Sperandio2009WwLigCSRre:Optimization, + title = {{wwLigCSRre: A 3D ligand-based server for hit identification and optimization}}, + year = {2009}, + journal = {Nucleic Acids Research}, + author = {Sperandio, O. and Petitjean, M. and Tuffery, P.}, + number = {SUPPL. 2}, + volume = {37}, + doi = {10.1093/nar/gkp324}, + issn = {03051048} +} + +@article{Irwin2012Zinc12, + title = {{Zinc12}}, + year = {2012}, + journal = {Chemichal Information and Modeling}, + author = {Irwin, J. J. and Sterling, T. and Mysinger, M. M. and Bolstad, E. S. and Coleman, R. G.}, + pages = {1757--1768}, + volume = {52}, + url = {http://zinc.docking.org/} +} +@article{nantasenamat_qsar_2013, + title = {{{\{}QSAR{\}} modeling of aromatase inhibitory activity of 1-substituted 1,2,3-triazole analogs of letrozole.}}, + author = {Nantasenamat, Chanin and Worachartcheewan, Apilak and Prachayasittikul, Supaluk and Isarankura-Na-Ayudhya, Chartchalerm and Prachayasittikul, Virapong}, + pages = {99--114}, + volume = {69C}, + doi = {10.1016/j.ejmech.2013.08.015} +} + +@article{lewell_recap--retrosynthetic_1998, + title = {{{\{}RECAP{\}}--retrosynthetic combinatorial analysis procedure: a powerful new technique for identifying privileged molecular fragments with useful applications in combinatorial chemistry}}, + author = {Lewell, X Q and Judd, D B and Watson, S P and Hann, M M}, + pages = {511--522}, + volume = {38} +} + +@article{lounkine_saranea:_2010, + title = {{{\{}SARANEA{\}}: A Freely Available Program To Mine Structure−Activity and Structure−Selectivity Relationship Information in Compound Data Sets}}, + author = {Lounkine, Eugen and Wawer, Mathias and Wassermann, Anne Mai and Bajorath, Jürgen}, + pages = {68--78}, + volume = {50}, + doi = {10.1021/ci900416a} +} + +@article{yan_scafbank:_2009, + title = {{{\{}ScafBank{\}}: a public comprehensive Scaffold database to support molecular hopping}}, + author = {Yan, Bi-Bo and Xue, Meng-Zhu and Xiong, Bing and Liu, Ke and Hu, Ding-Yu and Shen, Jing-Kang}, + pages = {251--258}, + volume = {30}, + doi = {10.1038/aps.2008.22} +} + +@article{noauthor_sciencedirect.com_nodate, + title = {{{\{}ScienceDirect{\}}.com - Cell - Shedding Light on Apoptosis at Subcellular Membranes}} +} + +@article{chevillard_scubidoo:_2015, + title = {{{\{}SCUBIDOO{\}}: A Large yet Screenable and Easily Searchable Database of Computationally Created Chemical Compounds Optimized toward High Likelihood of Synthetic Tractability}}, + author = {Chevillard, F and Kolb, P}, + pages = {1824--1835}, + volume = {55}, + doi = {10.1021/acs.jcim.5b00203}, + issn = {1549-960X (Electronic) 1549-9596 (Linking)} +} + +@article{vucic_smac_2002, + title = {{{\{}SMAC{\}} Negatively Regulates the Anti-apoptotic Activity of Melanoma Inhibitor of Apoptosis ({\{}ML{\}}-{\{}IAP{\}})}}, + author = {Vucic, Domagoj and Deshayes, Kurt and Ackerly, Heidi and Pisabarro, Maria Teresa and Kadkhodayan, Saloumeh and Fairbrother, Wayne J and Dixit, Vishva M}, + pages = {12275--12279}, + volume = {277}, + doi = {10.1074/jbc.M112045200} +} + +@article{frolkis_smpdb:_2010, + title = {{{\{}SMPDB{\}}: The Small Molecule Pathway Database.}}, + author = {Frolkis, Alex and Knox, Craig and Lim, Emilia and Jewison, Timothy and Law, Vivian and Hau, David D and Liu, Phillip and Gautam, Bijaya and Ly, Son and Guo, An Chi and Xia, Jianguo and Liang, Yongjie and Shrivastava, Savita and Wishart, David S}, + pages = {D480--7}, + volume = {38}, + doi = {10.1093/nar/gkp1002} +} + +@article{franceschini_string_2013, + title = {{{\{}STRING{\}} v9.1: protein-protein interaction networks, with increased coverage and integration.}}, + author = {Franceschini, Andrea and Szklarczyk, Damian and Frankild, Sune and Kuhn, Michael and Simonovic, Milan and Roth, Alexander and Lin, Jianyi and Minguez, Pablo and Bork, Peer and von Mering, Christian and Jensen, Lars J}, + pages = {D808--15}, + volume = {41}, + doi = {10.1093/nar/gks1094} +} + +@article{hecker_supertarget_2012, + title = {{{\{}SuperTarget{\}} goes quantitative: update on drug-target interactions.}}, + author = {Hecker, Nikolai and Ahmed, Jessica and Von Eichborn, Joachim and Dunkel, Mathias and Macha, Karel and Eckert, Andreas and Gilson, Michael K and Bourne, Philip E and Preissner, Robert}, + pages = {D1113--7}, + volume = {40}, + doi = {10.1093/nar/gkr912} +} + +@article{schmidt_supertoxic:_2009, + title = {{{\{}SuperToxic{\}}: a comprehensive database of toxic compounds.}}, + author = {Schmidt, Ulrike and Struck, Swantje and Gruening, Bjoern and Hossbach, Julia and Jaeger, Ines S and Parol, Roza and Lindequist, Ulrike and Teuscher, Eberhard and Preissner, Robert}, + pages = {D295--9}, + volume = {37}, + doi = {10.1093/nar/gkn850} +} + +@article{de_souza_surfaceomedb:_2012, + title = {{{\{}SurfaceomeDB{\}}: a cancer-orientated database for genes encoding cell surface proteins.}}, + author = {de Souza, Jorge Estefano Santana and Galante, Pedro Alexandre Favoretto and de Almeida, Renan Valieris Bueno and da Cunha, Julia Pinheiro Chagas and Ohara, Daniel Takatori and Ohno-Machado, Lucila and Old, Lloyd J and de Souza, Sandro José}, + pages = {15}, + volume = {12} +} + +@article{herbeuval_tnf-related_2005, + title = {{{\{}TNF{\}}-related apoptosis-inducing ligand ({\{}TRAIL{\}}) in {\{}HIV{\}}-1-infected patients and its in vitro production by antigen-presenting cells}}, + author = {Herbeuval, J P and Boasso, A and Grivel, J C and Hardy, A W and Anderson, S A and Dolan, M J and Chougnet, C and Lifson, J D and Shearer, G M}, + pages = {2458--2464}, + volume = {105}, + doi = {10.1182/blood-2004-08-3058}, + issn = {0006-4971 (Print) 0006-4971 (Linking)}, + keywords = {Acquired Immunodeficiency Syndrome/drug therapy/*, Antigens, Apoptosis Regulatory Proteins/biosynthesis/*immun, Cell Death/immunology, Cells, Cultured, Dendritic Cells/*immunology/metabolism/pathology/, Female, Gene Expression Regulation/drug effects/*immunolo, Humans, Interferon Type I/immunology, Male, Membrane Glycoproteins/biosynthesis/*immunology, Monocytes/*immunology/metabolism/pathology/virolo, Signal Transduction/immunology, Tumor Necrosis Factor-alpha/biosynthesis/*immunol, Viral Load, {\{}CD{\}}4-Positive T-Lymphocytes/immunology/metabolis, {\{}CD{\}}4/immunology/pharmacology, {\{}HIV{\}}-1/*immunology, {\{}STAT{\}}1 Transcription Factor/immunology/metabolis, {\{}STAT{\}}2 Transcription Factor/immunology/metabolis, {\{}TNF{\}}-Related Apoptosis-Inducing Ligand} +} + +@article{uniprot_uniprot:_2015, + title = {{{\{}UniProt{\}}: a hub for protein information}}, + author = {UniProt, Consortium}, + pages = {D204--12}, + volume = {43}, + doi = {10.1093/nar/gku989}, + issn = {1362-4962 (Electronic) 0305-1048 (Linking)}, + keywords = {*Databases, *Molecular Sequence Annotation, *Sequence Analysis, Protein, Proteome} +} + +@misc{noauthor_wo2006097261_2011, + title = {{{\{}WO{\}}2006097261}}, + pages = {1--293} +} + +@misc{noauthor_wo2007063013_2011, + title = {{{\{}WO{\}}2007063013}}, + pages = {1--211} +} + +@misc{noauthor_wo2007082805_2011, + title = {{{\{}WO{\}}2007082805}}, + pages = {1--79} +} + +@misc{noauthor_wo2007104714_2011, + title = {{{\{}WO{\}}2007104714}}, + pages = {1--118} +} + +@misc{noauthor_wo2007107543_2011, + title = {{{\{}WO{\}}2007107543}}, + pages = {1--60} +} + +@misc{noauthor_wo2007107545_2011, + title = {{{\{}WO{\}}2007107545}}, + pages = {1--57} +} + +@misc{noauthor_wo2008005266_2011, + title = {{{\{}WO{\}}2008005266}}, + pages = {1--53} +} + +@misc{noauthor_wo2008005268_2011, + title = {{{\{}WO{\}}2008005268}}, + pages = {1--205} +} + +@misc{noauthor_wo2008016893_2011, + title = {{{\{}WO{\}}2008016893}}, + pages = {1--57} +} + +@misc{noauthor_wo2008034736_2011, + title = {{{\{}WO{\}}2008034736}}, + pages = {1--319} +} + +@misc{noauthor_wo2008036168_2011, + title = {{{\{}WO{\}}2008036168}}, + pages = {1--128} +} + +@misc{noauthor_wo2008061208_2011, + title = {{{\{}WO{\}}2008061208}}, + pages = {1--72} +} + +@misc{noauthor_wo2008072655_2011, + title = {{{\{}WO{\}}2008072655}}, + pages = {1--461} +} + +@misc{noauthor_wo2008119741_2011, + title = {{{\{}WO{\}}2008119741}}, + pages = {1--260} +} + +@misc{noauthor_wo2008125487_2011, + title = {{{\{}WO{\}}2008125487}}, + pages = {1--95} +} + +@misc{noauthor_wo2009019274_2011, + title = {{{\{}WO{\}}2009019274}}, + pages = {1--66} +} + +@misc{noauthor_wo2009036035_2011, + title = {{{\{}WO{\}}2009036035}}, + pages = {1--66} +} + +@misc{noauthor_wo2009037308_2011, + title = {{{\{}WO{\}}2009037308}}, + pages = {1--118} +} + +@misc{noauthor_wo2009037343_2011, + title = {{{\{}WO{\}}2009037343}}, + pages = {1--119} +} + +@misc{noauthor_wo2009152082_2011, + title = {{{\{}WO{\}}2009152082}}, + pages = {1--228} +} + +@misc{noauthor_wo2009152824_2011, + title = {{{\{}WO{\}}2009152824}}, + pages = {1--357} +} + +@misc{noauthor_wo2010021934_2011, + title = {{{\{}WO{\}}2010021934}}, + pages = {1--60} +} + +@misc{noauthor_wo2010031713_2011, + title = {{{\{}WO{\}}2010031713}}, + pages = {1--451} +} + +@misc{noauthor_wo2010033531_2011, + title = {{{\{}WO{\}}2010033531}}, + pages = {1--266} +} + +@misc{noauthor_wo2010080478_2011, + title = {{{\{}WO{\}}2010080478}}, + pages = {1--223} +} + +@misc{noauthor_wo2011023677_2011, + title = {{{\{}WO{\}}2011023677}}, + pages = {1--274} +} + +@misc{noauthor_wo2011029842_2011, + title = {{{\{}WO{\}}2011029842}}, + pages = {1--156} +} + +@article{sperandio_wwligcsrre:_2009, + title = {{{\{}wwLigCSRre{\}}: a 3D ligand-based server for hit identification and optimization.}}, + author = {Sperandio, O and Petitjean, M and Tuffery, P}, + pages = {W504--9}, + volume = {37}, + doi = {10.1093/nar/gkp324} +} + +@article{koes_zincpharmer:_2012, + title = {{{\{}ZINCPharmer{\}}: pharmacophore search of the {\{}ZINC{\}} database.}}, + author = {Koes, David Ryan and Camacho, Carlos J}, + doi = {10.1093/nar/gks378} +} + +@article{irwin_zinc--free_2005, + title = {{{\{}ZINC{\}}--a free database of commercially available compounds for virtual screening.}}, + author = {Irwin, John J and Shoichet, Brian K}, + pages = {177--182}, + volume = {45}, + doi = {10.1021/ci049714} +} + +@article{.Title, + title = {{ج. روستایی،م. ÙØ§Ø¶Ù„ی،ع.ا. رشیديمهرآبادي، Ø§Ø³ØªÙØ§Ø¯Ù‡ از نانوÙیلتراسیون در تصÙیه آبهاي لبشور ( مطالعه موردي چاههاي کهورستانNo Title}}, + isbn = {4921181136} +} + +@article{.Titleb, + title = {{ج. روستایی،م. ÙØ§Ø¶Ù„ی،ع.ا. رشیديمهرآبادي، Ø§Ø³ØªÙØ§Ø¯Ù‡ از نانوÙیلتراسیون در تصÙیه آبهاي لبشور ( مطالعه موردي چاههاي کهورستانNo Title}}, + pages = {1--6}, + volume = {0} +} + +@article{.Titlec, + title = {{ج. روستایی،م. ÙØ§Ø¶Ù„ی،ع.ا. رشیديمهرآبادي، Ø§Ø³ØªÙØ§Ø¯Ù‡ از نانوÙیلتراسیون در تصÙیه آبهاي لبشور ( مطالعه موردي چاههاي کهورستانNo Title}}, + pages = {1--2} +} + +@article{.Titled, + title = {{ج. روستایی،م. ÙØ§Ø¶Ù„ی،ع.ا. رشیديمهرآبادي، Ø§Ø³ØªÙØ§Ø¯Ù‡ از نانوÙیلتراسیون در تصÙیه آبهاي لبشور ( مطالعه موردي چاههاي کهورستانNo Title}}, + pages = {1--10} +} + +@article{.Titlee, + title = {{ج. روستایی،م. ÙØ§Ø¶Ù„ی،ع.ا. رشیديمهرآبادي، Ø§Ø³ØªÙØ§Ø¯Ù‡ از نانوÙیلتراسیون در تصÙیه آبهاي لبشور ( مطالعه موردي چاههاي کهورستانNo Title}}, + pages = {4--5} +} + +@article{JohnR.GiudicessiBA.MichaelJ.Ackerman.2008NIHAccess, + title = {{åŸºå› çš„æ”¹å˜NIH Public Access}}, + year = {2008}, + journal = {Bone}, + author = {John R.Giudicessi, BA.Michael J.Ackerman., 2013}, + number = {1}, + pages = {1--7}, + volume = {23}, + url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3624763/pdf/nihms412728.pdf}, + isbn = {6176321972}, + doi = {10.1038/jid.2014.371}, + issn = {15378276}, + pmid = {1000000221}, + arxivId = {NIHMS150003}, + keywords = {epiblast, gfp fusion, histone h2b-, icm, lineage specification, live imaging, mouse blastocyst, pdgfr {$\alpha$}, primitive endoderm} +} + +@article{JohnR.GiudicessiBA.MichaelJ.Ackerman.2008NIHAccessb, + title = {{åŸºå› çš„æ”¹å˜NIH Public Access}}, + year = {2008}, + journal = {Bone}, + author = {John R.Giudicessi, BA.Michael J.Ackerman., 2013}, + number = {1}, + pages = {1--7}, + volume = {23}, + url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3624763/pdf/nihms412728.pdf}, + isbn = {6176321972}, + doi = {10.1038/jid.2014.371}, + issn = {15378276}, + pmid = {1000000221}, + arxivId = {NIHMS150003}, + keywords = {epiblast, gfp fusion, histone h2b-, icm, lineage specification, live imaging, mouse blastocyst, pdgfr {$\alpha$}, primitive endoderm} +} + +@article{DianeE.HandyRitaCastro2011NIHAccess, + title = {{åŸºå› çš„æ”¹å˜NIH Public Access}}, + year = {2011}, + journal = {Bone}, + author = {Diane E. Handy, Rita Castro, Joseph Loscalzo}, + number = {1}, + pages = {1--7}, + volume = {23}, + isbn = {6176321972}, + doi = {10.1161/CIRCULATIONAHA.110.956839}, + issn = {15378276}, + pmid = {1000000221}, + arxivId = {NIHMS150003}, + keywords = {epiblast, gfp fusion, histone h2b-, icm, lineage specification, live imaging, mouse blastocyst, pdgfr {$\alpha$}, primitive endoderm} +} + +@book{Oliver2013NoTitle, + title = {{済無No Title No Title}}, + year = {2013}, + booktitle = {Journal of Chemical Information and Modeling}, + author = {Oliver, J.}, + number = {9}, + pages = {1689--1699}, + volume = {53}, + isbn = {9788578110796}, + doi = {10.1017/CBO9781107415324.004}, + issn = {1098-6596}, + pmid = {25246403}, + arxivId = {arXiv:1011.1669v3}, + keywords = {icle} +} + +@article{Bruno2019NoTitle, + title = {{済無No Title No Title}}, + year = {2019}, + journal = {Journal of Chemical Information and Modeling}, + author = {Bruno, Latour}, + number = {9}, + pages = {1689--1699}, + volume = {53}, + isbn = {9788578110796}, + doi = {10.1017/CBO9781107415324.004}, + issn = {1098-6596}, + pmid = {25246403}, + arxivId = {arXiv:1011.1669v3}, + keywords = {icle} +} + +@article{Oliver2013NoTitleb, + title = {{済無No Title No Title}}, + year = {2013}, + journal = {Journal of Chemical Information and Modeling}, + author = {Oliver, J.}, + number = {9}, + pages = {1689--1699}, + volume = {53}, + isbn = {9788578110796}, + doi = {10.1017/CBO9781107415324.004}, + issn = {1098-6596}, + pmid = {25246403}, + arxivId = {arXiv:1011.1669v3}, + keywords = {icle} +} \ No newline at end of file diff --git a/ippisite/docs/source/refs.bib b/ippisite/docs/source/refs.bib new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/ippisite/docs/source/refs.bib @@ -0,0 +1 @@ + diff --git a/ippisite/get-pip.py b/ippisite/get-pip.py new file mode 100644 index 0000000000000000000000000000000000000000..521ee59b1f2f569eeee1efbcfa03e4407b9bf767 --- /dev/null +++ b/ippisite/get-pip.py @@ -0,0 +1,23484 @@ +#!/usr/bin/env python +# +# Hi There! +# You may be wondering what this giant blob of binary data here is, you might +# even be worried that we're up to something nefarious (good for you for being +# paranoid!). This is a base85 encoding of a zip file, this zip file contains +# an entire copy of pip (version 20.1.1). +# +# Pip is a thing that installs packages, pip itself is a package that someone +# might want to install, especially if they're looking to run this get-pip.py +# script. Pip has a lot of code to deal with the security of installing +# packages, various edge cases on various platforms, and other such sort of +# "tribal knowledge" that has been encoded in its code base. Because of this +# we basically include an entire copy of pip inside this blob. We do this +# because the alternatives are attempt to implement a "minipip" that probably +# doesn't do things correctly and has weird edge cases, or compress pip itself +# down into a single file. +# +# If you're wondering how this is created, it is using an invoke task located +# in tasks/generate.py called "installer". It can be invoked by using +# ``invoke generate.installer``. + +import os.path +import pkgutil +import shutil +import sys +import struct +import tempfile + +# Useful for very coarse version differentiation. +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 + +if PY3: + iterbytes = iter +else: + def iterbytes(buf): + return (ord(byte) for byte in buf) + +try: + from base64 import b85decode +except ImportError: + _b85alphabet = (b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + b"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~") + + def b85decode(b): + _b85dec = [None] * 256 + for i, c in enumerate(iterbytes(_b85alphabet)): + _b85dec[c] = i + + padding = (-len(b)) % 5 + b = b + b'~' * padding + out = [] + packI = struct.Struct('!I').pack + for i in range(0, len(b), 5): + chunk = b[i:i + 5] + acc = 0 + try: + for c in iterbytes(chunk): + acc = acc * 85 + _b85dec[c] + except TypeError: + for j, c in enumerate(iterbytes(chunk)): + if _b85dec[c] is None: + raise ValueError( + 'bad base85 character at position %d' % (i + j) + ) + raise + try: + out.append(packI(acc)) + except struct.error: + raise ValueError('base85 overflow in hunk starting at byte %d' + % i) + + result = b''.join(out) + if padding: + result = result[:-padding] + return result + + +def bootstrap(tmpdir=None): + # Import pip so we can use it to install pip and maybe setuptools too + from pip._internal.cli.main import main as pip_entry_point + from pip._internal.commands.install import InstallCommand + from pip._internal.req.constructors import install_req_from_line + + # Wrapper to provide default certificate with the lowest priority + # Due to pip._internal.commands.commands_dict structure, a monkeypatch + # seems the simplest workaround. + install_parse_args = InstallCommand.parse_args + def cert_parse_args(self, args): + # If cert isn't specified in config or environment, we provide our + # own certificate through defaults. + # This allows user to specify custom cert anywhere one likes: + # config, environment variable or argv. + if not self.parser.get_default_values().cert: + self.parser.defaults["cert"] = cert_path # calculated below + return install_parse_args(self, args) + InstallCommand.parse_args = cert_parse_args + + implicit_pip = True + implicit_setuptools = True + implicit_wheel = True + + # Check if the user has requested us not to install setuptools + if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"): + args = [x for x in sys.argv[1:] if x != "--no-setuptools"] + implicit_setuptools = False + else: + args = sys.argv[1:] + + # Check if the user has requested us not to install wheel + if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"): + args = [x for x in args if x != "--no-wheel"] + implicit_wheel = False + + # We only want to implicitly install setuptools and wheel if they don't + # already exist on the target platform. + if implicit_setuptools: + try: + import setuptools # noqa + implicit_setuptools = False + except ImportError: + pass + if implicit_wheel: + try: + import wheel # noqa + implicit_wheel = False + except ImportError: + pass + + # We want to support people passing things like 'pip<8' to get-pip.py which + # will let them install a specific version. However because of the dreaded + # DoubleRequirement error if any of the args look like they might be a + # specific for one of our packages, then we'll turn off the implicit + # install of them. + for arg in args: + try: + req = install_req_from_line(arg) + except Exception: + continue + + if implicit_pip and req.name == "pip": + implicit_pip = False + elif implicit_setuptools and req.name == "setuptools": + implicit_setuptools = False + elif implicit_wheel and req.name == "wheel": + implicit_wheel = False + + # Add any implicit installations to the end of our args + if implicit_pip: + args += ["pip"] + if implicit_setuptools: + args += ["setuptools"] + if implicit_wheel: + args += ["wheel"] + + # Add our default arguments + args = ["install", "--upgrade", "--force-reinstall"] + args + + delete_tmpdir = False + try: + # Create a temporary directory to act as a working directory if we were + # not given one. + if tmpdir is None: + tmpdir = tempfile.mkdtemp() + delete_tmpdir = True + + # We need to extract the SSL certificates from requests so that they + # can be passed to --cert + cert_path = os.path.join(tmpdir, "cacert.pem") + with open(cert_path, "wb") as cert: + cert.write(pkgutil.get_data("pip._vendor.certifi", "cacert.pem")) + + # Execute the included pip and use it to install the latest pip and + # setuptools from PyPI + sys.exit(pip_entry_point(args)) + finally: + # Remove our temporary directory + if delete_tmpdir and tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +def main(): + tmpdir = None + try: + # Create a temporary working directory + tmpdir = tempfile.mkdtemp() + + # Unpack the zipfile into the temporary directory + pip_zip = os.path.join(tmpdir, "pip.zip") + with open(pip_zip, "wb") as fp: + fp.write(b85decode(DATA.replace(b"\n", b""))) + + # Add the zipfile to sys.path so that we can import it + sys.path.insert(0, pip_zip) + + # Run the bootstrap + bootstrap(tmpdir=tmpdir) + finally: + # Clean up our temporary working directory + if tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +DATA = b""" +P)h>@6aWAK2mtd`vrxh{03Ra(0074U000jF003}la4%n9X>MtBUtcb8d2NtyOT#b_hu`N@9QB18%+!g +X4kpO(&rrJ|`eKX`vh}(J+9c$zj(&U7jVi)I-sG3#xx1$bt^#koRK_v}t4mq4DM@nUjopH&ybBEPi}^ +xLULGf}>f<ZRrrEO)rZ^Fg1jJLc)c=GxLp*?)XX9cMA%s%j7%0A!f-xjlmvShFN&LvMfJz(N(_u^F%v +tOosb?(`N6_mi%NDvM4y#okF76?&a41ZY<a1{T;?)+q#o%E+1!v0!D%6&tZ~<yUSU0VJa{{-wuyK}Li +9nlRJd+d$;8QHsd2WtvAxGBH(Etb$cFdkeX}UGMtJiYls?;}Lr;(W&q8cf^xxTxV-DH1)PH9KWq46%J +)R|NJpuNX%93>#v!TyE^NqzAHP)h>@6aWAK2mtd`vruRV4?Nfb0055z000jF003}la4%n9ZDDC{Utcb +8d0kS$j+`(Iz4H~8<^WVIJLgqrr5<}-^;T6;8q5#@Ng9Wt^y_P9ptD;}#IfIdelLCWGbq(BX^E&5*g5 +!^K>s8^EeX~AToilV)A2_e6~zhOaP~KZvIOlqFiVW+60AOs)?J~q5l!-OgI;*jfY94W3Aib4Jnnk|YJ +*Ng1Ga|{kpv)l&^K>8SV(XV+<$mHY8?a{!1#G)Y63H$85<@-{DTbUDCucxV6x07;%M+|!-MO9j<0Wi# +11q;*wWw~Jk1&J^A7l0*oU_7=O4mXm1V;gv{y`K?W($dDS*GDs|`L>=UQy}+QW*VBSKu9lNGW7TF8+_ +>8{Ie<fCkRVDRj>!4j}^zf$g5NMG?#$r7JFwd*iFi`ae1M^!{C6|@<7hU2_kIGVf4lf-PN95Q{xc~)x +H)+yD7ZSTFu#C|(HBN!o}6m1}htb9MfmJk{*1|JR5!La3y^@g-eNlcIpg<aOlzzp`V!6w3~--o_rhje +;x4v-gHjdsU7WtQBZZ!eNf4r13`{eM0jsOyixv5y#2b#5{cCz#V>@K#xukcX$%OtzJ!59<8S&nG(}iY +;;Zg+|Wh1kV4`#XSvS-lI5dD<2OBf7?{$GQX$dFHlPZ1QY-O00;o{RI^ZFOd3ur0RRB+0RR9Q0001RX +>c!JX>N37a&BR4FJE72ZfSI1UoLQYZIMq)!$1(l@B1l+_R>O4E`nOnOYt9S712W}C2W&PGm`ACGZQ7> +-fcn^q01hYVcwfJzojO4RtOZ5jGQ7nTPLkjEeW{~%rz6tTSjH;q;G{WIR9x)$-X(N(=L$P0S(SitCv- +_xVv6FWUueb<^A&37%GpH=LX{GUH>~g2PGfvXYfd(#+U+2Xe_yj<(*tEy~F7s9`BVnhsi;*-YeFkyxC +0Q<O*WazHu}fy;UR-Z(tPUFD#(+48ATP_fC9`AURV|0j;dYc^ybxuZArGV~LC|k0E<I(!}(Sn`mK+f` +;i(pxQ`e27(BcYLI!F?ntY4o8-PpLl<ls5vC;4qNHc17w5?#;2(}-kkKi3!N;l`IAz~#LqHy)#4l^v{ +T6#xQ}Y8*O9KQH000080P|F{P$2$I`icnv08$+Q02%-Q0B~t=FJEbHbY*gGVQepAb!lv5UuAA~E^v93 +SzB-0I2L~Qui&N+k}#66-A7}+z_d-L#dg!6O=nOThM-7vqKPbONjZtP=zrhukfKCNO4{*@E$ZCwhdw( +ydv&bplASmAl@!f^Hyt}FUb4NAtWu)RyGk^yJj$xMVXCZD$F2zjkE^q@v(@SaySn87uWRu@Foig1D(Y +4oLHL?8$q(WlBy${!181$M@V;tTM~KJnD0vDphf{l6Gu6qe=n~Nq-@M+u&1=Pnx8R=>qvY6hr<RvV$@ +i*<SyhKt$d1+G=7yx}ABD2N)M@zH@yG5#=Iv@P#Q`GMH7|&vVm-h|S#rtCH;~1^kmkp(s#OXyg=qHGj +fK78UDlquThU~7b#1_xf%5KFtqee0wP|+Gn^MTMy}QXISK=rOK1lG1|MytIbg*U2e&<p_yw@OEL!_Af +A><vD{LH(Np2f_veO2=;W4WT^tQLj#qQe*t;1cFdi@HixTQv<BSbWj)ChHHEaC$QwuUjb~@PJpqHQ9L +lG-}5WZB|y&B3|M74RkF!Ax|-**La&j!SXpOr<UTar}3Y!mtV8j@6KQUJNxwI;^O_qZwQF}!tr{=@X= +I#3RlOr<}rgwWA+}L@@snh*au?FJ|F@{Twfwc${*7<FYfXi4)f!2(C*TlzSW1T6@@2WZfu;Uh>Q>VEX +=YdKfrO(YPBlr9G1;4CEr(%>y>7VV25+7rs}dRRJ`8Dj6y0hD$(Z!>BQG8L>fgb`4_to4IkbTN=g{uP +G9~D#k*sRHzu3BSJzde{k0jxI2<786Et1GU~ZvOQh{wY=7@t73tFM7$E?+=1hI#BpG&p*7F_3w2Wu@< +40u!>=j8i<5p4ri$g1sBuyb_25FK<T`Y`N}sDYD&ogm4n;5cYVR+-C_=AlrU*yZW+grbLfASoE@6H~{ +Qe8|gmz-v*ifN5<p<b6m|BW-w5?W@Anq?j3{H`+}j2|)e?i7R=0iULeM$g#2X)}Cdx<8VrjQ((325k| +w2bAApdwk&o-Wa_rzbd6A4{|TG*v53y_TJpR@Im?@p9r6YlK)?H*f^NW_jsy2pjp|T8Omjh`x5^TFBK +DV}ejf5esoD5d#t&brG#jt%q_4ib|L`U|zxX|7H?_EiXs67mQEJDGF}d<{rH^w?_H(*O=yMDyO=6qhA +@YVCoc@W{7+RTAlMVzKMUjV2-B~9Zx@Z_QLLTxuK<1#&$~r#<BXl&AuTN&}-`!|DDsNkqjok#?4TopJ +NhYH^NhLW%!5|UV01SQ0r1yD!<SK+#3-LDynC2}yQ5hOETZEzo3@c-bw(elqW5)z9*z2R}#G(2hXR7K +rLeGt(1YxNV^DJ#qC8>=fXz_>y6>y{n*^-I~-n`IF5HXB;1K%0CeJ@a>HTBDkUXm@pd1_eylP3#QzL3 +BoZBk8*-0UIH=g0LYivJoC1@;7IH23#OV31&aYCRXe0l@`c>1sqbpzue;hYEd?ldu5n;SR@Br~&Aqg1 +2aF@e|1h??oxB|I-$Eg2RU(qDg7r`b_t2`XB)x+F3Czc}azCX3`)CW@p3j8EXf|dib0{y<l$<o|rdED +cU|l5)&b)yShy3=9JDbg{&|<<e0ZkD(hQ1ern~n>)j0gt`QH7>D&a#yD*x;=maKGh_-KTxc*IkU(cZF +LvPc(Ea{v4V?6Hg+Bm=G40|4~REun8+2J?Cr*s(XQBz<{4Hhj}X-;#=&f7)K`lZW$hPsGmhNcDebe0$ +`1|!WV%vG>TQ&!FdSO~z+93xU0GkB2(B8*R_Lsont>Ry=gNJH~bAa#B0M}BusvL7$1Y(;)DqA*%;<PG +UQb>mM*;M|MT42{w~wM_ISC(1YOL(HtG8^6Waero0sP7A<%An6NFe$N4MKdbiCx!2_Oeg>iypdScmcz +LeXU;cXajvD>t*Q<9QFD^cQ`F#HA^ZTpw@k~RwReKye`!eA*S+`h-y39NvtHIXr9U&=ddtl#>eNES0* +g{~ztgFtJX2n}~CNaIpW|m*EcO#f%tYcfEGKRiMjeu)5GBGVc$3r{;o!V~Af|tP}&{I?gp&i=a{m6K9 +wlw}&WHdIJU-z_4>Z5BXX2{RjhD;cc>GY7K6TtID3ga9wJNb6+9n#|{9Y^yFbFA2kHXPW^qi((%`1so +%cSm)`G9L9WZh3K+$?*z9^_IYqTAJML!mUS2J;v*Ge2Z;-YkuKHOt(Y3o!-$k;24nD6Fy;ol@0p`^%3 +REp0J|7Iib?!inS(aCiX1s7Z8qG_>d#5%Sa2$I^wP-<PMcmPm&@uSFqu?#hNx?SGeiB%Fy%md7ySVUI +B%Z5;dzIpkQY5DIxlF^0Zuw!TLd^beR!4mr=+B%=IB?MbXodHc^>Mv__c$A`f`mO)t1;AbWzUV=PUTt +~x^W0C}Uff8V9Ka>EWQ#(V@`{5Vuz?%Z`tny_-%##XB_-uvM3Bi?HVqZsCPC?12~zaSd<j-(u5FHy!S +su!LN%G3QRi8vtOU<^R?XmA=|+S{#>+EQ|+X*%Dm`&Dl<*?PBAQAQ!%-fk8&edRQvINU>dTXw%Sc=_f +z*0^cp1xL<CHJT*&BQ}7}-0j)H3rRz@EOakRX*1}(I&BR}Qr*xxm<%O@x^I#+A~`}s^I&hgtX6t7p3( +uv1L|mEF0~TN+hO?Z#toyG+e8{5&i8w|!@lPqu$I<g#Qr&6F}^u}_2oC;USuG<U<b*)Gci!XFym2%pz +oxp?JWZh4Y@q&i-x8?*~dvMGPugzZsi^F%0ztX6OAWKqPcke90B=~fc-LoPbJ6lTJSK)w8ewxGChcce +kIhmd7+gNs(uUB4VAFqdlb2YiN4a!j<P0AdJV=i*9YV2f{A+_wn0)s%n=l|YBw*`fR=ftp~&bC_{;Tf +UJoZ65{;f{tOQs=>=Ja?&AYoF4iuOgXA%~5)!dO>)}i>y=<IpL6M{=LTo7v-JIBsM_g1LRq1#F9=)BD +6_y?qW(1buioW6Em^Xy6Le~mIK(a1;a)*O4*66w(dfOE8;yqv!2C34Ht!tI3pQzh){u)cTb&wN=Xf2D +-PB(|WN{(JnJ;6i+CXBV>5gYjziSJcu(wEET|(Q|>$Bz+Z2?wDd)ydU4hwvgs0_M;itUmccx0tMXJ9N +Xu)EVgLF(RO6N<(k4B+otIdmU*Q({p;}lfZ341d3i3SkeJ*44^T@31QY-O00;o{RI^a0Uan$*3;+NwF +aQ7+0001RX>c!JX>N37a&BR4FJob2Xk{*NdF>i&kJ~o#yMF~w`4H)#XnTuX4riPTq{*fUE=h}Ki=bF6 +1X`kPC9<fB(r(-!|NUl$lt@bQ?)G&>?&=S_HpLmv`$Yvo@PubO!Cvu-Z^d3z?IH+*#o``2ht-WNOL<* +XTb9W^K4fYqyE12M!5XobS0ZN|7Uf>BS{CrUs91}DUE4Jx0W|wVeONNpHbvGxkab(gikGWryi{VbDE7 +5%TDIeAR~GC3=Q|~<{(C96TR6Y}Db-@JY2=>OMV+KqqRM5H)I597aaYpvtzu>?P$QbU5%4#y_+G@`%9 +Usoka82Ut}V&|TgEF{6&Wv!p9G<E=^(_wRw6!Rf><2jUQ|~AlfT^wQ9dh5L7+2`dzp(;C1p{)??GR}_ +ZzleBg%d+;h)<~OeC$?*J)lf{q}SC{j_LA*2?A(GkgqB)AvP{s~fN!YBU9d<JAw}{*XR-e)i<w>3841 +e*NP0*T*5d#!9m0?JjL)3Tt2hn;AUI1%nSE^N;+-m`}{!h&BcRDfs)i0uG*nbuBE|?bdP5x8wa|0dHi +p=WUwFs%_*T>1VY1L@zEDXrH2CtKLwPt!Q7;T9}fZq-nHREON17DVjNGA#1}t(mdWn2E~$vNdE;mNsO +Ly8L<an;uqQj?)aSmZ>kuFHNGwdI3YhheaPenmJlBbr8y+%xCo(u9Q2_i@AkC{b3h7|r|-o<t<IYcJV +A+?Hyo6&R$&kaF$<PK6f;pN@Y<BCtSD$_MEDwgyz$aRpB}12R2fJr3}}B4MafQl$cwE|ZHPQ)C0B}3c +nRhD9T=P88t8ls+^m5^o`Gx8z6Y#s<W-Ri1-^z6DL3|6zzV2><-FxuTj(SZ2M8B_mdMOrgQ1l#DRwnd +wkRSDNAxHe1NaJFf+aCcCxUr;HZ-;p&fXX8fCxY90)&r5t_7NEBY19X_vpbKqpHYLO@Lam>s^uU3_S` +@-$1BP7DFF)70AOuhoA615pcNAc$KsJN_I^q;720}Tvp|wKaW8u>V%4VC1?qfX@c<=ZJLHkl$+Q}G9J +k&9+Pe~>e(`xu_r$A*NefjU&~4iV5+OZSIA1xF3U}n4Aex!E|9(e=c{CEiDO_CQY9Eql0tzwg~KBYh! +_(Kvhu-wN^tAQ=~p8G_?t(<fZd}NYojTp0cYpOK&uL!PirvvG-h}1kff`?-9sN=#8#`(5sq>pB&C{di +oIZitx8L=<=Md~96f4Im6(D^Wf*Enfx{lKpRWZ*^F~`NegTVvYGB`~77K)4H}9Y@0OPwZ+MSiYmCQ>b +#Mn8+C>BCAX8&TRUqs~hP<a5FVqKI)d(c>9nM2Ga2$i@LEgTl!3U<w*A_1q}ib_DZ6W}5Y(he?l3Vs3 +MU1Lv<*)@b6S>11YNC(|J<f;)55D*>f`|n-?lNra~1u$J~cUZ_=0pIW#GA$%kHIzdQ-%@R5@u9a4$7S +fQd@VZ^p;V5G16f*OU@{k|Cd{QNN&z;fJzlF8NT{@nat-DmRw!~CG<7<3c<eq|dNE}<G~sm(Su_k*0j +V*(@R7$B+hr7aM5CNnEVyR?2b7Vkqch4Nqy^MG!jOV>ia~wcFH5FHUMN@Ia3oU@i%Z@(_>{=H2F(O=3 +51mv!!jrv(f$2V%+?@Z!p||FHjwV&Y0FC>psnFq2=Z~AVAm-Iaad`*B1+hEaK$SGqXf0thz61%9HP~@ +=kGzrPzqoMaS+*^WYNejvXOE41GeI*8zl+8vKl8_BhfzPj&tp-)mQM)5Nb0imFn;i%HS)k=fPqzYjIe +sC|k<f!B)bi(u2Q7deLyT!8cun!b3>at-YOq4-a#&J$qvr9c)^2e6c*ej1Bh}r^|=-$HV0#`{U8_^3r +l^>JmbAOSt>v;@tmDbov+o@xhWE4N{+eryw<oNtalR_bZbl!Ag50Jq(l`Lmarfg8}g@4p+G^s;ulFt~ +m`S)8TT@-$4LC4);X`-%J~dniv%Anx};HR|{=ZMOi*r3sfQ$f;kwf(ssD+3MdWv5M^3Mt)Ux#1V(Z6b +E!36A3!zLa5^kOJ*2>$>ZCrfVyI=&yQ_F)7uqOvBpL-m;={|=*mETgf?eCzYI$<91&+FP0-I0jL(NYh +=bscxL3w)ekJEoXnp)UJFmC8cA>+j`x((DYJ%Kjs;hzcWP6^8CX6JMJpP9&HBJe!uU4@&2VmnVt^?X7 +Pm5$}6co==yE{ams<LY2j72r%ER_f#j9EDz3!zeoHhGa9@F;CarPUK@)jNCx$(c#BdBd7~UcD5y&X~1 +xtl8!ncpRIX<=Ls7`Fz%@+4uB7#jKgVbdxUbUS~Q<a$D+W44Le9bl_7vNMUjP6gSb@L9u{;G;@8p9)C +KitVThGDC{*o{?LKLJ2_FtiF%jsL>-X6CH&4GY16`&YL(N1f<@>J2BOyM2xjOyZ0Hb%MH?rFIn7453p +!yk%ABVb~e-}0yJFx||o_v(GJC>FGERT-i1w_@?vVF0yOPaWg{H$qY(`TO91Aoa$?&NSNSSa1#7)ci# +xh(}z+Em|oHS5nM+j=KaYz>COnDgmrf9b{%*N0<wmlyxs;SmmH!IQDhh+U)*9MAbyZ=I7^k|ZXKI>!$ +ZQ<x=j77x<muB6a>A-jtYSbxR3n!ZNKGzJb99Bz~n`7af!8KAx?@EHyG^(>YCI-^umIYQ#2x=&9_^#u +&5RYCbsniA|6&HU~*;yX6j8&f}-@r{D{(ZS=#>6GjyfB6*-+7|>A)NUM}`GL*E54Rl*{e&B{K&vQ-*< +am?>A&pqj-5~zAHcsd^=nJD6}Ek^+|9f?FznE%`=EZ*%<SFM24vX0kYxfk@S7^8?g4&ak5H+uG<~$C^ +BSLF&cQ;kv*n*gvnwD|TUy_m;Wn7Kpq3nfFpj~oc5YtK{Qsa^-?{|m3cNt+Z~uB+RkvTm5?+*Onr!b2 +_Q#=D!vti}QjKm-H2WKC`B-LjRq<md5_Xns6PBEqxaKzEx%^2~G*alD6pz#exO2sTGV43MzFz~FFOn} +Hg5g785vav2Ep0YB=2~&oqS&4RG9d^SihGnW@}sc2(^rXDh8uw~J)5Q`W-VY@<PiMwWOC<%=A*A$C|a +897P1dwL|<%BZ*&d)YcD=Bsrit2yZ0Hlb3Eb=8MiT1)QuTz&=t^h6!YsH^|MZL<Fa*JA-m+w*1&$uIM +Ok!rdQ^n*Xp<pfYzN6i2hEu)s<%kLnGx8byGiOQ-#k++Z?7fqxOQ8zDo}+MUl5tU-8f0>(7*-5Iu^j6 +W#;eA&o>s$0c+e`^)MGJJSR7^>dPob+-*CPw^AH*jCU6<0~9a@Mj-Ck=)@QxHuFv!8~v-g`U4bE+$77 +Ab=XeH6TJKZ;Ew?HcR6zz?KB2ftx305VLc85VKj0xu0mVI$b#?Y9w9@ckrXo_o$in;U4>n;wdFPXRxN +{W+%MKb|<3E?ncD47n#7#OUol0>ZM$KNcR}4eDdStz*@{VJjYmfi*Tb!fUpeRAv~n<5$9gv2-J3EYEn +pH&<dTmMM5uNTlyXRQDp1pvl_|{r)(ZqqHYB}ex{Rp)(DD{MSCCe^mRq=$;bwZ(9tUjhg+-b+e_-(s% +eUY!+Sg{{}mqJe(*J(mG@3ha`x@>vsdZc=Vxax(<hIgJU{cbzAfb%Dv(3Er`N!8{hG+Q&?Y*lsvpVr= +Azywom4m$h<lRz-pCm|J@_w=c*4Co4bLZEtf5p3-t6pHOGAUB86uminw3B6q6ZcYJhndu@{jjxZyR1u +tdlCYi4{^Y%NZ7HP_)vT*2Fm$R0a@7S-L#mHaruX4)h38f*;^k5SnAB+7o!H$pB=+gpJB>=yIWq=7sj +({@P_DJ1jAEIi-j`7o2U1Mzw!fbNO4emHq28Zd>VFt`0B#P<7IdALng^hlD@i8HcAa?C&#s(vfw-*KM +=A-?mA;I~8-sYcc+|L^!Is6A_<z{f`DKFtoa(TW2|()@AXCjM2c~VuZjky{mOAgVCA;o7l>sSGG&kXD +0IjvCU-OTLpH|XgBnif47ew-5VK{cS23L4lYI!P*`QUe$iby;kf3?59&_t>hVD;A%_qRFUM~%deckML +K8If>LX8{c4;e8mACAwW##F}FCjd2tVY_IiQK@lq0S^S8dS{Lq*G^Th}aQ{c?tFy$D^?EKfy7*nIBEA +HYxl52T)4`1QY-O00;o{RI^Yh?(#Im5C8xTH~;`10001RX>c!JX>N37a&BR4FJo_RW@%@2a$$67Z*DG +ddCgmUZ`(K$|KFd2tD>-sRn+U=;&5xgcbB$lH)!exO&`1P8Cu1nZEj^r5al?&AotmCW=KjDCA;Z9fHM +{wTOx<UdHm)<*7LmQdA1a*Z5dZ0&)6o;;uYWUtYVT^+hQ=d$~T-<yxfQ^PxIA&JUC%lyx{}JP9@uwqN +;etM8+0Gh%H6RWe9_A;&h9nKH^^%OPMc3T=9hMM73tIB67k$^F0ij!VjRZxfYojA*!JSCKkk(ufK#iY +edvb5oZ;0!KBDmDQCO9OjyF@q7*=8#dd360_$t8Su=Zt6;FscR>Y!Y3tW0x=9_`%d4s_t_8w*|^EAzO +NClWu;#lX~G-21Am3))m0GBa5MBx;<fcGE)Txz+kwj~dN%w}Kg$4pkGSX3u@flJ5f<Yk;nJ{X8ik(U) +q^F^HU=GSTkOPZg#G~eW24hF~~D?|}SH#|%7GL+&rL{22r!_+p5xRkuK#{+x3gvCRCyWqq~J;etBGS; +$zv$D*~p!@tKDE2wZV47FY_(dKkJP8J)zIC>hNb4oyqDVw34~`2#!Uf1u5C3#Neew3wRlxXd5ogI3_i +}LRM#zPk$TJC&k6<mBn{79TXI1+GHLK^n`T6qa==qOl&tFIHK1`?Q(^sILWzXX=$%Lr3DJUW0=QP^~> +;))1VCS%8e4X-uT?h%kr+oK*U%=0|+7trzep{rR=8gvR=Uu#0BEKXZvPny&q5GOWVpnTmU=4Dj`L9Km +z$Cqt@8NGRKpTVw(7K4GHnVWWs|$MOM-jSJ6u~Gk-09o*XJhsz-h-`!_{pr5{oaDjgFRnwD|ni-EH5{ +4D*nUKrH}&neZrS4s$URYpL|wH?-7cQkHMdTCwB4=<c(f{@4bmXbBznQZwX>U$1C|NE)xJ1$?_$5+_q +eB=JV`ElzB$3nU{n*BSVP(5}6783Bi?Nm!q)cMH(--Ka7R}8=ef+3{W<Wl2u$*60yf0p1{j-tyYWH?7 +Q(Cw~=S*o)sluf=JUGYyl)BX+jCOS!N2}21*`@kbr-D1LhEcsE!H*tz`y3=7u*f^gz-CFgUN_ild`OA +ax0l4eT{$NOE}1_bkZ)9dI(pvx<R2k|VH#JrNQcbOrlC6^6`flepyNIxZyJ=UcV|w1p|4cC?A%D$TFK +q3-U7z!)ehPX5_U9)(M^fJ$w&eq6=^rgp)`Z|!8{N->m0Dk>l35U{7pL=mDtgK?8dw9s9mxdQCR2*PT +}gy29)=fl<6yNQRO0>t#^5&MANbXD+$Sc(OWdv)>l+3Cf^Q`=Ny!Q1w*(+&G166Lm6=kL!Zo)i_gsm( +r$vf9S!oSj)l+9H28{W$T!gqvwNk)Y-B{4#p}cKY)CRrK=w;>-+>KAyg#DG<7dcRk!*;v>dHurWD6DQ +P0lPOr|Ur*F<c3_}D%k%=LimBv}dQ&cCuK{*b!$pSV+ExAS%*L~M&$z&1mW{5RGW4+3JmH0FzMFRMk) +fSP<5TJh@{t6+~$8Q01*lw%`Op4(UbOaq!LKMBBjt_j?h<59_!c=<*G63thR)yFaq92Rf18b*%Ka2e_ +5{*aJA<G~BcQ^{_7sOUq>LEUEMmfs|Iy4Xh@!f+sFoHoIEW!95tmKV4JG55N4tH0RBIgN}BaHhr88}1 +H8^&zr3ViO4Lmz~3UAYGCHucndFv>*=2-?ODKfnGJ08E=C;Qo&we6%ntiFM&2R7P=G<~QKP5|EEka<G +K3fY=r<7Jxz++Yu9qkV*pW1X8ECMCtunNT!&BK{p&C2!w@(`sw94AQGfE6+}15Jd?*_5{lsFK?L0EEC +8NKT31$i$qC6+7Tw971*BC#tRb?^5`Zw6pln{_x>?P$nT;{CmE=w_aL!vIpqyE!ve!ARgkS71VU{pUB +hX?T1bf4r7=1HiJeGTurcwkhwK4f|k0gnnrp=PLiq-ys7&0p%&kzd$bFE~x6AG)4*NG~Mpf*UC0gTR5 +lu!WiI8GuA(35GNaVw73uyvj1kbfa$5rE;adXU@};J+<PgA@vu7=`tUI$y(21R4@aRIiEn*4TN_a-+c +Vlz>*9*K`0J8X7v@yR@5~kjEYhr>#*WwpT=tsA-Er^*8ICSmh0Hg>G|q@0lpxp+__W$V>=)HgVxYW(8 +@t%kOM_@^n5Lb>_F9G`~>Fq0u7<vi@3Y4i(oPZVSHoUQaODHpQp;z%m8QA)sOex1od~;i|~heg}0`S% +MR*Az^#X$h?gd0XwAOr%&g$H7Nb7?-1LquNdZQQWm>vS+Ro5nn#cYP-0E7)B{!|`Z(xg&C|kbZSomk# +F($`Fh}PFtIBxs8P%(bV|cs*)2JPf%HZ~zs`kL8?pk})1vmitoQz5TMzigcQ9bv*(T$roP(6g%L*Q0I +^ZDFiOLrR%a&>qA2XIASi61EJIxKAR1QI%)SR$Iu8#-UyQiEh@w}fJSSk*-+KtU|Or3<E*5BA_IVXIX +y*>s#OkptN=-XGZjl~MIz`Dh!EEE?8w01Blvh-q?5Bpy|H#1qKukM6v7;JPN#tiPj#MR_abL=+j<Vzu +V7f{-NgQdIk<Go@wHyL+t8%E|>4p=u|TeZc<RE{&#K6+-}+Qf2no5mJn($GA1f9lXXJtI|bqm2)Y%p; +(k9p<u|k_Wo%0muAzdeZ$Tn*54A+_fjKMsf7*6*hU_gu<2CT#@e=bOWN(`nPjPeqCEjW3Drs?hM@q`f +ebfK%1NnJR1^EMHd<mq+Gqgf-mK8JBw|LV0Ki<|E=_3-o3ht?#UYC_;gGsIZhjK>vUgmK4ZkyBr=vWm +%KKDzD3p8C91@bn8n*^f+6v0JS4$MKD~dqv?SMo`$GzC{hD@&(O<&^HFBl~N-G^JpH@wLN?2KuNu`6J +O>2V!1|A7rZdWPkeF8(Z3wx;_voxTgoY|xtWi0R$p7Bzj7iuN0-<^?&>ZMk(UBfYd~Q;*t=;YSaSlcY +0v&@&G7>9_V{wCUyqipyCWy5?kiAOh2bw`XkP@^b_{oA~9o6k^%bHtVsfV-Dt8(g!5)=NS^H0o_6;%g +4m=M|#`;p9#OC0|^o?GOp#U&jIYAb;g3{7S$R7dcxF+ggvb0^MR&~9H{63StYjLtd=p`L7{3+OduhHZ +FlDPvZXmtQzJ#J?GcU~fa@-yK4wX@h9z}KKx+kcp}UFEs&*8`H$}DY5YYo8h)Ae@{NrneO~6&c>efD; +=wUwKB-mr-x3%LF`7Q+=Nv^8ApwNv&kCAK=0!Li<8Z5DEh33=NK?k;a#PSe)Y3&7Uue<icD_i_{FQIf +vAuUpeJgP6wW+It9orml)<*`J4tHUVBhS~LY6?z>~)_xM6ei>b@*b4~tb?N(6to?PdElW=I$;k$!T<) +2yAhG^^@fFWQS^!m}qg%4HMXyeXLXj<V-}_VwmBHogv4rAs+2eAL*cmYc31A6Ef$Z~JD0^hsR&sqZ=b +Nr2e5a!!Mb#loiF{u0%vg@M^G2w;<-xFu=g>e+6MCfn&n`=G1JYz=zOAsb*Dsq6Qok%8u1c}&sTsQdb +R^(F89{}EE+Q6o1)(Ac9@Tk`*Jvdr9IP0$B+?Xz?(*_8oq40^9?QD!MV`FCVNy%!UquN*E;YRAgDR7} +9v4EpFt&~Llr=OCl>!e*0n9Pv3qws{Aq%EPiC121RbxnJVv26auJQnhW95Z4qqNAWkD-t$xnmQgSs(I +vg_w8uZEyNQ7ok%P+~84jkpPE&3q~}Zxn=LVc2JWn%j{O-e_DT_SN_hC4JuXd1%r~)BWN`V>{qk8u{E +FlW&9K}(g~XZ1|<9@+otKf7k`v#cRby@`YZ}Mc1PJ9=*qKXOWxCkch71`45fR_20nxo8`jzcMy`fIXT +2s8Xg2DugOY<OUEBMuff|R?xW07de5sB!@ivSB31g6$Uc=m9YS;cnb-&5)duY)~M9pfZTYovycQ9Kk^ +KeIm$|S?bHxp-Me?D<s!L_DpMH3bdAIl;0>&D(=IWo~Gux<f$Ki$L$KX?!>vTaX7<RtU76=c9~RNE5* +m0VwQP7K%W)g}R#cwU}#=CqotH86y60bwukos?<h0t4}-N-~GL9)M82OjDydZO8+0<)wvssDJ<>3q%@ +7UTg2e$6jasnw}$0ywFjV+l8r+d{>z03?}~uldj8PdeU(n@~5UsXeZr0O-ToU+vr?hS4ptMl1-ICWJg +`JHdm}_rF3?ubaPN8Us6Ubykqx&tln&c63RtY6|2rvlRO(%beIPeORkhB;K{aP3;12}`cO}is@ov@UA +zwvP1kwaoX&;T&=<Li?69aHLtk!FECRD8cToqL@s06k88l}P#F|Ae(@oV{oRAplz1tDSB#|oD^j#_Ar +?<+g%b7Uw9c#spuB$#|Vv#5O1;_vQ^y(C=SDdqTRTXml<jD$>uI)A6V|!BUi}*<)iYG$KEtgNe|KV?c +eMouJce$<~A%T0DXA@7~=#llg-rYT0tYZKmh|lu)*&Tk=)kC}lrfxBnkPv0CWzdsPErEXgv@SK+9}?$ +8p;k|2)g$JXWs{gO!{@(O-hcn$x67LrpV0qDUv&BYV~#&2NwY7v-PD(QteO2iz}6{Zjd49_=mMTMh84 +%APM|)PW<ej`G~%#BQ5QE6^c?g&)O|j9>hOgEV`>(aItVy;VU-_L3^h#B{fe*wbGi+oOGAXO=Dx5xT) +hSa*zo372G$N6FcftsLS2D2HqvuN@uW9D1v9s_+h6-wEK@CFo@0otTfrD4NdRqc!3N-@4y51G?ZI#RZ +)CRSHEUX}W7i3qL6#MCtmUf@o0|J#S`wz67_$}6u)_r#SGUF?2eHHlQot3}J9UYR5_?;iC^T~zf--~P +p(*qy<?13tbj_o^;AuiS=%OgzmbC7RdbH|@nTxp2(AoFnxw(YeZdbb}`bVk`%*I{bx=2Yc+%;+Qx;4U +n`st^!vVHgu;^<<n?(LveSG;cCkZ!xR-q$GCy%N~c@z2O;)2KiP>pi>f+<bC9xVgDfQ8tsPGf4#w;Ep +yV9O^Y(y*azM7_&E~jb8T<fWo#?2|X;e+-5|{zG2ae)og7Ve5e8IIJ&RCR+ssVQGz@9L#H|&s>?!$%I +w3(3ECQ(izYMsc3nNR+lB2;w62vny@7*wMQt&~s?@xW)nyct4`i77Ug3eWHk%7`o2I9|pkB4^y%fAW! +8?$SO<{MviJi)uD3DwCC9w(b-g6-H#HVc}uyueVoW#_6Z3j?Gi3eC{>q1>sQr9Kze`SMe*NrGh-PpA{ +#LW249&}Kv>ONABH1S1CmP?TV?(W%*y4DPa+VRv9OdJC6hKgX-PUuyly7<(yD886GL8Wt)b`*P#+_bR +^7IVuBqP>6;N!L1fSCQ6mDll2suclIWP6BLYHb=s;tH1`RaM+sae4NBVfqQl4g*{wM2TSawr~7t4<|{ +7y9Xt;C?xDvaEzkX+{|QLvW{q2!wK8QnJ9#?)Eg`3KdSsQ-bwlJ(Qt4>En|0H@BV$--F&NzsoKJyvy2 +D%1`}lE6{}|Ka>5#TF>j*pN`ey4vi#Pvt#*)2vckkbQQ{Ip2`cE+t(GBG&3eCUtF{yqN8b^cw0Z>Z=1 +QY-O00;o{RI^Z-Conc(4FCW{C;$K(0001RX>c!JX>N37a&BR4FJ*XRWpH$9Z*FrgaCy~QTW=dT7Jm1y +Ae0A5fHd7+AGGiSj$_A0Ydh;WDT=mGsToRQJsM7jGj_B={`-FCkTW86v0d!b3P>zz$iu^P`ObGp^?JR +tPpK+vZ3-(It1?k9E7L5Nrm00K(|fs4y<YF==#{uzDls>CZXR{95UE+MR8b3yk$EO&N>plP9w0#COS4 +j<G#bx!0g0H{)J>%lh*_=6^+aUaN)k10ih5nDY@DgNJwBJYRYynj%B;k6>gG(RLa$0w)k4m!$(veD-D +f{e*Q%<G$!$9<T}oYy!~)wWXX_F4DwS+Um%2=*530yam010$okK$KZ)L+_P+wJr%#)_pxlN!aZQRee` +sLj()6<Ky(;ug|AFi)2uiqXW>G__oCr1J=mKsaAVXMo0^E_0pykAT!WldA1s@vKdZR<+U8k)E@ty8vA +f6+gDVQZMUoqFj$-m1SE4Nt*!M@L6#F0B>sba_@)rW$miFmy`8@vo&-w180UGmZv7^VAe`y=W>)51fo +v*ha)#Rj5kl8wnH>X*e?!>Gk}Z60@da%LbD}p&ttUzld#$LxQhOp{`UdGg-?+V)^f_)RbJ0OH~M&!lj +l3_pZ+FPTri{o%DpMMDN{?Z^xI{=QlmE@-mTdm5?mqU~nX1R0uQsQ>Dn2BI8+qAkpe%DebfsIq0{G_J +@BUIgn#W{ky7B0wRJ*3spZeiFPjrSV~yE(z&eiH7V>i-fd=>be7;Z$aEyPE_6Me4y?-OBSM3E)NOiN$ +d&T;qt`1+95oSxaHAuE_d_xM7i-atZS763NhvG2V&M~UBKDXm*&Z9IFk#4}cf!mW#X7gl6uHkiQe~YK +dJR%p5F8%z?J(J^EEyspRmCxD96yNk!ieZ|XjW{|TXmlS*<KhDJo$k9W`F<DLbams#R}E}`>~T$qAma +-EzQKX^<1a2Lm($b7ir#P0IHR#Ft$JxtfX^OuJ0AgeNdGp(^I_U#);V2!o`#rM7Hd6gnj-J=0k(&loe +Uv&I!i!6SrtAVZQ}O8*`7M;lrcNyEezexVbj<IcYH1fvHWtN2wmEDG(ZksVO?#K58Q@MA-QnBdZNGhY +%AWwmsLmdM7KZ9M-&8iA9TS>{^qiO=VHtD+ZxxWh>@b15PVc5^C{U+4`e%;7ML7nXUceD%%5j;p&_>2 +65e#<JyejgH0$Ptz^qGgtkID(JV%{@?$+@b_(W!7<y*e2VK>T%vJF~=_i@5P~>41ask^vE@k}u5QuN> +sB-ES-lAO4c>b6yCuFr~*qY%A?<)16O=Dj-I?vwd>cva-Em_IW=E|Atv?kZhNEAY>0+yL-9oNwZnd|K +5rBXSC4Tb$v0prKhvMT2wpczSAMQu|OnNUvbQ{sZLPGltMLfR!yuusXjYVul_h{kTX3yOjmQDrDL@C9 +;+K!P9vOb;u<Fo$bRfQk$O>^}=c{q^_F3|W?_v%WT|K&h>1i67{OJPX4V8h)vL!Yp(j+^h9*E?2Wm3I +MiBOqHo>gG#i^G`C(WJ2mrZO3b%t>Fywq2<#0cO{Z-8=`_%&)2iJGge6O);Be0n^{M8~CNq<*QA$V`! +unX3%}lUio)|CZalZds(NF$FhcMtVk?{&s{6|%0*MNTR3~WE#XEd1}9-PUO!UcxAA^B89^4}9NmpVsh +LhubF(~RCNiphnfAQkt8c`U{YV=@8uwN%zAIY}QR5SY9QPC`_ex+M-;9v6^L)(ZhMTO-5gD7r|8H6Sz +CREmbHT8jZ1DOGt=vXmS$C~=0d7sVUJ(kNT>QF#m@3fcx$(~_MiIir5BDbSx3$SS`X>p%!Xpc?FpMhY +otZKJHO>mN_wcQP_XA*6~_(_`2sQz$u)x?U#YB!@Ql5MVuGx>V)Jm4O8GFe_xMt##^*lmu3zz$7APfp +%md`b<0aY@p2Lnl|!4ttUdY*6`w50F~F>3To5rGNl8E-)m2mCz=*PEp)tZw_(C~^tPzxiv>_QbJKY{3 +1;BEw%tOdv;=)bcjnlXBUYOR$a*A$ju<uySXQ6wQzwU7#+3IV9}snN1~^n8+L}xgg(VaRwlHDp2w&S` +{<^yvhe2dQ%<A_yDa6^ml|EFJTn0&D8x*>V0uih%vOOxQ->LVE*N|RpABdL-VrofqR)TYknuih_EI}@ +7Ds|wIX{DW|9P!?m!x^8v9*~w`9na&R^<r6>2Xh}eam2A2ffbQn;M09eOb}RQlatFRD`}_Hh2=;>xNX +`#oYIuRFwiO_`Yiy``+&7NXbLvPM0GHHzO1wYKY#hH*cM2R@MPDab|`LVu_wH~>yyv{+nE94@G{r8on +&s{(fw;|xrO;v(X3{mkWU&IwsJOrj3E`H_JdG4GOgbf4ACvt^}9;&F|||-0tPeaio>Q9oH)3C1Ta!8= +}ft{M7HF145C(prHt(wP_P=$B(b`{Xrr#*epCQxg6E|KcuDGZmd1&rMJU?wh4pNVW-vA)asLr!@t}7q +Ns6yYuI#WBn9{14=C_E`t=)?vzvoqXL|y~Rd9N*N_Zwpjw;IF~fIsPl4U^}iAFBNS#*$zE9ZM2Do_zJ +yev4wrdfS@rER<@Zx6PKx$ShZy4~3pFQK8hvKw%2P1l*I%EFt2~{=SL!*S~OEl2sQL#HGb}>_3hDo>w +MQY+ko58sCpw^p#WF9YylNZ)lZ7T(r#+QWw046WiDwF_9@H;{oNpD<@7DywyZy9*f*aGJ>qqrGCJZEm +<<9)-NZ=W#ArJ=Bamk6k(aVtxZ$yw!W4gZONnFi&0LlN-jQ$7+lUt0Q{M8KZ$OMO7o8Wwv8nV)@($Rl +!HwT!3=^#7Mj}7!HFyRu6r-m9l6|+MyyP-b&_F!c<^*>VQSE!DUFNKeY<J~16}pxsPj-fK(bpsV@8Gk +lX}r%>jC6lq}iVhJiT$$;RCN=MTBMW>1jUlO1v={?2+mUtQf4#9dd6@lMWu@d$;&Q@$-|9H@BB}XVZ( +5_ZORL(wh4?K3fcGNZixB0?l9>rF2>jdwsb5X&0sJsAEbr78tP5P>cp|NwZ27?P=WZ*-Ryw!y|Uwh*n +!Z*xHuldH|675-IFYCLIRBk*O(l+e7bND~ZHy%+eLsq}>H`p3p+^lbtiU&~j`wLJscZfp3;S)eP4ZMU +b>an^ZTY&JIh$CU)6gpASsH1sX!#<j`!U1PcXL60n95qf&pwQ83&zwlRZ4&QnkwfBrHF*jH;S!1NB&7 +#-4L?<<PYzc+O|#o~JN!FPN63r<*C0HYpfge_I7=M*(m6SyD&{e0U956E^z%A$M)-z`Vq#^vbpVCkVN +tSBy5ge_d&T|L;sM8BeKb>bp&d`ul0;eKXF;Yoj|^ulTBa-S*qZ*+ISS?Cy%%+U*b%E1ym?{&STcld$ +Jgf>KWx=JU!+t$h}mxyydnyVC-uSdGD6r8zKUH5mH6`dtw&<4X+#If9Qess{k)lIg3`Y!g<-No7aGx6 +@^^v9F8XYa+E8*zPeC$3KJPA>$W35rpCe|~#&#h-7_{{7+d_U!8H`tJR<r_L{bI!lDFqwLV8%(%A-t< +(B*B+xhzP`E+c!ZtJ^5jTX7kJ$JK#*iy&7($7}COMK)u$g&-Li^8cX)PG7<l2WCSN=AfAZ?XAQE>TYo +7#Hho_)IH`k{2Jk?EA_k<1ss&U(4xXtC}dotdj)3T53Oo)@XTRG%PZp)h1mWw$R~!>8X?N$)t-f=<u* +HhZZ&V{(nZZEQ)rpxC=##v-pZLTOw77OJeH0ru(oA0zN&x9{E4NWTm^-E1<!G&L(2Pg_&OZS(fS-LAQ +N-?h)1;cR`jC0~T8Pk>8``2bIX-uVpii@2Xmj<&TwYbV;J{O0=~!28ooz4X5)O#w{!`kQaR`~Ic>?G^ +SGQQ}{;;QXck?QiMH?re6%TroA(fIn<q6VvOJIEVVEwytnch-NBvHH@R0v-yW{x&%CP=<_-0qhf9Z0< +a}bQvb_2PsgfgMEStc0!rwPtfosf8<Pqjn*1Y_!LOa3zqh|b8T6fv`)y3oYtPL<+p_xm$~I2;#I*ah$ +{@_DEmNRrnd?swdcbgpPxzgR^y-2PG$%;00s{w5{t&7Shlk^7b4k!{VBf<2_Msn54MK>HwhrI#cCQXZ +0=p+bMF)z=;$056a}BY3*Y$3VhPCjQpD(@hDtXf8&O1#}Q9ZzVdTPf`a$A^KOnXfoU6(~av!TnpQ~J% +-wW(jLpSZyq?EVmEqt?%xJ4<Tc{f*b-lJ9wqJ3^Q74{{jSJ3erz%vGqzra11U{0lIDvF$p(-bl>J{Kr +I{{cRP$4=>Uhl+?kqdvnK^!=zi>-?l|gcd8)R-JAH~-2Z5T|Hh9T1v+*LK6}#Iwl_|oze%QD#hK?B)f +9+Nzvk#s_<#PA^r8wikCTuZkXQ;`{$PHfX0YIs>m^hVe=Fkk+&zUKx|0XJ(;fFi<<DPY8P2$)Xu;vpe +*sWS0|XQR000O8^Hj4?rViXR6bb+UP8t9J8UO$QaA|NaUukZ1WpZv|Y%gqYV_|e@Z*FrgaCwzjTW{Mq +7Jm1yAe0B&U0a^+U}pg@vWue4%mmY>Mbn~N1c5+Hw9Q5qwIt=lTcp2zzr%|x*>R_vhnV8!@Z8ULm?X( +-m2)dqW!U{%Xu<9UE0wxqOQl(^s-;|+36qtvyeyfq&2l+m!sbbm3<hWH!&+cxS*m+kt+0Qy5tU_Tt(v +l63&FJ5sI4d%$E4Z_Rx62hSuslo8{24+g3M-D@8+PcWp1acCVqH%{wpty7z~zLZCIB1-C4%urdHZAzA +&n6tjPTLU=Ze&*^kni+jab`OKu_6CVm@fMLXV^&d|&4FD@j6wz4$raGi0pU(HS(OGzobD$=OKK<4`8? +-y?_vOg|9Uo&>b?5-AbCRdfx;s+_j&mJ3LG7D#d_G($DSh7Mxujxh=0%T3T7BETV$9+Auy(c}d>q2UC +avw1ZrN`}`F0Wp_{d9eLJLD$M3ESU%e)l<pVqX4{z5jT1b$RvMgyr1W)91HR+lH5-+D00>sVb1nnyL^ +w+pohxmQP$TA29qm`h8wr!51g&H8eY6Z-Yxt*vATk!TwCgN}D1ced(1?mU$J|Uq*w#-CxvoDSg;sgBH +0}S_(7xczy9cd-($VWv?#Zv-7C!v@sAR=P*%*?@<CxBx8^&#FDLq%{Kgt(%DABd$O(2282grFIjZ0(U +?vDNg?KDDSYYoy+Ba;Xmm8Djs^=fm|D7}ywRHC`rXd1F$=M{3)X6dT#&9(Px9yV?+L?U44(g#q`iBzz +i0UMG5z{DOeqYx9X&(Pq~R_YcB#5D8J%af7EAf?eNkZ5QznlG>2FUCdJUN&{epBfA}0LGgblH6ICh5+ +B4U61jQx7~?>857b|*wl#3+g7_l3)omAYpm38yz0B1V`M<Op2vC^>?saZAVQ-Ja<8`N9YEfICLx9%GK +Vhg{T_y}iEBTIoK;Gj>@~)QFz#?v=hH?=FJB?bsT2TnJIYI2GR@NkbAO24O|f=Mef457Lf$v(CC9{X; +^wQw`&&AL2peaCqDVC-pIs^9p)FS*cdoxS%7jRGReYjR(QT&WP~F{OvXS3+u%9-cC``wN|yz<qi^{7H +k9GXUv;|3XWY9C#Ad-Y(|=$Sv9Mj7ta>5nx$#iJEQhdS?G7PH_h0Et@8j@C}FB0teoc%!#W4p5`U$v? +x01h*s4?uUb+G^t$BXOR|xI_eP;0!#%?PHnK^SeCN)Z2DHq9j@9i=7+`!>)ea(e%l5CfABnApn&KAvz +Jo4S{-EL?)H43@DDaC{tA#ikUZEfZ=$Zi)+ekW|I^a={8cmAI=rV(cL*T4Pr%dDj__3ANGS>;NT_e_a +d19~L;1{I4@@KQ*F)0FaTthK3EHr41-5H@gIM&lHSL1+Z>`8iAI>cso-p^l!YuU=c8EL1fb589YIV;` +XptW&-uQY|G(iOj1F7BygGLTL<+A}Rx&8!V%0Az%WbEiW5E+hrxK<fSw)ZS*(qH7+UBEo4jlq)%K7?n +0=(ut=B-;FV6q9#L=w;QI2zg)3H}c>29?S4jQc+;yF6Sz8m*1RbCY4v(~#9-TOY7s;|vjU~<u8-m1;A +>n_LRiW;oBc=Wob1ubSq>JoetQmP0J303Uc&01Hy#s&7vp=!V&i~gXKYl^b$gfK0ltK{I6l=4_=vfKK +TvGmU{tvuW6<ik~Wi2&wDJ9#8&rG27qBN8P9jR}#*K$GiVfI?B%*@dt^7qoNUDkdHK(0!W0sy!(TPYA +PQTI-`5Mej-Uv4RihT!3z>_xz1Fa6E@d03xa?+ofvd-L!KI}Q8t4MREZM4>~8z7o)EMwMgY9NEM530o +uWo?od7L#>nzLkV#>DofnuxpRwyet91u&rR4uDWEMk?0>u3PuT1xF5W(cXm}U6$L_^L-0toJ3`e6q{x +d#eTfpZ8=6Xem>FbarAI|q$c-*J#J$nu=`XM1nm&0#wqaCAC_LgX`xJitQP4|(&g6t-lPAfGfRZsKfD +!C0zVX4dNs3qY&zJQl&BQl>nv!yIuR-z@f_=3Y^f+woYA#lCz94TB54lPE8xzRA_cnG|%1!Ow^pc~<@ +;RY;QcQn*(XLY9o5F>m)I@!QX=v+)sS8qQ6ff->PzHo7jz#)foV1@$6$U;oTa)~NMh0!tN;umXfBk)h +4=3@?kgrE{dV7NN8!$m^?mn|i<A^$5f-<C$*0b~>cn|Bj*%)`R@GidSPWGpWswl6Bg8sJZdGm~}|LmF +`j$c1hI921tfp!)h4L*?sZ5^*!F#1I-Ek#b`8Nx7JOk`%4<Ny#)M$f#dG5q-9+^}XN9w8gL?vN|(i;7 +Iv#*x@)m_jYlsGzx2!JFw<{+!~F-+7mYM=)vnA(fR138wc;ij(}08-R|@RZvPFoP=LXwIg0d1q6S1S9 +0G!3xh)5A9>9Z{TI6ymfeSz%PTABc;xayd#H8~~puyQW9Qv#!f)ZfeYs*NcA|)7N`JHgsBo~FKa_D1A +uBlKD0wyGr1_G4(F*8mXLWydYOuLLB%AWD^p6|>v;*0U6718OBRre2i@=+B~^gRch1#5J*hPN`uqVzp +r>jP)bp~VBWu+lp4{U3lvOL~B_JLXr4LT3RG#Js5CDJeS9u*2?<)aNsb=Ls!tZuc2wd}yz<sS9M7k=q +uObKcXyBx<NXJq~94(T>r3$8aq;Hksk=A!s=2k^<o9%|nj7Yzi?vm?p4sIOkDqr$Ij1+mHJv_ocX<4z +fmhDU3SVx8E_6NLi(_Ld&h_NNHeW>n4wTzoTZ!Yby!bN^ZyFo9DNE6&-H*u0rXL*q$8C_Sn67KELg63 +6h7VE)@OFyTa2DrmcYSU7?F<+C_pPZncAQPIPLK|3BY#h>ebK>!78Rlnx(B(lm8g>G~M;{3cwh!xFEH +gt@-X)T$~1)}>Wh)#wC(9-tp25R<ys-nLSE1**Jh+dArxw#XYMM!XddzCWgKzU8vyi&6xW7|(BPNkPe +kZqYTRKhHws;<peF>Dq3}GhVvKKeW}|TJ7yUcbx7`I(N6yC_ZC_ri|o+b7+ao>@kBc8(`ES+5PKBc&8 +5j8uz(3<<5=dD0A#B=t+-+_pO3cFs&tB;2F-i>UrV}t;I8;j(5~bXr%)e<6}<Lvf=%U$OGp-{Qbkq{a +WU0rl|b1$0caf+l>}eB42a~v>25k&C4xiNmnF#V3aBl>R6#%f`R1;?C6%wZ!=i7^HPc`IjWTb;-J$0Z +FaO+scITFK(K?1%>3&^hesbCr}XJpPil1E1rZMXjz(kjv?$~0w&)<Qc&z4OmP==?MkDMR_@vdzS=R^T +Vl|5iG<+wW#24#eyCpm%b+!aIK0ivsla7MjdqBG-e0R5?^zwF{KH}nd@IO#X0|XQR000O8^Hj4?aZMR +56afGLwE+MC6#xJLaA|NaUukZ1WpZv|Y%gtLX>KlXd2NtSOT$1A#qawmhI(nCCKo|1=%x4%HHz3nDJ5 +)^NivY^E;AD)-`;IX6`{)>mdCy~Z+;c~4g!TFC#T5Hwn?wlN}@v`R|9pyv%>58eVs2K@0QQ`$12O7vI +k?RIw3C%#8d54|0lc!B_HGG@Is=-m=Y`KEV-%WT5dA$aCR`C?VY%Q>Cv*;J2s-c-Ok|r7Gl%!<76`VY +)By9z$nOHSVH9)d|N`{o%j|(3Z|d}+E|VA29UU33p)hH3K?AyOOA1*i5VaFF~XK59i~HxY9o<32qHA9 +K^AFRlQ#V>DSVfPA=oq`Oi83iNiQ$1uaaZIKOCnZqf;J&kE$Fw<=<>WKt5Dq)Slh1II^0VA5cpJ1QY- +O00;o{RI^aUUdwv82><}-8~^|s0001RX>c!JX>N37a&BR4FK~Hqa&Ky7V{|TXdDU5MkK4Er{=UD0RX$ +h-Y#}|gXt02<xR<oIxHMfPITXQSA<z<SGb@v-NO{)?_P^iEkd#PU&Mo?_Mu1q>a5%5eJmhXVy=P^)>2 +2SMvSf1K>drF0HoEDpDBbhbmH%Dp@J*ZW%^c0u2Gvx$X+&kERwn3Cd@pL-w~e@RGOcWj@*q^LyC7ra( +}G#OZ_Xr&mRApaE7i8>#D9C)iM>#EP=2Ehypi>X@zsJw5AlvtS<xxp6ym88ZDQh$GL|<D#~<Hzo$jWV +^;R~fu*Vi`2@C)A`Sx@9(=Ts-`nCM<+xz!7@Bay5+D!a>eZ}BIT2l=_sN;hDo6O<Og1wUljJ~SHhLzH +k4Lp{5QySaldi`bY)Vx9+;+o~Kc+QsJv$fU@z3BwxP_djI@FR^x-&7@V{eq#wIpeAxB*5=Hl9E>J7nq +L%_5?di+{(<^29pKvm{bfcq4jfb>YhJ{vOTt){sPG_TW)uGuP}3>E{*QHN|ZIEq_Vm@o;m^hkQ4Afy} +;FM1;th1x8jSI>awy0n+^LGSU@wd$*I3R+MQP4VP(q(>)Pye-_%TL%hrPRN>;iSBn&A-k8eMJhoOmsh +9<ahSn*^j7~cNKRI*bjRF^|16kB0&OZaNB3gLGMWIp$n`5fUQ2;YyrZ0e6B`LnPbN(>Z^EtAjA1!fC& +N1A57Bk-5m8Uv(i{95fq^$`6=37K8phjcZX*HOAKY_4K@18EfPU;q5K#h9Q_oOf7d_bx@r+DJC!(14F +EY%%c)Y%bBi^v!8e6h%QrF>HPw24_l^W$(ZpW_N<6mB26ug^T$u?_f)4WHTmjbe1jIFWis{__0G1djU +Ju?Dp*~LjllR2?J%Z{X2WFl^B#HpS|EJQnTYm%`6j7Z6hmbn<F!=sN_b9x)@6+2_;zaPFI9OOmCc1?) +A(}xi_c@0sp1~5-LC_Svn+S$v%NNef3Kt#AS~H$}I{6%K;Lm;vf(}VJX5J$oZ=OKvf@wAH#@^_b5VRL +eOZ}Mr?U?WY|v3^`C~HyGIG{IdhXFXvq@`k_q7;Jc-#Nkq(}QB>QezTvj>SN-f4XL`1sT0mZ^MP+%Bj +bo(qaeM`=*v5uKg2ia*wBPtdeaE%;?TGC-o&{}7p^DOsIOO%{1&i3mB&a;C+9Z?yuPHQ`s-#j!C{SOs +8;zESM(qP5pX|2wOB~(}E;-Mye1wgJ7{bMOSN`O(R3*8EppJGeE&sEmj&GJnK(+hHYo%q|fu6tI*Aqv +E|d@~<JDCVVuV}xrbjWC^O^ls_iWp0URjJUqEn7ZF%6}HO;2#<cmeyF$+hV6S}sgiwFdC~s}UotpHBj +i~NT&lEMQa|AI*>KqZ2yZIxI)Yn=ECC?{zC^$>BGz)L^b%e#-3A3CD}f~Sg1v^&c_q4SwE=M`j(^~OU +_AgvRrMWv+zCaSxJA-n=^SJY(g(@GM6V*MVG!*kUpLTB9rUf*$Sq+EY(q$t*Zok3*iH}7c3umBztuQd +^0}Xk7!WW9dDj-a1ik@04A9Hz?K=l<hz|2&val$MIOT`h9J2|sQS`w#lp8{i598~!#yXDpbH)_&v&PG +QmIh*hZk&$~+)_Hudd;%)wZVm23*&t_AnFC^PM3@&9yzsQpSoW7N(O(E0!A-=&3pXFFv79S|6j1eSTz +tRhpz!C0o}hoPc6l&N=8FgKxgi`JvR|QaeVGh;&*?xV*cVJ`6jrbF^H)~!tkg&pt?-=7JCs#ANEd!De +Nfh!Y{>4e2Z~dj;O#Ps$wHL08<fG!j83OMq`@e0Rc)-eu_&CHI<eHmc%5lTBVH{-2DN^8R801dpNIwA +rDGF4$eBJvDH`sspHN9ZopT2p)`|_qMn{AX_{BycEYdTq1dMH@Hel+VKv$SfkM#%Z!Xoo=k}u^r~P*p +tyk==bSaLKcpiTmkxH|8TtzyJJ994(e-lNp<b(o&3YTNRW~dCQA~jLrAk;78K@y4GxcR`>2I~o%jH~0 +YcxXP~mX3{Lnj;mE!+!7R9zmOh31EhmZsuv2q*ViB3d|Av9&khuyN=Y@j@Qzi5IlDpNv?PjRqwXOCh< +fLt4uV>2^g$l2RIsd&K%i8c9_0J2Iil<iT+%1iVaZlUz6s~!VxXIW_Q`B`uo*iUKekQ*V%$)WKnjXQn +(Y40sI>m7j8>9(D3WBbY)$Z*{I<8LKpZpS_HK5Xc=l#IS8bQEo9sX6I2>Y4GxpMZ?KHkN6IDj7GLW_n +9Z-C+^r`u{H*Pvt+11*`#lPcEl}AWhQ~4Rgm831jQ2zx7U+JvOHkpo+fH%etulS*4I22kZ>Z2l>})y^ +`GDXI98CLIzVV=l)2##*EmkR1!8k^;ukHp*JYPmuXU;J5D-C*%(b&qU{r!&D>}w~u(ds!1moUz#j})R +~fV;#qOY96=A2*23c7{Cw*&GLLK&`QGX~jj3@S;hdh9^u~AD2})fG(KxYc)X=WSC2{*sa-#UlW5qkuQ +b|6Mz9(?a=Q%Kmn&Cmvpd3Do=RUIKzi%lbbZ8AzDK)eZ_IQXd^VCTQn1{KAhC*gis8zzK;jY=>=ern* +VY1rvsjznNFjBa_pr{TnyhOKZ^*3=3}fl#5%rApi|PCju^7W16>PUPxbx!jk_t;U9tdj6E+{cx7{(No +zcy29<3g;=dOMyZjJv(`uc)6zbxJ-ai3O!pNkm*gtA;J<IYYlu;=|SsENV@fbysAc_6@(fr~#Amkp<k +mmb43PpdsXc8BRUkL62$t2(hLy77R)d3W#Dxr6lzp2rJByhp!-nj9J`7&Ae@ZlcLk%NiN9n>NRI*1)( +LNz0Kva;QqjPGdeY$!7}oBXW5<WY4JX{R{#<G=`<BnjQ|=FQ6n2w~&)G($S&OMBO=d6RF7uoKr&7<Dm +9y<{tE9(ru<-A9c#t@P;33QZ&r954j(rz|hibGENtT!eHZSV2F{PKs>;sa3dDoBg7>06H*2E2YM}T-D +tuYJRFS{AWTrChP%~@?qMk6CwYOX3&4(~VBsuBLAu@mr<9dQHvDcdfcFsjWjGT#?iXjLcI?@YWF~kAi +#MKq^R;ZGJ))VRkdpXVop5fXsbb)*j-V?6PGL_QS;N7jru6v(5h}sL7>0c8sOPO>548CpAd`6gqdU2k +$dQA+#M5>h$&`_M+3?N>G+!rilK^aFG@TScx|SO{MnXCB<9y85*z14HQ-?)E<9?eMCx13M|2x1i7Z+n +Ekmf~#DD$h|0Z>Z=1QY-O00;o{RI^Y5;FXc<3IG5}9{>O(0001RX>c!JX>N37a&BR4FLPyVW?yf0bYx ++4Wn^DtXk}w-E^v8`S#6KoxDo#DU%`5@Sh=-@A~>{wdoFrSHof4Iy&${kAx#4vEzvf!lBkl@dW}Q=du +N8CL`vRV1gux0IK$z*JTpUGu)Bj`J5`qIDC<4TRaJ@FGILOES+K2OT2$&m6pX{5sswA4g!i&$771J1Y +LU(^SaoVnYgS0Zk=3fL?WqyPst`M~dC5y7X0x4E70WV5lVwa+jnbC!tx;ubMdqGovu?cLR#;gH|9s%) +P|B@;{A^V1?@P7cgY^DUnY7{d;2+J&bc;8#NwWu07fSopoBMsHg;A}}g_+C(KKVUI-hTdr&_=47al`s +|SvNQ(H}cUFirV0|x3cE?6v_kY6uRbRD(gZ#ra9O`<aUtowXE--`@yH_oHQca;bTwy){VZT!E?lwDnw +~gBe>2FnaNcnJnb!w-Qv(!DN!=meb#6&_CVYXzlBkuMIEcR=h9jUOm?yqU?wXnPoK;fT)g<qbMVK^R! +xSJmNc9nM1G&4jWczug?6J_G$qVl&K6HER7sP^OLTTAWXEMMED#wBek=-aS-(KRbDQxN*2NXFR+nF0Z +Q?y4^Rwn~bPziM(VGu%KV;8;yng;u_U`@7&8wS#L5%Fq46jK_9|VnUxQ4jHF<Qxw_!<A^WeY~>-^Z)| +P@k6Uh0N`e-HAu|eP5%C57T48YhjN{--A0CiVyF9vbl95v)SzS`t?gE@QWYruCteK?%0OSFF&j<tJP( +3clqP`^3D44_CIr&iy;keyz#M}g6dw=SdwKmuK++6Fb(j9Rs3FLB}7Tq$Br{?C(Dwt3*4MohvMJ_&<N +a`U_zi1(>CDI#$>h1D8w9&1(UZ*m9vG@x*to@G+nUO-$!AKQ|9wI{a=F>c;%&A69RWqF{@Y$7J`4cEA +Y7gfjHKr5#d;{HT&ft0FE`%$$hP~Aaq`>YPF&n-A;)MUdMx|0qemNbqi4nR<|TXAMi|VKZE3HBsj4`r +#E1ikDc<;e)JRjlh<ep9;10S5IFi>|K5wvcwMks*)yB!g>|lw7Gm4(lYSJht5>*La#|!2X3Z|m)iR#5 +yh=Yq&PvWjZvuY{NPn8a4JNfg;>Eyb(ci@y_%!QG{|0S^Fv1Xh$rk|#4dbko#zGd|p-CDJHbzw|mTLj +oEm=7I21J`)L%|@3=hupGdJ|eK?RfUG4h%NK?K0THX1H~GUAQ&kP=Zw=S57*=-Sp8F%Crd|I(}L}!mm +ecyV%VT5djaaKy;_TPVU8N98`ooAHiE47=5A$gGZVL^Rw;A3e;YdWr-6_LB8;|D<M*I;Lo0Ym-K{-^d +KG!xrb0o7NN{Y2a@I`m=06g?m1?jTa-6(5z<LYdjZFlHp@Um<!;Gx4rvPW%3^TkenTKT?cqk%qJN8YD +JcVF{q4&z9bwq*9#HwynfatV%!fcoEQ1yA^a)+ARJ@=l7mwhR=!Zl(xb|+4cpXL1`DMBy%f(hSAFrO( +lFgBxGWL9V*51UwH`O%g@Ur@}o-A^dAPM+cotzPIfhAf$G$o!W91F@6wUqQ!u?*rd7Y&pRuYSJPTEWg +JS#<Y5i4)x|rYl{r>&K>)xwPe}$2l~BW9Tvv4CI0x1uIm2W!aHKk!{r(UIJHPs<mh_v?r;Wp|}V+vVP +#DEYb-jqK|Wne>57DrtPWsTu?r#Fc7{A04T~*tn1|Cte<W8gXny`fs&!GkyzepO~o2i?N2!UvM=jXe> +07P3-)T~R6(iX0P6vilHVbA(tahZ=Tx;-l=?s_EE7V1ro1xsjMzeMqhY{MjQ1&+VBH>|{Q-%f+9aKWV +-t#<#><T>)5M1fPz=sK^3=ueNpz!*UW6;qg#)=FmIRHDOG48I@qU0OC?r7NKvI@$uL5@bAOH(6^Nw~1 +Whr=;?wLx!R1Pm)Y6+ZbD4M@*gTrQec#F0S7O(TNEnM9K?g+gmllICm!41Ke6(HO3AoBwjp6sZVrO6{ +UxMuA8bKo{#GY>LxaWDs9x0wT{b>zRW1--+YWLmW@Mohve05(xj^fSK<I<Sz!Jm3^<)fk6300K}lXCS +26-02pd1y+1u2(wA%OMuV$dLAm10C3VHJ&A_9*w1$9QA<c<an3~H!Zjwyd%<o!R{6*zfLNJE<Z>tT&c +@WP;jEn3>~m}Eh>HRhkpN&;nE!xHt3i`$Agdwt1-iI$A(f6IggU)sm!iup&jtAa-5qTId`tK|-pfBB= +QFW`0?o#2IJ~4H<;YFY5^hf!cwo}p@5fb&PwLbckY~*21SSRxZbB)bLUycYhtUe`oWAccY+dBKsu;Fk +NCTTaQDC&qUULYN3K9r(^{$M^a3J7kJE(8FLOtN#_0`?^0EB!E{{R?F3$X;E6g8CPHG3%vrFmTNN477 +pl-<M!CfJo__(IEVi<yknGEO3M5OK~no4EZ=kj~BROcb+z5wN{c_N8j;Vv?V_qa`vEtdgN8_}FuCo%D +5TS6Pp(HuQwczC})59~h@5Z%yhKz^B`$AU}sE?1h~PU&~5bcQ!`NTb-Yn+BqjSXitT)1L+qcL)@o~YD +u)8fiMSy2}yn;U9X0Gz^D?!>_KYV@>0|f*bj8)ZwT=KlJ9S?-(}B#0F=sJyn2WD37pi<)dyYrMs}(j0 +go}cmZ)-s?opFBI{RRo^JgLnnRVeiJ9O8{oUy%}j?hp8^T{z<N+w7q%-m8Tx<=J*<g7l;jB572EZz7v +YpBu($P4oT@R(FAX>0RZ9h1S)FW3uVg|1{RP!|At9=$;M;L-=u`=sCw(+`@ICUgZUrsp`bjAq10HgGy +CF@#b>*=$l51{^<z@_brOrcN{AS1NYcUJ@yC709?qtpejhxaO)ZOtN6#v%j)GvS;7H&tLvbKhr{bWco +<*NK>D};^|#r0Z$y;2;vFz6Qq%`^^RQEp}`^vAZXG1#u??cu!P|8*(-8G{+R1XloG^-H8B<khOtS<ef +X0HU6DOIEStROJl=c$bi(w&i>i>3jYqqEi=8o@`DZ6y-;2VXl41SUH#4T)V{6@|ukHwhj~F>>uZuVrk +I$GlXOEYsx|qr}-L;zozsOqyTMilwj{3shO;AR5Ip-@{>5kwxu?I{JX#5phbQ3?GF;lFJ&FFb-ukdLr +FaQBrWZ~e^N$Sp;;+Gw|r}5}G!bc3xMg(3R`iDc4VAe^@E$v}{<SE#HhV2j}Q^>&;exq`EHufEd64<k +TrCS}=!0%mFd_#T;xdrs4$^qDX2_j9VO6Lr*;lmvG{diGO!BdmdE%;|Y@ei93Y5aQ3=WHQ+1wU7VpDa +S`jItVbhGPJv&5fJj^D6kgCifTW6sYROUhhCXukdE_WiEf<vgBJl?5M-{0VDi|iP;lUi={6YfJIxZgZ +RGU7WxxxF(|)!U?M(_Dm=9S7rR1mJMvSoaO%qRLP2wk(()Wh6$O9+XA#C%Z;s8cc!nY#Mc!H@|8;;iG +;3ZJ_z~o{FKk7hROTuAGPg-gwFvx+PQx)XfltOxHUFSmYS>#kUkY=}rTH7G6x*z2Fo-Ih$2^9O{<lVc +-KSvuS|HJr2NZvhoK!braCO=DH*B@?Jqvo7S8_UEKIPxzGo?;PfqUX_*DzfB1GI1XSTMgMyJPnS#k)I +3Be?LNKe~+Um7}Pm7)c5XLj>*AC^ar-{|8V@0|XQR000O8^Hj4?;Ldl-PznG5b|nA+9smFUaA|NaUuk +Z1WpZv|Y%h0cWo2w%Vs&Y3WMy(LaCy~QZExJT5&pivf?cCnElyUO1JV}*Tj0(~+MsD-*h!0nVF+A_yU +SWDDI#TO@7H&R@07Imx<x)zfRPo&8O|G@nISWu&p&m=jtSXO*>q$Bf9sxCC9k*SamQFC$fj%d<b5q9t +*UGGwdWn%vs#L5HlNRDvorE}$AGY^nn$E6nmv9dV%PLlN!E<O{N{m`gu-C6XQXX7eCIWhNZ8B1V;Qj7 +AKJqO0ZDiv&zn~Arl!^E9jyeL&G^1;I!UT#yM;yUYa_Cj%AI}fnEfSoz2wzwretq<o8_=1>wsalZ%WW +At9X4+%<K>FdunRaGB69sAu?r@Oj*QIsi9mA<t=Mpzxw0pJo1WdX>pihrN2zELX|*pZ30Wm>k_P;!{~ +96Jr{+Y&uRho&P(2<WJkp=-|&j1gbTAg*N$f8adv{qzLiZ=iChV8S?}pR%Y%<a#b}+=ZY!SP)vw#GDV +PwJO989re)u@4WcwENu!NuC{S5?X0fGF4{p6ty%=eF9u71fc|MvFs@A>tYk00NE{OfVbzN?&+7<RdAa +u}N;cqrUV_zB^=nONy!M&MD@u~3QnfX`3$Atje!5xPb%y$AOC*9R_SN<Nugl9DSbap{zN?pye-7%XRg +fmpnP!k)LQ{R{nmi6h6RckC<v+1RjzV@%Ks{>*FI9ezSUVC7ZEN?uUO$jT{ldpjn*OUW9d=1z0Ku)1c +VuOyHum2OevX}V)y?q)OGEUW__X4hm}CO@dLB+qNQXL$}*nw4xr@}j9F1r>9)-GZu{#=AkJ#Es@1TLE +AJ%(bv{l5UaQ((_+`fBxq@yZd2z?%#g%!#NBrQh=rG{c@?jeTJ@P7bF3kb6&fJm%Al7|BEt#ng`JOhQ +YTzuNeX{KxL=!67dltrD~dcK`MUF2(5{gEz=ITXlY0HL|iCnHWadfpzQ?9$lGk20bn=hKW4A&V(Q-x_ +HI`zA(BvE*zpvyL?V{XSQ_2+{!a|?*VOAb5gRzEX3XGRFxM#!Az0k!YZX2@)$tR|n~tm5(6U*Ujcj?X +HM52UlZ^!oG8U?Z&<ZxAIt^ylMzE7{J3z2t&V(r!E=tZoy$5CzD9&=J5<CaVk9LggS;wja@#Mmh8|&+ +Y7c6C=*)IeiydnKCK04sDIDGB1xVh)80-E1KM3+6oprBR9Xn6p&UCz%`(0<KugQO9c<+QX`+$pKf2+t +ts08xl>eBDU(YT#tZ@^jZ4j%VbZ0>>Q}x@buCZ?Ikg+eWAj5pYtq2dzue)YZXoNW4tCmRM%9(7F&s5; +2KD<%5FZm}vU0P&xAA8GV6ZDrghnvh=h^oicY0(Upac94x{D2PxK^2{MmqwZlp-P<&0rWj3F3-E(d;d +iR2vN`{~nad=!8B+JmZkBpQ}y)Y#VF=b5@`>=qin}lZRDvamt^F=7I(_B?)k+lcsZfmH4VSuK9xS+*7 +-7>OJi!Vm2zuZz$d@2|WQ7{K-jIB%<o`{Rj;+I)>0&^YzAjna?bTTSe@Z*slL@rSSt?dy#jFn!f2~PS +>82&OFD5o7U!qi}747-LZlKw{@+5+v?*ETkh3{#RxIum)RfONISJl=r4Y~KWJg@C%pnqBWOC2~rr5dB +`|{2dFw;2xk4l$&Z2_jqhj9sST2kkS?(rOklKzCr<#Nsw8jkHL}CLdhBR#5f%%S)<S<!v9B=z)_4HeK +1l6l!*g-YywllWbq6#B0#845p88(Fe5`%AIkL4%Nwmq)60y!X>?|AHMO49*OlsXq)ukamf%{x-}hQ7G +!d7oEz2AoIFmuKZ86%aF#I0pE%z1V%-4W~4CG(o8&<$}MEOU6kb9Om<@Eb<$Uk5d)*-<#n#Jh?RpUc$ +E#jF&yOa(@UB(4W2(rgrv!=Me**9ztyyR`gC5)Lc=94u&QZ7enJ*+uC;eLGNxIh^=GMkM>(RhItRZ~! +%7eJ*+7JARR$w51I3{{|X92B-OB490p-Eq^wt};8Nw4E_73xz0B`2FE`xY^(uY~mfRb#wp%rdORppho +7*;9M{y3PDFBY+Nfj4!}O-j7C;XH^wZw+Xa<gih)B;<HA}9@F#g0Cp#wA(E%(a`OrDgs!yh@pj<Gh*w +m+{6`Tb7r|qRauyJ#31Q>=Y%ZT8+YKgI{RI|2Kv!>OP)1FOWju}LQYR{p_Hp#_yomyetbmFNJR#v3h_ +)xPA0EFj9q~`t`)UOaB!-$jJ!TZ#oTqWKn#`)h0)=Ki}=55yjbI4z8RDD0vu7;dAC@_DH4m(XnX=J&8 +pYyo?aRnoJs%AvxESeav8YN5C3f))w{pojRa`pC#yngj3&G3=Somx;knbi*?*zy5|X_l7^XC*_4(<p` +pArr?&pwlp9M=ShaMz1nzbW)hy^SWHkmH+2Uj2(Nh7&Y8+e-!5|a|R5Ef|xiu79Ka^7(%P*4qMqpCsZ +{<v#>dKJa^9|Evclr3nN7~9-dexH2*4g#%MAcrCeFlsAKnIM*}ewKWQM{*}d36suRrHgJP-XMI#dguG +~<w`x?7LXczqWF(bv%w;BZFceiO6f`JuHGmAhoWod=HD|<bXVa<a>iRZA4s7fZJb&n<bH`J&}xP3kAm +^cFISPraYQ)u7otzzx&8;%O1e5LMgGQ2Yi=A~Z9F-drUu(<3Pw3KCp=oe%$A_|{{%~vZxf5Cr+e@hUA +{`mS2FtQlCE_{4a@FucaKTYYal<nBJl5au9WciGKH?9wKVT+k+5yJeKg~=Gsh|vU-Ki{f<AXWz%bRfo +LCbiE?GwRrg6Z_q(0||9ogZ@UJ6c3=FKVC?z)oFc@J6swOhyYq|`YH=|(D<M$R?=KqVYV~Kq>@~`>5r +s)bBS;YgF&_$r_R*pwz#JBS8A}Gj^DRMP4+QtJOSAZ{zTz--Ph=Se;TKjHGU2bj+f&KZg91ic!5(=Jn +DQGG=`H++EloXYCVQ!V6u3pf=&yFBAXhFcgLg+77IJP_?E++Y=+g3xtN=}hB~d+!%5%09t!T&;#yu`^ +-mS@6)?pje&Sq8U22HFD4=aLjiX{lgChcY0t<}|j(+l3DYW~j48FZf;m=mwS|fM#C9+WrJNiWoRzk%^ +(Nq<{DoA9GkcEa<PnD8|PLDQv6dk-ED2I|Rqiv*WPk&z@9;9o}D_aV|gssxiGSKtjW;Z%of+GvYa29s +KgHs9xOF>Y^2}6ItoQRZzt~Gr08J^{OYIC7&627_W2G<-Xo-^{LE%6Rnhf{s8^vAoPY)T}3WVcfPuOk +U=>Jz`lM3Pm64Pca-V9OzQy5t5&guw}%JswmG9Vrf-mowV7P}8dekT@NW3TRJlLn0zJkq;Y%Zw|yP@H +;crZll5KCtOc0ZuDeGqt(H*@S|#IVK>9=)NU9odbb?5%}y|@*eP<oixK0$6Ur_)mg&qM&Qph7<J;T;Y +K2EW&+O*ee*jQR0|XQR000O8^Hj4?&UflGXaE2Jga7~l9RL6TaA|NaUukZ1WpZv|Y%gPMX)j-2X>MtB +Utcb8c_oZ74g(<!1bbewB1ImQe830hVx6%O_=@~KNNHzAlXHIE$Dnf2$tZ3?Vqzyq72YspJlE#ElU1k +~Lo9eUDvZfW!FB7(Dd(Kh1MiP4G|_)&A#Qv1MRi^<4@e(A1M5Dz*IRj|A5cpJ1QY-O00;o{RI^YenEH +nE2LJ$*82|ty0001RX>c!JX>N37a&BR4FJo+JFJX0bZ)0z5aBO9CX>V>WaCx0rZExE)5dQ98!KEK0p^ +CcpqgNLwx?l_1H9=o642B^oGHr8_MUA8q``_=5FA^!sSvmu4Y>~X<J$Luqoh~jeKJhK9h}xBkwEU3@N +y<*~itpQ+D#jba8mY><rfYI{Bt_A(mJF*!k<BhHE@m^fZ@Ex}x2i3Lr2TK{zR9DUZ3N#Frl?Sy*OJ(k +YFDymW)?wuma_)7G-aJtHOuy}m}{A$KOktSXzr~{9_IUf*{laO_IJK!l}eou`*cb`r&uksJ(HCav85{ +S;Q%>O33k^Z4)VMJb!=I)bt3-w>-Mkw!|zugKIUJ(fBt;^`8U9BGx2ynBk<8uLkaJjV@j?;MR`}#lzf +6)q~xZ>Ta@)|He1t;??M_UM$`+GL+2z;$mKionKx8F2Jc-pN*u{8hl`U97oK|w-w=eE07OJ~cNQ&lGa +8*a30A?cyor=MP6^o6q1$$)#OIQCqQWpL<u3PhY*<Z=BsdV=Uf<^Lzkj>QKivFr`|0Z2RYV%DAPOOtG +TJ;a!5d=`egsvWX!OtOkqhwl!rQluP)Ppg&6i)lMypJ=HB)i2d_7+cC*T0s9iJTffTyBWqIUv5gU+fG +f&x?vt8!`NT$0yDEIm}TRph!^)5DbzTudE}qM3ebBYQCs)UnY$z>db%;O;mGWwXnA1a>S}GwY7w<VaB +7lzR$WF$jjha51!mur`)pFlgHVePioj3i!$`c{d!^r#0e{V9OnteSdOaXO4@Cu^=XOP~iOsjUb?<6)S +5}l@jcUcC>CIUn&G5oC}1XQLtFp<0FHP5GDr*qSwh;wdf&I^9o4f=#eL~h17`39e>mb)irjxmjz2*z0 +Og@Kr{eb{3NX4f@OqKqm)Fw&}c=R=iLV}vmuzl9--tTQ@c32j0SU(0G6rygpl~xT&{wpy27}&`f4mLa +T07mG!PfG;0bPxHJUkZ>f_>@=x7q&z}^*)WcT#wTUJ+zM%t}8DzS+RL~tr9Fe)qCmNx6y2?+210`;mL +6_k|l4?@d$xj&wg4g3YhtL}+%f#>mSh~$Qx!FY_-6Wj393S>0goSdxt5j=$5kRppwVT?z?=AFVDfkhz +$WQMykW2%W9xaxdtDXeFhVC1Jo-!x=jzu(?|x%&Dw|NZLI?KA|iH;2&B^#DZVHE*^#e3Rs*c>p0Rlzu +V|jw@Z(v9T4H>eEdrwleW-e1X*oYAxX%^hbg|Fy2YXYn}2NMti0*mAZT=S&eo1gk$imxhJH_!Iq+E5h +cr?SK6>c5SK$q8B)rl`1p{LheV&VUkx659nd|vK=0MACQP#Xp{;Xui8XDfCKcZI3h~=W-Myc4R#xI`g +yi<S3amF|%O0q+SSRTK-kCyxpFv8lr7SdYw59S}3cVC^rqPp{zv+JmY&t=RCw5@xA}zrPS}86V)qoVm +=rTnCHOmuJ6mRkHyP`<(I~<3v1ki;aXbk-Fd3Yo(jBMPGPQs?ofj~7R(m5j?O9+X<cQl?$$<M~u_(O* +g3R{gc-%JPY^n5Hb2WQfnEbImd^bvWQ6eN%Z1360axMS508oPfwrg?QMC%6OUz19V8kiMM1Sz+P6xV* +eL&Hdp*FBhmXgitePzr~<KYZ-PIShsaIY@0TBV=PQ?ZHVTER#eJT9A|zKX<(TjVH!b3dQom|D|pw+Am +w|eI*rr8iJQ7qiZ)O<tvWqZWync6v!eo<CxhyKrWFXW^H@IAGFgQG53S?JZ*pHQ{*&5!8KIAipPolHP +?pcLHGY18X+m<DH1HXp5Z+`Q^-prZ7(+WKJVgor_nKoS@v5asqliS=-!M$Z%fnFF{L5j1nyeU!op}5n +MbER(L|*61c-+MSS&uX+4tm4ryo5n|rDx&O!3Rd#-yn*hwKL%ZW3Z+|FRbFCKn6Di4*YGt;4VYtIGb2 +#=8y*E-c3+MV$Tkf2uimz=N`<50pg()OvhtU41=q!1ip|Tk)h|<P=?N4@(qrjWB?LzwWF08$>wIfo}U +=6L3thm7EU+Gna1WVd4oIjJQB{(Z&v5&$lPXlb>UG{NJu^rEuKe26>k)4IvUnE9l1&%btbN7do^ZAXH +{rK(BR=ECixN(z^m@50$&IOrEHGz+1%8*6h{a$4tt0{{sr`-(_Y^<<={GItI4xwVx02O_Rh@4P8eP`J +-hE1C8zGZ;Xj>+eP;T3czv#$A};()+hpP{HRCt3yP(^y21s?2rlpM=H63X9W({KvwU|p6#V>^8RQJdv +HN{;E^^O{vI(Iw^)80Hb38w=Da_o-wugTWI<`KzHW?pOzhiubEYx^<(5*B9dd*ICmAXOO3n-CBL<CPv +ML!(@(y64AK@3*gSxXe(c4Iana=4G1sq5bdeEbk=#jeB{?^t(dS#F}v$=8+N?0i?3RhRR~(@&#HV{W$ +h@ruh6ze)I8!Fbr3m8qsjE$5%G7TXR?IL&zYd-;HZ$J5Rd<mR9knY3mj+j(O=OGkglB2REHaR3xnNtq +zILg#8_pp87VrCv&<7tC121D|ICff!Yi=K>Tx*F@;MY!VieVpNV=GhViBQVe@XpzO5VPoN_bFpHq_jB +n{<^<|aETK?a1gmC-Y)=CqT-UR5)w87HjKOrj#q{2@Oc8Lig?a9%6wd67x<`nkiQZ=59HaUk)30Z>Z= +1QY-O00;o{RI^ZD9qmq>3IG6D9{>O$0001RX>c!JX>N37a&BR4FJo+JFJfVHWnW`&ZEaz0WG--d%~@@ +4+c*;b?q5M9I9T3ulr~=$2+ntCUfTNFIzi%ecTofcEzvfwvZN)YIKHC){hpyjy;;uoaKPe>qLIkq%y2 +mK%nWsObaWw%WS7ZiBjS(+kuYY==uyi^WD<XqJX5hWM@L74!BQt1#`!YOaxFP$YLg~9V`5>FD9<D>-p +4G}D$YO_2boIZ!JwpzlGRGZtIn$*B=J&Jqe+^jLK|7V8~2n#qh+Eu?%nLFsZ5JNE=2IP)G<}5&!L0Vv +55R2Qcl%i6G8x#G6x8ujkN`bR+)Ux+``gCm&NEO^*oIaaj@!Zx6m6f{4VVtZ>;EBJ3qGL4{0c1-_?~| +iag59dl{u~u}6_*L^3)g!(<}M4U`O}X-m4kySuq7nBU%Af1chv-1Ccv>BlR6HNE4F+53mf%j^65Qjgh +(+08Gr=KSaB-TdLr$LrZ=KD(Low>J;7s{<Oz=Rg)#ZR>I&!qRTz(hBzFTI;0T|1`!<A{;ChH->Mud{R +knE^-xxS4uag9%8k>rdKOCZe;vWrdkG;*eU0RWO#VlQbiIDmdQ=!I%^qx<*CTlJlV!lA6{EJwp)0ild +m$q&q9RK$6~5bn;DtqDR*IUkl#j`z%g6NjHfzTjaf`?5~+VntJC4t*h0!f)p5vGlq^KVX%cfB$0AnFD +czu!D`hghd(pnxE^X}f({H!G@yqwummm1u!)!L4y*s?}N$D&Xk&K_*YMsY8-4)N{P-<S!13{KOtk12s +mVaA|k5GHeif9wjn9cJvl4JHJ-qkA{&bT$7MU+c3s0n`Dmh_ur297F&EYZ99E|qts@t81f(hb=~qrrf +4xG`XK!oCd4&=@`r2ILRGk4XiPIP;Ho%;P*38z3(h4=h-_kn(!)X;j!JH#k{vn<cSi?3hd?&l&WvvuX +uDk~r$$b7;?>=rktmt%yv6c#$MgVVO`akpNVzGR{3Cqb2+h8o`xw$cL*ig<L?PHL*NO9q8wnc@RBj_C +Mk~VkdvMx>bZGPq9@89E_xl{7UGkqAPHgf89diZ`COMhIY@xbGz2JFXJ`=g%IY4-@dbN--rIvLayh6% +NrHj8g*7J9WrC-i^%PDSBfy?Yf$ha`(V8_Plt+RV#->yJp-5zv~p|hwm1)yfb$NaGe4-@V@>gWP#c+8 +kRTY3{<J5`)5Ki))SfOg+@vS1c|ZMBoy({ru8S*sPU#}{ODA9+2MsSO9m6oQPVy*ZFfA){I?EE4t(7U +?*$UN5S}nz(9pL4*>F^7Qrt*NwEPfzTm05iCMx*vVP(;u<8t`x^;unnG5r3~?qj6j6sJW3hP&`{pKsv +ICh}<SB3XD53b=l%?#8+8*5x0!JmIE{>OTGnF+fAApRuiMXL-xsYTjHErqZ$#`IFAT<NTmP}ZHU%p%M +u|<h5E3dK;3-|pmNha&*?<*Pax%;Bq=j=$N~x3Il^K`T2K_SFaeSMLzaa?tW>DtW)<^$1s$_bFfLqPO +SY9gOp3(}$%rNtvea{7l)bY%W&%u5W*8Y~wKO2MMA{$~*TMiQv{$YiBl;6=Sq>YPMMi8J5!Ja~y<p0* +O@3dH>K?6CUCyJQ77D07OS0((`EUcxWKoON^6a5=5>bjhB+W`eY!*^%f+e9g$v!s7mx3}P8VM9X3_*t +C0@d3>MJj73hB`>cEw^hZVpXVB+z1u_SIQxWS0n(F^HwBmRkkh!6JJ;Ld!sg0S4nP_C=_$^O9kYLI_z +BvH|rer-!}Fd8{z-cPLA0xl5KK>4h4x(S)?k!Zy{l4X<f8LT;|F<mS9wG$qn$(;8pZsxi0GDtp!%{(u +HIq2&6G;5lIR(%T;Y`fCP~gF@yKFd3A*PZCL3^0(P9dQCIfwQZ+I77+pgKa+@lm9aYg(WJ#eTTWzIDs +V;z`D08FTNuf+=l}mIpqaCxbtlJcNDGFQhBvd4bLsmcl!WfNc5%tt^b+*)2y}z=i4Ky=R9m~!D{T^Rv +c#katgBFQF*i-<hfPpvwoKbGDHHm^^i{tI8S1+76$>o@2C)Eh*Kbh4sBl#pF9_O2dP4ul!rJZpq_LH` +>cE$m?1xb|XiIe9B+GIIZ4iLks|Eg#)&`eX+BY?QA3pzI6WgrzVlP~9Ik8Cnw-r1P_Jfe$@j#3$G=#% +cUH5NJsTcN2NsRg$~dxNMbDr;{KD~>2>oW1s60binsg__b<p4y&)K=9T|VrTx(h+g(j5$9BGoxQ>mcC +^p!6UB2VGq@!@bU{$+I8<!G2SUfrBbEu8C<Z6#VYkk*)SRE5Qiqf7QsJxQRK}-NESl^zq?1olN)M-6B +E*e6K~YQ~aC%&r=;Z9A6njM887IGsmXuNJ4X5O;Zv4{3$|WF+H{OWO=;*T8)6qWkzGP~<qlP`T6v)y= +WhG$(gsnmi6{)3UNp0(Wvsgy2sd2<Pyz<$t-8$fHr9~*&F3GEN1IRQa9$*C|juRw+n3_3)dK_OY!@dI +^vA?=Kw&v=K3a^|VV}CGaV2wASl4;CV_#fVG-&&|Kzqz_OXLIZpIELPaY=Rx7s6wb&rhHU(&lcBgHT9 +3i`r=0!k~|I|hy$mE;FcJm9vXC*0B`Fg3Jd1`-f~;Lq1Q>6SS|sxrs_-Bf^K(=y>0}Q73I9&ita{msy +NNFwrkW%d>P(OZ~5$oPiMCe^Wh^^_pgV&tmHEiis8auO}@<U`q%0G{GPwLoKJ6N1yeTk|CJzX_i`Kc3 +T(C3v{ynM3za>+cUvK3x+Th9yAoC`3B$S!Ei(Xoo)V!8`)>4+z(ZFneU(me0pX+J%v2zv{+JtHRz(6T +A3zPl0#<mkC)>E%@toEpf4J}Xdn1J4Fly%YT|f34IG}*1Tba&jcBiS+ZQYr9dn9|nMceCM{Piq5Xu~p +x9DuDk;?5NxJ2w1_88RdXf-4jQ2=K<FMH6HzC=eb(99mnDZE<v>QLzQNw)`l)`i#U{-48KBZvtnMG2| +O!1JJs(E@%58sW-|P+i#OQTbmHf9$;omm1-kCxwL$iL2jXh@?=qh=V3A?kOfrk*jB`SnalDc%AsK=@7 +XdEEB|QROSX4L`(*ph*XJ^}Ej`>n6c_QXhNE_^-Kcfq`R(-APuJ(b!>Ddw%X^Hnzd#(3|CfwA%gNp-@ +nQ;m9Cc{%Um1HN9tYALe=KDvDI|9r08H1XYkIE`GN#7jg^s7KNpacVe?@QW@aJH^2Wr9z>Uj@DqfsAK +C>Qz48(zCF3XIA)x|$)h9*&8-t?VXqoj0>xL*GN6J-R#a_CG%KeqCsM#u)uyY_NAX&2K9|q$R<P75As +AdFW$EH}PHUs7zs0bd~qv*7u>jB)^6XDyaxU%F4)I{+SHfO?Ox=P(lItXp-ufx+vQw`m6C<)b`6IwoR +&^vs;zQk}a*=5-eK%VF25pP_`;$?q!Zv1NFE1GXLuO;^EzXtW{qy{o>;(%;oKg_+cx5kh?`9bV!Y|)_ +I!!fh*hq)Qi?XAY6zds?K&cT@3$R_dv;AG5rIjYq}p3*!sr#^0kcx^MkjV?mn}YQc5U4sSf@FP)h>@6 +aWAK2mtd`vrr=m<HxHW008rD0018V003}la4%nJZggdGZeeUMV{B<JV{K$_aCB*JZgVbhdEGs0bK6Fe +-}x(M;kp93OTuw{xm>ZL)G4xJt2VY(l9E(TtHOfdkVFImSUe<ieg5y)kD0*?2tKSNS6inlOC&JUGt=G +Eujw9po;RpgQ7PvlFX|-EDiLLKu`KhZs0M?Zl@vvpWN}iYQmkYtMN)}67jwBtGHLqcSuDq5*3{z9Szi +BHBw1BQS)D|+6!l832g@{{MQOST#Czyg%BadSF_THQg!fTx06ix4N<=Y!Iq{>SklEZ9ag@QovfK!OTF +b#q){jzVqKL{$R)HvzLVXrXnaMIr4ZQj>iDAxJEz1nYAJg)xRo<lY%&!MURN?Fya3F4Sn3Ra2XHwNNt +D$+CT9bn>i#$#9N0>DrVlJy>nFRw6usC=o5L^5j*A?gMHGoiqA>2}~^9R5*thdV7fY}@-29rY+iA7U4 +r3?VfdQ)tsFrzYw>j{q?r6=D<X(b1PMVYTf7;@_{6v?{C%UVRUDo>kQhWvdnP|wqRxrE8+uX&|E)$&9 +ASVo2Z{uq@RG^}`lIV``ale7x(w;lwhROhoiPr1>e$>JKmRr)>907$Oh!o-Ot`sMYHmzP)P*Vo~j^B* +q9;ytZP|9y@8#{KlfbicWr0~Xc7fzm;!sTss+5)@^=EM--NGZ;+w`R?>8y!qww{JO7~{18h;P}TelC< +SbBUY2>;*CWm2$m#Io_4!qJc6#>aJbZO=H3qJ$!>WwKqJ(Ynp%275pG&~zA}`lb9Rh>ZWp42LJv}|+h +kJS_*<60moh~<*7kk>)QHirEHuVbFTlKl2hnMuMuP>8)6;&%~)_Q$&_5R)K@XhJ<n|^$9r+QN$)2mKz +f4Tf61oWK!HN5)q-Mfo-uYn^MJ&&gY0Y6N52f}Fvd-V)<Uo=ZWw7i17pqV8~$Ks{|fz<ZxG8;F%#7E^ +={1l~)tlHK+TtqEfe#jQd(uOe@;6{QLCwfN(fXE-{*)R;VXbpRDG#Cs(E{ZZrDjD*|4J9(wuuwC}71y +t;<%pO54A(8EV(3m;Zx7gVBQg0_yvs9QE{Yobdxe95FjF8&{vrBkJkii+9yQ=8jDi7mJS~?M4=q%KDT +1+wSK>PcX~gY#46EH%3s}&U#2Al{n>cXh3k?8y{>M+;Vk$m<^3`@2+E}p~Ye^6+K<*BG;RnBhz#PKMp +eoX&9*#!b+*v09VM45<dqW4(XhZrvRvo$&KpwjVgpZN=?#4ZAK%}rGmO~K<A~|buL@h)<`&Gs@HK4(T +m`nsHon{S+peA)QhjCf)`N&8<sVHA59beqbO=T^U`e!Z2D+aY^VlNr+Xidj3BE7ri@$MLlKn%@HppsM +rJ&QZdGA{HWn$H!66%~hyCM9FTZmg&huVj255(A}aIBSx09<q6$KvZMZMtwa&=I;`V_jD@~Zu!C8)^2 +%~R478k<4Q_YRSQwba#F$cilEqlU12GBu!97=Q9ES{$conb<&@OBvrUYVk&C97qXA*}bJoDUtq$~djM +D*wNmNY%91R=+2#T7t#wHzvSMGjF7VZFOm*KKoI=Qb;G#FkR5&|R`(tntZ+D-<)TJRYB;+`<g6m<bYR +M+Lu8EPzGD-+46ISzrt-+D}H)yf+SkEw1y(OjV)-RZSP*=D$oU<31<#|(C4&0OnLv(S#R?KTX+#);5Y +3uj3dm5Ho|BhyA(Ljismn#cI#Gee<#Mb>Fx3+4;WUGqjFaZwPe7n2DsTiJ2KcVRt;_lyPI0G}u<s7Ha +1Y9Na5Q~4m%lP|{x#K_rEXtRZ23X$E|Zb-A6*dky%a@TG`<8EsQeUEk?&J88RT!PwMCmE?~7`mxy)Tn +7xBf6cPMA(({&)iKtdx&Q~6+f>eU=~`Iv}yD%!g)+4+z7V;yA^={xw~b$2nu1V1G^w=-EM6*Hk`r-32 +GH|)AoC{;_WxlEZKetmPIPj9Uw!J--Fzxzr=r=FwfErOvf<>hcLzAXe>VZQ^4lb|HLd>(Ng9T-6ILkn +XE#EYydFa8oXn5{^`US610u!foL^TUS>JC81^Uw#dXX(7tE&0G)CUYAG0)%=9RKPaF)VCcqP`rE;I-@ +M=%GeAXRx&#**5X33!pl55*^ws*rKANMg0gz$dG4hi!<-0GI-@Y=C9Js55#M&3174aI69*2}&T);-r@ +q$TQrD*;dk!edjn0u7vP_PqTL2Xo%_UfkTkt37!J{CQq{lcv-D+=DDCI6K2GTW<=n0!+P);nGI17Lc` +^-E+CoE)|pJQd;-f;q?nPuQxK3FCd?Tp#BQcd2bM+_0pkuWWf`Ox0!V8JBuNL#G(&YY3Ork$Df&43-n +`#OIGb~o?=w%zsWapu!qK$Oz_>zS4Vl*)OSF~XWhcULqZV~dmV*D;Ssj5=avaI}kVL}QLdtjBYB3%Hm +#(zEN*FMfG5j5i2Ncr%ZUZ?At+xPw9U~0H6@UiMw}6Gi!pb4Tf`Q`{BOsSa!GIJzH46FA#)1s^>tDps +LvY@BWE!zkcYfuz)lY*sFE+#N*0&7j4ti~`9p?6|{TVzn_<rU*AFO0rgaAPWADE&FEA-i)tU!YT^0B2 +qR_0GtpZL}T9dfcB;l~sIdX+!YM^M9qQHyx(n%)LMpsmn5aB{00_(je`bi?<}3U;<`>sfR18~~m(IS* +7V2;{nKr0GJ|BI|T()-79mS4~Fov4lJm4P78~us%`5lh>F%BxRmayy^jrAzT?tVB{8yx4oF0qNXG%qx +SCT7|fLNA58+&hk@!QN@2u(=y@h^;-sHo*TY6i0G*L&JA<tfVPuNz=Rgs9q6V3??U?lDIX$shz|5+Bp +;@8Dw!a_SPGsu{On@k#<<(y9@F!~Gs;x6;_nDq<oHtqBnduicC%;Y}B+wmnX5Q3AQwPSE2TIT9Ne%Bg +Jc{ww8CkGE{{lt#OHn6aZwLMn%gb`GG}64>zdlqQ)XZ6$?)y|yc-P=aVK`6_7>sJuTD@a9RH@kg^Zv= +u1>1J%Vm;eAcT2A55fSO~LsB0nV}N7HaNRS@fAB1+r87tS$+4W%N)zTGQg=__q1N~DnVrNi&P$+Hk!N +!{3CP9Ir&kyj9E<a-tM^w7>g?*`=Hl%12OWB|;gC;MjROC8L1aga5AdjNI)SDR8f_Tr1&#^0T;)luDa +~K1lN5}Wp@~Tc7|<DxMlQmA!#G`>Uz5SHp#jjN)MK0IQ3WQ-2GD%#i@&tp{zrw&w#Eeo?%#=_8h9%HO +??`D1`dG|UDO#9!ss_>gg!lem@JZ1>Th6{^Gi$bwcppWjz9;UC?lgquKj>_`z1U;G(<wnR6a67W&(hq +o{kb%Nd~OEUmLvw@_?aP-IEhc9V|gc-@Ag$e)xy$6kv)Eo5S4vVbf(}^Mv^qEXU5weBY6;iWwupBkIE +|G>~u6R+!?6+T;Ac?&y60Pag1LUe-rZ11wey#T;0PYSq!?_A_2hvL)BPvKR9<`jD)fwaA+F48sZwp@) +}Iyh7(JlN|X_XLwOv%XLxPw!Wt~lG#Tr+rY0mW+P$Sd_VJ{+rX_@sH<Vxht96?D;Ya@ahow-7T~3KG4 +sMkjem_U8xXe2<9o?V!f9?V7KQ`qjS~2n<&vKRny#wBujVLK*P*eZj<ye@+!KTNXIk?-uIMBfkB!q(M +)M8BZw29G!UIltK)(&nFoK-vSZ{j-x-Hai{R-)k;IBvgHN#(#e`mvI)ZSXpI%nJM3q!!Ii7>OiQV8eQ +yzHoF;nlS3ih9Fp^qAD~YAlAyh@v|1>2Z`4_;)sn;(I(48AhWSZPT$1^9*8HZn0)Z&I5X}mBVt@14bg +wvdgE|vyL!N>0qt~PyJNPnrxoR<MvXVCg8t>M^2g=_sqQovTF&NtQaFbc2U>YKL`db5Hto5V1;1c2#o +rqAVEPtQfNBj*eY&5Tg((?@_;zGmlUz1_ZB1+#Fyu91&8{M!xtSVhfSI8mp%!L9cn#+*8H{D6bXN`kY +^xviT&f%4;|#;@pVv9&<Z=)IQuRFMGiesAmcLmyjolWpGHe5F6b0|OA?I&2VXaspP|Gy=UI@QP|6~&6 +41gN7EF^UQ)h3N=a=HEFJ8K`okSo_((ZYBc`>4J5QiAS1S>&L;F~l`$mMXLC>>cvYx!C9QNpq=qtGDs +sp68PAV9LoxFrXjk*Yq~)Y5UUEb9||OxtrD1c_UbDXU0IgGxR~tB9A`nE<M9#SJNPq8AZ}YbLSD%29Y +O8wy}-h2@;imZT$l4f*Pz(@M>@ZN2v4XWM%I1<7O=8)8Vok2KHk>8Pm|6R@GP`6NxU`-(A$@kJ2)pQC +#bL`Wc>&PfZF0PSqHSg9T5soY{X&gE2QqKk!ySU{Al0C8()VpXqGlA~kf1C<^|_B!LNhn1o-UV+OBlA +-~F57>p`|6+(C<Y4(v+U0cW0FNG5>4?Br!4@2v5eoyF5Ol+q)924=o|xk113R{oVl1{`(43LpG-We0B +|R(|12e<~lq~>1=vDr7c8%saCLS=OsDlzZW(E~6=QisjTL70<7<63a;Hf^5F<@&cFcSphb(q4l$Edt5 +zVMhYylo!v-n_rQd3XBu+&f0Xyp76x&d$SukP`TJsuI+al1`6!Dq|rZB%(KOmMf9eTNs_^KmbJCDteF +@e@E$F(y_pso14q)E*h=loTqQEn73C8YioO1!~Ev`g>2g0VE&mNKu4(b=@fF}GC`!-Cszm~u#UEUQoi +ay+YSV+VH%W4s-uZE@>D1mW6-|=d!-ZbMPOU#vj_TP@TX2jRbHFHnLY6Dgft0i5@r3<5hfX78ql^`pk +DlTRH0;i-XqV4249g8TflmHU^=S+&m{nKQQ8jYoVuA5uo7>MvB12b_TGq*Z=|w<tEF>9LK2Mtf8_4ra +227;f%%;F@moj-Y;<h4D}Ste6sL8sl{;qADhLqfs;Hy6Xjb80eJ+PhDwSNLvfCb1iiS!GLE`8mL6|wr +_OQ<bjhNVc-fn-MfPU$IXMN+CI+)~2Ee|+%Z5z!IZi?)1)CoZY^=DxI=)kG^dSVg7Hke)+WoU9h(C9W +Cqo|F_v(EJ<^D*N@dktt}TBk`EzxKYtLm=XiZ=b_}UT;U#&783#)bVb`o#Un~(Y=GEtM11fmN3g9a@- +`1p-b-l*>A*Jr`d+uc%Jtf&%{M1>w^;!1Dy=h$>8eYuI`2aGndc$|G;fQ5e!r`C%s7N-3q*0oV1xhO? +llQeM9*nP8(QKEB4fc^>Be%oAnIsZ~e4aLRby{AELxwejlP7l(f8YNDp<ma!0-s{c#dWd#p{9eBzCji +Rl7|$J(~k0>!c*w`7dP1AN>7gz2$3-7&hF|5a|1M^s{r^6J28IAf)5ay?ze&Sza6t>#l88sDQwT<P3G +!xKcbK%B-{(ohMN<l|BHj)$$g@a8HT7PW0>f@7VMLme^By<vYEvw2`qSV+?aM^UIe1zT`LNklo;1eJW +stle2o0HqiUmc&GupvUz)J<!%Tlm;2VE}#M;Q!t~ZN)8RC0Nt|&$kzpi&${psq3dWP7MLjj?Ucag*lB +H<TS>*HR!+XwI`CcYwm16!A%9!>SicX4J6rm9;c=C?_pi(2oeA#Yal^k|aL4mA@s5sDZds^4c0n^m?K +?Nyk!#C#GV0c(4l=IETRU(lsG7Owg6_lCg6}r&2Ey5%_ugaZ3i(5&MYkE4jJIzzpl{tMhCbvlOwcCZa +VWTKGK!8@8}Q%Pfp^qlHC5&TrXGP*>xlA*Dv9~Uwd5MMMCCR&SyE4G$!u3NWszffA?tkD3*Zauf-0RC +JnYTM(`k5Aq;$)_6D%f#dEHqh3()TFP8)6X_l!s318qtTK_0==?Brew?<Jm~zx>)GUiDrEUk5KevT>n +9jl&?G&?VP7*DPG7;#7P&;RZtmI83rdKIUSa5Nl?}NGxFUzne#Y2lg_=fn75}I&(7q+@xmJ)Co}=xiv +^z<q9Y>2wiry0h-pl4b?)Estw{s9DD(5{vn|={YVJ|13(GSA#tE8I-r-x@_35O?YUgY2VYN528{k8wH +b+T#mngyKortGsGT*&km^+_rJ)Fewi4X^HgDAedvYRPbXJ;)M@b!3OfQbOMgZu_1pV4;m!>^L0(bjGT +YI5~Va|iuzi^XW^~!Il0d!Qh=<SOsFdO@A<)-ap^8*%LA(sq+hiDxm+86i<=gccpRw+tjuB@X>+8rn) +*=}RbBn4wOVphwgEH(agN0&ntQ60;>vkCt=<6E=u8yc766TpiSbD!PBY@0K6uN_+rE&09TL~~QyBjKI +k7WgozPIXF>ahS4yepB)BPvs}4_^uO1X&nJQ_}FRD*2uJ<4i-F~XbJ(i6E4tGtlIi6or(+GyB7LTp>^ +NyRcp@TUFGJ$*-~+RZ;uUAbc#lH=G1f)CYLx5fo=Xq4{zE-PrFz^uUwsyEzH>j%46?}gNxOKdol-V#h +ZZq+i;`=j5J%zwwh)x%LJ>_P0&&)Tjs`g9s$iy_fnBcl@*W4exw38<&OpDJg+BO;m!>-*!Yzg$^Z{CK +>p!sUIt$TUyMny=?7oqgI3vrOK=K0{MWpktdlG+?QKR=iPDO);yB<+T1hDuZGFLP+Hvi1MrQLKXH~cb +7YF#!ZR{SJ_q{UwxTE6}4KKx2j?L9s$2acxZ$T0uuKc3F_~5S_{2k+G2ME&0PYOQ}7pkIBGlV*fBYme +rWbW`5hj*r;tlL0{A7M$bHGO0%AXqH-EnyNZGf>;6VCYyg5vx1)QxRG?q-(#o**jK~-;qc-w{PHAOO8 +#k3IF{CAbcOj9T*z@HpUTd9W5<Xzvde>V2V!XP2RANlBoi#N@W7>uRQYXawV=A>gXl%akgupJj*{nmV +js?U_r8T_kpe@9mZ=aKCSxg0V<DnmA~#_7dh+2Xz#tZjjPl5v~)4IuO-k4Ut4wU&LVZKXMdcSoe}%)2 +W;ft5OLx(XsrUh;FH~jkHCnws%~5ED4~S4m^Mzaq>B#IrmuF=H5r|yC?w%QgDj5?+w6|QFdP$yv0^0{ +k8wunIn>@N*|8;ql?Y<QgLg>~MV^8_?uO_@4#<QZ_z1tdp%>41{xR6x5|3#Pr)X1CJnM0Cu?>JunNjE +36G!lQZS$>TA(c9es8D`Sj3+8l9idn84W5`Bl^onXjxh7=sgwIXt^dn1k1^q1xu2~QfVKlJh^tvNF16 +GeC}S?66C&%*hTy$E<z@Tv5FC3h>@xE_fa@D7*&@LVR*!bjJ8)oh%*uudV;Le0q#(sy35iKOfG-fiG1 +Er{moWQ*vfe53W<~=8QoI4b7g%wuacice%t1R^U_nIZzD)4a6qpO?u^DDFDkyzLXk(6iTwYv;@7}k(c +Y-_0RP*xCy*`riyEzqz0t;*nau-lzSTk<$NWRO2%w#<5Fi;$a8Gp=8NVdm@KU;n=+Mw{Trx5jMhY1E7 +0*H|*ynYWjOw@H&m8>aT)y0sq?Rl9LKsQq!8S;}4%If?JG2|H20)-OCBeL8Z0Yxdo*a{U>c7pVoD_CI +LV^kJK%7Bja1_0(uG{PuBuZlR*nqm%p33faXrm4ml5mBHlUQz<Wobn=Ff5o_g_G2qvlOk&_Zpud8KQ> +$_ui%-$t@Rj{^Qz+p@$F-v70FrH1(Jkwpg>)~=A{Kb<^T_G1$&G(6&;NvwQ0T0?M6~0n#t)LV@N(a1y +|NVk1K3TaCPt3K+C%WMWyz}-z(I2931o=i<z#rIM?^87<wI-)C%CJ{QO{^CAQ*>1pZ<Q@?Ga?`;vku* +A8-xkB+_TaK8=uGxByd`uNh5KTbz!@n;3}e&^H@vx0*OCNriNb+A6Rxh3XnPil!7<};E@j*ZJ0*gKO* +nhfdP8d@Aw2Y-dS!dLq&(mIUsDU6vQQdCoLJb`;^FwrYCo?}jD7FalxmwfJ{#tj@msMhsGb9CIX)d35 +Wlzvqwb0}p&gK8aMgTrlk^Y#)oL7!d~!<+NBmni&xPO^Fah|;hCX;qYXXJgu#+s~{+(S#VQW!jU{>7{ +Whql|=|32ozvR#P5XIjlCbN|UQv*JN*Gg*xekze>56eL|uG_qaM;m79&|>_pfEIy)Fb#XWOmVKg%$SK +%KH8exJ1?HJRcXUBBkx$7Zq-VuDHES-(OlDwT3`Q!wiPhBvh4!onDYg$}B`Hoq`l9*Ot5EzweEMEL)d +j_Bimz2zv&e^a}+H~uX{xj05S`7vr!$KBcz4-cH!c~CjOn5p^_Z6H~?Qj*Y$)xWNxy!B}TXwvDr~vgk +7#7Ga55w^-v=ybjhNt@r+Ok8hVTZqf_>mtXs@d_BRSb@62)qX~CC9-##&h7)6~N`GYK3Q<YLSb)?4rO +5hm`pYrm|5%EtRi8g-qSq^e({wQiS%LaXi5{aB#txB0I%LG5Xz#aGrDvYhh+^V0bgEHKqZxJ+>}FX`L +m_e)#j$lOgbN5NnUnd%VSL79n<Xn`=;8JEgU#ornA6a67gmf7|}Ynw*_bu#aS8nfNvFlo7eT7h>76af +tEbE@Dh@JeA8R-oVCMMGpyp8o5FfQ$+`^{5YtHJ{JdvOfqNqy;#~=3Qx=E+!%PsSa5FE>(nkffI7=@G +Tn_O>bA8j+>B6F?y^aUQi(0*{z>g_*ad@%n*|Y>yz=hMPyXh$kE*y#in=;^-c;ptN_T&5Lz^Yp-|*lJ +na!kQbphH}Q_`K-rlk$aYSdi-9sJ-S0UCoW`P$2A`BrZSRO{TMi9co>l~NyW>iewe?Qw3Gdz<6|MsO} +&bojsp^BdVfWr|yP+s6wI4^W1tTxjD{^NHe(qn&NC$&a{-2b=vy&zXm6ifs?!sOWA{9=H+-L-9|Z;zd +RY&v+~Vz5>jYG$tCWR5ZdWP!&4`;=7H8G<K`7lY%p!u)?vzYdKM4ntn$SMTNUUfMw22xQ1bWWJmRzKt +FwW#-U0l%(D~vQ|}T}#4Ti*<nu(`s7TYr5^ny#0QgE!I?yCzC&Dudb1v^lkOkjH1~%>kxQ2wjg>`i#h +><mK4w4yd#qE)ymuKRY1QKIOJh-Y?bm2b69A!D+m|fUp|4fSgjP~Cgt>6w5>fj#xT9A(NBHg?1Ki7X* +%W^40yp{cr&2)OrITOm<1;>p%GA~M(`E;HvCDwGR3wBgVDn8>tbE>c0pjvyDZ4~#Q%dKY|`$b5UJ{xq +>0$pQ`@1Jii@xHe}z>l9ePGraCafGp+SSR~$3RHb@Fni6pOWZ%T)%eFxt>Y?i8nl+JLNxW`b4fZozL6 +%B(&pIvq*_H^e)S*IUHzk3JeR;0_BH89^pVLAV|?b6o9A59zjHZiMl^ZsUBV_?SF{6Rb*Q>OehPM{hS +87VJ=`UH$CNX8=T>%yYys#xC1{3BtJ}L#z&tf%vSG-P=C@xLU=v@TKfS^BDvFOKy;$M`VhS0xp{oy7f +#FqKfT{V2Z){d@!VuXt3<X|TN!h3wx^w8!V>!DVsvIG8eI!BnOuM(;%yyWQPo*3K;wKQec<UDi94Qr= +Lz7rW&ZXf3NEEN=+#+%AIiQJY+o8RKG!W<P7Ee12NQ|~XPCH68=_?b>M%;f>6JNaO;L5#vu@{ZUU!I_ +7s<)&m2&BwYtKwEf%LtLd5dzznDrF%f*5taRFAz6w<SEfwiLTwr%#l0`ITu=|$QS1YZ5Zd;V?PenC{^ +iZ)Wfx%&iyo$=GZ>i3Z?g&vl^Xzx2`cxP5dsgu6yP>TE1GL+KN4!DEe@B9rNh;I38aHY;fWJe*^ncUh +G2>laxXiCZThspU@4bd3*mjc~I8H@&~VbK8rHzN^3(5^<O$r_@MMDK~7zMXWjp+?jCVdWkPlR{9&`*& +83>Ce%;$i`k_C0$6W(cV_b2rEG_cz)P?z6M^OMSC<`<*H%_Rmw(3aEZ!)&6!v$>3=AdVwn@?18H%8Hc +RdxM0w^Q%t=oYrOw}1h>JO$M1i@$mdK1xG)|LXlzoM-CH6w6U`lAeZuBeUXq%**>q2Rj+*s;6FyP;(v +vr<01nIycy9`pg@4t99-9aX5EwTju`(%(-kCTx`w_H2<^6N5((>FCtUntJFaSQlr_p$5YW>vro4+TbW +<>t;g--?K^|pck0GR=YgANMt7aIU(?)5W!LvJI$_%n8+&NF39x;juE1*_IQPa`?W}7~+NXF`m-Vf^WX +yW#p0cZ1(o-vSY?piIcEZbVohSVwpl#CKBmCxW@Tp}R_rJ%{*N5$31^2S9BN)QmJ7pu-xsa+uJb2nZX +)hc)Jn{bpP)h>@6aWAK2mtd`vrrxH!+LfB007Se001Na003}la4%nJZggdGZeeUMV{B<JV{dJ3VQyq! +V{dMBWq5QhaCwDO(Q1P*6n)QE1olt`=ffTg9fQ(sWmLxI2Bnmc>b1)j6N#~_f4{^wwmNC=gAX_79?m) +Unkkv%L<$Xi&DjRCypT$}PEG~gf<h>>u!0pK*?~x<3Qr?<Zf3S;`d!oH=N!%qObN=vN;6)Dx-OX5x{1 +Z|bxEerv*`<Y`-q}>^n?)02HInUO*O1thPh#<TB-m~4}um4#Q~1%0zRpcZYN2MC$8g-NIVLR!yQ$O3O +$Kc1wKM3;j}CbPi|bNj*ji;!jqeCNVI=YkwS)v@x?SDUI{!q_HEr*c`(MFk8kgBBn7ljWmSOk2G|4Kk +c2I#f0{85HbRn9^EpOtoIFxqLJ!r0w97Db4f3J4QfK9S?y?=1^~(BMw;&T5m`w<&hxMYXcI*OLkXH3c +fURGqzXm*ZLAGiJJZ-xfGgrrZT$clFGXZ<FolpYzN036v9ZNwC#nipQ6^YkPa3t=BbtNbTx>91mbl6q +)PZRnBP)h>@6aWAK2mtd`vry8e33$;2001}&000>P003}la4%nJZggdGZeeUMV{B<JZDDC{E^v8$R$) +)%HW2-uU*QH-WToAp`-()R6Qw;=${}?3;e=4+O(uzp*N$vwm+h(ly>IMf7p~BiK#nu>X8h*OIC-AmIk +k~)FXS+2Rm-5P5oChf4_28_W_g}xt+N|ZRqYr?M^z=%X0R>@x%O6%fvWVJWz)X4wbXQc>N;h*`O*4$< +@Y{I(1RMv3em_JsmofcQjWpab~9*-3C#hIyY!ytMk-Sc(s^>TTYReExRIuL(=Wa9vqSAjhX3`T=b8pi +?cj5#hAZc+d&_zZN*@dx8XP5}-?c5negJ2)%b(xwzEzi>t}g$m?!VsNUf=!>uG=@Z&ohBvM175LqkLG +3&oO1Gvy6)Zf-dIjlpTeexK~t_ksDNbk!9J5_|*zy!=V7C5u+!;Bo_<OD4Znd{ZHbnkHNxWODHd79n_ +Ze9x#pawH=-8s1fTuANkZrlz=~Sz7$`25*&CL<rAyU(bm+<t+Gzo7BHa)Y&)7dslp3CuKz+j5v-_tX* +#%jETz_O<b#6%gAXFtnvkBe-ov78$wBg*mDnN~E^En$zeWyCqd3@7xX~B}Wh-S?gR?ck9k`?M<G`>uT +x7_2*%BW~@p}M~mTT)I8z=(>;M7`3&ZZAx@aJb|EP`P_$WqxeGG{)fcm}Rr)s3p5vy+i2Ucqj~^<C{j +CnwQ4xhVnkrI$FZt;Y=?MQYH1w_CU}OQ@_*at&<fdpqhz?5ukdEyy(_U91y`;{v<MPC61byny14YT{K +=0<V71LL}~!-4U2viXDk3V|NLyCdcKT0_+rGAu0UdNfS$`%+@{;GYpI)$ECP#1<ng%kq4+TiDy}J69S +t!v3YuVNM%ZG27>jgBB84dXUCpv5W~aISy}g7P2|B6N4bYRKgg|B4NI5?G7ZB*dhAKh5cpB8h#KV?ho +_jPXDkeXW3BCuec{COiz~46qGxJ;h<7A`GiTxeQcF+g*$Gzs!{jWb>$d3Mha86alIg*Lu<4hghnycL( ++FGQf3>mAsHvFjd57EWBCo1AGOK(M@o#OQRIYfMSS5N^iRM}Kvc<HTJ7NiLwL;2r5<$!tZa54>m*S)6 +R!kizxHtG!18U8FhK!nus8jO-gq@cujY+WVza}oH@_r;HXmC7cY68~{wMmUk!^N#Nv`7Q-gr^~$i((# +t4?GVad~lDC3$gkII3XHhsIo7o%I?XVe{uKXK>Wjp^T%w0zO<%Q9WF+J61<%5khNoeqNI?u=f(`Zvt! +qbG=P1?c;Qnj1AS{<O}<sKD;6o*%L{PcgW8UH)|;kEQ<PUz*01irNX{ZUq)Y5@a|!8r>j=iD^#LvC%A +He)m|xxBf4)B#-~Y)=jE#*91soQO_dTpHQB3kQyf$J*6(1Hehqpux`jSUc`gq{`2&7;zJG?Qq<;E+1! +&svQ)5()-@?{OYaf8lI@l&E|2v781zNToNLRuBm#?58*@#bbJPETJ^HN8F3bwoN52M|cu@JNw-tKjOX +o%B6xYkJL7bwqV>u}H1{rshRDT<x-<_1G2pb!TiGyA<R7jBf17aGW@T6B>G%QjSxBQSjH_FU3(53Lk8 +I3tbfXYBfLPOyMk-#Z(hV_|`KsX8fuu4mR1pP)h>@6aWAK2mtd`vrvVvA-r1z000{c001BW003}la4% +nJZggdGZeeUMV{B<JZDDC{UvOb^b7gWaaCwbZZHwGC5dQ98F*p?4sn@iHQdoL{vQ3(!$u*SAhp;t9XV +3c7lPx33xmzyx-#d~mzwB*74aZ5ESIzUxXu~l44K#0SfzSz7A{?ZGQnuQtzBD8N)>eQIowQnDZV?*BT +j-e5sDdyIgMc@kR0gE>D}B^Ka8R;=j(1tXTZ5`)A}a-lQKf7u*%?lOzM_~75xjmJ0DU{z9(etiGyLG> +sXPDJRm>*)J04gsjDCxvdm~lDjIk=o*%-2E=x%z-XxtYSFHH(HnnLr23#JM$I_Cx-N*pfY9qk6~*Gfr +s&Z0M5=&a$o^cFT2=@g$)Y4S7#@06^+Zf=g9#bb2v{?ms~#qRCv-JiwZAFr-1ul^uZ4rh+Hu3XOR+QW +6<2~6P~*Cq&pqF_Q41zf;BEEO_?g+;v>FbPu#-O3jx%*m$013cG_lOf~_8xOY-C$M>S21lnvY}z>w+O +bZd=@r%WgmjLgRFg=<?%ky~4BTSSDDLhl^+$JNzo^%&#%K%CKkaw6uJG%a`779uG|Z!P)@M~!+!BY1K +}eQwn9#V;ICyrE?3?V1lZ92w8ka^b<P8(ch&C&dc;LO&)ACw$r{{%>U%s3!oh+2IifeWwa3GHE=nt!c +sanU$(rGr5j+~#+(CfVbDu)B1#ugP5;5*k!>C9G1ll|P&S;OvdEM8G7*>~|mIJy}G>6phVcU%9JwU08 +Tq@~Nqf&>#5aM#Lvy>#Sga{<??$C-n?Zlyx+Y2d7He-P9Gwl6HnD%7RoE)S=?*xS~Kq8z@5{S4xx#dr +JDFHi6|x})kJWTt!CsN++V4XF}lLYBm+I7udJ8_?RPu(Sore>IshZm_W!TAO?Y_$oW1dX)Vuc^faz$M +Ox0<!AWNx~qncEl*B6*UpALy$iW(VK*@Bb{HB?kgv&lZW{QiUr9qgM^!3?(C`hyrXFvFnmP>Rfp%Pb1 +j!sY%?Sy*6WlmW-g3i<tJVQ+j6BC+xIrpAT9M~ff8&|p9zN=YBZVSDAPs<Q)S~XDH<2||0$(H-XiKEn +Yz%Ku_U7W}D20gAQ%d>S<z~~<ZSCsv>hfAjp`+Ye`<@sRTRS38`7%slbFnJ_$N7opboM|Hjno;yceQr +Ndz3btaTd5ey(lNn{P5ULET*SF)25=VvwKBUjn`8qdDewrHIzCNyhV*&vQokaZe||Qyn-)Z+&?!9h?$ +)txZU_3yM*#?rCHpY(2J+t{)Zecs9&r><UkkL&f>%he@x~Z`jVYSIiH^;-GWoL!JUN0VPQ9f!7`J;Cp +^h*=BG1YPNwcr>v43S{#uE>k1-khHM(|_t8eY7oZLeA_!LglX|l^FI}5!HHAf!3WvuIv21eAd;|;=5_ +Rt_}&Dx{0O%{15#tDbzFQqtw4U7|u{3i3`L(Ofg=o<N+n_HsDNm-|gI-Q}S`)$5D&J;HCGoBV@9EJWg +o%DnM08mQ<1QY-O00;o{RI^Y?1>Oj~3jhEJB>(^$0001RX>c!JX>N37a&BR4FJo+JFK}UUb7gWaaCxO +#>u=*W694YMf^cw<)H>SD75!pdird>qySQSrSaf?hWCMYbXqy*V6i6zLFUbFXGki#-q&(U)imWY?!+F +ndMqMtK|DcKy(P}Ol(o(6IB#P;-T`rf4#R>Us$H+$1wK(u*OG>fdvqlrO6J1@AYepp7i(6I^3J=Aeky +db6=MB+#u+yDnIgr^O+vA#4Tu~%-+BN#vvg)*A8+HDH)`~3_8!7grDD0V{Abj5nsR_MSqV6;+?C-_GJ ++H-f3oQAcAc5iD|5iukziM`;50bX_2H-(=n%64Fzy21br54vh)Q*pqw|Q~Pno7uA@w;Ff+*u&=D%=S& +GuhBOFKeDFO?9V=QdCU&gI_=W^V7w@J{9l3e7X2Cdr&kRzU?G6hH$6eh7VWq&-YRaIY-F~2bOBVCXUd +S=>nGb95xh+{}<Ga`U6{^dqw83=U4MAEsBQj!35c2u_$Y*6!|Qf*2iC1-F^^qPc_g=y~gv8O$9!|s%S +Y|F9>|Vi{6kHPje<;)eLCeGI=e)=XS6iT+8jpZ@m$7<9v7?90YuVH(VD*s#v{Qk?*M7D){HSn*)Ax7v +bl`(rks|MvMDSY4lNA^KAn@df<B3Q_IawaHGn>PNn1~1bSMQ_+_%EcLh={Jk{h1boRsR$wqFp0K`iO3 +HWCAolUkKc%^q{ZDNx&yL^2`PRU>ULr<$Xe?~Eb2CbG08|8&{V&zWRhk+KsSe<MLuI9!3Np~hN(epQ~ +$o`hf&0e1;<Zt&6KP6^CvGyFkCBgk@d;k55<%OEWLr-Bh1@8w_))2)+Y<%K!7ZTc3WY08(n^eB&$*l3 +%-fdnJ0_m-0cszwfW|PMX;s6pHe9KmZ<=Zt$lhX~dc6w@sOR_ONC(zno>GbTlnYkVKhufVL5WRCE<2L +Y)%d3HX?&Zu2!!N2?4GQz8a@w|#vC`>Y@T+W&8jAcvV*S=Jt(rBsNoC|GayCPUH&9Y^dgjfY&B>+d4O +7J}tviT<n26Wyx!>y_*nELcAbxcYWd)K__NXAvSh=-P>Ztf*S-_SHfF#NP1I5e=H;JVkqZJt0xw!iku +nw}hhvfX6Bo~HLmBh03H;wQ1N53b@`dgDsZtoP`GIzK6{z&}1Zxj?$ti|w`D<Ycu2!9x9*rDd|?={m0 +#u`h+gpaA)Ttav`CPI;VLX99n*34%w-z$)vB;T5^NPJE1A3zkZ|40ue*SG|VY^l`OY_KgpO|6hCvV<$ +LY^*N0X`-TlJ*TMPNmMjyMsE?T)HS4;MoUo>fHX4PPqY9Pg_;N!W1FJkse%M8&9%17NXR35%9~{5-1w +>KHLFokZ!yO;l}e&548YM7hu#f*#OF>d9;-yzXU84Ni6w*6+Is*L47aaIbVMK&|2(pGjRe~iESqF6x^ +sgyuD{W^nQCeIr!JTF^6|yiPgdxm4Y-AMrYA@~?{cBLILCW}UUL5cks7(Uu~F=HbJ0JCKBh(=QpMQOS +<3;!IUlz_UgX|(>(sOD^V!?&(jVh8(y?U{HNA2R0juC2b{m#Iy9x==q$vc4<_k6!a5`6Q&9(Kwt8q41 +eruLCb@vnpB>T0k06sU{cWgtuTB{h-&fweu$i4+Q321u;w|2^KX7RaA^`A}HI}GyM4pJuk*Wu+LALiJ +~F#stTNHD_gT8Ilw`mnlR5$bv_LjWJ4rJ$rAfC?B=N>*w}=C0E+Od%*jB<~p>j9`fu?#{=M9~eJKSvJ +jU@(JoiY~^56URaqtX%!~D+&`Qo>}P=OQ|$JZwB`u4J+vg@QxGt4Mg$`srf#L^T1TB%cTcqzpv{lwEF +>>tssD_pvG1j1%b`{5`;I&;g60mNZ)jD;ch5uiUdQ2HmA4{Hdovpx)H0%&M^jK^9^0pXZ>4Bq|FPGOq +lRu&fcqKE#5(wyp|~D=!yb1=VK|p{=loaLcyQp{aTjVunjjBFK$@59A(k<$I1-u4IZinW{6!<g;~}xB +>=Ju+?>v)GO{e}e3H^9Xa@g^5*T*!6P#$9XNXi{6Z(KMVGI58$;kB!Tthwb<G}tpjkpxW2={2nVxfa- +H3%hqvuU#~5li;Hygx*Tjrjd%aE&b!=ikPX)$la_6a3-2Wr2bSuA9Ret(z7#dX`?jx;!f6Rbv7}q$PG +KLK!0_h4lR$f1<ExJmYQul`qM*syDM3%#~lBTyUp+ggv34Z1ueiHoi5)%u{3)`S$2@CD^hjRPS66)At +qjWxB#TG7$B%4x;E6gAHr4}=LSMn0K}^zqE>Lt_G%opC$X_iu2QHgh0z7stZN)K0_d{=V~`8{ZEDT{> +=80ZUNL($R_Nun7T2@}SLv+`Fli0$yj}*)>k0WR0CHfFa=8NTg;G}W%?56T8gHXI@U(J}1}?fs%4=wd +O-?YrjkzV_=OM})o`N@NpGK^@a;v8i6h9$++n7SUZ}pKFr%=%jD34eVVPyu7o5>jzyz6e8PFC@={D|Z +yE`XLG$zN20-o$mH?9Etw4I}w-HA^m#ak8FGo*?k!O~)3oe_0wPa!fkzNjiMBgxkqkHr9gMI5opmFOe +}X-LEU(lMg|cg%0y?&T7bu6tb%=pBChB*<VM@b#q34jw#$4`^6lCQ$db~Cx0>s$2t77>MKE9KEDR|&t +itYVwl;abvj~(y12*X+rCx|c?}j_-N?y1fvZrJwXPX7R;<MSZU_5obT^c^gk(%ni#WK3(jBH_6Ot*GO +qC6TS8ItkkiGUDCU=~`wKco*921;!vpk4eh%d+g`H(YBwsfFyiUyHz!O#-ueL6rl=EVbAM@N~%XvyM> +QGibEisQ@Ya^)lkB&VkdAo7wTq>lqtbuG@)-4Ml03o#kRIYLDJrMcdYAPnK}k;QB=y7QyWJ6=Z2F)d& +f=HH`0DsXt3ywA5eY-mnx?uCU;kF!`qF74_S!Vr){qQe1BJ<vw?odiT6NP%Af#NiKKBJ3CuE8R#UAEy +8(C$Khc5AZXeaE5^&?SnN<09r{_XxT9wx7uGDL?8IG6kVg|#wL@}?my0*{0p5ls_FjYYWq;k=V_T5Uf +4kvZ-5f_epI+6rpzdA_B4JXc?XO#yMM|ievBuX+tQw$kq@zYqFEd|+ANz)MYAe`zb?;DFSa`_ZPko0S +B$nY6L`01NH}u!60S<{xNBP8%<$Fc1MHOi=ozQGQwCuXUo#A2VHa!e-NU0IdE_UWTkHfa_H*Y(_|Jb% +$On^<=?yEa9Fr}GQUl^n!ooZT{mgJ<k?qVGw*aT^ALgVEH}}Q}1+aK*21LiUnVTy5O#F<|QAwjwn9b~ +$fyu6{hb_h#8eOHg^Lm~PY;$kOhB>Ou_bZ!0{fW5hU@96neV*n}vC&c7Q)~VSWQHPmVIhR+-vj{T8)h +3l*U$}hn{IFj1f92r?8<GW2<q!lynNT#3Z*z?+SL>~WTX;)I>ezdCkG*KqQ2QdP&;FhqJ-=-l4V@bF6 +wH9<>VB*mm6}H{|M!6M{l|4WSrH<qnY{A9aQLF1+4;@(!Zt#JG<VeGZm~f|A)Z_dkypa@$M`H=`~PKC +(YRO6}aibq?{pSTBqp6`wGhfX3-FD_NH{6KR?m(zkt2=m}VI&08|(Q5MLET_yM8nFu(+Ecqnz=^MG0G +@w^At=gPWT$x?S_75z^MGllYxXUfOId8TXb6OTLd_@vLd)5w#|aMIK^o3yaDjiwo<qxNsSpd(hgLJP* +5=4`#hX?)*aBV`;O+A-i0rF>kfhbfSK8;w}|nwi<Jb#r%+91yWO(j)9BhVee4IVo<TJ*oQ82E)D#5KU +jxr_1}-4}MfjiM`ymkm!;3XAk{+WH~YP5)eHGr|B6sM-&VY6QhlzP;<z8N2XpiV)i()_{wmGL4Wq@wM +m4Gf@GQ3yQxS6?EQb)p0eC@dnN(B)*;i#%jn=!to;vAO9KQH000080P|F{P*?4Z5GV@(07oML03rYY0 +B~t=FJEbHbY*gGVQepBY-ulWa&KpHWpi_1VqtP~E^v9pT5WIJMiTz6U$I~iSWHzqPOdnd0UyqBoYrXT +2C;)6@EO92TuB>KT!Oo_q!#_}_sqWVMQ=%3^h%(SN$$?hJ~Q*o%(Bx;E!cQGtxa8t@tDa)sVc)V`6#t +i#bDqcNFyqvRIbAVz1D*%P1bT&@H|Ysx%&R<`gX)JG39k`#<DQuIWMwYR3krh;O3RGOvaC*$W#?3Yq{ +Ebmz0&7RYL1z!kdAwIHbLic`l3Dg{;zCX#41@NGq`rh2c5w56IG`EDF)cyK%Q&&7iobplwncnd>A~i; +|l#{=?Pv>t8<H>>r-1*$ldc@iRe4WTcoORQJwXNS%gBQ&lav8Eg5g*gwIn%g#DKe|-CKeDTBO#gF56@ +2{_~uD^!?r#l{>4j3*gwJ+hkSdZ9inVJ#%Noq3~m}=b_yu)az%2mY|eDH+*q>N^23h$XtMTOlmQB|ta +Eae5pErefjF7=4XBF*cJmcChQBNmr5l)+UX=*o(=Pm+OHrJ^+K(*6KFr%qUwov~|Gh{0e0mt$isa*>* +GF!VUhxz@w75>TiT*@#Vfo=<rC5IZqXX#e7r4Xyv+pO}67Z~C=wMUg72;u)Ec8&kESlBvwah(%#cG_s +1s126Y#%9es<syH(2p-@Y<oWp?{i39>85e&bw7~z2^FykoC*{50?2EFTr2ujjiiMUiklR#aU7W}%9kS +7Q>R%<~**!j)H)fGduBz7|FU#NCrw{5yAftW8EK!V;EDklgT9+NFeVyU#26R4WbdBsyWpr*YoIV^0HU +3e+Y+>H(RcyWy$ow;Z1uF+x(SAuj=n)Mjq<Pnj^DluYZ#$>2r9FGo8JvixpQ;~1ZSPm~A?vhl_xfU9- +?(XBpsJGRccAN=|I_<Xy$x$VM2ALPZYhM#-xhHfNjNqktcxMt3#hg3Isq>7bsvdOLC!9MtM*#K|QQqK +Q*pwHk1f|i6<PP5MZZ;X2k(Eh%Yo?qNldMc@peEAk+5j;5q+~H{_Zla5D`FUS6uWqFq59r=<)s~Bqj< +m9*=e~JTO(RW8Vts-U<(8#JZDdY_nF^EaueNPHAt}|kt48yss@$7qkonw>`P5PL8NDdD2nXw4<auCC- +4%5Msjq}WA!N_zmR%9jL8Fu+z>DsQw4hv>xtqOun%h_&T($Zq!^}_8X>$aa>X-Eq9>vq3mFtesx~Ya{ +L%W1AR^>&It>SPmLBHvL9n^ZkWN@yR~iHxL(m)vrn{WmE&kAQA#+|emiNHH^Cu+wNW*Lh0?Wj526!we +R?ysHFk+LM_=x=V5yl4xvy<e-$RXm!Fhq+LKUK6%5{89<@Is$DrA`udWh_{liiZS?8aS4H_rku*ko<t +2lhf*CD+=a|2udSmE{w?6Zt6=rl>igiE#;qO(F~RaIeH3d6k&V{q!|TH(FNUEv!RvcT&8na0s%9JPz) +BU67GSKnaKGXzXItk#ZuD6FX9mBR&q8Y7T`sYR2LN{(8O)WV4BjQk@&}})fnbm-~g@HfhTYUpRp+Oyb +?THH%L%Y1KWrdr~9OFV*7_piYOYS8IOnLyd(CES2N__XU`s%^jF+QUXu(d_1__A?p-Z#XR89bx7pF=+ +b}1D3tcya7a^hmhNP-+!+4}8A>tWlb3U?~sD|4CI<jFGC(TA$RZ&r@s?~-rx4-@)zt`rWCv>|gMRZU& +)T$sFSF8?0L2HM(w<yUl*mPvrZ0{$;p1`!lX%v#;qg1tSfLOwg#LlunU|ag2%BUmn?HWvgjT4hQx~Ji +A4}<N(&l4Bq6k~jngCD>fd1htKd0C2L)DcGE3t#p1!-xbfsKf~3$QO}y5NsM;XEQx11}}pGHn_A&I`V +F@CHoM`1H@;mvY-JN&FKza@lC*n7mQqpb>!K4r{WU%mi_2M<*KF7Fc4eVZ7k`qKJD3jpIvu!CT*yAX1 +DIPBQ6fR|2q%op$Krn?v?@IN$W$_o*qPJLfB^pByu8aQ15aMBZ;a{;+`wKMA3S9LES^1BW@9MHcxdp? +~jFFllJyS->#6^v_RZ~-HRqqP9&mUfYDIfi}-Z!QeC|-sJQ7T=82e+B|zAK(54Ze{r1>p(+<I0-X5wz +h}m52^9ejS7rQMXTN|KOLTR@L?5@6t$!ORIrKx0YphIC$=}_|$pSHl(Wd@S{3NJ1pt`Ykxuf^p;eUc= +(Usr`ibUmHQ6@n>xI)u-pcpqm^pSs<lpd3^2<_56#VLQt|bR{+(4D0B>@1H+^e)8tKm;XY^-MRf||Mt +6RPg(ccr^vV79vhY2|0fx`2->O2Uy;LlUbDbTd?pA@;LDz|VQ>1z5d@sz8}_1=MYlaMjdt32e*6zy9o +sYO2Fp;Ei0rVhk%;gn)c@__hMk*`ZmVr-`OL~=U5c++{RumNR5D|~ib^$yT>g|INw!lBe?;$p#-1n7_ +ft`4R}o}HhqijcjvK)Qd33C!FWoa@%AhSqtNP{p4g0{PFWUeHvfqA>5~uVqOdgwTKkbLPosyG|3w?x1 +bAZOFAY2ixO4HBYYbn6HtL==AYTOLLd&5<{5daOD21@t<pF+p=w=jV#lDr1!<En+tI#hqzA}t)?Pzpg +WCytS6mcE^1=hrt^jCyC?k!M>Nd(0A!z7lq$e1G3<QAym`OF}Ap!_i$MgLOoCwfZHUbe$|K5Ky)^ovD +yUNl8a-u^j_0Q(J3wgi#?QsJOKaPGX^$fa=?1Nrx29NXrVo;#$6lq<IXYjyQML;_`Qcr1cppYNWC1$j +)&aEpAUywCe3!6sn%hZT$;6M9XDYj2x<k!a^0aD^+1n=pr&nw80Ag<k!~at|e#@I2>V{qe0ZxG@VYwL +frM*t)#K(q`SGp?e=0W(g%+VhZU>3C}>|Gyx^C<yO@W*tvOU(sI1OKw}%M$`ZKADmrT`_JHfR0NwXKI +Aa+NAZs(u1E`5&v<5oexmoJ9Rfc@0dhFarV)>~Z59*$Tzbu{=h?G%dWl%?h%)K2x~q*1rj1*4}^%p8$ +4C$Szo?!3@O<Ayw*Wj%0ud-qBJf}AfV8Cbe~MIe_b*7xZ72X{Tq>t4zEcWm0~aB$B-%cdv=eQefMRG; +>vWk>JQ(_s7BS*wLC;hmFCtF*~fZS2#w(Arh~c1z>7K8iJKZ(Y%1AGJ9>)<~aE*!3^Bm#5aWQP<%kI_ +;q{TvPb=&)F<Mpiu6Zn*LRg<Ssf##v4^54Cls_`t<mChH$MX^hxWuw5|HF`v!C@wXTIee({f!wybvD@ +-FE2nB;Sa;|j;QKF9XDk07zz-0WVb?SJ+Z7(3-2lz50{-1Ql)x4udKnYH@YmgqxzG(Fsx80@Q6AsjkQ +;vq%CI{pjmUlXsR@B#O5;C@ADc1l?)ILEeA^=0>7xcnCv47DGVTv-{pxm6VJ$bSAERBFDjC+QmYb-B; +=$1PR+Lfe+W-TCpKX#HC@>$QJR?QMHNK<k7t9Yi`McmUT9@pl_i;J+l~=*WFey6XYrSMECib+UjpXhk +22&}a0=SWR|L^IGhj<=(Z=?l+HwZDE=hLsFXZ(5v%z<J*sKFK@7e-|WyxO{Wn+-J-0~HjDW$kdZ3vjJ +>Qn+7~%N0N1IM-BrJ2l1nq)Sv&sciO<Lo6z#o*cW}&pDTCkrC;H6+_<clGOdntU7rhC|S@6}F{hq!%- +pDEVDxCb%87JLRtG@Liu`%3TcZK`Allx(uP~6!GJHJ8hoBI5INc!PFFX4YsO9KQH000080P|F{P`xs0 +SjZ0m0L?o903ZMW0B~t=FJEbHbY*gGVQepBY-ulYWpQ6)Z*6U1Ze%WSdEHxWkJ~m9{_bBvI3H{WUhUn +7wzvg+*JRgif+p!+vTYFrfgnq?&8{q}q_i8O=zqT%zKN75XZLbA^v=LyEsDdJ;WN+7ko0sqz2sGsu}Y +F=Pst@e9I~n)n@m!Ymzk6lUt|p_Xieb-ugEp4-%%+Uuae2+X5ZCg6;x%C9C*=|lw^WpQAQ-KGm$mazK +~q?mFvDFsdzJ~C@omEBL%;&N}d(uoLp!5ZMLJ|v8teg<XN3<Sjn0r)Tw3-X{(CnFpf;H@<`aB=AyxNC +!yRS%lE9J;z)2_Sy>X+NOA{r;er-sTC~a;l}kdKJef?V)5*lNSMuEshGieQoNNU@kZoJ#4d<n_{lWwr +mX#Czx@L8fvZ|q?%E}}!nXQ%|3SKv$IXO}>LB*#=Ggith%9x0$4N_40sp&~w>eAQj)5|K>0{xUzJ*1x +CS_m$d<XX@>##{NkWo2>2ges0TgzEm3)LQxJR%_oh87xUm7?43rnMhjF90!xuf^OZ2-q~Up%$5pREgD +r|MVosrZW9M0BY$O{<9%BxsX^_=>|h=f;xz?GquLS}YOS!Y<=)cYS|;d$R?W436YW*d-(ck`*@zaPB- +~u*69ONw#|E&PLah{qQ?QOE+mv(}e_aB^M_$1QBrWjS4r`<$eu3ct+?SKZ*pO9iR#Ff609dc_=)zb@N +t=k8-q9u|1Yp>vylo1g4nX&w=C`4e4%scmnco8ROGF6ZRlR_AQYC#y1umc#9+_3!FhE{I4|Q5Fhgf`u +$MhB;8=aC7JJ!frM(FkX>-Xv9i}mFX>D!;)ym|TNdmxf+r1(M&Q?&|wpmb>4_&F<EK(~7z_VBDaF3Bq +<n<e>CS#4G>$xU0Abkd3RC;|x3wf@VV(()2Z#;O}jY%;N<O<EtDeP<Fks_<Hsjmg`kHt@2dFZH9h>Yr +<%5kMLpg?N%T`ptL)l9w$iN3p4G;5mGMi?8m+MdMh|Xv5D9ya5hWP&+Q;#W%+q`q{x6*(!_4WP*+aCb +P00B>_dgQf2crt+E46Q>><3DKWfbh#07wRr3g)FD~?=qr<}g&$K5d2NWP%F06}n9@=`@bc1Z38pfM1l +AxV}Zb=GCVNIIO(T)}uZmLfZko1Dg7v${k<PEQ=dnH@o#Cc@wOQIS{T$_td23{m~9H1R+5IeEp{?M`T +M?KkZ)m#n~Fj#b>MXV|Zl(wRj^SlISZai&l@Y=}K6kJbeRUcr{K7MrdK_PEx(+Uh?N_b89mZ)9`_M!p +QN-EB3!S7fB;e_ckv8vQWYsUo>{Lr-y%m9%OfuUzjBj!eQNv0LobD1v5cUdW^Hv{}YOVH3z%=H6usK- +Sh1--$mu%&QxNmgSlG>7k<s2TRKHvpl?Je?0Z)g8*PN3S<%!1N{;-U=CoD<FV}-Gk9U{0S>i5wJ3d{% +|2&eW7c6DhAXmR61-RG~j>MmW=~E!tS8}@!|jv7vF;?%ZO?B44@9-O+ifi;qq^LD2E6cM;I!mZwTs{A +}`svZmz3@mTRXFuJsd)g9V*oXsu=h+5@Pmcm*SPbk|fiGBFcdVo1)Kne4TawGBUjR1VC2B$j&AT*U`) +MITj69S(g%fpmas&{GWuRgrzu)bir|e8-x7yTRb~TsxWb!?8Y|Gbv$c=ihw&x39@9%WpBO2%14615O^ +O6iq3hBLj_~Vuy;J9s@uuQC2`gu)+qHq+tgNafo^v2TSLXKY%~^*n1p<l9>*U-g1X>*vkI^mN~?iU<C +=2*+$L>ReUD3(CK=a2bxnttNDNdY!|<BRt<XqQ^zHnE{4ppjSLxL2O6#eeik7Vta{CVY{`A?R#LZRyD +$~Ph9G#B7#!|7pm}Ah2Bpgp{#j{Y^c;t^r%q}y@fQ3A;2mP$9NGu!&$F{liv`9NU{Z_jz&CxTAz0<U# +cQsBaD;7-ux@_UNT=`Ky#hbZfD;JTU|TTDhDQ5RwbJn}@r~bMS3lCPLBEXkWZofA&DVH`w%&>i;b-4L +v+nB{2uy_#Td@V=)t2pAOz^=qe_}K`dVF<^57<b-fPWthSlh!z*vv9sO`fjzhd=f!3T%IXL=MMz50e0 +w2QuLF9I{kU2doT4ima^pT&N9{{tU2IqQx=dTLl!OB8<BAmfNwV;YkyTzC_dbUhuXy0iBIQm$4vq5Rh +&pM)8feo#cn5lH7w6P?OUpxWkUzAaz?exT6G75C<s%p?%F!u<30fsV%A+)u)vOVLdU)A5qC)7vVY=uv +b_~F<A`q#79L30oD0#|BA;4V#B@y8NH-M(yf7-Du>zvVoALpX95iHs{8DYp+7Lv92ZropqpKP2v5js$ +dDl}7j#U?YLl)8wF02JMvPP1XEF@>W;QaNc}C|Ml$p~|rOK1}*n>7g!_)Zl&EZFkVeXj(2kaDgPiF!x +!A`ye286KODj1Z5`p)h$R^mXCzE#-3s^|TKk=WTrJ=R}({>MZHV72qFmVKJ)TxR!8A>Q;GY9PL8F_$( +(vv>sC{9(Pme)jy;I=xxHzP@_-HobX&y?%$;g=#U_yGWk@^zzkJx_<NXGV*eL{bKz({pH1a{VKhDcKK +o*tMqpL&s4RtoInybLEFJ;q<KlRs;%d^8*0qNnFxe`%0A$~wY)2c3?ZWD!f^mB2&BU-2le7g7HHNglv +e9YG5gMhmM=_t4T~^LRvq1^cHqJ!;B)&WX2zpw`_Qs+#0~Cd$5r3QvTi1kD)lIV*XNDR<vRYk7npE~e +(afvU6gdZ4G_n{Hu6-tD+c6YN{fMK->4P-`)Y~?(4Jv~&8o!?=XpZy(Ox{#fTx)KtBv)jLR@9NUmf3; +4x4<U2^BGn%z&dU88{>Kt31zJLGCdjalW<IdnA}>eyX7+YkJKo(r`#TYFo~bKF{bUm?5He%gcg_1RSU +KNjZ8xaOMT?HHPZG&mfos%x8HHj9)b>&4MKc9{}lC@`cI{)SCg3YV{jU8}vC(KZMtO;QXzBA8ZgU$x~ +b<`1kboJ_cU3Z)rIpvTGCrcW=|k@1X;dntOgIQh<w0vO;}9PVbId9D3&qBlxYvTsZG-BB||UZznr78~ +dX34{B#n`wo>F`3tIN8gPn}b66gHtem&)s~5>_fG*<#Bm1FRC&p!r_7+J*^?^-9rV|PdaqL?#ofOR{m +8_x5nB0c*(p9%dGpIk4UiYd4csp;2+tq1Ire8Y-x+F;y-eM;*wz3~DT?&e)lvzwbAD2`))vf?IW5@1* +J@91nfPuS=$6$p!dII;{okMkQ9YXXS#9uPqWMbu|3a-#+%>aHWX6?{wSgLaQKIz8<eai2r0TBg+L6U2 +06=^z*k)+5~MLRe1999aJ*nbGCMer~zT1H07BrjFE<c85J?}vNN{8qjxM#oIM5%;TTqgol;>UV)EP9e +zN({Aq~EDl8iQ(J|G*Wa%=NpboRq+3x-bTR99p9t{`tZAG?A`Qj)WSlA^P4rk(V?pn81>6#obx~4xCi +XGTYAY4F4I7IR9NSeK*3TS&(PDKY+JWpTNrM1s&fa>RM<s!hauhV3#>X3#Z0nr>*y6b_P~Yyjnl}6lv +OXra$1`4)$7zIXt%7P=fA!aI#x*@uHTK;pxjwpFhgDm?(uY4M#MMD3Mzu=<+-?qPPBH)B%nv^!l&@?3 +yF9Nf%R5pBUN(0^LgGAm>K;^7%mnzc%wP*rJfR&DgISF3t4|4?g7Cgh$-4t(JbF~S_(h8`ugbz$b;r% +-64PgfIyHk3^p1gQ{0)X<4aq~*nBAGYfdCfQK;^D@%-N;!5Ydu*-a-Tosb5`Y>b8*I*3_=S)NB=PC`Q +x*x(8mtof4;;Ety#sn_*UFb=0DEaR*`x%L=h_|Mbb+Sr|JmHf@${W50?XXDjdc82RMwfNkx^vhK>!@1 +V*F|A8N$@4WBBihXph`UOLg2RR$3SWR92WvULh!*`<%bgbDg7!~Q$WxP0|+8$^2o+AqBQ)RzkDAFgm- +g7A6ot%CKrX}5F`Edx*&%v`NHv-Mi!14qn9|XroLh->c{2~ZG5`JF*y+^_Bk&t^Z+!o>KxPN=A!-C4| +yF@}I-~PusTX%2bL<lz$uMNY+)3M<&u|1K{Di@T>wnk$Dx2X^*Z8$cFhE9bMYKp@fOu<DF_x)Pk<}xP +}XLvCWmDeimYFDXGF6?23_Ho?`#N!KpUjlE@t$G*edPlwSxyOqmaRSCZc*{>k2cCb`7Z$;FH$Bga0^L +PJ6d7I&9C|>F0o~1zJ=H{9hi2hI`mqCBMK|s3$G~P~{x61?U{sFB)2t{!u@AUG8J|j5FFuaPgmm~B9= +Uhp1ld&YM8b$sHL<!rV$|N4KZUL>Z-)Wb(JUZZe1DJjl$H?bL%pCfh|UlmJAE&zb@5#!x*cljp<4P<4 +cSrIySa~2mlcYuY#8nQUnuVhdGq7V`hvuFJ0LbVLeNjtE#WOWJ2S7(%xg$Sf?<rYlutVU9h&+KEB((h +5PnV~>CeDfPsqzHq_9U{8qcorZ{GzYuzX-{y3nPkG5?CUJ_ZBPtI=I@cN$e)<G>PVSphk<XX_qS__Dp +#AF&0aA-^NsuAL(-`^V{yeEh=G-KlFWGeq<3LLZ>u_dmiAw>$hpRI6+DG6GvXR|<YH5(nn&J#WdOm5t +g?Az4F8n&E|7yyfXF8$?IHtHF?2yq!641W?2go1=JqHpLTvBlEi&<sZ|3EM^HP|B#KC34WeFEm+>*-3 +Gvhl3UHlEW8BQ&3v)wU9rS#Nq+`)NJ_N|_O!Hmn0C{D`V=R)SPXXf12CW1F~*&5nr<@5a+O5PHOIxG< +sfE1eK`hCtSC{f5^NR6irY=u2Csjqdo%7v_2yR~jFG7L3AtjjF2QZw<AqmZe|02D$@#55k445;1M7@d +(oE$0ROY;<U<+C*@k?FR((Hsub#<hxfcN)PJ#eH?S8X0#fOf?pRP>Jl5~WX9Wihy%8vd4QEHfL~Fds> +|M$QIL<Wa#dLAuS};pVLO;}GwXdpuR{o#I6{h)?BX@$4|VuWNK@k&)E^tXeR9sWLHuif?cxZSyW=U8t +Skk$GI;4{G!sb#AHvo^gK@))YuNSoNvN*yNd3(v;k(wL$-&NG2gy`ns38-=;S4<FF5Z^90C@{1R$#am +ae_;KvuiukBXRAKHZs29A*5r^l?iwMQHM01GTaU0D~rbOA$Hyo|Jn4i-isC=#K!bpvI+O%64(bi=Al9 +Q|rt>3?LiW=NR<>XKX`EL2Xo0;||h(?)c^>OJ?anFS^oJoy9u7f?$B1QY-O00;o{RI^a;%Vojt1^@ts +6#xJo0001RX>c!JX>N37a&BR4FJo+JFLQ8dZf<3Ab1ras)mUqf<F*z3?q5MT2*%#n@+N76V9;5#*i5o +UHlAW9i$RbL1X`kPb|_LIsd1dP|Gno@lqJiLWP=1j=flV%FYk-@+=o`y6f8|wm9MNwQznbjSkL&<8C7 +|a*6$OR%O~li(St#x$c*;lC$HqPS&?2?Z;W!yf->v1)a&Ne?e;rf7Gf}1k?c~IN%|yoZfsIov$n#yMv +GVTFK*M9Z{OVCy_vB4S9cHbrF&FD4Xe3IDle5wGE<b?Hw+%;i!bgT?$47)6&w1s@Sw<r_S}=PXV3Xv* +*W&jcmMn@efjG4<=5$(w~NJm@fF;(I<b5`VE7AM4>`=ioqJ;^Y<@QwkXFL7o5q6)^m-lEMro>ffr}as +27^p-`05^fw6JqhaK$q*GRuF7%#UkXxmYm=ijfm)71!wR15!X-v(cDMU$BMIV!vg%bOK9$UX)4{aE8c +ltu=N8p$*TK)Y5GN*9pCFl{z@Ba;IcCZ{Jf)v@ICLGcTV+G;`E9w_|6DTarFaqgDkXiLV8zr^F4(o&; +B<*@jzpGn~GA_n+BtvR8<;dfyhMv@+vL?I!GVR+TyT!p)pO)aSSr^XQnCnK(XMfPYP1hs+Z>CLD7&&y +$Zo`Rf_~(8Yg`=MT`4-d4(Rf9y1}EJ>qf2$1+|zb{w8S|(jMcYUB>*tsDbCeG)k@;$b3pB}v(OZF&P5 +X3?82CuK{x6uWI$4C4rW<(ASUvlNdptoON&MpgD?6XM{Rz~g3jr-?F;bd!ZVl-q!_N)(M#P~-&&wT{C +BuUt?uj5wcegpB(+fYwy)^$+5XOJU^VFuI2_k7Sfe``5_u-zbSZSl0m3$_$1WAWIrCC?sR$umk8-Y~z +RO(X@4g$X0oD8;tih*mfvHBZ6@)x#m9az+Vz!Z<=0EBb&nUvsJVY-pz{;fCS6B{{U?oAbVphsd?PGgz +xP#~no%W=r;N_>*9qEfv>~%qdRl8piXSnaW0YpO+c0<IE*0q0dkR7AsXDh4r_(v7VqB3E$0o@0m-1$H +RL+M5GlcyShu=MoLc)p6^EEi>IUQ!7my&J?f)s{JZAw_cN`l+<~|YSbnFE;CbQRI@#r0TOqj&K45Ph- +hm{RSH%+HZwnIbCUCQ!%C@*LsiBTij*T=h=6B->6Fy78;z1w?rBbZ4IM9>=X0nV^KSU*hjf~C&6TsV! +efFHi^hfB0t9hl6$h`qC2t!6dv_A?_PPrn<q#ZJ{7lmU=J_;z$(P~X!&H+-S1kbUifS##YO_8(9ig*w ++4Xtw&DN1oQEeExG1f(4G7(WZ0#5#(L`+Z93rSkUK^Ru<>H&(MVW#c?ve|v4J$wotjfkh)S>_Da2`-2 +L=g{;$%)cs&0^~#KfAG&Myp&L#Py|-8F|0q?pJ|}$HD%3Po<>8;6r=n&Dgu{ItZY8Qqtp&UKcUP(ZUJ +Vlfy5N5F?3prXAl+y@{^d+nqqG~kM@@VmkrzVygl8@T@H{U9<@wzn9~j{yDRoe-_#nN#(>g*fM&=To- ++oJ@Q@9B;V?zHrz{rL29D77DJ=UU~HNquF@)tM1Y<E{#!s4%o(J5DSRUZug-j2>m{8?}f4BG(-G^Nm? +Xj6)g=#HX~0=*d<zwf8=A0mAx>$Av{tqtl|E-m5<wF}KwI}l(fLuY8InxH)t)EHVU$7}`h8@#SJp`mO +>=el@J*s`Ke094~*A;Sw*B89rB*nIKj-6V36iAb<}g(|9{K`vdX_zrjgRJY;^eJ^TRdyJt%E`_Ju5*a +Ld)%(D*OFBA3T46ZiYRh-7(MN+oXEm;yBe<EBTvs-f*IF=TlD(@E={On%L;w#XVaU)JJZ@Jj5wv<u24 +MSd?HEtiv_aHpeRFEeZ7#mO^!^nGJ_7ad6vxvAzhN2<c)M#)2Gch($IO&wm35fHTT^?vd?y8Fi72bq; +-^fMo_#HLOT%p*B-^U=N17!uoewjPj!A_&yT>Sf59qSH4G(z#JR3pZ3r_Pm<(U1s9EctM3M?LagqqJj +664f<h(<~X4FbPK7(Sp;Gh4TBKv_<K8tP|N)*r+`1z}?5Hb`Z)Job;p{Ty+a3)dhAA*I=q<XBb4@`5M +q-hi9F^7S4rbswwo<5%m2aB-0n+S>ZqmZPgh63A3V5UXd!y3GthL0+*&F&e!QO~Sf8Oe3o}gNCs!d_0 +&CVnIZ#DzrZYxLDn5p3~`%l@z{#^Syxa-k0urHd|xAqPr+&<*wwjQkFC6TqWG>)4zQDdA!@$eS~RXk3 +$H(0K*q&P}n-<Fl0J|Nar(T8)^seIb>8H52L~H2bjpS^EGok_#aS90|XQR000O8^Hj4?+pKr?eE<Leo +B#j-ApigXaA|NaUukZ1WpZv|Y%gPMX)kkhVRUtKUt@1%WpgfYc|D6k3c@fDMfY=x96?*RE@~4oSZ5^3 +#O0vSf?$cn<o*`K?%sc&H{~=dk*SuNM-la$-zgV$e|*xbmQj8iz;oXl@6}#yz&J;4p)D|;k!~n|(?GN +?a5or?f)wOPjCwg*xH=Opv6lneL5sF-t#*JUmoD@t<JY2T;R{ep0|XQR000O8^Hj4?M>QTEgarTq1P} +lKA^-pYaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZHUukY>bYEXCaCx0qZExE)5dN-TLAW1e2aYmqz=j3LfG +%CuU~3z!>xLo-1X`jjA{42KR6Ot3?>Ulkq+09d`HN^C@9yEfbFo+?cf5GyTfqvW9hX|_E#peDR<_t`8 +m>#5EO0J)!G5g;tBg`+N2iD?v}3k5y(-y8uue4QNtBFZ(=>v$MuILibHv!Yz7rY5H2Zdc$x3NCi8}AK ++qa@TFGXdqZn&}{sOkihmKA;1L5tcm&Nls)q_ulj8+}1swuU-FA&vHm!CE`l+RKZJt#oz2$pG`>6OId +MZ7=M_SKof|HQUv)s9C{#D=YzpgiZh|P~$i=6_8eylACNRTwW++Mc!~%)O6g0YqzFzq68<m>}P4+{d@ +68FLWX9t?M2hpaZu7O&+XO^Ctmbp~HDPmLyeY8kXn5QhCl~LxLIKSfhF;^6)=N;(qu5Szs*S8BvfW?7 +;c1E1|f2B@4G^nm3|!eXB&&1Q%yHJR~~JRn|MHY=%3NZzKPkk9QyQ>(@VA|CImo;qBYow?9I8HM4!0F +#NpKsf3q$|4f=HER@VP9M+6sHn3cWze$qB)vc}!yBgtNrXxzaW@%%}UWvTru3oc3acgrry=Jz@xo)4X +hVV6H5yA%-0*6IBcdQnwrFd)=-&26%_flE2X5vXu@S1*G`xp*-80lfw@y=PcLzH=%g+lNyKDlH}p#^I +@QOQ3keg*ddXMt~r7}tgBOA&K~G7r)rXd`?~Qp_~`k%CQFN5~OKQgm!-TT#eL7RaJKMVKadvf2;1Now +;Fu7@znL9jE6$ZpvM{_w6eJIyx8tFrVCBP)|NIJ<$qXyIT@hTN3eM>r&LFYCM$iaSa_Z<JLu+>O)($X +`thkdY%TiQpPn5gp$spHwZEu)fdo4j0CST+K;#L~IRhIB%AN({@Iuj#3U;=)#?QON2Y0;Oxunn=F~!9 +dR>Cg5|vr#$_rs+@};`XB0_GPo!Tu@5JnxExirP$eymBc_Rfk^o7-Ck+@o|qjs{qGQ2!h{fIAp71uKW +2GVB`^!k5VV9c0)82-$FIM6<WqUwbBOPmVfz?I(k)r|6Yy=!~wJRX5~wgiQ5huSRBs?arj`lAvYLsO{ +Arvi&SDOL0tP_#V*=~y>f#O_qxktcnR?~HER_8CsMMTbC7F|!6bMuSFIJe~??U`nrPF$3r~By_c(^N{ +b15QH))saBMt6}m(-m9yxKuH^P)c%G~8ye&M;@x~0?H(b+<qztMpqq4YFW`pHK(2OThW{dh{Uk+U9d% +v3VrzfE7-QD_{{TcV6*_@nW15<iUi(~x@)Hrk>=S|TB+dx!msU{1Uh1jyir&v7kR4fBi`a3OVZ1H_BF +;MwqHq04&(|40JKQ>Fv?a6+LJn3tEXK-K(MMp3?hB)>;E{xXXEBQ1Zz76J?7=<T>@QBmv4*zC=z4QYP +I_xlLVXP>9*bE!b!e*M4z}S6qr;1GJD_Z=Qf&@&MempAAyhU4|aT_jjvfBbr`WoMVLgFXDkwqr1dRQ^ +`!oLPC$HN2-?Gq@N;1di=tiY`A4rA>yOrmFJk2~IN?JA7QgS@2|a(0F}dBx7ZI}E=*%kb)=@3oib2Pi +6+cvetw(O@(k(hj5OR?^%`db5e3e;boAEKP=|d!jy!SaIO+=*Yq<50vFd_R4caNqN9_#qfH<$lb+*WB +rr!&lm!yH{aC+=2iTTjGA~6@!eJ&9uVXWdbL^ENX5IsB|&KP1dKD7k#-sHojETIUY&)@2Fv-f65oNtJ +LTv(7(jR-;kA<Cc`LeQL>JBu5Q0Uf0%E94e2_hgy<M)N3_QN3VlEGXJY0T4zW*Y)52aBY9Sv{ozX4E7 +0|XQR000O8^Hj4?-cglk@&*6^EEWI&9{>OVaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZLVPj}zE^v9xSZ#0 +HHW2=vUqN^%EOoZh4g&@lONS!Mx?-IdB<+AA3lv(SZMHI{l9XM~$ba7*UnI(w(*WIv3P>!G_kIuWPMX +VdMbdO$>sqojC45ztQWH8;Wl?LE+UJuKw_cQs1s4ndSSo*~*=N0xv}!0TUL`3Pnn^*6q}IGp$($EVZI +xy#LKSJBPUdJumm@29GNX#6S-DzKk$cO|?c*^PrKzqJFy%~nmW!*azph5)`rY~Y#r1U`C;ObSO7l{vJ +vA3nmU2Wcd1dbUc&%%CTR~hr_n+@C->2ulU!4DuUcH-6Ur%2_T;@H?lM@1$ky=)|qEaz0<8NBjOtt%6 +4KKxZMBZ=(sX4)<FiFmQc9I3tZ_HYhrh={@uQ8Bi1yzci(`?C{cai&ztr>&C!2G@zs$v;{0HO}tbivT +&p(2|lV+F}jLULkAuj`r1kDAyOymBrl<a$|dh+Z;Fk82>al-r~s<6>SqI=q!DiYWl>m9=g;Tlxarofx +MLcF;3L$~mcM_7RL!M1gz;ND+P9lC8=$n~*E>OG*KMlB|Hk3vh8hWUXqsXgO(75DutS2lNfY&lS}Oj~ +B2b$P9SMq9|vCeXb-^3cUo~v{8(%Bux&?4POW_EtTw34UtRNOspZpZ)MHQcCC=_tjQT(Pbyh1FwlD|7 +~H)j3?;c~%)H&(wy|p6*xNSo=$f0eIgz!96f5Q<#4;YH5utLS9J=uO4p9t|j4Ze<f^PuJw=o&N07G>{ +x&%xWOe*kk*DM;9;NW0FP!R$>HL*`&anvP4uMg>Pb&n8Z;R*5HQ(}tuNNrp^v3+`g+{DRKn+HqWlHIq +Mf%+gy?L(I|ZcREe?O9J4R-<SD$I=}ye+muYP|l#k*0~1rT4d&^DK0X9K)C|wC^{=xo($p+w`9;Agsr +0|K{9`3fQ}W1lSGZYeP1y92I%m6^X%5F!Qu3&eaN#ZgM$pNSivOP-N!_iq+${aMKVZiy@(FH9E`{y`A +~9zBGgHiM_yYTcb$5Si%$EQ_aJoMGz9Al*5xIwDhB;y$s`+jPq8*w8DnooTUE5&b|c_PZY;}f)Hy~s& +nLI7&9-ATjS2fHdmx@HaUMLzYq#qAWplner|s)b`V`7<h!*7TnlCAbUKqCFX!y1)u_0}dyk0S()i7?& +b`IkSj}A^z+~<ZN{pS1-^(t*z8Z>ogt7?+YxyVz~gH;QS;nQIpFk8opGNTT;meq0v*>n8y9;4#_VpnN +LGk4C?rhOZdsH-N>4=vesCO;7-Im^MtDC|^ty>ZMFvh#B8I|SFD2sTk)cVk+wW-#wS=eKSFk&741eYM +anHRz0cD}~p1)^(&?zdJ(D!nAbh(89Aee(h!q<EZ3SbOfX>Rsl5k+t2?CPDGNCKwgmNUyIUSu)BF7D4 +2c+(!`F@0)$(+26_!{dm-;Q<AdI5czdg$iT7|?>Lu1{6X84=_7%gh463@&Xv<CO2Y{&=KC#00sI*h^8 +N3`NVCmAl#UOd)`Qiig^d31}v8Sz{(b<=n#*;@wGA6rw(<z4@^Tw2sQ4w^%PE5|-_yDgnkm1QcVt9lQ +b~=64sgL6TzlRgiw~b&wq<mS_Wx*hg1jgSr&zTwB4G2SlkAUt$7e0>MJ}ai^kIoE;eJ$!(@MUxYDr*4 +~%f}<Aayif0tX@Pz`^uA(Cu%q%hYTHn{AS#@5XdK%1ruhB2vHJD!rxx^b;Hk*0l&@U4OFe$z^TI)+i~ +r<Q^phM6Z;nU@?p;0!8`+v-zpr2HiVeli>xo24+IyCFvgf5!$Vv3j7U`bh=C%I{}w8Xt%eOKZDAVWyo +w(g_?+7p_REV)^5YLbjo>vTv=FZyyp}*4oz-SU81L3FBI8{&-py)W<oEF}<6X7YOS4O79R61Y)u`$|* +({4zULg5po^uokZ}VH6*Tt9?6-?lO2+1?DHZk!td}sl{h6Qp2I#fV`&GG%D7CBg#!JE4xQ5uh69-_j$ +9&D>6z8;v@Gq%R@CCh3V2%51uev7zk9lT3=Eq}$=49%iC{A?0NZA@OzjorS-ZrBh+FAO7=ddk5R>Wm` +M7z{=7T7g|$b>eR;9=ZVfun5{uGtR~Ya$Ey+Hq3bTp@wbSkI3CqjQw3ln0EEch=3Sr9OAf69&3AEG9` +xE`*7$&N1Jnpl%m)MexPvk!KJm`n>@BQgPk2gt<6rI%T*8vsE%b(lpBD-3@VG*+DQY)p8hO4z)#3h>q +<>dPdA%QVo{uwa&elo^=ZW_h5yFSfbz8c9Mw!t{_cAc4UFjnEQ5pb0D<c_(FRzv`-hb-96YdmnCGZD@ +xi$DA5cpJ1QY-O00;o{RI^Y%d<AY*0ssJw1^@sb0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!3PWn*hD +aCxm&?`zvI5dE&d;>al2pqYIxbTC5L#=2~zv`|7YigR|f+L9;9E&1<v@~_BCvNEU$M3L^jyZ7$w$g0- +HL8*&Es)DiH=n86CC#h5pjS^*&l``21i)p5-N~j&k4m0n5UV>OBTw@8eLpwkgtJRMchr9dvd~tVo4yk +K2!bz=clI<~j8jukKTJ2F<i|k1hm|AqaJ2ogBhUclLCRQq<EOEzKd@fnzWNDL1+H6SkVk8mi#?_6xjB +tmV%o;G?AAdfk^Dm3}w{&&CTz*}CX3YDE25tsplLFmsdlsds5*4Ot%$Us2fUjFgZSHBFTWKAKPwH?C( +6y_Du{eZ0h_XS;7|TjwEzG@LeVd~GJMQ>rv)Kb0nIB*@33~r5?8P$zb-SicY)gb4)~I%<GKn@JBx@-e +OTi@3A3(dVYNHESQ&ql!n=x{SIhaO87R#JNf6YOd!uI9(_0H?XYlu1(ycN7Ay_*=`f22Ac8)L%}0B-^ +Llv4JsrGj1^hbSJ2sQDhtNv_IEnK^Ix&FP>;!9G6Lk!u5#_7`TZZ7WqdP#%T(^^8=bRzw{TtwZQ0>0> +51pJ25A5YSJt(`0^ylN_Dgwj*$5fj$O*H`1Wrb9mXyY!A|c((X7J$&8<62ut9DL>|<;{;)YkzG7d{h& +Q#cuhQ?vN=f@)Dc{W2y%?>nP`TFKZR6meo9_8)!~WA*BIFme{L5x~&-7CR<V85?-v99FnF==O8l$?m_ +IQD%#c9~Yli5<k*61fxp?phSXcP@nd@jN8fA9xTO9KQH000080P|F{P+IDZ+6n{!0F4U(03-ka0B~t= +FJEbHbY*gGVQepBZ*6U1Ze(*WV{dJ6Y-Mz5Z*DGdd97A$Z`(Ey{;pqfa05unEOqY302+{GE)cAn4JX4 +;G=ZQ<l*5%0HIj;J8~*P*l9DA^&bAii7rxy+ynF6=xHoYBOd#is@eM84kn*A+r2_fPYnH(i0YM7>LNZ +A3kQW3hPVt_WptNGGYC%Hh4HVmIdj%PliG~X5Qf(`e1sTa@^gdydI8H8j0dZ_~;uvUAaiJi2lAP6w#C +GpE&AHslcB#l0wGm0xU{tgUW3+;ZGGSrLX!w*!5^LL&GHY>f?Dm{WttgXWL1o$suZfB)!Pk!S^Yz_4z +FGXX{4l@2UHlFaOePa_5D{Q6p9y0J%~HjPqPzsD5~21o6|_=^SEUHrp<$d3IKI1C-7fF%@PWMpI9zn% +*}XE)K{H~+i#r_8Ki=&3$E6+`cQs#r_!xO`;hAmx=VJBCT{OAa@4M}%%g4iE0uK)Z?UP}|Z?t@L(XIb +OX?eShum8ATwA{_38C=ZZ-A`{b^76K<83P|W`wxfXvhj~Vzyb3mshNV{{i*M;*YUAhNYT`Cwi{8F*JW +ztNBVun7*7)h8!j>lsh)awf+QIP*Qvc8U8Ln1jf!p0FmC{m^4AIPQ|);cIGBO&zp8PTXZz6XaY*;8Y^ +RDr@az9$IH&(Yajb7!2%_-@MoWT`WM6uufY<y|MoS%VA9}bW6`Ob7IWCGsJ!`O1CA5?fPzZt(aOJ~A_ +p*<)p5XXrUmg(*v!R?4x>CxDQH6+L9wslCPQBMK79G0&{eAjvvgZj*yfX~?6U?zuEDnz2q%4tA*R>{K +O@;HC*}rPVuK_DiMFg}ZQE^?$Yl(F{=iPA^`_NP;txne^$MP)5-!;Ygg_JK?qV7da>^=Taj5{r<iepa +_mQUd_5o?Ll<>yUfgW;)03%rrFQ_xC&c*N*yI~`9&7V}C;d|S(h?S3o~CYf32`Zx%b8w94LPI2|*P6v +01N#MwpN;`{bB-M$8Ig4yj9^Pa`Uzj3)a-&&~+<AeC(fd{@&xoPjVEJF=z^<`>_pSEtzMuKKueRRQ4s +Cw^t>#;V?_<Bg>ZO>;t11zah!ATC5vuVcUJG7V-jCCxlYW=`qAr`Xx5AjZI)QtMk6&qtB?5C-w@9a!@ +Z21)DgG=lUi3?=InYTzZWO}LWGj0efDvsh)*7FXa2I~C=f+{X!d6XUi$gNcg8Pq02%5J}gq^Grx*8B` ++Z%kNZN$QiWY{JS1Fpvzv$3`E2Cra3xPFKRVhtZ7=%H(0)V5@vKdjTkU8R}!PMWqB+}a)4X=+`I2DbF +D2{x%GZf{XaWkiT@Bd8){W8L{`wOC!jM_xlwO9hp#(EGzf=|XFS3m6JF{0sYLZxFMQU;hA5O9KQH000 +080P|F{Q11XUvwR2u045v&04D$d0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WV{dL|X=inEVRUJ4ZZ2?ny; +)mt+c*|}_pjh8C?XAHp`Ax#w7^X2?FPtBi@4c+Fam+LXj>bJ)RIzMBglWBb4cn!Np`vzbo>z6;yH&rw +~rs0EAsWg$WG+BIA(lLwxTE)uZTK`I#0=l5y=Yi%u+((r6?FFMF!&;ClxBzRV`UGyCTJ@JS|9?DT=1% +HLp%3OXn%usrVl>S8O)Ric-jm<YK>vshXccHQ!XdDW%vlrDn686a^`>GD=`JCOOTcZJtFNs#t<+q&y{ +7?Z*5(r=lua)e4kSrW%#y{r%_rkgOhVZkDUnq^97zY+p-SWr8<q{*1uqrau(wS9?|^jz+S}a;D7SQ^r +&H8ca>YzHM2F3hmOqWaUyyA*ZD4D$7+=WNO<;<HQiNeMpWnt5_oHs;sNo3}ehBiJM?YAb6+W`ANcQ!I +C7H&1T!2D&;z4qv_jcu+Tnup7$@x>7IeXEzJprf1isDe0BVeW?FnzZ)}p(!o0yxo~dd<?%=Pk9lEWuX +Xfe?Ur3@o*VP3<B&uZFY?rY#XbrJ614B#rtHoRkS_#UNaxDjuY}6nI3-XB>rDvMgum+{XHlr2P_c5yu +1VhuxE0kYZc^rwgQafIAE%AVlw`^*q+a2M8Ga`0mKCcy%Av|puF{1Oif+P|uq07JuOG84*b0({r=Gp+ +`@Jn#rp;KNf0#>0hb_Az^pEky5ya}i=^bNA0BJvsD%44P&%#`P(5GjOuOHD-{Xjw82rnGJ)^aGb|X4{ +;!Dd=!o=T+3yiE%aCb0JwG+5hScp3ksysK&3-hObswOR<)3!ubvhnXG?7<8z_A;_r{TXx<Q6&*vu7<Q +Matm$W*-0REc2p$tXgW_?;rSux_4z_hR~jLvEs6bKbbpq;ZSNqoifT}XbSa<Aa=)6)^Z*>=;_SC`POQ +@t4y)D5E6)X>PRSHk&jfMqfH9g1TpQltqiUqv+4UqH}rCGd0I#P~XN-UFys@%7{o)}G+;wSplwQqx5f +<5Jv_1Ix?Uom<bpG#Q2}gbKt5YuX=UACU(I@c!@H)x)oM1mu<<Z@+%NC)Z;`{T_OzGNYRuHwJ9Yia<J +_vy`QgtJp!$D7N1bIMd;ifipvTx40C&q=Lpd6GFYYPQ>u~0pkSmQ72WgVtxd_ra(jR{B-@N{6k2X^bQ +AptZy2Peuz_u#FI|pz>jrmTT6-6`3Blw_OYZAViRQmMY6I^CVMIB(tjViVF)^Ok~O!$WHbO(2C#Gh0L +qzEfFm!C4;~`5w=kyhd!nIIxt@C1wvCj4?FBF_G4L@E1YmCDkmVqn4kT13p{#_Nb0DYTxRKO95(n{Ly +U<;cj||9Gk#S}d+74NSz;GbI;B)={QNIJW(S&8;Ol@db#E{VW-tP=)G`EI{|MD6jkO9o^ge)R2!UwI! +;OB+Ji~b9|+gCvPSn4;k1wr5lyT2p@a?TCe?Oe38$BhTm&L0oi_ApU(O0yGK^#-XR1*q()!{;M|oTds +%!|}k7U08}{DZ4Tp<Aj{F)vV-c7&i)~3H1%j)LBc?W@Wnd#vy9Ul|ztC6~w-E71FcT<rJEl37e7#Z8< +)ki=v_DEhh(RN7#i7v&hEud-8Ba?!ZeRc$^*GKwsXy9Y){=B2ywq-Wl6yM9qr?f({g~4Qt$f>*2@wSt +AtpgZ|o0Jair6vC&XPpo~nyJhmqqk}vqYDcB1+Z$#Ec<<WN#X#HXF_}ApczHQEi9dR3!-~cAOy6b@@3 +R>(%z+6AE6P&drfoEt>3lJwaiM~EBMh~myeQQ2ychVr768?1e`L|#1I`JN@m{wTbeqDCr?UvRP4iND4 +5_<??F|hBJ8+I$u1!FPlR2yGSLi_I#ee?!tIUXF2Y7T&-u#SL00`d@jJkos6QDr&IOZjO67F2|1fykV +9eC?<yZR77q0kbod!W^AB;rqe53+SVZB4=IiGzMO%^Wo}>qH6;5I%nMPrz0S7Og=28>bx)J;J&1A0Bo +Dd4Wik!*f(fOKw~^r>WDy!VDpAZ00k=nmONL<?~b<^%<h=$Zg@lTf^F7g4sS3KvoUCHkl>JSPC<r;Kt +smwdx$meI=hulpdGBZfXogO*uP-$y>}{pCt;S(X3vL)ue{*^qCtGt4Lq2x(aNKC=0jJj#)WtasL_lb_ +Q811{o&%h@uFP{_4d+3cO4TRsMZ6rHb|m9`T62jqxv4WtL&1l=reQM(eHWEQM^Bu0CS3;PQk>&&8$<w +|DH9wRQQc`+uM#YH?rCd7WB$r-(8$784V4U(E5JoCE$xu1loppJ%AM#HoO~sV~p^hb{x8d6Ll%^Hq79 +**IU$x0(2L^(e}W$Psx_%xxco@1GAPf3+QRxfILgTm|y3p!6mrEk7utMR;^vUE^Dvz@H@fVWb*Rrjg% +V>&mx1mC^%%79i`|MoyoW<J%HPy%#ld-lJ0rlKjE0j^c_e+pWt9$OXjfay)ZW-GTR?u6RwL5NQ)g>t? +?A8`o{WM#$80$82MXFxEroQ?V)fcZe%{eY&B=!O18z|OiYKK*wL5QXzDV?x2`UT_ws64Fvc|)+`lwo< +zai}?FVh3f=l^@^#?A4Ilo0VN22EScuVdH_VPH<+xm*G)4d}9!GvwGoOX2%d#S{eV0Rj7k{A)a<3f(n +D5kS#V{q5r42&CT0$0JBKkA)j^Z$nn?0MWE4;(Me+BLcpkuN!;3jc4U|3gt7@ERJ)+os+}UO2J_D*@o +!iTJ~%qwD}{ZtcHB%sHe*l>twm0@Gej@S5B*V2h}*RK%|dtTSnM#a$-mnaf8HxdqTpdwDZ$rX5~4T8{ +%`=Kk{kHD<Lg7VvkVHtXNDVsQTeP)h>@6aWAK2mtd`vrru5QRZC<003(o0018V003}la4%nJZggdGZe +eUMV{dJ3VQyq|FJxt6b!RScd6gO4ZsRug-Cx0Vu#i-Egqhc%9w2ox+hV8bbdqdQqyfQ5w8M=gYDFp;B +gnt+IlM@uWY0|fU`yn=@!Su6LarY;*~+St&!X9pLe@2JG*J(-uS#;yNylsX#7n|pQP!NaQoz1wh(^R- +_Z`m{C#2rD`%_X1#gNpSzR~-Zmv2hGRqGF|Qhc%4cCsdvS{zD=s9V`-!tRx<dd;bQUo6~uB@0&Z@ol# +Q0sX5~{z>iCfYORKr%${oWoNks3!Yv3xT76cvhND6W>9&-J1w@tLq9+8&WjFUei=?7Dm(*IxJ*%2Eo2 +kW11<5cVO3sK1GS<qWs7j?2w;BC6sKqe)|4J=V_%P<j6^*`%^o?`tlM!-+r54`Dp#&F)4c+QB_FV_ZZ +?~XtE)pOy%v?qohdxLXiD%HP{HmvN-b33;f++FvnSrEBPz2<;6VYKU;q5{C*AyfvH3Usd~<pE%jLho? +Ars&rwalfLlu2+IM=VT>??i^OA$c8;;h-P$VZ{{iu`6Y%BmGP7lj@XK+`Sj6!$3qVO0-qv_PHkj;y_( +=5Wf7W-X<(VKw+lwpc7695A$==@a6mxUnMUIkRG)7@1E=s&qF>aSLyE8F}-bT*}6ZZyDyI*~&C|c|9d +BuSvd@UCnevHsT7gf>Bm+jB(?z>6GtRxBzw@W1l9O0RuZcFvYa)QUF?!BnC?y69XFUfWqcfM`^^aksU +vRYt#w^;?*2i4F-p#bBwRYO_GIycozC0aO5-)I51a&Sjp-TEwARH;|x-nO(s--(X?jmVI`wu-5N8abq +zp()-sT24S6odr~JQ=b<;s6zgmh8nWte2%2oqd;^atzC70%aMPe4SKmoGlO*)Yw!xXn2)p0^T^^jOd1 +9ox|OjOGYvE5@NRifc451`K~C0DM95Z3Ggm=#b(I=&TO2&84zZ{Z2TG!;!z^<_|nR5nsFgh3&<_yBpU +6QI^ywUy9mLcl2RvfH<J1NiWPkTAGdv9>u_r!<tn1mLvEdY#|~F5NAhjjlV^D2yc7(UL4{lQ))VGJoI +_OlL*wI21FxkXp&CL_iotir5>*+047G<6u^_oG2z5|7^?~JRe9C#+icT<^b#pF^*oa21|M0w!ABtGSZ +BWV1zWa9n_;BgmQbffGsFKc!LV?42dmsoIaghZ+<={3RKZ*DJ#ghim*cW&<gB{Y~U*@y1CC85d#Rukw +P*$Tr5QrQF75sUF$&U7$Qkn)Pvj@>T(Q=T_x|KNlAkx(|*J&{E1iVw=Qe~>x1n~?h9D1Lb<cR#xA^^C +xy2D9y7!5BCri8<a_<b<rnL}>p^4-0vVeQB2n;MEC4PufSnqtJ!+T;uDd;f0NFy`94LchmHfVM$_iRW +CnQ#n0S)a3b_Nk*pZG&|j}ZD-T&GbG-%fMg0m*GImSou&|Jlfp6_0Gk9YbK9qrhp*{WJexFFKRcb5q| +V-HpWN3UuUGm|4wUtUc!;zSjwAu?>)kKd3PM`n9Pu#Dya+*e3+K4rO|C%U}>08_KrB-kpEZ9UHB3f+p +73=bE^M<lAg3V1dcm?o3G)W;Q^txc7|^FLQff%q4;DR=^Fa1MJhlMGhP?7n;{9EWAccT63kW`I2PV8g +v&}<9j1(><Fx5$Fxo(=bMQ@(wm0egHMCsn}R#&#`(G<vm(6$Z%+Q27o^~mgh|*IQNf2;%903qcIK&KN +5xfev<dh>=J4M<>gKo04<CQoT%Sf__RtY3t;XVSCdF@_6g=hSH5=0KR2Ua7_z8Q?h-mVH27FzwU+m#t +UyRUWZl8&O@axbUXAqXsI@Z=4%rII<I*MSjAn}A<{v^2nMzd{E!5b=Z-!aIvo(T5b(`M1{f!&TYpx@Q +y{*9Cro>H@&O5F%LJ)xbC;&TE#twb%b2)ui{aBIP|irvO+gdI3|8hF|W0%tBOOy--Qa{>Jr+nXe2VTq +rW^#g<P9<v_!BIG-vu}|sblPEEnA-;7h^iqdAWoQBDPJoJ>j%_<TrYi`=DVad)129S5UKAx$On0tY?G +R@pYp9IEq$4;rq6Upl1tQ^cwsLH;nUevXvB*2U<Y3}^2`%D}<ejM*10C{ywA^?E+_G!nt83^9dLHc=o +$b`^>41B8U^<&naTiA4@L4Q1fN1Wb@cdCkhUbJbiATtSB!h)5;2Gmu{m#=#0-f<+O)_7<{UAD}$;)uY +S9^90k0vLdm{R1;8?RZY9k@ZDJ<ji9YMHm*KxsWZWk=6v?P%vuMs4>+%?{Rbv2!{z{VN&-njq(`sKQ6 +Scb5gINsBSB#uhneWtjqkA9L~qr>?kDw2&jFYk`)RGAMG(MIaKzSfnr@b{zyCwaqxrdWmS11~oxXl{` +OiZXQa|X(d^iSVywZ9vg}-HAE3T7T(Tc<_U)}s|=8NvUE@wL+LI&<q@{CV<#3c8C2vKMvgNj+i5xVkk +PEMT#=={4Y0sy_@Y7wJBPk|=k5wq_v;L}TrSP8Plwo|?@R}X&W5)p1DJW}T@&E(2>B;u#vS?5C5iWb! +;Y}fNSpQ<E60;h0%jjw5~j08;B2ONwOx@PAd@Nh`Qh<7tUo=BrfGNtNLv7(<pX+%I0kZ2mlUM3Ze4A2 +{~iMP)CSHQ*A(h@Qjaypm?36H0Sq$u)()8NI@!1B+ZFjbk_#mCR9}x!8(rTxML6Cog6GP@!78eq_D1s +dtl8UEA3FGHtMtse20SoMSj+1NXy=EkWMv2OnzP0Z{Kf~&RV7)*i09IHc#o+HX_yqudM&N57;HQw-qa +v%(5J>{D6)VuAy&eiBq}%sfEU~pV%h7q*9O%WW4X1gytp+u>4Z@6z#4E$6b1;Ogrea22ozW$xUs`K`* +ARvTs^1RVI;hg9Fc;z<KX-YFM5rmfx{RVjw69M;1aB_G;a!tNyH(~H@+q+K;r}qj~XY~DW&<|5n^$(Z +U25j0(e&kS&o+h?XT>HS0=}WhCHM({Wv-O>jdG@h4tbP&1Hgr+$64i*>VP{a#9ZG@p)Ji%g-0T-&|Z> +U(wAO{psfN{Nn`>lVH{6Np!Z;Op`fKa)jLG=JUs|l8OP2kvZ@`Rc`*EN;9D8p1zHGeqq_11Jc3unTn@ +l%w#_r0LDF6vHbr@{|8V@0|XQR000O8^Hj4?wJ{OYrUd{1gc1M%A^-pYaA|NaUukZ1WpZv|Y%gPPZEa +z0WOFZMZ+C8NZ((FEaCx0rOOM+&5WeeI5Do&%fvvWOqQD{w3M42{Acvp{dRZ(KS{mETQli3#H|nqNkR +oN$kL{`k))qAn&U`bR8SX3c<p5+SI2TW>+ml+fEp(cwgD|`yTOblzafF6Yd?{KWy<kXZ9nn_MXd|J>U +Xga_hda_RMXjoh>GaS;vuR+b%0DPqkYzh5T2fV`OjQxq_Cjhxw@PrMp&Hj&=HGL%-=j%kDU{dHv%aX% +29O=)Ma@}IRJV=jH4~k>!C0I)f=o*vq0&_DL0A2t52CvzE8%-((V<-vg#Uu?h9N!(*!z*PCQnQss+t4 +sOn*%ks&T5cr1c}npvvwqPwE2sng*j8S4GQI9fYA%7SV>uHR*(GDQEvc)l+>ydn7|>h0(pyx3y_#dn+ +F_e!=wzw58TU4q0YHfwq<*CIy=N(Y?#7s-rDNbCqRT&8br4gLvw=ppAzlzeH(uml6Cd77O<q1W1oQ(> +*9+?YzqzaYH^0pZ+Adg<W9Ep^04sKR~UBQ8r^E)QIY#W;+H_6<+x7_n%2G#W(bX7|EyiA4N_1L}|RM4 +9*yYbos9VbKl4s2$l7L9W9&VLo5j<w;;;&7C1#3?~FCg!M%tKM9&xpwZO0(SbebjA6WxV73~O6HIOGd +5G}kb1EI(&IADyAOp4CAiDW#OVJB#c2~PK56oQDs3iuN88aLXLd!PFc<n2|^-jRDBfsMm>Gw~NiaYNH +aCdx(!|Bs@#$6CdadiNYJPoifN{aJP&G^_TfiFtwxOB7Zm)-hdGxdOghlQ&op6#l$<eDb+!KNw?7__O +q06DzVRCJnJ{Hpyb;sn8&WVX^#0SYL7!v~dq;dw!}{MU7ur6!6@te6@P1R2-TaVq3#_W9z{TnNCy<^m +BIEbFrn|6XpowR$JClIn0m|9UtaP^%8a<=gTQs&)a2wOsfM`2bcq!Jr)v_s<w1yV8?u5*r%zZzFgQSY +(&ui`pa+gc1-1-6`Y9nv)nYxHGbpZq4enq<7as{n9^5Yj*V`)PIOtGav92O<zy3v7BoFli98o1EGpD+ +T?#z8M%vDtkPpE7GGAPFK0M!oyhZ+Z#bR}mNg)V0SrC%hWjad%r%29K;!uMkC2j&57u8-0)2Dz&oTCQ +ElX~MST2G|{dDY~Ij!N)bryKsfj;veF5j*qq_hkC=aUjxkzOH*u*2LE6sIpHU?s0s=K@>|Zj<GoOmgI +{xF!8-2&@fH6+;(43-BROtfSiMyBhg^A5{GF?zS_YcWX{($*&6NU<*j%Et|EP6=iWy%(r3U)Rx}U>8> +Hjtjb|5|j~<E(n}bC*toILB^Q1mN{fPOi?2L(Bgw^igcybh|AQ0y~s!eCg{2EuJ<TQ=`7pKBvg!Ir8Z +65n`Q+d)A8<T`b(aQ<`Bot(JHoaun$CopI=BkmHX1&)?hJ-mwcV}Dae^X*&NtvwTvk{(rrv(n$j%;}+ +G|8hn=yKVPp%<+=E{pMn!aE6ez{d*<{`}DSjq62HTc<K;vp$~xuR?P&<h<}%SIXG0l;IKKE*Bvq7AbK +Y39wV+Xoaz9N_+gS))e$c#fg(lI^zg7o%S)p>kzm|3wB;CFelVpGQ~gzh7<#LU77$WC*;;IPogMfW%N +8F(?+jK?_3&$=)9HJ4q?h}n=SsyO5t5`ysh8B94CO|1zO|F6rq4y86IA2`?IL^Lxo#eEU-xL#N?ZAf1 +Y-`30af@=O4vtryw6KNb_n6zQR&mPF@%OAwQ2JX4qI^{Us2Z>gfPj=gXvd#7Awqx}p9hSr*>}>+<_^# +f80EyMBTT`!AO><C5{dI8tuxJeX)<JEusQy2c#Z8GE))yHBhSCn=OTG2A7};{PS&%g>R{*rV49N37F2 +!B!i2;YIc@P)h>@6aWAK2mtd`vrzQ<wUuiG000gR001BW003}la4%nJZggdGZeeUMV{dJ3VQyq|FJ^L +OWqM^UaCxOxU9a0V41M>n5K;_w?qYY(7x2?<?=WmYhi&a1x<XJaI?*Cank3&eEBfC@Np@l<F4hk}Bo; +-A=HVf!XXKAPkXB2nk3#K8qq`22CvLBM$;lRog-$;KCk%zU17ftmeW8dChQ04CRM|7qoy_T;aN$@us_ +d0N8Q>*{*42+pI>@rt>W)yFY$zq7GunE>woc3515N8J8|3cf1{)(xMbRr*#bnj620af-f9?U~Ly#=0N +--)n9oNPSt=uORt1WXtL;Otf(dr>BmrOd%LAt8dwqqXcl($-rc8^i|kc3Ot+JI&8bE?(?{Cf^4t(HuB +FVG);putp(7<n$mmYTy3v3l|H4gK}!AAct``H-V+z9G2--y5&BbYX?*@m6dR?65ip?DCIUmNk+&M;@c +=A>?BCU*Bg0pVev=|6ldq^dbGuW1^83hBXJa0~Z)!;h$b0UywkKBw(s6nw_<n1tRe)&=L(8X%O@hPXp +zI7f*m3vtd(P4z@bGjxW8#BQUt}TL}5iSiK`}hs3@cH>BQC3=~-BP`y~edw>7@Ir6DOyujMkhTO{5$q +5n`IVzO!lok$TyCHYX?i~Kz9gYJU;c-2tu$W=CA;Dl>o$aTV*~Jo-D&!-@?{*dA@dX1Y&Klv#OB<3@m +J?L-%}j-Z^L0K&{Yrr~;oLfB#(?5C)-CI$uiw6#%RBJwiP<`Dg@h}cJxEipUOR}@ACok;f*oe>ngVzL +iPeOQ)$E}7tcGsm2vSjz9jI6o*oJhZS%u9>IFisos;JP9md@!NQl`UTgh7v9bl@sX=$8WCCcs;vcqxT +CT*I004%>8T``gfd{o5}~U<Y}qB@)~QXvR|7AZVi5lcSI_;DTWx2wulz<hLN@1E%?x<02C-Qa4O4Lb9 +|oqT#&8Ztrb>&7~2MI31QE|EWzq;z?NFGYRSmW5eFJXO8To-ZF_!8gK{&*F<SQ&}K3EWFSxFZR`3PNJ +^xfUBqHx<J+NlrQ~UhZqjkbND!vrw!|I^pB2qz8djkjQyeM#V*M2`p#S9}iG7jYZvQV9Dc~0=q3$3|A +T&0d>7a?tC!%q`lxy<gV?GS#B2c&b8}BT|I3Cwu6DPcHWY3`lE<D@b^u-kPphQ2R^qHZ*OsA0XlreG= +?*x}Bo(Ex=MFv!1lv+PTL3dX7rubnqk8?8VY_EnPH_%~2!pNG8xvTq4J-^zZu`kx)d_Sd6yjjq6QL86 ++v|=P(+@f6A&6R^mYC`Jkc=F_ybJ-VdDtR-#MFqm$&oB+gRK4NM!-WAC>?VbPU(_7vxg16&4BHc%!PV +gypu$h&qVaRWOr~Hx9zUIo^R!<E%31j$nybb}OEq?bvuYI0wL&kLD+S41Cxm$M7gqCqftPZ`jGt9T0S +y=5x$Y$0_2hkXlZZO}%*EF=bM|+=aWR{w0tX|)1feOUv=n!Dv;3^D=#VaaSVh&*Vz(@!_4g$IOJPa<2 +T)4`1QY-O00;o{RI^a2$6t~Z0{{Td1^@sa0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!INb7(Gbd3{t} +Z|gP;efO^*dQsRe9AVGFJm6yJT?Y&+kQRH{20^iDTdOR2`e;@R`|qP<JBfSO`61B<NgW;@@)JA{2%S; +NoTTodG2@8ZgBwgxEgTUnj^-6x5Oiopgvm&{ml}L@3_e(7*(Vs^rnfz`(uo*q7qowyu-&!Tx%!Jx4zs +MYW(3Y>AI?FJld&Ge(HRvy@_C<S%lRPOpyYAgD%1CbaNW8$w?v%e#5iF>tA%2XlI$oP@|cOx?fT01^Y +$Yb=Y<cBoLY3N%l+Z-c=#`e;H7db;=34s`TWb{;m7BD{_y$fp@OI9!{g6Cq|N=)$1z6fnl*w&(eh>p` +o&dnvXU4v!B2r0iMgYNdL@DN=zmIQ1?O6f#AcagS)+t=@IbhhY>VZ;+-E@F&CN~vr&9`xAQH!5I$9~y +2nCa9UPMnfwi)Cr6*k$EL>xjRbksv|B!-jp1MGImounWL{GUORR7g7xI;jx6f!5IZgu;uX!W2nrB3e= +6XFO>UTzs^K{C2XYhhNR)rP1zp_%??64j5zk?B8oc+F4%Xuc%+i?b!yL1CiWFVNy%adEroX72FBi6QO +r^FQ<iu__;6<c~?|b5Y0<=_P+MJxRDKO#+DO8$3&YJ1hqI@#4q28yrSQoP`#l-4r5+z3`k_Y&Of?s1| +u7E^+rQm6Vb$1>)d&w<E!AE2+G%6MQ%(6R8yVD&QBFQ1BpeW`tHGKjI#LqpPY5Zj>2yfoU^19*&j3wi +Ve`Rd`H(LtV7GF^l1IU7w@eJQ}Io;Wwg9h(FVN~a1lcVu^?9^lpSc})9HSL?)ufqQpfS6uYyJf^?8fd +mK%GEG?4Vt?&q5eDfJ40ozKoz#11u$pS$2IB-dSB<hO4Bo1UAdruD6RSGdg=gH{(174YcCO~+$P6z{I +f*#1fU|7&#~1BW?fzbc@WJxOw&1ksbNqaroBnNTmWa(m265N@3imwZ#4dY#%#<Egkjyx}X&xJcO5#4D +C~<(9x0jfJTd9*bl+M_MYDZU_8pMqiZKzfem91QY-O00;o{RI^aul#E*z0ssK11ONaY0001RX>c!JX> +N37a&BR4FJo_QZDDR?b1!IRY;Z1cd399Fj@m#Fy!$I!pvXo7D`yn;f;LLdY)-4yXuyp<$-FWTSS!lEr +^m0wh|I-|yQ^GNUBePy8iccv(p-hE;bfFT9l$px$_kDM4wboJ1)N?Qg<y@Ky3i03Fox)`%$A^9+isx} +o+qkJ)S<OlZ7Mwb-B&I>X4%;p1&s9=#y}`*TmXLbM#g}w-w%CO*pktg&}lBqlN9BVdt^x;*VTyK_uKz +LeBdE^0#)co$l=F+|9m(+g5diJZ4gHLJN{?qjLWj@B)RwS4W%6l#qeBhGoZCtEDnviLPH&7s)IqUr$W +|sM9*u4UFz)i0H3TgHGCO5pT>fywIP=r{*Hp47t|Mmy|{=y5g7|E>cXQuufg=P*T7xv2Qg_q@@0@T9< +i93(;BO+5~r|+lS3XR*Vj;EU|uL8xf@^l^+d4Brk}yJ+Zpi^a?;T`lfzYn2DItag7DA~kEDzp+g>cG6 +@jtRa_5oGR;=bCRmC({$;ZU-`uQ#Kr#z1FxFTpI!f_B2ydN=q*A>2ZQ=O}HNZHg=My8rLe|%J%F8(v8 +<}7tYiplPwTgAw8V^&(q*MxY@qyDAMb)tvGpTCQ|q$4OEKCo{yEUD{0Iae{TmfTvTq~?mZbe&rhK_RC +rJY(+gt2<4O3y-rqP~@<Iy!=W30R?g20!G2RyU^Sm_^!1duPd#iaI!S2;)d^T6#oEFO9KQH000080P| +F{P%;nY+A|pd09IoF03iSX0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WX>N0LVQg$JaCyx=YmehLlHcc7Fm +4PiZ){B_hr{Cf;@~Eo-pycVCynWu4Hlh-R+i{)ZOf7)O5NiNa=-nmiVu+#<;U#gaK<2QOJuQFRje0_% +o%%s&)K>z%lfIP?pRiDHoR(?xUai1XDiMczNsI1&Qf?-Z#di51-vgR)?&x5?HV3GJ7cfgseq?h+2zo9 +T{o<%pP+x1c7n5~q6L7^t!1w((WYg20RyE~9yeVT&Deb^SPD?Gy4#kV@usO8!Jh7U1ARHXe&npJ*#p9 +C_%Csl0w#rEqHS1{0wxWhlU4xX$8B5GRa)M_t6RbY@l=Dp<G*wTObBO)V4(eGx80p1oFZ!%wd%b5Q(6 +jc-sXi!kwA;CYIj?nFLJ&Xs?D=?Q*T(3NJ=CLD>mD@X<51wb=kE%k-wikQ_o>)Rjq%N_1zs%UH`1N94 +1pY=C{z_#C_KmrTJB~T#gF}Z_@?{tlnIIxVn0Gd3~MyaQWs+;kGTdaq`Hk9B84MZ6EHEhKssuGA;(K; +%%Beq=;CIqYB+CORKsnva~Gzn<vNtdjJp$-T>+1EY0o>K0n=aUS8mnVAHZNus69Rz8Gm3_bqgvP5Qu- +Hf`>Bn{0O=VAWV(;B}HofzzEWQBa~dCn-&`lBZR-9Rme&)OG@(<=h~0`R?71@8&@KiwmHAs3-rJaTj? +t=p{<}T+3&QP3TbwNLgp80|Vr;B@QJ5D7*>MSjrUkilI&RU<i&spc#z|)2Y@atbic(fqJ@^Zhu#RsDK +FlGS-1e-Zmge+(;ersp-kCUxy&jtm2$+8!qQ;rmP<Ed`~w+7LW}?ELtat`)(Y@x+uBWiI#74|CWn3d1 +{I_U6lxD58j(XWV&1QjKPOj0<{D5n$vG2g`y?TVc9hT<|tono4Vy0NOZAHaD-%2=f%2^WJus2=;^$E6 +0$WS#1l}h+pe8In~mcHGuh(!8n5^8`+ML-2Kr{Vr`v9eW<hoO>))^bo?QHJdGVLz-G{etU%&nHc+bb8 +X}h%K)uZm+KS`=Oxhv~cT88>Rq0&fJT~X$}@X*h>vP<%10@~e@U|LV0XV(EV&xu$;mHD@{>_7>c_wI~ +eRXbRnfEaRp&fb9d%#DqC*7tH}04(DuM0K-CTU=aiQ<oa#pXlj@d^iR{FCjHO-FIlm#sCC~_+3$@&F& +T2GM-;GJV&ttHU10@5j0zBixh)^zM*GPLaIJVX3z}m9*M409xH;Dq!L`@&UPkAeunhq=PYt&J!6Y+$B +@BZI8Ja3Ac+F(03VWtMp)H~!1w{VK%#;-l5F|*-(UW*hl8JngZ-}9`=;aOxiNS|0-(;o0!G>ynVC)s) +kKm*KrfdtNZQ0}6uBeyz!X*!Nrnl!U0zoygQ{JKX27<rOoi|quV`oh6=f%r3H?>=ne+z0+M$%4%kdWM +YIpUTMQBiKa=$<+@sC{0SSN7#SbCm`EzdxMfs%_==f7QCqn`UGXdl)!rFs4aEL>^c<Vrmi+-m@i40@$ +4XVQgXX_MW9MS^Bhg%(>Nlc<^KwkY>P+bzV5*2=`f4<?4neggLYzR2!z_{SobQjk`Rr((yR(jEGrawa +>LLem=k)CzQ3UC}JzHF(QLsmF$v^raI(LXZVbT*jWmICtzu`82oen;^-)WjBic3!?DCw2$L>1k$2$fX +VrN3ZR<>2fQ9LVKeL7gB?nTi(7Ed_x1TkF%MzCFpUl2P!%Mg)`~VsBEie`oc#e!H~jg-!;_^9fY+d{T +p<U00X=510bqB1*01wTo&Y|$R<V7oe-B&4X-;1N^{979W1HI1Y<6rn&<GHCq{V5yz;=QcbV?6!nXvV- +%|R2BlXGYUM}JNi?Q{<RT}X#~I(OcJv)nGH%2$VV?Y-XcHhoN+<#hN8_@8!VyL?+$+<kM;%k6SH&{9C +nntcO+zKz+`=^*j^Zl_^FWC$VTQvtoJ8Uw;@nSwImAHm3zra-mu0%BvZpa?ezPL1>d9E!!F+uk*4PNC +`mnuVZ5F9;4p5LWRgrhGyX_pKamXl5ZloES)PM?{)s2N>^haRCN$$OGgaT26eKVEE~^NHc`BoC;9a5R +-usod%dS(aZw+U{roZ2r~q#6{k`9JBr<Rpx@bKNT&%9w?zvWv-jYyfxans?0;TRh*Z9qqlI|>>gwwIS +MOgv|M_P%4*Uy&`bqlJF^jG_xADsBtivTO0}w<9XC8mJzI>N__v-pG2o0O9JDdo}H2T4_$w{kdQPrP= +1#3)Bgm~a&2u{PSsq65%#uo{y?$5TYjihi`2fz*KQeb>66G60c(~^8$a03v5AUBLO#V2wBROY()7@Vz +q_4~|MikcijrN7EzHD@by{EV;F*4sr1lqp9fP%5kxI+G5{C&%l48CU`Srx*;;WCxpj1pXk6g;JPdVGq +7LPSZ?3C{2tqq@Ag}*TG5wfue<>7%;6U(c%SFveLvcWlHaX3*<)DYs^J(aHXmY98~o~pprqzAwX(E3$ +*zyzuTeW%N_lGnxgi=?IU6`+DMA!w64nCqF65~&U2o7t+M;N$hcVE44Sbi2YNQs+Yk@F=deCEMFrHku +b+By!NdtGBx9dvCdvYjLX^8vc%HN8>f3GDxK9Y32}BAGb8smrO5~tN?$QQ^f{+N97&OB7T&0vb%etlk +8vy3Txc1sMGXcw0tZ{%bmOE}ZjE3zDB1#$~F&mkTOKqH$I}?15T7pCl+?tyFm=Gw5>5j%f7N<`ZOfZ2 +NUo>11EGU=MCK+pU<RX8kyEDfF1kG4sxKBhuf~94{(|k9wC>L$L$YF8B)6?epTB@+(t^y<%MmmDim5q +|IMn}%~H9;YU^}?v94NecpCFTQhT|t{oSgPKm>C7OoT>()Zq=%(5ol+Qlmo*5cAlXU5Ut6y^t`M^-zy +W$ng@xg$pKJHlV?o%4OZbbUrO&cMipomBg>r~b3$3I9EJQ7B@d=&#%+hHiy8VuxtIB(7Z~yoqW#ZNDc +)Zk47K^OjY#}h31SNRVOYkJH4kqEw+6rOvE#w?s$X?nnS4kfV&nWG(YdP-6SWr)#6ZqW6OpBcA6Xqqc +|6Z!)?EhdAPia#vMAj7BcA<BRK5<3}Dv_X)5m1NNrY4S%q?NL=a1t`;kggR4_-R+K-v8iC{ZnRccCr4 +IIj1YYDH#KG%A5%jsM-1f=5G5V$Me|JO_bO@VX32oaC$EcKOn|Dxu4Rz$$cvB`Dyv7`VRE9NLHyEcTl +EMr{=5<wDT)}BzH~SZC#OY)FeWnHZHp;(MKCWO^_Sbd(^eOY25+8np@b-PU+_5W&X?AbyhOQuq;AmJJ +n3)3{#h(%@4VOCHJOoURAqW+WRQf))0|#t)awD20@0D>P?@V!@>#_VvJS2O_H<_+}XO0CKupJDE$T!! +%Yf_fcN=8F9tO!P-h!j8eeIkBGsg)tsl!^IvspB<=ZY$*eAg`%YN=u0>HfX=G7j=aXT3+DX4q|rP^>y +zL%3HZQ+QuW4o=P{WsuC-Q4ya!(3c~#AKjE<s${cT@k^K?t-w=8cSOfsAq2DURahx`Ei??<dA7;p12L +A&&6}x@aCqm^E9|p)xc(hdr5-ZFA!4^<ZOB0j`b(Z#(`j2QAo)8>7NHF??(VIg0t6Xx3!ichz76$FpA +Taz`xP3(aa^|nnk(~dGaFEg;pml+o5ZYc&P4$z(i1>_w0PoFQ6KNuqW>c3~dX^NJFp{R)$HPllBSVd7 +qjOq`43j?x+@3$K&C9OFr;(#x5Y*L5-)_?d6%}rX>X>7y+p^a^@kyw}j1+s^|fX!g3;8O=kPLYB}>B6 +Xkp4U1#0W6y6I@Q3$Z67>lV5E#jN>ToU!FSFip;kWmwK9oAP3b@CdGV57%T3S7l<iF_H<M0$PuMwxJ1 +s=q;<BQaSzzdS_}3<H<mO7vcbd{31O<s~OA8=)wg<pBN|8Equ}AbV>0KC%!)R>du?f;a<+UXk83aJ*8 +Ao<(+5m7+PviVteaKeo|Gjg{k7^`h@fZ%`YVN%@{Il4WVr$Za5(f>L;%8!e?5oKqR@=bk@p3uUwO3pI +Wbwp=@VuLC_G_j`?1mJ&H<K>@>$G~23f0IUviPb`u1hYX#kawwSS%heJ;U>|BwnAm*G6WBKr3;`ZzFA +=nEZ6VMNhGUY}F$`Yzx_8iW@48j!YiV0r--iwNE^_=xCM^}O2Cp3-#;oc+p3TgYAMhw12h@@ehZNGZT +k0<-<9m>DmWEhb-#^35@#8xlz8*9$M!SBhA~p1JbG=JT%h}HZ^Yt9@rT-vIBAHBc=p!HPU9ThzD6|~H +P*G$+m~|aVrg}~7wI#q$SQ?><)t9l=eUf_FhwVTu;s;Acu~>KMW9Tc&XaY?=_e7Q`v%l~id2d7LREN3 +)KM6}ym4oa;C<PyOJ7cfc?1@hsZdF;Jx0O~VF>htFi|vr9XI6iM1uNS4AdZS6vEHf4lhqDg%>nMmR^1 +L6>kPSce(hsms8kOS9<8n%(K?>1ux~_^z@$|fZW!ujD5K;HV=cx&fNU!pKT^ganhh1k`e1=>I4Wr7;o +3#Nojc^MJHceGJhpXOlpU-@m?S+2uSP?Qe?cS5@wA4&xgEA}{q#YTL7ZY1iwsGwF0UABE<6R3r4_D#y +f#siUN{~MQDbwY0>cu5*n9mG2N=~94|L$>7-cC9$!JD6a>?(~Z0B{g#bC}-fw)49wx*(<`=;*h?lGCI +@$-7?-8y+HrxqS&Qb{KR9_|%XuQgWrS{mOI7yB2q3=TLJ+76CrjKsGWw4sfRk_%0$ctZHs-&BbyAUG1 +zYKBvMt{85Yl`6uPyNO!)VJryNoK50?)<qRH^1PIxS#aL7nQvlhQ+;k3IP2ts(v8g^#v`J+3S_^~U%= +8RL`$^+7pMnRg$2gqdSeg`ty~%XHi9cZO7(=Y_!zwnP_(VC@@3qrfoiCLbo<aCdz{W*F@`!0MNUT3p| +(-amH`>Rr&Vq3J;+@av+k?|L~F0B&ePIKycOqFUo|s~YP@YBD=QIt?Gxfq#%#|p>d2h~&`PKcPbUQ;9 +z(u>zw5?ahm?6B2CD1!P?{4z_w|M^L;0X#Q<;K2oROurJGIGZnycRd3l|{pGW77X#9z+OvREa(BubaZ +ewN&Ua{<BOkar0G*s$jW5+BR8Q&^$X)`#-gl0FV+>IT)H3M`zHn(<Ha-8F9`hl;b2H4zI4GolB+Tk4~ +waoV;>lNNOL6s^K^=4mP*78zaFT9WPH0;{Hrsvlsua<RX(7togM&Tt8aViyN*eIiat$Kd(6(X+;#+oW +7t--Dfp&MaZH9wHUS-OT;VC7Uj$?8{-tK|d98UFyT3VaVH5h#;9ooNm!vMfhVDmH@D5A_Fo`*;M)h)N +x>(-1Y%|Y#lQU6MuT$WgwygYoG0a?zx!GJ@CWT(&M8^(jTlLUkhDLJ`792ran=kiLby*KqF6v6X?CFK +`rdqw@dcYTO1oeQl7=hXiFf$^N0jHQLly*<nolRJKX%3T{V}|@|ayr;375J9Oq2QhNTOC5Wdk7FFI>% +Z6zMIr_z^@<&{a_XgJG2g45rfnERWgV~Sp3tB*v}b2`d1#6xa#?;TVPW^Ft52WlgGBh0)%>;1@8-QKe +;v<8()ZZ)1A!0*=iGSY8GN-ZdM#W48c@+t(Z9`<&TOc&J4XlhFEXQdi7ujKZUJ2#hAp9kwt#GGV>&XM +DevUjvRn!+*;*;LxEa;02ht@g)c|C_0LI(6-enw8&HKK0t>X`6Zt@zK;v1K^Ty_dhL!0y~#B$FxSZdm +IAZ&tPUViZK0RX;b6Ku`PfH#?}-$a#p6fOE8oojW8H@yXO!ti5wM+R)`HY!bLbvUWK_~^3w2e+>qw() +;Ae0-D}Q<=FS@{t#*;Xn;M!{;G&CiVh)|)@n?8*zIb^%g0}wXedb^zwH^?uB!IT9*TxYavepB;2SezK +k!-Na#s4S+gpNKanQ=Etf2QyK-SX$cWNjs;F}qf$Vgq%)J~-!y9OeJ@K{+(_@pR}K_#clhd)to-34Zo ++6+aeJ3Q-o-!wF2m&+kBNQZR)$hSVuTlw&#!Z3-#UuB|r^GspvT`i$Zc&=8iGgKp!g(02mKBlU)RN8$ +w@Aj~iS|IBO4t2mO?@_wGU*|ZJkgTA9(!#gJSr^d2MB=!(!u%AMNdW-^g6qHhiN;{1+<rrqnEJrVxyi +&eipTg>AKZpu-6$wOabB38Ya+1++4_{s5WX3d*{UMg)k56Qzk!cSM&4mFTPb@!Omh;(wq`PY#Z3=<e` +?=|l@Rt1~Y(MqwkMA$f@oZTmZ?wWYw(@RUs=X)5;F}9RBzC4ZqNvW<%PT6txT&$-iT3fdMb#U->+Q`~ +!-(HHveiR&y9GQCNz@EaqJW+mNt1(WgMWJO7{2T47gQlwpTn4hWzxoCt|vIRP`-H?*p9K5O^A3Fzdjc +M6@vK9AW1hWIir0}qGAfyzDxpXizRluy2H&Hx=c;BG!!4%jVLNiAc7pON`4|A0D<|)^g~QBSIY!5f!4 +JRRu%OAV8!o4T~t_lGYCrN!`S0iVTD1xE@>0y2B^qGMnQHeZwFUKMY;4sbL2h<P&7Vc4PD}`DKuK>>! +u(Ab*p$6j+9Tk(3g%Q@2hgP3Vjc@?JIo`Hg#)#DXnj{r+a(+3xwi0b}#jrOeW@pDKkelYq>w_+$pdEp +C#8PbBk)*_4__j9lTz<1jHqwkg5P0gb#88QvJ&Fq&dtn9_>x_Y<S%v9=5|y>QY3#o{AFFQ<M>)Gu;Hp +AT<V6(iLZ+udrBgSk48W;qwk4TUXPlo5J*3SNGfGY$eZw$}{D_=T7eKYvL;MzpkWB%7BQ1MX0k1b&F1 +0f1J%dEa_yS+^xfnV9XV_{7y~q%)YD<xP-jadVd<`z?41VzM0&vZnJxd9u_$d+Uqk5G7P6`O{b0JY$$ +b_^Hp~jO`y}l6&Uol(F7NCPb92KyO>ukb!#)K@Oae^guBfBdOLWUVxSri9<NXr6<~st&bt<yEqL}reL +m@rTH4#U{hpxPWoFMHba7iW3r*&TO>#4%EpKoO8^plONnu9UsmR+l7AB1qm{O{0f*uQj7D`@93WCt%8 +;{M(6@U*XGoNbr^$Nj~4blndtIZwVBc!>N+xWaPkSY2i*gSucKGwJ(30x}h&`@~k>j52EwQaOiC|W39 +=uKTMqn0FM)p96dd|+YZ9YyYX1cYLCj-~e6yH3uOR<p>XdB`g?k~!7^)wRGv{mL6$&jMT1MJ$(ZUw!x +HGNJoeu3v)}ef08Hx6*b)DZ{H?5s$;u(AUy#(E`b8dsOg4yys|<K;bDpd?pp{6E2s5sWRGa#Oa`|%6^ +No-)3|S>IsTYQNkqx?e^e!d#Rv6Q<)@KVzNhc^t^VaB-M-_sKTO^^6=7D>fFb~S$*UY9V)YSE0*;61< +$vjqjSSc1aJGR9&e}#`Y-Z$ohcv$L;0FAjz*I%GB9p<i6Sfwg^jvwtv9kDJ$O3{E_U(@)a2}o85(WLR +pH#CER^xDXd?=XtgQP{RhG%M-bf%-AgJk~P9vgM9z0E`@4BS9(p1gNeOb7fEEd21W(tuIWUTT*(Imn0 +qs3$<9bO$@*`uqpeGO)*q6=&K-4eOm+($5OL84VJGdxLWwHvLWH{N#NEp$6<<n?!Kq7TD6^`$4JQ}06 +w|MiRJH|a)MGz>;q9tZuA;|IRO)3$Sa?tvJ~{iPMn0R3Z$^E(qoU)PLM|5?a$G)1T^Orv`43B68mX?+ +t}?^97%OYd;{n}Jf$WL?)?MRB07CC))0VoxVd<gFd#dw23aXSPXqOxdvt+zN=n(WjU3K%*1I9+<8&wd +e6TRVV+cD+di7d}5hzbBh2b73@<%*0OF3eQlMdL0LS|wRw05+c*{Y4Ncsf=HN|0dmEDw26v#8!2m2LU +w;*UZKW%~Ja>Hg$AA0kKjuy}Jz4-TvfoeB7{n8xY~|&)bXzFp5Os|KIRw?9nn4AfEwQl9vJPAA+JZ8F +jk>-CTt%LB#A#Itsg1T;8m_9};%1knLeJP=VYos^gM?OL995L@yINUmWlhXPdw6=GT1BlIiQZ$9E@5D +r%4Tbq%^_yLuH1pnndNghufPIHzNn?_=FVLxu|92n#;&&o-SlW^P~|$aN_r-xiyL^)vq)|r&Uz}`EMD +GXS<mF>YGS~4;QR>k)7M?8ZkRClilK;T7lTDF^`*E0e-ki@zMf&)Or2_=l2_wW3Qa*mKBoV90B)hum- +zA(R#)^yAjwoF7BR;I@>E)jM>Hi02>u^(#r;Ej>^%|tar^#sX}pKk#3?|Lfwr?W{7gPFhktC5Im2phA +8l|PkS>9IqmN*Wrv#eF+qJm0(*J`E7DrHgcq5`WiGQxNMCluum4c*pvluS`*hVw<r4*9?1yD-^1QY-O +00;o{RI^YS4<25Q3IG6|CjbB*0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!UZb963ndCeNzj@vf&-Csd +y5ZDTAp?x*r0^6Wn1PC_8Zm=)GK&36(W-OB`Db0*q^xu09FA^!yo|&`-YP7LM^4#y#+>uX5M)tC<<s% +mdvXkdC6D`q4+0_-<GNRa7KCp^VSd?c*8p&aw3(_KB*LI2(vpaIWG?z80xTc6|)rt1fuxeGYz25vtYt +3e}y^?2AmKLTg2|qVdwS;c9th<(#_IWmQ>tD1K{&y`82Vl?PXn0eU4@^{2c_f-Yg`2=4Q-apTuIB#8? +p(>H<x=P?2Mfi1DNzAbR37NPsMyoLmF${#b|VGLo_5S)_F(St4@yaug5Zd@Xz1=l53JndV=u~2cJ)WI +m;ye_iq*Q%tY$l;S~d!_?7{!%mw$p)rkL2Vq`&~aFJ;$Ov}IMfJF?x$qd3zOD{C%Jpp6=_rG@BP4s4v +c-g&^qjKBw+pe?yBS;bqrt=ZD79vCbN-GYArJv^iMwli9@2jFa112gvNQE_ky;IHZ0<t)EW-zpJ(*D( +<iQnMMl4k&lyeW-x_4`yvqmV%za6Z6?@wyUYu<O8tfY`2)0K3^NovMe*-c$V}M5ob)jgtcAWRmhRofG +%bR#F<tTsu-yO9^fF7DA`fXR)C8M&0GG!Ak-9YN(DYp^kmJCP6G;%$MZqRn?}h4`Ru&=zCQ`U2l2)QZ +_9Fl_Fj^=R2_iDw{K66P8|H`t^suf!Y>IP&x;;9gq!tn5K<*j)xZs&FZ}cLL_sU_0~lQNoA{Zp<a`PL +uDmPGm(e~ozPy=ha6(qLs$-)AASCVT)+U*F>&WV6GdFhf*n2b0^Vjg$SsuHlm5Ao=;n8FNN*<Zz(fi! +r!=uMez~#O`X3)j!n5-?6wcOGAujX(uf4{fk^uSfy(VB?|s8Ue4j#QIFEw{7=Dv%GslPgJtY)uf7d4$ +WcYR}h~)ilIG=7IbmeiQ;Xbg=3)Qxn;AyO}38{=D5jiuyuqBJCvz@)jrz$*v&ru;+|9l+XedS2nagF7 +j77zzT}hUvBv9y-B&~m29P;075z?Sj8*$z-rl;mga#eZCEGYUp&es$r85Dpw1A9YQxH`iMB4^Bgi82z +e@VORA<`WQb5u%jJA`oUN;$(>h3Ib7H{v4l7quTY`A@lzrAAYSCcNV#|oXfS7~P32-D;_-?8KgJxg&| +6Nip090U21ShPu%X3(i2t?a862f+%K{iWmTYf1#_5HOTiFj$dIg6kv1Bo3_8m?kRLK)VUO6o(zTPl}k +x6JIYbw3O)3FU#h8jEkhqwiRLJ6*M+M{9tJXx!v+lOwVPlU(8b(?<JBr7XCzCda)or3%pbii{8f1C!m +}X(RAv*$qDkG>5=V2dB7$y7Cbm<F_<&9t%8<SLB>tFMzCFAJE+>2#y87=q5L&q-c)(e8g4sYS7khfxI +WP_j|^)}dO@=|^qqvfQw$pxI%wLCGPHsIpivw*TM4nmwJo)7yeg8|;*kUNoft$Gj-j5#jr$I?cn6I(H +1lQ>EiY7@SY>Mm^1=@SJdN1pA*YABjK-=>a-xc@J*Biv?8Co^)77V*@dDP8c|tK5ltnxb7CWQyn0&0E +P5c;hGLmjHdY<rsexf=t_6nQ^0+-->zg6^&HkMz%=sVkW#EYUFOcIXDu~^1EKDxnr7!VBRp%;hQNnnc +JGIXvj7p#H;9c5e3h8c3pzH{*zYwAFK5!l=sTSrE~mbS#Mp*O5qiuI4JR(uFo;xql!7$1zs>0b4t#5l +OscqfKK1q3b#Pe~uVGYSYxCpmZ8YTFjOJy*JgRtfq@Gp%BbVHQ9$1!(rXhOr%!Fh)aMP<K)(@WT31kd +M%Cs7LgRKBojoz|?a?n*(Ue_Z+=J6UUnA^0sV8L8b1l3hK8QYI=ytUvF8yaMbP)7@8bbr2INm!Fr_0- +dRi@9xH4y+zd=TEfG1-WA`Uhn0qIx1JvpGOQH5BZ!&F8+j81h4~!}<4p-qYkwm=Pj50mG9_PQ$alOVW +0#>p=!08M#FuN$viZ1aM39q2UUg}#qat1(5g@bYRfP80HO--%*Y7clH%hW6FpDoj7^BSQd7k*wa2<Y; +}F4mda#lTP~mq!r$p$7#wHChb9xqx+pAq;UqWaMybI-EeAet&CD2Lp%S0bx`PEE%*|G!T`e{`(;Q4b4 +BVh)3QYtpQzs<r<d0%wWcHYq1_&@3e`aN8Q<^FPn{2xhDa?3)E8{Q^8MrX@JbU6DJ`b#q|0EI~B;a6- +RrZNiFpPzsh*ikU)Lr6D*)>)N#<}OgX{N9r>?$$3TMSD0y(g*604o7<+iaTcGH065sUWSnlBp7bFGOL +F;xuo1kM4wC<?wTAi{?^V(x7`xDb92S4sU&D=<DY?uZs%L&X>-CMN!pn}c7Q-Qb1WxT(L^^>&T2qX0H +|B>Q~5nbTnfvI-z9TKRZPedck#W)pR<)Ogd7LD<EWUNke;+)%@n7THD=KLm{M&(c8?#L$`V&K1utM)> +m2Q=e}HdiE&g<8B9z~4IwBj~x?9mx*7MFfMM|0I+1NJ%$=plM<Fehr}DE1_;<3xtSm5$57EZ5BbQ7?N +5dU$}yT(qnjB_ks&&&{hqEF&|xN6rRtdVSi#?hs2T7gGQ^6i8eJoZ!2opSd&RCL0kR^nKXHY8}v-Ul^ +a&h{{GC2A6E()ZRwI68MSHL0wa#n0Y6u`Z!}gtijc^ac5lqOyYE|H^@X%JBZYutZY6Zq-)+dZY3qmY> +=xM@z1h6cWbsDl*>Y-zX-b=X42+8hhXF^b*3`Z6;p>5&Vk^l}MDT^WH8-d+-H2Y`1b8&z0r_*G(wp9f +OymFq<vU_;eoPK>K4@mMHF;!2Fc@)QGQ)yzPH6rs!;EEd6O><vVNf$+TrG!I_?xMlyK5%AS@Nzp#O>) +&;+QP(jUm#(2=;GxEz)qn^mj-&GFI?EL;-ZDrf$8Ep@5+0>)R#CNLGB2Tr6y+Gb!O|P3EgPc}t!gXL% +m*f*}Dl(?rC8@`iEYFuprR)1`v_beQBdf8F&?iU)5je|Lt`0d24n4zKMI-ynAyM|T6Vy*%R|MMOb$Lf +~e9ZL*n6nlo#Fe^p;_q!0ZD6oHRF<BJe;Z#P`O{A^xUTUvZSAv0*J&x4;ccZCH(m;K*H7ykTUst^A91 +hp)?pH0K~HV!|rpx)rfz2_;Fu?UDn#bq)6<AlXiZp3|ZRu2o1rC!hm?<yAA2bX)Y{1&0B;P3t4B>3AY +GoL{I@sy)j-b2*R6(f&QozM}a{ezo%|C-#`W$A;(yrsbt0gh3JfdPh1!!RpBDgd=13!^+}mK@xDbXjr +T+zz7`*Pw_w$X{~Sw>IfJlCec6)<jhKGfYiN$cu_xfF}A26H78+*Q7^x5`f%}@5zGXJ<S|fD#SYB=C{ +i?c64y|w@89H8h4)Ph~iQ_cjkhVnm-jSdumIx$Reta1I+KQ(<8F>dG3uczbBixvL_Drx;Cd{?VAbr<= +1JBdgPY|YeLjp-W%cZJ{t%VZzO#KQRJa-p!JKYJ2%=D$v*&4O9KQH000080P|F{P`QF`KOqMI07n!60 +3ZMW0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*Wb7f(2V`wgLd97GkZ`(K!e)q2+5)_hBTS)gn0q?p%H%+kx +a-nvx1-ya4O0>;JS4k?iH^_hA86G;FY#&wuY?<VI9DZ{$$7Hc#WL2bTvE})i#6^~|ToJh`sx%>A84)Z +i9#}#s3>Fz9Wx-*d=R~1kr7FR~(J{&P<$g*ME-6Ays$A_$mP``1lCzIAm25Oxi6SFWWMra<@T@F^BJ` +^)(n_(&{2q<$cv`I2ppyG3_tL#8wo_X{OM@7L@+?-o$fbk476}t9`M_gkw=H=YMh`4c3gH%&_v=V7Sy +Uosa<D2aX?#ynf$)I|3Fx&P6_ODu%}Zowfr6{+#rc$cxxDy%b4Jcmjy!Tn@&eA7!zWchBN7M9$PH2|3 +Bdkz`sVHA^zG!$+cDX0c)S52Kr_#FvnN|d_&P5H)0Cq$im45E=N&39`7T7W)r{=2RFrWP8?DH(hM8L2 +Hb-DwCUTmFur&Ni;ehB8G*2ATnfdvgh+yCQ5_2YzAuD*vcRYViS^`Ox1c0Pb{pvcpe7`vR^L!qCyuQ8 +qFedZcv$OO0{16D+#jNc3g5CC9h(a8a$Y8HjhCEN$&dJ>DZ$2Gbn=`d7#C>SktXK2$iyl}An#-O+YS~ +J0*aoO6A(E`*nyCn;GY$(P$^T)`3)*OKlBjO3A{c#MB;&HyaVt1PSW&66f{;KkCdkaiSO|(-=rKQva+ +*PO2BXm^PN|e&J}TmkrO~(F<3m;rrX%#(qoX4u19?SgE{O>yu<3SFK=9xe1m<J~!eS30oGZ$~X1{;0n +ApDy0b-=FDhXnsC=Qs2cvXsGO_qhR@|_cL3yeoYV1KW;!05~$Kzt!8W&j}}K@Q?MS5f3kmafL+go?F< +uao<&Jpn$lDuIs9;l~68g0PlvOE!YACXBNr0u^OQ6a50Z`t=HYyb1Tl@Hx?r=Z!m);Qeam9h%9Qq7PK +eyxY$g1ECeIQZ+-u!*XBps1j*+$%dun%=-hPnt(hhR$v{qfn;)H>_a~3DDW*5d1YS$FBo;tr*ofxsDV +#q4;ZaQQI-DbxJyCM5HG6Sa&FBxCdgomb-ptB5=N&T)dl6Cbvu}S?~;QHLQGg=Cn#3w@&&tS2h_e1gk +EDEJpvwqJJf@ktqoTaCbaHG+}De1Wg8H?RAIb>k7rueuTffL)zQ7>iQ0h7RgtsyX`!q^)=MBVL#Ulf? +fsy8@BzXgY52kN^sd>m6p#n7vVq~GkNS*zAhYhzpsi1Rh#vh6igsRS-rjIOMK>0=L>i;_=xkXX-45Lq +j%R00LT-DVPB+d#NP>0F$WHmSnHu(8LI$y6miFsy#|}Q|xCBUb>Sj1+0?Pf3D0cg{aJ|jILlDI|)1!x +J&zm|LJe&R8$P)||qUEZVT!eyTjBNHCPWxJ&bM-fNb19dKn5uw>fHpxe=*sqlnkfi-+qB4#{Kd$YLd4 +W_8m7tD9DGhW(3T{Tst~%LNqNpf*ckSKJPz}4a*)tCeN}Q*K<~n^rHN?{*&TYvw)*wHvvv>X8&0sAz> +%?q>N=<{Co>#e8jkN;S=>|@JL@QK7P#ilF0ennRy<)!!VNGl!PZX2@Sg2uKUm%55+&{c^szIIkMjcj8 +V_e1r?77a);Jr$qNRPm>n?k$e?f1<Uea;dpxuSEETMn&?MN$-@Hs{%OxLLm41}#WP^cV*V{o%Fr7^2X +#~x6|*kHDC_^Kg&=0IE<?LV(wkLp85sm+UN!n~U^*ib@utak_>Xj(BaVPK={P~z0h5Zo}TEVsE66Zjy +Z;-J;fR<N#zn*HnfJ}5GZ5M7t<E}4;x?)+tkgOufd%j*O3+75L&g(a9U{f5jjS$Y!?2!ak?FT(0Mjr@ +zD5=y>;Y{HVL6|BoLgtqJ(T*GwxsDVlyE$vHIh|Mz;Y{=N^?tc$yY$!diUY5djODZz-uou{9$9%8u+K +XJ*O86+~B%l~MBlW~42P`=uzxD&71M-f%IUV}?F~KXZjw#dp*F->0U2#?KJdkV%a~J0jKYW*9I=crii +2L5(xd)!$!QTn-hbMbYehz~0TfuV&-pV0ZCji8I)N;l=)5ihG(-RQ%XvLqr5X&7^-R8N4Ff({h#D6pc +PeCnna*`G?O)<o~>9IA@>J|1~(%V-iAC(XKR?|)jt~(5gq4^T7ov|Aax{HAc!M|4eihzhi3+N);-1z! +Mr=<~sg{|yrSw6UYa7ORb)qL^(;^O?nl)RF}H^KpgM;msi9zMe|^Ml*`5V}2G=N~RkJxDw+>^$84;{D +=$zL??!9ulM{f~5@ZM87#hdN0Ct9?ux(2=3obnoK4DdW5`L6`zHBnYI7W{Q$oC?+3ZfIsOObJlCIiSL +$~F(sh*m<mhsubun8vvGTZ?F@eTs)-gpe`WH}30|XQR000O8^Hj4?3c5D)7YG0VhZ+C?9smFUaA|NaU +ukZ1WpZv|Y%gPPZEaz0WOFZbXm58eaCyyH-*4kK5`OnzL3mL}E@WY!jdQO-Ht7Yo-3^jlUkpQKB-&;p +i>fFkbr1dDZ)PY;q$E4tw=;sZMe!TXk8g%U?g#dC5NxONT)oL+&r)?filS!vpqe~m&w^Frs9r_JI1H+ +zV5O4qUKXrIU{g1hh-V+z@l>8xER&j}sAW^sr&46gOziafmgic`X1huqS&|q`k}!EJRaG<otX1CBA~D +aiSv#Jq{T@`Zk4hT>;>cwlm%P%VvLbGU$nI&RU8R&|oV<!6Q{9~MWuH_+tENhY9?b%Q=?lm8;-;3lwy +2aBs*owq<)0!c_))kEfFndz@H|d)89#F^5_BIgGK;=8kLMt|=5?b1l!<P^n}>(54-tF(&-L}q<Kq;P^ +ox&Drxx>8NpPQP>aqd%q2ItYYwN&xFY3=U7A9muk}PJkS(<aL+2cXIwOWSl_hL0;@R`r&^o=th+&fhr +c`a1|@q(3@Dg*=P9#tjaEm)H0Koa9cq2n20ky}PBCN*;A;r4n7J}Ps`fkYTdb`U%Rb&dSETbh0}8iau +*Ru{&;D=W2U8&#qzddvRNuJ{9s<JeA<`vTO0X#d_w_=X6-f{>@G5k@SK5_l*JStm)TMZSyJ_q^I``1= +0kt+gLNx+%eHj*lXS(-(1vc5yun=EUhSOF&H>^NfCgzF{{5Kf!VrMDXu&Cv%~L$a@KlsMo>N8=j)5b) +ajsu?C|?&>e5`+GL&o>LBuR9Z*C~_U1XurG{wkoFLMw7!W3SdayB#gT>6Z(BxnYKvC7LiOIfFO&NZSd +?ze=$5&0!`n(Nd#L$P1*X52Cs;1GEr@mo!{Kl&ScpV0mD=T)N3&=eN%y^ZVVBBiVknBiO{MM+yE36Vw +h6<B!-HYEFQJsJ*xOQ(XlnrpGhH));l^zmH^91uEB+z20epx}rCN0#DydyIr|0m?~b?cCro+9=ts%ND +|H{3oiR`1)<4%#X*o1y0~DDS8IPaN1$L9}X)rI2b+PY<Z^btRu0qZGSGJH0{jw;>*=tYHMKR4G*t2sV +~SpKCF@8<4L}UClU&fda_(q7W6YVM@@!P3pw;A9Y}NBu_gQ#A3f+qM?ByAP7w%aZa&kaIepr{r4{#Li +(2|)Y~`WH&wj=_Yy5?hp-mD8EqF~83QkWgGK3av4s^%!z}VVjUuxqpadXAh{&J|LAHd3`mb@r22R2jA +hMoe8=7rl5gLHlKV@lx9l0wnkghlbDGReYQ_L!c)i9-9uD5xZi}!|AAxK0~JJl4~ihZZC#KB+u8?+5! +D`nx71K6C}LXB><+zi_v#%cYkos;MV7(d}~7dcFbjh8xLw-+4~bmOkGVfQ3}X9g<CVwma^k!|Un#eIn +F(1ZZe(`H1t*mm!?vyQ4rdsKVVa}iKm*CLm1ZP2}d_g=R36OzH-u@D?kmsfj^^LLq`&3Zf276E^ftq6 +8jS0Vgq)^3=#$wWDh7Yw2uB*Ssiw3sY;K7ph&q#N1Q^XISb7nYoaHqABr0$ot|;t1t3<24_SgRi9~Hy +5d(HKGB#KEc=>)TmER?HW}15A5OQ`s>3d?R4g_|I*GKqf9Dtoep})QZntpbz*0Pfe{!C7Q#<13#v&3L +SI=>LT`HLn5nRHP&LbA4NYDh22rrsd^9}FF-|05dmgBCjK592@QK07g;SOhFqY#+r;}Ad+XLTW8TnKj +i~AdH`}yYS>eJQJ)s*8L3XFW`B0Hdf7Ht^luekZXN$6-A>}q5gXsouRYrmcSod{3ulM`B7-=7Wlq?~U +FA!tqA#{WqO@BjVN^6ty+*KZGDkDSdeuK|Z>sJ3)io^-tX{*v#<a{MjK)UJ&;FTgIt9e7XKyDyJVSD! +!MJPfs@v;{@F3Ol9ZS#-M~PK&X!mEpt$&kD=5icD~Ulep(f@R#1W5A4TUWom_IR;-cZD%-WF2mUJB=F +%X4MavL?JpC1Ea8TJl`>HQs?`SU_*3Nx{qnI-##^0g!Q$NMZPcoSzy<JF}LvQbj1J}QZ6M8-jtf-~kT +A`)V4ID|U)8O=HKfysA#j*si;#}T<IaU8_Nw+BYoXb?e0d5#N8xhceT2@zaBtZx-7Ov;-@WMvDK&g^1 +!f_DxN7xW%g6Hf_)(7ZxN<n?RIr;a6jBX_4PQn<b{?>DaWuf(i*<TC;2fFu^gAG#SnqhF=$zHK3nmTL +8yevhLg(zc_i(&-cIsvuBb?`)8=h;iXuDDIRyFKx5`?kIV^oyRP$h)hS_H5^$HoZfTcf>T80^QM)9tW +pCbD+bslzZ!Q=@4kTeg8<+s*;dmbg(kFfHs~o>UvgDG)Fqx`FcB18VjS#9LKMc{lGr@K6P)!!ufK!oI +8Z|Uw(mJ4-YHzsH<|JX?7t)g2mzt>=%=aBczk0=fRIAeMjIftuKN9Ws`dZ_tO5nfGa8kBXnOU-h-M7a +z;R3Ue1g8Yzogvf-Ojw!R_`xM%z=xMfgK|PH5r%0ks#@ojW3^M2q(%Wy|N&`@-n-Vdc5(ZPW1*e}A?+ +fJeH?(odg$@u|JTb<KD!dmA(6N54P6E2J-)dNubaV*d99((NrmuaJ_f#<kjChZ!Av+$E)Muqj%arf5n +lYMOk7yvFKVG$NpFU%czVz8+tS_$^JCP;%Iih4!BK8<cZfD}M#hZ%*>&_D(1pZC4Y~HoH8fpYtCA{eh +viqrHb26!h8u08mQ<1QY-O00;o{RI^Yb*!Ra^1ONbn3;+Nl0001RX>c!JX>N37a&BR4FJo_QZDDR?b1 +!vnX>N0LVQg$JaCx0p-;bj<5Ps*c80AzER>ZpJ)p0M^R;sE>m9BlLRwv?xNn$P7)Hcbbr~BVK1BO6gu +Ro&Q5X^it-+VJ3^9Fu9AskFqnTyg#C`?_W_TWyYtx9-CuvnWjmLO@-)Ci4H^jvB13~YUCQABT`zBboK +D3z1!YS(IiZLr*xcyQT|vT_(j2Wx7`^B$Aupz6k05AxZWs`Z%n_rb1FjmXcaOJhYNix+t$dZP8Jas#l +C+GthCO8teomNibHL=vr*l_)ADo~6T_Q<J(J&>#BS*B}=EyhnUQ=akU__>20i^cosJ7ua|*9Etv<ohM +l&FaBVyv1>32IM_GR5?@+q6{%0<aIXMFK~cPI3vcWgZ5si7R3DSQ<P6R$r7>N9)Ws{O0n;d13)#spYU +PTNsx=-9pOanht2U)NP*FJ7oc^e*N^@~h6cv?p4u01me2{S)uIZY*$zw-&v)Odl5et1spc7H|fTDwP) +JYYBH_(oDwQ+vPmwI@F!Oz-UG)zh*Ek5?ncJM3pC%3Zi+igHi99@(@!G7Od{mE!>=-Wm#*TG=FPvLS> +#i{cLP@y~{?WGfG0op)~UY62J=2{|YTT^WaL0jygDhhN#A}~f1f!4>us>Z{`%BDd(rSp7UAyeWRE7R= +vVid9a(K<>7vQbrl@2HALcrv{dpWt1{_&o?AUa{F(csK3Pj(G<d1JT~6?XI-)dA@a69a4CZ_UP#H@Nx +;Y<&SGApY45Tq`;U&j4r0&8<uQDQI|O}b3&Hg52CmoE%+1fY@E{fZbCUuXC@^&pT*OZ?hItXezTa>*X +06zkZt9&r%&^BF7;X3EM|G`Fej{<EWR~0|MO5C`>moDr0RxQdsH+IVWxRJ^Ves}fdtT4rw!3d!Gn?~c +}trdYGSDx-Y2T2jWD6~-!;AVnqKi<s$R?G`XHgBd4)L*u2o4k-y0p%x!_*tV6t>1>4UO$H&MVGCcC@D +3cGd`n<SdE??##xWQo=X`uWkCw%NW-=LsgaZndorjT-tq1@5_NtM)^Rwom8dh&~Uc&%>i_fKC`u&0Ow +Heq)}&m#^bvPLhu=E;NUGoJqpxLbg86w~O+#o0LYOp~D8tEKm`{0#9e0E1t~m)Pds(cJsJ!zDVO~aRP +4#bn=Nv)6FbNZp|Ulf!eg6=OGz!JDC`>JQtS=bjT1VU40rN58|vFg<@vmnyjj^R+r^jy3X-tw@%>OHC +#ZF#mYBJ84~#a<s|Rg_@$4#-j&MX^7Ut_Nc@LsX*AJc%~OuwHR;TxJEL(r@%X^}(rr8@^%ZEd;>r+=H +~d1tvt(+$Nn$}gMT2Df@K6~_(`}RFZZnLx|MtaZo=azRr8iZ^WlUqkjk}O3T8YU09vXdNFV3=Rk@(K_ +9iLO%`4gS|eU-$xzEoPa<Ts4evA1Yar*KC5Y#e5tV*QQsS9lL^|6yV*SS<T(VIuh5TKR1f{S8n{0|XQ +R000O8^Hj4?TN)^2#0LNX9~l4u9{>OVaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZfXk}$=E^v9BSW%DLHWG +gKui$x6SPpD$`fzBmh=RMO$+fsPcWBc)6pKLMN+X+HT2x5Nj{EC7LsGJ6$(uL=)+>=S!{N*~!x`SN^| +LiAR4MAs9cyj1{+32&vm5qq3#?L7ssqj;$!-U=WoD~dS+WOU8g^<ACF3}#cEB1Xa9-5R5@Tyy4JnG*9 +h>7FD}~`CYTefM*g&~1p)%PUE)C3Pl~y~J=bk6enb<W-TgD%ZlC6c@f6r!NT&m3mRq8&K>E6t?wL%7Y +jcC#wH3D68nHIc2tpeTuw*c}LjZBhC(GeEAQZ-hn+FT$^HGIg)G`uc5reEMgE6_M-tyg|##SX%5^Fji +z+h$4>d@R5()JX}fueDZsiUSvRi(Ac$N6;PH25hcR3Ut#`63A92-3e24%upM0Kq>T!)k^QU6n{eAaJ# ++CZ(-LEM<?SQet(av7gp)x6KuzZP!*Vd{{6qd=dXTv{p#QOFTcHg`{UbxO>rK`ZTUkhWO>@K`&<QB`p +LXfI`_oEH3*$*Vv)NU!^f?JZf>|XJw*P;WeessAM5+i`nY0034@rN5gJjQtb=8WF8IlfC3#-+9RhlZW +QF9$1mt<8k}*)0UZeSZ?*4yAyYW1X>tZYRU@#;#JE~T*ftw8@{FTr^T|!+5FzL)m@Vo-&ouTZyK{)UY +1va|Zt{k7LD$vG-Eid=HwnU&Rgn)HI(3xu22uTKTD;rhW1J}UHR?{HtK_4;ljl~#G*&Ebwr)U~1M`xp +V07$%(<{ZOHRhT=rwYD*Lx3_K#;mk{<qN!A<Tc~d(w_xn8-^;*U$ZEj0ja5pTm)Z05TfY-8$CED*Jbq +xoS_6K6515Cn$HqVcgO3)mkKq@bjg*eY3F=H{l?NMcv=n<$wp@Cu&e-HO_tF}o&w4*H_En?RhTVr`@} +9jIIFFeI3Q-BrFIk$V7dX~BVnQ4U2~RQHuL0ND7lz@)9~h6U)$-E}QWdzbj)h|XDV`SrmL&VOC+-b_N +gngMsD;h*#DJ_;>>1Y^M8vaakB5MEdQ973ybPm*KqISV+OrQCXFVfk=p3~%Xl<fTyYDeY%1ifxiYNV~ +1IqfaSmE#5IdhG<Y_W<6O2lBc@Cju+yF-xgxy}|-j1_OC&6G)tR#RGyrnexQESdW#_eer)A<SMN>B|) +jX%{!0APQvqoJV5(GshJ)q3NLXBL!vICE;|wJgvKY(k`d-F0EDmAZo6U$?~&#R4tF!b2S<;|9mFjndj +CnBG-O$(rx}k2y0z(-SjjsXf#{!hVtrS!g=%8AMt?2+`MUhP*RQnLUSVpmPYuwaA_uOj>FuuNatVZ61 +N+HbrE;7pKoPMfq4VX-@pFm3MO3fi}(usLBk-J%@tfw3d<iPT){HTh*z)~U0gveHdqWnS5}$4Ioj=2w +nsDK*?f(H-p?4qSH+Rqpn4{M;EwI8INC_{z~xhc<S8yh(vzX`i7*>Rl3#=c!ijLA^w&pJoCoK4a7m=E +RLGi(VZ^ae3Su_A&N7&uE^O9Vf`!%XIYF2AU3)W`^M9-h*_PNdX;^E(z5pvvU&8G{s>YQCSX3G3SoYn +q6S<ns{Z#5u^2MT{E)6p-j7|dL1K`To%D3EX!9<9{Rp4WH?haUX{1Jkre4|y{#MT_fl#}3SVgtET+?C +>bQt81w3c+6+FZg^l&~AARTW5~2*gvA4Ex48Gwho0%*vX2rzZsM=H`FV@9ZP%*;roPp>=@oJ+4?1Wt7 +;f}pih}wC?4}rLx()?qag_-kr9lmRzuN4O<w>=9;POk2pg_ZaXev(P~7HzGU+!J#GDKmG7@6dQfZrDb +HI{8f^&vqSox1q*dT+2rp)!?*`N*Y1-U8TfObQ^Q^8KIwpz)-ema7_Fhh}X*P4t-PO6-G-6^V`Y}jH4 +%K`PHP9JO=k_!!Y6fS)!h9aW=I1Z1I<<7GT**+UOA|}AHugvCd7xQ?=0||>W%z)_aGJA(fYcjlWD`p6 +*=z#SVc#jc}nE_UMDVWwU)=nmKd0}X!jvzLGyG!VIpY>*2O_?d{^oS-0{>ldL=Q+kHoQ41Kq~BE*HWy +6=fT%+)756%huoH7o^@M*qHv(OEb{<4#$C7S8GMFEXjntVg>s~%v{U;4K2+eHp9urMhLcI~Dr^goY^< +>X>8oHeE$&Y}QjS&SV$x0=DgE4Y@cwvQrmh9}8hL_|VDTra8cB#Tp+Cu4z1>@r5Qh4Mx)Zw_qeJs*l& +S<&=J<}#CRMWjX8Iome+v*dSSjixJy+5gR6K*BE=4biZv_*j+r(-Bc<w9cKqZoGsW1IBb`vQDK%~lrY +v#zE?3*En;N>3xcc=(+0WDI9?_&{bq+x1<v3^#P{6KN_%{pbp=?jsc@KVA7uanQX;PM0qJLUc%WgT*D +5qwem=A8u5sVzxvW_DL+xbov<UMvuR~PDxfWvE*ue;>8H^m&oitzq(6fRGz_j5r18o9=NVWy-7y%^!O +_Yx<v3dWn|#53?uA7d55oO$4mE+(sbjwVlXCHjz(fcroMNeou5cCC?wQLOu1x#%h>aHYuIdJ2|c_tA8 +&2`#%<tqk%y%i>+ULj_{7!qa`qQcO9KQH000080P|F{Pym_}mS+I~0KWqO04D$d0B~t=FJEbHbY*gGV +QepCX>)XPX<~JBX>V?GFJE72ZfSI1UoLQYl~Z3&gD?<(@29xT2e)MM0rp^G=Aw&nnyE2+A_We1u@u%8 +3E$p>fwI7|*o22``}=dh9<j+%$SL=H(hiN5%8ST4LqXvv)7G<f36$oUaqyNECdB*R1rc8&DEEk}BlxU +~OL#s|)^k-(I_ZGVyVsq+d|WM`{O!kPv)()iLGj4;LIAIet^#SX<Gu^{M27Cf*BKUrhx+3U>!kYaYke +%YcqqtVirNVwB8(xGU+DLx{Wvon+Bbjqr@g(|v570-3~&L{A^Qw&ZqNIkOeR}&h0zuy^iP4s!R-+e`b +ItGx`ns;tB9No6hhCag_5{&sY+Q{2oP*D6mXg^yzjAsf<tDxmQ7(I!wOWEPzZ(QSB4THG$<Xi(KL%VV +_-`<k|yfBrd|W*$L=NMVe9OeRJ}~o@yLjtBr94kYo>G8bw15}&bw+jpd;dB{RTA<AD~CIU$`q%lEpa- +j{H*p=;jAdO9KQH000080P|F{P)UBl1zG|C0Fea%03!eZ0B~t=FJEbHbY*gGVQepCX>)XPX<~JBX>V? +GFJfVHWiD`eg_PZH+b|4;@BI`+cQG4C`~U$qwClPp7@8Huc2N|AAX{{zRhCpq?$6tgvTP@Av(A7oMDd +WHjw#F58W(_9b(S^Gv|yzz*#l}}T<PT#$RR-p)?(nb;@%&oN*&N?uF5V*<;(DFrQVLJ%bTkkcK+?+{5 +!k;wb`sUU$aa$N5ZQN=;^D@EBvrQ8Y-Xd6AlUO-Ih7@rgJs=QS({);AGWB<qO$F>+pU|Uuz$@QrCFjN +rx@!@Gp_n0-s9D>pQ+h*2JY7t6Zh%mp+(f+3C!&oD43{KAm4upvd|VoK=L$>u`vho9YkNp-6t5oSd9N +#XUk&G{(V>YoU6B5;m_C0(U_+RLYmhr=L3nw?9u(a{U~3ua)%1eWlE!UnMy#;Sr(je1M9!V_q;IkZfq +Brp3HGXx?HH0_4<*#5LFN1JuSjI*xiy*h#64UUqitxQJ;Ui*o83F$a4+Jj$>GkD;@(vn(byuDlrm$M! +EdrJEZOi<&Ns9z;9nL&;&th9VO}9)TjWrxQ{k?v0LixlS*Gq>w;MgNVA8=!>_^t4SPaIU7z$UmNhr8X +r-p)yTjr^FU>2UIY)k9OohR5ZC~txs-vi+@oq1@sz{V#OGbSM!16f^>7!k{0JMPr%vEIi!MJljthvzi +*o8!>_xQE-=Yt(b;3H0Q_hDvguXLk!rfwEv)jtV;oSFqj_~)i<4@rBknQ)B?6{;WvN2)ZTGgKs#f5Xm +<;DNGtV2teU`E46+XrvcO<zFONhO%{M)8<-jCb}MAcZmNwc&38{{>J>0|XQR000O8^Hj4?Z4DW1Z2<r +P_yPa`C;$KeaA|NaUukZ1WpZv|Y%gSKb98cPVs&(BZ*FrhX>N0LVQg$=WG--dZBfZi!!QuN`zuD}(n` +f2&;t@GTZJf91&0bDYZ6aVtB!4K2hqRBNt%*~`sP{QGOzHq0;e1o%0%)8HJ2(xud+HSYXZ+O5U9#oAK +^Aj9n9n1V1gC@5mG}39*<6$vfq8#ZFXY$biaHS+xPW)wSHtw6&K122I;k^V}w`N@S$dZ11;@08EHLth +f;V7w)Q!NerKd~ymnTrjHDm#Fh5{PqG-Op-`{lAhqlNV%Qc1oD-$AWO>zi7y>y*f=VmgQY{?~cWMTj` +pn3#2@$$~q+g=5bHW@HBf}u2k<_Kxkp~nUhFhJZBc>1c9Pkm(y>#MG}PfgUGP##;jjL1N4D_2L7yqD5 +ZNh+YEC`NY^!|<npba8UfysIV<TEKJ$*Ei=lK8Aij&%>T#?F}>#JZa@2DGY@oDYE0AfX*0=XhlU4B}Q +!d=g=iGhpbjw3Kguz!D&arMscMLYjvx2Z4I5LU5b$X0#Hi>1QY-O00;o{RI^a5;6o841pol{4*&op00 +01RX>c!JX>N37a&BR4FJx(RbaH88b#!TOZgVelWNCABE^v9JS8Z?GHW2>qUqLt+A_1y~ekfK1@PMt$x +?pV(G~I`yC|FuL+iWCKBdH`tkpI3TDavG|c-Sf+u|@Lko_l+E=4~gHA&uN_x!5ii8zo!P@vfv?7*K*W +<+|rhO+nle?hpTJ7tX~kS5mYf%$!iowNZTC8!m+|*Gxl@{$-6jtTMkvC+0N3eFdEp50V!`8`d<;E}kn +T)tngWYjmmmb*E$ndK6Z@5TNKCH#@33?p|8lXIpq)joIVLZBX(4)72;X=8y9?f6@<sU0z;XzFjQ%W@h +<pLGW=}Qw`T(3i7e<8dw~TIK#IfYN^WZW=j=l*(<~zq>@ObVk2HIYPc^uR^6aObYovtkiYV)zq`f7Vq +uewyQ`4(atr32TgxaFtOZJQJXSRf!*}hl#1OK%4CdbF<#PD}I`ja`LK8;3CnT<h(!2g~2LumxOu2j#Z +J;9?sfgL3G!X!`CM_6NGsD6L864EaNU{c}XbYH1W}q$zU~<v1UfYmgonMhxFMlF3ELiylwyfHduNq9> +mEE4ec8fvW$ggF<@8Q+3LCuCH38AqcnTBRFxNV;kn`<~DSx#R3Jk6PX6k1j2Dhieg{<d*<Dzp4x)W-x +8Q#8cE*(``pZ$W%#axHyN%z;UAj}lTg4&S8|5S@M}Sxve<_RKe^Olf4>6gI{+V12b*0J+<N3vLK2A98 +@fg?iL9y4IjVIx3`AVeryh#8x1E=aS;wAfp=v!KN}hG=PeFuE25((L34WDKzL0#zx)N5C_1z9#J4R+C +gXWGEqN`*QfyPr8*9Q9G#-BWDdfaPeSC=Xf>p8%vzM*iJCa0|C+#Q>YPr+I67KMv1xc^bQZp0)jPr~N +W6j&b)I@STEm(vY-&C`lKSjk@!yv(Q_GHsq-vR=wo<XdRwPSyT|-^VHe|Sl4p|OF#j$~HM?XXfek9AO +aDYv$7v$loUyo<xp$1(k?k<YQGF6c$Z(whXK>3I@!Cv~eDgFrIDkQj=oO%juHOat4B*MKqEy!v4O>!} +{Z=chLN84^(RI=@`YSs-50eL(Pz`4I0EeqZ;ycFtuR+WwV<S4EnQ7ilwSI$&Hek8iC1gAH2mP9=vfQz +AB(Kwro6s}zdpa+h4VR##}R+JoFj_U{38TNHd3DezC5U)GH>vBdOqc5cK^*`<R!+^A!IFjW@&X<FSG< +GDdfk5?BP*^ka7F5Ibr)hO9hb-8ZoHpK}MGnZKtQVx^TKjIE0bK2%x;X-O6p4=@`%@=4V;ZS9vYxWig +x8kC<@4jKm#>NLyUrDDQU=RurzOv9fg^~)>lA<=l*&7%1n$j{+xsC_KFl!=Th{4)>U!@7UCtn!Czkxb +Vetc%vqx$PzG8I;72oW!!#u<_-X>TIh3l^w!o{JIR7_aWjcq-9-rn=>)-pIeXvaLVH_y1T^qM`JwXDn +VF0^-ur<WnhdHx)goCFF%H8`Bz<D5Bnd6*qDo))}6F7%*d7C6BP6Wg}!wXs7(jjijcMg!IW4m;TG7zX +Xf$|O^fj>KxvH4-SkU{aBc!3GWg0$F)f2QZGUr|pzhoBxG^eRt%i%1qwhg0a<{R-YZsT-b1IgXY+^7$ +O)`q??%Nu#=n~C^87eyci#I{)Q+Vev47>S>`{U%pfiVIGP}mAZh30Kz9@)O?~8?Pw_PQUHs+7q5sK8a +S0|QTg(&9cU=L4W61l$-ucZj+MmM|vF|@nO9KQH000080P|F{P@4KiF%tp+01gEJ03-ka0B~t=FJEbH +bY*gGVQepCX>)XPX<~JBX>V?GFL!8VWo#~Rd5u%SZWA#Oz3*3y!X=Tyo)CvhAfZA50Z~<os`g?{*0YI +KuWf8^L-O^E*WJyoNC4mLnfKnzn{n-J0|(`5r3qBytdH=Z+!bGoqE11lTq%@^<PGXlst~<ew^3OW$~A +@o^={1(tm6Ao#wi94=upPJQ)bg+zujNoi_1?RF29JIAFI{p)yMP5-IhrAK=-&2o`P+CML~><6SeiC%P +k63pHR3cfX`9piHx+qoG|t>lb)uqp*m$G{VE++kGLUGr>pPr*ZK9Tdn}5g(ij5VrRv7i^HUx!a-p-?? +1mgyMkWS8$To~SE{iVlcB=wN%f%ZT!4OG6vj>Jc^q3L>Lxu;a(7>9Q##0sb9$J$cAX)aBnNv~?8;at* +-Sa@Yel9hg7r+yy3z#q9<=a2~duIP?Q3i-xf`%eWjF_EGFS)_ImnK@yXsq9JFA_Y()*E(V;2H}s8Y8q +JjV~@c7d+{GTDLAZp|*bD@bt4~9~w5e92Yt2={v<_9vd0K))P-<>yv`CJEOU)BLh#GI6e7OvP7wEg<2 +$W;V^DT?00!4=!wVn#M{#vgAM(KD}{?8x>Ir6f8O~yy(OU5cE@S2U%k2YEiF<<hvVe370KZL`d#x0Fr +CA4THx~Ey{EG{u3Gk$ri%TBbe%0Bf3PL2TcxE?!D<}+mdOfEejg*O)!kOEtf3*>vA4x<P)h>@6aWAK2 +mtd`vrt1nOU@tw0015U0018V003}la4%nJZggdGZeeUMX>Md?crRaHX>MtBUtcb8c~eqS^2|#~tx(9! +D@iR%OfJdH&r?XwPf6ucQc~gq08mQ<1QY-O00;o{RI^Zh!Gt$C8UO$*Q~&@V0001RX>c!JX>N37a&BR +4FKKRMWq2=RZ)|L3V{~tFE^v9pJZp2?xOU(DD^PiIN%hinHapwSsMT#UUT2eO9-hS6?H$)6(<CHuO_5 +rHw5*$^zrE)HfB;E3+1(FyZ#NPN92}hYIXKW{GC8_jOR-7vQf%9LTPZ23rD)c<5}PV(3n}1JQwjM%@8 +0C)-C0!>GHt3lPWjWKfTt>)#zzx?ca(3oRo#emm79;twuJFjq0EE4k+t`rs8*}IT$!(%d?TCvR@(QK{ +Zz}NWnFEAUOTT!CG@NJbtY?>{g|iC5f9qt+jwy=%dD!+pmnn;ekk(W2q68|O4X>r&^XIg14Cecn{CpV +nQbXmnr!88ynz(Uhg5DooL*gCUYyr;RY&53Z0f!K{PE)(`ZR>4@`rd+-Afg>bpc2iK-;7S`X@^8;{|> +H_URf$2Y`O!QYtTjFJ)2ygiIDHM!p&V$oa9MZIi>uWnM7D%<vZ<&R)I#`FwHyUzg|aKE8hc?&IOfn_Q +*cHuHLyD~asM5|FK=ZPp8%x&XWn!+^y>ehieif4}(q;_TJ=*?%rRe0ulp^}C-A&jhflTOAf_DqJc;I^ +k!0Ha7b{wbOFNGvE=3|8ivc*^z)hg5qNu(hK}MONt`7Enw%bVFmv51_Ut@Z`%gHzD>3`GZODf#F8Sib +1&+usX!w@u#l@|3Ue>pErPfNuKb*U$bBkd5>J`Ze>DaVn<56ulrlaq<VKdwC44^W@EsF$Gxvj3TM+ia +@V+1^nbhfeq0(wA&D@Xl>?1xpG`p0|uBz`~x>A6=nR$_KKk^e^_toXwHyU>_AK#DpOydpKuVexSL%|% +M!dI#Rdcl9L8UC^Oq+}+*L^fb6pBHtzNRt#kZmVJsl3&C$>?Huw)DDA}!IUSbMWU2=Q@3Y0B{ZCx&Mf +mXxfBb4SQLvzsARE>z#c!S{2y}ut}3N7l953@n~Bg!!4;6}dMZx-W+mwA>g9DLUS50i>IAe(ysMhmn= +R8qW^96vj?ntb8qn8fI9|!-4Lu7Ni!#~B#R7J7bSz%N3b#pmhaRD<s_mkq1yJW=->iX4&tTx?`yb!W* +o~w~DQ+dGGn%DL?A8)ojUFjfyVV*bvbx%CW%f@;NDm))I6{x#O9!Izt_BXnu9gl_Eufb)`K5hP%ciYM +u{?6V7zjWOXYX?X1WTF*02@yiiHUtbiF*5)cB>k}0Dy$yCTT!Xz>t8ltbt7-7?%EyK{5$dyK@p%90LC +LO;z2ACHT9a&prx<p^WH$`tT+`(kg)4QS_9S1kQ95A_4P})*{DP0Gw)|U<*7lHY>5#!bqNkivZrSUb7 +=Gz<^D}MYRLUPh-_2b)$B9vkrOaR3v4FL#_&0nrGJtF8J##@TFg~fd{#aL2L~T*&IVuawivPWAgh)$# +@I=GJ9gWppfFW4bea^syihRAmA!A%pM`Y1EQ*cFrcfX1!MEjlIk|e7V@FN%?&-IM=~=t2FuIT(sQSy6 +uGQhj~<|@XqJ!I{47B4(MpErCP2|p*!JXQ-dNj{R$v;+W`R_)LDC|F*k?>>jHx6_5);f2P;ImydSw^{ +(5JCo?2%<U5HKZn2Lf^3ul_(61`Kq+8p)8QYHPW`7;v#B>mSzI8T6&YI0=7a!0ofOL<0ztamJ{epwSl +$jzVQxghm+Pgf+z2ihPyPLA1z9+!zwwXl*lFBuvmUmKA&k&YvRQzSQ-IW7dlq8-<2EoVa*`Et*WU|6d +Yh7sQy7PVCYXM*!HJSh?zRQ=_4I5JNP-uCi%Q9xpEj^0<Y!W6UxTLyEI>JTRirkrNyYIQJ1$NhIRc`H +LTIJPiEON*<9J`eV$yys*qebD?>b+$T9XB2s;SVKlJ>=uffVm}>}>iYkpLevJeyQ12rMsFIbAiQJrl0 +^V(rH)NuWBxoCsYk_V09ITsW8$^QsRl%2W#sdR&l!LT_bu?p0{FqhXimM&4FUxDl*3=yB)YMLi3EBe4 +vjB-}T4mrJ($uLD4iM}=DH%3))dYQ!rtlW+J8}a^xsn1EK>T!m$+DqMt1BB?8ZIf&fd@GT$CN-r(1|% +)1CEe}d>4z?%br6~t=i^kUbU*&_q_}5r4!d>UX!pIHl*W5C}$asP^^>tD$hh#?aHD`GE6xVQ6x3&3SC +QVAdw)C$gwAd5W}HlKp2-vh|M>7DKjg<10l{EBetwCIO16>UZhP6;;<Ls7l7j%O-Qy78V^K4I9W6Vi8 +=`oOHd{d3B~ZfkHuFF@g@O^k~;6CSZQ=LD{-|E>??Hpn1A|umVY&>7zpjCT+WSrvP^K?9cS{kU4_9<v +T2Y_BzaF%FrEU_n&VoB#@-@>%i1s69n3#_p#zEhwwcU?W8))l$g%hZcwUu3BX&ti=JK}4%M7^4+5mAQ +g|r}PNt2+V>&-t^IVK#Z5lBy(v{=J{?NpF<tz-##E((Nv*kUOM_TH?Mrl0QYK-vT(vmnLdFMq)l5lj@ +Ai=qJig#S>?jk&G3Z9(#u{rPLT5AJCfu(mf{hsEHM8u7p1Jry9=Z6j3=0EqJrDG-C2w@TdZf#8kCmWy +NmkadMJM(BXt_W&4*(dNs&ORz|+!Q<ZRQ1ccjvV`TT{vKL|%Rv@&0<tlGN*e%{qNORT6M`2}p$^Dr5b +1$X4I*dqEzs^P=j_4O!9Ys8UC{6z2p~_sfiz4sb+TOMDOxCU7iogNaEFNk?SmwEohTq$4@A07$`$M#& +;$lVcDY|$tW6cWWRJ;8+A=-rsx7lVJ8NJd`crMB>^8tm12J|kZK|@^_oi26D$xLmj@@x@$V&jescKAU +&`c#PTOh-*OV~0@-*1yskfY-t{^ehv`m-mL%$=Y?s;dGu%QDT;tS@dE=21TgnKW*bEFA?AY<R#;-9k1 +^8x&|Al`-3(_5w2oa$OpPsxbaC>UAKQ5wENuCf0r@8Ul(4IB<$4fUYnNGdl69EYM}{(DA5N_G2qB-Ux +B8fgox->r3vCSIJs)s>wGTC6T$tc*NqYeVPUWLtu7?Ed$gPN|p^hVs&T7hlQIa{#sDMj3D=pPuwU&mT +86VlP$2eq@n)zP}ZPJONZ0+AB`Wy&F)ZJ?%6n)<y`4Q9jibmOjO_ZP5L=`Hb2_Onfh(#r~F_Yf|O)~M +X+?0#}pwN+USW_KFI4XKZB(wpwTd;p_LfaXnxACt^z$gxIUD;+W=#63;ISLFRRiPMK2=5vKUF_oeE%= +jl#b}YNL)&d}n|LV9`;ryV?i^bF3sBx8L0SI}Z8V&5dZ1mGK%L6bkOPAUcFW4nZIUfNaIFE|i03!q^E +!S8~zCtjX$>uF;?+D_g1Y;8Fz!^nk#X73fI1CQL#+)}VMRt0ZeI%aOQG3JCrXhi?68Wbw8Y3)sC*SXw +M`CO&eSATwf~#c3v9l>Y94k9zMUt}z>}wysUZm4wCA9a*H==PMIUw*^_2n;UaJ!=e~YZ*F222_peBT0 +;|X$c{mcinavAwIi0`lfearllb%$U%JUH(QQt1ID^Iq6Ho4Gh_;d_zN12KWxy%{BX49q1)ow<R7nR9m +@b6)pF@=@N22N9Gn^0Hp5UYji4u_np@}e$!K$-Kq<oJ;7NGp(`2_uN4WT8PD4$jo@U`V{El4T|bY4*; +jbF)sxIr~+-5BVsYB9~FSy}9E*~>iXeds5nycBPH>JtV9)KcdU5C+A96DOS8BM-T`w5mBy&nS+A1gT1 +s!fJ=wLnyIv$=L(>|3=+o@uE;wgbV%xf?VyC4!i(U!fcbT){UuLz{au~oV+L?a77Qf&Qlv4tgE)jgii +1D8sdG4Rm}E52X*dj#K#7?$Dqe_M#a%s0r+Tu4zOQP!y!<qj5wIOkYQ$pAjuFA*1U0CcubT`#)x~x0_ +iiI6uIx<>ofDd6Rl$m{8Dse<YZ+w6T`pLBTU_7eJ`^GIV<=|l{GpI2B8Rp@cI8ddG>Nj30nO6r+4o^o +S(h;cs?Ch>yV2wkUo-d(X-L|1lFOyBF)TS2;k9z8hIXs1Kv`O+h?VMYzg)=reZWw7D_%o$Fo-^O#O&D +fE?ELoCxSBLMQD61R1QVF5SZr^FF6TKG;3HB~OSa60kuCY-&`O3fPC`0|P$RCBwSG@MXxhn9E#5aB~< +3Yr_aL=jz%zh^FH0MIH7O(eQC}Xgd~SfS#8mRFE-U1;O=n+M}0QAjYGjG7CE*hGvy%=S+^le?Xj9U}E +*;;X!bdff6D3o>)A2wnULYd3$^jOO%#QxTbzk8wByM6`<`+?FnpQjxD~?$iB6<3hX9z3P8ZrVm|L$D$ +J(jL$aa6Xb{c-{;x_QIB-v;B1*C`5u}sCZIPsSREX8L$&+U$b;9r#pH*$6ZQ_YBom97R#I0|3Sv+lhw +gfq38Awv_0hzYG_+D2faJOv=w38ab4Od8Kr>9(OJw>tlHwsEHxK#f^Ro7!vbiFaAiz1t01(u^5TY)_` +#X$y+q?DU&vnRu9$pqk*s7sxz>bogk)iVIFI2w1xBxd+pap+~=T<L)$R%`Ctu!C+MzO*H8Py<_No{}! +kX?7=kwM-gG(#I*5<S;SRJjd8Las|=}_VqqEs*1WHMpR7-(R<aG@HmeBObt))u00Wg6bRDIhB9Uj*EO +1g+$$HkP;@JmH&wmo8VE58f%)>N<4XoKh%oiJ3_fwn?rx@p4=|ga_f^;90V#Y(0feW`&UUX8dLM}ZD^ +e%=l{(==`d~Q4G(v^;;S`bXhM*5|P~9ix9oQV;vjY1*vLp`(?DoA0?x7>4X7IlRaLCbxYj5FpABYg`# +P`##Fw<Y(;_tmMHCeP|`V4oxm<n-#R3xf%D|!x}n0gDQ-rN!;8b@dDeKU0-SG5o!dvHeOB|K8PfR%Mx +9#*%%LMnCmL>I9fJG(_iLO8>-TUbg`JJbro9$b>u6GaQV^vp0ib|pcd)7T>i1Noa>pN#Vu0vd7e5Z>8 +&2mt|BYD+L21S6t}1a(SX176bQVHA^o%z175Wa?tLPSjfCIEEadl{*QnN$Ox)=&fT+8Tuw}@W{BvgaZ +^y(X#YxSl6Orm~h?oeX;quK4_*!Cu6IanTWHDt@#NeceGHZO3sN783{V<@)zYUEPV!skRz^EqX*)BXf +S~?zAe0ydvMmb`%&SXMxbs~B{WGoz9djLNS+&{Cx0A~G~^(4GTd|qls-H^)Es2_Yg&C$gVf@X8jPZib +nZynmw^J_gv+uAoCLxIUe9eSP>iT37(PJG_9K0hhK`_vR(G6oqxA^0+^7}N$RF6LyEPx0(-QT3Tmwis +xU$Hd!p?Tbx9SU}C(jq$2ivPa@u}WEmqkX^H{VAqENmet!4{_%9@;Y2T=c3>mKscDrc`Iin>r~Kren5 +9OdcUN-@1{Qh^j3_Ku++Y<|Nvl&1bJ}42u`TptpatIBJ7Qs#-Du4pqDox7?*&-d7?q^QR*+@0sy~bI% +vL*w1YsVqbgpG?PFKYiUUJylgw?#9a2=q7fe76;eN!E==N4G9OG~PeKKzg|Z8j6$q@YUGco9=jUAi&t +f13e@2*Z_wFg8m4<`khbIJD7Dm=^=b12<uo{>E>a}npU+ZGWERFFkUKn5$1pjpX)of-)_S_y;U<pT3K +t?$f`5aBBxDSG=w<e<@e?#@Cu8O-$lyiJDm_K6dY{MSe7q&H-Znwse5&0fa=ldXH82RfeSZvB-h%GN( +gDz$AK~TFmkN6f?RF5Ydl%(Tx)_KxVofgNV^mcpSy0$m}wI%=Da>5_LX2ab!gB@|SBV=_|0z~a=v63r +|_AG6rfx%#AGr%?2Zg8P^*hYo~J3T@hj5`uccMupnMa$hAYHsJgZQD}DnuN!Q6dH`En+>Eu`XdtkN1` +sP8DOmt=+Iix)4A8xVNt*?JX2>~$_B(8rT>YV!T*aBq3&{OJ)cB+&o(D9ZNYc4^Qg9IF*>C7ht4IPDx +(*RIg<3qp=ZCn&?^C08|(;y9zJlK)?E%gCHe|G(a*bvTOB?cHi!|yn5d=;XRM9<4UMp((KU-*`=tRJa +vNE&mlOKpz@2h<W=ehbz89VJ5S)rlu1FKVGdW}?AhO<7btaN}rBB`hy;{&23NLcNeInI#=`%PEBJthy +>Z!fSaAsQx-2QON3An6pTSV{#wB2Ilw3D}FL3P;FHK(Jrj5e$r+H{YdXv1rII^%8tTnw8+o+zysLF7z +kr5MDfU4`LTT;i<+vd}RS6}&yzS}cyuPEWap%z00ha~Bi$BUW{;9kp3#VVWox{J*c4?qHjtA;(+<bgD +|xXr-u#7Uv2U`^pIg7Q{Tmnq(P<mw7>zatLzPrY@ud8Z4jdA`hMZVvAN&=NktG1bkS?l&g(*4$ELrNN +j6)a2oX5%2AyD3fnmiT+JMz2346TR0%rr2h#)WW|o*UXTyYjgcm5NkV~BJGWDk3&pdl#4Ai&u*pa0nZ +(#dX4~U_+_28p6#-<a`cCO_InrArs(2XsD5A0UA?{JEY{V{Q%jeIW>_E3c|2s95K{W**=rh1}mM-DbY +y3HIjqPGW&EhQ}M_0#hcuW@7?dwbt;fd06fx664@x~r0Z3XHjBIRIiyfs;!*-^7SB!4oD32JmWWxy&) +mS`qz}Dnu&lCST?$<VQ0x>B9j<fzTtg%YO||6TVPvqS=b=J|6P+QYkR3<eRR)pCXggP8Jep&&201lbA +b;2;uQHFY}G8+U6S<!R{@vcWt99*!~%!xjHox!}y{%@;Bo1$;FL1erGMWp@=V@EwUCoVrueRMW_$jxB +R-pSk=XZ==!2iLIn~$iY0gvXO(s>Wv{)FL%{pVq^14|rq>-{-jV3p8FXuoVBt3hzEO1UgY(YIsdVGqi +H<RrgOI}P-GoZ3x@xy{utPo9q5XskwFSf%V5hlO(WjTWZAyu&6I;^V(<>q!zp)>ED*l+?=b3b=Xx8R4 +x@K1~dJrd1=%{NVLem4u_r@leki|NEpYhgb;su@DGGDMIKcvazS^7O0^rkxtru>e+>8);C-KB*7&orK +LhKp1A7>%)o7s(dSsp}k=LrdEfN@1DE_5&QaN;OQuO+m=sOAfoUH~hn7#9Wq-SD?I#th4rr5D=t|W*r +296rk8v?_l8Z?P0PFZid=yN#>2Ubtl9ZA`;6-efxn>?VU=R_=q}4l)om7HLVF8bGSE>D8`zZ3$~gHK6 +EU7bs&7~4|hnIKaF6&TrebrKiJ$B_qU>#^rOL^3^?ODl^ecxmNVeMl@y&+jm|)}<aj`gU8H!aUp0@QV +E#IJHA_*Xr;mjJ+;q5_ESR?AbT@wo1+4=!MrZufzH*n;*g+B=M1FFCR0=*n{SsiDnXk&K#&(~{;Te2s +CFx?)*t$ug)VQmf_5{RZG?L*EnS18o8|3U;_CEOp`Vv4)=j~eG$B{Xe$PzYN<D{6B)bZ*NA@UDDhZ{F +cH+NI|*VW%+k2<C^)c=j{5znk^_YSZ5`yD3eYt$H{L@ZttB`hJzsyrd<gHClwkclxR1tga!8)_@loGv +~P?xV!<&qy4%)1Be+FPF&d4Fw{$WbJvS^D<4gsx1=JFsuRICq*l{^$UM708`no{3Z*5yX-^A%d}`S3? +QmztrO%5BVa^^vwhP&$azJ2XKF<{(xJitV344%&d`y!kZtOL-f4^Ztrk;~r88O1x~sNMv96$zL|#E0j +7(AuvJ8?sEc!OsKA0G15`H(;g<f6Zl^n9KTAV@B-Ni6G<Jsdgz~Gu)=|ko4`zeP4Ko!0Z=#qwZk9kp@ +-*RGyATQ1@#1Buu*UcbK{A-&+UR=EH9b|sXfrA#JPNhsWbZ{Q%?&R^2dON7KDmpmw&zuwx)?BmIWcN8 +UsOxvg_hy;LgBk87W>$#5fnA=)4p}$Kvi>%yjBSEP`nUhe;7#w%7k`ku1B~;Wuhw38`hCD$==yGME*q +O)M*`LLG?9<@L2DiH@97GpX*kVXyR<*~lAsHbbRc6*3LzLM{{1Mv<W2Ur(|Kcu^xHom{koiE<lo4l^C +K|b$nIBW9GUL_(9AarHF3!M>6*E>Mt>mJf$e=v-3P#ZtIghSxRZs)&r@v9)X$^`csa7x(UndaIMwDh9 +K+|a1yM*It8@2-|0Nw^cz30T-a_=W)&*dS0=+W5M$s+ib)<E=cYNv6ZBANwu%!A}e&zdL7rU1^-nd4e +W^e9mui>SA#<tMUb96~amwcjMUiW-p*n+|p4JPALvPVe|5k2ydvFS-+PXfA32y3uiGT)O}?73U;5HvA +P((e(k2aUpc`h5XA6~E%o-t<Zbz12HF%ff*IUk-!tOmokWdIbqO-L|8hWRMrqhWE;YXMdT+%~kuY-Th +5FxOW@6K5_)?7rYXSH(2SqqmG{GN<a4YnJO`^HR1>CqYh_-W+Z}>W#A#(qsU`u;0!wSpyGvsh!<O}Sc +F?;kIb?2+B|oF-RFroIU!n{AS6KH<OCN!>1j2sYc7Ygh+`=bFEcuqPWu<sluWU6ysGn6UUtB=Tv*}t* ++)$xNDS^48M1B=!XJyb2{<uxexIk39NFZNR<jB0lTPeMfKiJ&|F8l=FcsqN{+a=1Z$TSud$)}7FYMSn +Qs(5MjVGtB@{Q!9;iz<X$~NsMD(*Kr$m~olWUmWm(SlhN`X_LX-1S*@sNm|2bIynIQVuyCeEwqnRj8& +YT5QK?Yarf=e;#5fK7W}7CQ%>e%(CpQ>$`~_MIvW^=94RK9;jJgG`o^m@Xvsj#fm6*=s@hhOMNqg08A +Y-rafdYTO8Km=AFHZdT))DnD=Z<uX)P}I_KUNUGw^XP)h>@6aWAK2mtd`vrxp1BJf=!001nL001Qb00 +3}la4%nJZggdGZeeUMX>Md?crS2aV{2h&WnX4#Ze(S0E^vA6J!_NO$Z_BISBzJ_B4}|DNf%e*%~6i5T +lrMh=~R-=j%#lNVaeeV776e$pjLY-{rB`^-WZTvNp@1Mu#)o%nCa>1>FMd$G>(stUpCvWs-+UGT$P=i +i>?tbZeBc{h^n5;_fj1nA0Hjv5wDk0ESlA-xvuIfF>BUqS$9G$o9${YE+uqdH}9Z(2@jjK6q}}k_f;) +A?6~c=t;_+;`et);Dpc22v+ktXbX8NAtLc++rR34kqHWfqD7bY|h-$rQ+D??0s#$G2S@6G)j`Z_Yb9D +vCn18kg!lv5f#XDKgn>OE+v$rL-GQiYE&Z<QvTeYKc4m4RQ(`8oHO<m2(RrQN3>T)f2^?V1AVN#~=rf +iiIrQ$yd{nkem$Rt}JLN4FWBoV|8oE-`H{Xwek&)o0Ps+HyZ=4q|Ea<!842{rh(LV8|qvG4Pyd(v!c{ +pM-?4zQm8Whv$ANwt!QJiqy|R@)5@BKhs)Xq>`{cp#s_y31MDw85;3RaL)Lsb1@5E>|iCy3MOOFqP@1 +@h%b3$L8e@0E?zwmt8Sy>aJ~82Feq9`j{W?=#A)^KF{Fq9Zi+Q`2kkNrj-jz|5xVm3wSD9S<mFI`F3S +{CA(sC(=8nXyrzdQ=-H0G*SH9#53NY5F|lR7fR*fSHqzqxm+#Kbo)u^R_4@4jtEWFaAMUAljOmA~TXz +LK9qzKO)XcQM+*Yf3QOj=C%!YgPw%lwfXK#yE{=BVPsWg3t`@__{&fov_#b1lZ-<>`FQ}Oc0=g*%$|K +o7aZH;4lonQU<;>8ayU!Q&Ji1TVk_tx!s_`B$uVpDcYkT;728mF|62v~?Q?^^slX`5eU{YrKd@f1cXF +IRE`tf=7MKWNc65%l`Ce2@R#Zm`9VHN4_&IzDovq~%RlUMa_GSNobr;;HyUspOxHPzw9*69TxW9-D_l +eeDJ-+u5>Evt}dR?!srU@X=6j;F(BvyksuI!)K@yFXpmTOSeP5qkr)X|A1T!q!Lr6^f{6JJR4u=6*vb +_6Fj3XE~tYQRj&XP5b;m)2Ku^X_By%$_>`U4G2Oyrdkr5J`KTyha&Y8L#rY@@aHEMB;R#@ocq!F()#2 +k8w5sw6u1`C<04TV>WeY&`M$bX?Jfmk>K_^#H;9zsP5C!i_6q51Q<eA}{i4b>?yX7fMP<*aA2<W|Ny! +Qzr@a(Fqx`ER?8iS8~um5EO!hFn|$~?>RJRggbhx`)XpfZC0`%;36Pz#WnpkB13V_a3h?1BZYuxzeSR +e@bx!QK<sRksu+&1|F?p5`ZY!X1wV9GF|sROsy~oO9(mnDME2B)&fBaI&IV;4D#df>T2QN1_lwRJ61= +{IM?o*0d+<s;2+W+Qy;>x)v=%?hltH*eRY0JlRG!p|N^1u*1?!1jw!()Tu|EN1!~Qao66QT40qbJVH* +>GTm(n!$5h|ViFK@8t{_sJf^=`9rE<GTx&D0%oB$l^L;*-m)olliQ}h8Dw59JTSW8{*;nltG~1T&Jr! +T6<H-TjpxqH;3>@uIY$58V3ki1`KsL)T6{CEV{|yx8Y+Y_L5IiB7#^a!y0i0%&py_VfnBNHZwlIKTgU +qW1sXLvpG*Ub!upy8OsWh4-VZAdF?+~(u<nw<m?{94v96p_qUG7B*T2g<tiErcih*2Mq&k>2a-g=(;B +-ayr-ELuCN3&I_6p7X|+^r=Xq*-(MH#kv25=H_~ZNM_1-G``2ZjUo1HJl!nsF-)vY`ZF3v1uCw<n}cE +0T>!11Xu@H56m*;Pasy-j!rf=+4=nkUtj!`|Ni{m$?q<HKmPSdV}3_`+n~6p>e*^L2b-oAC7Of9O<BJ +MO2eU2!oj4)4hX4r`Bn-AmYk5~YzbD>YNY|G3T%QIP6rMyWu>?V1cs=DvlAE*y3!DGo`d}fvK-g}Bxb +pVx8|T&g26clfnek*n4;?v(39^st7=wR6BLJM%XJRN&h@eal$LU}F@QF*L75J?)B=qxBg?Tp(~wS0*p +O9M6pr)2bXd5R)<mbXcA_z)qYO5+ZDj39(=649Z67tU3}hNvrScp#6x%*9J|<rKzyL9={gn&wv?ne82 +9ECMP3>cCH5%-zH5w;|dS^NIwr>r4<4+%dJ_%3B?EuT&3N%+&6|e{EvQpstJnkHlmb=?$ySr+FpK4DB +{ll;y?XC_vP=m<DE9?0vfd{%^uallJx~%H5y%`DUI#SKHok{xpvVoVtlvUS5Ay`93gdZ6>Ogb(o8y%| +wKp0}!VDLyX*yFugRo#u=NAQ2p7gnA`$@_9mc1PC)fLK(rVHyCLpg-eUu2%HFxM8U2fcAqwD=lSym3x +is5h&M}ay|z_17TP}6ASIH2mob>?-fY*w!A_cU<_htF3PL20`mYx(s!@Ff2I{YVcbjN#n}t-+k0P!iU +H`-<%wbKlZ{sY%8p$reg5#bj8n!CO9c|AMac!^&@wF3QU|m`70v*ZMndOz55^?mHnLq;op!uk61TFR& +mz5Iv!{p6;YuRNYpZ_*m}sgDQG(>S!UeH3Rk`?<rMwCt!C-V!=gEBy`brvGWJ8n&q0TbUb{Z=KD0uTC +ID)3ZB1J7j(SRy!@E~eEh(-EE)Z2)UsSza6`_NM~4L5!?MPD95Q~#ew_FU4No_%r|ok_G}DM5_t21#N +z*-&bGW+{3iE-sP_`7O#FFk_@WvGrEPli4w@&$s02%iWAlS^q&RifyP2^<&d>0w*sTw_`k@K>-zS_}_ +1EgzP?Sn56!U-cMBU7vhZ%je4P?H6bC9!G^0A0f2sUZIyx`vBE<`2ObC2lQuP|2PzV9_?V?uiH>7v{P +Py9jm1rROE}FxI1OP2q)q}_nxheMR8;%S9&Q>&2@QYj&n*i55YL})fYr4T_%Kv<?}+a~c=6#@;yP|&P +k_$j%^MD!cW4Y8|H!Y-YWi>6HtlHyYgDRPRgFk%njuSo!YHXZoDm?nX23zmC{wijf6za_?szmtC9y-< +4n(L=2)2Wx@`wbaS!a3)w<AqL<VJ>eDn5K1X{U0=kH+Jp9`)gTDa`p2&JW+9L1yUew+tJ;?`)g*?p0_ +Y`Vc367X^w=2mj8Jb|1Xx8+p;>N7%5W!)eq5f+Ml<lk|`72flT&1A#6);3_TW0t&-8earQjwW4E#K`1 +Yg-H8y>*r%PsO0)dvIUJk_wSwcy9jCbN9yUp9wI^T)Em1Rh%{IMht;<=X-rv7R%uTC^u48{fqx_d@Gu +lsG14+P+O)uUd)Crt7{*U#!DaRNx!qjM5{mE+|Oe&0&h8|DGI9+&DGtj6%5=^ZZX3MBoPN<1rO_S&N5 +E_OzuG<ELm|kL1{6&VW_u=DsH*4VU0QN{s+OSBkt=%;RIqjz@WdJ?4^g2t@2vKLMSYTNQcATcj9au!R ++flj_2+)u@cu@Ni*NXiCFscG$0S-3cux1M?rCK&kr$fTdM1ZqYf%cdufgl?g67Xbj(!3Zr4f{Sp1E#l +L-Qkrxrt_{@^k)lW%$6vpj`uD<{?O0Pt~rZU8Y%px-+Ug^I8}j3_0A90;O`EbbS@IV-H6K@ZG8ZLHE# +=+xoo9P1XwrlM)DGg2mf~Oo?9jqWo)bNk<h=|BZC6z%n)}7=RF&3AFcGp(4-l1vKD|hY7W-_g|Q=he) +rkHoy{r16MOd#!Nn2fdmw)02_}Q(m!%8wx|K75=TArEGW{gLpSQ>W74=`|r_?G3Ex!dt<sxY9MuHC9? +h2&E22}X?JoB3VDlHIQi~VP3Kl+2#Z`%U-Mjl<X#PqDXz0ol9<EU5=#Mq5=6x*O_r`>A149_^!;Bi_s +nOGy&kutP1v=_^Ydekvdzefl#lrlcj2m<B@6zXlY*??>&`*OTf^Twe(Vh0ZU5hbUvsq~eygk&dsNL&w +u8GwyB_nrcoAeX@yD7Lls)fF81<z;i;l)%f0G5GUjHVQK`gRs6=(@jT_iN!-lukXPf3S#aX)EJ0QXhN +ddcD^&{df6zc5ktojT2^|-Y~N}km7<o{N6f0K!z0iE(T4cb1!ifXlf6SF)3e-{XaUyN>xrXHkYngkfK +Amc36`wb5fFAlo3n2CPZPkKle>$tM2Eik0efCoN{dn#rS!%Lx@hc4kFoCg5U0eb<e==xoj`sHl1BuIF +vdsMWm{`o7tT*&*trgz+Fs~N+fW)%3oq@k1SmanZo<?EI-;KqN+{A&YSy+0HF&#{aMEt74MvtRdjXp= +Sr_4?Is9==Cx2tesW}*ovP&sz<B371Bza%;A#4ap&UK8|G!&>&)#?T`2s<@sQne;Fi07mt^^K>D{pV6 +utzPzV7(mtnih1^sVD0FSwEmisQrY-8hzBpsWe&}++S4d<H=0*!R<^_)b>k5{ir|46lDU`T@MW;I6LJ +?lCML3VEl2QQoMmg5`m&t8^|)Cl6hyKNH>Z!nk<S1{(-w78%&RM@&?|6$p(Tn=w;|~05itxy!AhOmwb +`~C5EWYYhE|1XWdYHHVg{lZq2Hrt2*OL)^LL@QbSSr{?iJ<O#Rn4El(2v#h{NM(Q!3{Ql`GHRg>4HhL +NZ?cDgRGo(D=CDor?QAoGaek^Ab+4dhRG5DkA7+s_LzbRHtYq5<m=}dssOf_+%o#bPC*2AM4L!EpNOu +dm+6gSu)gajGlyOD>z*ARw~w@8DP+Cx?^`Grn0;HhmSu0p8iyeL0=6b=&fY5Sx4AaTWE0jW+7{i`)uu +l@-{c0m`TYrdW<3n$T}c|Z1@S@Yq{m5(g;%x^mr3NX$OLrKhB~Ulu2oM#3SVli#cx+a&P<)2T1WDC@1 +L-(Gnhcl+senaFR`Buqut0F*}gaa8}RCjoPm0JfxIyeY$O2SE4izLWd}*If`@ev?`ELrUVbCqQr;8qW +3tmHkZ>GYNjc>;xT6rI+=`x;Vz#O5Kj&jMEa-&sTk1W#575V9>~f_g0$hY=y}*Rpb^ERynkChNMtNJH +qa<N5;~<6O|?Kzomia@JsEF;JjZ+i|5IEN)7#LERt?D!!U(`0O%19HM$GHEjjob11hSrPIsj~oqs_n3 +iGgp>orQM}!jZD^8?gquH}g+mugDm&zeBAO;ycWOm|-Sy5rDf5jBrZ*3=<m*+yUov7~0b;#3P{5&s*H +=$O6d1<-4+4;RM4_IGBz7kbH_5oHyZK1@=z_AfyEMTsI)f6PiBbFhSEMm>~X0^GS~h=Xfh){C%PTw@S +R1BD*X(pRxF6N^g6|xgI&3L^`Oh2cfV~YLFdTl<pdjQV#$MrA3i!gpy__7S`eBIt&gGAvTRLb=$K-Hv +w=MdDT+<OU!E$_4jQeSVC$_Mp)Zyua=RGmtJjsa3U^QJj-#6tEJK34drhCR@sexnq~X?z-{vzlZXC5a +tzHEbYrD+J{n962fLX3{pdlU7*r&%|C118S#HTbYb6SKC$U#*M{ZxR6n^er;0rYAa((gYXXaga!~DIJ +5ZW>(dD@~SQmA=Z*LaV?rd&HTwT<RONdaP)+5R)5&nP|vKBjdMWulo@_xv1_FPKbc6WgLJx~B{FsAlW +}p`57k1Q1MSTM|<en&P?wA#ussuU)&HQ80w=5TRdoTa%f`-Fv5%T@*Mry#y5v8RK%~p+N|5c>lZ!P+< +Sh8+RGVTV=b#uVnXTjPzg#o^%LcX(w#|NY&n+0K-tv^Bsjlf(D&$;cdFqsTQYE`NYoxN4cG88jyQE6$ +3=c`tbu7$Q=yf#*z~RN@(5sLS>q^^!g)C!+%cFbD7$|V*i#eV1j>z4b$Q!`84bp_-}j{+AS=xLuGA5i +l`;2!>`M$i@pF1bZ`rKK<@p6q;p!R#z@{;xb9QPLmINI#O%<2eehd8L|wj*jx0072a9f{Drm@aj9)A~ +OI~D=TD_=R)s1(UsKsa4s5%4$jh8NB<KFHzVdJ*L*_UC<qzsAM^fEw#2X23$2uZ3|2icZ~8iTud<`6^ +DUo;(O98@Uzlq-`_sT90B;zx>*(=l7s3%n>|4@ys*1BSBnOe<!OkY#o;RBX-#%NQ=KZDS5UX!0SHy<M +BVW2fUg%AGJ>b3RS`Nd|YsUtl*G%9+5mInrx%?jTe_k*G^acVD7VPY8~}UF<tXKW070$PcG{blXh_(n +j&Uzlqtgq>?C^0@k}Xoa-B{sFkPMzr8A2snb1%Zy!4-%H1_ffTK(9`pUv}d4tmeRFMKq6v|h{QWO9Rl +h|3Mn=Q-wDm5GSE|c<hjrpz324I;uSb#e2^LG`xjrxo4;E`p5`41Wl^cBr@JwfQe-eTUu2s+Hifp%bz +aX%-D9oL39+GibxU?Q(K{`zO~;Cbv+p^tvv&?EF)Pf!(wp-FA@?xiAq;eX~5^fwCjX>P)0-0h9RI8&% +Zr)ET2Svc>?W^Oo%ec=!`&gMa%!p=+pi;V3tP5aVPnv8#{3<nFR{Uf8N{NPXPf{N4kc28>}-pU&d7&{ +d3PhXER&veee3r!_Nds3Q*)|b2Co)pSYwl%Bqm=%upJ?uba@Hc?L8!)x6wp0~{q!uQV5F_z4$L4PfEQ +yXn4a4aTo>|8S4DNWoIiR+)CC9(%-^w}(0H-Um7hAnAS<a0dQ<<xZWYo14CCP8lF@kp}TNwrWJse&K; +R(Sh^IR22ow{aEP`M%T0E{nD^O*!5LAr*ntsoA`0GeYjxx+inK<+6|Z)#wN#IP_^#6U4tmAU8TIeq!; +ARAC$3MUV_bDc3>Q6@)a?ld`8CgF*P#&yYyjc{otT=dNm<CO#fGoR>OVuPZ+{z=QP0{Rdro4{ZJrLI= +>u2X4(tuUR*Q4JtEIH{2^n})I_cn~C?ti2U|%AswHJ>U!|6;n}a%nc2ztafaVaG-7O_fPcI6TuV@)|o +5if#4>-p?W_DDuVvR*V$?J_!qGr<Qh0b1AN|9B`12Dbm4+(c@%4mmL@b(KPvupuJblcj=%C}6Y9{{un +iQ}F|oNq8WE2+<t6a0Nd@)z<9UOg_o^cxhATK=L$?C?YRam)s%ESZA<droc?Wt~`<q#DvMV9w?zF2ps +-RrFC<I}XS`=#gb{ROoh8R-c(Q{ZzyyugYmE?2`Grc2i-?TJqQ*YOT1M;q~TM;h4(^1_Lkfv6wo6;h# +A+1T_$tjcLfxo>e93~@!Rxr*cM75?ZLGw)B2?!b=e9>Sat=*$RBJq=Oh>KXIQ@M{ne8i2#S7MwctFI* +3i@k6Vp@InNVJD8$fcQSsrD5sZrjRr4!}ln96HXYS{Yj=4@_x{2(^l~8B)cBi;~ourC~zOgRhmS7=NS +G>CUGls`ZH@s|DF9bzdO$I-;94fn#9ohB(SdvN(EM7W^gLiKVW#+`B@C&{NBZQ(gS>c|H8qda28!#z) +hc|owxg3KTKcpwMe}92^b`^m3-yUBQu^P1s6krVeX6H1Q7U~p=}KBkPG$66KjbfPseyoykRDNhVhP7q +h^Qdt0mq9>5+8Rk%k#X!4Gjld>J>yA+c!u4Y(o@Z%@P7=vqOX1~8K&<(<AZwCi6J_4Axa-<zQpQ`%xV +@z`3JrIP2oMJ11er<z3(%ys!bJIDlJl09p#yd+kfqgIIs8#%-D9XO;fC2FHCo6Jo>p9vuzg9pQxy??q +^SIL_^hu=$0bWPn<J?w630$6-o^%L)>;%_^89i;Da-9ddHX5L)atEQX_7un?8<3x2Dtqa@q`41N6$Di +s%`<IL^4s$7ye5Q`U2cF2su+P{WY!>V^P8#8U)6{)Pokph_GJ_TF8^1$A`hm2Y!vxNk5jlz6rQ}wB%& +3OR_iqxt-&lDwkO4B_&!8<o><LchgY;wx0ZGa5p~!u-P^nC=0f$NyJxakp#OD&?88e=LMCl}hAU~{^W +=4iE8eg_}i}KUO;Q!WA+p(<W07u^xdIRFEK{;F2)z4e0v#cA62QPGh+JKy(;b!UvZSV>4h1VPj(l&6) +;<|7(4TIw0aWT4}WGgZDqg`=DM*Q_E0|k8!D-RTO2|`w3jn={1KtWBzi~a`Y!mCl_%RotGmAaGZA6le +{Qw&Y;z9Ewx)^rV)=jz6B(j{H2u;DVDS2E`0L<@|wPuNjJp$%Yl)z4%INsKvj0X22BV8SEfl?h!M*WX +n7I;e}nYun!NulN_OJ-R1c*$1WyTRy%O#!3{J8O-I5n?1CnwKZ#?{A3HJ40-JW_&f4EQmaxe;?dG^{< +zUJov`dl!KeiBG=2bx1&fhkrrvl$344BViBG6j6JZ)XiQ0c&y_!(0Xf@6~h+5yKdd(jCh1ZxRMs_gH# +U=bW+1_~rORj#+jyioy3lqne&2=76h~9FAYQgD~p34M_r=hI8`2Wgw)aLfNaLIFM_c0XJ*q#Jkl9jei +&ty8?0oioB1bm<~_%g+&nuS^CJ)s;;$CjE4G<#e*?>Yk&P74KHYT`Xn_s^Hn_Qi9(hBS&H5g)mN{G^^ +}Wy2c}hh#{_0QO`|9grm!t4Yzn`vq&=-ke5Tb(pBrP*F@wl*QP<{NgAP{vzct?ijv4^pbo4V*hn{mT; +(g%eK35ZY{4O`R?@UxK6pZP^r^1sCBMK_aDLguG2CniO3{)ltRnHsIRT=#fi?t9*R8z(LEbFKzEaeOz +of)=`P|ps6*qj_Zn;Qf6ll8#U03@K|ydSjLR$=(7+GOwhzWe0}neF`ojuC%b+O#Wm9bmGbHFbS72?1( +(a~`Sj@%y-a_^p3x1HNlY(aVYyw*@Shz^Wq@|eWCPqKS?Z;2B?m+|N3D9mm#}VpeOm1nf8t`rk>Zc^| +fOXUi<&|Of&y#_&k+w`#x<HGo0hv&Q*{!1;`MPBm4%I&v!aC8>33gB#aX7+swxgnrMrvy65broQ5>~< +P(<8EkzG!t6=Sm@`mlI%IUPL7mW6YK&qrgcQwh>J8euzN{xza@unuRu3O#bVHT*6qZR^J)MoREpI4?L +#l{0LCoK}(mbY7L48nZ)xg`O5r@Q9cd;O5rF4{y~@fC+31b!<F?e)5lwAUB#0N*F};@JN{iYD4D3kgH +Q8vKBw?jvT)g+%8LG+%r*Noto{Wx^V5__ch_6UQ0p#@<S|RH#*JecTUcqJmMVX}r7z8Tl#311IJo{#Q +i$^o{Qn~`XF>9E@&%Kj<i90d=kh_L2NnZU?<&=+QOrq}CU?ogG8JF3jP({o3FXY(h*jf9weT0*=--ZB +;R+kq0^YyZg@+guT{1TS&|fu=&n^3);L{#s&%^Fm$el^M%krMNX0}T2r$j)XE*!0fi}TvlPt3l-oISV +x>6`Ulq@(I`uYivq*BmhN5@mjkpUDy@56c*btKof5!(P~pB^AR>$tS&v;U4#Q_f(f24*Dj;wfbR_MB% +AShio*(;lmjlPWvB@z^X62O1PvbY7F^wmaeKWH6;CQwGa>ouNC$Rw~3A;PB9_ZlweMsslocF9Soj4W+ +M(CI(2Ws=Y}$#rx0CheuiIjNR@~fZkWuRJ}bR|JX0f{cL2x_=k+B;Qbxqg9poVlr|NhYD+cP-;Lms(q +FdFt$iShPGGOzV!ETB)X?PMZ`|#lytop&LyrW3e6RA^OO$inZxAAuXKuq5JVqM2txcgXpOl|&Jc5ARK +xI|6bWX18QMdpDD1e1f2^j&FUpL@yd*x0(KsalWsO~uT@^Fs)fo#;N<mqo0m<2Ihp8|D&i*dDV)jF)_ +`rViQUH*LHr21q!TBC9`Od39^!>>$a2-rA^&M0)#sC49V6`uO7rA9_iZ=ZoMVopoL~vGE87v-g3h%tK +JLPH;uNG!nS(L8i0}cT030^39OB?5M^(-Ev1?KYfD20-?|X$$2?Ya6)r-5FSaez5YvcPH5x0Z5r^80h +O}F2LL#d7T&F@y}Y}NZ<%MKS$dAAr011b+`}Le`rgK;Yb+6P@3lH$SEeLvZ|m(4w$okHA4lVR^TJ~Ec +pwBw1>gfA?irg}!g|SG5R-56Kw3qI8xFZ6T1DQ*;9*^N)r;5%#RXZvpX#TWG@$eB#TMem?KL!=Lww +(5UQK9-I%sJmPX>!Nhu9F2>Q)dIHj9uaq43sr6m^O<OfBR^TQtgdeweHM_h;zMI^EcSF93yll=vC;Q& +0Pxu~IuO`KpC`a+XR*6DK-u5V#HaeB`dB$tjA1sf<voW=IcmZ$ey$hpbv3K^?(XoTvySFT9u)p9yqH5 +S}Y7ZR5wkfXrv_dMM%)EPY7fC(xi-x*dl17=PORe_WazE_-f3gON!_s|U=u<K=`{|b{%{A@sPe{c;AK +EE3W4_x}3gnYFgZV4A{XFl)K>BSjLDX(3uQIUK=;6skY&TbJIp1{))%%e1grZQPv#aNNf8E|NN1%dDY +O=fY2tzs+ID5ZA!=CYQs<$^D@wmniGaPVq={djLO;Z{MH4`fR<{IGbBPG7A6n`uZP=4NYT-qE~9T`vG +aDT)pOHXYL=Kj@vpZ{##3P4_e!8)Tjq5itH?6`i2cPlJdsKPqd9P<tdJ?4a;a~5-stMHjuBxNr*?Ww< +}QOZ*Z-}tlTsl87IP$G&*h(Z6O+KxNO@drqQb)~TIc5!(#>>^2x$ELUbcNW947t|fn6f)2eJtKu^lN4 +AQZ5%t}<1ka&j-?IYA28gR^t@JX@VK9csOky?Ehd(dC(L~Hpq7$rUPiE%CDw!R?m}{f2HZoY@`3rFI> +8R>IYhudsf>avnh-(z^b!hMoE=ZZv91Hm7YKXW^oLz_7HH)@_N@TCdlL{nvbM&!<LPrV$3a!bKA&mVk +dA2Vui2>0m>FpE7^6*CGLPwEs=1g9^2*k4Ku@UQVWopDPX2wRQg=!+T6$}LL921XDnhZ^d)V6xX&GQE +FpkHAjwBj`Zg-}{Yk~;R8+Q=Qy)N1rbI51FU`~UE7R|)f&^Mo<G_R8@jVs(ADZS>R>6aFXE@Bz5-%R^ +sMY5)ctxJ;7*dn*+vybph^67x+Ttx6c>0{$((G7NYjR`-?J?3zrLL^VR=ETOG`V33Z9FuztKJabw-c< +K}i98)^{sMDMVm&m)EGCDyQ0YB-;AHWaX0?5UNyf$Yum@E-;ymu!l`*iF?1>jU<!)`74_zHj`q9&aIV +#(fZU_~BMuLE)NqYcUZzT*}iPyeN3@A<_affC(@WGt`$cRg78REb(kk#^9azU<Lg8vXM`2y4KnJB3ns +r=QSf^=KdUG0aKl-y({yJQljI>q1Qfn#DKOl+ajcSwza%y(tb-lclr`l1WfmlX}?+-nc&NO@lu=dX$r +By(}c<hp=4`i<`L@a{Jn;fMBnh~n6^JVw;ydhDMH{`anPAAC4PP6*$F7+;1nReYSL$T8&3|5|$W3p^+ +6=8fbd!Q3UTR-ALlB{59B44BIm7LegRj9BBRuK*JQ0w{Mm`V92v#!q#1m4^=>+S%bpA{I?k6qjXtazD +Q}vMqX9c-Za)nz<&o<p}Ed?`GjOd%W;J6p13q?3FbbVO05n`GT)@;qi?-3RP;bk8)wcPa0Y?n{8W@)4 +!lLQvHXizGISDYSg)F+JjYRy)(gDXn1U@b=vXE6?`m8Mg#Amj+EERJ0*WiSm~AZc1^{gEr~o`0>jPtL +AK+Q<0znQzLes(>}5n6i07x(1$|{CV%5}PQXM%t_h-CmLwQXZR`0M3$QLxdZ#NFEuK7CHo{#>0lDu%v +J(B?p4D<qRgrJC@USD1JaM%847zr5=?ftZDdA$sB#1M~MoS~Zy_sE0%{yv$J*z)F69E>xuoTm|Eo)xB +6gr9o~J~?Z*Al1j4-g<Y6ySmhg{sgV#h|~Cxut|5$ptt-NpmEBJHS~qX7@YpM(L??RP)h>@6aWAK2mt +d`vrv1<DE>PD002J#001BW003}la4%nJZggdGZeeUMZEs{{Y;!MPUukY>bYEXCaCuWwQgT!%NKDR7Oi +xuP$w(|wNY2kINzBYER>;jyNzEyS2o|Ll6r~oY=9MS_ab`(oYOx-dl9Cb^08mQ<1QY-O00;o{RI^Y*7 +9s|p0RRAg1ONab0001RX>c!JX>N37a&BR4FKusRWo&aVV_|M&X=Gt^WiD`ety0lS!!Q(m&sSXQgDu2- +fY?1aL`5AUDEJh@dOO0>BqW(Q#D6#K+HA#&BIY5x^zNK{&bg_bX~0U$_$%tlIA+CiEml&m*eg0OjRx6 +R;{sUWJc97Mg7;lQ>ck**K&ORbn;?~Ejj2%i0e*|y3*oVvn<f(Ay?m4Udu-U+C}F_fzdXF~`Ss=emOn +l%7B`D4LS#Mh`HVn3^{+kgR?>6tWDHG$b~c!jdOg7IVoeBHD&alcXdi@9B1De4(3Px2z<kPXv6Gi&*& +|wq9(C{_z?u*%DHLSO0iQu_9LNJ|Heg9tR9FL#B4yw__o!+LS~N(ZcSxZX+)r%JF~m&q400bFh3;x?6 +mU9&h0&P)*pji93(Agi+!z8Z$Il?|e~bN~FWDxJF3PeKNcNqLMVC*8Njq4<lHUYs&l<O7o<!4;Ou8Rf +&=D%;7s>RBcS|fM=O#dLn7NC)>ocE<w+l4Jn>r4|#%ajTryt7uk^7*qzl&MM;_e#}#x{R;NT>BiEq{= +E(rSV99${E8ynlcQ@h(pOLFOk=O9KQH000080P|F{P^H(uk1YoP0Q4FF03rYY0B~t=FJEbHbY*gGVQe +pLZ)9a`b1!6Ra%E$5Uv+Y9E^v9hSzB-0HWYsMui&&kNSz|Idl;|)?rJn%7p%#GzzNW~o}x%}%tn?pQg +-77`R_Z26e&`^#OcisDRszm|IXp1p68LX;Tiem<qP6@UXRVIlGo&;C<{I2wAY*Ra!x8%Me&jrS;<K=C +)nNETm-~uUM{JK7Cg_{wO(8$Tu_n-qR6rQwq>)Tro2e<Xi>9VMD?m-#f|1Zd4Kjke)Grh&7bl4#p&ts +>Dyk9O*fDadjx(`sw=^l6ZjhxtB@SAv<}HJs7$VN8j`=Nnw6kEB%@VD)!)m6hvcFFy5tRd@}Cju>sj9 +$c|h$Q9iI>1jN*&)ck#(^G&mZJ2Jz|OWC$z0jB%RQF?bzeT)p1#^fJC2oX6)l&1saD^NQuv=iWabo_) +9<4-WoL4*q*_@asW5`RT)hf4GSn{Pqkr$8nP9aSVdS(l+l%YP;aM7j_7jNzSqaog8vra%=v$n3no;z| +$F9Qk!&{iso|yuBLe+1lcClAKs-@Mlw)|s9-g4Wpqm78(RBWNa$S!yflkz8R%OI*?{?Ek=OmxvY-v;k +C;DtNPNuHSk#aTNZdqaW;}v{r0Ki?B_Ic{>~Ceh=e?yhStj{{Dp+J750~&2Ns5dtDQDA_u}W%<uo#dV +AO`l4qO1ukNOov2#A&_Yg|=Igm5M&e#=tVs>{t$G?|+u69M1_8=s_#eo$X6bSO5@~6w!u+-4rF%Wurk +FCs-lsq)4eR&FDlqunbQal;PI=nRPOD_doClGQ*lJocNF_G=cjE;v4GyL*PX~ohP*`!$hXZv}2dEGU& +OZCd882f>6xqzY8!w`}SBGIeFa!zk$w);(-jK5qk&UgOJV_qK1$!p;am=Caj<+*d7^rm!x&Ria}poPJ +IRyE4tq6ZZ|fLVqs$pCdy&`soX#j*jaEOGcE^E2Wke~R0JU*h@MUyOya7~1m2tpfxR1Kl5$EC)s<ot3 +BhK(87)&GM_vayU_nlcCJ5vedHK0!K$($xmK2|B2y{Qnn^25jOzc?Mnbh+-nNyZSs^S8c`Olx<eoFYw +S~3B^GG{KNb<aCVZmH~a0M|5MWEf1;sz4)5gKG@9zda;Nnd4h<26L>GMy#fD;Rh1aw)GEYD`>U{zr6k +kA#JQIk~x-)*TzMXrE@@FbsV>$7BruR<_lQD)=hBC%)mxD2Tqo4na9RJ1y&}fOX!GYA$x$e+Tb48CKj +J4^W~Sb$%gPauhopv^9US<P{Ci9yzY%WE_8`5lL-;5HRG<_j@eRdhxQ1I-l8^7s9e96@R-wjR%UJTaR +-hOmwuW<o-->L2H7TLF0?!QdxN_+9{|y8z2#aUH&tiRzzVnKArJkvZARLFVD^I0S#4sxjmIqLa&7>t- +e45x`hs;4UEFphbmkuwpb-3s6uHP26<Ebxmnyr6n@zdh*0QXWINfh8H@ajVjpmjj+Lk}Jd>#w*=Car; +x;rY$32D<_tpoYy7He-wPiV7ns+&E%S0NWD#ecp}m0RwAg-VxByYNPm7ko<yOQj}yfqjSCo>hIcctS> +L#%es>^?y%tVW;)FEc1=o)EuBt55G@V8`r;f?=}%wYsMG?NVZ<!wYLNrEc@#5?SNp+bAu0uE_qey?R? +SDM{~%Pe37s#Bh*+5iP;s`Zt5-0_D0l#=Ua|i>eOqdoO^?mv$$689wlEry~}`Ja1;KzWO>`@OWp2-tq +m{E)~Dqxr}!)tCyRQfpj^;8FH@P`kf@JMX$CW8rXByM#Cz@OcLBw_5w~ipjVN3PVtf<P3IQ3hA%g9S8 +i^`rwGS#n@-ncsx`4N?{U$;N0|CA{ILpl%b>@UNbHi$HZJA|Hv!pGLeVha{+c&NVuCD3KH!}B<;82|q +HT|jLWd#?jmB}vDc_J_6fSTO}Yo`%zL5Q_ate#1)4^hRZl4tl@iEp2Xn2aonoI*4hzO&#ZX$~~xX<Ki +xWV|fqw7{1p&akcpzIBR<rfkY!J;0=SX$`UBm8`2Pi0;*uRaS7@q$Ev*x@{7eCKu=LBHLm!u1uYn_f# +w$g&kc;EqYWmu|9BWYdN6QsHq04o;Rvm6iS(sQYAs8Gdial=Akq;s*-xv4B=eHSIv0JlN*d(_XWs;0v +gcP@>1Q}>F!KBdxmtn-NEFiZt!~h-?;7Vv+KE=K(jA2eYfjL+mPL&<N3Bb1Wa{L?oNMo4>a~vmkn#b- ++d}_R^V^EM!}!8-$d3?Kr7GWd%AlX4La)eui343h%v{XZ6cZ;w?l+^de|gl;!rl<Wxj0t$7a6$CWF~- +E&^@e+L7Y5Z7$qcDq`HWcsxl?bhS&0Inb<C7jQmS0r-CxsshBWO>!&jfz>KMlosV>k_le~Zp@{ky*qd +#UCPTA^Gb9o8_X?v9pBQG=#TgUPFep0P)h>@6aWAK2mtd`vrt_-60em50040c001Tc003}la4%nJZgg +dGZeeUMZEs{{Y;!MWZ*py6bYEj{Zgg^QY%XwltySA@<2Dd|*H;Xb2g|6eVqXooC=hJAMbWhA1;ru=2u +2#mY$;MpQt^6&{CkI#OjEWJ6m9un$efuo_rojrZHKVcQtG`>k5KEjMdiTmbT1otKrq<qCv1SzrEU>AE +l4gDIB(dy-e8qoL3`*9Yp~9U+O2fwgjQT`Zn(6VWm}_L=tNhsCsd6#RmbbU_#-*2dMBg>(RSK6sJYTg +)Le=$$P{lUrsNh4fmZmr#^4~@T~pLtHSdklX3iowsobISDULQje*F0(yZ-S0`Um#Q@3*(#-+q^6Vmou +a&VWupog(}+W?90o=t{UT`U@)h%(ASO+*-KNrseKhD`&JU^uwQ6yX63v=lKVe9U7{=0SZ1;!~Y=*J9y +jgM7;wJL$T0T$2UYM>$sHIR7a#Nd^ETPMmY<|SYc6aOHi6U2*u4|bE_4Wpp`tNH)AmVT>0d14aG65JI +dsa`gwm}!sXo(R^Nb!hyYZ(=njMp!V|ndC-DX>x?-8yCZWw+rwT{=sNmDBQvCQmRhfb$|I!lTr&vHuL +vH4(G&a*$;X!K|6%5issKFUy4J`v>u-Obi@h0`A@IQM~+8sTH*aw`{iNVf{Zsza<GWGQwIDdXAo?l9M +ep%+#Fq_4sDWlgg?u^lwUs}e>OQqP58ClwgqhJjGTbgwz>K5HjH!-0dExSb468mt;h!14npe>%b>}kp +!H;;ZHUo9tPIyck*c+P{LiXt=4?uFYGi`8N|omRtz#R)G>3+GS1S}DC6r}1l8t$ZDh{|5@CMttgpK@0 +DIvg$oISNR0#v_%T{G}L2oofNKEl#7#?=tLqc*2Ep_g(q;*KU=Xdq_sqDlI8SgDCt`w-ZaICJ(V{oy{ +Ef1{Zv9V_&MsqSMctBqI?B^P(5|;i1t*VtUbb>(}UwQG{V;0G=NWN4sPf9l3NH^^ls55y$5arN4;9CJ +q{)8mt-#K(5*1;@!C_eALLnm&vRZzOMS$?1bm}j{?zm&2-V|6FrZ$(frbBB&NOPQ$BaDb$smlIL)VP^ +#~vFtJ~kuyM8Co5D{B+hAwG0rMH0@iy>yhpb3V*)UP5klZ)(h6()F2o@<l#pfwNr-z%kv$fSHUL%GXg +N@4SsU=$vCF%kqDOcn<e(V;k9d8~Wg1!oebGGuehN5BLJ@+tfcHxDeVa3_FQ)Os702_={SdD1Vv#4Ny +x11QY-O00;o{RI^Y<;wu-*0RR9b1ONaX0001RX>c!JX>N37a&BR4FKusRWo&aVX>Md?crI{xg;Py$qc +9M?^D9Q_0gzI1kCfhfSw*Yfkpn|<Yi!Fiq~YIp3<-tZw6zeJ@tZdvZ`=gef!Dq$&uD8G3euONb7!QY5 +60*d=+3*q;8h?5MKGDm@jpqD$|xc@s_I?6;<K&slDX3xR-Eq>khR%t{-O^^XqiCWkT60)*&2LsXI&!! +D$*E0RTT;)JCKaL)8cnyO2$o%4V0y}n#(dHG|e_9wS`6-EQwtZ{<3zR()OA}To1s5$30}kVGHug;qeL +nIEyocdXFJn)*?XR&x<)+{soqU*dsW^=xeh@Hm;gZ=4M4Od80X#O@76!{YaWEHB79dCGN|{1)<<JOD9 +13PZoag`Uj_YEG~;qytJA?9?6TrH6jaRlv#xVS}7lT!a6E&k`&)TTViDlMd)!jJ};R3)GUIJR#&Y^<3 +%)Z7VyFttTM3$;%LnP7Nf8+MsHc0kqRnh7j#oR>V;}%<`z3COGa{C^&PpT0e7s6saZ8<8lAZPW=zHjk +?(vMko#c&Q}s=TG`r2il~Jz7Sl?lNH%6+oW%jh+?V>V;3$MHM?(`ngXe7~>TW4EGjCF*kNuInQ@$Ugx +P{prNBI@z`P@hms0|XQR000O8^Hj4?CmTqdEC>Jqh8zF@8~^|SaA|NaUukZ1WpZv|Y%gtZWMyn~FKlU +UYc6nky;*y2+eQ-qU!P*n0V*=3d9hO;u0q|rUf{bJbzH-7&?|f{yCz2xVUo-2E-edbzWdGW^8JwQ6sV +9`D{7v<nVp$k#c3|2W<t$kyUK-%A9AkO)dLB$*;0y><#Fx@_mD+G`bgua;vSS=$RvqxS;ftz0>%}yj| +20$%^znPWX2P}&~c*tWt@QC=AbG8KfgUWISWqydv$XD{`9BwY0flOVa4Rk7``M#Jk$X%^g1B60B!KhH +!4r!_7@rGM1-yH;6ZyccZV_&K~mfJBW(Z06+~}DivGd7_#w`wdC|Q%TUEU8e!2K1c=Pt;&5yz5hx7B( +^Z!h9qW!7?7LC`!_(b5++C*s<FGqwfjBiGASN~7Bjs>dl*cCa=u8KSXkA2ASX~WaCCe9*w@I#R#5NaV +SQE#u_on7!1OtD!f)?BTd@V+&lX0utCaHZH;oZUHNaJtrky}i9l$R#Mqv|`+*SHu!zvl=<O;Ncw_!A{ +A@xnc@6CBQyho>dZNW)Z=X1!x>5LSXa7L?4o+SAR0#4qq<_Ls&4SWlb826qL!P<8zUL*CVZ9zBa&KBd +1s6b#qfok?^sI(Y+ww>b1x!Q3EN+-!N@?b_Y=)fvbjPgoy&&aD_ZvLqN!xO^GRSd?kyvwp$?*LtcX47 +V7xE@3Q^x8L6wkC2*_t0;TelAY9NNCYDUE0X<ZrkRf1Qp~Q%o7R*^o3`R*n7P);X4Y~^!XG-%7B_Klu +A=|7$Le0-MSaFu3$f72e^uk<4<j_^Wub>C~g1t9%s5sLclLVI}{I|=JZvVp2{ninmg60v|oGoKWA`eR +mgfXrow3%I;T(H;Q9Qo{O9V?ddExUyl#qG8uiZc?lUzxRU&0<`mS+|7-l1K&-0M=#AR~{DHj+6*gi1d +vCN3UKFT<@gMq6`wP&5{Z-!##`ELRQjxEH<&~=o%+P#3@5chMFjw>o%R=kz@eEf5dRllLD&L*fW?|mc +0fGV@_EVaGmvlEDL}H>SS21whd@LJ6%qC$xwDjR3<85D7|ti?&FAj)MT$(iz10ArX&y2TyLvfWAC90m +5Ic+hnS&~r9x6LahY=3r;KNj5mBZ_Xr2y&Hr%}n_5)icobr@wg0G;;h+PWGy&*6iuo9<n*0pBhg<NQc +tT(K}75W4BDAo26a+@r8inInEV|nDWi|xfJGo6H)zGf+&B5MU1NS-8HjMzPt@Pj4~|IN`~kAQuOAb8- +E8h)pKwMre8t&nGAHD@2r->?nZD>h^+_NAH-vkxhKtV&X=O{~|>{D1hGx5_5HNZN6`Z#($kopoA|ZwI +6(u*B`5$#j33O)Ohu<$Ep4(nn0(v_%=;b1V`~xj<}ihv2ZL84p9uTP$mcV7so%t*LUtV98kq8@v1bo` +tn(J=2>SjbAq(x<tJ?i<JE*h-Uv0C2_aW7+Iadg_1g-TgDYRNQWj1&+xf^-S+Qbdu)0<4g;ph2WAX8J +~KV2=iXq)k(+~u?coCVKPoXgM>?o!pY0I>Js-oUn?*85wR7h5I>X}AXLs(~D&mYuX)=b;9FsX87}Dyx +U3$=k%-H<XXXcoAqw-ImYxRSzH#UenbuzhLUz>*(?X=hG9~Y}-OSIb#2X=sG#iMfbJ4y%i@%s+IrRaZ +RAHe+5+gefO+;eo)7EcMK29@y?o-UaR4TjZ7rnN7r9p%pauk!|55=lj=I^+4bICvX9^vP{!L?*N$?}p ++9d&lpvSru4<Hozi5ojn15$0#hF##W91_N>(t5@%sj;Ix8u2iul3W>F)|aW`&+><tLzam|nhL_&U!9_ +ef<*tI*BL!~u+K)QuD`&bAK4t>`MLA4km!{D)Q&d>3%!9LY7{fqoe(?V2)*gA2DsA5^C)617=19mRQb +=`hu5aF(*Fo(Wp=UeN*Xd!A^(NK-T8uy&c>*RFP&wMLqN=qwXPtwvpYnX|VI(0d&50cLxWt%dzofJbu +zZCFcLJbt#P1gWlUPbKIW=`z(MA<nOR^C-YMmG6qad0OS;ZakjvY@uXy*{|vQ8xpco<yN>3-eWqGs@G +|+2r!-+CW};>|+6Pi}PS9uBwME%y$P$CPik4E@!6#8cr(Q0$8nT2e9dw8Hc)Cj@#9d^XnI1-5|-abN% +aAH!t1!G~6vYyMY+L7r@jH>lV<r%2&W;xNh~zez7;~qm8#Sij~g{wZD?0$en`<302%iID^n7(e^P&+O +&^jGb;IygEVFEpMn<Mj19nPIOh%?I}U!wKZl3k(A(?3o43QGztP*#!Qt;|bmSs-e1G|B|J$3dT|3fEf +=CMgIA*2UyCIr}rwzs7p#2%}c9<VLJ{0}QJ{&yD2R!v|f-jjEr>eQ_w5DXuU(7vr;9kGFsUG~JdN7$1 +F;3u=c00|fF9uuo*g9`&Bs<2_1WB3C+H&C`R+`ROxWm3sercT<4TZ9uD^`^}zn+J7xwlyZJOcNmer#d +nT>m$TX=V4JdWNczJ989JU6tc<whMI}dyvG(V|`$ss2zscv+@_h&^>tL=tTwak)0YmUTh}y)f;`Nt8~ +Xupyy&!I^{9@JHwc=x**seA8v-q+e6}|HH7ZQt0RoLZ(W<47SdwUF*bK@r3vHXX1rw8j~~k3iVA7msh +l)!j20MkuhsJ8hw|_tvV9{+36^g2ExXIi^;8!$GOvEbICdDUCyj~aL1qWiQ<TGSv`n_H`eVUq)L@w40 +Sm$kls>M%a%cYsP)h>@6aWAK2mtd`vry%ncI!F;005@~0015U003}la4%nJZggdGZeeUMZEs{{Y;!Mj +V`yb<WiD`eb&<_(!ypWR?>vQ-UOK5Ghutdeu*=Sq_5hIsPGMsZVfXLtM^dt_+seg;591GLnnpdR400Z +c0hyEWC}iR2#et737y^n<5!g8TAl7OwK-f{Fi~-Vt^1;&)(g1isAFvO!>;{Y$#F5WnQWQGL2AD`Wk&( +A;Ym;F;p2el8Q{J@?ZS7g2rIU8@5mp$4ax7Z+KZUevio8-L6m58&`>j*|Mn>+o3d$(_sRD2*ScVbBF& +v#Y4lon!xm*=_GK3zP!1`S3Q}#uDNO?X6v-kmx{CyvUms!1>Yu<53dTBdHO9OPBk6yZNJ+DlIDGZyh* +;wupe7^x$&3~{3mi$fknQl`@Xesjz$|n0!Zc&SZ|DgJCi>I!7@VJQn!WX{@U$Sdl1q-g(HLivQ*X$Zk +iiJ%<eF9KR0|XQR000O8^Hj4?!_tv0eFgvkXc7PbBme*aaA|NaUukZ1WpZv|Y%gtZWMyn~FLPyKa${& +;b7OCCWiD`ey;yB;+cpsX?q9(rA8cbT+jS@g1jw*1=(b{65F{;zqAOHdqAfO*sFIWuuV{b!o};XHx%) +6+LX%qb-SPO`-E+sNtT5Iy<)!t;Xg5>Uf;QW&%D45aX}&0oQxApk>1?*KCS!#vc(jvwVk|F2d?!eamt +JYd4l1$8O|D|0)!#D8MJC6Zu*oyCla7~GYqhRb3t^pP!m(;O3h&*WRSwT{p`o2f?YPPl`A}<L@2_7@$ +p-IuY%-jqmQ96=JkEbqJX0>Ng>z%G>NteNidmV6*hixDX+#DhxO?1^-xt8Bw)MxG>o?KGZ!a!>k8WOH +UA?^ebv9F*iRH5y!xOCbEnF(+XR{fFOj>qc$Bu8MzYJ@OD8L>?ONhl<ILB_KuyJ}Dn?f$k`h$%9@@y7 +1I5{~9|G&s%QMghIFCFu#gxOelWpa80Za5iJj>RV5sBH-Zm^aJ?v%E1BKKvB6%%o3E5*8A<VX>94ya? +~~#M-Tzmkq)gX_eo(6=SD#TzM9b`PO;+t`Q5tCajN(EzcV1T42FBU$RF(b}?v#>eJJ65nN=VE66IanA +jksO&(A%2%`6`<L~*T%~SSssdUmgA!jc)Oyo@1ZJEj3Gv|f%j@>JtvM(!?Cd<U0t!2lC2*J>>q9u|KF +;Y88_zRYrOtM5-IBD#jvs=Tw-FH3h*nw@4Ck*L^Px1lC0m%{-M~7*WJYhR&9U{*=s;^Q6AOBEwYAr2* +(tAn<C+)6s=TUH7ZBq~D>A;eGD4mC!9W!fSkm%Mwz@6`XN`M9&=tDq4urG*Pqqzo(K59`!+P{7GwOrX +4%SaMQ(*eKDj*w5AAi}E%(6)>Dm-(_UL{Bd7gFbfcQ^A5(mm_%?Hja}3uTWmp7AB0-QyV`>^<;)e=b| +XUqKB<J*dnj)kqaiD6TKlKuP$$y%*9&EWJMv)*`LpEuE;xpUT6_ZD9kODy1DCT3X)8L2TV>z+Au&hHw +}3%2B+y_-gFoqr$Xh6ZtV_FGyzH={sfS88v!+o@ZmV@l^%C-Dp42b=WL#OU%2@Z*aKbidtq}Ne=#XT& +wNaNAxQ@mY30WfmB{AD4FS!^x3`xo)a|`QnT5)8PBZkg62%SVu2B!b9orGqU$G^2LTQRFpB5SeM9&&5 +ch{zkmA<q&(Q*IyZFJ6u;ac^Js0r+OC&rD)Aw#JJL}-l4M^U?xlX~-icY!OD%bo+g$13ehU#Q&`LhVa +?I&|M?L*(GSgoQdY7NkApPjChvH{W1WS@BvYI5cO#TyOV|05X2)9TEI+?Hef3aD=%lE3~A=cjMB<D&^ +lm`D`{yqp@4?YHB80;Ac73KV{cp&ZFFaeRDZ3{>tL8^j)EqUyL`O+yQo}gtjtAv(o4|D&K*(L-RYZ10 +j`5k5G{$<~`Ttz)rwYiJ}(xfk-J2t@===WQ6u2FQL9-4h@)kCB`T}VGQ30wnnFnZJ9{)Ybn{fFpr)-d +HTb5tLo$T&z?Nv^#+NN4vaowO6YsBcZZp|J|27_p0YF$;MAchyVR7JL99?tPS}wTu`DVYqclK!qdb<C +ttpZvUZNQBE|B$Fh3J3e+gGWqiYz4M$*0dJNK2Wy`k1S)@gg!@0FlC)ol0n)tK8&sUe)JR3QgqDMDf+ +F_g`}`)N(C7zpUD8Xp5vE-5LAzxp8N-^Bl+H9}K$Ygb&NEuXX(&n{ax5jQ8m{Rw;MgYQ30*`e?n6xTM +qQ`z>kNA-d3o=6~gfEra9BKD)LU4Cr-5v8FLSTzjU-7CamHcHB)ctlxyqhnJp>DUsGYC5D99qJNRf_^ +#5!7h!XnnCLyj%)=HNWibG&YDr`7<sqw4F^!dK{#LHFfx#XJN=nRUpsv=Z-VLL9A$YPoQZ8^!Y{Jk_g +b@<m&J!{PEO_4D_KyS}hF4RIEl+<e4X$~kKLIRy5gO#dDf=bx&V$Ozj8*q^wN_yJeZ{q?=RLxYIbG`& +Mp}mvEMOY`Fwr-KOedN^*?SP44mS(jM^nz&a}7o<w`m2pB3iA3;|duM3@wP(sB6+6G%)hw-Xe)j$s<$ +xN{uWp!TA(<>JwFb2bMz9rMuoCwGNjg8pNoAp|`IF?u62(d)T=fm|9Cr_R3h^TR(6zV#w+E)lKH{)J> +)eGyVRSL8ABlp$PHiXgqv7kzik$8Q#tQ0Z>Z=1QY-O00;o{RI^aiT_@P;0ssJX2LJ#k0001RX>c!JX> +N37a&BR4FKusRWo&aVb7gF0V{~b6ZeMV6WoC0OaCvoAQE$^Q5Pr|EIF$!lX$uk(4^%1=>NY@#QVk|FA +r!gEWi@qdV>|2m?>XB^I%jPj+U9)sec##NxwTOZXs+{uONT}>k++Tuo4bSN@&S0Gm2vRxetlmoKVL7u +7Poh+)tA+$EaUZw@H_*0YLA*CeAkXEf<LaOtc|LWXlrE}=895DXO!rRZ$fk#gISi9f>{ecP+;j%*9L1 +eC`+_cwfRfI**ptGlgT7}U(1qd+Y08;g4-gLOjf+2SFk+_=pzh}4ye>#3dJhwB7jf{aA_SA!Z%iPfi@ +p#!jD&QrQ~ZzX{Bf@q!OTPwJ#1#?y!OiYt{+}k4&@(PC>(VB%w73$jU9r5~2gLoW#*SSYDyAu-_u-Hq +ZeXQq3$0WmFm{u*%`*mQzGnML;dBc2I8198s6t`ZkGmgG5a7@JS0^a<8}BmDpNIhjBraoFr{g=pIO;( +gM8}NeaTw#5&54J3$RXL8r=HQA|U`KeWg7#qjogM=pZCgT^^*loF#H`Yh;F`eqk5)Ek~FNv*S3Dd|)D +r!VP!_&f2`p8+MBpxAK9%wZrLqa?)qK`MiV!GA3`XbXLCTP1q|FNl3@<eSa2G4M3c^BG)z0AD?<lE0R +;-((1O()AEspJzkGTr<O(WUJ@!tMgEBE;+z>Co$W5YTCKLqO?bD|EL<)*K2t9{_QLnPNQkKb5s+}G)z ++*oNh?+v6}RR=I}8c?5+zS1mArQcQ!I~1&O36v>#m(XjN-UlE%s%dmtfiAfDkd5^U=yiYBn1>F01<R` +?XAoQ7a$U&v3aaokN37+3tXD?ygtv|+-z{~3}Ks)}3c@zLjl#C<Q^hhI>hwpPL&Q~Zsi8qFNvi1h3xw +_Wk&IuuXh<zxNK$3EdI-b&WP1;^*lop<zkeMS$^t>aH@o)DkOT||m3xg7H3mRuyhJ(W1R7>0^bJS`pl +w=70}Op}wtrrhK`O+DM_>4oe+P)h>@6aWAK2mtd`vruzZHb&Y60006H001Qb003}la4%nJZggdGZeeU +MZEs{{Y;!MkVRC0>bYF0JbZBpGE^v8`S5a@<HV}T-uec=-mI0N(+U>=F2Mk5F72DFF%N`0NP-%&_*~p +|oQZclm|9y9qEQykwL<nL_y8Dj&?z=l$9!qT;*xE+X&gdhQvSg`LP8h`tRykQ%mg!^3o!rVox;k}yZ$ +UPGaRhkng-dN!(i4#<{?U^#R%(SvJDob6DxGVWM9a%Tj?!jlSf$O87xF)m4skB~y1JBVfA;?S^WEq4{ +U0~)|4cvqdwcug_V*}~yP3x;zf_MJBK#$-OW<SaFf=a`xUb4WM7_0N!;?_CHmu~?Bj2Ml8xnKR_fZsO +1-BNz8)WFNb_cCuz5OaOw_G)7S65g5^G0R7v{k{Ku;2~?N~23*oWxtb0}hQh_<ff~;D69cfJAGLj`5r +2X@l0yn((!<ju*IrT%S~-d7gl98S6s(FS*!3ii}E^rcFNSvZB}}-Cc<*L+IoB7NaHr*F>0Dbrfx^GY` +FW9pvqzlc#lqdrE*Y_Rs_Ht$bZ1WV;YYp&X~TFZ(Q4o$J{s#?VW6^9zu3_x79^x>hAO{Md1@f?ojvNi +Ik>c`^8~gC@2W+++vL8YQAlgYA&$atH2!8v$L#z_#`|&njbZD^!e592tDXhvp<L!k%PNz)q?>fI8zhm +>E~F6|k*j;ZPinjM_D$skInMDhBtsJTZ^s!)R611a#I6y3uBGNt@nQMCppaYi}L^Ded|t6gorg)oj9J +s1Br4fo?MejwC^nM^#ub0<~_D6CxW!2Ep2rXt98>uxk(wI1QB*5DT_v@CEr~!-$*JyN54J7J%I!u#|| +w1Ah`w2(@<y_%VUE2_^X*oDM=!Q9eoJW3naG>zpb)DE_tN<Eo~el$G@&6iCob<0b4WmHAz90-MAROW; ++@2*O=h(yNy-tdwi`$7z%{NpCNoh_W!*UP+$I6Y3r1F%H9m2E<a2l8#Z<W8A3k2)jv4+&U4l3N=50oR +dlCA`1H=!2HyTM~2I2rca{xf-TrrEmeHvWsE6I#t}BFw-3vKw<iddhrakfd>o1bEy4$(an~f)UB4I^4 +A<G;TrzqwN7tPst8-m&Y?@v+INK_NRn3da_W{xeiE=6pG?9688d>`U&oq7-<QtsDI9s||*R+X7SusJ) +4Fx|DFblIX|IH)xDo-%=>WyClcTJOQCjd50q_m!|miFa<+h7EtlAo&qWRKeIRM}J5PFjJTXVRG%+lX7 +X^9oNcQau+oKp2SeQPio=86{&ASjCI8suoEoxMeaj97aOp(M~4jDEl)cex1AyHGj4YpAMY*VsACLfH~ +S0-@dQE{b0T?SR<qux1Kb5ZCLE@iOZgt00ooVn)GSx43@oEJNZ8=)K2EJI{VaYhveFyIqq)m;HS4ggR +dW|z=OyhsWpp&=3p*!e-`C?PKQX=XZoHBm7M4d(=g=^7C3KmI+bGoHDV|5B$MF;K5FaQ2Zjz3(pa~gF +NaR=gTkI|-PdqO$LdxU)}Q*wTj@ztKH;!x29cGxo)JulfW63qEk!2r9D>~Q${%9(G7FCiGn3<$_43-; +MAwC;K-Y8@g$}d7y`C9EbhT|XoW_@8tlQ6IV$l6g2<m)lM+f|K-A><9iLPggH5qlE;oZzkppR%=)MLB +oe^5&U1QY-O00;o{RI^YebJ?Cb1ONck3IG5d0001RX>c!JX>N37a&BR4FKusRWo&aVcW7m0Y%XwlomO +pc+cpsXu3tf@11xVg-3~1<7)ye#NVi~X7Gzt8qDci>I@@ezQ6TBJcKz?WJKB2j)C`*e0}}6r&pr3>s5 +p*qp|aqh^iC+TT>=zht_u*V%td9*M(2Q*ECc6+H^MJLY?Rez?L?(4MwvM+Mx|N-J}57iY6D^gs?_B|M +sXZRdQ}<gg@q`ZTeA|Cu4KA_GB;LMD*K=o<m%PJiG%C!YSH%9r3YK8Lc%VC%4<{Bo>%2Y6*~WukiSIW +grhHV?RDX#-&eTRG4|D)n>Xo;pDthgoZkL%eSLNPV-)Fm&+;@9_~WeI48LgSqbSM>h4e6n#LV79=7%8 +!tAE~NmB`?AUP@^xwII%r8kw0@h3^U5>1WaVU2<{rJ(aWpdwzUAm)~3r$Mi<4^6QJ?untNRHq6$#$j| +Tcx9`UHWWV6mYR>`3Xf@N#OI0Y(Z*{6Wxm^~2-N_tl9P4s!hF>9~QG*ZU>&x38e*Nu|mxiIT9OfcL+O +<#9#6dA1api>jzzO{x5sxqxiSu?S#^>VNlu%oVrsMO}D(z5$eSMx1k0opJxQEcFjNmHf#vV1@n>sXsD +#H#CRM}~ZTq&O|lNx;;hY~4`Z-qB?F)swT7jM$>V>q8a6JkoIL_poBg+gR3u?$4ggCnqheBuIX8qVqr +U5A6Q!7dlptgB=|hQUx;Kp|w14AQ|!490_Dt7Tgl6oo*guQ5lQ#(c<~h{v(W*Fe)DV8>K+L|nFn*7lD +?vh==k)5&C^{c=4c#ZRhzr6zb%CmPd&n>=~)?D0uWs9A?6z85vx9t6z^_%Nh6UV2lo^)!S}isL!c7sF +=U*j0u0$v~cl<H_m|M8gANbOyh$AzHeDEnc5vSLh5-g~;hlmnw|NFtC=0g~aerrKCJ^&%~#Wq;U2oyO +G$B#K$3@p&g#6Q(8I^<g~AyxOiIn*u+s`b;##tQY^ryLEj$ow8q4Pqi<aBte~O$76-?D`&8e8U)wMXn +7)A%T%DqO&Ec$uTof2c_Z7yXK%Hz40~_LlCyk{9!$bYV>#>p=Vr$&Fbw!r}HY|r-irPQSJ$CCUg7G8E +_goF$P+zE{Fk3*toHksoI3y4EZC&IMP^a^CLX|Bw-W@a(IclNt+HH6Uz>yh(DjQ9`#HwMZR#gEb8h03 +q*ObElcPByoozQ~C-wtGGrX^vtTt}!1Hy_bcdF1?YYv(C`RHzkan6mrL<&Ajy?X$2Mju;#&*@uP!p%z +M)lo8V#n}h8rbBmKktPJjsUpaHI7GX1*_Lhem=Cvx;aA~cvQ*lKjzMt%Xgztt!;hi1H{gl^Mdr$R7YG +Eht^1o<~TM-QX5+vpR2kFg>DSEVr)l$P-Bx4Wh^902;Ljsu87CS*yCldO<jeL+Tx+lAoNbT_Z<h{XDl +mt%x22e`_1QY-O00;o{RI^YHAAw3T0000o0000X0001RX>c!JX>N37a&BR4FK%UYcW-iQFJE72ZfSI1 +UoLQYQ&LiL&d)1J%*-oRC@3vT&8bw#OD!qSFUr;hauQ2YQxr-|GIKIZGE<B7xRjKXxByT~0|XQR000O +8^Hj4?0k^DRe+&Qsbt?b>9RL6TaA|NaUukZ1WpZv|Y%gwQba!uZYcFASbZ9Pcd97M)kJ~m9{_bDF)8e +ppPf=6gJ}qt!$ZeZ8XqyIYazzm=6k4Lax|KzRq}DNl{P&yTJN2^8rDvdxS0ab=KF<uDW!X!nj$GW6XM +?(9ooXto8s3o~SlcrpSF0P|DcW?BG@W8%M=M6wKM$>HzU2pa{x2$<3ioaZ?P@}$<W)lztI56{7^!&8$ +c~FuFZe@KH{G68g4K8sZILE{Q(+a*{-6lok<PLs*!zJ=C5u&-WvkT%d3}e3+Lj+R5q>xT5hCyS(AH$j +V8ekwz_An_@&hA12Zr4NyFm?t6+q^2>Q7gsZX`ugPlisNdR9NF*-l<R2bS1s)f{>*6lwW>4@a$5JHZd +6Z~CHqU|r2c;d!GVH?hl62cQg=lOJBce&yBj$nHTkr~<Qn&r}Jri>jovyJYjBKmlQ!XxnD%_VrXq25K +kfajE}~dDdp@Xlsru4vnnb-t~&WhsyiheSy{epu(R$*b~fAn<qxan!yqeDB(==M)qx^%nJ~r<yG{4v& +;<W9*t?)`T37mf0Q>re0TF>`RkjPFJHX;9&E9jd3>eM)Kqz|j0P-?e^c-}8Q!NSeA`qiC%^RQ;k3=k> +!EK!S$=iO<3lBj2Z#Y!j1DSz8{7Itx8r8(P2|wmhUQzTL{8lQZdWUGCMMvu^{N8w{gZySF3XM{SXpjX +D<w`wHha!JI|*c;T#$~xrz`fMV!a|S^xN-*;KD3->#oU5-Z8iAJN*v^Gq?vlGiwbe#gU2*wip+{Pxhl +F(nuojn;xQq)DXdnLtqo;XkC%N%1leOhG!dN{>>a0s}%&5_G|k>`^Or6f(#N>d|(^H6NLD$3?kG7t3n +MD9b1q&2qpUlf&d-dSjmzrFfnLlLDt|(zlY`c)vmbm!U;p&@P!Y&rYC>k2bm6O3IuXTrZ4;+tMF$^iD +o+}7MaF<Fp|Q0$TR6{Yn7U9hy6PHo+&j>m9gkrFWL?u^d=#MTY%w|(UH=V4WK=}2h5JDLlvd0Mf$^qg +(H)jKV6Dg&8!dlwkNs0pCh~@{JE0*^{Khs<1;#N%NAu1Vta{Kk?rS$Es|~$aQOK%L5Cm68LO%Ve#l%& +Ub~tEVWziWK$ei;AXk@b$=V$V1Iq1D-`B6j0Kzq0%|2k_me**#O_1XPlPS9*>n-PP$f9pe%Dvr?C;v1 +CcN_44!qW${`0weGa3rh=e~jo@rQ@29p8_|S(oME?N%=P7_;-LbI;WuZP|1b`&@yP4VWLlB3=zz|w@5 +^XKG3G6+ZGgbWaQYikZN{2*bQVPePDRTp&&1I;V@dE@njzB?+!S4Ky_(*GlknV{)u>izfXoW2rlw$hd +jcwh>QggIzw8-#$;{?0jh!Z78T)N(Y|-@kku$H$an8z0VDvVMCb9+Qt?tRG}%2E!23Z|25%#G!x;2Nw +N8hz8yqXm{#-OrAR+7OP2|n5Kam4f)g9Ud-&^Uygz%~e+2w{-ckmF>Lw$lcZBY0V<iU;!4M$@gALxl_ +lu7ppZB?iQ^9%rmJ8cFC%Kr?YdR%9KPQ(EsR0DJ2IIKq240ouuI|?aQNuNfvuT65N2eGYSv_5%{8u5h +0k>JR0x>$~raZ^CXO;@!8@?^oVO=#K?Ble9Aq%p6qsX_7P*dwI29Ur<nM>WHeCr>*5M8ES?aE<I))$A +HLaeMLsQN;F+Yr?2@k5a<b`MQE7VL;&?-P#MbYd(Pc&Y{@#uqgy&k)~f~UuPTgHv<2RO9ZSdq@qH}V* +|<65Zo*mj8PDD>=*}>4FzXejg^URN=zSM^6`Xt@-fS8#?l+ouzKELO9uZ%_1ohKuJcM{ER3hvHW%bKg +!PjQg#?ZBTa1ks2Hp6LS`@QF$9jqOFQfXr+%BZ$F;Pxj^dc6~AOsCE;gcP<td9I1hy)fV)g0KGusR1_ +VxW`+@iKx+@y&CLpm7(h!L5TfMkkv&&!4gw>B5+M9JP+Lu0A$<2EkmkpjC9vPxEzxvOo*|O)BA%tIYd +HIJkj&{kT8)11E?rP?(0G-<6Xx!ZZ^{3^XPr=8P5;s_hi<7FhvOHk64_Jff@#jfO4)-ZLXz&1zXY*aG +`+pWZIJ+^l~u5Srw<FZc8%#f`i@b<9Pd$B*^<CDtRoL*Jm!v0kT>D2fAsO)4yfHSaE!sm2J`VueR}Hx +($1WNcFv9<1Z+H1W=`?u#^Jxc^-3M1!N$5kdAyY8ot<BHb9@4meCv#Z)_!rrMl>s3+JHXdSrlRi!eRD +ZnLYVz><hvTH<?iSTnToT}FoQ740hD8_wP2NmP|Mqim`d%=k%EmL1)#!1(D#*p@`V8t`drw11p8DP^h +0Amq!CqR;GA8`1<Bia;hzp!q>>fAbO>{1A@w;K29PK$4Ggq*Z76&He4Dn5Azi(>sLvAFXgo@dB>MkAX +75|RohfafW~aB|d)Ks09M%8j)Xs#qfft{l2bcl0QYH3TJfgN+}~o@b%_Jj_iHQTceqOVdge&u?(h+np +eralyvmA7ni;6Xw3y8_JJkp0v5fiHVPoHRktRXZg)$c8r7JK3g58mEi)O&2SDKZuNd>1m=fhB9gWG%+ +SD)^L+(bvtnOFNk4aPsM{1=hX#kb3!<ixx2%y_#J*serIHDUpRbq~<c4<-OeinV#HFnNo-RR4#w3_S! +QvB*c$=Hv5Bkp|8G4*ZWtDD^v*^a9ZcO7&=ob2+VnpouAh72h-DW^FVG`?!nQjDjAe|rRJ;SL+Cvko? +BBzhnC!6_)c35C{&vjqVUA8D@?St6deFd#%X=@hQ&VMzl#uyddPlpgSPM5l3vO0~6w??hESea%rPdEs +kFn_ZW**JD=$Q}j|CX3ep6YQE)x|uU@?U{2HgEz#<CMVgAo?{@rmXF2`I_$6?ARj+v1*9J6K9&L{^e} +VzJ04Nu@WziQp=U|PkPhgjo$O3=vv5!n<8y@*=oI7R`x{fPk-=-qXcFayc=*O8E%dQDY;P%>Uh{kg`8 +?2#%)vtBVT*xku1;)AJfjxN2r!Yv_MBs*DiSq3Qwky(%HSR6_b55QySioM?@zx0nzH8*{i(Qu?Hj28v +*V6+<`&^N8;xN0m#}~8D6ri;gLFhIQ#(+*I2}jqp)Jp-JORVL<s}L)SA#E^`ccBta1~(u%3`sg%qZRX +yU=y^2B*1r(#KC%#JjlNoHWOJk~Mq75zVdgbVwex7M}@H5s**tsDmf)0{X(-eE9~xm^*E^EDC}6dUu_ +@a@QXu+f3qh;ukr=S<|1ljTw;Yxw7X42hCO!+D?&utcqtF5zA{TuG5MH$NLST(Fo@{xcc_=^~+ljJtu +Fo6Z}8xvfB;0z9#TjNK3(0ePWV*PQLo;{z%1MCOPVNC{$ewNq}O-*`j8W5Xmt`D6JN}4Ai#@wA1Rt0d +qvj7!4v>@L_L;T%hj(>b4^m>j$6VkWvk@)W5y>%QYT6t1Dc)N_nQXY+x&hyqMq#ml{y%Wpn6TkB3bjo +bur(xgNfK1`GNo-wxvZZy7LO>Mv_8+c+=38gXcDj1f#eK53tGYJ0z7io;yqFbo#1iA%<i2rW#XyKr>e +Sef6W_#e4=Lg%hs{!bNS1a1<s&SRWZ@!|d`k<^CPxS7^#kx3)zxdbpXU4KkPsexvj#Mo$nyybAPKR@b +}os_qbwOHCP!h(*OUeM<^J_xjR5~&d)5Nxniq(-e>gs`<E+e6cbf*uRYL5YX1)8bp#?$~7)i;ziNhZn +28fy(&^I&Vz0SweA1I9t*2qPyhXsH9(zUpgWOXd9&54XtA_58gA=&k8?6i0HV>ee6$_>m;I!SHllZEV +7Pgrn@nnJvrduRYbIGgy2=IzSZC+CA*t5<gG4}(!1z><NS73Pvgtj5!~#8t;goXz7(nH%Piwc);$Yoz +iI?+QCXU7D?k;Hu1*E*d$U~jQ}E?hhx!*8_FMtf(<LLWzJ=b>N~1+2Vas9D&5eLYcY~91c0E(h9{Yg> +elD@{>YwD~Nt1+@cRZK@-DOT<w=a@wC;V)JHpb@rQkBRtF5x~-5^dPdG8)>t+zxof-ZXdYK?eXr^gE0 +m*N@m;lY7@kpj2=OGgQA`cKt6ZUxunlxg#V018n>><!SO0t;q0reY3s<d^i5dR47B2(}}A~BQpMt&{v +wPbn*BHK8t+#pX;nIpVOu_qtCH<fs_9NP)h>@6aWAK2mtd`vrxDa^!}y;003GE0015U003}la4%nJZg +gdGZeeUMZe?_LZ*prdV_{=xWiD`ewN_1YoH!7@^DDY02g5GIZ7;5JYIj}n#+6z-l{kl#%S8!jjBFthN +z8<QpKieb6Ypem2^Sdkhx)yKYRzV|d3$&F9!gO*2(s-Iwy3@E(&#MOY&KE!3hu~M8>P%%>PIL|%P!y= +)2j*!1dFZNVFiK~O^eVONp`8hb71d#iy5V9hi*8BN;<)*w!QX4ht;;i+Fe`;<uHn<0AoEE7uD9Zw3YV +w)hk)RWSLf4p~WNGXmsmjm*qRum9bd>!d}*>Y(~YQe+!3~yznzY?hth))u||pUwU-jWv!`D%@H5abw) +FqC4%@stA)yXFO|z`O6msZu{{Kd>PeKuYVO-EXLCxdc8b<cXKAG?5AmoSv7A@Zp7tlYxqnl{zn|ZK&M +)7-xqO#@_;hn~ee(~|U;oGQc?9%?tj8H{J64HMQ4~=RLAsos^1xqgCl-=1{1wOIIm8Ec64<_m!Wb3I7 +D*%;9+8yi?HruKW=Xk8A*dvw{r>z;2fV-QyN&`KR-=E8)*9>LsRGjSbq#wYsp~T$ye!E#D0EZ_ed);z +PrV~4Kg%xI7_!h6bk=apRPfk)5Y+d2cH0Zb$x(|!VU-;=4sUOVu@Zg;iK+^}@N0>khxqp68?HBn>)Y^ +=EY6*vU8AT}^oEb3##xl{Eb0Yic>e_~A}GjQO#t_eEF0<)ILZLtK<^N6$EX=PGvS4$7SIv3SbAdzXvG +lHY2*2zkEBV$2FAkPO3yeKnBjwak(2hM&-2)!s?#Om3e>C!=WP(fjnOz;2`SojB~&*T!A_)#0C`;}H* +6}BU9!!biDZE`K4L8eE-T6ADwD;V4B3+RV%cK_jyRem)(PKC7`15eNAT#qGG2x8_Hyim(J&^@=6bWd) ++rR$^p6eCRqCDT*V#s8)YOwgl+Sx%E4QUFP1VUlD(Q!yUkVdDBP(irkTemdw_RT-S*~)m=o>Rhm!C$s +hBS1sOu`IxNfR#)h*u)DbQ~@~N$2A+=>GhVhXj6y`|;<)>^mKI<1!{Nd!qXyK4w0J-$KG<p`BQtsD8# +D3h6MH?u)^rdstQI8!9kt^nDLG<?OhZ<oG}1<jB`_sAJBP!kI135}pe6vEK@IO*e<A;uSQvhL*xksQ# +3eNC%AS<%#(v=$30GJ~WHIx$yyRGGRDM{o*PcT~BaQXFNtQ9x)%Mn{L3k&UnW(KwPm#mo8G|Pif-UQ$ +_rY|AR)j(Kk>_0|XQR000O8^Hj4?g4#aY4hR4MeHZ`$ApigXaA|NaUukZ1WpZv|Y%gwQba!uZYcFJPc +W!KNVPr0Fd7W5oZ`(K${;prabFr{|rwS=>p8~kRU7Oto?WVyty~AD*2((1oJj<evq?34y{`Z^Vn@B}Y ++YQi05jn$odFGiBXS3N`@zAw`He}6PrpN==ThdFhkxVJVyN1_P3#rO%Hk)O9-wUZpz2W|`6`Kw3HvZ2 +&-!pyenes1$%CfZ-d(!j1tnOLY2ua+UWdA!brPY%SrC%xcqG7G_0&hNE-CSJVRBzsWzItDMy8O>Ytek +h6$&R*V-SX1AP_3v8^4`~Lw+O%QdBfzC5_@t95nzvA{`z=*IkmTA`a#HDS<`yU{AR8y+*+BJ&q*CLA6 +x{pdeJFX)!Re2Q&Vzgf4S$X_Ck3^;Abu5p6W{RKUiU2NY>C=SM;E_)|7*6?TYGKuGyn5vc>5WAdiq)f +5xxBU;hq)zj*V$`t9@8)#cSMS;p5Bug|S9s5RAa3EJtZWd-@zYcAlRY}oo8+5gRjW-K*MS<Abfm-ztC +r?&g}D?kF66OzpPPxeigA-b6)OAqsM!}JI9F0ZPN?pakWvMg)ZnpCh<ZME*JkV4Evj(;s|OkQ9>*g46 +)CkyiObqK~S7<Om&X?e5)Hi`Nm!MIKvRppjZK&-l**8&{r^vjlY8@-+1EsO|ztXU6;_!n&t>_SQ*3-X +>F-O~-6Zypy<4!9B>^RD!g^;EK|arKfrIH|rEya?&QHH>+*7Q!Bv;jpZ<%*HV(%hH6yqvUpV)J(a62u +<6{Its~nHq;g!fJ`(AbKHuWESIKsOXRpp0iV$gdbg*%8v+5<ftf}zwG|IoEjFaBVw1bzu|mES2MzT_H ++x8jJ>KA^sqEgVGR)!MU~25&a8jaV{^cvlzkFTHOIzmouv)~GpU1iu!x0G^#h?r)N#MG*$Y-Aw)~wmr +ke}47hzwaw1SApm42vqB$cD^V3CQBbdd+Ih@7V`-&)R%JUWZD%y!!d$aEM7rXiH1-Gi@F6So<ySz9HK +QeIfy4!5evq<PuQ6Ci&mb$Y05;v$L~jj*c|MA)L0*EZa6<P?R)=+*ae$jyQxF9ZNJnsd?99vgp;R7MT +axxTFiRr;p1x5@y>Xx0*dSD%x=k;H(^HRal2epSgb+vjH%KVFP3eT)^Q2e}8hCh=xWx^U^bNk922Ao{ +~3?8Q*dUnc_&V#L{M&D040gRrXYG%N124qn!D`g=(<98MNjT?+OAU^w17YPWV=kQx0C^S%1>Ig3zvsJ +wr9l8sfDXzJd3ULVV2?Vf$Vm)5uh4YJrZ^J%SGgzS2g)o;2mS<%V#~(n({P=X3vhzVPVuZw64lApd5h +W57CE1jra$gHl+4-UMTUCJmQB9YP+VUDA8#h_sC~aR4_}BWW}m7+;ZDS<VRN9BqU-BM3&;e+OpcPzOm +EZ^r;QJs||0wwkf4oSGF1(^SWp`GsjnI)MtM?O=l)zQFYjP-{ot-P~LU{(x>l+ZOqGMe7|z)OJ|dZ04 +pICP*N?t^X#)M-(U13B%uDH>yX~&W(4F96)U=#EwvH4myos>}0Tc#WYL-WCK&6vMl%%ZjKWDJY-?!XQ +F7|fVc@I=Tn*g!E#UG07Er`$IaIRR&HP24M`0nA7t__rfU!xOtPxN7gcG(QNdf*;dDAMvW4NPSfKE{A +afT8!_VOf&P~otLh-jHE{^O&jtS!r`HRZ}JdX|cv>IaJH)1S)*nm-)`I0i_gmo20RX5E~7t=7?N9B|Z +vYJX%mri-shkX75;`nNDdv+J*Va&BvXo4Qx7}OLgza4;-{!!zM{_>)$1rAE*SiYU+`Uq7Z8KA$WxGj7 +h4+<Q!C?rB^w3t~<?0f9Uz?{CyRY`8P!0ju^=nlW*BPA62iR1t(BG%-A9u=tV;mZqEVI_(OQ>BVYpjB +)TfTT6w9HeIftL7#7B=&wAUL3S7VuaVox~|eOU7(?x18jns9H#q7kIlD%mC?~MWQ-t9Tlg?>t3cR5cB +Wq?3Ou3si2gY%;V6h!ld6tl`#l!IDs5ovv*w+X%^$pXl=qCS0^{b4rQK0)F+*T8#Z&xon(oqQQfn1@H +xE7msGt#yobi7W4mvk90SPfX6iXTVTOR!Lh$04*8sP^pbtnd8wMU~XfSoyIP!@9;`>++}+5m)M(BAWo +Y8!1(DI3$*OY%<iY<+00PAHm2Fom&-)UZdc5O)s94_jVu;eUvOZHq2YF(fz+L~*IO=#2trkaH9VFx$` +~RXa4;G_OcHl1d@2(TIk{@n12J#@u%!0DCqtW1C4ShQbUtm*6!*1c9*wC38^C(A8BOP3Tmn<S?Fl0E^ +9xx%mjYT;o`NnT@z<c1~tKVY9CTmqFuVbic&!8T)b(D6y23<7gu!d}&jCP<b*a;TB-;x~1T_|JumK>c +23}Il4B?UU8Ves%oHA#oF~?z%b5CUq}!#^pPUHdGO2j8zowtx_Vf|^XcfS!d#ie=9S*6=zA^Q5RDn3l +_eX(_n!YY8$}9c?;nm;Xo<mv=#I;8N<ZtK1nkG+Q29Hx&>lzY$-U4rIXsK}s)6djFXK+!&=WI4Blj^H +x^R4v=23$eNK<1&WVSmi8feU=TDX_Qf!bW7LFE&c9^o!GY6;^Zn4eB*_%k!(I5XluDWoN+&5dJCb7#T +=j!IiWFpM_L8kMM9q|Ra8W#e!Bx5*t|9Ec)$^POKOBcUfZg~QfjBGr-jBKtp3O9KQH000080P|F{Q0x +Mj-3$}}0BAb^03ZMW0B~t=FJEbHbY*gGVQepMWpsCMa%(ShWpi_BZ*DGddBr>ZZ`(Mszx%J?DR_w7b( +FNbi+vZs2V~Q<=eulL#Az3Yzz`UTwz<*QiBcSI(f|F;3`vRlaNE6m_g)IP5<g~!^Tpu|<$2zFSuBN8G +S3*#Vy5b%$jeG*8y4lUn89yWahYKQPZCzh;zSi9l4}`FGEwdF@{yI|pS4gGj$O-5UGmC;dk|axB=a(u +c%C<z9I?BtVCy_d@|{MJrXs7D+U9kFqXAT!KZ%%eXv|Z=id;g!%vgmJ>#8nA0ASL6u|H?AR2)H_)LFG +JM0^s9wVJ=-i4v2EOmQJhq+BLJUCBh*rr%Va+2<tRY=9E`n#xolsAg>5JQWGA)_IxQceQW2cDzIesmW +wr<|*<h2%kh2=Or^E42RT=Dfv8Ob(tjc;rqexAmY(hAj``<v2!o6?NYa0#Js3PIh<$_1YD0$cJ|L)2{ +UWP{(5)!{_7x85PZ@AxD~3%GvMgq392gV2t}h>nw40<q)f?5K8e>ds)qA{6#+_H1)3jra=}X_7*~c(A +-xZ$8zu(gIT8hGT!S4kM?lW4Ch%7+o>n?`TnL~_RQ)h?z=OhxGUG{L)H~pHwY5`zsgp{+&Oxa%;H-=; +pzlj_NuYM}lCQ-ZnFx|7Xz{{ml1dnX0COlv@k!gk=qkw@HOM1al0s9+vt$oH0#z~sa~MHS`W_f~2Edl +9uu4D$Wx?YZgryG8+yG}II}x9eQ-_DAQZ=Lf34_0fS|)J_A_{R*2<%AmXhvNdQNeswf$56aN<ep!q?^ +Ih!wA7f(SKN>{Nw#U!ppy2UH(11{cv-$xOsbcCXm$V36fXkpkE-viCmAsIVZ9RSQn*UCH^e{Jg;)Fu4 +}2P8GA>%$dehntBV9Y=!dLX-*nQ#>k_AJE=XkdXi;3lvmU=BZGKlua8+!s;ogJMfj7Y)i}9W?-2+VOS +glr*$pjsoC}EcIbOEscn%ev@%y=ro5U4_B++=wvtS@6FmkRvwZYwfYD{MJA0W((>xY=#4s$gQhUa*!4 +tirzfo+L;f>>a!ko4nl5#|;wkF0U>>++Kz6ZWnJCH%lP%o>qLsiZZYAC<itoHY9Y$kS(VBjz0on#K_A +n{EA}*dJ20`zGfO1%ZXo#`AZ?r*|w^R^V8D@Sp~`d^yNRx{qpaZQ-bDu*r|YE?}h%E&P)frgEI02sTk +{g`Rb?O4F8?}_gMG&`ODLnulilUF=5f&fF+xbBX9-aX%y_VJHA(DA%U3$eO(e)I0JX9b5gx~S4~zEv) +iI41!josNtSs=yX_M%C4Wf3TNmI3u!W>t))`5@&SFp)9F*4zfLtzcud76=0><9Jo+iM3H9%&1pKb?%? +*gAw1737ub{N1xGGrD@)QT8DVJH9sPDDiE!VVmM1Y8D6$N>V7wM7O(<t(ey2XI11_*Udao$%7)oMF6> +2#)dxzX$^m_xPHDy+B+X5PPK28q>(C92M_L#zHU4(2MjT4G_^lxB=XG$bm~ppXN_h@-+lRIQ{+p{el) +(qo*av`6J&mscEv<vb-X9Uy3bml1~)XAaheR!UrBbZc4-f?6umfKz%o|+SU)~*iVan!B4@7oJys@s7` +<U;m?1bTrR?^n~#gzcQ?OW-Q0yAFK!nXKVM&=VfjYIE`CSjfUr-1vw=VdTaSPKu(*C5((mH+vDL=EiR +=+9$Q|PJUKGVgu}8;uDa#0UwFNwZ8&g|Z%-CC5CH#S5;}RMQtt)pWgo6rNHO$LJ1MTX$NMr;I8<Uzgf +#dg!_u*n0(kyfy5bl9I@<$aW@==75^rz<roHh%8%1-_Q!pakB#uya;zZDRyWT^EZk`kpvP#8kd@qy}D +!{s9AKsaK*3Kr+tajWSNIBxS8)dWMhN1TiL%UM<JnJ<D(VEiZqt<dC8rv}o4h&Tf2+Y!W~pi=JqhI>< +^VPqx-jKLr0LLpgJje$oLNIao3WBjVM88#9jY4x!zwFT-GmYO#_+xzHrDc(?l5eluyHXqV8D;Zc*8S) +Lt(Tb(Ve~!Bp?KQ$UB78w!;#5XcyKIkn#X*%nHJh(z1Buc*XP-PI4IVs@A$my@TR@8w>3yEHvx`0O4E +t?xALtf4+MhauVOvfFswHs{@il$aZ;<yvb*H%y4JDuTCJzn*mv`UCv%1%iS8P59i+N8_kIx$@hbGy@! +@R@GBPieqz6m$Dw!MQGCV{E~$YS4c7gY?-1?Y<5=Sd_q5j2n|&P@CpOan4U!QG#KziMVej3oX=IDd#? +Uf>14!O_$2;KG>8f1Z*RJfjH=khGNkG1mUAFICu9a-2{J_O`}Q{r_Iv3o!VBw*80bvKBy+v!lSW%S!F +QP5B<|RrRwsZ3#Ja(vD$+EgfOgE6GLy1+be}zK&PBqD^@E5Oel?&YtgIu4bLS-(}$&&Nxm59%byUW(G +w-6o&L7A8Kvuj<FkePq^@G^>5Jv5L{A#2zy35gcEp+L%O!(GKYXhBqn@tC%VIW07&S%pQgG)zb@36mp +hqxQwpq_5h*t-xj$R=-JFA}_4Y8~-LmWNM}f7Dwxx#lT7TNb6DU!^4#wfE4`DYA0q~zbPh0yKf*1lfe +((=KH#52j8Zbi)u(~Y-aeWN;UR2awAkD}Ih)D;yb8T7#6A}=O!+$-nc>%$yN<!DD;XQcw{_1AAybeEJ +-7XjJZZr;9W?fVednr2}Mvor;fep=AZ`!EMaJ~tg@yOI)@o==JZqPh2@zMtfxeySXbSVykP%2}TJH+z +`*O(xn-(cue=_F2RGNn$~h2i33mhY4a_HovOps1$K+UOC29ztW!1bCcD5;&t8FfxnsEJ|uT3P3!hKsj +K}MWXT<+hMo`efCiD#FM&9c9t73x(ldI;e3p!KyxIH%85vQtir`mjEXt{#OkwOFlm_?Nn+kz3Bcqa#- +?4Ec&B+ufu0G?+E@`24ZepV`-kP#ZFun(gG73KeQ|fuin*Qr1?e_}h_2>s;)bl=CmP#CgsXcr*45|JL +A%j})o1nzbHSgzKnKQt2kRVvT4#zQ=lB!Eby_H&dO^PmPU#;t_q`dN_~B>{aw@CvQS8+mc{pvdKa(io +O0jFqD7;ykRIKmhXu%q_90VFb7W)uKt!FlWOnDu_(>d~J#wwYLyspd}tV*u;<|PuPY412}JQh4lp{UE +Td`y8+Tt9b{V!lC(Ni*X(G{02=18rj1pLTlC!&kKmv3vldUY(tFy8#w7JCIwzRk`o(F9=F$t-?p&lG$ +R^$zS$vc~zEp+EUok1u{a^4`)9Nhm?E=T`>I%(Po;*axF!S1KYxaQ6JC<;S<S#E=*B6Gt|{hT4^=tfW +j<41WF;EQ~_L5c?dQbS5b4jUf8|BS1_*<&($e7b=WnB3)l)CW9EN8mVWoUrxpD3E;R`!cYq5vO_!qC; +nCM3+f-W^-z-(h-^V6gb5))EVmJolE%UlVKRcS$lLc-!4G+My$_H;c92+IM5~NakqHb{2mD~e%x3)!N +$hbOI00FJFQJb@LY9_w(>>4T>Td2*?*ekFyqcV>*OKp)3E>#x*a0ChZ6rd__f%X+An>PsN4ia7ZGRBW +T&S|8-tdXjcKhpNUyUY;;|Ka7f<xRgSSD6O8G~-1<gD4zml1EKiU1rs)<w6)@J|zqd3tsSYqu{?6k2` +#FmTr?4_;-%GM9NG8J;Y?PI%m3$)I=I0m2EAN4w;mf#a_xBb=ZO$vkXR&fx?&I<6%LXrl80R-!rYSMV ++-qq{~y?fz)Ob(~fU;Nbk+)^uf&g)wGwI#&Sd(W<pT(98w{s3#aX9(DxLn6{ppkMjU-Xv{R4R4fqdL@ +JI)8ywXQB!SEPD*`m;6ztxHg%@J2Z=Ya*BEGq{}kpt$3L{ObO0iUWg0EGE~vq<GynIM4y0=N9J6^S`; +sK+3urqj{8)yiGRMO9Hcye=_(E!hR8$dFhh!RU7vz1b7)Jsf{R<J%C*B<Bubz|tn><V^k>;><YFp(J8 +cS`1xmR4JX07D@e9xbyb0gZmOf8xRWOwzb_`P})7C&@BV$?Y0t#+ewI=sqoJ*1)8%6*qf)Y2|2*F&<l +aHrrMfBFk&MeR9)9|#Fj#b%T*4sqp3h(iq}r3c$#C~68J<FiRLZ@&w8-7{7D3zHi9}gux69q_zU*q+4 +oFPTtnFoEG<wO5`xEM&r-oN)kgGhV7G<VlfN)s0qQ|R4{9ncn;aD#d~XRyBZy^Wrq2~Sz7INBp#wBTl +sxGHgGjxl10X92N`|*Kuo41qsFfN79Hn;R8058qGZiW$p7ndsN-g9n7-7H}oMiS**=PVBD7;Ad@35%l +_ruw*&M;{D@zqc4<f~vVle~`KfCNPcj)@z=8Ak$ZH}iX-X@)$SA$<J#X*CpGjJ!}O-k9NOUT0L7#HtS +b4-cZ+;i+p45hQTUZcJ<-w7iV9#TjP=I+UiOv}tm%;U^jOlnSu`l5ou<IF`)Mf>%E}86nr+-hrXno!P +w_LicK@Rz{l)9x7!_P9R{5iYg4aDLIhLts&Y@khn(bSl5uckcYf5MOgOX_S&(<BeqyKQ$e*1`j}3>#@ +GR33(GZgQy61<Um|M&)NqJSdHIMc32eoBw7Y*EvAgS~7QNnQeYdi$rh&6nY4(KXS`GM%vA8hh&!I76Y +t9``|BA+?J#~n;H$t=VmgWeh7-+Bt3kJ0o6?Dc;0ow!u4m=b-l8W3ix3Tn6%{l^Io`P{w+4_<*9oP!) +>A13z6=wg?#OO+Av-D(t3i_+zTGAX?n#dWY@OHK)MvFzCf&mpQ`T;gw+&EE_bE$HDolEn;^#?~}3$jG +%Wi@zQ0s2ioOJBigCIO(eeD3%RsdcD#U>k^UEbbi~T?o*;b6v-$w(0PgGa~!$plOdF*e63bVj9t{|4$ +-^hu#4XzpDD*yx_ilIq@D&BiCuJXMmA=vmPzegTwXcKKPDNUS*_{cozd52!<o0;LHF3*Gt<>9dPJHv_ +)pUD1XQd9>*Pi`1ms;CyEKi(A?B9IfLflF_@+gAZ9W|O_4Ckp8+H~C{5iej;W7#15S+6XH+hyx;bU|? +39ty3}QaV9l_plaBfd<%?<L$m}SHb4DXYGd&7idhbgcyypPd?u2*!<E;5!I0!^DK8_$U8W{Kz_OVK#S +-X2anW`y}I^dsY^Ch#A4((3cBm;X^4(As05nD$`f6*VJ1{i*zXY%_`2)U^Z5XlwFE^PDb*?*Ik!$>n| +eJZ)g=>0PM$dRKr27ayiN8cCK$yYjqqudYWLRsx!l8AXN%4=y9RJTfZaMS+>i2JCdys=GnU*mXfoDf^ +BcpB~S?(Wf|(PEW86IrlGD-Gv;nUnoR_P$Q0b8Ph#89T-rQg?gi}ybWj=S;{vo=lpo+p}%2CdRdJ>kk +A(z|7KX<PiS@T!PuLMy^CUYFs`=)4ppIhKd;NTy%b5@oigx;`qJLFE0u=nAHO)Zo(&$U=0#wX&e2c-! +ci?^hw3uJxJSIaSLtlefGc>zvU@{FcfS_EsZ?e{-`bLN6Iovn<MwtT9U=6caS_2OQ>xU-BbJJC#O?)V +Om))(I$ggZtJPCYcGzBgG!2>!wpSZ;SLHOmK*8Qm*Ch3;b8k{N;M@a80lbT65u+Qgbq+)cVK1&Vz2J! +ePbYkTO+jBoMx-OjB3BYLZBLxWz!Xo&_FkR^b?zQ`jwta0;cN{je3;;EWc8iC@<{icks`VR88Cklhyb +=NY}T1T#y6NqbB`o+*$yuRYOVwa`HXqyZc9+AB9WDU{2eIa%jx~e%T5xeqaB#6u-2kl?J!Lbd#au3^I +DnL8_KM>#}{xnSd)kkTwa|aD|RBGdMwZOxK~QE8Rqu(o?)N)_yP|Onbz9(a1`Vl2oI?WX|pK7mo1*`b +j-I*N29`4T}^|DM@+9)*Kr?#f5^g~JpMHA!`5G>^x9yU_re=)pjgF_SuMI}@<C|{|L__-2BG#od;s3b +JPv(2{&gav@nzU!*}<XYyYSNokttjdmUMh)@^mn3*kV7t>CtYQ$7%1Qbj0;Fl%~k`5sS-IXB)E8xe$q +YF7T)on6W-!GD9Mx>yWz1kcxrp2rQjE&^2n(WTT$O%$qCWDi}-#NsO=Gl}|qhH8Liki@vaNw(8hvJ_N +!UYgBZ|+#&n$uTfmLad;Zj9QsvgKKEISmg4Z%_2BlSk0CH%u=&gjZ~RN(xIUoUk66Z-Otxd<MKkUz%j +(5kms+~rO@{W<{sv<(4#n#3iH_I6*D>+9{aQ3%9p;4U-7xH1{SM`}bV6#ASCz;Zo>OMH+N`76X4N{!Q +J1A#deDHnTZ_rJm@nr{jT29domp=C<S<Q@Nfpu8b`5c&-PzEt4StQ-%_d=n4!Oi5auc$m&B`dI4Ro}m +c^PdfIYpDUU`tQJ-4Ee712gS6C?=byzZ@`0yiU%?oPNysu7Y@X-AIH8(O(w+m$HK8%^9xQ3Yql~tZTU +*rP7E3`o1L&kd4GP2MY!PPh2LHT6mJ&q)=fIJ!qxSA3w%ypVt)K=#l8(1dk!=!RtLc2^}~9)7MHS0;? +cBNJN5V8PcswBPfP!zk_*Hq&n_?z5_fs4!rI$#Emz<-Z33i*v*HR*n$DMNo$)pTwhN&#p1(7(<634)G +JZZZE()aRk@~2o72VdUiHaT5#5`0X1u2hg@JkPM7^)2D$wk-dyFc~IQFY(W^ISck9Lt?T;Ak=08mQ<1 +QY-O00;o{RI^aHQ2$j00{{T02LJ#b0001RX>c!JX>N37a&BR4FK%UYcW-iQFLiWjY;!Jfd7V_jZrd;n +z56SO_Rs`KeAz8P2W&ys1;w(V%`kMs5Xd$iYmp^Sl9Rb#Kgx>j*hw&8z7%En9^WHHrds7t@FLvoQ6@@ +<8h@8)tO;|KpfJGmLTL;0&#U!fwcgA>eqB9oo|oSj6L>;XC}}VV(w2owi&`=fmX-?>+N$7k+mL*E`SL +;xi}~Z`>Fa8>Ts;H<PcMXL0nk^o_8FGM&aBcw5G0s_J}TJ6St)mB)cikzI<PVP74Ofbk3IjbBgYwxo> +~~mAH(!*TjxhqSu{WE^qZTT2TolA22GQoLl#=?d4gawgoIh<6_~Jr)_<+8d}&|)xxkn+0WmWOsnSqtA +$asAY;#<&CL(36+fcJZXskw-kJ?Q4b*3l1_$_=xD5*w*F->(7E1HtD_aB&`V1^nY!kD>?10^YWX9xHL +leSR@RzZ%&z=7MW_Dg!8Zj^&>aR~Nvq&$Oqk2-{9TGt^ld7&K>m&Wx@r2}MJF{8E<BxX`73q-=xs-}! +HjCZEY2f)V8X$t8Tf_|YgK7Oo@$xtsB7{WT^1|n+mj&0Fnl@t}II4(8tnqvU;{(vQkp+_?JU7ju^HQl +}83|WGD0*8#p*#MegLHlQ@1Z3)P(k*JeA*nLu+frjP8{nq!tnwz;c$w599y{;M)<n(^a6?lCHh@Fh1s +;iGCX<Qh5y<w~F)*Rz&@mjd=^-!)m>0G>^Zoyd&x;9~M^c@P?wZ;QP*UGz(~K^RXa?I?UYue5;QrymZ +B1i@$;xJK<m89BYI69-z{{{~N7>%5bAM-Aj}g+Fzxqaf<GTf-I$K6J!bJ_*3y%}7xV`9ZfPG&%QtKR9 +w-#;*=?eIB0<5$uXJnkLR<x!AaHa}$*(i9<C9~*mCB3%%<boJta(?I#hCTSDi`5;saeo~ujw10_u#V% +O7z+#Utkpa!EiSZHx_5vr^^57G9>7#^8itB~VQf1Qw5&9nwJvdXerw^rf0W(iM%@)2_Yib4T;J-S`&{ +m;FU?gqe*sWS0|XQR000O8^Hj4?EdXQQxB>tGJq7>(9{>OVaA|NaUukZ1WpZv|Y%gwQba!uZYcF_hY; +tg8E^v8$R84Q&FbuuxR}e0WxIm({yA%kJQ_*3Et_!vtdQ%jei8aWQC&~H1u>U^Fc48;#s)M3P<m2Nb% +_K?orFK=O)rv2iG`_MffGR7EC7K|EvW6u|!q^Qg3WT-Q+U}IuKxWHm0lu)c&S8b%u(VsuLDHoy5h|<b +T^R_`u@1FEPB7)6I!qx~UPh=%ZNj0#e3IkZ&%Q|Qkui!NX=uCIP$<UM&X!QAii<6p+&btC9R9A+2T!Q +4-xtqQc>DJ9WBvqBT19HggRudmp<M=I7P(L`UqqH3tbxz>508`k$H~Lv7<Prq3UVT}cI}D->=4w(Scg +p((L1_@g0Nc>SLC=?dmfcIT0kqY$XZr#)4)tS+z<SD?KBnU2vbStG4gJ&Mf0Drs1iDu9p&O13@^=HDu +j_G3US96%e3?!=Bj#Y*qn-;p0Vqj;BLyI22}gGvs;x@WLUn_EX#{-fvu9!lp_5^@9AdQ0NK?q%mP1xv +gSZV2O*SEL5S3&UXQ6pIqn6eI0oPPkD>M`a;jiZCAK}%v5V_J{P_j$5aaIT+(siMgC_-t!bb6%LwaJ= +yG2MYd{$82<TpU!?d7Fqn+chAr#}6zhdY*q^?`P2a*b|$d=x92AI7jnx3d0Pfg}BNNb3sg)fyb`eKwT +ZJIU9kO}|0!je|S%k>e^*=ICPlKcgpW0##wMpavgJVH9v5K2d>2f6rVTQi+VmMvs9$yduhJQ+q0voSm +hAhVb#~D9yTG>ZIUMma~Pc2WbzPa3>Wt$l5yLsgG-)p4&AvJN=1uce;S031?c%Mmcc=PX|$UJudDuto +k9wzb+Q@XXj|V(Kk+y=Q6jSInSI5Dw8_Bk|T-!fDOQ{kJC&e&@2dXTHpHQT0n}yPt@A9MP_sAk63~;^ +9$9YSnMBAO9KQH000080P|F{Pyhe`00IC20000003-ka0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1z?C +X>MtBUtcb8c>@4YO9KQH000080P|F{P>{+Vf~E!l0O=F}03iSX0B~t=FJEbHbY*gGVQepNaAk5~bZKv +Hb1!3PWn*hDaCx;@ZExE)5dQ98LAV$q6^eg=2M-w1b}QPZMcWN1yg;BO%GNB28c8MdivIWA@kJyhJ8c +KdK+u}xJ$Jl&?uA}1m%r1dE~%<{M|ed_*0Zi;T~RZM-+Njd>7L2Oa=BbAo{*0RMk?Mk{Gsmlq~LAKIz +{Ax4^2sSj0o29dsY$(i@ar|=QZrt9Z@Jas6nt5z_h3Sv?fxCx=`1=NA0xPyr7L_<8E0?ii)m>PMvyIU +YD$r_ROMgdoC1d_<j$DEGofUu%>BPfmo8*{f@S*R72l@h(6QT{VKnQD{`?icLVX&pz3CnDQL&Lx&XKQ +!*T>TBYE8Cf=NDzf{k+T*<V8q_Xmf(qe8OhLU0kP1y3*m_gulv;O4s_GBsHc__XxM@^C+|xByA1z!#u +%RFN&xbI|%GtG1Sf!`(CG<XIU(%gX@ZaEz~oc=PGqr~KyE=QpqN_rKlVzP$Zqu|Ur=K{hS~E70>=uO+ +$mTArs6rs|CFTHo}HZnz%)Idh%*m*#8WUk?x)YJ7;FpSx2=Za|9e8kUh~z_X0JwM5Iv2L@k1A}=!X8e +F2~z+U|43HfjUumkN%sTbav8~_=(E+TEghZ(uD>(7{?;IpecefUi+C0evG@a8C3V|H(NS2chzJK>LoD +5xybiMDR-=G_eP{PEy`6FIQr_@2q3QKJ=s#%ziSM#XmpDW6%%)DaokUfnYx!PoHrD@$5%5IA@NNlXgC +sA9RTEx81SVlX{Tlc!IQ4^-@By0#&~3a}=y4n9iB^-tDnADWEpIB(4TpjN>Rzyu`;B@H-1m$o?TI>lk +r1FW2=)%c866deS|1|3mkq$`JHG?j2u+vG_q)@oTGy|JEbHste{^+-y$N<J?e4h1IXU2|HliLPlGS;} +MG!`CGJVptG32!+0wMZtm6Ey9>usB?h}eLt+Uk0kumulT`00@keRB`CQ9ZGS>d)hp>Jqr}MrOf22v(K +|qlSz+KTEi!HF$}uBJJv95fVEu(+N~k0(Rt#|hmO;@LR30!EJHd~vBQ0o!u12H7re>|c104i3SsKtD@ +G-tYah2MkKgc!wEi>(+j0E?e#NneDOc(@%2G@n&$i{Py`<Qzn^^@qd>7;qR@3>%_Ti&s03WSt*1#Rmp +-4^ry&gR0MPLv?o$K=2zq$zc#5~Nryp@nu5B7-GXAAVWI7U7wmO3BKM)M4MJKp<lRWCJvR1$_*XFQl< +y8dO#5Cd^H=lhH2Dz50w&^n{N*Ix;$vXnw}ju)(kc1Fp1VZML~oMCJIiO}k2y!URRzTt^}GTAn~_s-T +MO_@FLLPG*8|64rto4kK|e{Hc#E#B?m~qex)mBVu8ZUyQO-PbQ&J6L*0gkRF(qMn6DOOs>BTG4943j= +?S#6>RZQP4U+N<}N0=JrcE6SJF8zIs<!JSI5=GFon*Cf*s`R1PP66sW`%11C&F^n09BuywHl>(`JCqm +Zay<jl^X%7vL2w%Oo*12f))g*gRAdcR@oE><Saiu_rodt1uWptJ|(Z$6=Xz96W>9mOU%#s)n1RMHHG& +G8Xt=fC-S>lF1GFJDp#A%IxssBaZPv$mq~lF{s^%8H)J=;~WeXp<qUi?6iTqr6KgxqFIKx-AgK_0D+p +YL0C(&5HjiyZs2$OGEv+uP8)(A^5!%0-GwnJ=m+Dp^a3(nE7r5L=8vyuC$bl`KadAk>wS|Tw1Ux{{9( +$rF##d=H9VA}hB_IpJ}3&~x|!fXS1|~o-;oNkXFB?1B*#+n)tNE1*wz*P>59wR_<YCwdBDtN-3|@H+E +x7w&UqDhI}1%2UkGnua3eTJxZ)4@EL3y4c3xAX`X8<7kc<z9S}`|{!oAJ7=vToad(CkznHzr2BFiiP{ +t5l(TghzpxHQB~2a$%hyOQcsyN(L(Xy}NPy0?_3^Y^>>8`+%&qq}B0c0n9|{0pG%2L-(t3FfL=@Qa4! +Zopb^k)KDbF|QcwVd@3Z2ttoK4-7{X7o9K_G|6<cb~tZ%Syv|<ou~{|2dSc`eUobmOj<*W`yD3?hgF% +56ADV_wmo~xeZ`_Xi3ThE0suR{`Im*nA^Xy3AtFe8@aNGFArX2K6z#{K7*HY8bG-eJ4+&q-T@Z9%F%O +t9S$xPWRlhs;CRB9{e4Lt&JUOi@s2L+i=E~CV97pTw(mAi}f1LTSf1aK9%$)aiYtDK{2QM01XEHm8+c +6653}x{zP)h>@6aWAK2mtd`vrvPyIHsfv003Jl001HY003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVeYa +%E+DWiD`etr}}@+c@&Oe+4%|AsJ^2yNktrFyO`E((GMvZCbSH6?;BIOG|XDjV!7pmBcOj-*1MbDC%W9 +=n=cAO>%}a!+Fz}<aWo%mghNt%!)gb@co_@ipU+W@|0{C5p2&NSV|~N@;xIZ&tN?(h(f?hRf0v6OR_( +dhXs*JWQm&dQf0iL`SLfKOXgP7Oj0~(UKQ$4vUHxZt+ab4Tfz4vjt#~*CfUB^LJ_)=Jg*ds&G*T~&L= +=JOYj(3Pv!jX4tS`)a%qv4SsBF-tVp@2vC8bJw-%K&xu=LBs#KQCdT&AtUStW)vo9<z=$;Kg-rvQ7Nn +VMBIk@-ibCrSgK%DQWknCCrE_{+ej!b}*BKDLpEiniCcbZ<oP0%8pkynLOAU28{42}U5f_;t>K%hjGC +@vhLa6({Y1_jXgIY!`^rJ16eoXv)p^Q?fS>DWPfUzW4_kgK<E-dx|@#_z9(Aha-}6hx7zxDt81V|mHC +Bzo&q#w9C%`Q^vhP71bVf)$A+7t~0_cTB|%%m}gO=zS)W?qPr-lN~W2N-GMM#<)jhn@ZoyQT(9GXgc< +UH^0C8J-+(q_0_-P_aAR=Ufuiybap#1z0ikhtZfX2MjWr;917PtBX6xm&B$w@Yeuekp(xxEEPY_`{Uw +;)jNDcwFk`@wE%LDdD2;B~oYv+cp~=qO<fk2D`4!G|wjWdUhTfN+%x1m;SQ7L<-t?<t%gNG^y{cJUX` +)wvsfA*_o{<gbRsy)ZUQZ?yG<qfgiM9R+Zt=CA3uA4qaSZ29z|#OXjD2B-TG1e0-f+-%LN4(d*usf=< +(;F2krgRg#=SfjBIn>WVqWBjQ3&M7Y_22|=k6`3+MP{B1`d=emKsOv0U$oT;}LH?)`~ESw9yQM6?|4+ +rOcVoICgoTmCJD2tT^4(L{6s05bD)1ilQl*|LT<A>}uZt+_(1y{Q7Eblxqv0aS{Vmvt!{j^pG(KYr%X +=zJ3cL*uAGJ#645r6H?=hm$0cJ3{A{v<!^$2VTG@o?riiLc=i!r5_)RUe4IHF&ly&x&jV^S%zb(u0;6 +{N@3axA5{E?#4cHclt|z2OhZYn?h<~OI#)QA&cuA<l_4Wam<P&(TLMxz=I4H^vynx!#LQh1c;D2IlKo +0;}OhSQW%vd^jG%(%`dS8Q3l06rQ-YAFmWO;V4p~(ZpEtnw?m^+y8CUJ9ww1FvbM<Bwv2v7D*N_q#go +Y1U`L<wGjEkW|d75cK)vhj4$BNYX#g}s{#u5`*)a0S{|pzSc<%{ld~6_LCU3-Uq+eH}=3hyj{gE7R6D +NH&1Psu3u}xUNq?F(C<2J+U}}!neMaPHF1gOJC#~)Cy*erNen1cMaxCEpTr0DbNT-QeFfo6h$DnEFhP +K;0NL_>eQ+ms0<pL0;8E=9?bTc0xt^RArB!80wR)tXGzpCb09cdwElgSs|;eAhs~o^5=@@t4DxC6$Vk +BeE6{V#SP2>cNhsl4@X0{<4zz#6;3RvvPaQYB0RqDwZXxg=y#wEhq-83QL?X1FYRt{xifa)qVUzOxGb +9v^&o!rYY0HwGVS><>jv4kn+Ta2`G<VqpDg~iQQfd9P%8cZ;5z(?_-~^l`iORro8iS})P$b_g1tN&^6 +hKn&)!^2_%MAJNPJqOL#!=&p(ZeAhgZhQzF@p`fWJTD5nWDF<XBIuPvayL-)FZpBZii^cxI03NE#ZD3 +@gLe-4}UNGONEk1W*A%s=fXOezH{l0U@n3g{GEF;8t^22u>Tk^nm^KmghKF3R-Og7HE<Zy=Q^gJ1(g{ +n0Af#bs1wctnwNr|w-Kr>38pmPad{s1fSN<*ETQrR?Mb1gIXr`#IeP*d^thQ$r^5<_L#x`-+^w*RF}f +KvPVYyp%Zjd#7(WC@XLCf;6jLfTei{ywiQ&G{Z7x8J8A(@fgE`a6KCm#aV^DBJWMe3g^Y00I_48sKos +u<!MEQJ-Ie3{i`R;@$Hy?s!Fn$^$iA_p2+6Fjo@1`4YY=<i`>JQ`FhY39{l4C63+Hvxm?nET3O&A0-j +c{5^@&Cx$n4Z?Y9LbI_lR3hx$?`D$JkHj|2dDvb+rWz{O|pmWnbixqcFFI>acnwUKsu8g0<TFwAe(s9 +Igph)ri&NH#np<3vsO@gu1-8p8ia)4cgQ8XyIa1~jXZXPd70umNBj8xwNAMoc$S`!1nh@2#%3nd@y*| +($#FZe#U!TNWjt+@PMc1;^`RrJr*Gxl$Gy@eVVN$ooUXVEcZN<kv-zK$JAn&|kS4#iVG-NRxnMLs9Jf +hhQ7#8uwWP5=&IOKBrPR>4ct2=fiD_m?FpZh!>9}?|Y^K@Fpa?^uwS;-X#Ol#DwX;CJ&lT3ACGC?C$F +qRbu@J}DO-EQJ6lo_5|Bk?Gk`j<c*seuSYt*ont*56`FB~b$JJs(P!n3^ZnR4<fvrk|Ogl>4H+LfxU< +Am$Cq@9wCfTRfZ3sbPDob~Hn?IEx`v(?RfHBb>xoB9rGB_w@j%S@~)v!^IiOu+wp=~$7S<P1F?WK3p> +{7Qc6UwFs*TZa8Yjxvhoe%dq*(O7mwfAXvdB^Qu1gjix5nqV}7*ZS7>Kf&c?=S{99D18?Y>43h?fdp; +PGAnJDd(o^+U31dcFjJ>%+S>B-wJ>_1dBr3+26E31%be~vDJ4$}@}%`D0s@%`{UQYW4jzVRIOt&evVA +YZhUZz2Y2jmA)e}do69e5%>@<=6mk8ZW?z}qa-4_?eSzqyeS*f~Rg*_r-7$>M^Gvc0!>gQ3=ER-jvRk +pEmtlMeTx<1WDukIU^&jt=lNN5`Jw!6MsTji<SjgUET8KF5x1sD5-N*2}=bR+R!jX0_SYV8|%33^D}l +MZ~u$Co`<?1rn~cvYn4=@CI;G2TG<0*?a6!#8|$sb^vk3_i?-?m*YB^Wh-oA!9zfnBHqrsr2vI^PJXj +Q?{u(K|8qN<lk2x;8uWAeK)QL>1V|kkiWu>K^}|U3%uJ-ht-fg>(~yC`sRViRmWb*b$yoAUDF>bxN8? +<k|20a!mr<^?$rT~Z_uxM_wI-xx1#b@&&adYbvMHE<g0H)ilimT24k;9ZU}LW_};xg@1D+*)z@!5aS4 +5JTS`5Div}KgtWKl)op0bqzeB)Q7|l!kqN|64>0<yMPn$ObtJ-5_Rx1JDHcDw;P|+1a!09;g5T+7yq; +?cWr(vrO+QBK6#o=p$4oCwE-S#g=1kSx!=6gRq=sm|A6UBuAdE7yQ59*4c3`#I;!*`!0&~)WNLSWZvb +UTH<*a8U%j2t0`s&H~NN^;SDtgy=5O7_faL7i&1U5_sf?e9Cn7~|1<aA|H^u#(G6adBvTG~7JCv$%;# +L#1yj82Nwrft-mourHp2al+H(Ns?13`vEHC8#I3#aWJ^X5DGFC$B?Y#+nLQ|Mgrin74==%)$R3>_xt+ +!zW#NB?!fEVjHEkUcz9%s;#Ps77tW}g+ZC~fGENJhj#|@Bjh2qX&S}l<)E|w||E7hyXKKe&C%-1*C%H +6Ec1T9O)TDPc9?b3Amv6}*Lut<+sLYDq>tAhAND6)b;-`#J7u_xPH~b%XZ7Kd{2r^1-s*emDGI(Wdr= +SKVR);+_dbq=MjR4W)AxjyFknK4VNI*O^rHZy*ZHANy#5<nY4VW<M3#r}X@Y~`gZhv?Ej{Nnf9~~hGT +M8!OfEl3*+zt3RbSRj|sTO?m(;^$~IzKq-&}Qjt*85dQ9XQYUnbUAX!uz#TKY;fj`t_#oYStrC?Ftc5 +FPC)$69X#hvo@3ybmI+}M%bf%+|6`?vT;*jKh{f4yNO9{?mmAlTOazVLNI6k&p}#=nI${;Z($2Md{qo +v-eF4qLeQCMz%_ou-IM<TP)h>@6aWAK2mtd`vrwpaVYi4C002Ht001KZ003}la4%nJZggdGZeeUMZ*X +ODVRUJ4ZgVeia%FH~a%C=XdF4E7kK8tr-{)5l<1<>lr_n5Oz%DS0zTB=IuZ{RIu*aJV0z+Z9INjP&OF +B`ScCX?8e)S+JQjd8g!6Cp2yP1|m7K_DtSIMWRr<aYYWuvr^BFlB#<m;}@t5RH7jmS&g%A%0?;N<l5^ +yK7;xY{XrR}|GDFSlY-?f0r|h2B+Nk%_eujoMeYDiabOR(mDtDu?%ZDO#M^wOykU0JA^V#|we$ZQ8S{ +#ua3-dLav~PEPWDT{W#Js_hmQvA6qtui9g+w0%&yUwQ{f7bhpzO|=(wUMK0TDl^;xzi-t4bV|2+G$7I +WXFKTf$8UTHfVOG?sl+FXwu7S+0oPvMsMLR-0@+eSwiH**fgV7h_+)u6=)}we;+aKW*$2<PaZ_;A=Z& +f-@Ouu+Z`!Iker$@DQtv*Nx~uWM%3>OT58vc^FWb$ofAX=c^Rl#KUU^*bUDH$zKL*CR&8trTt;-8Qu< +>5~W1~l_P3|90O()lRq4ZI=YHzXMRQ2(j^g92nviWH{SVFlC!!9&1%S(DVKgsZvot2jvoK6Z)=cnv*y +$Q(*$5t2enAWm2RNLj5O1q}uJA9tDRcglZ!)D($O5I5apg;|i9NS*Oy*t7?rX6c<OK*O>{4ss@^1El> +r|&<$ef#R|-{)s`Wi2;1-ei7|;)zVny4^T>!%q;@>xtzqXuC8!#EglD*E8g&b)jPM8aO)^?~DS7#Z_0 +sV;Z<T=>eg-NY&?7mD=a>D^Lf(dz;o9`T*hm>lz-)O&f^S3;^Vi&k0gRZWRy)Zr%A@^3xaea1Ow}$`m +qQUf$Swui^LH@KUvhs<}zB>QEMybh_ZVxu0JM)D8aMs-J-pdEYCe`v4$qZu(t%Gq3o~9DpggGy+LefL +%bzUi54LVva)b{XsTcEmr+`_N;=}A{@AggSTITI~t#F%c@a}3&&_b{RAh?+=jnCeF}b$0qEl%4@?7yb +yXGNh_B&oTea47^)Ht63l3iWA8Z%ZWqRF}8)W41u5pvGcw3cfYOBARRtzA`WVr>JZPPnx_ghi-1Qj{( +=*oHt$yT+m=~<MfrQEADg;6J&x)v$CN^ACWvcO#TbO*kVg?NG*OI^&#j2UPJ#G5c9BY3gO@Wzg{23~7 +4qiL=yHnjb4q|nKdxyU|?k|bG*v;UmeWT(!vyU(#p?0EVs4L~9jQ1`(eP6WT1=?{6k^U0LZUwYrmLa< +I^4kug)ygix8Rz{YB0}}CSjRKdl4B?q`H^vMsRf_Bu;eTS_mkm!Jkn}aZ1t>&VloooAv)8zfG6QnJ9W +t7ILd4LU9Z-OvC;Xc+lUge_lny|yMOn3zz>O`AEPAm3cVcDz3Wg3pmdMnb0$__5V5FmJ{ZDWY%wCAu; +c)UcO(U&}>zG`T82l+v(ctIcR=q=Td$(#L+&W$eB|#vtdHfT;@ZrJ$|JIxV5^LACHEn_>^C`Hsoh{6q +f%D!Dtezc%PSOhT^oCj=g7g$SWn_A0$FXJlG%H(3UwY%*vQ_AjMc_GQt5ZI>(^zbaY7J6xO!u+`0nb) +fO=o!FiFkF5f@qC8IeA*>T5a;{9Q<RvqX-EW6|!iQ%#J-tGJMylZ<(+7ZQ8$0%>lWS14HYR$`iZUxhZ +fi2#Y^0v`Tz#{`=Ta*jLMD^_g{gM9_P%OV12;V+UO3;=p7JL7k?@k%PDV>5rc#Z0{3MsCJ?I6KE?qk9 +J?<QH-&Qhl}=v3AuTiI>^J8YZ8VxO)8_kNR($5cUFvpBC@t*W|4PfLB6_<bhClwA;ukY^R#G#x<@Aio +pS?+I8R#*)dy~%bz4wnKrBECg63S68->*CK)dmN4oc{oycP;0Kuy6L0tS}dC*o>{e9qv2#le^%qe}?q +<xy<l;9DhBvSllzE6|0lMTK()byJ~=gLhp6D`!^vLc7&A#|w{PT=?h_hPi?wWs@*SKJea={1m?8Mgyi +94M40h%OP_OQkiu`3YDXH61E1*s_}r}>Uqh=7WDv*^PY)=WZB<Hpeg<;k)#L8sDMf9P^Wm{Hef0FSRm +lts1Z0vAv{coJro=xP%#JW+scOnRKkVWe-juoRD|3fO;@+4$gM>ngjgolM{kRXgT$U#0={YqQ$n#geP +!4+U^C_vv3RN%0@$hQFo1vsEayB$MuGn(r=c$hY#ga&_-qhs<9XjRf|w!jC42cwd2=ax-x2=?Nd_-mJ +y5WCYzpp(QErtc1(290kpbopUQ4aeWA#ScM^Okbm<H!Om}Q=fCOPMTk2(UW#&LSq6>$DOZO+~G#vjBT +LKj&2r%%2qAC5yiBvvcKG8e(IJQ0^&Q4o`%pjWz=?OY+xm7=at3+BlGD0H_9cv=_LAszq%p)R_NC85t +v`p|M>?4yu?wrs3wX{&kwsZh77AnP1S@YkvmR?gdHG8pzjA+mbYX-r38t`n_-zBoVMf-30N;27=C>ti +j?AwWK_VV~!J`tzUv7&5b=;lBeB7fD-vUc_RNl<+s8-;jT@B@#4bfe~RF*hUFzyM&!yqd$mw*-h6Fwo +D5H0>vAsF_dYBL%JIeVuy4Ct%R!S>doczSMSMtf$1Qp|Munbhv#3<!EG8$M+$;|Aw2^_a4b(wW(hHnh +@KM0P@1vK(Kj}Z&M<^#-d^z^kW3R}vJ=)bX&75OhXsvZkedK19)T-M@eNpY6<9?P#M`h`h1+Caq18Pg +#wG%sKmig>fbM3E|L7^goBC-G(|;ll?G6WkH)71%#_VyR!D8`;KQQ>E=bhv9hkNIb_Pl?M;|<3B@5UV +<X0mkxAT)WaAex%i3VnfJ=4_LPP0QTMBG3LG`r4t#?9Za;lNf~t_f$SRGbw;GoAm=;zlON;XTJX#9~k +!t{NeT(Bc08BgbFUX+OJiHF%C|N!F39A`F}A^h*>DJPRtWQRf}X64UkL_OU!_1aEvsbJi0KlJev797K +PB^N&sQu3*erQ?_Zyx8p;qMP=U;Q{K(7)4)_b`1;P1G)t<4q@kYcU2Zsu*mbXA+kBskoTJwFvY$3N2^ +D9JZFRo##KRy<EY@A`TCiiNDK2hP`f&BkILwPq43Gm4(i;uKZ!I}9ItW&=wiygTq*N*oRrshR08@acq +DE?}a+=7!aF){|a(g$*C0``VM`%bsQE4bkWEaq3@9Pe<L;ev*jj=7C20rSxWEZ=%&$D$jPI_pYY88f> +?78Fq7CGNC{iu^{2e?0quh-;9VUB2m~Z;nH%252Fh98@nMB?bk)B?+2D-wVkUs^by_M`d|SIA9G4m`h +t(Al;H{Ow;uOaZl=Q=oXMN?zK{mk-o%LILya+MIRRpS5}{MjGnfnhdrOz^S*M8?*^$uhXhsjqA_;kkR +nv158M%%sVS1-3r}I=uvKW&=MBk<|19ky=)m@i3`{`}`Ht*I@WfLAlg|m2;7x#55S}rD%n~FAvH>-HO +QAR3QeK#>yd`HM&;e$DmHaYKo((tyL&qE#>?Fejq2q<f&_L|iU|gcW`^_Ly&5Z%}%A^tgCkan8CW<8k +?dqK_)mKf}Ig?oWHEB|tdYVwphP=N(hf-y>FDO|Nw@b4cMUf*_>T;$XT5?R{+~%kRwW5&8>IUbdt-Os +9*V^i@l@%|{{b!YzQNKq!k>m=a2CocJ!NEnIye$sv#S*hT_G|_s1d4dG>&PDTaOsH-W!|5k92$tQA{y +4aWsk7&7QZo*7_=QKjnZ{hYL)C1Qi_TZ(ZV2eh9`zm<f6}Mj2+E+l`vZoiAP)#T2-GP#53~DefUJy+O +&%lL0X$M3!T)aYEV5BDvoC4$J;kF7Hr>j)qzzrM8XJw*aJ0Iklzfwj42ihY2Z{dvydMc+F4{MbQA#fY +{9fK8YlB(jwo&L!Y2G%<5W>D4WjlcTD&0QVD5EX4|u8<ak#tX9ODJ4(YrZu0w7){Y3jQuA;h~<fOst~ +-RYkVPyZ=VL98WvNQqdCr@vQco(4}A<C=1SdGK}_+*R20LN3M3UWW(i-G^(~GMrcXH5Jz;tje7RO?Jb +YGPTvw4*cR>pJ~G?p1b1;=(J`Js1Obr3o3zbHg|vm+o_85Q2+<^S#LbmuzTu0vV#5)lZV#>EA7VjO-H +6Mz_QceL21>b8g%>ApsD1kwUuEBwX1<8CfFpV(_JR+)Q#4$=bo4o0=;E^g|8hqzyS9<9OAe0tbEFc!+ +Ht_hBzE#dY@K?&L`gXf1un6IMGFMW}GMMUwN&eXePl<fnP-t4F_|amJM=dlxhQi%)~DkSlBW~zTZP2A +zKAzL|#MKEnEv*GQA~3AOH3q%#*{;R>K~Tdq0lrGCmd*HNrNUM0`LFz|t3t3&sQ$8sM9K-m(XKqZIYh +kzDrFCDWSM{CGfuu?Pbp#t(gRynT1|op&3|rF8BXWOb{WLe{Y4UY2dXq4XS%-Alh}wZ^39ew~+iiVz# +CMWZOrrBY$V4mbvigAIb;pcQox`{D+qrEzdRVD_u7t-BVJI}1mPMdI)4l{QgA-(X{6)o-U{svor)YBe +9~2WAgcBxhtzaWB*Z&GGlQBVqIu56h$XU;?sh<twS&Do_`lnO;OafF39;03O^k?EeBc9C)fd_6EltC9 +`^pa!0KrQ|gU$Tc9P4gEW%3L4a(sPu$(@%^f&aBQV22o8e$azXxM{j|~VOGGDZKMx;ZuP*DYGV2=M6U +bIcQj8TX4polquhzY^X1_GH0*kbYJ>*6$+o`8&k&or?+uQF#lpwKl@S<qND;|n~fW9=>@HQPHzd-nUs +JZ!jjf3Rw?TDOu!nz});fwZuJs)6Eun|7$t7>XNL{c{iDt9Q@eU5LMd^Lx|P99M$(Sri}%wlbo9cJf- +Vut>H*CB6t*XgZ<oj|g1w%cjDE=Atxu++OE*M2@59B?mc^5vXSsAiilGDAR3=+(fN&lTI9({vq3pcAV +?fD9tjP)BM8{A*DvL3bE;R=FgZgcRWpxs1h#+lficfQA2x-{VlWk9gF;3CTF;Z5YO4#N{`DAyb%{1#I +6=+5=Q+tAXc6LVA~9n(L33-6+0fO%L%Pm`}o7g=k8%<G&s^(GAe|iY4mWpritkTi+(p!tXk(W0&Flld +yq%l64Ix+G`37?<4z$jG+n8~h3}w5A247P-+xaLEr%F<pl%hD4K+16Iw-6oqaWi^#C~>qfJm=ILO_AX +jTa74rS90grv2zB^qu3W%`FG0a~=XMJh&QytyRov=B_-T2?6#(4^3=Qq!NL>3fkAF3<oFxDhp<FE|FY +YQWBW}>%%>+EpRj28krZaTIRzT_U`uYUcCD6H{V^rB%sKlDi^Kj>TLtAJj*+kI59O|3Y+sD05HBq&m3 +623aS0`P(lYrJV>#GQ)97!v+nAo1{=H_%M4rN$q$RhIR(5<kzF?uH(H~n283<*abMm*i)=f!<mogVw7 ++MTCVfKL*!1Yj*QM!Xga6Hdz#<AJx6DE=;T0Shn@>DhmCe9ONCsh@wL)A>#xGx+8aQ%>-<~xC1-mwkp +d&XV;<8Xu+dv8@BCr-VM+u;08jN*a$kzzZaygpdnJ~N{n5YiMT~H>!zC+oTg-LE>ZwR0X!CV3S3FB_a +ySg5L2@cbOLhPAc=qtlLcCewHMRc(=z<n13NPtW!DwG10*+fJyQ0sh_d;I3eqQg+fpRf&Jp~8|>H2e7 +eHB2%cfB?Xx$<S#?mP28g2m~f=2S!WiV{xAY0N2>A(CAitgSltWl>9*xa7Lyk0Q6N{_6m?@;LoX+CSn +P&hr(J1`wpkfknKc-+4NB+xI<@PzOK8%wDIlX3C1Hxl1WTl`O!Z~EItF>f%mvqRJKk%mDL0o%9PqN!q +_a%6%zex?qs7eFRS7K^}#XhJHEG^Si}TRC|6aJZ}U<X<o`Q4$2YJ(e~dZ3?h|1@*0j2tt%}qXj3Sq|P +1Paw$plDIs>2K<W3y2AbTy}Foz_DYD}j4A9mH9t{f78v23F1~9L;UQIJIl)CMQptlis%0&AoUtVC)CO +lW*tdU`glv{2T?7h(YE7XvAL}YRtIcBg=m?VC1@Dso2w5ur_8=Pvhg)#d%ybP>FuvZ$6WY+NRTOYFkK +FE}9N?#6$FmW1D%k@_h-8^4YekTsH#p%AS=KGs~`TwV@A}fnF1U^e*4y8I!e@V9++`WN_Ns=zMHpKzX +fhR9MvMq2LL0tx3m}8Mi(&8KtjAh5NpF5*2RuBzGE<BnP8Qn9p1aZ+vL(ID&qo;h~MnCwNguL2Bya!; +YEJV6t{YS7?xU9hBrI0nL=i?G-YKDcaai-;<YDSC@U0`{&Knrov3hBo1DB#b&4c^uSZ}Tey)OYz!NSr +^8Pe?S*c|<O@LWzU|Tchh%Rai1?SUKH^BMi9!^?;Z4DKlovGq;9mxg5@Ij7hCSZH&||L}3I;(7QUt($ +EU{zExzENpPQ+}KzNp3;Gw_m<p|a??b;9Syyo-D98vfjqr0@8%*YF#`hkRe@Ef<eU6R}@lh$j=VAv+A +ncyF5Ek;Xj8+q|asF#h*3jCGHNZNd%KUCj9rcaR@12gCM{3=7qhvx1r93ijljF@lCVcU8G(x}N;Y>pP +AHtP_v7H;n~eKH+Bv;kEdH^`VKJ+#?nnGZ8V~WJ-L>n7)xWXs42YLAb^r&iKiVL*H4<Upf6!rxoPW6h +kI5$X+&h>N8k;<7by`hUNE_UoIyzKlde(?VOl`U1Z?eC9H#nLrk)w$usw-qtXG(`8!Hw`{~)`gOghi4 +eTCgu<)PSnW7BZ9<ycYFSh?`3_18SMvJFg?;FeB*4lC3JAL<uACzqiV`|!J4i>d(_$F`4&IQ}PI~Qk) ++v7Q1oq^yuu8o{?JSn5g-@lc5jDmTf;M<|x&68iJel0Di0ea{>Oj|h4`pwh@O}oi!04TNpj~v*}lix_ +67|nau%f=%Vi~Cw2U4x}RMfIU=p%;9ywE`*gz9{Hg4v$B${Ed1a{>NfaUCeU!O7Uwf`i|DjvEN1E3PZ +dGX}{C{YpgF{Pd&*DCiP6SoK%4U$i@4>tG__cK6<K`16SVLWGwnLp|@%>OojK0|3+HX>>*R@Zld>$Hp +8_C{*c6)Wyc)uI}wV-IhKTRGuqFl$PszW5V*p>`xr@FRf5$Wn4%ddlzdRs$AW1&$x2?8w|P^Q9C-J|f +6OP(YIgb*K)^iwP#6Ft<8jM7731W;G8TpQZ&G3WFHlPZ1QY-O00;o{RI^Y300002000000000g0001R +X>c!JX>N37a&BR4FK=*Va$$67Z*FrhVs&Y3WG`P|X>MtBUtcb8c>@4YO9KQH000080P|F{P*++t%t-< +O02>7W04e|g0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!0bX>4RKZDn*}WMOn+E^v8;RKafBFbuuxD+u +>68%Pc8FbpV=9o7Zyur&yZ?$DE<Sd6X3mIO&omcJh*$8M5#oi2tby+`sr(OH%~U=UIS0X1rLA}FJwHM +Oc>V;p$Xy9z-nADmkE@zj?r%QD7PXN?Q-Zmo1ZZjEPb<4gxu*^(<A&}q?@glv83`?YnZLhs>t-SwKX^ +1TWT_g1A%N9Ur(f71l)ESJiSBu}*erW{tmxWhZJ10|?O(8KfUncv<oZh!E{U(4n9<sG%Oc_VzofYuwV +>t3~zquz~_Ut?gQcgh*vp$-?o9cpP@Y0-ZA__^FWVJ*5ziB$^U8?(I?ZHtbvs4O~|j}n(PhMy^xbFM{ +)oEMBSiJQ?oB<%(_^QpKQtVOk@)Wy)q6_5^i1NmjOvsWb)aQy|y_=F?R?~Yku%mTfSigs8vLMz{Skmx +IVC@4W`SS?l%TV;vh5kv2^htS|uuY94Bqk-j^E`7&y9y%K>pP##(r%Q2dm6r3YGm^}?9#Pp0>ej5On* +;BJrdK8BPp-#=D%g33f&L<4X+>y;i}8`dr0dO;`3jbXL<x;}?P7Gd#VD@_0UL@%H{xiWz^y|o+>3dfj +`@&i-ypU#8bjFA6dL^@KqGdP%$(pW8cIcdCuyzmUaeKD!eJ;WG|EFm6%ihNWWYZ(&gDcf%pkS?&M@ZL +Dis;+PBl$BWyM4^2sFI5lUe5jZ$5mA7vbWHe-@=T=BWON{+}fI8Of!MXNO0dU3z}>e@c#)zm3xQDQ0$ +7O2PgDP)h>@6aWAK2mtd`vrv!W8g~8y007$u001!n003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVeUb!l +v5FKuOXVPs)+VP9-zXJKP`E^v93Ro_qBFc5yvUtt9yQmM7J*Gl1Gj4`xPO^7`pgp3<sQjf%rYzJ0N`` +<acjgyvww!TC@-;eJ;e|JsO^a>mo+;LKY0>houiqyK21u3;5HB`J<6RSH@01?tUBbS|bvNTE4G)ZLBY +U6xJB~{fQwM~-J=!UeirA#UZM)8`$?*iHoO}37g$~s=xq3*dc+8heQg0-a<T-Q3SYs;3MtVN%q;g7&Z +mrzw0T585kW#38HEnA}tun|jvK-ge@JJdnbG9gVLc!TH9(m>&~S-%suZjqus=<4>zEj#;qe)f%B|6D9 +C7Z*rodB8kR2>uRa4J<HFPkqWy-f*s-q|vGY<&wld3mB63??Wqa--9h<Oz{R7n<Pmhpd_r6N<{K9(f2 +di)ITB!ALb-O2~5cBl;Ag9pbEZVB;krsjGp;uf-J@aL@M$SPY<+@+O#EW@Hi}DybG3K4dN?(q_(t1*< +t($5<#L$3QE{#=~h`93#XHi<30%=^itXlHRiE^;nKou@nz8=U|i@?OG7`U?yz6P_UCU(5op8R2wO}si +6F3i7C}tNDf#%nNUpR2;#SD9R`AcDc5?V%bl<so1=-**nLvHZ-HQIwQVk7G2R`pU-1q9)ZVzD1cAspD +M~O}c1-(+KcMS8(+BNePN6x*<HXFzf-GNJKHBtv+bhX4)5bgxx!QtDB+7~sYbYIjL+m1-z5$UWS-++| +1>)Dc95SYK@$P0QE_&m}!xEMo<>p-H#SA)oo7?MRkcjsX<uvEaZtA_VGx$cx27bltLX?~1q>L)ggOv{ +T$UI96_C({_c$8FC@GJ5g2GyPV}cNf|K;}PdPPjLy&;=D~sRqG{6cg-5Eu(Zf;Ob46XK|Y%TeivincX +xI62I6QQqs+&L!9{7-Sum{7s+3h8l`(GC?~Fm2!zk|U|K0KN0H-^a;#uS)S?=EH2I&w?fGzTqcI{U9w +;CU>hdz3vEwrPpY=UYIj5!_8=ibI16EaC&08mQ<1QY-O00;o{RI^ar`zAMQ0ssKL1poji0001RX>c!J +X>N37a&BR4FK=*Va$$67Z*FrhVs&Y3WG{DUWo2wGaCv=H-*3|}5PtVxaVnaUNUJ3t5K^V_Kq+iubk!s +tCWI`vxu#}`ZES~9q5bdpN76LwATMdo_kH)>=evqVE90P6RV8FaMEX>gkgZV-XrU<+(xH*OrmYjTrM6 +vbqc&(Qbm^v*5)Io6w_{d|_|f=tUg5uK+`(s7J;j%Y)dQPfFXo@w{nzF4X8DN_v3(&tBjBINI%c>P)? +LD#c0&0gLsqQ)3uUPc)u`XReoOa;YmMfpe-*>mN<GebU85l+_<;tldShsX?l#79#w2f$v4Rj%;uhAes +7torA=WJM=dpOmx&(L?Wa130Gcmm8n@2C^<m9Y+NNdpXk~_{yVQ}M=IlRObORLzjJvk3neDg`)W0u24 +m(S2evat{4l+psG?~e8j=*eXAK9m6^5pJY)UgJIfY`v@orGwUnJ8(OM)nWy{k)#T`5uqfq+@ouaw4k} +$fm0Ce0)N4_-GsDlTi1t(bQJD9o7oHN?K2&2>8sOTPkeK0(O=!UParHv<su|zitX5_)Ou>a*IX)0DBJ +2d64PnKOgqdGk_LmKG0NoGoXY@89jBhQ%D{!~Z0YI!k%a6>GJ3LcsUTk)wBFkcE+CI%R1`;Sa%AYvnZ +xY4x)RrIm1iH&Iw5&vJ=!z#>axo;6a^V*;|lwM|IaSxqXx1#7NN_b@jp+HcRd#w^^u0V*ukKG_!Ua@> +u~a?!jghKy^7hWXj-$t=%x19lMT$zJWkVp7CxVws~1*o1WU^C_Xf3tMSOW@&&=;e<0BU}mT5G`CPn|p +raZsY?ps+J7KZ*%Lgw8X4-ORMFHlPZ1QY-O00;o{RI^Z}6H@O(1ONaW4FCWx0001RX>c!JX>N37a&BR +4FK=*Va$$67Z*FrhVs&Y3WG{DUWo2w%Y-ML*V|gxcd9_wsZ`(E$e%G(yTnv^_N7!Bss1Hq?ESQ%J*;= +4T145Q4nJYyKBo)^P{NHzYktNzr-2tm!B$0>b`hDk+Hm#5vF;Ul)*AaEULZxl4*HKhS(V&*LDW+T#$# +a$#jHarkoD-=~FW(Z5{o<)Jou*8sis-J@LNJ9_9c5*II*t%LP5y=8u}Ddk#+x-E4Ck^|vnct7>TcCaQ +4pm<rOW#pe0BTr_G<AkvkOJe7#^hEVkKmgYg~w?$$5F+n%+XFb#Lj9Pk(;Gm%lA8f5#6W?(S~yZlZ`* +Czj{Vn9&+)SVE*Tbl++!z{m{!O}^?VGBqI*Wqondn&_oni!tVTLoiOFC@M*H7=R?IW7=gP2nwM$#x$8 +*laETvr$9(_y6yBx%zBbI$NRN7P16KjyhCu@ZcHYVYwJL-2T|@kf_RK?`v^cXuvZdQK!7LmACG?$dq{ +&XAUwVFMqsCF2-j+kUUr}PG<9m?v2sX|ISS?ALLY?bqS|YIJ5uch(4F99YQ+cx9j+p#4vVTHg{IGBNu +CLd6ZCE$<JIE*hnw%v{n#mjE-s#lTnYHn0;#pwJoV-j8FZX<KP9|W8>-jw6oO9%>EnW0`yh1Isn7gn_ +p&?6WDkoGn|xv=@KtiF&qEQCgBhvwV(Uom8Eo2#1EfLj>qyk3X>m#ANT7$AIe23E2Lilj<e&!t{NO`g +6J&xig)`qaOaQ+9F;NJa%Pn$^4gvzW2)W%e;0^lAFyD})B+y(M%BgD7Awz(41rnr;?Qb&1v0WJo-l!U ++;{X8DrLBRtFDmb!vG?+m+@V5}9F&7PR8dA$I)+Em1Hc$c0y}Sy*y@{2ScWj)g9^`}O)fcbB?gVdp2w +2m+@7_Ja34P~?AQM%<VHxS&^qS`EZOLT;H|1_SaoHHi?tBSH0z2=r4!$5PUmWdM#cJpDI0Uo&+7CaL3 +upT$2#)(%Tqrh#$<H-jK9SyJBV?+wZuKOFFIL}SD0EevC0`1mOihO(z$d_%7j!N82L|xeedu9weEPE7 +heDZ=9Sm5U<+#)J8?Ogc=Y(|LFzK?D6jT>_gt@#>Ix%Pb&NUO=@i|AI=P_=vMT*K1L?GP$G(Sa4Z!%^ +&1ZmlSe5;9nD6W${d=(>-&vUby%0=IO}QQ2rn;F+zuoq@Gxt0U;8G@oFhgv9O&&*l+o9O{nzq|ydfZL +S*a|L<@mOhsa)tcH{E!DFS#@<hy&Bvcy6YVMtfn)E81Jk_5bOl>_ERxCybXr^B&^fyXs_6m*@y;5`#y +rqze9n6-{fmST8$R=1>uCQ`on2u=EFLk5GjS6B!P_2jNOW-*E#gA(iJ<bicL<~(#><!cg@q!Am}a(&< +Fv>KCNMDEG4q@Q$Ns~xjR6x(RZ#f;KqmSnQ(dBKeN{=6}HvPUjT;oeK>vw$D@A%P)h>@6aWAK2mtd`v +rysP6nixQ001)p001li003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVebZgX^DY-}%IUukY>bYEXCaCuWw +QgX{LQpn9uDa}bORwzo%Ni0cCQ7Fk*$jmD)NzBQ~%u81&NKDR7OiwM=<5E&m;sO9rO9KQH000080P|F +{P*|I|DmnrH0MG>h05bpp0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!Lbb97;BY%gVGX>?&?Y-L|;WoK +byc`k5yeN@|O+%OP**H;La5-)7@0Ri`+A+({JZAs}vC`HlQW3PxUsgk_u{(U9c@@+2$V{_)rXf9`zB* +_LUmLD+`+_GH_m<wZBT{Fw2z)H&;j9Ft&fZ$gHwpBzOaRCRYrFtbONfN{xCAG!1tST-lgi0+NthgeS3 +kzDXnzWYJhV%^FJ8)5eu+*WKUBZ!8%G%If%j+WgHtY@P#Moy<nXb&0Xzi{qDaOfNt#pJhyV|3gr2h2s +<AvUTeYpQdpMPz)kJ~Q@@$w9Ohp>A>)OmyrH+GG`E8k~Uukla#+k(gejSllPLirTLAx8M@fd_HmT8hR +s5+URp3>s%~7Ni2Z30O+0U=2{Za<l@<IA<CMpN4ZIDnnjw@c4tz8}35Bzm3&@0<Ws&j-8{$GDfP>Q1X +8hO00RL>}3O239SL@UQG?RQ|8XiJ`j9u6WlolI0%HQBUQ}q&)B(<PU%pb3pw<AVmxViNKPo0zd=EbY; +_K_;2Lr(^>K0Fs?$P*QbNcI-+sbdDIi$fE<JYr#|-<Jtn&Lf?q(wkw}wyBSnPD(`V5Tw14lOI*6y`zt +9=M%B_5Z9#OUGMX@qc5%Jk;B6~c>hx!Jgs8h<o5>(JR%CrZCtPFvSjuT#-!>j!u)oNS?^fws_Lw$$Z7 +6tWXWE=9?!Y#8W3=;W96DjZ-hxh&{zfMz1g=8_Afz76l(?k9Iw+Rt?`4Z<05|155rbY_h0U7w)&dy!p +M*o?kH{{c`-0|XQR000O8^Hj4?^e$(eA_f2eP7(kBDgXcgaA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFKK +RbbYX04FKlIJVPknNaCxm*ZI9G85dOZu!dg^qBK9oAhpL>EN-aHFR5&W2Y7s@jn@qCi5<A!qdn?3$?~ +L>Qa;JXiNylyMnJ4r1%*?XgZeKtyk~5RaI#CqDNv&9AbOP4yndHFPM+>g5c-0Gi<eTkwyV=OH(#Eku= +ebmQ_o!|6$)4>dGrDA{w61otu$=y7?R9b#Du>u;?KX{EB`Y3F<-jOW@J1tr%0SZC)hc#JklwA<8r7*t +m4b3Hp5CoeN}F`@plod*PNlh9-iO6$UD)_g%OdS`OK}77=(3GkEKF|iL8}jK*gG6kD+MM#Nq3BGCH+H +*_acY8VH}hdncacB#phonhRbPlzDMm`jiUAP-5>Abr@vi2{XKsD=k@jT>t8Y1*~;<dhT)G#og%!zjPK +d2iqa;EJ$nP6YfuSn28F2^K7ui*FCD_qba17<NTXGWxw}iT)G1K-k|UJRDZlYgo6UyG01S(|BIP-_7y +c}WV<k$6;}FG?LSWn*Dm-t}^-RbDOCY$qO~AVmHqNGyu^3-3T^t7%imW}Sp9d5LxMV@dE`DU!T0wtBl +DrZIJwa=b860jCgvoS31`ujnCxO@Libnf)BNcma3hjIA%m*)*7y2O9#JY$NqC~WjK$o0B;HXQuR{&|3 +$=iEHY6~&`n%GJ=20I`X8jN$I%SsljmrWMOUNnhpB8ZHNt8-ilcN~e}tDA^fT~JS0!!_{PXM07hFTBy ++YVFmk63GpuvDLLnd~ax2wE{}-OTi{a`T)%&+KTC`g>&u;#+%z@0z`^2Bpyd?P<V4@8v$wxQ*H-0*yE +xtK53I~LnbWidcjbj&YXvb#!wQEGt39Y2j8YGrvUR$TB@K!;7!bTZB<@0YTVtrT{yuT_c{c-uN4Lp#b +t&U*V9suW|hAXpD`$!GisqQi$yehUQs|oMV?iQtA;62OPIy=kl$$dxFUvxj65qBR}-E^Q`Rknm2Pemt +umQMJyVuucjSx)nofkm&9r>{h{8nQGpm+)-o8d@8W!`#f@RvUuiv&D|CYi99c{yz4dW-zgkih~;eMd> +<uYa7&ZSB8lay&RF3@FoywoX;?rsGOm07@WiYo1TlEE!Da~sSmEnM2&%rRVs4s{;vUVC{)^6We75i?z +@bhn=uakxNwz~0ClTQ+l=xg)Ry-Nh8Tqj2m5xT>XU=lX<@gn|<ze`)Vn#1k`U6niEL3xlWNXC~`M=hU +D7&jKT)h1Ib=*z$n=<Pbz!R$)iO0f?_SiZ8%yozS+G)kV=4Af*0%Sa&t1lv+O@BmIR72JRiI8G5LeY9 +D+g7Zd7?TVtYADs1%3Ag?``&(Z<+Rg@ZG4PB9)46@b^!nGxgVQHqrm_BkZ>65!3L7k2=IifAll!C1wk +=Yq7>J8$(w5N-%KrM=nCPub89SW&{x_QRQsUYOGDx~wLL0jLnzhJXN+|)1h0hRaKW`y(4&$@0>wxl2( +oZx<EV%P-6B#~Ae>>O}Zd~`FE9v0%N)actr&}>2;v0X^<mE;emcjEMb)Kh#kBJqqO7m#Q;_NEu+7!OM +!4|W{#{DStq-OLL-_j_PF?I%&}fu=k@U><HZOLvDaM!_ru!fF+*bmFhyh;KgJ*h3}hHbj(e#0jjV?NY +b*Xyh+@rH~eVU&n7WpYX=6spo*57{AwHsV|Wv791|iNYaWHdPw;cAsmm0(WVvdXO35eNIa3(yr;C60x +6BZxLRGZx=I_1h>N`!I%8iSedB9RJVOK;t*DE`)rrJ;)e&f`O)a4Sw}ycVCA(4jL^9q2$^l?CbQbV_B +Cd|4ZcMHWpUKlSHaSua3oqI}e#9Sdr+3oY8lvx?Jo#Zb4@YEv_WbXcSC_1+UE44HJhHf{oQ_}yLt5^= +HFevOv6J`h<o$>L$i2~aN;e#Phpd7L<Az>=6%^btNPC=z1BWeCy-aT$7Zq`E8tqQQKtX?l2~qnu?k9W +>XVDwpV6m!O7l!|92$s4;Lf@mU--_o8`dDGu&mq0=Dx(E`==(E7)H?0v%|B}<O|bh%?V1<$mWS*iqvN +)7jx+o(P)h>@6aWAK2mtd`vrtgmP8b&+002#0001cf003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVebZg +X^DY-}%gXk}$=E^v9xJZp2?Mv~w4D<;&{k#tDNkE}PPTkf6LR<f$~t1NkwJ;jB9#E?V;0$2<niSaqV{ +rWLa0F<4&yQ*WAEfO=+)6>)M>A`3;x@fDatQ)Z|YmpVIN%A}^HX<ofv23$E#UIU9iqY*>%6uf2S&`Ix +Q6;PEWFv9dE@`5p(P(sZbSy5n_$bfITO7A4cRN`$LT$@72Y6D{a#!BSR3z}Q+(}WD8MJ2wO|fp9ww4i +q+3l<SsZdRwt(tjRHCb6C`Qp1ISMum+U6(r%$J{%PMYf{_BuiE1Z6jm;eRQOsuK*pnLJ-P5+ErODVX5 +v((a5_d&zAOyx-nn#a<hTun4hJJs-)SPpS3jK)V6Ih3ld1#*zbEg_ia)a08H^RmWh&2zcEW_>s%#k88 +4rHBa2m;O74_3vTn*USHgh?s#o0lYgVmcF{bT5v+6tesmWAjRTSUIBE{Y14%PK0uB9s5dL>n_SCnQ7$ +q=bkomGvU@`8T8O0H#ncnmJz4A{sfmUs9y1{SFI{ZT5rv(RCui_Q5PA8TL?S;MwR@@^%G1uQb>%%=%H +Jge)n9vYUHt0WkO810f@$~xX<1^j;_YX$8?V|PINT*10(;G7t?#lU!R{_gDgW&Hl#%lOsV<+B&hE}zA +(pS?Ppi5JxOeVq@%L&B&Cw+T3*kvq$?=`YC&$P+iaD#qp+uv3-8v%^q!nOd3gtE569NMqHcW!ubzEEE +a_AU+e@L~RM^VOW4lg`Ew&OZd$TDT5vB4%=5K-g?lhf4u!i{QR$H&;J&`d;j|N`Rnfwk8BH69NyqnTh +~Z{c9*E@nc()%U`?9HvU5@^8Pg*W`Sk!cr$+)l1WoRe40cy4g}Te&&p%zSaCsAIz|RZNMl<men0+SRX +r(k07xJGiNGojJWn1A6J}dS!JLViPPnP(Yz5!il;yLmzJ-d(%cby)&=?7U+t+sL}oiyUFLqiU6+v{W} +Q{3XR1{IE4;+<4&-tgR7sAT&5;_vUuTe0BvT!9vzi71Lb9335@CX_WaX_Xj(OueLMlQ=E_d>q3{j#9Z +6AYnUHlM_|1W}=$%E*v9q<*AquRQPWy=6}Y&)LKj6=E5l0sFt}8A=08TG3`oLGci6Hn<;CFEI+}vnOK +7SU#sj_xp*Z0^e6H7;UES;Gs3`ID*X3>dV)!N#|TYW8>b*D8;QH0%VN`Pr(`s7I?*cR7@VGT=Qer#ho +_S%8byS(H6ws>Rw}!APN^%;0R6@cWHA<B_w9n?$!)|VCOmu^rII>~Q9Blo#y~YRqt#@*7*90;+9Ja~C +(t0OeX}i#$0Adz1#{r-!o(~Vx=r+gr;dKv26k9#%7d|tvogL0<F-)~WZ3~~6QNOtn9d+3T{>UO{cTx; +cTjIybR3juN>SBiCF^`I;7=hE0qiMAKj2vHIczepDFWw>3`lNXqv?&brUwaGml2r&@h9=*)Dlsz_~RH +Mj8Db*<EP~~V%LUO^NIR`Aj-p|@DK1~A#cHhA~54mnm+67E@p#DyMBl`MyXsa!P<MoA+{ICU-4#%+YC +7A_^T5Hb<&h4{Fu6HLSELb#Kn_iaGNNx+9t(DrXh8X#g9M!D8Qh-dG~_&QYwI*=c16{q5<i_VQZ^2X= +G}sX+$qmmW8K|B7_)jljiMly&O*kOwVg~9Z7LzHF^z&1ZL-U5bz|$Cz_efCqr%0xB(IRKaIlKCd;uQ% +Xk{X_qK=~N54VdNmN%jHSh=gTD1+T<VedGJ_X(8bSOOs8J|q22Umf(ptu^~Un9A&4HT6DJWA9m%SIuP +nnm8Df=7WKQE%@dss?degU>jzxJ?iD!KtTRmPYpRRl)1BFp^G&Hm=LEi8B>f;B0`xo9twh0G}jX#@42 +lm>YT82WrM3ohPGr0C9e<=5HC|Xa-z51t0DfOv_X(7Gl%@QX`E8IhW{FQv9GMxKBv(LxRQX-RU0G@iP +(r{$O|<dCl;-yaQ|BgYT{4<EI(?JJQo$ZZmK<l}LeLAU&(3RZ{HB796z#424plzZChpC|<OJn3o`K>! +bob2Vb_?YOCSxWCH$cvxRU8)ZAX|5>SIR{Xr~2K5vpdOU3!?bCPuxQ3RGW=-4%4D{G19G^K_|rT}bFl +A0K=slg+{A24krRfUQMlqzUpu=9Z94m^IGd*^1-uz0?skVP$_kU`g#BNy&8u()ybJ^n@;N&*Da`XkIJ +&8S-N(Uf&W(Cak%sqjRL8kCgRlZR8YL%=y?F^Kj;)1C;im268`JOr+S?P0J@i!gqQ&am+<wnglTLR>Z +>QJ}F9S3*>Z%E5<1EI-z5+AydwG7^v4wAtVYc;4yFJ_ATZtg1W%p{ORxV^S*!hmbz#{NM-dgdvw^TJX +RC3Lr+2l_=N3ftq=ufkD1tW<uH$ZUP2?6XHX+-x>J|wL0oSa5$86_eMf%1L`#yEk-?s<&D332$Jppe) +PfYJrEo`0bY>9Ta?RRAmCBx3zmAJidh;gdYjABbz4yWptGYXsE>)G`whE;H^|4jQv@;tUX@{3-qw4DL +5I!|y*>?ZhCQ?j)Im&~EFthSToHp-h{4f$`|R?s6aB2K6HUB=8~!15JABvog@kBgM{>D_P23BU5J*6$ +kcun>PD2~at`aCWo!y8$XGFQj!bV=;NdRP2W#B{}0?iy%!gkfS87NXTLp}cv`|I&N<;-@ASO0xoww0Y +}xhF0l-<>q;EvZTq0>L-lF&qSb|8h@J^1@Fhfv3GrAbO(xRI>4WV`o?(z`JtB1vfecgUk7vqK`LlEC$ +0om$5<c3zgBtjC9=3<74f~nEsekIxrwy&y}0*LzJZH#DixQ<_{9B*%%X7AS)mtxR<;VohZnpHc_~Jdh +2+bkQ=c(&VYh_Wf3vBVwAW7d?%R=RG<m`C6<cJY=j;oi<_)23w9ZBo<K8bpg5Waeb7rdM+O$o$rCDTw +1kJ=-wfEmu2!!yYa$H>KV;xnB?c74K!`i4K?pxkf^Tfj388~viUgSD217B<qGG=R+C*ski*(W>OP2>i +e5YDV5FA8yAwCZ9(y3*8j#tg|nSGABCt!^Ttm#g9R@(FZEpiUhl*ACA1goOKpFS@ZT8hmo?iJ(jjHcO +nS(}~O#N=lqk2z8ER|@~d-fGQUW}R+MRn`qA)O6p4elYO>c#@9EpsT=W!eYP$nuK7;gMHL-)iH>PG3y +MIjI`JB@e}xKBNKXtK)|xO{Rl(RL+}&=1S(jFy$A^fDEbBLV0W_9`6I9nUyBhb_z`^Tbb$5%n${S>ei +*(EI*!mq#f5s>7DMhayT0hKdPX1`1%oYV>}qG;K0EqoZ1O}kgi5^LAzd6Mqvs%|8G5;(`A|FoBhYSS( +lAK}`-qM^_&aOp<B%Aklh9V^2cZf8WVLad33T@7^P-&NlR49AZqm?t9aF>c$Rw6dUH<41Fj$A7!HA|e +YIr}=+8|_&F9rpEov+dnnwGg|X$k@ddt!Y7J129UR;IrN$|!EKJVm<%102~i;9?5rej8a0|GP9hqL78 +83}<vpr=PLjo)`!bFaT}l>o=EYrxY{kL^Lx19tS1BpMvv`Q(h*8Nx0CTfBShRLcSa^?|PA$ysJQRfV; +uh05%su{yfv>!DH&_;hpN?Z+FCaR&;7cI|z~~cHoU<6iWHZQ7cgljabkf*J)Q$3pSXmy1Z2r{kQ8kno +RapCsE8kBq_pfODDbOGIa<a&1Pb<Pu3$MR5<*Mc(rE<&=m%tUP#1~d4ti4(8&<YT7enE^eO47RSCPOs +<KEacbLHHSC~;O*90q^54<)h-k!Y`PyYCnM&tKy9{*AMX}|$FgdqZL4&jbi6Bvx-IYUMgXyStzhf079 +#rsPPelV(#m@`k5{)JvIM;Y3`W#AaF?{z~rP4^nNIM4Sq0s6~)o>~_99%n&U8VOWM&PLD3!Vy1`e*%L +{{14QCb#lC$0bOJ+Inl~q&kE0EDGq|rYmdnu-V%$`vG{9wE5ZGtIS{%sIoMm^RvZENCG1%5vdy-EEkb +TaVwEcpGSS>-D>>89ZbR=9$wx=56`qw~h>0|=GdguZ9}W-u#AMmx87O8dahL{`>VPFvJKVI33}PID7_ +2nh8E-ED6&of>h?0dwzB8kUmt5v1xhXT$iI*T6bO6ajK;IBZVn~I2gT{rUE3r&g*XU&xDR8Wm^SSP}Z +JJ7*o}6qzwY19!_TZ%2SIJ40RVSR5Kl#JAPrvnrS^FefQfHVrU*ySdnI^~xr-EbzvtN@tcBJnRL1>yz +y$l*=?QuNmPHT->Lza1J+h<M-SS4T`AML`K(X%0U&pJpt4efO@o*;)?vcP>0I)olpo-Ns*v+a0x)Kyh +c6n$PP(ce?>9g>|x|5Q8!9bWONT2imJpstM0;9#*dotZzm&2zfJK@LMy1DZ%l4r*s{g9zfLk<u%It#H +OoyAZgi;?MqJ29b%*<RWc4`d;5yFNur==ui&BA&5gRu0bmry>JR{kv$2)xjHVN`F1R@Gyo)GRaSeO`2 +^|4m~huNE&>7|k#q3roG}L~gurphMD7K40hhtH6!O-zSjt9K31OoiGP8rH{xsxv*wH=}Eksmk%%7bkW +N_$*DDgR?8Q96?!(5L(P@V^e_1Yd|8-sFK1UzERKM64ltzn5Zg=$7jy!7e;9M{v&Ofs?OwCkCXuIWq+ +o&9yNa5D3`DeU8`^@o`lkMUoa-wFqUidyBEEPn;+5BSEMmtVB&b#^y7GxZ=^?9m!)trpiwrli(ql(6= +W2_~wNt8A@(utP@$6l`J(XNVWQLY58~<Aic|9lIb9va<9vQiM1*VuKgoBDM!siIk_&q_UYFZ?np)!<l +&B^=c?F2*1Iz$=8?$^)Lm&;3}F0A~BRCCS4sK&^k351i8P5&b?f13&wpCE(Hx@zMe*m`ykfFaA{VFxl +#l;hEAkd#bJu1V;b-=_2^p-+Z6wrRbHE^pu%=8yYTImtGuY?KjTz#m`9lQpjUfcX|})<HLrs`3!~6Qr +`=4Xc(Ai8N1`qCy4Vb^twQ>6&?s642MeW54`yhQ5ZdF`MiHrbN<|~+s#ChOE-_W^89~3lA@iyDOX9_n +do$YX7<cTA#9cV$Lw>yjq-(g?XDO*7$EXQ^FmDmM8>*qo7yX11?auD#v3`i_L+NbhsXnQ~n4a<zd<3s +o0-aj`gBEgzNLm&*m4Y5%%LAw4hpj~aole&GjhyQSFA?&V5BTY5Eg;YUn*{J+#j9)1!urYdkYKE$$(8 +jshtn)P8;P|N?+e9Mp)&me$?tT<1C9xh2oA&+EG|Vi;SO`G3~qRd1}0nP{t-OEo&Q~z;0=JMqQW^=Y~ +V}~B}i7S;E1fY9B^1Ra*@*In-_1uOD%4|dSx51kzB}H%jBB<^R|kDt}n~-nu)S2Z<tpyWvL`nR70>J* +1zPGnIkYhLG^OOBJd2gEb);Wm=Pl#UYgq!F-^Hr!2CSYe&f1iSJxbr<JqGtcAI#r%S+g2UwA}M+{)&j +Di2U%BHec&i`4H5tHiFn$abkS{8aFu8u&HgmFub|nAjcyFdZpwGy}0tCjwuAYdXde_8(6_xO4{v@j4_ +oQb<xFsGivFf)k~MZU=`ngP&a3XSjw#cS(maS&`VoJp`eBKnFnohJf11DsH|xU=zn*u_KLjgDZ^Frxu +uX)hswH588Xr)3)xaC=J+_1Wdy~0<-*sS@mw1g}Wt9WtfjiF9e~H8tLa+D<LLE@9$R{d(tqsatyj<Q| +e%N=~Klpp;LR7he#cCDpn_4$wJ>lubX<CV(DmwQg2dWLB8JhH(dcy2vTj=F&C<hr@axb3Ov$ZW5>6o* +H^}HgSwXueRp7VjFrk|yP5C`FndYox09)NG|wq0FThsyifet%0o@Ewn!)9fDc86kbk68M^anyqu65um +2wVqZR&^j~<;KWAhX+NjgDby$lTkDZ%uxVXx!c>V$ix!;;NVKnq64ySJZ4A{Zm}s~!(&Q!u4!q!%FE> +v+{$2#*~y+?W<Dv!I0u_Sd*WH@kSk_B;Hk^{pf_e*`l~B0I6{y5LuWiPD*^a|@l+Pb0ESqk=i%YURfH +4Wrkvs0?Mgo0MDZSjjn3Otj)^1OF^)duof$Pf(@KCd_P0rXZIpbtS4cEA7I?_ar(xXfLzMTeUvEpo<8 +R7Y^G<2Nz3M={QEcnY<O_&0`)Wcj<?8gqVN*mU1w-a2*f|pi6HWRP9gB<WtOAz^Q<P|ctWVcLo>_p)D +CjE$?R{|g!BdH>Xk~v<ETcW5;ohzLiqDoH+(+cWk;k6bw*se%v<di2dGhO?R*<Z5Eyg<Q1(Bz;1Uo$d +kILYXLtQG^m_g2n<EH$Z_Z<_sV?1CP0M-^RC)8{12m<lZ01QlE@#(;dt?g3gm}6_|wm@G{bsYy{z-9m +v*ABYkGAdEy;h^^T$`O`!*{Z>{u7cZ@Y6u=>+hKoNPGWP4Eddk1p*j?@y1;Rm&dbXLPoAK03t>Py0E~ +;C#6(7$NZ%pYW9+3=jw!&h-GJ*3*z;W-fCW(}sPrd8JmFI9Je>g!OWN&{YK#XCwk8pS6$&{A0IB_MS> +}{nYPb@a2-jU{1OW>88rQ~even=rv;?oADIz=eEY|_qwLh1byJ|YVUD2^_Imj3+eYk>_PgT%f62tVl& +8wHtHKf*R4GVXPmt$~MUGo-V@q?tv9hXu}1hO@wXEQv}z%P%d+BK7RO%0?2)*q5ScIRy2m5zb@${wtB +0a-Bft;qxTV_pZ%8%A#3t;Bs+o{V?rL$Jna3}Ml<c+_m8A1|p)heedK#!ab#WvKftKpy~QA>hQTrbQ2 +(^VB%1zjb_#FEUH+yK93R^V|R=#;|i58_N*%A#=XxFcS~(20&?Z%&G!(%#JPF4!;ec+pr$T`-TSBzLW +w#f?@z6tikrq#HdAJqkDJ}+dX#<{7;x6CT!3T#UF&wbdVb7!2WHmk9C#sORPwwsjL`#_=@y^9DCLI2g +EE{q1d{Of=55bZ~k^*bzep>{8V_Ls1y}+bxQ|Ah(wMumEynX-e+_Xpa1y&;+_BV`*&~spKo-|rTZDi1 +khb=VFGVQJmdzpz=eSQ%MY4x<hvg5G`tuXIt^43n$MR6HyWD8(zxozJGV!A9A0Uc9_VQ@AYC`b4lo^T +S;Y6cS{Wh&Fr{fw<jqM9zGXS&_{1*ZG7c)Qo4aNl6m!pXA#e8*f(GtICE%C34zUjBC!LD~y%UHa$T${ +fZ)flitNus}oW0eRMG@$m#4Db40lu%Dk9{J*V5~+_vS};2Q0&KDh?co<;XA)DarbHs<=}MHDgL=Soqy +xJW0@a@=5YT4n2#QQ5zrApOS-D;b0~JJ=eqqp0-jR>!K2#Tky;bq_BMCt95`1E&Nnx_=fFnh-X}&{U@ +qt?ZsF2p4o8whz%7XFbm-81iXja}GdfZ;8M%Px-Jyt{c-o=h;EbAAG<b}$%zcEuA~68m<+p(@dI5uyG +7!vnCAYT<6Rh^5N|so%faX+ZsB2d}aZp4`bf&|7`hR9(cmAU{673qUr*l%r2?CuuH8r6|Yn`!ggubMo +yGLIFeOK^SP0IR0$}g!FdGzhWhYp)auLv*n;=QhLRvUF0o+hX3CaJTe&;`S`W?nmBjSg3m+y*Mg;946 +Gj9%=pEYm%?X=(`fW!5a))wOJ*vfeQI`V|7agp((KIPn%>u~~?Zbf=Obny^Wq#-tWOcVj?9<yciJyA) +fl4o;|s*7Y)eFUF63jFr^xfKPLCN24iYOKhrFHuK@RXOeTx7DjS(b;fEPbffJ!eWMlA(mF}ZKrCq_-{ +_^=Ut9aO4L-k9!kw{FRat+sDMlF@7~Wf?3<<WP)xi*s2r5Pvk5PD|YK|};M}MT_C3ijbSim!y?@9E;w +F&q&6S7%F;x8?kaMit`1$(tjuIVh!-ez;@eCuw*O6jd7g8fulREZkP^`+w-lS)SeqM;??L7J`C5*_ph +hQJs#Y8-pF#wb9A2<x^kiw#}8vjnR#5JGLC{eNauii5xx(!sJtngcbunE+q;6mn@x_S)6f+io8N&INE +xMKWwk?GUk72KwXZAxv%-c?0pA&*bNY#svh7NM?D2ue1-(%xjk!9Y1c98-pw!_VL;eVa(ysUf(n3N?E +(|43mSfCIfEN78wFc@)2(yaBddKXy(I^l<45S#R^EhT^fOD6bQy&w2JV=3VDPC09mXpQo|M^=AhLG$4 +ypa>?n&HuXxeilt!2qS&eHXF3K6zeS+6tR+|K~f%t|Le`~zDLsa;6mP&n5WRUKr){<6>SXqtG^w_T~q +)9HZ2rEGce0$0Zm31@6f=S$ZvIKqH%%-Xy+ZZ)dVtpfFl!N}K^P+9Cy0+DjitkF{^A+8W_pg@fGiIZI +EwLMmF>P>;C$uO=Ng;mz`Rw(@`*&w=&)>#x-d>)+d42Ko&qCLZ<8izOMiv9PimPA=j!6~pBO~9=du~K +0d1zMIn{tuljbHzO2Yqw#2CH!a{~x1&aOqE?_9iZx<3pn_ocD;`!Xx^j+4@uQETl(&oc->JB5>)fh~Y +=yFUEvKWiq;r1V5GS1FFv+R)Ti7VaUn@hBDow&x^C~p1ps0=`G=s!!$}<E+wdt42x*}qbgjTS)y66zf +^C|A#(E`!a(hN(&atAm5JqoV`v%A$hoy8T&{CaW;yCDeq^pYxr+-!*YE>VZ>r&NVtl=a_}ZJ#3*b4U5 +nPAp&rf$F#8(S3a-<%8F$z659C7;iiO!X6v1j+a8Fa7K$Jhtp;s2%c4$XPs4Na5j@XUVs=?j@l?Yxrv +=P6JmcrO!Rm_y=bT(N?=_Jg$y4{jrh*CsV0JNYS{{1p9^PXB%S@Bad<bL|}n+0hKLQ$H$m1NG{f$N0> +8fIs~%T}B-k{(s1^eRlEZ*StJ{(*Kx40+H_WN)M}hnCJ7z{Z5t&2r$T7!IaEo!IYonI3K`d{!_}V$Bb +to4RBy*;(J-qrp=rWVX;A-`u+R!(EZS11DC{wHCRKtD(@QHRsFiU$+)wJGt2S%7N*H1d+#~uL`zgEei +$BJpzp#mMlkNYZ{hwr7+AC;-F+}P;KTo8x_?C%FZ#Go`@jr&4np^2rZ=dQyz1j{fQB;&p`mGfN`dL8F +6Z;R_J&K6(UtYGW~M$Ggty)(zeb<SntLzl>s-A%=fYw0z73Dh@X~><wfiT1pNnU7Xh<$y=iZ&Gtu}dp +NIYNLz@6VyiT9WIEkP8&cR~0C$LfSInKQ?q9D`>+2VCa<6>2(q>Ht9-iA+dWJ&lqgP_u4vY44V*xx?7 +4@U;E-?&9ZP`EU;_8BkbZ1JJxe^?R?5xLbz~HfFg^dgEdF^yyRauj04hMSc@K=0DtfH6#6XmlUvu+UC +eDXZkNid+>l?C3dh7>cN9&#h$X|=CyiPhu&`I_>!W!-YXZoQ_`DjLYnL|nWtiHpV`xxb;Kp-1GMq$-u +XQyrZe9e(YjZcHd2tO{3<|ABKynSdb#)D;{5f+<+GPB&)(@13yxz$3WpGBx$e<AsMrgi>v!xd(HZ)w7 +<bAFjS267@2nFSh_@`CK6<E+i^cnQF9lt)#+Q;9aq!=~ImD^1{Y&U_=&hZdmuz(i)tQ4R<vj~Y)j`Um +mwOt49{xq4OJd&!);8<;x1;Hhb<p(eVsW@87JU&@pykJu`iSmJ_=gJvedeLJI(ZOKP{OzUjqCB0Xrp_ +DbkUdIK6l;Fe4r1#|4h~s58QMXbh2X?_FLFNA2=?|b;F?1Qh4F68-^N?&leX#1>+Ed+)tL<`^ZA9K`) +en1@n(!!JUq}3*OG|T-K(W+Emm>7iTf8lI^NITkj!+$D{R4=iba0UYF6U>NWnqx)2ka_t*06e_rpwYD +`-m{l9#VhFBwbbFSlQq~c-_P4MHhB3+EkoryWWUz<h}-`ERIB%1n4%*5Xus$GJHr{8dCGLHJy@tF56- +C&pxI0`Q?-gmjme2{Av#5%!aa}u}cfgk9H*A^DPh7HVF3(a6bQ-`q@T}BH!J07#&Iv5PG*wDjpn8!8l +tLrj7`fpH60|XQR000O8^Hj4?!eDR!asvPWZwdea9RL6TaA|NaUukZ1WpZv|Y%g+UaW7wAX>MtBUtcb +8d97C4j?*v@ea}~zuF$5a_yZ~x2_bF*R%n3-v|3qiGHDHt9c-sdh4^>Iv6DJYSdhRkY3ws+W{!`YUXY +J_AeEL<-wCxNg|2H*j@Z3!Wl6R`4AlAnCE+-!YaoplxGofNKCpGI0h(Qq`q&)T#5yAi_gFVhXvO8`1( +z1GtTMVLj0H4fMAVHoj_|G3vUR}1dzQs{sdqapCdM_Qp$v0^K}Om-AuWxFo=B(?i)J|c`w(|*l8ASo- ++yM$UOj*IhFyQUx_W)}GG?O&zOhP3=#dRK78uU90;Rw-HUSD{9hb7lz7DU~Cvbwb;CfsF_yE4|YNnud +MsRfT<JzC9<BGf$)~(0~Bmz~S#EfBLly*aIy12zS$6`em)9MzhfSvZ}@v%9!69-U!6=$>CEc4=n!Ax- +%=nmZ5ZZ2m`@fvq{nPpiaxwX9{+#BK=Y%5)^w_l)e%g|p56*@yG;TX#;$ZADAMO^jc!nY4=lB2nn<na +@7r4<aTK7{%Rtj9mHgw;S}BI_JqM~0-siUIVe8iYz~_SBmn56sWyf>zqp+~q@N->gqK)hq9)o$h_II% +W6!cQf6Q+b*JK3g^h4hhfbDx08Cy2iPWGCdl3zC-ft3b}1M7D9k_ldgqtMD^amQElO!8SXy|ZP)M;@E +V^f0CvX6Bbo<V{;l}91AreVw*s9!Vf6WvK_qR-ihnDR5!H1OkPD#y6Kd(yCs)iR|@x}A_pL_>)Ipht> +Rf*iEJr9<pLRC5+CjGdKm4>?yODG&B=*idQp}ky<16Jgce!)91zrh_2&O<|>cfNHk4#{tqr@&>FZYw6 +hQ+gZb?u6SX_g9`6HPZIh7}KvuRbkr+l7`zGEjSB47v%D(b5Ns)P=i+WAzkYu*5LJXrh6Jl$3P4vYq; +C{+i)|Y9}xL0fgij@0Sc`uVd~9C)50urT%$9`X+>$?d$XRO#97ez7|vtD;hSHI=Wnt&ZUnv;&^YqEdt +jnzSN*o5kGJSx)OWtA`>f(m+H8>0Zca94+oAx#Gx~?}{kZT(?Gu%v>_{U4dabX!F>nyNwI|a|n2_hJ+ +rPFQ?IZGOfrbk^HWlC>nBOYx|1Amke|7#>jZeyi>i%ArfY0M)HSqN~%9{pMna_M3C$~i8h#%B}BKrkU +O9KQH000080P|F{Q2Dq;L^Tlr08u;u03iSX0B~t=FJEbHbY*gGVQepQWpOWKZ*FsRa&=>LZ*p@kaCzk +$YjfMi@jHLT6>1A0f{-|qPG^*18rQXJO;g8XJ83hLf`Y)2garZ!4v@@v{NKB~_rM(hQgZSkohfH*5xB +d(y?sB9p6C5F&2EZn!-`!~@*S_bv@7b0t?QOuRH94E@)iH7FIpP&1-nh#qV5IDY8Y+%tgBnGSiISCR^ +&WoTi(Jq!MbhQ!GBzE1hwNiOW7`c3sAFdU)`{JJr7<KKl6pCBett=5iJ0*V`-H$(Kk)qcCc^GS<dq!O +FMwt)pAPRcLESVxU_Xvra~;Xyleo~mcv{@XIk;D<1Oo}oVT!jm8YwsEV?}n0wmUQ(Mc$r_KN9naEufV +w&Q8l;hrnbdI8(>Qt&%E^Ig$xi;6WxgX3~bR^Sn<4EC<qi|Kjeh39#T#R)_5t?RO^@9@l7y~9x^wsl| +TxED;XZ;^)Zvfgpl)CG*gc8KM=@A?+-JYl<ivp;9RmLluU>INB^mdj@;Ah}oogOPq^z1hGf`mq-JTMK +j6ZN0-I#K|qM^16*1kd74R$Gfz>0g^E_`=9i9Y(YDm)2zCvZqu^JEfPe`dN>A7G(0QTg@wXv{bpv_%_ +adx)_se#SM#lnUZ$<!PusR`Bi7*e#KzX91JIebK*gB9%Q#WgIt=lX^o3x}E!%+zl_D-c-rnhjFZVAmB +K8IZ4Zj^(RTiKrYSB0F{m4`hLSE{*|H6m4$<4lL>$g1X^vqp)!xQs1Y0_>xw+^U-|B^x;c|?JE4w}V% +R{(<RqU7Da8QAgo)syEJ-#<;B{`<|-7q2hAeewG6;$0y!y{-@%jdWG=Brkx6q5&P|?~ZH_TPrI^()+{ +9ACf1}pFa6V^6I-6FD_pE{qV}ZEe*~{pQNi3csIA;HWL<>Fezg23RG`Bv*Y=K!H1x@$OSZjpU2fcVt) +f=j@Y+Kn<Ms`!{eJCtaZe`tKels^TPq$JnxVJMgmdhZ8cmh7D)mmO%k?bmjudFR8D9yz)isDc1UwCni +&LHg#o!zs+5_&xLz#K?10@}YWov!c=rvx3zDQtcRWeLMcwc=MTY|OjCRL~c^%*Iy$C`;Hs@<3aoT3v; ++E6d0)!Gus-7T8`8f-~7KZHXE4HfZQsU-$uQ=GtioI!jpvRj12iN@veO5|N4ZKK;rWT$nrZ!->L5#*4 +VSu0kf?DR}zL$@#V=&)v9LWd(jMKnGPv!jFFt{C1Sy<1?V$&%TH0MnMz}i#<D1e8~NHTE=PlL4J)Acn +?-vP?tC3b0-ZG+bTF^EsY;Og@7$E)k>)2r+7_kKj;9qJ>(cCh3{U2%P&-GDeLLRBYb-Y(v>b>9S!LNj +MF_PK%$hdTm^Y>-V2cSfY(D)IowZh6~j`p7?H3OVE;T7eSLgFaeScM9%=If8eJr|N~JHi6faX~ws82} +0wsQw2jyLKr)^x@r;VFQ`MudFtRFF_*>qD2mS@q@>*>zIqF0xi^r>t{zT#24ZiIqBPrs75nbhH`WVvB +I||TLk1jj=y8VL64c1{tHY+^wmRK*U332Fr>ipE;=iw3etW_<o8_~*UZw5jD*gHTkD_0Jedict?w7!4 +0UIRprGXV+Vn`$fz>q)+5LjRkD4Wg;Mdph&9Gfg6N*5}>jxTbG<d_yV(msgZWI(9ctAS6Y61H;{7G{M +DEoHTcal5z>aDc!85Dvsq;;1L{cZKLgpda5t=ogIk_CZGb2E4l;T5w3~#RgCcoOk%~pW)d(z0RW@*EN +L2F*qDWah9bOzF(<8wk&}<{uEYW2^xkY=j{ClKgO^>?F`=OO5oqosY3^v`{aftXh){O$_SjZ-XS=72z +Tv>RGM6;bM&HfURA+kaBdn%+||3%lTvh-3Q4|*t@>^t$CO$G38}=gzHLD*%Dq++^gx;;Y?WeuvFeL5k +HaY#_o!`JK!!32NCP;Jl0N)Eo`Gozg&G|?ILf6cUD~3%D`7N;ojI={OXJxMAOLxlS?|zVS!xvxjrpJ@ +-g&LfVhm`uoj^Scd?eqwAKDH9Lw-&{0c?VC?+AJfW&(nabVHGg#qO~MC(=lxJ!PrAPc#{IHEc5c@jf6 +rAnC3*v@mw?8(SN4%QE7Fyj5F9aE4u5ml$<G-04^pSU*et_aDxUs*b>nZHcs|u;SEG@6j4U)RoN@NY# +xI2>;Y4TLUP<Ov~9GkYEQC?2V=x*Qbm!$ypB<kJQe;Fu62`LvySG006QokgKN<lV)kjbZP_yP1*NPUZ +dk1Lkd<LqSp#lh};A^vWRVp4*uV6;6E%e{M?>~v7wOT<_$EZBDYzB9v|q645E-S01`#)QF!^;5K-D;3 +UC&K=VS%)0oiV#Kv>LDBdDSns!Nw~xx!a5Y1JvP0S@P@iU>}XA`|PS*Oq`HACesx0;CZ^K7&PPXZl#n +_a9&nb~S70@Z;4Lm^k1Z7ElJ8r|LO8_cWmnLLe+GDn{mn;l1+XV6O;yz{1Sf6-9D;!AFX$_k`pQq2#< +n@frtP!~~FRjK50`R$ql8dj>krJQo@X9fe8zx^EL3G4DQsBb*P|7Hv@|PR)7VXFS2;*}5+ia3aBx5Ec +HqnU!E_CAm`&tPBt3l!M4;<~0{8@P-IS+DEJpnxKQ?<vf;5JBO!qClJoLZGOcN#+l#`|H{ZmJy@ZD3a +5qxS(6zU3c`ve#RKipbMDbr5K2^!BnOFri%#Z_lLN+PdDre;Q%Y=vw6+RJoc-1h(I2myX-IOS_FNaO= +on_%3>9iJufkMxTFVO7O^j|G98ow~b2QxXuqc_fo1P>U#0?GPEo8^}NGQ#M;Qa?UM$>S>LKR8V15;<H +g)uqBB2+!*hZdqRMOb{LfZRW8!HSjX2KQ4z>Y<f5UkUy=+y@~oY<}xcsCCLwC0PobuP3?;lvR&7=c|4 +bcu%BcOMarpBhMW|xK<R&;@KErmXRezwXT;~GMG!J6-zxv0X}Ww>RIef&ZLY2ECmBVh4azbF#TAeZ&W +HnbqT<u=#s=09>L4C8|k!mt=Cu&lf7CSUAv?Ms~nl9$vQOJ?gCYyjt(r41#5SSj;7otPHn(45_mSds! +auzp@Qa2qsr})4&e^yGWt^E>kgaPdZutNslz>}f-vSJ&9dyi+$gCbkZZAlvOHR*7$On$Tq+hr*KvN>* +ugr0YDdgeF&nGXv^OvUbHLqtYN5@HbCP@`>9pURwn)^5U|O-wL<CM9YN8WlyQQ2WhzTvRP<aBO(%Bg` +c+#xvA<VQJXR7H#b97bnP}Nl`ni~fhc55e`)e!2?x}`*Est8mwzMPissn(&2NMK%*hBtqD^yh<Mu%fE +UXQD2#7bhD{)?8C`Rh6NGu&~4}3zv_py+T2fDJ`l_!X1Gfi+dc$B<?dU2^I4J$Bb~_qe>3jrw|8|M^J +5>FxWne6T{bG*o4n$$cNV`O-l)t1j_<v$T55!hAoB-Ux#7CBK^f0Qu3yGr2b-x5qP6P$R;kYLyD$UD- +6{M-VNY3WxYxdKy$|)0BoCz?K~(P;Rpgljxh+xNG#)mDyc|nXX3hxkd$?OBa*Vf+7ecj9@<8Df&rjlc +Uw*=B}Nxm`Gd^RBajS1dOFXnRj(Gjve=7`?^Ia(W(!8tcxV|^+8`lShXX6y0cn#AUn7bE+1oycluWje +wz6s~!!PVPs||Ea-l=v+TJ3dv+wM45Adj-SDW^&Te4^189K&xgSvXFGE*7X<S_jrJ1;ck!?<+fa6Mkv +n<aK8)zS|br7F4WhxuDR8`t341WTxgD#!gIch4Hu>L~WytY}8J%=1X*Jk3~`Zc=!Pjae`e!@nSDLykM +@QgV{UQbI1ab%;A3#J0N*vn8&FW{e6ZxL4+Ad<_cpv#Ok`fomR|hn+_x<Kmm_8F~XrbpeaIz6qHkf6R +DF36-EQiq<q1IwY2*tBhoX}wssE<4%7qRX_xqJTPg<A{fEBF=<10&%NWp*C8+)E30u{YfbG5}g4`8l3 +4+WqpXlU%FQ2|-UwrWym38be4&^|xX*k<R?B=b6BSNyMKPoI2>zRJ_c#<V2c1d;U#?gcaRU3xd{d>gl +cdaRySvbV(h0@)jaWF14R9KX7OWnR|5SXy)lTWB{CW3HWW>9sLaffzvZgpn6#W*h5&n}oJ5<H<>*N$G +QsVt~{O$9Z*N6D#yVkU>|t0nuKc!@|)SZ&X}{OsDo=S1eLN(Qk63SL<-*pHyekrrziKrxPjXe>Q$V!^ +@Pl&y_0f~I>-$E26|33+{dkeVv@yh~dwR}OOGTagU=L(2wdrF2Xt2iV4-40~8OQ?>C2Piq>7qe|15SF +<S%)-?jTF@8<t)ty;mIBn+6rZ`gba9hi);z#CP37Y#Q^S@LF9A(k&9A87U-cMYG#9n1}38Vok8gN8$0 +AM6?*w0-xc^6Y-F$itrf{d6<9JK&V#%V-jdSG{=%$0));Ms!16uhddDn~isjNG<QXcnmco>qRaJv-98 +aqrN|<5Z?*K&aGf0{*xx*!kX&l#VVaM03Dru4N3tI5kS<+`RJfHV1L?Y#u$vZ^%baz$o~_^es>=BS!b +2z-Z&uBn28*+s5iS7$xeIp#RVg8SII$@xev003VDzTuP<)m5+p|3+;K(`d9H){HZUqU%Vj|9>#l8RI^ +ROy)35<h`e?I^MuL!Ziw6jd0;h-j!LeyU@7m$NwC`3g$OW%&_VlHswdFIXKKp0py9}Z_nv@LZ{@>ssh +(74?88xaIn}}wjK0)O)SuM#R>n6QrW+G6ou!g8fMSE590Z_)OkxCyf}j=0{1YQ1zpoI*+@Gym&7F+M< +a9-p0J?WZ%-ziS63fIGE-aOWSF?9`Y^y`l(Q9D9t$ag(cdr~@e4sC(M1!2};96#*FS<fFdWSv7fKn_- +HBD0wXS%M+SQ_`hzqCZ=K>6re*)&md;7z*>X`Uyl33Ac7Apt>|md5pp)8&DF(H#0xJOI1EU-}cY(8^5 +qVY1y@?Sp!H5bB-D_vVt|xNSW;-g4YQ)(i3COHO?byycCy?=Rj6@v*MDpnbPjEMM9ZJ6Y?`mM-5z)b3 +kF`a^`A+;&l@9K6=zUscZw+F^jN)_lZuk|`<1Rn!O6OHHxfTo{=zeo|a$f{I^L@TAyrTFd+2EqKnswG +7Td*wniCi1H}T!*Z7TkwiLI@su^DR53x;Zg$0HOKsXz2X{jy*;E&FQiQrXB%6_yXMh4j2;ww(9XkyaV +)~~Hy1<rmk+sE&Zeh@mFVII)YZMDiPMsAEgt~Ifn!asnycwx`()F4yNuq4K8UKN5@qsMmSCoq_`Hd#U +U#%tToz|Hl&YUg!{vQ{6?<tbsTMM3;AN(R^E-)F4eEwyoXvY3L(4veC)It07k&5p`BJ)v*llt8se*B6 +yowb{e`RW~3R1)yl`0IrFj_2n03HZU^&rlc->*^M7w8#|$&-Jft4$m@oz;S=fW#sh^!_3j6Z0(LCmC< +-y@eYE0G&D0uaH7_y@0zm63cM1P7lLNs&DUbMsz8?_a^7$(HdZLb^urF!^u)bncdL3YHO%2YFC7snq% +YnKI~fedmypQ*<8>~Iqe@Y;Z7uM&H!LDzUsa<e5JXG30_VV!VY)>*X<6s4$vwcfQgC5g)2SJpH<-sQf +V_ibU#SVShfwb=ZJqwC<~LRDVr`*`X|ZlPj#d7ip0oZ~z-C*Xt|Bb0>2n>>(ZT21mJ*<`=?=iDd3R_% +^?gc|=0evaVdrmp_9Lgkk9L;UX6n_iA)y^(TGOr9HccfFNjvf975@cLO9KQH000080P|F{Pz!ndrZp7 ++0E0>Z0384T0B~t=FJEbHbY*gGVQepQWpOWZWpQ6-X>4UKaCzN4YggPxmf!nV)CoDKrKAzY&WzVg$ez +T;Gwj-iH6%M3U}T{#XvIR(s3dTY?f<^_-g>JfFwEr3_VF<-)$7)MKdSnxufCeS<^Sl5mS6Fz6YQcWIc +u_36xHSID`=f<u;UeH7j;?IH}I0>^%ZtyVpaF$lAUt~W9w_aWEs4yuV8pxKzmWK4hQyK-|_^exmq{t9 +VWWA$h*zD>596_%H5Y)Dfn!5(biWiO=a&iWyMufw;jvQMP2qCPv!G$rryJF1d^L)p})1}omiFpgLzmB +wMbJmNqWtzW!)yC_>ds%BI(<*EY9_^G&joxldn^`mNOnU$XftE$;(0y%CDAkS7NLq|B!Rps{2PX2A}; +(bXi$u*tFNSb-SR~E>T_rO%4$P)gF({e^oDeDH6f6HeaP8uN$rxI-+++_-brq-xV;BS9!fe`fAMgU7a +pDyu4*lw{DyvuYW!KHGTe<z32a(zWw>loBcO`o*oH^HHf(6T?)?t^a?f%G`<*_YKPE5^J(Ji@xNqc&x +LLGp^|9E&yUr5!JZ?s&r7~wFMtmhY#+eNIzTIXRS0-~Q@`cFgVll^C>C9?WBvhJj{63N(QNU|uIBHqs +FwUg(q#Gj?2@M!_}FSl4&~dI^m1x~ig!14`yL1>1T1gH7R`}-Gt>NmZ1Jk7xL~_x7bgVd3Ct#;K0A}$ +u^+Ke3!OCzPEM$c+Sv(6=0f2Tht1Ly`hh6!vXeRCJ8d1NoI{r*pwR2R^z9z>0T~C)&;U$PJO6vM>bm9 +={wF@6N{M&o3+%EV&z>K=e!chRcw|)c_fMzd+jt}S=IeQkisyCK0ZRzRtLvhzD^fexSz93Ro1$BTs=6 +k4QQ6GD{`mUW^p_vs?*I7HtG#sl^PJrj-3pZuOr?jhDgzCbgBSv}kxS|eR#)Yk^-aUuJOi#Oc?Z}O3$ +`pS3s8x5ONwls&S9RYN8*8awLDHhGZsRrMnRnp503W#3OX*UmRY-GOAZ_Wni0U;-`m?`N8OTbKYH{e* +<Qe0j~{J6VSCF0*({muz4-;9AH&Ok9)1t-|8V;C=|}vITlnGR$IZVz+I*IteH)*CjuBr+KOY_*yglA~ +kscf#?;pH5Ldp^Kt!9$^iPE+hwg4-%SvuWb)v_^YKxD#D;5iYrxf~O&2wNvn95$fXq-9aP561u$=S7v +Z>!1axIMt@WNLQHvehQkKHiV&Td(rV_x~f4d3>&lZCR>ZNul`vy3&u9s3l4MS84Q@6;WMZpzC#-2#7J +9`BnzXv5~*EK&^DNwmUT6n(<T!Fcm^I^?1kh7PWhj45|c$q)pG#+Wm%tR)6IyZ#Y1*MLbBwdo0E|T*^ +<IJ4te@w@8}r8hrUrA#R-m#L6}-rqr8j`Lba5afFDN6Z0T6Zs6PLV=UpuA1PC5@6Gc^YX=)9C;N``_J +UQ51nB4+2rb8i8!=e@)=XG70E+C{_q^QQ79_}1gIHsmhc;9_fSMD;}`kbJdlDZk}7hqbC1Nq>osQWhO +lVf3+9H7vGAKfVeO2%yS2Zn<^6uDAMy2w2F-5mTtH|NRkW^n|)?1SG)i@>hN$8ZjfMw&xE_?;Y#KriQ +Mz%^(L@6Rr1#!&N45E_@OYNyc!?@l(!+DkFf1o&{99B1cl{<<I8^$r1f`fG^bs#dtI>W7h8(fA7qY=! +ZHkYqRHvZ2qg$8FC?yE)t{!;YYnKM^iy`tTA!K){XN`nLfS^x0tl%h|H7<`B4mV}cIgRbO@mxM^&YgT +n&<I8ouQE%*SRJUVmsBlwqWKm}+sl#$R4l+tpGY$!k0X>nXxITk&tNfqWf%@TUcTz4zJyR@sZWXkbX3 +uyk6;ptGclvo8KWxVjfI>~t<o<5Y3rDxh@&<!plTNfNcY84VX!x`E1Du+N-O2iHTon0Bc@8G+`47^=1 +pWwWqR~xL5xFZ!=XrMz8vrytMgUFYCC3MgO*TB$4Mm!#wyup@QFu_3!K6M59R^)9#G#G;FjaAf>D`Tj +wofLloO)coRf5E_W1B$5}2B6weEre(w(Tbx_pH*YNfQu|lfZ$)UC5?`sFkW@uL=rtQ^)#JE1Nb&F;^0 +iMaB!p}OQ0h)k{`^`A(DL)`V(1!v%7PYy&4L;0!Uz=%aYSPktgrY0t>G}3ytR@>W`9F`DZauAhfw%;f +ObWVpoehutD%t)g4(PUlU0=usyZ<X~E5|K?+0!+wQp8vyns$Xh{^^_*j$js3{9DlYqMpk&XiQTMd{+1 +PJ-uQtS^*BeAaJc{X4-TzQB5UG;!WjE?~u1zZGrzv|IK;vbxy>#ZaL!J|G=yucW;?RK|gySZRX-h8-| +RF1aq<FH?GSwZZYsx00eo%x3bumVrlsScpS5ejGawW5~dI|nBY4-(TkHo-V%57XLH8aYtJGu01R38d+ +olcXW(0C<Sr80Ncx@w%0jd(W|%fBekgA0Yw0#Pb9uxXL;!S@X?&j(m<iT(<`8Ei|@sDf@{PVR}^lqnl +pBI1ns9HTz~+w(CV4XTtUOUc%0dli>y8>}Kd)G`!s$^Ycw?3Jh7Z-ykH`<VKuH0d?n29F0od!Z^(nbZ +6);?Zpksyq?Y`cZa+7dphpHfPTY%#>x+9wHRnF-&K-sAlapX)AphegzTFY=a}A<N})%C08up)4bO{<0 +x)*o7ogvUkq!an<W*KYf1m1To`$3{c8?5E2ypcA;+aD;Fi^Cz$t$d~j%7_#u7j+CLx|MIU>`r*um`vZ +L-Wa)oC0|t6R>eT!~mG2=@KH@G$lP7zCOVbXZ}0`z+@K{evFN_IPgQkxsp~?(;q(@k#*(Hm&y4585`q +A>r@A!eg`+9;Cy$5!BgyV5=W;`N2<5P2a|F0{o{fM`TE*tnOw*C#(|X?#M0Wb@HVeYFzhJvt4)$(N;F +G%w{LE;cB%C@F|nVWv?4H`z0^US|5mRqc&9MusTT@fl^gG5G<2GkB7XAR?K`XQbV}IiX5S6eqLX1B=m +d9`6TjzKFo{k!ql<{q@ojU3qX(&MF*O=H@@g544vK?mEpCR2|K<K)U+)3ycI-wMMXLf-4`|!>oHr1X0 +Jmx<QRSrk8C09Igt5&Tz1@_AD(gHet%G7GXgSspuW8MZ@G|kbQ({&#l3mkH58ww?#j?O?rWOgVnZOgu +aipKKbAf+NJQBx)2_#TySEKs^>Z_oHhaQejYou0LNT~b?5cR4r|4<0<S4XFeL%X53INCo5XypDAu#w0 +Q3J@nl<rGzS-Fj*?G1Km_gb^~|uKhanH}qT}XoIEQ$63Ij;MDE}0MR5J*7E8bs^~#4Knl+U1{&TZIw| +1K0S*8bLC~7hDsE+js$(Z3X8TKQFRJ~};##B=FiEytrtXpvRb<oxyYkP#GW~90hQ;Z9?9#trVvL1x=A +TL}{e?CU!jE~6a?CpygpWVTvSprC&?fp4DJ#=nEzhtfx<%nP+AKe6z}!-^q%KBTVY0`Kj&Xq<O~PXvB +M=v;`j!mg`Eokd^ZeERXsX9cL>(It*ro&wJ?k~A>dK8}WMDd-{K9E;vHeTtp^4-f0RhMk=)q)VL3{r) +ksy4X%xuo3#$?n@A-Hli1vwLH84TfQS?R)KrT`qf0a?h?#}c;Z?ys_I%qcQ{aRJcCc(Ud4#KEW^FB2d +z*_t|%ilHhb7SM6H8|JYC%Ax5M$7f|%*;*1DVr?u?ocA5hEuA0ALoCNPx~wTN^nm?JZ-@4L%YG9jPg9 +UnX%(QS*+zC?phxZzT!D_;)gYU6z3YWVS=p`X{&K}YYr!USIs$_`q3uXUQD&bnV@VNE+0<PL61<Yclz +VjLQ0ajnIpCo0_7q`|s*&nbZ6OGXoctVN-HVc^f&~3BF<cmg*wjea<fcjVXDk&t8sX^V>xj8kTau2vs +uoV9aPM6?yt4$NcW3g!PVHTv+c6z)ttH;C;FoH>x66hpTiNdCy`85)zp2`vL6OW_6I$3ExoZPA)x5FZ +GFDqb#8_w5DXd(AuUF9;3uf$?V}wNFj`GqRI@2!qBx_xm{%m>Pe?ih6KQeJmg*nR};Y`09BBr*1OMMC +apf!9k#Sg0D5nW<bk^6~kZpL#w6kM{!IWgq>eItJShCYm`GqmG5_Q58`p$KQk55^xDVR(rpci1p2GI$ +|?Qm=F!)|K%S)>>~}+`-R%)}}J@2m)&=x<S}T(HEGQ`WiEmUDu4E&K&Afv4@TA#&@uR);goABUMvGZD +Uc~nP7OH@vhCg2W|0iC`E>rVRg?iOc-ttO{U@$`P?cnMu-BtMcxi}Y*xE<$N$1^z4&*uGk%6aw;_bZ$ +6|DF9C86FhN7x?o8G16ZiRgjGF}M61lpu-v_N>B#wFwybxIoTchjTk!j$%8y%*O=)vIC9uUGeMs$10E +9a>2@rK-Prg}0GPr|qegd<uQf(Ou9awNv=0?AmpRTRhy75=zveoWSIhF83u)o?=(t^Pw!U)2VbkEI&f +P4F=&mg#H)2B10U|9Y0s%5)%dc)pb@Do`T<DA3vW~gS5ed@dSp1ssIQNhGP2Ud_<#0?6q?&EEJqkUsM +xJlVBu!;Zr>9VelWcgkCXzrX)`1J|<2j4DtyRc?yz<fwO53{Fqo^OsY)DJv>G3bpDAdUKPL5CnS)Gd6 +usv^8z2`SZ`-pp7#(tK@2XK%*J^K3OD?;0Dg>nDl24a_m(?g8yN&+$l>Y;1!79QP2~~Qk?uA-4Ff&bc +_fqW4V0`(%A&1HC$;Xqw|wXcBJK?za6c{2-lx>68U_Nn!4BI3%hxq~oIFjQEaa6J%<Q09TXL|8bOgSy +3aV>^NVEm_Qubmk67U94V?h*iQM2z^^mxIZF4&WJnB}J9{5xA)moR64jtBm>nl%Kp)fQgu*(!tpRBml +=KmBej6jQr$p5&bq9?kpi;y>ojNe3BSyA{m`EG?^1sU^EIb%0M_$_Z)m^hM-A2Ub>-^cK+cfe}xc&Sp +-N6(J?4Q*@m=%Hqfs-Ph1@{!cg$>l-J{RAKU8LPL&_&XCCS*a^d9g_LW!$-uHfXL&~oCyZ3~r!t4TW4 +DI9AWsQj;N*$qTFN1sj7QeK2S%dFZdL_IHo9JU-L`$BGHMdjCQpHXyZSw+k~4X~k_dA)k7rskY=y^`r +{$oN9hHzJ5r8*z<&2uVVm-Y|=sb-;afs%dz-)Su-vBK>*AubKo6t)kY^bsU%@>dHe$v!U^vF9d1DllY +AI<>0W}bDnCFD7kmI#e+w5KnZjb$aIlZ3W!+$Wky4oIsE|7*7O)a!s*X^z3I0LPSQYQNRTs~jVs59$S +}R&S)y@}rAHSR`2SvQZKxk8LVjuToGKSq|P_K?T$>Rr&3B63{T1H_2MnLcD2*bz7tB^dQH`D2;?r%RY ++gu`c8OwARYU-gZM(%|FnMq{?88BmF@hL9n$<-?Ukyse_qOgtdnq+*Hh5LQH%M-=;Y6?VLil=PbKOQd +&JozSjtA8c%J5y*W7E+o5ZqY*~m*-kJiA2L7g!0tQuA9JKmU4UnHN)BTUXd;HYl6vC9z{j|MtCGKkJR +<Zi{S-JtsyT|b+j~xCN%p~-2LgfSFUA0qtISqaN>!R*uafU_8#lAsRY;N7seEQ5@oXDyLf@w-C*?Ufm +fiud|xhW~PLgjCKiE0Z_+3VDCV_i=NTs0XgqW&FR2C`=8UZIEzw+R%$h0?jFr&1f+dx6On-uoLmoN9( +I>86>#z^j9zZvitJcVv|0^({u@5rN=sw!s8y^PrbOIRtSF?nPlJTwAwj!w|+%_)&*kLo$FdP_{r%6b| +;tbFWC+Bh@XIO;Kxlm*WiNJb5F=aFU>3(nuCCst;_O<Pq&z2zEM~MESjts8%>WcyX|!3KUE<8AKl01+ +V~$WujETEyrXZq6g^j5$@Jy#cHVzBQt*0bZa+1t;gI;z!XC`A|m?pXs%A2#>0LN3B1EDA-SixN8;+PQ +^F5H*jwI|M3}N1z5c5!qTqniFA!j0gTFy=U1aQCEilG|VeeFV@mQA($>?BekYX_zgpSVc+}s_hf0|6{ +yWyqdcWB0>(qY{V7EeKYgKt1HY$wD6@WQX>0?1##L(POoav=gPmaqnZx@HmBrLMrQu|l&hn?Fw2o?J# +<W`<x2_LsLcxQKwe4!0<1heN=H#fnhB)*$twJi<;#0>F4=Xr=RBR)~~kc_)o9Yx=S@NWr6?8&CeQ{T= +&$)K)jyR#P-vIA#mG{qQbT5d1<3pL~_I;37frfavyaYU|t8a&iB5HO)XP!h%hIE|MBF%Vk^lO;Wd)TR +?CiAvSD1`{T1`&$gdEefDe%7MEq!7K5g%0<Y}iL_oIT6>xI{T!lvLUHZ<y0RC`MRh)+cg9o45lrG*uX +L}8t4rT%A$1I#Vz@<4o(sKmor%;Jg_fUf){}t7+Xy9sxR*GTdfa)KOx?M8_nNz%2&c-sN=ywbi1%<q} +RJ!o5cikEr|Cx7UctIm0=Km9Bnbg6A%t_wjw;lHL+gEtbg{C3S!Z(RM?-AkoyG{Ww^Rm$TTrC0$L8V# +}74G1XZ-8WjZGN-K<PU7@fNp_6uFYgLs|3qxFjqp=c@;cNX~^?Z{z8kn>-F$!T@SjMrMX@HScl4v+h6 +ZM3diOIg6ahGp3D)QV2S9jn4h^3hB`i(qdz8pLPmx)PL@S9wn&XEFV}I~6AD365UdpT+VyTyPdWM2ja +ZPrb-*zaR4N7O9f8k>G?;sit5e}dZD1e0`~mH8AgVGl3V!A#%rwu#AL9A=86dsjU>I^xg}{pN22dCdl +?j(ZoewqXa`&u&hcNs&Qf!NGIt7Ej*RdU+Y@ZGLP(@0s1@znio~^l^nVf3qCwT&#xmCJs@%&}WmBa4W +@c_5<+DDpNj9L;>>Ctu!emKAd{}T)f&`(o<`W40MAAQ~NaBVr2L&B{g{nT{OpjR%H+v;vx=85TCt~4i +Z$%R5aG)_|g&D(Pbc`~4}zmlyuIX}J=;f>yG8L5-CDmvUhuvM22xt->Vm~H-?4k@EyK%l~k`i^^26Xv +(u^io)~83i={UQ9^w;V+qNeG{EzoBuqEPd}O8gZV#DO9KQH000080P|F{Q1P~m@<Jd00O5N803ZMW0B +~t=FJEbHbY*gGVQepQWpOWZWpQ6=ZgX^DY-}!YdBr_zliS9T-}hJGsB#gEK-hA{$<@YmV(SsBPL_3&9 +bZnTf<R)HL>2@PJa$EI>Azoh&-($At4l6hrPUIc>FMd|>GupDL_h6Vbk$T<b6eKiXw&TXtRA9%*NjyW +ty$EueRIQ#D2Ip5o<(g_!uzt02JAQvW5?2q2hsk}9xkJP=*rEoY}%o0>bzP#%d4JUTwHa{KFTuQI?JM +R-!|P4<?Ftw#(`!0^TmaDUNze-AR|9Ez5J`+jYC<fPY3nl*Rs7TD>+hIwrO_5>Z0l7Q0?_L>sa56-G= +o^)R!N;rfHjRu5%nX?bzSP5+)9m=p}^L`q{Crh@k4T$?K*rH+fb5%Cb7&vtvDPSl0v9WZ%E=kN4=&=3 +URCyyt&pH<JKZ`_-f0r?*|+w$Mg)e?^bKZ<_1Jc~!B_Bql65>tI3C^;lL##_Ai{>t*v}`yD=fTHlmiQ +#<rg9odHsBd$>6J+J!#2Fmf_)2?f}P`9et<W{dO8?t`0V-_t{^L<mWs!yx3zLp(cz~7;!4a}W`=95bI +Y{-jz$n{7ywqTijaW5!Y#kTq8Ac6hQMFc+{NL(%Nq3C*IxRR4EWkosU>xu;j6pb?32*-1u-ETO1lo#| +#tmL!2tYCkC5+L!^#P42c-R>Bx9AFte3;}2lZP)ybZH7omoV>`?(`;z=RTAy<Yi2xb^I;bP2EqdWWn( +QTA%OlYAH0H|Z&+|!khn+-)^?0Dy6h|;vEoQKkVk;n*j3q%Rpwqc-eB*nn%D#!&MxnFO!fVqK25h4(p +eL`fGwZF)9Ehzvfs$|F)?P|UlTzy_Mz;DKB0$ekZfa{0rLEFQTA<>AE=>vG63+bFJZrMLCAXh)!3ul8 +(1QC96qE~V1*Qk{MD{37*dFT>R6Ej#qtqwB9hUY#q^w%7&ax-F;T(04Qx*{l)Zj}&rfKzn(mN9_!{13 +*Fe@IYcL#IW8@$H`s%OQ<L{q7{*UbS&o5s-fBEO>o*<-$F|P~>-i<Xd>K6F7U|pu)hhW@n6q~@Gps=q +3gI^Lsske<MUwZucwuZSr0aGD~o&#tULkURg9zOplY=<Oz0~(jr8+ZddNv_&L13#geJgsDRl*-UF3}n +|QB^om85iyzQrj&5svQ2qa8k_Hpe1d!aMDKmxT^n70ppO?97r4n-7p<f%lmd6Xpl5MLmPD2<pjpALq6 +`@ixj$A4q>v1?;A`;!7lK_zF-&U_Ex++6IGfF0GqBF;D7S5;)NBfdVn=o#$iy4iJ_Yqv%1jNLN|<_QB +FnELAH%dm@NL}mY0p}i6UUbp4{$-z`GbVttWgjrf}Zdu8X5&MjV{50y}lHZ1PmaQBWiFW8eq`i&K-8J +Y*jhL^6kQ&$jYICiAC(gR#-n_z>NE{W<;b-)8Qm7Vv9M@dT=Vi7LssM;Ew*b9Cq<6W!vqttgo7xSVBd +}4VafMe%^Ab)}dLm4|?L%VDa{gchn7RC#HwXdl02V5IcM(&^r&i=g{^afTdWr*>XlW3&~A<D~H!YMlF +<jB2_tpTd9%td&vMR`G=G_7Z;lf$RTZ3!xxD8f{Im=EdLs{cTesEI!(h4rQomwA8MZ;(5q59DFOo+Ha +dtmdbP`M@FncCeXi(~ubXj*z?$h8a{Lt=Hap_5j#ca?2Y1YHSfad!jZ^gv@LxUTFc8X+a)W!<v<W#zE +b8;JF#GGh%Qr7d7?85%kY$>*J*%!X*`Rl#g^U#7Zw)HFQ*FV)WIbuvP!|&PZ-Gsc0IA<;DAIQ24yFNV +-87YIg;vk%WmB`zQ0NzEfI<#Ww&sFaw+AaD<9^g+7eqyOD8bc5YwkG4(sJbv^fWrCDv?YENw!t9&OfO +qntvzzp|a)+qam293W#^WY{T*S!KUu=eibkDd#V2kB;RgY1S!RprYR{dM9&paz<xkpdKIC^-xC$VaEO +U94Gvl)*x2G?G~Ge;c#k!o!dv~pZ6v2njpPTrk@CG(ifu29334gPO~RgbB>KFSR;F^};~U^vX6;t!W5 +6PBnH33=VXV>0U_}Z$DcXQ26i>(=>!X^n0$Xl627(5jf!Hu0wM{!#{DqBRfmB`}2pxm6uR7M|9qUq9h +5?ba@WSz$0mcM%(C1xQ@&4`<m9Lee1BR36LAJNxt_7zVExAZVj9`RjjnWPt-;}wUeWtNDO%t^^#^hF< +gM8Lkj7dB6%3f8?s|H7syJbFyUid66fs0DFQy3Yk3~NvY_($yZ!5`TwU-#6AM!_M-X<B%F78mABc$`F +R9n>4R8N~l7I6yX@529C3UqxSi@$b>kuV0u<Xtg4kD+;^B0?fjuxoAOuH(d$lEyykL(4w5*A_D?~k4K +Juw#hd;+*KmTXrL)f!@NEKzuwm9-2-0$Kjjs$dvREj*NMz6d`O2YXa{DBjQ3;>nhH`;eG0Gp#8A4IdT +K2im!Sbr`~`{``a=ud3VOj(9P4uDaf)rj_4yUcsC7)g7vu`ipBM|qg?2{8pN|F(eQ5S-eAwvm!kndYj +BM_-VaP@#zlASlucU4v{xbRGCy-LnuBi$xcaQiz!fFS+P_hMipQN1NuPDFC%gPoHe20Tb?ZGuHG7zDY +TxAaZ&KTgA9axf#dtjvzJw>|~C990u4<J#2{dGVpuOrFv2DrkU;hMpMGTS(`XX;8$8Vd*}2ay}mpf5w +OHV16TIgey8*9MePNQArZN9C{;DlzE-em2hcr)~s3xk7WgA2&#ltFf{OWe+TkEozL~aC&IlmV*(;790 +_jDco!d0~Rj<tosBQ$$f-7BzpVKhGZLc0LXa&aGWPWFs6kEK&+1d!um`A?mnJN-j)<UXT#>m_8>fXV< +NQ8E1Yb-P}3oqjz|czLqv{ot5!FF4QPW}xI@}5f;j<C!wandOwRoA$&Z(O|AW2OHN}Y0pB(d74Q0W`m +iEA!4Yy1|7vrHQf(HgT{$maw^8kPVbBjrtj@^{a*jI-jR1caM#exb_a*=Yh%>><5j#~oAiaHN7c^)tq +5Hu{<rYsnV@p3@=b2^rqbRHDF?3JZhm$1JFZi@kCdz2%X2fQXJw1tHO6}}r1A0CTtfu*4NKEIa!=w_G +KTNFgF7#Q7k#g2hPX5iqlj9@A5b>S8if7%Un)NmC{WtpCe7f>`N^bE*I*3qNiCqdixmM;M72N^&kjiL +g^8Wa!=mX{VZjecQdsq=jW)NC;d0snKn$qq`uLMNCQK4+E{zd^xY_anIvIUkv4O7{7%!I(cjQDLvRXW +Y-gnaFSfhg3kDvg#MkYWVTI6Sk72eHkwCP;P{Ju(GZ(5As<afn!JN)QsraPY-Umy#@;3`Qs9uV6kpXP +-#G-%{4KoQs|!ZsJdoDlkpBK5WpG-HMBc<!7p;%a8$9Y$DXN0Hrd6QKgAz1*?n^EZerI$<Xg_0V~_h! +V#LF|wj}?f*@?7(<E|-*%XcK-22Bm3;wG=k0)LMvWMM#5B?dSYb+mia=sRwPAP7Jx;Zp)cIEZ-9a?Dj +kGolb~GZ21bHOvggBwZm~S}=P+0&hU5(dg335#Ze!pjZXP-gM|g8}LxNam6P)5^=7od~3+z0X=Cflt8 +lO1x?-AE;?!itEE4fkv3qIEQ_&qC=5a|5NP809KLyvM)lCe@~!O(nyyN~8I2yUqB#$<-+i2?JQ^8?Qe +?6AR?yMYqma`vF$Oo-PXasUJOG6G*M5lbo4H3B%j6b;2;?dkAWa#xjxk{~{}_9~RBggy;SH(-Mwc$#j +qsGyl*&?4w8`sjh6~;={I#*-Qf{Q`go7HU<teBsEf3MaW1^{f8YGPc8!Z%Bbter^1o3-wD}b?hue~5( +%)h?-C>*v+7+1%N@BXd(_>IECcSf^}g8W&Q$`o6ow$LK6!#)d*D2JC7Y&~wzM|L)weOrTzwj97D0I9( +f_#}C^LVTfeWC=YY;FJe60q8*Jz#Tc#fH!&9b3D|0oDB&C5^b?=ZiItqG-zWJW_I_H=r)sN!@h|z;9L +Cj9S;ZKpJcf4VQ5s1gtyqRP}sy+th+nH;^W7ub)v-0)MD8yihx$LB$}mvYsxyN&x^#s=7KNKPneq#dL +MNY*EBR8umC6zkB*J0>A5QW6X*_Dvf-dO0r5D_0mlPJMj+eXPJ&=o@LTQ}5E<OWL)8%nqBaUEs#Kv&n +wY#l1C`7^J`FF!Z6YK`Qn0251AnhA>l!%a=wMa?LFcJ&MKI)flw)!o;qaIr=zP#Dk*M`ZHHSZ=h*iFC +vDg69a!V2YTdf|YUn1o>m_JxAzY*_1Z-h6WQ2-!hr=Gb(o48`YiK_h~TCJi-R^(kVI;KC%0T)6yUx>= +5hIZNAe6^Y<5&T}wKTfWwSN!rR3@XqM7SnLnBDT^pk=%<+gxsh_BBGL+@Pb%DsiqJj3I{7S^v-7n*f* +%nUBF({ninf@*1&)zunF!AuuK`6h55j3Nf{xudt=5M)2}ooZdD#Q99yqCNT4L0&lBG?Fan!lQ$!FOhV +euGCWKTXAK%Ss^!X*n;-eq-w}Q1Us>cj1feab!6C4J1e`ZFI{!hCZiF;jxTff{kO%aL8G?dG7ACQ49h +B7ucI8<2tx*5tFT+iiF2<)W*ft8_uknk*6ZH_g@SCL*%Om7qo-|@jMFQ|fZiM;@uu?_feg8zqZqzW~x +S7O5oNgARO0wqd`Iy|3NIl*0m8AT~KuDUS$2uu!)wLb{*EXlEg$t<xFLdzII1avT&L2P5L-;0948hiK +4CGcn;vHhAA7-}iKXdC!KB??t!Xl$zh837tH17Qndz2FC6<PPM=a!I~*wQu?%Y8hgW+l^pER=O2^tsX +;P>=1Dy{NS%~EV&5$Jq)>(d+z+fMmK^P(j|nal3j`g`FMQIH4~LX8tsd(crIs`fBEHai4&oXw!ARh#% +V$*Ccw$%W+&akdMvi!y|V^%4iNk{?}~^RJFm7)kKr8y(rtd|qaR<B-J#ZKOEUuLc>|ucq6@8yv0#@Ng +WWqUcBvBv4S%JXA&MWs%vO|E-`R{7S~s3?;9wKnG~i2#6fvX3T)YVH6r5}(CbRN`(cosZ2g9u}Q-eG? +dF4!s$EW?wpebin0*+is9M2YN22yFy1`$JuRcl@q6uo`7NU=n|F7zwUh~--)Hb9!Lf%2R_LFob+pOFa ++8@?_#xBx}DA?=R}Y}eeX$^g(MGxDlv#9449KFP?Ojw1YPJ>7q)OS}AL9z6`zg!oRZu*`Y1R>lj2K2R +Ai*ihqu2N&27)Cg2{qtt@wM2d0)ojWs(3U8&{JlmuJBA|vkQL#aYYfd*l$$t-`H+a6NKY&fL?|CKM=f +l25ag)R2J#A|)UP0SkjXm)D24sW74i7jzKppfWG=<*vxNi@XI2lnuGcP9IvAl}BsZmCk&yN+U^=cw<X +=NyV>kXaBl~v)LzJB_j*>^ubfAJ&{iM;9nW^)aGN3pV^r1)dV*iRyTxMoEZUn(;`MUB?Q$E-rPi@~$c +p8wYmPcNhAlv+ULj@d4X7FYR(qS{n(#4T=x?;oRhM<qzn`d2gUpmHCU;2|?Z6u$8D1F?eS2ohdLo$}z +!{IM){(&>uN`nj<cZD{~w;298jZVsS#-v%q?Ee4QSQOLpA;M_gZ^Lmf$|6WRTrqd4KySG#y4AhYfu|# +e!w<BiwNJ^NQ><5?>#5pO`1DN(!K;syKp>vBxqLkl5QM2Sw%xDsqK3U#vWgY?Oti=-7x^~W1x(3rckE +B?+RI<Y~9Q;ZTZ@)geV{Dxs+C4_NC)IT{6kP<WWrhWNTtQp%6qG6^qpgx#N)CvFT*zOlC_NmmGX$(54 +ukLYskDG-Hyhezda9{0qsLUBIBw9OFk<GixJ4Oy@<3YQXD4l~Zk;oXEp*?`#QDY9yG0_;GCF&+X@S>f +tJUm?q>*h_Gbgjl%QnqIY^&c)g#F%5xX=pCm#{Nu?-H+B)B4Y*W@xv3XNEi#!-45vXHA{$%U(tjveWT +GYqeFfRfu2jbg8=pd~TNLoamz>gBX#r#&LD@Q&{c;uV=>;SXnb$Gjge5vfXo-Jez|mKz)#KwJ=AOE=i +F_FB%a3L?Q~XP`P_)gxiD^7Y*!{p8wh3b`<Xr@jH<4(cJFQ@`8`TX)jXpMBUH8IeS)qhz_u;-0lz9cD +wovZS8zZ-fud0V$V`9CN?dTfW};$VrvV6!BCWH&dMusf=(Efm{i0QaCAcMXn4VuY0pYLH&7cV6Ri3$Q +cyDe)nhFsY9(-_2kkkM@9yS}6Hy8&#gv(jYn*C5uci##udZpk5~PutO#KAE#-M~eFD2&&TaB{)q7;W@ +ARu01q8OUF(SHL{ULU||=Q9KzzhSBXu#hK#3Z>eGEn@{v3|M6yQ9KS$x?x2J9g8yJlDx`;gDRSOK8P| +u1B8lZntP{iL>$)PE6c50_{~$*%i<ImG*HLs)HT{!2#?-4v>M0E8Pgf@BXyWBo8ehA*2U2U4nh&K`mx +|y8-T2hBrH#(AJz*}ggO?x`3YFn+Mm9IDG!4g=U8J4yMUjp7s0Q{^jrv<E~e(=sbin88$t;Q`4c>W>) +<$nWS5s<M0&^m!-ehmGy4U%C7LpFMgy;OLfS-#0XP?%9BV-^;)jiA)4;(0xJK`iEI};C0}X)3OA+YZN +1pnh1+$JG0nOQ_=Ap90d8bMQg7EC8;V{NoE9-Z4T|QlpZf@0298Uf`5G8}UW>^l_Q!JRQ1R%67w-;ei +W)?hZXd<vXfs|i5?WAyZ=9X&QxS$TE9qIi&@)W}7oG51zj!@7$vW@`o`v|6x?vZ1rke)oxa_{m8%S8= +Has@wN(*#a7^y6CLl1YmQ&4c-TI?Ifwdb0L#Mrbq;?Q+qKW-l9YND2LVqNTBu?MetawCk($@~kN$C(& +G<M4B&5+x8Wh!cF}p-fe?tH8K_V2X0y8iK}u09<*hvlpoSpfBllEXaz_)UOY02hhHf!x^Q)^!e0KFf( +U~lViatksSphwL8IqrEiVj=6<6}kQwwC@gz+y}CV^+*296UeWf;hTJ3a2_<-Y&`y!z5E6GR#txffmxx +v@@7fCE$FIZ70sR29$68l8^uqGV7!qT*5k6DK(kQm6=%M@6a164sE8_F?+6+>BM;C013sQERA%rh?!# +>Cb}KfXnmhGIOSCP!$}0H<T(1MtFdjsKJlrwpc{Sg%t4#o9PZqiDUMmHS)!do=QL_1$Z^k$`UzlrBLT +^pM6L!gn7`>@Jl>xm7p2hiDg)QEKMs5n-f_ioN&KSeU^vD0!Vs}Ww272{<oV3>#F6SPE)r8*{wAWt>( +0pRg*Mlw=zF?1zh3=4Ce}^d)47RuWy=bED?~=009oz{A#Q>l&DOkbF17paF)C6$o>B*$5a^&dWEM`Et +7N!M*XL5jq)v5b;Mz1pLhtxw~S4)I<;@8heCCAVr_j_M;?f`4r=)A#L0t|3Z0<%nTeuOOMQ?*V%yZlP +BuyHux&72Iz?xjz~>QH473Ui9%N{7PU=i{cJ<a%BfI6EGoeF@@+^a)#C}FEP@iDgkh7)Flteq&(RBWV +V`iNjNgXIcH)vHR;Hksh@@|vU(Q(a28dche`qrt~vyrCGrSL?Vzo3>y_w5EtSZIDVyR8m^Xm}Fw5(?Q +2c@oVzRdJ|T+>ii%ES00<<{^$&y<?BbK=Q)TDx8jTCyE0<Dq25joS(;Y-_{3rn!CJ5Lqh~2=Ze1b&;s +cj@K)BvS$rd_8;ydttJz)e8P(?~-oZO)1mw&D5#S+XhaM;H`P+4Z+2w0_!{f@yJ<P?6d9a9B7oeJaDF +P{hR>72MFxZYi^Vh1z@iR0`#=(pL$iXnL8g%6Sr`D}(^5@t-u#&nyes8#wQ6ds_DoNv{%Cl4;+cd6&I +0p`asC8PLIhpX>RS7y4Ca)WiYRWy*Oxn{Ds<?_`Kv7wO#g`f%vG-6y*MnPH!f$3dU0`xdo#f7KAn1gc +HJF%trh{`l$Dh-EcIFXq>UX8(rf`lzA@Q=uAUD+~Mh9ygQSGLuc}eH#%7V%`%GP+JZY<My+xaS<J;EG +$-)&S6MQ>h{pfdbAPNSh*a`ACFxrsyB3Y&}*zJzrj2oL84>xn#G3p2np^QkDId01Za+SnGTFl8&jW&F +OC({-$FG18Gp+VPD&dz{zUnWF<d(>8rcx;@9e`v>!hqzzKnj|tDln)qrqk>i~Tg4xEUlXoyhxw_~l^f +JIA=2^LvUvG<<*g1w8=3bc;KQxO1sTZjrJY>zuQk;R}{NY?F0(sgl5jVyv60P$h!Yg2+JFA^}7U(y>q +1#LP*vR4BY$$M*U|;Jp6ZkA{Z-e2J=#kl_H#|uAMEYMmi3LC_i*5Aq!rm5pVbm2G`*CiNPd(|?aHM}m +q70{r66!CH-#B+JMQcW7MCy`OJZYBtjJ7zMPq2vN_YELTMO1`?la@0G;E;UCyFpyrw=IW<@b6EvsRWG +$|43d20qusN?Jqz7907_`HCSQ!d77rlu`~?!?fcy)^la44Cv1ZnNlYgUDGbM_sb0dE^F(5jA&Is?<qX +8!?8`^#7qbM`z8~4@_g{VWTN~D{EWjhlIM>UoWv33b;t#A8m!SSy80?+$Hm>18+iRuAJSUT6LS-NDl= +JyeeTYJoe31nBWd3sv1AxuUwDF0T5q3>Q+98T5*|xYe58EE!A&C?$3w>~}X_pndVHNspw!V@V-v~{GD +lnrWx^6G;rvtp!O@G8FLj7e}MdlTS)~(J~!M5QEtCZ!=Hs~VYUDVE%I>->dY)655)iwKe=;hgUx{n{b +z;@U-Malb9+#e<mzjcW2{d;rf@86@~LUnBbf6aIuEd_(A(ocaEFq?6}gC!^j-@m8yX~(Y04*+ecpbWd +Q*Hq_<7e!8qhgC#s87x+Ha|Xqs@qE03AciC(Gtfbte-M_Vd55u{t+*TyuN<LTKuQqHQ+)lzNgk&ZPtV +9Lb2zUwz%HiJ+vn2?8yrt;_U5{5={{xfYw&o>AR||*W+$B)HAW$8#nu{=t`$aS;yIzDGTN4Lc*zTADc +!Frt5|^XXf0O#th{^BdG$Rx+Pwdf?kWHJiP&UhwRydKQ2>AyB_6W8+w964qx3ByJ4*UYBm}#r8SF}8+ +f$OiR4iGwqhU4`%j@jdvgL#DvH-qm7OpAhfc2u&28&W@wxP{A#OR^EHJ7!EkTjl=qeVxp!FU6Mk&$CX +pm;D%fV$)VqlM=IIcD<VkNrs$DB^!_@yM%~Js|t&^4(O+ROsE<m{1bUKc5Hrm`ZKb3y}q}Qo6>9+IJy +}G2MmYd>|J;7<Qtb4-qH$tudg05N9m+Y{vu>g{zA58#?PqfOxQ#-?FX2nGstIL6Se3lR7YtY&rI7Z=P +~|kN&Z2`~K4+u-v<sd&$jNnOh96>A3s21lt(MJhy`NMnR;mSiMn2!ydTM5}QY8j8X0UopVyagy-x>EW +QUj0<m_!pCDl4(D&wmhNLSds8I@b&0<?OSmheuE=u%*=6=U`y`b+ofJXUZjkmrZw}Gqxl!bjD{1neiJ +QIG4zt;FGpD#SSQ_mBYr=0tyqPM_)B2!!{X#lzn0CF_g{E0YtptQ%-%sfc2ic%Gr4Nu^-4&YR<exPy< +n3w*>i6dYG6A3QV{5x^I?%1M+h7BAHC=w2nGe4ufnn0kjk2(L&q|_r_q6u+|ig|#FXbA$_5ApJmz1`3 +rvH2%ht*M@&`~@4c9nn+}-{X}2ciBFJ|7|+k*b|Sd_Rn8sPo6$|@$FAfpCtTHE`a#mZ{1TM>MzoJdT7 +_yb1&e<`;+}ecQ4;PRhlxrP;|#j*@<;2JGwe0A^F1ZZYim7>o%{hWB-to0fB^WSt}S}M;}kq05#2HT) +uTQ>4*#1hRw86xC`~U@<M0fdCMPI2~Ko_0q`pWViVJczA<3;$LnP2%Rn-^iDngj@!`?aC(+kmM~{Ao` +uB?l{PwB-f)mo)uEZ;Ox|qXEsE{p0ZMisf_FFDgnBG(z_UQzd(EpJXSJ*o$Rl$`FCJAm4EY>)hlQl$x +<yoMqQ=C=;%DR&Nyn<$DQ=Ge0joat-<$JR2nfK(&FQ0Ml%13HX_OZs<HG6hmOKu&X*Os!s{iZA1LB;> +Mkej%1-zqpiemQ@8z$+zS^$1{~(b*UC%LumdZEb-<Ap5&F1hU=A!q|RKG{s-`V_FpaWj{Wr!bH%X|L4 +_W`22Ft6}(0{iFY0E@uRpCU(M!A2AAQz1~y9m`-yp<AT<8i40U9&@JHX*<u5k=+`r=J+_ItbtDYtm_P +t7)7CwK6?w9uJ=v{M2GKee}pRN~kZjN^?81emYp+tck!@58tU?`hFLf<HNBxY-Y4(p|(nYL+Q{#O8;v +VyIz1DrU$GsT`hodc~%z^(Xy{%ibhKrppQW}~#W4qgRzrjo+yFTYVx4TK(s>KWuhuJoV(9A1|9Z2z)5 +h&&~oT@$yb2J+7RAI;8B!I~47V9RrOBC<=x^CG@3r7qr#EQ+$sGjWvrmxX6khNcQR^=&%A>x|4BWq%Z +d=!>KHmmb(XBJi=g4uj>xuCZ>y*ZoA%7=F*LxS<B4ASInc!inZMQ5r4Uf+b|0Tf|#m^!K62DX4q5v8Y +?)?5QmzVQfFefE=&4vK~*FRT7BvSV3`~>!tM14Dw67jf?TmRCKF*D!$bzJvd=H;Li~qctU&LOGTcw-% +p5`f1Vme;dM%h|9`7miPxDz)l0*KzO)uYr0_aWgcFi{emD$I?R1PzIL5yLKq>dsys@9kuR%U@Bwxnj5 +biDafsSH}UHmUlO9KQH000080P|F{P*)_{-tPzi0B{}v02}}S0B~t=FJEbHbY*gGVQepQWpOWZWpQ6~ +WpplZd9_(>kK4Er{_bDFb8xV9)v4`=esSwV54p5m+;vkVIUEj)g+NPVn^{>@M9Ld?yZ^m2q+Upgc9P< +1U=vH^4Cj5Gp<l3f2Vgr{mhw?ldzQ=N5h~5pLAGVVw!j)V$`cff<4bu2R!f2FqGFl|TirI0E?%(Xxjw +I%(v8UVx3bnkR=nK&jh6}*i(Mm+EX(ZfEMwwW%SJQ4RkCa~WcGQn=-!udzeiy#S&p(nPW)6)_qr*df# +L@|s^eXYI?YZ{6|zZdo<DG+Pg^a@fhgydtVGUB@o&f~egu~kRe}ZuPT^w?wRhM}r8F-~PA^|Ijch_>M +_E9r(#Hcp*%SUk524MzSn^mS@2x0>K4+Tm)kTt2pKJ0_NBPfR|MhG3@*l5W{+PY_`S$ka_U~xGUEuY4 +!SG|a`W(oB3A@2F__l<E{Uj7VzwVruuy<`;!bt3k)W8S&!xzRr6LY<R53Rt^!B|=>7UWQ9*rxYvx(EG +}c^75I7g-kLw!Gv@F^BXm=tyqgqx<9a!U$5p4g*P4LT6c|pxh-aKS2JFskWx`p~#FA)aG5<pv1&kN +EW)-2jeS;p+!@7S%ZU|3!*moFRO8W^7lkh*&o!vmd7`u95(YUjjd6pu&J^BrbJ5-`p^ZL8!5zGkof^o +KwC?8BPjLE(joaBW4FEwYJ_clV=Y<nX(IP_C^}@XpjBYZ^=9mSJUbnlb`L!!ms$+=C^jp}kZ{W~NL}y +lg=sbByOoYTB4$qJYXM5aYyS_W<Wj$&cHD)4ugQ(doRDzBq)jBQO@FimlixeUGIrLS>>ZwqsXHSHRdc +Py_XEZK2B+`At+GzM^_ZuF1tz6*g@3mnV~hMDfgQ=KYyH<+82xvnzO{;x&817wY-D)zp+8*VI1w`VEI +{jHX#;USwI?R|8*7bN;4;D)OA*Zz5qftK^H^I5P@)lov%7$epg*bmfj#Lf)Py)4bN8s(_V}0^8wc-1O +-TPI+BppNm{MeA)m1lFy_bHq?!zm@zU?otnktlr+9vQ14u3_sGqm^)+^N_4tkcb!d}O=|Hm@G~o?C(t +dOPhV0-__Dz!N`u#uzA9cf(kp~oJwV?_S^)1&>Tk?=g(lj+bFn##$Qn5}PzVp>f4F;Rp_eJ5_1-;9-n +;%Teemxysyhh9L<J3NDgCmXG<<3AukI@0qV+Bwkj?@RCyu?KhLXnR2La|l>Vb7f77lzHPV#l`B0<FNh +obd8^QU?%Jo`8fWF%+>Rl7u}1RT4zC5*M0BfxI!3SX;A4p$`~Mlvq&ZXOCYgst08?u+UewT8RP-_cv} +WR|pmyyP(WU`<j*rF^V&x>Q3ofsloC#k%Abi6wsYUh9YBdGDqY02kiW~(X&FrPPn&1kL{pA6vB{UI`! +H#K-Y$%i$?OC-C!Mn76j@$+{g%?1W=tsBP-+GBX1s{QO;qu5v&<Tn6RPgcRl2+ur`p>QBl+p1i6H;iP +(APOd|>RQr+aFe{NAL*7iFmjETie+zE@39Q7~Q0X2S)&O*mvs9D!|sBg^78yno6%B+w^9Bgp;0W0jjk +_}kLIVX<1IymDNK|`8#{GzFUoT^}A(O~8jT`c{EY6QKZ<EfE<t=5BttFP4x#jIAHl<X|q#&zE^nQ@vH +>0~0Y;p~&e6LT9NaEG<Y^pCj#yGhA<a{#glYdEDP1|`s_l{$oP?L=yzuQf5>Vc@czDDgj18xxalxiX< +23Q!C?haabrm#G?Zu{#raA$FKKw7<jI11}QT;rIL3Z^<HzJKPj<D8Y|%lngxIyH=#KVuEk_G8M|=dEf +QcU>iGCMl&Kh%kQW3p>dMh@NCAU0c@NfBA*H+jjqifBsICsJf<TTVjNE*)<lEx>1>XkN3e<Fr{^Kb$H +3^+H@?8t8rcx8OqW4;IkVdZ^Ux=DgYz9RuP_POR+vJ8^|~z2Bniin^K7GU^l1POq4x@mfLyc9hDDPuN +h~QL;)MAUFFEU|sBzfK7fRU!KhZ>L*%-s~QptoZr__kE<{W(Tk;c>c=RiYcNMI^-MHfGNPQhLkvts;c +%E}hptfJy+k;K?fv1w~jcKK@9(qM3{DjG;JABiqOa}Nx=RDB_G`@^&*>E`So1s@S<p@gQ1Z|upGFBeX +n;8=Tu#D0XciSnzgeL=7dWx1?&*qZu1gQ+)@fVmJ@<fh99P8Z4Q?gpH(Q7ueY8*3LCr5#Gxc$mC@dzF +&@Y|RxI3t#yRyv4w%j)8K;M!uy#yXY)`knPql-E1#Tfba!NQPg8LOo6B8#30Gd(^t)Nyqt0BYmql=xY +{SP826*q%gbK~_EvIW;0b76s)W*QmX+iJhmVtnrrluLin1gOI!SQK&RJ5r;$KL}FGxq!3RYOmxg9PLs +-p-qyu{F76TlnJ<JmxH&-h-c_Gln$11oAJX7uPmXVR521fGwuqWWk(>@YxM(TxM$<yqnA{vcSlTz@*r +gWIp<);g%#y&o&1LWKmCA-har7^~ema}Ju8g%HA+rTjbxJVAqWA?7K9iUSpa8M#@xfDgTNzM|Xzn$9m +x=QFU<@?;}V>&eyA^J>lJ`MVSj`|iq{G(?iNDd{qUxMJc2NQX0QpmBCWz=>>@fua!1{QjFk$QYQ|fGf +nO9U0|6cN9qsrnSJdGrq&YUfgxJUO0QXdX3?Gsq$}_{naM8udn<})15>VzP!{?fF@@DF-!A~;l#%HwH +tK`*tYu#R(cCs+cBpfSG8Q@(`1tID{nxe&~5Mw9O+Fyx~BDt6Iqpab8UagFyb?JB<Ko;t*@iq`-FET3 +MM~YZyma6(7(zv0Tj3}LKm6~Bl?Zw^Y7$rI8No8;0>2a=*~V^X+CkM=R{rTB6f<oK2P^+cY0rF2`o^b +)H_(rKcTl{Yg5*GtQakCWq+c*lhXaA*c1JWuw$qv-+WU_6kSDe+)4abq^xlqIgfXvHq8bpuKz}H@yDQ +$a={;$e#c7W5ncZEB3}F#P)h>@6aWAK2mtd`vrx%lPBBUb004**001BW003}la4%nJZggdGZeeUMa%F +KZa%FK}baG*1Yh`jSaCxm*ZExE)5dN-T!6gVR7cM^(`xGF<y42f(c4_CPABrFlXzOgVkx7-Ll6b@Z`| +e2U&63k%n1P}d$vZyx+$(#^ZnnVIx+wIcR2#O^yB#RU>{eGr&X&Lo?DPZVOyHv40V}n{eW{ou!OB$zc +yh{i`*MHItTS@uUh2|GtweG0t0*ia$=c{0%d&7f%b47i+BhbbRu`3nEPN+PTwiJB;K>zoS+9UGO4lD- +VYi*VLT@$*z5diT-dD<!XAhuqZP-BZtL`B*2n@pIm6L_#4t8ah%SP%3zu!m$E2qu=8L@py3`U_pK7aU +}UH(45e48ykU0+{a|AywRN0!eMhCi<rHGpkyHDU!zvAVy()!v!TEpL$R8M{Ip0>RDL`$+tZeFWSf(HZ +-saIMwQ$8O*&{lNw6L{Zd=ufpd7zE)^Cg~TxhJDmesUr2Rd3%|pECkgol47;cu#5dsH`L#65l-OY)Op +_$}xpfMU|J(^B@K}<=npI^kFhW2*WN|l(+v$rJtF2HQu+zZdsVDH9r5J@%_VTBOm)mQt;Le|M!XOL;r +7cID(jYTY_@j6L_8^K1eGsU|0FUQ|%2~LKR(ITsD6KMhlGY(R2+G`hYxVLAMoK#MM=a{hv#9if{ryji +l3aI-NTYvlgWQZ#=q_MgW8e}`Gp67%D51QIMstaAYSU=Dx6SO^kHgz<Nz)x-2o{CU<}^I5pmgjl?B~X +4^BrnNjBkN-uArke`oMG#=3YXP2WurpQ_<NvWec$AJz(0%4ei$6iNz;e!yAE?uUeobt!u-OIr?F89*W +s9EBjLP!}uR()ia9)a3~_I1xyraecGuNr2V^n7)*%+GKy;JK*a&cefe+a70PC&&F;)$xk2mF!(8eoQl +}o=1c6|!(Yl{hl<eu`!_|juG5<5WS-ie{J6}vfQannx?UrIbf0FK_Lv?tYux#a?TE@^VUO760vbaxWy +cPxUUc^|Jh;+bKuZE}hQsoyDH2-BZJ0h!pQ(g+U?JW)Oc&0KP*nL4br~NBJb>ulLt4(@xrKFRhkbhyL +T~-o1uLnkz9{cW@J(+o1r%9v3lQ?uo>W>kN(Xu{aKHcgq43brWkvOI%R3i+ABt-Zc+qXoJS(aKT))7u +OSr2M2Ijh+v5uQbF(O(BUc(IYbLRt))X{!#q*zK?twHelD@zMZ#q{ko<5a??mOuIG(mj<K8%<;Ai`8f +h$PTIZ$Koh@!1CjDuJy1`c=pIS4ZmrIoZ|n`sy6xXm!@vDSSeW~Qj*EA_B2U#}Os+4|ziK&lPj@&8=f +~LNoF55>RRKa(W!iNHMZrF!%!@HbGsT!%nlHRw47O&Mrb49tq8<;q-HKPQeoRRTuS}6q#^}mrYa=$~N +=)Y!&MxV6%D3>8OYEt2+wS-VOBx~KUvTVATOZEieI5KF&+FWPuVb)>fjlJV<mBXaj>EPZnZTIS2gQMR +<&w^gzv0Z{=W|&Ai9H(ZdDsWBo9qPn5NB`X0?%Mw?X-bbVe1T^m35Xz|IpOvz0<w)#_Um-$f;^I0~8_ +P>}t&<PVv-9Z5XD|LjSlBxj#E&BG}f^htNbpC-&6AOQSaiti?>yc=(;x_f_eq6*_2yw2-&(2eXi`m%0 +R%wr2P`xh{w8+1GRBs35INP7peQ5oe{V_u+C>anO}cscDhzP@@xSk4z&i8kY_3q4g);H@OCyG9our=E +)G=(}&uC`xg-V;UYYR`270){Q72y+>5tR2gAn>8N?QahD~r7?J&Fq!bdJ}=QyWMcnFnYC#_vSYgp<xH +jkj|o;2RsixmurN5BrukPq+~Q$INo4vvAI6ATa^6TS@woGmkPgd#~gD^<UjbT7l%0#7y_^?1;a1<8y} +9w(!bf}!E_ih3SpM5n{|pm3@TwBKUtwT%g8JXWqVdywE5DQ9Nl$vM)$!rT0RsX7a<>PX@7+5DZQ=M5C +#{4<HIVn6ngPFe34wZSwlweoJQDQXm8y{#0*S9-kY9OF6C@f_8Q_`exvc3{-E>8_jBv%^A<Seo7`LVa +|)v<LU#{o(h%ZNW)x!QqTy#)h0{9s#vcUc-M1p^@ixV@MP7^=kXj8#VS{P)h>@6aWAK2mtd`vryB9gd +pn~006dJ001HY003}la4%nJZggdGZeeUMa%FKZa%FK}b#7^Hb97;BY%Xwl#XM_s<2I7t{VNbnr6f)yI +*+QoJzx1Qsd?N^?PijiNp>#fad9XSk{DAYLr|7=v-97tyYU7=TTW7S`d~{S&}cOJjRx0UvtwDd-uL^C +XBjJZZPWEEUy7#M_dJuo&(2i)O5EzN>wUfIo2C-Fp=vgpvfk*Qjd>uB?$=dQuglHZ*&1hV%Qnq!d0jM +}p1Qr+WE~gHzFTqOb}Q?icXeK+{BFhDzHDlt$NXHEwdnJz%CY%H*EL;iVAZU0Z``u1v-UWr|9iosgZ6 +z{iFDQM+Pv4}-o1ML{D*gM=WLa)wmid8nZ$U`0FD5l^kf{KB9;bN)&;No3|hyB>`JlH{by$kJ}>hd{< +5t2oPOovMt&(u(PwH!qU^cbDl#NOC7bwWlT~GXlflxqvdQmIH{C9;%Kzm~kB-;*jtli;*LNHyNXF6b` +L4~1((Lbd#jp7a7W)&lKQB8DOw_>^ct7ufc5EH8egDgkzhuw;_Tt&!vo}A#e*Nn8e*>qkBh43tEkX4m +NJ8T0yBe@~hCH+cin8bBs-Lr0FuD9q-vGBc`v(wm&VC>c1VXX59De?^Z}mPTb}om#Q;)Cp^v?lSS1$J +m>+B4ff_Lmvi&DDb{XeK}mSsrwEKAPL&I-O}nOJpY+f%EU6@-%0G{=qH?8`(h{0Xj_U$B`w9}MVWIZK +e?gf0G))^!C<*ED1@nLO)w-gDM(IS6}I9ocVtV1{+c3x;#BW-Xrq2MV^L&IMZ@Y4}GFb5J3C4oG}b$O +^UwF~=dB5{SY+d_cTEd`M};8xAT6L=&G^(2n2{G|eS6PLfI210E+5sMX>JB^sIT(#ke*d?ol;r&eOl? +>LbVS{sof->1JeWj#}!Ju=I!#y%qJ8`$1mbBhD7G>~hJuhJNH?qE=ww=M9=%*_4;n}VX_)8w%u(p_Gc +Yc6_cC?FvD!Onjo#D!dK+8z%MJfDn@2Bjc%wBzAW&EWgG{B6%?>pJ9NEu&Xynp(NM0{OkZCPu!m1A+S +1*sk=@<*mR;q>hA%)x1yhZX@RG>C>Bo!&U|f(iZTCCiJE-eFX;|zl4ANEU_a&Tln2jCV+u=U<25?9+_ +8fBKE5rv=;>4@1Q45^P-qx*JSYcSn{eMFzyb>B?IBVRa8Gygm8>1SpeaRSyZX`^l-Ha{r`pL2bd)0{t +S{4h#oi#Tjm1v3ADd?@$82;&liWX-!}Vx0St7tYOc>5fO2Ht7|2p5m3nN-UIJ7OCYix#saDLxIRknTF +dPZbS1hj!{L)}2Y!t}Cg|<$qoZ2`YKf>&=twi>O^<b1i9p;@;kePM|z`s(+ryf;M1A%9if(k7_*K4y* +#6}yC?RcLTd7q=T26aD`h)<J5*&0|}*BlVr&et%Z5+jJ(4VvSit1quDn;Z=_UDZLuL7D~bz-&qa>~mf +Lu-3IRnP{uBpW#=Z2XRlK+q%BGSbTFm&>#bJ0WJ+e-3COQ`p_cio(QQKha}Yx`Fkt51Q9a4_6mr<iQ` +eKJ<}<Nvs@wrIsmy7Y+|1)mfDqd3BDDp_q!$7{6>;l+PRv8iy-pu=ng{GmVB<65?GGCTC?-~9NW*4Yi +YP{=o|Qkyq@-VfC@0=vH@i5@Hwk^4hE~K!MH;kjTT#QOaLRI9df8_<*mEDytRF$W{7J#Llb0CA_ZzLo +S=}TowFN$ysUWba1=n@S4AdnN}MyVkF&w{rXYA-FBy`MpvDgMP&=DEog|5&hCA#ECW`mh-(h7*a?LJr +HLW)uS73(HGVJ0_N6+M<qITBei;Odx6o-`+rIcOpmM6i36d9nBNjLoW@~3vTa$-%zV(1nlXDDsDg?Oj +tpn`!3mt6V%g;IV$ZA(F8cli;Bv8wik)sQ79z{8eHK7*g&%L1nh4wj`}ai7=K*n;s}-YL}#Iv*6(jjt +qEAidcxN0unSH=oTkGh&c}4`*#MXKf-`4L3;AM$vSq7AV<N1Cvj|8`$#I4Ipu;nG-t&$}9m@IWVXJgV +4MhczT;xdr;R&V!50E9LlNy15w;3G{zsn<z=M9p5`%61bWjJ!+-NovCx1*o=OC8$(dt6q+4NVapAHu3 +gG}64oO@|JPaHTgiLnHEIF_oPb4Q9+sd{%aAk#-@CaN7JhTNtu8{BCVaTy%jXsNR0ri+ktAD>D(tX8# +36q}ETRJ4246D?zx%DuBEQh?hk<{=P=ggDtTQJ~!W_J_&&n@6$=&VI(S&-t9Ad|sdgwumFtsj^P=UJ0 +Cir^B5<G|SX4%Pv_G<$HC(6}Hi_MIbYs2)@hht8P;NP7BngjA~^_<g4$bc_J=9*q!!KxYgzB<L#5L=G +e!Q990<eyB9?%yP!UA{XqGX-|uCz2+V2sZ0^ljQ8ngIGWTqiO(0v3}`{lJVg%t1=_&qoHWb8r$Zk+%j +OP73Hz4?8dLe;{I>f(!{8YDpQ`#PGjXN4dT#hTVheigid*(IA}#RSVOxUJZ2W6b%WajDUqUgpvIWQwU +_f1CB3v_aKqH7oq~H|?^$PwtZ3s+&9@6S2-$>^J`3N@+NDA5*cOEylZ`wr#_Mvk0gz~M`V5v6P^yyR% +mB4!H0-h`EJYX!!4MfIAi4rn$*-r)G%WGII&MkS-8aZ^6phMxWOmVbb*%rMh(pG5bTV7}<D_>$nE2XL +e-(FaorY%8b(+0>Xj?tor$_pYTb*A?EInb~J2a;>3L@C0`oy!cPHdi+eTrvj_Pw)G#{{(&TNgz5#6^{ +?gGT`t&%V78<0f&H1QVc{EWxZ}D+EV*aHMvl>wBb=2Ou9-|7^T*;K9nL-+cis&1l(>gFbxoE+xM-wI6 +vP2Qu`&QbkEx(#FX{<?${pBOCi8opMUf3UlN2&+quHCD=5jKB~;cRajXciTGR2fU^{eFp;`>CWCPKP$ +n+QHR6)K_hbrrW?2B@-10)&0>$_Y-)#8uLxGOi?o^802pVVx#>`OXbj<Up7){XMJEF&{9Fl};B67CSd +rQA+gn^D7r1aJfOdVq@t+%$NK@Uvk&t1w^NbX+jI*{xC_h#A2dh6nCv;OVF_D)SO@#>i5huy>r43h4y +tT$fULr0lx_(=fQLI+TmTFe-rfTcQ!u9CFM4#XcG+9+~6@&KX8JafYCApFF$e%rLizfMHryIdI|IJ{M +bFgjtYTv-}lQw4w<py6;>+Kt&O(X)!}YM=_|F5tMc*w(w78V?ZlIA5i;8n<-K;$}ZJm0p$vnegUt&TE +~23GK8-|2RM(u&*i3&%OTV93Pm*KfYp^gskrvfCM*b|Bw-Cc5bvZAMm!NjE6oHLiA?#NA3s^_@TB32Q +t{qA*Um(<Mr9}F5Ro0|TOzHs%$HGSOL<YbjL9%^a|uB)9H0qA2ob}9h}6}!MT!msr0YPaNsqx&9J5kp +r5SA?QGYIxJ26gyO_Xee#yiZf;pe#%QIaT0rUU&Zw?+w2+1W5tXSYE1Z7Qr0qNHOSBvvIj5vw>~HEl` +8TFD{$G~g28krkq2(;vi--7yH^)rJD;qK8`29$6B^*+`ydvLD{kvE}FtKIEISE-oiVDkjMouU!qJWJK +y3t(od$SEwCU^&pk`FmKOE1^p@8O?uGI{R+KxDSPP4kuwD*{I&!`HYf9qDhQcapEM0zf9rwNvE5Y6r4 +<M9g`X+(X=HkBAs7V|sv^U0PJhoKnfnUH**a=B4@kigO!nEOf$H!3fYkzs;U*)5VQyjxgu3xs6|eoBA +0x~r2_l5o_~6>H8P<;fEK3iLhrnko3$mZ<62rOr2vKa=W28cRKA3Zi%8w9_sS%GL*&C(ah(J^Ui>Q{F +RK~P;*YVW@&>z>|KeMA(`wrlTp{JLtA$#pf;9NsWP88HXK|DRVV#>^^Rmo_vgop`kkyf|XsQir*HcT9 +MSX%(1ZUUx;<+ly+!LETQ`>4~6sw3<34m6BNU3@%A#p(sQ+t#In-%8CQa>!uz8A1)XM#UxylD`qKnoR +As<dB$+^T7=nJqpB8nofvfS&<B|J~EvdJD&xC4mz_g9dN}yCG4P3{6M`P__QO#hlF>`?HtoMD$yH^vZ +)zhEX+Dc%PNC?ZA!t7RjN4{O*R&H9mEjSxD3YcWcDKFCdpCYH2=B>@LJ6qih_#<<N`{8H`3@?gTYG`! +lPpG0Ry4Bokt@_nq(D4K=@GF^aCqs5YFw&{t;fMJQ>=d?0Dy&Y<ZM;Q`$`VI5Mtvg#axcglI<X(J8Q} +%Ti1$iCGeNBhppH^LpRTLU+M>fcN^WcI91DRm*&J^SHJD4DKh7EIqbxhTsRQZ|#~1XMdftekR4V!ff) +r1Pbi;xp-eoH~(`nnX{*@BY+50Z|vNjP>szHHOy+-f-m=*+4K!>t9*r1e=hW_(|IsSG*S%$Rl|rVX@O +QV&*Gsc^xoHg$3Z_{c~g3#5r-;^z3u_|kRZ{tp1X_2f!~dilw+US<Yf-@AWhPN7HU9?(MFCV;_b-fg{ +~L8kmLAWsDYIrtLAUP?}YfYKUzW0>+Cd^$7-rjabVlbVX4H#(2oqBO&WG-GL^>H^-C!*v8rPE-}azsc +MzM5hs<*pR8NhUcKALnuIZH1U(-43_<Aq+soh&Lr14<c(yrgWsCx_%gV9t)a!G58=)1z4TaRTj5-0X) +G2z<FlfhH`Dvu9bEhe+=?5A$eQRZzmoYXxsQ+beyBQvRMndQcxOCM^^Ugl_n8-UXtO5sLS?yQOvb#<r +fhT!rrxpdmPy#1HKK@ZY7Qu^V*K_5d`lhUfm%a<bEfK`W?I}GTp*Qp)IIRpMf*UrTXv!pOD7{d~eln< +(i;gHLmfHf}`3Oa`}SD-x2u`rNaaKH3bhdF~t5s^rog{ng*-H+TIsSpPzPPilPILVrp(ISJazy&n}_! +&B*uE>Q6a!E(GG)dKQ=2UucVEdNkYdnLSDpK-dAzhOGuAd^ODi3Y$z$^Bg96qXU74GUh_TYDlL$1D}S +_`TvB7fGco{lUA7cr>0)&~MEJ7;ZgLLl&%5phubpeBwZ+)XL2A&cw5z#aid=qJg&d#F1NO8E?6Q_d&# +U96-}KDp9EFjkFdzX(S0;Y3AAi$^h!0dL(v(nX5S`Mz&5s_yT0m!y{F?3Q=SMsWEvMtRheP7QMCF}{% +jh}6_2mJC}F`0#<@c>+^YO2an;zlS?Hj1M1Nv|tGEE$ZIH&+X}I9Rqyau^jBr<XK)%dq?F=!Qo3`Ddv +#8)5qklW=bdX_*PSm9=IUr3CLn@uU`^VBc_e&qN!B;77L>rEXtb=_jND_`+`jt6ZmT%D*$K1iCuC`e| +A&zpNos>e29djb7;%#b%!ui!CDh%!_f7Wj0h7n2Qb?34Den-xH?nJ74cT3YjioZ_K{;HQ%j}J=fVmr% +M(d-bXeAA&-gTmFdFx;Ok;Tk_Y+1JDp-<*Qk`QjDa;5oyoaX~+rW2IofJo|rDPY0cLbit0dMy!tXGtG +1Pp(}1`tML%s_5cWLKp!8Sbs8GNL}#b5)!mYZjF71(gS6WMHZt#2`o%S9y4zla(mMQ`J4pc49MUZsEl +MJ2EB1DhyAt;YVqlh_b;?DApm(0gtd6<zBHeJP_wqxuOwHaOVx!OD#fe)<u9(?D#MgvY@8L6*dhhmQ8 ++D>q#-0$mgao#jj72l^&peH;u{#43bp3B4rGB6{^G#Gd+hj8u&3xGkr%)sLCs*a~FIv+8qh2P?*Vsec +<9<Uhi`hGdkc;3^2stG*CcrO2%OkCK&hfj)1tv-g9W8TkF8b#2;{wL`tvk0X3QoPMmUaGn@V>6#$zZ& ++FvB7{HlLkMMU|Pm_ea#N+gjW}x1vQN$ywZC-DHO90o~ve^q<K@OzR$vDt_UINN>5?rH_y6J(a;~?`G +W1a&JrF0i4%>RH8M$j~lBK<Qxg#a_D!I3N|AcTZ<WPnFVg~un0B@s16%<ed4IwzYTGCdZ6&BFYSbgOb +8@eHu(u%aF_nrJjH3<t^Vb=?3-YP^02Vy4fFz3q?eyPr0qoX(E-+omu$Q<#FJo2@GGh&)S}jPM;i6|e +>oiFdhUP>Jr{{|v9og&Z+t)z>ads_Z5x*Uw>5TBY#%w(Oc3b4`?J8vr2$Z}>6(#JOYYe#8+XN77Ueb2 +kGb%cXfX%F+y&?_+B-$sf&qWV&WURGf&usLJIe8KM&X#6W;@>@}EA<6tlh{PZVnLXJmr7~SaW9X)tDc +~>w%0vSIRZajKFPNg}Chj$~=b~007L1)uu`Vum9^6n!)(4D>@nPA-X<EIpUQa#}`U87X=!JQHJ@@)!; +p?^SjX{gp5&qGa-$uy42C8lO(_W(|1db|#9?eyE0ugbil%K_$&8{KJU)?s!_Vf8jpA9uCDW_jOta;i+ +#NPyEhMLedm48cqC7+pe>3y2!9SgB~h+EI~pZkUFUqxxSpLZ~`h2O8alQ;5#-hBKWV3P0;c!1f(x^uV +eX;9;%M`3^%$Jkbn^j70UQ=w3ZDyBsgz(|Rs4c9egHXQfJGJPHUNq6T18P5c_~fhqb9cpeGvGpa8+lz +188DMdhfy3K{TBshyE>_!3t(>2qVA_tcahk8hV;uFafpS-C!7F-VNZb;-uXBu8&)byAKONa;2@zxlzh +k^JL_VU&LeE;G?o{{I^ONd?-AA!21W3(k0)tg{YvjPDSGB8^#u$Z^v3nc&xekb2*P#qWG(t{)w=Zggd +@*tYpoQB}mC~ICLO&!_(9ypB3<;ONYK8()pK(Nu9An6`u9Q>HxMlE_gGYV}0Y#81}r??u{H_;yGwPv8 +=k$ta5c}Us)(dSX#4~gk9_c$onESYK0>0P^)>ytzxc3an5>mT9hhkC0^vXRX?VN`fY_rzg%Bi9M}6^r +`DFE~NTOR!dvSHHvqEia~GA3y6prR)`XOnKZEOP_#EhS21_ls(;lT1m(`N_*aOW$onc3^x(A<QQJWp! +Kqth5E{LRi%!`=tv7M$aFor4o>Pg>g4Fp17RV4{4I)6-tb*uenWlm#9YC#q=NvO=i->DmZ1MTLo`?ct +huSJxurbplCSc;EG(kas0y<mK#AMjsqvJs%9N*=ciFe}I)}xV>0ee~eYI$hU#EXTfb3QTk2~-AX|{J5 +QxU10B_fLs&OrUKS6^L^4{wLUAC^D*&`u0a)Mtv5Ej0JQWPyxER!#?KA&%f=rsq?T*l_J32R+KEGk1Y +P-f}aR550}zp^XeOmy*u|cP!*=^_+!_LN>i=c|C9lfj}Mlrh=^_CwVfqY3P+kv9ja!mR<pY)@6nlYw< +#Q;_p;01jpAF`JgUYz#VL;8Ky75cP6Lv<0nRSSXKnB=$h(z@He2}bO>e!0q4h0Nj%Pqt#lqyNbDZDdX +O~-RKG_qPZ6vT+W(hq1vI%Q0q&g%4Yvr>1Y!^22cF}*aTyjsu?2gEH@q(>w-=54160BsfD;T-HMg~%> +OD`F`b(IE2|P~KO9peYgL%`5tVpw6hMGY>GH#pmjug?~H`c-DzBfp@pOLpoxu0=2Hu{z+_Y-6B`(8bj +3>~c48>ary6y%jH^L{$qZuMrbEZk$=;J*pW8ogkg8#Yie0^W_DZMtUPUQUC)Q$LNYZyg4`FqJh3Ifq! +K7<|>mEcOaDshniBLJ}@~vo8mWcG~V;kkfBuF;0&^Z6Q?Y5LCNTvS$eFf!BFqf!OfeCg>KaYqZrVUTI +^b1Tj)7bAR<2<>OUtjvnkk<Z|khixcr|ppfraQrC9u5dFTtE4mrCJoXUDU3(=*Y903#84VXfy<@&WP@ +nUJ{ZO-az=h3049n0^5^ljS5bDBv-{~v*4gfss5Eb3;NYx8mu!yVauz)~bBUJQ~_ZT_y$da3PfjXdMJ +&tpfhzfL}1ASSrr_+E`nkWz#oa5lXzCq*TG<iOB(UqV^N*Z2}n}VTH;}$LhdNyLfUoPdbLJb|AdZAaL +a3>c|La#VwL3ep~Q`Q>+zRL{|^kUsK@0WS!K*LuIcu**S1YOZse+qLrn;L5ze}4T;*DX;B6#~Pip1MV +h^wxkKmNNsvYc_fRUf@e`-ivMC@kz@5nO9}O_+7rki=G#<LuY!tpRmS7FMKR-_5z$A>5@D9I{mlwuU~ +*;(8_nF0)BWFXUOcmIYU{K!L1tGU2*8umq9{9b2R-2e-^9Z`E2_BJs#zrPm`#Kx+Q5wrkv`s)6V-wN@ +dUo)U2%v^39pIQ_v=Xzp^j2q+P`WS_)$32p(TTl6UlW6MGrTrJH{PiR$?6JW(f3!5dFnC|l~S063bE! +lO1q_2Z}ea{|s{-R66bh;5i-Mq_-lj0ZSRpg*Z6s^MhQ_ucz?Dq*z8Z*HVgP><|`uhTo9C`$P{p-`A; +i|K0m@9qP>uxP1p04}fO%Q8CoMKy#qJYY-d@ufok9tYg*>U4af-d05KX`qUeE-&ezuI2|E;G!sT*8)b +rt`=Wi+sIf=0u8IC;IqlTUoZYT3C}CcKurev{skKu?fC*yR`rRz;;`Rw<3$M?fs=6s3+$JNtu8E+5^r +%$221scF0YRK6N?5;xxX6c-@^$10>>RXFk_PCB!4`%+{CL$Gv&Z8tAZ&*mGzh^k*U@Lrc6W^uF&14IV +l5KWs2o1u4a2s)}^aEra&8W$SiAS8dEBR$ICtUmFS;A_5r~LxA4%VJ^MdUO9KQH000080P|F{Pyhe`0 +0IC20000003-ka0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZBV7X>MtBUtcb8c>@4YO9KQH000080P|F{ +Q21yE<|hFF0IC8203ZMW0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZBeCb7d}Yd5w|5PQx$^hVOX_OI$j +s>;WdhfoXyXsHPzf(=<g{>u!Ox>1=O^x2I|8V50~u<q#+T?=OFH@Šfse#Qfb_9FV^u;-YZ*fz!s +G!fyc#cp~rWV@x7iuC&@IqRm$c)?U91I^5A;vFgDJawZj-5EX&ue)7gZ(u<8a&E$GD4c00%2-VzpA{% +OD{o%oyT2}L!^pN2E?2b&?m)e&{sTn)8kp}0r1>T5Qtl~O8oh8b=Q;~d$$15)JIFPO@pO)0}1s6B}oT +^<8@FS^F(7}71KubTH&cmrnoZHwsmQyJ<a1dJnyLY~WBwzc<e0GHS25p))0EF&adrbXqNQ_Lnro}z&| +5^hks?=WJ0sXf&(b--=ZeORY68;svb{{{2`P)h>@6aWAK2mtd`vrqs40006200000001ih003}la4%n +JZggdGZeeUMa%FRGY;|;LZ*DJaWoKbyc`sjIX>MtBUtcb8c>@4YO9KQH000080P|F{P}gb!O0g3F0JB +5@04o3h0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZB+QXJKP`FLGsbZ)|pDaxQRrtz2!7<2I81?q9+6V9 +qvRD>&?ZYQT4xok?y7m+cIa$tH_QL!l+wW?B{%QR*IFkpI3_MN%Rus=KpT13PI;WRa}br;6oWE|>2_B +kEGr#g%<4w5s|}s(P{bcowW2U$w(4CTrHnhDpsD(H>QM5hdfA9aUASM}4zcz%$mVW><*^QNhe#d)bPM +s5^Mc;KMVf>go#r2&NlRFpe{U3eaOst9}thw}p8p-j<cnnyDizRDG;u(ZQFN)vC*g5`0v57VV?df^oJ +iRez|2zvPmM&xL5r#x-j>j4WyHA!9HVcJUzER+g}p{;&&9JnlQAGX(>r(C#qHqil5t4Cw1}%N}K|mu& +qA+Y-0}Y`BDT!QzKj@UlBI8opU9m&?WC6+=cF-pTp|=e*#GOrKR>mF$3rxxf~I#qdyF1Z$Lp_aFqMee +Aow6&aAZT$}3+(_ITp+9^6Pul8T@N{iubDK)Wr*Vo;(5ha}FsO^}AyfmuqSfx%U*ogb8uX=H8)de<IR +Uj82tC@WVvw2^2C9G)1$WFAKQq?e`ICBZQL@z;Svit#<r`oLH#XZMm+(1+Vd6c5n{%AO;XyF*yAj5(3 +nwb9=p}W7sBzW_tLhfGQ*Sdo<igHT>-bv)hffV;vbzhN)=*?fbK7ZM^s*S#C^Zol;_YJNj$`9A>tZKW +=cCkrq5R?V~muu0v9ez9N&v&9rPjWVu9XKeko%k2{n=BC&Gc^rnR5}AiX?Q0OvXb33@Azq8%}I3mu=# +lcR?u#iM6K>}csf7jB6TqcA2<u|^IjukI<W<-Y%jc$|1Utw#4C7xRP)p(N?>GKoJDb;TkF$#L)<q)!I +Mp1B;{dN044Xx|Lq?i{*k}^>z8l;FaP%Y+uQfI{|icgOguJTil~MZ-Wi2|C(%EB4Gh?_Z>*(l83=jHK +K4x|#_68UI~vXXDM!KgZ2=x68anL1;J^kq<%hEn)mwZrH@x)Je9(h82YASf&bNU%0x12@Rw5!l;@4rv +AI#IQ=;0gz1-_fp@>$c0hPNVN2OrFvSt8Dgq%mSg!P>M(Xr4gQqNW5swCX|Pah#VZFbs(Do#)=!-WT{ +MV4@NFrzyF+yTt<S37EEb9y9}O{hFSw^StI4k>{JmVgXK*<wnQJgd%-5Hc*mou~(>n;wIFYY$8wJ+`L +(&i=TiuTju_`qw(?trYho<O&sv%AHb6@HpUp-vvrnb8@Bszb_>Cq-e45N|Gvc|F^GB?k0~~tBxpV}-q +Y<7!=UqA5U3v|ghS4J^<9~;y0qNYJ40Z}9(dJ5q@%Ytpho->9Q=m8VSnCrcxJ>4a9D`;0(4P>e9(q*O +NN$%4(!5zQSI&`Yx=in)v(P@89$Wy%cc2tgZ60-t?Uq5YjT2NSvm;=*YgCI>Q(14${m~Fi=GWmw3Yf9 +vcoof^1dXa^MOVu{O%fMwxRJ|d%YQmN}YT1-KV|zdKjKqZyShpA1L=Q&#Y`<fd?M4_cbtAmfyK22uxw +rxIbg1*&}ajP>OIPOY7;_>z18iB1f!C^jIXz8}?c+x4~rOM`pn*nfn$Oj(2R%3z)4o5(Om)IChg9<>a +?#t8A710swG*;mw*nlFy&bW+0kY)tC*XIP?({R_}2t8qASPz)|thjYJvZ;bvgh4O@joUTXyDh*Dp-t7 +jQy&#;}S!ZX|>bC|V;@mwn>*x&xt{yr>1j^}s;w-0#Q$@RD2-Nte3D#QGSck6${3DEf$6^C@jfxESj^ +sJ)=BeYL6I8#}i9hZTj0;B;x266)FQ0^CfJ^YRDY(~a@GM0HZxe%aacs+z@a=WVUC?UCbzR}Nj(1Y^& +>ee3p1O1WPd@V<O(TS6ZmA@?o3~iTNw#4jiCyzVau_*CLr*<0F*2n7(UoL+)lqeX2>dG$9M;>cY9Y@A +lIMI5MX%150$6yz4@D#q_=MgbgPB6<G>(Jb%5pvym(c)e>Xo8mI&3gi1xY>Y{2`lFYEQe9n4YFqICz; +O-9i;!vxQUZZj|Sx_aIhsiH>__?EiZ*rfU7qS9*v^A2C2XvK|_k$9#R2(ac5Y*8NJm!`XF`bL9y4)j< +%#en`}_4(RG0BL4G>fJQ_RB$r5_K82NaNkAqkSH*ym=hj`E)Q|Qcp^y%i$qf!aLT+b0mCsyld;ARmRP +?k>#MNgs$&d_jRY*jSCrUiRzW8q8BpkRdeEm~#5{ryBB(W;?J;_~5>aCpLmU`pa?a@y!j_Y(_CPMCtF +^oxiIzB51$_}?Qj#%>3O$B$ykmqR`i^Wmp3kc|bLb%l6tG_`a}G<xmUnA@6sHEWe3gb3cs0KOq2=cEZ +bWz2KA)Rue=*?Ck$aU{kd35v$MF|q|gvP35_%z1<HUV}^C35fYchas*zg9%>%yen{@7z2k`yXJL?Ph` +t{4tl<%#RVSgN`dCW?7qgiSf+!C)_h7rNmfp@zl?o^C8N;BU2zgO%nn!f^Us*oPBZGCf6m79d{Y;g&w +O}KP!*QwWZ@TV;aI%n9cTOja2yA02^nC=9&K51+=J4ZusSde3yp>k-o}WT1y&w`f1PMR$LJj%4>It9P +_kH@`7-k`+#pt}nC&A$hj1&cQTz1c1Y$%XpxuC*AM`YIxzT<yUY5D{Yz=>V-t`rGQ*=Fu^y&m{O0j^J +LH|+ywpL0IYAju5>~BhUD6X?d%PVabyhiK^s!L}>WjYI9lBP;TnIH!aZo-?LH>&ADw?tma`hLA3{nyq +23ggKR;)prvBR;6fcYv%4iD5u{q_AKDYt;-Xk&TYR^Bf9t4+Qq<ZnWe%LmsB%k#j-SRhT-KTGvS-QPF +tqxs+)2O(?t|{hZlwCO&tdoNMDAt?$ag+}4rk3BYeQ0X>^#4%?pOl-|J1IB4|A@mr4x8E?>5)-YicAP +jFzq@k4Qc&`_pF=0X!>#&EfA;EMJ)&d;owc)4<zdV&B`Qi{&9_OO@ehT(uW260=TZe&l)sqxWW|5@xv +F&{_F`BZNZ=Q6NtE85|vLrCE1a1^QW3?%Z<eeJ9$iKwe0M7c35_}<eT~D-e{+ITzuh=_<1*9Q4BnRcL +&`@}#!nBVg@E9T#voX&jGfpx2d^jQV)d628unm|?d{clnml*|-V4sKUX5x)AbNv;dzCh4133z`ygnO^ +Vs_$hpBDhgFC^P%`56EdqSU`jBe9oKVr#wcay<0roNQ3ekrXdo5OdLiPZnjOsk=tHghhlMcRdC{#rd8 +&F9Qn_oa1M^FGpRjfRf_SVP(5gmQ-xMk;(@~h5~s59$pcHr4xVHDFx3IPISo%n8>d^`GY8NR$O1!prv +_pu81HmG73o5iJx%$=a0ZA)qAN1?rXKSFy6d&&Q`*2m*y=G5E>v5(T1L^gRMml<6AOk4382LhE89Kmx +cuQU;#PHnW>J88C^YNaN;^w|P<ihHE0`Pl8m*0}&AP<8QE3%mBH+c2#3(Nfa8Kf`n>=34BJkV+SP1Jz +R^|+dHOHDrhh<(2`z;1+N%n~oU@8uz{ej?Hg{9HX5VX6qoc_WyCCeX83?I*aW85DW);oxwFpz6l4H@x +xz7m+^+9~!H6%Zwz_DIgV$2nEfrQZg?Jye;@*tI<7;xouyuctm|6T78|g0HJDSl?|u$~wcD23RBmLgZ +~;wBX=OQ^9-Iefhh6NvxY97`vYpH<#(7S#L+Jwv<<?gG?u`eBAtYC>>LhL74~LUz>WPBb_n!6^ua~x+ +7HTkqD}kkHUDLz+74(d?O$W81>)x^)T91)?dK^6{z$|1I4;TLwe*_qBDtdkvicvUw}xx3JU!vPB1)@T +gQk!#=ImLeWLMUx-|8em}{W}%=7Q!5<p^3q<ymkU<WB>Bzn7}RHsF1E4M1R?sHu;z<qRzzxDueX{Q8p +K@;A0<mwZYus4R<d8{XV#6v!!C*Oet>_ZTIsfgeNw2YK~IHRc1g~Rk;dJHE9Z$kp{Ka=qdXi{8p`9qd +Jv3de5VJ7$QfRSI;x^Hdx0^Q{%v%@6tAPnEFElRz$qbQQlt7H&F*hNGxU>v%$A(#UE&I|DaS_NWOeMT +c1f-%}B+LQ4{5fB*DQA3kBW+J~j4#ZOKapUd${c$K|W_DjWCQ%UcVQXkzTPt{o9<&lw5tzLfi1TfFT$ +(YM>Q~?+G&}UN!oDelOV_RONaMwlT@Kh+2jH5@1zris_M4ERmf|z$Rr`SVmxMHWB+#lycEqeHEFoN^z +VHq<rZe_c-y%f1K#bjnyT$e~dl_za2qG3>AQxGKHOgW<qpCY{u4PY-75B+53JxR-TM&{LSSuOktt_zU +{Y3N%0`#C#$!hxWcK@sc9lYjd8oT}Cv|R`BN>KKW6eNWVLPf}7;r8lw<}HDpAGtRqEN9_y_U>Ha)u`* +g!8=77LYIpn&=~4n*z&axdcD@0)P*VVz~8RT<fg0+u7p?LYwAYyRERc?7vHO`Pmqog#;8cD__u21NkZ +mC&dt=wJQ58CB#mm9f+W#wR4T|O!~2FHIgAu1-mK?yk$v2@Ntt#WaESks@11S7!Vj3pM}AK?&eQ3{4W +nPCL|vc2;(U5u)jsHG;bWosfwvO#Ic0pX2ECaD;>a3N%8m#928KGh+0ZQPAGw?IWMwqS13~tbAqw={R +4|5zE~!i==v$u@;xTr?XzXGP#^do=wzM-T1y}<gBQ!2ylNaZhlGTCmFqTu#W(#R<4O9bmrL=qNZ!j1T +aP|j)L|6sGs<TB3HU$MQf?89U7!3$k^(|Xg;>3&V5_kvhUILVg5K9O*0<Rocgk#y{gg8$;T_?Z&=Hr* +%*RazWeU?R`h(d;Fgo!hPl>&szvDe)8Zb%=ypQwIiAOqk%uOGtU2h%2Qjf>VY6Od<^DrUjPU=y~k(zN +OTYJSD0CstH~*8+<zn9OtAZVd#Fz#imjn3-g@ctcuG_b!Z6CB@th(K)~W_G@oabAO^XHNiU;WwyB4p@ +6qj^)9aXykhHD|M_2&Z1+WZ_OCC>qhD?dwq8d#0Yl<c)6-e$pAzL_5Zz4n6x{^Rjho!%CI-6rkZEAVM +PPcoLa4KfEYSakXu?0|Op-U73`CjSq*jd|8-?kDfASJPs~~j5={8#<kli_5Asw=)=w_9sXCgW}qRIQs +<dz|D4PGGiuT%m@v-K!MH!Z1l9{-j%PKuxCwxKysHH<uaMFla^wi1moIH)zCa-@r6cymq#j1nRw)rS* +1By$GvuBLftSh@cwK(nbV`)DhI=Bk-G@@%%|@6126I*`X)yHLFu%QjndY=zJS>(-R4U?~$uxF2@ZC*Q +N+uTCJsz!2tj`XL^T(R)ywQ#I-b{y@dt=lL%kSV>0FPj|BwzX9Y}nD=y?n!$8&F7BQ618?!yLjww9$u +1GQMnIW>e$bqq`?U@4dh?Z6?ti*#G1V9Bk(uidHm%e+F>I!e+c!tGd$tMPKY7%Yn`|%&{l`p``4hb}e +)2MAw|3x*@0>@02{K8Xyw?4Jke2ui!qfTC6B!jxVOZ2@lWxIDM7OTBi)^NDG;(B5L>Scb+5`_YHFJ~f ++X6lfYmF+`1+Q~{0;}87f#H#%W2QgZ*)Tmw$b#u%qAl*D@6!n}&-d|zrx=1=cM(s}P=jO6h2fbls812 +WJ9itO43EJ|i2&(;8+6sR8wA4fl$vaH{K3^aQbPj!uyA}^W*a#q7H5JEQLWtdQA7u8eE?SNZxcFGBE> +j`H%cCfEM~f`a|gO}wn9r6tw}XEsfzEaukl^Eii-E>3lU_)e!#h7Zuj!ZcrZfQ)R;u2vxA^h(ItI#O^ +|9#OD<)h(=1>R_>filha0c|<MDsk!tA5~+Qddhjj~U{F;7f$U5`^yOyjjN#py`=%>P8d|17N!M&1*(@ +b|v#b-SD%#C=v<`)h{ewi2Gya3Owjkpyc-kAjZdRK$`LKuj|$vK_so*lr&^WApeySZ4QtY2su%Px3eU +OO${~udz%lOxe!ru(=^2cK-zLe_E~PnQX$h-P8<6r&i#a2LBLKeZH~(c!JL_WU7g%$Wx;1@WMK=yM*V +Vb36k8_9;?HGm8&mA@*>K@#0Hn{Jdg6{`lh!<Y~2XwF_23CZ`R&2WM?+7HsuhUm$8f_EplSjrRvD;u! +hFTGhK@e=W7pi3hp>RQ>6UDMhE$eS#XN-*?+fmrLqOFg&BTx7@qQh;h1w)kAn3^G3waet&FEzm@mebU +=ktX<e8xzBt2s3)!+QoB6AnU+4#|IjI4rTcuH8xDwN+T^N$+C$E!UaT~M8i!s|!Q=c-7^7IQFR$L3b4 +B}X>0y+l?O4?q{Fa1ZuMopvc&05(`m{ZSNUUy>dI>waTTr&(doX}qBOk4Z&BG3lB%qz~kh6InBrd3+m +BQtb}xVSm|=B_k{(eD3{z;KF^m#w=RM%3XE3tG~tzDq$|@V1f$sqo?~1>Nh9+_o}uWXw946NHb(4psC +%UPC+R$@BRF7K6&Zq87DjW5uM>Joc>mYtOY+q{xj4^NVKr%OKL2R+UUCwHbfYGKYfQ_0nAeK07YJgw1 +q)hnK@@uh;6HTc%h8&U`b;=nhxMkat+pBQd!!r_~q#1W-!@1QY-O00;o{RI^Y300002000000000l00 +01RX>c!JX>N37a&BR4FLGsbZ)|mRX>V>Xa%FRGY<6XAX<{#5UukY>bYEXCaCrj&P)h>@6aWAK2mtd`v +rs_g-ktCP007<v001ih003}la4%nJZggdGZeeUMa%FRGY;|;LZ*DJgWpi(Ac4cg7VlQH0b7d}YdA(HI +Y8x>Seb-lr?aMB>`vHNLQj@l()F}xq1Y?A}nsp}CN{XZnbwmEWlJ??TFou*aEJ%aqoHJ)es;zFQK~u6 +vP(s_%@ah*|qgt1(N9iawMq5uSuC&66OZ)>&@dgN~$5d1vtm3juDgDNT{2}w(?e|+Y{c<_|%C3LR=d< +}|La=@zd_idV66!v}mGP(p{Dj`XLkp^cxbkFseqV)!hxmtp^IXaSX4Y-50|r`XK=}iJBL^PAy1+aDu# +eoq&n`v?5m3`w+lKpONN%jYhssYV{Pvc+qO0dkECw!U?z~O17h$n1=-c-+EYgwShSI)I>$2i!!M9e?9 +yW!?F0k$}eMenT1|mP|PYy*?M}eXm6p<a+?CE*&^t{Z<u7s`nY?77t8dZKsRurM=N^<Auj)%Ek#k{`S +4*|x2^_#Sd4kaxPWL<148$H>xA&KMYfX=m_HAW_U5SP|!n`bxesv~!Ix|M?J&>f2cvVx3cH7dbEHPs! +s)1<>BEv8%v6x_q|Ux`4+9QWvI1i@CDq+=3W*YUh0X%vyPt+bYhQ}BsP2c!Sv`TyqrRbObFCfA!V6n# +wFU!2p-d)Mie5+dmuJQHBTB@T_nvj<>jmd_f2b7b@{53@V><fNM6iCY{$Qm+y97f?$B1QY-O00;o{RI +^Z81Sh^54FCW|I{*MN0001RX>c!JX>N37a&BR4FLGsbZ)|mRX>V>Xa%FRGY<6XAX<{#9VQyq;WMOn=b +1ras?OS_q+{O|A|31Z*K_DK$u!)1BfKUc;UX4-LHf*OwAPB@Bxp&8iN7Ce;E?2?dy)&~9?(%VxTqy~f +2!?#e-JPA8{mpZ!V%OBIWM#eC6xC)?sIT3zTP)UXy<<($#ObxD^16*1o?UUA7I%%vigh8{j_DQ8s%u^ +r`5QA3G5hh2kf&(vWl>r(8L#T9$bi&;L|XBkIJNQ`_Alznto@hz>M~wbQnVE><5s+jv%2bJyU%3ZvmG +uN{1h<2%QA&oDK1V$UP!(wMKnEJ78MLF=QhH5dQGn$`ubYD+ZV0aiAqi_CRN0{qRY&>s&02m8CqDFys +qchTICo58zGTz+_g)aquhdmW>?E&<1GE>kFS1AzyAK)um6$0{^7-oXD|M)RU5B(C(Nv`d6gGAmm*?oW +LBzUTNLXF0_UVpBI57$v^qxYWg|gCUIKQ2V^L)SKgo!_-8XO+?1zeu*OIssD$=ijSp$vfrB@qJQCIKV +OjuxiQvg<q)m~0)X|<L+lkCc;D|pB==~0*=u&Z+cdIvmRndQ&nv$LV6YZpHKj5S9{AI+ri)K^6Vg|{c +f5~acm8p5C8Y1s;%A2mEhZs!J3Kj~X-4U>b&?{MI9u~?u-5iM+~T}uo|d`{28lpvC(OPH36HQVtkkxm +)eRfxYL*6<cYUMlo_gwPS^EPPI5W6N5yPrjHkI9$xTPLNqiO*FQq&I0v>6&*7V16tGyxo@j!HxOD)Ag +l4dEqmQ$^$v^<rzU!{{z*S;--)yl&0jwItC`h5>1P#PU4nvhGsk>)cSHBa0bBiU=1D)RCL8OLyvStFy +X)o546~8{IP%tP%6i2|OZ=z)iY@Q9!p_8RW}cn4R4Y!S!<^7#A!HUE2%WpZ!?O4XM1B>Bpmz@O*Bm@t +4}D*lz~^`1+-~s+!Oi<5xp^PNDm41q9OXL1Y}~Z<Pa;!cbm?nGjq|n>xyc8jp-%ol)&GtvbHH)OWzj( +no2RQIoHpv;GkKT;5X?$&8Y~?n<ts=^oR}KgPa27c-4uXZ$TaPB(ur~%c|IfR#W3KdG{I^R_?Vb816} +;lIYTs9VR8pE4KbL!s3F_+rkO<T0#5nTPS%Jt^GB22OiZoPYH&%1aU7G~Ar((0DoaX8A^t#WGN8oBH5 +fO>ipS-Tpnxz!DXTwX(#XWfH5f-Mz#y_YA*<_JE*H*Wx1wp`u#v`;^dvegwIdp7!3}|o_<bMVpbq}jz +F*Eb7CSXjyr$|&8k@|^Hw~ngz^0*9v*SyaF8AQ&6z>tM<yN#)B0wrnQmpE_>=C*KM?w}2S$#-rBjz*b +&~gNKPCik4#vTClwC{M?iG_CWFNDZNj^zk@MHLTw60yU!$hIu6A;rfK4#{#!Cc)$u5<W0*kdW_7=}23 +N50q9jh5Kk3NpXsZ;_^#y^9>{#N4p<IfIH(N2!gj;Vd_H&2(+HnYmi4U9Yg4IX4C&xtg&L3H7s^d#xV +s@1tQu%3eQx=QHzGhp=+p(p30mCw4t3=!l<6}gs{cmyd1q@JB)iVb((WC*aM^iV}@{&a$WJIZasKfir +FHOw&if3z`uNEKq~TY+qQ1Q;3aU;7C9Ugu(e;2=>*F$Pp5bHe5=(Rd9*^A$5?qv7YqB$6WS>A7M1jv@ +O-E@8SBK<E6L|*=uCZ@c}Un@-7>BUU6X8xJXko&dHeF4m*;RO)PgDnugW6>TLmh-BO^j)N<|4$2euNT +a+a$ftkiP`GjPG7t*Z^$<ev@T_LVG3VDJD`t9-P)tC4?N7mrvApTlD)r=@6jOZJ+hCxLx92!>2Yz@Rp +GpkXb3v<D0To7okr`zmH{arU9!m*73XXDTVLMOmx>Tn%;;JWe2g60F<O{FQ);hzvMj0<qaer2C)ta1Q +EZI-|X#Lj-ukZNSm0?ggZrttJ3*=t?lo+CE=l!Md*5m+Xhv&jW|ZVJj-n&vA)U=xDfggu#jfb6_Zi?A +T674l3dC5I*6YtJ5xo)$Ob^ob`t333s>zXuiPZyP|{8oo&zA4a9PG-O>NkA-&%<y2qYw6u*Pm1Lrv{x +pkijbGMy#peU>M)gK_PDRJgE8l@@Yph8vPNpCpmgFSZ^&IB{62YTN-(Q8d@r~EVzHgR;j=9kW{9#!y} +6MOZ6xMvrf`*7`KXw+hPfkC#%LHq>XU~8Afa6rA^S^S)dW_&MzE@7~@>J-KY-d07m@qvIp!7J+R3iff +UEF60+MAbAzyH8Y}cg{ZU0u2{sE5grom$wRS&KLOYPZpJ(i$+wrsIo$Ir_a(fuP>a!t3OJh(}5B%Ch) +F{mzdfaju%v&1!O72EWKSuPF>@RggI|Z$$`yn%n3Ol?zzz@1*U8WpW?#8+2Lx+VozJZq(1_L_DuM|Kv +l)OLA{6loRKZ!H2<ueu8igOZss>GnJ@3>61<jx*BcLSZxB3iTR`<XqT!tXqqe{ve0}I?S((N%9_!C&E +g{wU9Vj@o<gT|6{!*>6#AwbNBt4NM@*W$F%muN>EiPQN8e7+!wdMnf4Pka@K*r@5fRAp5{s8$SfqbOt +hX(reh05;&>_+rk;XZp?`azvtbv0qdnH0dH`(C)7g7p1*t-3O|4R1SOdZ~B4av7{1cWS)?6LM4dM>V9 +rHiohoOC`~DkO4wP303ledRi=pdRa07kK6J%s8jX9LrF`598Ae7euiD4w#VAB!x{|I$zI--$T-xauz^ +FZ6Owt?0FYeG3qP*h-#{S^I|6VzNWN{401~wf0cYM5!ODE!Y+9a+6ag*8#u2K!Dw<T2NLXN+8J4eL2! +b)lZR2AG<&nF|^5I+7u0=mw>)NH7*pvKib+1jYKy|O_8=f|eIn}fpo@qh;?)uw$i@SH5XLkMYp0ay{Q +$3DHsSfp~zjAf>3lvjs?QOHkpTY5U^FcKTf~U@PhTL*V4S_R33(q1DEeEhjj2k?Ms7`z^_i$n*oWm3K +OEEa0cDQXR9tyejRz?(xz?y(Kb}AQ2qxA*tei<_gJc<>t!|F^jzFwPK7){nTgI9vyelt#4X&gAh@Dwp +{Xhs$-Cj>oe(awp*{tZzQ-zKB!L=J3z%dbfn72~ahB0MW#-9XKne#;xx>JBhQ1-+iN#!$H7%Dh<9jgo +qy4<@LW)l_eGU6*Bj!0iwG*qtjXpT+E%)P350Re&il)u_=IR~QpKrM^`SZ3xRwBOa7!fFx@sA!bR;1& +C^g;SQOr>fG{TRdr+#Vw<gstWQ8|*hxN!vsNJ12{_)J*;(gfz--HxsBqQVINB3B@JgLFaqq1}<_@APZ +A@Pg1vpN|UH0_#0V%SFdPtp9!<`8sj%{mLEdhmZ1S}VzdII!edsGns??xzYC=Na+#5h(+vyu89IDw1` +HyazUy%0eL&Hg=~hXPU=fciCEQAxV!K*cC?Q0l3fpj<~=*uE(V=ADDHTlHau!F-Uk?_vWdo|!<GAuBW +m5TY+Hz|8914%x6!`|Q%_5HR{F@omSRD7R(CpTwWW?0aQd5Pe<73|dr%S0@gs1ePt7=R?@Y;#xpjNNJ +#tY}61kxT)|KPz$FHkmI{HYtWa@GtE8jU8)V#pi>%nFNWGl%6mD}-U!(jy7wy~=*SWeC~82v$VBh<;H +f6=nB3rR$TK6oOLC+Bf4J0>wy~1>V|q_V+}~D8s?Nsbob=76q~>_cs6M3uncrPP`d}|yXkML{<wJWW` +qsiZheu9qY12o|X#0x4-!Ppl{)M^>-f_xXOmv0n)+ANd(f1lgco|=>=$MOZ3~$8-jtilEgs7$mdUANd +-<Q~Qp_E$R<Qzdvuj_Z{v&|(NNkRFuIVEeC)d@l>UqW5oN@hKvbk8d@eeGsM?Ntd0(Z`*-CmXHm@6AR +-XVF>wQ(b`gq{7f=Zt0g9%l=#^Z@cbW$tcX+R?hUwv^9;#qf_7XXn8u5e^H}|T)f-S2{E?<CnMOCl}R +mC>5|tOHX^Ex)9_NarNdW%CvDv|!=<M@bN_W0ox!iM#(uTyvX9ULRpO_220K*clX|tLZ?`dCVvXP|?b +E1n_GhxnGsrc8eVpN}Gz~TPEfQUyaHl;tReze>WEI2i*xXg&syTXppf#mAt2Fv+rVD&InnCt-c{%w?) +_~yrds*JBWabaX!XbZs#s^{iB*E_3#qOhv^UsG@qWv3nI@E+g9B6j|cAPEAQZuv|kBOzpA1qL)#D)B~ +PZo3}U(%WD3}MM2^T{wb1{_gd+{5Q1z)Xo|Ear|A+2GC#T@fo{5fjcJnU^|)i8VD0ORIfR%1>Zfy}}? +Ldpy}^nzg*PUFL&R7RC>gg@DJpuEDRHI)KV+tfP?qSI1Y+SfgK-2$USb2=c+-bdI(LqZqtE@kQ{s>Bc +Y9Jp08PSpNl3O9KQH000080P|F{P~D3Ds-Xt}0G1s904@Lk0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZ +C3Wb8l>RWo&6;FJ@t5bZ>HbE^v9pS#59IHW2>qU%{ncB*4`V2;g;Hns&juG)U6|g%Jp{M8{lYNfqfdU +XcI3JHAt*><rj20c~vZc;ekX_uP?Q_wAN+tjqET+Ei_ybwzn!+_B~^+X+^4!nR%83sM$M+pw~z*<Uno +iY=YZ)^;gt1nrxm&gf%FJHgt<u1jVFo{NTyqOJ>^I`8|opUdGd4c~PrMysp6*tE@8+H(+@&(fH7xuI; +!cxklXQ32CZH?8uDanZBYPHtdYf!KFoo>B3~x2tdY*>C4(zvtIqE-x=GKWNJ`Fu7t?A?U!Ew{=g8YJX +wgduHU6QRfvC#j2*m;YZOId@%TtHTQ#|Yx;f1ddihUyh-hntXBeC+K9o%&L6v)l}ubaiI~pO^yiM2Y| +UsN%%rm!TSwe;D%Z%pgr0oIN--xF;Ojy_gvlp~grc64&lDzZc3n;3&%UEyi+<*`#L>sirmT^6o1pI4> +IVfRvo!y;;8cTaV(I-|4jyWEed*%;&I43@87`?GXw6n;%{7k56&EnTIRhvRjkSPeO+_E|wrRe`uf0)p +rAFV&!6^mXwxR&(8gOLRA*QCp+YW<+>5+9k?TVhdZQIaashP=l0s!%!Nj#%L=YywcT7hv<wt~1!E4b? +02Zq)=O~DG69VGhNND3nm>@ubIj4TW)lasTPR1Fs8hQb7bdWkNble62|Y*y9<=j44+0>t-8yZV!sB2_ +6-(KX4zN+$ALB_uwa*6X?brb0X?<P|0lJ&i;e9~~TDa4JCfY>Rtp!T~7$?kzjuRJ*4ZFb~VL0&nrEZE +GvW?wYozj&6_0X`14BCrM{Yy4&YES3&c-U0k*e^<)i)EG2s^0YY<<W!demRG=M?k6DnwY)W4LOi)n}g +iNQ`LI)w7G#-cPZs=YqpzX*lq(E|ltCN9I=|IykTseX@N5TW0!^y$gL9o!8aAY7Kj|MD@Ps|3(kyxC` +@JVIG)3fuq%#>wN$!-T)s4j^w(ln}{w{BBVkeXJEpy*)W86LC+9A6bk;WKJ#5|jljw3ya%Bt0cKHd+c +^mlK3Fhq{m?4OTweZ@}90h1-6fIeL-ka9)(aLBT1$!8tFTMg>i7MRq2h6x7!x$hjzDIyB-Ss~pWoN4i +EtGWlY<ol4Z^&CAz{a~Eh}>LWt!KXhhK#jbCLO;>`ioa+TnhZe@kBd*4Dm~wS3i-diQ18g}CTph|xJ3 +N$|a63MTRYRU6!k>Y9O-_?!>$gkCnRXo6SLEi?yHAkN8(Q9zLIs#uXp_>_ZTLiXSkVQBQUE8&UIvCeZ +H7O{x-Ra3Aw{{#d;}<WWkxK70?bR5k~o?pjC49m^uzK?RDBC59<f$3(&RuAgY;a55dWLo06m!V&`?iE +D>{>2v{f6wuoE(>#=I2uU#u=n`7S1F{T9@X|IKI9Tm0{dhCx>hWqsFFZU;P3<}umKX*H1)923Ial8MY +sa~fMlYBRbGJTNYTOn3O1EP%t}8|^~|kO_*I_41&$Wl%Sh@D&mC4OPj$&g)&lZ{`K6uakfB73ISDGX$ +1j-xq<gA!zIo)Ct+4P;yi74dqHqeNIHb<3gW#s93x&z_iq@N<9<c$Ok*c<dWuO5)nm*hj~ooBpoGWGH +?syGBoI$fI6o=35U*}!)J3)UM%D$%)vPwCv(|0f;BrDOzau0E5EHhSTN0lqYL>uncJgz1^9)omZND!1 +=8E&NyiAIDZ>!Hp`lbd^K$H3WveS&erJbKfSM(15u7fua9M0*<YogAVcb(zVQAp&2>H`WX?=6hlOGJ) +csO&c@#rr|i(^&$qp91X!rK*e5f94UKaKw3$OG)g@E*kfSeU~W)I2!42w(p1#X5BiDtF{vi>W<%XDE+ +NU&f-6J7aAYMjai6K?z-CdY%tdC}zdZ#`sv?Mkq4Jc12$cy%{J_kG|#tLaz67fC@x+%kDOUtSD(HtpJ +D+vJ?4^U&xp1k0((zeBX%Tk-U~`h-gVEo3S4o+EdV42qOXdH?UWTP!=e{5L@bgd2U<xn7Rd(S|sWGP$ +d0twxEvgG826NsF=nsFB9eJ@WgNgE(m>%6G!qudRsUfqd*KeKnL?kQ$CFzcx&j==q*4J-@wpvspdHLC +F<kWn^V89VCaLG-S(j1U&*S5!%lhj2Tjz$YY8ZY_QeQHq_k+i72NLVvB_I*-=Fcj9M3;|)9&iZbvD`` +PBh{V+gwQ(1ovBp7T(IN!`$0~;h>Jos)5uE`N=UswHY`4j=r(yi8n(l?M7t7;yUs{bLAamdx|%oqnK0 +t9cJn<+xs2m@D6h9;pv-#@Pu*b7&-N0kX<3@wyV{}TSz-6`Vy5q>6`SQ`e$PSCk51@H56Ca7g35&Nl2 +L|PnxHn%^~N>A_i1BVV8oClpNo<u)E5jkArSt&}pjuEc5|&+?JS@Bo51Xlj7P^;Ge{clvloEjiv_Bl% +ErAla~wL#g_clKx0N_L^Km(zkY<gF#0Lbu>*F(Wg%|^8bUMqk&k*`#^sipk|t6j3$Qu~(MU(@^XLn+# +DB(bKOm+P<G`WRXSTlqP)h>@6aWAK2mtd`vrup^^ARTk005^3001ul003}la4%nJZggdGZeeUMa%FRG +Y;|;LZ*DJgWpi(Ac4cg7VlQxVZ+2;9WpXZXd4*I_Yuhjoe%G%M-Ae+Ven4S^64tGZWuaRhN(e%+PpLq +WTuILGzn`pFvg|mmAOxN6?)&b$J9DE?xE3{`XHb<k#DLZE3{o6OZS+}GU@R7=S{sKS4%Qh~x=sIp5Kr +MkIWUSz(l{Y4acwQsF$Vs6*}Txzk8i7=^m)5pKdrwbB>0T^9$|k%)^Uah)fV`7?S%Fi1^xqX4X6?d{I +{v4|Jy46f`;fZCj)QY&l{{`QpTiDm+P}nCJdZFxhw-YFbmN$b1CqOsY+DLLFUZ8EZVfu|M7A~2$hmqi +#MW<qAjK>E-yt_z%lg<g`;#4EZwmnd68~CN`djGP9L~WK+!`Sl{P>tsC_%VLIP~&eb8D4*B-Mw@ohl} +S>n%M@mebw;S(CG`w|&U-e*v~?~E0tQjg$bJE$4dU4(*hIY%(*9%#m4*j;yVpJENT#wc8pTX4&Pk?)0 +ag10?|M7y2i66S3;KNkDI&o_BWV@OF9JHc3t+5iXB4fU<=ht+Jls<W0R83y<iP)1We195fc0)*n)oLH +A}CLpZZt(x~A&Xr%`>~ZUt%e?}=Yiz^h9X>PJ0QT@$>3>t<B&fwuOx80lR7E}E@)c~~x2(H!Y%=<R)q +8UE=vhWG0?dcUQtNfITtGz+?KPKT=*9=MGF1b^w6r%UO`!*z@qp!f7}xAQN@EsDr`bL8AM=}Ef+2NQ! +0viSBOJLRyF~v1P)h>@6aWAK2mtd`vrtPgc|yDc001Bl001)p003}la4%nJZggdGZeeUMa%FRGY;|;L +Z*DJgWpi(Ac4cg7VlQ%Kadl~OWo>0{baO6ndF58!Zre5#zV}m{sW&#D=m7$F*buZ^Fw6*=4nxrv1S1{ +AL}^kXsU%*Ici$l;QIz6lP2pTkKw^pH`Og2xQyaa5Ml=PxMOA52G`#%EuZ6lUS|_9hv1_z(P;#Y}D7h +5>AX9vYi$xtpg>q;Vmz_xA_6^Aol7D`@_{h$Fe|z=^d;iyFbH4el7cH*1#o^R@ylI8O9V(YYt<8?RUX +7>^K%6dso&Yn|c1bv>N|K8Q4tr-CEJZEQL>DiIl}mJU@#vw!8~;ZO)^RBZ+4Jr*@ghN(IC{oaB`WSP* +{^x&wAl|w-gTdg#iEqlT6lZkNKp!xpf8j6RTqp3YhYxTaEvW2$~yN+>vZ);{PV^K3{PPh4Ozj-&#=)7 +;~6hqL}6HuK#N3`!N&Be4&et_>rC7+=vt#7dk9{I>^?3ZBJ@w@ag`Na>X%W-KjZmzu#B;8h0&W|Wh|e +bA0XFLN5)gD&W~RjqZ>4CAHDK$-|x{I3L7ZI3Y<<lgpz#%Zi}NKKtHr1>^vA#1B<TW2V-iXDn`*Lw`i +X?YN+~8F{xkXnm$cceHqmV%Pe=oQt4OhYX9=uxzbwB)g{%lo_QJTIyT&k3!4ty5KVM_a>&4^{g@AJ^| +ai{7Ak@OT1cV3QbfXm9I_9TGyloKZ{(n~qxZ-i*|cSthoE-xKeL^o#n*$?(|x>mhTC2=kW9Cd_8V2+5 +40OCEl1-#^y>IcY{obruZ<JX^#L!A-p#RrgEbxNP4B#!387tA^Ux%h*K!J(r@3AoyU&G#^|aUuL6;V* +bxZKE`)uOG%%GVgL}YF$-0HQMqHnt?`$f9w0`_@Q5!rcv4U;9dCHRQ$d(`(P1wZg?T0D@=Vc_8rZY}+ +fg*r7NA5B;#F8v)C9W1X=?t#lYz9(joQr|&i(4a)R=PhjM6|A5%!9^H1@Es)>(`$oEgS-kCz6>_na9@ +llAoaB<b0D+ePPejxEx$#o6iES~`$o4eflK7ZJOd3*9<-$>L#43`5Z)7aIlr+hMhc>}SUj=1Bg;LZ6x +t|CtsJK*C<)yy4O2p^JdMWsgJ~&<1LgOGY%lh1tJU+opJmyvlRSE^LQ8Lc-W!lkIw;to<75Rd2H9`j9 +nq~ELeCwl+H@4m;lC!Oi0EVZBxqe!(`hQGJw6FX)yJdY2ssjPTsl4hr!x_I-JytjW3HyJUJz=Q)ze8x +CgT(<zddig+JyByZ?ZX+WgBYyzDeR<_J5$Yw4P!%Ur1d40#Hi>1QY-O00;o{RI^Z@ZR{sY2mk;P8UO$ +<0001RX>c!JX>N37a&BR4FLGsbZ)|mRX>V>Xa%FRGY<6XAX<{#OWpi(Ac4cxdaCwzkZExhZ5&pivg4l +eB7FC4w>!Iq0I(My+i|^pNXoH0z%hK#FYptXsDcjp1|GhIqQlj2`mj!Hiso`*5o_S^{%X8Z(BMx0%n5 +L=pM%sm{IUZ$w+-wf2Ig3`dN%jnN*(l)zw0xaCOWM46%4uKH8ChvBTjX_9%ObDj{~)XLGt74?&`tFWm +3;J@{+4UF1^N?IEN<yJDsAd(e5|#6tiDOhtzA(f*W&i0{}#F>YdoONs{~#PXz7IB?(15cysC0qe6Lia +mbNMQLO+=XGaUM*lM2pIn}32?-sIg$9?{RS&(6lTw+*f)t!kcS34Lll%l5NdT2jKPNzA3iJozoZ{QCL +V?CKxyuYS&M|8;Y7ee-u0qU4YxFx15hez0FR8+lmR^ll^Y!yCu?f0BiX#Yd^}_a_c=Ud7_BYcY$%p5; +{fKa~!W+Er${v3Ib@i&G!cf1d!VD_U6-mvsrR4!V#X=<5(lyZV6_*Az4@D8`7!R6v_6SOCIj`(#y#hm +o|Hn?Nv7w60(gQga18HZ~ioa&$KJ<(?eDeB`w#<3i1{9f}oIu618ZQHau=O?e3ik)bWpWLd;3^wCfq; +{Kb94HmQbj^F|BR^!7ia?Atac`oSlLix=&<$<in*nUX=eZS?LKY@>PhA|KJy%8<HyVH>2kIJ+(;gOF> +pS_Sg){TO!gci{Zbs<52Mby~?<yYjCHBD#j#hjXYP5RKNf`pygHL<Qes=S0u8$>W1FM%8`4XL|iRDT# +!wDZuUH%+}5Z7%3NLNXRflHA*nJBTnKIxLmQV<%>S?2;ZhyAg7F>PbE849FS)k~*A>9(kyxJ?2J_rvO +N2h!`I<j%7NH?MQf<&UBXFCGkmC)0Je8otz|P@_i7VgmnR%7~+N1@isJuSQkYp`wPjptbD)e3BmDp#5 +5pO(-?9H3jwRKc*+nA+}+EJYgh+3@wy}G82foq-p35%o%rFe(`Fm!_;CH7U*2O)pAnSwSQJRn2z11!P +KLTVh`hc;DjA+q#s&6(dN4XLjy@=c6g!&_qV3gigrG)HH%44=GU%O6w!2M0iLP^}Vbh+#++sfsOJWg2 +Vd~PgOfR8AxhV^+2#2mHlyFm28Vpg9w?6JQ1g@zeEd;Oq$l}nKgo`f_YD)flPWv>qqf=^x(@1{ig +DH$QYhvG>W37g1<&;D{Xy7Y9%pDq(yG5DZZJ$V2R^-XF$F#!?ZC-9jJ|TKL&mDSf^Zcb|Ux^iJHJq!u ++msgVF*v1iBP1$aT22K#vPByuB+8+XPU-nIuLdQdr{w<}Dikl)cebIQ$vqOt*9e{V2`sNy2<SM$PY!E +=QjDw0A;Lo+{4{}o;ZuD?GoDC#r~i6>By%${<ZsXG&cV^Lzl0cShxy?P!V`b-Xv7KP}8RoYc0N1M8b$ +b}<L_E%^Oiaro6ZpEM0m5{FiX5JLWs1m+*Z-_+OEkVFLt1ZnUF9K?gc;Nf(_uV$Zu$*(V?i_url7z2X +Ycjjt;-mTM8rLmu-`+IXUQKbLyq3t`N<MPcU^+VtH6?W|P}^8+lm9ldj`oUew-AU$7UuqbZsCf}<LZ~ +M39mA}M2z@Yz?iZ45|>U|O0?Xr(v>b2j$m~2EoF(L6?qU65VBrN7o_AluR74tq`%<lU(gWGuwli9R2l +X9XH>!(9E#@Ug1yejx`WxFi9S(n4Aae&%cjrQOmNXm^0MTcL^-mXjv9p?8K?Gph6!RuRE?tk=mrWay) +-tA6Ubx2+9c6$-fp*7$Y+?UTvRA*xquJU;wbT2I__x)X3W91WN_z>nSoqFR%Tr`Y8-Z)4Tvzu%5d%B! +8!EsFf?i1Fr^ZO0;7o-zQr}wbjOpB24|O2obqR~IwYfh-0W370$L1WU@fXpLv=c_yy%prAU`*;d*UUp +p0wM}4YL&eU~v(6jc89XSu?t3;oO5~0@CXR>9zzk73U(9ra&VTynsBO%$8zpqaraFmc4=z4O7$qjW<! +C*H2+Hr;dnRZf_;qbEgeQtRFykNb^dYL5V$<=91rjA7Dc-Dfaz1i`0c<rmRgcQ?Qr5B77zDVlVOpm#j +dlBOa-sj+TlZ+kp5po$Ic&=yKI*)JjE(SNY&_D{;yoHO}Il_{(s@xU7*YFsvAzk}pivg#QSxxRa2^2G +2PGNy7=a!<M`3B6Y9<Hf`iLLO$YC61*d;%sq)v{X*Aqa}RMz8=TG-^Mc#H`-ArM&2+^Pdk&g=&R>0e_ +wD`sT*}r=12yKa=>2i_*q?%dxJLo|bsoqtlXt3v%}Aub*zhRGT}Zr0g!>_v6?tuFp5og_S3hE<J>@j3 +7MG#|olH~>mm}Srf$4zeNV?+6Lr23MYapFx(Y5r<2Yjr`WpS{59-KcmNDMPt2?(OItYO5rmYPM`0UIT +YuF8>7mX!@mmCPlAMx<>kN7SAP$oA{lK;PIx{!Vy9v>V^cFw1HGVm(1L8HrPA<`nQDnRf5D9Wqj1=ke +rB8c-o6Ff8BTxPR`s=@Wjl*bM;n$R(t*4Zo^eu)%ss3$eq7Wkvf=2iY)Qcspj>r!zYK1}b$$+;{3ENw +_@+Z;nWsg^>1tMnd8cQo=iJFF9ndhr&1YWV+Rsg2#IpdX6JwY88YX43cfbD?`Wb;lU!Fd!+x5hH&qV1 +<$KkkA2_IZL`#X^-_v6oFDCfA#!0P{J@&Hv~U%Df|@&}Yp<@UwF*iMB$aPWy`VVJDuw|olWaAheVg<x +lFdlx|8a>ZvHKt0@a*v7>4*d{L3~~KKTt~p1QY-O00;o{RI^Y300002000000000V0001RX>c!JX>N3 +7a&BR4FLiWjY;!MPUukY>bYEXCaCrj&P)h>@6aWAK2mtd`vrxHWgs*V|002b=0015U003}la4%nJZgg +dGZeeUMb#!TLb1z|VaAaw6b1rasg;Y&%+b|5h`&SU|Aqke**m@XHEWH%_!nR@<x<e5JhGNsUR#_56sa +Y=j?W1hx6WQjAKlJ$c$VWO&)8wI*1f{7EHcnUq-y%Gtu8hM9gte7)1f8jZLhuI2^azJOI1SH21tbs-l +hSlnc)4a+ZCnp3gL9}oSZRk0YeASLoDxB5&qvZ|;PlMvaO0#u!~_xzGdE6DK`6DI!xN&Fy6Krck|(f& +Xr2gN0kUG><DhcJGKN`2?a={$+>x<NC|jW$tg<BK+LPLu4vL}<Tn!cl$j%z)L9EHB;ISCqlVtpEXbj< +svSR4cK4xr{ASlM?V{ok3X`!;<rJ~Gl`&!1>uaDmzi@T5S?midaf85`Hy8pl_>kFT665y+6J!SYJiDf +1g)?6&Qq7-F|1&f%n7A-oQ4WU;t4sT#e-p%0UE%3cR7!BP?&n~mfW0@lO*0{xcp$KOuNsX>$bBcFHbg +Xmn;KC&hb66XrPL%KzwXir>a)J6x$|2WypY?Ry$2}Eo$zunL1*Da58>v%>)1ytaHj9ZfNij!!9Mv94+ +F|gQ<*=x0I{BSvgSLD!+v7RssPe#Zf#;`@x=%IV!Dq)_#1n4s)qbBUNo634OXIK+u8IRdyfsJd0cA=N +_lh`>5aDg>y``HxZ=`R-n$>o>-CB|JSmu(5_cwp_=KA`!_wkI4{x?2x?w0(r>W?{s{|LwCo$>v{ye=p +&W68s){LQ=QmDI3I*}d!6>3r|x>d@*dUiyvL68FM9MRbn7jN-8L{D<HT-Jnu?_}K12d`4DDKOHS1v@> +`C%SmLItd8AT4)|5_2T)4`1QY-O00;o{RI^YdCj#9%4FCYbA^-p#0001RX>c!JX>N37a&BR4FLiWjY; +!MTZ*6d4bS`jt-C1pO+qe<_u3v#F(-ApC(=WMPQg_^$G;ywObG9c=#!Y=51|mTTXNq6}(6V~H`|aIb0 +DO_`+}+n|GO<Je`-a_TAAr;8^vbqn$?TF_R>-mx+AvxBucEf>a$}dOX7?~4Rc#or3)WQJmP)TCg)~;n +d24Yfold8d$ustGDOjnhO08wRV7XeYP>xxuwkp_MFfCT<UK9*88nqIvQ4+>Msl|n@ZM8^2%xcqYj=>P +aQPf^r+f5^iy+V}c<Q=b!m`qBoRxHchnk-{-)hKNlpBq)RR%GsX0z&R3T0fci8M!J%Zo;oh<-8L8uf+ +lk4?k5m%`Cyss{6Gu-hf6nX?8E_Lh01VhhW9!=c9yK@nADFd^i`}6}skCit<bf!x$*P?EBA`pR+fAJA +Lzy?8B$?^Rx5s!0Pgm$Hx-}ACfwjaM9p)@G4;+K|B24HkC-&r<x*Q^~SCAvt`4JLJMOi;vpA}WoPvKR +BNT(#BN2WZ{YEc7{;EVJ>r<jMXj`;l~0M@v4e5*E23ygn32jR3zJU<kIyb&{~i&wuxq97wnUu!r`sYX +lPrUrgnT<;HzaV{Et@86+8SZ9W|Q-LDe!j=wV^7JS(QPxOcS?cA#B!gyUbcy;4EW{O3t(9Zb3q>&(7a +oTwl=$Ux`vyBnwwT@~kB6Z)W6w;Nj#JEW)G}8VvH;o5IBR^eoD<8U$onOnC%ZIo|$NGuho`vOUAS&Wv +hxE-*B!Cf$AhmEC@A9X5!q4S&W8B@C;TWe_T;UmvS1`>OtPRSRe8Fu*XdJ6SsEv_b$<96z?~qi#iCLM +|Mz15}hDIy<5#;~+j`XLUfxqx5CM<~+YM6*o&Q03^W_@c<BM{A375@4IOm(t$AmFlB&9s=%%DldlC@Q +3*m%P|no4W<l%{V7P(}$Axw&g90OM%dz?sfK~_UYXM%=43iKn0a?`sRR)WKy+JZ*L#dGA9q2og0C{)( +%gAa7Q5^}b<9?GhUuW};6<C)zl&blUBDXj4mZVF>d(G>Gph06f;xv8*REgt3u7v2a1-}<yIm?$^^W0* +i+C#U%NXx8Zb-NN;=8UvHZimuEG>^%Exii2I_6oItUQ)AmI!%9sz7(x^6SdPHet7ul_~GYiid~O`rTx +mdGn-_%&XQ`ez-a4CVD3kq_~{b?^r(QJr$g-KI9s2X1ztX>Vo(adV>Pt&3GV!oo6J@wibLkRvX5f6_Z +K!-s@g>nUqqQP6)vdNzxgqH_szi}{&IN1+8UCv*baYJn_p`j4Tq-HSMab6x4ME-em<(@v#ad#^Tp-q` +PJ3?$w1fWx$_lZ8qpfK2ZUe~72I+l5yIpr2r1hUpvHPb+2C64ZPNAN8xVC%A;JNN{J@g%?>nq{r-8v& +58SM2b)yW53c1Z)N;6kMn8idZVn})ybNB%@mM&6=rlft8Ju1b_@X{fSYHicn)Wz($fihZ=SI6vi&6Ky +8HA~F_l5hav8%;u9ChG>liz0!t5Vd68?FCK&57-KNAYZ^x31+Xku8Efz@=g>fdn-!bR@Pv_PX9V^YwF +GV2w(;zu+Gt%KpJZSfnZch=mc?4z&FG-%kKn6NEpjR36{Aa^QO@Xz&mAU7WJz;h%)G$qnXBR(7;-V0% +)j_H2^9);1lAWS1tAs67*wh93J|u@@4`!L-qmU&_WCgYVjP_@k!Qb0UTO`3Q>D#XJ;jofXS+!S&yl-U +tnw_bhSwkt}$#R2V$&U&v3JV8<C$5(g&7Q5DZZpAi)mvak1NMiV--CIRL=F*3v=`z(@e()&<vvpGdOS +5^@F>1$$k{J^Y8fg~$P!u5o=Xd~I|zch~`3G;zYj7t941rq|K{8x0}bPHw1|QTB#z_)cmAxC^v~yz4A +nhmA;G>cBr7?_%$lck^At411J7#Z*WWDQuoLl&Y<Z1ZvW+l{E7D>do0%g0`)fGG9VqO_u|oKEB&~<?t +%#Iq@2hh;_z<(I^g)j8I{C93u|+22v??*EUf%lp={^Cjijg<Wf%iI1f}#TU+kEnuc(nt2F{L?zYdME? +M_bImE8y63z+ZjN^5PnqP%!G2{p7F4Vi3MMlC;NJr|P^)3tn{gVT#w=`w@Ku{9+V9*h6`vIp2Mo!plh +#j+T#>y-**P?OGPe1o;3jjfI?ID0n!V{=re>5}S)FTw#69LDlQ;%U$FF9djkA9>3i7%#;CwgxjcI|sa +G^%A!-5QPO<G!YWWp4UimqdR0(d~ra-aMvCNO~IPb3mz{P9=n^AgLa1Kg!?>F6#j=Mev973OF<~y{5U +yIkg1~PpPUZd55S&LHDbn3Z#ZT!{~!HmxTr5AuDB#4@b3a?qo9}xK=dK0bRCI^-<e$_3I%I@@B1ZzY7 +c$UNL|GIMDm1O{CZ<gyio425&72)nZ7XWVuBgGOl!>DN+;(SfG1ASFEJn1b#i!9h(+(;{ntebOTcGo{ +$4-2-s4yF=>{$*ueo3(-SSBQ$pgUV6*Yhm&kdCA>rXnm9ldo5l(SG;ja;dNL`#<<5YRx5}wwWx)pLH+ +`NRk3a%D2EDzA5S2zt$JNaE7D|~`5*9Zj%5!!Z?0FR@#_U9K-#6;p+5Z`(0TZY?^Y=BTcv{CpA@qklp +9}zg?62(eJMZf!*2AN^OBp~XR&K^C61F$_OqoPgS<7lLIOVrpVU(Jv3<uKz(co<s}fMQFV_b7DHfdo% +d$JYwfh_{)kJE3f|&ks%{N198(v_%jTOexdOft2J}#ep{Z<wLWcCd#v`Z2_~`8$P`Gi15p{*&vmS2G| +=Z^@igTNLyI#DbU*h^6u6VifmQM`p)!wzqGb7$NT#WD4BMi=4!RyY#P1~*}UJhRki=8=P#at7kO*&z? +<n8&ktT696WdOFL7TBf}x(8Vr{5ZgV(0O77-`>m1&NBsb;Uw{@HcXzZ08D9ANm;1WH>&wN!wQ3&r@lq +n5{-14A<G;>z_!b`6M3PCLHjy(6x`5hUnJl@~iK4Nh!SV+u-ac9ET5yt{b+{^EKz;Akb*fifwu&ziO( +!Cx2Ihqo8!??1Eux?f>spU`+6h1=&=m%s&WR2DIu<MC-<awg4zZVMc9-5*b&xYIs5J~D&j{`Kn*bh*i +_1ik}_NRY(t+o~3tJK%NjHK4+Pmu$VSSTJ-*B``0*4s<S+1|v7jxn8lV0D<~zZqV#(^UaBn_)Bp1%V_ +a98Waptu^o>7{N1ai%?^7_MF{6IY%bJsM&W0CuI|NX{b=<VyeJuf0S$BJ&+J-O6@?_+bAZ*TG?YxZ;n +<ahAM$E65)aWJ#KG6OcxYgYky3uO%Hi)Qb5Cg*`-Sr37h<Fcbyl~zZ!I+Ktj?<zpa##GO5bsftet!b# +XfHru<x{qsnUym33Ndme)IC%S0jDSOyPHr@?_icP*F5UcU1<rCz}1TKa0uEAY?SUzdx+Cfu8X7=J5D- +7{Ks+g0E2;Xe@A)?oO5Ng4kim3Qn_>k#r8LDn~JZ=x_(YSRdi+tguu-9^C*!j)Mg=zf2UflsQ}j4GOG +~IU!OW-qjSs-8Lha0ww^Aq6Sg;+9$>H4XKTq&C$!_FVM<CMJeg-nE>8I@y*PcJ-hvqpii5lZ;!_l-Pi +1%YZJ}hpZ)di>D9*>-m0MwC35!gwh0dAT6$0U2Hy}NQzq-dKmcFJk9$EkpTK8|J=aGkgNt<t{ZCVu5q +O!tHVfdQC4S|40d;4@^k<6w8mOpR8*)E)_o=x;Y+$)t?#QcFwfi~o*Y$YGh!iiFJWPiv2%W~^Sm{5b* +?7F0<&~U~bV$Z<=9|^fJwy8puLC0d?=YdNJ9?zJ5*8|~yPboSztrkp7DOs}MX#YSXs-MF><<dCi(R`w +?7Q>$(WBiZb&X>d*3EV=0k%btZSPyd;BL<@4+j;A{1vHaP?z$#!M{$>;KCRm9{tvZNAb?ZuUCBH1i9< +};HrB82%he|g$XVPdNUe~;^DiG;k7BfnY#g+gZB#dw!bBw_AJto9)vlIvsv_zuuY67It`@1w&8+qEer +7KAr6N)wiI%)w9%$_kqCZwdG5{)ESTzZK7G^(9~`p4har8$&v@r`P`|7Huc1M|q{?lTeFq?L^)KW)<0 +e14DCrcsOX)JNZS~Y3=~w2dVb>COMss`(=*H5v#x6oHupaN|v*mL3_*siAOUW~EDGA1;AI~n{I8UJv4 +v(IH^Wxi=uV(R%jPVnH?Q=?h08e)V;!}*?*^Qhn$s+*PgM=N#zkQ*9p7(f5ks0mP0bRL`9v$vJIvV7O +Bb2#5-ZpXs<bOC}2=~vArn~k&nhq54AsI*NOd&6#ctpx~BmKB*fpTwub~yR)^XuD$AA0ffD-j`s&<j! +DW1mF0!2W)IdNoVf(F^C)Xz<O&`%mAW<M6A4U0?<jh;n^%cpE3-`@wBI`5#bA0|XQR000O8^Hj4?B-I +<Hg$4isbQJ&qDF6TfaA|NaUukZ1WpZv|Y%g_mX>4;ZV{dJ6VRUI?X>4h9d0%v4XLBxad9_$=Z`(Ey{_ +bCKQ$9#W9VJfMv^C%kTTyhux-{sz0flF%j6~aPBvBA4J4TTIz9T8>&2nDa%^z%uIv$^U?&0xd$8p}%l +;%WIAZY{}o?pX;$rW6_yM*T_FW@atG9uX(i<#WQXR;Ljz;T?xV3G3#f?!d|BBwzBEXjB-fm{h57m^0% +elRG<W4>InbZKvMT6)M><_Bw<Mm+a35?&K!<x5=0dh`Z>A6$8)FTxT~Oao<A4rW`q;%Q@KslsAmV}zx +W=2=ehJ4i`FcSqMW7mTOoK|;bHi-}zDJV6h`CSE-$C9z*f77Jf)GX!n%{_*AVOYru$cW-|WKK*rZaen +b0Nm%p@PxLz4Yum#ICgcb{W)i`Wcm$t|EJnU6>xVhJ)O7r9;u#DS`80>A&4RzA@`E1p0?kDbV0-}=Hv +!4RRe%JeaZY_jHjAm3yPp4S7<m6g^*0W<IBO8m1(eJoF$*3@9;7_t(rb<mO|%CpR5}4q$23DCN8tPZd +<chcK*+o_`k2OBC<KKf1Ia<IC@femB*+biv`DVdv#)J2b48wl>-yg~OTC0-9=aK|5X~kh^Pz<rv=Zy7 +c)QrpfySfqFvFX9DF_*^kd_urz8*DRjGh+8(703|tu-9{#t~M+QuRYZS&&$JL63TZzsz}&32#_UR6xr +x(8xosJndyT0)4Gq4Qq4dj0&`zRYNAKKUo@5*icxJHE#2GL$(6AVi+fc*EB+YG2x12%L}H0<Wh7T>B8 +V3EM&kL0UE*;%5OvRNF0W(LV>H%8<}IA%5TSyi5_s*E!YkI@HLAN#no10z_jNWAcO?-j|1DvqT@#Jgv +yoLH!-`W7Fbva$&<kG;annxTezaI<UCS3%4x#aT{P%I01;5&ehQ0(;@*w`LyIT^3{_=hQsL1e)YZ;!d +2ny<g4;XSSG*DFnRKgU%wn2)u0a*J!^wQuny2W~0zltwO*RtWl1e?_D3Zp4);c>d-Y^NOI6=gs)Rm=b +y`O*T6N<W;H@A^_WOqtQWkS+z%+liKyS7c=YG(K7^c$)IK{I<*ER-sy`VPxmE}5!>o{JRP9oCo+(<!( +W!jt3ibGJ!J^<;e1G&+XOiXwfG7b$K9NVt&D@&aNjBuzxamzKX$0lf*SF3!Lg))A@&3$hX;4yR#}3o3 +klioSULT5Tsu#S?Ie6))mQX*cAlK=J1d`5$zknmNs|S5jtTa&)xWY<zPx`aEAAMRa|X(M+hX!(#+?bg +*XwAF5yvThI>8GSw<J4`sqo#kVdydv)fHz`c2O7MwkI?<Ot98!7lCQ&f4atR1`XtWrXCsXY%L<zxJi0 +~$XdoZ~&hc}Ob9Rw|W18g8B_m6zlDq;j7)pif3mm&D8QV<j=}>fyUH(_4G6L$USed#lcmRv6zLf+}oV +#@*p$w~Y366#bIJJu>SQt5H{k^S%`xs>D6V!K16ZV!CXf%R|RDZu_Wicb6q&>aer(;0=sxB;~5AXDJP +4$Mdp@u>)g!I<|u-r+VGF!ycJ5I(ZM<;FzkToT$uBFL+9;mQdeyL$l4cR#4r0>)TduijlUR19lI}V-3 +3Ve7f`I;Z-uT?cI)#y6@|GLGfDq#<{(_y>o2)(O$d?+7hPt5=Ew75@=-JteUipYD!uZXhW;Hhb<L|hp +osJ(?<Jjx;eu4gnFmr`=IfHFQcDISz{lFwHXU-6(Q)CBGqY8f^CpxRb(_|3x>~`(eKytiTLW9_pAw)1 +(Mha6ZDOcRLQRTGF(P?gsNM1PEQ@xGCHRx&Zx>E4yf>a_>6XT=?#lxRk?`}*lX&pv_uQM$l;e?&;2F< +%lV|lye%6L)mT@}`j!{4A*qBliCNty*w{xklJf<av=pYd#uvg6J8^S>RSsJSR4)5g@2LETF*J0peYZf +MRQfRB@PE57I`plo^lz;sETr>VjI{>M)@apFwB4iYR^^=cRDqPsP9@lJeP6*IbpO+^_Iqk%vp$qtQtU +@x9kCU1m4IH<rK1`CT8iw6^%Vb=#QUjfxa@Bj?3E=(1m!<P`h^+^Q0mw%&qLK5I$`EiCBK?juU<*R$2 +VQo^0fNY=08&HC%Z|Vwr@u}=8Da!`r3U|#X4>LS=BVC+vmOm_WmH6f1>RM(co>`xc-0P?+4uZW3Y|)3 +4}i?tb1`Aq^0J{Q@X-E_!m%10|XQR000O8^Hj4?iCrY;HU$6x_6z_3A^-pYaA|NaUukZ1WpZv|Y%g_m +X>4;ZWMy!2Wn*D<X>V>WaCx0pU2oeq6n)pPxKJNvV~zssF_;SkY1#&B(;~~z6-6M>5^Zy(MUABF8b$y +6&L#EP+CVWQh%HjQ_wd|vKhiW!u4!k=MoaQr;YsakEqAi=j=V8iRU3Shti%d$Na2oj5VpdyBe61#r&8 +8d7Q!o2xhzRxFnLCgTS;r9wK=eX!tB^0xvgn*Nh?WK?#y161c%P-B-KV?Usb?>gN<*j%wT4BtdCbzDk +s>~MN|1>Ez65iuHEvb&`u`F+L|5Zc|4QnjNe!fY|iM$%RD|ONxQDiW&=pwV|SO<POa)J-^;2rHmgPPS +@65rURsCSb*5`!d&fA?E$4ar9zY03MPn`Q+%1mm<EGM9LT8Ov+GV&BbJSXS`|<t9{O0xT%^&&0U-$QS +_pbnbePa14A$)?>sfFw6xS)46$3y5ONnYH(f4IH5e!P2kpTGU{RgR~ZcYo88($UTpA#6#Zg>&>?)h~v +aeuxas+V6SvTjNC>$c<H?Na!4)J+x%P^u4Jh(KALSuNYCnqWI7W=l6@}^d<&^?!d;z23HB<N@Gj2ope +rY<br@jZj8mv)=EQ+JFG#QvNCaH$sXfU_}Rh)bG%E+QDuC96*t<=)A&!m&7YI6&nB<%=ciG}r^Up;JU +mGabjrDA6=E_QES-$be835sB{fcxAXm#mA#;wzuFIf(Y3Z<4#g-0AYubvc1U-0%%$jp=WM-7t-HjY_+ +6EE#@3l6UU1DV$>EDF4SvpnwxK5<=?+j$$MZ9CdjUw<9?Ei1(=MX5XPgTx?jl8v<M|886-%il8IYGg! +k9PSsmPgZA8U?2pe0ZxXHJJ+~7AQQE1h1meK0OoJ1&O*wL0UfA2CM{28*NrXpXMX!bbnUbQ(2$O-~sK +(c6aF1CeBQ81U|c<%W`JXJWRDf>94gYLW^0@24EnOMbP>rb$hOzw?jSqgr}$Tj}Y6_G&bl*ucfXbQFO +5$4aqOcc}Bf%sv;g%{+LDfBGQ4QNBPA!AUv*f7dupJj(Zg{&9;s3usvc43{Pw#$6Rk|C1o|@Bx~LEg# +75!H4vZ+YC7*1T~z3hW?t=w9G>F9sUz~D;-k@VOa90y40p{A^?;jOX^{0NZq>GOWP9JsRW+1_2caAeN +^6aEEJxV-rEiM86PVqARnOr;Eh1DG`7dAFo8A;VkA{Or2DEqlNL902;kb#TgSY6~(He*e5JA*laz_?? +^L3*s(9NZ+H^pr7yo1_MmAH`R=<wW8G%f%|out~Dy()1~%5nuaty-@2K^$G^h$poj&IafV;<G#+jK$z +%H%*+fxTK=UTd*4J0XW~J;G*o5Z(|kas+boyD4^ap1%ghM!cE$$m$myGM-YoYiB*g84;MS(`AR@=kjP +&iwme^$0~m^2*h8Rr92*K7g)A(i0svRp-W{r)k1icHWK|&EOZwDv+9&*(0pwRozkW;SLk*tw#eh2pef +<`DRFoGIp$_8>)Agesvx%We7}9G@mxv-4=+OrA^Yz>GT!_+wradM7Xqu2WK^r4YSh*3l3<EObLEO^m! +L9eTySlvGD8Fr18K&UN`dEug-0m{Ca+i!?XhJQPr|`d{8G{<7**_SN2V7pFg+QZOjO=VL^gJ+wAB%pM +=jkCfh%I)<!%Z+Z?_?EHHsnba^OjFQB&c63lwoMkx)#$3d}J~v3J=J$?*`yGJzusv?YYs=VuSC~gJ(Y +xOuH!m_;Eg5o@t`!>cwX*_fju^n<xJPP)h>@6aWAK2mtd`vruF(VK$!y000LO001cf003}la4%nJZgg +dGZeeUMb#!TLb1!6Ra%E$5Uv+Y9Uub1)aAk6HE^v9RSZ#0HHW2=<UqLwNCZV1%4E+>9LxUvUvZZN}CI +O0~U}=fA*~p|uQg&a^|Gqm)q$t@*QEUd<O4Qx)?zy{%$BIp(v?aA#t%O`9$x^EgX+)D#AuZRE)%iwMy +f%3yG%qb}bxlO4lqLjzXBXG!r#JNW`jWmpzd1QOxjCU%Coj+E?(2yz*J8^r<WhADXU@#6t|zZ|tQHls +LdkQjl@4DA&AZZcFWDh4TPwgx`?-NIyn`>_zJ5zj|2#kan_k~uU0q!LaY%Dp8m|D4Nn-WqW4ED`{b-c +*pZ|LE>gtS_fQR!j;h#$0SaRXMx}{F>h`fILn|qpQkb*#*ZT|vt;4eQWVkMR4Ng|d9T#kGhNB62hv{; +=C0tXXU3wiH#F5!79zvZ%0I&bb*RCA+RUGf0PnJ`w1MT<Kn304WmAo_C2SKMB@wUkoHHk{HdNs@{$$x +tnn8QSpX*|T41zo_|=Yc5Nk4pMW1`kBYC!zCSxg@7L!`Q>-~*U8Lgvr{Fv9GqlB6%ni86~ZE#|I@<ih +D(b&=q;!?)nV6s+f^M;Gu##M7t$@wiCqgo!SvP^?aHafRtx7cc}iyFIhpmKvK4+a@bTSyw}dv0kjAoc +z`4L$_C?(XKHcJJL1tgSJ^lLa`PXl=e5v$?*)&K_VnKsg%=38BK|2*H)n+3s6;&{mxhGzK$J?lzANF{ +>dyo>#JwMjWtdB?G1ORi^G*FjQ7o3WB*6=}@8H1(pnDafEWI^Z1rPi!fTUSJKs3i!6mFq6|je<rZfH~ +onuxwFtKo-oGd}3g!Isd|;a!dmo8qnrJg)~}ygjML6(vce$D6CcO$PB9N7wj}Rsq7wvexn~q#yAnCU3 +72C)84^6%woA>237xnjm+;6OgvoLM`&mE(=7i8Sf@cD>s!sXTE;s2)Pf{Nk>67M3)17*3wfrvQj*UJE +>mHE6X|Zvc}+{mFE3s&D4r?VTsjk;Ro_7l-p|QGsoL>Qpco$?n$E#AbleajywC+J?*THP0C+=+^eYsK +i5l2{!=1l*_nb}h92p6pTpuGA+*n=#g>IqLm7Eg_`-~|eQg^!}P#{kkc)(h_?)Jvjov={+mU`r~2_JO +uynq(CJALB<h8Eay=oMaJAuk1l2?hw5CakJRAeKCC`@=~XH~ta1ScW!mF@`<Cs)mE9QL-`}zdQYEqVG +)4iLhkDnKTn)9x$?F!0B?LD>j?9>(?#<f;2NH3T)_|FdVJ!I+{@UamyzL7M#o8t(;sym#>+HchCg5Dk +XpJw7~bFM5q2kGMv*GHyA4K0oi;c)Yr#;8H}Vt5}-035gqgAC<hKohZKe@`p6<|A*cf&teL9{?|V05U +^K9}Xa%5$b<*oT3dLFg3xi<Er03O9y`htRrs7(QFnYjtjLo!9JVNQ9n?=;+*eI~TxaFXkiq?;`{)hZr +^ym9n9DlHT5qp5M#C%UG_*;aheWCp%7YCSPq?V0eN95j7Q?wHJVLsspH!pY|<ey+xgi{M~OGnee_mF# +#j}GA3AL8l%6+qkr*z`~rcyf%^+-QqaFWL<YF~fz$aYOY6VT3E9`7H>~2a7*aXg>m1G_bjS3%A*S#?B +wa#!~E@;Y3bxZGVa%E)ni54QFhK^1YwwUo9*H!ih(EM<XzXNB5IFHko%9nrjD~ap}XHAV*Y@7-j?bjC +_a&7rfkk08X<EE&;5I5KcSL-j~AbKzBLFy|aE4=ms-mF_qL?OCP!z@ApQiI2+Gk(@MzQw1dt#lpSY%f +3v>OyPN7zOpo8Y@i)1;4j*o%z}5I7?5YB&mqZQFT^92l(-K%=T*kBR0^Bfd@Iw2<xH<cYIfg&8adkfa +-wXcd0O@CKx=*Ei+W1rO{{>J>0|XQR000O8^Hj4?gzWMdJ^}y$Mg;%>B>(^baA|NaUukZ1WpZv|Y%g_ +mX>4;ZWNCABb#!TLb6;U{XLBxad4*I_Yui8!e)q2s&chOLy@!p#3K^8P>&CWF#>OZin2RmPw>fu*PHy +9k{rBnYxJkN@-oyDU>61Tw(zztNhC+L8Sl2#9B1<0h+F4?_8tfOex(=SGJPa?D$=hs&Y#k4v_rZ44nW +8@4X_sc&Fp^Pq+9SDj+N=i5m%H1$?DE6)<)`fH_u1^@>?VqIdBl7kfvhg;VTLQ6a{`}*SrkQ?d|O-NV +G8pOFphD9`I#du^=29;FtY{|h~r7J^;dR{M;+RDR&{;0RQ_~8p;(;^s8AJ1{$xz8mnZ$MR{U&CL-<^b +&q+Hz&gFzkWGx?cG#=^DzK}kQLX*%}SU_RXn->fYX{{N)HLk|FXBseaT*!_HuI0*_mjiP2>h+tqX_P$ +<-7s#`{Ye`SEuR4NUp)uCGL}$i6j*{&<Z&;FqLm+qZPJg_02+r83d9x@ID6NPRZlaRy2v<=Z$mP0Wbb +t$wMm+0jfQ;!gxrt`bEyp2<xk8RxKa$2@^Zi~!&-4(?c>s@vtO7N8uQE82eb3Z3Ad#b=|G@+68feNI{ +f+D-wI0s2D(H0zOJyC+TBZ7S<-V5?0>qZ{iD-nI+uMhdBox-M|b46aF~4rKT!G|x}68|YH1r5JzB7$0 +Kv9X2|QF<IEV>_P76zXk|viZ5m*WrSqO8xGWxf?cx`e7+YG6o7DAvs7|Tym;HFZIXMK<9fyXKDcV*Qc +4@>B!O&ced8poYhX(m$ToMn@(_@U9;z~~=PO9KQH000080P|F{P|Gn`c5VUy04N0j03QGV0B~t=FJEb +HbY*gGVQepTbZKmJFJ*3HZ)9n1XD)DgjZ{%@n=lZ5_pdlL55Sh7Hj%0-Qufd+-KM2!)U^*4MaaO>STz +{gW?BCI&XCY{N~HM(@O{4T?z_(n;9-MMC@IxeR4<UJvc$@Q*{DY5kRoU-)o;v!)21pBY9%NxDzNTgV; +hYj8$h|McT+G{i_DHxZH211oZWC~kTFr#N?S^vV`dItQe|A?;Y;^#W@i{Hv?`$%b(jzvYRVNhR!9@tU +G3`JV{f0<Ps#lIV*WF^e_XA8tiBOhab$bSfL5FJV}_+Lb_fqmEs-Ah$1-+(cl!%w5Vc4AuIP|9lgEdf +t08!eEk;*fFgzB&xZDFSE>9wo>qQS5rFa^*e20^#aFg*KG#Q^nyfIG3rx^*ie2428V}OB^45zJBQL9v +x?kt*4uQ+CGv6|m~C6$x=1qnxnARE;}qMvGyI7sejI*XspCqEiJZ^QU=;027a91Gx$RS8u=mH0WgJm@ +BM;PhLj07hTB;kek@+1Y%9*(-2pqpj;`qJ`45Ma_U!<Tb4^vvLPHT6$^iid9z)Yx9sfWy&cJ!8<dCFK +BCx1=8940QOrG2Oz~Of~v9d15g#LcXp$y2^G^>i^x+|4toxFMVynme%vBsx(-8Qxwd92?8c`P!5hFWj +dY``78pt5Y7ud`SLl#D*o(A8YanaIXs@HthC1C+KcXUGxN%ji7whrmq_5J2+;&$>Ers<{@451VXgZER +RO^t@`Sc=&*$h%|-~q34csK0OAlKQ(cff!8=w+ClJP^KU)zrohqVv8%kDE*gFF2*iaUqTX`UL+mSrUb +QIu1gP<c+jFV1H2p_7_k~0|XQR000O8^Hj4?{C0m_YXSfOfCK;lA^-pYaA|NaUukZ1WpZv|Y%g_mX>4 +;ZWo~qGd2nxOZgg`laCvQ1+iKfD5PjEI4DLf>aO9^vB+x<{N>kdpCZv>*2D6q%*3i}NGP9DazwhkIZk +-Z?FRW+IoXf1J3!Wp$C`Hk*?;ubpH{>F+Gq$WOm7O66G}WcwuhsRDtdwyK<aWo}uaE1;&F$TX+s~W(@ +2l0P)yJZs=9S~?0`!$pUm|=9k-Wk$;0sACilW8_HhVT9AfFrF$=j88IG+ICq;9;1^JCjn>UxsM&(CwX +cn8Wh7tUt0TXd0)g##8ep21iP-qw)*8iUtrDT~~2r#POe(uy$&ht`O`YY-eT!JM>!awLa!3GcBoy&(7 +oNTf%}ScXZG#4LAx^KiFF=9j_5b^%>)BL$1F9%JjBEFiW>4B2N>C0TlATn(L<NsOXvO{a8*1Zy%sauS +s+)(cPuEFgW;sLVungh(AK$O&uMVVvl7eo*d{><6Db!GTOf9YO*@<DcdS_5;-l107baaU@+fac|fq9@ +AK@%t$pcDtkT8T%%9p)p_=TGkUP5!VJ)&4GY*KIKMx5IVICfa(n(iB+xJpIZB4m8Bq1iS_8Ts<uUa9o +y?Y4BXhZDig=z+bH$IF`@D{mg#ug5yXXf03v1YpiFBGR6;p`EnI$|VYxblhXaB$&Lsom$pr(&KBdGPF +`K7?p-TCQGiq{s6Zi*m68)J~`<#I={?YCv+yJZ-IS!&O6TBGIV<<-@+vGqV|n}VJWrr!snp?9j&j#)) +&eK|D6J9w%O(X!uK&1UpHR4R0meON?Q7h5>H$k+ZXuNUh2tCSNw?p=;Pxi<xF$G;Qj`IAwtaQP{cukX +D015ir?1QY-O00;o{RI^ZEoXcz12><|{8UO$x0001RX>c!JX>N37a&BR4FLiWjY;!MWX>4V4d2@7SZ7 +y(momp*j+qe<_u3v#VA4K_NMs}L>H8biY=W}|V+}R%6nIx0R@E{VD5K{yTfR=e}|9f{A;F~BpY4yP&L +13}ieRlU*M6L^^EfZSjY9!rDny<NySM{qh?NeBA+kDVGPt>}8Gpo|dta-ECHqVtArCP07ta2+JZ6+7Y +fAS-1p7W*9Zk846B9)n_=Uno&NbUr_a9zEHFQd^jc6oJo{)%Z~btUs9lZNHWGM>X<Zbiam&TLf(vw~- +Cn9AA7?D+I(c6xMtI%S)cj90J-1i9a4Rk00hxy+Ro%&r8j#$|Q|vYjfSQ?QUl7(EC$ybfChyiM?(v1h +dWm6tbMX5?eN;`-Ccs53!=L3GZu5Upv#Sgpb2_1vYf5qcmhWwL+GTAH|Cktz+&jEwwK>|X%7c8>7-r| +VDA*{|nk@1mRcmzNip|Cq9v8#@}wbjQb6Beb9MTu;uMyqdC~We!fexSFyH*pgeNr|dUr?3BIFrOHRNI +L^2+JN$ejOqtoBmN9W#;qP^!RUx#knvq1L3{evpk)@rP_^Z7UOxV%i8<l!f3eaFQ8ljYUCE|N$X0^$M +4)D=SY$O@0N!UWE%zwE^5kZN{$Cj=5gJ7I(c*U%85(!iyO+{=ad;||Nl{$36VPav-6sP1~+D44CjD0N +)fZCXHji3Y|zz(1k$x5UKSxQ$SEdl31poK-oEjpde=j>o3^A{%vOlb;^6*t^k9Vpo80H7p5hl7r(0K2 +8m*_|$h^9yV&+OQ9$;S1xe;l3AIJV;d<HfNVA7b6!)7`ix#{bk<FXg2{hYk8S?1SFWQeOr&6k<DN>i2 +@^Sw6uHyvKJMLORYt2Sqb`uy@gJ^KOFcQtT5|~cH(af5lfzdP4Xl|(1OjFR?5l5?4fi558yqTBA7#5R +_zc5(IG&=m4MWN%MJczrc4yuNV`&{Wk<iVG~>%~uo}|EP(O!A7w2HyZrFSKZ_gHwu_!FNx;@ug>D>~& +f8X-Vh`|K^vE3C6*PA3@)ljZq1~%t0VwlvM;`@i_>RqenaCHrhsq^rhH7f}mfbJX;Lg%<$_0j4+ESi| +B<AO?*4`o$UCs8UNMG_btPa#VfyCamRtd8df#|H-oA2cs~Sqn)L;AsKAT*I(HGaK3f(PLD6FDxY>1DG +KR9%7it$SGKc#3Kwsc?w+s-3rJOnE{MhTbNhRpD)TKoWBCh<e}2b=Mv5+UYwrJW?`+>Xn>lYitRB+9b +5z+7?6gq=%EvDi2M{0|G8QFrSGbp7?mb+r;eyt&)b0@?c?)X*n9@1!Wk4(6c|Jco>WZ56y`|?pA|S(* +K;t;T)p2RiesQcnpguDNDv$`&+D=-?J)i*@%OadiF3#+{R8g_F)lIkokO+(5bRunzk@&imHy`sJQVj( +ItX3m4h|196$3_s$;4;fW*-mo*6!a`sC*b9K?`rAi`(0)vv*Ju!VE{8h|t(*tr7tnj$Ut3G~AIVUwI7 +qH?r%3jNzmH@bG@a_0sH&u){+j1f)vM1U~Pp_+M(Q-#A@41=dj}@1goFzCr}CLIH=t$b$sU8R$V%SPq +)v5Ty`jt~*Exj!r_j0<w@C8UfG}Sw$FuagiH%PjKZzP^GaV$G1e9dshlmi`4*Rd3%5zIn;Hah8EY?5$ +y~BX&;LBLJ+!~+?v&f!$T8A0IAx02zMdofGo70=+02fg;JDb7V&m+l^06Q4ieR(E)f~j#W^L=X*(+Qd +}q>ar$DNP9NNrUK)KsB&6Ful8;9VIaXVb2f(9m-1=B9)K!-#2K!zEN_aS0DWu2rl$VZhFS>k22c@218 +mTk>+b3*b&nw4f1^m7%QF*Q{l2fc~#CszRm;3(1pC{`>Y$Molp@dLzF5v}=S1V-l7{CGB-L6^a$b=7B +n@^UsI0u6NEY4o};Y2-YVGCw+~SHp-J)U2JhffH%xuC3C5zo$|&EnKSy5%kyW6*_8Dr#}Rkr+><T7Sa +G36V3xGqng@9fIkY!XfPZBm1SIG_!SZ&iu#SWnY2?7LdeHx;U!c~J%%*8)IzM0B4U2P3hVTNNo!W-$n +2mIf{B@gL}o-td2O)k_hnQFz=o~zmX>!(tIrPakteoXX@dRb_0{dgN1*;%3ZI~ejuMlA&mSZ-j2qJrb +!s+xJpgbZVUPt8r=BAC6PK<s1)D;`<iwb%iNLvGhpl6C(31SEbK}o1o<G6P@JDRj&2)6G52ytk?w-gu +P-2MJTs(jufZS3^pAxr{IcP4eV3|^dA&)P3(ow`yMcidn_dTE$YJ<Cu3kALPc+k}BC8*t+xEpqL$3qZ +#YRb1;#72w8T^ptEJ8phOOmH6&Jb8KYlb6(zn=!R4O?~->gp=dhDT%0)I9PM+bfS~F8nG6Tw#*7#0VU +r=F?69^C(+oI!mL>Fg|M`85rb8hEBW<4Tj#3yr#7~H*gRH$&W=xB{PpFJr$7D8twNS5k!5NQLWAR32V +P!}Mx`IvcpQF(3Lm&DrZ8S9h|{3nc|y{nR@#q~Nhj?S8?BK_Vw}%W_7g=UP24i9tpQ3Qlw3tOzkIl1| +8~!3H|KBe>X-A6XTME4x%rxm%}yHUnzEpq5MqGT>-t6joOdns8eAe(PGjMoluS*-c5m#az|w8W+pVw& +>0%E9gC4^3^N$y|cSG)q^h4&Q*t^k|y5HXD`uyg1ym%OXd2@Dle!Hs+xWl`Um{J2!oP~%v0UMJ8ru0s +-YZAUexS(H$#Qquk8S{ySr7O8y0of~aWRO|4QzUTg44E3_$LS7PP(j>{jPE*0Zb!vB@nHq?cad%G-xj +yG5qGq{LBgOD0oYMK57J~%kMVT*Jps4>ZE&sQEp5747!2+Rt;@Bpk2%jDq*giB(X9q%{64Q+S;S5v2_ +%?7>bsQYx~4I)%L8>H#R5gWL!FV~FJ4MM*`4Ff;b(Z+Y7o$q8GOPEHNG$^E3LZ*FgW5$=>iBd77w?X# +s<L12SCHLCC|k308GZ;57RX`dH4P0#m6IKs|=ev0Wer*YEi2k)@8XNv!B1TC+O>3Uo%b7E@tYLlT@HK +JiFhnyrhD_8#aF{k7N`!B|n?iYFmUlgboFolAxCb-M;Ch?fAX)-u;Sa(Y2SL$l>MjlNFAxaz8^u2GTR +deg8%zh2jL7+G>sHoYtGnnmfyucMyEHj$cpjDp;=o;?QbV>+7z&zfW!Ww=1`ERUT{!sKqx}{(o(P%fO +ejaJGep==<P6p7SWhX*7SUjG^kDC+%{-U)|3Uq}LDgj=vi*J#f(fBlJxDKbYhRd+(Am8T}VfO9KQH00 +0080P|F{Q0JO?9RL9U06PKz03ZMW0B~t=FJEbHbY*gGVQepTbZKmJFJ@_MWpsIPWpgfYd3}(<PJ=)Yh +VSzfll6cN%^rGe;-QjNh`KfuYl|_2CV-nPu-R^-^7O7yH6URwGnxGJ&o@H|xe+ompDII9<+UzTBkGC* +Ap~+=m#BoIiKtAbt5njH5%Nf_TvP>$Qq|hv!+yO_JfC@YN%+Khz;6LWKGI$S+Gt(-4$(=;4B**k>^@< +;i1AJE$ngpt`u-*zxQ-Wp?TzhUI@F|^9-4(Sw<2?BoEhT9w{5oU>|TyW&yiC43cGl8`lIQFf3mc>CG1 +6~m1j*`mg&^CI9UH%*9c|j2lq{QM5}NVxj17Kzc^DQtI+d<EgLwsCk`N89K6`Y0fLLYFTxDI08mQ<1Q +Y-O00;o{RI^Z{f11j21poly3;+Ne0001RX>c!JX>N37a&BR4FLiWjY;!MXY-wU+E^v9RS8Z?GHW2>qU +vW?dSORSNB`eZq$bdD?x?rALByEAB7z9e9Y$BAXl2kH%*>B(RMULF4T?Z^55{WuKygNS6-Q@({?HQC( +2>HP49ptjASZzS>Wh)BE7${cBdsYC&MOiUuB**W(24gq2rd5ngPN3?V?i{pHJU4UM7%ponE`Fs#v&p1 +XvVt`A)@cg7YNRqiGc84HSnA&=ldvvz|D-z|b~n5sDW1#};*!>Ip^51l>vORE<Kx?p>E&-%m%pbs@3- +6Q?P~-qN0!egfIklP7~xHDdj{{?Mxfu5f|alnJj>I2rZj#`ZG`nMPCUqoMPTO;Couo{u>TVp{pr3(Hw +;6rwFiL!0v==rQo&Z%4A9M58fdk3#+j1H?N@I5s0(Q>>k=RFXoMNJu+Hf?`9>g*DBl^-Tg5A?I-4@VE +LEsA0XYsILXw(<b3$AvgC*b^KDXR3ppbC`CDnM#NH1E0kAS?|YzSPNsRrbe1i`ch!S9&pdZ(qOYNq5J +t8F?euI<4D*^TIU2sLci*^^q0Tn_BjhSmjD1!83ig9>1cpr(|nf=U*xV0~it#x(kTvDk65Z!`41S~Q* +6%X*QAznPHPqRh)xv0R>J<&WiZwOr;eisg&-sw_{7vn5-t)@M0gWoN6!hG&cZDAIH%o7LH~`DXR})SZ +WvK=PA=FBcaOp+ZmBk@si74oe}oW>ok1ahT#by1Y$aZ{Mez>z9}5hpU_0>o?md2>_VYz(|)=h&)->WO +X(;ES(+bd-3nkL^pyPq@LZ%{>oWnApXVRDH#g>N-3#k@a8r=e4wKBi^*34a3mi&$?1mPQ!Z#G7{q9WE +TRS6TgZeE^3`mG_Yl-KH4=36of5&KCo-Df{WpySsz;NjR~gEaw-{#h+I?_|8)rpuIAC9*j$*r>Kwn8k +2RZ)MPzc$uI^MqDY?2wEE`Vw$68|9pRkUvC4wXYYJ%i}FgpvzZQ|t?<ExUPUH+gw^M^J94<U%+Lq_X{ +VKtmxmO70Y`qM+3W+Q9=ur)reBaX5n4cUTY#>E0fsy0dyO`3{>2$kqh3hds~t;HWEGWpQ&`ClHh7rgf +pZOnXLz&#CoYH#BF+>L+P>dKJ66O?S+s!+XS?PteGi;qdB?wJ>D;ZC7PdV7N@zQ-k(g8_P5dUNKA{o7 +n_WjNNkIC8xlI3=n(=`4%BAF&(3^%t9K!QW@6dnJ?gDdx>J&X7DkSd7AI3N*lLjz<RV80|?~;D{!}l1 +^zy@^GJj0$v9S%a1EhZa=c4hz;hN4kZ0E4K@mAVbnr$Bmdk?05!E^8Q8F2+3Dyql!ed7uy|-w%YXw!v +sXkNIQ)DdmBy_LVtkxWr<?jL^0;DEzMX)a+YpTxeK?<PPhdOVSbv`-49RPp-0KT)V$r;RZn1({o8~=p +7Lm|gc+>4WB>JZ|oJAXQZDPl~MW7t#j?0<lLVPSFkW$Wc?RBQHlJ%cDjQNVoOtH3VWmG~9QIO_bhE$G +;8*6aCdmAD7D)zt&rvTO9hv^Dnd8MgVHVh;x#6e>n*TchZqOt3v|Q90C5o8T`p?=2s&tnFCM>_mX`ZD +$8dcurPi?TQ}5JLOD;Nx=;oxNPTJt_7oo8!B$?)QXVjU@3^JwzT^y-sfy)x4SxIS>})K%Mha3BBqJ!I +FHF4YcFmP{nQgXG?*xQhZ7jqzykTEDvaAD;AqD5e7-rz*jOOzr`NNF7_AR2JqfZ$hcJW2Vza6-U2pA$ +hw~WK{wyKoUEAQSX6NwUD_<GDD2?OebFbuMYuiJxN<HaiaTH;<iNZ92|5A)tI3zSXLQE$A08mQ<1QY- +O00;o{RI^b3x3My~1pok&4*&oi0001RX>c!JX>N37a&BR4FLiWjY;!MYVRL9@b1rasy;p5-+cpsXu3t +f<A1ncifVJx|c<8V!%^G8?Q>1B!AP8hyrftrYsF740ujqf@-BFUISVm9`n1I9*b-a7-xfh<6M&~R|mz +ArGNK+>BQX9wk+-g-hk^1K#sMpuru9chz!4mhCvP{wkQ7p7ctbA-XOD7Ec<u<0<jo8(94_sBkb~nocm +J6;D@tBFyNnO}ROBgV?F2Ue?X>;zfb=+OCvRL_rNnssVisSAJW3-8bXvjq6q_RmaZPu7Df-ll+T@@R9 +e1qGSV5-^j{`SLddVYCv{(E};X*!)u-vKwvf#oq_BdvW6-Y>k~%FM;=4{725ud?7~H@S-0R9_1SMiH| +K;NVUh+7Rva9ijch?JJT2IB+{|&Cs4YaE)w=ERuv!Ry-q%&y3r8QxLphH){dpWjfCRg;+2zp;nsdC3E +mH*YL(A?0n6Om4GE_*>)`o@gNKdK**c`X;6lb9PDHyYkz`NVOw2{AloWfp7U(8<z~UaTnRy*OC{Yd34 +S~Ke04p!xkxY1K3=jnY-HE`<?A0t1aQi8VG&H@3xb2BT;~>UmEHpA`HoDVo)UUZ*~fUXV6z!8Ogm>Y& +~;uJ1J0;j4D#9{SV22=0XDc}N^t9tpiC<zEvPv)!a`ViLCYRk5`4V5zM8%xycZt<@m&KsCh)I*{Jy?> +{oTvaJ@}C+ZY?Feu%Vv+B{CQJSe=}loUyIpWl4Mjh<PQ|!m_+lPL@g#d=F0-nIONiwa7LWq34XRxP-b +PWt&28i_?|X3)WO<ZG(OnVhJ5W7Sg3@XoXtFwemMpU?AEj&kM|SF=inq_MLUcCpX^R-$(59XNDVE@kT +#h<B}Vm*Luh7j4eO~#;=VVD=4I;hVsN}a+(3x&Uzt=XsZpcwRi+2kWbDIT0}>Zw8@1x?8{dyoSHSrR) +k8$QLlMUekqLx%H6JI#@k3UT@{Yl86t$72jJ}+LnY2^m4`|cVGT55OKlp|Am0a>_~3+56tvc*rRr=%! +k&9^`$RHGVBA3kVc83a$JE=64+VxiN|J<}nrp4P{QBO7wGL_KOMNAwS9Rin>^3fSBT{p+hjPfkO1QA& +%iVp43d-)Z&g;6X*XimXhTLdc?A?6lgdI-Ob5zWzJes2NMtlRn!gIcH;u**13j11Z6FXd^YQY^(g7)# +6OGvKn`GyHtVA|1BN3_e*N<(U3y6$^6<V;Hna@HKWVUN6y`*=CC>n}9Q?^<2=V5jb%Ng=j-=A+(5e{{ +3(Gp46MfY}YuOSjRX5krn2oZ8`mAYP+S1+^!C#Gvsp_&!R&X<+FXB)p=a#}LH>+3|tt!)hpO*sCiI=@ +@VTC6lUzc#4p;Ju%hEP|(omq={%qB}5%o6Ucj?_RuY!CVnR-1AJ25JZWr1vbVM`k$Tk^#S<h0&702qr +Y5fYR?I>6_Oq?lf2=&0QZ+d6b_ho^5q)D#a#DDz<Oa%+j?DjDa!s>F{|38EXO0ZXouhuk0JE<B#@ivk +f%-$2w{Qf)hyq6iZi6Yo%tsN<7HF=Y635XJ>4dM75-GU<k1)DE+mD`J&ouf8O%X6=?7HKGkIhh*M|Ds +7Qx_Dz{w73Sue&})?HE;mGt|?R|LILr+H5$b4c4%K&ngSU0S>NgD@HK(<z5M78MO<P<Y4>nN*aL^ulH +f%Xjp~sC+nx%%vD_ZE%kuh*+a7#)e~fK_w&Zj=go%^jFEav-w_UnA5;S9O!CaIc9g!SCH0m@ZoORA$M +$UIqc@u|oWEDSD867HkW*b5w&V{up^3JE0=N}S`UVGl&Q72YIN|&ENy7fbL<aR8O(HMdj)u9IMt`Xk^ +B)TStB+X?6fuE^gn!G`mhY_REZH}{3MR9#7v`7}B1&3D>cRC(@8e+%gT&YWp-mz#YRPv!^Y`7>9|ivc +P)h>@6aWAK2mtd`vrvz|dNZj3001fj001oj003}la4%nJZggdGZeeUMb#!TLb1!LbYGq?|Uvp(+b#i5 +Na$#<BaBp&SE^v8`k-=`;Fbsz8dJ4|H*gz^c+pRzgtV0e3I(w+IUJb>fXRWg2QF79}{b<+8x}pOn*Z? +U?|NoInlH@aVXa^+dy&f$>>{JBfeqs{?RM?D!TT(6zp5h9;1Jh5T6k^-ql0fMEXf^B*w08(904lP_DH +wbRW@m8)(F3}`dZ4TY!e1i>_E1iXfPBci0I4T9Fahq7GEjWBA>>qpY9m9wfEoAWEgJI_J}&qNWKg!(o +^w21Vs`#|)s)qWP0-CnYuppdmjk-0x(5@O(+khtFmK0jJd^ExwO`ARQY1+t#Hr_F5JG5d7yUZSMDawF +W>*4uT|hhzcm-(&mp4%Ge3tEULL{`fS1z8>=AvmQc{x}WTTeZFxQ0Y4IvAI{h)#>WMsi}#BOU(~PJqG +ATln1I5aDj#-4J<tU*iJ4bl5xvV9WD7)-sptGgGj#{I)5$P(N-Ss=KnNi|=1=HxF=g4f*pr&vX9U|6p +v%_b`}2)_Zi?lN`xfv->0)?;@Gqxrx7r`nsX?RYxl*t2xNt_kJTImnSnW`g(CrGk(s0J*D^!P)h>@6a +WAK2mtd`vru3w8*^t5001R30015U003}la4%nJZggdGZeeUMb#!TLb1!UfXJ=_{XD)Dg&02eJ+%^*be +?J8wBe3Mia^l>hUDU<7iIXni*n#a{t}p_XyW)D;NTMoAw)cvB_nYBMlvZoI4;;DyVm-*=aOO8pYKL5{ +7+H!u7k9k8Aq!CytZax}i8jy3oROLp;+AEE!b4FoQV9<4c}W_a*fwp=lF1G!*427SGA=2S+HcEdU9oI +GV@rATmgbU8Cd*nBBu(|4G$p*KMBNZNmm+T)mg@V-#5`Y!vSIg4&gb?CtLswOn_S%70LO#dWJSv?XSK +A?g}ah#saY^X?fP$d-mp3*H>^2@H>@_CR=i5mTUKVGP9(p#!$16Z=nnv4u)3sq(l$Jo3COPkNtv-9XJ +>EDKVEJhp0TQC3)*l|+Bt7dK3tr<KE9frpQZ0F-=%Q(cJ`m`BnmDUb}lO=iZ<i0ho)XnCj@@xU9+kg% +}`?Oe!;4S%+&Lfx)ybBVAdAJI(5SdmEBxIb_gnVO88AFYEWvo&JOuOG7?y=%7B0>h-9eAT-3Cn7Bvju +Ko&V|;ZGw7y%juD05WtK@+8%CP>KechtL{C)&MSV8O;Hh$Pc`)-7=P)pMEGouGa=vfTOe!S(`Iiu|@J +;U0%W5n4F1{efr7FI)~-zJ1*h*9aHPmQgcLd{+SK9u{+Wto#$fl*)C7MC9_iFfzNZM_>?$-N(s_aW)` +x0007*B{#Phy+)IG`1hFMUZfVUaQg9<Q^N|^Gb^hjj3PR-tFKMGWEE!5hkanOFQ7)JgHKAFCD+5bt)^ +;(mB)kDGrEKBN9dA}>hZ#qN(%e8qCggioGZ=-kX^VNy@|@~PZuhIEspRzF;09>4b2N;DYTc|vd4S6w= +oJoL9)A5#HDhRU#CZXO9oTznZ@}N23Sbks&G>Q&yp)Ya%>r0jprcY0n-!Na2z`;a3cr_Y*|0)^9`OZ) +JTpkFX`HA(uw}g)$HS3=$^`Li_c=381dIVtQ008Vn|w`biZFuZfg8G5po(GjIRn_>PAtU)=NU@Q68Z? +!(5u_B#5?6?&4h0a4iqj*nB6orpMxhQ0g?@#01xhQzYQ7&6IQQ}LgNZVPAXbAe9`6<%#xzD+i*flN2r +ty#WjKcz^HHu62evpL=FKyM04Fo8UzjqOwn%y+^fI8crgmNr1MgpP$onDcMzORQV1j|>;YtY)Vat6d; +rbEXd>HrRSQ%-4urS@qg;#$cX8=%h^TiXAPG)UO7dMTKC|+&$waG$16763(BabTIta9qFDUq{jPRwI` +hizWV_Ym2Ef@v5N0gvcG~o|0TaddI2lUv;*`rtiAHdJf2Ej})1RI#!J(nsE_@IPL4$+=s<=-+5ikK9% +<Vz+2JUgACf_1>4j~s-4r=5H$%6)U6OkfixY&sKjqhmtJTrq^2W6IVcQ@JB;g;sSkJNx(XY0vgfKFmI +xSV9&d^Y%t28XJkIZ!|Pse*KS^hff*!>c!t)ex(EE60-qK9e<GQkd(_*vzQ`_sWM-1^NUpJHpWm9byJ +MYFAc&ou>jqm4WPz6xmYQ`(mo`yda}QoK~hzcZXtBev-8f;k&zz^PE<~X3JKL!qGcEpbBE%KbfD?H-e +YR9>&_vy0snD+sc$>1yh{E`GV2R%0QiUiQP^!MexXzH_N&8}qoVB7ushx+_@_%gf?(sr?01OkkBaIsX +nC7CI_h!X3zSf2l$cRbOdNF9G|B*mi{uaN)m>j`zVB8{xdY7Ntou}%OAoS4$A35ZxW17-;@pbUJ|Xoi +=?@$Xv2iXL<#JTI8yM^Za5DK<R~#kg5_~Pi;svD!G6hGAVJ9rx;^=S?E{<(&Ma(3O1dA2K^gIXotF(N +j0t10)Q9;0fRAJ5xSqL;srFosM<ER267|@Y~6}-U#uxFmZgr*-=b}*=#P`NMZk~Nw}7fBPnhOUTIyiC +0(Vf4`O=SKu~t46q@1b=JJa&3o8$bj<Pd$onqzNR!$!rb6NPdAE#x0rW@9i^D;dc${P@}i6EGxY)t5a +dw6JV*p=_;pW!eg}V8nKx+~N|rBUvPS`y@MrJy9bRn#{xR90iNO$R;W=ANrCJXl(GU!t6-*(GgFFEOd +fISMazl%13iRhf<Vb^K=~_CJ<h;b3(X|esv{~|d*7t!baReSXB()5Rxoj6$vc$)21UH}bm;h*K5hRtU +!l3sqh>2=AMBV(h0zq%eK30^Y#7TK5-%b$-0)ukYa@`n>EDbHld~zsA^HMzQjdT)5u`yw@UPHh)Bobn +V1v#_g7soj|TBfR4$W#i?C|E8^J{lJuL=VFm`Njd`<MGAW?Cf1XrW!==?)q~be~DsSqWZ$|9>pL;8<& +rpwA-RNTK-xUEYxfzA><=QrgFC-cNAMo=xzp-av?tJ@;k7s`;C$*N#Hjc-TS-Ql*Gx!#reg!9NbE~ok +iGpdYXNM2+@Kvu+Yff0)^M$gQP`5nbA6PQU*w3)uSA-wo#B-Zn5Ga#1YdrH(!GdLaEi(sucEpncDI=G +&<}ZJ!&InduC&fM9(IW44Ueuv3O>pDJ0ffMw#hTecrvB4DH}(px{kcu>nd|4r8mz?J)uU(Kc_?q*O0P +=o0;AR*R}a8-xrj=}~gK)#I;Vs*z4if@eSOKP&d1WmnI>pFVp(eRdf{y~!Q-zcyduUyV!($rf_@;#Kl +u`GxFSk?-xPic*GAG~7Kzya4{~ZHbdZu?9i%v*2ZTJ;uv(1*P7brRsT=Dqr*bK$Y`G!7jY2ThGmYiiT +$5=}m=FT|K9FHLb!ub!}r9zQxBC%R*jOp5+))miHX0&d^K+p08nW+_h6Kn|02Ti<8TftMvHv)No`-82 +T<4zs6bozbv~{<?#2qbL;|g@2L&SJLHY>RP&ZYjKi{%AV+ASnkfX~o%LrcddnPhwq)$LDe?FE{Pg_d5 +)^d3;Xol7#9obb85oo!8Q@ZNFIN0!1t50~ZDmt95>j}0-p6a$^LTMj7uf0mslAD!czlj=g(I_mJUKl* +|L9NrG*T^gJN&dYxzSCDBkZunknQS~)UAhxQRO6~l)U(lW|~@(z=ge>_^!ir9aKrPsUt_n^iGaC&>cg +vdnKTdd36|iL%i%EZL$5A>h6mg^R$`;oxVBHz_LJ5!E=m6Q`#EvAK!`z&i;;cH`m(?<cmME#Q;Xemb{ +6Hu`49d@wO2%2TKh{qL_5%s8utRk~O@AF<R{GmN%Wbsh(8N-mq|ow~fd%_0mf!;IU4yx{-a1j3xx;7^ +{0q^VFds+=>*l7?-vX^g$Aj!l)lC)N#p(z}=u|;)!XtG^vGCDruTE3dtnq+6Z{#O9K)zRmFIFf+)uE; +W~&Ej=Wciei25aV#1&>VCar%)gZpkE@uQHYw-w2LME)d<+Ug=od|=glZ*Gj$q_^`BoRDyX(&?_QnVDi +HJ$$bbvG6LcxG3~8&LnaUmBa)^Eq0pKI{iFRUsJNdThBhmZUvuf3P9i&#=h1N1DRs*p7X@He5%egXXZ +Q&l?sE!);K!TDd+l(T8kAQm8ex^U}@hNVRJrh%H*#hynv|*XQvEZV`09>4Vu9xDb5E%cTgT>*?XAf$D +o59@Po2!A<F|H)K>fa(h?vhJ~ujx6E6)!ppK(aqSGc=AZ$yRj6F8rm^u6Mlnt-NsaAzm5}36Bd57XtL +qC%fpA2b=*?r{1GEbYSx%(7Mo=qZVqpc_XKJH+WxPG6@2%_S8%TKVC4DH1&aM}fqS0pMliF`XH=uUE^ +$a80j0~#u7|+IR`QhWk8InCNVVJ~Uh(<Ld-hy_Ashs^NAQ>6dYqyAsmBYx>9jb@mlq%Y+61XmDVI29K +N{00CNwkpyKZS+FTi5OCJ-t6gv(=v`g!<0|y&+}e9@~mHoe>%b;CVDnbBm!F&IfMf8;_!6^5h;5R+&E +28s)U>Ia(O&_qrp+^n7U+lRB@Z#2lD~$~{Z60F%w2vW>cS;uH6xT@$Lvu4}9S&l)9|I-b=&w6;fSz=b +C&3?>@IBLZ<1v}UwJuS$7<K$RNNgtx4o3(1>xmjK6jgkP)fA`oC*C-=1|m;45hX-yjBg!M?TU7)^@Q8 +RRAsoM@U`=y2YK=+)w$|1%xG<Eu4HVj2@OY@cuL=Jfv!|;t|p<2Y&9P=&$P?Ix)<8eE}F!a*P;|(x_H +z(iy@GdYVLvI3v`u(vPrWV;c=Wt|>s(D6dd;>FHjm&s`F}s?*K0dXR{A$Jxnw`BpH*!(W(y}e)_MlfK +R7ND$JpFhX)Iv0Yg_}uBAYE9f_9zL!l}nMcz$~}dmN}DhPo1IQsW{e!hMX$-Zd6lH!A0F6T#O#n=MOB +kNCN(Ppu#K>A*?=bFp3+_>2`0AcOe~g1O@~<`+zN`<GS_*I!-b;$k^>c+2(mLPSEpe082<p@go^X_#6 +=D438lsF_0lzgf1Ob{21|CW6{LGna^``(4jvMKx5(an%10|^B((LvAls!*KNd@eyx!bTOfYY*{BtWS@ +d!xYCN>g^m#ovD#%UTA&beqB`or5SNG}Y9ZX5U?wjesL047<ac>kv?u}9SOpp4a{x>m7$9A@{5-yK4# +=b(cVQxH%`@EoXAEUB0qK~nQd|o?iiJjr-WJUT<y6-JO1<$>j?K-gdg%=~}*ZR8F38t}P%j`lqV#o;= +jrPf*CpB<1_;D9(_@yU<Ok*`w-%wx@rk#L<VXF4%i>uLZI;!f037zR3t?|pC%@Jx;7(FKIex4D;n=}- +Rfy}TO)EoJwe;YttYHAQk+6Z6l4>0Ktt+q0P85WG(_^>9y7Z0;zrS&vc9+KBcg#Yt+{o-rhwx>swuY0 +`@Y+<C4zd2H`fE#`mnwEPcgNFraP7d)H$UAcTKQN*O_7D1|s^EW;Fs-lH6s2_>qg!y$SNYNAd*vzN{l +IfxTW|Sk3>hY~gJ~|w+Z^TGt>^l$t-Bv1+c}EsF|@}c9%Gb@RTFB%!0cf}4BYL5a&+PGuOUkefWJeQe +~R38pd_-rU2v8aNKt(ztU5ln;uk6vG!k~7Sq$iy4_zUj@V_UtnPoDrt;ZbUUl93E(bkr*^XDMl<p>XB +TxWH^MP@1|+OjofBFRXOJTf6;IbDxB#%+5Zy7DKvQ&qZbxKb;DE=eB<(DTCfa-4pb4-J;^KG=O&3!B+ +_e_z98znHAfwr#v}Zt_1+O9KQH000080P|F{P(})b#;_m&08?fF02=@R0B~t=FJEbHbY*gGVQepTbZK +mJFKuaaV=i!cy*>SN+cuWJ`>(({Hzz8U>5nw+R=dhIO`ToOb>mFzT(0N!u#^NztSOQqNXyzx{`Y$y00 +@wj;&yM(ld&ZdczAet-*`Zti0hRUi#$#9O_D9eEMKo>RtdGr>vS%rQj~I?-^;m(;bFd(qR10?pJbxKj +&)U+GCX)9*4tt`7OE<fS#^{bRg!0MI(Z$ZO4_&cM8!DJQJq!WLe7uoa-npagGHIIMHDf_C=$uK$jeH^ +Q<bN6B_sZRaG;;h@~n~%RhmrA6Iqs7ZoVvKRm4h}ud7(CoTiCwm*&eQ%-ej;ZI2>X$wLuWEAv3D>MBX +?w<@me=dEJwXFx_d!>KES{#<^n&E$%t2%~$M&GXW{F7B35DOFyVGpT@1Z!WLT$3XI`+~R5^N@O|EAcN +m=1&e@W2g<1xE{GC&CeBVyzdbtn_UQE6k=U$~*$O%VApY5`wqheivdr>Q(t=@c>{hK3gJamiE^H8BH0 +iq#PpJD?!|QefikTj7e?A)tT%ZWM^fnEVuPmXGtf;GzSjWXk{39u%G|!e&ReO4db(zANT2jWPl1LPO9 +MShLcMrLr22y7q>%4No=qJq*nx+vzEETME6gi`SY{(KgKa>wMS$M4Q3PdZ;=I3RZmwi3bd=`5hf&*Mb +;N)l>|C*Q4IsvkqQAhMrB_J6^JiCj5Sp29~vW)Qg=wR44405pwLC%4>{gFOgy!r9+!xe*(!2H=9f$5Q +|IZ^d)smy~is`3bAx=7>g-obzc9A^64&u@Q@Uj6m_)qh6s-oJTs@#ZfhF^j#WZuP%U%Bqf2nce#cmvx +o_U|6F$%(-dB2sYoNERU9HK8;gE^B`Fudyc6QjhW;I?ho5as*6ip|0_^s+4AD@K!SSeZERa0#O|z|K0 +W~$dHi{qZAbVEAdP@OvMNq8Ah@`I>BrMl>Q7Y;&wff2$j7DDtRry^!ZosxuImDuzt1dd44dIy{`WMF! +RW^X75B78*ay__znIG|vPCW?4E+XHWhBh6+k=CHC<1j3s(K=B2Iaacr5udJKyyTd$`ij&fj#R27^NIE +_`=U1R(JRwS|_L}T5lJ5xsEH~<bM#<L;+WT)=g6+Ob@gS+o#Z45A3}xWfrfcLO>`_MVT*KEoO0nhG!l +Dqvv&nEoG+A6m^F}5E>cipal|pu&s>Zx>`j@`3RKA04arLMwUP*ZEr#V@e@4@q6kroB4Eq|u!kh?uwV +vkFl0V5x;Ge#qZcTA^b{N7iUN)RJXaykJ^U3+bYQ-~D;xmEStKcrGZKekc*wtpd!T^j#lL~`cF4>D=A +bS!hmQxS7e9SwZiBx;v8`5MWj=i#4nkhYz@?z8JV);Eqh0DQ7&c2V)cno#YS!I=On_+t1MhpAiVjDIV +R%bK?d5Xpb$ED4e?dY4CfH+9VN;PWu#EzG6d+RIHldKm;w?{J4=<`53@$YWU9<#;0zp+Pkd~0iIR+CH +gOvIhkAK@R4SB%3c!LANxT=t|WU&PrnPwsRdkl9LXW$s!gSE@H8aIOxuds&#H(<mCD7;@<`2ND)N_K> +UhZdVl@H)y(qCh!mw&`}Pv)L*Jb3YeB63UR!ABG<36GEV~s^ZV$+1QTNdMmz~h~Swx>g_ocPepJtVqT +KzF8D9@!Jo9B+>D>ydLn{$Ef_e;6tqNp49&-lwh2(|+6>E9g7_54V~AsfbsgVH=&Hmf0j{Vkaen^a7g +yJzp&$5f%{-u!Y0qP6i;o_QxV$0{1x=uAx;zmd60jc|MO;(Hu%N(Qb(!R~66ff){_XAc&*+2ar3%Fr@ +W_*IzCQb=VFaMC49Q0qf0(ed9x{@^fAgMq2I$z+95l46DnXU+*OA`TvALt;rm-T+5P%OK#^v(<=Hzzh +qD<|<>kbAHsHFt-Rak6M)gR3U!xm<|<cFaDj>zU78r6ru<%68n722)_e&boRVBo0knglN^w$GB*28=( +<Q-8bw=jVYwJNQuS;{ZejJpigb5%0*Am%xEr5dL%_l!Q=f4k2JE>H?L<GyO;%d{2IVpsKup$v;GM33h +$*?BwJGVvRVdz@j|J`Q-V@$&l8AeSm=UIL8PPGX%$Y?Nw6f^-S|T^|_h@t#CIm@0(|t4S#3!Zo(kAAt +;!6DoZ16J+FcV=phhK;ENFw-nAPbMwgipff0wkU`-XWMyT#H5tkS#$Md5+OTnj8ImBKvGZYyD6DH8Q% +Jrh4n}AT(BVc}EV+B;9pkVV2=xOl*HFPyYl?$FaXi-w3rl$s^M}+8HGsuXfX_XgpQK#?%<K!f(rBw{T +Tfl^C)vp>LP>v8*grEuXghEhsCotw^eE}b%bv~Ek-zg9ducC_&?=G&-Jw*~+Txu58DrM-ZlcXAeg85h +{_voTmWF@sw$_H>qm2Jx`d|=E#2SXR?Oj~GxhOdt|CAgNZ-kYre?||312X%%5Q4cL~UMAqI#i>BfsI) +ByD=c9>=zW3CIr_||FE(^ks)K%4-d#<GU7TpD*8&*V|Aw6W8<HLj0&dxRv9Iab4!>oJ@eM3yNwN8m#> +GkDHxblXGQ(8`rq<5I*^m^2MvH(UducCLfB`6S1+g@*&NU_#EUk13DMMYuhCu-Th2mwZ@)0K>Y+Lw@+ +7;L>lX5QS9J@ddg9k*q+04c48R~b!Uy<;|DK7YyX3}vTXqqqv>X>nBWg5i;4HHFvJq)FJ#HKKYoqm)Y +;uUh795a-mbw2%7&MH!N9$mw(?74vx`WEE9OI#7MAYkoC=WJCa*D{0Wums>2Lj*-xw}B^p?|ChMr2Zs ++uAE$Cv$UQ|ox@90jVy2iItGANUW1Z=70k)ml(9-ME`_DU)KOk9SDq+CuPv#GsT6Ek>NUCvup(&jJSV +`0-VFf5pNNe`B(~jYrLFTz0tX_BSvwyLHbHtIhgPV4XAWG10Z=uIhpnzcbL9pYX->UCPf9Rv;&6IM0< +w}CzFB_ITcA~^d9`Z6vP6U~mVJTqiyG67`JG4;|LrsVmN4%EQ(*5v2WccQBf}PfQ+N%h`4sYJ*kUa|c +M}YzpZ-vOwviespM74+6LAHMi1LUS9lrkK*{Q%B%p%Fahev-3gZo*M3=YL21zP-3%RdQm3zRF;)Cow; +v#OJ{I!gA>gnJOi2rSD##$$m9d2YDdNo!p9QLnmfYgx~y1l{tN1hbb&01ZlW1Zu5VEE5zJ)*-+Rl>Na +xY6^>UPqEo-Gq>s~S1Lg{F)B+>&KN`taUqhBK_@hCRtmtNlJKIDlUp&Fh%?tM{EeCgcq)x&axm-#K}{ +_PplV#F)t>%Z6Qd(hRtg;woDp;dTEMD*Whbm;G3;PH2nWyvzuaJ`=JXtnZ{5{)R=LSNu_Fl!IT?W0e> +doLMwO1RoMnEUEFmmI38l3r=7wlEhE*>?vFD)dU@>tVa-X3IFFoc`w7VC8N<jv|aYyv~3^1u?L$ll&% +<fbxZ=fG#4JP=Ro^4hMM&O=vgtGx+*yawkG7Ni98|n2SLMND9kPUtD@PKLB#p;fvBho{zrBd+{OdRj- +s9p-1%q0qrFES(-+S+G09hu!HB`7Lb#bEIE;%!91;8pbU)%C^Y8;r3A;AmoUFmR>^Jmf%OOnPG|Zskr +BCe)pTo@_K*$=MwyifJRlwCkB;Cj@^-!7#e<q~j7yN%3|D=`q~!lJn5<M*8Od<}$i?^Y;C<8&q<XeQt +sSKZ7=SV+Pq^r2bF<Ghzbe-&|-A$yLKYiI25Z2w^NfeeTc4;g6ZJlV`Jx@Xszj%>JdiBk|CX1m*Z~k? +ti%OsEYU@i8h9)=m{Lo>Yc_EDom)nRYFm<F7FYkbp0@Fdsv7s)}G3;_`vncNx$&N0(<88x|$ZuuJ8^& +v{)o5CXKkLs~-wrW1uo2fL(}0%I}gf^$~XGz7_ke>w}Smuu+td_)Su0CSYVqa>rX;wbf67Too=;;?t| +G%Bq(u69ytlb7?~fm19@=YIk*y~!Nvzikwq9gKinv^IW=G><C}Ltrj;=3a=?lamwil>T%=kHM#Lc)Iv +3{`P}ieC~Ek?ZXrO!O3nmV0Q!kEbbbB$h|JmVK1;f$ldKi&Hz%~SPXHX#$7aqhOAXQt-+0wL78tlB(* +BYet4N}Z{7Sp?xT@{;w?4I_utxZ`JJ{D;G?SwC6TcpF~sC2h8E4sS)SHw2y|hAO$huNcuPLSYZz%f=0 +`7Hyl8N~xfv|-d>WS^qGv!2z~biQVGfbbRLaGzPCf>v710LUp+rCX_Sy6A&i?rP`F8{Cc6u@rU+WHrY +YEATxS_0lu#O8>%<y=~kvx1tjfL%a(u6#AS;r650eq_w&P;cJPuRiPk`JDilmr8pF(sFG0*0D_QGOGF +9g0KNKN^KF{k6vJOXxY`A&0}T)GD?gG0hPb?}Jhw%>do4z+MO5NIzy64UsOC6QDO9+>Ezg(Mbb~Sr=i +k#ch;gTa-D5?_rg%)Bk8^6-Z%gw=7XDG@L1LfeR5Efk(x*y;sL^!oZB(xXTTAbkGCSzdOctS@RGU=Lm +7$F_1s8ox}OC_6+JxR3})0r9p?**_{dy7%$-@$-^JdU%!0+({=R2``53}-$hp!|8w4CS$|GsIu}JEad +#R-Y#vuJZ!5->aXq5oStnKMtV&XGe)&4|odd+HL6(pJLSXk0(Fza~&!FQ<QZwHaPNDUkeX=Fgs99(0( +MDsKqE&f%FC(>GrwPn{g4pa&eLME4m9I1Txul|vmpn^mxc862;E^4DKC)F(cAM|O1E?dYrl!NmQL;bd +q1*|*3|{~}(kAfiQRA)lUYzQ3N++`A7ED%C5U^LOS(%%t%_{Jph&@agsR040F?_?MOukr%5W-I&YHp~ +5n?MvAVq9y=zCs@hYn`F3aS6eTpK}yDK#;EM&cLwo&C%E6TaK>mTYPR_kB`3g^qob<$`MsA1bGU}oXO +4JxYZ3y3?&SJAya`jI~2pEjpSJgzP6al`vhdpO41W?fktd?Gj7uy!W)QWSQ=fxoS<2OWQ~BxiK}!td_ +%Mi0kIip=&&VzaMh>|HL;OHO?SVNUNLv;jUwC;X~=W%C1jvwKQhgDURG8kpvxc|6q==Ww@q6y0B*xsq +lE=t>7z{*{e9OcS~ri4Ob5mi6EB>m9O2uI9N;b#7e%2ljhz}Otr0FvGab6PO-2~3Iw^IqiYl4Q64v~X +a1Rd|$g8;KaMDlW!({8V&WRCabB*x|q8o5;vPNNY>WgANUx{{7_lW1NI<Mf%CaIloYN_mog4Vs90|!Q +SweVYewcKi{M=cwNv~D+J!7zhs3W)@bnDQ<Q7eeTDp4DZEdt}Ybhk7|*rki-H>_9u0wq*}YVCBv-GWC +Z%XP+EdgjNHq3jbvk@ko(moan|8!#>n|Fy6DwwkEPOEw6y`|7&iny|xMjY>`kcSi}WWQJPGH;s3#ey= +iq=8`K!N)&I)*Vm?d{W9IJ93!Q#SF9ND-VYC@MaIENZ8KFbc=fzUD5ltyHUMeMLzY>EGIv!!if#>D5y +jugkzl>v_Z|m3p&7GO6CgDSp72yUod4Qva#Fn7M26ss@af@r4cD5k&#(Fq36W+VCtEl$Ex2+fzn#QiS +Bqm>OMiyd1HD<Pf-F>#<_3c5Mv%)YWhN31ezufk*R}*G8qSK>7Rb$wG`K6)xFI0|3EE?#I32=a@puuL +9IE18SJFqKe_Sw2RmuzgmUj5}4Tt*l(E|)c(pI`|{bP|H<=g?_9LT6WKex=O>TNJ`oEq@XkTiOG4_`; +cGhXHu9dd=o}Ho%=GJ`-V@xK#34!l9HU(C)sLMRs=c=xWZ1U^ks^sALm(yO4>i7%GIhK1{vK)`*$VTb ++U{F&H!zJ0@sIHRITd`rd*7C(PO8C2rA0FfhgdZi#gGf!|$8js#R+*t4&{^Ul_=G<-U4>5ED#1mQU$J +p-Z^YB~h-Jvz*c+2I-=ntA+Xfc@A!sy})rT_ZHKIQpE~KLEemJ51jY`>}omP>+~a44S6&$XmX~Y1%Qm +?egU@^@AHO)FTJUWh}RE(qfHHRlz*GlUw5@qT=ebXfNi@20q<7&D;rkFK$iItG2=HwLHolv6jXS`(49 +9#TyuQAf@n&bq6Q~M6v+djUr7@Gfn9Z7cLX1Yb>`LD6BG?L6}=6xfYkxVV`?#=2r1;@FK}*g~)q-e?> +{I>+=y8rFgCxbvzp~yevQBQ!0;x>;rkGfo!GveNY_q8k|kXfUOFZuRupVfYGnRCing1l;Y_p&j=g^k@ +_5AKA%(GO5r&*$;Z)%#^@=U1p?S-))s5ktrrAK#3VS$bBKx{OvQY%%@I>MW~q4pY>`8p=xcnO6eYQDj +Q~F;q@-S9Tof{!w>)astwet4J8Kk>JT&LAd<pk}H}Of2rZDQ}x54<*1gsBE7Fjcc@_g?;*P9NOb-nJP +?{@F^x_3L>`lYM!D5d3uFMbI0C1ughto}vnYA~3_ks*d<Hr{##Mst0Q5ITVmZX<J3c11KWJx3-Dr2QR +o^Duoa?`4`7N7jWU5RJ&OBzT~>1{hEz|3OeeW-|<O)Q0WJCg!r)yDZ-{A|+bNt`Q)qNvbmqW~?SBBZ3 +4ICS{e(>NGC(p1es4n}fiu@YIRXdX%{}?D|zFU(<?PZA^BsyNyRJ6WUUtZ^U(U!CEax;wkvz{bdTBY$ +>143hCUC(-%O`(paHqeJ5Wd^K!`1>{fgz<H8A40CO%0k8Og7NQj#b_zvs9xj2vjyrS^`EuKFu#R|l<* +?p#x6!0LDDvAOn)5VB^yV?n!hS5@DVNZ~fDAP_Iw>z+4?BLkJ>EB6mb{@D(fQfKBqHoJJ=f43p(31jn +fY|;af$OADud2M@^NyHY?9&f}!GTL2XsgN7O$6G(>?&SWK#DakSs}~79Nrx2UE1%d5nC8L2A$zk)GwH +&=q;4VQa^Bpgjb>S26blht&JEo4)pS1z52QU#=_)?{z%)ILn?z-g3ls`rlbzJhssKHYzXfdcTmMJr)p +~vw?%k+h~waBM*w1d-<+%u^~ZIbfx0S5(Cj%$Eo%&bjewO48^UV<LPJ192F}1%v`$+d!=EI>-?G$)cB +sNt;_+1QzBm%ZN<yt0w@4eJ^-~9drz~!<J(+8CA4pur`xZYX(_>W^7*!q{0mI#1t+!w4QdEpPeLbhCh +1kOSE@g#h5HNo{5-thY-PrMV<nv(YvX=v2S6X=T$eWM*hh5-V1vezwjfXp$)}XB=37XY>#c%k?1J^O< +Ty4rtwFC*B(C+}kqhzL~Bhy?UHCV|s&6`9Wu_j0&u=DvxaH#?<12A<eHlVUn>ht$(F#Nw;UwdHBXYYY +N4%|m2;8ll8^cT;)b>{!*fdJs3u{yJOwu1LYwmZh>r7*8pS`x)M6I3KMR;=V$p$!d$In&To#v5reR8K +0TyA~fXUL}ZQTsp^!Lh++aB^?GpI@;&BcPuMqlQ6Wdj8$ma;)-0Eu~=1Ap~lC@OBkj`?Xo_e=2ex-Vy +izKPr-FQJ_%1x!{_=DtlpEKPQQI_iMY!^;yzTzK1TC=Mkmyb=<p%0fqvm6h^alk#Zm$I<Bo#~Uo#9W! +w8kQUy}+?y9Z2I$A6$rnW^N>Rv@}Eo2cX|(poe9M-)qNwS(~>`ph7<wa>Zge1gq!x(RsX(T$x<XpWcP +V%fiWioDc5p~QfCGu-A3HaXy|K%C?QWr7>FG%j|NwKWH!bM3-Ynm)eI6S8Ukg#^U(%^vhC&{=pL2jKX +zPD<L2W^UieL7H+v$~A_#RY`gYYh<cCPj%K0dUkSh?;2=)|3@>mCK=@>^*T$7%W6GvnhPGKX7Naj?D9 +E4NyeN?{vn>N%6f*C9huxX!1P#%ypS=T`AgQ$A(cnwC#_r2T?03w(L4Bc=?=@>o>2PA87{<JK>#$guw +P+aBsm~b?>UMk-BGh^G*}&AYrR7aujU%irXiq7$>W(oTfyS6Cb|5EjS^-fijv*%5UE?QWsvAAGaLiPZ +@i2=u+S?^89SxfbXSk<j^{QWAflg~4C&zPRkEfMK2BI<^;)0WuGhg+g*~$>!P=asPmzsGLJ!|7$_UP? +;2%j5xJ^qu^o|90&eP#=*uc;<z?q|ne<Beb3ryc3)5G79mj8rtQXy`OfrI(E8U1FUAw+9%J78T0w^Zj +$&s-{Fj1&ycq0e9>(9TkKWBKqn&OFLw1)*24%CVXct!!_EWpi{`T-h6l|A5d)3=p2F@ItUh`Zk}$??A +_7${tD7$YWR2a4;SqLGY0)v6pBaHyE<v8y($(kAd2`gpeHV7@gWpXqbz)_utsw)MFwBH=jP=+S*in=t +Zi7PoKw5LAFCBkBD`d^7SB^n*0Z}1t^WRoD9fLKKg`;M^8G;_x{~ahN29*TUEi2XL*e-*my7$FDBxQ{ +DZ;w1C!#^i$hOuT2H;xgy7&~I&O-ZdW!T!+Tlq$P*aMvAd)@NL^srK6r3KZO<;c9A@T9CLu4k}NSL<f +KrJ%7N8d+Ol6ic)Gr8<@={`!sLSvoRo<-LeupqW`XzJcwg%?z@ae@yX4Y+xTc(66r5BP$#riRYBh^CJ +c22097&<Q78>E?*J!0rOGB1mX!IGU+Cgi%0H!^V_~G>CDL{jhtTM~Bb4xgi4&1)kIM)(TzW{2DI`!kH +EF-z?^{+c8>_RlX7KC0|HTeV#}|nM%C>L?JqBz99|$u1t#WQ304e#(?it!;3F~!|7aroI58_pXe<IeV +(B4jlmmfh8!r*(b5D#5|0}8*OV=}50GdiPKPbEhFx6gYmp+Ai{DI%FHmFLLydSDV`Y*@69*PiXAfN}n +~v1vuze|yjh*mxXKl;&VDgq0etx{&VWgdc_B*bLx810I0jBz3ObR;`{<Uwx16QX%n2Myx-mKx@g=BcO +X=BPa=P~BUAESucI{h67X`J!Eqj_|6lq#ZmzlgbpRO;bV_&FSTn_E3c671}c#37<OMpVDoZ!sV{)Du$ +rJ%aV#yAU{<sd9+EcfjcHZqGfs3d2zr7^>{mUq&LRMr@Zyz-_JbV2}H>n-dVQJcw(vb79+0FzeXQb!~ +;sEQ4=`y>Q0O5Z0Pu>(8G|tIywmVze9kh7BgoJ$#S<F)%0Q!*2z^m`r@b8dc!6D#Q&f8k(k&Xdbog%e +8r<O$#%$W?W)o0HFD_4TTSBG*@r%DQY@|+xR6+M+&VO2nso0a>YA>l53dl)(+oirT17M2s0`dyJ(-eN +=n(ZGn*#9xwAK8IY&q6eoZq8v=CtZV~p+PTAY~Ni%lld#Uc#D?#oQKT`Cv|r@jR(*tcjq46H1z!@w{i +9%j-39w3y^6{;t6g=<kT`o@Wg^nr|tbLSg%^_?#s=LQco(OW(cK_4N!DYyFbqKucgCR&Z+Z`D7WI<xc +9D0qI5BJOj?HcX27i$0xeI_}pl8ps~qZEnEpZ892moiL50xfGCA=usydM(vXhzFW$^8;KDfWW=Z(Z<D +K}RjzCjX(t-m=#p!;tZfGl$*ivlid@HJhfCLXbz6M{7X#GkeX7G*DQ{_aqk`Y8aqV8WxR0`qfpvB$@T +}LOA<n=|b!=t|j;h}KbWTT@R>$OB&<%cEHILsp-J|NMy#sJn;-x8g8^%&;2y~WEmur`DmM=5fgf$g&W +$L9szC=8bI^X5^eN<^Y4(EKVz0blD2@P4;%4qju=n05Ml2e|4P3Ci%;nf;`X4}i`dfC~L^KDjQji56f +GYdut2gUqb=e2hSRjV%5?gyIzLmr1Rr})8tX-1)B3V(ES#&{h|cXzTgsE;>01%Ga6Bk+9qize8`-5i8 +Cbce$0Tz=O`-aJfbb*&2=fWsFxZ!BX87v5Uxj43}h8F8%S=^OcFw)HE>@dtb{N;DC=c-<d;Yr}Am)Ro +r_^lQG(2Td+#)oE9e4w2GSP~hgdR9LYDeRIC#l6Ky!*=poKq9P&+MdHn<vC0fQY*Q=ncw)ly*57Sl`k +_hp7G-{qNol&_4NSo-!CRv<eYv@Nw#vQfDm2S*`QzodiN+J1o5B=onHPAClF%Dn?y?~C-?c1Gg(htUn +fYm@vVw_3yaC7Y+74yXaIUKw99gH{BP%fzcDsk}FkjGDogrFc*rWM&;6f_OVq!kn6jBM^{ERQ-C1~q> +o-7isJBi@mhOYw*=s8}Oj!oNGcked@wfUAo>rD~7o>@Lf4&mKF@S=8o=OD9}dj}z2+G;PL6BY-$qTIQ +?zs7S}&H+v4GQOY^ufFx2N|-7arBB3-?Q^IRJREtCK7FQ#?j@J4+lPjo4y`^<JDtX7`b7J!&Gbmww{c +i(i})CT9w$oGQXQY3efJ&75v4BXiJH|)nG0Z;9ufT6U`?($ZL?NO&!zPi(ko`wSEGB+_TC|iR?||`%@ +^Q3O*^r1Zt;<uXvP=Dduu_n@vajciNm8cUgwNAj@ov3<kaGGI&Myn@TD^DUG%McWv+8g2gD!Ty;Nc?8 +}d=r`JW;H#Q5*or_cVqBxZH(B>>K3oQp_|oFyv4t(!cRk#iMC|DCR_v;4f*#+}`JJp7~j#@KPeLXw&P +R)LZ}NMQRWOjKM|+rX-$Sgj&H3QwWT6r7klI>&x0{`_ZgcG8=p2Sgl4p6+;euaefTXMn&*`da0oJr1Q +aXZk;^2-PY+d;U$(_}cUV&sg`i(3dn%#0h;RUk#LmJ@{Wv2UL!+XgCcArg_oz3+}0XePrKGx@DgASYJ +)(=45K+7ly6Ex|rjo7tTAgTVp2P@BmmhnKqlw?aB&GHE4xaiFlEEm|{xrjGeF5yh0j%<30CnZjAf-#9 +Y8drDzw_s#VU`^+&uieZB9HP&IjAHX3(cP=fc85Sy4Q{%;(9p-W5p=8y2f*6FOq-V~og;DI`UWjq~1I +Hu0v(=+<?HGFzL9Ch@+-5s6K$7T}lY~8Cs68j$&G)?~(P)h>@6aWAK2mtd`vrwytJ<f9h004Xh0012T +003}la4%nJZggdGZeeUMb#!TLb1!XgWMyn~E^v9JlR<8SFc3xeKE;S`h(vOLNZGVfrK)PxMY~1@58&4 +JP}`*C_O(eufOLmfi23vW_b?<$^5LbDUZR7FEC{Tmk){Ss0+nM)lCV2?Z!lDqqMukQNozD7Ttl4_P#{ +>;bVLC>yd;g#k_>fez{keUcNTX6qx-hsgOH9#)V4FeZ&7T6r#n1y<&ZI{Te2RgMaw-|##pJibMTD)J$ +EP`NVnYLi~N-)rQ#Dyzu7YgCnSBdbd)08q#RVzk%5x8ytv%ZHzA>PP(&1jDu*xZFYRo22x%bC!w`I)r +w&z>MNKwNCLaQwP2-80U4F8}JZRxCQm^%SdyvduOuZZKnzQ%B#$p(wfmlp$EH~4Bbxls;1K3;0tUnz@ +**Npvi7-dvY9ua@_3D)MGG)CwWxY&^-)oVPFhiQvDa|6~MLB_HpwTxZCU9ASp}79iIL}QvlK)%KN#7* +cEBPngDvZBB3bxFBvb^2SbEd_{{sB-+0|XQR000O8^Hj4?rUa(oQ3L=0+Y0~yAOHXWaA|NaUukZ1WpZ +v|Y%g_mX>4;ZaA9L>VP|P>XD)DgrB+){<2V$4@2@!OXw^h2ewnvQtW+^DQw<aZ-G>oEiAhdcLt<xb7n +XlN$IhirT2?D<9@@q}m+yS%)<UZalBC$%y~ZQ~QPoOY;Lk>tdy7f)KAE)VrP^+V+)fIoh7}hjtGPC)J +H;!+{LY_D8lhU$EO|qjt6rvl-6k51+UpF>krWxsUb*wq$(tH8Q3%v#4sY}+lnjjvX;DjFGW;jQ+S0A* +G}lVv4O*Ua%P+N7`jpz<iqf!3n5<LFg{e#ak<{GoKG(1xbpZ0_*WIt=;>YF1&*c8E^?J4bPNWqlju#W +4$6Fm*xb@h1Ifu=@F7Y7N@LZuWe2cxm=Jg;opfF^()A%Ng)#7<?J%1CIO3K@Lms7Syd+pDnB$2$LYKT +cJ#{#k)X0K%M@4X<aN&R7WN=BpiJ~zZuq2eaYFD^!0K-2~INEn{l2p@^iIWWeaVmSK~o|P)S(sVlY-x +tm;5Q%n&uoV;=+<8}>C#bk3Yz8<??^`ryjmY#+HEiOoEvQg=H2}GQC44=z4hyIP2#x`bHCaJvU1oUe& +>L`1#b1;@tAzBQnN~d%s~VahLbhd)nh(Q5UyqBgPifp?(MbI!7m#lB9@Bq~(Qqpa#bLZiOL|2BS&!<L +ZuGk_IEThCq*uH&nD*{CT^d-)H(rYTp<`wNs{+zd9#hzHVpI|xUK$FeiDx!Q4FMjhfiS+^7Covjupz) +rH`BLPZz3lUQi0>c*%Se@EpW%jq<J5hPx^FH#U2I%>tlI9JFdvMiM}<^@p;}c+f1%##%AnA2^m$qj;K +0EbsWc&0N%)!ke}mhdxyFzsoD_~(O|LT&IsGm_d(d%9p7CBj|SSJtDQVB<BFI%-atyJJa~`Oo^3}nkT +9eJd~w<a+ISk~yp!_7foPoFTyB=%mYe0QD~U)LA&uoSLm%pVIO>@Tbw#8OL*_E?ak<B7vH|dc=Quu;S +a(5ayw)I?p_bRdl29JopWXfZezsa)-Of(f?!)bc{)c-L^hYy***n*gW=%9*tAoKp?Pc!D>kl)X5B8BK +mX#{=?bBB02+V9Y=~B|49<`^hsN;fa6E{NNtQp$vNxSaPgH0dBlS983sw~yJ8=j?*2<U7YP*iG!=3Us +G8`jS2hRS~m?$i6F>()xmjlsM}aDJ%70048pdyWS^8cJoQq85*XUL0?+Q!RO1wSxv7?6N_N+&2hZKOQ +fnAi0`I2pe_|bmZdf(k2!CO=|Ygun8SBH<yxJWR|jUJYG&sPZAs`x=M{^BZRZKubLCH-60y!_X{Oy5? +Z(WI8Ze1N3*UzJO_@>W-B6%RhkVMj!g&FGTJ%MNS1ye&#A=J^9yFdmOGA#Tz)e1+fo=iJCuQ+Q)P+zz +s+QN?YKEHK3408&GP#C@;;m&F3Y|JsEd!LL*j1CCz`DzC&C<#IvQOD5r#rx<TL_)15ir?1QY-O00;o{ +RI^YW2g^X=0RRBz1ONae0001RX>c!JX>N37a&BR4FLiWjY;!MgYiD0_Wpi(Ja${w4E^v9Jlu>KjKn%y +<{V7EH;;_sgpwPXv-4?clGU!7I;kfwZRNLjwNas>B_T6{q#7-Pi=$IdDY)Sv0q?25+-$6}vp<d7#&qe +)fs~E*MT%rK&YR>^$LTi*Ihmuw25kjxMA3A9ml?2XC{Ky4lr)|*$vQmV$Cb#WF7EcdP>h|mX?Kkz~ak +-o?zhoIz7d~HS5U);ktZ+wVn87?U^v2>0zLSJ3%Sx+7I^zO^Hah6sZ+>DKrhBEyWHRq95A0vaAVYZ80 +T{Ir*d1(8k&T_`z#2@{Bkwe~MX%C54OXCHr4*FP1#LAO1P;7(U8U6V8uFCZDz<3`n>L`Vr||I;EWN|Q +HE9%TNaALY%Ld-Fmcik`bb5!EcoEehHs0I8$`~4UT?~*rBOWnZ4F8Hr1JD}-w@1$t>~U7|F?p5L*V7> +eUrVe5JUS}9!8=U%duGp|1#ql=1q(_hiOq4wrYSM8tEs%vU>D2A+Wypwkpvd;{KY%?a08PR`1?;c0+X +Whywf4?iXT^`N$_&R_Dl25w)HcdCS!emOeZ_IZ`kNuI_c>#hk;LGi2q|cK5Khg+euv#-mjc?@?ur1^- +-G}r=(=6!$EcbqLTO?A+;{w;>@6jjrORHe}U{TP)h>@6aWAK2mtd`vrtPSEA}-7006=h001Wd003}la +4%nJZggdGZeeUMb#!TLb1!pcbailaZ*OdKUt)D>Y-BEQdCgc+Z`(Eye%G(KDG#<WOY5@>4;YH9E!HMQ +onk1GK%k|QO@t;jl5*k=`|mr7k}Sz?;%({HJVc84-5u}l`;Johrcl~~*_j~7wc0?zi#XxZqLxg=rRBo +Jc2{t@0`9TzKY#d~yn1u~>X+o>r;CfX7q5eW=SLpT0-&GDYv02=ZtN5;3(FM+nZg2pD^aEx1ZS{VbAl +_l*Q@}8wk+ae2V8Dd${Zf<xn27OtCTRo85#YG?upAHW_q=~esSwu*fm1I2wmToGD9tPZX>PZoC~s5<Y +Vs=et?X2Smh3xk|PV2-Qj`1)(QQ+L<plag!?s0a_07X=K^gx^H@qN2Dn;t18l2!W&q<=T&?9w2zBq!8 +zy;<#wHtzr^(Mf(~=fu5Vm)H%nXcWGGjXPsf?m@1X5XYO6i7ikSxxxK7F{lynMGv7H{6ZhdGR^zJ$DO +{j`((l(M-)$$!U}y?V~!j~CzRKVL$UxIjrV_kV}pSw3H(W!CC(V?KqEDo~E5;4YJKV>f9`QkCI6k2SJ +vJfTY=Sc>D(&5gdfab_cTY0-I{3T1HIKEMY|$En&B<aO+PP1~)Jty>*UCSfoMf*`{jT(y#Ynu%*jLdh +9ljcO$+c8P276yVHJ7F~69wZ0N+$wZ<m&YJm!lGs5t1imKtZH1RADGll*RWj$R`Oi$4uECP_P~l3sEb +|;SW{E0oQCbfjASYf*&9iYF#}kNttc0|W8HT<zubmY3Y^E9!XELB<%MD6vY6&@^Ih7TddAMiLUTSerx +tkSCvrWH3Gh*^y3<Dw5PUEh1zkW0LDa*K*f4v0tQqQVi#TmTK;YycONYW=;3N%olHkB8L1CJ|pz5R}- +gF1Jdv5eH{2Sft`Lp4eprB{yH`hlRT$GwU>9+5(>onRdEO6zv#yF#P!Fu3>FSbk5YVN`~<!QfFE5~&9 +Qj&r3q%#M5gn6$A5g+2(>UvI1ig+8{uNUF$TqBLLCJJqxWEi2F$RJL@3G@+r0;vb9cQJpPIF0zx58O= +;CD`q4a*MqR9DeMd`F0amKaK0rTluU@-6z*}9(VQk;5LrmO3Zg}GLga!`{npg^X>~F<u*TXIH%icUB% +K1UO0CJGbH^<#X(Zkm_^`8UI`6ooLqxl1D7Td25>rNfAYkoBqu`_jf*NkImSN6G@kD)6yUP6u)SMH7F +E!IUASxQ3VN39{PMo+)>nBF%VMp7?gQ+>_YYRIZf=-y#@?;>14xvaJVU*GDL1+6a>Jj8b)}{iPe15*3 +#<6d(=v6(ca!17Zlf|Fm7KJLlj_|o8LW|R|{poh>7%nvC{GqebyqxZxtknh|1yBed#>sFP<iy?^vbWX +y+qmZr+yU-4ISKw#nhaiK2Boa>=+yc+VI*HZm*>v8IO_^e<>mBA?{(6UeWTTYuA@d9F1yPOG}PH?! +l`4n?-^a@&UMRr$D`TlT5=u=6IBrxk#!6@5$P>TgJ(HR+#Ghje?K)L(bjJkE;aq-YWg_r>q#dc5|8h? +dN_zIDMTH=tqJ|2~2=rb=hk_lab^LDB@)O4&yne#(rZZz*cSQ`Gr)qwK_qx~sp<zTzN!8tIDq?G4PT# +HSy>HP8GE@<gKh0izDS9U?=omI9+KeId~fBYg1x(-FIfJ_p$fvyKv7ot~bc4&@@#rJcRL7f;(h<LrKh +(d{<g5cIfdy;#5OAbpd6@vCSLZIfzsc-*M&XykFmW!74pa!z&!-(OHm0|XQR000O8^Hj4?oQ~jNnG65 +`t|kBgApigXaA|NaUukZ1WpZv|Y%g_mX>4;Zb9G{Ha&Kd0b8{|md97M)Z{xTT{_bDFIyhKr9ic5y6fo +)n+uht<(7R2L%iiIT23lI8Z8ox~6D50%ApgBHLsBATIoShhU^lTe9L^h`d0{Tt{Z_EGDhhRw<%VTyw- +aT<^j5V+&Q^leVyE^ZXB-}?onV!c@Lraz!G&$p)*_i)u-&mbE|_j=nKhTHYNRT8vHX@7T1+PETJ2bx8 +tOD<a#yLkVSJ@k(KaGA-zO9Myil7B2;;sg?S9kks;X5cw6;7eStaRSl)0)CEx#lvs&?%4wh&*^-&)lO +pB%&&H3*kvg-moM%Tm<cnxD+~YouB8Ow5_8M44K$F)rduCP>|m$91V2UKAW3Ue&c4UDh_T&<U8k0>j# +c88A_WNE?-cA?IjK{5_YtD){j{7i%weVx<({jEikn?xfD#vhQV{i}GH4Y32-s+J4p6&9U-!{_)q_U(@ +&BU%mf#diUw$$Lo*Zflt>Xj~5dLAL1Hvi0B1=-j&BWdyjTp72t+z*w*~^gVZ45kG#Tlb9Q56ZO)A7pG +x>TCpPhfe!Pd6=4Jk_-e|U@<qt&kKt}G>eteuvCO_PKmwveZ`TE1v9T3khzw$GKrMXzM9e)yOW;Tre$ +YIOa=z4*QiUo^Cx1Re#KE~|wpZ)`4Fr7|~Hnrf5U_4Mut^O;rCJ6|w6e%})KRotA40*3r&43I~HBv7+ +CtR@iTai5xK>>yX3f%~vGqn!(*Rsq+@I-2li7JaDdn(nTWO-YoyHSqI40*%1q$7o3ks9~lz%K$>=Cp0 +xOElCB&R+xPA8F%`NC4`DOD@<A;8lH)8X|~P)p)!Z=+%26Ill`;Tek~Q)dH}r42Wz9fUS1CN&Pp``9P +p>1W6u8LI55I9{rX$yFF2j7QtGRd+bpSW8ebUcpCO==57Jucr9|CHGuLcJX;-E1_uxQ1R_LnVtKtQw3 +@SnV7V%1z^kgjtwg~Z<%!d5IqoEo$lIHO#MxjA4#+rUky;`|K|F&!GL?%D0{<u6#CW_tHd|G)zhY>hq +;40>XUjF&leK0wL&Ly6MVmt+;H*^TCD)mhEZg!Lb*vM{B20R?%yOYX1R-)IGzu+B4T;L^SC*>b2H!y? +Fn(RbQKO?$6rh3@I*I*|n6X*%Ur3TYlzE9LLUUmh#bdGF8!L?EfCH``o>&KW6o9qZ3ts#`0<e1*1l66 +<)Axq91%a$t%@1?%Mi5b9P+B`ZbSeUuM2ifbzhM+(4Agr}|3@E#y(FmGrfQp1U`QFKWIJP)Ir9zjsy) +oQLq7L0#jJA~sJ9dx9iit#I^s-;hKR%$*+8D>O^c+C2=eP>=%^$~$Q`(LG#5b3*S%9nQMLos`9|Q$Y& +HFWVgOD=Zx};Jj1IEdcDQ2fl^C2`RB&u|MxzCLXR-jGzg1E2YzxOFN30+waOA`RUyddt$U|fB==>2|z +2B>HFQ6LuY^gqzil4#!pHYzp(Ij#w-UEpkN>s!r1Qt-b!y2(;T%QDMhZ#mBDqca2m4I3}fw~wFitm-o +wdFHCMW_Xv5xUG6KFV-ofRCIA07k(#;Jc|WqU8l~E+l3oEczNQ%X45Aq;dz@%Ry-vSpoocp|j=8SsNw +Lv)IM1w|-FIMex=pwhQ))pj=HRLLd_^B-ox8tw48^2?wsWG*C2I{G$*toA2}nUi64~!9L+Z?mS>kk68 +pQ-kJKUJT<k)#5cMi(%y0>mS=~pK%tGdJuWUTSR|57!af^CKF5??UhxWk+L;9jbC`^&%t^rW&CK~`&) +#8wS^TH$m6$o_F4*(H%`YLHbt2Lo&d`7?RUshitS_Qx^Z}f;wrpO^k&R*ZXY=~yIhT8xi~7Z|h!bO)- +c6p=OCPQ}f`P=#!FP}F;1L~02zo)6g>bRczcvyt&5!=ERbc5=?XL94|1Bs&^x4#aWsR2_x@<82Jy`&H +;{#YC2VqQu>#bfXRk-7}{HRL*-D#dsWoksk&|S`I4&~|0Tj2^oz`L5K>dB+lXSush=>by7<70>)hz@T +`Wp)$gUe>BSOKux5)5$=yX18ifEt)qMcQWFp)~cq(KD%VtncGaOHtCwnLgXp9ad}?@KAo;buRMNzT7B +pBK%TP~RD;3}bIPdKAHThEX%(Te533pW77&&-rmemTBqr!n!FL*}P_H9Fejl#>_31l!{6VaFTVNTj7= +@QZo3SWZz!pqeYhqr;{v7M+u0O##*cIe`#g*aE!t~RK<asX9RJi4zlRyIFj>A?$p5F-$dFtWO2^9GHL +=yX)kaf>%NzY5Z6U3L+cJfrUgpvgwcYQ}^%;Xj)Fs=z1dYpW+HiytWb-`}Rbtv9xoFw3gQx{5SEDwtl +OvWR&#U2sWUwC*pLWQlhV-r~9bba``TX?~KR8Um`AZCIxYb7fRi4&wr*e~cx>Yj`@q`tf~Of0KQ%->K +{l-Q+UTxMHY<PefBCxCrcl+^newXtd1ILn7&zqSFFfiPVJ9I#d7dE)P7;$L<f01wBxF+t4==tv4I!5| +|7Av91z?uEzZdhICPD9iR?7&N&}%wXTkOQ;K1N{f#0z>%_(xfZ{*LPOsX&r$gjB}OY^;cEZ{OGGOEG! +|bFv$~Pc$Z0|SUax##CQIX!T5W2KM_=gh+*7{Pwhk^$ML_+sgNUJpy4}E1S9f<ech*wa1vOZHP@7$#$ +&XN%f;u*Df=wEuhMgI9oZd8*GinS_LpAOJ3c{|Z2ilHRD6zL0YYsBAu;juHjNwP?J;5Y-fcnIh+6yyt +L1X6xDl1nhk?Sp=TF^1T+LaJCaYxGsVy}3+$1P4F*a;4XC7dR^_GKG_h)29UotY-GT&w=z0%oMfH%n* +F1R0xz8H}6Wl&Qso)xo{#GYW`GGj;IiW)ckq_F4%GV$KoBd<|&FBL2iFlu>Mmd4w|K-`}NdE>`X4b#0 +B4T#K+3)VvH7bi(eThex!xeU=TIq^q8Q-&+!GM02%X1BL-m{D7iFG5g2T6U~WogQ!j&F3MuhIGEueW) +}bLj^p02To44|5N!Eg^iW|02HtM|50ZKeeH92q-R7F85c(%Bdi@IQG%o~i&$h_6K?~g(P4C*WbXPYh# +y5I84>+1y7_ttqRywiiC&^TGjN&i>x?J98ymFtkRn8j`1r%{NH^z*Pjt+}~fI+3I2+8K8wprTL$DRmv +38KIz{lN&=jRm}!q8WT^cP`ozV6`~f$z?dt9UF_GRp$Yf0p_JA%1`$nZa&@PZA>mp|HbX~?bXR*1iv8 +-H3Kv|0&6VcU%x62Y>?0%Nmc-CTi2NDC3fX*nJ|mOv)*>#yFp15iga?avKneVsIx-r;%926uHR_P_Hc +Z~7m>BiNo>LPVSt53=vAUxi@sso)y)TN)noR+L@~flHpT95YNri|j>9>D*VTJ42aAAvc!?G{v%>BP=2 +4`I;@CGI)rhhj+!(BY`f13VrX4j(QAItEUORVBK;(a7Gw9CksWsaDw6${;B9ObC$R(Vu;&=|NiBs%x_ +(X@%2fN_*!~?5A99Uxf8J#(T$$`tpzFbRaoQh)*XPzxX=Dv~r;Kk?Zmgi>n8ccv_Nnb`2fDWIbW5Cs8 +RkzpVpVQh3-0web5KvU=Z8Rm4>1%gL!xdP?OgkCQ?FFxbHlHn*%y#-AdmD*olFMsn+(gE`E4I9qw%Me +-hUFdAkU=Ri!pK#5M=`h&!;hKdy**+de%y$6iPM&G3Ja2>FKHgM><`*Fl|Qc<1k>q)_~gkcRvLvs=a3 +i>FddFG-RCO@f-ejB$7UnT>B7|(dFE<w-QrDCIGqnycB8wY)+2?0`%ny?{;@)2mGe)+Xbc~CUC!Q0Hb +?}~{EC^T&o5JmPirq4SfFL#+&{m}P9~E6CrCj<@Svm{D*UEKa#MoG20B$->sLU*Sn+2}RmOa?>k<-|% +uV`Q3}$@Kf2iNks`~^B<M4{nPT2eN(B1vD2vI4<n?uCZ-ULPV=Wq-L7-9b4!2YepLy{z>QtPh$Zfk{e +*5LLiHCvh45`vcYdThIuy+gv89TaAC7f7W#9S8hUiRy2E`TI<>Tl(dDrJhg>yrjL~;=LGMPMeLO9X7Q +@$==;wn|;BG*;Zh^!kZZuMwOsTM`#{TIG%{!4}s{H-h91d!qISe9ZK)NX39%}b23x?`jKkv*GGfdB{d +oDEt%E-d!^3hST&B81)~G;fM5)+&q8&mX7KHl*iC%x&tVnm2fXpi<bP000|XQR000O8^Hj4?$+w&iBM +JZj`5yoP9{>OVaA|NaUukZ1WpZv|Y%g_mX>4;ZbY*RDUu0==E^v9pS#5LMxDo!YUxAaSBWX&p&GkJ~- +JEOd63-=enmBj8@ntv=2}+15f=7b3)lBl+ySo5Lf~0(z-c8F7wnPB?zR&JLX{q)siqcxwrHCRX_k}7o +<C{ulwHA^2KAG6}qAYXezDO-ftyEUI7n#~_WxjP^RTUOo@7z}{_C+c)F-ehUta2?LbS5{Br+u^MIp2z +MVzw2s2%|fZC#nqFBVW2R>j$adXdd5ow@cVo<~$2)Ewd`z%PMyJMPBa%R_=8v#PJjQP=Ffl%*!8M{Sc +i!U!Q#&y?%Rnd2#s+%#n_~emY_B5LKVTX?_UUxr}wdE`Sl&stnjwp``+z0lPjF;yVtn-sbRTLR6w_ws +H&eS#&)M*hbZPvYK6k8P8=YVxV%EEhdu*nq8Ez-`YRi3jKoK&7&yid+;l6J7M3-JgJyU$rY;P<$)!Zk +`z_QuJY`_av>6tuvC>y<)UJG#~~g{0q3`w+VCtpERBznaDs$@M087(S7hHgDe#ZC7cb7E_2qY~>86%h +vK0B<G@zyRtLN*N(f7~S>le}4DVT6I6~#{Mm-jm%vSrNUov>S9um2elrPZ_)KP`z8ETKA)<81>5xL<< +6jGdtM#nZ;XH%*YdgJWO!!YmP~)vHf%zAz4T^yUk;{Hk%_4KjO28_aRmKTm7-Qt#R*1roes6@E0d@lj +dQKN<{(fp)`9M5v*o%R@^PpMw-x(!5D!j=uA^jIbFI2h0{{ysDTNdl;Rs#a33pc&;|@;jOjUbUJ-WCo +77yCddwKBX;~ws?u#U!HzzNAPJ?8qIo5<bkR!bTOW<yEaA>Ds&=XdkrR;#EkOPcAKOEib2lI#CXdSAw +cIM9?Fr%+Fbv>;-SMmzW6T>GLn%Oui#(Ar2ksESdIwhIzNIMTc7kmsAQ`b@MryD}Lx<N|Esac&SRLw* +>3f63-htL6d8^-cOur+FkxHmrm+3P>fSk%L)P<xg97{94C3xUgAzxP{95kdr7+z<ZU6-{O*Qyjydh#* +l5Xa`mF?ifd`qBp8@vJ`@tH)5FPx@!_{}K9D#aE@elL;gNXH~2UFr!5Z%ZW8g5XQzlhj?Ih1sk=3q=_ +}eltB?2R~@u&BZzrH<4oHJCC6*hhn$Wj$2X7dJPrhl$pDK8hmH^*pwbw(F>xDAiq1`l`4CjV62^;*zg +4?$F%D+~2zxHF0&H%!l84lN4$g$^jWfaFV_kr2hqd$&nnb+b$;uw@`j%rr*!W`(cQKuiHoLlluqaAVi +5%Pyp^V_cjZu$sI@P+A8|c@n){xYCvCi{C#fBgR7ot&I3W%>{jBF=;F|<4~-`iM35-qR~q7h>@X96l8 +c7$C5b6Odg!dhZsG<pe4RMJt0OkNi@zT9(8%qkLQOpl3`c!VEo%BVExY~hVNTQcw-;!Xg45Ye&97~@$ +YM;PPTL0S%Lod@lK=eiZbTF}Lx2H7C|-}OASa)BPS`>C6}L0}J<A?8w`J&owPnxX>J&Pia<>~KAw?FE +w6H$1CEXLD0II_0IRA#>(ldIhB8B5ZWGj>ZQZV2uxEbDH>#3T#2E;D%gj(#PLmEOn8xdnm)Abj6lq3> +KM;rEa|g6M%sE=C1L%BGZo0%hi22c-^!bWD0Ltz>6`tt}tcpB^nOp;~-6)!>r-Lnoy+@*g<eTa()1c6 ++cvuNJbq>*S^kpL&MR^%GO_l2~>1D{xNHIqlYVI#ie}TBDC7b)WZ^5q+V!6Vd#n5k2+suKvbAKhs|pz +I3DeCLxJ;NWOLYboQD0^MG1wv)Q2WlQQgOT(r&g`$xsT<Gy$7?5={ZIK_+cVJ&$8iHGn}ZpF$ry4WY~ +0b0eU!e~W(YC$E7b?{t6$Yst?w)m;TFvFYETjsEaO`SGis5E0e0C<@(VY4SQW!gUxM6CdXsT@&x<dQ1 +<G&_gp81dz+I?a~9LH)C{Z)^>k}-MUP@s5}ZMP1JUFHycC-WCk6{5dwpKVXrw4O}4ef`w-HQ!fG^vn* +MGg*;dQek~X(LZyxBz1k|oGIy>I&80>;iU`}0Gq{-W`814E`*!KcF&NJG+L%`mMm_wCjmD<CfLj|lV2 +IHc@A`9KJYvnYVvqPym>@%6)+FSyEc3b5`Xd5vt@QMO<;8=rv=rW;8CN5>6D+p+XAPp^>%3-X_<iAM* +qu2(T^%7(%E9?Xc1yr@<*-)B_lxiW`qNlwR3!UmdEVwJOaDSWN=Q%WjseD*X3t22bd|WokNbVa019KM +y0lTTUbL+Oz7S971%H9E@_*mjX>htGw@b_!6SH^*(k>grWj38`zHC}0GF&Z)bQbWnm$pvRwz>7*(UCi +|J!(9G(nCj+%)8svm!J+<K;C*{+JTTf+$Fjr{ry!-!$NRNM8h9A<wm2Pm(qDrm-9m>rhIKbZJ4@hVKM +Fm1r>RCIpw?nMTZmZTI6?ppF9Ygzxy((Moz|Hz5e2p#DMlw0xAFfrOSmXHA?w9EUh)`pvtHZtLwD@Ps +@CYzn}`Uscy<rH7lX_!08xPFCkkJUf|Lrw7e1G&-tO=n;0!f-_B;nZe3J>o22d%*OWn|}7Ps37JJY&^ +et?x6`bAVKk!cE8lGF7&cn0rY!UUpxDf3jp*DSHOjVI>55i&JFcg~hGl1=7NGG)T{Li2=cGflo&pPpY +_K8wztpT2$r`7~XA3Rl1R{gW^M@W(&>`7eL{+p)X3pozc04Ih~GM{muVv4yVSj@;rkA-!s-hb0`B#eD +X=AAg*+*kneF(M%nT7*;&<&vkf|uzMOWTLrfw$7>xyO-(hAGbjW2@v#!w+yr^^7~P#2Vs!B%=(5JUb0 +;2QTgWjgdA0?`^=^;Tf5u}w(>hOff)+|Et{{<y0(srLt!KvLSWHYQ?T`qd^qEaiD;pZ-K*8f%NF5_1n +`5YLprEo>2QXMp(FC;!jfOS`$D(c>c%jpa@tZy*CQ<&9=UXv<5`cR7oXp(AXxs_)H<1aZ6P##%Y6@eu +-#~Z}>j?FZtikpW4t_Ot4|p^5q8&zlwq#Eh!$~a{_Y?vUhqF&J_FFcah3}Qj=Z!QAc!@i1<kNS9<4}e +g3SX>f-;f7B=1R=%opgfCOt5=?i`^8s6EOmR8^W<sW|?h>l-a?d-sd>^c+t?aGa7kdg8#k6f04C+T}% +J6cDPhZ8+7ROb5)T^J0m#&TX+ufjBA>Y9_aM&2A^KjNVYNTTMPLOWPc372aZEODa*M(LE;1RlqfX2db +6g=0yR`TjNM<HL0y%3E!<rhX>U3$fG)6Pau{=wcnIkiV{{RH2-oX>UA(y-cNG=9&$v!G)=Cf6!)F8Q? +T=(biYM$Fsyr$5KpVg>rgD27XvPiqlU4YbXU5xkeE!>(9-qz?%&*?p{|8V@0|XQR000O8^Hj4?N6Mv) +%mM%ac?AFf9RL6TaA|NaUukZ1WpZv|Y%g_mX>4;Zba`-TZf7oVd3{t(Ya1~Tz3W#D?jbGMYnnh0h8{| +2(oh;gNDnzV<JH&_-IW%7*xi5M8ENe%X{a$~*E4$a=FJ<;X0t0Fz!9cy1ltcC_2iOuJBSIBZ6S?=yjc +f>9U7&c`f(VaU;)X{vm63+*p1OfNZxmFAjpw8jeldweX2-L(0iRbn!~}^)~F%)z15u4`arPFu1(f6lu +e_&X%s%#F)B#qvv|s3Fy?bjjskYwIR9JW;B%*8L(-5Bi8Nq>kh!m3cxoY~rKMyzu*GN?4i?HLz&1rd{ +(|!hKfFGuJu`Jafx*4}GfH$(!hTP|5OUp7aX)tFnBA8M44QIq5qwV1INFM{C#QYDO($A$YLP3_fB_Th +>vL%NkF5{tZcK(*o-e0|iv}J{j&p9pih7zh$cne<3NZa1s7<B17b%87k(F%JgJ*rhFTmhg-g0_gqy<* +dAL_7<Q!n~W2pck%4<KA&7ilpnKh#l4oZ-2ZQg0i4FS5vhUh5}LS+u^Fp~k{>Q;eb&V+871#8Tf84~V +-yk`WIT64<gH(TZN$2JVn;t8<W2Qyo_QK@_PrgOk4mX<`n$jG-8S$81|-497mxCo4o>t%0g#Y@ZnoE! +)tt*9z-E*cvdzmMz4w3dyx^%A(9g%xOIqlbC@z6fag$dCKN!(?UmFDw8flSSbbkDN@Sbt+_e{*1E~bc +CmRmpC6BRkL$~CUoXF}?|<Ij-rQc-<97Q-XjMWd^p{9Y!!6v?b_FJ-A+DCoolPch8lKs5D8^fgSC%%$ +OmTT}{_&HV&1OpdTL?Z^y_Hh`A@T-^7GqMxCu_#LDSQ@7<o$=TJ8X~_dp(CuPIB#N@6PxEUGeSF!3Ck +2@ao=7R}`{;`hJ}DotHSW1E$+aauV?*%YF#l&ha%>aWri!A@S#W4twk}eOOI|X*DIE<PIeFKuuGB08m +Q<1QY-O00;o{RI^YcUUZFx3IG7!Bme*)0001RX>c!JX>N37a&BR4FLiWjY;!MlZg62^YiVw0E^vA6T5 +WIKHWL26zk=sQPTI>_j*}t*eCHIo)X5oboglV>G_Ij&CGIX8t)wF<+nZkh`^^j~Eh%Z;?aKlAZ~|;g6 +lXY`*Jmj2?d@G^kqa%jVv^^H<{3+5x)e8DMWemFz0qjQE|#3l%RDb{MX_LMxmxi;Gqo)1JYzEsgsbuf +31P5YaaNTA-iv~1B&>BUc?4`$>uP<(l$IjZ`(>p?StR-Kt0Y&veVYlD;6nR#q1P49_A@?LcFt%n%N2` +b!!eGTSXHIeESae?uQiX&^Jrwp^K!8Oft$xtHFs)R!=~FOo#^IXCvq-w-aLL56+N1jD^W!;?2Jp0JK} +dKr#+}fj?)5I<)A|tJdv`LLu9zJijXVrucZw~46c8EcpRU+zc@KNKYep{KBcjX7w>vw??3d0KAgVw#w +ObrUkQ~q>+(XOE;DhDuplVf-BNu2!`mO?m;X9>`EC5}^6c#N>@_HSJ}`VlauHXb!zpl2W;vg-?}XA*_ +QtxxlwI&Uc)l#)aWopC{kUYujUl52*Wb}t7{^7j0vDLTwDZfiZ{NJTIQhoeKM?r}VGlcs9F4SG8xgHo +v(Jwi8?&PPcS6I1d><Znj5IQSz)pz?ncZ+T(nlGe)r&Ad=BqNRbIyc<HNb0c5|N`Cf{7!`n7t|THAI_ +aZ`XQR7VJs%<e@8O{&|(`B&X*jJBmrn?~!u^;mFcjN=N{4y-L)laANpCs(8&cMZA5_=smk#igXFd;HJ +zWr?6#mgRY=UreL}N3XUQrQsnCh^9?d1!efZo$gJ^bLc{Gd{xU<7LoO(Yz)GhoNM~`*lML2D#}2DRFD +H$9G3t(3NIrH2xyU%(^@Qy|CwIK+zPTns<N*@lpD4!^R)xVqFlq09{4p>BK`5A5#tWuk8YJSR$ecHL5 +ta9z*w00g5p(trcK}zIFi0vc3*vxQvRvAiMi{$mM^VI(RD?@R*`b-pbCBB==UzgX=TIu%n|y_{rz{Ar +tx=YV>X}4!ZPMh0z6r=Wv$D(^S9?e6D5ho2QRR?!$@PdY`WUB21xbS0b&ZxWZ4i@CL_C@@e#0fi8D%G +hn=cC>t7jl2PjxBRIF=MmO`J3yibb$2;!5(lxC6&H13HuMAaZFXt4Os`j+s0KB`FOgTO75W4%<S@8mc +4D>{iXDEH;B=Ltie~5(?%McSSchJ{$Y;FUS7uUy;HNT!2xm-Gz#81*$i06&kj8Q!KZT)4P7q56<a8!1 +jEC{u;+<{Q{k!fd|Gc<=n1{$}zIhtX3+I9nfwhHyMcn0mkv~W-pU=y5-)VYd1R@ZG6F*W%O)@!z*vys +l)f$OM4BMV_#6K{JH@A5+l?I@fW)O6!Lva0A<SNfK)Uuj?r9Q6Of+i7iySP-FkSVn@ePGARcgMAu7}8 +_+zu&#|b8SQZM+tC}?H&v610p#Mq167!XMmgc)bIQlMOHmMFlKFkh_|6bWE4PwHGN%9N(IP!O|<OMo< +rpcpV9b~bVpmjFz`e{A{FOTeg-FX}vzM(h<|&A2qK0G!t_lc(S<#!3$7um)yRwvc6AO(74n+fwG)#3Y +-&bO}|HJ-pjvNd<9@V0aGc4A3zmP~>H|6@el(H-ccU07#vcw`%IH&C+F3EI=K#!o&nFV%Tps2k=>;bS +CK;ppca*Kz7$c8*mpkDmU(fxVA#)t9aq~Mj&UlinVye&W5=b3r8PB^$J~zcuX0gbr^g4m2sq&s!6-Yz +2py+5iXcRxeXzX(Vo^BTWVB|DCQ-mQJjzWX1<?;kPj?@ucKxo-h_DpuY04A8mvS<yOyG#oRP=m>hQYH +y$Ru;pzR5r_$nseTwvl%h9~40c4yhFKa@B<)_u8GT&ZM%+6a5^@CvYvLtC0~{rMO4U5FUx8O(0MnJ~Q +!3x-*hwN@hIO)A}_NMzHene;|vA{6g;OrhOG1omGg+VRbKvB_PNp33G$#EVR!$_#V@_wmLMJ@r*KW-m +I4-@Tmh=~~H0Jp%;r)8F)%eNz?z0AqzcbCQLW9+R6=WE4lZJ5WEtjhWB}6tf(4Jisem*2O2RXOO~B^% +ycuHVzaNZs_6)-FI&r%n=1Yd3A4&7yj-=S<++;ut#tU`GSEDVRoNa!z6f_h8t>JwMOa6*-s(n4nx*o9 +sn<>V~Ys$DoXQG@vu*a7v#w{AplOGJ~oEjBH8oj?C|Lz%@|#X2r(6T<pBrW%<NW#c?XPd*kP$Sph|H- +RpRTxdG4Zk2oasfr|0iZUWYhp(jvY8D|=KP9v*I2?-=@@Po~Bisi`J4BBNh)1-ge-*p#w~sWVuCZIPm +i<5ZiiT$+kSUJ^bkpFMlV_Pc!}`;Xa|jpm-wslc?hZXgY0oNbV18;IEkUx3vggfGMh5X_&1UJQl=CSN +dm`4Zp@CVXq62+#+Y;lxSx(c-f$0Qbz%IBDZ+Hfsd(2*x)Z@pcaWA<!VF+2_YQvGUGo207jBCKK!`k% +PNx$lao44}NYFS%8&%$Pm0t3iQE@YxE&#iJ?6~heT(h@FL@r3qDZ6v=wUFIe_r@@i!v}#@%sq)Ead#D +CNFB2HlP(uRO_3KoGnn5zRB5MJEyu5N*Ub)#G||dq0JrfC>6J%k7LW$84!}rH&2`7GSk{hOOU$34#MW +1V4b7t+_flJbd=muHY2#2|&|L?h}iml)gyz1ZzjIx)Tg_4%U1d>;Ob{lfu4GAUX^#wxLsV-sNYh?dyt +p<2XX0^#*k4<UapYh+gI{2en=eaoCFC?(;wTCb8sM<AaZ%K6^6A1Y;uxd?k}q$3~RU{IPCvuP@RjOie +p!KBFLxgt2WhpW}z6w3M>0bn85dDGs$2+@z9aR;O5)#4s!YV52IYin&M;W<Y%g(6wIWqWGkSk>q^|(! +GLHbAr@*^aDlDHj%&+oh;rYxyX(vU2bLNq`^&Mq4GaWGb}hFe^J!D<1<4Y%T_0$E&+{fZA_5M2-RQIn +lk*BuPJz@>;(XBF#{|>&y)Y#_J3+yyqtv5Jz}7E?6ceSa`v=-mu~L2c5>UBwK2P_vP7GMdMzNe>SR?B +P@UH~mEzPOL&P4iR%YB{h|?cTXz1rPitrm#*tqcnLeclMi90len~eVJJ>Q?y?~Q+7gV#29#%+FYdxuK +zHg{E$elp$N29mX5(^>;sItRrzU}W&MJp_sI%`vus&b;QcGk#RK9(9|?D2n{Pu@S_<P?9G(9ql*o20j +7065v67KpmD5`T$zo!2P7R9ozd~v%T+t&A}{SHGA8U#{mb<CjlSK_VBx>Tz{_pZh-i(71(J)ZkKtm2~ +y|#;*LtW+h26`()0>~K7;sM+)aPp4*dTFU=KT=^kKmNcJA-RQ|Eoh5d%%vn7ulE|NY4kL~N1e{OkUUR +k9E%Q;=~I{4W>vwd3kkvr_29vCa*5Y$k@<S`|W67kQavm_6}7F&;pxZneK}JpF;1{Jn#&gLKpWrMmg{ +$qef4l(?ZUORjl`I>MbWcfSYq<-n8ApMMD&EZ)c7lhJ<xP)h>@6aWAK2mtd`vrxvA83eKd008#|000{ +R003}la4%nJZggdGZeeUMb#!TLb1!vrY;!Jfd5u(UPunmM{+?fPD<6_TuvqtnRbtXqu?=l>6QYw4Ly> +8(#FJwO+i9t${r8=n7aCM)_)G3Cch9{&wkRuY9B3PfMzUKQMJuCAs6@r`HL9gH%!(&g>NQ$c8!5#-wB +8jr7J*x6%z4mXA8zomM(cI}TFY(;LOC>wOIAA}EpyvSsD}>W^5(})KK*h&{hD9RXS0jh=O_}ZJ?2RSb +OP!S;d|wTCio1l@yTT{SENQ!w8RxWpv$SS+%5_%F(EN+a1J~OP9O>1x7L{^{4Ry#4?W~<FogiBDW1fj +v;(1hvki_v23>6w%(TL2M<*X<D=Az;ff>9_Z%^)+)EhKO+Ll*wSL9Cn5)&`KsyI@E*Jv~f->Ft>q&e^ +a2Tqf;5|ZNQSKk=Gb%D*FjgS)V5lX(KmET(}Ye#}wLc!Nf>5sK`xNO{s3eK`Ys$f4OvN10)rA_IDq%# +m`&_ge22%**}VwYW>Lcg_8NgS%A(F~~*pcF50+>a%FG1qo{ezP>akaEvzX;A+eSU;v_YN3aLE4S8rhE ++O0kBy*QZQ*GKNl${&jjmzA6=)^55DIP3Db^BYD1p~~UltNiqd)ZLjrp67dJMLrfpV7|9!kC7(k3Z&9 +{%PTD0F1aLXnv_<a_4Y@XgO6>R9VjHL;*gC!L)^9C8%ey7-yO2k>#R&}Qkc7gc=qX$q$&r|&bcRJXt7 +SXOQeymo~)!fja}*#Scw2OCPtO>YsaBzL~AkaHu{yYV33#R@hU2uKT<&!%mEmBEUho?x*BH|YD|{#Nc +w`HM~rN3EsJZ*k{}azW4BPcCabH%6Q1z4;R>t&YPu!j6a#7Z%!_VC%|1GjuDo0#^tNT}P8{h4BDw&ld +at?ONJ<^n&-KjyvurZF5J#cffydi2eakO9KQH000080P|F{P!j!+Iv)i90O1V)03iSX0B~t=FJEbHbY +*gGVQepTbZKmJFLr5ibai2DWo~vZaCx0qQE%He5PsLMxVaCO2S+W2?WI^c1ex0fP17Jru@zmx($dN1D +w6_9*)_KP_uY|}CA&)2)<6)6K7PEr@4Gv?v}OfDl#OpJ3IS?W8|y*Nov9j+BEBcdZoM*#h0=@m)wuS_ +V*BKj@1D0VNlHGVR&^$n_Gq=Nvc{{*Wqw-|R(s^Dx7TmQ`ERrHm*VEl)z!t-3p%wNSbmxSeFEws!liP +43a@Lg3>}gr>?~S1ZN1JG=r6-sDuk9Rig%KTi>vd?H^0ur?c3YC*(-5-aW@m!XXh`^Ud(RA&FsbO4?? +h*<z`i@3e#}99VwkxO@SvAqQ}(<M}1Pu{G(i;`_p}YN`L7u*FUdi)!;L48~mq~mBYy>nIuV4U<txDT9 +aF%(FIzuM!ilaF}Oz@89s${0w>R4ZcG)HN2AgC67!D^C^2+!HkS@XZLw6JK<Xl_?Os>X=gTY!`|g&?! +IBIrbZ|Yph995&1RPJLr1r2@);F>OazI(5SE#+q+5=;_Nb=Bq`0q}EvMIf{DXmUn)N^Gt?OEOvt;I!C +Ns2n2{SC2OlvNu$h3C)@MLQH5<h0jg0UPC)P;YBF-W!tLVd#&7!Q<|0$SKl(R+iFrc^LQH8n>|@5&ab +*-^3&CNIx9+1_{4~1ErlR5M<ByDLiMDf$>YU8|842$3f+Rv0p+`ODC}}>Md^-dASgk(&&ccX$$fl*XK +Lu?fds#c(QQtcc+$rA4klLFoU9_$3!~QW~hHKf6_rkSYS#B=SJRdcBWTG<CL?dJZ)*J0<_@<C5y*0&( +S%c<UmQae3+bGH2fu1y&<=xUuJ(9rPIzyV!88@NaoGnZe#5H3A!>h>huV6!mgK{VULrN1zn_*%u!YPT +{=0Ha%~hP$y=!^W?kbZ2F;uCQ;xNVi`O%2jqQMUpqz@9Fm1%5GILVrSN9wEa1TWvpd{7A76=C|5JG=+ +M0_Nt?K-Z;T$Ku$1nFV3L_NG;lF*qq*VMIfRIJ{>Jl5S>IW;GO!U&K<B|e1@eJ59q^FcjQ=}5k*Dzo8 +1#(130r^!Bd4|R4DMQG#E`m88a)ONL<@{}QOHqyr8EFr3mUs}P@W*&S8vfEb=Vc%0#!HxhsQx#?25&j +5%550j?MnOs#IjM03>(CUOA>p}Zh3pAg(ROWidGA3SF%XL-r3i8ibdC4ZgPurKvZ;t5ngTe<_AqhkX1 +hG32U;JU@9S}g-mfHrbTzp!%qffxq2|b$mAO}I%;1c}<Atd4V==nknL#^8U_lpT)jKciOeV*5#r-%+f +c4LmaMJhmbhLyi%*6ixEh7uIDFbxp5$O?P7XgzV`eGdK3u~G>9fwQCcmk)VFb?t@54M=#b?^OoRPu0p +_~rr4K996HiD-xAllf16L`{pDx1(wf<BJWldfS`bE5*&sv658Ii9Mdcob&?eE=i0t=hQ`5*L^{M-b~u +Av1<VX3OlSzMi47gh(g)kETA{OI;QPA-IV!%8p05v%hR<oGT7xbfVJ)nj+Z@Q{c~y3JdnxpH0jj2<Fv +($IZhw)pdIC1VmlFh>CJ>v8&*;3>7It}eiGVG9EbaUb4bncW$XBMN}Wd|^8DlW4>>E0hC!*U<DVM*eN +PzAPJeg;8}2bXxSsNZYUXq?iXe1Xn>U{8%IIoKKX`}|I-_x+NA~>CrCMZd2Y%qr-Xr0jS)1I0a(}5kg +gJaU`>eeG15ir?1QY-O00;o{RI^YsXI;N32><|!8~^|u0001RX>c!JX>N37a&BR4FLiWjY;!MnXk}$= +E^v9JS?h1xHW2^rzk+ixL;@VO$)_Ph3UpoC1#8lx>jPa72((1oY-C9gskmN{|9yAIheX+q)6HlRi{d? +a_q!K89*_TO>$++*o3&-8WmPIRs~Wbdnp;`U*-GjKTP=hr*i05eC8P0pJQ~fKYRS@c*6OwqY0Bi1c<` +yJidKu%JdZ|py{P7M;AY6glFK5gd80(*2;b9_dH;{BQIvc2x2#{oqm^09I!W(DnO6<4$Zk3EO<FAr<p +?rfR;A2%A^#C+$(Lda<?TFegsR#m6Q1sOsq{rTtMG3lr!5*|lT^v?Ug@tV6DCT9CIFJYhO*S6DS45I@ +0qBLSuNEkARvp2{0rK38x@^rmzJ5n6q@H;^WCI+U8DCb&E?nkU(;8AoWJ@r{qX7P>f-7RcxJX``E<nK +)AQ0&D8=XA7nkO-+ZD<|-6rf~Tcf-Do+laJ8ypn_!}c^8;Ndr(|7};evQGpMQ7EyG%phs>`TWCQ7w@j +pSMM(0zx;Ud+uL(?#-ig1dmh7EL@Pk^%)vI93;mYXqLcuYrnoIDxKfOK=o}LDy%QT{AYR-GtDEXh=D= +GoxMoXUE4Fm+a*<Uz8nXu(T`@2fv2hOWUZe3v;$+a@T+ARUWhr%<MoJX3iRV8tQB3+<&G2(TTuvEjeh +q$@u<2S0bu(e`5VNBf?5Zk--w)UYGX#f*oggVrykI9X?x<ixl6DG!ZM%n&R~_t}I%2E-E_I!97<cZaZ +r0sS{4@g6Q~8+Afkcw!85lc5xJvMg_#M3?&YK2uBfw6Cf)3crcD@v)2FD6K3U3R|1ns5_ipy0a0Zpu$ +(Gy}b3AN=?iH-CS1$)TZMhlM@k08w3_YbG=f1JSgCD)t8+q?luY-3+M3ZF(JbWjk!Y2J(56a*TUkzow +sXS_FoFv>XYv3~SEwDCwt>);k-13K?`{6;`+38k~XbT*feU|<W$P7I<>$)IY(qNfZ9c)2$IQ9%Gn$p3 +IIP$vb9QjOYvs@TYIwoj=z0?D<vTTT9`fhF^_36d6|coZ|pb9JILZ?r;)MC1F1XWnm4kJ$L(W*|+A?; +3>NKXld{#;-|)r~wE3ffAvr{gAqtf#qfehdizT9NL@^)r9H>Him;O`I=1yYfUg9yZ39o06U%}Jw{&y% +PIlhL4+?cdzIk$JAu9>HE{`!mzjXT6~$U5a%6}r;9cG0XF~-=ChX$^w1e7SR?w?JZ32BV4#Zw5c*l6L +;%kMfiV_#|9ybcaPaj_&{nF_?Yl|W!3!U{Ud4wxn1f*RSb=k|)C8{o@j>gZ%6LxGtfuD_B6!`8s;CBN +I8^LoMl7XW(Be(}duf-r(-8Y}Y!T{Kkz@D6Y0CEc;2UE-P4qB|-=ridj9TW9vM-gx2k-jb9++q0)jMP +gUhRmk(ZGBp&siQe_UpnWVb+r%*@i&oaGXEJBA*-HAbC1ORBRP!H7j-`-5N)?~<1)<ocir$zQ<6bLVd +64f6oA~e2Hu{8M(VAgQ4m4{sJW6E@q(;T=Df+3&2%5gFpBsPKyBb8m?Mu+9AwJ|&RaEWa9wT$;vsYP< +&X38x86iyI}w1`r6gawk$LJ?H}m5V_@2(!+a8I}cb@D{GztymsO<Bgxp*4FpMviHfou!UY$3ASG^>^n +k#Z^_EvzG}bx<=bjJs0fj%3ld&AO)OJrRPgCjvL_LPl1Vn#&UWzYQY}R;GTwR4|$$SWVvn|2E7GwT#k +o)t32$y*PH?D%-nimRCZRhq{;jJ>XHV5O)VS^ihXos+SS~Rt}m$A!?y2L3)2?0->FP(pYz?s6y?E>Mk +S4*UxXdB5X|9tH81KhchyjZ!`TWBCyQia4LcE#gys8&R~bJt;_cKp3z?9jkiXoH{m$;d<#+fW<bU41v +~yhSTCUym5`FQIT|ZF34FX~gwi%nzE!fX$&QLMFezBnlYleAm#&s>%<EB@4gCAv1YO1%xPo5yyR48|{ +Da2a>bCozng_x+NhVpQ*T5IMt=h$ZsMF(?9fSsTME%YT!K-mNr~$E9J}T2$L6)UvZcUAznpkEES~S!T +O$lL|^b=ICAL<-pQq<0F#pNk#p!Ve{YE(B1jhos`yrQT<KX%X?<|$m~q7)5`##z-gZEcGFpJHwD6>eB +crD(K93ru>9uo!-5OD&h8+g-z4zp9%22vU>=Cqs^+p1EIfqE3ZQ)+FE+|CcJ1Rc(<IknrFJTPXZAL=z +eWdV~NTz2eag(bgY9HQDQ!{xy#;A_SwbTfk}p@Drx5>3SC&Z7Q(%)Q!0BfVNq|@h3a15axf|kmE!|0{ +yYWWBgdHFqXl>2PjaFwcG)SN1FgOG<F8-MM)@O(4g$OMc7p+L^$gs2zEfhCy3WV<mNt=MKoMZ*Y<uj? +$VTzM^muBZo(N$*zmKH(*bigfH(mz_#M^}F@vB`;NrS1IH(FEXR9f4raZe{VPkp}v_WhoEVry}8Zb_= +W^xXR#|(-=)-jq!vAH1b%!=j?LGC(2+b?xDZXVbc$GyH>mM~T%N#c9*H*|3j!g}I#>9@%!<mj^z`JX^ +-)pfY(w7wn(%*QvbkOdSl{NhF2e#Drwz;>7PLhcqOU3=Y^lHf#DN83Q}OoC>Nmb{M0l$O}`T!+bF90$ +1n%!}6GeZS(a?GE%EfZfWA9TN8U+yh7qV6f$u6BC|ke9iq3mQ=uWNsS;B=>qc{mUo&IoM=ct1BjSR2D +wQsD5p1KhPM^E0xD<{3K&vC61o&Vgb4&<?Hkr{fejk5;R`GV6(XMl6mVBhFliHsWX?{K=hz}9$MLUJ+ +E8yqT4@_El8cz&9spGd!MKzVjDE>TBZkMxiDj4sxH$z5Cr1PZI9S~X1yOAnhi8f|@hmV4qXYvDbjzuq +M$B(ZRCV#!95RqWNO#fAr&X)>UFzX6ANL6c1zi+|SAIUwa9nu7Hh&v{^&g%k57p2R_YW~DfXR30JB?R +c&idn!6_^M>G?+jk&`d*)fk<}^J}~+%0R>{w9dPUEx}%xjJrV>BxH3G_;Y9}?y0hS{6e}n(gH!&j;=@ +Tuxm(vsPuG6|P)h>@6aWAK2mtd`vru2|!BI^C003zM0012T003}la4%nJZggdGZeeUMc4KodUtei%X> +?y-E^v8uQB6+*F%Z4)ub6~`nBYbePhJTqF>VZ~iKnG>2dK22WjZC|uXkK9CK7sT`ab5pP7g+(EhPj4- +UTPvKtcgpg7qdPOkiRI%N(sZiU|^dHQpm9pe)HXsNA9lvPRh11g)_fvqESnUI;`~KOu0TB^GE9TV&;$ +2=mspW$mIMN8?M?&P(;_zo?O5QnF*TLcH%1930f2N%UE57khYme}1or52N8@J$<dJNp%mw?A0ZS^Zx( +zB~#FvKPgjQTpg2^m&%_U7+S1@12x%eb=5MiT+)ny#;)OQI0F~EvTruca@)yh@u88*;yCA|Sh+A?#_) +N3<>WjVkZopX{CSGj+37}fK>$67v^94yzP-LFy2_{gBiT|ECja|C{eNQ6GsU3)U6G6_$7aM#Jm>(I>d +gLd4`ze4`qqrwtXm5h<quV0P+S(@P)h>@6aWAK2mtd`vry}Wq#;)Y004Cl000{R003}la4%nJZggdGZ +eeUMc4KodVqtn=VR9~Td9_z<Z`(Ey{_bBvG$<rDj*1Q#1_aB{F6h=`T{Z;mfWim}S~^)oDN-dVJMORF +9Vy9@U)p}DzgQyg^||B2(*=890V|DCW-IlY<)*Gdd*&+Bs)DV6S*Xnh3MO#T)W8}eabIfYNwM{<g=}` +g>Rq$DW`%TuOkK6w?;0qs3Mk#pA3`~p%}Q%(#(C7?oXNT|)-$nkMztPze4ov_b!FCT45@!LuCvg{CgU +5>g|V5Fj~RvMveqgkSG~<fSO-iv7MFQ=AM0ZdV6{+L>!os8EnVL0Vh)WGJJj*jg4x<zfb*KJT{YI^;9 +Rd?i%-A_N1==JdI%5U-Rb=O@!ya9_RZ_tzxe%!ySuk{f1cOGl-xc~UvY0ZuANfY<SyHQb<*hEXm5?`7 +5|H?w{dmBP!fSJPXuy3WB3ckr!oK2c(fo;`F-0c*o%D&;5V`;K);7ae@^Fo+^<?+z15{zuzT3V2r%#& +^$J*a(>G1F2LCRsrJQR~W4p~!ELQ^S^t<>XgiWUq%wwJ;i)ND57n_8ILfU>U8x}1zh7Y1v=)8&>F0Y^ +lhs$Yrr(dwO2!EHA_s#g(^)Jp<!(+LZ36B#?m#SaEghGH&;-QjSdd^b^s$8&V!mb_uJ^Qq!r!KV+U)v +xg5r73F>3KFNAF2&n7f2Ekd(JVV)sAU^0tulsmNh$H8O?tEDf=b+c_e=iYw56<Of_uP;+Zl`8_(deG4 +WiA4l3pi1r=%=v&#lE*p666;k`}A#~7h$9XMWEu_mrUtnQ44QI_-@Yh)Ao3>y#GBV8s4<wJ+!ONWkRU +IXS+47j3uz7h_&g$*Z6QhXRWvVc^k*)qAJ3gh0xz9y8b^<71j$p!W5g5nw(xS%ry*DQ4&>#;u=b9VJx +$ZC*$^5n_z{5qHp1RP5l8q!H`?2dSvHqZ}YOOFLOFLm%g1ai_Y)s5IRX!Vk0g(wZnWCwq_&|QK|db~8 +Oh1{#%xOB#4#7>Adc7jWLa|dOL^t#`j4ZD~?fRvkf%JEDQmUOa-?)Yen+GF3XLCUte=iqeWaLmqW5_3 +on3N-PXA-#su&*zJYCA=cH-1)+^KHhNq?a|RJ!RHm%u<bg5igE1ZJ6dAQc*pHQwz`W8fjS7k+er5qMZ +U}=GU*ha<hFwR6R|v|#h$vSj_Uu^C5yw;HC-6_pKgqA)0C2*k74Sc^128hPl)rlTpiUS16+Mh&Qz%bH +@G_C>8Lw;*Q1)bt;C}J*n%C!G0ilFkVL*%uzXwG#Ega@+olj6er%AVvP{EkTBW{ThVMZ9D6N;_em=p$ +{dq@iE^q=!bLGB9r6H3rl`KQP{is534~t=lco->H#+ULjFyDv!cm3@oO1i|t2ux>!Zm2k~ba(dk^XIr +LiUMiyh`BIA2NpZu1@f9)y_mo}JDJ*q%aBL$J;Te%dTNOZJ0o~aj<36JY`IL>CA}VAQYWJN2I`bHj^( +Hr@jgM}VHUliY$g?6Cd4cWLVZk<q3C<Q?=8_Zp`-@-vLLG&(uVZ3g3UC|HHh7WKSajLW<+egsYkMtCO +NSgF_|e@B#&!$KxO-1g2MuR`wW5ye!GHneus)Yo)C+;H)aTvl0nJki-(i4XqGVK(s6=@TB5(uQ+hn(V +pQJImq64w6H^c-fy4d?2mf0Qv5_<~pKXU;;6zJI!dWILslTT|PF)s564BYDQ<hgR9=?(V;!6SHxGM_| +pIgzjcH~c*=ttS$X!J^L#SW)c=h`}sMcrqK!;w}e^s$FDJ)WVu;JQ!V8GXsvZW!(k|9tj8P)h>@6aWA +K2mtd`vrxV3TXh=|0031t000;O003}la4%nJZggdGZeeUMc4KodXK8dUaCx;`|8v{8vH#tF1!}(=QjJ +8%y=$k{8+V!}PMo=Wxs2mp+j0Cj5D7`FDN+Z3Qq-IK-{0;6AOVuHbN5osTuvf^#bUpF_6y)McDojAS( +jzKFRB&G>di(}nyGc&lsQ`nCdH=SiJWnGSZ@T|)&;yTDyDH_qZ=ublQXtCY!7pm7m6dPSySo5R^+o>E +Y;;}UMg{NvXu3PrKy>drmWa(YpEGusJd*lNX_q)6Z^cZS1Vx2{j628<$CRYN=I;8Y?E{+s=SskAba3A +DcK3Bin?-ZY`Ii|ab>=w_U({>Dn2E+U6nMlEQ`fpzImL|@6Vqu#gC0p+9P0}_<I1c3R&?o5uY-#)xe) +}^Z&~8m!KG4<x}>yQW|8;aln<7wHzbS=%Q4~rcjw90h-yC{E(syr)*v1A_Z2C&sEK0E9*?CmWd625NT +%EI6hB{%{I*o>1N%+?^lHsnXcvGk!go5nxCEYKmUCH&-CT>)yr?wo4>t#_x9bJv6;I}IX!1}rDa{Z`S +A&Z&kb0v7Vm2Px^AkRWHqH1KbT1`%_Q?|SyVX*C)IVTgl@JeE(wa-)~T#(ZHB>`(~}9<=yHU~xuJxdh +Wq)R)XB>!yKT0m=!QL|wd*3!MRhAa>0@(_3*kkh*Kez3Jq1DR3<v7u<OH-1mQZMR85ncop5uU~IyS_< +0XpcOLc$R1r^!m_@90^arWN0Shl89>u3vn(PH(Q>T>S%v0#twjZHrRG(f{7@+49Bg_4C=E?tl8``Op6 +q;c&nUAXq=Bv@F2f)?BS)wdNBeS_yiQ6<gGG8Fz$}4cD0&h9t6*gVDYzbR6p0(m>XLm1tGyh#r8kx@S +rIkksxTXJuUp^IT<Xu@MTM8XLn8k($!~o~^as`rnoNq14)a^@cA&6p^v43H^J<-b=AV1V(sml#r2PqS +_U*t_YZSTo!y$0t;jeWCu$j(b)EdUZZu)EhSoietr%Mt(yf({(O7b@^ct+UML0lbAEC0^>Z2xdKEgg3 +*qjfH*as#S8s2SQ~dh(?{B_MZ*Q)yBEu*siZ`WBxm<yd>`+YCS1(>gC-n9&fKj^0HbSrK+>K{oA?bnx +{=x*DsABkH)#9o54xZkhw6h8Ykzvzl+%?Sv6=V-}qhlq?<rGbH3Imn)D4n4LiaCpwmQx1*OxWztWH;@ +QbjpxeZISkpAvH8&#KqKm6+5tu;lIhGB>)gm)!HYL!1s;^Z$~Bo_9oJLusMX(LZ?NZLQLRgj9Z!Z$xc +GLXJj5(BPH5|p#XvcTV8@O;4`ugm^kgt+pmjk%{GF=o>6amh)EdN^%_k`0G~jbSByKV=z>r0=`48c(g +VpQa0wcxrGURh4JJBH`iwzbfp?m(SS{hpLh>qG|2NwUme*CJfmL*i8VG^~m?a=7LGm7vg~)hgHlZzvb +0nEjK4X#>pwZiMkj`|9QYlPLYnd8CU?c=RfjC;Tfh`sYHz@$o5hdO|zi;PG`eu(d(O>Z-@Eveum%5Pc +dq(lY)y;>u-@i-Wzy5~>H|A2Hs2${<SX-A(<>GmK7ulE5{S=eGeX4X0K4x;a!07G31YBHdg`g9AtM?4 +GThe~JD@7HKzfUNn#DR2BE5|5Bk*9Bv3&d^-$<^1OT~!!wu9u`wUkuhTys7XIa^Ae&LyAM*^C>wb|4! +_)1oVd%307j$Mg{qsH~l-Y;@QE*80%NO-17rC)CMv%2#(g1?3iRk5m6E){{o|oTd9&P;PK>c{`LL9NP +_&;O`2HHrN}pexfUm^O~qNMrVwN^N+CUcot~by-*3!vKFXNcQ*_RE5D(E55b;59=$znf&ShI7u}D@4a +G}v*a~eHKMwdH7Rn634v#84=n@M0?d@8guF%42kePG5QaoJO(bc!0|Ep?9+aU~&@>onjfgBX_ygB+Ui +JSSV3(jI3&GO`YZzdTabJrFUFAHxpDwno9bT(Ap(4y6Up(c~_E_eX;yz*!HLED_agw-R$|Tom#M#aDu +!>s(0L$p(WXSjS!Div&aQ>__~UB5mg^AeL=|*&1jz@an*UkmeM&p(Ri2htwDpZbDtg7gIJF@%t&u_W7 +kVmFXyUEn!{503d=awz0KF{D7`d;2u&$@LQd)L15}Unv4cZ7(pP>8+w1z_XV`V4j{!R%zAB3(6Wr#!O +^^+%dROsAbOs4UJ*r76=ai?5(2(J8H2`7>6t81dH5CazNl!;c5&apZOnJC5~vrgKn7xPV<@$@U!O4;* +9m~kFsQ8J2SBaMQzL}a309h}5(}vl@;4P$%CQ@fn4%E2bBW>_jz4Ns__>Q*LN)^)#3wRSPX8K{oq@?O +3w-YOb3YwWIbwSOi@~I)KraZ#1bJ;tejM|#kiZCBfjLYuA{$f#|JVbf2<E*u5Hyy}6ea*UCaCJbv65< +13zP_@5bgm|5v%qEBqC^oNvG%+;IqE|a0_!wxwXdJ8A0NW#8h<1!ZGxHk0lf4XkgButr^rMn$T0QvQR +pC8fpNlK!X;hFo8GvBbg7BJ@|}hA2ioN)MZqxs#=ODKpuq1pMGwiEJ2)QQBgJ*B9e)!_)f(=Z`1NHA2 +CKgwa|u>T!IpeGhG_?11}pvy@er}GYB+U+2n!*Swm`G<(P63lZg6Ish7p_08G>k)^zK-*3>pwj?kj8B +5)-J6{2Ky29a4MgOQS>A$5GkQBwgffQdj1c1j{1=Ip26$e*JG1P3K_jE^QBdOImYJ+{2Zq;bu=m&Srq +BP0XW#<taYEsIrAo&VHPMxSeEVuI^WgWqZ}xE&3PQsZE$Fv*U)WrLg)M}c$@V$p*}<4R0gy_JnPPTul +18N?bh*(Srsfd^uHUG78+K0feJo$6HtpAnY))(wRyuao2Eh6qN>6V6z#2Q%ZW5_@kds~7(QYcNp+E%U +?miwm1F_w+lp_$0|2K+sEUr9A>r-u~vW@L<t#05S~(zgn_w1y4fQr*_STt*o~~>O(}$$x>iv!~{yj01 +VcmQc%e$QwD}P9TKow-Jz2Zh?~3}Fnwka*bN623u@r*eESOQ$BPjb7mrtiVQ%z<)%wi|UpCZ;1(j0A> +)4#cdW!8~(FT?tr&RWad-2TOBXr`4?p19%7XTul+&z~Sq7}-V3IzxSpaQD*!J4`fo0PB)iYKbJ!QXKp +CyjYgH1UOG(x$K@IBbZRZe(Iv8YU^HuZo;VVV^e)zbyI+yL6!GW`o?eu4Ak|IUUBYL0=`*t8EJn^WLK +w@2IrjF0n49y))c9xiuuWdjV3~Q3P2E4f{ZQ{{)dFgBa%}0gqM#em6gkh)!Ey^pPsjwQ1K)CgHY+5q{ +$F{}O7il?am%n=S+5xEdXS1$IOncx9Xc=Ds&|o^%<#zPf#Rol+^}X9b_<HGO;^s9+S{N4j+$z@w`@o? +1czX{*vf^A7Er5lLlR7dzo{wl9zlA|V81Oo+h7kLQBcd}(~IbqELyb@Q$UPlBSlsVafTLmZa$4vR8gm +dTir+e5(K(@_Oa*ySa0&{cP29!7ms;C;D}8dQBq%bt|=%m-Y+zVPxui#kQMtmEiqSrZ(7rM^;V=Y%RP +hj#KbIEXX5?dT1Pt<X!&IYi*4mOxl>KhltPT4V|m!eU7s5$l@R3AV?QBJZnk&?p~dI!81T&<SG_=$&g +VV{bU@%^L%oMD2t$V23^#h@ZpQX?FU3Rf0EQ{^JT%SC;h~=Q#`$)W)Ktq|xMCbi!$6HcY<1KyTlDvQ3 +`aK2Tr=N2{r}4sT6l6vM~MvB~Jufk8T^y6Uc16_uFRxR!XY@o0SeH<!Kw#}wB$Q5&uU19i>Ww#z?4$L +3ZCp^XKA=0G|_rD@5thc1PSh6Rkr@K8{mqV7he7%FA~|9bSOLqZ(DbDxu;p6&-vK1)9xCeA5NfH@r)9 +u{*blmWUob>2Yn8KO|L&AAq7_d527AtGa5gQu?lNjQGI`P2i)x>^=1l(4Bo6Qe~uv^HS*3v!oZuJ@T9 +_6VRqs-MpjyczJH75o`{O=l`5zsx9+vnS4`+ewGNwwo1{G|u(?v#JUE^JVYkBDzTalsxa}!)JCuYzbf +&$2IAx{|-|R-I3knP0G7oMvE>6G^6`5+!~%WJwb1jiiItRi-JxV@wCzl6%1neVIgoESXmIjY&am9JeI +uvx-fgxbcrz|iZz${7q#G426JnjzYbO&>E)uG(HZ<NIK2AX&3CTIFeikz`6{ZcZt&iO@H-hd*fvvRmx +j7#ZkJ<2x<Ijo3NhYy1Uwipc+^NgmkOJ%e;2G0g3g7u*nhpCN_y;ohN+^;L|bIz1+0#YcTnb%YI`z8Y +)fpLz)H2rZCwA+YaH5xwI_~`?mUE@%|I(NDOON+q6t~Z{g@=b{YZe@Yw&;ZLnmr9qL0wLpuOAm8T*}G +>Rnk|qU@fi1gFlXr~4L<F-Cg2rn5R?A)OU1scAqf6qQ>dq(Uh=MX0bp&<k3u4~|E-Fc`Ivf<FYtcp1! +ehs?0V-Nn5pR<a%#AD-krdBhSrr76!Taql)@>XPwnJ-9yP9=g=gynMnkVbF}?OMCY4tE|d6Pq*-AiUG +i^t+{{c;W}1<bQFL$4wLNx`NzARroH1(hv5apq(9%C!n?UBU3c+jI4Q&)YJ&wM+m{%*@dD>Bk~%^{p= +U6!@B2?^V$urPGZjQud*2tTD85j!Wvb^A9jk6M-KFR((M|J|Y_D^AbAUb-;{gpj6Lyv)(PUsHPhJ;|e +Rr_Wo-!nN@eE|0@<!X68plttDQ}}2rFWFwxof8Q3w*#`0KFfzf%kMMi?KyF3yhVv$r$0K!@sO+rKvo_ +U+1_3x*KW2Or+F$etsTx#&rvISY)a*@Pxd*g~dzQWV51Uh67$_WFJ0Un;+C3F7Q;8Zg;h$_O*O4%RmK +4>)1<|_BzR%LSHwFNy7dLF>7x_D0gE3e_Kjun|LvmT?>q!dv})|`=xw^#SdRX7O;nGNKrLubz9IyZBB +wY8oPl@7$Xr?u^Yy>uo|`$u$8@NR^Cv^)J1z269B)+O4tZE6r%m=+<e1pvF;x4%wFV0iJxD5^M~I*f9 +~aDw9hGQTZ4s7nK`<LqF4fUEG1vjEm69-YfwHo(MPl(0^S7#x`WzttfGRvo0q8qOI=f>#dYrHGrX8VP +Es1T#p?@`ur95{o>0xdB72PPv%!e)emn-k-yt=$MOt`RenXDDEqNy5=;KF3BH+m9E*KyFGLf;n)f~rt +>Ds*v1Uv}|ksYPmvZ0*B2pAC}j-Evm_KaPOENh0{&AYkxFw$dYuu;q1T{mNX{~4@4c2W_c8=ISl6!=3 +cu!mn{A#;D&xD-1@;MHdD;xjHXkUT}|DP3_+DgC{~+fhQs;6YOiJ(FY<69+d`M%K4$0teA!W#0dni;> +K!Pwx@LAC^MLa)(|-goIyd6(0$Cbcx+k1m7GxaO#q*#{+!J8cNczYeGG`vH1pRPXnN}6K!ccXtIpuTu +<eduFx`}^q5@W(Gh+1DYTP)nZm=-<2ZPJyoh)*FEXO*<wkVvLe~(fcVbW-9T$}Q40EW#klu9}DpjK4u +(DpIOAh{=r%=d`5%V0zR72e#AB`Tl<^sZ9d}{7jqnYLc;AvBs-1IAjSt$fbA?Y@*`x}+h0cY*!)Flrq +b1N5V@*VJue*kdm8N!(Ef-Y8D&h`FcYE<jJb0B)=T&$|)hEhbCNE=x`%8yk<e{X_+fdi#*fxR3w!^z4 +20Z>Z=1QY-O00;o{RI^ZBa68mx1^@u#6aWAo0001RX>c!JX>N37a&BR4FLq;dFKuOVV|8+AVQemNd9_ +&Ej@vd6efL)oUIda+S?EKb7I2Yvn>In)O|VG|1e<`MCE8*mkqSxKYZU$W&XBrLmc35W#t*v^IdeEXbK +y`|<W0fJMwO-73%MnkswyrmF@<W%oUA#~yiz-!69$8-;-ppr=7l5{6&u@Vp3bgFb*K;5Bo~Gu)UuKGQ +1g75^Nm^k%u2&&vyE02q15Y8N<>vFZ3$Z&RW_DW|2~_w<E7ee!KCh0nHHfIbxL<!=1QkVJfvuz>A*52 +H)2~eZMY8Q!Dg-{D^vcE@!AR{dzBwqegnH^GEc}0X)J7jp};e(l|BX0SW%j^5+>^)VB2-c4zy;rIIm% +vb*)v#O}})-K5&}(#n0<mUez=gy3=|C?>`C6GpqFB5w$~&9&MF=fBWh!y?OrZ=2v?6$L;Nl+h5LWHoE +Lh#4S;)D2$y_*kvZ&aczJvpx$a#c8c+g!0%5#cjM<0H?|QnryZ{0wy7y1Q_X8dwNloL0dz83Ksanp7= +P`NKE*lDMV@o{hCkSII_EcW$9FG%w9IBR3`nlYs*B8Y%k6J&ET&Yl3St_}on<8h5C6_})@Z@Xcuc{<T +aMy@6cyXZy@PwZp|l%wd~~B(sU-K~CM$RaA-`%l#vcMD`1hNQD0%x>SX&2=rhPW1=$<S@dbad(4huGb +|DO7pirYfv-ax(~uwS}nhJ&Yel<BRB;i27-HyAQol6x3^KkK#l15z0qUTzYgE_2D15D2J1^@?D<xF)f +&Itg61Aj|K`Eo{A)oX_Xa9HJ{g&$o^yBQO`RM&Tep6RX@~&W#n)E!nRP2tC?f*kYVe@dpUc)!bV>Ul3 ++Umw<!0&JD1kw2?K-KE$0wiec^cw!;0*rV6@|UB<_wS^V8cOlO7Ip#wW>-zQj%_te;2HP+YCgk<}CHC +l9pwHVmnaGMoW@_p+7B*Yn*5cHz*(ftXYNP=XTdIhoCDhP2IAg7Sy?L@rj#eFKJLT=QUh3E$29LrX*B +~Q!~gMNHs+TiSdX#Hp)SbaPZ7UmeYz8K~QYbK5f>vG(t9%RgNDOFSF%=)*FQA?x)egtl0(ir;)?ua;- +V~fRjPw0B*#b77ByA1?%R(x$=LtXL*E%;g)7k}wr&=<shMMpqe(OjX?Sv1hoYldfaddK!R?){Z}4`Rj +Y!#MH0UaC3E<G_~1DIqvs;t1_?#Sa)_O=-Q~U@n7-HCA)=K-FA^$e_88TqW@D6l?7DBzxN>_gYvU2a> +}IzWE^W%h#^CNX8W0s@G70y3WI`2MXhL+Qiv2jaf3SAkmHM+oZB>C=3TtSSVdqUAxTk@c|1ZM<t{;8V +b&l1FGDGCiw6RqWSTf*kLDqoCneE@xN|#Pb|8R>ZUB)O}!88`k(pubS|E{9^=I6jLkZ9(m+a_m1a0Z0 +#@*FgxrHB>1>I*kMP9tv5CgJ{7Jjyc|Q)6Glx^ZatiE=I>=|}=Wul@3`L=m4sjWen}WgIpbK>}$1R6T +=XRY-4DAHAV`upZyMsHAj*Y}%<kDG9vVzGihx$S~NFtkR%^}nvahW98USh7EM23{qaL?+^x$F`s5};u +GIfO?)+*0`JZvgn`Kf9!5@z|(~RDNurYpOz(&!u%>Q9yQDu@PRA6wDN!N%GydOAym6gLb{gDEI@*c_u +1w1#Sl}iWhjM2>Hc4OO^AlLA0~#5uzbW&`@Ei$SDxc+RXOV4^P-J$v>2Pb^z9lY2f036t_1ULvke}ym +P{-5K`3I)Lzmb^*G#M^S)31OiyD9<GJH5d})2aa)=l09q)Q|OfiD@zw}ri3pCb^P8V3|zCfH%3Jth&x +6QHSxRJq;%Ta++(fL;V(Q1c>an~gY!`3G57d|R>p+TJn$h+=!)MpLXr~zscWf$++Ct)roeOCuP#JMPd +A=rdzYUt(q79>HM7wIXS9wKB829F7HJA?7_?V-Np&5=i^U0mSK>Fm`16A>k;H#38hv5GVkhDTE|=;Y{ +zL3@}}IOk7+P5Q>+OV!DyFz4%L8_%=81I#&8%u4v&fx8rBO(S!z@p9FD=$KCo>woh#&sbwPii0X5vK? +5=)+L_@PCw<LQA^dDKl!+J(zi!f4L8=szErw$$)Hp16D@kD-^pl!-(B!4j^<loY#4Hj*}qUr0|XQR00 +0O8^Hj4?W@aCn<PHD;D=+{69{>OVaA|NaUukZ1WpZv|Y%g|Wb1!psVs>S6b7^mGE^v9}T5WIK#u5I0z +hW!FAZhbxNmgR{V7YY!rxBVst*s;tWR+gs?cK5BkqnnSNhtc?`^>(O%a@bgCIt#qFyP~IcXoDOpPA)8 +yI2dh%+oZ#O|li6=bMelDkj%?oi5n5V5QjPTd`mqgZW0VB2Vx>$yh}T>#8nAG}&jH`{I7a7K!9UYFcO +2eIXXpg;>hduX!rPWU?&t4U1#FCXQLMDe|&n{95K|U5QvfPbOwO%~vb1WFK>Bf0dS2krYu3ZbX^!G^( +p4m62Ixi6_|t$B8kzd&wq|b35OkF#O>dMau8vf>-NMjU+Oj=NT9kdNrR{$yVrh<)$iy`Hgi+74y1U$F +yIZi7L(K;Uw6-y{xZ`GM@`6EfX7lBVy77&lbDaLBP&Izx(;mKgVa^ygB<*{O*UhZ_nTUact#wE~Bj|W +s+w&PF3cqUH_vVJ=3Eh!_3JfmfI}8+oW+_rg16QDP$jku_8%@?_uzC&%gZJ-qn*}&kOYIQfvn^OOFnd +R22*Y@3H8^!da4J%Uta;zV?HBj28)Uw{ztff2H>l!>|14aq#jf{lY33*K$NuGo?EvudY<TFDh)yA&-l +?NJTsC^Avfeb@;km$%mJ^CiqRVfX!ZryK2{(-CBGN!#jsiLiSE<HS<v8gq%W@5RdVWXeFv|)tDd08Q; +JgNjCG8gZKCKwIS|zjUv!uqWK`@K>?oemeP(z&0r~tJhsF0wV2=Jb){cPJZ^-<3ttfl6|E;yuI<ltRT +b`U+04Ooa7tAEpt#+LYMn1M8)9j~R?HWR7(!BJQIukt-1+lVhANgJ&|uh{MRSUHl(CDl7KXB{c$Lh1q +#?5SnoFUqltZIFehkT6dehRQowipG@JYn1QES!^B{-?ep}4oV*Zh8`sZ-3|@VjJFZ<t+==v^{IUABbP +OI9P|;hC)vpR$JRDA9fP7UGz(3h^e>h9<F3QRO*o(gdJLtX9g=oRgZ3Puanw86_@AJ|Woy4y3t3p2%f +%%hMZw<b*1+E*S(6StH7Fm0XBMcb>5{c{#hn#+O%vm*fgbRttTyEXP?gDH!cd9$i~sNs-LpszhtjCm! +i+=Q|t)ok>V0Wg=v}q|@VMlp&(OBPII!?9M`%teNcv{S(tE?P_tC$V&Px<zRU5efIVFU%z`Zvw8WJ&Q +)f=-zkJi|7fszZDc9b2i}R%n9Pvks1Bc7b%tQlXO>3U>1kt2L-zCxvkiN~yr-UGTJo(>He2R6Fy3`#n +Hou$buggzDS{K0mAp-=wPx#AT0_MOPAFoj_>p94I5|_9o5`D`U`f>>;#fI6&bN=P5QDz!+bN&$dkqO< +xR$~R+WieqFtKq*5V%+;lEFO7GFb?wfR<FpAv%nFwA?5Su_`C%R)7H*J09q$+l15PhT3#mOQD?(yx@_ +h-{$3l<vMYIqO1g8kkHIx_QShxqfy?VO3gc2ibt`$tFV0qG(WxPoM&D|%-6&^PSm4fG6gXLvB{j>2vL +j+!C=%5%Z|EaT_FFp*-klc5RIv*r=3Y(^W&(`EPE(l(PqZ^dIr(WQTv2T5UG7xl>wW+(s1MwPho>m=; +<nKAi$Ngc%4_sfmRw;QG5wJq47NhNRq5c0$Rqir%&+~xzu$H6-U5sND3-r(jPqJ0a*@?M<;X5rswRQ- +r4IpJOv01I-YolFm5a{N*Lknp?t1Dc9YAkS%%D7<e2n(qHZ2r$abZ))5m@EhnFQ+o2h`+QXQL2Vlf<b +#o$nRa!O#MaVRfrmRz}X?0G&#$IkOw5nK%ny<PT6aAT3yPI$A=&NH~X1WLGFi&7^Fnb+l9pxh$w<t9& +yd6k#<p^D->&9jw6{B!6i&=M8*lor=2<>c5fzhQM@gMi&1FaUs?CN5DLVh0#_Izp-$%FARGH>*#Ffa- +P)pfi@xJLteJBOGhC@PeL+LzLBnTd7Iyd%J<b8!f=<C-8R7X?K$`pz)LNNP;CNS4Iei3?a@YiJJtf(A +_=K!-kR90^5&}A`z>|(idub7^*=cf-;!r58l(?-kCx?Bw(eoM%e^78{=S)B=ZSCEff^q8z%(_K+O%i3 +UDjf3rDAR)IOXN3`UHDyv;K)@S0Jq)oAPT;Gs%kux^(-jns+aZZ2#p*Y)8!GCJg=*1joAWY;!68T?5m +)yKB2^?nN9!rFG=S{myaJXsDBzsS0i7?*500{3{u!PqjQoaDD#ic}(slJ7R@hrK#whtYGk$Prw~a@H1 +zHY_U(o{Z4<yoq}npN2d6>BI|I50=>Fop~=lbKc>>AQBi>QV7uB@Pe{_q%cOBWCH5fG-$y0K4c&64(1 +<F7YALdT!>Ungni*32?(ad03EFl<0K;~)-HM0#ndo8mAGJB{^Ifl@|^NNRjU!V6lS2vMZjLM7Yf|btS +h8yvhP+`m^YBX%irH^(tg4Rh?|ok_Igl}6ug|Tm0Cv2Dz$ECJta?2qx{IzS}4OG4>sOce37cq0x}hX3 +2ifD|DgYVSN_wB^c(;2V^sx6zb|wxL&Zb1D)YMV4+9!E!WTs@6BVz3!*<Gd(=63e-jI}??pmY*E1X<Q +VJKwTLk(4VKNji-4l^=`Is~v5j`B@XEO(MS1dzr}t)Lw(6V(6WI3T6;5qj5R&Vf_dM=D7Ot$(DY*Mex +5HFExnQ`v#ctR&n<_-KUKPXaDZ^+G0eodeW@t@$<b5dl1vd}=@or)SGH`C^Q*hKt(NOa%gJQ7HvjKm^ +yb{5L}*q>yD;p23a^hzWQDa=KS6>Wap+p^(YStpeb`)B=%mctBXasnj7E+YlZ%+)IySNo}&}l$@ze5m +)00POkIYSXK*2O84hKC&_8+9&5c?x5P-$Sno)Z)J8ta(ZiPCYZA9EKsyfTbz_&#gTv%E^a)!-5SNt7L +uxI!>44tN`i|SS2xRbp7wVY@19)IJeE<ch>j!F~$H^jwy>J7o7ciVqb!59OgV*UTzn4g)vfk*#XB=G` +hfxvAt=|nV=Bmc-8$<5cH1?%Pm#V;UuRl&nL}PW*b)KiH5K?f+5nqo0IUP;um3qBNr#o(691KA0MZ<N +yk%_~p>ZNSN<{BP|U)Jg89JR4VxB?QwppB3wY0m4CFr-82BZab$AK|A7UPR8D_l20l`Pr7T4#|^*NlI +`<#<T<|&@w?YIpv*u(V@iH8^oe}R#DkcC8LGJK(w+^Zq${BYJpq!wLP~wYHC;ANr03>7DdsOWA4MEp2 +!AKV-!JaC@L2?`zeDNGYzME(d_A3?q6zw2<}*HPw<GOiS}bispYMaenV@fEqcaYYpJP@AaV<Zc%nz`K +xv6vDsKCzhuuDY^aE%)=`PTlP+TYY-Izk7AJv7UIx2D)BPb$g3|Pa|{xf#IY!;hL+MIH{-?q=*-0=;a +%X)U#s6Z=hxIByw529zxFAq<Sk6s*|1f8jjx~1yQY{9-3*X-yEc64y~B4mfhv!jFAvlmEa?C#{t_{-x +dFR<lw!OPnuJA57;L<bM;`aC*3rd_`{K017MuzT0<c*%}VXxEdF9h}ULU(61lIlC6~DUfe{H(h0QL&R +)jE_h6HsNLP`Poy>#xrLicsqtZ6dspEwDRv4Q(u(yo2flXs2>LN!g;n3_8Mf@0UzY@&`&6zBz7JevXD +3l%(5|<YK;+b61H`AT&<O|1DO7c#{Lm%sU|N$pTipD~<C&rEer=#2{P<hM3FkuWR|bmn<rtO03e=EDs +3{en_i$^GF~BxzIJCft>-4cO0sl5hQ`^b@{|QWV5irO;X6Z23@3S9}zpU77o&gQM<w?q~QxWy%pDz{T +R$6w4C0CK8pi7v%me9U0+LRfDJt~V_cN0<M5y&UFuQF*;=?Y~0#-M*L$EiE1R!tnF#2#GfrDvCHZ{NX +=y)LU;h&}93W4-3qnQSemZ;uotBJ&4zHRia4DhQR`&MV!wRke&`<rixKaaxL05mD+$=A=>u?W@jrN7l +wrlA748F<EO?v?<I;q2s7~M>%Eo1B2eMxKm#gbq6VG&)2=dx<Dx{Mx9gzTezd)i%|~-2U^wip_J67Bh +~-r5Ig;XEN%>`_FZB+&GKyOLRrl-xl!X63@$M5#Hj;h+vvFOFV2LQNXaKuWvlLbzb0na_heYSPODMtr +(D_N%X85pinN{w^kcmX0KRHA3tbjfAEM>4F9*eEvUKPmTPIC?;q2n#=ZL*ml2JB_7s%<<7X`U(ej_A% +|KnRkn9QM}{HOhT#}7iaU{lLV>vlSY#m+^C73f=J)Ld{~ZLQp<q+3iCVO0ykRQ<f^8HBo${H0DxH;NJ +}0&|Qns8LX<>(b%A+NDT1G#A1$=XJ=4Xce({-@N(u=^0G)`}gd5NY@nFfPm`BDX6oru0oCuj*bcWB!y +HBS+{;s8$8$2Fkc=t_v&=3tV!8<5jj2JOI`}Kq$6P}IwfBU1ZKKXq|@1xn1l-=PP)*x>O*dIc9Z3|Sr +BznjAL!E8UHY3C*#nI%yu9}Z+Nw33w?^MI&PSvw{3p!zLO1|ueOGTFT%hZMNx;!ZRR!txgMp~in(W@q +CUxVuD6@Jk;L{3n%<k^ZuYj-W&?HE+N?D9Ed(ZfPqSoheqD|psbKbqKDuhY8tL9Esm6W#X{A5>q^EZY +u;bewV`i=UQ^TGtB~5OWg{ipCsGCQhJupr;kO@g=HA1Jo3^E#LK+;00yb-c%5V-|}Q;j+8V(=k4`eF3 +Nuv4YJ>D+OpHs37lMXvj)=CCv8X+!eDRzYJaI~exf934hguJ5RWo<6#(x-1SV9n14*k<%EyYI?+(xHY +z~`%8U;`wS;=KR_Hh1kp0z*s5<fJ7+a7oNVEmZReEU8QBM!Fqz0B*;;PDDIfMiL$iPPh5O;JPltC@)A +I9K`fopaq^9gI|E3K*q<^K95w>>f+)=Ow68~N8ex7(VC!ZF}4p9sg{Hw&G;otv)STrZUjadE@iA?C@; +!>;-WjoEkVDc|eO9KQH000080P|F{P^uw+v`!cR04H1k03!eZ0B~t=FJEbHbY*gGVQepUV{<QdWpZ<A +Z*F66Zgg^QY%Xwly*z7k+_tsf^(#<$+$G}`RVSV4j3#oO%1-0CiIa()bULbr;*wY`DlSPAq~xu~|NWk +G01yBPt|Z6Fevo!aJkR?D93CEimsLf{CCkc^{d)F>MK`>aqOMq8S6y3|F_V4M)NOZoczAHIZtE>e({< +nVEl*P>w)l!=D_NI)$5ZwD;6Oj;ZClmmM_FH8iR#Mytfl!TH+?6{;nz;;c^c6q=?$-nx-}Cu*H>xFW! +<+qmy=eB6z`L5eZytaw`D0-L$|DzoMn=!$0_}GXAxD$+bSy){yyhT2m6<%??1BQtln+`OiT8vk{tjl! +v-(gwr)d1;AUi!*V`uR%pfw`^0g@WeEY4CxoI68F!*Hh8W!4ZQvP1ZPA=);D$B3?CM`s(eiuSEWwxV+ +>d8hFJcWHazizU!=jwO6?OG1s<N1}ye$})!z;^&a4tq}R<0ac>*F4P?ROScjb`9X$4D!RjfBJWN_T9^ +~|4V=V<@M`Vum3sU6P7<re#JZ7PAc;a-vZLaIxy4;ZH~tCXH}rY&o|X>$zF)O12n>9*{bCFTUWPB_C3 +IO$$rQh?7d_^5)owOlD*~c;l<m&DK!Z3^LE!j?_VltL(gJ6zrUZn6p4f(E8r@#rZ?*MD{QmQaz590N* +LdXqTm&-Xn&t63N;CT(_R605jgs8^Qv0c>{RXT-0b*VcI|})0R6l;I5<dCq=FRMpD%85xxi=0(!7O7n +zs``*7x)*O4ABxK22k2R`4|w60sQJ!&qVK5u%Epu!z8j^C)0n#O&x9Th(<*%~0;(|DQR?oQidA&l%7_ +x8V#2gQ@Fl$x3kz49<S}`TNA{rKkp0=#!CJ2ep8)bR!|z>$>761D0Dg<+oWW6_WG=)4l>wY`U&lEE)Z +m_yyUV{=@SN_Jjef65=1~BsDmQgWwfNvv<8{;Y~&Bi(1~)#J(`u&5{8c|I71^fVl)wyaLWY#Z``hNZ_ +-7JoFJj;Y$#n07rltTZ53zNCP-4N;Iti)flLl^_@^pXjXTey3v|%MYmyDwPO|M1uy7D(}L)G&mx{&CG +7A@bWaZBM33ffPmLJ$6_<I|@FF&E3C})S`PEhG_5}ocsv+s>6cK^%BDZ0z@%RpUEIxdE{^8>z80+-I$ +3+4V*k;`r0ppo0(GV_NVtL1&z@UFtFQ9$h?%aXZ^Z3A}B<Q3GVlApdiF;VOgttwK?48nb+Pdzdvd&5I +EZOjEjtB_h9tn8R`xfRRVB>tOtJx(@m^8afw%Retvo_zL5bYakhL8lc-0`gvIhSTBm&urv0wcB@73K} +6$HUV7u1L`cRHqwoBQTiLfdPf)Syj~?Tfv&@zAAj8ctk*CW(ay#x8f=_%OydjzS7Iv4Q!0zfVE6;<%v +?Yk@@-GT2v0)7iQ>199zVfne1k#pa%Ax85jtGNYlKEhsFQ|+y2xa+|H@C`!Bvgu(lc6Y`|@Zu3GVBjh +kAJv4`wg_uXh1gc@So1Dstviu2?)Yb$6IdG84LXLVl|1Vj(|Bv1xEV2>q>x>mp<(a=1c4g)3`2%MpZ; +4(g3PMUe>^k2u`uh!Dl!N9TF2#W@qS`M&|CsN;b)ej8rfS&PxkRO4Wb3mB{x<<kHy6(P3Iwe~%dTDG+ +Jy`<{oenpOVS)NqC~csTN8K+gkczSgUP5afCF_xFcrMl=M@c2fXb1EQWuq<u&@~`+kjT(M0YbfJwVF+ +fc(QCOkerHYfcez2<c83@LNenpb%9niz*20teTO!bWkF?+f+$PD91&fbT4IsBTw842<S7llw2}+$sq< +fz=W(VSj|&GOH>C2M_EXu0A21%;EX_b$&9-;!Al1)7{2)e?Bq0e(Brs6up`}_^A-X#{LBx2wKs7<H5~ +n$A=)@W@noR>Zbo<!7;Up!9DeOp3Eh<B66>F#O)W-40M(gh4z{6YOy|q95MzDH#3xEB`1~Bl>eDxcwT +A;d((cz>9W{~WV7w}sP<b?x-(C3*u3f{!Pi?1z{u@4_lh_F8Vsr~rO>S%Y-i8i|Q{<P+P4%R@!+io{3 +2%rH=y4k;;FvX%>lM##o%*x?s|*FS}Gvd@$aq8PdWGYzoBL{w2CTLWq(aHSb9u?Fb?qdbAp62yvh +<J8x)4MM<;;vp)w~8c?Wirof^Zo}7-Lg_i#+lN^UqP#|OmJ2~V%2C99i0jgc^`;#FoAJ=WL6GZf4F`0 +M)nzOdz;lsz+Cs#|FgJV(gTY5(}Y-nx9MzjnOMA;7+c~yB0`do{tyl+WS3#~AgY}I#K%YfB?i!&y64` +WHWU-Y5PKrdk&r3J&J6yyrpIpSE0!${fhRws-wY?bw|xqPF7TvqquG%(r~2wE^-P66x|d>BPg{%S~NX +-AJ7Whpo43xd-_KH?SrUHz}ce{!uHM|o2%E&|GPFIjn-=@Fn2*9o5Zwr=^b0743QGAjCou)WDzQTLLK +Vtmd>%22e_;0DZ+UUCVv)q&-MaO72?C{RxrJLCMc152}F&raEw$={N{F4<SfSFEVHtQH;HfWgXWuyvb +Vp~!G~1o$=Ux;ApB1~_@`0dS5JJil1ee*bc14+1^1RG?&joD8^#J^TQm@4}CXEBVsiCEJ0vl3~PI1%p +99Sp6O18zWeIY$%!<?S^PHKSc*+6wgktot67cAKLD@UcPa9h!XWPbn%oOptpE2t7L5m<)Q0v7}C)_({ +}sT<rA77(NLAy;DoTec#)$$TFtLoNav*tZ6{<DPq|-fl}#pzYhWy37KHO+#2q6~ZgHl3X|ooJ)jY-!7 +7UTt@SQt^+K)Rmwk4$EP-0BmBdB@r&P~?~Kn#43;?QafzUpDEM!@Nik_PyRU9Sqw3;^z{5s00*qX%Q7 +2qz%TRDf^aehOZW_eA@#%TT5Vtu+Pe!mzzwPr&b-tZ6VA=a@QRoK5@>rO<Fo8TqMFkUvhEH|uChG^i+ +?Vr`<1)bN$K;gxmb!@3xQn1)M8PkQ|1yq$t`5Itj42;6B3B%Qkb$&j;K@PlGL@o1hH2J*+p4{AP9^?V +P_z2HDTTLB&kLF%z2m4)=D=x#EmGmeQ2xXZWE!w~4shs9p_+ddd`y4x#gL)yp%ejc&2O<hZF>~=&0ex +)45(YBVIgJJeYfK5j+8VhM>D1^Bt7PbL)WVa?fz`@u6A!0*=7_LKi4k%4@(iuZVdO%9yDlkUDWvAkXI +@mzw0luWg(HqRB!C;k1gQ<~3!V_v}C=4A#E;*w1YP?CiA4|vdI>pziOLW`pedI!U$*%eCwB*%9vU?Z| +jkZS^=uCu?2kOTkB@F;INF-r~{#3Sg5-A>Fj9Q#B;S`8t_*zmPLGYep{SO104q#BGqO5O0?@X-#ABeC +SorO9$00=;5#|?3O6K^fPf1)P^pOGM>&8y)75uyL+5t%*6lRB#p3e}iL%J~w*l<ds$4y+9YR+bIhQRa +|5p(IHz^b{t&N&%|sMznQ>HaK}7^qj0ojB{ZG6#tJB%#qFy^_2vS>mlwj^(ZcKpMcVHg7TJww^9srrs +PnX6$Pc}Fm0%kSjxImNiTf7kMxEF<_wwLZa7Iy6jO-*P@2pMzrtbwR{*Qbp(`WN7Sd$mU{N@7g}RDZH +}ms(p#^FBR2tK4%}{XyZhqTI^d+OkhmR*i>|wCF;ysW=j&<{43V;tXemoO>CLCq5PA2)V^pZ|0#L(2F +y^?W%lX@Bw7b@{I(<uNqE2CyX;3j!Zu*1+&gOQ|mA1K@y(hLBG2nw`Sx-aV-;(0hRAa>Qt^=gNO-i7T +pcem^B($8nl?0H`Xb1w*nNe3v@xN}C)v!cGO$~r4-N^BTJhqTI_Z}&RZvSR|zMz$W3${xDCrG+akh)N +aRIKUFJ7?WZv%B(dMysk@NN!ZrOfio*(9~_ey`1a%T4+dvCwe2qK;|$JK%3C>N8t+CBIG8u>DGsZ<?2 +B6ahN$)y=Y^{oGvp4a)qwzd;$+l~2wDzpVmErKS;E~^fDNbHQv%EB=Si?>dsR(vzlsi;b5zzb?@0I`U +H#$J5jfDMS_1t297J{}@&I#A!{B?w&NM(W!+AKW1^18z&?P0P+jNHDA#vd>m=I&^Y^VU3H^$mbNPOSD ++JcdQi{UB-YfVWZ(;<aP5CQupzpndE8<vEx0z8vDh16Yo-Yr-{I0%Z>fJ=iDf>?$*QSRVeKtmlowvx# +c?I6EVFFP<SZ?m2Bs+5*yCUo>L+^RAT%GR?<TfLBBBwP@eo?HUHRs>{+p%v>1!1V(+jx>1*cA6Rwt;u +|op-1PqSZZt88e>cb%1cZmH==Q5FG{{j3G6)6@oH3Kd)1UG&6?LplbnE7M<$^>${2@`Jy#d!W|HrdOB +uWiCkbhC9KV$<oF1Q?C)N;k>JSX9JTQ6rlUcZ@z+XfgPQb>R0-t0y!v{xtKNK62)h8L*rz+QBDl{Z-J +fR9&^Q$j07~!=pTC@)%svOKu{_`JDumyL-x;r_wU9v6{rBlTtn^JW2iiG^c<HLup{p_qSMt2hT8c}~I +bjjb72k3_hNg&ONB3l-^zii<p4Lz8)+PKk14{BI#Y9PakO4T4us+lP0QdhvSQ<G|GDvU_#i%RKfVu_* +uNt3nNmN_Ma!%DCYk-#N}!WG9g`XpIDYp1F-Rtg-PW<B7Bh*LehBN}5xzvF}6qlPxDM}MN^+!PSt(wW +s{6xkZoEhb0RD{bHoW4RSSuqPJ*dt{6nOCba6s{r%m7%MvI=k!t_3ZW2IuH!(47<?CZtY%QtWC97wq< +`P^t06;K>JUK<Pg+r6Jw~nE8{DF!W`?a|ks#U!U}N0~beeBOM#CN*0kBkz1VMUqgyDzVx-E=gbVidM2 +g0T(d0Y2a8&f9>7Ra|4*d*88)b?;)fBa9;O-k%!pJV-%o?<yc4BPe+9hPioyiTfN9;pow=8++X$n0Xt +%m(6kzh`fHDy2u7?hf`qvz!b?k3a4Rc{uzq;sjG|{xBZU^gZDKc;y(=mi(~>#ei4$4MNgZ_dWoYil(i +Mpc5DDUC-Oyl3|`16oa3DZc9=S5&0zpX|37f$zn*CDK7H;9g=9jqC2SS1}FZ(;hVa}S+RBr*(U=ADv_ +dedJN6PP>tnVawC!Ou-DhXlFy!e4Q$fYd0jp`IX?axdOll*x>8h1-c(Pp&K+8AcZjNEcyj#1?wh6|SC +hUS8t=^8Hh$dt0IZMHQT~vGAIkRC7o}+<0Nj#2jnAK2GBVgeJf@ARG&647Sj3N{yXz_HP@#vV=L^KpG +<~EHuR5uMP`$e6v^uZtkcheoM865olOsh_bPu>gmLQx{l%QgK+jKi?5Jt+zejW!9NMqb?1PCMHIR(5( +U=4ZM7u+>2^-yyofe36B2A}IwH(GGbV;?{EiSp;i{L)tnl+j*hTP)&<sbyJupoD$S@ZcAaBODL{4{!v +m^>y*kGCIc<I8-M3;5{Fj=oQdly#m9tiuMcn^HHkFNO0r%41R5BZzBs*33B^z>8$k5Z~#&%isFf%6W9 +?o6xO(u^;Wrm(%8W<xr(5`aY<Hmn{CYrYo50X24ku)wS_??hk{debtrWp4n62#HJm!MW?DNhXL1h?xw +ztHJos#pqcej&+!u|y+vR)JyR`E=Y2Ou$2F{btb47L&|Ii^(b2Krs=!rdS?qk^s<w`03r$)HL5}6B`z +cz!Yvtnd%(n-x$NRWD~9qX%ieN7Gs7<0<*06B-hv&v?|VUMDuGZSDxZT9k|FXL!*PRj?q(Y2z97RQTy +)|grz?OG02*i-uZ<);Uy&eW)^yRB841E8TIc7UU*6CKD|aRo3ZNK`pJ1;3yW>ospVo)p--YZaRvqwHy +nXIg@<zKk6oc+ER33LmOi(IH*33Gd(S54(bEzi<34PU&huQfqF_%+eU>6rNJmGunTFr^7&N0eDqAu&U +85KA3gHaF@!Vvgc+%WU8S?)^S&l4ip%moP;AxK~&uxCdIf#zWL*@@P_8I$v1%U<t5I0c}e-=T2!P)E- +!&zFE95;&VC<|^i7d<{Eq|4FEk&Tds*3nQ@T5%Lu$yE1R@=?Q8}y2OJ^B>JbZ!zOvqG)hf`6c{9T`wN +{lJk?M(zuPq98Et1gOh(YlVm(;}n;woz7Yo-xBYLEBO#|1y(+v<Fu|fzY&#G$OR$90Yu2&VRL<lu@kl +La4;Rwl26%spr?(6}Kf-;9G)vM2R;H6|9p<CZWFl;KS*aV`2l^c5%sgu+J4Y9P@0*E;KfdpIFpB-RQ{ +ZC|86Z8qcb-8Cl``{;I&%v%vH@6Lq}GbW5BAC|+=ZCKb{xl(f0az#@$>(HYhO22KK)dX3#$YUtS}?nt +yxV@gk5U$4+I=wU7%Qx(Qz$@J|PWQ(ESo7XLFhmamUmhns>ral^@E1(jvXi5&wM6j)UiH6#3xZQB8hW +nX%x$Zfifbdgv;NsFx#0CI`0j)5c2v(#bkoEywkLBLl)cbA~KRyWO+c`uUZZrkaFuc~L_u&ov@KW--A ++>mOE$AK(w&Hn)E~i$VAXJXJ`iKO}VmkVm`<!uS&p$5+<{qso5rp&^L<Q|T4AHwFejn_4Y&a8t!%qXY +Y13g<-6E1P*<DK(i5QK3@CKvXSl}He(JH1ZXV@%JMGLz3Lg1fUI^g8SXQmjt6QVENQ{x76t{Bk1ai-` +!39O9h>2pEehub4YSACouA725Q`xOeo<A#nq9dCEd?pR3Kb9wyq>EHf33-Enlwu+q`Fg^?R5yXdf`vA +PaI3mzcMQ)2#xTsMdOIN8*Xm<vB9+|nZ1K9uzV+?n6kx{hx7x_*#E9$>9=G5~9z;*tYi+E|iKfUnPu$ +|+SEwaT(`|j|3j_9JJr+a$cF7^`V;sr0c7Oep2DgTYsH{GrjP?(>=6d133HCj22nX0-adr4GaDR;8pK +cKh1{Npjv$jsK4!<75jMP2Siw{q!in_izCLXX&s8U+JgT_ViUQVlX7_d{`*%z{&f2_dX`7s^i^RIY;3 +ytMy~B0Xq#%xc{LT(uiN2UP3ZR%rJBF0}_|B?qC?4;4T5mJ^idUMT@uqJh&V5jHe+1>iJ`3ZOoeC;VQ +10?^6G(hpQG6FwC0PY)y!2DCHh!SvMn6?-a&2Q&QMrPKGQ7e)|MQE=7;K=?B{r@=c+EL&Me&XkAIv7J +npkh^{s9=2MGtG?yM=dI!JOQ}B-XhyLD8$_TA7r#W<O!@h?)%KOSSkH<b+@AfhEgTa;-JLd+YA)I2f) +gUaO?{inuBiL&^ljU_H=}p~mHf82-%TrZl`83**9AXa&`w>;#f7uV2-Me3kNNvq%-NB1;BKd4MuQ}Uu +K7dmg3)J3X1nP7{#4DvH`UIWQs3G)+jV@4pX~{%BVA`eEkz2*B7g_rz3<|g;fB8no%WT!r44IO^aYIO +rKzTo0_bfA?QUDx9&cIJ(t*9vDH~lyQxwuvjE=$0RALCfQQ@XEQEz>a5V+w6_KElkt`>H03Zo58+mh` +s;H?#slf$*<9Kz^i5K+HF&P$}(dsR^TB<uaUSN|XxhaTQ*G>@R&9}ifIA#U&2z506xt4<Lo-jjQcVfa +J;zgM3TXZSzeoF!hA#eRIFbWR42_4w*Dx>+`P`TEC~uixUiyIK`mp^Rqk#bcvxuPR--g^5mm1Qkh{zv +sCwjTUr8#gwq|gLf$<G&S0c?i%LGJM8VTGjT3m&rWxz8MgaixCCoGjzGh*UEM4Fx(JWr_0T>YYIk*f6 +MDCEJ%9S<?RS44Jg_gmpsHQG4Z=4g!+{sIM?4qIkJR_!{#<q9+@uTXDqyUe%SpW!`_l!%*d^(Bw8K8f +p}Wk9Khxncs-oH--FJucPl}(Ra8!v>bOtbsiuc_;mN5wQxwwfcX+gZ{gPZO}1_OZotLH-36Hdmt^FZG +C4E^tOChri(KE%6=nxm56@G^E_t}mV`O;UlXz$~BufS0IuFO9wFWDBIJoy#gWnfi)q+P2_iP-tPrO~o +j9Clu%~HW-sz@Bn}Y3f{q(ZfWzD<LLz<w+e^D1y^{5>!@fIYfOPJ>AoFMiq$OH##EKd6D%8b1YCy8QS +t|?Moo3Ar)Tj6(q-QDz|K1>lV&{?q=LDH%(*T4VwiE6w|j)^{{c`-0|XQR000O8^Hj4?NjLg@JO%&&v +=RUS7XSbNaA|NaUv_0~WN&gWUtei%X>?y-E^v9RS51%GHW0n*R}jjfcIs%86ls6}IW*V}8X)K)ZIMF| +XlZF|F-wUoNv-1s`R{#0O8$twLA2-|c5QNIIDGTw4L8s8%qm-yx75|f3FXBKf6_PAtwl{1pQ)=9d0|! +p#v&MD9l<7uj;Lm{w45btVLIVWOQGQ{`W(o0QWshFT4_X4omVvt!FDJ6#`L-tOA?id299c>+O`jJsYy +tL9ZXE8x3J54Tgw0=q;pHoE4Yc3Gp*>Y4~}G8WI3)Em&$V0hu%?HBBnJi2)Xn|_kqgvJ<EpmwKmJ~v+ +;$Mp&7sWt<SOt;?iuobbvsP3Ln+755{@1X;jsSM&1%|TlQV8k)G+@F^a=Ar1l2UZ~%M&l^3^C_r%u$2 +*LGKh`)GwqqN3%wO*5hA+V@x6>wdtlQ&RCAox|X_aq|hUTAegBKPWZK7^FFQt1SykI-kASFis5<MQp* +rFbb`BOl`Hz1kw(mF#s`2yM&_>Xp)~m7@yx+(wE>feRvYl(E<}TC8Gi69OBGNh26i<<mLqC9PH0F(cp +tC?m93MKEL(0<|{qF3iUgb=!ECgae{+5~hm~`QApG`mh*}j;av>xTK|$U8K)z0?#B;WY{;#HxV+p2F8 +q(6Nn|=H$*yh!Aa#{FICNe4CUqIviHAVUA-+Y-@F5g17ixXi~r8X@4&8;EzQ6~;8d3Lc^0WeD~0<=;a +iC!H>53UyaKRX-*}!@s1|3E`UHe(P2KC14daRnX!Ha{fL3v7XUfZfNOUHk4*||VDYTd5GQ_%Wa6phZ) +Wz;WlqLl0UtC<QRcQKUQJMAvyB+%3kqZA_IQpk2AN+;wwZ3@z?APZ7I)Al0c9t^a3(sF<0zczU$!mZq +|MK{2@#V?aya3Lv48VnV%5otNe6#2q+%^T_pK@r|vOG9s5t|nLoz0oD)%Xb#rC&atM`!w6kqzQa^uBV +=xP8zE;yqLcEcw)XbU6yt1xO4kVm2ceSLhw+M?~F9?@=p<27R*v*$)D(0d%YjaJ5E3Ayp79Nk~&@WDw +WaL%aj&L;HY&kg)6PgGhWJDj0Rop!e#%@7}%;f2yuRx6w~%qO=`*i2G$9tGB2u=faIJ_S&9Z$<HqmO& +A-F!52(zyblxs;_GmWuL&&*`mK8{-H20kM~2jKhH)-DlvU^f=Jw%1B(!M)bClYS5+Ml+cEE5JGzBF}! +ZJoWL|om%viB@Vgqyh`g_gXRYwqln?IwzD)MkTI90cH-!UgJz-3r$@5eKrkrwZ%VkllwPQhx-i4>$Mh +{J3*oN)N6!Bx@KSc^A%Gt->rX@`ZRZ-ycT-)pE1L$Q<Qk3bVND$fPcjoJ<S@RgsYx%z%U0g!sK(FzN{ +-*+p8c!Hk$Dvu~I@JYjhDFk=Q0KT;*FmQKc^f>9fSn&B_c4>n#UPOz{t>*_kqD-JMDg2Q2#<`^sDs8N +-v$H^!`(?<r+jjdHxBm)%7Y$Dz2J4Z9OH?ZO9r&1%NcZLuAjM+%Ed*zI05#@8OmVu?o7a25lHzyMj9* +Ext9*zTYe9-Ji0dj@3*N3x_!Hn~;p>`1OAzbRt0nr^G*+@A4_TdFHjCHQyU%SEb2_iGw9lH?uLq0K|& +&AI>-|XA0Q`-;t9#!#h+!aUCJ<FxF7-K%4f3sf6sv&?GoYAM71Vvh@({-aUj9YnTqYHR4f=*9Q_PC<h +IJ@r5$#N4~{p_4QKZ?$*p_8B`ckdLv(|3eBG63k#(}|gt)s4g(XnpriF+60yW8p1T0F=%Y!jgUV<oW6 +H&AP<oLY=EKx3kWyv3t7V2$T0*w&VD}bE8PZmLKGI+oT(vN$A94K=qd&w=7D~OH=iODeT<9y)Jp(%gL +HE4e(t@)~D$n1)eAE{SGVa7Q>+Pev0pua_*c!QC&}S&}5Ad6I`ZqXun`w{1>yVRdt^ui*p+CBW_-oE& +tP2Hn=Mf>;ET8k?$T2@h9hpvZfZ(O->{<Gpm&y*4zZIVP}$ux8T$i0Q#V&5SPvG*VNH-`jrN^d)=#uf +;-iTnK0ESsFqAW`Cj;P#>E?rf3wcWSTOCWJuen`Uf?-*O0KwB)A`N)5cm&JO9KQH000080P|F{P|ae( +kXaM}03c-m02TlM0B~t=FJE?LZe(wAFJW+SWNC79E^vA6T<db%xRU<wr@)bSN|H;ae96@(_BoF2Ok5L +RHgYDJic<<jK@ww%&=Qnw&DNgx*f-k8+U^EG0u&|7iQ~y;?H`FG0^N<ierS+f{#$b_lV&H3n>@Z`qe( +gt@zOF|U0G#;=!S8Bi;dIX>NETWe%}+LNfP!4DXRr_wz0PMcy(iKeU0q~X?V$7sh@Jz620`wPdGb_1F +vMx`X)Q*b|>tVr%Cuf|1FZGrAnppE)AnF4Y_1Jk+3dLc`^)R5P<okQ4|J#8j5&Tj(8CE!hm(dM0!h0E +za4CL7I-Xn$3Qg4#piX5W}V=P7|i%;2lHP4<pI^xXZ@U?{g1%gOL0Dk{yeb%Pm|zJ8JD8GZC|^0f&X8 +g2`0C2cX5ee(JMc7^$I*Y3_178i^$JhGCEh2`V5#y1eI)qtx@|==vWr2)o-Coxk&Vbu9nBxxTjX{L%7 +<)|<1}o9oXXt#7QaZ)~oEe((eQyQU=Z19sA4AGQpmF2CfF81ckI#c;(&1mhu(Q&LhBrku1sH1|Xt@KH +MUqvp%gS0Hd}B2zwWhH;l)dxLZs5rYr=zcN%S>E~U%a-DIKDX7U$y3*?<oOijrNX5t#Nx#|gB?qOFIh +-%65vW|IiuzK!eaRCEBDKS~C)#bc&1&ln_Nc)&>()j5z3NrHFCvU<Lw{70Y0_ZD$@Tiu(o#4?B{MmZ= +A)2HOQ(Nq0txuhv!{Gq`^2`l*(S{DF&MJ71lD5XI0VP$I6h7263!ce+_3(k2Ww7Jc?GUitA6n>{c2rJ +)7;EB`c24o><^JtHXWy++_n10%}*eJn%gr&9rEwN5aLP#2e!;A`WyRjT506pp28QNLKrdqC&`AWu&Xf +M+^Et89?f6@o}kGaH=0ckEDa<LLCI;_n=l?<qd={3eA2=XufP>vw)Ts3mRXCZDTZr02qi{LCBnHI6$W +2pk+QJM{iwk@W3X8qO_*6CcpV655yI5r2k5sjDj4wKf_KR|F=*2PX9;*16FvGo6y0&e8NUYSOQl6+#W +w2-7<&T4z~msJEL*;kwz@>RwCAD^Rf8z35`Q5*Wpns3POHi}Fny%JKU-56v%^Hhr<6`n8ACq}25c0LJ +aA1&ZLuGDW5{?C!*}GT-uuJj{gd}CLoSrTSfVFysq`k@{5G15{3cLqj>b{ceEN88eP^lEJIIjkC3|fU +QA?1bAQkeYjft%dfn0;Uf@|D97BO#N&hy8xjzoXgA*R12!iO~7-+tu-CmkyZq|~=O9VapCfqV?sH$Ww +zy^xcY#W9xxOENDxj+N{oy&E%Cv`FMkNQP_xF5nDj*56@|DFMHX!C7#MRse7VONnHHq!N;ncRh!bT5g +5a$WKAyE|vmq+j>z1`0Q}b2%u+oLv%Utd5nyXfT~xzQg${O!Dn!Ihg6svX5xxUAvsGtA>J?v$@E~BWF +0@aKox5}dF&4{2B&k$jeIE?848DjXnqG`B22B-YvYoh{g{aniswhh=*pBl;#h1nKaNo;rqqBVwHQ?Uu +Y5IQjNDOh2(t-XrQe58BSR==hL3be2^yJD^#uwYNDnADd`!kM!*Yf~fJD*6L&KxR8pOmQb0x+Rh-x&A +bSf`~{uhz#crU<-;s1*3L?>u}vJ<!fK!Mok7u7R@Gz2^?<>^=e$LR<WaX)S_UH_HV>ns4B0$a&bc9x8 +Jt`Bb9%i*sHB3BbB%6HNBKBx_Npnt$ebSsQ4iLUCGQj2+dC6Wu|J|58oLw}SA0yIi#L`Q|@RS4nRaSb +acaZsg*h(tdG-vtcj3@~^MGU5Pu77!7EpJo(x5<i(VgW&0tCy$;zuf1=1>uYtwNjnZTO8n@oIw7Jrgi +?;V)cHY&jwQ8G6M{)7CR-W3980->|7yO`^6ch8$yy50HDADw$6)jw%*-IoznZX+xEJ>GD-HB!ic|Opq +!3)yJbn%FpRs=zhu1~cioF*JSVB_{KwO)j<_P8F-vFky_jk{B+pkZK4u~K4RtUK(BM&wQ^uTJ!SX;J^ +?Dn?K_ccCLz*kpldHw=*hW@;BZZCWvlz5I(>{1@vInN}T;$`z;i}HGdi_Ncm1?#7*beZok01B%jio|h +2x+P1RN%yT9JA*QjenqG{yl${74$d4!;)*;agWaely?H2DS*4ad(g8e8vW!xh<uy8o;kE|<S7?Sx|2C +@-EU4rW5%#Ql1)+~Mb8AL9+cw!RyAELh#dSN+Q?QiEUh8oGO?&tB6xUHf_tihWIoaFIFJwfhq--OwqL +Kk=7y;3s*6#DP4f3`@X<b0n#0)k8uIMO_D{yg1=qHqZ-C-rHY5#$rEYQ<1OzO^TetUX35d$%`Q4I3ln +xzr|x1d?{zFKvDs;b_so`q$!7nn~1qwx5$R&^Y;+9;E?;GvZTY`36r`E+tQ4H{<Z&myCTDl!WF(P)i> +Wtj4>!@&x{0Hs?ZVbo0b0S7<e;GYNwXR$D)zLB56EZG057JxRrUc?GiNmtN82%BbD7rF=6Ko`9L*n#) +5C{%p_6Frj20j;foSTpZtFSGjDAVNKu1ippw&`ZRSWm#?i@NJ6~^k&F3(4ni;H!Ur|)kd)%70FUf0vP +TBSWG^*0I-W;)>7~}TXtL;T`l}x0Dg+lY_PWrxlVzmTY|ga!KA(xv-ZjlqrU-q*g8K=L?1i{2`HapgR +l#pPF)_b-inpZfDuvg>W<J)HC2~dxi}1Q_iN&y8dg^c*oOR6B|!GnE229U%eZ+`O)zeOIW#+VBTYA0& +3(W7_W1Dl*Dba$$RV<fkSAH%ToEx^(kf~M$71A*OHN7jYB0G!#J4C|(~xiP<ml++IKzDZ@6p@5nEhVZ +ZJD+jX4`-s<2t4_kdiXxMA~3xc^nNvMpy(8BF#bybpEvTl8@8^K2D`lfRoic2~|H?Zi6!^?QgS>B?`X +w62uv!8e9Vg^*XKh8aL21RD#yiS}sBT(;^Nzg)hyYse%QQ=${K{bKVkY+I4P5S8N>pX~~u}v&=mI$TV +zd<Z?_0fSziGnxhN+b6~Qosyl|?)P`2Qm3wYPE2a++`~iah91#4W6-|GCWh**QDYt7zOUkR#J(F9chg +@t*)9+6Ic<<!+)#0!6JIE^~)XPQs%J!xu#ElKk;*w_eHbL-@8tOJ!MM1L4r>T-udd}(KMW>i7-U_o8H +M<$6R`a9x!IpJh;I^kHyzeJ?JCJIT<u#fiZc8aoE<-r;`N!2NTAJ%mH#c|khTB(G{D+p?L%n~f_ey#9 +-Ezx|+ubzXbpBkR?Z(rfdEM>X?Kab5bBWApvfZXMo7(3b4U~7)rbJ_Avu#QCG5ll=z>wrVsQl880EC5 +c>Aty0qqJbp7xZo$Ym4>1>{aL8FSoUza`$~T#1@1JrN=;4IVvmQ<rUZ>dQ%l%sB2@pcx?#f6cvs>G#s +Uqx;6X8Qk>m6ww#ywcCz_o?a9WYXB*FVELz{%7P5q{)}1J>ez(RB3VQv}-EpTDyF0TwFp!Y=t>Ks$g) +x4^-Q?~2FUax%jy=G!p97BRSjgKiS-)jU>1b1>J4)p}hizpK<Dz0>2Jf`bpFuFuVwXl|wzYrjaM+lab +}3BY-He3tTTe(TdBY(iZg_E=g?4IIO><A@Zaz}{*89iKN$65M^p$sxX^KnAKeBtjDM-;><hbAGlEi`) +;?ML{Nmm3?1v5ZvI`u%5N=spVVIUw5|6Fq4)MvNzrf^q?E>AYqjuMM_RrfH6n&UGy+S_YnVe%e!UOqe +Rk<SWJ)jb9amU*-g!O=K1u7hNy7;^Qf%*q(zFIgce`r#!63bMpY;GZyx@oRrLqK9XUDLl_RKN5e2QRJ +V$g2na3HR4ig1D?OopUP~A6L*6lKW~jkJOL@y_49RaO&R6%@c8iLcuS|paU75_RJ6%raFuJDaJlJI0T +ms_I(i`&gjmvWx~YE@;h%NF{9#XK-J9|1HgtTC=}kd-{Q$#8!-fhHcNv`tZV&Tf2s^_Ijy=GxfM0F!N +O#2I^GZIIKBWK+<Oe*03%O}1HZZ3R@o6jlu$E_Q2=@i}xDV!r5M;z>lmf2tw0^dyUJ8Cl3HZ64iZ+Q) +vwnsnX-iV=g|{K4<KQmuO;iQqe(y%y+ueJ8FsB1sH3g~qgEwF^94_(s#d|&oC7usJ`~isn96<cx9F+e +4%5%^xqujW|Soq{Kzp<R2@OJOpv(7tPXS-(y3mtdf`h*i~vd=pqI1gBABqXdhYqwp67opdstMs%qi1H +G4Zu`bnS~}TMqFJUjC<TM>@#~c9$6RM0q2}u{3cv9g5m!+^>^W+_vKyZ%z!m-IXQ^2!hq%1oh8i$@sN +xS*{O73Rch*jOBl>c&ZdyY<%m!gpDKi4ib(_{$Bh;>Tk-nRb&)am}Q21N-+?vQpRYmH|=wqa8uQdBX( +(m4o!}Z*0KaL3AVLOgUQA=*Ic3cf#AhX2|t5`=<j<2Zz_tp(P)Az!lyFy;rGXpfIr1Y`Hh7qi=6&Ot- +WpmVeQzy&u>ry$1j5=htyqqkWQL&u8&>YSk{JV6*G|re`Y~9Q?xBY<XsMZ_B>M`>k{;5{n!Z2s*4AA8 +B?ZV0Etk%q&whS3{4s<F%tGhSx&|AJEbP6IYsu=cRB5R`a1)@x&AaJ5R5nu8+<Z%Eol%NMIAMNXx&{! +Biy(-E$9wM@K8&;aO+cn9fUIqgf!DMAyLFMMNZb!pEWaH(h$;HmCxoo#~)n|7|Zae+Sy=-=l+2h#m<^ +0rsI~P@Dmw)0Gh9~JH(~#@<INw^1w$t<&FLOb6Npl_sv3zpdUS!_Jve#ChC9iwKM!CGxWA0Sm-2AS(X +UbfB*kO*A3!}bL?z_|UjZ&A5`Vq99CChorb_RW|uFJ%pFI?X3og<t(=>CK=``0<5*+afguo+@4Ew92K +Gw;pHS|KtW_j+oNT{z@w<9&tgg!gfiIH?6P>_+r*w7h_rqf?*ud1{x3&9U%503iW7>)>1L2+GlIgyV! +`nagf)(*;X0$hV&Tv7f-Ui*p2X1cm~UAU=e`D6e#l0)9+Ev=t(Qg2^d(l)bPnd-oiy4>)3%s;xdwK?6 +O|T&7>;fJc$hi>^TbnQyJ!w{>i>iU!)1MsZBxSxy+bCx%0)M>A)*XN+5jXb@hz<NxbpZXSIb)CHgD^E +z0CcLM12H$KVnpSke*w}U_0d+*-9JvcsVziS=5%>_s*<|UNpN2b+zt}*ZV-WW_0r@t!)J3qJ{MIzzJc +?&hgUXiAxvV#I9;MEP>-f~N-e;@N?@;l<`gX<ay+?ZChgKDUqSn8{Yo7<xaLC|Ser8{KlS|ElV@i1nl +F9Bvl`ea1K`xo)M*LwXcPt|fx@g#Vyf$+#rQ;5-Qs>QIuV8oh|dYPSpU(<{0E_7SL&t9EKD5ApyA2%! +oF7)mrO@iLgqcen_s$amT_WUW`F@W7|eU&!iYPY3H5MWfj(PWb69kon7tp?xfc}r`V?Tf3ppZHz%;?4 +oRw-H5C4Tc^Y_?Mgw!v3HWrYsovN#Wj^<*Z-c8TX~<)5}CD^HRGUC|<SUiWl_5e}vubXOGvOKi|pQ6$ +4+kk$M|RPa$p000Ax%q@Frw7D*T1k-Eb+9zUKw!YvZU#^BVTPQv{Q8`nFtT%wLnvng4&+1&6);na1dd +vn<X>$gzFXnfp;D{I&j_%*(UlpPY?gCr5jG*j%LEm?!#Dbp54XQLJissLkFPREp9p}MRbM~yM>Gn$hh +H=f*_7&jl^m<l(Z&CGtCaSudL!g&E$6AHfebnv=f54O7NYa5T0j`c8XBS6GcSZ{6=BmaF(ZDp)Qng;z +EzTcpyqvzWq=NqDCcEn`S0#Z76%FK?G8>1wTklE1z>^2s+f~Msf;{wnMM{5)#<b4eYc+`s_?Qb*~k#d +)z+yE~x*)E?=o#XdkVt=O7`$?jk*Hl@ks9>*GU4@xb*F5+!e;KNs9WsAy%kWQbl7a_ycAxjWqumef)7 +`VzY=v!Dj!go1e{v|wwQ5jpWb^AeT**kav_l^rx6XEt_YU$QQ`JrRvng<9dUVqHQYdn2pgjO-y*h25{ +c(C=@PrNvWT)~SD&g2im-bT8qAEsaOob|GwR+v$qFy;)tNb5`D5w71OGMplef(2#lexfeCX5^((7e>x +(i%jhE&A?~zQw3^@tNI5bZV=LCrS@i1a&oN!@oixBhs8*((FoET2`kDyD52jNIRDo<Ze&9sjA;h(%Gb +$IzHnjy=>oh5ED`~{cCkUBA#90SWg`+nS(`h_o6<3ITB!L)e=;1sP52{U=sM_p&RwDXWXr*-vdwFh!( +x0I+7y4f7aX+sZS66OA&VQEK77EBrpuG>7<fwo5U`uMmX6XPI1sj4R{5Qm^`}sz`hxh=2{0#Qs;_A9= +qLq^kj2KE90=oc&y&=uXnY(t-ZrTB7gL9uLav;;FjI@Nv9}D*bi|7{?6J5xcgRmoXwDhwbZIa6<_FrM +62~VE^4)ZJ)*&DhE%=ibv1(z;|wJ>*c%}(#v}SNbqA=68_ko>)K|c61H+frlh!Gu+f*y?z4Q>&?e@?I +r)=xE&ilBPqX}$fE9Td%eG9+uspI5|(lxeJB)<E;;`B@_g>Fct(CeFV-L$95FJ}#+^2@qOGj-8vj+S4 +w1go2Mg>hP|fDY*t6`uwDMY7e^3j4)+dw+ZO=$eW-a~59JQ>yh!R(ery<`7`c3CDJ2-CNVM&<RoH^ne +wr-r7JY8GeylASsGj!vQ&LK!y#PRIj^YpT|>z3w)FP*USD_3Y!UWgShuAV}6#nuz>b?jXHL@TZ#V{P) +h>@6aWAK2mtd`vrzK(z<jS0000w0000^Q003}la4%nWWo~3|axY_VZggdMbZlv2GA?j=tvhRT+c=Wn^ +(#=)2TMLhlf>DZ8&{GV$8ly{wUeZh?9ElBTwIETEUYPlOOTdTSNq?$yYV0ZlCtOKQu~lepwTb%o73qu +lV!snnnJ8!vS)0aW_OjW8^zKxXT02|WyW{Bga?ge&6cxnJ=@8=E%<agolL|Icd>Mx*`Mm5?9Y8#m!iB +?lT9sm0H7#%)(BZDW)|f9pDovKH*J|UQWoyrzD_GOnIuVC6iLF~u<sV-U0SBMyq+%EG%KWn6Yyu*7KK +?bT~1i{Z+fv-O`T@VrGERH-5xA5FW>V_)@dUN`qhJIzBa&_Xl>1NQ3EN7YI4~&xYU2dYuc^as;aqC)0 +@d;#@+!K;76{254$RD#99=hIXL?M0|_)p=rduP*=Je2x_Eav5gTOj>YmpMSeb}&Bfp=&ykT$Ou=&}Ny +;__Tt_iG9U_CI-?&O8yV=sT>O*%h;A16yTm+OB3Da*x@{qISVs6sX>Nlwn$eDSYEh*VajN{LMWKl|;= +r%BE?EHRIhT`lLAO9otMi^d=Z_+K(nnuq6(u{Cenx}4~r_-d6_6)*Go<$@k=WX;~;#>-WbtW(7Sr*3y +}<U4odq=Rf8h4?3)QX*4UNw($LU9#iNR_4l3<3B=rPR(yaQBxl}MBsejD&h#gl7yb~hm2PZyJ(tPtlN +fP)wQhSElpb$d>*sz`^^GaZt2(OA`=V-9T3MJ*m&-1D>A&>_YM%t1?XuKE;0+d*WdM?8zvO{C`;a7?y +>fxY_4~JJ{k<3_g1cJp5D2qof<w4#k~1egPE92w3ZED=egBsBNVVs7bR%7UdvEnjFuv&jG<u0l&BRMG +u%fKPY{DTN#=?dn?;8#toouc`a8b)J8LUhGFl8)h|FZ&mW|jsb4h?BI&rH$>}OOti=$?^j|7+>gToSa +C}|EA*T3%5qJ^KhkE7|1a7+bIo0bQod7#~}RNMlkJZF2+Y(W#Ah%Cz9AWQ7)VX4|Rz1T{52iRtXTC&R +!pG&+zY`=xAyk>R-Y8D)<L{4a>-3z$^?BFd(Ge8LxG%IM|unr7rRsZ@<oqVVI590H5(I-97N2`Car!e +Ny(>q_=@Yae4;&<ABs-)|JtDgR$likbuj-?9NY5+%CS@R8;ux*m<M%7aJp4tLutpfJK0l=>ooXvq;t6 +m9z8vpKqnd4y#xn$6t)x^F02Acqv6bvc)Y0aCI6zm_ZY7FNTJ4Fmny^Wv1U)3Vlw*&-eEE1eA_rN4nj +6EtXXxlSTrKZOr2dNNuoF%{Tk`t3c4M1Yh@1kvQ@ecUxWcMQNbP2E*nLv~?Fi#Pk@2@_8xw^dgcJ=<; +<2wX2ij^ElVQHRgrXm|v13?q`cED|2r}g1P4I0Z>aoEM@YhQ-$w~d=t_+vi(;|PTDiudn5hma&AYJb; +<^t2u&w@M6GIBMI%vyA@pQRA3ergHQ-h+M|;QWNNo$roDqY54^Clh`|N|77vIEor9+s0WY8{~PKk{3m +5qE$)F3paU$%2F$HibaWzPSgahFuN*ci)p9m_@!~&U{Ycw#2(?6^R)eDNxd?4!GYS%oE5Li{@%?9tl; +`x+yTuzo8PJ=bru8kD<kQo;y^C0!qJb+I5_sR)8@%w42x5#no$8F`7?0-hW$4W3ue_*0l*p=|!-&5VV +eGF(>A6Zoa>+E35z$2JEiWP7Iz|dD(_rYQUPV7~q1o-9;kM4$H3|I1PiJS(&%xlUw(gr`dn**%ruUrP +O0b2w%)qHpzT~7RGdSxO6b3@axjqvd7Ca{3g}%8%8oVQ}AB@*DAdDaMtz8))A;sn)tc3sfDEb@Z7<JQ +@pdQ6xsSUVl1o)0za#fx*a7*Mp_;F3h76iy3FRI!Goqp*-0=g><w@t8Qjl?K>fawB_M|B7>%G$aH&jY +?}eW*asxb}R`*f?HNItvD6uNS!I9xPNeLPiHA0D`Ca%3FZ9c-u79`42y=Td>O20en}vlJ)Hmbh%&r^y +>L59iPjZclY~AR&xed<nlL9A=3JY7X*HU-g?Gh^A0W2ntN84r`eWKXqOH+bkGr>mtb4GpgnK{Ivp`L> +&T5*JRx`v(j@Ps5(u2zi`l8ONt(Vkvbt{2gaG2vehPEH=oprAs`>QRnj4mj95wSGc#%&-{QS6D$J9sS +X}DInX82z9Xu^LZ1U-$YjxpiJUefer4k$Rx3vT<6fI^~wJk^`Ak6cF^pyippXN}O2AE@LWV@XW03jqP +{VE_P_jsj1Dm0-_w)RKaJb{Puty|+;#W=z-Oao$_DubOQw_wy0y{@)qN(oKVL20>p;AD1qMpzwT%r(a +EhDB5t^mXIQ-Qzn`dHN+^)BnH4?Y)H1ygoT9R%EU5o&^=Z2((tqaIK&GI+|Z)q`BRJ&rWj>56!0^u*s +VF*S6k)cp2>7v)fXHvN7X99o{=Pmc;>VI2+Q6}6hzIRX@MbfhGbE892%-@7$gXRqqU3=DO`|&qyGv4D +2Axu_3x#~9pT6XfFJSo2r?s*B2QJMs9hM)RYVhJZ2@lvpn<93?DN%U_Ugx<7JVTAZpp6~|9zEQ{m<pq +=Wo}aJ|>sHUR-~?{`iZo^*&^1=TnH6!S(+M7LiB>WIH5BS%T|!VgwXP*H1x3PD!YtvLnL=fb>|n1f3* +8IwQZ(&JlI5kDmsUdctD*?)m#ggEob2z^8+bGxn}+?0EygwkhTEoqBqdKyD&#%e25~sY-82PmDtsL-c +LLgN<u;pbiw+?1b8-4LJ8TZ}yz)GLF?CfZNDS7K23QwA3TauI{VMY)FZ)=!~T&EI7{>-(TDWcX~u$h~ +*P1qlTgU+)H90mLCuFwd4MFs073*kkrBJ^Da+|_66yWk~^L_BR+o(Axldgjki&L^ICygS8pG8E)+|!* +F<o*d?QM%tn|0M&I+EE2wl@bwU6|U<SLX$iB84FQAVQ(C)em-`P+zqwagFZ1pdz!64nB(bR*+KVoG~d +b|-+(9U{~mb(HRiW}Dvj@>CSkmXf{EB-PgN#<Iv>syFd=Y1l3mHNB!<xz2#33R&AoxL&AgV4rXUCz)W +u6jBKtws5#g5)J;kklCG4&`Sxvl1fuUa<xal)}6DrD_QX}5HHDh6N?oOFkA$^IV#!>3Tzbo5s8~aj!J +a1B3{@^kd^2_?oFJE6K>7EH~QrhG6g>c>F@EQ_fu<;29NBpw$+F)rcL*?fkbK7sRC_I6g>q*yQ231i6 +!4B4e*vX@u5lg3V?Kfc*)l9To<N5SHLZS8cDDydKEbiv<*7JhP)0OBygyPNIN<QHYIk`8}|L?2|Vp>w +Cy!pT>$%T5<0_&g<lUDS+ndBK2lHgm@y_x5T$EyV1l8atOFVzLBl7nlGS|Ci9YJt&LdUmn*-~Ls64>2 +Ck>{Nq87c6f?t9~mZPK^CS0F_dv(Ma`&I7A^P|;3g9MHj|D-N)Xe43`(c$WKk-s7^uy!$U&b}56_YO) +4qwpZI4kx%~)jTvOOLnq98L~fvSZxN1gLGUa_X}qoqWd&8jq*Wh0D=E+(g0XJX^h~5U3!O)4dzFk!!9 +f^Q`&~5EU^(h?}9v~Pr5Kkq96VV<>gAK+dOOO1;k+)WY<db8#iGAf#7%<m&9VZt()m!!M^nL&AhSHd; +t1C%I1S?%be1OSa?#cYQB^Ae2#7o+2sYbGj`>W)a5>Gq3^J0$!m(*5f|J<8BJOMcXJd80?b2Q7_g(K9 +oKqxs(S^}in)8#&S6sUCrk_$JIRd;<%)?IJ7b|wcPE$Z@-r0xJ=tzyNfA~Ry9y=cI)#*X%0>_nv}Rx( +xh^bi1%x(rwmq;pqz5vpP6lO7DrVX)DfKl`Be3(TAk+VSi=z0Y6}fbcRTY4O^C4_$Zy_+J`vFg|TeIO +Qm}+1PWnn4iIyK<D#f}nqLaO_S2M<!-(nAauWvg^=1QVO6C1@+5-IXzQViggnXk+bhnOdkoEZ<?BDFd +$iC_@xOS3!Dk_(PgCWD($yyv=m_RfwI?*qF95cj6<gE0lxRv6*=gAFcboeE#yMUfnnLe@5qQwuGTYq) +~IHma+2dX&cW5iK;D9YfcOuXQW}1(Io#(e_rT0jSHPkj?@OuyE}w2Nn#SM1d~#TyXzD(6+qOxI<yvEc +lg^)bM*f3bcxYUv`e$PBk@37TH__D(Xdm33_)q`$KG^_wy6k<D|^!a7k&SPL87gs>$uDmJq%4rZ-*`z +xlO=qgZXft+Yul-I|$K=B?8ovsx-P6`11MLiy!;NgHC6jfDWk<XkPT#$z>SNa1h7-GYrv|)<TN~1lR7 +C56S>7K_!LFO87|WYlfv?{($WturpL7;T!NHVAm!C*!bcB%nbW`iQ%BW1)UeFK_uuG(HAI;6r5fnz2@ +2;YgEj@8o>ph>Z*>n>HCYDDH@z2#m<dvYnH*nO<P1I@EIz@v$kSG%*7j(Ct34g1kk}ARnZ|t+yYZkeF +p~g%5o;8XZ#fGY+7{sCwdcvGtfZK0Xh{dtyOyYhwX<EX_4;MdCFpwaqcB$;G}{4GiDQ9!w>K9rCGOb^ +&kL7TND^l>GtaZJk*1(HFulN{+!kf4rtNCbtqVG2hZl7QjP4!<`u;E7-Deb#xvC%3e&Cxt<zx`j(P!_ +6Q{dWqDP2sp!V8C5#Qk9#3;!%z4GP}XPsBEy<O^1_s-Q3HDp?Zw&~D>3SwGD+aBie@RJ<U8Vedja*xg +MmwzI?buWPz?mbvTpW?yRBP{NEoQU(Mkjz*&9dIIVA1p;7!GV>)VYc;w<w9kxQabV|j|UQGfBCP!m`u +dY96y?h&@9QJOm`wP&*&~tX-Xjk{E6W&b$GGwWdh?5<Tp|bx#B`qcRD461STp437lVh!@kqIm5##g&7 +jP311Ryug7Bl?c*k%X{#G}UVZ4B}0=Hp%nn3R{(FhB17!6=0Cl5<-5u|=%1UKlOm(-nUFlp2!7Cg<IM +eUXdj2Vrj`b=#GDLt2VyZ|<k$iO?tf1Iqqk#~Qjs*)9sfDcSleTI;k*Y`Xa>eG@1{ldDC+Tc_jHlTD7 +0<EUY7W}ayw5EEeKLz4-Fx-Lxl!qvJDw)v*a>sZsx@u{*jbNBOE!*LL=}E{EGaJ-MFS4rnEy#-3otoo +&oB7#EX`dT(EWOs9wt9X#Y|}l=ErN(zu-YvSAc9#zQplrbyO3K*@H|-Us{_8Y*=kJw7egv0X_nfqY~Z +E<BieP_2{XLzwqJr$yR6L1wq3h<50QAxL+tSf^Lq-1N^!5EX=81%G(rGBMq_RzMa6U?po_V5=;#L3X$ +Z%LnFg-z#4UV=3{+OJhquOphXoeqy1^?NXu!fsoR7MBN=U6CY+G}1f&$|^G-_1$fo#`)B;XVvTU*!Ec +`p*;cxXu+GT6Lv5LT9TaZoq*34uoaqs06^a<7y?foEya5I0tHu*VbZ9=gZ2L>$u4A0W|tgL{nsv-GL! +nF8`mGd%=qXLY?H&F)56bgXSKf5J5!X&QwW1%zI&MT29p-JQV%+_gtm!L`8jbKqtSk8AcVNf5{_Sx{W +Ue~y}w(L++?jIyoV)JDwZB|)|{Z=hRgwxj?D*RrYwII|^2ydEq_JE%0882oa)jc~JdIgbYQ=(a-kR!c +pa=cR42MeAU^adbRx+9J6-89YVyVR&JkLn!O3k_1h>0=X5UKTy~S_<942z+@=}S=thEb>Jx?jbU=5dL +}CkEG=kFM2$XHe_3R$l`BmeAj6tNaz^vQT0M&&SrsNtZyyZ`HHNV3-;Z%T>$B@yAK+CeO)@gO5hG*h2 +$z^Ls}E`5zN1@ALOT(CcIB=!_2l}|&h>7`b3r4fV8Qpc;uFL@J_F5wqN(p<a;OJl?O5#NrQ(rU>wbf= +9~eOB!Non#y}F4_sGr~XrM^iha96^MheJr7c)>-Zy$w!+qISvlcI&~|gZ#1h?!M(HIVGoT2TT@K5vxb +%om|Ro3WC8bN2er%1r=0@qglL9=A{e6uxKL6dwHklv;KPh;S-Z}t^>GEp*!#D#q=|xtbdig$kTOG3{~ +M+5_&Go+I0*czty$EA*UCa>-9(gtow_>+QFF-{AOu=EWR8ihdz26T6vr@|DSg%tQ)u_(c-~rEmMi{0E +Oz)+c3j=ey8MKF6zR}^})F&?~?Z*9WN()HLPV+)9ND?Gi{K&A(_!Jew87B7P9OQ6p#9*(z7bM*W>F1l +^9%7xE}eSIQU3S=khMA?}`Z{pCf}q6si71vitaXw1?+ua`efPe>}~^t#MYZrV;>!-6Nk?d;gAossw!L +J|Q76x_5%#H5mLn2Vm2VAj35Gcx38?;uyE459-OWs1MYIeq-CbEYL{#*kp_?9CR}d-Y4+$;V&eQG`6u +hh$TO8UHEaCK*sA?#Y|7R>Nw_aREANy##H9du(pFEyRfa^!TMhIfnR{&cT{QJhzzWPuD8(C5gLUI2dA +*Vf?ZOYwG!B2rf(K?A~^zCQ<7mjUsf7f{6bF9q@hNiQk8%!T7~pX*3R$xe&#ihvBTm}Z3Z)Ss67fBaC +SE2Sesi1A36$pLsmDc5%~)+mhk@kgR@ejTjPi(nwX-V`M&{BO9KQH000080P|F{P;?%Q4v8lK0BouN0 +2KfL0B~t=FJE?LZe(wAFJx(RbaHPlaCz-L{de0olE3?}z&UqMQYtea-F}?6Zr6?7)~|`3XS?0oOR_R8 +!ZKru)Do0!ZLa_O%?AL2ASlU+lib}qz1PMhfx%#AFqjz(fCu7PF<X@B<gyY^A3ynO2><&U|M!hJOiTE +9Df5j78xO?ubS!fv6EV*dS&HgXirrZ}hJW;zq4-^vDlKyHG<q!hSYT6s+8q2DAS{Zxn8pi{7nPVR2_R +A>F49a2c{`S~N~F0M7t>jm#`#!^o3y&5W;BopK>SUED9)=GO2<%s22U4mIT2Tc@MTrawjVvZxw(mALN +qGM$)k)5sYlNbp6wr=>~8_GRQ$I*lS+wF{$rk&(9QFOh-ZMyI6emqv-n07rHCh`gl|=WxZad$mFAP7P +{l=c6PFU8B&n*(^n6}52xTyX{<;N#RB<jgcTdE@$)@;m_vGMY2r&M7aQe&9Z>Qp~yT`}7ho=YoC*tT> +JUcqvJ2*W!I)ta6#O~qW#IFa3dqW|COwf$Hot20`AekZwWrFlNk+OlnMZpNEnH;AV=@|NzPv-GNib-) +T%N)8RX0n{73K^*Yy#%0S=`^k4ir%z36>V&6Zf<Uz!ke=*>RoYmCV=2q2)6IMQx$+ygv0YRpWli-Lko +aB5VNwlP7|p%(j1CRsXY;&7xPLthgA}%ibyL_&H<+)2OiAFmm&s?frB7Gz_X1hFg?xXRw?6zn8=uj1E +3n<aIK})X%6~wP$8GF!BT=SP9^j=fxl;2JeKfO5&kb1)n$?Qklg7c&Esrid$!oVnCIi|GbmXh#3)0IM +=r)^0*l~ZLjiBF1E$wviXE61AVsE3oTb$w61zZ!tODi$ir133ONcOm&gD3sN|DPka6c{=^a4j0qqy;9 +^p!{?$i_HEk>fFEkpPD1g5t~QTNrX#27R3t*iMDb788l$6#-oo;3^Yp2Pj}*h(O1&%V**Sxsf697aI- ++D#gLA8+{smO*l})ai$7DUn7v<5UX*EHcl!iG(^^vFvj7(X`C;_IEKMYqwz9D2^b@OI6#k1JYlKXya6 +=GVI0F4p%HSXn*phxOY!8(r%%Oqs67;@kMsFNMKk(N`h&_~k?+q&C<+_MvZf5-aM%Dg6=fv~W&Q%j>c +7;&zI>|?8~yq+legv}D<&XU6Z06ClUZD<8pQk@1P8miv9U4w?eO3~Kt24lcW^9rpvg$)*J%l;0Q34i= +WA~$dXHo^?hQ6ZM<=7>{pb6;C;KDNJo|^cFZQ8wuTU^vG6_`eZEQT)7N=#LtBhr>qEUqMpJQ*c^q;6N +NYNkcZGzs_nhgZ*0tOy&u!e`wP}{2^fj}7r9gDTK{P6IM(&S7`LFx+BVB1*hq4-rUw#Dyp2J8W;a=>H +tx(R|0BBF6-O`R1tps`R+h6qgX#BvUr?@D<^Nx7*pa8%W8Q?uLRP<I(hUgMi+<M8PC#qRTi|J>h0Vjk +=P`QB{+d>~@h+lK#_@i>z}bMZhN(ci4ZHvYH^Wv!Bgk4-9<vYMAUO;rdFOK0kQWN3lf3&z$5Q`>2#yN +v+Jnb<`4k3sV1CqFi54jNIGvock({wr1;eAu@|^t|$?ZXimQFjXvLsQ8L&gL=G#e%YEgMR}!IPh<7+Q +f6HF_?P|X;_IRKM*Oud5{6N?9;$vqU&A%glmaoyi$sR1gK0<K58?ZrB+|~JFb>NU74=0~Oz9IDb2-dM +2o0<<UDO?&_c8jrTE!;gP@{U_cj|?YA)k8(C#T0p4H0Dyg_sfD0yiVp4B{mWahUFjPU9j+mUa+R^h=3 +mj7&hG>jsTd2bF)ie|QSdzwaNP075T!Pfz!c4*{K0MkpKrpihXEz5Wl|ul_!G^YHbcA3Yqr?hk$t58> +U(>2opoq5tZ25`FP{E8hAilt>2jNvaqSDaAwh9(^%@8O6i=+#+dM6X-w-Ycmxs$M*Hj7lT(@qc?pG>% +X)uH~3e^<HttZWDbB`kxoFAfmb)+(g;uvC7Op5LUtY04t@si))<}uYK%}Xk>}vDj5HFxA-@GZX{S>Cs +*qFfRcIR4g~3dyTIG9S{HZJFCG;1ps|(RKHv1RzENi?OAvJbR%efqE6Ew6`@ZV!n@gi(^kLP8HBIp}b +WNcS+K!{+Ro%Pd%S{NGBdI;j1NPIN_^Pk383SClI^`gjN0IKZ`s{9bD>)K~$FjNmN#KSQ9579io08># +8wUw^s8IBKvBih;|5=Uq<-lVM>URi29s`1gCAbd`j)HCIrs;1j3>)L|4GL}tIgI|ER!G5h{uVdG7C;* +30Ia>$WIw3@WyE-CjK0})lheC{orIMDMDH{E82?zp8%E2*-tC-v`5*%gSdU+d<s|=kGb~8yDj7O4^+p +oyUAqWIc74ve8WArl48@=(|6!>0IJ0SU_nUnP5LXu=MHjFYtXqo<skON(+;5F8W$7P|==gO*dmg)W&O +wx)VS<kFryBsOZ2I#|}ujV$PL=;5>O`u(93|(??eZaie`h{^N@a$d!hb!(>a1ta)JQ3O%SSoJ<Mg(wH +E*!U4wA@~rn+P7F5{rC3JqPqax@N^}p2ek4FyOSS9hk{tq>)=&(-_s1CjGF!X?8|Oag4fg!3{~-FiHI +0F%2~7fATu$cg$!2ZPC_^6ODj1JcJD`9}bO=p(uPp>`Ey@kQC!Ndf@=YN+*0t3aNz+#CgJ0*TSZCwlW +=c5wk-pRW@`ojX@K@e_C8fUm~|Hqdn}6F5PMT{O2V<s=a4{^3RRY+ynT{`T0Dr=9?P2_>CU<6HlY|(; +hwYC$yLB2b7=W7ofLq#dFy)aHUYT^fP!oI^j<jG65Uje)@?X`ICZq)oJ16x08Ks+&ir}=JsYW1CaoIr +YqqiR^pHGH2!B%cV(9zT_n-?aGKkN$3`ErVxG`Iqe9Q{k+Csdk++~?&I<!$pC4Tq6QqMJAbytlY0)T< +o=-<JG=i_Lr%>$R#~0!yKK}aq3oZcfp^Sw9?@5DT!GDSqGEaEGY!a$dkXJ6usJ?(_{yYVFPHVcqphxp +5Pr#lxA7AK47f+mlvP@>0KQGOr{+c#;`ZBF~TE=STh}5xu)chj{&em)AbA24r9j@X)%gZ<g`eF=~K%C +e|7jtkU##a~_=4MXJBY(X`oq__zU;hIH$dj*gl^6t%;PJ<kJ^q%<%K0P?Wo18Ilu|n1eu78)ZJH)I2K +x2)7y8kBfB%t9)xl=N2>)e#El~&SIQc|sRbFu9*J`hWJy7XMLSY;zM}`iV9&F}f6q~_aq(-}jeMM^<8 +B-*#4FdvIYe{Ur$feQ08QKD74uF|qrb8Mqvs4lT^BfN334l#p4U0d3pE$mf<=My>eh;4)#npT!E>l_J +_+IeLfbOKVtJU_yhkB|?OI7iF1h_%xc}=6?*jk;hO_O>$;`qHxG_}A-jmR*&K&T?Vj?;{&j2Praz9px +#YGG$Nw8Ii>dLuyoqABA=^YmLk%+_6ft&o);OVakci72_yxl^D9D$_*6uXN0a0D?#r1=b>(uv4P1o$f +1i1ZS~Q(w}2Jrm;|-%L|J2(){1-3A|ui%@UPMbw?s~F&%U0bM#tW7V|72`++TJG&}RfO}rS8`Pmtou< +&AQEV3J?$-@#h1HS^k%4A61c_QXBJ*k6iH|tUOM}ce;{buuWR;bz`X_igN!N%FJG+eX;mK&xhq8|6~H +^5Tp!3>4G1`cTZD9s(;hRr9X!D*>)nW<uz<b_7RwY72Nwm})&jy(iWJgK2ioVO#$dYQ~Ewp?7<8MCGs +6Mz*FkLMeFflDH@QeLOUT!EKV%cO>8M}8>QgW|r_Fh@IEo7`Bo4=q*IV&^Axmb(pbcNBHF`fPrS%Q<w +_8s6-@xyCm-?cApCq*EL2ph0S3e8H^2QKXAqVeVpIMw3Wvvhl`K>gFKWOjXWxD+U<qJOhn}O+1^?GF~ +TW@lEt3dh*rdFGc?u45xu<s;$zk`aX5K^<J7=Yi$eceKdE7;`*ZyTLI0C;ia`zdl<xrD0g4Ihg<j#>H +7U9pdvvTb}RU(gA6DUOR4bkc>nbDZ=?GlhE(G+o#7z)oRk<^5x3xNaHs*1sboh=fAc&2=O|5}9hAAv@ +66cwe$zrD1k_+D3Sh8V>0PR)9OY#6mByl>vM_L@s#WUCYLJhs!ECZXK#5shLz;yV{U&<6IS50o6_%}- +q8WmCUrLoygvjud$ZG7*y1a5!gVtx?VA9QtIGq&(+ww^<m0p}mN40E+I98%qUh0q<F4w1=1Cr)8uvUL +Ju`(0Z53I6B;FQKNyVdJPu32t_ZJ5P#k=_D5!O1Gh6naFOu@0rg85lrHENBoQq-miHhD;bM&qN9|0yu +aezKx#JWUiGxsQG~t#e9eY_OOm{f@y{c6{KU)q`}3PvdGvJm;vQtu+dBkjS&MEf$f^%47w>qtl}M|-r +xaAL6ZbU9n+LVON>1l!qt)(1)8m;%%zs!B#JMZKv`xRXmY33$dW1XASXbSk<lDArh{uumC+I!A_SsLi +3ueNxT>^XbLqCkv%$5ngQLUIdLB*}lw&USo}P^ZwMidJ@o-4vY3If)z_OG9Ej9RMj?nroE}a@pOTM)X +Dk`naijHO~DuE?9X)dpa)aqH*G3|rt33tQLSmQOG9Wz;T+Tsbzo6<(;wyOU9O=W>~w`u&gD2D=uFaC2 +rPqSpiv|MN1jcTu4siIP&z*-lzy1F`+3RQQpT?wU8xDoPCY7sH?^R@d>D4h)%Ucckz1)X}Zn&}Q>4a* +xeT8rgW<8C$#8!SAgL9F$Bu2J@uI(eGWt3<9YCn`4^H_K9}R|u9HZ%K-3OGzXp#vV+Sz|zYn<U^a<mJ +hD5t;Ywf@!9y$Xk7CF^LO&(e+MI4<Ti|O$Lm^rpbF0V-KS(jqixLvusF(u7_i~avHt^^&?0r67;+^$) +?a~ovv@3>zF<t;N!7s^y=UR;(3V-m7-xl&*#c)y6P8>yccmDqo5W>8Awyp2#57j~h0Z6iZvupw5`#=0 +giaYl19g`9{*2RF9qxA){$tJ;<J@U9DOTIDv<mCy!r<gd#%m5eH4<hFJ<l47Ec+7)rf#Nc1_z{J^I&i +E{NUGyt>rE_IKaV>0fOlz<?o!$4Y=Y1ps%W8Mj6UxH^L)MAW9xV%||t$=(3t--{Y#q5@}+g(Gq0b&Ly +k()-$cWBgT5g7-q)T<GA)@tW{=sY287+z+{@l?2zt}&F~J3O4c!HYd1FiY3pc~65N=D(?o>)BtTjQhj +zKwE<0`Be*5+4>pyKqEIxKw%0W9%FkN9jzT}Z(64x<{ouYzqCZK&92XE)9POhQpKzFU81u@0ZmVB{Vm +>)LzgT|naL>gac4M)f%*Vv?(WXbB!Gu_sQulsnxusSZaMrd$}aM$u|5>#NU-!b$wmL=^#YNez2dP4;> +=>n=Mr<F_I_)#usc2k$dO>P3mwV$koP@C{kq#bAM*7mmGy$U9(D0J?r`SsGI&OdE_G3kr&`J3o*$5*y +`p-dAj6(NI+s(Y3BD_RNo)dx*q-RTPp^%_O~@Q^|Egrzv2!$;Nd7fVn;tOoXnlfq_cje~1G2DWn0{Yr +ukpk)JA2Q>Uh(eTto+r&WhXvvQ4jyBJ+x((%P4$^vEwm=rT`DSc=@VXI!GdlD-E^(pAK`5LyxzcUIEX +aGwYitOC*!o_4pzqj*_hHUt3*K_?Qj5iE9}{7t%&o+X3f)H{Xt(`nBFQMKzA;%F8yoG88G5Z_O*$H}8 +PzD1(c2>`(`8sXqYI;`F^7RclDAl?&tmX1t)#aG5RU^B0P?0Icl4|<FiadAH+gwbc>9*I(rPWO0_ZHI +Rf{CX@UG{$Pe`jk`0G9C6@mmbn$4^ANXM#iCHdN9()8o+pMiv-#rO9kVF1#-iCvI9nsjqiCI5>kwxpY +GSK2xVEzG_(GdsOp=$cNTNZO9wI%>xC{+ILprPamG9BnZ?I}?32<p<lit;xXjk<!4p2Q{R+?(eQ??AJ +DnhTK1S3s`Dd;z`K$mYQX)w?dUZvG(+s8BnA5%I<Fc#@6{=NBsX)&VPn^AS?-<#=BQx2yFoSe<}DpQ( +2h%JQ4gq)8B{b_3v)%UpX(gSvAgLaF54$-byl>mBmb!)uLaVzm?;vX4kH}*76rqOrPOEl~o-9ii9}I^ +~nxH41tZ~EK}CYaolPfbweGcWaR)sC;V(QLbGQyI>U_Mi#fae1XsJ>bPfd)pp;wKicT(I^qTZQnH+&( +k^;QGlG(*jT<8ws58p(i3ktgJ2>6q>M2$v%0sOe(0G!Ag9#9SbcazJ~0gUO&xE^%=)`Tq&i(C#xkMMo +>hdxy%&GEREvFt@GCVdB?fdvLk#S<gW-$sTsubgsk;G2F#4mPTxEWkgO<CI6~ZWe0soJWe;RM*~X8g~ +q?#-=FF&c}f9jH3FO-jd8Sxi!g(^Ek8JwyDaD9fmy(kz;hgk#A|8!W@?q+Ra6ID{*BKEp@n(YM$Zt!6 +Hi&TIXP?an3<epbb&#&b02)>LXN+<><!+G(oYT^-v1;(;1qI_15Z*yZtnRG36*gBoqNMRMw~J3~cxu) +4j9BP-nHH(A5XdV4{@XGojO^9sE?25#04(iW}UvPC2nEt>*e@p&QC~H%V9aj23|>6Y=^T?k;V_&Ip`Y +kRp~1yP7u1U5qPd@6ievpM+FLWc|EGip1ChlR~NDCJ`{ruZt_4?ndwerc<p%I<!bjWn(sbHc#XTpwZ^ +-KoQ4^Myz&vff%cAKXn&04bJ`j;_gW1p(%Z_)mv7Zq@TpN5ZfH|W)`j$n~j&c9Olixs={3kdTi!)?Ay +_9ryys_JHf5Y|CsZ3Uvnx@(3$0J$!xj!plkGO6L{cPy_(e6I*d|?O98x8SU~-#j>NaD1pHA5w`MTf3g +<<U!EFDG2Lg=?BwvGAVuf8!E0_c|;q^5KO$Q~r)D{9}R>k}{wqB%#;V8%TzEJ+nfYU>tE;fu1YK5lUb +8VGGO~QC$-7ut3_OLZ~1A|MRw!>;PJD&zY`h6*BcD;4QJ}=^uwjMCvys_PR@1Rr_4lL7PU#)be2O<8r ++XhTq_~3^u8V20Zqe+M*K7?iL2q=&{u_Ww6d^EPimMMJLhlsNYW{F--9cWIg%$t>t&I<knV__a!cza` +B7zAA&1*+?r>!O&`QA-_zi)%Wd*5+$N-!IcZRKQa<^~Ngvbt@f1sV0noj&Ye2(l#t&T~ug-$6hx_q2K +?P^YaX*^}tNB{V8-27&LRrHVDf-LUsT((;QfW0`g+4*CoT~;}7T0*|YG3+FXA_Vew1ag*4Z3CjVm`n2 +d2cYZwz|jAccf*xZv<gKQaAx@=>9H5e|zYpyqyG%;(AgBFg*F`hQo5PCdHM&6FM&km0E%d#lXws}X%! +J{L+2bzuO)&@#pk5uYVM^Uhu`c%W{8E)}UUh<P^{ItV_xQr909aT_952DvEG)(|S-c(Dc+}zcm8HCaO +El+XT)?l~W&_|aso|P(ZVP3$AdVC3t8>8(fbSe@5$npg2oT4%ZsFVw33b`gX`Qx50qC+2>Z-4=>8-{( +MBJ4`^wn+27dt&4;cm~y=*<e6bK%=3z&~UGZ2b;}j>?vbjVA+J`3_5_~JcWzRbr7ZT?7C058AQ8JO-J +R}#3^Q_+2(?yB1l*r(`Zs{vmMsh^o#hu*Sipl{-yk5C|XrR9@)Dtf`>u4&fz<sy34Dud-twQ>u|M^x6 +rL?`mZ}G`^&thw*S7PdSJEFKnQ&508+0dn!5EHs500zv9gv+jHP!-zG}G(oP(spfGf{k^JQ=8`D=do# +!RsF7IzDW)UiFAc#UJgf~S93aK%OV1Tg%yGF<&cm{wb1eWr(9ljOu4PSHbSAWTppGbOdANcw|e8-htm +4}Eiz0L^=cw*atHn>c~9`qZjr$?5A;jS{s&RH8lo<`l5LmiQE%0i4GiG^w!pT&w6biRkc&{vgsvS@(M +aPXiwH293I!9R!w+4|dwJe-7#nxo!D+j}`|o;jnHZy{Kz!hZ+uc(m!Z-S^KSJ#Gd6#QI75x89st`88) +Gnt$U`3J!f<o9?ojbCum+*?e*#bMMI6%W8hc{U)(#6r?{U%rqk>~?P^0KEXb5nI`GY^a$T|Os2G%xrA +@iK<bp0YnYv9@F6|aq7zLYL(Zf1B(bFR2z*W@lb_<}3&HBB+8zIcktTOI2Cj>2mG$Xg_q!;ye?ojg@f +BNSO0csTfuPgW?fQ7egj0A&2doTpD&hghVFucub_cJ!?oZ3+9`m2K8ziQ8@Ey=1kFZV(-a9g0vskWig +K}lKB!iaVf`v#&uQaNnotr#BzK2qOl7v|7=YkS2ITfcF4WLTowVsCtg;<^7lSBan;HiiEIhZ}4J)h?N +Uf2ZnmeA-7CkhKcVum=rmVk`AQ6E;9-r3@ESP>s;FF!@E6jw@aZ^<dfP>XeS3{<9#jpSS(-605}%kAK +5ZA1%@N0WE~Z+v>5{l&-`%mwaq2bOpmsU?KBafX&Pb3_e~Xo(A`}=0L3iM&}%uzZq=~#P_DG`_kD4x` +R9kE1;Td*Y>-llYia=C-E<LYsmebmomO;Pd>C_=N`u78Qjgr92tD~_z%&4_vDX(O<J%ANqZn#sR%{^` +)XG2(q?6Q@9LFy;bReB|Lap#?yPtj-R0_c1Qq-Vje5p;`Yv<p3PGBKvYE)+<`L_7x_a`(;C1u^{riLc +!<$`!JCvof(*zdL`@Yk1%QDb4+alL}i~+QwYekc?n9o$dJ#A}2aDnjD>w)6w*sIkeRXS`;)Xn|ncbA~ +%_WJOi=0Lj38p7i5rwJjVJLXD>dt$+>$8VgTHa2j-M^76Y*zdKc-cFzQ>FE=vr;T0Gckk%3?dk8=L2t +Lw`}FVW8#g9(B?FO*P+ykr?Iu7W#dnto&{db4<@P8LFBsAGzJYHzTkXGI|Lm66um)ehBhJ>WP?J@;@J +*#(c&l&SHM74rTj=Yr7_`zxhCW^s!(0pD2H+SRCDPyto9-GJJkv(#ys$kDx$nUc?W=l=WNi!TJNSN;3 +tG?!1_L^*R10mH{}?pjSJia+PkTT<#A{k>&#oJHZN^jXEI0^u`3S(2%cd`oCOaJwO+EB?0*<WSq8BXB +s$!?z68>l+VTgg#RN9$gq>gp@_Mso`@~(E{YJp=a+zK8HR0Ld)4<u-QHNvyw8HaT#C!*``(p#-WK46b +jZG=&J*<Cg=zPFn4I=F`F_0@tijre==J`1(h+{*aD<J9l%I;8XK)U*rj%lj<kTXR$12a_+*;dLk&s8$ +ov+4c8XXxGdly3b)+_iP;^)un@)j3!Z@68$|fowWLZ&5#z@{i`fQ|2<R|MZ|2^DI6BoVjq!G0X1b|=@ +hy96d=D>@1w1jk}YJYeH_Yl?Y|;S?vZ4H9=)fAT1q%4>iTi$)zC^GQ^vR_ccoXYtUAf`7jI*jrJX;pm +#O`qWz~_#Zz<)ZOZ&%jdDQpfP`e#-iAfy_Y-;q;OD}A)RjRPfekdWxi-J<-1|BLEF05}*urJ!dvj!)4 +?ZE+J)*Tu^eJ;M!r{nyEE+ifEPL7&Goj~yrTGhd;msp9_B$f)_x3GGT1XbP^2k?PBw(7Dh=95bYaQH6 +Z_6A6?kB2y89Wlj2w$3q6e9oDC#<!*&Kfj&+wDm0~<IzU2O15FOme)R(OyPLJSSzr|yvpP)1xD%G=!p +K$oEYN$8tJXKx=F>On@ebf4*eUcS(f7FKP*;v-~r#4g3$DiGkx2#qEw)>o1#oGmr<S3@kGQ7USk1hz? +@7C9az)&N}pPmNIK6PZ!%>@nJh=6tMnDzCY!s#y9ao*w0C3p)94#cg=buydYBt!*yd!DKM=iC6<gna` +_;d1J?WV{1!cHPX?@8w1^OH8e_;5oQ*dKW;uJa`bWhr>P`$gL#MD}S@2I=v^uQc-Y;Jj_^9qeH^8QJE +t&ctY>mt3ybm1bq*88CxX#FUP%)RpZDjD21K!>a2Ry&fEC~}4>=qj~PHmpd&p~r7<@#(4H^n8;T-`4_ +Uh&3ddC{K-fg+RQ#H&H^=>ASpeGDoW7O49l=9z@Aa)*?*yI~Jh9P9^=w+iu0tvRRSl)sRM*x|CVAMe$ +6eHqsDtbI+y3!}&lB&~``<4$iT3xVX+o#(jnVm>0D36v%QOkFQh~t4kr(IG$k^8g4WjOMjWusZMuIZj +s{Acf{aM-YG~MU!R?3h*~ahXb^jFP~c`WEGesTG|)THq@fqDl->xL;>xE_l!vukLzC$wr><?|+nxGuN +VmK;F_gXsCoSvUsG`p&C1N_6cfosWrKh*kv#e^*SXV=F4V<R05ox17R2YgU?X?|Jf3L1g4%?g7ie!8F +le=<2SN_rwi<(q6!j0Vs(WTuueB5wHj9r1Z(Mw+U1{{6TJJS*0bruW1GM{A_3Gth~U@~t>k<_<`(p8` +NqN0n7DgUuP+EUre9tzb6DSOb8qCQ5G6b;>x9MNvhg`+o=tSWOhYhBw%f5(}nYF0S`X5f{6*CLw}e9n +-rd^hA8WIdsqedx%EYe^a}rfU^YRV8tm=<^|oytH2g7jiR9N8tM=)w(GA82K2RGZQ;8<(!66A2HgZ-j +HViI@i<KuKrpw{;aUjS}kv9qovyZ>%A{t4+j4=?7vpHTD$i}Z|Kpx_og*44Y>A@aT>CxpVE?RV8u05m +K0UL*B=Cuv6hq{-l=%I>;vb*C(x6zzR-m4Rf*|dm4Gc6V!T~U@vUPjyvmEYOW<@3H>P`w@2Bx&P*3=K +3W5tmj$K-NG6l}|*Ey&l@BnXm<izL~O(3l$G-Cf0vse2)hX%MnzZC~WMO6u|+Uy8t2N7^+d^KWf^#Rx +rOUbg_(I_;b=+&>I6JGp6iF&39jzplXmt8)W(|KdanR7F$0#hLRjNgD~Ihx=5E$_?q+*~m-UY7oMu!f +Hos=l6+reg{1>+b5~3qIUc3qUtQ?Nj*wjJJliD|G`@5>u$r=+!mZyt!3~uk+r(7)9G{qX@=k1|#h1dV +u*`PnVcJO!E4ws?40X=l-ypY3><<+CIB#T3Xb%h&Olj-(9u06Br{6>`SAr|7Z#OTFSJ05#YXc47Ehsr +Bt6ny?i=N!Zdsj9n!4mYmb10Q-YRfpZvZ5>hG`Bn=b}nob+G4PF_dwH_(~Dfum^zq>;5ofZ7S{Lnl*^ +iqxrKp3TMQ_wx+{CEhT~^DN)=cqPkRW)>DswO(~LAZW;QhHDSkse5%sU|uJfdR5beFM+PFXSY|C`oot +kn;p?3v;qm3ZIQ5qe}#KE-sl{3Gu}eQtX0!W577n8#QLVr<6AaV!vdp4vy!)!BO*4yvqK?<iLB^8CAy +Qqd~>jNiudN##n!hyq*DDBUdL*jrag9h%!h_!77As2zazff_KEL=H4y7?EW@Dz7BZ0w)3Sql%lQm7p= +YfD*%o>6k9cWgJd-(%`E0>bs}$%Rm!j_!R}ZY+d>WgyYkO?K^Gf-~U5oTk+>k$rALzCbvU~VuUOHt%U +r20kJ20>?^yyqVU0Utzrk;;4^&wSyANP#1(Y@K$Y@&khTGbxhDL@Mc?U|^f^UcwZmpg0E$*e?}SN-)M +JkVFtnl9_UkQoC6EVq^lf*-xYo8614yy0Wa@E+?TljxR-K5b$x`QjLgkMi6>k<P+D@`w}k0ar|T;xk@ +=Z#M`Cufw*yba^f))`vIiwqkSo7V0L0%rs^;w)q?5M=y6zPxp@xb)vJOYdiL3BN#5rTS;yxhP`oC%oE +x%>sK%;+!|FaiD(qo(}D}o3zLQC*DgTLJlppyP@BPKYc0`-LF3DiPO+F`#5YOH#@PfRNB^&Qwq9A0c! +2RK<0?K+Gu&{3`$S?4#q&XO9CyJ`ABA3LS=%LeV5HX`??&SLXF>Of@};3eaa6`*Jn3y8FC?PfAE>f|F +$k;E&OoL?7ESc;jFvr$nf86s5|4Fk+u@cZ5q7bEHyctLKGS$1it%_}@_2eAtFbv{$0j^t#Edmw4}Gct +C`CtO+FZzoja4-Tv_bRNT)qx;DpPXo0+0v+WLD#9SdNP=1PKwfQZ%o<_eVYhleDS=-QnAG5<b<lTY(P +FmJk`YvGq>oC;MAAzR-3W-Cqw?)7pixowW;(frfRkcx7?E_+;(k6NFx@U3?l(WV$|dj0=?U)%u;K3hD +J7TYw6r((Y30ZCtM3?SjVn+QpkAd}VQ!-JxhazQQZKwrmKuQ3FSlo#SByScwj9@p4Q0v)aMWheyZt<a +QF?2Nnzu;O|~0OO0m7v_$=dp-cx+?JPUSrW-o`?q+zI7Q?W*ruQ)R_+xvDxuDF&Liz?{a{{xmvGh)-P +FPD0<S}S>*1h8-?|1q`43$-AbQ&%0Z;936d^U+JPB<gPWPMtTVfC`uXuQJT>4=3I*xOK`d5+p=@}F9U +SRF~Tbf9adW+D6Hi0(hM!Q%P~YPulLo}o8HW9Q`g{s~Xz0YI)%#=)Qn?Yg8udxY)zOF50A_T(K1adm9 +5zL-U5?;vzHz@)9HzBZ$VLZ59mX!(yEKXr}`qiA-)=eyP?0#p7RURaqef=hP~?A@5{gro-o&(_Dg9M$ +%tM-$-1{2X^;KFZVbv3kTkdqiiMsYg$~e!5K9mqznCXoSRBA@>xtCjb8~W5B%Q<$!IBy~(9{pOJXc5# +Mi#Ku5g)(}nlzt*`#P2XoQs{^2P+<K2q;d*1xlK*Wjm4_<9=Z#{9AX`7Rk69VkoK8r#&k+(CT2wLunR +>SdJ_^#lC6B}&otnGiPk@5Z6W~ryEJW=P6f_58E*J|U*sx}(ywtii&1@e4J7T2JN%NjrK=1x5u8+u?t +o%TU-^{wDws_4FC#biQRd-w-R>qJ)1>0RGk5HN5GMhZU5Ynk;;`Mv!gfBU&nBu*0EZ&=zwCl%<Zsd<Z +0QN3)S!-%945R15+(BILnPVb>nU-q42Cw4YX7I8u212kZfZ4Mkbh{4F@2h}p(+uC}oK%ozvH*cM%OPS +38xIRPH?#ip3R33|)b&Yt;2+?8SqpF-sjR!Q2qfw*78V}!@r2)Jv6&@qRr{=$=A4Ns+OO(u~Gu7v-rt +lbf4Ce3rX-MIQ5njT`DV5x2Gsxk>>K$Tch4?qs8}hM7?rAgL7&qscIVUYFJEEr1%<uY;8g3~BuA{L)V +nx5B4Re=ks1Z{a<vhh>7+HQPR6iP_)Q?7bU4w_f#(x7)O9KQH000080P|F{P+lz(VS+mV00TGy02lxO +0B~t=FJE?LZe(wAFKKXLWMpz>b8{|mdF_3BcN@8}=l}W?80mUQ+7v}nGA%Qfvx>)_(K!=)?$}9o*X!^ +!$)?mX+09`$^~h%LXWy#A`_av&9v)BbF!y?F5-1c3g+ifF_+gK|%9b~)<ou#w{ciUe`##Ig=P^4=C!L +)=#(qpDahk_dR%Gm__ixxboyIE`L9Mh{CF6CGt=Q@LDvlR%T6A`Hc6WDA*(}P7Hk%{StC&ci{d9SB0D +lbFB1)6xdL9)?mO_#7Dq7vJBxOI{6c<?v6h2%ex&9$%Yti~-6-PyUu*^Qk2Z~5clv$Kc8Bvd>(^Z`3a +lV6JrEzhUtv=_RubrLQDqFD8Xtplat9UeG$zqwU3g}ZZ$)@pWo)qyan&&$^JK`7oqR2A%N_>$QtM#PV +*%^&4<5dn_04gV}(d%?O{lmr%NbFU%SVHH<2~fLXvvoSbp5{BF3H>li(qdHHEaM#NHQ^ua)=sgy8SXI +nl$K%hEIn`S#MhH}S+KX!B7VJEWh-858RfZ812~1+qH85J?XvJEeGBBE*KB-K00ZCf?~@rDH~vqz@v- +}fot&`lkg+{6WbBaTF$_qNOmeC}jc1B75g8R3{bh6s!fnFeTD*DutYR386dT)#=XpH5HHD9SXgce38B +IPn$Bl3P)M&GD3pt*Fl8#ZypysErxKTB96Ce%vvZKDtr2tP0uJxuAO>TWs$SwZ2&Ej;LL@8*e!Mu>Q` +U!>G7$@fqqkG6rSN)s%aw$54gf%gPV3H?kUPS36ZjLY8zGAhkO1zCG{^!LDcHCl5pb1yN@GDFVv$JAQ +a#T^^1hh0x&x;Gcr#@4%MhRopVgY63E#cQky8rM!r^{ZjE(1A<f4w|mefIb<JM7!CT1817iz(fSaX_2 +9P$fPG3zw}6md&6@dLEO^8)pst?;<J~&Zym%D<45eYTp@XA8((RjOP~Hy+M7xd;R0PF#ezaxgF<FzO7 +hz$p%O2U*EFs_00Lm-pRSE`FoocXN%>WR)%;=6Q<ch+d5+xQ69le;<gP2wit2AG=#$JVP%?v`Zv~Qpg +)tC6&KKxt1NBcpR3O}75bfL?CK(3#bhX1e4XS)z!)i7&BQk#iP0ADSz?XCBv8&cdw><SWOOFkIxU(ld ++2biQK~fM(2!ccR!%n>(k4uxRY6k><Wa=Slb$`v@H_TW7>tC>I#i&4U0o!wvL~QrP+K>Alf?5WOSC$& +CnrP(+MmpUEE|2uifI0B1xtUDp8q+yPSR#J{zp8Kc6c<(=UI`{Vu)kR$MA=Ez66b=@xrQ?(C6YJW*Pj +kV$`culEVs;K{0X&a)!oJR3DAz1yIC=d^C!G8I8pEe~VdknI%)cxRR&~<ZqM-2H7~CMBp~SSg>gp=cp ++cKxQ6m<uWuAI9aWrFY_CA6Bn#`Q54JJ!NGWao_ChqE6G;p2T7i<<6gIW)Ng6EAikP;JfF3Bw^}u3!H +!WsjZ5ptzpP=-!BD`j9nlgmV_FVg3j8FyA;(~FowAF#6Ci~tN7PLIa0u?wzj=B8=49Aq_oyMidsN8l9 +U4hw7k>@*v_fX01XeW}JumO*9T?qa7=DfMZW7xdO(NT}1o9vwcS}C`XziT+^w*;wU%&nS!w=B>VITiJ +Q2&NyQdz81z7P0oG+%R9t*QSiIzl@Y`j*kx&>U_kXs>}*N^B)Mv~v(--^Rrv%0J(QY|2RpvMB0gITCF +(#eX%a57B4fB!$fluF_!J4q#CvlPH7(zi~^9i$2m9#*Cpi)#2lLx;i&ziD+ZUP6bKfaiI6mCKAw?>^x +(y6SCH{&B|8B=-K-%*w@{F-DUZDxtu5Q^be9`&J_U`0a&IVKR)cUt7JYm=!}u)G*7^Gb199*rfz(Lni +#F;h3Lo6)McY9rzw>bgN^+_rqn-4F0w8fE2F9&w;?JkcKfmD%wyV70WS%y95EL_#7F@6-+{rssIwynj +Q*>37={)bjH+Sgt`px`G(DAV`|4)QLE80IwKjN|*3f~`e!QUF=DS62aqy?1HT@fpR<uCV6pxn6I9dq> +h*GI>mY#K3!zS<@xB)lWn)pNSD-zq*CT?j}RDtzd3|WpNSUF}638*7>$wFiP*kF&C655XLjnR#*IR~1 +ar)MfqOB(|bwa~J~X*wxRKCIU9uWuOycN;B(jJ^DthT$#eL5_v`=az;+2xEJz&|&XZl8BH8ZhhEAmKO +}R5;-iPl8;Tc<84?g9@vIFY^%SHEm0c$o3kZ?^DS%%&b8Gn($f9)4ajfGwK$XVlVf0f@x`nNZvvcTvx +N^N&C5S(hR8()aZTfVvP!u6C|?NG8MfO+GFi_fEo(8qVP2DWded0NY#imuB$~r^IKoZ(I7xZ19<*Q#Z +a#HJ(A6UkY9r07;G?EpJM%R3VJ+H2wReYUttM&RiG6v*1E$#sV|MY>pWHvkOZXzD2`y_gSb2^ZuOUnu +ST(sWHOI;MJ`cFI7)4SxOz~7sLy)d$OzDa2p)uV{<{7H7q$BwhEE2o*`K+3PXM76EhG18k#^=E8CC%$ +1%NR_G^H`0KZHof^sM2aLJgyeDqc)FX+bU<qaog<OCFsIDyK*(n)304Qx5HhTaqT+VRZ26st<v-cUs7 +uZch(x<w?3n{8_C|_%May14dp0@g|HZ9OO#wRABmWPKcX@Mn=z_k1|axKANH(p$x7pR8c(HkkTN?l4- +8df9U|Rq90*zPV-EVc#a^=hW<PHCT?&g$mc|T-FkpC*6c{mq;d`{&H618pZ16iNj#-jUWei1x$(8q@h +4BVT!IGB8zpP_CM*xk>vlTW39bH2wCKRUuN$;In>KD{yFf~AIp5){n8I^=%AS?ebjINuG1uLK}a!iUS +Nzo<1QJE#HoO@redKShM;A%_`gkaoJTo~39I(0DmOh0gvC!F934Cr;yOoZ!>DwQnxd4+utwd{=Ghi`Z +_`uh{sv!izWz<|iNshIVvY&KcycwuCI<5ySb9BVL8l#77j`q4k*RfZ=nc{5!v#^^%gKlFgU!tz|F>31 +9mti!if8J8MQZ9sYq9l_v`^6Eo0K*FkY)Ne>@2rlS#vRE&ShNulpOF$;7>{NZ;q@T@exWhb?l<Z?8d4 +QgX126IKMUpo0yLRa4>c0e~Z<&xR+h@I2OPZH_y;wx6<e#xKr;H)fgYaG!hS?yEEkArb2Sb)_Qf|@9* +VhpSfOWTCzI;iOt69d38Bc5Up7${Wqtk7)+KNP{(_xjLAc@`~5NWmQQ(<gxnoVGJD2D9G+jl?z`Si!L +|NVOOw;#?vyng@F>8sa@)JJn4uX#S`KLxf~@W)>N_~5W-_Nt`ZVfWy$-)MabsW*v#XpBTf&{WtOl5xk +Hz?^^>z?$_-_g0i?gSkUO<<%&Y{cRroYtT~KWZP46^Nbk=dr>17LkVdXQanM4MX<|3uiRF|?ducg(IR +Fd8A#JGoX-$lgBm%bK<k{+n^t@`tJ)57C0diR6HLkh;N)m`G4O3jlTLk%sEe4?qd!G?EC#WKJ+?O@Mu +mCgm2Y{@jT)9_!;#@)jj^xTl6{+4mJvhkM{p6y?#eYu{JXr#-A6gK_ehVFR5N3+(6O*XNan}1bv8fX) +6jG%cjp?8l~aAT#+ZmTT07y+I+-m?SU!!3&z;VBsMf%*HLz>>nHnbV>-2M)T~Sy_P*prGX)y+xywMRX +iX-shXUR3JE86A2ZH6u+7JU?n_(3`r^gYi>(Dh!NsG`RDEZW6It-?!CRN9hP({37{z>=u=+c%g2&!<I +8qvj;$j!ZMq7?dPNjm3kzI#9{B#hmyF>tVW8s+Mk35d<$i98&bjPJjGy^zQBJ_qI71gF=1Q?$dl8Epx +R{#yJoF!44th4*!^COAMZ^vi13edE$xlQP4u~6dcvbdbPrBA#`Ls&nBO}RohUxo~^0YIyYz-C&bHsS; +@hXTlBE3D6WrA*`w03&-=WrDqJbDkI)w!+dlqrh<_Y?0&RF{3_$6Eexz1n{7^<~evz%`Qw;iHR5F^+a +o>^fypunm6Axv?*Oy6TG~)Bv{P?N0X=`$7ZcQYQjodj3Y2;-~bj|9pbz0)C8biG)OlHi?isAoOu@xeV +r_M^W$KH@FUBs}#<@@h!ME^hofqtK}naS5<&^|N*|M&kHhC|jGIx|#$-&tnMrq+&p4ZBNT0{-mCe;Oq +ybqu?6BAe`-$LNLfl6ESFEK6AqX>89;QT?N=`iVEHTbi3BzM&s&3VZC&BoT~Z$CEV$1_V{B+%%s1tyv +|MI4};GPMz-T;XXzBWUvdlr07h(o)c$sS#GoZbFy6GSI`(ZY@n$oH)4~Af>2vb6g7B+e4E{r0=>lLCU +2Tv0|pJSzVKdrY3{N2BKa@Ap;evJY&(T$Z4n&H34?12j<)+Xv=#A9itS|yUOMAd7ELF(F31`$IU(-{K +Zy@__er|ev%p^o)V5sie*+UeV76b0QdaQ6@sYjVRLF)@ZAMDnBK(vaVyNnxNbgg_W|kW@d*iV2h_^I; +7}$YG5$O#`2`wkgtT!O&o{Q5RJvNKv8ZEl?*ez0Ka1AZn$4|n~GX5cq-p5ZesgeistoV?5)xnAGXyI8 +w9wQNZ>G<+~y6Td*0RR2C-}}@V8U8qWCZ0PkKM&!SE54R($&lf03F%2Imn;ptJ{Q3)<*-W6%JO1=>%F +(4*g=tWOsSA$%5OH56LD;*Dd#-)gh)y(wDc<zqvXhuBdt@08p+9rcYv^YiWnQSRjzR0D!>;lRRJT@*7 +_}%5(<#$&@PWdtI#w>1XW-SN-X3q5vbc~=f*}AsfA+U$dPkP1T9V{zAm^kusPf(a~IUPNcC1DhpiKeP +(~ENg&L71q)Q&7&+!fBkDDh?Jf_d!7wC9WMB_O>_dv<;l<wjxj@5Y%R{}SRD1%VuX|x-&L4rhG=K%ac +9({A;xlX4MW}?y&_%xZ#V%q%h6LOd?cx;7ArXBpUSR{HL70aE-wiOxb3!aYw{l^P;9SR-;&)nAm)h?1 +njHyFc@g;`B`E>`(SHbj%t0cb=ZZx}yK+lq;)HKpr;5_F7#TwAcRdmzA1q=U)M?F|^iakug(St9E*d$ +8v`W=0%uCn0?8wvu3>IAquU!$z(h>6dE(AES7VW^WGj5XWM)x^TiY7Mh+l`U5Zx~9;kAJQ^bGaw_DGt +q{B%>#;bMyQWclSmtlJ32vf{_5zGlXFK?3nw?LI~8X?38F~98MtE68mg}1Il@9*o50#Udl-KV-Msi8D +6n`{+;IJhahtK6XHzmz^O?~JJ@qImnWg7+7~upMjYw96J~Pi`>Bu24`pPrHMQbD2@~(J{CRvVnrE(TA +Btw&V1CxsA?YT5hF{!OGo>n;3z{)K%vTgy!=zs?o9>IjD!M=O@o{3sC>ud(wEbg3lY?F)!9%|BdjGXY +@UjG>wjc%v6+v+$RSrq6NDinj_NxF~KJJD(xHEK4~?{<5`>G*g!tl3cg{~dS6ohh<L|LQ}t1Hqap%dj +%JV^BI+LLJ;eTI9HwZ#;tT<&=DxW=eDNWjsk{Nj$|Yy(TVAyms5TEmC@w4G5d}B_<c~<TGVhNQv^h6O +m^*z{aSZse1v8bG!R!%9`+7OYVpDnK-I8rAa(e%ipd=q3n<yDMKf9A}2{#NTSsWaraUb3dbG|R`H_Z< +HwJt56`dVtXFSSosZjJcjS2bNO<ttXh30og5ROpmbW(@(RM<mJy;I0mM4`0f7hfH5~=UFVk%h^Yl9Gh +KwUw*8LmX??pdxxCXngcy4AQE!r5v(O)2`?%xwg%m5UfUG}Xh+vts!zZLUhq30}`uYUNmXx$yAc<rQ8 +ak)iC8;tKmIl4`U)vtt<e(R)lI3##pt?r0)j+=3_@NeWfw6FQ}*F8e!c+F!srpnF^;FJ6kvi_4D7i~l +{iPTQg))CKIOBdku9v^aHNR5E)BG!--e+yKl<6Lk3{=i1`iAbTgygP&kZ;c{K@49*3(8*`XRcpwG;`4 +%&p^56&+FgfN>dL)XTROP;KNo+MY^oPdWGMajp8j+AdIkxYzsUw$Q74U29ADxELVHGG;Sq0ch$-+%K^ +U~bl8JB4*E!tq~WL4+f3r$uj=LZMu*eX7a3t%ia64*3!0hg|#Xr=YZkMJQxA~2ZF0{6NMtTJwDoe^&Y +%%Erg1V`SjRDGOUF(X$oVvzvfm(e_#s_Z|SmEs@h+XkGVm0UL>Ms;Oz^nZ++uJ_~JdepwpW}6}YF8qJ +n)H-ZdT963ypI~=15uSZ5TZ;`0DGf`c-}4OLNtVJ|LEAA|<=%~jCpFh*1V<uhFZLK+&6v-#E8N+LIl` +VC?BlY370>7R-+T?NtodQw)kOmO3_eZVHmKwop3cQ7loT)u{2BtqzhM_@PDJF5w!VKo>Wsd7{p#$`r$ +3IqJNy3Z!}|_ig<qmqUNp;w5<fIGOO(~FXIRFYl9A+)EM@gX5VI`p<`$d?5j49P#L-;52w9xF_j{Y^? +<~mX#Nz)9I53gauLHb$MpjHr2;s<Bn!RCRR&&au`L)k3#c9bj`zcycxGT`Ld7`dMspRxhtrbh6&=u3; +6r&{u%GF=bU9PWKlA_U@533sn4$<TS$609rY;-Z4cZKN)I9dn2$KA&VJZ2(2sTB;$^|IA5h~f1kZZl9 +k#T6*c0#?d(w$90RzzzZo)IP1-6q|*A@O80;F-(I}L0M3=V-YM>iPH3D1Fop>LhBj=eP4(3az>gey;I +zd0PBS<w}bAJ-jf5SG(qf(G|ytR|9)co++V6swY7rdI;`U9dLpqM{D7tabs)<#8ns!|i<Y%pI*4h+Mw +@m-(}-T4vhz5lm0O)ui`h+?G4Lg)CQ{;aE6FiQd5Q@JnYks*adn$qD6JxZxbY350}*nam(*DqEagJM` +B^QIWNDVKfPE<&?WUxI2ai;V{^6xsijTFUHLA!xu4g(b&hJVh(YiYoC@*3iG^65JqRqVF-rVA5n&l_a +US4VSK_CY68o^UQvzyj(Z%h0eSK@bKN2XHVh9iC*LupJ<(5mDMUC`CzH_;qiJo<Kzy;os$x?QC2QYHM +1hYldeu%V+fpAMg?d{Gq?7IDPSeK0^vmviZGR8TlDYSY~=drES(gD-EPcOGQiHmVo2a)?95CqH{47%^ +uDbmePfb3ec)UZ^WIVxXVRN2?YopiLG2h9?+k>pfF%i=ikd@7C-HN5@*%q>|cXFQWXSlrH|*yoj%xc7 +2n8d-xV6)U;+d4;bEQS(MDUtD!vWt+yK5cN`vKRWvYA1q0TymuSoHpH%QZPNK<0%o8ua5^V$W2al$jx +|59}!ohBM6X~K8mj}-AzQ-XUI9ZhzhE{EzQ>p;f;=ytW9^qv75@aoG5J03r02~alDjNuND}9EU8u|G6 +K}b)TQ|Ki%n4^XtsWN;&9O}PbLo`*Rw3oi9%i~&bO=%<+=Adly3G1~rO~;_|3`aiNaz4_aH?M71iv;A +3!LQdVqeqnRf4g3R6@rc})MQG(P~UL<!Ms%G9FZqoi9v$`nr>N&)fpI*YvIet13(i?)IHuY&7v(Bqv5 +K&u#|2<xLliKk%BiPh&?>lR>Q5Y);ad`TC_0k!8tZRU!S8~pF20#TQTYUQ0`27N#tPyp_VC1V77=~RJ +KGlUf2~X-1ocgK}&a))w@wwBqt?8Eu~_bKkQ<Qa&X~GtK+Tv-P>;VFH5a5`@7GwWg4V!Ryq)SESg_MH +#wW(=%JDz%mH`{0<^wRaJcy0pmY0aW-5tpeHuq|IuA$+a1B%5l=5MW#<nvzTQug*6MrGt^U4@)R1D4w +Q+IG%0N+%roxhG6qlpe5CbgD~Bu3KlphXM}ju+x7&2OZG&H*bpH)YvO-W3#40X;z5+=cnAsDPjFY)p9 +L;VQaXurcnJm*!k~b=+xotzcql7eRNa8eXl2Wx%h)_o*}~d*LoukbhM!Af9%}0I!n@Zm|C`z&c**x^@ +Tqx=diQjaqV&h3`!~+~)q>N$aZUuHs<3UZMfer(<{8#ErZpm2hh^;9b#HzNsxKp~{BJMsTZ^l&Y0Am9 +7`YT`hmV`c{F8sJ$s2;);v9{H9&V3{}`dwqL$K!JSbVua3ew%<hS^KT6_9k59SjA~C-S`|S&PDPBRL; +i(Zn@17aZfO~9_tpuoFUSLnh@kMl*WNTPxCaWyZEv!u?bk$jNVKy!cB<VD{Os0seP1u|PRESU>DReiR +B>XT-P$L=KEuGYt@TRHc%oM$*$&mp+YQCPv<xAVo@glp7P24Y$b3q7HD@ND8jex`(gbep?f8z)1_jp! +N8o2gw?Ci*}c)z50k04E~;_7N}ujBTOD7C<)^sIi_l|!Ung1gdpQCH+ASo-JyL1Rit9Ut_cTi3zGRmB +=|Gg7jBQG_ICR_J-MzMb$Y=?5efF5idp&$cLk1my=?ls|^@;hU?SPNyc3<8HS*93C7VTEpe1K+yad)& +d#!w%v8IJDr=UCHGN9yceMbU{+g17D>9!g<DshMq%GxB{vc6p>W+-bgzM5fughUfS=CfmL1G2M~+kb8 +J>XQhPchDPWpyb6JvGrxQHze8;^O>*o8x*B6PB0lUp61xUUO_c6{PqqdUlAiFlDO^JK_qk_&-*2BU1| +E+x7l3&T{7g|WpE?v3DEMDC5o_$Z!mcQmwdG!roXjJMt>AMGk`(9%w?!U$A6)w!9}W?54-B8OHTks1D +1a5uD79xbP!Jy1iac@MhYmp->ZHZX7`I6Ot(Q~P#)q}o^i_TshP__(2H{D^RL-}^!H(+hBeAG+M;HPS +C{q*u{MzqAo|caNVvoZMG2I|o(5Ym1cbwTc^*a<o3D`;By;(YMs%8Uej+1oKX)B}b_QCka!&6MFFp)- +jsgfjbYuPb2RQagyhK`j4>bkII4i-A|KCBOHV5DYFwiPSE2=qk=N6D&8}S`_YqI$@W3ydMBBB@>E_dw ++XSjv03iMzTzb*J<UVKz>hqv%Tm6qOb`YIy!SC48gLj0{VJ6O8f^I7E^cjL%Ms@t(HN#l<SKDaQPEET +0Ka%VXaJQ*l<Uj)bVLEqcRNg8*S(5Ty^kRTO5SNjk}mMl<=r^S6X<B162{XMb}Xu5;|C~yDso2f?|;I +-H|qL5_K7uqg6_<jx|=Dz1cF`l{S3Llw#6EeJMQs*PetBdgk}m%jq_pYW$UMS7rPp`#Gz(Beqg%2;39 +&jd4%)=DqT{muWDI!x~fZZ_HWT8WZ|Uxdil0JIthhOH&(Oi=uvvPU6152K)s4Vyp70N863^#o*5NG&a +>e@OOSt4(NV1xd_alEy2l~nX`ah#_}nx{h9CAvYi)VJ)3>`E4DN06yV*FNXIHdH4ZRN4JZ=k~L+tl9l +6$!Yxt`ml+UH&yIv6_T+oD5M{bh~ny0-YD>!eFr&<BCwBL8`x7D+_pkkAjlwKpCK;rB@}BMGlm3!Rox +a=ktpM}zVnAYUjIz69ZNDG-odU|?6{Oh`-+1e#EU2wXJDiw^#x04PLnTw#PV!D<DBIW#i&difO4mpO2 +rpY-th)s=|DonVOG2Mdrmc6{^xj|><2jAMTU0=NdmNUCn>a7mMqRk>lAL{LBbNmXe&VL{Z}!@hbL0C( +$w68MUqq#%LkTW#TqMn-gkPWk?U$fntP<!s8UZe*dT{Cl0zLV<bPS5cVt;V6oDZ6QhVL2#br)-fR#$* +AFTF^D}kbL#8yAvK%l8GnK)T!!CrnZ|j7ZW(;<Tu~7oo<MhvoVG;hR3L0O^97<it^|pe2KrSPfczJC4 +^-MUN2Yd%wu&+-$YtMQ-gFK2gBmcC4}80T`fEL8;P39<{am3W0x?Pr7%o`!01bAZzy;+`4qa|Qgt&$H +m9*sy6GY{(xO&2Capzq{!G)D*l}4We^ND{|0WzjD%ql}Al+k4>Zx|=hF80FZs4S1ljQJRPE>#<mVd9n +JfB6~+&PcCL3$Qieak`><$ejkAvL|Lw_rr%EVLm<B4WC8(0xH##!g$HL24k8Beo4_)fhSJmB_oPOUv5 +?wk5NzBA<iG+ds9r@4U)i|bfhDLc|m{A;!Z{SbO;O|madi57{jPmrZdv<qNW=oaCOr^nCF1ZCUOB6sj +N8@RsqTS`JV2}+3u}PVHniAwlbvHlqB1>M4UVUK92<z(_;`Avv+VA1Zb`EWQc*v?4%^$-|`EqgQFT|u +tTrL)7V^%&Evtgcn88=9bt=VI)&;As+y#*E*-YX6BOO&X+<8Hp2md8h1FDW!}uv%0Lcdm=HFAT&F~L) +k~vr)-^z5@StsuBcnrd_Im}1;!5`=DD|0^1LV4zywAyPWt&WwRO6gK*7ZYov>!8VH_ZCZ~Yn1ij_8ph +Om-n;`686|vxDL9q+&6ur>XoWof6LdY&C931D%rY(RAB5Lfh86)Ake~)4WJYuk6zPe-nFZSX%63{vN< +eId-;|H5~xf76W*MCs^qQ`^rN5Ek>sNVVr=6|7=o6I^FoG|R7M_JxIA86#(Wu9_3^sTMw<r~A)CXjZ8 +LmII6ylx2zr;?@$){8+0SoYvHsz+L)Py+BPIlvNu6D{Bj1iGf?(Eg*k7>fN%`g&ke_&HPx(lnc13MAu +F8_$W2d*v)+Hr^S!>1R##_MJ2K}!sj-sh&!MhI4aR?7Rs-3ev4&$IlRhLrgq;0!r+J8wY+*4!>pHdP5 +5b5$z=w~;`pAwcth*d%}1>*#8<oS0=E))q)&k>5vaz8=DrieFnC|!zOXepoBp6?#sl_TLJZOM~)hF@W +(q|K>srHC*=Nu0g@@J1P}yPGI<0x=0Xm5`f`&I{v6??}po8IHAlOZ%iqZfBlkwJNdBll1clc45){mgX +M`>=S{z3sw=v2P4tOAN8O2ZYeX}u`Q*hD^|&Exk@ghBCZsgjy?0Z7!oan*hGEzYV17;&t4RwG}=#=mq ++`AH5$$LSMhn0Bf<zC8i`*A-mkY5yzJR_QWv$VM1DTc#v9bMQsV3JJel01z;P}7!a`S>Wm;kt0$ZmFT +(<t?HY(jpL_D_vi5iqlRAgXIWN}%<443X{r+-V`vzpvW|BRZI<}%Bc<7nb#-j~ZWVzQ3&pzs|u&!<^e +u!py`rmDT|Y^kW`;1m4ysL6vJ1|$J~FV2K)90J7D#4LOaIZ2oSbVVh&fKi9;An=fb#Ni<#Dj~*tro=! +apuafCJoJ@1NM=X$#U6Y8%Npk0T;R?3pMtXL|Hrv~*cb1s&RDM@_AVOo6iD~k<Hx|+Uypu#{r3A0KWO ++#2jULjuUlpRL?r&A+35EAheuBb&yJtVq<}q+#z65@eEhSZdkW(6K&tS@@(w?l19{EXb9MA47~@b)1i +C0_n5}+<KDD8fNBBn{{x~|uKf3ToAHM57hwplQ_^$g&Fy+8to){e!On*>M3J_Zny*-PZfxviYcub6VZ +wtIYj{gAtU7%GLl&<i_D9l-+7q3AZKz(E6;B&0*;<N;SnEWD)BvFMHAHMEThTk4U%d<Elki2MhZd(t^ +L5)~bl#;;&!g?03H7g8T5zG|F(RR$0pHO4o)z}C}?HkVuBlemT>uZ?>B`BZDF_W=gJ1E;k_;|M4$H(2 +bs4e59vbr&Ux&|dDPzQbGDa!(|%o<ED>SiQ1L&eQ7IQTJD7Ajf4hZ9PJ&)jgue1&M<G}AQVUE%?XW~) +W8zK4lhj%12z<k1j2-?tt*;TGHqJ0dxsW{B^-|I0ceUuqG!&A|BF#<S??rVO+-T(7djdLnwAmCT-4kD +qvOhn!l|jE0$1e1-Z5Es2-%%(*BZ7{!l?p6A!CvIPMk#%kD1J>$=QvH>&ol*Yl+S)-dktqD8xRM2Y6o +H72xCg<dXSy%wR`%vJalM5eLlD{QHgg6GQM9QQk{nYc80@o}=ZvtT*ueoO9RNjx{;ofn~;>EJKF_Y}n +8YrYeFP$|T9sBw#-h$<Nq?Js@MMRYXKLJ4<qw-@Fv3wV?-WuW*K^dY0F555HuQB@!XH!Eutl#4NHU ++<?DM}G~Mz*ragp599{UbX6GImy=g)<rP0+O&6+bl4d}1_OnAlNTtP#o;H58MQ%?omiBPHeinOcz^2{ +k?#7><lz+2x&{T;n86cMia$PYflYV?rS`;XlYE{>n7r-ANTV6ZF|M1>a(TW>e)nn{#@L*!<9J&=yzE+ +Pcc15db(e)WXX(VHy;3z`Ro$H_mV6}}WztY@>1%OWXaIfip++)0P|3m@;$Rg{96Cg<p2>vt!(;#GH@W +1j0~%<jhg*{N7A&GZ@vY-_-`oXS4)G<<HKltfsJv<*@MgA17DFvN6KI7#`d0C>hKAL0RTd=)e)#2kCc +4uf(yEr2A9%b_tU_a_KB%Yb*~EQ0fmk8w+(qu)M{&oMYA>v2*XYnZ?=Bx%?ibWQT7>5Vjels*W%LxE{ +r;ESq{7x?nPV-(xf3j321)WoES<|cqRZf$tx;xxmVLsa7Hh-QyEn2;Mms&4IC_mm!CUsmxyxJ|~nEWw +1$fziEt$)52G1G0Y~yPxpLxY2Ed$4X%nH;Ib_(Qb>;<FkCQoLP9wp>y~IgR#jFydx7p59eU<mcxf?#s +UGB?~Tb{sw{f|d$IJ%jt@MI7q-s(<D^i!N5-AIo@&g1&B#duuK#d{iJM)^%`u`Yk@mf6@DzxxfD_TdT +w5E=n6|E+b&5~_G{=o^{?x$3BG9a$r|f?0&CXanArZQw;D2ye15K5dMN2g{Gnl;hDvqQNVd4=bxeZTI +;@KL(GQ+J!F{^!t1<IhdCaqg|x62H18WMr5;Jo{?O$@Gt)slgyFi@2%>Ay4(t@u;B*BUSoy*U0nNP_+ +*M_-XAX<qn7>&*tl?jU}WScr%Xa&7Tn)NZ}XR1wYM3-Q<e-lt$q6skKxTyU|?FW(tY@`WC~qet=d%Xf +Hy?#+IF8BYRX@W3@UWtek4StVn>tp5DwRj+&alpS`SmQHiduG&I)AtFNsJ`RT<no<*C)54s?hVz~tx4 +d46+KRqaB6V0L%gB|yXJ-)-WmJUM+>487uLr8VqXtk!iD+S6L}{{I&++g`#c%aSFfMy>vVnI7!4!=~S +8?<ix-=R!Op8>8FdH02-=xTEI?ATd0ghOryfD|<PxhTb+V>I~H9qCqHaG1&NGG1_#z3c2G5DfuPhYu{ +za94by?+1c^WH@=d=!bdJB!Tll!6>Z=WUDjqRcr&l8^wxoZvzhT&Y#<ik&s+Nf+w0jZnIshXl;L1 +}mKZlsYIi0}I{`v@*=AFaP+(GdFD!bAC%Q1g>{sB*nGgi8B-^M*0``W#2Ivte;h(Sk<vcrY3#xiYHs| +9@({vG0x$yHS!>0aL1So)Z@M$Yw9H+1`T*zls%=dlAu`vnpp<;3I%f1k8P~tlU@fu7nUz*|jv4WB`<R +h)B684aSQnm^AIt~NTIB3Wh?(4^)cK?#fhXW-69yak>FvKeV>IDyF+vUJbH1H+w#*ULTTHOTilk2neP +$JLe5uYj9$e>RMh+jB|C+xq~&*E{@cdY!KBRhYm+QFyWaLO|yLll8a(NW!&cOL)U(@Ltv1hcj&MTO~N +;wnf`a-uuxvgr2dA@X3`GgtCF$#0YLL}ZiRfp;JU<2RIDtH_0OY7cwQdiC>ZOBG(VQbXf^b4e;spV2m +8vt-o8J3}%?a|*q=TsB`_wu#KkJ3Kt>-cmOtts1KFRplmXT3QOv`_FDG1)xU6v>1%-)0sq|H2rb8W2y +COMv0TyB!@2K>^h#K(Qc=tG2a1{Ceua)(T;&vA#iEY-j<p*0+&%kU8G!zt$Xtk6IjeDA`+r5VZ038rt +v$0dnie==a3Ai5!4ezU14kN06I@Pp_oc|sKn8^Nz8+NSLIbu&Z*$NWf&SMx(W%-G=)D#*^=*uRYHuXP +#cEpqe?cqn=ncwFS{0!{x-6!CpTkCZ}Zwr<<mx0_;MB(q1S0DG5r-}=Pw9Td*Y0gSJ9lSgcN91&sNSC +geh&J(gs6^RvlHK?7ZAo4+k_wRj6@UWKW(ZkYSei@+SPQaU0_8yAR&RVviq8@iXIf>f`nzltWZB5SN1 +=WZ}aA4v8ZA9OnYDp;$$9v?w;U6MDY86B2^=Y(vF!B2v6_LYZ+!*sEubuvN3(Se86LQvGy<l(PfR!!j +2@fqyDBfM5GH7~kpw5gi>ro@S5vS-6vDs&S-c<bp6`aF|`q2&n^#&;Vp3sq&)`!ex`R>kWA20~9LE@O +RH9+K*32J7?dpCvy7nGPLy8%QGGQTdA|REMd)zFm8-6)Q5b}@5_=t3^e?mt^2)0$lr}418Uyza^*5@9 +}>J(@Uujf;#7&iG}m#e+&M7F<=L@yqyC8jg(w_#HJ$Sz`zYW6a+MSvf_!_1NX)W39(Y$c25y3LsNOqe +yB+)=LVW9@UJ`u?eG7<N;c(eyt<-c2Bu}sVL)L$$v*7W+d+ZfS8Z6d2k41_#K9+1?FUxFuKJlgX<RfI +Q7@IaM$}__~mvbU>#`j7IT_qyiqiV2(yC2-JkKao2pWK5K8`iMmM>C(fq#Tqy;DZmP+%oh!0T_6RM22 +TJR#pq;?z8vFBAG|4`HegGjANM6Uk;pG3l$|n(Si)-nayFWZbfh}h66AG(>HB4ixPU0r*IFrz%pIJ>Z +We9lB0Z;K<`Q8VguNXyIYLsCeIk~)!A{V37AiwI)LxM(pyrqBIf762l9Oid7RKf9(iJ|6Xjtt!9(Rcx +A750?2>*q+{o;n;je`3l7|68(k!KS$k~kWS$OU{jRNTbdL;+PE$)k0DG)^3A!aqiJhENuJ_@JY=B2$* +w>)O$u8w>qH&ySZb73lsceD3y59OW++C#(<^!J$rL?I!!DYJ1Ft>=XpK?>yMb}*klcRDfkQ9XT-Qscz +bp-}6<REKBek*WTs-l1u@{KFlansoeo0dneS3>&1RfSOzbkX8_P;c3Xc<3LkXjbrR6*W0>E>1yVBxt! +bKT{FIBx(cNMDpk79`KqxvY>c9L;WK&s8ajXVkUOnqx-y!^Zy%ILh>TlBC2=Jyiexvk2WI1X5f7yR4& +=BH_CWxx`}Xm-TER5D<D-ttKlbbdxH3%lzaeHn2d@^lqS7)Fx{Xbd#`?qNg$-{pa^AHTp_g?)&4h48j +c)^w8-8;le)Xl7$oUz*7!-Vn0UsUGu;F=J;1+@3e{<`HhpeW2WsfR$7L}jClZjT}e%*`%aS<$(c(6^J +w1ylj(*{s`?Ke8)ETt8*@3_-yews7OALY$+?6#A{<TRwY@U@k|R0XNzD+o-L+S(epKzQ5fQezM+`mxR +YD0@a!O4J>P6S?=duk`MF?^CNiey)KF`3u|s{%8&x?$aaH;MmEnoOV~c-Ok_$w*v>gZlkruMf**p!nD +G94Dyyf(t9P3E1k>w{^2Ea-vAgqhuw$ZU?3e^@95X7)_=w~L<h&Jj+aW{R_gbUL?wlm@1}6L&Di3Rb( +~Za%)(Yev+8#>lkIScUX3DVU(3okVk|5640aC#UaDVSO2i(z^c38NLcM2Q=kd9UHy$bq^#;cqxqp7#> +4{QLD@#4?b#Uk^8|`-wk^SD`hGIuutu$q2>>vq$sgH_^`@LRXm#3O$E22&y0mQNPQopduj&=N^@&|Z` +-I$>cyvCp$USn_zc#XjqfY%uCFG4sO0}m(Thu8n}!|M;DSMUDv_5+kWR^M(w&N%(ktM6XFiN+IHgG4+ +ugjXRNlqee>V8wWyPA&|%ioq9ztN0yY;=c{R#9eS8ENFy*G%f#b&<H#fHBcY|TU-V&gF#T#>O5b7x3W +|<E1i$3-5CU7@aupe$XjUk#kFC>im08YR=4Tppd6nK11}pK_&!*=Ile&DJmmC@yD6hZl8$5}hwlDUTt +0hY6f3(5&6|2O6&$OqdJRONX(%<SB_{n6GVkq~y<fQCSsb_q@8`u0zOuNU!8~ZoeLtQEfHGdh*O9m-Y +F$8SbSUk=<c?erSq66>;*zx;C;<|kWwykn17?tIS40Yf+r1#NLzOtH&>hVBoSSI5jMFJ>fUoHQxv5xx +`I7Ypxcly2zkyGk%BrqWsX_}us~ZBynZo##FmbGO@wumqw7iRC8Y+c2DzSKadY#L~Wp_B-Rrh=aRt|T +93`(GmQxPZva{SPXj#02tQ~lB95b956((-4_X9(;m@zSVTi4FiWLiE^$1_-{hU@!zO*4-w`cS#Og<7h +RNl7qpd`<O5RX9>86jp4AtkE1}G7ve&-z|FOXg`SI;CKEc|C%}M+t=4o#g;I_AG#n$|ZvHs|wVCSr_y +wrVG`<G8AT+!B1;;M&A7+4V8<O^89KzJ{8Jm0xM^km9rJ(S-gRerWikPw}p<o?nlx5k_AoC%ti0hV&q ++8gMV`2_8Nn&)7$V7SpqLPVA!2D6j<&8LO8E2RA!8o2};+aLOkCNCtt3`}nI6KfMyB4jQ!ysQQon>n} +lR_G_mZt*zgCFYBLH8uXZHleT9p7@HEKZEZ10|q?C$^dyyzaAJxyE$^8mC&_KVkkmx$-tP6bNge(54@ +S(Sr4z?{Bm=!R$g3I1Hp`0dx`hsZc77ZiHh0`w$$&U)BkfgTGhIF>h70#8}<sc~;rw57Ib)p*|1)L-% +<&{EvWQ2>TUW5B6D8jr0@M!N3`iN$5rBgiUl`!B9ndx!{QMOPyIz)%og<H$z?M1ssOZJHqeeeZRJf_l +k*EBrENIai}Je3B7Ua=2NP93X>OKhsg`fDv`c!8+P!8#GV2d4Z){cBJl(#ze9{82t-b5tp}Chb-Q8!I +9QGExT5Is72x}neu=BL(Y)N7efUDQ;r=G~Jx**|6SSU`tqI*qo6xO*h1-M0?W)az%Xrc_>9aa_?DdaL +OdUsumtsd@x363z?i$IS1cDlZz>61Pjt6DG{!4~0%=soAsaA*~PLDmdB~iuWz7%Ggb-w_gBF4chYJ>L +cA?OKiDO|$;UV)(}_DsB738Z9Y@I<$84^Vo7jXPrL@q>F0OAm-kp3rx6h91H7a8Fr=uJ?dQcsf{ZqTm +IGPAiQC;Dx3QyH|pS2TEj6GrRPapxqhV!Or%mazlG`SGc>dD1I~rz~2(1;62|^^6%w7RtC2TyUh)Dq8 +jKX+8E`inzOj`q?~DCtj&3wyOWj|jY+*w5kbF1NkeOc#rVX`@j3hDJetU!&_kLzf7d2SExfxNR<jt#A +8PM*cV)^f5hS;8cURt+L2Bep$!5Tv)XNk?OT_0%n##nPLhhf`^FiF~<m<_WcuaUb=FJyI(&YrE78ctb +?s8-#DJ1T$Ems*{Ea8(=ieM^Xi_C`u-7swp`$n1Lo-EBZmbRt5)y)YA4y7{8Fc_K9G+U47F@<nO@`X# +|J#McIKO@kK_=fsbRcT$t{ixJO)PWdGD8AGiH+>z&Pa;(^2!|MI@=3}5Ex<XlUKT@nUkG<DvQ!ttL%E +y6UoIMdyB^?%KaLs_eHn8f4445q=R7X)z;G6o0ArU7wDV29s<N}*cXq@$coJ2mFjayDoinX|usdEZs8 +@==+}bSZ(UV~J>qyc~hs6g&`Iz|DDwymX>Jl+~Vk~f>vp{J-U>1CAG(LrF&&P0ghoJ`XK+dBR=#OEMx +9pXgirw<ga30tb`Gp>Ou}E6q-v%@^^fs+P4t2IU+?zE{U%nJ>sO=4#41^$-;t<&ykDVK7YvbhnTw-K` +5Y*En^zM0D`r;Trbi`c`UDWlSE|nWYF#^W5OS|?<?#;@yjSWs~!#b-GZ?w~kuIAYyNKL?RH6C>j`*aT +E?6gds;|E2;10z`8>)|!1;n64Z!!(d4-zj$6?68lpXP<Tg<fu2EdnRYHtI>^N!}dyy3vXLIDFOrY`g+ +MPNATxeQ~7*c9dD)LDEn4g8xt?(9JqR<lOg#13#_JZar&GFpfM|+?Vgu4q3+PsZp6eO@fW(%dZyybc~ +P2I?Vg?0P-X@C>gsQW>Q>3WX<m+TWfcZ;HQ*(bPV<PBm!Dle2}FoXPl0;}a1CkW767h?PoEFy6|8CiS +KMl<OlC2SryQ`g!*^0KN~z5n4PO{8f-4ad0ItiyZvnhjWebU1!n=UC4jv4=)fm9wO<}#vJitxi`@FEI +#NFt3yS?Fbd^{XB$}SG7!bkn5N8M+G!BGzu{r=PE{o|*D=iS5S$4Aef_6AQ6kNbnCgRXm?TjzG8YC_y +?4D(ldwJ}`$Ha8nf?=@~(lYWPTy#pL9My|{{zvIFFjt5%{4|Z@1JlL-c9P<I6p1&8U%+&+H=YC~RV4L +8u#v2Hp*xaiZmB_GP6^^8N$E@ZX*V~{-mI@(H!0g^d2uQ#a!rP1zG(><&7g1F5C8DLNM7=2*7JiFwe8 +WLBkDoo)v+OURs>U1AV4RDR>ww~Dg3|{bT&Kw|YYenb3{*JdW{Spi6%8Nto*zEIa2`JG@uzkNw;WUyV +%<Ug4Z=ll`{ebPg^T_I_fLyE+&}&Oy>Ru}=Dl$3H>qTr-v-|DmSU)ZN-f3ED~IB{JQ^)93qPa;M!<$Z +V0gj0eLtIdksRJ(k5XIm?79}ARz+hJ$JQ=SdBjrrrg$OYuus{0{Bl7FNM-6B_=hkS)D;D~rcfr|0?{0 +^kcQD6JXp!%#W<c~{FN7lwl+UkChMYjn`A^_t3R11gmVQ1aC=1JvDM8YGR<PX)dt~4E3vzZBo}hLnz9 +%_6GBJOqC(sL;Q@%Xp8TH=g#58$7e2Mez`}a4Xbz5A_F(u3g=XFV3Xfpv5a!8sk<GI8hKMGq>Y&Ju^o +Z7+Cm+n(`)+N@_7#ygdsst3t-!Ei;zxwr)Q#L#4P39+*CW@z)y%Qz9d}#q3^Ia}79_e1GJR=CblL7LA +<^Zj$bCbiZ|GqOBKn5TeC>$nHAStY@EZq2uNp0DsBSNdZRAigMgi>f?WAT*=ieqAx-m|_!=e9M!l4@@ +{5u@FGakRgp+7hrx;kLn7-0V$4&6dKt7Pccf<rGE|H@cQD5ya*%+gDn#w~&#p`byq8A-tM*KKh3!5zW +fWqKb)4xE@<C8GPlJcq{Z<v|Z&p*8@zhYqo^aw)32t}q<VHUqks(4Uooy6f^Y_zXAx(JcXchrT<YO!o +r!F4^0(8FS&@C5z=b9P;Ss0dhFBA~Bv|<jh*k`2;QG(mN2N;laY|@dL#=_JGvY&lK1w`=h$52L@0FB7 +Q*EVl5nYhl)mJ-xi16Wk;j3LqF~n%v)KJTDdW@@B`+?$R=cNOpw3w+?Zf-TVMj$RELQPOdZb*+AL1<^ +-3JKUBw(af=<=A3|+zVlLiNE8>pPOnQs$0bQ^9;-1`JN`I#Z0z9i@oLMj{bm~WrxV^X;v0P_;!VF2^1 +s1m^(e|~TX^UX<3Xvnt95~>~iDo3eRYg1(q>_L&tzd~g4?SRJbf)-wXWW0#pe`BC=C7a)Y#w+5F!JuM +^AS)Bn{!Nj_tz6mQ1o~|tjo0bNHWTDmLmJ1u2mKs4nfspnI`C%C3j8ljGQ@R)ZBI0w$GjHhZpzi&@?_ +;*PQ32UWScT31{+g($QC@ceotQY{?FMOFEzl_wlfTa-hqzbZ#K?qlWCUrcAmPtN~^OW&}5TO5UoekeB +zD54Lvu+#cyo~o7Yt#jo&lSzOD?kpjLIPf!YFv-mYjv$q%-LlGi(>S$y2Z&2@JZBD_&$*2OBvwV~a0R +lbdJ5!ub(H~dTy7}(VxJa-Y#b*Ub)H*k^1o!#N^pnq6hq7P+`%9$}j6NfG=yi=-&3{~`NHX)Xul^4*X +R1J|{DSLv#56P;slY%k(`y(#n(t5}A`_oW+_(S>F9Pt8&Ud@62p|r_x&C^XaUzOE-y@}g5-I9L3Io=? +kH?OI{b9X?!>{NfkPV|J`vChj}{CaH`cK$z5O9KQH000080P|F{PzDbp-1GYY0P-sY02lxO0B~t=FJE +?LZe(wAFK~HqVRCb6Zf7oVdF*|Cf7`~<;Q#s*2z@C*n_~2mq^)B4D%*0Rt1S5}rD-2UB|#FDV1WPwfR +foH{p>d{`;G-k$?9{t`-N>R64;&Hot>SXot>8_!RFJ=V3d!O>}oHVSCh>@;ggLg!89Mw(>RzdW>HbX+ +um%k@dTc~%4drrxw@``aMTHQwzhURceb|w90c#8c^aJeg14h@=SdM$;dgN{P0BLKvmhyh>$r%Ai{Pq= +vML^TgGmv`K|Tpa*HLj5cY`VqqHGb&;-Z8K`LK$T3|a;_5p;33z_Qgf04noIbr%&e6dwmsS>~f80*Jv +lAI+z6Rz(%II7!mD48rOf`VzFxM4eWL8XCt@8YCIOiv#&8xJ#<*d|m}bTvkOgLMUA*G)m`V?uRUpCeu +W;f&d5~C4!xoFb?c%7ZI3D@NZ0mo6U!5QeJlf$~Zyr!+8adOME<vGpq-r`64fZGEP&3kwEWh#JY!62H +F82Gem7AkVS3ZUFTDKJb<dnyvU&0cua%N0d>^ohj>&m9IP<O(=@+>Awsj+IKgq1do+RP@HQIew=oTh= +RM0S=rQ*MXJe)(S-dK*BN)OE@y^(T<^k7{F|Go8QC2_+2~5N+FQ`#>ygly3cZb2*>6`N(4&EOIM`yvi +_osh5dVTmhXdRrv?^ZYX;pqIk)9=p%DDnQ_<oqAO>6_r-<R8Ibk4|1A#t;Ag?)~A}S#bJ3IC}f;_~`I +;H#j<Zb^QJ7qmyrgmr(QM^gK8|dV6#ZV9!sfNdfHW5bC`FAa4)fzxoay9K1X_K05zLH+XY&eu7Zn0N8 +`z-NF0wqgUS_AG{CVegFR5>DeK4;WYq0IXZds9@;s4dw6mVBZ8LUX>j;A_!*picW``6%^iFXV|Y(}e0 +BQnAMcO8{q8*Y?)3QeAv}C}2)#Rad3?x?o%{n=;_<=J+ivjs;O)V;hg9zr;Jl}TqK7|xcSw(*#RK^Nt +MjAN6U5D{)06Y}@Dp)!e)|4gRsP}V?64agygxca#JqWb3JoA)q0T9Rftn|W3<r^pJqH+ScAyZB<@>Wk +-JjQo2gd;I46B<{iIcn0@57?)_k;c5$BkC2wW0WpWI&t2s}z<v&<qmXG=>E@E_nq{l8nhP{uqy7H3hO +NaG2>7zHjV5=4WFAS3|9X3HA(VyNZhpSOP4SXf`YIXmpLe92GG<gwoK@4elrYDwF99>dKCGgWIx4lwT +DQFF;roY5ehvMKl^IfL&ZS$j^Yy;8H2#t9cp~F#Z{^EL?#ACHMiDl<sCXSmbk9`B@uQZp?fjjiVylh~ +W2KP%eO9egqa!Fh))MVRO@{8eQW<qY;=C?5k*DLv9sCew&POqJTdRi>M%mJrc85T}Ksl1^bSO0XS7LM +>Yfl5-kF2EPykm3uG7X7BJUYZ)4-Tn0Z-*O<+l^kB!Gc>pNhUz|wxmi*)>1D+r;-xQAT9)<TFD3<ZWa +-53m7&&w#CGv|KM4W38iF^(yYUwqaY3}9y%&XcqX<}>Ie*50Gu?+pO_c+lODKaUfb>?j>DJC;umvhg5 +@(-?Q4as&4r^{V}>{rnwvxH#nZy?!6s?)P5|f*kl~RONteqLtWzr?KAMV3rH~6}FG;3J`)@;JnH=0hz +aPQSt1$y)<ET_VzY50{Bb{*eqtrtk=JdvvFSZG+hH}0y{>O!X6!^v+JnjI#1-9ld}cLjTEY>2>pP?jF +m&K+X<cpt!@kcbsv7#Vz}2hhfv9xOnNtik%Fjk&2L(pFM!)qBRwL3Gr|PF?sUWo6+{9X^=yvYvbn>_@ +moy=n=gWkHa%*0gLW7Hp*Q&Dv-Ty!WqO1~huBn7h9EGB5+Ku`=74x87LB7}3R^bstS~W1=&-p@Heo{2 +D8or#@cIa{Xd0JdcL!)<eFND*2YzYO^Y%a6npS$;B{|hZTkqp?o>nDL6mRcET*2lKG=X!yVHH(mXdrP +AjDU~9rVShi*91yd0rH3v=?Y|*3i<~Nl*A%f+{BEcOtyxi5e;L!5miFGk=?BE%xf4B3TI_LjU@(Q+5l +Zs!6}fmtHmrCfzYtnxQ#zz?YrwZ3+{@9R(2JCte6WFB~9uk5IV3=Vp=GVPz9KZau$J1LhF%58A%{_2? +!)nTIQlZL>Phy1r2t^?;z*~Oe{fwPvdIT>rk6N&2z+$Sd!e0=`bFn%rnZT%nUX*zKtvD^;s3sI^EpZb +Uzz^OUi`Up<<feNgG&P$DVo+>42LNjA2y9Hus(8WfkP`uFx~GAxk6~Jcs6ySbD+tB?E!YSuz{kA>xk_ +?pq|MUFUbu9AbXcVCE?^9o{yqJ%cz-jW^-82w0cTUqPn<eyQGz?%9ptfgu_}iQo=c%H~y(1IISoV(x8 +nVB+A|68%PSh$kL{WW2Dlfs@e|UI!)t{a0M%r^Va6hzXoI6{lG&-k9CSwQTMKz}8>D&Y>Rt(tiFHk@Y +4i%F254&-U}v0-m_-wExh4ehA`#wRzB%IvpZ=7Q%%&24JE&f|)|^upGSq7~~oEP@SNd4e?Tjt-9dlHO +BK0k{4sboGzQ0lyM~p@dV%u2sH5$B`x3?Evlj}E=(W~V3vwW5wr0UH8#jh1|h-*G-kd5On)|kGp8OW9 +6Vs>+8iO*Pm>#s_i;=ows?FDY^*kKfQQq`KmjKl!K@){T)_a>Mx{kqY9;l#EI}tc65C;NL&+9IUD%@$ +28p|^o!*zdKeqJK^JE(Ho87J8Eo>z_TRU69*4EyayTSM8udpQS^)Ns#M8|D$)()P}s_E$JFLUIDy%J_ +_6vJ}8ihEgHy@000md;CggI3~Q9NiT0MDF(Z6{g@0pUL8Q<Wp4_rThv9vy6D1s;UYVai3OcgiKFCNz< +4%4fSY7ySn@ZJbM%mqtT6eu$Td1QZIp8U`fJci&yeDzm?Q4-@*(}uYl3U#fE-TRC%5XaFcm9qMx$HT@ +lU1JLouWDImHAs^|1%3S0FRfZV8x#hws^ge<VDWhvE?tUXEaNHBr@B?iHN6wj*Qh~69)MPBSJshJp6a +Z*f3x)W5lUtOc1A#1)r&H;@}TjL6boX2&R56+mwUNjuZsz=DAhhpPgR`4yz+)(Z<9AxN7BEB^CRP|w} +_eU@AwR*6sbqAN8ny1AW&K~2}AoSow^o`$*eOEvg;GAor=(G-Ctk(n_KW1Uz1Si10+@a74l5L&Qc5ot +DQe($i5_L-N0pA7&24{T1rfBy7(RY}@R=>bCGD)uH1qs8zqWCSbC<jv5F<$rdxgU8WHh%!ya9)<1YqU +eMh!!d*uzSx7Ddmt<H)M(^K$wV1p?!kYkHzFbdcn&D2mvgX-NLaj7Q7vHCA&4)TF;Al+~w)L&S6!mCR +t_<;tVN_+5z4My%UYF*kli79N)%iKEo}OAd=7zQZ_1C`EWwQ4iRG?#NR$h4E-v<iRs`yNh3N;aErhj` +0RdEmh(7x^7Sqw0Ukr=Vwl`4&gW%7B9c6$;eI+%o4VNZQM87!9FRIiZK!|?aR5M}AfY0s1&Y{OX88uO +7_fYSAH<c>!{Pi2J84dZp1PghZf}cD5^spx;lUnHSH*2C!NKoMD#lW}IMmZgLym#=SA)13khf1=Bb`$ +cT{Y4uzjP?{H9X8feojUXafGPVgmW=$$A|<TM@LR0?v?#1yh@-M(T{$T^{M-Pr8ELKwV9RMte6@#R)H +3TfYZZA@-YZ=P)1J*qV&|%46#%P<Ur>m6mf8>%lXidZ6xe4&(Z~T0G7lgSdCfehiBaLjK~fK%EQ&e*R +1w&#*I5QUl!CxtUBS0RU9+n^d})-N4K%PDy-4qlRi*-9|X8~I;$4_H+cbX#!H8Qs=+`O)ZLbCQWqnuR +a8P%&>8rZvj_shlwD8sC^txpMZ11fT$O<5J}&#os*aJ|3!RdkNwQI12>lzLyTz&xWFsg)!omD%&WBpj +6$afO$FR_`OFY-MworD1lvScHRDq@s77$(r#6Qg?OT^s>9@D9&cE-Tf3JaCjyjZO3ud{uoRHy1%r0TE +QOc(z0D`%}%Z8e5#RcL`SXWtJlvMKEm@CTUhE#Nbh1v|LDvuUqHwM2=t9kxVstxiC7tamhmR_AhK0|+ +wci=x<=B(1Q+(!_(NhWK;6_L{TPP<z<~HB?z+j;N+PMJ6Jkj1NB>xc}e-+*vN##-R{(ea>l+AIW1M|B +}3ze{uWmu96Pn(+19rZ>2Kjukix)B<3TbU!h0WKoBQ+b(GOB)*;|mlrQlwsv77o;?8O54e3?m@yi945 +O~F}-{$A}t2~`g3F@~vefY)b$}u!^n5nO%7~>zJYgR+=fG@>k*^u7n@YhLBzxiu*kWmq(jNu>Y;xrra +_ZeTW(D%Y^2AR!EK++)z$xslB(Nn>J4l`h#42d7t3#x^w9=(aGC^bsf+Z4(URpX4VW$M5sBg6;)n^cd +iy~W?}<Ix<5=QjS9mC;QNzK^fsk67XCCYha+%A0|R>EIt~LeAzh8W4Uz$CanPyb{+AE*5`4wX0B~kL6 +zh9KR~iTA3y((Sby_1=)N`jq}xk{`RL~LQtY?@hSzW{5-l6KTl_ICVq|1szn;VVofYP$X(h(#Z7b;gG +?F;6%m(1b<TI^Z;ubNDybIyY>uW22SpL_@7c@+KOUy`yjV@a+cP+3U7Hn5-4s25b$2?UZ~0v|0%9a&) +4*e1gF*W`{>W&tz+YF>)Byb<x{ciarDAobdika1^1~ll?!cW!H!)%Ya7x|4-+woM!t%p4c2K>_Q}qPa +>}>+44_pwnhyG>GhYeXFo2Th(-1QDdauG;cAlZe!%nnd}$zNF=BzT2brKD>@HtZs6HqS<qgl42}aB=m +Mv%rdYn%~AWy(RyirEqF6X~b$lyvGY!E?&aK9*YSmuTpmbmqnCa@k_lPEr_MPG)Z+vd_iMqo+YDv9BZ +ianN35ulOM<{8V7!o0p6fbFVlQ<LpUvxs|2{^dHk^g_RbAlNp_yVN$4Z++(<SK)gog8u_?N~cbcK)s+ +cxy=WnAKPlT;bwV#Qx8N<Yly|$c%4a-64pr&w!3t~*U0D_y!T^F|GY7U!z2#<SmV}?QIor}HQ%Z+#c= +<h-iyUxYdWw5^=>~4T0g$0E8^Y-BH{iBm}F5a6)AIs!lENbAz49_FJtO|OF!?`Zt0sN~T!1#<J{W;3t +{99<r@Vc7s=I~66C<4J6Bo)5LPO`Gg#~h)hn2TFIzB`YEQWimR)q~>drKpI)NjaZ(gEY>%L75k1u?1^ +4MlF6<+y@e}x_JJ_yUPV$7pL7|nm`p8F`zdFsk8|pi4gXQ=;854`ocpa=@Q2q=EDyit@{F@|8<eiHWR +vs#l?kdm84r)m`4owjp_IR!~UL8X(;8AI2)&nUT}n(5<D$)aR~xmOoSdKN>aWMQMDrp?=Yi(QGteNhQ +n$i0g1_z!01vhQxKkuTMxb$krOTMQGbC075**}8Xdpr9*z|Z3Ivrw3i>7J^?JdJo{1s#J;BpmLi+d-b +*3v@Gf+xXK>fikY^dj!9+S!KNZ8+j2zOJ8G3!~PGb@=V;1PWo!+AQvOQc967AeVriK8UrlwlD^H)OmK +e@sXlhIWZ@&(~22Pxn?RHS1I3j^Pm1OpIb^+XW6}Xw4lLBzABWS7H_<@<SL;`{Ojl>&POW2!d>PETH; +5z$VEnEZTo~^5gi~H;pCnlxwiAFpZ|eaTHX0LHoxa=k4HG0NZ~E>nE&$`&{hoZEjz7I`H?h<HME#7&e +ToL}M6XH~}R(_hBY^8l&|l77!YG!395w(Ol9ip|0-tMSK0eFjaxYJz=#^7PNpVAx{!4NpU3ZH}NA<M< +N}eVgYy&vZ7Y6oTW(>8gyTy?^@S-(G29saR@VyCJmv{vo80j({Tw<ZLA*RLuF2qkp}WA&RAACU(AsAp +~5~47c^Efej;8NZg<eAg_t2sVm~fN5tPF#R51`(?T7R*_(L~%-VI)KgBDt_kbwegy~S1oGlungbQQ@H +9!=4Dl+5a25#ziG5*{;GRQCz}axop^1=W7g{=<vstsmQM)`jQBo3Q-{q|6fjYk$*bmP|7S%>-9fkXB? +X5k#}RRMXMXGmPyZh4r!0zmi#Kw%j$^GUgCR1WnVxMBhUVsIy@#0xYw!!3PK4L{Z-!m7^r-!vQBQP)N +f5n=kNeOD{H1?nG7a*7nZsmtTGT$3OkKwIO71cuaqu1+9aZuU;R%iH0MXvet$=yg&)j@G~m9(I1w03g +GQN{PRv{LrbZoaPED`lPnzZ?ExZ0bW0UO-abNmTjQm+b^)Rxs_~0L;RN?*IMGE{@jhN30X5?Rb)R*(j +NWO9;)y7Qt*NgiHH-BE+}?v0ZjwMVc>BC5)v~JPmb}mES4`@j12KZ99xy=rT+I}MqFEn?IqgRU2-+|N +!MFZGSGe?>C;~=3i$Wk65JW12R8Y?a-5%z73WZexcO#4v+#W=4MJYgqXiU)33@C|j%j)`qP<_)&luU7 +AHCnEUQ;Qr*UWF8Jw8WckRj!m<IoZ)8)5dKacw9!t`ggHm5fcSZ)4X~rY^l(gyv&1}IG)jlEug64Id9 +5SY#x{YBr53|5>{rJ$lFxnIw1TeRlgsi*;+T4L3O}LKHA?RtO(*kn@9R;AQLO}pd?Hi{A<nv5*E-9mU +s9sR$;Q6NtxGrH)HwN5OB13=>Y=&Ho~wP;1{NL1xnzc>=LK}L_VjmU{c0kXj0icS)-45k($tOgp6z!+ +w!c&O-8EF6sBWDrhyC%g;=uaNhS+zPK>LM78LHp_4Pt)25*9+j19gvgXlI-#wFfzV0}5W0QxGUyG*** +N|RAl!p4xJjq-e`%$Pjg6>9;;6wcxvBL%(?Uf?gFhW=W3?HJO1Uu>(2x+2<9E!>pAnR%brHif}(!IwZ +$VbA?$z`6_gV#?R}5V`I!E~KfUUW#bnVZ#{ZsRLj{YRr3ppcXxyFm9=qfN%tO!U`TRTRgg!S90ffp<H +!cP3(q*k}7bpXM`;n7uq-S@LK*80lZursO)2N4_AS57c+BXTciq^OiV&56%pC|UbSIEm2Z$cz1T-#GS +t1Xi{fXJ&$BUe4Unto7n~o)L<lf%ZL30k3=W7;!T7vr2cPRcUdTS}sm?tMK&)4CO#!k$Dly>SWjHgt+ +jbXg*!sNuybOXcVk64n^D&%ZLY$ku&&TMwl)~RmEBL%N2Ka=Mxpq}6-N2brCPeXrNvqQ_<_fK+>ystA +$7e};r>ab&;^ruu%_~JfU3wN5e1zF=z4+{T%VrygXa_tJrr&y*(ION^P`CyFs1Tjl@*2UG=D=y?qDIR +w^w!|S-EBFGN9e=E(y9L-jxG0v_C{jKekqvDzKJ;CA=}o@X$;$*bOXMW9Ygu-V$W#cvg?~z>tnXkRgf +<XAaKm=xKk&~^$?-6(46vd(mdmWsS(#D-XRYLK>ScIWGM`*b}W%gi(7RGOv_#LS4)}Ib&=m?Y*)Z1Q} +Yg$U1Zp9nOgdW53Fl#L7%kue9ETt(A`F$hRnI8PXv*?dnzWU4Lr1T)ZKdvC6%kVXmu<n3_Sg`Y6oI_x +=6}&I2N60K!)geo{HURFZlV_R*ytrEQ#x*Beno4R~kb&{0IxOB10qUrDk?piq~y3tJ~I1%67Il6!EZJ +SE6!z<Op`;zyXU4#@K}iv+8<(`|Ad=?yZvIs^|v&)r_ei(=SxXq-cFzX(tmU3o7GSGT|oIs#41e(se@ +FQ`HPyMiJ>^910+{DDAG}o}PP{Dwy6%`csGxx>bz$Us0Va2IDy?7G%>Qd6&@{3r6Y8dzX%>yp+so)_N +p;>=Dii<ZG(B$+`?vpVTqCNOKT`LP3X<0T1=!NzvpEmM!B^_)y^wLNB?*q54Q;&+H?ekkD|LJY3PH;v +3|~eD)#dqB&Zy81SSSJsBbr=y*(Z(9|tU7w#T|2WYa$r7a05RPJ$I;om4xFO)eFba@R7P0!VP!2=>T+ +1VsMAgZK7r%FU-%H*Z=JGRFt@Z>CKyhtg{u^Qxal2`E_Ypb=f96MoghlMY&?2+wARca<zvq#gqc=m83 +GU%amav9gaNZgQ(oAeO?+)LlXfnZ|;!(=hILZ^=e@4k{rLi!a(0yIXB5SEAKDW0hA5_XYUaD#K{Fe5A +hg{i%SkF2YdZV%IFfgKzbiy5K_+CY=+o~g`c_R_(FGTGwkT?phZplNBM-JtgucH|k#CY6Q@Sm1@?J%9 +5nzMg@zS;5u>&^%sGht`g-m9_$`am_$Hv2j;6fJpT!R3L$<rn{B}+Ce*b8c;djD7R5OX#cZq^+}d){k +-)n>=)a5!yq97YIk~lHU{c<k(@gn4`yBjTaMBe4dDtr_zQF*ZjvmEiwSbelDgIJD?W|Dh2y|JfwYHJ# +xYBICPoE?1PKV%6I^&PurAaO$DwHcVv}Hj<mEYC6jOjWnOtmLZq#4)QF_An#k4o+qcoe+^oDJG0S5|F ++|=sXbIMS<HskPgMbzZB==Nrm6UwEgGHlb@Jp!?V?3d`*N&YGtUB~SPfHVtIb>7q>4-+>TK=1?MVAWn +U9*g02>e%E`=|t)>iLzvAUtxzXdq9>zzd!G2;#A;(h}b(4C}^dS?*Evu1ff3=k{DBcP;}mx*w&h0KgK +^5Rga9MI(obV^qt`GBd+5$aW@g8MfgPYsH2|6WD@b5`~PAsYF`IY3Q1<O9S`v`gWKFU4wXiyaVD9^cp +IhL*$tE5;_<EhW7g*5CSN3)M>Jc-zx13&HwSb&qpdggp4iYjIV(|?%7ovqw2qd&!f+?3m-q&D-+WeD+ +Vx~QjmPNYm@ec_$&M{Xj~$!4&@&9(=MQ*gW;q#piVxVBTMR=A^+EuYE*G*sskhFc=jbBZ>#LtH20%fZ ++W8x#f^3|ioec{}Bpj)6lFWkRH-`-31|0;jxp{`$6z*3y%5zEtfk1zeg0At0xJ?l<d)8rEI0OA#++n< +rXKS9up$aKxU<?U`=t%{LP5Y9VZjf2;N2UhWp@qgEXB!~ua}UW-49L~(XnKYkn^J2-(RmU&S2$`Q5QU +f5AbV(~7c#nY7PI%Za3&J+tcxRg05NW3Sjv~9Hb)qnwe0hcLWqq9DTq>R4;s}Mva3D2uj)7;`WvxO$U +xcq;F?Tx__#QY3}XzQPC2v2RZ$qQqyWuJoTAwqVC*;_1s!WLNYw=eiD=Nk3~y3py;?yrzsGc^q+!Yx+ +-UsjyO67KnBk(qrx|dQpwsC9d8C{h8SG({&(ksD1_bT`mnW>WLiWR2H@?d>!>AZdKi$hS^Zhv;EB9-4 +R%*eenynE#d%@>rOX;EACM9zFrj0V1GoDT+D8jPMl4#F2#%=g-#~oQUpV2)UzclKiWQ~?}vU*Y<i3D( +wT&}BC#+RY0w{@vogdvE5)Y~(AYE;HT)}|qlVxt14{fyT3ya0y5t5*2<blJy^Lgi@BnrR&I30OMJ=Yq +9ce)C!_v&sJQq_qeK1H8i!@H>M+N0$P+rZQ;P`4LNsQZy3zefx4S&><~!O{MTOD)yci+Qt9HU?2i1tQ +8QT)2MZns=9qc-KbvT@)OGKP!x0^hpj~%6)idyeqmq8n4f1sQ}rnb64#$le;h4ZhAjCch<}<Vz&eC&; +?!V!=5Pc!yZgEsr(fm^YH-7VYA9lrDmbzzRK-wGs{<di^$e@-EoJWZpa1;lFSd8S*xfc8!c~L5s%RN8 +$@Xz+b$r^~*5@S#)nVSkg~J#S5|*8gfhYpiLJAe++iAHk`8m*Q)0;LSsonIx$EdPji8^FxMWs9?KmbQ +G?<Hkq1M}%D?6kT8-Ddig(t$Zf4mX4d#sk3@_|Nu^`ntQ_zH}xDO^l%qS8?CT@pFkC_dSlEUIAS7sy2 +Qsp?smZL~Z<7hTY8E76<|N7}X}w++r`--8P<3kM@G?9pf1;3wQ(|J)0>=3c&J5Y#Vli_!Z_Tc>WPzqY +`(?ee&K$0WM1EyM0Y;=s5(SE?PDCFT_O&bB}>_1*?cxSI_8I$0<Y}#kf71erE<~E+vigej_G7_eE{jK +<B>x>baPg*znlz7>Ke7&M3hq2ORyt^BQ;=+wn9NfQ@!OJrN#~KmY12LPJF3J^JD+LIX!zBm8R>Kyi_A +=hwF4M;5TOsiLxvDpOlbbo!#9iEkHsHdNBx_~6>+sOz*q>`eUZIF0!9Cp7>U;_IaktMG2j!7cDlXzOX +E1Gq9mL~_Q5H7gG+K@-#1A58=o2;mZ1+*&db?4F%?RiA<$*@S^qFu49ih_Sn9AwwOpMK0?F@T|sO9UL +V>s5eH7B?OOud;<-A6U(Y^((rZ-zY{@89T81dP-zx~ytLcEurDrM)5tnHR5KcKgHmhNybIX8&KlLqzN +SqHXNg7)aj2%a=`>@>^P&Y!w1B}azvi-8W%x-=<58utO$~JkX)Nzt?W(`A*SbUg@$*f8_}6$LykU@yh +_6R@@}TeQPLJGT*E|^7gpqXVkN}$@hE=Ya_Zo*tHL>z2>Bkm=S9aDe*Qk%E)&g=cXyIaW`_jdqe`*8- +iy|&=Q3OOLaclHLL%+1`;T&w;bc5Tq_GJT)P@#cVJKhaj_T}bM+AyhSblY^pJSXhnVdmo2Vf*tT)Vek +C<L*^AOXt;@Q0m03uZblS{h)y~t>;@@xZXiF;2Yj9WoGc+lxiqWTWH);2~(>$eUx=FU8HnPsca)P7qr +Sjd!EH)6(JcEy~J_fB;7PNxMY(}ns!)PiO=2pS@kw}w$J^pSHzjbRtYwmRd$>%!o&vb+&gCFdR#hugW +n0khn;htCOuI$q;@+U_Xe9P^@NL3=r%e@KF(*dInoNFAFL5!)hbT`JV^e?f&CN(x;K|~X3)d=FGCOd5 +WojM%~8MnXv9*u)<`GZ#p3~aadhlkX`>5ExVlk_ms8_vu^WSvU#Pyn2tJrzR<&holc3;-=9&<8aHVF4 +brs=F9g!vonA}F~qHl>9Rngz1v2KX_3jXI?W3a8~*}vi<r$`|Zk_j6<=o?|<%Viytj&t_`aIr_8h6Wf +cbQ3R1kM;F+RFc=6jn;0^l64wP&g=BdEi5$@_jVcUyPf5`j;8q_Ipl_ST7xEZA6#&}+8UtYULhcMR)V +y=$MJ)2apGl3^`g~kDMK$FGsVC}<uM#K%)n>_Lwo$;N8I)7o7i{=WUgt$CS*v^^y7hj-X!Sk&1tk@&% +4CSW8f$VRlLcMWN_7~jjVWF%&pVne+HkcT1MLTEorw|KOXh9go@yg4Rz_h!sw}fyW9K7J@71O+HGmU) +Ygmas((SR>a3iE|73SX&)g1sS;iX3-K_T+RewCEkKcPCM;Htb7`l%x@UAOCEhSHnzJ1Ug=<;2@@Moh; +K*B5&Z(h-+z`XDcgsBbLHKcid!@iPi8_Eh2a(hD;Z|QDoh3&HjC<aG<pN(6?ET0MC;3<0f!Jnr$clfQ +rru#jKP@IxPju#OYK#$2EM3@%PrJFQL4hDlXDyzYuqpdd2*simL{#Dml0OM10fcL=wI|)C^c#3IqMvR +8R06W_m3@}KAf`d3D>uVLCPekXJH*4~7m%~a3i&fd6f}`8QE<j6xi14V~W+dT>Ye{}h0W-J{3RDEW$u +`~ggOH-oqv1@tP~Pbsw_7~)W!)kR3Xm?#8G0Ja5U$ecu|^pR6jMlW05H)<SsCmKI$<cPx0q~7n%;H;v +iXT{wJC7i)t;Oaz0^IooRZpD0PmBJeaHy(NYMhb2-(pA@fDj2a2D!2Q^z4=E7;!I4R&|7TX0%^!WT4K +d@-|2mohu%t;{OW(Rge+k(;Afqg|^>tIaeT#;KDt#O@Txk$CjNa$)QE;N{^l-HCd;=@|~zcRW=NUg|E +2`>T$7Zp9o3G_QW!8y>&Srct05jLS!ythIKUk!MSyTv}at?_)&hb&uSNfCv+75s*Y$ld_46){x#X<pk +_e5M93~#m_|>sx2kc&4Bu_7eK-L)OCDo@#uwI-o~Bq^G1!GdM=K|q<!O^!GF*Opf~6U+ZJr4U7r@|Mv +i~U4C8j43lugEQ+m~~#guu4BS4$JSb9C(aD+w8!rGsgZM=oQ>6k+|uM1R9Q14P}8Agt0T-ptBXm#t+o +Y*^pkmnm0E3^^r%TliJArx&FRP55B_O$VxzBXN|9-w*P^(T6;?S*5O)RMuKG7bX7c4eWzVIeo<fh{1g +P+)Nfl}d{e1|_#~#z0X*qf6XEun4{H%}3Wl>qEhoOea4E0Q-;8C6E?KM8KX622A4SR%I8(%}oj`#?Ez +?OcTs120TveZis}ncDJQ=JcQE!fbk2@;rhlbW<BOx!j1ulDS9KeEyv=*U*kHT7wAY&iX4eg4Z?c77A# +rSy1I5)7Z8qIY>ir!3n;YgYQrY{zuANj+#xQMVH~bL{8OG;KJsR#j;KOOhNmJ6S`cYFS-}K^@vC2oY@ +k89hZFr-iwqxGKyo&0vZJnv1KdAtv1bmPo&1WN17{gVeXek7BOkqWvJn622CH^?fu1c2Op>iHFFHHC( +eP?iL1RnANs~5gHKOdSO;xJ!eKg~rq!oV*UH5}^+|Mi>H=)8jYzqeuvHYO-4Xf^8JeHx_<f5Z+?_(7h +Mw<W0B_}f!{x+8pMz@{|UuX>VX0I2q1&B;}K)V!jF=yRCHm<EB#$q1;trU|b!lCFin(^J3sN+3UthJn +U`wzfaH~8|)FV|X6qVGf|nuOwyl}$or{L?ZjqWJr)T9GvJh_u9KI0tLuv{yTN`DufP$r+dV_Ck^eNme +=wAK6$>$=e=)q_DW)Y!%n2155Pv`;{aj5Grp@!V7UB!s;o-r^-u@TbXp267Eu>sirfOLq<+V9a>7uoA +HOB9H%!QCP8{r8nOqy;y3tWT;8OU4>#$!{4l;L)3%ouoZDEYo8@=YOpOU;G?g`$UDr6|EAXl+DheK9q +FRr>QGI`f1xQ;O8_w*GHqcwsb8~H2%Q?FT_hV`BDkpYT&9=rA%gE40qlc|$r16Zmn$*v8+l*&!m!f;w +cTYNq%xvMfZ9m)R3a)k(&rn7K$+8xJKIoCgkKN^*_PaHV2cQvMmLr@-d$KxOgW+XAM+A&uyW|&kQ`NP +;C2=|>xBPkq5+g*V3%sLi+_LFVthx!mG0dvp9!r0uszBZ<7@brGJhycdI8(!5chhgZ=reK=(_@<P&=A +%zlEZ>a4NPRah85>C3+a|wbj?z#H=m73ni3WCn_4I#tZUs=ub@UV#4)~QJq9rXj(xYk?;4Ffk@+1F>m +cV{QEpmP8(Z5PXZ}Qypd*9eHZ5v*wbhy46LAR=Erc>B(&`-aq9G@{dPHK1%S^*~R>#aTx2IP4Ic$WVm +mPA!&`waML8J4OZbepyR+D?#1)j=LTH!s7O<$8v-JZvyKVH$)a>Cc*i7l{G-w^U;+vrME@_u(LZ>jKZ +eYW2={iyS~V@plY@m{9ZKuv9jb&+HMs7K15D<KQscig(pez|hNVOy|xux!sB*gC2}qcZ~KDEHNt5fn3 +y6Q#o23XPRMz{*|JO#_WWmsVwwAVY!QrJ)zcXc3~=CrgHAQKjXnE1Ju6eDfhlOZ=C<w_J0p7}aIfbw0 +nk79u18V->WHqPs~x-Kc`6J1I;%KdR>Fw2i`~^0YN)*dxV}-L-J{k&bpkD0|M%gF350&q@G;CjlA&rB +f)y7k*MZLw!#PLYZ=mM8=qOj5=*ci_$3U3u|nldXgZP52UY{hW=#_2_LN(fRFS9!CnAh)fH!16__2}% +SL!tE!<N-Z?FdaV>Y98>7TW>&8t8wBL1IMiMB}_`UUAXSIoQIC&aIH$vC`l{J)e}7`6#g$<J-*b$btF +FzGe+Wd|O&aq!|X*59Is?65{p3Di#K@>lPG`@(ZXk@jnLAz4n^wDVcx<VVh6@fi$F_FQ?pi7tx)%f4b +ye|49v$%Y&U%~BczU^C2z*d4e_39l(SG)A$aYiNqLR^^<vFrq3p-Ej=452YQ<OpF~L({)_wOsnA-uB4 +Ma$}u5aZvNNV=?Sc}B7x)Rzf=H;70}f*$Yy>Pq`VijcDGS^jsy%p5TW>!76AU<Y5nS5t~GNxdWg2q6B +R|%HktC6_ScFFD=Xuah+bSr@X*OaBD&ya*I2RdqnI)L(36HV4WhVC#^I-4|6rWj7oyv@9ewHmi1%<nu +#$nus{-r|9+?#Mj&*Pm7`4oXNHAW5@kVrWfThW}$Da#cx>+{uBQn0cbew29e_{-snxC0pXY5u|M<mPB +&?!_u_|#5BE?nWnV|aTlJ*7wG-`^e!L3o^xs_4q_(H!IKl$eo=WBT(APFC%=THS!d1;IY%`ofyH3}0h +dJxb=(SuPtwH+lhP0>fyiLIN4HN{mg1P^w1ki@=V=u>5vg-kxM=8`AnQ(@$z*z8<oiN;<2fsW){bl;` +nI^VPtTQ@wp`*Cn&~V|9#?C65TXw1Lx?XF&_bV7ljHp2}#33d?yVN>OTEF&83o5656Clfp2g5@rf&(& +{(s)UspJSMQozAmwM)i5+Iq^_a!Lctl;z(Y|y|F1d{3PE7jtD>fLExeQ!fh*EWbPmA&!8JmNNW`|YoN +$cqR@U4L;ad^APQn{*Nzk1&4$|~^dMaz)XMPNT6q3U}jhczwRTk6tpgLh1l8A$N&53>6#Y$FfRH7=4h +;zRSt#x<>RO((>N)&*o!>blj`dg#=B5}P;2`rz-?)!*ot{o{Q?7pS+%7|(&kin|o5#WXdE*ln5BB%bw +BdN_jotV?hTibZEWaJaU)bfXLKswFNzOXEB)_t#bZ6${^e|8bhW%*P86ugc8J#M&6B@6i#PT*IAyW*^ +)xagSz#FdDyq{KMAsFYI<MS8=s3YHUqoN$^tE{Xun0Z-{2wb7@mu&W8rWa`ofu-qhccX@lB^y&MpIEP +<?Vmx{(W?jVS~Rp+lnlyg_<*`zEmMHpeIPC@w4VnK%u?xC&*HO>_Euf!`vBVfchnM`65E6o7j90Hpo( +qpcAl)b8CG)Kc29n<ZT6%b{aQ8MvB<)>@?IL7~Ns(<i*jzSGiuw~rm5Zki4%oH59pR`d)p&IN4Di@Xw +1tUN9MHa7+vP6e9z#TG+QqMeAtn%|qz#!y^peB4>qk_N@l#j0BR>#vvOaf|YDOJy#)Gn%;t*G4D3AVS +lH+Ob6ci|H}+1c5C>GaUlS~IvhJ@Y}EG{}-*F&p7to3HvQ%-M!jxMpUH$-MT0ogJ4L;GxmO#!08T+b^ +3==Z$in?dE5lbI9r2I#$_L;hB5x3Tw)Ec-|=b!MmQtoYpeEHMoS;(@@@UdhKHA*kfIRl18biC~gX&$A +Ph@+=x1u>v5ZGY|+kZbGsqBK_evLKedJ<rOgq^Y+D-w!Z8vfgkaQr8S;k%yOT;-JnC~+gsq0-<!c=wU +U&r|(aRY1`Mi=LGAlYM<=WGwK{3z^4o0ZCBEO?tq<9Yo1MV=o)JS`1BLgXCibZxULeh)$l`+uwcr23+ +D5Y;XOCwTF@O>O*9sK`Q|7(TzTEk+0nX1<+Dq?@BpkDg9hyb>`?K~Gzz;?WZRMQ2V9AoCAAG5Z}j7$P +`tQGWSnmWAeG(_q;V(FqWV6@wIup(R}{v+@bC7?7;;1s7}h`qV#pre4LY|}c<&?9iVYPkmKoNqpt`0( +qoogDi&Qlki^m)Z<IFZTkvb(WH3*bXR$KXZi+DrWq!YC%ZWjPC>W8iYPiFK?Nw1uv6*Bz}hfIQ-1~q4 +*mAp->Xd(#7&~hSMn~y4wbD%Rw1n=mx`uB9gQ%Os9`q7r88CE6Va9`&MkeURq1KqO#U-+%{(jSk{rX# +@YHYLt4A|e0;gbUq!6R<X%T=|3{K*DCo8GY2cDitp4~TV#572khk7t^hqG)M=!-k0oS~o9|gRJC4Ax{ +{++n*_4yAFx8TON9aHvMs`Hq!+;kr=@^=8RT5M9qm}3Ciejz%@b641+nHiY|++^_lx~gX7-WOkt^HJH +Gk)wYvFRs4W{US|<MN}-l;F7)TYMQ<n^aD;op|4w%=sf0}%^*2T-vs!If`oP|q)y4}n~4!CUv#JUpk6 +((Dq|nlkgUbchG8$%sAqsD%@Q~!zQRzWc>%LEc21NqGgy@y`-K2WtwB3P8Juc^K;CJ4pgw;tt3DHzPQ +}?I#8_QZkj%y;VPZ4&08&DNM^LsFVUk5b)E#!iNj3~d-EntkYpc`U-r8#UKnS#kcgYwS)t6gq$n(%Z+ +gU;v?b@TDJ*+*tXk(6305HTblI;=x7~?<CMKt>WMAdE?+S~ZfZyjV&hAoxX7n+Qoi>@KUoPyU?GP+4) +jJsatqdYY<l~-|vDgNT-AWil~O`Wf}$85F)_3$4{aZw9l>Zmnv*)`lL)UJ}7%b2-fRB%9Zyco3_ez}3 +~%}}jWz;xSnBRWBsQD#2S{c&QJGKB3Kgr*q0jn>0vBbGZeYKE3xP}Xgm;pZAY3U(Y}n{Kk0h^~=x9Kt +b?qJA(btDhW4*l1>1@>C~5DzF$G!o`Y}<4sOZxyk9WoMLDT(`gmqxna-xE>35#R~Z1=YfDF^woIBh97 +iDN1h`RL+`9W1HYp+$6>%!E_(i2-8-Ni;Ow~>sAGgg&9SR_MMt8O5#_Eww56Cz)F4}GH5Imw#+$A(|@ +)-YkgQt?x4a?f6FLv<ImQ_s}#(J!4zr^UZeR5z?#8SsPDdfPzi^_XLwbG=>2hxcAYspElU@$TK#ieei +=HSp6LBZAlyal1yA6Zy<v_L~WP0Y7~hHutX?FtCt#qFi6se+rEBw(JYJyED@YE+2<_$mQ&;&KP8WYqI +^UST6*sJ$Y-!Z=5T6&4r}%;r>S5OTils*qSQLPxPXY9$j0WAdUTQ-O9cH{m=ZB`a_*%(_TRjT41pf*l +Ok#D+NM=(CK$T_h+REo=U_SvWHieu^ME(mHw=Uq`n|UWjy5@y8iOnvRAtt*DiD31JQ63FhmhtUfYCf` +kUUHd;aUg5WHs_2JJpVhBhBcI*I%SR5~5@aCMdcxMW%uuwM>B@YJA&ktT=S`*=7TF$Soh>0K^=65AK7 +ba8*5Nl*5yG`Od$75BZT|GiT^75`LY@>t(An+_j?@~@)4IIsn<X5CA1X9>Ah-#aX%?8iu#`HN~L$F6o +c>#~mXK|mkq-;iw#WsVoSAbYg$In(bU{`WMb)4OL9lA49UO$}p4C<rTHQFQMgFZhF^{r2SYtY_?<aU& +S_Tj|GvnvVkQ>l-j*^vo8iTo7(Nnr=5qDS*<(+{4;H4QDJAeFfs$AH!q25yi*KY^Nz?qUeGSMSA|@e( +|i!aFow$|$5t;2yw*URdsB20AW8TY!N*F3S?Iy%#l9xMZaD1#zDtWxkGw^D7;xLB{e&l+txK1LcEK*m +_Hb11)u-K}E<mk;8Hruf#;P!q3Ou&&TXBW-fWzScmeaJI_c*V)b=SR_p%W(h}n?XJgfM^0hCm0dW6;= +zJsCd_j-#Ayzc+X{@d&p=$-|I3cjr{GpTYe9!F1NH&zs)6|6h)X?_;$+chSn;;^ft5h5K6qFPG?Bt?e +3VR8Db0w}mku}-5)m1=4k$y2C`?I^exWV+$Mr=n+dY)&L<d>P>N6s%TV?)xUMQK`M3di<19_1V$5<@5 +y$yBER$F#$O)gTe!(u|6vT1fr^lL!Z(_J&OUhqe1uB19ONzWgI%Vt-fXf28ZMj4XIKV#Psm^^(0Rjms +%0DC1GGPjJ~yyVV|54TbS7lp)=TO4k7oC|TtJ_0h~4BRVJ&uv*h2UMqwV$gYNC7P`Am(im2yCFQ|$?= +gUfAoMoe<OKoWyR3`dZr82MKy{=PjtjKP5ox$<_^KxpiL!k;H>hFIP5VWEY#6EE2a@4E^F;*11fiw{p +6<Vx2qa><c*jr*6eOoK0+?<hDUXW0EH^P82y9m9XYv^Ix|~>Lro#0o)g{v)g+*->s-#k>J+Wr`f~fRT +s;pE7ado^$v#3(05fsTd#~jRcxAzsTb&xF5<X>?>^)Rs@=8YFYVdYTDMTu@10@D|JJD0d+g}dG0D`O> +yh#}C4st-J3bQ4nNEej6rC<U{E^#c7Fr^uyH)=@m@tKJs$j35Ebct%qb5Jb!=Xw!=F|KHrL_Y_H$dWk ++@ET?YT#!8fd9iyvEqXIFiP}uX0WK*>EOiT;rk-y+)-hgly7I?(lr59V(Fsz2%z>h9Y67TJsRgeDdEF +B$#vceLs(OX;Cu<+81v0C|R*f0c1y_iAxIxdkG@6f8|PNqhcdKR4ghSq{enEN25h|HJdp<lF1I|xi07 +gw7yossR%9SHw<)<!#0IDasJS)4^_h1n}bUG$sdZXO?<9QI!yy?FzJ`C2q{^d>ks`A6{T^z~uz>brxJ +Zx7G9!QtNyPlEsT{n<G@fBW|E<oql+eIL9$J~;U+0f8bf56^!%gi`0<9R??de?O<^0P3}Xi_c#j93Kb +gr@@==PhJH_Cuc{{#t-ig-n~0~-!(e(78`nb7`#1&pGSwUKZ6fJK@Qm`fp*`!Hg`IT8fH-+M^B~uG#O +}7sQ^$I2>lDrf6sIW4E=D^KIz^6yqlkY=Y#fro1f-~7(B9J^K01o*4Xx-&ZZMMvlRC4i(s6LNqYl3j0 +hW?&kM0@V17p@BsG1=W5?)ngTBnWV?Hnu6RkX8jId-zWKJ4(YAnF%B96+-WSCxP2iV{Dkj!#p75}jC1 +Lq@jkY6&0Wh2B7hT{Qd()3!)HR}Bv=Gy$Ql<Yp05)e|_b0q}%A*q61=>|WI4hD=R!34;gkwgj77s3WD +78vcBWt>s&MR71-(Vyi6s3I><TF*@u_<|1t7DCO^A})~-Y}$O=(C^o7>FiIf7AZNPTBj!=@ZxROWt*K +S1t_i~hO8h7_F(vSxw4^|Us<YHY6+GPh9!|W>7auY{VAB?7b+4Sfl-I2*N1NozCS+i|M1<>`C%V;{rf +XSZ}4OGWA$UfWkB>8=4H%Wwh~#l`7}ZA|AJRp$;i1%0SV$YpErNFPJnmJpx&!%=u0@lf1A7rPNB6T8O +Noi#kx}<0;;|89{fpTRr1KB-`#+8OTyBav?UgdhUgpirE@eKVN*Y5SJz4K;U;ZSibINB2e0U!H=f`hc +#nUeNIhhQ&M8lB>=pWp$}Ulg(&Q>jCdnwuY<6GEEZu-{n9s_&1b@WA`LC$$zWM3Qm`gtqB^jdNm@XXB +@_RgZgmxNQv&pkqkT+ry#H@KKoNmd!iNt3(`Utb;Q~*VL;ampRD^^=rXvz{0M3dAQoY+KXtvdhL?44I +f{#6sYG)ZwY!Akd*C3NYVL|N@Oiw4HPZd349dxU*K3Jm!b(F0v|ExBsu6StE7MbhSBO}?y#y=vG;RjD +Ir(&<CJbWh;&6yix=Tt=`h;8h;+aM#LVreiG1)NUQS#3V{mRlxE9c@q4ai>PgSp50{m9qiDwaOhaVc2 +c?=2x72q%lVM7gp9vfd?EJK`3$8oyLp($_c6IvS#8t1LMNd2zQ>^-$PC634^EMrWTyG2D}PfF+ER$Kl +JT#|RJx4UIT%C{$Yj+LR=ufdwBW0N!|6<G@%SV-X1}@7bv(L}Du*<lRGUQ%2R~$YHZ078eU2ACZU$*K +n!n0mH#qz_qn`NYoh34F<r257X-f8Q-U2WVo%B?URE`3;2wE^q@thnh1+%3|F{uO3xJ*gW_?A+Evn)v +Ag6&p8l$e%Rwxd6H2Te+(^+T;U)2O(yEiG^p=CsymOpXRrm?VnsO~@!|G@s7VO5--hI|59IlBPcF@v@ +;*2OO9}|4S@r1lvCxx=f{b=~B3tuyL8ZD`Lh(Z9vg&o}dBc7>;QX%79Wc2t4?mynwZVy(VS*d9ko%y> +)_@yyYOXGHMB_G`%;3gI*v#Kyi|ZF_<Sz?Ez{^`#SSciOXEwNTL^bkx8RaXg!H7Cn>Cv7s*vZrkn&&$ +ixqGSVDQr3`i?<o_O`L7f>uE_=Y}*9UrK_>OD>v$GHJ+EqDS}@HE)o+W8W9J>^&0`fJPE!rM=2!Q0SV +cVBg*KC7|)qC26!I<n<ge}xvdg0H{a`fITB)z@!ZYj{+BwY{^|#cJK)>#x4r{Tlx6eEp{{cfb1btFH~ +A`tYZDavP;cI5KU_V1PGT0uP+#fkbV7j*l9q+`!`FAkepBMl)Py*twowT;^M6S9UjQGfXd*wt2bB-p$ +g|^UAv;*#ZXwwsyXiyPhkP00hlNO2ehR7An|si)4Ahb|u#?;av(@ZC)4Rc~0*mz`e`p3JOrb;&mi^V~ +N{&dtSa$f}#-;>`-Qz`C%{I+TPji^?IEk#B4`^r(mno<!j@;ZMrAkbMoxk{Dd&l67<%(XZw;#t<`oda +=I^Hy0eL@mRch2YR@X2ux(~^)$jM>3~jgiG%5W&BfZABZ#eRM3`^<!3gyF^J(wNi70SKWa-KmzoQ3)z +P5G9*tO>Zw$f}5GuNiUFTPu>M73UCjLdkGm>2ZteG^NzHqCshgf|Jwp!#$>6l@2g?iVN?l1fjMk|8^+ +?eSKqWX#fm8b#v*q8v~gqq~?h-DQQQj4N69Gx9f5S9ZH9&=Z<NoD?)`cDq;%u2}=kDlFZOlJdH4w1R9 ++fo3n^hrC|LdpHuUI{2V9C5v7#VMi32$MSPo3Y%J8ZMjy3CPB7*c)@c#P&bWDln>&P{$|@k66x>B3v( +KvC{yG`y^g&c^YPHtPgK488QJqU`)vfdE1M1T;x0WOzwzs~$rcr(B@mhlPge+yNZKu1w<!PGWKYUGR@ +g0_K2=FefQh^_hOC;N{_0&zVY%soyJ@*#DZrnYhiME|%r^OUy5$D8#*AX^s7mcE##r9spDeFccXNce5 +q|ucpV%=M1gq~!#z`|&?iQDMecqsNtG)BCpz?-<C3iWVeX>y_=g&iPm8k@WINXs@DsODj5!h1S!P+|< +^`(1HNt#T9CI4SX^KcXE>lmcnbPoEkVLz0m$X4a`iqKF^>kvhgq<6NA(L>vZjSR&@?Vo&vlLxlpiYOj +QqhPau<BDgqNm4iWgNu>z5B%Ay$C)AUt^dQCqa1EpbqxN3Vgo%pALE7W9VF?8F`f{gvXW`a_U*Dhm@^ +mSns1n|oc6O?Bs@e@&zJ}ceS#Qwz<?Z@PdBGIgg*W0PTkVV}WCZj^lBTQj42lyU7j(Sf=tXSbhYq?6E +k9VtOmV>F2t~4qcji_8B;x>NIDxoSWE>FMaJM#hm1l>TWE4kASd0@Gl^_E$8H6=y?xd3}wBPYF{SyW! +PD2={lpft-I5cBdgsl|*-M7UQp-LadYOG`Q{E7og`8kZ!{H|j_K>JFDpz?s3xoSACz|gQj=4#kasAuG +NHnQ8uSnIQBbQ4`MLYBu#)nhthP|{$EETJbEX?l{$f^DP(c)A@&p+>4#uQ9Q4X$XD_s*!VdBFu@Y!w5 +7n!o>^Ol6-H9m}MIiyP8H$(KF;O!36{qGR|Xmv5?V@MVByB1GU|=Mo7MNNhz}-M`pxQX?95_A}EUG^A +dyjQJfc_&c)arv@FjtPU&=Irc9Jhowe+nhU~u?xVk1YGc;`?gF%P0o?#I8WMbRCl-J6nW}Zm{Q4D1iU +B}Uw!>mRr>V>ejv|!L8`6D`O(C7Xp^Tr9!^3Py4`bbV1^m#N-4f=e#z5GLTZY#uDS6X#{|A#KeOrV^n +%OX<t1-zw9h$xYvQ@Le_wQAH4)HHr7ex3w6bF-`f94sC49eS4E(O_7@5j6Qg1miP-)9oGcWp~?u^+q- +;WfcOarodqrq(i^-C=_g^nGp}kE3lB9mZqWHe4zo3|1!zM#^7_etEC{exaJgh)nTkQbVpO$bm4}{_6& +>Mt{!m51HfgWA{R5|PPN{(gj~Ktzv3u4?;$T?$~;q8vXQ}jRBRe;oiNWT)w8&xP59=)9ZSW`IEW?78h +HL2_>UMhY(KjXy1l6OJVcMqPoIESm?M2n^dr`zV3_By1!uUAi_KCQg0GKw1-4-Vcs-Z~=46`^p)oc<_ +&%cq4Fk8@Kue=q*b)K>WwSL$411U(*~p;@8T$*ofR-E8NLIVI<RKKp7z|G8$;9=Wd}COVh%Jo0UbJ@E +05^#$Xc0wZ;3a&{WYLZ|1YzS17SS#=ln^MNsck)(PGRa`=F-JC><x@EUk!=^@ZWiBg=(UHBI3E5cS_z +;J&S_9w<It2gPkqB$PviiZ;}6wj8B1(N-Dwf1z^Pua%yaEs(1I=-|mqgyRLO#+1vZ8;jO)9`F19QA}Q +)WD9uU5bBDyM!HnACS^Luh0THEJaOp`~GPjPK9q+$~YXV`vQI;u!ZNe6Au}X2E*MgZm!;6CjN#Ovb3} +g^YBU-VEGi(XL_zvxw?~+cQZl~D!MsOh$kac($UUx--XK-->H_C2Gzh?K)Z5QHWwmM=H9P_xw?m%~VP +_C+YI-^?+AX^-`3rhqs)<;GI4h_#+sgQN_HC%OF<abuqopa;pt!_lJT%2Ly>{?M?K&ogT=xshaFo9yE +1PUV~QbsIevb~ycU|BXzvgP#FM@yk2yjI0oFI6yDLn~(xAL6ZigLd++5}D1s^m}{dTlMO}Fpy`&I`E~ +w<gJUUjrQhVKL+!|`o;Nlii<ZEia1;UxFq0X<G^(Zvh}hzH-B%)ie3JYzGnHzh&U$Ho-1ZUUVAqpjMt +F3%CP6z8Fvk)Z9ry&y;C`I^i8_6WdraurjtOdy>e~z@`Q01162W6uq=-83@9e@ohOPZ)*}=C<%mQq9) +VQh!=$THuZQ8GLKjA|xmjLTjWZ*%iaR+!q^eE6k`4s_4*oJL@<}4nY|&bz?w;hYqS19j3-`GMIDh|-Z +t(Wt{MC1`^&A{w^jx$%=?2=>PMaI-i(psugd_z{f+3o-Da3GUE?l1D`V{_~&0qrI^)1p4bb}VVs<*_z +$U!}LfQPz!0Ir#-T>u_D?mYf-?tO%9!-5}wc%X?j6FTabY0=ie42sxTrfTJ{;7iReM+zP;1otItYboL +Yl;EPi!Fa44G1MA^e&MX@2e>}z)uK#$^itJB=LWkb8Tz0J)~h?)+_3KiV&d8ySJ$*0@sR?x-8d1CGe* +}f2UXwDBcDs0UTO6J2P}^@PPMfTkXJPLzcmy#hGS5eT<J?&Zeko(i@MMQTC$znyh^i&tlj&sTR*8ZuG +f`o_0!jB;~IUu^||KSeAIR6NA$zTq(C{fl`!BF14=t=+PSQ1Ugm}JV$QX{P;tr}d;c!mZ|~QPF)Uk=n +u-ufI#dHvo3?d6tp{sUyZk)}N1y)PPJDt3sY3gtas4X{FB9P%N<>yl9qjW-x(_9mcLWN^8PrtTiXCoC +MqY+ea!HmN0knrkU6_9bJt*BSEv?M!21_*-OVlN;8<*66tWdbZS9k?2KTs!ATLBM*<6k#?uF$~;<+`) +N@Uh1H;qj$cE=~Dadr!xY-q&l}IuaVjQn08^?Dbw)_ucOC^LSf6e(Ij)erA1NKC;}={*(E~C-RO*=Nk +{^87uh3Bl3#>0H1ga9`S#PKdiHDH|)2yBXm60hv>~0ErWP<u(Z{uVp0sObuQ+TO)EzoldVPM)ugERTA +>2#b{$PuZFyT(x*koQsVQN#yBX%%)YaK)Sf`a0QmGueBa5ohjiQVypJ3judybIcD)clQE5txTyNg|eQ +TY>z*(%t^WMQP}q!;WR-v2%uq7F13vx>?J+#m;S`RO{%kFZ)`MFdx41-=3``?84hlbZ@%muSxFC~$id +yHcz%76L@~GEl5*f%gC{O`u)Y=6hgM^$RG1A#SKp9TeG=`H-Oi^tgzp8}z!blF>B|4omokLWsShxIGw +7yzH^1DO!4j@Yr{Fl1?nXD&>+YGzMQKdeK;|kE5eKtX@$L-db1apL1G_<02lv#tiS?NX>#=-z1Z~fl? +)gU9a-wU%q*MFoCK$M!RIA+rDz^5VJAo>l3sDz9vztKHG%tD<*XKiu!^VguzcZ>+z^&`3ysdht7?u`w +{H#ukqr+v4d8wP~9o-DpfF6tyKK1SgrVZz=~DX?zd`HwfnDJRrTJh*WPM=lgrfEoA3kcpg&0{P3$O7( +^%LVjpLu@ad>el`t$$Uik5?3y{OfiRdw(O264bdE)*8PTUV79b|8qLM_Hju8~c43*Q(xo89&k4Ie6LN +d0m9Rz-z%Gp2g%4$uSzpw`3^dZr!j+d6Cbrt^*O|<JL6E;JajWg(#w`ua~8CSwdG)KoQ#~4Hv>&Yy6H +Ygq?3xF|rwvZl#!_q+&MHA@>6ezJWIj_2&8@WMd4?_s8&8(34#N<2>QX_F}6WZ0SI+*skz)!R$i{59v +aBx(Mrj3mN1Xqe4L_1Djw|fW3>!X@fC=u{g~_bX@@lS&VTAGjuD=bSl6vn(^cl43#MDMr7*Uh+>>*l& +cd9pQRq@0{Xk7^KS6==<H0~JgXO+rdi%O*V-^)dM_6UVYcIbeg6C>k0rIN^6dYzZ}4R9bnRr#1<8{RO +PWl(&OMg(nMmpa(bW)~uu*oBeKk(Q(um+8?sfPvPslGL<7`QauZF$giNLZMHN~)=>e9T)4A3fO)DnJP +DztZ@(Vhxk7(RtxWJ0{ImXXHPcvV|(EhL;$Y*qfYeJM;uo0{Z3p}w*DTU|{Euy`8iz{#V7Eq1jsxoOW +LRfd1xH~a1zGP5`3$7oU5vbc99$JM=BGW6O8z8Xz?m&AoJU<vNWD=X;1(5pk<J1na-|6q8Rk(-Qw2x3 +v61F&xI{K+=bWXNUE5-qi)@g905CK$S4JjTspn)8;4fzJ&;t2Dn#MwYSWd%33y9Wh%ymNLXL?Hw{Ipt +PC{xv6Usuq+#`d{V`vU!S7K9mZl$<B!2r5n+(&vO^n=VP&Y?^LVX{nM5p2C{kn`jm3@=e}tXAGBO=}0 +X33wRB>3NG1^AHRf9)UM{>EaG7t}QVDnT>r_Id93Pp;sm|+{3XaE-=9F(>t`DWnG8ay&R^<WOsPj54z +oXX1lT5<SUk>4g`+fFoK%XS7w^MC=sl>Zq`J-7P}g0=k^$t5kb!Ew0kk%T0Zn$4x=?Hf)2WWx|Ou&@m +cQ{GP|cwo83SrpFeV;f=TD7KWdI3B~MjMl2;8V&eO%1ZeBAz_H9Wv*u!KQ`fAqc~CmrZ%~4^cH+0W8M +Jh688d$8)ed3s@{>jXaZd1bCEJgI<zlDHGq7cQ%7#eH_|}*BqoQBF4nfL!^Cjdt%?2LDdGs8MTPL@PX +%PLfPrmE4Z|D8rHT^5`zwa{u-FEL05Mio1gp^M8;_5Wu7+sMRfCg65U{WAESdHCw{Vz3r%wl0ZUx=Kl +3^Om*l}M&t(#rZVXF2<w6v(ts5Y6@*DDZ7JtbQmx_fqT+IF<q>llyR3%=H8xC7`cM+xt*zQ@L1tL$2Z +i-#*h^Id70E{z*>NbEWGo5ZX02&G%JQbXbAT%4}hfjwbHSxm_DJGY|u0Gsayc_v)Kd6O|h4jD~egIGC +?@sx<kI1G|EQ%DKdTgslX(m`Hsv&7GIn-Mu*Ne_F@-pSXwoXZk_FaSn_3X~+n%L}AXU-Z%yxyRkqmX; +4Ya<MxMTu4xOr)B@JpXNys>)=Nib)&F-v&|t`K^hn*yphnccrcIzV8k>DjfgrF-(+m^1G7Ig=)r(#>o +6N5%jy{8U}y7z>G4fGZI&jZq!Q=cl4BdeW{tk)#P#yJzj@cd9-w_33v4jgDssw3%AVMqA+B_9$c?yEA +_{_qGjY-_+2dX2U2{h~$9SCe4UP6WEH@Z{I0Yk68V_=R9)q+*F_+DJryi#k+I~oy0s#z@z2HyUARE2b +X$&=(3oDETVwpYWshJ;O)-Wh4BN{h6H9X<W?^KX8XYix2bRGH?R5SdAa5JPfEC+EN5eq338mdL}P)?R +zYcc{OR99^dHB_^)Hd0t=Op4J#AUvQ&Bt;qTfU*Q}%meDSv#?D37@cx4W$@1CfP3wzZO6N7NB9}Se{C +b|IDXof_p5GjcG9yfiJ=GUTc+Cca({b=F^_5P2G0sf9T(RZ@J_vTc2X5b*@{<e?el9o{>1)9%s$Gnz> +XE8*cHj)Q|x0VW6})4)vb7}MQe5jTQy~noFTuz$~|rTNf@Ar$sq;c)GXOkbcH|DQhiR%b_vrETO?9Xp +3o3PU=2|UwM6K;$1(agl|_>14~em;xb3pmKjGAQT3Tgsg9G<aZY=DMPe~$EUjS^%e4#W>m^4E~D{jp5 +Yap&?RaMmBL_V(-Y_LQRO!KTp%ZtjflPO^bX^{7((MK6ouK)Jn@BO2ba}a4@#?olER0cf5U8%-!X-PV +6mgp5997ZHfk=G?h`;jq(6htTDq(}+rL|H-RB%h!XfaEi&9w+fbW&&4m2LnAwgXvSIMUXXTgdU0@LkF +s$owa4hDaZ$9_CaUNi2+ieh{Nbo<}(azBqS;E5_2{yNIJhbN+{ML`b32oAr%0P+8rx*MOGFG(QlQ^T# +Lb@Wr*frJA+l(XdN*^M7@kbnxg1P$OTu&uqk2Fq#*LGG97=IZ13!*<@m#go5}8%U%```50gLr@z3eah +jKFh^Pm3Mvg&ehWrpA+L8EMc2AxpeP}~g6Tpm4>@)?THhXNaE2kobf`e#A=pY5k1fZL=89-VEy3ikzr +2CRzUybczu3jf4U9fX(R{PUmn(()r3^uBW;tSH1iUQy_NAk~MFuuO08P_g1+^1{Oe22Kd8yiWXb!%9z +A-uJf*ieiVNH<>FA=py!eCracRvfEU}`PA*!1RTTtcHj2DmDQgcTgyFMK$Jt19_l(?)|md|*b=(xm8E +Zvb?Mk(BXkdcY}H+ID)!vCG~XPFT+zqqZiR4~jU*&i8}p9gXMusKbTmLQT+u>fE$D>Uua;XtA)JRyjW +gJE^<d?PTU*tC{4}H3g|`%etHG@9(sCG$#PYj{{hJc8mFNuRvl3+^ul(GoAFVKjABR^_VWgBOG9b}YM +A+0)FQ&F90ZWC+6wHi7!)c@wPn+peX*wcHzroiUsDT;`oc<4>Z58TCDtSzG3QPz}>NY@9T2-PS+&MGs +r|c;yL=B}H#$9Huk&8v4(~Cs@WqEoa8JTsFc)B3zlo_Aa_AyoJP@yUaDxyy$Kq*mC3u2&gGfFq2ff<F +-Q0fY#`TJQII%L+*5?ERC9?=}{#xe|*5Ko=AOXE_Bpi#XlsnR%fqn@)s3LxAOv?xR&_x_F+ChB%jk2O +w8RB@vIa2k!{;3~}v41OA5s$jN_qARy@P9bU+d2!QQBSFatw0BfeWSbwjz0*l>3hlkt?Y+hJzLo8rae +FTpd^d0g?Ln1)V0+%xh0MkZWr!(=4lQ}*3DOQ`MM4RuxK(j>DL`n+%P+||-O@ZmwK`IeM4c)w_cnH6G +N7aQXIz(;_&rLlt})PIb%!?*&OET8mEr*UU}XxEu70Z~B+;R#i{VYR7;BtxmiTG|&ZM2B4v>Oq+bcck +ck!;GQDQM2ow}BDR)g_~oHN*ZE9GO<uy@wrJMmDO;67k0Hc(R4yCZ4J-ng34=wMOMXwIgMbVUJAP}K4 +!>29@pAMzyQD2#Y==mz~sip(qvp`vLv^t+(&+Y}T^7~$x8eJxv4_|S}^9%7#66(U4Q*JhK2yy4)xNx9 +z%(SdYVnxW)E1?SvEni1X}OQ%NYSfx~3Bhx6_49$`%N`Y5HZ!nZ4>0E>|3dDptCI=pIvR~Z(y8t{*^E +=Kh|F5{nRWMe3Y8JHvPeDU{YQWm1djubC(Zz29(y#+d5Iu_=T9_FO#iuMdDkxo(`h6TnWApd7IUM1RI +Qr)y`U(_yGwMroLTbPHH0<!LcaqUPp$yiEQyqhBrLL4kidS5BX>74=856!f8U+6z9MS4zXBTa3r+wKC +F51`*f5R5|8^RWE`H#^+`_g8$0v0e3f&_mF4*Vr3_#FSSAb6K(lRK&9r+iVZyIY&wp>z2=qyNn_df>W +se_WVDdSTq62&;}WRF*_lUM$bW^=+KRR7_ftVbn&1h>O;}&1T+hrXN5Hlv1{&<>n>4oOw7k;c{?okI1 +GIBnxA~Qs>>0cjE@Q+JH^F2VYWyuC$5~JvSv|`&_J(9Ee6#IAX?;$~3lWLz&Gp)W87ooK7fBY1ry@zu +Eg@^Rxfiauof{1E~zw>hZ+4@Q~7_qtXBDiW5?d#~Mtg4nKww`fFf?YK{iCpRL8{+6Wcd4?)B)>W2bPP +dqJ9X+NvtNwbbdD6U!$9>AvdCE+-dIV&J7$r#QTE}yEANqrd$O{VE}Z}eTW4qt;tz{P$)8jqFR9|=|s +s}I9C5#Lm2zh?oO5Yd9%R5}1Dh#h3(K@UT{Cq^m?+FvautiX%h2PNlBF(f*X5qwahs3KO#Y9hWWV)F7 +bbqUbnRu_{Jx(`3Iuhgz%kd5#*?mPU_#p3DsGtaeK5MFZ$4iiCbTGl1>dNplZ?XU$4JwmeW;y?5TzkF +sUk{Aqny&f<Sw!mYdhPYhK;E;LWHQIg2RHqWXXE(|0JRjIburfV;*d{@;jaY)V;9vCu4tQ<z=BErS6S +%#V@VH?CC~Q&u)LA@!O4;O^nsM%dxeD_?l`v6q@wNon=JA`BgSN5^_Yo1J8}qr~m9)%dh#*ul7nMmEC +1`xWmg}lnBkzq)LqyT<jgB@ZHsezb4C63`<3X8}UJ<JQj*SZueWBqoD1aEM0fN`Xtd6l)>A~&EjlZ6o +o&nUXf$A+-3)*SqE-KJ&pzPt7u=Og+5XLB<4pG4>Q(mDh)nXP0pO+rjGYnXYZ$*EWMTa?~^pHPrn_U* +A()cz`_jfuzWLg=r#WP@B;f28t<#jc4%i>YkCHZTj|1LkG*f=5soIj`Mr_qd9YD6vWO2dc0Q_!PQ5Tn +IJEz?dpA3l(DHWle~y&J8tI-$T>7{|PcTz;S1Pn}yt2TUy>z1OFh7-xWPG9RS&EmrXu^Zj_N;`h0KoO +QifTh|~gJaC?$8tXbjg<MH@k}7vG6xg+s8XLkN6?hgHe?TBafmr$ZlVnKwl|gP1B2B_NzbM$*l<7_+$ +Z9^rq^u<zZBzD~7z}=%CX_q<<F6=aN)YTRP{dbrENDa)z<X7Mq6Hz<1#zYUn21|E_aYF3CN{;Go`#uF +WZ)HOVLt7!F`<?;of)StQ|Sy)@?UY0pBAXn3h`OTvc|_xSfD>8^n+rh$9Qzg0!hQAo`%7|3>B#RNh!s +Gtkx@|AK?}kXl!{43qPP$i6BqI%f_w2Y%hgz3a5V?ghvMV;6bIGWVH~wWhf<BqN!KwK3PXovNL2YYho +NtzY(eBN;m7bzuh?Fd(8-mHkr<+hJprbDIoc1G%v_0qU;Ix7StRV868D(5Mi-;S0sjOmD>d%w}11bJy +2AWJQoSZj_BfE`3c@itF=St7kYBBw|$9;?m`K_+rZUBY(ni=7u$Q6@SO+J>0IpXT&@rYlNu`r9w9h#* ++p%a{DE2|uCuk?X#5?fcVSLQl)IlCB&lQB>sQ|++PjlAb}5^gtB40}7MIh7e(#Mgk>-pER619jo{^IK +KVs0Bxa}p4m_32X-C7zj$5{COU^EW2hGZ@Rnq~ohV9j^OrmXZ-xA<&%2fdVG<E!>|`_e~`_*q4h_31R +qZ0?)&*HHi05<HGroDn<bB4}HJOPeExw?8L6Cj8qGH%w)#Ye+O`D{cMWHWRLSd>bCp3vAxoddJo*7zh +cTyM)Ls{|(h44NY4uqXd%0S8Sh8N|cr*O`3DDMq6c!8P1qb2%U^fsd-hz6vhbcntz%{l!~1_-Hp<A<K +{qNkyx}-TY(Q4_!f2snZ{P9Wuw?=sve<j8r{S)Wg!`e_#%;@Bp$q2wXg-0P#k9JkU>n?_Sp2VT=5p<8 +ZR^u>+QLN_~t=~qlvHU1`6-le*mgfKN#)A=uPKdEj4fmYGFMn-W(dMv7<4wc7Ga2?4Et#k9D?PcIL5S +2aD5@*pm$qdGWwQ(=W@e9q9Vy4KDCc)S1=vtX<+Mq&#E)(BHLY>hl<<Ydv$z)US_0HNUG=elwHKX!)h +4Qu+AcdH&}z?r>WCK9~QoxjZeFE!;<$(cf3@Z)Ua`E&r^oT$q#x&hsCZtz2}D{(Uz8W3!3qU3%;J7_< +8O>ix~kH>2ebwbh%D5l%g~#PT`*_p+6Hl2-@W!atX)hgih4W)QuB*{b*D2_Nng*$q_?&-Uo2StMh$Uc +QP(3wfPVVkGgbN}|*-0`K>);tIpyQ&j^#QArgOFftm%%7!_nt7mC{u3}mViY5rdG;YJRigS<%tqR}J0 +0k{6jghL3cte?+C}W?si%Yr|8pj{eS_N8+DxaN?6KevaC0B{#rz>v+F0#ud_ZXS)65(Rn4VKmlr|#{C +Zmo+JMVICk4?L>@bJoFs>jlpRba2%GANzXeLLddXqj<8VFoj+L54r5Q*j6Ccy6RB?)LorvVrJY%N)t4 +1q>dUAjWG$r8RrdmMV3BJ-4zW6K!yr^OYV&P7di^4=VHg{t-j7t=32N24IUxv6{WX8R9xYrW#<z62DD +}jZ|`7~SOB{1(dNM`ykEc)jxr6{3rF*pPlPGF;z>3z15jWm0f4@UTm+bgU}x#RmS^cA*v9p`BLcMPDC +xp}4#*??dF$7ow}0)ldh95OurKz$x_oHXzvfRHO%gAlxy!a}OO9o^pZ!BVHln`bd#85WRFXeozaF4~9 +l7aSY3QZe@~ODdBE;-muF|!kWxCoJaPQcsTdRhcL&*F`b9SvzPEm37UT1Y1bY&1iG*LWAQ)#j+Y|ibV +im>Le4si~)sb{Am^iW7d#Jl#>HWV0LM@2NMgl%M2gFhI^2tNuwN7zM1IT)Z$t)X#jJD(<1g=>~$_?If ++o*X2G(jKhiE>(#D|8dhcgDD>=2IjsKDaS%%*uuV%4IP!r=F<|5i8ovIl4U+B<58A783!90S_0V%%8m +bm2x@czv6Qn;Ke6W0`z52U8M&N%K7awBoUu%DJQHPvYkWShkY(qBQ~S>V-yoJIbGo=8pJHj%FWqVs^i +euThc$8onQ5b3ZpCkPEA1n#zUwi8#Bdw`a1GqHoWX{-Y-q1Jv~sEKlF7wqf?;4pbr}g!yKP|1R=H@Tk ++Fj4M@PF9!3oCFlfS0}#%9O_F=#1qYOz_fTM_&o>gWjAvUWY1=HodU{tV}p-00C2jko$T2WrxT*eucK +lJ4zfEOS3<*+~Krq48%0fp_T1^b)Ofl~;hCQm{TmRoQ_4Qz7;<{)Lx-iF>MikB(Yi=2V1$QGYONg#}J +6h}Yck4`$IdhHM1`T}EYkm~x0pyuqlm9FB7^ARm4dkjOzQLa|fOo}BW^iAra<Ly3!1;SVM1x$$V}D6f +IYFc~T!tla+W(B<q|tNLdU{}LK%a{c#Wk|S2Fp{RJx5k8E=5#S1arw9N@F>&t-BtbaCiyJ@==QPeaY8 +<URdtC718@YT0@^p3@@);9RMU-!W08SB+Et3T51hNwqtz!+ZEhq^n(!#vCqjYLTogk>gH2M&H@l<u`= +@&s--h3FhJ1V3q7BRg~6eNN3(OI=f<5vve(HiUqZGP_e-g=laNb!5~R<aSCEL~6F&hY5GzbaxHe%ul= +PJ*L?s_(l^7431<^QScN*Vjh&S()$+{c`wGR|deAKh>#>A2dbup-A%>GX+kEl$=K8+YP1wExN)GkM&i +gR?iY1V5ZBZtVX)GxO)168&bwxV{j{u9M&)`IQ(LLNDhWfSjs2afY$MhZY}mE=T1!8B#o}zoKXLvDLJ +Fa=h&bT^_(J|V-sE8<%r3#AoPGxKPWY`xJ(bwqu!C1Wx|ksEf*WL;HRe!jAsfJptWCQ{n~+mG@_Y-96 +UVTjh*iH6!x7!1DfYzV|IM$Rx}(1+dI3#$Hl*bKmB>DwbB{zE&Gv66kz%pjD)roZg;mk^^$meQe_3>9 +66z{8$j*?$S-Y>+Jl}`rthhc*SdCy30Gj}4!-PkgAhYN?rq~vneKh%>0iCsKSHyAT5BYLv-L)@y^Yw} +`Gm1RWoIzkyK9YR`zvhv>rZL=t6I}v8&q<xPfF!=ewT5ms)!=^kLM#c=QpKZW+yV#{$?-&i7uZyk2w& +A=0h?(ukfHZGzaEpG3W*F3L$NZ{79xlx)nTSFt{57uh0@!SM<{1Kv0m=t_RPtES^DMNaQ}xUWCsPGcU +T&0WmK+Ekiqre&2|Y9-=6de)8=5N~}E|m)#&z@Z)g{HJPGSS(~#{pthpr&YIbnTdfxypi@JZiyR-~p2 +5Hysagn8CC254j$F^DQMQSyVPea4P8YFg3@oW8WqOSp689z6DC)85sN&*rR3@C?0TZtjD8axYB1R_Vn +XXACsuk+RsNl?3<mi5_BOxQ3HK$M|nA6z~<VZ<L14#T~FFbhp>UFQz!^vuNcEz2<7nIf!P8xUiWqb9S +dvAlBC3oXB&TaiZh?(^ZDpO5@=(TQA<5_bJj)?0hA&f}7POZ`j^6Nde!u$8oCcJBMXVXo=8X4WZ=Zv9 +wCWH)HP(uB1Y=;`t8K1GX$Ui1eU-IWU1`k=LvV4WDDy@d$Ohn|!>B(Re^ATsZpiT<Ho?z1A*hq3pP!c +C~Nllz|#(800c5~QP5Q(IW1z*ut5&x3s_#@>15xH7eor-{w2gwGklq->XYz0vdLL(VmBtUR#XU#t<o# +}=Opb{014X8scC;$<%h*6rC`k1dWV)=$tkF|%W5djNPEO$}W!)C(T9mRpn_~W^#5aCziEUe?bRkS*&_ +?^^GR<)kEO*aK3B62Y0H4BoS>)&Gz{nld+_51NpjV3C|gl}GO3E(R)Em*v>!A+@AwP4bd2;x>h*Ly)O +Gb~YwLxmEwgO=a)%YiKl@}6bjB#T#BY2&1^Bf$QCVCq8{036J&8~3YZT({XMmP~``7bIJ=>V9H(CE^) +E1v7Q#=4@MXTIQtOw6pv)PjEfNoSu<*EQkFFqAS#IqRA4zmD<zb+g#M7kb|0xk}M^aUot9ktU&kw<$P +#ub9@5F5Org5d68nwUy=T)FpkpijLe&gNH&d;;*XrWCVNVEE5_!7y^I)DCJc!oCuJw!%3;n<l-LkBZu +(|?9xGc0>4l3q=L(?#uhavO|FU_ax8C9fVNp>bwXRy*TU!m+Uo}2oWAH3vX^eFY;;3_bgYs<l(6kG9* +RQiI0YB%68iP(theVa;dB6Rn?NL5q2C&!j=}Z(RO@g?|6OS<QI><}Z5KAghEH62FGKph8ut12*M732? +4cbZ-30t`s>jM*zz@Z6gB908Q!y;WX^PmjT!^VPz*$|EgGqwD0TAFkUipoWB7cETNEkLa|{*hX>GAd6 +=v?%+x-V(#Zv;l#GbH&a;d3B+RpH{wzOXuL@zh&VWZAdM<-2{*px8QJxBpW9qP9&@n*~p6!X>Ef|IP} +9~`-b~T9=Tc_sCobt#&@)4_arqpqF{_KRf^)0=fDhMYGsAQK4#EAzWl{$_{QlfY{X(o&`l|U7c~&HH9 +f}CYUm&9@pyuTrUozGs&PKIK$%O@0VTuzN!+V!m}M+TkL(qs773jg0az^w5%yQEai;|~<m%{Pgm{EU` +HHtKmGV+79)Zwr<W*KwIw%}WGUB3rD=lhY)awj{RLZuXDn27$vPGO5DOZ#v&}JbE_e5g|o)KV?%`~}@ +XCH*fN)vM`WL7CO^8%^fLkjE)PUWNyjSS<;McLz7G{YZ=gsFQls8FD-E78@FF*KNaiPy%YlH!gsBGaS +_HI<R^I>eJ8u{!M8U|`Y=>sUyF>8jw8lJdpXtHGd<@QD-Gcy7Ct2w$~1bL@n^*rV0Sp^wWs&wBjYvIU +VJ?iXeP(I9$i=WDmyp5x3sLrs~mTDbD~Xv4<usir)Mo2qU4>rK);68R*`5hm1yv-L<B)7C0{-P_uUcX +mC1<h{h&ptj@9?VZ|FK#DKCW=p8JT1XL$R`jMP1GLr~qLt5DkAQs)(7(`k@;>DMm#5k^Dd{i?M@$l5$ +H`SvNrghYS8r*v=bw%$NA+>G@K)OGZGYL@{_4*@q&dP4J7<169{txdE2z{R+66qgbRjGy*c!23Z2Dl_ +gLr*}dqEGM?d;Y7-;0>*gnU7d9H;{GZd1!B&PQ!_g0wdWN5}r0tom+c*S%W#vKA!#Ui4e1-KBl{xrkw +(5&>wM5E}dvn8khxZ1Vb5k7lcOQB)6k-n57s7tsBY>bv(_KHZes(hz`Ecm_T*un9Fn?Adv|<xy6N54e +4nvj{_52`d`a25om;ag`y@=Oi8A3D|e)lngN}T9vS%<7z+tXyi62%~tWvE;nVeiqMQpDj^lool1bhen +*_En!Q&<G%Vc0CFQk?cCXQ@)6Dt72gXKS6w4O-BnVKx3@C;70Le@oHhTsA3OgLInTBH-j@a!9*?mciQ +o7$)fm=te9T4962rYD7M@Vn>11)gbOt>$U%RP?4q+Ws`B_(q!+l@M`SWl%i=G>B;92?y(+COIPP7efB +Gs}=jri2!HAr<IIqo<$dF!AFvCnw>{)3*R~-u`hui6;}i4(WQ0PEa@tHBGU^qM=G<9X&r+`j1MOTXgW +Ssm6*Wv6?3>jV!YynG1@KNj8t&J~cx06c-s?5JQ+D6#j6^7HveQ2U$u3dLYS5A1yhPhaYc7MD2-@#do +Z1i;5c#HH~({seE3t%uJN8mK@F$rj^DdNHu38Xc4c?j%yjCs$R+q2&#Kr4V3UzQ$AHIl}$^p7iJ#S`X +s7gjQc?=d~<MqaNKD*i+2_a74sV`sK9lE+|#N7gz7YdNTz;GzLDaGt|e!2kF$9<xLp|K+d(^c8URJ4M +lFgq!#QQ)UmDPTVz<=5GvrkOjcP64^)NIzDhFq=XCRt;$ZtqZrr_C32ea5W$IEYyd|li;{QIlJcjrf^ +C%Usx@sWFL=Fe`%yuSrx7fV~g#ileAEANaNbD-j9HtTb&r+p0)R~QeZ*#ii>AgiwIfl<j^RHFXc$-U& +qm{AF%huWubg~!r***gvBM8~3qC9qe+HDEGgm-g37+RY6#07re`zElb>>Akr=e%|_3C{Ff*pSOR7e|C +OVE@+BAl=rO&bQX7vCq6{2#denU-Q7@4eWEuCmaMy)*|qE4WpOFgdoQI%vpb=sCJD({HAY!^TPJl~y5 +7dd2I-*fAW6Q9%qRMenMA1TJRQRshik(YjlWT0PyVELF`c-2J<8#sl!WT;O*j>F1>`)#FrOkBm>p$JR +u|bv%%+Vb^Z0Zu-Pt%sI)Rq1@JXd^Bk{Ok27q!+Kgu~Kz%tR%rQILNO8|0=ezjc=b8!mddpMm{Xu{nS +y$jp)1g+o^Ee;4W3)#28*#&@CUFQX{boZ4S3I-*U-`7nG!U5#TlAa^Wa{+CN3!QD*k><^FfZYL4q&xX +4^aXa5LTOJzM=4nUQt1=%g7~7{zVxr7ah%qZr^rv$o8>dz{gxY%Rdy6FwU&0&)2)k547j?qZ*pAwq9Z +zyg`X8x7rF$14%$+s@f^h;v^Wb5av(|Tg{>SAOWiDn;ssB0SUV4?3G(;nm*$!ZV;v`Cy3q@7C%ggHm) +X);t3p*GPJ#g}1Z6*siYs&9X2TM-eT6L<jvL+FeTI;H35Ce!r6AMw>Y}J85bW|CGY)$BBpmh+hNuo3R +Sk}RXf;4Dx^#?WLpQVst@3HY0-JIy)LugZwx6xl_!srB#<<GpHbzx~Oaw1S!_1267^BDnv<hBuc13Zk +5~X+1qU8SFw@=i{DrPD;VT%eo#(vXi!B;l)(rY6LMUK#)oea{H>8Bj$Nlxa&wULU9&ZPCBVP-ML3wh8 +eMH}mmQxt!!ky=IKqL`Lw0NeULqp{HaEseF+ypXIc_uXKe3kzP?;D#3%k+xoCPGzGT0wHQHq@Ko^i*u +d{bb*8wl!}z$s5ev=lU4?5&uy2=I5bS7>$dI0A)W=&HI05=u3vSM=br{a)zo$-T1VT$N@8l>phhSv<4 +r)Ra@3W4p-WcklD)iwVkxjFnP01?A>70Za#2tWCFGdu^l(_j(T&uP<C%}MmsUoiaiJq*LCtLQuMC)Cz +PSC6?^Z0GF1K>#sv&tD9ZN;)@^!@Iv2TL%6gUQ&+NY=wW|OL*-`0qN3)AXE2VlDmQ{E6KCA}J#hTh2L +m_>?}$s%Y1P`el{xyVb|F%Xu)t>rFjYX_0CqZh$=s2wj`YPUWwTNv?3+p#kuJ53x$)38XF!}jvdR5)D +C!?PL~xGeJ|co!FR6vQJ#HODdUq1$^hSp<4)XtWWhW}eq4^6-J2jtmc`lw+4I{qWXeQ{7&%VR~K8Rg| +<JZ1b%>9z5BaGf^DPLrEsm`)AY|l9Z_M>8zOY49c{C`G|y49|=>SHc_z0iG@-6G3J+A@|&)*BF@4@*Z +BF#`+_)!*3ct4f#}tL1D=))fBR8~+&3;PHf-y1Pk=k4tU#7vv=81xIm(#WBf55Wj-*mod&zVfkCUj10 +hDQ~6~XZ>+mu_3T0XrXc$H6Kj(BO)soYHgDYt8kYbEEol}uV48CphrpGgJ(V9-t`Z3>nq5l@c}vhit_ +E{^bBPeYZsv7o|n^BWu){UC#}T00hOZjQePANRN6cbB7_!GmzI4=lDVEs73CIP+yt-Q|X9R-UoL3mOx +u5KCy>Gai$3i?E#{2ojS#IVOsdG1Q|l6l^&Z8P<qK+z}RFW%5|^w~@mk2srnJQK2iXq=Z3NL=yh&I?A +A<MKYpTHT@Ry4GE|9KU%t5BeCIQL@>^Iv_xW&23h1>W(O$p2ytrqh)uN|S6uN>31OUz^71~l;altfu= +no$ZQRDf@c;f48@et@i=;)_xhazJ$hMN`t#7rJCg;d1wIWv%W8T6gEh};I+26SV7+|p^CCg3PQ~nZ*+ +yw@}02s^+=2GCruFZPIS)Rvx-|T+><e>Anz5n^)`OC+hN8jzfd<EOs;F$6Imx>mJ%NV3a;uZlL{U!$e +B|5CXnSEW#K_NY~K;!qh>ixDsYb!dg|46<}MtpU?Y$dKN%5p`{mwzd*<rOhY3<KrJSG{`7v&bx&SCNI +#nzKr&e4)7?g|Y<PE1YMuntKpB0A7zx@P<&h-mld(8?hPTjE+pdEsNpdBd%?uOfm>;hxdeOq%N82EcE +hqCr-kqYvtYYLY*k&E$r8}PNluH?Pk(m+FnH2x+1&jws|bY#?{$8JGBvBUyW=L+gyIVbptaS!*DpeSD +IC?UpTYT3B1C@U1##H%Q<6R@^eOe<v<VDrJL-?2`I+Rwp{BPhnoyg+!g;{j)s5TA^DrxPLb<7F*^d2W +1mH$p2dTm{Y`Py@knP2`)Y%liIfnihXQ#@%L`?4LWAR2;n9d>j7-wAnTz&?HglVv-pJUpYo#$t66|tf +fLPaQr}VZhK6`#pD9a(rIQ4cJ<LE-TgyXI}diuCh4|u`uu$RE|<k7I#Ua#1YRqzO}>eL^xgRMOpk7iR +0Kg@}GxdUE|&H_(Z{}4S`Fp2^<7dcnm62G0iKzpd^+srI5zG@KR(s_r|9^<tw?uQFlH>118d}9^EvFO +TIWL$1qu3zmyrZ-pAbVLXFVG566wHTV^b|?Kcr4k?*xx{J@Rk2su6IMXF-k!MnX0W>Ht89jX%u~8M%4 +D4qU`lq91W+;=7(=1tj_7SV?Ms~eQ9++!L%fh(XHubH3>EX61qGvCvDV0JuP{r7W58f_R7C@JtEdknD +q4ivE*>W{iYPNtevVEyCqUxT1@d{*_uCRWt&6{VDy>s|-)2%fJ~kd(ZFJTuBw;mEF|_qq3&4_7cRU}> +Siz*u`~&6ZL{SaWqQe@U8O8}pA1X-r2@2H=17BJ{DtD2K)Wx1f9&-GlI!`O|QXS_UcZ4R$kL9YdDz0H +__+<8S3IkV&g=6!qKY}HK4N<IIdEmpE=LT&~a|R#h`t1*v$3k(Hy|JKf$lTlFm?VI+#Ue<(Tmm(N?$j ++O9TJREZH&t9!6W$Z+uhxRZ@=AD_8^7Wkgnv9RFVlv?Xc=SuO2m$U#o5u)y?Ga@XI53S~aM`M^&%c>d +|k@8vZeCICkR}Kuv12C+8IUyRD|SzM|{KZN_Zil)nHo2PK#}D8tMuh*8}kLSz^_voGcn+T4L&eZDD$x +FZ!>ow4FP$S{9gxBwnBl9kuMvctqWw)#D97f%yA>J_i=HTZ~n%WUq&1y!G@r24&-k-9VWmh7FLUbD!X +)e607MA|J}sxDOwmFSl~n3W^(8g+tWXSz&v2Ub;Rg=bp;#zI1@)Lx@vg@Ff2aJkObwgvC=g24n9pp_Q +pp7?r_p`PKu7b08$#o6(VK9Rc$+Jh<W3{kksNO6ymyMF0Ud?gi+_sHK8F)==$cBv3{r86wNM&;PFn|w +lRI<5q8qcvu!L4V^43CYW#iSCY%opSSIGG*}I#?5_sa>D6aOWF}NlyOJWhT*kCi&R=`C~6!X6~`mB4; +}eBDx(60DvA<Pr6M(ORgAo1{nkHRwIZzW52Y82b^#I(1jTaVS}6J$2G|iE&|RnJ*-V(&#}XQj9VmHk3 +8zOK94QO9It72j8#HxWm9nD1-mXO<@a^Qdcd2j2Y8c~L@=h2UmD2o5?1Dmb*lTgl2Y$&mIfR111vi9u +B9@p+-J=9ec=p30KAWAlnAtTt9d=SUrMp9bL980VXai?qph~GNcqr}+bca{}%2N+fAquHS0El;2IeDN +9l3-{Z_HmXHUPfcfzngwiW$r639zZ2g<W{n)hKm5nz0q7gT44j@jxq>jox@AWVgKx$?v9BY_7nRYALH +x@KmuXnjkx>}5@0=LLnU5SY!c788RTvU@rk~5f(pEP)$2va%oG;ahV`7LqchG&BCUG1m=bB#TMb^w7q +9d&hu73*rFlc*uTneCL)hlIm}Y15LFy&-3U>^Z+f6t^1JVJM_b6!W*t>+}*q%lGUDxP&6p|Y#lF^kmZ +Scx&uZPX!6?rRpnGG`%?r07@@C0IR@_iVIOK!B)jNQeq-^Ceo7KfoIdl1C2;u~x3Ja!0p%*yUAvYM6N +?v$*yDYEOOglWe$A^WeFA?G84n_7g`T~t-{@SiFElT~>uSMzEsIk1@G6)fA9ab@wOF>J+rrP&D7E;<$ +;?U+0{&jx7kY{Y$BGBz|AB2|f`1}F#6J`Nw_U2)-|y+tm(InUme*T}y(>CcW6j@5mV&0v}MsY`ZWJ=) +)wb=%(fqPg+ur{+*;QqH{*W$&56Nbv7`I7sL8B%5`O*RyLAle|caXf3iztEM$+oB|(Dr`f2B*29;>lk +otRD9Ewr-D!V<9@M>l3SR+gitpkbvD5<x4~q%A6XX@4?$k?#;oF8F>GO`F45(YtNMv&q3%yiry!Y1I8 +}}c4`q}4Sd|4p}V0y}g30^kgX+6@mc)1v}m~J}h&rmOn%lnsXIz~v8Xbn%oDeAf0jR%+Q5F9ULyU~s| +68TM)YkmjL$N7xIGU4f>4MijmmFW|`k`32%{t2eO-*m$>hk){4n?Nq%_+_?sfJ?~45P%)a&O{AblM^z +l;SjUK{yX0=MnzX7aMFHd{~td-dGz>c#YZzN4QE|bwn*}ZK7*<aH_C4Q)_OBiGj8Eg9ebK?R~nV20xb +Rzm8Cs3#ry-9hV3>9wcG0rCSv#{HOf#EE6!^(szv=_shNm|;d9mcja<g-M`76izP)d&8lQ5)U>9kCdy +TdQ=IU_)xKoFeBCl^>#T#?4mp8_@pQd-ufu~0!1@pV4m@!Q-zdeMO^qU~qchZpky`ZQxW`8dYjvY2q9 +8GB>YD5KH#w&YuNU98w;MRSy8*mK#ZE){GqRKyT({LKrN|zJwG9!bQhK55Hh7~}tP0n-SR5?jbodOde +6>LgDB6a9Em`$1euM|4nAF&w{d<iuK*!>9Z;EhyC-z~$lE!%mz`(tPS*}*M;Um@$Uq!q`m$2-pNqY5e +=hunLAWox2k3L#5&(7w%l_r{7Y{hl>}x1ZKx%aZI9aLHJcYn&7^R^aIQh&}vS%;*za<lB*kOOpFcGkX +tOIlPk}t)VilljU%PW-sA@fA<oPX_wT@2O30z7>H^kQjkWrLLctr*o(WQ(wk;2?nn&a6_ax=8j^>-dL +tZEG?qXNcdqBFBk;;OMz1{(vsUb)T|TO5<@Jf(E%x~uKlinD(YOav4<ThO<RwjzdJ8NXN~9z-tq;-54 +M3F_O;pF2=gIHD@X#ymc`+clC0u_5?}aFlh@BYMvm2rTMbyls3EWnyz@>U;TvuItFzSU?u9{Y)y;ulH +U5$S<Z0oK$jxJ4FYg0vgbTIOSv*{LbX2)lr&d#Uf3m4%br0Ynv$PA48zNL?yAWl^Xs2G90$RJ?fc`z2 +yR~gQ#ZI<k7wDse0?Z|23Yj)ZCO*bE<NN^lpX$%pCdwd{z7W@)7yA!kyIilNMnj)n%A45d4U;u>-3?( +CTIY|T!Gz@VBch>4&9nO6M$k@$aA>$Kw=BKk5Zx<dcv|`K;Hy>dBa0-G@C|Dj(#8fXt42iHkpM;cS0Z +)?KKogjo=MIR3cjS^!4>@v{CgFSkKwSA?4?94OFK#;?6CgL<{NnUwPZL@&H{j{z2ktWGoWCzTd5n_RQ +>B~TUQE{|tPEa-6*4`j+nd(ebUdHb+$9X+vF5O&&5?3U58lN5;9NAKkgoaK3e*p@>&M5;T2YvB7kfZ7 +qNr&{{RcVWDTOqJBeq%*0uX9-7br1kiDa{D=_c@1K{sIm%BVEt)ER?$&=*MdA;Y?W*Efm;f2sQc7fVi +@7#DdbM^5sN|1Rv@N_^sChR!S~-eme(ZyLYXGfHc|&5?TrPIDwT7os{hTKrb@a!&;Kz9cG+TzZH%Uy9 +8SG5^!}Y($>9k_#`N^#=Wu<i+Le97-q0XmLeZu9L0v*=&+;-n-Wuck|YS3be-4vwQdNL5*oTy}SqGKc +5W;JI5Vfqx;I{7(0`_bBT`GSd4aHPQl7)Fnoz~d|dnb#TF&B!*poJ$8}@Uml=b#lZ;~zPTx|DbphvvU +~gHgEtT^L`y+#sp}G-L_|$%WZZ3S%q}M+^&8DbDez_;52qwlaKgVV%UmuO^Sl-t;Rw<?llvqUQ0SVa6 +`gEIOuOy%pPbw`E6Nz2a&9eG>*e<&nrn!44S6x_dvs8PIp>aoZOyS9^a9TNBYaV_5y0`Ya_1cRpgvrK +Su`1&JGE1jBuY12f_^sZ=-$R(Tb9nH&_ccH0rI+$k#n!nEjh=2MW}%Q5*7$8UJspfMa6{eud5)Q3-~h +R|@!9A1zx?vv`S_yQ8#e(LO<MI$^b&27Ub#ui<EH4M^Cn`ZnKorjH{F^pXq(M=pZ>buc<@{8(bM;j9> +0J5HT=5&TfO$<qxU~PdH>|=ALaM{kMH;Y@%|rQ@AGe8J3Xi6g!3b7L@lMl`XPHlaX^JR<awQYc?NFlx +h-x_N7jZDIB&RV`%t2JZ6}jSOU8)*T2eKw9<DdPJgS;&gat>01iIl&xH;>wzs0@y#Kx<^M`WB8OV@V5 +=|#j4ma?1^KzlJxaOGm0{remXJC-z;iprwP@acTimC$$1e%?x6WtrNpw)%BRlBq;#d>lAH{vaKRr7_b +7zToiEh;tN398*blJUTpSQX-mtPxe;95X~f%h6ff-NeUL(#Fd;XsaMwtb+N>)vUu8>EXdo1MDMl;;Sd +VY-w)E=SnN5tk#L>?6QFCxbUyi%lGxz{!2yyL-B=@7H}_y>^vJ1)=tri*bofJX9v0?|cfJ^Yp5~Nv&L +XHP->P+5#>MwUdaLy)|Fmc_-F%05mN!vUFIophX^16)gUgAzt6;J^#I)QPQQ#zVMAro+G`#aPI7|7IE +nG^JGjd+Bf4P>wVD{<DSCxvFJ}|r?umqj%2<)%0*i#v~d@HB`RMp4|aZz5jg9p2jCLPSDMSq~B@SeIk +`9C17hPIHt(5l!s2ZP@A`rVm-og7F;cmlp@ByUm7?6vx{Y?#;Lp23H2&?NG0i3~l9Oof{C|JYg4$j(b +O3~}tRk^g@-W|kx5TFT9UyZR{FO<g6_!M)6^63&GNl>=^>;>`>^pP$I&qj0F_SaXw1^F@H*6K#ZP<5T +j>Vj-9F(GxRmg6yk=fZ^In+3bQ-l8KNFha7f?BlKc-jH_Jz3XJt_hC(90ZL}mO7G`AcU?nA^)m~q$)i +-OcyI<EgD|PD7w6gWOz4Llw>mK~6_&g6MB(i`C2?i?X?ad)Mvh`=sfl8oky=_v?RkqICJFei?J^1PHA +7l_&d<q8KpqNr1w~d3T^ZfB}wTwl3{KI3K&>YjY=HkpG)r(8rob!|y1J(hGH??39t~{L7g7AmO^5P#f +v|>EuNm`@uo3VQd*{1ydaQ&zS`yi!|<P)8=y1<XF2-mQYw4iBk*_H|i1`ooI_d7|gm+aqFs+58*k-jW +bD54PF1KD8MpRuM7v#*3+uLQ|cD*E1?MZebs?L8@x3q=NMDmy;55@*9mWq4{8;L67nJ_N(`(Dh!mlI2 +}#!zsxz;u<N9xqeQO>Cq$=r2<$`IbcuUtw)kN`YjNmaTusYO$XAgJo|Z`QTRjK9{GGqeorc-S`i#r4d +JW5KdGXEq*6IPE&%~AbzheC)a6KRCMV<ZAWKI&^XSESMv6v83MnEn1(O1AGC)b9!&o{^)!ckUkX$Cu1 +#L#%hXpU^CQzCH?8Q=o>IoV3{(b{%%Ov7D&-`WPqVg57og~{knCLe1vv=C1uDdBobbhc#t9vxTxqBs3 +-b<WetDfuQ<Lc`fMY_XpBl<=b)hZKDyk-P_Wy;{6QP%bdNwuOBw|uProVW5Uof;4RT6K{B)H_Wo2a=h +~;;@qBgWgZ4Rdu?ekUhxWbs`P@`fIh}&E|IXx8DklI{?v6{Q9fzMTNWZ+i%5=<UbE$ov2_RWQ%WCE5* +Tcy%iC_^s!PgTewn@?WQnu%fj|@s2v_w3*f3pM`iD2qzg*u4%z-lcTBYfnqa%A8-~b=y|cxZm_Hk;Bi +iBO>FyH>$)@eiyTs8e*)av*RO0&eG%ixD;@!h={5IpglCb?aMJ`|jvEfiNxfqWyXyX)9VP9UPE+DTv$ +hO^g&i+;_NLRMNLgvYV6gKLFHQF37fXPp#adX^|M>3-_jaNdAa{<E>RM9^R*ijhL<(8^Yy*6$JS4;6l +Tvv3`ONzMYiIIbVm6{mvEQ((pD3K-Xa;%mYbUn~dLnWlJO50{X7hW@;vu$^{Um!T|w}XA{7cM>hwoA9 +UZ}e@bN-XfCsEC1!e)|2BgZ(G_&-N(gXY29vgWV@jV!A`4kDgZV<h8Fi5C3^5zmp$TBWApA4zFtay2$ +iZ&kM5pSA|_Ovlpf^ENN7VlRr~cAA=?4@dl^sD<bdp==Jo*5%{r@c%z8aw&dQfOLjs_au1Db+exj^@9 +KNNE9H2s(>FG5L2L7WiXBXdWe*pd{p%rPb!<Zei}R_u4|)5d3Yk6VN|4mV7~boRq}is#HPw1GII@HWE +y3iJFn1@fS4sP3P-JTR^Cfe+BFI(|CUrd$&0k)<WV?<RZo>p~X4cYLQmM7-L9!9Q5B0lua=-l|5*5bc +A$qTOKf3bW=;A9fQ)<;4)N9_JdSkjV)zY8tg3lQv-^dNug21ef{h;iw3$7NBCVKaafBY4LGu>2uim)$ +*9Q4GoCgamnk&wdc25Mn;Sm69NlV*$^3(~dw_8rq~QR-*zkFgP3s3WkztFK>Eep&3OowYJXD{d`)k;5 +Eg^15G3H_;Ro5}OJBTfWmM;qxYCyj@u6lnR|LE;OY=(~?5JMW5pNbCD1Ffa8n2OGo`kMpu5PY1=e2Z4 +(B1paSC-{1m6k>7HU!rB8xVyLBep=29qrzBJHs^=zxXQ=v<=mAV#L+d;P?hi*A;yh>*OdJ;&e(!QZ9z +qs)KFTeQ{eWeZPB?%2!>2fDeIC-V{>EeJX-O36$^KT55NqYWlJlh{#D>{(UkKP56eU~lET@YZ5vr;32 +S_z|}2oRPv%3K9Uh(E@mp}0W=hi)FH<F|d(XOrnSSsNpG47r_|V5Rk_-7<j)0u%N6c_Fk>{(mt*(1P$ +7Hf#^ZtV!X3!aEw6l_vL_VozSq&RHo=(NGhP=uj3wL9I3@5~@h8=A5iMY`q|yZSTz>Zw&I@o1ab_d3z +(d|Df^zKDpi4Xy30a(27>E8itPHn)r<?<2R^}e*i>vsXh}1NTVnT*bsGi;2|$fJo~0UaffW2pEIq)Tl +4j!`r{Y<q`XhX`s=HiEqd+K=}8>be|`6Ffa&)+`kL1Rbe>;DO88(Apy1|fTzt*C`~y6Ep=r;5*KQG00 +NrfO0;@$_cpJWFaJjE;)G<^XolP&6x$Ca(kNf9#3XM^?kIq7AwV9db5*N^r+xmo@9ntZ}%KZicdWd@U +SM#3y#JNxU>uxa%CXpGD<cG}HD=`sp@x!fGpyS5uS<%9r4bvf7CKzu($7JQ4?STz5Tv)TSX$oihG;c` +&H*Nq+Go#iMK(NyD@zCSj*cf^~mB>*!z{l`(>1ft679PZX5d>>1t@tnGZlY0`{BY)985W2DQKGR*^7{ +4c_3P>D*P{xCxJz~i`B(y{t0;%WaWyo%)F|*vlD&;0=o$Ag#IL#D_rvkg58pGAMgUw%?g_gX76pXOty +eF0l(;Dp@7BTYL;o?!xLZ%Y@t=~sy7lO#|CB`Ct#7=t^XlvQ`ugrVy?XZ0Zxvs*Kl_4TKL7T+-KU*bF +Lod8!TI;{Z-s(itnX35r_Y~#`~1oN?z7H6p8v4-r1NU;#qP`9gXb^98XN2D40`Wb=kMR|K90O^^ZTb| +?>9_+>Q|(|eFLDZzyrqXcQ5z$nlJWVHWw8Al=1ic`<Kf~enur<?f<x};O7i-|J(0h?v)n$f(pI({@J6 +0?{^ROpO=sJOBu|5d68Wz^4;$K%hDnbsmTBCy?oyJVgK>LcVz`PzTs69TQ(c(pYq$MPm3?_n~C3ly!Z +Uum%A^%+kaGS<hL>w`Xb+keLRC*JgTh9MiZ4>DSI%Lge`dyTqT06=(uaXpQuy{VZ^8??QG_=buh7@4K +Fdv@BDU<rEfFWOi7$^+c1@ESweCMOoZQ)Xln~JyIzsiGPO8}|4H2UM~h(NX5>bAG&_)0_}lA8pIMQuE +ek=jaO8h#&envacp+Iph|lu4tpb56&>p|?in#>nyN$5~-|%^-bLCB3BEIpkz8xQoAB_j|;V9^2BpX=T +dz*@xsR}9FrP`><bJ@7QQZbZS`<9-NBk?pNui?BqO(%fp<$)r`gVDHvPS@#WsD%1t=mAjFuAXMJUSgZ +t-^5U{=B<pnjn9IKK74s%S#T(UNwt}w2BI2^Qz<)?rXN*0`&gLbg_e2L;79Mo^4LSIelF(<+u2`XfTn +96L2=vX!>Q&BqzF4<LAUg*m~uNM9bJVaR1RR7x)`5wxba%9grs$pUGSW!L}1u~rs;}CM{uXPDYcJ6l< +{M^gOJ_$1Z0R;NPFU&5zXnJN?r(DofHIlX7dwKvL8+jbdsI*M<X#uPRWc~k{9uIG;TOv_MnIc7q}1{P +_<fpZJ+J#?$Wpks`r!=E`@LS-N~HMP4D$p?L%9Y?V~BHc(f$+!u5;<Eu6fXLmJs{05r5;K?U{mQ+!wV +O=fXO!Mz(Rk7o;XzX-Gea+w{S$}R2QdgC`a(MqXXfvnkqETd`>wv5k7%)<ykDmTKxL})`XHl;p3RUVT +MOM!=o*c<gqPo&lMfY{Z0tKZ7z-s->lG(qo{D&vdN0^wu2H^@+LU~_f;@ZJ8w9%t&b_n8$EY$}zIXOG +Oh4D;sZosSUj3@d2P3RWA~;Zj#4NvYDHQY&c3K9CdU@T#1|cEK>h&Z*^F=H!3f1<j;q0cF1)VYg(QU| +ef4tDb!b)j_83=2joDAb}Kjo33cdfPB`U+I$n7<chNH0g8T_W8z7t6(r_|7%gI+!Zj={(bz0Y=z1E45 +Wazh84ycvaoiZaE1d1uSr9AGw{lW+vx{LNDf$yo3W2b*8i0>VW>C?*GLfMKDJyf36t|P0(5~WZde}AH +tjG5P7$q<W56Dr~(859@1RfvT<k!c?o_Cna#c^Dxge=(*1jbor5A5UP*C$ZvBs)*v_A$%PX(T!oCD}3 +M9X4z}2})|C-T**JNS)ghFf+>`7ig_eos&$wO><0gf)QMbC}UL7sk~IkwMf}^Xo#j{ScyzqXbA`Bx4% +pG?=!Txn8^r*pmT1Kk4e%o-fl6wyj7r@UKeOEeuBjGzJARO_+Lc8acWj1-%B=~Wm!2)E^jpgg9Btw=a +sgbztsrB%G)in)mZv0*>19-5CgG|2G6Aj#jO^eTT3=rCV6x%SATO`YlQ=E)s3}^6;5>X+1bCTt+z}gW +f*xZV}f4$3Z%tbHnLq!=C$xs-06SNmX$p#@XSi~MKcvv_XOI(dxd;{!WChHyt15Bt~(x{h-ILxQP|zH +=43j?RMu`aON@o3>lXJI=Cn%RW&<1Vu&{80K@=9SsqW9XGyj%WI%nAklZ1|^7{n}?0xE+m2rcU9M`^S +`0at2I&a))&*nqtwN!FO_e1sU5MgkVA*i3B3;w{marSSH#BS0Tk7{7jhn{~Ppfq{Z<a$E~zYzjnZnoi +i5^odHpr*H_wycTrGLnAFQd@9Py=sqzWt(7CT9!{9w3bLaKo1A8@rE<i^P*P-R%Y!B^L#>$n*vNWIz= +ZS6YT9%#crndbAS#%yNj6&EbCgR^?=cJ9WUb{A0kyYAJe~uJGS_j<g?GDw00#76@7)X<LOYe9ES$&2# +00Ykz^t)BiP#(Cq1qq49itUXtnS$JmqP1hF{UA7XnUTwyojMIA7*v}THWykqj%aR<leh^iM$N9+=5H+ +C|+5}FPTPv$<y0L@@hVzK^HY!oKe!tII`%jW+5S#eg(^BWjr{1r~&Hk95&lWi?-f1JGWBDR_s)CzOH2 +?SbEs~%bhLm<kncPR&q((P{z89!Fm)Yk@#z~X_gL=xsB^*O3<LH)o)#8tHmqcM(zI~odB5`W#mS&JL* ++)!>3a$H+WJr|EF-0U|I?IzeizV%tLsFj}&0M2%@;CEDmAf$SLN-^`gchA8DebKcftjW6l_?d!vBX2K +_hL1u}{_<mb~W$3rH`>l^eXtoqsZoG&oV4eEb3e9SN%*jAX+5fTJUtw>q?1rc{u#;zfSp(^Z~z$|=eX +)dV{Vpi%3@O#<GJm%Wx(QYov<J`m?Cx>d_?W3c3?UKXKD-&2Kyf<z6&r9nn(*>`tdwy%#ya7S_&z(3m +&P^C7%$z@!{}vNhrcg#>Gwt=T_*fy=r*vi*0rT?!1h_2BB{CbLhiT0#g9{^gph7bccYJtMSKH%CJdN! +gG#y&0oM+uPFSG7^O0p<4;s!+=Rd5opmBGUEfEh7e<Em_$pxAej%(K}`x0a1V6MStD7r#3gh_b67vG( +!U@AcC&I3>}qzB3<@KTp=9BeU0G$rwb}4jw&Ow|I1~#FrE#9A8f4G?98kmN+5%F#vvD|7{bMKIBv>m1 +*3`ukBB!zv1ch>&9<7jmZ+fC;C)yq<zc`PSWA8_XSjpH?Oqt&`oEx%F5VV8a)5nADZ!x1$=fXF(&Gco +%&d9c`IS1$R#RV!~F<BTF9yfyC=49T&gGJpaMWnFGYV}Vh(Zgp#XV~wZF#YAgFkp7{`dy@tjP;RN9;I +v<H-#Ai5ek#jiiX;F999iCSmnFhb>@riJkK9J-g)$knwf%AONeF1acst}d$A)b$$JZ1<eh#{?o5;f-Q +wqI&KPnG(tf3N}o!1nl-DtuIooY$wl0+4JdBlxb8pavj@5%Hhl$3e;Mq->cLc4o<CtU-6MGk)FZtBh3 +R-WXLSd`@jZYOwpAQbBb(+4S8+Ap;KrCp82iV^+8|6a+MC-SF`b?Mklr+$`Q@u-E?}E!=JlvF7R8ZSf +lj~2xvK|1+`-cq9{y>g{#g5Z{HPV|5cTwf%<!qdWr1C@iiU?dq9LIIXNyRkyC|Pg~Ox5S=4Vhr5q;#n +u#_so@I~==eE80$%6-&TzZRe(u^epwm5s!pUlP`Ks53*CVk2p59F|q7uHAh5=J-}rBQRe0+0venuA=g +Rmcz(j+?t-z-o)_((H%$VI{uP-y8p7myHP4lsMcQU8=+^0PJGA#bT@FEvm8Lz(cK~$T-_rE|9KwBiBH +|GF#?F0mQhLg^wew%W`uuPxMqSCCl!c{CfWDh1yX+v`@JvLTLx^9<uX-rwZ4NlFDr?kK&e!=)4=@m5g +E4+&<OC-HL8_?MD}91p6c`MYgHg*Z!tnUQb4q#WhI!gUnrjG>;2_foK}R%0d?9S{Pdpgho|D=NR>CP2 +-ZOOgV`POD+^UotP4vH;ZH=m#O$hg)Qvqw!B7eVAn=P(Cc2+-X^^yE7#GT6b^0-ihhP%TZgwNc80=Y0 +pXLIN0?pM@E1^H00Zq^YH-u6X|5dI#X3Nqh=Ip=J|&uK3ieerbCrQ~z{z=hlEOU-FJbNA8i~*qTDu|% +x?|b!4TZ~u*fwo%9u<vGy$#|sBe9Dy)u87cV?NOxiR;W%EW(UlYFX4_*I6K=U9$vTk&}%z*n~cb4O^b ++9X}i?ZV{M=sk%O=bx=a0CeYswGSwM!*Oc46R9&U6=7VmwIvCivli34*l9dkADTEdbF4~GlsWxy}Xb? +axM_Gpto;%_3q`KVM%8fsW5^u80k~Btkr>$+PIw7eEwx!1xr@fx#i&we<E4`)n6sWOl<lx50OA(>(Ns +$bZsHA%3X|{Z=7ndS*i?RlT_;~jpCs6tk){>NAVd3kl=E9!%4aI{;2WLfbR!@K=zgc?crLy5M0z|TlU +xXRi=>spYenq`%B@q{5R<LGKbs$9u{jIWEB(UcN&4*K1SX~9D`@oo2c*LP%wNz)(&skm3O7__TZFVu% +x7BP$)?nKyr+IT3iZhNsKNyeBGD-0!2cgN(JBI_ZwN#Dq&#G9kIaNlPvf;K8X`W973;?iIT~XjJPXe_ +>^3UWESrUl~f*-CW)fT!mxkq8#D+cBJIaS&l_mlgr_Jj6k$>(2uxhS;NVHL_&fiFC)as~blwN?nvznZ +Di^J32KQn_k@;84Q6fh=(~=B?Djd||NDWp}e~kWtQ)RNxr<E`{N@L{HlRR;dGIQZ%@+jSC3c%}tg>8m +fBquj5gNbn-qSN62P7cr1)Xz$}<u=&4VZ667dz1%2C~6B*uyt{MejSk3u(To14WQ3i1}o`-qD7MuH9b +i}!q04-2&K`}<Ez>bY%5sxI-+0IMvs(mZBt@N3yYyn3V8&A0#be#XXO|-xm2M@;*XHgar=BL61J-svp +9UtW9<LNBRX9ZwV%djNq$+!VSsQcE7QYv&d0+}eo$bo1Pt-3(zD6_mPnkiD8lkXh|sT-e~6A8+7(L~E +;#1pHApqXL+?0kl1+%O!Qp$K-z`S>CkVs<8Ya4Gl@%M0?cZ+URcNOQnM4S39Lj4gYXVQALcdL22&w;9 +S|w4DplfRUN8TRt`?qj7RNpHkQ0XzTT@d4_MVfvLrLAS7>QatCFM$9<UT0OQ7{v;JF*$imsSS+?cDn& +X+hD$L^|iv_QY@?Nk2;^|>T6(NMsR#?v0dmzk$L&Dc6(gvhxP`}NGVcUfzjo(jV(PV4eK!q;Hx9M#o* +8_|A7K3O~1&QB<Y|hB~NHfMT{N-C@?l0J=rdKMs8G(WsqbrHG8<Z%Hq$3>che@}~i8Iw$l|T!ES0>W< +S&>k?qUFSz`dX@$=9%9}b|{X(0+qfK_XO7^tE1QNjjCqL0RD!O(Cs9H1sO+<aaY?wf3+pc4?k|<tKNh +p#1#5uJE@udQJ#0Ou;@5GkedUg+}jKYol-Ecsfd#EeSwK|2D-um)^DYF5kLlw0j{E6ME7U{Y|sc#EPp +qi{u#w`kkrbg@;{-R`p=t_RLv;=eRL0QVm`?BriNQ;sq|6Uvy_j<Gutt#8I{EeTcFroVa0yceDSsi8j +a6mk#Kx;Tbv5oI*?7OESeNm>t}<E-F2v&aM<pSdOqi}6fTVHbdGT@`Fu7RU6I?F!*5dgA!A3Vv=%;5s +FjtmUoop9Vn|bB;<AcSi<024WXIxcaQ`^%5c8G@&IE;L%@97JCarA=Ra&kQdhZ*ytfCEacraR__c5)| +ZCLKi-epd}(8DqZ&O$xX`;Vzdf<7kSr2WAsNpr_n9`T=o21yMLBZQIli%1A>J=Gn}Q*mIcjRgiBG4Q$ +Sz#fv|R2bPuQj57o@qa))Rvheq)nxR!o<@wVfUj}As4RQ+<EzPK|J8+kfG$iCL}EM6fH~tRHmH!%6j1 +_MH$+IW7pg9hx4G}=LG79F7O1XKgtWMwSC+X#6fKdv@UuYnig(6Ux-l6HK?+g+b4p-}EBZH*#NPi`68 +o<t_FqZt50=CtOyiX#vc0r>zJe@vRj+~uxpqo~QM3zX$AT+46;Rz}!q;C{6TV<$QM_XyZqH9^m6v;ul +jkpYpMATR{LkK#C(nOKzJ0m3_bhq%<omtk#rH2?JlTWqyN~{sP(a4y;mhYgJX2=J`FT2l*@l^PFkk)s +``wp&$)o+3kD&I!%Y6V3UtS&TzD&N``*HW%=g*Soj}Gv!g0#>fftx|{j&zrPZBop2+kB0mDu9!5KC)H +t2i5qN5>Q(IfOq6BP;FGT)4(N2JvFMLz!BmsJo-fd>06B-XvFk?Q5}XKRM<9wPbwbEgE50}4JI|7Rx_ +0e%q%$%r(I(75N03N6kojA6{R562oppbaSU|nG3E8!YsdniER@g(dTBCzg!sm2)_Al#<o{J+^{<J|Qs +r<{*N-g@biyGExiy`S4uGl1YZ$`T+wL^KiL4_=wX8y#$E3Z!-bmUT>#<t0><Hz_r|YgdENHI%>3ZV}z +bcpEl}{Bn)&-nhy;OB$z45@W8FszYoaE|bI;?UX45G``@Eg~}Z&Vq-Q2i?D7}nSEK?DB*P*vrj-1OR1 +kGb_oT{W&|@{T&_J-XcVy4&=Jc&jk<t4@p_Ki8$~a#$U|e7YW@<NG}y8=txXeNl#s@Ao382r7n%__Tn +BFCu8*F6-wq@LK^f-b~cOOYF)^{H2%pYwu8voT_`c*`NV9^che-em2}NAH?xPkRu2RYK92fC?M!T1VN +@#1r$m3E2xnIWdkz=NKF4Ix0TTOq?msI`-40Hokw}Jh^M=`no>!R{olvl-{t}Ea1)Wi;J|8gHsoHvJF +C_DJ@Mo~9YmCEFIvc(Q!4P>LeT6EP9_vr19cRF+F0ze5u(~eI`F~Q4EzSCRj&u_7?e;M3R{6=SflnM> +PlqMb?GY&^?$SJnB75RogmnT)wnVijiYG{vIn#b-a^#5p6jL-wzak$8CJ1;VJrI%9JAr%iOG|oAA(5H +Gl~-fT!*HBBGCK96tPpL%aDTSIbDd5HKBd+Cd(#IO-8$bxNuGkU83OHxhL*MrkiV~H*3*Fw6+XSrzte +qi#v?cM4C3Q;8bGq8nu4pw=3GesFTc63R_*%MoX{l&xhHkaavKi5=I@{jGAh1W*$jm^wF^Uv`B{U +qr&0^i;t}1{qkqhC$`x0=XNoLH{O@L@Kc@f=6untwEIRO_P->}c&AwhI%lq=Vys^7zvRHjb_KHhYq#( +1nGB;!byCnlVg^v09c(q4~buldNN+BTFXcZQB+s7O|7LC$H>*T%N-+9Cp1a_lG%M>oSqT2G>!)?zltu +6=(VlyA*79DiK1W)lb~9gC|E19)j$$mheFt0sP)@){$+#3Pt$Ab)C2@n8Q>Yl^)fv)ta^=$uybRRYa= +dN)(&_~S*KT`}OSH=t_;on3ItLWK<yN@JNe5*=gPn;kX>F1@6Q1O$klZOh<DC|8CThF0gg_$QEa;$gQ +`Y>4<RoRML?JZ@yi><83})$!#XQ>iS17k9H5i-79ILJ+u0p(IFEN}><AT3Yhs8um%CbP%tA%Ijwlj@1 +RGglU<XkP!NL{pQ5E#j~iX+bTxrOZ=!;vtzAPmLx%3Auw%xeoG?3YH#r{4B2XUa@GGm<G@Dg<KkGbt0 +AU{pc@Dbd&S<a-qS1gGCHHHMMI4aq0F}EN((RwB-+!fawpOgTwP(Q*sd1HZ?kVX>$=<EVQtINs6**`o +X}N~wekh}RRT4}Vloyx;TQ2(e-7W|6}XYnUNfHK2gE)u;k!OU{A0c}TM-){7#Vq4U}WK?zmeo84=-cb +aE$bm@%T-8o~1n&^;GsAzRPCb!I>m5V|;w<;A5!uF^H~rVa#`3(pyQZMVz(C+!CbJ<OI0pFz-v8<G0z +gf7&<3&Ey@&xpRRzcU()s=F2993G>CY!tPT2ba0Vg=7K_~n~cz|fvqM;FirN!_`|c)$k|Oy$><UpaA2 +|M`h}*{W5C^Aw4k_)H}u>X41>%vx?PIN$NVHhUt|}Jcff88)`AP2+|rY5U?W8LXKd)LGT$WCO?MLsJ2 +35F`Ve!QE>Zhz0S33N3a;t31h8CL6qSuXA>W>J?KR6MP<i<6LIqm5upwvT$@9@R)xo5rvllKvaIKnDN +g&n^s1Ay4xz16AjfwKoyHw~GuqlJ=bXI|?Z0x+q(VqaSdseb&Cb;gRm7XDZeB>Hf(dfBwMmuar@2FPF +O8>ze`fXe~Y;M4WiD<aEuu|^XK{hisCKwQi^kPCe>^j#<8roF~{sk+VX^)X5klktQVUW3<W_Fp{0B)O +Eke!AJ^t-CSupLoP!N3p<s?wtxC7piwh2(Qvg~py_K>4mpWL*P>$l|%O0*SS0;I2txL;M;N3ws3f2#? +DNt=DBHvbP)#BZOAWpfHb<XA;-9%20`APhc2dn#eN6GfPfrC`<>ym}Mw>@H94AWzZ}}KABrL>iFoipb +SeObr!l!@~_VTNYhIfh6n%gF$SVUbD}!h_V$PKp>fa{pSo0J)^HJ89k^vu-V@gas=0q^&mXC(#)pa0? +A(h2rjh(DyJY$+3J}hohT3jYRXiKd_IVk(to0OG8MSR>M9qU?Cw}r5awodM$Hd^@@Ipq1-b$XMjD)EN +8n!e|!HHyLwJpNvakilsi|}U<N5O3qjG|>b<KxZl5ITG{#@L5x!QuOlhs}I;Imm!3p7t^4kuU><B(iV +=l%MwBshp`W?;R+O7V?frRBn?^+2m4oEgH2BVc+z7n5Gp5t<+y|z7^~LWoiA@)RuzyP<9aJ**3V!`4g +%zYV`$Lhy^EBSj1D^MO7!b9>Z5L)hVE|sKTdpw{4@wMzc0?177c9xv&~ZE!<mSj7Zm@=o4YVJ;_EN)+ +pyZbbGcgw>{j#JAjWK=AEazKX&$?9W3e4yASP7G?`<ux%Cwrk-KkGO}+(7z$QQlldF;eC|;u!*Xt^3I +hClw+)oYC;YknZA+QiY@-~whYzhn?G0TRyw+4Mc1nwsB=C7}+B;8(LNlgkEDrnp|^Poo5_1r`hE`x1A +$xX>R0WGjpLte2}_$~sqNW*s9t`T<tIKr=p^#%MhzQALjLd|+WW-7jkBTj27V|1XKlm2yR{*rB%brBk +_tv4bguWw==M-K|d9yP6A6Vs=ZHS`p7kpk~F#jr57b|V?~M>SW`AZRUV*Vo#StDI7Mh}+`TS%nhN8xT +{tu||LaoJgSH{zJ(?$u%~QN{kZhBAAthj4@4U&n|vex8N5WWfWs_o|Gtj^^{CbB9T5z%`-R(;qtP)v1 +~g_MFpVHyQ7s=F~HOG`gw}dj*}Re+gK_ya7$NK%G|WXpj!8`*G7bf-9bKXggqx9TpvkxGJZ>9bxM(>l +naEe=j(KYxh?2*7W+$7f3L3KE3y0RaU*&D5~%(20}7@zsXc<#IRFG$_PPRvpbQqNwDJj@6}7r&DKbmn +Krc9(7X{}ULjUmD8wQbcbZyJrDee-VLA$@#u#NZF%6n|5Zaln0t<K4K47eM0fM^b(p0&f5Is{L54Um1 +Abf@!PW~yqrqDhg&=99^IO58P62H_Am{WG?6GdJuEi?NCI&S4PfP=3jIkozOxnPKvjM5Vea+t=&)nzG +fa*|FmYbTJRf;#XlpB}_9<IaX;^=oy@^bJ%W|$?0I6&OA20;CceB{f=B$t<q8nBxudAsNvxSyM(*Go& +3&pe+fGsXJ{zi(U_JeqB;%;Sr3eebdio|{Y|FhNqR<Ut=XwI_nTUQb9X%1H<USLK0@HetfCQQsA7fo& +E6-sy6K3>?6d6MEC_md^*Bb6Ti_U}HwKn}HtV9_e~lr0B{L#PhVoSW_Q+Ik!TD8gBEwqVsHo{fUq#$3 +TE3gtz@@XhF|}7F5n`bQ)-)DKsW}W5D5SK-7R@V*4S6iMpqFL0>mQ|CaHw=l#ozf08qV;SFj3p`WW3k +in^>BNdB>QcgmQvk6zN%qZoMh{yd5<@-?xu#9lAU0cnER>SHskpS9J<;BRU#wJ~(Sktj`zGUHL(HYN* +oWAUb(QQ3@o&Am<jqbpbChihefuN*`9RYJe3&Bij1aJ6smwmFCCBXb<M&n$|Q0Sp#U>zB5&TcF1oV{} +0U=d?uew&Lh$N77hDK!&d<PPR3yZmop&a@z`oy)<(HtVZp|NAo2{sp}KsM7|z0YC2TwGqUzfpi-PJCI +=RZ)wyWaED+^*Z|F~?Z=pq47|KeO9mIB!w8-I>0i7taHT05L&GkaFI_#~?mON0(`v5YqVO{DnWM2f3_ +K29RV5`OAR(GJ`tyAMrAJeXv&zC<hbJSDtKO|6=ss`^rn`o7AYoCZJZ56#KnG{<P!&6@(r7d|K%_A$- +`U1{^#tI%GPC>rAG!O6C5!Q^5*AK)EX4?s*Y4WWr8gm+#B9SWRlzFw+C`19CetYm#L19{5DSTHsgp;? +7zbm3^xQqv8D?kqBp8RC$67|>aqxvQx2!#)%5iO*rZjj&fdRE|LxSZr{Af~a~V67%}8K@&I=y6Gl`Rd +_q@_oxH7X1I-FVkle!*r}VDiPf!Qu8Y~*e#pM4flJJoC1&{IA+<|e#N;Y<X*z8Y*TLj&QfoKri~4C5D +}PG4x?HTr+>0wo)=HCAMre(iPLUW~alb&#k4bVp`2PtsH_7|M{vaiT3gaVWx6Sb?D!j#N4DCQ1QDNB1 +{O4a|z_r*ww%B9W&T<#NE6W1^4yv-lvMqhI!j?ALvS;(bfG)sm<CC9&8TOQ8sG}|pR^Yj7Xy84^Biw@ +&x8GD-hBE<!1XK7pqvKzA=VVDt+%WB96BOh9TC;(M;32ufN~A1nN+`s^lncz9P|v{8jTe~leE*7k{-A +Pq+{2rf5h-qxPn*5|S$~%N(w~5QJ(%aNl?U?b=XpBt4RoMzEYfa+4W+g}rSsiPLAB|{-Zh0D)YUl-0L +$YZ-G=>~axM|*)&K6lpdolg+8g&De0nRW1tr%WATb^WW!vlR=KA`2JFL(jk)1wP^xk~=#pj=W+VmblA +4@G~m-LtWYJO4N;0K>pJ#He>bJc5I)jag;#|9D^MDkDj^PAoMCz}|3Eu$;JY()GealOE~kjYu{X}yuu +(7k1|P4TieKl5*ZIvulgo{eWu#s7O-(}l(9xf^CjY{wuK6KL5O7V%@p_fB1)Nmm{`MR!7aDgF8f?agh +|%|GTSD=IW^!awk;hnhKMJj@6!5@(L$6h`$%ZUjr!Lw3}@|9hb$M{zR^u6`J8@W|j&!?}Wn({?S=n_J +64xazL-LapJy1@Ew$EFc-=7oOAyHlQb^mZzf{Z6Yx2BpiHVDox~S4h-~wj!OwaK`{IiQ=gXQhx#m?o@ +F!N*=G92*h&}@DH5<8+0;D~!lDVgygNWU0$*sL&4*G0;2XC)=N%|EhbGJ@QL=NsmK{h`;HG%gs9-Gu; +1GwxM5JgCz0s679;5=Rw`@o0W}rm4nR93WF-cF(*sCyyZd^|KT{0c`c|OK-gK3X%1cC9~h7>xaF3b^U +GGldXa!NP$HU;N6jtkRIyd5eP!lZw$mNI-G-vP0Gps7;*lUcH^77nxd>?@okS}&3+seG<Du&IKJC3$r +l(wIs*hB7`4M7uGW9fmy6^Z5*w>!gg?&vT5H@{-FolXmj|0XMe+Y(OD7*X`te@(NSB_2Ec*pFGa;?zG +P)WQ#xVljJd)6Fr{<rm;=@tTpXNeO>y|W&NH48-r;mpqsd!;OqW~#Ano^z=3j^&$40Cou>JDtf%JlSu +p%BA5d<K9JY7Ai<p>Xg8^cYl69lb|H=3a=Db!NjL+VWs`Uua_JaWE=U>9xr+wHiT<{flE=O~<i*uk-z +{gUkjoBFe)X0erCn{G!AABA%la2&0iud|z?*+VYnzZ*-Z8C$3Jy~vOqSS}QWz+_^1TJSJ;>;(CM3Mp# +peiVq7Wi9QQt#nzqGTl22?05oeh)<nuY&W~@e`0>13DQXhge1;!iOB54*f|@Lcn0)R})D{jA;6;ti=S +gr&jaHSY@;q`${6q+va?MQ8r{~+uYMvL9$6zEmS>H+fUO;4a#s2mGA<K>rG}&E?p2^3{8@CU<S!?L1W +qftm&3(l{|ZUwF-!br8R7?da$j5H_Jv9t=~p$&)$#)t{RS?1BKUdc+-jE4_0mU=EKPXcfu;{af(?gn; +gHF?s9zjSyhMLwB6oR+q_9@V6&WBsFHRzFl1|6y#Rb~TGFHX`{e`bu8<G-URg>%Di|d8L0P{QDKQ;i3 +Nb!_FCP^8FWprA|NKkrKT#@Daj#0JD17PXWrI+p%MM~y$nn8^{$)5A>hm(qqy*)VvzrAPyTRETftiK4 ++LEb4L3Rv+SOn%9XeCcSRuTQeBFmh5WF#ajkvTs7Tp+hD^8VqWFR-d2aKcS3u&v?}OOyRrK>Wq;v@?r +*W<0l<p+chbacm;V<)UbELe&S^C@IS~9QsdqFIKeSVia_=C8nvvuRJ47D{~177aONh18zNbj8T?pz`e +5eS}uI7TgLH5+<^uNFW`=CmE_gdw#8*sFAzn-!T>P0+53RFZN@|~$U&L<Al8~6^Rj6FYCi1q5FJAd&r +8N&d<`aO3@3b)5=RO(N)5nh8p>Q+=%tyXvaS{p5QSChV^ZF91ZB~#MoqZ5FM8_=<zA$oQXO4gMTH;AN +G-Yj%-kT_FiaD5sHllyysm90ZNK@FEaZkeMVV0y#~bln$^qJ<ZeS_iah`_y1?`nWMoZ)Q%-vadE#pq` +l|9$9^H%)&$-F=4q1Yfg91hlL3-Bsrv^hG3ePY6A-O3D2_MOPEB<tZqy`F(lFY2fCQ5n&W4y|+N2Ps8 +^?yXVY@VHf<E9OGbOfOOp;1;U2q!1i+P)Ynm#u$0UyHFy<lF@MuQZip42&9+6Lv(5aK3UxibV(9Cr-Q +TX1Xe+pT~3gEQA4cy`2qPgT5g^y<IQM%VZ#f+aDcwB-h{KNNWUeTjCBlGjzn8q1y7=9AaiXhzaL^188 +$PE8nE#SLM<OUK#EjBUaq)_(e_Hf=K}u~`(%+mszEa9IjOu*=QGuHDH%HU(8{!0P&vKm(HXh51$EyiC +-8rl-;$(ion>H7GTaK3nI`pQotlPG_kkdPnVnox6g?dF390V732tdNtO1z|k*SlGwUT6CB0aD!4V6_S +j9-rDM!z}ecl$HU4~J$qGz$_|7gm2Zr9`Hq;tZAyy=KQQ+wakM1XD4SnVNGLU&P|Jn`mpA#F!!rB1$? +xnT}ydLo-oXkf~L6yqLcno5W2S>&IwExFyajfy_%m#>-OY!KOyFG=eGd`EkiWfW$?E;=Ph;VUVBqPiK +En207>RyUle2$srz1G%B1p{x%*lG%oabwPGPdxgW)Fp{`;qW@y~cOWoPUgN9z`nlBRn(^ZNZ@kgCSV8 +tw1391@yHl8k9{{{kVUNJtRBndDJMN0MJ_de!rDCY_ww+>ef__%u5#D7UBz>wK6VLiQ~fg{R_Q3J1wp +_`2!c+E?~Z~*F#aCrn<FFrSZZYR5RJRna3<TW$&9aXuP*5)6L=!TQ=G@V{1281_!bq%?h_@+v?lkaom +b2McK0_1Rj4YPdK5bvKtCvxdJQ(C-<0kBRzUl4RwpHB@m)OZ|jw%6C!SGg(HP%7AvGc%@m?}N+ut`#) +N-Fz5m5wB}ENf%?`$F^c5&N{~IEiSMXP~w^71!ry$2{;nHn8Ga>9y^S$KLeu5LyfgakqJ!yZ_@pSPzm +rl<54HWldmHkT)bl9t7Uapn04a{)4p2vOyVDrMFtUh1>cv_(cPfK%guVYte!~IeO7Ta2^qxIJWN<DBt +r(_rQ@+$opeZlm&f|wvomI+{aaRD!urdCxtX~B{t)7R%Se7p(}_it*n%BnQRp|}Fk&B}3<AUK!l5`qm +wmiGv<eY1ra>nLlMt4V03QFtOJl&*aAqQmEOZUP#G`1vX>9p%YxK|N<9VKx1Pb|zg&Z-d#MmV#1CFr3 +VL~nqH9bDAroEqlI~WOWF*m8$9N2&yiz06TqcjM^F;rWgd8JD9NxlSF#q%_%-fy)Zv_GrX(HjEYAgcH +A#-~LI4)KLMg>H)=hnT<%s!;}5@J!J;oP<6t%3DpAH5(4IU|$*=?sdl7DvZ-;30WyYGCEm};H~KttvH +Fz&aXU5r%iRXl|O9O*4rERfvs36fJP%hpBHXm8w2#)B@|8XCrDcwUn3VI0u@fCNf+B>T-Dd^kYR|MoT +FAwvnFglR8>%%99j?3Iy~`CUkq?5y^e4vOJaPOny@0w*Cn!0@%qi75MH|<0Wa+*jPUI@m!%8vy6O+o^ +M!3i04-p2qLUgAxE~K(FwWVKA%1~Iq;lW~n+G^Re<{tGc^fih5+@dm>9lL6=2~c>S&{rc4qzwEc?$3t +s0DLWuOBs%;kcI$wprDHUtboIBpIwLGfq;bNjJ(Iz6DQ*QtW5}_8rHFCCw?ter+qAQ7Uz~XU3AVH6G= +jYN9snbUwhd`<81}on-37cfKpfG}fX=kKU-|Cy5E76m`7>!Wy?fk_bv%`8}3%!pD5nwXc-*KgJ0h!rt +uBL{o&KkYr<3Ka%z7C`p0HG%&etrB2)gQSMW6%uDf~6FNB7*Y&v(^nvGTVNX7=D~DlUt{3#0I(oeTFd +w+lX(QNoM`ndT#`K|AS>UO4N_*>FCD>KYM+R~d1cshtl2V+S>1B&kd>hkL<fIJyHO)@pFb2L@$0?)eA +_RzIoAnEK7|;NmK^RP|g?a$lUdb#ynWHZp8>A3~ygN-N99K=QLO6CwcRZL6M~17Ts}|}tM!h7s|2JKm +2V}f^LQYChaXy7AC-dnbom8TI{>V}BCAy<d|BkmP1JvwrK(=6qujnz%#%w__HS2fnfKYwO-69K=HjgX +8lSbw0=-`E~g|D8^#!bEe<Cw~7XUc_W6qf6F%!#<bqavu-cq9h{ho3*~XM-N$4tHe&yKvgiatxD=H&Y +Y7oWfU8@Wzw+sHF8Yr-9TLSO<o#*piYvaKtvL&GCy{iTFzvBavfTj*7p(wx_phf?h-#iKGX2wbZ+CKd +D!Kf_V2l*kATdQ1Dmj?`DV+8s27zKQo3+I|h>z9UlpLesec<L$+ZdDo1HXVpn&^bV=7W*#u=Zo%jhvR +#HC{4o6%$|N66$f=|*bJX|v1bSUC(Emjskk^vT8Q~KBSqC$`K2&3@61P&5rv=7${_XO&)5X)h|!)6r> +Rw*;2y0M~O)W?X`ksaM30!5#wj-KTo`m^)r6swjp#r4C~h(QAzvBcfj!S<1#!Za4ncjcZKfQ8<~wC6~ +{-ij9=R1~=esi7yZ^ozDqDDv3a;bbZ7+A?(vK;A|IT2sTfuLBHlUJ>)si7tzRRjq^`)nH^)OB~v+)&g +LK8d)Tu#YHj2ftL5o$Wo@Pbv(D6#d407wlzx6hLbe(iEIo+TUzk@j_`Q-cs?avLxrV-ZlmY;pNmq?@1 +obiuD9X+MbD4uT5X_W>!KGPp{9y=(sT3vc|Ja!p?`!Cb9B^K5ioo6sZk2k?HauK300j+ugRb;(#s?Ta +BQ8_WX}?#FaoZha@RnWA(^d+m6~9W*@bY#8<7z^j<7)-Vd>a67K}Z{OOR03u#y>l>)LNU%^4^Gu4`V> ++ZvvIB!rmr&XXUHBg(rE5W!Sf2&0%QiE+T{9UHD{aQU2!Np!#k=+h6=ln#Ad@7miYZ%}mGQ9hqa9&TI +&6o~}2UzBd9yZoRYX0!8g?-A4p?Gg|Q=>&mZz~G0S6kX41szR|mnG!hr1#S;t*!CpzK#9cy!w89m&7G +~gRWp!^T1eZIf>DFj0&ym7`#5G<$?z)@8ySa!ch0k@4M#BcTUZ+JdNM8aoVrPUoOQ=+XNA++%TDHJXZ +DiEOt6qFYuD%bTG1^9Hrn7Ti=Kr@0txLUs(yT2+1WuUAR~&w)7L~MjspN}NhI?QZ^jNj+-W3R)LO@6> +A@$W_L5L}JN1e&&WiW2J4Q-7L(zj>yvjScwFR)efYx66Ejjeal<ZQhhi!b0Lc27X3j$~qNxFUY|H3&_ +YEqp3;rMOV>CMqT4>-t9mu#LG9dXTMmBm~jbZE6#!{uWhNwvDB{1-i3=1xewD2n~@P86wa9wd|-yy^X +vC;6a<|HD7M!72Xp(`lug{O;`7Wm7VCT0tOlltKqWyxvG^hf;(DltEAa@Lwn^f1x<A9l!pjba`7_#=0 +`zg9H#VgC6uwe|j^>m9pi~Jo5E;rvWuPb-VkQ+TBUIJ3Z4=iCgO%Rz;rLn`gK6nF3*Q2C8`2yuaxs7D +X;nU?w}s{lL`7!ItXlM{#=&z9=*0UGtYY2nW4vI&EQ;vaD876L!Z=&K<=19iS6;ruEk&%F$^+;obHK= +m3!Ax=_;vp>f$#<J6+bF?d1dQB*L%v*7xp&|5dRcVHefcfWQgFLo4O2Pr#fpD#d$51y7u3<L0@n2Hn) +OA0vn#mz}!IS2}NjqZx9EL~L!BCFv4a_iRZTep+5!T2N{B<I;+f@u+M)4Aa*w@ow^c(z?>R4`f#T_AZ +k`mnmcBN)oHKXrika$<byxzjg=DhrEgwn56N3&+S|wF(#P1W0tdxk;dCc+_sn^zt0UcfM|Yn~nT57Y# +O%mLLMGNme)RR2}War~O_pBl|JL99smNf#abbzidzTPvu0BvREufTN^e>=bC}3fVspGPe4D$g4i6eYT +B@XHi3y6yNNr%QLx7@H(W_uK|5xGxBy$W#F{Z2<)ZV=UqAYw3zCecY2)Oi(M5-2xd};`g=QYQtC;Hu% +=7FW-6)yGS>3F<#Yy+servnCn-3puK6<qI`0?i6o@>*89+2zafUW|KO2oz^NmQf~YM!6Ehe6acp~up_ +0w-?F6G+kR2{r^A9<h!V4`VV6;(jsN@Woq!7y)HvB-`N<ptsl>Z;tsUcBj+yQiuR-DKrq$=CSdOFLh( +vUY5-P?l~qqQY|N;nXG1v6o@us-bJItGoYc_e*nMYQ$eN{L?tBDsHrf^1_Nl0k^qe^T~$MhnDJ{#&kF +aeCgmoAP7xnwOtA}CBmJ5_5H8H!Qe*?|p8{bJ%nG?M34zFICO@a>jTB(bCM*o2nGhp7nT~t&E+TSdN6 +sps(yi)Ea`{fJZY1eR((NVLY1Lg@ro2siVZ1Q$(;!QQMsz;jnh;MM91p6TU}(zAhJsUVuUFws4|y%tu +)q*Ej2{Xc)VLY36&cW@F)7LHt#oz0T`h33l8O$FW#m|Aq;lF&M{y}~+)nUY3y{`cUxGDFXlNAT7w+4l ++RgY4YQpsZilQufBhR!((Sb!roDrRVeDkwA>eUW$8672e6U=!C(v93Np+#nqC6RDas7&V37Y$C$3w`0 +g9P9NM8FQfIo3<M<j|}0e&@i81918D!+Vk)g#UlIdJtlS5!Ss?(4$UgnOjp(%HXY5Z)_}*ZC)EPsCtG +i!rJd6OQnpd;iOdyqvVu`kB;sm*Qs&>&XB*I>h-X|&Yy*8YZ&9_U$-~(9#z=O|*i)i>FQ(bs{&=2CHq +M&5ONr8Z-^CF3X+Ni}JI%W2MP~dBy`-{2It{7q<Hi3(8V-`b6F?${=)RX*<CZk3qNzYStBTIGSiP0tZ +ZdaHo`V|Q%tuXA@(h?d6w;&Epo*?Am64^&Fwy><5@!+^<?qL4fyc*{_GY_+d?0e4sCuGD8>r4ml80G0 +WtX@<bL=LZl^Wl`q)Bx)mClY*h^<j=a9fC9{;^KYP`YEBB{r$=WjRI;rgUOd(I_fC4A2qPN*<3TpB#3 +Rm_*>L-%L4Mac-Jsd%m8p|AXl&p>LB*(zqXtU($?b(+G9L(53OKva(AkY!3+EEWBhX^T3vEl*~+&ys* +d&OCURFHXL3^6Hgk+=P0csr8SFZHsfeSGuD(Nl*JpCAdv5ypeu_KwgUPVk+q4UUbv<T<SU>JlL&3Vwe +VlU;85{LQH7IB-<p;{>U5Es|FVt9DXB=pSAo?Nvslh6nFhhqvrSZv3f7d!Mm{D`6=q<~b0!Y>f{BhM9 +8SUvh{x)LBij(qe9ap0j)CVJS0pZktpgJ~bK(A`%>cWF95O&&$TO}NfhvpIlvsswaDZl8<CAUOwFrre +T^&?e?OCmAE^ZRCVzDul(~Uol@N}}gn@+NqAUnK!i8+16*H`e22_6$J!kD9ga`|TR&!*zAC{V|=@){p +j)a?mg>$IS$0h)_<8%gIRA7E_2wM3$v_$4Z@N0kP`F}!B@dd9D36>lu!q$m6!FwM_TG5#B&JEwG~CU( +g@=Yei>G|$xJK`qy}{XFk?-&ksjN~4UVZsql#$oZ4=4j!gpZO@5Y$oaxezW=CdY~D~wmEEg7dIuc +2r^Ivt=Hjg0OL_9J%Rk1qoKC5Ln}?bk_U4PQaa?i*~0UGz_&xdg^TZenz8NELKIRh}};oiIh^VQPFap +<#A8(CS7rTFRc_5-LGqGxJj06gAMzbd-fz1p%LuN28aJsjG5xnCb?cnauzkD*_Q(O5!@kHy-wXNm(F4 +8g2ldWh1f{f?+TqzMlO`tN4iKn}Vid9M@bMWE#{u*rg{LO+eQ1v0HFPTZ!U{MH_`lV1HTzpZayoged1 +jU+7TXpuqywc<`{AjbQ4#St8|{`RsC_6qjSqtiX&_+gIcZlpMneMx3K)2DI}kTkv%UBTwyY1A(nLD)} +~@hL>~Z6|e#)Wx+JXm>p}smx5mN>9n7ZZ7N<#!Rz|9MvrU_zCsJ?`SBAg4*^blBT065w>R!554W~=cj +5a^dt<?M+TmgKAu1oX$;Nzx?GSf&?W2wR{D=x|(Ia@PO6{16zV5;oR?Vs^iANDQqjHWQjG}@8#7tJ8> +DipDw^8}d!D49Q8uXyl9ktRuANRYN*2iI#=YTkH8<mFk&)g84p^8?zuf&c#!?Xo#fK18@wA0y4(iT}m +)=2m`F+Vg9n3L;^U&|J3Q4pgXd7zpFrM(E0KPN@$KsPo&H#Rv#*&h^r&6E&=AJeRq4TpxYy!*P_OS)U +$P18L-gf53C<ADlU?k^}lC!>qW)x<(3Ik*fu24x?c1@<xuV?h2xGjp5mqb*ps`;r#HE>*WiGvl3S4yb +9;mu5@-n_pdyX6d^hxQ%dW3QEXGg*#hN_dgqRUSYS6DMYkEx+{O%ykl)K_RnNVZzQ9PH`_F$1Dt|1*% +(VUkryru?eKP+SqEUTWcv|YpP!G(Ob(Eu(trb&*BweJVqHJkA|YOehKE5Q$#>@zZh+q(_I*(vxrd*`` +^~qnwH1KAwl_;tP10^KA#|Xr5;I9O+SCw#La0U4P5f|lw(uz}NZM32Xr<`*cg@D6Sc@Ywp{g+O<y+jd +xF)2}LF@EdvUHtzDzmWI*wk=2dYSz$-W0O&D$N}rxs~_gy?3a2dST};hpZccFBDXd2X?f`B0%&%cIj+ +$FiztmXr4!~Ec=GquT>83<VScdZz`5a9PuuyE3_({|J9)J74Yr%#vo~$wYVQ2+Hhze;ddaQY|e_p@_N +j9o>Ej{B5@SQ58pW6vV^oPBy1wS4KTtbuyH^z8f-<1styNQ3sUZBt#IO$qG>Uf*ysUd8sH4cHlA&+Ba +&8@=9oT>Ob7<Rj%lIGd7wqS^~F3G&jpmmY;*up1;RTtyGN*eU6&*WD4;Rf6^Vt~F_y-L^G1ILV9+BDo +ei5d!Mvoqonxb2le;rG1aN3X?OS~JiCvNYv66>w6FK#SFi~X2mrmcHK>!+s&PN!?j%62Mz3?=^zs4q1 +1Wj}A*(k)Vqrf^Cx(_4n0m;BFplgZr=&jA4V(y1^pV;R}3@Tk@`2w0eo68~qzMy4ilk)r0e@Fi|)6$3 +etWjy>Y)F6oSH=_K2D`3rl~v+FcH%+R0;MHDz5|7E4ltwmB5`|@jqUp1P#wOq&s*%}GLJQSOBcW*eY; +et;x`9ad4o1j<2ZojE^q(QPHC(9sD+MaS8!YVEl@VoQ4@8TMB20_CxkgW#?$^8#>+YYxZjMYVl88$66 +n|(-f5y7`VE8z=F>n*)c?g~<KYCLWGG?Pu=WZ=+>r?wY$`E-5$_4{oZ}#{-yJ-C!lBIhKuXVC2+wJHK +@X@s4!1#C9|DWsE=i7&EKmz2#|Luw%p69o>_AxSzA+(Q&DfkWhjoNZ;U8X_<Bg5{jIB*7!jps!F~@`j +CSxQZ){w?aY>28Xo`K_IC#I2QO3ohGRLyFk=v*2p!*6S*66h{{XGPUPPEX*R6xnNrYG0rN)pXv3y}`2 +(PyN8muVlys$66-Q(wL5ig`m!`Dqf9EmPd8{W>qO3R}d^+JDl9R3L=3{F6(YN>MEmbVB}a1bcC8`5AP +g_ml2GeGBIW^QWlvhj2<i?=<PVqJh)=&v%qg^il)mIbB~Q0>tyR>Cjqvumu&TS5Jy}0`a8+iJ$O38^I +^b<Q*rLdk)MLp)G8+^q4dM(g_x^?M8m;2C;cC4&v82)q-S{zD*FsR@+hci3}^yF!LyxH$S^cKA?2G7g +vdXF^3{GY<T_f+l=~}{BEa)hQZEBLq`|oRlvq0$gIqh8Sn%Y=7ilxG5#h5@PXn;u^$nda6UNDLo;&&i +)fTT+ItH&DqGc6h#fX0tTwM^JSF8@jEKN7XfCh|-cEFsS8XJu)Kb*CKHa8Rf2%sNDv_*I<D9B|ugBaQ +q^ZY?8lkuch4VtRfHw!PI!D?MjWs9V6id56}prndDYpze#BYpnaI(*8_M`telK;$@^k9uQgp;*mrPFk +uaH#NH>PiN0EV@5`Rr*x-+d>v|nInUatNycd5T`+Yo2!F?%Y;Zs6jLl}eZ73!#x)f!-B^C_iER<0+5; +2r!>P)l{<AKl&G1;dir$*K@9!plp@~Css{1v*K`vK5=^6GBB0P=_z25$-uKFVgV=3r11|0IJIlY5mjv +R+tT70TI)*2noglZfR(C_wJtLsk<aJJQ!zfkbfasd9Y0b+G$z2Mz<9^o!3AS*4fuWFV&AJ92H<D{3CS +h7Zz{{P+rfR+{Rwbwq#UEeG~@()TQbpYq;md*lA#P2T(IC;s;4r=Qvz8yn$4!9<(jF5uMhTAqLcC;I7 +;4lMBnzTsxzUE6=z=C{x^yxX{cRG`}A*|rMJW{U0IPD?Nt1_EQY>&(*ET7{MY{g!e<(~BY31OU-pK*X +)v97S@}r-=DoF_vZJ2QcU+xv{>=qg^j!_r}ELp7a`sIyw)%qWyryo|s>{s4XJJ_h1JkwmAF>3-8f!!M +pX9?6p_!moBaf*(wa*R0-hQB2fI6=oou1*aeFgsu&-T1;OD_^KR=eYybSZR{uSzm{ivrOQ#ko-C-Muo +oV1Z*04ewtX~A!uh+jmeD~wg;d=ASw0XMQ{N`w_vJ~)q)bE~8YsPH1HQ>My)9UN>chx$q*w0WRGOa%E +&Wf!<gP&icsl)arh^Jo=cxIIaw1>m@NjPHn#PsHULYmxX<JtZQdwx_kh;0LGq)DXiwE>cJb4o8$Y0^$ +mZ=v=ydk7TmO=b+2jm=->u;L{#ul$n{paZ>DM%fuqAu1@b#;o9}y7k^`vIqrJ7glV-Tyg=QVnu5!GmY +spMTco(TVn;@ov4Nd3W-aT)n>-miKNem<LPvK0S6(ecv%{m;#^OX>fuq<gQs+ubT;~YJaw^xtMRCUi8 +Gr!NoAdKnSb{A7hhJ2CDZ0Fu4H=B1;}UT{h!_phNJQ1=V?BhzrA>O`AfX!UpiQKam~MUD(0jPa^{eng +9$rE#JH1zB8)b-wsDSOP-%hsxsk_GO1R-tUZTi^>MoO0BaAbPJs=R``JmfHkk~dIoF|#%6f6+ij(sx{ +Qz_jC;%QQACWz8I8$s1f=9lB+*G(}Sgbx{tygoWUu1CP0XYa~EA0Jm=zpFY(HGuPOqm9z{#d#kOWW2h +EQlC^ck5H$A>+f#gc2!MAW7I5@cQYFjLEq6vP^=JV{geKnKf8=|bljc6v9qwN>p@r7A1v>xn*&;Ntbe +&Q_EG7{_$>wBWQ7X(nx{#Rkc}~Yo4)`wdzF&Sx-Hf9OK~8xQRgj0uAKG9^GjWyA?`N+7q(XCFZf1*G| +WTCu1YKaOg58=x%g9e=#wzg4Bh1$hjJm>-MX^3qg{t5+XVS<)GFauIGyl9Q}n6ct)6fs?jlb5hPORpJ +B{BExKD8XxE}Qul0sv+Sa$nm8&d|(7zbl__Gmn)jS7MR$1aeN334CfMNHtkhiUfnygyaeOQHlyjcZre +L<ICC1lDEgnW01#*|dLpiTweB!0|su6aXamE#m=Vjo)E8iWn5!^TmTqD4-S3?~N@8Z1BQ6J-i?td3>Y +o8{<!mAdxf21h1H3W)TX}3zrmA1q4dIVQxiGC&qU6ifoT?Ny;<{NkgWJ6kO4&Cyo37((ow98v<S*TfR +IIyxloYfN3igE5eATWe!d-L*nCvp>5aoJ@zPdrfARZ?IzE5i!6~wCd|uuYn1BS9I-eXr4l>UzHod4g( +dZUVDE1{0O8?5f{nso>jVqWQL1===?X^l&6h7sezJf~JCs>IGV_lS68??}kwaT(w*b6Q8JutoYT+)yO +v+5z@NzL{hJr;+g5f8TE}x*=NK>ssIfTldgDy#XAj=vcI<2#h!|Jo~g*nfEApJLG5Svev$Nd}yU0708 +i`f;6doGl7(u6u(QVMS5wHKji@d%<pJQ#ZY=EuB3=}L5g3A5j9%ZjqOvQH^g!rjzG$B26#d#mdN_3Rv +kJf(oXGs%IM4vb-(1QH-G5q-3gEf~2;;i;SUdPYjc9?%+MeLA1CHu}*iJ1DsPcI@D4+eX7g4;EcY$OX +eG#lbZmFm#pPAITjBFjbu(oxAaWFU>Cw<yj~*3<0w(oFtv~X8O8_Qk)}locAyXAw|nOfa7ntMC?<=;T +kPCC~+jegnboP-2|l8OBp9)^dr!CLtSC41!%45d~}fIv%FTVR=x9ZeLZQnlZ}leO_OiFN!HV3y_d98u +S^wPDC`ruMvO$`U6|sXDyfdSu~~5S@=gvf6EwE#!9M4k!1J-r5?t(KLF=`!bF=<zkVQKe3H@Vl=F7V~ +ay$RR+xb1a^I=c+GK@SjC6}yxJ{&?Z3b{o7@x<6(j;C)*23b_9Et^QxxwSuUBzV5HKZhS1pMHu#xZ(f +%@Z&Q@e3zj6u=@0W@CNyB`_I08{QN0?{pR^gGL*)DzI*=i)t+{T|0w7<Bx<~$lWZ#V_4#S?+@r6_Qw0 +010sD%<KD=br^D6)gRsILSh5;`qQ+DLO!gzrrEyFc5GUS-=(BJ`avod&(r^hN3s|Hr)SvI3|VNB4gCW +cLQaWb7kEeTRoRq1$^@cOzFxq#w2lhli=W6Isq2h$|Ib!$FB6G-dGW%rT0WRSS2b!Q6>XstcQWMQOZt +|u`ji1W`dIkxF$*kS=2Y~6AI5XGnI+woM#@way_9p<Q8x}(Pxl5WNqqm?^PNlrhg^PDF2dY$*XD&0pX +FuZm(SFUh+G?I72LAYv+m09P>!M0P@ZB+`nnry*ub-|rV-EkNDCSS|BWizb)i!O!D-4E(x=(0XN^L;V +-@K5Ol<;9EoOPJwA4cq~ktXVGR_<#E8Z0s!<>(qnd8=xp2BgTi?a_b!)U<@gVdZW$};79N;p2MhL>@+ +vsttvFLse6VH{vp>!y_3P;HD4*W1}ib7h-H{^G>ua;8>19!GLl*a{#NSoB4p5`0^+cuRgYM!c(+NBsz ++0g_;?dwr`o+&X&BLC`;cz4kLvcmVinCjnlM-IRZALD%QiNz0qTFgBHlriqzR`J7Tpzc3VVj45^2r1a +fAF}lM{B`Clqme_mYpAu_g2Ur<-t6{xaH4(5TK6AaVCh?~y9N{@l^oopgF(nKpMRwRI=oLDh~B1#adx +$|-!sy#+w=#g1>C)Auzu#OjdpM(hND-m?u9-{j9EPX-!Z!BKGmhXh)I=U$)6Z|~uR&M_xQHtclp9u2S +DaG2Iop8D?Ga5vGECxICt1{c>oy9U((@3Ix@1%#TfFn^=o^}wskzO8#P#G0Ybs6~0@btLjiRqCK#6Ym +$584-5bcb%3B4GYvLIDN~dn1b%A#~iVL2$YZ5@XTu^lC}_^kV!<=Cs!S2aG<VZ78rs`zd;&#T1AvHjk +-b4L=}WrR3rJm%vwxLx2s#T-VQk(_D84VL@dR(fYG03r`whD*=&+;-n(}Ot;|ngr3~*`4n=*t=)dV#c +I@x1d+APs&tOZOWn1^42`3ia_Rww(9AmM(oI`*@yaJ@AK%5*mnzK0!)RswM*Nc^hH`$e4MRy1N(HmoP +o;s5>s#vF6@HZVq7m*Zts-k1yj6ngioG@^Fn+Y<b_Epcf^{k50duw-xR!MEpf0HE@#D4|7#x6z)nx)j +O>wp4+_dSvtg7VtuzWKjboXs(?k1abQkR6)n#7a-G#ZsBlO;2+txx%W5X|;;1t0Bl{Q~vl7_T-N%Zb^ +#REpx&}X=~ooOuV<Lv@yPm6XX`#@oG5Wzz~E2+|xF4X^q56kS_1ynnAW8iVyTnLXDp!v<|Ogu#CyI#Q +uod_BogO@=lLJrUJd;y(<K7gp>#>IX?C}&gQP@P1rxZG#5U`NDPrL7mRW})Kh){5@6c8Sf2WJkQvUBx +i6vayL;KKgU36@cYo{g{y%mwC^l8a5b2RVN-y#Zv+|JU({@7+Y@s<qQIl8f%jDv(LY>n-2A9yg+Saup +`jq9GxR^SPr)W2!dmvu)&qmvoDcbT^>Kt&u)Jr9v0ES%d&p4lu1eLja7e_tGD5Q6TFMlxCm+6t&$;_< +CU2&ScxSXAjDF8c~9rqG;NHLwcd-vB0%{QFzk3b$C53?yA_0&gr#-04lTnaZ;<Wy{@$+mJtlJyX4l~L +a2g@n*7WZ*{d)y5{nhgX6HKm+3rV-$t+BNJ%PMKq#5?Y~oI*mIMuoMR0M-5$0Q7av$LXD-rG4vaMCT{ +9YpA{E#_WfwgYAmo%*9*qqqq(+?^^JO|FbWr`Q7sHETDRSL2YxZC)mx|7d%MCw!2e_7?y#~H>v}0N@7 +cPPV1q6$~wfpRUI{(;x^8Frq1h86eNr24r*$^F`LN(`Bum5((d-4h<lz5CnIm#WqT{)ZfdzGDb@*r7H ++R6IXy#ffYa5_1M(vADc2K?V{v`fnGkd{y~Z)4q9IeuiH>A}F82K*mo8Q^)v&k8cK345ulK+?|HgD<7 +F)l|_k;N8F@*DZGN3AtvyElQ;RS)g#IWHJ107#IuB@-f)A_lb<EZj7Ql4u$}nXK9ap#w|Rbk-^E2+IX +t!VrQV4G<#B~CJ``g*wN)OtTiI>be!{}K^_3=P`%X=Sh5RrNGrsaL#S=zDoDkb4yOj<iYRrJHAahknc +YCKNA`)^Hy$s7Hs-)vxb_kCs1C)aCi|?fQn4k37ipmknu{xgd3jiS(@5U3CLF&}&^ml~6w#@N*&0rT# +6P24@2S<_7#IbQcT<?Hb0mw=s*%AYsfbBZ&DJSq*P_g8pcjIYxt@Kpos_I7wt=Jm92!7JSl(8?S~p$S +FpB`uIVLKcRKVEc;V+Q1uc87<Y7XaNht(|jV)Z1wRW|T#aqg@smX@8;>8Kk~L-r`#u2vmW`wFdHDBv@ +meYu!+=_AsyZ^Y*~#!x~dr9@dck57{?lzRQs(|#A-FHR(MpgW|kN1Mk5;ZkDm=;I!T)QgqRLtFYv2jX +7`v#;RCU(aS=nZuC)-T3LKN-jOscsba^?BC%uTlKu*q5b!msfZ>Iuz@55-4pNR!uX^0oMqYjr|Jh;QH +tE5$xR>@-~H7B-b^f2`3=S}p6urN7`+IHmSoQiXrM;&uJvT^n*&Xy%=4G~-+p&cAYc6vNEFY+*r<kAQ ++wppJf1wE49o+NwcW*8wTAZpQ~z1LT3>AaXKcxVhQan84l$cfkRyah*?eMxU>I?aJ?7b!n8UkvvmSYu +ocEywtb<FCb)MVOY#yD=F**kWnwp67<P_e-2PAr74&8CLPeBt~37<;VHc{o0HphP|_L8=1UakYWp?AU +RI3&Ic+AMS39iO4UH?ez2sK>}HU`8yAWl8s`l942Ht+*jGEwAO7&8!OD1F6keFv28eo8o$_Q?q0f2aU +68llTajLQpCcBXdr9jxxQNSTg3-3Ta__S5LC@&3-th>kE$bdMu_D!>oIrj{5nK9D&DZwLtcq+~9CBMZ +4xpw3ZOWEshUKTe6v$wTdwXokQC+BTwVe%y?A~$H+RQdB1B@g^TXhDh@!v70W|_#S0((=uD;*5%SSl5 +o>0cbv!aZe9vKk7PE`X(*KG95L8rGs1z8eK^RYH|JlCHhX>ho2+h-~eFAHkcC%!UX3AV=Q}t|`Il_hm +F|qr}_A8==)=Fp^%~!N6?24ri<)g3(X`Er%NoMQ;cweN(4dyGNdD3qO2l{cpp*occ3UK@vWB)$g^b1} +%0FEYzO}&}n`(z`VyOEp5&DbTNBeq1389d_N%wo+jm~CZ0utBjA?$;e)e+~?I$z6fEkn@bLJTy+R6xC +BBk?1js1T|EmdOKB36E@qr(m5E%#~xirJqPeE?kS!ECTkw`U9A_pCW>lQ(<N<NO&_0Fn=C^f64k=0h2 +R|^p7miyQzG<wJnYZV@Z>AwQ5q&7WE)He#4etxQ&fuSW!|s>?@|2<QbgwbOm#FnKvuxu+&#su<O<Z{G +|sQ(Tx0O4^ofymKcxV)c>XAQZ`#q}V!eY_dEHDGgXR-$W!QCwUB>(0mUuh%m_h6Ub#6NA)+wwFAjd#c +*-Kh-bSV&Tp$z5p^pn&()7FAL5C(?IddB$G)&M|a!cwRK2PM#Xkf)|9d=Yldu%141W7>XiVEVQ~hu*J +RwTZsDNU_v53(SjZY}#MFo7_XbXv3Ap?N?HGEom+<d{mDOsoWg%)3y6|Kl7V|NA=)YbEDa8x4lPIj39 +nG$3Wi0iDy4h<dywK4i7(VB-J&jeh7rUdKbQYc66j{BEudWx*GS7Tn$$t=pK}(N!Y-`_=SJA+ed*@^l +jMN6VhfYvHBay@%d0R%)N0YDKN%?CkpbYP=7x4!;<8V#ZNllJghl@O5k9P4?x?8of1#s+Z!{X$aQ=m^ +P!xsG_|woB~g`{S3O8XDBc+e)};UC3^RVfe6-RQ-&D&by-#XHpw_6y8j%z(EotkKjz1=eK!w(1Zb)@n +_!C-`mocsc&4di7wWNl5gBnS_ez^I-dAZ{;EQV(wHqlR%nhbMr%FvT7INDicx|0`*Ig(<EZ*PZ*FX5G +AIIt&t^p1qfBHyWvGDQ`sg($mXEvj#-Fq=ax#kON@3?~seq5?iAFp%Q<Z375%9t0!Bb1lpqWzA3wPU{ +*m0mHJr?a`c~!qMO{l3_*1X~FGa*VtNOuxUJ+)hlOaE``D%nYz`;RCqIpyVuV{b)^nsL<4!YQeSoXqS +aPBzUPvTtk`}@vp%-&FP@`X6bEh93HxwE_iV9lbp^C7Z(_Abso^H9SVq%qF%t8WS{qJN7V?wYMx6tip ++PVHzF$|njPO^!CFq2|(w?}D=I`z@|H(^}N)wq+jLbuqr?EvH_}dz)YRnBwq6N#k+;(P(va6QvRxa0) +2ug;KxMgTpynXeD?$cri7w=PB{)YDHitU#)dqexwl6$?0;`3AZM7q5y;6H407II=OX+-4ijJI?|s_xI +UO1Y1mT48%@r}wl0f-4@{l7%m_3rhoW-JPVXAg;8&u5RZC^BdK?D*jOqOkI&~E9TDtvWy}EH1D+nn$i +Lq?7na+tw4k-IEnxpg5E|XpsA}YuhMbDD2#6PrsK)Pr20CY3(Gyo(CCEyKYSkoW&13#WvZ3h*PDm`th +^q*p1yv4^d5dyDs}wx`Zc|Icl7?9j&=iw&0UI5Tdh<J0eZX`8@=%y<yEpWMcynwThf<Gm0GN-zErEr` +ock5s+Glkk)R&7FF$`gq?FN-_sI<p(;EY8yJVPn*ApNgLrjc&Sz*MTC$;LFx*qX)P>o6bAo)*4E<IS| +OM$>RT;q17RxyDew<~o@eoo$X+bqAhz<JxTc2@}>!EF*@@ngG$7Qn{TQzhfBLH9_%2VF~yE3T+^>g5` +82}RkoO}G#!te97QifN3X)#Ky(SNb|+QEp<48_c0In|2UaZLxmk7R3v)pd2If4dTZ{6|W~C);7+xQn| +S)kHE%vbR}Oj(KVp;^x0Mnfz*r0XyV8PUAH8h6kd<?dlL0V64BF;jg4i)US`M;6%6(P7wra`iMrUmDp +QU?Bp4^z>>|rXy8m9{cpD+uv%~*h3=xly9o}>_Ugx^670INS8A?)T2_0y0ifWl~6`8OhoGKf!0}Es(7 +QU(TF)6Q)NF1?6W5XKPdZfvwmP9Qh_TBXuL+*-=>=5R&&q`7^9;RyP$h#nWJ|&~wNRlqTHZ;*Q#aJV{ +MA#IP<c31(MpoQ2+BxPvw=af~ysX`whnbRc+YgH0E`|USyM)9WO!7g=UO4bSA~iW3j7hhK)LUCgWZgk +W!!h*RJyX6_oVgoLB*lA@Zr68AT&s4f$~h5#Mv`_Fw8TM{E*QTJ`WAF^jazj<pS;+8*+^c(zho6Mu}) +--q*AMEn@K!ujK_{TU8=vLxA<>W?*yrN%k6#AeT6B|9`S0^_9ESm)wpjbL1$|f{5S4nmn3E=wF<eTmY +2d2>Z!0aff7~%uIi|1tYhNsvz!if#6~GNiw0xRQI8Bp!qC?IajP(K<N36kb?E#qnjrNlws&XT>!CtFc +~?(<Es7_S(EHt;jrv#K+uv>#fB{}RvvKDfcpX~O=lE|7Dr~<Ry~Jd4)%9xf*S~UM%r95{vKp(SdqV*( +2zZlI)x(1Ss!-!MR(UQ4)m~o<q3y<@-HQLxSVhu+bA!x?nk7FTwVRWuxlQFxja=X0u)9O1sP(+gCYZ^ +c8buEvyBPMxFS}phX{9{urt;xo6@K9+dZ#lKxH$_;BSx?|p(c{QPI#hiaRQtwU+I{*S#ZFSphU=_nBx +cS@7*q=2wi+Yi_*C)*}I81uKdBNDV<`E`dH#JE)ZFtji5L=Ho?G$Ch~Y(cZGd%EY4D`jTsXVB16la9^ +`iiX|Y-&_F2=BI(Z;h2NFQ!p?@$K|K9iU-Z#77KRM|9@ZJ8wUgyzwyDwj<n4(t(zjBq*z+>!J+~Vl0F +&E}?-Itn94!q5h%*{^5htI<bQ*eFY*TZW`9<@KuZu;GXqZOj?K`>%D3s!`o7Sa{=(Vt~kM5g7xc#Y$A +Ma^yDD78L<R%dJuR~B^4Z1^HEd9J#g+l9OD6?UT0gt8D|?PAO!x|XQu6bjaRs`%dYtFD8H$b80Qu&mx +%&_HPmP|l^g6RDr>$Q`b#z;0O<Bdlz7zH9=FqC(btI2d=|)K2i<S2K{Pac=lpic7r0lz!$%JlRo9@f9 +i?xIPCrq{bvUgb~I$LCjpz0gKjv3Zj$kOal2?9|jQ@Nc32cOuRTOU#;W1%R#PD(_u=x>^=$EF;26I^C +`BGT^WhokX0f%#2JfH<BxoDNfv4B<UCAA=~?EXh7u@RJ(X2A*iK=*(0x5~g+xB2WoH$ufg?7kMuC!_q +XHo{4#%pub$<ki!0~vHQOH2Lb?I};crth7$uXPQVIsR6JDV`lT+OFwqQ;i8Ur|JC7(5vraZG0dG(Kfp +Iken0wbjf=(yQ|<@3M=y?vBwZrPwBhE<_uU<70m@SU>6#T}U8=;+EO1{o*m=yV|IVGIp=8t0&*Wlidw +n-urRi{&?uM^6+6TZJac^UQ-Vr>bAJpZY>ZCPEOKx_+TS^;F^78zdiOk09$uhd)K%OFTyD4&DmKVU_m +~pc=7~ICE=<4u$>&LOt<-L=+kmv6GT>irE#j1-v|hpkFzc%y{_~y(8QVsV6H_`pI)l<aOLZCi&5vxjL +nMQj8XUa<P*oyi0mZWw^OTqvVC21@YJ}cCLfD`z8Og5^lw0ULtHqxsbsX1frYJYZ6!4e{k=xrdld=UR +fDO96LQE*Q>-uB*cWNkpKQ|<qU5~>q?=Xv7>;}MfmO0Oz6^n>Vq}eXFwGEis)`rp7I$^MSfe#zWyYfP +i?F7=5QZ2JQvE!v)=>NK3;t8D9(g4<{gQ{(-8Lm-Jgh#%;@kKS(2eR5Km67{+}+@3^o9Q3hX)!sLb#< +mQRwBvhp}#^l>ZU`>8{japgq!KY5>9Rl3ixaRHsT<04Wf67D<o&Mja3O{zx}deY|8ONRwh?d58a8t}+ +bUdn945`@a;%fP_r?>+6v)_rQG8$%T%o-HyJ+RD{E1!wJWwG=cVulZ~bW=W2J)v+kQ0SvKWUJ`$-Dl| +QJ9q|Dg$O&vxZKXBSU8Y7LMi1Cd?kx5ii@!L=Q?l;><1qG9o+*w=@KZ`tk`@rj*r2}*M66mBCyD+1N{ +RA+PK=ac}qj$GRdNn^O#nDPgSTZ#AvXxGNrS8?Z;&K^i(TMW-NqjutkNO{F%AwhsK7mOX;~IUR`@7;$ +MwrKks#jv@-C7;Jm;+DH@$895=DjRVE(;asYp=YXVURWxM6Xu2sfSg1Chpq)v&VbS&=0aE*{0xpD#@k +gFD{*foq@>p(~G^mmr0PmssP4qWCcb5d~dq62!L4>s`~fOynghJDCf|d55*ElQVkiN;MtQ>eZZPvsQk +T~6B@bUsfrSomkbG-ET5EUJB*f?NPVqg{Sn>fj^d1cllBL`LM3e^Cm@+OlHR6&QgGE`zs$Xv<PO8zJF +_P|!QM5>%fuH=F}gN0&|jSNk!zETNz=;V>-Bft^(Oq=`waj20>7T(*Hiv_dIZ}WlfcJnrfn>9a*8!S$ +I_o;>09aO^0|po2;U#MAdH@u{et+jo63l&iosQ8=~)#MgrV>E9`K2?%ctoi;RN8dU;4n^pMkgsWNA1_ +MkhHZQ%KUuIIo!Sjc~^AZ2dK<ysjc77JsoX49=!9tNyk2^^2{H9`01pUh2K1!0{Vzy~!?t=)l6M)W6a +;Pa;@TPG$xJI8hl?T${C$1R7K2pC^@)0@S_<76n3ff0{_b6lL}h#%S|<f0q6K)jex-8%J{A`7737RKS +wJ65vA=89hu<Qmm6*R!pjLG6*jhz=B*0uV4X5w5ZhCxyn_p@+BYcT&cRs2bY{Umvhx6bytz^^7scT-I +v(+O;t`@sZ{bGGTlAT-Pr{o^UgWgBEi|&e#~^w^vv{hk4tcMcZ~Uy78adoT#O-S82UCJg&3YG4y8i`U +FV*R0P6@`0V<dnp*X?|I47JwrZxk*Ps*x=-7a=GRO~syeWnd?J8Z!?1Gc!>tsE?&kJ(b=6u!N(B7Dn= +ODnoR-!3ESq$^2ety~a5%?q|GOOEGx&eF=^VPRnb+Cd=~NH4xpsnieRgT2Pml}hEZ-l5p$Q;`4wM8n= +jJdm{e%?_xmhQ?!@q?0NtT<{WZhOpN_Y?|FY(EBvKD=X-XchEnrzjM%UKnp1-D=RZJ$_i3jg2WEYCg3 +<-B)v5pew{voAP*+tdao@n=k^<qAc|B9zZgSe49}Vb9w7c*CTR)k6Z|X`_P}|S$*4qNRsb+V+-Xbz66 +`N}Mth50$=SqlF}vZ>e<g^+A$YQB&7Me^kr~6eShmL+PEU-6A5OtJ7-u?+WWtaK8-+4<{hz3*3G60t( +dq$frNrPE++@rZXb2AWM6NWvfq%&{cP=EE77t9wm#8<F3e{XFxJi@-nnF7I{q0dGE?#RJ#H?>>AZ<Me +DJvTt1M0vP!UZ#FQ6ljh(dI2I?9<f{{XnBVXWV>*<xB8B>?$963+O++$i`f7#iqc!lr2l&7Orp?H4OG +wfnb09f+Koxvqx-pc|bXtS&vc5EqT!!-2i1UlLdM)NuD-|jR+7@#HTEVw}P9$RyRN%#}hLP)0*bpNpD +z@p*8u0*aiTDVGk``u}_UR7NZvGRjh7q^E<!sMgHaTVOh2;a2Q{NpO;l4J@GJZMYIRif@KqK$zNn;K2 +?|7<D4(qS)&1Nv18l}xrxQF%kP(EM9F?QhTtX;e;ZmN)Tn-AXZK<+X!-n+g}j@$@2_8shWFRCI{L%&@ +bJ8PC<(r~_vVH3)tVYKnG7-d;sKO`ds%q-P`}Ep*BeK@(5MOpiXl<;&YhdrE>0#<JN*b{x1v-7WcQ*? +pf4ZFqa1ZpSM|1nhY=|D2REsEEeLsq8{nvz{rDQgoc|PfP1V4|P%|8^_S8tvk$jj)f020tk>SsneHDB +WBM^dT8|GYtEf;*Ftn!uekeC5mEf3gG2Hw2jvt@uWPcRte$%5r%!J1cFuWf7@W#_%>YPh;)LJli6^Dx +3pY?R`-b2coauj>C-9<{t*d3=J$8}SzBa&qIwTn#)T4a>tU>Ll>4m|RxYR@Udi+>0Knm=AgAv0@ex^O +01WLS)o~`~?n-VA+Jj)69fh_z;FcZJ)pnA%|lFKhn+fBv;@|#r!6oWw4b#$~c2jLYKKZ`$Lc9U_7gs5 +0`UZOzKyi7id+I>Q={s<<&K<j;Vfi{IfAH^X7PwB-+d8*URPD`zCm{jU5JIs~dWTG;IiBPc{rtX+6}n +u3q)@>V~@2D^+jP1eT@RS|pH~&gaWwGWEV*OVVK|++5052VE}}XL+aSs-q<Qk~CrToL!N)j3D-JbaO} +q*MqmEb=(#ab}*bAUyDZkYEK#`T17fWl=-=Fa;ef#D&3Jt6Im@~N=sUq@u%rjI?48t#A&N2TtFZ#F&# +!wEFpnXsCCR!UP_XtB-<p)Ky5Oq%g9TaLmnUv+F>i|1>LCxnlX{orbDs5Txnc6XfGRgS`DVpq$LGn3i +i$y;4*PKAj~9P=rg8`GT5*ja2WE4TSqIf-8$!cT3ZP01<9l+3A%|@y~bucqMLS*s=aUN91?4x7}9FW& +Sq4vHde-P;>G7-!`y+Ek*#!^>}zdbMt&()iuxfJIF9i5ZM@@d1&*y8W+mM!#&ctDswfI85=pU~Aqc6K +GTO<s@e+*{PkOEhWE6Ch5)S*C?d1dSpuKboKbPI2u|X<l?i^{qVGL=RYKbJ{m^J{zfZr#BBT`HElXCL +y06WpJB^q9D2t}m}(<U#;Dp#_&<B3huTN1x1wvBEU%qEfNHqN3WH~r)Wl12oa1(12!9<*YoAGMfxb_a +ud;s&j}&sUPoeCqIDrly$Ni-KV=@Wh^w!mA{dF4B%z`EbxjA?7m|UaOOXm?R@P@E&;V=Tgb+KfU`pa| +-6n7O9$0GaTb!_%v=xQh`3%$~V<W!1#_@aA*YA?ljOPq2ve-$V1>A9t{n~%BtKK6(@Lrwan|fiePQON +^8>6>PEd<*=U@uvR~^B2qn-stzE(2k80)B$8PDsn_kI%wDwqM61K?1=9*wrFLO$Vhs+R%|JWGEEL>0f +cX;S>qJ7**WBM}Ir9g!{V93`EyqZzL(fSZy&(}BPFz$;2yzG>U+c4p&GS^vhHg$1gARO4(OR(hQjocJ +)Ib}@8QmU4n^ZEA!!25B#kYD3$G3sUwUOAqPb(mdtL7x*7F`H#dHM#>$nG`S@Omao8sPuR?rqY;M70y +NH0>{XwvP5IE#_6!nHaeSXGOjT}^Q?u51T1mLQ?kg+sTKdJtsP7?&~Roxkos|6=?7f%F4L9ovN9&XIu +OdCZBl1w$Lix!ecP)v+(aRp3~OeQ`^eOzH+FWD<Y`6D!-w12{}3jJA{Rr>l@Q`Z;_%}YwLk`f>Q}*=J +ZjNp1uQ|=D}A@O)ai{c70%tQoa<H2wF{a<l(1^xW64rBoW5FuopTYGM6H;_e!2%=)Up)sGQ>_rDGRg5 +df<?c5wgep`acE8#S0Sx4#O~nFJ^!Z$&z%NhmU378JmT{60ua%(O0#D0DcT-e>oNED1D-(w|rt?;Nko +wFx`*0P}|ztVr%TmTFpqbklyZsPu*zZ61>ZnY^!Bwt>!kY{flC8f9!Yq7FRs@7}?LohdWuMI-&&2fim +=-OB5t77E(rYb!!S{{QL9eQGvwX_d~4(IW5G*%+in48XB;F?zQc6Z)~62^Uie=+VE0JpqiMYo1zf#<u +|Vs2A4A_$ap68K-4xB8NY;rVCUGCWSpxa`>Si)8(Zvuj}^_WFNjvxnX<FGR(3YF=pTDftyX{Adi0Gbk +lwSp8GGgS#gi}?T|Q{DnG6<p6)0l;H$G-%2W?r@4o;|mt@w;JgE*W8$Z|^7%D`kjVV_E`S82DEjhd9T +Y^stZne^26ody&f4<;ij*~a=&e=-g^4_HF^2C<}sD_Y>hy#kNM?_GZT6qZEraQh0rl*uFzYh#pDRA+Y +o_;|b5+h!(STzdO-xl*leGjU^00M2KuL%X;kg=Ddw>_y#fB>%!(RSe>L7y+2uslSi;Wrt%UoxtH?ala +^%Y!;m&I^qCzus57x;aqrJs_1{SR%R;^qo}rOST?X*EVzd6!0AK&saSr9kG3cQ$2A{MpNF{oQ*M^}{? +MuJa;ZJYnFov$?W{~@Ot+0)Vf0Oe{PN_Jh>1%(qe0Jk5H>MWGL_R!&8dUxA`wCFKmuP5tPf**H=S(i8 +%y|%$RXrX+nP9P|60P23O$B=PVQJs{X_s#I|b<w`FiKbq)8CG69HJJ1clO=6)<yiG6&Rc>nxCJQ5B6% +wu^Pp7pc@zt1LryJ*K?<7^ZDO8s%uKiY?RWZg7V0S>B>j`{*8OGrw{s{&oaP`P_l)CwID=%~cKn*j#4 +ja+sTuQ2mqXVpp7*Z^u~JBQ(c!22%S`FXe^j%;JS7_oH<G9B^mX#zS?mqc#!z30MbAZ!lr541r)747t +6=2Tqw|m$K_h^ri>UJOrTo-h2dT>3xv^?!M=DgZEDGD;)B(S58WlAB>OoFeUhY)Q`r#&(j-p`r1r@`3 +pL5$kXYYg}&b&w0s|*h(D4wz?o20p}!V1yhouz%gBN_2C;b=iWQ{8EWrmJT*A#<U?_PF3UUQPdbJX(R +(6WGUpML(T@WEQWkRvX3o+(IIL6v+1`S8pTG~q(AZ<>4f;Eu>hJm*Lqu(11e7|1XZn!CKBt4g$M=FjN +kj2xZ@UBn|sj)1p@l2u`yi7!O@lrzphlWYp#<q8)gz-qMY_J-eq9x{v9gG9O6#EX3*{ZHBP$sBu&_9~ +6S*AiMpre+I6Vl<a8V?U?;~DZ`9Uj8wGkudg;P5BqM^eML$d0t5lSmG^H0;1BpbUG7S6yO})+<FSoso +oi^&0{zAnPir>EWSI0Dur4=t7@p`BTg=TYXrqu2#zq{N99I+E^0sl1|4hHx^97u>tjvse%J?-j%T<qW +*C>iZHSmu*AKD6%2zUVqy1Nw@SOm3|JhNoo@xhfWF;g!*9?}MuHRf{zcDfTyc_LMW_jr6V)7AGWJ=A@ +|Q}cs#Bzwx>{c1u0kuJIq9pbn50YV-}GXz$vC-Zlmh4x=A3M`JWh^vb?PxI3NC~4YfvLxma<=!T7ymT +we%{o4wM|TQHL@JBl+<FGN_e6Jy<Q*6)lw>nPr118BVlP0dDR02mOkQ@~X!^Md5|`B|vY=P@5F_-KI{ +|Wz{<nm7~O)&WmD%R;Jdrc9<)66!J(XJ++aIPnwuh>SamRs6}XBn_3t;tWC@h7TXb9O`HX}2<U7YH;Z +QR5DA}|WS~f%D#9NCUXJa`w&$#rG*wFt^C}N2y=_DZ5*GycSg-4B>}8EArL|QyoSwv9FL=mb5c)$XUW +a9U%|aCdyrT`DKn&Kd)a2;CD}z_RWj4-B4c8h)JM&SrGdD%GD&enfTJc|<5C7Hq@n0bPtLsVpe=rKed +$Xd)%2~)`D|Ta?22$2GiIg?y3Mi>{sBvnY+J-2pUEn2cQL@VGtjjv<yv}+%nb-|VH+cPxO;LYit1Q1Z +)z`NA+M!oACDIEVNON73G|y8>Yu$#l#h<p<ME$lXY08o|m4uT0&MK93B$f_;s}pKijBeXK8NrrXYu26 +<_2-tHbuPK<th-DK$O@U60IEJO{`HXXZ*_#YtW~LGjY&{KmW4euD@~$)7EzFO05&&ZJiHb3-;K)7Ytb +k;3i<(=ueXA6aF6}Ptx+ozjid>OkTOWLl8G-&Z#YZiUFVH=qnX!uiZsF9Jk*JIUWULmCSF9&mW>?Iyz +?~{?~<3JC*bs?<_WT}XO%3fJ+H6_E$W^2W*`O!K5^7)Qv7RcL}Kj%FA28JV@a^J$xGUsO%7)UrI~d_k +>ZhbgRN>TZ=-Th8<ZFVcX~_UVnris|2W7}k`yISckY2Ltk!T~3)cc}B!p`nD%ofz+GuAKG-n@csrK9i +o#!L%`5K=q*td{ML^oD9d7aIa9r0So7ETXlC6Q{+P2$EDq2EZU$F=Z2giH)ZGk2PLV{S6Gcq>SO4=#k +H0vBkOO4-4l5KT{kD&^F|Ay?F$c@sGYpcp035~djH1WXJS!Q*qP?Gb6gtJE)G!!NMa`0cwsPlgur4Yd +@uvNI`s@wdPJ?iZhZ@ef~o^6T$^@ppx?g(ebtcRH;9c>3vAKm48*1|LRd0P_47&!7J4JI|j!|0VnH>9 +79m`A_Wtxy>^J#AiQv_DlBPKRx@GXP-U$#j~GS;i2_A1F+9O`uCrG{+FMB!hZhM=RdZBBK?~I)>j{X{ +MC<s@?SsxYbzKb3R3`iYG7s%|M{c;{Pe?Ia3uco0R8fVzyI=se}kWY`u%C3NoePS{{BCH`N5xm`Tk#g +`M$k5Q))It%l_{Ve)Qiz|MY);_%ka+KK)Gx^WwAbzIgiKi>Du1!NANk3y>#&^Wx+0y?FBT7f(KU@#J4 +$Jo)g&lb^o$_&ZjZYT$G&3x7y(X)g3_%Y6J6#_D#z^I#O=i95qG#w?j?>rfl!DK3(JgxH6pOS?DTE<N +PIbVu9?2m=W}I1X(ndE|jX8#4N+b4`Y&6CLpcN1FXtVOB%y-iW);M|v*#icI5U-FowEHSdKdaBihl(` +)gRWx_8in2ZM%I@ZC1Fl-;azVElA;K=u(=Yh>Qea>!70_ftO(Z0!WvhZ2NCZiVPw8b(?GkcGM0y%+<F +^r*w8Pz>F)WTR2!T}*{r=Z_9BAG{hH~{6xy73(#O$N?(7g8@nK19<6-ZjFNrd~LL$X_yiSg`~y$^fM9 +c^+)t7Tux+%_0OT#Z$FoeiU9TxkY_14OpfV7CaYji{k?B_(`X6DY$sHLZIpNzu(@4h;Oe)aXc;|t&nd +hXtv;1B8U$psH+!Q0fr1+U4vf`)3TAEno-<=2{?R6lHW2lq^vp;DCdWU)T6xd&1_RgLDV-?PyUfQC$! +}`_v7GxC}fPzu?zt4c(#}81+GNCQnvz}Q<-u!EnP$&V6L6C6^pQMQHg|l>-yb4dh@Mov%yXEdV#mSPY +Uj%LYs@lG($driO%wO%`qT@AwFjLVIPhR+LmVWd6nx_V`hjb)^>R8R<h=mZ+`Ho;7*_KDIqH-C_> +HGvwG?|KtXP(c789e<oTjlW#q_EZHkg=3SOrbUCcEi>fF)#)7NtX-Tj(XLz*U2G81ngrJnVJBhzc99O +S{W8;(AK7_qwb)I69qVq>s29P)s&HTmV_#=T$)(}jdv}Rh>4uBagBf^<9S+_D=$R^5@M9(s<D&LYhq9 +^;7*^y>?3~ym33H1G_3KL(1bD>EO@4vt8E^p#<b1xu~pePU^j=`#0Zknim8z(A0oK4<OAXZkh#M)O&> +F0>O(+sUW4$NBm2arsj!Fhmz#R|q2@fZgt^eNK?ucnjlC&Wh^_Nh7&9r1chFXd?N;y(T+@lTfrz>3+i +mWUKcd&U8H3j_@gyFraqmhnj=|9L0O_s_5Eg1CY|^t^GhH}=*Z+9Jguav-cFUXu@SGd6p5dNrJjt#sg +Fv3VtQQ~QHwh}aA6qb|%saxi*O)~6lyxnpy3omV$RCAF;h?YXH5=5K=PnpCSwQQbNLLHdwmAFbKm^{r +To%}<ZQ#$(CZ!pV*y<&dc1{<ofi8hAwJ7`NX5s`2Ulu34tKqx`5m|MdS#qP9yknc#gqVf~`jwB12?<h +yQic$u%|RSuf|^;yW*1D~euO#CAB+NY))U75fXkBzKNr#nMXCDw!^zkYBteO`L@+SGGJx6z?;2}TDEk +H)J%si|oX4TbV!qH2Xg0K^E`S(~h7WeSUCQ2*6an6H=?*7fV&1LoNpG0Ef0A6nnB#z5=`9^NlZ>EH%_ +$=!m%r08Lb{YKBhv?#-z^!zNx;&9Su*k#MbhF>t#i+$kK0wTKMIF<r&WSSo_#)spY7BWg7E}*cLtL&2 +*RL~uykYyFxSHz;KJq501jmp9GS<HVK<CrCNvSH%g&0KBfQV!IK$la9(doIOFa=m+M(tVm}CHg=7}R{ +MKKnf2|vTEzBQ%tM%0JRpfax>tKF2reK35xj%pBam2AOfUvAklQ;5l=XKr$AgNJu7)w|n7e+lwdm7O~ +M!DPIgFabu6yaVPoT*WP3IT57T5N5P^NzD1~wt<yKIg(=yW4^|6o_yX8N`@u6ODV<|k}8`)Xzmo>3r9 +z2$EP<g;8Pk6=@K6Nt~Hb<*&U(LqjIPz94t~GQhSn}ER{@yO|SCscE3K5C5IG1N_^R~KQ5}8JU?0!EJ +o}@kx2~YoHUfFzzVpFW1o`aIKP4jfkrYgfZj->uoFbx3DZSpF~)FWMuca+>0qW-PS1mgX-a%A8ln}-h +jz?=hOt@f-N5kqY*@n_<qya9RW^LUpu_fr-%(#{K_h`NE5;j>E;I3rky8KIB|>(yY_aJ?Wj^5mbDvwd +$*phU6w_Ms49)SRiR&VIqVzcvrfZi7_~3LiN89Ntt(tFY&RO_S93eFkzXdm8GqzjACynb;x`?JrDPV9 +zC$>v6@|8^?XHaW<p~k9_^WTOK-SDM1?edqI1J+=f->b?OO!&;BF#t4IW#E%7N#;WBtce4lUxPT<a!e +TZ2E8uqCYH#+f}d0RGT&yLE(RnzQ|sj|OlE)CVzEwr*`hW1FXhNZu1LdY(RmPza0)wy;OxENq#0hxeS +?hpLVuu5EhtHkUKu?ucoc0xUp~006R7rp{L9&BNw;G#>O2O8m-l(lY8G}0Tx4kqBNS)tcpL_nQwfp_u +n5zVkhYxo+5sdKf2rXTTh1v!H^4>?H~CCUOk?X+zGcV{(QHc*995I?1^6Ph<-<I3$$Y9-8?NP)Ha%bq +FltGZ?)j4_?6wyc!0|@iw7cXKe80yG8Q(AP%RUS`lUTfj2!CF3VAqcs{;|APOEvh_Ot6b(Wovb)A#$2 +wATdQ#Rsv5<^z(b-rPiQ3>Gk1~D1XV4pR?=~yn=9;rG<Rz{<MC-(@j9;DJJLy*o3btnW-b7G%o0X_Lu +;35=+IUBBpNE5paI+u8w5qEcua;k(~^FWF?&)x<4dZJdVIYVDArK7Zhqj!7u9e+j!GlF|IWU2BH*Vv2 +0S6L<KHmy@6Uu(iU`?pP9qp6!w~78&1!8_7u9K0z-smAWMqX`dME+EjrL2Y;8<5N{gKhM`JwU#%sf%7 +4j8g*;%5M-`?Fl@7s6Ze*3N-A-Kgw-NEo+4jT&#d)HsTzPn$bjUD!!Q48rDVdXFMMgpL^0s}%XJ3Ci* +brj;hA*UO+lL<IQ-@?(81LCJq3O;eLvs1o$wY<B_899l)Hk&Suh|A(eAazX&K-sxkb`tNGoqedhs>6x +;lyTXl$Ek?*6AY=c`nPj{n?PZIy&H}xYY4Dz2T0V~=+PQ4_g&|mcisU)9$E-t(j<bXPs_ld3!WZO+lU +Ho!~jo*{7%OAHe-1!Qsxa@K0TGfZ;$rbQXXW{qeUZEAd`{$zh0F7DG~Y&%I1j<j`aQ?P)h>@6aWAK2m +td`vrr*>yb8|=008tR000*N003}la4%nWWo~3|axZdabaHuVZf7oVdA(ZyZ{xNV|J{ED;ruW;=Tn?qi +w@abG`maDU~MuaX>Y~tAkY#O^G=pDl8R$={onT<sV}5N*|{Q{akyCI<L7;Ue58DIMBWzVPVk4dB4>-! +H?QHpugERkkspdIVPbN01pmm7JZ8CM38``zBx=pbMM-1$Q_sxFFHA^Y<m4<|kN^p$_0)9s7lhaq71;o +8UMNyY1{hqDlxK{vr<j$B@SMcOrp!3aV@9@Itu>z-B}9y0Ym8#0D3DWFP{LDc6B4Rwq1Q^4=O-uI?KY +%Z*su@}Cz&CWCqG`jy}Z7=d<_EE3x3WsCM6N<-xU|2>}p472?E7*1!87&OA0~ggJ3YH3KV!NxZ?T4oX +8?oTPhgBBwQ-NSCw+?)rbdL+XP@Snv?0p9l5%jlD}QtUER$Q<o(tC4>v#GllK?5w-?v<SC@C>=9av@x +qf$be|2*WPv4V^>tD&=udd(C2?J{ZANEuV)BwcfXi1i6v)wV~h>#XWBw4bUr#uGL@`s8(F!E45GLeHu +q-0{lC3;kXfC<86e8Ux0dT5|mIGF&;LMS4Dyx2@qQEW)b%P@LmFrX#EX~~}&O1YEGSH(B1{Vr(CRy6) +RnM{t5DBRE|o-1-f&cM<f!{Z-2wFc9@3C~DUFq!{Jku`k;=Uen)7*2k=_-FL~;_99($?4*oH{X19`sc +GZfSa%s{H(+-I8LZ|kaKc;oP6HS&L;#u)9F<IeaGTLPzA!LRUV_}pfbf!m5SzyQ^lk<!Yx9f*^1RC7A +w8@yOIjJAqM}Pl!fGoKr;dZ)rRFtl9Ebkf@vQDN_I{@v)#53iFfsw42>dS#;VlDT@{d5-)Ys+ul3hpM +yMo@G~)>vFjw?RFXJi6SRQB%W@HIA)N5jzWtb9X;=|%&Z8rR%VYh;ok;DjOK?-y2q*e+7AVdlYbIwe& +v}8$?2FHzCTCdn2kh&6it8*|5QK%q=1=c#3bG@cz(al;jjohtjhKgm94VC<VY3Ii1OQ{NJ5N8lV9Ul` +pjZP?W6!Dy^C<-LY()mD8B2`f?uZtWufGy?9eD#w>kd+Ztifu|2<<(}z#6j|eWpp=2g$$#VKe1#lg{e +o;hUb=`?I?ZPyBLa%V3=)So(Pg&C>z9?Z6EdmLWzc1tQ}djsWQc}ObZ*-p%@oW=WSHvk=Z_>vK*v@y# +Y9miigqPfqhRQ<i~u2<#4}S4iS9f5DB7H(9R<awJ;h987SmmV_h1XhV2#cbi$4ijd9Y^rgw^k!@`XFk +@Z{;unSBBrqQfH2dNwPp>)9uP#umnJOt||_aV}!zHrveIB2~y^gxGc;)v^+9G9puzLbWYnxbbx33 +;N$DhTjbkv9U&QV^%EZCsy)^=G+wS=*YzlTe7bCO{ALXgVY|sLb&tsX&AS^y6KE3F(4y;h#AFg#G3d~ +EA*4m^Omu=ZB}RfYA3nC@`_mo|7AT^-opx9u?uB`xcd}3q(-ak`k*pomoBMwhUITc*anT;!1_dn8l6N +31t6>_yjIYk<W|dG<YYFXw7U&!rxm}P3z2TWY8>D!&=`@?!eB~Zi4-Ae6N|;_j1I!MF28NP1G@OZcyx +m-MXw<q{eURz37f#H$mDg|Y4%hLcUKPoVvC?&+rwTW~c>40x(=Xy%FCAm-ucre6#>?Or3FC4b5ox^m4 +aD+PtS^$sUOy(zGqOtu*s>$<WtW~F&#rp)SayM4d$X%k?QnM0tlaFvK_|P+kq%C%Z3~CDE6Unec<N~y +_ox_osF!AnW?Q<GK+v8v_sH+Z84eC=g+7Y$bZ2O>V61lJvc*ull1ZNhOrN_?{hH!Ay4R$&;yHVSn*OD +Fw-~*Ve$VT+;250FKzA$~ZeMj+l!8IMtYmM0tOGF8mnTpQg;XuYMp`G(>2!LB#av_SYlQ}}iE;Ana%> +k4o9hPr)CbKGfi%j#KHsaWR^orADc(U5eQkwLdZ|}w&A_MYKF%J6&C#LNGcQavdpZ5y6?iYEK|v8hvk +W#=C_$`ED4!OKP9$sldqJxkc?>wAo1%g}3GZ;x{41umj6o5j@!Ck~6S05H>Lj)|&X*V2ppVJi?+Ng#t +k(#5bTN~9$LG08<H6Z)?mxiII=zQ`^vh}Aey`1tciiwY(=~=kC+)r(4?98VP_TT{u4az)F=#Y<7)$<h +j%u!D?UFruLVZPoF@mmHIwrwb342XWXES$u(R}|(7Vd7)%Ci_a-`WPyjf2+ag}ey3!2S$c<T0qd#v5t +wjuF>mfN%F4VMi=8zTjmIZ13N-Z4HTKta_=w0P9vdEzg0a_oA{^%5_m?iMz5nblOXC8gwvxEv;+Xa7| +^`3-k@37yoBD+Hp0#X!uC8ihVf!*hTKJeHn!_3cFad!R2z@9<>J0_ti%4G@tj6YnBakUPii(ED2Ua0k +tIwa3IA0f*Hgd-dS0BH@F@=?P|;#UoWCFT=hVi;hlT4(=W+I-BG1^&=+-1`U$AL<=*rgn-4jt6$biF! +T~0R3X>MW>={z1)sQKw)VuNLsXptN<G2%W!%*wFtMMirFalp6+T*mh%Q@sWD4Ly<`wFyo3BeyMb3SAA +n`+!(o{>?_=LpYTpn!Q#+qg%+ou>9#%h()39p7!kc}*427r^GuB}?XHRVnkGe5#~*)lDVyGBjkiPli! +4%vg7|exY+IL?K%5PY$m)jpDL9bbgr|d|vQgG5RGp^LR$;8lqyOL&uBa1!+~#e_!ci_+nmT4<*zQTJN +)Z#fc8naM26-UX6K$MW%Uq*5qmX?hF?+-N;4W%oCQ!w1n!Z-x*U~6ER3Afph>b_ueq$uN)XgD$r`Ayb +v4cw(6ACh1WW(G;8tq3AuGdP8eRB=&Ls9PuF$-Rm5>6@COb_C2$TQ*b|E@TobkmwDsG4322xPi;|N}c +2P&~8G)B(tvfX+;QL<II81=ndF~``O4;1|R%@iay*0K)YdB`szc1mfr|Y->vA)o%v(>VB*y3HKJ??nl +paj~^#gom8T7>3_=16U^>SS(CZ!3mgGqol3s?wz1o&v}F(s}lWelbDJXH^pZ6bh!72c7#rEI!VyXn-E +Xc|1GNl5{6O6GT>c3Ra3bJT2co!w5C%w04C&C%-LzpA)U^`M>htPJf?<DP~^1GxlSCIt@P+JP+ERtkl +$zS_Q6Zvu7yR7vmRP4Brn)(Q%r&@AQq=E_+GY7AHHjobrSz04Qo0^5&OfbsRqMM-0TOJX|vnEgE(rT5 +@|%U#WJFHl9=-A2*ikH2DCg`{>%sVLtgUP)h>@6aWAK2mtd`vrrjTWkHT0000_=000sI003}la4%nWW +o~3|axZgfcrI{x#XW0t+c=Wn{VQ-vO<Bq+y2Q@R-KEA;<2cSlyMCSQOlB_YqA3!xIHpJqAGWny``@o0 +00=%M%egvNDk6dIMx)W)XgmnK5J&NHl?1o*O!U2h*n9ov^{c(td#}ZN8U5idf=FD*OeSd@?Y!7|0WZl +SNYfyWM39QPOyqPWZWA}kq(2n1L`o6Qgg1ASTR9Y2EZk@%mV__jY32q|5Zww_cu*>k1K4a1gwlAHJ-C +Ska9_A-8he2Y6onsq`9emSn_-EwAe5=-XLBifmkOgdpkjRKhCmP4#ax{!9)fHh=b1=knk9jURE7ZLg} +IM>=<G091gZ=~Cvl`e4hZKd)C0L4ibd=PGyIiQxn({LgLFO=et^WMc?O9oCVDbLEU3%B$B9T~h^zsP0 +Jx_b7aS54ma{~`W=d2kraa8!MY%Qs@-)kn2#S@2<;Ng8D)kTPWtf5pvp5Xn2dtnMM}C0yO5aiQT|urp +jqfE@iJLu&GvJu{z_wTxO{}ugxf_OJDwX7*Xppm8s#StKq#5Wz;D%xuCsb&)wj*ZZ)3LZb|9JJ~aB?i +hm*Qe_{_FU|@dwd6yoC4OP<$C*eLDYqB>-Y_cy{%>IR7XP&wdww8=rj`isRodCdZeT;(P+c#-|r2<6} +r2pB<fi{xClKMZ5>hv-2x)GCmz&0oki_DpC;}A73K5)8om}CwM)4KRy{>{XPUzAIDc`NcZFUL>!8X!^ +ze7=<~_pL|lBHT%2DX0}CI3@Y(q6;{?h%K0Q9W8bP^`CXRoF7jgON@Z<yw18Rq#p$-$|QXHLM{5~1~^ +65%^IzRbv42kcLfxE-^C&yeERPE^GaC|xx9}Z6se>o<sbD)DYL_p?IeED>YiCE?#{5!fDpPyl6j?T}n +Ch$6hx=yYP@|W@D@lYI2#+N9TkCXFLtR@N;aL$PgV4fW_9Ta-GZ2$z{KVKdjlH$Yh;R#T?L}ae01|RM +0^m@I|SrCH8flkaoDIOAdCOz~eXo3rtn4?;NS6PASMPiTiZXXbLc4i4EyyMLBEKj84h+u(w1p1oBAsC +m#?>jpxeU?XF7RO<#69Vv4rGyw%+0Eiazo#pcm93UC-Pv&*HwQivDD6P>YA#RwI8{kMFNxn#oZSA@1G +Ia{2MuSuH={RiN3Wp<AdSzdoaG@^9$;2bb2mw)Q1IX@W;1Y_XeMYOqn(T2_kaX&Hqs=6Xcm8ceJu_S# +2#etw`cET_S?q%cYD|3rvuU7ABwjF5ZO!s=(`;Of9R~DTZbfoxLGo!^Z<PLtxQY?ymN*Zf=4#V_{-^; +e9S1BsZiQ9h}>kQQ>Uv8rHmP;hreBp|L0gSyKo=V;2&~FhN*1iYU-wvlbV_9BX=T<quW6Pk9}g28+mk +uSy%8lsBxV~0cvIg=U5*uct#8_LpOsqU5voTC0U9cN5A)nd++uJ%s>9U5PxN@cEbmEm15tKiv2wxouw +lKRY(Hr(C@zyKmI88-webn@rF4pgu+C}*)DkH7+mr+l<4E<E;w+MUp(uR2*ke~==Y12lj5V34T>U3I^ +wr}Ox*-<Y;y3=moqTCP=Yr1p|hG<HPU~H1e=V6;?-nl$*K$sMEbw=2LqERA3eFu#5ri^4Em(wB#DzU$ +_tRtE09nrajlH%a$;IPyxoY_5Bn8bz6`~0V8A2`*Y_QWJo@Nih8Tk=iGY_n^s7M$#yISY(4NteAt)w{ +9Hc@n0)91dc0djU6L~26k-Lxu^)Wjq&KoMJqyNNClv9N}1K&gm(5M+u&P<_>ChjoZ9jocc>WD)66*I4 +aA65(J#Qn$WgG{}oq93dm5V2)SF^0lo7ymGEglSMk{IT(FWq}5C!5WtqCIn=8n4zH|2?t)|@Lu)@7HN +=gMl21Ba)t_VKz0$`$9G_1j+0_pqjt5#zy~55_~)WAiu^W&I1VB<=re?S9|wMl9g`9@g55%-3ht{yC6 +SBx-T?V1vtS7w%&1~dp=KRafIX9ARib7chnb2W8_Z(~*p}3&Em;Pp0Z$>G^G{iyipE^iiqI$_MC_4#I +5>-=QlsY3ZT2mq%=%ztsFW*V_bpZ$P)30x@wz|3Or<h*GKmPZ6!YXmhoM`5Pz|f1T9GP#ObM=He45Ij +qPN(3Mp*b_QBt@antShtIp!-ueMg%!QK~6;QOb}}2UV^qwQR1cwYh`i7wX|Qw_Ivui`JS(=E@p>re2k +9>kPYaKS=7`3Dy$(=dV450kJ+jVo~sXU4i=x0OAvS7>ua!4aXi_`~p?fakcTJ*Hyt08D<K?)O<?pg2P +B*&=>jw(32#fz%*bRtC2)rugivJjP;4OhH60e#t)c+<&gDpx_NCjMpN+C_J}2S+N7gwuiGvWs);(cP8 +)du(sgbJ(tHq910(oX_XZ7^x~O_JG-(C9v6E@4_4*1Kh&HKK`CaSEjQ?qMW*Smif%ZcS%g#sai;PdX3 +?5Gb?843F9D~SeFrZ_ML$Lrr=$5j%8lYh`66?WQ8a$5Bh*BEYLEMY;0xIqpF(vAXxm-XBC5BSiF<%^C +?7!X<vmo+;B%+703y(0w&a}x+apGbDg<~j8)G!h^gUQkNJb@I3(6t6B4L#Mkh~^>~Zr@a>&1j((N~}& +t#8ZJP!`wyjL!`3Njr{XpR%sYuTFpjNOGEJz296<8O05FX?df!MeFmmMS4(AnEm-}F=#6^tzs7~ZBbI +0}guz;gAq`sZL!VYsQ3keaa~VU@rmE)y^Rnw*FSaZIi@PevNVpoAuB&V<glw;UQCAJC!n(i7RYO3RxI +rofTN!2ddt?!;>=4g`x<qj%un=wRwn(jD1yP<}6PhLUV0?`h;X=ibOk-WGA;S|ZS&CZOg{qLj5`Ix5t +IdNnh;Sa!lYKG@D-NxUOPMVE-xP$^y*U9oEM*hJ6gJybS7jy@v6L()NS&qY-MP0NEudW|{!N%hmgJ!J +0nd&ixUZX<#wd#9s2Hbz0Wc}m3@v!zc}(-aAWd+HNrIEV=~8-vopwrY(I6}LxIcO;fJ=#<_U-r9;MZn +QRdVj8COU0tH45F(av^lHloCO4Ql(QKld5I1Z2ruH1lJJ)Td*h+(@{v@X10Sn)N^?c7&-I?E4I4SHoH +bIf$vByjq}7)K|Iw4$))Iu+|;D)>^P<eJZSDib!=;OwWQGFOfFJ8{I<GTOeE9B-V02WVp83(#ZaFmPX +Q`2w{Vj?WKIbU%4-Z}3Aqx-_Pk4)X&awoI9_@QV*KBv42F&Pvmk`Z61<**#g}Og>0r&2QNXCDPFgb;? +6*d+{8E9mUt4Gg(K63?$f0=S5s1xb;yySAjvrd7L3vRFIq)TII16{#EhYtkKP@Cc`@9Dqf#S6IpHuVV +u^WBbj9)xWJMiN?Q}TgWYyklmQGhsanZ%w<TPvTq(XCt~{zn7E4{fBR)%P`!WV;N5X-^G@-cpZ18AP1 +$+o}7x*F@GVIkaJ>^H4rIf97#U=*s}c=Oi3V#|O@8!L}{0VudXjpHrE92s~;G``L@bP|}QKE2{{80x_ +~i)z2HEGJhJmc-sK|@f#|_KY}#|r2z1!orHt4=#uN-;c+UE_Nz@>P0p0~uxr``>&4M5xLx8}5jn{tdc +WZJW&|T=$DMjr(U)IG2%(oU?1dt|MzlXr_R-dSMX}3OB2`N-R}MZm!THmLa~rWgf@l1NpAjatfky?L2 +B)MZc*oBdi<Ohj6X}xIs=k*28ms;z)%?G7%{6ROaq}!&LYE)k1@aF!;mYF+Iv9At>`{@uhC<5ii;orL +W|7acMd;v)VWw~~f!<dTZ<&;l0cj;tsMn{f(~}GHM(E3SU1R3M07}ptmuk*AO_*}w2BEVEAO^w}Jw&0 +T(dqc~_<bn_fkp(hh7k0Tw-rj`auShZur;(6IoKrBJS)>XttS)B0(=eKD2`f4Lzvk{y@a%;09?f^6TT +{?5J3WJB7~Cvbai!cDU*9vfqDuxZOX4rG>(25ml0|S>nL1ORA0tvN?S+Ay9m5H4g;*mB|kMG{F%#~VE +&sPnm`h{Oq7n}V<Su&dv`KR3*PDdvYk=OKUtot!|!Bw6l5aUm3r&|bNs*!WAe=(%#+F+sk|<9++J0X_ +y})xG8Rl1snkobBk{GGUaEJkq?%j_u9G0?MZq2GNu9qETo=JCpm^+xe>6I#c4B3B1g?HG7QA+0LFZ0e +qf&0j(yOLXBzCrN<TDNRU|KioR3P9Wj1zAj$I9bpcSo3Vq*H41))rqDW_J;b1@1O0TI7gQbQ^UQVPSS +k|E{c}+1<00bQVWS89$mQMIdhJ&ot@+hB?r^Ok<@zr~LjtE@_hm)m^Qsc4v2G{ce}tT7A!x5d0W-{Xk +kzNYG3zP1KJn5DJ6ifi98~XHhyyY6wk|-`h!c5$nwB;4+D)aaIIAl~=`>o!Ug}aS<j<&kBJ!L3I%P(i +H|N{It@|{dRgXxi~61Iz_1H>aKAgq3?@_AoAmfl&1KCS>Oq?qEgwOguB9e0KLE0<N3DwB+y^<EKrS0z +*C{UqaIaVu6K6q)z=zLwS!BqcNa5UysoWwZWPPk<!N4C`fi@*H4|(jd(DI~daMFCH*QK9?BGToUP!a} +sIL{{gk3dlXNOm=4$6~sHLdFncAEL3T+LW-V67X|A`!0_L6&2i+%~g-v>>8a+R6rut6Dpy0yduqq!Gb +{HkT;lSnm|<=?fSYWZR=Nvwx<~!40=T1{fGfCGPE($bZB^v?Zzy|5V%*#l0nN9zCbzJleW!Gc{(s`sQ +fPGR)Jb<L1$pg(}4773*ZNL)&0GDB!!rWEHW!A!LN>5Krfgnh!=n$!bg7%oxj4G4oQ-`y^D_2em~*q~ +LMUyceqTezL|Rfk<Xy>}`z>5bk0t*GA}eTRj~+!3~MQ{aSOsE_d^tok+RQ@9g0kqJW~8?!;{Fw>$aTY +3ZBS^ucSw;z2zGSAlqQ3~i@s`K}EIC_MgV;Q$BQrEq|fHV+3rPfm`@5&T|fFmIva1kSd&M=<yTOTCKY +%eh{xZM1qrrCD#AYrC1=67E)dOPHN{+sxNf^;RiMo8Fd1yiRY;K&^?yTD?sqxTiGxW}2($m33DoZmzw +67cXVhtbn?R)}>t-n}nf*1Z0a2uOWfUJ^phD;QBr`?jC?Qs{a~%fZEeEw!y!Z*)oYAgO<o;4faH3Z&U +Mg6559VceS*6kToRG|9p@$7ltC_KR&sUA8y$YNNXZ}V&}PZc-iNI*U7i68(=@Kp2G;u^*^&B7vK;c;> +16_{U$WN1le4**F?JEVk?@5(=<z5FN698-eI22pIgaqLWr8{n^4mA`w-xg^S7wrx1mHe{B}$|7yt4(1 +aLz6S@_T6|H$>`@|iR~N3=inxnd;0`8-brP>F;$dB0T;1W;Zm-6&sfgALJZwfB8OGrEztdKLxjJ6AA( +$DOcS;nV1bR^G#4%Z`+3+{r)hH>1%UN4G^@n?=$Jd#hMl;dVyTZQMOIo;E>jYeZcU_PUr_gIA+!LuP} +xI$g%mH=H5X1gnuXr*0lvgE;kWjs~?>Wwhud;Cf-4$~i<r+Y-R-JI}#wkEjduHd|<s)uzV4=v!I?Bd; +-s76zYg4_f&;45BRU^%kMv>n5QIt+$C{rS99Ag|+%uwu~ZUbK{sG5{41Q{;G`@9a|KxgM|%suAs1;+7 +<ZSn%BYUla<eI<#zq6uiCCv!E#HqlUt{Vt)Je41|22R&7^Q^nnquGq)XS+XQ9YcE~fZ>7=8w#ztSk6H +s0)yK*V|RSs+T<`Yxhro>HAQfpOl3czQ+%@l-#yA!gC*F)kbY#>mD$5O&c}n-VBDEfVSYN?Cmn@^zOm +c86k@>WvSo8vMvi(Q`q6_xg#--mc&qDm5u9R)@>F=XL1vkri%)r{gT}lc7Q>wR$x!+#`tc6huyyK_?( +^?@~FtVnR7w44vdtFR1h>nm#3=RBG`#*qWmeYG1XXBjeJrRlUq{zCQV*ymDdvUIfz0y*bexitm!1_)b +u*hXa&{{h_sk-()%XeE=Q^<j|Aj^sGEoGS0&%%;QXg#E>XYB<HIagU%565fW#^Q#sG)nUj?B^;;R{Hj +Jlks6f;ULKGj$m8%de=&`8=kcE$J6|mo%YG7X4s!&R3se}EFUAEB&*T2VIB@XV~$Fra4Q}4%YM>YQ$w +4T-eY&K<#evs9jL6D7*On<P0KR~pKW%J;<VdzfjBW?ZIQN9Mj53cJ4yV0tTjgHgNP7gzaJM5Q?meU8q +cl<SVL?<2*9mroKF@Jbw>#6=iFOQ~i9{G+wxTdcX>I|q1ZfuXbHivQ5XNU*toTXEG#lEocunJz6#u(~ +c9WPAlrC}DMkBbK6;LTFit!pt-YF*>7fxpJ)s8+RrrT>aEF$T{NLQ5fhQUqeC#-LW$a%wo-2@5B!Z8+ +7*DypxKlR#MA9qzPhvN;~9sRgVa3%vd>GUEdYRj$Cp7U`>Fb)3~oH;e%REYw-*%1Ho*G%A8R(2b5S01 +*1b(zvaGjisDbI|kPhF?0cz6Kh1X9a|NXeOm__090@+m)DM`fhxF#Cu~PmFijo+oz|UPrF}eg;N{&zl +fMHx{)m7G!qR8VqrDjG@fBDTg@AU~ts}rtP53yYwH}|LZ2bE`K47(M*|E-`h67R$b9)vvSE3!B^KA^` +x*dVC0lw_e);9`?BPrVCX-&e|c8ffzK^Wa?k0&(;V_U7UX=7-JCpCzHc|xNY5X3P)P753cixb@;3lm# +FT*ybUQ60#!`FzT(o2*8-Pt>NvEUlrW>b8y+acVo;E}DH{PaiG?<HR6YPoG-qY4pD`>(?Dc)IHI(-_Z +Z1Bi`87@8Q0s=+zs0(3Ur1Py!z3ILCki{-*?eC{32+9v=!AMA;ths^cRbA$4>~KmFcM?|Xw04yaX0p^ +b(pdw^@J4>o~vxUbc|=E#?iv}ezT0~iEl2!PfA_-u0-#Pp^={6&a(q~9p(J!0w{^<ubH=nfunm1IZIs +b<H2=5C15ay5;E>V}UZzrMK^KOTrT)(&jOozVFS6L~8i3xZbSvRA{Xz!KD{n|X7Y)_~9AD!fi9qm+;J +*pRo4SbG9Xy^7;*)?rF`A-=@PottoogQp~CZsfZmL~>#Zx|Tu+H(#UM>X6cYI!fd+bUoQmcK`nO-J!r +Aco@*0QG#(~>bXljPh!l0AFBF~Nktu$g7>El9K?wa>0e)8+dkjudViYFh9YP|%V%GM>p@NV&6o7JI}X +o`?we1o@ypHS5U~fgd6X={GLph5bYj_PIt+p)9V~-*nyzoG=TFda<AbL|jGwV?A|!_!QebTIbIQlh=} +P%(BB)Yhbrj1>H@Qu@gT^P-V3kwC7_=s|LBEP!D$A12)`eL#)|K|WayBSIx6IasXabGp*qxw!l%8Xq7 +Rhs1`se^?WdyMMzeLhxRX<y*E`2DnY4z}|+VmI{$>&nGo>Zrgt<09zF-kTn3=nbqiA2AJr*rc$RoS%R +v|yS|V<bF?sKD!I(=u@j)TGaX2+!;()79*mV|q+gr#iLbmPxXGo-TuS!QoKqsN)u$F!t0-`Cy`BK*}@ +82bSY0_r+}d$Ub=}m}!d55}hULj5z3EabB9<`)|sX*AxyId^FQzwyOM@-S)Oq`2`(#uadzSfwGGk(Qp +lELsl_r&814O58}XI!4jrLD+bfzWsjuc9YokjflJEE3Q~gIX;hLz50oct3UBCGbUgQA@UDR|EXu*T>% +J-rpB;{yTUlepq#5r5yqU$44ilGUjopBOO1V(YCG>S!rw1X39?u^QP%H|i)aF<|r`J4I$w2T1iAX-YO +0!ic8Kaoq!3f8k#rT%aV%!^jUoxE85?E!zqh-9L1D|k37@I21{5a1_$H4)3qiVA6El+jfWdpMByO}$v +IX`q&);EU;G_($xZ#eQCL3otFBufA<#F)=+L+<ggG#nVwpaoB?=O?KnH$I~>$VOGB`W8ns&~PL+K&jQ +3A%rUXihMi9Y&p_AX?I=mc>0ePxKc}rkewc<8qKLOG}CyU=eZi%J-&mb*CuNG(IY>L^`W9rW&i-J_BL +4$ZiJJPftrx}h{u7M%v4sD4^nE?L%$)Hw!muIWHkkV7A;X1K!u;HBro?~<bx~9NhH(Ksnhz8O&{lk)e +;qQy2#TEPew&n@g^2mU8c~pjzf(6O3fu5AW*A00&ZAy0R7fACz2c1968;f=1>S%yJ^ACA{Rv9Py-)la +&S+w0F<0hrp3#7(9QJ+WwOY-UCBxSfb1l<6hqWXuL~1kx`erjK=t1=k?x(%XgibO$ipDAZo=sI{vP$p +hQ|99EC|u-I%cyViKH4S0fh!*tE(HED`7RLXdRxFTrp5|IM5KmP`8DQpj8t$BZ;T=ej;d4WO6gWOj$0 +R3{))VLrK8Kpf&jTQ60CXmR!02JWxGv5#+D!iS2F_e0FCyIt%l3UhQ=;4dBT^7NE>feavD>h^b-MKI? +Fj;GPMvZ%?MG$ZyEo1=s|!-=w8cb$iC3IdFSj2=A>DgSym#4$PI0u9t-?>XPZ0&IjCIgKzIJIC*!oT< +yOr<{a{+k1KKyiMw3N<VKM*VGNNh?kF-RNb}Vj`=dQRl3HfGap&g7QKWpwxzW_j?kA*lbEC_;QLCBid +~7N!+Ra2E4cd<bGQgYD;+dj`<yhOU&@%x`d=uBr4U9R1TX+NNNcQH2D@gB&6m*>z?uLsLHO-E1*clns +bIQW$tKXqeC~bREgwR|Z6oURTIlQ<yo;Zh>m*Zc~@WQOic6`Nj1N!HS4~JLBmz86&^<Ft$Zdn6sLty- +?-p!!vRJof0|2DXr1OL1jS|Y0TZB0kir=>!ZmP;S(nkk8tN!>P)87Q6ZH`Z(@{`s$g?WYKHWT`F4L_J +q$@f0xotFmrb7echzR{d%S%t$Tvwo;m>sEW0-pgiMPsg2R_gSDD&{tWl}VQ5%WzbtjCbfdURIrbC=Wz +<2{G!;#&;7R<n380Tp;IC;wQ*6mH8xb*GZ5N=ih${@L8JsD1n(!ga`lg&1=TVlS8_{J)@5m2L@na?t_ +|irH58=_my~9%I$VElV&?kMy@GO+~GNj8P)n*lSTcEmik+wt9^mdBZ2H@(wIm24HKM&7xwm7FerdCKI +v-V<YmBXD4502CK!c<?#f#+z`k%W-q*TaD3i32_>^FJEmGbKEI%Nz8eNsMR6`gqp1`2L62x`wuJ8>o= +Dv&0o1`tAM$`tAh?o4PaV>~P^=CHOc|-)uG+)o7_B(S5F@*`%YAIknIF(iECj&{aQAFU`@Z|8>`K;v~ +3b49D5U<J0MR1J_vNwvMPzUx$|No2#HKBy7i`*?%U<@Ct857nY!BE^e=D)`#YOGFa@$#$_~1fYyeZky +bdPmP4_dNnFRkE9NL=cPRP;^2_$_&5}XWlV#1M>Av)0UVcTxqOC>hM%8Zf)~*-3^zx=7YP5TohUk!Ec +9xCsfLHrQt}y1!DjJ>wPiS?@fCeuQp$U4^K{Nuljr?@EU+Lkxlut`)R6H<5oBQ#lPNU!%qhEtDs0)Dr +cC`$4t3%`(+ye}@5;<!Cg(~V(^hwbG7*|qwv+r)DqK59*GT60glp?X(vlUvykPJ0cc*-1yMG+-^)!jQ +Qp^RwfDc^<IPlsks>tHv}X0QHpS5L+q?DAyJuBD%`#540>zD!@f)EkYhOBK~+1|O{{LM?(<;zo@wZ^W +yg)a)7EZ*T*p+!Rpwh7g=wrMLgC4r$Y(wMUB@zY{$xOB+l@Lx;u1ksTWrn&+%&s-sNI5=`6LaoJPWCM +?jdplim%n(;z9ytZ=pyL1=#DD$Si!JyozIFq?ui>5D4Tm1jDVue7_aOe$dg;*_Eomm5?Ynrj#2(|h3C +yH7Xh}XH&$ZoCb(A}#W=ndWgTc_BpKTMN_(n8aySV=cB+9mo7<v?RMwcK1u%u7R?o2>s+4S9-Lc1yOw +%DY^~x3zJ;p4i#b^L$QmO;-P|97oXap^6uZaDoC<AQeP(rKYCikn%a`J>Z!Gs#N53N0(XZA(Ef%w0%9 +dfhITy?)Bwg_({c*HguG4fYy-<PE>?y{S~{eq2dX$%1l_=Ov1sf5On$1a!C_GL8)?lF}gKwuv7qSwrB +%*-&F<eviqp+xNn+B{uRgYs?mP#XbXtzBMPJ?@fm<()|W#{e?4IRyA%*SH&3NKW2EGwnC%ZnpcdV<bU +pN)G}ZK?%@0f(5wAgVLmY_ET}*wK?%{c-Z{smkfF<SLls74PAR<LqW*^0P7-}ZfEw^|Cr@8M(-IA@wS +G+0@!zZ5G!wFxyVIJ>9;_H*p6)o|iq<pE9)VH8Sgd%hc90qE!ecw{;OFK1U<IP(*mcuLRP|fi9?e}j8 +gOCZye9MK`1@TQwV*iI9#Lp8+r@H!wG*5sv!)Z>n+z*1HIb4t{*gD=2Q4gGT-pJgi=cLk2yg9A)(}fL +&X~moP8BG$E#Q)Vz0@}R)La6Vwz$(F7!EHC(=ZB$q5YbnPawS;tmPriwi*%$~!i|8|9An3b!hIk_vj_ +aSEq?%3+^Iz(18R}FZcO?k(Z2*mSklx6>GaMEZW@Z|<AnrJH-*MGlj+DPwGT@~P3)U1m`bzzCHT@6-J +fJ4cT-bB2m?U8C{U*9J8>AXSbExt_gKFq3yO7S5!}u*iy+wY4C=(gFxu&dGJ;ZoL2zFWWb|OKWWGiBF +hE`P=F+>vnppHqakX}_n#F2AO%Xh37}DL~7BR?_fXZJ0YDtl+H8;`QUQu~Knnmer_<?a5bi8oWMOVGX +HE8o0Bwv_Vm`7#sLz`{w2KyS6hk3=47VUH`8Xa`zBk!^p;sBZ?W8X?i9;G5jfkzLFc1i_~NRj=%`Eql +x^S@9_0|XQR000O8^Hj4?V_HX{av%TzTZ;ey6951JaA|NaUv_0~WN&gWbZ>2JE^v9(J!_L2w~^oXSHP +o7ap)y!a^)yCE1Q%P+f}M_?368^>&)F_4M|WtT5^V-8B)7a`M+Ox<NYGJvXi=-4-$6<Xfzs)exU(mS@ +zGz?yj!bwqETwoV~p(mv?MeG%asgQLPx?mR-wUefN)VMi&>~^9?UrzGC}o#T(Y$arTdwuh^zs@~Y*di +!947%I&UhI@WOYtE|<pRnhUT-13WcQ*T+_GWmW}R=njqRjhq%FD~Zu18>^0uI6)g&9d?6^U;g!V&3lf +Qoi_fG|nzAE|#031qAEu=1ab;SNyA{shj+(hb7;2P`y9BVDJEDe*?@}2j!Ul$Ub3Ie1wQ&u^qs2V7_{ +nE38M|yRur>65xuj*?eABWjCMaE#IsM1bbeu*Ddd4A$-cU{efKr?muVdGd@^-G;fNxx)94Q$K&aEoau +6W)AEzGtcEV!Vr}`lf&#+{;^Wtxjc*aJ-mpi_u!&dsuHH8-)Gn(o59&^)&u{x)g>6~wJD#la>GTCu(P +Zr2RmGM|BCc%OHN4w570Z5n_4kZj26!6~`)(;-9f4vI;$vn875-WAO;_a9%WJF01BcvaJhI!@4iT)5u +G(YxMNk^|H8Z}faF)C(790L$x$N?K@rExu!`(mds)GU>*6tUgMhy)@Nw%&V7zV7(I;`Fjw_jWk2fyas +oNssC<6IP(Q;~d*H6?HX?aN0Pq;lz_K?Mgsc2?)0t-sgR68gwt1biGr+;qj4AUQw;IsKv5q>O@(I9ov +&l|VazU9s6bvH}E3U91>M8V}m0tv!$)<~H79;N<8e`i}$DHIJgdz?#)-4qX30KQ1`Q8TKu3H;EZhYG0 +Kor=VEdHEumo4PPxlSi$GAdTo`%ns*JnfPbxKzy9`X0uLX)E;sz!y8F5Y0Zs1`I9OF)ekTeFhCs^Yz@ +S9wYl{nj9{&_t0VnH<t)V3b0PuexY%3%yY79Xz96GEHQnqLw1u4I1Ublub)>HP+qPv5Nq(}%L{H}Mr8 +nB{iibotD0UzEsyuhJ`UoB7t%C79;f(MW(1e6tTmrc3r>PCO3{!Ce3liV*hef9%rl5$-laA;lg1O6d; +0G*^h`MvmF^v`sJ=pqYK`wibU9GM;77BND6Uz9*e1L4)<PK*v44%tt4ykcu)*Rnbkn-U<yXH(YIbW@? +ha8gju;R7-aB4e0e3^8cCfIoDDMI~wewuCXMY9^Y_`9s;lq<w8fd@e19D}X0|KJS}hAPVeYU|Taq6$g +plm)N<oYP+IZa%48c?3UmlJj!~6{D6gcCAxOq+jr~XXT3g>c8#sMYEjNtWaKud?;~WLyf2wrbcAmLEH +=<lt9{Q#!5(3Y_0BEvwrDEAN|(dGZQWnh9h*^Qly&r@q~Toys1Z@O&GB{r*6jz!;hAq+6ad*bDA4!=u +xy9?gs9@2Sk_fnAUNnHPD?<q+B}Z31fa`nZE7V8<k>5j0n|Xn`Kq;>!MQ;_fO&#a7Hq)|TI9@a(0ww+ +L4@Tf>${_cGeL`^T%%%2t)TxjaJhMhq}&i4U79&W-SnpcTC351hk7<AIk)M%$b>c)J~*Oz_HA7a2{24 ++O>abjNJY%*kVH(M1Yt4-z@mn-0xm*Kw50dSN*<5#Hvti%|BDW$)&fisOa8m$*WxG7{=43@CCCEgBcV +nEnL04thhaE2^w3eHPKHWy{<^96JFGQtNY(Mtvfl0hQr`6bXZFSL=VJJ7Jp6n<yuJL7Uf)tjZQdT$M^ +a5n6%^An?Uel>3IQ`OxNvV)|KD`OR0?VkDb-MR+Lf?W{AudJ2<7b#+_<u%VM5D&cB{-EU}bL(F856XU +D)sg-_TfM8713M;#rclP006v^}ZtUhS;_BmUnmfYg68HG}x$e*1t%%A+0K_0qjIOqAv3smBwd137|!! +ku&pF^apheXg_#6)_-g3>uazYx&3;1S71@;GH&;qt|YPAHBM<#r}bLcwa%9Xe=UvPYxb(yi<kHOk!bI +fgqJkY6k=pA4_MjpEy^BV?YF!^dDd=Rmy=4MPj}Pw$SP|$vl3jWiSYDps-EXe!e{uzdaUQXN6`;{47X +uRqyo`v+Vr7Y<L&wB*?;m!vM8ZzV3Uv_t@j;@&pjU<7cS<>VB!_aJD5@&V8Bd8;`*wFl!F@A5I?H}); +Ndd@G--375$#zpF}a2pX?`~K0ai+Xbi5|B-xiy*|xg^=0`*mp3{wJ^BM)&La_lR%=@SdGy}|g&Y!~wJ +DlCUD`MYM-HC#-dGb1fgFm|r3Nbq%!N6ooYf~M^vRHN;-CBfCygg;Tj9s3|%Y^YI%X%Y_4Ug=XeN8eE +b&rB)bGFsT3|c{2*=+R@bUpLBeh(d<IBx<210SI>NNx<-{jF>v!AWR3PNJW1G_mgUcujm3V8GnFBOpw +dm(_|tM9da^C{%Z5L!OLA?P0$P$~*HnSu)NhPF-xtym*Q@@?=9VJHP2rp4by1>&2KP7}<KYS`^Fs7Hp +rps1S>BQMp5Q<<auz@>syGrorFBV>WVH=f<9p8SNG(DA;n*7|~I~O~}|-4{vS~UBt&DJaLfqDp@Z=o) +4Twev?uCqWc~1$x~+>_57?^M;(i@e*ok6nti~Mzt`-0CT3smqDJrVl{Nz5#Zi5Mg&hOaW4|{Tdw;_Gd +vi;wB5JweBZ`Ffp=s|!xX+zyHl1ewCOScz+8U4YIe5BgT(iG0GM^*1^ejO#-~NwEoiry~{y<PO&4B2| +I3r;b^|q%8m|}imdr`wtdnt5L3{Ftj>2s8xQW8qq-JVIiSaZinFiepkU~oqepm4VZPqYWVEQ|LbVJ-e +xEs72LtShqYc<VVSvW+}<=!BLXpytvp!w@LWk>muB<*%r`uG~*(D&+#|f+<xi3p{thrZt*XK9C>8HFD +HK2q~{LKKN0$S~p_8swpf)9_x88ZaR-eY`7sKN{+B4QYdwjQ{gu0oZxfR<)CFd<-?3vgprJYBPIjRq+ +W0IrY=dQ>38j@-EGP)$Jx<0K@D^_uGzPB#bbdEJNyy16e&uJWCK^oqCjK{>3L@W!5c(JM0%<t6HX2cd +Hgtwce&#niO-0xQ7F21L9^b}h($kC<v@(MkWM%uG8BIXSD&nQWCUzFfF8rDsL6y&O@GdYLYmmEU^>7l +y=rJb8(#fp2+v~>B4R3P!{9^Vq5(VLN*Tr~F>XAkm$?l!2$8Et+A9BrHAKL)XmMTSDbo_*<N8HEgl>m +RXNrGNt`Uau5%(rv@I9D_x+_sGLT?ROz^>azxt%Zx?}1H*!rF0$<&*~#Fr%Jt$32*PS7oc`jA<32h=c +KT7|~>Dv&)}u*-e$5lnKPe<G49^+LUo-XFQ;nPz2wB;zY9rnMG)yMFW)LxCA96-{SGa3XOTPvZKV6Fl +<WQJ7VpgW$9XSdUiDphlEs+7{A`_?K%41hB!F|(FIrr!3$xHQ4JIzm={BT&Fg9|zKH<}E3Kk~iptNxL +=|SWkhCi$Kr%=a_D<C}(<WjT$iJrQXbEORmn*oTn9{v5n4~o=84L>6fR!QBXqNu7be*I*fGS66Y6?9? +Vv0u=3k08&4^z=nxZv_Q^Xk<sg{d%p2n`ereP#KKdi{Vw+@P?KizW01dnN!!RFwE2%vSw7Fibo;>4K= +8$3i>ncS^8i7*s!VF1x5m2;fB|On*_5W{R$qaPzOlU>=Ee;m|06vSt0}@R*+vi6Phz(CQ74$D%$Ua+L +;$PlAtL%4oghCA5*B5TUmpO*xF%vmf-r<%dDb-ePva+orBw`<xtY6u4p}?RhnB(>KV}33fA;Z3cyLnM +AduT^t8}N+F=xQ`D)HYtHKbXj^p4JB#VlWB4x}KSPOdxdp^!%rg%;G`$qA9$K?SDK66da*Kge^5f_{1 +d_@^aoKr<ZhtSTUdQf=11_p-k5weERMMe5*Id9S^Kw|!leE(vOPE?uMj1-%pFP=!F~i8JAUXqdc2gOS +3kbLDsNviCz(tek`6nAZ;o<vFVobg;2yY%SO}NDDlBbM<{bYm<rtrW(FSt(YJ0eZa3EbIFWDG~e4lL1 +CE^|bVwUrVS>Pb-Pr@Ny2D@s*4%pW9OS+T)XsYfO<#QyqWLK^)%n+B2YN_Wzv?wp(qnAB_2H6@OdGs_ +2fY<5ZXz?wROT>@Yv8_$0dlb6hz-^ORCePrtqC3H@&2)B=(B3N7jAsPLMfOtC1eg}Fzl~%`CFTptH35 +m1$^IV2Mn^&EcOp<AqSDwB16s7u%;V<+-em&m_`G!0W^tf7}h_H8y&8B`Uwjzj7@!3wd*vH{714PLvq +FQpFhNwrL%)p_fjByQg80oxiEM6Scb-&M!j-4ABqw&eEGm${+FTF*3-_Q;xK?AJvJ9Yiv+i!fJ=h&CB +CC<SJUn1y>9bj(wG6=6Va;KNf2$trj+}!hF{Bljfj5O(797JigRR}~@iTTxY?Rd-R4Eg-zYG(t<>wc! +G^o4yGA|$4lRs7E|!IisX$mkau?P}!?2_H4y5cu9n7$~n|P{(F)1Gb$HM1(i2tHKV~y#bp98QX^8V%g +f}t8s+vJyf()VqbN<;VVn5C`?3VWn`r!&*_ttnBq5zN2I*|0`oQRWq>sX6Da8~Tz<3*_lD!i)$>pP_~ +K8WeIAWp2($=n*X%h!?yZrddi_{w2gPibS;)zSjO;c$U9<PT7uM|k+UxrsnXC1^LG;Ag89Wu?tCmm-x +D7ng0b09}(pIa!F?}Y32%3j%f}X1OqI~bE?TT*Sx+0j${3aQk62G`SDjH16NfGqCxOm3?f$;>~g+}|7 +S+(CTI0#FzPmok|D|Rfm%evuW*C9Fr#R4R2_joZEHRk9D&+UTFHice38xKFf?dNm(qyMqqr!dF)v;+r +kPUJ>_x!QV+`)(^|!pWdWWhKK4@omD$SVS@FymzXg;^0#yv-yZrZbdscMsxAU@jA%XmA@__3+h0>jqX +@xnaqS~)f=5eUsk-Ntl`S+MmF_`hE9<G+!j-<_U7~6sovYYwD!wJ*98QaRlSD^=B_1J@p8=BpmLFg1G +kc^69cd)SA<T))DYYN>z4r9SaX+lOu8+^YA6-mv-C!+OJQAmXpD*t+U>JHuqzxh5#)~d%^kb|266kP2 +#8-syW!M-I{s?12+Bs=kEE(ZNF4T`79GxwIz(HxhRBSO-7HWhsHmm8-|;BxIH?+fQ{DbrWtD35f!Mmy +*HRv~e$^Ng>S~eYDLG5+?%MY6*}g(N6~wF*K52z8GQrPW5e!!X!Ad-~2<RnIMi>16gvTurLhg#P@#Gc +Sr*dh})o@6Gh|WV0$fa7(rBth21JLD7m((k0LH!&xe7C`kAE4mCKJ59HyoMrH&eWf%9;^&6|MgARJDs +HBRZ?3ld|27jL8%m1|MmMPfT9XyHano`wX~uQVFUMM4fCV(hD<#!Q=RZjoX|_DCLZmxHA8d4j?>lMC6 +-;o4|A~rQGs$eCC#rA7X!dRIM-;#9*{{wJe+yfsm=VJ%6j@#k$ss#55#&NeU?kq!gL&%`5@nD8$pyFy +GzB)eTnjvxa7vcRaYHOVs(d;$kMU=sKx|}ne{_yvCxOft(9%2UPW-6_&A=y{ZL1sW<fZ+=GBvHBJ1W} +$NqR`j+<&{_;iHb`cFsOt^eGsZ+p8cK}`40&J7E4!W4{DI@nXw!0v;L?PF<QUb>e;##zG-&5n32^tA0 +1FDv;@GWSIY?nt_!1gp&pcjk-9?nq)M3ND*8-3W!#mwQ~0K*<DHwjW8Ulnj$6GghV9bY7(K2w9`}>)b +}$5+j8GuO-)Q%Vkryd|6j3oov&+vy&bjI!VET_0jqHJc#GRm)YcV!H~WOXca;Exd)@Q$;qkh{hZqIvR +??~g!aLzSL0-wME6b<%YF_c|LH|fyA7CD)O*=ba$OwVWOPgXsz>tgQ8(^DsbBy-s5dHcgH8@$(<^!&E +dm&`sc9pQxJ{$5x~ZM$HwD=6e6oK<&xik4drtfyPoX0aA)f9e!qe91#5Jp(KKu9#9g$DQ?BkDF{sQDa +dG0oZ{#oaw*w~7>IK6d*Q_OsHCp>!H!%XG;6OgH8tx1s;mk-!~eT16&;RdIXGzfJ1=`C1O>aRae{{(+ +V3w}18jP0V6$#n8ORe190bn?O}{ii9&BY0sA(g1pVk|=&Z_0cf4G?fQl%z3*kcHny+2JDVMEFQt}8=% +#@E+3?zZSPBW%T_6M{lRE?mEEW{{6Xzaadf)`g#&~?EvsGYZ*+6-9&r2=I*ts-YM!<1qi28$H18h5O! +WZYyN4*krx1^HKs^WaL<Awj_jm5QASwLrVc~58brMS9GxQ8zed_rt&=?uQH#a|eE7H2kXI>*}M-Nh9i +g|jXBsdPZCf&G;Jn&6=4?VLmQ!JLiSH1qZevx1~*79HWyjt=p<>dfmza?eWuQEAAi<x#_bo0Nx*;Dbf +Y{b69<BXvCrfBr}dn9$m624r%w^ROTl*NI2BvPTB0h_$&M@r!NGC+L6s*ApodUDntXo=#-N@7nd6mqv +AnMmyjzas--?q{*?<iV;p7iwygUpU6d$AXr}@Sh6*Y4D#8|H*o{00fhySP2|{SMN6~O#hOB6Zrk8z^! +nDvVeI*KyL`@4S~HOxHkm&h9KVv&_CiSMmV)mF?40O$1{r*$az=$z$x+M9gMT;1Q^72k-lCz*-OfRG! +l%EWtpayK28G<!&B=!f_nPQRx`8Wo1omp?Sp$xPQt@Dxt)r{Bj$9<?u8QPfVSLhDmQFivIMPW2noL*W +R9(C29V(sm&K`up!887dvd(>pFhS-<;ZUCBWI%6ll6Pv^5(#U*~<2<vmA|2AT>|))*cmSkBNn^HS3J7 +6t3AJ;gnq?EEVn*(bt2ejDs$IMR~Gv;aZ>4nCY13fv~5rT%gl)Y-_->MO|-{>$cH#M9eO%Br-B0wM;O +@GO56U6FdRT<S#r?0g%5k;2yBI^^GFOj@FVc7&Ty4py*G9NY8pD14`Z?D)dAde<zTOn={DEP2EN|+n` +VafOtG1LJZu(?hwO5eKgIb^4UCkM7JoUJv@!{xqJ9e9lIisN+j8#C>+LjP~gsu?vUEoA!Ov6f8FUM5& +P;q?9Mnv0-xX<6KeFFvrJ?`F;J&=BG_W!hi<=KONA|mS!yQs)2pxln#j05o&hZ}wr2sdx6g!sIhL`CP +nzw{#|59G;y|iC{tGJngWf}a)9X9SscC-JJ0lFFVEUG++3T}moCo7wM7Suiq@$?~EeceZY9(ebgqi;P +$1_%D{Kvs8vC-wXDN)&<6C8eg5TxS)q?m!{vCjs=0l5uE!xTJ(?I?fG;s)u5Ms1e38>@f-(Tzik{G^@ +Q3kQg0KKgpf(otF&$<wcL`TfuAxiE&rXV6FfZX}^eucpH*D<~_~@<FV70JUJ^$MmvususOB=Xv}a(Qr +2Hs#=2ll+vv&qdvf}w~M$?-dj+dtWvcco;*liSBs^j9tJM7V3WSW*ejJee`}2G`7RE6rNFahI1z<**9 +fg*$z@7~g;f}E!2jHZK?*S(SsV;!`%k=VR=~!s*on2_1)b6QjyE-)=zQvoU6$D?YcMq*>%CgDbWRGCs +}(@E&Ooeqct)i?=>FM_qI{rMw881y@;bLG#?N+ndJ|vimpJuC6#qTY*&y8d{Z%g_k?aa20?bxl%(+ci +r|}Vbbq8!g%jL))+p@(B8}M;oV=joW0M1DG&*=PYj5>r{><^YYvLZ82#cl;0V{P$MtVEc4jUv582Ef6 +?M)3)KJ$3`hL57^&*#sOCpE+ajP;s&&{BU-gFVb^c;3+pS(}Yo#x5h)G05z@Nj03r5rzEy28N$tm3)2 +D7Y`!`fLXgc~QrL0q2=-R`te`f%u-$oPif0~&q&7(s5_=bx?d%GXUMMjt;1qID?U=GylaQH)1^g`hEL +F@=kxW?#B}3vULz)&&RzH;NM^o|Pg}7HB@HDqOYEyv;6Vj=~N7|{(@ozVKz<LvIZns)?g9SoHdkw??M +bot?fpgGw9xMk_(cyt5oWk*X237FF5w#zPDXsOEv+cgcBjnLf27y3{P&i3JvG5Asv}Nmo>T0<!R3>G6 +0{QK{V8OO*>W)YnpVK-Q3nDtz%KPq~0$f&e|43`~i22|H5CJwMQ*28&?jM_ZRqU~he@vb@izYlFn08? +F^w1sjF^-*o<MuK4fv5$CQ{ujuc{O!R>&SL@>X;(Cn0WKlX_={BCjIPl0BfoyM&u*fCK2y|Pu%2T4m# +`?e0>If{<6U<#sX-IM=<4KB7mJK59O~(3Cja-!nnaX*wEZjDXhgTm@`wK0R0%wcwt7xA38DTm}n0tzq +${?1ob_v2ds#|^9s>@3=2FUU2ZZ2QWQYM?Y6*7U+@Y+rr;_@Sw(=U4dA2TTTDU(R7)NZm50^s`G0JRL +<p@?A5%vY25rT|aDhaNRP^eh=p;5U@d`iYsT9dHA_Ety*NJV!#ey`)B7FpmBqyDc;h8+eBD$4HKIA-N +5t(9_loEwnh$|M->V+Ry$Fs+v1g4vPbS-P2D*N1&O`R`^RFK4gQ2_l3|H2=1kZQcbN!sCqu@8F?j+_W +1wD?pssaua7MupGu=$Hd53{Dvab-@(+>IrF1m`-_0+`p3opEu55v4cf0TO;s;3VqOI?DVeav9SVkr*7 +=5*64Ywk-7u-<k{$9pIQ*B1#PJQW?J4x&Q}PJA&OU4b)%HB2~~*maEjPjO=P&pvq61l7)<B^t0HNDSR +;DcAVS0PQ3FXp!if|wf=}rGeT&vCyQ{bLYhLks-$sx8h_kcu3o7T1F=~e#1Vz?LXCK9O8n5=-U0x5^+ +AQJz)RY(s#JfD`(mr)VTvy8*g<===)Km7Ih$x}S3qZw%Z_Z_A>nYu0W?e`GB9w#rL;XrknC0&lzVcP# +Y94tdki6VV-LXIrmUYwcc2`&OvYe-1(o;Q(bD(N~iK@S-{A-ks+>VCRWIcL|6!h02Q&%++vG5N~zTn; +_$q$q#1*O}(mXkxYl&_reU0Flh;@Hx)Ma_Xb8@}=4Ng|`TEvc+_-grNClyxE1+?4&TuEC6|&_61+94x +63dx<M|xQ?ny`IkukJ|pf9jP{si-a)ZiA$xTs16ocDLOX-7OLO%CNtb1P8v+PgtF9Gb&_F-}y#LkU4f +crz|NXCy29RGUGg21vd{-M!`Xi03`Z1F~Zl8Pys(vH{Ge)5tG>Fkga`MWpclsn{8|S!ZY1I%v!FrjB9 +XmJGO_e$&OOHoz%BS~vCa#|ql)hxyZLGZ8rBhA%ETA45Q;N9Q-43ByOfj=C8xf|Y%<THJ)>szS@LNEV +!ad~Y7B_uI<pET54y8rwdA}2<Jc?5-_d9*&%E%fPEOkkV+X@azk!x0u=5xA$Z9bPenUtH;iZ>1Fsozy +*61C(TYd4%JBY*jkB7I_A<f1w~^Fyl(;~HjCh689djO#%Tf1P#Riv>XJg*5=|8!O7-y0qF%Z)U{^)pO +Q~wFz+EC7SA4)8(u<Ho9y&tYaV-QT&eK8Z1nlKDOv=+z1Xpk-QfZ0lJtvJ$NQ02c78fi!DH+5(J-iAg +{c1W?eDxfFzxvBd0`Bpjw}uaXbuVcNVu4CkvlWBCrV(ha+z%^!1+qfV5h<3ebOOk26q+_B9{Js+|C#C +n2R*GX!w!)BA&tiepk9BgB)(3AQJ4I`HvECC?J<HTsaF?TBzvxgEzgf=Zi?q~b#&dP2i;MmKSwX9^vm +(P%^PYBFmR!2;@l&}i{Uh0TQ)?q|qZ7#kxRj-T6vkJN!UJob>F$T&SHN=*r-6uzWsypO9-=9UJ5vPjD +iW-#Te#3gh3iuRL8%PHb4?Au6L$OI?S2t_{oMbq!vBIbqLv>GDY6v@Tsfr8X`tP%$$R}<p}u`%y}&S> +je4501`FfrOk@CGoYrS0&B@p_H-EEnVl2or{`9H;Ft2wnOXcU`w@r=NWCy6o=u3p^v{6Z9j7o1%J6zn +<-(>7h*P9ts48gn;%cWG@}3!qtD;hW4}|RGHJg!%oBq=h*##9W1M3gcskm{)LI^Lf3$T-b%1)Mg;-xE +tYV0BUzU6d-{qQL?RBOVDzc(ueR26jm?mM<oDQ=P($r<gG}>PXR+X`^}bq?(_~D-4xDr;^MSAQd)Z9% +8+Jf_z~ANzZroy<V!K!s>@Z~q^96Ht?N6#32fZ)Dl%<t+)d2lrz6E=loc2a#Tf?}6eVX@8^2FtMJRMV +V|Ia<yjL@0S*f({359$KxLX$jjd=I_WTsSWfs$|GOP;>N}cR7}TuIQCwRS={jN=C8YqiBn+Yj9=1H=h +G1HuJe1;g12IA$e~lu3zDRVp5LAHpltV$@5$L#4je}+u|7s8gr{$<do<ZRjqbmyl;{J9iIo0H)#j$V> +>$VrUgV`+N^8#XO=%7^n<>ND~ILnOxA2ZP~y2gjVa~Dx}g}awZBkbvOhE#`-AM4olCRtc_4Hijdk#gN +WwE~+WI&Z?1)ti)6Sf=@2uxz=<e>fD*HWA{FmL_^fGZoT%rUWA=kUP$*lgW1RbdTkoiY^h+IA^=fcf& +R%!cAo<~R@dLvFQ!2fK70T;@8v`~HqoC122t!hlExv%QCfY2ivsc-A%USx~Hc!;AwbuE;753&InHb$` +eyXX^rotE-+Jy|rGK%(Gb|LC{t-UJ)xsZ0ohlh5*SES<*`+mFYYGjcPc+NCOTNvVorvx!<h@uaozNM$ +wJeqhfmS^+tjpn=qZGvm+iy_7CX#gK-HX@x!6N7=wpt(SBr;ECvlN`#u)<+AtV>1gue*K8yu?7@iGj9 +-qCVfbZczZ{B}L*SzS1yD-^1QY-O00;o{RI^aYmPd3F0RRBF0RR9N0001RX>c!Jc4cm4Z*nhoWo~3|a +xQdubWKn}a>F1Dyz>fXdS?u_lk~tT59k|+Q5~ij5x{No`$~8^Q!cQ((rSgv*@sfC)oN0sxVq&IS4^#7 +w02P1sFPSQVsV>ef{PZ?;n`xi8KzEZP#J5}!iUN%lcO3sEXdX~p?lln+*M5tT7>MpFHq}2m{H0%`H|v +FCIAm!Vv;mny5#9Ti><ENEni3VAo%UpkXCCAjT0I2tj|39qKwD|*FW!B<X3j39<{W=SrmBeP+MheII5 +(xKxyGKupc=NlNx4<*_FF19-6gOs-{i_pB#6;ceIyCn~glp%<4k^72`Mj`-=jtym|sncoY@do*QDM4A +ay%s^Q71CL|he$N#hN12;$udTOssa;#raO9KQH000080P|F{P+It+@vHy<04@Ol03-ka0B~t=FJE?LZ +e(wAFJob2Xk}w>Zgg^QY%gD5X>MtBUtcb8d2NqD3c@fDMfW+ykOKsD;Z9JB3qj9NhB&pMZ6-`oi?=tm +DY)qNzxRhfTI&jJOBMSh+=CkeOM;tEBn?_JN<FY6a0v+G2NJJJBRqheyS8*Ems%bZ^z2{YaiAFTg=m! +4TGcg<8B1Nm3G`K*g*!@QKO-8@^$Vd)&W^pX?F`Fn#&43Cqea-6{lOfyQojLa5)6T4UG@J=G4P2YZ5x +*b6|wx$Z@W2GUr<W}1QY-O00;o{RI^Y@n|Y@K0ssIH1pojb0001RX>c!Jc4cm4Z*nhVVPj}zV{dMBa& +K%eUt?`#E^v8;Q$cRqFc7@!6|8!p07JPO&>>BV=8zgi<D3b?TFXQwk|C)C?d!W-lCs<+jV>~GXJ>~qv +YM=MfsJMulpd<;=*+~dvaNUq-5bYL0yub@!3X~u(H`XC1P7yoGh-`zX#*@{H?en<de^D-0RbJ#_^mnw +qWEYiy~p$7cp==C=A;{}bbg_|cEdb@4nJZMK~)b&<{`{hWFvU9tr$Lurp4YpJj2LyyS@GT<?&lXkdxG +XT-+5C+lSylPIsx!n>CT_`%=$yO<q4h5FWf&MwjKq%kC{3IYHvHn8ce6BU=OnIrwhxX4v4poRXvZ1Fq +W{jfE4;PWhk?bS9dlF|NmDCF=H}$XUAWWM&<BeG0*DudeD%(fBsR|ARS$lFU_XT|up~B)G#^oTjOjQ< +$hPHc_;Z;WE}NJ9VS+aftf7p50hSBSzcRd;HuUf8MiTSa81?rjksooAv%oL$AC&%bBFoJXXlg5*?mV( +OK%+;ESk}DWBPQ`3smV=0`OMqk^|ad&pwEMFO%A+qAaD%PcJWsMYA@|D3j7eAopVFN>{!MHbKly7c=A +<wB9e<BvA0-LQ0$FAMw5ywHYx4;84cj{hU?MdrI8&yG@-PQ~=-WA8uZfME3S3bHdHU8rYUUdO0#wGdi +PAO!0=Rtph>6QWMDlwwo;1yD-^1QY-O00;o{RI^Y=X&48Q1pojN6951s0001RX>c!Jc4cm4Z*nhVVPj +}zV{dMBa&K%eVPs)&bY*fbaCx;@QE%He5PtWsARG*n3qwfIJr(dnm!{o-Z747oeH3WvY!jhHjilnZ!~ +Xm3NQn|9I_VxJAc#aBk9YTdcRX608l^3>mj=v2_>X;CmsTkm2EIwLTP*fkomeB9ym*4TQaac0R}03Po +L9WDpbhKff7xz7zxQL^vb<Ea)k;dxz0f@`k8mG`dpR2IMLvkqI<anYFC?5bZ<?_dDR;bl{D@Ou{nTQy +C?z*0+MzQi8=1Cxw_x~)`iV<XaVzRWaRPf(m0=t9_ww_X?Q+eQA0B>t*gh=(Svctm_N*vGEo@O_ZiF5 +Ka=#8=&WFt(s)or}0hS-kW~<xrOb9{Y%$_VXpat6Z4fJH<2(1>ziZZnm-%045nasc8`d~(%ZywL?qYH +=Iv&ArGiSVtRr>i_fz$<e~R#7xMAU6Ys*@}rh>+m&<jA9@S_@Q`l@C_A&_k{kjn<zRTQ<`PVPY(#>YL +SZgo+H!sh1O1Bpruoa#s&<G-Xv5G<cLjPM^qTSug6diuR+afAfUng%N*xemxJqTuzP3*XqU@nc>fdCF +y5=k*%t)EB0AjwX2xFW6DEeLnN_$e5Q4%61@Mf(VAj`enTM96PXFdrnMT#dEj$CO0V-1Eh3Y(MR`BE+ +qG|lYdfcja$xo4iLHu2Wi`AESAQ(^;!S>A*@H|MkZL;qFD$)ecB{aTv=AgCG-?I^67K!yKGf2(VXt1r +Wy^*_C$U!!X=`l>K8CBH6S1PJUqx7KXhT%l{$dCZcvC~1us|wSRSFY6W8CF}Z8YHTXZSJGriRNvC)fK +W?5LI0XA{UoMCmJF-GKWki2wtm6E-8Y)z9KCqAtGHv8ckvqSMwpWk}><prGaZ%H?5~*cK=M9x~%I!-( +A>=KjPstq#}{LH8d3RDj$5=9<h9$g_Ml)w{1{BN)k3MpYhLo>s2<<#~_$V;4IRWRZI%EDUNQOG*Wz +B4gz*nJ=%uP?(XU@#`!vXeL*E%VIkIXO|V16&N0;x3Y^59B1h;sYm@U2z!*qB-(kUb23EmO*aX84u5m +(7uiieoXD?_2kBK+v0JyVQ+7Ln%i^3z5+Y7$dV&}0s`IQChTF$4?`(;94S?cR67B$6G~hZ&+sFv*a6h +uMkEE78l!n3ggX&tu-6)~XVBpcz`dzL<m^{`5lC2#fu`KRm1mB|VdN15f<K|6LvT1hFcNNGVY)#xfsC +HlE40^JOa!x;CXetW(`Ql>Y&*oJR-nm5`Rj$6o>4+<7**c6YKJgK>Q>YvoiU~^6xb6yVQ`0XL_jf~Sl +%dO1f}j!WE4W0l?s6rgo)SX%Sb|jcf*xT*F@}EM+7{wX=VrP?)LTvEXf*HS8&xJfp`4`!cs%&=ufS>B +LogNc*U4Q8`6Nh%PJ^Ug)kzp$a7zHS1+w`yOMmJB|sYyW&++cc?kh|<`*++X5QZ31r2ffg1nZ%cXJjb +n~B7cJrtIBs}!@)V7&aqEf?LEJbO6nZ%sa>>Ffw@C3KAfbv}ac?u<o1PMGq>*9&yOv?r)uK(N@;!JW9 +FT}#7Z-8!8+{lzqIxTZ5Lt?2b2Cr<aIrq$ezIs3-Ym&dk#gesl-u7xT3%0!Zdg!+I0ZAQ)~=I2DF$6Z +Ae(yq~3rA>IzjBM`P$VVU1PJC~P-nZ8`aU0PJ1T)7Ql|p7G5|W-5UB}S4-zM_kUB|G+_v@gi6ugG;e{ +VFewb+S9;0Etl{oThL-Eka#Zh&!fH;VJTMRIXW{!HOpD%0fZF^0m^z18yC<%Q;Y({p@}p&xp?yuy--& +3jlBdG|>?#aBiiHGI};D)y*=HJ}<SM=c$bHVSzjoruH7E6uy7)P(9IyL-xosn=lb7yJuQO9KQH00008 +0P|F{P{v}sO)>!h03`ze03iSX0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gPBV`ybAaCx0k%Wi`(5WM> +<R-8ae`G80{^mT|-MLqP6Tzg5}7#rD3D-`A5yM{EtrAq4q2zF+6W}Ic2csn2{src#NKTr|eziy%S0Zh +|cY|xQ$`w<aKNNA0<>@0zaAb}16r4~`v2*%wt*!a+cHj0dQGW4a$cu5_6bAcu`miB?*#jB$bLRlFjJj +jTTX-hu(DAqy%AKnIgq&%XnS8&9h2XHw-nuxITwEgjl`Z)w2@?s*#Ie7)2(suY)4UHBF|L;LrA4mF(* +>db_{3mW~jDIa+-au6uXQ-+!7KV>h@@D7VJWU#xmV1TGP%oQUjI<=lqbncyqEF`=nnvn^n>5M<9Qqs# ++}!q;p~GZy`oAz(b}hd!Ke5DmlsMmZ8NbP!I)OR*v}g%fdT4!{0v6&MP)h>@6aWAK2mtd`vrvVWWD^n +r006fF001HY003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*6d4bS`jtosqFl12GJS_dJCq_FLGH7?H +|?s;c`bm$+PLE>0b%v~Q1lz0yOX2*?m6j{W)fAK~MJ0bLuW0V>BBx+YsL2w}*?a*DlCNCpoMv%vEheP +Sm5TKH{|F>+}zy|`s?+lXKb<neS9JQYk?#@xZeCa<N^BRH$g-h1Tpm2p?GNP&TT)s$ZG9b$rP#r5bx2 +oj0L_o$%rocGYx6VQ)htoEV}1cel;?6A3NA7{)VH|-viCvGnN)GD{NuUMK1sV^l{x;n8~ua~PS_Opj` +{;z2N(pM$K3oVp(lUo<5p#QtJn<O=Og*gUi1=Y(zw{Xz!Q1gR2dzCGCkXDWv;Sp*Ij{K)ZFLuD0h<Ro +aHXl$+0|XQR000O8^Hj4?mi}*T5D)+WMK=HdCIA2caA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJo_RbaH +QOY-MsTaCx;`ZFAc;68`RAfukp5s*z~N&iQ(taeJwg%y=$oI!W4o@VOd_ge25_I|8(=-rRq`-334bBq +b|tPcy0c0xYoa&o0;?2o654Ia@1LWnyv4;%rscLalSjs<Ku*Wy`W=jpXbBp0b+%yWvvF=pcZZBF8Z-D +_1K~tn6*g?Nt(Iyh!8P-Yb#wgJoUjjOVe)qDF~KGV`*EYsu4C@wxi#K#!_K70vH~L|I4e%2L%$qMDkw +Gp}OFuM5cwDU`V9uSKE^fhdU+;LeQ07gzYeyp+5aaVCCi2Yj**>Vty=<cinq(y|w=xOzv=!uh<2b3UI +>4i0|&cnw2p9wlX7iHwJJ@Jkrp{Bm*p?cwe7$;IT`@c0<+@%F0;+}->_SK+_#(mXp1Bm5fxy@Ql5wJ7 +FIEkgJ=xj10(19|^|k0py4F4{=g6H~xl%~$-9t$_1_iGsbVDv+3XWZ$uJ$v(clVrPH<`aC)yD)<W}h# +==v7B^~*%HB+2MYWzXkZ=t*%Q{}=yigP1%-@RL3H@EwWm8EQ1KWx6SS4#36Y1xn9$a%!Rl!32@aDzs) +Xcj%>n>k*m*?H(*S9E-B#WhFq_(TFP<5GQpn-DnD^FA>npeoW;`K64I8!B)9F)4W=E~%{Y_gP*HKYs- +x+qoDGD8<A_xW5DLe1x4D=W#f<y6nR{Jt!>xt?<sujJ+Dx`8LH8P#TpRIzI0JSkHy=@F4Lo3&JpX<l| +#8BTD^#$qMIiHv99dGu&xvfc%daPItJ-PT}~a|06SY~5(eryVacK6e>G0`4u42v1K=rtI|OY|75?>g? +pjL<{pDq_v!beWjgrn>s7XIuDafPFZK!Mh)M?EA5SF)IWZFhk8tE4iN!NUdBt#?)Zkn5e}eTT2uTp%o +=|nf3OUuDH%KI=ylsA%Z>%;=FMZmD<#Sz3_cXuhQ$k6W{pAyuEAAn*n5_h4?K;KV_5l_4A?W`zVk@4- +le&SaDuCrb_Xz|y>3VKcaKc_Tg4|ZH8>8s!H4XMd?E#B*%T^%WD5wRDJzT`Vq^*<h}On6TW}CPcjjZn +g9vV-P%2j7X%W~JhkpspK95eLQ>5`prR@AXY9|}NoNJMgepp<jEciBvel0~2-Z+}OouDT0K|3GJ36yE +38|gh~!Nu`$0Dn7iJ$F|+aF(Z_)KS@Cwc5A9bjQrr5P~;RYu%k{yHKu)BszYDI;en;rM#97wY#ExDCV +iCQGEC0a{ux4cu09#0-LHVVNJo+GAirU@ml5CalK6bc6#>mP-^MV{u-Tnvx7W-oW(01T(A&=<&<Igno +Ngdz|XU8)Y}+h&|sJ-W=lxH>z%}ka;DuB2I<f^N(_cc1-A9{FjdEe1T)N^7+QiW&csr$o<1=+Z={;l{ +2r_x;l~rBt7egj<f%cmxZi_RT|RF1Us=vTIXm?C-_F33WNyq0Y{*<8ehCAT$jn$`F!f(j8k$|TFN0t* +@w^6hibm<Igy9%gYmF8WNVj?<0aXIwX)y64k_lDrOaykK3VQ>I8`zL28h+3VYPF)|=h4vXUBc#HOuXU +U4lni8o0D6+q)%AYo8cbRrkYYP0Wv9&==<tTdwJ{4<&+=TKl$cOU6=Kcu!fmY$`{Ql46auYLolQ^1+B +n5eRWJ+U>=!v_me$^X5<ds*z9I`8tzQ%+hGjYZqbZG5QvS)YfOmSr~-vh>*PhNlOab&l-EVdAGZk8>} +Wer_UB1`>nQvM?}a3&4ZCi*ws%h_0SkI+*-5V*yM5SJ)_=k+>|lLAu7c}=BF<KhI#&VSo<Y*X2nqRrH +*<S126~Qc?KD1WGDy<eUb=*;L;Bq0b(2fYoewD6>yMgJZ1F$jt*V525luxX5Uzl_5(8I@E2pf4>-qr@ +UVlFnnxoNmTBtx^yG7}U9n1zJxbC#;sq5%nS>BQ7S19zr+t1OoBi_wV61&hC%CJjXoZ&*h@1Xi-WuwS +_sf5&Zl7JE#WdYcYvO9yc6ubDcOX)h$`*!Fv^wAL28(`~LI@1k9Y_X{TbMf@ZH+omt9>8ruj9#BmW0K +sok0G2~vXd{}7R;U#QMftzU0XY3mM-CaiPhFUs*_p`j$vh79Z6fCK7jiP;6Rp$I<bf1+Y*Z3GbYN@Bc +@;rM?J$-k2|CQ)t2EB3L*sG_h1oN^9B1cd$s1t9eY@FbQ5%<BrY&QKxJs_%GB{3Sy?W+A{6SEIF;5+r +_TNd^%xQuW#%ES3y_*YE{2zG54wg~0&6^-nzsToEMUU@_`D_^t>b&%g%2omr*;BxF7lkG0^nP=iP+B| +g0eVL4vB)p94KWK8b{gGUHHMsOL4}cFt#{Oh@^Dp1JtY0FB34V4GY@poQ#zQvmZFrYz6QaIrE?pyKrv +V9<{@Zwsts=UOLsop{w~!z(S;N6eloNa~&(t$aP9tY~W!9m3!BsA|*RysGDf~46+Ljv_b&38rcBS3<Y +O4U`!&{C{TovZbzWMgGPMw$mI$QZkPg(bSl8rj4}h5%ifpwaM?;R+XS7Gjs`@6P*{|fQgZ?v7<(_EDJ +)IM=q7<TZL-}HVXLF2h#TlEu|xAC&CZa-(Z+d4PUt*#Di~WpRR%qU=xJUIfO&w->>j0c_%rAblL$!x$ +m6_e7weovi`G)`d$4qf5sh?WLq`q8X!>*%NFY%1G#U)_!`Kf^y>hf^7rcPod)o?zn92#Nda<#%I$W_u +=-ZauE3yE#N8BrN9^rqSUJvd1vTdEy>s21Q-SN=q<VNfB*1^h2Q`ca@n9P6(q_q&z87?*>!dtLMaHXd +)oTl4A5I1oG09t{$x+Cl1h|eEhf4E?uA%s!O60{5%v&pF;28IwT<NdP96u5krp=x6<D&Y@Ao{7a-XD_ +<F8v$jYn#UV5Mwq&wX09j_4q<sfCL!a2s(JzO5p!AzAQwWXilG$J!3eP~tUyNyCO8eqw7Y0vT88l-OE +LUQp<F1pk0q=5ZWuNOzf!QaIu`}kD68PI3;6Amc_x+|wGY%!hPf97Yd{aM9Ix`&LyXLVdA<Ht2xU0%- +FtKoW~2kPc6iBKOM$f%2nd<E#;k_xOnS*z8PkH43JKWE274qCVEzP?<ByfV)1V%wJfm2qUj|!4nVo&f +#$C)3xSjOlq@4*Sism^)TpjtjkzwDf4T*_y&%x|bMHsJkC=Y|%e%dh0@28E|t<h@WioI>gmC_)$TOb$ +8SfVr879$`f#W6>K&>-p7wZOB42aFUCaa)5~4~({&?OqnUr?Czb{5E;nGU+KR?&W@;i?(w*#s|EeYcy +rH-;VYffOMJu+898YxY2t<k6@nOmp9AJ4$m*U#dbLID_RD^p1X*4WxKT}a)hbA4f<Xh$f}v-McJ&@u6 +#xm`Hf3@S7rCvF&$hZ(2}!YeI#ig?aK7e1T4Kp!##FgBBS^X053nPIRy%$7Maq5ss&SE6zmNls3hYt6 +;%MPJllC1m<<Io=y`x#bc0`Ga6l~@w^bTS^+d80C3y}`T%-2_JOV<1-`4=?GAAMrp%686$|4mA7~;&f +jkk7nzO=)#U*);AyzU4U{K4s{yA5ztjreN#61ctve(!?b&Tejk>*Wkn&+I*(z+?Y|wXfcM21>WX6|z{ +WSze}MDWDSmqNU!OS+h@w!u;jlAz3@XUDqhyq1Ef>&8>O*nxD32J7tS9-E2Ew-_rMcWxr)<dz=^ox=& +czfdn%Nxzgtqb_9ejACHc%a>(9dIJ95TT(H;V(i(-Go}6R1#~@bBnfPv1680<y(6cijavg}~Pz=;@v1 +&_b>HESy$Mic6_4`&#N!QfXCd`aa+!1w#>GYE(h!fefmM|S)^cJ0NS#C!$t!?YTb9tmVf7%CW;W2zpq +50?@>kVF*FKc45z^UKC!RBGi@W2dG!R#F`R(NWSg^!EZz1J9kb^9G+Wr0S4#jyso-G?g}M{zy94~Lku +Bl_e9RE%Q*$$^1FoR<*brc_JoRGXHZz%$T+>I-wZLrmU@3cEPk8ttbi%7b0LK50)5;Pqb834UU@&4}B +!#&A_KnA9I|)2DJ937JAxQQ>4TSrnZ%w-cDKzg#l736X=2Nbj_<Z%j#o2Mu4;W$&i$p5|}ZF~2`{itu +BV>PlBD(|ojN8;%&L@NmIDPw+rK=6Ez5zi(|Y|2oEx%g|N`vA{4oxKDMR=5#ma^c*<Q$=<Q2?zDdl|2 +i}AbbDtT-}<0`yr5|xO?It`O8x!oj-G0aE!z^M*48$Vu?xW2_7)vcbz0R}8nsXs*w!0cAAftbxSWmdc +7`we`s8Kw!fijlVn4;OXCpNL2w6JQ&EgXD^Hsp&>>=JrYSv3+jiQ^^&sMtcCYxkUN!sWiz;a46;z8%% +91pmim!|98fvn5BrqV$~hcxr87E-g_N<7Em>C}yyC0RYv=?*@q+2r;sg=T9c{ONBk?m-;-6N}x4RU=l +8lDuGF^|d|J*JvIqx;|~e?l`Z!lH1+?;7daa@GU&;^R?@^>B@kww4u*4M_RIutxAy307bNxI~~CJw8< ++6&i62*AMo+#MZ8z3KAmYJU0iJNKtY<r9NnwXAHR{s=(eGk;c@b7?Auxm`%S1mvKl+F7#CMXM-p*?M_ +~GVeYe!UTu77M!f4NjJu{TxX*s!#irOxnLx#Lbce0J$I#}ljK?zEk4m?@Bz#|0eMES1TZlWhmbBOVz0 +Up{Eh)b)sMcp<{zhNhX!syAv<!}0D%iDE_XL%$7^L+slbJpH{A~EU$`1=#x0Drym)An53PFK?QSEm^4 +avm2F_2_<34KI2`OdAhJ(-DW?a2@nzck9vUW(e`x&g>o^!+2ULm%X0xh%WZk$Nxbmj$W`pZYt_Yx8J? +&E|mRJ_yg80XD2UFWpw-ksRy1wA&#wE6ohqXI;_D_7;K!%RIjevjJlJgvo-?Dsjit(toD!`N`ih}ZA= +9}$!wD<o@E262OSkKLrLl_77SY!=qfFZRjCxWY{YU)fB5%&hT~7@MEi#tMn0@kecJsHg&jbVb}hhuyK +Y-&k={AM@*Rf=<LJt&mGD1`%syygJ=%a_$i-<0@wOnmw2qf*hR<d=Y9ZvTdO362ceB%T7yflr9s1akB +uG`8Qytk<RVg**0wYL!7D={~$9H@zGo+>-)!(y4?7K!qQAAa)Ze5_K>B<+8T;nAvTn|4rr0<}>Ze@GY +M=R%IwWc#iJWtH<R6jB3#ig;S@VgA>)YHxVk4e@5CUiOx!@6{<721k2(pvSSPl_#!LEs4QrtE$gPq6u +gZ`@GZQWuKnG8|3<^S!hGhk@<b^cmXHm6`Z$Zyi!%c6xF`(bt9wBMEjd;!dMmrD35Hl5y$x<5T<UcO# +?T%9G(IiM<gA{{v7<0|XQR000O8^Hj4?^U?kq`U3y}<p}@)CjbBdaA|NaUv_0~WN&gWV_{=xWn*t{ba +HQOFJ@_MWp{F6aByXEE^v9hR>5xLHW0o0D+bPCZ6KA4JqGY0O&g#<(G=YRd*~JdMU5=3DN-P*IR5*-p +=?=pg9VBL^&zpX;hQ&a-VEIY-;wcTy55IGKO7UspI;V>g|;e2dQ#R_O7EYI<<CL&J%^RAzOqj1hXvua +TrTtfPaPuZFouu{esDD@YI+*O>ChV8(!n4qF%!RXIHuOP9R*f38J9e%3{?$H!{MG35DqOnO07!NfB~6 +E+WN?dPa_t;u^tj5l|E6$_o>Ah&S2WR#4bhh&4@Fi7mNJ#5eO=!U@Bll&}Qm`e=|q`I=~>5!NDGdXJ# +-~b2|P<n+b_fL&W)xyNW{`87Qj#P}vhi)E?lgvRsozy@J;VZp<4+)EzUN^GVVwtxXNisOLzrRkc4riw +n<U5<b7FxuLQ&&ZM$jMYhd7RKK6(IQ2<h@~|jNC_vkDr&sIS$7tCW2)AEP@@^;SdHx+IAvjTRs^eMeJ +7~r9s&<14hI2P|DpYF6=#aIL)OZK|l#64VE@Vucp@>Av9@H@+A{B%(AibzLQOFvVWwwuWun*={C7y$T ++n?Y61t9AWk*xQ7K^XcRKVg8b9XR6zWpWbbW-yQEz@I|!VYDi2S$mG|LxM9+1jFo+n7n|S9m;DkaWfR +-8tEOQ*8x@zIgcnD#S5pJ5S6)U6<HF6c{vxUT9q?b3??GaC1@5dmA5JN@nN&6y^ckXIrOgZVYm6XfhU +3PG;jC~28|JYiA9?_d#94`zRS)uje(;l%<PyGi|Zz=mgPGeM7S<5z6+d&;LfG4#Jt%(SN4uLQ;xHr9X +9h;3dhTb8Q`Q#kzGW;ddG_?kl!@->86R-I6Ve?@h{Sh^!`JNJNnG@b%<gjX{1&fO^2t@dsobd>E*|l2 +YRe)Y>$rN;N4DaBgQC-;#S#bWh2kj%sg*ZG|la#Uo*XVxVkKp0-ejFvRbciYC(1Iyf{C*SvrtO-ov9> +VP}#@Y2jeR)?)8$gM1mxfN(*`Dujx9f0PA{t=h$L4)Rz${gy2(=QzN%_=`$$t5~o1^YwAgI?mE*p@Cc +LZC=TWCjSdx5qG?!^6fPP!lWU%ENiw{H4^3Pf<AFd5`9%~1^W9qraWpppIlijrzIqhZ#E)!3NUKi&FO +;#2(t4*F4|-9jrDx-xpZ4@*V9f`UE0dSS=Vco)Ma?#;T(>@e_RXF=tIDwTFII9JHEM^(e-=o8I3nH$; +qICIP+&z4VTxvzeRZ#e?=V3@R_z-`k0j-4{oViehFXP@|xfs4Z&Jdoqtfov5EP&iTo7saqQ94@4r0bi +pcNT)i)UVM+O?$4sKt(w=6D|{-4tR4Nyx11QY-O00;o{RI^Z&C2d}>1pol%4*&or0001RX>c!Jc4cm4 +Z*nhVVPj}zV{dMBa&K%eXk~SBX>)XGV{<NWd6idNZ`(E$e)q57R2Y>#Te4%P#f;^lThpaL({8PUVkio +MmZ+EwMQS7!$1U>TcSw=4r6f+{2U(YM{SMFhNLrLaYLsF|c!p(<*3X(2q}R)(C=e+yWl^OmQ^<YIg)F +enuqGo^VyQ^yHqqamvUxJLyrzF1Sq~Xu8uxn3x96wHoAV_)K|vpnP(MTc73%+s`e%#&`J(>`{dK+!dc +9soazt)QDoKKKO=M^djI7m@_kxqbqKDvTp23*?6S8p%Nu*qC!hsc%L|2m6Lcbyxign@T6D^W8!I^QSo +oT1FLm>3fMMmYa08x9VtCEp$Fc^T*lwqaNA6StyQc0>bO+&HzMp9$7ju_l-u;i3qhKjI!1ddcGxbi8P +Ul0V%{l_{EjIJ@G8JgbQczsldY(7*3469Vqm3gn%1nQiwNn-?O-zudG!nKNe&D$l&dGClSR7!D8Gm;@ +K1j3Aojd!IGqgMn?r?W<Rt#!GGV-RI3qD1GBkeBgV7c7=}`toQtf2JUBD){&~I*#UOvnG<D4MCictTC +g7DKw)g)ohCt-nJqV*O1@Q9IZtq;fZC@y%@P#J)ce|XpDl7dlo)vs9NxR2YyxBg<E5%4%Xnpids0Epq +w7sP`yT&Zy}qFf4K+k`wz?01psU!IQww%?ls`K!CPo7p0X+<ND1hb&+S5L(dgGdMK3wcw-5o=?Jzc2) +g{i*YFihaQ7G>SaiKd_Kmc4Lkz2W@$W71(5dCqx0}huZ+dhm}jcewCg|0NBQ3viuaR(L6ySj^30$wHZ +0oT%DM`_Sfa_iQ8OzIYKA^G;(#j>wS^ZS*dk^n6-!)MU}_~96T1g^xv;$Ew_dpJ1Ay{TrJeBk6Y-u`K +d9kwQm1K*d;O0-uARK6~^S!9^Ik*d%XCf^p8qLH?`c?G^n)YyA+x9qC!myE+Qa6SWz9_4qSYJ=$pdP6 +W_SNuz0UI$;>Me~WBv{|E}o)Gd?C)0sr5I^_Bp}G6Ac=2`6w%0iG(SLO;(_stu`2l6ypyO0<Ed{eCg0 +fn{th>`^PNk{&X>IqF&EoN*4~H<VheNRTUqzHwhP8k(pn#N{ac+3IB$A5ko)RYs<y0q$EADW3wb?7I? +HG$8gulbnN<Dp<JW!{dlfj({)RbUxr~o6>L3`0)eftFB)kVonnQ9_=RcQg_Pl5P>o7}iH(Dqe?8j>mK +<yxZ^jC4yi-2|-3{vM7^k>6pZ&qYRaO0t7RerqSUbTh~=4$m5xNx0dLP!3_D6;7{^;MVxqTens!<@W| +_?+2N!oBj9%HlIgF(UDaG?gnVmikYUxkT6z);}s+Imc-HF8wfTRHxQ>1C=(F4;Xb`K(b!#uHY^Ftvk6 +2&BpJCTOu*Zy5Z@_d*ak%S_~KKXiB!d($tpfuF8_{A3z)h3=G8y@sj!>2s=FUc!XQo(E7($`B<4hKh` +fqnPHK?~78~`Lt26lXB|ZauqqHoa&3=1nU0iS*xHD<?G>jHh*O>q+NAvMoMy(p!)nl+pR@(&DBCeQDV +8!T4*?#!Zted0BWCWL)xy;Sw#R$#JyV+zqLUZ$OJ~@WVbYd>>cs!X}?c1Md$a`nD`4BZT$bWB5Z`us0 +E<3k23SO_>jC<NZL)pU<@|WF+{24bk?ixf-FSgGPg8ftRTaxiMedy5n0W*D7xW4L2JZjp}TlXZff1V1 +vM7JA>#&_a<w^*{#X@|GRlC(bUm=R*OFeaC_Irrhw6yRLtn7~FK?p&mml&}R&@TJMIz&GJ!WW~qU^-j +>!i4ACc2aQ%-JFOh5z2-!zgweb{Yc^gA%IhN{ijipxI5G^;?8Rg<Xd!TqiQiB5<9;;z9f7&y<Xw}87| +g<^w9GAZ{y1Epk)zAPzV(zgI7nQ3eeC?0>h=ByP)h>@6aWAK2mtd`vrxCly;>Lv006Ta001Qb003}la +4%nWWo~3|axY_HV`yb#Z*FvQZ)`7fWpZg@Y-xIBE^v9ZSzB-9wiSM#U%|>KEV+uBjg6o&Fb~OI+I{FI +XpGH+VT>t>@^CGYib&1uB*=g7IlM^J#dff02Zl!$$&crLGjCeiX_8aLzP;LT`xlq~>64PeKmS(qe6y) +K*^rjE+3vtZDLdj;8}-oA;&HK_b?n!kDXlW4yS~tU$CN+w8g6|r6cdVTeqe8Sq1^>pA)A(Jzwuu;H$V +M{saC?~6wr&u8oo9Atatj<vdv~wvWo2TZ?ASGD`d%b`AIVs=gIYkz^7wyuW(#uu+8p@^Nb1e5K&cd9w +o^N6wn>3DbVsJm1GVx>UH&x2!V>4Dn))~9j7(_jdiiiKe0jsl)=J#%D!pgFsrMSI6>iq=QNk)Y5PG6= +B~FS*wx*h(UNtFY}e!%`)!%qmTU$DUKwD*6+!F~8b4-bJKO^5qh;(^Eu_#)=<PdND;5Ca=Zt*#@#gI{ +`R=>F5(P>odJp*UQvv|N;~9B>-ViD36R8<JaPdI6o?+O}p27M2?*(~JN-54Y+0z3f6cnyBIWbMNByA@ +TZ1ptP8To-KUeLNefecwC0j^hY;p+bTf);y*ymhk9Dqgc=N86Tl*=s<^!KmNCyI<_P`*an<Fx!Bj2^E +A@6&fuN2~tFA_lzJcup!DC<Z!cJr~H2HLZbGFR`9OqxmNZnlqbngt0-`#M&aVMMw?WbXQw@4jtkW{tW +0rX6$B{nYlsUBktn%GpnF2Q2RLRiE@*wECv`zuuyR(et3rSfjCgmWQG*a*fuJL;3-f+-nG7A|KAUVCO +mkPYV5wYYKcEY~|1m})1GDrddE+b*gbS?XT$3Z?9WbBwz==Lr0ExEZq74<OG6+5p`sSqlbkch%$T!(% +l$>J3x-?*;i3x7>f(#0&2?UOmFbIR>xMxc&05}<?P>_ak3loHld7ydcHEXOZaAgVdF?NpB3-oXxytJA +wc~!wVQGfw3ePlpENSldR=IO{5SjN>rM9R9Ehtizt5e+VBQnHsv;I12lvcM`OQ|P{rLLO&?W#pag3TL +JuN4Uz9c;uj`d`TG-vVYj)PD7&;#wz%5wxpVZjr=|_pg!^@6kX4j>@wOBEa6wWvg{%%>?kqPE_UE29+ +Ff1m;|XRJ|qc&@IW3@azHnj$LWk~)~GmHpeAdifYNo3lngNT&Dvg2mEux_o87Cm-QW_+Y#vDua{{bAK +~M)WnG%F=*7i=bN_b|vGCljpW_${4<TV^L1qP9QM-H?*5hu}!G2DV2U@f{ss~DjmCAx)BCqBhaGbC)| +tPIlceEV=mrrMh8I7*|bI#K_2FWxrAyIu&&?c4^Mu&)v$+jhlP?E3CN>z)|`O=U5d*aOoJA~hAj5&+~ +e!GH*a5p7v6JaOZkRJ*XeXQGl@yBAdxo*K36%Qz5d_DOOP-{w(KY_Fo!M}y23R0x|w%7^NV3q!~Dri1 +(MlCkuvB`p`F7ak01tuyj-n0!$zM|OU|KnPLrfn#jPgx|FKWFn@l3`A&GC^vjJm78THG~hQ(v##L+0w +BhE=bDI!!A%V*(Z)KAYez`z!}~ITI&!@q{?y%RX1}O*7Z~x&St&|2C9g&uvCjo-HTj4-c-wWdTfhK-Q +NY(x$jHCxBl9I7weE<qCo(A*8UT}O>A;{V2TYovq{6~7fNG_!Xo+bGC`nyG!o?^B@Bv1fEEG9F-(Fwd +k-s?lqABH$cVysiQ*}Md*FRk;=Lr{mlfz!wYp*0Y@?kT@f!~9Cw?@9VU%k2;dIi^ZOzeOw=zI#3=n&M +3%$O@_7-ZVg#1CAu2I%N{TH(%Z!0V~TUdEVwv@;H{JN*7flmTEvbqq*J5>K6BGq;ED0fR&3v}O}$W34 +ra>By!<yt$TCy(ly;!__HK68);KXJDUtsP|F5Sf*haOG(3(EnOT_7?GZIEOhg>V=WYCL;X4TcvGF0fz +L-#^bwq@IxP|j6!@qYyuBE*4K>9h>AM=*<I4dh>{wlqn1xq_A*N*o_%Kj{br7ia{NfzE4(_$l6!-@28 +%BjfVHQ+iNb#N&0F^@o;m#fnZ$o}Uy(kD{6e>$+LtG8XApkN;G~}47SxMKql-}`Nvs8nL+ma3HTT-B+ +!Y1nsgkwm6(hZE#)!PcXze?M}7Ky-q=SaH}yAtgAdCtLIP7{ZYE=*pw{FwA*Q$`9oJb5Xwz7=CILgGJ +$D)p{37nM~tSU>>eBsIJl(|GDs^(2kHs+-aZoV}QuF^C!PW!{~$iuLNQqelokmWtc4(7nrA*~YfA4Sf +3f83G1??GoyCsDSU1P)i{Xk?z1=p&tLrOjy7yKoC)sknNU4#l9Dhtek~qf7}qdJRVT}EJ;K4pf*p3L^ +tJ_^^PdKMgF^i>fz~72i^$I0gbvq351h`AT?tsKfEF~%97a5uaX&@8BmN3Ci#AN#uOK0(}oYQDe)~5v +`iMOgdj14qyG3Mo+7dDt{g-PKFh(v4N^gS7kX$e57>;&z$(gXQ&r4lu+qMd;v(m8*STo|Z9CkzW|(K@ +5<T{6I3HkLMGN*Pl{1X%?2Ij0l!js0HK(?wiNh>_d1pGoO3B5=(v*S{(Wl6-Un~=`WtSa)-~v-Md!WV +1g+5bZSzGb#u<!Y8LmQxQVNC?{A`VW5B!g`>XcG+tGJs$>x$!yEB}fy?11mUl$ugUXXvy8H7r0wEkBg +OCH;Bz_C2gw(zvqSGaUQyy`jC)pk+J8wddb2!U(5myxE%vH-!_F=0~9F7&}^!^U@#szOwEKmWBB}HQu +@WJ(TrHk4aO}@mav)1^%-VjO|03M&jvsf+A;bqhtp4QPyTdFU5+~9`H&n39rJgGWZC-q(Z{n_F6JQ5l +j_D5bN-Qp=e93Fhv~o<Gi*ALuwy0+f(<#mEC@F>SaSZq@{`LK1KFG2%;JXB<I^wjqu@wt=cPC(Rf=OB +37gFX4*9`4E5Kr(p-6>ZZ;t~yX*-z1r6~qELg{_4W-$y$fn%MoWPs-Dw-Yupz`?QO8e+NWzu?H>$^*X +~@vgo&T=+4=81evx9{qnr{Qm!I^!qPRO9KQH000080P|F{P^Ue)((V8N0I~uA03!eZ0B~t=FJE?LZe( +wAFJob2Xk}w>Zgg^QY%h0mVQ_F|axQRrZBadsgD?!;^DClGAfa}z#Bl1(ow}o3Fh`_7kZqR!`nCy>5S +qz;A94KBp&R5`wQ6EOX@<!m%bU_Y+}z0M>`$OX=Y{&itg>ID*-M2GEp$6uA>{iI5LLeN#`^9?Ncsj?{ +ZswGc|i%#C~Ka8iL{3q4YARwJxsBHjkby?p_W|^xSy#0EHndf@7k3suOjlYj$0L_G~EIlk{`7MOAw&r +thaaHJN%ktV$3Zewe2<4zFp!<>L^H(i)Ex^hFg_fo`;zO**kV29*`g|xBov6ZXUTf^~}@tayeD&%HJi +FX}k!5XB@p&yZ}&30|XQR000O8^Hj4?8NawNHvj+tRsaA1D*ylhaA|NaUv_0~WN&gWV_{=xWn*t{baH +QOFJob2Xk~LRUtei%X>?y-E^v8EE6UGR&`ZnANsUiVOwLGE$jmLsFDg-R1By6<1r(GO^70E4xzfNYi& +9fEi&2#ZfrL=i0sv4;0|XQR000O8^Hj4?{LU}Q2?hWFIS>E<EdT%jaA|NaUv_0~WN&gWV_{=xWn*t{b +aHQOFJob2Xk~LRW@&6?Ut?ioXk{*Nd6idfZ`(Ey{_bDFxgREXh7z<}2LuSPHcfy4sSTvr(xNB?S~^9n +B~l=%I3D`rcSllhR@`F#Vu?rI%X7~iPok=owyfZ$D8*(b{HrpvT&s#%c(OaqYZlfs$Uxee7sheQ(*j! +AJ8s~D7CNbtR;#iE-EMK>i*9)~vwD9vWB9ugC9IUaQjN?mwN`otPbt)vt#}1)!S8#)>iw(u)AMK8Ig7 +5>?s3W1AKk-ZHk)OTv&2B!Xh>8IGTCWiA<FT*MD<ISS1N-=YvCT4lI5Q5xU|eF=62JAEreloYRQaZq= +^a3gbX{}A=2dZ<RyPF=#et<I=R1HuWmlif&sU5aeMjpj(ztpm!B?f*iMus%eg3-$k7%!Q;e4yc(!NoB +#brA^3K}|+Wa}^%}WWpm+qK}`(R8BsmS-<{SBnNF+e)n_&^#&2F2VuvlIf!Yi<m~Be)inIf?3>iwBW@ +KR*&z8})m|q_Ql>)T<pc`>GUjYsi6G!z0oPL#seZR89P;_*TdV#@n6Fzn}`83u?H`FabWdh`vLCGtbN +3L&Osa&aKsvLI~&UWVOCp-`uS4=OOFUINBYp`)kSWh0N5>p!r`B@rvthPYK2mTOqmLAF=rEdiD19^Kp +A#-dcMHxza8RE+p0HK)gZTGAIFQ$7LV~!R1_WnG`0d!enWmz^>ZphekD2>ankbg_DK4n-)@k^aZ<X*; +zHly0khETC%n*O}S*>XouN~n(+c<<T!<d&UX5UXdTSsaEWO|S0vq!s%A)Ggq{awny2W5l9{kVNz6!%+ +NlQY4$urK?_h9La_L02Im@Vv%b*Ede{r@pfO>_2EXFK##nf0)ihofHD^<D;X+UMBP)(T)>(zTfZnk{K +ZO9a;YL`L;2;X?R#lS;>WxkIPZo{rc{ArulG{G8dqa~foGk-EeBJMWx#cYu1VOHPD5T{D9o-|~PdVft +$QAV!bQ?KJb@oMu8QafZ*S}KEN$`-u`1QYh(w4_c#?b=-cQFl`yr`%@Opc5g5O_HcPZlKJU-CHI!8dQ +4UFHwm+f<C|ErGddR8X`>2Pu1z0)6<cPcKy%cI;Jo|SwfjRUtvai5iKRo|AC-&I~4lxIOUScfi^ov^$ +Lcf9`z0<_75)`f7M0v3odCZaciXgK%-R;K;_-0bix4#2X)hql;I}6!FNi?@ttwCMYD(JKG5RiaOfG=Z +qMMhZhshyz)Cz1^FuTe(r-SWkJeV}yUR0njqKGKjt^K81O?S=$0D{@jc-2%e;mirJ1vdnIB8(1e#YI@ +j=~aM+>e5@TGVF;-r!QVtJO5xa_H>hnPd*2h<x;e6amt8Z1sRehb|3yh$xPeFxm?xsv2`{%D0KasV=I +$xGOozT>CuU5=sy^gr@^>C`FQo$BBs`4^Lz9$jko4`}r5<2$8L@1XR}b5s)dWiJlgdP8ep~*cANLtKX +xiIBZ=k;sTyB@c_m~i$O=qW#oDgbGPHLQ+j^hQG@s9+dfZKn-*L?xPgEgJkAMwREG_iZUN+7JkaBR9| +6u-VQp>BPEH<#Et(Au&(#UuSsG(LapO#wrcZ=14VaTRuRApq7tj^qAPYhD7driFuC0R*FX_nd|8n-n* +9H5HeethfpSd?`Zj1Pv5*~)04omjZDI8#heJEhHh5Z03a-;Q(@FeN+R<*;}-E<K78*Z-gwjv<&V#?s) +XI{iKb40`X^6hByeQ?lq{dp>nJ`OXCW62(=C;u#*K|Vk5EzaA16oI~G!tj1Pa0DCYUBCk-YJtZWGUqe +79F@!BFw`GSYd-&N(R45$)R#9ySWg=eent2X92^38Y8zg%NmFz>pZUllZ7!bWxFZ}*E9TRm^w{^Q@#F +6QXBjp`s>)%z8e5%YBV;6u$Ky&Gfc_JH^|-qa&_<VuRSCtP5FQaOEFF$%7=`En-YvJDm)!@T|Cpg8Y= +eW7>mnrl`}QXG=(s+VDe&_}Hw%aJo_oKv>fJvAgm@i%j{DE~1pOl4e8_E)wQlzC{s&M?0|XQR000O8^ +Hj4?sK-IyX8`~JSOWk6E&u=kaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~LRa%E&`b6;a&V`ybA +aCvo-!EVDK42JJKh1XLeWjw&7Ubf3lJ51UcF>pFG3K1r4_x3YMN>Zuil-T}$ejE2G9zm&o%ws~Oz#WH +}GFW$V<YEw_F9lX-%<hOaz5LJF!3|QKFxZ%+(dGwD3^_$V|6G|@P54#<LI~qE5qzR`G=-X)Y+r-`J{E +hn<$}vfHH5zJfK>yhVL2rzOAPi?YUK`?7vvZJHbg>hGOVC1g{5RgX^VDn(tgAa@G`iBwEu_!H+rsz5c +4&=#&6t7nlD+z+FFI4@RnJGxS#9SbDgvtvkCFsw2yDW%Y2Uuxmg5cj#+y}<wYztZChQ`jxBmd@6KygU +y5#LWjyLMfg5JG+r6V7FhL*FT;jq3wD*vC7g&MVAn4MV{^nPg@I?q`mw&2;(PQS_dt$8`D{2fEcC}U1 +n)cD)ADE7WcT7*a2qW>(3yh{XfFVZD_B(!O2#6MPoE4^K)<U_pI`D3be^5&U1QY-O00;o{RI^a-yHvD +60000$0000V0001RX>c!Jc4cm4Z*nhVWpZ?BW@#^9UukY>bYEXCaCrs6F%Ez*2mrvHSCGzzV56gNVQ4 +VzP%xC}_r1HrCsOlJ9P{x=Y;LKRYs0T=D1gYTv4)!nURWwuCO(Ky+6(+pO9KQH000080P|F{P%j{@;h +q2h0RI3003QGV0B~t=FJE?LZe(wAFJonLbZKU3FJE76VQFq(UoLQYO^(40!!QU%@1DZ)DV7osP^pJ*& +<!HXAt_R0TR__NOWdR?7X<(R2e{TkVk0dz5`!@_mDN_PVSGWJ3WWqDIHSd{GnFimg?syc0BNA*$X<Vp +aHC~g)pKu3=MPJW(=^6I>)eoBZ{0AQK%HU|EcxnK3c)C}f%8Tatn`D?+D>8R8l3m598Si?SglH^2hLs +Ry@4mgzt&#gg%40m0|XQR000O8^Hj4?MVmFWSyci6!&L+T9smFUaA|NaUv_0~WN&gWV`Xx5X=Z6JV_{ +=ua&#_mWo^v8S+kqSz9;(5r*L$?oDSWy#XKnDJTMDMAc2@)ZZHo54b1TAZ=&VpvR(GBUHjaQ?g~4+Dk +oA1@;ChdnG5=#UzE1(lV<mY*Zxbc9$`>ji|qczcs#l<Jp1MRec^rh&o=mSw*KpDE%ZOXT>G$0qVC`Ae +hR{*+I{&SfA0D}*1?me2tYMXV*~|bC`IE0L%|eDGB8Y_Fb>+N0`WyE?pe}2o8k^8f+ahg*b(RsA$Bmc +Baj_~?h<4dQad8vVbqREcOkN)sU6Df=wQ9fo<)8f1JsAnjv;q+xQp>!itm_sN1{74*ah^C33fEHOFyo +Ftd|P#9TM+objL&=<Dmrk<A}+7AOzmw@Gil3VYmbHjHn%s?jmNFVC#r6wnLJ2+;zBMhts=|+>!K-cuy +svb`hw>b`fZq?#O5z5CdI6Ed%}M`X49CiuQ#U4O5X6o;AgHDWocj5Su*DR%phK3dd&3iDTdYagx;qBc +YFi?j4Q~U&)6^V|7vDbau2C@uadh8DbGj<Z_kQZ`LH6tjlGZ&9M(t6yr8T4|ynQPanmz@a}aHDo&!no +<G{OCWjmbD8%$khs8-=SpTC!HO1SHovoS~VxALplTD-%Ce8v&sDe1DB|Ac@zy+Xi28Ey?dl#-{suWH9 +!X7>b^-T75kW}L~N~0&(x_%TVZXe1_0eQ}322R{7GJ&34EmsY86tZ`tlQ_oL5M^LR)Hu~>M_GTDgKHn +&o!7q5yR&o{zJ8Q3%fv!uVVS?a<f{^5f-Z8bZm}$`aKgy0^+)yrZniE2LLc~08IdIpZ;t6OOa-o1!RD +##x8kck)wZZ#8Ct#=cpcZvw8YEQDaQ?|6&@KhbItm}@PwurzRqMDnR|BsFyW)B!ggtGaV);77H35iBJ +>kaVcT<crJoXm%b2a1{Mo%}3w_%^A;f9Q_HiTa@`i__M;CGx9&ecRM6P(K+|_z}qvzgbiqyJZ4hOvI! +YGzW(~$Q@34VgwyLHa{%r82-3pE>;o=!nV+3|cH<^!i)BIIg{xJAm;m}n>G#CbCj<NbtAbao5c17xA3 +zT8_ZK2@VZh=t{-P7;t)a}#S`&HN)H$*)`K_<ZALi@81V4Ht5iaLp2lU^E(H3h6;@n%R0X+Z!QV*h~d +avRvvVc%)cd22W}%j3T!kb#Z;vxstuC&&J*W?NVBVIFl7veZN&X_@i;AI~-?Z3F-xgj=J-s(oYyHF6Q +;I-7d^^VKpwhz4BWjGb7AF;5(LB_RNEqghlR`dnz(0te{)!^eTqZl#ap?NiS1-=f`Hy>%^j%#(h1E>n +W`G<9UJR63NY2llf5HjHFO{h!xUJGc@Ks*Qp!+*my%xcoao)x;@-wet_{M(oc~jTNROs5JqchrCIiD7 +~EYo;@Ht`A!Tg!Jj>;l)~I<VJUB#O!;%j2ojK(P#XmGzmGU(;*B6KlMZ43-_?Z&VlYF}+9JxHFY4UpN +I3JQ$LeS$l<omqFUz6lbRm|NB&uTW#T)S2fL&EXJ6Nk#cTpmLakMR=Yh1-k63^;?`_9{mbrPVN|wbdI +kN||m*co%oCx>1H%sEW{DwbG};4boLOVA-tjIp+A4TWrPhaJ>3Yoc*u=`dHFLP5ASI2K^4Tet;VQG`~ +Qk|NLU0zsIeAeSqI1*Sp1U;fthEnkGnsMo{8c@Wp_&AKy{bj!IUDAi$CjkR{z=@GgvZH~=Pi7o{s2#4 +srQC45oDE`fJJxZ(!_poQ2W0K2FaDqw(S08!Fi9PeUq1^SIf01NRQ3NDrW2EL+TMXLBc0SbTj2lJs<y +b75ejP5XUheo@U*~I|0(jA4Yh#4U3oRRPiYXGM39hvTkaEGsuwW2EM0&1D$FX5{%0eroVe}XRo_i7@8 +e+gfvAcEBa|9~%kQe6X`2CtS{3$5;9!F^lv6&}v4QklesH9nz@{|=oX08iglsy|eMx^bUJnkskzl|)1 +pGJs6%=&WU>_%4IK6_%W;UfFT~i9A#M4Pkx)nCx`ruAsB2g4^=(5pwnT!$<g9xz+(x{HYGyudDLyzCd +4Z3<qwE0HEo@3ZQ}h;K9!vdkilJmfW0b`cYdpKONhRVqZg^(YE<sAjRf#f(ATJr~5{RDP?rEkZDqh!p +<)49lXOW7Z6ywBpa;TM0n9!kDR)`!s9jYlh-j(om{4&<Z)_-$MS5+**WNmdwt$s+`NJJ_hegS8-%@&V +bzpUZ$8>V^R9i;`Dt>}xrd*+x9SCTW|b6z*$(?m<qw4z9!u>?U9(i52s7pJQ`F{jXSWW9<qy6VAL-q! +#QW(W9}VTS#1PN8{&Km$4&$SVh`oF_`gT@_2YwXb6TzR%v>&y6KxOwO0q~qX<E*%cZFU=<Muk5EXnAc +KBu!p?@XUsI@m+?QUk+=!8OzO9LtaSp#f@stK1hDfE_{vCJUfak8=Sejz;jS-eh{O*PQT#@JWSwQ@J3 +;!D+X+?$i%T0pbr4T7B>E9i;GgGTlGfSLpB;k`<8og9pQI}M~5+^pBMP3W$yt}j;F_y$u{8gX9wJ?g1 +rGp!ecn0+8px49s2sTE$h>Es);J*nR$H=POdVaYS2hv)Av=cswfMrlY!R+&tlh~#$=QqGK5t%To+i1a +kYFZe+0+xv9b0fGoPkMg$D+8=8nCnpI*4!LI-&3jA0h(Sg{C)h9--V4r?(qt@g?Iw6wp5Tz{?wRz67G +>!#eO`l-ULSGOlT$MZ9UGRUNH4QFdl`LYqr<E!gz{)C+ClcvZU^61@N%-{DgG8dPZ6zZv)5{@C9lDmB +lhAZ^wHdw(3Y{uOpBVxPqT;iv|fbH8|;zIi(#YAuHGa@JRO~2I$`5;q_yotw@S2b^nAvPU^FuV_jj1W +dCZTNwFX6=4UkzKE-hCbVy*z{YsWS5GKYCtibi?w}K*2(A(`j&!Bu7tPt$uH}AB02GbJxXsgAqR$Rk} +9IJL_K6;*H*eRy|#OTKa1Q=9FinUWb>5$4Q#Xl1ii6|uY$Jyf_=I4VO2z5E=^GbX8DCrnyyHTDCmmE{ +R`W7`J*Yi89<nf0WkdR{{MVY?$JM1K>RkK+4ODqMN2yHGTpZS5&f?(2*WU6e(Ld`U!+I#CHNS3N#ZYk +n|yiPtNAAg{=a#ipGd!UY5&bReoqHbm?UYOWJr`^a0<l`7$tC&qG$?6XqX{MP=+JFBnMHv>Op|&0kw+ +92wx@P2igPui34y2iV~pgTl2!qFUbKQ1Zcd2<F`u2c6hiWnH>WLi+3S_cw!e}I}AutbVm?73J6em$Aq +f}jmY0?TR<xSDFI{!C}$v1fkIA$wKJOT&~Pn8;Z@iI85@PWfLQ+*$XGxfsCca<fT$*RB=M#c(OM3u0~ +PKl6nvb&A_t<pg59X_qRxkD<{uslQS`Cf-^6@6CXD;DOyht|Q<eQu)!Px`Kg6CajtARXL|5f3`77F<? +b@CL`;GCfB38XO<J11@vb<_rsq!l*s;jTqZOpN&0Y(8<)qOlfbvvC)7XNIlUi0#JWv8=wBNWN6KKnr@ +o;!rK+OIUksF_)jB_x&sVAmDtJ33f=wMvnhKHT3X!{mfd7IOJI$cHo)wbpaBMG@4@+S^4aSEV9xbKoF +(biZXfYR|D;)q$hs;NJo8A1-!{M~EGsP`tmbbYrhBU!}Jx0=go;Da%*oy=Wzisirrpi$!Q=6@1>n_5M +Nsog4VaNBB2y;Cla{|IQ73e+&Pe8@S#-=;H?dNW1<i>r#92E}iIvql0}-hmeMynT=XC6{n2mmPL)NtK +aknk?5lGBGJ)Bj4EnbCtNQZ4N*?PDipp#M6~4dra(LBSWEs>j%rf_h%X(&h-XDdlgK$Ro`a&g{t=c6Y +SA5))XIz7(Bk316R3MYqdDy59=c6d6rIM*ywV=_JSwC-OZFrNq)U~DT(TZF$FaT3QC02_Oe;!2^4JT; +5WXF4q$^iLJioDT)aGT(n}_jCN3lO`#_Z8piH{OZEO#44d$#jqgeTwj?lmcC(f<63X<2c2GCe@<xQtk +PK$q7R3x*S^2SK4u=7DgZB}@>7#yFDi<7c8$Z!y;;d*fg_bkq{Kb~sN?4;6Jm*hKU}yUgFy6VbRjW6) +puOSC=F^}Owk;EtLJgwE0>f8OA@^j$1w?Gx>E>13rEdRQ)<d3R~tWtkS)6hqk5?7^Lgv_wgYU$B>xs| +h5?+|WflqRdLqjl=2XnkR#5<1tREfF1|<c4DqEdM_fz?7Ii+6vZ~{ws@bbv84n&wDs_@oGZEIa7K$Cx +R-n0^@Y`4CAHX#DadiJ?+bI2Jm{;OA0GXst7}8I414Z@uzW%iE;de?9^9gVr~a6`(lvZmI=gIzX^aw2 +<sOulhv5UIUfTej$F3RJTVxikFtv-^LFTmNCNU4fIL8c@Y3M~q?1vC^DD0L5oMeufZ(CdHUr5vIPtv? +Gr~FKuXmH0w{cq3{@!qZQ{EvIm{T4p|1BG$=e*uvHzA-@faUB1V{86;!FW3KfZTh9SM~~+Dk1yf;rAg +9%eEE+GJQQ8~r7D8(AOGtQ3h@1Sr?p8E|HMlEFPz>d8Tr2U(j;}!*I(YlUz4bBl9g->N%NDB&fp|WGA +IuJid!VfYKUWR=Nm&;`vIVMLhcekIEY<JtxkG~?=bu=?tg7O5UVAzgUQu+2ZRK$iq$<Qc0saI3NQvh| +Abn}3BY~u2OvJ+B49`i`3<)q<CW!rD*`I8vYcq0UI?!q1BtG@0T3CQSq%w5SO9wnqIKHw+vT9J9SyJE +101c+J75(Ny#@ec^zB=KF{!`g7RQxaOy7(L@hk(GEBs<z0rIXBL`&tAPxL!MhC{&7-Ckmz=zUk8bb;M +`MKepoVl1ACD!hN7-d8auSdx~iB@3T<?g>y$8=^bgEAoL*_J_(Z@a!m0&(NvhXy)3$k&07sn+_&he!} +FQ{{togs@Z+KKOhmN_hD@VZ2jmAU~vLyKYc>s@%D2&t%~l(6Y}e-^jzZ^qIjmeHXO*z9JmId@Y$>iI( +{_2QHEJ9^+{W-Q8T3vv)*Je=v^p?h-w}HXOLkak47>3>dudy^uy;DBvuvhj~h7Y>m9<NQ~l%APOzq12 +>rggA_Go=GIPY^nFl~Rs_ptzunz#<9hl{!fO`dbj?y1Zu~K>U>&R+!l+~vqh+x{c?5A%jGe0_4z924u +1$~$=?4-VaZunP};3z1gCS=d`LE@A@X=U*%7}4xn&u7OsFf|r(dKpK#?O&zBMz&PzFX#vl#xQnA)1$g +<A5=aS<GRW%dYeB+tuv1dlJxt))BN*Eej>EEJkEQh$M)^EI&gXdwVwPeT@(ka`-$C(yr9j^(_(Mzo`I +{Q9P@m=6zqWHSQ6V2b{jFu4eD!?8&|oqdlynGZn#7R>1Rv1J)!tDlF-7s`P+zp3|?LO^H#o7(<D1Qeo +Aib>~pAp?=Aer;7DzokZUf^{dBq<^$T$#4ZZCQWy!4B_8O+G4OQr`9*4PM%4`T;va{S|pBuMRo^mbYK +s`hIhaV^Rhdm@TTjo|_a}j&v19M=BLvWC{8!<KSzRiz1p<yUpFSP0@&Y{*Z!9gN+58=8ZusX{<U}e;W +zi-4qpH7UOTshc~*`X^Ay<U`RTIUD$=JYQ6D<e{Pvpt~?p%Mu~^&FeEJCR8cYZVju;4!1Pe0x-}N%ru +K;}<5Wb8UX0n>xB*W^;>Ab&7$9b$UP+9k5w`_BIW`;tFQyi0GNzGAcz;sd8gCliUbQG+;R`lt|R>+nT +ELr&uMeXOdnDEiU4U{3hhsD#%ZEk8&`H$3X%+6XD)(k)*mMEY9W`wP-4)nc)>ymC*>DaTf-g2%&yUml +T@$^K>*1$S9l~8a&J-D!-P*8B*i*%I?pBAhO6H01<Wj{5ZZ6jt>u)quo&(DD?CbuXLL-Y22FM%k(Cql +Pi<lHA$5`ET?z{TMkcwC(<Z8@LG!|VF+i6WQUhwD>hInkwM&7{!O*%Y_SaA7XNj^!39-U)DHlV{2V6D +hdJ=}?a$xU0r>u-`X^5C?~U*Y+rRDoJxpU5LEt1p{R*W4z5)5q;H!vc0IX3fD#id(-*IT>t+fH{0tgN +ObmPB7X@HJ#vP$q6UL`w8uI4;}?b2ioI|B@->D8I1=v^G{P<kCW3f4FQh5rVn5pcP;`49k<Cs*MgzT* +!F`nC@M0SMmaK(JmoeaF#5Y=<B_gxSU9YFVtfO{^XS9_|=yy>N=HElF_U@UNrWtL~~c-%y&(ShoKa`( +H!GUq$Oz&3b?gQ@pAi`w80zy_Q<AoOfUuuT(=FMg22O{1g)BP({@TVyQsrDeQ;(1#f4?d(H#{xd?Qpm +FZYj`0l~_z>AMqgUaEqV6KwdTEhakCU~PNJzPjI738B(Sv2#u7LHE&5q$rQy<aVB5=&P97ND>WdAJ9_ +>@YLrn}37?0K6T4xVj(~U~&5l6ZqeMJOJ~A2Q)fle*o-95MKBjBKD|?{d{boT0mTq_vgB?3535Fcv9H +eNgi>eKOg5h@U>0uCMdY`c8AVcztqRV8%Vg&9#?WH8%XgnR=>8Kb?=p!QKOPh$lfcEAiLkAO=jrF)L7 +JKQC_jC9Q)eRjt@&!ALQUP2QN87_0x-9PJ&;?#b&nERh+lH%-Cae;V&b1I&y6v;PD+Sv`-8f%C=9Xha +nymkvXyB>)JzZEo{1%Cv8t=%po@(k#1fsUy!GB$!_e#xS=8^!&xHx!D2}w$ps?aPHq>33*Zs{48;+HS +vPE%eYWjQteUTyd70>2%}WtS+@3?^k<>Zv^YYnLm{F<}@{oo7m?#K3Z07_jEBKYaV(q4lce%WMjU9l6 +QB;BEdn41C<2+G1JF#Q(yn&Qzb9pGX5Xi~$LLg4W#;*)C7C*w^ipqK`#DT9&{m6JQ;L8WR0T9eY`FnQ +^`n1Q^ECyERB|$>Zgv=O$s7MbDrOY|1a`wzHsL7n-Xv9ffmo`Iiyw+%9GAP94H&dZ9ogXUisTp~6f<@ +1HT#G!l`392)fuoWBrXD<0*2QhR9JS3^^)S)ec9@e*P<dOf?I^)iLm+MzEApKgx04^`Do5mDCT-o##y +8|rpjp1V<X3IEiAZpplDybH_y&f==N)^%fQBqn!uV*?MMaYGl=3_ffKwZ%Fh$1DX#<Z!ZbZJpmO+^BG +fBx*I$KJ<K)3c(;8UR0rNX~(+{2QaE+)iA3wpg-@UhxAy1JluU*95Ig-pDb*&F=GxnUc3=III<jDnv! +VUxw<9OPgjFBf}zPPjb)(Svw;c}xBLml2DN;}4V&r!HykLA6Ghzv9ieI+j}z=g&<|^YUqZ{{&<IKMwn +eZGUd}Gq54QLNuTgF=9vHtA|VzE9wC3z|u9|y#9$-sRytMh&ea_<-bHU7+w8lfEYjo0wlz-bv%+@!3T +^7aEWBrk$@5fC`N>9)fyBB4d~zLP9PuCH4zJ_UJSq?x(<}4yA)nUBmh|?-O=%SrTD`oe@EBJWcAR2LQ +R5ID<c5H!W|9TFssxBa0}!t3I;*{Qg>=^-AR5T8uv>tOW=l|(98s2W<lSJP~9<ZpR2oWDbt~3Z{MV%C +EfgQuB(m5vOR|Y9w0?BEQ{yPzH49rCz?;F`-*g&FB_l8CMA2LifZs~uDM&+52S;>gSu5itukmi1E>Q? +_jB18E<Ylj1zQs&3GDS7)WP3RQ{vUDHy+r}2s-l1*+5`AmMyWF2_$0-Bx11q1cTq*7sJhA0GGYzjPKC +<ih|JJg27XY$>pV{GgdsA_spz@4%$;wE6^yiDbDE9k)ddw-6vnEseeuf>qXx-upsy6%d)XMOKO~It}W +-mk5{(|PfwSDdiAx{maN;CKraQzXt(KTF58FtB;dI%bo+dl-I2lX{*%41Wa|abL{c_MPD(FJTU@BVkp +mZ=>&U-GQK;!2+w4UG#yQ;MU+4M}Ts`l0?9^7I%h&R}<XV|7&utz!8w!C>E)>A#Z6dKgw4^kuo)a%5f +aW_lC*Un@8?mPm<8Sv<01NqyPS=MK8S(LsVx1O>)N9co5x!#cb%^y5(6d@50_W)|lZ-u=^Toc~J`=%D +1P(C1=&G*M_;7OOem_vuriv}bf+44fzJ<^+f#*>3$EbJ{qFz#7;lq%U6YpEpcxG_kJlWi1<j0kq0l51 +E>geyGQBv7=R@j*N@24+T#w&L-d9Hl0-v);MJn}1#NMllE`p4A63IO$w=EnQUguXtSoL-8x%IlvbE&k +mTXiJ9veGCLrN;dm6YUJO%vhO^WclOA2wGn=JYM~#5=!p+;#j3{6EAedOaL;3``$dF$29d?L#F_NHvi +Ma=30_R~t?o>F$Wt_<z1-$YlG04!nG?=B&yWeWN_t85^+EBQ!epakUOF`05yqq)osO9{W>1V;V<aGQ9 +C^#oyRv~DT-~R}-Mt@<Sj&h<IQO+tloRr<d&o5}%_G*RmUYaN`eG1GpHJ6;hqMMag(P4+pp6nTItUiO +YT!%JUQp&S26|>2i0C4BGA<M+vlUUL>m;U!tLeRb(S;&B+uC_Mow)*z^i8lt+4=s!dwC<PwQ@P_m;Gd +ji_Gn{LtL|$X<IN7&NZk0u9_?nK=u80QP@Y1_(XZg3H$amy(|aXnc?XPXU=)1|83*@Ys%PftmSW>@*i +RCU%1L&iuS9g`~Y_(iN6}lNt4{8<ZUOTFid{=VW?mG-2Vq>^OLRpPiOK2qd-WUBw-r;rKJs|W$=z?C- +Iv59mi`%9sCYGWAT~+&Y&xfuM8ypomdXBuV!&by>qv*HS?Or*POQ)$l2&^DC1w*1^59F0i0PSbISaNT +2Sv4ZonA;dBD>(0WKm}77@g2N*rJ(aI)4W)S9vf<Tn+qOe1;I3?Q^Y-_?~T*EB&O*U@m*>VR@k;1eY~ +Jo-y&aa&WtvHF`>Hk?kke`9I4!jISt*|s`KC2M_RvtWI5XTL>wSKs$r(02c$%?<tGbE{e4g1-(?0*Wz +$zd2aUZr`kKAWMBv2c&KKHCcCEH67@~x?O36_nmb+W>?VoREnL-x1S(?`=kC_wqFIUzV`2I?XSEARZV +f$7I2YLh1KfKTfUV+n)xmqvylA>0c=w>yisC55dita-u@coSAo2TwDBu>SvV}lqTc_}SRQnQGZnd7zS +-MgcHZhp^IVZ!IiUBQHF9l(O6$jXdhz!DXH{U)@2vlC-^`jC_O>!tC^`Jm;9K%Nz#uqq{HKRX;9sT(b +n7#e4kzXxgb4a;MikiHP2)GM-yLg4!3aY=+mS@I8X;QJ1JZh|-98^&Ns9RKvS6a<*QXnt$c-47ZD@=K +M`_jjR`uG2WqK^b+Kr+Z2^Aik<1xh{{8X`#nMyMpovZl?;QnZPxf>eH9fA2_o85*(V^WE!^?D|;Ti$z +#>>1!t342RAFwn881BI~MljtOSln@dJR^3CnxgJwVf#b*>ke--Gn5lCK_5#5nkH<3Hmq$<799&s}nvk +SRa=KQx{$+XCO<Y8u6bbFl^lgha_8?SN6g|o0zR@ukjx(+1dgNA*`F=w@F9pQl!p%=xSR3(Yw&%2FDd +f|W*xKYKkw~i9t1S@s8+5Og_eZ7|oA?r-YWs~4K`nSio4=P+*nFhJv*JNu3n*jh_rvnz^Zw$5_s`y>n +hK_tETS&@?36#J1{x3Ob~f(Mqi<$vBKt3MVqhSA@hcPl#M6QU_^9Nyws2ve*TIcW<CDJaMQCu~)!X<= +R(ytoMV8~(QOH}xE+g>5Jm6Ew0{(W@f0f7seYGk~MBqncRI_6z5Z<OR1lG!4Hto;%ZZ^B?gfhIdL5x7 +Yjw*ji=0R~DcbDm)Gjd#x-Ec>gtLkmN%RGDB&E{H0qAmQX!6SE0RN<-Pl#xxwGAg&L7FkI<bIpPD`v3 +x>!rWrq#+@YXYV?a_AE?<jgMmQp2JHj%Kt1Wi5XwX`4B@qHC{)nz+O;5G)N{UHAjZ)n{)QRD@zvhvM& +Dx07QJJyHi5@OB#UTiULC9u?0$~4R;}@TkNWT}zP);Nvl+Hf(v#Bl73<lBzq{hgI#sk(o6}WK1g(=V7 +uGtHcjXe5C`-}E3-0!Pk7m7o-n&C)AT<OJu^S1&GHijU$HXePTXUNeTc^?Ke?1XDd3+cEA35<~_kVpB +{(^V>OC7!?+W)EX4@3aRaq5>OAf?s}xgcDl+dz#2J&z|Vm{Zg{xjx;BWqyzX&iC;VB$qK{(odbO +B0kAk^Rv{k%C?|F>5ctUYGXVa8T9e=za<#Z=z%J0=kN_|WO|0%V8t+hIr65tf`tC8d`tbz$rULNWKnF +C1UbE}KM+n{qI-nsGv%3Ejx^_?SHKH97t7(qCQv<Q!FCBAxU8~FalLQECX*j>klM|IcVI1@m$nAZH`4 +r$EAotTIs_*JQcVoSU_SeLDWz<Y%QU(3H#QC4fN{;{D>43f_n>i|{e>xqSf!f2Tp884#LY2FHl7Z{@_ +0VUs{Cm&W-w4m5?dW-nz(5Qam2%~89EPStp}a+5jNjrb{fKjQbIgS<yFAUSxaXBJaCoLZUu%YQi__gK +A6yu}p!6=^h}OuSjWA^A>*2_5l0zJJ+4kH$pZk5SR=g}&);$2y?5Xr7-Ap;qveMIbPqr{X#T8|fD(UE ++NCQS;%kXAxINjFbJ8Qf&DryU3pey@GV|uj!%~YEzMw5c<?vEyr^bq3qPdP$ttSwu(!f|V3M<zaY+ln +o<VXBF?KR>~;&7KmQEo*}xsm+<EjJ@sz%njZ^;YjcI0p0E&Om<FAq*kfsIX03*F@%>Ovj+3j$gKLXGG +iiwcDW=X-j5NQ%f~259uA~ljCACON8}8*&1ZNPQAf-Caog6fcWs$0lsxlC>D{T<Xx{`*VqSNo>eWUy| +AbX0`>VFl*T%oi6Vnp)8T8iR+Sl{Z=B+z%3#9Y)lJL)>Ix2U_Cn$ZHo{6!!bM4E#V3rtg78zbQ#4$wd +Ydc?aZEPBU@4ZgNvTV%`xt+FT6qoypnO>nzcWkezYwU4jw0n!kaN#ybFDqxVp7n)qpOwU_=~=YJLh1R +6Y&`qQRyVRDF7YLjpi7$^t!xRU5WucKR8u2a!SP-OK9ANf>(ZZYTV;>-*T%u`XFcv-LtPzRZo<zUy0z +|5KH_4ixmzsYV#<rJ-Q3#j3n!lS6DH$EB&bQ#IP&R=@Zu86;e_Y4>n83rA*e{+ZHP!khc`q736}7%m& +Vf}2ao*C?X-PqU4aTrN*mUui+09%&I#B@G}P+&ceZ$auKm`%7?P&_Tj25+eg1?m-?#ru_Zlcjl34SQX +s|k?t02SPxk^CfeeB!~-=SJ6*ug*;(!WF(pykka+B8P2nh>n*0Fs#CotjOr2~`Y$hG4}T3SXUQgjls} +0@nZENz4FVv%8sa-Rn$Zt0xUGhG15Sng**B#-r7W2HG}#r)904G_uBBadbs9>}|uRZ__<|>ti5N@ptY +vz&+$I-D@dW(FNiE%Dt9;a<AV@I`kK7dZKdU=bCPRUvE3aGhTz45&Csq{}6MqDyX9-01~^VGk=)S#7| +|TVg4a>p;hVrS?I=9h<qAvUsIV&Hu^N?r0?n>MY8+A1sd(HefZ+5bSi%5B`Y7wDO;5jxK~HdhU|bZr= +CsA1Dso0$_+&qcEL4y#MSJaU{;3btry*_z2)#P+5^(UW5|h*&M&4rTnZYBbUEP$n|3FP6Ds$Z5l>$|; +{LpFN|nHchGX#c`JDZd?5aq}q)Y&+jc!z(ax2L+A-z0j8V4ta8^$L6@U+b=N$$hvFN-}9%SgX&y?Csz +M2UEp;N}FvIK)@cOXnPWCQ=SbR8o^^meg^#goA#36jDoduUGCL>SpVc0e%YlLQyn*d(j6G+0;#+7Hzc +%4}*}=0g9*tx(|SQz2|rNr4xHeJo!i<Y|T6tA}Xd&ZBymjBv}sEt$|XV9^`EyCC@mpgZ*}dYM+V>J=+ +kBau7_%!aVM55vkkhm8i(NBLN{`N~#uUl>NFNv>S@@Lf1z_w1H`4iXnUdeDZ$ipwpf!UFXrMG%>3<J@ +5ui)TbjJBFvLQTwfn<+rsU-`le%i78ni8?PK1Bx<vNQG>iG*>#5H82~Vv@lXcF3$tPv5xbhK7SL8sUd +%4-;5Bpj6g44wwYwu-K-1|_<<eZNki=)P58CfUuexNN(o1N4#lRQR+mcj^o@p;68AFpTFIZun2E=PMa +yJ2c15LYl#fs~dq1y_Re`=hM+s>bN7Kb3{?O3^8?vO9~7^EIh&spGWI^GmJ|QNA%kt=mBNyzi!oS+MJ +LksX&w35^wb>Pnws`d;9VOMR<V+NM5tVtWgCd%pA8q3@0MAA;E0i#oktqi`yeLnXnk3=1$VcqP^VT1S +61<aH0M2Lby}8~<Y8cm5ruLqA}8CbFtq))VEX{lQ>ocQ3vKw>5H%&r|i`D8a~Y=W|=u7ejIyUoj#m2= +01aX7r}FQZ2DX9OsBiE^a-2O#!EY7n73<L~p9V9hha~=NA|uT6&tg={1n43n^on*AgW-S&qJfV2I}p= +A97HsGFhMGD{W7XYz2Nwx*0xQe=ph6RH<6D1<v_F7q8?HFv)~c3s9F#;3kyuC71XVK_Ywdn46CA*}@a +ZWkNfESui7XeqA4*?I{M5OvlTUZ8&Qyc)MIQjGPdU_x)y-Df>yO>m_cvykbyJx&cOK4y)>Iv)#h*UF7 +a$B%?jG%pRh+{2=e9(TIhq!dc{f*yLuDY?P-sp%2gl5fRDzAg6_j-v85Nyk~}uiEyG>GfGYmI0(I==G +3GrsrxgNn!U%gr6F^ZyMp&`7`bygT-dJlP`M)yl>d8gS(m<HOZ4}RFIAibbA=d^L0j^0^Xp};>mFGqH +ktkZf^n!B<{RymyDtG(KgF&lN~h}Jt@*nP`NrksRaXx#x`x*>Nut9-LC_=kqcwX+-qwZF9k9^ef?3-9 +1f2NVkAuRyt6^Bb(mfFR~k+94iY5%5VD1v9#tkiT(%cdw4U?^ag!lLr$vmrjnapR#Q9d(43iw(=HYt2 +oSSTWP5YsS!ozgQoG0lYXX?_q_Zjp0DFBbTJ?jEJD3@&m<ddw)=;lT|C~tGEl%ge;Z883L$rAc+(WPJ +Y`lp2H3;LIo3B%WXvygsoU?*4A$|S3q4cJJ8t~p<zgkJslHO(!eeo2|uV_bqYdyER#E$Ki?1HJ=j3mm +O^Z-By(%$ra}>#p`7-Qm<~wXbOe|AaE3Z$BOj*9bp>uD&~9ZX~+;0)TAM$m-Ao?gWNjGtT38?K=TIdS +|;M?+*p8M5XJwENcQfz4E2i(f`X7HYt2lrt4o(rv1M|ncmyrzfvampHimPSpN{^KzJ`Jb+Wz_<+mTp% +0FiF{SL6d66L>~4fOqVzMl=CM87*{h5tBbMOn{T;UQM%7h5`Uvq{ZpJWm#Qp^r&2jj;6~;?$rbSGtn& +E8cf*13&7mRwC{z?&Y|H1(8M|XHiaUatTT7iD}8}<@BrNE4kH$*B_YSRH8nz6A_t3FCFezKFKEZAv0? +NQup928Iq(8U@Hh!B6+T9<BPxC`f-$N<)%kKe)2>$oMG`vbDHW$b2`4B`S$c;&Lkcshkg8l+%SANutQ +?%Ip-Y4DIc_cc-e<>rd-{N3S8XCbIl{<ODacJcEx?ou)=r^udUq%(+O%5-0LmU!L$k8F8yXfXkomJ6n +P?KdAkjC^>AgjRCylaSG>47`oJ1D&tGa3C4D)D&{6XnTMb?glN2Ye^_Qc<GtbT+%(%%LyUUu!BiqUuj +yKe~z#BQebOIkdZ%c`r0CgZG3-xLP+D5*OD`In0RB|&IlwynQP$~G*B6Sj!aAt=Etf&VAkwQyuE-0J@ +u1R6gy!9&vU8X9{`15jbva%u_3LXlh-#$X~vBfr8snG)MaAyZ72$EE{BHs&jCM~FMbWqN+cmK7Fk;oq +O=dm*hRrB=9IB3Nc(R<4akNdXAwsq-lbK5*pmLW7;OG|a9T(d_6fGSIGEqE4KcT2Y!c<`>TS2X+8a~z +yA$KWAJam<u*`$MFfra(z_hYQH<#-D09nQ`dUA%4@<xkfRT7Eg<M+o&7|K6+aLoXw+Ivh~?1nAhon@} +I5;s*c`Q*8}?Jwugbzh?{R-I=b2NsVg5Q%3NS$$@Js$;d(&dS@i#`@t@-cp7*El&ezNVup-GJHx-u!P +1ruHwvUA*$CkIX<2Iw5L&qM3IGD-Sxu%;1irw4txH4VDMer>p?&)LO)*Cy?UX{I{w-F+VdvPFJsl;0? +^2@C@>g0%)ua2V^ZLdRs9rY7u1X!Q>xJk*&QGXIMDZVmqO!mGN&4uTfWyZ2d0mBDI@i+a&e5pwK!~`R +2ASokKt>4qf#u^Xm7Id2^hif)<_~gY#HkkeNz}xcC%*$(b$-bW-j9|Etc5qO6e|<nfw%vCZ-JH%wNa@ +Y>d5G0x4-X-CJX})o9vz=A7E$s$%s+fYm}%sZVhmj}-GrNc;6Wy0k=Eui(8D#Iu*GwZ^iz2zIDSHnQ^ +TPv(_1$5)3{uox%<q#jS;K(%|%W5g?8Zr$$~vEc+{Lwwag_{ECt4WC?#F{;^R=)KB8<~<3yejtC*gA_ +M{C5#uF#O(&F;0=^8@D8-314LwNbEwoN)iiQ1!@da-g`V3|4EREr$1NmgvK{E5dmt-@543)+cN?)u?i +LubCwEQg9EIX1(+6dfLh7TYg0tvTmqq1}dPlWMDKXnb_-eHvVhBZhO-z_UTS@ti$G2B)aOa8G<(7(0) +-Q)fN1JL)sS9*u(g<;05jr|uB1=Af8GGu#R7YWWsz-Op$HHoB0mvWMgOdJ1m2iEb9nw%utO%IBk))Mq +EwE=CT{Z3*^dIPdvs(`1SRSD}7FV$;|Z*MB|Hl4ZZkIQZB>S42q*7!d!cAMs;lH^1H|_&2+L5~#0rYw +vG8ntvr_5@+5f5x!<hCgExZ0VWhgEB9Ep#zkvp{d(?QxEe<Buea*O$l4W9o&aC1AcR^I@d53Mnbj*I@ +i!Mk);}b?)`F6lUeh1&-!Z6|T4N7@N3Btoc-=sVQmY#V$|-O$W<Ahu4ZTF~O#swNnTT{{Y->_Ru!d*w +H)TTK1Pl}=@R~=to=yPT|Mf8d>N{of^;Zmv`iVj9^->I>&p-jsj#mRaRBO0BDmcvpoF$O$WzDnt?##H +oz{aNMOm&DIZmRJZA^B@OMBpSLM3KRl>31&Sce}~*ud)^>)X@Wz;XZfSt=S0BdPPNA3)b+vz5L-`iKF +^XrTpez;i{=D>tD^hA!qwBCX0B2zR%MzVCB2R_A*tx#k227u<t6F=}5hY=2e7&k64QOSN$wP+&JznK) +w8$nZa}emCHWvNj4ff%5))W3~yTY-6lfC{D2&Q9x5cSU~&C1i@?8fCis6eaKK0Vi|z5yj~N66dryrXP +o8K#O`2g{&%-TLvN4FqYqOEL&6!|NBu#d)r92!}?*oYI1S#TA+VzT99zCOBoy$COdCl;68&A`0_RS;( +6l@<JSH9KAw$w7bdmZdlEu70GfiQJDWOz`N2jg-_%eg*qa?YpwxY?GAV6_E;?|s?fN3j@Rhdtr>45~= +{;}*qrmvlJfWtu}Pk3if!rpH8PbqeFm;N8_KAGodE^q1B;k{j&RE{=yVOQ}7iI>_*s+PaD08&Gqu6K0 +>0Wkg?43#=OK+?)vd%*GU09jgO<#nNVPXfjbC2JKeIcu(B8a_>FoO-4sGlq}@&5Tz{UW3}dFx^h4-s7 +75!{2B>1^*GVDZy5xmz;nY-p?c`SiAQB29a>LY{6#-0{8*(7J3dePZ*~y;m{tjW+C9nm^;Dw0K1L;rK +ZGFD6mS0NRHE|ZePK%Py8a9g(E4)xxVzH+;~|=fGOEW>d$I6CILfM=!||RaPcyTYuL(09v_7g|GmSVf +*pE-7{l`o8^~j??trO5^{D+r9njQF%ylifp&Znl^m0fOIaY{YbQRljAM(gTiV%(QCRbefgF&Xkebnq_ +FwVCZpqTws5+0e0MaKjd(#irbwNCOuRE2SupaaOZ1!=4}LD-kOJdUBCw(M}6wbnr0s+-sy&n4Kr4>X2 +Z}$UFbMbDY;V0>52cp}B-YZ1Y~4STNT*=Plj6x+=^}6apWH#-)cnJt?2ID@Em{iba=}yh;moXoW|@Vo +ku>va%)n>~wz4^Hb#17CBqW;nfyUg$nphB4Ffr3@i$pUrw1lYKlkDd3ubSWY}~M0tx44IF-jGBY96o0 +^D_n0_!f*3xnGFQZSCvW}We3MM<a4TDTMLQ+ozp_;-#m()))U#6|m88H(T9eFfV;4x9aTm!EL_f8%97 +G5@Da{J1@zCSa5#8Rl1*53qDSua8`J=~3vKzyQOm(E-21Ln*$7Ymj73P6WIF{msU|<h`-teUcynzxUZ +;D@y>K0LZ80n$Za08Kzd(14h=dX=Y73jDG8y;A;}aI&Qe0X$$7SL~E=nLDtyUx@SM#MezCqNv{M0Tyl ++)z0)nobj^BP=S;2p3&B;_0|MdoyhHMx3jx&NU%4hQ01WO_{INa1@%3W)CGKy3!hIexP0?4m=+mpvE! +Q6GTDq-iiQmEY4;#n7Pn3gxpD8EyD*r7?ReeA3zc|2qSN)3n0OxPhSx^^s(cZi2Kgyza8MGFvd-~@ya +J8S#z%^oraXiO(Ml+`d4)R<xE!C?vLds_<;xv8Bko>0!l2?2@eeMLAZ3Fsl<bQ2|pOP)0f0k`ApfXa~ +XVTs-Bwa_RbKaz)$K9&XGzJwRm#z1Nssg{+B6~Yuq9Bha&s6){0Y19$VIvgnW!>!(vPaw4-&rv}pEyK +#H3$h)+>}Y>fC>O{pEYV^VW2dKJ-xhsaJ#rfXf!6RpzKZ(y|+sWsm{X7h6TjdZd97s(R9oy&vEPn<nU +ktesyX3+&+;T)@IoCIiZV371c4nK4j@qSwwdUd_6gNOLRpTp&dap-MW@k)Mt>iktRRFW53*EaVGln9u +}NaU|$Wi7K`vPWfO{@wR+w><7W}}L^P#?lib;Bbbho?3z|ZStPEt@-yY8*12^L4a!;;G!X?y3@;G)|B +08TB*Wr?j`X<o(@vH5CE4&4GGsNET@uGXmarD-_pFOzyB6!jUm4{`1&8S@=d11M{kRI{g7^7u{Z-BTM ++ehH>hT`}0tqp$dFY9;he_;7<(hvd7Gaery9`*`;7DothKJES8ujFu@1uJhHmgQ7sPl3M{mt_r?tqe2 +b*^=j`>BUXbp$g?H4{NQ0)+3&jz3~8y)A)<0vU+D3%Tk|QxzPh}BKS9lB1}U<$6i213CO`1%PUc~vJm +w$@Mc!;!5uvFTy9*Chw_|53of>-?R;69A)n{gT^t>_DwvX<0V)D2s`u*+$_BsSkO;L}MgH?U673H;<Y +C4KE#W@~cwbeLkPz{6e@zJf`C~}ju+Ag_Z>5rX3iR#k%S1=2zY(K%mht*EeSAx5@73^+!8oNmg$ZUt$ +M7c0$w-`o`&i+|Yu;>ARgwG8WST7S#w<9qpB;W~53L;@o-95UnfrHECg^i%`gd0*=yPfMyDL+c>10>& +tC0HTLDIj?5h^;}>QV}>pU1l#UvE%)SG<y`9;u|<Fee_)ZX>=boWZMNG+o}y<^4n6Xiu4?&Ko$^A0oA +-c|9G%)0w%ZG(_=?`MPTqyC87bd(OS@t5bX3+C{7%(IYwB+UO$Lk#4}Z;h|&(f`RpoAf>uYQwuSmXrH +@#Q%$z|(Z92c#%K0rqWbf5?~>OVoiYVK*i9YDwXkucy_<BSk!XVBMlyy3@C?<uN*3*89RT`dZfh!)Od +9o^_XI_9@^m=duNU}!X%>Mmi2ms-j}))A)_I#W>g}aF&?G4yS?teky03F(U-hqAK3)z2(2du7FeYeFR +($=srzF2WM%%ftFpE;%g19%jR-BK}^{%6vzjK(>&(!K2y!x4{{d30m+djXeZ$E{*Q2LkLjd&k_M1|`P +l$2hNL0IES=<10C(aN<z2^_umz`{E;{3Uk-3<(QXYb8q8tWf+NJHx~E?1T_q_l2PEa~o)Qby2|85N0J +?RJ2Q}-*7jYSk0RFeGpSjt^I>|<&_^Pv0$E9yiRG|VDjde(Yp#K-l?!}yNIIRzexdGSt6jN0kLMrM)> +O2(Bxlow{ArN;@hDOJg47&d5-h<sW~6Ng#ezQAASwN4=dy!-oy{TZJ_$Djr7N_B*@hAgKBB-vzm24s} +$_>%tO%av+Pa3RMGmjo<V<$YW<iH`)&jMv^M>%Xcw#V0VJ!>Q^msUDWHX;*Ng(bSDM@C=LW3Y$@Xa|? +sCHAPR&W(Xf|bDc)@-kHhV53-NOWE$NV5;1yIX9lH1(=L<K`ebjKnc>?WKFjL+I`o7^_k*vRc9JTdhk +OWQo&24=7&2ta(EORa9aTQx-6zG|EO{(+30f8V~k+ETjiD6<X4#MwwE=AgjnE!DOgtu;jY8pT-1K}{3 +!!9yZnmLuSqTle;Q+<$Vp?xj-cM;9<AySNQ$N&5lcJ0p%TNw6MrbEzc~HlNUjH5R(RZ`?znGVXZ@C}X +q4Mg$gR^_<9a<y)QpNL?g6>pB&;;&z{4X((=#+ZJ|R1iH0n1Myx8d=Oep#*!jBRFNN?1pUI?PfRGi<} +12sHi<iTB)P?;b_kcN)ey#(s-N2evZ9f+#z`SEl9@vT<*HLH8fPi0!DDo0MXhKvSwB7EW0ZDn<@f`K9 +OCId>O}4-#R6SA`LR7-f_*3$?Nzfd*g(Ss;ZRkcmBu&s8jbAZIgjVZMDQ3wByKpLg)QL;E{~owXuF(q +fqJx(;l3*Ba(y(;hJMV>K7U>I&V2LCgvjse0(v_4LSwR*p=QZ3hr{RHC9FO4m?MMAJw2f&>3W-IPCJ6 +H&1D2>f41a@qNcThX7k0D0G(T2Cq-cT(utUJ7j9C!SD@LZs72mK#iC&_tk0TW72H8_z=ux`a7vx$eYr +WevGa{~$|GPE-KTQ|{k$WW|6q-O?A-k!0;UJKe59}9xEyrTqB;SESX%duPPT%D`^HuLg{!h(H2&6>ln +zfZdM_~0&nwK|U0|S}SD0@L%;UF9+ecVUz>m@mO(Cx8AI)8gPop*X8_zVni>QHzZR9;w2<^QuVR*Mc9 +gLSH$b4)UZqCI0%h43pRkY;}W!pmAvI&k>jCQJ%Ilo}OahWhn+1KgGJP3L>TiYDv#+Wk*Pu*;I{_xc7 +@`4w8@Z3VFw7nmi3#LAK&(d@(vR(96NH{~-#Ae94!y~TklEa>5jH`&EJ4bx$dDI*<`$66lN62w5$1*r +LNDvK!<fY4U=kTFDzBsD|yoB^<zpY@MhU=|x&7<SyAY5%y@vXq>DtI429K3m2+Dk8eL&i;NtS&IPO(k +;P<SZT<y`4X@MP|G*fqTQ-I;5{|2}*3SrE!$U5<&T?EkZ`X3DqM={i<BlGf5&g8G5{bxY#Y54tPcJma +`ccFpDWhGfi{!vN`4UL%$f1X(>K-$q~m6%1w|TlC&6v=4L$hGZyqP44=H(E3+UU7o5DnJxp+0ju2n_* +x$H{BS3Y?;=HhZy2B0OHs-;r2{$EUy-E{uJ`8pFQn)Gh>jA5BdKn`;ta(>LvvG6xt|!=s9=T}A4msy} +_qg0LOnwxY>-))FO@{-jDEL$KUF|d}F-l7Ck*_eBvljVz-};Q#Ff)V)XLBFT$3yivoHgN$j3_HL2L3c +(ds9J=&)Al$t<s98nzs29%i7#iCn&h>nQn7l0*Fq|6UA(d6477$>~e?vE?PM&`LV-`=Z04!xc~QQ8TN +0`vfuRiEiJ=-+#5vEzf44WCk|n62FBp)u~}=bG_&rqN#CbR;_uucGF>B4(XUS)LDF^C4}!lL5xvISnD +=fTK&yge-6R~ryYT%xJh1m(AHe!3VhzsG#P811qTg}1XiXym#EW=S#^60-60U_{GBCCNFF~#GI50zu+ +7ZF(yy5Y>RharX{v>?6g2>9u)?gp9R$;_n(K7jN@;s+Ff6%hX`#(X;mY-<Zn~G^a(lV1pHNp7bPRrE4 +LCXXcvSG!s4@+HZ7t>6r4HYG+zEnp)ygZ~w2BRb5-(2%@Ycf$k!u)lSn?XU1K+7^Ae{c|<KdJwZxHns +N6HB{A?|F*6JSP<Uh`y<aeL*KWfh2mkqX*Fo1cImEAloZ#=W?d2>fdo9(#~ZxK}buQ<7>t@hMC7P+V; +p5D}yx|^PZHeE<Ye60VDV0N<|WRZiVDP2eQ8+V$CfTd?ZdzVp$JB#4y~x6nDk6+m1e6IsEq24rDkTE> +~X3mmbPp3^Ig8ZB~bB2e^VS;eEMZ#|M!;-54ONEeJ5Rsknz1kkKwjf>Jn6SGz&YC!6N&<oSAH2%+m(d +5STc_GUJIxaZcS*dUxIU~+QqR0XnfkMlBx>qkk@%S*2+E<Tr8I58S0HPSs~ktg#YcuE=c>e3W2F)s8F +pG~0lXPl_VARsQ<xCM5Ns%*$GOs9vC1l%BmI7T(cdqSvl*I~t7w$zC@o>KWKNM@QRKscuUNkDxSuA2* +L$R(+pwtmSiH>VHhyWDP>?6Z>D3_~sAW*bgbIUSagjY%p>e2)MV<1ak1CRJdj1y&y(@~{?{1C#~i78} +dvat%eIi>yJl$>emFNELg=Fw1w(vX2XH1RR=oRr%Tp?UY6E)ekzwGAtZ?SpDgxsD*l+Wx~md2oEIgWa +W<P=9iA_k?4_^7tRMFd>pd#y=7s;Y~@82(!&a7>rfhjSUfHT>ay1}{is$4YOQ1nuCskC)-C#kUXNo%( +EwVUrSYtnCKceRl^uGaR3YLiL{YUqIg)4$`wUMMjsIB<WU75s!ROy~JK&ST9fN);8)b|n`l=*4+aHt3 +%Dpzn(;?>3^!9y;tU2>l0r)5#&Jw!?e1gyl+|9u-Nwinrcvr;0;IqP(uth$N1_FVrL)%yN*EPA*FQTs +HrxN@2Y_|}8bskb?=jD@0_Y<>tjt1^6M(L!1`(1>N{RCnbozLG_Ml;@#oL`mJwC0P$%9lRm8P;YXTIu +swqSeQ6_7AnUodmOmVz-qbh=OX=&VyX-i7wmIs=^olqF9>sMim_T?-sXKUFz#!rfPn>(ecBy<o9cU4{ +tt$UbnsO^!imbEaPbthqE)k;`3FWDA>3AMFj!k8FlcWh2w+e;F!B@0VhGiY;%F2%vzG7K6;W=Jemn-7 +R;Z^;4ZvMv29@VrWZz112NR15OEmtX??ohg=B_MkKy4O8n?+nx}lpBXL(-u28X5M1wT$L6#DtL1x&^{ +)6Ow)ILq*SoKYTcRiu<V1t!+(<w?ub1a;+2YoN|{Zj;T~vh>=%E@W|_UrD=IoMluCvF*y~@g<?Tevyx +hU->XLQ+kEl2FF9P<y-JIJQT(}-$XC)P35shxnN?K2V7Hq>jtp~j2Oy38kJtO_D&z}7@k+4m$BBeNZH +gGjT1U-@WB1V?K`q;OKXb3W7u7=K8xuZe*v7w@N+<z(i*2v)Fu^7dg3Bp72Dg4hGY{iP~109@t8eg<G +5TXBP_#)VZ-}%P<@O5N>VHrrwpzU^Dql}B>K@aqwsc%_y=B+Mh+1VJ<bQp&sY%WJlku9TCa;%Om$Vp2 +VfQ5XLfXE@7`R)Q(BmsqO&swDa<pNj$m**ib{MOh&wExfsr}4Oiv=Vjik7^q9J$(oCN}J^4a%Zr4~_8 +Hwm&hT^LXy&W|+27=dtUeQ<JV7*liL+j2y`=V<lHdC-ejvf+YUWz}iEuTa}m5PIIyJ5zh1L|}%G-p6u +rXMMC=cGBDq$y}Cjc0zRWMy#fx)~TxisA1<SA^XBXenM;Pjv3tXWBZ$B#>@XUc=n=xah3Td_5PMz-#f +!>Ti4I#Tl;s9MOhm9KD7PMPX89={>{RlI?108!oQ{6w-6T(_V{oMBSUPbXr*u6)r8oG7k7SFyvx|3pB +tkh_}k1S+=Jef+Bxx5vKJ3`N4Gb%3nBjnrn{gG_GXjqEcs|JQ2w$CnY_pF_fB!VPb+Sxfp5C~E~SU=< +xKEBh8UoG>pDXANEmuoH@Aovq4se|^4+T@-WD=j437qTb9sxr@x8JAkAv{e&KfI~KUrg+D&a7<pEgy+ +;`n_u$@{jcUM<k(Oc2cM@3hKQBbw!J^06<>^c@X)_je6uCy9+f>|oy^&<<ZZcQd~Y#;fziRA-gD?PBN +H7Y_c9#{lR4`K|r#odLhPwO`%Y&%UR?uZ>UHbvR;25QbmG%O`EzQbRXT&fxRtUq_W_A2YdBBtWIdr}E +@FJnTZBRf4)EhfCpi*3I$dakWLEd%e1j5<4VLg;lr<abw&GGzw{7#!DICl)#?Ar^;PByXGbjXO-MQcr +*zXx2)^6aEX3PXoQ+EoSc$#?eQ9AC`jxBLC>d<0@UG9!XCj&RHF6Qt0!+KVj_)FXAd7`kf;`)YjJ@z> +}oMtb<XFLN0s<N6mrM!j~Z~Z5orLy-nN2=NVN%C(iBWW)YDh!hD&2k_RA)ow~g93Be0m9eBC$&3}p?~ +xo1Tgcs;~%AuqP4@mEqA=Yw`Un=UaxQ~!WN=xAS+3U@bfi+xyT^Yz=b-F2m@y*38?SsXL62(0};TTTw +_-s>fsZ0ta(#4H-zUjvbE?OEU_nV4TTy8@o=`twwp5QGi01Dyyh;}4SnlogVJvDP1_=b?t-<7>7@XG2 +Hv$|7*9dvtxp4JMpS+&WWW?~(UIBH)l1z}E}Qrw_ooQ)r`5+GD!gCV2>Iw!PiV%6MsrU(du;&cbsj2q +oa9@>VbNu(pRaX#zvN*~_890A@ZI7GEofDY!1#bQ<0gj^nr$ca{f?JX~tods+49W!S4TmHtcya$IUO| +I(UkAX|W}b7#_gEO7b=4LcyZ32$zu%b`-9FWy~5R_`WtxsN{><p6n31mlC5Mn!8KM$v6YKsVA#RZj^y +w&t?ftmWI=$LKXk(F?piA@jIi&i9$xFwUD+JbW%LU7XGcHP!Q({&xoAjkZZ1!51eo_{&`TmqR}lQvPn +;2dsRz<`4KYIDtRyY6Zx91|8csd^mZFm!$i6IZE#PF`E1feA|X?|HQZBpLewoVlSNF@vdhE5_`Lf0(V +K34P=mHZ(wbhv<t66Zvzi>pAOsS!h#LAex<Iq?fvAw6h!v2O!Ss--A)GI(l2DZKMjKIz(VYIwHI1;Ls +V#IErD;Xas=7=${@CP<+gJ-7=f_87q&B_|Isjnlis7;AB-eM{FH@EV?S-$f?@JkVBc83?%IO2lLuTm| +E`e1@h`><VXTU3KD)uMJVMmvyGi#Ku+MG1ox1KN_?0aD`svt)A3qju^s;<$?{ECOeA1dswIyG*y?EcH +4O>cZ`*ug)tg_VN>ty?H8;#1eYuuf9nP{yVV*ZeO$dNCo$vx0#(;`sk&;mYQAL-Xiy9?x^Q#KPQH<M9 +$h?9H%c6>!*dXR@h<_apTyT_-D9{QtML8P#RX6!a2fVJk`J~*Qinc$_kH=X<BwG9T2HU>|DI@a;!W)^ +Cj>iM0tZ-m@Iu!F_yFdd#GPYeKJ*0$O1>2@sN)cc7JWy`6(_?oU5Zq7>63TSktnc{G}+u|xcrs5`MtP +_p8wZi-zm@W^ZxhXan23TZv9m|o|@p58c=pDLZMcWZ=go>vZ0p)IHGq@{^pq}B|r{d1t`}_%zjkknF! +p+TfMVNa#%GW-&^amr*S!5?-lU@$3Oy93wTcUBB!=(C^(yP9ub%9@qf9c<NzHD}rjGpZs$u!;j{Fi<U +@R=6S7o{yGSlbjkHIi+ELk#;<(-z)L$XbI?-U!}}iCT*aSo^_w2E&wc?)jn7*O8weM~RyPbkW__hbij +03a_T8&XRs~PA~mTw%d*#PlU$d^5F;|94|#78{cCO)K}&9s;!d386~Cl^}bfq34JYN2%Q)4fhOpcQ+P +aLldicEa>Fna2b{DAih*TW#&jG^U4BWZ2ezCbCQCj3amyu<VIxlru5t@cy&rN;H`Mt-PmT>nfC>(nC7 +!HXx>jkculuir;J1hgCqOqcUi`Q!7d(45x*jmDgAiJLM;|RTZf|Uv+=IqnVZeV_-h=LIoAp4IlEOLGk +HWpbuz0(K<3yT^lfvd%tg3E)Xq5Wf+rO&^b@w5J^-G@Wmt`Mm!^e<`)I{IpJ714&$?$c>{};9OPXO|N +_nE#y(2vhT|5Z2~Bp{HaK#~Lz9D^{B!YP;{K?p`+1R=IxGlWvu=Y|>3zV)MD#*2d;31V{J=(qfWig)O +W-x<s9ml^ykhCbH-eIpu)|Le=p%uaEAD~oQh^u_oR0r!k5MfN-hdy{jMw<ydnEi<EJ&$;3^-0e)<w{P +~YCz^gmzj*iW+%JTDG0lQ^BqO68vEa9xRRq3?8gD)b81If<<lDz%1I*x`<;B%~SAKn<)XkFhfne@E<i +9k?Pp8;BWRFjgi)Dc9Cu@pbD&<cpl)*f?Z_Q6Ms!wAiYL$oBZ-Uji-f+d_OF(5m^vOf#B<G<^XBKSVW +A}@3lC@L+>+0^i>U(HdHNaW<27!z20oH!yuVP|vEwR6MV){1H{8BfJ+_|%W#?jzApIWW?eUP(OZRN2o +8)Sax<pF>9`hMr-0e|=Ue&^)@-@m?}ld`|b$vm0CsZ(g+0752eXC&~29y^loFFiXyB^`=%jm%vay~kH +9Nguj0;=w55M8@P{QA3mOBl^Sj*ejs;upm%%#QFIc=XC2_^lA_(r55WHRn=G8(vQ(wH%J-ueB{n;>%p +F4+NvavutVGc?zMdqu{bs1Q$Su!tPG|`G@m4{9>HJ%!So_ap1xd2_{6WmAv5~g8h9kY@DfZK2?csyRI +l<)Pm@XN+6BpnNm19yznaPUfV79aSeuB76dQk)^{aVMG|974KhUqp_pf>Y$cCb6?6OdG7V|Y?7CCCcg +K_Pi(mjuDoC~2Iy)@f*BOz}2*z|=v>Ykb(RZ&hgy8y1!V|f{fd5rbyTT+(!yQKI$^YaIjmDOH1mZ80b +p&5?m`47Maz96pfOKtKWD#faQZSSDqp*Oivu>zxw0l3=>goj?Ja_@{k7U$c}+MN}g?pihxWar2Em_*z +^k<9un;RlkhQ#TGDb2sD5a1Bp?f9n?WC0*n{B{2YBLOb5R+*C$@Q^LqsjIEiljXSM^&zO8t8wiz4v!k +CgScVGrh>l8*`m6gAH#i5TFqY642Xirb1cw^#E2lKhEelhaf6ndjf`LwIrLK19Qq%Pe?J=YfE-(!5W$ +p4Bf!;@%^iFnb#+t|xk;~>H7mkr&%T$UoKY)+sl1A91`i+S_2t(|+nbmd7WiJmiJ_mrLQ(EoTF&dFg^ +I}6$%Ctf1%9|;mT)o_6#Ry$dxIQ1_L1d;dXz8mIt{sdA$n9z@K!MjU>~aW%k){H_dG>5^N6lp=xA3M> +De`s+V+_=&cFgcGs5SC#Y+LQ^hTcMo^=>!dav*r~Y7R2;V&_IDv$mC&@W#pE?@E7M{<oPYe+ca#ToA| +0AHt)3c7JMhe;ogo=l#Y=%>URGKO{r`a>_rKEh%W9F9Gp=EHwyskWAlj2N64GG7R7HnZ#Rfb64N~6u@ +C(m*foJewIkO8-HwgzF{h{ormw@X2IJ;Yx^ew?xjQW-Fi=w4^i;H0yy%1x^T}((YJyL^^PxabT6rHVE +~xyRnRS=g|;7}y~ep+7fpAF4x%02<F}qTM7?E8lD(9gChxxeZngD~0RB#^p2a_vE$^Smh2+4uIn)iHJ +bQ1V@$n?_dhQE4w*9<>h&}%)Sk2GpZ&d6h7sG|&_a1rqE))u<HCpK9AGz5dv#j2-rJo3}|L`S0RX+}X +JvMvmU-9?PG1Jx*PWqN58qE7vzTSx#)f5!{sRI5|S@PS=POHOYrVFRi7t3#1a|Z0m>p!bq|HaVnTVAV +uomI`gB(@qJLx;{4_&RqElk0+ofIo=%crYjbwSvA=tTrNKZj%s%Kgzhv(!kaBJa5h?csi>fM;+<vR@e +;Z4XtR+qD2|VQH)9TkSIey6IK>1RId=?sSpYN`NC&lj`NcYA9@YCBl!}#FpI#wo**J3!DjEdSJ?5&ap +=PeE{^RzV=3&2d7zCZ)A=&G1;F=`d5(+A10s!UKugT6fL+C|F0_8Cb^PuL4EVByDypT>8>}>h$l&%sS +<7*@Z?@_I!Sq6DywXyX;|~289F-H@sjYvS@MXDBNi-wRn1BPSslDmUi#{&dTnuN9>hsCm9ssY%(`U(x +7IeSzE{evgiyjHPE2RS;UwT)-cjKzdJ&U#=Cj4n;K|AxnpeZ`U&w3PU`Le?KafI7oH1Db;Xdg2Ro;7E +lLhmR1ydL;=LhB@@Z+`xT`Md86@H=0azx%!bpU)!jv`WukBZ5DpfnVb<C!a~;tXw;h<cA<<(B%^2^vd +LVR5GYX%|(5^wf@0NXx_m(O!i#$N`j@MEx_eMsNxp5i2kkZI1x?;-GYu`rP>*{CFK`yd|JADfhN$E<+ +E#NnKDX9)!oAaHY4H+m}<L9hb$_TJ}$u1^E8wh=GDn+PC;~y54GWCr_-(KVQkHlAe4Mi2_@;$U+*k;Z +Et{BFAjl5+KZ<00!N<N^0W^UZsekb;S1Mi2bf#^_{pBvhgk%0v;jMK^wneGztEc3ftY_B?N={yh%KE5 +N)PlTqjNd0wlMj2mTu;S;2#Xbb-k0YqhotrtF36kzD!BQ*k=mpiKjJ75e;G4J5@4j^I;O*V>tQb@An4 +B;E@(d75`x-QQovwn-$6MCu08j_`e0h|C5*fDEj{OoPUPm4Rz7CENS?bXu#hxTf66E@+Q6oZzGF%r@x +{2uVzq#w=x72?NbCHxZ`D#?s$v8r&%{d+<<ql+akL>Sc2^N?}m;c_AfH{6=4qDC0Nto&6Y#<7T}hz6Z +n24!1s~VfZEHt<c6-;o^L1UyG8jX*ag9k$y=Ho!S7e})(YRnSi@bLBE+{O{vV;3+vgaj<e#9p{bXmUf +REYIT#YP5&!gJ!eCJh4C%y9E{29Wp$%m^dT0XFC7wrFrZ5{B#NnZ=I5-0s`N<0JFUBb4Uc-<fv{*n^! +<>K#--9NweZ+8y-r?>v?9N^!*^=-e)e%*q+z0+OkYr2c5!~KA}Ld{6d$T6o9Au)|0Gft4AV;fAwRS8m +nR4+L^nqF9pW_caTj>CCUCR+EfRx)TpisBs;ipZ3SlOB*dHA8!%eKonmUUb>H9fxgei{@M9KSv}z#Qv +-7eOcEnd<jJoA$`bX<~x3v_2O}SBtu8UN!n+I*it4|1QrOm)X0^d1aFW{4q<_16C7Rc=xyPqiK*>6=> +}imkYi-?q{?FHbcc|LkYlD^ISC2^KtZj#%$J6KT+8bWPpnw8PtK$8ZZ);=LI%+TT4kg?I)-*a={2k{# +q}FmY!k52A2a|tsHquRf?#8MO^yzQge-o?iG&8DTOB_b?T$iYHx);jZ)xE{XFS)U;z^Z6_U9Jl(IrxS +9l<o8^w1902zqfW*VhuZvP}6!LgLOyg0jK1n0;Lje0l<Y8akn!1MaUu;h(POttp-~a6?jg`_R~f&ob7 +Q-nL;)4IvzNzN>y%ps06x{#MCR?49TJaSjLkZan)dcm{rH|4cja6)j>gDg!$Zh9JGJPTYsI7X>Dibgf +&;$~YmwnUIoIjgxKX=5kzc39y8&O(fjxyqHkTd(vHVJuE9?oNAG*tV45Fuhxr(C1Hv&oCA`_vv?gX@P +raRZ*ky}oqJQaj~y(>=fX8<ddP$vY7csXQfK(QW$Qj-fll#CxaBNYz-xi<F6c=M^+&``%4N#3+ih> +4YLX%yHcgqtY_Y6LqXY0*d_IEd)&Kj8?YKUkBKR?9uGCM_)3h*rUj5uzGX4is|o_6m-leTX_{$6lfX` +o(jfETZ^mNXp@OSk-~d`bGypY!?-q@ohV~cjpI!T(*n6MC!x+MjH{I+hou9`lIaQiUDvJ4matCAqp6e +T@BO8I1mE93=^M0~K`{r-AA<fPqM|SeBOn2iAhG>Lz$k=K6a_&jh+#Me6CjS0pF3D=5V#9mqC2|n5RC +1nRU6oC(3T=Qv?b7<1V`xGQ7ZWqc2jg$D2Je3&wER!gEweX=zG8qeCspedpUc12!B6BzIB*(sfb_NSm +Ez!MQTrNHwaJ2UFdRG@=W*9Kp5R+JohzkD~t_igJf4AC*O@$>}^>=yc6XZeRJgBO!@8pkT+F5{AcNhX +eaJKA97DO5rceZjHWsB`Oc%IAkh-)GoB(xAAz3$&9Ya1R$26$+)<;$6ukTK?F`WG&7=M{X#bk!E~>e^ +SMaNPS63B!C%Hc#n}O@kS?(!%ZRq&?x}m8u7*D$vW>`a2*!<O@3HW8w`kOlA04=xG^RlXK<Fv^!y*N; +<Y`81%S#A;Xx?o@k7gvqM12;AK2=17H5k)ew(O#QLR|llz8ps?aDaU7e?ga~5=BT8Eqc97ig*BJ%Xep +BGBS*YOUd_ca!4Tp35;^p_Z`e=|WVhHM+Xu#s91^jzHlAbVX)5TDvacDNkI@w}5l`r0K|`rAH^YA0Io +n$qRfg~yl?7Px`I2~|GrCN{()`mb$qS?lQy(0w`f-d_DIVpgDcks&sHR3mP0G9rFE#B(lcmQ2I334kQ +I&CsV0x6(DBkDhld6YsGf(*Rl8-K-rdM1IQLr!WM8war5pDUi42^ytz`)(n52L~KjrnB8mZE84+hx4~ +T?O}WvacPZijMn&cxY}X8S8{J;I%k_tUPxk!<=3~HK5lT=Y|&P;%T({*g97Ug;!(WPl~b(r81)<Ww)B +)<H$84$Rl*BDS@~lTZDByv4Ab~9!bMvb*K#Y+1NpIPJ$^4J;nsP#DF6w>BYmNFryQDyJF22bfIT3I!6 +BT#0*gZJOdgTyx>z7d0K}1@-Q|zCMUNLrl}~jaYzE{iX-~f_s+S8Xu*;Y<LrdQ`KkA}Rs{G=am|9gky +la^pE7fyH2U&PG&k;Qj8<j_QaqQ&FY1Q=UFQ<EUOi0-e;V_Fn$27T-1fkWPN=;c))`N7z<Bkga(i#~d +9pGtTMVRQqgs)()#l%d?7<$Eew_*gzWRZv>*c5_4qILb!5Hr=uGY%+!CLlZ-2nQFpU9u0np`O`Lew)e +%>!ShE?9bt9=Cnrw7uyZowxgDAu^fWC|kfu?;$2O%~F0nRz?Pc)RN5HnNZDM0W8P*^@JbK(#F)*ON1q +=23_-QdvUJLb3oNKQFJ_JA|EiHl`)1*#x{D<*LNjR7`1NEL0Skq$fa_k^cF-PH&|ZMks(#&o*(S>PTm +vw>Sjv{^y_3C5yxF{^X||0BNoxlXk|>AG#ERPA?9@5gk*WIDvgBKLXY?kPNOQ7Ut^^X6u{@VFK=FmC2 +gd)N<mC=I_TgD){^6q7Cl%umGD&tCpVGGfg$dO9C$XEShm|<Z{djt<m;6==G|jL@6;TGK?yTSX7#=#z +a&4eAzG{~j>v{H_#}H93O(_l=D53UZE8P_83E)LZ69+S_RZtTpt{58wvZC2&!o#UslS4$5ns+p560ZO +Md-Jcd(ryDs0{S9E+BD$0KPxxx^bmfI)8d$BKPR^E;B^!-qJ=~=)(%9TSPg}p%I@00Xr+z%(9#r9>lQ +pw@(YuaEC%2WaZ`Yo~koW-<s3;_BcKn3IQL7%2AjC)8cdKI$GheURon(3&fJgF<2_pae-&t+03IXi7^ +!}47P1H5>X{5?{Ph+xn`%eL29-=)fa7eUXgQWNbdQ$l;-_~qITG<z%bnA+R!d;Dod>{sR*OoSf8=Vn@ +Z{j*Ipbq8^Mtx_|zQc;qdT@TTIgzoPhL4#3jI4<+v@cnGpKf9Lg~Dv}e>+)h#x(F2XL$A)Q%p3)i9uz +0ps!xl88p!CM*+Eu8wKE1>hdA-&#yUpbR2vSJU5{-C#Gk0ky>;ywoPE`L7y9Ty<pjz!zCPY4J9^~Ju0 +VSjU>AE*TcgrNjPPzVaaAVv}-4nsIWP$;#9W(0)77)XAq!buYUiryqQBHTk9Fxg4bTS&BPUy*xAMTL9 +yA|T&F4Djd1<=A`X@Lfv*<9!e@e$VoKDX?r&8kFqymN?xjAp4c5JyJq<<MCgFWjk%|O(@t-0HHlNBhx +nrFWT?zi#0hF?~&Ga>D^-#+6yH+)eYO9n56bKDYQQ&PVIE;Z5a~pm7Oj0#QvF2{Z@78K2#lU+$GI0J@ +xbnzhVwY3P*are6Gw{{T!C<bp~5yJ}M-tE>ulm?P1s#HSzDbacBO;Ai&#Ab6@1V7rlpYRO7ab<9sF1j +eOw5-MhrVGR!Xd6V-OPWrzIt^M_x{Bf9}2|3!K8n+W>K|9I@qRG&GM{ad&F{apk9$!&kT>zxPi7wXn8 +hyWv(yBCbV(C%3fNg~b;E^l-J5dreHEA^9kp$r;RPI<;%3mWcAyE5hcdUjrlWGGw8ld{>uosj-oDvN? +4mFaQ<uT0(*s5uFahc!XWrEQ;7e^|uDs>QTfI9EI<FE~X#Uy}?6I${o!K@*>9tr=nga<m36I{>pjad+ +<O!z}3?i|jh!2?q_@Q&*W>^F3#a?xF(mN9ZUN#tc4=^SHnrmVpv}(;^=QY%j{%=valfhh(_(tLC&pde +$Py$wB*Q%`6wki=M=_*)44n;+@vmr}YFqTAPx3^a#+_7S$Iyww%QPJ4NnGL?iCOf@SYJ0|7790q(mai +@bvDSn1*Ihzkxr=cypZ*F8i5{`5lm)ScuX?acs&(N8$8Oq6^+XLo+Iyl2xbLQKMl#I1j^;{3~6;Jd}Y +WOKI}P9lf%NM5uhLb|d#ACagIJ@u)xK<p^b{4gz0+$8qnlCCOhDd$qFU?$?rEl$)_Dg&#NBS%o6_pN^ +DoL5sn_%UxX&rE@IF3IW=pmH&1lL@bi)FAGWEYL3D#Y0sQXqqA9sWHOc5=4@f=TH-FaY#+_K@w37Xbz +MXHvu;6XG-6kuwTJyjutp2&#w>-g+r~kILeRJWn{-=uZkm7Y?02*C*omBuP;D^2UW`=Ctc$$<QT_f;t +joKIcSOashlnqL2&-kwS0V_v3Xwo2WfJ;{v;7H^<H!W99l4x9cZ}Y4&vQ}7uau6na;eL04e5U!_~HcD +03vO1yNgPr8#8X>5QLe^52oS{D7*j47mRuJpYpm{RKFGyvUDyJPO@Flfo#H!e9^u5dx(!h(urtM>gn0 +F%&`Z&p?x)_WFB3y)Crg(nCnF_vSa)+wy-j-MjMWn@6`H5&U^AW5+>qA1&HW#owAkUu1{EH+shS&L>B +~ugwTJ-RX4HTU`nH6&-JXMsg<s>?+mh{_F&~)9zsW-MGhg-uRBB??=P8683hh+imaKP4T`ge)ABBbYF +wKeL}ZuM#K)mIP{O8`FMloM+@P`a#Ln^468qcJa!(k<BOv4X)S}v|8IdNJ&Pac6Mv6BAGEY@B?;hWem +AWDO{)5P4W;jnsRI9*p{TX9rM?=9zP^99y{Gz}7|UStUmV5DeU0~CgWZ7;2450KCm(KXpx*g#^{$pkd +_07(yc@B74E6t8DwODb%6WH7JQUMxp`^DI<;o(-Z3&c$$j_Im8W?~zIF<G<jd^Dg>lkw{p`>jLDelHO +&S#&dC0<?!G|Y%&x|-ulf1VwGh)x6IHK&#$fF{T7G{F%=Q6+c`rX-s&rnZkp1*Q{|qCG)86)gr+q(f` +FK5hBSw(ZF02_$Iz)Qtd&u*dkt?#UXQ$NMhDcxqokg68V&0~66A?kTxl4}2+k(qy^B4bRVqye~U7HTN +zqL=AC;XU3Z7%{UiWja*Jle+h=^u!gGTGpXn-b)r6w3o$)R7Cc)$5i{!8s?g<#0$J=3cRM?d`qUamQA +Aq%Vl)I9@^CTf?!w^r(YQm&=pOE+dYR<;2lI;y@Tnig=T!C|B&%r(yJ>c)1Lk?GN#$AyuZgP&i2`kF7 +U!@11}2+NE&Z|hv$el2;H%F_!#jz8Ny=e__=cy9;cBLj%!CrRl-lLy9r@t_Y=A#LV^=&*CL==k^HYGM +q%oVC-GDK4?~%ghtF=hAe^E=9EBcv?rtZ=m;j4|&aRz|+<=EJROvcUyg|6VezT#Ir4M$<i<?7G@9gMl +B(uQRnVswXXmGp2ThL#TCs7Ue&xHgql7J;{gd{WP)6RG)_$Arn_l3i8@A9Q9f05t(>SqJ4&!WK#579A +qz=bg8~Y5+Wg_n@0GCfqz+TISImp3_M;J6LL%r<o6EcN&U`DxYpt*(*m2i*ZNewL`#|9K%})u-mVRU} +1_SsM7?oSf5@WHO(83sE}S=2D&JyT-C6He8&!B^gjSfvB>f-iCxe{$sfG^KY*G4<u(5TpTE4`_ehFh7 +=nTzNZ=?0Ziy%bQ3Q+<2uL6(LXgn*5cw&uJx1T=4#}<pgGKu&><)j(o1BjAntTzqBkG2aTUJVbKFy20 +Ti?l>U56k$^kUSGWI?=B>-L%6H)C$Q>Xt)78`wfSq{Yz&b-!u~pzi`cwoA`M$j({cQe+h0Q&Qq>!L_B +!+f|Y`Umkrc79!yu4g_!Y>i9jU72t28AF&T<;mQ8=8-hc-2lhV#>1!{5_wWah()}xv>-Kz;pWBw*ERW +Kw;?MP=hyPnZI?T#9jhRLM9@?bs=T_oRYlPU#ZZxs8+D>-y9ZY@cD8O$J<-YfTP+vbCn?vp=6|=X4sY +#n34yOF~m{>i%^*dFFmwMY^6#>rmd(nMg^p(&4P}vVzh~kI$VE_3e8~vio0qC~(5g7bD9QL=fVQQ#i? +zILEltEwyII4Y^Vjh27BCs+-|D_C9yW;ew-4eUuM0H)szFy~Kxl^pyDHY?G4-=712e@h@cu{m^<-sbO +Vx_ZH<8mR^E!}*TE_NULXYG=gGQZ|muM!Ri)g9oqFwi-ySeaLW7n?J7I-Q-iw9`gxwUE-HtfZ!Ui(01 +<QT3-bkWs1oee)1N`gCgfk!VdE;+1-X3_vQe%JUNDX0vr-FEWx>icMKhtO6rzc^zsM446D91Mzy>-Vo +DOPA?GZNIM=A|H30czA_GTvGkGMw$15;UA&^8^Ajn<TiS7sQF3UNo+}<~ZL$;W$CYO?tzjiO1O^s8WB +@<Bm?w;$Ewexka`-wNrro#b>k|uyzp~GPPwD4p{xHKOcQ{ib9UGpUw-WuN?mjzl-#d2hhMmCQF8<|k8 +662(;38TQ0nNHde&$K`B8HNcqDr0g(<@uzlD^rbppeMJ=N;#wrG0Yb9jF;ARkfaIndIDA!dD<si4cV} +EQ-TQ@^1`WIbvPtCDnHIs^O7F!mV~bb@g(UnkFk0gyB%g7FCD$3Fv+Ta)Y|4*C11M@4j5p!q>fZA;>_ +$Y3iVMNwErNk1pi%Z5G^<g1oM!Qfs{JVx%!OGYoiZLFtNq#8~ga4u%`tknVmt)BGtx7tu3H+g%Ky@g} +xqotfexmVUuU1CLlgE(JCLCVp^P;{Yx%j0@CKlu6NWuW2uZRm*oX*_;o_QDUMRzG?)Y^s*5*EtjseBv +ZDQbim<KK6zY2aE4NTA7u^m1NvO#EBcLFCTJ8{6O7MC@<qVn54Qc;Me^S~^#e11IPC{d1PG=mVnay+L +lBDE{z9+~BX^qw93!{9bHhjs`_v=}+6iSCyyF#^?qkLnxKq8MHzy2y+d789KAVhgNQr%Jm=NsVj$eq| +*gNgpO%l?#S{(9bh(WtJ#g_je<eU8+ylLdozo1{0XE&rJ-=y>1W*gcKli>HLa!l>>Ug>-8c!ON(ySc8 +t9Ukw?wx>+r+8X;LGWd3FdP{nIQR3a_nyG&TNMrAs-#_FoZn|=qGcCBwL@%pcEu5#E4n76Qy=(qwNmB +V%l8lAZAf2=gG_X7t?PY^7D{Aa@-~Yn}eVta?{?N$eO5L=-OT(m7_RZ&L!?AKzIcdW+>2<NcjV|xU_} +v5PrP*J)=0A*Az2V5!_uS6h?&j&a`UXYTH>r#429r-!kLJ@?1P1sS<1OgVcKXfOlB9pICHfww09rdtx +F6qGNpnZ_RrqOe%bu&aeMcXv+J%JHaA_3Nvz}SSfooO7mzAe_l&so(@aP42teCXG?(?XrIS0FjGM397 +T`LMnX1;ksRm93IUgLzTKDQiDP}@t9wymYApx$2i9=Mz<jJ=DLb%tp_J|LEJ;g*Xcc}aKnJaMq<C)Pg +YvrrVNp<EJ9YvubLb<a5wOBxjducBA_1*akfIkB&{Dn)&Hxntk2rlU&D5pyy#fo|tT3!cQOkIEdS{PR +V9jfdl6oo0Yw`~@<?;c~LD8^w`FJ&$fz!Nn;js8KL}j&1dfLJuK%o4)rCxF%lLf`DAQh^|_|0YP%R)v +vN2i^@e07FA=%nXbTZFvY4o{j0q1^2Olr`y}yaJuTH}hCnCIqKLzX)43Gg<BPGg+$(S2kO%lH^sslKS +i;lHM7_Rc+Jc8%9tZBVQs;TDv&vv%l&XAPlMbATQ$SHZvzR$vcu9$3rj64s3y^3q4MNTIi=pGuN~VDu +22b~ZO-N>rFhX-Z6!G;$KHUdEPohq@gTG)m+%50Cz+j$WlL=itX6`Dy_N>A2f^+z+b;=8s!=tKIyz?E +BD7u%w0y;T7R=J)v@P0)h|4c>Xl@p~UC&O7kk7iUu9A)@YUCGS|6^~;b!;yOrxj=SKjEVs=C!E?oV|O +E0G=^>rF|({s(>Sc(J$Y~@=`Qon&`5pZd@#Y~?l>UsE-xDi`&a0-z$GMYUtcAvNt__-wRoPk_jus%Ss +E&#rw|>?YNmDjeOZgS7=|4x{t()onoR%kzy1(*N%lV<poO0$E`IZz59afy>wl<jBIvH(f?+sBf;hE75 +cw%DYul2yeRtc8_ktv}4+n3#Od7noQ}NqBFWt2zqIgfPDCBd5A@@XWLl5#Tbb)+<sPLWlY?puMU%TWw +_AYj&yF?PSt6%I@#m^CD?;*x}8kJDHm}!dbgUuW0A<5gDkKCJnTf(^E4DxO-Zm_iri3U46dZ$2>Z#Fi +%quBm4v`;wgetg*8=cN8oKlJq65eEN27@0ngw8&o}w>-?B1%98XcWTm41wk{0t2KglltHtb6}`l-1)z +7WuhNjf)m96x8XznfF@)cIVn$-YZ2NTn*~{Z3NaZ%f;Z*2LFYl*gcjokS637|ck4d0~#NC$gywPUM-9 +%OY8YI69rM?M#f2%r7y@{nagB~S5TDJFxmHtx4{aSU*-c?5yc$XbBo_-w6XW9-Wm&?!IrpHrxBg#&Wm +Pa1vvdr>JPx^Mk-Z;#aRp?eMRzJc=5+Lv`B4x-emubzaCGY&fYaN=s>trN!=<Ti$PpT@$qa7{h*^W}K +mMe||DZA}fxW^7a81{@PZXm<b5Nv5$e(iY}k_K`{n|K}{(~F;?rby3YcEIusaf)s^#9dL!ioN8A2*5* +?RLE(i^~=#2j?8%LwoD9$YDYJp3hNB;v5=cYzh9Vwr<GKr4<+PFs}<vid)V_pQq$xXE~d(1O^}Q~h9y +#2Qg|Mf<EZo8X{mY@9;HXB+@Djw<!ya?>0<I^J!1Q{$T6VSy<2U0GfXyNV){gGcFN0E<bz>0jhk$@L) +oHYzXD^@>B3xwCA0#n<?X~}*dZPPl}m2Q(@0L7mYnkKs`e9FRzof)A(q=i&QPW>H2DplXO%_f^PLynX +VS!X>5jA@ya4L3dME0kjU-k#u}QhpfvQ%ti<9`!!Ls*QEU>dg@fyyWrM6oZPfAXHup=ZdCY)M;lTco| +#NxQ7xX4A$l5}+T3i{@+ThiK>+)Cfjqz)%Zx<GfnbM75aA0;fxMqFyuYXJlTM%@#VL>w1%gO^S$2L0$ +er-F~z!$ktmJb3ZCRAuNzcQy?CK$62qEbPk#TgsOTWYQLtz-%Cn2be6ggnM)sTYx?EA{0U|BbIvPJ?u +Q_uX_8%`HywrKb!?0yHY@Je&R8F`@Nd3v)BYs^?GHwIC@F1bRzf(&OI9Pg8rqZyD$E1EwC@vv#*M!96 +4W2nqaaj%iSB}-1zrU^Z8B>Ke!9&UiQtR5I7@p6$#Y3MVZ@YzI;YszW?j~{eKrojL)aC-o!69!2uN0N +ira4Bu{HBzT1>-%-PW(RvSGf;318jV7gv%C!JnP!etz6jD;|>*x^!TYqVYf%X^3xcY2~$cMw>rb3%{u +CH{e;7al7V@!lXAktx0xW(jr99tE>~j#TMYu7#rp0R~(k^*AqvX;))cKG)M64k&%O4kx@u5j7@h?~<x +zf?I_Iil&UScF?4(1@|U&h6k1f!nr5-p%9HF(hoX1zA*LJjAJU-qX8SZLh7cVOQ79{$#IJDT6p5mb2> +`#D?L09%LE8ltG7}b%jLul1vH$OiI2B{M-FL4rjDsQO4th8)UBM-VVRRx<i|^8;jR4Y>h>4_1fk4V`5 +=aj^zdEUw(fi&tJI_#+D$}X*ZXqiV*Yd&PfmN%zyo?Z-PR)?sweMKKDL*T#|5`6+qaj6Q8~7)_K^vA4 +;vk8WV07QMy~bS@9D`xfo-ePr5?wARDuNtc_}Yq1fbwPyVdg+1`}><(@Qy=Q)Q(KL)*4~GppRd>|FmS +RHA#+Q*f@p%e7Pn<%RmI$9ElYj`1qdA_1=Z#8@%pQqZQ9iMI(Z5)Wn`ngyP>jW@qWtci-`eSn-X+P;h +W)EKAdVFrAaXPRfDv_kK3!_o7u(qx49^7iCWO%K6Ez^)W}a`1D1pNh-$n4pP1(ClSp;6px+z%3$~A*s +>D3AYU@Tra&2l4V&sWIcnYl-V^&Q9qUcgK*6#swsK=y8+ujo%Pp{?Z-2|585yS1Q8MeF$97LjG{0c`7 +CDJ#nbVB1<;<?6Y-v8Z$G5bo@z(nPIn@(cRQNgTf5NbG251$2f<$C{-RfzBs+;J3ipohPTflOXl?gaO +!xFY1@}7l78^p_Glaj0*}}JRBO34Kh+(*gZDFw2;zRt+@P7}rZNV5q{0oKma{69c2lo(;qV{?Ay`7%! +WeV^;e3!)gO>E)g7E^BVTl~*4+q4&I@ej>+$$U-L88V17IDD@C{vCN8c#FS-*^jm6)1NWfKE9=YH$_X +oRPXyJ3fRjBq3G{^%YQ~nAC+%<(M%duR|(Xrcjf!%V>6)t#HIgt?*{lGsQc`0{vmGL-$eFX-1fQ(VoG +VKnnvi7-nrVkkgsDxYKQm|h28m%+pB25p0$E<Hjbhis7}CX1=B^vT3$V&kG$lR7l)t4nxmct7Mv@a%y +hn68|+9MXK@k=(?~JTed6Q6DR?4$0G>(QLQSj>$1Wjs7;JhPa&W;|j?A{};U_k;4%k?p(egkbvV|OFu +~Y9>0qP`f7Rd={LfWplbKu<|(R3L0(a9n%X@PaRcSZZe+(3*Fzf#22Z=T@2%m@#`!3=-QRC9ktB7oDT +Lcr}Sr%ZaBYAbTb#y=NuX?1J@TTfMJRm$g{RT3_%cOKy2q!8C&F%I@APy7)`WR*X63mck2_u@{ahz1< +HJV5Q%p^NQaZy_V%CY#nFmiKhPKaCuB*Sjy^B|1pj5r{~UyMS4rWn^9xceUqSE@z(Hu;PbKwmaJFWm? +R5IBLLJuOD`Ug$3$iCtoOec9sFPWwHUg(#pg0SPVMct!Cl*?s$l8;ryzNb_?a?ej)DMT62$=$WX7<N> +8)TlF}j6ML;x}LBF(}hB`(d1Z1|}56N0SL5Q2h<Cu8opzEf#xurrVi06g!bkG>8=5;cjhG3?^T{}Go2 +FV$el*F!%qNGw`#YOa&l*ZagZ`yF3d+C0o#}x*jHHN6dT@^AsI{6Pi!~v{0qAMaqdJSVQ#?dZf$?4X8 +dYurLz2M@-P=p}^uMU4jqM(w_6VgLD`4P7Pd*Jrp#BIO{=d?M|nepC*7jir`AsEfw9nY)mFLB#vYk_Z +z|0ZtZ{w{6<-rmyxMcf9^;#J5Jx&aIDiptiEb{&&K^x#5N;RUr2)TPIXx(rn?kC!Jy5Ge0qGma!Ygvr +P|z>&qM)On~k+jwI7%99CCM5t5gG=BOR(P-cWZh2hpsJ%rWOSayg=*6g<oRcs4W1xT+`|zO`wGb1gw} +#9NF3)<eo*e|`;Z~6$QpYpmI@`MlVWl*O=!vV5yLhO@advU%2EYn}(hq+EVJ^OH!Q0D($4k?vLf(m`T +dvRc9I185RW+I#N9J{WYE9I$uL)Yt*tPcoX-N2|{?xXN;z$^7w!#iUIXq8LU@}x4BUOFgK;VF%COHgB +l@p8JQ+?+?p8`%ONFdOw?Gs2Hs@XZdlCrdH!h)>PB;xY!+&#_@t_+PsjC$1s0d;N<*nyx>EKk*l#yae +7Ng(9+Mt@Bxg3HnJR$JAYs2MfcJQTAJn{=^GSbE|@fYnp(f~za%r4WcjwmN2f(}9>C`(rk6M@6%3v^f +~V^Xa^z({fcbX+4=2O&Wvyfqi<Q6ijh)bM@!^Ivp5%?mU@40vEM&c^alv_9%9V&$L?qWV|G36}<}g>V +Q<^Pwj%u@<mavy@vVS<8(V+eEbo3m3IJgI<LXu2B$%E;IE5>Y6gwnSgN123)5?OFjYnLRAuw<47rTIl +m3B7wKWPE!Ii`F0*r!cftlC)=)zGE(KA#L1UWHabWbSd`d}RzTZgWIS?u>Md4#0>(uKJ`iaK~Ke<SSo +v2+(3_$iS4FD~;T2=tqm_<=G36BG%<IEF!6AVuK_0;33okRXmCI7LF+gWLZ<3;wnU34RApUx@J_x!2q +FpbFVTs2Kbj5pG8k{9obchCc|rI|f0}-adlDy{#0IZ=nGAEvgRh|Lt<K@!po%o{)M!!)}cIEArv?@a} +{C4oo9#H+M{eodB@~pu3t7w0DJezsTq<QV6|u(BJ-yaIn|-w);rlqP0o5hlUWf-%$KkPv2hAZz!Ordw +ZicK3YP8vOvKEbz^Sf9=uHO^x)gi8T;O6oC!x|Zr{pfnhx93w`R=G+B{q6)dJryutd2Fozt>QrTo1%& +!2olK)pvl5Dwo`x2CtKtA%N16{x4|FN8x?_vX_V7i$IJXGruN>RZ?9XAu`}7jgOS@!NI>qvy)lw|P+D +cdf2}#W4ilR@aZrPL4+_6`|(gX=Os@thFF1)!rmY5S=YJ>l=Reairj*Zy(m0pP$GU;misJ&`zijxub< +RKR0JM&wbpwOqx^B^lPQ=&!F>II03o)b%eqs?Vl&hVe}xNE=)3bcN*{|J33jg^db@*72WP}v#2IYWaG +jTikfk#$(sHNGv-q@OLyBXq{pke^&CXZuW05$fJi7IN|*=TXHZl>-5L(F<@Lf`DhrqmOZE9&Hx5^5UB +n<H3YFvG;FIwfLnU#?5C<q3$C`Kv<W(L!gnV;t2&ZV=)6gFr5I-mN!SJRA$#G8@$NES@GZCPiF>`u{U +<XwK>I>x^x`iLtV4BCn08Y0X(=adX_LXD^O7o5T1@WH#YP0f_<?j!H%~{(%4Sr-7NA{}Kr_h+j2kbYp +ihXGv0-y2*Pu-j@Ydo&{mGXSOH-dvf6g}zk8X|~dduc(j=@4$dK>*Gs*HC7UrS6sb9aGE!eVj(?Y~=_ +k!bw4w*2^S`^^jef#D~maYyxk6pqZAMbs|&%8WNW63Z7>6hw{)rAC|I|!ZACtCrxwIwXhne1_|Z0r6T +N&L*OBuYDe*7BCw?jSAbTTz^7Pv%RTe!s9Kult{M0;2?4Y61wziHfM>oKoT~OU9&0f2Xv2`JC4xHNB2 +Ra~+CE|(*%+6bJRhFy>sEVR-;Fw9GM1F<DI5&(oER2)y+g_|?UyDOphuw}15Z<4tp(5~PLsTnRkt_^B +SbZD{d5lo13zCA=jmkWCA&&F6ySFG`@F$159TrX0GU5|eP15<Q%dJY`1z2r<%+2owj;;?C;ET?fI$%d +<A)Rf*B__$@kj6ltkxv{<2fXMv`w}A1epIn-o`h;{rncbhgY1!U<%q`l!8HI|AXN;yz~4Kf+PqCrcjU +qKZVx~p`zeTw+MG%jwsoiPvP6#BZ%G_?!gY60lAk~pw9>5DCkXacvn@BWUpX+5gH=V9pzARZ>v$%TXx +{BJ	wiGv9LMgFQEwj1KX`xwBsZbSKKyN!4CgrN3X$%d^6zL#C7_t-!P?^mSWJu`~f7ldz>zwPF?XH +C&}pA6kQb!51U1X2G;N#x&x@bjNiyBbf}_QKgj@{%d`c+sfg5&lYQw>SSPd-6kNL)2T(jX~e|(Aa5J* +89fkOMy?cbj%G};WtHbVfeuHy9nNn-+A<_g6MwYqzG!a8xrqIeY??C9wU17P2%j`SgWZ;5<V~)_nli7 +yILg))N>2sKRR^4yG7T0yUp+5^SimV@22gLAE)iS8PHZ9R_`iwF|D^g@4x$=06)Je|L%JN{QRc;yYC6 +`^PBQJ@5%R?zQ8}s@(t~kBeGLtHEL3>7@Rw<D)YRha>nZ!Tu%ewfcgJn?!C4h)zU7(d!8ci)z!kA9HT +GrMi}7*cX$aWhXms3o5kKc?2Z$0PG<d8IU?gIBw>WmnxC29oM$&^uq}I^<xIm$dbIV}hZQTmd3M(;<_ +>?w8Oq)Y4dI=Vy9<V+xqfYHr*tzU5a!6{PP=4BjkSvkWpX)sCiSVphroBNd(IKG^60h?vP3NY)g$}!5 +>b|Nwj^L#dF~pB+$m8O`sNvtDC#!5YR8(7;E`k0jrN1Pej`pV(xon(bvzvz{Pr?)YxJi^8Gs$@iG<u{ +yGz(CUxLNmH2BXZo9OJIW>d!X<g7EVSj$@TDvjD>>tpbZFI}UL#j-^&?u)@S$h<ljsyq~5^n!hdUy|} +pxNcPNNyrv3JCK{IKW6<VDv=G*zYa<s<{xqccFnQSuQYmpW>o&@SnN<CeAq)bn$n9WJT=G5b$FUGiR7 +yPnOxZWcwXTstV>zW@SI07EPY4_3F+A$&JCkm?7SV&Q#dL?sVnsbJ&W_*SJHE=sK#a2PY?AOBIhNEpY +_&Wc9b*S3`H7tlbM5)Hja2rB94-RlX58VgG#9G;gwlP=G=D3Y~uK{kY08omT@Et-ImQ5^~4^aX`h8;= +0(}FS2Jubr4t=oJ&H+A1$r)q<Z-D=q%h5xz2+i)JU*U2p{ND<&=E@Qw<xr|PHa(xcTuL9dK!rQ{1i>f +ILfNmnw4;iUVQv0`i(KVl$|Y?{n?7kb48UAJj_H}NLNxXBBmINHXUx0mEI_rehHMBni*reM|o7*lo#< +<`6aK-!s9Y=xrsBG<vts3&rwhvBu2vijrqJ_fyTA{@TQfA{cHb7m%RPAdGG)FmrN|^{;~O2eE+h;x8& +C>hVguBzQXzsTl{H!@qhDqegq)@$vJ*k1;Aj8B5@ocDT1V7f@UZfA;C~0zC1yZ2#nywr?j0c1$x27I; +lWXAj&9KvHh|DOdEn)d6pQ60Lmp^$vzEJ@B-xgOWID+V7`J$fudnn0!k=B16ECvgVs>G&dx8dF2})fU +>Q*SYH|XoCzc@Xr;2rSa1D}Zc+KJ0LBu87XV!s_RhD>-OV<7m&Af{xF0og+iVh?ze+Ljr@pu26{P$rB +3`mgF<7*YbygB_TW=MV5sX=Yd@}2s81aS#dUY|(je<gk{kle=Yf^lnq<%>@0SK^EgiBlXd5PW&>(0t_ +DR(x=<6w_{ocOEVFebizW&(W)?fRdYe;@0h;w+-KepcClY#Lw)+9Y1sf3otGJZaSKF6JhxNXn!R5^At +kg9Q{M4byg(~iMr_$y?)O6e@yzJkF5WVb>x2&)3ErDG0l%54Y+<k&u;vU3ka?s^q*Y7ck<LfzkuI-3; +*l_g6ju;djbE3sliiQZrR=8j6i+I8rMgzTQHTC`bay@i`s33&Cb?|U_8~a>Id5PFx|3hItB2F<geFDv +zzPfi3rkSf(H08Z_mtzL&`e^@6)(bgD7JvA@L&YSyv;fs{6q9NVwmHfh%bb|5i_rlH7*JCR1m~&5uH~ +gd8rj+mj0Cc)6@4ho_S5lNsYQ7{!L%MN+T5(LqkiBePRm`buX_mqkQr%MfR6>_=g<gb9;_({I_^4c=Q ++b=usq(`H^)x%tIBS?0zdNaGo?;!Nxdvm4o!J=F0w(2c*i6TS^Nv2W_oR8GQlseqUd1>eeME42x3^|| +NRG}mVv!{-&M-4o3G5RBc7z+1>vi}3UyJd*c=FQx{mI#vn&m$clEb`kW^FG|1l&9z4{^0@LGpj9|?u_ +0w+;6z#yBF7l@fmCQ`@JlW*vkJsj{!OS1UaoAv-W)vnoZRb(xQ+CNO$JAm`H7NUeAJw%{-EmUtKKO60 +IF%rjkGfG-duRGcur-ePhUizgg=mlm8};iC65&^iWXRnh7Dp<?VgY^i}SDNRCrGl&*K5r_b7Lb^clNi +S~ENkC3-nDC(D{e=t6S1ctuV^6O6HO=vy=zI=0;$mOEwUk1buvSDw2l*s~`}O-p#Wsf4`Qq#;fVAr(P +Hl{hwcA~wbn0y6`5eej`b^k&TYc$IZNb=`?O`|hPUl?o=@vcsb}O|1ww63K<_4hlu4di5lqRCoS*@() +&eNXtzj#_lyZ-B1~8NlrQ&gJ{gfHaYRT4n8X*tWVaVmrqd);ic`Q6OXjz3>4^IC{5;mfS-p8DZ$9|c{ +w1Gt?aB}B$jV0rHnaHv-Ff}_*0An+JugMk~zu^ZG#y-c&ciUjz1i$Z6eJtySYl1<O&ByIqUn~UCfg+6 +`I#SXP*Esq2hg<WOcUt_KEZDa=xuW#E<loKi}*-<JB*l{GcAhFcgI^;Rk{eC`C~;jgcrtEWrqlk|a%{ +Fou3QznOvA4q#}y`rn~z<dLm3k0lmia!_eN^K~>5{gp2fO#$=M?5(AN1Bx!T&W+@2IfFsL1A+k&4wZx +WBVV-%%JSdHuZks00Ffc9bkIt0Nmfb;a7e;dLjwlPzoZ!$Mp+IFJn=9P+N8w$`2)%dzFNtyW1eLO8Wi +PfVnpQsrhY5xC_F&1<jQ|l58CtAfvv(zg7D>5xM|ZdhCkO=RzK@SEQ=TZ(Tg~|d+@YhheMcGwxG^C3Q +f?rvnoRSX6zFO&TGlxe;mgI5KaIwAnVO#k1)Jt?O$FXOo2tftcv@IV(nLng0m+fKONu+Wj*)Iy0?zUw +{t7v_~FnRe3`EKY`PNq<#^@p(Nskk%;f=<REqcLn~(RWAk-!fx6#<<?SmDIGZa6%4IWv~sC{X0IW{3G +&p0PKwln7GlgA(1y13vnd1-37pHSv`CNB#b;;jW=<iWKdxH58f!wf>0WdW1Px9p}eC2rl&sC8L4<Po% +f98-Z8w~q6y{KH;X50xCJC92M9a)!o`p6qUN_g$^iQ?rEm4@H&|R=ayPW^hl8A*=BshG*G!T-c?RXWD +PNeGy+L^rFZ$L<xzXC>QLaE4^^qaK&SXWaspG?jAbLZc`X(wvT>CJG`6Wm^CvbbI@V6>ys9KRGbUZ&C +~R;N#W;261wEVYguSYB^N&n7T+LaU=$wC<7X-8l*jG<g*(xEJlEB%x4>5eSP3E<shGs7%lD6qtZ1;d_ +k#oLFZ2zdA4wH<y+ftvS=^RH?qWA#Tjqw%A&E`Wqsgv2C^=yIGq0vU6{JPq0;Bm#dE(viCxG8>pf}SW +A8|f4{eix^{`};D@wK@j2!jXTj-haIv-W{pu4XIm63X`m3?gIf3KL9*i$PnA*e={?qp$CL&T$`ZR+zS +(xf$VX1l~Aq)6p(b)((3e=~(hk>FpN64wvU4H!^0wQ5QVpuXZrK^y02Ps>h&C*Da=G4_zs{bfVS3z7f +*t^gy!9?LuD8Q`12L(L8uvcy7af-#KTkF08(PJvFm-C`~tUPxB8KHtLjH-1v1|MsgYVhA-vpvyWeU7v +lFXl}t#z+=wG1<eP04z0ea{I7=v>TDXD@D!euIt-X(RMvi5!bvwFNchM^v6XNMWm^vtrhfE-$ZlA9L9 +FGCM3ymZly>Mg1#+kTICgqxhd(@Q}zmK=$`DwvCRf~Va3wA}PZ`||#9uofHhTmi1*Nwg#)}(+25DDb- +Fa#zLg1}J>MV6GDUXpQ=p=g5nRLo$(ta3HZ0ce8*0^<UYOL~itAiG}R5kO4>w2Q%9%;%~=SOOr9S~-{ +tbOCE}coj;<fivEMM);eS-Rj?$;UHBn*QpxhSFB7N1(JDSfCdNeTT=1`-+&oG3cCFZq@wU@e~y63Qf$ +>iE>l1RT|NSm0g@>IQW7-pfz3Js&MaTCI9Wd3?`JiiD;R!l%rCjr>0;IX>D-zOw^!+XeZ73%nBV>9VE +9#YXF)aT9jn}LOzFO>+k>8a0~@u9zuA;GpfL|b3L0cdGl7Y~?(d!v^y4Z0$r=5fs`=A&spuw8L1M=f; +h5)TQP`u#cyzY)6bUB{I@$Znv$zyaYiO7>BjKaQ9QVwVvvfpW&FmSJQnF{PtTv=^sgFurJZrklUfwCB +nR^0lC1psA)K0Gst(o$}zMn#0HXit%K(?1te}J1uTNs3ax|VWv%Er|Cy{^aGMkazJ)1bOnCFT6g9W~_ +bfzw6~sc2I?=-T1NTn}7x-Am&&QzI6sIF1jC7!OS=xeU*9>v+8iDcyl+w&9fy^sI|3<`PATAo%lUIWW +gYfg;E(MV_OC)|OcIW^Fv9LduXyYGbHukAm*f?DxC<>A+$2)z^?i|Mc?>O$7Q)<BwG;URq7ZkNT2tp5 +Vj2ud$2p)d>$Cp(;NAkrm$G(<0b0B4=n^*_;Fv#tHT@-;c_zo9|s?2=<2)-eB<e5!xkef96A3MZdSg% +iiy}{Oyi=OBNARS#G39glTsJoUVJ9m#E6-syYjn|AOK^`xoxGwOk$9GI0ujL@-pjK0rnV`A#HI(~*8z +)-!2Oo+R_m{p@8Yk=$6(nWQ%fe+ppEq^z5^vjgFxB4Kk84-IkH^al%4;M$6xHf{5X+sR`}og7)<irK# +&(n~Bm^IUrAChK|OV#y9oUXWuZ(G0Q2pUs6aI!GnpPC$;At(b4_18<%PYrFFqAvri`3_tfAK6mW1K=9 +NN2LC=t+Lplh$b6EqlCx<9olKG3dAv9eDpAR5dNuNcn@-mtkb23#ZcMvukV6=mSTjoI{nCfClw^|<B< +je}QwEi^E_B><^NtBiVi!F2!xPJ0pG&+P#Db$fv>idGj=d|jy*h1^bT^icrQ|AhbV51{{}>Q?%diCNF +W6`wZ(#qWpSsgf<Uau8Kia_uK>qc{->c~17_q=4M&dMzGYeEQ_>xZ21WYe~(HM@CI6-|n#_;B=zJO%8 +js#FB02zV=6=EO@kgfJM$cNGS=i&w=2`b<VrY;y(uHrn*TGd{%yqo|cJiuOW)ig*~kONe=97z3BzXHr +<19X)mSm3&RlkX}2onW9!y+C@gX0`|d>e(PyOaX_DS_|0aDpZ8f|1KG@6}=kl!o=#~zP8#yNt^s_4O; +;j(fDPI!S>GLa`m+qXYWf$g(GZ}w)<bY+Wu&Z4y%(qv+*0^EUz~CD-I<%KB$!!0=1iCn_*6y)uR2u9} +>CAP<&Ln#~t&E1u-$W>I2^#8)i%ocJ}LNsyJQJu!ZB$p0t^5zjVr##@u^8BYLktrog>`<2R@-L+=zg; +HLLla?`IAI929;KwrhK#nj;5J}%E0u7hbUa5VsP4<-;JO5`O=kb{@uux|}c+g8Le_o8s>QcP<M=RC^n +hZuw;crdbu9FYbvTzPUkEGtX9T!Y@={SUfd@y#{(>ni%6a_2yo6c%~?gz0tTJTb`6#57>t2qwGjSR}i +H_fR&}L!B$E)@NF7pZsYT@bPW9Q|F)<b4i-!0^u7U;kMTWFj4s`=deqKVRG;#5=QuGbc}6c5&@rh<2W +hu>_6F~mnhMrZfQj$YfZym)s#fnV@yLfaSuYOc$k{9L1eX)#U$Bpp4_IC?O^k`7Zs|bm^vn18sK75XX +bQ9OImc*7Q=3b3$#J=!7e)5O5qn8syv;_=Y5D{y`?_!!8&Q@r~Hrt;be*R{(5jVp}jifoke!?e02{SN +bokjlHR=KTId(^dbcbl@OfK`{lqgxdZ-gjMtCuX&(w|!rHR8#g^13vc!NbRBP^)j1?o+|cg%-CA1+(V +O{9O{)VB4|3iYWO1Cw;vtH)o|lu*p}5<)*#g#UVgfYaVcd9(=H?1n&A(0<2~$NG5A6=$?g^b^4GO4|> +aCPmHT8-<@)?>a|he)_FI-x4vGH^0)qXtVDxr=r_NDVb-)fSn%7L5(0cw-iFOmRN7AU7z83D43w+B{w +enKq#a;BalXeS&m-mqF3cpO7nY57S$_9a{QfrLMqR2Cql_wF{J4%EgpS*Gw6!d7xecmtnagp+V1Ijl+ +v@NM%}}#aLc5x2?M*ck!>Mo%8m0~mD{Qh(Jj8+i!p~G^(m-m+M>m*nGdlg?e5gQzUwt-wL%DM9HSR<p +U{<xL$emR&6ZnY?JiU0Qly@p9-s=`^f9x?T{B3_Gm*>zUHWlwjgt+*W;bGgBb?cfi9BCcByz*!Rwv;W +VQ{-@@{E8>8*@WvQvTRS?ir&^uBfMzcz)KLWH^*k=tLBGr@OUe?NDt0jW+vxd--4PxqSfCynh3t#drA +o^E>tbSO0(c9|`LJl^uTI`XBD>JAg;XCFy05B@;#&Ad$QLSumd>2oj@78bNWITAui{JiPXx7Z6@jU|{ +v00MtbCwZe*k!Z1UEdBG(cT>$kLI=K`M5O%@e3|k#~7W~FQQoN+3cnTx}0XIDZ4093({(HdkmRK$5i( +gso5df-}pkT?1m;EkjES0S1nE}xY;Cf2|+aP3h@<~?Bza?a#R&8H~0y#ds9xO${nE^YX1iWE66@d4@r +>YY`TjEZB0r-Hv&nc~C(j!)+V_7$XbjCj~51&5Eh`)38^tu4fmy|PkabAi}$Vv_CjmqN*LvM@+FbNs; +4^7-x{-w97O3PZL1nat!{eas`e)`3`4*Kf57Xcr#>ASY@k}|Iu^Ov?Tclz;+p}%{|Kb|r4cTf38bNSz +-)I#%ANY{`t8CCHcPb~q|gYDaaDmLZWh39dGGRhEjYMN>*EQga;?OP_FtA1NmW7@TnEuRt%%Y);==`* +pS2mY!F2dA`6O|8g&zlSV-l(niQvu8>Af{u@uy_Y0vJvZ_+TV9~dsdK7tcrEWwlGI)(8}mx^d490_)< +bVC)XC<>Wy6jBr03z$9m253<EeWzs2n=n!OL#!_9<T&N<41s%(`8B@#do~=g%&3*Lw-#s+)Kh4~QKgk +CPuzd+*-WOYBMHx>KgAgY1XMIPH?k=(DXoUrGcQS{kQV&Q&yw#i46NJnpX??Ifk*3gdX4Zo$!2>0KHo +(miCadzVUPey_t3f4+%^`VhRYDRl-?YWw?am>0)axkLak8KLLmx*Pajze%i-<i=+L^bq$e1$s$+Pn{j +z5S!5f9YWEP?H^3!p%m1SQRbdu=KURuzx*Ej<@tOK>WKM!u4VAuZ{aP+{&kO)x;4*!K+0Q5o`+$HQI6 +q_BX)jHSQ!nGr4z@80x6bAvvz$HSFQ)WuGs+Pg^o>xo@&veBWzs1s``GCX6`h0ao`A#F@LD_7CItqRx +QAZ3p@5nvbsapf>CVZc;2zzlpPCux*SZRFn2gVxark5nXN4Q_gAUac+x1)wx1>iz0aC_F1Rw2mT3PfE +^v0}6#aIpz4E?;<BQlG=JBCPTRmjAx1IHRig7w)%J787U7^ygiQQ4IxLxrxTKo5Ob|m<f9<j%idawK@ +^)JR*LZ|9xX@!&7nTL?)V{9?DVnP>rYLlI$<?STA@)K=#`TY{R2x7d5C1gQ@lTx6@{<fhXO(ed?AmOX +!ioO1BDlPK-f1XbN{hj=fQvbyczBAfG2#QAO1z{<eUH}+fz!nUOp~y-SqZo{anNOKvK=No+Z31q#Imn +I)3=E2qH1NHBV|yhDs3I>}Gx`g0fOTuU0OA0^K`&oz=T`~BWq(V0Ou*~77zrxTbg@GDiqOC8$s#KwjX +?p{F3^pvrhN;VE_rj31C~9y8t8(~?mB3eu1t1tyaX8NCab^9avtb9Mz%nBo`Q2)@_n#5^*hkzPavzVz +B;-naPho$Dw|21@3C^xp;o-B*&SC^3+UF?9u&!Do;!L!kedE(M*XHP@DDO-&;|RVIjDZks3jXV{?Hh= +8jYDn-?Qou;@0w{C*t1{w~l{MG=P5h8GrW?q2GPR-+e^r$IqD8tj$%~``4v%fNoRSHmg?ViCtja!S2s +I>v$<TP<i1xkTkfr=+YzmR@J#X!LiEbfZOM0&%qpLEm7?m*4lBd^1>rGSh3qZeIXL>=xK^-=?ZI5Rys +R|Kib2dR23QDrab-RgEqYccikZR(>SBrCOqFMO82-&xALujv_nC%BwK=$j_zaZYWro`8jhM1y;uCfxH +|L=S?T**bu`bwe2A?@mKx2pxW2H0y}SmzF1J)5OKh{-T!juQ?OI+|dPd$I=ck+QBKDQfm#&<Vac@}iM +iP`OTeCi+8MK>Zb8+EhhcfHZu~P4rKOtEtSbt09s>LE*ojTJf6T~p*^p?(b;T#4`=URF6=LwUgx}Ny2 +P<4x4@%qlLLuTLlc^|KVnWFRMbvsqZ;a~6cU1IyTy>x!``P+Ib_WAjC|7ijL-+7#mHU2lp_;!I`7IuW +DDT<~L1j7)5S(bB{h6#dT5QIiC0;e(L)2u4Zz<3XVfN|M`0^}4xU?IVP(Xys4OCyB>>dLZGF3asN6#J +H}1w}z~uUH#;#hbX^n``)LOoB0>W{Q*GPYQ#k<g!Z`sI>g5&$z15plcEYs;&4sMnwYRE}#*wg;aVq6+ +??v<%I&v|B@SKt25ZLkORn~0Th6wjs$5Qupyy<7;X7m^%sE#3;fW1S>SCCc}-jArr?rLmWsQRyt4Zh_ +4ic&ti2)%Z@))CbK#I&^U*+$56w3#<9%5f&1a^xF9?XB=REtBk?Jk!2LHt-Joez$3q&6b*C1)<e5~2h +^7xtcW(zG#=9lrFC8sJsHVBsg#{SS2?oXB_itPga%v%W+GC{f26DPA~XH#(ArikY+&k?34ffDME4NM> +n__gx8EY`}GBYNM|Rwu)?QD!U-+9gJhu*x6noy!6zbi{DgQDq|mdZX~Rdp9tB$K~V{3m&ojQS}9nnOB +Aejp0_K_QjQj`FQ^US{}468W2Bwo#fnSekVVcQ=xC`sV{glv)Y|82aJII_L@wbrflYDN9poL*l|1G3O +wx`t1mHda;koDlLH08<I!v?Z2KB+WbR#`r(1rN#2bR9LKI9Dd#{nX*C=awzt{O{cSoD#*mG<;%$K1=p +^?GN=g!rKxII2t`E+I+6IoW%Cc*H5Jx=kC8EI#_mCsbj3Ao9yXCtWd5%tnz7u_YOv!8?GiQ4O~vgkH{ +owelJM$4*wFVN^<n0c2N825l9a#xmw;Te1Rs4>rY`<jB2CRY$H(#oAbE}3_gwy<lRa;%b2s^2{}d&@p +gM^%q(&e8P#vZNv921h+(4BE+kjmHZzFc8jRj((QYkvX0j3Jqm)8t+cz^UP2^TtI_;FQ+2n=*>S<fuK +LpSGkYo=2j>4UFjW6v%BFaZ`4$~9540=eM{l_BL<K7IBv&>lHT^j=vx!y?v3-v!H<{Sa+{0IDm%Bi!t +K7E;erC3&-B$WPqj0Q#(o`9b%WWlf(Ozw<?epjpintH5l>J_+h<aT-k$jvicVaY=SHAR^>7u)(MRVQ& +WP8A%V`!<9DMVvkVtBHaXQk_b3d4Oo*Qgxs0`)O8^|nmxq|Cn>t@@BalK^iLD6HLBX3?k*Oe!iESXZ{ +9>1KVLjoPmz-FoRblh2;c|AK;r5t7P89MT5-j}VHtM2SvB)P44tXfVFFAN(W9w*{;+Ou(df}|Q}@#)o +?XE8cAlbhdJ=ZsR_a+T`vhNC|1Z}Mm(CvF@0RG2-`O?fc<h%(_P9@iSQ)v1!N;6DfQHLI!m1PG=dPu= +T0obEp+QJ=r%ON#XV@^|G&8gv$6l%a4GW-t;(s85yBleHhW;0ckgL{SuwJCW5vGN)JAA^(liAQ39_1! +_J;MNpJ1z+~+Lr8ohQEWttd56qvSpt$%ZUq-x1<Km!Vxa<t*s8hc{#U*t~*U4O9tyQcBVFhS<(l|(Xm +Rtzv=AvLSH=_Vlg5oF+vLk$*%moHu2;l!<C3p!=!RIOoFg=ri0_ty3@e0^C7yhe`?Vif;QQW`$di$x4 +tziGCV;j3mfC^}JYm-c1TQQN_p$Hi`IT(}Zz13ir->AWV^uti%2w0|&02nnw1X_8>vQ&-cn<Dy;&yD5 +}EK{ddCvl1Hp${K%-gnMPh!82}T(Vho-q{r*JC5pmp3tYA_|von^cPh=HQ6f~G9<I9_+53R?t@NU50= +<bj-*6|d@8vZhiqPHB8^C1^8PsKa@aiSC=Ht$cZU<hU?=mmaX6|~=aIS>X>=!MN6*-*J<l&ip86M5+1 +cLG*chIa&GF{F-~ca_OKMi~Y+1AH4bNQ#@47(j(YCu!x0mXKr`oy@FE#L|bcANEya&kka;~lszW~*Nn +4Xwe*GKyvgx7@Z$w|e>?!|2F7uMqN^ElxLUrXl-Kh-d5LkI@HWZlqp`MRxZ+83jy68g*^Jk;ma64M+i +xOXf|$@F!{2ajEiN70nE`<W0`E=3{jUbVL>*bP=*>wC+PT61&Q-yONCIj7r|>aCu}GjhT9XEJ2d^6Rw +4I96%%XNVv_u#N3?_P{&wvr=CE5J*gWCNNGMp_qMF+>+oi#M!@ivwXC6Hu~*t4DMp+pWen*)v()Pt|8 +XmYVQ75Q?jDWhrH~vvb+(&&9xRNS#JKxo9%16?r0lD(<`Wb-5$@VT#(y6D{OZyVqODcNH&QOF=dCBo_ +c%2HhqNBfNcG4Z;8+Pxf?D|at4e}U3ty-joLkv$R)OjqB58#9F=Bb<!Ia^%k5ar9MwsE29;St2z+atJ +?liG85u{O*FN+iZ-TL={M!<W)JW4l_MD4M7aCDo!5$;#nu#_a-5(D~36I=`yc|f$x^j#vGlTDQ)x%*i +|DGy4B#Oi3tRI9>ln91+CiX}pq-xX_-M6Dlj?e(x-N>ix4e`gmeg@|09CLdoQ=Z$su9sVQk195&1fpw +EuE8F!iG9{fIN0c%wc9R{LHJT=F&5!xqdW@&J>=!)&}MuX^4seJP7jZb7wdn=w32_N3+Aj$(QmUg>zf +zWvCtoJ?9Vs*f^DB}@?FV~#s~_=P>RM0hNRIYImBrkBR{Y5p<pl)Pk<4}0x~4C8d0syswJ5N4#^nkQ~ +~jJVCMWQ=PVop-LiCL&;TL}4QMM1tO4>31v0qh2w<p_1nDB00!9wDWOlz&fm+fwI05M#3<C^ZQd5wWu +6m?^R>J^-4A6B?fNT{>0Xi(aQd!d+kYbmUrx0++<s&TUw<MD|1ExurWE9K)o&0|C;tZ0&^Oq!0UzQ>8 +KTg2ItL|5y%79w47#UpjB>~#oSbGAkq&J57`0kSRoj|%!gc?{Q-e(@((iP|<U->#=p-$$<;H30!2J-! +LUyi<(3ICI$gM&ls(f<bNWMiD@r{mc1alfTalYl6G{~D&7QlAf#*jt^PoNaW8DdU5a<TK%vL5gC$g(4 +PGhPsG(d7ud$g(T-PgwL}JX>@wp&PmzHVI{(pyzAT)iCK4^Y?%?BHNu}ZBun8}m{408wOUWK4;FgTmu +%7M&=;iWLp6%A&X$38>k0WZaB!W7279L-TdUYV<e{T6Mr3uS(;WMTIqY(6ig3UDauVvahX(9!T)g^*H +D!tfFtJrnJ<Vj-e6O6tt4j3<52*E$nQ3+$AF>G7pIEvqoAGpdh2{)N1A7tR?&9wG`FhLmQ<9CA&*itf +cRIMSM;myij>qG5+5S;EC)*lJOW`oFil@uWM$p0a`-}aBbkZ(q_vy0+*01_k(Dw`#7v+_^S=^VDP<+W +jtraslJdQ3h1~a?;Ae~qOsPwv(ab-v7cp|=#PJkntaU#Y%)b2@W4BzoY*P#lg&cXkcRkma8XF)$YVM% +(V79&E=yRq`rI5b*ne?>`2KX8Z7;z;P7NE%Y(xjsvd)yAc^QTt?B?EUk|whTvmSE{Iw!SOQI{D5-dPA +~S_97)MWF={Bh<}_FC8MVG!u$_wN92?o_T13j82;(s8*F&ssEZl3()dj_QO`}hdoKvR>dGVP)K?kcPd +Yn`C33}wm%-{RvmR-_yfgMBwHQEcddA-sjdbHr0>0#x%;0(-c=I5r{4R`bmoxAMj4<QzpEaAyk)f_s{ +uNWVTEUIVZ{RJ`Sk$!FsYoa;5jvQ{|9WYT-Z~0^YIA;(Glev82jvHLWD2bx^CcGh=>=5L9MRt68d8Tz +O-7jMmSCR$~E&RGPQ<z7Y%^l!6ghCw&4M(%YtUBVl;WXhP9d?Oo8AR}B5Vs)G@zGbuG5MEQv_*FAfN9 +nL^RET<S8ar1zf<4!lRocBeG7d5jh%hK;cwsjEi$4sLy#~{FQ7<a1VS?;LBJSHEUO){Jb_Xqj8mV^WF +TwW1+TgSz^`gGaRgYB1EmCz+7TeB0|nId-|6SI(gmj$*n(G?C8_}JuI29~%Utry1#_1Salu()Wus)P^ +YgO%1&%Y|(De(L%wUkHE}MY?5e%e<Al+MK8-e^{31kw;6(g4i3s^2-pBL{uSZr;TEji!<?ZnznE7lBm +c@MnWdi{Y?_8nw}#8)*ZDLXN-pJzAfbYLZ_;f5XEe?F5@{K!D@gITPXnE9<vSdEE|9+9-m&p9eqfgIf +95H!|TAFX8pn_wvB@o87H=l3G2p@xC&!p#>qtKTt3p_MW!h%ZoRePf&CZ{^M(o--u;2hl|5V7SHzsrG +voz+Hqy2_7+e#3GmT<8W%hvIwRa_0zJ_DNdu;;?>~ads*Xni~~-GT=$Fp*DqxN-U*<eN^V2ndZm0wZs +V@Mr_NY<5=<nf(Lupr((BM1e$hUSn(%8Bk4ar#j}ogu?ki4t-@L0aaebM-z=YhTrsq+8*d?*euWBu0I +(K;Cdz?+0{q~3+<iWXd7kC=fo;^aRT6wjYtMQK7DH^pyo!zPR=7bE3Ex+R$oQe4XK0Mp4hcbDAxJRE4 +6*LOPp?VtFlHA8<&p`H0RJJ6N=lGpC&&<fn^ARyy;q<&(6Yd}Q-GSo;-&HWtgW+RKwXT64sz^m3kL&M +o8Q&&5JW@^OAvfcw5w^__O=D5lC9gJRLs&9Rvpyi`?P1Mzy<^;iaBI>9&NQf;v+L%N<1^w7A)MrAoV6 +N%&mrwlO8T|DoZ-fSx%i2x_`Qzr=5`aq0c?f#^_G++3*9S6Dq5Sp-3X7l9eTX1=<}?&*AhSaohMzoa? +I^aZaJ3=vZyCmc`wn@HOq^QyM6djs305BvnKnQpHi+4=dnHSd*;p@$$fN1+laYqmx(^vjaZ~ax7!aTv +4=UbNconHbr<SASd|jrW?ghP`sCc&=v-WG6gP3W7;cX>U68`dPjdd&D%z3ja{74OoC2;p@9yYDf%5Kv +TKCO9I%aV(p3k#$bE^qIPOsPY`DBiXp7$~};9i7T@#fHs5s9g2dg@~iF}2eLGEa})66+9sF&n3wf@@K +mg}3NgbIee<Ztr)sa1;)w_>9!TDKHVIdl7wuU0%C95JVn&w>!HUa`io(hr<nqihKGYyIR#sqvR7h;1V +_0B^nyvr(?dEjIr!Uj9+JkWo@9YI_mbaItk$C`yr#?vj&^VT$n8}&Jxvgj&wJ41>)P7rrH4)v;!ead+ +u_aBk@;E+2x1Er<UL&4Y$7p+M|>?=<#e(mA4QL<zPg<#->EvS!o~l+g*2eZN-t#*XbHs1*e}Krj6vux +E}g0?Z@*qCZiVGkMSkw_rj@LVv<+K1(+?rF7tI~Re1c0Zgd_Zdo=VmLY&uU)U<hCk&D|?qgiGUnmwc) +hO@6YLC;Qc8JrnAwp+idE9W%^hSLYnF%PEO-5uf*KH!%0=oJnPUz~V|cKnUsLe-_j$QmOzk8!xVC*MN +S9BxH0*vs%-Xyk|rw?mTNOe3#5ac>?T>8)-rJgQYT&!SLGZYlGD54?EJANnRefVn*9QDtNrZDgu4MyE +`6=l;0C;xXnkD#hxg4xbUTxyfcnLd2upkuARyP}x%+>L3^D*b1S0ut}67>9|rErI93EZ?ODW=q}%?JB +hf_@@>h&9zF-1Q3F%`Nu0F7=^W9@h*7Q)`*C?43rFab-~?mOC=gpqG~CxK8;PA{%8D*fr_^ms7uwb~S +*G=6mrv+5tHurIOqCH8W^;tqM#`2L>MSd=Zbz+1U_=y>C%ks{mkT-z&IX+!`GTBoXLQLA+yV<4dnB<O +Z?M|P4+>?~ult^Km1DG%pL0xatA4n58zpt_vBqr~%M+oH$*^0aT3BKyDfUtW!w=JkL?%3iTQ}Og2rtd +TPQBMz0>_JLjAO5=>FscfPP4rcprdJTRP}(lHGJ#$@RhGxlRPW97>|Eg)Uf_PVCU_svI#=6FOMC|^8U +rM--mO*dFMy0_Tx+6TYsYnjG`2ZGYIi%yBb;h$xFxs^e`E~=P5HVB9p#NrM^x7q<~Wkn#|OvAy}Ebdw +gRg=o&AP9H2O*pbWq4W(ksjqC*KLZOU~-hswY%mpF;})szoVr)I!jG92)d@s*mKlt6#FSexj`+sH1lm +O^sC45stdL3QOc1B1LbTX72Pfh57+@B;J*aNvIO+e(E6La@`9!n~}qktFpj|9MgV{zEmh)%J!XzEML~ +bGhT{b?w8g;?>_9Vn?7nE}5DG<CWhq`(TN%Ap6VU4JgptlQ{!D$hW5PItKgAb3Yy(931*jjt(Rrpg(r +h*0cF>pj6GjT0{PTciiI|5W*RPUEPcIo7Ze=|E9)ATfS5Qdi0MXN++$&bLF<|i1YQ<!pibv5_Zb=xp_ +UwqEwVy$=Z<ra_tkEYFG7iyCK(_wYtrtNgp9*QaV@gRY08doyf<j#Z2y<E$<%9&gMZVu+!#F<dBm``0 +Rz~{jS)(D($Wh_r(TdUL%`$(&b@^1&<`bs?}MTjh!hF7k)u;|Lhh>ija*BSuC}w;VJFl^lF#k$Sa-zt +JOU8^C364+0m2)q4$Zi8?Za;g1<)muGd{&tHVP&j!#HCt2X{H+m=0xqeNkc;E9WtZa?~qzF}~TU4S`! +)ir#X=6$_Wx}Bo=?)HFP$N3J^U$FbPR;Ax@lCrPjL(mHJ7H@RSy>-+5RH|usZ*~gLaJRGBH-BN0y@8J +}4btlay-^N1(KGF7@4P&txg)b?(F`0He!<lBkTxS@yRPjelPzZtT7yaXh{L@2DzXSNdYg7-eBZ-QpP4 +AH!Q&>-@;YmUAjr0)su}$G@)T6Uw4^pb&k9GR8GKY|`l+X54B>b+ZKNitmM^g-V|YRZF{GzMebbPwbL +aVdh*NCmC1p0*`I3C=8|8k3!=mi2giflEmLo^)Wn_aVDx8qO@`Y#4iZl6YJ3KkB7VzXjC-==nvf8{eR +k#q+*ecv1+dQ+z9HG;;UqY<WyY{5pA-UIVFXMO-Eu-wx7{M-WeJl=?IeX_Sh#9iTkK9Ssi6DssffZU4 +VjkoeHiYI#PIQ2G!hhdG;eY*0#(s1_0I2cKj-vnd{VRW}_4t3{_<z^6VLkTu)d(795SXAyhCyk91ilR +njl(p7!VE(ZG))l9r`pmf0l*2v0gPn~m@ru&kDx(Am|Cr{(Uts^<ACf6e?IWKU>sAd?pXBdk4k|N6%0 +r*0B8b?sT9n><mf7tgaW+9vlSxqU-@?7pzfanHEW=N1PUE%CjgZ0*DV3bECWsT1r~_{kcSuCTplc+1! +VwntUv)oE{|~xXjCj%NoMP?El`p8Efj9SJj^5cT8&7iN6U4u!XG&1R9wcX+ABY~dEeidTiquDMN-ZBU +o;2(yiJjhQhED`Uif4!2=~F@f{d?JCR`PNdUK_(OeVF8zNGb+Hs(1bL;Wg6i91wyBKkh8513oS-}Qok +*1E=<N7sjsIKJ#~TuT{WS_cMZcnctV>TG%qVg+YVHC%xi`jsif=bjMFXpSEeif@E92pq}cxu4$rClc9 +92mwPM9A5p~t1WRaAd8pv&F|>S6|`Js<?lF{v*vs{bXuf%=D`A@Rh!3CKjN<*5pOwnuCK9*Pu<SP8;* +?T7g6uFoct8s*C|oh9Xn|mF9$v9v6qYCvYp>S$9vMAN`XXhx5{?RUcO{ouJM9bF}y?tYYexh6nTMAHW +xEOJtavdoa9#?(MK1(R6RtDM<WwR_~q!_6c)n4+t2Kz+>?Rx@IfZcj`u5lI7aA{N*Gnznq6E+j91;`c +-n76Nb9D1#M-Ub2Ai_jY+JD|h6&3v6_yV8sqMBpPd#pqElNXFS9wsS5)0>!%Jp<Hu{tDlyGP!J3%(bd +ebaFMj7FMmqMCHh2lJtkecui@gW6LUV<$>mZb@qEC3s;fKQD`zhmH@cMf~iK9n62EDns8pm^;MlOdh? +;$Q5(Cp|g~>0=_jAdiXIc;K#SH09xXLVRH8S;LK4)e`0zPzjsCXM2C%ksM^bAlRpym#bh@^x!UAGyd8 +IR=y_I7x2EZF(Cm{O&C=q;yR)gK^5uFSG4y!Mn3AZ^p+=2F(YnXo?o{kW6@M%Ni^yK6L{RcpXlxT|o) +~kVB6M>UO(hyF4sWl!AjPt$mrL=4nPGgmPNs*d6lWWUgE+-Wb}yEUPZ5ioEI@2{WNKeNwp`6=!A#S8Q +ee+HE!fyzua249u;%{p;-VsIQ2JI0Cs?`HM2M*vVn@CLx!T>}=|S6L*nQYydL0&;e0>g&iLBXWfs|fX +{vb#>sGcveMVgzfv|$|fez;x}9+jc{r8(i5c$<hBr;*LMI_fvs5r_ZOY2w}A@<*SCcMPWft9BCqwPXF +YXT(nqoD{MEIEKO`h0-X2BQU%?CJ}PUau<AGz<$YeVe-?CJpL|t2!>GcHLuJ;*L*=`tXLc8Z-xBT_W} +Q$fVMy@m}|+_ZaW4BVzPDG6p+0rAlZb`pnqQCfDN|16Q)<)3;2r>#ZTa#tP0T!rV}toZ<k~|Ay<hh<l +WS1!FRxOE5RQcc%uWlS-JXvBI{5qRf1U|f&{R>gbD-$wk_U*fj^kL0gHBpel?CL$L?TuqDME3RwIXwq +z=Jnb2q|gV#0rI8u63&1N7!|ko_a?2Tfp4Uw}=<{?g~5TJfuXPpW5eG6erSHH+C2me|0nzE!gjKbhtI +&ZQlkHT3OiFFP2`>K(ja^jEg|i(6t73Cm^w{$tz%{VH%-;+DqX)sMI({kTTo;x=f>K>4@c@5_=XvXKJ +td9Gow>PtIZ6j@#sqKXyILzq?lBj`)XE!1*zIwo6)E7I~jYJ0&hWmb}x<xq2Vch}f;FK*A<>noEth=^ +@_>{{SAiSDjwf2`X1$S8gHFiGf=Tpk<hI%fvgpLQyO?5yNoqQm&0r_J?5(A&E@T@+{Y>VnT4lAv!bl7 +8oq)D0DDutJ|;8%efEeYlf5NZ3~no-SWk6{+u^T?EltVzXmhsS|5rI4<Q%NR}Ocw-_ekckS$(GTzXE8 +e`DTxPp&U3`K<B_gtH))0S;L{<+;oXOD{KaoLICn(cnhd`8duLlr8MKdXr8;>dY|4l%a7-C%F$+opy* +&IEeO#AhDuU&M=Ti@GL7|8G&Be!U=K|J=-n{%?c8|IE4k9wffY01=d0;zWd?V1fh+2n@3h?kwN{RC5_ +-!3~_EK1~6al@&>Wj_k6&(yJJLwyN4@<i9EM-z5s3$CuTY0+}85Id7{(z)B6Wy&UYUU_jv$(2POLd2K +~wpg)aJV2uXK`m4MFnJ&Bk)$mTb)=t-C6kZ2*mVC5a$B4>R4k;<Xst=@db5I`zWzKAsV94HE(aYf%7) +jr{(W|vI7~5I3b@AUyB8WSX0#3UxC=s#pVStmKyt!~U#JavM?9H!Iz}siK{r|)ELe)Qpm@lG9e*`h}8 +^kPV0vju~y;%lAU#5M8?*x+`e*!V!tf4Ou^L02!7pI>kX;cYxyurVNSrwg2-nH{8Rr4!sTJp+YV$-+K +1pO0i`UaY2=<g8U?l-#E_s<lSo_V3%)4tC;sLJk}r}BExWYl-HTPK1vS%P^Y_U07#-E<AZ`Vu{Z8fAw +)tQ*(v{u=qcu8T@em|Gf(;`x+O>Zx@kL6)}SaAXcCdzM08SIuT5%iY15@#J~h<sy4D;p|}S?6%=I+}% +%Ly@XO^Lnip{)CbSry}<>0&{G%l&KAaOONSN*K1p%iNp51s1ZjP^^Rc^Q#mSb_2z6ZsVotY+;w9~%J< +;OPZUZmav<rqdgwel<9YtOzcGR}~Miusl(n&CbfREQ`ld^;Nx}h#K9~(J)M8-ilUZ&9tpYm*l+Z0Q*I +n$g#J?)gswLC?=CCrE?o+C%P$3$XUaj%b!-$2$MIu-s3hM^A}zJ;%AEAtsuc-u{l?{a>q*=>P_=}(@= +`j<%{?!rQ-7PL3Eb5B`BFr3g{ZKCrL1jnA|rb(Z@BPr!{j9~u3T$jh!-B|2c>?V*iz0)N%gwFgRJlxR +UWBkQ<1%tETfb}Z(*Sm4CkI&MAXV#dV)Q(Qu<TbRnSN*&{55l!etpZ6O&_LIEOe<Q?ouega6I^>gMJ! +>@ek##ePB2sy;6j~F%kSjOj@$ed!>H@KXssmjk;<T*FFR^IT`ts}r*Cnljh4o+>9yN9uj*kP`AoU6T< +`4%XH2Nebh%!l+ta1U@P$%%X+RzI+*(B(M!B)O&`##b9K{{7uDER@4pHyXGan<SA)YdwjeVcxr|vo5{ +d>$h#Yu>lpL6c8a;L&(O(SeV-XoIz^U&h&lvdHdDC<)H17+p^*75&IS^2xnlZFB3n_O~F45Ja41o{ui +5=Fo?MIaP|lL&+2pXw;S83E_?%3;d^s}0KmO>M~<v2~soxbecE3rj6wK=Qc?f4+(o;y@q*Sp8xkAfWQ +K@CyU39I;9m5(uD!11Urjl&=?zPk%*n1E-X(BTo3L5`lt3HMtVjNd(l6!Nvt(cvB2$yDs4dxz0K*M_p +cGQqUwuRw_EsT3n}!!A$cyMfH0fMg9h2iu$XL;<8S|E_-J2Cw0?=B@P!TA^CBPe#tz$PczTIQBnpKW$ +3-6jQx|6GN>p+|4B(1RFt9OBV~IlDPybNzxQ29d5LDk1>t@!DSsXR`iCWDfc(&smj2_C@|UpapO%zCx +C9wBhXVau?sb)2182ar4(C2Nj%80Qs<IpxPUIdIB!A!DtcPMw(urbrg4t?}6J$E%o)Ib#?qu510ek1{ +%bjj@4BNSSt@yH$?M|XvYG)K>pBvasrBD#Z9e<b)0a`!wq=g1eA5#8Rk_;l85|wu0lcOwq)P`*s@g$@ +ErpyX`R%iX5W)+lXkUK$nZ|_%FNXn60a_Ws390G$q%Mj1MeRiNp$f6l*$Tn}tZWt!%na@f6@w_A_wH_ +5h@tkY@a+{Hlw!{4}*Qwsf9(1*-uFuCw(RbBls<NU`6thxCt4*F=@7$T^L%@Z-$4i@IZ)j-`r{QpaI9 +z9)xW^KhEzo+d9Nm6VH@m4GXn#qr9J|^5ed{{EKRt`v{bSzd*Frph*9DILkKOA2?>M!e4C?;uw7$b3( +8eSvoWgLJ#t9l>78D{eia<#mhcSdgN&0iLHN85<0l9btB!GAh1Rs`ck<Qj~<tjFT;DC({s*KF%0{A3= +gC%3d2*9dYz=A@7Ed8>x<?n<5rOD+<>`jb<0;aj?s<^+Bk3Pd8bd~O1@B>+ksLL*vOco^oqk1_pASsv +t-~pojC7=ue#XlN+ii`#sE>!|v550~PGcaHor8LNY7XVwbX6*O5?E}mtk@8nz3hpMxyu2i9q9EL!jd; +9C%1>nL_uTgRnN95fgeTpSw*5m-y03ZQl8Z9m8M*~&*P_e6=WkRj{*3PZW5WB3e3$to-#tJE=YJ%;R? +r2nBv@^=KGM-|3~le8^vwlTr8n4tRFP<NC0|bIK3O%3e?fZpo8GbX^EdGUcF<p;9T?pC(mzGMJ$mp+4 +$HrL^Xq8Y9}vzz&4HoMlHdsyvBOQ|OmjFPQ<!d%V^Z@*jdZ-#<b~a-CP}naY^k#ZF^`}*rb|*)K8I)8 +C$kT;gHa6`c~Fvr94K=`-y2)$t;*Uo$Zq15au>>b<D?y{d#FGPN*bj^hpHrr@PXS0n_I0|d!s0b2xTe +$4u{^z&wY2yZpFxAMI+9ICC>QMu;qTEK)Oz$OquieBitU*opu;G9itC9p#-AQh@{d>k0iV6xgV);c5` +>c!JfAd!j^}omU0u?a)whx-f(C=)YNE|Ee%_<qk}u#CgpJH65?3JS1+a*^-(>QksAA}V>ChXP=&PKd( +cf|0@f%|UcUN|V4E$dHyvex2w#~q?8lJ44PkO-+xqM9*K4^epC4ub&>wm3%COAycNs92xluH@<wib`Q +ht{1BNTev!I1or58ELM^HxXmOI))+PjlqPNZO6Kz#h+{q;6Yyy2>{dwGw*2ujHHWa@8FwrsiSre)x@x +z&%Ctr{1r3-n`zvZ&HY8_U=Wun%cdOq(L7uY5DeYamAwaCp{P+XT|6v1&%XC{%k3GpLuqlH4fd`eW%M +gMQ9Ed(bL1*w~SC>*-LMb$8ujp+jFz&UP3JvxrOfM?%AToC3NnGg1%|j4RkN;NzD?j4dO(&DLkUfU6{ +;ML_ctkL*hnUR#h%KE6DXB?jM{lR7Psd(>~iH(Z-q~{H17`&|kJr&^b>#6?4waNRx4%4MQczG8(*Tzp +blW%5JiTa)V)?(TjVy9E97ALpKmNDI=0Ub0V5Y#M_P4CO+Wj&Gvbfug@9Ihup@=p%@RsWuMfW{V2yv0 +)4xni5)Vk;y|rqTV;j@rrEnS#?95?k(D<zit?j$Bu@5JJY>U&kmpv|j!39h@bk&Vs+^TOywfZUq70Oe +N)acT&7tEjN&R;uivI)mTKpdbFx3A6C*c3>=lNf70>;0Mx=0McF);3p(+GhPFiDaGh9C@05WoYNCUF= +hkk6tnECF+1OK4TB1$Xj8GI4oOu75Al53(lHC=eR?H0oMj$=4~ed{tqDQBXKo0ycWJKwxqZV`U|1SfD +wOKF%1RNJ4_1_AjC?k^znCe4R!IVbiM4lC3s=2nPBe*{a0?S{4~NHomgimbeN~))-L6$X1ES<yDFRl? +QYk;9E{&3CO75+YTK;-+8=#iMn)L*r@nusTHHflX`BV;(q@m`~N>^V*C2P)Wp_)SCh<uLlW}63-Hfkk +{>S0(0_6Pzx@dR=mLW42mL1(@cmo(=NAxMKj`BE{<T!4+XwxH_J>Q;jreddkHt+>nQf(XknEosi8b|2 +$M&k(38%0p10zXfi3oO`S8&h7bnC|;3RAm}`6c-4D?^s&TMKg+>{&piz5`wHBdaD4^vqDO+6|tA#9bp +#PqAPzjW~_l?w8KE&|mSr{=^v<`pg>l?>OT^pIPJnu`{l2giuprk4r~2gG*>Np5sf<bth680p*eJt0N +U_$Ubk#(NW;4E|Si8fy6w7?@HP{J5J-W_q;)beP-uJesAB*m^SUyn!}E1SS(G&Bd^%x)dq|JZDd?w`M +!hd|EKP~mK;UfF41$Yq7V0kVn%q=5p#eS2#|0>5Oad}Mu0H7`VFee>Z<CjHsAm6nAja%RhbCA0%hu5> +v3!OfMCd;-w_jZtJl*_8tVH=Th=BK*Di~ZlYvZE8q-1Ce6(Xn<>Gk+pFI8VTnCgkEPtbWzgd6#f4+c` +*jCa1_)YjfPY}YO(Qp3GlK8{_S>kA%w!fj~t7pLbiRWZ|L!|Y|X=Uz5+d-t<7XGyK{y+X~S@3`PYQFP +3_z$k+$Fw|#qVTT70^!i7jb9=5cF7~&0+z@d_TF<rd!IMFcU*0ty1^I{?%5HN{Jg6h-+Q?>OvT>F3cZ +&E(Ra$6daIBH`-Bm=E&sMY2;S<MyT|UY1eZ5(#-UwcC43K<NAET<<n8jetrdfN4|)W@0XW|0*dc0fM% +X*Hp||r9wIg)&9&OsLX%}vO_q3sJCqRn)+q8$Ur#+@`jbEZ^^8-fH`e&`5Ta46vAGvRFk}Tb<KXksBU +FWO0mF}IXLPY<*ysvV5aLzB23lFIYd!SPA2%vKI$HeyYCJN7)=w34pfzfcuf~M+yM<{1P>m@e(w8Ra3 +)VR;POc|$ssErM~S%D=|g}*XPSPReCq+1<cvJg>I1EvO#EmLD~3?TZ`tA0~uUeto$u+*L}oV0wgP1uj +^f-zr@Z8!>auOCxCreJ?3Qx$GosSJ6dFnf0mR1JG~r~4{xwd_!-0s*|;A3xSx#Jp%P8v2;GS1Kb5h6^ +5&moYj8T<c(%4_BF|US9sX-_DoJI`DZvM7itNygtOTl<(es{VwmfnVxxVaPQg+koaf{M7@*vKq&8je$ +{^^=((^)91@rk7#7ziR#9Qhb5{gA6|bj9RVB(iwr#qd*Y;XS>Zzc(-U2Ft^b=tmrx$b0*aU7CN}g2TV +>@o;j<=(Z>WB-8O8mIZ$5ZFNTs$B`O$;PszDNBFpgp=c^631y6PXNO8^Y1aRw-l^z8-{*I}S=gLHNc# +WP@Xg;O6*#d>iTVgfLi74H$5vp(={Xo9^jM4-o^^BFhnn%45#@5cKMg4>w^&v&a$e)*C2s7U^fU-rL8 +6OqSXZ0ZEDG<n@Y8?djM=h(!n8M~BeKPX66l4}@qq!a=MB%B!14B7q%V!(DnM1JtE%rv(NWdF&516Va +S?Qo0IiVn?F!PCL+7Q*Q!V-2IWxxzd6g4SLb$_Z54Vqj%%L(~(Yj{-1Quy{=tT9$EOQvDM5FFZ&3qfK +44Z2y=g3wm*+YBAcCuH<Px`rZdA!j30YgO)|M)WI!;9n0SWHeS$MOd$E<{2qi4pny^%+uB1@TX*r2F> +RLsgCSBfIqwkIv+Y7A>t6>&6uw)e~QYH_=Y8wYtQ7?R{YJNfVSLz&9UHo*xWDthZg9KB11n8|$C2od1 +G&vhD76`VBb#Ackyq+y*an}ifj;~3KQUZ~U8cn;Y%Iu)c6y$m6j9bx0<}Evl@iV!|<O>#nr&0t{?_lS +o@wIKwGd-Qlc&nK}b$KC<B1b2%t1YOU{GN#i3ioYAs}=u6dx_RQVc=ef=y@7rsyQVF>&MH*)yhDBMxI +04PN%46e|8_DMS7F_8jK>cD9<4NjRo)M`{Qp>+;4&L_IKqsQQZ98kp1aNKU?ztR~Gta(fhZH{OCfs{| +9|)Qcr|?(jR;aoMFLUzb2yhY%jRCwQVsb_KufPc*jZd^YZuxfqQ>6ycZ`ZXm54f^*YhFuo<ySScmWF< +1NPB0W#R3J9<aW(66M@_TonPmbymYX1Z@H1>&s)vjOZD&Tn|TQ3m8~K@{WrrEbt4z3mn@#t|Uz)<5L! +P894Fi{1JV+WYVbXp8#)Rs&|;%j3kimOGx7bEo)|Xu@8GVEmu5>KDM`_*iA;56zdGjTo7G*Hcftt$VV +3|91<Vp4-1q)g0#YSMf5Am8}gJv%ROde7gy3q1Xm3gX>_W=b%3~b*+EQL#eCwM$L55pmvuQ-HQR+L2G +ZeR+n8%&H1Sj&?@KURM6oEQxI+%=sE%@iN*%-`4&++#ukb$Sx_5QQ1HFVmLEW$|J5z+ZF#_tt>61J_p +e5mq%WgO={~x&z1ix`!{Cj#Jqk=|6bJ2PRKc!|w?4+GAZ(16lzR`I(#wITO|ieiPhQj)(R*Zi#XrCtr +<qYF%?@~8>?F6xW^x3HI3gx0vJw`QuFDo&v_8jyiys<=m5$kow}YWPlN3ob8^%zM8K<iac-YgyRpP#+ +odt@cTuqmPoo|SF4J+)<4l1Lka;zPrTVI*i>=MuFiMc*l*NvVeH}OEHCOUQ358W2?ve$DUM+)52dVQ^ +I+|BbUCZxGPrpP>sI8+oAb)jUHi#<6Pq<vx=z>J_lWafs<$M&Map0*0tdt&DS+zWi>r2=$cJ;$%R7i( +Np9zD4(pDC>`-?O;!j~ldzoWrA$NjPc}I5%p}Y&TN-EUERbI4Q1>X%q`qXVTmv+>_BS77`8TPGT+ax! +tt}i1pn&qq$!Pvzv6sXX1F|wTJDebh^B}bdFVF@+kIjKQJv35&007gLBW#$4K_BcwGVPhGQt%;|auy* +M|g(8yE1|)Hq$N?0K6H2GOq9rBEHzf=GA-my-;l@kMF*2UR%k1mKTt<H|WJm*k9Oq<rjOI^<hJ51Eo| +>SPDQOPH6(YZccC<ZN^-5Vz}8bzw0Ki9Z9ehMixPb38?NZ-j!0JOxJ<siB@gh=)@fMi;dyqr;~_J3iO +i)gE?wXyw!`E+wJ)IKbf1a|ubi+wQ(BEH_Q=<mm=K?hFC9AV@r~A@;p>)9&2#3tI~23w<zY-h45#%7- +E&*pWoj^YukjOq%vgy6Y~6EN!^UM`#ZyNQ6WyHg7z1ddK(Tt@Bvy8L-qGz{^I(tBrb6>s|v>?##w2t0 +Fd`edglwwQKM%S|ntlRon1(a+`ci#6inbu+T@+ZHxX-o?u@`(Y8g{R=2z6+?|=UVxDM}xWlU?$XU9vH +^v}Vn37LVDJv#yR8|vUJs+b6wwGX9jNRF=s*@SJ^y`2@()3)IjUXjS8PTW94QJKIBS)N3P%Rc0T{2BK +?8EYyb(W&$V8XLG{H$kbxAcZ{6kNTf?faz9MRGJP!kc|NAR@ySkELmXC-l|bNs0g@uTCnD#4e>92G>T +5u~mPWdAH!z?TIhBCQ1+w4)&#TxTouD<s%R&I;?K$?A#Xl45Ur51wZ9I&E4^C(n;(S2k1mQLg#QWXJb +c5jv`}r7DKzez(kFln`w^3Je-q~?OX*o;0TN64nK@YIo&ZYkf)i{ie{ZQ;`z!Bc|fR#S9y0WYK3190~ +T#YG~m%b8+W!@6kw8<C0skfHfrG|5tM;PU}bE-gg$i<2%(dQ^CK3bV6ou_^H4#+tn*MEQq#ya?NZi2z +^Cz}&P^s3*${dJ2pt8i2vHk*(4?p#1(tox<vqC`LVBo9<vgXr^IrM|XT6$gDgg}|dvhd*8`{xM;p52t +wz1%d4Y!{pBA{7&zMN;74SlWCvC`HJB!{hS>s&(>K@I{7xCFCBWcC=Nk8qmr5ASBbs8^{kX8MrsZIBO +od9cXaDz`W3db_z@Fb1BcPZ#qMpAipO=dQ|dubxAbX^{|j7*rwJi_#c`X+JFW<Q(Q&gl#prqoLl1&t# +$0nyYdAaHjuF9q80HX}SIR?b;6GH);iK<m`t>eqwk3{8=AV?ibJanZJFi>Q3&B8GB8GdUs`f88LsmF> +ZWq`+_2O`WA-!xLo)-ciXcu{_opLFt`^qKx)r>K-k+&3f&t$;ACfT2)awq2Jk)u5$r^8`{EbeEqV7pZ +mbPKzFM(>Zxxyl-05V9?|B~(e%DIyod<5bGJebS?sB})TOt>HH$lGbxgv6Ba2uI~z@0`0@ZT0U)SXUb +-}L)f`tZ55t?_dTfgcv&$5zH{3hJm2V62e@X4-QrTQC@Z^dku1pB_(v?>O4>m7l#-&fe1kyQ2G|eUZB +TI0kB#wC>G?A6El>e>wlj)d1gL&JS1f4<`VCJ)h8DNpyTxHC;AE+gn+At>^-2FtmrTV|u2D+%!+70>k +YFM+tGi&W(+DB1CsD9Vl*nb_+E<>&tCVQVQ7T7GGD}?F9rWhn(&;+SSd?9fREBeKNf|aIW=e(JI1o4E +P4PzAB52AHDy~z+sT9yM!MTRYNlsj)mz3DJ7Yn(>#feSK&06zFoVqDG&uu`&X$eGQe}u;BIR5g~%(lI +!W2%kv%-@7<Crg)hnVW+-;>@6dQFFom9dSA-zydP9}LP6G{qbnj1KdDSIy-dOR?!)+mEtA|XNQG_t7f +4I=AUEgZI~km(ptBjRJ7{^SJ+)baY50T0YJ?l4HU(4wW#v<^#sPNhM~KKzzfcb2(7=M%oB6FA_re8Td +XMbFpv0j>;g*E5l4R28T0zydYTO9j7ftZI77%ag_6P9PXxu}~)^33;Aw59c{_&mhLceD^@fac5Y{7fz +VTLy-`G=<>EA+~-(_4RrS8qp@1v-H-MB7)tf(TSwU!ta=Hfu(#uEJjn$On?2aNG697Z1GKryL|k^u=L +4qHaW2t10(Y|lE@6gBhkI-pQ^u$4_L&W^!r&WBm??>gGyck+BY6P$%-RS$Jn%9bX97!*vNsvt;Y^a<U +>#fIlG!(7xN0X<3ly6-i5t`ChDu5P)6O5=1xQqJIpB#in&DL8;}d0&95m+P1X}q~!Hw2?5l~)PA?hbK +m2q5!I4&wLCzk=&jY|S_J$cT*85}g@@Y%=jqW8X+voy4C{<7cs&2OJ)<iFI@f6fy8=gWM{5&U_HA3)_ +(4Hn`pn~LtDB^11GyCk?<6DIH;%*W`CCHv?ayjQMa{PQNoU{8fp$zHWi$i2)?AbXfjg>PHM=xe4SfcE +4&j_tXEZIg$fZwj-2)?i8Y1VtS033w{rEBG4<L2tXp9c-v~EB$+zZwEYLN5SabFAtKtNDKM~5;WP75{ +vdU!k)13cZ`JaeK`E@5GB~N_0_j#d4~R6{nh;`6L7XUz6U<SW;RoEvleD|3*`TLrtaGyUZ^td7eLs@q +iy(BM0dIRTKRo<ylo-&UU&X7_Gax}fa$DpHmq@P(bsi927G@|71AH|%F0gvE(dYuSNZJTnQSlaex&|^ +&&J#SC{E9__|30Mvph$G!us~LNpBy}Gj>Ha{vX57zLy>E@uM?Vov|jxl7|<NL#=K2R#P&8fk25V8Eh# +Wk)+qQu=HRB$u$`eBIV%DaE~`=O{DpFpM@r390#2x63D3MbDhP@JZbgP-UNzP#7lq6hsP0bltYP)Cau +cFiwk_Kz#ALpf_1pA=QUq5!MfZ4HR@^cs65@S7Twq3h<NHF#WVP6sL8lR6?*GjrDymQr}K>sBw@6TON +8_3<TtC8b`)Tr5s1+t!2-SIXr>4IIPfrw+&u$2i^u+YA?T$pZqHR3L~v#evePBcUKfpa>9}ojfK)@y3 +6HxYaijLvy5?DN3BiVMCp9K<gtwO5rNiQyk95$PH0!|d08>ctvL*Yv0YXOFhy2F@v>&q5&N0(0;#_5; +j)Rj>)DQN+Cf<Fd(04B$@TX?Hubq2;YTWyU6%|0A+3do2wepCZ(<+9{)J8;5=8KiqFpph{vv!OlOq6` +_6rtpal^<)TIurLgyDYNQz&Y@P#N6U4`_fx1+6PTH_ltW$XL&e)N-fHe01F#k;HC&WoIoWVLQPl(hwq +6(%5>n4+2M46d#S%w1M1*SdO-X5hKp#YUox2Df`zyVwDPpi)6J*d)Q74%J{&N4JuZ^d19~9a0X0{z7( +&q&RSUh65l17Ox_0PXY^R&-;dc;P$;@1v19Kd!9z2FybaGD)mjna4YqwUYVR8OlSF_BBs?rYVV^0VNx +;Wjql)MP_l~S7=)UZ>`l^_mPX{?-?OHeSi2Iyua>lY%%a*e-4YbK38P9LRz4pC|z_U#adzs3L4d~NX1 +ev3L_5TrJk`F6stUH%g={p%-xz|mhn@dso=K?o%vm>_V7!Uz&YiBBiHHXK2zx8pprtAe2D9#fFWdv1! +{E5pQFb_;*^Nd=$xc5Rpuz3qJWA+GSfSn@Uw0pHMq?Bia<+jeS;lBjo+KKLFSBjaCy6|#jq$==()t+; +pO`+G|~9PXE~;h6tM&N$o?=HXk7Gk)8WY*$F)dkp5kjYZ=3oZ0R=8NK_|-qT_`lKy>ZnccIk)A<imD^ +)(|vvDzAr1y*RGW!8sz*pq@>+<p+LCF@xK%I-oQ@CN%H~Dh;MOPmc&{O%{38FpPNVi)DP2bOMzdPzJK +H0lyf$uI)rVUs39jp#Orc&-2zGF(TVr}#X;=!urF1u5fYGrT411`JO<BR@w@caAwC$|Uu)&2dG+XMdU +{{G4B0g?4Dw7xD4S{${aj~*g?PEviEu0R>#wLIls=V){9ZOB(>bmG8H@Zc}Tg~)gew)N`lPj^R%*tO* +{*c!7ODYma)$1w!Lpz(<-(I)M&R2F!BoSYM^#2IEy*V^txP*S}lWHUZnZ-L!|uo_pEr9LyOqN6)%1Bp +a$WQRNHPK>q^likkVU}eX&(a{qg*0_2|4zpml3Vo)#rGc7px!LpO9?y|<#2Nz7(6(HJMztBHC?1ba>{ +(uH1ME&b7hA+jQ14afE*!SiHuS$)K`tljI@Qo=iTW{Mfi04$82#iCw+)d@4Le?YNtP}*lDIu={iH`!( +D9EGCbm~1&7RmGCt#GiFCDDY<NSnxLvMf8`noVF#~gl%cAuJFfp6mW)uhByI5J4|@~U3LCuFjhOl%(Y +xgS8EqmwT=VU-s-+DX4V7x?7l;7h#7^THN8rUugmwKwV8Z(jKIgQe6N^sBV(eswaaW3e*c)d86g>v5) +zGuT$1%CE}Nf8A?T$GEvuh>3iX8Bi-P8xlZ~dSWcWF++QPbn7He`P3d+M0;GH?NdLYNnaUR91l;HOYY +L~qBaB?4Y61PQS?mFO1Fog4bQ&rQrQ`AGu=jCJhbxMaXipMR3*$wXx4*rED7_L-z95K8Z;RQ0t3dCH( +uL2eQVf;m!(*Inat?{hvJ~}*9*wHksC9UmR#CoJs$-jJJ?jOolZB@q<owR0r*<OA}r7B3xro&S=BMZ- +8eAe7qaoYMy{z>;PBQxc;!=q6jqCaezaZfY<Xm{U?Xr+HOP3N5aS2%odYwX3g*?7a^>FH4}{|qQ?Am6 +b^iGP_}k&?9hhBy_{RSJyFZG#2J-U+_kXg$w-M~m&-kU+7J*SHjPK%|pDS30*p8sV8;dvO0<m`s^V@} +S7ohg{KrMW$eC=Y?pEr0#_&(A6WeRPN8o_<8c|*l*Z4`U^9z%O(5`J5F?B*ia8{YBX{a?v;hQT{`3BT +v4i9N3fzm;2d;}B@SLh|i}xh=Q7QuNL)!tsvuAo2T`a`rCp>F-+E8z<Q9L!!Mwdpo#$QvSVy^?jFXEa +N|UZArJxV$Xlt+V^IU+2S^=U_Q)-7xiwy%jDL=@O{MhHi>7!)GpM8f6>NAdXO!@I$a6cjzH*l52`;rx +IOl@)vBD;7mupecP-1smt(-Ug9W3iCOx0NiJnAXjh2`1BD`;<UUPf0wHy9@*oB>cxP{`&gI@#MpC0=W +@_@g@Jaw+3j=`8F&4uYsr-aY1c^)728_b8!n4c69FjARYi1WG8jYL+5r+E<4v<x!)F{r5>&4C7$U_3# +}S-qwOsGf2B4iT=MWeoOw4Hl4|VwJrJGFW%HvQY7%^I8Ngo65=)W(*H&IMj{~y^x-haMQh{%UvX(rvj +!%x|a18tX#eBatxG}%?-?h&+aWm`jc)WCo8=?u~k{|@IbM|bhIh@vVq1SXU{lhbw%rh=qmzr9ZfF-3w +HRa8_I*O6mp8+66L9zrY{!Nh4s=XI49BZU<jAPQ{o%4x9OXy@vQ3b9&qpT`$nRX5jOp}r;^#YPBp9$o +byU=V(C2es~<dTu0#ZQscRw4ew4QaKE<|Q;NTBMMd>)3$e{(4(k}ZF(hv2;&nY5Dj3@akeM?$r6kVHW +``jN^`ZZCQX9I>^6IDvfy1#C}n7(+X!`E6*b)?id&BD))?ky@gEgbqdhH!LF$%v1UBJE*p2xhedibBP +V@N&VF>K>eXlJA1SCfyNZjp6AT#ev#>mBq-pwiopEva^}2+T%d@b9H&VWcCc;2@@IZdPDA=duH0{6cH +NDMNDyk_#ld`vm6~rIOI>+{hoLJ7R+F(j2o(mXs>9}??4?&Nt_aeqUR%<&BO7v_BS29miKLACAGU55S +fxgq$^FFe&a0(LoU=y?kies>o^<$bs_P~dN;F@yIj^)jMXYr7857N@fJ`Ao=9!k3cwaVDHjlyb<ZIBv +Wq!2s$XN+odAcUl79?O^mA<cJo2O8qWF(oW4PxUg}kr*u5XigmlE@<-&jfbjmBXdK|!4S38nrk>wJLK +f4s&I(?cLizyu0Y1iUMdAtd?ffHr}=MJUm?YgD*boqXhX>Ma}=zWpS3A!l+2su0`|?Q@CBcl%Ki>}|^ +1x$)aNGDP=y4t@7P?eOw8joczX5PU-uv9~29zZw++(Y;-Y+@W({3rhAcwpen*EHc>_+P;X$y{1OJm9u +vZ5qMXl+|YDG;q5w*V4o{T!2N3q+`lH?c~BJmJ^tHHC{ft=-Q)TJWRiWD31WJ#rtoQ=XSTna$p+qb#W +!`)3x@s(nJ)G|?Mtn`V`Sdm==7shNAYFK+3Ug@%7E}BPhNd{i)ig*(K=X(63@eG;l4DEhA-T=NDz95S +)957+U<)~1IMqx21wryssjI0?(=4;wlwSX*ZwQ6+C?(<IporH_U0x#{XzcBh2N=K(Z9>%7A~#<>{V~+ +vkk;HT$YWTVYEVm)t5eNMLMUclmkESc3%yb*)N96(r&oC0ULL&>gNTY3WD?{2t83M{Ny-$j3{8tIEk+ +Cm%jGA1wYm`TcWevp}f&`&MlrslVLGwxMJfL(WDnsIobv$DtEQvQCQbiAoK^yzN1%$q6+5r>L$#XX0v +8z#q#ZdW3I|`)W9xWCqdCtw0sapE;}XEL*T$6PDDVVq|tF9oGo$3ze(()@Ll5i!UaiHwdE+6MRbHve# +Al(Lpc;Y)(Lp60|Pu7^b5jrK%=RdDbQ3D`U{0ff$XeS#F$o#To&%}IPt9J-B(%=?PT;fFy)6XI%;k|b +P_44#|*gRWI8<<I6;DnU>>4tsRs;sf>)fr7LPOL*9R<Hw@AoYrLN*Azg88>Qyp=sufr1#fSRmzO6OH% +DJkxSq7qq7#r!hp2@P(McL61k?7>4x9`WfsszP%wr8eBcq`(YUnOy<zsJlX^;zvGl!F%qg#sNRiOLF( +>(M2m?W*HdPj?@FhYw7Wb?oYSL8>l_|*Cy`^AK-)Gu6T9CuZBpG_Z*fFmxPS3kqG(2Gg~SD^^_TQR5m +y|uCQ-3!f7g%<T;-L>U6Y#vqUb=ZL(JVT#tfs4!VTUNn4WZ!<kYhs#)^~7u^JMQSnn$(6K}@-fNC4(R +{}9BmlTpGC5cJ73!6GWE0uEJP+wnob1$|UX=#P7&Ep9=j2?RlB#bTy;^)3MVR7A=k_fFF6Q+lf@UGac +6gAb`T0@HL{F0{od%VWzGnuKO1nEV*i-tyNFe`U<!Mx}_}Oa)N?#k|7O8YNp0pE}b*1uRneOWX>GmSA +Dv81N$7NDuZ>QRmSXY%LzZ(sg7$Mhwu=!MKuLJg7<)=;M!|QVnUrhKz4_3kGrxK-Yn#t&sN_#pp0W?d +~9?ewyzrp^%_OG5Y6D^{&t20kpB<U#qa$KWn<m=<x0ut@cOa;*5Ob7FRB2Vv~UmLxpRhnLCF8oE}eA{ +@Lh-$Ajh=lj;$B09UtT-9{n4-?j&O=Jw%yqmM+*GL%a#%QJ!Jx6M3U?JRYo#{H9R*EzX81>{loa6C7+ +F)7@u*&%_TZK0`^!MBG*0vBD8tTlSlrvfVoP>$pyTmT8U$3T{RGRdnaiL80g}S8{6ZVs$LIDe&-!_kd +DL@j{3S^I1U}%Q6kmuQKkVt2tpyfarg_aV9>4lm3nd}ox;n2*v=rx#=_TRF+nIc+*7?!P@Es|OwS|LV +9?x9mdv%AQ6?Z5V6%#79>N)tPn*ib;IV(jIxk5EWxoCvuFrh}6+lNCS;pIZvi@dRQ<48%0Z13~_BEOX +9DW$C|c*07+jI9;Hm0_@7^f^PCQ4y+kFiFxYz(+%$T*5@*VpI<$ovXrNbQ3LbgUixj-e=uY0FY>k@P` +biCyk=KnO}HE!-z7>G2#IscO&diab#PK-XQr69w|hw$*Zfjc*|NvcvAr{6y`KY(Ic-e!{l-rAFus&$e +Ce?5hFUC1gd^Us^5;SG597akxe<Z$?@r#@Ie4mz#NSPBcL{h@2g-C=H*e2c$D?>dA&Qlaq4fSOPWHpy +)PF{WLy1udR@;JcV;i@F%MsW4zj86di8kmoWqA-Jnc@oXP!hUXL6NRbMfG$KS}V!nY1Q8yBt&KCzFiC +$+IX^XMjRcbDST^Tj)oJhiX4zM+j={$~WlwD#QQKg>|Ef(kpJd_<!x5sh9sPdAxSze>49V{d4W%FHZX +)jDMW+Jp-g50>cpy$50AHND4+FjKVMk$4Q)`AQaqq;iu*Bjrs-P+u-W$E*klJjQ|7pZm5kLBGk^O;AH +1nIPp92IVId4C&)dI4`X|6eb*Q#-i}(>yKM`4=PAOyFhGTSwqy5PP4=SphX&A}HG8m~&4uCK>`uL@-} +W33-g7Mx^`2=DcAmJWUV`@&+&dEkzrWb48}E7Yjowo4qB!#It=}EU&|Nhb`upa1a!*fF-+aV%T451q` +@Ojn$80@13bZtJ@~LJIjs9$qD%daH{)!uWv%F&7I>D+KK@!w0%>5yap|WL#1D=D;o{1F!4E`~CUGT3x +-+$pG^vme=*JE6|YA*?L3L5>n#__LT`QwFw{groW_Yaw!3?luRTkxSngI1_-4`2wTz_8?{ikbs2Olp6 +Kt5_GWd3ZgO)or1W_z+>%D}3mKq2+Pe4ff@6YGj!{vz31VmME>O%gHk@{CFMPb2!39ZQT9TKcA@6_>` +MicFu@{&+Dq+yH`*nLEK~vuICcp;3q(-UBiVJ`|w($a9~MgI<g}LYSB~0p<@jC3Z7H(g$V{h3?NuTc| +^Pkjw}}H!uG-)c>0%ftzL)A%MvPE=#u8nURh3XgU&E;IxXc(R`S!!YPP-UX8NFR*LuK0mI1z|LFa&#y +^-^s3ob`pR&IJ@p63Y-&EYx}N?9(}#R>~TQ<+0d%LWf=p2}t1?QxR&brkXI0g!w9M&b#XF-=FDMQPml +a3)<}c_e_$qfuEZV39l)Y&JLxL?Op*<S0zboa*(!<Dd@oid|AxZnTl7z>`RTBX$}SkxUcM^EV){549$ +Q<9Wra$+*~o9v-vok(@#Ckxcxm0ZgI!ZF{du&Pm;BcC3jj+NtHlULV3hbCnGcSZeUO!xT#fDMqu)4Qe +yh$%}s4qyl7laRB?~fl`lZ2BVIDa=``?UVeaxPzzb;37<qZ9T?V7qk|#kSub9&-sZ?2k0OZybm5`J!9 +jU})Af-BOck4>CA9|uJK2MyRO!>9nX}F%EqsKVL(XB*mD5!1KqUrtmk+>6&5$GX^f@AaGImgre(Df>T +nc|MJ9uMuuZ>^LAC-sH-y$2|VK}&Y0$xqgyFz2oFx6Wb$2XbMVws{4PAYGIe7FujeYo~yA!pidx|{7S +>Ptnoh;CMH@)ifkg;IIlmk^O34On<Z;;oBw#@-bcG?Njx7%R13>7u_F=Bo)osa{F}_C$UkN!fxisPe= +L+!kA12djdW5%vY$Ewb|*K2<G!y8?RN7F+<8WgP!Y*q14Gl!b^<`S<o8d%FOC799jbPsdv_zY(K+x?+ +mBU_Eq;#98<(_XT|EsAteFogK5I)ST<-b;c{9fs?15C89)X?zZ8*jH>U?(~ar`s&6(lC)7(UIRQ}ldL +!8pYc`8?nQlU&sA^FOXfN9qG6Yl-q<+b-eVJZQge@_z^ym)BBQKvq8u%Cv_;dYO^5*IDRijFD85g{Bx +s3<Xn4gF<%Y7m(vnyYo!Gujc`N*szt)ErgNfyt1%`G5nPf)l!PtMJ8rMc46Ek9wlvf>c&JQZ|ahXVqJ +dKPS9!c>Dbmc2?nXJdn4hZL%2K;iCA|8l`m1&IT9Zi$12=E+kt%$MIN*+FNP413{unJ)@CAb72~-SK! +`W4uh12WtVhb&50niuqQeG)?wk0!vWuxlEiMO%{t-{CdSxhGChCCn1e_b74PAwq4-Z5aLoS0VTTx8ja +O4SofZs=*FO7&0W@A+~1-EpE5<ny|~(pbN88v#K&~G1}m*Rk}J%@gB$>M;XG^ZF+K~&lJGDwH4rkoeC +5TW?5q>ZZl6cd<@NQ(K*vkx3j=CE2V%0NbaWH)2<VL}RQ&Z;6w8ISTCX!G(P|R?9y^Sbi>KpuAk%WIk +Gxg~^A$dfFZmK131pUIOCNy7S4r!nY+I|DLh6jlBynRpJU6wbYe<|8Ip3;_DXH>P;RK-ycRWH~A<yYA +-YQlDpsy~YIa+#iOYYL#-DlZ*x9jnVw4AF%JPO^=k;O9VTEBuL>u<jl|DrXL&HOru`{B1X`HgMsI_|^ +xOAYFOevxv#{BN55jrF$&l0CWi83p`L*ZAOvfA{<!`cR;^>M)FwC<$(ik$})oB@VFo-6a|C0>PO7I~e +cW4t!e-Y^*GKSHqyUTRpPN^M1+_cSpH*^3f09b*<oQo^IoW+wqO=ZLD)6blZ#g<nKhhH<wWU?_s=aEd +C;Ki0?1A5zXW+GQ5$!DA^4MkoP5l??mQCYf*UTnkc?sZA9+9o_l|1yk`^9crS}>Y;`-hz2x2!8tn<u? +b{IiJC=B|UM$O4@gIFC=j*mh;pN~H{--{!-wE=6<7hWa;8gxg$%t80+;W6+PtQqg_VOG%b&=Z|*0*QG +GMOhDt9Re%o+yBTbb60W6|MtSVf`hW_*J>>+lgn3H+TKp_u_^s>(<T|^_N<t2%s9nEPgaaE;6I94EOz +FA1v`~(alGhP2#n7J15^o905tB>g~W3yq~01AEh$ot0dwd!<%oJpj9nO=nv)LU9ta<gB#wWKc_Bls;$ +oYmn%H+uTFCvV?#_mJ)gA7GnoR2HuT#_E4aNOrFW96U4>yE+We9X(Xzm~tzKQNfx~~zfqXl!Qw?bb_% +Df3fuAd8qt=MVsq1B<+v1D%KI)EqDRA3ue!p01uNb2ge78Ys_)+akbvWBj+E#DWG=SahdurUD<ihsXF +$H@3;z*Q!W7ojn(`$C3)p6F=C+(Ci9-MMJ@wKCv9bqkUC;%o0%{WO1xj*Z6-xZfNa|7IY1)f=x6jXA; +9j2biD&=ST{uJ`1cRSP-2C_d^i6uXP+nHX)TXQ&})BWnOVrCi>y1fI@3r(xS&U`|Z;5+^Ft}$O$SBL9 +aJ#YIWLqQQFU>)F|XRkG$A~!yKwjUJtMvL|&#t9M(>wMHtDRQkXnmVb5zzg{Rjn@`B+#ie1pCZaL04& +vx8|+n<lR?k8CYuuV!o*%pY#CjqR1V}CMbUbc2l!edDHh+gSk{U2{W2nankazB3#YKV^tO8K*}GS2nu +LvrYp^;58==|t1@!2N8|9e?d!u#3{j^TW^9+kxqt_tj17>vSymV5p>OSxvho|^@DXPnXiLjJ|r%D`$B +YNPo)od6t9!`xQ1+;A#*V9lzq*VcSWkj-`oQ0f4``BQJrj?FeHKn+3&^<F~)$M^H2vj|Ta~k<~(la?c +hUdW<Oy9r<-~hqh;uYN}jBebcR9ot}3pF;o-eVCwP?#>puSn`3kGzX|H%;@ZgL9R@@#U<A3kEnP=xNv +)SyXZCj|L{okCoP+OAoCMiPGx<nyLCKrdP0!r^mro#_CpQ(bJWoB2cmdSbdziGbx11EHM?!Ra?(k@|> +<s6J}ijqG>WpaKTgO!$qbd7MkuvYOA`L2WnAg8_nDndj<y*RhJCrze!+9Ot2SNoOI^X@9Ac`(d|8nDl +r`Qll8;FGzX42Lx)pCA8J+-Nz1eJb1W?7oW^f4mPndS27a*&EYaW22mbtoI!gnyOauNOZ7{&kJIue`V +1S=@n18#$06*_A|8|4<>Uoy4tj-p2DIYpTe8R=&0$$fIoIc$){#oPbbx$?}?`$*M&S&~Nb+43nPU1Jo +&@VH&NV(m!Fm6~-zw1R`Qx?E4bG$Nb_NxTV4;3R>BF2Mz7oQesDk#eE<QR`0i<ry~aFq|B1N*W6Ot|L +_mT-Ebfvb8&avQ%7%e4zdNb%<qtkM(mP_Djfr0OBnIpfkv6e|FjixFLiQemd8>d|>5p;w&d0z9U|QC7 +)b5p)@ON`2rd;>9K%yjTu#8Q6x?iI2+&0cqto51b)=MtxBoIFlmTTui+<cN|r+B}8`DL_6O_>R3z#P3 +2~@KEdP7K1eWJSN;hQS_xP2(U;N!N&EhxJh!mCHzC7Ug$vb$N_nF%hdxXWDS=a`K^{}6<2d2+Snf@)! +9Zs+#KFMMj3Y5!o<Xi0o1B9lEGyzTPr7Z8oWE|O*RrL56%J>$&;nJBWd)2~4p%u~nS!O)$d%M;Mtqv# +l=!r8<qSos1uDvmA<Qc&wnKjVkaInfoc(6f1T6p$#)C(75f}@JU4-*f8kKO!1y&q8nq(W9pj-96yNnN +u1ir%ai;>QGQ*Xaa+R?WsP-7Wtcv%miD94hr2x?fhM$ke2d8Nl$uZ*iA4?@CL5*2gN#j2E{**>%pyF4 +bb={enb<y8%FF_2`rJK8ouH8qG|LqDE<?m)2$+)t;;$a_{K$y6Na>r#5p+Bsv}9)H(V7&=h2of|1|5k +p>$*DHxCBGOkk@--~wtq(^%z4dpuVpE7v+9c=Bt~jx-9$0ZiXb@VQR(eS|4~W1*|Ce2FzkLw!Z~bTgo +csT0EBx5^_N!<A*nf_p5C%a6fk4~eB#Ba=cD_+>-k-elyCC#C815}(A+%>y_bI3N&6UBuc^llvpg!gO +8$aL9jpMg&*xOzj!FJM5QoE)}_#VgF{Vl`2TMeduPw-to&EKMoU-5nj*}K%XRZwJS>U*l1*t_MnONH= +#4r_}6V04!}BjCN4U}O2<Tg8+J_7{WSa-?LkUl#H9zTPdY<GrbVi$6mDZ+X9I?Yv+7uK&Ezz(aFO%<J +VBynp!rA@BdL3*0(=wAZl=2l(Q~QR?mTzHi!N!7p9l+&71^x4Vd1sEhW82PUGv_yzbl`28F6Z{8Q+vp +447yf46KZ_K}WUx3fvn7@8sepHA7{#qi2OK#(}ymTXM1iA$ukIb0WiU#s-b(2r{5=X$<%`ciWi)xOY+ +)0xeWkXTUU&3&uoV0pDQ7stPgK=B$$-VF|p(cc(twwOvPj^ir0FeOkF?^0Kx$xZ#KPAIHKJQ&nHg~sU +Bs4eb^N4aLTFBF_TMej9b(YXTPnJRVdWC`4l3iUzDnK<PUbUdq?vdp*h90^i<oxW?66LwC*|fKBrb~4 +7<P_;4K>dd#5~or?fhf8%$CSAZQe@+7tZN3OsyKW<%Hgw?%%h^##YBnj_8}bIV{xvf%oVU^H1x|oDOM +3UwYfS?XCsrSO4Cx>I>FnIG4jv%_AIjc+`eKcew0jN2F^jpFHUlz#McEnTf_YViZCEWh&^-L&kG|H9p +dCCu?%q+yTkyir{goUeOw6@uxXGJ?c)noia`rOAkGEcZElepu*z^WJBSV{l!0BY==@6Ie%!^X{3+wLs +Kg}IPm}nvz^*j<!))Dy7N@Hta)zP|iGd(42QOdDOk;#{Ktn9HU#Dn3*^pU0T8XHOa6&XV^)5|~1n~1H +n!?Fin^h0u>`L_jE)M=xb@BmJh<q*&_c=2cSm7c1woIf^V%I!N59xvLp6zMWVauczss&rBy>vV!XTa= +<gt_fo1t_W}_zHYOIoh%rN|NS<2Z(GFWjRI&Vn!P0Y<$EeTk0Cy(5-4ZZfH~B#g0n3me+3*F{$v_XC1 +xbm&4!c_k9rn!<ZNwKEl&DSpnDe{S&gu+tXqS`*|-|2K_=)3r0G5s&sPFpUww<c)~+uhKI@YTX4{GKM +EiiH~XDZ|Ei&AT}mk1*m?(eEZv6it&&6y3LCi!8a>@&fo<oxy~35rw#{Z^{NZPOciPVbzMNPt{9EaFU +){D?dzVHILG>k}+KUfV=G&aCsoOi9|6?)0H5p4O`KM}zv#ftin_^#kk>~HY|GUBYr-VYz0<6x-ujtxA +cd&T<3%>tB_ksVE@Bh4|{lWJoR!R^qF7v`;JVQKU%>9w@6SB0Lf9yyuTV(lEHZbo$g0=DhyUk|)*+<v +J32exiP>0PQbd3?0(MwbpBBR;G6QRNU18&5$j0_#mk<y)OV#Bz%FW?Rx97W8P*^aNZJW%uHrBIQ>maP +tf0SaFPZ&h#ON%7lzCu#;hw@iOO4w1LfK;yUo$#Pzvu~8;);z(-`KDjEYFKN~tMCxiwek6Bu4`+idK= +SK&B)AHx6+XGAR_D>m?FIO-no@-zuv~eePRv0+G5(cedi_y>S2LaH8iK;kmJ2&8mccD<*x9-lccw_nG +qtV};AStlzrUic;N!7Bos!nB4-expZbww@G?lM-^>T`0lB5~Ir(1D%8n)VQ_Tbg#)Ce#imER2|M;s6k +!?S1J8~5z;EUy&zd^{c}2fnuDLGB-#iH1$qiw6+Hge{uIA1BDBE&zQcJijAJRVQ0I6{z}>H^W&jo2Eg +{t8{yWuX^RJehbGuvKg0a@mlJ0B8ZH1#QLEHR8Z**y(5F<EXL+hNVAG!-HIG41J2JxJSSHbb%;QXe5> +#3lvuYlv0Qdu?UP5-7??=btT;VD*BHqcY|^J=gIjT6GvL@xB})vW>u}vNiAC`k#OcJQNjuJkXB`;)fq +MW*rSof1HEX%cnX)z}i=Zm2Au#VLv4g<H1;i7WHsY(*)i`mxZQD_*@rvFZnSW0A+ut}piq@Z<mEunf2 +HW?Ud(+0JS_uEerM?9K|8SY_LxE3acQz)C_+NeKH@Y9=Z`-A4PpBioK4-F#dgN^nOzqPqpY#5=y`LZK +LnZK+nNV`C9Bh1h?-oIS$KiM8{oSq+!f&zvXn!d(_?1gB_O_1-_Ltrbl7l^r2+6k`BD#;%?2|C>&Jha +Qn~ssU!oyw%i1!c$^Y^eJev3a)Z)ajZ+(nfkYHu@%{+9Q1%ib08fd3Fl_*5>DWzyH5O`8Co`?4i(&$J +j&*iHYYpyt2p!3Zt3(ux2vzz{aFK(rUJpxuuo5y0EgWW3W*<(FLcH~T$)RzB40*X$Im48KECZ2o8&1b +kJguYNFC`cY>QdymZgXcCC1yOz)P2l(a^=&C<v(%vS4^p`O~U6=SdVs@va0LC)aP-p&Yh7I87&e|@0L +lv!bouyKZb{0RJ1sCBIfW}VMu`jg!n@Gg6_dUM5t?5N=4VX;7z7L;zNO|U;jR4iJvo}Adraqs&QK-dD +i{((2Ahk@gc)lVjU%9w><^UcK1c_If3u-M`dy|_rc~Gq$SPvG25!PK^5;N%bfdPppb?vSSRL;`2V~97 +eM_c*?95=2Oxin_qr|MuiaKz(X;Yt>!xW|Wn;SP`UA<u4)ghG{>a6N&(pYh?+GO|t>&Ab9!qS9Wz(Qc +<2wRSc{C9#HVNk^{0>GpL2DM(}}^n87eQKDw#fuMUEH%+&$3|YTrfLNML!LFT-xdnpHc<Qy6b7+T;xQ +b4_A2$VkzJ$b*OB`WBh^jtU!7bHFqh&{)MFSYQaXuH+bBOaWrv<8^EDVOU(Usw&a*5mrktN3Tx-87VU +FoJbEg|%6|Aq2jW^VxcZ%hyW&hrouxQCzVq3*3YOdNfRv4y9kiZ+}c<6qC-upSIS7?jj^z;Qy(O@zZ` +c9+P6GfBd(o*RP{?uV0BbPB}<&Xc%C(()R)jD^!1aiC@Bd4;PXik|>ACNWQr7JtIe#wgwoefT^tVqYq +BlU|#)f%;Cv4n3w(!+_fN#zH)qr?AqxJNMb@fmFKmbt;Xc!GW;MotTqG6L+a<&vin`c<(c3??(DpzG& +r6f%v2D-ZWASFz#FsR?z~mXuXsZY9DFk(U8cIfzvy@p7je0;YB3aq|+4l*YzA15WzmL=L8}#EZ%NmxW +OWKy#UIUo~$#13~_R?@Pe<w&Sr+&F^O!6J4oTNLGRl=#nh-fL#fIfkH8)L1Z&r**5)Ar=u_sW>V@Fh3 +;H)I!+nx(ziR&g>;5>`io>jFt2WJlr6%;>x9oQc#Q$u`zlGBX-y0!GXqSfD#fRQ`Go0Eb5w`zBf0v1i +qkXV6*&yq4&7lq0pzv)-7`_KjgFPFEe32T$c9?~u9qp30&cpU<5xQ&6fyoBBziP64%M6FXj;P676mQp +qfcA<$^>!iH;2VZ^b-V4FLu41li=zEiw-<}zw=XaGmT`dIg?3~|-CafE?Z}v5e+#F`4yS|jw{Tkgcfq +M_(Zx47Jqa4<?vadh8$6b=Jx6PU`fY~Rd3W`jIpChW`AGJhZ+|>z_pATRlJ6hGEATVE{sFJ#KY~}_XM +Ft=yqfkb%^&c(?8?h~v8oD0J-vyy0`Ns_+MQFj`}srdXctzdKj=jD!;^l7Tj1~T_V3^p_=2~{IO|uEY +L6t{3zLIU66`@3`ZyyrEI8s8_Kah4zFPJ(x35U+)B)1A{?SlVpivAtdP&`Ff-ypRMbgx*2peV9fq<RX +8iK6Ga`P2t!gPzSV}B<dxic6ux4j#sWDsz=ct=bypXM>Ug;mIkNqP@&O@GSMQ?x;~sbIr+HOt|ul^Rl +;^JNk5%`ppZn(97|8gQD&;`w?+hvS0La+XCZS*Imakc7PYS*g`wZ*$FE)s9ak4+U?#fa9Ie63^n$j)* +iMs@gcJP;kEF&aJD@!;v|5Doi1qv?TKBiVCE05T6h8_A+YEGTNtBICBM$H!nx+5d=<NV9TQ}F+!u)G< +v~Cf}9U?QeOEVW?lbtkKxm-s@b7|E#|nKptgn2Z5!e}0}aieni&4TTiS4vwz6hzs^pTWvjdx1jUA<qe +Sh+82}Ai^Z`k%+*uZeIQPMIVO>8E4>(+Mc4q)hxL1(9CCozPQpFLz)&^mk;vdzgk#x-`kP$>>^$`b+5 +B05TaOSdyd*wffQUlR`^m0=CAPKn`33{%o*T8+LVf^&&RthHwWYs-b<Qs$bZ0NEVvN7^6t3`7Xesyv} +IrBjH4FX?cR1gL7RxGx=+l|+*ze&NlDxF-E+VODr!J;yW9DM!7UZ|CXKx@Y>VPd5W)O<@5kfjUK{Gn} +jJ8qsH(RmcUI6xJ~W_BGOJ5>W}KKtQc_Zqa}bqGP-ewlJ+RV%a}IUTQy+S9yDwJz-1FOXf7-e*m{1Dt +iB4;qHIm`hN!Cf4cVHA~8hlb)&rrE!nF<yWxEJHlIg#@I%5qJdEFdINP^A{3#M|D7%G{WU>duyXsN2k +FUny+bQR5;Dh^n$!u3<Am0%uxerF{8n($VkQl@FwKhVqF#!KPf=d#6-0Gvd&i{tT8wOM0P7%Un|2u$o +_n&>j0^DB=LUv-YAu&wtfFHii^5S=MT(m{;e~-k(F6A)Be~ZL5_kR<KFE1MVK;kVL`2mT)(-!>qs0{p +7)cXyUz4Vu;4E$Bp`%h3A_#T!&N9AF@d}M`R@{gzt-&P>n?sI#y{&htB&(tV1TfGeW<6sjx6`)=P9WJ +?WSx&E`^1{fJhrtfG4CytoUWkvls7sZwd(MM<HPfjgP0sxYXUDSA(V+2-(X2Zz3*)P+=+GrN29g=oFh +DMy)8|h(Vyymk9BOoV;3v<0`o-v0QgymbWYx;rY@=5{JL&ce$1x+OID%rdlR;;|8Yr%`rsg)fbf}Id( +Tr4I^v%SbFe3?AS0yb+m-<wlL4!JANXJxxu3Qyath;9t1DTP@iRfM0S2sR_`%`0aoYOC;N>L}A5c<Nr +do_tOpnVh7&YLp|Wx2BAvcMZcVk`l?7MNab?3;EtDP))rd7w5>W&84xobq;B1UrmuCKXVdy;-%A%=S- +e6#rpFEXYejYljCwN8x;a<x<;cquISy-V?dMQlrowJ|DqNbXn@eTU7}NW-MD1m`8-8tF<Q$W=2Nws1y +l9-`^l9XoD<guh%V><z5E~9A+~*t<7yZX7Q@s8DNTWGkD4WFLm#=<fyiF3E%S+`?5RuzazXk5q$x|I| +<<=?(hg9Bw>Vk`esp;wX14pZS$S(_@kpDvNDyJC6jB6Ip>&TBFt0X8#K1Jn^&*5Ns)UPlhvLxmgm<yP +hYh|cB!^IDuz2xwp^7dKObM{0=>o|PVK2b#o3|OXW%?oAS&aZM!KTZV_NO-w{1)Kvd^BEhqo|QqSCl> +OvgBz`CAHIMd6rxmvlGL3X#w|m3_<b1NGh4ZBHV}=~U6kE=FnHiRf1#U9I_w8BU9dYIvK^`vyW@7_Og +rlB$;IG6(rCxZ>tv8eu%pdkif?TFqvod189`<{o_`c*xzyl}J4<yi@NjsB^B=-*=<PftusXNZPN0?G? +a)*yHzK{A@h&_fGldG4bi)KTNr!5C$hnmZn*XK!Jb6r#f)vi)U^Gq#D^~@5e*{*`m$HkKD{^8RDyiBm +P_mz8<p1vhik;PLKdH*#v}|Sptl0fw3U+?=%6DZ7Ku!3I^?9oB2EaD;+rgAt>K$43jU*KsGohz{xA9B +VXp|WSh);!+vserNAkG&(Vhc?3UvO#)`=1gp`BTMD$<6rwg{q%K2s>k>ZKGa{p&{9zS(KItf1+NNgig +zdB_DPrf}O-8UVe|78IEcjHk7fe-ociy~p0j0#5S2r-6&vRoAfQuhVb#1WW799$7GL9MUeKyCa2YTq8 +)R`SPbxBqY@(8p5#u#$gb$Ih1hF&vZjaXO>?)i9J%o(bHN_}fV{j9$}DZm@I*{54O<>9$6uQcj7lG!_ +Q^2q_aK%Te~~9gIAWm_EK>$vWR=Bkqz*mCv2u>&K+E5`Xu!Tgs!%DuW$O4b8ZIF_#vKBSd13t-ojBh| +GEWsdn^<@~QxTQm|m|h65bduvv`h<#A1552kC0&MZ!v6fZq;>x-DFt#*IKu9OY!o`Z**Px1MIy<<1OZ +P0@%A4ThYq4?3ztR1eLVEVzFFKIHJ=bCa*XjYyi=ILw9%O<;yxVw~fFWlgLGM=7Nj-z=GQnH%ebIl(z +(8DOxru=@BNR<uR{?$VMXkK*=)zUMJ>(&!}6Lf`hBx(MMA8r#KWsm5y`Niy@W+IMcc=z9X7pv7jj)MI +&ECL^M=+n_|(zRnb`>-UOwHsR&H6FovzOxy24Fj=pdLF^uGt;d5wG5rTqg-AIIHA>h?!oRWjz#_XYSl +3Dx|A{zYS1Lm|82RG^rA0MY4LJYKG3Iv??S7B-tj_QF8gQ=-w$>pTwiBI*3L-t$jLWtn3-m+7>;@oCv +<2pyh9X4#@$79ulY)}uJ0ZS8Rsy2hxsgb{?*o*%X>O7t+%{d?Tw7Dt9LkJ2e=qcrV)qL^=YD^$^=Mk5 +{Oj^Yynv$?#_1<28Qhou3^_{$dfnfSe_(t&&yje^e91YW#`q($;%KhU`I@9>)uUa&tCRWQ$G)39C&T{ +&h?lJn3&<3BB3PAL3zWgR*ceXcR1$<=I{3<eGdR%r=G7H=--BzKRM+yi242SA0UP$X`I0rjK)BlI!%+ +GdK7`N9wf+#u8^>9+U#Z}L~MmRCiypkZYF%`*3G>Ja{1>C=`7gSu`QJeMu%^q6KGT-L68RQ?JzLrG~K +eUYhd-I1_@?({3=32B9OiX5ETIgT%#{~v)o%xTh9kANI1X_G6h{s>*dzltRM&Mlt>UMt_zO0L@Bb(GD +kAdi?p7SBir1Mzc$<Z8Desg5f7)uyF19|lRy4XL(I47+fhI^e}tG~{xbFBdx+T{`#%pcKd$7TKuoW?r +a2`;M4q|`lbpw4s22S0xre|jw8rp*lNesuCR}%G0v&NDzr62+BPv&XhAtX1y4@_6nc6KAmF=piHSq*J +Sp`~`57rt=O6V*9L`kpc@(y=KN3~5Ip}89*@eo0`z17~^Oik6qRBD)Pt~m8V%@#L$?D(|See`N7FSSy +v)2nrK>TZie9Gs2!^>p{0lL6VHGs$dTj*l~km)!1{VZ=(GClx&=Z!9>+Y(v_LY~?ZLqb3DEB%)DSntk +@%T`0IGL@krd2x#$MSR3ibyY0)FB&;u~ZjC-w#3hXMaPuB2uB~1{q{&Io!zn6ScjZVlsk~woj<K4~TW +>tJj?$dJO;c(yMEVnm;isKLl1nt+sVig~&Y0Dl?J2G}8_0hIG2cAbIki4_Wk|hDgGKv$d|%vsW7xAKV +$IXqb?;XO!{RZ%x%mO=1$FQwFS0xmvvIMYNeg#Ne>5JsFrLsJHwRQ>?UgV{j<-BTq&cb+-$|kWyxyM6 +0NEF0!r%m<>RXB05`|(85ekhpXV{zeI>FJi;%>_vE(ewMBJ02_kHzh+hPiZBGCzcj;<1aZ>cnQA*2~i +xinWF0VM-ccc%X$59^ekA3&<V0!sC+NhAJ*{HIwS;;Xis}fFAY0wo^skB*99ghS0Dz0AsR(U!E-DOli +#DsIc|fT`0YaR)+W5F_y%9dQ`b`3JC_9@a!GxR~O%f&w|hj=C;Nx2Q=a&M^g9;b}Oa?entJ8?f!cZb8 +NHwb-4d+eEHS!pMlHQW4}ihnqhGoU<yLx1WsZrs()(ZN`U<t*{su7<{u?M8;&EJJbV+ofDGU!24~hd< +n!PqWwuxc2Z2e30K2<2N{CU=X1WGF6b|f0=r10u6u>cT3v<@{V804p=&k=0&p|6JPJ`LpYxIF^<E_?p +0&pRLSZ2KkN&w%x74^WdkZcpYXTT$61;iD4R&2vafJz{nxplnaK%MiKRwpNr2%4#H$P!;h@6^io{XqP +TEG9q}`)BvNzuwP(AD<!c)*q0?PVRmmo&Ej~sN!<Vm%zpT9aX+O_H7l=-$#|tR{?!RmETvPs{3CeO0g +lzejDOZh}^^*IrQ>(u$|&58^SuVi#o!ch<m$S7=@)Cg89N#qzEXYkKxS4+;EKU)v>DOs`UGY*Et)~WH +!}RgRjy2;_Pp3KgjUS!}HRfTv>Z$nywwI-TqqIZ-d>}JLGk`(AUtKqt_!N+Yo}QDmzJuPv%#1wrZ6qk +U*P|Y*r7F7H8C}_W6Y~ug;8}suj|%5qqEDW~ak9rnOoJ>X>60X|o0^56<st#1H)rrk^)F&<%V9dt!fG +_EB`Fhu7s{nLQU$rdd4SFe1BQMnZ~dPde-8Z^?8dat{5uzNeU2nszd1-aVC%#=y+|R2czvuv0DFEpOw +g+x!LT4LqeG8aeE&6(zA_y*%e-Mx=buMdE%YU_0V&@8MV_{BRrY6?uBH;&tL)%|R@?ZrAMcXpkWvK2Y +exCsO(;P`7f&_E%WNknGKhSS*zZlTkO>w<Fd*I_VIXm4PrFYpD)wsIUS%&`SyBM%3!#%g#nS5rW&LAG +Cbw*<kh^<vsM1$!R$)X<lQ}yN8XWGE!Va>CVyjhISxwKnQ9Wd8L|E|8`s7fDz|3N)<YOAp-VJoi)W22 +%EG!VGf^rPF|#1A<Ic^^PEs4Xpc5x;A(hBPetTk$X#s9*}Mdy5QlHC>Pw!5pN@Xi+j7sUI*v*QI}?ds +eq(%$xM%1vN=SV(3htl|5!_02qjv+ngQ?f+0b2{!HFv$g|LA}FqpU{5*LU_}s{QTGdO`bKiHEqdpi?w +ef5#gh`rSbH$Bd)EeH*H|_y}TOZUjZ@%WL50w|PCP9a2YLIAM^kqU5ViWr;nb-aEoiheACW%%!wcqcC +wvd?TE1`(=qJN$)t>(R45Ku^*c&OVkf@jlX)55wM$k)qT`@7V5K$^VX!Rz>4r=Pf-lqA+~kB7P(Ix=b +it|m+;Y_GM*#OZBFtKa|q_-{S=GJ+EaV<!lIFRsbI=(_lY1)uyOb9XUSS)evQaqD>rg5Yv8fNqjSbxA +lQ(puOTFNy1o*(w^EX-VdQX-D90eJ@fqEdm`Yi3LgA?>)y^jy3Kdl?YwlXmJ9;Q55K`64Udpq(9U%dU +*!-aEIsHl~;$y!r*UivVbeI@X^^ENgNB!w*VrYd2FAg5m6dN`)5O?_oU*p+ks3-m+9yw2(-YsLzyZZW +Y7ko#ESR_3jd*((Icc1SAe;&kJJ@gFwG$m+&(S>sGQ|dNna&}`(By*d9GlaLvH|md$R&TbE^zC)w$jh +i;oJ^NpwR=c~Iz1KW@(AjMzafPTFD>6z&5oxX9rwAkZu(a}-{40dw!u6cZ1!jv?{#;7QDe4yEy4Q9j~ +GbSBlIOvNP$gl<Oy!WF4KtB?T|_RK6j^A&13uK$!29%`eC@gyP}2%+^Mp?F(0A>bn4|)vRXxgZK-}Nq +GovUGTBOZ6Nm>%@?|@Uh&%-I{>52GY)6k#h5MCMx(HnDs0`AxJvMOlLq3fc`=5A#d`4`<{r(@5q0i3w +6G8-z{~_Ea5ER1*7NHpmUH`+VPe~D&*@6HIHIm$hPojWeuq+5&*8m*FL0WZXJS%a^)-XK%T$;py>6<H +a*&=9=g#{dn0$yut1P`p^5@35D5rE);(JwKmj{-%}uav%^GY<uF;C!3ixrW<dFk22J!)x45Z3f2a<~O +%S<?H%a%0;ul{61$k%ef4M)xhC60?B1^^DSW*K%Z6;h2eiiiufHMMVH|BjINf{*Dl#*wLR{Oiwa25QX +%X9X^toN$D%0omsI3;xA~Qdq(2ZMz(k-ADx!+MU@u!g-DC>fWLCGy0_`5v3G~w;fGB}}x{t?9(c4Ot( +2q4r`%B}!ZR-Np|9H2rcKlywo}cX?{L+l#D;l~D*HpAR4r(-Zc*#c0G2Oabl9d=$hoi0XeBrf)ZF6d2 +T{+ISOo@o45D_3mmq;s4sH3J)bLk~ZU@Xl(O!x(_{o|`byV0TEws(fF2RZ8A#;v-yd?{r5Vq46Cg}M& +u$XkAuhp-w1WH9hbblEo|P^X70`Ex{isaux&`dpdTGM|WNU+eR|0zS+?jV5uTcCM+B7g5UzPbMb_(VO +JZhz^bdcl^FViFY{x;20Q83H>~olCL<OFN&|veZ{%aYB+(vaTRyo=Lh8~@lngHFHp-W=bhg{(IYOVeT +tAm>7t{*lNYy|uJAG!H^w6IGf9^+lVc^(h$|FpVTl|)FNG;&yv;#JsZd@gY$LJzXy++Ld>)JEkqiQO2 +#?PTdFe6&JHY)#vEorTvwt%97YHcU9b?-+vh*Wg2j*lP{+HKWm#lyMpv>4Bjlt}VuP6REp7EOm<7XqI +|7&;oW_9$dJAA(pVl+z=pLRE|J6*QPG6@9a=}_jYCX=8*c*n3{;^MmFAUWtprazzSu|{fZ9Jt1K>sM@ +ZJ6}&-qdAlXTj3f6uCZUVjbp?k@L=>slS%!X{go^e_-`^`4a}E{8VSNYV%yYcV$+dgK&u&V2}=|Kp)A +-Fw{coT1a?UV2e(N#2Tw4dga$&*HTqqjCX@YTs&N2fkk{d3?-O{@<v#6dR(|r+sCg4I9d%T{Df(+azS +mTEKE2mCv%X;E5M$Fj+-AA|q1(+6CsKfbZXpej&*n#duVI+h5UuzSgUH^d^#Hrn*LY6$Z>mVvsgk~vd +k1EBd^OT6){Ru1fyU8VO#JIWkgZAi<1r|xc=)HLWZM<QtGVYsy7xjqAfMUYN8<Spa+L!5>fF(o`>*DJ +)B4v5o{j>x^dDp?&ln>L`|KkT@B%!aNbveW>WBPts)di&<I9eGs>AORpkPqSX9-Z~S3@U>UC%ynof_Y +QCaF0ZjnaV#NRFqUy@sMY7VY{DZ57D#;r1!$_sb>2;sTbDidzHE>Kyr5DGPNP-B09HNMS3ClT(!pQn- +#YR}WQUXr3}m$UPrph9Zv>8vDU33$A&)ys*ksi7?a{M$_oIiyK`~1b)Wh{gq0MGF80r?Yy#V@;!*>-) +DQd_r6m}MERmwQ@FKNshP}#l_5i(QvKGv)%CXukss_n-v!+n?t+FEdn9g6=;mp-yFY6;p?qUI!GsASt +I->b2K<36ya(;oq=*cZV|8!%Y`BM{g%!3yl6QdE>s=r&Id*s{_7aNZgCv~J<-LhgLNVt`_p~$lL|wyI +L;Dmpr1N6}^!UZi=4Vv-!3x|~(+)TI9dl#5vqi^){XXcTg@h>kH315JmI3`V0jfuj)-ev8i`^eP_KJw +t^oo)*)G4J%uw&AW4XYv*^>$iu@IA3V?W@Ykvpu0z$brrTAti0UyLRn9vi<p<90U(hasyIX0EJUvz|v +E&@$l6$W#J1U{|X*E(!&wGg^Biv-W^mb)wZ^a=A3fsn<bjdJ-aiI#-5Zaepsh+!k5XpDaQR~CQhO&wq +PBZMRuZ^vQea8sPojs4~>kfu*b{xt?>c#x<LNJT9Sh!%e^|;@#FozB5u%xZ+9pUg-z^&(Y!u*9S-Z_< +aC`d8TL!RVu1v6q;E_rgy5H^SwlSj6>GH6I4^d{??u;emG|tty-)6%M<WHQyv9%c;-Yy+koW#ZFusDj +^Z55c)eTl;`$?bp18}Xd=W=SmS^otf(EDFsXH)%zn*YINK49@LFY%W{l7agM0}59w|IS&UmWa2J$ZL4 +8A`6-UsRU@~+pIlk_EThBfe6@#&_E!W;v4BtKvol@0H0r>X+^O0>&oOKWYcf38(iZ5CYWCjNlv#_Whe +kXbSno&8PGWb>yH?)|21eKDWLI0G63$tFd78`Ow59%f?kFUs7uIAw+ZHK(OYN&W^4W>GG+i7?}xt{lA +Qm99-hC54)kHiu`fo=7bVR{q=VtD8~E?aena5WZxgUgXLDfs5+&><5AqR<|2B;3&(ZM%>^8S(Q%Gh@F +c;{HZ8Y~4?L740dgKarpDy>a)k6Pdxu2~T`qgsRP3%`z)BG1NJP~-|0btvYd7~3g?%<KHbpvy+C#RIS +l1iB%u)U1-PNIdwZ}!X$XnZZ5Gh&_9BP^|qJ(I+BQ`Zs2G$*?ZmC`k@X{+k-xT`gvKbDsWev`!@%1QP +vMX4+Tdy*PER|>mR`J{&x1=8`ek!$eKr*f(;Y4v2M{o{%`Jm1^nc_5DETk{LYFi<^iqdK4xWw-u+DVI +G~<k=ZI<zwhCT^qwEh1F_lSK<?_W!05Oa7CJrgmS6xwLm;1cX!fwOl8%1>JBa6?iiTfEl_*LoJ*m_dT +OE%@(|hBsW`_5WxiMJ)mh7yTXKSrZ*_;ZGwdC&OJUJP%j^pH(yVVkga?xo=69ori7RoME*$+j$;3_hu +y5ExD2|Xn34s0%u$^89sk>JxWdv{SnAMITpQ>sv1oz=9Pl0~;gV}hB$Q>;oKc;PdjbDnum0on^?ORKY +wu_P4-4XWJ-NQEbXMLaTAyaI%+m3ya)P>85dVlXPC(=J23}%_J;w<h4&7OppoF_|^mz;JWRaCDJ^KR% +`KCL_GoW(ZHTCea)_`2#-l&W$qPc{3X4(#4~c&97uYp>l&lqn}Bis4=-bX(#}LUsy;2~b^@tk8Pi;o? +sE;nqJ$l2)4M96Sz77VO^rak2L=|KcKX4r3@8<hrQV`XDe1oeS><in^zANh}Js4(o>pCREiet=bMIM9 +2=rbHS~hy!V!zw%Q#kS^G!Q%$E|m7R!8|@>>X9){rT5j5D$<GI^n9kD0Wk9mieM9ZXW7=~VS@Cq`-ic +Jk`*zZ`LYFu%l8zd7?7RNcGZ_J@D{e}*e;k(rYv!-hdXML0Aczyh#l&tcyq+5drSeQN{w(*yrf@=qmO +N+<>Srxg^|kZKLaVhjXnDFqM&l-4ky+ep_q>vIn)a+@*5Bme_fkO5H_z9pR)kZ4La@gll)k|*oqn<do +>I0?N*Y`==~(5;g`*|JpI71wwTj7ug#VvE@(C!i59v`x0*T<e1r0^sip7UR^{7!cdWNv?5Uv?axm&Bi +LH{u0YlfMqrO7m|NI{Rtd&PY`R!+?yYvP~suJ;36LZid}ek4dSnUjqn6_COTI-i9bg}kcaueT5(gOZz +hIkfA|g@HdI-Iw(t7pym=ddC2-5Zf1Dw~ReyePJpYu4b87B~Mgv8%BpYF^H5Q#Akcd+yiv%%Myhd#{! +VGH!>YaWVf84oBZPmbX3Iu0gy>8JpsI8!n=xr0+0|5M+EpK1+^qdbJe0}oT12y^g{Uo7ITRnyF!W+|0 +58hUX)ogSR)%kIL3)Q|{aGXq7hoZ4_HkQ37x6l&TaQcK{*d;Ja=jbuNOyUZ>w*@^H=9#>PjZQ}W3pLJ +>9dh=V#)184_V1ldh)>^yeC~`}!$~Ue&I{8x5k&liH-!0G-l7x}l>Z8&7!RM`tEPseYNO{f^?I(~-#b +()ZZ=d}{A-Q+WKKvGQX$Xo0vi;T5m&vH-nHegTb!83_pv<P<ZMsJms3lXxv$?MrIGsJ06nTEuZ?n4=3 +;l<P2Bl@5RR((lAm?Euw)ojZzi7Nv$8{V@z5WN@<O%y#PoJ@k2=l>MWbbp4#G%1Dq8y_O7rfQ<t>SON +w0HS^I^%@szL~4(m{u#sMEr7{4>D&V|ws+ssjBas5cKUOKgo=>XOXOyTaJtj66I%61uLtz46k{SgSkF +Aj=+%GNn%mN*>xIRIRhfaMSBzHS8|8hUw0`$9!Kp!@-!@+9?Xd%?%$*$g;ve7P^BLPbHQe&k6Ln6}jx +fha3E!;4&W;kFI!L^U>ja!}AX2&&yTuY57UdXBR6dHoFb`+W~9QG`ZYM2I_ZMb$vKRE9<a6-WBV}zqo +jab^o%m1`c0lt7AOs)i)<uyw4}Pa(!BRok+xiZ-O*KsCV15g;BHouFb7`;784lR$KD!<vYuN>|cdzT< +bweocrk=IY?Gu?EUSZ)sa)wQ?i4csyXrA&3Mumyomg?(jUwDAwF_FWi`0t+6RLF?LbW2{}=bAc2Z<ba +*cl5M}1UBP4x4G#ozwNx)=Or{};j_C`wcRrT)(^xYWM0Yxmo6i0f<8{e05S&x&mLt?c_}_wU_q9LImH +fRwC9{Hw|O-8*Zew$19_{zvjZ5qzhCA78_|2(js}eboQqdLOIHx}O5U|A(K(2XcRT3g092e_=R{pd`& +=1kJ9L31Ly3r7(&lNp$^+5e$Y9TR`~-90vg;35;7nms<*2_twaCjVI9@w8SS{Tf!RCW%xEL=<}Eq+Y~ +kUW&}fSW{|+%a%+~OX`nJiVsH(RJ*B|)*1!>HJF$OfzluqjZ7MXKgGv{*mA~+<3mzkY2q?og(P|20qg +f76K1VkY&wvHx8uU^a5D=~R$i7U<WWln4E6yfDV%fix@Axb1@WMCwj!j=XmSXJ^FP+EbHHr+2i=W4-d +mdtzpY74i@4D<Bu6dK1Fd(Za5P?}4atWp~zKh$~NPFu#`)+Kcx-So4-ihaI?vHDTnP7%@dz#J~Lw*~s +%x;}}VNfrs#G}yV4t&MTZ&&>Of@_RAn&a0K=P3w-v`!s<n|PNjkGFxRIJ7xFo=+9XlNxujPWLRfeqU} +TZhP)=nYVe*D@iav=tt+={rPg%rZlKaNEQ8Iy(_X_WKm_%DEM85Hn5&CaDhC7wnb?O&*mg7;Klrsc;; +`uutvqwN0n~e!s|8OUjHA>udbJ10?YPT<&l<KN87NO?^qS|by5>;3g7JEW_x|E@!fh}oZs)he*eiRQK +o=&kpzP|Plo%&bJJQbz2n>_UEuEDcnk`jR#-=%M^N#vv0PUxMcXb2{dC32a=GQ>L_-Se5c5%WbA#iT- +)9X1x&|(44^Vvf5d#nF<Sqfz(r*1MRQh_6pWZ_K%R3{X-~)9ENMvPIWvZA3^x69lEU{Br>cDuLWD$=5 +cE37d%O}t5ZO;-u(%;Zu34lR}+0BOH!ur{M2I`5hIJQL23}G!APo5x#yy_#V6FX#Y^XI*CF>l-}4!rP +myGo~gZ)4N_q&+NNAjp{VjqLTTdg3WIX<gker#nRKi{o%Js`x?U(mr#ej5-M~D;HX&4PV;qPHTjB_o- +vwANifLhMGcjxar|UYrAfW*09>lNy`YlG7ZA>i&q~C-AGtKJeq(|-pAT*us59_bVoj=Md`TM`hnTemY +uvcjBTwHvTL41G#ie_k$d-LE8K_|Ezr)Q>Q`A_KVo>6-D@Ng*-F3`T&?kTNDf#-HcOl&Ob^wvk;iF_9 +t>jlym-1CUmqA(qjn>R)UY#zu0Ym>UGLmXh@^u#@G>Hr&}d(0DM1fHsn*YT@sSY_Z96b|hZpaDbzVPQ +7li-uul1(_EcAT^_7ghxgR=Nx9*mRzz@J{Qs|h|ra*2Q*&-e3uLB@Ri>U5|SV_NYDUvyyVrO4$z!PzF +iulU;Bk3Wsm<R8%YyUU+$E&_-CI7*Xy%GWf2KHH}LVwd_MXn=l9?el7|GE4S`s)JDbRycE6eF#y%-F0 +V?UWA)gOLTw@FwFUVicItc+MUtk67f7CIPRNyU(4r+-=2J+SWBzh=X%m;#Y$maFmXxsj?dSls;z_z?Y +k9mHFbj=zM#rrmo)LXYr=&u>5{tG)iWLYU846Cp5D)fY-eQ*GpQDpBmQt`Zj9oGX&w*d44s}k+Ohnsh +NJ0`S2r5D)U`Hi7<MDx!;}bhtc1Q&d+JqvBZjXpcn!y|%xI4~s~jAND+bt=<5oRV<V*))4o8@{TbVP0 +hjeYpeD#*y7v=^J36A$qBPx8UI;!PUknIwiYN*k$`l5N1*X&Rv>eTps9D?0lJ)S9I4ci1#RR4ZzU&-n +^Yp%&}+!|qI_w}2oNq;+KT^6-T`J38wD=8X4R-*fwmiP@@x!B6x{>hnuPW|hb)%5?r*6_jQ{+svz%k& +J5Z|yfLONv3}WTihe3o`dBD+A*l6Tq9O444|E<iC^8X<eQHl{7_yvc!5evR#H{fUP*SO`jxDU|b$0+k +8s~$ejoV7&Lqcn*La7NB~(Qa=;}c0`%+vGbI+34x(+M(8|#=6y$7T79?p_5{Hmr5g5JM9BzJx5ev%iB +n$W;L2PQJ2)HxR=wHz~(FEQ|)BR7<GhZlN{Zr24gsKyC68QZGg*zZ+9m`V<au%w%?!dtbD0(Ut(3w5& +glDV1fPPJ2G|*T8kx^(%!!+g>MBe{Yq4v1(SbR7Uq-q#U-O3T4mwAn`!SIU!eM0LGD^Uc7LH-g3(tN= +RVCJ^~qLprm6LR@d9XJX0HZ4e;zRJJ1LOf(u;$jIm)cn%8x;<#R-yR!_(EDkaN9vfKJ=$NDPLR0tpDy +iht!$-$5a2aGm`1n~X9~mz1Hm2H?_wFGt=89RWh|lW_u%`Lt=!h9wq5}9%j9l7fPF=RpPs3*zK8)kd^ +l9thzOj)r|qr&Byj|NnmN*Imphol^Bo=FyKpf=4~F;S%NJ>DxSYybDv#BI8Kihzp!9OLyv!9WR@bj0N +-AyQ;GRV|kC#LCsfyb0?QpF{D=rlFUZj445MI7FH9?kI;;2D+wo(Kbi82y7!|@?KNZj#RKgru=|F$UV +jw}k@I~T2Sr-()sNoV2UoOQEO7*QfN9TXRfdap8z-HF&m?CyrDXNXcQg3VS>NgRp%)@qZgV22kg%lf6 +0Zg?Kk12gj{yM74}O&+M|be=9xEWf+={Uc5h<MH+;yQhtvpziwzo7u1EHqEuJXv@tzL{C;)38X{5&dw +2%L_xtVs<VSr*Yo$7yIZ{`JI9lu)>KEPDK}MSJzFLG;lyy@ukM~Ne_8C{y06USb5`<vO8ec(DxK>g+w +1ldBGba<_s79@yz%sfm1O*S>hZ-fCKv3vnQW4ZlZwJz0}OBE*H4Ub_iw4o$wdLkHLf-5f&8}v?T-V+- +w(9y;mdJ<6zV`<-I#J3uh+k^emK&)Syt)Zxe<vqQC8SKZbecb#eykE?r<)zet%BQs~(lzqrgDp7$UD9 +YieQ^;a;6~uaRE4>{7ymn=Cd4zh@VGJle6qRsKmHsz7`^?=4H_;gu>226A7#+r%o>9EQ5l#Gt=ndx9G +!N3T0JS%{fLwf@NMpE){mFs7?fFo;B`jf=Is9|;YmYIi<4p(#COVRuj2#Y3xb*RJ7~9%Ni(bwS=&6%0 +2Bvu9&dGj^6)vdn8HeTGZs4zilp?$KBjOYHbQe3g=+A5D_6=-EiZW)R<=cjhaEncEt-)SXUs%+7S_>U +ubEj&oL_nhw(Yv$i^6A)I0#hZdF}y!T0CGve=SgOfh0uiXZ)S<`=C%J`y-`#8Y)*YjW8zjg?YlMIO=E +JgpU82*p0^i4<nr&swNyD5xD8G@i`jKJ2f2#GMC7F$^07mTC;I+3l)kH(-Tl7A`7Z&pe1rUuTbe@CA? +9p+mJCB`=sBnqTXFlH0*Zkd?%x5PFU5Gd?oP!~z)ZA|ov%)c5KLXx0qmqNf*z!VZ{O95@z4Ll}3dX3k +MA~BdgNNvB(W3cRabD)T#O|FoGXSZGrRDW_{Hw+Az{<7F2ZIU|bn{Yt&$H%Eg43S_yH;9OqpL(nu-=2 +huGr#&NnY@QSK}x`M%u)S1vO?gW`~?T80+3rVhh$Ik#+4Z%b1~6_;H@Bg!>r}^N(?uS*@|2stMgnzX{ +*SCSyw+7VxX<Q|AEfJZ8m`=Z?yvQhpWVokNvRxO%eT{EFY{M`cIY*RuBD?uC6B&i%;i%GY-32HiOaAt +vBSkL%y$DZM+r4zEhJ2U+!*kpbQ?j!%yf#8LtBBAlX$HhzgC4ad_L`o?L+Xj2f%W86u*YQB8d!RO@uT +12f$)isv17Qm9H8oYUf01Acrf%FS1BCnNWqoIkH(%6ejNAPWoWI$m5~$hDWkx_X3OMOuQM66C45R_6X +dEjiDMXwIEeU5Jp<ob(|tq-T6+aqT&)JE+(vOE6OSwU|<VNz@rzoa~ldPr_MR%yFoC<VD9R8y0AO@x` +ludRM36SRGRiy*%3(YA06>D8;;<-s`&>GY_rHizro;(QO~g-Qk~bh|oKiy0Lb{H*oz(vZH*)9#gTtY8 +M+KSH|%Yo|q=WyqcUVVKj&vc~Vs44Wk_GMn;oP%1bN;%k`BeUAdUU6j^Mv5px_c35qkO7IXb9-?WlNU +S~=jrZuFe!izjVs^-Wp%T7MNWyXIQL8k6oWpEIY@LaT(*kZ~cU4lnSV5NnD-*;?BmzISGPygL&j@S$o +Gm5XH^E?u#y>c}@zw|`H#ttT$i(}YZgao}QQ*M|mx@2~aPKhj>Uw$fiR>Zd}N9eDihW3OO6eDRX{)l* +Fi%2ki&B-1%h%RoRe5IHk6L6NqJ%S_Wc#3#7jrN|&2ZlBD{yq=$ZV<^zqNx46_wZ&AhU2dC9~drXHyW +yr`ZW4j`s8|3XYaFo4A2JoR`#k)S^Tl=B^j5i(5eky-swxTK-p4`wRzifRc!yNt4kTbPTb&&QF?Hm*I +(5`cg-_7?xAaL(FbMk&9=I?dhUl7uwQk6eJzo#M3yt44A+%W-rpT>R)fPOy&e-U6t8zoDs<t-xK_%bO +6vA}rKp8VzR(n*<;oat0&+sGGy+wfRT)?7-pLsp(=jJ5b@6(sh!$F?*HcXsA%~Kvog`RaWB!&FyKAHe +0n7?;gyq5l1&^dmF1$6v9C2S@8XmaOO<)<pJX=0hr+U;U9oP1eJ{NC~jIi>$i^waF9I@zK6F%ga$VrM +DPWNYoQY-veMMIAnta3N9L@8`VEMu&lZwKSq(7p$s>pVv}i*r@^hTPZ+dXDvee{va4Z}x>^9gU9Xu#- +ePhbP5#f=kT>uhk_oCj82wF}KbUGLO3#v5WS^JfER6va;vUrFPf3!jwxih}e7(;TSGa^`hMF#QVs;(t +SiJ`=fJi12RT*q3?Qzz;+aTxIuaHR_e3zz+M(JB?ggdswfjt_uOl)ZA9JfHet(d@XU@w8~n11hro_s` +@8ni3B#aIkWQT0CswILA+}vGAxc~>b(Rl3lhh2yo1CG+eK8oy@yK}^Q4blX;#GLxEm@7ky$6N+Mbl{C +xHV+GW6hq3>%&`tZ?+@b_Bp#BR;t+yha8c^H=oU~w4rv<6crSGR(6`^LB`yjwAsTmaXLk<uq;xUN=ND +C@aNrFWLS4Wj#WL`r`BZOqkM5`E%e0%wv_c=e&j+%b9{x@l2}fN_ontoW2Ok>LC=!fnpEsFFgB-xelF +|c?~7<Q$;(QrjO+ah+7b@lw}+&o^V=t~&wp^vH;v~XfBQXM!zqNsDFVT15@%TiCvb#VsT<2MEKQOWPN +N7(;-4`%eDl7_HkBt8gUT360P!Y80?`b*`Bq~HsB%&CuNuPe82Gc`%r>h5-}oP3d%!!Ip+HIn!?rQZT +k0eyLFxyXV<Rg&`~`zsX;-|pzq9Ptkw$_w03|33N_oge2+7ShhGKx8^o#Z7N*#f7W&(P@5bWz@xOE+X +US^wv=XMsI{-s<d1Pt!>O)g{06WsS#fz&J$i*~ufT;?M9Tn;KhKWS(byAm%ZfB7i(9KUM&0gExC0DXe +?h41>+4M?1<Fa2788;POq{cdvkm6(B2iwc^-X4AF5+I^{C8pK>MaBaDun;FZ`=^{j(WMPdhzh;XB^h= +8xs1mty-ACtB9SULsnf&9UeCB?)T-lR;x16+pk;njf4CoJu4AZwWlAx_r$R~BNs^`0ZFdTNzPkZW>z= +diapRY75nY(@REEwVrFFA7_!rMjg`=!43aG?8-$Zh1(h&ac*k>>tb368Zqu9wR#DLs;{*x;QlXDq*#3 +UqaqL}==pLN-o7w{VW_cWw4=jzaN_uDkkX_x=u^-ht)yb4r?FBOe7T5wRk_D`izdZ|Amu9Ulqd4`e}= +ykm?}a>1L+;Pu_`&U14YztC1UbIDZSrX=pNJ$$xE!JyC1v~Un|@|YVU-H<GT)hW4hYMm+AP`5JGIK<L +FaO2)$mSqrUM-qa_xKSom>6bMeE^l_tLx<KaiJd_)=1qUxl=PLE!bBAQVOl)->7E<x6pDA`g9^Co8h) +@?fxh!t$+x71V~XJYFL;N78?nwV{n>WBvMl<EqP3gw=*n>UJ;4Ei49D<(PTKiy_=s4mmy3~P!yIyyp$ +5sXTND)XvfCjjw9>&u7U8Vh4@~tKz1=()*e#7m80L+Lk*MaR20IgWi(HA5V7W2O)$(WTh<nX>ya&({3 +Gn;InP*<}VePP=ug&wkzR^C>5!O4E<lFdILXsa2XyB^O%{H$@r+aO5=ESHw5)jI(Gi=jBmyUBO+Fi`_ +vH(Btw#^<H|5`r_#1b$idxm712SIt{^X4V_2bvNTItfK6M_u#*?~jZ!`Rapt_7Axt0`y?;0~f+`uWF2 +Wxhwt(X#(xwJXRx5{o(Ce`8<>bBSBTj=QvE|tg#!Ee7KMbZ0p2{5IM4Q{Nr2l`}%ZyrY+slhel18{8C +?e>b&gbM7Ko?3bTIwP+RA^?bYQX{{2D*Kg`dl>weqU;4AiBy5QqCobz8SgQFCVV?U=H{_)8lSoMn&e` +wPC)C!E+lo;5*zvTDVczlh@*FAlW&`Eal?TUc{lOVu1*yp7If(7V6Z=TQT){e0LNYGnCf&qSzD>5aU? +aGRA2?Y=f#XzSV%l-n2*a)OA)*~<y<RIv6ZfVSd7HO8)Y?rsby(9(WNkKJ&0r!h3(9#EFrwIT(&~vaU +QddkuGSCi<ZcmV4{xX>mfNd6$e=iOEA*|h$n}?rJ=in}4y6)rMhpykV8=p*M3Cy?Sy%`}7f;p|>!(vv ++qzYX2Rpnqxh=yioz67(cAsd^vZ_Mk@5F`Q%<=Lt@!d!~cL_dsMet2wz-0DXNa&OF}xLo|vEiH+^-_7 +>T{@@lXwp|u;QE|{Y4Sm--y-&~ecmeZ2MXTHX7t|l&==#gN`cD%#tz0?3bDn2UIE<Jjdvwt#a|g3f;s +<fbN$F+{Ly8ut(Lz)?m6CU*6+71}of>g1N~z8&ZjWfMD~H4{;+=!Jqp*MAPJFJHaboDVqz||`hWXKl4 +B~+0!?9sQs=XW=mkBW^Rok1QMO{D$&px-OlCn-aGld@keDLtxs~O2RNfnm&EDE7ICOgUCx2P@0Rw0W7 +8t-87F8d9q881FLuc#^U4^2DegJGT+r{*t_#m}>ep^35*f||44W`~r|V^>;-!&@A7XHGis3!X^o%iF) +)SF-C2FDqPrswm+twuo>0xx17sZHJJ3Pp{`DFCO)|>-+jCu^!bTZtrwKMk<dcKlmt0wT71Ec{H}MfMB +lsx)#g18<_gWLs6Sp!}=l19~~ht)qP)Q;V~mhN<X3kAE#G%M5^cbQaH|+2=q~~+Sp8mx}2m3n$#`ib+ +~wX?2<k|UVPllsL&>PW9Q;kmG#oGi%#=3@0=sa_hXyuS2%y;(*1OgLRRx4;|fWqvf*#f9U9E28=DIuE +A2U^pLdR#(Frw<dotpD{j|@GoO<9F{>E3YQn~Fq6K~3s108qnbvbI~jaAqXd!N168lLDqXH)#y@-2dq +j>N?SGb`hBO!nr1L#tNS-_~QeCga0`SO-}DJT0nG1t)zg=Lx-Dn4HB!r88j~jpNf`%2hU7mwTu9Sw`E +6s$I*p(g`=1j?j-S8@~wUzt07jcP@qb>+NBnr{}Uj!#g!cmLeW&yzmRn#UD49EoUZj9?Fyu8^6Xwt&) +bOk1;1`G(!~h7|->Sem<4cE-P1j-31stdGV1N?xUimq9ILmI~@rM>mUw8hQy)X)8WuRXv7qw4A~*CIh +$6-LZxRrHn{d}cR?B|qFODgFFsB4S(GnUeoc4}9qM7MEm9;9QGIkur=&6K(s6KNId9Lj_qp}y6eoEFr +G$x&%tIKBM>68=fGyVW`~ksvcTLio?G{vi(~j7ZTp|#R6TNnCx+JN#(DZAWwCS7beD!uSL}u5wdgDIk +$1TihNKZogyvN8Hi?E(5W3iT{-mc+GQ;xe={kj;JRA_GIE@@wy%FiR2?3gBN?OD|)c)%b*b@qnJxAx_ +sj)$R+SU42BK}UUReMyx<D+<gp&(whz(cK&fMy^qBwq>g~RnLgmK?>uj9!26pe~;2GSg8nB4gI+@Uo` +i6EjV&sKV+<}5Vs0fAJq8N*w^x)=I$;akJ+#x6&}2xc|LI)-q}*tMQCkf(IF%P8m?@K)MnGipL&|DFL +f}ah9mHie7NXw799yory;UunfNO2$DknH*trC9cwNMoeeRBwHab&w@{xNo!>uD^+MP=%G(0_D#}}!ay +XTHAA^a#sZZOU&avWN{8tB`@*}GGkBs!es?Y_i{biYHBC>do$d$PWEd(G}Gk|Wm8Z^s3?plB2v)HgBV +w^th5`+lFj*^J-kiZ;y`tJR9Ye{ug^vV{L9Wa)35{5e^||2A1#S;rc7qua1UFqL9sN*M!G6KnJfN*mc +`a7P2FY?gfPZWjUBMNWgS6!o=Qf>0n*MhVa%6K~a)^#W_SzQ*A3X3Gk0^(%L~ECrWasTDXB105<@1QG +*83ck`YXrduD8-ta5fhkznHs68(_g-UoA^~dO^~WgN%)R4n-a7_ZR=lY<{vRPre~8z=BTH3*9;Bbh(w +E2nuahP7ze$$#bF_bYfp<9gOiiU}CCX;=ikTCS4ctEJeHB}rlhSF-1qzKhV&AQwrC0lM8?OdS5XUqwU +WZ#^SUn+T_d_I!e$wTON#wVOgc#=of9B`M$R@Z5S$OhrPuCOK?tJf!PR5yoNhTJr!*SHPH<CWD<&{YN +u6npTBZ0LgJE+6q;m+;*VstFjFO47+l5+PE$7Oo~uCtQP@9Ddg6s_*uyWXeL<272-bZ)%!?y6m|H~rR +mynmP2@eCn?_Cjm46OQr{SIsqA#Nl9bjbstTco@U*ad9XOou$&cd0qCjriCpkp)dI&Wpy%vb~xv9hhb +t}i*ne|hq=IVu=~iy=EJH-Z<3_N4LXByZ3UYW5@p9nhP}~dXAYysoFTmwmc?uz)DCT5GZi&6wvP+f^9 +tEDTuk06G=szJUWvk%rf<dc&e(^Z`MW5;Umf=XE$WEG2emTTn<HOk(hsHgo|H)0o_kv@jO3tENI_pB@ +k$q^Ns3bS#P$zmDvda>-VSs?J^M6zeu!zXEFbQtiqVAHp3f~~U7ANj6T$;yYlE*JcyK-2dtSp)nbABg +VP_r}Ae@*aQ;KB-bK3BI<j&7^CuiLEh)?Zxd6GG8Y0H9NuOVER;vfy->}ksVm<Pl26ck5DXN3tXmvx` +4bSKdI+2X59j}`)YeN~jq@R5IibWEJKx)>UgdGHO+G}^HeyM1Rw_&+C0Vn!_au8v`v=!WqPxdlyX@&0 +g>-@-p7OWdBTAlvoCo2hY^yYMC|-$WO<BPz!pbm^VGAA$5bsn)zaZ>BLHkA>c_SDuXf7`uAi3cfy+IQ +GnTg~7Db3)T)@SLFLMxr-O`s=r$D6~mGyn&X5LdwO81%cCG~KK#0}iT*TCX9rT{w%hGhUN>QRP`T`tj +Hjo&%u;J9O};qAUJ+-OR}xV!=Z6{Y_fyZ*DBh?KPh@QjQZ!>E?F)|U@%^T)t4F6+Mk3ipwES3ziie)k +@QmZv=1|`2Q>4tbAno&gX~XDM=_2SrI=B+-n?76`J*dyYb8xepIm+YleCbN=`D&T)aMDpya=EA|t}>O +J5oaY=d)_)sZwSHh$dPt!uk9Hlx+QyROwdSss46F-?|G_bn06}Bavqn2f>lg+VifBuk!k#L!KndC@0O +n3`1(fVg!0&%<q*i|gE{OZv%4IM;BtChk2i~6+`91P7G)l{I~QC9M^_ihyot~)R!<f$!c@--@`({{Bx +mkWk@a^cJ{}a~VbJXy9IZH6Zm<x&B5mDCeC(Wvw$&E|3gHLQJjX-fg|3m8aVt7-b-SHaS5d;Zc@Mohl +?_xlzFq&x3W&cHQEhMx%synQHr@g>&}^Mqx}4>#c9>p*a1^rau&B%pHRYb#>v_coecRK+r8y7f3Q9=g +Mdjm#xD}%IFNoL`^uSIQin+5F)A!e_k0@6e_;y;}lXcxccgheZ|G@p?zuc_OoGkfGt{-t!f1xd3Im}` +G^+yY^*z_Aa=(69Zddc@#*-9SYj`}*QBm)QkY>@GP^-kaFD}QpAzqHRtqAiz$fJ_y!P2*%SAYWN2OrC ++F1C|3nCZH7seL<hM9Ftq60s}NC`C{ptY{vIE@W`Nvf71v^KY@OzO}~Pop!I3xWhwd#E|#aD@Ue2d6y +Jt-5<sMrZ-o_n8|Q*-HvoQn6tLezw)xsAyV)UUpteG1pzgEYnBENULGdL8O;p&*@BX@mGH%9F!=Kn^d +>x<t6X`jL-UR6j_xxZzYHj!5wHZrsbE=bupQE!?tJ2oz^1NXFN_5ixvVx(qaOqc1yv~$<Jo($;5+EH3 +&+2y_!=|Z7cJIr67y4EWG_6W3v)4;7eUP~i8ugvI6wq^W^TGA7FLoQ|SLZ$;V%hvQK7W3H=jlOz_Wb_ +N(}Vu(`Tg0``|#(0{>q?(v-fNo9>>d7duuvfWKGoNF&=7GK=ixCf*8>#DEzAWH5K1$J9X_@XZzzZIi8 +$8y}JCtlFLToo$GtluanQQp*q4Gc{t$nSr~WF$(Y?^Ah&LZSnoGiXlQXbDU2vTvKl2Xp7j)LXWjDByo +)0IFu^AE+&jzcv1dUN9Rey}XY4w6B=#~F-)g9&Y;m>plB*`QITqI=_Tsv|yWm79U5`kZ<AI_~@Fb7VM +Uw^+3Nx<r&9XqS%lQZ^rY~5_%~q*r!_sMWzba&e9drtvH49NfitG=5(Ku{?WI}tcdlM2H&WuI7cumTM +<r@rnPL2iVRNtx70ckx+yZ6)7qGx|c@pQ=ur(IA?)bhb!pg$uppK39F@aJ$)h})&u0h9MpslR0D*mAS +%y?69s{uO~)`Hf%U?=|*kvF0#Cfk6#79lK~`4s)?Qdc~e_Gdot#cAR&@aK7JOTEr%3iAPA&XbhP=2{l +si;uH!yDTGkjksR{=)@(bQz35r9)V?eGu^|_%#l;Cfchb{Y+#z`?Y}d~0koALC?B0BYj{%NARB?aP#{ +)`^LG~;u-9we&Mkr>g9kC&O-8I`sGXDwN0=0MM%gL1K@`xzPY2;8eKf4f%+Hm2nR3dmq9n9FrEN){~Q +Po>+EGEO7p%Kal^ZG7snOu=kH=J5QI#Ic29R~GYLm8W0k6|P)NA+&)(bw&XMRL!LM2#MJgU_!s52uXC +))(V+dOql*awTF)v4z07W<2qP+~-kvO12mL6L(or{K?b_AXl4xFZ^@>IDsSjE?ZIRe(i2qcN_lDU;H0 +k>068MpI_w%s6;UwH25+UO<@Rvu_!~MEJhJH$}kMUuK!4e`gHCXfo~?R3~0EZQ(%liY-qGX8bg5Ajun +Km7-%@x1E|jdHDLi9$D6ic1y=?EmjpE+92nKoG^jOUB)CkpnbXoS0O({zz+WXd@Xc2?jzFP@z(7HYA% +Q|-y#XjV;Xu*Ae(`~1K_w{JT(wq00L&dppj1FN0A@*WoAo*?MF7f(7<@zjrL0us0H6-v0M+(YfqW>({ +y6gH{Aex&uH2pfP2PJoJ&I+~g75r_epk#D-t-#?FF=6sF)w&4K!Ak#^#e*%S=pIgRd?=~n2D&YPePa@ +37x(6K6|b8A3y0&Qv&pJQvz>VKS&(rb6_~?$64~j$n?xDaGmvNPKe>D+5bU6ym6g+@xS$AW~OcbN|)* +rdE$rtL#g3Q_rs6DM5aw&j)kc=L~T$WPNQBVpWP15$3dP|zyEcMTvsc4J31Qx)jF8AUs<){&x8<%|51 +#RWg5m_KR%%!s%s+dA$@<+M{cu)doT?VXZwMw%(4u{n}258e&`zqIb@H>Yj9`o!1tn#na_OwW9g)3_` +I1zxS?Zsd<CxkOOY$!*Flt(B$XXe)lr^vf;O4P5${o9bqcH=0x`PEQ=-bDbL|yKU#}Yvo?Mvji8_?4N +KIAif?;pG=FdVCH$GIJ_NYe0nwcdR3wvyX%Ds!X2%qi#eFLI)YRIZw=Bu<4@O2GuOktB8++^pmQ95|& +=eXY_9rIRjc~Icl8-4t`c!c5S_x&3JT>edMVfE;;WqwQeJ*Hk>kIcnTAq-`gVsuHVc6Gqqac2tgU_CV +JkP38+#OT2|CxANL$g+^Fhx(9D3!PYpJ9a_2?46&B%+K@X48IDJt4=*qvL1In^|#KSG#yqWQ`I;Cx;X +GUq#Cqf*Wh7kp6bT=NxWR7G9);>A}uslv}P1TUilV8bN?_}k3a1Z!2guvCZnuwMLeBiJp-E&j%3C)>z +=1U%so)KPmgl4hqsf;{>U;_FF%k*+5M!_b@q=kn=R6_`s0q=k2_xIFFStOul|od3*e7Ni#Lp^wDv3-a +RMQ)JLA)f;GcW6OW~7QEk0h@d}uX8j_$wzG8h(%7X$}*Q>=LHeN0EdZd@2zatCf8n0vBRMKcwym+Fbu +ph*ugcBk4;?D|w2sn=V}J15VB#*PX5{14J5OF1Aak;3FeZ$40^5)%xxtBnh?aYIhT%(HHWIvmi15gwh +-8iBrS*b8{w8;!LeGUvyudkPdrt!nQUfH7t!e4krQMi4N;bC}i71Dg!kpl)$l$s?5JR4%zdN&Cw53>4 +{7*+>N|gB9~OVx6LKC5<Inym!lQ%(M4X0!i|1i{Iut#MDYxzG#x?Hy}6{*;lt-mTi3=$Ao-PaII!)5) +1AUfPX(qv;UiA+IQ<;f67e{M&!Ttz(?(&b>HEWcOLoZPjUI59{Vj4|M%nm%;i9E@R!YhhXB>5u>t>h% +Amx-nWR2i$jHa(>{uK4$S5MoceAvg6Ib%%s2Lr)?8v9v4?&J}nEV{Q2RG=Wu>n&@9-4hzw6W~aGS0x? +#98zcvqSX5yNnOhv^{Oc;ZHNiM+F%}KT=rOhtq){3l%APSb9_GaY%YdN*;n9;b-aLkZb-hOb-K4=-=_ +*AY&eJcKIG>*^94lzv^#RIq;_#Wb%M&+A}wQ(_ddW<*N$(x8&^)v8g>DJ9^M~*|8zxd$<Im&#D7`l<k +?LzhMu5^UeCAH*xzgGVJ-rs*q+Chu*~c^ETjD!}=$q0)92DUytgaFd4PmdLJp=JW<eN)$v<-c5Tj;HE +R$;>V1M|rhDFKmNWNT)uzkLviq)K-OZ*1+sEVFd7e|-tHx`EY<I3O^nA$7##Lk(VL1-eYDZ>aDa$<@g +@NfVUcIfM8J^k`l(kyQS8p&xpmmme*Kc>RG6m^kF+DHb?#1x7S*rKU=4{5gNc)rttarVOpE&sDeK}hc +MO1|MHK4Dn<Ebol1BDkPYEFM8f@NbaqVXI+l_P9=ErW3pMiprIr_*S?@py~p{ysg_(2{RgHWSSgdbtx +@e=1u0`EtY)Bj{6E&txAimO$fN8Mc_&1LvYmU{NFU_~{}YF^!wV2fhJfuZVJ%3*;f;Ss`}t5PxSfUTC +vBV1;{Ri@;yjyLBYoF;k{$Xz@0&%Pm_6f7N7E7r5Uj;$Il>OM79)NTQ-jqNGX!-HCXfNdX=SW)ZX9TY +=3!emE772-KS1v0CxI+-+Z_5Ll~%jyv$~IGQb6(){Hnvsd+N4dU3Qt~=V<H!z<k<-rG%4(8ElZP54I_ +jt{Oq4IuNSlu>x9saWm{9&yCNAOp0`dIoHF=hj2n2tROx_c;`(73WvNP@(#-~xeP$|u+>@Qk;Q$RnV@ +#*}<%fX(7#m^@W|ehUz}dHadIP0l{Qg*#TokN>21{Sc^69=x#<vLmMK&f~er-grjtOXlwQoWTr=(yQD +lvQ_y3i@2sL&a9?w350RB#oCzjeq^xO<uuSdRH)dg1>y4q(?qN5S22~-P%Eo8$Qnan?^-FIK;@3|R1X +3ja<&oT;?vLN9m3-%-_5miy_f6^4OS^FIh}@kHf*&}SMY2F7_|6j!Lu8JP|p|i3TzkqsTmgP%bb%~5O +ZGDOo)pSM`eq-MzwX3waQ=dt(i7L*z*DbF<agv!dQi8bR_{@av$N`J=pYOJ%r0E8~wUL`@+M7ThL2#u +|-;mjg$TkOo(UgJ!7Wwv!Y(b$toU*56E3HL#L;?Sva<i7b9v0!E4P1g0@q4`UlDmzYm(6^M5K<|Mu{| +4%c4~{f~(KOAmuRrp5S?fWjZ26FB+Qh|xoVa?d`oFB%3PBh>vt^lQQ;g&!^ddssdyzSzf+6g=b;_Sl( +)|4u%#lY3seXRuj%Fdh$S2I}MSg8XjTKRpZ;_PC9IbQs8woi~XeA$mV@AKRV~!yna5_|qU6rN?D<z>p +!wc@Moy^hlr&!T@?i`#nqEUrIiaoc!yEZ5$DM{ZqsSe;KiP`kzPaYeje8VxwgLjfibJ{%@kTJ!@?6Q` +EL+;Mn-9q5a*F0lypC???9M$PN5g^-8&23f7!o<q1)*m)qN$xsAZex7<>BpWV~EZ-J)DWvXCq&0XFe{ +vKHFNXuk%5U*FH>T~+d&eU+_#}gG`vi+J!b*bSlKV73-za%OMAeIjKlUQtK+Y?2hTYULK3&Lgj(Q&67 +f2oEaFhr#iSE%%o8>^gyMi{LIChvRF697-cQu%brLpGW&;tQdolSR1xlB1gtTX)eavgd%l%*tF`BScF +LLJ_h+0`LxM3f!1LPhgL}>+tJ<h{7NiynZ>|3K-j<*Al*QaJ2ordynZ2Vc#`YP?dOd$<cck-etPpBN7 +mE<0M{LpCzYz4$CCbO;!_JdIwjYzTx>N8{y=0{~A&RgCG$J@gE}h-Ix#3ME<u{s<oS4)=SB)U7(EXJM +MZ)o6-;vwWa;_O7(?7jPH@#*(3LTkKAG>3EcjVDOzd_1bzk%wXZ;E*1*-k2$3=6@h$uruaD>#sNM8GZ +nQ?NzI3`Af%xct0b)dLj)Ki+1IQhZ*H4so{Lf>Rr7?vgDf9Bp0O<((pWAsf_Q(#H7FGRNgV`T9$%Fdp +o`H?w;i$xgxp`$SMg2u~=?{%EV*>s(Tv%J93-uj<c*sYCB=bLwI$EYe`-vTL^<W3~whz8|0Y}{b4W03 +jRR9TZ3ia#VE^lPWdA6t!`bpQj)V@bUarS!vd9e$m`t>DknGLd|iDiSW7*0$hJowO<2trogE8WTV4pp +iE(QZYJK-YzflPw)V3~0yeREb<cHvKSABxyD7d+f}HmmXL`j!!ir^bSV!2rO;24&E3dsNFT>1S=NFT; +qYu{Us#cmU(dF(c1KaufZzSlL3jY?@T8|&?(k{F0ZsU2~uoK2vn(_x-sCHl`WzTfu&CcP*PZolc)2*m +H~&}<X1v#mk_#0t#=W$>UK#WvC^N>vr1a5(Gw14N}o}X;OPNZXMVpso_YD(8E>JS=?M+m5KDQg&ih(D +<d^fFsTHMH@!2lXqVRX<@B10i|6<Fr%)bOv6F#Eu=Xv-)#{coNE74!<``ugUr~Up^$p$e3MlcWuVT3{ +ugoL4At^>pPQIg(s-y?v23d|7ku`|bxl=bkM{nU=Zj}|oeYw77dvBjaIDxH2bo|E**ZQ&1R4*y6*A38 +_ak<6l>&b%Y=6UVA8@w;{46h5+dH2k>NCZ8re@T0hdeWE|~F=+sgaDPZlQwI?+$qv0rDEnmB&_P<jkz +-*x{M4+e<cRhec_==Be`&79hexo1zW3zGw0zxX-`8A@eD&)fEq#xKz!#?>O;JsC=Dw7#MQ-jd@q-8Vs +bEhRg5rnQuKR1;zP%4trche-wMX}Q=I3t)I}B^wnQuFMS@-0nud>tJJ~_q9?U0|g>`ndBqqpZEf8IFT +KP~6l;J9!bZGIIyur9T{9+OqP&oRk^TYx`a?DiLr7n*jTcVF>}E`mjS-_#|!BS>>!U;k>QU{}%+7Np< +VC0xD~lBJ`Ne7J3v9cj>)B;>t2H1T?LnUPxxXtBIF9?qQbNw9A$lW`4-Jtxd%xA2V2aZ8mR-R7qd<T% +_GsCTZ8`y}}ewEN(Nnh5CbJ;L2GT*f)liRWqTMvyLX-!WUV5>8K#>ea0VSt-<gu)14LA1M|+(|omL!i +Y$~0<VuDQJ0?BIxOWM(6pzngvkVPZ45ce`(#Lmk9s~Q%B#MSnoOOt#?wLc?u8K(rGR1OAl|)6FwHq$; +3mVv#|24lE5zF;2)_%=$hnV7SYr#HmRtT%V)II5u0t+lTV#7ezj~*lMr)<<)s%x%+Pprlc+3PYM*0QJ +725eZ?^%6+e>yp-S)8$KqVZbIo;8hXxB-TMJ41FBnk)2b(EBZOPifiF+TDdVw0+&hQQziFAC%mA!{%G +p5T9EWGsKv*T`33#M2ZfQS3WY4?zXJuH`7uS7{_CrA*rMozKo)QuK23u$ndI4oV~eG`+8}?1P2=x%7B +siT-|m3)rE#zv9*Z@USfmT=37dwOPjRrWt|^EJ`Eg4jP0Ws9$`>lI&2ZA+_qVuJO{0tRt!@J6cV3kx~ +3XKEMgO4rN_z7a_?Q6*CHx{p+uU&S<W?X3W0*LvYp+`5oi_lrkiOwR>mD_@%70)2+->~L%~bFIA<6eX +Pl=KHQhG`E@_#b3$$ZzSww3u-GYGO>0BIShB<#BywPA=f5F;cm?{0rq3-}Sz<(2noPrh|h>K07Y7XVk +X{#}}-;;Uc1^x%pRlYX5GW5mYQ%SZBEM3YUM9?xZE+GA5%tbh5r`{{i&ofA1SM}y!AG``o7vo;G(6mo +=NUL~PY*<qn#Z)0K`?ojH(B|JF-&yytD0B}5KDAnv5z8wz^0@V%86b4M)lVe>TaGiDBL6gQhZqP}$ZF +}e1Va__y*zbeKx`+i-qELeHb?Mrzfo$>_H_g_@1%IKZ|+J2XrvfbbY>}#kkiCG1x;9v)HD=}#S<rr7e +?wz283BUN+(nBZLaZa2%OU9u5?q*J>MkdGA^+&aY-6GG+9{}Hf}57l2CnSGIn`YrnUoy_n>NQY=vhYi +oyo4_-R?we0jfel&Q-?cqvbC+J6*I9-dM9mbczxB5N_CiT8P{mWL>E6GGnjgl@tewE*q?Juz7znD{o$ +I&0rf%1HD<R5RL5Y<wIi*mpC$Txk(-vc3t4aCg>A0U-+ry(S3(@~yCLtWRw4)}P$*2I?b+a})x>Hj_& +GPrO14|IMF$gj3gm;$S>)yVgBL9e09Ab^rt{*W*1C8@oZBCELgMxH+Daurt#0)4twGm@b=>Veii)tBv +TYMX3JbiRKA8i^y#RHucuvE_to`shOJ#KZUp4UKG{wlY&Hr7smy~+ct`qDp83_on+R-MLNDcHn3b@<N +_$@I&uT@HZB!;b<=DtG(9LS&R*JHENh221=A>!Q*cJMh?yYssW<l`>w7I${=Nd$<>HvM6db~k$K#_JP +QOaW!=DwV{_CFK6{NoH^`~+L36mJO<06zmNu0t-@R!n$d&<8fiG!w)9)<iJTY%KTp@gABxsgad&1vva +A|T;^gYd6w7szoa5gyF}5ca8sWCz<}e+p+urGkQvio(&PMt<x%;$yWRM|ULldw%DkHwhj*(DdVXm3$y +hlpfd$q7LrD4z+gNlMu&l$%l0T!w1gW0TA>VHvGj`@}n=6K!@tpL3-GS@|W;P1h>nDiN4n^ByYSSeXX +7Q8~rPK^=wps*fjz4Jj;hJveU@S-RYK}?3#=_*f0jDxvBxqm+zGX^Xs;827YV_u)lfFeoQv(`DUqzx+ +Py!t-pBBe&42Y(!y1=0eq{BTn<@mD7YJT6Yf~X_&Q^Amw6U#Zu&CHiqpR8=^Z@>+_4RCer}I*js~>9j +d&v98NSZG{q%<Q<OO{XdK4QpZ$#g7{Rgp-nYrl~^Qvc$3C$+QN_cPSHIsk8$Xu-+oezjpsl#SSa$F93 +I#Z1p6M7c|fpFbj=Vp0j920l<IZGxjR}m6~&+<uo!fdD9P2cSR0WLc|tw2*)sV-I&n!r`PQ0YRWu6LE +Kq<rXbD{TdCT`mS#IW5UqN$nL(*{oVm1C6K;TaI};ePeDtc<r2o4a3EYyoZtATxeq7{+nC1>s4qwJjL +l6ZNU5UMT96T4aERRG&x`SyOW*R*OvE>HsNW-MauyL!`ZL{@NuTe{*0!CdNJOU@if7yp2_M-MhuH7X8 +^oP4&|tFY;I@Mym43=q^H|O66t~Dhp>z15G92hM?YD?eeKvoqvqjxW94*k7c3Ql8qb8X>$V1_5st+@{ +ekv;5*92aND6b!BK%n|wK5o?QZ=@2(R(6V4I@FWD!iOg0zj`^!+_<m`VDxVOFdW4bo1~w;<YHD0w<-a +E+fb;xO#?f$}7e+{tVq5|AA~cq^mdJfw(57^mnCbPGII~ZqbsjJc3WqwYy_Ahh!BtNt4lmSXpKlQP!W +VF$&^ovZw344}sY0>u}nGw4iGHgeFrynAK9f^5<eRi0bb4H^EP$A~A+%>IQJhQ42mB4V3p`+UpJQvPa +LLPs=p45K^CGRJo0}WzRk&^J>6&AgOd88v`ADLp=NKydI^?F`hHSmw@j}{szaz7V}oQA9@Kk`WFQczV +Z?O5UPI%k7fh{m#-tYc`4u_bz1bvgW8lI7e!q29k0~tyAAHUT9s7X%SU8TWysHkfUj3#ibDH-r3lux_ +<|Katij5|+5X&LXx$6Ks*o*iYsiBE=k;VTD^e>4J-@BrpgHDCjcdnyzRH9&uU*CIrf1rkT7Z)UF5Zca +Hm<5zov1_6J^rTdy*~~Q;~m%E=K#KBa?=s-^hfpGWj{4d0r)}U`*OU%Gx&uzY1%Lth!zbxnwgarYC72 +8B`p}VL^Cxl*vDV?_zT221AcbMnVuF@+BbHjxj!do=0#s<+Rpa_Zy=rKbbg#5Fpj_TzTf_r<7mK`_cQ +VSenz@GHUu-%&;m;P^KnA%$1B>$U;j9<K++M-ylEk(0m9g?uwN<toKfAcun&13dT20@V<h_l#WAwbV7 +KGM`-%8t1i>-VeZT!Je0d@K44tDD`pb##1|xjlf<c2c>(eStFEq>1nnA-fXVX`M{=CKGEf_Sf9%pX8U +ZFeAoY2fnvmLF>^qUrAI++=SzMx+}Bb83_{RE#6aiixy>7|=~9f~ISSs?r(k^cRLQsAWt;AV@2!;gS^ +dGMaN?>kQ_|D~@+oXy+*TbS>MOg<M1rts&byU(p$V$FVQKSFnD_S<{{LKl4-ht#pqz!9Rp{U4gu0%8A +MAaW6U{bv-aL)C#Ny}s1`ew}N0Uv6cN<JcYH8q4QEL-_s+{9TjI9@gb}q5E@twzc-YM?LKF5D9zkg6X +1bNw4`)a&15uf-yE{?&xi4TZ8PA9$*QOGpWZ3ChQ*W-@)*F1W=-qs;oo%`|8egsF}KT<$H%zsiiFO96 +4Pw|8fT-g3N6|UN3#XS!ZPmpyy-J{QYLU+nViDL%Ava1G6bEZQeoHaf6{b=aa$hS>z@Wc4=np=>gE{n +Y()Go&?~6VBrZ-Jgx%e&V-Lr?PZ|ZB&ULxO0p5+H2hYg&lnPBgQhAftkRwZ-p)xD!<HF$7>?E;eVGPX +hTbiQF)^mwTh}-fa-(JIep=*aY!ic)7ePj@Mv=A6V+5uapIXS6rCevkmaot68ol(sj~J3YTy%vg=Cl` +KjZM(jNXrQ>Tx7iH$rZ0GxO7E;NDIg0U}=X1r$X-0L62`vUEiQeZJ^FHjK`dF1^9#_oFv-|(~C_0&Ry +t%p`58;1t8&D-{0>l=U;61c`aXdd!Lid>`&mr-PcqIqZjIU#e5rd*0*Y&NXzW%rOw?Jh;gHV0$ONzTp +b<qaxG5LLcu{VhVXpmSE9=v-U7cS-xK8N{FsBG7js!`*XO}QiMG?i0||2SWvpAh`%o1(f`179yD91YS +5&bwmCmP(2(lP4T9j0HzA)SMq|94BA+J)0I#>jH-Eoa23>5udJA(nf1P)na+0U6*-ryqX`bf`Zk;#IS +qjCPTM1A6)IpKbx&HT_!{CB-?|L%c*a=ZQWL4Q(0gYjSTrL&JtJdqxT>FHs|ekijL$XALo1s+)bu!GM +Ib_?~Jh12*bi=yO_QXC3r=<)vqIkJuYaY`Ok<^3^+9jm4ga#UCk)tBtwIQBcGTIz5G`f~N`<J*oUhhc +o29Ba8GaU?ZVcGPJT>}WDR6wab!gy<n-cH|rx@=<7uj;b;EsSe|xqrmjvQ1q9z*$)qR{jNKIVHNb33b +po6LShadFTjESzZW(gb5B4L#wwws<M$8vzo_C5oxt%oVX=cZ12}wg)MLN$Q05<6hQB5v6%DIZJZqJNs ++;y>BC=?fjRBudV4nNQm)_jxD{1Dw+0xIAy(cA}VWX1)a?3G$e>1xQ80f2I?f!zu(&6`7EM$6zV7mz~ +Z~wuM->q#y?oY`H@E6(1%p`9KM>j6&x`IG4trfYe2+1?y!k1RgcmM*In`yU-!CfJ)GDjhn!Jg%_!nk_ +G(TdjS_f}eO6H#FB`gX$i^%jiQ>pF8{J>53|q?OFp180E!+j?R||3VIGRYP{wb@{m<_|f-Yg5sL1Yi@ +5k;A(jC&z_|tPIk>M1)wtXvy;mQA0e-^S;OS*Y8vPnUnk#?!A2!0gdu%revrfS$@lD8fQ1Ordku8^ec +l&=O)4O9m`3J(ioy-`2tjzp-X@5lg51;EnXJw2ToK~3n2#2O;v!<dKeEd;+Nb?8iUAbAcD37ObI<c7z +cmk~SbEbAR&Rm0c$pK9oE{5onmXiOuk7iC2G3RR;|o;9OFhBBdL2vHQ}sSGL%OTa7KWDj3ojF1ed><d +h9)#tl{5x4{qSK9ww{_WZ4@=G@E8S`5@<r@wo%UuHpie4ME&a`Jg*-9xGDJUYIjA@*4aqjpo^QO&}4| +_TYbVWztmt>$s=C}I{MtNvU7ezuE}_VuA3emQK-CwCl=a_XyYyosgzMbxqfZE+CnTH`Dun1Js%QfM{E +qcWiRG_!?jaixl3DDYBDR?osbpjoj=aXrRJkq9@^K5e6LT^B^jdv`8oE})rw*cc>4EBeV$&#WAsYmx| +|<dQA?}zloM$i3vE5C!UpZ{vA!;1fguWt=U6Y@nD@*}lk@;ki#Ib%iP^92KHaL$lJ)D(=pR+)zI9Op= +k51=Xm7hS$?N2biPua?eeqGlokKj2d7-7iMbzS40iZRfN>2=)mB!$O5k;3BdkM=$@bD~j#@v`rB{&US +CMQZ2vE6>3zk0Xk9>(+DKgSkOieAg369<WOI@sCiY(EqA#ICQ{<S!TQ3O|}YMkMWBS*J#NP4j|65PoH +elZ`I8%L5|**0tMwzUrt-I;midjYBP)4PPCKY5O;nkOqSCH_3IE>BV_z;PA|dWt+ALrK@#-DZv&cm~+ +R%$(8oln|DF|cFfPI72!r%ykwNR#EE`dH?&3q25FQWb+UVF+{gqYPC#2WDMj+8&zw^@f31q=A_iDm*g +3$K&P;N?$s2t^9}-E{kT@AKEh4a4$?9~A4YvRw%m_<XS)|q|ho}318M(KFOGUrXfzZsV&ZqQUQgDdhV +0l<|n#!-_o|>Bji1{zq1@O(Rxcy#gGGQW4=Q!sJ3AbM;{%}V;Tj?qCBr|)Ab8rq`X<wES!IAch<(|l+ +L@gI+M`g&DG7E<>k_CE;)otA2_U35~mZhgXRVHMKRBNJe@1q5q)*1?LH`ruGfA&|b0_G5+3R)#Ou@nT +PtrlHh8QIQ<@^)Di6{m&k8LRvnby9p;a3e{aOvjw!N^-=Ox*HG*qG6U{FFA6rq~mKjP0052@ySp(3yD +k&T5Q@ulvKB5RypfjhkD9g>zZ3SoS%<%PsAgGQU5^)xRo|#c<<VD2){#__fbmy;f0^k&)+-bJMQ`A?t +faQrYI1FC>$qH2&6y=Bq$u+H^C$ULj*zMBnV;HFLnG8;;2@lpRO>7Jhc0%9T(wW5ljppS}k8G&e*@vU +#rQW$bosH13i6g53!>IjEW8keKb8Z_9^(IzLy>UN6=5tIdPPFk>8bO4-;hSXe!Urqez^QM=v-*9A|`) +qh=g_43Uqg@ZrF?BPjR-zYfRb^uT)u#|u9sZ7Af^r4AqK=sUg&k$;naZMJwjN($@c8#*#+**)=37E$V +GNw>!(em|8h@PApR1+<N`RYv+&>{JfoZRqk=1n+t3gZqKStEzlsHj&U2HcY(^pRfaN0AKM&o>bgd!g0 +Lp=m-6H<FNMpg>WqWd0Ryzs%gwze$ZS##ooyd+@<#&?HwIHh!&T9t=}9hF88NV{Q<%53=F8hQHlAbNQ +`<t;cGTap}vLpz{z@q2OKjrJso*V5oP6KH-WvN`kOct7i*qz?;f|a5oHE4oxDdTw$Dm&FC~si({rW~! +GQqc(rX?mh}4~FuBgzN8!k(jJ@Y+t#`##h-{N2xC_W%KM40{Oc_OeugxM2>@25F=KtNzh)j>4_#i--f +pjLs_{YL5Nq&>u^r3*unYL#wJbVv!bNF}Ig(3}TVJkm+TastkkR}c<EJgti+B&u9Jiq?xrvRMl2wKnA +v_h~$eVl!Eh5?(+Nu36$Xl(x>Px_%h}5>h9U*&xE5v72|J`LVd~`KgAoM2uLA*eN4azOH^Ky-rv}t;D +3@eG1-*Z1sg}{Q#0_?(Peni<)-k+jt_}6HS2+V*j=Y&#gpAEg-%+$!_;XcrddqUA&iGeX=are+ps>+z +R4;;!ze=MOl<KtFjTRvBFI|x}UId<8^wHACr|y4^<uI7r}xB&9-vqR;4YeFJRn5ExCpHa5>izEM9D*# +`JEoUeVOT(_+26Akcb<#qMmr&!~BEm(7Wcw-*IE3T~o6pC?3a`!FL#NosjwbDxRvs(M=LY$9RCZh8*! +f@xA@Ff#14O_vV2As6KVy|62hjlkG&_XbjXcd}-#U}I~(5?n96{mD3ownnl^M7pBQlrrS=^*ep-Fx8v +|nRyJbM_dgc9MnsnU!^ypiCH-WP}X-T>uBHjVfsc>ziYj_eC3Skzb05)a|P8Xt>{pNJzZAwhEw}`@~7 +P5ejsB4-`SX75z+f)#(M~>seN`ipIM6)s=5a2QU{GTBBlxHw8!?WR5sh7M;<jmvfND^gP0WC&v^6B=Z +naA8C#1`iX`Eq@Mh_8rZSNNiPSn*h{#2Bx}RRTND#?97625cR#7e;y1y-L^WcJCVicz?sgAd+0U3A>b +ICg}2~@L|b~v+5AS)e(L;3cQA*%u`qtD}qqSZ#`_R(2-xbJCU+Q$<->T}LpP36};&d*6lKj_u(Q8t39 +lCjVwnKdR&03XiN@U*d(AEMkwzdhU6_RrN3@IGLNCa#P?8oayckr}D(86|g8M9IKYltDE#W(dGQU1RZ +ke|gx~l+V_sRCPM3^E-v=C+x~6_dbqMXiE2FXMJJ(kOvCA$NbT047hqqz-?_<v%$S9WZi7|q}^Ysdm5 +;Pt*=U^gI%XF(z-*;++K;Uy;<^D4XoxrN@Y)0)Dr=`o%fJ<NPm%VL0uOtnVY`%TXIA$MuCJnxLyfk#H +n~5bGaOh#|F(}X^xwpz)v%Efr%uw`u(~I*N1;kg!KGixVRKBAw@2fB`!C+l<JEKIZQZhZwn1gv%Y1o> +ZSCvp~fvBDre4VblitMgIwkt|8|C=DKtT|YSzb_)_IwT=-2k1sa@aiV8T`idPN4D=0UkQ3vj=}2tE}- +sojnD5^iw%7+sgQS7yc6QM{s2om&!#*XX0^)b$LW1E?2WH*)-cKwSUdtXIB6l|Qq^zdH@?Fz49ge}91 +xl<m85jPNg}Y|3K;mX(ixS!vyNO;_!3cqsq%PX8sA+asMm&*=a0*)9DaM}_Fyg}zeP>u_B63#sW)r(5 +|m2mb#pgZfUV|L+6(5#137u0shJ#0e0AF%-eDUm>~ZV}p3K`XNVyeUuysiTJ3vkm2E5xMMUV{Mb=bJK +*~@r4Kq5)(;27kK6SQpYZf3G*O>EeJuW{7$+a+Y~(}C`w-}{9m)MpMEMv=c0fY-!xKzC9gF+e_A~C=v +E*1}k3THK@B`pt@I!DwKL*=7NJI`lf;9XP6RD4#6!xL>V~0=<68{yF6Yj?%JNt(tQ~1bFEiXhX^dDvW +PrWOT{-X!cysHLz?EL9LWa)s39#e53xjiVHzKOYLpglRF$F<0g;yCAGuFM4pcL25oR3F`$9gIz{2wvX +dqZtoAx+DgT#1(z|fSN>Db`VzQ#+~5X5?$nquD_08R7LwZv(tW1+V`c5eFVsdcdzXy8v?KIe<rmnjtK +$5XE=W%NA(f>lhfmuF39cR-D{t2$Qt~jR48r0hm^m4-}t8w=<j?!z<>LI{?6wE{I?J2?|eSMfBS&`&g +b)wOr_AbeXeK66g#JMcnrUsZ69FJ+bergBt_k?A?{Sh_Q3Avj9nggSr3etBQf`zRf~7<ofJj_7vy?YF +h|`)xYeUY1X!$?PtwYZ?fq6iz{t>qfQ=?78p}S!2D)H{_gd@9K8=I;4u8X0h#&*IUaoyqw|5>es2e>z +1<A$n4Q~jA?|Z~l%YtgmZkuquSzovd(ic`RyjgLrEfp6Ij&7{jzQKU&fG2dyxkj4f<#DS{I}*Yb_5}_ +zUXaf7hBn*P6i&=o5`=m)h;EdXidXo}7WE<t6odt82<`ffY)KzY!L>J-P;=n;-QFCXe#p4$2v<cOSS0 +fy5>vx8sAVUwvvzDsEqKQwkX_I{SD|B_npjzN&qbYJBT~l{G=SV`8BgrFbj_1P)Y9n{!kyYVasx)E`z +Gk__?m!(i!(eB5M<3c>B-tGgp{d$enyfjyu<Rby)1k_3EMECq@5B9hs;cd8aK}o?6y!<U@Gy((rYYcg +LgA_FP1Z%B_43kxK;=i)D{2SXye&WMlbT`^Sid`XZ7TTTP66IDU!gZOtP~>>Q}-Pj|bI6w}@Rg47z8y +-k+}W;$~iJ`<7Ml@NK<sZNWFib2<|XVxN?)1qQy4r#&WnymxaVql}#?x|~@ZxiUp?d-f2VUwu5wS?iP +!)a?nj#M=(phkc)%y0AUKCSOR9V-HKOu*6;sY?0>$w100Zbs;L4kY!L_>>ab?fV>W;jU(<jhuMGER7! +d2(O9=e%kMuXPw(36n^3Ju>8!^1r>0W;o?j236(u}cJCH1$-~>`SQOk`Q_BOJqg`P#zYq}(0av8E4eX +Y3yC2ZWMvG#NoE+!yabn+53@_F;2DH|-`iyly(DC^@9j-81on8x$_S0QT`pIemk3#VUa8&ivOb@Q%I9 +}s3Qr@7#|XTXh$j(f@iq9Ao{^jCX2L2csurVciDmxDP=?@n|W;g(6*kU`1eYlC8dAhe4~f`ntL!brE# ++124&mtP+)bwXn_vf-ZFQJQ%XU!)6N%d_DlH;ySP@aeu}8Uap1B&IS=^LJbs91gPQv<u<#b+S>CStIR +2JM+fY=VX8z5RM<TA3khK&Tq)VW{`UY-m)Fe_Z+hriUoTSjGM>x<wT@T+!MIH#7Xm14TybJ6|-8&`Fz +hZ;pt{U6wVhem2iMB-PWZmC4w}j<#N=7^9@Wgv7$^+N-UNM82n7)ZmDq2)d8y~#pInS>&V;iHcM%Mb< +ZOV9HEqsSca1VKJ@M`uB<;_W3`A~gJQ?2DZ@oku%o)YfZZU&NN%wUDz`4I1GG$D;8Dayq{lC@dBwW?* +<dHRJcEb_k@!{>K~cZnvGD?7U7jtBT)ES2?xC!Kr=A5?)Bwq{;_wFoUSDS>M56G7;6!0<cbk;8cPkcV +B2p3@YaHSc8|<`F55M+r%)De|0%*$lBw;ZERxPd@`z=dY(G9;15i}=LyHA3s1QJFN%k)1Ge)=zhgz*1 +u0*n6(uJktq7U91XSUi?wqhrlBMGyW89v|Ek5Ip1(q3{q>+OZ=+d?+m0zwz+bpq4r?E1Z1RP06Ee^zi +gZk9AWbJt~PikVW8wv9m+XI6EFB<j3OUx6UBYp<lftQG)!aT95~i_Ry0e4soab>9M?=98IOz$IX=dh$ +_a(K>$LrW2rWZKL#Wp?Q0PI6kk6Y7x0d5;s5^%EJ{BMEFR8Q;Qwa?7NvhAu=w<-F7i&rR;OO*>Gu+=v +xbBV$EWQCpr7~c0kxahJ>S|DA=y|7?o9g%{j)6TbMegMfQXoQ5IoU4ftO62NX2}+ui-(@MR@`E&ccI% +mX^k-^3>8^c73L5>ZO5sccahz`;~OD4q^?6+!w4g?d!mqidtn>BjS!+0#I?aydhqiTH;Sg*osdbn%`T +Wj?Vb>cpV=n^etT83q|Z9=yl4fTNCwnmSinl3g1tlYOlGDTdB&w-$e~Q8)st8Yi{u7*3eGIKXmcIl%@ +GBS$=}lhi%{1%OW`LO{7^Q3V>OH$UM{5SjOJx;(3D|5?TiNt%>XD&h2QhYCTwn(6&Dbdak8{KXKjUiT +|qv7SDitr(s%r>_9*sD$QH{<cccl>++v!Y<~zWs>ZGKjWJ7Z#R_O+Fr92TJ(brE^?7$AVWK@fhuW;s0 +q;rPMz-mB)B5awqw0I#pYoy!!4thh`BJAZ!0Wvf(#hW*8-s^iP^LJ@NvP=usS;h$p_LsK@f$6BYaQd4 +kFqb51*^I;8~L{wI5Qw|-BDnEo)?$KqQOh2B1*iOPs>Kk>Px4Z8nW3mG4Z^ZmZ*t>v5EB11C-v5BSbi +mL*6q}rM@)ZeMIOtG<Ui6PM%W9DWkE;X0NCczM}6;u0E`G=+!x#ye6znH-;HQ1E{tW9WpNS*`9QHY~% +{`N4#M(wUVCjU1y)SbIZIEReOgZQ@@_oww$)x4&p3rFdH3U?&*!g`Pcln%^MHe!_<9^S!wc#NiYa~C= +mPhpBWPWeb?_4iC^vZC%OcVA|yee6hT4=0^un5%Z{ZmJ=mCsw!>%DDvS>gYAiXH;`WHQhr2yCMbXi{v +_Hmv-LZ6(TRz1S<WnpG<AbkokT*ZdiHEHMajeXt_;H0}2mE8482=mot*S6`tPV!$XDtmqjt@VS(Fi%l +h9O6Yqdr^-694Mly@xyUBUOQX+L(@IypNLb5v$2V^*BS1Fdpu)9sSFommEQ_IsHMGV0FbWmu%erW1Z? +#$<bLZRhjuaUBWTEqXqiwL@qe>mldyrna(Xg(<Bms+I|#H1h`q=2lbsMfgEdc8f&BK#{Afw^oL9#J1= +5I$KSP;c$)_!M9sgNDmKB_#v-*k0^Lvah-0Kbdu#8(?U&Mmzlk1BVZFR)?FglM>-}5p0d4<r3fKAcoL +bZh>61{W*jpYla!<zeI_uIty2ug=QP)~MO9~am{OXq}g+JZ{h7Ky=u()BXCmNDH0$1D%#8~{a&)Tw+M +We&QqrlXz*Z13eL!ucztrhl8MCJLc=w}RHPryCki#<4=*j#;5aF-*r<ggCvgzv4&M*&&_sJ^&s<p#MZ +lX29PQ;~@LXq-hv^J@b@Wny$f4w0T$k)iF;L|{-<n)2%U-8y7NeRk`Hz6CGu!cS=+;T>e0wKm-ZQe-D +k0pcFsr*~g$EV5(Y2%p%L1-18Zx)`r2znU8o@s9;_5_v(TNSu|7Q(97Snj+6g-Y9{zo4<#T%wmY2B0} +36d&YA0W&cK)&8eA(VI~B3i=?j|@xWiU#9z~f8Mv{}o1B;g5BDywH#-KAHWn(Ae-USrXv5s&)^Xn}AL +;-t%!;9M`@R2*xF!54p9X%CHFzYO6*XKbTx%gwSX8J5maDF_;wX9c^4=D+we_jOh_QlhL_k)+JIJ;W+ +TO$)qWkGo)Hru7p4(f}7>te}lv-L}-f`PLs>iEv!+FhOm?QOVPhihjtpjY&4~ZESQnvZ>n1~Y|>8>a* +*)SAV;D|T!@s2_PoYPgN21CCoUKwa}v*A&MV|@%fLXp2{1cgn512sL*s&`}_Y?~kq^E{)@lz9+Lh7=A +xTax$7r?oVW>N`&b7TOVJf#y-*u`kG|@h<R!i$c0m!+;puT1ZV+dZe$bcxgEbKbc{#DbW%m0`g$auT0 +ZTS$PB3A@=oW9KgmzjaI@K!v*&lWIgA#IqDZN#na?(ha%(EIbl+c-`hK&e+h@g{rBx(-GYA#OaI`oZz +1ZJhy0n*M}X+jJ%YnHj#DrO5(o|x5Qq>sh+`Ov!zf6Q1Pp@6K2`j3C1Rh?qmNl4k{t~k$VUp{a2i5Cl +71htp*`0@k|PHSqhH3aJtNvfM;ab_2NZtL?2dfzvk0(njL4(qm4uFsN3Qinf%oIWi2tsq<jBMDV;v;< +kPQj^kP_Sz!2JUIl_>Zlm5&{5DTg|5bl4Le3WwCO(6Ik^I16J(uMF~ueTPmFdMsh=V>*KJU&b%qKYAv +>@>~3}Q@+TQCpZfByVB+u(ipXyg2)bn|6G|k2nF+<{c}VxYVZdcfzIN19*Ur#2tMY)%OQ9R2Cnf5L*L +kX7VrG9(;vO9xq4?rb^G3ZyN4uc*;5uoW6dMJfxyojRWAQYwn)}~kX*QO3u7iO<@)XyzhmGJ!(()xLc +i%UI6v<6-8)HQx!l~;f7EfCzZ=@9UhNuj7m$%x{$+_*<bu>(SaUivIl!DI`xFb-ld8Xq1Xq=t$mq%Gg +4L(VM3a%=CwaC9=Y^if0$<K~{}c!oWFL;ifR&p9gEq`I**tXZKGL}u?(dj*(y}n%MvR_|%@sq0%5j5@ +ym=!x{1gW&7T@;i_o?yw&jr9qFMG{+JWH^MqB&Z)8Lp4%fHJq3F-w2LbZ88&;Q69k8|85_*ye4uMwjb +81>U;?K=m1WHhP$Odo0fz>&=5aqn?U;cT$p0(z>j=FN=w|7!5P15b1e@+YMGNp--QmUJuyCbe{qVi*r +@>2Y8Pi!K<IZX3n(-lBpbMv!&I&1WGtJIZn3)k8*S78gGlHmfNWV!e~Yx_`Pl>zJwnwO$Xs?B~4Sib? +Wm?7S;ao+?%cTgJ%oA>SroJrfzi(@sxw=*~9=cdRTqggEr?ZNFW4}_{?+*_A{P<-$l@MJpQ_@I_c)8r +_}n>8gho1T9$da8Kry{fa@#rsNlJ|4Ek23S`wgpIR$w|&;=sOPU7#FqYRd;tDolMMHbJxb}!eG^6&Yw +diMz^vM5+0K><_SP-`eFR~py3I#W?6V3W6U@f>zfxQP(qDN;LgmWT-5N=S{@DlvY&0agvxCy1yS1zQE +&Zxy=<AKu`3be&Jg$$r`Ag*BJ7<fMp;vbIiMX{4J^1f7KkeVc&oQoVaS+wA%8D<J$xN&<dXK<Kc{B_X +`zZo*&&B+0`DN#y+8s{g4>_|>L+pM{tTcM*@&+d=e@OkAh4?vd(!;g|$sug{k-c#vs3W}jDm8XE3W2G +;F18PD4VP_0nf(w120yL*>LW<fz_gT{^N_wTed66=I8)9?UUS5$q3@RT-Hn__-Sa4{540s}FtTIUz9_ +oapidKXr=k_zHh*Uy&BQ`@i*8_itM$t<Zp7}cmc6Qe%q*G8e>OKEGs(;F}1wKZ-Ksmv0G>#kM2@p!TZ +NL#eLUrNabRd<Z@>qW;qyxX(hW)qW(ptFg2#{mD5PcB^L{IhxFrDjs;WWlTurKbnd+V7!cBK_omXj#{ +DbwU<=X~AUa7J-9WN0{G01bY~~A)}NoDW%_)^}#fb#xH?xVg2*QsGGmV*`-c->NfalfmEhkrA08v$eJ +`A43LEm4kub(VD1^|S>A>?QPf=*t;A~*Tdihwc0?ka%9yb=1mo1>2GuX?24>;BoNGY4GZxucI}R4uK3 +7WF+RtxElh@u1yMZo?ic<HJhzY)tK%s1GoVY_Ii+v}N>^`*$2=XiaHf;O`rZGX&4@-9?J34g|Li!9rD +}+BjI@hv%dl)?VoQ^ov(uA5JE|i3B(F0Ei#R+lQGmMxhY&_+o2guuJw()u&BAXF+SBzYn${UQ4ynqzp +^bLA#B14s>htE$yTad!Fn(vb|>JMD1$!n-V?U3Jzpl%*Fr%>hVX3j5JiZ}n}vH$a^3jUu%Rlh&%x2Ov +K2~{B!2w^x#9L5I}wxcQnMe$DwfZAc!zI}&VAdHhRO2F7}L=?i0Zx8ut$%wwxu#=-Ouw$q_$A{pLZDV +*mIDpl!s{$Z(ke~1md5DaT|C0EqRAbnYlM~n>UI4;h#g<d(C`V`5zhm;>2>v@%m3<_bqXUl}u9M->&~ +dbg5Qkm@_;K5gKHf%$AtiBCy7z1E=iM*7gTy2`+IPY9Xe>cLjHw-SMd*RcAaZ|?{}@%7d<@F`iz$N<B +1as(Zd25+(VX1#|0hsY`Jbrj#@d*=$$v&w-!}eVjH;x6jH-&EbXVG}Vh7F7=If0OCuNWjv3yK?5tMue +JfCE1r_M`QB3tnwW8^jD?d7<Clj}V_B#Zv-3LQS37t+Zn*AWXv!HPS_sA8rKstdH}P_4<!-@%lxE^%k +R*LKa=`=mMA#gpYzb`?>)4YQD^LPEmju$k=oKAsfpb)wb>5MzSjhd#?+*cC(5s=UHeCvE3G9~-;$T0R +$@mB^voSgYHaEzoQUy%?us7eVjgcmi(36NONkIpN;m5<2fa=%*T9-r6b8Z~duL%X$A6>jcE`n-?wW<3 +{kpqaX<W_P|X80y^rf<?<dn^)aS&;d~z|9P*dtKE~OQVa#K=v0irNoY$#wK>c<NVf6{Q=S80)Isq#{3 +J=!!4mO3(B22yF$`_3Y*`tXRO)TZt^<6NKu3ULK)yl@cFOL>_NkOMTS~_aiCm_Xwk5z0HK%V%3@lgm1 +r>|`Ryr?*QnwlLwnp{Q`7THe}YjJUEooRl6y(?PzlCuG1Y8d0)eL=yM;7CqI**2W^S$qn|J&Bfz8>&L +sCT3~Lzh0~)WhS`RrgPoVkB%Z~0lYQa6p$TH&Q)$0Zx&zncY8GgIJ^$SNowuJALy<d`HO|ULFw{dBWd +Z*c~ljYy&?@j1m)JaJA^&g5T%`@#igNoWXRB5ipGo#oI;ghLphFf8keWh0jyRx@?El;wVGB0Aiki?V9 +gHnzY0|mY4T2*=h?q4vP*_dLQE^)3em!X{{>aaVwSTMd-1SkerLmomOAPP>zjq3)4fPmWepz4lssSiX +KxG$t|(SZL9OcHI6#MkxTh;btr?Q1$a&ba^SXZ*{`;X2+4Q<jvtU_s&!V+kHidep&s`yiPhGq|l9PD> +hOVp(sKBx(aqS&dds@)^zSDspn&VAhSoI|`=J|{gI%i7N)ooP;cHxJcuC!`^LI}9$AQ1d2b^IK$jS2P +WF6}^tS}<5*Np?+XsdnVsyYy3OwV$+@4n|aAg;IrtW}q$5yrGB2PQ?!87QR_TrZHt&?0s&auLSB*W0Y +@+`?N$x+2cR<7QM49uDVhPLMC=H2b`SK<TrNxXs$lth;8TL-tFc8AI!biwxie*E%?q?oOecF;Z40^g% +KdEfH%Ao2mum;uWukL>r`cBmc6G(=g6@Qk`{|C6fq-W#*DZ0ks=pk#xf)Z-Qr{UPCq{$;kze!VTxvc! +1ea7NFI=k(I-FO$@%0WR`Mz1JFeX|FB@Kk;Xhs{nnDXQ+Mx1!eR*sR@+A4rAJ$-k`rPVM3Z${D-^@%D +Z4HOtQvS4qE8Nu5NCXw_Xy~oqwuQckGwZ!ibl`@vu0TcK$?162Z+Zc!+@&7F8@~p(7PYA>j-+-xjPKH +4VY|C_ABSY#wy=S>6E)4c!rb4olEszB*KihO8X$SbvIk9UT}zj1jg6A3E18G7Z<CjVs&z$BmU;F?Jrw +@AB7SLXfP0ZxXQrz55n;g19uRAV!iqy5Wp>U;*_ER~9CfWpNud}Fw4TDzHnLmGqaCRIb5w=?GgS5Cm; +De`q2HjY4KP78L=rGeLK~dgQ&R*=Z}<vFV4Oq|62TA{B_WDNP#UMcOEB1BPr8>|qI56T6JIJ5@D7KlV +{!z9{zQ|zc;~@h{eJ%wwWF>tq}B~yMbuHdIq0()`4b8qQ!tJ+R(AA`C;8E~lx=7J5vrp0F^&6-$81;V ++@89feFsGN{`0n(oZ7Q#B(igI_as@qpB~N+LG44%6FTNn?K++GUiL|;J!eMHdkYlyrvs;chpH~`Tg+5 +dhoHj=j*OlhApW6Ic2xe}5dMFFs+QlOs(nZR@-3?R<>3DqRcU`4Rjtd6nIT3#MJ4OB>Y;jdc#4Eo8WD +<+Keh#&KKE0fJV$cSk<K6b>hl_+Rf@r4avb#}_EwKy<z71xYp$fYfdulxK~A<zFKtlu7a%?~vTv=6_U +K5l46yt)@z|t8_NY``r>Usht{$z<+~bxe&YC@_H>15Z*05Rry!sa4lE#M|Z%!1*pg6b>>nUZ#qftoLz +*sj@%eS|8jKuLQl)|N>pQ-#<N(SeWhog^R0t^w%q*605H3gkck0SC>hioPIHC#JQXHXdnm%w#<Tf9GF +G;1%9Gsr^ld!R_cvJ49lCFWdzz#Np*el*GVj5Q$vK9V5+5V1TYaG_ngDk6jlbv?cvl&7{5-Hk;mROg{ +BI%a6;Erv-P;k?N7oD&vuIl3E!!F#p1+`XE-RTqlCX-FRBquou6B@j?f;`a)t=XD0M<@MQafPRM9>f% +gtl+N{4sE2I6<Ifu!J$WuzF?M0Fs=YzcE9veO$7p335h!LYcVM)im6qZyd(D~DC_m_~yO=CDrBp9v== +ta8G^FMvTrJ^om8Nn6)oTcy?j--w0-5arZ!I#$d+A<QODM%_>7qfl?@@GLSj2*6q$|8c#^rL52W4Y~@ +y~gbN8G=rq@tZ66JRi3r*cpe2cI2lLXOYusS!YrJ_XZY3OGAEL>jR48@iihc2YjloDdibB4li$))fSn +)JR}b^`C!3t@962)u+tOw^~1$=DM8cDD>@@DPOuhW$_27inmI{i(uiAdQOVex+9)ngefJ%Cl79yN1u- +ueFLu3a3$0bJ~8iGvqY6Mq5TI?&+Rn<MZ3`l?_Ce~2@Rj#gDFuMZ3*X@;SPyB+D=l7=X@6OM3z|EeQM +y%U)k5#$$;px<<ebliMra;iAiud=qZhSN9U_K*_<lg&Qbn|f=TPR^!?UeHFH~4z5H~hgWuk7;PLUF%n +5TU#AzT(vI*HC?Nl%w|K1YBK+`hxkvhg5(lrY|`esqQ@_os}#!o-zKrDdQi48U@nQ*7<D&O617DhI9U +Ll{FX^ZIHh2~#;(zkELy7o_WIvIF9h{-9m{p<LMt^mZ;r<WAC@kHJga2c|T=e*+JL~uL~Ju7f~L@lvJ +pibTAajs&yBv@tp*s+TEnVBF5P?dLHUesZDG3A(%qS!oiylQB@Gc(RysXfil70I`JBN@`0@(Y&R?ubR +{TE4u-cYxAFOBk7pRG2j{+INSem5)1EQ;Qe;?M+44OH|G_TA9S4xM_UVXwZ&Pi7<yV@=ig3FB2JpDj$ +;0HpNi*wcc!!ga%ZlzFtTNX{6oSqHpnghT2#VZb7=z@%59}$sH}}!1ey<^-DvS8u1BJD{MmXmf8}V;v +}BE#G*@$iDhdjH>Rw?XvePP9^AmvwL#8<IGuoHyIpTLKDeE4UhO&-jnbg9L5|_U!z{EQ*Z%YIlt!>mZ +~%ri^w-CeR7JJ70{w^CjtyD*ADRCGd(K~U%YS}U?vkBzInVR|Nw;IkcI^KokM`SPCI5D@Uq+Ywc%k1g +H*u80QH+8Kh{B)^a?vP7U?_y51hRoIjD~OwroV^2cEEIu>fG@Rx~GCDWG}+)EkNWxPAofGz&9X7<v-E +schT1d*04jHX9GSPGTJ3ZqdlX9LA$&TmhX@(gAUvU?INKxx+|OG=}&0>1N5~4Lg<(e8WTsCI=U<IP{~ +fa*<QJyfZiM1w<m0S%cH&Oh#y_)Ft%3>V`MK4V)XGJ-y4~tcn6vLEb#3@@IPg`+;^e7j`(HVCx>f^F$ +H)CZXpJF;s<<y?C(i#@a+BDai5;M3ZBMlU$`Zurdj8E7r8t2(Jbs6UjGUQT{awq0>?z8{YkguNv{B*C +(YhvxW3|`Nr-M~e~bX-ST;d*IBC5`7Vg3??d#V1GnLcPX5*l8?rrMK&#mjlybJC8a;#?W-*RpK_O^e$ +Yv7-3`|GZEiVg7BI5vEUFU8xfDI{rHxmleRJU=qcvl*ZxVAqU23B{uatb)uXZqya^=_>MQ<vP@IF%NI +W^|{qJon4q^dxm+NA6>X&(v&3$5Lb$)-ERIn)qJSLD~f(UW0BLYn5o@I5MAbLv9w4j3Ugeg=)_!DJ6A +y~z6h8=OFbYIHN#w(MBSq16lIW>AdM`@lcM8W&bMao*1jJ|mA`2O$>QtM`AqNS_He?zlA`Vm5PwkX-5 +XnIRXkrfa!T&~Epf&Ze7#!S8+(w%^@W7(o1u+saLJeEdEO<H6lvx4nFwA$P#c>~RZvSDy25-=J!HPJx +Hz$wPx6rS@=VZHJ)+~~I$)<3osDkU{E*e%o%7M14eT77zsJx#|AwInu&iUu&=YSxe|hOs@h0xzdjk>o +HR|9$U}!E+&#R5A445~(SBMlAGKwne@D26oIpd2o3ZtrNo0oB3;@ouHD!OgAc&0A4q&<;UuRcoz53~$ +GwbIVPz)%ZCkkl64E9Wz`MfnUpttmpQhIgINDwZZ6d8^Q63otIVU5(raW-r*etAKku8`e26Eg78H?2T +p7(w@Nr)fL!TZs+IYuD<P#xs{_#EEmB^_&8WW65?vdyFn`ru=rBFriM-K>*^#@$`3-qCszG_qL6rfDW +s~fe6wncm~J;c#y>|$s~>IH-q!ibb8o=V>GxYTK-FftC+eJpMZwTMwLOdAC(kSxka*1keM9S9n^Ew|a +v2Gs85T^VpDXhNkV}1yHL9h9N00xV5!gR=Kj{BWr}!5a`*Wv={?;jC_^wJ$Q!oTkIF6DiOd}LZVKlzs +P8>rBlK$=tZ1UiHZe9?DkBZNiWJJ0bchGE~Go2k_f0Q20x!<SH<oMoD5FNw7_BkZf-q)KPes((uLAyB +0=G4;UNC;57!`++|3hm-3KX8g)DmX{c2upTh?9B^8UtUJ+1td8BnbEnq)_AYo?3t8p^}QxV94avQUa^ +YdqkjY5uMs;mz0o~w@n=qvvv#MLApdoWgcyM(nm;a{VyP!xQQ48?8I>)H?K8c7dN-TTtY16}@NXRA?p +c6;;}Cbx0_+)rf9eqTT?7BdA?~{d{+UD6=JXKzOP;`&zpBi#g*z0c$;gFXF^n1F<T6@ke_A)&e!IT(( +aU;^gG4dEytxx)rV0oLcO?hH4$JX$jxE2rtXk-BJ)-;OWsAkSjJXfU-F_IgQ>s<do!?r(8%&yeX%BKY +vdUr71T34m-u%FXx7d;5&`f_Tqw2JO*+~H3^AekrxIh=A$HGE%BT?50mCq7Fm+YY_zqz3RX4bn6W;IO +B+<RFRnRc{o)Po$Vs4<jZQvZ_WayPHIxC9}d35pVWL(6|Yd}kQ<08r|XhBFf?>xR>$8F5d{jNg>n=(} +oqYGk`Qgfu<OrW3QqGCDM}Ud=c!@Y^lJF?j<-AJ$RpiB0da)8FYU`^9ekT0-+*g%|&1q2F22-!AfN3y +L8$N@AO(gdmKd$<2ZuQ3grl5Q;zuf^QFfH>aCnyCtHcy>N|VJE<K<_E|?5aa5_(J#V__Y!3=OhJDw7r +bpbcOH0v*fB~_y?@8i#5wVXrCea=JL&Q!eOp;@Wa=u3k5%vQEx|z;x#qI0PyoYw<p5c370;79yv%Nk= +5A7{<KV_Qj7B>GPuW)31lOw#qj&v_V?j-)rq~g&r**N|Q&;K;4sE?>3`o(}U>+r#!iS>*)Qa#%r$?OR +HyNzUQ`M-)Pm|6P88l}IsM&BxfN_$TCOTu?$u!FH*Gn=veLcafEP~BgSY3Fa1K|SX;(;kKS^Xs!IajX +3*Jv};tbm&w!`*RNUXb!J|7=b=A&t$)(ry;8kkvqQ+t&@dxj1i@bxvz=gWZ5Oi<=+bd{VW?`9<l-KAs +etk&exjjy8a;}s$C+5o9xa%S;M2`ib|)gySwBs89+|Pi>jYW<9rDGIiAn$`#Nyw!!Me~y7X1sk+%m?f +|zK*GIJZ<OO^zme$@0el0NMRfInn*O7mjDZC)qHQG#>>^~Vt!pjU67nrB>1#$<>6CAbseG%#Bf6kO@6 +>^1?7WG3)LgmWjKme;F=h)`Z4(qBEWOwSaeNzuz=6;Gj7ce=lHB~D=!J57pB+M{P?eU0B%VB!qYIm04 +#jry^7=jjS-UNCp|J#lkcO;_Krp-;G3-9>Zt^HnNZP$Z;QP6oOFT@!fA#+@6jPQ8Y!$eOg(#eDg(71^ +=$VWvf14V6dyBs*<`<e1i%-=r;pznZr!ze!s<mEy{5<pKChf8oW60EfmV&A_kM=DT^zV}$0J?Nr5j^G +#V3tCSLL5&)Ywq_5iTVt1$hJ&l7%gR_t7s9MX85s01nFl(yuIz3zD_o=#$XF=0d`y~s@=Ct1!pl2e2q ++n|fZ^>e+bH0X<A`Vf^K<>@C(Nxo=Q+ZOx8J5%<2`}W7yhz`bjdSS3`WX<@>Cv9}RnuKi%T&Eo$hw+_ +=w4&6KzKQIz0a=1N~R_HXP0DZ0y}>c*AW*gRyGF)P{Y}1Bk?VeBAeudtd8YX;8+hnX|9#|g>`kFCGIZ +GOoA>H6Bh+NRf~$-bfZ|2lL7r@i<xvN&OJ4+?{~hE&rMgwUQD1Vp9E;0LEGQ#eNQ*gOxBD35#ig7xP) +O#th$rm0d4pjnnd6CHvcAy_$LefvG4m$^l%g{F>LdD5DIO65TRj`*y0FuA3{iBD1pJ)cY}vr9w*(CUH +GBcn8(LBoNRB@+ORm3?!Jm9_UszI1q9!3m?n>&<jn<9^zLM~pkwoWM0#+-h+VpI^Hk_Db0?+ufrh*Ob +-MH7>Ffu-Z*z9h(Z9C2-Tdg5-ih?oP6*q+?gB&EzGoCUMkJzp@pNa5MSIP2+c0#@2HK+?`ll^ALXJ*= +EZ<3H+sf&mvc$OS-aD4ue(`;*=iS~{CF^+?o(b~`N0XS;zY8A9|5fnt*ZtmJ=LG(Z-`m|D@NfLy?)HG +c;rCWe3U&={X}5=K4eheQBA{Y|z;H4j6pVmIdHBMf7<U>k`6AiWg#eS2w))nS(v2be^e+lhe1y_glOy +}`28(AP@3E-^2_u+ipJdXRPC(((a2u>HPUa0Fhtz09u|YBg;!O}U1?01!PeSeqahTkz0fh8ipJpw2fH +L@ZYgoH40DkQZMtYL_Yg>NO>ZLc5CfxKss9MUVf|)A<`R8jF_V*=Xm^n1%55TAhMYZ!uXa?)zbUatIe +sZ#9{jtaj`EDy2Hp?ij!4O-}Hgforq>W~KMQ_Uhw$llCF!F5N!gy|N{iWdM<}o}wx=bH>wQQgAnYfnA +2W{+ghn~u_uSVZuE-2<1YJ__e1&mAL|9zwRb4%;bb_)9!R`VaN^gFZp%__gKn-~t`5QO6tO_C@Hkt9i +@o88=}lR+>+z!-vlKj}gpeLl%P>2%ld&-ZkFjO|JOz3b?UumgIKHt-**r={s`Z}+k0>7M)FOw;z#El$ +`oE{7n*p6Q@|=E!cp?%lgzN)11X8StZgKpr&R{1{Od<-4sUlHC%Mhq>JIDEUr6iQ-)ccaLqL-LO*G5w +Ao$CuBSQ7N-2n3_0Q=n*NER{*(vO>^u;(`mfy#$JoOOLv}8eVP<rXrm)X{8#By%%uxNWVg})hywG7g% +U@fwUmAOVm2@%xPSU0NUnO1s`j+<{{~aR93Gdl8+Mqlx!s?Z0D(&2?q^5Qo>fRtRx&YNwhVx74`xOqJ +XcVmxPM$GS|L~j9`@9;1jR$Xx{MbT<vFnzllx$o)-B{;i^RS!)pC0pip8z}J?u+-kmpti5gYw)s^l*F +YSFLv}LD>EP6Ub3>Cg7b(#=cZt%sD12-UAk!NrR=C*4HO<#>xRXv20goV3RN-#W8vtZ)K&BQ5V>J^!t +|Va@khP)`PR$6DtGYxfkjX$&7gMYw4yGBT&VG$-AB<pM`!p{<Ii1#z#|s4oro`XS9~4K@z6hBQO}v1n +RVQb;5kHJ|feB3<`=kKj9l^Iu{?AtyOIai}B~u(QRrdM?UpnESwrbbL~ijxD&wXX=FzZhd<jQq>)A;m +(p2VSnvv;UaZ7=&<#zAeI-RfTEn65DoBa7e&qKuWpEWBlvCSwj*2#8hR=9CykeKcRomz>8fEy#vTw@N +_rlqpz*(^&s1+w-y@sEZzOW3h0lBq!Gj>AdSY3oTBlFY6t0iVMZ`^adX@RA<QQ9gX{orO0EStW*T9ui +X?>KKw!VG|y8lp@lT<^?WO0nXq+ZkiSHQc)>r5CInE+LzyI5CKzex+Ipf&@#rzwd&`4_e}@KvD)3m(r +9Yxu*b}OP?|e_cp!9=yk5369+e5-q}3$ut;&1!Oizzs?v8bes10^3rzr>w*6S5_wzrc=YAWJk$PSilk +)LzmWD2PcLg(|Rk4JJsBZ%@?Y~5l%Tyvh(#IFf|0qH{6X%MN(K<XAS8t@zq2uvW*sE>aDVeyL2JzJ3r +P+JMhyb<+3jxSYoe~6LIo7-b<HQXf;JbrC^~#zM_mVswcHfI>kguS<-G>i#?w;qWQRpQFKs$SB@(rik +R5$9qWvQuL$Qc$9;+Gd}W*uC~=95_@y@eu148+r;kL_+CYBY9k36P6V6@JQCo9kG0vUI509DL!tYGsl +NU)E>VT*#FTFHf>aa^;4fpMH!hW*kO(Bt0WwtOGYI;zhYMis11+cR6E~{}g0I<kaj|uaR7sX>N6ACnT +z<tUiwKu<has;^*qnI*@S2nHPqnNH3b!+X8PE%Kh`X&IUfnk~u>!2G?0mlr5L#jMCF4{9~uhLxfo!A8 +;Lj{M!g=18K%3-$#Qp&z|5cGtz<=0&8xV4C^D?(w*ni=gFN<aaBf{9oxNHR(D#?0PF>;6*<QzH&ywR? +!t~(ZjfXepaU5vb9;xn_k1@QH{w)v?2JrXJ>roF=gZX?pjHNklVP`UwBoIBg&r=0!%T#;FR!!O@)a(h +mJ}H2buxK~=3=c;-v-Wub^qy;QdgcX44i^{`j)*)axV6Rn_M#N{W*OTf<}cCHmPTfVy7zeT(Cl_8yvs +SwYz;JE^egUz?^G=LgjDLU{L%_JE`41iBd;#ozM#VJh2~E5+X#pnz@z6>y<)6@GpZl&d?0r_>W~Xf1q +{y^OHE{2V~uUyvSFm_U8-yrc?&OG(>M84M$0wLLeGNciISy5-5&f)LuA4;bV;J?_e7o?=UMq3Q8O7K@ +WwLT~>?OsUG_TgF|8~Pk+j`<J9*FB>A3+O%GL*h}wbDKKm8ft6_P*r(x;*Xj-RsB5)k<=x!fFn{4p#N +3ab!8r|Xj?Ay}2{MXUKjvQkaz9fJ5&Mk6JNpCxkkLgdl7#X#P==d>T79o#W3Fr<xv3QS-H#oXQ!sws3 +nj<@Gqkb7*U^?o6FVj@VAd}M&xy6^px%*wJcRn=3fbyG(PZlJ9&MOms3I7U5XwoITiMzyC;oQUxm6i8 +h&?Kq941WTS7w*%a5OEA!dI@<U+LbGQ22qv?(Yga!*MmI!EAH=C<t|_kGUZ0UIxf8#2G({Vp)h|n!*B +b(3%jzZZ#`mE=~Jos8RjuNq{D$7&wYdQuw6Lpt8UnzT_W&j*Z60b2>jVK{@Eo0-@C@YF&x(d2+_8oqQ +8yNtSdSyu8`HGN;Bw$PRl66B=N^VDTh!?^=hM(=?zGpNGclmC&ivAALv)K9vQ17-;{Nya;U5^6|C_D4 +6m&&4WW2`ciqJhAF@KEPx{m7`FJu>qC2kyN^%@Pvla-(q|jINHOKF#DgSg^$V&4Jf2*=-xailZ#*0K$ +ClJr{*GaD)xFR=5qYuGQdcY|g*!Ouss*`5a;n1|mr*HETvw2p8Bedk5j~HC%<$f2s_c`a6ia;W;KYys +CcwB@W2vc0<F3-k!c1r;TXlcA3>-K3ek<>`4XY5~K?YvZ~&ne`jZtrro4=cFxoEsXkLxcd>yFSv*s|N +{G?MV|yhRLve>hnbV3lCC+hYBr0i*2UXx5|cI&-?9~(C_D)R&Ez^2A<aw^it7YKfQ?8)w~$*?qNc5R; +87&e6AlPewWpa!)mU)4Xl}V%+Mv-`^rxc{S2cLurHe_BtV$A6>VnEEGY&gJsA~tf1zVxR&IY|8l-#F& +F4;q0)O#Yh<QCP;m7SGPv(FZo#*bk_pAXd9!pu~+if!w>hr>#pB9BZIwlm;0p!kH2Eh>lEim6kCrc|k +VJ4zD2gFBQAXl0}^S5a}%F|=jh|7J>OzX@B6c!}6aUj)5omMe1+Frsm9lxbPaekhbsIQ(tGJJe{QZ8L +Qnx_k^nVCOH4xFh9lB^eSb<<~Ofj8lsX82#A9<XD*7eRwejS~G^ph}sT$hrzhy;-#BM+&n4Ee8X?sRw +@t7#_Hg89uNZ2@`=^FJxI9S8y3c*E;Qe2WHW^KDe8~ygPbSWu3OU;L2*#AV$@whoBH%`pfXlE`7g@F% +(+oPpL<0G_iplc~1?%(gf_;;c=O-(9jC0z>d#eo`_G5iT!JHNn;ImPvWYQ54z3kAerxh)e>!Yb$o?3J +OHUPJ}Flx0lCV;8{QC6&-NQewN{B##zJC}Ch}5jtUJnh*u@lns5+)z4I+2b+C_l)sa|hqR-!8?wCn1@ +#mHlDmWkKgBA}D}4w8BzL&Zc}(Z38sQ@qO0t9(3#`8Hb55a3>=b5XVpnoW?JpZimKUt}_g=Bg6s&-(; +%Q$-RM$%W@2#AcUC;0N3Gwd}k6X1G)!en{ssSNonrJ6d%cLCE-JM4{Th2csFq_~-FNLWqTNizZE7UEX +|5s1194d$%@eGN5i6`USemD`T&ADAVFYVOH%EeqI4VTJkG$KI1)>=w}I&ITnFZfi2eiO$rzd=g@KiY$ +&Wx1p}E9&(369qER?wg}qN{>kCDChRTP)Y?*&<OU5&PcaTNe)>`8ykEhWs227*eBG@dohmJ{?vwp(z1 +sxWR{N(urH5VvXUK%q-e1jvTB~f&Czl|Mo`XG?nV9OnVG!BtsjBt9pf)RY=C{@j`kAk9{22UXUslBXb +5UDa-U~%&W{NvKC2`OKq(8?Ey1$564*``lB0wK>EZ2HT<(6zV64~5o0hILMv{pWbD<=W1F^lX|RL-P$ +j{I_d;g^7P@o!@qRVfY3QNdhA&7{V!%B5@j~NO(I=5I9L~KmG_O=Gor=w4u8V7{=s|@lbRhV?ZJY?8* +<hR(!{6G5#Y-Ju2S;+!t!{2Glk%7$HBU(2fU*WG4sb<W4=#4#n9t`nj)+`cYXVBX>4(Lhk?;$@eC$DB +Ae|*&#-R9@DL;L*{mS0(Ib00^2JtB=!@X?ByBiI1<DA5hC5;WP<M8fF#}k?VsXAbf*MRzoG=>@T6Urd +byt;XY$kVwaZ_AgcGZ8TD&|@`v@yzeFafmgWuDIRYPA{L%;cm{H_4GKbANg)bA`^{hrw@e~cjbZ=;ne +d^|TgyM^cJqI<XO?Yk=r+hS7sPTKKvshRN?oTzx7V|mI~b=JRy6~FX}{Rvk5qss*T%60zHWdeWYI{)Z +0fj_#=zk(Nmp8+Eyw63ogB#+G13aKBT_v2}`bH`C(vp}TkS+P22!wr|NMirj4Yt)VOcwzzcDmh~slKN +6uDwIb?5>ZCkLOv1Ed5F{jq$25C?TzJSfrj#ijQJ)jjB<Tl9;wy@z@$iS&^mEWXlE)Yf~aSz>tzLn6D +Nt%8^Kx7fDOy~lwxNUrL|yz>uummJK<ogtS3P1q2TSE4Lypwa4eUQ9?Ni$+!ihP?PetiZJp7}k~vr6& +4vLi!D%#|P6p^8=;ab4fTyD}{*ehM!nJBhlXkFCnMc)pk)ff($mkrfmXWYd6FTjx7c_2z?wXkibX~Pk +cL0)pJx`rwL`gc-XU;)KN8<HUsXa-pStlz~ysiQ<+IwRfbZ)Na`Lrr_IA{op#!XHD+e-JmAnxHH^f|8 +z0en+F49YgJIiD?Kgir|W!6`M`8TR#wg+G_*={6UXu9&K59UyoRa5z%;N<)O#ML6|*b45%wBR-0D_t! +O=Z@phe{CX)n>{U2j@`;N{*G3SIPc*rG8i~0!7KnMTo|iIr1rhGSxdUze6<SR}u1W_bj+IeM_TiO@JD +DEMJY7qmm9F!!ECXDY_C2)#Prg-ONYM<<uDuEJ%l!1(bY<=q+z~8GIPeA#>^sMf69HzIoC-gFxp<iXN +CjQPuY2{H!rZgTr>_N%?bf^-abc)Lw>V0Yuq&mzZ+{{ekmJ9>i@zz*xoCU3Js*QT(r#f$K}&HdHOPE8 +jz7eUz<2qBKf;UR>gEi3rDu^g!~30=t|H*}rwgcoA=^<g(r8|XW1GRqZsJw6uUsbGxq6b;2dfhbauRi +OmhJe{PR8pom(H#%<=s?^LK+XbEHXyfPws@ipT_;-*^je)hP{kyLh??{zA!d|w}om-|MIKHKyL44hn` +S?aVl3-yba%UWT190NgeH4<s$!?1=0OJRVyWfRBc%i6^J+66bgD(Ia0(b%Q%Vk2vAo`JXPvSET92RcQ +G)1_Ktv$v{SDYHX{Q`>1=|3>MUyG4?XssSbfskEKpgaZixj{=8_1|XVG<#f_*7}c2bJP_p#<@+rRnI+ +e_?e3-L~%pE<X{a<_<bc+LK_;msykGr-QtRQJ!7XlJgZ(IvJ-WK8ItVv8w0K`FQ3kMsKC25{j+%y(N+ +gvPiH3%NVxXb}RwbXNn8uuT=$^yM)wNm?xop3-X=FR$(1HqQ`hJ)}-bm@CaEa5mHM^+{f-MTA@W1Uzj +tf0^5dE6k$F@uL~Z<`R1Ls)E(^n@$wuU5>(OWkHO&OjcM@lWm6nlNNHHY%Lb>{6)W+s)ydxbRN3bttz +2Xy~PvGOFWb3bkHCvf4QmJc^;W}(FrRr=`n>NEo?y%3tR}5d(wJsNxV?!)TEKmsYYLLB3G|#*<DSp4o ++HSzF;Jj-=2-%Yf-|Aj|md8l;&rku0MQKBHdZX>8llgf_JAjYEAzGyeM$o|24e$&(``qUi^b~ev?^5P +zXjT1SJs&rfH0VH=KwQ^!6);p)^h6Bm$$@cZoF7&R^dpis(ZqGT)J0p6+N3-u0FC(NxI6PC+)f1%JOF +d~h?9=%B<S#}usS;PxN18G_vFz#HDop`FONubS*6d2%}s^aI3*<vYWkfcCYp_yB>#0W|Y{tNGD32O~S +J6gwt$ebKQ*k4LeCq8g_=$lPAFJ%@<)!g7l2O3u-q)%;T;O}!Io%Ks8+eEAiAyr=s~m5(=(dKK`R@;f +5U7Ze5j8??BiDB$0q#T`Wf-@qu*gtWh&S=_+lpJo>S3={+Z1}*NF3H$@J_?ycFesrB*dHz43`A36jMb +G^H0Aw&FVB31TR2XewWB5!r1j@oSiO96m11-qW_#rp^i*a32%nkAmov`Y>uJ7Efx~>2om=0dT+zb-u) +28#ixfw&g?yixqK7_D#SL1ZKf1J?+*W6J~RqfQ7|1-^>g}(UdFVuaLz|8gxYg9P*A(9Gr1T`4=)9Q6w +|9F5o@a+Wi)B4RVJL`|Vo06#+BqW3zr?1U@W?9K4K<uWmz`DMkW+^rg1#t~iwleQSN_pSBGVEp!#;F= +*<zuYP=t7)k^1a%MQY|W~4PilYjc<UZhc7xXh}f%WMZe!{V|ag5<y-{i(`aJr8BY3glOo82{irPdI@R +$Dr_ip7ZZoLA{>A<EZ@c~cDy#DU{Kvw+G1&ijk*}8e51#cK`;4Ik31bvOV>E)$1cp%%h0_p%z=sYVO_ +CH%V&r!%Gy?6G6Crmyoqn0+0{uj%M*vP7B*AF!oWj2Z%Gq}<^k#{-|2T2Tsz5uhe>1O}L66{Fx@C*E> +3lCI#nDbu%(7jbE{b=%8OJ{wc$n=j0y}0ECdh8j@uP7dJ*L+{(IK`^A7-1}DUF*W*oP|OM}I-G*PxJO +FEkNHy(d4~1xWM|f<b<w{&e6Wi|wPEgY1{l)oNWek`kz_j&oyG-8ry;T1Nhcr6$iVFEoJ0{XDk%qs11 +ow{wc4i`=`-Rvbp;zeA##X*)BdS=ua^U%7?71pGYr#EEX{>sJr*`-8uE?90f(WwW0<v+=O0n)vVm-q8 +-4qv0^C=9se%KaQ>a)tv!9+S*^;8K8;H-Y4*D`r_9=)D~_eyjd{9OAB!bqesOg@=M)>5@R&m4RANiL; +=LHuQxn;2IbzLz1%S0{rbq$yZNTF+2oeE(~J|9l(<zj&*}cT61DqE2u+G~PTSrK;Lq~ezZtdm>sf80J +!b?g0xv^h^3$ls?-!_14fVhrPh%cuj(eVM4WkcR2o;PbxSVYAN%K4x0uf&sl5aoU*$0~I!}S)3Cyng` +iID2^{6XI8C40?sp%9g*thd-3qnc`RdqS|7DH#9RW~~@X8Q41`kj-zb!_5D&*~0&Cm@WJ-nJxS`a-Il +D;UtYf^!5+JAre6df`SN|g5X`}lg7xs^%MK9*`g05xqa;6gV+pbdx~#wk|g&e9!l+rzP+y!Ifg`izhu +4B6S2Lhj6!=kI>L6Mbe8X0QJXo-k27poFHLu4D2zCm)bajM6#c+#!AF@pK8okte$aGJYeM-^7SDEbh+ +@0(+u-glg_ZAA#2i2HC%kt(rN^k&2;Z}pIkB@Q_j)^Y^smy}UjGzWN_#3YvVSpKfp}LiE_l6QALqJEP +4c^noab-Jwg1R$!T<j?Tff`dUpHIdVO{^4bZtSdaeq&=AD?<76-rQ{F4N?ZQZEy>*dzdTmOqz-CDbbx +_3*Mz<Kp9x@7}J1l_D_z7&$3)OjSaMlvwBWk=#-zvfgIsVmZ}hKxw?Ku4(NOw<Vr`igp|2o!2@}n3n7 +#RDaIX{4G@W8@|^y3wm35KUwNgTEe46TQY+lSF?kg<GujC$GT<=uNTJq3!#F~tGKgRm}B4xiLef`mkg +#t{d!^T+r^vO0>EKBb&40?i4&qmjG|QHGbrRaNmaOp*QWuB+f8|Uq@heM;!4{FrKg<w;0)#UaXSO}%n +Q{cVo&7>iP^&iwBKvkGw5HogZ30f(|^)z*uvlK>pkkytoxNAI(kjM`=oDd;lEnwt3CYlMSjcUfgluuz +T1-t#k(EaLSE<)28NG<$A+({WFHQMLq|*t?}EV_07Jj8vzJo4VIktZc?5@dwLP5P!`K~~ZT9C7El!}_ +cJ0C~2VH0H6Unx?_(y#y$q^Dmd!YtD#!AHKz6yFsxa^c0YL^7W(cO+_@LnrABwTjmn5TQ2%7)`Mv$%K +0=R4_WGsAnP;OK)#{+wT(?nE7U`D*n9MyV>}`#qS^H{@gkaDFx5h%08#MXfUM%_2N|%N`l--{Z6R+P= +Rudz{suO$W~@PI?wgU^6_;!EkB4?YlAtH@pdN*l*3{-q7)NKJ;ew^rHo(fVBHz^<?aeDU{crP2qg|W+ +tE0{CW`5LlZq63T`4KpRGHPRICx+tb5Xa%DA=eaV-oQ_vOXRJXe2oNxx{#?2>?&V|>N-$E<!g42u0ZV +|!)xKX&opzOX>C<#9K!Kyn>NU+jihvl}<7M0L1ocI_;qcv|@}Nv@ujRZRIn&J;Z)YPQNs$1a%^NdnQK +w;LcgfjAn-^nqWQIuXf<AI|qEhead_@P$@5=98>otmy`ffiU+$&*MU=7jUZAh7_MZ@L8!WVT$>oui}W +nZ%9@aA$r@ztqhAYLo-Dwz;Vs4m^0K)u{KP<$fpOqa^Xiy#RX86OL$xKDIC0sg)T#1UyWvZGj#i@GYw +Up8i8?7jj0$T@w-)w=OE*vQ99jiMQ|?`Krc2CNJZ3Mb4AFZ+w8cJC;4xazTSt1G;s9Ie;T}W-Ph1I-s +NG@?At9J(H9#Ii&g-)32=Ry@ocxkWAHB=rz7SfH_|5&;4_hY-k+0-1Q96@cX*_A`lcz<$Hn39H4>ms0 +fb9Zse6%0ukv^%<R1Ns;u5!_sPewmDO07D*z5U+qjCP6TI!8kw5o2iH)cze6_9{ltUW|JYRukQw`fZ# +W}k2D@=ipd)TUWXAM1rioQ8q9cddxslkykxUI*wvqWCIZfmmzEB$2%8;@#gG{}4ZkBn(~xJ;$OUowj) +Bvp)Lz14E_?T<Y01B)qv+`i1bS)t>-%?V=|O6WtnR!oX;urJCZ650!=$FgPrFi+7`XrOk9UZcT=ecv` +0JDLjqYBBjm*_-?yCZ^I>gm=5eM1*+4pT`VE-ec406H;<<A*U3}g6FdO^`rty#9r8hH?%8XpZ^@;+ko +cuf0a;&M?|ZsZ$Cz`0(Udl2or~-j7}+ucQ9YfGJ*5O_WDyE)AjZX$=QVjy7GAtC%Ok1qvIgnXRIKnmE +41sI7;nH6y4}ITR3L%BI;nwNxp}GBxu1LBQgzj$X)IM=pXzfn1!j$gxBR@OCugc&-8)$=zGL$jceNH= +G`P1TXD>et)|iF$69ve9js_z7RBbvK2RL{K$j$k%+o!4|uijaDI3GwJFBFS{47wS`Q#-H;&&@=D_gMA +mfg&`O*Mx#j!tu3YZI~)327Jz$cL95D^R_03p;Ye16x90hrM0Vc`hLl2W73pj4ocv3W9Xs2Fwl$8`#0 +ZBvO;m=h70_b0k615uQ%ZwJU-w&gfI%ml&VG%rHS?nW&_ro0VsM{W=lHqEDIbJ-q94cQ~Jq9r1}600e +gk<Q*A%p9c$fgSW8d$o2aYb_5clS4KqMK#!Q+jFAyna(pWBCepmGH5nc3ly*r&J^%r!DRqq$jrDLa;9 +i~ojuCUb$PV3(K1TZ!Ph0pYaSJLm^^OVLHR@B{Hv?z|}5zIJBM{7eDhg8NfBPvXqoLybtoQrP=y#>Ht +TUEZ}bR?G9bbgNGOjgcx(L^>^dehB}SJP6br$Ca{MXXSv)`PK5Ym~jhcNRJUrYOPA$tB37770quBrEc +=F$K-;?8MFJO)H;2x6q(;t5LcQsd4KX%)evr5fgV7Hb7%6Dc_QA3+DfN4ElYvBY3|6o_~Y9{?amkjJy +83#J8wx16}BMix|mXsfdmivW(iB!E$&Pnb;fKs6DnLk5;!0G;P6L{DW>_V&|if*^Yenm@?kuz3u1iMH +|i`ce>1;zKXLQcp>z$cDg_9hbc1b82UiNJC4JWotQ)8M>T}lqsCq0;($;aqS~<62D!3>1+zt#$f59u> +{5XH5&9tBBnR7NZ+cGmZQ*}f#1NAMbydGcUAOxCs4MuFsH>Tk`77#T{}^>yUhrS!^>xzZK2>s`hU^Hq +R^Rug-v!X>Uk=V%T}GPtt-3L;{kn9(v)*y$uO|k+IrB$#nC|PGN?H6bJo_Cw+k#fFVr}57^zk0J%fHi +6`&r<kI0P=ZL*Qa_9vGE^Ro*oAI@rJ#EW?*`H=<12VDR~&*c1L@3K~<+L@E2{GICUWY+f$mC<;r`-Yx +w2_9_PFLYU}|1KcXWD%H6e5ZBHlbXvp88DZ1CDWL~@JXk)FCP3+=JVgdxWp?<<?9F+Os2;Ydfu=xsI< +Y|j*Uk*an~$A0b2&gIWj?N*n18~)Fm;Kv@JH>dr4!5TXXr;CL2m<n{s<V+14FK7(dM(yJkF|%cp@KD% +Fa=0QfALpZ%VC+^Rh0y@$M8p9d?Q^l?lR{zRsr$jNXA>DNUaBQ|$Uo^0j<G7q!ivxuwN0Slx@xBn?8t +C8x&=&sT;PnrRrxKWwWc;Ir~$pvL9bD2<wb66>dv<1Om-4p+2FI(Ss6%$DcZD5_`r$t`1rGjwlIpyfJ +16bEMNhXYixY<oAH66WFy*Zal0e$ujeN-KI&t!TDxgIl-(^sa==HxmB(8d;8UxzOf>OGM;0a0+7&it% +&jb_GX7h1_5mqzROE`ONk5fmfXuYf&JtTOb~CVVTDr9|n}$agzCbLq3oc#`PV(H2jV`-O#2arjl5^R! +Jkqa_BgglethzDTar3GVzS0q@SM5^IQf`?%l`|0Ka9d=&n%-zwcMw$hN;F*}YAEJawPk(jn#zl8?+M7 +^zA6He@UDQ+P!1;u4!Ug~Ju-KQuFwZ|zp}p1qD(dOu?U_7d)F+<I?~V`hP2eooBpNs4cC6u@cyen#Ur +iP<YLFbWrRl|wy~IjY`c_qtGX{4B`dX-)n-nsZx(zoyIQ<qfzolF??R?7^ZM9qMAK?5UKcx2WSX%0Q; +lJyc8zT3^LMMY)PmXm&_oW)zDhJ_&^4WUy}Z!s11zmZ*jf5>W|V<0}jH5A+2fX>Q!u{PDEgR{~WMj=$ +BoYRgchLgAFX*pffFNfbMtdv|an6d2J-bHQ21tTkQ92Hse8&mo^0F4cW<G_4pNl0Ah_+`b9^9IJB>;Q +NI2)lbNarf57&MA(TNuB{NeoWlY0)%l!r#!}<xerD7dMszKaKhk5?dH-@xttX?$CpxSLGVRa{e_P&pE +xrxh{G4M&T>$Q>Yn~tnq9q6Kbf8|H^*T{!<Z*U_r$>83PbX0q-4IFd%G0Fh@cN39eig1S^_e3X@OA>s +c3X*NFqbk~>BWPcgZ5F~b#4RNWF)G>a9(=~FK5q}7tpZ>6>8ztW-FZU2_Qs_;XZw)q0h&YLL=Uzc!eV +!Ph;DRdLq7FLU+LpQmLL*LozXi5uoI9^~;H_*M}Sd=Q|-2cOJWCDsNTI1%s>v3vWmia*=oj{ox^9BLf +WEfq-#PJb~ATV|_wxJwvi-WEUVi(`M0F<`oIf)pO!YF;w}5naYBMq3LaBkN&bo{=<2TnNqpz%{GdBx* +&Na`tXubfas-KFT^Y+YuOg&>k>qr&)EfkUQMESo|nwkarg<pvnn$g!g(rkazbJ>ByuHpg(d;W*Xm#X& +J1pOgEe0W9o(aBvmvRz%Ap*iNsa$L;Tw$gw_f-aRsHdceuJq{gr+D2hER;g2oyt58p4r1y+!Sc0tAK9 +81h{mff(KU&B&u>w_&5~C`zX2PZ_#HD2(14y0))4eRPujAkUQ_`iR+1)W8mr73?S~;`mP#ws-Cm$Lz0 +N@;Ez2KO}o06pemD@E<j#rF#`}J1-sY<GRv=AwtDF#M+Cb(2?@b_TmG1j1R-1{XZJ-Cm@fS!gjLlg&X +wRHnBIbL3{Ep!*>cyl>Oa#5++xOT)}MrT(@2X8{U6pz9-1av+DPB1ne!+{n~7$*c(KN@79v~I;7c~EB +~4z|KQ4w!hkO$x6Q&twgBelEdg@>m0-y+ZS-fBhq)6v5Y5@ZRV}YyNFG~A_M3w>tNz^`0pD)vuk7gW$ +N+RM+hte0p<!M>Q#aZQ0(E)1;5EeVX{p~G05#{wX6NS<L3k#rhG6WaxjeAuOZd2wV-+S$t>IWcp=&j$ +a8|bD$_0=7R;%>m^>P6)D--Uuo?2afC$Ry!IBk?5XumJ$=&bTw38U}dbHSx92-9aea+8PmV&=gE&1bU +c0UNqwS4A%>?n1Tc16ee+g1L{&oD(?ij1zOO=Uzweqbj%AI28KR4aK)lPaycZLOcw_-a|Mg7_?MQl5$ +$?JKOtmM+L_A5lx3UKRgw%o6(ao#*cVX?6k^n^JT4GX44o}1vt=&9k9_z+3W%NsvLC>)=n14>bkQ?N> +R&V(k<^{Iq>di$lliXYv^xW`cY8a9k>hd4syI+#+s{i#5g4@mNX27bhu4i3TOC$&Dsj=DHRfl1X*~vk +I`zKwRO=mPqEEf1-!AL!I=v3U?gYj$~nPFab^r9EU@I;ArC6@qMM<W*{iHLH3T-VuJV=ydTF{5ges6q +t9J`>?h0X=FJ7Q)p4!D*dOnDiwjDE4uR2@t4~Kl!*$Hn_pByd(OD->uEoNSFfCTj4?<YTL^Rxjwrudx +GkzxuyyWf}`3XS_ShoqV;>8VgKM{iW*>T7o*2NRa$(ee%4$;D~kZ6fq6mOVI0Ow(m2f2C6OdA-C}!q| +jEY-mu^$<r#$$qLbT?)l*$!FXJ89jMOUkU0kQ&6KVmmW95DxPB`G;F{sAUuX95e)ZA|G+#;UX_cXO!5 +_?%V31eCUy#0;C`$^$z`{CJgEP;d?r%ern`_g<1peTRv&)F}`%>Yc3#;06pCy2JR74w0=3URYLZ?g4< +eb6WJ`y9zQg!BL7dG!MMwO7&l?^p)4Ips5)a0yzAL=zvz{PrNr233TqA!YaoD9kku3o0zOCm|*dV^4K +!O4aRVYo}Va65}I#6Vn4K0I(PX%y&~_%TOG;Cre^CS9t8_yj(?>9IZ_NW7EC3pT0sb|SOUbsR|wu1-V ++S%Nin^%-3h0O!C2J1-1tQBu<$Y0I@Qp5(h7?iP&|b=$UHP_K6{U=SEKxzp*4Z|KdHkyBs=mI~Yu|6Q +4DDym7be5$(=n>uJp^JBU|j8;PRQ+V1ken&o60jpd;&t6~&kG?EgRs;18z|8N_PaZ3IyU<pWyl?a;c* +x8KJ_r9)YHt79ZXBWKQr+QG_`a?IeSY6vj64mG#<@I!J6s6zgkdwaP;t_%M*C1B2P_t&Uux`Amz6=s& +T{K|zp&lq`52n#8K05DucsL-&j411p(VK);@=cEfy`2Y%Rrk_Fia{ZAOifQpXmFG97a^NAL8H_@72vj +NCoepLgXRPx_1LqZw#`ySLv)*)!3{dGE#zkJr61ISgpvYb4Jq9b51?ql$rZ%1<s5PLkjK^3_zZqAD=J +Iy)~&=I%5}SO`adnJWrn58Kjk*SB-pIKFC%?c_yTP0IaUB_+BL&vPq`L@Hes5UwiHE;nfdb_vZ);rpX +Q55)_8gC`!=O_Yf9J9yu+1FWcn@y?{Qnv3Fi<yw?-qW72$*?i|@4<g~V@@3|y+hcX*hqp3sB4m&D|`7 +Q*tOK;;l078x-^m}Vnx({>6e>Aac14KKFI?9N<;P%0yK!}}@LBmHEKfV*VQh3j_Z3kg!&zn)ik->_NS +*yuU<U!(~@x9M1#f}mrwbL??KUH@X!<|0?5#L2vD-=?HfUxwxiLf5C`gJ7MBK{U(xsq4K=X))S`aM9c +cT)Wk%1U5u)s`J)0Xxk4&B2=0|IV&}?``X^?rKL`KN|V)Ez&~d-l2M-dJ{rAa9bRozMSQXJxCyH9;0S +IwL0edc@>AJlp-Y;A%iS(yjc&PSCQGfqCy{C9%tn86!Jdkf=tM;ZDZ#Ju-F(PCZ3QgIzy;wH6wyzF08 +6T+%gyfX;bplWp>$ub7Yj{%w4V~&Y3WagUO`bZ6HoZX?cL~?ZojEbdoNSFAvGflU4JhifM3r+4>oO4q +X9hRPk7i%|3H|@}giJeYuthoC4>fSKJmEB2kRMvVE3RN2eVqqV2a}=g);63iR?$13qHw4S^+f6i}hQM +xRzo{$J+aYuQya-4?v(DeAI2=)Li-BKiUkLLh<gcX%U=5Kidn4``WmYgL-qr%y*@Wht2gele&1Z+vEq +fmr}nlZq(B<s4Zgg>vRNF507s3xfoo2B#CJtRTYq7Gy(zYfrB*>;v$b%j>>h%L2Bnfar`^FIrPZ&wZ^ +ZFcN!~F}_zR37%LZ`eT^tj)1-zx1l*7p48M~msRTehM*qJdjpv5{JOKKjgk-1@nSvq1A#<`UaO0+!2% +<~A0-&SQL2lXgkMt4e&c*e#Admj-HLGm`L&hjr>{tJj1Tp8+an>$CNfe!(37x^cq7?8Ic?eX=F!d;Pe +?Qp!|1ZMbbF3ZI|R_Y_LFH$78zwi7g{R88Nv#hnWxdv!o|o>B^Not)qK4k;A2K$SsLES<BU3+Y3)}6y +hu`9{yrC5nJYU;9x&Bs+2~?r+ZnHQCTIH4+VN~MUUPMfH+QmApKv$ILvjW#1i*tZNgD(-*)F2UjU4ee +krwc?0UR7tif*bpbL!$Gl%CD$`drDYC29I^kQVTZ1n#~Yi8+ax!zzX%{&bL(0i8>Om|=0R6j$Ab@YDs +~LaJ=y29L0Psfbwv6WXV$lsBw*;v_~tp_qS;o12;Dc+}ydwoaJOtexp$s!MSADXQT&y~z<#y5Q4QTtK +jdDR<6n4N`1d)UKI^iBL(8xaUft^x0X5q?>iRz0WxLHq80L`k9f#c}!JobSfCYjs(q={ab>)k&3x%jS +U6Y&6wm#98O#pma*<rSUC@FZK=#v5kX`-`Aj<c#tJL63^Z#iY5`X&`6Gj{%h+Eor<r@bq$JLCpT1!iX +=+KRBTo#HiQChv=ji>UC0RlY$zDC6EgO?N4O`nXO@*BDt5k>@@3UbmzViJ`oW}QPP!%sJv-iu?Uxp>& +nRYHno7Zz($N|rw>AA{0yl3G!y96+5c2BVcH6=}6m0O<jN)lwBd<p9E2n&h07U%F4c&}c=^|B)XFm4E +pgA8*2`U(>qqp*L^=7h%|ZVJiW>g;K2<GTcp5H3*{NuxEPPEcy%TSSh?Ct%tW%2^Q9sIG<hL6ycU9ys +r$d#{s1MHxIIrT2oncm6u{ye++G8N=;+P9eQNzub}q<j71PP;)llc@jyF>l<A7P_eU#^Fv0m9J!(sgh +*fRiNByXK6SPU8gQs0Yo2z5d;w@DLvnu|xy!5XV(Vma0-W5(B)sG_(at93HB6MltUGwv^BheR-GgifC +Vv@eiQV*t!Tv!xKcP1L*B5>KukZbT4zbJsKBiJ{S@y3(@iP1Jga7Wb32L$;YW{1=p6v+zU&;UdFBFEE +fBp8%|N2+H<ErS(<=<KQuX)V=)pyPIJ0$o2x3zskihp@szvXh_J0fH-0{syx#N(q)m@prQFY<6tfs+G +3!Py6qVaK%CF=rng?Zz1WAu6OlXQ0%_BH&|gf<*^nBgqfnEB&-kvx8!_qqI0auDU}yYDaZH6N19A4+G +&d*}KElqcWHuCm+*f_`%QGFR{Z_>ci5?k>jE};5;VW(4&C3F9^>L@VUdl9jqds*|vR6$MEeTlKf|=P` +n<faQja17jMl)*Z!c_IerNJ%kKuafP=dv)vWW)vsG~1IsF2uMpbO)V8dVg#oBM;!3ttD;q9vkrbocQ7 +y1z~hrYSQvb%5d>y#etQC~j>WwCE3>U>#iH+ItnmQclCZUTJ0%Q4;6#+X{{=`I|}%oh2NCgeFJL7gH- +i7`7ya)mF*kbUV7Yrp$(^P|`L4e2#WXYJvosRQ47#3){v-!EnnDi8l+Sti_9<IQ3_6x{&BcHl2%K=x2 +sJ`N(EWAz^&*pHqU@OK{AkDeFscOKY}o)_?U9@vkb7x14R*x{D;XJ%=@7q>K?EYIPF61X0LT1eU~_rT +&oe^#z(Jx^#WT|DJ{g_elVV&)x~f%drN!H7UMU^#e_OyNaePFqz#Sn=x2sOMQ$bh1&;yY@-n+$~9Zv{ +?8)W1@Dv_^tm|l-xyB@6ari;qiU$D)Q_e&MRYF-z=KCZ%!v($UFlPi*YGxC1q;AyGrtiUpc43(@P^cW +2FbIiRO&ZDI)kR>NeYd&2O{aJRYat{7dwu`jnDfI}Tz9KKPbUFDMivoEVx*cI7At0UQKOu8ZlPFX7`U +;+rj>F!GuAL_ER^*Pfq`mqk!1IJuXXzMY#mVb&}6B=N`8P5l)H>d0Gy`^&(kY7CFjOsGQZ(5g?G_4@5 +t*dLWMx%y|m2frN)8<Hv{VUAkzETJM-abgwC@7$>!-mC%q%q=Yo>9iRmG_&cd4syF(buo}1&$c4M%Ga +%@c(oYo3IVl!f38=Ju`ymBZqOjn=Gi?_j!Z;>{@(hhr&X*HJw30Pxe@_i=SHl<Y7r-^MAtq9tb6_@p| +oBdRx&mJHbFO}ts`g%O0;4vm*eN8#OTO)zrb_kM5u8)`QyMm1!P2JbODguK=;&$s)VBIyv=S$lUZ;z4 +sEa%5Ojbp-X<jj@=PN7n(`uf>E-0f85jG6FK^reI(EKyVPDb^AM<YxM`<M~;VZbvmuMS(UeP<H&S^?) +3YB;U45jp=z05*0;`&u?l|56w+!I=}Aw)Evoa?Y@O>?n)>ir$M6OR+Zye=93P-A?On7`9X`-?GE<dJ_ +K>=E>TFA(|vZgGDTiR=seH54Hb0{`%PXoSIF5@!$uM-URhj-u5MyMpA$gCYG;z3Ib{{pbXKsN-0C1ob +`qGxUeVlm0tSek?x(9|A!;5W(RCR4_YKAdX@Zf*vmph7WR-s&eXRF4EC4Dt|B+_ghgvK_@VJ+zvkQ(5 +G&OA53zbI26o@<Y*X@)B&fc50jkyn4hN9K}p<yw11HJBRP(IxJ>lNp?-g7MjWKZeSP_#`keCMK~?O(% +TyYy7M-)({Zp!P4Bi6mKN888_m`jx{HLh<SAs6^pQ7%64!YuY1l`|<_P>Hs-uublg6;tPr>OhWpzG+b +Z!9E0x7F805D~q0-bT~!2X*Y*u^pux$JQdIf8YrbtP*=LZayp{M2fpFWwi4bPl#E+73-<^rfbgFq30C +oj#JL<_lG;j?G7%^=&K1)X*~PKm>BZb?HxRQ6GVTreX!k&kIGWT{oy9Z#{mxYOm$CrQ@LD{wjo2$EcQ +1ws?5x>az9vBuWz(=?f(7lzYwPm7mCOW9|0=u|If^-`2AvV_8~C1f^Ku@Q90zcFZ{=2BAUC++#WP5fJ +If7Q%!qIc`|k+3UA*giMV-KsL|<a#g*46I92m`u59e+<^45`kzkbNAiO#+ZUVT??D|N+5hn=)=f!Lfy +(2qQr%=%2bE2jcE;R<EOG)a~`7hTJhAKeBoXLy|(HaHd-juFtUuTT|0rwO5%ov^1ns`0aI=icn#uFYF +Zg51Y5uMZNcic~bMH5z+O<tEJ0=>9AU@>&^Y%ZZhg^QwK<?@mp*u1D|b~CEzrloM4#h$XTi%(4{q(gT +Kf`+brtm^6!oez|DB2WIPLfP0=@Zf-%LOyW3<u4_DZ_6oR%H=eyCHt(xX$v`TbBpK1sq&1=e_h*H;@Q +s-?B!w~0>ow2MaPa7b)QL&pKRa1*EasA7x}Jj{HqK6#;y*g2!cTAAKOddM~QzA1N(-Hev1Cor%8apAA +4#1V-X!6xhIY62Y(m<vJV~U=v%~JM?s<w8|nxs=*R1tJYq_eeDpr(4?8J8-bQ0T8w*K3a&aH82>cVD4 +zD@lFwNVS2jgGuehvemj}hLHQh&Uz_mmV#KH4YQp^FTEI9U6dj#*sdlRh8(s6TC5)JFiozN?9dviQ`0 +=*uf`-tW2r0$|tTs`L1_LEO$n%SYUbh1Krcu}AE9SsMS-jtYE{*!XS=CkX6Iu<nOmuj{GO>1re2+#}S +(Jp$JS{YVU7pM0>szW}}7_u_8{>pw2>&sGTh*%JS3g}|}Izpe@__`bIoqCn@I+qs+rW58%qW6RGM$-> +AxJo-f?z4oodcRXvA#*-U4=tc6-d|B6co%uRs0{yAe)pKAlmw%iATYcD0_Y|m#%0^6V)~rdd*`Df=S4 +^wlC-sF4!)yQGkn*OqeY?_W_l>EG;$3|5)DZv_Uhb~S>CR-`hK)F3gka1P2woYo-0pCJ@P1$NjXhDas +z4BlKKPs;?vrVQFWM>|09A(JS+Gv>P{;^bsc>OzS$(d^wlv~u^Fn{oy!^T06E^Gon|h1U_>!;B7^6|` +ZM^~UVL=$Zw%sCazRNXUz&u7g&GZ%$WOYEA09>;=&%C=sz20$2p}BQQFTRHvmFyG~P`*|f#BRY31l~0 +3-(*TIdMb$%<Dy1!6CrgC2h-YASOtNX5}c*?sd1S6v1h}oyj+2Z!4M(8@q0eAg%xgU*U0y}*^_#jlW) +ivcQoO#;k{U8p`Z=pKEd0o&+Z0z_ufN40g*;)h3AloF2_#?nOwae&dw~!)P*HFP7=H+Gja~PP*p;()> +>I=b7y+3y`74vH44D)0=X4QrXb<eQ~Rb&&q`?FQ$5D{G{$9)_o8Y!kMzod-HA^Ho_bX^5e+*|P{!N^u +G)2KXgxEoJr0`11*f@G!>^XxK2Ot7I?lEy{%yh(9RtJHrJM@4n0+Cxi-i!8asd)=|D!E=Vs*q5g{gV? +mT-s&r23nGAF8iAddWX&>`fPCf%OW`uAvHJG=n_@Q#_#kc!Rj1-_!9cb$<VKYYFc6{!TcA@4t-N<SCD +whO@Y=(ZB_p4Q_u>g!|s;09f9a=XQCP^pX{I>s@nBe4w+Ktk<l&P1m{Nphc;+H<7I}@qQ!NeP)~rg_q +H<F0l<{H8eS|tBF_4kR>ClZgs2FI~)pHaqYsZAw*M1UoWN^sjobrQEtGIVuGA2Xb=0Z45%;f$!YoR!N +!9<FL3ng7!q<KoOgzHdMl<KW1C`1rO>*UG&o;KvjdBL-{B~n+aVDk-in@upv6H0_Tluf)P^)<w)f|Q= +;W5+cyyFS;*cN{rHKcP$_w6_A3ANR;3sI<fGeRC?*fkLHyb@;y7H~XUN%RvGx;WWVA#E1;+=jvrr3;y +n){sa6!b<#geJxxDZ&6Rbu>hav9}kw?Qo<|k!OMEi^`D{a;eCRLFFdvOoHZT`X$V+Mf1d+%scg5-9-w +M0(?bLJ)B&wQBY@Nz`bxt^`FdCND)|7H&O?O9Jf`gTa=rP3#bh9%jJYyj?%ov@@xP^yQOEf+^z!8aSy +Q~n|4CW`>c+du>*Ytmm@maj9m4sx)5um7uMh!+UiXdQ}g`D0B9k+OQfi8gv?~ml0~EU?{Oj(+IDWk6G +M>afLllO1g2`{@!HBHwtp=*(_plX219^ldzOF6F4}|=ix*ml<|g8|uR%rF*u?nkE|7cbdAEr3*`Zp>O +Nc9!vaYi#0R}E1Ky>i}^B3wuHpIv{yq2J+o(QhD+VAZ9nN1T|d4s`7V&nXm;nzjI+2X%E^_FSb_FL~l +?hCEy+t2o#{mYxBe(usQP)h95{yF}^YT|$FqTk@zpIq>_7VQ*8(!~DzKuCh7aRkRv6d@Rtq8XB;h#k; +T1o^`ul<4CO7Vk+sa*V+4Fes)z#3cGt=O;e?>hLkEyC=;^`a?Vi=LeeFvw7;n8&5w-jEp|IZuF60NAz +(eCi~#7^Z<v^2XtjW8$uyJif}M}G%CnXMxIkg5}$koK}g~liaAzD{u@P(3Pkp)L*UWzp8SI-cl>v_jU +k`H0P>kVp*|$|{UG_L7Q@ql=N`X!w5Lz8a5{S}gH#@&qL!DKUw_zs*wd)rqo<qji`N2Q>WT|DcIZsao +<>(X&wi8D2<`p2D>?;WwG0xs);Do8X@9*Oa%!O<_BtPY%e(V$Cw#x)?ThUq@N3^iv-*XFWqepz;>$Qx +;NGV%){FMHV>`xsOOY<aFW|Q<EJM|;uL<2J%})KBYcx01CG?xRs_eJ)y1DMh9qY!)K#aL_D1S?2kJrq +Wpzi%w`S^ZM=GzJ1FZj)d5%^_@IOV@Gw78!#w0>tnjB*(UC}MxtrpO<YXQeC?bGd*46RSik;@!+iX~w +8cqgK3h3kUfvQ-d^?>TL-Gn9RLJegWQW5lF4p8YtO2%#nO$+OgIKm2iK)5ot7BLzPkxN=V?6o4`!U5w +5ydn0mdHSvmOtA|WP3Jvx-XgbH0iI72}(GGU`P&9lD47EsYlC%9<7V$QcKy#-QkFX@6&p!oESJ1|ozU +$-5KC_$P(&~BD8&GFI=VQ&3=avf9A1!jK2B!u^7mq6W3kH=@g6r8EpJaGjW#?hn#Wx~6T<&`01dz>#9 +SJ%?v(hjikFmFo5krECzHWDsswHkGHSqj;C%=5-P0Ufo1JBd6NoQ^4c$H3nPFc5LI-|YG80LGW$i{Ou +AuE39mFANh>jn>HU;W~o$)Jh3qIrGJ8Yxod;IcaOaajeW6FNXuZjCHU-_azoN9mKP(4P-NaVA6PI+jm +e>+FLW?XHf!)Tlsl}W0FRL1e8U1hoMPWg`D;fQl+YKxGAsQMYlt{0DVQA%HZN)MUD)ba$Z#eC~kY0e| +dpw3!rvl+1gOb4SHnT6~jd_p!%-l?^X)C<}-8T)CecJgCHzi&tBi-&kGPP&ef#RPD4^EfWu*^h#PvfC +)`6PE#&aq`B|#uP*>T83`ERM;#?_VmSxLnHWeiYqN~){39$oF#tx&lq0h3<DXeQ1mjE#|$UWZ*PeE=m +^YBjX*+Gr@q<eHi^JgAL)dVmSM2{@jkso}3&12@%59~$Hm#bquy3-?od6U9k6Weq+@(dKk?qss!^uIw +k4p~XHzLX+(_UOWEO#=wIqPj`pbaZmQ&+b=7g`_TTJ(|DI|556=HiG5+njzmc~hC>Y0J45xO?MUx +DIqX>mk6o%sjO<^=i;TT3y1VN(=i84Rz$0NvR2opI*A`f-@k4XLDnS>k)Fx1Cec#mv{j7zqM$)6QG4k +xAPn25ykudHJ9BYzsFM}R}Wcn5!i;vVDn;1z$IiPN76?nfVYVJ1EPjehvh@TZ!+2SVawYrOx1ew4W~> +Ilx*r*6NmpTUn?5+B{GL&G&Y_%SekIBBNY5x0|Lu;5PvWODT5o8eo4bgum)<-nH<*JpPEFQ~sN&vW{| +BeVI3uP(5EcUR|k&P9&6{;Im&>k2$=f%jNaR4i`(qY7?&Jis1f<QXIodc-5f(o&W5*}UPeBZd0L`xOu +)GM(_`RNT#m8Rru`>aX$dh;jCP1&p`(*56;ehrb>Cc1)Lk?>)@vzY1HLz%geaX{F(_0<j_YoaTtO<T0 +6<weGyfJZxXCeZGscZWXIkd@Fh|ws)80o2wRpb7!vZhammede2{5&)6am<{&NxV4nR;kY(QXyp?FNR^ +xR*GAv+Id_BK0v@gfCbuzQK29Az2bxlC#AfK=Zj_{V6CmX=7HxnrhO*pai3fU3d<Ho&yCS$BXdvYSo6 +_OX{JHI$XDz6~C(q}GQuPMgO$u+*L09LTsAXv&wJfBc8I*T2NXaN@s^oTd|?x`9~1Q&cs<G5>xH*sAM +(DoSP41%iQJxKt|MJBHJrsp)+_IctxrP~E>?FY__3ZI^mdy7Et+3iL}-&kcNSyJO4aW|5YLZmSPaJSK +DU~avhhcR`B1aZ)mEuOa<F|{{1P$blwI&@Q6W38%8C_`gUmIR3i?2X#)iUIg?&u+qs*G;wjCrOf@DUt +wxlq4}{X=pV0?4RFPci;K-+K0-NAm8iu1HcG;>pf5Y6=#`O=)Dk>jPxNR*nYfYtPX=i`&9P$Xm$|UdT +m0;xQx)Yrs5AaTo0LZPRv%w!eJ=sbK(M__jsFZ_98%+xEZ*WdMef%?K{ofaFr1Q?F>KXTpQ?;XfHC*` +S*~5GD;9UbH$&Ny+X*FJBJT}r26YxG%j;JRkWqz#w9hA>q0En#9<GSwZX0BuRwp_@Mi**cNQ|9#Z&S9 +8FP%Y6XZ`<N*BMwQ_H=~4Gu1+GGZH5$f<h7bwjnwt153m3KPO3DD$$-%4-(EzAU5HX#uCLmii)_r{t; +CxBf;E`Lx#jeY-tK5Hbw)HHZ59RsiS4d+=|_@iXOGo}fxjPI)y2g)$rOY5g0$=c8yox8Hr4zY2FB>Dv +*LoUVFjQ~xhJOUkZq`l8ClPc%AGy054H#oGP<#`}CP@BjQBzp3``u#{mA;f+H}9HTLqId}{diSN;qKv +04qnIHFpzu2_wQ7>hV#_j%}d%}idhwI;wec^}xH<BHB*B<TiA5W?sk?KPL#j+z_#rdI{aTrO{hu8=5k +@MK&=AKxhA03V3{mId6V9=k*)_z24^G`=OjgAW)?$pU~Ci$_S$;p3X$;U<d6M(T#>YL*qH){0AE#v6O +7!MX|e)vuAQGUN>3Ln`c{O6X1@DUlQ?~&0|)7ab*WFye`&49MSFExYwgGLAZ#fqj7{umYatf%<a6PDd +Qy!ekMmFdEj-8zzqWzYD!$aCLEFa(ZhczW+4>syof{wc~M@r@JyV}sHDBJl`(%`M}P%C_Q8s`RDTd9* +X_)`e4)*`n<uskZGW1j1WgKgwwWi|Ru01}?UPdS$Widn{}meFGs_FM>`OJ9O1mnf+aMY}&%Fvfxq=0e +27Xdl-e|jdMcJ=;M~zQ^NES`g-AP1b42*Zhtc0(&p^@O276WfS)!XZsw|f&poHl^GH3o_`<HRju!VN^ +et>pUQf?2lnV9lSQRp$U*p8&v49}o(z2YrP);DV?z7aC_S|nuLi~MtORwh;D(&o?8&#ZR^f6I$*raGU +vo|IaO@8bE7_3PBJc7J6bho4K53~36kt+|7j87TZ^9Aph?l5%e`q(lR;lOFNou{|PhBs>x2V72z1->P +y2Du!MMM%JL@8$_U*TVrA^{uFl1I!3kh{Lh<Boy6n=44W&fO&QS)`&oUpX!s^%IDgIH0O1zwxL@unx& +~Nu}TY}q+NF+F{mvxe@#O3{uuf58GX#Q74lC|1a1qIL(fZ2GHr&Riki~GXZi{Tl-{PxYrB`sOHL3x4B +Aq1!JAp!HOidgHOK_6e<Ll>BN!}SNOcQf-@3J--Z{LU;g8c;KG``!g1ZYDFE>)r>VybXW>?uti>$tgu +)o1*1&lAs<eF#7Jg!$4^Fk&cWVuc8kpexawv#1GZ|>~93E!m<Shl$Il}6dc6`TtJsTU8pgf11UTx7qD +?KP#0=0C)_(eB#ha#nFKph_#IW?budI|+vGC)Y}G7A&I3mvt_(H()Q6$)}H%B5Kl|!wIEa|HizVGw-< +D37<2O!qNQ~SXOV%h4hF>s$2CM_@;Xbi^Sf5C@n7DJvv|Ju?4H^X?pV9a#z{MwcbAhJHMEd%*@^;&9U +u$?#vQdbgtxz8P|~sAvyrN=VR;CuZJeO(17Yej}xv#6VkJN1q237e_~+`{BgMMhW4&Wu;Zn;;-t1*pA +N`vEo}D}$o?ZG1Nd+<ewzUp-x(E(+z2CeCu4etoZiVBO+Lsc{biZ{Ihd{vI+}n4y_!-_%v&gAD4n!-y +lD6Dp~p5j(O<LcKt#yHGLpiwCZU)2O?lSrF}yxfq*Cs74)AUVdsuQd!1k=_G0xxd+2h_%oe{2OE1b|} +X3qqn2daf%Z_*uECQf-3SAuSkBt{v)H*mOo6WqvB=$r-+Z(TfzhqAUrqS=ivhCQr4#u@&sKj@p@Cryh +Ew5Equkfht%0%`4?H7$Mg*E_}Bu4!p;@D{Ry`%t<k^-vH_^Tpe_?(eM=U$XuCH<Rbcj&yv|A9ou9y!t +IGo*hj4hW@Bu<RB$y6humSTwd?azyk87#PG|y81dbwvwZ5sflysFbIa@k)iJ>Kr*5^oc*U&q)ebW7*4 +mX^#)D{vYR-4$zTcfMm2EstY#fJG-a@jioV<MuY<C|A;0n!kyAW@^Q}}KSH#~UsCrG&qlr7qtTi&6{7 +ujUcdG9eN<!in${hLQXCgVT>*LonPA~IGDA*E66US?(2Ot@4d5?&h{mPzgQ=<F?VTF69tPK@ShYUBEh +hs#ru>9VT<pFL}5qg-x99&WZDnTo%?v?PoPf)`IELOi^4aDGqwch9dz%59~W*A!QY>Jr(=p({XKa7aX +z8D;vZ%mw55KsT9fq?ORhq|9lHiVA*vzg`9*L~J?u?`2KfEA?iB@iE2~AUr){sczT53@4SWX|k?L{>3 +Iynzj3js7wE4Wn&gSlk#6`H%`?w9|&&zRQ3;S1|!4{0sqdK2hjWPpF++5Q)~DJL;vCZe+^OLAED2qPV +up`-ofRL(sm4*#7D>Buq^y^326K?zY!lTiR8zo3Ghdt943#tOhkSL7nx&vaKCW;;Wi}XM^pFnhU`PN- +7k-z`<s7Om-+bBFz7*@h0*=K$B;>kAN`Jlm5UyiPQKhJIhYg2^kjbMs}LW0#6ir>j#3U99a<&m$D^D0 +RFAMjmiN!lr_3MHvC!ok`sCQ3a3mhT8~L{o^#uqY$;>YnF5G<wiLyH<Z%Nce^&32+Zn8VZ@=@f__h?| +0q3lk_>qCMKP^D9opl+G8Mt=+w?x^aqL$eRsOtvow^!!`5me(G2!0)y;23$6={A%JI!tL<14i09lx4% +Ag=y-02LPit#r#d<&?>YnCVIA`6l5}4b$bs}LY}0M$>&T1ql>@PZT3h{$ycmZoO0BQokJZ0C58&4i<e +xkb;MWi2pF9uX*AL{MJP+X459HU+<F7*5J!A_!sNEqM@93+rioT7S#&eH)-JK4b=Mvj@?q&_}L^F_mG +wg}jukq3cO$%OhD6#;))#J00xOWLfkPqLyRTc!QU45b}=~5F45tgqLI6lE0`pDz!3Gru`E8ep)Nl|UX +d$?ln`&xJ@bhEVTjn?iR4~owla-l^S<|-j`PS(UP{5hzHi|5zRP@hJSys~DPAuxd7z%JM5&Nz>cJe<+ +@+NngUYmiztp>JxKq9?wNu%q>Mrv9eel5mYwviBm2Kfxpq^tGQ#S2KsG6NUuIGPDG9;`8n`jx90!V7R +6=Dmn&cKf=&%g6yG%NsT6@M5=0By8y$#Y1HR#Hdf(_y*?|#3z+z7MLJzb3ZeTF)K#F57=aiXOk(lpv| +T1cd-sOV3Qqwj^1|N;74=iOMinQ<gRvvKhic}CB%9H6BAUzUa|#xFdEx3eB9`@=1i#EzUe|g^0s#@8H +JiJXB2mdMPQM?S`S59uB(MTh=M#4Gf@`Ru`3!}$D_QvsZa29JgNz@eXE6XqDT-OcGkSjm&&+E>(j=Ac +`Q1W;;tJioR|H;Ie`o~kac4|8D4BMy44*7@kzD0_51ez=h$MNyNf&z!H&Ylyta^*JMT;l?GR+KD#Rz_ +;OP&vJR*Q=F=mo;AD-CTOMq2`KD>OvRnxBhsqts~6m&^%8Xz2{vE6eDu4rc5+B7AQpF#iK63;flYnP2 +y(63gv2y*@3zn*zzSpCJz^jfr=c9e+AA!zvyXyViLqxxlLJEtnF|XkZoaCwJV`jG1^srfUVyFAshSb< +a(=QsA@#Z6#1Z${<0l?FE)nJ#7!V3ZPfl>Z7ZxfR4+nTV6n-krMPYYBoG4Zlm+01EGQ^47PJ}No9@In +_|m5s!bsczh9;P1vL@0^b^3Gp%ddc@w+Zet<JP8y1@9_jAann5Z-zxtm0}kudU8<>gjGo*-2wW1ZE*{ +OF`5HLL$G9iT7O4z9x;EgWt_Q7_BqD2mxL-Pr2j3lPudAObdGD7}m{vHcv~Ao{YA`<Orx~d6Y-Dqfr` +$m&ZH6-;4C*`-d0|;AOl~iUw0q@yz?zZB=K{z22AWY`BB*YR9xI0iUVfwRDHQ==QYHjZ$89oJLEq5oe +<j%2Fs2S%D{6yo&D9qmnO7nube+Kv|CtZcLzoF-&N}bUnGlp05cqTA!HPGqH#P97jqzWi`oCT?AU;d= +G3y;cFG*V;y;IraPoL5WjnI(Gk2d=Zmm`^>7C(`K2;aQL+Lg$+nRV*;;e_;!Y<9=WF^YOt(cNvqe>19 +S0uCN})=E>DuXvdXPom`N{Nq|CNTC5ww_@x;xBeTsttdhp!i_Ff8}09Gz4utUE;mGOCi%r*>^^JQY{? +CT5f~K*B@v1D?1D`B1T$hsshY@{ju|F`n-A=9Q?jgIYiIG#FS~W_Uo(XwLBVjDxa!lJx%;DErNE=KnO +D{hwaPKY_HrTf?8iS{nHncjJePP8J{Y&^d8TT<^#hP7m(v4rmYgJM;jGS^h&<%j5?ImqHGvFY|G0WIn +cERQmDTrjE<U$pJifj7-u8-i)II<&r;xwfGnQ4e@bYJmmR~fodW;sJ%N5M~I^+d(e%OqtSRc?IZ`jjh +RowGdd79NgS2d7&+d2*z6=n(f9Z)^uICePYE{b0c-EWuVL+P2{k)}8-4(3g)el!e-3F61PA<G2xkc#{ +|&)ib_56fQ%Gw$hVa!L!unEiJvcI7NHd5oBs;V{hIW#d{^87+N3r!_=6pN07E%A{Wdgqp^Q1T3{EU7c +bx=iILoStfklE?KT6X_g_ODkB{GDZgDzf}<i?4w0n5+4%`ud*K(0h$XA2--IE<mMw=po1JGHwq}jQb8 +fX$#PzxOv2Tzc37>pOP-|K6o(Z_GLQgaLhPZImUnB#e8TnC#?X?tUMPxQoxtuC5EjWiumbt15@)xYtP +!frYCQ6JnLC|OMAt5mu6kjBE#(>acE<n_AoZ!eYe~v`_V0Dv0QB4d60(m@)$Z@eFvM2oXoHX-^sn^HV +-;7=lxIievcK3vj&3)ex|+qm!x;kW(DxL7M@t~(w&#Pu%Hk~B*mS$4}b7P`_7BWFH)=G{qU-+D0=|S& +1U5)OZ0l#lOT^AvK;3`!!9%8rlw@d+&tm>AcETl`Qb~ysHVDdnS`(@(NniR2lhPT#Ix9VBayqb)m@qp +Qs}FtM30qelDbF~c-vT0OFygp((@j#S$|#Z>t@McMjZW*Hdi-g&n}w|{jK>!VEn$v%Flj&{9f+sZ=d~ +L@atD+{${R{LTQ?0P?{teih*&8gh`yFU=+s)7)MA3CJ_Yv;XV$3>}d0ktxx*J6Ae3x2U&V(W#Q?e`*l +dE!pDFH{^Rn*zO}~bXG()PjLYE9P$h;OWdtPsa3#rOt}^))K$!F+DbIW^O#fsbXUJpY&ptH|^rNGC^v +bX!EPNFZi;gZE`eAlPpLxrp6Nh~?@;~BUNOW*<_KiNvjy_%TnP5rtqxF~kX?a45j(r^YUY@X6RW;v~a +5FDPXvx=NMlXD|{&3oB1?=}9WeR>#eDCdJd;ahpTNnPKkmY`18-C5gfiHV_y2Y5g{+f*<uCJ4WoRnj$ +J$!h)?*d=WYSb)z=+hg*j^VxtDE#)IS98}N2z)(sKKT}5jy(+C1H}yNsb}G!Zk_s{Nb#GE&caSh>a#D +&X6<j$Ll7I=xhLO-IRikq|AsY?hV>`q3QI!%ZVCM9Zbbr=6qQU2jo;PRe7%HzuhdwYXce@$L%am6z11 +<+R&p%f?CB}hkY(N?iq7G=f3=$g0<f*q^SwqezspCehQviI+xx;*efWx;M;o@=HLqXmLc$NVh~I=Rw1 +q}hHyp%TpL770fNYCM>DDP~2Q2XCoz`MppJAu*Yn6kisb65BGP2cJRck`%nx(-WoU!y#?_k{nY+AdB& +IG>KrH3dNJ1@5_gP(=Xsg0oU2D`Nd?&^1nyM|QRLgLxbY5_d$d4Yuun*wlz4F{Mqp6Aoz5fz6AO=2j` +n9ekHmrn#S&G)vV+gHk(xJhNG#b2al#u&23UZBJ87pSgAQMm-DVod>~X-H8*r@fSLrdg;tacRY2rUz? +N$dS>?r4L6Fm^w#d_@=y_1<<&3gda6Gu+2S13B{nEm#5TZ(FuW)DLTE(kkf1;yiRb--0YJWrBM&RSOt +#CHugH;(nxbz&spwkomjZIm%*Up7cReEu64>TT&#i_+$T3om&D~QlQU<E*h{!$xA)fB9Z;7vw?C>Ck* +1gNG?jVWQG@hSCtRgkEo1_9sQRtt-{*lTRx|E<T`(iX<8m=xpYaL|$|hgnsK4=piYZZ)KIuFf97YbH= +jCeLv9WjxX5T|l9^<9UBmCJsAy~NwoPfZ16?i&Siv}b4n&8gyC}@#wM2C&*U(ta0ac=)x4G3bAx;CTY +hG3<4v43ec?h!C^8^>SAh=Ctj1GyFx4Dq%Nl3)sFC6L>DaoX<cQ<e~4eaxVGZlW9HGEH~}=D2)|QfI4 +S3KH<^1ybi*puxnzE`zj5UYSd#&~(rD%!Oq9JV_ZScL69C*Z59`vI$^ZwkKkfM9Yy2cduogdy0BN*Nu +th6C^)Iy_z8(0o$doxXS{eJ~Z5KV>MdIrG_*OFr+C!uPe8?H)7uN)v7Pvm9tKzu<;m3dhY6x=ktQS&b +eaOGr!b|s&>ZvJ}G>mnFMgL*td$G^y>+f$Hohk7=M)gTD1gKMeoVK^rzL{)8-f6o%td);!By<W4FAAM +VTq*3D|evyG?BSzPQ^~l*1$RYbjE&#|1l`C9nY@aMW0JUZ#|qLF1JXtOu`YW;F(FtSJxF##L+{Z?}z| +0Y5oWAy%_3+?DtEQXZ1#YSe&(BzDsggCQ)$h*Pf|la!CakUhQK1n9R4<8Z92?TbllmmEa+B=cS}5}WQ +wgmb<>#%9NEP6b0qvy|Xk^W_!458CB~4zB^gtzsCXQV86|R+yEl{dhZPm64{jucIsDKohmWQVua&1<N +9ihY|ji(6hm$2x4DZpta<=a}+M=JaH*boY^qlNvs?=+@DmDK>OdxweT$q_Xms$;TnHZ1#&Ay@x8uSf= +YpG-!xxE61+Mnvv3^JPPoX8VB-oFwq)C>1@FGeFfociU|kY^KO$`B6O}qWGnr5R;(*iT|CRQb_FopSA +A>~fo|v*~_^)rrevPL7^qt?3)9-)uo5>=YpeYiAX%s&Eu<0E??HMqElQg;msr>~-{BW))Ll0kR7(dd~ +6#L){<dD2VJ`J56fE)=Xbx?E(>SvUc9pVrl`pPlAgC0re{`SM12mQ#sqX#8r$2!DEpo(D*&C)$*-T#f +kKY>n1GX5E^-I3jnvf$4U@Q&k1>d0z$aD<>oK6^|pp$A(9{`7rF<QRcE+-RwTShFL+_;Zm%4)v4cGav +P>{Lj69iUT^K^Ec>p^}~yy%L%%%2PY+UO8Kt*$bmx_#^3Wf4&4OtOCoa2v$CaZ-x25Ro&?(#L!J8yT- +Mbz9ldbw(h2Y??pJU6Ow+EHBhjqyd-COcrhATIT3ujYp9J(UQ9QgJ_q+ct0sZ@TKW+~E@}|FIj`(;L% +0n+(0s=P9m{vVx6qfhvZPit3G}}A>ke``SU8~q_pA^x}mx|CXkIhXzONothQh2eZflj!W*I)?>G_ +&I!A7TnO{m+h(z$vVRdxVU=n+h4Zm~6R=4QqoE?kMG3q5DX8(AeFL5%CDYY?#*@i8=fck0m)66brE=Z +8=<Gw5y$)Nb1v3Xz&5|f2PDf`ux8FQ{EngBaae^O-d(tQhB!MM<HV5Y#b>pkiM$R-NOGwD?H}<@n4!@ +qFE!}@P;whl+%aG(N7y=lD*M{R{Z1V=EsEXU0ANh-3t?v#Y_<n}zAb-i*@UmV5Yr5K*IZJC)z^4XjAF +0X%YJLx<HAd`5vkcm#J6U~oxLQi-g5Ynj)4kTh;XL{h)~?>@w>@ozp_3p5LOw{rIRkCH+}}4rZsA_O# +BLAq8c8*tuEEqmQ%Vh;qp+P^9_%E8*Fi;TAFn*`?CH`rNgz?cdMA`-@X@sQYE6Y6g-mh|=}taXs$g;^ +j3JnBIfyr-rgPLKuJ+#w`5F_fLRS2d-2h#aPdN2*2R`?1AZk8?g$y<~JVynBC4;Y1@8+FkDV)6*zaX? +b8?*t55~%G=9Q8nf@V1RE&M*v{IS4NDO@r1P+_{IABWNw%zU?E!lOxP=>Jzhm1ZS9t5(<9OhG**81UQ +3wB4kju@IEKEqVog2c&_#-mZGSFW8@nGDgu2if<KlFfWKTbxTef2$3*hf$0>U27z-`lXHWrx(__+wFW +5?DO-vV@RbK;fKe5=s)W^D%=SP_}9f{jF9H~V5RI%1eMK6bZ3UF?ZVLNjUTVhIiqDeO9p2)`g{2yEwI +fBzLNU!Zh5P(jSnwD6reg~FiZoD;bGN3}K2J=<3F)fCqm$nkbu-28NPLGNVVsL8DxA?v}Ak86w<-Z!? +T5SdmjsguDF?0_Z92%A7w04W2%@+`ZumDS&1&#aq{Y2GGedxxe9WIg_=)l=EU>9{VBtEAqE>aIKs848 +eszC`G?pGspMU`@;0GfkCmslw^)2020dR)l+g|>2lqSSX&iorxTJF2M5p0pFNtO=M}?e^V}#`$TR`9k +V_KTO*!^Jptv&XiGA_&L!~12{d-v$8mxb~q?LvN)dkUba?J4MttL^Aii^Y1mQ7d}9q3tUNF{Nr=!DJ< +FvCQMW)I5?w-HB5m12E-8}Ig@zYNy;NZpaUw4&J|RV+;lJnQ0!kchzg{yZUSco}DD_o80J5hn+ldU?U +hdI2kl=Q~T4)H_TN8OwKjBd4#3tT86KOWi>jtu`1h!s{zDKOs&JO^YUYiafDP8eQTCX)))!6<WczT}g +ViL3El|a9P7P-r*5p+Fd4{*9~Hej}xy)-c#z}&0-(<E2NZ%0vE9Evqsq8-+`mT%^r8<zTMC$lsdh(|v +;)Sb|#r0*9iz3ki4+TQ_d5Y;CWN0!xkh@__;ZV|LDU=|3TYub^Y4@3_h7-SVT4%00v@-Ca^xHpWA7O2 +4j%rm{FpylAtN^ISV9m>nuu^-plH9Akvzd?dx+vweQzfqU}a_Dz;s{i!9@3`uB@A*wt3dhi+AVo6>Nf +HE2kTgXfBqs#L5DLX$n7|2)#>jn(!ha|+ihTxK@_$F!Q47kmV_fENu|8@zhu<_wA0yUza<GCj^2ZXR= +|{YiISTs+*vdY||BuWToFB!1GCSnE@{g5ak{p$*LryFEH}bO{1DzeiF4<=Rcz$S!(I05F!>JvnMIU|9 +1UqiCAH+V&EC~7W_4x>s?)Ny9V?OTIN&K<QCXWyJWvGYzb4ru>0T%5yfMs*-mcNM>s@a~v7Y?uP*S4v +{c>95_3$SmR#1E=K*8`D#tpdrWhm={%%(``7rEjID7sth(L;}aK@~`ZwU%yoOoz1A(^{XrOp^Sxp=(_ +Lk$JUE2o`K(2#(o)I>5tCG6!?!Nu73eo`z_3GEBcKC^{2#i`x(FzzW^-r09bp>IiK)CQMAnPYaodjrI +0u{_ox8DOO!b^J%bcwaBbj{6_+QgPUUnd%sn?82ir8BJ-75&eA5d>dWSl|Tu4==6Oer8$Ygc+&8t>y% +80Zs(jX-7P_Lqo%+=i4lJLA^CN3sZV@TS!L!6;u1yqTZW94ZUXRQSzXtZAK)e#B>(=_Gc*7!Vm56~$) +{S?oQQf4vU)=t8%WgC^27m<K_nd_BMh@0_-;H+5BK0KxS-#&sDcZQ%u&m*Y>Pkg#Q$=bOTz-N*U;{ek +S`Yu$+8DKCe@!Jj}9}d60EA82^c+4!+*;C_Jl4R~h!f-iP1!7ZFCV)(ygZ95Yu@G1AvY9PV7yDLmda6 +SK|EXo)k01bW&~Sf)0aP=1s}4+^SG_rzGcUEti&9Oy=+z(P3&6oTV@*Dw>ohV$zLdv3O5TdXsPxNo4* +HpV;*CbA4}pVZXua3Y3~!q3Gtc;yb%F{w#8v0{x^8*@s**N=Rf?Uf>opQEESV9vx1Z5{lNVY+@DR> +Ux6Oae=2OHIdaB0Rt?A8;L!Fh~?wO-)P<2D0jxN>)`lGmWiYbIRom_OJ!de^6X2C<~64{&}fH&mj&pd +IX6%4q`Nk4PFKY$>H3-8uQ!E{P~XLqRNBn9g~Ux7uEi-iwd~`)>7mq<s!93|K<J|iZn|ZHrJ(tzs*jq +~FKXwmkvOX3&N^`}-N)$bWC$r5mg~9e%{22fnHA#uV*{RpZ{=}sc6~U?_&|8}b<cZm=Ca7dKMg48Uko +VdUkE7Z4+08}(lo)47(pO3LSy(IUSN`-8I*wGJ>2ZCF%<h@#(sne;^;Of*^yY|AE(>H4+K8C7ew-JDm +myi=qKoqKMp8FbR^VSesq~r>gzZr@o7*{pC8fjp)+=LFo?rnB*~8=03PpQ;U@tFi9hBl=%;C&9DxdlK +m7~zxXPZu@9{4GbiWU?-u$Qy>``w|>1pivAPIi7&<{CE=7>9o9>ph_kMLtsGyZcX&?lg5zYQqxBS6Xr +tqGtfXV-H7rq7!32h6<w&j*z4=K<wt8~^6m|8zj9|4z>W^|}pBZugf46n<m1*`{siR5;d!wmn#e&a7I +ea45=8<y5Q)s&k8~?&;`Rj!W|@c+8}cdX3+eI0QTxs_jc58+T0KF(o6M*ynvR_dJ^)4cH>eK<1xrkKr +t)cTuQ2T|AfsigAWyGL2sVNUF8B{ev1{r{x2YG!CM+HMoDi$5fsC&^VVj`F=6SGc$5=i)QD1fG;L_<x +Y06Fd9I2GiaFJL#*wZMlCp~R)!UuNW0>jwWEK`b2_#YDfIrt6y|9#o8;a_`budekB7_?Kpo$nAucaLm +_7@wjMh*_DJPf2+I>q~()`SmicZnkokr4;zJf}TM|EgfRa$yrn*nc#uUsFYPr+k3Q?~TR%~^wB!?Cy# +MCf?oCh!&ERLhF5`$C^x=oXF7#wVj?5&YN!=nDnE`>4ZZ>M_Y}iJ={;)8XU%NbGL#lu=5|!p=_)b)j- +7y20Vwl&`m2JPm?PhBeSSTLU80qIwpoO3WClj=R0{N3h3Nt&9`)hHq$1oS6_OnKEUY3z*%_N(P@qJxK +i<p!5kg37?4N=4On^BZgisi>x_FfQ$t$-Ob5d9wtv}(VXzBTPn-`XVO2mxaUF$Nk{<novnw7oVvh$Ff +~R3o%O;>3o5~$m@#*IJ`b`_Y;)PtfnsywZ>#T$Ljb#W>3E3>z%w%EEe*jH%6Ye@-3XRwEHO*@9K^EuP +r1XukI2JpA^(m$d|QPpr|VZ!^4OCK+1JJym~(kCTEO`O>Ri7k*27S-J8Z#wkgpIOYniYlFJRBI6z>a< +3+)Xx3Y^u~R+8-tQkXa78Lv$96fdDy+=R`sG@>{-BhehO9mz^OTHh^nQKAV%AwSuY*$Du!=-~dOkAAA +@Y2cz^xPMfv#q^s|KmAJJgRn34Cj=&R+dfWvVuGAsSz10``I#o~H{ebf&j(m6J6IC~saoIc$&#g6s=Z +SfP|-9QWCU(8#_~DqyAGC~x|5?owRa;#d|MlUnqRu!WpMX;K5htHywWG5sEPNwUwh;{w(Z?r{o#H#kZ +WaiV+UoNO!qDJ7BzI+iWZ2cw%P2bYFb9YAiOR`<Q7}KD>o@lJk$a8JhP~oksZKUtoyF10}*+lRUuy<E +u=KS{IqE4%w4uv%u|WRnMN5}s2}@MafTb*$#?Jdq)wN_#8^*^y~vEu4t<zSPTbp(Kp=P4Yp$G#tmzE@ +-d~=l`Ozu{k)Lh&eQt4X-L@T^;4c(Z`;hM#?MW<XLNZ+M1|^9B9fdRFtzAM=ywOcz%C0Wx+>Fb8hjwS +wXK}LTb3Ls#<uw`5T`}Z5G*y{w-kwNZM1Uf-##djM7Nz|v&$DT0{d9R6w2GWBr!{QLv3Jka>3)H<G!Q +{$Io(fs5<FoFvItxOnA&X~hOW5_gh;40Qe;t`oYtNunw6MGkT=-;vgQ>|rChZH1<WtxzP)!G?Z1#Qw* +mY*o&tIO$B8xe7jY2w7jO{vBOJ8<kAWGOB1x3NsU7@adpf-**D$ju+4TNng28?`^l>=k;s=J=F-1-tK +qaL=(|W{#gZ>wF@3rM9+HHy6^AvTj(=ELD$LI^Z5eQ)=afcTkfe?tNKYWUe{4=v6cUA4ZyU*zwl^PM4 +4^T*J&E@6<q4v8D0mR;rExP@BCM5wdCrJQg!QyW+aNGX`4aP)B9Gv<w<ASDORWPf9fszRMJFbxT{0kU +<&fc6@8S>WRc+*~|7ywZb4LUf|cig{)&KLrwodFYA^wtdtL2DmEfPs|l{$ULCnM5BT2;0!mU*RC`0sO +x|{e**%i*q?P*S$GUA(|FxlAm5q`D;@jOMIp1_O~$*fI!d>7-;>c80b&@-2W5<0SE-WG0@6w2N^##sC +_nUZK0gP!Ya%0&84RUE~D9Fv&%UdiDbGyY*wd0U*c3c`XeJ>@#T7N;4H?sZ!>Wl%*(v?v2WhG&2FQ&! +uAu!mhxm=vpSf|A$X7_^iL=)zVJ!|^msfkT#sXez{?yV%?q)LawOsNuYH*LQDX&8W(#o(BhOB^q*$3% +1H|3W?!euzp)9?2lYE0uW1Px-V-c-185XZve9TV!rPf|+{cMM&81P52?#!O`q(^E%*O#p-M|#c@zcc> +{rNb{@c>He~5BzT!5Bw|R!B7MZ)0^?Y7z#(;V%sDJex)gDa~LR%)6|zte1Ko*-9?)aZ_0ZL1XQ4N_B{ +%gyxEAiWAJzTZv1uGGa~_K0*!;RXF`JLX8R74Z(T?@2F=7<T((&k@IwTWW5_$=BDe4J?~KQ0A&3Mtgy +C<3BVZU{(0T@#_}<Kb7!A^PAa-KFEB=lHx40{Q56xw7<!#VFhJtA}U>DzX|J#F5ZxV;UG9ENA9+%>0< +3Y=mD9*jL^S95}IKH@n6Mi)w>wmNHfd9WU9!KFXx?7Kjp(v9L1R2NuC?8UI>QXq+uM}56OaVved|T8+ +Wl7m&nj)iUp`I>j$MkW--S5Xp)o#+oj-q{<TTyDpxM?yM+%9O0t003Ebd6``sVi=WJBRF4dAjD2xY-y +YDw<h&cGKnX`z#goWu@xZEY<NeE^A*$<9b8eF!Y~OOyj}B-<>(=&#dn`YsemN2zOo0WG1`G57=a`b+J +E_1hT7Ccv#WEpI>WvIMg%5SFuS8NgzJyM-y0`TlA-+2e0Q`U0Ab6SP`cd;qHmOqMgMsQSIZa$BVd_Y{ +Pj>X9zjG^bmb$Vr{HLl2y;br5{$0B8M|Avj4yu>C^I|Ec+v$CrH?Q-|+=I+TT9u(@uST!cW2<46_+5j +7Cv{!f@nWJ79phqA`lxFb;yi*!ByG;xt2`$d^(eC`h$~P7N5eIfNO2JR7(GDzO=WIba6&O~j5x|DwK@ +0zuNZt{Dk(Ebv>RjDDL3!0m~G77+YBj7ySW>Hz*|m|(zQE|&d{2_Ap*zGonJgEGMEz;F4GkA@MD@nJx +103kseEBa=6-+tI$VHDiw25^#hTS)pgk>s08egkpL8xSRbDFq_ECl$!=V8`QIvcceo*gpEZrk+z`$bE +PT_7f$3O^jy$GRELa-jA{%o26Nh^cyM5C;yr9jbRb6B^pxo!vWvuG{3WH3hMXHR%2xm!!=&p&)8>UEA +-RGl9PY2poZ^?XM?jonc$DE;^W`dX<q~f>7|%`gAbcMn9n~RV57_P+DPN4ar-JU1pPKMbWEk1qV2|P= +WBN~PHIMYXovB8^|bwLM$FtCB20pcXwdQ%!>F;3mIl#c%GK<<5gj>WKVNIf-@Cz>jcDLKDc;o7*jCi2 +oYFSgX@Q$I&@H=CHdmla8PC_sacZ<?tdgyW%?A|cM~RJ>8wQiTBrh&5D<*S`pNjiph(a@z;DkV;;oOp +GxnrY0Vnhi0701u=!7&cvLkgT6E?AjA6Za^+3=fL(=#%JY>a%f&&RxZ^g)V(XO9*<(FZ6oy_U>tUju& +A+pTq@;o`(hruu!*>k{yE=891~nHolABoY(Q$g;yPiR>6+cColJS!#HgJ2s-KUGH%sw`|C5NlA-~Xpv +coZ^i?C-W9n*ZpZAnsb+Th!*Z^Wkx31ucPSAM4?3FPt>`@{rV`t5T>~xoh%PoH5orb!+og5l&=v~INg +*5j^GA@Y*Dv9|lp7~ST)z5&UavSL=LF?OsX5{6L<K6zyKF#QSJCCcTu!Td9YC}EM9jo?Aw7FhE4EG_P +M&qk*tkRdG!<`(m=9=zm%eSrNNhzV8qU><as~y@5s3N+C8MGswu={JhgXrpHiwXS<9Hv@p+M6PIZ$zk +)N_`Mqi~C-xUXB`_UA^iZ;^HRHBc`1ZUJ(kx&Cn9M5RbhcE`&T2yb&a2f10+S+1vIymcf%-)XY5|y)! +=5hlyYUy|{%L@RytGHr6^e3Urfh-xbaBFrV|#`%N9^WAH|CSkc^Yiy_3Dub(*RFoOy0Zq^0%zJZ&8%S +DN^VxG0HX{gw6tQe&JVqU?8d&X!DN0>(F&Gz+IzKKbLUw+d=`z!zaUgmG;&dVkJAWyV2Mh8lBp`G}k$ +6xqc_e<U-&syc2*KK%;gZ!Fa-u|X%y78q+`<RcFyFfCLDUHSP##qN#p)O2YYW!@Qi>{azChSJZWsU8N +xdF4wbKci@d14@L4cIux!$;ExNG{YNFC==a9u>5&42KspuW8O@HrR0^F^Q{epHhYBA3njZ-92(msFWr +|^w(37<45GaV0nhWTHZ<Hk??4Sdv<knrVInqW&irDV^)5u$ZmR2hL3GGr!r98$!guT+}U49qGjfznF{ +!z-0<jjr5ML2WIm>~@Dg|HaAVaexbCV4qwNC*Q(=OLq5Hk5I^OfR{yDlB{@^h>NiuOoP0XAW|8c4(qT +%30@T03W({mN6V#pxpXMbk>bGn020~Juaob-Gr>%k$7xzmW%ie_Os-+P$4^Y>!q-(;yx!sO7iPd3er? +QhR4>IF+rdq@-6By9%UUGl@dXA=@;Q;ZZ-TT`v(c{t*Uq}x5!+1}woR_B1;ZI;v0N%|ffw8M}>>(Cx{ +?#_+&O*u{X`qVd%ea28t=GWAd3l4I2skCz?;!b}vlx`gfq(Y7GDXe$oY-Nz{bdDKE!nxERHX)vcVa8` +)NK3lASArE&mF%?=9_Y`T<ODTbMXVU@4Dme3!{PqiK?}p5ACKYYG?pAS-0|sY<{m3U&FG@XF+H2-*F; +<7y~hx>cyY#xy5~tt<WZ#TLwzNoPBWPSXDgiTcLY87uc?syWJV8@?1kD%30h4QaQ0?2bG^JwHlK&#Z{ +s@G<5ZVD{Ba1I=?};F!*TRK4qXNC7NF^?!m;?{e{7&`n3{LPhdT{b@k;;Tin?gVwEp9n{^6z-VEZeJ> +JN4Z$44<V;U5QZ%Cw#Pc?Hw^Umq9wzVd4eNsV-<(iL3e+a3G@A^-n)f1haeAKlweA@^6XG>HKqr4cY< +3Mf>vH??5)X0wmp<bTOqNEdl)1%1ueiy<J#MdF}4H;qB|Yzxa%z*i3vV%R&sx1mNj0TeDN4HiohFcB6 +1t`>>E1(RY7q}V<Lj*|CeEdC}0jxZ3m<KdfPFaaaA>APMDz%U6?b!i9?>xO5y%K*w@5{!gx>wt710JD +FopL+$c6rTP)K>H^K!Vg{;_*W@dNnN0S)9c2r04Mde?Q5WU=AcY@J^N$mN+A0C466xW@n0cY6M@6=;d +$wy=yI$#2#RhSyx{zpq74X!O+Bch^txWa@Tm5<I-H(dG$gusK!DEkJx%jPNjDsL-W=gKj`^3ZU(W~v# +=E|04Gr4@1PIpMGq|cxhHtI3#|<px!SDixwV=;|D&4nztExTA8@Jn+9*M)b?)J}vXYe?~FAMkJF+I$G +L4YXG_(r2|tm0yn-fRjga&&#r_zW9h68DE~hPwIIAHXxTp=Zx4#jC-65cqS8ak5drNSpWb>JfUp1>2i +tc<OAi->CN2+S}ffA-vQzq>5S}$@L>f{ZUndT9xcNMBn_6_wYRC)<wI4>EyUUZrk%CaqDl7#{ve&_aj +5wGcUT!4xikR+UJ`D#&zYo3D1vhfw$zqG1#seT>Adw&;0Q|L9Q#JhG2arD;~b&^Nw$CIDq^7s~op~uF +HeR8Gl|Ft@6zYaPIqW3>uvN0ipkZZQ%-er=XBA1D#W`8{m&8QWi$3c27L4+9j>p4|rs$X{~dP)wAOiw +>#mDg+K5YO{yhPyqp2j?<eHAv)S^N*Xi|$DC=_{9ZG4bBm7~a2m4?Sk+{-IBE%G0Fze2_uTRcrNEJrZ +;{YA8Ii8;+!tR#KI=tXVe0i`e;~roAkr8Pl-%s*NKX;`_GPixx7BA`2DnrJisite_1-gc@HA$OGobiX +Y-e7D4&S-@@I1Kx0uB*5y&;p4b5W4m}W2OYUJLjrvd4436b+CsDM_u(@DDeYY-?<UR9;aBBVQN`S=Ij +_FF`X-h$#p8dTbAf-@Mdz6glCU>Ag3&zL9BL^@s#R!>2i{OCQbPX=LPOwDY{5L9bwv+W@IM}4=-O7$f +xsvB=7edP`F`RzT4xO_$u$zt&tY}GBShGbQ)Y7dT~rrA468ZaoC%3cL}y3L<7wZMRtQ&CEYnjj@(r_B +lLWHU1)PWYWfku?o;CFm(pPv#pvf9+(^N)<0bQORx!(YmDwDfGH8n#34CXe82yUt<IQyG;~-HP7Ei?^ +C{0B3%>h5%jC+7FbdHk4&<6K07<Pe44fhF$>U9?6p%<1uB<zcdk7RnQOVmy=idFriaob@p9&vmxIQi< +`I~Gsb6-vSr2I2bhs2HM4@#Rl_wM*|vYX^<h>TAZBi{YK<Ud1o;87}XH-Ruq+CCs-;E0Dc3$J*GflxO +hS21~Ki;|a5^-+9eI^Y-b&%{^UQ?&_&a|3TlXEb#0HO)%@Z${#lIDJdv>>{0$hFt?W<miPl4W!kEH{e +w6E=l`R-!ms(N|CR+m(ZSb?{RjgX7-ndOAqkkmVFZPduayf)4D^U5%v*XM2eU!Mn*)QuKz<qw9nl~sj +nn@^GSJ@h8>JgCb4`N`5&a&92B~li-~{YlR-@m97%2m;K$2j+?V1$+eZ4=^6=xv9wSkEQe#<CgZ(fW9 +Wc}$7q}bti0TBIcgkmy~(~2U1XMn~b3Mzr$`joIY;|2<n>p;wQLmGd{tRWR3#e#j8u2nOux$K{uLblz +PQ`pxZ00IOMf(7G1P=5Z*PaV9(w>&~oMf>Ddac;rB<BPTIct;M1)mXmoIU?h1jw9H7+VP|pi{XpbWZ2 +(?Kmk=g7brHMF8h|pdY{B|&e8cG_5YTOhatliLE;_ctd^tyEgA2s>$ZJ!!xdus-A}jt>m5V?^p=0UW9 +V<+va0f5`MVDW`26kg__xE$MHUT>Gi}`9L`frRHIC*S?ELJ7TvZ0W-84S)gXYu~Jay4ZNa#r&bFGoBC +3{|4=IlG-E0cy1e$AUzk}qy4clUS_{glja=b}}a$Eei@{;3beg)1SqZ8y9yF<p%=bS3f!679|VX-utQ ++?-swPj~F;0K?649|}I8{QH5w-S)%r+6dVeD?<klXC4hT4x=(_#5Cc1cce&S&)`=kZik`I9)Ww$hWa` +e=B2&qR&iSOmpzFJCK+N0-DC67RK7S;`b9S|`H*Uscp%~zelVpaN3$Sn3hh3-uB9>ji#Rve`^cqHdn3 +@+>l?`Ml<c&BO58+8j}{N@GQtAcpzyW2s=K63Y}Zfx)Hzb<F1(G6cT!O;53S|Ga)FGXP%z0hisH&F%d +9@Ala4QQ&xq7XH*G>D(M5R7bn|lRxjot#e4S4w)#m$iLE_4z?oQB}kA_WV^=T-WEKZ|i$ldC-=Mp<J4 +n%+*diAC}8b2wxHZ<ttGufY&xxP1(Zp4^eK{^IIxt_R&7^Dv31Ol3AeO$g&L*^+BwlP}ecS}dXDV#SG +QwLk@E;vJhwZbCHDG!yhl1}<+>%>Y43_DQv1D#Tf@Us%{Y!ttDEbFRzJGQho>GRz2^pWuoY57c@aqig +dqs)2r9Oa{x1<TCD!3CxxzrGMAT9;|fdIaq|B)2fP?uIk{%oWmAQd23xntR?>JoID3@=w(rQ`fdX+;N +?Xu)C}$p=9dCY1Hsm+dqN^=r0S?Uo<QO`oe9u?f6*^_4Lx6^^Ox>W3XP)`RbiVF-1yGZgB<M?WAtcwC +SkdOHD~0TC15TlL^MFehmtD4H`(W6Gq~^2r-|GLJa7oPx{Bw)jfM(E0@WR_m@sdX?L1ZuDIPU=GBMgN +>@mKbT9axfOxZU5*0&i<}jE{M5S_I9$Snc1HI>t6yuyvbd-%=92{F6P7aR^!74?+#^QB;BExI@95gk4 +g*T|vysm3%9MQ8B%YA&F>(>+_<w;kP-D!S3*Hk9-$!z#!H{Iwneqn7o->{8#R$toddNn#H+s`a1Quol +!?9;^AvpOh;10k4)SehArmt^~cr96TVqY`;<hVpKF=Fk>hkkdWVnai49@8_l1QEA?U2e<5IW!<qa5^k +q_NfCx${ISR4=zt`lWZgYZkZ84o(3o)w<f&d6n?K#zHLb1_Gk3XN+q<x$7y2sgtk%MVi_ubJKu;=l>D +}Sd9OSs<I3I$UhfaySMUTkjGg=|E%cY{^Hj2?Cr^Y+6JEJBhU55;_?Pv+BlyIf<-nFe7iH5rcU2I%j* +DO=+w`RPqjVce%y?8Sd?ZywU`l&aAvcoVtD8*t`uWZ(Yf*|Vf({-GA8Saov_q(`)^;ms1jy^S=?E=DO +v9X=$o=<KVvc2Zr>(}d<6wOtU+T8asF``bsayyyn=9v-_xzN>+I`lrnjHo+x!lA&d^Q>SIOyBzW3FrT +yboj<Vd^dd1iKPQ*LHHl<T+QbW=QTdk21rHxk)(gv|5JYpMttA>Z^?-CxAbcN+b;4w+4JQEei1VyP#n +i$h5%(qn8fL?<tH|@MSy~1@<vE7{MI~r)15`=yX`v$YJV67cxrIs>wbw0jF*G4BMP*I$27?MfQscC8K +NY}v;b}C@GW8ZPS<S6Zv%Yr?-D%;4l0^V49?uv-GE*C=2(jnK(9kG@1dx-*hEMHV3>tKq<TA;#sLFcj +DwaBpau125&lr7*d7olNC6p(zfANP0M9Mo`z18?c#kMWSy_q=z8nu%<?1s}0exyRSndyf66`E{vNUZ0 +{>`whS^VJeQUvy4UC+cVI*Yl5eke#lKtkeMX)yXGs~|*}ntNEiCbIvCU!1EKTor7fNU!F}aN_N9AGsZ +YBRnW>{WTGf&$#$muVOplCyKStis!rFS${)ZDD#3oYK!*!WT4@oyPsS>*V%Z}_H5v=6wy!Z>$mi^8^4 +To+g9=%)c;9>L;Rt0BR9AjaFj`pt1E6W^y6{4dDcJQBY<h&x2Oqh@d=7$<lncbN=E|7O+;@!3p@{GFZ +T+<_|&z4zKy@9KfZz1_f*R9mTV{dEUf(#aQ^8{{9s9Y^Ra<07Wi+aU7*jr%M&NDI@NjYrVYl@DwdQV? +nrYlExz2Vg5oKYiSTSQm8ygCN6&FQOYMsUvL8D43J6nv;iFKNt6cb<atJ~$y`}|R>>DkBPfdFuBOmXr +kVY&n<*nhRVZF2GF&`S!J6xQ_%~y0TO139&f(=c-6YaF@Sj8nP5*ZJ{Ve%q}f{}DT?#-?YR#+3qJJL5 +P#AwuRRtVmlV!ifH;RDUhN?fT}*qxl><<YMwxuQ*9A9KqceTCQfKwgsLbY3P3<$XxJ;<sEsGo5m}!n% +en;^lrWA}VMDbjMz^>lr@z@mY8*+&Rv#N}rjFoEuWWlF7Ln&d{x8Bkf4-4r({R@_pVb_X5*3Lg*f~F# +n_l{Zrb7Y9882>GqJ2nhPJLhu2{YTFh8IGoF=?^5Nzr^I7WH?+1T%EcCaj=B|H|Xn6D5LLWIA?}}*hN +!*bq<p$dx(>-jy3ObG$jDR?9(Z}QDFI+@;gLaUJM(FV4bE1NtP@z4+ThxkqlQzLO%-gHl(~QU6&5xyH +a8Lv8E-J?M<vFC6g}hHCrF(}&6O`<tzYye=K~=i53o47Lb6Bi6(U{aLGjl!H82H>6ypOQ=icsY+2`r@ +5xU3LjdGH&b9|SvKi~xFdZEMsWst6>1m+tO!jI2PD(UoaX+1N+fL#sP763bh>%-Lg?Jf7|?JzmE)A(Q +ekLOR061oK1#tjd_{!Ef@kl@7bp7Bk<1xpj~V2^Fr20Ttd%Sk=kZ1_z_ORC9!9nH-_D-YZIl)3{o#wK +bl4S3jSmp3u4Kzv%qY{}aytzvCkRq4WQ#FA1d(gk*36ff0t;UP$I^)#7*WQAUG?o)7j?Ff~T}E2co7A +{xG1mnlG-kAt4+FMWSR|0{Zv?#FNC#0^Lg#9Ig%15Mlr3cNm^0(XqzU}2z~h=PvE_;(aBFa?rH>01hU +yE<syj^5pz7|084cm-oXGi8{*`y(T;k$LMc;_u6ENMwT!peyq&wj6)xU!~yMF_^RdOY(nx<#~=vzvpt +aP|03fyl}SuG<@~W<$(D2lNkp3CUwaDzz(|EsNmDbFOtAI--<v6k9_li4kvsnD?#daeZ+_Ng9mccw|W +%v)~8ZsyWVbla`~TRstjdw;m~&nDSofP03E0L7oDn~+KYblk<d57dq7M92G1VfWgknxoN57I|1!$shw +3AcLSDffwTc>R4Wy~6U;9P>F%E)0fzW>z2SJ}e=s$~t{{1HY2?zZ>Ei34om{qIF6o0sDg{GaYWX$ob6 +P!COM}c+r7(+aWM~@#&G^^-TdFgC>fK}sUbvwxN?`e{t$JfM1l$^hMxp6{u)^m$EcLE+_&Rk2X`mC8_ +Wj}52p3J1r!^?qac=}P@A!Nrate!8uPLLX#305Jziifj3`J?u$WkgOBdi8rnrQB;6Ihgt2;1jzb-E}d +OyV67G>t37t!5mM_E-Xq$TUK>UtDg3gDbQVOw*7}N;FC~A>g8$M`-wKMYe&V=aEg%j012iUUAzW&P3< +xU#lfo6IGOg(XCig?qYm@Y13N}|o#&+}6^p1!VQ+I1Mj<GygnbHyE2$gLtD+;ZSd9a+?=hZCi**B>I$ +J6MAuMWMWSFdKs3Y{tXq#JX>P?I5^2+%jLD+oSxta4kB}{zAF)}vgIx8~eRuK1c(dC;&2%gW!a`3>3= +ZaEZvP)N_p*ApENHh&~=M%LHU&=AquX#^ar}-Wm=SFWrM|C=43M%X=jn*l3^4pa~C8@<OzECbz9Wf90 +Xh1o$UPO)2_i=<<14?F!!Q&@}S^eh?IV`sn$$Y1MM2PBNH3Z%7_(wh**k-s{H;oQ3s3}eMBoXpyp9y1 +V$_5>EmmDRI&g*WEvc$G$wll|Sx18^Uob01E-ZQLo(6NQWm*fV~M_9W%g8Iyx3RVblrqtOfi~BvDubU +U<56pzOT=76BPL{~^bg_O0RnU*93eE7FC6it|yrNUEFb&TJ#C4vpgZd{>^?5Ax)xrM+R6)O03(yFu&1 +dQ{?QiCIqhX6>)}4OmhV#oDM%h7cB+Q!^C^^I<&6d~HA1>$4IiTEOgZ(vg5s`TbFT{O!E{kiMu-PzTS +=(2A7L8)S)6B8B_m>@HoMSKa3yZ&ZI#tHyf^hbR*LLl6q?ny+Sf%=KtX1E`mC-CXygw6D-Sq@Z1y6Kt +bqG)$N<wxsPnY#-2UkMhzC6|_$}3~(m)*KxT_|;2zEiu5w8#7MY)IDb`zNDa7sS3myt+N(nZq1%32xk +7r4vkdvGPLf#8uDM$;!HX)G3_-#D%6}-K-r&Im>$AVY{lmhESj|k>DB{w;n03r0rf>=97A1*PUtI)g! +ihJe%dZbiu;4y{|rK!wE`kw};Qq;^Ady2u*mY@ldas8NEz#_FTn@XqlsB7tb4&JO$x?dX4*-rR9Q;%X +)w1(wEHftUZPva;Kmp8DdZUE|NAe$`89jAGWaXP2JgVcE!G0h-T=8y1Sw3)!S}QX<m6nA&KMG3*R0F4 +06)BB}FzJ$xu_<L(Ew4`jCp!5S|Gl_g+Qep_`d*eah$?JMM2hw|!ua;*#7SPj=uScBE4xa041AB2--G +HeGHKHF`#E8EnzGN`H`<cK;*@RTAnpX{>zGpZA!Rbay#ldx+Q|wtcY7gDSem_<}~L+gP#d>+}rU&gEo +T{Q2Z{)7*zw7bXs^mSX6#bBwXv3y3s9$TVyJ9IlH0J9AY3U5oz-o{GQbq!<FHQ5<FP4Uf_!N-*@7#5y +Pik~Sy?%5QK8n#ngLNX2j7XA&f%n0GTdVDzW{MSk59Ptb2|(hN+`0K!5FoJYPHm@^n;pO811AfPFT-j +hBNNLx`Gm`#4y5+4Feoeg+K$Tt>)<Sk+q6JVl{!N6Yd8iOAG4LB!n*;6D0aCbw(bPD>L(iDsUZa2q#P +$p9EX9Tnef0>d}K}u@=Atj|cye`r4^#P{RzD!BQ{}-mDq?Pr*i;(}6k^+SFAocQ5v_uU-oj>5Gx*7<m +S*pahnk8nG`FupWIS=Ol3!(YN;Ji<0ZvF(#ZSNx$_xGjFg;Tj>?MJZdk~WGqK*V?yb}SFq!^5V-GTgk +wWj)~*qV#fU+J>FxiQ#(vtTbb<?!q2>2+taBM8Q4HCJS+$#*(^H^oZOlSEC8ZXS%zk_JJwofg_jpR&h +v>He`-si{xb*wmSULN0nFQ-(Z%2F!v^jmy6ZhV;I->$Csog(+0bQsGyd7MPnpBpIbtxY{oao;9;}Qy* +)H>55F`CHz%l@?bPddUAd{XXtx(ZK^VicIr1?*M{a%Q2|F%9cWYMcVU-U{d+OubN;j@iZ@x(Ep*ete* +^4)FW4xnUQoK}StuE-?)!pXNb80=Q^|-w|`ffQco41lKL;I+=NIDBtrwk-0csOJumE31j`gP@Qzpy5Y +ZB-(xjHt+g)3ZGhX#7s7i6*?2YzF<@GyWeQ{3j_<0GOb!n$d4x5NdtOqH`{eTsVJj=vIkQ=?TTf)0?~ +f%R*p&9UX59EIUV&1aFctxrF;^e%+5__^^p%iE+dZdEnE2s)Fr{C1i_>Labtp=SaM9lR^z#;R}b;z6m +1i@Jb`ZaSbKGICJ8!wl0W-Kw#s=>;ry96;`582qHnZn3ssx`BW$Kg<fBo+>rBYGLpko8`phTUC;U%ZA +ny-SA@M`-r<4xl{wx;FQ)aHfT6Kdi~fSR3Vazi9LNwa^-LOEcYKsG?QI`=K_~D;v6XO0?}sVo4!eiS5 +>+Fjbx3n6bk>62O=hK(WVd_lGGRsatM2e+*r{%_eb`Qw4o^aUlAh^B5nC<Ro9%tqMd`HRzjFaSwEczn +C$%TX(f?=MHQy#*zm^{V!*<xs8H4WK&4>2g@ZSH6@BS|>^y#Pn?jk>WaGItF5{FR+Fy>(h4C7yR57Q* +5(E#TNgXWzK0iC$v`~Uc(v=oEn4Ircg^JQNrmZ*P)5$NQB->y6jL1Pa^fh-lWxl{PfXcvM4Q<VHGWI# +s|&VW9j&CLCV8jk?YL}Uo^RA>q$C88A6rP8<XdW-;2LBA*HfS4o+id9q!wgXAY1hf+o*;~9a1SKcHXO +w|4UgSOUMlyfdB!mGbBl`S3v6Q}E5xj(~(N|w4mNMa&CZYHEYsnhlizvQbr?RvfHv3WMe|zs_a|oMrl +EFak7KwdxT9Cjp@BUoifMS_>ebe^dB3<_R>2MG4wo{^vQ20CR(WkS9z7#y)+`R|?SR2|LvKz0aYY-nI +k>dAl(0gOa(O=9Ho5lu4zJU_Smwo(tF&0tyhzEf~=HT1&?LWaS|GSgAGX&(_DZBYcZQlOf-s(A}xEMV +B=|ejYIU0I%d_s})ZGi7*2mB|Eb5+t@>kEeD-;dRusuLC(Ll!@+!;=~V{M-;PJeu0<hVReM-dstiMr~ +-35+z)2ScpZheXyNn?Rlxk^<X@nYYo5T_{H?6{Y!en?Dgptyzh2_otReC<}Mswp!@BqPBKwknr68$<D +G3OIx>dUO3DXpmh=ggR4QTxiGwYn+HORDn3NjS`!!lGP0T|)fy(|_VNyUCH>m-uC(q93isWL^-Dyy@- +~dN$S1kKH?NalF1>$mljR|+!)lP0<5P3aU#_P%8kH9}FbI^-@w@`-;rn2pQGF6h6FHdzPl%y(dybUk2 +#f0~&ujqA{q~{IV*K~a^?d!`BOJ9SdhEoJnTXv^wF!mP1-rAXGq?vbLr9QOsW|#-n*yFb5UhaE+kf5u +81sPZR<Gpp0OD@EPelSNPqh4#R-&?XRUa03q%rKwMWW#l2=bewuB#}17jtnM3+VRC6I*E${Yxgn*E#E +#TZB6bo+Ebf@deud33m@yJ$tSwo3GnGEDY$y0$=hl^E`AJo4jvycI*g05W%Y}l7}15$b`Op)QE&B-y^ +vM&K1ieizr_sc@XsQ@qIbIPwfpH=&`{u?BkbuN3+F2Cc`xh>zkku%<JGRk+236T^SR-cf<~4{aN?f^e +QVVU9oy^Dp7v(dKs%#f8f@q8OS`>^WI*m;Ysyw@toKddMh_V~4f5SPF1+fhntkRge2heL*~hz>kM0Fz +>^5ioTLj}K99t>f(<d`ubH)DPQ)R(w7TTQM-wH>3v>>Uobv3w<m5#8;TWP^udd8~_r|K`0sj{^Y1_1y +t(BDQdxyY(qZr6NEX+0b(H)6hKvJb`manTM)S0ROI-05h<SYdlJheSPFr_1fm=#Ab7G4-$uds@hL=W$ +V$)qWGwshDsvq=ZR>Q?kd+^UDmQyG(He%As*Ax@Gae#9iQJMR^lWvn=&q+Mc}d^)$UAJS9|n%tz>yce +fW0uY<mq@}OE0Lqg*Cyc;vNv@<6O_j7P1(DKQ;vdoV4gqWH@nXGptB&xFa(4DaHKr3CQD3cp=n}dr>2 +}9+QWPG}Y)vF%YblM@M%N5k!6R=LQCsn;IiCx~)!GfW9VoME6;zuvsZ-vj^cl0XIQ<e{8p`M=T!+}F$ +JV@ikI_>CN&E7Yc?q$j5{kbPo4p2xgJ8W7?V>x5$T%4ACceMN=DaSKW?tJNlmC^K2BTH9yu?O#QRW7E +QgemTlSDPt?6pXt0L8Yq+>9+Ym5%;6^+<d`)O0e<HAvNVa@@swx905anmTl?USq1%YysXG({;tr0$q= +nsHLi5d($vpqyL+XVN`G{>y?|)yDPl(Spo#iJG9Q?Bh4IR*GeW%Y%S*95CaBftv6G&DnDfuen%$7Bvv +{J2Z&TcqG&NH)dGP0n#bNR_AGq=w@T7mvu|&S3)nm$_?s_dAjn@j(3vFR7C*+KOBt6H|u3MmD^gMN0< +vcGoo1|0GjA(r6Ddec0r-`MV+Z9q{bmr;{rLBxxDSXdy#6_e2L1pr9fia+h_}>Bzf49&-f`;27KS4vB +At)515e#K06d`f+>*P)fr~y(ORPm_n-QtshGT#RA0F}wRT?nB-<qiw~MgK<83j^qjioqHv{uWWh-;xp +0n=l~)sEi>%pLdGB+l*4s)eWN?_WKPq#NMO`Q3UFgfMywfQ@?~@MTP{qBIeD2K!<PEm=sK#0bT|aERB +bt^L^V3RKGs%0BDiDTcX~g6@OiG<VyfHZq9dTn50qmqNVOk<};sPRRBQN5(Z}SCs+tjA@pB?g#Z;o{} +osWP$BdMER-zR_yrc`%TZw0pJCz0Ht4?s3*RH!{}osWP$BfUU?E6BtzWaqK;LO(M1Q*bg4h=Z+SYWp` +2oEywCcnxWO>63UN?)_amcc22#$LwbzKa4a8V&Dz|~`%w<O*e9#Rh1ZrIV%cnVj^xxyk<#Mnsb;ZaTu +m}6elk_Y>_I{TFI*x&h64)JNj?Vd*kCXc1Dy@fyX7wh)zV$8(qi7<}y)$>{RM@3ZA^7z?14E;KB^lL> +Yf5=k23hmKy-7-HoyWP2hW9vp5@cV-X{khTjcY=!hmP9JMmxa?c;?L<0mUa&9LRGRph-|UKMUw5oh*g +U#CW;b>U3uh)mJqB*5|@;C&(&F>UL?O$XYKT$qbuk0eYJyf7G8;SSdOGg^~qT;=W6V0WQRXlg_my+xL +x|F-e<(Qum7=e7X81DxNY=ro9O?-a=#ktzqizn=9)xt8bv9b!7&2eUNGWIF23|l){7w^XN`oQtzt8^# +M_u=Z$rI>)5wRMZnD|jFU|E9EN`|Pq}@@F_fFt{VJJ`{%5Y#i!K_aLGUQuezlHG>V7UR|IZzt<ow-Io +Dfq~DLSgd(^jl~#dNa-dqGA%*ZR#ytL?U3yCw%vfL~j}$Gy^ez@}4RJv3&|ScQzNmARsCK*X^Ma3Fd& +A?*fdfKV19Ob?Ef;WeeE6S@2);(7tO}fcWh*5AA!w<#vl#(fXF$1MQHCBQqfT3ryGdkynV%=M%79D#$ +;#+-7k<0`o1%o{yg$j64CN{ppG_kIihIKgnW16C?ER7RdLQ>W}&N+^fOxjrvJ+3^YwZN*y;`YdyZx?A +8l<Zxp_7{OS4r&f`J<(ewSC$AkW(=leU42mNl4=&L!Rat&(BRL*WJTpngEqs{XU8E|%VPc@T8B%{07j +AG^OcE1EuUSC2Jxt#8T#f!2)yl$Mv?aTOfu~>VcE-hPbrX_>S^mJN0O0F8XS=xyjnXYZEyG&k1jLWDw +z9{3oto@Z#FOr5mWi)edzQ?nVKzqeY2;q@}Me8AZB^FhPa@XpZerFz!bgr_lT3*$$8~D?DI!Ue>%)4$ +y(6ekkMI6(IA(0qJak6JMjn)%+4ko!j<wuNz`>S}y`dxphXj2KRYe(j$Pu&xmNm!{l1;xDM$V16FR~r +h0?0$>lQ=LEbmnhsky_<^hi3vnk5ZEp}E~g`1!EX3c?Ae$L`Yy@LX7*d7za6cZg(4=n@tks>h7u*CV@ +`M|L20xXjP>Pwd>(ITix=J1Vc~Qi+>Yp=B+QX_q@2bs_x@!;a!=oMg~1=FgQI5AFiNrd@g%~fE~W>vE +Kwy{^P4-QFLlpdswT&p%>`g<^*T+Q<wK|QA-<Kl%*t1XkZSZ?pIEjp3Xy+wwlbM%jIT}`-p{yrmZ|dr +J+f?y5XFOS&$q@fp*}zRPSkY;Ubtgv#puEIqalvrBN_PH7KYdJol`g3H0Pd@MNU4Qo|DI46^^?+oC)% +Ts*w0dAIry@NWQ{h4QGb=EW&QhsrRYA8MT$~2#<E6y@6HA5vO<e=b5XzEFi-xWN>SuZ{HPJ^Dn^|?Jw +%%%v|D6;e$68_)Wh>_7Tbdo4<y*>Q4`6JeV0ugzMP4$4-&mG+kT%++Vvp^Auv9{NpLaA;t<>ElgGv4* +I)>|HGjp?hK7MrSm<amBX%DG?@x+vE&6eWViFTxbvRUwoBd_^Kg3Z?8B8Q3#NeYzO~^y(!CXX0&*Hmx +jg;LF7CH?@UXLI8eJ0R{$L)+T*Y-pwaayX>vVs^KiT0p9^BJYSW*Qm+dgD-DArkVi83s{XQ`T_jPdg2 +Qg$3|GIn}np3#0XPFa5ClUP_4RL&>iz_E$#9kYG)@C=Az?s7}C7m`Y!p{WvD?~tLM?sMjJPn(#zHtD3 +L{);sAiaOv9Q;ow(+xMd=tfu6w&^}7K*Kv?bM5M>(WMkagHUxHi%*d<U9jfI}<GXb91|tx-SgTDZzp| +srk3B3so67^LYo<<wmEv7*N{QLs+vDjHCy(6i&jLMDcu4d5>oD45FP{!<>>dO0A>q@7^BX=D8|aWxve +(GucscFo`4toA<z5T4_o~=)eRbD!*o+r=xm74;oAj%wt-0u%q_ugHK$F7(vZ7<dBLkH=W=-Gj^PVB2o +UkU?-DlO1+QaNoL7e81t{ks7U8uNcsl_<_lo>1;L<^etu_TYedBE(#;S#KB8tZDWX?^8jU!|{#aavi1 +-}mAXxz)xs&AW-WXS5|0Cf~k;ki&?k$6u1yY#0*V2rPRuj~;p`cG%4JcB6~-{zZ6geM=v_%a4y%yhPo +2VQ#aA@Gu262Y-PP%SF$^%6N~)-46>@uud5{qfbfFm6XTi-txPD!k+qfVcI_l@c*-G{Zr`pOPG%#fX; +CHdy^D_69j?M#8<eHU;s))(Kr7J_8zcC0CbFD5EO5}MhvLlY)~)TKq34kZp33i)IuO2yiO3%?}5IdBZ +31!7n7j%0(&=#fDQ`e-L_1EwaMT0aBTMzqM)J!Xr&XtB?Cs)W3VNqz#T>eK&3#1`^_ao(_k)q!-~XPF +C%$VMdR;E6d*v10c{NSo?Ztk-}GOG`86mR-0t6Tqs}++d5Ioe;QcwwU;j^p`CIh;`X1&Z{|@tQ|N6Hp +KwpRYuKK4?A9`;rx&8l%3J`1v>Sw4w{8#~!{Nis`fxZa$p+B+49y-S+_^Z5sK4+L!@)u{)F3)#)WYhg +YzGgbAp34JkxC&VrEaa<EytnrmtKYb5y~Z(jePOp<fEcU9(YdOi;+aE4Ci7>-+Zl+duGt#w13gC$k6S +fC=avh(3Ej~Ld44@u?GSzu?n}?ZWxAwrC*RjFe*}_@qL)Kd?}8KbJA#p4!~HYer$j<Ic{m*JJW_d46v +X{>fr#pNbH%@g``;L5E&f1Myms6@d&E8k(Cc9j+R2<x*F-*Z!#F0)bBBavEI$>~SiAAMoP>S01lZNgf +k5Py<_!Tu)mPrQMvy}{!e|;wMU-JUGwW(A21RP_tC71c7T6n(fUZ+;9kd%+65Ng}nr?}me^RRdpnP?T +yaj|CKm6kT_}eFi_5b+8CVyq`_|Gixovq{RBYq~zMktCTNrYl3499T>C=6{z8OC6QL>L02zSOMCfJxn +g;uHrVH?Ys|Oe|oKeGAV4(V;hk>|6HjYt1?s3~`X}3C-wj`9cItc_8n;IOKhWgaD~r8hIyOvA4$E7Wg +B-Gs`hZ+HTj)(swEt266pnsKErv<|96gI}EHmmVD#2MH!Gyh~K%0?N+v9@He*yAQpS81Bb~wIgtIG!u +&6yz^0vs6pI_{jQh1?Mtj@;6U(dt!g^N_^9_A}gzNlbTt2B;J+yA4e_I*u&3{#17jb3nPwr~I`XH5sB +I(!%n@#)oPUHK|Z~MMkS1^0=DGJQaA8fPM0{yhH<P5`MXC?ne^|d5QBs0bJytv^x`Ob(92(fjCbB?9x +ZjT^-vW^{odW3D~=RS7%b>F|s<IrE~5ow-6DyKv6Y)8rHsnaPw@+TR#t#Ql;TZNYC5uFaCFo~P-Sez= +t_Wfa8<x#y2OB8Bw9KQC8YkIbIqr@SRkwHefY;xVs=O(0rf_!pvqZhH(^xUV}78mA}%7*&lG%ND7Mu$ +-%b#6!Rc0b4+kI7fj%tq(%lx;(`7Xb>7F>_J}X>20D((agHMbdN99!4HE%CjLz@?K8*ZkIPlYqNUSBH +330)*|Fx%?=N3hV=H?J~fky{8Qm5FGFNwe2<2&1eJEUc{fgnJKUe5we~uPLoue*58BFXUjLG*XT_Nzg +f~bAfyvihk6NouFP`<NPBORpsk3WI+GFkVcw~lZDR$u+zRc7aH6g@kbB8M2@d8y;l#b7`xJAj@4LNeJ +E-zez(eBK6#Z!9u4L%iyZ(Eh+*CtsmZgFm4!aU~>g`Te{<XqzUsfZX6Mx$!oki8k)q>{mqq_Jz<Iz&f +{cP}n0nHXbclR($F*ICZY@7f*J?YEC|KD~JTcnk9SK3Z2Y*#4VOEV7T=@Swt>cuh74a_^efOWN`-a~7 +YXxNz38Hs%7nh0flBn*Q^?3(q%HHBNB0&kRl>ZZW+&r_F(#El*eatIHg9UTmfMY=zgEAWqqNEsg#P4Z +*_OmwFPqIJij85=7y?)Sj`ptBw(sPneucuj^<(u9jEiY!ItQq6$)bi*?)Q8mEwvXIDu!=!5ur{!||Sn +*a4r{dv$wDf}nphbdyuWwo4&ZpsQ|S<lO!+rQ+*?Sx+mWSt564-WpVc2WMiJjkQM)V_X%+L0AIP3nny +wQff$9zyLziV2Q1=j+{{x|5pFY&Y1^5TD~+kj;{FMJ~>6j<G@v<OifKIfJFr%hp1;_9-^S$spwdK}3S +fNFG*`@-a;0Uc=!uG^@88t^C%dnP{yEVGJY!5yU*Y`XU^H#x#!RsHQ@xWW$wPkEp)^r^8SmRi2o`<4} +A1mvA|n3H@Y5L9`qCp_kCpyRvcv^Hbp`WhgFQf_V0AIif^!rj{<|q*o)Q42~=9?vjkVd$sucp!4tN{j +GmKGbk2>e%=whJz;z`pS4|!l<B&+;;TfnW^o;I0zVo?y(8&E`{D-79o=#{7<eUyj?%ACrzHKd1*;jZt +ICtO%CCI5%df|!!B{TQsK;(%_l1Y;^FtIK7XA{SCMI5ETH+A6+`w{c1{8N>Ca!5vEblZ&Y7`P1y{pn! +_ofyoLQ!0EzGCO~>Ag^+Nu`u-)!mA?>hqk9P|q@ko$cMpWlIizokV>n*N-MR4^H4OuWHptzwk{`XT1| +)IH??o*W=MQ+Guz%%kBwjnkS}*T$pwwM<jigsgKQ2bFdbs>#2IGx)d@CT|P}yi>oI`FvLroT5J1ih<V +mhHbhsna`tz+?j0Qxz8bZuAVHN73FCX`W%tm8Ot<~s>_l6A9gDe%J^#kGC{oqhET3_Rxb;hP=R5kUce +YE6NUmS_CKWh;(0Y#j`*6%u9asG0tUBo-ef`A8FY^E$ng8o^--fR~4wky9O+JEIu}!*ROp{+A+JD=kp +RnyO7W@&u;W$j=7*3EV0%J6R(+Exijt+R+MBo^S5GX->SwIgNph>cY&*)oin0e!$j0XLbBm;05^Hw$@ +X#n$3>`Mrj!T_z&_?x5y2XSqbf?#(8Y|%Te1+^U#l;Sre2nygC2#B{`*zX`5=&gi7P>jT&6BETj^?U< +wpbQVc!|D{2e3A%^@sb&+-5~GU4+>OM0H6fq9Rv`Nj4;65u|?Sg0VvrJ=3jL3myvY{3h3$X6T(@l)1Q +R{6$*z3Ye)3Z6);KuN!)~cfJhYjAruuH;olXQ4G$?kT)Tnys8d%gwut5v>ILq$9k80&4TC^YV}Di~r0 +wTt+#c)ATy_S3{RB_h=Lz2zbhvNGZ2qp0qF66Zu)gu59)XB}P|c=mZCKR);72V#w|U#PV`#|myYK>iu +e?-8^@oJOL7bC|;~#4W^*0-#&MNzf3+vOi-LoA|jxc|M0{Jtx_orYBfMe9J3@4wp{8P|{`8?tKf<Nja +d@G<Q0>Hb5a-Bu?s(j05@T_%}4!9_?yeeFCR&>qUnvLrzz7;fjlF1Qo3n=yOrF2gQpLZiK+us?ss^)n +tTKaL<@B=3#Iy<aNm8jbEDlS2(oD({ETFqV4)eC-xdepSwvh~Jmf?t;6EFf%jbmLPvMlot1kG)D-$6d +&rSK00mYxc^Y=MABE%xYbKmn{D&|Lv%;H<%}(?YZ21WQQW9TxhtyU{8KOyLOnb9LLK1aq+m1h1p+nJc +bam>>OC?tc^*(#j!p_P<s1fUq)%1lJq)9SLUL5y=}VNdhtTO^6hi2#hh_&5bbd0aB-*Y9P?4JrO2YIw +M8R&xo@h9e{^Lk9hfB2>ZP>1eZgdTSBA2}ro7n(?mj*gRLW4J%AL+EqkC(^{QcnAbw13R4d%w=uFLE6 +k8ctx>F_M#bo@it`ClXAzkSyCF!<kR{2cm{1Wh3n!E7%i0dFtJW=t81plAd}NsyI<nJ?pC8U<!2%|P& +*puot0^kW99##?B~P@w+@!GX!5(0|cim$QK~Is^CyQWC7R#n7Ae#bb~o#EJKL(R+Rk1{N`S3sHd>8T( +gC|1SOw-?T(;rQFRtA{ZEW11eS@W%n55Dz_MUvzgd?erz+`TTl&>p()6w0!oD#*xuyL%?WhcBT#N<-l +Ry>U#de%XAsN5hwsKSs?vV(9*V$XqrvdnWUny(C#vfWeF~iNl{(bF4du-UY?OHh=u)fS)mA{(4Kxn<t +12!AWUc?E0NM<tZX@6pKf+Y6{C98pu~c6_$G#uipdVsi<v(*b(2uwCS9kN(^gs0L`2V-*e^j&%x-yx! +gcvDI-+8AY^?R75yA0)b7x=|>+QK|T1IqT#4yBg6-lvxiU-X^xM8~W(ZydVp;`0TYb_9Jt^-u1gUGC} +KyFYRDmFc}M$5-Zgftm|7^EEYuhX`KkUJ*RlGIksEw$1Xz-9~4((tIFf?b+%z$56V+bxsbE<Hp|MuPF +tsUOBt5&Zk{*n5f}&w%hZ7?`DqTQzMi4Io`nDJ$OW1Wj>PIPP_FIyP|U%I^N*`pP=j&)pxes)l*J~n( +b1ZK^FYz*Lm~8mAj$0mvd`Qt=~AOx?;MaL@#saoMwGtXZ8_8&n#5N)gK4$W@WgWy9VmOFQGT6#c4wN^ +>CV1bMEkV`U{WyirIy{sA63k9}dN-!=a!X=<B}Xc9)V#kp<hep|YFSY_tfX_EY%jL{B7FY;w6CCLGrv +@kJ`?^8l0Uz4FE$TDhh&Hb{MVO0|7t`Sm`SPUPNO>?MpMM-i|&^ysTBF;vU5-srQvUydi!+3^Ufn<iw +(3_6?0|J&SqEjw-{QKIkoihjH|aAyc_I$|DR2yaMu@(q^oAYlme^%tP3s;i_@m()EGGtw!Q4hU@QgF| +Mn%v`yWQBSbLlUxfsgE8D*1w&&?A1^4;(Bx%|vdWfiyeA2S*Qm3oyKbPRL2~o=5FUDl{N-&n(ZFI|gD +#iALp)5O@zl1iO!r_<&FhhmuV$$uuAZ)te@=QSIzOnZ$$|jy^@dk&Rz3Up3cW|uo#KT**`8%gipKkK) +<bjD>!kIDPo2Ob40pRYz1+92o3T6upuYYfW&Ov7{9pJ-;H!hgRjOCobEra(Hn(Z}UTkkluAJDxewIx8 +t)ZVUe1MxUdQ@&{0D?)&3|qUtAL|>n%SV@81G~=D*BLg0Rhn+7TdFZf3%L|g-5lM|s^h^xf){IMG<2e +_YG|5I{aQU4pWQGhp<JT4+C}!Z=`^drlrsh*44IX~sgrwV@9$tH?m%$4WpRMMNpyH;Q-{FMWagG&g5k +vvOS8tH3gfk$1~Ei<YQjBuTQ4j@a=Nk3{dBj0$0{^Seg-KDm&oVbNox?Eh^46$2<GAKEptn8x{Jgs-Y +EaMI**(Ftf436w<=^N910}Vh@bq5sLE`N%DlE(@_Ex>yik(NWHpF<(a~clL^u`i(T+E$HYDuqJ`p~Y1 +_Zyyewcz>FGT~vdCad1hg6!FVh?Dcq?>hrvzNikrKB$1bBh?V_rlmx*v)=_b>(Msx<3FukrxOtZ!&I# +%<eHp^JEkQs%&^WA$Q_sOhRX)f+Fy@&Mcv1d%iA88Zxne?#JM*1EB5tkMz6*gji;IShei^RWAjdv}(= +aSYk}KcV~lOteh_|GYUc7wy)w`XYI6c$+`jpfiTvE?VdN#O)?ttr=nxpS?5yqY0uLmzmCO}g1b@INb+ +>ISh*euwT8NA2nI5s0sBf*7jxxBj^&-vcc%Ud4Ho4aIi=&x6&I>4#x7X0s&#R3`PVwQ5YyXJaeHh=G7 +rERz1)<Obd4t*Hdife#JurOl6Zp>PtsmBCkXJfdi-@F;lBV4@*e@GUtRS_;Dr1PI1vzzlLQGJ^LR0gq +*02XaTJCTeE$ajX-6N19o5nuQ5@Pz*fFmTjSjKM9X^HWfqstRl*AXV9Toi)IPHMz$mJ79UjKkRA4c8| +zV?G?b|_KB<WYz?DiWXGd6YVW(=7fc_Gk6nBmbWqRKVk=9~CNsJYX5}DKVq?5#>T3T`Da7OtYho@t-? +5JBAD6N3Z_T`X7Fp3qLpBL(Uzs?V#%rHHZE);8edheB}jQ=}w`bt<m;>1~|$8R{^J=%O?E^aN<q$jWi +&*4FbQrp7|a|LW_z{kkFKvcwz5s&Qw*X_6E53b8NF{&Tnkgxw+kLtuTUE*PACTX&&yBfFt9tcZs?d() +|R+ZT8TF>5Vh?$wAczAeQ!x;OmZ5+&V?W9B&#t--G(%wt;=RM-#0{ov=%>q9_XuxH@2v&~~Fz(I?iY* +$D{V%%pP!ce=c&k&RW`^yP-~qmU-%wZHO|(L<G%*Y`^jJ1W{`%{^_B6q`#@hFCKJ`jo7!U{bs+RV75R +b5`BviVHBT%Pd@M5}~(2O(<2C!-l!Ryf$IFBD|$>1fpv&0hh^tWVDs@u%KOdP)8<VPK=TZRSBQ3+p|l +R(*(Oz@`$FeBK4|!%+CEqJM$<voecwxdhtN?!g`35sKOmS6NFSwvF={0YjVr=w~XTHwz+ck$kcJ`Lvl +P1@vy~?BK8EV0@Q8m68<&dOIO4gZ|j%1z7BC=ZiC(5Z__du2upO2aq|=pY-~Ht5uufr`#Skq_bPz}w| +u#$Up9)dawM1fc&eJp8hvj}=qvY-l((2FsZm|PXjNZOzX+D;k#`VDN7x%Ipmo$xBvEgwr+STtI`j-rf +w#w6Mp_|Cq||5E6~ugyHXFwv>}TQ>=*bm51DjfRf`Dq{UXPee#Bs6W8NS43TaWoI7lUTSyGl!ZM}@<Q +;^OnI%TBJRio)drxe8;hIc-+JIR9?~PSfe6mW7!)c&j3y(mh|Urz~-bT>lMl((X@yQt#;LNlqLlj#$h ++ms15xF2}vV+j%rj8ofZ5$B6~c5Mq=jS?a6Co7uvk2+rD&;sEbFl&M6<g2Cz<YrVNoQ^%2V6p`naK0L ++==-Q<3H!3E03*pNXo<3WVMMc4fvq#|o8_gpZG3EvTtbjKGr_;rGDkr6!MJ=W*G#OXEd%L=Ay}D#1>; +`eLVci6U)}@~rWCHa3es^XfRVqsS!@My}M4$^`DfSN}Z^QWsh=KD?Dcw)b~C<0b0?DlHi<=XV4=m +pjUmypg2&dL2VAR}k@W(yB^_6pOYs2IWJ4xbfGwGa7_8i!kfjGkMDm?5-*e3s?lEh#M_KvGK-w_92{t +NuJdjd9YD*=X!FF(ZucjT%c=f-SEEMVOp;3!G=EtJ&#*}70T9gSOxO&?5GmIno?KYax9SfWDF|=<?e6 +gq*^yRipchi-6q`Sa6%lLIh%}Tr~s&J#QARWuA#ElE6;9qJWR+^6-+*ni{S<|G%jLNLKJuiqbBmjA=A +!`I+kD=f#(36nG4^OucT}E`OIU2ptjO&a!OS(td?q*Ry-tCE2IlGKEQifmzZ`EYD9dMfAV(TQ1T? +zU|drh9h*%S;9KeFV&%nkRdJ$N{31^lh%sSn-svJmeh-bF>s%Wt>PT3|Jk)50x}z&`OkjtgvTo|!(QH +72(mOiQ{G@8*w+`wxH<`X2$OUtRS_;Dr7ZIKkKsolq3oQ4$I5V2Oqy3MC=(m{b1qj1wFlL&osv$jLz1 +rv)NDKui45twzzK#q6Loghv7g`FX|(g+62r>`0tL<T2?ai9Vy(=+8jk=p&X%AL0f(-btea*BnDlh<~Q +|p8zNLqw^V2hoA!XnHzkF8YCZv-e;b9NE|ebgJy>vP%QmOafbBK@o}V~;A37}2py>DKy1;`Ye&LI!as +_SyZ$O&&mZJ~yZ9q;Le^)zT1;`JcrQT=$@xRNUiy8y{%?b(1Em0e4pa1Bf~Mnp;J*P)$8LbX2AcFaDV +Zz#h`&4onPnet|F~WmKz<kn!(20GGbMd()b8e_D;4MdSyYHROjKwRmK@d<aycorutuPo!LN(D-_NzWX +#_}gkIT$;$%@nI6^Mx_TLOC)yr_7;loli_Mk?*4A#lO=t!uNu{%Tn&az0~3STYC$@Vtg#Tv}esLx1Y8 +7017?jRRjA%~{G0iH<|2{3czX)A@Do_jQ|$e)GTk{m;g82hPor>wXAR1!UZXsY7=_HA0D26YpraW&|a +z!cA@i1$xxFmW4I*_VdS*ikQd0StE~YL>K8}5uh!7JCWVm&D@F<En5+|TB6_GO4SHyu3Yr?h26_{lWB +%(`0^o4FW1l_Z_!0(rabu%%op|_nXg}6^+)rC{nUIR2#w+pw%aP0z+oCAC>o*3gUkz)KOawi=$(BuQ+ +7K*K*z`bFhk*yMW^XQAq9&LQM29LM7xC|ermq<SPxE)s}b_hOgjcN!bj8v$DgJ#_%j<IIc(u>QR3(`Y +4SHy^k+&gyQzsk3Ni<EEj#3YcN>d+3@im5=5)815qc!a_oxzqk6PqzDEEUHdi01L(;$gY7g%`gAP$dC +<oF{OyvMfDud9t*`A74$%9A@z#s0oIIyW`8`9EO3uK!n=uj{YOm$N03*@p7?=qnR5VxQHeQM2zTIs1} +{kGS~u-`>r7z<tFh@hMd*hYg8sn}9r6i>q`aUvY?8^y7u&sui}E=MczvyEa+(ES&(xZ+YWhx|>zAqZA +j1`W02^VR5Q~MSWY+?e*W9FPm|Us824mV!SRMa#`Wa;Jqm2nv{PuU+r$bDyC##uAo2wr&}|s;Matcx- +#hU83O$%4=lO#axLp*1H|r8h(^P((Cp^GH?|r^$GJx<!|9B%07LXDZ_Ff;_f8I<Ue|)^hTV-S6A0%y( +ztd*1PpgBG7K-<MV*}_0-LySUx8m>f2V!H<(RK*1`+wqz?lEbZHtdB`km4G)wy3y)gRCM!D1m8Nzw$p +BQ2D~V0<@OFb!ikf|C>uK_o$-Fhc%xpb7O+`_4Yd1^cb-H2x=n9GwDm_9>=?M;<8rl<+d@=N5}P(Aa( +!{J};$xY;omOdXbG|8MwP1HeZbD*W^_?049$Bo^;h=1(jZ{o%L5pVA>o92Z0IKQZ#iIqj<)I#k4gxef +va_MxwS_!K+N+V34DhpnZk!`kgel0tTb_1RhYfnfW=Uw5ophs9cnZx$;^zy+yaCFvoc-?)$a)x45_$W +$HEY#I9ZnJV5X&tC^l9o?F;=i|@cbPBJFxH0#y4F%`=kZfcn;49C;+T`E53ixl5;zx7o7xpUq8^z%_N +%3#TbRJrOADT-m!_=)WEp4CPhTMyq`Zq~N{v7FS^_BN;d#=GAECt{TO+nJXuyX%S`{$D0dLTl#xAJh? +4m(#!bJCcsxi_zBoeNdExuRuKZ$4xPadFqDN(rs7%83f1xO!`xt}SSwYNkgwBSkj6oPmg}k`KHjs{(q +Ug(dX}Qc9gprpo?-g$xRUu)&X7JM~s!M5lFY08e_kGuL^P-WYonOe&@ngr>Y)nA>LcclR8IwYDm*T0a +ctsx4sdS$AY(z%fNc^ke~E_jrrt%P`4_JEyF)|MYfFyve-9E{ZrZtz)%s8I`o#{hd05`EusKM!~sB%{ +lh@7~oD`HB&hM7U5+|v{Zp7l`u-NpM-lBQ=R7cSnb_HDpGDX8QTVxQv(QV4^uS2QZ9k90a06V<-xVg{ +5BIzeSK&&c=8~MG@nckQ|HF;t`Aa=PZqen{hrp+K^)B`xdx(k19)guQSMDd{jya9IxH~XUGGuw3h)sz +tE9wU@Z=TtRK09<Ui{OI@3{+`sy-G;%=!jO+*JBxqB|VR*RHyg1_;kf-wSUXGpfyxMg|m?^(r7kGrdP +bBPmN_AEp-Qd`a*%V1#UlRSPTyQf@lAlb(6~fnNgdNhCf7s<;_EY}1m5Dl?qo39IdUmEV!_el%8HCj? +N)#Xz>)04DPjo9EbE6w@-o*6EpMy<G0%Gqpmqf0yn}gzCHCD;>o%AU`o~J#Xy=Fo`QvL<xQ_XlY5)XN +|PfvrXDDp-C!u)<SCKUgL7#kCFSnTLbvjpxGaFBcyYwZ!pgDr{{H+18nwy`zk<8a?1X^rIT^)wg#8QG ++L&koyfYw2a~aR=$xLq6420oG{)Edu0|33N!9^eT-GgKyEw1M7lvINH@fsQIX;~0`%)|P{f*|ai;TlW +f&1eI;MB@k67oDHf!3iP9r8uor7(L$#o2Oez4XCi|3v9fY`RG0aQLLXM6)QQH5R5Zs{#1c8fZ!*jSMm +T07c-#M9Yr7@kM-c-;>)7&-5O*er~*QBak*_U@r+6vI?!Bd!*s+_MnC6k<TIACLkfP-gYeTu|%(|Jd+ +J*ob5qw6UTjHtRN^a*)qDB=<OB*$+wSb9&j1MF;%oE;I|D?QDPFu)571n@gaLfeH~hj31W=A8iej%l) +__}`N?`yYP-!6P+1AA6xH5u7%Y%Uu=4!<>P@(yMcw=WT|G?QMqge88RW{zy}p<oW8_Lf9I4fS7Hf)&f +U|hR#PTi%tI}PPld|M``+{|`S7j=H-0O%Gz`?H1&C4Wgzv{x<DZo8&WaWDmEw2Z_>#lqo2&SX?jTFoD +U0x&s9#0S5(j84~a=GVC@}X>&%}#k)dP0nx#^Ifv)7&gCG5~rH(mI37`cM^CxpkrLX%iPJ6Mfq>nD<W +4monv#wW=M_2e}0F$eOp+h#vc5<-`@Z72<Bbxm9Z%C!oqQ%Z1jmDB(1j1xcFSa5Cs}-;cD)nHF%+#GI +iWlrp$&U{5#-0G9<-aE{<PZ)b@4o0#aljA@&s$v?cXF22x0e~pg*+Ew4<q(8gj2gC#sFa#kaiQ@!D?I +9h#NB9Iy?}6WL7V!NWh=ib@kAZ;?!X=&^(NX-F({iYE?6@O4GD&25l**3rzR6L$OOc-<rVu^4fFkHK@ +C`fafXIi#nW6_B^cd8F92unSlUd3>Jwn-s9fkgz5pd`yDYgf4_@~2%{LC7rKSSR3g&^X?uA+{Rk%T@` +X#CF|xuxWBauyvuLf9uRh128U5xXKs@ox|L5bST)_8eO7%iRI4yqP+ib-NeF4nTf}nEqJX`?rWmIr!a +Q5R)W)5R(9;l2u2$$GCH>fAg2;H+tr8(bbnY&z*OqwEY<8JwC(O{#|YFFYN~SemlR~&EFwKJ-KV#oo9 +8273}`xa9(Ji+pq`Ii9>YYq+^WK4~5_D<^_8TgEDLk{1TVC5aC!9Cg>!#XVzGIatiMu*5A%^)2=p~4u +Xn5Wk}1B%QKQ??QH|YMZ6&DB3N(mbw@ZTLGhQg&EbyX&X;RU<yYhku{6THlb2x7E4Epb2jM>B;5Zd_P +ryVr0+i{|i61aZkUh#dQ|kI{9^Hh(AmqUIs2Z_aE@@7F?h5%^SEOmV?Y{wwLX!#@q+5ow3@j|~mG6b& +$-T<>G%M1At)iz}INfX-ha<apD$y2y6-?Vvk5mOU%{ZG`0mRUL%ek~JphR)Fy(uY8J;%)I@zbe(_HY$ +UHxA9*Y<fsgqr$b*meffY`5CWs`B?&<?la@Wr8Wvn$}46$0ksN+4CYNagPo#sP3~q}?l9C^F}zW^UZr +)IYNa(f2!pl(>U1xVqK|xEzAA3_dR#||g>*5NGaG#BmKr=|C!O2{WsM%mJU0><nK|zPcPBre><Mrt{= +EmyQjfgqpnH=W%&kprzh|r=d=7<mrC5ws#<QwApX{b}q_$$cEULB2cQIH5h6V9%UgBrOX%^}+_eBbE* +|UbIb6;Dxkk2W3b8gVxVvGCeGr@9w1S_O>(nAf6+W^2|{Z?s3W$zcNZRq}f0%gi2>d<}K#vHtsJT#!e +zC$;;H^~l8vcz(|a$A`!!L=(7WIxvSejoxP!Ii-GD2dNv8<p^oy;G^7^eARszt#JI|8#cTZ=|Tu0BUO +C1poRp@S)L+i0pIksfj}<zLRWxSCS*NuN@D_Q%LGlffK0C!vlvhCIMzK<61!Yq-tkAKV$P!^QQFj+by +=EH!Bq{mbUI%{FLOb6!F*CQ>}H{0+->=r^S?*NF5gY3V3XMKj-}-(Xk$SJrV~cR7;4(VdPK=w)qyp+) +>|DB06+@@3HGO&9}Q$U6lUOY%&hS#PEXsR!)_3qX%fQZ2WR!Ei74N^L%m=;c1_2Bq3wL6xN<2sVz4&g +~4YA<pTfx1h6Ua3K{h^4eUjdfK@rR_jmJjl2EFoIZ5f62qf#_1*+-A3RrW+Tc$3o7Cd3sJrV&%q=b_Y +y^L9OItM66adzD&7oy|WCs?ELGvwcvYJ>1p);MeW0y>D7QX3aC;oeeM0*L5h>h^$L`)u+JH5shIVD{M +ZBCK8=<|f14>fKvK02vB>M?)Gyz0Wp9Z_kDJ^iAOX46lK!1k0szna%Ab4z|3xXw4Bj;d%iv=!Ki@keT +L@lL*M@*ZYbLD>x7)?=uJoEEX-gsTqs<YBU%+*y#wnhOetat0ue?mdud97V;&6fpoH5aAwmNxEhmEMH +={S79eiM=eDY64v{atQQaBEE|PL{wR=CZ3O2Hhd^KP>&I378z(8M0X)wU0^zVZv1(6P9r5YA{3}@6Ti +MIDFscNMUK>BWT>l&Z?B+ro+4wt`-q&~tEk2d_)>TLcmJ};WJ8;jxSyn%LD^N&x13<^;@#(~h^_gepF +D||&*zrXs2L3#vD!Wafq6ba!wj>0g4-eDCC;TVeUFbjc5oPd8?_=7%p1ci>=6G9$kIXpV5V>@OE)8k+ +iepJZtV^Ro7{yYzr{1Zx!njwrGpy?QQ`^g3E2n&Lb`XK^+l1S;%>rCOtefF<oU<&%@sESHHZPe(2n3C +wof`!;IPdCMn1UOB8^8E3!&`})xOj{wNBkvW{2Xw;20}s+4ZdLec@ZMMWv<Cf?_@x4d=pV!N&fk>NEJ +p92BGxY6RW~~D&PK6QKBqslTYps40KfcE62q$H<@`x8|E2`NxmFkYFdm`SGv3az&UWILF|f{WiSL4eO +#TcRr9PYdC&#oI<@v6&@z<2m^^1a78#U)|3K(Boa)93wQ|JBSV+LOGnSuBFW4h4&D27(uZQYWOrjXAd +7L{k}b12qh>eEoTf5If53BS$>Id2DSlOG0uC}ZAsY`5dN1Ilf;MRb?|_?BDyDqex$`FBm-zno47d`Gh +~M82-Yx><<k>hs;|DvC!v=!;<5QOui^?_p?wsB3v`L2jK;!>0!m7*}+(b`Lv@&9>6Fz-{FY!Em$fUI= +$;(p-5O$%qxIx7h<N?-rE7Ux8g#^)2pvS_im-9oy9)Mm-8O^O|VJx~T@^P}O2GRg-&XF2yHT=s4uOUc +g&q@O_cL&KygiA$OSonfB(bfvwQur!MF@$d;G6Qw8X)cuCDtO3*90Fl)U5b58MYA1}Eo;^{h!{3Mgl2 +5_{ocwTD9Z!9uXN}_{`l*j$)xs*^i%@YIpZ%T47b%2Q=5kZT)t!gGMw7==uL(TyXr{7N=1Y7S?Y$)>7 +q~#_)v;5-3s3_h#sNx0p_R{ASHC^mc`QmjJ2LFW_H}zTZ8IWEgn3b028M7%U5nFbkb|6|ZFCit(M%-i +U)!EGzMH%Bc^4i$;nyFV_ccWz46uoVL+@<CGRK@6B&*Y1ca@>s;=|$_=#f2vSej;(1lma+qZ^^Ue*=( +Dm?yiv=^`PLvcL1(C!JhL(>KMN_a;MZmyf)p@PI@J35_L6_3?gMJ))pR>q4wbT#HXGtbN5P8IJg27e` +;jEiNX<v9DfSZN~B*)hF5GNms^BuNgyB~@ycC~1qX<*BB8^}yWZezKyoGy<a5a_OuN+B?WLa4BGLJ9k ++%p1)m(sEQxR%NPoAff!;VO@<>4ez!B-@P$t)lqA)584w5p#{u)a@j0Rme{-o#D`h*gHOm@(dE@FW#! +fc1ZnGyloCz_*jn*WXTNuC&e%vw6Lp_q#k8p7}`5a@-*9pF)A%&E6h4bctlm@z%Wo4Ndlc<LUM<t25n +O`F#sK=%ZOEdYiVf<8P%X>U=NRO6S0b7BYQa)E#iFWERx>hAM;B{L3b2&3)C7e|;Yxrc5;U<Hj28yXu +ZbZnqu?B@2rA?!BM9MjT#!XPG|givMPjPwWf)Os>7wiqtvrWqo}VI0bjtERMazqZm^j&8|*D{_%EgS+ +hG-1Bhr$F8vr^qH}keEXT7hm+sC)Ob%!F>Za&xne(<C?9uI20-u$Khh&iS?IJH1N3=vh@>U6h+w?k$( +MuwlB0(;aUd@jQB3m702&;XB<AY0_w5PXgrz+CQGS7>V8V}_m5dg%BI%o+m@<q`zyvN5dwWZD~z9d7a +<oPkS$|kHP$Ra_VDzdQ$TMU8CJIn=#yp36)W{?=4D!jD7#=Wg~p080XvLi5GS`VRLVMjbwXbIBb8OX! +Q2oOUoz2$Cp5vEs30dz=gh>8@0#J#88Jdao7UOv?JeRf{-xk)I`x`96TM)IQ4)?7fP*Q1c{3AMf3(^| +p6<FZs&+-b07dB0zfsW#?arD`zG?hCPdo;oAb5_-h`Xxjw$p72eIriZl$;N|XpPj4U#<AR>0o0ByP#1 +J9tHC6j8@6q~JV-2t7+AnFddC$1~MCFICC>2%O;ccuZbkhkGFy@R_#^#pW&dIlRzL}7u4a+JhOB04=B +ckO~6rF_-YR%#)i1Eomv=i6GXl&lYH3xQ#X@>#6zqL0>D&zJ+`1&$ym7v246S3QHLdA-IzM*CtO>mDo +BBHp$h{l|sjpAA}fL6>NC(j;DXy(O8(lfTQ!tx0APtuYs3;~NSKHKTwt#j>Nzyhg2_2$%RU&3msL4Q5 +@mo~rC<`IvU##En@ybu53q;cMMb@wO^f=1C4W11W=^vhKjRsJ1*{ok<MS1|jNrGCJ(C{Cj=MGyo<p)k +F};T;u2*iWT@>G&YgA5G%qk*<rQgJ~9$2f3d9=<7tpkvB{}oUicbWB91>Ai5n==^vVZ7#|tA_@lE%;s +=@xKg0d9PeL!w4n4U2B`W<V75@o<J<cW$v3CePm}?<@Q0EQ-qU0c%;P`=0_j~M{k3T4TzkT+ZM!la5e +K7C7!oigL=+f;#IHr!T<RdRckiP=3{71sAUB3cYRnLOz_E-krM1ADv>A?2)WB3&3J7FDe(bc;Te^KXQ +HQPDYI;VdnVZ?VAhVNp&-fY$d?!M7Q4Lw9i^1KK7!`Y2>7+6QM`8Tw?dmQIq3;rPYBLVssBx~}_N0My +^t^caLZa*H=#rStXwl)FX(&zJ+!G7oYSx4SSq3GeBM@6^YS^iR$Juge`1YQ+N%8pO1`iA6Fge-61j?{ +I$vic6x5ARm#);x>fn#_%VE%+6C+sr7R<7I#N>`}1=ep<4<eoD6Nr(}CQGZi$EgdeKp6OLfVb|7|0XE +04C@wx#SVql@>7+Nd9Fg`q%3VOb^dv}w2RK7ob!|S)C-$B;BKUMHudwP}F-E~M!Am5NY6QDW~TJXEsT +b1WlJ$R8=IM$K3N(^38>eQ<@wbuair!08Im(#c{XR_9DQ_mwuhL{(SkmmcsoQKFn?wb6*J56&N-s$BU +F>5MHKJT4)@TD+S4#xs`pD$(5c74X(CbfU^xekm@1xH}VhgnB>Vj)CHv}(`}5uUsC8cQ#H**;|HlqTg +@f`8dip7^-qhF5k5OM4puGod+5HrT`f%Pm&L+d1zrq|!Ww({Snjl&>)Elvg>(9d6S^v`-Q$miv9V-|! +dkvs4%eQbztHW{gIjQ+D3H6a}6xEUGTuAN1mYe^-J0c`9tja6)^cx(&`zcmXb<nThb*Lf)m*iUab#Pt +RNWPK9EDE_bp?l0KMTDRs@W_HvhcJV2Anb6YlC9inro19KstLgy`vx%=+6Kn!<Z<Pj83V(8U~^&2k@j +F)dlvD6USW0&*9Uth2Di7D+R)`<iVjhoEOwMaJnBkQBHeYLDCU>|SwwVu#=O<%X<;!!V9?~9YupcdKo +*+`vb;zYE}O#+B)EGvv<#`r#P<+<A)YqpVkY1~-0^tZEtPOOG;`Sq*{L{ed8TI4PTv2Ud9{719`)^)m +qFEW4Q=-SsY^$dyCd)wOG<)0@<WVOo`=aO;?i4=O~koUZo=zil{9-y1+EelW>1hKIolU3c{c7KP$=y# +3={omjM|Jx;h=LUbj+z+mhA}I>OFbIZVoP;5YpfMcAiJ!T`-IeUVk3>FlDA`9TB|TgQ{_z?qb(Fax>S ++8Y$bVu#S2O*MeVB!Z#7TyHoND}`51|KVaraBRU&W~p51Tq>#vUzk#KBgK|5S5@I2>R4VKhP1;qneS{ +p9G(i_#;1gJMTL5B{W@jtM8pA@G8x2Tc<F2nHM^ZtCMDlOtJ$e`E@X&*en)OBSSagkQ<GT#kCV+@#mh +aWKBL{P*m)jqSfLLjnJd8$7%q@F#BY@l}s+cZ0#V1rH_9^+!EEz}mjDy&s1{DYpN;eJ!IIhYS4vSo!1 +jkKF_R&GwJo1OLtTkKF@*#;^Rs4lkeA71JyYRxjo<jA+5+D$|yAX1hqX+Aak6fiq0=EygK!?ZINwK!N +q-*nOQ}D<Q2MUXQOaS+^u6G<M`fnWRPdhFvbR1HsE`1KB&QZ<GcH7&bY?`6gcFUVpr}y9D_aE&fKY{B +bra73}EXOgnn<oLFGX<5(-Iv_0qh$$zVD>hlHzent;}zm0sG<*Ve|9!oxMQCA484e}hDUe_E{9rIy`= +xgZ{p9MHKdz-}m9+sB4iKNk*Gy7Pijh@~~tyRKAN4&kU*Y+)gB7ZMEQS+QPSxWEzer<UGR3gJ73XaO} +Ub0%?Ip;i<Tg(4EoZ!C4|8g7uz3AbWSO00S!2J*`Pza90$E;5RMp2l6AdJRw2>&UEAo<upJUQ~x2z;2 +i-HPo{Jc5q&_HKU?<YVK)gJ(eeoOPLgVvFoEwtEi;b{h!MM?rs&3-Hf`kmNJS8zm3^I1V2X$!-F7a|- +>Lg*--t62~gxhyA@9z}?`6$ibP6KD15>IY^cJLd3^H?mH*4gWQ>XW|i)yet#9mj{9LB>cDQe(@(rWKz +m5@%U~fsghlIb!lD|Zk{3qn&)cS9S5p3ImfQQ1<OaTGxewjve`$jb4%c|&7lF~M4OQRGt?nES@r=Z`y +0|$%0NcmQzlN^$uT!-#otJm~zyG}*>2l#S?_>M^;C}4e7Js!v;8$Dx)eeClw)iCg_$&B-1E(E<ig$pG +x0}idDuwEhd$auW#eX>KY-6X+X^QN+ooZZctxO6k{3N`wSSBA;t)Vy<;GTTB15$F4{mwlFLyE8<2F^M +W_Qc{}iw;);-hY!GX}pkuZZGj}CX=EwYjB;ef|K;pZUzCAAD-URcny^BGM^Al$6{a#j~%7X76#hTBp` +xxyMU=cX_o)E*{UbT+m$>$PIA(}B|yCB0(6VEJVo0nsn*`}<?R(BRm5I;3G-w;LM|ufVX#rk?Z}ordw +51<^m|mF&k&4(#nxZ+Hs_JHLuH5*%wF3JR-;gi3GL8vU-tmrkyYAt%~0!87b?@cXxw(YwG(<<VIW-V` +AV=)4zzLp-;}~nFX<7p*o)a}+pknGP(&fkix=QT?oR}x|2qB$z6AifqI&PnlY^n_rnZ){H>Sl`ysiY@ +T;pL8=bLcj#a^X%+fOwds3U_(k-(`k1KUyW=iH0X<@`JmqXTMhHf6w}70kCs!d=P3PyNJ|9cPp#VzqK +*k8mJqUh%|$>SbKc<ry)iW2OUt?hxjp5XfVYU$D_W?Jj~^nq%7Alp8g7b#SIT6VBReL(X$<F9Nr#Q`? +ROLX;!Z*Aw%a8p0FE?Y52=2j<;VUz5#kre}_znBwg$XTB;P@ghCnrt+*D09>S3Q^@++YNa5bSeNJJI# +(u~8rcj#lU<dfp3Foj!|TnHf6bI}WgA)7b;h&RwA-EimiL8PV2>xkpPt1FR&*?rvb868-j)AL{Li6(- +)H^J75*){=YBx<IEBy{wZnP>LvU#KT@VCgIP_CR#T^mj=s`2v!S4=`kFqFvsQ+iwp{Nyo{02;Z%>U6g +`SWSjpPbY|p!>|Y+LzgvB$Fdom1YN|J_ZV8$JbF^#SgXZBNeqf65>yMSM=$QI>ff4;{ura6k@5PWP7N +9B?mVz`^+IAkHLnYF4N=)2#6255Ajc<<|mo9pS)iMrH5OCl7rC~p}$1;>fyVhZ#_<Gii*gi4zY8)#;- +r3`|$VZ{^%z9ckuXI<IoO|weR4u5;gh)>_#U2Duyi}-yGgCYT)<2Yx`Ti>-RO}|IT;)OKE%eUCB4!Ww +{0q{4V##>whvi@Y^JT3sT=goK$iqA)>edbQKe6S=<I!S!$=DAXqDV;)GMr7_Q2@$akq%MiuT)4T;h`x +bD{YqK#gJnPvDM3t*5%g=tyZ);$#itHR?HqasI+S8256%qB~c{2b%;a>`Gqcd)*`u*JXD$bb(6{4$2N +!7=igUtea$ut;@Jh^(1U&gEB)Q@{_MQ$J1z;J=#=03jU36&Zp!qDovL%*iDc?nfvF&@qHjA-wo!Hq;X +A;czOyKFuzhF#D=!eh!^56x$bJXZLPeRNd)TtMQiK2-@>OD*!a}RF`elGow#^63>vHpczT9EbPuM$GE +f?W8CYpxYxfy{*}7+QSE>Jap{Kfn+-b5*AK7!&glL1tG*h#Ke^%uAz1<@p@Z*BQ8Wpo6pm9ALcs@Vg+ +OSMMlq5iQIv!c3W2Df+CLaR;Pwu7qvWH-10AFeDm<ie(CkAErVh9qf99%YKhJLLr|h^ofsS+p@|pB^n +84^WYXv<l=`k<hGpX+=03e4|+P^(oHjzKEe|zwNWQXkkAqEs5$@<+A)6kI-Ig%(Jb;aZQPiNE)*@^h0 +|4$s25={=fc*rEChvnXFIsEC_BC{h+bI3muzvTaJhy5edulCR7*n3t~YfUn|QbByS=;5@3#n^vce~MS +;=ywBL?DOy)TV;PIyZJk6;)jjU(|tSJhi&+ryXXpFi~GTq)glCMb?Y_@%vU{ESU!%0$mjKIgc{KAtkC +Cm;QJH4w?w-g{HiXC=$|Zyj2ry@tGevBW597x7pdP>0CMdsmF1Z0cb@Cd-Q@Fl{3zf3c(DWg?&tG$_W +IS{8=oH!`CRmHMf&L5`XTdiybk<u0{30|W8dPhXf6lK1^B`^-U=goZ4c_<^kf4+jFGHcYOb?P^^5#5V +_>K!ov+OC?K~;hdBtJYU&%o*fh29<CwQs}$G_wH9OKZKm5#ncV8cPekc1t~DW@vSp=NYB_`2o=$aqC@ +Mmc}N8X539HU>3lxR`?OVFd}1jYm>%i5|Np;fe;YZH0Ev%R0G@I3OG*@u9gkBz(QVP4x5t+IOrQLu`f +HU`0U*P-h9Mv|d7ivD3@ETl<SPKOb?fn(3fn<<scnmD^*L1{b8RxdF(#Vzfu}<oR)iJ*F;{R@(yOLDR +v>@H3%{mh?rz>U0kJReYrU6>_ayE1||Jib}l!Z_N=oro>KRuHTgfVIt`L^5>1GA176NP~lbJ@)m#2aV +4&kM_5hpoX7k1y2n@}=!`&Qq$lNZwz~ZGw3`89pZsv9RRlzy2vlw(W!y$IJ$s~TM%ub5m*QQ8&ifP>{ +$h0Z2v|_MFJL#a2lsJvkZFbaoa0~MAk*d5(`QbosD_2nsWGi|=&r8FohT!v>RWoLsQ?6Oq+@H<pnS|t +)UqNV!OkJ4UfK-G!D#=5nA(Hs=&3HQwWczurk3X-%--a^5;gLs0?zpqb;FE`FIviNL=C7bWSnQ_WEIY +RxmX5xmq&RJ7cU{j+f7a5fmuEEeSK4C35q2kwH@uMW64gjw+9}G<)p4b3LsULd`5Zj>6seVjS8R3b5+ +?V^DW9k^m+f-U4WmqBLCd`{%)ecHE3ff1q%9xt0?aThW(gWaAq!>u&?|>{3hV2A$4!xw8t5OH@DLs*} +(AB;-6>WPwB}*<fRDN$PdZBK8G88C4+lm#Mp^=EVyP9cYCx6O$10*p%TNBp}KOLnD3`V>gn@i_6el*Q +1kvuF7-&CC*QVisQ8$)M!SWRHFGQUa5=65^k-l(%Kjlbp{V{=lzzAq*f|BGfz&!wCN#fJR;uhQr**+f +W6$n_26v4N-}KEggC2O?iFc<o<NH;y_hG;!XUne3337Y_n({<ENhqCT0v<k~jX!m7khSrLW+YDd3b3r +L08tMx*eP_S+-RyO3$lJH1-E6XgP84;q28{bnj;+1&lj|nRIN+YnuRi78+@F;1RFpb!YQpsbMpM*eFG +zC0N*%v8`gzVBEopTZjKw1w9y6E$SI5mHO%I#1*>+qv@cC*0COu($o)Fgt$KbRR5|7(#_Q~dcU?O5f< +Q)7;rXu_={=Px+%`{Abj0pwp{s`nH|(DUqKV-E_Z&S+EsKeXsUq9iaL5TKn5*okhSSYGE+*Z>xvVN_v +vT4-IEZPnT+E3WP%>w`cvuSM8$PTEvfJi(8HU{Hd9-okTOObLsrDy!>aQ%R#V?xU>NYT;ng^RSy8s$~ +YLijO)%TE3n{<6WY3ZrS#hTv;SIEvjWVDO#6%16d1a!G0mm=+BaJkL6K&xyBXv#1yVZ`)dF40_~n+!C +GP(`|Lr`zM>-s4J_Dm{DTRsPo06|abKi)XKdjc92(i$L>yLw_0To!jvvx$$p@<o%C-h=)eUmvjHWBYO +RxNBC-|=|ARq{-5b@FZ|Co9Zz-o2<!hbrhPM<{-5~&{RaZU_&<KU@_+mz>-v9$zb(I|$v>tc{YTf<>+ +cZd|80Bwid+BkzJ4so(I|xy7){~W5wcUn4rCDoLP?CI2^=Q~lE8jWRiQr92KRXP%RmA0Ad*m@#<k;Md +}tG))JLu8sNVe)!NS-FNTx?l86iGdX6X2zJ*>y+qeh0u2kIor1LE#+H9~*p8xVh<eLf;}{J@{b@IvB% +)`#%rhe3U0pW|cChk`eGh&t`zdzv011tfH|$nDTK!ajT%<fDW6o9@a-b3B8NhBoTgTx<K_TJzs=t&Il +0qTu`GR2Sy>NAT+2d;FYh{fMwXj&%MJhze2rn=XjPeWLd1yLkZ`a9(KV?z@kJ->5a-ZtXt}W>eI7kcK +Sv9T5gCu<E#hH{GdbWBx)a*_iIORu5oDql;m)f4Iw0{kk{wDvRHy5E6I)`q<B@<sCOhQnl>Y&R?n0j_ +Q89`yXZ+{(Pk2hj9V{UlI$j&bzCzofq9X64XatK}U5*{v0ztN$YO@+4BPa&I9||^8)_P1N+(Y0{+ee` +`PmX{>}sYnWzHrXQ~QAIuF;0EFgzJJ@1Ny6(~P7b`Zrq%17RPjxO3ueB1#<1<#Sg&OtzK+Nd~9DuEJA +-ffjm&KMe<5PfqJoniXz3>s&VQ!Lz<I}a_I?UbQszyXUF_S$2)7&(QIzM@GDowXLF#nPQ<PJ+XyRus> +-`mo{Q6-k}cH@5n=A+Ocp7Apb#nGDoft5HGF1Xmhuw^z`d3*a_lNy3MX+zyN+$K>7VkdR3uYZl$SkTZ +-;D?~;IIJmDhMiM>s6ugG>HKk?2?{lW@!gj_vk*V)C7rbJqNI4gJ)^5|o7c=ds=lU*4)B*U>af61C+N +Pr|3$+644H4JZa8p{ch@4ZyZI_HipUkT}H#vc!ay}`MG2GuVRb7k#m?Qm7`{)W%uN>r>#OkIk+@q`eo +PwGdt7=Y%Lx~5Aq35!1)b8^f4fn=O1F|77hyf7q^&;9!_uPMl79N2<hP$`$((l2|Jjg?t1PUcPn@qn2 +2xb?un>~;0N5kAyuxXP9XkW{-;$%re&P3glbyJ;m)|op$xv;!ocfK#utEA|Jv1U06((U<y1W&)@`wCN +pfC3Uf>X}KG4X##~N$<7Id>}7Vd|GO7x-mVHTO5X~^yRH2L6bmQzRK2GK>;YQFJ-O)16zrP;erBceCZ +9<#cPX^F;5Z^Z-xtfMv3!n>2X=xQa8O6o?X(XGmIyG219velt2tsKdLJHP2M^1O;tgmutm6)^VW8qBn +*UL>A3kIhKO$eji`bR;I7)F*l^)ZOMFK6$5l>sB_PIW$ICu-XOeQ}LA}1y7qh<&*tLwT@GdXitg-8Lb +8JAI--sq$?DffNc@t5uPA_PA2&45b_tG8Zw3E;X8>Dnino=fy=VdmdFFfkyBdLi!kP9A^VArz(D}7#V +CK}cCiH^kJ35I8-))K!5!>I{m)2WiS7oq)UsdVU3X;0~X8BYL98cwRY>g}y;R|;oUOn7OX>(|1?4dLB +Ny+%uOHIGr&`<o`nnjeGHy@&H*^i6n@0Vee*^*r#P+whsDoHFw=mM`IS6HL>)!&ifqFC(6ik({WOnZZ +%IGRBF$i9W7|QZxe+u2n?u+YlmH=N*qc={j5BQ!EiiT&e=tkZB6R_xHWVq`Kfo4t4fOkkHOn@O-#62t +*|Bx)N2uFkLebq@iUuMN~|*p;rr)LNmWh6TcSClTm$3%=ZtKyKPJL7IfQ{q^SasjLZ05WUx_8&%XUE* +fWuIT74T-22pLEykFiK2VMtW(d*pnY(aCIYso0)BgROx2IMPY&kB=mE1Rw5fGuP)n(s?vX%AEPC%J6- +zGV~pbrxN%OLu5;vzH*qe2P({cHaRm5F+S=E{bM6aYY$36YvQN%@<_c6*7KI>*eWHOiuD=`W`-cszkH ++?Br7gHD`Xh0qyA`m-&Esh46Ck7pID!BGNVJ#WQ)0d1M7fJ7@+D(!Up)`u_n?O9KQH000080P|F{P#! +rVb)W$N02l)R02=@R0B~t=FJE?LZe(wAFJonLbZKU3FJo_VWiD`eZIV52+%OD=cl`=N8R84>ymV+0AY ++D3?a<xPS#-^uEEyD?yUWnuUdkW66bL7SG+#b^#XC4W9H32};_pY8q&s{o8Dp%qrbQO&s2;E8&%ZF{S +5Fy+<fnkZC=<sF(j!pJ;zDpjDMCo?@{u}dT~Vq>93U}}WE~g<qvU#?L&KO@AZ25Oua5>aI!*&Dg+Rxe +F{g=J%xg{uJKqRi#NegHQQ-TWe`Zd+DBQse+9}e}wI?`J2yjk(f=(%ZUZq#MH{`688Ac|}N`f!-SKY= +5gwmvYtzw_CtR@_%!V^d{Dp{<+3uRGD;pN;T;|p|CY>OSMSWZe3?**LqDyLiJJZbxxqz8;|#3>HNAP9 +6qh5d0MPw&VJnxA_!$|~119R+NfGJauFXG_UrcXO(0mf9Yg(MiA8LCeEGS(jTPyIYJaF@vNLV>K^O?e +<{VerVY~cHlC2C+^l;V!4aCP#1t|XN)N{tK9m?@T9L^7n<4=M>k-#?V=4Igtot46UC}inA=U+O?o@3O +?_>>?QhqEw*U8kVubk%P)h>@6aWAK2mtd`vrzEQ4^!j<000*T0018V003}la4%nWWo~3|axY_OVRB?; +bT40DX>MtBUtcb8d6iR5bJ{Qvz4I$}!XYr@x*?fflF7kIOyVgu3^vVh0%5O%T3d1@If<v!|K61`Q1UU +8>cEHe-qYK+t8Vx01y}xU5W*<9_QS}BtI_!SE4+j4cDfL+xrUst6jL?O&rBhLmYI2C3NN6R6(mf6!jx +;H_^L7p+yE2lXQ_x^$dqTb-Ks>23d|b8pei)Ttod^r&R~RE)7dQwR4j){waR%y<PlF$XauIAw0nAuDX +i*-H?&5g)(8wG$uq;HxB%pIZts3XrD+FF-NE*@R?z{epvR2$uRxZT*eBC9<c!>HnQrH;2=<kxz(pgwm +L-+7CP6CniRU@25GsvXl{=(BShx@3yYVarFPy`@H=TN6Jij2USxY*_N8Bj!qRcr7Q&oxyQ<HHL_~uWq +?}*`D1*0IITld2t4*e*C;dlxjOuT6vT+c?{6ehFjWE}Y}K!muB*oOI5$h(L$k}M=8nWAAl*PGJk)Lu; +n^Ay(X5vk1y@<+1AAdzMLUp>sFcxdV+%0AEw;28*M9C%WkX2;0a-6fTMe;o)!;yUnUKp-Z5=G20S=tG +{7^e~rFIdCPlvCwZGaZgSMgOg8#vy%b9ETWzF7Wm=K2VX|F)9GYN7T_kbC~e=1QYr(J`Kd!6XYFAnxE +&>yQ>vI4%DBbNwg)%uK}*<<Yztc~+Kt7+f$#n_3dSMboMHwW#onqmxS)CLpLc-P(a}-!y^(FAM3K-Nr +0m;fJ#af~mIro@#e>^vDCZ?ptbncHx!t4L#}<meDpG11gwL$t0^JSG)Fr-P!E$Lg^m1t@b@Rv0bG=+1 +xZJd!-V_(wFjC)@<G_y7R`wCR{s(K9Vw@%~CWF3GQuU7g=aOQf`IW05HXj?w*1oo0cegt5Ak8@(ALzY +Y$G=bh9J};%3TAp%Xy1;0f5*gJ<DsuD3NH5-?x_uQH!zp4XQg)taWlm91zn-3l-NU(TxulVUr<W}1QY +-O00;o{RI^Yyzl0F)IRF3_dH?_)0001RX>c!Jc4cm4Z*nhVXkl_>WppoMX=gQNa%FKYaCw!TU5_P2lB +VzTSA^7BEiEMw{vFZ1GZN6yQ(79>qR^=K1{GCFlbWKE$toJLzkcm`ENXkDVWeFylB|>Gc=(68*=w)8? +&o*E`|ba>k3aqMlP|W<pM3J^7hiw6ef;^CpZxdjKY8!(Zhp5t`{8c;^6~y}_phJ7+CF)BdAHra+5YnI +zwTeXdLIA&@yDNE-@kbN_Th1R@#_BW_1o=5yyt_PcOQN7`u^>GeDY6sf4_V6@YCJn_VE4o_BYy$_kVH +s_RWjuKi&Ob&E7w}eiQ$E{ORG*e?-IER}YW*`isZA=Wp*`Zr}ZCi~sRa&mU>)r(feyKfK-E`{egqInN +`S_|3O}uzmFE)%KM4zS*AMy}5h*``ybN$tMr5-#*@d_j3&My*I!AL%gzWe|i4+Z`)V*um1LU|Ks-l7C +n5sy?xle`t|J(53jHB$5g$#|L*bm<FCxx_m6jX+na~)-~JLE`{VZO!_V7`=dZWNyO;NGviX>Zx7+jAF +F$;EjL-l0@bdoqUwP^0*Dqr@^!n}H<BxCN&EcQF_-6b3?oIS``}5uFyT=&KS3iIE>i$K1`1AW0cdy^v +ZO`9qKk?d|AO0~@pV5)8ua0b=Jw)@)?jN_i`}jN0{`=kIn|NibACz}byIQ>6Vy)kM{+9m7YW~Cre;=L +xb$b=7@%ZkOAN=MN{9~jqxBJ&N`$Noq{1OeuKz|9d+P=HnetvWJ{m-v%qlI|y_ODN#{mYl%Jlj6{;;- +Ake)RO|M_)Yq>mTF2G1KwaSifxP{>Puf1Yd43s>kQA-~JjMj|Tqo>C;dCB|h=d$4@?g^6anl{<9~~zW +DU(ueZ;>e7b$Kef81PXHP!)=JSu9ZeM-#^s6tw{`7-w`}*$g-4rvKzctDKXNtd%CVza0nS6Qo_WAv*H +#zjb#`3<24!(N1{qX$ncd^Vb?(V~)w&$@$e){$QYYksLy#AZxjgS0eLjSnkf4{wccze73@^~M%6V~@1 +RySJt$NJue(ZBfMb{i$$^!)X|y^1CHIzIl{{rA!IXRjU}9&fjgAKtv>t$+C_KD*aa_V-KM%eH;<b-eP +Q{kMJk#h?BkoyzZSqT!G4|2EhV|Nisc>la~_&%b*`U&BD3J-`3u`Ro50P9`?O^T+7oSC0=rKG6Tzhd; +l5asMjb_}_kb`}U_leE8unzx?vS-OHapc>BvAj`HD;@sY<5|JnI3_1L!e-~Z=r|De}8OT1LaeD~5=$K +a(=>bsX#&zH(x`}NXswxjdGy&u<0=Nd=z0Z(4u;XdA3H2r(ZG;ja(uCWi_EAL;w{(k$X`hmXZY4q{o$ +KUwe>-b=F=fn3#-^=^)+wcEr|Dfz6H`1>^g+Khw$36d!T~Nn=!KAWN53ggJzIn@L`tj!%KWsmQQ`3Qj +yLtMjr#CkrKl$_c_Ss**dh*FfpMU$OCtp8%`sCwpo;~^Ui*KKP6#vU1j992oet7<fVTDos`<IV;A(tu +}_~_%$KmGRWC;#(Py582j8jk(;^xJ1&e*4+ePyffaUq1cQr%&VW@7;vcEVt#@<Hy+NZFG6umfp&3xaH +$E{(8obqw?Fl9s3@ym9^r1d%bP*h>yhr-qxe?iL&2rxZyHy+EIFZsI}WxSNs->9sgYMgsu16uwedL;* +)2OALUrLrSR7|&f9h_-dyKx>!aM(Ia;>c>P?|r@rHPM8~bgiA6t(H*ILHy*7)Z*qaQ6ESkB2~wuAoi+ +c<8c#hrni@z++f-G0P8%oZ>Ew-QfpC3-aN<%)J|jklKQTRgDc*3Mu1;hUo;BPOlwXW@OF$++5`{U+wf +$!iREr{^s`nd3We>vG_2#E0gL9`)$?5pUUIdoy#f7^OD4Q+d`k566BJ!-$#L2gBW24}RlW@vi7}=`~t +oMoMM&cV~LBBAx!m)aHyZL6hHT_nbHJ@#xIJ9?n?j_`!-}6er`GeefgxI(O`$xJL2l)@XdO82JbOd89 +qW5N=|6;~%vhJa}MiCq@wiI$JEoepc2w`mv&KrN=zPYn{g9ExlufGv@1z`HJ-|*=~(>D=S{!&oCWlwb +1=NCbS&g@$D@8&L<g2j6Ql5PdK8rZN)$1&5nUdd)MFIZ?^Ls40190XgqdOw81}TG!)}ISd{2_i_vV0P +88;5#O&9$7~H9`F*jj1wmbKmm|E;1EVQneywYMuwmCJA=>AFH_A^==3_KPtjIA>+%xHwc7CsiwxBF>l +v2kun>~xH?N0ZS|tUva{jt<j^9$~OM11T6$izjUDz(xkk64nw^5bx{k)lskhp7kbd(5b~Mg#Cm$vrVG +$Xow|d-%r{-!n#X6W0u+;oo;Doi#OB#YVU^a);-p3(YJ1o=)#O{#cVO=SjJLfeq&`8AL1?D4aUqJ(Z& +($8=Dr#5z8GGKC|80Z(`uITVqyNjWO4Ff5E0>+37T`O?Oo6<M?Z#gJFB|Yjm20Y7FxzZu+#d+V`6nOP +DS@HQwKtw^*nWYZM*S)Eg_#YcaLaRkkqwoov6baXyCa#k0zRXQkaSZ^BtL+Kq0l6VsjXV76N9xme4=J +{}Id@|fQ66!F_ZR|{LmIXuG7JGN)LEB0GwLoU42$(ojlUB>dnvoPY5@r9u@COP&Gb{?<AJ2d-)#fyQA +XgAjUYWFy9;tfOz_YofGJluZz<Y*|?9YZO65+}iKY;3DJSx`L6#NypGwdOpuJ=SeT2V(>*EaU6NndV) +y@`RIlV3HdH-)#fa-SHIhRKhf-z-ZRhZr#J5Rklk^UM0RXRx1V+-O@4J<k7K_cuW|(Yk9;ji)9G|bX* +6^jdL%#-&&hD(Jf7vuz+{!F}_$>1BCmYokwegws`)*OcPM`lUqFhJP9AwaF_e7jT-%Jyi5R&T^eqnIx +RXMeW%liI~+LoPLs>G#BZa!FN`o@Jo~keW4z3-D;^7QteCP9PY6?pPM7c*;d%!>r(Mjn5MM{kNH`>dR +;*zBv+=`cUF`-AW0vD_bnB=(9~>SJ?gzeL5}66&3wN;&p2c1XQ)Wg^!np1#I<}5%x9@xSb^SFx>M^S^ +BjSyT|KqKM_=AOFNMS&je|6^UCB}mXiYbk;*7WNgTr#6uF(3gBz7|Vf%lG>u*6ob$mxC3oE-e-pgXOP +yQGo($xz5}dJ#a}h$vhCr1DLZ@F^|QPEtYIzg)C^(<q+p1V8lRTgwgYYe-bbeP4FnR3odCftBsfwyRr +}#jP5(W6JrywbeoLlx2bm|`VfjS-Rk}ste~EPb_17$Efc(0(|O=U@QG75z={)l!9`dXejR)4_y=50W# +;06IM8@s{C3Sl;F2&<`iAKYR*P=M6r6Z0b}wDXP<-eb3_N%Rd}41{?O~IHKjc2{flDITVmidKb+Ey3+ +Rf=^$p+v6UmrLF6KBH=yvL&PGV!|6iEu~;`?RwGE~y}}f$u7;_?k8zLz@wY!q?&nWAUOjqIE1((=yIj +w}62dMJKcwyj$Y45xAt$g^tIFsMpvCK;`IkXGh0l2)5z}z~YLj>hw2S19XMK7UnQI;m*JM+wqg`hHfu +GN&wEzBx4k90xTvg*y5=L!wygxo$k|pOuP~R?5_URZs3vv;EXK{h9*?t;S0b!mKYax5YDGthbTepHSE +*rSTe$M7r!vzJ>%v8mjE5MQ@23`i^l`afD?r7eGoJbCKSlWqhlc8@8yg*OuEX34O`511D8}=V?bd<45 +;ZE7=3g#o-lDk4m>_dEQ=8m?qaF}R$~vlud!<`Ts^@hF)W}xy&SGCkbw6K{11|niiyY4FmU`sb>?ty% +P<Z|tIk*2Z(x9%&Tfx|A|KKNn7kO|2rZrdR@`O_BZ>|JjCYL<A4iY_Oa&Tdgd^u+1}+I(VYYw{Yv^1D +AJR1dbJ-k)RXvN*?_?7(wareDFT}HAAL2(w?&Db4h(p7^`Btq9{|hcDbdZdvu(z6KN=_9%;vf=;8n98 +8wlJ>Vu6YPtQuSh|?>}_VY<VW?1YqG*HkS+(TS4g+uiuSaIfmlQ5tOgE8QwAc16Hs=`U@aCtJ_ac2&8 +QSUce&ZoDCBlB>M6E6SqlsHc-n}uRM0`#J7_LV1CV-#&V)gj4e9Y-KlypTq)^E49=_=S6Z0|cAok1?1 +>*%;F1j=Q;B$Wxo0&to{ss)_8a5|1j=d3%`~zvj-~Tqa749<QO^Bp7hJ*~i1%yxootLznLiZ(EC8}GB +y#3hP<)KB3HUSOW3k+gG2p3M+QSl;OkO7Qih#lUjYI4*fY3%laq!d`h$<$P#UOkfJMNW8fWrr)6OnSi +g|Cfui$!d};)V|$;NK?D8oR!Wys)y^bd`8fNxKFCbpu(3XRRz5@%Y_51THDLaiR+`4|*pyWYPva!AyC +wTBnBHao?m&hr59g&%}qX;kUH216(o;GGWBs^q`;a0mfH!B{(|M&z&b2Jgb0=Bx8XENmEw`Vzk`H5l| +vO4l5|4EpgOZniC7<+T#R`xa-tB%zf~Hh8bcA=~+0W=*hfr-_ck%fB>c&zcH#s%8L^=+a^g4kY#2>_D +U*tGMY6+bn$#Rp8ztzgCp_75x68igntO<UWuUL^$3|cX19rUNlw?;y%_u1NwIbfixf+*#0my5%60>n5 +ae*U0Q#!K!!-aeXYMV>uvmMTA*SVIT3W{_+1stV{TTJkeS8EiX;*(wRx27h+{Zj!uLms??~7U8g@)ap +v-UdcL-xn$Cm_A%A#h2rCV1@j15`FTO*TNCm^5SW!D{Ju81n)XPZqgj*wd$0W-0UI*nBr(NFCgzDHwA +kmQHL{!hy&Pt3%u_yKNXj2~eaKWi`_naDC1Gp714Lu_jfq0lb;+Dggunj4{&H2DL;M7L70lqNQY)$v^ +RRnD5T?4<~%dOn*YWz{hl!F$3iQ&mGMEffa(cmhPAivJso~4UVJYLc%pAemKD;7;Gc#Rwge#4kYL{$? +`DL%EX@o*C04LjWG1GX*Vz|hfzK4EK*q3Z9#X)cH&Y^<sktGeBDe+1lY+k!@T(`kgvNK`T#O6Y-wJ3% +L!l7CvR=UsKzeSW3oA5Knvg?n#86~HbQ4cWCsM&+9+uW(JT;#{)`<McryCiz-~pq4*m_7bCOvTl%;V1 +rgPbSY?Wx;n|@uEPorc;&OO@=ToRpO&z?A@lPzQl%ZGMtWQ%1dBdEHeCM|+_;B7WCo$#lwxv9;_b_18 +hhlr$&StTVSwJ72ed`$c(v?~>cw}BXFQg@hG*-aG|zX9gT)!#w>7QKvQlF$wN0dVP69?uy84$F1mC!< +}4ix0=WHE9lVo-z#r$(MwQRr(7>dir!9eDDM4OW;Z93t7OUH#*oPoDUp1ux`We#AM*4`kCzpE(xQHg@ +qX}kTC%X$p6_}tvS==0StGNo^;*<R)|mdgMXT#N}3G!1sVHIbd`~I{f>+bmh2?sz`FS8G?qDEkS0c9) +)LyFu7opiu|3x<9Lh~0JXTo2*oy=-d@Z}Z@xX528Mt2f(E*uQAUYdqNx}bCaB5p}fEnlGO%dNVa$z0V +Arm|$=SU`b>%Pl#`2^+$=s<c>KyLx#q;FtY8ry&5zKFy=;(P@s61o@2a%DonJ~sN0d!6zRB$GJRSR-% +=4wq!Qor#?Z3@h!d1TN{rc_<FjZs|?UD%cW*EGSI3k^XI@q?LaTlE~<ewg(+jjWyRi1TKjW@k(s4LHr +Ky&F-OuvhUIX000t|NS>HMyfa~pLP3Rj+$__85!!`!NDm@zVkWIRW`IDB6mkwYK`yaTYH6_K!(aqy9e +!iS(O~Rkqt~<?*)F)G$Qv0CnWF{ZBrn^nOH4CLy!kT4lWuQ@AfCX687wl$eKT>U-9|lt>~&7b8;L`yL +3%`LF#&|kQZ&TwWtZ=}M#-!utir^B$Vb)#Kzr~HoyX~&Shvn<fz&Fl*V$ii<D~o>-nkaRT$gpmcM8Ib +wEQ){flHzd*xaJ8Wh^9HjUClo@ujnb`vN4vV@4;KRiGqZshQ=%C)C=m`3+oBx-Xlu@Zbe4f+KI__@kI +!liB;)aG?nCnONmpK-h2xrC#j@E~%_rhr$~rHy!;jECHzxX|jX@Y;Zgfh`E!yH~d2}d$o!;SFT$NTv8 +0|SZx8r4wGtJRQN9GG$KB3NDBVgsci9ADoPy+aTIMoyOaJmrY7=O0wDZ)hhrQt;sdI>W*xGSEdkXRbS +2i+;9W}<0Tw(qWG$6}TCy$@&9iR0S?yQOWhV~+%)pma(@IKd#cDxuZ$qb%??%ElX;SPV;k>flNqp;!0 +FX9LV+maVp|CQ8S&gnzzQaWtBlU44BNa-clFAPW+>1}8ghRWy>M9H){ljYUljXG2!;Jt^lW3Lr!C4o# +iH;5&mHF|J`=WtMU}9q)KxJSi$eYrVlO=VllC^YyxbuMCQ({dfukcis#d2KoJFvdtCqY2M?d{Y9V3H) +&V6nPfRcp%Rj}ZDDcA#YkyMNW6$wX%y>hdLUL~xhUknbYT!RY5s8_UTsGXWSc<{WQlX$YKAMHk{(=o8 +xwTvEY_BQh0ClB}tT=WHB+g(GLhW4LZ%!vg6&$y1rkF99cmz~vu0d`V$^&0>m)qn_A`q$P%`C9$dod! +psc-3aS}i8n#}DIJpgA|8CxnEL^uDQ;KrStDc?fa!3T*Gwj9vg;x-#YtRQc=IeLGs1Dr1ANJF3t8u#T +7fyBsSq1%I9v+L6jLZ{1R!(momKO5k_M11NQQRf73M)NG6~%-R0l9XLBnvAX$;Z5IS{PdWN%7%0Nil2 +hZWJDb~dQv6jxk=0=AwCMS%#bR#3NM4F)Hnor9FDP?Nz_Vn}ln?S|0{r$%ZTc!$&!Pv3SYl=w15?&L# +DnvT?hP!WH{pDnq6O~KE)@J!I<cLJXTt`^0Sy5Uk|S2KFp+-Xe5PeN1`=#vKH-`JPUExa2WVSNqC1QO +c~T+*!29_)+VnyL%6oO6<DGtZ^{f|RVuF}0>gUCSWsO9?_z+wQ@B8$?TTAGHybVx#w_m2}@70%C-?jI +Ij0cwo2F>?!@zp^zloojdDxIC+rV`ZJQ$3F|80hLjI4h7o59O^KtKIgllQ8Fib7oAb>1oz!u<R&bbDL +6#n38&>=fFEc*N@c1HYo(E3=SQILUh5km&Fw$M^1}^DHK>BWJQ(^%3w%GSm3&lHAkF7<5oQMRq-}K2q +$ruQ=8WP66T<yY_$c$6e8WLe-z_IM$aPXO>V+>#v*-l(p1<#^yDQ7hWky4R}%>5RY6!@1Ub*25{Cm~} +fLk$aP4Q|A0=^)46tep)v5l?8kH$xTS<G9*YUxGuRywlvhr>G29#``y^SBUItfk!%ElJ~<=wdCQO!3a +1r6F<zrC56&v<ZFbiES3R84kE`Pw@6w*G6|H7zz9-<JBUrdTj1eIMw&(8D_$(?I2e}mK-$siQK#JvZ( +gAAS_ZGhEV+U{hCN%Y^1x2utXsX}@dB4nn=92M?zAL=!C3Oi4h}xK_`%Yi{((f$T`nnhU=-F;XZo{c9 +Y=<Yr!&Zk$E=hX8hfBK=6>}Ee72;?!2F6kG!*qE__LXHrx^Wy6PrYJ0`VII7_v2>xMsPtOR74dcnX09 +m=uZ4AW)7fQajxRSGx;-viJt^251(>w3@N+?2wbZkby%>cN97eezdDySgZ)!GzLdRI<IyEmkh={)UBL +`b2(WY4QQm1GZ%dFhRUd5d!00~={5ltqbA0LOG=$sZ0yJb8Z%S$`7)*qNW!W|kA|v}Y59A~A_yDhJu3 +qT^#aXKJn^17ka$-oUSO+ma3e<wd35T#NV{--ht$rgcLa+~i|$}oP;3VkF4s48AmOm6<7B3aKtpn&T1 +7hOG?Uz2dml|sCnqaZ2gkvtAfw<}ej@kV0WLxCP|-hh%Yv-<s5%5#C<;QI4sOnBm;QtQm668^;x#Hdx +uDnlqAwwpuZA0*IjEW7IOq{uSl*E`kRlW6Cp}5?<y&Baf!Q$q{i<Jt!wNiEmoGO~fnbE%$x8VleGEP$ +us1x#zyLcm^VSeSs5+ahAm#7)k^McX<21E&Foo;1zqV@|v<qB<2CZ~@V}qBO5*tDgLAe73@W11oe>ek +|RN_l)4r9~_AMX=DdtHW?AOj4<#2SUq246GSCY3sGHAl0SFt7M_!k3U|wO!<qqP4=)aW6P9&7-S0l)< +Nlw@YCHy3}mpV+Tvt_X|Iq@Fj%vrsvdC6u~N-EY#J2%`O(pPFORRu}ZJ5>>wCnY1lx+ck_V01k;H<V< +Na%9u^8q>T;G~pk`6)Ff!V>^8f>|%XMJ;!`+znd!jE{@Z0Kwib$W%Y`I$Ymtc#?1n;qtAT-O`%`zVmz +p5i8nxSpl5Do_}>AMTS<M0YiKQ-k^PrJq1ldb|piZ!{ePE4>|2wH>+n20VDOuK<gI?iH1k&Y_LISjj4 +4bmtI5QVDHklG*Cy{r}MPZ!?C8fI!2u6EVER@JdMi75i3mqt)B)#GrJvSDZvAm8*wr!u!RT_zs2S<k! +>0d?dT(#=r(s(Gb1!F>%a-zI6X$>8AJR}REdyK_VI0e52JZGSfp@FkEO@geX%NtBjk5dqNAsTR~Bm?3 +x-V?S0%MX4*5TL1+CKuaDRX-Tvz8Dhf3R-<;`x@Ey#B@b?XS-ErnDC_irILqDb2UvzLsr{M<aEa?Y)k +l#gStZ1WcM2w*4IcfVs|7EHqf7lJaF}$mQC(;j59&3)=w53{yzKJechn!yuJC<N^M^mHA{zEZ*HGNsx +KbQ=v!;@|HnfW9JrBAC<YFEUGDI|g1!vh+F4Ny8K@FQxvtT@l1j_8}37~Q$Pg~KwwnK(NZp}&t^%?Q9 +JI|6OsaPpm7e=h~;()iu7Y!2kT2vq$SG(w5fi>G=XsQF)sU0;=uh!jNL4`<^sU^)F{UJP%eIc$ObcnE +cX1jq)+S1$X?oS)XhZ|Zl!Ne0&=mI2l*B3sw?!s)ULLk6lYK$4#F8UIb=kb1)j9Nt%ew_00)?nCv>_# +}@Hq7U75&)cG&Y?V~X4ublL-*RN6<URCfCyN#N~eoEm7JrX1RJDc(Q~Z@Vhbsb3`f(!D7wGw4Bcx7pB +1(h=^Ta#Yeh9=33`C#)LsittwCfA3oK+S9iiZ;>d8P&GR(A#?iCqFpYpFwQ^yGc*QRn{$$Ky<BzK2C8 +PyEjLMh~62fi!+zxaoW?v*MWo`uZ>nw9ARaurug3Yu+2v6;WZp#W<PsKlXBUFqGJkamXdwN<lXvV~do +SWF8^ku?p#%$5>iStz!jbTIL)@4D@2e^o48>jq!arO{70Tx1S{8PY$QU_q!V0s?BmF*jgMC&&%}R<-a ++gy}QS2jH=88o;GB3tou^AbfQL(`B~~i6T#L*Ayb*qJ=K*B>t)nq>roJN_=a2EXIN>8T#wx#{q6`YuE +|wq04pbdgtZ)nBV*?=9xS#O1s!^#1{+3Xrv1XNJn(pQBn@U0U)WtYe)Cl1H&;}4G~OHq&L548IRGu22 +yeX{E$sDJ{(@n*T_+ZM(kr4xK5aWb{NL>cG%vmSG$2rhR(QA&BK*-$_^VYs-qApZm=#BfSWas?Q%24j +DQ+3^=n;O&H7MP_e%a$@p>IC=)j9L@L82eR=~Ba_<E=T8s9>#*&TwG2Bp$S{zpwdic&NEg>}VXx1wbz +ls3-d1T|e`3w8$SLq$v2JgHDUqA_sRI?!WfyMapz#iF7Tpjd13FbL^#KU7$_M$iE`Vfe<bwljD1A=9o +N9mXQ_i;C_w(n?h@pe;@PlvNS;u|}t-RM<?UZqi;yQEP#00RjP}xDEGPzvdxuNtZt0<3;`qTd4{$!7- +IEx<L#V=4(`QI*9MxEunhVPVg2Wr0oVS>1Z>yuE3swFP?c&6*~1X`boM<(WRP=9_rMrc&JmO01aNR`( ++R4UbklL)gl5h3Xw-+*&E)mH7(gifib{^RA{nV<b<o*AO8v{xNu3gjzb)RWa)ge<Y|@E3W14<Wl->)P +Xc8KJZzoQA7U_Fq@-icFS^&-Jc5EDve>aGP_$-pU=?=5Xem4Nq=|)P5^|%Oh$Hn}>ItrP(Y<<h0Df|` +bdhGotir+8Z2rO01?Qa(afu8ec%Zq3VIEmuV3O_1moNn?padPe#c47EHTXx)n+tW&OXx!SW~VWk(X3p +O?Vrh?K`~)x=rWZvVoACeHr=o?yGu=;%AiPIvT<^3s~Z()NX=@3fkxKfD!SJ?)#0hl0I4~b$W=Eqf?b +ueg-6xm7<;FZTvQpQ(xl2a0^cutK=)cmh$|4WLJDnSV;KK{h?v4IrGXI1Gh0pNr;WRykb`cuW$$tx(7 +hIOT*RamsYY9N;Q-Z3!LU%fHnNmg@xJDKxg|hvO19ltJ@*B=*J}PImAR*!hGl2Jfwl%Z<nD=(A>@QmF +SY?1ve+y4MNZe+y7~()X|8E;q~;Bcf8t?vuJj14P$l}cq6BaV2+7|}H6>q9pMSMG;3rvjRcaPfG*ja@ +ym?z{1Pu^!?o@Bo!;q~M@`Vb*9!*~3S~qmBBNLU=USeWoQk0HclPuMNV*ZSQQY-Z|&&k1SbQ6R|$3$= +Gf6={`Lt$>wS>a0Ho=hQkYlwtm`Zk*9B;-{9Sg;-g#co4H*~nG<e&GjnubquhB~U@%g>BMEGEk@SNup +o3aj0iCt|$dm6>bzID3P_@u_k{;-97d(0xp%Xh<=(5de5hWtI5lh#A5{;>YiFucu@M|Txf@8j>H32DS +6MT?iDt9qqedwC7d3oBu!i>FJ;hA>w3e1um{;NSX}cs6Y!vVq;6jJi|(~FtAD2lF+q{l^DTpUV^*sp< +*A;>>~`NDJ`4H;n?BtBsrO`|A`Z!MrvC##3iqc9Nk47}eT~?QHd>q7^$%I)HY+DxzIXz3uN^BN0IjN= +&`$!P`t(G~?lA-`lwjYi^1z}twkff^rFk~JLE=7iuXVRRqy6f`o4=8CvRCMIZTgsIYY+(3hse7JWzk` +s?ogq5;j=?r0tQHSOHOI1_9xg|CV^0*%2Q?ZNDzj?DJ-rIeE_Sa=zo9LU+Orx?*YfSS-&-b?;g;@7c{ +xWiDR5DC|S)Am+*-!cChB8eeJRbbg$b?=W5^qGm&1i03F=b^{_`uGPM!*n+Tgt$Ak{KmSwV+{8>f!I$ +D}F_8`qrndHtB*p;5$<uJ(5&7xkd#E{MS>Z#FFuFm`-d2r~Ki1Xle9L>O$4c4d&htXK|=8-STFS=3%X +J}kU7P_RghtrLTXWhS|du>n;MIO&{*v)kw<a<QzQ~88Y%Ni}f*yBfN(khbItvgj7e#moFh|VJ(vp?11 +pPH#hFSH-BZBn<U&XBTp_q5rR+p8L^0)Hq(4{cw#THPxu`_dKMS|C&+0N&vQ!hr7S9)jE5QFsrQb~O2 +Q%t-M{%UF~97~Sh=ZcUOM%&CEdx8cFcG%=tgncOl*ax=5bQ;L4LnKd4E=(yTNU*cI*mE;7OA~jef;?T +l+ZqOqr9IhxZJrz#2Qm-sUJtP^Qs*me@OGWou<mIR=HPnrz>Mm3sQT(y4MnR~R?6j7_1Wl(~4jsCO?w +tG8-_vyi2?{lqdNmmt*dlUP$_@~jNbnRD=o8h#>Q)qT5M*6~rJcbihCf?u1Snc7o$^5nRg$vDIN6dz` +WS9;kWds*Svx!gmv6=>vR>HKy(+=rm}Y}3D+HN>3cFm6k#+N|J~WaFzHJ%=0F`7xm}jht=Ti4<7hD2n +8PLK*+J6HxO-c6Deyg7ZeoT9AYEI_qO1r0Uo66QM-m|HDJ(M13k|w&8y5$Z$9!a8Kr@NuZQ%Dr~KAt5 +!Xcio?_|$VXbgz{xsN)|tNh~P^5}?BI-nR7SRE1O~LVj*&B@6y{GgmyU#vBHyBijX+urCIPZR9BpK%E +S)MMGRe^)R5d%#5Yv=PfJLbU#5Qtt5{Ks~vVm&T1IpR6zGU0|C1nYA8&vJ*ny;ICl9GKz0wPur`N3pm +)=sHFU2rQp}o7x2Yemnm?E+ALwfNNwy9&vxgt1^JM|p1Y3>Qe)Si=ghaPOrPg7N;9{dOKu^$yNr}EwT +m-GyJQPHrJ~D+RH!(rD)(zcj&B}vV)A})LGA4O65g-{sru?2`ZIT-&^9#hFhPf-qJ)EyxH+8QJs1lwU +EOASfk9>(XEdYQRfQcQ{lw*Feb7N^jWJo;gPI;d~L-#t!k2lY7sF=;n1R&6*&h!}sMdk0%I92C^2EXq +f$5SJ&93$_mXy{%Wv$dg+sl^oikkIi&Ac3UH>a({`qOigx4;hjcj6}!m_fs|{{R6t!Dw~^u-PGbVJ%R +pPnkmaJt1st6LnRe?OtOq3=RZ8xVOfcGIVY^b){}`aUbUzUJnWm3O!iUz5IK^^y}SA>R`u{i7s3o!ft +K~yhVHdMunjd~%JU@R%%W><Yi8OQ0>*>4sz8jcDFDcdXRYBeN6&g}L-$&7Zbj*>sp<4oA@ng;K9ExmR +<NrfCcEosUuvq(cJn;35_|Qy=9lw0upbQ-*XSM*^9VmuBNJlYzd@pPfOKUeG|2nGj36W-^OZrud)1Zg +avsMT^z<~m+9D5~cC%ful>$gffQ*}z-b`T$ce|=Hm623%OU6xr_f0L9xmY)MS@!}NuN5!^Wu_dvH_z2 +!9vovCDEb>^k3Q2fncsKq1}>?R{k<qHVMkL(>AJ|`Z#GFV^2qJ-`6T3Bt96%Aj|IZ*$yYaZubu$d^TH +iFV@;Q=iG(pxA@<Xi`g`sRO```IC4<!N62p3{SG%0YIrG>oUIYkpq$A}C)y5quA*fh4RbC5s3u%&vQ= +wV9CZ6ZX;GyB82v5c3Q3y!}K|P7G&VYT7Pr3vmQH+f&jLJk=&LPkc&c9seB$%k!7v{K#8+MC(mIAs)? ++k|NlKV6eZe!UyxzFfU2D;~>ykUq$DbI^Ebg#`MW?23(S_y)iOYHbOiRL_@ydQRuQUs6_hIw>dI=;T= +`R=CfwRu`b`Mb6atIi>wN@`Jb-$;L(Hz*+yZeDqF$SNHw+`O&;taQzTx>rS)how-=Bv-uqPw+i41kSR +M0oUD7kw;1li!6ZvR)#t6Q{X;<n^uK2UIf)Ob<&>G%aaHO3MnL2*~e<GJ?~E{UjX6Fv%{dF(c3k@)^W +&I6tXGN)&HV78Cm3%O~y5il*c%$;y$gwX|Vyq{=DY*V83}$lG!%3WzG(?;s&FbgH)m&9yN6z;~iCg;z +9-|a7Q<P(_LlWO^gh`qd47DQOz?oh;^r@q_rtjo@O6N6jYp>CdzPoQw*n1>N2z6uXfRw0I#-FU`W2{V +X<z7nDi)BA|PQ7kaY!mlB(1ELa{J#QInydYP-#KvorA9yA7FBfd+`~U6Aiau*^qpIppQ4Ss3d82=?gc +nfJpqbg!MXxp}-5ox%`4qoUoM_%q26<aY33ND;SF46T1s+vHI)BGS6>I=a`<Ewp<qqgYJwNG9;vV*2T +Q3IIJ7Tit`-geCllqAqW!8fG<_A0s=AJl3Oy>>db;w%n=eebiGe5elV3y{OlTOe2zGfOXhaxWR{A?N0 +A6;e6JvbrED%QbAa9^;w+U!$}Myt{aTnuLXIesg2yadopq)e@5)RDQeJ%cMM2xnpqdu&3RzwA-;mN=* +fS8OEymmq)OTm5@GT@dQ<lb1KGe2$OvIwaUiNnybvsv1*%dBH#%!bXq7Q!B%Oq+n<c!97wTT8oB&d_s +ljp*xr-#oq<T)HuQ~hv#!P#04B3*`K6PzrUh_a52Y@`fy4UKVWzQ*a60IstWyuI_N|L<VV?(9vF@3V~ +LUm!}WX!ZPbgx5toFl@69|h4yDT-PtOG@5w1x8s`AxQ5NW_!VkCkh}CgtFtx-_X5oUOVS4L8s&#LQE= +Qg$}l9M3~N?)`C9+aC2O%f<VjghvDFA7v1aNV8Ui<aVQFegdoX?H4^5!&Y0Nplm0e&3~{@d$0{*5;-{ +ZP_d1jX6C;Z!pGXOtN(fab&GjI=qZrvOQ+REd2RpmMU^roO#dY~#bg#ARRFo7qKS|hCSy0`*ASx<+)Z +#lqt9XTh;!LN{5<c#&l#3@w-K*z+@tn!{lOK}@)Fs9QgzjE6W-{BX<Ew=|cnr%8=?Gul_ta%Jbgz{_H +N0z#Y_P(e7VptYRtJ6sG}2K}7u~nqbT@;_vAP(dg=-$rmna+Pp0dw4WPe%qL#Hh|rrqK!xd;6x`%Mgn +q3&4#Nqa!|x~bwiY>3Rdo6JgqFXK1KfLGpRo`qKsClkxOY|ptV`n}W}HFd9f+khvUy!pi4gBv;&yJ)` +%3R$wzJ)C-Iiuep;qn1f#G~3nRz$G14vYMPpAA89VD_)Rd*Det0YWb{gzyxFGRtb;1xd==wU;VCKa0y +gfrEJx7pJ?N%hw(r(y_hKF7(iLXE3BZ-yoiPU?%5-&pBIio_u4#52qWDP?~Seu0IZ-&7?@p~GC~l7o7 +w7eQ{M-E05cB7x8usQ(7kSlLeuI*Nq3XzE>#^6P^O=dCRA^_G(J|)iWh2FIXr9<nNUkyjqbHl5^jflP ++sB(8W~>Kg6UGsA;%xYq3&H=RxMH@M&%p*&>+k0<?1iG*DZt0kgqm!2o_l_vNkl#gA}i$73xjN_;6fa +)Pxeb`j&$qxi8SY*5&yYFMNQUQ{2$=={}G|8xWyLb*SwmB5`v@Z!*l3Glp{H3#X!c?Vil0#DHvpH+bt +9;6$!heh~XPy$Yn#Eie<ySd{v!pdsQ9)u^<K?iCDOt0%*|Hi%2FPO^@MAg7K=Viu&-R9)<<VC>1{hf{ +T}8+Dwf=S)OSDulbB^4(Eh_9e^b4Wgt4-TRG(oyLro!3fI)vt8$AI6xcy1=cW@ingdx3N2^e&*Ig2)_ +FAm!d(vBe4cV3YJ;M(!7~HNd!o^fe8^dq_%Mu7-(=^F;lWv*6+Y416SeaxxjcP~L&6~yYhf$fMPI^$8 +^@Q6I&Vb~BX3FL2)4y1Z-9aGIrL)i1l+PUI2GGG(}Y~AUpl<5?sd10ZMG}JfgAEb3n-%(lP#~Z;piJV +Qsvy)CQSz!K8C>2D&>C7FLj*ZiEp@51bvmFK#}6AE>G2mbFIMcHMl%FYfN?(hVXFa$Xjw>bak(KSZ{6 +e$O@gQQdiz5cIGhv516X=<aDw|4C`wc=Ri#rFkLzjz$I~0%M({K1%?|LGKkA8y^#@sJc_4?nf=Dpc9e +5N?9oj2QV-M7y|(52G7oAa6drptN}0}~-=VBSR2yvOrl4i2cFpPYIyP|0WxwiP$>@6XES9midOD5rK5 +^blSCFU`R9U?V=B$R((6r=*#Y0T@mHb&p_gay2kD-I^+7$cK3H3%-b`6|mDft-RtYzwaSXHm>v5uedq +N95qT&^&@=Ywk6P(WoN8kEyz<`pYQS_tGz{&1ndVCMKFqATmB-TPjLXVMTzkd*X1X1sh>pfWG=*(?a* +Pp$tAFIogq4M72oXV4he{HibUD2&+xyT^NHao=^R{{=@Otm#x#YR`+B0776=wXmu=5K7jb^?7c@j6BO +r0;+xU23jhvr`;!B6vv0dhi#?4I=q2Fysi=hBBxBNAmwVea!;=jcL;DGth};rX$2TIu6oNRodO6F*TK +5DCx%hVT6P|(Pvy>ln*uJOQp8&+NjFvYhJ6~+G3vXJI(au{o?dkc(DT;3yn{fUc{k@L!>?!G;Ln;?PT +*m`QEl4PqMk-(v_;BIV2}nhM~96Yq@P2{7exWvMPH(JOL>!;7G)XB;z;qIP9t8lOY4yWkV~kpIr9=?0 +$I_j($3Jm)}HSo8+3<g{!1Uu3_1@KonZrOH%59X6iFnDF*uDnIEdQU<#*J*;#oGL)!>w8m#u-Z?Ie@s +bZYfLFp40m;YsM>eL-Gn><tXWurtqDLc5b^$y{hyopvo4V6e~u#L}v~O5*S|jqp|_blW5I1$yEw5?OD +7yy0G9y)MC4Ic`<(Mg5J$E}iz_Wp{WF&;3d+lk|E@Z=|sU<jXY=)Nwp_;H}_A)8Rm>XHyi!LU^<c8ah +i$Lw42E;@*7a@zbSG&Uk_DwNkzA%J5sxJxS-O*wM<1O9rGSi4s100A9w})M9!xVTtuKZlZe~vOvg%Dh +Xz-COdd6?{u<+-36g|fV@3MUXTvrE;tp;qlsLp%k1i2p)~qZbZM$-WpsJ-wiiSCS02N$1#j7+Rzi*z! +!!=%RlZyqa`^{zuY+l?!U|MI#RM<!1Mx};(6M~H_v1nzcj}eHOC6TCZ-TldB1hi))zQ7yWF^&k!wz&E +n6?UtAdqwmn#=Sa5@K5U(S_(0@-ftQQn%94y;fvM+ss>8d;@Vv_67b`dX=L<75;AIxr6Gogw^t~ZCV< +l$T_pV+0nfgio;!D4euX_(<@5rp>%wCFCa08vfxnP4Io1^%WIs5BGv$=>MGZ|aZb1h<zx@L+8%X8Ucb +$@&P&DY41`CrofsCh0a0yuns2v$lIJfvy4Qxju6Y3m_tb1Kt3#2qdP}OX{d&#*MqHUf7p_}YbmV}cT* +tiZ0o`k(w$kAzt2bm5s|RI=w!DfC>)Mr;z^*L|1>~Rv!y)tNMK>^-W9EG}TvHl;-7g)W3P8G8t2dL%O +5!#XO>-*YT09chrYX`1KqVyQMwZ*#g?G@s0($5hb@$~NI*aMtu%q->3BMIK;hndhk!MW_1WuW@e7<-+ +?QD1+=hPHDW$I=0SdC{uIg|rMI;Oy1o2J-1y;7cyc$IybT6NIx<^jG03mvxWwI38+8pX@zT}m?Zkl|H +PO0~*uX!Fh(Fs_`tH)mcte$Eiz405U=g$QvtVEMX50c>?BEO+#t5+P7lkHf*|_T^zN3mbH&WWA7cdpF +(h8(3Ka#D2WU^6-K|2m}Iz2zM$=cI)UYar54pOVU}ry>?{1o3jqlU-BWdM~%pPsYd?hVlzI|IU*=FU3 +a$$&`_$x^EKo$=&iC{_!3LJ0K*QcS}7VfYJJr!>pfLYQeP!Cb#J5q-Fte(zh3y3N1uE8b#$+rWCT4LA +hn^Sg3~qKGxf^ch7r_j2qZ`-Re~uRcd#^XA37Dp=6N!z?Khjk8r>FmKotP*P|GbtM&-Mz!tsc55w#o& +@4P|_gp}X4fit=Aq`KGBjqb5Hm=lRn-0TqGc%2^JqkG}c>1CjK5Y_a|xPok#wC}qA4C?i!c`>6Wnn+L +j@-8`WNw>!DJ)D3Omj}ss^E*5aPYRs&iMoil#3lbgn#8)<8SjSyi+L<?`qd0}5J)1C;*B5Xtn7=D<8m +3*f&phPe}?Y0a8hY_=7W@_du4}dupjbkAo7?oBgJEulCIweveJ6M;pxMxzufog-Ot7RO=URR!zpL!*9 +27mKtp+ClIX6e0p^kN+Cb9QJTu!byo2tw!eq6k#)(s=Q%B?G$S2_ShauY)_vRq0M-CIDX5)A}Z>6E#g +ZuDwM<hjgWj*8^MWWu#ZQ1;gEE_tic6z}#ap+Wh3;D_hAASn~oCxirdu<+t^oBFGclUnqZn*KA8j2Uk +LScHooMTN=)!y}<@y!LIpm6DII=a^Z+-^OuhULLayc|zgKyaE~OJOdz2|lrT-z)W1a$7-{@`CIBosRC +cWSj-Aczvap@HTJgqYeqwX~<Z5@kT*K_mV-=o|A^la5o#zcyY*=04`7cj*eVWt=s`Ack!OnynGQfA^~ +NE+;V;Q%S&LU^6NM<zNveiIePYh1tDi^sU-JGC=bTDWX$>Uuk1@wp(#O5MuH```flC0R}Ce?n4*lX3J +@a0@azK*zmfoG=J$F~v-jI`rVdH$ssm@@*Sh9`@5e#IFlN3V)mL5~imR@=5;l1AlnSQkxpBX*V|h?g` +z1$nH(v1q-D^$3q*#+ojv{?Kjfd0&mPG+?IrK`D<^%CS6sIkOdp^M{R%hOa*U`N;X*~}Mclp#)`0SYd +LKAHSfa82Y)T>?aO2U!cruV&g5B=3He910)@se7P`?)+80Ay^f=omp$lM8-P<N}y78Ibs)*j(G?*U`N +;=4~@%d5?e_UD{On&lFL47^FK7B>&o@TiEY6q3l65bIi*>pnGi;2a4Z3pg5>|q>kDoxkR%nr2<yrotG +*wt7GXbNuvm|-Q;lXSAV%zO{7nvFua+rdf!TZXAW+Dx{uiElFQht#3in2<V9GApY@0SVW@juY1=0+V* +pf0I3U-(UoLO?hB?uQz#zk`VGeIOgcbE#`l5p6UAyol2xzN!J>-|e!01USdo%wu9(s+Z!$lsL=#4n!h +Jgj^`1P^Uuk&pdH&yGB@d3yVzop2p>NvfVM{eBFc)@_=O7lQ2Tk`PvV2aZl7_R=pmn^UIKYat+)dTD9 +V^4NXd*rj&A=KMtESAi!hfbM{l5z9uFLfMTS%Dnuo;mUSuM#4~80Z(v^%X(-f1;`dtZr)rYDs7vSG)Q +fxMWB^j+{4$Q4c6jXAsMGvDHv`1(Nr8krH}wOBVyN8@)ZT<@aiE3GPiH4s2der&w39fMPL^kb1yW=Gt +$^@Jc{(%K@i0q{6)C@AT`F&Z}MSRr3g-$t=aSv9cNr`(fJdSw;>7Kt)yXK!Il)3Q_@SL&4DSQn7dKdV +h(tYR>AtW}embz!3E}-Gv0y$}d0T(ak$~z`v(ozd(}X-6MIA_sIKR-K54L1sYHaL;e*4!Sfo27d6RL; +s&5T#&Y&GBSV`9EfPm@WnJ`F<3#1Nyk{Tpzg%q39pGL}lD)CqTi-pNcse*w4SAl}(n<2E+(Z_*k6-|6 +)v?QJ`X{+-V&(ma%FJZ#u&KuR(E(!a-kv41n@Z&5`?#iwbAW!~kNXWHmX7cm54pY5ADEK~khHYRsQjq +=R6HOd`%Hhvoj8$i4xi4Hb-!?pB_`WlF1CA{bJ!)H5S>00hpLItD_HCEbbZzXxCn)FYPv(-m8C^*`|_ +l$3NvigN0W~kt*y**GH94Qk+rqy%_QrZ2hQU-zej#`79@`jTKv2FO&|80fs<#ESdFFYRR=;$$ivvMYb +)<v<Ys}0n@rxJ?=Zn56*^L_ZEN1cM({jrji*lA0N%2+hZmKi?z!|299X~Uhp&JJV0}CCuI`s4c%&HZR +xiR~I4x0*0LKg859K3<C33};JS~TYV;?(>nyJBPIeC65l~&+|DXeOKUmk&EXmPw5DoTz)ed<achC_@u ++v#^;c>qRU!FwWg?p_M*=|czZH^g+mSj%aF6l+d~H`n`w>~Hg&Fcn13uXiuw)EZAu<muE7pWqiw+PI@ +(;=vDxx5to+>s$834;+_@_{J-OYZ@QvN=U4{MgxE~#6Up4>fs%~Y;bDWdO)|NBx#=C<PgnGtzLnta*e +c78J5Z;7@6L4mRxbmf`)A8*Z$g7hNMrv;v2fx-{0K)Z%|7E1QY-O00;o{RI^aa=VxX-0{{Ts1^@sd00 +01RX>c!Jc4cm4Z*nhVXkl_>WppoMX=gQXa&KZ~axQRrl~i4C+c*$>_peyQFAm_kaf<-g3kp<L?9`~gV +A&}0WYE&eCQ6Y8NhMH!{SD=>TxtV%dXknq!`a!@Hk+3p>h+(76B-TU{v_#BZ#0d6(3RX~qe+V`)6~k1 +)Iw2gGA8M0Y<^3n1ip)+)G`&`SW1;-?I}f0r*VW1we%9mM}A>tc5KPy<S%d{f5P6SV#jZ2rO^(bc4ut +;0b-gNyN{=qh3AacRn7S4Rl)|YU4^T*o?7uOb-#T13ltaAI}|BJ^N{Ok&W`O1XZuQGqrH{u5@ojB?ca +zHjfMS1GpROK7W9Fj(33YbtNhmJL;bKy$+Z=>3a;grnViY}D}+5zWlBngCd-+0dwLk*N$BjOvA`E5lX +(?FrOr@JQ0>_k?&#suWJx1-P)bj%*`k_RxmGd-cqCKSj!8J$g_zr(of-ro$w3GW4CrfjABZK+!`&}z9 +U}Cp(>>mHU~Ch5-4Z_NM>lr?cni@LDRjdgk)4YcoGZ;p>Y8>7@9_dc6#9y>qBT?LI4@Nj49KOQ!^QXM +azWALnSMs|c{Eu(KOh%Q;}redGs$9y5zGixS)qLe;UF0I=ka$SqTX;cTs#N$gW+P*PZAnT=M>Q_nlFa +&aum&Jww%wVNxwssFdr=rW?nM+WN{A4!obOly^zZ7OMgat9R#Y3w&I1+=9DESiUfX<UG=|usEpp!^#X +D>^nqkf+W0oTT8Y`g^!?FYu$=qb#?YsoHr;oTB=j$Z79@ZVWDe?qGRC&4XPghI;|SQhPu=d_hwkUQF3 +~bU<l001$>V=qD$PbCx2B*@u}-(bI`%tj)~Fx-3qR4gR9^Nf&oNFD_Otr*fWdZ=dgDAstq|!}YCgi^` +XmV_<Ne7I0-Dp@g_%A8dUA9B_$D4<8&wXQ=%miM;*>mmx?d&Z)p+{YA2k|{R0-#5ioLwnW!2afSQQwI +oK`D|jk8*{9IN~g505Lcds=6vHq{B8Q~vEa6$b|gR*?4fLd~sz34I5B>%vNea(~12uUDOTf3?L@^a$3 +`Z|EA7`|4ETp_?l$3VvUuWnWrNH{q(AYXnN@O(`~4!Evb2@lE3&P)h>@6aWAK2mtd`vryn!C_Oz1006 +@z001Wd003}la4%nWWo~3|axY_OVRB?;bT4CQVRB??b98cPVs&(BZ*DGddF5GcbJ|D}{_bDV7uVInEy +mzDw{c#!3fth2*x=)(QogN}N=O4tA|zHbgs{JUpB@R2kidpqYWM1>RBUE?o}TG``enw)$N3++tlu<Sb +lbeDx4Lz@ylr27pe?e;N5|9~3u=dQBz@bXtH2c`72O5DOV6|MeKMK((y?_AlH*C?YjPk{K3Xnq`cg}* +ycS=D7feM+!H{$gCgfW}E61LS1gs2vg|Fc>2+bD&(|r&|<4!1SEnFHb3}RN59WvH*0aas7g{vY}FD_m +JB3HajHP53C%PQ&!CBm=5jZShE_&St>8ID;{#a9?1y0gPCbT7S8C?|A6*r6sJ(EUP>13x}LOy$WzXom +~7+AtJ?R4~+YZ0t2Hf*CosPoZ$7ir`@gO}6iz1|il@0#^<fJT&uN9EW$UML1DQ8{V|~bSo5gN;kq6Ax +?8Y8+g*e;#=tmUkS1mO?ga>*OqGVM!NAvs1X3(SobvviFwxjRfGy7bXKk|wZ(`fg0Bm<=KaH)Q(joar +WfSF8{u+gIoAa1le#2*13QN8@e2TP&^c&D13@z-hBL1O1jy3IX763Q-=kXVfj-tcom#8+@EWqPG-lzy +2uV(+prA`QRcQNqfsF&;uHLzNhZVKU=54e0z`JiWd#!r6OO1AiYII-g^qN=w+ggY2`<?rCw_Yad3b8a +X8#B+yD-#a^ISF7%S7=*$DmwZD+^eub&!w^bRlv=TkYE(q2$AVxFCTh=KQiaVlC?o!lN^#C=n~CC3GR +S>8SesR?cWke@03gQq6#6~|Kh;~T`X_NA)p&x5QHVV43uWkyBgM3&Z^bQN%eW9O4RRSWZQ@8t?MTymE +)tMVHixPEM|_LBPf1j&vEz^>iw(UM+@%iSiQE@=+yshwL91KPKlx!IPtb_b({aGmyT%5CzgD;Z(h}It +?OpD*J)n%d(C#s>eTR~xYqt9+|>S|vrRi@o~WHAAJsk@oIS6erPSYC@=&h+c<Lz|Sjj%Rg@GKsNNwP< +dGjJyy_tA|@<{Gc#h;~0>3!eq=BnlK$F&-%9XgMW9M4v$B4azeUZx)eLk-1ep`<DVgU`az$m+&_t#<$ +BopoL7)vVsTPQClCeS1xBsaiQZHv-*$r*1veyBMpKFD}+&t+pAeRL#&`v(>!o-(`WGADMYq49T)2YLI +0Wl<<bJe*Pe5+0&^+$ZLDxnYbPa&E?~_neZK?j*!cNF{Xo4#or5&P%udV-3Z<0$wINX8f9%|ix*ltuo +%^f0Nzq7@WqCl*@C6y?;@UO*e-uX0<#AJGMf=eC^bnR|2Wb4N+T81SKFHjnvbP3#_ypND%!qh`=gmXG +G|==UP?fr4wypW*q$>(ePN>jbSPaILPU8wAwJf6`s(y_KA)E-QHxRz!qMq84A{l$RQlRG?fa5zl<hGi +l+f2gW0FhOSWmnJ8t3)lEaZw9r}lE%IC?Qflj2!!f>xGkRPt@<vib6@9BAOMPgK5uantts5bcUC6xZB +}1~!QG?AbFjj%v-^7s&RGCqN*s-f)x_kVqJyIgIMf(6dMEP+kg0^}-pt0C#CNQ`h-qXk6GijyE%{!`M +~{tbst4p4jddn>1`s?KVoqP>Y8Q>1_wih9b}a<qf|IH^o3f{%kUc+RcRcd>nAW-iRbFsVKqRh4?6rXS +-})S=)FhglkM(GAg3~El>Dqld~Ad!g3c;A^+kBb02E`ksc?lE{7`^di$2nUZv9BG0hQpzPCU`py5FLp +#eHO87wp+YOMhg!_8Tem$A>KO5rU7-y9VABgzB?Mp`Ef0oT0BU3OAU?mHU&1vW}cXTA9o66(geR-Qnr +kZx*n1^p(IlhTS}VR(>!*_!5lHUEFguFQ3~+3CvTY@v1f$qg?(3;jfjqJhmR4E7h_;0?}S=*8@GoMF# +!t1DgqA9~p*nwZRZloKj|qstJXhfAl+SiLVs5HJ{Oj&?p_o2)P1aA+aZWsd$PrbT`!OWQA2Y~<r=c(h +yX-`-|4Za{)xh0LZ-sZhv*on)|zS@-_)v7}urZqjZ=xn<SQvL-%xc$9F1AA}RI7&S6MgaW%bU=Po^A| +j9Co>Q$<{!VHZinZ#DDWNvOz(8BV4`!pW#XQQk4o%HLgj)ev;2^2-#S6Mttit_@7xI`J+Ve!hE+<eLe +4mfX<2unJ!HE!M5V>T+Ntbi0!IGSZc~7~ANO>xb%iK0A9cNJ{iqb3RHw*4co%AEy)0`A(+eM$0$n&eH +;|o!+d}`og;c^JF=lxMKa`>7FQ=l=>QO(<sWqa9iO(_vN0>M3r$4YpgN!ywB2Xnz((PZXnImO<VaOUo +Ar}`c>=2XsQa8;KQXeQT{Hw}x#yX<SteJ8iE-PZBOR@~Kss@W9A-wItaUM!YZ%b(O;ZoA#>>Nq#=eS0 +)uk6i@!q#JjGxHF#gKCYZu;<U}qlcobvI@N>_4P~e_8Mr7{zoN=F=bTPX@N+0qvPyt{?uM*g&5`wks7 +6LLz(;oh7BVBtxXh!6Lzm@@CFq0(ENaa7b!7!$Hf0<H8!b=zYvofiT_<F?oPWDI&rSCi=SZrBgz$-xE +z(bG;OZwcT3grqY&(%l>JObCM(TX%gGrtHXz&QBQ_l(ek$UI*!hxjz(D^=64=VqAq`s^?oz$0={{pF_ +mzf{K>h0Kv(R%A+)Gl6Uo~iaA_M^{M2QWLrd@8f|AoicY>r$*VhvcOsF_VlhWGP=XxAa01%gofO#eJh +8iE%(QT*}dl9}^4PkPnN5Ew7@x;$Y*wbdM-_<OTJB7~ogl@5}A>9u3QR94<c#D*YuxVlyIY8=Z~0t7c ++j>$R`?;^&<BsGaA>2L}K3JOz~vlmo%fD|-cB_kFYbV}frR@?pW3|EGanv6ud%!5*Qv`|k(`M4tMbxJ +Dinc`xJexfq&g5_>dR>p(2g3Mu#t1!AT)y{yKyDKWusQ{OHc8>MMUj_S*oIq?CUL@4BGs#msXs_&<%U +O^x}ukLy%T}R#~Wb|`qAaCX(c4y<!huB!9nMvNK-rxVQ`&2&k|6j!OP3ryqcUId!`6jjd4wWd1yKYa3 +nwNKPvY*x|{sB-+0|XQR000O8^Hj4?iCH9was&VX%MJhlDF6TfaA|NaUv_0~WN&gWV`yP=WMy<OV`yP +=b7gdAa&L8TaB^>AWpXZXdDT^IYvV=`{_bBf5RP*=N42jMn&tv^96M*~*v2m$p%k%}M)q>+U9-DNP=E +c+>c#SlRN{Uq6@kdJGtWNr%!{tBsvmghKMlt)8ut3*c^@7|linXt<9pS(g2e`5qWPLjCZMN61a9D2{m +q47^n1IFB@dWY8Un#lS_sI;YZReF$t|bIM|?%0cBnx`U@I`me~i`yY=;N1TuDPe^-k&Z2LZ!W>C7HzW +EMkMB`M<hRZKgqT|!rFEHr!9(7C<+l^`nJJ?IJnGv{kyh6eR3hFK;(C9USGn9^*T>)*%%@XYjgm~ye! +d<!=~3@um%)5LC+%=0Iy1Yc>U6Q^3F5y7a)z7erINK^~~lb|u=CW9v-EHD}Vq%_5ERmh{nnPM4II*zq +Py)}h~Pva$w&=6C2LW!EPnZ_%@0}3AT0Hr}-26oP7Hl<PnM`WH8fq^3URNXs3PUr6KSJZ|q@Y(AWx8; +Z}pjtPXb^NKCI~RCOq!SQS4P8Wfl@gShhQMVCyCLoAg#anhH)<<bA;bowShNU%eBs-0@pZCXKzIBC-@ +3C|cf5GHBVSUQPN{ww65sBq1w){$G?O+V;so&ApY^^{ME7Ah8ZKTO`@wKA?$75in9QIH)9!3B>@7##8 +BCY6>15vb0Op8=#7@jAk@pfu1i4kDWQdk=VY1X;sJw;<iV!yJ6{*Yta_T5xG$Om?q8bV%*J-{KQVMzp +JOZg~3*I!R-l6V0t1h9G^=(np2VM()>5vnX-vyOmPT>O{5%fSPrCaczjCHQhU5agg?sVEWouAtsfaRP +lbr1B%kMCS6SB*xb)fPOIG4(Q4&5h1fs}+~)xuqt`&w~xq2JMbcNS)lTN5(nYX=-dV8i8QO6xJuL;$3 +#sJaVL&rIDoqMd16KCg1m)21V4Orj=_y;(}WDeyk+sp6)U6uEaTjZh;HE_V!4J7zgjyB@+32J_{^0fK +OS&J+zMxvm^~2{Q1{O*b0sH*D>{opG$EMj%j0`lBQ*4(|j&qp9Q^>qigY^4)Ta`d7*o#Av622**%&4? +Anv#?0&j?p<_IAI^+219y%Av^*h-}7n|(G%e%~%Y>THFX7g1Ce4JzIv?icH$%uz213XFd5;XT{w6T^M +`4d|WhIg1uUBa$IW48YPCtD;^4nl+&=5xJDEc*1ZIY{t=CU(^8m{Q7?%aiUripjh9ouS69JZjQBHqBw +rzEV>c@P1x7{{7L4^#+sW_|YFO&T;C;D0`_ZT^g5OcI1Jgmcw|m@Spp&t75+k227ZDEQ6cFWpF6KspA +(~ZRfX^m_<b@$W}(x3vhn2@70s(Io;klg$m3IOPW(?d$+fH`-L^xL$phM)BbS$-FLz}`I^-);lk~|pT ++b}q1J2i32_y#n;$=zG%$<!*n*0sdj8?6q>u}f1N`HntmZ*~WdtF8Fx7na#$p+^(zvs|QI_jV>Ts^dV +L{!$f4>(lS^Z^eozBdjPvZwrO9KQH000080P|F{P~ewgTE7PX0QM6A03-ka0B~t=FJE?LZe(wAFJow7 +a%5$6FJow7a&u*LaB^>AWpXZXd6iddbJ|K0{qA4U6@M^nKnuBbYj??Gmk@}li?IuErLu`v7Saf2Ek@d +rWLx*w@97zV1cp>XRZ?cAryr-gPdDf1$3OIO_<1~~$#^iF&WH4Iay|HiPRO30ozr41=vvE_R9-}bI1n +ULx{CjlQRLCBl8-{CxbfGXPDMt6$b_H8ntX^lXIl+pB{K=JPvTKTaUwLuA!SEYLw+i<)b|pBqs=B)() +ThMs}x^#5^M7Xis>fS_T1OP%S1rS!f1SH%G0bXDPU@yQDe}gH=RxwDvpXf)Q=*Xv202+kqZ4N0vpL7R ++*N|9Pu^MW)CMsSDt>L8yT&%+)$g~VMbX@H$}FNm64dQ3;gq<nD66Vyau5XAV3<)rS^2e=!RMdO5-ql +g6D6kh;#BiMOp+hwf2EjMxF}(8f(1Y#DNS8KFU>qcsZ<0=uNr>`SbLaCL%>B^jRpOVg4pxM$*UQiS&g +^1$ikYe3q^&C`atbymW*{G1MFQ-;$8HXWN{9oX{JmyR}woY#~-^cp3YTbSM0<38xE+kS@J_=^TZiiZm +dpjM_DlgFm1Ufj*)9XelU9MVLn|Xn-tz880rcZx_^`ex)z{*{nZZe0>X9qyo1{u+=0tNhF~dQE5+Q1s +sQhtKn>Li5LBk<H>mOmAxO07t`T<PNVA?_35TRTZ{*{lm3iuZf7^w^Pz*}3bBQl!8``?4&o3hH!+Yzl +Xx;pZRlT--V_c-0j<49fi(L9T@{dr3Q3Az%3&0%m5CQmDnQ?o3`xaVi=MPZ?VvngWEWbh{I<{)zSE-L +yAbl!LxdE}@q8phs2)XetXuRkPBRw0>f>$aO}E==cYo`2iEigOIrX98^wUq0&-vLIGR6HA#Va(;YWo% +5o`o9i<Or3c%FE*$9WNm@&rn`xXJ>xor63LP(p+SGCv+oT{uk_o&OIY;%**T9VsN`~7nidkzDz#Rd+I +p<_}yLyA|%(9;0M=jq#_Dis9d#jLm8od-%n#Dpoz*43pj4d#-W8T_pfSCabNp(Acjz_gpJu*iELud8m +_Cnjd0y&<(>vTWyZIYp43rsJ`ESc!D2l9Y*qX#(ad;Ru~S&mxUqDoSBosy%7(Uk5DF2L;4JgHbOQ8GS +uwtyP+#-DvH}oXKUSd(gz`_l>^Pm$AitLWMxgJ5%2R{3y9Tkl%OVqQtfHc^?=-#vGA*1mUpAH(jc?zd +JDv9T=f92any)Vq;sssUKo5=M>?e#%h5wc5F)wnTVjZLh9=v+>YWMdSW{OZMW*F|(tVo36bap?j-gr^ +6_Ld^+kx(mU@ZCvD-@Nvp{r11_cEWou^!C4+^m{%|@bLTd-#PTrsCv7>tP{G&OsX;8P*x-&@XojYSSz +(ByEi=jrAolR2sA`#^C(+#NO8{N7-WRZf)5o459}swhz1*kAIS|UE2uJ5lwPEc9U5V-eD<DSJfy6yY% +&iM!fG)?V`n7W>57DxW`uG+g@RoL_@!Lsah}4z|K(hP#>LW)Dh-;+JBd8sPEdpcgd&Xc1V<RKzLYiHb +%;2Q((8n0lZk@^NPR66r15Dj{WS$K(>M=38kU)^GUgnuA*&V+y*E|E6R&7AE8FGh)nX-{NjxWD6f@85 +JH(kYLQzqN(u^rDYwz%@X*-D|*8%GQY?$!Mk8<pLjJ<`i60K**u4qC9RdCi1)1+vP03e}Jw^ja^TGhU +;4que#KQCH4g-1T7!7B(cwvFdfS?j&Mw_AiA@tnca28(>_wYzsU6*iW!o#YXtR)t%xH`YRms<D8ywzX +u}9n4+tK;5>iwuM-35$Xb~Av(=RYOr{D$U~7raRXKgQ>3V$;7}LZEb=t+?D;yz+~nfpA(eY8R3lbRle +cV*CNSwQ9~`K`=4u)Q72I_8?l@?dgGTBMLhWwvZcoDQD3zciQ$u5orZHbBcn2EhR9^I6<gjjqx%!8R+ +6mVZRkHb3^d~5tQ{$Gr>qa8uuK59{&y0bzw%py{L;C*SwwC725Z9*VxGeS<r)>Hc#BTuN!Df2A&f-QX +=bWL1<deV-{O-e1+UQ4VymMf9FiB3EkedyDm|$E-Ma9x0<UKd`{aovv`yWnlUO5pg^##YNZ%g0H7@cs +4L(Lm@)8-eN`t!kfT)S<VUkNa5-O7Nm0h${EaqaZo-%pTm)wNsW{rxXd>#m-an|Ui-jy%lBYA@2_k=M ++9eqo2039xOiL?aT)lu)yG&|h=x`}idUtBex1BD)IUWeNuZ1{qj_gDqp&AEETyo)#$HwMZU*W6M2b{x +x;)4(tuq!hhh-d=eM1>Bk$M`DP}B`~yia+w&2uUM{XCgoqEDy0XVT`Qb>{o<NE}nE!_w-u+0!Lg(TL? +Uwnjvu<iyVp}S0TPj>Ve7voC={t^dGN2t1?cQy#D(-se>p4LuKd_kcGqd{~LRVTdsrg{bW^2ZV`%<-4 +|A!DseMR#^4%kc`6|44s$j9g4xsj|;sDL{ve#op`SM0E<tGnh26W4jhYoS*TG8A;V?&0?VXb4UJB<Mj +T+0WSo-M_R{cH6eT>wC{QJd%NWy32ud4D4S8`2fxXUB|&a3F_Ss=GFfJP)h>@6aWAK2mtd`vrt_7H%O +!f000IK001cf003}la4%nWWo~3|axY_OVRB?;bT4CXWNB_^b97;JWo=<&XlZU`E^v93SMP7zHW2;pzv +9q*h_kv{++x6*Ai$i|X^kaLU^^&+A~0y_WOJoNkEEP>fBhaQ$-k3zMuFDHyT`kCcaQGT(cuqWc0c#}b +kn=)_J>`%yt%vjlV0#WY8=sM#&l=oROUj_l}?zXrA+@Ll@gIQQ;K1W8ntULmrla-6E9flIUCX`xdRyR +@3XV9m@`aSR^&1kPU_s^tC?#Pz5tl+wJGhfVc|HT$uc1BUnPvknlEwH%u(~|gxViJ{tk$P?h$pAqJj6 +dG+@hS!AV)kmCl`!lfr4!v?ph<5Zwy%o$jTY8kx~MLWYi<ru(Iv>Ab2R)F?SI!Yn;YsbMCoQ}>L-&S| +L&ibYO_6KP9$5aCGV$*<ZVKGTUzm)=z53Ci(VJ2siEIsDvzpc}Txls<FL2G!gb6D4B=-^iGA%Oot#z0 +J<nOkMj#hE*bTtpOj{Jtvkp_jfPYSXk(N)UI!<5L=`THHGu}qnmRdc!H#tq|gmhM@9!JSXY{m%meHU+ +~XerM4`_ZBbqQ3meWGDfB;|m+8cejdl*rt|43gugF&Z1dOU|On8qpkS0c%5t|Wj_l@YmHB5?rRb_Z8q +5Yf5p-SkF}KKtw5sNWq9>H2O!9lGxfM!l<to6dml9|re#!)`=0WUeXpWF8`UMR5wqOoPdUosi0wr9Yy +*7740^W@5o;bIcMGMFJ}_U;eKiDxFV5y$D$odQLK>T)P%M8;RM$^zC&QDC_>VF!XWMqTkwZ68U$977P +)7EmJ^WE3Hk7F12;u^|pi9)A#N6>AUua(>Bq=5SEud)a`%zNf9|}G|(x(E=o_K0n<h!H9Dh+^8&M7o! +yFfCUYJ-3{|7ih?THj2@?1RTXo*llfO82*h#D;y?OH{{M{kzeJCrPJTn+ezf1x<fCI~a7o5js?*z>SB +qc7CFa&G3Bm!?HfH6SID9<i>jQbE(_0zUibDJ`{8z#B*)_ycG_ab(13|QM~i3P?*OqAa#d<{{E7UX2c +QP9urfOsbIDT5<tH{d41;$kc-%rrN=kh-wd8N?){9k7vTopnIR$a(?zu*R}}E5$B*z9jF6k(D`ioNbU +gXqSK_zN;xYYXqR-2n$t0oRtEAKW<eE0`U*y!aN5t5u|vEx!>wcfZF;rWdu?LErgOucxE8F$mb+95!4 +tEjWwD<@+J&TkO}8brqZi;fV=J1X;pdUiGO6+mL<A9zSju5gR`4nDPUlI&M^YwdKrCMmV>r=`C}`mIn +ct`<>j>OL;1$QJJ+QB7nEtO#F(sxlb&Z1L+M|S7*CT3Qi=$l;x1gBaa7hECKbsk7D?4anPqr_eBHQ6` +dNk5KI7uFT7m8CRy$D9+8qoaq+1Q&Aoev*akpCce!t~gYZ@qCujjg&L#6Cv<+x|3wvx0p<fnSK11$fD +RgrLT+J{@UB4`)7U{P54Bc(KjF8X)Sd)LC0a7yE`#7~d$xM^9XEwWi9US+{5jmCKRS<wZKb`Ijgn6am +7j84Jf^w7B<xv|3hzi?i*<AVCoob7Y3$6)577UpQm?k3op<8dxB9*<A9BOnFrnkS7_aizhZ?NzmP`KG +)_K{3`CIsb5_V?|NCfprubx7OrmrfJwO{2ugg#D*hY$8zmbX>2LVE$=Us)gdSVfT^jQt-=Dk<!f`X*^ +Y0=!8mqauaBR;#ZRjc+_PWdp%Txw#^}FV`f^*h)2i&N%+?h=ZL;QP(jOgHL<Ri`$(E6=O)7m0%EJ}JR +{NTJ1^;r0tW@}QI)2(;pYVCR!S=~()3OD<k+bi^%J1pbWqEr+?UjRJSD1Y7ru7JdhhT?P1>(W)?ojVz +)ScLY2{KV$Fs?-KRjjH^zi(hJ`1~<9{(mTLxk6U>AyA0vPa)O5K>HU^O9KQH000080P|F{P<)2vWk~` +60B!^T0384T0B~t=FJE?LZe(wAFJow7a%5$6FJo_QaA9;VaCwzeO>f#j5WVv&p2USnE`>zBl;&WFNvs +k;*eK!@t?hBW>avS=*QEaU9rF<)C6U^_*z@t;zM0wSc0WECNB8j@vv?BClL+J4V)7H8<aRq<OpNwcX0 +<oA=dQl92e=a&V<mK630oXIF?%M)7Q*GG)56k9Iw+Z0VH@yoX^G%W>0gAU5gJn?XN;vnx+6b9dI(*7H +J0&PQ^>MuU9~RA!dC=OcI#lugK<A!V@A$#?4C4Pp|GqoC36PPWKP-<gu|}&xrz#8%>g%Ug(N2-m>Q-R +UK%|DNshO7@5ws$;JQCN-*#dQU@UsVxB4y2t_5DP=mtu#x-+u>VGAym7LfWtTbUh~RWTtK`XZG=MyMT +?wF;PlbMX|X4~un*aK6D)xLSqtbTi^yUm1?lo{mg%yHk>hxhgBPZ&)}JJVvX@10%w5Jd4v!t9}}%^C( +F$U91pd8LrZJvYv%2EZ3{$B8mDyLUe9%+su!e{MzD@DYu3@S&$b}xnt=Y9<O78sz4?7#AD7$?pdBdZg +$Oo%}^Qr>rgL4E)5+)me9rrc(Ib-jyLb8%Pg1q28eau5AbcsNkactJc5MbQ&}?gR2gFfjE(bc>SM^*! +S!%B_%gg141smRp3e@V`Q1M*RJYUNNg3<m8rNZ?Y=8Qvck?WDY48KRn*ameHC`+%H`lmDYHK=~H*8LY +az{H8j-L5lv9rgYfY(Llrl6}s)YBjT>>GY$x932I82Xm_!gb_+z3MG>)_8IO*m_UQ&dy&@O9KQH0000 +80P|F{P`yH$F=zt-06zx+03rYY0B~t=FJE?LZe(wAFJow7a%5$6FJo{yG&yi`Z(?O~E^v93R84Q&I1s +)2R}A8d1322ay9G843ap~osS$rcvQgw@&=O@6rAULM5~#m^A0^pNS{vBqNt&7WIP+#W-R}8A55uSNj3 +(n~I7^1~FqucsbRo9e>C$q?X>P<;C?+Y=87E<>&_9KgEYN04DQrRK5IR=E2}C~fS1$FQ8`3$sGaQJYa +c5Ju=P(sTsYJ@0(8}W1?6s+XKuim58hdIub3CI>RWts66*Hb|U*W2qqh54PgS)%GL2))bpioMReXOOJ +TW(%?)>IN{<&4;rPMe;+{sIfpl$js25OQloK{td99XU;l%I&mj>xVQ_Yz#A%S1C7~lhwI<Lt^(->5@{ +W$nZ?qh8{vVVk-MX8{i9_iM;ZrQe`N|XYIHt>_Nk)*@`CIB2#+eiW^k3C^u5108d29mF2`N?Y+(JPD+ +h@B1xMFjWp<Mb?=D_`2F3l+*nxXQ!qH()-v`<8|pFV^G7%L9(awUE0XAjIUs|x5}Yc{NT`~22kr3zLK +OOjF`^Bp((=5NeJ~)FzK@sR=Bp)zvlsdv#&I}XzT6`gO2do(HB6$|O95h3Wtegm5(mL_7)RfL2p`6i@ +$$uIKN>G*!z7{6Jf@HqVZ0nit4SEsVihmu$uJ;FI6p}2#XKkSQQ{nwg@%$DcT7mzl>UPDS|lhl+Ob!T +Hm6)*qKM&%?5qFPL#frat{0G#p!XzlQrh+D%?Qj6rti1zg5}iTK88LG`t*5#Af|puv>*X|Byv!Xq}HZ +S5865(It_un{WKWd-VFY{9T2S&SS}qJ&L02c66tn2xzPm$>5iG>K=@%p1N|!+uA=Ao@tq^Yo~SH#M2o +|_P+RLTZUswsLh%DKsy&JKOdC%NDK`Ex%iZ4S4Ww@4r=@h_p>jNeH{otkdruf^izD^o?ytLbGF?ySkH +bl)(@7<>wlO!b-g!2x3v3I_Mo#Osz|vW-dzQ<*wfkdBte@UHsy@{b!4YtMiiM+9V2$j)o~gO_G1n6oD +|Wsderb~S&yh7(Ll-}e(Ea8)#@)>veP~TP$s7KTtT`A!gyuOnT)E(5p6@Bv%y;o8#Q%D^!@m}4u!bFs +we=q~581lvC}`W%wPFSTRaC=WX%t=6#a>-vkW6h$w!Mgc#=B<fs`D>UO9KQH000080P|F{P(%c*$-n{ +t0DT4k02}}S0B~t=FJE?LZe(wAFJow7a%5$6FJ*3ZZF4Sgd99R9Z{jczhVS_mqn_FeDzueWNGml!pe` +XnB&^g^Fv$Sf8k>!sc9Htycj7=OtM;&~<^q2089(#kxwyD+Tp>WMz-$maS#CA`;|6$vP-@I*Rj6{kQK +hj*(hV;%G_d38GhbuNak{)T8&z~+z$Nqqm-Yx;W?Z(G$L0Nc%X866)%MD{pi3Pm6<ljza#xzjaD$g>` +4dxf)pdZr>P+<;Z*mPtSWw`uK#kI9%aP@)6&ADvU0G}3P|ExT3(W-(Ah}Wnq=d9Y$Ytxy>vTTz5;y8I +2H)Y@N?z1&l(tnK*ythYJ;fd=od($Fa$Qp3!(13F{u^2x+`!8E(eR2EmhX0A4@LpEo)(MwF{r^Irp4k +smi_|^yvR!;HktZt$h<)n)9>r{*={^@2P|e`;QIA;$8JBmQ@7f$wOgx=!<pv>werm>K^P?c$FY^#b-G +-?_R}7|zlNj_aNa(msLia?qw(7b=j}kzq<vbbWiHoW)G0gihM#uFz>B?p%z{zV9K&!P3=$SMy%B_QGC +6OI2~Rh<#4jSWe_&ht{0uaT-C2C<;MpvkHH0jV{w9p@SBWx3KYvD%Z<NaZkyA8=)xh9(7VwnX7gkCL^ +-2Y@=g8<KSEU9e@tipDMsCc0cn$PC@Y&e&pBnCFSvTl3jM%~8#<9x14Q7ipb22MrxPmpBgn*NjvbI)5 +j`}hc`ViLvpj)6R3#q#lAOfAPT7cqs7uCs}a&1GY($G56S6}S}Zkw$3k4fm)#{2&+{=3_o@vv1H3QhS +f4)Y+QBn#~A4OSOxG*jEliv`diJyoO%z^GQ8GFR@+rYep=ZO6NWei+2F&<BD_mDG7g2pN@Bpdst?qEY +XALwcgsVCmf59m*7VNspfB*oyV!h@K|B(6_=({gT+oKAO&5UCraImC|<p08mQ<1QY-O00;o{RI^Y7hy +^`01pokU4*&ol0001RX>c!Jc4cm4Z*nhVXkl_>WppoPb7OFFZ(?O~E^v9RR&8(MMiBnauNWm#1rp~%s +!GkJkxGcU^Br%piB4%%S&Kb}Rn0ElU6OLYzO#P8IGDTKwf+Lk&OAHw%rk>8FPk5@bKiMW7<)r^8n|#b +o((_38Q;s+B`nqmGsRb2uoQ+eM&KGY@-t6U=18@Ih-^-)boB%`oILOG2~)X61u_BCfI<FKG&*8iB-3W +I6Fg#uOQGqf+DeuEAYhnFmD?kQ%wP=5eTH~?6;l>#yQizx2HL|8^sldfA&5qI2L@>hzV+4Mqek_FabC +$#3ZwXPXQXQD&RenoOqlu$<~&^~zJWJD85%GW=6kc2qNty!N%>MSwYMxK3K6tS%rhl+1ADoHhzU>_bD +hHz5eAruf0T;iH!|kQ-kNqIrgCi72GvHF9KM@Az!)`U3hz*$qH5;5Wy&K89`gu=MqnDY)~44LQzM&5P +$U8)N$?rFH-MbZ?cGnPG+E%v>6f<^h+U8h+RWJeshe9H*rBBNkWx2P8R;}qP*oZO7a8oDxTh}!NQFL= +j9`hd)0phiE+LRFeDW6WXAcV)OdsLX!1o8!#p4b664P`_{mYT~W}9*Xrm7SZW>1L|z{K^3?<rz%=Z(F +^qs@NgEv9Y|z-Z>f0OkXK;SC?g10UuO{(Kg=4nTldQf$d=BKbgZLXaCtOvY#!Pjz1UBehpkf@utE_Jq +{t2stSV7>&qw|4ltirC4S4Qb<MU4e$hnG+lUBoU}vgJLxW=RQ>Ie=p&~KKljOriN8{6K|tXno)GjXl~ +Q%#PHJOaCj*M@UG@9DH~pV_eSn96Eax6@r}wX1BA2aJqT~jgXw8&HvsH3Q)l>KE2o1>?pqXdJ(vb#1t +h6D0ZCJGC0uSEVNnlSV`AHFiVn=gQc#WA@?br%OJSBy8!Gf1zRA?TU{VJn%q&H=B`~B}>FbOBKdv{C> +2D7W))zxr%YWpy+Y%OSb3crv3!LQS5wW5@14X%!ArMGLpXy;gfi;IiwGaIX#gPj;n(z>wg7j(474PF4 +-61h}fCQ(u+MuzGJ6a}Msn$I-yNUH&v=IP!FRjvg8%$6wv<{O#9^_o-y8vou=xV=kRO=kl~d&0;JipM +C7U0NhW67Jz5=a7E(CB_88kkbYZ!?wmW>C*BLt1!tLbUT#-i;C@|ceI_`FA3^`4eU4voMVKe@0|*V{0 +l9G)ZSb8<IlqxO;UDz6bL`O5RNl^@6q0H!@!%&$KJ?u@88z?T))5}_EE&`Q;i-gs?+&Ch*KRNA-$@a4 +}<x@mh+u8oQnQi6Zkmu-NE#~U4J}FFFMUg>`zE2VMH6yP`|CN>ONsU6c~raGWv>FT2#>NmTjoUBSq6- ++MP=Mxgk^VYlU87l-_oxD>c(9uX9)DHUFo8GpF{6=pBcP9k%MmLnkseskntY>+>?hGi^vwwClNc{@<= +-e!tP`BRb9gz<B`{3bw(Q)GIVQCC*%b4zRrUbzr4;C4v<tL$oJ$Yepw1<qVyqQ}11IS<kt?KG-qUc*d +*OtL{$_<6`|T_lA08)Y1K!zO1gwvpV88$*-uVCPDkBQZp1%IgQL!)*#RPAP+BQuR;^}kIBvLsMC~9J@ +U5pBH*~bKl9I}axxSnMvON)H_pJDTj)1>mpy+O@arw~nv*%)abV#1?Z%nT7U9G_8+okMEdIok{^7sEl +(z`zistOTklASVFuf1G#TVil)<DI5K0H-kVex9%KJ9e_;?c^eAP*DzI;tAyJwN&vP)h>@6aWAK2mtd` +vrxebV4@TT000gt000~S003}la4%nWWo~3|axY_OVRB?;bT4IdV{>gTaCz;SZByb%5Xay1DZ17dY87x +0p4Yk;$fC0HR0-CW`^Fl=L{b|PY7*SyuI{^EHzW&@j)KVQT?ty~bpLy1dLH^$;pm8e!Fltt)rEGe(d- +&cIB)kF*O1_QlsbaJSVB+P_qHn>Xm}$Dwht5UFWYfM)>HRjVp}#9xwc$8u+j62e2|Vel?pry0wxCfcV +*z4Vk)s|GMTxyDFWMbef(EVJ+=4;14G|a%XU*q5y%k?=ZlD&T?s|8rgQ9S9KcEA6!NuN6+^J@S*SY>= +;Z5zE`6yU<Y+mQhUW	?k+!o%pApu?3(b)DP&}&b_iHkO3TF0D%Ync`)|eaQ>JY#~v!7=9DE%NeRAZ +1wV0MXE66>U<wzM9NGRdJSHLl;g0_B6zV75$hPLxG;>Ed9U65Y)x?i-c-g&yw)AnNa4B7>a5nwf(6LP +vw{26pz69aJl-m69DpMCU5F;E2TzD9Mk=-+pHrlE02dR8)0WF)4dJ7|_!BcP|0vbQA=9Gk|IOsVzxEd +-_X4w?1W;z1fU4$KD?(q){h!g#Z+X#jdX1=s$P8uViFMMkau6j2EsCRGSTV2=d-NEe{`eLThitD$GWK +X7!je&7iO1Qxs2aW+cO}%l2iu!r0-5T7|=r3A>ZqqQ}qNhV0`gMKKYTUHzI`nV!e$QxT0Sqal6jL&}B +>zgWg&`*%W^yD0VLSeE>bJPOJ`T_s!B{*<TxL_+xT8Se5t+_+T0_Tk?-%n$$ts~|U|ZmNK^lH48}|<G +zKzwzD692N<EA&WX(;8<Nw_~8Tml2-7q*3=FC5QPX*l=%fLuFu)aJB&K9|WCa(RFo16z__(CmKM@)9{ +pr7Y!5AS>M&?qysxIyxO;j%`;O0dAsH>gxMlqiw*SaFWWWbFnu74l9QzE>}tAI9ru$7Hi9sE+6UgaU1 +FKyiOyX#`mX@PUCe2(iM1Jfpi64S0r7L*A+=u<aH&|m3Uo=bR}L_CS94=l}T6TbrsT8B3%)GOKB~#k* +;Fl`o-U5tCFr-;ccX=^12%7YP_ySx*D$&q!YYOkWTQrA?b#^Zb-TzuQN$!@;Z}rCa)WjZp7<Gq#N-%N +jk~vB<Uotvq)$0I*W9cl{#IVMq{uzjO(W~YYgz_Ovjp<y57@Kj;})cIp^(~mLZuYx&|_M32f*6f~MBM +xa&0cYNP8YgO|~ZVr)0c#4IjWp~z>BF7--k;ZaIl!E&Od6#Gc(qng3%G}$Ax#6Ob#*gmveMys%Wa0z| +!9^9pgDndq!&JCi6e%Eex?~p&*O*%t(JH~#(^VPZQ^u9FP=<)Zl=?LGy3&hZo$Dd(Y3)9P4u3n*+B}} +AJbSrOq_%y8bIL3epGZyO3k#4NN*r+!(u9%SLr>pOo%kzv@$ZMZAogCrb&%`}B9ycgUzC8XXm1-G1Ev +IRX?ym~3y{igeI8cQz{tqhrBU@PEwRHTwUg23=Sm8NaRN+}$Sm8NaRN+}$Sm8NaRN+}$Sm8NaRN+}$S +m8NaRN+}$Sm8NaRN+}$Sm8NaRN-0Ms=}`hWpbhCs`@VVXpb9}DfGLL!hxIEBLCYEV|x@?7X4R?yGx3m +=Y+!{+up0Y1{tL%$mrm^Y{?bxI8lXMrf@(WfB7_`d!$g!6dv7o&jZ>zsjc0U$-ovPoDD8Yz_(hWW1Qm +FZ|daOkC`rMzKIbc!b4$(l$l0%6Y;hqy|4Y9NiV8UuSI$lhV%+d%za6(9CBWjCB0g@^g(*RY#*femZX +P=@;^*^Zv}sQklt^6<n+p%cMwK=0{cSHIsj`vL3jK0R(???lHFdH^$xKcUl;ZcL!%4Wdmre@-gU)X2D +u=1C+|R`F(9Su{8=Dfg4nh|n$PV<q>GBOGm&o0d3z%L+TV^yzly1NgrwK{n?HOktl3r%AB!6?U+3XtD +Q5e4`1paO?+;1wP`(|KetgS#0JLI2bkEG~%Z7)4+PMF>hYKE!9gD5LL|i*X&yv8h{%uPFo8K%x2?C3A +yfX-FOmlk>xYoA=foo4m;SvU<{smA=0|XQR000O8^Hj4?AUDL&Dg^)lr49f9A^-pYaA|NaUv_0~WN&g +WV`yP=WMy<OWp!g}aBy;OVr6nJaCxm(e{b4I5dEJ|F=|v5bc747PP!)Q=?IX7mS4g~Ra8aRViwq|*+s +kSwDi;8TiY0Hpx5eZMGD@1^JeDF?5r;?PCs<pz3&aF-)nb=UYBnBqxJ_ngT1I+kiX(I(qbtji>R&UoP +?pZ`X-`?HI!abh_yy#2kl8=1&|&7%p<kon$&{q2@c?g+?tSWIF{DySc;HYp`^j9-YA{CfSATgr|Y5S% +<?(Swh800E2bUSW(!v<OVxIbns49!35t{O2DPGyCJt+8!VTBYe4b{~R?=!Qi>=aCQ@h3r(SYgCG#1fP +i#1&mBD7=`jkk8CWR^dqiNs7Zy>%)rH0Na0!hS(uH?&nTg-nv>b74|?2w{oI`R_`@ey!$Wv2{zaoFg3 +<wdHzkb{gIfr_|>Lk<vYvTqB!tJc~pK<Gu*FG@O{BjaxITy;65B5HAaa?iA<~b#I6Z>^tAjTpO&=>qc +|uEn}>c(o|*E#gA%koM8<?Zz)1G^v<$zQi6S^a}qM4T|s;N03j0nf;OTVr`YgC9M!=9EPd?x52LA1t> +GhmY)vMuq5pUTER@DB>X$N!^(GP^Mpl|hyG7t27<4D?2UxUjd;OmO=%T;t`NOW~(cNf5EgH8bey=_4w +<a{6PR1jz+aU5d-%0GmJSB22@dA`<1tsU)G7*_H^+%M~Ai!u&EB4G$=8y|?6fqo;&Gx5i7%90-@`cG> +&>Ip9lFHWUix%h|bl*{R!LqM!9ZerL>hwnwASORYD1is_JFx)uU8Iz*)2%YrK?g0^UcGKMuP&Q!u9`$ +s4=d*$>JB?UI7BWgm4#MoYH%5&mr*r$bjDiEgj{+SO$6sGTnWjOw+y|Wg)62Fw;Ld#R%SPdBP(vVmbb +C%aXU_SGaJkza2m(5P8oM*?PMq6&wTAnK$CZ=I{}$NciMhG?i_5iFub+~gDbWBXA?^MwSab0gMYOpAo +4I~T>u8&AQ+4~-F~G~2_t4qx}2s`J)I$@5QY$1Zb3mHFw26VYIwBB*4<-bOttC(Rh<$<BR8n+vDnDu3 +J~4969QF>v6gHPH4B(a`5TJ#?!0ct&J(qcY)dMZ%`^tJ#bT~Ty6~e??99I#O3}&RXh5*pZSFE_%s{d= +FMHP9##+(~_`ZBUesPW>VsaU?<yrIhY{Mj?c(G4(!TCIa*D=>E4<PY@p&LrV%~%|C&_-NVbJPLMJ-AX +I-+Z{vS=^vz$s4&zx`kFM-~1$=l6@QuiP3@alVJ;#yH0ZLgF+U&t0A4Z$zJt<wpL)kXe*MuD-4B3cQP +4Gih1Pqi_~(7s?GT<URGbdG=#rwYOHX{aIGN@E}SIAm*!Rdi01f7Q#dGeJ@b_nu1=zMI+|RC!x7gQj{ +IQIJ+heLo91(2l}G<2MbGy@bw-QR-tR`!VJGPMzr?@i;|4u;@5BnwcgOW#Lc%cCnoIl#$~EV)cyKG6u +d8F~eRi0ZDaWVg6CCC3boF%J=;(OoC+UE%p2vS2S<ZBF=>0Suj|~4#j;F)j9~^vqHm?Q!M$M-mY2@Pb +|C0PgL6jmX4&#FoUlmGx*?ihV(JTo%@6bZKce;MJ?e~WF*X0>gJuUH4*?>zGFINFRomka<;Lgi=rM5{ +kE4dJJE<+CFUuh)X!)W5Sr+(l+OuBgKcgk~jpW^q=X!$bOC%V53N>P+<kzIZcu|JOGoJ)!1)>#7-tWP +(^S&A(3HTzmUjHO=Su2ud8P)h>@6aWAK2mtd`vrzOw19@Q>008PV001BW003}la4%nWWo~3|axY_OVR +B?;bT4IfV{39|a%FKYaCw!QYmXI2l7_$cuSkh6MrxSKsH{t_wJQMzPiru+4QS;3f*LrOqiOoEryG0OU +%&A@1@=m2q+KMJ`&4B{M#klhOXjUx-~LzbKm76RNqKzs;Ng?!56k_>PapiP{FAY_PHvSK?|0?tasSKy +>f*9IIK17J{dM{2@ZbB(%ZvQ|;lrn^{hN!M!?C=%-0!Y#%9|W>_vGu;v#b5hK4<>0`*nAD__#Zk!@F| +x4VpRr$?oR*&Be#v|026TTwUkS<Hy6%A4#}8I~=$7Z;rc*o88;;`m+@Oywt@JS|2~>QtxldcMoot+WV +R$zB&AExp#S4&KY}M&Ue?l<FC87+fE)Fu5OO|*Pn8m-(BDSmwZ#oPZ!63lxO?PUyl0^<xWWsZ_3S~Jo +|j}{&4kW|0$}={p;h!@iS6;ciipD_2J#kZ^_vA<@4cFd2?}9j=Q(}>y3O0;-*|&z5UDKnDajz-tOOh= +GCXGx49j-zS$i=Tz{3}k568f$Ghv~wEVcc+8uK@&py4r+`q}mkN0nOSJ%68aa}(0?)v>7l6nLq&%ZEI +9vzar(*3^d_W7N)f88Cg^G%7n_3LV1D4v$o^>-IH@SocJ$i&;p^yhM!+BklldH0(l_+zJU%l=BT?^E{ +qM-t49{+4D{Uhm4M>)pFgm#0Y~$CkgJz4+_XmoLh_CqI|J-#b6Q_vFRT-{;trbbd|!ZIt#OKBfu2ExD +`X#nsK{WIPG{^zi(_UvtL2`)7~OUi=LAkIr5^dHDQ!dGz$W+$+!SoxeDH@bdA!^YZNF`Ln0bAKoqH`E +K`B#0c|SLjGOE?~>$)LrU`P?&e~DdA)7@=Tz@?GI;s6yubK$muh~q+owg9i*%8XpZ{MvygXd};(l|=9 +|HZp?BA8E!_8^=?YK|dN$dNQc9Y5<`aMmfe{=V=Of?5xT>axRRq#BgKia=b(vL0=hvR9vf4IJ3=uh`@ +?hv&Ocj`FQQeHmKH~;KkdHCdq|0Af}I!VIMFHlzQ>fQ11p<KL1kum&~_WfTs<pYM4zImNC^5*hW;=^U +`FA?BV3OU^)1^D6PCyec8_vZc8;qvgyXNcBVOSyCB-^y@z>G?aR`Rnf<`FpDI`|ovT!VvB2i{4vf&d} +CBUiGdn&))7X$`4;{7r!`1pygjTO4C^WQogHqzWlhI@0amzK<+%*%?<u}?o|$gpPU%uG~CI*Z%Z$h{> +67be@qCx{KnjqlZP)K{O$bJi=UsJJ-GMy)emRSU!0%afBE9<>62II_ws*9X}&xBKJMQA#}8jUKl_h|` +94<*g!SP4#SxQ9bNSDwNAcz2_2sUdewma`lQW;bdUXEq-(NjF|KZ_zPX6wslscZ~e?vZEIIUx!PfJ_t +X<cg1N4_g#tfyrj`e}(8ysM{W8I~M3<k#qqi_=op<@6*eEc}M*(9$@^`Lx!W?_wDF(DJW2C(rA|UrBl +zRz6HTW*!n)VP=(}3-Cxb^O4KfmX8@mMy3o?5*%m9jLC@f+nS_HIAdfb3AEFb(pxSC@A-SmF)c^;0lp +UB!NZvEmL)e4O{y!qO$m&MYgrM}#!*j#wdU`hyDw{gPSP;9=D@PBN5oKBb7|0T2)7}~#t`PNurMo?6y +!-tmqlCS;XLTiGb^)E3A#M<QZ-2-)L;^v7x<U!#*k@987>nnp@n4%R$<J9J|-5KSY%52^Y+ehP?(@F! +}Sc;bIx6J+({W_Zf5lCUr>O<vUWt3%e9(9TL)MlCiV!y8PX~$^^uyGk<a9oSqcTz%IBpbdlp>~)xt`P +I`Ul-oYd$7eJx~x^y1vkmRC$yJ?7@qL^KC1nMb(q6;oPNf09A{xv}JH?aWx9x?<RMBbd@1x0ek|V9RO +5NwBj>L-RR$QfQdSJVF(-j{$+ByrmAXzDO_`>6qYJ<%W5EU^D}f=7bw8aI^H_gFlf)XGVvG4(SfTriX +RMbX;#_-yObWE=SkYUjBv9U~bKw)FCBRSA2OyQtRL&?J%Dse>NVlxqX>=EId}U)%mMK+U=!i+TwBysU +if1(D9TNr(bK50c{Ga<h+%4m==4~g%n5|&=&l!)oCC}z(SQY;IO(pUcUMT92&QGsjaDlK)BGFxKkjL` +xc8F;s?aM=(cEi2zUU3qDmF!@U<22Sw|Kb88Sj2pAq{MNM-IYJ1&=-RmzHjJJOvt0kJ3;)3gL2p;Zud +QWl`BTz6T>4;>Rn69xB3EmxOE1i(@mu|CY9flZ^*<lTr1b@!Nylr{klGb>?t6EF%)pCk_$L0~L6#ENG +YY;FZ*$5cvb1PE+1!6sOV?cs0({?P!8#>QIeD7Or{t)N@OQAeaXgd8G)wA!-iF&8eNbJ21EjC?1<*jN ++m1_72mVm3sebT~E-p2Py&YiWSpI>{!WqAXVU0Qx3P0tpW*TVC;@b@G9APp}F8V#yggKw^Mq6%=R3u? +Qg2dDjr`h#&DGx2&0>`pRR#uU0T~o#8<Wv+pKM#1HHdJY2y;q+VC>Z%xuCiBtej*EpHSMyJ6IARr7js +vjEW1)0SUuoOVrqEhhw&}@j7;ZlCl&KG~OvS^7zuh>8$B_;w@Ww^Q=^xfDBV%JcaY-L5_`VdyMBEEtL +j9?7lQ|9Ie3=hf86YhweW1IN_a3}>x*k~Ey-~j^)B3vItOE?rG`JfAp;DU$^eq`1G!PIXm1+OqD7L29 +N;*Q47R<Oev>+9fJERyk&{MRZj`*URxwG6DzP}QM3#zIb!`^II_k!o!L>5d=?5R+?e?v7b*`%W!aSMI +2_;{gM4*;Is(S&2$j-Lm=Wa%I$)l_CDU%3N-_SG3%5k_M&$y{R)oGREFPjSjZPBC<dgH`b;J^eH5=A% +51?bOF~hZ|bPNL#qOS!)%x%#-r9@FadF43=fz?xM`~JzpVtDsWLbOn{by-2$)wsW1C=i{)I!!aQJBO# +W>a^HAuPQ8N}Q^ZZQRK72@!jin{=NnHUk3m}fTGi2Gepg*FC$R6zue2-x^vZW)vk7i#)#SvN*x6D<%7 +I$8ka^Dndvtv;F^`4y?)^PPmV65}iJwi0|2Of|*^a^Vo&uTo$#4$+%f2mhFAZ%Ad;Jyv}gw<aJ3p|7E +ojw(7(ZhmWO)f=j2UIiJa>R`l-KXf3on;&)pe+M5spx7r37FDYr^26q)Tx2qHa0a5siaKFu0O5uiEl2 +nnb+NNyFtFe=qAYIKK!|R-*tI8Y6RH)A><AJN%(<i@Ap~h60BpyX`|MBr8=x6U&>}QvGk0XoPCBv{8D +|wGhvd^qRiFW-7}L6HB|eRghA%Cx3F=r8UmIA*PVzxzKsuM60~kReaDxf6+)Qgx%kafUof1u@kbj!Kn +{~3=s%;9eGv+W5BP%FXnG*WDQ^*abS=3;;*|JE6We(jEPWmFA!(k<f2rInNES-6Si7Kk-jz*+zPd@@> +XYC1iG^TWAXpY^<96MkUS~nYL+h0)FlFMAFvhUU88xNkU4uHxqs;Y0f<yC)l17e5PhuE=`x^W27cQVD +^0n?_?n1%;iDw%)uuIqIx1(l+G5t>j%A~QG#o})K66|S_|CJPe>3ScmTjDe>VB3uDNbIV{p`ACE)%ez +$^1%|W^RthmbBS&mNNeEa?zJqFX0yai6ISPzAU_f;>^r<Mh(eOy=RdtdHJqrIW1kb=p@{v(5pN&6_n< +Psn_NL`IIzNz7Y=7ar$Z!#mLNbVk%%@>(RG(>wAoiTH$<LUn11mgKZ4O$9p%_aW<1)_V1MDV}N5D}Pl +F4l<k#P$N2Gmgs)bZ%iW<*R@Wo)YYRjMo;ES%^PWa>fMnp<{(M9LTpeG&{G%#&eT9Jr$y(`0a-j16#@ +W|Kppn(9b`BO4eE0WdO4fnr{Z8BK)A>&3_}XtB~L85UM$&3$eJnHNxPY=AET;#C|qy6^BFZ3iQsjgC6 +`V$g7|Ac)!6o~cx<AZ1ZqSZ&%9Vz)vCD;h3Z?U`6x*eAd&=Y>6)`om$dk{Zlju+VC%Kp3svYF88&ZJd +X!6`JaAqQ8If6;H`0;+#+ta9miv+ij}8BP$&J3q<8nw|YQ<IM<?_vSr0=nm&YKG>vTXK?*h_zU^Vbgv +E>OlrjN)RacsQP;XSgp*75A_F*GPAY*4>ll5$1A|%WSBBl>4hYd`t%aH<WclkB9yeX4a7Cvu|#OFobB +CiEKVuFP&Pj;y`sT(h}Ckbp})G4-qh(J~~i=Pqpf&|o~+z>p;or0<?sC0rtBq$lmx+!Ia;L2njTI|>$ +hY$8WW|0wsG9p22pi(q%u`L9a8G-<;WlYluz!M?5ZsjK+ubpeZ)-x-*?Xb{cp(`_z=tfLw$!ApSWstZ +cIiREx+4BP;o!lsDwGP4}D_BwOwK&bJd<xrrcnWHzA(;;{Q`dtp69lX;KY&2pzZM=Y2WhabrYA<#mvN +1JK&vu3kt?b>qx69)yCPwNhU?Ki$we%NG)86sWR$^45G12c396G~({-^XA*LAXns{g-?IPG5sX`Duqb +eH3FcPE+`k~kkJ%1b^ZJb$|Cr+cDDa;D}3f5_si%|&IV=kpw%5atkVZ+hx$My6SV({p4KHz5Lt7+4=W +$@7Yn4~>u;0EbRJ|Kwa7r<^@ERNVCLARowfb~K`+h(VU@idieOCZA>W5*eZ*c8R4&G?(eiYeHvJyGgU +E)1K^Mj63>G!<ky+Rj17T%AnsGbbZC>n=Q{+C~NJs^GR*d9V|3jg6M3ahN*KqXfz9NFT?+FNg{Zs|ph +Ms%~#%*mn>FpQ@|REG*>Y7Ly<$2Z#&eKvdC&G<M$Ju}4{2ps+w;QHK77knE8eZpps#B_SCO7j4Pp6-N +~fC<>#Rk&pg_^lG0AKC~=Suu<Dw<#5YZp|#qjBE-<xG8q_E0687FnR10HahaA)vdL~ipxW(|17F6X85 +E@A&Y#3!*u+~)Q<<h<pcE3wNC>1^q)`Vg<|AaRqlFLQKHWg2pk-6=#g#1p2#)}GRSaDtMgbb$EOWWLA +R{BsJIN=Wf@Wy^7IM_!1R!F|$iNt*HkmvA5%h+G9#&Wm&K6NbXmW7~vH%bi_DyZx5N8@>Xch%cv7qA> +w1k32O;GvQwta;(s6;`T1OXoEv!I*`^5QT<Bie@%2awOnbeu<jG8vNq(gIuvd@^vlBsenJ>_}lag;Zn +{i)Sa8+lVm+xM20;K@L6GLhC+g_UFSblYmV01lnr0%JM)0p*%t$0HtUSW*B8Kng@IeU9faVQORkZNf| +X3JyV-T3)Sp`yj$@#Ow~0lqU^VBzD8|iJx)=8k7STqWCTmwdJg2RP4$rFxKZ$9Bq{}{0h9;XM1&0Eu^ +d9=1J?_JLm?$5{*}!pOh7Cs2?3&IOx91<jW!6`4tQukf%B{!Vi?uc_3}c#3oMPu)$@TtMG4312!t!9e +Siq@qJYz7Go@LjkT)$haNWFS3h0iuYzTru7PV>}CQ!{q76`IYodWqUTSbpyRF6NJXkfdSDT}=vrVylP +Qf85c_iU{MHwG>Jo2-*0@uZLu1o0}i<{)4i7Ew^JhtgEFjcbi|Bg2}21N?{JFg1OdG>XPUgxsutMp3$ ++?PNWSe2U^RC=WuFm9W6Td?}j94>E(*X~=ESXhN+WJdXxY@L)Mb$!PKlV2rfFfZrPS`AJkr@yZ6U=1s +%q5U#8s(J1g$><*Y$>bII8>L&mdPw#ADyYOnKeHBMLyTwHCun-yPPX^|kWgg;F_Evah;)6jD6kq&l$$ +;4y>sTcp3y+lt@WsB9MR?!?2se^sjn<L{PejbcGg^zZ0KPndo!Ka$nEprAkAe#^#iO|i;c^O?lcBZP& +m&Y2ORa@*lHdq03vjkKt}YLon0TR;WMjkdKGS`$JMPhVv(JHDP!`3wolc;HTs=7iV1bgrHS)ng0G7y@ +V-N@^I~t_OQOe{wE}EyWHE07mxhFotWf>*tXk=rUZqjEfC|G-%!GLi)1_$saRwDTxv3R08O$^7#v5pE +N(GJkb=_H0Hr=ve@G1|@Y@Q@}6*>(}8XQE!dlm~<XzH5RbfIiBh1i?{`M1pQg09t|1hiL%Eu3VhJ;=w +~tB5B9v14l9^vM~p;7^zI+#_d!Kqc!EGgd^8XzJP54*Emt@nZ1l=W9HMu<x$y?hk0sdCQ4^I&5IASWu +&MihMA)PA`6Aj=vHRkSYNOaL@<ylk~2n*W@MI@b|8fWdg9F*#6J0^6atdB58AdoU#gu%fBJw|&Tv}yF +UwmNA)IjF7o(M?87%R((Ckd(WM?4bsC$y&jEljIR77*`wmFj}+DmoNCxJ&#yhjfg@RZm*MQI`oPrx@5 +)FD<Wz>;<@>&UPx3v6c+NmhNCzQ+h2jvjBj6*U6_VF@uRi>(f_&+H8N0-w0W5!^ONs%TjN;S@eNQ4Ef +r!jg-=MBze2aQGdzJ~{tO(Wv>x9-YQd1Tt|gAvhEckD0=9y&6tPGiReJAF5lPd0;1Ir&aaanDHEp5|n +0IrA1V|@j_gvfKjDmRBg_KNWpP%o!p5mp*&AqNlY{JK)-ue#Qvcbw^w1@_m)|kAW(Nv5l<T#7T#zrJX +RjIrxD0jbCP3oP#7E!#@6ffd<dHp9?83_xxa^8_E%>>okOSK04ONCf+LC&mbV;K1ZNas{Iioq^FP3_p +u-t<uFU2^%fdaNV)5WvoZVz`8KXT(Z$fC3=`ZRr!<;0|Pr!%PTad{G-K<ax9CwB77&|exLup!Md5h4* +FiMD&l6zz{=GL|oWZRb@DzJ^;25Y8wLLXBiA{5{qEn9Dz7^wik+U%Z{CrL}epX^M5C~E?vU1+<p%U~n +OT@bXWEyLV~;xwo&i_M5HCm5C$lwqb|v#Z-bB0JR|IQ}SRA=Fsa)*i`5P}<Z<InVwiB{pu_aA{7~XyJ +q4Jge13EqfFXt<g(kaN}QGEULErJ%uMQ*2%kO+8DVqsd<=Fx9vX9B0=;61ex2IFU;CB$U-14U7OZkN! +1L=%?!Z0R1I!}xwFJ2nIMo=T9eg|7tt&>%@b@USyD76Xuzr>9rR#N4-^fD3&j&G>$+w&C#~&vgNMgZA +bNQ%$crX3C~FD{h84O4#al>=hyIhy+9V@~oJ1}Kgd0pw#*!)IiU+GS#!KIt5z4~BDuL3>mg!`f1ORs1 +!juBsLJKpWnON%00&|qf9&h!~#v4Iipwi;uuyi^0pnGMsQ=~BSSa|rsf(&Hz@Y~vp(>rTzj?`oFeA$+ +VU?)lmQ21Zrf>_`<IR(<y2aEuZHW?=CrA4YNY<Y`mg*Krwl?Xf(PMBhHo&=o&RB^%=(^k>5ol#?FoM! +=Cqsj!7gmX)4AwBAAkfH9i%gs&4;Lb$QPs#^W!J<i7+t~LK)Z)F!!D`gQO6wb3kL=FILor#h6W%OSiL +{fntV`{=vSuUU^oElu<zy*HJ~D52o!ES{Vc}@_A_x+=Dm|IHZQcsi6ISbG8}{>H%hAtFo}h*8c=$~SD +Ben$J-MON=TXo^j#cdi<NW|}q7AT0OFOtS72Jf%hut|3?Ig`gfSX5|#WP`#tvsH!Q|T71MmhM5Np<0m +wDy8qbun$-Yu`Z-59Z2AcsqmZf>l+|bO*TiRmP1V7CL%-;4LmgEvd*P*ThK9VS-L#*q!49pn8pp0zYh +P(?1F#LJ~9+GBxz5!~BpyKWcb#xT;(5!_H6h-ic(e2G2$Z&!#7@#}Hn;##k(EV1yV+ySmV%F00J~uZe +`oq<-r-R85ExSO~_c6stK?GP{x<x3IDVXS)L$OSeD*wns0z(ng)sEj=Hv)=UuO$T%pz!lZ;-T;UbG<^ +|TtvXura))3y+QWkdcyfN%FP@LX>%CP&{Jp!iQvLUPD24IMXWGj{9wD6#lyLmxPk}@)5@&L=b$`IuCS +}}~y<cAaq!9iYdm=Rh$l~loq!?cEb&%srgbX)d~qDWqYqq!sqXwi@iuR+id3tjKa{Xp+5VN~|9u@l@S +yox({T-W@`O5QRZTn`N6dUMQTrUgwmWHJy@bvX=e%o+Z)7KS6_%0<`Y5D(_WGG-YG%MntmSto~Kh32V +%h)q$jdS?RP@^Zk;;Up)NnSFUlw@c8^YyjAsZRijdW=}h}qcgj6Or9joo&d#p`wI)a_2m?Onon+@ocs +?^O9KQH000080P|F{P$mVJ_&5Uq0MrHm03rYY0B~t=FJE?LZe(wAFJow7a%5$6FJ*OOYjSXMZ(?O~E^ +v93RNHRbI1qjJR}A782XM4;7Yl4RD6q0(r$&5(WTVKFKuaT=C`B41l|cRa9{HN4Hn7VlX)cFn&J3sBz +I>=Zcp6P<Jc<U>WI+A#EPAFZvF%oy78|CSm20VmqR8Y-(ot!CNTozz?3yyzg4Qu~q@|aLeB@VFX3LgL +LH+^;;-~CgCbkSySyozR!b_tae(l!S-4B3iZtUKkSr(piTGczm->(w3!P?fiYU8OB-BR!K=f44QF+8A +9DT<p|M=?9Lubl5IiH!DEt}1VA$KCz|3(-W_?=+WcZDmP!1csixp?U2$Mjz^jG)k_luyvzSVVTL9!oP +vo1J$OYOlY#4OSgxI5T1n2|1cK$rO9PcH>OJGD5qiV*_Q68;nQ?UV|HLlPpsLZnt8QSGDGrMW~?2PaI +|e~ZgW;@*bqq$L}+LLzf<>tSi;}j{mRzCLZ5=(@wNkEmyD&3@C|=-bK4}|f^<y^-LS{Z;GzWQN^_EW2 +fKmx_y8aZeZv^him7s3RH_RE#L~CX;_Ga=pm6#^-@-T!r;C>d#6oF!(Z4;CEVoJm7*$!JeGTFOm<;0R +D>B0VXgpfHH0+0?#dMG)G@Qj0(mae8qi8t}W127H`79X(L<#dz;zrC%BA+BK09hI+nX?yCxqay`Xs-i +7mD5JNGTNN6#6*$66WP}PtB1<y^{!r|oCSR#S&%lqOK(<Ub})Uvbr&e-{&q3+S<t1wdI%EwyFv>Rqz` +2Q=%F&kcByZiZ$c*_a_>L&diQs|Kks`)%LJBdhX&Kf|F}fjtyW=8NkO^FHo`jgTWeORAN^|{(WFvd_G +`}(yb1gH&U?tgc9DARJVvb)*+yzUrbRnX(s(9&&oKosr@3op`j9YKM$hr%J4c9hR6DGq6Fuk3U!v1wl +1^rigK?|X%9L<!Z{9QPTqcfnfo*}=C@4)OmQI>>9IN7BZ;q?5emd`<y0nW3P6@Z?SU3(Uq+s{uLfxHT +xqirfFGVVvl7B$^FW2Sxc)7)D^f2zM|Dtyw@9R^Mhn}Wdl>D(!%f7OjZgAJ#b9{3RLJ7UD#QJLbGaj4 +JH?5ygO9KQH000080P|F{P|Vv&)iXK(0EK%103ZMW0B~t=FJE?LZe(wAFJow7a%5$6FJ*OOba!TQWpO +TWd6k{rjwZ#mrqAmtQbMD#r2=RCWklNJEj1XtTN?w@G_pJ=sOc_D$xRo#x-nv|e%A9uBp%7$(hLVhSA +Ch0krC_nUGIwTz4!k0f7^#2|MBT(+ow-I`uMXiKi)q4^z)DYWBV_zeedSI?fG|i+vkt>f4zV6;`R2?! +>haP{_XashyQ*5`t^(W{rm5Kd~^Tu#k+^c?d9wHyEpH)mvPMpH`lFC-`u~uk30Wx_xHQk4?o;JZV%sX +@BYP@as6j^@7}(A@x$H!HSGPvo44`n;|~vy{t^RkUpzd{zrTFEd-3k>)%MNLj`+`ydhy6uKl~hz`tIH +KtB-!YrSlvy#J{}!gYC)d*V{9$eY-uodwciz_q$i~O+I>f^X~Efn;+vffA#j)zm30a+n-)M{%!l>{`F +rU@4w&P-(rUEws#NP7eBxI?%~aP|5&Qm_uo9ec>I}F`}XnfZhQOi?Yp01V!zvde)w^F`Qpv?c=zi5?H +oQ9;@$S*&8y!$JjVUsKfJpC_GkX|<C|CUI?Vdr-Q)LfuQmMRXJ2if-o1^PZhyRcbN3i;^Tm(fyuN=KH +-CEn^6t&syY0o>?Fat$_Pc+q)F({j%QcbhlZP1I)&1RecOReg?7!bVzKy?Z`Ga&lZH;)l#a{pF#XII7 +yZHk*{yHZ8^Y%J+<MF!lgMYaM|9I0^+x;7d{Vvu%{t*Mli~ba1wS9B9{rL9o+aF)w#t3ok_UEV1|NZl +?o^MY+`^)y{C(oWe`Rw^$eizrqO2?<Me{-b!?|%ppe6__}J-&GJ?&p|z4DhFqpMCW2amSMnpMLuE`Cp +j*Cr_V$_VJfrZl8SqY<seO@#NX_ryqUw>62&M7hgU5;`1**{$Sg_yt})Wn8o~8i~P$He;Y%7{}3zr>h +9f(``2&htN$go_iaq@^{ef>7k|HtZGL%o9}=~_2o?F^=l`!geEsm|ufA{G@{a}m-FE-&_U7T;?e^2-e +aKEo-#_hcjPj5Dy$zv%`N8ehQe5=n&EH<f7JM1Ee{%nA4E@RLhlj`8?Zbz+@3{0&PvYJ^r?kJH%AU6E +t1sg(|J8rn$DjS-|Iw(tcM}7D{MAR#|BOcb=Z|-9UWQn{_~!N9)U*&F#N*q?hwry<?*H1hpB^6nh9vy +FJ%4fk(~CF%Jq%DN$&1IB{ugo81Me1h{`ltQ{p+~!e|-1u-4DNg@28)B`rz)>j~~4I>9-^O=KHwg@i+ +g*vr``1_Wt|-w(TF(oR1WL%I&!R)cR=rsil1Vsn_|ZwCB41G|n<AH|}+;Kb^ge;?_TXb@yWX!zJoW?i +uU9{r(#3H@`~nuYdk}`+fdEqx39h7_a=#_q~Z5V>Z9}RjYe?KmPUW-|ru!y-f}K`G+u+um9EKUVMXk< +o4f?HRkksdw3K2`}Q4L_Wh49zuUeGYo}!iJM`=i&u(tqm#?4y<%_2uJ^A$OKRo^N`Lm}Ve)at6=bwH3 +>`DA@zC&XfKl<*)BQh8A_Me|WYM|J}?e-ev$%mhQ{PmYl|JTRNzx3l8J=F2p*Uvxy`jclL|Ie>KfA)u +upTz~gx(S<_ZqwNJ+tl{sHYVO~Q!VK>toFE#PtW)<GXFYmdr5nI(0g3B=i73mxHxw4Hjh0nPJFt>_Vk +)>N-r&bE9JK28pFkw$FDsevDJDT5?<n8DQ-REVL6R@n-ZTM?Yu4H;Mw`OEp?BJk6PBiZQLX#7FWb&B? +hVc5l^l0=p2LIZY3tRwKM(})4NUQ!L8e1#x?%c#%;}~ufnIir~~&JOA*(`-!nhru9Es~IudvFc$J)E; +1siqC&r9xT$k$Dxwzhz7AshGrk!(TJ<c`ox!=S@c<s$Mj>|@m)vldK=ku0l$GgXB<<T;8id#pIi^Br2 +c=5NCosTnXbKtQbH}NL@Ht#J)YCD?}_ixAWvUp<R){_@VF{fAnSDU>o&N$u1D>A7gK0RC>2G04W^X|E +xF|ji?C4O|?J$CzKWslnU5es<iF6CgO;%}vNRx2J+=Lbs9l8RBrO)PQzmdoJL6`4B`jhF<lo%S=c+cA +?KQk81m`CDc5c%NDsE;c?k@MM$M=8YDcmwNntKVuTEY>IWtd%R~zmaoVpS_sM65#jhC<`s`n(t7+F7d +M{6i~cg>zTa$Tj2Z9g0>mUjr(&bd!a|RD#f+rId&XwPvpcg$yg-X}&!w~Or!p7MDQ!u`7{^U4FIySwn +R|?$N-WBDD6Yuy$?WzshHI>L>|Sh0VOP<{7TcJ5VvTd+1@avD-1AKetw%`X3WdDJt+Cn;5{rTug&kug +r92+7m4T$Nyog(@!ia|*@yac)8J}s~ge(@87Yk84>fd=jYLVD?W^yp_2q{m>W<Ggh3=-moSR%(MJH4g +SXNk@0Zm)A{$QOE@nb;P4nNrACY>#&#%&{J!YKm68)WFWvabQzoyJOyK;I`kyyEAZRk8`YXh)TRWDul +%gWyIj9TYKTt#1yekad9p!9#(kK&bsHk#O*wen|PftY#6+_0kuFkQqvr<(4(;Lv4f#7F<E8qL^)B!ka +ccjp<?mUIQtrS<eSXe#lUPTYv&uEA?cxg=nE>{7%5B(rnF!+;$Z{PO6ZWwI6~fQ*_Rv>f5)Y9Lyyf5` +-6fU$Y+cc4`X5oBL+004s6QFUc}$x;*9tYc2KL)*!bbVac#XR+N!KZ#r?7EiTgXZ#v?)m5SPTQ2lf<! +Kp2mMUB$W_NWSWm^EGgZ%{yX>@e(mvWwFMsv2576knMQHU@3ey@4h<-)&*y_hvUJ2BM`h#?`z<Cgmue +mE~?tu#+XFBQ~Y}HDvmiSk`m7ed0@*z*HaHk2|4u5+;bk5@*4QaH!(3q7>z)gYP@1>??5UJUWIElr31 +~uyzefhW^-#S9$FG!DIRgGf%}LV7ypjV6ih<wQAK9M5>;NnS7fA+!+19T>MkCZsHz|ZpA#aqFO@D~SX +pEDy<-VuqZ*IKE`(_7cpGz9xzW6sUD4B=yMC<mtD<r8u<4pmi*Tk`C=Cfxk+3=&OCB>(x8h~pna;lT! +NV|?A<`_0&b?y0VrG3TsR+vvhMwONexrtN#iGOwN0_)UhhB^KWVd*!SaJ0LJBfL3Dr{(T!H>p9?Q38H +mLt3DjE?5wJYutux#Dic2PeWjupim|MexFS@+scS_#u2&sBT>YN5B$eq5?R0OhUXNLK4pj(Ne>CL?}q +cZpXhe8xrr{=c0Cu6~kfY@Dy`k0v2plOj`v_I0~IU;m{0Im{@gAF<dz`me_b4^cfS#xy25&uE}3gks@ +FTp&r~&7#+F6L>`!_WSC><GKCC7PY{JOD;VIMv~H+Rj#Y?%Ejf-Cy$K;zE%0E2HLfZc1`8ubD7l^P@6 +b%d4ied=1MgY!=KF9=KS*of2w2#{kRXf;TNcX}Z-;_qlxb@O4H>t76hxi4v!QuC79b^DB^#dz)JnZnI +uo!&5D<cbf)P?g06Q2xHuS*GMd*Q4vG~RSh)^#o$VrUoQmFqYAx>EXN5B%7xjjTJVK71?Vm*j4t3h^; +-HQ9!Hymsq*pGyN3ab-A9TLT~k8U`!G%vI%R9dx&ps?!dD-I3gUwDCn2g=09g%~jze4ZgQg~^r?YgBb +tzGFF-ROAR)67gtgGm4D!$c3G0I8L107}$9I%kW3Reh@L?AoqdO&IUFZ@8z0eiy~klq}WcaJt0ZWq$J +2JCO={o0*S$`#DhFLUL^)L&SB%L+FZCKL~;!r0ZUfFPi9ikYcxO1#Ez|LJc5vwEn}g>be_cFxWHI)k{ +A-B!QTv}*5(xgmV6Kd4d&S}4w!s?q^wa+W<BUj*v@!&gg(1?+LQweK>(MPo@?L;SSq>|yQOhJJ`5>z3 +PdBd8i)|Fg)GGs37mIj?&R5IaShjifFJc*iU?RD`e0KDDSFk|hNSoEZpRK9L`5nW!=VCLr;IYxVvN@? +QO!FP!E4|_s?eM#wu(G}P%wmyaEK|kicxOrD;Af<XDJf~rw}AZaJ3UN<D|+m^yOspP82LGW^A7RfTbi +{KjVq9M@R}uC2A3h*m$YV`ykPXIw?W?imUEx;MnM}6+~y9WT0b!31cgP2#G79wE;2q3zJYQi%%+<2*8 +li_>}8-c3vrOm|1)tA&DVxt9V5NmcvNhj8U1v*s{h0pGWMMu)?wUXe}le!Heu_8KKznn@}NkJEj;vIy +=jf&saF2h&Wh{3(I2~O~kbsL!7&>*Gci%kn<XtfThobUKJq3n(+ckKlc(Vda_$YrAH=MJ8)8m&Q$q0c +?*o<<xHyq%R#b9I8}5*#1IMT<%3u#bKJz3m{;Vu<4^{fkgfp_5K%|QNnM+FvU$h?f?tx!_rW}e8892o +dJvu_V`lQ2T&9q@t4JTKoi+aZT8fa$n;3(wVBcy|zSPZ*;HiylPd9<o=^}^b=OIT0m5NWXKh5i|feBa +|Z-RrahG_Lv8L%};yMq1F;_c`b+L(2^F-Rs!?q-p_5_**7Od}77Tso|HgqN;I!<1`w5i%u!SY?le3N- +*6DGZ0%Jg2;4ld9H<UA=<B*4RAkacgX}A&KE-*4h*0W108U{K@OEu?Lp58SP=RF`IpeMqD$FfF+Ti_h +RJ1haJ&6Obol$U?87`^$0(>vs?JgOe$H)9pgof5XgnkYv2f2LS|7*Vu+T#maK^w;NW3HkBIxnM`S|%k +Q5eQMZ$~|fF<#hb}TtQB48=g_NufRa2ExKvhy$ne2{xG*${B&&N~{Wu<;4o$0ge@GmeNY487h8SsX-c +Eq;XWP>)cnjF4oIF~qWB9YHQa8Dj3JN?0O-$AMUlC2o;O-GtKO3W$}6gkm;WM+}a8+?6koprm}Drh74 +T(I#Q7i@6Sw|5&c+0Ab1OQBunr`Ditez$+oHjfFNs*iC}EOF{nAU3}L~<tETOR(yPbupAnfLZnVkW>j +skhQ*D$+#?1--n-_RDI!7z?-hz*8q7jnLE%Bbf-4A-0m`b_ij$bA_%C)9>B}tsX#i%l8b9)>A1zAHi3 +n@A*HVPhVDpHn$nJz>PQ5fC>)z02LQccOVqm5lLP$)5CrC%u(++I;0-M5m#OBp0_$Vkj%mKtT=ZOdEr +(?2|Cqb@B;rtaZeX>v|dr7i)Tt+B@%!oFtc9M9IwQnR1NJ^yPx;9f;&=8~NVkqeAk@0z**$6<{G1eM~ +3%$ucy2gsdkHimO0MLVIV%z+nuv+Y!sS|)NZWa6h^XkCF`@bwj1T0-&6ybXecPby4$b^D`1eueGIc}$ +6?13p&BQhTdWqS$n{*~N>Ns2rVOGt8+#7hRx-&tA0)0D)24*e~9F#YYxNO%QIF<v@MArZzeQV{`5C!` +5e73z<>?8suTGax3lJ}?BB&7RC)bz$055fWS_@_`=(6`KP`#2E20)`a*xf!}ON=m(EV+F1on+5GJ=(d +3emeYUrm_TfQ<S=!pX5dljE+|9b>VPsj5bV3sHfUQnHn$aO}YGVa`^KQgO_8zwtqU<zLN(PRAC7Iu!6 +VoP@B>X`0V*xN&=xYnj%>c`ta3}$g#=^!s;w3XdNc;*$b-DjRz_O7ycYSWNsvxQ-^vjPO!xTDPL5(-e +`-bOFM0Syx^25l#;3TeSGg7~B|1&-(cr6CWCLI`hB$|be_aOjdOc358@=C5#$@$~WOd3w?_L7Pb0ZTQ +tKh+H#FK}`P{9~iLu?BE*=nH8<C|xF6?bX04DS`#_OrE#!<1l3V4Wn}fqR9q;a#YZRm@$&FyGE!lZiE +0mk`|<I=*{tTyAUMd%oSIh1}sPm?zVy+L=54}GBAc7>lm3BiE>81P#RT*5=c6nyRas%snjLMCjm<mY| +=@B;gXAIX17`2IEK2;Dwqli9Dvmfm+TZYU>gYAM!II)s4C3JRKSOQLyQiTyMfDski=3beFwAiU##cBx +`|=nsjQ8RRaFSPR&O#MFdisEtW+Vc7E{>mv#S>5y;%$uf4!4akqD4(*J2i!g!Y#`J|kd>K?n+ywpaKA +NjDH7bsHATHcTXu1Bpb;!qxT#I&Or}0}M4UTM<V1z*aaMc?}BE@k)S{u`=$=U_*hJNyy17I)P&NbwC` +#p-Ng$&fe>)j)hInH#yBs@e0?I=}hyCq*7#P$Wof3#q6eR<9Lh^NKVXvkA-c9V+hTw#%_SaT{{b)*DX +UPVK}jKe0w%Qz@{K`)URrpcQ{#Art~#%1T0~?cspaNhN=~=CC*B^<)n?*%%F6GMafhU2#iRByZ)L=R8 +GGvMQ8Iu%c>iVInDUoGFJ>dK4YlCgpxIfq?(f;)LAwojc&#yiq$pafzPWxl`u&>ZTKro?t3=<pqT?Ep +{W}pL8P2$=-f~Xf@#`{m}eyERZKb?q9KMzZyuKS95^&$Mm?fCpmKl#IjJwmW*-(<xnp_haBmT?l=(pP +`ZPh%4^wFnh_#M#umGY5&Al+lR+|%##WFUN&$Y%8jEC85ETteL_8j;lvCuISZy-3qOOvP7GM#ZJtam; +>8yyUBi50j8rX-Xtj1lZriX>?_979!!?W=JXS|9F)Uo+yS!J%BhNHfyKew>%MB?A`10?J$)vIxk>=pa +E&nRSh^8kA7b|1z~1EDgV&iC;Q<89$bSBuYZWd3mAm*iPXBixk;Kbz<5dV9DZ3fufVe&6t@8l1dT@=^ +EI8<q+GnLUr&1Ei;q@<z(%`Qxb-vGy`;-D6W>djTW3b*I}a0=}f~NRI(-$6djs*BIy_|_yqK<;ERAO8 +`8UJ$*N`huIV79V8%s-?Q8RL1T5vWPG^h?YSb9BsoW&L%(GD6D5SSpjJ|=?8MpSN#l$y*V%1*Oz?6il +<&wj{<1$dt38^FzYivbxWd%~$H)5xA7|~;=bgM(a_8K?>maxKXxj`w*YZxo2zJ?>qn4glU5}O<4ckyg +=fVppG?{)dSu>WixuXtM4A@GNakjc+8#gI({3f5ANnRI~vW|F;ZIh)Nh4NfMSOO7)L3xc1BMk-a7UZ< +8~lr1V!6Fb!x7A50CPplxj+JU!{I3l4`y%-^2+BcP|X0fi_jAhL|fpjSe)ufY}kP1tYeIn(kjME)R-; +grkuWbz+0ZTpv^xQ3mBfw8cWvnMEKoQGY_aGE&x^J^hH18a81XNgKw<X8%uUKQE-APXv20X3@)(yOr% +yvV~6MC?bfNoY}C_^UTsYLRc+FY`=#)XoQ*n~`vlO&K>HXm-8GK+am1~Ek6mZZ-i`vRMS6(-a#6dBTa +S+_#Kf?JO%N@~Eh5f650I;TOldvr30=3Pt1AbQk8d=Otkf)7n)4opd?PdP^L$zi6?H9f6X3(02%IIO~ +1eZVVaSrzQ+p=CY^moMuUY1++3m8gK)WZ`{s`3+UsPL~(JX19FI&M-)}YIKNV6WW3^W%J|x^3pYHHhD +!f-`oN!LluWCCJm%Ct)Y2D-wjxx>S+$Kg~Ga%Pnw3-wG@?rr5|nz;kM?Gbpn}7RCx+scEg->YGRpUY$ +iB}T!mQ_Ow0+!u4v?I#sn<cJdarCz`s$?tI0sb7cdtuuA(~#HkpMG5Qw3a152_L$7S6@Eki*hX#fN6# +827W;9x5{8wJKi^d1ISWQ`=KnhNfG;3ZUZaAEnlmI8$3Y^;K?xw=VoSFD~^(b&rUK8IfqqaOcO_`z!9 +c+Mp0V+AaYfJL4G5LL+&XLl>ezwphinLNAr7`78_#-a2O;fi4^{tH;Ko8~xh1S}o%5z|IU4`t4jo7}U +K+43p`O9>IIAQDCT3dmM(mb0^@H!SnQ-6DKa^Cawm$Ga6+VZ^=5aU#ZytpslnU?9^rJ3B$F0Q4g!V*n +IU_|kzX30c=_7P5KZd5Rf=+*%t}qY&3_QEt{ULDu7vZoLJUo+z<b3l|P-Nl2AOnRbKU(~uR<pH(`_zZ +5Tv$QJ9?<%|{CC<rcaUv|m!wG@<uEQsnsNM8#1WH+)zmO942n(;NMUGo3%(uDPKu?9m?M@!CYU^pxzn +`)pI*)bJ-=8nnF*>!Jx0P?AT>spADEJuMI^;x)Bq=E?eBHGl)i1we!O+h|MzFFuj;EQ!DqK8eyiue}E +FEZ?K^EJ)ITXK9*5>oKf<OGD5W*a+7-woFZI54lQqLmlY*cn&>Hcg-mS9^NLQt6P?o17<6irrRtEE+R +KD#xi?DJ675TmjVh!8__pP$c+7UBh%-YkYvPprG++h<I6+oKxiOe0PLYyPqusponm7DpFBRE<i&%2EC +k%tQc`-n9W@v1n-%N?vfl&Vs--Bj(Jbk-cCv=SnF^eM3B<TbbLiAhhur!iUSS{q0@HEdNDS!=uDaCEH +qjjvp|f`#GY#HF~u3SK{lpIk_GdcafidwO@(=hWU+4IZU_&Vr5wD2FqEWYgT_#b3t-*QGLsb6Vx{03I +0BYJ)RnQ0DI1j&K1hE#PG<*8?(h)=7uDh+3<M+Uq`MkC3=_AgCRNhynGiC3Guo4q)tBV27!2@1s{5V$ +6CzmB^nTJpus@bX2{ik{-RdOWX1TebAywUSb|)Hz5n^R2VHB7Ng{nlXEPH9ZPNWNBT_{4Adf^q2ZsRV +iFDxbShuEm%szzjAK-8xi%OV<8vJVq5o;%%h#QI#W3DRwcDi?PF2U!djEu(nZ1fZxZ<5sgNkrhPi6J$ +;0oTN&L$&S7@57KR?@KLgnWs>|^cqiFC7FY=DeZ{6CQKi*WF;CFx5Mksn;~MHUa0D!A5-Q|k5e1smHl +c>14RFilZK`Ul2V@YyjgqF>B#YzXbY-THZZl-G0ynMj?j19e@dq&pl2T0qD%}P7c0@@3(p7VUrQLK0R +_K+ELAp&ydMy)qCFMTQK_m^NpyGEZKg1h@u|Y@9v&ayZsG9Cq<I|=~zm_5bmbigbL1v|?sDuc@HVI6? +w-IMDrerj<L~aLYY^V0#!H+ZHP)%jo3Q4y^E@%~wLY5FsYZlt*X1#c5NhkzUWSFrqMani=9$2gi;;w- +q-4@WcLWq}z&D&(ict0jm2Q8HnrKKX0WJ~SF3g`glq&Ha}S6l(<HiHROiXojP>P^Fj#U3OGRf#5Bh5l +BM%|ynRah36bYEI;De%!8sL0HmMI&e3uc#@(R9h4$b(~8$dT*!+6p)+7&nRInPhoUJx#0HkQLAtG!Wf +DcbL{L~@?q=caJ~=E#k)T+x9g-fI#CxVm*<W!eg!=Wo))>+)+)I)ME+gy%KL%k*#5$$PrsJ`2R%<fQ1 +hib-5=aif4^0%hEn5NUcH5-j0$5WFi7W8K6j?`;QUl~q+&dI4UUq1TXTsuh0AeBGjdBfqQj9&_UZ+h| +&7vN-K**!H%9NL)Z02yP(%|t;Bjm%_Mn!!EEDh2vs0HaDStvR3Ocki{QS{ApXXL~3v)PQ?M`n>UpfYq +V`*+p!8W@BHdk&8b=LN#j3^ct9(`Ac>Gzdhn7<S3vgeOEvr-R89bTHRNKx&X~3*5<4+yLnX8gN`rrfd +e1T>yLvx?U-zC8E*}^{xZC^=2>+%+c~S@S)~u*su#yjIh{JGwAN<f{dtn0sk%3^ODe<#6lx~%I=9Mte +lHS-yq#4$WG-n=%DI!8pfiV#3e<lKj3Vvme1jRhMNavoa{eq`w*+EF5MvAb{Qc>I}5MRiXB|gYQQokn +gRf}OV3n#ts9!qT1a*&h%i=?-Xz^7p?KYkF~A^gY{E$tk^tJe04IvrMS>2wc345$Sb)b1$!Dk3G6&B1 +yi@DQvU8aX(oF6t?kAUB07|z=IF!5I3xktS`vTBQ*Ju@38l>9<2Pb7+F#l?b42D1g6R=aIf?29<FlsY +!Uo)|?FrKBw51x3efhh?QGNauXOP`957zTx`o!oj!`{a2dYeR^LeKURm-rBSTX?f`e>9!h)Ws|*K%t5 +?F=87RJ>%qggq&MR^yL6yIO_bDGa7i!M=FufYc@dkB2<xO!ZeeDbQJ75&jiAoi3IYgCLCBI(@kuz7rS +C7^W`lG~DT~O~ZUj9lzz_zU0!b-$XMsF4sYJNIW`S4pDoBVMICh`CY(=&t)cg}*L~|*KcB?f)qMjr;> +!*kTDvjoLxKRBN3dc(i<MkDIH%PbHjI$@LfqKoHC?g!=>3}QrD<wwXx|Ciu4=_?n-k9t$!PO-dl5Taz +KnPvPpN@?L!jsVEis$ZtyRhS^bdby^2T@2|9xkqumzEKlq+8Nx0jzV@uz>+d8d#Z)x?>S)0J|=Su%;E +ru66Q#&?Z~f+O@_JuvBSBRDKfPw?iE1z_(r2%xQQC1PQQ{uqlN?W2IRuv=qJ0*dJiYwy@0x={6sBz{v +g}ic5Na0R~?-i|XMKg*EY>r%0bjGLkl{&Q%i4QfWxHanpew0IwZpL&PfG0Fu9<G&)mjvl1OnfnoeL6; +bj~Cgt>&97DQIG`eMQ)J*GDp;szbs|qL+<d*QjWCVvvhf;Mgrl<*#ojm8N!C0CH={A#MCcXDA0LBzg6 +9mW{b|YEzHAf|I&l9{O^q~7CiJM7GE{nI>Al(*Hs(wszu>m!LmxMZi-3?f%8yK4>s~5%m3G-|@TSd@G +TnYl|HUWjj&fqBl^(T7`JZtu{NRgh|2#(8)4VCVS0fL8<>N0#U@V`O2?T7V%>a>wGj3otycoo;(P6l< +5m`J=8n__PeDcVMpOeH)l>5>Xaw`qvsDwP<^WG-%NPBw~DeOYa=r_*Gy+Qq>vNK}h)<F2GEsep7_(<} +r*U*U$s^6`+#oVk@!9&i%G)ne(J_1vT~#!GXFBE&0SYYgc&A!K#-j@gJ{O2kOSZi)TqhmPwMX2D|0A( +`pEN+;<btzS&jCh3-3Z96RWm=;*K#F~&GWJ&`G_gyHfl<q75+CcjY{Bn9U*-JPRmmEX7O~p<QRzZpol +1j4yYlm)Wdwn1Ax%oHt*I=ocompUIK8q33Al(*{fkGW68x-a_F;W1kg&2owd=1kyQNAgX1y5pG`fhWw +#ICzod0vBbTfmRIge=?Z=B-#}5Wo%lld{uR=J3tL75y;dJ6Tz(!7_HvRcmUHZnF)J@M=2TmJZdVi^0x +hj}Bf`wNp;-)(s&=7D=z<PhA4GO(Eryie|t<n6oy;mKFJS!~oPRAOa^?VL6-Q5;9V=D5sq^WRbSF3fb +=q=53H}D_tnv&RT1kP0oBZO+tN#f`>Na^Q7bGR-xGd6qAV9gD9=_S_-;^j%jT5MOd<8PlYdl5h2VWX- +PC96&znVDfF4g0}ynP@s6=OSL0uUblYt(INdyX=h+u<V4{&KsKvSiKUmc~?A{|BIb~~S5o<i}O41vo+ +YEuAWW6-O9;tOD_UjX6ogJ2hf-+4t@9;wp`M;_u_J=yi)>n0`LAovG!@D-k>O6?3xmK0LEb*S1RLj3O +1i2K%Nf~Y2><=FPYvFDU(rq<vmg{pWt~T>1b22>uwk4yHAytu2d7r1o4yp+Hl7{WVtF+l9-KtTl^l6b +(7Q&o1hLPw>mda`JEHRPXz(@#qjQQ~^;o0heY>;mIVG)a+vAVW6Bidf_Cp-uY<07j{dbi+4)5$gU1pz +1isH;7{LAvd>FgJxv1K!0Ui8hlIGUz}A^VO`YYo0N{2(Hz-UAt|lf4P51w~5d?lL;1cS2VBNzSuQFHX +K+NvTz}6)ct_G*FIw8c(!h?l2C(mTdSo+J<B0;g?+bTMtW-^q}e5p-|_@P$o=G@oig2_2sM{%DTt(7B +JIvhN|zjXIvxH7NGP&DU2WG#u%Qzo0%oBOdg>8v&{^&IP13E*f65qTHZ2jq04*kKRat1yLk6biaVu2; +2|!~SOH(u=@&%eUNVkQa<9--l3s|#dhw<oSpaT&}1Fs}ztOrGtY+$sLyxJa{jZgcv#*l6)P2`~|#+ed +4cesLuVq2%0oew!IQj7>MZM&doQVfykmCAUpelez7w@ZkQwIp$bLUwj}ZOoEYK7Zvc@D{s?Rg?Hmd5& +-fMp-GMcbDc#y0x$A&<G95c`%!X*e2vU>k}AYi=>CKIdNJt9TOh2(X~3j(mY7FRm`AUbq5o&Um6#jIF +O)_zEt;3Ru)-ghIo;sQVzFfI5RI<QUU1}GCk;llqu~BF%_a^!JLlwTD7M@9d^;vZk!Jl>C^~N+T3m2T +`CRfwon7gIP*+dCe1D1@g>c>kO}}w3Q2WtC>E1n(`-l)FExkg*T9`T??43%!hq*@qY*{Wgo)VxFv(A{ +lX<Kl9Us6OFO*dZ;B5WJQb4+`5+G$39K`(c%hWd=ywXQK&R)rGXe{OOaEgS`C?dqKa$aT=(rwqD9CCf +s2tqk<YAA>CM5Ibj36C|w*UffPFo6QEHw~HUGXGcCW`lHFq{ZQ1v%ITmgis+Hob5uDE(&+LLVw#d#Yr +MAaRFwc*aCB2cm<@}Omvp%p{&s2x`2x_o+v394l^!QhA``Hzap-o&TPUWr}^=!{kPM$W+VXkq+ly@60 +<}b;n3A;7D{F*dCDGu-2}l%#;C<^eVuz>h91&wA|Q`B`2(nSJ^~4t8g7UrnnA<1;Uzh4(h{Khc83#2_ +I??9NVggAF709)VuoU0zzVcgcRJC#P1jKJdRGx;R`NtD4Y}F}>|QR6{(y8_SeSx)=!DkE0^TfaAui-; +8{k_tM;(TDM0>FQ5=*{GLdH7PtEJ$8bX%)M8$D__>{E`-j0wB=mry#GP_i0rOC)Zn?7C$MneOT`^v7; +VNLxc14YRUSPD^0#c_x)oBT$g;;Wl$USWg>?gv=~;bT8>^;0RbUab6d0Jglu?fQ?#!ZaRoWC*3Y~<qC +upVK^+Fj8+I)MWcK!dwfW`HFw?T0YZ#P`eTOVsTK49lq@r;nS>dN`7p}51UC9$xJNZD8pN^7VVOO?)` +4l!U}dV?L+S)~8WIiG8dobhHwk~Bh+Pq6<6$M#)pK(|y3J4wvghi^lEb$a$iW?6aEED8=r1k;q*MAlD +a8W5;!k2G1bMY>9FT4ksd=Fg6?=pSBcBC6sgk;-XHxkslesSf$AJ?X;KLq7qMOxFvX%nUZOM}CQ4kV@ +JehODjb_R1gRZvM+BM}A2|2+wIYg&-^HzJE_G@5DLZ<t(0|o_yu+uqJC37Z5DmMPH<?v@V>-=`L0IpP +tnzKQ%SYR1z-~;NP2aTwz1kYo}@#wI1Tnx2mvvfJMDi{cBo#vTME^0Fo`D$Q2Al()!m>Xs)c_fZ}J2< +BaNTd*hBojNh3>lO%OB*um61mjurMWWKj426a^@y~yn>1*Ih-<naj=F_)YxehPQ!LaKEdhE>R%`3`Sn +=@z={8#$HJd@)%aBir3p{Pd^282#<4LJ<jU1hQt4zu~PusO1$RiuD5U1JoC5@uZq(K4`$^=F6m<I@vN +gdKCFw`ux{2kOMcdg4}K^~B9^Neu~8x5Y73iCG=q-w-42{a8Mg4<~*XX+wn!**Ts<He0VAl()ZG&wDE +pS~TWN+B6aO5IvS@n3*a%#QL+vd!AA7TJ#a!Sk{ekZ!AFSc1YNOU0&=!zM1>w{6;|tAL#ph4NSx_$sG +$aw-+Y<4V?XDF>w6-X#m1HicN0@vt#+GSe}X!3e`n;oXy(U_skXKI6{Qa)mp!))>-lvDjC2jmUzrBN$ +2sz{-}7Y{eI7^VBU2P9D>jSo{O*<^YYcV1=W24vP`n3?<bF0%8KDELX=@k<+6e25toSOI@|VrSE23PJ +6K+4@kF3a7H?ztxBG#K+(6t0WM;_hfJ^2*Y;!}%&tVX(_*SSh|gK|yaUp0g+5$t-s`5v9^ld4E$mORc +)(i#Mh*$saK^x8Gpx`G>lof6@3=Ov7_cBl!oL(rdpD%8EK9Pe%uGLs%pOWPS@|UF&Et}Uz5U=C_(bzG ++X9#D!a2JpDC$k5z<u*Qft^$VZJN-rCoceNc8$<wD<Iu=2^nl}hiQ?T{YvJ|s2cEok{I1Rb44i2Gj-% +c8h{zO+t+ycJV>{jC+tXcIPJu$W@6Z{>hd598g+X*sp7#W=vJ){8z{un^(8BTJRse6FxV=lEwjmk0$g +K^OBqsp@cbmty&IS4vkXX0Zn`-U+5alW9(4vRERj5Z59|^&MLx6P!|=Eh|HYO8JI!-8a7ffvd!LQJ=) +k#RH%PZhow3D3d;sEE6~E3hfk5FWjJJEdne#ODqISkR&IV&!kbhZY&tVZRu&Ylrm|xSJ35l|y3r<@zV +FNq?#|9ZbopKTMAa+fz!$%HCw*}Ze3(0z901-;|EP}~h!q`g0tMi9$RWJdLl#y!pUcJxSJV>{cy)hr+ +X#hT?6*LI+t^`nq1h^~{pgdhDN`3;%E)+F7;J&mknD>BmyR~`ZAws6AXzk})==s4*CBEBwuG6>n=Fx6 +AxoS;ZR@GwY9guD}d|vWcJCVwHj?3vIj2skFq~eqo>uZy{32Ah@tH@gP1^rrM4~|2QwP{2+H5=!h1{X +Aoof-^3AaAx*B0tn-9Lc@*WoPARd1*+uoY2P}d8irThoo#7=-{%$>MbweF%zcD*`7P=Y4d<P_1|c7*$ +PRwI!QVjH*%9=O^n<xcclUml-=VI8(7S(PXmgl6FjRvvGQZBF{Il*>_3(1YWc?l16ezL1POf^mY<2uc +Z&xYCQc?QHXY8hF^8isp9kqS$&nDxw=7d86sA-uOPDT_8=~)SKnnPlc0q&P)6$#|pI+j2$YH_$=zJut +$nUUUKt{gM4RKZ{0IT@7I+GKRG4V7!-3?kY)+tj5q}x8k;|}?@CJlrSQ!422cDIP<?7W64w!!KuMcbE +sj_D9vb4B!$ZV77X$zqR1qLBa(q9N7jw(QDEFXG(9yxG@Qn=$!^@8fMt+#ucdxii(HJY*|qU1>lg5fU +Top61ZxC?VU!-g#m-e2!-@us?lV?jO=^MWAY)XH$9J1MZf<>a?28LfdJ4THTl6AqEOuCt#zbPzuXqK{ +p4a+eC7cU?JsZZxHc9x6}(nmBe&(#;z9VcJ{S-wlNW{0~t)ZTqnmIkZ!Ya3D`uRO-sChOn2DCeaM{Eb +OEzir>Fh8kkMDeE~>$_J>V*rt$=i!?TnL8HRd62o+?QQKF@+9)X%P#oiZK+iA|f+c3>g|IwaeE4Gf3H +axLZbgp*62Pe7!dLF+RZS(O#x(GyLfAJ+5fo*{|SHxfeUdd0_(ZZ~<75;{a~?R5ZZO$M*<t~$lo+UDG +`PBOh_)rvSiOW|VO)@f-6q}vTG?Gy?+_;vRn9HNPAjy(H?3|{TskX;C>Z+j|WKrZrx4#^ZtDuyK?LYn +N6q`T3#rUQ-x)*wl08a^BFuK0SI*TGw$$Wra)hFmExq}#&wB-J0xGVM0ccnImK?PN?1BV|b0JyTMqiP +CmajIaT99ba`wx}{cDvwb4!ro?xTS8I;cn3%O{H;VOW9?K%m?B8(dT}8SE?!sfNZ1tUxepbvw&8lbFv +Rn3vfwp(4knoht5Xb<!l`W}9tQTGZ>6Wv-`H;K7dTn+;J?Uh3-7!oa_y;~%r|sm>JdX$?!=cPvWTUio +l*i#ox6OBwbxdVY@@LUMX$d8SRRaMJAK}eBCB_~^G4gEa;RkCePB|=!CWSF*X+;i9u@Aa<=z|BF5(;v +iMM2NO6mBHZEgo|-IVAZS7=)!s?U;+job2=yk?;%|-klJ-h)9Y}4o{mVl3{-`1fV3~I@TF_2c+BW)CK +#pvsz&7ZD%;vQ*Q(P#I|O;U~LeBvR$%uA$!-sN?N-Hrc20*@UEoKR$7bB1_Hdr;RlX{KzJ-S<pL6!?n +&1kkvcr1Y!N~aNVip`Yc@W6_K+nID8U}B1X5VItJ*I_t52EgM;<RJU?_*(Pgh(4>9$)WvCfAPs@BQ+b +gRg`JZagl)k7wcO+7N;E+uI^97cdURyx)p-DdkghmE?vyFVlhq5|1ZhqD7RGq|ufQ4CheAO64|FK5~% +-HH%5T>&X3QF#Z|tMe=Z#Q^_A;gm*be)VF39m`DYesjsn8rXy5@S~F`PQiP+He;2!vgYibfrm%6NGb$ +LFg?rx++S7YNNeDOBO5*C!G>{S5D)zF_=lp9>D%q(EY4WB459%3;=v{EfMuG?2z5xe8L3FrrIMuy&;H +=-u?&J&ce$Xfv7J<&4hUk^JxEVpKY&`<E$T0fzC*grhiB!Ogh9dgR1^VYPtQEn=HdY{bS>b*IH{z}ld +>g*!`a&9ajn3+L%QvjfNjtodJ8TCim&rfka@HL%(;1#A?r3n4^+iwb1HMQQFej<UDE9^))7-8p=aMWi +B3WlL{gnY8>&5B)Eu%LCkq#x;@oWwHqIHV=cYrt?H)s5QI8h0gj7@yBF=`PyYZ7ziy#gXP30CEXpuW~ +YW9%BbH4^AV37m_q+3KONTa*G;<I*FTw_!cWSzo#I?Q$SsP@he$JB~m1Jl-==lO*mFyj>-n2s}@dkKA +R_rQqCr<lmBkT?NxQQm^iw2LRyA>Ag(fi=%l0}~&D2{{Oc$%ElxVHfc54pg~O0?CA&Ww%q0b_h>+xTq +!_(rxt&<4K#Yl8D%{(}T!yZ62A_eGYgj_55Ty1@(p|(C!hIyTZIqj_HtYi${3lyov`JfS2~ut{NJDNQ +o-t_<kw@$$z2n6r!z&oO5MP{&fvZz+y8`Gp57F<HEcC(X$8$IWx4@${OcBABM3ay+nPI$M)FZd@jmVh +jd##;MXHqtS~_x%r-p&rFC$kN|#Y3M9SI5V<bg-6tGimb3TMFb!i@?+q&D^=&`(J6rT4h`XDLWqai&V +qe<8BJRr4%@Q#J{R7Vqux<J#O?Gl>D1bRfP=kxR0Gp#@+i%UsB41+4WP##=>QH2zch1~pRi+#DKF6p+ +bN1jj6Jc=GJgr|Yd56CBxV~D&PU{S(BR}z6V^=+<<7heO@)_l(U+4AC}*>ZTn)Svq4q0ma2eQRBWm87 +G%WttwlXH=x6d5~_aXq$(0%L>b;bHhA9sKIilr!Rr4D!86WI;GsBzBL#`T#LBD8OAYV;$Dwyu@TZT1Q +mo#t72V0coh<NS`GW8i+1nu12v5B@RxxPH_zQ-J(@H21UEL1T^+JaB=O8+>8#jme~3kK<Q_qpRrnRgc +1gFMtL_0W;H@3TQnyVC5U1MyXqy3fNo~`ns6Olp-miP8>TZj~lH+1YNV1~`X^{hwuOz=)fP}t!F2(NI +3?d%{F&=W#Jw&v5{+2>dF1)&gIQ%UX1V`ba4J1cd=B}7B@K^^P%T|+!k1Lse86G4&`)1*%?~=KQ=T=7 +{=R-xRU_+iv_gU~}xWjnCkqn$Y5dneVSK~Q}*2DS&k<jTm{^=T+fF+4nz#Yh*?sI7DNDQYbCf@*$msK +^twxYTC?8V`jh8Z4nbq&lpEF@<Mo^?MBW5M&AU!O2fWx^SIK%G6M)bl(CGwCWxjinNubAW4L5Ed|@PQ +g8Sz6l^>KK0GwzxY92u(WGXu;iiPGzXNf?bM^OgJl)GIfx>hDZTslHGqDW*~A4VC2PmVFxWK3z7vqOs +yA1nJ*RY@RJ%L+8W_@TCdSNjvASD<{ZSFcCjB-T!kK0#g$x_p3N5ut0;b0ADRt)}ZqOGVw!+qNzx;z* +q|_|B@+zE-?!i$u%X^TX=QMkA1ElH%@jY`YK&R;1FMb7WykRRmj>Cvi^*2;t-zCnQvI62{zo3AFj;i1 +PpbHi5la1>E9Az;==#32bKhHQqn<ZL#xTq%)3f>)x8?I>{iAPx^DG>h6mBG1d_g5zt4RAMQ_d8rLVs? +j}qQRbx>GzmWbe12c8)~+Wqq!bVV|$4j1|>J`=~@a%x0I^86<w0=Tvaf?l&2}KKt#C3p}%#bz?qw20* +1}@SdhMw7ss2Hmzy*Lgi|rn+Utz5y*f!FZNL1(gDdA_9h2IbUGxT9#;hxWgt&h*Ktu;%=m5to6pf0<o +?(QFZe*Q)>$e}lbjNS_EdeBunb5S@@6+owV>m3`vhqAI-Sb!rk3ff;4^zRIECHNnty^`n(+_UP5Q`Hn +-;ZnH2v`Q$ZjoU_HdF1LwS3(~1Z-O+JDlgIhs+F;uu|sNw0Iq9-|5#ZEL#ETHk-tGT!QBwWvPd8*_a0 +=OTe}ma!6{zV&Px`-w54VSt?nlueUT0(rvbn(Hb<tNfnqzwzG}xG<A&Kqd=tZ0##JmFo~^63@5sLuqX +?HgeewFVcw0C^W+A<`K5a3jI3cB$U>F|Vb0h+$aC5X2iD>dBAE`Y?qk?N4D2Mll?Ak~pj%G_1e!14tu +Bh}Qx=NC2N>B9L!~r1_I%B_uzA9rpeb<P$BYq)G2uB^sF1^>Hq*R>a45EH5UV5;-66m^Pe#24wj{KB{ +vgp=a}bx@N8s~3-K$EF1)~?q0Z5g|4<0o<+zQKF^8)m!?Z%8f=L6?aJpIzqi$7TR!{nRic#5lV3`VHB +TgKs@iSGGGS7r+7wn}&RfEWw6Ku6ir4{Yf^bf%33^rRI`DTThV+fXM+sKv6K^D>)|Zi|Pyp6bRxctjP +45=5bK-s(3hnHr0>yWLn9Nl9ixBHOFhMBRd=KmyF~J)0A9-vk-8lLrs0W+=$Etaib74Xx*g>TawwtfN +PPsi~RTHzTjuh6zuO!C+L!6gBp-zA@W45X<T%NYp$9%%03^;L7Gz<r7YHxR<fpIG8L~00@fT3_q}&Qk +aFk^jkqHtL;HlLNC7z>^Ur2sOD=!^z;~89tPrF;VO?^J4e2OwIAYUl=7++vLO}7CWyt`?4EQB^gKMMT +5|F1%LH$w$WbNj4-aM+<vdvcrB^L!F0?;vHoXSs;5Y!mL83g&jE5p@KC7p4J*O~(9%zMU)k$#I%9>x! +;ujAsTLI~|W_bpN^`~uCY<|-I__D0xVM`{8c>29|tOv&k*qQH1`!c<Lv2KuVlc2}^_5s(!WMY1~iv#1 +!z)*LWSDbmi1qqX?LM#hsJ&)BdO<og$w>vW@M(5MP+8x~L#5$kiRmh)en?GzTH05O7x?*jVeGN>&Vkj +wEXWm<7Wm(wwTx0i0`I-lAVJ1#TXB)L?*)O}ID!J%9#EE=87+nT(dJMcfTRu@2&oy?&Y^|F-cnekEL) +blsDf=yeesHZZZOz1F6{w?5NhRX5as%``JW1W7<h$lwu^zmI2d^YA#(wDYR&s-b4(rxgUcv|beQm-Qc +o3-(1nG76WRb+X>yR8oRyqaA)4f!{m*(MALZ!hRK?MhNqCwfe63ZswMvj)HmcUY+=1;yER%ebBV^XE% +gcSaj*1&w15UDxGSVJ5Ehp@#peCDvoAodODFg!KX!)ZK49>Pqi^Q?3;*v=)_jA?5=rokaGY@Va*;iN= +T*d#K};VGSY-s%rWXKRMvUR3!Tk<h{`kkp%PNYgO}zyqaux`tng=a)t?+2k=fx<%*d;pl$gkHQav{(3 +D10ShFtEzdy2X%iSFkM_s9oj#Ewhs-z6AUCjKS2(+H%ylEMNefD66>olhbMt=yP)h>@6aWAK2mtd`vr +wQxjTkrs007el001HY003}la4%nWWo~3|axY_OVRB?;bT4IfV{~_La&KZ~axQRrl~i4C;z$sD=U24C3 +z3K~?CGT2i&k3WKo%We!bVY^&|tS=wBs3TW}L|T>#xjbHVe`%Pte^}Q(fJ3yM6gX{lU{{O5;&9n8pL@ +k7v=pbfvc4YE!ahnpwG#S}2N4#v~mT=7&^D1jcSCMJ#9?OGjFIiONTQWo1gXWODKsI8Z-j?^01RLPb$ +&nF=qBcKB&aV|PD5Omk!R@zk>LoYA`8G5-3LunkvP<EgEuPIODX&!7JW#l`Y~LZxWY)H+(QWBbb4zLU +skZ{@o3#&+E8KZp=bg#Au)sWw&?bVpF=$s3y2erxohe^{gB+6r4YF6EY)oXPzgggsDgDoTYW%b9e0dK +lqJ=<E+;fiFxZ^STLDIzu~+YR|TCM-QK-OB%C-QhH*|7TwINwUQ~oW0|scOu|vw#N77m)UXi}AB51*f +PUxh1F=NDdHa>ELxesBz2j>K#x5C49pM}Om}c1kZy~xSg=yF$GPr2LxzmiK-qCL1J-&btjlN-xXw6hP +&MVag18V7clzf{l6AGs<^c*f0;WT-9KrNg`7W3OP$)Z#e#OTTj?P~}J!DO(Az5x;TN8?fQ(x@MflIb9 +hX*gR@Nb_)!jH2Z@T+n>En9t%tKom0{EpE)bWb(=49F&EDlNoy<mD{)eg7G>CR2gl>D`U(lOKcPg{6) +(8w`Qn}-t77X<ZS2z$(*$DU3#+;yMyifWx8NF&$o-EPlGP~)kBfc-xWp>13r{FsE5iJ+ois7zA2rAz} +|oA_3rO_f8O_qmN6pNJ~Ws<{?8-QZnbi23JQvKx)s*3FRfXlf6TA>6HO}RWxw_uAse%w@3IFBu8Y(g= +do&qNVih+5f<$-ag&+sGe-z$PJ7qv^Z_tfM#=NzyF`d{R6CralRW2&pQ=~!WHp&R4#urks)Td<=w4vw +vTj@p91E;QPOFu~%~`EFj#Yk$Hy>Bw`gGn=b!k@-oB+4yS|ko8tRU{og|<6COZ|X-@5D+p9shv!U#`3 +H@o|gG=n>pSzhZO{@9R^Ohmo$dDEMQemVIS4-Qcae<oV_rg%WyGiOp4bBIKLUH?98wP)h>@6aWAK2mt +d`vrrjD($`}r008Sy001EX003}la4%nWWo~3|axY_OVRB?;bT4OOGBYtUW^!e5E^v93oNaGqRd%hv`& +TRpT?r&Z@Ab0ZZYz-rC_1IkK&lEw+%L#fnJz1)Ol;Gw%CEoUc~%i3HIWiN6t>SfYp<6%#~gFaxy}b4{ +QiIC)2DxW_Eq`v*=J9`dhxV;`sLT3{d4(m-uuDD2j%6P>+<#e&0lWbUfq_@?p|M)n}_n}yZ^Yky}ios +KmGK}+nZNck9YUw)$Pso+sE=M@A>57*N;AXd-HgcPkw&=*X!H6pRe!B-H+w*cgD>7zq)>Wcy;yj^?w= +m=I-r7e!c(s?%rQAaQWu$e*XQ{{q@!3_3QG(J4gKcM_t`B*3a+qs5g)0!_Ph{^*oOZ@w;#Tq&&I3Ezf +!HLwSDvaDD&R>(_H7pWVHEyubP3mn`$chmZbm{!+@HukQb?d~<XAm;0Na%Eu)$d@PT5<(qepZ|>f{Uw +^jh_U4ECtNVBC+K>0w*X7~v$H%{AVt*{}?tUq+uHKgW>(@6AbNFn;W4U_!`VV*a`TS3JuWx>Q$De+A` +#Q^E){ocsKRx`qhkyF&+w$f0LuOk3bp7`FKCAiWmmh9#Ugg7I-n_bg`*2;Z9?H-B?cvRDJM{$<dGUTC +<%_!v@9zGwT;Jq%p8ePB`-l9cv`^}<PkTS&Wyx88c=gEqbDBT%!H+WOcjY#xasTTlKl$A)_-&=H%gtM +deUrV<4;e5E{aehc{BT`<dAR=Zm)pyXkoT5<efIL7zW(-QdGghF<zJsXfBxjFm*4#{@6Ar<)tuiP>E@ +@OV}h?sR&{^%_VHaNo&o;+^!aE1lutbQ^x2osUVg{yzj*fYtEVqslrO%1UY?Y1o;-i~?6YsbeDb_}^X +>C*zJBralTuz>U;nzrZ07H6@_%mej~Vi(yX@ra>&L5`+lRUI?{d5knc(f~^5*KV*E!}_*Eg}KaupZ(` +Q88O3~%q={>Am?Bfo9vAIr^;<?Y?$W%=9vO>8ID_jjk8QGPq$%NYHuPcF+^^QNn}|8|=rc#)5Par0w_ +{^IuT?*6iTdiU_iTmSqdpIut5%g41ZwUlpP<S+l-f92^{pZ^a*<%5e1{HIS_uPxj5@Q7dh`!9ix+jpG +%>+<T&)&12gZ0YgphuiDvf%zK?%;Nt2>-*QgzE&>t>ARoGoB!DMtuyeNQOn04|6^G`*-w7*hrCdiHr~ +H*w)Zd8o)_9Oj$dCm-oLPHc_Bm27wRX=^6LxD={$RV4Rri!&3MXlwz&L*kE?zC!-w_b_dkA=zxFwa=W +*^#_wPUWHt%8Te<&aJeO&`6`RyZztLr{}>D|wP#NU1D)eksATmKJMHRpEsHlF(Mh(G=G%d0o#O>j*Ni +K9LL{Q1SjJb~|De)r9@&z^kw{pZhKynO!b({Eos`}(WzpFhd}eE9j>8=rjo<<sw9Jo|r7S<b#K|M^PX +>-qODzyAJ<=THCT`>&sW{`7g?@!>_?_Ig?NabDIj`ep0exa?=kKgY7?*S_#;y{!9^zl|+#+0OjBR{vR +Jr+d5XHGgYuSuZa#LI!LZp{?t2S;n5B_q@BD`EajW%iqRwIhJj?tY<#b&TY#-W54X{v1ELHIx|W?M$3 +RX`pa@`=jCXbQaN|tvmcl1*8E(abgo<GpC^r&39gg5t|yZ_j?0>9U$&!VC1W`+FG?G{kyrM-Qja~0TJ +q4k?}LwIWk>CoCDXaAc@JY{u1iL(Yvwf$p4mpm-!hr(Vc)W{nw1?#R@;s((_Aycnt8R}vL094GEA={d +$BQoJ=RQV&x8Axg&k{NWttb+uWZX`2b<9{!jc*8J^Q@m!z~Nvg(LII&h?W;^sK4$tf?<&KDKa1J<rS< +aww&)?Xqr19<}zoaqn5#y5^^{GT{u}&X#9pWAiz-hE2-aGt8EK%^5A3@XDd*nHO2?nm1<D(J&w^X5>x +GVda#!%P|<gSJs`aYAmmm>{ri^Sx!4Mxz6V9noXwN8~==axbnQrCR^NUwhx<#4Gb(MvssQjZY<f0J%^ +W*Vboa2$~v=={qmwOnQRQd@^~i4+z)I56R+dU^48d4oFgOD7+&92cK`#zO6MU|53gnq*9=oSM;*w?=k +k%dvja;Okn_&+8upt<U5*?i2h6!;8)5>D&vrH`Zk4^qYz~IebTf2aax#M{<#;v>FHh!J+k3~%o2!P`F +l@FayOhu7NipmkN=|{(>v?=-zqXUj*zo|ob<4K&Ge7mM#Tt5Eh(~1+2itIF`(m4UTx~c-&47*b$u42U +CrjC!Toy3S>_x$d2T$^VcYezG^S+f~GS-SeEHR+6IYUe`kdQg-Z1!>TtNxAOZXC)U>xe~SN_cwX1ecb +n<E%k|?7)KK^S77{wu;Lp2IeV8oUr0y9S_L-H&BWf7CwhhvQ>3u=N6v6ANYKpKC)>!lp`<42mlpNAsb +YB4q#;1%XPuT*}e`q1UECUZDR`9Ie@e-0L>adip61v_2fKaOED^T?!cQexl+K$g{|6R6LpDq#+UHP%q +EzEwE?gNi#+j}CDs;S#=&zSIQ`BH^UuJmS4^t|rgit^vkhIytXPrb17rti!w$Dq_!^bn<wVacJ{BGi? +uVG4f6mxf%z-sBVLZKp^uaJjI6Rc#$HFn{%ZYKF17Il~OUr=qFdTw~?%Bu~jKfqga_~63pYeALVP74Z +X~wN$hrrUxLRb88jcL_0rw~i41gZROR8d2`Vw<y7*`$nGIrNQ<JdIh{Vcdf`oLCx@W8IA)*m-i-jVp2 +NV6T~Q)s4rBMdFTlY@D!jj2W<l`7s;8;lyuQ$^vrjcp^_8OLk!GnsY|wcm{?SPXy*z$;sl64me~^F&m +A51?Z#OAppj{77k@}+-w2B*_w^$)!CYZ^VoBOW5LU|17EJ3&$eVodJZ!v)rp(f1om5bVeepaT&M%;U7 +Kr(J%OUiuE%x;pIz1=d}S%_E{IgM?lX@s#Q3~t!2>`W!p@nGl#1;fE5^t+u$+Xp1`Z4WHqRSJOsfM%j +ga4V{T86~jZ2O!=9InOfVs|-@<;4sBkuD)B4&k(^c@J@Rt|tOBf7+kiTfZDI~>1a$s8u`A4mg9*w+QB +b3$H#tDpwH4DBf3W7*?5)$@lyHNr`6IK<(31FMyX;D3!ZjWbqSi7wR;u({-B{J=>D^8!`_;Kc6J{mL6 +%Sp%^Nf{79<m=D4cInEe%mGnSkGQ$=2RSC6;HkI?vDKG+4;s~=)LI=iJ%7W`jS%|L{01q_9hybaW+(o +R>Xdp-u9Pr={dTt!gdC1y01r`O0$MX&_KTqQ1;~zi{xJEF(Nazz1h{1U4NnG3XYE1kP6c5-D8;L_?=K +wq)GiHj<zyLOYIIms=iHRB*IxjbHdO({((=f}Es0TvCX|m8*L)EepW7w7ajo1*F5SN=#kI(@cz-1dIA +CrJ83=b2-p66IGON{Z5+W@+Ga6PfCMkoq4;md#>NSXIwT1~vlQclBfCQ`w$IGxlM^AaJdM+WVS$;HGt +x6J>du-b};1yf`y1~Pz*+0@fL#7@LD@o<s9LB{;p5H&UeV+M>FEnpL;3@__|%1-3n2-po|DIK3|SU0< +}=>Yfx#IZN%=%F!U*kOenT=0Eh;t6SD#X=M(G6GO7V+Bw_h}AbYM(BiA+_tjU2Ye^5#tyNiHI|U$*hx +5801GAbb)6pUYh854N|S$J=X@-G%SQ53)|6AkY&gQgRwW`ZLnDM)$1Y`M!Y4#~WAQP!e3pf7+8DHw@S +%&sIxo6j4t5mQU8`)B!-U#aHYD>0LS<37?72YuFb-0nIslfuCw6F_vI1-?INiXZc|5q|f;Y(kww!Wdz +-E-#WW!L3;lAe3N0TmO!!IiTChlYRhanC2V%Ef5H|#4Q01yy0Fq_=~As}JCV0Wg)sQ7XNLK_J|;f>)+ +gzc((0<|uRQ_#9M0=?nn*nlQN*h!|g5I!)I#AOT*3KK`#G3*@h(J^O2xk!J?&32PV=1P!SSJn;FHGVH +9LyKrbcG}rk*>>ds&cIjVAAxcKA#xNUd!&brjAAtv!0Ymf#AO)eDs+I@!sRy15sBxJWm((FK`kBt|6t +BJ88YB}Vr;CjLhcW?l#t)S$iP=M){$?5A{8FfP5n+16MT&XCQg`N1r@zQnz3Mq`|i*_u9En$?ZAB_3u +t_#>{8tYbB2!2aDtUC=IHEj0s;9GCc!kzCYj6(2TU%g(cm%UXFC8+pqF#yM>xv@<6v@&N8JgBkOq12C +if#QH>2K3+Nv<15l@zYn}NxpitrdhGMTM*ZqC!lK?q@;cofFU$wQVpn-&ko1c9ot8DQlGm3@_&2t#D8 +4HH>CdD#T}Pv|?@3)o%okc_(%x%z~?mBa-5JuofF2CjYJYq0bNVUC$2U9c<IPO{I2aWEjcWjO(dEoU3 +MATJ`jLLJCLv1A~6CqhGqD*MyOAS(fN<-v^;%n~bylD+BTXg8IGp*5VhKs(^YiG~;z<I5v=jQHTqeFx +bAyn{CnWR}u&di0o8b~IHHnBrluVGps|?lzw?la5RT#^caXq^y%%a**qBNQ3a+hr+{9&QL=Eok6Y~IL +FF^N%+cX$ai6EE|x_yH;CHd*qKrx2TgJ<A0@$;3!3B*(iRxz4)cNZ#2E3!hAXIUkdJSqH{|;P2NVRbF +9*td*p}6#IiKsW$%=^=rI#a<8^odtf>x>Lz+y-|<9@{Djq_QX8%Yi)ybzx%6d%gh7sCnRc96nnJ)}+x +Y-J-K#~laOeE?ruB^nbF2-cMyh}|<K$kI4GU~~w;N9!YCH$GP7MHSY$gJC<am+(m14M{<d2@*H*B9=_ +FKV(%En9$<8)<8(!*xb`Zg!$tIkgAJv8q%73NHng}X3P{;rIjv51SCLo!0tAapN&dPMCK}onI^6mFj6 +68ntX(HXHfM$fUKL3lUia8UDgS%t;CD-G;<~^Cdb_m!YFLDqaqb~SOZ>mk;|PU*Mpvp11LW`Zj3C&rX +^kgK6-}q!9Wiq=(urjGWSLIN8ALCyB10OSXFSqtGbv?6QKu6qA)aRMm%Ml3TIj${BW?^jaVd+KM}hYY +<dT$x8QUPXoF~@t88jaFcTnctb~BG>YkDyJV0R!v}tBFGe_W8M__Ak@}k8YT~-b*009Vi5YB~^4r|wH +-L!e$;31-@DKGBQlzb=Tu=P9p+NQ>f0TEN$F5O}&9S*Szg(z{IH~^c>$tz-jHazKAWvAKK6L*&q;ctb +^BZf_y*GUg?je^~`Da@h%Er(*1JFo*<1OvQc?f4dp*BGnh8*pfd)P?xbcR8d|6%+%kNa{VHfkqrQq?- +VkdGtIEVz-&8A=vH%Rb<E25uOUVL_SB(eoBH!frsfibWRm)u+XWknd@~70ec;~9vMBhG)S=<8CXG$uT +b4a0>1WUVvVw^-<}eJ13ctO$R4oyuHH=w8eayit5gKLUjXaF36ssO#G)NxnIJXLtSkIE@P2?hDpy8m; +{f2mSWQ<%`mXS|I@L4TFp?=cSIC8FD!<NP03U(nAV$RT@%}1vP=nay`DW^*N%)#lE9q3SMfp?=0m@R_ +Bo`7d;x`iMOmBB|8<nz(cq4YGS);ec=5|~Ps8Tcr9#19sRiTU^i*J#~Wg}%#n`T4g1%Frb6ik=#Ym;3 +xr8h<eU^$cyRm)Lh$zm8&*z@Wt;cRH|1t@8-(59F=WfrIc<%tAJvqcIHr%%U<fB?c_4uyw+J0uSmIcv +`&E{mSuu;iQqTScZ|$_T~pP^&8QAvE<NY7o%?@IoLN81hBHNV1QSf!N!WjbO|oi<JV-kyEZj!qGi%ga +B}@uv4{9O(TfiK)jBwou@#-06Qh%(-3fS-n)7aTa~SeMF5l_`-#X7&Ce+K?m)UP>@#Gxp#e5_JkdSgI +!$naN<+7nZnmp|Lbp_*DO(+CU52`WVO!!+MFMxSc*8VEPw?4zBc|F=Ktj+gv0->d=tISWe-KVK^AvbY +N6%mJlmRvDXf$<GpaMs$fs*rX1k|12zn}P#B8GXdwYN+L!l}+hGBGg*{~$;q^|V8k80OnmEgDH6TUul +x5DxUDYCUVJb1F^bVp$%phvtrwSTLKi3DKknE5T+r4W14Mrc`rp&_;m`sj8qKCJx|If-uQS*U~^1B50 +|qI-3G9zY-u$lre<Z0+%gTBKTX<TQL8W<q}3I)dcK}K#BmsBcS^pcRHzz8W6E(F(HG~;m{Nm<IC1YNo +b5_hmZq6aZqj3FvJSw8REsML&I%OxGY7R&?X2?m%*y7GDFO?9)@4$dg9*)I6WX^1j-Jl8xZD>&e0{W4 +a4r4^;!i7ve8C_Xo@nu$-@CoJbz`t9pQvzzAyTu3Y0KssfKbI4$we|i-z$uSV<-MN?fB@vMExtT1;t0 +J14siT9U^>A<0#PZHgoi+HOipfreO7DL^E2AiZ(^`=*Z~1o=1I#o7;%q}Ex$B-}P-2@4_FIKo2mWrgt +_hl8H7*|n)pZsxNHu~Y4Zyy6g~Evu%~XMztdVD>{*WJMfoRM8Y_s025HbBs}$p2Y(`U{TjeK$}L*pcF +t6avUHAGC`ZVm`vbin~{++7Ozxv%{Vln9Ip_sj5vt+V`!xa$-4zhAZG4iwbIGa54NR{XRp?JmHQe_Z` +FEM*LLv3BAQ`A{Sb~-Dely{WM`<9FFK?CLe4hT-ig!r2cd6+aa38tVnSv;Ry_|TpSaxRhciXxBg%LPt +id^y@Qga}g(Q4rkf)UofdF4tlx`}H)_(M56c7SgYcfogjAj`en`U|BXR&EGD)bi@O;n(L0WESCLJlh( +47gyha^Q1HLhyWbD3g_@ITIu0pGy2NU2DRKJRP^{C^519nFXv&gy4J{<26%LachJ`LIO6`iXr1bN9h) +^o56;{!D@l2lc%tA35<CZz7R79z-_{ymPPfbf`Xmh3^YM5Hwq@4#~?sJdMdhahksr)$-v@zsw|f}44_ +5vxHTbE`8duy@am4yR$QZ!I&~E0LLWsOlRbo*G%FvAjT*cR2ITalnY2CNBv8+RhBaUb9RO?)+7L`)12 +b~T134&Rf|apVgUuk1Z<e=vSFfT-z8hj}3BU_>@B>ghNVY(iq7YPlnHoryfRI}T+Cd=H0sAOqT7!s#G +}*?~#7#d<e$5fUWqr9XmOo5UfY6;8D*O@ftZWYRf1)F@^O$NZ3Kabv6(W%t@Y6Cw0EWFw{%kG4>kc(W +{MODG-o0DNwnt`I55fx!ePp}t8JRiEfx;mSb{5h%QzFR>!N79_stBzG>eh}!bC$@neabA9VMvBTmQ?5 +$YfT9D6U*^iPM#F2cFV!6jL<PuPtY}o>g7Nynl;*ORmZlwfsiS1>Xc+U<V7oW(0~tAgk*kEz*U9bbZv +Zw0WG~Jz;Y;-k<9{N{GKv-SLa0I-|E2G++77nHIr%~VpqowD+1&YVkq^Jr!15Kkd53qyK~S&R2$7_H< +-yZXO15ru9o!V6>ZXdbO<VsmC4p>^AXC)&}C;m#VR}wZAZ|qHiZ*5vjxn?EE&7o7sdW&TLQrc<~}=PS +lMwXRgt@r^Wce9!2)G0>5kzL^rr;2C|pt|Sti;H+ZpH`uzx}2$|eKL?g+7DQU$fNAzU}OQ!$~W{FpqB +MAstS0Uqv1SC&pIpjZyANL2(+X*N@!>cL6r9VkdP?Nq^mQ94c1r$KnS7~O(wA)X7NaMWs>2r|VWd&lg +nRWpR9Cdnnc8qkN3iG?J}h||;$A$sJvo02>SN3;yZv*Q6(2V=K*f&DgJ50S5{ZCj9`BcyKf!_{5|9GZ +MNp2_EwGY-iBXJo~yYK(Slke8BW?EDSoHGpdG1MG`-gUS{UhUtJ&M;FTSWWMmXW^QCgPl)Mux!G-J4q +{LuQMXNtE~`q8+xN-jA&HC9n5cn7j_yPwK&AU`rJ<@pj@x2A%b;}HIJOF3c1z*giKVO6RZ1j<@@B7=N +?~oQi3$3MKuIPTdgAJ0HpqLOXdiy4iA<~IFbz^<cvyFX$X80S)q)@3(Aa@W>8v3quJpSN>(^8;5~NPK +2i+R*5ta61QR4?3l$b37V;J^#kPq}`MaE=KuqLLU`Joc?Ii$UV{AsnAM5Ef~L-4vosO_eCR(UP;b8ZT +8fB_7@9<v$GjMz*H$$wR9wKqW?-jqB9e$JMd+iXP=woUVPGaJJWWw@cNis{<%KuXs(^<4Y+AY)VM;{X +P1`v5R(ilACiIOTe}T@)9ZosZqbfi;r#H>xkIo@ldCwQ7xI1Iemj>*#`1v+{@^Ef%nvO;7|a9hHxWCq +$BV%qB#M3)qAdW?j#k(NH-CZAexMGESpO^I}*`BoJqOR5ANW5KUmd!xAV2q$nUEO%^o2bxe6oUDN(B^ +U|4CFcD9|q|?fQNjg1IHb)+o=1%i$%o0MVyV$CCS_9c7J(NEvF;p_v0f+2Eb1+h!Hu=~|YkkX_6!3D| +)u?5G*z??gWKy$ksbAWR8c{a8i)@O)5)}00%A2iWa1R=Ps?|FS8tP7`Jy8d)cUb$gqQBcGAmbn@pxQR +f-cbSuhPT>=V);~7h@z$#NH1G8j8@2N4Bc|Aq7rHffw-G$9#;A7*Q75bZyweq?f(^@XmP0S3NeKC7}$ +#qbjDIcj6FG<#z>?B%I$$uG%o0-6d~$9D?aSC{-<t(@eG>3MpO2(sku|nrYu94XfzKuva3Rkq97_%4` +oqaVi7iRomOuZYIK9yOgh_wpct?m8$k%IW48y+4#{E@6sgRj%B>owdV*n3hG|8EXfw;AQw=h7@B&FE! +ay;5r*_gbaR_0RNLaL4(O{dY4L;O~T*G1|KXvpM?%F`A5hKXQyGpns3}U%r2O?5Gm7Py}MJQ;U7P=SZ +4cRu)m~|iaBo4c^PaF>JM@BSGYrA{?W(Q3(Gq>n3D>QwBm#y}45UW?wKu_VQtu2W*(hLhUkc5VKR=Wx +QCb!uvs>wnjRHWvl8c8rrxr}fe3cPYChq}WwvY0d(hskL}-wC6qR;4-)4y}{5$<-*l?3So(afeFJb}o +abWodS9*mi5^w&-t<Gke&zNcv8Q9}T=MN<G8mm*N8Xc%%QNZ<aFImDL)g)p`pw=Y&v7jd~dMg5u*bSO +R#V�T*uhtC#yaw0c1berc7h6GRyeM{1nK)Prr)|7ajA@It28UKPWF@n`fFzJCrXZ9SeR<t1Mnl@iY +*oQbrD@eR6zdU$35+<7g@F=~$nu9t4MDJ|*ojKeN_-}HiZ;=FBV@+C2QVZ(^YQ@{iL9@vCR6V%%{DU* +y(%gp^2iUXifXqRs8F?5A#Aoi5O<_HcI#Wqz(0sW*#?@1nz95SvKcnJow}|OYJxd0ixQVQISyfOkb9x +&B6T;5j)*B1>hZ)zfu_JeFPiC<4GYUm00da9_E6iwWvit*HA@_T4L3X7^S8Ci@HthIckTt)z@^&Z^#x +1nwxZeoK^4>aFUk@Y5@ckg750@it5_T!T~!SR*iJ7t;MIn0Y^Ncxmea;QrJmK!R%!^sm)%9PgOs<BF% +nu6qzoOlU=p!U+e4LvEY-2uwpoy66zVXIBddoUg)G#jT$8QERyQ+NsC0o}HLBeM^{LtAHj9-*rG!2s; +l-SAH#4Vdy_kbo+a&?lMC_SRP(XqjyUm`n0!K*O)mp5$nv@GovOD4v-jAYEV9giJ1GbuXTE#~G!DSmu +ZfKnYa#7BiyMSvv^JJP-*T(D#u6FfTJ2AZM0NjJE&6qNKUJY{~wmLbH5UFj@$zE;NAYJRQ!g?4Y(Y`9 +F@~SWkrWKUxYSCu5vW*=|Db#b700-@qthTQ<Uy9Hif>&}X-2owNWCe=~8|HwC?>3Mhisj74)`-<ozx^ +;88hfqqpyGI7HbZ4&wYG?O+Dshm=CxnUwm-!{WDxpoHmAhYX(24Lyu#|Z+mr#VP_N#<P%MCL&)Pc~@y +@nevLFti@3ccN01^taIoDc-y(lEV7v1)JI<>o97oct>vR6V=p`2Q+SRxLM&2pW6a$u{{E#aeESDl9<q +9Vm~Ouo<qP?%w-SlQ=&9t2|3FngUa)w;{O2@nLcW{GNY>>(7++cH?Fy&}71SAcU7ouNoxve9CAW}E$6 +=7~f{cxsh>(WF%DO&OCuu!ml00pc)`ddz|uHb=ZL{@E-i`S!lWv;p~{9locoL02m#U%OsGVF&N&c4jM +s@Zkn49E<JpUb?WKfaDq%N_smx4ZNQOqp?H@IG8X|m`Z3ET<<Z25u9xjvlH0+LPN!$(&a8$BD_GV3+0 +ct&ivo27q&wY+$4XyKBGg}4QWXd;OC#!D_)i4am=<66&*zY9y)J`NI(?+l=C4aCJL0P;V6x&L-+_zf$ +z!>yF3X>T%b|qRA=s9j#Kop>D1dSJY-i$21M-i==N7B{775D!#4SqnJ1P!i^oifJ+udoMwx<U-Mlzxu +jeXxnMDr>rcKPV|4?FtFl134Gp#h~h8F|!UZ}Dy)?A6|4w1Iok~6gfDKO;^l5#{{cmTTTFu(#OUS!Z6 +n>uh;P{7g%TnJQ!zRSX8$iCP^rdDgmI3=rk+NG%u1yT|wnw>sgzT<Pv7Ic<VnzDyF_H1RPD+LyX)=VE +P24zFtOd;%cH_0KUfEBj*QJd*V-A(^?4^0Z_V_N0KWEnA=S)@gS1tzHDc4B00;?<$qOa2I>HZ$4cM`% +J|t0pk?**2;g7qx1?Mt0JXVzVlI2d>;`)NZ!!dF!RkRs#0W1nIPpN||AiR?@T7r&fVn);ttTxF%^x<U +T|;>EU^6U^CZ)(p$wM;RclovSXHP6A_55goYg!%(+^cn=S5Gk&QCW5H?&7TSgb}*qMlW!G*R2tgj&v6 +@=MhUkh}uEjHF_JEsfv2AFn&6;->tpfS@GWGmj}vO<lIDz|Sc`5cP%a=Mbn>a_=jWi>@_?k!$KM6<M; ++AcjRK9v$uRb4h2-ejE?941&BQ&gnvID(Pw_DiFuL!uF++U_+%dgtowD7C?6*5la>j9(GJCBy4GEoFn +GyeKc#$)p8v@egf9F>NefQRGG;tFR+T=4*M=H1e3`E^|HXY4!=*1_qn}28VYGhh6uxtI8$@)oTO2i&9 +9jt&Q-j25VK^N)-F*EhNmhql#2`*hM23FZKd@`{PuXhwrZ5go4m|4VviKU_ND?o$OvKB<|b8Nruf1XN +E$Yva>yX<_xpkg(ax8dvRrUZbCD5+q3m3aLs}xg3i7y1}W(2VYd`{gqKcDxtgMkHAu*xrT10&81S^NV +?#}&r?$C>)2k3($FMs<BS3lsfl#SB8`RcWLx*@-lJs(mr9ZTfW>wMqd54W;UX$EyO93GyXHr&#lvSS5 +^&{J?<vYluIQ}7!3HeY#cwX4oBoQ{P@JhFH6Uu5N*}TMMSw<WsR->M%aFOecVfp4X64K4Whl|o7ht#M +J_wHEMalIyIn=+XQ%5gWzp(I(~i!e;sdWzEht}5NUGq1u8Y|9tywcq6)+%nyzEDF$GM^h|^eNm7*CbP +0<$wrXfR$$U%4ED4it(u_%%vR1xnrSy4i=ATLzOvf@%e7&IURADavm?9B+}`n0w;`UR+br|Sorx~tka +OF-@M2%&@V*Et*es`2sfZdQ5NcrY=Jzav8=4dluyZcYEOwG`00=?t@Y3ES?cNX|NO4=LfD5hKU2ExDH +N}+CW*SHdqjpT9?eprgh7B}%_s<Rive9ax8;;jF>VlHrs$B}J%BVMEc%}|lRn%-uWQJZhhK0->&{O=% +fx{ct^J@+WLsrf=g&L^sYC93>pwfs+`01@6ub2>ht)6eYjT03i6Ac1@vH}229{k!6vZ}a4<*poFt5;x +yjFrtBC#ncosU71qtyC_o7h4-ChIVsFuV-Vr#ao%D1ghW#1U$cp!M+2_<-5&(YG07vu9&*n!Lix*C;n +1`p_2h^xNh_QFX!!5`$d#RqMN#wcO8H)8;iIVQ4xabEVlX$2UG7M5_<R6;-14)1q;6`KyjH)>D60D-a +_J`u!}aeVaV7dAiKS*EU$Wz3@AJVKw3Mxc@Q-ac%<SM&FArDA^P;Tm!)`R1bh0Z(VH3WUM^F2v{BSX7 +PrAZaag$$xeDiLF2jDo<cn<E+sBqIy&Zfwxy=h4P7_VvTvct20EGWF+H?{EED}jgW~YHv-LJVI{#m}G +h-O7}%w|0EC%fD*RVr!r)1fKFm*rQ*Jf5eVmO5bkv)%#E*d??EY&-X0H0=7J9J*KwwR}VJ*k^7mzI%I +#GOyQFM3(t=6>3wkC@;pCWG==rI})hyP-@z|8n$|;mgK9>qJ&+VmUHZau?mZTu-p3U&2L!kqQ}BIZP~ +V`a<e_gc1~K2k@pLQ$!ba3>dWx1XO~JzXyHI&q&LLpWiJa3P;P4h!=`yiihYq@Q#O&K)ut~tmDozqL? +E(cV3pLVR_~x1j{r&(V6HWRSK!H*G0gr}uku(dfeo8H3gA;}L#y4q5#nC^br@b>@LM}hos0Oi+fiyhi +$k01nI3vk4T~gs>;$f2^d<2e>%98O{JGXt#N=5V8{QZPuUyn-f4_M!L3h}F?gb0)xGJtx>LS3`N=j|> +iJ3H|v{Jo1yxFG34$!yZt>tbJO3o;~=D{HEm>0*iS5iypV(1(}o!UtOhYILcEMT7AHc)G65_GYTXzWd +bX1$R_6yj^PfLC+jg<+~0F%3M;cbhI)ufea_FB`9ly5lgV#vkC8XbipDrRO(J5S>f2$zVoyn~2y$%Dh +(ocl)0dPphJpH;241&g7KG4jZBuuPB-=(m^iuRGhFwdEQXvrY@*qr#v*X5t8dUdmkug``t2VcW4@90T +#6AnXo2h*NETo0Hl#s_V*YDfV&9raCSU&i4d!sv4ON=e#wJ1HWr}lRqa;ucxY{;*QxLGt}2P5{ZBagB +GJZ0XG`a4<#FPP6=c6d#12M_5`K9N>oM}e57E0D*QJ}q(B>X`znj}u_Ow@9hZMnQ^_JDrm@~Y!<*m%a +Z}K?gBi;ZrRl>x*`(-)MYDG5$*a6|!PH^<d0mW{XLb5$|a*8qYyK=lq3C1rrbST}<4l}O?&5NjNg_I* +tRVwybjicHit-#F<YdZz8^ESV;$uIHXl>L^L;r$1yW`~`$HbMfmLrH#K?WfLTFT7C#hB<qd^1hAksEt +^+QHI&T<;@~T`QY~I;gJgb#YYzx{~u6G0|XQR000O8^Hj4?eyjeEHUj_v+6DjsBLDyZaA|NaUv_0~WN +&gWV`yP=WMy<OXJRrlF*0y+Z(?O~E^v93R9$ZxI}m;6SB%07k?7u#s#4pi(p@%?qVgpcROJbo-C3~ew +UO;jwEgux<}*!6buUjaGw1lsnPHmE%OC3Y9tL9?4wBwD?NN6)Nxsn=warG8<{PGom20VmqQvA((ot!C +N~J_(?3yyfqQ<dwprx0nyyquYX3LgLLH+^<>c{L|Cbo=FSyozR!b_tae%h_EyB{E?sj>TbW?6X7X;tq +S|9nc=z_qRM)W%aQxu(viPai>Xu{@$!DVl{^M>BS8pE%!lk{Io+TvguKmb?Cp2+>H`A2gL}ZDmRC2ns +!UL(|%Cj6U=aYm{7BVe8;hVVTL9!aqaU9o43yOlY#4OSh+o5uSw3|1lQ$(&VzJL#Wa@+6k&X+tM99d> +Aii$PP;Bfi+unGp$xiW&jUm#@aCnN81o{o3m5>AS68qp}qnA&fPm=iF|nbiLFC~ZlliewF6_DjHQ<FK +|iLs4Zv%Nu1R4U_K1uwT5#?(C#iR|8+eZ|AVj0jSR-07RgQ~FwZVW|`aYO{oh;@Qk00rKJe$Si`QsgG +;WV<C-=0a9TO~n^uB_0$hHwy!db8v!5OH@f9Lyhs`u<=(?xiX9Co_s^8qel~WHF3qG+oT5le8BRrOZc +*gPE61K3QCVvNUiqXD_63`_>;ZUI&3Hr;T`Gj5%Y8jUs`+$hQ7pGgL;ecl`o#HuR2ULE88>JzI(0!S? ++zU9g<z+s4voQJX$=P$cvZg%PBH_hkX<zB0zPscW1MrK1?wo7+z3=3VFgO^0ZaBJ$RUdgJ^5cto0wMq +y1!QMt-C!aDX_YgXtV^9z5XQKh`>)}9k&Q})wc_JF~4k$UYsR;?7-MruC7l3gYZnbAITgn;I>cVVXwf +QRnw`_AqCi%g7rR6E?FlRoFl-^-WjXgQkP_lAu|ri62c@Lpr<vUD5_+zV_+LCdAY*;y`Ij#Y7phmWgp +fLbrP+O#W)PKfJsF%kzOmeBX*LhG$pYF~k0+OZU&>!0xd%U>*c{k+9}^a$>v|6+j9@9R^ahruqjDEW1 +-mVIS4UF{#cdW%8{y{^RiO?VRebbQtL1yD-^1QY-O00;o{RI^YGDbuo<5&!@WHUI!40001RX>c!Jc4c +m4Z*nhVXkl_>WppoSWnyw=cW`oVVr6nJaCyC3?{nL@(f;ng0<}L_o=U2nYuanB=~Z#;M02+6v7Kfzc{ +3h}ge2A!sUt`$>R;bycL5TVXeW2mc|FsfO#+Mkz0WR~gM;oL_2%r|c%m-Gr)QJfGxg@;>hu@&#M*<s1 +9i7B>Z(ZQNv2bEn#V>ZR$b=*NzzoS4_WeP3X3<<LKoJQDmJBw%Dhk!mJatkg>jaY36{Mzk0#Amrcn7z +l^vw9zW%vgZ16vw=1V-i&Wke1GpnM)=+eY$x?uvllyzZ1ZM6aAMX7qHN9x7#@k@~CTs~BzG*vgW)~Xw +0P4Q@AVf-}D$|9Lo5T|F4UNLKzx_D66Njfi*r5dOexKd@Vt~cc(&z!hWP?}5&U2I5Kv%(l<^I5qDV?U +`)Ua3fDsxWb4g*@agmCoWn<puUH^EjDp=uwr$5Qn%fO|i6IW$z{*)P=F&RJ}8qDIm>tHBFNUn=g{cWY +#Ec)ry|kMWd;6V&v8_qRw-W*QC;)lu7WO&L(5xiFz?S@uxY8eFdBLbV>Zfcq`g?1g1ACg*6JlbJ(eZM +$%X%8IxT=_xJ?_A?O;;q^3qy*37E34+>bTK929+Uwyb!qsb@raddMtn%sT*32UKgyoLRQQnFm72?#@~ +LTBX$jDx`C+0E&D>=?ZnUyScQ5%=fgyUE$@tvbKDQ6qIdy15&lez+LjsOt|m*H^b^LwKAqUd5!$E+yA +0o`K{thbH0jI!UdF{t4!_U@(o<LO&XqIWmZmSZPGWYV(_HnC97><;9jpp+Bi)rn0>3t96mUci??H)&- +TuzI`}-H0-OFCs?GjhZH8b#rE@L2GZwgo)>-fCbuOmy&Pfh@r#p_<H5-f$0tgCxW$vFe$?6I?RTb<gT +1|3kuTNIWr|giPa!?5M<H~IhqtD@=7(;f$tpO#TR?A;Y<^q9+xEPRIT~?pY<7qcipol->4ub^&$Hw|& +>`G2n^$^n$OE)bQ?Qj9m*kpSElf&T!_gwEk~-mv-d69;v@mOmOOv`~c8_#Yn=Xlswp+`6LUg>4Arxm+ +u?>7j!wznhRpu*Vgn~o1Q?l6~-(C%V{PE@A20!j2)%+{5kj}lQ*XtyU^R*qEym<MN7F^`>Bx<c_2n@# +EE4~hvIvOnaZ(8y5&s&S|gjs%*!&ivle#0~Ah};?hh^!C2Ll0TWn@Mu$gNguhWRjH@?ur}(J?*lN)VI +wEWvFtUBXi7V*p-!}cruf%@c(=|hdC4uCW2#zDx{6roF$oond6vE;3^e71yp=4LQu>pWRAc7csw}%`n +PjRpEh3_wM=Y;M4FLfu?3e%|CU~_4N{h0CaN0Pm5GuW$8enJ2+^5DmZb}hKm3&754$)-JkNDmK~QLKh +aE5z5i{{$$X7$<)H2y*nWVaC$<`=>Qz$17-Dr`@i(ah|NRq8aC{ILzxKv121qF&Td}+Qq0$Co)gP@7> +EHXuA;y#j8ikPXWc+`GD#%o-GNfd^Z!=<uitV^Raa3ht##U3+RM*>b*E%els%~>P^YszXU|52wEv;oT +W{>5MYKBrYs>m^x~RxzD3W31s`9X0qQ&X;%tH}k5B3<^@YHd18B$GmiqA5RjbodmHhiciW7nQ32Qbbs +rWT0%-IGD<c7%DE>mP~WLESW4+^dP60j(jxJVB(F3VYlM<kZ^m!OZUu>=(|Hb)ES5u-px$bYvCT2?K6 +1xGuPs$t&aA1Ku_YKF$!=k(v?iTVoMts|8M!DYRWOY3C2CV0J%Ftk_8Y;?NMXcbD?zEb<VI{nfq9_n^ +*}I)6WixhBiXHS2JM?A1^z-+!uu7%iV%xG;fwmbUgW8f*Pf~RHHcAob!`)>-*pD4e1`UD9j(CT7Jn8Q +9B<{-a5z+^j1JX4ogK4N?Iei4Lg}J1!Q7o?a{^+bW2pU6^yIvN>|E<ur#4snkIsu|bBDp$Y4=^4e$v- +=-E6-;2c)A2k2&&khm3g{`G_<0&{atBOS=O0PNoT;k#BixNeRNPQoV7s_-JNbKsXkV4CF8D#kKF!0Vp +Fet-yXno%0(I`Ymd8sgr(pL5<%yqqb5f#ga~!Ih9)A3JZx+Mo`ELuyy8Igp!gQxIHhp^;lEjLhur6%_ +C(t@Hs{zBa}xw`=mC+-O_qUYrPy><^eTG>}=;a%~8~rs#<aWa;nwS{1KQtz!NJ0K(H?|QI^=HddN`bX +eAOoYGsgtDahK<IM_xLwfBqu2I^x@e{eJ*bCZai$fX}^R<9RHD;h~0=U31d^?e<<XH^wYwsFlJ3DqW0 +WrFf30r$okYEp!BFXbR%2$-5BxN>lopudok5bYpCseK#C40a(?mKRH%_JauY!P0or7K&obXsfA1I4!h +6+VfyEGvd`#r$P@7B$sk^oF&|8Zet%hf$~7Jhyh1%5XF&q`*5$<FI*5QtE3{z$3h3YASN%is=5ndYNZ +gGj%$K9*qUbm2h_d==m~AknhTLtzoG&+q=yYUhur|8kOG_^5mqZGAV8|Jyc<;xz_10c+4P}cL-n?*J0 +0?lK+;x#mmKyK=1?HIB_mzZlLsYatJ;^i(?X2TX4G<!H32qf<RcXEi$pwvkU!N-X;##MNA>iqCJSv+r +idF90W^F2rq$;-Z0P(`o>BAb@&H0DTCglQAHWQ0#?3wu8=#EtP9yVVzg7vO2y#9{NZfb)AcYfe-xYba +66&tlcd_EUZL<qg5(+j_x_HAwBBfHe?$=QUlS$5zLj-BX@IIa>NSb1iKrPRBj3mWosR0Pxj3QJ8JwtP +WtXCtqfgm?!;YFNITz72T6Q4diC8QEl<Z%^I*COnpRIZ_w+I(B;l2YhOUn(s>O)?lkyQ1mFSF9}3%H8 +D!6+t~mx$-5d37Wcu^#P04gVF8jc-)H3aH(CPAbO0G5u_#D&vh9FuQ)?z8{}(*A2}#tl`0C4V^pjt&Q +c@fhE7rk+h&rajK((ayHW*76>3hp2%LIF?TX7hAhbYaiwvG@r{a69*7*pDgWEd~;Oh>Zmr?Edm}HdZF +6nPiSrFV7ZNd(MP~-^7=LDogHMyH>ZEvF_-DgBqPYS~P+DA2pEhGTB1PS>ycdyebNgZr<&~TePp{6`# +%`WwWh`Q2AG011mgF%L1F_i1n-Bv;fu{oDw)rxGIz|7_=eu0eW|0){3v4?n6*&0?zh9&Z?GL^RL;?k+ +vDY_McRNc{q_*A{w;!}pF2xC$xEheETOekZ70b9c+Tg~TGD;!@w$H)Y7n=^!)hy`-*eIZEfzo~gN4jV +VdcmCD)h_y<~t)Yw?FCFk`%}8pM1~fGms&0v{)3x4E`~w;QQ6CSFkIAiI@R`U0I#5f*)7uP~q-ZL(ZA +ML$#iX%9;AXZ2vK9`x1s3ouxq4giD{UPz-jR|0+fT0cClp1pZ=b^D<HC(b--Y4pCXuueU<@_!(bNn_l +6+X9WaU*|i)b=!ffoE+ETglWQoV!$no(nU<<3N6DhR(2q^TuriPGN@j*fE3l+K`H*sY>4y4ux-G`(Z? +zN1l>Bwu>MUZ^29@KYIAS!g6dh{{!3nup1-KCp@`mDC`mMJfn+P&4`_K;cywsI$TEfkOK}GPa;AtPuk +G;oe?^p4GMl?zNKA(W^Z|IS1`j@F&$!X-$v76T2s3mG_;GC!>q|Uq<KZwL1Q4G(VhN-CTxGr@_+8vrB +mxhfC|HCRjT8Fp-C|aH)SfI}Vm!pUJZy!j=BvpM!;Ww<GkK{P<<KHhBJ*J*SaNAdDqiFxN6Y)(u)~Tq +M>F21G-*-MM@)IfBur2KAk5M<2<N8iIl*q&83KKd#f<CGSYmg^8|@xExRJMXJ;HqnrD;<J-H@<dlSd` +E3!zL;n}N0~Rte&4Q49p6Sc0w`Uh2zeu7d!t%eyw;v$T`?EJUXCLn;qf2@nx-_r4xOz7}-Cfp-1)&$4 +nYzD+7Rvkk9%WnS@7%=D%(&Oi1-xWf?>K4}Q>MOW%iL2u-n*J~FDiVkCMX?Gua<iC+~QSX9=qR64N`- +7W`SqLCCbh<j)7;EAf`<TiEF*dgKedKOAp82t%PP}0}^?{7B-XABe?`g3P|$GI*{5AwlA+qIh25xZ&+ +LMHw~QSVi!=3OD2O|A}G@Vdg9<xKuya40gjw36N*9C`AiK!J$D^0O;fAYZN@`&_^cJf_bk0NO%bQb?m +BC3XhXO?Z0rN;+;g}&t6H{I-=ih((xUZNwtvQTTARP&Lm}mct;CAW9XC;Mrj$GtkpVt4&ANU_=nd;4( +fS)Xzp-}fCs=fS*4o1v{Y#6jEYF@~O<YhK1$Ae2oOqC{)jZE*3Yfupn3!W3J*;^^Mq})N)?sR*MP8cn +Q1$3;1HJQ+pS=iVRvKulEb<j$f?4S=^yy&1_MtyEOXZfu4PB&*^B#SU_QMn(<sRI%m>2G{qoEb)2K_f +8@wrTIwKAF=9xS@yw+jazuQi0|n7M0%oTdbrS>pq?)ddf?RPAxpwc)t^MbCIJgM#7)PB<5T$~PTmp%M +Cgoj?ao4Mb=KY^RBaZhFag42ReG>aed4(M0Oy>W~jTysV~3H4kAd5~4*bMYBbanRDAnig0&k%^BBxcM +QJKAmnQT`T`{zQd5(eSyH-eVH=qN)3<pAw5rOrLFa5;YFVP43W!NhA#}v&C{O%a(Oo|&Zum@;HGs^8N +CUf`i>n54wYOcL1#vYqCU)^O-IV4Yp4tklR?KMpzOjk)4KCFTT#H(x^kDOa>l>R!u^vO!Ur@M_#Z%p4 +K&|c@eb>0<lCwNbWp+tkEDDYmCVDV&DACE08c9gdmlzzm2$mBkW1qYw@n2}@7MSy0dl-=T(NyAM-)-# +-+ESgw<Q=V>n%W)Oq*~CiFf#Pun6|!(fxV&n<4I@&!E2#9Ui>B*cLQ&nwfS<1)ei^7fkPsQqrSQ{%f6 +aaS>FX0=iz>vlKYB=(m)-S?PS(8QglD#7&`kJ8U8wHOZVK{Q8!klzVpv$8TE5?*+M~-SP*C0y`$QMuv +(kacbPC4;5ZYwNk&`78a~UTAHHD?0PLcC(&w1-_5pPh+bFZi{5w!b3c&xL<bfk@MW_p3L6DTeTMjJuc +u`adqC<gP6jY@6Cae`H{tldXu(l8<F4UEtqe=sY^7K<K2jB$nOz9eDnybJO0&<gFHuFFllC?f3@YQgc +#Bs`9y?8%e2GF>PBe_*r>7Itmr~@Fa^uXCr65Y;-eY?;GR6jy9Rhch!>F%0l3>Vlm)V}?7Fil#>yH^; +wdBssnx%z3S$q4$0Zc})SNUk~MFUyLJ`__|q#q$U2KG8`xL-qM`bnQw9`^`+silwi&)a%!+uenfc?og +m!wd#}m;Am^SqG^<NSYwdokPJfK6p=&bjJuMo3fzi*T$SuNvSH8{G+<q3RCIPv^X+?nmuKmwSC_qJBN +-{G*l+yXwjdCl-oNHfp#7@07q!iN`|Ls9z(cWrSC+G%8=`Cx-t9O3@We54R0gLRl=-0Uy=b8ApsySZG +Y8#`cgrWp`Lx8WcCPU}wmJnNe$>sRQ0AcMq5OUxym&<{Fn3=*4^Cc%5%=XYRQpQaJxT2wee54!tCP;X +=m{I{+YQBcOYovgg6$gm<?}Oi)bEk7)qd{?Xi{ss9C1Qik|%O8sGYIP@p`?ER+nAxh(9=biqqbc-oX1 +*k3vO!_~;4sde#0Qs(sEe8nt&)`i*MqYVI2WI+nUM;AAgIsOQ*DR|PJ2W^?os^!2j?Y?R_FWU&-kb|? +QyCJTsl<TTX-Vu(|ZYMQxLR~meKc6WAqH=eu`4*w|$yxi27-wmYiX-vI6AUaT&e){ea{VR8=yHl@z4t +BYbW9Mj928dEI-3NIlqsrcw5hP9RgSy8wY&ES-@no0}o;P<`scNGCa8#cdzrO0KGQ6Q<YT0?f-(Rc2? +>k|4dK&uJ*w@G%C6=h#eCyfFpo2LsAsD`(YBbDmMZ>+WLDFyz?`W>Xf;npVGw7Nt?QA^?l~f=6kH!e? +aq{ohe@*)Df%?Cf_Vb#*<yg*g9#ixg3cIh%f^m}b^1fQ?&6I8r53$G6KNe_X*H~|c-F`!J^xw;3ukmk +n+<X&$#Q(lSrv3C`nSAs{ANJ)(lnQi}(x0uC-F?LNy(V}f$M_rN?fl}%9ZD;C_|$gBl)Jg<#_%`9bY= +d?{~U(@F@^suVAge|$~^@wZ)v^T?Vm%kQp^4?v`??g|DUDNY2Gdj``nTyzyB9dO9KQH000080P|F{P{ +JBHVHGd{0I_5M03HAU0B~t=FJE?LZe(wAFJow7a%5$6FKTIXW^!e5E^v93oL`R}$C2gV`%@$!EMUPcO ++`fhU1JxZWXeOYENMv!1MiE_B3o8tTHT!ProEg`Kk++RTrXe^u&aku-^-g>RhcIvPMnCWPd@qe|H>E7 +|M23Q^7V@^pMUe}dHLe&Z@>H><v;oDCl{ZT*FRsEZy#>{a&vceTfV%1dtGiG%b)K5{pR-eDnI}7%lo^ +VH&;*h59Q76&Gp?=d6U2S{NiKR7k4*LH`(*|*MGgfy?=N8Q0{*!Prou|{{EZmr^h!}@2>x^VQ=p59`o +bFyZZ-y$brju_YeE~HxJiWPuFkDj~_JRKVItUfwA6w$V>hFRDSd2r^VKqImEC2{PXhc_O`s_w~yuJ_2 +c!!U$5WpC;9UJ?&;y?$M^Y|zj^%hzvefk{ORi9U(0tlw|{xK`K5eT@(!QM(|!5w!_&|AcjxoxRNdbE_ +;B^`fm!?M;rhBf-v9LUx4g06l@Ist%bTma@^Jn3=5Y_76Y*58?%w{>{X_Qu<^Ju>PapW|{oUJq9Paw* +`r((yk8}8kZ@w>IUq9xZmOotIT|ea0eE0sx+nYDp`RkiE*LRQC<?6A#<GaV7|2|V+aU-wJ8!2Di=kS` +{-<9i|{CBSX*XxJJ{HFNl_VH@xh?gbT`Zrfk+<&g-J34-vH~pd9=4w2A?D_exPQl-w^liDh)3871+~* +%TU_R*I5?1BM>+=5b`lt7|mpMZIw*1SB*Z=(O_pi&dZ~k2V<=M-Z&%Sy6=ilXTbEflObN%*6H^00~2) +-@(R1a5oPapEebAUfRfBEG<XOCxJy!iUX>pye%U%hz!>2U%2(gMEYHe!&tATM@#XhlKYLle`~Ky3- +@bbOc`2{1uRl&Pllg0t{C}qSryTN^`<%(Q*H2eBw~zbL|D4PFm^XO)w)}kc*Xvy7H`h0bsB)EC<lTq= +uQj~Azx#`xH@p0OLVs6oekynOPnYFy4>yUOMBhKGZjSQz^}S5czxn*KG|L}d-TmurF2Sqp{?*M-IrLY +z_xBH%<%|2rCw}^;XW92~v*R<1!%F%7RetlI{a2oU^ZWltqw>i`4*cqh#mcAp>EZsDa`ht%>BpZE-~a +om`~r}2Z$2hQ-rT-V`*54jmloiCPI7LKoWNh+y$5Vh*KdBlyT85v%LmQ*AFtkB-CeUJ57+<p{`&4s;{ +EE!+r;eEyN!*UqaW|{VPAdr#}}_O*7NVb{Oph4ZFBWOCgU-;^2X==L+-oJxnJ{H%4eVb_i}tb#<6OC< +*k4GYPMlVe$~uBezm+uqvPTA<5wdml8#56AHP~POt=2x?KQ^e<Njdpy=2kKfBQIC`KR(5`|SMiX?}11 +dBd8$%*V({{Kvj``6F&AJNoMFx7~j`<F~VamS29Vfo<)pzy9zp&F!yU|1zKRzW~-3zkhjgk(2hr>py? +@;>%}W|M2@4uU@}=@x}MAUwr$`4=<nP|8mIq{9wAi{Q2sExlSzp+qVxgUaUj8+#@{u;_K%>yn6A!o@b +95eeQvCo4)+v^|wEK_44`u{NdY|zkmKR|M@o;rPSjx4X)Aj%VN{BX*4tc!B@L<^O1kec3EQDW$;~%qh +7|*=Vk3jzYOc`GMZ%%the=x{9u<km|yzHp82bBX}03h-TP%b#=&<pFEi}Y*Xoz%H7}Ew<-5gC@}6ePf +9T!zxZxM(-TAk?!EP&mn)epD%v{~`-r~rsu61eS;PxYb=RR}rRcR&<Qfcx|j(Uz;=S6<-OFQyP*<`2u +j%LwRntb{iL6ZX=IccWu+<6&u@C^Bc-ZVFDkK5~o+o3tiJL-91>p5=Te$Z5!Mxz-SH1jf7On<HHmJ`~ +JT!&aZ=E?`rxbwKkueB7Nr{^KpkyD#9ZIuZ%jgf2VExY^l{D(O5nT<Oik+)Oxk-V=QCB}Kbt6!MD@qC +tij7~GSk9^Xapva%*dVmqn?Z&N6P_XzN&oz0j$#YGfYj%xm=G?FDNWWrr7mt?L%7z79^j!2@^jyryqQ +{~~E@*=5pfMWX<NCbF55YH;rqOhoK{ILS$uyeLGci&%t{L5oZbmnwn~gngtvRmI-RSOgce*E>v!SQc) +9DGEL18xZaC!tif*wH+aKpGg*Uf^SLC>IP&@<>6^sMx(^sMx(T&vQf(xcL&(gPS7@MPT4bKFMHM$cTR +Tr#>hx;MHvx;MHvx;MHvF4*bT>Bh#gPLE#qxGUF<ot+ImJ3Tu+J3R+I2R#Qp!L)&C8$w~OQDeV#cJ$0 +S%z4~6^J8A*6oJ9KOPhH!2F`L=4aBwB4K}zIwg6j{4cAKS8FORcG1nsZ6xY|dUM~{(jh!v1V+ImfIlT +$kl{Z*cE}7SZE!^3z+QK;nxeRRK;LaD{<-+HZZ#-m&9Jezr=A|aY@>eVOKwhB=p$75|<QvG(U(@gmiT +Lzo#_v|z$s95tX3uYakKI}9BW<CD6$=cWM&tJ#<C-%V*sff*?9OO`EozpVD8Oj0UBd!x`{2Vb^7k?zI +oe>1j(r$;TlpP#$<8xP_tHQ$=L<7i63)S7q&aX*4i?b2UH3UJ0{f8WFs%X`vXn++vfR1bOU_^pf$fyj +$aTmc%cV5FtNevMWnAWqanqMvV1@H*4Q~1iBb@jxu{3UAw7Ho=6I>9OcJ8e>-E#k=hma%NI14{6uo4W +(*G+$MM}^VkeS%vpa)BB$|7wmO1Q~26!@L!+mrrz#8)+w-ZZ(&^u*Vbc4QG@+Bk)_AH{+Sry=$s8mzo +T&l`~?P`4YDA8_h2Y7AybM405Z^7^X?)AG8~m#x?vgyMbBFTcI1<1lwt{aVH+&0Qn(%IyTg?p`JE0o1 +m#QjfR=lB+CU3#?1|uyM!6xE-_MtD`?!A>*ly=S)#&n;^zyduZ+%JRt?EavzDFt%74iTVsNZ^J|K6l8 +JQbr^<drbYQYj?degcwM$TozM+=1~2W%L|#JU_cGm<kM2iPlvN$XrNwx7?(fbX#OECoy=*PkEIy#X;c +LU!V&b6?~W<zF%bw(-b3XqLF?);Au~0p~o3E@6qn^i%?oo}TZx{i3O2*WfC0T;_{?frHB1(Z6EP>NyX +|OY%zGQ4_#5nw~z{02HcVZ5#`mwyURo+Ph(b+WZ)7`lDhGMqO<s~8_!`gXct*!xI8Kq<$_6}`%!U +4<J08*Th>k~eJfh<f-M4?M@Dj%}I-XHP&+&{fux#iFLLJWtHOqzz;t^TPY&sTDAL$n7{U$HT4|K;pVz +jfNJMPibJvxLX(QMo=tR<f-<V`%`5m3qei@`D0BATBtseX~aAJ9e-NNyn=YXz5;WvonXOeh?iw3>DeR +v+3?S*;wB8^im0+c<0R5^wwz2kbath+zX1+3;vMVAsmvfLZ${X6u-K@ASa&I*!--dB5-yjB7UZ!~we= +4F~KvV8;Ptr?R0ZZq#w3j^O~K+0bLsWA1fp@DgZogFt3OPn?%S*RZ+`dYKJ9HLExcD0L$kXwcBc5;WK +RuFXptyd*F=fyoIb4-(o49vUpU!7&@YzllKN0vn6hnEl3_XG0G_5w`bRgO>!1Ex=`f%K(=FE^z_b&=a +N>;4#2sfX4uj0UiT926&9qK4d(S<ATcomjNyVTn0=nfMmeb0w@Mh44@c5F@R#g)B>g!Fts>w){~dy2Y +Oa|f|Y=&1sDl15@002NPv+5BLPMNj9}EVp$8a=zSpfMFKL*_Z0HGA0+JSBB)~|3kpLqBMgoik7=iOQ* +nGp;XG4#%*R40!4XhCF6<w}ZMRK{zX8tt)Qj;8rbqF@Ivlu~mlnw?{miLtA6cQ2Jo^^Q1Vymst*WAn$ +S>;v}jkRk9fnor~0Ez(=11JVi#HeM%BdzT>GYZN31(E?I14zOevY{uC3^r*6iWMkUpjd$-TritP(`g3 +HwmTzvNq(RwkgPxw#+nU1fn>#I;2yJ~Cs3?BP31u<P^>_)0>$c^?~LRn`GKB5vI5BpBrA}tK$3{I5!f +{mJ!Ul<dH}@=6f01yK(U_wVk9rg5A+0*6-ZVfNvM|%JqaEvP^>_)0>ugxVbj^r11MIYSljmVBY8=Fpe +K;5K(YeK3M4C#teC9|6f01yK(PYF3KT0)tU!_AwAGWZ4|quhk`+iop|YVTkgPzmVzw$!teCBe*{X2u3 +PvgzsbHjnkvh+Ho2(mHsbB>{pA9|1NChJmj8rgE!AJ!oQ2N%uNCP7cj5ILPPQE^qm*j`WH=SnCOd5KE +5mb+c644;?O}<QirGb$KMj9AtV5FVAdL}Q)5A*~p4XiZGRs$o@(QN1mMj9AtV5EVO21cMR+0X-wwAkx +5lb7TNdV-Y(RvKojfsqDA8W?F{q=AtJMj%+(&;yJ#Fw($CYkS>h@{;^OPq5O!O2ce5Fw($C10xNL5Up +gxwZKRNBM_%-=mADr-|IHvB@L`Ju+qRv!)!G$(!fXqBMpo+Fw($C10%>B+0X-wG%(W6_+r9K8dzyyg& +-;$dV-M#Mqu;V&=ZU_Fw($C10xNLh&ssG_v2hQcu5B<9jtV)(y=EUjG&7(=x{^lYDhp$f(~j*Q+!T%) +)bG4WkFpSccGWSOB(c}$vVm~b}-VxNCzVwj1c){!?nOj2O}MfbTHDvNRPd43trN}N(U<)taR*22O}Mf +bTHDvNCzWW{cPv~MmiYjV5EZ)v@DGaFX>>VgOv_eI`*W4kq$<nx!KSYjC3&4!AJ)q2z=Sl1B~=je^~I +64pur?>0qT}PdXUsV5EbQ4n{f{>0qRTkq$;W80lc7gOPs57Ykm}!Ab`!1SJh|E*pA+5ovI!TaD1X5j{ +5|-zHMo!AJ)q9gOrd9$N5{4pur?>0kvJG8?0DnxLsPji%EKnn^<sFfzc%*l}S-47qOTZQ0NhtPJeQ03 +!p83@|dl$N(b)j0`X`z{mh21B?tXGPaJ0c%I{el>t@;SQ*%p0Y(NG8DM09kpV^q7(qSE%}5V0GQh|HB +cs+mF1%!bl>t@;SQ*$8^pf1c^aLXVj0`X`z{mh21B?tXGQh|HBcmUCTzJU<D+8<yurjbGgqjVRBO7{x +kpV^q7#Uz>fRO=41{fJ&WQ@MYO<s~8=m}N^SQ*%p0Y(NG8DM095!CF4kkVj74I<PaLTQEQ0Y=6;*9~5 +R0F@0r!OFm%3@|dl$N(b~j7%^x!N>$7XhhjGnocul_PQCoWP+6mRwh`P*pmrHCK#DuWP*_iMkW}UU<4 +s98+w3|2}b7TB^lu7x*-*3Lr<_Wu_ve*X;JA3MkW}UU}S=k2}ULunP6mskqJiT<|StEk_lEOSeamDVo +xR*A;!*zo?v8xkqJg77@1&Xf{_VECK#EUmzcpzCRjm2%!Z!WlL<y97@1&Xf)Vt)Y`7K}nP6mskqJg77 +@3=wn88aXSV5&|D2mz86O6!rv!N##nP6mskqJg77@1&Xf{_VE<~-L8UNXVT1S=D)Ozg=7BNL2FFfzf& +1S1oSkj_Xab<h}%(*(_4H;0!ju(H6)0xJu9vcSj!BMXcyFtWhN0wW8IEHJXb$O0qip6Lenx;eaLft3Y +T7Fb!>6I9e}=m|#1OEi?i2Gega{075sV)zS;pscpFd5Jl^WPz0hRu))U*pmfD2pO`WCm2~^WPy<dMiv +-ZU}S-j1xD89CFbyw1y&YVSzu*hPZk(iU}S+21mA4v2}TweSzu&=kp)H;7+IT_n8QmJSXp3Yft7_lK~ +m0!o?v8wkp)H;7+GLsfsqA978qGzWX*Hk;3W&JEU>b`%EF#3FtWhN0wW8IEHJXb$O0qeof;{phU(i8z +>=1n>z2GEKN#OQP0&=DM$>5q&7`4cVx$wbWkV06htb36v3ZGQIG*DgJ&m45Pp7BT)9LB-bb2~HoohKg +oE}b(phwVS^AgK&JjV@s20eqGLC>IP&@<>+=~?MnxmKk|rAMVlrAMX5<|UTlc#d1?+34Bm+34Bm+34B +m+34Bm*|=7tN2f=pN2f=p$L1wz&W;?n)3ejF)3ejF({s>s&~wmp&~tFDL61R?L61R?L66N#EW_~}chY +mxbJBCtbJBCtbJBCtbJBBhtwoPTk429~k42AluG?bW7Cjd|!3r{DN9XEjS{*s7BWHE8XdR8SlSS)f(K +?!RN2Kgz(Yl?yB;(|ZP9m+7NOP9LnYRj0Eju5IL`#TgrrZPSH|8Y}96G7DPU@{7J(!*TE#u^iitOW%M +Tdg~R-}_X2^?R6wg&29AvQ2@7O=7)NOrblAUrvGRJEOVvW$~23U0(PK2FS9kPV!;!3p3CF%t3aC7UxZ +ow#wr&!W7kG9-$&p=(B{qH&X#6nLr=Od6!e(8`QRF0?C2sTl!6!PA)(Cn7UrmI@(kA(Awn!BG)3Zt@b +t<Txs7!SNW<Ye8T$_EEtq6}Yy;s8E{nE_2*KadTzJ3#oauH)oq@+~g$&k1||lkl!>ccR*=_NVUMj4Kh +`5zy%i{aNUCPSojBrBREo+o%wES<Z*CbMl!NMzKocrlfWv(%+_=tBnUAyP8eL^VoogVSW!n<a~wlO^w +YS>O9BJp>;XezHXMYbRCe-T!B(s2gN{UOXrYEZ4W;ymOABeqLL^r(xf(ZArvMak3?~9Nw4A_B6#~Y>e +HaeSu$YGRFkG7vDs<aOCU+;PeCyzOInQ~(IXC6}7#Bs+k^LQr8M#*@dUlLpz~c%rhhqj^j$K}@E0?<U +-^AOz2n3+ckd6*+>~VvRI=D3AdBaB+9FIW=9re9HWu4%~pe}_Fz}AVg<Xq(S^aR{=<=>k2aU)v^*d{s +JMsAQQ0(1()Jr@?VETuijucCT5#F243c^pD+S9TT6&TvMCqclR(PDb6)jqFhNh)YAuD-o?L2^V^r4sK +4nlbE`2GQ^HGHRQrV6yhX|4Ry=NMw@2Um2f+hgVF9)o{qiBP9o^^y7OdtN91wHeUc}$s#*tB%tP6xyb +o{68STq-Y9g3q>;u7Uf&G^zMbni|-u5A%3f&X<8~7#lg=peR2@^0HZq$%BttkP^;t}K+L7Yi<C4W+oA +KlJ<k#Ta`2h1EwXf*9IZ7UfS$Go_9lz~D}+sG~pE!$jSJ@_#?cwyIQ+~g&NTX1Ru3LFb92@qj&SVrbD +4rSCCh*U&qGZUXXcF!@<=CW+D_gkmF1ckNeR*BsU)Xb3soLMbObs&&98O#t@px~mAmvJQ)pk_wg<Z;F +U87E`cSu)Z!sG|m7H}Wl3cL5B*g0+w>?Et`tH<?2U0<@V0yNSZR*DW{6g)5V*Y(JF<rEhRzAGmXp2=4 +NJ>52<^h9I9sjx8t6n59F`5P`gI{AQed;pmw#VYW9pV73)Wt%7!HkO(&k?`)VMurCr)A-4p?a{oAjKq +1+oag&!gKs4B_5e647;}jtn?#@|fCu9mlEQd7&T+ETGYu_?Hh8EjB>p2g}OC0&DA|9E12}vzuu?=y<5 +xIlMb>fhaQDfa4R#u@CM!0Txn2P$Oag&!=m#xEWAypXab0HonL}*SP(n$L{0YX86G%~(M%xtRcB7`-# +eu<N(PU=e_Rj!J(kf%FvS^4x8TI0x0L3YE))EM%-QJGUW-@$+(k{ana)6QdD>Px7+@ur(mO&IopSlBT +GQROf8<^WjaehI?^#!-gKF;o$<v%q`ZCiNvv1q2IopZm>`pl!1)%r}m@khn2Yt4`w6(ZMT8mqJR!@Ek +!tAdX$9klvkjV^(o3g<N7$Jq)hGn>G_x48fxyJrpGEGG&m+{2(|xbtp#GuOLckTzCngv>_}RbwSp}ig +vxmWPY*rO&b?_SLM!Ca3O1#JVX9!qi}40k#Ta`btW4TqK52=O7=(u<DR*8B9yhKhQhUOD3ylfYH}oKt +Onclw(I+HJt}pB*asp|G$kh=Ye*%&xyqr9%Yq(Ifn4?od2ott<dg}X9QnGSq-osbB}RbhWdEXXuBlmF +>;`R#{0F#=_081SKSN|AuQjzfRU{SKQ|GwUm#BsTJ<32*L6S3!Wg(|v+SXW#A`+omO$5deVL^H}0ySe +Xx}Eq<MsZ=-_0U|d&C<Ceiek{b3t1r}bz<nxW`Yd6oJ<vg54I572~$M+*0{+_41XNx;6`CsB^B%BLkn +)SknIY9Qc<15_K^ImcxqQSN)ah&IqR5mVk-NXY&-jytWaPJ3hAOwk)5G%6f}BAnX)MZ%7Z|p?NI%W%0 +CZPOlW>{CDXq#M@|4z&_o^e&UT=p@2b`f28L%uh%-_xmF%(;@0O6AW<}<%Q%HV796*();vuTkDz@1V` +6iJsH3ycB#}xpp`0RjuDmECx9<*Z}dtB;XN$LcQA{14GiqIet6!uV(#2w)jMOHyF=?^EqDM&^I@8?}% +-_CbaDShGEv+@n9c2d!t9I#j?TC<Uw5B#R7vJ0>qDbVoEX}IYsqZ)f$>RyRO1EcK-1I9ItoRJfGI!cd +K)$UfD1_gbj>z%w_S49;BwjjxQ^mBfbm-zX642>YhGZR7@F>^uZH)N;a3JxI)w9q0dOF5+@Q55`@`*F +^1@{*VeREQ`M!%e{s1jDJ<Fws%PR7j0Z!o=Ws#ttnq?#O?R0Ow$jajAO^Bp5@CHkHGYgErIz6IY=0!O +@GWi7Q|U>$WHWK-L*a1K(tA>$HRs$#=jRv3`&^H@1W;%0#{>M8HP=!l_(y%1sPyq-b1XRl}4PY7ENU{ +=%ty4R&u)L?<7~HJv&`3zb@G_kz_X^Ib7zEFKBUvee+WhpMOMIc~>J4wZVckEcA%!8Ecp4ZgmE3@j|@ +>N_%mLa}EHB?nZb7=6vRzi{ea3tF!!OhPZQv7?&`Ny5C)PzGSa6j?W?!lNL$Qjh=#!#CnhR29a!$xA# +`Ud7`ozM%TUT@jC_k>D)060krm-Um40-Hob3Cly>o6voz-U3IUdoE&H5RPA_^XaX;o3f&GdyN(eg7$7 +{M3a55mA5uWsf~i<dRGM*<mr!g2oS0Bep2#)j<P=gA+fM^0J`@a4HkN1!(+0z0Qv5~gkvZS^rS3I0|5 +O}_73m6DsC(kCBL7ym)y0R%_-Num0ZOz%Q;K{kl}8#kc}Yb?GCZkKDdix!pe8tO-!bmqw-|$s!9FS8B +#%^@&J4itN#i=sMdKzfaak-<2S$m4%WuJBP{A;>GFv*&z}!ennp$Kk{SeGB(N22Jee+2c0Di`jRrw3< +9D}FIz_qD^K#UZI;4nAKGMG4`NfQGl6vOI|)9z6B>NrtTxiNwu#TM*Yb`)EJl(Z3DIRvY+VVwHz&RT} +b+@^FZOas|OjSDXk352!<$sc1Hy(<h>vF^g8GZ_%4XbSXINT-4~$svcht2ofc8FjA(IQf$NB}p!%n(1 +VN&R-}Dmc@dI5Jph3P>|&-7QQGL5j@-JH+S7DPfs#3P;guZ!9_Z-Y=@#;HYxgg846h-5tx2I6o4V`Ql +DzR&x_zUsMEy~5naKdom^&68B?fOC|v{{771DGQu*XksCqLd)S)_MZmz%gF?FxbzHk}R*p;|QOl((7s +txUXZbmBDP<T&mCwwQiazk__9|D{im%3M%Q$z$XvP~h+hz4g08K?^~GCD?OO6d|SmV5}yjXXxdkR8I~ +=24XIUN{wehJQ2YQbo3{Y%s4Xs%1!gZ{S)x!i#HLOOquLT>+p|MOL8x8aH`KDEuRo4wn;Wf07n75;sW +1JdM;J{Y0{i3Z#kima6yV!6jau_nW-Ls6{HUvN-glOQf>WG}s;${S?gWWC2;fAghUSVfLXZiv6nOvAy +4@dv(f?3O_ZduaiRep?$A7YiRZn0c1V!bnt3N2XZFf5o?W%Z_zC>uJjT`6-&-YE(<D&Kc+~^bWBNw!3 +5exK`-*A9oj#PCL~kGR7kaJ+=YLGYKY&P>WXCq$&f%V-4)x?grpkDEh0D)gCzP<{y(=0w(qxXy#$JQh +{{#QAe_?HM8raPw=I@R^?;6UjZ@Hd!2>ddXFhfu;MBdEtA3pcrOw7pELkU%2*A*3U8Ud{A4*49GPL|E +y<{<(E+a~``3`ljPOW;OPS;dsKvteg4xW!Gn^Mh0!xRup>SKZob=DQ*Ytq=Y>m0We2WU%F$Snr1>R^~ +jDi(9cX+ZfXS~FE^*M06x<BGt-!Q{<8-f!{}gHZ(2Q>ivJ6fYzFQl@N%f>f+NB*~h(Z{3J3$rB<p6e< +=<-FZ`|?$xIJn@peTymjErv3eB3W9CCAyEtZHONZ5hlOQsAuww<&OG?kq^E!2}B^0c~`=~@9xsLPXr? +>^e9-FELU5bwz#0{XxYy&a5XUb*WPCQWeYE%mv>a$hFr@BkXj3NROj|In5mc$rW;414Z`5Nb~b80f6T +SvqdUQiT+A_61lwj{4s9fjE;H*qY~0lVYM2Vj+)ooAs<FOqg>uk87y?$wy68awDi|0UL!07QvcpqH37 +uI?AoW!j<avO*MO*sOw=3We2-o4lk@sN!=cU33yc#D!>uN2~k51-4)bVyMH1#5useWX-iD1mcY|>Rx> +bVj-162m0X9Q&|@1CAURIsngg{9!Yk3X~_m`L}w`>X(z9y?zOn&*gdN}i|CSxF>*)PhpD42MAl6@Ee2 +l)C`g1j<?MyH+x)bX)V(?)Kp>t6sr;g-Sf`?vV%E@v5<xVb&!U(=#5?ixOQ*NAs_fd6S5x;II&~(i&~ +zw=RdC5IIvJ@2CC6o3Ux$+9)CRl8hBz*<4A#!52+_F7OS~yyQXq)Yo{F(0Y9i~I005(^O2l;JO~F|~( +IJHcv~Yz}@ADyEf(|1QLXMIkxlk!uaIuDkFNm66_tFxaR<RM>0e(m_?ARyl&UH&((m5Vjpq^#t4<MZA +3PCAiP>N_uFHxKm@;(Kpv6RRoRA5$(=*R2M7dmyXCWQfu97AbL>2fmP2Xcf&6GbK%P^CDkcppdKNPgL +rL28IRr>;TWt4r>nBCaaHL?kqool}Ql)U7xgiXGaGl6fVuZ3hfcL~jwL;>5$$Ibr#Wrc@n|hN5TMU>j +^ajZ`RZhByn|4Mz!k+TI6<3zYj@hg0`js!lF5GohWzDLti}rWBm6?T3?L3D`QO$jD`S>7j$s+E`>RHE +!qp+m1!yC9r>~hldtQ(RP=Klx&KP!&{$QLf%q}ffR0{=QDnz?lrnXoK3z60nk#W4r8m{zDn?gDPfTIL +Mh4=*XC9!t~0bZJ5Jq*y4O(MKZev?QRb4|A`XPz(HT1CoD^A=TR;Id?S`q61BCRg`J8bqb+05Nu~S+Z +e!68Rj%$H9Q9fbhP|Tr2VnjMaDMdMN=r}~I_&$&B)V-RrNXlh$e#bDbu8;+)jAn)7L5^ieSy-~sWhxX +Sh*S1vla03RFLkdbmI19WS5E5CEx;t0TIoi3RpYpn6A|#3NKrf&aSNArl`5Zgj!xaH4XIY9L@=oiQ8@ +*I5J;sqDS<X*5vOjusvOsKJIYr!MUCRld)=seEy~KsL}~5uQKo$N-X>ahoE)XRMG-J2#Lh%NJQ?*81* +^23A9Ctm3w32Cf6QM_g;|%Fxbs;u^N3O$9yFM+cLl^de~tacBk4S3-EnMC_v&58*-fF4cnm*43YtoUP +=17h?^LsKVvdcV0Fy9=Op4T>v5zGldtCGq@}{N(%AvEU;D_okCt9(-$Av%+2-c3a@zy|$)3c$J0m%lJ +RbpK95@JTv67QqDnun%x1WdKEAxZ|a5g`5n4GTz`P01me>84ofykGJ-6zY|>a}atUrdDMvhZ0g!BJdK +ZKV1p=seBsbQ*jm#tY;l|jteg#g%apC$hJ62Rz~T4PWN<G*J!$Rj4@QfqO2yEmhcYQ(9xkb&vDU9ma? +$SrSB3O;0!UOj=yLRqKj4A=|*ZIl#s`=E+xOTqcKg2Z9gHPQyhSQQwAPtq>Q@sNjONMs>M}LML`Rddu +VlfcZ2Fc*uv~QW$Gyq(YTxwb}>u>Hq4goL#LRAP@(|a6?z&uYMD}Q6}_bB7`gIJII_?oWX2_rgV8q1V +GV~yjD+7pYiM#69VD@ZyUZIY4lys4DY2>)P8s?`)s|#j^pdgPNP&xQ%Jw6-Xn8Q?vh^}Ka!@;?ZW0G+ +y4VH$MH=?5M<gqAQ6+TBDJuV_45}PeRn{1N(51+PC@L8piEW1}U3i9}3^n2BI`0>~goJG&E$AG-tg2a +p!-vcp#TbS?3BB$Dj~{Ra)8HXdOwsdH*}|S*>RwG8nl~GC8b?ELlOhgk&a4pWPFG;1O{8%#e)vJ^Zo` +#%spq)L<8*0(XcJN(LrS-*cF;Yi=sxa_XCPbZ%GpR?ni9?TJm70~T*xW8#Dnal;`GhKWpKrWm8+KAqG +XN^isSh78jr3Wg74P~PHB33eyMx)u5E?%AW>d5n?ox@EUr!x0$q5Nu8eYh$bCRI>MkI2NW^)+@Dk1l7 +I7g;`<$Gv@yy0S12b_29jUHj`Y`OF_bzA!p{QL2Dq88-<0dcZ%HQGzgIc=6%DCVxqm9}coJn)ssB2rp +#mptaRLwa~mYMd=t9cs=aksPyX-bPuT5;K0F;R^0RyI}KMnU1Ok&*Le;`et1K06K|xX-wID#tHUsoew +AUGAI%#8R9j-Zv#4RfGn6k_!T7Ook~GQ^gJAQeVQ!4G*RF8_|_Ax$sop(cuvPD&I?8M-7R<m<E)7Ujm +@&owVO~J#A3;8e}V7x}$g^Az5IKJL86s)Wi^oEtS7OM>K`}Bpb?7eF-MSb{r7Yy%rq1t7p?ubS0tzqD +%u<@U8;Ls>vWE#KM!VDs|_8NFnj|nzrAI!b@eiUn$M<ebQ*e)G*b|13G`TEf1mMc2#@H3)4gHR`p~}* +5I56^b!){Md>rbzf#r7lztHfS5FcEF0v|T$oj(jWDD2MS?MJvo0m}cTG($!y|7U;RB>K@Y$;wD6*jIi +Km-|~pjWvl(JG=>Qk#Ze9lm)~Q1@!|G#FSY;!zc=UTUB^IOc(Kp82F~E8@o@Jq&UkZ5tm_{*naS+~ZR +Bsx<Ks39b@=_zU}>$ge5Ejjj>W?XeV7$LaL~CL(1?1QPwm$xEnvjky^G09WL>Bv3<oSR+CwYYL}a!Xf +en{`JuMDj$GpptRe^xsR!PEy}-f?$(w_k0N%k3f@DnAfl9^P<3WiNAi`I!C&c4IF(?gw8LrFse5%L4= +GG=70W71$LYJGDq+nV??Nz@7IIP`l#4nPy<!z4G$_wocbpZfd)+GPz(}a7x@(i_?H<zmMD$do#I~l<p +4F>BmI}Q>^0n@F&jWR@HKbS$l~FICi`A9xN&XmR-VvOgEJR18t~^|Y=6A$b$F7Gw;@t0J0wx!3dK=Zy +ibGr&w~HhRQyag46O&GAHI_=g5VrL0C$u`(Td4Z!->7@F?brvgB?=C5L{PJDW0NnKu-<fmzfhqzGDlY +tk+N>mBq&XdW5<O--K&u+C@NK^Zn~(XxQld5v;!sPs+@+rglZy`@y%J9lBc@%DgnyLQ>lA3w6Zc}*D+ +u!QDBqC&~CuOR+axuftY}t%6rwMNyT-Q=n8fx9#r=#;ak*RGNg1Hs@X!X?2ziq$tQ1mF;CZg@kqP;Nx +{FARg$vjexvTyI2Phl0j9Dy$`W=NTx|U=uvg_J9A4!GdQVPMa!(~!YyekE{2Z4&&eBF7nj@ei0VtIGX +Wf7f;!$7~LcuATRxHWf9LLa$+&B?v?cB%Iz1mU*pUjI0uL2vnI}9$~x+13q^s=DI8h+6CI!OJI?N;^o +an5h@l9-$NYPHz2a&7W2lXnxjL<=n8P(?jzGGHHi<5ZQM)+?!`32&UK?$ssXiR1A`74YsVAEtDsswP6 +^eo{SjI)kvbh9ov^b?F2u5Ip@cb+4sqA48l(&?y%1wkx9L*d=(#G_hAgqoMb?Buq@da-*8QGrmyW>yn +Iv*+M;Z1yK|eku3lU%DYRTrX-U?7{W9;=nBqFWxGn~uAP4i)xB1|1F*>!fD8%hQ&9!G0S=^MPTMJb9Y +`QZR>E540=kUSmvj3!>Rt^cHkRs91R_;-0d;tFAZ1o=wG7q1xN7i;eY(I#fFKQrA=|Du3hG|VRB;(44 +SJs!L9(OKJNk~J!<41SNM*3%f=y<KkCL>dOmS|;c0Ei`_iCi8V;d#~@W_=aRDqyZ)qzx*Qq7=5o}DVx +8-BD+<UGlP?z~=5_gbdbR8l6D8+v0IxzyN-DZrkhAELP`<KyTM5~hL2Xxb|j+QzOo3e~+z8&L&`Se(w +t=p{Im&=<Y#NO2^m$l_3ep5|-s1{_J#?8{&6`<<#UQFwhwDU|e}12A|FW&{uBinhgP3EiA3oS3_ahwU +eG45K^Gsm0WJ99c2^z}W9u((S`{R1wl;EXfuSn)7}dKZ~?b##}^Rr5B*(+;7yq7L|RUB|*rho3Cr*ie +u_%07AypTb0m~w5>xojk%&M<dD8o&v_WCpOpFn0H*wlZXfEPndWJbH%(>o$Hom*U@Fn1Fh*qyT8F)lr +}UDkQd$u`ZgnZGEwB-LVIN?uF4c|z-goW5l2y=_Bv2C*-*pv1-K!s}qUGO|ciO2?<#eYCVlh5Viy|Mb +GX`S906_VcrMN|JfZY3diI<4ltA<TA@Os+|u@Aw3A6mCAwyDrY>LtVt_kp+(s=(FzuG-E!aYO<ghDcn +YKZ(Dpl0lWzxN?0&Z8`*@JbLI=aY~aQ#!!o(7d5FcLt-1_ikEEnge1qWR5m-d2(02V)E}Aet|fz50NA +GV1iP0?9ve~{PJ2e(E72^ErurR`V3k>@FjvvGjz~!NR23oyY0IDl$yAxL{h})syw3ZDm!S6<%6!NVDS +DK)r;tTQ5yb*Re#oTXsiIX3ltc^_SnRGYLFp4p4>?DL5mddAYB0NkdZnmPC6&ITvY;SJ8RW!t)=gx2D +G}q!rAn!cJubY2F<co>)kZ)BVymdkO;?qiG9Ne|l|x`Df(W&C%{fehc(b&1j+?y1b%;D<%~k0kpRQ7S +`8=UOOdsWh15WM|mjydj<S8;^fV0k~s_qr6hTbi>Ro_FNgI9zRl97+KU1}sYuY{DgNmUv_$F)?C4m>v +Bsnori=AIJLp!Too$d?K)NZh-Qv?+tC@>*ABR^uX)nv%W5$5bOlY@MJ|_iB{n7%^2>b(pf(h{i={Z(Q +1!wERQJhqX*mU&$P*#S+9sv)3MXp({&GaAjpwpQ<Wa9a$8Q!qzWUo#{bzgRH86t++|m;_RO@Pey59+F +unWNIKI25s9$7su}mFM4o(zj`Ve<QSs?RBCu)!pf0G$ZP&#!mz;0WNhzGNcq+aZ)yyS#t2TLUY9{8cR +}Bhh%A>Q1P!ACm;yh1QO?jN1{J{da9J^j$DR3eZR$UOcpxSfP>?+-!<ZV+`fW|er;EucNu6t#jwbka{ +vl#xa^e9F`9#opUj(jOL=&GI~zUZp*1gLuP=zjlMHPx4>Y)XEfXfU?@)9D0k0jH-_mtK}uOGXX;tteN +e4BVJWsjTPyqL=6mzq{aI$gxTyg`KK4q>DC6n?VRv^(g8rG}M|3Wwv5~>ayz}Ds``+v=#5`F?nI7C3S +KREwm~WL5FtTs_>v1Z5^)=uh%XUMfQG<o4mv&TDYp06bnnQhP0E7jwVw!WV@vB5(=5B<S_0_2T}FLY1 +Vw_-zs&lu3()6XjOfm_zo3^p%6>wA5`glY^_)4>h#8I(I2fj^CgzG&T-)-obz!)P2UG2hDsU)0Pw>a4 +ar`3znwb4QId=d(>Wt0BXy2y*Tq-8?-fg52;i&A`&BzjMU!!+$MHTs6q2ee5AmKvf2aai>|Z;{ww$-^ +j^6i5$w=sEloaWyFh)}Rj?+mzDm^RP)m72NtHGsUDJYWW6xyqMT<Ts;wTH@4VsdQL37%e*OSS5HtEWm ++VRohpMua$*)JU{q04mP+*>L70;}#sC($&7>C)Gkp4uILIz|*yiBv_Q?aZMV*|E`~x@UMm6IMe%HsmU +_LQdb2mfoq5jh@vVz%lRRL#deci*mXh3#?DPDh*Lm*&I9!&_|!nl;q{KV1-TnVH&h<UZ|Xodm!^Qs#H +~1z8Y=tgDxZ^@9_P4ymh#E%)#H<1arx=R#l?RBP)h>@6aWAK2mtd`vrq<kC2CF+006s80012T003}la +4%nWWo~3|axY_OVRB?;bT4XfV{UYKE^v9(Ty0a_NRs}}uc#e=IJgt6N-ul!va_)a2Adfh2*5Gta5y?d +x0=?tkyuG>hWqtfZ%<{Gq{jBmOvH`b4c$_`WMw}2WL8Sz*|X_?;)mlGr)T2T>Cy4o)v@^D)%np+VoTd ++JI}=RsubsKbz9ZNS{yZtQdFII-TZI0UKi^7-QA|H=0)GMV!p1*x)*cR=3ob1PwT3$RL|$-$8z1=m#t +`)qMsO3wLdHSZeHA%Y}l%)JN31_Z(8$34J<C2)*hd?Wzm-lar0<K98XoWdaV0LHPxyYyGMIMe)G-OYK +Y0^2jXzO7MHqhCoapbY(JI@yON`(?%V2Sqn5eb?R~3`2=TgTKZuKJecM)dVqYi;d(k)I;;~;fwOhYZ) +w;TAi}q1#ZP}Kk=$d8!palC)JT@CKFKW@2i>kB3D@F98s26{2TGjuqSyanMeP~lJ)N-`cec9f1(BX@- +H{w;<DM`hPvMyV-nv2cNx|*xbuc~=jccmygaj%bcE7H`77UaqaB2F4LywUD=qO8<;J@?15?bH#G97xR +OMvR2A^={E?`IR;Ab;ms=^rKiSYqaQjFsTAs=|WVs8Fr;~uRf>&)j}T>ti(+zHeI>gtRppoYAb#|y?% +NA=2{${y%j$nUS1xaUBCTKwN;u{XO;czNY&lFg5W}^RkcOkKPti10I!cPk6x-Chd-RYI=z0Yr9U~nK0 +Cg;5+~=E;!s>1US6Lby?J$bDK6ezUYuVY9|&<(mQb-)=9H4XikE80yGChpQT9c(?(EXvD)V+q!1Y3`i +jSo-^SrDSqC}xw<o@xCY`AXfTeDu(g%tXosFtE``ba#qmBNlf-^jXZ6tZumKtDf-L@rgMqW-W}Cb&}F +PpYLF`efZSZ6tnZx?VSZeW?1ziInlaOk*j;n=5r>+dpx9_WUzR<=M^-kfHvss<yZ->Ov&@^HtG`uKd@ +gtmkSq#m!oQO|Pil+}$YsC~3=Lz7q3Nfut?(Tjis*^3|$0zGeD7DwpcZ+opZo`Q<)2QX^{LEr0FB_hN +TvH;(ixiQ?boC4XbT>Hcyr+SyH_Onubv)c?-ROP@*2w^V($pX~3{oRjXnjB@h{@7#=(nxl#NB+bv%|C +HuP#*So8S-O{fS*dK#Obhy3^zd8t__?pd3aVw#-P^7sHyX9N$&JRKFK7+AL%ZDT0^c(CTN?daJH<}N` +llT=G3`mCcEsGg?NR;HYxMv9%L+=^#OK^;ZLB%cY35!z({%21ksJKx429BTG4n@qH$xtAA0eArj7pBt +-}?HaF&Yy_Nt?0PP-2jjm^DeSVY^=Gbb*!YpRfbz-6BmI^x2<@`y8A0b_UEZy+&b+1nltpWAqQwEn$> +APkIiO?l<@}jR?7tajNYh%`0;(8@pcC->to*Uk2=um@z^gC)C>`dhrIM(l?|I+-YD?aweR^0zmkQCl( +?ZJ6_@z6?@nueo+=4*3dC?NJwKKWi`q<bm)0lFZXuRXy(r6PX7=v_2&@75YJL4PCA-_Gfw6(Y9o^bMp +Fi8P;(ZTHw)efsnQK92jrFekZMOs+|R^m7eO_ThJYf<%RFcja;79Auagc#Hc5epCSE6)7CxFdrc1q^U +{XvIx*1P?GB>t`2F(Fguq=V-DWs^3t&%iK<|NaS(Nl-5)Zq)ERJ!(w8$a_$o-%#TOz#OlVM5wfCyv3$ +OX)5BI!ViEl(KWFa{~BzsMj<iyQO~a*w4fxQ|jbNZJLKeFf=E1=}apF2ZI>7$FiO>k2os;aj}O7(LR7 +fOXP%)bOu1lxJF4wvFAr%1lmj@q890fNIcFUE?7hQ@g&124+-F2u2q5<MKF(18BwZdHIR9Kw?DamW)5 +wHFo-Bwf+wRi@Ld=^a{`dlg&IwnPH|Ly+lJB94;wqP0X^{fG)h^!Btm4)JP|=a@^sQAQ56^?@$JAZM3 +^3<T$`j(j!DTp9;pVj0Rjh#!KxvTQp!x*lA+gQD`IUzfbbe6-QkVQiMv_CKF7W#Py}sd{u}ypj}B7}# +Cplj$%x_-LMV&%(j$U%8L*joU6B^i3%VSp*WBwVP=p&j;t1Fv4?cm|vLTO>U-F$Mh6i4tMKU?^Q9Ge@ +N2L=GHsJaN?SS@aN5QiI<fADMp*+?n-h27fKozCUNrbHi{mvZ1tz8h4h=!!ccNm!{dqTDl`=co(B_yc +y6Z42eERaSNZ^*ARhjGgBDQtkJrN_UeeJnPlC+R^WT|3h<<WUlqlCn@J7z<=f6mKyHO=W?$VDymq<A_ +pkawgg^@|1hPqcIaS^lri&c`wX@^Ax)?$CHVle0qbCcsPXqA)}CaC7cN>$|EFo9EZ}F)WSMvgHTQctc +Dxo#NnJG6K(EN|2g%od1Okw*T-C=VQxfJ&fQCT|Hax9W=iBoVa5sz@C{!QeCD)8BN2}PcxhPD;XImq9 +wk0a7#AQ)5kDYi(fQm(`_%u$Qizz~;bc{m$lx`ScyyRJgLo4sob<nOEZjgOE`3J&f=P%^kzvJ5f3(pX +(i4^mbf-g%0>;n~&_laTM1D9B(iGxPzN?~ikC$|0gusE`DWf&a4At4$2l*&v;lntc_@g1_2!o`#*kem +Z+t5j^60aKGb107_9vw1V>>^Sa4#J(4bZ~&kcH2F4IL@TBH;_)Z)34DPDnRfez_0+pt80AA$Bj#lgt) +>Zxb#%S>sUy6xHIuBIV8%4k%`tr8l?nQMq{GEo{Fbw1P}_FTu%fkVpDDd3ag9;Q7MrFim>`Y1v8$|F5 +fy6=|CHtx)6v-pOn(%5i*0YN|XC>t;*7{q%+K5cz(l6<q#_l1O>HZ%!f%(6mzJ+LBI(Gr41y-`T^nd8 +h##VFCPe+c`b7yqT)gBkWT!{5lUN^kTH{BR5-5*0wLk&QS1%Fv-;SPejJhUct#Z_&QvnYqbwr)h8aGE +%QT|>W*kvC$vl1?kA|DOaR{Y%!n6!sV4F<TpSuMn5wGEs>k#c@EG{UliKROhB8>8#V0d|p#7dayrPm# +_$1w`ZLOp=e91uLu@G&AjQ)uv!jp%8dWy1(Otwp9EN2pMN!V$YLA#y3&i-EQ{0FZ%(<s=$mkUh~xSbA +hoI)U_#5;zK+8Cwo7mJ<>)KOK@}$ppa0JmgXIXX#*Q`rLb7?xTk7gluY976+OLZFHR}^&p_sgr|8jn& +Q!%wLqGe4|$X*g5#628jeBmEYFt^NNJIL5fn<LUlw|Ygpa*1oGF>gN2PNOUX0`=a=Pvj77aNnxeL+Wi +T|YfN)pTzvn6w4V^{9N4HzPHGB`F&2!UAgRK79!zug0nddo7D!kNhPKpw+P2Q)=j^FZ{xuEH}Wq9nen +<=G|-%efZY7Pw);ohjU04GX!%d-%!AlC=LOQ1EIB_j3NWg7O$A+05kkZuD)J7%4LyA0K|FX-J6eDe+S +#kC}!C=Qxk@B4cQJ4go6M%0P#33?h8EV9Z7iVPN})#ZAi8$e9Ad=dKghN2%hBgpI06-0Ni|JurA;H`H +$!tCC<DTu{yz%<IGaeY}gpcR4y{hZ>i^zwE{5PDi5*oQZ1r<TeQd2AP@gi7Hcgfrnp!giBJQC|Ms4Im +CJ!1yQwT8kMY}HLA^&q-QkTT#)(BbZLPyag-`3)+Z4edaS!F;!MNKNtsuNohc1X&rLbpS#S5$Pq+HA* +SLBR57Rs<tz=9m&?e<nWJqL0<h?c_iP=%|cfLSmRk)%@4o$8|o-=SJ!YWop1qVV>8nni72!k>>7C|D8 +^^GV88+t=~HbH+TD5nTOeu&($pAJbHTA!k&&xZ%bVxot8Cdv!LYZUxK81^)YH#EPD!*3|yyM7+i<A|I +utl?uPkIU)UG)`3Wh@OzUhu1xMszJLR$(AzQL{lJ<?6dU%Yz+xeiSNmmm<<Ibn&)gtn~WqvK^92nkqP +>c>@$LCn2L~I$t^)up)Gu<9baM$rx>PtR5gvAsZ)P0iD+ArM^vAlDvjf|%<+XxDs<2eE9H0TgnK5QY* +5VMcRku^=s4ZWgWET78606Dyi0^OBvV@vr~~`@!F^9WjPYVt7;8W&Fx>bm2bCRY=Sf_UGELF_P+%Nhb +|+#R?3u6~fjfjXd(te{p7@18ceJGgR1koPYe}!Pi6rP@!-y<llsFG-q}wy4X+8~^b6a%(l2?H2umC|9 +Ob8>CHA-f3crg+(>^H-ufsPWUMTA9)U1=1GmU^48pb|!=d^81`6N19k(oHagusA|}{;6FkPiKZ2Pev_ +RhL6YuoPcmBakCnhf&OucJC6|SfojTX?Raz<oGbwsBgTw9TVxUOtsE9|$*ICZ4G*CRah&{dTPCK++3( +zQ#<ai-aqCwy(96J)Vy%B_Mp_QeJ`tkD_|QuZkoQU2x<X0MQT<MrfPvamIB*QVp2G@$Fcnc3@QBK} +Y<qMy_Sj7)rM}JBr)>`Q9JbrVuXq?d@sAYqN0_`*x1-32}Jm5w9PCGb!l++w!^yZh51MaqjDS6zl1Ve +(aXR?_2@w!isawlalZXbLLmeYZv5XyzoOCKcaB!JXypa!9aXR9#0o^!l=mWuZh#^pYeeKzFn5gq|yb) +@EUUN)=miu-(r)?QRy6klr|`Fgu5W2J0$IP1}Z?vPv71i#u>WuOSvWPjo^Wlwt!C;9(fK-Jev7&+1%5 +DPFGE)&ZWUbw9$q3;6U5dkPcK4vr+gf8D~%2CFnlR@g+vOKOdAI2h5O0oF!yL{5!mtd3Y@}<Waj&#-r +h$iPKYfy@|x25P+*2peAr3*qE3jET9b&XIx_BIj;qnHvQht&U{^To%pf1FY2-@-E(e-b+LZzs&2Qr`K +6rqd*AK|_3!M>>)H9q?C9|N_{I6<Tk*a4n>qgc{Oo%6)7kmY>d3w{hmOzA-@JG^yF7k1yMB3jeD(7D) +pK=L#<4m5`tX0I&bgDPXQ!{#RL>8u4}%ujjyb<5mtr=n>Z+g3cDr)DbmHlM`s=~0Z~9_AYs<Cjbk@}6 +;Iuk1>x#Skbvb>$F3W`)W7d7B?q~XW!dbn!n{KL<*V`sdtDml&Y_w2^CeP?+5BuFcT9!TV$u-47JQL; +sJ?V%iLw&br{vk#&Z#K%TZ5P=`A1n3cRtakkcQiy*o2MZCvyV?`?Ops{{HHxJKn0t>S_-Wnar4-l!RM +Q{)em>yY?e#?Bxa|dJ2lT{QnO~MA8l0%E#^w%h>iA83T+tufa-_3c@Qi0zSB<(>wcX+tnH=esr8eZc9 +PGuZ2U>H?n^C$ei+>zQF7k5<;SYobVghz=;_ivV7puww|bGvq*}V`c2h?B>0aef`k`q3AhQNWQ7@Dw> +iK$Oo|Rq|9UJSWENivO#TH1N6zi@e_$<}(40<A?lv&rek$&!VW>mx=r7T0^&|&?rE&EMd?=TtkqMgZ< +4Q`dml<3x2t$tX)TtsFO%x+5LN6{%t(dIBuHTNs^g*(7AH)eMrP8BqYt|TPr#Wk(y9~zGxix3VR4)jL +DvRCSTFpi*16vD$G$6^O<?bG63Vm6vyi-D4oM@ePjwJO{4K!~49^R)eZ)ij-XR@%+huNvPpFyMoJ%-C +qhP^w)d>8UY(XEaKS&`+y(l|EDOMfy(W`F8C(cg2TN+-;OgFDk7W?Zw*ks<#^J(X8UWs&CmS2APAQTx +<O#{<^uX=0;w1tZhD);=XK`O{+9HFAoSm3VTm@lyCR2suW#R;_rmQ5N*bpA|udjt)T9Py)Ap|dAq>zy +XxCY{Fg}H?*;wUvG0BF@XS)3{KvL=$&<EGLM8U8^On9-G!Zl{m3xjSR-*0N4u8=-_Kd!Fr-!sH#$%8W +6d05$<YYtd?$q`l_Q)s@PtQcNIpWb|wzcI=TNWRlkeDLLyYTV)cau7J|IYq;KfS<hrZB&W8x?QO%DUO +yu4ap(FNQ(Z(%v>TO{FtzXoXhA;LB>E9dI}@{gr}WHjdjK6gz4vD%SIj{(BdKdMh^U#Y5A6=qz=ZKMT +P<Z@Vcc)21nM2i9na{jp`@_j}^6!@2xmV_<Uy`h+mlk@e^>K8;PVFC%4TmzQ4sczQL=Nw?&xZlou(!; +NCI-H9<HBlq5c??^0THK38D;`ppC?lk<rx_Wtfay?T6ePx&UPeqn$?EcZqz<WFiHs0`y^kx5Uhd(oE4 +y#Op;<8dyqyOFsaxp#of4Fe2DD<{p`PR#-bv~t5?0GnT&jr|xfBjmDzkkmgt8ekI-<<53Kk*X(dK^!k +KRFtZ8Vdo*kjQtrD7yF8|Bca44nJ%3?Up>c_$E!hdIH!?Fv-&*r(vBjTguT9r{{l-geyu7;A7dIa#<N +p(y26}UW}A2-+w|CNu0Rwp;fLI&quPlm<k^rfz){4SdC)w&Xi-)N$a1-Z;pPv_;LsRv!Hu~yJO()a1! ++=$Df1ha;?T54Slk;XZmMFr&3eq;b}EChG+Wu@H~{C4bPo_15ir?1QY-O00;o{RI^a<XvxYT3jhEoG5 +`Q60001RX>c!Jc4cm4Z*nhVXkl_>WppoWVQyz)b!=y0a%o|1ZEs{{Y%Xwl?OI(=<46{L_pc~TYt`M7n +{kzskkGpiGz&9mX+S`0)KADH1z2P3tnG9UyW0Q0=h`XPEq{d2u+lyZmPuSy_ug~Q{ip)@&71xo@#*lF +<5O{Rd~kSrc_==eoE`i_46J?Qy%AUUTAbzaU7SXVILH=S#D(~r{VPtA2+t1>t2CZRWtNM166>@SbFA6 +%jOcM1moX&&uD|IdTk2e7x1#LPiS?(tEauTtGqrJ+7I@5;SzbLru{h82dVHSisMHH_^H^!@nu>DLwS0 +uB`%=6+crWB^Hie4b<vU_ONyG)MEyRT`bpA~*YEKTbw9Mn172JGRyx+r!5TB#`cX1vkcX|9EJ_sNzMV +X27$MQZ)*Zza5B)-X`{E=9@&9xRqc3XZ2u#e&~TZws;id-+^qE-(gN)e@tpR*kD57{EVeWamPx_~=`y +43kYVL1Hd^ouyr1(1qgbgFZBbH2Js;yHv*;<-)>Euum!X{@-nOdS!B%QX;jltF#P?nj|x%#-bJIxjFH +)Q&XP)*5|*Sig%(!jEV!N$@>DKZ*p=$c^MqF9p`qg^1Hi?LD~17bt|I-;q}0MvGOUZ&!&A4OlCFJHGn +$?8}wdKm96x+rPNjKfU_;5o^ITW)Z(yQ~a<*3N8e^%A>S=1aK($e0Xv2D<t+m9iJRueI@iq$5*F^mzU +z`>_Y5|^Zkpf<AX0J`xoN;%f<QG<>8JHms%T&iOfEd8;WnC@*xA03tdKWQq-=0MR*GUOcvrk`lb=)xs +H)hB0`BQAD<P&Bunoqe<5NC{V3vFk!GbYzUMJ=2iez&F0|PA`bhfujxWX%i=y=R1R=PD_)&Zd)kjH|< +-Yio6(ueGybswxNf~^QVIYP0a*2_lA8~m4_br>s8xM-rc)VAaRhEePeUwLYBu`N%!m3zBN%ANbnJ&md +q5nYMP{L4}mHLme(lCMsggTDy^v@T%T;*vs9PWwY@!<w~-z`_^yj(?fidL!{l{dN~6`Xy~@<k=6_C$b +6o)NwS0||A$T*g>=72PCyuWB9$K}k=P(N&RB*4;#i6e{L>oJuv8pH|6T1Z*j3y2{RSR4`QeXaLZWrEo +7@J>0;+Une6{RIHFe-=ZX5c-{#hr{n7Z9pZ1|od*K_?e0<UcOekn;2CQAZ&D*kP3XVmCN+xGD1W<qSW +Q@?5xcv-m<70Jz6|iWtMEzRcX3NR<NFj2OeLNbo+ns4!n3N>i~<j-k0ldKPccOzBVWoHmSEWo;}W7%s +FUMCG~+dz2`o(@x(g%|Senq-6rzL*-)H!Qbs3OqLWMO@Ep}z4W<qFSv6{j?BN4J3VvNS|eFk-KR>9dJ +G`mnkR-mR=47@0Cp@2vMi3;FYFu}cxdy0EjshPqlaD(1}8_R)0Nh~KGfKo{;msk$2l)^fNbqebg)+wx +0b>7SZkJwiVA_^i3A_^iQXeY}d=0b>t5DOs|(inId(I?i2(@ISQHCQUJRA7l1!B<R+5vZgL9np8tJ_d +NG5+kS}(MlD`1(li`QiCOmrbrZ1BYYoWjOZJa3L1yH2_eJy1Sm-LgytrdnmN=6h)M!S>M$iKh)@Clg( +TmB6iy3phvLBvwSvU)DeFirNDV9rQUei6J4H9XD-wrFa3&OqP@Z6%3WFRPk=h!KhMEZt(+wIcPC)aBa +)>@b{fL~P@1TB6xg)D=H+4p8ZUgVV=WXt6e|DumyV4JLrFNHTw--rmWJ8NFU5UzK7rab}G7^(jo=dq~ +x0F^FYPX)ID^05|#5<6rs+&@zCQdhMI#Jb?W_3SUccoqUH$}80AsAJ~$t$s{LR4p6k=;scy3)&=+x(f +$jpnJjA**?FTf9zl(?8hU2q|lBbyva(AAdn6?0lA$I7AovpDUftb+HE&!Cx?b8|OGgj-}#rv&qgZoGC +kxsvEHd;Z87-Q<}~-X1OT+1UqV0OQ-q{hc=w^`HEmC2o#JrE%PKw?`pWzEdxJ%;!+z&yr;y?6*R(X{a +aSQp+FAUX^VD8k=Q<5=w7nAWzS4^<rXfeUVMarOn5<$CAr2B_<ge-1Zqvp&?N^E1T}(w4xX}YF3)Hm# +_+#KFwDGK=ZHxlRne=OKo25NTaNYQfw5fsE<60FH3BunfqW?f*+Jtz*DGr4>UkXW$E2qg+}e~rXGS&Z +mH%u6TXMkbUojk}jYt-Sbt3iorkK~Vv9)y`gzNaXtF(SH2;?RX!XBGjaL~>H`^oWaRSSLoZk-1Pja+j +tebW&XbFG6wI+lJg6YZ8!dumXGYZPkjy>y!HYu1AGG;AzOHme#`wiX6<rWaLXI~t1Rgj)-*mj}U`bGQ +4M{3AgV71dP96H(Y?vwe9s+Wl9sM!+jWJ;gzP<qaTE%og`wGG>CNI_g~E?!8VPY&s#xrXJnCu(2y|$N +$=eb{FFPS2Fwd(B*!<FcUin>Rs3Dy=Et>5p=D;0tc)bt=EeEHeJAW0^5zAtc7Rffk6=ZHvd#(i$|r0# +O)(K5Cwkz;dO4TnT{~z#tRWN9N6=aWFGUH9NOq#qZUlG`}SewATc`=-vD18g?1hU&7Q1$d+c<(5O?%- +&j)7Lv8SZKH#@V<M1!kl%2U2M$XlxHq23C)pO#FgAK2QnUQ4FjI`aelVB;yx{(TUxGhZ=#?I>_u%4}` +6nb>0lKg@K?**tk6%PgCP%D3bOe!C|rX3Dd6Ia%%^+sybMU276;9R_~DEL!qxf94dcwHZ$_YrKdJ4$g +?18Om^APod^yraHFxi1cl2SQHeq*%ya)OKqayauBj4H5@30$xW;^2izVH9Z%Z6|0gtgV0*GT{kXf739 +YNLLD0=ace(ldNix9>2c{eJm5XwgTlfwK?bfN91>H!<79!`AW*G?BGM)#agN)^Y+JJ!Dc9r)aaEWsJ! +9X6k`EL*ezMFsTmfFe#Qwwgl<50s60<(j#Jm6i~ZuLA096@hKvi-=Y44JidTd6-ievDFVncE|HP+M)? +4w(H|b%gn|Vq*+}azumHA{Rps0v<r#Ou1G2zb#kEYn;*y^Ss8a4cWNmR;9^VkNf9lec$fvX2Kc)&-yl +<{mr!}4_vz3@bRafD0H)YyUVEYI9)vE?$Rxz&?jIi?L*M&%5`9Ddv6ohtwvdQBwHf3D(&K7#~cLhkV$ +4`<Icn(2hQ&{-|p4fo$anKTQ=L7*ouPeAn4}%@F7py|73M9*Xt(`ge~6N9Jpr|&IGGQ*IVhk&I}@OJ5 +am#xqaA8`85aK9N^LDcElbI>dCM*-3PgE?B##8@iVc@IEUSzi9wwQ_U!9Y)y?}2dBDq;Z>t<tKPz6~5 +9dL5bOQ&fCD8wU5J5NEeT{7ZfraZPj~g4ew5`HcCid~LMIK1UR@=)bIp`DEJ{x~{XKEC@Oq^BY@V`O( +ooS-r?mu>_ok~OMJl;I}TPv?o<rt`<z%#IIvoEL{NqkNSo$~=tU%rTMxkFXr4YR*x7+)sN@?iMln@o4 +(d-;F!-kUc~oA(pUy9xjHgm_D@<zAQBbw+P^T|Y$2w|ipqo2fpDE$L0?1-$|RnKF<6fLQkhh-zv1xQy +pfa=pxom|mW^uHN#;`e0`^q4zSXRljS!yw>R*y~KW<=(5x~mK;S%p?!n1(B*X+J!nk)bbNXCVLBbpK8 +$~=<`dXlMRzp!wgM98QTo>R{^NPSwO(m^(*Gyk?)|^;9~c+e_u>Nq9bkZ<R1EwVP)h>@6aWAK2mtd`v +rx$KR+|D00010D001Ze003}la4%nWWo~3|axY_OVRB?;bT4dSZf9e8a%pUAX=80~WMynFaCz-qZBN`f +7XF@JVO_LpE2XUMka=mfA1D`kQF#+kRsDp*On|6EGMj|<va9{?`<x_>?Zm?{Wv(u&AaY5Z<Ky%4oX5^ +E>Bffphke-nxPQbB_IGxV&UV>{gX5h~Y=P{Cx53VDVs@M-*GU@9*iJT$SyHgW>_5qD7UBB#_AX5(QJL +jzGE3sLWE042dTQu?nv@Af{vLmiXW2Z?S$4%rhfc^J#bq&x=CPqR$<hLs`8><33n*qMSzh-~@;EBvDZ +9L{H1?;8a?&-w$5b~Zd%g39iSc*@6;AO@wmqA%Q<5#%X<Wql_jp=+vXiA{o?PC+&DX`7cj#g4Fv`ENl +Vo<CC%5b^gM}q4Gj?)c-ehUxKSDK2F7qhAr>I@!am<SBs{8@N-n0Acj!mMJ<?%ErYV`<2$)a@n&n(CI ++iaR#-BZ_HI)yuAbs6Wkg^J<FqtEOhE?_D97^iU#Z%*zmXUPPE50Xio7BPzoHmAPgMn`Io3^{8IVS5? +WSJ8dX;sp0;?(cD4pohs#p=N6|`V6^#9hGE1vN@-LZ(#I2n;{#y8oB8Vf%bIDlC)BLgV^H)3gPGvz=~ +bQ?5>Ef?q)tTK$d;kKmX(S^Eul-`pUj+pPp_Xoqv4~SwtFlk-u6~aythErwm@@QCi-^a40z3J>B^OBe +p;6AMBrhCF}S0&yRM`&e-1ZDcfcz+o$LIJD(4>Pua=m)05+~-A%^M;#h^4g6Rr!8{#Xdyv-2FX<SCht +f*c8iu4vRa5iN((f1f>p2P_d#Uhl*{C=ez&a(8n@)tvNK;N_EiltfUvmbc^>;Qee>_UsquMf~qHhmTf +2u10)8B%bD;d{vyRPW8QEce-mtSCwJa2sQ}6oS7M0T+yYK10u<AGUk+`y)wZ!-L{a$NQtVr+`d)eHUH +Fg!Onvm39;5(S&ex7|rJi+&+&kXYo6a2Ap0@aQmXnF0vd2ad8{X*}vFpPlloYxVGgyXAGY571X#JsS% +_m@SoC1jU+YFe_UIvCaA3uTM~_aZ=r=~1GFL92yN_(kfRAS>9ZkZX!sCvh!LsT;+_cU62n3a3o$Ijum +Oe*Fl+$z1E?Qh=pbBZO;}sQh8Qx$OarJJ;u=E)W@SUVMi@y=bv{HNHK-qs&_Ax!47kSzuwsZy>V^t2f ++Zt?b67Qk_=x(TX0+IvA)Fe+k}<@`5FbN)3`@qCc?|VqI5{5sl5;eHhEQ`1=fDkzT0W@MjNlX>;&Oxr +aRG4waRG4waRG4waWO!HoPeBwoP?Z&oRpQCG1N$iONdK~0mLMRNDPs5jv)bt1Q-%PbpY7_vH?^FkPC* +Dnh0tFhzAhgg7_B1k$j2dOC(<+`4Y*ONWMh!C6X_Ze2L^MERmW^gjkYBT*62O3z(o=Fczw@jG~YHN7i +69gTsuG3^_xEASyKzsDbZHkSHaORN`FFFf_!9Atnql0pigh8_;i34^<8PrceX8G4c^kFu;$&F$M=184 +QOQmERU&3d0c(wng%|k9e`5Rue-_Kw>n6W`a0k#0d02HVX)f5FgMreup$28jua>0$aRNbH%+kp7$e31 +)}ysNH2u+j0ow;RAiCRssu#L<1M3}irF5ZAFnO*pegOP)CYB4K2+wg#_Jb%Q1b)v1{HGH6g3qz6+0C@ +6*_Uu7FnQZui~e%ras~<;;DydPml#&vI`o%BpxMVBcdacBRCWJ5eZhrH>}8#2nL(!Bn@Bq<%M5f_{HR +x7ka2Uw&u~F+2Vy2zuZQXo%<Y*+sWjGWL`*SjU@B;SLiQ5b3gk8N3>9J#NWzNie&ab9FD@5P0S0w{FR +#+g8V8K?oo-aQsLFQ8#YJ>=hU@DEJyW4Oh+XVHlL9Y+fkhn<59_w;Z%QAv<+2wCRZq`sA{Xi<5oqHUF +xWcb-*hM@fLANRm~NTXfAP4iC2|8kuQ}!5ipfLkuYnBnEdbXP4(#s#bk^2Ve~NyQ3R1S(F74TQ3a7U( +M8yB4Y59P5UmCj%z>y#%OlpRc!L<62#J;k;*_xA5t@<sg_yqjG^oFcA$}PQUijsOUw*0m%ahmcUtk0D +EFO|J*dhI0O8pILgOyns%~%ot`z}r=aq$ir;{QPZRgxDaz#+|h<KgCDz=ggqxZE-Y<Yo|z#&kcAaofC +A{qRkJc+mYczK+V|du)sFP0l&SpWYQk5~T-GdR^N~^vC^R$pMTQ=k;&dG@x+VaP#2RFm-SoQYnzm0kR +q9va+@T>n!)pL;8HhqqV?g!(t0$6Or{;pd-2{bc-^D`gL0%R*%7=8CJ4DJS7XJ);c4?H<73E#M}Gz{3 +~X`6&tVbvpJ(QyshCY3^1>ZMAzL%7L&AMply1z1>$iQD1^&i40IOMnW&ESRbw~${k*8Cn^)`PgMJN2M +^B9djS5E$9<IX`a3C8l=1sIk)1zuZG}f$W!O|EgjHy|4G|XBM&DBasTrmr-YE*ewXMr1uKa~ZI{O(al +fy7+MT-VCfXQ8_4h0l#F)b450*SJ^*4tO(X-%pi$-o{DeLfN$r3uJ47Y|yU|$=iACY81`Yx)@1xVqjK +e(8fSo5#nuhyj5p(SkT9TUjORAYECe({~A8%MuPjAB~)HSV};X#hmS|DOuG72#)FoJG#}J>Ff4eC_f8 +9JzlEh;?T^$Hx(*EmYsi9ZR{`a}Fj!9`QM7eot`qCpshSZ`tREQB*Xx2t<GPS&bE2yB8g=Sl#e<@qeW +3+ExiZ-ZRMAiwx3RCX@KZ5Zuv68M?&3hz9&h7f?o*vlEKlMC(R!<~Su54MLN$rLdO9a6%mr-<b?j9gJ +g8s|7U=vcB-k~<ecr}E8t3(yXU1Jv=5{mU&X7?HeL=NS_EmK(P*kNlHFb;L88`kFe#?m(Te5Qq>)?jM +I$xgXh;)Z^2Xf!E%X)g(wkR}eMCzTXS(zOR`kvbXvm;={Ky{kCWNFRGTWl!X)NpB9zzs`Gi)2s2%!DT +l{MExWBGlg4#)0rnJa{%?nejD4=E7kc1N(`<oY7X%M`D`=Y0c=uo2|rJT!XgDM1uWslgfgMl57?Avfz +U5;;SkP`njZA>$>^_M-;3WxQnHmcO4y5jn`kBO`LT>ZijijPb?;#NMnXN2HoW8kT*CmtGtWMMcy|^6b +2G`iv~Ljrh>rN(J-=LW6c~QI|{l?;VHJU*-%$Mx9n2*(=K{$4%EKe+lf9pJiGc`u;RWe#H|J0dUrv_j +86BrCt6n4-fCYJGWulFX2D*l>@0Mxaj7vF$xfn*ir$@?bL%M$B<hkeGh^eR%MILSWfcR3^u-_18WwbY +c3-*G@Y(`(yT3Y{VO281=rwR)GoCx=E+?9`(Ow_Trvsf2v$Pb*tF>`)Ep%6FZe6vt&|QyAgJn;F<|1| +9)3bCp_a-NGBVyn{uZcF>s2LU~uyMik%}iJ~+I=-b;Xtp5N|g<58~+Xq`j~SgvOl<qfqoM0a-!*gxqC +7b-P<Rc^V|H_?d{<}p<P%1vMjV~W7o@-s!`9hcotXmEd@_GtQc_LUK<}azGWmAE4$5olm#Z=*?p!xdh +KvzL0EHkty^e;n$hMQR}O4?X)WlIMpyhnR+hfK{w=4~4h|l+U~w*l&&>zV?gG~(G8f_W{@Uk4#lukY` +cEXQ9LBS=8wKu&m_6R=o7<iR=JrY1;Hry$Kr0J=-haaa-m`)mecc$?3HJJ{pF4bujvfx&ad(?vDR|>~ +pR#0>t8XOy*JJEe@0(h$-mwL5_R?2CUd`#P=_!5T0bOOD{0aH)w;d|M@_wF7qS?hfD-!ym#6|W01wfi +_j)(Luj7sWT9M3P}^qO9WznH~k8Rrn$i)KaaEAxuDyhx+l7&m^a-%|dqx~E=MM*pkEgjc@zKhOJ8zY3 +_nO~2INg|7}i2ajRgH2YD!B@37MeNerj^k}yiz0mX=yxu=Memfe4<G0}wpAYq06H6U_@C}RS;I-k*61 +Vp+Z%2c{QjZsX9rHOjTif;sKf~}*e!9Na{#^VFm%#Y{P)h>@6aWAK2mtd`vrzuKuPJH?0059N001Qb0 +03}la4%nWWo~3|axY_OVRB?;bT4dSZf9q5Wo2t^Z)9a`E^vA6T5WIJI1>J@UoqHX(H2m%B4x*Riu;ge +lWwqS5+o^#ehL(uNrWnrPm-JZ4)@>hq2Bl+$#ohn?gfp&NG3VY%sew3(uQ8V=>DU3hwqP1>E!s}@bvP +K-kqEs{7F4?UpO!5>R!-U8s3F*5Ya)h5EN$gA^ArbMFBoPJgnky9^^?%^C%Q?PIJuJaca@yILt#x{w} +_XC|Qb>l3U6<FfspB<k>t}3Jo?);tU_tWs(*j08HmeTK3OV5#(Y)H|qkittv<*)^ZJ1_c^^fcuj0Jn* +yS9`VQ?!5naf+8C{4>q+i9N^yDCk^EA9!!Od6M>pk=keF)MobRI@`Y4|{I2o~m)Cv?8f?~}OlA5=x*O +&X+Y$=Yoy1ZBx>{s_a~(mGkuJcub3i!dwUK}1eLy!b6iA^(sp!rQg%TEz>vBdyLw`jFKezCZm)CnAHT +^j^dwg*WG`n<$(^_#~W*I1?0Pw3L0>y<+M}8gf|~LPrVU3wGa<2r({oe-&wl9^yN!)>a|9gjl}{a%n% +Jxs-yhVf30JL?f*wcRDFho-Qbi3)p*bj|Tw4(MO~e-3VG`;&v6eK)_u3bbR&4*~cr|KmAOf_Af5>Pp> +||#au9rQN*uA3Lln8!3DvqG>G#x3<to6!;6DIAhG}M_~iKNv$X!``0DiV@{*3uE@+?5_b;xF4?dpkU( +or-i}SO~!yTeaA!>>xnO!6|6yE~!Apw&Mkq2Rvm9BqAcrzFnE$BY@DiG$m2$4|~V2Lc(Pl{ob#CL_i5 +K)A_rSO*GBzNgC4Us#@zE*UBqT=f!>E}BxjTt5d@s|i8xP<socnj#GC`nS6-X&Qsr+(Ontj8Ji-Z0-| +L?18F)AvV*r@wDmR9-j$=Hu~RxvY|i=J!Dw%#l1<nFy<F6-3dR7KzBDgCxEoZ)C#AG|R=eyg(QM0ih0 +qJMr6v$X97xbo+ahtsicH`)aw0=lLoqQ?!6?Aa6uLDmZ&g(nTT2_sGLao=N)-YLl?em&*_{uY#LM>^U +buiznC8<m)`ShO9`hAA%+Qjb1tM%H6JwI-iL^x%UK^?j~WFgz??yGzr5c40pF{{V;xM4NbYrJP&Q;(o +D7~o|((oF76m(c%DvhpJ0q*KE|1pE1ep74ozn0l49tZVrW-RAEC`4g1#BXJv4~+Su?JznLxwD1B`48P +`J-_(WFMe?LrNgeXwSNHpSR3`YVcer8Uw(eB6}{!{aHYN@rw~FtE;(7IyO^VJ5=_d^!xwtjZf7#?8F# +b7e9zoC-S9Z!|#zKf9pX2UjDs37#jF*tmpXo}|5mx$ztnAWUbnYC#0uBPlL(M}Ec_QjY*lBlJlaA1X# +NN@)J9fSDswKKvWWoRDysE*%`9Z!DuG6F`bjihwf?Xqke@Gva_}B{vIL!!eC8%z-R(Lrx{BRZhd5%c* +EgLI7G?Pq_Q?J}O`YtRZO_(3$LlCX(W4Txyh-$!Co1qD>^6R0kM7X(+z+oY#)?7{&}eKMT^&g7p7ikW +e{>E=cv1p9N{4f`k({zR^YXc?n;(k{pNHO#FQ%;<?E7V1f55`ftM&hq^K2`q*r`!>41W#<2=V+61;U@ +w{R<6&Te;<)63X`Qw=!j>R2LYB+c6Gce3X(_fwUI3j;J3F5obR9PuK_j%Va07yJszICzc?lq%c)p+s0 +>~Z`GiEF5QE8UF+N~hQS=hjoHM%myuN}Q)?>$1)93LRY>c-j-UdX!y_1<&As8<_1&&R~}A`oES314O~ +I^tSu-v6_{F1GcpVY?B2gYCTYEVm%f$09{dd%GJt5`!la{#53Z=8!LubjlO}b=cLX-J5#us2ZLC^D;D +Y~=sG>Oj=pC^YZwbWOOMi`#ynTm18zsb&aWS?NZj=d&)e0CyZTBTjsqRptU`6Q(lysCaJ3rk>xmqgvD +fq5H^#Wp!>cw#MS3=gPuJQJg-tb4@uO!YtE1p|pgt=T^}X60W3FD0d9?tBIv?0IuPYCf{`zz8`JjuJA +BaMCCMpXytc539P}W}igrL_XorBt0UPukI8qJ!h*PgE2)T^@Z4qcUX0(GD5sQ9k013cRTyCRv^aBXa3 +Mbh_%A6|`mr1i`*vycB}9N2qtZ4GO*b8Y|Tm7~MvfnNFjM*m-*2kPX#X*KfdILb8+de2BdxHs~KiMsO +p2AJ>ahhkP-L!Z)^tFH_5yrQB|de0QV02XxBgL=LBjZWTh!Zl`w<iHG`u21cnbz?ffvn^1UulcO%f?} +k+SW}IvOjIB16j6z4-#u+kV?q60+~j~6oGW49HSHNH4{D~l<&bHC8KLsYsY$6j)VDb1dM#1=8)oG~J- +OyzkG#rI-hk9FytKfMLYsY^|MG4`LG8z8+!a9WBx}HWIMCV9VOYz8o=p6~Fg_cAYYZq7eb=mrwL^A}I +6C`!u~L)TFf9x8^Pjo*buA<l%u$oOleSB1i$rxwSB|tr&46lE*`$UUW-DI$+%Uq}{)xpF==>4JUJG7j +haQc77Mz-SZq*t+jJofg`$AVe=x4tp54e$uwa)fF)GjAOtp)vL*v|e<;>_lNHFPmo&ka3<Ee_Q00cI5 +Hd-tlWpIQ}(TbkM~n90;ZqWP8Udj~GZ_Se>1=Oph;bSshkX3>~yP~G+O%W%J?@g~FCWxdS?v-&z}q6w +ukfoq>TqF_^Gp96F|bcQ;1XI8<flZpx6%7abbx6R(bL6?X9^`IVc6nVPu{UCPLXsyQfvSHhB(7*e1?- +2$EI_4(Ed)GpHz1!N_R#_HwN5QN^eV4|89pU<a|CVc6U~d_AiS4G+`2B#lKsIMV1Mr-ycX$3Cc`bnL1 +lq}_t%dI|Bc+TrPmZmjE0|kzusH(Vjym1()mI1a72cA>&2Bs~57hcFD$@6~Y#O!dfn9yRe+`$)n=~`) +Nq4$sL0>BM?HvCVUwQuL0bV=RtEI)e3H5sk|8$66wqEUexkr7kp}JCFDc?0-$d?|_m8ao12$-)t6w~t +cGMop|^)ksq`KrWq@s2&_dONeJd<&zP^+kx~wTSQJE9BRa$a9fm%25zy!mX{#M1CCy4*~<f9ABQjnNG +*EH<MqA@d!Fs!JQm?Ss3xsb^hfzpUU^vw)3|4CAa^)yD)8$JZ5jCeVZKqH&9Ch1QY-O00;o{RI^ZzW~ +~^#2><|5EC2u|0001RX>c!Jc4cm4Z*nhVXkl_>WppoWVQyz=Wnyw=cWrNEWo#~RdDU85Pvb}ye)q39n +$`$fax<=S5)xXYRiHyRT5bv;)K8H~3b5MP8QW<(JDUH#-?8Jke9H~?VJTH?SDiZNJJ%{BfA~=UN5_M& +XP0z-b~3oU8PM_h)yco9f%b#(fo`7_U4`zG>pLEu1QSJWL>Iw-T+egp&Ub&RFv86E*$E>R(?rE;90wt +dL3&_h9L{_<c0u+<{Zw8sRUrkB6xXl@{qpa|eF=QX@?+;|hKcJSjNQPGXdEghRug)dCp@amolt?{bPn +dvG3}pxBxzY~u&5<JpuXqPkZB_tsz`-D)g;A!0^y<iFoQ<>(Z{0%-GvkWpljEA3f&j_L{p%mIH2o!{2 +cfR#m(~^-SGmR50)AxHdzn^(X-?G&NH0`;e(2*bhQ7kj|=m`;GX*sI^mpc{}?JoQScbQLd(xI4`wuWd +<xaXjZ&<zV@!@e`6CFi{w0{Wk8>WH`4iZNO%SW_CCXgz_41C+RRp!^tMXL{2-mX*&mCj&xjR;Vq{xYA +%45-UZuV0Ka<c#eJ;2^!|9mFpVxDDlaA1VwfyksSIGWIx_MMpVBN(Q<@FPIa$%AXdY~?|%335#*<oXH +QXE+i!U<gHD5uEg(Xcno*nP-9nXzBj!_S@CnE%h(I(|vz9>|fq~{|s8V4YLS_l#}~1^;|H9R-xm^a{v +c}i^1^Z8&>p>&(6<ozcc#Nv)jwT%?+Ji4XIDp{o(D|$=!K>NY{76>#Li=0sO2~W@0vGospL&egw;x0G +31wIj$F_s(*)jBLMU!^z8gpaPwFp=O*MJN~ZIzeCP%KQ=%`H<Ocmr?j!j@Y|?A!B6bkU74L#e?q3rbG +(Iq?EkNY>KRmeL2Fp*~N3cHif*>^MIEZ2<z35}DC55m)3EL7xcQ+Vm`lG?+mkmqP2Lp^{yM2`AXpoj5 +XN=&9(m<F+GspAhGzpMjP>|Fw#0>`whgqzC#R-QNIKb7e^Q8V5s(2Rq$*_Gy(fs8BeD|j_e;m)8G(;2 +DOO_8RF)D2K8ibQ%p*$iB>D*&{_pUz)UZYO}KoQvf(+pBLBbCR+B?F9-GM&2MbL%{K>d3f1yW|xkMBH +$6do{Wmei;l$7yWDcllBeFn49%h?L84ZVr{{uzB3!aY;5x_o!LlcBhAfvGaEZaL!F*UJz>%zu3ZcF5? +3BOM8|WdYYHLIc^v%^YkE+qn<~|^3_1jf1dDD5)3|mHO<_rNu;{k16y36MZ8xH6FVM6h@vsFJEE%j?E +RosrGsZz9EJ*G#Eyg>zhqtKJOW1UPrqh8Wi!%<xAZsx@T)V6!E7ird4L03IG>4WUBw_$cNC1}>-$PQ1 +*<zX1K|e(2`<^Kw4oQm+dI5SUY)HXIVwg~&1-UI&1NSz14-5t4WMZ}!GXXP!s{}Jx(;%Bo2T2m9#H6r +z0t+OMV-bi2kRkXn#vKB>tROQvGz|fmf)^)?pf$&$#H4LuA>i8Fc^-^ywiIY=7_tr3ARGu-UktR^xjY +FX8xm|t!eRn5vcVLcI#3Hjq|HKs8gz!Vc@cVxi69vUlwc;|Rtet-z?ATh<ayXfw)h!L;7*B9Fo@W%U; +u~&TM)5>SQ4BHD-+ZsVkAJo1}7fJGl3Rr8^mD?LlG=ZY#_nRpaRD$j7Wse(Lx-XBFP%Tw(50~XfQr<W +xC)Rl+_!Yi-H(iMx_3lDSxb@BQUUj$M~ZgqGYy()aQELgO+8r@_D32tFZW>-RlaT4;7~MspQW(u)2pl +?W-r0Rcvbo3QSv~{k!pPa6BB`kIws-Uq=^LUk2w%`Lj&BrpemTbR7DlBSO&O0o!C2>4Qk7`I?f*q=`k +7%d54RV@ji5()uPB%@7MnIcICx#1g1JQheGOfn7vkC)()<#0Chg-4LW~<wCHLSyvXUTeU$IiP*&kvfu +$*_d+IFn5#72!3%QvE0@2yNLjXlFlB?xDw>_+AP@2cfu#*JNqYB4WLsD|0^JKzlTwXDxhaCCdXUZu%^ +z=wgT_dd8=w$oX8ei`^hjvV#vJX2UXZ0|%nO`hEo+`goRdqGYhq%FK&)(5;nynsCIzKz+j31@*LKPUy +)AMfuSnapwQ(S{YM^@~+jc~KHm-_;qIK3F5DTxDqaahaAsfpGsxsFisLu(x#FL`4&HtSjiXPXkpV#BO +Dz2=F8|K0){e@<O3{$=*6ucnTASfqMEdp7RR~)O$1fhFj-A=dxf^rVjRitz-55I*Cas=D#&aw%Cj>TS +DJ;SAM1hQBYSIH}$pz>B52UZ~tYz;+z6sT0B>dBxf_SVEfIR~<R(AF^IhhEJKqQ(oG;90vb6nBWKB1X +CHtv)MPn^CraEZ97I7EA5r0!<+f^omp$4{N-TFB2set68NYjny*NHzV89tNXD2+<fSN9|T1!G#zRi7; +J~2_Kl@lX>*V3uYJYWzwCW8dGXA{LYK1M8c7`F5x1)8i1ZgwQMJLg%~&O|+KMk_nip1Qz#0U0qr7HxX ++8=)4t7RRUy(Ak^lYdXv6UC<SQwU8af%)&?*Mr;=$MT9oqsDEl>f<5l+jd~3pS|kNxI2&qgE|q)ahCm +kNLk!iXJg^ZadjPm`#zd%gi${Kaiysd3z*Ur87t!iefd&D$;u)$d8y+SFT>V+#BC~T3;ov=~PfK;@g^ +0uKVSkx-7dk7mB8_%yQzCH(g76S{^j@S1)Pmhd(_AswwpzHds%zDk3VUH2uVs*MTgo_5U|6wzloVX9F +)3rL8(_z88YB4WwBNCSm5eQbACz!<Kfh6IVTv8g}Jd+eRwrFI&|;uv*;LdZD^>4T9?Kv%}6*m0sSN%4 +wcI8F_`@B>T6p!Ny+LeN$^dP!1`*tmGN0*`TiWHNPEffj}0P<_Pk7P(bj`HYjGJzR9kLgI$li4Ut&fD +XUveZmsvXK@~x^wdA(RMk{gfZeA$HK~Z{*7jlSoX`8dHN7|5$o2&HxJ5&9>kk{=>F1$N}{|^ST$UrOy +i>F}AET>L!WO2}ZvkKLkxLtN^m<v^<wDZ9>@)}jBBFNe5hvAxvq@PsvtZdqwH`<-wq{7w=>ITavruuV +YddHtn+`B%1pY=^Wgz7c@lHyPL+aTKGZ_q|@Fbcwn3P&%_bnl27zvkkPLH4HnMc;(KeE@kJy1%fZ^5H +{58PBKg*zrcwAaePmiBZU(q=DQz=ymynjD+fkQqz(0pZHtNk*DHVg&;X~yhxcD!brs<-+57(`0Z8uMD +4ePBKuAavwNwEd#3S^@n29&0|XQR000O8^Hj4?!@*U6)d~OrFfjlCDF6TfaA|NaUv_0~WN&gWV`yP=W +My<OY+-I^XmxI9VRC6<Zf$R5Wo#~RdF@(VZ`(Q&eb=uT+~T4w;O3H)KU3^Onwzx2rb&>bDEbsAHj@Zf +k-U=J)VtXKzK515k`nDWw_fZnur*Xm;&6E8%$X4#=+!I#Kl*U=@#Kt7PY#dHu8!!#>G|PbX^rix;1yj +zNIK8s`#6mfI?QI0;(|VBe~*(S!u8|hB8{g}ndLN1VwsjSh0R`|r=Fy78Dr+}^1Dp3xy&iMqtfFO_Gh +vzrqNtlZsRO1aGB4ue02fGbdlxN{b??vQqJghx$@XuD$13w`4US#l=SBCE%C`@3>RMWJvvAdx>U9WUC +Kh{-{q`|<S<LiJic8Z%s0i`ecU1X9OZw|MV#E{@guz>AS|iO=wewuWN95gs7m77Jj$1fwYywODzdxs3 +BcadGF#9zN-3AKxTxHNh?1go_FI-?{$n<a@0RM;BAp=|g}RjaW1%_xc=m-(WdWr0QKm9SG#888B%WgO +X*`u_At@?ouI?2NhN)u(<f;Zj#~IwO*nLkj#<*JhyUYvRA+g8xYPH86A=huBQsGB7=W60xfL>C9Y~*_ +8o|gg>>5SrZ<@N#G;{*;7=o4f`w~`ixyjvtacz`W^J-PmL{^gnu&c4ytgUic<v+Hl~VGE`)iu_fc;>S +58I3q-rM`^hPa5(sUbb0s*GY&qSoSs~NQ|OORuFsCHuITvuk`CzN;PU$9@XP7JC0%^Eyg0u)+9SG>Qd +6wR^pV_9d<U108JL{OGK!O;3jG_>TL54(qlf6bM4G2EhN37!iOiQT%3+eF_p5j@#Sr?Q;yX&SvPVyO4 +DCRDo$SJk$!`y$pYHW&z+n`ne<Vo36{a7@cW`~2WLe&$4_Q$v)6WN(%LM1_9S<2N`f`Ok>;BQv+3#C6 +l~(~Ai@{*ODyuA^=|hx9Q;4Uigs><UQIafamdQc|Nb(1CqXeU5R>~jc%0nL>km@+Pm%m-ga*?O2+u=S +H%g0;zeKTLA({d425?#4&T;9qRso?A>%V(>JVxJf)d7|(gYDlQ_`8<Z@b#$A^{ooYdQgQQXk={pGI#q +_(*?Eovg(dxk-UNuPx82eAo)dw1_5wHlL%HF~P1yUHL%9*kjp%K6talSuXh@8E)MwCPAKw5P3Y_D*Kf +yW1LVPQ`aEN;x->?f|*B|u)>f`1JH~Y#!9U~ay=wsp#hC_U-=+|JW5D-@6FcfgcF`3{{;G5&V01^TMf +pb!0%0|tBa~cDIz{OA*D?`Pz3JDH4CJk{tRL<2T?nl4}lO7*392|$h5#s3M7~mM<7~vS>fZYgo2$zpw +H-g=$4+kR{j$k-~;RuE!7>;2$hT#~7V;GL%a16UK?8dMg!)^?_34?<P3@0$0z;FV?2@EGNoFFXad;;U +iq$e1|fiM`zWPs10QZ@hwBQ-e0F~Tv%fot#~RLmezfH1*f%%MeaAwaSK;Q|~95F7|a*Z>D03&k|T5Fl +0vOcI!+GSgS*m?+ekA{VwH76~~VKr{mR7fKuh7$|{&JOa4_!V%DgP+|hnG*pw7Eyf@`0Z|1sR%yayFe +>^A0Sw1#5a|Tl0;?0?(^y@Dm$6bIY(PAL*g!zK0%{bHCAtR&V5l6a5THf@ISVE0P=$&~LS6HwN`kjR@ +D!&UHvjJ?|IuzD{-?XipX?&Ki3IH~qDoP95>+)j=qAH0x`}E6yXhuj)lF0#|J%BWY82gW(yzP8pzbCL +ji|dxXmu0SD6l$+th$NnEF)hx>A$#}V6%%KQ;FWH;CD_|Vn12Pzb#}smBl_p#(u^9yEw;wYQTj(HtFw +;!r|DAb0+$h!C+4eMW}{ziBWs1`p5Rh<4Io)r}7?~By4$Y3%17?oBSFyt?o2R?<=^f%duX#@xz}P4}3 +R;=Z>h|@zr_tQRjgf^iAg0wQ-@o+3E}uV7)*85ja)|_!<P<K@eI9#BLDq3W1+{vo?3`Yf4#-){7u~CT +{!VAP~-XH#b$jM9o2U?M2XDr5*QL4t#px^@_q$h2|h!$HBG;Ivlix+eK#1SdA>uer?a2val6`uvS^MC +b#(4=e*`%jS}0dJcGcE*j7Jx>O^PaMYXUA%bHqfcL&}Y)7Px7mls##MkV?+;j52ls&SJN#U=#yYIZje +P6onScA>4r?GZeqL?4E(N~&rUKi>~51SZOMzN@%-&-5Z)3mXt@(x0a%@*eL**{uarkIbqC_H)mLEfDB +@n;uk!!J9yLfuLK7qRC2Cb#?~A`mw&tEcoIV&NIO1(yj%kD{o$96S}~xZQ{1OvQ{FuaA^d)t%XW;+*; +q93u|1|->g2{#dE=|V^(F>lS%jA&|0^0wKfYcelm4yK{U+pMuoiYMBKu#%Uzn$fnmC;1(Sc#bCsyBc9 +jKJ@nNs6344EL_rzW3pt@nQps#fIVND&fx(~P;qTTdF-wwrS-dx$y?_{^$WI;cP+N<kt(+zY^G$UIf; +GQ!Jfv~b|o)D%QxwUS!FX2sBUdzD?m1yEI)fP56XIAW99hj-2al@JihiNq0jlobqT(xIi2dq)PHny?x +E`p!dfvE-4?ac2Yy<X_7EOv^(bbeEFVe|aa{aI^7BQTGiT_G@u)H*O6h{nRjWa+^CJ;0TzJFz=`C1sm +^Tk))!%B)GojdmLd2co+gx5mQOh;|ql{jo+7dR2q1;=;yaA?U8itpB+a%oYgj9P`$dtH%1#CR(enW8Y ++`g+TBAP3?tEv~GUvIxzjx%YmD$E+aN4foS41I=5Fd?L$}yyjiey;C3TFA2kAQJq7h|0iy$hzzv5r%L +O(_n_)XFS45pG7=Oa?-mXTsC+bnFD;plVYjq1tp9kFOetHLNRB1Q}ovBV1y5;KX!0^Lb<8>{x5!k$M% +7UjBTn@VJ%*9Y=K?_Ik1nnKU*^Rl>87x2Fm4y>^n*);tv%0B?It$&NXyWv9U`s17eoYnFPh#dwHA!tk +u-P|NAe{BwmeS!MbU4s}yOZ4A$%d}%dwdu?9Ua)ak9IAD-YmF}x4>5e>pQd^SW^oIYP*rK&YE3rws<< +bA2-3Q+Y{SLwDZ$$a;<9QO{#3Q87;V3us9Gsw;yopnp+s!&qj;H?LVGpBkv#(4gy!B?Oj4$OkI}Uvhk +~s83%gMtpOLu+G;cpDLYPKO?3NqJFS7R4BIMebKvU0N@H8|>pIfLYGj^Og@Zu%LSbEbbii8wx7(WM*{ +Gw}e<Sf%om)ai*n!J(cR%PNa8Wr~aJg=$i+4tw{eiC*w%Z@HipkxF*!*|F+h@D@)z&4=#n8=!jVAEz0 +o#gurWX8Cakc4g`y2$mXF~gd>POIo&`yo}cVl<Gu2uqHtjsy<%6csVdj;R0MSb^zHhdd_?RqVOZd6?@ +ZWNOHr15jG5y85j63jWXv*F&~)n71t?Spx*HfEu%1H(yM-j;*6LH%ZD^L~PUH{l-v(QEaF>P?y5Wa`b +Vo5yJWdY?AG3EETB=IW*2nR*2RbILsafoa_rAXcX3avo2k<Yt}~v3hypX7$25?AhL=uind8S^Xj9{6? +nt>V58;M3$w@VRD@>WKY8^WO<WDj}rHPIk`H2Hy#fr@5C>w@dQgQqI)&=y20_f7yL5_zP8>(dp7*dud +e-9gb#?b?5TLCa6U)CzW`860|XQR000O8^Hj4?A`j9(@(KU|8Y}<+Bme*aaA|NaUv_0~WN&gWV`yP=W +My<OY+-I^bZB8|ZEs{{Y%Xwl#aeA|qev3|&aY_g=roDMc<IKm<BaY@CY#Jgmp3IDt>#li>`sCfgAee` +_)hoV?<t_^YK#*nbJ`n(fqtoa>Z$7LBE!3P{r|+L<IkrT;_US3_~PbRd^)>4`iIys_MP`m+&*b>na7W +D8YSW=n`sdj;yn9ToFoyR=ksM6Popx+#Waa^T8b&g3_LUSG>yv`Gk??HbdoJ}F0uzv_Q=He3tbk|XrY +<dI7<sW=8G(^9w1m;WqI8`&2?1jnYdq764zBlImueApz5g<J4d@hPA2;h(K~z~4wFP&)7U~>>q6(>^s +KhzC`-#czF)%3onrR@Ekc|}`Jdt{P9F1kE<Ok#EJc}#t5x}wrH%cdDv9s&C|?n454qN&$R5h?0QOO=v +Za_tsmS##E^6^0q7+d&`!&lkf1b_ahZQv~(;3Vm)TPenh2ik?#TRj=3m_Grb*gh%bG5ur;wdJd#Z#RY +T116dP+Re2nK~gLHw_SRl0kgM?nj|x^poyyIxo;7)Ib_-jYMC-*E>;3_~Fe3P22_Ol}O-?+{_&GQeZ8 +ei8!sqK7o7OKp+hLj<6E<S}Y6wuuObNz*zCe>Fw{AUv9<W#aHpi;q~?5#qHOR7z?J+3;)%U;`st0I1{ +ickJ54l;1F<re0}sgW*mMxJv+VqO6X5cZ!eB-Zp6vuwKx=4hu62KM_<kkuf^4u>#NI~<AD%2S{sUq%s +!G^iXR|yo`K1kE~7XpYSX{My#)X!Gw~FC({S@t$A~BqVTmkOukvA%rH_@pm|_Y2DB=f^W~DE_=P_aj( +YNMZNU{F)5%kl6FZLt`Md_ajTyTTwC-DPBpCnn9`{Gkplr;4G5OV`1W$;0UffVA)4O%w+6UP_7ZJAWw +c@V7j_73W0l_g^O6y?zr!Bf<Muq>8QlB~om(*+qQ^bf=h1q_8*sehD}gdrrr)p7Kwf4$b_GEb}K@IVx ++`90+BESBlCTt;<>R-#*x_qrk#oPE#oSv64|hyW{j;x)PJAxo0%dyG-JE|y7IIT})8L>RIUdi9h7`61 +8d@M;pzV|pwi#Gw{D@_ctdqK=GpNEwR-iMx&N6Mf*_p5Ba9K;5_5WsVh&e(`s)<AEH1yK~rkF9bXnyh +2R>Nn#|43H_frNsJ;f%HQtXEGDec$bIF@V1#pwGr%*o4RP+_S^8o^_vqiJ{(YPiA90LRR$_*MC->33k +LF3>3tYtnQzgVoh?+>8xS!Dda3h+%8jTnYeKA%zF<jC;v`Z342+_VTeFaofj-du90?Zljqg_>EMu8_L +BMiYKG>b9NkTC(B@WO<qVK@+}U^6#kpn;tVc4E=u#BdlRV5kBr1w;yn6i_HhZ5XSF6Wl9|SIYO4f;<H +iCWHaH_vslE6(%Z7R5Tb9LnsL`DTI;`V?rnh_aGn~0SqQq0{~o62f&XhoN$F80VfMgKpKK}C>mni9{T +piz9)ugAd4vehPVQvs0LvIkvqgdfp#KOks|bsNFbQQ5`X~Gghok7&@n;>*-it&i5Sv}K1pbZZW;%{BV +0!z1b_&HJsQzT<|xvJbBH!@AVShc+<+6bsUdiPPzAJVNC+s(K$IBL6<UcPLbV40#EBq{xQ=j+Ngz3w# +*jebU_@jPQDhq?j_8WXV~SO}LNG#GfeQt`6a*`fX;zQ7OKImEbyZ?g4N9J@#MV;ie=c=8)x`l!4E~1p +hd4)S-II#<P1Il%?vHFg;&{jgj0d3{kEt7(u@rnN{gZ<L5klRmenj@g?#D+2gJ2j!_$^ZDS(HB3NGb6 +l9R0940vz?#{_-Pe+iaf~v|Y8R`dKxtvbn3DRC5N^2<pQM;8R{g5H?e5VXC_Gf_7?+!Dy8g9#v_SReR +9<25ht>1Qzo8p`62vRIJYn8;wERXzZ4a_OR8x5rJX|q=UxQ&9ADt^Xw$q4v`f}vLRKr_p+luupESb7m +4c8sTvbyE4C7#m`2%h&Y71?XZP^9KG(vqb*I(O{ZeD_EU2(WVZ3i6l<PKe)0$xQbt6$Ra%Ce%HR4U1X +RKF^)UMBEJ9Yh#hJ$qkCf=oEaj-1{&OGOTqZe#s8Ob60wGk1t_ZFFFI1d;CgTo*RH?XkAf$MF)w2VKx +@erCw44F>jGK-*Je~sHSONQqk)56yV52}y}@%q@cIVx;5+2@WI6w}QoyXkd3E1P@Im20BG0+mecdPWL +tKImpe*^uk{-K<U%rR{3ut8Sh5O<B2#L?g}JK8zNNz!+l_kgC1Fwe@?we=V}LV3JAbn++vs?F}1B4KD +L6n^w<oZD>=>E3((~E-o)*nhgJZE%I#4y<@f`PqousvNmO*Zp=FQfM*7qWVvvAZTAHeAchCK3hi#8p2 +6TmqD}EUN7+aSI#{Ym3>hdlE3e1mIxEiJsC>IOTeFN~-L{aMAbp$6`L6t&<!c;R<}I0)>9D2L(rgaT4 +7OXhT{JK2Z%9<FMz=C>_eSFptFGe(yGXiT*eVWeCNhMYD6A>vrH5mJ%{6_zzs!TjtIoi;<*toEj;^~q +tNu!rbMX9{lm<b_Jiu#ZUNM<{!^R`carOmX8%f8oU;~=QjbUrEyAR8zUAA`H9N~~?jWBq&TL+B*H=)_ +JU`5&x<JFopabUE$bqM!|Ykk;0b@oP{eT}}r=j)QkrL!8l6~W8?XB-#@^7_;r5<V-iw?cW%;dPy8D^j +;Yu_d-mHO=nK5p-)6_vmZ$?8N@yk-l9iMp@Vuuz3gGf&=%ZD{M9JO2kA&jewV+ZJ}wpf|jaRA>gk&_M +ME!rfkL6qiigCW@*@F*Dsr6q@LqhdwE8(??-mOSl{xheZkdcmXF=9`rcgD;=qk|UMq86l+$mF*m5n%c +EW}@;B}%&t@bt44(~4dz}AVI--=$01Ea-eCc6u|3EybvNzUunD%*)$Auub!_||H%FMu}b^B8H~T>G?J +PM+t%vvTdbvDMAXaBCD#yx#K~w)O&l0k*}SEqdJ|oWGuS-dL>Gm!qQD+N@T$*fu^_Y@&@yJAx(Ew;e2 +ycqOzwojsBGN(5$WRXz5ZiiDRs%IDj=?9T`5e%SQB(EbHO`L5=m!@iBf?#po#iK^Af-_pAov6lnOdl# +}|PxUYNPzQl=B$wTdjs93^-&|{*-Kxw+y~}}Vll7Y`m;TzA^kh%$t>@mZ<@T8^rnl8fp8Y$XmCCaL7y +V3$6F388CmOnD@D|V3KC;!uYXxh!Wj<iNFYJxa7nv0TQ-fH5U0?M1#}V*c_ZD7IjDvpCp5NXaFKo9Lb +p-rOk-3K8O#+N>?T*M}a8uEzxB%0^E7ez-u%1%+O5lGlSucY^UMv44B(BGVBjAmZ$O{|Aer3lifzLy& +t<pB_INKTE{AGKaW8GsvABlhYTIka1ZC>qt)b?bgpXR{*?~!$|E}{*uJpUsEZxry_3AWhye<A4Z<2?y +Qb_Tn5uR^emdClf(_g_xbn>ctasV{h8i`Tx_>FW`&>op%`(WeRKvxI+pLcFI>)b7gcE~D?X?&i_r{ek +HFe#@u93;Nb?MxQ%iWSPf5XfXfSp&C`L7V$Jn?iN`Q(>D@#)hDhP8Vn|iKEJ3&{i*fhPN$Fb1?OF&%T +nhUauOwl_6@K?mv?D2*XZ~KpgsWAFI8s(h0ExXI^Gk2_rCWZ@4rw>0|XQR000O8^Hj4?wKBtG$O-@eU +Mm0qCjbBdaA|NaUv_0~WN&gWV`yP=WMy<OY+-I^bairTX>(|8Z)9a`E^v9>TFq|TND{vDDGHNAk_GKy +H!WFmum{IuXN+-d!*(#p$)KgSO@t-|l1idk>}%|M?0s*u54K-ZY<4w&6vdg-hM+|@tE;QN`l`C9=mqW +kZHH#rJWd}DXj$IxO!SENV&EUWJ$`q3PG_e_$LH6_^!DuH=r<Y?_FmA<qoRvEeu&d3p`&cBC@$!I_D7 +r~5$>O!mT5eT$}Fc@605Y-rl?)dOg&BGGRDkb)Mu4s3zbuLPi2oz$e*jSm_-Z4)W%s_;5J`md36KDbe +ZMr@ma2-QqAdZRcY)l73EsjVuht1OL}$mn#6QEfr?)7T{=t>y3(=*U8zFlpVfTr$x)V;d3?8oo3D!32 +N)rGALXCuGEN@y_=$E17M4_Ibh#=Yv$T@<^Iv~F{P~}p-bTfz|Nc9L(9JUc6c>+l7Nrl%=s^L<xk_rV +fNK)p<x#%U5Z~uYQIXx3U*N?XT4hU`MJeTK9v5p{fLcjWI{!J#G5-k+xL@g^WjcrN+Qm}kPlW;e-T4P +PQw7|jcPdpmT)$l2CGiZC&*GU%3q?^u3q4jmT3AoCA=kAbbdo`R6^b{cVm#Mte^z;c5t6&YtX6CE3B- +66mD+xUexWD6hS4iZ5W3vV-0g+HdOD{#t<*juP`H3XIQj(~q&r2+LftPD9~vM_zn|Xxdhy|g4$nW*?} +t}chvzpR-#`{&!BYf#ttoz5fUk3cS9z3{D;N$1?~kvJe#MN#x2I>PHy^e2C#N^($Jf_%a&bk6ba{Anb +9(gQ?C^>%KU`g2Tp#ZeT`OfE)?oI5+(3K}l}{OvoU1a5lVa`qM})V4fyta6qt6Oqo~ao0qX_x5SbbLv +lPrCx{KXUt=o^afDa}fszT`2u1FCkS3oSOjJ~Cvs>(fX;C`vyi2*EX`pTzf2eUfBZ?$g_>D7EPOL(C1 +N5W$WJ13~oR`f#uWy`basU$(43FFYugqtU@S2eX7`k5L}YK%Qbvgk`ael4M2mOcmNeQeVLvO&CqHQhh +Be4SUdlP{+u+pRZK8%+qQ(JfLFrbO*h!7Rz*2E~7O?E7gt4J5_-S%)Vs#yqYKvC_qL}wS7m%Bou|k0) +?1vqPs*LcxTX-j&AF;*J3x>MUM1@9Q~bMdGO5tk@NpW0m;y(aNnmroZ%GrI7brKV~pYX2+zlXPeR}8= +eXX}*V6ZBZ-R#y+}pzh2!}$`7N2??O2!!5gM!g`g9U^MQlFS4Fo|#qTuWFa^>ZkYSU_N9!o9#f>3b+3 +2~)<nAqW#D5v&o~8YmfIY^0TH<+9%bF$sLJKgBu0xsP*<bA)pbXNXhc6gVLVSH&1|W5|smH`WTUx)?( +c{)#aK0hSm+Fu*ld7qCLWe}UD+2(kcF0AK-}L@<Ve5hegx0WbxkAb_p_@&cfWKtIC-pe^<=VGs9+k^s +O0Q4@%gM^pF<H)sk$L_q{NLre~J==2ySBQmHDzCd^dfEEB(06QVI3sSEHCGeM~01$Z41WGhFw8;RErT +}sZMTnHp9GGhJp<GO1fd)nB6Npct8DtSclSd0;RYXJxEer)Z8anK7hu{uPv<nlxDsD#l6Dt96nqbulu +C*J83;}VPXjio&$RbJvz-g)#z&Fxi3A6$&q^~uNaXp3LM4PJ>L&?4-nC1(vg^tv|@4fcCx>)EIq3RB* +IuZKP5357epZ0(=_2~L<z@7#5sJ9jiaESUdVE1;+9N?)VQz?)g{p<C^N^IDIU~R#A713x78ap;wU}kt +`tsx8e+M>a$$AZAIz*r@Fo=Klu>9yB%4^fW?bxdUScWuF1nYZ>y_#D}`-+aY@Va6<w9UrX)vW|tUoeF +&$`pSZ#^@i<`3<+;-P9GCREhH<CW$m}Dd9#j!*kr+Whu6m4Jp%SAYdZ{HH3p%>Z8z3^wi$LB2`36R2G +X%$t<tO+GCDUr_}1aFb<lz?CvE&~b&zcy4EsCG#ZDA9TVU|FJYX2u#Ms^fn>`&K82xUI5Op3J3vB374 +}yji+u`71(20V{d2WGO&7`tyvZPWF^kVR>iqOHpGSOgQ>w#$MfvJ$Paa*j@d3zSPk@)7mU}}-w7pw(M +RqoG(O%}P&JUM8Ap_r-4CMK4nVzULpVVpU7_C{WhIi%KG0~s%-=DJ~`U@N$kG07yD48uUMy~fQ(YqY7 +#qWLsYsIu{UBG5e=3{2!r{)>8L(YVA(#ByQNPS|IS@LldY7KqMg(BvL(gd~IWuiBZ+T0H7ugEc3XvB8 +kcGcegax4n^Qg!@=2xCOih@rq!}jg1X&y#_1Nw~yYcY%8L<=iE2>V0$FNdC=$Irqvq@M3aebJ&?`%(& +yFE9A=mF3`y(*i@Po0CQh<tZ`I-$?(x8dK2P6a2WlSt1x(~SqU}aQzdsi&6SnBm+D`{|XX)V2Yh=6Vw +$T}=%G=w-FbEs%qNxaW^Ea!8PCW>omkYf;l5}FhEpVrqe#MMAyYqAK@LYf0Udb{*`nKq}IpGD3h%Mlv +fy(AWw>M#LZT4Nkpe>u7C}iUH(<<_QEE59r-Wd3HTjjg6snfQ_w>7e^NVX3!B}6u=B%8>ayB;RmE<Es +g#jz9ZuE6(3`5X*{6ALe795B_$^o5*>?H7*5g?`VzBML!-xb2GgTag9X*kXIvdUxjDJ(CAv!*-*ecg5 +Co6C?Y#;(<vNTlx7eZS$lHpc4hrVx3uqkMYUP%Qx>6c^A&R1<uF;3~c9VYrY+~1;_ourtVNIQDsYr?} +%<C5ZnUO4|XZr{c@xi1Go2cMWydzvjGG9Zfd7+9)yiLYe9nn-#TQ=Xxq7S7g`wbH$!{auAz_WPM;VI2 +=V(q7B(Q-n49jvHakIGoA|r4jgnZuFSz`-n+M;-EHgV6m^x&3CSF$U$t^JNvvoFdltp7);8@T`!ij>} +7ec=s1=&)-$<*QjXQCTaw^j@=vHdlS%|_X=z>>VNfUnklwXvHEZ|-_A;1M?ak8sLOy8t&#?9$cE{2>- +L7KChV?y>C?-6+@%ml28k+s;H@7Y8h`K-sBbuLXv1or>hLkvG&lN8Ai;Ss+`CkR5KezdvBf)P}JA9=S +0J{JR3Kh<|UlF&Fyx0?S1XUeHnG1<h(aarnwcUAt?RJQvypbI9v%K6)k(?Dr&+q0Q~GERpQqGd}W)XL +#AINZ({4_c3I^wR6Eb>2YA%Tj(}iXhosj;J9A9bY33~5BNHwg@Mb69wu7E-H_R6^fR$`!F_jq_TFf_K +kn<$bXHW|w;{eWxg)_42GUvAU3Iuevd_G>p>0ox*LEy$1Ibs}te!D(+oNrX*KVM?#d9dI-(`VYE%>-+ +ymdEG_l+g+-3^$Je>Vngn>^|BUD<`Jy`62Ka{sQg&Ec78T^_bg?pOV63>pPC7rG?wW55qHQM9gp+=ah +HK|j9R{YT=DTkzVef6G+=I>G!h;U6B+OZ|(i+cLY&^e>xkpQ6Rf1KRY<Ctpum=%2XFRXS6cQReYiOlt +r1p%N@ti+C0#w~MTZ%lNapt$qm#>0o!dAIND?NqtgkajVh?{oBRcM3tq=wZeR<d}Csv%G)%0QW*c~^! +j3FG8s*Grax8Bllljlc=ock;-&BX)B7J#O9KQH000080P|F{P~`0Jq?ZN&0QwXF03!eZ0B~t=FJE?LZ +e(wAFJow7a%5$6FKl6SX>Kuaa&KZ~axQRrl~`?W+DH)o?q4w~Ur0+Rh9o4-opj*f79GJHhE`EjS&ms? +731aBOCs*q-;CdR4Itszv-8X|Z)<i^D((M3yYs!<hhEp{^z9C`dzSGx9MCOkB^b>aSd!0p;QC;Q2?HL +&qxg^ez6;}kzcCr&iZ^#<$P`SNVxAHbJXEb}sfBL96-TuP_Qrg%WD>*_)E?8Q-)AcH+$BTNVzCOi=PE +9O5Fh1I$mjtL!$8Pb?n&k<Hi4IQWO0|um1JwVMyk1jvT*_RT1`h2d)2GZ@_iVRZU{pbGWo_PaU_Nal; +kffjISJCd_xJqqbpxw!2Oxz3%CUIP=OLKSgW}RA`N@K#;@xOS{GToQHGKPVM=}eB3-$r>`o<P5Q?dKN +6+tJEmq*U0Z2CCVa$)2Qs4%YuR<bzAtrpfCebRGV7wHTVsa6tN&em+Lyv_R3Vde)lSn^Uz4+WiaF2T| +2pPB`EJ+s5^HiGTh@ChBra<#i`tN~pTqkZSKT4op)l;^_Vg+M`va85{EccRt7wGgFd@Pqtk=4B^$RnK +q4<fU3EDqkFK@9XA+YeqCtU@+j`4zN)y6~$z`eBVn(CR<Iuhwwb>W`l8Q5Q>rt61RJ5??HRj)pNR=>} +?zj-!Fc&d~UQh*rDX>yDntd$T+0cWfI>YX~hEw1%UuG48d7Fc=R9mffjhaT!ZfOv&7r<SfNgG`SF%N! +%nZ_ro~!CoFG>4*C<AyKfB3>@nO`6L7IZmg}=>=!;+$#fy+Uq4&V25C~O)cgeALuswIGi&pabR&ZB%) +e2nesN@E(K9;~nxXGtz+Vq8x6=;i4k?La$v9-Fc*Dm!&O$Qj;C^__jPXFP=mrqI4rV=+zHF>uzrFg;U +v3j(}3>4Z-4I*Kp$buC%eWE}sJeb)EyG_%~Vdo#mXpNly_!0huD@_|en0QkIC`H?5$^$mhtkDk?>Le6 +Vhqr741$7d*p~pGy#3fgle4i;5t=qWX$k)S#>*uS+Pa=y}J*<(+;BVrc`M7T3`t_dml%4Q5h4t8cg0> +0W+*ysWMh|^U!o4LOCCISnyVyjbruDGYf$mTqN5UW}DwZ{TVF6~La>|9Q)@t}xt2NKZ-4f0`8>bVWem +<X0eERu(b>gd^&sQhD`uThf;%l7G*C4(|fe$<PqYL4#i0>-qI{}j8i0{fg8+T27*L(Sn#&=D8*BkNKA +6*D{Lwq+W--nPKM|?Nt*|;Y0HTUuzjju_3%|d+meyXIAT8DAB#CN;hFZg09-bJ?Zy9h^ow=rK%^>Lrw +5#QYoU*=+T7xU3wL>l3U@9zBl&?3Ip`TL<oe692O+QipBpRY}P?WA9fpOs^mVqOg5Gnyyi(o2LRJ|pF +`GP4IDnV%2D_wXT~we9Bv@jaybfpiXEtmHzt4)JxGC*jgdgd@IA%4cO}4?wc`OyV;?<g>Q@G>OkNwF` +}oGw==Ygvn;Ek54*2;c0b^=LDa>GJlP-I?4he7m-3ERY;cOpVsI%^$`#Ge)PjyqFq6L(#wus2$X8dFS +$g1L@w7V$G?%4OtW$1TOzI#HPNHJntJjrYT5@i>xI81itbc)!`jf)x7hUp`_H4AML#Vnr4}7`ATCIJR +xEFv9C3;xgLwV}$Kf~&I!-xc{xp%(CtTrFST35VK%`R55Er>JE>s;PRSq3n9WOap^+mw8lyJ=Z*YWVs +P1Ddm4T;02Lfe^#v0&T11B_|)4-!7te#2)d9*i^njTBW2w6QOL;ZYoOqSl#b$r0TN+y&cqP%^cW0etG +(*5&Q(_1&fZ>5v)U4Q4BMcF@G9JQq{OCXreNr&YxqoEHm#RD@whu}`^=K|3@WIV_mbnCrx6^st=4Gc* +lq9?hNUQf`<&8)@D>Mn8MMH`FQZnPUD@crNd++-Jy6?iU+&4t>599NJ{Yu`edaIp^Dst(ZQf`3T)Bj! +V_PHF6$1JBSy_+*fVaMzOJ;>ESng!6|Bw=5Cwj588IQBS;v}ZzQI&&#=in5ls1n1>R1dV8A(u!rl|rW ++D=*TD7L<{PCoOt+QH`cO$$g(#5KOL<Y9HB=eHS%xW!LWPZqwsFwFoJ~w{juhSm6PFuK+){nKy*VxMq +zYCO+^C$XV0v|`u_+Lx~B|%%4+8aU<|Boh`LF4~+;B2~*RK(m!{$D~j0Oh_iSV}G=SL>>_*N4KxXLP9 +9*zT2FLHi$2O9KQH000080P|F{P&RcKP2B_l096eD044wc0B~t=FJE?LZe(wAFJow7a%5$6FKuFDXkl +`5Wpr?IZ(?O~E^v9RR_|}(MiBkZUopC<I#4+Zsru!jR3!uwR07BtouX4@8G8(?GrMTL&XxP?`__OB*r +XS!R-)kDnK$#^{0LW9)eqhEABJNZ4SW6ZtWS5NN$+pEV0%@&B6r0!(PAm2A5%|-Od_Et^+Uw5Pje|=S +tqy&R=!TyP{@V@qcjCDZPgA4Ln(}a**(8<tTwDkMPw?VVLxV*1pbC`v|guD1ileUCV15wrLz|R(^To* +d7#-h9MWQ&A(lh=+G1_C2(>a)?=|SU-R=OQ(!538I3~y1CggC!`jx{Slb(`Bi$w~4^`!9`Cqz%a{zg* +~FSS_HCqjmXjH2n*tdz_wW~(iJ{aD$1mGjLM$_%Djsc55wG)<%v98`nOu~=wdZ>{8!W~M|%<~!)z&{m +}s_>we-BH1Mc`3(6o{7q^2uT?0btvyO*2oWq-!+M<@lz$k{X~YTm(F04?$Z47`ViCZ3Bm$NRlb_JWo+ +Yb7-+@hJwoilx3h-G?Ziof$ZEV{UIHBuS=MZg=*n|L7_l?aTJ+QHk4J5s#7&X)f&uR$@rXdNL!LCp-d +;lPben(Hzf+<ZnO5-LFU`t<y?&D<cQg{4JU%HOd9lOsrutj}vi>mLC#Cj780E3nGrP(5J06g`b-XlD^ +cf--peYV*ThVHmOo6%t6P?x4%#~t?Oqpm~Kxig*2`YlwP`5>_svr6P#;s}sy1tl>#zKD|@^=FhfL4t8 +eEB}>I=72G3A^B*V&Gub2jFntweBn|EdP5>2snBxYwLtHnXG_%uN>SfkZ#L<V4vc*HEk+4ua36>W(1T +bh-K0B}7;E~}g>U=1(`kR|{NC;m&1X2d^iY3%|C1Z(s#c3MCaJYwI2)}NV2|qA!Rz60#%7uw?hRR{X! +^Z@y%BObGw3#C=?5zzIeV+sYC-HL*llTS#NF2L30VE)4YQBAr4JuIWPht&a+B;s$Psy-z_#(cdctwkM +9a&i7l{~+e>+x^_o((sQf#7nHExrvd!v=39pfB*ZWL&+Z{^d2T6#WK(Dny}yCoa>)Dnvc8hOdO^45b& +#<TL{`fIyM?U#a~#=bNey?2t?ITk6SIZtyb;L3Sk^seMwfmCT%LVcV5UuZ?}G}~N^eT#b1U-P*p+83D +3u`)yK9bU7<QtNAt)qMfX7B=;l?*+215p%e2xdrt1!1V~gE+Ap|DTW&GG0S>x)i~AaAh?|uus<t;<bT +ZWE(iE3UK%F|D9kCy?a2_f`i?VkPJ`yk$7;DmRYG2*%lgM(62i}Z{8!liY)KRT6WHLm``9eOl%E}iqd +GPBvG!^=Ni?dn$yGRBDXsCu^`81Aj|IM>d^<Vi_`jqWx-&ps(4so}U@{-ydqeksi9d7kudN*3ishk6% +JpAD!XVWeEtt)R?WD4J2rF!?b{V>0m(SSO&I<zN?Sxso=u|z!dG8;AHggi?^f*rVjm+K%QuI8&=5;;` +`jt8_KhuNdr%3P8?tv1=x_s)q)Jn@QFY8H<-1psn&mE2*KA#U}{SAgoWjvNDU9LQQ8}RG)J6l-EZHJQ +ef|8L4Sq2RAKX*CJ9w(05o4cO-==AY2x<B7B1=+V-yjXy2QZ0`t7mM#Ki}THS<amMg8H?J#P)h>@6aW +AK2mtd`vrw(m5vXzl007(v001Tc003}la4%nWWo~3|axY_OVRB?;bT4gUV{>P6Z*_2Ra&KZ~axQRrl~ +rAj+Bg(_=T}^5UO=K0=vHcX)CWj`(lQVwpwVcxLMCy*9b-qfGo$p^?=c?(0V;JPAtm>odwlOXwz<2z{ +ZM}}8c%654hGYBK>f)q_(8wH-qr4CzTq@8Vl5Pt6zG(bu=JpR2`L#Zlz8FBB9m;GvD{J09Z#G#lmObQ +9T~<-I04vK{=%isxgnjAyFm^7lslWSoFlZ|7D^<{39T$XO|H%E1H=?+vyUf+Gsja}l{?1krI_(td5NV +qj_N^!y6tuc6gS~5>PbnF$6AWG<>rN_`$+<=oDr)6^VMzRZ$yY5n0cm9$h8q$dPnHck<%2GZll!>5pP +QTnAAS6-{##Zv;%}j>nztoxhC34j;cXtDOQG=(o3Eh&dKV`y<(huDs@2#Q)GB5?7k_;=ZLBFy*8-d>Q +rQ<4;3nf2!2+_&DI{3A59lD;TH4Jh%0W;Q&_B|NKiZx30IaAvy}Uo-JJ9t`bOeIBQ(^Y-+6LRTp;h)_ +Im;m>b5$^)eekJ2tak_eE--3xi4&>>5?QoG{?%@5}YPYNvIv|29Dtcgc$S{dy-b13d^%XHo*WaJ&xz! +W{WxXrcd<Pi=y6i{&Wv4{6QA3@0r9lmjc9?$}r_hG!BA?K@@yLMXx`ejOS0j`{8	mFvWXA$)%>_zi +&u$c5B3Kvm0iw7+@&iPSdFXk<g-z3gJxz$h-Cx;1X_oF|-UW*20N*ngVVROQ9)KX&DHhKBKJd|3kck` +m;B<MYfjFiTfdo==k2YdF)U9g<|-S5pNee3|l)U$*IG0KM`1NBg9ZJN~A)_Led54G)Xr_+Ad`OxkVEn +-A|_t0Sa^$%~PyIL(XI7zL;g|jxg$aAAtkN_6?(-$BUb2svtaF;oh6fXNzg)Zj9PZfy$DQp!Ie;>yc2 +rrVK7b^}H!S}ENTCchvI^8O2)c3JVu4i+_^&_f)lKk^upD#uX5vqVzV*Rm-=_7Kvn0viiZ2ouv)oO`k +7I%9;h|jdEU(1P`54RRJY(~qa!2P*g)-9J=6Ngx>mzj__%3r2h@dMI7w!qz5zaVdtuWPj4XwC`F-Ww+ +x;9L74EPbJW-V**f*;#KiE18pvmzgu~E>q`*-6%WSbeTFc=Q4Hj<Obi-iTY{Uf2(sF{2Mu>{{v7<0|X +QR000O8^Hj4?Y4+g{<qQA-iDLi&9RL6TaA|NaUv_0~WN&gWV`yP=WMy<OZDM0{b8RkgdF@<XbDO#ref +O`>j33(07+>%wKAk=!sne6z`54=oPM<Ou%L(@o$OW9#_s;q6cME~Nfh`+5Up{T(w8UC0Aqk<i*ho~X^ +bb4ie>pj0gOj8F*{IJB2j@rMm}1{*rOL)PoSg^Gwc}YXJMyQTIU&3C|LeG}RriByW<y%NlJ0uqIgtZ< +e&+Yw_3wDV{27agJYfGb9)-4b$06zVcJ4X06*;~a!q?!=58^M7F}v^snQjN%iujaG7IBWnLs@~y>uv# +ux{28PqYupJ^-Rcu+`Y~YT$c^Sz9Ad(kO%jCDr<7&dr{y_=8+$~4?p|?DU6+3!C&mcajygCmT3%17_r +D_7mMh|_mcWU)40wgu!4nXrCGo^3;kL200sNV7XF;smd64<bwZgvG(^NKZ~8Ak0RF8%b!H2ZH20=Z9Z +~9t2e)C`hF{Ju*?@;oQuc*=Jb>C<%qOm619{-s+zUCgLUt$8!kbk~9gBjDl7g^fAF_{I_aoyD;NsZ#J +P09$HR?usv?RwG^8@zYibVP0Y~Bgt2PpJ{xo|dulvyX6U{%v8bG$g)8)$p@12Tk)K0r5O6VB!#pUvGG +<N*7!?<eCw&o9U9;OqzcelQ#!oQ;2cgngl<0fqA?b8>F)Tn93SS_PIDEui3#!D)YZ^d~S54o?Or;~%2 +*$0y^n{%FLG&xh=QT^tO@Cr6iqgCV=P9A2D{`gO)eoTp7J8k1_|WfRXJ%Ud5>a>^siaYI@4A8>j@D4; +uKH`YCe(`<7GdK9zZ61iJ!bq-zMyN>G%lvRU%WX_CvepF)*fdhR9dSBt}LN2TGTZ2w-*K4e8z)qI;mk +Xz01oUHP23a4wz8}=sp&v$K*V6;w>J7utHKVB;j9rc(MfJn_XP-+BBGpP|7WlWU&b>MGWjJf%(mA#48 +^`0L2s%*(j(m9XrCq6r|F4b)Bld~CufRpej9T`?7!*>6>rd|rxN5ns|G@O0kOn>9<=4=j_m(^71-1^K +m~9I7OqshOayPmN*R#0b8)|+-@Ect<F8B>KzbW`lHNPqNP04T6vLAuB1i#f)<AUE(^V@>oR`c6}-&XT +Gg5Oc|JA&U)^SgrIrTDV`UBT~4eyf)K2;3BWv#Z7h-&FH^g5Oi~dxGCf`OVBn;FjQ9lHa6o!MA2gd?N +T0HGd-b6E)u!d|S=81>aWlr-DCK^QVG8Rr9&vb2Xm}K3DT+f<L49dJGHtY*zV@3>KsDa;(5ZO1(cEo) +2r8q|q2gekzH{V{PJZlT_7pP4AW}7Ljx^9$lUGpEoTnr>P}_;m*zXyh&9dNZsZ625lc+4f<zSAn=2}I +QKBD8}ToUANsOeoL-%tf9?-phyT5^T`LT)B5UIEcYm-{V`_1&Ge60mGs_0&2fMbZeL_*TY;L15nc0mM +T)EuK9XV40isxCkV()i{&UO3U-$ERZE_$tAr4nyqc~t8oDS7%D$s;vRU!!qq(c6L`RW2puMp<gum9n- +Pw%h2#<R*IrsblF8+7tmLEQL!F3OIEHsZ^4n*E*RG>*N!b(j*B5oFYgqN(tS}hpqlJ<IhTbB%!M&Bne +BkDH3`@jT<oN=H*$+i$cCBJ(qg21wjf(DT0m^BbEetg(R9#wcYSjd~)Q4WynoKZklq_lAE^NbmXQhH> +TY5#6j)?e((76kj0lj`?ST7DG#@C&|fc4ExBn^*~p^Tpp-@St`f9IN%?xksl|G|glIlfTE2!ddDl}{P +F#0BDci`o80nw48ZVM0^k<(vQu%7MU%VR6(y2PD!Cqwug&Rc9P=0N!G(v3<mo|$qX9bIB=;U5mlbFg9 +onhW4QuQL4sZopx(kb>YkF>8Bl?rUXUSuLEl&MN0DFr;WL^xJL@o}sqWoB>`E1~!}Rzl(^Rzl%8Rzl( +^R-!hQYCevYP&kg2kT{B!P&kg2kT{B!P&kg2kT{B!P?i_RN-$<5_u@EKLh*5|gv3#-q)k{o94n!$AdZ +z#IF6N&IEs}}IF6N&xVgsc=3*rzj$$QxE&IvGN=O{VN+=x1O0sA>7b}tD0ScDLpJv8fHc5~9Nbi6mA< +ySSpTL8mNXTx!vRpeowl!rmWY^Yw<k6E}LYB+al7XJ7_j+*`SZ(N9qr18Qie{max`Sry6!g`#qBaOia +V=vIIwkx;dUclb2UJzo`U7bSRtDkQFs|gc;f7dJ&LRBjPg5uyI|LF(4uQh4Lm+YF5GWiw1QJIMfx@vv +AaUdnD22fefy9wRpm6LENE|r?y|hE1pQb#&Lm<LoPv{WT!7w!+I|K^H4k3$*pjh4_z=*K*^OSg~dD@3 +3TRcyBo~I(aiV{mq#IiNl-JGtPe67;RQMx$3=XIt<>{3vf_ykjV5gJn{KEcBZ^KH0NnDO_xa^vrrTTr +TlVu8tYPeNcQJ{FjinZc33P<$*fB#s1z!m+@R_;35TzVRr5={$?TGz+)LSYWb`c#ML;Py&hthQyJ;h_ +q(>?>Bi|Ul14=5VjDQO`1b&T2KEl{)O&SRZrqyZZ1H%J4JK{`jP?S?QW8@H>2c3vuC?|R@OSX87<Rtu +k>hvRU4+(Ko=|NUvv~x7dOtUOM9)6k!E1Ck?EE(GVwrC(#RC*vBt>!)cD-iq6cYZz8p51Mx#=Z+p-fA +{}DIK)L4$aOfyz0_096{<z=XFx@vxh<dgG1ke5+U_fYe(m!WX%Wk?)(84AZ<hQyJVp>XVFNE~??3ddf +C#F3YwaO`DB9C;ZE$6h9j7Q9R{B0R<H!`+{Q%Ioya@I3ErJ`TByAJSsJyzfCKXN%zdQ(2)kGfEXMXMZ +MrAeU2RV_&R4v21%Dzz(%|MFseW>*z+T*odtO>%{AJU^ls3hBd^Zl9pJTbU2Tfu{fbvm%%)4^Dq=kUm +{;DeX#@Q*6|=);6@KTS+){A_$+ihTddWP+<C~S@v4$p!2dJnp1oj}XSs_IFyC_*HL*sBJ@9ye)4k<7V +tI#m4SWuji&tQ=!1Au+B`iU_2IzsiZk>(%<OrcPi`R>UJT7k}Dh>1o6Z_Yf{zg5wcKO>tgP+>&tqc?O +V4{rWV+Gf@9C8&|=A9o|DVm$QKS`0^Z*=3#qN}ebqe^82|Nm0vkHX*9ov6%T@kz<bHVeF2Fn^S}#^#U +0vH2r$Wd5r9Pw;whT|2H^^5l3d{5O1uvBRIj&`^ul(S`mkXLr^$582e`p`_Zr7g=KeISd_>1q_PpJBO +hQhM;&@kW1Tm5Qy=}53Zei?$wp8_B+ksC?7ssg%@`VpT*(J57=@hgU~Oz+T}H-c)Y^Hp|a*=x!y&}&i +eH(@;Q?18)`XD1+1Wcn<p#eL^$b%L`He}B}!jprNX-uTdBR5N27*z*soN?ABX*n_EJH9ti5`yn|k~hh +|*q)kF{5(HnTX=UW$*kSFdHS<Gl7#e5}1Bj<lD;vG$TU(q0P3+Dqa{dnp`iFNq`VrEsjhB)(U(6pA=j +K@vwQNa0uoNgSylg<};YaioG2j#ZGvUuhm=OUz@;240d80faC&m9Z^_t($ICcfiZJj$2FHKSkS0i(9; +Nhu)M8LS$njs@$kd$wCz75w6Ry#3@J7h)g#zH&>TDZW21!SiUFp4XoPKwPqJ}{x!20b@>OnP}HtqC9b +7z(#eU8d4I6HJWJlBlQmj@lYTiq){M?!A6bP#Vig8&R^iPmyjg`etFW{RgMM+*Lw2n0X1=|-gRC&ObD +Kvz7sy+M5?OCR)UF|WQq9b!#Bo)wp>#8BdI*zj3U1<2ZL*7-7_4;@jf|TZY;+R?m76HzB?u=mP&f(NM +-=L^?&TWNMGR6G0pCoh<@nev|N5!i%crd0?)6g?{yQz0NCU;0FhBAa)RN4neEk%)<T5{>wSXgkLE+e6 +ka*5tyyhH`^vx$GdIJjf7b~Q<!jZo);L<XP-@MN-8a1Pt{<dmHTU^Zo$l47tcswpZ|47%slETWWVQ(U +SdI@f1)G(`*ZR~=Y+q@m>wUSiRQTM8d^h}LCd=ZIi^2S~kb?KdUv0m9t$rCB9(_Z(rrl~a_dBr}ag<8 +7S+Vd7_nObY>e$%BlB@fxwwf3I3O54=hPe0P{)LI=~>+E@Jbxf_Zbsy@{o05m@>RNZtTcvAi-4}5S+q +ImjYv!J}oM~$2w*5&Oz2c_iA$z*k+w)fGnOg6~`cwIqvvkec^Omzr&3bfy+WqhoU7PHA3r$RIvUA^hk +@urjZC$hXx)oW~HZ^;7^Q)Sxq@!Q?rWN@czv`96Z&wvJpq=GS^qMGR5}_**V>HSH8Rb2Dxe#NqikkwA +=DWWu{|8V@0|XQR000O8^Hj4?9(C^?p9cT{85RHlCIA2caA|NaUv_0~WN&gWV`yP=WMy<Ob7Es?VRCb +2bZ~NSVr6nJaCx;@|8Lq#691jQVx*{oyysG&O;2qvPe+K8php1l<z90UXBm5eRg9N<?eMt2{yw|5!N! +J5b$3Wf!|u%N%x7jkJKKwk@(<mZ_uW4Ax*fAWHtD7}==@G6WG^ZgG+8kk1boST+oO(f8F5LE;$PhJY? +}J~l?4(z&dLrX3&~|6b3zf21JQaVwb1o>$RT#iUYRF0EFiI<u*5Xv`z(}>y<u2duOpv3cF2V<@io|pK +!1T@8j2uZcLHXI%%%BGTPz-B2g=rFhoe>@)jF5dYBZWKQ7T@iw&&4E$x0eA$%0qr#*uV{9|n9LA-<Zt +{E8K#M>}|-A@`O6U(<VnharW6hP!Yjd@V6v?eJrJLhXxvyc(edAVBKzd0+=Sh3+C?jHFnETX_DBb|NC +j_9<X4m+|>PDkR%?KZpSOYvJ<6PAx^gi+EL7Aq&<r1^K=|r5=+Ah3=Wp0vtb#<{o#T+~W@OB_mtXMy< +)!0m?h&$T)F??gY$h_`eb3*jHz(^kaou^=5inV$ndXRI@|nKhnKXikEPDM;_7@q?+|o2o90D#C>gch2 +-E57(}33lpoC*MUpKd&wvHU(jVQ)!(ck0cK?a~Xpcti{^aQ!WRVK&BEhjGzTS8oh7na@`{53b!@#3C> +O4TBebeoACr`@zyY8fKj>mL27*U&s?a`#$nfBTv8cs*U!Pu-Lxs0U{D=^DI-b1{A$+ZBIXcC)yG7kL- +>6LKMb7^J2GNjpI=qi_NRLExcQ#tg6ztr(U<pAh6;tTRcXwWv`s2!ANA-k}0$ghE}aOwtKH6djCFCJ1 +bhWZ^}!1SFbL}1X3kf9QNY(uxvYBn41n;#oZqUjhbr#@u%Z{J8h7nRB)K-1I{ZrKE4j_8p+)ngqjj#) +U=i-{ofBNTl`z;;k+9hBQr1UrM2F!z_^5Gw{!_akDy!+QLMd3+^=Td7nW&z6$Lkn-5gE@Zi5YPoM908 +;JUejN5pYux>ZN!RrGQ@nU%nf<}^{=piVJ!|qXGRF^t-Yo>0jn*e3@Is^Bx}smQ>i=wMT~t<g()~Nu9 +tNXHXFAF0H|k%mv{>J~Z=VxuTvfE3%NAr=95iQHHOah%p$LO{1}aVUAak$pY)|#8Z?BmZqkP>LK1%{r +9~preYbRhaNSVE??@zfr=wYL7>GR-}{&&BJt{+WJRhwHzK10Q$FcY6tvw{gWHV@MNkBy-AUZTyB{WK6 +9k^Y%EWuU1C{bEOda*r#9NlHmIqzW1sIb4y^k=+a+FrE2!B!`*_EfKg{Od)r)FWC>vL3g1TWw}HsLfc +bvXZKYjl<(up_;GqWz%3RcEBktg7j)KsGRLW@1HAgwICxN%f<iCp);ot&>+0$}OwWy(>W@N~)|V`_(C +L;FH#TRoP;ogt8|T1m9EGC&mhnZiuyM<v{L}>|ZFOsaUO|Y<bMQA}nE!@K0iNM*4|+mlx~h(`M-voE? +y##q0SlwRFG|(3X7?Hl4Shym_tJAUt6H6%^4mkek-hw1`kb2lDSuVoYt>Y>nknZ6$RnY)ISSXp?2z{p +mtQ{e7sfUgL#1Qhu{;(c=ha!>fz%RGs#O=<gA^zZzkNHV6l;rWmbLw%$7iM+r$dwKF52&^grGd*9<kQ +;COtfxv77+XmMSYY;|4jZV%1HE86jk~5<t}Fg1&$M{uSf5YDSC-(9wlW&G(-_q1gq2MQE$X63i0*iz4 +YQrX^~;|NN0K{4wLmV2m0DE!{gFvt6kez4e!P=n0ur9mTx}9HL}=3~=xnuY|0flpYF^K0C9r2=wH*#q +>IUdb}C*tWJAk4Mw--D6wwD^N>xiwihu)QLU?nq5Ld!zc4h^W3vh(tVbY(9SnTb2yONJNu5D|G8**C% +pv@>{i3IJ#}jIHOJ=YAGeDJ-AJ+9FN%%01QGNk%!FXi`RjezfW^Xm0suF_}nlque<an{*Re%M&Q-qi0 +GeA*hFUy6S2=6P&WIi9L<TxdNEdeJ9JzrYtQy|)3G5MUbtA#Uj&?$2VmMvIIEEcYrw-`V6SKk_?CnTp +F*d(1c%8hDqlya@$)-MIOF6q}8kCT?tAu7iQ8}(XnRkff+@M8M2I(z1`QX86LRpQeTE3QNL@D`7GP^J +Ud(Wq4#*|~6zqyE1|R-7K5wUJpdizRbN>|2h4(>t+@eKYsv9*ISU%jx<$_s*!_niI1#>Gtox9@l@N=z +dFZEPp%{iwu3f;2NXUQ#BeLRx@K!=Gcr@a^RU4$C-BV#Bzzd+-37<S*yO2d3WAPLvfRS(%Rr)A8*#Ga +k2)E0?PnxWb78>IV3efKM(%hVA{X6x|4z)X2~292~nJRRQ*>-%$X;)c;qZGH~^698*!-06`rz=zEg2) +u2urq@jF>H@(8^Z)xB45)%Z`C{B%D0gNgNM9=feK3hjrwqf$N^K7;s;+blF;zMmRLlb7PGTC?6rDJ#z +!C2x(iHD;Iep%`r8#1DDG2zMLqU=Q~ySBbaue_vK-mj$o(B$~P9J`}FeV+IN6H!xhiQLN1vpD$mIkq# +>V22e`_1QY-O00;o{RI^Zu{!gHV1ONcq4FCWp0001RX>c!Jc4cm4Z*nhVXkl_>WppodVq<e>a&L8TaB +^>AWpXZXd8JovZ{j!*{?4x$sb4^%IbcPvx7B_C3N2dRL_k%wS|O7-VAa^jcHnZq{>Dit1OkOSOO?pXJ +dfwqcJJ=;7c|>1-2wEvt@gleL$fz*{e&~NcZEBcEGY~XTQEU5w4_ggY3R#;80Q40f^DeMsPUFWX==cy +hI&RS@X*vL>=?R&8HQ%hbVIpZQw1^rlS7U618THK))YmnRVbK843k3Rr&>!De;_f8q)OzTqQp=i=26U +ex)o8DYaQWMO9RDL32K!}6)AGf9cXY4V{5BnOf^*->L-!3q%exjLyWJeOW#of&?o8xMvN~MTfse`hX# +y<QDl}<#1`%{!au^L)yvO#;|!$<!jy70S42fNyMdw<v<%D^J%55ohTstaiuz0^`(vgI5aItJ72;RYXF ++5|q3|(Y8<wGJrFThw8BC!^HHHE&R8WQ6kHR@;9)f$!qe4?48rD{(m-|$9tRrsf2y`UU$LW6p%203jw +&h0&)ST*Wx0JDru|km;>pzxzZGk0pIs%U6QahxRn}U6$J}?o}F0nZH0|_zEEw&%bDTJB^Aul5X+QM6R +@;aPOpfPxdx5jwf7);)u&=yO9S}btF#8zw0kQk#<M3@L2M}mHP+<HYsquK3sC-2t#PIoeByDoHwV`#v +rF`jf=(_Ui?qv?1wblVOVm(pE|Z8Gzc{F&kaDOVCRi9<pd*GcH_SYC||avzptL$S;r#i{avV27-un`+ +3VSj6!nWS`I{U;zke%CJ=odk5R|q`JtmuWuQr!gI<{uc8qV9~?{IBD})_r0#GjRT-L68*AEcAhuGgRx +9__Z<Q**)J4g;1?|D}m50w=p%5q>8Yewl7D|TewUTp80hZ7XS_?HUH7`~(iZv-j&r?v=-eqFJX)`i3M +P@*ph=qrz1jnr6Oi{jr72lYs*6P((s_a{38GcIksFL3W_+s@iv7&xN&?jD2@+D1ozIuFkNa6OQUXMRY +2O%u5t{)ly<IVqkvGNp}1oUk$I>66Ez95PbamrC|?sOTRYF3Q>uxDF_;v8G;b*Ia)RkGp(&v5!#hGx= +rA8M5eijPf~bgt+&W1O(pUt`UoePWyKl*H<!Jxr)R@QBRG%p}nyyoG|tiPqpYTkb(~7Ek*XZxLHpp9V +0SF}#arv!bRvNac3v5O1a85mgytE9Vnb+S{YTNuts41Ab+i>dXY>c6h0L6?8uaR|0Zo;Y#H3z+4GCn3 +@|9yV1HKsDl~15_U3(H{~!pcQ<WWy@<sddH6j1Zr?w~-dLX_2~^;_1(`JznU?pDkM+OqYxXUI_m1%8R +^QtZE*-HYiv;%K-`YFQD1w(tJV(xv?ZuFf&WsbcF9%(@h(3osI%RIE(BZLg0Q~*=D>-~->FM($bMPDt +HJ1x~2=m#o`Q>;I54*1~mvgH_xP8uLw%&WTVLJSOj=@BQ^gp|I#;uIl!I!`+ZnjjQi@6Cc=SGu%v^w- +}Lxo@bb;OWQd^x(jU4NGf*?krMFJiDI{smA=0|XQR000O8^Hj4?){$p2AO!#bz77BYApigXaA|NaUv_ +0~WN&gWV`yP=WMy<Ob82aGaB^>AWpXZXd97A|Z`w!@{hv=UYIG{-2p3YFbZykr5g-XYehC{@Q59LnUS +O|g7wxXo(ocVHZDSiSxl}r<Qp4=bn|W_$$G*6ze(1J;KN!<+(Cv?%KHUx{-M{IK??vr`+%=<#;wvuvh +`KUl#5HZ?4<1E+OR5zGu(fJ?*MZ=M!?VYpStPeikzA6gz<~dl86Egr2GeE}3m*7}OQG>oZKX<n0GOsy +rS?EE->{Gty9Dtxm9H$;c864JL-lTh+V9{00f<WX7ImVCX4Y5JjA^ExS(q~EN?{aV#73&RZhU}+XymJ +}H09As@eN%PDl}vyO?PH3MaCb}M0}xqwX-TM6=S63(tJZ<H?)&61->A~LatMI2w}(<;crqQej`J^+*w +mBLeQ~Q8>TjTui^c8PD7?qDcv){6xdATMZ^OH4|%|ZX5?$yTAN-MO5NE)oU9PKlYmduy&=YNZgW2~rD +37#R(qc<Lu`^%RQHXoAKl#Azy^xmQG{-&ePpXrf`VyCTqLk-XpcVt2%_IGMzmlQYqpG|CJ^9Dp9k*4W +bRUD{79cWvsq{CKHk6=O5+s$OOg0y8*u=GmGXtzp>P0<`m^o>B09H&;lO>g)!z-=ao=(1ZZe||O*=Dp +(47xEGn&q4(}~k>5jl+QCAMN#iJVKk1ms3S$&eYJM>?hci1um}7=^U<pBdU5Fph~LA6I0%`>7sAQmhi +b2q^@;A-*IbO_RPUj@iNVopcu{MSq(Z`k>XM-`jBV#n%Wea1egSmw>*Dq*P71mD*U>Q3tVC*X{PzW&7 +P#n`rL9a_*u2xcAB>a#5=-mE2Hkvk2C{(#&j?T!26NXD`txjtsxu8P>(A!^|`}&0?@!xL9d}QQP>znh +UlM>n10TJsG7Z`w+n7b7yBd3vfOSoL<S^!8Y1yY@#&mpKTz__p-Cy0_?jv@&gO4H)TK18F`~guRqK@n +22#_GY89NUnfLPD@}gYYPBHpwN5Zn()DUBuz|3EFm6loJdQo)d3DXAWoEaJj<M0|1yYj|hgR<2C|q%n +>FR;V#|kCu2eght%i4Or73T+<`SGm2r>PTJk3)~tK8{jY&<4g_iPZ2)8TQdH7IK*5FH9-G%r4KEO|K{ +X4LeS(n2D7*gIf+f2Ojxi75l4mz;8bJTVJ5QH-!RA#=^wCiA8Ui2kA?Jc1v-)baC?m8!=JOy-IHO*$; +!A0CeMUKw83bNzQVBFZ`)-fPlqx2=eh@)LZ@8Y%)7cnztd6s})2F*&<%m-~OTr|FR9S#w&s;1txf1*y +K2S+dP3eeNqY~*_&CeOywr=Ms+p03gwI28c$qr)IW(>;EUwzft5x7CB?vX0Ch%->g;!u`MBo|-2WxN< +Kq2yn%;`#VMtE<zk-B8tP~UYA6|BnPQ^o7ZgX9oLKp0??ox~|?I$G4$LZ?ne9*~l%E!Kpca2Z7J%tZX +uNjd__NTn^Ix5#*Wiibc;8>*D3kp?}Ev_B?O6@XJYk2pwWb>y0dU~nm*GNz*@sip}UG1N5L-G`b9Ioq +9x33PS=d%4&xMB_y?|k?VZc?xB_Pg$2eE;EiebuY=UrFOJA>-BB!#9;*w_m>DF|9N<xhGOAdB{Y-;Q4 +1-iSsa-x!t+zxev2GehhoZ`?sL@^7XHL+vxOL!kX<%;i!tEx5=KL^(b!oG3O&9d34tQgXrp+I17<gzV +W};%e6EQup7010Z>Z=1QY-O00;o{RI^ZZfJZ%W4FCYeFaQ830001RX>c!Jc4cm4Z*nhVXkl_>WppofZ +fSO9a&uv9WMy<^V{~tFE^v9xT5WS0$r1jpUoo-j0;<3UknQuy<*U*Q$mArX5~v)<cEPd?FsEgg?CeVB +F3xYy(=+?d0Fs=fZp&9EcDj3Jdb*!}ncd$vKkTG^-tDoA?rFQ%Z?lt&tJ7cD2HO3-eKweLb`^-3@NAc +z`V-ECWS9PL!gXzS>xp|FNQ^jhJCHnN6CQFW^aJLA)Y?lVbUhIYke%^+?)pm}Fn`KIgJ{tAcqkov$?< +Bjh&<ugq3}J4pTW`()DH+|*M6YiI{~*tK4IgPlDIyV9gwW$3RBHPRy{pntwy5>5k_*09lI{OAzI09xa +7e-pXi;O`d%1_afJO<<-rl&Fm`DNckEiYvp_6ZoneI`3w?II3g^D3DEjji{<B@5#{G1^N<*=Npi)<i1 +3OrecBcX7O#0LC0V{vYR(`}B+hYNr2&w0Xrb1?WlfU`__!s^}Ojq<O@+R0XZ7bx#LMBQ+@7=NsF0mDM +&OIJr`s--y3J1&=!r`9e%$96P@8mpFWrr5hj~Bu^KEx~azhzutoaUzE#~aqNn#pXj#2WU>s&+{0$8j% +-@c@fnF&D=bB%GE}1=&s~On6G{9EXEHAP^gUfcdd8XOZO7$gM#FXxWGE;QiI@fF1WfvJb~MH^;rf$G4 +!xQD77YtR;!X(iISlT?MumuCQ<jxNP5?z6ZzgN%x{V_(-eobO*h5zt1{XH|&^QAKwhRr?(f!H|+ZM=K +8ANws5$dCn_donv|TXcnXmVADV=d*us^1>mPBv5({)EY;NCk9J9mWRTE~zLYAv1ouTV{Gqqo^WD0%D# +FTk{SYr=?fbGCM*G?Bwvh%IMD;%rFUNu2vdv`95pbz$rm_l^N_5Gm6PJ9^>>E$ta8?9!uQEwhLnvC7{ +@n+M*+P$+!g3tcmix)5UF8xX5a;U<C&OCwr(b`ksIZN;+10L6w5?h@MXHKR><V!dw6tSnqpx8)i1R9M +9x4=3YC1-#kYj5w!j$kywQPI7tA_j}1mmg&0IbW}qTs=p125&xbZBI?kstfy9tUKUSn>IjOBuhE88ab +9OSO9<%TROhd%ibQ$n3h4Z9hv-c{TU{mB|mYnd(!}`v0{Lp1%9+#2L2cdh-pqS(&ynhja;jdn1y>0Fe +Ikxddn#6hj85*yRf}kWY2g<xbWl}BQ8v;MiXA?6lZBmC!VM<2e3eR%_8ZAdRHJ@j2&rM`sK-Ke|_E3O +x!OK@5Sb@W=mCn{44$dzyrM*DVzRJVQe&7BZlQ@F$#NuE85~x%d)g#f@~Uj4tbZ72Jpto;Xq*_A$V-y +S?uWm^C=Iw7p6f~?*n+D7vi%SUfP&rB9!EubHGfv2b0i$13VGLFgz6#yvETb!9)@Wu9UnW@{Y7*%Tm^ +K6#q<~h`lo?>7YnsO*x-brN7|A@d`UC4?C_ed5KA@22l471Ob<k8}6k#SASe~d)>?1%i-YtO}qd8>f# +Kf4Xf2qgYUcN?}sNJ2kqfmd(b`|0Hxo-;w{HtEQQOf<I1PcU*9z9pTBlGUn+X)cK>uEb@g-O@bF*%{{ +0}P{m|__PW(@)_-_AdNNktK*C77ABBWn`^XAo0^=9RWRXzxB;y=iGv-PS~sTEWaKN&--#L(Eq@T$bn+ +{N&^#PE6-!;d9~!(9w-N(`@dG5l0wc)5$Ad0683vGPq@&V*0da7chX99AWFr#0jq-fTEknDwp*Vb<}* +MeOeM5V<u3gbia49L7lUj`e(xm*|Q#5=5WA6iKvc8@VTVV-`E}!y&@4Z5|Z_$3sboYbF3Dg=%TW;hZW +kp8HiILp0G8I;>a#o(uJ^Ivjd7e0_LOns;u?;e+rr2pH#vHh2gmNRLUspt0N;B(O^lW#Qq5xKAJ#gC} +8KatLGFxr-AWk!>o8-%4-NVmj}{KL;Xo-a8s4Rx=vakcBJ6^gVaQJOCU-roxCv=UEehq%8yq@}w~jA2 +<?C8<Bq{xyr#aM4$Lhw7?(0a??hO*7AELfpQo*>9NKt8J6Q+!)oA_8=G=W^v!5s9ov;#EX*`qK1mZz( +G0U3!9s@I9v=5kyWK5zIj&T)qnU1WyQ2aIY@$l-Dj}pKD#-vmv#%B<m*k}OsUw?$5Yh#<8*DJtfqh4@ +9DzIX?&#$0^u(2+k|as>OE^a&GMneae!yLRk8&ilFJttl=XgqfOZG=$el#MnWUWbXcjla|A42bKH{!_ +*$QNJ?qfsiy4wG^co+42V;1EbgZ0Rbm5FP~31aaz}GMjTDUEjc{RQV^!DN)u)wy;s&+t>@IoF&PE=&8 +o_-Dso@A41Y~9ppBR<ODSgB`3Kf%N0+y`(UrMCsX!C=>|kS%;AgJQ-zjAu8?d+sMkSWSb9`qn(B(c0n +<Wy!0ida!yt(8-t51L5fg9GwgMhTfwz~ZB(W~{ss@|d!Xc#a;BNqclu?@{6|<|7jD&)GEg{L~%VeYY6 +M+n4!y(7H^ZW-CDOZ;$r7)wTs$42Dp+}$%)y=VyjHx&a2ms4VEuu_uW&5lfXS)PI*iZoQR+TH}MD@ni +3dnkJ0Jnoqff@3XO<0<hIIFr6vLIjxjyEM;=vmtxc5=c_I*f$Y-=tHnk#2$F7mBss@1DOfrYHHQ2-r; +k_D+r*o>wa03gq0~u=Ud34_m{F_Rg8&XN~owePGmGr^7mJ)@aZ_rM|-!k}45~F0XTMB5cp7$^DoGyq! ++QI2N;QT)Xst*!sgLe_TO@(WWZn^Vdd${;QbvrxcLr@3dckSwqzr$p{&Vk2)v>WK#bQ>R{Ewm(A9}le +F^pI;xL)v+?@n>$;L&CmDYzEotp&O?BF4Eyc#7Y;C8OTFsY-->W5(@rTh;-jU(LdFR~jmddZ1uM>x4T +OBgzio^m}+(y646`QaBAL=tCfw=^hqH;M#<ktNuTlAMCr1#c>bSgPcn%9KVQ;y3jl6l0S(k!GMNOnSp ++US(>J@Cps*98P+SSlr^vSMl@ZmW2klSGksE|3@MoSXQ$z6+83pAjift|!ce9DG9(eq_|mdIQChND`d ++rko^G{l>&UmAP*3k6*6Z`DderC?WYSPO{{3dGQxhvi`_TkbGUdY^z>k@t^9=qc0_U(5Eh`5G)^Hjat +kq^(nVR<EC{^QY2M5p_+AESFJEEXD&RIvX|4f@>EE2bHd*LL#dVEuhnR^(mr7>!}H?|k5;ElHl<NFFU +6HH89DQ8GV3XpnJReAFtfyQS0R|4im_8u)^4@j_&6~7gsHMr1z>7Tw3U3v+v;51_Rfag!G`4-k#iUNZ +Cp$8le#ZYL)~XjIm4fspz6U>p!?aACL+E)9-+&gmqXI3u((x=EnMaNsxp>rrY?`^&J@9~+4?cJxqYfa +l2Ul$>(Z8*zb;)#<F#@>30F|fcB<r~fGu#=qE54tx8;Np6%u7Nl60xmbtXBS%cr5G?-&epCBGw0*$%B +5fjh7l*=?!152w{~y8l%uG3Tih6TWclH!qLIb4yMZM$^#!<6=zr6Li6g;FirBd3xgF4o$1cP~lM_AdM +bdaA9i?C$lL-Tefsvw2la0)?_6%MMqD^O-GGjUqAiZFL?k}aJY7GYtj-8<lC=*E?uWty{q03;?1sO+? +!=Dm&o6$r5mp5!G_d$6Mz2Vt<3!7Zd$zG?}gBG(dGp7IjBfaF&}*{&?!l|Jas2_rMuadVbU{(pWYb*) +Y`4oqjR=$Lsw0nb~*J0-IgwVKlGQnt^Hea4evxjp{*TXYc4p8mKtVlHl;i8R7lnU%(eE8bWSagl3UjG +PGBv6-x+`5z}X#NNt60UiG_@6Y?PfSe$fI)$@y&P;_b6D->Zad?9)dsdbSwrMFIv%KX8)2-q_Xt%Nw$ +>OP`%cEN)jDEq6;}P53yPRV$vaduqvdB!8+D8hvMcYLg!!O6XKu_h^N_g3d)xU86h=zBd&dTO7DzOGg +OvJzw%Xt$5s6IL276KeJJLBqUeMttBT!RyF1_)S-F7!}TlZ|4KyDNRdOE@>Ll<3;XNPMA)zz8|X|@o{ +QXMdz<oZdXn3LwL#O8Hz4fhh>>Ui*{likvNkDg?cEOUl%<TqITAvXs(HenwWims$AHfH;DuQ;d4;gH# +^(ADH07h1Ek$h5cR@ut=A8$%&u)?P#5eERHz#TtbVC7jq@0neO}eSq$jPMrK%W2_r17s|U?=kGa>*Sr +6^>5dO;)nL`+OTM{X)RhV~iyjg5u_KrKD!XoBP;<^i^G7(qmijyXSmTlk@pCV*Xp9r!?qtmXjqvIpDq +Ub%hlBO*V_vNQ3CN9c$CfS;so4yFHz9Bog=hg1+3Xs+=<UOyR73a(iy>d71lxTY7<O(KRV3<_MdpvBV +-;(0wkKbKjj*)(?vCSAC8)d@>5h3nwJbOW0zjn=m<+l)F953#=JF0^Hy@$&RwU<ONw<x3WdAKS=h2ET +Yj5a(h-_c%EAgtcysj_?hfw_*}ONdble$1TlL4CtCVW4Sk1pc523uBmW0bO9KQH000080P|F{Q1!pOJ +w*fn0L}^k03iSX0B~t=FJE?LZe(wAFJow7a%5$6FLiWgIB;@rVr6nJaCxm(TW{({5Ps)ZjFJ~fi3_Pt +l}l5VfJsonMz+yWo-AXJVU_hR+Fd85zrN!Oa12B}r>dXgnfbo?=Heljm**dNvY#goOeaIz@ojjTy2C% +=li17FB?M~(SFsfn5r?5n5SWHc{>?a#EU8uylg(=FLMMV5Mv)_YM=m$0K&D{Ma8SI1M#s?x$&_WeU~y +!a6q;VuMym3Kh+!^OWsem`1`}9rOUBbwkt(=0TS~Py&>nW6e|L9F6lcRN7;p|=5v##Njp`kfs*<4;Mz +LjXq-yKVJy`%|k$QtU<1587xCT;az(|;H&031OergS8OBJbY(WO)&f|jZIAYl)%l{v(b0EG$D6+Jb=K +qQi%r6PPL6P9iZQ!WxJr%-KBWqQ}cXJ-LZ)T9)iQJ|t~=J}Gdn7~sOqtFPEhD~A9>qDo;g%H0M0%J+^ +Wp^I{8TpIc@2E6c;Ku6jvek@TkP6z7DfH7cHwCamqPM_l8fu5M&bHuCX#z}?v}@`;{Xv9O=m)J4ED>^ +zY0kUEK(X+361=#J00z!0d>we+zzJR-D3&@+UYcLU#Ig-%L`+qwNSG}NCxV&n4POW`c$!Qn!E2#@JP9 +1z_hIaMFo5~M3ns(Gbl|~!;muv&wg7y@U5krmo@?^H#VJu{k~*27i5S;a>8~_iO#*oW>*yV6%rP?BD2 +V72*=&DkhFpqOSua5j4SfKXf{>;QABxfL(Dt27msk$-?b6c6Ru{hXDJT+eoJQaie9Tg!9&;&G7oMaxM +d)lm*xpUQ-@ESr((3~(e6oD@fbERF^N3uwTB(v5Sn)bi8qG$@B~?$;D?Xti8GSVK(pU$g$Z6^8fWpJX +$~Uxaq%w-vOknx8qovPAtaM??D({}V^pvqRu7+gGSnF&Twg|?zp+5^}?#Q0D=!toxb!o0-wHqSo9?&@ +e*RexdG%uWc?h`yh&-&6T9SNoohK$Zl7`8R?v<4K9>956oRC1FU^~=MYMcy0(zCKAx$j-B5l64XK +G?whYUz6Wozhej`HB%`=p7uevgPr{o>_yx#NfV@<s(_aC$pl*DZJO6pY!MU>&OAcZDZ0xoisUf*7P#= +s-7%A?h%=!-+yDPmHFb?IOl4C!Qj11P@sxHw)r-@#QpyNZjkP(?>w5crp=eC@c?z|p7Ngg!QQ+p;~+^ +_r;;ZQN!1_S>)=Hwb6;31UgVnr{s&@_$P{34EgZq3mOK;f%sb@W15u1G>?t=?Qk!-xcjhoGXRGluN}? +v^((oBix*#4+S)~@TW)Uw_3+3_PQEHj_kl51{3G`{&<!ps8l0G$`TYY7D6h!|KfVVa1n&Ti)YizboAd +^d%VO4rH5rc(r~o>x!~*#%WHLacT#k-F~7mDO_??Ls^0SE0ld08!_k1(qWe~l{(Y*r_I~6V@6ScoasL +2NO9KQH000080P|F{P)Em**SP=y0P+9;03HAU0B~t=FJE?LZe(wAFJow7a%5$6FLq^eb7^mGE^v8Gk3 +CBSK@ddq`4z<^cb5!;MhAk37nmrhm@d7$y*rKbvCQ<G?!R|APB5&h7re68nh!4(F^?@U_(!T%<P=tDM +wPe(nN}3mB7BxKLp|fnrAkgnE%scHCk&p-$ZDpNBfdqwBvjV6xMc;U5trdgp|*aZ;frRj&X^-L^|>7J +L<x_9(gnkQq~!X)_%KJ3;D#Iz#%|W8>#i1EhkMvtcjNA?`8>V7Kfk_g&A;8%?S<}lZg()hP)h>@6aWA +K2mtd`vrv-;*D?bD00031001KZ003}la4%nWWo~3|axY_OVRB?;bT4CUX)j-2X>MtBUtcb8dE){AP)h +>@6aWAK2mtd`vrzXYw4a~^007ns001Qb003}la4%nWWo~3|axY_OVRB?;bT4CUX)j}FVRB?;bY)|7E^ +v8`R!wi?HW0n*S4<r&B(*m40qjM94sEv|3v9Q+Ha#q|fkI1^O++FElCo<A`R|<}CD~5mV0Ex1a`-s&X +6BJ+Kb-g0oG+z17it6D&aJhIX0uuJPibW5V7r#(8XSKR7PJze4Yb+_sAVId<8Ez%s|t+hv~gqtZY`vN +N;pwEQAI+Px{_*Tqv*H)c-u81%c2PIc?ad1n_vi5x58u6i$)AXU*2w<%3v#1rMGr*dG-DZKinEht!i1 +}9s(}d`^kI)$bj2Y$`{6$>>`Rj)}Ztl1jf`Ey}|iv4$=)FON>dXu6Ixy-GX%(3X42Jksm3Fx_7-1MFF +xU4uCJMZh9w*@I6OZsT`WA(n+o6&?||Qh@z2B7~UW;<4UvYxUpjVwmUoQ(#eh$8-dXqHjp-MSKzp@2w +W5=ZCR;X40Bv^{q^d!DSAhMya|cHd=IPs9Vb2v6HydZqQ*>HUn=B+u9HS8VdtQDEArU$6{nd`43S3vU +j!1SfFqm8%xVBw(krHovasY!tc0<0K-XyOivu?$ghpCNqXEFOP)`|>$6N3YWN?E}{uP{t74k*c2aqhR +al1~8OFmLQXlI08?wqiPuoO@RpYfNb2XC;Xnnw7%(x}Hdzzu8A%cJ;v$X}9~q<*eOOhUn;8@%$vA!r= +Vy<^-MzVl3{({#^jA*yGCXJFTuyAtbH_ntChq0zb{RxIBL>|E{{se40B0}E^j<7C-4+%!Art*HA3WDV +P3i>dhK@4wiz1<v%WLTT80O3xB)A40gSY_t_afJWH9aTrI>!fP~uU{UT7h&Z&NKUN9qmIRxDVH$~ee0 +8E7bD5-bh~-M5D#huD7O-#Q(I~##gPTx)@#Do)29K9dFT~;T>M3TJiI%&BT$sNCH$RH@yPpwgzgv74o +ED80CwxSa3hR!%N{9Yyxl{>C$0q-bS$NiKf1)@eVHjQ8l1}>~LgOCkb3wY1RP2#8H4>I8=3Z3C4Mo@) +d>VRgT0BQ-C8}*FN?A)$4dOrUwV=J&OPWx1$<aC7-&0Nr{q{1uyT1o%soW~8eatVf4m&jXaM1ThQJ%p +c*x;|n=ncHA8my>MV%g8b{I#D+CN~e%ET7$c@3D7$=E1kui(@(pXX$}gj8|1Lx|_uQw24ob*IG1P9{) +~$Y}eRVdriXz-Riy}0v-hQH~C{)%EBp+rYFHl;#gr>IO5Vb9H4yU6OZJ`4UQzSS;i^pzFFBk{_zcfVX +OR>((kt$`rr2eOrvbs*R?QrZ;-WE42NHg)#zn7kEfB74h$A~{4T-6W|dmNHk*3u;6P2o))W%f&ftOnB +Ok2qx-^=EyC&793FecS9cpCFq~*@-lJr<7{pBE;ebv3cf|y<@%H_e$2<P!w!r(Td*)h0ADX=hupI!-X +_Up};Pm2%Wwi0EGhcnOjbT~to4Ob7LKS=&jG<oA~PQc;KfEMm_Z^A8zQTO5}Y`Jp26zAmfp}Qxb77Mc +ere<^BL-~+pVa)!t3S2z9Pt>@8dA%dSLne!YzVN=4=MWbK$zM^#fmN@CY4kr(O9KQH000080P|F{Py? +PM(6ayl0Pg?*03ZMW0B~t=FJE?LZe(wAFJo_PZ*pO6VJ}}_X>MtBUtcb8c}<P6YQsPfM0<V3LJBv^VM +}RKM2drLOd17J9*eS$mz-|R-paQAJ`#~2)i95F%mdVN8I-@z1_y~~XN<5zwLk+D>rLsPYF?pytONFmA +aF}DQ4Wa+j{AE1-fZE-fn0V{>A-PhV+=fQxx0uOOeBXd`b(X&l^}{8dZW9|F2=-*^(H#LRM`IH(AW^h +Qumrf|7}ff9Lr)+UPkmGpA*V5@2{kZC3+9fuv)t(SFW;OP)h>@6aWAK2mtd`vrs-2r(cT$007(x000~ +S003}la4%nWWo~3|axY_VY;SU5ZDB8AZgXiaaCx;>QFGcj5PtWs&`cf-a~!e3ZKk>50gRi_66gS#T&L +}L6nnwC8rdg_qx}0@$qvSFzG)un2SEGj`*yAU*5-=%S$+^~lPK~b<5VS-lY1&u3J212+<upgmSfWY-B +0OG0!di}TtbIP05YBU!E70jHA|su*|u%15+=zui+3rI4R8=tfh5D(azdhn3K}U8B+6n8s*L1<amDxsB +WWf~2=OiBG?iUz32;jirSjYBYvA2I`_6KR8SQ3bbFEj`S~mn4(Huf8YD%ztOg13)SEt|qVq5d2|FZgK +TccoFtehL%X~nQM)r2Ywb$zm>SM6Ji;3Yuq1SeYVHzJiNF#K(A?Sd*ng^J-(wajOorxWAe-XAu8863Y +cf0;D}Dnc0v0N%m_gF&w;?e-<@2m6$pG7dk>{HSj>N~y$NaLIh#fL8YW7euP$YTYnooT)HuNl4daTwh +m2B|zlv*(hM^V!&SlNTEoT66|@W8@*3hln@Q^-S!y-cCiw9%rj0Hmx^N3sbaX=gHDV$QpO`VQR|$@nF +8n*PUNUG(Tf`Jlk5e}(JN%nRAP1+2Nq7juKm3OOm);+XM%7P$0A6~#QE*(i>(RIl-bqALWPoAx@Cv<* ++zZ+L(?6g%{HKPT}H2Cxb2I*@?uZt%#lW|-L5xqCuAlrJNWqNMQGrj6n0?@Zd@_6kHqo(Y4#fGsG`1~ +FP?^r@oU(A#U2g)kFTMQE9$5DvSj`kxE*r%fBM1D%`oca53{_l&&B&pK<hXlrP^qUC7yI_K>CgW7Qwj +IN(5X3+%1A&RtI_p_#8~9^QRinFLOKwXHuR49)@?pY&ARu-Wb6DJe-{|-WuTPezFScz)e~1GFa7tca} +k}$SMJRw(CJ#Qzp^_4rZF-#OHY?6vQ1fRC)k%v_8q!#XRD`##F?`j87+b_bYQ&VeqGsf9F&Ho>dVxfL +j6Ptd5Lc1r%px5Cr<CIUa*j3jwbJ%CpiK0&glnpH;<pTLI>*j>&IoUKr8n`%iemYx08E<OQ$E3tp2Ky +e2PrO<wStyx=u?!TYsdaGfSIxK5KBT&KwnuG8cP*J(0@>ohsSb($>UI(1Jh)gk?l2gE`XODz)_Pacj3 +TinBJzIYf;%Sf;4K{%Z1KO~N2>1U6Dj}M}@r9F6z8AG-$Q^QNFD5z}}?}IW}z8u=tzfem91QY-O00;o +{RI^Yc@N9Ew3jhG#C;$K>0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAVQzD2bZ>WQZZk42aCxm-`*Yj45&q +qO1$zELR4U1@P9IJ+t}N?fCysq%JL9IdhXYfP#4|<k2r#mGz5l(tc#z;jv@We@GU8+R!|r17?E=g$8S +`YFhVz9aA9+mWg2v>WrZQq{a=3qRG$5z9XXL0qj%X$riNb)zg7t`Cj9gxfCs(%<G7BR%*a?>jPbEp2y +%K9-FS*#+nWcP51~e8SF;7Qu{Uc8S4X;jV@S?A7<vN0g>c^<9!dS9&X*KV|_zrG+croS?Pt{dL;potc +!_72`diYC|(3eceot+(vIV4v+2CHXAj)a25T&kzXI|Tj;Ni(q51^pnRLV%Siqs#l0CJ9SD{`@lwWLK+ +oIvw?kF9o4QC{f~xELadK;C{+8+3gV;$S|JcBT8fnAxdb<Vo8#ezplxQr-Vk4f}&EU;d3S#=mZRgryw +ec@_EVRf=@|jm4=de-46J>2w@~}XUZZrr;<&H<b-Fb!W#4V8%x1462?N(IDkoX&7QIu@%=CkrSE%!MK +b_YZcck7u)4-o{M#kq&U3{2Sv+N_2w-Lj1F5xKpm#8GlEOXsg^^n@0dbWJ64NDI@|lB^dkN2DA{WdKY +(uESJjhkhx`FRosiBpx3K+8?pu@t29mm@_lQ?+pFdFB$m@=8AF)>nJc~~Ru!ZFO79PAxU=K_A-y{z!6 +6grWxAf%C<#EA2kEFsV91ab_*;8?boU#k%LzFLe9)I!Qc9PjPHoCYr(e4IsmH3;}}@0ScRKjg94J2?F +F(cxeJ_NTqoV%?u|CSut)sQndBU-~#TefAnk2UspLp{8E4R~d!RWJ%{?U`&Qog!#sGgIOEGEPM;8Yj- +t><=_p9U{%9Z3h1kojho}SaR{xxc?7+7G(39gU{+ITpk<X*0T2rCcC8RxU7fbWibeT*;GWJ;U&rU8o6 +r9F_3ho{tOJV@Xmh~gZ(+*g0?LRRM2D&fji<mZ`E#IO7)f)C?-R)RhIcH5h<D5AP5|%HtjH{xuFHZN& +(|)abLxJe?{i7^8n6V&-X`oMO?g@dGNb)SBT)>;;HFWmG^}T0{}0GIAYd~t&O{J#!KS}=CTdQW1|4Y7 +@9<4U($)+ta(Db5OH^~kxL76;Tf&0CijWh!B?m?8J)}l}nDUjt$_8}{Yzz}Jy1Km}!GfkxRhVXa!C>V +BzYAR`kWevgdn#ohnIJ=wOiIJjP=n;!K$>hv6-b;|a$66fxX!XTKsF%(R3}lc9cY9<hJQB`h;_=4eiC +RCyw2nP{=v!P{?XCn<Adj&96vrz|MR~4uIoL}{=Y~4e?4_U;_#%?B}h3?qh!h>a%(&w7kEF-0^^w)=l +XWsI?fZ0Gr&<!y58gK{$HFS)ZZ?-hTNel0Jm!)!PhZgE+IND_q0~RAuhq5o&s}CGhhiOm>jCaF46s6y +{36FPnQtMwOXBe-Ktfq?_i~N%Uo2ic5Xdc@GOE<VMLh#W<r-FaC*TRnnjpdGpzlpLK8z~l@W3eV2u3Q +9VGzEp%=k~(!GkZ1j7hThDj^qUl}=HhUNAtkE&X=#YjB%S31=}1y~UaEg23;Czc(@oO{e`Au*-VBv>7 +zpDqa2Ggu<eEKn^hwjd}0p}~q(tRe>p-Yw}GR7fUNXGXC9gYGc`U@D2Km>qB}OH_kdjOKuNY%m{?@p= +xXlRKl|9Y6|$Jdkie!J1HZ1c6Eq6Qh@<7IUjEFAbxYH=i<5v_Cor1*}Eih^n-3qJ|6I>3+R#bFMfHQs +InZK2O}Lr4_)LqFK)8S-l!I8wYvqVc~L;!EmcGwff3(eYciHY6$ha!6SWTd930ZGMZsCMPeo2tWKkM_ +T>iunw)U_Yx1q^S{1*v?51G=)G#AzGo^BY<bGII)^iTK16V4MRieTjDC;YqZ7qaG&37J`Qv_GaiWSRS +6Vgc;6eFOXTS&`LrsL2r3rf{<qe^hKOxrqwe^@&8lEy`&3MgDab;}f6#*9s&xg!@dGDDv2;WE*?2A#0 +g+OG;5P7W+@I-5cDRlPf;q<Z6|14@KKWQvh^j^joFN!m1FxkV}DSD2zrcWAOgowFD!48DCXS{zjukbz +<z_YDh?B%%_wd`qCLERJxG#}k}T;2t}-Gzy{Nio%xys-WrxMY|yaXa=lxh`%N=-RxqfU?p=B&JDKPIo +lk>B2+9ldsit4IHA=Ps!S^Kg^O!Q2|2H^XZp3)mgc7egPY0i<jx;mULF(AU<{NsKE<7Wx7VV3dUNsN{ +LWDn`oO^+AsB&HjI)c+EdW>7H=jqBtpHl&dol3XWN>;p8h>&SX6h`(9*OAJZTdHpv(4J@vQ78H&17=5 +SzEns)BifTyu7~O44~h)d;ew9=KPmQoA&3?hso95XfuEjXu}wP9kql2-?nMrpI_XyH~<m++CF)(0BY) +O8kd;VDk=QQKi^23o?_iM(I81$vEcodNGf4kv6RG?XgYgZ;k3w>c$iIZ1ntXYODvOEt#C$WOGM1HRyY +*c5=&*}Tl4U>6$}q@Yuxm#PItHBCZ%8Iri%7vZc@5cZmMXvag)-oaZ?4Lm79$BC2p!Yzmc1icAc9l0P +WnQFe=<s0chbSrCsHwdIUFdlbO6SH)-`YjZNItls0cCUo$t=lW0q%25xFfsV&i(xT!J0w#2J*Q$xCKi +PgwW&B?bVVx5~BQgKVH25xFd%to-^stqn~p}g%5er?-YZhuV^TiNsKT@OI{(A?UyVsl1ph3W^J?q;cU +th`ZZ7G+}LwD8u(yeV%OAa9S=*DLFI@wB~LZvez5U-$c7XW8iyZ@<@d-2?=84-CQEye)n+AeFY?b)g> +c#(8wNIrpfd_K5Qk&x26Zd>gBr%b7Dhwcn%hTAd&`+uoLgRl9A2J)f~l9kAMyRK3wG&TxuD)T*&TmJ0 +RBYQH$9Mtg^)3G%rJDrtjX4wqEoH$bzcbIxT4GuUuK6jHAeC*_!=DY(I6JV#Ox1Ch|!YfMRuKI~e<*h +eH!M?f3h(?|_!)@nS%@ZRYm<|)q-;U4pp+y`r_C!noEM=aL9)sw~1DRQOfxLsKY_?-M5Uu?B<AC$r|h +(B$yhzsLNLD7b(6C6yzc#en7>Qs8$RjPGuo`7BWO~BVrJ%d#mp=q9qMPAWx4X<Ep(;G)9nQkO7Jv-;K +&IapcmPE{hHRB~+)WUg%t3SYkP-IFDRHi2g;|v8E8->#Ayzf*JYPAR>rctybFtdmCZ(zImQF;AcZkxI +IBk>M;Z4}?^%o}D`oGp7{-x(K%An^NqsKo!{r)8%uRI(ijz9yk~-US++j?dmi!e~`%vVQ9>ha&eHGpa +e6@Vh|O6%}aIDT3V?kX)vEO4{rX9?1FXRBc$(cu-hR8}&dXSAW=VmNU?W+`)0PpgG$c>b@pFh#i*CW$ +Tk?jj4YUw{L6H`>_&Q+lsN23g(L-WqDSDTlkssEn{j!d}<vc3S;&^4uD*v-t5}yl5i2KkC}Z!p9POH$ +r??-W=X5~R>j!zU54njvcZs)MN~q2QZgjYNvE1LyJQ4PS<)k?@H^$JxJSlt1-TD%3XA3pZm?l4X}$Ic +e!Ks*GXgtcfs=mR?UBx@xl=b|yaBX*yg_@tzPkJE!T9pj7%LMeI{i5l(!+t;VpOk!*w8d~avS;@{T=x +K(ASvmN>%b>rSb#}uWqpecxqtwa)HjlZAVjOZZ`+;i?m5coJ70@{nN?iTUEy`7eBoJp}x9zp+NTW{{q +BwXiP&H>Hj1WLV#fl#q^g69%F;*$TZ;`6gau|l$Sq&hN4OHuwubR*2R2Q@z_7yP(9o=sIV*x95`K;sU +<jBJO2exO9KQH000080P|F{P#bSWa)SZ@0DA`j03rYY0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~TJX>@5}Y +-w|4E^v8`R85c5Fc7`xSB%udrmGOa773|RB%l<r2<>H8Z~#=f&7?Irb~Sb=`S;k)my_+%ja1d18IRwa +dE*(Z)UhVMKN$F|Br^vl;S(bxu!ftLuNEo1zyAP>7c0RkjUf0ArN#s_B7C`Bt?%yFP;h~1#LJ^11I*x +GZo1u0NxL_KZ##>wbrcn(N=TX1+^7?miyLUY@2u%TeRHNLij)Pm(I!`wfeh}H#NLENohdpIJ03BgL<Z +I{xWTu{?Z(<ZGNG+8%CP`Kjb_7yi08`)?8l1`4{!}q8J}k9+%ve<x<Z(}dA$U+{e?TDq4cHP;!c(5Lv +2C8R|MKGNErtN=V@?%i-=2ZVpbXDU6}`)xSIY!GMUS68)1ka+qI*dJy3;~K*zvAc6MMgx4%06-Y4u+w +OM|)yxm8P+jf6tqQW(iqWH=u_YmB%!YaYiJ#lkzSwWct5-{5P`>*EB{d=LdOu)E735;74Mg|2*An0|I +Zmb8Zq_o+LoK3S^XMfaIVu*LG^lj|vo|lmGpd~!S1v#?Ehko>NT~6yGWMw?!HLiLBK||b``2?^d^gqC +Xx}OBx#5_858L*9e2H>!T!GMJt49o+%#%Ptl=h`5}{Rqq_A>F(>akaydqaTl9Rzr1!vwFUHLG(01Tkt +0nG_@P4GkQC`bZNURnPht;4|b=7B381EbHvwnPILm-*S}A0)lqPCrY`R>R1Y9(jw1KFf=gSfz}1zcf6 +yisnh5rCk;Vtkq<LPcCiC8)3)R;AT^8Di$#fXpP2uC(CLKw<dppM$Wz*}jel-ZOCr+t8s7mA;w~d20) +ARP1_MC03H~1JrQ;}>#qJL0J0|XQR000O8^Hj4?2pbF$Pz3-092Ecn9RL6TaA|NaUv_0~WN&gWV{dG4 +a$#*@FL!BfGcqo4dCgZ_Z=*&Oe)q2!CE6Oc1m*G;H4lm7bX|Gv$as~ksujX;2(*~7W`;Q4U*9tfhQVC +2Nn2@AWQ8;5_8rb`j>(8_b}W911o?xeo`}4ZeDat`U`NhR&n|3o<J^*qlTqSj97q!TkaDmH2O!hQXgq +VqB#aZV2ZLi0GP)+)I9+)h>}cRDZ|7f@<cge}oynK+Vv)a`4+etmE(Zjkc)g)a5MS&zz;jBjM7{4%r} +2t;Y&WG|04!%hBSDg&w%U=Q#O#MSy`4_YE_EoZ%)yHf8$pa~Ay~Z11dJJ@%p#MVFMlyF>-J_eg`DDm7 +}1o|1eWk3N)5=8c<WW*k&o_W#f|dbCUymI(ZT@<hs!Q+S33rwMI6C0Ut|np@4J5Fp_}*f$!s}Z406fQ +e7?9v-FtAhn^V-GpLm=j%gmWi$F4J4jK?$g=F8pPc;QZFcXOlEUf`9_(a{ml$s|stTA!wNWFxiYaKjj +qfV*h+&ypw~<0#lV@pm|~lwYRRI38t;Q+7{zEMl5=GH%Pra^xw&J+$$1h95qlTb<GQd_A4Ii}7gL;=^ +a}C0=K1CDq~YxAMOLLgKm@64y02B%u~6`7prvrDSM)2&~>eb4WfAqb4gKsnS+qv%gxk*T)8Pd0r2rCU +|hrsX_~I7t21b_L6Q6NmB^LA?=0=LDz@Wg={k2KpNjd!_qvf!!cEsyT5~QMDWSOS_M@KShV)vz*0yq& +Taj;DPVi-Nfn-+&1E9p%9K-S@vTLeVPzwqUVxvjXSdUF<yz4$9G?NCH(3}0o1`IaceI1~HD#}WP%c%; +U33tmyEB-Fkh=`G1mI>qpBC`DyX7JF4$fXRZ$w?|A~k$n`hOH$z36(;)mi%$y%AsD!a8srDDDS#7bi& +}H_yZ-6C<2Eo-cr1w_xkxepTHY5f&4$w@MEpp{IMDy`JKIPQEc(eQDm!{F<_VpX~p4#NJ*v%NQ5VhyH +Gmv$PAo5|Zit=)qYoItpEB==C(8{Mrg<M0wNK766~GVwCOKu*{N|XTA?y`r6Y^>-&MSXQ^G#kjBhPU$ +J<sC{2t)w^{kEyRA7~2zlwws3S8;NEwN6=WEPre2m)EGt`D}TBJe7UEee{H+qobMg`v5jf1N~UFBu8A +LVuZrG)u2eE><V0C$X%%6E%+NaXKATUhLxSH|95WueWf`W(=`+7vXD4*trxxLUGIPxVbT-STE(eB4ti +|BlHdBqD-}Ip&0Bg3ypKFMUGS0!mUUqBwoBOR+dC1?;cnw<~f=Fc(YGV@_(@x;4Ysxzl+Pt9_9VJ7Hg +Ha`>FtWCiFDIX#g#Sd7Is!mBO0o;ec<;7pP2y41N%;AI28kdnrWwKHpScx&dw*jX=TC8q)lf!m0s2LF +VdSvq!nH}yy<CG}|3;6KN(l{d&CC){Tgudf?@+bFAnq4l0RD2lRN<ZHqWB<T3BSEy6o6<*<dEI8#ALJ +R2vc(w*i4z~8tWkzMKVr>7DGC4^5vQ7@2(`u%BA<(Nv-N+M2pG1WB7U41RzCMO}kWVc*hWxPsZ{7hIT +EkIh^jVdUWkb;`zBF6ATNVoeX_NU>FV`8xEk#70z#q(X{6ovZi8LJK$&}}^@yt<604DZ9oECOlNA204 ++FNQ%<o115^S{|{wL|;aOET#BWS#A|`;!fa!#+JEDh{l?@9WoS>}^{-l=oCTq?84!rY!P{FN47!icey +qjd!GoS6?fu?aq)VKXI1q%dsb{tr=1R{-HE!o4|6%GlcwYu0V}luwWeg15ir?1QY-O00;o{RI^Z`DAw +lg1pojh82|tu0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG{PWpZsUaCz+*+in_1^qsFb5>gBa-h!Q`Q6 +(bTm^e-ysK8O;C$yKrY_iOt+1X$!tKZ%;mtAI-1w#^7eJC&9Gjs0uaUFVWvEuRFOu&0aeKGSXyz{w8$ +O=x{ol_6a#}{yV+)Ml{C6L4+p($xWN(fwE_4<QxAEt3ayxNqrId~Ay7mN#7#`N^0R;$%Pog)}B>dk6l +;-@KmifNA}j5k>Dg@mH{dkye+etp*a1OIlRZQzf6P;f`Vm!p1vpx_e)_ioPy`u<eGqy7bG_@#nBoL%+ +@H)ja{s^HuH_4V+RynmJRyVdx=?ND?qRta$x9Slbw&aT1vq0;y5Hq;@C=OD<vXsNHj55L}VmeEL?G`h +NccT++68Yu%EhewDf=jf%&(eUHo!Vtf9#Tqsi@!FUh!slyS6xWDMVKRwnEGCmiN|LEDQvM|9O%TJ+5` +nT*RJ}_gdW@zlA>)t}LeI15l<+G$WetrmzPT8FylHyNGa+~!WP+qF%an+Tk9TRqk<hFbJee|1P`W;pz +!p4da)Bp-EqJL6X@RJq0<#WR6c~>P2f={Mv&0uN)ureApCP8w2@zYSEm#r=80TyWVn*`NDsG;|Zp`r7 +7i$)w%={F58aXr&F`!I9n6Mx~>BJ9bz>qU<S=>;j;L=RIn4<v;pQC=s3M&#b*H$zI_Kol*kA)x<f)%_ +)$Nh3{d!=qGu}PpZAJvUW>Xkg1s1%chTIA536H_aRI1w4AR`lS76(V>JomY6$uz~>(wwUHxhMPAn_~s +`W*~nLuF6t7VVR5_HCQBOn{>>YB*{s0Ib0p`|$XkJD{Ph5(6RR*Sl{ryLCy7y+QDlwT#k&JWH+0{xFe +Fx}E3l!kyF1IMB3RNzMj`pBbZLP??7sCA+2PlUssl^YSkudlk#y?|`EzR3F5v1QIX89am+NgAi&>tbW +2aD23#G3s-nRImTMkiyO3<S1gwMM0_cqFn0IdB~d|Ba_$z~iaKM!`aO4dq8JI&7SfYs?9xP`yV(e{M- +ai3e<zTf>-Ob(2MDrgf5^=)FY)BU;&RQlf?BF<>p(n>1s4p861)JEva-@^!nSZ##9GDfUB__~AOJ{T$ +G?a6L4FC@E+H|hGLQGsC&i#_577nfpJXlPnvVAGv23zo(rX4LpVqgv+X_xmg>hS-aiy^N=f|7mEgGC3 +!q+Iv6gnUBK|SA!V$WP$@68(8}|@KX}m6IzbcvVAUpAomMgz*6XFYHve(?=!r}w_fM`);%|)HNP%pix +OJ)SPt%!IE6DSa|bu2qq$yLGR_GV$x81gF}+h8QBIEaCU+pBM+RkJip49jvtn1|W1)T1LDq)<%USA1u +}ITgMJrQ{>;33UmI~we`xdNr`TJ>X*y&SK00pwvmqZhbs$u7zw7||$xNjcntqmFZk#We{iG*WuOj1>~ +#)os<MZ4`?UaUhK(izK=2p4JMbN#B5*{EY8mwE{itWq{rpIU;wvUm1k5s<r>Qkm>q8J)O{v|thQ9Ji& +q#T@r;i+7{b>O6G=4$~k$pha3HVFD>TXf~Ix6f`}Y;Tt3r2!td_Qu#zO&XP?50>y1DS>oVx(*zckkh) ++G9>;$X%&F%Nd|Q&dU1~toMwv@B?p%~xx)!gIO^4jBf}6ss0IF|3+X0bD3SC^cON%jP(L~LUwZJWNXR +WAU6IBM1q~y5cDqE}#%hIH?Lld0>z2R_l(ZI@TH}}zE51A)FTV`STjxDl|$%hZNI8titnizHYU#n!ZB +J~~|BtHF`mRj3eBrtU{%)}xSy*ver=5_=}t&;vN%XGVrC|k-YtviV-k)u>?Jo^77;D@1FHSUttV|r|E +PUUrOKc%)u4`*{G>=w9G)0`3#k;uW^a|&ROgHCg!*(Wh2Puc1v|DVw4%WSr{c^C7))yto-RXOeS_|c~ +Mz0GP%n|`dF9HPwuZS04%(Z2e>wf*GQ<~)c*EQ-go`nH<M#*0+pYOLBnP)h>@6aWAK2mtd`vrx&+%fD +R#002b-0018V003}la4%nWWo~3|axY|Qb98KJVlQ7`X>MtBUtcb8d4*BIPQx$^z2_?|?XVWHYK#k1+J +#ZXq-jIz;96y^+XmXCay{7o9=GezZsd^IFVD}<$p|Jl6G&ZVY!SkN^T|VpsF51M!Zjx{MakeTe3(t|W +)s;S;lo&cf>?i=CJ@@nq-a~rfE{p&@OI+TS%_WEKbjC;+`(p=jbIWWftG%j$?Om8Br6E9M$4U6j0mgc +B3j2$z()pcGgxfayY2GneYe@h9Vk3y>c$a6<%&X#E0rYQNUgL;5}3ny8r%odu~KQJ+ZLWp%az$j#}u2 ++hW8iwp#oWru#{ptozt9LeUXNt)A~?Vui~acQrMTnvcHLl9EC7~hICQu5Ui8!@CHgHw!4Z6XQ4-U +GOVGd=FdM#G@EfA)TGCw@~yQX1n_+L^=s2Nu-{pzVg>5iZhK;CHWEGpHxksp~~#tjPORgZZ|Vs(v4;t +!-iXW3<l>w$b<{Q^)+0|XQR000O8^Hj4?X4=x}FDn25yrBR99RL6TaA|NaUv_0~WN&gWWNCABY-wUIV +{dJ6VRSBVdF_4cdfYaa;D0>@rqrHdIVIY%yK~WYW!jPDj;0gKW64Q&6m^9nSrQ`_S>eTUwI|=Vud%PU +PqOC%fB*<qm7VEtr}rEEu&au|!NEBP=Y|7tUmQF<5OJAg#m$juo5jKB_{-k@-o7|4SL-Ufxot#nJP}V +GA3i;Re?Al6Wks|W=h4sEDuia=WN}*5X(F0ZG`FdEwQg?9LY$Y2=02)Y@uF;tBx*AF4L+omh+w>;sj} +;~DdF2qm8Q$IXb{$Unu>2uk568npM=f3Mnpv-j?Z3RygvQv&BfX4bNmt7?JcTuDdzJ<+q6|WpNnj{Dl +2GyU6*;=q;vkhw<muuYxSv0)u(!0@9j0!`e;wUpZc-R_tJN9x@yEJ{c=)OWpyOPzF1Y!%`!R?MG5G?O +)KgK?Zr&IEQ=JzS|H329@Q|{c~&gS%g0yZkK*ZYf11ZR(4x3GJyS@i?>qv1nK$cITEkG+QJwNnQ+nK_ +?;3gt&)OmbMy4HL?j)hU$nx|88%DKQz-Q`Z&V4?=ZnM0}3ZN&nkzZ=F$#GdMvYS^?RU;c~<Rg4v(f4l +HaDE-dcho_V^|o!Yylc@`IdxLc)%PiWYK!jk&t+E7hkBJ~jeJa>Ens<etw06vwMv0P>01EtOItQH<2i +i-0EPNc<xf^ob6Z5qlu7CPQ!SoA^C?ch0YSYe%kx_$8&g5(ATcL<1Sd%sJZ?}=jx=PDj;sc9Hc=77ld +0mC(S+Cye5}K?z(>KD*5i1hTfoHHs*sZb@Ovh6m<~@|!aUKGd7b{!g7DDX%T)@5ee?PoIf<_?E?)7+L +0V9oucA7OpS8{H*RVA6RQ7xo)%AT@CEwm`>u+^?ohDh8#*O-MxGM@{GDoD-iphbit<F2*`DTn`oJ-&) +rEZ%Bcy?|6^lq6~tJwMR-`cb#>G=gebcFr-;@fZJBG4nLU+i&~Imk=atU)GtAyv^mXogkW0H5{e4szC +{Ra2I^UbPu4)rJ=vf7;%55#@E-b)c^-DDxH&Tvg?b(pgGeNrdrXa9h@mA(ErfsCzcXe=m<#$n50mPuL +W`!N^zRi8wg;QrHc~Q!zH%gaAwfzRAn$DDN;b*GY$FRui7~66rL#`Kvj%Dh=auxdJ5@jQ<*h4<~=Ze| +|TX>jnRoQ4`-nQ{643UwHl|GW7G2T6y#>ys64|6&y~*lit!qbf*HL?CqsM_${hGD|b=)@U^e);YS~w3 +utnB_I(wtR$6TOy56VUd&+!RdBZvhEd?HI(coH$q)Ohf)alPu(>>L1sazMWij|y+80$LAE|{ut2Q#4l +EOW56^>5Xe2AGdjoAU32w5LnKo)R_Nrf4$EmeQPbhQ((yU0oc4;)OOStsd3vpaqRgOK0hC1CUptJ9-@ +TGt2P~iaaDup2317G&gGYZCc&b%+!jN{7mWi&M&3@=w-^Dq=4qAUr1ubF+c{rA4g5fr1g2P0~#pKK@5 +8kg72cd<&TCTK%KtV`8V^Vs1boVYt5u!oyRyWqj&RrkhnOil6rP%o0D&`11L8U#WAb^`~-2s>ler3)5 +9l!fTazBjiJJ);qSwzoxVo7IC}Jms2FBxvk1%T<`J^tQMHJ%>%Q!Hz&(v2jY%}9PA{)a1z(hnNDAA;N +M-(_Go9SMqW(z{k^&0Gq2Zh5>7rSds8gzR8D$jd%(xGP0aN+u@aU=osEGs(Rd=vlZ2_Pkjx96PHT}}2 +uZ{S=IIU~&S@sV<`{MJ*M<RM#W(jbt$Y3g>gjJtbZy{b2*K0s?(bh=+W$D<`eTd_tLVzjL;|jDU3zQ; +^)P#5@>b82Dt`R1z%IG@J>f1DNz^uwVi`ODrmN3lu`8O!VIR$$Z57uB?%6o_$vj&CW8oU+<K$S*ySpf +7@#J43N9@>10GO$5C3GOMx5y%aYtymj$%nA{A9mVsP=K{s|NQ}fMFz%`Xsh$`f!#-G@6mV@<u!NQ{BN +0O^Chi}V9Z*-U2Dl`}3*;z==~ux-%w~H1sNc+y2bKqXZLdMOEX84Hw7!5KTq?rzug~6m^IW_<yAV+W4 +Oc{Hc77tz3TX|kkO2v5vqgrAun_mRS$t~%#Hd~iLVO!lQH<&eeXI%?02)!`(RG@O5?WR)JlF?i`T&KR +ABQG+l)U5ALD*d}{{A*C@ON|pBQ1C+wpmlB`C^JPL-U~F3t0C!yR}HlCQs|y0jDL``W^K_h>lW`1mnx +UhF6~$i!RL#EJF}+SibjJa~q7`6$c04@q*#gJnKJpC$yD?PeZ52Z(^eZ>mK-$4)GC4oG!1^BmoFG1&{ +z>;IjkCQy117^<aU`G8nijXgNoD_BQ~Ll&Jn_F%6R&T=cY#qg5Ix5>HIh*QratGZd}+482Me3(fjMvs +`-3Q;~)@p}4=lfA}GzgMYEgBM8l_@sAHNbU}FlC2Xz3C`pKjtl?32D#3z)KD#MEkqS%8bPiU@>Jyijw +hu=;Ac&nzB%qZY;Q+qR#;CH!KZfHF-R%G&P57sOAEP}APyhV#?Dfg<v-6W)!~%_t*ax{bF$}%!Zv?0@ +J5z64_V3avTdZ;QH{u~Sd?*5#ZIWUxBS8uPFm#@HVEE~Jt^0#<I4|S7v<Yw02J~!&0D{RxGaAYMP!0S +LED$cJC!ZgFPB}ugy1L1=IZ6lcV^QX)QIjdS!QdCYLMFn3spVr-)8LAL&%`*IgLG7PO$@FXGCm1dNwJ +8syag(YvjUbg0INY95aC5z&{}tBUgN0f1cfI3T;qWhaO?(|yUsrgMy&GyA9U<G9H$Q7L;;oy_2kHc*Z +Uixjjo9g2o%3zsun^@QVb%^NWpJ|a(wdoVt)4O;`Hq0vu_X({qXwa-`<?QK6yUsL{NH>j#E~HTA9&wP +#A(SXvm*IXFkiDm(UmlIxutvvg|HhPsLj#3ob9{?j#Hr*n$iVSb4|P$Oeu>OTfH>Zt;V-*?XjBr4};* +o4D*%tz1QiYG2M6rK~LSHR$RTc#@zRC(8<Qo1qYi<mEZiM1TgW)(#*fg+)2*InoUtD>ulZG?TbLXAiC +0Yd>lB#ScIH(D(6i!Sd1|+YcU9j3NtBB6(CjEIV+^7TSY{*ut6%y=@FOvx7#`;zv)m|0u4jzX9&6zwJ +^05oDlRO~9`|^sV-ub34+D`hjmHj*>F1i?MW$)QSaL{h;nQejtJ_Y(t~R_G1~X0`!2VdJ>b#q~{r#$O +F;;9@syqw&1KVfCy`&|1g9NEFoY|Re~RjK|m)rsI@%k*$WE7^)v^)dY_V=X^Uipw$l#YtxcG73V^V0y +#i+gtsy2zz#T~aq5GEDUG)u0!pk<u`tvh!gQ*`_XR+!)Ynjx^vdx<ekm5yMlc|u=m@?E}pp*ufgBR4y +=K;Iq4<Fv$N7YU3?rFfoa6V767@CIdDgjalvSp84oNZL};z;B}2(ypPj2M%l%00=aGBJR-6X+mbf@81 +*2W3{);fwj%U&Mb1`1AvOno_!Nh8bO(u7A$n0^K5#7H~ee|CIcYNW6M>@wN6urHh674q-Wg6((H4DXP +`R=?%d}VCYoPRw@9Sq9`H~s4`6551vK`3$wh2zw#48`3dJ40efkL-uy!G6C!1|V(+$wuNoHUjuN+|-e +y%<kewJIUZV+N7K5<{Q9=4w8H5l8dkR1uP}s=NG^z|daYO@8Q=s<6F`7AcAR|c)oR=CSBF{<&DTFCl7 +fgf_&CCe+S(0QNktpNIP=7*jKQaAq49=sL6_~ULO|AGI{POa?HbAK+nE1ma7>x_`U}PA0XfFzWG^a<w +qG0)$cvAoYKq8W)@3Ok7q4k91NDt8U_Zk{(i&IfxvKsJ3C|1~V3eujAD<xr(6h`KgrU7NBrXnxPI}EP +dm3#ywtRfUVD<cqL9J4^CvvnuAH;5I2Ba>m4CC=L<m4w2!Rhq-Xe49#XGl0e|a1)|kgDVuug^%jE%2u +63W(z%GXv=}gGMV(eKARJIseA0YWCt|yaf$c$4ZuV{@8%RenfVvY6n_Q@!8Sd25P$TFh~B6(z|+(@2P +p|rr>lvDB9<aRK--{(LGwJi&x)r{Mm}$|M|aUgcPQ@gHH8%&r^eC<T_Q{I10c{JeZu}s6y{-8)EL%1o +_0M9tQjLD)yWSRv`ABAUxWyiav2XHg5WVs@sl3l0rf|tiHB(R=vaWlde&4xX11Z^r|CQJT`^`PmcY<y +fn^_cKZ^qsxzF-kL>PyH|B92TZ)wLZtKv3m*beh>qZL^y&<E+r1qI6(8l#8A2u(RSXmD4A)En(RmMT# +KYhK(&a-sF218UaiCd?2Qib_HPDHBd>!3@=p6LKDq+LGJw(HAXbIY)K?@5*}G_s`t+;uC`3AEyK4O%f +F{1*s&z7VEMFlA%k<w7{^t7I}7;YDq)-q`)9(+Dn^74NE}XE*9B4nKJ<9#4YB$f!uW|e#X#*Y(q&Z1Z +>Gc=8)DVMi=U)DaN`r2&x^@4z8sFW`z%DS_R@Sn2HW)H97pm)v3B*yawa-DUZK~QIZ6*W#85yN<dg5M +aGMw_D4tL+jq!OJOLo5s=MEg^^~>TN%CuJ^(QrCVMdLX%HG=-|DLU05Z1M<J41N_w=KHiT=$dkGtLYl +rRe*odt6@jw`|4pWmi-I0!QI1ptk%<WnZ^Z9W_lA7{5a-HJ@Wrwwlk!lVNvNL7iDZcc>ibV|VhdaS)W +h>=_Y5_iJD`GRW-l?6K@@7q1@M=^qW%&LAZ{2&Ug3!Y936@5~SbVgV|x^I;R`B`gD1rCXI5uv|&Y363 +c+KqzA}fC+6Wkfz3fFuH;HIFvKV=B3#`=mZriSRtU$!02o+qC+;@A{%b#>!X7qha_8W7^qzrDc@`s=l +1^LhirD^{JcN{JGgtz_(d{?Q(G!)a&x=tRvSj>q;JQs*00uMQn+13s8=4irQ_MM4xNed&(Ygx?C<xlg +ooAB7|Ys_It5>d(RR0`6fmQOt4PPk>OsF)c3pGL(1-A0s6tf3>V}EIW1_9!nf|Co!VHQ^1Z*5BF7urC ++jI`*Si#bAp`c?H#h{R+fKj#y&!@V-ox7;HW|K{y`X(Ro7KnPp-_%T=HCzduZqIA*&i)r)9HF04mmni +RwI&58C!jb<CwFjPVltK8P%6L?CX-Fg2{jPsV4}ApSao19dCz+VApcbw<(w1JkV>(DxeMeSI!#oa8j2 +T`<$|RlB?V0?xLk29Lp_cU-xS$99AP_FM=}XP#Fv@oT8!{VtRVY8|LcEKXacb(h9(l8m1*vh80f7R`8 +<z`8`P=6@!9i}^OK8-n^cidd`)S0Crv_L;B(1Z9BH<ZwlILK-`$hz)9MSWdwCt##_Gn$C<Evwj#2x>4 +R^IYUAq}5_7W92?-q_bnN}hgAaYJN+pa}c4ZzB;A(rr~2-V0=0(+t8BE`*+RFShmm1#G*?a5rMWmmgk +6pJzXNO!E4B!BKfJrWNF-ADXGJUbGB>q6TB^NC4FUa%iR$Q?<r12K1CNhtCAuS!TK9bVq0MfNxCxF%@ +>L(UcEA8bl+>ao`CU!8qBe{=ETb53KmE7M$6%AJEJSvs#$XCHmU7+fCBu70c^2A2mv-iKG8Oh$$*%we +(5F-VGXnqN>>*$v`u`w*wg4EzEhq0<~40yY0Cj6*y7c}6>Z7+*%$W!vxua#lfXdHAHO)-d8q7#D4dMB +(!2@X3{q+f_BgXpV`GgOQbQqK-2$BK0&vM#C?r%fL^dmsjv)KNliQE*O!*KRCoev${O^{PRD2(S1`7N +jd&#f_BE&a1Lxh2M#2_Z~#SPaMzwIf^}?lWH12Jm*kn7_Sc^=XXbX9=)Hb4R;@e^#jQABq%=QeYU<mv +&AVKq+}GqT<SRtV(X7k1ic`+-3vr5K{7aivxIV#pfq&hi7m8aAjB{5Fobet)je>U{tuZdd?@9mxW!e> +rnzAx7@~1LHK%Ynh1$36tyKLDmDgAYy#nN3cHaPSIaV8pE5Y^h3p2#hdJgXb79$E{84*m<4;n1NYQg; +}q+)|-Pl)yA>?3kvtJ?29BAY2QD8B2gK&$C^_GdyTk==K^O>jE5EZbf4eRUuaC>frH{PoE;i7to&)<p +_o+pn6qmyr!c%rV^5@rc-S|BXPb4r|caUjSyjRUyUk97`QbJ2^ez~g~3N~f-)}Hs#9b&scj21z<P-%o +k+Mcd+Gp<_9i<V*)KV$vm2_fQ`>wdoiTIN;guQmp-c|5Ty7j8t);8eO;N-2tsrd@)SogOq>@?Yz=U8p +IiH8Nsr0(dL%^)$IS^w`lz;~>bnP_(?OZymhnnEba^>U`!gO9%^SUWlfuo0dGsHi+TGR}kKwi%59H5; +xxGsA!qXFZ3Jho%^MOGwpmY=}UU4!`Si|10?)B>y~I`b!)Ea6OPX|gDG^a1UZM~qtk*ulQ89p%#4OzA +lkh*b-#<=Of1=_&c%SiLDLI%s4MFswLM3{VL4D?bp+xs26k^iBCgz0-3Bk>Bv)JD$Ergz#@!BgBzfet +`5ctEphxM~;56K(^>4QSLbQ_lxYo#_xZnRO|bHs(u}ZTrn5Gqp60}PoJ_jFmwTSaCTMH{>7|wenJ!&( +D8vmKyUU~_8pW&YrznSyT#P=mn1MO*Vrze<k}%q$(0KfTrWevp*91Yl)Et3>235j1A7XLTxM}?<#RA| +2g<y0N@pb@Oh#^F;;1d|it@f&HC$5OvpsqS-rbN5@U(~=iTA&bl$hw4VWXSwCnEmsB1hSxQ=;B7I${~ +;ul`9Z&7lgh-^3I-;BJiRh&k3oTvg?Do-XB~_p!I%Fl#nIG}yzST@LxTKnCdFLrIPH2@Fjp+~@ylVbc +#el9)M0%k<%?h3SQ>V9HJY8fNsOYMrt|ISl=O`Si%%_;c;4jlWbl)YX4rg1b+#Skz~`O&ds1+^C0_<0 +gUuZ0c$4(ZwZAc9?XCHaFXXw+nj!d4~1z*iR)k#z=ltjE4K-1(x%a#apbB1C;(*{PEyR@z2q6^*=<~# +Gw<&<Jl_}T66Zv7rPsQ`c39E_g$E9^aO8A2%b*G@1@wa1vdv0b%*mH!d1WTb&Irzmu}<W?#l|_Mp^M~ +wEBnyL=V=tyg3ZeR(cIu7LGb%g{5(EL6ycW5aKNw=M|mYo!dWgE^vUva&@_VQ0L^7L!FJoFm&_(<FTz +h&>y0JkdK$#rIZH-Y;<tj<(?QUDZ8jc-U5d)WN$oIAyC9yQJ#3Nh6ymytG{{cbyn59YKubVVQK%o*NV +#g_$0J%OHTb!)v(ACZZoB<4Q=}bgPYaZg-&vGXl&i4)-?00e*+Zl#lsN(;k~|62c~8PYf+GA=IsP(2d +m^ZK{OD9$QIAF3?rvQ94aC7cw)y9)?xs5EK_uz6M0kz6G6p|*J&K#;}U(1vH{ODT7h-1+qCY1lgx!sa +aks9jyJ)~kbSfpZ&85u<5i<^ANLMYQpQ`rP>YQ)IQO{`2shaXB`UzK@IlEfz^s<zDY%6m|Bg8$!P~6S +#-X<o%^h&1A_H5$8LJA`w|J)83A!ht?kbG2ET9$vXbi5>Su%in0_p}PXO<XZ!57$Dyu3wV%!L&dTw_2 +xf^W0*-bhzqMvm?l%4wfg!KDlhSnG<jI-Ge5v3b;R77Dz^RePOhF=cjQBkQ7zO#xdTI1zkYmQEtU5cN +YmjK^6B0@{`4^7Lv<0vlLzj8e;zSc2n2TAm;RWty*{0aimttZ-x^rwf8l3%*JzLQ8&MWldTuGS!@*OV +T`L+eEcu<q8uEy1tlv01ZuIU|>9UvkY#*H<F=mQ%<2xMyCM*b1e<mYt+-^T1fKQb<cACc8Jf3D2t)sX +1@jXoJ_T72zm4~Bay{=L79UM_j=~X{7y9$hzey6>L#G+AjdD?|9aK6+ZR!OAFW|{5SuirsnQOSa)~1o +1e!jmCVg8je@WNu;*%bAfWS(?1ECv$pv{#e;i4`%jlL2ev=#b36M}LHV_aF!_i-^uMLm|*PBtEM<*@W +5k?8#(g}oFtO+N~BrGN(~Sy<H35(!}AR<|pz8fdRcHPQLN2y?>=Oj;S8ZQ^1<s3z)EO~EbkcW`0ibVe +V4qsUP8cNqv#-o_fBoGN7+@?p_9KhzAIOymTsw8cqD-E|w)x9WHXRv(uzIbFcejhk&NKEeirBfHRKH9 +@^em}RX@u@01ouxwgV*@FybJ>Q5Y0`ztNlk4419LVIWY=S&~{}@DzWM)3shWgjw{o$_@9jEuCmFMp}A +7#+b#FGYCf<-G63q$n#fl_r4=XhWkv%FM9`p{EjH9l7MPis(Fu`iV#t~_ZZlWqe<0S&!*0T?&Hexb(1 +MZ)1$T&~tWdX8VF_Z?z<mXN&!iDUuKu`~K{NFcllk9Uj~HAfdKx(&mNrc?ovPn|3PkdQC}FTImp1Y@9 +$qPtp?$Alm3`2bq;_%_R>vw!5WTK(;FiSYBEqvEC<^GPc#fnK%strHg5q%fvW3{uCB(fmbJdY59lt0n +^YndHp={jcU^O)<kVJ_y#=)(lq>7W3Cz=C@&nR&t|1L6S5@_MIj$$SGd5b>H5}6Q;frNGS%alxN(|g$ +Pd177OaNi_on<hA-JXY}Xv~K88=6)1rJ?W_Vr7njYE7eni!w5HJL1<6VWX(`ETKHMe3TQu9j?gRC-m1 +q(;Kwva;~Ni9se0Rmhohn<@?v8*+zQ1qtecc<3N5?NJmpjJ5U6UP)AuOgL1dI&8ZS|l;)mO*4f!qlhJ +LUxrE;%d?#PpiPd_5Zzm#o*F<^CRP9e4^$%Mc4POj8tePV}3pYTQcBOld>k*y&@n^dEu>I=3&n`if_| +7Hkiw*2RshMTLE9r#MAKiA9ND5pK*h62FDu8t__0M<Z~h6^&7Y7Twb>~b9pW@_4%0SxK@1ft2<{i4p- +}OZzIkIHoV#4w40GK#GmGyA$rb)(191s)W<e|{d*!^^U`Y)=#<nave^#l*s}@(<1~4W(Z!A#+5LU-{{ +4G(QyA_<g&>{aD{>qjm&-@sK4z=5e)NaWKK=BIr;kKXeKFbF7hkDjWbjptfrE)md{AsrwG>1PUF7=vD +g5&X{O8jt)x4rMS*=%VyvX<!M<v`C9)f|Tb6RzqHLS0*A}*^H=3DSo5qJi)=N?fj8N!DHa@^c<Wek%_ +rz<IEtiNqd7Za$YT`t%2-2e_?Gmoy3fvPvCr24xoy`S<$CGztr)+yu1t!NoH%`x>&j-X3r=9`{(AwM% +IUE)<n6&^gr#YM*-uzx3%`{EhyEZ(M=E=kx)qZ|O49`H;#&~h)-a(c)lL~X|FQx*G7t?-ExG0@5d+1( +<<p#rBj2;GASug*3*e3jiCoC%fkZZf<zg>vsed9%AN`HJ{?mEN>@RCUP_Je#}Mn;c!@l<U|#TAA4ti# +&N&+|`^;OUm{-ry4H2oP?5V4q!UrNW=G<3f^fX;-L1^(G8xrD8Lm<^VGhwOWuv*JO@`BRzK3W=4=<h4 +;tKBuJMot)-3U+a+Kecz`@()!~}T)>YLD_A}5Zwsb)=8sR2iC=(u^6;+d?=SFcaLn~IkwKU_@3Urzq# +Rk%4r)}4h(wq(krq)G{6(uYEvXE#NJ*PJ7Q4tE_*+vhYNZ3EWfZKJwcu)FyP6k@rApAzTlK9z)r@#x^ +7wU($TsJhOY3NhTAVv{$8kgL<b;)Kw4ijc?pWNp;&Eis23;!|;h)yT<MJm}!=P)Z`@x++UMS+zqonbR +Hjf%(77E4LZ_?ROGds3RcOe4+Q{5ymc;_;D)uU$o~}Lj&V_oQe0p_8qPHT%NqM1#R~jYfAE>8q6p;V6 +=BdwoJ^YK{gfZiTLAe_N6G3%j{~lw%LydsyXG$Au)v}oU^FqPqg;9YU~D&Hb<&nHc>~dS!p<Mae1<4Z +F<_-NCL~uy}mI5M})~g;>}A8l6ps=@1##Hb66gUW&RJz6#nH=tt189VDID0!>g`E2M$=RV%y7{^7<?v +y;#&_TR(E%AtaWZmroSubwe-bJ1~mv7&HUx*H<p%pVQ6*avskj0=Fnzjr`}-W+&NTRIvC#^IA$n=3e4 +Rb*B{tbCgaY=BgbTZI)yea6)$nP}y&ywp8ezv?O)57)&Y{2?MJQLZ4&mX38In^d0lWVw{TY2Kq9`b^m +@N{FQ}4_t`zi%M6mwC37g@TP737CEqN+cvw_P=AkWfz?huxi%=Df*s8xm)_5-xwYz-Mmwq__JwCj0XI +P;*uhV4HER8mDrs|j9G~362@7X@S+BNisY0B7H9DGT}0k1ri*&cMZ>D(Xr-_Uf2RK!9GzfR4w#G-_-! +|PTscX+ZPyFBX8Z3j*Gk>*Zk4$Q|pTI=4%5~((W*2DR=DXHcembLYrH6XN3bRk!QJJ7b1X_t9Rq;>+! +78ttNV`g5#FYJZs%P@g2-<-ZUQ!dtmZ3y~&fDC5XUszA+^6>4>7gwfvt(cQavJEGt1D!m?7H&(F`y-J +~-(U=tu9JFiW1G%u`X$ZLp5}9Z;=)AkaA4qqZ<ZnCJZ)s(LEUb_VGMf{U{gXPJaKC#bJsVpp0g)2V<E +TFq27b{om`qh;K2cB4r#N(j7XD`FRM&f<d7B8+fv~o$YxBj$-#lWsAz9#K(Wy?T0tttqSz7^K$&=xN3 +=KZS-Dbi4Gg2ynmLf#L>(OJvfJ^Mw_PfQ>8Nf}z(YgxLu=%oLfD7}x7N5!wj)z*qPTueDDf5n*ZE=Qj +Ci_*1#;`S#{$ECY#3XTeQ4}quF$lHJ#n_YOePOWw(*D?45DSRjGKNeifAe%nhpWI;hWF&$c87_=!NMO +yrBnxm(1va9(bg7b;Svpr5BE&I9<R4x)FzxS?b*JlrEPt_YC#qPL9yazeC-1g0${IyQQRwTHCBXTzDN +c*=_^SGqQ3g@&J;aPbpVk2bzEan;a}{-G5rBn^5s&5*}g0yXk6kclM}5Q9^s6*0BloL$V!DcF1-}woc +@oYbxjQ1gkvc9frbxIKe`sOYH;?60WG4V3H)z_)MKV37t8oYY^e-M<L3kP+fLL1dr9o_E1zYGoyiA<G +wGx#WG`j15>4o-tJTQ4NIWwcDdqh0X`BvqQW}+s1?`R%|y`KH0f9|oB4R5dJ<laUANEUQ%jDQhp$B@< +$w+SespJ8X57rPy__4DNy#y>_^Nj6wtb_jCH3)xdoN|{UHQD@6#JFVeNd?D^cwR90|VRqD(i)H&iny0 +La9{{rZ>T43rqo_3|&_sUFhPdOsxra8C7>A6MUa;uz9yx)sLxuLm@+OcR5Y2NN2yDsu-a=aEx4Z4pY; +`ruC{U=x_+{OS?K(mW1l<U%<ya&5I&TtI@m?(A@l&r;xX5G{f!i?QqL_bIq+@6Xn4ApV|fE&d}<-P-f +(dkkDJBnIZ4jTd`NCjr@Jb;y`4p(W&Du{Ej7tchdyILI}`Ggw4idMhv-AnMK!&*iL7=9<iri)k;w_+; +#F+(cDzb&2s;tx$8bU`Lgn)nWTBKARgIY`$=s)GBS4$WXy+7WMqr31CVaM`8<ZI0mOqa)<dh`rGkjmJ +lvjG*%)M-!#)5lM<&@WkJ43$)4`g3?E0YE+?f}MRHinh!6P2HG6&|~7m}on(}A3vyfcmV*+o`xsR`Y^ +4Vq?^#dkTD4cnX}cX}o+FFVip%J!ulgABHq?iD0!P)WC5Rs;GSa%yJn=X<P-hRceYGgCb&)2#-j%3;h +@1nj4R`0CDHl{D0E$2v?*6cP<6j1l!MUo)#pF9*UoPl4rcsbA$2W<G5(9-lq$icQZip)IRQtSRj8ck) +IJ7lF~Mku7LwBxS6a{?dYDjJx$B;OzqQ7IVU6i)F(TomdX*5gyhiYI>e^GwkFjRolDc@fWRP$r^iI1= ++0IQJc+h2l%*LuA(ZdG5b;i5!i1%drq$hp=yB|FCT8)<99NDZTHsO#QFe%0)o4|63lj|pzj<T3vKv<? +Oa|GIhoDyBa?!+Xbkm*{yO`#@&_-8dB3VhSeNoex{>ng4q2(f_0T(I$EaQd&(+ZFJ(*D)^jR+>hDVl$ +ax^1MSE=V}C8x~+Rp_!SDl1NSD;3*fG7eTZ7iNrnb5fN!-qacVKAg8v_?Rg)tWVg22{-rR($xYDVKbP +lQOFocwGW^U_41;mOOg~uc2Qbh-rQitDPK#eFBpsJl;48hQnrY6UzW%UsSh|ieER(4<;CfX)05Zk3yU +wKgTKwM@ZZM=U(Bx_{!YHa%X}@DF{t&H@g)H3Aj|i98AYb*P7mLqB;&nO<CpY$1itu0UB;l_Eq5dyRO +pKsa3x9UIsnF!i*=6madLbekP6Lk*~oK<_=Rd$QJEz8UOG9PzRa>#*H6m5{x!YBl5RDZht=sKDJ-nxq +k%e^$bpmugYP3y*F17RJan!=)O@8a9Z;N7&Xx<4ns$ZvcJo2Ctddx(ODypwE*OprQ|J|Yk$MYVEjO{% +JNk?v)r-)oRE@3y8t<aX*BtQe%STkFB#EZ3)u9{BBl+THmdEZ$qPQ*dMD318aRc_Un|{|G@A0hp7<Y$ +bXdV01JoJ^|jYgwq=B)vyEte-*@#ZH-DQ`dHW^HTuJ2;El2t-43ilM~LeFGB_L*Brp8PQ!hnq&*QVif +O4KswU~DsBW}?VW25buTWeLR2;<G(7RH1VtAq^5Y5Jsb|xFYVhM5tby5@8^ph^&jm{K;QP#Q)R0e*NK +$TU$Z;C{>r=1p5%3Q?e`m4Z-|fHo{}03e4Y@Oi_rtrH9=?A#&v#+f--8F+>Aw^02kGvixvRVp(Eu&m2 +IWngm8RNO4L?+CQ!Vg+YwdsRRf~W2%FU8@vxCD;Jh$5ZXYhJgHvJdp!43<Q;0KK}in~PV`G3k9B}jk2 +Mf(2<<D7;&FCONu8!m2sPvZsaw9YxFphO<4R!J_pFqdxs2fuyM<~s3ZU$v^g9G|`X4qw0f>e<D`$?KQ +SrPt%X2LJNvk9eJa_U=oJIj=sM96fr3Kk`|vFT;nE-<hW_zdw8Zd=MC3oc-hdClmPJ*aLokHaz@~p}) +`R%jYLQ4EMS;di{9i40rnH(+vYApIGxDA)PBzLf7iQx3gbhKE~pR{#WhBwhWHr#SJxq|2<89HIqr-r( +&7i+=88ribjQBQD?aLEnf6O2YpPk^Izx}+M&d3dlqvhDwxmtiRYy|)^QY;F7K;lIL$G0!#&w!sDq^r) +cUb7fJIT}Z&QhYTiaraKmNVu);fyD7gy4fspaiEI!_=IGIS%eig|4;=_<u=<8bnt;99;HZX7z53zXNJ +@w@ENv_0P8tckiCku#c-VR&g%(%;}QUki_e_>~l4f%iRz_@Z}g?`^j6Vlai3x<pED8Pn_Ky`6R}wpD+ +-%=V*jQMadI8|&ewLxj4`R5aIuU(}&qtQ1V}@N%yymY<p_uw%MZONp;|fN8Iqx8PuTPWp(x#SIlaHHE +u4_@$|$IK`Kx&|MUSN`H2gdUMMB4MiiDjqf@Hkmcuce_U%X^`bTe0csr6qD>i>dFTqhxeugPsPE*6q0 +l}S6#%gXmAdinr7YDVGEI)mX=10Izp)%X7~M;8j@}fME;Q1J52_Kc*W=3gOJgM7_}}Fc4{!$)k60zP- +vllBRy2^p$5;L4`zz3UjYy^hxA&O0bnuaXC2EoxCU=lxCgp|~HclYfhBp3fxhz*<W*PRaxNXOeS|oV% ++`@5l`)<!Zw7dn055_K=N5ns-47A-m*k-z@zm3Y<{KNM}f`|}~cqpo(H#-z99($HoKLk`lh}$Fiz%`B +jsT7+hLX%;otLp-H!+8s(HZyp)bw<c-q;!9mqpt$CS6b@7@dHe@%dL<=o~0x~c9Io@e|Hf+oviTb;>6 +wY-$CnI-=*iKc0g#a*m}J^##!OuCI^H-4qEgI89HjmyB|gv8s&5ZfUZ{v#kus>Xio#*-%0N>aePMguC +2APZ{hBVpfhLgi|8&%x!IAEE85tWmK?F&S>9{zw;HJIRH3rt6MIaAZtZo5%~rbZb`!1`<__WN<nV@Zr +HtR-A6E{q5!oO8tEb=DO>zv+fs-P?eG+{fIKrT}bh$wZ{%L#V#Lv<~3}7^@$&$`MB~**#ZN-5&Y0EKx +9{W{Y=VnPX-7uCmO&El)rpZ89_u1gwtJ_@wE&e=!mW!J5@OAXbPlk<>k^tQ_;PJdAAfC&=lrR7(+PW# +1o8n&3Au2bM8s!c09tyl=_W&=N%&|sy5z(8`d(LajxMC!X@!>ddYv1Jp(yy3|J+c-nCMr)nwqc+Kubq +Lyv5&3$;+S5Oj=neV-gn#f_L)e2H>=!f2`;hnO?s$z>bMaGrK<YDE;+cHTn(fM<G}ygSG=|oXEAUvmE +Luy>%yt!aA7$9)l#r{;He40D=NOcc2v(v5p6cHZ<;L6nss*tx_rZpDjZ-tiWLH6Mtc(CRX$sEcr&E+E +W!W3P)h>@6aWAK2mtd`vrum$i7fap003pj0018V003}la4%nWWo~3|axY|Qb98KJVlQN2bYWs)b7d}Y +dF_2`a~sK#;CKFtwiJp6Xb_sW9lWD&X^AtdSiMftcxHp60GmL8>|vuD)7>Bm`}V(IKI;8wfSR$-j$4F +1BG6S?Rasg2s?6-i+0o%qHg6VXeRZ5|`sL9d@t1?g2amI7&3fCGSJ!<udN$6!`0Vp9j^ICk$Ua<)?Cr +L{ZtCoPv+VDRR%G8cn|e|7Wm8X~=X)WtmoJ{3y?%c-?eF`ns2AC@H?Kdud-3P*KfHPO9)E;(2ag^-dV +BUZ`|=OpWaVmIiIu2(1_DnG4wh}R%4W0Wrr)$;Hp4be+h?1)gb9mTRraDSs_x)GKDaD8@y%E28@8Eu= +3Cv1`@SkK)i2jYcWr&GnyV{7g8JI%p6jM7@7G0tt$ygX`q^L0HUA|iJ5_UhUUoRv+5KFsaY2);6<xDw +=c1D>=gkU$s`l^u76yOuMn1e1Z3n&7(<{->y7@KWXOewicbhf-Di(j?R%dP7w6fz$^abogp?Z#9$sZ= +!tFsTM&rd&`&c1!|^6d5LtFuY=!@r-My_|&)4zl>?<=J<q&;B#)FqWfl`m)j^uZy-5vsV1FDO=jvNj5 +KF5sTTnZPudgx08(9)Wu57fJSC=+0pS^Q7mTS9$|Nr?5>5)H(#H<|I0ggE?WBY2YlF$4-O7yv!beia! +#`I9Jiz`FE_Xy`6SE#4Ak<X?s{k;7VblP{5;Vn%g?T^UewEGpsW4pEl^PY5$1%1CR&)1q_`>U?o0Y@G +-FiEVCrW-zJ2rV!+VWlXrHgQ3jlZ|S3Ui?g8>hoy?OQO^!4*-OQ5k8;8is}c>d!32Ws~o8jbQ7uit+- +efje2T^^;5{N35JH}9V3^w<CX{_OpSv*)?LH}L5FoA2K}J9`i9{7FO4_y2zS4!Vtb@E5PYeKR}z@dM6 +rN>eNWgD|s$c~x{>HhYE?GHNb=7W005Ok*J{z<*D(j+g{fQMM}9YrtNH80(0`7=Rfb*DmXuY+>y{=YU +&?CGeKAF8kSR)QM^-hqK$@=LNJVi>mAd43d>d4E0=0kqZLfE4!?2+7-~pHfw5;Et@tIFu%;-`e_t6jy +uH_07CxuU+&MihRDxXq6V%9ryrhu3*1i}=;h2SQM5yAd4>(L{#xR20ucKiky!SKtg`R2l9!voGJCOO( +o-IA9L_ubWMJyWVnGw1(2gahf4W#?g|nqNYrPyZ+hgD>#fn-UleqHxz;N-kl}l>N$gdmV&$U_Au|xa% +=X2fTBP<NRgzX4jfNfZ7v8nnIb-5A10?$8=r$EZ0UeJ$YeHMHQil2&iVhxf7xGS6i+|I07x<t<;i~I` ++6xz_rM*VhO&WUP4n$g_H)8XSWp`ItNfyyTUb6#yg1dFSy6WYlX!2#Fqor9B+q~K{xvWA2s&4WQAF;? +QLm~S&e2TGLgsYOQpX5BXp{H7Nv#_oaxGN7#^GN84?_HQ~^LxC8Bb1hNU0&bhO6x}p?v81i<)?!{ROR +-4ELxnkH0swIl3~XWP7=eChH!yC0U3LZ?cV$(9Bxr7kbs!sSVU2Aqv5=C)^l|qY)^jHS82k&m8L%r<h +iKEKj+LZ%wFul>m&PRzQY(!zsPMr|EgUBZEpXk57JwRPV0}CA8Zxs#QIcUCdn}<0H>r!uia1YXHmqC0 +GoxsYa(PrybP=-gK;Ux+p3iON=0!%fpmb3vlkB#rHug!1&!1W`H2;xOtVZEPCy`;tp6KAGI|WEbEVl% +Gx`m_b^WH#GFx0q2F#D&UTX@=*qFT%xDj%BMe`0f63xLz~6b{uCz>nycB&V>!JkEX)SuFsez$svM^BX +)PcOt(PFlhms+W@U-bv`R9R84`CUy6AFd;m_I1&bQLEbGlZo}yl?x@;t-S5toQTwIn#{q+0GP2F!`XI +uEzcVk2_C>LN@*^suYs;qC|lwX&iV1P;jC%wUz*|Mwz@)X(_QQwwrQ=`T`wXh8nKSBO!Z2@u|KKn@_w +=C-gDXV(DQ~qfNooCp7M8d=A1n83eqD+M-7tAq0if|s_INXs28RdBZ7x{9V!My2@Y1z#XQc;3pvF{)# +Bmom-L5<p}UYI);DROn+qF|yvA$Whf)O;K?vuE8-4ZcMkf=td@0*bI#6d5$~6jX@ru7n-2HSKYH5HM= +H5_rH2NrzQvu#xt+1S6k^8k3Pv%D(&<g@Ie7>|MPM#BI2^I1=!q0Vrvvto`ZFO<D7vPQqcrZB`#Py*$ +!zMoITYSxnv2^Tp34Fr1rc3jwNFy050JXbU7A%S{3d8BkGQjd(`WqMHHh6vb*Z9;1%IUv?uFFrj=9Bg +7tPu_xRY%nuT^Cpqgnc^olpFHaZZa&tAx$<dTO>A>3L!xZm?$7_m4#ZV)XFTm>W=p@ZZ?Uo(PmY=9U9 +ze*zf=@_L1zkiHoMKd7B8PaCqugTq_#tP={}7mboZth0Z{#*ofP2Vg<k)%@TZX$ekoWU~#T=biWC5NQ +3=3E{>rI7rhc*p~xHSw`kNfMQM-dA^VAXM50OqBXSh5H#eMTFzPGi<Y;~VTjAgw2a0`#Frh1E%*o>Z3 +0)`B~#Dn+&&fR~-JJ;=bCWKsWCf?R9_AOWz&>bFXBA%FP>hA-$94njE5P4M-43rc{!*hB(A)Z^cXYJm +Y<Hw#UyI4eArFufK<!DwD}6LLd=2G0)61nr^;dWa1Vi5?DR>%)x9MFIMBM+6B>7#`tdK*=TtN7)*sO- +i66(anoBv;krOR$5NQ6rgUii;MgyzqkO+6@bn)%vP+cVs6nHv3qDd!^W&e!inIsg`O-REqH2tbkGVXE +gxHoB~G54Ncf0EFq!!HO}Vk_&FT`kjM?O4y<+NdjEbUJH9Ba}0aY)GcH#PN2>#_(E(iVfF*2hMBBR{^ +OK4C5tB*iqUc&-6E76v78$E;x7!aUUq1L5860w$*-*4AK&c7r7eQbRa2ZKvgcw#8i?ESjHi-P1--~+} +68W4*H-QTz|aD?SH;$jnP9RxWNbX!3%$9jOGyB6qhM<gk9uD~uX*F(sH5BJ11FGStxH4~QUp^r(8DIb +|^RCmYPOS2`cTMe+k>Sv!g=~^Z4n>+y{*u_Z(WN-MEG}_?-D}CqAVg5MIexKPYwUJwBW$$gCzHOV^az +Vc8jBc)AAuNQ@{nI66nOwVBE3u^GizwHIgWLu!Bi9rc+W*uUk2M~8*jpf>m3>krZuN|z$&NX|v;)G}Z +!#$dRUkRpfAJd$Mb=atzilYN7^0`Acw#G@0ZS<|C&+EHYkXgR1&T!2J25CpwH*V;29J@obWf4p6Q}K$ +nt}^z=5g)DsB9K#eLzR(a#PP`n`*15omwx;7FGr3IWQa6(a2|8H`%Ib1q&-%645%5%ZmFoa0#(cj@)a +y;ph~Miwkr~fH;Gncsz971_VD$<dZ>)4loUfQNu>@Cs%nw-jXQys+v1tyU+gar$XI?+=y*<!jp(oke+ +*R^PxVjz4~cq3)d^nd;4g`r=_RlHzm&g@%%H_p)g>SMaHC)wg0%fc{sL|JKW10zqJ$;sWYf06J5rnt} +TgQ1AlLzF)0VGYyn}6o(btpbf3uyNL|&4X*f=WrL~s2C7i0V=c|lML3bexzv=~FH}Vp@Uw8OHb(jn1{ +A*|^yO__Bvg>ewp6>sY;y@R+8l)Oh9nQFlsuh#MXln9qNJ?<PWH~2vTWas1b|m8>U=E-lp$bnLG~Z_8 +R{{$2dVBWv=*zFZ2EMVE-Z`j9+4KPe%&*C_>#!U+2s-wJF%|l6`*s_WzJX_7sZ8b1qx?yijh=MlJbRL +jTwBStAEgfZ7u-w=Y>Aw*0x#qJ2%Aw})<6QKJhP3pZBN<>{2zwi(~S~L&=_AnHw`sFkCoDG!Zn<Z0uK +xD=M_rB4{dQ<q9-5S`~vj!FTcv}3j3}Wna`pTU7hzHyzAmtFf^%7_VOMyn@*<z&ul2r3EN0>KUW>|2- +A1nL9d(ak!t<unEgVb#UHo!6=#rgVXEMSzDK%+Ah)gTlJHp1cvsdKB}CVbvCyH>I_`}ER458f-bq+(d +9Y!*r#=z&G4}aXr)@ABA`Q71K3^lkNkYN<q-i>;AbK45s>hZ=t*F54zvU+hA@q&~TyI^y7y2fNJQ;Df +n{>HFPuR$Hze_bGzN^eBP&wVKiJ6S@x(OW$3*Zhc5s*E(@TH6<8pf%p*)u|1B)DkfFfFl|p<}lcox~o +BiK_-L6>y*-5iYSuhCPch1u~N$@zh`_McbG2O;xlScp%606Apw>-*87dQMB`Gec^=>5PoNtH6Tk(NCb +;)H4pL*kR)UZC5Mwztz&C@I3sNpCz0WAKBv=5!uz`LC?F$h&sC%FLP_hFDXAAU1focvIC<Jw=X-#I6! +CIPuy@#PW{}%x#84`R4ue86ZXP%sCMb}|g=EDHwd~Hr%dC4v8fPW7x+}J%_^mcw&ti!#we^Jwd?ljDJ +0fEFCtj^fKP1io)E}6_X3nw0YO?gl<)#Enr7wZSF9b$NiF&@(v19hS-U|v~L(eVwxN)4Dy1AoZuS>zi +S}?#P1ejR>N9a2xFu3zPy{uUF1`iaIJoaXX8l33tXg2v6klZwtAYZDZ8!GJLQNFm)F_mD7>dP|Zi9mw +{N(Oep{A%ghyKCBowM)!b=QqWb@U(}^Eo$MdJx|<8RMK5717n~JD#la2x=8$&n&iU*C4F9^pfDrSaZr +|9NnICSz$CgkP$xT=OLOFHsvU?tv92K1pKb$bV5^5y$E!#!$ojQH_@o(*&mS}S!g)G^RfxJPQ4(Yn*W +H#~V>#`pztXF%@q9yp+EvY*9BrOvPR|zQmFNOL0X-7;eOq+$5&!-e;~Yzlu*;UBz%csG(5>5F-u&7C9 +^0`bpmMY~Ky+wNwxr3qGlRocHN|4KX{#=XG_fY%aZD>c`ZpD@q)AQ+R{%2PN=3?%N(9O-M7tV4`~KZa ++87G6+f68Tz?R+@GYfebti@66h<Z#&`ZFBCJ9Oi7NI%ePRl<@ID-1N&fpwl{82<>sbYz#Y*Vk3C?aZA +EDuvo|t5GL_J-Y@5l8ACrK5yGD(_}tzD0ZA$iqh$amk<d`wSu<g7{--=ylY_Z<YmCI0sM&8KT?x@B(2 +`Wy4RJZTj~wh)`=!qj8NYTH>wA^kW|Dl4dO*oRun|Rfxca!U(#bQ(9lYqP|73xG(%g?LiTFmuSP#|t- +0@HthWu8WxM8+U?c;ZUrhT3L>8Q1dz!z{$%T25ExB4)lL-$~4-KZl8VJZFV@`Eqajm`M8&qJ0;#T7%Z +MK_Q4Ia>^6Qmi;GPk?t$pH{)pE`omH$4RFKc6^;+c`Z5C?@@<j^Xr853vxppE`ow)sDnv`?s@On<J76 +9VxbWO5ONt2`C#aHx(#fRW~LRRYMK*7kI|1i`59VOaf%{DRRY8YhXwr|1!F&n!|+b0@fu{p{ehzL07O +I8T}~FRCdH}5u8uOF)mGK$B@!-zhgao4aycfYWr)22QyFOVzE(-$Td7N5;g6~QToyJ2t0?D*U<GBVqB +&k)&P*+!9)(6?|J+2#~-CkK3X*k!B%2T!I+|0Bwe+VZGuRzG5#%|H=By1cc`0^vQJt-_oh=hNMvISM` +}6P!;jQI;rA)X^Ab3&e>IUr5PK;OJV?qdgla2dz}HR>taB%?DvarZAMK3ecwi|OJyG^ao;c&j`d!Ma7 +L9z3dYkp^V}7upb?AC~2p!Rq;jH*9%fGgn!AV)S!^vdIrIVrX+JIKxs`Q<L??F8FG>Jk{w^c?D_3qO) +%Vl|w8ccTnr2B~ai`U*9sPHmQcg_Q4@qgMLhD@qQPr5%1X-E?Z(GK^Uf##sBO0sNI99sy@u^s)fWX-o +D%@-9(f)em*`Zb;b#%3A^22QgN<Rt)(16u+QZR5)QsFA!IGvfi#(?a$yeWeLlijkliY_=w%>RO`0TKH +~pfvAI7j2OkrwM9R9G|HPC<p?2#=!Ry?(KpSAQN~DO&8{V^I$4+)>Sx(qx~usuP(#B5iYed22lN?`1z +x3KOZKkb70T#RssedpkyOwyLltPy!a_&}Q5Z{Peo;n*^P{~Y<=IQ-Dvu&Tn`#nt#VQHLbNd+&kW0rS< +yul{`7)k}1GIe)7|z*TA?|V;O=Qj=>hMDs*AI0goz^?NNYZ3xUlQ+MT1q=sC!>(=wRM&+o$^aerz!PJ +Q&bBdneOO0_-g3`M2t8gg?7dw@1eXpkv9O)Scha{+$P4A=s59<F!01$m%0IG=ZHwz*E|E*B%Xk#B8>p +-tB~yHs18iPWIWQPXUNmhGdU274U!tvp5#H0G38TDeA-*-I-!zDixj0UpTg?hyBvKwCmEA6ll~ALe}^ +vVYspEPCA-GCGb@eG#SOJ8s;j02d4%D-OEWul=MrA(7(Xh}7W=wsY70NOlAB&`d&|ioq3~K54r{U)=f +ND%smg((T&hdxrI7_Rk}9ti^fb-R?hAxP;iG&_Z^dg|T;$z#@p*o6kp#v~zWCxRY$U&Z`A7Z+|G{Tpf +1{qQ7GKMF<zaANfBpqV^m3e-VrM{?)-@L&I)0QsU*-;8p3@y6lIk#|;Hiva6~AJpw!ny#Ravv;b}2N9 +C)um#U+;j&xxoyMNKg@6pmcOh4vKhtNn%ru0g}_f6D#h)aG94qW|9x(OLG(uUkNf;6)pq{FsO&{tGq- +M29O*m0&dw<=!z#g%ujOP?sjc%PbV_S3~%|gNF$!$4Zm++c`&9xhOXg6D|J=tP`%P%l&?*lGx=nkfcd +05(VD(DaeZyTzmJG7N`JiNrPs~4kj@lc`NdMqF2DIo)L2eu#4X0t7KwR1x&+h%96`_WqMMgxB&_;L_o +O2Wf#*7r;~4EGuGu76y{G1IjRA{%4v~u=CM2ejgWBQD9uR`1FC!aJ@n5jP&qqcJaFuVm;P@<=9ft*0E +>P7#y`Wb&czn!3Nx)dN2{J@Dg&lEz^1T2ArKTA9ID$6IO+|7V;jtiUw@2-!&e)I9!MVZni)T8il;x5q +CKWR;&y6cPM6@&Z=`@Q?#aW^s-6uLl_`$itJMx4%dc#D5jdIy~Qx~^ISz)v*VTs8rfDKELiFLPr7CmK +&$xK}HIFkQtT_Jky&Z*!>=ya!GQd5R0x-c(0G*VB=ZvHs?Ah4!V0YrO53;y9+h${PR`o)(@BKxkEfiN +e3^hDn7t~tmm9lw73Tn!y&dk;Yghyx_}6RAPswo0D!tMZZE4-uF<$5hU2yLY<mC#A`HO7X)KV#^M*AP +t@uciPrLP-S~8K*9E!+EJb=ZU<1bcHoU}w$9*D!?i~^HHW93_sx1%iCa-&CAr)=^{TnJ2V``kwddua9 +c$JCKmnZgGN;{HMgoR-Q*fHaVq~No)yVTm)#H%t`$mUu1%jd*jdwc<wTCUbm*{JLf{~u^2Rqxs;iH~6 +W$`#O0JzBsJc41KbdPr523xn3bBszEa;hj(NEO>L-UlvR5wl1`FW9N>-*1#9!Q{Zk6ME6gzltf4P%pE +4)r0WJW6Nws#SJYTnr1?Vnu>%o1~?^_6mw8?Luhoqo0cUyhp&TZ8nNS{q|!X4F2gfUxr-=7-W9M~6IJ +1Hlz6J->qu2-Gt~I&7!vi?we&{ZM6x03#G5^9>3Mi&9+RUgqX-u1rsY5cRJ(A$tl}(-GSurIqvAQ!-O +broskRnD@7=e!>`3=;o`?N$>)Ymz!Uu;}iJw*3kr5BO^;*?^E2(c$Ux`r#`~`rGC)t<dc<~CRTq-ZqZ +IH(!L7vbIey^ZMJ3f|C-D-Jd2MZi|LAdUwWV(<O_0WlsPxA?a=|m!E+V1IaVF#6yEWRQ5QF$LS?qL*L +^*G_U?Nko7TQpL09~lR_$8`&rE8?sQqzxTLyLYGwhC^T&6=*+=9(kf`5Ecri6IfeNw-7Iulk$vuonhq +%J15hLdlM8v2&T%Ws6t?JT*<FE75GMMd2tl7Ho$G%@`5{<jbGf+k-BZ-ia-i_Q@V4s(@pQR9^Bkwp|* +mhwe+<r7wZ%hADK(z<oEsBU9F-q^nb@){eQBBzh1S~6Lfc!rO7TTa0<LigH?V@&;wO{m4`0aRo=NMWo +W{Xo^S5(sq~SwE=;Y#2a!n<o*|$8sAU-?4aCR*Sr~1(1^nlCQEl1XDvhS4mk;4)PN-m=-AN>`-+VYb= +4*)4w=X#A<r<}|R<@`<v~|QSwhywgsn9Q*$UiY&qbrz3ttVtm5I1L82LW00Hnk<qf^aCK>`at1N{zk4 +1|=Q27p-%*Xs&~Ub*U>AGXUNDk$-sLN@cfpsY?6)0~Ji^I!bC^q^C(NPw=q7tfjVD@6jDU$n4ZUot$` +^ncNzc31mhzh$Lske~7JdMMS7fk4bw5CS9HyD=)1eeYE#dc}B=mX1XPv=0Tb1W(BJ}1hgT*_)*C`R@n +)RRN2^tJ}xds#^#dxo3xv#hy)tEp|I`T`Vk?B=wx}PNrseegdkg-p1#Z3FmX8&LlNt(z^Jray4}v&O+ +8r9mV`{_V-A6;Ydv$Z+hL6XTsHbCwa0gwoz}*LBrgSa^Ptf!6ju7dixu1~Tt_cz3%Anquda5m*tNPFV +m~zea>p{!W)`WqXmyX^x?3b_>`IIjO0bt{MrOi>Jir<}{x*fp01-iD&iFwRx;8i5IY<jlm8Xr1wa_}2 +k$u=?l+W?r08!8N&J091xsZv%S8s_GIKC>y+PL`q$c9IydFkh{HiPm))7C_*Fc?D*P|b#3CObOS;?~< +a7Pf(Zn`F7S$JwGG>v6s5+2q8-&IeIDDUQDU!#C016h6acHcphmnuknmp!}EY^Msh1S{UpcK8O?&b#T +j0JNEx+zuh{`uie=y5}}*?<yw06qSZQSQWl9K`4P%TAwdsZF~>hXa7q8EGM%pR4ProFqfF?igbQFooA +N)+-N<6Lj16sdJ6$PPh?p0j8p(xvM4Z!*gr}zM08cS9z&@+~Qmm)36$Ptt+UGg3g@`es8(Afe(d+OKV +fl>Q6zoaVm++l-G<Hg<)75t^9&VTJ<+w5FZBWgz%o2=!i$2D8TG)<c>C$Z`R_lH{RyKoyRdzBAZJM2- +z|}Qs>5@`D<!<VNUCMB}++=B^!O0a!Y_iK7af<89k>qn+be<J+M5ruLf$`&D8!hTwhOTRHBZ44m);|g +1<m7F!@Ia3;2?5JL5%PGV@|vk$hX%yQR@Iv;<`gSSKgOk(L5u4@-CtIHqC`<FJUn1pXNl@)-Z^=QPcP ++=i}~SHad*;k^#b>dy!IxgE>z;PvIx_4_8F?;^7pJ=`6VPAIY+oojKj1rlad51hf!3FL>aplcs7vVu_ +#Nrc@wLm6EczXY{83+Osg~Gk+ezjlN^a=S4;djp(fl|W)J|7N%nb=M_}eMRBIv<(CL5DqBsp!qK9r{0 +#Pg_aXh-k!;lT=cPD#c3P0&xB<|*(U2BX`uoy@?oYUPkNPva*k?%;6bRA9HSKp#w-Z<v++=wkl%SmRB +>5n<94_4YqzTSXnEiaLaufb@Pf1*oi&Ak1ZEMxi;y{0*xh@3JqvFxN3OGT9;nifo|byE}f*EQBc-wKJ +6!t#YJty+YEmz^EeeQ`sQ6a6wEVK#M7RXa%+Mmiy(Amyfpg^BGM<<*<q{ETw?xv>6ii9tH_;-e!pM*( +M78%ie|PqP=b0}JzGln}H~kkOl2Xwr9-{6kVy`R`nF$`J+Rf@zwbi;gOIDoJ0K=npO&9E5Y_D_RdV)t +SF|k2s$TG$SX{*HekxqVAo$jnd9jDHf&{E5C@zi9dF4<2Wp8e_yjC@t8Q$^3{F;ly#0hR&POy-PZGq+ +@{2Itft6&atveOx7VGhoB0GYqN{lOLf^Tdw_8$lOUWg0>3Il@=tJ2S<nwU2Z%p{eI(inB4VBZg-xcJ) +CWv1X@&L1oL7oGgkNW)~=GlPzJ<7$j-(+upiO<m-f|dD)9(fwlj0VU1?)gHy&CMPBqM2`W=(59&j<KT +i@rA#-Fb-cC|Mts!NF9}z+vHCG?f}Mg-DtlJOORNcfc$7*jvmf-?b_k~>^$V=fT=`e{3jm70dI(XB0t +F+qE4Hoi{r7vLjc<|(sC=yrGT=ek|nE1KzTgDy2|c|rhTO~beM3vSiLixraD&`K`W!i=*am2U$_8zpO +*BafetgWj`JiN`DVNeUN@Da)SYF6@8EQIdvdxZo64j7r&<;>ra6R~j0HX{{OaBVm_u(ZPgxeS;(>XyU +@V3+U8|2^aNSrVjF9S&)829WlRs%WEQ$k+3-xk=slRu-V^bqW;a&l%;o`ohs5#_pfKa-2Bp4=CHEMs- +w%Cz#p07VNN241P#y@oGt#8EXfM1aZYcM$4@<|vrLuEBg#;S65M{mfeZYE!j6_{-CG{3kwlC|Q6+;;n +}Y%nJ)8Ny9(Omp?I|B(g*Ok9SBmtD}$F1VPHQ!5Qf-x;Q3%aIV%01798$|fGJN?bTOWt_mn$aG5y45v +CgW)GIh91YeibL8=*Rni|fVK*Sw>G6*`6Qzt7%Kmhcedg!eQ`s$lkpJa0@?V}XaUzpgiIPK{AANBg@O +HmHneXZ}`TaltxOef;=w9V6OTsHVq!8kHm!fJ+#a52bjB~8qR`z{16^XC3gu-KK5y04#VSFjV3+jInM +(i`Xl$sK|;B>g&Z+pMVrlxa!Y3JVQ%9Ut{!AyJU0+pd8ilOR!&Nw?T?$%aS*~eF{cAHE4wUfJUO<il# +UiJQ7PUEihA`kbuU}a{3{6RAErj;ozXlho9g-}-6KhnEt-$9r)hoJd_*wuIjOA$y?9a*o;p(d$!=0tC +UtgKU&vu@EizbpN^@7KpqpMu2#%ceK0Pn-7YDd@<eMQ{33)Pphgr+Um~9j7Xnoq(t>h&S)CO0kMmsoy +8TYIkmx$vt-EGMx{VVnyK8t9l=pVx`R>zKfcul=O0Gh3yc2uSwBXaW93L&%^~!b^k5b2!W#^E-v2w$9 +G5go)1`#(vs-1L+M4)>W@^Pfi{!g!OAJ(U=U*I0KgO$q6EHyH>_~rgsj3yP<#{As*RUS*otImk;f4ZZ +dhAxlGT&!);kQHDtuUbKXbLi+NyH+fFg$s!c;lD^<L#_33~T|pLuN^?+2%F>DONDk;bLlrc$|hhB34{ +g$<+-_p3TuRf_`8j5Qy_cGZuz;;%lBv)4kW{G#XgQY^6wJ}$(M6#q3-_WA3+IYG2c7qcceNKcHil_IR +@0l7*#??huOY6Yp9VZmJn)h)E^T6Hsm;uSW<kLG{&d!kjXR8%Bnys-j=xk$38wFBo6VILkV?$=Y{J<7 +2+ud_Y^R=L>B#UcjHo0R8#`Ni|I;77S%!b~K))gF#cdaPWWl=B;PZp!Cc4Cm*u>hc88E3Wl@tuB8F$Z +-a%59$<V-MpYW{`<WN5dp>Tk>W+z<F(G>P}JL8_gmd-DjGI#uIjQ=<#w$xcu52E9eNjRD~l)YHxp{>) +_$aTNsHL<ZfQSVpWZy9N<l<k+o_N=WnmApyiZIM$yYhZxOmV*9NTjinH2U!nxf7%pR?SeHQKXCrK$X4 +djU<=&sH)@gy7xmYRCC6-5__7Q7*s4t~Y)&4x`{pE<<vWU$^#Y9A*y|6Rpb@crn$)<YkTHxlF`v$>Cy +5IuW-etGT^+vrqN5<lgm_QbOP_DV+Uxqi`UE3c8c8Rt-WqA`yF$NhMNS&%R>~G;*w{Y-r3t!c<nJxhD +GgImX!eL<8L8RlI5^V`JMC73pd)8}v*i@>-)RIX-x<TzZHyjK|rxFMfP=2HJVOsMNb*J5`V9ujN|Z-y +rMK1qK2z*brs||CE>z-%s^lqD_P_%6x9<^`3mFFW$ucO$eH!j&O%GB|J4-YiA+<F^|NW45gFHfA`qy= +-I}P1f81b4mu#v`fR0ucqB2Hc&$EZGSSMN4<{mLcCZm|Acr?lj8B9+@Viq#kwqkroMfoO*#4xWgP(yR +2bfIikQajq`}j$+ryZOrQkgK}<fMs_2UXP4nV~laofY_HvZwBI)hI8gXQokLEMqus?4d;z6vU?XW=)U +jWuP2O(yWgNWtplhfZh-rj}sC}d>dm=L!Ghcr4>I{PEA#Efs8ya(oZ&v5T*$NlWlg#ftho^v!a639%T +;~oB?C0BOxJ}X7aDN5#-fvkZpbcpY{t_ewiIr93nREKWPnz|Bj0O|1T;!9+4jejA)`bqRrV^YQ;`@i6 +^>DvKjpEL6OmNDCIyOjAF*mkj1=zG_yxk4~u9{#ESk_`FfFU`Fkht8S8XM>Yif=&sK}CV+cm|*^eOJZ +CXmtnI%A6pk<9QSCM>CN>LS~sP%4D>Kn-c#?xzYuS?^(3o`NL(FiEKc<zgyTfm>x{@}Mgb~+N%I?oR| +iV+LlPN;cEM5XOMOi2BG+=uwFjbSV_OB!klL*y<?RV;Zlefo&sOv^9NBA1(db<w5h@3?TUQ-3G{sh~P +yR*bPz!#Cb5!DI&B;TC!f>mw;IdU^j&5qXIcEppKHgEIluC&@20BIwTY4i)Pqzs0R>Hdh=kvjih~A3R +7aXJ9Ha>Qyt^iR2z23gxLA2mUvwheO6(%8)L}b{3jQMHozU7|URQ>#yU`I{d)svQ`+v!@>_NHlMte-7 +EUQ1aK(~Pyp<q`bP0n7Z)h}u<R_&SeJH{(;c9>zAfqw<9})9Tu}uUQn_J6)9j6=yTRZvF#7JKW<=i76 +#AXFz3a77Xq8!}d~shy1nw7!@ekLmx|?z>Z=nAL*u1<cqB!{J(?kHgwJi5d1pa4`bx96{fYQVKR$@mE +xZXDs#p|c(Z>Ix7hOi8_8&2_ZA>o>SbudiC*!`yrg{j3IG5Q&Y#GJ&Vcn+Fs;Wmq`&%AO~zdQ50wpd@ +s-@5uvh0MBd+sv-8i`Gh<H!(<lOr_mT2M+#&$JgbWbHPm6!2&JqV)1h^$EGtBYryr$OkWjiW>@aZ9&| +A)<Y{0V$nC6(OHrX+Aj>SWe;gXnb6Equ>|~&zc5f)NR4lH@&LuD^bm-!Oz5-Bs*=q3WB~|geC6`vW0f +~ae#Z~;!c$%G7T{9tGw8FRtv0Rq(l3u;l76_@RCR&aP_+jhL?&9JeWtCYk><BPN(REEruQ#|s*Kf(Qx +wvQ%1lG8N*5~&hu}1u9%}XO8<H0TvTTOsscydWEcP(n^FyW@Wqg|$2a8>ns>(u>o?g4SDsgMtO2DaYT +UtGwJxI|NQQqD&w$!J;_q66oKn0nmd_5&{^aQ0goamM^!T90%U?OTk+ievICOS?4d<(P5#II|g%$EFm +c9Xf@+R_C?h^6d>_n46sKsVskRXg4`jQEPNmZ6%3cs$exe)-m1qE55h0`(ldBiYlJO-vcnnrGeCkAV# +>-g}t63B%j+8{}`$1?a==~<Hz<6#2PyLf#*l=!~G=NN>&qji3aXPkvwmQ_p~kUZ`(t!l$VBgNTVDEn| +J>yJC-$(w-J2uHt|HZ|11+BL>&V=fhOwZGF%vUZ^F9&s4X(JzhnD$V+FQXiEdZiTjpy8zsZ5#7Ji9$v +MrXsx3%GW72F=u=GF`GkF`)UvR^@l<S5BD!Wkwu8%$+wBaP}hu!mNML!AoD!Kp4s`PX40$LbB1CR|C9 +Mie3L+h(718aEW<ltyoqo7?%XZdWT2)`4P#4c*OPCu?UTmo#)sLKiXg1_!<+p+Cc05&~J{ZIuBD<c$| +`C!f0n^0qB0zK`EH4^}pb4jWO;rpNM2z#lpG)6AD<>Sj#ZN|`<a5pM3CgGFiHa%>I2O1;w(Z88RKZUa +N}LBd0%saFb)BogS1I~{m|I-m-F%Ckd8SN3}<+CeMzil}ccHD=^7R!CP!kN`dpI?@}*RezO>{ZpMs=O +ylYdI>XhJOBLnWB9@nojb`LEIR0$*`iT&1^+|y5-|&=XiaxDCuoVg1R+bt71{GQAJpD!20<2p)G@SfM +b4eWrOhhP{}K#Fju;FE1^~t%L)S>?sdKb44T*HRf>k=LWcC?p@G*Ukbxjz0?Y@DEn8WfIUFbNz3<rdH +;Os9hj;iuTpqsxf-0`_%uomPk=zU2r7rUvYS>Q*dygpi#j7~>${@YLWBRBtr$rg@KmpD&TfVPU2=)tP +q*l&#X>t|%~C?A8nme}#pPu01gBjDa)M9w>o7rha~k@dliA6gqb`6Ij%KKfHe|DLnvg@1qi36s(Wg^0 +}{&08Kr@vc5;4@7h}Kh-`LHiL|Vuz&#Dv=6v7_K)N2Pkw%)9$WEbm#F?0unXOR(R`9UdTw=ilx}}{HE +*hhvyB(jEZAn^r)8ZDlZ}HeM3Tl)B*@Il{7%g4znn+j&lZnc!|bohIaV}+BRzCK`Bt>($;F#S(<{SX> +JnWVPO5`deVg116M6ZMHBSV;Y7ToEBi06t?--+y<B+y=^sLSECfX^{3Bd9qKEj^BRCSx0vp?lb;IDbH +VIMWW8!`kpFI#@epKH?7TVFGYzWH`u?JCu7+g;hK;s#?Fx@%IOvw5@LDwJz(=2j{%Li?FYGEB1D2Qfl +|bACgmM9!@YUBD=aEtEoj+93M%?%0)p2!s`_np>fZ;j|k!52?r61Joi2I<_Z_(-;-@JjXDdB(J<p#3i +Z06kEQDyLcDC0o2NUxj@lM3QjEW^ap<9dL@>0=y@kbB{_Y1%-<O^t$S3UK4I1Zz6hQ$q|5ubn~tPFOt +ed)uSoAOeym+SAAxb!j+t*w@KrrEf`Id(>@vN0FAK%72ws79!`D|#(R{I)7Ch%pB>qAv=;o!lG#_{P= +oO*V_jIeomEgptC@i)$8t?Jq9yqD*BJc2)j4!VCyBhu{>Lad_?J3NjdYx8m4{&WO;3YGfFLmrp%%wEJ +a^ui`MJ2l;Zfs47Z1l#w+1AY>jbjIvgvzS1j-jDnJO2TWl4yz6hZ@DEK0nV*mR_(5Ik*=A-YY&89WY) +qdbi_@zl``F-YiDtNpP(&cAc-t#L1h2&Ri-hgU1SSMB#TM9Xv>MARYPYmPH1hU2e*1VHqKGpI>4WC=l +r#Gb|^6*Hc^Uj2;&9fy<ROT!+}#s`pgF_LN&b<R*!fBbS40MlTw|Wi;f;ZS>@k&rIb1^NBlx#E=6_^| +M_N+{to1cqrCaST)FEJWl#5q}zo%D@>bJU=W8oR6F}Wj4VpjFh9m66gH$?4Z1JH?JSHn=KAWt*m+=H6 +m2XHi(}g8)d57fQ~3jWW1?v}-`6@->@SS8M0`Eh7ogPQ{)k_6xl{@lC2ae*MiCOwaWr$P+o!uKih9y! +N3u{mzv{TIw!4!GgQej|=1{{k>2Qb^-Atm3wfKPep`mO++1Q8`Kl|G4q~d5}x8)@lA*7O3>NJFg1CW8 +HX4$N@yPPA8h+>7GWTuFonzbPMcNC;Y+n<Nhj6W3PAleLH%ZaVhKnxqBn+g`p3L}#^6*v>n)c}&sLRC +)ckFtL_IWsBcujYB_*+}6|?W91btQzIoA)eeR$!<AANp+cT0KK;YOsgwVQz%nPD6@noXLfg}-AGbFvf +N12;?NQKdx?9~^4Pmu#zghirJ&dwH9o%`7j3vZA*-VD3sa=DQW96z3{sk^&wLXJBcTq1oI~Y?sp;%Y7 +|EqBh^vm6?@HSH`j=KaF+PR8yHvVgV>!fL-z*wbD~MQv+dJy6P>%{Cm8s~iiAMrw!8mgslZ`lpW>uHK +)Cl-xx^C>i9+-}HWw}D7+srBRHa44&fme-MtL+hyXdN0`>ABF@poeDk*%((REk@dFzA_Z+2?Y`K{Bj& +r2w)~$E)}n%F@CO*ff4%ME^F%qNujv-2OJ<Z6ke<U_xbsa&JXG~Xl*fhNCfXVI<cFT-|+C*8UiW~@$< +8maUJm~g(ryG%MAjk!zTzEYXqq@Xxk8^iy}`;K0Leu&FZT20-H`T1`l?+q~sQ?s@g0#MyI%;H>5G`Fg +5&)`F8~?Bxr0%;8O=;w^^+)R^=q)0SRrn{1t<m-{Pw)ubWC0R8)@`gR6y|M5t#ipXstU@Q?b*s#jxam +hiyLME!+{KdIqueA<TNXa&grzfem91QY-O00;o{RI^Z@r!LGh6#xKAQUCxP0001RX>c!Jc4cm4Z*nhW +X>)XJX<{#FZe(S6E^vA6JZq2Kwzc2)SMb_3q)BGwN7|rw+r5D6Y?=ie$5^lXfNRWXB+d-88cCO;c0Il +5fA4va67`y$*v3T~L@>M>i99?!?{i4%p*a2GR3t^J^39p3&HD8B_~hi_$wTp?DEC@zwnl_6X5!hCr(c +P`s65__H}Q|EjG)C!mB_r3sW62wTPa@e&9=zJn__M5VlBnDMV+UyQSc0Iq!uv@l^d;AwJG4&MoYPqxj +|TOq!ceNUtGL;a}k*jM#On4Ui|Rt`s(seZ?Av2dV>$4-HF<jg*IXvSKCaj+|R7oY+wrRXHmJkYFitXH +NWarsf$Eb&3hwv<yvL(#OVFmiGXXZiyh2H%NU6wY`bfEa3Vh>vNYn79$si&Xs=UR?{@peRM!(~6S=3~ +sLH?uE(jn{$i7aBT^SqKDE#jF`t_gUN+r*0v;7Wel1V)mSMq;rS(&-O*RSKMx+`@0{YK9Tm%&x*tc-O +f=VDc>EL{|(%n?iloX9r|voB>ev*RPR+~`T1Y-PFtij`8E{apN0m5WqC&o@%vO8r_FAND6FNPFPzxnn +}Kk>({m3m1z#-pR#cc5?E~#kbGjzPw&szWV0kZ_qf{8dFwhj~|!&QbmQ{&`r>^ySjM(@_TH@k57^e<| +$ss$xXbGmmp0a!eaHKOw5cq@ZiA%`g^@qmEgu&mReRIUlj;m$vuU_u7b&|R+$uc%4|V$Uti8W875G6F +hQe5%_wxUBGJ}+z;G3uHrMs`vRc4D^PL1r5r-Ev;sQFnO5>})FMbm+gjBA@0$wV!ScH|#)^lXk`KuzA +c1r%V@VbPyD$Z0TK|5d~m5K92Mkh^!GhlPPLojDR2PxiOy%fcorbS3Z;&LtW0`#DiiCQa}@|>~V8Wa+ +#AXGIfMK$PoG>R7D9>JJE3j817ba>ruhpMmuBd}JRT9auAXKf3Rw;hOSE=^V>bKsfT;{PzIYA!(LH3; +Ea#~U7sggSJ?w_w!T_CZ{z7v4}m_{)P38B{JplEYwb<uUL`kC%>-+I?LO1C`$bBT^KxqEcYY_GjWz6^ +KV-hz>m|t(Gpfti&(_<aD=DRb>m%E9A_0gH5@adcN2eFst56l5JG?u&AO`-sW|d!Bp>pnTRV<sr;rp- +G|~WOczI4?NLDEIx|26kP!`n0zwC`p3Si@-k=BqWq{0i4+@x!9Z(8vAc~cndsndVO~ot#V8{W4*=GP= +jcM**I)MqdHa!B)CO3;D&a&_w2n^^YP_qJt1@F<?rA2MdanciZa{7Y4Qfulv8|@1shsd0ZC*znBkd}k +vDu&kz6y#>`*1DY^-gqvje<77U%K}Dtfu>U@pl-VzNF8a)glYM+G-L_TW}yqHgzZFZQn`^jPKcq6xfC +5Ou3Fo0rlqNMentQ-m~qR&UegT;z7Jvs&plF{pgiFkv_}M755(!}#S0#<>5>AqeOR8gVKlq_!gSWsaK +u&}AmJ6XwjKnC6DKH<T^f<j)g@vJF%xQ-o61}OyO6vMGy(!)RmzbS5WkKy0a|nuv5PB<vd&^7E3sUHZ +Pw^$m&-Z)a_R=Z8gR=cOeWhcmlRh)51rw?VY&bi8}-O8#^Y>zh}e3f(xQp@HO)vlQRc^Fv1LONwMNwS +0QB1TYt)z|S`a%JOxUxojsVzjO#w(4xM#tHCHC98XZ^NBG`}G|KwCvoNgoUHfnHlTE$Gm?g+{!p_*Nb +-UT>iFVeyK@--}x8>I$P{Xj}o4eAy7bUif0-%fU*nQ47(AqP80pwVi~JDD~ou=bKpNb58=GQEl^p5rL +hK8mz(AGKDA&LYvBC?B|xUMFp&oPJlXMGw(`<$D<*F2Uzq18>62b(!EP>V$Vv-9C<XS_Z(=%t*w(T*g +)R`!OA!l;ayh&fD;%2P@vP1cKhPE@TLKWs5Kx+v{ocop6HjTAiYGyBmANb=N8Ss!|_|Wi{cbi-NFl7R +cv7$=3ht1MnbQ#v??rj9oxSFs=!l@%s~ZW$YkS5+s~~b&qzII1A&pvEb5B2Nn&Vpt5VPv2XYv{yEkXz +xj3U#=4|=BeYR}kenb<p2LKE5mdO}+6APrqbZ~>*v=NcW>)i?vM)&R<e}gut+UfupM;kvOXq-Og9Y|h +iRh1AINVrL)x`i2&k0J9_!y63TcB&#|I7u0ds5#I5NCVOkm_l`MmEJqF{>^(+q$)A~+jqekhC3KIVhT +zz`9AO>2g1u)9+@XaDi`)?m`2LT9bhsS@80|2hNXw?1&L|e^s#@ZQ6OTOPey?vo&&?T@gsWMM*OXk8F +&af2x0W9o-%@5?GU=ob1Po190Cpn91O6U<RJC}cMLEKcmhz@QV$gZhiA#kij4x_L{D65%V>#^JP;0O> +ky!Q*?t!FfpK#NXS>4Sgft>%!>c=$Wx{~3Ku@^G`hhAZRRY{_E)&xh!hk|$Z5(*O)1U1CBc`XFAZQjs +iA%`ZIG!Zbn0Tfb*M+;S%A~l~b<e(6C?A9bCEf@m>?SbE76gVl#V`{gXplytsDY2bVqq|gG#ZYw2bQN +4@hrls`;rSr0BBWj!r)QmQs>Z$*~~NGjC_(66=L3qC;IwIZSqcTGZ$FNvq0b_)wr;c^8g3(z8krx_~2 +0e<%-n@d8tf{wIe@C!jZ@t6Ba`ucDOO0v9v)#Y$XQYvfX9W)1lnbjJUTVb4O(Yrv&uY{bCG805qg<SX +5QH)iGEl=Li^3FrA_DRcdt$CKc%>8pX3D7>w+Q+fJQC9GnjL28#PZfRim1has}82odZwjRcLUa>3=2# +0J2l<*jKT&Xoq3M7bJ@9}hQyEw%&&n(%jy^-dgOEI5)TH<B{pQjq~{Hk_mP?8IxV+$_g6KG~rQd*^Bj +RP2Dsn7TS$r<kBT3+P#1oEoza-un@wW5;+**t|XO)|SQ~bbA6$k^Ep#<KMy1*a<icc(~^8J2kqFJR&a +0x*<M2sH@l{Tb^4hy>`w|0&fI^1ajs5Xm^w1y`MO);eAm>D2~yOg~~$%^5Pz>04nNd=+t&5z7#<eSBV +$;_E1Y9ph&i-I4?#p*1JOUEd;G`c8UROFm8pM!GgBzJuqqXOqw^duKiT`ZE-`(H(*7fKVV6-0pw-_*A +EX7tQY6jeH%(mR1O#{FgiMD5bK<lbXe*Y{Qyst3g_47B;d3bf-5?EhAR+mtE59y2`I2)Ind~!>wI8WS +}e~{^*d^hd8^G=Ah6gQX_q^kk@1TyBNw4)?J?L|XQn&T8?gq@g{ez&3{)DWD8w4*My~_N?SLHUMd!{= +6zd@}?DCtyWB_Hk<dP;<eaPy3A}Fc#a>Cl&+{Jo>?*IQfumeUQIP;^M*O#v^=7VMc{7|!h`G%oo>$Fv +1jNTz=#UXMJwiiMmj%Y03`_BNO?z6H7gUaTl3}1Y~qxrRoze36cvAIF_Kw?_w=!GCi5nITNKyH#4U)@ +Qui}#SWl9lfjH<C<(|KgJBpvLM|Pg|Sz6p-WyJ2ZfjH0NCV;AkD>0MI-S9bZ8GBEEIyZ_gr_r|>S;e% +@oA9St7&X~Dzo+)~sB|7-yMNY)Zil}C3Pl9;gVF&k~w2@UzhU938@dddc|gIn*3HIHS)H>{f;>0oYN; +SL=a+T|mo&ZC0MH_+wR*zx~0c638dtcteL;WVgE3LE29Rb<$_VW`Ifm=@X*M^=dJC}10+Le!a9U}1N! +HYBZ0K-bTmK0a$2y&T6p?MnK}<Z$uB4@CAS4%NZa7D1ZKv}1U5BK~WzIyY7RM6hjc7Xx`xw#gEg-$ZZ +>mI2~o6I-1OYcQ56tyO`zp@>u8uDAl#(87=*>9L8QjiQF#ahJz=P+^@94fo#G0pU?mYY_6|tkhdV64X +yiEIGEer`==lvnXeJCXwknViYHgs;`6hK==<ft4<_%P`v9*d?k?+&BVDTrmBPK^l<H%Ei*(^X`NvFgD +WElelBF>q13-18bw%OQDFkh<qCf+z#PiVk5BDH8cF7vIC+4{*xhK11Q*g+X5lX`oE{*jDI)PL3{E=S- +z$W948yj0#$8co=>cdULNFy#GmO;>+)i<amItx`>WeLqBGBxs=-J35f5A@h=do5`%b+g%hXk!MRh#=C +=Qa?+8ux{{f@agd>HhI+5}p_DZ1J&$6xrJq;_AA#f-@}d+9CoZHpqTNzA0mY!fsIN;#+WiRJ}T7U=&; +i-8fukl^jCv#~f|Q{27CdVW83OcWQ?T^oqATt-EMq3(iE&1@BAq*N)QPEmF1N6&AbKG=hg=(`y!O<p* +x!b7>nt``y>WuKfJI-f2{qBow_g+pPqhiGU!mUG5c<0$`gdl7hC7Rkr!lej{i1;ibFngW0$JoBLjymO +Rj?{n1bRePUqt@Bj94|CRuV5|$a>g#nr}(9_^hNp9XUarVBa5hQJ0j<?d`-cL&hF%w!%2}pyjTjQWzY +>OsTAH&;?Iy)fbZp>MCDBi{#>7CJ1h7K~A|1MxZ%sg^^kS6g_ON2IHO^c+)P2BAc7C&-@x432aa5&ik +@iUAj2lyRY9iNOAEh)ys%|o7iI^y#2vO!w4brD4uECyebfI4x*a>=CMnjLNu8zsVjk~3EjP3mwch&0d +vSMG&Z;LtTXbO)q0Sb2XD!8QTQ(o!+FH_*sGBE%q!pyyG+1^YrL-(H}>FWRo$qUlFl{@DiF-Tw_Gv5) +{G)&4LLIA*D};Ld9SDX@!mTBF7fCWbrpc%uOrr7&<lsKMDY@S|RW=i$)xS|7HAjPR$JK`f{629e%EO5 ++O_Z7_nkwLcHVI-kBE%}5<uk{)7spupI!n;c$LZLbFW&=mS)_*`Rhcq({LRd2vw`U-T*>tENPk6wfBw +Y9svj!@jswier35o<x3p+AESImUwgg@#27($tvIbo^>Ce$fU)*Ag|TyS8u#7Q-Gs0wgf47vDl$CC7FD +V0~dKdhus2>b$KlxYbfT9dlfD-Rs@mkm0X#^xg6&Ib`qpgcXkdqJ%q!_GB)e9vK7jtUi8y;+~ZWdyc6 +!O=)qL_m?JWodNA25aKMFQ+m59f#)8y*%rmkA<N?`%5)_7R_01#+Qvr>$OgG#+W^LH9L@2(Vk?!e3cb +TUnywg&8#igwN86=IC$UXYZ$NEpts!pA_HBS%@MeF+X$Se6&3oWis3I9TcnJ)@k_~b;xoM!p`JUG8W} +fXt17ha|(0;^CDVe(A{OoL9=gAo!#{ueVC2u7pT=0lD{^uQAfQp~S8ux;(bc{zK?XfVbtK$ZnEGzCR% +M2=8*P|(GiU$PJns&puiBS4W1Yp}4+w)-UJW*5HR0DTm$&_m0@<Yj+Unv<l?l`Kqy5bEHLi7PSW_lpS +Zf(Y`icuCQ<^1!-wTttI8-AUb_S{ChzUng*@lw@&IX)iU8A<So@b_#*3b7=JWly5k_-R78XdBVoBFSC +s`U|jmQ)tlk9ozZv&|1oJiM6_5xt!TkC^Rbg3k$2yyWWgiRkj-)=}bsPx-llYJ&7HoTu+E6y^EFN(eR +Mp4bRBp)eXpA6%J6t5zk!=YuC6%rE)$tw3SK`VjMkZp3FuLs5+K5WnaEIqE2o(drl?QU}}=!%h11vww +gS*-DbUdWOwS{^ycjrB^a*1mkBw$F3@;z0+EsmfI2CV3cLBuV{_zn{i}3aoA7X!GS&vidr=i^Mef*Uv +Ne(&@p$M6<{Jf&F6grHHoCWE+t%R(ceZSsuFL)r<~RkPu`cj5p50@_pPhhEAM92h<HriXCO(Tk^g05{ +cajfh;f%rg8ohtKRyn$tZaH>cjvnK%A7%*gI8&E5qi2}6w5^J^)vwD4kq(CjVU-ohO{M;c$<Xhg{`a$ +yGBv$BeL7M`i!mO0G7dAZccU*s2OikE$|<maW3~@au`ROWhmS1|DmS5R_wK<93*#ljct4yPhCr=_83o ++F4;|9;mLzi;cnEmvJVa;ymh4p6Zy-({??ySIR?`Q($Iou_EPxSTo(mu+4>djv2(#VwcA!yX8~aOs9Z +0r?TTnUxuaO17Zzw``#QWI9ll-ZyvZ^(*@&beyZ0vhz12kt=HU-BhciSS9c3%OY$_B@GB_y2x1ES6+E +s+<0q=!ev+XLhRYY1boFFD$^Od1F-5FI>mBp#)B`~{8Lqm*_YSHpn(kq8kFOBCN2^9;xc#lkrtFsu|o +P}mjua~l^0d;0dgm4mV6#tsPF9>v{;?3l_#9yP({PE~{(MFx1HrwJ^MO6Q2IkMI~g5YZk6YMiPw`o{w +5Uyg`8yV(&w)1|?-jN?3JlM!`nJ|{%*YieVsq`lewz^5s;S)Z{)pTlRnNk}OdQ>LvaxMh`LfDL1Fc;- +so00~h%YLTX0n+Zpd#I{$q>1;e!v!`mS?rv&#Fu8yDwkuq&Z*x#=tjlZw)c;P(5di(>EinEH5`MqO`z +TWQg@Z82i@8BWfe3QD6^GuEg4-1AFD#6U#szhBizbxJ)6xcgG^OC<16XykSx!Y?T^idRjQyFp7M7I&u +L=z2h!;ETO3?k;$MB#cVduul<PpQ%S6QL;d$N%;9(3x96VKDQG;S%8zvTqfncFHH<{ii*tYO7oOAi2k +-skM`V<dQl3sbieOVtuTxb;{=h+N9*@zdXa{neANy{+W2Ha)razWYS7<$gB}kasthzVvw;%bmW}rNU2 +}YH<7eQw<9jaN@i7C!Hp=?n6aJdOPe-Q*u@Bp>Lxp2B)Wi__CSmIPb#1#dqKr=tCE@2M-X~onoor540 +k8{@_vd0L=L~`)_9bJ-g#$t%8X|Q@4XXzq2kQ<lf&rOGIIwWPRe?Lzw%C@)HR1hX$u<`h*?aXGc(Klu +E4Uvz|;h^XyLxZ}HI_q50ibMathg`-lEVZdWx3lvjK;)L>U<M&YZ+-qaoZbAPbbg*16kZ{w4rsNJ!Y^ +miD&=%gvQ#R#%w3bFxRPZrwaMb?;KdA2&DVkY*OJ4`yhKGw<B8g+=I@JnR)J-pZyx?kVyRu63B&R6!j +GDj_N*1Y_E#t%GX%LKo^_W>#IeR9vk+NhnxuUdT-J@JmW^m9#D*>&I|JE`7uaJy{)UdXGEj7I1UoG_p +uJ-|Z5zX4E70|XQR000O8^Hj4?RZ%J}b29({gv$T`9{>OVaA|NaUv_0~WN&gWWNCABY-wUIY;R*>bZ> +HVE^vA6ef@XaHn!mJ{wr8}vZ7L%iQSLwsCD`>X*$h2ZJJHedEMi<G9^+n#}cWMlpS@_|9$TlKmY_OIq +B@{p0hk{EK$G(aB*?JaB*=I9N#|<W<`?ai*c~2=f_{*n}ef+qu@!g-j><ost&>@!{GGc$>}lt^I7nZE +RVOrtN5SUI)Y-~XR|b~(j=&hpuS3j7u))($b(nKyuOXgH2AjI<Vjp-@D4ttWe`Jqd0l4HO<lmZMVY3n +G_MiXt27P1fA-|*^H)!!`fVM=c@jMN@%ihQ&;It)>mOgf!k19);2>MAi?R+Dzh&!#d0DK2tO(@Y-?nv +HJ^N7=`Daz+>hrQ#EMTDOYf-6B>!QluuH*Vjy(rUzy4;Qr0(j(AeO0D0;^`oLJ4@Gf@QmI+Ez6=D2f< +OWF5|^29tU{=1H4H~vvRUot+o>lB8V#ko|O4*nN1IPG?A+JO;*+L`YE*tD3qUP#R__>3Wb|;`OhNDM* +)0T$7Pk$r%m2`KE=W1@e01FPp9yDM15>Mzi!eEl>Bv5)L1=Ft698;PZi8szL?b8by|&r=_XqylVY9bY +1skjyVtK@yiAj<OlS3XFquo7{wnxeT&2$IQBbFEYXaQ?>tzbvs_GE|C9IEvpI&}XpN4`LptE=iz)kcK +p#kbf*0&dcg;B7IuhU5auciJftz(3t>i;0$NBYyV{3c#z3AHMf0Nzqh#Vnp(rO9Mn0$$2`i|B?qn9Ry +F0UFQZB_Ix#%ce{x)iSQGyo0UQ%dDQvvt`Otwn%G)_)kFBguBB~OF#)A5m%2F4wph06TtEWXtE+iyh= +;>{Gu%0LI?ArT)~ij<AMs4QdW%%dr-m1us1(J_t*F~P5!~9Ol;g<rKv{8f8m!=kW~|=*lfB?4-Rk{0w +J8K^%w#4@9AAQ;oeS$2M6Che)ZkcmlOO0Maz_k9#9gNgI~fow;vDB!t?le{_yy(7atD?!-FT^J%0J>> +1(&_mv5^3vnxbI4WG{7|1i2ggg<{7jIiXh;lX#WfB1faZ070n*OS-(`^8fm#sDev!BxFlzKho|Gc#gl +58j4X_3-P}5}N+z>9>!6`u_Fg+4FCn{tT4|S9QIv#t$B>x9cn_$_0HG92_L+oKP7rmqd1o8fnxOuH&= +kMV=0s@f;o=9x&zCn=%ieQeajJs8Vp97q@vZ-2$@=GGMT8BdRop$&XjK_Q%0%V9T&nf?`e_+ALKP>~Z +ioSORD)fz2??c4Lv%uWXLsVRi%T^jK3MzB~&oq|k4(Wd@WAKN<9gV}`Y#t<qvspM4TN98yuueDUEvO7 +#f)Ia$ZE>v#bu<KlA=Nz0{Ch0BJ6*|Mn8!4Qfa%wV}yfx~t}4=Zx8|2W{9Al`0^@;Zo16lfsDrke$zG +N_7`7J8pVr_o#J?=l6j4z`YP8p?D~HC1skh+V1GHV1)7@CcAp3)5&3(VNo%%KS9l<n<=_F;BBHn+>Dj +8O&MmeZgcIT!By#*>fbAs{(@XAfC=(E!NOvwyc6_I*T{RD(j$%w-t4Umv}H3NPU>vX|dP<&w^zQ6gaC +lh-a#ERcw|?fDo`|$=rERNlhd-98Ci?BIz!O%BpIU21h5KeE!$Z8BMq}aM?^!WG0hO9-f9(x}4)0{dE ++~*CW(Yfcvbf#YhHO4VwuE-2w4d5oJ|DnB}vg#7SLlhl+q!n`ND?m#K@a%77A91qkwD8c$)E70`UJC} +5G{P=0#(46q&i1S6hjB`g-M9qHP6ddsAb%R#@zs@Lfj=Q|uMrDfnfgH4$Yj1kC+lA_YHaf_|%Mx?|!R +JdrBnu2a|t=|GzsixLyr@msZIde$^KdCEdSLqlbgB+TzsA7>2(i!l=fjtJ@e^FXOm|qkCllcaiBD@TT +qre3%;IHB;uIn<Cp#u)fbiIsc>4e|7=)_0LMs~>%u;y<jT~=u)6hb!ioh!Nw%EL>deM#D{^YlJy5gbr +mtDzI55A($*?u-BFzBpAJk`_l%hQ$>1jTSQ`e#Iq`vX@-C3XWl^gDgir64(4XwIqnc4y$5Q!gPRW1$7 +92h7N^;sE*5M@f$7=`Z)dVRDGtupzrf{Rc89zfah-tBB0#1;H8TN6-?iz^!N5^DHTAAUv3i6)!ZuUWI +h-PR*ww9SjR9rke#FefDV6qmCddK(s!z0TWo^c7^EABiB(+Bt|F4Uz|~^lIsyw+N8ow@3fCYP1KtuZ; +w-OfVwKcJqbmisS$)O)b(804D=;ADqQv@J4F?63FS#vPBB1whA14GGm|m<VO)+_BJkDn+LWrBuZh%t) +BVBKAP&<#O8T?buu7)!1_J9eT(UkB(=I)?REDO+}VNf>0+jQ_TP6E!8ngkRLlS!6?PCStn#Qf!KAow* +Gz9KMuo<SYZxicVH(vEnb4aXKGiJ^^yzlliHM7=DEYa;ViQK3;dL;XdBHQ*Kyz3p1KdCDd+s!}wAO2! +LogrA@(q!QrC)jFMJ^DM2ppdo<S1_T<k|KjP3W9Uk;0=*yTR{=aGS$ugpSf-13wjEqvb^*(nYE%zJn} +-DfQ;&pgty-j*7uy%lA}@k*Hlhg`JusL5`rZCPNdf7iA!Ze(fzUt~s<a*@8tN5uPiowJ4=lWf=~z`G1 +J-RyBL_MPP-|s_G$><Q2EdK-;GY|qy-kH<1GbF?BD<qf=ghKcLswTE4vkiy%}ui`9HMBQfpP>mB}0fg +APO_=IIs0mlb`_zrytfRRZ^Oi7<FL4RpMDu;8=@N>eClUoF*!+w#bIDCtwl~UO=oWGIR#5`sC;<^czV +9T%P0#i2fJ;8yd?Iht6eaL3S)ZWw_+qKmaoDxQcIJzGg(wiJ!2_w1RaF9XM~48>kE{F)wPfk5Rf>*V} +NoTcxpV3iS|m8qi>1;kRI=r^8lJ?otFcAgsI4DIh)}6Vy}eSi41Zer5S4wSF+`)p2z_NnlFCp@9y<Bz +K{ih8Y+d<sK991k1JOVHIzAE~Y7H_hgoLOvh31pSXqqJ4B-b1>JM?Rmlu)6~wpk)+Qr^Oonc+iD|f<H +uy<I#mst>#tY%r6Z~*>;WkaZ%C0wJ;n-?cvn%?U>+5&QqZ3X{Ux)$P?Wp1m+#>l_{FC!7dO?Flb^~)D +mB{4-FG1HpCJc%V%+-2Lp2Hik-cXEcIfTpGbZs>XxiA~hy!1O3H*C92$xpT<Rs&oHdGKaRs-0B@IGxG +ZV$F+`(KoXB$!)e=B5dSps8VP^s(`W!O-_e$2y~um4r)0mFt-`orV1MJs18;UW6|eD{j3=bd8ER@3o^ +u;Q7WTbjdS3zG>=ba5B3HfM4+9%8FGwgl~ODI?W6b;QyvmhWvvf{krWz<=wcZWV<Dlf$BbSRWDD4lWx +NF{DiE=2KQckXF*TDrSiK^3xVDK*c8;oo=@M;fbPr^?+0?iX9F;i7S{DW&*W9GC7God2UmrCvvte>=R +>~w{cwW&`&5AN5dz{G#4P`$S{T=8B)oV2CW3DIirO`r2hnZa!1<>)jOy?;|esmHw8t=SKjLMVdpXAzf +Mp$+{+Nd-+XU)z|q+W(~gx{OehPibXye<vNoK+KcXP;@15y<`ut+LRxC8e-w<#_ARbadE4mLo;AY?Fr +7Q_HCylBYdXEe?exH`Z87l>jstP8xDpqk*hE)&pWPQJ&Vowc6eZXRssP;gQkFk;Z_*pm_Fe!aCtSsxI +Y)$p%ekGy`r6q8qd{fzYNPECSqS1X@e71mqI?B@!Q7Li-iyt7<%xNF>TIL*KW}#6v8XzKxLyH8>C-MQ +~F^!Ef1mXz{qlOw+83U5)ej1}u~+P+J2$2;@NY3f_!#|C%*{0vD|>E(k_HIv?>R8~Mte$PQW{RE7L(n +bq4M1WIbeFO?XI(w4Fakrs)S?NG#Vh8$ntiNm>06jy4P2bOYJ(y6!9Y0KLO;2uHgwgzo>>BOxiKYqj= +Zdc~brzlCm?hFSYZv*xWqF}jKvcu&bI-3l-+`~a=gMGO_$S(G4Z2`(sX?6tFZeWjae_YpS8j)s&z<{_ +_eO%j$#WFm#29P+!MK7<qsDkxvyO$mPGc^Aq2e38H`J^s13z=m3ylB|LUc)0Z7*{OrG-RwE2nP^RqM+ +-&h*%Fgta(RFL%YHad0>4r+TI{@sG61WS}VPIfV+fXkT24qts4VoGgyC?$^`vk3_*RG{_AvG1&27C!% +=W3s6A|W%ArEtAx*&{VBzq~MiCyd$It-lpBADV+(0!of)myOPlv8@LQ`mO|8j*P$^_33r^ACbU$C7AV +i$?rpkM>qt&Ud}1{9<v==XC_!8&C(%qjjJEsI-pxkR8ymbFOSbg?)a>|yEKi}7AH*7ObfBdO2W1oGxF +EzB-QSzr+&cf9H83dUe;QnURN+GSugD;w?ca#4(cRu*750f1GsD2vV7RPx#k#;JoCAK7>>%4~tSMvVu +<Sd8}RH4+tmI6pqQAc6m2up5mA!1FOwbfLC%A-mUJe~Z$mSYNRfF#|k0d29tov<p|QX}5rnO#svufo$ +Nx#G}6B?|`4htC1Td(cb%RRmf?V!PPAHYt05=Eo?$T<YTrS-4;0A4e15_ukPgl&j4Ei;xRhVUtX4;uA +-t)`fDkEsH<t&(q9jF2~=sKpTf{(NouLwdCSe=VuQhOxT7;`lBCBC251Y4c0G4Cem;n#DDKFFH|MA0i +{X&u*bQ<p#tQAuT=ewgck37NQtEIr4942SEXGHc)NNeiK2$i!I1q}N1on#U72mRAW4WjurqOE*-Id9s +B4@(t=t#w*wG1`gs*m|;mC0*Lw%G?;47GL(bd0aP3|l-E3U_cfn=eEEsBAk303Yora8xxB%=>T-oVj{ +GBI%kN*_lM-NRtm_QS|a*J!hQ_S=uXr!Q}uWuDjW(P@>7iG3dtRt+vp2bWq>3C+oyVvCrMCj7m4GV=u +Nzbqv<IAJe2-|3=1%&z+ekK1TzI^TM!DWS<q9=Y9HG;Bq|o!DWU-ayNQb4^Q;D%h=JYMo_%~TCq4nE~ +t~CX6N%6o`cppVTErH+@oUH2*257J5Jb@jYY+%Li?)AdnfK*(k;coZ&)(ZEp396{}&4$a>?q@C}e1%Z +0N{tE$-9?1MIsRieWjul+d&|I6bCVgCI23+#wkP7-=^m7Qp`h;0ZfdmQ9=3JKQG*vklqHtM4A4e)jo@ +JsdxL^VtrkhNVP9ivt-RxxWx=_T<Q~=zW9V&UI;<_mZs%W8sjm>MDjFq2ymBpZOw`(2AAP0?*HFbf+y +uRp&$;e&*Q@10#P2!Wn-^moZ2UjEEME`o<;!ZEa+Bjf+r=fmZvBscQ*r*60aPA<q;wt%I+yXz!Z%i7E +qWO4p3_K%N5%H&s8<nlat*LpJ#v$D2`|-4GJ)F>3@D`^y^-#8t6OD(WH_;g%0`u}tH<*^ATq2?Z#MpC +i|PJ>}>$-J1R-AxaK58Lf+T$bzbw0%bv)MHK(D>|Gr>o_i?`d!jcX&ZV%uepU&wx~kUk_&v6<z|)cZp +`#K=q>vGhGTgT@daJE&{h`@+5gtpFq-$|>Bl8CosuvE|F}TJ#{O)1v=rl+o35-H;A6f9mPXEo4(mTV+ +ZvD>NI9_=JKR}P7Dy=1^Dr``g*5Pm%#YtkjY6w5FsVObHV^#AjIBpiG>>=xTNPUh0HwaV!^%+NEbZlN +`?8vravn=<$3Uc5uJ1k1OOGY1cvxZ=jm@wl<jE*<=sx9$0FNz>Mi5?CIxCGZ}c@?ia!?@_-Dv!<rs5J +_{3QqCQNBH%V;lS;NfsHYG8!s=>k8pW8!X4A%7JomM0(x7vxAnTfEjdPi5(PgtF2*~9!fh88D6UV^I9 +4#GE$Z>5xleqlH;7TIgfXEQzPw}s6;zwqRl8klW@jpXL5<@MQobb9$vHj~8lNq0R^DOrn0D~p6I*PW# +sOQ)7FFFVQEqx$)?p`3$V-cbIgwn=CkeWj7hxHB+p!HbDU3E*5Z<eXgOLI_LfMpt@@*J3=X4Y#9TRZY +g#IXls*G#{6Yz>wtEw^#9tEd>UqCQ&AySN$rbYTB5*kn^7~QsEcSON~czC25H66gx;+?QcS4$QZ=eD% +DnJudZbILt6A+l}hNY^OVR7+k}?wVC7VyB}<pX{(8y}@Akc%7%x1g<&NU3NNO_ZX<IGaOKxG$43mO3( +83`xxQm6xD1BS2Ti0yh6vKteP~x_S?}kLn^?oqbs|+(;jqnopA_@$>IjR0IWwTI=C)?`IE=uT4OEpdr +w?n+x`}(>uRGg5N?gO6f0v(ao5aY1SzhQ9?Z&Wq$0Q!Pui$eOQ)h!e_V8gYx7Ll418?w-(sm<JEaVfq +Rzz?#QkVhYxGYlaBl8Ls7Et=wL;tar8d7?2XD$KeOs5YXH`q!C;yDPt9<n6QQF@(Ax_rxgaS(ySNPZO +L;CJ$Shikk$5YcRBrSl7y%5Y6x1tk2xwmUx-X-O$WPe&slnz_*CofL4)!Z=Tz6fN;rjv6i7zXk3#S?W +rMgBVHQ(hZ!b{Kb51wa4r{V`N)VyK-%DZw)eX$6J3D7g!>I7j}a0+(p5RTRw;tTGOK4e5{zIUV>F*<r +-ZQM}qGT|CDZNEN?-{~DIKwTHFO*#%cav`%>PsREjO8F=fk12;MjUg+3zjwJ-ul@Sf200eDjouP_UHn +iu1cjizrkb&ya*;9_L^NBtHX8*S5`B072|L%xQ6?4p9w#a`z^-f{IjU$;^#Tb^gp+w-<h9$Tfm$WZUP +n0|sgBZ<*W-jzLl3$k*=4FBvaKt>6jqPwOJUH*KMD7=FC4J)lOdqiicbe={FcO~yem-Y^#f86MBRsgQ +cHH`lFFB=!6lYE=?*<)R0Rebhlu2dPQ7?f#pI>xTtTw9^dWOt;^3G{XJRPPX6)G?-;oHIE^LfE5uR4F +&mY+?hOpk)km0|WN+SfB;RqF5?s7Lt^wCBJrfD}x_$?}fD;<I}M+@ZS-!04dQZ_@2C@d4Q74RWMmBMk +rZ)sN5bDh;vTpbD@mV5LsWc?>cIWFWkRMX?1%Y?aAjfcYk8za_>J5<H3`QHP^ZMgnz%aHNw}?=ABhX< +`iMJ;aHbRfDnqrx6t0q5b3=&~f#02CRWM`1eT<`w+H;%n^F_A7J7f^iNP07!ECOkl!*-q3yL=Kzw|T{ +<O(om_3${Fab_D1XBRdL5D-oIp<_N-nKMh>`a8pYZbQH9l3D#mLAf9<a~gO+Z6%HZlRLwD^8NT2$JOP +A|&}x;gPh<^zmiU3KGTiJi7jQgB>sDHo3Nj(`McK3Lev<>E^bEkgBw~vLC1K=JL%zceDFWR=-Ctj(~C +8(xDs<`BrLO3$4002%{1NtJ2VSVCyT;N4<uhCg?MRy!$;?+_!j%Yj_(Zrv0X#;%*C5s;C7hpS(qy1t_ +1|rF;ZmxD>BT?yHV8q+RUPN@yNFL@g=qLgYq;_o8%Tl<%__<O8!WxgT|5koCGF7rwjYW#X|_crOjrU( +2D1R-rw*iq9UM>_>hdtLX)GSAOFU543$y#zE!vrVe%1wlH-ZSmNhPn~f0CI_D`xf`Q7DCgSlk_&|s22 +kcpYJ`z4uNQKH&wg@UZg~q}AI%waMiwWirx6sg~S}ifpA?~}!S-Cw{5ie!BNZ;~7L=H1i+v(!yL2t0Y +!#($Wc7+*Hviy3a54u<MOU*ne4Gyo$bbc758S(OLwMvsLu2X1vjXRi0nh3nY{*}851HwFC!6C5q!v-p ++8fhBg)E{#CPT+x#wTw&U&Ps|6>YJq6VU7?Otp3XWd-dg5Mgn3a!SkL14w0}-^98_?-O%(cqQ5yYGQp +7sRw6aTeh6KELy6ch6WiD0!|>}DU%|VRN9VsBUfdrZz8lD!Q+P9gH-mTb;uCoB2&%ow;q4GUd_4U609 +$Fn!*ez^JUnw_!Gjkzyn_%ScJ%JkR_{J@d-u5o4SEKn<pguVJN)yC|NP9fKA|)^cB(q4@D;v>ZqTSWT +iyBK@Z#$b8asS+@$t|F+MOYV^8|LE+Vr~@n}jnz<r!+_w0IhNm&0T1Yc#W;%ur~f{nC>sL}}h;jD>5( +(f780aHW|SmIdaB0WP72+IQf>Z9z_4geQW#37)mhC#5?bgY#eF<KG@0|Mf5b<KxkT@t0>`|3`FmZ}R5 +NyW<O;I*=gzhm-VCPYJSueauY3Xr<Ec(dxpwoUVtape}%I^YMC^Azx%rJS{fl%g#!dLyY)LWC{lVD$A +SXMWD6OA?_NqI50#TrBW#!JmYp@N(n*$=bMtcMBG;U0Ng>Uln-nS+LLqmIs@%-vql;O3`B?a)P3-2B7 +8)q^o6#vjY~nuJEKxP%@2L&qDWF(4p-iA)d$9Lkw<e(C<W7E(6STXr1qwnY%!KB91PqMB4LND@1G1Vk +cIP?Q}fFw^u;$m{{2(4@Mq?i&j*g}$xDeXxTZnmvgVgh9L2WR=g^urDJ|J&+w*EL484ZIBA$lJcr{I8 +-~++n-o1OLZ_$eZHgu>~{=?z0GZ2b2E8cW~aa$RG{wt;ZPf1<DL4;QY?JHwYO-Ub|c%)Vw&5_!00bZH +c9;)FTRs|ooSY<f%IH=DbUSPivYI<gS^!=LCE84euCF`@_TliSJ3VFS=4plWeRAp|WX$B#OEn5MGq?( +nRylV0;a?0aMQa&ISo;~>SOAMMKZiey)Pjc3%ZB)pQf<;lVMg*VN*?NGwAZ>48^cQY>OA@xCye5;E)U +X&-&td~Ti>oW$9UNt&`=Qh;o6H1B8ZVi#-o#~wb)T@rJARsTa%|y6l}c8LvXK%bH6j0)jBE+G8H_2FG +r6@^q!cwgWq=v0p@7WkbWAC%qrbyH-=fsPZA4IX&m@U;n1HU&UNQql4xHG6G36hB?^Fh?O*B3}m~U1S +L>r9a?BwBl??$TM-Ob3dC~9{{vMna0mh_Bk%9jx{O3*wK%(O;PYm|PMXG~JhR8c3pCi)W-ibzg}nT4R +<N-H|^S~6_)%D@o!3|>qz@yI;j*P5QqTzEj(K-B$Gq}8>Phj-ql?c195uKGX3rEZl}I6PC>w11u;&*; +nzH>vQDwJRq1r@EN1nds&pvx`mRWO7w-WPt|^M*Yx{s}eW@mZ4};yNof%P{8=+GzDDm8po+}wnr}ktJ +k3^9*n$fpMEyRtaK{D-jw7;#=G0MD)oY5wm=HVh73r^$E2wdr|u=z1WQ43OGNVxFneG|D3id<8`QMMn +ywnafN|0Zby|V50_0$pbN)(9m`8g+7|gCn`I!1fs@@EhLbqcW%LN3QN-leY48^yw-ia!XP?k)76QB+% +Pm|-|@#N&xU};XveR}n484V={;bCyJ24UaKKBTkuand1HkfFQ=HKo81#GxcpCTn|3peb$yEca{$QUjp +FT;t*eaKtEq4+LQr8C;U6n$+)f$|7~xV=t+Z+A)jdb)vAIIA2Iqs6n{yA#7_Z7%yQB%Ra5y6U!^jR)u +QxK7A9Xt0E6=Ekl0AGx<(hBCE$L(yTV^)7u!>&OVcuf(fL|AVX!)a}$KqEwq>OO$zu4=owUC&gzEqs9 +|B7%4@R{_FNTRIqsf=6~OsxoBWu!sPYtR_L6{tg1_*RtKu!IAEt6g-Q}cZ=(A5_RHUSX))Y2JL={dvW +~=6e<ZGkU@Z8ROfvovFaf{oURMt$_AG_ViQB($t@QhXibTU-w0@kU`v!Jy-uyaqdb3e1e28tz}da(U- +Bh&f{Ih@K_KfcgjJ1Uao9mjeOJf?~<cP4%8Q_i6Pd|Ju#?W)$Ybv6uP(HS$>WsBe|&F_;GIRnReS?-o +MV7O)Z=ItcR-Xvdq{_gD;pHDvj^j%!8@Un+@`-SV4gIgHiC#UZw@hbWJ)8V^SJS(cVlds<-9}nM5ZNC +kXIff^<`nEIY**BOJo_!VpowecQ$qLf3KH;V8q_4eT%(Rv5UMM%09n64>at20)&YrWgvno|i-sH-uHd +##}2RccPl_1BP;igO%VC1Ex>3mYD2t5bo%*?d*@i^_MY8`}wrUs;`7#(PsGB-pR<4oFFg?w1wN<h|J( +WL#2>8gdIK;M7{M>YGi20FS4>IJ+M{It^cYDt)t71Y{}S(j2AFV~kCiP%?*0d^hYaLI#Ca~wa?tVB*e +nxk%?%{16GF>8ExL=qAAAS8LS$+Rh}C~h!xaFMR_n2~iH(_I+&(#+#Zc}pi`6A0DwZi{3TEZJ$(v1G; +jiOC7slNwWPJ~qjxDH#r(6hNOV`9AHloOr!KHrp)YmXFoQs!AP9I&5A`&GR}qC;Xr3)WnWjQ|3vf;mf +4XGO(2z|Ko0E${T#`-1x2RQ6j5tql!{}_^dBPB}R<lK+K#@mXN+f8+`7JXZ??WS4xH;I=pjLtWqQZI= +~~#$UVW+ivT{o)xfK3y0$=PS)9Z7yCSrM`w(U93CiU_Xgs4HMbyU`Lc+lqI(Ra4!$a}*je_>XDJ>V}k +U|S~iEjsO-Jzoo{(e{$tUO81VG(2f>qBb1b`2h<SVGtBW+t=1Hh1RYW7Vn8WZ@(V;_i|iZk5lSE)9|! +)l~j$?NS|4dP!tTS>5;?c<+a{Y?OF5(p%zEa<W~vH)0G^7+5pOd`zmp#TehKf?a5v+;lbgITYty$2n< +5h->G&RxTH*YZZERT@Fv~%5AgIDcMPBz^(tzNE2d&3p2qliYaoL#B)?tKntK?g-(9gc>oWex!%r4_JB +zfF_M60r}s1*i4|G>jaAWqVy*MQpZORj3hq<bQlY0qp-!6L)*cCnWi;>615*$)hMFyt-NV4A)8J9-S+ +C^I+4uL&GKqF$NMc@m_xp`CF{xx%dmW3$XYC#y{ea9{`-j|gT5=eucZ-*NB^<9z4)yq^fFS`_SX9CIc +&Fv)yOsbS5ysvXePqw_E9I#{3dSAOtVT~{G-x-@Sw1ui)~sNct@C%2!%8v?;L9V--c@B7x32PeX8G|d +T@_%eusPqb%%6Y$Ie7i!H$Rf;F;*99NFwnZci$SDgPZ_(ke)*5Vb(V*^csP=qQOxBIfg#m7HF=Z3;=} +%xT@sz#l8MHonqz`#M&{eVlr^`YG`?i%UAr3<;F<y!TSjlsovpOJW|<)*MQ%sPM36%%qGw3E!yG_zDa +MMV1Ro0;AvcKpJ5l4%Og2cbWAq~9)pOvy9T>)l6)G;r*YG3Kw_<^C^vVMRY_J-R$z5oDR0gXeL_h2ds +@2{plI<`hj@46z}TZVjygI{o!<QIO|kY-M>qd3DiS6?W9Wtv=IS0Fq@DRQ9mr4#jvlMtG}+~YdZi9c< +B{<VU04Kl8Co+8{JKwm<TCvgx+izIvPCQRm!17<@OXw?@i>*eR?PI3(RHcycJO<fH*|_hdjQ|2`oMIT +6HRdEJ-I-aw5dH)bHB?E#?v-1g8rrj1L`;g8T<Z{5`aZ)KhSsoalpUYs(y`0(kQiBm#);h=v2}Nn9zH +~H;EV78l(;{kj$4IUB;(<*rT(kn*6TOsg3xK(a8uElztsVw(r%ftKIx_Rr?}9Mu{=1O1e=dvVNEn+{U +mxr&KxyJD^LqyS<wj`6gG}Du19gU47VC^`pV)g%K3jReGm_YJ~TxBR#5x9!#)aB+-UDF4Mk4%Y!9uav +q-yWW!_*Vr&{4JEQKSSttb?bM&Mp`0oC<B!jNwxoX21w7$sN6KAa+r0IwPF+VyBK7IJ<&O9GRy!E$Es +I@76x)WBYJGJkiq5dJw<Kwy=cc5L%GO~u+qR1H4`zYRj$gnzf@@5#0UZLqGAo~OFL&@aI$Pk+aC8yVA +K}Q`aJ&zmHI`}FMFzWE^{Fg@;_aBAlzkGG^@$joZ(=AB;=t-|vz;^YS${pt#Ubxy^M}DTCa@q-j{-J6 +PlNsC#I$(REI1OYs!JOnL@C0)jF@{D=Cve@)3FR=pZ|ELEuvPXr@5?nfOs{h8awK<8qJUx8Z|X$Hd4k +7SrT=5%!w{AcASP!A>>kmL6(s3CD0f9?2$paJn9EN7av$S2H(=}E;JunaQRo2U+>c^r;SD>Rsp@!^Qm +je0kYaFjuDUMh-d6I9jyNiX0v(F=@e&sMvcX0-IJz?uF_b1F?{vu4iW<Y2V2;x^>h}XTEd+;;xzx5t< +d~$SR`y#wt?;jtA6r(YZRAmr4^6J7QKpir*$p?V843n+MS>=Gab`(^{PtBVF@{`qZLRX2kCBISN~a|% +uwU@BP3*mxq~~s;uY<=`a7z&|oU*X#h`mzehAmJ9@%G>#Gtx&^xQ%-QJxH)pu~}TPho<85L*`ww_9aE +Vc}`SE_Px!jVJClVBnjdWnFl7o#XG>UU&Psfu5RPyb!g4D!+^<IPHu0i=JieU_LWT(^L#{&c34OA+#r +6w)tq`b&;5Fic3kKa3G4(x>uulk+R8I>iYA!5@Sx#6@@w-m;ASZ&w_gXn(?<1<TPV7+0OQlWRqWp-7N +FX>tr=UpiM_H0|2dVP|4;Dz{8<T}!t&ma;0=9{&j)k9i9epgSvz{4j4>3V6EFFe42=HJ8JlQRsYzZU_ +k{BWa~bb`;F<u!%;;pBKITyeYWsS&#U2*Rjfy2oSinnOT741w0S}21nCjft%@Gud(bZ5hefm|Oc}tUz +P_k}|4Z&LBd0&uz@gmDfw8pinQ7zR?*=91E|8CasXG|d@ZWjY+ljzIR`tWU=E$KWUI&}%LD9&`^WmLR +I)^r=h1v*6JLWn@1;l&KioecCl#l(2x6Y%NW`=zs93GLQYHBy$!vtrzvr<VZ-*kk_j_O{?rv-va4(2* +bsZh+46bPm;$4MiI@>%jw}Ss|?-TglJOtTmEJzsXLs2Y-}-p0(4-yw9y4gBQzqmSQe@8M)3)vrkv{NE +gzRyuB&1e>Srt-uB}=B-}h)>S=C?(3eCo%QJ3-@a43@$4*8O()9`>r>1X|k;U311wT!Xk=5Ck1ynbhz +Fik(ZP%4|9n~a>1l8_K>0^}j<gPHQTiGj&dD!XvsOlFW<L@B3&=FIy7lJM>_jo}_d%)zM%_YV2%`#9? +tI$O`*a<(Y9OjP~i!xo%=^5$7<<7Kc*z^Z^P+T8~0@#&Y9Z}UJSob+o+6TrQ6z^g1qXVYIuus)c*bLO +|jbn(bf<jETF}_<w3D2`YMXq@E$RMody{_+0GOxY6*>m}mN&I8_*5-S<O}j9z6kdA`_qrJV?x}C|(*p +vB3-zpOzjv)SS#WJK-|cUt+X(n1B;E8K(_!4?0Xj_65@Ts8$201IN~znqbndH?f7sel0NDlUcIZ#xcw +}sm(~*zFIbKKh36;?EYBR%75a3$f!jy-jVqUh&;i^Y$-YAP+NpuJH$mS;0U&0ztyVbz(NE~%P!A@sZ1 +{#0wfM)s*z%edt=Ow)Zk;PYo*yVLk&TPwp3J{}flXefU({xEeKD<NYYW%yvnpJI+z6tZOJ8#p5vI=ZC +&5Eh)`yobh2ySd6W}@$tpr1dW9}XZYqu;3nD2iQ3>1Yn@d1UtWJ#CWT-=pJ6Lk!lP6m2&Z3W;w22+>` +KGlU#6YS+%q^xmNes+8zvrS5F*>cKM@Zz+mCl}k|2Q+``!b?PW#BmLcfNtun^h@EbsCqEu_ckUZrr_+ +NGLf3fAd%{WZK8+Elp{5$$DGD9<bjL;?=%(N2*B8M%pw`}^yYG`|fOWx2l8(vj#FC-`!jp&c8pwKfxQ +1twyK?~cdFn5S$)g}ZRe?D+g|_ffmlVtib=_YFG_vB<sVx?IAnI!n(YGmYW~no6cry!yUuErdiVQ1Od +#M$7A_~5x+f!roag6wOcXuzU1C*T2=3H(1N+yY3x5gFBJAtTsnNFc9j%NVEZ4Ho9PI?6}Zo$~k3mz7~ +soHnmF)(r|RhwyrA#ZuzNJ+6bFnv&F-M|DbcEGx&l}=+*n=$4PDFF(Wpi2)iQybYWU8Cd>0y?RHS7_O +zR%g44w*Sr3FTemfNn|fFvJUHIaxEiFa*a`Lc=o;n5HVN2?aQCgLvvxdF=FSv+f3E(ee1TW-afrzmy# +QSdRDKe_j_F0v-dE}$Myg_9Uw@%Jkf!9MMppQ|L3+)_EQ(UQEmeDovlfDhUrAYvcB)}+P0gp4h*<v8T +lh|Re})(YUXUKR4%%fWUCh~WuDS870BSlDNmKTDge_LM=<YTM<?)dy3h{L{Nm}0;M3F3g9rTS(}&T46 +I>1m_85s?$}#sGI^2H#BvpJ`4kOjK>ntkD#RI;C<-wg?k><@I{(9nP958y&T`noE&fJiCCK*tApFjTL +>Es_zU%q<w<MYYOr|wC1%m|6}@aX)_?eWFO!#CCa9jDjJ!J7~>PM%@L$Klrq04C|t`7cAPKKu*zN}OT +ZQ_LB#{Ap3Ymn2=L*N~2rSy$iaDqRM+jGHn>-O2JE@tpwX8E?Gg$r0gQSMqclgbn$rPn6csnkBnN=S6 +z9L1P#sagx}sq{ffefrH0M;zV`mByTiF5j#pKDF|zFP2QdEM2@#tg^J_Al^WMAr$j=RX1#WqCd&S#<2 +aukr7liRt2PBQCe{^PDkDC6m#&SRpV|diO{QDofamy6%S+spJC{pfOh?tQRi3ViSG$3c!hy{*ty^9Lb +)zE%;(;owf(OF2Hz%<SALp&sNTy)Uk^DaxxmU~EDAB`Gl}(>F*ED?Hp$)|#wlZCT0e44wdr6gClG6uH +cM@IW7Bvz%d^pkZSoWbiD)}LlrxTBOsIQ}tpY;B()11s5P1bu8o^pRH0M5XvOvKaCraiNi3N2{sBN}; +58<wJ{E*E8rEz@7SD3;GhE6gb+o}=NcTX-E}Ly!_K+LUSv(P<bi19a59Z*HG;n+(ld$A!l*RXZvw5J3 +P$KQMsH4tHfsZ8R=oZNyM>8!Mtpm)B<?s?B;$`9J@`t?qdo;)qTxqW%%r$16N50P`xh*ikwv<O;rv5@ +dN{Z{&Pg>ttE~IBX}HsIBs2Ln_FSCPGJLwVPV>&Cd3=okTpwcr(#*j(p7_p1r8YurK$ZpDHDV+H<Y6* +^j!b33F5qCe8I@lY_edLX1V=do;(hxWWUN6$V(=*^PN!qCaL{7Ou-I8ty;mrZ}j9IgvH@)~zCH{><Xc +6WYw9^QaK}d(NEOYZW(cyS4fkMsE{rx%=F?RKj1`h{san^}Fx(vV{Q+7&2C-YYc->(ewg$#4Z+kF$Lq +WYisLqU8k#c%>tGHVRpu5IygT~PQW6a?Exq|o9U!T8W^QNq<E4WE9`{q0~AR*RWI*4R+4{G-+$iNsNv +rNzQSC2*`DY!`nQvzu_(W#_z$&Zr3S-yzF%Id@myX)A1Vy5L6Om3Ta_^uT!xpIG;*jWi?M3+0R@|RL4 +!HY0SvPwJN*j3h|-oQqGnnU20j4oQx7u5V;%T!ZoG}yuR)rc#B-DC)on5=c<7zHA+Lgo&V~vk%6r*!k +{}N14bHdP7{uc%V3r`egE0+&%hdw9&+InmZ)D7gzAr%dsCOb;5BU!*lAx^)^is$qdv2Pi6B@9(Zz&_H +p39~$v{3Ahre5cs<A$`{OX?nEj>Y^H)Jg*1$jnX7ye;wipeXjFY~PFABO5BO#%426H72dswz-?`7csZ +W3XRae+0~9D&!uKN&GiGSL94u?N;Y|H(rK~19)AchqTld_v^vxs8#;RH-WiULEMnL-0-4sfNk$brb02 +!hfX2}?;YMpv+cX{<L>UHT<*__lehR<D^5<3RkXWdxHTs!asv`<^obaXBl0MwH@SXkkeY%`usUlNA*6 +u`Qsjy)5T6&c^)t{D5CqAaFaydDcX|L}Mhdc_%5;5bJx{t6KxIhh21(D$EK&}V}F?WS=q2oG*i5~^y= +_Xr(nYSy+PE`cvAsj6|G^$B}TwdZ-BLAYG8|zYg?b@ZZ)4h!;@e>^Ly1*@{kvM~eJdBomL2dFSNOigp +1_dIE?U)jxsK8`nLY2c`2?bveTNA*>`=hF`sogTOF*9Ac7K0vQlbVmFMrD)4`<`wnjdO!@%;z`06yi! +Q&HR38&1vKr{m3~92JV72TwZx$E-wuNh0<#sIdpkR%WOz9$nvqfBSbk9^kPq%AmP4V8FSG%6fsM6QPs +y15y>7OOZyY~@ATTiuGTvmd@B8c&b(EeSDZny3Zd&?UJf>S1ua+T3m!mEm2O}zWOb@d#63=!s-hv`6< +D%^tyinDMU?t?h-`19VH~-M>3QR%<Gpe<d44BO&hHzWui+J<514O&>6mwVVqo$3{+ObQO(tV&3e6A7! +$Xy9rhgQSu^@3AP?0vEA0Z9k{z*2=@S-z0=aX~+$IUJZARI6g!{ai-#^_^`-i$GF*X+F!3~EUab78x; ++ps>RZfo>;dGK*Eobpn-hxwMwD$udQ_Lj930;fT1D}Xm6tiJcMJ<nr`MdNcj(5N#S6`$QF)n(s=54## +2?sGkI9mz@KAd0-6a;HYx+HltE-qmUAA}Qo01*@9W%&cajmJ^jJoI-3lA{6f|;SUt`XAjHq3e&qD|A? +TRYMDv-tOebnp0$*$wl~%vNN@ye4KE8?C(|$SA5`%su&`!s`ZRo4FFo^g%j4OV;c%Ug7!5tyB^)ON1t +GUw54N8qQ>=`sVuKeeiDmz;Ic+g%xdf<9t1e3~Z^2X*tXfGUv$@5IC_XCV999-pwMR_>8R?d@t|H$;U +PYatRIcfbn{`$91~c)D?^R=5Pv%a8)33CbIeW(Uj&>eVTnp+4_bQDLY0Mry4o~4mX5yVf>pKD4vNOmn +r)zq`3zYX&QJLeD^|-lI9t~AypOjnA3!^2DUBTV~n*xKv?@80nln!P*+K;EI=Lj|Ayy=DxE|Um1prk~ +?9jcc7*8nlv8R@coiA1iB2YL`@wn_<GRN7-xhwmhryP=|eF-K2FcBT!I34Fr42CQ^#dnZnMY?}P0f`| +3|75gKva*PN)(*r;T-*^uq-!6tT^bjEo+njz!`c)J)yZyd0Xr}Nz%VTzF;$6Ik@4(J1C}z<;TgIog<t +-`w>cR$jm#7*&9q!(zC;gGySKYx!M5eE!9_D*j39g<FM~mfQ>A+$?t=?H~8-vmEd)+_pc-KqXRFLRV5 +$BZ8W8Lpl@F)T6J`KQB*qVVwe5r6av>lp?kUa!!C;*Q6D%ydXN{bAAin1TduKbnvB<(d-KBn}lMi($L +HQGh<)Oa_I+wD;>E#}8%k>^pe#j8T&Y*2sje*jQR0|XQR000O8^Hj4?c&0UHY!Cnd+c^LL9{>OVaA|N +aUv_0~WN&gWWNCABY-wUIZDDR{W@U49E^v9x8)<XfHuk%I1rl$Dq$@FvGqby+#>r$IXX|NvjO`vfw#! +f?B(bIll^`u^rayk)djLrAkfX$HrpioA5x~Q{FF-qNv^!#vh?8tKW@RxQ{Tts5b_P4_KrGjJGMg97J@ +DAxw=eca@ZU>zwl3x(V;5pttiqhL_oB?=ut-Ga!>S9;*@vTp!;_0czql`0n8obi^yKpV=s!PRo}OReO +PDu!`t<4GAPuEtIbY^n@~i+HSTW};O=Q8ulueVAOO|9TWHG$TlS!#|865szCU;>9Ygi#@5Jpnz;|g3o +WH1%h-@|$-7Mv|}F-iGC`m}GdSc)9Rvqe}$bMrM7vl*aZz6xoca&DgFS`G%&Tr8N+^s9HUU7Ab|?<2l +M?DTLX7R#_OlcqA}z+|om5m_@7iR_N&MF6wsgTWvO!ZZy6w$HAd<1kC6To%sFV1UT+9A0ZI{TVMl&^t +E>vT(tJz#9PjLw3!kB2C4L$854z)XQZU0Vlp;ho>I~!NKW=4{y&d4ui9|mzRg<Cjd0(gfMW=b*|yF+P +%)4A-+ELaKZ8M;mPIUyWqpo$zf~yj=%fHeY1a^d4F7I@bC{$FJyn<p9{na@OoEr6cvg$PNq|yqwGNJW +m=#H6lI<%gtbuoA`df}h6Nw86=xaeF+f3K3no+4%5-f(0{H@k5;bTla-*Vq{=Z27Uiy2?_kGwskp#*B +n{YPCMTt5NYG$o`>Hm|74AeW8sI0-+|1Q5jJqdm~Jij<PMUH_c_#ih45)YDWDz3(RAf<>D+Q`inlizq +$c;f+s4=CQ-mTFJRBrT9=*pc5aQ;{1Jpz*aV_<{(4uLTf_3?f+Ja+$7i?p>HCqLd7@2PR|^iCWD;@m2 +@}Rst}Pf<a(F4>6yz0I*JqAaEs5r(iCj<ohQg;~H5r-#j0|<Rk>_Ip71ll0}$B0JoYjUWR$NAUI=o2^ +8QH2q*^zh<uHBDGE6QZ^3iFcN;{;r<MC)e?HoTA5J9xb<Ouo<O_O1^FU-U0LBolV%PJ$CMa+$-~>=y7 +2t1hzU0g1L@+ufl6{6;XbzeY$qUz0B=4yI*;zSBlZd@NJJPQ!1|#<YD)G0;)b}VC7}82W>>!~Nekg9( +h<*HMaQgVsSPrm4q-9Z~hkQWem$gn!(Hr-3mz)nsu5wEk!O_L};eUtp@b2hbJ$yL%VX%=q*5lPpH7gg +Qu(@0>FT&^+=i-cd{!%P)Iu82qT)!{nycz%{=UH5%vYNxjYOLm`wL1WEy~coI4XF|u9%!SBbG<=h7Me +ZIL>E9Sn$T%VnWi+QR?FW+k`c5aEo#A3+VS>IBr)hcx+cZ=2>2)2XvBUi(Gg^vtrF0LSPVhHVRp;bqI +}YUL`!LFd~yvoUT5M0VvOQn0aF9~+L@C~joe)v_qx>L$H-Yr!8H-A-n_dzgx;x9B?X(bITMA^tA}<(* +;}Mlh7`uJc2Wtr!wvrFZ44$w7GP{;p`CEoM<E#Hqm23B8ra5%mk=N#@Nf_qat_faxvK!8UiaG-P>nPq +Toh1V$W;RV$?`xgl5u8Rl`7lOboRI)A6e0HgEYIzuK<W&TTGJ=a;+JYwql=b@=sa}giP-9Ify1mOaT* +A@EiP6P6&usoT*5a;KaDmj#ZeUh0Fc-VJbJpv2)5a^ujv9tmBl(!5cT0R$mNr(T(6nLl(E>if;+exM> +_JdGljFDQB*uVIVBP;hA(0P*XpqEM`wEf7-PekOkyDLl#(iB$sJYwD-mjBqfky>NQGNGv+$5vGd&Nnc +g5$t+M=^%Gz{1thLj_u^mvHTL@H;)-KmiYzr~s>2j=!to8tE#1zp~yLB1RMAEPTzM(?8)0TVEIRCLvJ +6fcWI$Sj@aTgzhqFkonzz~o6J0R3`&PoZJLcqs*aZQJJQ)_RO@-Xko4-W7>B?u8D@}QSSQ~ge=)XYp8 +L(M>4ZK@OHKxsS}r?#Hz`v$`~Q|qV{(=#z3M{~v#%rQ|Oy4KQp2qqh?B&LG)@uPk@!~`zq3vtK$R_j? +^CsZM!98rxExEf8O_U3Xf$}~oIM1>@X1nP_40K`<ymO!D%(1F)=C17&=_T=dO;l-t&WIzhxHSUId`pk +=BIez{;77?ffl@q?mXU{8W&!s5yh~syEUM$ib*caSwEPELbIcAuHPgR9+1_YCaftzIIa;VHrmbsds%J +r;VOh6*w(pTWlqy-B2K?T8(0<+eBTF6s=2NtSU_>4JWgw?ErOTu&&u5B=&NPtN^1|%G*>y=!p#kj4(7 +2y0#I-=hR+}wgw%ySOT0+81b;V)(z5(^?qcnOK`a33%SkfBmG3xp|rhRh|O3S^mA9w`^T)^EHz_$a_b +YdOG$nPdq1rAcU^GzS4#7E{~Gz{2G82gn4)3M;Q${99ldRuh4Yyn_lVCLCeXJiH^JSs;4FXLx}OC67X +YHBiVTB~*Mi5DdO#0>DmE;{{ZDi!fz8&qY3p<~+K^27>LJHMISG<|J8^mN9q69d~Tl0(NBB)^*D|7gC +JVumU~Z)qhd@qPfWTFY|I!HmE};RNxsP>pGdR>l;Qr0xW=^<xV9<OB|GnT2w&}{urv%rbZt$u!qU&mI +InK1gpEn&IYO>fxN>KKV6SBJ5Ao=^uuU<oG)Y8EESV59equ0Xy<MAXM1(%VM`xZAVFTCCsf&A-CX<}= +6qG9Qr!95XqC-zMTpJOErEPC<H7HixdhMqbre$-Z~H1Vd@apX{h+!cu?^OQsjXP_b=0%Tqrb6!_VINq +Sljb{mWR`##qS3-4SS6h3#~+@%cve68B&t|sQ4*mv$oqz(K0WywgxpQYU{<LDC(1Xm	?k<$!zHla1 +0*r%ohG7o2qa110t{(ooXmW+n&8Y1H`4tX1P#K130%)#sOA`106LJNXU9}B)%;&DcRd0ewL4Y94>K1X +spR6=T|6G$Z=AdWrLU)pWyJh_9t`uftHY<9c)?<d?DL0Sc1okDI=mECCo)*@AZjM-bJifb`_I4?I!)? +X;8WO?60PnF`e&_Quip1Cy9L-l^4a&i2A_3cgF7%{<RSSOC3G^fs|okD#%gh$}e4VaGt@)&NAZyXwz( +sBqpXn$I-XRs5fK+3VWEOqG%svBYlr;<%$xvE-|4BK4px5Ijt<=Tu_tK?mcREKB#THBNs8Fe#fLOli3 +=W0twCpt22cZwS-`-<&#{phytgZ77L$nTe6ACkS&<h^)ZJ?_26W73XS>EY9reQZtWscsi_0Dvos$1lb +=H~q1N7}ukmeaiL;mc0BESprgj{RNDvw5G!q;K7aeI415r%*2Q7s>!S;`+ueag$&Qz!Ee8^jOF!4CN( +W;1E-n+dYdo_`7*X!vIn9ftyaCRt>TLnEZYg23YL8Zf0gu52DI5fCNjwRjNkViQ(SOt_cAPsvYBKq-i +s+0;UryC@=Hf8p6ZP{b^q6)j!*@Mk{?h9g(GN2$bQU{`;jcx)YwepC<Og-(eZeO6syB}W)u|rau^bSF +Oxz!VTosDnD;;`!xua&)Rhe!a`e58+Al9eT&9o-IJ*voS?7&okjq3ilAuIMn6hXNsY3)if-F@1_*4&B +2W*mI?u5PDk?Ih_-eV@yP|mSEhV*@h-EtHyy;Tj)Nf_OlNfoenrx(wEPO@06<aacS)*+bVFk+_{7Aua +X*eE~|Qy;VdF*DbSMjok;YR?(fRusbQg~;u5a1<$F{dCt~uAi!NUp4vZR0w*9mzI#@_~Q8_%<-j<XjE +`)bf&04LpBkGX|PIefo;*Dw38OfatWCck2Urpv-OM72_`1b)I2onDp+n(pz48EnWUPS2r{wORJups!) +#qpI-cOMV6o!7mIh$37}{7jX-sCBz<V!ArY`S9bcEO-%otQ9qG1hz^v+O@`mEuRdelrc_)@c5g2};-> +UNMh+|U9<w^f7*7A)|Nw#6QEXt^1BMfZNNISW~hxyYn@z%dm_s^^Y#;T7El&=;y|tPpp|ejweKqeNOn +D=z^9#!nFU09kdQ2#8xp#`Q9N^ohO-!-A@&ktYw_7};UJ{PGLKlMF?^x^xsy1Ssmt^tWwGCWvpU^`?h +FzOJ2bf!M0{LUr3~Q~%4j*J0&A8_oBar{NliPen+2h^2%%0K@ZbJ9ldyj{*PDWA_|5n;SgVM)p;a2AE +FNt!eZn5A$g5(zS+e^lcsQ_uuO<d_>{3LmG`)A*)@H|Ft3OoX+mH3t3jQQpVo3Kucdw$?~YM<QN`ESM +4Z-!f@IF8gCzhe%i(9rMXhth?(S}<7ApB?*j29;{HY>X==2ECG`iO%%&KnE`#A+2)uyFxIgn5i36_*q +E22M9E10rs55IChLD$8h7sL{c)OFSBf>^!y1(lEYb~taMW4naAMG>$E%bi+u+po;UzqhMrSDSrc(s36 +@h{De7#!w2O-E^RYvoraA3$xWoICpbG7ak{6Xeo4-dhz}*Hfde+Y9-<-;Q_`?(A5aHG`Szg@7$qa0ne +0d0Y?|9pIYiR*L|{O+l%;m`gE;xhgnHv&@cm-p0F82HlRXB+^_Yt#uJF>CqQ0b?e@7r=v&Q>=X^w;zn +|>F=*fGea+mLL$=pxPQ(f3X_Oh6Y{yDmo1p_I4OuXxNyhpx*$xT;jBuU6@%$y`SgL*r>?TERK}{5T4B +7(O%Z#nb!%uZXsJ33~A{#z>_Srg4z;k*UhKE*Tbu;RYQ`4&N`64J8g-h;kx)0|#UZaVpZ}s9`Zb+89( +c8!i1t2Ph)&lz!n_lg2<P%>ki?vn8cBR{MpGx7oNp|Xj;MI79g?a<Nce90dZv%XzxXs#4(yqq)h24ik +^?Zf&C}3l1LR2Fj8_^4d)g)2!rM~BCUC`E2Qg7*0;`-X@iz&D^$H7MkxT&qbI_w*!uZ;tIrI|G$pWg< +>kK^wm*m@^#8!y&Ctp3vFat(GPn>+Aw=b2Rh{9XJXTPUvfWXc9>nvoG-LU_F)xyH^}47Gr@X+z}%VG- +L*I&iaT8qV5cRYSdpyPqNP4l^23uSdGRpjS>CdE3L&UMb#myH?$}hvK!;AIsz$dCyiU3odS^D>_SgFg +xihiL0s>5|wxK+Z=V1ug>#3zwUvAT^09G6JVz(7F@Y?-5Tk(iR#?KRTmJkE~wf=G=G{z8`6=6WV*<74 +@7sUZ$*8CU5#mrV-p_Xy+y~@)BJkg`QcDqlC;1b9e;m{p=*^3;20>n4Ii)CIt4XogjCs@;)Cj9C92gm +w7^lDYYmbrct%wQ?7P;dk_bvKFE{W~or*W$t+5Bj*oDA(*^JXoRP5NPC>?`{3RzQF;|NPFK-DJn`-f$ +>RiH3nZdB%Y!8l!y^^YRR&s*~A4GNzK2s>=W9sI44v|BZVYL+ZZZ3OgosBX}ypO`ga;E$GwXnlR%bQ6 +nJ5;grn9enKYV>m`5FRp%lCU4LS*mN{q1q9-9;^vO)zIpZJ`r305p112=`%u<uXtv+*+MdF4SN{i4O9 +KQH000080P|F{P`0;-W&;KQ03#6q03HAU0B~t=FJE?LZe(wAFJx(RbZlv2FKuCRYh`kCE^v8;S8Z?GH +W2=<U%@6QWUY>nwkuW`b%8B&umD9GH0dxP3sgp?Z8kEgkyK)1SbzKO_##u5+!{_Sk<T6P{f@`v<fju- +$~hOy32DsY<Sniw$H_4{ll4~d<;sxJSw>!+zI=58|9&BVazVG`nttVV4zLfrWJ0q!F_M@SBUf9ql7d{ +zg?XZik#pIIIW-*C;DISZ;XGj!zi*6$x20li&4fW-*Nl-57iY7}>sf9#hEOplXCE(bK3)9w`R3!NYg` +0ea&&Z*Tv4Tg+X8stu}nO2B?WRKYpNcY(qzp`B~L0UmJMApGG_}eKu|8o)$EGAIenX3PH^z0G;BgH+{ +Wvl-;6EKJ^ClAgLb7{*PzpV#l}QCy{R_9Xf5YW#bCdw=H#A{##^RFX$dzu`9nUjN2bO>1`x+6peg|<Y +o;hzMHAhWD_{pFew$h|Os7-wwBqH8fKf$itQJ<7F%hg}T5|&ui6z)~&KC=&&=Rz+m89h=PZGYar7}e7 +@T9lxV_i`LhFpht#gb&9<eKD8Q4(<WzyjVX>oe=tF=<p~^#fagU&XR8+nQ<5p)tG)^js8=;Ha@PN8$X +GBt=21swl{m+@@d+rfS7ZdY2^NF;Z|{R2&v*HImsRA@Jb~A|$ZWTxdf@$wsn!c19p95F#A`et>7A1Ua +XbW=XUlZ%^;gn(5!^QJN%WMYSfgM_M)Lijlnk%1Yx8#&E&kn-$l@A>ko7nK>fn1CX#yjee0r=Pk8;aD +K)O(D~n1!gM-KC#0h5`#B|>G1*SY1{_be;~4T|%(nv&G|Gm&?_i$|V4ro_y#vHP<Xsmr9f0gk?1JA9V +7oHC|314e7?Pu}0cK1LlB$mZUNMA=J_Mp7hS-=JfVuSm{m=OrV>blENV94&#(03d$Lhy6A)?}_!p|(k +5RIZpxiIn(3&D23wKZq5Xhb>r;<8Dxe;TfAUVdrWA;8vNkPj(z%}T!Dz`~1>4@v<E7A2RHyOUo#;XNE +NaUyjA_yHxF%0R$d=*!8;%exMSL0<N$JnLX%FLfVhPoNx%?DZB3(`Kd=ByZY?2O*yXd8CR{DAyD6T&L +u@<(VB8(I0b*u$`2B384TmW%{<7b0`@dq^yJHsjSnxee=P#*APP`-xY`fJ6bKFV_k$Y%;sL(z-6})^p +$nCXY7@31%l^2iI|GERd1Vj%W}jev#HnLv^=sy%5+@D1*8C<yB@2!mI9S<UsPp;vX4Qdu@y7Rk`7m=n +6+Y?evTp}UI(s*;Oa0uM97|-Ze@KpvZtU(`#r}|xqb$J6kZC?e&mgUTiAlBDHaWMLl_Y-<wsmBWMntL +3<9Ljb#A}bCJ4*d^s9v6bI)8v&oIaAgnHmOPq;0`Dn>yU7)h!)`z;3gKnf!ht@g4x2=QWSahUcmusk> +^AR{=fdN%MxNoe3Js;L1Q7(>QTeLEvX8fo0!DRu@JvKBDQy9Bx4$__CUbj{G8eM;O(T(ZP@e^8+GH2u +LLX__RRD2jUj00nfKfz|Or8ZSzp%x}aEQHK+x&iA;6X%ObKas?AJfWlJlmqytTesDaDsRseWynJBB)P +89g5B@W39mCzqFnVXH79K)q5bp<9z`HQFZ=<Y(b-KmjIH3CADV?qF5#3H+-$jI=VG*z>8ia6o4Wmeuf +T0NeK0E*Q^M{)PFIKa^ZXgPKB?$^uwZEDqEX>3}vYU@HSJv9OedNX#oOW2**zoflrk7H%y+QgSknQFj +Y#?4_8Zu?hY9{cKN+8pst6uK%X#$Ocu04YZOy}(g4pVt6nHzN`IKZ?}aA(Y+C$nSbU)-RNH%^<+m6Q) +n9djKZU&9p)<nAbK)OJ@++`s^OVm*lOMc$CEaIsCvYC~rB2g?oI45OMf&_+KCoOe0~2u9Hshg~&{2Ro +-_St!s}B<Bomu*PFMI8MKNXe02>QyRPv!FGingUdg~!6uk|;8Z-p9~?|QwKLRcFIZdQ`j&3R3WIG^&u +uf`M`m$Sv@soZ|IU=2{0~q|0|XQR000O8^Hj4?lsMQ12qgdjDxClT9{>OVaA|NaUv_0~WN&gWWNCABY +-wUIZDn*}WMOn+E^vA6J^gpv$c?}IuVCZmk;+P{t<CnXZr#>RlwIE@PM+=ks@G*`acr}eNR_1QxZC{i +2VlNAGnDLXUweJ$*KTZb27|$1FaQPsx1-UsQ8cUaqP*IRR_*2Jzwyb|_SSavqFUb9#np8iB`*fiWM_9 +0onEu(-F<sqmC;Fc+1_O}i(XZ$GSAwgD#y_2gt6%L;fv|f$#mR)XrrvmqZe<FPLB`&^v&tp;}d)c?Y5 +pgd2+Z|&e?*MEp?8n%cuqLZ&;fFxGcJ?YB|<2o84qrtcl)D-!<c{t&`PqS=DV5W%GHoFgh$Uc$n;tcZ +SjKco+XO84?PU@lM1(ELmO9fb+o^G1$7St3{Nim#cPFvowv01;UM1WdS5%>AYxJoz0uAE%5@M&Klm0E +wW-Rdn{Pf0EQ{PNiT~zlRf_0RHgiVUR_-Qo#mf3+uGuw#uCiSqG{*F#q`6BEs-cgK<<{+4g8v>qV23& +EVEYjIB9DDdH8l1HS}BB-Y;1*j9T`grQb!bMONPcAla=bVP?ykwc_=v)pLQKbvA3$i~ID3-4CNH)~57 +KOnfXblI`(*GrNYR9O42!f4-A`J3T%*e0!80Pq(&k)~t^9<@CqU{xv;I(zMJLK=%O<Vm8m3My>vvqG_ +P*w63c<=~88|w-vz;EZ_kU@o%f5X1QjAqKOu~H?D9O@QbRvoENipE#$Uki)9<N6%3K(5isLj4eVgBTf +yde13U|hf%{-4Ag{9d*f;VwWzA;QRayL<<==7&u0!IR@}{irN<F5ee7Ra&u-ZG!VR@U)i+nxhG|+6mV +o0`vcO|IX(Q<VG(}@n=9rCS-bgl9guy&flzJuMeADzW=*mxMl@4o&rJv@5#Hk}^5c>D73=u7M2yW{Dr +>GAROrR0wI9EX{fT>3<-238R_JxT%SHNsvI?xkkSfed5EB&}jXwPu&BMlKKp8b@DMOLn=M&+ntV0))f +`tj~2;Ua=gS!<vF%h^lhNkYS_GpMQbVZ@5$eC=9^d-(54<p<(n91rRcTK>GUdXi5zZzfX753B0Kp?Nd +NLiGM63{`2FH|A+^6Yxt+HM}+Ms&v(;Thtt<DPoP<%C_WNQghW1qZG`_CkKWC*7A0al+=}d<_++&Jad +3~VUb1FZ7sMN$hF`P$yQ<C`Z248SV523-IQ-*a1#-F8zl}&3dLX<mW~^)&Ok*qkeE0d!JrA*9Bi-m<G +COGb0ykj+GJ*QNgk3wYvV8Q-@oW71?L||~S<4y^kau-;TjY$;IOfu<QS^FqaQro}8xhO^66n>zqdQaw +FB;?d7yn^v@+O0`4gSv;LjNT@7^~*=-Ea{{C|3O|`Bye;WqY|qqPbqDP=EEFt36hi=?6Hl%WSSz&E$- +ABY8l(ywRPWZ}6c_Ul)jv-X>WP`{$Ei|3A<DpW-<JT-;_Y(~IOllBnjRKM~PSSi4$|98N@_WdMZ2ev0 +a*Viud#J9s#~hFw%#E?tY-U`v=Xph$vlw7t9Y>pie|KxG2^p)n*b85dd@N7Zb$LQSzMuR!%EO4K&4wb +D3_4$Ikml{0+0fcNwkkeRbc7#pCf%&R-pQ9#MUU!WmCNl-HaWe^OP^ow5`8_3*Fp8<gkULS$73o~j*r +(g$o=-}rB>vX{-z~Rg#2#<iR4_?34$Th4@2IjNzY6)~;iJ{c^-)m(d@LnBU{`Z<H{`Z=Ofb{hH)8hj$ +R%|t_j^mi@o*$cM`}^>p<VkY&mnY|+4W9fXhTmfNEgnE4G+%Od8A(%ZLZ-nSxGE7(gx+0TDh+<0w8x! +zPpt|VW2?H149d_eHg|gMdU|Pkg?deVy%ZJQUcj6Qbo(6nVFF_g`nm(_86@?iF!4@TFBHA1v!Y?^Z6- +-qN%;%bw37S@x6HJy^AbeCtfj4n?G#cuTe6aDkBV<ZVbY-`Lbet5C-B!<lX43>0h1WaYhg|sG{ODJpC +aYN`#o#V0X=jJgtO;tNkNs<dd0ewdX>!^wna~|FIr#cTXJMF)P*5eig}Ddpe&liz!4Wjwn@&;VPU^H` +ugbYcSo?sM^(uNHbP+0wnb@Rg5!>}B~lIPFyPoMD>%R|=1kI`P$T9Za&8@R_M?9UJMBoWI_EI90p}W) +2BdZjHg$cE0<b{=d>IK-8%?ybYNKUVw`h?9zS3tT1~#eTk{BT2a|BUX+l<R_#1~&Uv$1L7ydKwVQQfk +H01T|Q-19Nc*~RKA0r`sUaxgu2q8!!$CioPEEfF$+q+v1%BzHd*$=wZ++}#{WEd>OUlTSr*vLTX_jgd +6YOo8O*pNiz?8zTAnqmi6!w%h{BFZOLscMrGKVHr)(6PoK6T(JPuvP;l7qHC7r0M-#j;i*p?CJIk~@& +HCMG#N4dPu!A|4Y%aPw<U#K>Ov=}2-<xU{cV-aQE^vZr$!#~b5<q}Rs%c)cbx;!X?M1BP6J<}Up@MTK +1;(;cQjOcf^Sz`RMNUP(I{GVJ&K^A?eR&AQ&Zz-oy4}^G<H0b04G*7<5FCRZ<N!kviKX&SDt<ipByJw +lkTRw(wXL6ZsG>_3^pAk0}X2u?f1x_AS`WCD_9ebS8x}GU>ORt0c$7P?_uc>EW`d8NcIBrGT~$!fZnD +4nizjgtamW@Ao{(<e0_`iL$%`G*rMc@4Tvco3BLle{tBk>E8NwbU-Y8ivFJLxCCet7T~}c6;{D6c5MA +eV4+H-~U(q@OX2g>aW()`XMP1#nG7=`cIPWijdBHHhX`;KLy{5aKwyNfh1z{Jt35})Os>rQ369Dr8j5 +P@q!Qp6NXSFb$Ea$tz=!0S)%X9Q|*Pslt3~z<_%D^D#6OKxDCs%=_7H3{;q5hnhe@^VTun>9;h-9;BH +P6eq1!SRFR^CU=lFdM@%*1Xng=LR3dcBww@+J&Ju@_Cs5memSZMK>C+Dyzg6Ca!jInC`SJLpC~I6Xa{ +&;bBj<tJ(pO93M%1*e+FW5nCyWfH#U-Xs3Z=+<eyl)j=p$GH@%tANyO<?}Pi_T1OBXSkjCo7_5(J)Wr +eM!KK&Oji_tcU>)5O75sV%QwZ}X52rur#)5X^OQTE_PpM!c%fZZdmg8r@m|Am9b3HZTsXJ(x_+*Brkz +`R9^Z7F3wKw#s%Zq<{l(i<(gl|0=%?8WIK|?n@L8y49bXu4CGHD#E1!cbZqPxLI&HmvqYm69_oMBFe6 +G4BlkT-Wug}eHZ8qx8*qp3GHH%<IPxKl}vRh6>*@FCR=C<>@0M$r&dU0<KW;ox_jUqg2d#(piuN-+>t +fdn!y{(TR9zbBdJbZC*IyJq=juX#yW7~W%*pl+@#0y6*mTqS@Q*)<#ypvPomFau7ow|LuKVGlfhK}D& +ef}Mu>Oe8w#{o}zknOz)DL1U?PbF%de)I12)FhcXIyw)hucvRON2e$95J(J(i0{8SI(+f=r3pg&=xrx +_!26Ft-W;Bs@GIo%0*6oV;j6>f)02Z&9T#AH_LqavpR>{5cSgS%pMR!3eHimVu?ujxE58#y7)oPch@J +=v1;NMr<h{`@sbhZfp{|6&r7l1_p^JTJ%herulg&@c!%GVsDLwTHMiWP97Rgs5m~FP?SLqAo#VYLnrV +{cB^s<WzMkK(ftVl}-wUK%Sx@m>lPC3fv%j>LMEm#fO3G|A`u>ogxonhDr2AN<uM9tvnoB<wOd5bV01 +Jtf~6py3mAkPb&Z-y82FpL4FSwgQyy2d3cJh&ygV6ZaG8kn%&kJJK=o7F`EqYUYdHfNM4($`cHTOggp +5i-s=9t<o!<!LhlQz?2H*-Nd%S6;KLY<4g8lZ5k^UUdwgno|>PI92H2s@a@n4HJv4!kd(FAS0S+c~G@ +Y;Eb<EIXO02J{U)+v(GZF&4O{-W@TG|u;$u0;YRDAoo1l^XZ6(z!=aieq00s3031cnK<mGLHl*(OE2- +FK?8}_VmiRkN^jUOOfcDSdjpoG-6Wfaqth#~*KI4}L62Kx`E@5$>Aya3t9Y7!$-DN8tVI&$UwxEZ!(v +rqPpFe&3@@<q?Gnyd3gW<zaKns#lxIWRro2}+88vR?^<C_*`(WYtAu=(YXNU)C{(qSZ~EB+Ed`Csk@3 +&(Fi7GuP=FZK+<Du@c$If$PX7;fZ|jeZwRI(j^rZg}A$%ry%NO-)V}_aXZ*o39#J8p9KUlNzVO+YPGr +NBfP^P$>9DJDPP@?m1`Wtf2RZsog>>%)X$2Ics7k;mgI2_Ur@#S)O1!jWT&a<Q&)cCe#zrz5_*4ryq* +AC=!haZUfK})2?-r3^WUQ-(ydM3Cx8!bM2aQlvdW&hS|XwE2Y>p{#>xE;wmAk(C=?vSMb+k>X?9JLod +*er77H~hdBtIdU&UxwgpL8$G{^Tp=rVeu+hKq^mkD+!88JlY-K{r*}M-MB1S5X2TnH-JU~c(awqoj(A +M`h699C3c{Dt|8yE%FMWCe6Ui58L`Oc+=bR@1JXTlHs(%!XI?MR!@9J_r@B&^n6EYQ;-5HRjhy{-i%h +Ve%b9{<tDDxS4*8V|<kfUc84cdmvDKyi>f$TiYJnx@1O>#;WUbUfzdV@ucc&c_gYQUj3pWd=6f*__Tn +^Gq=ivG^cR>hg7Q$(Nxk6y!~-x-T1evGK(Xat-E341*B+Lvbdko9n@NLD(BUYuh@+p%!nbmGcgZ{m<; +p!}rHQ%e7zT?2>J9l)qDfsN(U~HpkF9gTRPf0w>=mq??;BhY<=M>ya@@Y>k1U#txukFT1prcKmsS;*L +LumkQ*A6?b#xyhaBRmb<*phn&pHN<G(eF=kve)<Mx(QyAE|gw{(;Y8QqFYgG<3CKJs~MXez%I#R{LaR +FPr=)?4}<7s)I$0LnHuRiG>opsN0E0l-tmL{T*c)p6H+E^=hxda4x(!dzlvrHs#*y(7dG7<c|FM^qS& +ZDksv(#-b3o@ka_Ls}?Y+g0YR7rGqQ%88jM7e5iO?A;+!Caj@2%&@db<cpx1E9{7<98%IQ0IC>ZAaf- +vy!F*#G?!aem$ULIMB5&%psx%NPZDT&~uKFiiwTHjU*uAhG;lZ5mrx|!Q9^40yBPBLOjlcze?s_!3xR +~MesbtxO*Pm;$FWx7?{o$vg$dopw{aQdPZ?+3H?28mY{4U@eoX6BBqKX;myw-P)dCxti<8c*m%2#6ep +4J6(CXkG!aZfpxvQ$n2VmPCIQ`(%X8dM0x#|ZgZ=DVR*@@$HU&kkv{p_Mzg;E8-*j_qVnT4`+!jj!>Z +Vwx;v&~~M14njD%KX3xhj<cv$2@EdxV&h)(FWd8{tPtEd!cm+JFRl2r+a@3FV1JL>O{wghblfH6n~H$ +>K%;@)OyWa~&m5?K)*WdG<MKkj8wiZH+plj^@JPt~2#_cQE`}FUEQlWJMjz@HE#&>>Lmn<G)r#nTYN0 +%B_ApWN1jANL7vZy8$rX&HY$4+`C%*7j58>9&P9E`1<<=-$SAQ!vkGQZz-7j&ne@Sa1qkL>~#zr0rpO +ITRf77x@L*+%y3yy!Pc&YGw#{5o4c&OYHSH`V#;GvmqDR`K1*16jJ(DehxY{TJ#8!w%TVM0#Nf;>DvD +nr2jzS8RSHMZ`#n_iWq%&k@cumpalC(z!(Ugq_76g%dvears|q!Kupet0^Zk1g7trk-x}nb9G{sfP@C +|_$uf_`06gX)p--<rQget)4eWIg72iQcsH0Sm;MwC)2V_so20tm?2we9gmuA%I_tmVoJjDyGCy;x?Lj +{=v2F$NPGo9m!oqG^eztAUm`pv^WbwX_TH5rXs>0~pL@Gm#hqWebtbhPTZhA|*+2fI0JN3V#i=JugdG +BHO<Ri;qTgLSTk;!QXU+2}P;m1gX&&n<O52!^tGL{Osnu&%P&+Fi{0H4DQw@1n2ZHG_ez$aN-bH;r;A +&@&Q9&?m%6U)?Sj<)MdBvL##`4LP_HH@+kigo)qeabAX&>O^QeB@N1Nr(13?gg6H{=XKM@wF3Y+-%#> +^o-J~jec00zF%S6akB{2=H+tzaZ=ZAuKZZl-!bA@&1{4ba_{_?<inX4?6@S>TPD9-X%Rh`Hj^Y0Fhj} +DK%><ll%9t>WRt`qz4Qr8zcw>>fLH5{!>5!i`Q&}K)k;bpJ8Up2rhRyMog5|}PW`C*0!33+Bh>JARe5 +eH(W)HEdl&+6n>^4M?V!P$;aQItP|+#m}|pl}jwhd)o^rxbXCx20m<+;_yaT6!^f(w~uJE*8j-?tLz& +$g9Ke-%NROdd;wTBk%Qw<Z44wQ4Nbfbok6%v~E1ehHDm}EXXF<0T_&s@)RJ?0T-aDhiua6CY96&5YSI +YzDHeJdP(y0P()fy|HhQC^a4o)E84^neCi<SH#wy6;s=-KvY@M(SPnAsm`h8*a#~xbtGE%_m$5DOLHp +&Wo~_+k3#-h;)FF?&R)^J-Sh>WJjpW$&&5p~Y!j&tUJ#^9Rr7$V%8-$ZwKD4(-$Q<2p1k*v~-%0Kb6o +1;ejmIBhX!RT(on>2Z_ldD&suzHD4b89#yB(c^*o_-r!AFO9ts4f%fg^}^=GpG~z`OL&ek-sjJ^qT#* +X6<LjL9vAzP8nQ?-^O`W;)ize#X&et<RJ7f)4-U()R2X7*4Z*VY9LwqY26Z;B&gaA?2Fiv=x_n!&eci +J*W?VD}%j2ix7dB`GcKc+tK&me;+m17|gD;6sF^s5`i{(+U_t2zsg`7O(jvWXBdeCfb;p#Qu&ab(6Hi +;nr?}J0i`>sazGdNvb0Ngg$aZq!Q3Sk$Vk4#4)zHlXiT9tye&GF&(3X7{6-{}Eu2b4ly?(7<)LQeToF +w>jBllCScQ>bgh7ZtzDfqJ_Wr5F5IQN&Pq8G$ry)O-jB%$k=Lk`eYsWfILhe!W(%VVPL=3*09Ck5|&v +mN1<%a;Scht7VtEjBg(0>*^+e-EIyr8^bYr(lh8Ip4XjOjT~E>0515*hmEI@m~aO1e7oM!nXl#t$6(l +ZKX|nx0iv4pE;bgFn{kaiy<?C_vB02>#nA{6jBOuQn{%TJE|h-(f`w0T*%R>haU&3C3$#eo}+M`!@@+ +e_NpoQyx8dwICYzgg%J7q)Y~D8eYU#+-IL*jSN+Gi>s3$_dpP=8h#hEDlz4BR@H1okwCKyUNr6f+=vt +eR-wXcm(lh85>BzvqWAz%sA*D+**H?!F=k^W_Xd9N<3{J1i26%+DQnNRbrUxyY3RvG>M(c0vy)_P8|S +S7DhQ#`G3_$E-D#sUhOBBfPP?pA+a}Z^RV8e!EF!1%T$jR9HNU!T%v`8$Tz<FhjZu_G<p4OXmPVF>_U +Cn5=`5sfi7XdIGa;#4kH=_j9wT_>SwXa_AcGNtNHrl8Q@O?@9v#O1i=<pqy~D<qM1t-Hq+833R@~^kb +&G`HkH&f8Yy?g*J4wpPL-EM?#7UO&6sYR&$BfEEo)THUzIJ+;n-=8j(@8yZ({e&1spP6|`72-hMWA}r +y4HGYI*ECmp7tTNmOUq7?dB6$RDh9{3ak{g;E~?T*S-$@H>)N%eW$tNe)pA}gE`1~$J$)8e|CfWXE(5 +amPXQ-F1ysn{dS?iUcR-n&pwSScK>Nyv6=9az8`3;6__l~Wtt{svIteieB?&pK4AT1xK=FgJTV7H89L +8Et9uqvb{r+9%V8Ubuu8@3RB`mz-0BH&2%2e}AajF$cFx9GM=qa7pY2;@l4<;JbefEKLa8*Ar;g;N>* +HsjY}V*<Fmy?}!|dcYh&3ZW_(Ni2tRQ3@P(&bi>Me;&V&X9073w|F%u4LxcP0Tm&(!UE0KDO};kTgyI +Q(i`K^v?GmjW9vJ=2td=f8W}MD)MkQ;G)PR4HjTX*!mLl=+xratg0Alc=SU!S-f)dhqh#^nlXijt<^n +DrCI8$CGc2RjlK!@4lK&U#H%7s=ys@`Fi^0!HXaKP36PbDP8R3%hA85rn}3^mV;LXRkSwCh=YmIP$h@ +te@@;WaT%w&Q%zr0D1rQCR8mSj7{aPXcXhTz+s4l2BRJAE2ylwoHAsXq#{?;~XkbA{+&t^lBOj~D&@Y +N4(x`oNaQfn_>2bI8++TjoKTCcb!+!_QekqG=APM~);=i2jjDB-4`tx}reo4op^Jntm;19oyQ7VoP1t +fQLPvvfGc=FAgHwVW*1V$bIv^$*aJpZqc62tEFWX%))_RHzf^!VWPErN-2UYj~fo;CyIX|vKfhjnoD5 +*z=Jem(u+M3scVA6e=lF^)8&)Pwa{*Jc1Kh1N74iuWHya_!N}>GyIFZm6kSCSlh^0*YNni7cWh_Utsv +dWxhm6G?l;FkKDf#1F|bNd%c+PTx%d>7y4vXta5Wc1+k+g$tq<bH~(Q7pr2P>py*?i6PmoZYC8JVr>1 +`O#ANvB`Rrv%3j_Ubyd<?Bd2ll!_n!%_vyC>uMcUZJB#e8{gH(B&kz>fTy@DH=9U?n91!3f7p%XF!Bw +3t;_D(9Elrzw1+++M!BW{Oic?uaox81K`~3Tl&qNhD(Y{2|RG8PBr<iVw&k`*2i{IjZ$k~HmG+>G4d0 +v|a>clo{q{yd;<uL>hnI<}nd;ucPWJGJLkw_(6SNSr8ks@Iy1zoa52f_VbJmvI~zIZd=!U)nLAGnC}1 +au59ml-e@7<<)3A$67yAku+7(F%gm{N51kDRNvr{qcfYT%Y+bV6k#u(H206M%FMWE6kY3Dr#+oo=s4O +nHzIsE%Z;`iTMN@b?XW@zYZ5)F|hQrmP-FnKXtCU9X@u*=Ch7fF)MZTiO3n>5D9px#Ux4Z%NgbmBu;{ +W{PAukhhC^Xj`6T-2nB!ebYKf=K;c~|HrcnRs0FqY{%iwNv}|wfW{mQRk@N^aDN4{cL8YW{V?Ah;6nH +(Jxu1Ipz~SnqxL)PAbzZ=R%i9KkI<zr97SS+*pcU1DwdtZZ3r(n5&1Q6|hq4_kV@kY=#8RM2#1Q@vU) +^P82nr8it0-kNyMi_BS>}*jlZT)D{tf4s&F+Re<Mazeg^D2*sSyxy0m`bV#f$N-+Q)Br^9{$i>C=|_g +EV!q`UYK!p=!WSbh;wbFY&HLzr?>pSKI)gh6zLr{mE1XN&W4X2<lwI#kPV-UHqleyB$r15xS|#7)>ly +G|<M<FavG4noGDj6^FWL@$c1yAkjS)RhtP8MXIZOizGMR;`+lj2);Hh9S~WoBvcpCrdriACdzRo-LC+ +U`qd#*S1<N`M#1R!Q7V*kW2PE!PtG^xWGl53gXp!a<gBj>D2)T1Vq=RKM*`>9^}P+gjxEhiI8yj~TY} +GTP<g$f?@jUd<bdg({iba3o`>_Buxfxmz@I#Bjc#{Io4he{2JoEakCKN(PARA+estqJzu6>nQeIR)0x +7!`Z=$(-sQ1B8@2H`*eb$OyYc~XAAFRofR&ix#i9CRm+q{luHm3_?5sNl`7d`*tHvtikX=t!LjH+O3u +;d;5nvpvVT?4NPB!!_)8os&^3xsZJEqQwBu29W60{pUVY^-d6s`7`FY&EDU&w9trogs7B-^DyM@6F~P +m{lKl=y~+r3Hec$JiiuY+%X%V?c<1t4)ya>r?`|o@cU<iqr;;p=$_bELwazr-woUnUHgT;RUTYjxcNn +OSXy?VxRp?XlE#VK<ZX@fQP~}4^%+fPWng!{r=X858r1Q8brMy8GOR9#(r3ays^IVGJ>U}I9RaCl2EW +M_(qKISe^^X~k3Xj9wIskmg83H#ac+ezT3;o6BE$MIQ?V3L{VKHS$yz4w{5(M$hCs?1FccNVm*Wuzf% +}7u(Jf?U)y45<GIs1#&M&?l`R}bxrT=VIiWmh9ZuLD_#`&bz({(n#Id=pR{&a=W&#TI;Q)IM6kr&!N3 +<Fg!Hda_VhY4__aO+xH#xVNnV^GoCK#$1J9F@U8A&cyr=?eV7H4*Qq3V!4{T0zQ&soOiIW{L-nxyiw& +c4d#u=sBwls_H`FzD0d-;sX9igF$33@FdibrqGj`=z&Gi&X2Bs;HJ5(6*ZQ0c;My>ZCh&iM|rHM1HfB +^%kzD#V8JeaLvLNd4=K2N5E@e6!gYswxQ2AriF`Zn;Xa?HWNjcFymV$Hr=zk02eP`_4b9ok1dzLk59& +iihC?^KYT6$qR)}gV()Ar0hU@crN!d$5k6`Fh(%>*nHGgJbAfTyjhWyjqjkxh+<!x8XGy|Rggn`n$@& +r0t(N$|##pAUv=+iA2S0O&}ExThSqpU5O%X@P6f~v;9mjMTqah1z!`F?1%<9TnH)!Bk0ycZpis|&$5^ +6QBs^bCW-Vj&Zd2CxUNF&aa*ZShNO;-VX|GB9y4;LS`F)C4eo0SJeck1v?a&0$SzR;-Xv%3A;tn7r}L +H-_s-K5&27`DXi+sJ6*|><C9el6~V_?TL5>D4vPJfMfp1jr+^_w!;<k9WC7F8q58e^RF`*gwU@-&X`p +Rj3R4(`wtlLVa$E|<9A_N^dJ~MT<B(plWU}zY6NUGzc-gwzYIHM`VsC&+6Is-4-tO#lpAQ)X6(#Y^jt +qpYL;W!^bAuk)Gi;2lq_S$L0E#pHI~M@hg}xxTZjEV3r&LpghIUpah~vgB;UO1YwzsEK|yM8o`4Fgt` +p8(z898H!Y@A163E#t{)3klKJ^|EjrX25dw8m0T%iX&rq|DpB7Y}8QWo&cY=hjY*=$u~zyz2C^ZAgzU +{tj79uUa2C`zpH4w~PL38VwSuprR|qne5QlV|GkuZPn}B6$2(PaAzn!|7lj|KatJ8C3QWXCH2YLmzFp +<FSaWvsOp26)e04LFrWAKTyRo(|fV%C2!@{Hr7-OqF|he4?|+D2^}m4Ow^vW>BT*I2JB08{Jj%tCiPP +j)vlW5Oyhy7)?;R4u&5{x)~y=m4;WCPPAX==LQ=fsZ0}sV4KR_x8@S<{(Asa>I@!?nIj;ir4WFQNC)% +Ns{z^@@sVZjXJ@4gL71sL-4P>qF!kQ%Huf3_!BAMC9W=F(-ro3p2ZlaQvTu(27{Qf#BJ!9n#i!ky+Ri +WFIv3*JImhYMu0^oLFXHAUs3fbFTj!qF3btk;1Rsl$>hvy%DTqkH9toz&*o5bcg$=IDt)JKV4K|uk=C +Si{ry-xh;(BM!t3j21zJOMg$$(jbFy&cvf(}In&!9mfEA$w%(*hVp9I#z7H$h*90QkL3mQ{IneOtXNo +DsQ(gB*sW-&7Du<*+1sT<UFDcM+3CI0_~>bl?*r~%bTd<ynKKeLY;4%S9}@IO7d0%erGpYqTk%{XZ(2 +4U%IlCDXPzh_@Bjbr@#dDw?0xpV`)brj(KyZ$Kw$~i6?2(3KjC^l=(i1H*`XV2DaR-Kzx=r{?DDm#45 +RJv=NXx)y=s}UW<ljKbhae6Ma6qM6jGJ#L4oB-jO_h-^$(9>6P|#&xV&tE(h=4@z065`3dHyDCv3dbC +mQp_#s7l8~n&5y<PjENor+BCAnW@{AkFswhBlx;Y*vb2E+Q>8udK!uk+~&X+d;-!N?ulQsNywwib$J6 +w#J(>^3WJjYhq;X)WUGm}wO{tq?ORqCw4rJ_i)rIJOkwgkRs)IZ$Gp<#|#+#wo6h@Hm)iLAGZ<5;i13 +;Qi>y)8+{(T=bw9e0jUZoZrmqxA8zPF_BSxTMb4Tir4)i5$oeRtbqXT2FnxwRw$iGt*{7{qWW8F6rQo +pcmAm}>vZRP$vxjYfvtL|a$(=|S(3HHs<1c80I+3I&;a1Fxbz*9LT*+hWT6F$Ta7GcFL$>*4Q!<weWo +jGtA~aiJP85mBqj+kW>Be9GidDdut?e82@ItZfIe%Pc-^3~TQ@^i^{RK>#=gK<v&+P+_KzvFd!nwesG +riTu)s3^7#?V#jWK{%wKTs45KIE%JjRQ+bZX<1;?|S&W9Rz(!unJ_p+)AF4kAzD=?B1jelNc%NZ)lsm +N&oB##qksZoZEvy#(U~JSzU$OF#ZRb<|a>p<hn8UG;(Im|y;k76n3lM$Pkm2LHDYHo(gIh=R<^+5oio +3b~(%ngV_YRv6oWfD)qy^K&TSAYUz(Np2*afxfe<S(-Joq9Ar1g0Mmt{QjiRNW~3DQ7!wf;q1qnvU$w +UT^OIbkO?e3c}X_*kH*`FyV~uKs%x<R=5p-7wIKFc%%+?V-UnM|gzFT}=6Bh>^T9~`A$1Ur1oFq5Py! +cHp1UXBonK8^*Fp5czmy6gYU6EkQM2r(%h{q|Fs@0#{mJ@*w@K_yW>%NR<Dx`$BH0-VV4E;@jaRu`+v +c6D>yPLk^v1v9Hs)qO<4l9@Rv4VWWPw>twiHz+<D{&3sa>tV>M!z|F#*&X8cR#5doJoq2ozq>Uk+ida +)>`lXEEI>s&2iERQO*|O9KQH000080P|F{P>$V%5~vFR01heu03ZMW0B~t=FJE?LZe(wAFJx(RbZlv2 +FLGsbZ*_8GWpgfYd97M|kK4Er|KFd2jd8Gi^{SgoUog6DlQby;q{$(h6le`Yp)K0xt}F=>y}QogzI$h +e50QF!y>~T&tR6GN;XHpNHD(vzU$AwN%6vO#2erBQGd>xOM`QN7D36ug?i7n&PuUNb&tF`?e}7{CmN` +GNYknik7|7nswa9CcGF33O6YR&M+7&swE;j0(SAxAQ4tdIzglBLeD#l^FTvc*)PzBs=D<SqGS19XR2= +@Nn>o*^+-^A)cF`lRF^~VpNKfQbP<@3i+*Z2_VMw_bGvn1IZ)S(hd!sNazDh2W-OhqJ_RHEWpJsO!8D +_M)RvUjquS6Q*$!p!Y$QQNEXc6(4Vv$ypwxH~#Jbu5Lu`6f$!HPQ;kR<D1^T4i$e=3y;LG=zDLGA+rP +uXiF%%Bm<urH(VU6)K^J$%@xv#!9Ysi7L#qR8}+g8ZSp9oCKKl%FZSR*7x)*N|K!K!9df|Xhe)a^`Xc +GgWs5~E5Q{w?tUk7mJ5-J6zMWv*X)z1i$k>*G)6@KPv;}#OT`9EFLSAqB&tQWnK9Jx3gsFS{K*YHX0o +Ocn-_ZQFYqddsJIiXhFHkA7(V>2kSTD~2T?PKmmlJXIje<>sWHUg?=Ry(6b*6(u8Yw^@l7G~D70NPo# +7bKq%w25pm&q$)CsB&VD%`NGw{INrm>qUiUK=Y6UaKL70-k*ft9Tt<=NrcvuE!5T}>IHJwe=T11W&dw +qS|eN%`Bz@yttJ@x6O9XP<$3PEMMCwHkkAD}grDQ53hCQ6<fYSFG63kX9s<d83xcTM5Xn9Qdk(KzBB( +gHK8OxObLg9he~Yj%U)OKCp1M<5kKa#8;Wvv-w41e?1h9)L0n2*fQ>bS^p`ZQuxy`m57v`oiOFg9z)6 +;rk1aJ4Pgw3Id!HHeKpHUY~+Iu5QtdI8E+((#kdJtnQw~7&DqZ=EuufCfZ>oS5RCHO8<EvRbV16Xp<` +WX=u(e_1qVt^r0=FCxC3$Un(WcYGfyHtP)H4P$P492WsTAe!!*<re?YhAw*m-iM|Db`cz{Y<+mXBSbk +1GrK=WU8&E%7lMO?zSQoXGY5p`va*?k3ViGpNxR9N6z5#&cL)bceYPDjqY#0)M)Ze}@Sll#?V%6QE-- +BIzkiD_h~cTB@~l2424G=NuFL5tN5^v~f2phI}ZT5cq}>33j7eG$Gip@V-qBS*dpMyk!HmrT=E0z$I} +^nlfmLz&4hO1{43Tj5pY`mo-ieK><+#6b_JT#(F=MY1Mo7(#hb?Rl0RO#x7nTI1@-4mD_xumbwrL9q& +a4iDf3C*F1ic}uhW3QbkQsC%A+E_LAOIG7296~ZAdb28FffGwhlnO86wKv8K88tft5<Vpg#IW|R-V^l +&P-;*a!6v!ad$QYV0Zt9~k37La43q>$4F$tN3JX_t#;(*iP3h#C3ps-xr8-Y#ffk0+T?gz@D2|F)Fs0 +8}6(W?Eug^k?Y(UA$}V0-S{tXT0(XOdq&UH9r%Pm7L1+|x-CUEXbHdQ3q|w6<~s^Y&;Tky^`d;!L3pX +&2bppzBMsR!|ZGI3pkjRkne5t}$Bl9p!bBg=NXcmZdTEh7cA;3c_|Jn)Y8ec{noh0TgkWaRn^<7^*;} +YAm<W<c8nziC@@mWm&>R#e;&i50vQ|tQ1Y+^0=NrL59Bt{Uxm@I*P&;bB+WLZMN#|zDN&Qr_$=DAV*( +>FSCN{G7R?R3gECNg0YfBze^GrnNWPl*+SU1z4yqWghVM51lNu7JiR&8s!7!jNH$?$hky!@5wUKtjUc +Q;z8LGvq}6!F0JUKe!Nz~MoYTq%ix_o^3Kkr=Xv6NS!EkO@7qHs!1Y{CQo>eHJWD=!cOk{1LVic$`(` +i4QYdQ6<IAkdd1FdDp!RI+^jin7;f{9m?-%U;+H%;Wzlo+BOmLvt@x`dPj3zgH5Fb0JoEu+g><5<7K_ +2I(riL+A&i9hhGMSG32F#pbSw?S<!XSeY1;7Y&<!@zCcli)^{r^-;s7*wt&*2Gyz?)x9Rq^2h6ttkc; +Mcq#L6)O)3g0c(Q1tqPhj(q|Hq1{5>H^DPdZb#zdf;3BPY!)myT4>Vurq|j}dD4R0#*t7^s@0?w8%@L +P6&B#+j;J2EY)0Q;^+}`FV6Ks#RNTZfFc5t(a7$p=;d-SKyvwrUUZl~c6IwK4v|+!w!paM6gHk1#(4H +B@=D<=w<f-my6mi`yH0?=s6)iTpjp8a7W|=|0;=(PQAjWZ{?=svgSr0_%02T;Sq0f*31tu<ZBe~uSDC +KDstS@~<a9<D@9;pQmCto$l<U}QC_5d_??xIUoqy-3DSjuJa7M2Q`Ae!Ffw5lLMToz??Iqi@grGO@5i +94@7C1c+i{R>9Bpm!{^JnM}o2nr&W&E8e)Lc3qO(FYAh0}WH*57rflzepUS>o08slAwj^?zX6O$HxDc +U8~yP8XS}c!C-|A^Wbs=+0L-H{gHzSBBT-V4oiQ0x;i3AjDyerm1PS-hqq@SY3E#YdHhY5gstmvO?wt +%r7hQvMxAX}!|3>U1#`M{si~oBY@UX|)$Czq0J*N%bM{*XSCOG?1daj!{di<)A?kdh0Hc9$&IrrG!WI +xN;x)Imj~ZfyJr)O83?c*6N9Ol;aQu$f1dTln5g(Jt$+QjXG=#v>!a3=OC-I=q>QsyqxNK^p22l$$?` +3ErwD|*$i&N7O$w>Sq_&o$&Cjg)a92PBC&6mC<iBRVLR0l9tu%*|Fu}BvBj)uK>zQo=ModSSzH<dgMA +#gNRC=l^F9V^B9Pt+K+Z)Z?d#}m-2;a$k3zx3=15_F2h-XZausw#SliW5t_No~-o--cZJ3@J{<>adL_ +<T<wCVD5CzzN_HhM9*m!M5x&oK4JDgx%WkN`!u;HFy%Qb1hZ>?x?;3<<ta#P(J%^mv1udT+tYs%JoUk +j(FnP4gYqP9JQG99B7TJmy!)ubveC%#JPG0UT4y+O11LvXyFiZR;>GgGF!+f>KPAz1c3-vAyVM<n93P +~gm#)g&8+=MB&{$8hzmWKbZrUkVZhbje7P^VQg5bCfdqlgqEXvSc&AeisLb*1(2ihbv_I$dyTuvFbN! +r4Y`@KkUZ(Ku*N`xmA63zMivBVA0{r{mu{0e73#d)0?{?z*YNbMe|+bt_58jeBkY+)Tni=Ur}7WcIxe +GK2)DV@>#1|fKGX5K}Gqn}43H`Os{Yj?<A#DAPYTd#_5B2Tn{Os?3)U%L-!NeSpW8+8n4zIYgB!NoaD +a^zc#h*~Ba66Eu@jkSOW@wJ(3Cf-x&U3!}zZ<|x9US8zVGy`0z$Y^w<dE}`+V=tBd@I}zQiT4t)Ibd| +XQI12wn0n~Qf=8nX?n_y&j&|gJ%`jcM^ES=XM2$V@_~~aeq#4N^n{}1|6nft2y0;eK%rI&6?>;u5XZp +C@KPnH2?V)=24Bnog+3i*LjYJ^8ou6&&bHs_kEQ1BTPORYl!Z7N35`q^`EEZyfpvT(mu(u#+Vj>R~E7 +pkaz1x!axWi#xY3kjXr>}mx`|=JM_kIY#p^kOFIf^F#(MuMb&X&HI2wdp~J-MnhzX|n%AO<FlcE9MT! +H-tYQ8v2i%*~JRz!(AZlZ^5u=PTNL(I@Ufd;>aV-?5HQT`>8hcGju=k*0wRmT@g9Jb6#j!+w8ET+q<h +W%0l0_A}0%K4VG@Swe>_UJfUqbkdxgJTa3IgzH0Vb7bMp*3B1tw1Z)ei+evT`Zbwtxvje0z4I{yZ<fK +5JU{B--xbAeO&`kD%yu*V@lSK`Yrf+n{A+2vp6nu(PW~|0EK$;&^fu(~Q-(96(?#aITMz<Yw_eBgD6M +@OV|K77?E(`wiACQ5a{oh%R=ft08b;v%08mQ<1QY-O00;o{RI^ZlaYOrD6aWBbLI40B0001RX>c!Jc4 +cm4Z*nhWX>)XJX<{#PV{&P5baO6nd96F`a@$6d|M?UXYE=MY6140jmsN$y$~INYD_K%ma@Kpcj|CD#5 +*7$xF#}OdUEQPHy~q8%C%HGd?w$cK1AvsA4V+RyV5X<1zq_Y##D?Dv*&+?2WOd34xg7q8PkKkaBlbGY +c6qc~OXj}z*o)^UFNg5wd-iLT1Uq&Ue2Fq2hFwGpo(LW?nKHTN?0P5HX~J&OrQ8NNXXj~=gn^9U8Qk! +k1+ZQs^Jrek6n?F8&Nn=f2<wJ(b}@ZDxxAV9@<Fm73EAtb%iDL;SMP7H-re9s7}s0o>4rrqi#A!BOZI +9fxtLz{^v^h5tzbXp&s3CmIWO;o%!`Gre(gk0!SomDCJQ91UjVMlXf<FVmwX{-JW<3Nuz!oP^C;$eUd +}~Y<O?p!smlmAtKSwfipv)+&brEY9>DeoY{dcS1HJ*+GT#l5I`<rY0v_u@kF_r~g)a&j%ws-aQ8K&d$ +-UR>;m(1=<B|kE485Rd?rfF>8$O%CsM(vz`Puu6+u7T*%jx;#<`yP6j???;mxoQvU~K`+8uw59=Y3Z0 +ciew}dp`WJ50nF@1aX@1aev1}|CgV8KLtYY%{<;Qn4gGozsQqQu~_p>AcmW0k*5NLVF;u>4aCO3Kk2h +gkVH!^<geypKlfM#Y8nDHBDu5B!GHZ8%kmTmEz<lfU#uf!OOXRMAAbA+Ug9pt{bK>Qa+ksFHcDQ;=#P +Hx0rYQ%L#7}vcO<Mqmc`LRNv8mc=D1|e|4~Fa38nDaaEN$;ya+i>mgy7s_>y*0g2a1-3OnZEbspV=2& +}lU9#4p)fXD^E=P`@%@3<d`X>y<5@x0H9=xl-e9`~0)EI4k7{WRJGc4RI+s;~!UjY<;#3_SNi5u(fmp +*Ui&nZ+H8mZb(qf-QnL2F->aNUUX)3(&48;cOepH9UhMAiE&@$fDl)^xe(v>|%O3nZ28UOy!)^36OH< +&c7dh<A0kG<n1pXpAY}+fBx3}$Ue!>{<q#Qe{#Iu&Fgp5>)YAw<n8sv*)0J843G9$sJ2Rj5|g$ayPGs +DV(wMCc<ibhQUMRl!IG8gz{Vi^v)Lv9C7L;>q;3Go5AxOh$LF8bE<`bRbH^Qu1rSSq^0VFcKR)@Of{6 +G4bZ21B@hTwvA(HN~yDXB0CtT0#p_cV}A&2#O@{b~w+)!k<zV#F$fTsihqJ-72PAiLW1X^^*nE>HuTh +0g^uqsxPUC+Szi$K7;C8+bgF@Fj6mp=rX3<iw~k&ot4GJ+wjKMJE<F<E2*2pzroLfq>c0HOpWF9;EG- +vaQ&`6*zUZzI5MyH3HDmTzF=HU1!@K`sSCa~*3H$2+y`BRm^0gQCDa6AY-jbb+7)cH&v{YC4;f(fK5) +G@n_h^qb2Q3g+U@v0!M59CpmyCUP|j9JKkgi4d;*`xh=(t)J3_oP((}r3s{Q5raWsHze9`L7;Lsoqqw +Fs@LfE6~oS$8VFu~0f7Mn(OKj?0FhH#As8v2@`BYf90fL{LO^7E5iPaF6~48CnlqCe<PqVHS;Hdqdaa +FKf*&d+S*-ayNLE4(BPE+fNhD`8SMYc_(74S&GzSdGiEfncgD{-M0VpX5qZr@j1@CaXVZNK?MKV4|+d +BYT81pn6<N5|Oa2>y11`w=&*n{fzVNm_U9%LZ~<E-EIP$0kp2}0=EuNHASpHoy|zdT}7sq6*X5dniCj +6?nkE*Y3m&gK!aFk#nMH`5P(W0!z14H`2y6+T*1vZYxnq6f!A&RfsF1owf1I@J}?9KHa|tO?&n=03=y +0K7F4oJ-e5i|l;x|L%B=fiuN77^iOlO*0;IHJiO&V_qa?iG*q9mJ;dEHhT?Z+k3XR0P{RUNRjnHEP0* +;wm(o(Yesr$MtWmN99Rnd5Mw>pSrrlNofz%W$_DzU$nz`@R-51y><j2I1XmXFVFHq!sBL2SscmML(ZY +*{E)xiTL1P!(b(DWc;%iUu*b^+>E!X&xMv1Fdu19xRD!pBFtY{!W;y0FABx-wyH%SBsVt}oP;}(G%X0 +<d-<@E+qfP91D51@fQR$DWOkW6nYAj46%%$n_D)&pS%zCQYf!YJ?Ha*zzP%{=+kG~<cM6c&K>&Dw(vL +M}7lQV_Z?JQBg9Z=42W7CeL8<mzUU=a`mEujr=3(Wo55hukiKkj!<?gD6(nAEL#Mg=3MlHD4p7Y>~~F +W%MvpLBb(5@LImIl5xe>y+iRjVt-5XyCBD`l-$O@R?#lH+=TN`MZ6bLQaqrvfkP603yuygQRsT@mrHu +#$Ka3r8v=pqd7T4^a=CLIZ6zGV4O+@M$iIdoulN?*p;DY~!GU`|Pr_0wXnPo}c0~<G>^%lwIpjecV?l +0`1pfOQWU=X1>|^2{tn^zuSOdYZ1CrVT&Wk7xXWD;vm_4xh5?ncGUuNvV)R$KX0rgJ7Ano$mROKxqq6 +n8_V7K1X0FAdjrGmFzM~ihS6EaOf>R|{*Go=!%xYlC@01e6|&?XhJN+;pI0!LV=b$oVJ2E7BCOau~Z) +L}brA1Gxn%O&@`cAX{83QY*GU^{9NvOB1Z;KUe@a4B7O(ODe@O1LssNGf<mq>L9P5m+~1x9cFeqiFB1 +K^_2YFVj3+<(&4#F!76$tdM>!`&hdHolZ~LTFUHnG}>;rev}N0c;knB^q-I@Q-(Q0XPp*eq&G1-ig~h +<>kjEhKms7GSN<mbErK}GPxIAC-wzj9FbU!jy7G~Xve713tUJX6y`=Wb-&8S#tqqEUr4WL9!Z`3ih<? +P*!jQcra-cZ{pTog^sjPu-DN7c`5+2#MLoYB>o5oU2!<IjzC#J~5qn9m{XLv!fAz=VAm2?=9P4F;lE& +Bb*i-sL(?r-nZlNbMTm~bv+`;bkc=2)4l_k`%rZ7lcGxC05#h|Z7{76PXYOC*XI<F+~R=$YxLpP6<Ae +$AaviF1JC7A&o`<_u%ZGZ@r|WFJ>^SpTtgS^rPZ`|#&4{e$qZNLS0WHnM6&Bb;oQ(yC@@EIgiLkgQ|J +W*(!96HP5BU2Ru2f~J|_U1MY;Q7_?B7(maCzygW_G?dCpThMSehaZrdVEH1)@`b@1ogr5RS|7Z>iaC` +xahs(96E(Yl>UuU@T~2i$2_;)lt$4OZ3>U-auA`G;$Lp->R+o;QmA|y%sM{G>P}iA!n3(Ae$?HFXa0{ +jVE5DjvzL~!3*hYo9!rk2u;@8Q$o9Wf%W288Uh9ZDxN~ad*$E0$9%GH%@*~aFd$v*aA(;fDjF|?7hgC +E`mF_z3Io<aAc;~6$&udm*|om}2d-mt6px5lJSwkH4yVRWW<u#o=>!vM|_y<&tB5ar1j-UM^l8e2ouG +UuqF=?3fN7&;e_XhJYxmI*<zIXgOe@tx1kV%TW0S~J7}qlgN9)bSNhV1YQ^(e8#2Xz@fu5`v$B0S}^@ +9S%<%2_eTe0G_b(x|TVBm<gem!5ShSu>bp?|6*<x*98W+i?iG5C3}5#J-t1<U>B3y+sQk2^VhR?*X#y +}`u^F;<j)gNMT3fDl<xfRe;<T*^Y-kb3C$sJ&!4|J_Y`gAHl=-|Edy*t1d$p*pYIHC6@3K5gNge9ydb +$&+9L)v!Z#&ks*+QPEprw|AreU?sz9^EiZ3Gx-gSp&HsN@(5ac`9m;q`5>XGX*aV0^DaYk{Mxrly|pb +S`PgQc6=<{!|_M{45c7L`DKe{#yg6gP;0^iq(cgMERhE~q9R6aKQbEjsCt>p+^3IkGY20D;h<09l<k) +B)VS(z06Eb!fO_Vrtahr+J#FARHWV40IR4QdOCGLLiqp@)DxP3{y*!c5W-&Tf~v7EIGpur{^@W3b_m~ +ZxOp1Uc~YKDNnFrR{VnT5UY`B<tU|<vy;4i>77A3ov>s<j*_fwEoC-%;!u`YG@s~j5=2l&u}OT1uAT} +m`T*(S;Q{uO-bGyLUx_5zF#wGL$J(@9#*r6rFrcd8fP|(E5g45yIp-#TZ5~Mp_HoXEb+G77YKdIEZY_ +COM>inQ)@l)KRfWpDk^pqbpf2saPa=H(hDK3s=W#yg0s5I=gSb#L+ChS2645=*y)tLEx1;ok;u$s8Yu +hW$Pdrj2Z6X^B$!{Sf04QTv=2F6KOm8#78+<K|jrFUAAnW&S`=wuC2C4RAGorIz*WgYGq*)gI-7I<<o +1Vxjr+XrCu!}?pMFn~aY@KR&txB#Q(o9s!GoJ@pB`ZKjBX}>T)0so#gy<Oj+d}H&-Z9PeRT}<iSZQ9y +;jjjx6L)=L=sVuW=byg{Bp&%%uyhPp_C27tYj$DOq(RD*BkOV)9bVUjnWI~&qdEMEBiwRiCk3nZk7>T +a4K!3-^Fyymp~Zkz%+=(dW4Dbu0n;OZdj?{lpw%f=Y5nb!tj4)SH52Wu;F;Q${;}7$mKmT{u&Uyz=Xs +r065W*^&;(?n-I#0a8#h#fvR-^;B1UCfsZO+Z9aWnq0ZCiRhpr==2P>WRn@4~&PiKS#*9zf9*-z!#uP +NfwT~DqWJ75R|Bh%lO?d5-4`Xp5_)~$LheAuonO7<$hMcFJ2WPmu+8kqOpqit)T)8I<A*JlQUN?_GQ3 +}vYd2r&-{uZ=b2F6xx7k<8mCwn{TvEd-VTJ;`uGAZV^d<_0aHMx%Xpf>L8;ok-1&vcA2Sr1idj=Nt<< +8vui#AGQW}`ZeN!aiXd?J)1`fBoXwi+{Gbg<E5S7g#HJaW%pV~OrJC1I+W0vsSKo5n9ESJ;+&WZ%xIt +4;I;qwigsWFg{`YlV2^8TTn@%2;Ob)zE{fw)(ZXr(7_V??Frb`qhzoeBGB(Kye~5$>t^%`10`P+IIp2 +Wvl|w6fUZzr=9H`wdfes8Lw|iv*L++*GY6b5I)8hS8{}?I3OS3NI^8y%mhAg6VfDWHc#;Kg(2`qD-#; +m;>P?5%@aOcRUNjY8_cG)l_tB_a(Rl<xCz5+VKJ~705g7G)cMH5+dGiiDoCxpJLi_0e@e$}2W`=P6S6 +(<o^7dj2uEv;OIn%S+=O`oRn-rPl5hP)<_c!M&f&Y<@iQM|A+6eUGlV*eOvEoomi$vnY+3achfv)qq* +xzCNZi!$=^@z^#AYkyIPbJ)^jM{~Nn*a+M96#vca9+Uf8kM>nq!84)@wi;0sfE-&UX80aB^6_)aXX2Y +SaWp(fpBX!#r{st6d7IcazBp!Y%-F0+m}ez=uvLzzX;c-1D^MyIvLG4Bj7nqnBBHfNWeAqNS3rnEx|_ +)gc^zs~w3?o}f>kXZVd&aAfDk@>EeNM7=xf>E317Em1D%#B_PjQh@c;fh78%yIWbZ<Uv#{2Llh2(81g +a-%U*A--M2TF6D1CeAaIhL>6u?L@?7XVpbStlFWmJYXW5=bf&8;~G)<O8CpcJ#w3|LBRJGM1DBhAkbG +{OcApBf>z($W^BGJmVP7cD<f+Qo!pM@zZg($d+)w*v!JOV22BI~L3>vY||ekOpwC$~<f<qB3N&hJHq; +3aX<?wZ3EBZ(hjK3uCxc<eUyL!hAQxb_;5U91g9zQXm;X8n7*Qz?TDgSg=?WIaV*0oQLy3wcKy1dZ<d +9b_G)5d!YWeB+JW_ibhU8Z<qgcKi88I(~1YW8M1Alsp8ba0{zGV6`@+{jB2T4wxo76{Nc8o0<K>Vep* +!0j0}#&DKZ~VW*|}6WOAoM16Syf0c7E^_>gFzP8~NJ5KgKPx!!<v3K7wzAxL;_0=dAx3G3?!pPst)E~ +_5Ox$`Oige{cRj^MS3LlZk(W~uYmfqi+|E|Ng_t2`|-_k=oi(aARzQ$cL?+I8gl6tsy}er{?p88C{Vn +ws2%|47{Q$Hz?Nh_=9LnL<b6I;BNHBc({A?aT0I6>sW|?G>tqiR_emYj=CKukPodQWkKu@o}14Ygb!F +k-GfOecpa^C_3uwA?XZ!=T+}7+QzTdW7=Pb$F1IV<~r7__9U~TxpGK*^Mek*{W1A$_-jR7Gz3kL-5|w +5U7=Th$#hF-<?A)q$)oNmgEs_3L(;!cDWoQB6W)MPA+7nrLIWNUi-uJl*IhmDPi%8P%=9BRsgw4qfTz +ztePh@~T{_P7iBj1cIFIDKSln?*t%3LWZK^Nu+tiWn3oGG{8qLO5EmTqGE=t0V?qd2@)L#VgLPWnoFn +_Juc7Hr2+<y3O2spGDP2Wxc6@K`x(P`Z&z~$(dFYM8EmR;BBTtss~Q*4PV&&6L>$KvZC4>18jCm75{8 +W$4J?-zH$iZc~sLrl{E64q_*_<bF=v)=Ra>t2Xma%?})K&+`D<lu2MpOp)YtFP?*ygEw3kFOw(Z^U2v +v!Sv6Y}Rdn@_c;mb~+5Sn<apb7DhoWiOzd<#Eyk7fK;z|EL10j!r06{_8IafY8_EP^E?ia=n6P1EPQo +>&{OokF6MExU}x7;woIwDx6TAGtuHeG^HZw5$-LPGi(hwD2j@o1$Y~bj!Nvx7s*cC)HL7kG-B=u;p@{ +J72diPB`=VUehR9st$Hv4;>2~l4sPdCCPjzsYR=5M4(MYogly>WC-SYFbI8_LGev?RL{ezv+*(2Oz(@ +a`tmei~bY(t<L3DwkuuMKcY1Q1RP0!7^gkRTXJD%YwAP<9YV<2c&nYUP7K&Og?ArN}*QeP8Zc9B6dt; +1pml%1|R)CqH4Op|)t$dFX+FN<lG8Q~Qfjt%6JWAxk;bR*KoCh-H+;o!YU#)@2g%R!L6D4jTfwH}$=( +`MD#g!Det!k%Y<OuFoHTuQUw4MjGh*NK5swI%DIxCtilY2IFOYe2nI&)9|!U{A*7AKTt~p1QY-O00;o +{RI^a9fYt(+xc~qFdI10%0001RX>c!Jc4cm4Z*nhWX>)XJX<{#QGcqn^cxCLpe|!|x)i^x+E14vl%mN +99-w}eML5waaaS3irHbf=37_&=+1g#L)EwvbC04sr{leL))tJrE=pQp4^v=6O)o`<&b!yn)-i`k&40T +I(eHMUgmIy@RmNEQ+@?>Tp7HwoH4eZQa2`@a9YXm;-0d+x7u&pr2?d+#|@dH*)X#4wB*{#2D=_A}Z)C +-cAm>w&+lX|H85ucW<u^?t+Rcdx$B_sF`uwGH2WxZ%O?<URD@qmO=<&->QuyawUXyhk3*E4!yE?>paJ +wR%owW_rF}#@62*UEk69%bAJ4<v+h|<`H;)P?<I}MxP62M(LBC`8#-qcilAeT?)H%=8tK-RfnIiKX0e +cdmnkohvi+_X19xB78@+gmTNDsNW^tBMni@noncPG%L`hZ>1Oz`>77JuVA#ko7REr+6HlhoK#_OrpaJ +mcY^Hz+n|vl8^j~4Nfmwio2Mo-M?r%V9$iTFwK{L)V%;bN9dpBnoJx0*ZWrlwYKZjqvk%#BR6MBQNuj +bJ(dC;mk4XYmHAB1t8t@nKn{QYS(9MtQaqk%DpZ^4WPtxVQ%C0uAu!@7otAWZuTeP-^3XYSYFoO2phu +lX(jewL--fR^X~8r&WKxQGA$zyFhe)$-Zqvu2iIcC<_{VeD^7u0gSpWdv8yWpk^7H5eG|S5==1Ji>?c +;wBFRS&E0VwFI|sL3#;8{2auEoNjU;0~4)&gPOziI2pNe(Ecv@4os~h5v?ZkKdWhAbWOkXBx)MKnl@r +hOroYkIp0u|DN&PL$$IT-uzb+X9khhzlrZk4q}fJu1Va3zS20RXbFhL@jt46YvWqPU2g?cvmG|Z7%33 +TzJUiRt_5Bp;47vvGs_y{@6e2YaN{v0_5vay~#1ZA54f|dIh^1tjs;YjYR}}`yxk<oD;n|zZFwaXaVi +_D#Rq=4XRDD)*#U0T`lhhao$T$KW)_{Fx15$exc|V(Bs^lJ0q+*^tN0h%x?kR|vTyekU`I=zkiSsW(k +@DY_%?DwMm_1}gCc{XsUK#3v`8rVZ^(r3Js_+1&gkJJ!Hoo;j6(^xta*sXa=;xjb`QCtTNWxh+sm5s6 +*#cLu-vZUv0Pyp}^%7q?B5}4{dB#-P?Psp5B&q=a4~ic%q<<o<=}qj67kgvKrg-X@6gt=q<@a}a+~mS +#RjrpZ_76e?V5J_$z#`T5DEG-asvbAmLw?4MP5+fvAT4XpIEInq(A?;x5H0Apmnm9<Wz$q8t6sLfiY3 +-N#_*{Xj>x(%6_e!Z!9u1@fsC%6nw51&v~jh1{Bu-+wf9Lvocs+)zorIgVv5J-D=yJU&jZOGHHQVdf) +u`7dCco$GLRB_-9Qa)l0QkqB1Q1?l&-QJL&BXwSKR%k4Iq&cl)Mo|x<?i%WFw&0L+Y|ANjlnv6N<^+S +B}M{0Qaw1DYt9Q^~gPHPB!EcuVMT~zroLVuqd~hQ-M_96X+AHYK{{D;wgfm9P(-8i&Jat4xg(8yO4$m +&6x~P_K;IcKND|0dpbGq4@)iiT`VGst@6Ok@p`4Q{K;z0e5|A^Se9>d``5x_quZZWrREfBn6ZkR@@;D +c3lyrrsQGfC=Wa4?P*t0^=C>kyDMakjoV=FP3ORlADVzec+Fw@ZfyB99H@Uf%qEX`WXUX#x0GPi|J?V +zTRiqclB5KZGMzg&F*`Uk|TB479q$Tn+@h4hhua>xmyrv~?qlw?s5)Hl&$2pm3S^f%K!_}NJs0)B|F~ +@AT*9+w4^{PBHO3krBnj<O{Ybf@<ibJ_H_-sCbzTLaj4P;@%BJ#0_mi%r82b#~%_3cI)AiubTBx=JLx +hy}wY9|hdnv)065C`a8jNMeVaIV%2n_GLGg@`g+vE7F*VY?yPrt!L?Fn&v6nB?M$b57><SpZZ8G@*Wk +<iIZsmb1WHxqVDM4AC?(KAoTFXWeA`7>&{eD*z8_z`_TRAyckp#dcO6h`kH#hZn!qHy6t!53)Fa10mp +ZRX(>B8Qm?=mf#b)+`d%ta4uFb4$Cgl%jOfLQ004;Ha(SMz$!+KkORT95PWQ+DWBJiw=;4-KY`nqf(a +LGdIB`aSYMPPe6A;S>j^w-57kR4km@Bj0-aU$clnM&O_NkVv#j}ZoNmC)+~nzt6!Z0>W4dq+WDyrmui +~B!`It;>)nkyVl><#{H;NG>G|<oaDl)Ox-%d@e6VvL&C#Fv4a}xyspY+iJ3Tg3HXdL$G8f@XhL<@6i$ +qMc0b&1Ffs78YpK9^lqsSuW#y5;(!SeQC;QG|h2bIdTz_2T^LyxE_pSp3t)khx~5o7`$njA1lzBCe|0 +KxRsQaIH}pgVnvpeM5E99)#4G@<Ck1Jbs|T*|dUUe4oy<(w@@*qhv+{`1}?`io_^ChcEUc!R_7fte32 +Jv};Q#`7^xBUG`Am6ryB5MadM1s|ku&jlHi%e#g<ZE~jlw)1^$_+H@(MPc3nDG<>BP<#Uj&53_aBY@h +WbZF_@(USQ|$_7tYzyr;^~`eK)HUd^RE&K|O#a-7FJgEY_Y`?cX~5inCtO>hrB>x;JIBS}mDnUx?JN= +s9P&*?DE@Xg8sB6${w#82z?8&_(BwJDJy-PDiBb3_C}vs~?4mdJ7|&7#3C{s#D9pbPNe_DI|DNveQEa +nTB>*!rzm*!tc+Y<&?0^zF~m3HD=%^>fRsyp#yZ=VqkAd>Fs=RPqQ0&Z2OH*maXeP4v;?fUhq;hhw>A +>U5#NZ(AN*l;@xBCRR{Z5OoyUUY+na_95M7Qwj~5SGx5gf`Ky^X-RG<DR=;1<Y>@ste06aWULPy5iS% +QIu@6EWZLRr1*F($%5g{uAB#(YP9zCRJzr0iJ7h|&w8UJRa!M=F)L{x@PQNk8-^6-I88$jeSiKZqhcA +FEL}^&1RI2X5Hh6urI3Q(D6}c%5u~Aq>u7PGBjr|5t?#RU1BpA;}V%J>-f|b>0vjI|_Q-L;Bsqu_G1Y +FMX3Dg0+J)3+05<-+256q9OhoC*AJOL1bl}bh+f_)75Dq5(8kCPuyM2U-qoSEc#niB*)MmYkqVSSN9$ +RjPu;`~EFSC89=jUj)SMh8vV0n4`yn*HOe@ZBc4&O}`(_NXKcxv%RC`55v?fS;2GL8PmR$SM^B1Qyu! +IC3o{`p4Hvh2$NO!{v4*-`B*TFk%A{nvA7lqg6@)sx(7CQb|8TF(4DrVqkf%m#eJ`Tkm+A9}6SF?PGC +xd+Lj9Jh1KB2;iy^ag|LG0kzsy9SuSb`OV}cqAF1f=unlrfs`Aq8g4$3K*k~Skw*bCJY;MhjwXutAP! +kQ#BeoY?hJJP**xt0<SToAX0qP%ht0{JqaefI0Fl78=H=at>*oWS5S8m86R>wZ+T!dcM<!v-DT&T56; +}^39+cOhc3SFeghtlhC*&5n2KjNM3$ox0ChtQ4bO?#1f>#1r9{F5*xfLsWh-{n>tuJTgiZxP}T;Y?Jn +B^=-rmvuc;m69EdDnrURk2n`CD(#RETzchW`||gEJz$LL#AXpOP-vA<(MJ1&$-qpWQ!GRjZld}NtanD +*=fc^km3%R84UqvZLpqti(EFY<*2qm!}OU*rc6o>MhHl9KOk~T>}3RKv<6iE6A)svgOxp`P(^{hN8Fg +r2qgudaQn;-F<#P;DaP;L0Mk2<+t&kZxd&Hth|a+16dE0ZMNzG^@n!WOB-~!_=;0&Ed?aXYpUF*bxQ$ +^TtM;A>{Qove&)QlF*&sikjyWxuvxD0Q|F;)}n;Hk1IzCmdjEfJhy}WX{j%%^l4MWR#gvWuNu&2$~5l +Zt{5&OhsPft$Jd#XGnS6Tx{_`ejKgC1pF(W6f2Q75<0@U<R=X^)^?$FW_Ve1x{^P(fH3=hr6@Qi@1bH +d}&{s!&22=-%*Mk5?>48f1iAvUMTM#Hr-u0?=1gY};o=bUir5o8<^d^Pr>-lk6&7$l?K2xW;d-E3&*Y +9|$9}ifn^2a5?`q%+yNg8cgeQ`atnO$*v;bMF4X11Vn(9!6~`CHnN||D`6r>j~?9-^5AlwT?a*^?#Jy +ZCB@O+m@2pL#1y|71ScmpYUhjPs0RpB{br9e57S6=RD#7naamo&e*9G|TCwcFXvu06!+GK%bMwU};9# +4+@DJ4igbg6P@}Y3tBAWwEAkfN}#LuUNKTna(KtU?cI@)<N6ls)hg6wxRUt9|rHodpf9;%Cwhe{cysd +y8jkhhQ<;i1mMx`++f_6S}_yXfd?nBF|}0Mxx<qWoS#NBE*e4BM8H9c2vDyu``?<Ev59#r8Z<tbBmr5 +nN7;XE%-)LpC?z%aFHNn=3SU0C8D?7~EQx;T*K*j&Q@YVp?Ht^8;3Oi>elcp`)~*drN6{E$^BUc`I2g +@?v)5I6V(-<czO_!-yRPJ-}K89Oqv7zI@hxs%=HSwf_)q!1CkU(#1oDo8RFZL}K7?)?$S(L}G3j>y-z +>e`QUd;KOG6M47Y_1VTP5k;4f&gugG3Anf1dbo)DRszXDYO&7&;s{MT&z)u;2p_%WN?-~T?88<8ZgmB +CTK`R7}O2^9J9qRH(@Q$IC_<NcD4#IB&H_+a(B4L~7|M}0*B$({qLX9NBW|xkXT|vG(<#n8gRkd+^Vx +_toLb2JXYvKAZ$%TaHaIp=knxy<8pigFGXEq2>*U9Z5s_~OxT@o+i+`Wi%H=I{5QAwmISNNMf6#ENcr +mD)Xdfr404s^$#;vjc`Mj}<l9q$0kKyDFbuE%M4AqQ8$*ndH|sFGbbhE_^Gfmr|aSS|1p$2*%#{oVHC +%lglWabv@+!Ll^A7!|z@<H&X__^>0wPmVH2f%__B+$4r-Bt)e}8N`PeVu72<UBHwxNo!7GrYcX;ZY{- +Tdeybrq_-3qWG>)xOch1MUTv>T?oq77jm^2f29}?5RU`o1r$%lMu09Jog0``BJ;<F2R(Te<lnpt%2j# +R%7FjSZ{*OX7WUn<fN&c#5LDok3+UuHpppRV8m5VG&$R1{V|3-D6+}dPSP(E-!D=3?dHbAaaI|ysbM6 +ofO;j=+-xQhHZJIS1jaJwf&^%_~o1=eo`3Bi86zrV<pz5Z%(K;^Afe$XK+Dm4YGj}H$6Y}mv7cVl*cx +z!3oDmC`VpYW_)o-4U}mDH%K7xiqAqFZn)S_k6GV37rM7IUqC$JJuM(bZs-<BrBb?gy_!gjc-<6<r}t +RxD<i>o%JW3k{9&f=__4U)MM&H}=E=0OhFdZCD{T_A>mmS8-vnA9wt5eVQEZ7kcHek}5|q5GgpMWYBf +T(Y3)SM;xxf4a))PaS!>^-9XNu65W+h8lONWxXR#)7j#|c8dUN<gdi)x*n3479)3Cuj_QiH8lZc3s~~ +f@dO_X|TtnCC?ARN)_B2{m9>)ZShb31nriGL1$04q#L#ty?Bh(UWo*XRzw%sq-Vl7&XO*soPoEv30_c ++wWB;ibvVB>Er60-U0i-cU^23k6YA{iF`+TB{=?~Y9l<l3<~kfeGX6~}VPYMky8;xcy>wR}Xk;Ic=^u +og{{Q)spwmy$d^na!_a#``H9W>ax<EjINftnrjoi=ufW>li?RG6F@+A8ypCF;wD=y+xP7qFO3+M)=cG +BkLuRi`c^2!M;USr|?}bDZ5KY`6Mwu1R_{x_>u(}#HZ83pQf0s&*8GASYF)-!dqWS{ubdn1f77O*)m; +bx~GM^Q%vTd2DqOBI`f<OZ1Sry$rjy-Evh`D7S)~+W_ZaAWHdb}?!x@GdP&yZRNVD?$V)ljDDGYuql> +#6FD4PSbU&WL)fc%~0R;FXu+|&2*L5IKxj>LSdjn{U`^+WE6qIcJhM<de<0kl8O(-^9jaxtXS81IQ*6 +06H*=56BM-sCo8^6_tXgm^u)z(Tkfht*;&r@WU&g#%G;6oHJ_7sEi-WV^6PII_@3n5!Qu!6C2wBB)O< +c32JXv_>mgdt)K>VO~Ci$#o7Imj;nj>zqs4+;q8%;EOkgqhm`_7K1t^~|?10%pcc!U=`$_ZZ+Ex&YkK +HCPbt@0t{v;Tl|7mt=_6Dqv5rnmPu6WGur?-^FPpvl?*d@sb-WaDaf2<3%gYjV5WO*>9-wkiS;b2>{E +NBf@PRz`^mtqKt=G0$Z@i9GeLtIaR)gmAeZ5DAo4%9Wp^*P9jNVQ&JK?n-=~orLXK}a}&_oF-PY*o7~ +fMTe@H<y~A;`;R58rnJ-L|Be5<hzvcMGuShMIXlLvP@B@@<;96dxwVMHJ?A6u1v6ra4AD4xALD+OCJY +a#Ef|IvnouGosCR%GD)cUyJh^!(`#%rAc1|{Uli(qA9O&v;F)BJS7q`Fuq2sr2a7g_PBPjO-n${#<yP +iJ0_TTrK)Pen<fxeYe?9&2Bi<=Or)E{MEIUX)8K##+rh775}3usPY)YjO?Np*#;$dK*sZ<5_f`x>%T} +FtRyhO;&PXxGYV3oQ2e%+6UB+x*EP*k89sID8)yz^trOQFF9Alvw2ls`zb%j5jDZaGg58$`In1ovw;Q +-!&SYQsnNh2R5P+6xjP2<$snTSl0Ri8!5Ve2XW=F4I*aFwl0YP(yBS)c-o8F9>N-R9j+CJJc4(g}Ob) +ubHHPR`t68ebXFJaG9!F%;9cty7jp?$hyERvJbt_{4(p^Ow7ogySoMt+vr_%I9;seP<3oHVP4LRJIdZ +}#l5Vt)f5@X%4ssw8<U~}ql+rw7c_Sy)n)Yw7R3$lm}R3}@JU=_x~<VE2JCV47V4Fwzd)S9F{8A~{3M +d56+)*Z*d`s?NSrBxo^%qAy8o}s!>E-**oPO=NDnm=8rB|nFdG+((-&h_emz9HN##BE_|@#Z0fpCC2@ +&%cT^=((;XKFpP?Oa)S#Vn0$ZWg(c2EVU*UHqx6xI|EWgZDQ%jy+TO2ptY!WSY43It-C}hCoS18q^^g +>?ysN)2C3XCWO>N@Ah#JnQeSOjYCPngc|Z^4)|!^k<E+>{2r$a{T?T&aE|$;wH4?j!8ZFPoiJ(>NAw8 +vZrGI59Zi?g1aa`q|3kOToI=YVSMxy_7#uY@rAtO0V6SbZxx63#<e7ZPf;4R{iQTP*f%5Ywv1s=VZ)A +YTZug?WMWTkV#d46~<6gQQl0xi#51IiVy9m)nTkieXxd8;6Tf0*3!Aj9k=bD)urJb;@XkEfA8uEc<Fx +0VUoR6=)K99Z@*A+1J^E3@3>Cm3`@*H4sF>cs^ci-j>>Jc1%`)g@#ePHZ>JDNxjLl>cC0Qi5e0jY=<| +r4!N8o(|$|Dj~N(K`4<7YRmi(F5&I4E-g(@=n5CoaN?a&c<EMHEnsmlN`-(>!A3#(50QE^RFsdq93S% +^R*_54h~Qd--{>JJUuqajwX2ROkljF9LKr7KX{ZDME|p1D9yf6?8kdX;S7R+vtVL=}B6^&T==-2q5ik +BD8ELc!mGeez$$5t-RSwyjmgqzw*49oDK^I;NsyUy?Ckr}pzYX<jx~s~Y?h(Gk&0*mLsw9gs|8%MYC~ +pi`A-=D|IA)U@(vp<a$udkvR4MB#w~G9H4-s$1k&lyn7-A2pD8WtQ`yQbCF_fpjuPS5Z^2vBG;3mI13 +s|b34B}C}mBD=mO1(WeOw-adfrf7U(T!tD!+&6tHG5c%hBKjRC!a}+07Ml)#)yX$_atbTEKo=DaTE-d +6Ef;OZ9OBX_AC&jk++bAH&FGE{GcGQo$`}e$PuA&**@DCXx#VlFsiR;-U~qILWalVH-Or|5u~2|mG`5 +FWWfs}yakEpmK_Tq+`J!S@WPMq#j6=qjB3q=7~!<IpND7G`VZ_!igptS!aSBL&yZQUbUv{D$pjU{8uI +Q;J;Fv7(}?QTNS=d4olU0@>z_oP0WGse&EcUXJAZ~-8UMBlCfXUCXdgbLL$T!B2t}4Ws7Iuc`!T|AAU +9z*fwDoXUW8FQaJugF!H-*=w*ohh<}HI?G9#w5gYF{XjF93c?_UQ<>VqF;j_f)svvQhLdD^{{ynwS6@ +VlDGuG0W6HlAS+eh<QbcpWZpbVy+NA?rZhi;$zx;Mj9`?yu7Gs97fHK>S9KF*1AcH>U@Gr<}##dAMmK +6`z6M`mH&(LVRSJ>0?SajkKJmkC|Qcal;9C{OoB93m~$K**SP4KFvFsLOf1qcUmz%&^@TCQA-7+8Q{M +in7DHgFc`J;z;BwF2}Lcvb4uu)E4tet1-c;1j#e5x4M8=h6$iixMF3KtTZPDF)SMPPMSbI(6M{{6MqZ +2nAl3oQV+iBJvb6(tx0<sF9>ZGpj$B6xV?SPnA_EAAQgyFX9ha(m6cZjOi3{_1JoXXe5Aua#yn&w~#y +9X+ktZ$5$#R{AO3n|$8uGdUaH?e5Pl=U-1|{wFGy~4GL8B%%+mDoZL5k*DPC|6>@hz|6Rj0rau4S?Th +3=3Tui~Em5pEJ~5lJ4`(ueGeWbpS^@TDTj<!=y4I)AlD%v@lH0VTIM7dT1<nK)uhe8(1xz%%0$Dh2gL +oLt~PX}pte7)M<_2o`&uCK|cGHp>47#lH^0$|$~L%!oq&V|dOWHpUr&PnMgfJSvj=`1?hY#k(p1574L +_k)&{e2>{R^VM2gxSH_=|MW|s5j^@>a>YFgsu3pTq+(ct%rd1CnVy5YN#x%c!+jR=JpDO-cyxD$4F=l +in)eJ6hn(E0t4A=4k9<}7H)W)S~As_dfJify)=;Xir`U=Gb@H&Fno-zysBUmg5$t)J%QOMyT-_hn7%z +Dsi(xDk33n(Ri*4IUomyArdVX~1?ru$QUXKC_{$>d35dln`em=W}1SFy6O<Uv!CNX$qWlYLEed(0Me; +psfAttTF#w;}X%oIH>TRZBNsTB;nBDy(v)RoZBl=1Ut{Y2#$6!bUe;{5D@9a>`{URHo@k7tr~-8}U@6 +b`aOyZU^1`<$`bHM8b{Npm}#uF25Z2-%y0A_%)(kC<&Hd7UQ-JV}s>3H~H=yx=YQqJe$a+&fV=H+rGf +FQ2H*LclSAAEwZ{j<Z~Kbt~?{hp#jQ6{`q7)GB!DrZYrC92TJ=A-wT{x6lB%*NVif2mc|L=paOFFZ%~ +l76FqsiGARj&`?gxv1-qdJX(bBu<C`C*8@!;@Nh?`tnzVAVc#lm@EI%1Y(NQA8RE)?JE#eKyl^j%<o! +P)+b%9c2fFm|F<yu&U2UI?_iY#~l_Z413e#Q6~2Lopy;D^;#xD6&QWn&s=3I+-<Yy6sWCn?YkuTt<d{ +yx`*zuQmX@19QlJ#ZAyueUxIr;p%S`q<t<AA!U4@luFB{__oZ{OsvK&t+ub=3u2+3gW4El-7sLQwk7F +yK_(qp1}Z6N)X#6SK1(kw&iS+U-}t2t})3VZMIuulR&;UkV>q2rx#ICuySyv{oUo{g}-P!k+A+Ayb74 +7$8RKWQGwj*8O2EJbn$&&Ha!7(R=YA}s#UwM+(!CuXwFf4$c_I<RNER#j*R_?!~E_x7z=(}iFombhI7 +G+{}C^a*^uSWTm}PXe)rkwIC7RUyn&ZhgO|-_gvAhB8=+^E(3O<^@fjsd1mYs(wnWsR7G>3CIr0~k?x +il3Sn_=;UiOeT;3*Z>Y5Vqxf4*%+PG*%l4=*>#W%)K~O};G%e+AuD9xtVtn_PqTx7^Zd0-7~2QJn%MS +3KzIS+x`MMdZq!RZ=DfYgXbG@84>dCMwYvpIo}>Dz9Vh^RP^>oYL-68J$Z8pRnOpRi?beY<k~rolmTv +LgSZM<#JYgAM8fzVEdfrdW{pq;0LRTR5d6shoy{2m1o6)A%11>PMH78<;72C2g{xW{j~>0<TwbX+44s +OtAa`mfzU?hmPN8FE_b1__Fhw?%JBJe%IGFY-C7eov<bJ7$7vIKwcbT=1D76>1B#oA9$NREZs9ty_@} +6`@OeIbk`GoR!^8btPOgUa`Cc^#<Hf@)kTArMXASfqr)Zg#AM4YQ@`2nzeyl~ym2u>YSG4N<C!<^S*H +7qKs9eE92d{^mct1=ns<Lt|_dq}|_8n3JNwEn?mUzwTzI+=Db+)`XKezf`_tK@l-Hs#;B(Beu<+H1#n +L1Sz%F9@Qo^78XueFLpL%ajZm@8fy;?0h~ub&f~yFR$$4>maiS}Z<cW`v_Y1NNd6w61!Fc@@VPUtWP1 +W%sJ5QFg{%c|c|aiZ%C_m{TBTKf>{LsE>sX**k~@dRHy`a@Dm~b*&B092V;P{S*eeAsP4MsZyjGiecs +J)W;^PkL9Y5%_2EE;2|?p?eSL0U*Me^`*C}pT~&`Qr<%+c@;NySj8k2WQVpaYfpk^<49`bBUO#iM&$G +bEEF}m3gJG!lUM;W5XYXCA^7+|h&yZd|%Oo`$5Bd3A)KofG>-T6jk?DU0uuz_(hbpif8B5=t@cw{3<k +VI`efM8jQsoUU2;>5D5pQQ+M=?Rjt0FJYz|}4l=J>c^dA8pum9tXHGO0XQDmN>c^6k=QR$3_4<w|wt< +|S6+7<yviT#k3v632&B2fh}iKBx-I<tKPZ9*k{sy;VgOvpyGZV~X`GQ<KO8tDlok5jR54iFiMgETx@# +m2T!b!h%K2Qfnh>N^*(WIO-xay><x|+E01qM&yja;I08=)u-|IKsWwwe}n$U>2D|f?WMn6^mjk~JpsR +DA<zLCx`g?E2Jc1Nu@vEYqCk``bvy;Z`P=a-C7&(_cEeMAVC`kx0P6*v*KwXd&h5*xAD6ZhTI^Z+dl- +L%XW+Nq@ebGWJ5<_@%T4FS0|>=PdqVKwwmuK>!IJKJF}`dA$L$Mq2b*RwFiPDVVwpSGa;O4c{i)%&`F +<(z0^|YF_Xl~9OU(~VxD)TFib3oewEw3R3$$+m+UEf6ZGd7SfW3`<o`y1V7zAVfE|Hk{TSUV0GYcXph +?=-S2kNvzglA)KB*W&|?qt{ydlACTG>kHC>^XQ%qlk{RL9kxDc)c)NjGDE9khcs<2e2&xm6QC#CHB)n +i7i9jpSJbep>%HFkzg6yskJ>;jKD8p&zRUviGr^gU2v~n@EBS!#X`(Ni|oCkNPLfd!D^k4-^qK$xQ{O +v<7@a_&_uYv`)s0941{7K7Asu1M!3p!UXKRS*2XNhlTCEP7W+vuoEMX6@xWAX5vJ9Pn~igYT(RA(XKz +YoUxiuXb`9oc4dx|;!P9UZ#z|pTaV@vfz$0AC92)p8*D{j^1W<QqU?bNujs})-E$J9|326i{fMmQhxC +e<XO2-}<AlU?ROYGBB9S^Ixr*8xyk824Tu?WzcCgD-xW|5TeHXw=`_+twqT;LPns$w`VN=Xb0(kNT&x +l^PA!34LX=>gpim$vs%n!~BU1%C)JQ91<3iDPHswVx7YA!01h!3^UNRj%PQAyto;>FfmwOR(Un>=qz{ +J_?mLf*P<&uBG3MXP-jGj_w;!-Ni`prLz<#d+;T2ihIfi-Dyi{0U<pFLK^$v_J)?aiEEY4UJd2tDs6r +dozI&(W2f+zAptaBfc67YsDNJpdT1Z8Yedp(W<+Z$w9VdEo@m~l6T?g?@FKF1J6Z!B11R)jt!|k<+5< +<hh3f9#qQpYe-MS?Q`Tn;OdsCdW2Pe0ZS})Nw4MOXqv<I6RyTy#BFUeT~9l1@eFoTd{*RYDz&Akc3hk +5w1&lemTCXU!S6VlHKI^{k`seTxRZnE}4z)Y+YLE>w<r%|WnTDnm)kFVyo9;ERPb5F%kl8-;aKPJW>< +!2$q27U=?8akSy0VEq1m*NNYiGlZUs^wdgO(tK`4Ogz^Axk1#9&fFe14zlZHOOi~DJ4o-9c_89IYB~B +t%`J%3TQ-s80Q|>@*mo{l-Ddq+1LlTCXTNc4<PKrLaj!fRH<HCM8lg?G^Wu^X&WWc&9};XXiR%8o{*7 +8C*$H7IIN-BHgXu`E+t(n5;H=r^H89Nilx9dOkOl71)d$I0d)^fEAAj|xk@Y1Z~-Z2DH!Iea;x)lVM$ +j{s-5xy?3#FZa`WfNg!w7@6cn=cBCFJS`8sS(O|qZ40d*uqUJ|0oaf2{M9}wtVsWyMBVku}5Ks$nCCO +wC%s**2~bzI9MgOuu9wxY0tYsc#boaG2{Epx?yqj?(FvIZdih0B0=k0KH%s2Exb@9zyHmgd-^Av$C>W +DJ#9G|cpH9-pfrq%RDD1NY{lLB-7NTQvB*G7fNwk*4Qixja4$G%0X=%T=2|KwdYdze_yM^#5tNclu1& +1|xGx?h=f4RmWbVbp#zu6e&~g*N*o_(S#hyhzcoJ)73S&X8;vP8n4nNC=l9`f)M--GVT2H_qx4Rqy%@ +E!-dlJt&~3GOX9_%%_*iJBB3>FiE<zqz=8_e%k}0V7o`kHqHK#_2}G7Ew>Ql%<nL4I^pz>aX<VwEDO8 +Fn+dGq-vs(J_{8rNMt{3Mse5x2S22KfoFQDmo9~ny!58!M9tnb2!Lff#*$rt<@F~*zyHz--V4Dc*aQg +#{nY=2%&y%ao3%kR?5m+3-ZaNsQcrJ@I=yIocxUzw_{Nd7!+NxFyp{Q}mBVYP-g2h=Set9vkyd;rBTn +TlaSN-4kz5sWODpCBu?riQ;!3z~&%WLk?d(O;;QEl2Jl&t6&jU&I5Hu?gRnDMJsO+WeqQmyA)2IKhFD +Q+wTa6HBdj@i?%Rj_l@qb<c|wwX}J(Ix-9DG95sGn!u?oyOlX&kXEeB)TXc2Bb5$gqF*%Qw{NA#n3_P +i$*y;Zzh3Xq*HHFm@0BPM4<P#iZC~Ak0n+~gu68u8M%E<EeL%ES3I+PPQGV_P+90}ScEr97EhomFq@e +rKS1@G{yh0a%F&C2Iky5Y5d~tuH4mUX7Jcb(_+kWG8GS4n_GVSm;<8~*r7XCKDUj+W%apKkqwf(_O=A +WTm6`ILB7v722J>_unW*{t6lk~e~4wrQuM;`tPo2Fgmtc`I0T?tzLxj>&_C<m!`sC&aWkDncRX%rNho +5f<hFUs(fJ!ECJc4725Jy_yX5=DV(Q)z?BQlbWo0JY?X7h#R!r;EhQUnP=E-de$%?4ihhw7`t)A4`AH +?lZD~42ESD6x|-Ghoar&WUrg-xE4$1_I1c%X|ov>r_I*zr?!l6aI@{@mtTIB$uFU12<4Lt-g^@>wq+Y +yZO(gy{@{~S;PoIw<5-AWBJ{7UOQ=4REu(hVyg)jaaA8<)R&!o}F4IeWxLgj>uC=yMvp}aK+R)n;`0^ +5p78sG&65<Pk+rPSmf=&mw*W~EfFuow{bO)c!#B_h&z2xI-=>Bh8sX>ewTSCG~7_RkbX$qO3J~z~jpl +-CQBNJERwrLf_L+oXoEQw?<WU3<X(uq^10}PG?@X>Q(1lmP`@)2)aU06+D*uZBsEl!zYYujqUVwEv{V +I!Y|QF#~z1+{KXL4+x(tv{my?CYD#y&4)}y@6tWq2l5Cbu=tLhrhv=EKD|a2Jg=k2PSMtZ(5u+#THze +r(}wkCTy_cYhG|^cdJb?wKGhK<Nb#A#3tUU_mIZ%o*3>I&-x#jGtZ-v5#K@YsV`a!%kP#o41blp!3V_ +2`t!(d(6&f!Cr$v4_%q4m3AhuwdXNDSNjT$}M=!hI66oV6deod<8tHP)Lr5ijs)yXziMzQ7BrWpE6dJ +Mt=!*b4>Xh&)SvUg~{N<`)8-TO6Di|5O^Y|?&Mw*h3TK~|HFg0qyAhK#TXEziyzjly!>6ags1>(?UVe +Ckd-vWqoN*o###^N@R(>$E09LBt<vMWw`LVNPM#o4@3TftU(C`(qU)Uu~f!eeY9OOBA&2GOo3h6gavF +?*<Je<AddYk3B1cAXJJg~e!3-|%^}N-m@DzyoBn8lzz!J?M$L)tpx-=C~FQ9tF7w&>o!>7<DT|(HR;n +o$PTFLq5>!@jGyn`3bYM&RSGWxF>PWG&Oz+MSg%>U-+smtK|sS(vITF-g1~JM`FKbMiukg4BQ_)1I2v +%NTDQj2Y=_(#zrY<D>uL-yN=tt5L5{TP}benG#e7xGRG7s&9KN3U;l;Nhz3?o3mKsk22OQ#i|wq~*lm +Uq8e(!3+7>OPjseIc$of;HQfsi(7L?{fLHF0oH`PmpVi-@v?-I_*=gCJXGQEOVSr?n8n4OOB`aUdvGp +^%k$`CA_`sxsNl4YHD3K!*4GZ};Ha;a6SVil9Lj@5aV#;Tq`R;Bz$(L5YyE^r^pUme5D{`fm|B4qp4; +zXGC1*BGXt7K~mP6ny*G{IeQd8H4=oIHkG^)A*?YUWzJI23s>>B((q%ZRssxt4N>d=<}`U`ogX=U)<M +P`ga>3bj&`T-|sMg##oDr`7eo<SZE@m-~vfdEzFi@8ZFEov%tR#+jjh)K|XN$OXPY0n~!C)4&D(j0aw +s<oTS$6f8CGoQn%jDZ6t%eOh-efTukq0pZ0hjkbDuajC6dvbttLv{NB8r5K5zF|%!P?&Q|iylXHarX} +EvXat6piyWr4b=I|*_L)j&ZL-<p=xk0le92L4_!Nw*Qa?(}Xd_OoLTKzbT)863OfjwsdCdb_t}2p?xy +VwISg;kdxVoFcv+0i@E+Q6h#Z6*itp76c;MK6G1tSb}WzdZ?Jn}rm6kY-Jswd?i>}IG<kI9WM`$xXKG +V&!f{1RO0j=EUX<eQ&}=L3%UG})x5iBAlov`}hJyhm(mB`ZJy=t;wZMMCWGbtP;DUQ`w#0h@-%`v0t1 +b<3$cg9M%gR(=w<Bk+oTg#T{we9)G7pZp{?4I=7_a)tZlC--Y_SHasjH`(wu4C7wRMJB93;ZA<?l~Dk +mVSuNXBY?UW%OeYi<Lz(b1dyK$X&K8Pqf>tJFudJ>Q`t?%0)YG^9$CMM%3nd$P1GY8)v3RoJA#E_e)8 +E7YMUcJi5)GTg=m>n^iymTw&po6aNE6@L=GIG#-W>&NZg_!ag3Y_jmUsT0M-5!fr?fR@?+&i=HcjOj2 +5F5r%?}Sz}Hb@j3!nN%`{@JM=o^q^Rv9teB#Hc4r|~f5BU<e4HhyrxCm~$URwm$(VP9zI@}0dN$=fkL +%#DLe}kElOAR))1-N`INN$^90iH|@7`=9lz6$5F+A93o-*6SSk{^%JS%5kZEz!jGH6Bu<YV79Bs5y8L +pr1x_WMI+}lv=j|VMf%P{qUfsW*&9k+5(*3ZzLQGOj75SCC~2Uo+LmBU)$><JJw*8ag`qrdi>%fq}nN +FVv4$Bt)89*>)K)5F36+>#CC%$;b(ojvF|URQB~jK3wT4L1IrcIX!(lWYzf_8x2ub!&DqlCwe3&hmRf +21lXs&oA1(JG{{XJ?V_TyC$WKR#5(|+>T8UuOtP#=Zx_k}Z<=KIVg0Q-N4S5|koJ5WsB$@}IIT5H9+5 +yGaq0obPuI4mh1Z}g?*ifB^J(T0*FlOzf=vv~-Hlh~~vL=JxGe$bN&7(o8^D0K*2d%{YjEBUBs9}FjC +*o#_S(Q?hG!L;vA=cgpH64X`^aOzwlPxH5^iVpmk;y5P4(cL!F#*xI>aUPWFKxBNafK<*N9Ed0_O~O& +mCx4Rextq3)!u%ly)Dq*p3>f&+FO(MR;Il*Xm1tT+bZpCMKKN&MpR)0po`@a3({sEnu&Nv2!g7{@xA1 +l_7OPuYNPZ%no>g?)wwsXfxI)k<Ui4Tz)?&sEVG+cI)|*{?Ti40Tt9N)rZTvB_1;^!lI-}4sv<el;rm +4<9W@AB$&a+K>K#dJXpxsj=3Yk0ZDj<w^$EN$)OvxkY~Ln)?sVe7o%F4xFJ;<`kG{|$Jt-C=1S8MGX| +WTh0Y6?WE~6%HnPPDT4WL0>{tld3w1^!z8=@9kbd{5lD0S@ArVviZo%+n-TEZwj(rF0n9ECv2TVKN4B +J(i2JP+rwdQyYY8>>;9-dJsF>W!s!kk2yc8uO4`jP&RWRXg?4)Q{B8orzgpmZ0aKu}OL^98J$3QCgma +v^;z8N?Jx&5UEt2vxn+dYMhf=H;8Am(V~HC`2k%c(f3c~S<-qKDfq0sB-?(<@s5xK%r#i?X1#cE!Ul7 +_X1=N1P0b<v25Jy76=kdFd&qD@Xd6+(&z7G$N(EiBLCFhN58mrH1gqJ5-Al=aEZz7D0eLf8NX)N|qn% +VQstR=pY2P=iFF_p8u^eA+AHC0TLVLHMmyOQky=0bjAgjel%`b<aB^E2?7%Z8Qp>quKG^%Vp9`Y=DmL +Y9_Rv~UiErzq`uW32{p1q&8ux|KrDV~7hO$<2;6nmq3Ol&th1Z%_D<T+*WHhO?Q!G}-s!*aScz^BvpU +{npc_bw1qH=ctregLmS?Vu|IlzE@W>-(=CLk#M)`<Fr5!4>dRBgY->>o_?TiZKEkkD47r4d=w-XR)4@ +b^IhBhR7_vCaa&JW(PSKOO40#e9Tw?_~>I0^jUH-U1tYC2}PC`6u?{1{9$Jk1lwG;U!onT*k}d0`~^z +pt$3-2ZY+Z&)Fst+22SxlbzTeJI68^)_z9`@wA9!oer1NRW1!(~a`Q!1ElTD82VNGcw_-Lj4Wgt}^#i +Ruj7k(yRC`*m6uG+iEG(zCQ*w3DQsvrC<>jdB%qGA=bK{v-c&r;EyUxgrjtJKov+`Ng)xDJhbZ^rEx` +zR}DS*b0^6>Ph(Z&eZMQN{*s{uOjNDqmH96-qc(s{fXI)E#Bgv5X>62^L((bs<ujkMK+SOdmBpNPdR3 +qM07?Hyln5953KE6qb<n$0CaUv@Rxty+55hNjv>awY4qz7-mBf+Xn_<Kr8?#6gtJZyg?T4qt{sraa2R +6VzW1c~#SYPt`~V%uuIefNNQUQ`1ClucM|{2CgMli<ncV?O6dcL_1<g_!6bDp+UNZehX?+gDQ|{wh6? +))|=6B&c7emuhDS<lt!uFi-WI0lBcSE=b^bJx&xEf2aNPO&otjrD4@zi9!lint%>_Y_nyM}cA}7BoY1 +NT>#z5aD7*yCE@Y2#N5Ol3)3J-b!%#rMAFJHt4=ePGcftYR8xVOAo8^IJYlVK5P<Tn*gI$KWvB|h+e6 +~CT<68?EyyWToHCGRHRroLVINnU^RdW_lDavu4FBgYYzQi7Cvo31gYGH@acgf^MJnJmRJ2wraDj2{D+ +`#~*xm#-o$Xht&5)mFXr%Q8rrYW(R2dENjB8OLKsONLwW#0-7?bCF$3*&u=aWZoVy{utq5*0s&@4)Sz +pS%O7&cm1Ftu2l+zJ!CH+6bi+ZFgj`C+K<wSmYVJPUiII)p^JoBdP)RBaX1Z;*|mp-h<oloNgzzT$;z +jujA0VTf~q>tQb)1qfV7cmnuvUn8u{HJFkWpduzpw@;qu?6><jM1I_JNfa7GtyH(!$qRP*>mMnVnhd9 +DqiwT3dV#o{>YKk00NOXku@g}4EanTg4uJPM%w!i~hNRArx6Vauj1=I3^tu#lfBfRb=y-nf+CZ_3uX- +(n-c1CL-{N|-Y<8EYR4w__o4;tk-)^HrSq*leIUn(gw4cT!oz5%aH(S>vcUP|)9aJ8l3ZeV3!m=!VrW +!)Nbi{*atvuScP9Jho&OEJyWjOsD7lp?zZ+nCmJGrcbvEVm}_NpdZyS*hi$=!%;csjflCz^13{r{wck +1VtO(g;MzptUIM?iMdI6ti9aa95^Ld{C&%m^kAuqhIC@+f?FrexQIu&AbTzJCfjD8iIgHO6yrt#OK~b +`V%#K{A;^BMP5f+VkCKjHQ9Nc-OT_^bx7CLhRCLVMoYT|=*~;a0M<QrO(5EeSUV9(1sci?5r__K<c5R +VmKhWR$X+Y{{@pj^q1ZJT_i!|W|P7m%QyseopBnwH}IX4n438&`2Tvp_Yvh<R6*WgZ24K`|ak;}^ei= +~CXR$Ah+qxF6)P-_~LX!}=7JfNFu*nD}o#PT13ScL|&AfG*B(r)<rO)I6wZbva*@ol_M?x&Yzize^pU +5Wd-oSWECU_#0;;ijaTy=m6yYq%tFyB4qDe($vrS8x|8JFc`uvVVkXsDa#KOzzcI>GoK1N7JV!`>Cdj +M#1@O-2dZ?<Z{+4FDw9|d-H6s+e3blMGdM}KaeoS;UHg2=y6W$zKr%*sc7IVzN4;$jAFeRrbC?^Sw6z +-3zQ+ym+&55jdG)hY*MK#$WtT6X?S_d3DstM$Sqm8$#4wnsp;>knH17*d-=0{PQ>M`lYmRSEiE;khR) +n!)Ktb%7p8GLCwXCdK3^v@6rmpIM(Y7&qxR!>NY#T0T*?*JzOcyOSX9jlW8CB}RY&?%K)N!asF4-2@e +}~Y<3>G6Fr~RbwizUNEM2a&*g+WX9=>e-46P)R7=W=<#9$3D2)s#lohHBjP#Xz6>#M;4nvZE3tG(~d5 +YUpi;KCaPxDHGSnlJ1}9e6&S!D^ux%}q{WD=bd=n?3+8zp^eO=2JjCUpgnNRq_-h4$nc1gMkE2F;3iU +Ht?BV^#d<i0<yh$4Xi)yZ1YgpY~Y8dDdb8t4CB)fQZTvI4~Ek}s~dJPq0W74Kiyo=TxIyJJ|7NE@B|L +cBJ|mGs%Q!xiwU`8EC_i1sboceVj)}8OZS%qHaM3yxM(VGmZQpd{JG@cQBef3c0k~W^1<-go8tDTlVy +xHaf+r21r!(F1RjK|yrgj-DwKPZnP9Rh8PY-p)X#728=-zCCc`x+a0t@Lb!yVS30(*UwVsI!>HgFVjY +dHw9Yefm%BtQn+Ih)8Hfo*yLGo1d{o`~SJ4OvPl18l)9Os1`Vi^Y8rGY8mrmhPl*BM8Ag9&h%G+xy$T +~#4l5{MhfeWWGpJV#{HH(09fHH@-U<*21<>xzZyKQL4kjwjobtF`B!7^?n;8EvRKKbe^tNt0Rd{tbqz +1BXGEIWTOfx`?R9;AQ@Fp@v+5kThR$Q$tk>_^bxlUbawWMw+R<qvx4P!k8ylnH&f`KB+y0(Tr4odkot +`ja2VBMmzG)j8rd<GExOh1wxxM(DxUa$k1I<+6#9wgPPMb>{A9!NUiI~f`E=@@O+w63>zITYs0zGm(k +(h(%|BJwxC1&lrx1V9mxpS#O{9tT~z9^sfpM!h}C=nAhCb~iguPRD_X$r`abmi{Z8y0k}_qwKwCG$IP +Y@undFtuM8B24R@qPOGVtT2I`b}@roYQeSh0IZ$^wQBg`vf5hY`X60Tb)j^rr4?a@RinUN3JY3-=}N^ +k$;hlH*01n40P#xA~Dlms@eQ@Nz9pbRUbA7X~W~QkJ|Vw;+C}w8ZQf*gVBc9iGg-KVi79REiyWP%9Gq +<8q}{yojD3E~4j$u-H9KJ{G=Yp$;9M8|Bc!oX2PTja5}k$%j6MnQ;jHR{>qmgj(Aw*;ZB=54^{V9u}~ +=12u{2iW&!jp=o$h&;p)HNmQyCxi;mH$KOxV{$vQoF3~PocZpofR}7+;3w(}GBgkpA1Jpf$*nuX?8t! +0yoAC&)Zx$JEGOO!z)%C20tV*Rz=ff#llh6+e*Mg?pbkpejcvw_!{l2gikeaG{!YK5RIa+v#&j$_eYI +p&W(-T}k1x_*sUB7fst3f=a)~wW#)aEqje}BREg;aF71d46*W@-~H<X|^On@ZcDZ&~URGq=}JB4sJrR +J`oAi6L7Wj0~*bfURLJH(9QxEWkgsOmdx-s?PvHOd`ucIuY|2;(RYjjzEfy7KW)pACQ|^2Nfh6rjeW8 +!zoIxN&=GC-qo1m5(`@2Lf5?LEkWy@oC<Pr+u}kq2;f3C>3x@G{?ogO%!;oWuLNw_utciub$p=RqJ$N +i3tWc&71dh#d2MBd`NmLZywx?t9Sl|Y%{Bal3L#5A)Zd9yLj22+RBe-Mt?117ds?h8fwXBgt$jC12;( +5A+#(-3Mx;ucBivw;T<Fk;oa@C~RInWN08^Yw7QUNUcSt!6vN|#zHRBFgVwd12tD&=;RF*Xh`SyKTvt +`coUSEm1LXPm?YrE6ZbTOT8pqmYA)Jj`Z;}FxDA#=e}gKkUGUY2D^=iM^bwm54h0=p>i?X9fLIkg-JY +SchyrVBGE=rssBk%DF?Kmp98fnAgCXM&YvDRj#%r>b*P)SO;jYuRYR(`FJl!nJ+}#oS68_k&d!mujf& +4VI;t`<N!K<%|JOv4@OY3vNLMj_~PCj&#A&#F`aTQ{I4F+k*}#B2q0ZRlSZbPCUj?BbPSAf{9$qf5Xd +yOy1gRDlGvV$DW}JbZ>>DV_j~r#DLB)(8CBMwVTov0r0PUM|Ii!^t>HCs;Hw|Eu?Fk{tyD}5WtR{+6P +Uo;Io?=)pY*Vc2lOD+E%HyE>5v1Gaa=(petd*3ouTq=JDpMhv=;<8f^ynQfLr5y8C`PUaQKHQ?<T3v6 +Du{(q@3h%aH<C4-Noyk_&V)+N~Ho2)Vm0qvgoPl+xIfRG4vcdygob7&mVj2bDKu-OcUIa5lZ#JsY<NN +!vJX@7vr#310(8giP|+w~?OEIhOLh5=Vz%HgzdZnd>XN3A!}1wDrE5ETHdgN^2V@bFKGf%`8QgFY$Iw +X+f7Vw!iCnzu{hL>5!xK3?!g}+MZ(sS!I<f^!S+(K3vhoQAn7ZaMaj}=YeA7S+vE0WetxIZ2yIFn(Hi +ZCoUjU&AvA#YEStp`w>TkdoFAWK|#{u@r6n|&_qVP_|J)g8r1-f(U%yI#UF73UCiXi)JqxYrZ8lLk&o +@6l+!DQhd}$Eiq1>LqI4mX?j_j#>D2EH5>X50cG-+Nl^D^3_dlYN<&;XQ6I3#*UTln~^S}3JE~}SJNG +Wlo6bxL1z)U%{y)5OLbme-aoKy`sKuKqaULSanB3O%0(+Yw1CkSXF63_&g(|ne>F9iuG%c!K)%ZvsFg +90oq_Cpj^Y5V+^I!8OK_<!z5a?ZbXpru>Pk0ML_J6zy?46HuO#8wQ^lM!6lK=EuviF^QHsXN3WVAsFx +(Af1e9V6NGUZm7h8(9b43~8810y>y~xXMfjD#zsru;~PgKCijakyE*YWrb$3+rYPLF1K8^Ng*e!rVI6 +AW^^QP3+$^R2OdfsI;Eml8UwEjVO8XZ7ZV;dl&i>>(PZ6yQCbdqI!MUyR$YewRtIjw*0NQ^vTCG#DD{ +Kzax}@rmqc|*R(9Hk71C^2^wDtXLF#>d9QhtVX&xb_LP%~`Dk#Ss57KVK7!PeGOVV%Gb_=6PcVDv@8b +e`U2iSF4q!3HeeM9`-KYm%#Dp9^K--<S2f#dum_E1|{KHCx!#y4L=;i(}@EMDV69$<;}L3h0JMe&lk; +impSil3TzYr(PBR55B0V+Ns5?g)3YrZ7Hi@OWGNizys4@+s$EhJw>IxGxY6Dp(nTUvs3dgql1(&N6(y +dZ&3~hCHU#s2cF5kQEllrEaqI0;*-2ZkrNOQxZGMO~xzCYpvRGN7DA`#Sx~lXv8W7UZKA|^tXfl68d| +T{=Pwf(NLD$@f$qwZpZg$;T;B~fSi9TIc`6G3$K9gzN}vXrQZ<H4WDk!phA;VsPhmD?u@>+Q9lUNeTb +p^Fu5l@WT8I9_E1UED8Ee|i2eIW2V&?w?4o6a12Lm~2)&1Kfyd}AKF1%qmWLtKHcqz)4pNKY;C}dRee +NsxZ8^@hJeAHcrS?8)J6ir0?Lk0p>*Hu!bw~FCw5&RK=xdf$;iP3%jTG1lIUM1nWmWZNCnE+CZGhWWi +eZYkJrtjNC?@w%4DUfq#$sq!b@0#?c2yM>x?R=V)IbU0+1SBk*c|(PGHi(birQ6S7|AjAlVp-HCPTRC +Qo^o^S}LQ#3%12E#0A$3m)K7Yp=0+`BPa}_5!AuAH6tjRbUW%Yd$4D*xq7kJj4qbw#pcjrDGp+3v_Nu +2fwYt_SuEvFzPjm>k1uPww1&@Zy0n1{oMaRIp(a&P1aqtr#+T}mXi!CmEB0G9(SBR(g=9D{_AG?kObc +!irZzocKx?XqQP10y%)1s~7T77o%^Ji@2%(}al?Jf{Ay#oM<@kJrYgvfT?{Y1-;8V~ns}^kJTCTz8GO +lGR?r!fvdbpa7Z7_f{%+2jR<R;e?QvItffOJ>GPnUx@?}C)xNbVp|si{<}7LAK`<8`=^5Pf)E?_jD%D +rkMRms-&*OITmM1_RG8rq)+LI{EO&R#b3-mqEO4I+Pa;v|iS3+G}(l^H4)7?5<`=^>bzv#-C<JCJX7q +NirQ((E9|-tGYRr257^+4^sl#;d3oR35zPtw4j^XJ9JY!`onsIVn-9kQPV*@g?4W#2y-piJ8Zv#MoF~ +PZ>WebL`x3sQn2pWJ{Z6$?j}z?s9Qeq)1s7Z(W|H9+7=DA1~fbVE<IAqsI@J&Y1jq|D}d|{%?4_&R(H +|{3ZePz=h3(Nh_2vg1GJHk%{C{Ept@;`zC9a_pmNN*5mYfXo||dZji5|s-3V$Q)h!?4H=z;K9BKshIW +>Z!vs*)j)_7_PwMHKqG=+LV3}C8RrVn}TAo;jJ6J^njtX6_%4}}z^+e1;lm@<r`*g{JZ<Fsg}R-0xOg +%Js>sP2(gQPd0m$Xr4CkpSJIk2+-tyg>OYk`G$T;1h3)DSly0)1`-nhqNd<PTnFKMxz;gHdDSr4XKJ{ +T0p{(YUbxKZzx3rAKrgCVNONs+k^FK=2VI7qs*zAF6-u0EyFWar3@RUm`bbBr~qPLpdgrIv?&#Kb(AR +;=Ax!lw75~GR80r4ok>fo1i;rUspxoWmQ>h}s#ur~Injq)3gQ~ATu&{j9tAc5)1+nDNK2{&kszFAPeo +}*8%NEa>Slm%qX6cm?E&<VQP>*zkmkbm3ANBz)(CT|>`~@aSp5HLPL%+f7&yLVJT<4X^>>XsiPlt!9_ +n*ygf-P@@<<p{QL598sYcR;ZcIg&)Sz%)TVzzqphj9!VYf9)s{ZSBODc^tl9p762+fkpb)K40CFYbwG +fR8ubpIALqk6BYsF3%nlmp20x7|?aRBpes9^$Ee)Dhu)0VTm>ab?yBd(vU<r=;H5G#{izC;j4sMy|9b +@c_<4Ksfpw(54&Wa2|{Up6sM)V|9Zv5zjaEw*tkAM;v3cw>)hG=>;#kY8TLg3v>zY1zMt2m?_7VDI*t +{-Ff$rA5zOFd{e27&?hQIt$Y9_Jb60>rj-DjrHfK%QG&YAtZI%HG(+JBupVWCR<!)i?!tS>yekU-t9S +qzC8LcGF9brHACvcJsQBq+YJH>zG2r&6(C<M7w&9D|ZX~~3t}}PxmLeL<&r$bmyRxM;4{hcIXr_1o%V +KJ3gkLE$L@Exd%0w*#Oz>{nHwvwkYo=BB!fd)(?-YNX-l?x)ZAI@DSQ8H*C!&^B7$Dn!j+Rw4u12OSe +4DA2iUBPlew-ZKN?VTerL8m8aN!#TXN^%OZz704qqb9D2~OtAbxvj~?_@T?UkChs0Dlu8{?7HzkuD&9 +T&-<S3O2I%wGm3BQt5>_dZ6o8bK;5fY1}7AB^KpfJgst*1$ab>879#^Kiwz2rb-6UH)`JH<jLtSRA6s +=ZG-}=ysD{`ov)5mV4uBGfjz8){W=Lo7QgzhD6myzYV|)-Py2>OsHgV~m+XD@AF8L3R}<=KeRWbjUD{ +V_b$a9;ITf@iK2v-Gbk9`TWi_NIrQ)^pg4O1Epu=+e7`4*smLufO15ksDHHr(>8i5mUzaB7sJH+2~0C +5TMTRQQcrA2lPN~wuW?JIp&fZmp^>ut~@xzQR7zCvv~sd@NzG|-a*za1F%)}VQApr*i@Ukhr1r};)8Z +9qBXuKfw06;y9?>`&@#AMZo*3nfhV-WV9x+x`bX#@FW<;@{`?T_sVwLd|4Zq6UQ09_mTsIkXR~cbw!} +UZid-YD^cU186x|M00RkH)@(y!fVALZg11>w4`n&)3UxDO5^sn6m~+qpA8dpon|ZTXxH4wi1AeJ2br3 +-^_Kh%ek^v6z{BYgn4#Vwx~U%vs&7@GzBRX?ozE`_^VxI(-HSdc_E4V``$l-NczJ{ui(icPVzCW#(AQ +XiI-3Bss6aM}5p!a2x~KstC)JO1VnI!o@1wd=*MRPELf4IGQqc$}7B?iyojI!9UcKC`5k4%8qkUMsJ; +H~@=d9N8_?`Sx^kLx~_F-{!v=55|)Q83GYlJbTi^D!FV!s;Uz2e_Sc&~Vh)w~zPZxJTci(8Cyg|Q$k4 +12GLeMk3OK~rzmQj>lwV)rCGR+J|^Rum^ZR?JO!tSCr$teBqgSTTWmtf2O)GPP5_H{r3OQ#UFmZ^JCE +iS?xF-3F!UCMtEmnNXV0?H{`OLzfj{{(kslLHP)LiY_Y-jdWQ-samEe)_ny84-9*(I56z7B5;J0o*M1 +5;^QlPRvcl5F?WFZW}g+*s2tg_<xQ$&MUp-%=+Mi{2Q@Q$uH_<XSf~Dp&kB`$YE05+MJn}Kf$T%`S@F +!(U-MaUK=)a3I-!<*f<7xiC3_CrO;WiQ{7N9ANpo6(1Ub@aMdt{vG}>v!E1In|KK_~0ig%}ta9V*g`G +0j<F+3;!C8re$`p}(LbPjx@(~8%pj&fS@H>z&G`!%N(pI_FTRy>OOTK<(zD?oC@dcQToVTC8zSQtgJV +5+8}ZKN97l^!chNskq#C}nE2+5ICuR$%$*Nh;Dbv**!V^<%j-E>{i4KE%__vA{hZ7Q7>T6x{9T*v#ra +2|AiDYF;XWzthyJ_x^~+uUIswRl5eh!AnJal$Q#Vu2w}7UMfnHUMlFIC%jY~(mhnr?vL_N;T@?~ZBKZ +p_-jI~N_wcE#d)vrP=O6az3S9Rh!J|#?V~(YEYjwyH#T7iyVFZ~2Cko}h!@R6#S?>+#9Mxr(5v2~2Eq +t6%0mU#tZ7u6uJBNSpd&m~1aTRPc~PYbB={*8!1v*~%}>?>P7Ob(UX@bysua|#tMoKLZ9>JOP<r(LJ6 +<a^&jtU?YXu@i)3xL&-|V#l5%Vv3t*9IJT2b}QUMm(*#`krv6^RM1q}@ZkR-~B1poX2l(rE=wsQ(kE6 +{iOhPAhPsPB^U?_8^vUT7iqwum^_XKYZP31?EXOtvE4orPGQZTu2P>l};<LmeEctKKcFEomNoB_DxPJ +Mlj+lomRLf{sX5Kw0WA-igmyLzvHw*>le+qmtG(HCZ`p&LtjH#`jwsfSUiB-h^kf?Aa^{2%N>oYk*Sy +|(^&!1h`mn=XtHQKkWpvsu?r}JqPzg2JN12$$^{G;zERx0!c#@g)2M9)?_^epPG&{3lX(jMV(>Tb`%b +0={(b;|n?+~xJ92pK3TQLc9*U(H=mkPXm`G0iHYsLrfS~pvxz8AMDUP280f^rZLsTar(4(-IiUE#K*5 +{C?hGA}kAl<6fzd-k2+cd9>PE?KWlB?N*liWV@%~yQ0twS-&9n{&_72j-YH{Ok3Y&(KqZ0q3P;`ViN` +@#i>lv}GjXkP6z*zk7e(#5)kk1&}Sf2(~7No&urQGZmiiJ>7(8U6xY-Ibr9;{teJK*!Dgmy^9({&J${ +E%eA3zdrZLL5wI8Z0oa0a2T}kWqR7T611cLM?OzCd-Uh&=vN(wztrhskHssJALl|FWOONxmxTxA6g2# +G%f)yok6+MoS5>JW;Z^wvU*b2q$?uM9wxfd(QK$-Ww_jCnK^S0q*9SrAa}#E<CYx={p-%rD5n-?X(I< +MNyQp@M@5Ap{FMJA$QWRN*2H<B0ymr*;CZfu=ok2N1Ud$U7dFZFkYl3`v;`=e5Rr$?}yyV*B^g2w9G= ++Yf;FLgb^{&>+Qs#Mx0rH^_=bGR~13%qw^pf6VwDD*nUE=Y&N%ac}XUuoPY8ITk8NW;;yrt42$j^h2I +unD8ID?5=nv!<qHOp7lMO6At1hSDrVUX@hoJp9K4D6zIG#)jFIY+-yd&F@L&wlG7^+j1c{rqVWE5!9@ +PgOyCaG4R7pNwOPJMNi~cM$hAqAQozMXEer!d$JL1b;T{{NF=_GX4IRdk5Xv7%~WHeN9M$1|b8#9x=J +kS!UqJ`;FwTGQ1fi$4N;U{lr=nJ;uz#uv`1o^zbDG5R_oK^^j*u^}AA|_DyQq%L>g*K;^Aoa(b7(zhc +xr?clfhI&d51{H_t(C@=2P_D7^$BezjnuG~gx)WN=$1S6JR|JpXnN2OP6qgboRhx)f-6pq-2EB=OUld +ZcF+a@=bjrx8Ay^F_B-No_~)%7fqWmRpixAqU<t%n*Z1)YbMn@3DDnQ5L+z1LnZZnT+%eA$^@oM-vb1 +U{$uYJ6lBPsc}UG2?vRAXv!9)2W}ILuSTz%`;BjAAQ1cfrtDyqM7t^EjQz0zhnjQMmg*)vcXaivIbwp +>%ER>!&l8=8Vav7YoBSQ5{R1(9H*@O0`~fnMX-twuy`3Lc7{e6G-EqpR8?}_1JaTQKmidivRnYKXZZ7 +L<jpI@RYfcaL)PYtSpKH}kr{dOs^X^@CM2Xq%U9u@cV%<&w#0igzCT+0OyV8KSE(!hQQ{pxr=~0^4kq +658ltkW`02zuURF}(6#p>s-iGf}i}x7y_aMG!6~BV-sql_hZ`Adx{H%JsM%uheNyQE>#h1DVmecFEwM +hpN7IN%>imc{LlGWrQ4I(dJpfQ?ew3QF?DF)Ozg)b<V3BOCHV~tddJQ67W9j$~a#qJ?)$k2ogW*IUVL +lybayOhD8dF1ULV1?C_6ZT(=#HiVH9-W|csI&lbyM&D63}r9ZeiM7a3dsZtwd!l^<!3J@%=DJZm9{E- +$Rnl7f0wJRQM}ZI-)7>|aQ3-avosFab<@J>0)8{dHTZ|=+_Rx_yc4@XO@(!YZA)o2-XT?6+op1RBkpo +C?oQ2mbDWxrTYVs3R9f3oRF}2YP!1J9buFj(o9Xwee%&;X$6J~P(u7|?N#^!DR0gLYbdzg|F{r#R$m7 +im(u9<9<@^%muQZ`kUp=9LF0Fw!)nGqWiVpnCOPUt0;4flpufdy`)945Btif_a)BNdzS?*CX(X}vi13 +CeHI2MCNcI=(Ba^s3SphHK5bJ!OcLB5){k%cDQy&#QW6gb5fa|c6i0G>hSRA`;dY)gUeX`NG3hkL4Ik +_;Wh1PPE-Z7q*^P>Mg!r?wjz#299<#j@zPGT6H12n*axHH`S~nEjN;TQmhp5Ge4T*Y!_yAGF<uri!go +vK?sBV1^Z92Ywnvn#aRP!_ta7wexcYlOznv)q{AItg0&5*h|v!BOETY4l0IPZ(ny8-b}lwuDe5yhd(z +4&733LaEqI?qq~fr8pnD5Iz78-$m_uZj$BR@P_Yv~8zRw9h}c7lNxQB-qUnjHtIOW!_*na3P<@eIU%C +qQrK?cr@yf+4e%rv~DTsKE#hvadk4JL#YGOk>Ki^GmeVg*(L3q2~<3XuG6?y>*r3MsO2FcA&Y9A1+(w +97-&NMxo_+X^!+0WQYn1lG^{YE=v>Osu2pG7G4pF`;%@W8!ladn&$ZI$=UC7(H8e;rtg3M*q~Ai}5hc +kaY5h$yQ)h(k3e7x5ts+J(59lMP{ek7mz~PaA!w-`dQvBAlz&?&`7kIQoUugZDtmiY;(nu*&V3V-_(? +xZ9S|BT?V&{U@b)SPM0b5NEE%3t5RK&IJPMbJ?0aa*tGdy0vyls*OioM>T7cPCiYlJ<;w`ZAyC7b%Nf +Ks8xfm({9qWNc$o~;NujA*^j#`0hdkqzu0>hfT*hNe|!%NFe*BjTKGy-R0^M=29D++pg@o)3Yrf@83a +P0VFtA;f)149i0Q3c+T*5KH@kJamYTf-F(0X^*~8RIOY0Ec#5Bc3_kVr%IcGQ^kafG?@9+2j-2-d(KK +r@W-fQo@_T#L5)1@dsX7*wD#`(BSUmVYiT~U6H6Q049Z&KuPoW&@%MMT?zqHO_E%{rV+cC_Qt;dSaUw +fXBHxK@27&OBbI?n<~(M}uS;C3{9z<8H3@bWXnDit3o<H#NAzb|=B@1l<Yz9Fp1oeAwg*qWPYwzI9jB +8Jr2O?nD-$hQyaFVh-%-oIxY1-&>S0>%IL=93xK_n%_(nMIp8zY9xVFO}C7~{M$BZ6r*J919nBp%1kD +aMK6|%$RaWrGm3dpz@eiUl?X-MZo5rt=ce%7Gb)9Dc?J{;mZPXb-<S_s#JoAmZ&y?emUc>a*=}~VokT +6?(xKk*{v~@B_$YUz&{X`UCGpVXrC$<%0k?ZN;?L+`6k5VPTNT!946wD5{SDP^Hu~9o<QG5bOB3~qd$ +|+xa!<+jj1YvJw@S&+KydLFJ4!%}Rn3z78`r3A=gi`ecg-$YdzoD-i`qv`>kPFnOa!O_o}kq7sE@!$( +&fE(n|9lSsmgS=K1(bYFf$R+DHg@OKH{CO;mvKCT~kl$e)U&;1NGWpff=>;s&qXNIiY?ZYLEQYG@$ul +&0mF@gcFJsdeQz5Ddn%A8+Ra7uaiG6jpy!<OXIl#p@&QNhf=k8yAI++o%^;$e4#LPIWhMh-Lg0j{dNB +2T^8vPSR7EiEdFY-<!bb@cy2GcSW#>&*+|?&1>|AN%koI1^z*+}z7sWFv3HifdYZ()P)I$t1oAAPBCO +)#DC`l2W8p{OI_iKrspyjKC_K`|-odqN?L_!|94>#ySZUiXPUjDoI({p{lFO!xQJnG*qWs@S6Ma+M@K +fk#H@c#Z_uggqY8CHS?b#~IkC?FcE>ndqauk@$b{k2OWb_(^duGI&hy12zLdw)L`>i{puIZ}%X{dSwm +kbFmXiaV&)q476O5-(_ysU$2N5aGGEIef_eOf+SEjotY6{FCuW#uBHL@#l_slr&gQ2D}om+`?IvBK<8 +KvP+LL9nCN%UC)MOV95`T?^sS#*$lcFv?gu4(pLor}#DOu~pp!1ppq&$y5|)hl&N9Hrs9cl7+)pLzOR +XOqIrxl~|?pEQ>mYay+(QDK%qBfjE)uVap=EFqUFTXi4Fzvv0r8>{CFs_*zCmaKAX9<Y9a;Q|!d)jSn +T`yL&nJ`_<fyCHNFm#$dYa*n2zWR0>(M%0~>pr}{ui$*61eWA8%Ya(+S^c;!i@3vt?Ot5S%tQ6SRZH9 +5<J!rXq+jq`RKy+HBbC35kTeX5_JVgcq^p3_{F!MhU5B1Z{o=k}2g`{KKuhbXFNt?BEcFR7~_zQ$FwE +?;qmRKAh6EK(P^+;B(ywc?XSgAL7vz=sfi6;*!aCw+>)DQf*;ap6_A%wX>+dh@P`C7)1LBFeG!#fE?e +J;`FxlPqvITeUCA@<dlctkVZQ437KrPUxzrM{ytUf8hzvo6U!MhT)PwF4C)7kL9f4u8%ZSh#thLZ%0y +0)#P6|7djNA6>CWz&gz&UVd}Zy3FUiT+*9Xox`e9%ciB5gZJtnj`G2kz3ouiu?<b+S&>%wCz6vYsW}^ +nzu}={eypMD(H`_jR7S?IM+XD}}c1qK0m79%EXthJRsNdX0LLiMOVNVD>QIvmJ;VD~CSm6n|WZjnsEA +-S;yrur?K%vS*dkc=#lWV^g6v{*NLdgOIasw8HIvKa=pzyYBy2-<CfX2k_9@XEGqj6j7;EEXy?vJ4;% +B6TZo19GeNY9ETq2eyQvmqZVx8X(m8z0^7+TP%sLibEJdZg!W<F@dQiAlz7_j`wYoLm-Zz@6S*U4_1` +XkXK1Yb)0jgXb5fE7sOy9OXf#&#aP=<r;pXDARi_!_Xm|$#>_hr-Eb&jx&b(3v+5iK1guij^ngQROYZ +{;Ql`8c2P9Yb2o|b8X)fUlYJ6|k3np%nFA}N9+zk!(5ctkY3|sOFQE~)<b`~^1UChi3(9dxo)R3|P#Q +-7{_^c6lhL7PgswM>^ZCceFg8O?wDEl`cZjQEqU%C-OZJ80J{CV$LeNB4Lf}NHBl@TvhU>0l!6h@1fq +s({sG!X28{aKMT}7Z?E*lCJgu7*Ms|>e|a4ZV!&u!i&TVVf!0cArAT)vx~ae=<LR%X#=8X9hq@0E$%Y +>;A@VoAY}yA5b7)G8Otgp{Yb#QTzkdf;I9b4~DdP4o?$V6b}$(kc@tyj?SZ#N{@M#f7}?HaH{n&ii~P +Pe_<Db;i_b+x3hebT63T%UPpjeN0`Q0W+4CFEE&d;tlIfQnK4i`sFX2SATVVr(t}L+K}Ufc}7FQ-mQ+ +t7pL}<jitlI9$_r>8@#O^-5;1Fg~<vJuGxAeNdw5P{pPVdJ~woK^H}ZSs$6ak3@jSyVJwlb04~+-S3c +aQglhKJCv<9m!-PKB-*iGcW63ijq0O3vUeF};WTS*!*Clk(tS`3B5M9%SEHAW^1Zmtb^%${_(5O{CBZ +P+))+`>(@6j)~$>qH~Zq$Wk23I@fQ_OZ$grhDbB}l(iDqm#Sc8@a^)+{=hPIXir;25jFwxF%69Tt+EI +)}GMbzA7kq6kl!gvv*C$6-T(a`{(s2<O`vwlaktLFYrT(+tePgRI}t6il9a?be0t3G?bklVIbc6|M?2 +DA8Uj!1cDk<vK?N6wKZuJJ`>Pi;l{k3)C1c-CO+HwZ)zX9W^{;yQ6|+ZJln3O>%|TQOr9^PT2xqB$1T +aIzX*0w|P|WFAL|$CAgxpEc}|=cGYdGQ*7>C5&7mFnoV~Ko8f2k3%wQEfej?JdEts;Lr6Jh3(8)`H}l +0_M%a{&_FLsZ-p1G4Q7EnUU}!$ui;6P7?wue(&!srbP>4;CWsqVVmvxK#gvI+U3JCc)Yz7Ta+b2>5Pe +{sY#q;#?Cv&Cc6q*`gyq`%#u?B?B)KTwSj2FtxSduP!IkAgTbuWgfHjk*^^=Xm8Dws+1a3ZI2e6&YNX +XzT|W-J|ny|T9yZBzA|4WG)J4fU;0=xeKyjuhau28|T)H7+MUO2n=7eJ~eou)(sY(w(9~XpO?1uJz+X +61vMa<@O+|6x_1q8}jj`bFL%kA<3+9RbEOX_ua0YFg*`dk0bkZa=~X$6y{LXp<{=BICP}V9{Yt$=Up` +vsw0J<&h*lEo`<aMOcZXu!D=*7*n(E~1d~VCNr4?hj*-nkHs4D}FCB3lWv&lhhh1MFpPAeJ*!BI4YqG +ys>oFZ(+=B!N*M~8o{x*ZzwAX&ov4^|12UkR!wioKm&M1GH!iUWWw6_t<#V)hn85QUnHdL&1gv|&_Or +&w2Y60w|{{Y=8)kmPL-K>UYAz09zNY0BRWVP{^NT#*kSr$3kFbY%T`5mOz<y7rEi1E7ZV*B<{+i#yBC +C!Jb#7bMMUF^#*iM`4V&ZrBRVqXZGal!U-vY7Zm+<@c}C@T^?fz~ywMr;Jh0Yr^|CU%2l#e-s2UP{8p +ZLX*QIKIr}+eIJVAS2#Q8&P~J=_;%>U0FOvgZywHZ>pGovy|{YVP0ptV$0a&1I!(}4Aor{q_qW&k(YN +TDBx&ruca(%G`Uba>Xn!nHY32UPfV=#=Jo)gNuf455tMbpQWa5<ESVRIIp+oG&V^!0Y-*Y16vpiMx{& +?SvHRtIOl4>T7~01M-4a36Zjq9bZoQ0_Ae|Pc>I0i%?+Ft$V-grea6vaM7j&!Vf&g$qN5KVt^<2;mTt +F;<rMRNSBbV?Re2_j=TlekWyT0!4wO?0!M@o;`-YV0NPRL@3($QUF0)p}ZCE$Q=q8Qsl|3spY-}A&by +0wW?>ji3IopBe|D|t;6)=?`8D^L_xqhhKS9Y(jNiYZA^Q98#HEBkt>3sNaCNH+=7S86RxKgmOw9i?CJ +!CZmA^b^eCQnh#ukiHdWpr}S(5F{NIW`Aj~Fb7MO!W=5SEzEAxW?_a(F9~y`wBdeWXyyfGX^n7-lvW8 +dT3RN|IH_2e3DN>#PLlG3IYr74=5%S6FlR|qgqbEK2s1;97G}0&7G|ClDomR+SeOf>AYm?&0u&Tp$9j +`=6I@@%ev0HHtk5DZ)#bsu0@icFid`D%J7L8UW$Bo(u7UNSus#Lr2g14z*0+T9IavQGtQ%o{PFRIz=C +#6F4(m!`#b6~lgcW_dv_M#)Ra2Umr=W}#eknzGV7e$x5?0K`r5Is74(naQie5$v5mszVNkPI2;Y#W*t +Y-xM!YZ^j`v_}|pg$MZ3xa-OtrheOt59WkOjxlxCLI)3EWS%02rHC`NN?pTC_|Tq^s?~qgLS>Ic7*jY +VfBaAC9F7oDHRKA0IYUl4TLpISc70q5!U{&P7>C^u*L}MP+0F0)=*eOgmomWLBeW=wY#uJ!g`aiM#Ji +(q8x{}%Q^5!fb~aVodoN*!a4=kBf>fz*8Rdd3)by9VmdjqfvzmuRF}8OOX&ReNsyk&5lVdZCa;l-OPT +CKvbkAt`IGE2*yNR=xMT{Kf}y5i*#l*j*2!>bn31sr+Ui|neNA4GO1vR*N`5A<XvL+6?9$QX6{ongm0 +kQzUI~iJm3hLYo5^dE;!-8M1em<0C@!DNE`cVm>59t-vP-DRD^GFREW3=PS%>1XUUo5?ycQ@f56do*C +a*<`OQGx%ZSpEsT<#Mt1#zZfB?|RZ=gHK&<rx%$vWZ6zP2bC6*m957P=K{vXM9N?SbdJlh-3zGC+T;& +xA5AjGj7la=KtubaO?<B58S&Z8<LW-9VIJ6>L3L>)%A@7%f$Ldh`0sDu3zR+{f+CV;F{%zWxn3#l07! +h@%Hl+rTtD1CjGpu{?qZD@*ci+em*HskIO(WZ5JZ=NSDV5oqZr7)ptay&fcf>DO>jn$!|oshrKg7wjY +t|Y4;;3+_7EX`jq`+7fF?stGbpSI^ihSRbJXIX2AZ-J&0CH=6fQLA|1c99gFt1=h9tRv>=a<$aN>u|A +5ke*HPh7y-ZVn$&klM?sXL!TotZEo;yv~3Jj)N<I;7M{F2M)Fs<FxFWWmLCpo@1I=(ZSuFXubdsSr&X +6(`~K}*MqDi6muo{q}~>uu+s=YfA=ui>=CTkv#L>8-ww6P}*Cd0=VBS7}}!SmsCGtH^wmURMRuPXd9B +p!cEW-phQJkJT+3r&~VOgOXh~&cm_O)3Hk=zR#UF)u}tI2&HrE^l<F*K&ZdDL#>j-P^AOGT{`$K)24B +W@;pUwoZu6JeFQrQ-XYjR;EG&%${G3aDKaH8B{I*Dd4|jyGHb}ZK;{K9Yssu7vyRNVGCg+KnP-h>ty& +r!MEes25`@Af$}lr!Pvt6LsI|+~D=y$^ZHZ8EsA0=&L+Z*Fh1Dr_5LjOaZLgkxzK-&JYBTb^^aYi4+- +5<qS|^v~ItfOdtb0w=2?DR$MD|Yz>IjyP_3V9U**H(fkD~O>iqd;clQeKs!qnH*j}%hW!ZJ<BRhn=Vs +J_mA^mLpB%EqPG5N?=u0vS^XW)Wl%<Pj_&C?<Ghv#6VHRMy?d^e5Aw%#LJsB-4*fn&PbVC6gvED-C2C +$kdamZ&){S8NE!uTL^X#9NDa?o3WmRwWcn_d&7Frx;3b~M*72UtiN(`(NX!T9o4zAv0Uz{vJ4qP9m1J +(s)Qz>lh;$XWL`kB<;_AT|G{dS&X_f;Y|_2~G&)_Su$39+EoNo)U_+28oYkwL?N4tT2IFTaenL%dt+W +uP+s3sDXGviRdYjR8?!Jq@p46L``<ixI&)m1i*E8NQ(^Qe~1#b_mHSu9XO{yMSsHctwuAwDveUC@P5v +DdpciTF-DziMWpV>?P+`>k7dxX>qJEAl<JA$ucF_p#u{2owTkDuzveExLTVQGdq#Fl4pc~?(xRXQZ2? +GA_JZR;6ryGgP++y?`1A#3%U?*XUv_^H16JrKGcKh>?@1F7rrvn%S9JSh-}JEKm7lsgJf=!_+wi3!*V +yHA#<bn1D|!=g@!!Rw#6G5{wg99Ims)<lub%W*|-@9G*q%NhTPbKER)x8LO&pXQ7|xNBS*WJ<X7ceOQ +BaXRCVyV^#Q#Z$b7#UC&1?21251?ozk?u=}2;8Dk`zm#@9ExyUtEQlkG9(;aUBA<L>YISESOjqF%N8u +@`wq{ZQbox{ZzlLbFcSWf<dAp(xI>)7jluO?)RW)FP3Cs;@eM4mZt2oj4sJK-{QSdFR_lCmoI+{Y&n9 +duQ;;54ATJV*!ae7Cs-fB;jN`uMe2)$1=9m$V=LnsqIlJDWF^sF>hT8#-frodlR^rPQg7U4&(cL~=j# +nm>bf_o&C4Shr5T9G-mjZs1a|L0C`$4-3`|9pc$Cdwcmn3In-Wa+a4q{$*3+@nz+Uj#0_X!pwUpE9%3 +(U;)_A(UT&PggCWV&1qO8<2Hk`J_%c@YY!K<jWMWQhI2;T7U?<jmujcmyS%0cCXz8HoS707|RvqOOsV +fqv}an=Z|AlG?g{+oMbP|*wPA(CqNt%!3{@{on52EB?%i_iF<yqk|4C&iF*hV_-7ew;IRRT@XzsHBHr +WN?-}AfL4Dsag>3kaBO^gh5pI*v5b)!Qm*mPeRoKRbwMAIl=mb<btgc#UcQ56({xsnY5{Fbfm&G5Skc +9=R30b-Xei)bJU5u*L*;_4%_hT%8RfntxE~Y5Sc3XnHoWKt{qs}1i`UJ(tDEk<&XAVz3Owa>2KQYZcg +>5l-ijM=;<<XK<_e@#VZt2!!*-6SNQiZphisT~*R4cf%4@*8!dhn&|vvkJ@X7eT)X}tXcQT2WBA#D0M +^{q)n!rl*wbw7rbQ*zrWg4C_3Ua<SSDlv+$GG(=zAKU%HCJVKiVpm2hNuFG+B2&6pNRnU5$HLQ{9@Pg +mSb0=`;@XZoiv3BvJSQX5PC=$0AyeJUbuRcP<2GOKbf<Cv+2%do=6Sch8Ygze@@XkImM#?Qk4VVR74M +ssknW6(y*8x^m#9%D(!|AXN~*H3s_DKxalx&Q%N~n;9hW`r9oL^3h)zHl&bIQ4bjxCQ=lWKms*_2*#o +gWpduw5o&D0r{%4zntXdKU`ivF@XKDm0ZxO_2*T(g*Z@nYaP<!+FfVP3d;(PmDPPCqLv7w+!3cA{W!l +JqIwr8R~1DrHfl(nEzfnx*c8-dTtS>s|egl-t0)hwSd!RsEqtD~^(x_7>D%7U`F7ltyS$uMRi<Gu|&L +*>x^#hQZbbRJ_(#Ts;QdB?FfaG7{T#G<}ut7koY`i+O&XC>`4>mVfXKw5qK1jZ<ByxbEoG@CJJMVmlf +aONXAuCnKTacQE~i75a&F$ydB_9M#@K+PVlTRi!5vxy$~pMY8Tim$!PJ_*!CFH~BoTr{nt`72kU=j|& +a-*mLl*^XWiJb6MGF`YpcfVe=}!th4tcrn__qM*_P`$&2Ju!XxXG|N2jyS9PbfFGhyy18hcIJAq3_)^ +-&8AW71S)ABVSC2OJZ!}DUKkG|MgvH};hm9K$Nk{z-qEV^S^X#fQ@K3b9B^5jE(T<3VF{y5jQ2TJ5;Q +E1aSn{TK<%~+CvI~_X(fft?@MIs{8C|lYeg%agwe6Y6{J`OUUhSmy1Dk(RX&ZRzbc^lW(KoPk3a%-H0 +D(!X}JK~<Z91B93t<&;^q01&;SQh`YV^%1GF1ZT{)pr};t4NRzNHUv^aFrp?;Ju#lek4Pgb{ijjUYw> +VD~&u2bstiqBq~-M9Qd=Iu?Q{@sqUJkOOyj8NP{$Cpf?hdUY1u``~~V9%gPXDLIU3kvXt2J0;+r_c@z +{)vNAz!LK1Lvm4YZ2qoR|qAV7(?#;1-Vva1Z-;#uJ=1@DAyMMUF@i})n*UC@sY6`3YYoT;f#bZ69swh +a<~RYXKcopHq`tQeLeeJ)b3!ZDqZI-7o^hrOq9TS&+r$2BVH3Mlpy$apxnf<9*%a#jLP<ibsQxi>YOb +dx9~V`&WX5s7*zc-n5uYC9#tDg33P27$W?JVFH?z=mevVIn`{(#ux~Edz8}wp-po4zp~Maj2`EGtwAZ +b(Xj(WDi&~6s)<PUW?xa&oF11oHW+vWKIi<C*HaWPTm`GF<3A{S!p!=n&SQP`!4Sg5$=2%l~(*qYwF? +z9y?iE^Vns6=CMnz@eVXW{?t_?M+vS$c?ZdLC|sJZ#t395!s!I+rk%zWCb(4wiw?mAU4z*~c2yrY>K? +|@{SA?h#wX0rqdW+A8FR2KvYiR!BaGWRcz)&ik&M5C@b9AA3jDL$PD^+CyM(jnPTf`{A^)a3{XBOrc^ +B4epzMv`N?E4vddgCDjVK!j%I+2+<+k2mCCM&Sp5Rp>OheXXg)EcnFM`>(-J}y-@A(l(YbO)cEIAvgL +$j8LTue&JnA{d0K-W}LgDfjUvcVNXiBp2BA|Xjpq$yhF5z|-3lE;-+Bxolxb|#dS3`69m3c%*;xfKCT +Ulr}G_LWB<nYGDfx=RomtPmZl7DpTG1&$_M5EFV_`BsGBLqpxkc9P4~@qDCUViC7t`VKLMFnhM+T@l7 +MAj@lJm}r9bj?#<*_s+ki0Qx7ZM=Q-U6B|O+LsVMOnVV_0CvYqd?IJcv0;TREemBJLQy^>1*i8ty1R} +wrQB0HXyPYXjCyN_W{4$n_`CozN)0HZ_JlcF@Z&3rtb|u&g?qE`^{l-3B>DInE4InwS8Vw-v^(jxbH> +&}p!mfVGlGa{m`uEG&2%6IDZkjqs9t~(&-;kD@q;GBRoE{`=_0eW&@D?<DlqgN{)6n2eGz=lh!YF@PH +29o23fe}gdLl;eu$*FI8rWHK+OSJ~%4v|YZ7qGHBiU5KTz)sA+T<=(waH+b$t;Iv6W3lT;~$h{l)-Tq +x3_~@6QgVIrqR;Gf8f3)Usm*KQ(8@aRU75YR~u`i+<3JmZInWLrL2u|3-O&~%NJTrt}0qhEctG+#*mN +CJl{~2>TJ1Muhk?~qm6R@OaDP_lo!#VDB386?jYw@S+|s|91^;P>UC1S)>`QQ(rTo1Hq=PjP-{vV5|O +p07_?eb;0&!PXL0V+XR1a^rSXugH$~P{DRfw>CAwQv#x?FTuKK=SPi4K{l;~(hZ^|B_HwD4}U@et2t# +STlEtQVvg(9}9kml7?BHfM}HI;_u)l~kg88wxkHdIr&vw1a@FKN_NKBG}n`N$2Zsm%RVHI?y-n#w3eP +30&>P315}P2~VZO=TZNO=WkXIz?z2b38AUaFq!~Q?jDU!Y_qn+_a*~+!q@us{Bi1MV0XsqUvppqRMST +bH?OfQB=86Ra6O1)F`S<{GU-&dF2KaRqjzWqIA<Js@$w7s+4}GqRP|lG>R&pyLzLFDi>a-sB)yN_hi@ +&DXJW*XKK|~1vS=GS@8wb=CoHeRSp+Ab9$+oD!HopWHXaBRW5+$liP*nlW!Yqs+9Y<U(r$-`h`$qR1* +8^S}N57x^XR)UqTnkHP^UWS8`odtHxR?6@`sWD653FxIauy<>E&*YAV-VZK$RaIo-ILO3_Za&@p?xn# +wg-f2*2Gkz7k^D%AkLuBLK_phn<RhJjmAQE5|DR8CV>sl2CAQHgNPsHhw!R8%5B^C~LaYgAO;^7~a(H +l;hIc^#EX>HS6}m8CbVq;ldBA_R(4WX5nSPC-%px{}H{^-3zIT&JYc93%9hC|W9i`u$oe(GLHES}NCE +Z9z-rnP;2PQVGegDJ_*<epdUH##$<oPeU!04>wA@B`uZEI4QJL3dNMFmP#m)6<R9Ww9;s)ge$aEE^CZ +wy_U*+p+^#FU9Y9`sjH2(R7NSfRIb-jDTunR)LvhIot8>;L_(DcEYhXBF~<~c*K4UX$_+N;;_`!4X+O +L5ltPmVEI!84vI|X$*p2j7?u}72sXV^h%pTooW;+Rb?J~0*f(Ho734S6!ao>_Ycz4(GO9y-JcJ1iHYD +kjZZEfwUnEI%TIrV{+1JLeES#_0iFi=@pbw<^?qWqGRXpSLa@yBt1Pc`kbx0fc*Ri{O+U9QioW5q$^x +(VVlTA}z72QqirJE*ry*jgn><K|+9e4u%amz3FLqHPcExZ92SVI;-C_lLOm_JndUzngR>U7pn*N_XQ> +={hXW80$~zcae4|;a+rylj6u)eMo%pQZ`adEL=6p%#kJnaYOWulQjEHkZ$#8H2dw=;F_$@<<rH^sN>G +bC#pM3<LYx5FJ~&F+;F;h+%@@x^g8)hB8_|NZy)4dCul&(Kov;q%5YjI-rx+!Cn9YfF}{Xf;o_R2>h| +=aFAMKTUgU&6+ZAqbr0SVdSHJ0)luTtXRW5`43G$~_HR4JknOq~$>KNIM+lMJPtYYqHzttfz5+O-?w0 +B6%x=?LM%=)?7GcoHT?=%z(I6ls9-XZ1Fs&AI2Tim3kS=0p#_pOnHxP0Px@1kj@wgQJlR|V?(T%&7^< +YFD}7&({(I`y*G?!kL)ela#fOfy(Ge7$){d37i0votprU!{rfWwrO3DV*XjZBJ9yKhiWy3k|;I=py}9 +3FD|wvM*VyKfV4lwTqDk!g;?-ZxDC=Nnp|S6c%TGa1pAw61Dy|RAoOr<XG5DgMC<5Yw546AhXP<!+Yo +JE+VyiI%k~XV+|_P492ecj8nGmB5ip)LTNT-k)eo}A-+mKCCyI5XI;k#4a#KJ!`h4dn*5p#ag`ej{WA +<5iHc)$s1V{$i30}5v)V{^Jgi*!Cua3n!fzv;fSa?h4p&)ov$4#C@oMP1NEQq4_$Je7KjG2~7ca3@U1 +M}S27zR(UT2@?SZrYSP{QzWBouNif=WWTb-lhQyr}(Dd*Y&4YJ>9CB8A79{g$$szKJs3NYmCeQ6|K(( +_HOv6&`WfPf+?Zp~I(AMEGte1#`6H!7`o|*Sx7PPk4FOIPIq#xKeQ8xT^kC*y4uWtmU#Ap%c{bQp<cr +45v=HZP(R)$#y~0_WWCRn)S?K;5*G;t)bk*QEsM4)n8V8@8v8!C3C_7$H^WQC)N7e3C2m5FgBx9_1dK +*bvyj&*|><YjoblLrW?<ePe{Z)aJWsq$hF<^O;Ls9W4lxN!X({Tq$3FT!%qNy2II$!p9K8O!cShA6GC +dV{b1?GwmV(hD<r+mSnWwe2I7~+_(j_<I=(U5y1BN89IN=j!)9=HE{oB}+G`yrJZ;{~I)_Kwf0;I=(s +kt0F-N6e@Zpg1iLS$rZ{Vj3kG20&QH?m1lKyUc?Y&i#QIxHDr%-CG8*tQ3)f!X(!Ai2L(9d+<-rjVjp +soBViigvm+Vr2~7f&kJB^*=Cf(}y6EOo>8(OF`{H;LQ*agO_@DD`_5V=0aor@Nv$zKPrH(oGcw!%gRH +MoPX-a$=J7=e1(7QhI)t`jv_F1kzGIHqoflqF8-RSLO#u4<OfG;{F@5AzZ2QQHr<}dzrWL1&#cHyZES +OB$pLfAk1J0r18EJ5|fj%bY<}!CnP#&_=-<f4B~rJTgR{&zQ$6qV;pZV?X|t@)K$MJkCTqt2aKioK+t +sFSd!1h4doBsM<z(wwMLLqHBH@XZgh9!BVthM*x+KH#cgq6k2GVYe2Bvp)lIq3(O-%YZlxD(U2yUVPD +z?;9Y+$b)i=973f^t^%JP^}-6o{GbdPaud08aW)t{Rc+NP=llf{)<*_+jG%>7*6#%=lq(3N#7Hr+c5o +m=GbnQLdT7vfaZdR#h!bn4%$Yh=+Q*;N}-?mAG)ZE;~fwpNY`z1b1Q?3a?vS^5NN=Yv9t2-I?vUbGvs +T1mT>V8DbrjZVSW5~ST&C%~Z=m;O$)wSPJKLURWWk*S=BQ4-hWUNG&Xa&XObuWSySDeniP%_O?~lc|F +;ePy#`jY^dA!{wc7(>2><)7Q2MA?4{|^F4&Zh}!j_z~q&OdtO^h!>M{U2$!Aq1?!<CC(Q0^3o-4q4U( +2@AwQwV>&eZSu`EoM+6as79?8><2gWj7UKM7qrN$5C5<Bf(v-DDFDN(v1O(bnQ>Kq&<ir?OWyt0IsoU +849=U|u6KSs!J4#t<lb%&^5uaU-H6GWJ<8CP7z;1Xgiff}Z=p>OlyQe?Q$AB7KP#5e0CW;)wJ5YdHP1 +O@Z6Jf<ZI6=|<gUY?Z+(uh)bncPbr@av`cB}*$46>cz=o)$e^O~{@y{kU|eff}7><)tsW?zwcR_wEVF +ywh~K&o?^aFL0@Dy4p~arB}_A8kK^r9n#)l7AhvD5_M4*s*Zw|d-UU+?FjuaZ~J-CYm7EJ?m-`<PgXR +c4K7vDC>f?!OjR)1C|NsUUg&Y@>#}hkrd`GrrIg|*IgJN!VSScfN#jh3{F(etV@WD<om^Mu`-Zc<^L{ +;wXNa8U7vz(KM|unml<+-2TE#b{yejyb(rD{HMu|6zPtkl`@fVg)?pQKO*PX;L+@5t)gOAgCNBJpw<2 +^&l%}su#rWfC-Wl`708-DfXpO}POd3E@5$KVuqs!3gGZsClQgcbwm<TF@wpNi{5(S-SVD6sAQA+8j?% +x&Q~(p=~lT+{Uz<FcKEPmzH-rU&s2#@moc6SJtNm?Tb6bxIR5e;qC%mO`hwZ-E>z4V|s%U^B3WB<|kR +;nPBDIHi11>mt4ByjAb2toCs2Ob}dTkbJ*V4*=MPuSM<)yo(M~b3fq1M^&{5f~ym89c>+vuA(ptA1WO +aw+l+U@1-O{z3gqIm+n<{b~rxb)aa|<HC-vXe-UMye_vvK@2Mx!)w@)UC6Qnza{UJ`1EZv;P}1_bwCJ +_YsG8o}os%y>|Nm`LoI81G(!KSkWt`rGYj67n$2Cd~I`b2SCKCyXuKh`y)feKnI>A5kRpiQEj+iEub( +AIM){0>H(em&>kMd;W>kIY9_sZoZs6(|&u82Fs6UZb7+ZZyThNCY`4`#a+rk>eH702j{U9HRFh6FBeU +;NFI;tzGp+E@2$=(@D{Lyu~yI8|R%-L~GRxMy)G1Z=yH(AzVk5{1!+l`|6b%uI9UQCv9}I@R5!9-D$8 +d<q3<JKaR$ltFyhues7UVKvxMz0$X{R5wL?rLXu-xN4M6xzzXTDeg;sPj1xNZo&PmxY8G=kQ-g;i<?` +aKq<?^apLT>HkIzXY5Pmo(cFEnZ@RF%@AdtqLYB~clBC&CpizIXuY<Yo_4QEh^$p(ZyoYB0>czf^-zf +W{b=CJM_u`HcgZyu}*tb(6jtEVVuGG}Ch;0D!onc6K`d4?yv70(%=ei=CX4FZ?POAChhTk^sVypIXRS +Kmb@=b^y($fz>vP^dE6hfu36dy~v4mnO1Rs7&%vs8PRJt<3;x!wf#kYt&gM3QChOh}eK1mhuWCPUavA +*bAQ5;k*lNZ8CRAYn6iaUOZhg#elh0dzhD(4xFD@u^tZ`}mEuZz$bkiy`uVz|DWRX!9%bDJ$?REAorA +pLLux+5&0PSmj}B>$=%_OId-wtVkbYKabr*Pg^S-;vYLM#(rta%#<0GZ()Hm_+apd6I|QX05>nYMFgm +j8YB^IKR>k!X9T1tKNf?oA?s%8Y3L5U=(UapWe;2XEL}z?#>`os(hHMBsgmuEg{oFNaXPP)G&RZ1-gT +3e(|Zk0;w9AIi9NwFY7-@W&F&@P^Re}KLB}C~0Z-M!uxtWB(J+Df8MD}xwta&y+?C#)=F?#_4C44ecv +3R@k9Yr05@wz*%OgqJ6XsS0Wa~kGNy$>DI8_Y8ZSuadCK8Xy;z~?a&xQD2CD9e{*Jh6`9(_%r@3!#G_ +r4y0bM$>%pIYu?>({#6*4wdD=h&qi@x9f1#JBT3JiZ&Ti)@u-+d1Ndy$$YQJQT8L#0gs~YzlF!$E7b^ +71JPUi6dK{^q)aQn=|^iMzKKO$_5lbrCJO&Uu^gKD2hJoPx%W~6LEolZFWOjgS{25ZoG7IyB|xubW-` +uIxVoHr))dvd3YLm@jh!PjsHIXFFZR)g!q`?6v0mfzBlXGtps-vL=&VD6chZJU?ahM1V;&K2=uq;SVw +|Df{_IG5d73t$4(F&BzT=*Be`uMC?_~VP($G1Pw@zDC%B8?UV;S#D+sm_>>&7r-~_>s1iuj6)S1E)3? +(oVOeB~|kWKIaK?%Vcf{g_45ga5qPVgf^9YMP;I@Xt9Ai-S(u>{iz3J6va{Egrpg3k!PBd8;|neY!J7 +)mgPU?M>p!2*J11kVv%>#7swSWI+f5v;gHcU>93+r!MBNiefH+sy2#&&@1jwb|`g{;iqi1emXjqkW3{ +U7ZdS>y+^XYm7weWyWf#=|>L=XLIN;pWG+2No*_|z(O_lA#6B{V^JcV$?P5$!y?#t7Aah!>2Cy^M}H$ +Ie!d8kru_A10hE{g7vOeTsQfYEK1jF^Qd}5I5ZEymu9%U`LYP@7{n_+u6>j&iTvpJ?Z9Ijtk-O@WNM; +_nXhYHLjLjv;CwDxtWY1Reg*}JD$$95d_)PKxj;Umy13f}i78Xj&N+IE<#!IDm^)52LDvl~%Dn2R>YT +jzTay|>)d8_%Vd8+v!om5KCPJU@h41@u;_3x7iTZG8hxFu6MX@bIf*GUvg`yNj?=V;<23f#2sse%?cK +Q$jUZ8beL9W_4A5R8~NZ$!Rejx>7u2gK780LwypSbY4Tw6sABMJ5SU?coHGmN}Mrvn`@>@5wE2+sDtb +<-(e1$+M}B;r6-qd>bU1Y>`H+Jx5ezc%C&=)M2W1j;KG&Y^y!hDu+qU5mw3v=_6gFiL{Uo(x7+?kp|) +;F5<AnRGZzJmMYR1Yt0n4Nf~x)zT%c_Nz1V)FO%%DEj~9#I3(H?Gu4K;h==e9hcNJGcT=mHNZb=eEiQ +!J!3GjX#X(&<^2^R2YqeNlCR%Jsso8d6AE&X0XJ_ZmQQN%E!&C3&?PF-wx{Yt!c1FMUH+AUP>E>JfJ9 +p{Yt^2J#0($o99oVODzo6T05AHu;;Gn@n?g$w=Z1|m_VIxc<N8L5r96lx@GHUF&=$P2M<KpibpD<x!; +-tw*$y27@J8k-mnJKeUXU|Eqq|eRB%(^doUQTY_{nmV&y<q-=g%A8`QQ_hu7LjX>T99c=u;$LOp!Vkx +ugxLeuo9P8h_W<l0jM9V;1e71)I4$z5UtfJ!UYIA+OpOPU&m2<N~Aw+7}+<GdZl~VxF&qiCdU&`hKmq +Q`A?+&Z7`K~h;SJ|VZsR;x$i(95+Hh(0MT<;M4yJ-;>ZSS(u7;ONOPVDn?aQ1lPy*Bh;k2veg=J@U9_ +DX>H`AkH&swwAX2DL3;vnHCzax5vImrKXjQF6tCQ2u6s<FpVx|gg<var@H@iq5{^)OWMXvD6qrYr-3^ +~Pt<P#&PlvABYuKD5}A@8GfW!ym*u(OJs(0d_FE>RvJ(#sa%Wy(@T&T2Ug5VWBz(Wj!X2w*|f=g*-xE +4xjU9ynl*8z*gfrZ!npIRZy;j@<8C1uoVGF(U;|=t(mLosH}J4tIU$Pz;;kjT}*0bBWdf${~;9&Qa=D +PCc7UnOe1`WS@DO5^bE%kYC}e>+9R1DenkMXOdDcR=1B_!nvZ<(3buae9@SW!EQQKoYZn_ih{I8@$Vp ++LXB@1H9A`<#g<9|WdQutw6y8n`8(@xzM!z>cGgsW!+%G9;L^0;ncpyXetDv%kZu8mw+aaWX*AVx)V5 +fkqMF{&-+_OMNY%m?2+Rj593{V@=G0oe9{(XMti}4yrQ9qE#&UbkRs7Kl76@)^I^BkR1Z?tz)MZop7L +{k3>g%=X-1#f%%u{-~Owr=3BGoi^A8_BVrvH2RrD0BKqP$a;)YWwB+aby{SMWoS=tncem=ho*UP}XRx +V}9O*3{39<A)G352DWIiFaEA{03|4=f=~8v<ul>O)>vE{vE98uhT^x$gM{naq{RrQ^X7qqf?%6v5I#U +3pq|&gR;PbInk_ZX6z?31DROv+;r6}LS&GMH7!3f+rz!i%x;1^nH}IxCNyuayJBXY$xI-#3z;W=F|)2 +@=8=i-O9IHe74DbKtOuF?WJ0>xRBOhSEv)>anfQ;=ArrD=37HQdA2Ok*Xcn2+QZ<tqFWQDxjMEr@L0g +jO`_*0{f(6rG0F_)r$tsR)n8DP~Us@~WFi`w4Hd4$#a;Z!aYMwIo%CV8weWEny)9+nM-89T0%H1M*in +J3Nq&7m(93*B;;L6)X8bLYs>};}n<6lQ*$~?W9w}+oTDk{ng&#=Li4gv;*CQR`$usa72PEPQlLJdHbF +~h8kS@bZrAa4OZ1`5G^n884Xf&P39?7t75fb0H(+<({mUH=zNHPg~xNfUn!LoCt!>2B~(8-J<h&*KLF +)VKlv+r|HXz;k__X8cccfUf@UMxO>8psWA$xWT`A4)}NfevN+ob)-M-o7V4!Nml4?_<p1G*3;eCMO^& +DikB>Pl$1XB&@$(8*NU>053gGN=SLp>%VUqPS^LD3Pd)wDXV$HMcEfYe|Luj1FaG_dm;dp~KR3Pl+U6 +}=U*Gn|n{U1S&b#luUtY1ja>oZdckSNu;og1wKRR&m(8q^A`Si2Tk9=|T*zqsF`ufDlZ@xWs`n&I?sv +oM){OiZFHRpahf8pngmufHna;5I-HU4ieOf<jna6=0d|J(HcZ|DCXUl?lM|Nn^chwk<^N{`r`?0Uuin +8uC^$W*yurN;iS#=c5pU#+qKSz~`hW5=ars(q`*4#j1y<n+Wbjd2!r%`7=HCoOk=qAk^ynVSRm$@v!R +_}N*OIkuRb^jzya;gKxIiA&A5h0n2N7FZH;^Xz%TO@5b?Veyn=>Rij1+y%*OGD{RIjg8kB@pu;(KUln +^m;^D;2a6wETHMjgizKnq(o!n8!GntvikFd871S>@A-S03EE2{N5}<1|AgFj*F~wpej%8$I7z{oO^77 +{A<u#DQuyb$^0rnPfbaJdR!^vh1*Zt%*ifr<c=eHTc7xH5tl5=I5b!@6FH9Np!wdPs_GIIj5Q|&o(GA +z~+0e$jC0IOIzN4U&vOIm;}Hy}69k`rKAV3}jLrOwXABJt!LSm2jVg%psQ6Ofumfzl{ER*k9f25Q1sE +vab%>DJtN6k0@Qy?bKMBAlp+rt+LZCSxY09Ak556JG9W3b@~Hu`bNanH!KU5W3Dk-(s_Ayji|2jmS!~ +=VfQkkwd6H!Y|iuYuc0is8E`T2%4Lijn7eLoi^bn&jIF$wWE9{uY9UAt$tJk+4SB|sf}#0>r-FGb1gP +1;!In>oZK`^KyG?Kp1S@!P|UIAJ(fWtO)HtRMaqMenI)d61$o5aa%ys|P+IfmrIL+m1|>wr(r+NuV?W +sPGc2=H$uT=K$3k_Vo!?{{^D{DSmi)ZbIhKIbbeqK*&~K1E-#Tb^X3ii>PC-94Vk3U2=N05c0W+<+Ir +A(zHg`r1^0HXxW#*)cN~G$cSOf02=h`d*RL6~yY6|I**YSIbSUa-PTnn3blQhZ8>CVrzWq=LxZK+m`^ +NnSvsWU;V5~hi=Q|Xf1nKrEkVbd(4%C-Ih_I#i<dD7Scq1UI|uXn$IR0Vr*N`sV}z@uN!eneY#cJ6#6 +ir9_Oxjs(w<<JD5S?AhOx%mM>mICT2GSdSr^YUy9Z)-W9*~C%`)1+emC6%f`Wmr)N^DOgntqWN%rM2{ +Ox0`?_+_0zm`yVJFs4<3%F=b+6Wa7m0<$v3jH6VIP?W9S=-)3(?0E`$h9pgy;^dzd(h0|%Q!GMxKJwJ +0^UbZDg?MJ7lW#-$a+d}Rbn3pzNo5!j!#x_wWXI|el4md~;^Ap8X-`8|Cx9I=pZY}#y>D#jZl721w|K +s+S{ofqWvVZ?UE&JyTZs@;H<Nv`BGy7slL;r(~;-4Sha{7<PHJ?7r^n{k<|B%?w|41YMPLs`Ud!WYNI +Naw+^?u)K?B$KZEtu9ay%Doprf2^g*&ol^Ip${RO0cw?PsjUP_TOC8vi}dOTE=tKGtHN4^*X|PUGx64 +wwPJkmWKX~%Q61-hW?G||8QH&_;0Oj*?;AZmgy`1xaIsie%jD~cO(BVK9l|NbRv6pN1gk9I?lS(kZjz +k-t8%Ji$2GieExgZ=s$DTsIyMHRsWEV<_;0^5Ee%xSTgIbPqaWFPDr(7B(wYJO*;c2Nmibfu#GH&gk+ +mVoxl+Hh_vihD-En_`j_>|shPI1xz<D)$g?d<+_@Ao$6}?}5xF_}x!INon>9O%24WjyH?#2k{LHyIN( +z&5>$7Atbz=o0%KV1%{2F<Jpa>F3+~*HEdXQ^;Zkj#YGL|Htds62i?DL)zAeT2u&0NoTd$uie%tD)GQ +f_i)nk6D5)yn>&(C7{q&R81KPPC;(Q;A__;NhXn$f7VkVQc_OOhc9&&dMYfsfg(oCF(>Lk)4~bzTF)) +@t&wS8iUiavl(+Sl>bB$Ckg}!i6n$1vnXAn%}W0<M9l~hf~sz|s5X`u9hV%Q5F?@=@QAjg=7}RDY_G7 +($3=c*Q8^^yMOZU!gh+NGQH1Fx3-gS#q!w7NbI+7%wNl+pT9}7i9&E%f;q0(Tzaf`kdacT^^|f+XKRG +8u5StdYV2&jZA&E8{j`lo{QfuDZGbTUMGTT0PuEm;Qwd8|QzV(R7A#_u-GaqP-cz8})VqRuWM6R8}{X +jHBT208!1nulYoCMOm`|Bs#vM1+|pqa+@3tHqlr&*<-H34+7vy>Z!rb4{Wk`|LQ$7-1;xV2jAP6?~-8 +HgJmk-*rUD8unl@vyfhI+6(EG{LRJ!R!P5B==dKU9h{)`0U1;`}EIFyon0+ujg%<bEsDGQF<C4{6NzZ +CuLwR8$(mVC=X@5Av`V3Dr%&US2C5HU@(@8G~^WJf@9~A3j9#_Y>vzeB*5GAP$bFh5S3)M#daOryrxg +gwpjAm0MEFHcw!B~Kj<GkClV$iGnS6rU{$MurRqRlRQ<$Djz=BKQPIYm@L(OTZ|BrP+k2@Ecv7yrRkI +i5)}LUp3O3D|Ba=y4KY~;yWzM-zp}XSxevFE5p`d?ZzRfakQYPh-FG_}N>|v#sfI~7H?HQMwN^N7dHP +yP1aQs;C)I^J1$xq1bNA4YnBVN|L6CqSG$-1%G_WTSaHpZTwPSQJL523U)eU6^^NWm=EI@W@dY8JI!q +%mrqd8t;5yWEozTT^~Xsn$$PW0F~-?2|S=U9Oc_kNOoUU`-N$+`6fak)$Ydi-K)()5G?EpZ^~}<zvI$ +rcS5v@Vh=N_S$vVJ2&w6_yckK@ALov2mEx;cjmWW?fibE`i}2`R9^B_OswtWtOl-##3zE#eT8**A11H +68x*sZVzyTN+GzZ4R^q}mD(U(uZa5!ulLBz>skjeQ-ousm2<1INi8E1gPgKlgCH<*N-r0)#JjTQ>HqM +dbOo>&&)msT)tl+#vF_$X-4#mGjNoO?yPG0;~d0(&K^PH033yS+T1;39J|IZbFe;>Il)H3_eK7P$UvV +TCc&wm`X|B<Kp%}m+9`OUWfUA+Iu=l^vcP@ezWSs{?*0}s97IqHySEnT>@r{es#uVr)n^Rl_*nG@pfZ +u8<|VQ!@G6&sFj2xunRCD&xrte9JGFnqXTzE0r}JbUWdF6{KP(zDZ=Pk-@xVVgh$$b_Raj|Q-mqghAq +xIX;hBVV1k%-E2{a!jm)q0f*0*~}sd%mgC|LJ5Wv3?>L72q5q$@FidbwHM6n41q*&ir@snae^ZRpAZ} +**hjFNU<W}t!8-(72sRR|BUqz^Uq!HtpqRi$kWDa)U=l$BK^%dZpg%zXK`VW|oaRsOegp;rMo@d+%xV +ZEf+GaG3Em)hj$jo*F+ny#8o_jeNd$2Okpv?Nh7$BA2qfr6(2>BGpzbG1li)bP!Jp*tJIH*4U?ah!1S +JG{1k(v75yTOM68I6+oihu3TaqvTohR_N@IUlj$F9c}S1YQ|MqM}?>>bWF`Gm6|io5FeaK@GAWlz~&+ +?xGckFJsVTiu)U|E=Mh^Z)Pj??1nG&dj6H<EcDqd^1U|g9*Toe<!{R@Oq@PHvN#3<{JX_8K}Tu;`IR2 +uS1dY45jdarse@{N2jE%<)g;)Np)Ys{oL*4{f89v|KpE*cFI%Cw}NOo(vFF_N-^eK%jD^aCY+C`qjlt +t`gwy)#5+hP{3S9mPoqG^s2qPXF&7)GYn+ZwoG6KI!X4?)YQi1Q0u6&`-Iq1vzNQ)Xjm@~f(Tw}<X55 +c7<1RJfj<LCx+zqpJOrpX&r5swTNz*ahE3Cfzr|Z~8L;ZVsj*ew`)xQVX$iGkh`@yyJ?pOc5;O`V(U; +lpM6`lAFT78fHr;gpL$q$MF0~q=XV5y#@Yx)^Da3C8uZX8QaPG*^znapmt%N12zO#j7f&6+jrg%@66Z +@&2^D=#l+pMU;2yLRmwQ<`qE2uv@y<e4U-5AQ4XWyW3e=N}NS2l&~#V&A&?^A{~bfU|sG-2uMu5_#{U +cLTkgrMUDye?H!&1N-*v6Ym&O8ScS4%j?pG|NKQYhBFkI?^NFBA28G+etLSH{9c6c`wpb1AK0b5*UA3 +4>81|vlztug<DoD`a{BUn_9YR1-@XGoWrs^5{jZU~{7(6E?mB=?S-1hex&xQLrnigm7x*u&TfVPu-$k +T>_iGcU$54Q}Y)YTrz24c=@wTV-9Uv0YQ9gzv|5(!DtSm?1I&8z$(mUG6?K?mrR-m{HbuT_KBvcL{-f +Q<Cc&^vW`$Sj(xt|Fi$!jUPSOXyZKiV*9Uv1ri;&KuG0OwaHzh7G?yb+$tx9X`{F1$tgBMC|NMtGrT< +cRDo(igbN-psH}d1P-^*Q31XglF++Vu2nS@FdU`Gr6N_26Rd|ZM@OVKoJ2iW;y~-0v`e+K@Sc-_fvTN +*Z6$s(4j0oKAt5eCb9<}c%T7~uUfT={r&HMXIr*x5j_6cXP>dtr%${2JP*q)o2U=nw9N-K@u$2$@z>M +eXGQOyeLwxaTvkL?l>R>FMekRq5GUMM^yAMdual+ducxPRekHwd&*{mNC%>N_H}oYkQ|^nse>~?~Q}| ++MzxSt2PGLoS!~0t&BfU3QBK;!H|8?ooCMLM}PmC?@(S!T>^x(`>0oDSjVSE%Y%H@PIGK+F*d8MdNpF +S)&IG7C{JeZ9dHHw9YhqIWN7*Tc;CQM*SNl9$#)TwO7j2Uck+E_Ms?p&6YmBr@Go5!qHtLQ%p3k%tL` +)Kyk1EbjH#U|#M8^u=K7r`FQ4QEeU&Ft+ZBiKKRW7rc*X0vT;^4QLY?`8)#+{c36<E;O7&W7ydZ1fJ! +hJDD{$d5RizMr#*PdK~#C}$JC<}9CJ@;97K`<}BoCpepZhO;G0mN2K&$yTpk%^rXJakh5tTK3daPqB6 +D*0JZGe_qt@rcImJ)~#DbU-r&B@36y_o7mEGoNcY)?1K+JV0-rLVf***XNL|QVxN5S2|If9DEsouFWK +4CN7&(?I6Harq~MFHsw#Hj><{eQ%beBJ)UZpJE(u=2<1vWFhXlsFiD?Y07;8;@(}o&*J8HlI{3bSv4` +I{z1h$ah&(`qOY%712eZmi^{VD56@q1DH!4!WK#gC)-Qz`yjiobxjXUi%6QxyLdieFCgKc@JnH1YdVd +^5$rm*U$f{z{7fBE{cM@efh_BNYEDivKOeucG*8DgH%G{6T#gOQ5Mw9!<Yj*%;fjlIG+u(wJ6Bjqv04 +j2{`o_?HtHKXpIjKdffF=2gZoYT|dK_`N9pV2Xbi#gC`>lvYh9#a~GAms9+wDgHkxeg(z<nBt$-#3$h ++ftqq22^*_gQGA+L9iaZFhJ+X%a1-NqQT*u?{{f2sIK_XR;(wxv&)TsBb_=!Ho@^Bhre-^w9U#uHVKI +!iznAeLd5lkZkn#JUVtn;$jK8{@@k3v0;s;Rt;S@iP;?Jh|3n>0divJwN-%Rn}qxichKIOUkIK@9r@o +U`i`%?;cQwo`s!b6n8^OV94O5r4>P}82XpN4RDVFG6t@8|5&YR)dd%Gs4e+#SCw#UDWNM^pTX6n_rIF +QE9#DE?ZC|2K-ih2n3g_y;Kdaf)B9iEmI!pcBRKO7VMA{Js>wKgGX`;!mOY_fz~86#s7&|9y&oR1?49 +lOjJ_r-+C#;bX$Z`aX-hJ*ZD$uU>t}xqZXO#Ky!#M#e^r9vvQ;G9aj5zdnKE#`RWHh>Rg``i~(?WMoS +4Z3r-KT!7*q8y^uBJDQS@iU=P)COoA-0`%$AtEb{06K@WW4UdS7p!mRRVE^FYyHe_rjE#>~pRry2Z%G ++AP);GRSI>an;}D<HkByBP9h=g<LuY^TrvO1pfW9dde{?t^N5rOd?a-mK>@RQ(>=i&r#<<f@>C~}9hr +36K0Kp<a&j7@ah=gxA{5y8&ez$^J-0jGL;-`!bkH052HYzry3liw;f6Fa5`}+EJi$f0Zj~5T6-=#r-6 +chveBckGCVq@c@;(Ig*K>q!17wM0QkBp6qkBlFCYnM(+0Qlb)G$4-2=|_kx)KW_si2zFZiS&n<;;D$^ +qhjL)5h4e*{0aY*$RTE+5KC!v89TN^hYl3L?VmE-JH<RGiZZx|{BIpQR-n+$?H^(EGKRJr92FZGPo+G +zhajT+ScN@Cj|dOH!_(+Bcyvm9N_<R|f@QqQT`>_u$3zU$>ssHVc%ZCeBHb%BF)3k#{91YIbnT-FL!c +NRJDM1&-aq`#VS__jc^YntA<u|0#LGj6Mnu&6r=*MtA8%^s<29VD5h+MLCbB;Nln4YFZ))q|V}^gkXk +yn`R_~AUAqF$IY2R*qN<{o<6Y&~j+Vtfo+OK_Bd^nY3jK&-3M+$FpzcVDl6w}aK<{wHwk{B^2YS@TI- +kS8OXkx-gH1cM#4WIZ%-kg^g)f$UOpCCb^{Ew06ikg5XWw~NDx{*BBvYevIa}y^{6!OSo%Q&~}@xp?; +*s{zhw#FL4wk(Zeo1R$A?%Yi>1@&{$pL3S<jVv=PAoH=u9%D~F`6PS#>8IKH_3PPl&pjt(h0U8c3wiL +Zx84%6!l&gguqR30*hI3zjvYJLM<0D8WP?-Re9gZ3<{NhE)G1b7UCqv%Im3QBcUH&-KmYtQyL$C1TYZ +VMSLyxG6-_@o2p_E6Ndq0V%T;q|pj$`--NQ7{{f)KfTi6i(9-F{-v-|mBwwfPjukzD0e%EN?(}0*jGx +|IlY*+QC_`@l_nc~M%{Am>bev1DP#ebUOzee%*Q2hFF?!R)%f8~__Tji84N*~arOBb<q)mf~9cJc2sX +wV?2$nFx*rHg-;p11e#YuD~p;<L`Zg8KC7*Jn_BKjUp}>Ag$O-u?Pf*!F%s1_ciaX5D(-9yF+X>p|@) +K)beWZ|&BzPtc$?t%Gh=90CG@ZXaYY_y$p&+iq&twu}EQw-0J#Ftl#v<>h;u(bz@r-R1V~Z49m9Fvzb +*Cm)?puR(aaxAH>zH~V{Zptm-?TeoTzOzo>@pRS(W$d{sYr+3OfxLe15y@Ll03dT)Ul>hC)!GXcSJ%a +^(-RQv{YR{hXPF<0av5{DW^HiX@#d@7448r4}L=Sm=2-j%L5<vo5>}PM_QIB+ZYrsp%^?%~|JzEvP7e +^>M_2|(9g$lrDkbPUVYDGPZP^L^JB~*t{Pa%$Bs3rbKJ)TOszBd>i<%;1E>>u#VGtVT`xbybevuD5i@ +y8#(r?KaofBoxUr^)>K!i5WGX<mBj`0?Yf?%K7>rPJwxM~)mhNTJDJNe4$#P!7MP{7}~zm~ZOaw{LGU +QC974Fs}c!Y12jzr-$raKmYvmhiM+o-+%vo{{8pga~e<iXP<qB1uFja*I#p*e{=W~4V=c=FC|H;B3e& +={PD+st*EFd8Z%~02$SmxM{sUo@(~%}f_iPO0PO0KARN8vj<ECQ%?qimt^I|e8@zG+J5zZdpf)%ZY21 +0|oqd5H;U)0@@WT)Jn{U3!2|xbE8*d1_PoF-`zx(bxe(>Nye(2C45e{)kMu7V%iu25?ufAHiZQHg&64 +|004#)Vsyu8SjD_16vTn*fCJSg~<TW$$)I-U34amO7fJO9YY$RMQqTk$`C{yZmHW_9o0y@yd5uKeMLA +9#6rxx1VX95}$g_~HwJC)JO@9rhC^PVi&Lj)`~Bqyou2!X%!%aPHi>TH?Dal&18{FTe1ge){SBr=NcM +=C|K|`!(ft8R3Y|N2t9GBOF#D?r+7P<SFFk2H>v(Xix!lq5|+&=}_$|G^Rxb!r2W}=Wfut1AY(wm6eq +%s2+O}Pn3X$?c28t{J|ebj~*3uaPs6y@eUl(Ca4Vy^YG!r0?;;4A23mGXgi3rckf<-KkAU$KSw=WyLO +FhA9}w+?sf2|Hhjl#!T;jLi=2ib!T+J5p?$%}0N}rW|9<}V+i!EKb51g|Xu~Lf)W@DZdjtUY-Me>-ws +Pdi5n%@n=mWrSXeX#6;P(2DoLi1^KKdihhwkBg&<D6jo%4a^oKO6a^S__w{O5}o4^vy|_FM3O@4fd{2 +L=WXBN=`r^_Qp*K?CqbnWJ1m59$KA!;ZTD>Z`8=z>YFUc>`bY0cZi<D1X%Pvu8Mu{ETz+$DErEaDL}L +&O>$+4Ldl$ooML$F6X`8;(X<C&g<&xp875LQ(x}};ID#O7b^Uoc7k>Qeo6j{^KnNwkNA|zA2d)M4ByN +79YjOU=bT@x<2?Nk=Y!vKZ%y0~{+BLY0xz!!2?^;%yifufs2;AP1-O8ZfMZj1pxjaBs3Y(V_#gc)&Dj +J(;|c$}kI6KQ`GoVk2-gur!!Y8TydyIHnTI(Kd`E5*H;O-v8C>oE!T&TKaX{lbQTZI@in;(_fj3k-(8 +j@M;Cr+S)kM3%lX#Nzdx(Zu;{UOq%QTES$a&a)nTEmC7W!}JJm~%3jz9IqtNZlnGmPqCCE6MKmZs<cu +Q$hED1Z24TtGbZGukKV6tz*%@FnLlL_-wOu<2j?MxJv7Pc(=B<;#~jjWZ1ZG^n7`(Nvu@MaPvZSNNef +pXSdmiset-Kbk+5YZge{`yJ<#zvX<w3C`m|!xu_>CY~9ow&y)^dq$ts_dU5i4|qpz)70bcYYu;^=M_V +T4(&z#c?s|bpERZed=I{EOovJfcpZH7^}a3qh4~}-2Ky-f*ZjK#4R~f$aXwX{A>nJz;|QndFEs5LG$` +$PAo?WgQ~OY#)RSoF@rK;D(zB!~{CoB4<>r4H<1x-(S08A<7!TCCKzqQuN(1nxevg+wp2lBVIFkQu{w +V$|(eO0UfG3su&*?<N6vAWDH!=-sdj<_^dq$r$WEYitCFi$+1}gu6H>v&a7Rh|n6#mrT3;w6Jwi5CX+ +MG&<N(*Sfc+ebg0e|$9TbG3MSN>$;e<vEACmPn<Wc>5baz3k?XplHhJ}tLr^hvSD>f1ADP}?(TP}?*5 +q@cG&GM5_Tk9LOfh2$(ZfCd#B)6rBLQE9=mttgDYwrB)@<pC3aaRJd#FpB?N^8^3<7nz0>qG8(iM1!V +1$13eP{IJ|7h3=QfXSGl2M>O<)yUBh@;7{`XiebZs^&%Oi1o)$0gbAJj4Ul<MTHuDUR+Y=(hw&CN1D> +~v!}#lq!}zO2!#{|IjYPvcYjgR9vsE|L*;Emo^QcZj)%L8&82#RB8h`W`D*uldF`_T(LIt!};0@e>yG +jfCe)RX4*P!3TScS0-&wEQl`I|(;*2N?ErbQ<HGSSeuJ^zLJq}B7n`HK6-@MW11+%Y$T7o|mVm;GM;) +#nEV4O$svpdw>5hd=fAg8vDhmB1T#!30jg8|?vjt961tUMnAC`~{8R|H@@|@pp-aH;9HUg+v3j1+-_- +@T@|^T7`yHpdo7ve<*`!NRQ-;)1m|oc+e+}(8w6WK4_Z%(Pv-`gB$_axN#$Y>7|!A<RTTcb<$Ehxq9^ +~Kls;FUg5Ztzq5pBpti7?X!xhnp3x_*x8KE|w%*0p<c;Q!=9u}z+2PzpG(1Q&EF~HWi3U84WsI4Jo9= +&rKk<U#f8y&B(DLAe5Av5^ep%3SBXp>=Ag*+1Gv8ivCod-&-X<DEdnOvtC#mgu9ra01Sx587^UVAaqG +2V`u$*WpB|chW5f^%iJ}F!yV{EQ&y8j3MD*u~IroO-d_$^zu%uPdMI$EOT>eV`avf>H;!HNj}z9W>st ++eOYH0}90g@z{;8vaatwDP`i?#z^Fz$0V~8lU3`p8j5pzkAvBPiNFQjlZiWOqdXxlauoya7BAW8(6$} +v7kZAU%yr-Fwv$O&#{_%KHu?*TgE_pE>qfbqo+mr2l%7zqoboy5B$X!Ulg(zWErQ^$qNb!+%&XAM@w~ +r2Yu3(#W&ENiH0WnndY9(D5q7cR#i~n$@}%|$5T>L`18*{&oM6N=jU^q&Bj-(SRvZ=mtTG<`W?tZP0< +3pF*cyDf-D4i6!QT*XwL`!X6JRk(0pS<fxA7cGR9h^J+Gp+@N4+L^Uga)l65Aj_zxH`V0e0ZdQMteS~ +c~fq8^@o_E|oD{CJ+2n8?e@%J^fCJ;on>^ihEi=J&uCG+->iIHA&kISgn(e+oXtScp7!xFY$-F983G{ +KMx8>Sc@qS;jznMxXS=f_R|+tMjjsBS$*p<Kvfre~8yt)4YG!)~#D#rZ&vUk1trTfK!{`c)$DZyM>JK +!3Q4*egN*k6?LTYm0BO554?wY4&*x21=<7Jv}n&%58C$pVx#uFZ`(7F1E0JR<_QZ6dvxvEwPGCvc`I$ +17Z(@ff=S-HcW-{%ZMSiftpzT?18qYKph1Pkv;e?UYTD>q_dh+Gzf)?a@mZEJFh0Lj7{RwaGM69Q`#Q +h)^UsH=zHfN_Va=K~yriV${OZ-K`O>9Jf4=wLdwF(twkUU+R|;MN4QLmj6S#qn#<XA!0^>0F9%D4x3f +3bqkAxd!B-9;fY2qRBFMowH`mO6fh)ivFU0z<^*MIucpRNJV<m6-lXwxbUx8Hs{pFe-Ts0WN0>e`M<2 +k-^{>Y6X+1~Abc&_>W68n<_h+1j}W=FjXmuD_vef&Yn@)-PGI<P)^h*w|RUXwf2351;|~j~O$DPnj}B +xT6k0g9@NQo%doc2KgF%4?JOlhd`T_w;)p?JoP1i4h#$&zGcgnhcSovJ@|t+0pKO9H^U8hVa?fYw~O{ +05fQ=7W-}i+aG<CM_#;kZI-24wwQZ;-_z3+0_zL|o>P}tXAe^w>cBA_j0)L`=#qi<7dr=vdpgq6)?z@ +5pln>SoseK3<Qd3iTTwI*st>>P5PT-HSMw!D7ywMKO|G*uxDfkDnHrfH&0NMo7MITJKU!!zN{QdpSRP +WF3*s%jQ4`R>9=SJ~IzFPT5Emr{Mi@=BKmXmCOQ^le^P<?aaH^BoKqfo|b9CbYr{V2*5{r_vPy~ba8< +rOgo{_~&z6!B2jR8A80Z8K<$Ttv8UC%1=~yzg<N`!_;<gZzX3pW5R}yraFr1TLs=v{~X)Axq4gH&67f +)YirLhQ0>;t@0t-0oo<%1bl)zK%cCYhhRs#s3X(|#&e<<Ul^j_^twUZ-S}&HRm;O#-Ue=<3p|9j@X$j +Kaq6?gIIVqvn+k}7eg=IJ9`Fz5L;&Cpx}JIF8LTm`^YHNat+>1KSLJ^y?-J0U_KQu?f$~NlL}Ry@CxE +9g);6)GFYrg*s4@ihb-?%FC6qbZ&>9@(|Lx`80Dmq2qmO7j#x|w}Cf3-ePoK^ofBbR5-`a9l0pY+);B +~xX3;^!x{s_snPyZXZ3;eb7UmAN>f-f-!fev-OAN>dVI*dnJI#9N+zy3OZ;)y2&KdWsR0J_z+dB{z82 +hXVc2h?Z2;OXi4@8IsnUpp>pWf-k&(^8!P)~#D7;)5=P2W`L?yoJ6Kw5Yg~eEPTF$?w<U4_v5y3I3<? +yF{ITwM2`$=Be)Ap>E)YdQkV|P-p0iu$O>6D9{4jDUaXN&$NiYcKt`4OSM!dknbV?;2ryN0Pq&fojZ4 +meivnc_6mLn{%8lpkI(&qxC{KX>z~w5xYvI`1IA9sFX;ck2N;hqcA|_i=S10~9@O<+)C1np=cBJhKSp +y3v9Cci|IxS${K2~|@p*InuI-E9udZ95oIxXao%rY)$p{kF6~@&re=zQNppN9`|1cmAoO}2~RQK>=8e +HC=KfjLo@N1*z&p*M~=o;B1+aGLtDyB{`*&k%;8l|tvw^%XD{|Nkx6qC!QPBA?d(?>ClirGUkM=NHLV +shEk!EE^5P5}EI56<`aDB#6fkQK4sN3e(BVx##Y-m#<7cs;PW2YLCE>^qpo{8)>{GJ)j%Nb2)(3>(MJ +Aai$O8a_qZU)FM7@D1nDpUHb{SPRCU!X1^IPydMX&wdiPw1fj_?dIj>btld3?x!|gi~fvc&Y!8jt)hP +E4E0M#Nj`s;WZNu~f$<H)5Q1JLZ=9WbO5P{KS}6AUOv+mBC+9goaE|lQJ4F6Jwvc~!>cclsp0(QjboH +!>x_++6{MQK1Q=fa7`pvhHF!oHb--vxK?5|)=9BZ+kUf}%TPdBvJ+XMad(xppNAAR)EB;Wwq3G)YxkL +cGi7NM_(EDJdWez4=2Ce`m3Vvh&=omkVx{tnjUvB&mn`C|@1bI=@`FJ!6nd(3l@FXU*Hi8|+j+@yW5U +v}^J@_rxo%C^)rwRF+oIopUIME=^d4~@?}piD4+{p<8m{(>V(tYfZJ)&OV!i}REp<bBh`Z{&Sn_56UA +AF)4#ea4Ywe%g>HdtgkV`D-f4xk=h{7^r{9z`zCL&)aL~i8U~+2V+fM%^xuH2YKHU`)z_BkH~v%*y8~ +|Vvh=Yo!BRwx>rQqt>%w$oaXyEg@uJ#+Wl@-o`nh7`jy2IVl5HtxmZWk=8wHs>>npL;zzTxM}xgS>@k +5KgWr|=2Q`1lKia+0#{2KU1<xjBe_}&{ydHbu><@g&xrR7^ACnsK<7j2iG(_RYM*DOkf0`$yu3ft}Ns +9;a2A{*kgZ(zFsbYTtYr?NTp7*PJhClqmxs`Akbx7W8Lz}>Ur#64c6$=+G%qc1=%F^z=0tc*{pe*oUe +I0vE|4{b(u+N0`Q1B!6n6S6uQ1+J=&5_};rI`W;!H);)_r4qF-*_*$@g6Yhzv7|MV!sP}MOf3s+PKP( +SQp3s3ic+%9+#4TVcJ-c*EkJ7j@s9-{vne&ozB#!o_Z<?Z4vW*$mgINxS$MRe!L-5>>Fag3hSybDQnx +$DEkX&6WAZYUSY8%(p?64w0$)8ZngZ6w)MaR59Cn)pQY{(U|xW^9m)iK56a?#^acO$kp!_%fc5E3%KG +|qnl^!bCYQ2LR;1v7NAM%%JDuS8rH1Waou8o{{(tRVdt6mj_P;2TWSTT;>12T<rsHexeV%*YbM_HM1& +1;66_%O^C^tcrhog=X<s%>Dt1Qb0h-i+XA*Q6$keXTAl$K7`q!T4gRz8@tu`&DH-&zL`p_5sCe)FIE^ +Etrfp0n3JYp?ZPuYLAGpTA+9rD5$3`E;$C(V^WhxHT56)y;%4<X@^aHfaBae@K7+{Q1eNR;?O}wITG! +aU5P;?X4TcaUd@ckMKKeSijvg^?RN8A$e>dYd?tp=wnZtHf{W4k3E)&d|0?}p^JNnyJ-6m|4|l@A1I4 +RyJ5}g^e2adr#^WPbm9tm%!sM4mHilfv?-Y9z??4f7~?C@#rj<Om9;Q$Zg4JMTbvlItvMV#bNs#U<uU +hrd0d`949WkX{fGV=dGv=49s053IBwn*Ytw;1AUJQ{JU70>F?m?vVI|HF^5*P`zX#u5JubL?MvS`_z> +~+4DSd+#OD6=stT`GCUd8{BQYt-r_MC$Ek)NNRHG1^u*9jrPapT6hdEf;L7Pz?!FZMy6<8S1@x3&@aa +ivYhhJC_$?}BXosQ=fkTel&g_ih}BwjS#;SX%-=EBL?z54iVzwOsR+bK}`@Z*3)XkL#X)`~iR9Khg&O +;|r`MV%|7DKHkm0;ut1Qoapi$@xZH*crxJSkUe<-J8>~1BV#Pcat`=N_+U52{MU-9B9K?W`$g&L>3gx +pgE{&kLxu!#F0j4^cDcS@fPDAl&|4$o{RUfg0r>ex=&K0g^HaXMM>ek2BD@?w_JO_~@*8uxD1(?w$GQ +gUN5eV-&H>^AUWa2rULbBGX5u(sdF7RbzMod3aP_~iurPV`>eWNNm>cIA$1ry6*kG3~U4jD!3~<Nh<^ +8<+5T1u}<KYFaORT7<z%4Ob{{-4DeWZ!_Gh@b#hp<1)$)n9j%)#2ih!G>)8Z+tzo{J56;N^JHU&fjW` +t5KJD}Dy;diq!9uo~th&>m%HXS>*dYgN6xBF-1`8t)r1`Ou+5>wYF}mp;+~ta0)GhsNRgz?(O34z66e +(#;hkHe$}nt113M+Ae*h<Jn)7CA?qH2S?rW>XJAHlrgMvVE(DHveH{8_)BTm-~Ug^fg;Wz_TfC2mzSg +bodRCW_0{E1erdyJO~QZSf%<hVe7kD97*XI<hg|mTEgsi;X1C$9yY<)k>W(Y-U-=o&?M7a8oL~<luJ# +?sWACD(q8Cd_O8yNPb$adEwM*8mTXz}ml$Dj8fj+V}Y}nxbAI=F~vt~_vadC0g#*G`@`SffU&NJxrdk +wG0dfKjCyD-oCE%Z?h@^=pP5MyJM*G&+E4EnHc9h3w9_3}^Lt}4Cj@m!Q?^x-^z#?vXpvIjq}i<!_re +HYvs_4UjAV;|aJq=mZX#Y7E#!Q@kQF>vKq|7C{1hGQFI6Y3F;)qB3<;LD}K#aVT}Valc03FAkMUolp| +ScO2W^bCv(YpocQ<JeLDk?x=J<6R%;EW}{T&(-yTu{g$F82e$|hjFI~aVPpP=u_di5x1~m41@mSmZcN +jJ{q<!zpcyZU>*TuHsl}96WSne4eFm~_i_C#^!L!$LthhpU5q!%R?Kz#z?dTr#)0!UY}hcj&W#v`e5l +^DI=HRCcH>F(-O+EyxB+9Q>1q938iPIx2G;{$mM>rK`h&Pe1nX)zmnbh+`r-$7mAiib^ptv^8*g?i@( +=8Si(6Qe!}SB6EycDuUk1OZKIHNfW2jjHm;O0#{!#W2>rqZ|E(Z=A=<*bC8t3vKyGw!<kM?udf3BSTy +WsvE&*Al3z3Z#0s$5^qTaSadjXoF72jXeNvEbim%Nxo+p6|`Sw<ZbuLOY4{(H>!(fPEt_gYAE~;q{2q +IBx6*d4aVeyeG8Tm`}oMG0sNYy=Tv!%dW+i-=r)i91dUOONZ}A4)2^MmyQ<r{}5jjUu0ysyW11)xE6v +t61$&pzqLj_+-Def4#3^k8vAfpV*G@At%dpssY55+Y3)~+&Wv>TS-auVnUU@;YfXGsa!yWK=ID$mk&` +ns#^=~kdD-JdPD*-OW^zuq%s@(ZR!-KK+-@mZnIbtSv->0(6`7elJ}@RNCwFLCc1|E`yd6cmlPKA|X= +J38o1K^AzJ28<_NLTb2Uq5#rQ~G?a;IGS4FAbao0tbw(oz$%1Cs(7X=BrJ>c4FGbszU-doYlMv`J|hk +s0{Yj!MpnA3rH;Tv~QiWL_X91z#g!M~z9&$VrQmR*$P({5|m=SEp|ExNNLekNTU2&sGnQpE5BfF(x)P +en7vZq)UHX|NQ^=8IAD!pl3}<47s1=lIO`DQbW#@2-=y(&@h(Hrm#0zGo_u<SsA1}sAMT?l^x1n<s;> +!(nyU^b@lh^1T{~6S}jxessB{JRvT*(T4$}VcAqw0%hmF=dD=7DDy>|r(q7eW(|@ZE(_hu!*3an84Pw +kSo;IqCGsZVY&}e1$FngO*%~j?m^Q_sCXYhyl626A-;V1abVujctj)>1hs=uYR$$HV+YxT6_>=AalJy +$X(*%|9ha<)2E&il@1&N;{DIu^J9(?`O|ZKNY%#33mpkIW#;NC|m^d`p_rmeinQXdiY&dsP3o{+%9Sb +Tl>_`-~XAl@AejSbeSj_I~?a`?!6^ZX%N<RwD2roiI{B){+YH3VD+pA;-uW;8!CWPY2K>x`aMWSJ6`1 +mPN2=)`d}KFv<F`1U87>&ys<k6WC-{zzW$?_AD!A8`u_B#rCrU>?2mgzF@WN2BkT0`vdhR?YCOIR;C@ +${-s^inBGgz(5LJ3^u_vWeT)8*9%lT;xL|~ux0v^sL(LR3V6HQFo1dEBn3NCTC48Eg30$ibH~Tezj6V +Umw$qw!kCAy2_pZPKQ7-)2NNbr;A5k}|2h>u%Ex&`e=h3_~@5U+Dcq~ukPw^Fe9rugLVxb87!>#_-eO +9uSWlgpowYFKitT(M1>$DYON87{g#dfLPN>VvhelEkD>CRkdg|o@o=e*;5;M6+!(u6p`+#5+W=}uH)l +V0RrGMTIfUhXBorpfeA^gFtfon~W{0%ftXU%8-!sLj=uAZO8PcQC=W8n51?-lvXG18SB!O`WY4s!ype +sc)%gRYl`kiWbnav{~9pkTqK$r9Y&X=o|F2`hWBmMk}M85oL5XdKkK48L`Iij6@^JNH#K!Y~v5cbmI} +@F{98}0us5-c-h!(>^BY=M~tIJjq$lr3-TFiHZ@zCipkA;&2WAzkKi479RCY{jla*2gN$C_q2fjnEqa +JPB2hdf^2BuUxOhU8ien(R&Hb(X-C-t1`5RfSt-G!9)@*B$^}Myk+HSpWeQSl;ci02$adxHssohMrl@ +T&tX2Dz)$r|~k^f~>Ud!1>{lTL;6o`ah(6vEuyK-!SLBtWvrGa%EO$fx8qxj+<Z(KtGbE}+lSE%Y!wM +nl;x>{ix+1zD8RO-WRWlz%Fxl=I4sYNX56`_z%@AJqBkV)a>&gLl+hv^3!1UeM9`My+|?{FP`YD#US- +Zry2jvX9zd+M{7?vCaVJG;ZbLzVoyz8A)c7YC46rQ-m@~*{K{*zEFbt*T!7_SN;ueE57p&k;CK&(4#a +NkePC#Tqn24L-Lf2fV;z>0>r~dNjs{79wn=5wQBt?;~rz8aX){}zt8`c{~iC|{2%y_`9JnI11_BhSza +S6<k!HRrq1n7N2iyQ@02;8J7-b<7uCHp<0g=^F=PP=&@8%}y~A!)S}KD9#{$Y!WtP%M8>)@eQeCO}Q2 +SW>PK(wjf|eD6mR0DL`Z3*SG&kBB?LlrdW27+#Msqt~&TkNHg(>=r5h6>xAP$I9d#@d|JIcN?QI3^`@ +&!2@$534NzK?X0NggIE$!1bXy3)mTC2h@mFcXk<1>44su>Y`L%6!FAd#Q11lA59})f($}8e<KgdC=_7 +GlAN_?8dUSyjyblAn<L5Tq>WF+vS_`m^>pxoR&_sV<5e9i0k0j4sw!&(whL^+R%115|Am2K2D#c%jgP +P4A``umeF#0f%;e|3uDb#Hk;0tu_9K=*0VD97CX;6D@0KhQ?ZnuN~{v6Bq&cQE0kiTR9Ua|R;Q{3>MZ +pMb(y+SEm14fkJZoAGpernwLERA_J}rHdt6(h6>A}SQ$1W?rauRqtkU=Dy5R@C8)Qr}{%90{p4A#H%{ +$EwrV2XM-yCQrnWN2gGuxbOK5EW4pE8%5rC<xTo9E1%c_&^bwutSbg}=4Gy+6r6!5{RG1k`D7-y(&4L +i%?4d{~?fAs>?G=~4O>RoFmwhP7AXl~+O9o2$LSQZ>;wXm4nzwSj;Pi}dxpNDwQ>DgtC&gP3^G=flNr +Er4^k(c5VRy^G#WyU-%w*K71RjbQyig6>jurJs_aJO_60UF9pKkD3WMR08;U5&GA(-dciI2o~?}T2O1 +ItNIvyyk4dk8*7bi=3#R*p9`4r7GEfqiq&F+_=~tG!u+@S@AALxkG6yruohT__7ipsc`MBHDtS_Fb$r +!z1@L|3AQ{M>ftlLKcCZgvxw1|9v$6|DajS~&;Y2-5rRg+-PN2E8fX<{Z)17pW{Hr`Hj{=UIl;`9{8R +|51S~=~U4o+7`bu1^=NpJ=`!<|$o17!$&T3no4=qz%4;UT^x_`4H{Bk5!gSr2ye1PP-ZXeU6JbUFtl= +?y@bT6&ST0eMbhsbJZP*-lo?d|<;OUHKUWSY8ZxP_6g?Z@OYuG&02JzDAUUkxphO-jx%sa+6!UCs>>~ +o&Z*7Fi+yc`6!;s)4>y%z;pRzK8+XfnS2f}<cs)|d>PoKVqVJE^D<t}U*s?Gm-$Zc7Ty57ImoMd4Pf# +~Udzt``ds8b5h}t&GZ8LYi8g>|k)ng>B)SSBRM2Eg^c1loP9y+w4;D#cxELi;MY_lk6GSdpzG<QWtmz +zaLVN?W)yCh+p8zsA9MC+~pYG4~SKBrA3Hzk&lc6$9Hk0A9m24y1$w=8jn$nUzWvq;o34jiRWs)2&(` +AO7AamtpIZYPGnR1T2GVZzFuD9#$db{4PxBq4PKTt~p1QY-O00;o{RI^ZdA#?7M$p8QVo&f+G0001RX +>c!Jc4cm4Z*nhWX>)XJX<{#QHZ(3}cxCLpd3+RA)-c?iPA5$ks#zMs5@@ASFrvY@BsOS@bW62#Br0gs +AZRe6pu|uuFd`&Y_e`2QJ;Tg1j?UufjN?2y`i!%ZfHRN~$ikKo6{EOBajB+214t6K)O*gk)tzQ>=6T< +LzJES`q^s)I-S4?)yXTxLzITJkVltVM;ZN61rg{_qS7`dr|5W%JI&t$*)8B{exuo9g-*d^lC6BCdR#q +*4xaxt&oaGNZ{`hj)`QSs&s=(vUM;>>2=HBUiZ297cuFA|za~XBKeB+`gzq)Ve<k+9=`1#~7;d-X|mC +4O?{r%*h&~?M)ui^Ujq!%WCMtOzFn<)JyBmd8g>wnSpjz`LuV12Q^mUvC3#otdcJ$?DvvRGP==~7dAQ +kuzh7#{w_(^{{GA3L7{v&pzmGMTLSV;a1g>`63fflw06UtvwGQ0#Ky^EtPsm##9KX3&k<^!pOHZZMn1 +rzg&Cl4%)qAlCxv|BJO4{AV`RCw=$ZtK^4P$#DJpkkKI=d-Az?oF>zvtEv`1AU^<Wd;_o3lyAZbJLg{ +^{J)B4GX)Dxe8xt?b&C1?d<|Ds@{BY_7^^7*t}`ykS9n#`imGzBr#XSSG2H=I>0<dFTDBZA-ip9$;%j +00<pud>efLcK|Nrn`s4eiApMB^H-)S!n7iATP=QyRB!;%dqomu}o&uo(NwoBolD;HAyZ0Ba2XJ4c!%M ++QUOA)^-R|<PvPW2ThfJ**w$P@8ET0~kTMI7B3W|OLCnoOH;U3ABWZ%n4$O}lr0N1MsiW?n*@$^W*^n +nlp&_F?C?`3AOGG$!8Wc%w}zT;{S#VcBKBTT%`?ne}h8pdEHfVn_21_*t7jGV6@6rNhVC)X)fQwp9u> +$l1)wDBoVuZT1PC_kDV!F9$Mv3eIR95|dr|5^IuJ8MLo#cP?xiY$r<!uW>o&i}S?!;$7n15<3j-7W!G +#AF*BzorJzt-hr3md~e?8{_sQj>LS<^BHJBmfOi>?Mfh2x+A*N(5`#Q2#-zMX)$YVuD$ZAzkLNf3@*X +j=<qTvC>7pQ=@#ZzK_tfY_90L|x<1%kaHe<!_`Pd#0YgVmUFr93V#5&Y3srD`$>O|;CH?}eoU(A0EYA +@G)IcFuy>F5t&D&GQhk<50fzY=)6&?q2;(;+C|GuZAEM!O!?<YVu_ys6KP#{7G+(pAtJj1NY4TRMy!# +>u*bXB*YSXQ3C+y2RcV>k)sb`(LHzv0Tmo^gu0!si9#oZx2mJUW3JZSjy>#HqTDrZTeZWj|Qnu8ch=k +4Q29%u$AvaE22>6HC4E+!y!3fEoNV66<Ay3Ihwyt7{@zMv-<i4HSQY~tMRS0#I8?=N^gsl<><xkkE+H +Bb=G=#T_F}&<h0_PPatu{G0jrU4$_jXx&&dh%vI=P+kNc5TpwEjw@*nvc2Ha>-Y+f?%N78rau}L_7Xo +T-9!$c~$lX^VG%Zqp3dBl^Oq+cN^+BE{Zo<6*U6$DXyf(};MG7x-Id#XifY)K%!5~cMR@@5O(*SrAu= +A05t|hpQO4ZX7aBc9B!6WNZKZYF~IuN*no;4S*-p?+q{#^~L4~)&jz2L%)_x2Fjcn{)YLwd7jrADb9b +p!Sq_DD(JC(^hEY0?hZE4d5r9~^6ZUlvO21Bso~9TBKsQYM*NU}qyW+k&-GM_T=Cm&D$K5>u4LE+=g9 +Hpt7mpw$fB@jq~{^rr}(k8yLB^1WFC?G@tQR1Qx8+%ueIrrcu&%qQFOI(5f2P^6wZt8Aarg#EGONVDc +kkvCk`eE^y@hpUGWZhG!212=^#2|=FB>&$D@9aA)1S8untX#<V9OM*Em**t_Eb`i4D9mfyhjLE}l*0@ +SATOgG%l$Hb&8*#i~gW3E1l&;ql_n2}MtBX~mJ03ZNi|_a;WM!>t9c0ey#C5C$ytqVt`F_B8y}GW$lv +OSv-1j^cn2(dD{tS0|#1Y_yzXydkoq)``V+GIDikX)4OqD#-e9ZJMWx9=L>cC95@=Qy4rrcBbl=)jo+ +>GOC@xFoFg6_yU#DTrk4>Ky^j8u9NhCHr92^KEjgul5a_?f~1_`SR~=(>}m?NF59%d0yML`_CkKoON3 +B0a1juhSFuBRKk9&P~Y3=#JG<Y_Yf!I@g<O254!?Yg5Oc)OF@T2%qOFg=q|1)9yAyW>1tu=OW$l6XUj +2*$G1(7kk2eQUc?M(yX6JrQwQLogdSifcqVU-(?6ifb{PMe18`b7>ON%QeUSc@c?+9rr|dIT-;(aAOt +|cBh<~YRR9>~R46Ael_!gAzq)Azje87~{VSG@%(3Z?o<p%Rf!$K*fSm5L0C@LB+fCH9UqD8&K7%T5SI +dXQFx77%J=6fxfOMp`AJ=JRmQXhon;eFX`9~OJ5-PUvGXLNcr{06vmF6TPdj@9D=6zEo_Hl)$;4*oPP +?wJBR-T?FDNRZ6Vp8BM<Hh0O1oE~DPk0i(L~`If9isuyq!JQ?)_{T_F8u=bT7`1+rGcpxiu+QYDUwQL +5WCcjuVXbSElJot$niHCy<m*~AsaR6tWefXxKti9Skd3HqGze1r=cR~A&!gY+{?Q;1}oPDND=A)u6be +xwkFhBDqw(LNZ|#9#{f$$1CVCTh+`1BI01Q=Ed*QxsG$^~p%Q>$Rn{QwkGz_HlJLk&sf0)7UJ=718&V +K**L?{{`cfD|MM1u7jm#a;QiZy9NohzH>h|HD`y~K<Uau!oVM8Do;*U&Q0>n_8<c};#(ng5v9qjVc!> +G$ceaem`PUs--K^VL3R-7WFo`|g;{1V%ldE5s8-62C=*Qs!;rNhmqa3d*)U|J)Uz*kp@;cM?|w$>JyO +(p6im^C2B5y$3~L;{%Gi*Ti2<q{h}bm#6`F}k`SQx>WV(&RKrZ<O4vRbOis*auKPgt+6!DYO{saX>+Z +wKovD%sK66O)!#8(X+V0+W{9$p;|fm{O1>d<o6P5RD&HT@5c)M3Kdj@<uxS|@Hr(F1+W}4fH*ATJL=< +hnvNj|D-{Jd1XO^nNi>4W6wX`8P#PDUX76TuY{6S#!Bc6$p~NLr;&G$Iti%$T7b$^A1HhvlkwKyQ$!T +NGDpCws@5WxA0i^0@Yg~nFZ!yisN@G3_!i%>Elp~o3VDQ96y`yfh(gs@t1bn81NFlNaCT26vjyfaD6i +d(@?Xa|wJ4XQjG0!z2aD@+ugEMmP*Xn&qIC;>}P07@cVgOV|6ZpipIDt1v<xNuLS*!%=ss>;yjwE|@# +}B?ljQR>D<Tdz|Hr>b00*4$aNvb&ZrjO}T-#&jtgw!^AJ_FB^-sZP7#!?2(OMypUq|BBIaH4KbBJA~+ +)c~jdLgCqFzz`oFhuHyyn(v1>%=Jey_gN7q!R~q+Cf1Kkh(8RJUoA-Ed)^1QifFs~)ET(D*uRPjVPcT +v9m$=!?=oQihDnW$_KLnnT@NH3Z;~3@?9n|SHS9L%zk$l<BMT;BYhKpPr3G)^5s~eXLT$pc4X`Mq)$d +ILs%IL7Y-{QyoTzAx2~jZQ>7+dJhwuQ1@e2O5SKTm?<8y%Q65P+3>h)Ad7V-mIA?H<rOVvs7YEc?6cq +ym)1|)CTkk_D11QErH>quPo0+I&$abE9D!P^!@RHcZZ79qEVyyZgVw+in>>f~bpi#sLuK8z#aQ0oBqy +oF7Lv(zHEXHCHS)mKxaBodLF5Vj!IN`|&m)ez=Fj>&mn({61@g?pPkOi~(QADD3;d;<xAWQjF4<uw4` +g?O<9W>vEJ!-ZM?u;jdxxLYT(Pz~|9bf{Nd8lTIzfLT^rb!`r2FedU7DFQoO?FM+<fGcmAgq)wB?Ii| +c9^&M7^%N$8knkSN#l}fSPA_aBz}G0F-G3kPoq+vspt<m~Mu}yX-Dox;H~7Y<wAV(fFJD57q&x0~6hO +gq;2CCsk2p4uz?T$~_*tm7Ulk|P;|d@_cBqRkA#PYsSMP#5SiZur4aLQC>wr~g7PBB@XJDOr&kV$PMR +tj8Xu#<YkC0exJ>AW*Np8nk;6UY3thyDcwskAek$_E|aU;G51Z(}%RM<=fMK*by#ER^!ma=6&kJ*N(- +sx1g4PW(A4M~BK3gt;^F3K_k(Xl5T7uJ~*`xvKbOJMyfL8x8j6z3tQ4&027seDg}Y<n>Z8#}S108wMr +hn(?+JO<ES4@~5`=<D>lQ~ngWR)E2M>Zt+5gk`Y33d%<YZkBTTgu3xJRVb&$sx<h$cV%*g(&R+ss`OJ +*KP5Fdi2=~}$b}Wa54kJcU2?N_EifyHf1T<#FpEG1=s~FKQa{02MRvg`m4>CPSZX&Qa-ps%r_qxSJSp +IESfyO$w>T$fx#$3--q=Qfv6rAEA(o*&0q{*8Y@$v-d%wVXOFqo-N|*!rd&c-D4vv3<F@7#z;Q0MH9~ +23786$x2qfwotQ8hY&Y7ehaPEpz^O55i2Dch2KdMoz14g0)P-Y(Q_6YAP>S^;peN?@zi`M5!2@=JoA1 +Gl(xvU}wkE{=uTB*A+U!2Pis%(PNY^{ZLH1Wv$?K3xcRI^H$me6dXF2F^vpws_%VOzA=BzOumj)l7iG +p@?iw%pw|?slBdNO~4@|rcxh{-vX1Q4OiPCmwHD$5jQJpOh|pg)h58AS)a%@o0|BZVAjtUm`!hu<h*H +WJu3J#tGh|?H%aBKn~{kQTN@#Zdd7=DZGE<ws7SySDX}4!pZ$A$`3Zly%6OStKNd0UlO%CjpfxEx(kv +<4ashMMBz+g~3d}kOGHYKVLWwv|k2jmV5y|2MsWaj@3TzZ0PN}iqs(d=p$C9^6OWR8QY^2$zoYH|SS5 +6Jc)?(PlDJ@B`9=cC&z}kI!Ti{<%A8je3Q*NKhR6TRi^{^(gRo!z7&332XOd@FX0pJ=2aRaadrO*w@{ +eIO=Fi9Uy#QUz5*C08pfBld2?+PhrpVW6qYCHu<V5ig=y*c6^W>*j23fo}w(k#JfIx>f}RQE~x<aa*= +S{G~M1Lfq%r$;D_c6IalC2ozEc=<yv??fDJ<FE@mtFD9Y6jOIvS56f+KLMq3b|&<xFM3{wqWAf5A2#M +fb!AW;Hk&DIuF4Xi?dVPT5*ySf-^|;>{gjbEOop{-ge?&G*4NiX3WUa{-G%d!w<eWAWEpA%7r<X2UkX +26=np>xgur@e0y5b<q_7txuij$BRmTj9H%i?xZjj>L4)@XJ$V}xGBZJUfl>(wbp7w!{c}+|j3HxrI2+ +R-gAe&LP^`PznnG>h_J3lZ;<=p^VH>*`x<rTcjig8FDqp)r!6dn+HWfJmAMdVe1bcAH3yg)bb3nxsdk +lXEZf4gD?wya)`RiQi(T>xMdYFPU)O8T?9rM{z*(w|gSItLJ_U8*^W!tl!JQbZIacjL-5slG?2f3SYt +J?cx)J1M6ddE;DQyydAask?W>1{k64KaG07ek4vpi|M0}a9LXHnguzwkRGtBuZ)dt*67s;$uJYf6u^W +Sv#=P&?=>(Bzn()#U^t0#`w=btArlF+mZ2^f8=n*@GPkFu0NV;!)u(}HLzb=>mS~UqFbWY2R*=C8GFU ++dD;RmmjykaghECN`51m8}5houV>RV6?QeP+M4b`vC>U#AWSH9_Dh@9(yU}Hz$(2?qVNP1`GaK0~6G{ +qM#>hUS%s!3%w(gfujI%DVjyY7z5al|b|{p={J9hLxO7qgSa$QT}z!t-2}2(M#{0bCr#q29pd>Y_1mB +5))thW1vGylANVPzffnf4Yd(f)yGH>kLefukTyGyY<Pbk}{ync0X&*>qI4FgP*HXA>+#l8T(g0>ti4K +gf~Cwo1K+Gf|w?!c-UN*mLigF1XU%Aq|gB&SPHL=T;gUVO7i{w@|8Aks8=o#YEk*(bARm-W}Wb|y?%F +_@Pk97cLRofAI|6!_4B)+x~VH|B5U>o{$3*GsFFDq-&J~0o#MCjNI9+1-%>Gn?`4fXw_3Ht3)A9+VYm +-HnJ%(zUUp3EJE{S~-Qi&;e0@EhoMT!V-ntKYh1tiTdW7iZ#NR`cUZXi5+Yh|hxcP(1O{HI#mjYJKQK +L`l2uAH{(9e@gsaweDT`tzrgaGmP>CGUK(2U?7UV=*rd5%OsArcA`o*AF;xd7PeFGu4l(r&yCvM6)2o +Knt5F#jN&^?e(i!qe>9As=grjvYW*<Xk;~KfK7vB?%upN_gm$pM8qJvIv3YK7<Nfoxr6M(vdVj+m_d< +z742YoiI8ML9fHFb~SFUPfzOl27*oCe2YQOKo#|F^|rHoPeYEoQ7Ok-v?LC4g-B^7<X=ksY%#DiBoL5 +36of3;OU0;F-6knJb+u3@Mj}7X`(41d6Z<y>IrrWK-aSjL8Wr!W?jYVh`UxlYaXH8zS?pS*UV{Daot; +%EguZX6Z7SyR6}v*|ACM<Y<sC#dPFg|YeX7W8Qa+m~E$uAzSw^-3IUM5x3Ox*N>@L)<fe3273o`Z2%3 +l|ljJ1r#S{%SAfB<4pYoydZOGZPlm|rcAP@5g`zTSy_-K)cfy#jmk=TV5cirH>Mq$tJ2UGoM-it^EhN +O25N7>X2Aa33SHTmf@wBbr)|N9jV{2Nmwt018ardPJG<v;sJLtNn5i_v_k(x@1Yaj1+Kwz-WcYuI74J +qwbjfE~;u^#;igeyb$Udg}Pmn8e>d3&c8SBKr!n8A+DIDl@lZ51A1m8386nRnC;Jz;9ciqHoQ*L-UYV +1!doy#&hnzH=5aRwBL^&|N2p7x@IqaOfh>(hrAAzs+XK_6<(yy6e6ex?DhGFC0__^={l?%k>||d!%_n +%8h(*1)Okt37r$M5#)Jq44^yUZ-Pxm5`zVQxtc*=%!_vvJ%+y-Ks$aZ@ov&`zl_v1Q+8di0(JG1(>*& +ur$EoX&|HAg4n*^wJSB}X)y*f%*#?Y-M9@(d)q(3?0**MNZ1>#^CY0f0bG($cE)(*jBQ4heWUx25VRz +{xnaBiaGo3U;nKs;(Ik>t*y_*gC!2%tG)@6YpUlHSb9Dckqz&l)ac8E@t0ap0fEG2dtv<#l$%*xu<yP +ky5eOV};h%#72>%{&s=M<Zcd3A`z}#vb4rJ(L$YQtUB6Pl!b@%S`i+)?T2#eV+#l)*6s)VL)<b@g<-u +#SvENxGXtBz`eh4y$^|^z)IziAR%o4CPL`qGoW6+Xx^q;UsMiF1QEDhR7jT(}>qh*X7~@KvBfLK`Jic +H9!?^H1R=xHFA}iQ8sn9cyo$%m+>n9BEe^6%O2QQ>}q4Uxbgz|2nxkzFo#a$jC)rgu;0>9Ux{@F`Z6J +VuxSiEV4Hy!<Ncqk5iE?Xs_Z6CLI)mbD(2fE>}!&h?#7VG9GhqQRRkP2$4MUiAz*xTi2#gd<SVJ{W~4 +th`2-$gE|S1tpf^6AB0t3V$2cGPC!FRn(|+o6rblM#@?YKk}#y98fi-sIXW&2GG0Y`jbcv@8@X=&G0% +E~^+2UTBIG4d5|JiI3d}Jk5$JKK4{D9tawTffqSnAX4JZJK|$eA7UjuF#|#(1dq~?VJUC}jX|^<`j{| +q^bi;Rgy3F|6@=gp<T>3PPnM{g?TCMFF#|%q8lZ^5*gURPezphoQ&aGv5|vDJ<bDSdyZ(Vdr5c1%O8% +un=!ZDzPuh{giy|ANK58fZ<-s!K0QPv8)2OfMBK4t|1XyC(!U3#xERtVX%_+R@z_scGVqTou6`_XJQz +7Hkm@QjPwZ}-Zmad)>;%ol{f!6+f!97v`g)|TQu!#4Dju6%72I55T{P`wnRLl}tKS>X-D!?4q##=-fe +^lxIChtfX@+kf0zz}r;Dt*ra8w8;Kn*!8j-<RbL9$1|wDhJPa!uMrqW5wPkvpf=hZSqi2*nBXpDz&A^ +h1(Vj-BXN(T8Ptm_8tP8LgCpR5wC8D&CAg0K*n=4Lw1hqEC)BI$hxq@=c?D*hsLL>Y$)&jw9o-LO*w6 +rt;*@7z(;EEDC}1cu=)Fu#(j;OwhQl)k8y^*>>_O^=o^%oJ7*FHnq7W566d2rP$7^z5Xh4XvTuS!IiQ +|?gyiy)OF%}iTY{Kt^$_*The_DK8_HgeWuaqpaO>TI`py4&*wAmLBRiL;zJSl}mM6zRN`*3G^~`|4r4 +RL+3KB+AK*F+V?Gm#{5znfm7%Oy+(&0P#wBneucT+0P)$iRv^79VB@I$?PDo3cn%s~Oto{3roDLer=b +Bh$7$eIB2aGqyBvS#m*noC7-Yc3w=d{Tj1Zjl*P;3)a2f6`FDnu1D-k?PdUxFTf&%25C?z~%YaJ6P1u +RU)IPDS!BK-ovCDNongKuF#v;26O?Brq#}LVphJJ1vGR3-n>pfYs0A>iaf&*#3I?S--fBb&KMl$lniW +zb0NN*R#B)k0UAp-`;>;H3glKKeP<wwicEWj7s{eN3yHDXHsFC;2IV-X(ykkHex!P1MjR+xpu6cU+AY +0emLlJ%F1nsJ1nXBjAK_c$rdvrDt8<vKLNyv7<T+EY=V|JcL%5C0r<j!TEEA_Nx##VX1lk3K6E??4^{ +?sie%uVVfTu5meiX_n$^%&@tw(+IYlD(qr^hJSH;|<5PoQK*J7l?0Uwkhfv{`?-QwOx4cR<UR%B^iX> +A3v+c(F9r<fB<);NYh8B+M#h1-kMMDD^1T41ID)!SnraBRty#RTiqFvuNQjRc1OTm`zEtRh@RV$+T%a +>FchHY3_zhg`Z`Y$FiQt=2??4D_Z-h&&RWVJOzH*mIHvO<yX^urfnLBFD|(f&ysfSq&<4=jj%`Ge4Or +|huYNFA2afz5>7plgLOV?B%!H-`dN-~s;n-WN?S1%R%}lWQUmKvlguW6*n0CM#0?H7Tv+BP_*G|qiF1 +lH0Wbv?Sd0~~gdc4*>sQve3QYkUB;NxmyVd3JyMZsTM7AW{wnJUIoLg~3pF}ZiH!ZhRbGVkDsQn}x5B +_s@(h=+$)DA&=rKIVbhw5E4Re868pE#CC&}NBA7Nr)CE1wRIA|7ZgOqOP7!$9OCVx5uA>j7EJk9*65L +<g#a&8I+J+NBZ;x~KzTs}0+X7>`PW4fU2-oLRr7TC59E(FgfA@cfG)wZ(cpBo0Y7HMCfB;f`C?STi$t +vrFK9h;d)3JFag-#pp|rkFUVc<^0TdR2$8}!d<wsW_VC$es4T+$2{MckK>E1Rx~$(rU23Cj!t-zYPMr +%0j|kj?>?I^yfn)fUg1RBy+pl8VKG~6D`wM~nCxS#^NVx(irJ@rc1U8;S1W|j5yW%lPe{J-oYvxS5wK +Rx?i&Q921$hl=D(~ZgBA7r-95rHuR>N<bO!I0UlSvpY!ZS$#XFEW#vnfTyMRM_*Jo+bJCNrM!@IR|&C +{mx6_0fXfTquU@&?qbPJj`ko?CtXaegqqnNQvx-EkKrvpLBk+5J#m?dmf&yoIG@cP9JGi)l)yV8Rri< +vl+l;627!bWaQNnUGxv@vq5_BdJ3Hpa2j9Fk62{HjIhRyd%J*73Z|P>XhAiodu(xyiSVDwJ{OK)=-to +%y4-!LkF?D(e56-B1`)ML~u(3^S9UmFQ%|%Eg71{13Vtgo5VhL->_o7q&G>82a_esC#>jOn4ziyK5Hw +cdqYQLtH+%qPsbbg(lhcD#ccv65MXf?Fn513i_mw;12bD}X%Y2~Sl6rmQO^ZXGD}07w54!ek!X{)uqn +~bB@2nYGjZ*6*>w}9no-FL9H}?5mY<b=09?D5?e((#Ua}XtF>WB@mV1Rd3!i(X{{cBy>93L}Dg7(u(d +x96I1=7$CDyel2@TjRu$3}JHXx?=Xtu3G%qX)bVSOU&;N}@ZunAI;wfz>cW?idt^3HXu<wwPwb|JVAn +~J8(v-LLlCMB9BU#>*c<T1+0<iHQT$S0$;;AI_3yFK~}7T^3$Y80Wbu(zd92qA<i?S;|xl&ecy1IbB& +CzY=TlrPUH?McGsuT!;3s3`CtR3fJ9TDcOPC(l))L**IJ<Q3TVXys&z5E=_G($``F)DXBHS{bSpcwx1 +3ysTB&+&fgu!KZ9``g*9AZRE^=oPs6@o4?9fVHMeaEg2FLOjCqVGF0nD1>Y7Vx5<Mu4SQfUfU8(<A=r +OgT_=;I82SnEyiF;InJX0cOd+(Azlm4iD5MIkCQgHszCe{Ut!5f@W4Lx3WSK@;Y(|z(K96UyLzZD$4r +IBMvZNYW{z+McP#SM+C}gvr(-luao)F@ep?*{&?go|^b}E{PRihd}S;5EgK4j6YCq}`B26Pw>WQD!sJ +>h`O9}Yl6JK$o6zbRbF2CQ=>azd+!|G5Z!8+>eT-hs#*v-<jUWc+kga=T~VQDim=5j2;V%KHHAUW$gw +%8VY9Tp@up-CLNY1m^b@W|=?=3iu<l&no@)mG;P7ySgTqt1JIZV|PTaK`cM=7;x3!`w|($?Dww0lcnV +2SO==EJK)tP@Jh2v2yJ>xbTtfeQz>o>b_G__O4hN~-(XeYjDF;Q=HtoA=9dJ-<aad@2QWcmnNLw`87I +}WPpPe?*p}itZPHv&!2<raAIs{Ft=o`FXG_$b@u!iELN+|RrkqBF$`;_S>|~kA8Lc_vbxuL5uf}dQCG +eUCT@GhP$C^z|gEGo|)F4LQaM@3jNmP%O2-*y5%p?j=_etCW7VV@C%!?1WJ&@BXO$Z5cUZ+_9Gi>p%* +KxE}DMh>>Wf$AIp&=4)-QlH?ykaAZmU)QUP@$*x*7Fnj8w?XfhSoX}RE~$ytQ?JE(ej%t3!z4|lR^C` +5c7>tQX4O^kPZ7A4)K~}Pp{I-(i04^5&%Y)!rp4#@k%2SVAiiY{;SbM1CVq_btA2gJ){RRl+!veNW0X +<B;Z7F@KWAxb^b?qvhiyd&JLhuphGK2D^RwO>uslS^tpL7P-`(Fnblw8furND1|tn21Q;PnpPb%!Q9D +I4Y(c$B=B;DQFyHU{kfl8a{81xHpSxmbIeT!rF7YEv;}6dR>eq3;nuyjpE>b(y`*q^IP|halIzb#+Ij +CIrM=~F<n9;0=?ejzmZSFKVM{n?1I+XrtRmURY5v70F%9Q#{<UVQ|Jy5Wo1n!d{FyGS9Bt0)OPh+yd_ +q{lln;j1UhHM2I#sMN}u=De9e7`Q?{oS$mBk8?y-u%9LUqYU|cpi{?W{pKSbByDrQ*yFDQeuY%b3>QJ +a8le*;=AmPY7TdyJyl*qF<QUEg!qxKP^&f)cZKha(on>Mz=S+2%ygCq^4WbYjZW)-jnQmIo(+SUdHo5 +vYmLiJx_K0C)R8kuQu^299Q8a$yni=Ne?zY1?jo)92=)6sWf7*VB#6?je;j5u^%c<(QJ~x(nS9M?GPm +<7GtQU-Idq<+rd$SK8BRWf6P6`KikxJ#61I@%QMkwzF0yH3d@SP(sx?qqQ)I)76rKaQ(re~qB@Hu-t` +h|FHC&1!RpV|zXxGrv^v%kmqU-}1w%<;54u~y)k8}{dlyX-L71?99NH`Z+iD!0zX`E*W({ytOlTK3%( +{xz)q1^j8>8qsh{A$?r8+@#zm>tD)krG$|*~7ZwQbxiFE(vkkC^)DyKh$+~4Uiv@o?*AwqmtuFbtxnm +98CWie0RW;zu;9lU1Hvsl$Yo{64jFv(hxy;tMM3UmshBpBC=y1SoT6MJ0-GCe|Y|%D}bpJf}fG;`GR` +F{^BN75_ux`w4%)I2NV<P6>7Jl$*)kiqe9GSs&F^1bO6zJwevJ#i{I9*d@5)bk?oYqw@Kw~QUs4ttVx +hV*fKJy@l-OjyNvBb-f0|iwQWLh(hz>#Ydk+?Tq}(0SmWBCLf6n#qYIlBLoeNp!jEmxPa){CAd4po!D +i&x`iq31L^oa`_;<RQEd*bun>&SIE%Ae;Lh$h<ytx-Rrv3+n;LquOxex?AWg^A9kEQsOW*Z*gq5Yifm +RP9`3Dq@Qr{N?Cn?FxqktJ+J?*TmUH2orH+rEAe>yP3#@CaM;ai&Y7VZz$kk7SyOC3&C{ZL~Z6tY3Rf +?AwkWPXUWJ{UAt!9^J<#kP(mI>5sSV4IUJNB*TObz_Lk#Cp(+!IvUgpUkC0`<J94bZTZ%`jvPIW_ +PEt1|WqAI`H<JQ-FfVwp5wWna7t5OI(2?$^8-CigJy~%tiHbKdN+X{35AuArZk)k>HHldR+`7|l9AyW +q{08SS}FXbC*NmTT1@YK$8J>oB~#@+1)U^kpWiaXSz$BZ7X9*Q0Wv^SG0!rl%kvY<nxhNE|)dx5tW?< +>3(ZPUXz+sf`j%EFF@bRm2Ptev<u1qTHE^hBSfwR}kU;b`Pw9wz8myKB=U987{1THMElAW$9CrsYQJZ +wL}9<@=TX6+&<gkhV<$<JEr5w~9Z6n&3@Dd{gtn0>lQ6tMDRv{jer2LvIH@(k|No$0Y%^?U8btBn}C+ +P;{%EL(5@-*izi>B56s)f8jRs20vf@q!{rzE0l)YBe!?r@!lew(g(G2k<=fU<2EC6`WKqd$8L%Phx)- +%V?u@CSHS9cBlkLSDXbOY8?>bG4Y5g%uD9?>6gQ>Cn?_s4dStmgp>BCdF^6}p0Kp-nss|sisxj0MLW` +VQENs1{UmFjY1TGFrODQgg`(!V>rGGGECLo;EHeX*Cj@t&+2hw=07B6cE>8n$@vrxLIeBLLz&x*p_vj +Czp+C4>HXh&G@>l)WKX(!Bu#M<@tP}@2y;;@N$EYsiv?9zAC&l)1LK&mTPn`CLO1%ThBy+b<VNC;~{x +PW!gn_wNhp)Z8snKLL0)B~4nl5P1GA*dn3)_1`+skKBuhKIng3XeM)5Dhr|ExK~KPl{V#rUjgP5~~#5 +`r6BDS{7g*%iGm*G_nnQ|BT*W!Ad$C?_zx(pfVm5t6@W@0Q2*&A;=9IOC}0i&PwIIP^v+9OhQ%>cL;K +Zthm<0+6}g_!H<^zZzFsIJ0!9*HDBSuhdj;;AT|mrtsa7krqAlgX9iV<dIv#1jbW^j=}yY@uf$A*2MY +7u0UIq2O8bD8b^;vX>;Wtx;J$+n6usNcvQVFcbpkvtihj-$ljITg&RAk()u)Ilv>`BLiIP1~O_?7!w^ +iPpK2J^`l*kASr?Y3)TFiE!GsKKph!X?##)&jQJiNf;8Z>uWF^iCsO&$lo$pHst+LTNB4k|q$B1J8Lt +r!66rLTQJVy8vchnR<B8^3F@fqf+Qp1xPzvxMW^ay8Vjb~0%z@W^{Hx2atT)%h%EaToQj+e|&zrqV^( +tD}XzHj%nOt-nXUR@lwmB2|i$7V2GfDfU$!&->~e?CTw3d|uJCq(pqnN%X(~884m2w5o5vt?LLhm<@< +B&lSx{;`C1G_sJzn{}Q=q(=tLzauyM4rGKRm8k5A)OL|m5{jOMGqj!O!NWAeyMzq&Vo8KNiVn!TtFxq +W4P*R1c<X;~c1(#Jx*HV#WN{^x|9KOsmUS1P_`K=KBExfEp8Vs$W+6*5bi9ag%xIF$S<0B&0h;)#rJP +auj(a9g~HS<mj!4k6f0w#eLh}H%MzbA%r)%Kg?QyD#gM|z@i_KLt%k)uNzG;J{4rbr}Ei>b8hL?BRG6 +Uo?$lNnhfbx_&?+}7+AHtC7(rT$`tSBe}FCR7NV87x-#O-_iC`?@eC`V#68;U<z%P4#-9UQAa^eAPsE +lYEoXKS{o3Qx0FXNt>qen~?<0?nb^+_d=yMZ5~#w`QX>A72zVJYBS&=NxL2f;R(;L#g10uPZ|D5UiKL +dgP06$I06q$+cM<#IR8d<BhN=1UTAu+u6y$56OUN@l3}xkC?<joDoTU1+Yx>J+Ldc1p@AgiL<=&q2Wi +-hd@?!Fk;|m+SoJqjBiC>rSb3`MxF1qxq^uYV_-84klH;_v30>#W$T$CQiJp+V6V7XVcnEk3wG7#VmW +b|_6@t3v7_z(Es#jYe32&a{HH35^#QkXXs&}u<g7!|QnN5)r8_1QqWA0zMtTj!U`Kw{5svUzzjIWI%v +3M79a(`{HV4d0@@gapjTyUOq{yD7_xd%i9*dT;nc6rc@OJ$Q0861!zPus=FoD^98CQo=lhCjR@x#IZi +Qe@_>y=WzQc75_hBvn9{_6Ckikw`YW*dU;;PcEo6qZ^aH6JA{G1eTv8#%)>VOOaPsapgueS8go)))ey +_B^l%>^CcVZg&+O}U8~JpO2c>vcpTw(Ro0sI258jXRCQv#$8}dTa0^Z}<h)CpDr~&l>=8CLc--4ojuL +Z#0yW$k@h77jsQIr>^_MQP=1f|j8f*x>&2GscRR=CLiY>Y9mShm``RPTd5&(s?;@mUSskS{zx|Tu{WM +g+_Kw7>O@m7Y*xYPX<Klz)oro1*hX;go=<RaNa$k&`(LL{3MqtIhZh~`!Lc}^*3zd!OqC3yqgmhI1J7 +JDsbc}VpT`+85>L2W2JCdu~dAx?3<$9Ax`1}95PZLZ-*A$p?^{Q>n|fmZEigw5NsVIE!-BZW?-f6Pi7 +R1=xy)G|bT8Va=l@SazPz6~e(?Wz{oag~Pt<=tIe|5DBMFIhge0ye=@Q+({;f~NQxpHqE}e31HMo)%Y +~1YjN^DfJB~o1;DX^XR;xE!%{O4E4TjI*xsjJ9OX-xwB9ALB?4K=Hq(wbYKl4*81bz+Xr5^%2xIEJ-G +X=oqbs72UM0>xA*abs@xu(Zw%hT$#ML!-4>bSR7>q~om~8UlJp&gXjYDTtxk0nRIW^ZC>1gC>4CuH7V +BN9{FF&|lmJ@g=CpSvn$v1t<@DLW@D}Tp@thMNr}mC=`b=OXYJ!|CR=e?z6((zM#cgt-zlID<=g5WkH +6_aH+``v7{iv~95SrLA)rZF_2UtIPN}(-)85qLos3a6%rtN{vi~iu64~Y6dvB83TA$S=QQOj<h<uIx{ +l#|w~XpOF(MTryzjv75m_b`Pfp{`wbEdLYVe_xuoy3h%ntz(vvxPuaJ8;^=d#4Kt7dIGIY4&R^QDOl` +s3g7>si60MMmS5(&OrDlsYL=%68}o&YlG%N7r6Z>u>bxNvI#ivO?6bV%%h??`ff7l6R^V+Za?6BG15i +P=&E~Ugr+4hO<eKR30r%rEMY23jiDt@z-X<r5NHexRIT=m3>xbhdqdwV&o)PuK;3<4dh9_KM(=6fpZB +k^d9WdP{6vP0{ktJq9_ByNCB!ueGh^JMLzI*<_7CCWF=RF2L*~?A<;5UAj{4XR9b0eNB>^{~i=4Z*%^ +Y1asR|*@42^&STyJO`T*x=V>i|Z|-<sH#x#?)fVZg<C%htc#ee@vhqxD#8k<wIZ2;lNukZ#CcG(6FcS +B;}iAkn+FDl+*S0z}UC=(B9%hdy5b4EgYIZXFp6gbk;s6vgV3!H>c3bB?}c{Gq&Q(c?V=W0F5eiif=$ +*&Bt9Vv~s#x&1qU;j9@1EHJxw!!A^?G9$oDqFS;Jpj-m+r4emN1QCr~2!@Au?$wDvyQ?|*OgnFLgn71 +oWC&uwXqCP+8`?OW8r!3YASRXeAxL~_g+gYqdrQ;9E{3Fclk4)bBjmgxb4+#u2l6>ynxc}SGIE1>;qg +#5vPYzo`=oDOft#1KoG4lh~Er<bN5>8~{>3C6c*!nU+J1eq<t-qn0jIi|=c=Mh=Vom;|uA@FzIc0s?A +(ihG>O6Do6=FCjt-1#UlWp2(>^*#6a|%J@=@F1+y=Tn$S+zlP<!s7;(uK1|$6fyPD3G|;2ge}I#2nQU +<Y>`8hRr<wIQH6xL&~%tj}2)pE=)LEKSo1>K8vGat#g!qJ#ZP!L*3Vy@k1G1dDJ@~uj)7y)2eCKJea( +1(7*EE*|i`~q|BU;I-|hIO?XD64gt7tvEDp}BPMdlnbOpwn<Z9bH}i7=3t`h5=edtr=RW2pK1Re+u|9 +=%lH*#$+XW>($jI5zjs|ihNy@5z!hI#S!K4N!`m+EK)*u7jqgSKrZ4+7OJx8o;o8IFw4@u}*GCbQ7x) +yuRI`296oae;e{rs5Gy9}dum?e#OFEiFXBaQcOXRLo7b1nG>v&IYk%W9_3oA<HN)lww$SEtZ2t5JSTV +oI#@4=DMjK$*lC?|qv*N+~b}hN&x?adR=OL0$1ER>QK+%`rbA#}{M-#IRCzW<vUOx>sT&pN);pf|vQ2 +P!mPus%G;1sD0c@*dV7}J-LI@O3eK65P!sK)Q|anDIM}ymmom`Qao1KgwufidgLMM3uaLNf|(;vm2Tk +^ZJmbM3ugDo!zCt=WfG3Xs)jM2vaTOF1UA=}@Mbx^X>lU&xdp}8b1l`Pb9azmbKGAGS4zb4GyH6r-`y +!+Ero}na{MX)^kR59(FYIzgIW^hM)Y-#SQi6q`rRF{_im(^KTV`~=Q?v<ulf-!WLJ!rd9VivP*$9m8L +Iw^-an6zTFxf2Pg_3{8JY-dAY|u2K3BbqyfC_WhDSyu@FT6MoF9oDnE=zNPyX8<`1us<SC)C%w|K;(% +bB|4IHW6?BO!qt8>7z+A3Vo0K<^Z}$5~%%Kvt**g+Ap0yQxJ)%NA2h4GshEnrl$dEo!dm!wVEBJwyc% +p>nRNX$0|Q3P-U<;-8>FK8WAb>+o9*T(AiY1-vHXUJomL;52^qFTnF};3cYtpC_&)^jmk>UI9FvdE;? +3%GMpHUNOZShoy*Q-rS1xVsd6IQO;wT0x^Ugx??}(-36(mfOqSmGrtcoO_^iU!xk-7bu|&Q1pLe9SK{ +2C(G6prpU`7LpI})eyE;83VOa<VO*M1=bkK*C`SKCotm^h{Sa^=apEmNRQvUQRe_Fzye#xII`O^>i(< +=V7mYx{xL`ry!C%nXW(0g0>hO?^kA$@BmC%)OkX_Xk~o{>F<qT`WXj)pRdn!q%tsN<pF1}LQ3W2^Y_F +e)BfML7p$&M<n)xM%(WwyZoBYMI%CE%(bqm77h0A($h5a8-Xz{PZrhp;6ZpnQCKRaet`G1hO?+1eowI +v^+(>N0Y4Lqul&kqUGgB=3;t$ji<BBoTJ7XAA6Z<n1CKeyVMLMU5?(D<7>=M%~I7}XNc8_`)T8HkpoK +1be?=rD%`C?@Q*aB#oa2SjxXp|o*HQiTrSkj2ia(A1xiNbYFzy^;3iZ;^cbAJP`6F16zYoYo4NbS&J~ +kMT2zPcAp?&Tq0Vd9W?~N5J&0U|jmb9cN;YRCNR3XB#z}E{{CGxB66SJ>7J~)lWca<XQJh)yvo2XM=p +#>Vu+v{dQN!{wNAnmWM|h2REZy<t?+mJkYSi=m>)HEi9a?Pe(jCHY35SsGKDt-H2Y$b8DBc_E_z*cqw +!+e=LsR&QU;hav?NaZ0lt15MTtA>w`(4yx6m67uOE5{(E<jR@LMJ3)-<oWa`;)387sQOC?8v)P0jOm( ++8G-L&q?~eSjp&j;T1`l`8d)>_C8?kNM<?QtG}7eBk<th@4$r2JBb(Q#rcY4w!lSQOD?8?d*S)G7oK< +G*dp1#qAW9i4Hs?b#Rj0vOvUCfa9rkq0Ci92jR|<#-zG*%l3-l~bKKkey!d!_JWS0x$A-|$y4eRFc9N +TxUIlBiL76%0Br>=`<U(7lC|?sy)lQyt5<`^<p?3%aXD${{o&NYs#I<uXO=QMj=5KGJw<Ywp-!RwgmB +^2msa()hzM&&@r{o@}s#G7qcs&KFfh6rqOjrn%TzA;1e3$CMm*G_XZK(P1P^`K4MZT3;<~#KK<%>vdj +|Z%Nw<`bB&yM4;r%3#o8*kI-i}p)c66LqFB#Ysq){)thqnal@fl0rIqz&HC=d!?O#|{_?9s`%PShM^2 +r0^Gg>8LwxSDVgYpe3LKV}FBS$;t*Tp9&K!pU5;LT0!=*a1YC7j+PE!XtBIDR47H~(5u~smdL}lMGFS +v{^_u{{u__0cBzFXibF@H#aM|tf|mnP<DNfJ_!!pVPLqd{OT1m_A60cU56w6v3%v0(*y1?sJR3u)=5P +sV;;mypHN^r$7Gj$x)t68)(92P%5d0c-*SA^JXO<$WHFE(C6P{Q~dc{m-=H70Cr83e1oIx2fSWhh8v@ +d$0+y5MCK{3qw{F~U|9t<M%Q3o{9hLYMyIx(I0HD;t(N)_SjqWxq&syl|hfTLdH`U={)0&2JnYT$tbf +8Bw*OLh!e!SFMR{10JzFvHtu<c_n_KjX>Sn6T}7>coLR;c-7%?M3|Fe**9A%h@6A>z8u+CH9`W`w`k~ +7u4H*0P2O}8~%h{dk2Q0j-jjp(NEEYFeR0z0Ks#N$7bs7PCPK(qkaiuDj7hYUu_txJwH)SOyo%qV3H9 +uZp^Rwc7tw$WDUe`F56FM2kX<tT3bayo;*z7Mllkal4?$U3sYM41*)YA3v2)G%0n)wy@b0)=ElM*VFW +;IM|UK@fR+D{KmkR4S3OtQA+T_RsihcSG2d{diuwLbp&3>0e}rH}9?c);^7+VCX1?(;KnMto2psA%*m +K-g{=u_Gcn!2?`xGRcros3OEVJVj5~gFn;xx!kXL)G%K4{=FXqyt#S+8+r89t9Shd1y=#$kD3&Nk!mK +;+R@SdR%7TnYg34&v5OYqK<ol=_QpuwqsdIx6f5XWoQQ?v52+*jz&-<<>sEqGgtDO7n!PEO2+VDXn?d +bbOlasjVu4%`_PcDBDV<$gO?68jRAlgJpi3YBp7P3S`%VLhxE*_|b9z_ZKSF{N>KKOc)6^vLw0K@<l< +G;LmdJ5+XmK5zKrK3RCY9mL5#v^Ra|EUZhZVwbV>F)$(qb;<|y9xI&a7CA`Dc4_;k;PN#Fz5;~lEVQ1 +TzV>Z^JwAkEluc_5iSoRGV3yuwh4y;|{Q)akyc?n(y<OjrFugNUmix*p9sE=j1bVuheX$N_w@^1jij> +N9NM6peGC|^uOk5Fmpky6QWWuuQJyD*A`xZaCwl)ct#(;eUbf@=pKK_<_ep||+-9X@5d&3$@J(96E`v +5zG-b88Bjh`MzQjx@tPAg5LP-L~pzh>)bmg*G6zn!c`jjN3S_O=&y<C|&RXL-Wz|*b|kuO)<`*M10N! +-e<S45%$5AZlymdkcw3nYH3QpC1AySkox^@yI}}gY;<!QvXLHlhL%a$rIuv(02$*om5Tayspd4=GYUV +HkWtF)u_6uo<1Y|x<DNqJ<nD<}<L-%ZpV04!59DMscl1F8M=(5)vKvFWs*5(o1&=AffV<EVe=)SeX8y +7dt(sm?Q8DQLL}Z#M%swo-4+mNk&RXysJ5iwd_w8fg)MFBhV&gnODgx!yFXCOeqQE){ntk$8B$7Dap2 +&;51KH_)NJCFUC(elOGl7Qx(24KvLocy&Q9c3hVFz3f#ihNgQ3`=xywFR%*sDA4re6HU=tT%g4Lc6K_ +*Qg(i;97NKNa8QE9ykUd>|T!P_gMpw~Q8vy^C&VOE2t<J>Hp}&n0%I|3s`aCq(y&z*~ua!iLo^_JdIE +`L@)0WUg6Vh(Ws|3oUpA<j%H^GMk=$NGd-LxafUr%#a%D%IG2IFS|NtC%T&Ia*Eyp$kL^p9=T>ZWPZa ++2FpF%V0prG#NIu}6OXEw{he%_e_$mW=i?^5N&7Juwz`pJXt}^V`GUC6Viqpi`!36jq`=L6VixWT`Fd +86v)Ufg*G^Oai3$yNryU(MTh-yqOeS|rKww2#!G_g>(tS2ul%=IAbF!SuUX*w3Xfw?NMdnN4^mBRlK^ +hWjLt}XqBCf^GK1?jRY()o6C;D##cZL4wyVRK@$gJ~w&~9JXxQ0REa-I)0(H5G04~ypY!V=tORzFN4K +SmLc-f0!qjYN}nl*0Yx2Qe-s@HMw8GrCRkl3Urx?%r9j68A%^Z`YCQoAqjZ&oa7ciSk6{tT`}Ty&er= +-7WGYy&0N!Y2&=1BY{znB?(q>41XyK9-X2GGlyouI!1m5)t*7QtSMTFmSMC=ZnB0rYZg2Me630-iZ6o +uBEw=Iu?}U9rg1yt^T$m=S|XF@eTES;^A7mf8D*W#9Jov>Z{|3$S&C#-gQ$NEDpevGtx_0R`^i5e#Cn +<Dgn@9B)2=mb{2Y5w6NdpCjlG895`k}3T-))~`@qG{qPMz;Bxdght`!Yna-`4^d7Sc;&5R2Ph_C!-oJ +_9x3!-5(Vr{ac{_h<q^dhplYz~?Arz>uAAVqiNVSdWf9yoY$M_{t;v|_wE$<hY<p;gi+fBRFe%1N9fL +JCs(`&;-~|ICFNDm6!|9|9SQ+?K7%-^Tc!%{_=NPfHfyt)`iwVxO|+EWlziYt~k8nu1wQpNwNvL4CY4 +!5W~H4BAv+DN*mTix&+{Gbq#Fe#!&wAyhB_v#zVx43_QHGJWB)vnDM?o%d$~y-e4qSm-h+q$w9$lm+M +5E5P7@9VzL?nK%Hr<rCD|o){oO*A|h6sWXpbuQNUw+>kI=4L`YHuKw4t2wYaK8+53T?u#1$_jS-ooAz +Wp5W%Oh00W!QnAGq7RHP7&!t6#g!aOfZLD<_B4?vI?YFKp%1{JXJ00i;C0_m2)zyd=H7Ie+3ExSzrU& +Iyo4w{vFK~w?scsVbs!27ho(J#3AP6)QqO{WlSF!87Y#p>b?<i{zhK<JTJRDmUlQ3V#oqX5(zQ3aN%S +K)+VQ~_itRVO@!v$VD9=nnFlo$*LwNP#7ZAq562L%ycjGf_7sMikiJPW1-z)ZK805e24(8dgtfPBrm> +0vp?L&5VEoueHY)@cMRI!0(8Rk&CF{V(|oC9E>Mm_*dijKk&0QQ90Nz_L`FYY@a+rWQDfk@{;7fF27} +;RNm^Jw9i-G1jx}&p+6*>WSL{@6)l3CA#4;aN_UU+yx-F5&)ex^ZJb<8d)<hATFgY~$4(5Y7)ED_1T& +uVeVcscz|wZHQ|zcW)V4Mqg$vk&_?-`o;6#zK7s1>b@wM?Z{5=nAMV4Uek2yv>mxPkufMJ*)c{qp;W; +ui8S&aL#t?KLJ7dS_p>mQ*Uw)?{)UFf`HE6zLM2T3o>pVLt+%zFDFKN~+8?Qx6UZ?70tA=Z3m>M4%=$ +^=MBY_?!(pvTXkEW`0B+wF0<2AEy~FkR^kOEEp%PFMhS0Oh4QSyFjVZ{st7@wV*2rAD`9BH18bq0H0U +SSV+zzuOasiO=%%-bS-LCj6AGx6v*Hx#4(`UHNoC3R}W+vVi`>JEi*@r8NmSfY-=*;%fEsH{%W$@=$f +mn}g04>A((OGLtYM9diCpl?k0Lhzk!!P~V+{Tt?1P*ygj$&<HDX>8;@+Tj<EzF&?%9ivPSE&kwY_l{P +2zAbK;bI!3RWqznwm6X=TzK<OMaKsLqrM<ma*fjpD3O-qHn^v(w`PSNI+N9T32y%cxG`vfjWzb*v7p( +CO>_VpfDZmn4x^)G@Z3{M1E*$#CaHSIntgmyqqVIykWcw~rWgRsGQoD0^QHTsl(Th*Py#!lZRv+>U-y +txmO3#%qbeeWxurphV)oJJ{Zmn^NttktJ<-|TCQrUVN3Ln=I2<Y5&R6&p6-!I#o#!x)R-q8)Nt?Jy%+ +U~iK!vCxE>;J>ftBz{I`MK0zK-wwOsb~}_SgliZ4bwhc$sPNYVfBk_j?PrERj?gp={-6Z>@FH;2g+Ej +Xt}6cY;7@;`qo+E<Ws1%_k2i@0yXE0_rCo6Z^Dc0?(GjS%6|-JdgdhUItA#=c6?(5G0r78jhQ+KXMs` +tJ&2Y;>D^*=niKhS(69LrCcus*H8y+^>C9%8hz#;ahnoQx@wwMl-mKB6YQ}67oX95c;ewB?Ajv4sy1w +9PNSK~t$ecYg3id;8<Rz~GrQsZf>y3K|SbO8pNSiJN=soygGV=dJm$zI<DOxyY*o9mew&jhT(=H*$LH +R~vtNnjkbW|JMztG?M3gowO{1W#ia`zh#iZNf$}tqTj<NaSagZoAT8A2K^jdDs?<<Z@n|P(Vm_I_9`D +!O4dRbg5L{D6*~=Z#Rmz;RT-~ZXctbYSZ;RJ)E!ZYm066=#CU1U^<Yl+TX*S+d2SJkDxryZ9e?0-yg| +5SgY&4M%}7>IdKmA;YsJ?AYv@-EnV-KZhO@%1eZbHn$t+cpB$||2Q@<jm2I(gjV?^V$@&UCa&Jn(r4& +Nfrx1~p_j%SYo1QP$qhXCV>4?~IRus1E@zg%HNN<xz0vxBaroN6>&GM_t!2v%zrY$m_pWmm6?k-W7)d +dJ6*n^S|1!Ntk_O-@XCpClmK!+OL81uMT%Il=qSnbPDZIhW%i{-lJupkWy&~9#F?7_$Oi}lE}^?Gsv- +h;n_+x7n3A>xg#Lhwf>(zgdOWSdw!G*(7bcIu+#17GAWvp2G+&r|Ek9pVihkspj@fC>tr0{QmP0lBy~ +End#@fuwJPBK=sTK&%E?;;Mu)H)5G=C^KfT3@>mJiei}?W6R=?6o2SJAv9w;Y4CNy)-)S@+C`TP% +oHK|>bOu<Xs9l{TuNG1)d`3JxXSU!W=`>`4vbhQw?4vlN8&n5}MA10wcxtu9h-;{=GmRwu1X02YFYdh +^L-|k}{7qhQ@mS!pJRVi4(I22y~iD#9lD4H==2x8PF@y6|PCK;Cc^c~UNgaN&(q__Ir>Wb06h}Vp<y; +3k{zqZ!T)F|#&7+HU8WWeT?;?Rs(1^NzSjP6?g)dk(L>HBn7QSkJK@&hogso&T2#6d~&*y^WC)8vVs+ +DWmR*LzEAJ=2G1ZlC+(Ksvq-Seq?rS`Gk=XfO{ub@i8znoRf-YJEGT>#~45-r5ScP#28J?|w`bp2>i1 +piN9{vXIYLk~ReAf`;#52faC8RzJPSEQIzY(cy&<#KTZY-_>iW4xqb3^e-mE9#s>RQ_1T_L+`4FLk4} +Du+cIr|DUGH+s!8Vb75opEMZH~j87Der*{WJJ;oVTcInXo)T%eQw?Uod+aybuw&2|9a6?nI0N2W?q&3 +6VTViv9sh;Tt$|+0Wg47$arkpNq1k6w02gVGQcdDzAxAlJRXOESLIUny+J#1GoYerTuuamxH;OF1VIU +7WLfPrEiy2BPCA-)DWjosY|mARYPf^HDr9t-OFtwv`Hg=bs5me0d$a;4}W&_cL#Gj2{fvqCHw^=|=k5 +dq{wg8)figHZYbCa=Pi3(>t@wi{7s5%QwkA;SwocEbPy=2!sCq>2K2U<kZUj{Xm72mm%ex)3(IIBZfN +BdEy$&fkOxB!}vb@j>pU|8vLy0LqygfT5srK9IU;bQJ~jyW~Rr6vujRSF9}r)%D)@6CMj<Wozf<-l+K +zitX|80c%BggmwcgmDI8gX#pTWi@Nt=fUPv%dJ42oEsfGLVrj>o8T`Ho!1W^G8Dws>OD_u78GK6l6mr +mp1w=3?cAt=KKH$%O`CC}t(*vU5`H(ef_vnsc3es3B;Op5<F-oMC(JjVSh>B-X40<e(%s$cn0r2qvyo +z3V7LWP0v1(ou(U^?EqQBV2g%f3a>7X~jeMY=ou8N>|M~UHUMI>*Br1F!Bj<oUPZD=hL&QkxeElwLTf +<)c{q>V4YoqOhI-ym)L34y>@e%6Np4E>Rr2fsmG&F8=id|o<-CHKLG^gC_Jr)K#P)+E;Sle6T{d1$4T ++fa~GOSZ+0`0fTa<0IHR8>ncn$7wUm!#w!8t#{$gXbi2{r8(3I@ouSkR0r%Act7V+3U@V@-b2Os83!X +<urV&N#iPGD6V5v+b}4aT+Zy9s*j!#nvoLXdqVK~X@8&}Xd60@vfk;fg(|7Soo`#aK@K{3{F+`d+1KH +5wlKbtdO!{iYe$_SuM!buMb;WOgpgg}ra-Uw2q0YqeBx7tL|Mm+Qo>1pn|Hbr6K6Vm1#6BooALXw4h3 +og|yVL@V7k9HRCx;HK`|3Nw#a+}#I(L8^7CQJ@>z|s8v(`|nIl)J|61gvQ7p>+_(&%35VJdn<$Ni(xy +}b<n=Be2)>bhFi5c7|IiTg*-X^2mI*VdSS^z-B&y&=IrdUGm*SG(R@lvN09%lvg9XM|ocakGmX_$R3B +dm)dzMV^A3>m+}917y5%9Y(8e6_xIZ7(ljoX+vqTCD?`=Si{J=kY&g^be1d3Ul*8)r6*wNF%)xl8wQ# +sNeP3^{;ZL<{jB_I`AYR?TjSln<U6`8vX-bN)$k$qxRxLsw0PG$W1ijQ8)W!)dxJpznuy<AP%plP+_F +z^z`0w39^J2{@B^am8Ko<S`-CmqVR!w|);-*8y3myyUi~c11TqA7<X*%bxo=P94%*){9JMbsuAds|yN +&C5<0>1D+>@|nXi({2Ec|!{iKE;dTNHw5P)SbQ@0tuJ?#s-E6L&V<+$qcCz`fs`=)j$6HXOL$K=gu+% +Z39to@-ql^WDBo*ouyCU!<=X{)-j>AEdD8wjJ%YaObmm(ZlEt#j-cGb13-BHBjBV=snxFgZ!YaQ2t1| +k4+HWI&0a)-L)IBCCFj7;aG-{k?4U~1L!PV#jA^cX1buJ!IJXjUZL)`e)^gk2Jt9nO)5GubD!=pP+u8 +mTg3IZ^urT<v9#6;nHMxf^P!KBwhGh4YCuQI9(0**5YbUw2v10&*B&$<jh4myr7fh_dw6Z9(*Fo&CCN +|v&vdh#+X<tObUFD*r=s-VAK=~!O8+V$)C3jPUygk$(OWA#1sFzOX-ooq+#}`elJ=d{oG=kM0gvpZ3D +DB?R!{ygITZvl$aO4d7y9@{pThV{hNJY6xTEx9?kEkM{_3*i+nYVEl3X!z`>|S&>vnB!%sKkV>Oyb22 +0SMB15{hDihD%Afz~O#JDiE`&@_Y5N^*zZW4J@Jc`m=<2(1QE5k4|j#QmYKq6NZQM#69033@blg0@py +f)g}7C;C4hv0<%gRO^NQ&tLS3?$e?$_cY+n#oYfH-wpad`~M&OpRtCx|1(CD@P;%YINHoVRaNcI6@ug +v04y)OY_{Y^Por+$E>@p;I8cO8LftDcx`tKN=qNI*y=>6+dC6yJpG1DFu$t)htYKUL&&za<i*C=&yG` +Ww3_JY{_js<?9n+s8Gr?*Pe!dEwp8XiMwHeibaO;uS+ZYQ6a@3>O^I5~|c>?+SddR2w2fI;8AN?NIGr +yYbAgJRppXY`2zAf>6wR;-5J0FR;J0G|z?n_D$%L?YX%7hU5qSE?J$JMf}NJWsF2FujD!z|nJAtx3a! +LJR2)Fhd*I5m|)l81Z)pxR1L&SI!E=PSq(^L>UfitL@gIMogK(L3gSDen7R0<U6v<;(A&9@yk8_)R{y +Xs$ZHpS*-6nv8k!!y$cbxx|ip=#w<hHjt4~@vGbxUvI~6(Wu{h$k+{mtJ(ZlLC~B+ZDV{~qXQ8tN3Fk +hJI|~K-q5CqtPh>f3o*E$(Oce8<71QRQ@1BNKwp9#md6d&%t!k>{Gc13Xv67Q7SQ4Ov!4^iMk<A_t3= +9BCCsT5(9gD&kYT+ONmyw1N%CDKLRh>Z(RURY2Q<uKKjS_)PDI`{+mXRY^j!t`@X7h`yF{J}zspeEKC +?3LA|YVyd9gZwSs)EaBR*$nwSXDy+B5L$q>xzRdXAQ6Tpw_V)vL_c#(k@g2+>l=Fe8t@xF-JMgg~m&8 +H<JB4R{6QieI>x0VwryyaEoLh}TuHE%6HEOh6F=Nh?CFC~VwK<VgKV4jxs(wB?}6ypp>`uivfyV=m%T +V3a)TFO~Fd#4{1SA8qC@2D7f8JLow5U-)(0>N8gaoQB_Y%v*W`eKuF;@iY_+d4cZITeipDrI%9%!(IB +pST*AeZ)xPt&_~*bFO)sWeO;P>VJgWv8fxLr(WTL;yr5GS;dc^jwCXcC@}=-QO&$Tixk4zF*I<hdoaI +$TPw*Ra^e}x~ck_|d=x01BDT;yFuuH4rj?ty~<M*;dvC(j{{%6RjUb`{QUp4+i*9-Fl&qsfQp9MKjhg +$wVj}5j<y<!1ZR|o8B-#_ANeBk2m00c&X(aB_H+)C6{V?LYi_)&lxWFfM}II>Vq+f5D^O~_9kgc^<S1 +sGrVsa|ZeosET(Jy#D|#`TafHrkM`JnS<=y2?_kp?bw>QcL6Ai~bn3Xl<)jxMwopH&!f_*e8DWjj!=6 +h*Z~YfF$MML}}>(l&HQ2fhvmxDldMQpo|MkU-x>l3|R@bF}yfHA)2*O>aoAag`ia4Fc+34EFfWNoO<- +{ygO}!8Snagg0vJ5^}g`_m`!`{tgJ#G>%z|ge9w+-k#2&PT3r}JmaNMg16Czn*OK(um(l){ydu;Y@`_ +N0^2)QwxBPG9m5bT6027~8NP+#Jb`P86V=6o5XHhxBr>vsxnulpc$|MtXssIG`ViPxg(f6v^_)!~WM- +sFha47C80wXuwOcE}>S9Lro?p?PVLugu1C2&E=GiS`G@IS|!dT^uZ|03R0C6717<tfRKr<S2?rSAC&? +30YYofmKF^k3r}r}nSk9dD}a!gy1iUUtgMb|Ruj@q~w)x`Z5>7c?k)^~i1acp~>-5|1?1Db)5~B+}IS +9~qIRHl7n{s!@t$06)|ySuohtLqEd6OB*xHVq-KJPZpPm%1N6L{D!_(+vden<Xa69rPzo))o(n%Vq7; +ESFdrsoQp1@lJjFv4X4;s*TrH_?T(2px0?;IWphky`HR_zJ=JJ3VoyC~#GaZ<qRX#iqRXXb)ZZ<0dE& +8}mI<K+DX~~hS6kz;ntF{`O=WR@B<iqU7_+J%Cimnf#H<<xGLR>-{GDHT0N6c7&?@aG7_kblCgFFqe# +oxd#wDOPC&waIMHeD9Oo#_nAiJdRj9GOjmx7F#RgX|@D2n_D&2>EaqlBOxKO$wsu6oUN@z_=SqlX60Z +8R2yN~8lrib6vpiM1?W3j)I8SRAT{&Wl5}nBq{OHiXBaO2@Lx27^#}+1cpR0~bc1qSyklFjTAuNoLtO +QK+Qo3o)rGe_${QRZBbyRhrq5uC|*JqEP+Lkgy&g3G4O5C{(BjjYpw6k%U20-qa+RQa*B=)p3p3_%h_ +1|7{?u*Uw%Mh>FWrhzzz+XsO5}$ZV}%gK?<vYYDD0l(ler@7I<NMxwf%a(mLh)cofJqPqQ(xY$*lLV- +~V6M|8tg7lRN(!ny4zBZf_jEX80|CM{LAol-FM5-Yek;*+F%pJfmMwJ%}NOg`t=DestW)Wi&+1nKKXD +}p{6bnh^34IChPa&z~A)fpkA!vz*qw>_|L{FTK$D_L0h)4Attf9M~hocha_G4}5MWcH6ow!IQ1eYX6q +mmM$QC+>&^c~Tto_);p{~C?z*cKGJ=1~RT8I5WOWx6^s)5W7v&EUX<c*)9fA!5bop;H$`r7DY_I(0!* +sxlsx%1=?L{PCz%B%56<DisM>`_(`6kz_U)m8vX3GW)2Hnz=|+Dx>t0J`9e0<U2!BEjlM8)r}J_8j@- +e4@vbo@T7wwsi@o9G`c7|(V@Ojn-uRTH9shoUDrpX8)MFfI#(^EuvGU9hNUt(`&KU=&?3If>*T?vC`f +HAEY+PxSgILeE^r!>8jx$uW<;mDE{T7A&4_8GHU7s?Rm0+;s#3ozRMppJBUIHFW*(}l%lw~0Rc$o?n^ +0B1FrO2uYQ6cKP*qQv&k0q9*y-F*RSV4tp{njM$3j)1;>|-^>hnWYk>*5oouEaC?v013nsTu)RT5GWb +OK=mkRp)*#<@|dq-d8Z9;Hf(?lS$`C{-kZq5d--rK&WF$18C`EFPt*l)j?#e-)+bZi-TMJ4LCwg`!jy +@+egW6s0OJ7NTldq7e2O9~oyV><CH#Lu3GkY~pz#s`_!(LTz#iaBZo9nHNT@+LjQl>KDO(8?8$9y&C6 +O_y70BIab!J{pq4Ho=WhuM{(=KhCpgwLsT`HjIR!V^WX8B*T60R>aby)D1YkXhf*uMj4uf6Q=j@i|NL +;S$mU?s{n=8^X`wE8;`v`27V6T^|5UF;QHS>8XL%d&v%HORGkwynA*WHB?O}UClGtpvQ#j};^i>x1H+ +RyR=;f*}-pjGjP<JaWheNHs<uEkdcNVSrxqPgxcwIL9tRNn{CWv(Qa;p%MS9&Cm9E3NqgU8WLE== +i`$<#OGt#AB_1J{0eb=KKwbI0B^~|FC2E-g~N`2jo29Wj@Yn`aLe1LL_K6a)+p53CHgW<XW&~2-tX&| +^wx9z{CF5@iXa7St#d2lHu5wLD0_5Bo?_w_l^(VSXgGSF>5jjm(?WSaWLhP$cKU>l+KVBQ!uVMZj5gt +CKvMT$Zn8P&A8mN*A=0tlNFHW+ood}3_`GTYIkZxvfgf>KRSD-e9@iQP4nTee#$tziwMhZQyF=UmZ@! +HUGHkY7k5uGypvNetWz&%sq6npbCVp`ZN$LA^id9x*1o00XjQk(=o&+qaBk3L(V7MGmP`u)(cqDkBpr +WW@WY9M{L{vNyHG(h*iZB`8c*O$*vf`5sNzBG1CNan6+Rd(;%Oe+f02)*@CLw0ClKYV{5pw`W!~3hc` +watvaj*aQ{vCW)_1#@v-CccE&(P4PjfJ#oIs62B&9TI*&)e)C)teCOP5W`&o;Vm4GQBJB!al4pc1o#D +BaRZ%zN56jGv!~`&<m;<iaxw0y^lji@Gg4(c@Ex~64EM#(thz6m*Z84_~<@1qxf<ww1|=+ukXXIYgm= +n<@boHEv4%-ux<AOEvVpHUh*`31T!$@EvT9YSd7VlH#D(3p`EP{D4|=exbMs_3|cZK4iLLj_L&&wXjY +N$BB}rr(qt@U!MjKzJOU*KTj(>GSjtCl!jk+Am6L`JqxV}5Uw2)BFDqTfb8j=*ijsIcOxrzAgNTm=Em +SlP-?*avsCK~N7kk;!zbP(7BlePCn8|PQ<DKB$7#2G0n;@RDnS@<SpOB`W(FskX58`^DY6kg;8HeZdc +*L&avKJnx6G}rLsKr15$MJ04v`SNN9f8SV0945xPqWQwk9HTS>AHiu{=`?tP=QyN?DsTV=K1U?*Q!$i +TXnL=_78<r@|NO}e(48+ZsZT?16GA!4-i%<i_DVtNB!HD7`o~-0n(lXB`HJOCR2<~Bl?3?6@ACg*-hT ++iofub0uHawq>m=`l}nyt8Ax?`kiUD<wa&y=Pu$m-jA1aR{YV@Hhz@mpn}g&#^A)8aEv)$p)p1bbiR# +7i<$8XPlD<ExDTtvDzC;wR3)4D=NO6WKs486yoiY$Xw<&`V_)H;j4{IFWvU3<AHC*WrzYB^w8t6^c=2 +VwHpicD)O5aPD<w<YiSanRjZoGpEjAeUh{U4t=Q4A7Fx0a)+up$WWCtgs^vDJB6aQ8IR7q*zNVv&rxM +5<;~gCc*6mm|<pV%8Z;<F3*p$Yy*?j^6hiO4IoRePN*F6$FLrwK_ds4kHI6Y3hYE6NQI@EF~6?7NOv0 +Om^ef1rvWuNV)U|ZW%iCRfTlxknjt>1ry7_QME<}Y4|O*z7MSfm^B{Rb#5q__<)-o-d%KN6ih62v)hV +xa|<Tk>t=`N1f5e0Cf@I6hwrC2Zz-7gnn#-*o(FRFESUHz*uj{Inb4aKl~6b70sNm%aE(fB2`!1!4+$ +liwO}KZP`WgnZDne|I@8VA$-4)IQ>L6E^cm_8Uc)Y=|2r?^aZv22`y$C-1;@#*ZhB@2PKuUzYPNe8l{ +>z6@1(a>shzZyKP&;6=zkZ)mLE%Rv%M<^grK3Vi`MWi+EnH0qVw9i=naEthcQd-qCM*%BF8?6wBO6Dg +Eno#L*zpOUZzz(j8u6oIN4Pf%|@_}k1)Lb80(#1-iPmZZKTotp1xm1s2p;gw^>p3Zc3tb$t<-P3$4h- +pFzttR%tX`#`3Y0c;GGAsBiOQ2RVYH%8S2^dwr08XF1FsB^l&VC4uT*@!9UV%|}qG^sh&u%SkzPHXWU +Nbo2nOaYapHUzokU6qny>5WV4lU&oW^$G38ZLYz36k7@!k>5D!mNNa=Wl^^Tt@PeSuOVl1^bG(70GnY +&b$LtvuZ?4b4iQbfo{MaR86J~jQ(Q!xr;wG`1P#Ukvj~V2kFR=I{>57}698%-y24}Ex4Ab|n^jQK~#4 +Llf<wW)nXBRg)bdwF@jLE)YJP>4p{_SeH=r(#c2ue{dcH54JA!*q#ATOrVpKjGEhtZDGKsnrSJ5~ovh +j8x=AqpyZ`a<+F7lwy}Pw!uQw3Ut%Oq~K_{b@Cf^*??YrH?5~-d6P)VAu9xrPpmBgb^k5>QZ{vVq6V& +J5!#0jV>4>Wr@R6fUyf-L!)z7cKKhO<GzJU8)?}34zQQ#l>tKRrMx9VnguTfTvqbt2&EyHgxJ$|0Tou +gb=dU~eT=14+t?Pb;5Kt!K^5j<K})7MU&YSg-KcU?N&k-lcY3zH_$e}xWZ8A@H^nKTy_Ztaj3uitdV! +7LAPO185dHwsU`LY+yMRJXj1W<WFj6>ug-W8P(pj3QV<xZ~PK6#N^vn|M6l5sL9Bkm9A96`2Mj8VRj= +^ARKxNZxmu&jb658zj@sf1fdOX1NBb8rPV3aTy@~5WTm#B^0{c%&M@Jy=HW65DRd8V{~-%a#Ne#oY-^ +tZH^C0yZt*hs@&*mz^%)DhC_ZdAwseN7}0-WmJU`H>Gt;LukE)0gI2)K~BreIpZRUP@@yVt&$134L`j +y;We2`dA4Ka>I9`7w{dUTHL)D`<o>|M-USCGu{H5!F9s^D4v`p_Pj-Jf_m!z-EJ5{o8JTM!fy4-5|jE +0hXhs;*PAQIClv?SLybDo6E%{g36llS>ZtO9iS%v8fP?I9#yMfo`hPfFV@WekrgN<`7EfGOi3@>Q@*? +k<r4|yF04?MuX-<G8_Ke*R26)dyme^Xm-l)LbsA70R?7Q~QFa@c??Mf8NAr`5^QW|JqgcW~GUdb;14o +ZxuFiW*)vyFBH<)U7S3$Ks|G}ji^YxvDy*Zr;_+$Uo1zs_%eF{0oCE+|AP#@F(V(j}NWS0%_{xb9ZEL +Q}G-E^gbVMMBA@#)P61qON39i*a9&)5la|Z82?E@S3AM&B9Lb-t2=*?GRUSqa&!flEnEyH!?AyPV`Lh +`$am*bd{ixTy7kE%!o+7xL7$R8sUqP#a(!Owa{OYXYOh{GWo$n>{Z#_;W)b$3XagV54Xhvlho+!9oJN +;6LpXzfh4~*;sMn-r)PrHC?%$tN*v|Jx2T-n5G0Po{|4iKz41SN;pI3-Q9^8^^r3#|A!o2rI_(TFO7A +;;jM7=BhxDOTd4S+WnfXTsR~YFV?c#J}Y`Hjb3a)&Mw@e|Zh4rQ>cy~n{F$K@*io>T6Z`6kebKm|A;i +&yV`qJ6M_$Hp=b^06M#Csi>yH5{bVM-EfjKz&&&+T5ffb`N-J18OZ`TSC2f!<UNPEfKqv8VoELm#95; +CDfV$F-0Zu*XvA4}KMp=WX=o{$S_>e|?>PfCq^_fcFCjIrCOX!xOi+2g*SYsWkrTcPM&eEz2JRDv^d= +bWWZSXOa?*2vTBF71Pd}P=hD7BblP+MA;~PU}C-5h(*}(C)CpmVZ{=PVYF(c%E1+}6^?j%0zR&&QJe^ +IsF6Y;ng(<lAr?pp{cvGhq>f2Kn!lxV+@pu-r7*WUYB1lZ#C`WxCG>Ce=}Gy8PzJd>79^(OQ7xZbbzj +J3B^pig^`d!*MuYmieuq>@tXD#J&&TU5ju+%N9z;^%DS78^W9(6fw=w@zoYNQ8X=nk}3DW#}$zM*1#o +irL`sR?D62Arj=_UBJU~-tOY1>8}$Zr0fW+o=zxV<V|*p^VMFGf*3p-9n}{2td{i+&Ovl7E796t7+Qo +QH}`s75OFmM1|53u4f>m<Sn}aY<1c@PeM?FO<$d%kq#>vgxe+>2W&0@0C%w>1-cIkdQXN8vOU2&aQbK +f!J}VmS6lEQ>^d`3re#v2=#zti#~v=28zFT1WE~YgAX~h{+FB{{*6%Shk)JVr=X-M-V9SJ0E58fL7PJ +y0KCkoC3L!_C64~4Z3&B<y$;~JjhtirOxsp3a%!==VJ%r-^hbKAs|t8>Q+dgzYJKq&XdzWmP8(b?1v! +izADu#b6C3Wf;lePzJ7Py9_RBRv#=@)GH6!7FFMToYx9HzaTx62I#x3Gd4cj7~4zMbrT4@C-w;SHJLr +McJ4o+ZVdyPt*7bd88An#L2T+QB2l(!zEbki5%`-s3PVqfHu)Phab7vFe?I08+jajjTvs%u%lFQIx$D +-2MMK2Qe_Tm=4|`+%$8ldd$J#ZqB@90O?D&@0J7pYRkyTk(R;>P2))re^K?zfxD{6x0H?4oa@Sr#o)? +Lh1FtX{EVkh5B+lEtJ0K2WCk_*N*3>Wu`Wub}=9Z=Gyp{Cr!beb_Bu-rO95^2@yx+*qix{!5t`gdDbV +yUf6QZsl|FyufF)3wp$nRW|05ImTUOjq=Wy3v>qJ}RZ9Vt5_kxX*-{|~mDl^|Ou;d6F`H@~2HMH@>Ac +}sbUFj?eyWg}^u-V2I8oFHIi%7Xw&>$?Xn&^mMXqiLI;G|T*cai`kyu=#^q~@JnaAldP6=H%hxRg;?o +$*?T3@qtm@dgc25>C~GcYYbJxtdM73miP3}i?BfLOBQv}BjnlARPvw0=@m!^q2Yp}?goYa>Xo<}#dgs +d82vm6K4G+Zb-ctp@r8b(lQ*zP6$9jWQe>>4Bj_z1vIG;zxxW!`Bg*Dm7PZfeOZfmVj&mF7MDQ+jt1y +V3Ll5RDm)yN?h_eJnM(M4$%-e5{5E-)K5s$1Fb2cOG886X7_~gj<BRXL_1DNFMk@tZvEMDMOv>ktW*@ +&Do)%ore`_EC{^IbK}v#DYXR{BXij+qPm7u)sIxO>n7Ar!cj9s3J`5xw{XPvYBX`e;^>75z3*&5c+3^ +*)==b?WRIs(4!pp6WK)HLFx}4;kR(x#TsMtW^Ekg2!(qr(UxW3q)bFditw@o@-VSSvlyZqk0uGOfNd% +5b&;jZ~ncDR8rq`}0)>(BQSRRet_9)S|1pY{7L>5Gf$TFh~IA1=<8jx2kOYVH2$P1eJX!@IM)Pf%S3c +$o8)d@o(ZJ*D2D%|C(D7}pKjM9+SIb$VK)PmJ5+W5Tyg_F#P-23&B0_0cp+vwM`2+ebO_`cZ21MF$Cs +(vwFy1`SO$EJ}RCNp7fV7v(uHN;2xeTJ`NBv*(DvHYMP_NP6eJG&ww+YAQ47_nl-<!pbjCqW6W$ML() +>l)kDqaY?vg^HiZUJ3L&Oty|Yqko0&DP$Nh_`qy=+9-zd>*$p~s+;f$Ma!9cn_5Qwv?{6H9h0q(T^!q +BEaYEW`Jht9iGFu0AJ{01~C>i4n71CzlQHoZ2!+9OBu}?+`OiFw_Fpxhg)Yx}YK48R>qxQI{8d<xNF| +G}#PD}|RU4v{l_u29UA@BH6g89Qd5vT3+hL;YNt~lGjKOzN|l(ALAV;W&%VEA6z3J-UpS6<a00&`Awh +lpzYIV1MKV+!3&F@qdKaEC#gVJaEO=65MLwacWv18Oy2$F!lM3Rm2<I=TvXt(Mj&OiT-L45kmH=wAl{ +c$#9YEp!{Lk#8h11#~azU)RGpRxj6+w#Oi`&ooIT0d!OMvSxFnG4|5N2wYZ!0ziv@upD==u(?pZ7Py0 +@gif%qfY5%s3uy&(&pfu#KGYPmLL(X^YJr*17mcU=giEJu!%$Sfp0q=~rFl(GaoNoSM>FXN(;Cb2U@V +=3FUBw}A0RhkHY7o-guXP3O-g+6>glso2gR|5eCT4@y>B5uvXbqr0l&Wfu^?>&xrI#A@6+Bs1Sc}CXD +Qm=wqTD^)Li>cM$$hV(>3}JgyxTg7x0{qsLv?d9t5qS=#04Rc^}6Q=KV@5{cSeCL6~NQ0znE&#K&CAb +r#R#Lh~7O)M@kJ_e5Ecl3F0#oT4UihEVZM5a1I5AI<TBfcIjkUs03efKY1EK;we{Tj~G5(EqQ}|F6*h +f2RLmrvJAbj+^gxZ7>O2a-2}I6h4Olv&AInB)6AhCwUa)d7ZR0B}z$@E+t4UCG%mt*nEpgde1CX7?tC +3F)>sh2tJP8h?m7-bd5NqRL34JU8LFQA=Q~A>pH0!Rhjw-lEx&ZXqz9yi4(g?+xLu7s=-~n!q1p`R^^ +Zqx)=9PaHWNA|Kbx`=KYOqML=I%zWGk}M3K4qCm7&8?6YT;T1Ey51($IWxAqpH)TkF?E7p4A38KRKMt +Q><P_q&B__$6SF1P)$%BQ9V-=UEAu5>L<`BjlmK0%40DhT~-W4WV?h>$@OTg#zWUwfEYBeT#GgAOtfH +-O<kgApG?KLOlK<qr|}h|(I-C!Q^Y$)^_O+7@wwlxV|U0&GjMm-P2)+11=k9NJysAuhgjG-4*+^rsDb +^9uECrY2hOMZmk`gUqqjYsaaD_7hx$qGjKFke3}7NN}9TYr0jQYWcHN)lOnJwfu*Ja1#qVogDYvxVE{ +K&_~R;mIz@cO9?hSsY(}dPEu_>&^&ORi)ogDhUE<8O*@ko2S}-eZin#DO_t7TESQLCI=tlB893g~ZnK +yQ7I^F_Q71&5kcX#Jwbn3919M8ioTb(vbrE6dHFr5}s21=vz20G#@HDwBVr)g>`zhD$4lgHc=_$zs;o +?wHFF5XHJz=B(IPN)E*xKZ9Fz%t@s-zF-S|#e;h3+7ecLyoFJD@LBo2A7;W+^YsEPYPj;&E?daoENpJ +G8N(+toHkBu8eHk{~rC;u-Uwi<=zY&|D;&wt1-y$PX=~?-|O0&`_|A?3j*iq@K5t<B)~TD_oVo#S&Y; +b`i9Ta96t+(-n&>-tS_ONUZk1xY*;q6)yJByRipd9tMxw5~U+_WjN8ZT=qJM>m(=CHY1&+E2o@e>Jyk +QTMMq|K&!-8QcfwM#_4!+za1k?hnmJC+8{STy+<zpd+I&KRqt`^xodf2Itov_X?;RH?&9?xhxH!G7_* +2fzhv)WOCPY+=!8~U!;5$gC%GNXaH&{MS=LVNQCt6SfgvU0w0`U3Y?DuCPi?C35yzu?A^+`KKahUuV` +EJf9xyscU{NT0@K<h{DzsuCv(i!<Evmz*Xz+5(VTh*~0z$8!Kpm+{oJQ1^gW|RhW;IkF4x~X7Kr#CVw +9H^XHGgjUatt6{Ps0c;QnDXPVFsbZSZ_f!Ig-h*5p7$j-W+421$E|}g~SFl;OheJ@s$Y$Kcm(c`)l;H +pFT|Mrw=pv#R&x!*v&&WE(iq;=wp8zrB47$&!Ru<YeB_37RlllgjQi-GzXzw7}^=oZa8Y>LHl~Nm(iY +OOsPiOMhn%-^P;&x#uUs2EmQ$bA!d?k>N(I#v)iHk@RgZ8t2<VZpd3@{h*pqL*x=z-Nwk8%PV1^9wSt +n`DyXnQhcu;x)3jBP533;Jmc$L#kIAnEOWX)CV+Dc8IVT8hfp8%#8Kcfp66|=NR!^SNp}e$ypvA9c^# +gU0?_N!;ek$DR$HLP?`nDi_8_`ZiJFEn=jCS>CSBG}BkS|(8SbcMX(4OXuRS;Hl@b&8FAWj=`Jp2Nt? +rl1k%{qBf3R6-gk6}odJe(m0c>qI(%RLzqDF;%-U-n`aaq`t=>>UgF2Zkic-!Np6{3%0H<T{3A%BL6- +BUduSCcnjyb@HprTrXM3&odm~v6go;9D5JBjN#b7$VJOs4_(OX7>?bKoXzmPbbiWk9FOE=hU1td3k=8 +JMxM-Yd=6WVWH_Ejl*1X05`i4Xa6BI;2Qa)5al-Hx#DBb#;<y?t%M3>yRPtXLP9NK;WjH>~BOhTnKI9 +|sXE=R?=Z|-`y`Hm&;dotK-pOzjm*s5?$0M5ZMuy|#JF<=8_!yv^&TzadEiYntKH?UJ<H>(Hj^Sm9M> +BjE;=>u9iFiMTKaY42!}lVtWjM}^<d&t3wuoO~INn;6>lt2)_*sVULA;vbc<xnxli~PWtGt)tGUCrLy +b<wT3~xbv2g7k&LC$A5K9Meq3=cv)li^{AFJU-+JS>Uf!x1+z9AEg9V;CNT_y~rhI&|5<Z~^fUhND_^ +S;z22h+kbo@f5@x8J>yw7YxVe809*KuS2|s;rWP{GkhE3uQI$0@#h)73-R3y--CD=!=FdIh~aw?U&nA +%9wTQjq02+`;SQV)XSB6-Um-Ry0UDAB<39~CO9wWw%qE)I1cA*MW;2M{ECQPq%qEE0q=3y*X4AS@O^x +;~$o+18OBi^(a4+@v{$kdpfX!#j<}kAv4mNen<}b`95^PQ~n<tn}4A>lDHl@ra4r~rGo4c8f05*G>O% +}7s1e>>+%|d2l1DjWwO#-u72R1J<o2bRE4hSqCW0p59cJ)MHS;j1V7rVM7uq<SjKi<(scdm~Zs2_;y6 +L>($(a*F^BR{mUZC!HkM!IE3gIJ_vi4oPt?IeDiR%3>FY`N%#&!m0}!5!VU1<QACRMndtjVgB@?@S+H +#A%Ck9EaGx+cnd+hxkr9<X8am2}HF}Xs*C%vg50=w(0Q9(h%Q_g3lCvM#0Z5`nB(Z5Ij=~0Twyrc*lH +DojzMU&j^K$3KfH*4w;J&i&aj&&=)3rb;{wWavW64U}iiFCdq^Ogt;$Hm^rQo+@GOZm^@3kYs&+7l7A +{C48kIWz<gdaN$ckr!6YoOb9~2#e#Zb@?$I;%04{-D5+Lfn<rr}pc=8Y@KzW2%@Ud8sjKJnFj5{n;%O +9XYjwyhKAsXfwg#sDMcqedNSLKUG)$n~)5%4>dFr0;GbbV4lu%NFN^v6KpXQ_9opA$3fV3pKX30T$vt +h%5eP-6@6Oz>?`XEW70`?Nzvop!6Jqcm@YvaYSd)&ygHLACMfs&EDfZdAYVy4r@p_`bUA{~&VwwpzNL +bWGGLr=3KeI+}3JsQe7zX?g}QViK<Qd1dcbU2*;pXhma5U<Ly#7|7hs4iE@Z;C!@EhBQsY_k-H>F1hP +mij+QzLgm*fQBBh6!f!mdj*f3U#O3&3BL26i@EcEYUg0-daa7?q-eOPXxHwK8xZZVo`%mi>#TjQQ9r6 +i2G9d+i0H6W4KEUc6vw9DJb0e4!G4mT}&X$WFQ1~$vcAU`O?%1Lw&1*t3Aro)c;;Xe4LAWMTQLhy|58 +(+$xt%f33%z+n9kZ0C>Jp_9;ZD@EZDOfS0ia%ZOi@C=ilGX_%%~w8=bu+8Cw=SiGnOWL$~zxcl$v5i) +I}YWg=ZC|tni9X3@*IlF9sA|(TYA638u5o5f<rfI@6|yxC@^}oPbY950msd%1KrC;QvSkrx#u#N<qho +QsC|LU^;gimlq_jIe>ds$DZDFi;#AlYQ?^X7QHaNT1S*aRJ(29aPZ`OPhNeWqL@px;duNEa`vZZ6y+T +}=@)z65h(qRo<}@oRNi-bN$&!PJuh~{Ec-&1^~GTdo^q!7jXlqnB~2wXmkqzPvXy7oiTy}7byUb>H$Q +@JKXS<WV0yx^bY>XUp~T*zQbJ26P!8SjECs8crHiBvuhRH1r#EU4@A%G$*#4andVcSctn6e8wWFTJV_ +s7xU`5q~xi2-3oInplnPZRWw?0aFq{SR@)l!-Z?e!O(ek<x_#+L&ojzG6YbL`Q)`Sjg!XxD;%TCLz&E +5z2?gVE2IkE3!i<h(v~&8Tz%45J^|&FFUQafKdfnJiQ&o<eEA7P_VX+<02FUBAafPAZ`fjb|(HrL%NO +=yv9qM;-r$G0L}6-4cg8JOt`~{EhVkPOJjdFWOwERI}C{H*db%&3#;JIk?WX=_42=n9tx<a(U6cv=9^ +fKR{pPXwet5XLAGd<{-TSDZLu$cIyLF%SY(UIsAaa9CaUdgNEBwjiWxosE?CSn5nxklHudI`*X~_K1p +>SO5Js;`)`>09+!JJ>MoDt?kmP&ZPtN<*DkiPJqWzt&b%w3<*L71$5B$&Jp_CYb49OH53$2uUX>4F1p +TWXVrRFOTY$@#(jXx;Y~V}u!G%U8R6C9_PH_{|AtW?G`2fK!bidI^-^;_xS21*%&saL=CwvQ6Ig7^}n +@r(x8i%+3;J2YpsJ1{OP3@Ezt%Uw5n((LUYx&C30PrxJd+4ErmU0g|dPR{vxpnz>NQ6A@5@e#wOlCY# +3trf<c|3d=RU<32sj!peI$yMyw>Nr;8c%17-B9xJMaidshN&c2-ksMb`V7x&6Md*gC11K}2?Eb06nMN +d5=w%dC(Ixb>GzS0X(b>N(fco4Dr!JaLFh@Io~O!1&x2g_lItx9R54$RD(1Qg?7uS(19%vXIqO9gY@? +%BMoDj{Or<lx<jeN9EEe0{rL&JL(jjx<WyR4iG2$F#$|EDbMBBq$c!*|dG)f>1&f%7b)A9O!+CCY^5> +I?g9o=vRLi9rU;R~wq4&3_UdG+EPsyG3n^v@_+GN;v88kgiO!(8Oqd660%3fD<qd~BVe@Uq9|z{1O(j +-HZNW-%0apyZVTuq5z~V!DbLYj=%u)pw~14ToR*&g?m^KG_d9V0+Gk@o*)Q$44HU1o#r6@aOuq@xToa +Y$s$t-$4@aG$5X~wBQ4HSy5_Rb>vR;8hjt&N3_TMjvly+5DKr<uXzh?2H<(4r|xQd%b=tF54rd*y7sA +rP98(g4vYkIiKp{@Ia_rY%p5|f10LdhqoYnie4z$Pg}fv7$EEuj^+NLx=GgK)y*$J%apx4X{?B#D0y? +>3DD8y=={-Cv`eCa&xQjhepJ1>Mab745@WBEfmhXE8T`N1+U1I2<v!eD(McE(O7iwYUQ*6Ok@_Igx_l +U)YK6rvKfhvz2xG~%$q<xgYmzKX|YK<KO<oj%jGB8G7X={7`AeX%~Ug3?M#TAS6xlro$;$!%-_*E}s; +nxH3F%di$o0PapS!CQU>SJ)UPl@wrimPpn%Ww6d=e;!!U!zn>bs#@tY%=L}1~D+|jPx$mTHf4)zCU;N +JXWH<=s4bwE%i!(L}p6bdhqUpyVtMKIq!DbmzO4oF9E5LE%STzeGKKF5X^~L3ef9!9#%qUk70W_n@|J +r$D(gsQIoz1r^HI=2yg-lEHX=<;C1GNVsJ_Hz@u<Y`r;zsyY2o_<@uNW^gGK@c?TqLa5rWpq~2J#u~! +li4aV)JUY2c^@KmNXb(<+X#aNgQPMEP2r&<5@F?sXnlqI9hP<;`H&7L4Jw`lageM!Sts98|p0$KYxKQ +r_)x+#a9{rCwT;1KjFfBqTwaG!=9(2e28bfHsRg2%1d#b&na8g&LwZ{W5*UiW4@Oh1q2s%!N{w`tgpd +J?--0EJ`nXh1a{*<M5ofJ97?jwqqaM>8Vg_Lg+T81aiIYW$g)9==Gw!wVHIYz(&$+}=)N60s}J5{R=B +@)bzAqg}+TY)Ys%kGqo4cou2&JMcn;VhT4YRn85_Gn8{Y95?Crc_u`Ckx|&<hxgCpjQX8NsLod4It$8 +;0NlJ!!mHkK^6v(tavSjOSW#Hzfd{Sza!tBYO$G*ylk;3&AW2M^76o@Vj~Zhu^M*Ej^NXTv2iYa`0LX +Pp6%^((<2IAt0&Mx2vC8C=L^nc~gj*UeQ_lK+1YQwqxZuHUos5(3euU6BcPQfnC%1awaf?LhOUiM0wS +n?re@_q?=LMoh0h3VrngJD@AH&^rmYre7?b>j&a%8ff!+%>(ro#gjuPYVXyb&$9tUx=mpA-fzK^1Ss2 +CBcj(iBmSo8C$IHt55&rYor8CX~==g<$mvLg|C(UkS|}$*KhvYI))lRV*SQqESc#sY-~g)b9wu(~i=S +gOr*ybNa2*!GFUKKo6_~eQ}*yC|tp!9=j^mSiHB2S2{eff*tydlAcDWFx0Qc&J$I5WR!SQW5MNCEaBm +<OBj3uB`h7mN|@N%bqR0LTwB6eEMc&Qm&-<Xd;|G@lP&5@TZu-uFHrz+n?^kvg&*Gw5(<8P9@4c}y0> +U-&9;bYY|l1q$MYctse-DZemLS#)EQJbQmy8gHSYc+kP0nWBoz1Y?JJY3d8eHeN_PgL?*yp|2-NrxBM +^P>gwaI`(3v7Cl~6|n-NN(t#4F{oty}gxL1H)Df*g&;P@{B}6&U&fV{EH_t0zvFkjBM|z8I5+es)RW6 +)(pu`R0|blUh?(qJH0o{g-iue)?v5hw>QKiU57Efo36r%6dxZ54W(IdF3kC#P_lD85kG(K@1J+F0;cM +Sj!Q#5ZVelGQ^4g#{5mBkG^Ouc#;2{g(>&Ll#gW5ON<Ruz&--_0e2lsaTr87a$f?*w>x}WU)(S`g2Sf +!q4lnGgIU~kgQc_h<;hu{=myLE-8H(w#NTzT8*FFLHM+sfR5w_U7OorYgG?7motbXB!90SwZm{>6t^8 +7($4Qx8=?3fM?kO!*keuTRPPH4L5^20I7(3;$2cblpaA#O*=J!sYdeBuOe(#i(2vtKL(!1`RVu>QaDp +t=YF9&Z{FV&V0Q!mv5^MuO5nN%6{H!EECQknj<AX>&A@@bcYeCLYm+(+$1=h+ZtrfyxJAbD)l35tjQ^ +$MpBhv|DCremu^>+9*J0_~sES2mUDD~mR6cT-ok9HnmMC~7O~j@rtCnaf{pmGQ;K;-)R9Z$MSq4d{J- +J&W9c-sj8L*ZVvKT8EsT(LwL?ybPCESa0oG@AJo0@AFAj@AJ|j?s}hZMTr*X&m!u5u573GIeN&i>U|C +#;->ex@&@%j@3y+KeRCJt2HCVBoaue0Y9CRauQF{P)K2en0%Sqe`}{>az0azONYwlM#<hB%U*DnI+s| +F^GgquuE_hZ?*S}umTMMqn3R#Pl0Fq>jPG2;go}{Zz!2U3eD|p_)wWdXL_yf298;83&EaHlw!~c5}LH +n5Ts_Q?d2zsxBvBmRs(8qVC2zmevHSUU_tFEgEI*UcusUqmAc8Z{9w^szcSKp~3=o$al6hWtmlmP!uM +bNh*Ddl(0($0ZO9sisnXv#jQ2)e4HBIp@R5%df<MbI;-?y(vFe-uG4+ooJc5j5BYzGcT_NLB3>K@T5D +{z*m9o9!qp*BeL|il7%z_i}glYZO7BIqT9-{NJqz`Zu^b-IXHfn_4KxcA*H`^7!Aa2>LGnze5r99;QT +0RRrB+0tusQMbLJxa_qW_pdWs$b4Ab}O>U<MnyEBK(ch&B`knrY0s|e@1U(LKz2M3r3_(87>$LouVrc +s$CPZIPG4vFw7<!bOV(2oa7`h~XQnn)yhEA#%x?wH72z4T;A%`J`1{kZA?H;Of=#cyks2dt5P)s-Ubf +y~`?Z>+8f6_OM;;NyCa@Ei`an;a0xoYTcTs5>eR}GE#t~yZ-z2>x{bfy~mk)N>4H>4Um_a|4aG!(e0h +NeBJsv3F=)%@IwOkirTccL2lPIuMNbKF!z(~eVBOcwJis-eSvRW)?eFI+YBx2kIBFI3ggAG=gTpH@{v +S6@#xG%F1o=$}B<(7l(qM6hQUbJfsyH@V-Z;%cFhoH5XI1R+PETplccvRIY*1=OLl5J((@B%X|Y8_p) +K_M^jC40`XOgs$$(I$+d;4ndvAT*{$;*hV^44vq85nD*~F-_ZPTF`xgrGT3lGoByqW`5&Z}m(za!x2^ +N}A70?u>CtZf*WES$`<Si|*ExI1@898?`+Rc;O<7>GBSJ-~!_I#48D=lP*yeQtJsff!{m_cnMpPLoeM +BGjlP?zFcoQFlT}WWztT0_wd^kEddw@YJl*Svtg05VmCwxFNO~<a-xbItb(7kgGXtE+UaPe<|Cd+_+L +g~mAzrjSCQEL&*B~fz`)WT2rh`5j9h%KD*)e=H9jv>Xz#GcAA(O)^{=zZWvyeSfJ;3ouL2b$=f|5}{C +(~u?oe4@%>qWseBuEHO>olTTouMl2GFE!07<nylBz*p{pd}h%Hh)2G255|9m-X>JMu<jtWUkIzF1juf +fB2F!wGJ$4ym|J%Hc9PwwGfHS>ADZD`pr`?!3eEAAMXnqNb(Ujw&7a?+3zffF#OnEwE1)wGvOXp@um$ +Goc{dAbr-jl$EzP?7#0VEnnoL2Eb8kR{fMfRXnAWvr!D|uc7`lgZ?OiC=7Jxby>2ur!0M34-*p0KJzo +Mge;l`){;)pJt?JEzv2M-8Pa~~Lrqk{PR(RpF?3G_3Ae^yLU0qm*iD@8CFRz&?QDc~#c+dD`Jz0ga2_ +ucKqXk4ll7(df`q$TcN+*yesnxG&-8S=+o<eGQ1)wUhSR40Cw5cO^8ov5-)Dxx>BePCjUDlow&wHQhf +1(R2=KNL~nB)m|G)0avbJf+_}Q|i}9uU}juES1QalD1LsBL2AXS*I^V9fnQuI*q>g4@jN6ff$onk#!g +`wHPRr&Qgi9pchjpVk*tl(90=KPbHoc>4QS14K*G8E1~c9WKoL&%zPNkP611Vo^GuKC!r(?-$yGXWL5 +-ZbpO-RsDtuT(kP+X30)dgqt*;HT_N9U@vN7sD(byVp7r$BzZ3PTEW)^;;4ee?27Fq<6#JFF7~d09sv +2--{@@~d*r8gE+^kS7evwowl92Wxq`DD8nM<^_g<iJ<W-v<uwRjwv5~d=rPh}i-Ad!`EzJ7%%0njYU7 +tt7;A5?tph1VfK4Ca?y`R!J-q%E&B>2w<C{1*R0H;qiKCh2SRe83+G^x9T>53R#RJbGo2ohqPwkb#$N +aTkr<?n^P_uH5(RYM+B$?ZYiQkAcBa<qg~U2_(-#Uxlk(ToWqC&2QVdtx2YjhouYB{5ZVmC!ddExBQH +ScZU#tF>Y_@_a(&8ciA&yE7r`!t@rMD87Yu%apHd96Cm%)-z2NI?Bw%+=5J~t5}{&PqwA)^?(lp%Bpy +kj>y;2wBtBk#v-}c-C|x!PG8CJPL+z#(eUY`pT|UUQvdx>`JFN1=){05!i$bY4*NwggFPw>5hZCbT3% +dRUs_Q0(EmT`d6Jpd2C#IrN#Kq{cP^JW`aMN%oaTL{h^0D}2iKp{1CG@=>IG^31FYZh2uPOV}zk#xUH +;->ZLjg9-V};ijJ=5AgXFKUt<O?zUweFGX&E&4%L{G!l-=uF$(x>=jb~gcUw^hs9VmiFy%0K0il;U#! +oc1YM#xCGv(E#P?hgV7H6_QHneWO&vFN%3UX`Q_y>Zo>sQlV8ZR8W0`&<~g@uA^;{ujAo6xbACtkj<! +XrJpU*CFv9PHr=OlU2;<npbbCcnG9)QA}UWnRapn8@WVWlBazi)dR7H*3Rz<7nMVAKiJ2aPG;Y@_+$8 +wLsNY#7#E!ckOpaXC7WEx8EYx@9yaVPjI;C8g*v;{iQtncZma+lq)1n?fD;0d@qj|I{=t+&fLc~R!XB +6Xe!zDgc=b5A(jeg~*Z-tW4Q0R3+$++IDu<<mh%Ya^&R|1g~(Ts7J<UhZJoragz3dLOYM{LjQ*UOLmf +$pE$<WJ_PG@zrRi|-@dry2<m8@}mx9+MtiD(K{)>uIF-u4HFQpvA+SY+M;NHaQG*Swq$^PaC+W$C;;9 +Xq3J~4&5P0-iZ+x1gX`0`WJi%)Rvg`EqYCO8%dvtIxB0j0%Bi;;r$pS-WzW+Pn#H>sV{mG=|62^KqkA +C$Ebt);v6uVjq}1(B3kkERP%WlcVIHGjh+XbxEdIKE3JTLL9+Zr<nE)fzgNTz%f#%Th}a)Sw4Wd<jZ# +I=f|j88qf}ByhYX#rs$2;*ch%|(@25l$+?j=2R<zs?u4iYr?snQCCwFJLazZbcSW41=B8erVoJ$gLYX +?^?ik0;q&F4#Jc*IuecZjX1Wud$+6-#Wnz7XdrjBlVRN3#U<MFO_Wv{ROn@M<7mwGN^Mg8OFS3k=!e> +qG|<@BSAQ<!vfdmIioBAIRUVWn2e2oR98ya8JbU{FG1{;w}5fb1kSi3ucxxpfA5g@caNWY}O~duY^9K +XU~^{h%7%kTkTG<SsxwAi0O|p?*{{9Njlu{)GzKTALyH}@`Br7ih|zmW8NAb`9+<xxXysY;Q<hOCk^H +Ymtl$^%OlxV)o{FLY%JR7+21h$SSgg=J$Ao$Jh+lSWaCBm#5=oz?5-3Il{HAGjR)wf(~!+$4XDzg3q5 +JjrEuZ<n<xc!oz2ilm*mp#SvP@N1d_nc17D7p*M5(^Cs<7ppyP?CLpkQR6?B(g=!UN_-~^y_A#hxEf> +fo1&g+Jh#LmVsMxJ_`>*4CC+fYwYm+I`6(UJEct^h)!f1`WC^(N`CIrh9Dy`P{@tOD!7Oo0lJVHeBE= +DyC4<;#g+8{_5hmro_Cx_*ShQwqMHb5eeQX7#Z^>>HsyR->5x9GIN**Dp=L9gz3I)BTrNA(^gbuz2Z5 +dM;B5%??B{ROqV+&F2MN&`}h}5IMt@kbHL{KM>SC5H&TS2eym=k(+7c<6Mz9Q$3aq2q>ReaIwGt`VH7 +u(5($K-`bcd1-v_LyGau>UH|$Ljn1RoSnxUaY$pBNwZ_vw7yOKBe8fcn!B)f@UZ}WdI6@C18W3uULzt +Ft(dhC))_iwbemaRM05gfvI3qjQZ>9Dg&M+`(bX%N3s(S#sYhv;fia&Pv(A8O|-q?JuZ}|{XPKXy~0x +ML<=N~vM^^#{=T*K0bvlN9sd+PL)yza;a`e@wsa?rU|n7YXbgRdYRhxwo!vmNSSUYL;9*mP*Cqqp2L% +eCV-E6l*OP~a9t)1f#qP(DXp>0!J2D5dF;M(ka3x31|>kiLkDWjGD}tQBUVCG*0h_%LuQtiM=T?NJgR +_5xnQc8r#nVWTW8j|5p<>?Y4)rW7za{GtACe}ncYI;uapQBj)X!*q1N1UqCYLXhSKMXU-EN~d{1B2s* +Kp$u{Biof05+aw)@@FzZ{8g&;I9ydT18YZLM)T)Ss3tL;ooA8{cR4J5(=B;B2T2$>Oo&krPJ}_<Zza0 +u{)EUHH*c|DRsErp@hPpr{pZFl?;0(@wZ?Rr7IUFK|r0GExLB5S9ANz~G_-$O~(eFFrYJ_fkqf|6$@X +n@v2A-)^YS}2@cYszUIjty7UWrSA!Nd@DOy?j7IB~{O!9!MNC<;{%CqKN3pAAG_=q*p3>EeZV&2BSCs +=FqzdN~S+XaN(jAAIqMeN6_gt5D%h3Y1YjB2H=p<O6J!`heLez>UZS&LK?1<7YVVfdqblsMMc|njh)+ +ndpQ*#%(^&`{qb0%O4Xha^%x6I5FA@8jxmWWteM-86}i1&`<@g)$-oSlo7lHsmd94jo#Ji0u<e)q*bI +7(8y){u7bb>W2*9;>6?P8Eu+u-977E*aVB<N<3T@qa`(H%REiN)UC4o-EM^7AUF*xOqPG(IhK{g{49b +w<_@L5|Tj>AMjEt^d+<e~AgM=R^-!uXbheM?=J<MDpnM;bS<t~w`3lEbde-qIm40nl?YdgANYzJ`TNS +@>9G&-Q}X-OxqeYTS*>3l&Bb9ClJd)i;b&YbAr@>!=&G*p$FQ+tZApwD#{wD2wLZDCf$B*DVY{0M1@2 +Aq0Ip)G5WIYW-i{t+G0YL^@>UreV_NrB-DkZp$o@vd>jiko=x+L$}muO{kPL5vq6<@%i!68v?nnZiwx +M2vz7sI72QG(r7PethZ-^Y9<@T>7DK2F>(C`N<XEbyAOon^Fk9+_5UJlfuX)>7CdjCyC#6R!elzVqj- +6F(>c5E-R2u=fASIxs(6=I{bEx(NOp-hx<9K<glK@?>Y1y%V0kaV>nFaFoVO59Ny32pEx|iVI7Auhb< +fiMKL&t!<q>U9^~*v4$C;)$o*~Oa3_a<<nRcGA8;shc$LGjXa>h~IFrLWIb6r#4h|pT@DPV*IQ)#m77 +o3~F&M(3fx}xk9M7S^;Q|iRIn3d3Glx4l+{59^99D98hQlv7{GLPYcwS!|hI1IrVH}5ZIn3tp9u9YN_ +%eqz9R8KV?>P+M_0fmJTR4p2P~h+m4s$r%%wZje>Mxns&r}XmqT0K6^(z~M$|)hf1q_xQW3c6M20Q-B +o0+|BaOduw{WcBzWeGwQ2@>JkGe|@Bbm#45o`%MgpUhwy{6W`A=96SHos1+gJPy@7hKwf`lHiJaKDmv +UNj#ZNOw?9@ze!{@{7r&*@?8GX`QHd)fIP52gUe<;|0C3XG_@biZ3s!CxrVtJhxjuQE9BG)=`4r;?Jo +P<NG@5^iT!NwErOeBI}e}@Y&!Zh5(ilUUmm#OZzkZ`JRhn#2mBM4e;b6&BH7%WNK(O^Ml!j1I`~}<HV +$g<9#1O7(`L)cqvl`DubNLaUuu5Te6aM^yYiu?ucoV}gYl$7d=79+=ONVmVeZ@Pk|F2lE3bpUg%DplE +qQyFWbo~7mk9aKaq}^c=F{DrO3TI4Rnt@BSL0LTQNsgY36oZ@o|NZesC4*^FeJjyfXI6IG5RNtPEQ}r +3`xK)M$R%OYnpZSa;u9WZp&TM&OAF!%thlot4&lLjE)tKJjm=!M>dUbrXz<|ywPUQ!a7JywWqo2*}B~ +BNVU5NHZwJc8X;Xw3**PQF;0vR<AU((F)oY;!($jSFI9Bd(^F|Y)9qOt1G;27?0GH|(94>hV|BAgb}& +<7ZVt7a=io3^#CR|~hCzSm2i<8njfbb!%iBli>*pU3*i9c4+`UIgXwP0@z5Dd-*Z-yghJk|yhYuM#Z1 +~N$M2r|YYINk7u~E_E#!rZuI4O4Wl&QDI8K=dY5~j}(%rj?M5^tNGG-vL-<oOF0F1r1W#Y>jnxhy4hd +0M(PV?}1x%2nB`b8>BW+4DrlnzifJZ@7Eorp;SOe6BrVU6z<+&rP#p?XCu1N`tz$0~c7yDBy`~%I|i{ +2O{vyYOpuZ7Hg;e47419#E<i%1=`L$_;dH8x*|WBp^eSx!WG-$Y~Vd3_0^f5xzPVbk|_8?n~~th2)Sb +Y2=*ri+RGSd4`QW#9j0gj3`><x?J{VbtEt~iC{Z3@skFCby%F{|*f%<88_9uoZ-D<(Y3bL{7~0}O_bl +p?3gNQI2JR1Aj~{JaEdDIo3bP<&D$OlR(*UVCX#D7o{ctW#72Ry`m+cC{VjKl7W?D)X>uRvgqh|EE3g +TsX$8urr>@+3pvCvO0l-xk$%clNW$x>;`DxF5svLP+8PsKjLK!(FukOn3@xtUTAIU&uJCwF?Lc1o!nn +n&ayHU`*fUhM5cnrNP|_spW@>{#DpUG<#<Aw<d>Ih0x}psWT+!3JT|c>S{2vjMWwsx`%2R=ZKuo%h_+ +8}lptb#1*{-RK?<@g(#5vAbLtrE@9uux<T2_@g7;B3<QB^Q6+Rvl66tL65N@hp6#5XbmstRJ|TGkQSI +v_c+z~Cj5i-xt5mn`t7c>^v3@K=^@vq|AXm`bERjaHHPu70snR?1z;SVwIsD|w#BH%7yS?9e;JL{O4i +YwkLH}kOjvVjEnb`dF=XO(>pK@xv+^9X_MOY!u~%F}xzc(KFS*Cxo}VyRHY$OMyw6d2r>k+IV|){SCB +D_X7tEq9(N1Gecl8mgx=crn{~zI>_9>-P`log%g&KcbJ4IUOQa%|@``b)9HW{dtY;DISUANarxB9#B{ +Gt!Wqgbb_safnazmabBcjNJ+WQ?-C8gpJJHLAwn*57B)I%2JjjaW7?XVDl8bab;(8#^_txnW__uc46# +hbcj9zNJ$gxY?H*_vo2f4VlEvLEPNfjhTbFxs02;b8{Rw_u%IGKxPi(W*ay6=4Jyo_u=Nf0nFT2jgOo +Asp<PO^G)3RJU0(e)AM6ygPI;U59H>29W$>}>A}saJR8T&8`S)9^HpvR<7S1MTYQ)~k+yw1l}k|Gz`9 +sK$2hguizgBAXMmb+FHu?m!<ky!Jk8Io-bT?sLMGFBRxa=X`drQB4Hg5&w~BJWTKIn|4c9T11Xn8`Na +Igx7uzHky@u1-A-1xcnK{Rioeiir{?i~IczP3Wk05PALV_3m#zjJ0=+O|9w8%$CCPYRqO!5K387PbCQ +ZiHE2L!jRgP#t35Fet`>5v6=#K*;l|IdGhYyO72{;qYq_D_JCx!zw<Cx7jI6uA9qZt%}N{8qO=j~o0` +!y5jl$^XCLcWs?!{&#bLrtR-Wf9*Ix)Ar|agMV!t@X!AJTKVxW1peGj?rt|+WM1y}<{K?<Te&;h(8nQ +Nzx;x&g+;~p{AOFpc4<fHZ|^O;@BRmNKKQ$bc0K&aqq`q_{E0nJKK1l7zkl|*=U;g74}W~=Pk-L~mzQ +68^|jac?LTnvjW^$V`<?QNLx+zXt*oj(cKqF%6DLpAo<8&5+4n#Au<oOCAOH1}zn!oD^s~>u`0}f-<% +VyZ7ry=OV&kRnfB5mIrskH*KVP}}ORMrvFVJ+o0CPhNH2>4(|DR6(-@ZWBwfp}H`s4nqzgv6g4`!{K` +F9=6_{^@mEb-e8=6gGs%Q~3v>tMdWgZY6DW_*U%-TYbyGagMqnYtW4+#jD|Ro5C9X62;kuAL{Qidnfi +Xg@#CYM;G)r8P}7=VavCS5t?DJRWejq~?jnG%;(9H7VETu(|A+9gB`6Ld>ZvtkZJWv5@o0JdpY3(iNm +p!~{~Ng}DE`^Yib?FUSXh&hwu9d$#6>czJ<DS6o~SgpZ8OPs-m0(%JA~F-Z&aL0$u)E-4AMq#B0jZ_9 +^J1jM?`%uJomXPwQq)@Hj#p2MA)+u+0fn{a~b?rau_lCb+4DqG*l1{by_kV#!p9vuR*bDJDIJylH2Hd +yWUT)QDF$B>=s$Vtnz+9w%?<WWy{y6b@cva+q|1~J!=YqRDUtm~|44l#9kwz_jNKL-uyo&kh2q~;h>Z +QwB-!r-bp5Oh=re|BqXx*@}!yBb2UXa*0&y&)r%OaK}$0!T<KkAG(Fa>$>n8Vz?jtoHR;IV%hqG-KDe +=UGM3&6(th=}^3Mhb=oRjrmYr*bm%u9b(rWz#WKmod{Gqbh5gU#%Jv!wPW**G`c32N7%};IujiRwUZ6 +zVZ5fYT{~`V^j~2Wf&5vbAuTuEYRJtn*wnRl{Eeb(6>a-jqiOthfXitrqxq~{{UxlkK?7kivzmi=SFc +V53~CQ42xJ>J3hH|pVtJX?<*8tqot0w+9?8z@GM=@WS)w)1mYQZYq-Ka#yJ6U9N1lE3@~oWE)|@rN)W +9A1rj4&KHSm~a&&^qF%@I}qZRuF;tFv-aX(dC|L5PueIdVm-0eGN8G@WI7@-=N^8C{#R!#r<^TYV<GC +Bx!hn<Zu<tK^BPb~o!AOV+I(X?eMyPUxqWkF`tpxUQjhx|OnmyB~ui53@EudHTqh&g*B`;9-VTUJB%* +4k=vgf8a1EV|I4#T8tP&cb2Vd!*xxQF8I&B!hsc@XBci>13gVvhQYepCa%Bv*V9`Ltj3us6*3CV)aqh +pN|e>s)wz62ZxC-?gIw**(1{()_ve}BN!o8;KA*nL^w`foXqPSDx)lY=_(@A}e92p~04izy5*UMUpvh +a3m$llKZC$4Jqf64W^28<L_~=o#^yTCRei(Of4;|@|9zc3T`;#7X^|gWJ{<h&UY^~{j7_eW1FS>>KKM +43qH*;_wE$K71r!6!kBof15d<SkK<a1ou;eIrJ9>i~~cVzF8f#U`o(UZPnH_|IT5Yh`E`Y1oUcfGdOB +Z-hBcfpuN{cDL|v>yQ%o5o*5{GlY85I+(UttTO4gBrWl2h{qN>uf$L-bul|{YdX4{-n1EFx{8*j@FUh +b3<#@yzIZ35LBepN6l|PFVb&XSUJlvA*#Q1w-7QuqODw-{sE-F=ui5m`;q?1zNA0I+kb5D`d+o6<-vL +_(MS6b{a8jP43EQ2E_}DC;lun$7|=8<*`I_#S;FRq)OIfqvIU2DlaO>Bl*I?j;tC%+mXPqVZsEN>i1% +EN>y{7e=jJGoP2kJq;Z6enxtp2M(i`b->nz`+#}P7dTwA)n)W0wBo9pfJqa9Dk)8p|v5`&rm4-%jWCK +^KkF{B3*Lo&?!qPr1;y<cOW`moxb<smjrzW~xNT~GQYcO(6vp8L%WYwTIiX`uHedMJw?%A%j!mKS_sb +=p)yp5%GyJqqZaegtTLnDp1YO}do_*!(%4)PsDZ(Q1g6bGgRHgZOA3rSZ7FAa4>R`j8+ff6&-~a*eMC +@g3_G**nso42XV~4AAT*?YW7?T?+zf@6o>GCh;|LQ~Imqrs!A5O`5$Vh`ZY$?O;kLA4*p>|MoeA9E0y +oHU9&2kT%Ro?QJPwc<dp6jc@Db6H>IGEv{hXhp`^6HWq&eA-BW#q3Z5d&nj>DEhZ!czVEr8n*mRPulr +>lriT{VpbzOWR__Y47Y3tGmb8Vr2>8&YZDBOswWND=AnAU;f0BmhNkjR{oAOm~KR;IQzz_ZGZFR2Z`- +v1nUP>ioB#*E6NPp5deGciHoJ9IY&nA5}GYJd9XpIj%X!`k+eqtE#QZI<NC+Vl@PD1N@)CQM>8`4n(` +azrOo$Ld2^d`N>hL*GT2OqTEFraPN*z5CN&PqZ)TiM2Yw0^_@h!^Sz+Aq{iBc`a*>6UB=1K%88j!UZu +`3;y0R62#~NT>*3x(^A3JcW)8F4u(USlfquhJYQme@?@s;A{Q6cwt2jA-{)jw;Fd}Kj=e)fNs#20-gK +bPs^61=}<Q67u!g8fW36k=lYUf$pE3wdyVbE-0|z@OZq(p<*N^_)t3j_0#f`V{eahlF&*f``og%-cWk +dlMsvN3X8D^5c^SSfKl6Oi^nF~spa}!ILwUoXykTGmbzr0Ag!rI*^=zc^OHt!{Nh0LD<Q5;LS2v(nAk +Zs-gxnAG!ZecoAPrwyMppk&M^M+jlU?noJUG~!1Vg<Ak8PjE;KyOk1>eET?rFf-0%1cSY{*=m2GqMA! +ndUn2x$O6By)bS1CP-*r=xAo7wJ5$Z9MtSbC3pn^_Lmcg!_^3=-wp!`#z0f^*w7t%DdZwQ-YF$-NrgK +?1?`U(g>dir$g_7I?_E^5ACiS>29aJV2W$3#5&?*YF`*r`vRSSA6VP8d*J&t(8dB228i9kJs9dfi1di +>cE4YvuHL&=Tdt0~f~)?5q1-`4f5zWN$7{}Ky&&x#QQhnv!$rEn=^<P<qJP=Hjjy_SkZxoBB2{xo*pX +)6Rzf?fWH`d$UVgx{AS*zB(`#;zMwMe!|HajW^f*Syte@T6tXqFNmT|1=zX|-ld7O|em995IJGtM#-n +Z7L+{>m-@l5iFRB6$BygwNdeV6ADO@?P@V}zkEq<0-&KK3CYS3Ydx<*xYg(K_Jyx;B1fV^cbeO?PxUH +dTB4O1fVX^2?VU+GKKDn`Gk-&<FaO-s!IXvR)1UtV~E1e7oAwv>W&Z{s-OyzOQ%h2ah%oasj?qxc_Xx +1D%Atr=}kYeHrjm=*!(~fhhq=v|k1@$U}|Y>w{_;H~S@ZA#XLJyruE-AYRcL7<;fC_(3}WIF^Of_-cs +na^BBvRe6!OT|4mb2oKUnQ^I%^$8~D<)ljnz%n?4Mj~K1#6CI`Lqlwh0@`cS8<s5Gk0PzIOWi_A~5I_ +cq!DK*s5Y$mOGN5gIOX_62smJlA_k=()RJ=-tre7gLqkkqtH9wNJP%N!7AD(|`3-zPgmX9N&m?X1qOq +-nz>~?vyTViha`_K7y2LE%uox%Sr=i3Kp+>ddVYGzo)cs7-`z)X4}iO|lo;=*21s+hTuYzCA2D(lSL< +!t4ZJWt~7R+xyZi?l#d8kfUvhe^H~zs_r6YL+-X*FG;RXGOM^hg}UmbF6j<9iN+%mz!;k7wy>zYakpU +J&7?dFKa~(k0Cj?ElHBDnNBmp*KQ%ruP{w4P<(E>)pa(tj|bQ$=B7Kct<$rzt+%DFM!(N_&cU_CPD_* +JndrzCv!<;Vt;x9yv(l~cnW=X2ATOiKpOKJN823CeT>y&V>ZZ<vuQ(^*QY#^`NHMo!F@JV)ftdIbqm> +7pOX9P0^HkHUgt@mRSfa*`O3w!ARw79Mxz^RWYiJSX*{o>`NrGmcXor7hD9t451FCL0tu``Guq-qtnQ +8D3Jp^m2ZMxkG`FoGzMqD-_-;;zK(Q1#kXNi!J?0HZkTv8{oo)&BB8tXOoHda<U)Lrs=8>X_O1HTx_N +v*n))<*x&wDWT^X|d81)}>i(7#oyA#KYRJAbq-Y_V6_4nXJnlD^^(TNp@=<vcypBTrqn=mR)qDX3x)A +o0XFeT#R;>+}u?T+jK_`%`OxTmw>|1B|g<AI_$_@qII1}hM*k_ny`*IJ<K^!(A4a#4IPVY%t@bT%gTw +*bwIk`0kv@bEh#q(sYc$#GvaRMk11u_w-4xNk!B05_B?8OpZZ~31brf<UK08zIfxtMVPu+$A!a8eA|3 +$cUjR8vr~C{&PVUf5&(6arQ?ngbvKUSCRMYKfqSc&_RCVLRciq}zawe|Gn}KSJ&_81ZV)5WREXMS7JF +T^w+FA|cNvQ8=uZ2J%%7SDgromhofymF83c4Y8kd=&EQlX-3Sj2_o3{WiFDqh1_<=T1KR;!JS_O!$&0 +tqRHL28FR=R!_tVnoE$5LL-dR%o!O32jTqEF5$_pVD5S69>}!+MWQ~u)#}h;>o$Lc28bl{X>$~POCE~ +jTIA;egtDl&PrRw%UyMCPY2}9r{!OtCt6o0XF)o7lrn&kdwD;C77K~d(~_GCt!KGC)xI9`c#iVOTq~= +XJ*<VX{sTDTWj8Yv1Sqo<YSEFGiIGinWMlxV!6=8+a_g1S2{ck$s@>|MtrdN^(P%-cJqs6A7m`%wl0G +|wQGSj`+uj@I48|<R>Cj#XiDDeVbF`3j^~<-hb6y?I?RM>h$gloT_U&2<>)gM`uloAW??1o){I2&?+u +Ycv&X0UJf{+tS4QDdWDvG;1>Q_+Pn<s~O#sJT*;#)6x4<7Z=;=VrK&c}Uy9f!Ug`f)dZH@BWVEJ8hxH +;CKeIoj_0L;Hc;ejGO&xjCMjlX#f9+<qR13wivv^R%<M{c3_I%Lu*8hi7Q*Jg?r|e?HH10f$?;dm(o( +;_;v!Iy@2jI5$7Z^YaW(?>TP2kLT|scmI&PhxssCs5JZc{(`#vF?U0kzkhqy{#$-sAFg8VT_67WpUwB +b^7sFp2Ri)zkF!Kl0++Wuw6yzp20G}Jt?RcA<nGU&XYk42Gg$CMJw37?w>h7}=fQu))90QxbP<0+D}! ++yzIKEDjU2uX{!cyi#Z!IAmru!0E$%x0%}-Kn4h$%B&fR&=K$e|bd2Z~r{@<(n8}0#&*~~(=DvA>C<} +UDi2PO{VIGoI342RJiMshfuLj#9l9O^i1@n-M>hxHu(mBTs?&vIDHVGW1X93J7YoWnOc+|S{w9PZ`tc +@B4RxP!x@4)Jf~P~<S1!xRn|aVT&Y!(k+cBRDj0sN=B3i{FFMwwKQvxxLI`J%@E1)^b?QVL69;Io!ix +8HejQOyMwz!x#=DIULTRfx|EkgE-W2NH}cKGT6wW%wau;bsSc6xR=8{9F}R@$Dhy5HV#ub6gZ6G(7>U +N!>gVQ{>WiHhx<9)!{OgE2l{7zMKjya+y1w?{~9eC=XM@GC4|>^7_X;3ydHUaNs0WPlEP%%^q%eG;aV +k?{A;fk{!4!y^Zsk~{;&4`_lEy>$N%?+|IhFL=I__;k9c(WdGenczNI_w$2nBn`*Plnhc}UbDICQ=wZ +Ez7a9!HJ25#ZMFL=Bg)BZ82=CxzHQP;>?dA~+xd3pa!DpLKytig^mhfx|L0{jZT#*rE#1Dp*L-X%9{N +D{#NdVmZDes%)f6aw-F;Q0WZ@YRF=3jl*cLCyhtgj0Kg8SprOmfj%00FJO4ChIo95uWMC{5JyB_Xq!j +AuPae;R^x05n%jH5Pq13qyzj3z9g`30XS{|$V!0609-$S`Pm4tzk%Tffa3>(oOlcP0a!bbrG@aGL9AS +5gQ(so>L1}lgPEUQ0IzWSs{luaGkib5r-wqFLAuWXya?Yjm>+<BhJow>ct3#iZU(sk@MM5j;Hw4vD!| +^ifV?*Z`~aL80W=Q>ngDz`f|cb}fO#WW9z=k*07DE1KO+DZ!Dj*-;p3x04jrx`djNhLNk}HxHv;T7hQ +%KQ@DO|(!OszZQ$Y;R2S0HDuZ(47zY4H53i1s0B$|*_(X5Qw0KbB-5$t7vw~YhY2k<0-RpUV}g7~Weo +*U2d`B#8LV<2x}k7po;OoDh22k12g@&>pL;IgSu2Ea1`zH%!ee+2whfM4Fq;*kL^i~}Bk`dS2VO&lvr +Il%fj<_94z93hTyx{>8M1z-_;b>P1Y;Pdd+1HKpFU*P)!;{jL!pA7gBfDcZCxd7n10G@*HD&VyMk0cV +J9jc+Q&uuKNegI#;jnQO3K+|kSTZGYbppL*l!tdY{0B;1CKNr%1vLO5^8RU7eZvpth0z$R{UI!2tw=n ++5MTER?JFAyJ0`$Ctl}ih7J$(DY|2BXx-NF3t1!#q-SRL4B0=%%8<qcub5*8L={8B;!05<_Vx|G>h1A +OdGm{$S52jE9{GW)**{GQ_h%b@KqV|Wt4LimyaF9P`1GL}|3z}ysu+W;!5(3gXsnB|1rxtxXF0k9z*W +H-Ps032;)`Hum(%F6i-;M7c*Hvt|8@NM{N0WSv_pT%$!z+)V*0hqiJXbU*PR`>|i1z82OTE%F%5n%Ny +US5E&W`h^-Qx4Fy8h8@x4&b}1Sv`IM@OTd74e%O(LAk742%B<QTWbLrhi73SeuQ`4#rQJ?;NiPiT6lK +l)4Nz1zW`{o!~7D$<^wzlUnAhP0GEm|4gziic!vYhgE*G}{L>ni|Gfa;+XQ_e;Aa6|+zkCK;Ee!#Zej +6<0eoT$^S=k+CHS%d{}JGx?eLAzP&i&<eqsRj+5vnCco@LhJ9zy9d~yd1`wYOTrHr<503X@K+QM#tM; +?YY3w{tTdW82;04F{Qb3?G74Dhbqj6Nd3%extEuL9iv7;ifO?|vL#(u6t!_{!rf53d6J>2Vfk3&5Z!_ +&5Tveh-TWVbD{oe?WNtY1TK^1N`6_=t{x94q(miS)Y$k`z%Wr;be{@ya=BK+vao7C&0G|@FM`T|BUC} +H55+W3w#TB96<YCR@Zv~DtmeV^B2Hh2HwKgo?ihvzrx~A0(kUQpaa;~0t|hP^#fr5mvP(%Fzj{kkM;m +R+Yj?fz`p>v;Q%51B7i;s&mDw%2mG%9?|1|F9&j7LXWj-L1{~r2halg8?*vE=vvCBW-w|dX0C4pYM(2 +Ehkw>A7U>^t2rxN%9a09^i;oAmy9l$H_?Ew5Lz}{7?ycU3)j{y&WeHp;_j<Gn;0{q)?;B&CA2iSa^*C +Re8aRT}u;6sGPCz$_j02iKQ_#%M2PVzAq;Hp!MSF-_r&+#7tCVvQZ4e=n1s)MkAM+5Z#2+9I@0KmB)u +{e_fHhjc*_yWK;zF=+PO@MR0WObAbaKcx>(_kM1Q2L7ZR{$q|&G>CHz^~wI1V1vsB{It=LQMmd4P>4X +0Hd8iQ@|0nTmX3jaD)NhGM+*B^0%yAyb3V)63`s{*Z?{&G1-ZH4{`qhAK(ZxegwV(JQLtUKXUp29M(k +0o0t|rv5B`qfG=@;FF@aBNDKS~04!)`{ZA3Vci^i7`*MJvHFF+rVfR4Fzz;&a>+w9$2jOkp9$_ZO5f* +Yk2%qHk2;by5!Vfu)@OzFU47|*6JUc&<;|S+)9N~J7<GJzO97lMN;|Sm5IIbh&nP9{b;<;DM8^SDZk8 +lge5$@tR!dEzs@Fd6aoaT2N|Nr!3caA;j{@`$6(Qbt9t>xn$;WoCN=H}0b&Qtb)J<d;{+semqwYa=SP +#HYQ$9+Zcl#i2@Fo3vs7^&$PkA~iq6gsh|bHh&T@wd*cYTWI&bz#4&3;XB0u;1T>eRUW1bzRuYo!H|# +Yzx@yo`QY_i1!7*?A`c`hKez&IqX>td0y9MF8>p>Kd(0P@K?coNSnF#BQOWGnb&;-{<Ur9`tLMUhpK8 +8E^5dfZs|dt69as4G?(r-(69ZC8a0Z{m@$JaT)2>AWn~eE!@(*lKOg?(lU=)Zk>{R!jvP2}fRvY)lMg +@qkhHe8624@YPd$U75lsQ)-kSUXqOV%J_7pXqQZ8Q254gH^?Z%Dh;i6J=^^{W649-<x)`8(7gaz~3wP +==4)zs8bGo2pm;J=H?)eP#sc4MRN0t8knxq0m=T?>ZK$hgYPThM>asf>(MRor})xo3m@RWw8VSHT^B; +AabqpP93pssEaqQ<co3nZ|z}(`RN#Us0q}HJCN9!~9)6b@@D)n$Vr*f9uulHCJnzFb*`g&Rt>#4_C7x +elUBzc`W4S-8HA62pLEpUENCsJub4f0KA%``=xknu%+e{_}GEu(p`PwkufpM12wmtIQ7h+Kh{vc_<{W +e<7A};g3~=~$p6WwlWSV8p2{z${!b~&FZ17Nxk{bUKhU>fcZ))uDg7}DnK`3>s&u`MIn(%Q-k3AdZR0 +=YOs)<n-%{_He=D%S0JqN*K21Jh9ZeUXhWm35cWW2l7WkBWqJhs7J|Fn>@C{Iq&x1Ix{~Di1M@N&y#6 +&W0-aN8l!-jS|URG8{UVQOI^6IOvQXc={gAd4;Uw-N0a~mEH09nztcb^Z|#ND>LmDe-gAzR+L_)f;ET +(SkKDB~SP+47Ea8F0d?E#LjL>~%o4JpSckMY)o(>DZU^=g)s9!xH@mfXi0Rylb|iytYi)Tr%vP#q*bu +Ey~mHyfz=>JMdeKe~Y4g+uXdDP%ge3WVHbUlpvo03i0G0xz4Bh@!_AI(Fti3N9lC^lMO?L3?UH_5hOA +)l1!O0g&2)SVm6y8?dHsxLl!JpKyJVNcCvKoQnERHI$5z|1zEXrC0V_CHL=_6wEx(&X%l(UaVz=5hAH +Hg&9S6#MFQEeDxU1jHIhf|apaAHN#vz`GkK(7IoY?%Mk?=}MQWd3MTWnvkP(LzGNw`?w;oZ*xZ?_$d{ +QAxPADY)tU_j;Q^=h23dw_S{$~nV{Ix>T>J_s5f<g)k3P?#w3AyjS`^ZBNJwzUU_+hep_inOh&mQvo- +~XQ0@7}$8$!o8@M*Ffi-+Yt2cX%(^dPyO#H7exj(WB(pv18=Ki4)}X>C@!w*|X%_xpU-`Pd*_RzpNwg +eXo#DKmC;QMMFaa`SId6<nzl4X>4pH&CSh}SMcXC8pektLcD=#bY&pB1K;>VWA6qH*r0SLQ<O1eu`-9 +OSMDOal>5kQ%3sJ?<+R$Lk`M?#2*O7~_$d(H0^x6m@GBtvIwhEFhw!^0{GT9vIfOq0;lFSTKNP~pLHI +i$ya?fc3*ldY@P{D$X$W5j;r|BVKZo!Q5dI>BZ*mJidMF`DM&R|uAUDCBcJFTqIrRdJX)q5_&IA*sZV +XXAnL`wq6f57{N0i3D5T(g2d<cZcwYW$KKNZ3!LU>%$fVsZ19>Q;j@Q*?GKSTHm2!95`f9Vz;gpVX>$ +~F)-%6uWbAA}D;oqiDB(48n#A^Z{uzX8HO^k3~=34Bf0)<2<YXiGe=Poy-1DFlg{g2>Iyy+JN9^)*%6 +cbgIfi4a4yL=3Me4SDs{P?g-EntPMROevvho9bYQsi>(`N|l<L7F}=s_c{AIxlJNG-}n8#->>^;JNMj +k*4}GgYwvaL3Bzw>_yan4rKZwHsmnI&qs&+Q*=*Y@dsy?YC=m+P9-vU`1cmy(t`IM9DQ&GnYYG(FcTx +xM&G79Rz9+-K!thB9pUUtn7=9hYZ)f<=7@p@$JI?Uu82*YAz6FoagGY$v5oYoTD|v)`9^o{PaHTdWS6 +h>Ey)P*@N0ahP8Y#c7A?4OSa>75w@GTkM!0`PTeh|ZtXZTqRznI}yG5mUl-^K8I82&iJU(~@@(>U-X! +#~CFJ`CT4;af0#2*dYh_|XhMm*H12{0@dcs)H}ttZLJLWio{s!;EI}xo2~~#*KV^n{;ztHHKLtBFtus +$zU*=tu6hUHf`LfTepUC1akym=6@0V!ECnrH^U9xx_N8YEs>^hi-Cs^HyI6KMr#Y)(73U$k9IvGGSp} +>n#?AK2VSjO`1^-g?;>f5w8+-=DUZ6=R;|<#8u|KoH|z#@9^Yb#Fj%Y&>eTb#>wJTsc0&^@!yAkMHd( +As)u~fYy)JNU<m=5yMmWc}KKa)=b$WCWH~5Pie7pf~GUKWd*Z*3lK@SbJp3N}>!&?o;$X*spxW(#;0q +S|wt^2pfAAh`lPt1Vpk)rYVo+WOuf(^KC3XhDiSR%tCy-M7`*PAvM<A+6>E#Z;o$gWR&KB?V+>&^UH_ +EgmIO=1ekHES?#(D*0DZ{0bPSsWQ|i4;VL86^K1f2+B5C{VEQ7@l3b)~Qp6Z*X3>wtv(b8W7GC^y2GJ +ckL=rsPDXPs#T>{P|d(_i#d|H+|^4E(V(lQ9)?av<1>|ORS7g$Bdw7U;To3Czibd;Y8z$>c*LznFYN+ +&6=60yuUk6?xL1GF&8>EK#t<k*S`4g6cdr{ev<qxgy>hj`MDRsZ80&J|wkFfv>sD)+v3KX1Rjah;k0v +Wdk1*ez-)h1wy*ocqscI;$n+&Y37Uk}B@P`#F^s(ACds|JBhR&>OilQH1ZQb2#cZ@VLA0u>^F}_(`=I +=YSF?Eh8d0EvT9^cH07!lsClgnk@_{^FJV<(r(ilt<Wbh%8FH>J2%is2L|5_u0NpPN!jFEy7-Q4B8mT +={v5%;);`>nHM&<d|;G+~d8Z5M@?uxUy)BNm)NFT*+OMtaK>goPzya_rs(_ol$d!Bt9-&xKLTTbg8mz +*)k;~BSTrSVui>R)~#D7^1%;3{7~cy2lL)jmU6z4%eg{+e!lYc*I$d=;Ov=`%9%4~l(T2gDi<$aRDS& +NN9F3zmql)H<Hil;&Ye3-+ApN6;q!gBbbdC#hXY*)4s>jn^9OODo5+D~9tXNrN^M%Nw5IJ!Un)>WQ=y +VZ$CWj7j^p<g9XtobKD?q&;9xty1;e*z_)vzoF#JG<AI<PH8GaeVuVwhp8UAjZ`!i4ZGf(;dny1M3Fn +fA>`ruekyr|jJqj5k$0RFhEr?;o4ho?_-FZY@?pJqL)=j+$Fanr^DwcTqqdxFnBeHu1x%J<fG_X_Y2@ +K@^lHuno?P$Qr=-%#_3C!VhF)7UTIu^N6)YhQSK`!x@!R_$>=hH3VfnooFo)NLN{ShZ?3s#mG<c(Yoy +JRf<~vw4HZs@1?30q$N;R&}fD8-UiJdKHZSH;+nn`0TNUHL6$lXZ!ML{8Z)oe3d~O@Hx-#U;nR78~O( +X_%~(zdH&}9{*C<oef$M|^||4hUmqWFs!XYcXDAi*2LP3ovLDcK)7^vn@nFA~x<7;$7rZQP@h;cTR-n +nBAUvw;RkT_EH`;@2?gC#t^8cilmlv3dj#mISsb0N0dlvC0M)A6CyyBZZh4|Tk<oLsCm9=pnui*XQE5 +akx-+TG;<<E26*?Rf%<?ny`>8JA?d(K?Cbm<%)PhP)%{W7mh&mKR1e9dQ{eKyC<&CNeJI5<F~$wM0lK +cN60?uUPnH3IWrnlx$BkdNS1%?iSL3>-Mn(4HHAe(Lby!}E9@O*?k%p!4U?6US3Jbm$N^sOaR$lf>(9 +!gZ#BIL>}sR8;f>(|UUU{{8Rn+_`f~SXfvaMU@kNGE!Gjf6@V5AlDjN$7lHy7W`DC0q%{9i)&L{T#UC +kw73ua>oLFguno4w7#%uvXaf8gFM<E=-MeYamMz5i(dNyY1>Wb*oulu+|DN{l-AnuS?GyI_hI0gbf0k +jEuUWHZ@}^CjCUeRbK7IQ1-U$f_=G4^GKAcwrH~gH%zi!>SZD!A&J>Z#Vo&oPX%x1G6#=T$suU)%FoX +ey&Y}l|J^Dy<og$tCIm*?d3o;`c$n{U1mc(Qy1?)ZG_)G0c4?3g$QO|o;&BaW<d*MI)`=VI2oTRdjbZ +@>LUSFc{ZcJScAE#H0j-ASJ7SKP;RzQy*|j&Vo@?ET`;`4r}IcHl2NXpkK;ksbI;I^<{BU1^b>advi= +xwGrPM}H9fKmPdRxhzLt)`=OQVb`u*0)Obo(W6I&3{IauEzW@>Y=UiA919BzMTc!b9ymg7upPjB@x>P +cf5?#SpCE_df0s|2sg2KX@%OiJoo)D;`@#R_&6~twNa%l1P*4--F*@-7>Z`A4>(;HrGAGWNg$;xMkjL +kre=a(3FDNJwwsPdi5%C!`zz0CzU?-3faNGD3QOr>y!`DP@KPL+Kgvfs<QL8+ne!GdX&Jo?Xd9#phrT +#rJ*Wtf?`}VX(jT*J%96pu(CFCJ!0KVWk_zHR;3*e5=ko}1hCq&0*@ErUGzR&~E0=&V0$k_HHk@*l&= +zgNkdx$!GNz|r*X~-vP&NMXnh{*RtqSWI=w{PRAii+dUzTVk^zwA;LvOkEOzz(1<&z~Ubc7(`ukogZ9 +SO)FCAbN&rh(Anp^ET0teMEuVou!Ei;s47ozd)DgwrSJGmvvzVXka<~ffnEbJpzuU(E+}L=a3Qf2Ko= +b%WF1)P;bV+$1#<LumeOPjB6*Rp&jc@!Vwk!*g~R4+qCB}D~LbG43hpI`p@x*&|PIB^&EVKETC7=4M_ +)V9C`-5hh4}c>;moC(?q?P1`F$d*TX6eUG@@n{7R)EkZqyGE+W4j_m4mO;<Uz%8@FRQq{7bNTS}t?x? +Yxkf&aLUxBxi#8GVa7%Qgxcz9oua8p4@|+)GrE_A~b-W#RwpufGz<nGzi|$S&z9O(vz$aqHGC+P7sHt +(;_`C8G_ra8#&3V!-!A&wWSK_Y_eiX!u66XV#fuY0sal_6(oYWV>q5Ew`yQ%^tV3zfLUhXF1Pp+qSJQ +`|}yVA9~_S2lO6#?MjEF1-cGBI{D>#dT&B7Wsd7Y?<R%_8qi+)f#?N|hCU~WdNNMkztPz<XwdAr6?_u +=)W+<Se3%BW&8lzZHnlYTeSLkM`p+>QasChTfc+vKNLj!ha4u;8{_OWC@9n{4pBPN5CUhYi)3A(bK#O +Mo`6AQMpYizn8I=ZU&!9otGkj9(&zSEY6Ey=3%zy7KZ2tvfn6FF2pZ&eif3~$$<U_DINr$8bG$0<7rC +Y!sesaT9Bjvo-nX;IMl}tm%SQY=o%S10<WEzTyo<FDBGklWe*j;-D4bq-LgS2P(B)_d<m|tA+hn*q5a +GvGtph0$5I!dz<NekMhDIIC;q)wFcYG-;siD?+$g>GEAK!<-*X|OU41J5%JI(xQg_G~OveNxa@YJ8SH +sVURYaBHc4N#M`<{oHo#+WB&hG6VR-FX9ND0S(A`BrW(3u~z0~xQ2L(oB{2_l#aA9xg)J%8nT&&)l9> +-#iQu@<sT~KY<^%m<5(s^(w?;(qv`h2@rS>V`roNjrzVhv?66nh4cvgcqy@eo{vPWZ_)Wwr#5T0;(}H +LV)371A6Xj0oOb({O)t>*&J}E8ENOMPo(X3b#O&@BaDTB>4XWRffad@wwL7!u^(sGQl@MnK7^q=ub1> +V35N8kj!VGqDt$^<@MpC2Rsf=1~7$FoA{Bc@?9)3AOr)4;X>dj<_QjfTY<4f8?6@GzP=jA<BRrsTolf +(A7Bq)xgVqunQ^>py%3Vi@uW^wq0ZlihA7<VCXUWm2A<+_`gy_P!fUJEwP`ZBv;BwuN;}!v~r@!zX2o +3!!CWLTFKfffmGv(!7yIn!_}_&NNJ88YVLhXs$WNKMG6tKfs@LLFhm0^$gJR`s=Tg!{HG0RD=#m3t)@ +(t)pEtI#3?du$5^L_RKWECrNuwXP@-W7z4eX5K3<`4XI4S8%)DLS&yd1m<6KnNk(0cvF>8&{vY^D{qN +kla}(eI{ASIX<)p!tj`C=^bLTdl-noQ6nQNjQ(}QTMX3uMN_Pj!)VW~#LzgUk_M;K{#tV#o#$T2uR_v +F6pyokSFD1U7AAajntX?^?lwZzBA?*^{0N7z7ea<ZU7uV43)368KS*ELpY?QnjMGsl2Ezp2@?ODi}30 +sfGE_wL;x2YUbg_eJi7TxRy{*))Fqcqa|z(NUgE(BPBSCs)9pnTAsQOj)fS_%wh1{GIGOscF-uWVKpp +<;s<WxSW`nNMpy2rMYwG3cLRH+i!*6K`vApEx;SG0lo^k5b{y12hd>8dsdC3+rRO8BXhjdo@I`)ShMH +(Yzz0of7`ZgwK&)LyTrd`%a-kj3>gwXc<|th>_>$hY&IM9?%kW7efC*;^UXJD;lhQqV8H@`57zg<7c? +LiAWld+u!aE*@Tbs2#6rxGKgUe_-vj<PY4?ipcXN#KYK{SWhEH0O6bbb2x&8_c4xSwu895dD!@8cv>; +85dHf(UP4HI9Zq@*Nbn;@L`=+Q&u2%miNiO>h&4qPE4saH}Spbxr-bq?}6$O85Nn-=!Wa?soJ`!4qU< +)-Dx1D94rc{+CNxM1<(#bO@>b8EItDJdxw6%|Dd8#bh7&6*MC)&dvc0o%}b&>*`jE$GlGIW~OjSIb_Z +ZT}4A_^jp_h|l)PCffAYP&)R-M!I?9Mj^|)!ut=47A>L~GiF>%OG~3^)27`RFkk?U963_(o!6B@mp}v +T0(1g5(BVo8_8<_4q4$W<uodh_U>%9?kRw5Mprw??<o|jCJi6cg9{{uMrY9sMoP6!I*M0|{&p-dX=&) +%?L-Xd%X~KjFLJo)-a&Je{0epeK-1EiS07uvZYy|e;YVU~I`n3nv&&qx7zrnVk|Ex<HQ>RWn06Vo<EH +r7-Bq0aT0Q|$k!l-}${^EPc05r%B8sxecYcb^4(0kyCBXkI~>2(V^74BzW@~=jX8ns`)e*HYGAsz&O= +q5UJ3H#0X4tQbDdEB^h!hTIA6NQF`Qma<2gdA`kFs^izrd!fB<PmxVe*nFLKZfk&{s!ZOa$7~~7Xp8# +dv5#o?R}YtGhojjee{u_0sO(fA=`(bAv!vmdiLxobZf<m6#{?o8a&5m;0-%~|H1djO`$)?wP6Ra0oVk +_g%4)jf9G*#czAe(vfOR?`T0ePTJxz|QT#ElKL3$?MaOy(_^@n=a|=9GEbM{hO{{N12N0vcV+kYo6X8 +d}Q~3Y2Yu8dvPL7CyAAInEfCI0YPett8Ug8)ziE-b>-_2Cix<^IpHzI#S{saHd_Lz!u*c*<(1@eZ?vY +v`uA}%gY_*S-c5#Qizpx;stVF$2F$OL)<8Nes&^C5i3xR4R#fq2gJ;te?Pn^h`^yAyxCuIhDIuiL;4b +U}w;3o~cVB=%V%PU{<RlN~VdGw?-d&>yUc(1APXTE2Wa_88MERjPEqxI6Ke`9Je}2569eu{1isZ}=dN +-C~^pokFZFWlvw=5822Z0(BkeJ#+~?hYc;l!~FNp_Y(N)^&dXMHO9Kqf+P0WUwrXJdi(9Sg?{V#E<5g +nE<x9Eju-&kWqpM6+GYO*?gD@P`j=x*D)bUD2z1E(e)tdgI>aMA9pLT8jT>pnk|jc)r46HlZn-y)yb0 +&f8CgGIpZQ+p%9Z~c+@1LA<Dx!?(dRbh$pk$;Jzc<qF5C~=fG>0lz7w=a+&Mp8^?>^R2mFBx+n3OPj^ +8un`l~!z<esOj-$6F`4swt+ImisY2(<*%pg;?7=Q$q4&y<V5e*Z_VrOJ~D@_XbzI7eL$9lC|%r=NZ*{ +4RI^dxgFOf7k)*<BErfyTD(+|H*#Bx&H$i5Id2-!2dxH5RVW$!DFmB!F$L-?(aelIET-NuZ17uHHD~a +FwGAecY!~2w>&*BOW*ar2-oGl1^5gaq3f(izjKaI#IizM^?b;<qv7?LfBPTqm;=u}Je1e*QVIu`9TO( +pR;tqPh6xi+DT?8WdgM<J`B+&yx@kw{AsyXZ#@Ef8q8;-d2L4mDBdJF>?O0hmR@IKRw4;}HG-$^u+L6 +?w8;&J^x8tomK*RGrRkdD4DJNINejoSGx!-hIFX9{(71#a1vKr>{;M_NmW4<LOCZ;dv`)2m}cnlklog +wFbQqk!t#{RaLX#5$X?uXPG8}@=xQ+VcMq8Gm=I&@XwQXUSVwSJW<RXXt6ZZz9;G5i_loHy9t{=k0eN +A^ocIX|~?ZabWFVEl%mHFsamH!cr7tJcY|7m7MxXKgR{z%`;hKNA`9#r!{&Gk*j2;h8*VvA&)zpEZ&D +=UUGHJNIksa|_vTeu#llGex}-buQFbuqTea*n`)J_Fk<}t=9{FdfK#U(F+zVhyo7Cov?mDe1u;|EP}5 +_E{i+`*YFu_VA0)rA!<CRcVbT)^&RZVqsDfx`LPDzHE2Aq7lzCAJ=VFH7kM;zBG){~oAeF!vH|DSdLL +?K>#vlyby1>ScF_khzy8?=*JmEU6U47e=Z?~Q)1$;bW~#Oa_{t?B>jkxL`s^9C?kk@k(CZ`WL#Q(b^Y +LIwo%BLX;q_}Y=ebe(=P)3D<iNlM@n`GeII#zY{b20L%lXm&aY3znqTVL-@rYV$LyZUeh#D1Yov0JO@ +Pz;^kn<ys^Ljsi^5n_G_4RI<&*F&OIw#pA_7bt5i+x1>{HVR6e*C<PK89*F8r1qwV}d^Vf28^cIY06r +eXZ2B{tjHwa<%$I=6H2K_WI=uH1+3_I6xnxT=dbP)lA!H`sh-p6Z7*rDSGkZ#Zh`ZFgNrZM>N#iu&0X +p0``PAzMXK-n&E}th{iB3UG}N9HrNE}o%;EaS4^BZF@DOFDZ}-(SKxqs6Yv5J`|GGRWoz|5)S0j!3Vl +S43AK&sT77BKAhj=?7AtTN`ndOQ?b~&J*IKY^4H)v@InyBOU8ogdPZN9NQXjD|j`|8}6QahY%|Cf?S2 +0&Noj!K?vZVZxlg*wzJNlh>-id-OV!e<29CQO0@BqjCnX#g7h<X+FRqfi|_HwPh0GmL41hvAH7_*ZHX +nG%w+O1yyVOy`h`f5D;|KYMefOP@ZcHjwo4|s9C=o{MoRv%F(!2Wcuw!gkYXA`J1&C%*)Q#2gVgg)}T +FLFQrOG*2e>oeFPa(;cCMPIuEpYByND%|yfsIj0{H-m9V)@qHq_6Prm`RB};6aDVH??$0EgnS%$$aS@ +RZV-5Y7w|{8hKBlW&Z~EAqBMQf=~}7&A364<Nt5Dd&YT$sKFpgpPxw9fUBo{4f9L}E0bRu0`kK>EXAa +P%Gl$qFT=a3I(OD}iZ+^rS>~mmG7d*!Lifz%km+o2%ld^#<K1u6CSI!=w%ikTktB+&v>f_Sn7chOP@t +?=9B<GKciaKpD7{tCSYSXc?vGm3pZ;16BaFV`2`bx+Lyt!6%l)lawL0hI9#j^lXA8ix6(%OF~(8aUIi +OR@-LPA2?gocJr1RcrA$)jF*<(1C@0|RNqh!J8RI5jm@>|MyU4|t9v_%EMr1V3D3G8)F@`}VVLm7D*y +Y}xWTwtKM-M65?$2DK&5vuNPJfr9R`_L^N~BjdPywvva(bI;}fz@Pb#xjFy1fLbE<jUyr=#QrOA7(IH +l;5+<*tdU3^kbB5dA2?3j9yxO4P}b!{&XMrLZmjw5wWjg{ubB7qhYcI{DQY~}qkrzX=LoVueU0O?vt9 +tcOFfj&h{z+ys^6HOukl#Rd3}CKQGc>=ujVE9_%Q}@JMbHOxzIuErK7F^`_R`BAOrXXzyTNV0)87l6L +{{}v16W6u^NT2|G9JLMrUMXM9DQb<P02!4joGV{{GafS1*B^-1n39A>0SOk^TbDC9Yk&HbYU@3KeO>| +H1!EpFVv!#>1XGVm^EhY6~yD^pdDC!!B?y8h9Z0c#$uorh>ekX?W*8=625Sx`(CTlR!KgGiHqN4R}^n +?khrG;5F!mPcAGhTy>vwi}^7R`x@c@OT$Cvz-!j5p=HaKiM?X@M(jDsn&Jb_E#}8OGX6rBK(EZfVSBP +J2^^qfsBvKbY15`n@;Si=o!d!&MfO19XW;uF=iJ;}=-(yg#cW00KY7rG-<r5TV26F(%fFS`ZhNH|PPv +u%?JfGfezU9p?XD9}QM>E=SMK9?yWVBu$??#utZS@~rsd0*ueaH3H`z!1v~uOjf2~@zs)XNhI2@OGj8 +R!xS>k)X=aJ0J%!u^#^zGT%*+QN&hC$A3(}(o%sHg4RxfA=Ww|I<Gtbf;Ghgcg!Uvqd3^6WA7IVc0?* +Gtccp*Bf)+zXvX4kz;&X;biJ)*sY06Y|sjoYu7ctVDjSAO>SD*qU4u>2ty8OX?bU)73wO;TzmH!Z*Q= +fUEp{$KGu#C~cIQ8xGRePFO!;{fe~$)+&L#R$9z>q1K8uIdF&mW8U|ZBSemKjn`mHud8EVEsnJp)_z# +`Vci+T>rUh_$f<xg{1zJ4Fvu6z{d=?+L*FjmQulPQkAO8B_y;*52FYhox4s@O@-5_h$n}tGBG<)w!|~ +2+F$UHg-5C$a?}Zm$5Or?&F!142eg<t!=_1yX$lZ~*W8HwY)8v?LVvc7|60K&wEM2-(<b!xd1a&pY68 +hqri|^f;EAsxygPb`xh}{7Gaa<673pF`BKOkc%+M47Lx^Svc@DppOf5wXWuS@wu_u%WHr;ug8e*FYb; +in<X6T57*c3L;_{O7Wy9<=+z_W-{^!f)TcUF2%=c^vp{<Xn&k{HY!nd`2wS>p$+7@|VvfVJyT+%#V14 +bppnQU*_09MGp@@4ZJZ9c!63GXhO`!eiC4@&PMFc&(ALbi<Vr~VRYxNRMxsuPM7yo)p{*_@1|5$yuID +U+n(^oH8=bP9dU;DtyL0lipHA*@V2$e3jT@?&hW0aN0h)o)jQ!$YgM#6y~TUh9@Xyj7H?Urssu+TCdS +0QGIFAKQryV+#4f($#>96@95gH@E;_MgT<oARqY_6A8QXHusJKqiiE*vQxAygpi;j;S5|b$Z3S}4H)~ +y14L!PMN?HxRJ%(z7H_bMwmS{oIPAroT;jT;j?cA|F9-;9YFJ&tFI8Qf<~?D*J`F+*b#ofq|&!;=^kf +A_Ix%=nm*-XrmU7vJc_i1_iNM#PNq^&S^%9E3kM*u{59^vJ{*-;m&dGJx++9#Hn|!2u<34GwS;&F8@Z +lAj@cjD3t|b40Ih{rhVl{ycwp=g?vNxOcDZi0zcE$fjgg%j}ccKT~mc6APGv^dsp->BZ^QGCVT;GJ-O +?XY|h)mXVY(D`Qc{>Ws}91sO*&iZY5bs@Xhjc;o&77;U<HddmCrvleBgXRXf4&DxxmmsOCpH|t2&sjQ +-`D_O-^ioKfM-R@!cw)@!w?LqcXdv|*udw=`O_F?t}dy+lHKFdDezQ~?#Uv1B|Z?@;z3+#LCN9?EU#d +gI}&Ef9waCkfX9D$A?N2sH_qmQG%<7LM%M}i~Ck>Z%;nD1ERNO!Du<T^Gx@*D+@y^bS}Q;s6X6-Ti{$ +*z{|p6!wCo$Z$$m>rZIn%zBnbM}$!;%twcpq!+f`8kVn(sNel<mTk%FfD!Dl%9M@uqD}2Y_n|hZHsK_ +w$-*=+h$vyt-uDp71^%XiUsG~Gd(iBGyO6HGlMd_3qHP_IV>|FGbuAAv#c!U&-Q2gzia;iP)h>@6aWA +K2mtd`vrtk6#VBV#00715000{R003}la4%nWWo~3|axY|Qb98KJVlQ=cX>2ZVdBuHwf7>>a@c;f4Y`i +&AiA+1`_4dwNwM|`j<7;C3v7PST$u3Jvw9T3#6_WBxU-q*<^8$c)qa?SxztgXEBoY`527|%OU@+L+*b +Mfn`D2}5-?TxrHwa$uyn4L_fBqbt-DJV>V|!DT!D)5X-lugId|NHbY1-yh8AHv}EDPQp?Cl?(?#Jyz8 +>Hnl*gHBrJ309J!`acvDL#a98~JQr)on1TrrD&~xT>oed@qV@f`FPpyq;zs7g<-fY_o^9$S>8C=8mgg +7uBV#lhcp137U4A&<|NWujIF%nyQrFi|YD1FR$g#s*&I3kIAH(&GSNGP^)iEHMz~&jkbQ=-3Z_#A2-E +D_AtrjZE!$O_UpQ;cY|OvnAhp`EZq&t3OaI^)l?122czJyDm%c7%XwW*vPPlNJgTp4T3>1CwApNK{(f +lh>vX>1;MLyLSvtjDJ_S2D2#eY5F;O6pv>iOzKt9Vhcr0RB@0+~A!P=)5VN}Iyq-om9LQ&J!04Hf5=U +FqPF3|U3(A+HAych;`dY|Owe9;brQ!0CKG$iz#&m^7PWC^yCG}WS>0FXspRP(H)FF#c|e7R}cIbbym9 +%e;7pWs(Nv<8Z`jLO@yv*WkG$wgKVgRj#j+pEf}{CZKRZ3R#6(jo^|n`UL(0}INxX<lOW300k^b%Vb? +oV=q!7zY2F&%cGS90penObM74J)jol$3@k0*9gjBV*^<@tAUdQFUQwe`;MMPNm8b>EJ>i$CQQ#0m{57 +0%>dN^YvXugV>qaD0CBv39DKI(pHOz=;G6x!vx9FB_D=wCoyB4<M0NN>G(NvSkGC#f4$hkw;b7zY{gc +y!qr+rnl@~9&N_$7|kKdf^Cr8I_;m=23{`v*{Kl<hM@YCOZ9slE#i;<}I{>{mE`zPL7SZ(lY^acLaYy +O&-zm`>d-n`690p-ZWu&U25`Q@9#Z=AO<`ttQ5^z`)j&ECFUC^|otojV1Aclg(2@9l@f@0?=e^9G6W% +Wu)(#mmjzzYMp({Nx`$e)Xs4Km6P1*U!H=AD>?!nE=ej#x%R4fy$CuTHnHe@;?brn*q=AXV0F|zsFcG +NCPeta2XQ8b=EHG5?)PnlCWw0Nb(ezl8VSG*~7dB*+asdK%&Ig>fGl=Au9&A*<%wttLD#!!L#C~c}6W +gtMS`aRf8-kx7w_p<z-rcL@x<m3-G!|g6le+LDR#alIS*Z@J3=T8p@_nJ0P|PI3Rth;4)(g1uH@gz*; +B*9GnI)WwSah1b`u7luB^G1AQP<0(Y0zd3sr7Ae9!A8-!RjG=B!ML1!EkF%D2Ag89UB6vKg^%^=I6uX +R9TA-~Eq?xcyJDn0`y>1IznOWVnf23M8Kq2XOaFaRYNMGMtu@pWA-=1nvh?_5|#1RUZ-@qIjtvvL{@c +Du4!0pO8Hs*u%Gnge^CJ^}?FNNPplqJ+VOMH}b|(1PkJAW<C-G@wmpg868mVc`lGd?XxTc*67WS-9(n +K@S>vNitaDtli*w69&%%4-N5CArb^XuCsZOPO|9ZFbKoJ8iaebYoZL(vu&Wn_@nv!{s!iIA1(2tctmm +N<YrOc5}#Bb>7S3t>|zqNnF9f+rBgB(je?JEJNUVT1^d={LnCfOsCqz9KjU;hN4}{(4!nidBN?}CGlu +-&WY7g@|8%fufqXOb!zA2X#>wy><TWt>VtTIN9xp|V`S%p!xD&CTJjiEZ7^5l^QR{9)-dU<xXexRtdu +RbLdi2qr4MNf^L7;c|;{w~AM+4yc<~E;0OASclq9PT91o1`(gcd7qZ`i@vu!S#9cdzu-xmv7$CXa_v= +o6zuqXS~a_4i|7i!GyxPoRmxda}zH93Uwy7dKgxH!FB>HKmt`U|6kvUA0!Tr%5xMwMsc#J!O|qSHHNb +=1bSPezN$d7?poIB?JMX>@Q(84|f4ASUTVdd?mt$HGPM_zxgK+lzKX|0~>pJy>Be7$)U<G9Y`ERP=A* +XU;og#!}gT%=o^c^o;U*$0*%7eV<AXx63(XglW1*@&HAK1TB7RxUr@TIA1<M*`j63Byz<&KhSgJd1}k +9pvB%)44YRgsSiL8UfPuzf`3eh2+2R{KL={44q15F9jR9%gprL~HK(%Ouh6l<mKGfPWtpalZKE}Ejwi +RpC?bHt_i4EL?G8l!Mp~i25OynSvJhRG7aCyeF=%7&(NY%Y(rJ3eUOXYkrcO7oa9@;u>1b5LahVOS-- +H?lK6fEjodcOqXD;DjswxZ^G!|_!P?S>b?l&=h9DGxpmcGj?Bv?Z9ZUb6T$)`FW~Xv5_rN*=rn{Ohu$ +&-lU;8I3C{oMCU)6&0Qi&(Z=c^qJjT3nb&WhJK5EXnI7Az^hqDghAOxYEQ%Uw5Lfmo281Aan>`|JzZi +<y`v!z71ce2=;Kwt+9`SVE2|%yLEeTam_D2w{9c6)Kgbix6ZLynktL=yptnK;<>}k6j<qz!*-05e;ek +a5G<`wz!vA^GEI{<40F>JcIR8JKypvAKVbFjbe1p!PtZ8k6A~`Q}FemE8G>d5u;&NVXz215K=T}4i`s +rsopT!dRw91+?w85msefrq&x)XF{c!z63T?2m=kHHp<UeMfBi(<;evtVS>+1-!}tea;D$2TZZ8#j|1S +WT$MZCqw;QB4MG4b?%1qZ}%S%q!${pRr)Tz}5IVYZEEDBlwc|)Fb(kE292U>u&+e3a+KqJd^%&h8wht +d4cY@E1<<AGKOpZ!Zb%;+H^>G(tM29Y96Oc=W!PE#q5VuM_a1Y#MeKrGtN_U?AjdoVL5+RFM50+_*ui +;(Hczjp*DUmF@NL-$>VzQ*CUfgjuj3V{45bUf@+eN*KGFgDMX@Ckt<q+hTGj>3FtpaRY4IG42T62&XN +UB|M*Sf^-%3yMfA__nIcwCfB)En+70+YGwl<GzoRdWYk%XbX0p(;WwD{z_=YXGow2jMNqU>6p=HR?p6 +>Zwe?EnGU@E*CiXO#Rb@rd;gTl`eb-1JMlhk7Q*$m#00f#a_Ex;U+>jdp1i=E0LEZaqO59Q?BaxuFU# ++?Z*jW6Q~YKW?Xu-LGT_*hou<BXQ<e~d)I=rWt63!oIL9UgF~bzsv%>rCq+=M7YkPZkEmnOTiz;lxkJ +H;K(J9>~kR=)EG{14-cdbRT;E6z*wdJ&A1@70cxpS`PnWq_rhI3jZ+*ap}0&c!D*6g5oc>+qoYz&Cjr +88m?hAsItloH${@My{t8{hEa}P+6<R^8nhikq;r9ArfKW5uyyx^E7NNvz4S@2f5G5=dLKS-1l&j#9R} +#C;vI`|_kMzc1m-*bn|GrBLZ|~`MNrP72tkcHm~0Y`_@AN1M$Je~U_U=Hp-0+afRQu;#eJv``KWHBBM +e1AopD4<lT5+>!IeY)uB!^&#tYD#JLlN9usQ@-5=FYQMpUH$qlOw(la<qx8!3``+JYTPF!8Igqg{e21 +FZQoicJ+$K)de5YV&NmwY}A3z)xZwX>YpG0g%X|@Q>PYt(q9i#83rBXj|KS#mB^%@OE`+bogPs7QO9U +Y1o!NQD{K1(74D-e%nnG0w}1Vk!=+G!v0L8-(}ihT+-s|Dt{PKIpiE7eMhEwoxy9UDDfr6v&RcTb+{q +$^s-6tDT1V^wTK~Es{|IK05_`vSzY313NhIL(N#4dVfn00fp3DGB9@_!J*>`1$li62$<&bEMWJTE-_> +2lfgojDKa#f62KTTMqeH+uY4kCP=hZwi@Ea2Fr>u>#D|XL1D)#qD)~Ak*2(^A5jcbj)R`qOb^y-2nx@ +hMmLW92&Q(Z>sAcV-sOHdlhyGV>IQ1~Wo(8(P&kL0Y+Qh-DJ6&h3gF0b1~3iIPGKmhtSmDsyNlhq@AH +%TG;_npuB>OsS?m>ZuE)irdG<Px2sR?-l~3`vuT*+Vv2v>300{oJHbr6f82pYQh%zfa!1`Ea=RcK;+v +V6`bH8L4Y?*8GY`jB_li5`*T-ESsV~A#DJ}<R*oO6k&w?*|dwxphy?x1fw)&S&G{NDTQRlUF*tmRH66 +>D0*#JU5-wJzr#}=2kKmrw&)fj|KK#O@AEPwi5i6-{6nt0@&nTv*bj)G*HuXbv4=o=KlZkC!IgMq-TG +#?xqvx1MsYbAaM_r^2uEgpW49u2a#%odpdz^wszO1H{SX0L21$z2{ft7vwAmDdX*HX-L#eVSFw!-!9> +sqo{Bnd+1m*fw3iauiXd3-6T!w!7d^cnU$w<{`t}SI|U9Hc&ii+k;IYp`tztC%0D(-|d<Q-VUpi8x-8 +AEY0c8m_M>4ev*;#QfHo;5)Q?z|Mr*2E;`P;}WCmx&k>(wQc0a`~9tW{(lfJq#r5M3u%1_+l97A;KCn +Q2619{)s7AHyW4>s4d-4C=d~ghJr4hPkq54V|a-|cuHS<9EQEYKxowCDo{Hxm^n*lU00Cfg*phFaaEz +t{KY8v)X=JcJw;3-s8Y!F0fXsyi+%zo94(L0z1V7o+I4%i^`GHDHoU<g&tO$;QNpDZ7Wv<&M~B1U3OE +6k@5^*@i(;wBuG7gQQU^>z)_g!MN0uU3F*YG6st}L?*bx@xcPi8zKR*c&7+)V_^9EwZ;84+V2;I#}Qk +TPvaX2Ucd@RU`Pt;dKSt8qUNcuyL9%DHqao%RLCbAS7VgNAL$WG@f{({t3VMUCj9f37Hx&^5&Be4)6j +tM>TS=K^771~Zili%xx63C5jk?p9st-fk<Rz&iv@cLbgUqA`TZlj%Huruh?eBxGqA5G@Nz+hOxv{F^T +_aRk4btJTCHJQiioioa=<|T?>%~jbAeoSoLg~Z1kT2CAMQluFy*3$!>BnG_qd4n5Br+l*HEzKJ~_h8c +tgV8cgiV9wqrz&Dl6EF&)WBsnKe`+j4ca@|9dNtxOOyn$pQZh;YR{$gswo&iWVvz}8%<oWd;I1?VyK7 +Y~ujHB>zZSP|((4%QX_Powapkmy69JJi=YnsIzptTpN(PI6E#CfD3S(-&M;Ncg;D&%=^j!f3V*TiwBT +!K@kl$1qtBIWx9Ij63hVf3Pz;?_)(XDA|ijgUUyO`_QVh}X|8Xh(!mG$P8m0Xhbb#n~+16ZFoyMo*F+ +C!sNN1Nf7S4Dd5QDY<<kDoUe1h~=NK3Y|4w}+-#i!z?eF!wid>|z?)PGoI-)g3~M#n)L{reH`AC*p~$ +X<kc$wo{THd`c^x-A?hlPpCcSSuus;%nf*8qR`&*NvOD<0UBA<P6sRTnA{*1Q-Q|he#+`N@G5-wApkF +B9TO=(Myfb~TZ1foS}wsuVijn|z?W4yZAPy?lL*3u8;Megq)>fjc@Ms#Y~z#_u-EEEFA%^7do?LQmhq +{wDJr&ekZX@ob@>y_D}g!oE&*whw@DJA7y~^E%tdWN;lmi8q16Kabn}^<GO*C%R7A^<4{9OTCdsUtE( +-N)T20`qAqxnyu%W40{5n*2HMS(5ks+h$07-%(T%rrz83vQ0(d`{E<KUHl?h7Goh;3eMMqPiAP~9*v) +#4-(SVQ~NvML@+0yvA$CKQCXcnT>=#%={%AXc<4_xG?AuNlB4uokrJ_Q5}N%ttv;MYKXF--NtTMB#Ac +0-%FX_f<`*G+O)UfVs=qv-;S;MAr^bvD>ZTBZXK2ojGXyfvw2;cw51k&{2?U3_e^?R6K&6ENXOF@ZjY +bg;Ig=7Eacxj)UNk92kMztwID4P11_V4FO%52hF6;K{b*=6~blFEard`?_hl>LDV<xBl^=2x0@8bbhH +u*VxbG4T^mI;NeiC3_^QNZ1_}a4XTd#`Pr>e-pd+bx40sDIn@M~$3I)LlZW!>w^*s&_X=X?vJUoUNZR +O2Pz{M#tL>m!tc!oW`LB(5s8BBf-Buaw@=I@OeqlsMIpnHydFWdUoMdu$@8w|owm(NxfmcM1}*S51Y( +seR=MqCl%LJ0K2c2MWIY^q|>X3t;^Q(WnQ-+J}C;NuA`A`MhD8(=R7{A`5R9Ulv$TDdOS?SZ0yQ3EUT +PAXK<eBbypW(RMi3Jz>qHVz?G*$wky=ih!o6+5YnXJwB>1kp;7Jgpy-dQpzPO+hEIWwUsRhCY8YUxRh +JsIw`_mR7S4=p{D;v$CqEkuGBO=UCEilwSc*LdjYzaDpVLd4Or`Zx<-lBok0dS`9PJ$V1>ss(=VGSQ| +R15_h;*W`TnUYLpRs#8pFOhJGgoE>B#;Yy?rJH3L)cECXSgbNDpBC&K`1qcjzAiU7pjcIAoKUutW#Vq +ofX37Gf~U^cM#48Y7#=s+LXu?q_)1&9$`1uEoLLpoE}14@>W(SaUJu5hrh{$&NTi0YbEF+LHyg3APGK +iJx1wLm|!f<^t6?Z+$tgJW0&QarhhY|S!I#}Y9T!Ku)shS*`%iuFjvMoN<l1ok5c;Rzm6&vser29jmu +(ja9Q4>@X1ys)wCmpyp~U3nJk1FG{7HYTSklQUwxEvteBl${hHdPX};;q%(=CP*kp&G&p{(;zu%Ef;M +&alICb4x18+EO=;(!y}?#rD-L6_>s&|UktubuLMl>s+%a2YW^rZB{W&U{G@#=P&WAsS#=|9*qk|-hyz +x#D?Uepp)f6Npx2LED6^3HV9}kxs*1*qe~dISmY~iqDFNS6%trzVjbxlpAVwoO3K0ct^EuhYu$(yPJG +9p2sujuJT>E0M&{>TX@I*absgcW@A}?<hx;;@Z)Bu`-IY;))uo9YtqMlQW&cIsSA=@AV>)ew!G>T8c0 +ackgyIvG&O#|7742F|7o`ZGH%8u|~1|crUlN(S%F&G(i2h7_cgtfKVC=5vCLPEcH{IvBzUp`bhlc9xM +OR_Zo)R;OeClw|Mu}ur%Au{Pooax2qkF&1u*%%ybVfzFgCSL^itlu>PV3nr`Gmu1zD&hU5H9US#i4H; +dnruL!Mq~NK1Z^12J?sG5Q)JM?_U7WpF`gYX9slXt%*6h?%N#RI=u#4gdPr_qTYXx>5~QL$Z8WXPZ>d +SDqe`=N;{r&lrqN-XX^hciymH}O38#|fNA?rTQn;8>v@`0ZQ^yZB#atS9wPLE2MXIjWBB++=jF3%T=I +B|SrOoY-RSL^v(8PRV48-5OYVwB=RiH?J{8M_DvhfQ~6RWgEc1$PLij*O0w;fRckoS~LM{EQkI55VG= +>Tj;3k0xjXLoid2+U&x=!?Oy2`=SbhWc4ZestOMj6w-eL?HF>yu<V68PM!W5u8|aMC2p=;)+!ZeEKVq +VG#Tqjm7W6hGb!dI1TBkKR$&#eegO`rKnhA#9t%=(;}T+PGQjnn7aX**@Aa=s?R?AY#8iRe})ecLGhP +1lf6cYh|;mOJaY;P+gRoeG3+*b1@E8adNs}3(Thw0c?}yjklkXojGCIS%{2;Da@MaxVUv4LZ!Kp(z-V +@hO?m70nt2LY-JtYYdY6wNJ!A?aUFuYz#n1AeGq$aVtc}Va?AI4@6*p;vepC_OO5sY5K|U43?PT&2(u +xLBwAi!ee+`&!F{YN*Dg>UxIxE))*03={5td@3R|n=57v$`q{`)8QG*7QZZ~c40y<(v!+))piTGE&bf +Ry2dX7sff<K*@pj2UZZQS{6+kiuce`^H_~JXi>iA14P|!S^5zY$@+HI}UZ=Btt^<@^+A858Qa~?f%|( +``;vQ-<-ZRTF~lA9@fThsK_%U({C8Ocwyo*ASjzc6Q@9zRSUPpW-?TdV)ty}$7;p2*GscnbQxBX5(6I +Vg)FEZrWMm@nq4lgqwoZgB3n~=opJjqNZW2U^=9>0y;hogTD`!QN-j}G2DLhZtp7lOEAx6)yPm^1j#= +76RB8>aK{7+1Fw3bDnTzWV6o<ACarym&gR@N46@Z>RForX6#mJbBM*|f#cXBR3;h)}#qk=0;7b|<QIT +=Ia1m3M}4d_vh=>+q23XuZ8|CStm=Mv40wBu-0O`kAq7#lBHnnn0Jk$g(xs~sf9+=!r%^u&Yod22hXb +wAP`l@Q)#(5ytT>@Z;e*p+lV({XKXMb#B${SGRzplK}S4x-B!Lw6RNLfLZ8ujqeW6$Ng^*%VkgX_V=J +2b&`oPrrI#aoJUm=;&smWjSo3TyEr1bhL3UVP%@lTa0bKAIeauc~;+~b2|QERZo)nBdb{nCY?oSR*5> +pXqk*p-lwfBg<;fLTFdP|Fs<@h@R$jK3gfmu?i@zWU=3vh?DlkMN?vNL;4z^KjvE5%;5UzoEvQTdmug +W0)F{A+Xho5*=SbSrK6Zfy0Yd0a`Gx~HBkRV4p?W!$8ip9pt28f|^U5t6)TNv);!vBa06r0s102XQt$ ++iki6+C)$=H=3>HG+`13l6x4G%=Xw|F(yYKiPF#?r+Vl7!RxCW(%R+5pthaXn{UBFk#(X+UOK)L_UB$ +~YXjP-G+oKpTp*c6e}PNAnFKm(9h2(AHuz2aXI&pZjCYc~^3ug17c5EN<1NB#)2`eUhh&I7rEI-iRzb +rMX=LFVtZpEB=aJis-G8fNj2{b}%Fb|79uol@;lt5T~#STP}74Ahy%c8S2d&aVK>)uSNd{{b{E)=;7x +YMFSD0xJ!!87aZm#$uram(sS}|$w$L@s1eA(KKs}O&0yq#yGUq}>r`T>Gla9(<W)~xg-{iYG+r1n3j7 +Py{GJXQOd{)u-z#cK?vb^`?-jKKTggg-h+S8lr8h~?oJ{bjvkDR7Cork@56@2iCpmEvEr((B<?-j(_b +;OJ`(MXf@ym<B%f9Rc=go@|{Et;8uu!7Lh}B*WqVeu|e1YFyEU6ovk40_j%@^bI`>l(Y(Fp5(84ckbd +=ozb5dOXxeAxpJP{(yI{(k@D>!Z{Cfqt4v52<A@<%Dco!8o`NAPEvTuma;TZljzOvv&F~$v}pm0r!{3 +AuRwp5Oi~d7w+@*_Ht!L8WW_Ojm7hMhLI{5mE!4>IVq;y@o|g^(^NYlC#Pe|Z>BBcLKB7;k^{7tld9m +Op0uV+sznKF%5G@*h-8_Oom9b;-vY?cB(*!IJBXi*f>(W8e*aYZuA=eM4#|~Pr;1!bfT;9UqbO-!_}0 +5U_J=s{|Cl<m(^^&^cXU;uE13gO+h3r4dO^-%IJj`9sjfsUQxd#-h!iKR$X?R1JF2B`!b;;yL^<N_h= +_otgUJ-$N3<h7oaxLy*(MGSIF6@t3t`v>fm5LyLp;!%t8kMz_|S-O5@ssUFz#|RArU@4r&bk2UcR-%a +p=MgV}VF04h-iQq@zHIpqQgF_*-61t9vj@q1d~ly*KaP93Ox4=Ijk31n^|;cRqhihavI2{SY6N440d4 +n#GJG9_cJVhaK-W<!o}b6y8aec}EeIDU!}4NyLtiP7nUhwJU|D4@;z@z?9I!5Xw4if}2X{e_cykB2*M +lc0SAjG!~7*e}n^gwE{;1rQ=Bt&eQ`$<)=l{TEndmMCpf}HbQOUtTMO@a|!AlMPJcYDF@7guvXh~{QS +osnL~d3(Fxn^JBy&?REL+WqHjBvEpIx8I<Z6Z(5z?4?96l|?p<0pQTQi{eg!KS_fA9K3Wb?#kb45!)# +QBcVAY8sU)72l!VQLXPYe)*<k<}=bRkPA*M7*}15hbs^e>dXPfMIIqO!CkDcK(79i&(yF$!SS>+!3m4 +_O?o?YgySXaiRFc}c6t@p=h0gsYh1QMfPf(;Cx$MBz7zZ$vcS<w8ZVNf+NPyEgUHz9z|?KnL6rOK&rD +AQ*>)ozAEO?F5wFCZL*`N5p)1e<%q82nd#QI*R0gp;Ja4?}lo+Q~i6$r8uPL5Q&$ZLS`x<z9<>&P{<0 +0lD>Fb*$rjIiJZLcP106kbx|7)=Bl#C(c%FHfs1fvR=|K#njB>TfGfa)vtFdU#AtFTEv_qIfSVZ>!C+ +63m~b;T1U+U8{P9OnPJaARilk|c!T7*LA~S=MFX7hKRw%^_z<C38s|iQhPiSZS#~(RD9D#Z3>(${wOj +w6poHNVG=mK?L$dC?A8{5W&VdUM{?))XD(mPdoCZMmwfV#qE>5#deg@O}MsP}UFDR>D*Uj`Cqc_5p&p +(tEF(hg#i-xKpMiPXf~p47w*r>4+bX^aHUFgNH16kzqpNN$N@PAKe{viY9lq4f-_;a4P}xt8V$650?y +N52StiEE)%edS~U26D;R0N<9Zj*00<adkUccBmuGwK^qPwGVB}3c46o&56sLBKb%Q^=II^|4TI|Ysp8 +(7`q5cN@?1mxMD0>VDyMQt)?$W{9>ni{hEQRM@#Z8h+P?RTED@o+t3rzsI1*?4iO{&Gm3&7Bn}_bhUF +6@m$m8|S89%y{`>$&lctviKiz(ba0TbiX;rI($0tYsy}x&s9KLzKpS(HzCK2h?O!q_>jnl24ceeg3xp +*0k<E;z)nOvxcF9t6LTkfWw|I-1B>FO-@9vlodj{oQE?a`qhgF4)rKSt-%^Z3j2>6hI-QpBH$JRlUwF +O;kST`%OU_1OvgoUuV3E9Nt_P>r+c8fp1bbpR=d$|_LD`-LY>SR4)@_=;MRqI{QA-S%B@S)FZUd)>s4 +j|QE<q|=~M9HJ}5B%pMtsG4#jYJL>ivhY1bnvBtKkYC5UGmg%PgpHS98FVIX6yq>dlff4O$7OVd29zU +FH8bOJmdT#uteK?q%&Ad_=a=CyF#F>62R|kChf?hM=S|n0@}dJdE;)Il7&_U%&TcSubfS09<Pp7D2U+ +{7D;R;H`u^!aN5-1Dppa9RNLXYid@_!PKx)mf>Wgd`Q&K>S{5A`oo!!F^So!y=I(xQ3c*}f>u1iumB* +*9Xfw~%R`7DQViiB$s@cv@_!+A5nii1Ce1APglV~)TsG7)4nx8~=Y0D~#=_A!`cFeRs~E`hp*Cv6n7S +@Tp}jKK5qTYQ$q*D<^}W|O+vLJtc&|3#@?Jasq==DX0MN-mI63XveZs;VG*74HnV*SkCfyQIiDIM8WI +%J*z)N|e>yq_kj=d9QoZ?+pqMiegJ7-^S**Wz+Khqx0~2a~@L69fS7!6{YGVeTvehBa`k7@fE-hFLYl +nW(CCiDi&EoTb=10*kP3Q$XW`!!(FPhc-s92!8jJ%iwce?)cw{9p~mwf<g6$HhOW1XM{;91eBo}N{W| +JeQfqVF0}&@a+1Oj&JC!J$u-0>fU<KpOi!D1OY*C^WOQfis%fnEqlJA99r;zQ9YEtIW0@U+Kk=FLz2N +I+cccI!+S!Vj8K_o?8P+kvk{ZGWc_K9zu@}@w<t3da0X+|d;$c&V7o#44?y66!_30?t8`(A>fQL8KxE +Eg^6!e(O;C1_aToAUP6U`AI7OIHNOkSy?y-x4HLov}e^Cd}N_MYBlSPnQG)o3B3okN^6QIQTYy;2|M1 +x6*<aHielB=H#MjL9EFpf*ZcVHP*QuEhm8{^-I0Gp-eHH-ME=^aB25;f}IvcFk=CpHGv^7+pROuLe0G +cx^}WP7(T^g*KD3|W3D8d|IG-m4_yjX#04nDb~EO6k`q!mNG9zvrsJ$p!LmeB*nkyjBJ$vHNs$&R7U| +byJ+nra<Vog%YOLc92J>{;qPPtsnU9j_xMpbm5hThwf&VS=SGVj*mgO`)NUrCNAQFu8Fvz?%jLGTbKT +n`Ix)<@{;AVGw`~LnOh%nun!c<2EV0->J&$opR)_^IjTUn%+(WKGx3kZPEn{D_{6pD!rWC9*c>b98Ad +41{BBCaT|GLCw1rTz`f>De=h`>Z%Zo{pqu9r8+F_x6HIZ#{2TbfkmwJ9|XP_Vq``VeFxM!;HY_bR{m5 +&p`P=&%clrSi{Pa%l^@fd8#0XQkTL&Bqd;0Ma8MPA+ZcfNS#uOG0=Q)4}@C7?4}gt%i5RLMnzdqmAuP +2P;Vj+^^qob`N;d}B6J7y7GjHt%Kc5272<iPO0hoU#+*>vS$}lj0hG%@^5bn-WgyLK?X0m-{tyH!b>^ +lGV#48If|eqb=~8Sb=_hXVcK?unn*prv<HnD59+-XIOqiu1DfrQy%4P~*fU3^v&>MAB=ilhu%K&$Jcf +3;G;|OQnRQe<4b$$l~4DGbR6mdbL;2x0ClW)=ks;b4au+Ivex!TzqJL9k!{z-1#hOS#<_La$weU4o*R +fJ2|2T)6*VfmEBNd|@MqyX!DX=o}ISk)eoQij@_JGittTZ+9P8BnN*YbO&d?HE8+66|AZyV!gD(v2O5 +YP3gW9x}f2g^uD!3ktQ`!;f*EnYp_ck{N|>L+j5l=pm`RR7D3OMp!G=Map5;nD_Yu(62{KQv!pA#B?x +UT*A2AY&VNbOk{H@rLTJ}w;}NCIJ!jDuf@?8RS#8Vo&?z)Z3lNnhr+AxIi9b+znRiK<Ejp4+%6fID@5 +tBW*S#lT4Aef2b3#ljflPJDQfW%n%5ZJf_oLXl?}6DnfrknLkS~j3+9T`H1~Tq_}dL9C&GD7kC0nome +SYO!6_~K8YX#8C$hT=6o4xO0W1<2X$+u>3<TE)QWwG8DR~SK%2+4-;K`WEP+nKmoTG6E>SCGh+<c@+N +(I2S<^-*ro;M%m%;*|g=Y)x>S7cYMQCIP-5CT1H+rz0RoPPcPidm(!_*V_FlPn=TtTZgp1gKFvB`^b{ +WihZ)wt7j9dZz|Wr+qKI`Q9^(E#Y)UirIB(WDY_92ypkwaOTZ66UNe&ma<ej#3l1pa8EQaR0Ng`CWF1 +e195mnP8^N%_xhNt0-G_y-F*?-4RD-&QaoohH`mS(=r}H8N<|WZuPep?PcDk_80_J|hYM8yNd?EPGMU +?qz=iIOKQ2yIGfWU}=r((#&AQ*$N>4lHkP6ez(qps<Cr@74JZp0+e!Pl`N~)(SM?FmNM76=S-8(CPx< +L1=7*rZj_LF$-PmuUI=Vzt+i{-ABPSEtN2%aJ5fH?8`9D1gXzdmn<9j(!O;2$wT7bXi=He)OpEpt<1V +>38q{YGq-;$35#LP0te`=_h2n>jiTtjkmD;I5qWlZp3531&(oebMwB?|PZa8#%!eBAD9*z)+c}syxqt +*#T^12n_il%Px69w|3d}LCQ?8v&K0WPBz;#Q!LGJtp!?ZP>Ar-NNa$L2SRs`Z_OF7IK9ObB(caip;Yu +N(0p8t&nAlQJCGX_GEwkJkhz>S!#3qAj%S1NtZ|x^$%MNjX`)jit8o93^*g_zFwF{`y~ei}>$J(;{o` +#C9Bk90t|LCE_DuAotMZ6EI%GZ>(Ocgv(Ne!gSZ2smV89s=YTbjccSx%xTJLHRB0VbFlTme~vYgxcP+ +$#nG~`6riHBvim}M5x-(`;+=eE-E;i^^7dHW)z*0QES`;{(kZErw~(M4)RisgM#6R5U#UYOKM7t=xg% +dltFP_P1_WF9yMlXEW99l}>P8Y;raos{C?LNQ=G=JBcAI||KWB+6{v6G}*}lTtGEoK%&_+GYII_)y-K +)qN>-W3IGR)o80}Wj<*#PqIoZrW^w%R6d7|1uQX+G#GJBKCow7S{;>q2gx_d7~?|dbxjN0RCuJ)?&7^ +kURm6dl6o0l!_!oBBNc{Ei^HzsdPh%vvbDuYRtoH9Ru}|v98)AKj)~CtJ=KXSge_h{BytN&$0_EG=gl +np{4Q6<ST9$FlqC9O#L)fH)!ecqc3xIa+OST!9_uv|8AJVmR{_P3N7m8G$+U_**Y*<6P{a{SZ{Nu?9w +!yXMg_idPCPbkU6t1f(7%+IFj%_QCT<7qZf`?3@AKPyo=x*KuIlS;{Iz|S)<31?^Vff-a5w-}JW61A6 +;CyrgUSk4L82mDyIEXLvxkIEA<<Tyem!Q>Vy<Xo+7;D3x)3eBj)0ht^jWMPUf1dT##|}7mmMJl>XD`5 +5gl;GixVVsO80;*GryDjdYY;Gux99;0@Duzl4<i6ikg!fpNz2%`ezJE*tdkrey>;Bei^(R1+Ofz1EiG +<sp+a+KlgwOa@;;uONKf1{HgX-Sv*RN)MkXAXfPRI#;)$wtzzU9k%he)S65azQ6wq-asq4=RpBP(4T; +ALlU0M<yUW3z&ip4rP1aGZ`lXCBoU^=)%!fnuQ^E3_xhL<pNe&#@zP_;=MwRZ8rqfKLtVR?UE_XAuZ0 +s&DIn@I-)dMxvgXnZ`@AvneXNKN!i#rdlf*-LcN1^j|n`}G4B5HN%Ix8u*79CE2mA$^&_>A;<=@QZ-* +DNU`KdbJ%?*?Kd<|8Tqexi9=?fk4uS<T=N=p1%yx94_sy+;(S7J1rrn?Y8nYMH`cyR%9Em}{U0&G6?) +vzKIt6GB99S59M(5O>lW>u0jv^>A7_nPIy1B%J2Fj{G(FCA7U!lZmAc{~m+pinkl4B7olp;!-mVFj>I +X7x4Elq|$4q*T75PUblh=Fo87feXG=Op`&_)=VhoLtr@Tb=tGHd$2lc%GUBfYyPxwpWmJbh*FVFbOZa +ntQ($b?o0Gk_2jA}}`+q;%Kg3YUQ%n&M#!x!G{+aH+!LOG;zn0(WUx3)>!@^Rs<|Y3NZOKs7g+Mfm#J +@=wKaMw$;?C_*+$JY7{uxQF6)(}#?%s{1!To%g+IJHqF;AD#t~VY@KX+sAjdKPUg}Xm<>|77rl7(rzc +0LAyP|_vXeBx%6nML?wzFbfv^jlk{-8I*4AjVcas4E1hAhr*MFlyX<A%@60Ps4-bhG(O}WQ}Qe>L(IB +Be}u7TMuE5f)Gn}CVH_7sLrSGZ$DgoYrGQ4M#Fknf3seTYC2plZSu0WNd&NNn>_3KTY;DUR`eE{?DzO +Lghek~qwqK4F&kUv7ejaLIAtV;)$BpXT>qQT@xlU+M1Vdxc6(2TcfPD<B*D^=UGgEi>#DrkP6qJzsH~ +cVF^?3uwrbZG7!5jLNs*v#hujRg>-Pw(R(kX==utOTpNO#{4bOMg-RJsEclg2V%9$Bm`|8iHKKryg;* +Z7}2`#+SD+Q^Hmjt1l9a?|{@#NL6bjl#jiw6B6qJh`(1AAs>*$j85IAO0In8lz}Q<(ee&FS930Va<_s +JO+sg^rmbOZk#M+*F-mByHYWP%vLDDF6#bSX^O52LRZk!k_^NuN-bVXy_A?jsmp1fn@BxH;1~*mjEFW +6!k4*@}rk#hEzX$mp6%-AUqh@+DbsBoW$*&$ns7FmByWyePAh0VJxG&x;PzpWrTfEdQb}LP6N!s+Z-H +;oIcKJuDpsx2{9+8+DfKcqBpb!B?XN<mHh1f8KqbMS<A0Zv72-sJ%;Cr^yDI_>pm@Roi6AV<s9ru|9! +P63OnqJ+cKx4{L~p1#}Z@g*{+*TPTU@Eow+Xh0RAkq#v>-IaCxJ5wLL{p;;-Rx6I`Y>DvTcv56)Oe#1 +-&6{PQ0F{52egXYl`V*u~Eti@N6C<3cPdAZb1ves_5Ex5KbE(sV`{d`CN&EdBw%z1rDvcRl!>)JRaN5 +>LJu2?(9<3l(&DCXEF!#e<$gDZ0KGkokr*xy(3btlnisI&bLRj`?DWn8^dAs=Eu!{vbDY0GB(%&8}y( +M4Ue#i8B5Y>4Q!JE{S#ITN5Gfxdjgf24zMLvI74^#u8z4-kX!hA`d`YvS?cL!lt(j2->DeIjJeiTHO* +dsa-nZQyg-O@*0h)(=WNYb~yo^uk`JL>s4U@9BT|;=y0mJC-0{|IPzSuhZ06xsg{9TXP@p)A=kQwO8I +Ot>&dXkZHTF7VMQ#11JtofPaE(HZ^%lookV`>Y6H(Tk3w9BFnNRLmfmaQ(N{P4@=LR>%}#ev3L1!af) +_zI*jsA$41(=IQCEN7)8O+@r@`~*sO;V?^Ku|nSa(XMcu5w<p)ixmpC*wa`50&B4ky?4P2X;gjufhWw +E6POUHY#h&nD5fYf3-<yJ=S5+S;Z6meICLAcB&iY3nPJ4&n2+yU*Y6K0k#8fZklwg;lDH1JBOMGXK#2 +*_-v*N+qofzkzqA38Yf}3h`p9b(~x@m`^YNf`90O3DkRZap%&YYY)&2%=T9Du|#Ui+%D*5fRcm26m;2 +%Z~Q$PUue$3bIv<~#DsM2=zeBt8T+G^UB^umo=DDi3llhivv(#<7KSqZ0`mQT}~YVDwZ_idhK&b5 +g?diU@;h>~@tM4znjc8~JZlsS1?Nt1Gqb28k|QI_qv<LEk=MTKpWemc&Ilpx2NueX_)QuRe7gzxaLMR +n;O+B`Yfdz<|A-O<<f5%u$5qVW&EUA!2aqkA%;+Y*wK{k;z-r|3xZRT=-VeSSXt<>LIs`HNri4?p<rq +66^$;Pm~QGidU3|IDub!}y0^E?%7f_UrjC)bgKHDvJCXa3}X(g5Nr$LY+#*$CtWSR3@RG)BWhdix(t; +f2ro}t0DY(jekD<E!I+odAlexJ=ksIhc9je2;%w)LLzux??ShLPa5<T(4%KBUOWqCm>W$V(Mk&t9Y%n +r@76ZH--VmCu+-`J`*57)4IP!I`1%Z$>-rW9?eG`6gem+jd^&paxSc&*VicX{;#6=xxk=PRz*e!Oc4H +2`(-Y;O?Pu1+j2N#RWzkm-gu$mnt6f#E6GN?**0QHCC825gw&Dga2UnRIJz<05egi><Q26(i+(S4jgO +)G;jjw&DJ3;WLDXZud|BEhhkwn$SL*d&_dq%`<G?!-=-G+6V)#)^!q=oRZ6G%xCz|F|BByjGs4TquIc +()eE&O)r(@>lIp39ZB$Jqsru78K%wE^J)_QGAOFPVS(tJYKK#`MFhGG6%ULJe~;WoSh<1YTS0E4)6J| +;pon-iD5Uq35<Zi)yIAKVP?20H#Ts6ZA7dPolzw@j@t#Se?)K3&W=yt@)3IUy?mWEnf?qdeULuMP1TU +Qb4e2JJ($OwV3mar$`f4B2;80ux)B##-eonWh-`vMSFPEm#^B+!nxVT8S3U&I{tF9GguyyRei>WOHKI +(?WRh`)c~azMTuZJZ_GJn?iUXjc<noN-d8XZ!$evn8N|=2Bt19^-^eK6bWm9^(DNV^QVf6T>SMr`73- +#y??OCgG;u3oft}s<4{4^Cs3gJH>#W+Es7S9y1@`Ga~GpEBK55#x01*%2s%x#$qpUtE&X%_&mpb-aIU +<Yk0RLC>X;o~nLfJIhhgK(<KyQP3dq2bfhca(17q4nJ*wHbU16XSLK;JlGKq#S`BXFI$~>g*%!OE*Ql +w|{a5O2q&BaB#B!jZ>rl1|Kh+!=uCf<rIRF_jNi?c<3VhM-0nt##c9rp9G(N_s_ItXpPjjrvU&AWhSB +#VtagYbau3N^e%y6xqJQT6R{CPF){|m6Joe>6O5oSR|qn8Y!Z3!bmb}EZKm<r(J_n{7xyum)?!>y<W_ +^3bFeL~W<M9o@mmfV6JronlF3afj~jPmZ?cBlslJQc3`~~K2Z0F5;YWGb<La5=bV2}-iAkGik|NH_hF +-%|2_G7ow{K39)5C)$V#g%FI0WSp5Kzk#T_~r7;L<56JK;`C{{bkQtevY!UmZLy0bc|me$0h6Qn=xU6 +xhl&wh~F<jm7!`&GeH`Z>y%2YwJ{GMp*(t1S#4}_j>cvplFPz&ZpIV8Hv^D^z8>=qi_Cp;zzryXx}ib +f5@P5bO527M7FY`-#O`SUdVwP8q2wT{u@6w+}J#uWiH7EPmEM6o<gP)q5m|)b7@6SFeQatl>3io;zzd +t@k1F(Fi8oY8}CvXr$MJHbjd(KRjDzE_c3^^7NO~!qr;6xH68}sVXYF}RUdL<=av%2WA65J(k=)Zb<l +}%PZ<JdOs7QToCb-S5!X1x!J7v78dJD5sPA89Hz^qDR2qZ-4S;|fXzUBz0~9g#Sa?Wwf=X6$^d0Sg1D +Y5sE-x;VmtYz2pxz5~0=!V2XMFFouqYHI%iu%Vq*s}(+)`l^9;v&8J1C!xsY?PKNz$oMRH81WiKip2L ++5Ii$xT&Z$`pc%I<0mDRSZeIlslBC%vPtD9{*gusEA-WZ7LWQddr)$!kH-+?vC3UKR9V9krQ=a%$eFq +F^eCsB-Zz11pUN0w{8|PFjISB!TI6j9SKY;jg>~VP_u7XFh5chMK<M2F<|Y>F#T3j^`-M*r;aV6^-Sd +gEU$&SK^3f<k(NFo=hLFhbJ@qf6{A-()@1c2{|(OQkSU)Pzea<u4Q7}f<eHcd1|+=#L^&FO*fEH*hZH +xu8_Y)eJ}tKn%B{1TY)b%qpHHW}3;ysZLOuu*h8ATdMW&El`|tn$DJAHqq(^vmVFm?YDA8ggGBpC=+q +3uYWONGWj1osc9v*)VF!Gj<0)gP@go(@<21N!#0S81Uh%ZXi%*muGOihXqMSeOZMrh)qu;jC9l)+S|M +r=^<01pn;w+$VmFK=L=Dboho@>oln?pr9!E*E(*B^J(57Lqi^6ea?e!~}<#TFhJGbge;ckv#%h$%WSR +2x#qED=t!I`5a_smea<_f=4Kc#CHMt2~wTvDGc0XQLo_Xuv@BjJ6;y9^}oM=w{>#7Cvr%!IZQqVRAMQ +lDj2y@R=ck+$dRHI8U@koVelWKZynJLm&9^y1ZUR>gEo*~MQCl$`i}lLWNO+Rp^@APW?2gCj@(ACcK8 +-;{mvJB?z*A~j(fIV92EjtIM<{f(=nm`MeJ2T02-p`;}Iw-Ka<5rrklp<+8-m#Kbbho2=qsZ!~{930W +o|VJ<N)FK0&gmXZ@E73RcCd9w>ERh7U%1<c;p&5&OdMO}+NC7F%uTptWEOT>o?rQ#VFh>o>z7ga02s+ +xaiKgyXSREJYJ0GMAENb4h*-EhV~9G#L3^S>9Bv>fEf>0bCRi8#<M3y&La%4#IFDio{F0?4g<KcXnDD +1<VaP|Lfk%o=67=t5^DMQilGc&pMG`0#s5TlNryK3#Qe~wg$tQOlP#d2ID=6`7{PpUXhh7sBwr$@Upg +xMS31YmphMxj|S_ox-t4fWD?_8vTu#uk$)D`s}Wv@@w>t+nBVZ-i|#$it=RkV(+EFnO)D<wyZZH%RO( +|?H}%=nJ?$6Ti#qo%T>hB@-?${5j#JFVRO-65$v5cWy<0rvvxc`JCe=)Y>CTJvkz=xLhTKG_fV!JY7s +nEb{*X8@$uQa(Z}g;{LX3Ehpo=EO^|{>jh%zbbub^9=1OU_o?GuuM?b$4BCk67LAx_qq6{4EIiki;yE +lp?|8K@TdrJ*Ua3_{W9N>~WRvj}Va<48k;YgldFJN@1a2#J-8N8P!nGHX*zK3_05Y3@W0Su{<;c0-x~ +GT=WB-d6YM5Fu}g%!xbA(t=fFQH-u`!PK-T`+G+x-|)_7tWt?XGpzGpm3*SYVS60iRc9B-0sRsNU)=O +&4y7EWGQ;DL?B)%%_&RwW;nVJVIxxsfz+PEPbiW&P`P&L}oQjxx4FVr^kX3*V<ewEOdatn3G@weVkb| +9k!RTo%$h)|DsMKXRKK&kjk4|zZ)LCgMQcZ@_tjK4W`z_ohCjtgD3}s&^NneY%y4Nz<aF=SA#u?A3-E +}H%NLQ@jkqim$nFbCXC<hhr)SKf2SjgfBVPc|P-2uYk;Ss>BcoN!q84iL?$xu9He$&IuGd#oZCcp9q_ +Co0gZOXimm$KPHw!u8;GwtYuBJv66M;GMom*F1qjV>JqO#U06_Q0=|{2R;iPIgJ(r1)ZFpXlK+z)@?| +y_K{d#$a7VR5stA51xy7B$ujd!R`qcSH(LaAp49P>*0lUW{fIz`RbcH@gvfpA=TL%C-~mDt~+0!O-kA +#v<nJ#K)sCh?DR{<#W`ptF1C_kI^Eq?&JBwiWa}sq#}chNLc{>aIVHrv{J4GRhP*d%V^8TOZv3Lnfxp +$1IdbJ3KzY@t#(2gbi--62nA0&AIp+Lh-7)9V)xC5nRrgl>=sJT{2i^=Da_|7CcetKBR0L3r60HV3mn +jfV@?bfZwv0hK_fh+37%O@pC0IeAG~QSF^+IGKwSz~+m}_Nd>r8(j&vH{*#e~n*wXE{fwK;bA*e*EmR +v(9XIpO6HzQ`B-2aG1v1gAvT?<^xCEbztw9SPpr9CSJqSNG>qr++vfH%P?E{WQ{;Y$Bin?sUC~fsSP_ +i%vw9>!#EAr5XlNLANGTiV0t+Ru{&P%5*h|#u9YScT49KUUp$yeojL;LVkG@MgzVMcbQ~S+b%W{swcV +sty^R44`mZvf=dTue0#zB^Gs&=xsL7Y^hFHPGAmC$o^X56dp5tKf#<Rpu{jw{EK*Noo0veqxWfYKJx0 +Md7Vy|()$Pf>(tyK%bGls<%rq?>k#I-opvD)WnKX-zf!g|rsK}{K#vNs-J#iHFy3vSCxgAkrMz=#X4% +{vd#-JNZeu&Ky-U;Cy-D(%0D>n*>5rXVVLO1E(edHVV=AHzfrN~W5uVq3?p9haaOk}Km+4bpe`H>hFP +#`T3wvth|*`rUR(5BEBid^U&(59=zg61q=UM=RR?;0u_D8=G0owF;_)5>mX(pYqh6Y6%&KYR8}UOKGg +xk_>k)pxhIk@9Udsft+NWOlCNNH3enhK?VZ>9_CR1uMlbnWRFeB~^polZH7|HrYrnx40vFWhnvf)kIg +lgpv-R#ih7bb;-2`^ooxvFUnG6!WY#t4iuWC^L8PV2jw*;44DhpOz%YpbgRxK7%!YTcc>2kIx8d6Oq7 +N0iErj>b#Qp3z~~80l@>k>q)H|Nq<S-;r+6(6+S&5zLDlC_bWfThNPsLSLt2I^q#YI#q7<+}lwWmjDo +V;iI!|}@8Pz;IcSPq$D$)R(7CO+AC|&EiK?+r%Bb`pkj`4ajTs6v0A|nEc5qVwA9`CYyaERrc=wP28P +VWw0k}Jn(jrCEc<>k)x_<TD`^1*aite&C+IQ1LbR&k+eb*_p<bEA>aHsJ9YvFoD5L|wDAl=*@uv#Hlg +!9+nFU&hBIH>fZ)N!v-<%Y)<n75-?()2ZZHwc1y>;@%)%;C-BD^bJ!-z-ltm>`u-uK8i3Q(UcsGA%D? +H)xMIK&UTMp{|@+oJHv-B2K?6!{CRwz=0=0BSUwxItS2%^Xf+=j#i9_8lcHJ_V#JTeaovGTFWb88N`T +Hw*Cw8e!%Zc{y5&Ff{j2)@Z6GlY<x3P#>`)X}pozOqgCY%%_m6|mc0QE?W;4*QkmFjEGIW~VZO^lLgM +YSmpvLy5YJ9pyX<;@r1nVpYwgQ!ID~T^&^1a3)Z-l&*bmRX6P)h>@6aWAK2mtd`vrzVEC@fAH003WG0 +015U003}la4%nWWo~3|axY|Qb98KJVlQ@Oa&u{KZZ2?n-8^e|+qRP5^(zp&IV59=kz}W7v~kkhtlOJC +t?LuJ-McI6>QW>mv!O_qq+}~~^V@f30FVGl$#x&NJ?o}6iN|0t7|aU;?z7&L9`lnRj29!eD(1Z}u%xr +!*=KK)bd!aPtAg2Y9X9L_hCTT8oLyXTcD5<5l9-(*^WxgeIQuGD#er9ZN$f(;bI#c}@7|uAo}akIO~J +f4U~j)Wy?FobZ{J^h_x>CUp<QQhZ?E%inMQoc<AQp#WX?P`kN8bEi#S{JEQeA+j^+LpG-GL&tiyl`R% +x1K1)C=sJ3Be+9Ub+%otzh|v`CUD@A=6x1(*m1$ItoFi;K|LV7i1rCtMPoC|N9^P`zfn)0t<<lDPs9l +jV7lL91!8NqH_CtcoyF)v1@|e46o}R$)fd>U5@4FN&s9cFe}sX_76yDE!ES9|Rg!muZFHdId}~v$`Et +{aD}dh39Xy4x*sF@wuF*)?5{}clbV*lq_*N$+9HFjtgE)1>LPlr-KCI8B9Y`%7yB0sLY;DV{gf)Q>WA +E_>q_AYztKT2QON2dUQsF1}wqFRhTpQ=f!MQbyExF;v!+o6yTQdB~Uw={mA`7!V37DO{ZZT7SpMn^Jv +~>xvat;EODn|0bv?B{_o;zYCE+?u#5%PtG`rAYis9KTR?=vnumE9=Y<#h+@|(j222?7M!Sf|qJhI+v3 +{pSS;B4Ln|Wc**=bUgdxQsqiWa<kP#3BS7RIn|^3{x}V>uP@DXgFWVOs45IZ#pnD`<m-bA~)kwGMl9E +Z*v^Dzq-3S|a0nahw#4h5%XcIHL{sIJ4MeW{jqzHRV5*i&P&)tU&{D(X1j5?DZ@*7wlNTlJEL(G2c3z +1cY-Czyxk`I1NTr{QfAv+=}sH`)C@*wnUk56YUsC#O6fIncPW@`+_wvzAx0p{h$g>a#a-R=;_lS@pCs +Nz2hd?;%Ua`JmawGo`T}>mPx>)eIX41)RmWCO{W@aqCjwW11qewwM8)|mGLy&+H>!5Zd;FG!|f?vhrw +wNPN%Mtid{qU7{H-uD{Q@!=<_9LzZ4|Nri2jY(=-DzkT__-*)BiMTI7e49z1ugN{~yXVG3F)n#D{(Jf +0>oS4*}=36J8Ohq#m=mVD5E9_nFOYA9kz6`|;t9F{Ynj#HeOS0ow2`?;Kh_0k%#$Xm_=kFC4R@3M5n* +05{*N{d;qTHCxb+Ppk&Z3Gg-N4y#!?`m#BKi=NlXmy`v`)szs#r0NE(Pf$$bNq_EI(92?pB{$eqxR;H +%E5n8OIRp{EEk9+akODYQrcWzRPZbYwALCAkpY)0E(krA0GniFteL7#H;>xXo?!o$rpDIUs^&qH(bh4 +U6sCh*+NR1Xo21+rdCL88z5xnIC`>6<)%9M+L}r){^~q=mqa@Gn!VPvZ?yfKxN#&Z?(4mcW%rbf~t3L +3J!UZecD7l7B?TE!f6WWJq_rQ+faURmT3UwalYEALSkHWk_Lw2GgpMi-C1`r?|7r8l!{n9QDX8(b|T( +Hom&=hPX$7qQ-Bq^*UilQA5)e5^j4)SXdF}CGCv7BZj*)U0oxB%3~UD~C6u%&rB*)L&$ON*d@AOpGug +sim{MB~Q-lSrEoE?ts3t^LvMT15eyf!9LTXXr&G58B*axMJ`jPMTd`h5pqRIM-nOOMe6m(2A3R#0mSr +dCI~<R7e%m24)S-LBY(!8|0qxs5hK+*+sVETL%5F74QcL3NnO1j)32^j)f>8&Q(aXc5m)ldmT5)#G{< +IuOHY8S46!nv%Utd1}DSMxL2T8xCMx^=84j%u&S+a4<a=ukvm=Xl?PZideeS#y)*@8wrynp3YN3YCn4 +v;rmmVmT%w+q(ohbsak=uL@aHY94chxx%Ac;hEdht;a^5A+x}CEB2oUj>s>6ul0jf7FJpo|e!b37jRU +!#m>8=ra7Zr$eAx44RBO=-8U(&z(S4&@gF5z7FzN)p>ob=jWSD3c0lp<W&Lr5iIm~=IIlnWjj*1S2?T +n$p$Hs~|k>dj<rb1L(llTgqBnpYH=T=sbbAj+(Hv+FWPm1Uz?BH37(hufu^g`{{)vdgY0vc=+cn!9$p +F$&nUBVMg%lkhDBk#>W*(_|rutSvS)zw!KHD#vQt;yIXM%EZ+$L}y-i8PMz+$VgLJI_^*4pRRn+1g!h +hYKU6L!K6M5(en58?MwfQjE6_cfyTE7y8XFu`}2RJ+fP=FLK$Cb^#9`m0{?#36sG5}gWu?@KF<DlPql +M)a&~mopZ;+2{`}o{r_=W*Xp?e^qlU1anf1^0Yx^=dc;wI@`_hHq&J)MBz1!KXf1CLZmOIYtJ8i7Yg5 +GwTfGU(-@IBz`2SGTn$6oK_o8JFk1`|X_dvjg`kk7~;COV`%o#NzRHEbo7o3{TFN*YvfrHU3!q>x+I- +SusOQ?mYRR@6xDHVJZ(C94#XS-Rp;ViT{HmE8a`)LuKJ*w!eRL`x7hZk|SA0oJr7r8gLt;B=y#LjV}F +6!Hz<#=XG=H&?$xUyeexBdG4^)0Ct1Csli%CSWH32r4m+I#q|rmR$u_ApTMDiNd4N=R!y#2UNw+M=vI +lb=Ottpg$T6MR}C?U{+T(hZBV?fd}1);=W5lUt@PMwxp_wv8aOIfM}QS#^=GLTx@~iR>%VXcF>{@|5U +*7MT1Tg-3DAxp%u2Mg5M=%eAWO9N;RBkMZk81rJ<^MiO6nPj2uUOHEyeWj9^286S@L|lK%h<#k0^?dL +~D+{uRR$B0pJVUJ5QymwD?X3~F$s)ed$g$n7Ny!1MNtXwzl0RRJUTAeLc6(XJ4VlpHp1z{#*DI1u2C) +%>K8LK=k|=0UiC`LviNG;N^NK&~9T*36@Jheq}5cj?jWLL^p>gITSXMr?PfBP6c46@f3S!S+>@ZpLAW +&>i4C8BOe>WiSt8047Ul_j~h#XZ6qpu_)F8_tclO3E7;9*i)7V)=_WZR6Ky>R-L_mB^nyUQV>2`U8fp +WK_Gn5an~_WQK~q(26`nQm{*X)1IBkjp-Fv0u0cJhXl`3;D#qS7u!cG5T@BjEJ!uhvp|i9q(hPaT0$Z +y0sx+m#nn0JVBNZ>n$u7xUGK{-~Q5T_i1tWmon#Se%;#7ozbS+i}dK*WR_78>|32xUL&`}uVt3ndeE& +Mu3f@*F9cc`sD#=JmlVUQWtWDhFc{+`~}?dxyez^FU)hUWXMR`1u|-J|mT;=BL+ZUih0Yfo-yvXZv*- +#i^#jg|J<GK|CJYRQW01j#ysX&Ts7E!C!o_?ky-iGhzRZ;c{F)#M<zU<FL{6)j8CYU}Bratmtfr$-L= +>y@zRIXdrPOGGI7KJqN#6jDR>uJ6BnjB2iMtApd|3wdkhEan^|0yR1O5BGmi#lRo8Up{DSx6l5bTmvn +@D+JSr0edMQnd~0K1_1*y#fbC)_+97<>Va?j6F5=sk^9W;J7pvy2<K!@7a|6&wSiVuSYWr!Rjx0tQ@- ++jK&9-u&2YjWVcSZ|O$EJvg)t>owBf~_y+3(>^3C+(&DZDT02cO`B%w9KUq1fI=r`<WYvTO6V<0iC7j +NuBdZRQceQb(!)q)x1HkO7j5ppV4)V}GmjU0huUPWf#h<R@0>!#E>H^?lT20CRBQA)=fFraZ%3h8c|= +vQt%#%|Cm-58?qW*n163M6k4Y3dY9{@r?vRTF`K(3ut;+*p#Nm8Waz$5mR3sIY2>U8-hb)V$Qen&4jP +RSTo)Sg+zgS&j25Rp({15CluMvFe9Pszs~-|Dt)0UhpIAxhZKQGd_7oTt`^rP-d!o^0TJO%CQbC72mI +bk>*w!N(NMVS~#U?Lx7nA-u)I349w12>jtNkamw7SHGMbN!3HRf5n-t-#5|A(z`h1D)H;^}xC*f%gxC +Ut30`z}5J!Y()Yuv&?jjH#uvCz0^asFYSK;$3X?FmUYT$s3F*@vwxaJM<*uoqdH>n-*AWmv&RfgLP_S +^+dCytuZt7ENYJ*w9ljjX8=eRa&r%Ep|dhy}6c{+NWZJx1vo3Y`<uS((vo(x4|YfhoPqSpsOMLEFV&g +tjmLAJVpr(Eb^;HTRcE-zFFQg)n`!6I1@vpUbb(r*7z}(tfu~0jSTTg3;7QmFeHkTWwIb9TC)Y_k(Dq +!n?35)X5l50^fBM>Vw69Cht6GMIJqPMRx4?hp$TG;O0*jxyN^kT;u3p7uNTa)%#mkY5%UFevNRKhjeB +wg|X`x)?k|jBABfj|5lB$Q(J(;diKqmw<q78oL-<mXj5-nJ3Fz)?m=(zndN{>h`-u?Ff_4Dz`87>0O> +0Bi@X6Wv;H}DC-!CFAgIjhyO)DH(0%5fVl1i;e>}{72V1d;6~O6Db|O__1@sAaBXw!p?i1(I`AneIhL +nVb0pS>|U=`7;0b1KqYQ4V9pU{DjggBHC8%UKs+Q4NtUvCBVKya{-lb?s(Ux;XKJJm2+5fvfEr?XX@q +kD<oZ4<N0ne9b$@77DNJm+#oFue#~O1K!<%JY;*n8O4W?LaU>O4YaUL=OU5r;eEg^{zQW3-;&`1zr|} +a#PmEvuC{U<SJYEe6MB3ZF2toS6{vR$31q-KgXj_?i6;+!4BrUFK1fg?vp*o9$#KgcJO)$Z53a8lv3e +ed088@Posk=liOws2N1M0@_f$1DB=rr6}Le9J=w|KEnq0Tu4D^>z%@Dj{@auH@7_+&-k-qQ)K7ekbKd +GSHD4_j9MqM%oKt0CR6%F@dy&cfQ)-VnYw9`=NZuuh-zrrT->S^Gau6+2S|)X3wiu?#0j98GDZ}U!M# +_pSx*w#YP^D?8qh6InN!8+n3-l{47-|B8JzK)M(AdpaGaK7?WwCKkBZ^vjf}n=~EESwORfiaef;ue|3 +Z^R)A~0jC;F$22tO|y=mSkTM70wGW)&0AYH8I9oTWJ|#ZNXnV+Ag!>6zZxXU(H2@w2-i@aj+^{RI%A{ +UyrXgTaGa-t1D$uQz`N4WLp|TV80wT4waxnov`%{b4l+ACR43vZA#-MW~$oGXjk~D?6cjl5Ce`6N0SM +rfouhCP(pSZ9Zp)7;*Oy-+oeQLJQ%4C7%HMt?NISPIlmx{ygc_7BDf_1m$l8^)FSh@(9qmiqS!IA5$X +t6dy;0}!iBJfkYqgzK~OMW+?b#tu_*>3x50zu!u|)cy^cwkqwE85q&Cp5%(I#^VT#bEbkl|Cc_}!nc3 +NtC0uuo7iYu`Q*SvDQWqeOi@7<hjl9h^FnoYzRQHYVr>X6V5UGBC-)e)EsW3njxfP%@v!DE8Iq&ugW0 +FCi=Kx@G<9IGEB+L*A8Sj!`T+NmT-IC17TM_pbWRMJ&LiotsFcn{TJP8pCTX~abalOST2T{Z*bUIh2? +vg$17*}A;ADo4+mzslr!6)*|<6i|P*IeX`_uL+pPg4HsGE(EB!Lh_g4-4&7ZZ1WaghW-AFE;|~2@f_h +}8iQET9vdDGhRl9;=)O37ERV`sg3_qYP~wBp5HFNxL^=*<=B<hZdV;o)Or+MP#}1F4A2Iujf!jYS!C& +J7t#Yy0K*p+*I`g2;UyAhLoc#<m`-Q!US(r5zNbwbQ5PY4p=J9e#c35wb+7iwyr5*5sXUi}~`f^iQ7n +yeAwBrC(ML0+xc@bE>!KTDQ$blQ5r^U9kEIsKZm+6I>$Olu#fz-5=&OwU^q@yViXDq!B97LnMV?pW0S +-7a=o^4ygB*#NQvXG&GjAc3`q<5pfVXMm@+p6^v=Zd}rDf1A>=-UpW2Les?+R;in!4e#lxQ&t?I0tm( +b;pQ!q#z7hO0p=QnFjoRxNEI+DT|Ah<*qcd?TY&4%Atl!ki(Jl@z#mhL72gTS_-o+u3<9;0qpC3#Q|X +dk`~&77N6|_Onm6$gXBN66@U}1;6b&j5P$(l>{f`7+}xY>hI@#`p69}Y%who?rMQp)$}ocz(wOx>1M+ +Ve@<dm-gk8o9Uv`K%<^iZM0)Py>{0hejlA;B7d+g2p3Fd8%FMF31QaEtLY%T|vLvuDDQ+hDRUUv9=fR +P1wci|o0WP`pt5DlKc5Rr!g)<1vIGO!#D^F77m>+H2QxZ524E%0GHVnZ0za}T@pFdKAXloxLQlT0S54 +dQ;9ycSb*F5TC1TCHH$eT2Cl$g~K&8<p$l+Sb}?^4@qbniz0ON7U-WDu5J}i73)Y7ilf47_3}aY0%?& +81NpS&oN02R~c^!b=e*$k3+Zr%<aF}lh9EIQI1nSV$Yv5`_mAFJFtMt=rZShIqM$~G40onE(2%#yqWi +O_S6@<B2LP~L3V<-mG*!b-X1O_J@xloc3ys@0VLd9W!UUfvWnY+>hS0pv!A=qKHr5cVk*{1GT!3l;8k +rSAtzhJTBoO{7Aw4kxSE7p8D83G;J&u0!!7*2bTecCox!lQ#$i5@1c&M=l?iJ^cabntE#OhO4BO|>6A +94H&i&&tq4hvZqO1_xKfolUJ-XclhLceD0p=SfjF6NWSM}ZFUiN7B+){sSQvEx|eAqz1Kw>PXlyY|rL +c&^1O(=?TNFkJhwo$0lt!Phk*)s>gi%M2zkxxvl&?6qm@qAyT@~O-%ER~%Yh=wC?;AVrq+_u2VvJCqS +`dY&m?%`o?@O(HNRt>RCw8Zjy<4m>Q+PKM(*=_H(*I-5L)hg|1&X}G6QiXy(<i4!X_ZrpEIcP%%nwzM +@KE|@)p+*oX#i3Ad<}SjbY`3G?>|=IUGf)E_4(rN>0zoJ<8|rd{eHuLLgOoekDdoftzXeQh0gZcXa7k +1bZ6RiB{uFr~!bSq$1-R5P$nLigeTY!X3`8-fp+C@D^!zGAvDpA91rXLDzZP_n)braZ@@Y6=cHjMcx7 +-H`0L)tn_qJyUBp(Fp@KtSN`O(vh4=CtzwwK=Qsf&|gW^Svcmwiy;zGfpeIN4A%JI#4zPu<s2&+;~>8 +jSaSI)@S;*C{;^FqM3slh<PhA^Ib;Rl&8d3pvoQQ>GlAy?KAp2!7&ylF7j>Oz{@vAc#Q=O-%Ql)6r5D +DXvlGiD85tGpl@=QDw>1Fv@!PMpCb*iomMZTi{lQ_b=5uypSIy-rVx_7Zpy3X!geS7A(gv0a2Qe-I}6 +W&-AB=jZP97uPeQxTAn-xSL&potCDG#)h<e7R#@wea4?oIry(7W1`~X+URdq7gmJLc{fK$N_7@MiUQ8 +jNCl)(kX`^0{qRhy5I_(wK6XAyJJRz==wIpf#Dj-D+BeQWG9$T=NOby<god}4^aZx?W@S?osBRlrC5L +8YvP14$({=2~T<xdOTR+z0smIM?Dxhf2;GC++_XVntgcPC$q(^_LY{L1WGxtM0Q60Yg)+rzMEwss--r +gkBi=y_9LcPwqt@<v<x)_b!O!`6HKvy6KmwsEUL<@@E>8Y?0wYNW{qp<gHv+Qn(7)^dzVv=iKr%`{p8 +Ri1=QGv2s<*f@<+EBV{<G9I1}p$eDfw>e6rRpz>xYtzVcS(?zrH`?55FT)Sq+1A_YjxJ~|{bMpBrbn6 +U66eSH?r&NM!&%EYd7N9Vq;c9NY%rIZYp*AahIA-N8>5+an!8zf?o-b+-JM^7n^&m!^X7K|Nr9iAd<z +Pw?XoJFCYP@MXFHuh+xJl2_j@nOtEBMUn;@(0xQ$BJP`7vdth5+}p03Ufl+;r5FXvHRH&rJE>X5ar+% +X0@74kFhg5{d?xG>pz+vju2geuXgyDNpN{FENXJKE0g@MoX>H+`eSs_vEJ*C)g=CW*gX1k>sBlZW(Gk +NGNC;1NO%&}>5ig&yj8x_lx}Mk$v+$BucpTt)OHklH1~#+N?Ii3%!>EAv5U-}3sOI15TEl})p5rUB{d +9yh<fo+@<opzFbRTmfEsKjP;az`MpjDee81gHm~aWpp^1sA$GjLWe`>F5e0XfF@9$$d9|IBM-XwCT~h +cLN!ukbhZkk0P(4KOb&85=^{v{+fw%o>z-JKg11}d;B>W7N_ABG1m>?$`?am|Tdv*cA9Wbe*B~Ap<Gd +T#-cNnj=2rh6<~e<>^Ukkg!nC^beieSiLmcGr?6`JuSo?Am-V`*7Wp7$qdNQj^m~?6^pF29`=q9`I*$ +s0o44<z)?Dks(#&$K7&VBtu148T9MC$3B<!mH&51q|l2LDQjPx13YE%VSnzVm%9KZT|F$ap}3$AKPx` +GU<u9tC-8XMKA#=w}71<#IzGrC|2s+>swSC=r$%wd3P&760wlT*hZzcI5q<KwFLw6-}q-Z~uPs?a6uN +$yebDaJS8US_@@#n>W_B9%z+6J2C*|ahN5%nC9q}chfa(_^$d+pd|1JXe?nV(b$Bh3(am_tlc$_t*Kx +R1t%0$$CmssBH8{`sYc_8w0EkH7u(23l1EUlB3H>fV+ulD&FbHOTg4yZ<T_Sgpr$Y5$Pe%lVAK4P7-7 +w%^M6oF0|XQR000O8^Hj4?92gG9H?RNz0AK+C8vp<RaA|NaUv_0~WN&gWWNCABY-wUIcQZ0BWq4)my? +uBTMYcHH^O2;JOwt1+7``I}7Y%B32$CIwgUKX82@VX*ki`VO3)yjWT{d(Bt^^W0qiNbvcQ4-GdhdF#E +V_%k?p^k-e7FkCFqlacH6V*wL5*%!YwWBBiOE1h`gcxs&m^Gk-RFIt_j&($c}RCx)u~fer%s(Zr|MKq +_4l4+Obo-A;ZIc=<{+c}b1?t=zdrcOp7Ez_=B4yEuRds4`sURuefMt6-_Y=*A2i(a!~E~x^S}c?;`9G +yeSU-RK>ocC<d@&+&i~<$)~&xGD=VWw$MNGwx%I`L+%rG%_p3b@=Ffxo4G+COKZm~6`QN4QH|CeYd*O +e6IlqX)-aX$><KNcdhxGR_eXqFp`#!{XWu0A4hFNMzVK#r~(p`zTZpLWHG-NQ$s}Oiriz~Ys9#;74)T +x2rMutgY3^YCQX7(B=@&5e<10*||DImfo-^myKXX$5{g%qWMdCv6>M19u46s5!K1j9`I2ejYt#T9)7^ +}O5g?eI77>$mXme(z6ug|MyW%VF{X#SIPX?&0qNkhyx>Z-Bqh<#150;|2|k>7f)hXgELr8eHgxhK&v1 +hi}?eXfv|{-Xq_DuVMZDKLSADCQ1W}&t<q0?zV4l;s5{d|H;2qa<9j?@G}Ra<}U4YFmm56e)eJ}5E3Q +@2Kf2DDoF9DxmA#~TT9?4`wnI@jGysYq1%1WVpf6mGis-j4v<!Ww1w(wBVR|nWh~;m#vtDEO^7%A1H{ +d}W|m=gnVH3m?KR0cEH<)?FfZt|x>Ugu3=9vds!s)}=0gs5k=PW5(PCX>y{f9>u{^&)&1JA!)x)+oNi +B^14jr-iA0ZyP9Pw}^MLdLv|2Xmuh|LMaay9F<slke27k4-%l)ad7EhjgPV;J$61zJAkWsH*3?W|yw< +H0I}>|_hW!SbSE<!w2-mbO{!o$K-X4gytz&S9JC^GyLHQsc1H*hl<OjIF~S<#vXBA%Iv;ilCW(qgNG% +$y3mJeE&R;VV;(pBxRV^v_M+bD>>u#XroDLj00pGfqWXU&kQ5aZ*Y_CxeVi$`$!2TTfRNYUnTbyMoiA +QKjrC~VB@Lt&jU*NOJ&<(7_w#$d6i=r$=NSMIWR#C)qK5(6s-skP)g`0({nM@4@I1YYRP@JkbRJQD&# +v0&5(p%7pcc+XK$gi-=6}-)&TI+qveuz3ledzT-{@;?)Ed+Ruff#|HI-34Ec}Aw4@{07%#Tw4>^=h?N +dUB8O6a2c6nSR74X-~nFpsr1W=_O`XEKB?Ne6DI;kEs+CqNDg;l>@Lr8J02V8O-svDgWqKFP%qGS!0& +rp@@dfECiVyw51<I}3_k&T}#Cdt`{NFpHCWoKW_+PV&{Uo9U04Z!KP0ZE9HPk^y&YJexEd3+nDE!H^A +1IaK1Sl}y2;VYCMdwux|azeigxWPr*Cu>xs1YSb<D#tz|ED1W}t|LVNiJYM1k3s1gi&DrzK(B`wb0|y +N+k{h!$u>}d=;~om)~uD=wCZ}~J~cNFa*5Y4exu*uXFQ0?rRJ`rqdYJmSk&Bd1c;{!h6>21u`iCK@w+ +x?Lp>b{nww9Dv_nhpi8uG2O^)hgQcFP>i-cm`9vC@ZuT)+zRn1+9g>(hW3#=~x26%08`P1EM?mUe$7I +ABVb%T%sNEPTc-vVg4ixdp2YV%_Sttjq_kh(M{ujRBrPTy(@hvV2^Ugv?td0rR!*)mE-i7%KV7drsVK +cJp=LE<{n4{Q-N7i^)~UW06a^D8aUN8Z&EchbZ?T4KMJct81*mbjND%37kqw?4<gM9T~A!g*B9bwODG +oQFB)y1ZUsH?LRap;BsY4y4(mLa9b#@5|Vg%Y!=$2()d*a+lYK^QM|R2T`;XbTin|d_kVC6M2AyFCvR +tF-9&gC~)t_?oe|J02<<eysNR9s`foqtA^F31?M863VN~L?_9)sL$p<sb;qIqmP0qmrLGeW=9MY{asy +AO?;<<!i-Hv_h*ItVQx9D<LyXVlC;M3!Sv*eTbio3^!y2&g4rIuZYgw_4m4{+)Lj57&xA;~fP7<baE) +W7a=k{&rML|~ybqPL{#~nxm;fn=KK-_<`>Z2&Z3U1#^wCZ`30v0i9gd7N-jo|xraN*N>@m5A2<R@_lQ +ZeC~L;_UESYMJVe5xn3Bnn_{p?WD5QoZCx;4}ANm#-H}nxgud)y<#ca06-PBF|o+l&=@<Glgp)i@0c} +o7)-k<^LUP^)RGrc%W)+MloW93i>&p@9)^^H_{XH#Eg3Jq3JXEyaWP}ldTlNVv61ZmBTh&gEjn^(`%S +VF)Os8Zzdu$p%@KX_*8aUq#~GR>elFUU{TuGIS@Kl%{4<e*NY2g@@9X&lH#8!hRij~U1Whd(TCB%sko +}n12$6%f*Xv=I4rL2n~Ib6A*3dh592K6fjK_6h!#+a;h8)u?K=xFN>((0Z$Cte#3(<70b57#nQnO3OP +1T(w5gQ54`I2>77Cm}l5|m$+yHSkK@p3w4b;eQ*t<67?ikl}F^jh}UCiLq7Ten!zEF(vImkAE+4^X<! +9nD0Z!pjg;@s7i$`qdWxc#gzb_vJT0xIKdA=?@IdCW8QbIcPN)Vi-lz)UqY!F~9yFL?%ENnTo>onRTt +OVfo<X*bUDRRI#<1s8dUmhCsL)jBIbks-r0h{Ur;1VXc1?c0*bQbn_9@O@cdhYtq2fDSH?^bEd<8(0) +4t$>QPf05Qch1R}=0{XfTF*58I13-6fjoV9^kW{824;DcGZK9e-Fwl#-5K`AguFj<ls>R_<a02^s`}C +PYq2IbDSefsi=^|NRJR#{QvAsIuO9RNaIg~?#=Cv*zMKI8Ffnr(>n1Y8eAV-5PW4+9ZA!B`@L-?xj=! +v-8C(~L7t02WnQ%*uk_(WU^bRtVo?)iGE+%8jYr5N*Q${7u#sofOBoPJ}Fzlrsb=YYRQ87t=ttn;700 +$qsmuu8d9-G_DX`l=w+<8hOZ=x{A^lWU;b$H{Mi<j3t<IGhCI`ADp5B4}0?Ur`@W^}l8SbE;Bfk1YgZ +&i)}30>V9q+ye1Y1^^lI-gE#7DGvdJV4<oJ=wKfJ!Acfs-zUk%DX4O>kTZ*1nvOX^(_@qlP!8)$>_R> +v(-Y|YBSB}M%ZHUA<FBT@rtE_G+Y0r*n1^Aj<m`z$QSVVnI*MOs4=IJ}L_naE`vIgTBCAvn5Ll4c6Nn +7R{S)h?B61^q$!$u3uZclz#0n}i8Bg^_i<Am%X@+*Bku?a#fKouw!2Dh>ud*m?z5R85Jah$jfW`jpt1 +q$gAh&fe-|-V@NZhYY^SQoPA?VVq2Nd!+*>vilSkHDSwFV=#>B-NMb2G8#@WIX0n&2V(W+Ov-$R>Du2 +$_P<HT1iJKJBycSuhK!l2<p{YG?%q<G?Cs2ReA8dO~b7+XYKQZ=y+J>Dl><8HS(a!#5c!gaUC;()wUj +4VedVz9wjc&j$~(3#*G#bR}r`k5)m<-s>3V;N6gRcpW@y<hZ?UBPXW;8l&1NM$Pt-hI3+RH<q)uj-TS +gFY;5pB#R$4GawhnA_@KZJ{PiE(KP5Pmi!GmzD8U>jJj7zij{*Ys-+9MY_|nIcQ~!TWZ^9~S{N?yEcR +saDZnEaZ$K^KwA>}tb_UMyKDD?Lq9GzKHJ*}c&q|G5;umK4whuMjK~@(qOi3F5cL*#}Z^3ND2~kp-`i +_PVqY@}eYR?KOCC)BB8}Zb3O3p5dRj%z+ej9c6v;Ym78+)FF*T!+ckTRna!r5b1K8ZTJcT#}vpX&hKq +X69$Kx5~8XpGosWrS;^wAHw{0OYs?+>OklDe#cavk?0!#zx3(psZ`%3PeSFl>DArPnOzbtN~-6PQ;={ +>}QCig)s;b<R^NN<{=NxWhknn(91PG6^Hrnp@PRX_5nqizh1L^i<!x&pYfWKp64Ocry$R2%Abq81zLZ +Nl$v0?<=Celv<G11A%5Rnghth2K*%d`4)YVp`;Y~hk(`1Luu&zJD)x!7=#kI0RamgF?`!>4!OB(lOWA +UjPg-V{v+Y?2EsGg`yqvWm0~GnH4MG~3Gaukm<qESsWlK6FPLv^2GMy!l-hg<_5If-5U=(u1strac#G +quzEMRt+F%hhUqh>}UK(7__HE)U2%C#KV6hIKqlgZ4<Nul`KBp4n*vF)+nB0!@hpz<Grk(3jx?xUtJ* +jM6~97b4N_#t<|Y!~B;8?was_cp`yk<T6IgK57HHAaZe#OPES9Rj6Gt+w*z^`L~_T5s>;Bgz7lm)rr9 +i~OmWVIZp(PIHmp6jO1j>1vP-^79#(GX-<Da|hsmTVc4VahR#&)8y*7c+ZAQYu9unghW1cE#na$gsB% +>+KdgMBK0b=U{bQBXY%xxD&Lo@Eg*0{E<6V<%D$pSozS9A?ttNIEeg{XLA_35y*l{_t=G}Qurk4~%V^ +{jk@BZC!AWk^z=ygw|H$JNOOXc|A&*3^h2b)tWX%EDMR_(z%>a-EW;p`ZV#whdW!WvLD8&P+aE;$mSC +Ucyk$je$Ov<MsN_YV#f)&s-m^JR8FH}F395;#Mup_tRApyX$2NAWVHgbH-Kd@UYZs6b*^2!3%c4o(21 +(w01xPZ-1+>s$3HQf9L-yjkLf3p@Vd?pfe!+5Ve6#gq~`Ve1M(}&8GwV=TA*@+wu$RT{WCW5eklQV2@ +98pI`wwW%7=TzI<;!$(+M~uPH%y-MT4+He9n-zXiIA(=U3w#=t_O-#=)HRXdZ6j;(d5J!U;h7j#P~Y( +)VVf7c|2|X+m}fjF1vQCbyL_y!4f^OAul+nI0XJWjm{?B(E5zm+sL=3`)5WOf*_~`dnx@(R85DS#ksU +dp@LemnfojQ5foW8{fV^-4c_Ex%FHy~@Bv1I8Efo70DC2hfRnHL=f?(^q0jJy!^PE&2x4!`_xNjo%z; +)QoznO>=cI?05yQG@kIF1%dcA^?HGgb?{X@6r|nZMh1a`oUjF>Y+QC0L%$mZD+0c><|M#K-Irerl9C4 +x?Ea=ORy|k_=JlQ3mNDhFBOKau*EpEK)i#(euh9v{}osnqGB74*C5&Iuipe$GIsXev?5J7`acekQA)W +bu}Q)&bdhdxVc7d3$E`4n?_rRdk7TG#L(*nuD7D3NCjO}u4ZvaqptD*WW(WFQ<EI89SJF~kCRu_vBE# +-%tMwJaz+Qz<EgZgwaKCYKa3^|7{`rPAg)w946<sn*qFocIiTlUMefK=4))J+c`8KhFj>e0QDPC>Rol +tI!4hZArmMvvmAAP4VDrXHHG^<~503(D-pBpEF=w#CVu3D|8vEoAc~-8-lbroZTGZK(>jI$lx4Z`h=| +Frr2yGx|DcAZXN}nNnSA!8$jmBZ_(N`eCtIkKmT!<436nO16vtf~;F<$r~2#RYPhvmk;SOB2xwfzlui +H-dXKjUQ-RJN1$zidjE!-GP<99Gig2!2Egk1Cl|j@i358|8@IIlOrd5Iyc8I~D>vyGYQUFmfLf<0`+- +;EWe`UF#fH3OwZJ^H5=d*cBpl4?hz+M|H+q4bZ$hRG7n@{h*%*uAy>2C-y4JvPO%_W1nbqc61>{PClG +~v<3~3i9LZ(%PjeFv@ik`6s)lpEyk+!f_lCI^(6-TV?YvmN(3u^V~LQ%UsodJ3D;BX9AL+FIpWumKRh +AXk+UaYN0O8rsyFA6umvY-q-EY^-1076GRzsHa;Io2w?eaBvLw~*WH!Hw8NWyQFef2F4&u&TeTkD5K* +#Qg9K=zL!HqC0IbkwBmIXTA0rO&I8fpiAL(s{(aG`purdXJ+#^o9OtG3Jv>pZ_)c3N>|ko;zRvR&2Vv +0WVzP=hUWp{AMz9-bz%l#`oB0ShQ#>~RL?%yC|ves16nEP`zH!2aXqXubXD*hPUpuxc5I2t&j;wA21v +FP1P;^)SB>qyTqd0oVwbGnYGX6J~A$*rNbz)H8pV5im1m5>6>}O~wFWXaYzC=Wt<ouxm<amUDP*T~Y{ +G+%P0z2C)wTrQ60Ot9~!8p0=y8^*}?9mnbEuLqX@oOV*kjP10Jk-{AI;7qlS=BHJF}9vi}5^TI^LLMD +MNtTe}F!<U>U-^t2dg@2K1`v;Dipe?7v7gOY%r=Fb+3ic;6!k?rLl;3P_0+s26y>p{g?rZvPhF~bW&3 +?M!E69V~E=-ZZW(52#C%1e-rYGwedlVi6l@<fn@)9lG3{+#UUezCap6X0-S%?>gO-I8+DNs^y>N8j-S +c$TUmRba*K1i(u7~W?!4u(M~<ja*HjagH>lHRl+LolgM)?p7foFA;T;P#;6z#LR2{Cc52U>{5Yaw!WA +;_fK$+-9qMr)40_^6X$3Cjs6hSLV@zu~ajUC}B#3p)EW6P0ryu)QMokJ&7akaVzo-U;*0}dN!9_Z%uY +gCr3L*nS%r1N9no^gMsT%-hYGL8nEhi>r3g$fh6|kyS=tEewaIJf{i^=ZTI=#mel3|4;<x^MXlG0ioH +s;ODnRweTbh5({dj9k5RBiI@nGKM4i33Hz^5361tnA7V52=(!qA2x?5_{d@IyX6{ZHA-I@?^sjFCOZR +gm}^B#L->uqXv&z1}@URv{1XSXsAAYE=!asy8GDEnq&dKyhnBu-5xrhwp6Ky5Cm?Wvc_w~cVmghXPj8 +&x-9z5!}}n4PTq!`Za%wGo(|uz{=>=3gtQpVkt=B8-Q@ixWN!@-(Vm3s&;WWagNR7=D(G3dvNhIrgDV +*U1aY+#cUDAN1o-waqXwJ|Zk3_hL~CW(u`rEqqA}l$COxR|oWs;EEnD-AYThjUfCaFu_!iCN@3ScgVG +vD^HmYtTxToQ7>g9n3asrP6%_dFN-z?X3pdyK;9J-^H*ApYDevOxx%tX1U#>2CEA7D^#if{3#frXs;~ +&z9`ZJ*2nMG`TyJG+Jmmcf;D-uJO-txOR_q=I7-ixf13!Kb%V)oU%r2xwEAnt4Xa#%7i^X(y`$-8dT; +u9)T;-k$2N$cLY6H{nMW%l`>k6h{kTt6RTeNE3Dr4vH8RCe6PZ39q!h6`LdsFpM;L%$-Ltk$B`dD}{O +CJk+Qb)%^>2X{^@W{pS?8OYu9m-}eu)qx^#eERL|A4%EJHzbG16!G#TY`q;gX!cR`XSt*Wr8{_rWUK6 +4n#<+k>ko77ny;d_UNX`a%#P}a7(E$&Wqbbq`E3G&vRm%SxyC1CsF5tj!6xcZ!s$UK$cD<%frxge;T< +3w+V0-9=3%*VB1G<*{coarSX=8e!M>u2VRfDOSiym0h5DKDguHERtn1h8M!wT*I48(`v?4=-Q;1YL~w +(_Z}gC(eHz8mY^ps9Z1-wrLIEXz$V9~#XsJwbdtAiMXi_pNT#cnfu@tE>N$3eWp{<ZN;>CaDcm{33FS +yHA&Ag+7DwkAeCK_=r16R)|A?U=Lf~x(8^6A1(ToRKkMs4MjH{B_GjtjWLDOAI=F#k-d_bRWB79qZ^L +O<q^&oh#o^i%lEj4I^=6&8_S;34D6vFGFD#oKY2%WT7i+_OulO-p6^+p02Nu9%98_b&1;UjUWrrvkIp +TNt#}DEIbZH=RK(yt+rl1xl7K?ouA+M@zmcL*wBrDB8hiQ4~O^Pa!(uA<vr<JWLj<m&<WfhLlq>>iS= +r#&GRaT)Yud$W2qUb(Eh>N|>Y<6*Nhqa;tsTb5OZOP)5-CbC;UiihGR%CB^N)@j|A@<2QKJ+!lyDSp7 +XzmQv8Ygik>>n!jryd^aD&7<3mBK6^QnDpaj`5F?xw5AyKN-t>;Gqhv2(aKSt*RrioHbZtdo{Zok>TS +AuR=n+<O8;$6jh>SW+{%|uLOsszj`RwnwRGHg^eh|lS6>sx07;-r{<o>5xhhoVwgd&A^=n?7Uj~L-Mk +R8}y;Bl}ipQSK+pgRYg#|(TbXmjm~$)8cP+~x6MTgZl(s!Go85}`*(b&+cTo>ap_xj}aJ%B-9&RiAY& +CsT3c0<G5**?AVg#l{{6;VlS17an@|z*IzLfq03KHBjXku6WV@Y3`i^owa+874(g)0(|D?<8#_nd=}^ +7vor^u^^fH`=qqa;eND5{SBizcX0!Bly%}D=cp_y1yksY{doF#OcNf7M)Y#n%F&yXydper3g)ZtDm|d +8-doF~cDf#eBH#4DVN`b!QN3Crs&;?m`vGnsSe5$!W$1d0aKtR?4Xi*I=q3*<8&mOw?{3Pyamm&bDcm +Ts7j1O^Z8{)uZkHHJnZ!2Jp><Z1tt*x9o;D9u$94V>xw#GEMZ8xU)%`TFO7;1JucMbK6neI1xq+(1XU +sjJzNbyfzT?a<W%ZOJ=*@e+455oDlG;!fc<6>s(Xa12ofXD|3uY5EdPm#?5)cE9!;-@phpQg&@G}IGV +U==X=1fz5lWWTNXLK9@z`qo-os4hYzXjxM!F8;zmAm3YtOTSnaS%*wED!^#_?0pS0n@2W4*_$WJZxyz +OFQkZJ>vGZx0;zeKg=vBoC>df~J`A&809nQ?_>1wJ#))Fc>LP1U!a6O@RT?~sK8qO2cWGHhbI_K98ak +tt7MRz3w?*Bqs)b=_C`D9~L9=UlpB<C8nnjcsavCS-d1xgwz6BiY^<DF(EM{yc-Kg_{b}y~!msZ84Re +g#HckRSQ`8@8eiSc{*A~D{;&l2OC`K!nyDM@K}Z3;Dg?tu<}#Q+0A$+DdhtA`Cr`YY)M6qUn9&F-;vE +cSvK#I>A;=-`9f|AhW+fex-^ssXL0kQjG!Py8#cY;6}wKG!mU^AE}7S5)z3BFW>g7fA+xwMfidV3z?^ +?>HAYPBqauvbp$%H5P$)=7&^`9f&x%!0%|hgRYuJoqY%vdzvO1xxkZj0vi_pIs&SV_=Yhv3hj?I(M9t +(Bk)PQ`N{(#S;>D-B-y;P3g`fp$`wf}7nlS9gAsHW6r7pwDV4Y^AlRGN535H|Z1iJ(<t7?CJAKt~B4& +o3XI%3e$Oj5{kgisA@n&0xV$AGH+KF7?EH&=?7_J4kCj9wpwSFmC#K-+6kFOWEQ&z3iRSYhGJ|ALR>L +?KOV5uM^v!wX?A%}<fKBHOyj0`YJGoTuv%qffgtdBW~$xFs2TQS+lC^P+Oz8so-T{3x!*p`jS24)Pu* +i<ZRJh{h|WD+wn##CPuUDLA$o#+Aq%F#n^>T;s*mF0s{ucnlbUrZP3t1NQ0McQJP7D!uIY0Ffp%1T#? +{8nEPPIYcTX*)xA6G1o`(2Yo{9Y)2e+fJnl7knM1ACBmtd2dM`zXlf#Q3tMi0m&{b4pv+e<JQgNgB38 +OE~V0?TCQbhB9}UEuZP@%E0;AiESvWZI6#@OxIE->8eO6M6gO^ql<)f&5K@K8U>22D=0DgY{4(FOoQ? +{zYJ=}Nx&lGtgb7dpiGKo!G!Zv-uQDYGhyp>&x^OR)Agx7<Y+~~dsN?{vTw2RYGo-as#XGHu35sMQM@ +PvvBkti)vWy#5enG74t^(TXLtmS<#;nB3wV*}~seGE7OvILm&*LP+_?HF)J@DZNb!o$O=>CV%+H?{O6 +kXD^NjjxSfo=#&!L#^$stcdboWke6PJA9Zj!puPJr$>~U@v_=(@tN3WAycWh`xUJD!hL2M4;~y&bsDc +wOI<HYeAHjhcliOAegpfSPJ&w2XIOd>m^rPA%@naH#y1q89A=aY(ZLWmo~TIo+hZ37QN9|S7P^753jY +oxrQwKNLxMywdwFxFyndrM)I1rr{%e9_S5%C)nX*An!7>Upf%O1-B+%C(H$>a$c6t%R9nwV_KdB=Zhj +LdHh#il@xt{D=Ymy#7cY$4obAtA4IO5FbEgq|E~OmZ9J6cCqi<GN46(HllABJIuGE8Z6U@R87a_(()U +Xz%@56b>$0}U_UM{iZVQL@rkyqg@71bp-9eho82eVEsM&~iPyud2mUtkTwUtzb~<E89!lXKYinoC+wR +3Q%XQ)fQO84o)9*6qf85xKf=os@;2HEVH6`fs(%6ZrLcCyy=?%Nto+v6;@{sclY`(FJ7iAuE`?e3rb- +Y<k;fSwMdGA=G=BMXq4A@G}^8vI7oty(WaA--D}&<Q|sSz$`|j>RxeZgkKw60z-d|y!4TrVEH3f$=Qe +IO&pAh9Qj>>MM0s4Kxm6&d!_7*%Ux(_ztz;JGJJuYdU+MD)2ra2RroHMOsmkZwJw4S&eR71sM}of{f$ +5D7OoXbpS=cEi+mrx$zQ4CCayno@+#1$R=`XQ@!~NSxEEr`P6JgAN>*F=@ji_x@5t@s-?V7CI*uaoid +yab;PP6vd_eaC<ti2$cpc<K|2wtBZQ)w(RMCHhqJ4ubhNRde<VbX5TUlU*uFjE{7UZp3;aa}j_iSmB2 +NLdy<pu0IX|~Q4Me=GEpy%2q$r~)<$Ovx-9P`ABBfQ!E<)#~g^EL(V`lD6Ogc^$vnHk}@&w#BcV~O!j +hItwL7y~&FQ1-5S0_`5$MF3((0Ihj&u^HqRa}eQp8<fXFgKX{OSMRI9J-$43gGJq7#XXWm`u+rkfo4d +?gSZP8Sp{fV`C9eIQ`H~msXv}Wa&^F?W@eSg>y|%5pC;Q$+kj0~PpqL<=x6ddISev$?J`toAhiS1RrM +3xAM|+r%nDz{BJ{v}{4sPwSc6`i_ZP4$maBY04%w&ghaY7bkQ!dwz!4V+1aaY4W;5Du(}L!&82FMF&^ +bXZ5~F#E$$+<1h$97C-?4=pYwIFn0R==Km~*n~mZ$9nAkSfp^U8|?DnCKoW;XCyUiBR>d8Hdly#{1;8 +{0gRp8~4wSqixp*BSV9gcM9J^_|i5PwGZ@>C}0zA#g$?1OwNF6YIqxRkf*==%sU}WEyU73VCF|g>Hs2 +nF-6Y>3y64K|2o4qZKZh&YR_^@<V?f`EW5^6|oNq9H|9liJeWw<<B6i8Ev92nJyGkT6hz55U%o)&pt$ +(ZcZ|jRNJFuN{f^<FL@i2u3Y8$SAdKF)@#+I#*VxCL9J!tBA8@dWELh;yL24653#88lR7%6JR7jlDS( +KSq4$$x3y^LiU25%A(x6k&GE9`aeknA4Iu`2V9B3r%K_lwf35%K0N%lDi?cRfr7xA%o!s0QSy_|K5K! +29F%peBN-8Wz{2`mU`ds{>AeH|84HCty7Z%n~t>I|e7BMxm|LARDCv92{2v4c=4XzZdJ*O}Yz;B)1O- +&j)^=4Zkm3xDt}l#xO7LIV}03ud|;T)SNfgX%C=aTh+6RqE!u<aY>eYt{reuyU%hT#kr@<8KB9m%q9S +)VP1YfW1N0xKj93UOtR<+Jz5g;$dv)E_^5%hq0-<@DX+P;MjF(6$hKz77`n~4WRntrmC}BNb{S>i@-r +8&K@-7%Wy&47QzDvLoA;GE#gzeA+s<=zVmLW`jk|8H^d8z<U7|%)t%AGb&sLEfS9>*Ry&Xr?07lrIDD +9Bu%!BI<0QHIED%)o-X)cfV^!x_<$Z$t22yIGD|2-mGt|xN-0G_C8f6j?Q*P`+`=4k13^|25UWBGyUa +fJmGf}5h+1V*ouCs**3$z(!f`ga!`tDaR4~9mAYH?`77|nsBu3ZUF-r5LtXVUpBqUIii7xf$QsKo^-n +D5nu7y1;nxIKwU?n?rMFxXZX*@fdDZQ_Y8wYW10sdkE4n4<0~(9^S_+m4~_pG6VGHldq1>)VU0_W_<X +DL9$%O@rYdt+;Ce&|Iu%85A1Za-?k=+8${K;+C~NatClhS+v6E0!02Sau*Vmj;u{SHMboQBsyae8aEb +VM*yjD7(H|=?#Cg!3;l24TitX&`2yD!$95mt3Dt=}u}}{{Ux4oAAjZg)Ax#>fBQJUmsm0hrIZlpY)=o +;UWxgCE9{C`fO6i7IO<;iku1AAZi;s_?54sfl!Rm>RP%rS@PNdB;vnr)3=^nD+46^P3lyn^8@z?-$w% +d-H7M6pHVFT~c{rNhSHeE=@|1$uoboH<$j*_gR01AO|pisbyxmxIbEi_LHy{&~7YN4<ea%iDHYN2v1^ +t=|T(n9}73*A+U-GmX3U<8ost&4hZ$lH9lM-NRnr3qrLS;ZdXLF(4LH%97uwO)Gaq83M|@oo1*-dSGq +5jyYMOR2k5PP5vb32%#dD<c4sy0INMox$~21L7s8zEV|WXWD)1FVJ3tZwsl>zE$s7W<&RybTaP}y6>) +yc;sSqhxFZj5>I=a_N~PC?qk?-r+rm4(5?j>G(fxbv{;G|j9iSvVmA&0koBbq$naTW>2dmjD@FyoaAZ +*wyKpo_Q!wMJw}G^w+_765LO39I>m!G22{X8cgn3-*X|yHxBA0GI4ec(*>~irQ>Qtz~=#|yDO|PsrH1 +*2TGRTX-<j|GhmrIc!eU0VF&@}72YUl36s4h?N^RK>}<maNx`T1SS%Tth-=MG=V%Xn@ejl7F<f2eM)z +9sJVXl{_+gb$<U!H7PQ!|G|d&wieJm^yNe6b=O|&0^f#Ah^kURp>+v;Tn6_#;Su1nC9?dlq05yJ<`C@ +lSNCvt2@$943=3Tb`g!8ugCH?hE=00IPai7!P3G7RxYLFdl%0im_6#dyJ=;dEFO5!yhy-cGyC(&FG~; +)3c=C*6c`3%ia&2Ps9D$G;X2fLm@i>Krk)4ReC-ryQ~DO`@V9KS&IG^+dG1s~)+6iz0KonB!LFJrl<J +;?`F#%NFh0EB=*ha4%7}w=5Ngi<0_6o2^uQb{$+0QYqxcOFqB^JHleKlpWj}pc-+(JAP>ID0P2uJRbT +$7A+ev*rzbcR0c~m}nnS)tUF{xT;YUd6t&T)IV13yl+o%9CFS@g-7A~#y(DvSL>Lpo^vroY&S8ZvGZL +v!q>8we%)75-|}e`v&)4`kJB$z7=3yTo30)PRhG0hzQGC8}QGm$qtu9aYuQP+AG~x}NSzXeln5g5G7{ +l^q3PGGnk)>^3Bp=f~Kbno&kq`E4hgajzppTRujWvxUAP1J)fASi9x5zV|>}W;n$7#D>o)NzJeIzvmc +TK0)z!nIoIPdOZYPg5<dEOpSEN48_=oxR(3zXrYNLTtc0CKnY6IA_|vizJVZi7(fFFc$~O-1WCcQ%m* +Of+_ON$9I$APbin}jl07~8!W$RBbL;dt!r_dZ#f-;YzkB?|#rnCDSB8vq0bqu2_>6;bd&q`FKHid8fy +n<tg=y;Exj<N`)xu5JdB|N52%4QcQBbuPzU4QaxZvvt1ciTbyU5;3eW^}3<m-jV!&ohkm&~fv7axV^) +qU7xh~tuRKlNGj@zCrUJdO33Q**$tbK}3*gSeK_ujV?azG6SmgBhgqi*2DDmde)0Qdm5vSTePeXC0+z +sy7gKFn|TPf&ol(wbl-i|1QVvW<3H%dzW?+b!{Ck;%t5!7jb~n;YyA4d@clDs?^9nLnpg1(Kk$em`3o +dD}GI(6FsP1^l%w!UuSVM4bNdc72b^oksMBryFdp>RLvRC?zC*=$bFxWT0FH8?)TLek9-c~j-djS;F0 +dl6Fh!)tk)=1<z}%I9Yz^`s)u~~m1eA*q`RVgYSMVhlB=yySZdUO5n#Gp{~YuHKT{-T{wk4V@s=vyWD +7+O;)&kK!SVEo$A%*Z$C;^9H(2_8)DXvmxl_F^^6W&!%pGW#!_qdhw2hUvS;8M#GsD4c*5Cg2w=bg-f +ahE)rWU?+1T*f)F|=A8cM5~SN2Vd`F*J^axMjj%LKrpoPEEONXn2DGauJu^HksAjZfG*~!o=xum^Q7o +g`PWg*rN^oI|82rXj=dy@>@cDQSg~BAcEW9&h0nZ+c!@v3_D!GomrUf&tE~_*N)=sC^Lu=V@pUl4c)Z +~PcB0yD9;6DBdCjdrCXNZlCc}&Ar{mKZ!*~nncU<E<=b){V0bKmk2*OZ(7#il0;JnxPAq01Y~Zt-mZn +a#?szN((JJEx!bUz9qw+Bd5Vby*iUd>AT7N-5u&qaw6&e|%fgV8fUnrD1uBG4dQ}_(FWMi_aGx)uHac +I)!jHad8)2zYe`AU{}anfcB2J?f<yIZY_sSSA9{&quKVgd7^<COO;J_k;3-|0o$^(z!jyQrgj<pzG5x +cz>Hze?WhqgrY{adlEHmE78kHgy*H@4ke7xY;KOJ@#Vi?LHr-gvp*Us^W;IDtgEbn12@nNtHgCLPIvs +<%&Mt;(lBfdY}OQi=@#m_FCQ0Gw7sx51^5znPEJLBO}7}XbOI!s;TA@K(wHCn0M;ls>(uf<dQIcEJzQ +4C}+fxVPQP3gE`EjiOMm|n<hKs;@ulA$!$qrq2Bz<mccDll#_LuBp;B_2Sdn~BjiuRIBmpm^9dSe3zZ +yfO2@M#KgE)rJz}V+6mJM=__SFimr#cD0NJd@=(mq<az(+m>ZO$9T0FQ7<|M#-bWmW_EhzMHpasjOdR +&A-x5|^Z;R5?ZW@)3PWEJ5a!7<a+_&K0_2bW5PFLq?NbZ{+gIBV>$fRWM>dx5zO&CBC)fwTwE+}BYg3 +EjazJgN1KQn;hS0E6sWZvP@~e@Fq6b?<1}3W;pFeHvghRNCX4K9d{q1Ygr4M(Bi&Q=Q#n8w=*V889@& +<S5iFT855*47nFg#Z;-x0!m#_Y5_#wtCw%8mx{zNx^vtvoRiN}9W(Y4`W`PeO*1>};Y|aGew)g00X)k +PESvr^UYOCuvW_Lf1-Z;j#z7XqD!Ez3ByD7MnWc%Uhfq{0zb+}pe&zxzaUrf<O-=$09dsb%`0mDmFg* +sT)!iyt{U!FU)OeQQj)1(@2YpU{jN24W)?Q}jTD;g5`7r2-^+sII>I$6US}Gv&W!z(fAt4W)e_otL5B +`#u=rKsi*^M(Zc91Nbr8cfUO2)|*zEW+RxJc@os9M(f+;V9<Rc8k(HW<0UXSgq!f}_*G1>Q$XD~lBVJ +uw8!%)4`N;wfWy=h3%i_teRF+6i=2F`m+Bt(TXUS?eW>lZ9x9LTE}UGC^b3j-`21TU$4zVM0txz!A|1 +0xJ(COl#{F7Slda>8MRsdjcKJ$%<DW$BIwGIJf$4VniEpXca+apQpR#%51Pkg#6|qEti{Ig}KP8PZNt +sidkIW&7d>IX^4x6rCsQgC5-o9A|9N0qbV3+pfiJhIs>c_q!jwEf~6-vidGfwvbZpCaBSeEv4PNNAh^ +~Qb+Wjq-270S2O9I~vPn-99~uTl4=9`nN33c!D*%F10H5*_UC25;>T8G9K+kd!60mBgsDbqVQMEvE#r +rZ6bOIac5#0U8GZhj3N2LqUt<5Jtf>ncvx{^HMd-5X(wa`@%n&2XvUWabnkGV)@1+|+VdFe8MRigmSP +6SZ*Q@gfwH2&t->1yyJAuVG$WOT@n9D~sHIFwyv9016V;CB5H++i<_y2wZeMs@0;z79l&`N`ip=;0js +5o~Db79`7*lAmLpur`kZx2XFuiM-lDPakhf5^=jm#Bp*OR3Z~9f$JX#RI+xMA1_y$N28lCT8vVfMm^- +m7`&{H@r;#SJIgZ9BNy2R`8i%`0rBHdN3+O7KF7_^MNAD&f^@wDCc%yLC`Po7nxu41y$R*cuRsAOJ%7 +hFA#DP#*Z`W_Hkg2?k~cAW!~Oa!{Cc}K3%}fhv#^ECi6z#|ig9g4Y`fn>YE(_!^jtOu4+Heo1ak{LS} +UlVyx5zAuJK&Uqm*CqUYF`#GSrSMP`&c99NQWD8$vELG+1?{Uc4}Av$<Y7OQqaF{p$S&>RCS><=nPTs ++^*eeGNZXe*8F{bj$`NKe%dmh2Icd#jbEICtn%#lPd_wo6*&NL2Volne^kdT{mXt{TAQkYyO&CbME+< +3iKFt*GT#%PqLpEa*6tJ66}{6m~tOIbpf=o$2Xg##!(++-C<c3awLJcU>Y3jkX&q!Z2bm@<KG%Cb2#R +x!*T0fi_~xNH~!IRea36``3L^SzhN%-H@-QUnfkhunYdf~b$?^$e*!-p8ud4>Bo{t{z=D}V4fz7Tqy> +tL`WsWgof=?U`687W>uvm+o@X|B1@q)7Qv;y~r?jOqny>M%KEk?CU*jbo(T4mZU*ijx`5FVI0-<f0c* +>egW~jWNt#BnXsJVTkK1k>ZY}qs(Oes9gz^6MvR{%?@;heUvuspc5fGunnKjKW`DIJ;Nn%JLQcm;?ao +0f>h`?j=2E94Ll_0*G`7W7`;^Ds2{R5!K=mvQhE3^LS>(7AgYd=`1RJJDF>ub_qQG4K<mI`bZ@He}>w +tk^vwWlI%^485h>jqnW+Qtj{yc&<p8OD=Q)1w#4uKHft9PQM-YJ|PQFSskg->`f33_u=PYg$0!*FW1s +Umws7!QLxG&Wy{O*3gb(pWoG-(wrO5^K<fvq6NfI8YOy^ZN<|KTP_DL!7gT<VcwvN}D2K)F8S;tn#gu +S&s>w``S|}+8+p`uk0}gXOpW`>W-OEWakZ0CWJiiIdJR3^gQO&lp%0!!5>BZAASX|tjD6XV&m`~T~q~ +Pg=*=QKAU6VLXq92COCEGqsGW^x>8M{cEWZ5HfEnhH5UM}z{zKwjQ)&P36Lu^NPbB%WC9<p*Z`p%_5r +KD7KQ=Yns^^kRG)Q|iJsalor+!oh@ZuoSa^<mVNDl88R%RS_~Y5HNQA}~R;?-9Ph>mgS|ARJHe1Q$}z +Kr#-mbm*Q@gLF!(S*sIihr?X(@WO|MG<4$2hdE>$^=Ai(2+g?M&D{!Z%T||}x&4O4Qnr$VYkp$4RSa3 +vp=avN==7UB6yG~lUPZ^fe`K}f?3Gsa07Fb6cYgrPk<Sq42T67WR%`^b$c=YwY-R1mEl}Bp8D#zkI4; +T5Bp^BRz9tEmrJ(0DG|h`AU9{H8Y2i;&cPuS3gEcDTkPGkA%pbm=$gKF9(IVcyd6`t(Z-0ktNd+Werg +DKx(7uvd3tzmWyr{q!>WsHKN4UeGD!;jgpHu~g&(Xn791`NkBho4>m`8Y7)K9cnVG?;lD@k}i$q0Gys +mzy;o*+`S)gEpzNlrX~NZM!NvTzM#2T3@cl)ax=Cn0yxPgW<!17@6b635R6mqIR1D$kyS!g^))T$wYy +HL%!RB}e$5>{yc0bRmOppr_dHSF5c}jU!BJrpyJ)47x8#TX}X$2Je!&9ZR!kBe0VK-`dK`oI}fjphgX +Jc7`yUf?k85lPPFU0u;bZ8rU@%ekNE=mP4~#a+*3XRn6_!O}H&4G`2{fgKPaEeA=t6+@tF-F3nKgA1q +Hb4=_z!3vQ1>$wsaPSM38Gd`6Q!Lr7_2&5Efhe@L$F!^1)msTSs^etQ=uo?xhx%MQcB$z03tA+Ruux3 +rqd76XlAKc$P){Z;n%jd{Vv20X}wr^6tr&6J@CK!4?js?+MH<|dwoQ!lTzkfH69!52`60CnWF0jO#fp +VQQ+X7De!nX=@x9o1^<($o}Xw!OAbNTmtSLO-e63B5b-psw^Z+6?ezP$4|%{cr`aosui3X>E64BaKSR +4g*wPjublkumhlxT%eQD7KL!{@QxjsEgf4@%VLjEJHP=}t-^_M^Y#f)ctiFb-2O~Q)5{?XE}D@Y6S)1 +abB84i20DZ+Lf%7u!o$4EPZrzT1+%G3amd_2`AyKI*=4OOZ%Ps4#;xf)Cdgdt%Iw)?V%#JoLf4cPb}8 +cryPozNR^UxvM7W){Om_AZ*7ltsC@R6|>+>^X?#RI-nIU0b;-Z2e?rw?Iz37Vra~T>>)+4ByIeS4maR +Hh7^z_F>?JZwr>##?-r@|(%&HAOK6N{8K;EBw7@gFk<b*cdx<Jo6mi@)Fix{$?>tCuqIn109zJs;agI +j3I?kJ!T-r{m=?Vo8ROC5Ft9>d&BO7LkcsFt^ic)VainH>7<Vm#m>&vMRwPbLz#$cn1GJ{;bvYk_kB_ +j+}xY7vN*IoYq#JdQFCM9db^Z1{|QQGlB%p(N1A#@#z{8sDFZiCL;q)f-%i!n+H;nfwGNCdcDkOV9+T +b(qcbDMVQvlpHgRUgBkzhuB7DrtP7poVt&+9;y>g9-@}jfy-e(`5xSX(6Pw@adlpsoA%LY`6(b<7|In +q0>woJSE3Wq=r=Hou+NV)jJ(=v#!G1Ja<aqd0PRbDw(+LrMUONIQr*VhNi_BuTfp61}2s^D)LJpWs%X +Bnzx{}870XI=S`hgK7cahn^>zbFF{Om&F^pkQGIsb05?4frl9z3Ozun;Vawtw|6UAS{q%eqOWcdTnDJ +;Sp1-J}qAzpJaSvco!hhAamree~45hu&^CfoumT?KICU_>$X{Dk?E2f{NQP&O@uo692W@vVSyrJb4a7 +V<_w^0J|}p6eA}6T+jdbC$3I9B+4rbEa(#!ILY5@3+*T`U|T}M#O8~rJT+vCrCVoH_x;!cP$InY1@WS +};ikdAh##4FOW}#uG%;!rV+LVBZVz{}rZB#&@OoYR*c6T#`PB2j1;iN|+-C>}1+0z0)0~*cmwJNEm-G +WQeuqE5&O^$kp;ilHHY~8n4;;ww;FCCk?WU(r=@f21x^cc3N)fAu)cUAHWiq5H6MW2IGTIzhL%`Nrb) +#HNPsWBELDx`o8{H^9-SDQ{TVGQB3D=TMhc~f@xfT<C=Fu@bY>FI4NW5tBgRMsSgA&SxjrSdS4qjM8v +U{q&jk;V+!L<BfE6tGx65uAiPU77rrs?h(P2$})Mynq@^E04wH^O`iRWiK=m9n2`I4MTWS`k}+sieyE +%ccg-Y->Q5NxJuZ7ph!dxq5g<IxdD+4}@6(^#9yp&8MYQ9t6&pqc9YJ{Y~?<(SVtyRM|PagK4cWQ&+H +Hg(c}C&9&gdf?C0f&bYZ!bq?Eywmxn<BcDeUlx*k=se)b!Wv4bRGdC$eZmTdigKm-HA6Ttq1k32AtQh +*rrSCDtMOEc*1G9dSH(56u)oi6jFdqnr#i69*WMGC*_G@+G=R$py3<QhfHJWOfIAr1;^Wo`N+UII+9C +wN|fr7g8KvG@ykhfN7iYll=m8Zst6Q$Y<arDXsD2X|t*A&ep6lb`SfE#x%a?2^4RUpF@s{QFFUNoT+# +1qc>m-M4*R$mB3S<$I6qU@7*G~x2bJ7Y!J&MQUP5gqKgBp9iD=bsT}ZsJ+-ZGviGWQ?G?eH8PGcfM6n +z5Gr>Q2pnMq@WsbSR8z+xP@i-$#iZ$xD+}4WqKU|jK&l(8$_0xnz$!mpv>a%$bE7e3>!X6d<cXV82A= +Ls!}F?hhF)#tr&zKcYsl=EiO4i{tb7Sovcw@q}B+Wc<Xi0F}FheHe7K*`0btO(~<&gE2Sl@q2}H#<|| +z3bF_=Iuw%iz4+dYt1?+vN@cB#+J_9e(XPiE}=(C?b&(h~!`s_rf#N`LzG4UjZe*s~Tz=b63WKvN7=7 +g#?9ST7Tt`-Jfg%8}`z`p%E-X1w%AK~BT4qPSeBeV{^^m&Xv@v=_oscv}I+fQ>X&*AY+V~y#8bm&=#E +1@~K$F|^^!rQv*#rW#Y9CzR-x4&s`%mJnphpZ`6T=#|2x&19goe=M5!^B)C1u)v)ruiL<@igwyEWo1{ +1U}!0BSZ{hbD>Q?AJg8hF%*a=DG=*U$E}m2BFX2gL}KFS6}IsOg<(Di0$gA}q^9pf@Yn&oi7tqr=Gbq +O--g(K!FMzL##tlwB<7&OSO7lj#f#Sog)-<8=0xXUML+~e^`i&}pTWr3N{EqZ`hB4c?!fE8a<)^0kCh +<s^VlpVc6|cx?91@>>v*#%UP^(Okz(w>0wacFpR!uR<4Zu2$9=p*jNi}aiSf-`;5eIT5=!>iAr{NK^? +qTT>4F{&)@tlmY@+_w*uN*g^J9-w#A#xDzA&j?+-{sFj0Y*NX9OC>eu%(vo0fXBmij!V;*ql0oiueF* +HS@0?&Vra>Bo<_mU;9;;93gl#}=+-CjD5=wM@c~=aDU-y*LzB1Sy9_X)n|LqpQ#@Db|;!H+voT#7#!r +JUe1U9B%FjJSv9A!xr;aV1VywuC83*BQR#gqxn(FO^8Y3YMGK)YqTSH2=BY42NR`3eY87pEP$aVJ#NH +JScJt@<k$xg9Hb0bgmemYFr$<^#EeZ7()4)w5G@I$cFGYX67=~1h052uUS2aSJ%fdEEf>rvafQrX&t~ +IUOpFwt@1<1Phk<~~Jw6WFvm><yCc!lL(!>Y1KeXIMcHXW}?S_g9l{TQ{5I(nd#?G4Yyc`hvL#RJcrR +6ECH%a4K@cLdP)1S;pSY$}sKt-Z{`#Q%+rRRolifj$E58>$^EY>B{7uX|MMRo6s44wgM*KV!UZUXPDN +}QtRq<uJ&m9%<^rfCpbBQ?<zn~y%$qho^l@>H3@+OcV5MRw+nFj5fn@Z+B@JUYrBv2!M5p-wu)KE>lp +qcn7pU*b)Nu}%buZ{VKz8*aF^yopQE@%7wehiUu|xW_-mRr~n8`~zbA0lom4Ht<VG)5y^z?L)@l|3x1 +Qc#74NtSs~*d9zZpQn%pFzeYmdQZEOPlffWSSnX3XMX6Au)gCk_7|0O~ApVRb7vX5*TAs#j{tx7`xa= +N|{TY|V#)I_uf#B7+lI~vLVQ=5YYJx#-Z@z%8Q`>F{{-GAHZ6WvL7BA)b8Y!?xqpNi+-Q~EFp&`SJvP +tvn6C;4}NlY#qmI6CRJ6+v}BZ)hFRNdE~WDkh#r68EY>r#syDby#hQ+@`UA|9LC{8tpP{4|jc2S&)z( +RtP4r8;a)O}%&sEBXT=4~D@Qh^iz+)2-JF<MbYY=2dFr)f<~Mg3altG6Uz&G^9&`NH%gU4-HcmZ}|mk +8aOSyMI9>;>N`xbcQxwcFD-B_ThW802yD&3aU=i*6+_D*{MHaX#fIGK1t7hntSAaFJUX`dsoIA_qYt0 +T9Vr`D%-n&p;ir|W^fVwXZ+aT0%99$D9?ee)oZNoZR&yY<aok{+c#;`>Z?wgFkxxQTU6i{7qfON*+Gr +WW5tBtKk_WY$XlVSlRGmX2nNcD2YC4w&_YL6@IU279wJB(ODnjtr%akBbuW)(6nydgW4HrqzJcbCm<c +s2kl5MG`AQGlEdzo@57(hgYZ54X;P?82TeS!|wI&?Ue+nN>>@otrlUzu{CCa2n%B4r^Je9t8Zt(HDIz +?Jkn>%|2OpK1yRRN;IfO~%`85rKFJ2NZO|9yEq%74|sz!WWQWyxD)flD)?O??NSYkCD&u=hxIr!Q&MD +SslH62q)@7DliKVQ9XmQ;vS1opiI{$C4as)E8R(Ue1&D=w_3xS1M2n<)P0yoK7@Lh{LCpj7LIF@5W&c +!UnRPit*PN})IQC^H8L$lnd~ppaLbW9$=oZke=HuNf=#$jeuhp=XSUrVQ^vnc5GN$?b94;eLEL59Ew+ +KjXvc0VQ1?AYDNCzIizA_aRW%(#fSSOW?R%9Q#2_tLnXQdztwk#B#YDSk#{K=c(Wq6E*=o}p#9ya3=x +ZeN_FqXd@eoQQhM%BPZIh(Gh|?X7tC6XiDbrB_+K6pH3TV1$8?aGl?8jfB4vP8$sP2dGoyG+WUwxyxs +|nqt(?{d4(di?&gbCaScH6xU<^cSS_dA$6`18ZxUikYpq>b4(udvANO&^(TXPPb;1;-1xN5hxM6|7fY +R2UDa+va**9`fer&@vZ!Yf<8A6b|yWz{DqZU&7mQ(&(ni8|qrfh&uvOYMmTeQ+wI2NxFyN$+{ZlMi1G +l9Zlltl~OYXD=c^>p3m`+b)Vyuc0C@%9qg)^5<*oQExR0FH(GX{w&W3@vwj0Hy`i0(xa{;Z`X?k$KQG +|xWQLwz_CPcK1s5Z0Y$tD%Rt+c4C(Biqfw0KmSh9*0#<|Gt)ZzgHd%6l%+oY04R>(oOHqJ$E)RP2Ly7 +MfQN^s@ALTRz7vd}$xa{4}6NF-s{jYn;yku`vE$D3s5S@P~{xWjEAKkT5#HVpJKpE3Sma;+7_MVc)XO +Eu7}j4+vGy_U3m_8tRuj$VrT34>R=;1z8Ep&Uy>Jf4KWivhe;GqZoVDVIb?Vf^qJdqUe7M)$LiU(ila +I`B@K+vQbk;c4!G`Q|I`A8l8Rayz{j;fni5+l+VM?V}xd`)E7=8h4<RI}k2Bs@&rCpr??}U`20;8!Gh +;a$zd5AJcAO)ao<ppB7cDVrT?YMsHKCyYf0!F7Q((Nt<(#WUF>Y5-o3`%fEP&>W7ChqC~K6${}r|p!Y +`T%H3LE&i_}gTAh3ORjc#@?9p4zo$QHtRq|p`bf>|am~3aH+F>~reOO#_DK4<%?VT>STYVRoy(0W#zt +Kfr#aqs5=#_MQkt)PpepQ{1FfgF53xXZ)q8C`9y1XTqUcO|H2>bP;0(5nzq;{Aez=H=3ATVkaMOL8#c +>R;thKBZJw4$G3(6ow|@`g$e{aKirAYYNV$L|xj-(2Y>H>cCBtr}?>y(8+3K*#fX4VO~vAqL2YS25HC +w;1@DexsMD^mk7r^!8co@w&*H`xAF6ECB^0IBy%?5GcH+QWWImuOM|celp@LCYo|Q=^|CLW^G+WrFT= +27bz5e(siYtgs=C!FuiOUfBxhIz0beHeh$}h>mv0f**v`}zJwLx`n%6v*cM!E1dU)K{vb)b2BzXH$ZN +*D(Y0&pB5seD?3|#j>V7hM36qB?x9WSbu3dC#YQ!L<4>TbQ8iY)|#cS$-qujtx^czX&R@~*2<K)1t^m +^AQIzRswzg^nTa*S>`fbI$!kcXt*s_%PVw(?ceR$gRg0xECulH9PqLT1#i*z#L_?0NKm4Ubs}dq1SDa +2*YeT?lKrav^NL4)z~OFtRB0&n<*i-+IMDn8i*0tRE;*II?84;BQ#?3WX92U(erq**#ixU!9-6hvg@$ +n^<z>IaO`0w+s&94n~cXDpjyjg?Y>{lbPlP^d$Oq;ufn(D3BdFrTHoUI*HFMy&7NHr8DuBR?0Y@#@nU +N9YaibLfZH7PaOJPKnWi_5BXiYcA|}Ixf%7ZWp{yWl*8T<E6mOzOYmj%&#^}vzGx29ukc2*cB4I23SD +gABo*afVXH5u2o~{f7B}`{Jv73g-N+7t$}QL3EiJnnY(nt@%LQ<&#a~b(Z@WueSHgmRYH7ZJ__zLDX5 +?+_N*`yKkdPj&SckKnvaR&VL>P}HDG!wXG!e%BRq9IrH4(<ET$N>|!9*Bc3Y0~qPb9*)@u=KT`m;oM2 +ZpDY?lbD)AcnI`U&3%2gmD{9-L%fnswZotZR<c2fCetdK;7MIsQ*l@ew?R-dOQNb4Y+4gd`v%<boj<@ +2N?Ye^Eb0CA^rwn=z@hag>+j-K;?FZ<qKf{yGVDrcI7=-|H?Z6npT0!1j1MJ++o6%GKKv5w2G1}Cn?G +Dki~JTSg6UdO)z>vj-?uC_Rpvg`=ObR_8O@aMKF~AhK9kd*gV7u8JbXjtw#A}aFbi<FQG_yWa(B9NZQ +FW5@$Xt#i-eI9^Hl8Rf>S*{1W9-4wYWt`6lUw1(MHqAynVjq}Qfb6IaDAm#eLATgW4&$zRH=EK%J5#4 +9-YbR67H)+|kc*`R6BOaZTkbPoS<Cbu(Gf$lR4)iju<*d3{@M$maIJEn8{Bd!Ya(=v^m6Vx<Z+y#xY+ +Oi{6by`{t6;J>a*K&rxnO;l!Leo$_pVBmxF8mi@GPm8PGC0DanOsYZVQA0s=7s4(YK3xsnetbf(5X+( +P(i0wL91%8ohid>ekv9>ExL=pfVI5_oi=9ByM8Uf3PaO^nSxpFQ?l?D0%!&_0@`pQ26OoMCA4tkUAIA +lI)roB7U)5K6|Ex+Rk&keI$s$$!<TZ0LoNWGMP9s3Yh>1rRA`>oI5lmwrAii&bPy9HK+-BpMa+YC+et +pH&B!3dFoQLgO|L;?>((GF2uIa0=6YG%8IQMQn$Fv^PwBswa(K>UJf74#ZSEA@AF;qBvI|*WDrSHmVC +KfP`2~4`NfL(TRl~UJ>~;qm`$-1<9ke*`R4HCAy76}0#J-?zyiJaWKQ#u;oITty-$fb>^thw_Jb$g8- +8AC$AcBrd2?SNUd(h-8Ca7A36qDx8Hm2%{nX$_@VE;h77qY&@rq7H;`pj4)^m*k{E8d^v@f1cpC*ls5 ++vAa({hC(N#xHP@zoKT3DoGoEoyUVpi7NC16e=aC4-J#F|H6qt7<TJ3DsX4I{+&F<s9(*6I|}0ZIAt` +q_sFtO9Iw2Bzgh~DWmX`<rw?}S#tYq)^&V`unwyXKgkhTyS97N#zCP`QC%*G&m|p#zn?uX(w>kT4efB +{i?eLv|S+NGr3l_O8YaA%2;cjbYpG2=_89Xf&V=2_xQJmd``>pz%;I$2)hWGNbxW0sH!goqiilCb}%> +aTH;7{2+LeK|Bi$t=^eP}nlu5D8#ktDAh|229EV~_pwxFT2J(lNb#t0v3<(cBWJh5sk9g};U^p~e<E5 +TRBzz-awvF&;{8$<0Ac<QdS)QM<*<nW_&VC)5u6O>3pbZhI-3ZH+7CL25#kOx?>n6E{wQ(bf1n-5xXH +Q4=+1>zvCkmfD-RFA6V}+Wm_$mr7MCyRJONde=eC^!oCZF&5W67{LQhYm-OrlWNbl){aQE@u>5-b`3` +-pDxv&YICYqB_rxQg@U)WRt-AOx=7z*?c%J!2dVgTx=o-*IjzF@L8p~*q%rtICuezcQ?=S8JFQ~3sW9 +>~WDeoavNrK$Rs5VPKA$W(fL>%`wo2w6NVpVq?nlEU_5t-z=~t#e-9XYKS_aVeYFF+!6qB^7Uv}pBt$ +6vxE%0|8{7r*Dt4JKe^CheLsr>9!rbnH<=)a}p!Uy%3w!jBnb}~t|pfOqh1c;egN9m8udFdfFdw9Ezp +94~=0DlRx6qmgCm8JLt!ou}Yr{;IP5<bjyg%&<&0k@ShDF8UHlmUuB)}#Ej<Oll`ExdhyqJ^LD!xqvp +A9ZR+qtf7mE>$_LQD+~nrUs(?L^-P)MAzVnS=D(h9b3}$tL*kT`0>rvc;v|3T-}eCu!+^Z<`;0Kk~gI +{_U*~%)3tO~$=qY*)3kt<Y{Z}Pcte%Y9=e*mxsNKk(sZ(SA1bE!V@l+CtQr%$TNC(l>6{Y|>X6qL)ec +$-B<MU2vaJ`y8;%f=fZc#?0|;q6T@aepZf_R~q00>X?B@0TXnE4?kPGsDJ>xC%{BPUT9!Ypr-Lel)l4 +R1FfxwN`o3SF@iM@QG{C~xPKYw)YCHh-Q-MW=AApDLTd<ol)M}d`RHAjGIHR%XYt+EI`pQPOk-I6MIi +rq6tZ#746(wZH>+#QD2rAG7D(jhrmZY*fZZ)&Z+)U^ImRco~>Y##_WaV>j{cyp=M$Zzl)-GKkZhq~~y +4+)dVEl{WC1*p~XE=c^hFI6?BQn#fp23`2NF!rZ^P8f}o>&3>d$-)FV`t%A+`AqwH0pQ%D)RS^PY50) +BLd@O)rwZlIf%1>w5Pg|m#Mo#RIN5o2R#ZqyueK_tbf*=Va8}eF=F3Zwx%g{K@du6hnWcCgAPpI{keQ +)Ygqabhw>d`)N*?G62k|aQ$^{t^XH?AaWc0zywY*4Ap+Y?zQezJnct-Psqk>^pxD>~=c6UN4l@dR;hq +=Imx;IRed*lJSsbk!fEym583dMK|7g&S4J%^nmHnoatnGS&}E>MYE0L~tD1h=(g<MAwm(dz|L?4C*2O +f!%2$GtS-XESy0XnTZfc^o$eOhIQ4((%SqI@P$AP1JkL$oqjWxB#xgHaGTs@yZcKSdFcwp3Qm%@pl{n +lzZe}y7_J99`&m9_i3@P*@@D*7F=Z0YGBnOXB~x-0%%Lb(y0E^GaG#yN=M)!Oa{2e@lYm7`yX9|NJ2c +e78+KHjTEMM{YHRkeLq>}qo4y(@-L#LJfNj0{|;oqn)^*_<Va!E6)Z2MtsT%@wWyEvqmb1Uw|}_(eGn +DE*LdTpYzfkl1ssliZ7A5m-dsJ>^wIVr_S+!PY1JBzSwkPCHGRB2<MpP-OH3;(Tur6<6wHON$&6Yqa} +%3?nIzdpCCQfLuuaGkzX?SNu+D6hF!Xnza#2))L`gbhGJjCjZ!HHT!+i4Jc&~hH7p@@Bm){!G3MxS)b +2g}vu~ipUl^$FtfBQWcB>o&<6;9~K_v$OLcpr40{)2VG1hQ^#Ldvsy=>l5~$bPU&8d?1(?MfP_@-X0X +W^W(Su8(l=uS<=?V-Hp!56W%iuDJfI8Qo(qzmY+1MnMaQ86~)vUV{VWmo)b9b4nV!HOk^0wX`Gj_Kdd +p_8XH+3-tHA#$HxPu2#n$=b*nJrd=w577>e!e!1KM1OD)4R=wRQuz0xhs8RU@BDn(@h2hICgwSqJTZK +Z%*DBMWxF$<MIjc?Fxp3uuZ#UDc=&FWo?PUKG^u9N%?3%Meb``83IXJG4v0uCH4KJ}PFR-q1`A2+D%2 +(c9hrcUp*6x}Bs5y9d9o|}}^4}G=7R*)oR6AcVchmL3d7EU*AEl)Q7QD7@>mNa!U8UVySN=zqEMfGIw +Kz>2z-sHaN9Y&V*+T1N8g72jjCByK@^Xv3!cwxF6;f!^BJSm{SYaMlGW8D`%esS=%FNPzmQ~ALt7~d& +)*Ll6YG;HPU!t41tbZag<BT<sk`FnI{5ZeC2i@=Ro5;Ku>1c+pdwvESnWVQD*TP}k$&IWWmQR@4>?50 +4dz^b1e`X%9KxUYRsR_@?30{x*DJOoy*+=Tu3MsKW7ck6Vl>U@dPB>;1KQ@UM*oJG*Kd%-%<$4@f0RM +!EV$9rN0d3CIt`-E=1)*OHf_Fpmlko0=;FCN&o`t_-@HguO7~W|+Dh#cah8-0~K-*er6x&Q<lp;T#L> +^o+3QM63`0KDyBSQTu3H77~Beo$7I&MO0>sTC>@R|pIbK$Q5{-(lT4*Xf*&x~y-f4oO3f1(H81l|PRz +3}dZcOSg_;N1`Jet5^>9f$WYyoZDTm%TRusH$lH$A=viy_i;R<xO!ZQc+w$P%Z*0B!;4(sS(OWAq0eb +T}lPLkm41W_ifSC(zM;m7PU<UHJ7r~Y%$xk^z{&xl%`hb{GZQr&bb^A%=-3zzu({g`yP1i%$fCho_S{ +GnVB;)o|yF!9#tL}b#6!yJ%zwVun;aZJWkoaYZ)*!+EwZ`7s9a?M~EGI*iu{1>eAVv)mj+@)RaNfOJ| +>~rhLC&ihM78Mx0)~l<C#W<X5#!0#PPaOSnuBc$uJ|0D@rziw1jiJiKs-hvP@)-WlfJD~6<jn-->~tb +U}BTnY;fA(t7#QJ|VK`_aR31}K~6V-}%y+H1*phF}xH>jY&4`v?vZe7ls(rXBIR9ht4jY(-{EGFy`AP +o_Vaeq{QQ=}V?BnVw{N)-D^BN7eM}xs1x5pzAV2*$nm|tPN$s@3qUp=vJ%jT$dKwuU875b1kEEcuxCZ +y4FpGw;$${72TDyOEA*H_snST%J~AffJJVOa_qk!t~%Jy@IjcR8v+c5)9p>Zo9&RJN(S$Al#_mstJxH +1WHrU?Rdmu8@GPmpRFSdkU)tO&-!F}n$R)6RS83#Bm+g|vR;}5zabG~qmy5W4oVpojj9*f635^ryzpQ +>I?-&q5qgqnB75khi;T4!1ehun0Z;JOv6FGp-;tHz3P1v8}`xxE{#>ZVH$WNx2;jtcx$WQU^$M4~;_b +LVN7X5ww(6)SSy8o1;3a1FSXmVSJA7{Lxe!fDg>5$N-2y2T-z~NM|Ixpg?&0=Z0z4&umS6&QiT^j$zh +)loI_^J_^ZVB=T&Q&=dbJ5LC!y{5i&7v}R9dHSYQEa#J$z8S%@(_&~5qF(M^D(JDz8Jf}Q}$tc;O5Ug +=Siq1@Z|3z^|k1q7P@X?yW%#Ch-Y*q;oGOxp&)gLIOfH!U3K@R^AlY5Wb>vD_D=gbqUv<uVRXJFo{e$ +;6XxOc`!ROnevBWUuKAAsIdvsqv@d^<s_sAi(C!~Pn)jdbhEB}zsmQcYUU^zaCW(=${8C+hO)qh;JY> +Miz49aHPRH-0GB|(6iXo6`rXkaXkg4q8{3-Bf(^fxk?GiqmT63q(;|_ZzR>p9n4ff9$&*D><kdVJK-Y ++vDy(BvB@|X&oyFr;K9cw75$duY$3w+?t%$ps*y3h4<{OVzExej+@OxVRnNmKPjQJ!*DOXpMiJ_h5Yn +kww0Tk)J_*pa#INe^?r8ynKf=4%Oi&wk#qUpjXNmJbcvImgXX64R<=!o|=D0rn=ms)8FlV*;FgLU?&3 +bVAp}MB)W$byz|6d`CU_(jK7R6kA1uIjnn(Bxn8Bzzf=~ff24-18;nX=&N&U;H1*Jw+7;BJCBkH=Rzl +(vu#Y~@iVkGC~yJladXGH(pB+#sTzPa$xnFER6U-KCpU^ohr87oV}|2Kp`N9`biImrJ7YxN9ps#IG3@ +ubgAB;`1@d9#Gj32O>?X{s!+y6-+3N$$9eaH%+axGYExzK)LtezAfDzJuk+P^V<bwK^m>4?2Z1+q|tn +`+4Gw&F_n4Ad8uE&%sQIM>xDdnO2Ipx7pp4uH-YCY+?@vx-0_Kk<WSj}&_2z#izmc~>eB`w_=RX0I7# +Rr%N)LLfOFN8DRQwc#~DQIVuf_61hV1^X5WGV2kk%D%R0uljCDHqHQpC_xZ2eY@a?Az|Tvg{{2uV5cF +wYE1)JtGn_MWS;00Be5W4=8~Iv|~0l$3E*s9tO?kZD|)1mC1{BX4PB|IlibKW}RLLW(6>_>aeMj7xCN +G$EGChAj?S}SOD`>x*(P5zDj#G{gfNo^jA!5wp4uBY^BHrWcF1q!kBJWs@M!r6gImm$JxAHIm%{`a)` +~|%04#RDP?SiD6g{_u54NW3@viHMR}5)qLnpl4pkmvbC^=fW`a`8<|t(jn`0C^o8y(KY~G_-*-TR=us +KB;&1RMo&t|R?!=_Ccz~)S)51X@<ZW;<(pkXWR;kpIOj!H|m;@lXe5nFM7t#bJRSh1L?oMkKaVkin*S +HSuuTUW#SAzRnNx|gjRV11jd&%pZf1Fo|;o_fG_lEx~w;usEP8C$WpQYmID&Tdfddq6`OD^*GsdtlV9 +q_P!L8cGsdzku})wxX3$ENsQ<t<s0B3aq!W^?RnDt$a>LOSV=q{cJtQ^cTZ=k?ChEAH$}w6_bq0mu$r +%lJX&2@lBSpw^&0N+sBnR*aIqv@*-PX!n&TVtzccjR(v<El(N+f>wLBbz&eAiU17~)D=wZ@QrQ{=YZ6 +;~!+Hl>LtwSAH5}GHY_-688(X7cZO_)Bu(s4u9)>q>_DF#B_aazvB(qY*)-kZ2V(WNVkFoV0SPvHQsQ +m6)ACuX}I=#cZ_>>o)1Z86pANA@P<`u5FJgU0*hIv^umxZcJP?*;g&1E{fOz$1mC##uyh)Eh;YG-6B! +udqb!G2+0(OSHLYD)fLUPCpP+f|pAVP3;Dmo}<Pt1zzw&Ba%BX&2@-N^?2yU>9?k*BH&^r0Nn7<~3e( +`A~HU3G>R;T*_3J@Gvi%=JKNIVhQt_sky9HU82LhW@|2sRF|P)UWJ;=Om>+*EUZtFMt!<NrQS83PSRG +Q>2Z$s!+62HF-}+C>1KM~GobP(Vh|||<WAcBB5(HE<7Qg#8Ib>@v)r-U?7DA!v@dC4293+|n67c1T*D +eyuzD4m=R)_&Z%DbSTI9RX&)ZVOm!MG{u{Yo2E|kWP)u?!T)bCu3=WmV*@WkQw+I7(3PWS$9_U?pK=l +-c~_D+pY+HNXW{QF0`+gp=k^ZuzGc7GaGICgqAK575ZNgCO%Wo^q2A9s|w?Ygj&XJlF}awl3TnbSldM +f&2xPAq)bHl#Z-@k1UTkn0|#{|=?Ujda1vg@*Z`Yv7+#GUNPo#{E<}SgM>mAIV$3X8F>1Nyd84Y~pOb +&|SLWxH3P}c5I38ew#m1<?j)_cS-L*-1{|9-}@CrJ^3PR{c^siJV+Hy#`ro0N_#Wx`!YG-+Z4h3zIfZ +$$MtRdDs->2?aNQw_T`*|p0l)cqv7@w+*49g{0#qA@$WwVRrvP+|8C%4+=ZgtHIIJUujXxEm$YqP{;O +Sj?W?Qs9qj9uwC`YX0GYn+E42w9j$yIiouu4E>e<*gan1#n4%=d{<PFY!juY*jRppnx%1?NE_-*DBL) +@M3o{tPDu&+Y6)(F>9pE2cgMM||$JI`AJ3Qfh+pu3+B`^r=_nQV(%lx*fpUpDilFPq=y-?j9+@S!vGT +lAr+=#|DoM3t<;1uvl-*tEDr-B=cmZDrf*ZYwKABI>p>U*oniIAdGc8O+lAj14O{EikJa%f>#ZZY%>s +iEE1u9NlN&ag~e56{oSWY<r!JWkZK*8_V|d#xex2*v|X4VD+qc#btM^c#1cc!HzD!;t`jZdxewig}>c +qzumFdQ!RXFL3PPCU_yhRlB}8(FYp~W6?gGIuzi=*ePG+QePHYr!8^-9m#7HV((PP3T}4Z`C8x_QsPN +?!l{zWnz2XO7q!MczUHID+TXf-XS+-V%zs)cef9$Ih#M{dDAXr$I{e~#bkw(jE8CE>+s}tZ~@wm%wuJ +|X}7kPyDwclKLzgus6E5|N(EpDMJZVrVB59ScP)DTZ1ge<^L6AlrN5NW2O7?|4rvhW;JQ6HFgQ&BgVG +fhREV2&{r-Nbv#ARE|X2BWkXl`p}xWoLqtay_q5FDiyGj<t1gmZD0QvKT6>ekTF;&_okkt{%dHfW{EB +uoL7hA5~VcDQzonEgG$FO2bmNZ5VG#BjJGn`3@awDt^X`n1@Yii!Z6$57f#~k;vQ2K(M;K>@iV`=lB- +6#@pVw#>>g&>iAXKz4+#Fk^nWJKQ?#Q$O3L*G8O%fah`N-w>ZvwK#ub*O1m|LD)#GJ#@bP5L3kHn3(c +!oJtO?FsO{ub>&eI#WZF8UT0IuEv>2B&C6pGU_9rOT0Bt*%t^HoEf4s!rV$qQ5g~jSEPDeFIHKK}J#V +lm!<C1EM9<FW->!arF+8Bn=ww5accOJfIAf>mb(2KsJtEX#g*l|W_!S~o#h+}YhYgk|2RM^2?+ZrbIt +zob7vR#I4Cbov%##_U_<*i{{!&P3WZJaGjD;8`JyT?%sA5SM6&fIF{nda&yu{ho&#ubA%i9wt&t>dd& +OT23sR58%Y#cod8qVfq_#hmPLp<LZ8_9ZrpU3Lz+=uEDzXyjfemV=uDQMv}KRd+kC;cK~ySI{r^55XV +HEtQ$}=7qmawog)>xRjDZ*^X^QFz0b%ywz-gb2Gc_Q8%3Z{yEhemgli0#cMC=8_qbV&B)1l6dTU;=uR +JP!`WWnlHx*m52-FGE<zns>#5v~TEZL76jyhNZD<?>F%pd%&bEP8Y&biOh8G*om}+b%<Kz;J8_o*10Z +;5Vlg0ps{bpgj-;4{?jk_t(kyx>tsbPFd(Q#Ma#(T|d)Id-LDH^BmHQVl{7s6id;ME;xEHr8%syoj5Q +20e0z;nc&V%&@tw6OSNj)krXI#osU%UsaB+3d#4T=mYEn{BOBhMX_AV3XMp-efkUdSzt`;v*cj4Q8%D +^=&TG$<wM+t<7c3JzY5T&1Ecf+U7E&ROp+_fOM(-tlGs$Zk&ue%Rsogvn<44+gYXxhHGaTSfTDLi#f~ +N%JeE#QmiTxT-7J>7sMYFh6dTjNUr@({@vpiWT~{o@`f=VN11!^e*4dXEP;nFR(9p4Z*85XuhJ*BkV1 +P|c<+HKt(=u(8|oqP91C@7bpspwP*GqXP$RXtx>dHp`4-w+V5J{6#57mm%xWR>w>#Wx2XexJn%1#`Q} +nZUa$c;w$=JJWGT*7R;=N#ale}x{Yq=S*oZF!JIoEJt&V<@n?vdL3qPHv9Xx3e|dQ#%skWXc6HEGgdg +YHz`I#)aKZynpXl~fDJW-l(AJI%RSWyLbo!L8o16qbZc@6woal;uLaIQF<J&YQKC-QG8pU2Wav=7n`J +<v5IHK4*=z#MrU+rz$%-_-;U1*+z{(_4_!}#-U@h&1QHJvwLYo*>2T{x`J!poUOw($2K%Xyw?mCWsMz +s&Dd?Mle_mt9t&9qD8eOdTv>w8FFI6_#{6gP0b9*r@i7&bo~u{IR-10u^!|0zw5?_*)>*_?k6VQQT8q +dcc%5K3L1S_cf5IZP@eocf^bFkBw(P>8j{BUuJBcdNXZPhbc9xHQ&?!nh19o-e%RohCg*FR`)fgI9l* +C-5(P45DjWiSo?utJs$A;~-H&=dJs&6N7?sa}z8OIx$sz>m*r+l0UW`FnETj-}Z*%~D%-!H{}mxB$TB +SM*tCJOoF<SF>h;UvYtH)9jND4B4aFSWgFZ>KC@s&0~)UW3Cf=aGta0{!1i-!Lz2Gew3LZn!I)^3xJ3 +)WiIdLTNY;FPv4{W(pb(4D0FXIN@g7lc0!Zbv9G9t9AC|r|R~il9(?_Mjx+it$e@4mBYCu>W6KNa_wy +vUpPk}SCR-Bz9K%nnd@ta*H5;gnAqlPToqG~1P`Vf()$!Trx5-PqTkRt{ye|`qBnLw*xM@wOK=3IVqM +}Is`)NakL`1M>)Tf@CziHTw~u(Jw-qlM782mT|In``YXT_Eg{2YnTllNH&8zTNH+vUny#Iy6_(c3B<r +bAB#k(f?XG=+Wx{1<0A06UpwwW^B@vTLYvYmTK|0HFgk9M)?O6Uq6=c9c*3r$6fakTZwM@W(_S;6~5h +f>FArd&-AmM1tpWN#nmPxAWS_-1%N&L6smLWlii^9y0rOhpMe4gdNed`G;7S;CQn%SwuG2UBAFO%HVR +LOX6bg+33FNVP7WOwHq>CeF<P9Juh;#`rX|xZNpypyRREF_YTn>lY>TUO4*P!uVet_k;)>Lv}8q@($D +X@&x5jBlRow{?1b58Tg(@ynk?+C2XJRfhYOnuF~S@Q&1EXoYJ9x$Mg@<`l2KwQrR}sEl~}WpadDh;K) +HtQe=9S#-AIJ=~h~bFe9ja0$EyYbs<9C0y6+-6q5c5Y7>%xqq7)9IR&v!y@moDZw#H5BRfkWEgt11#g +LuQ&4_4Pd>)$THqeiw3WOm|eBxJ==$@E!O=~6mGDk#6H`C%xn0YTo`jS(xz*mFeZZ^+wcl#}-t--<j9 +hZsI<v0_Lk#R5C4Ejn+k+T+Xq+~Z`cPnCYdKfdwR2++ZI8k>EPus1TO~)jZu)p$1t-$RVj}XQK*ids7 +%K4e*|9T1IQ5=KVY*7m}%)(Ko-p*zv(Wa1!GbByH`yrYk5Y2V;TDT1|L)yNYH0HQfNehi9*}4QtelPf +ZAPYii@lg5=i}%m(yr@M~WXT#7TH$Yv?M+lX_K2pI!3+H@gXdkAEriJX*jc4U39JIYyQ*c#F7+2<6td +%RZj5@^9@FA5xa|t$1|bZ`)Ma7F-N}WzyQ%p7+DH$@c;iX%gK$?dhsYw^yMcU^X=@9QuRK0b@plmZZQ +M2k|IDW2(o0%7+1X={+h!!8{-&4sd+eFF4c5z`?DaoOS%%w{l%=}Wp=<~!yMsfjb^UgoBs*(Mc-06qk +oBuZR+#f47WS>zxv|uHd;rp#sYEqM&NI}Y<&_1WPfD6Hx+#u8sj8$3Sz3x@1Iu~vm*6Z<NYc(=<eGUD +^HGmzwTNjaGWH~t7WF~o`WRsI^Vp1lVP6%zSLvsAkg8~t%XlXf8mJK+qO+q3G?)m&1u=01sN9SYvUi9 +p+3QuFI-ZPXA?CQX(|2$mBJ5d?Z5+ndEz|4nP_BaZmb`|hbz(gh;^@N42(5YsFGR=PQ>O)uxrKBY#<4 +J@4KFkXD5n=7emlfJvp_v!Yab!tWJChFQjAk?3b|VuF@-Nk@Sm~}-Tb8mhMkhHs&SPS3$A)(*kUc%G* +>WQ@w%3sk{!JpIx;N#qT$G}8*5T-zo5Y*!yZ_m@0`51=GtrZLUF#yM;VNp7o73FC6PGQy{RMC&v$Pmp +X*!MoL)RjBU_ReIbkT~jP!M+dWsUanjMwUc}&Wp2XticQKUi5xlYM(c`4VCweqVgzd9xA-H3WieP1Nt +AOb&3-6org`|>b*!i$9QTl)NM_atT5i@XiwvaLgsVj;Wnfa4%~uQ}kj(%rdhktHCYAl%(lgvGfe#q^@ +KhlCRHFeG&0h1v<7exd$^+)PD}b3%Jws7dI}7itoEu}(sdU6Igvi)W#20)N|jF4GH_fF&rsuhS=teE7 +ur$_c@wS5?golEXb`Ugsq3Xu!FJzRqUaxy#Lng#*qdB`8fdXcPaoeM7?LRLwq=j=SK@j=`RnXEt><!% +p)OH;1=-WmB9(PZ4grj;}Y+Rrh2oBwyWSwa<-|Ag@tvBLy~Fy1tF_=OV$$%(m-8C-~d^LvF^!GQMHEZ +0d(B!DZOJp`9J@R0f|N5IUx%{bn_gw`of=3T3=_1{dwU2f9sLyb~0x&GLCpb8zUu!j1eHpWEC{)V$6% +2Y(nk!PoTA&XL5g5lNYiWUi-r+-z|fg~n$y{$U&?&m3~Mo2{+05HFOOsVE&^%&6=16?dVMeB{v2#5E# +=`W(jJ;c!l6I8=|4&UCAto2j@z8of8w4~7k!`#)B-?+J!a3GkVfvU&;*tcvk<##cE@u;^^s>KWMy^H= +qKLZF@siaE`(V{6|gci=!0J_l}6X7B18#<x`a1%G(qC+AUo0Ze9<bJvA5a^L6N1JmPh<q)!uCl?$WN? +{IH9RB?9cZZKQ*>690;jFWYLbaq2(E<J!{^fBvuUQy{o8g;h3Zt;o8x0R6kG7)%S_XekHea&&T{w2(s +N<M$zUw^V{0#Zrz0+T~E*egz>OWSk{`n)+58$i#P;PZVW1<Gn5#CJN`)HSqVU5UsvqKR!f6NlwTO?+l +tMpCG{H4+(G4njJ8~vD1NjvZ0vT>C+DDCIF+LJEx^>*B~L5*56^#i8&W{(SN$~YuC%Q3+Csm{URYTMe +^5gsIMLHfOCHwC_D^N+Rp#x{V3!_S-KqVjrW<vbS_>*nz;CgXJgTD#avDW0cx1DW#-y+y4CvW=3eg&A +CvWJMuK*2h<F9ylNEOE|yp^z`LxG@e24ltR()RWptf<wHel&J)$H91i|G^lo2!pUlR}nPPQ!9o}1Cag +?Xsqh!KKIoMb4LxS)X)P$3^n>cNCRHhA#OQS;&4;MzGmod-7$M&BS8kEV)MaFxl>)m63xY`BVt)}b)6 +)OvI3DHU3Ht<De6U9-a-A~P{cNobuQF<1uC%Tl(IqHxWQ)w79t=`*^EXE($DN|xU?(}3AFFrZ8%H(($ +6OV&E-R$EWbA5$9gfLW)c<|>@#0hq5dnGHpXoOtpfumNbBUTURo%4mT-&lILU!qDk(zLZrR0(nHu~a& +obB;Rg$0_}nuv)&0Bm8R*1#>i$fhwNmm%WLZ$GtqNO6(^cxQS!dkc!)}4+dw{%6D8>CfQO;{Wu1-*6M +k+&gS!WGEF=4Z`@<?6b@gx$Kur(Tk0KU7K&8)W%+5Zk~t?;NjT^@(Z2kIUS4}3ILQj;;J{T+qpF~9fE +-tV4UkQgpXLMmbkmu#5sA1-!9)=XoI4%g6qGAIwtm_-xap<>H-boi{Fw0*gdYoj67X{mesW7oFd046e +yI3ETR-Q{a>dhTs`Mz0<@lws{zL8O9p9L2?VLM<KQI5z-R4`;x-`}^&VJEx+{5O*uyy26`)}jM>~bEx +@VR4`f8deevXRasj&I=S78z&%t-KO(C?(H3>=*B<7!6i7me+?<ZC#I#`Gd=###KSY`p$K!aV?b3<`~t +tb+y&E>y$TL-pT~BRvv3mZS!We?Sn)mOTWljJptU!)-zE#gX5)e)b3#xswSGYOZuCq!+KKit=g@Xd*+ +~DI$7eYM9sO{DHuRX)#V<qc2zO;1nRj>ak8|sV-;UHROO6mr(HMFN_n2$a6=vLaEDWp;nI<4!mRQJ=L +doN>|UAfV=9{jmlf|ftt=~z7H&0PyYNvel>y0ozU<Q1^$m9ZPH*bNX5t{2oAIS<Yd%nhJU(&m3G_mo@ +{8^ljv}3!_sS}D4lmhxF}TcmuvprLh5FbUIm$gPj!<F0kYvg9Oi<44#K{_Cu_>G{0cxbYa}N|%oUL$u +;N=A6UyX5bIWqL@2a*24(HZ;3YraPR-XEP2PJcQVwuks|`hM5+(4za**(Zo*qO(;pwF6;a*{qoZNK2l +;`?kl1UAB!5``R`lxGX(%hCA<;y|@k(gn3oduf4I-mx^XRyX>*gT!$kXLhXLG;IKWm9?Aylx7YI_HQQ +gu0>G?fr8`?}!<7^l9_TV~C~~O%BGobMtleX8o9U^%iW6JbS8>v|V<kbM%zk?d@>;=OYOb~&B|%O;T! +)Z<H4xjRst;51S)~lV%tVA;HZ8t{Hayr=gfm7;d%q?7DyvfXa1?yr${Y4b^($$H0f1ZZc~CGT(|uebH +sz;orMx_LB`8zMT|BvqJm43j`6Vm2=D4n3J;icb6}-RHa|kJTq|bQly6{=s{TB{*+&3awUOz><9?=nh +PAX&W({-<8#Ww}lQQ0rrnj!7q?&kfqV~M($a}~!x%W%&jCCv!^P;dL$dH5(L!sHl^s_vPr9rJT{xsFC +rAH85I0?9_n+6nVH?iao;9pWCg*R;5pQXHVBaUWlU>8YjBMoj}>Qlui+(bc7Xua`70ndS-h^i<RQ4A; +5hQGT9@PeZGfI2XRbWfg&!wXd>kJ|W$3H|u?V&iHeSMz<^)<#rQkJ2>Y3x>}lG#~6R@SZfbbhwD`dJy +|Kt6w0HrmWqju7frBBEedsH!Y=LHucoN28z-QzE31r8t_<QESCeXO#z@mI5x+as3-_(sEJ@1DLiGT)n +;e&qPk%2-nSyua>6tZmxI*1h9-fIRs_!TqJQJO>cjY(A+*<D4Rd?s!%6Byd4X0v+y*It)hFJf6lM-u4 +y)x4DQoMgsvhycWz->)H#VQ`99tG}-uT;g6T8@@sU*-D;o=wUW9$zOar`B@$;c$U*F73NjViK;?a>J* +{z9oDwg0l5A?le?*cWcS$?=e~$iz|URr_(q~wBx(D7U)-Li^R6EIsSoFZGST@#C?(lzF}uge4pG~7$h +fVQX@K^cXaU0wKQTS5x-HHHN$n2OZE)RO7M>MDbV(j%k^&RF<r#@*^LW4!_MY;I(N}na8CkPFki)?Ff +Bl>?@Hu8)4SjZmES=pz7oHPAcuu|k5n~o<JC~G;mhmK`Gyds(F|N?<z;W8d_P^^%kB6;QhQjrE$sJ#X +|pNY{Cg8?1}<y=C8d5JlBp;f^$dqR{G#?@_fXR6jow37mc&$b+*vaE96m6+RVj5PuRJuprtGQE?NuG^ +=Ny+QHJo;y$UEE>B-*D|R-f^W6I`{_!w0pm#&~6*w58hVHr7<z4;DoRxR)iHw#@Q0Z7)+7yANNS_dA~ +wm_Q~u*ane_?b)4Sx(nOQFg=BRKw+$Bp|f%6u$}>nniqaEukc;Bh0QCw)OMX;_^x}UQkd#lP}#J`r|_ +1-VyO6bA3o1v!Y(kQlPD9UYFdP-(fs+^h*@@5Z`00>FB->CfTs7*SQ_Kw3A>V=dswqF6=MT}^RVMYLH +Tz+HfyDK=_*yd%JC)`PU=-o5~)`?cSF7MA-EG7S28rN6mrT*Cygs7n>4PR>7;Sx%*`c_$<V@bpoPtV7 +FLj3%Aa4C@->5T_Vva4ZL!Y7<=^1~i5rdi75J1+_b)B*kF%d~oG{q}XyjDkZfokiq2$KW>7Jzpp0W0` +_*Blr)(Cs`1`mm~Ul?<D%7k5SVl_YTP~f{GoICXZH!Qr71C%SZk{D_~JGKJzg>|MAlBt@7owYX)`+a& +-b)vw%q!l#=_p2`+r0;UmUogFe($=PbB)TJ?KN6*ep%vQNkg@t~gQ*x_k*7OjTE2nX4AR5Or}qszYco +;uO_CFnl-E~t1yc^?>-~`O4${)50t|->QmoElzt1o$Pv+wzQ{);;HiRqIrVRMr?uFjk{DyiQ1W!4HOZ +B`RgyDN!<NZb?CMRXOmBzOmkytXpk0%uTd3Uz0W#|MyQ!(%BiT4eA&$g|^t?~`EE;%mVXDY^3@6`Ad< +x9Rq{egSQ1SvnPVp1x`=}fJ272Q91LZYR9qM&2IChEv8+r1PkzSYDF>ajY{w0{?FajM38PrUC4s`f)! +b+vtic_e)kh<cmc$B&{F)o+t)tvrxtyiJZ%s~F&>-6xlk=ekes#4~QT8*vaQZj-|X#X7gi;nFZ1?vv^ +6IDTealU=TB(Qa3s%B;Ck?$OLzSIT8oszV!}B&8LsHCM`E<wv_x&Rx4wF7UmQ;hx1(zf-QociOyab>( +pFO11%93V-5Gx$6_L#5h7Zexjyjvvoth6MWN4T2<bJWxHx*=lq?WCR8h{D)fADxm*($+bVsWyE?&AbG +sb%nbaBbRCZ)iGD>yl3nWgtZkg^$ihGjllnh&Y@=Hoq{$bUXbWiGf{nSnRmR!Es2fbsh`6S*So#>4BZ +?fMOk9K#C-`2=i@7iL<cgdX_pIqc)>(aQ)*3q%Y&9T?5|LHvM{@>1UcmG%ay=2=(wmtoi+neA{nZv>R +`yaP8!nBplbHDJJvwR#ha$ZODp#LdU7M3Zue}~<YIFn#Kq;HolgEl|Rnfhpl9oFE;Tib^P_&3>y-Qo5 +|xQgb&iJkr;@xlph+AA%frH5)e;c;XfdC5*2DUJU;*YZ3=qk}C3`v^WEs3N#b;D26-0D}GmNd$QWMFf +u$Y$7;7@D0Iv0`Ch#+(6KkAcP=+U?Rbf)bV~raEM?F!Q13^h~PNE_XHOS8ebHm9YHUGXo4{WHiCZ;JV +mgb;1hz&1kHXGq76YWf<Xks3C0s-64(e96Rak9h2UL+PY6yDR1y3};QgBrtq8gj^d=ZgFp41kH+=m|v +=M9~*h6rfpo+ko@HP{4CFn~qh+rf^8i9>q8NmhuQLXaxL856c!P*N~@_KBrMSMBLB9<ju#0PI%M8N$P +mtWz#7SXu3<;qC(%;<7yJWMRZ#1p)JhTv-<qH^+LW@gwD@^U6w^Yew6D)Pl7kt6bimHxVmG?7Jrgg=c +&XA(@JKME#Bi&0{*=q5r8_MW1z7$#ykztLj2h!s)dP7%#6chK)ha*Lr5!J-$X98I=i9CmP4{@^^T6=t +H<mXw-hXZsL?Ju)jRXA;8Z3A@M^HjzP?T7{V)kN$wKnbT@28nZcy(!Nt9(w{Mm>YGTI4HrY|@ge!4Sn +(o~L)7PwXC%=XL{tQ`Yc~o<10VXc5>B~fnhA2~*G`-Qj`5u1FtUNOY3!EH=}zUaQ;3>;vZc~*KBqE~c +s`3<(kP8Q^34{L=`EW=fb!{_LQPum&tRWaikBho)57JDdt>5+o<72*(eEVow`zHsDK|T(4}UY|o5Q)n +FPHwZTrt!XyOU2WQ>mspm0a`r9U<?fbXD9z7qH9Yob2R^FgZlInbXVS@G51goU_iSZcH0^nL%N!gtJ+ +66+Or`i&DFlxd$nj<ig3w&(wN3mCZOpdM0t{<S{OJwPHpyPVp2sgXz@ETrclluJX>N7&exVZ06QvqSZ +_}<Wk&8TKTG}XOXE=tCy7OGu6P+y7~0{1G&1gysZX)M^QSXv~tOF`KTPuVXmQG|2yQOE*(KGI&_?LzS +T!TTAld4sBO{X+qpz1YFxY;7r+DHcV&I;CHnov@|(dFUcH{xmtWt%kRPNp?Jwrn$CY0$mlV>SPT}(?m +Yvh6ujc4=u_i@5z21KT{}fKuDrPd~Jv50@-%xUTDPD<xPZ4_6^3I{$tQy8@ea_MR(F#syX{<lp+HwSJ +kkTZ^EX^P@S8wlo8sw+`bf#*pTn5*;JWe&u)dt-Ahw1+nd8wUK8uL3<OI=U5rXGT)IV=xdxgDLteGY2 +6)x}#?8m_F5L5A|VcKi@Rl|hu*RDQSB!Y{~BKG&XZD*aBT5PFLFSIBRWp}kJ$GEi%e+T-NXdj`iebMK +VPE_wW}W1+@LtHldlhgx>b!nZ4jkclzt@y{$AVg;F)%&?Hz9PURg0@pOGAhQMB$;4@phd#B4)?^lvi5 +uPh$!tsJ+D|O}kx>GfH^ZIG_GAwI*uoml@sBLx7BZ_ow2=If4o&7PGB=TVADIu52{m#tnV7i9A~T-rM +jrRm=zl?561V+&s}Lmu>Ca4@tF2uPBilrZ32x6~+8b+p=+1vagcIM8@?;J*RqK1z*huSM=H?9g9jKK} +?HpoUHR2XdJE2x;{h8*W^w*!>@Se}wC+W`G-|eh7sDEac%Pj3ruzL@7@1eO6Z&?GzioI$^b1hc&F4Ry +w!wHM&b=>aMbO+rfk<47Jf7ab1S!(Uvj^l~rHer^_j&?)MJC`-PEXEQ1og^^29ZdccSx>3qc^voNH7+ +W?I*vMCIzBoMdfs}zYCf}EdF%P=dFuHfomB2I^0+-waTv_l*1SV|K!|*UTQb*_Y}O!j*HIM8_#V&gKu +w%P#?APi%CxBY>G|ks>*?v~=<%_;uK(1j{qtEk(&)L}98ZrKmRa<O`1l@aX+36fCJ9vRkp$7!N!F<ot +z5XnbEdoOcTTe9z?x{ywdszL_R02q8>T<AIE^@aHWy@MZe9kLVQStaE<fwUJbP-M8YVTHt&|VaN4iK8 +X(1h?LGflG4a7%W#1V<9HhW%LDyK0xFN1BPrr7iHHMeAITDDbt8D&>(@j2P-kZ9M;R2$+V9>OCW!oXj ++xqEnedHeV_YTU%HX)}|5^Xpo)y#9t8TeWV}w%tuPw>RI?p<_U&&Rx3RdRyS_-MaS(>e(x}cb~rfLPG +n8g%21QVTl|R6&*8p$k5ohJBGy%zcXRP$iz{jlaj}by=&a~33sR5lR9xynl*j$l#I-Kv!-U}<W9@Wx7 +nx9m^tgd`)ALYTOj_gKjtg`y1M?Z^t<wJDD^N``zxyFuXc!ehCjD!{4>U%Z}@Y+#y>r-`G1=I{|lZg% +XG?rw*<J={9Wr)O9I?#{@kzeuSNp?tABq)KmJ<MpYhG;cg-Ygbk}~rR(fmbuIs|LY>2{n^BqOS4=h+% +vdFo(bji|X%m4Au2OoO)krgW+UA216V~?+0_r&@QPd@eZGtWNv{Kgkvd}-6mue|!&<}F)af8))!-rlx +-M_KvKUAy1evv=SAci%hk{s#vS9scmhM<0Lk>Cw-Qeg4IlUwwW2#5dobJoT^BO2v1T-~aIAnW~?DK6~ +z$^A|4u`rGf-moCfya!1f`Lw`*j!T&V<|I_*Z+dJZh{r^|+-%E(HCR&Sl6WKjA`@;r1E)(+A>`M&xr3 +U*lgMGQd{ttuwp9VWF7}D*V4R)OF(@0H^KfM@Y)#t^NGqTfiW+d8DZ5gCPk^AU;Yu=p`Gp&<svDxW4c +~jXVS&cI+HQyFF$(AwQnvj!g&t*6DT}?*BQ;MmRt%GuACX3Oe!D42-?woj6*7z|Jzg2zDwr6FjR@{K# +jWuF_;o&X3-TggdVq(1T^a-M|4Fa1(62|!Wihe;s$q7Ex-I$p~-+QLqLyr(Mb7#`yOCf}h@bx9bm;QW +oK6n=vK2SKXkTURipzwkDg)P0jD2L+WVk)qppu&X0g%rALmym?yLW)nBBqZP<Hgng)g@qJLP&QMhO!4 +*gnVFkABR98J`dASdPJlH7d<beMMh5rlo|Z*QbPZodWlXi^*lm&ZxFut3pw4n+)fzwQ^OVELN1fxEqK +(N0r`l4p%rSX+IeF%cZ1b>Gd-kL$R>Ygg^bStV$g-xHZ8_$gTx+)3I@3DIZcCk*1qFX}HZ1T<r@}L*W +}8!UDNq`PhsIBZ+T9Q)&zhQMPS4AkN})Nr=y(gpn~_BAP{MT#nL>nVe2&YRNcgzK$2`q$&6|~xJ=vVj +2wmZyZ?)MB-Xh<YM&zW~bF(rgsUdV9_9JH1?@4~vyu1b?g64W=-zI6ZOg45?$NZCcWS1}0l@5JorHkl +9G4sj9=v}oNc|6%_BNk`a%#(7`tmd3_bFRMj)Sc(l)bVi-PBV|piJWo|Z6*m%%*<S>cxq~DsZd%|r>2 +sPN(LMvwsh%E<=6$b{3+InspOcIk!|g7?v#~ZZyGbEWZ10vxv7(^=G1hXHP76ohdn>9$Ha{69@gyXUG +#``<e^4ZkP`*W$jix|YR$H}GOCrAHE(K0b}APl6%WPgHqD-6vzn=l>m*el(&5C*+OnO(bH#aLpupnZC +`0mUx-&9tQy>QUw$wa>^R;DXC^M#23sVp8bh^~~WlXD9*fc8_xzXQj&j(tgM-A>4a%H+*I(9LqYS=?k +YNcEc9$jwfLbPRN<;*~$h+P+*E8{fGhkE2JZ?YYQn{V!FolY%9M!MNLHP<%l)~n|;kwi)pnpCV~rcx2 +;0?SO8YMq*sH%oNTYD))Ky)oD0hWW6+{$OX8f0c#%x{-;|iS0l7W#inR!eff>{dMfWR*fx(Vj9(dJo> +l%@kvyuv&K^&h>k9Qe168%+$?KKmezibPs_-+jh{iScW&B5V;+Unz^xrX{iw5k9Pm{-%#Sovf4{YzrI +vqL9e-1M%T?pA=yG-c6SrO6|A%f@_rIsd)%~9cs_nnf;P2JTB3k#V?SH6Fd?n=S=^u%x?SItZ-@{@N! +IrD@uic=A<HP(g%2LBCgS~FJ2V-jd)*9?}@r@qZaDJ7s6fgGb^cLS)+y6iv|K!B0$NxO(>iqVcbanq1 +CSN`OrFPXH&p5lK!E~Ow@9Oz9c3eH5&lX+X-+$xP(?9;|)%i5|&D#F^>i9Q#yN1poZ#7Kk#%&fc^qec +G$i??7hp1luQscG>-}W39^*;akj_BX}9Z_pH<EK6g+-O`9rFKKZs255WH+d#nq0}a%+NLCnY4m0s-H< +k_j(EgGH+-%$EMsCGX1AXaQKa_Ttol%i+8s{Wo|i{mrJmcbp2?{hw!t}hiPSY`S+$fVQ^;&<9>tEz$< +EKovPRkRvSO%fwNWXG$o%|_$=O;8qjG8x5O=!`X0)`?0p<BM@&tKNq++<fW@_n9uJJi(_AKjQ(q)FHP +DR)!Jw`y&u9vpS9`W`pTgISSHtVRI<cu_H)Rfdb@sLKND;$kX(vWtdEo~_A54yg)yEgXYfd**+?%Mb< +GA%8Su?hDWmXn&M@r_dG1`ZntS5wLpiip-!bE}s4ND-Blldr$s5i@dl%rJe_<P<2ck)%RQXCf0x@kka +iZi%)$`i~`g`*R2?>WN&;B5~-j<j90rj^3(<Lu%^e|1MT6z{Z@6Y*OvSLHD87)Li~VOT5Q+^>eHYl>> +QHqN8TzBIW~iWGYe|;qbL3Nr*{mOj7IYx$sD)0l%)j)|B26&(Yaa7^$?FnUk!!h)Wa#CGjM9*RZ!oY< +{$LqJ8pYYhD5|9|HBGhygWGc^NihZB`<cBI6S3G0d7e-Fk)lx9+jo<dm9~abI1}$n3Pl+>Gp~96P1^9 +i?mJRx8huwye?Fq=Kf2!^FuftL=)!BaD(je0#@pl<OO}y|BB!ecOjO*H>|S@WuskhOndDD8{|kwAk!P +dDf|1Yx2PtgA~4FsEebfV0;=&!@NpkY$|L$b|<f7!j#2Gyw4@4%00EYoK6A?OH6@1GAcocekjK~W8z_ +NOgtwnGt#&QQmqu-JcdQZQ{l6Opk447N%?c)A_sV?5~s3JoJFeege-}4_~T7yt4QTmC#GhIrKU>_&M~ +h0^>~ODSJr>3cg?-@iajdFRolhWYO9c7&0|5$o}?m1S^pEMjLMjFuZC&)mF*ibbr#F?tbChwDyAwT^O ++X1iB~)mv#i!!u~chC;E^moQfmfD7q#|ky-`~N;^jueJE2b@7Jwgy*2a^#t>vAQH`t05L#r<7$!>$Q? +D<oW%^-VvI%)D)FQ;mmo0?~Jl}0jBG;l2`H7^6hlw|QCV>Z&N3S^=hF73{AwdCU5Yv#oej{0U*YBYS4 +>+jtE^Zftz!S^t@NcrW~JEHMk);Ut>rn=IhJ^uB_b-U8JmcRSoh3J2t{}T`730voM+40a!tSR8zD_jY +N?S?q97xVo-LY?pT)yzhk*;w;yV(_~`iwo1FrR%S`;d`&^G=TdpntLDZJyLs*(%uuaI3qRpM9oar(jT +kkou#=?6@pjK@r@6@5zEtX_13}{YB<l+%=wzXL-Q}v(pgS`rG&?{_jMXR8?^kM*4(#h_<f-Hf2#Sn@= +<xA^GxTt(G-8uy&?ZU8@?g`|H(&ck8PPnTnqerAO8j))!*FU^KVA%zv*dsQCjtHc+vEK7Vp3F`M)j$+ +VlUoC?t51e&z1zyMa2md*;uYe~ae+)Yq!H?n%|0_xN$15wgrJWb+vcU%vj>dUFHm&bzFd7R}szjo~9T +a|?w(_{7O4+K5w6C{K)QIQ_Zn*fxSX<Ppd2K4umv$1;!gx-$HcqhB5WRfwK*)tH!XL?62GYm0b>U<1K +gg4F~o2p%L@Oi)BHn;@4UjbJ=M0>LnXp#;$c7J_hs5Q5$WK?JuGbR`HNFcY*Q@FVafsQyX~e~!%W2~H +9mB{)Q|o8WbV*9bNdY#>-hP(;wkv!+j)P46~>EP^zG@dTp?h9PZ&+X>nc_!6A^lJX!pM6i#bjNo;GO$ +5&ntR+}Mu#8|KK_S6Rf?R@o2!;_@2zqPbyAre`@FTeRg+(X?9}$!hyiTx*U^Rh_;2r`z|E|8&);RKSe +RmUA;);8`^e5;9(Rhl=`ZV!~;vR1jDSCfv`AfL}Z+iad`!)AEkB9c?@xhl~#0Tgog^jP4)3rTjuYa~S +zSkYUb=M$>%4S&GKZXMB=}qAi+BOU*Yd0-zqa37FQ2ip%AAP;T_1xj*{a>g0Kacv&mIsfwy3%l@nc%T +XA;w$_)!~UDoDY}LT5^YcyiO+K9U>F{3YmO$vzsVH;j|(XW3eE&y6L#_7b8RKaYy?1)Z>n4ra?fA?h6 +}mU(ta3GYz=E-hlhQ2HcM};I7o;j=tm~x%&=s6ACf!r1r5~RkWMHrHlG|tHEyK8Q+@svf*xGidW5h*H +Pr(spkFAEPD5^d7rt6!h6=dA7A3edsOuIp-bJwU55N{%%PdU!dU8G@YVlx@7`Su88Sp9Cnt-Hj0|D7+ +tq?9ETsQJv0}vv@$}PAi#OhQLzI=3iBCWMR9wD%S!h+akOR{TZos60=+Xm)e!{eO#*BmfdQhIJF7&IO +F=O^@1UMrPR3DTFE|B+LdiSN5GZdHJXUxF6a`3=`1N@FAP~e29GqO6J{b$Us^8KD7%RSorjDx-x5kEb +>T754-_yY&i(+}>|-m6uA9A93IcS^sS{P9qj0yTa0J?jF8KXBmS9@XIjr~ftbSKldrDV+zg=nFUCSAF +o;uj%bP{2BlG)r$^PA2^RR@P2vZ_*e>1oki)>yVu+MTi&|*z(FD*9sKb<`og>xXVft%?h5t2RNSlium +cAv#A2|^xBA&fdxoe1`2FJh2RC%sc!0wK$o>1saCwoU^Be%-|H1lE2QF40EG*;j2c^6;ddJ0T_C|Q(Z +^i11lD(P#NJ3G)5uVTKII4Pc`iz_EEqoVhkLoR|+m{s__b7}Y5om7!4+6JBp*A!PfSVT17%!p$C?Jr9 +!i~U#z=yy@&|X5${WV$tBRTKgySIpsj~9uFiQ>Nd?yDu^%a$z@&pr2?c<r^<SjIp3<P&k~)G3#o=VH2 +L6Sbk6w)&tX?$5nnZb{!E3U-{?k$!KED4-%r-yvnej>;60gnJ8q{3T@zSqdIIHBQRk)936zHG1^u9qG +e*KTl@Ly>Zj-lyY;5oLkam$GFicqCl?Sv3WGodt(XGFOc$w3l}yCmg4(`nA^U+^!I5mg@*>>Dxin)(Z +Hng2|ThepL`o;5<Q(dbrOMrfg&g<NDLS-Ktx7HirCm#=G}-9BScbCk{CO7te7xif|#2&SWKQgS!8Bri +m6klioCo$Za?PCnIqQOBgFIf4G^!+4HJ&ZF=Fw(QR2azNU<u<BHo(UU%XHlD;}LUQEXk2EA}kCLmXOv +ujsm6iraTe(Q}U!5xb@6^R5)(A4oC&eJP?olH!hIQjGXoihP36-$*g;v=oz$OEK|#Ddx?aCrV06#Pa3 +K#UqbAB37<kDORsuE!M7GE1rDvNiN?_n>LBfn>TY?_V(LvizB->iTOWCvAIf$ciwqN?BBm%y#N0D;_% +_a;-il~6331m6JLJ$r8slys5tVo6emucV7aKMs1WDQd?&vBRf?*rDskb$1(p>&?meh~ND#uCgvNK75R +FN0nownLMitmBuM-1gPccr85VPbou|h5vo8`;mBY9YFPen_L-+|%>QTzcEe;CCdOYtXD{F$=3SVZwxQ +~Vbxei_C8km8>-#P3Y;EfoJQif^O%ODO)c6n`hhKTPqDQv9zd{<jprg5sZ{_~#ArdvvDpEUD_bG+bO} +6Jpa68bdxyecCRngda8+@@P*XzZ@at$!S7<w_M1omxVlUh~JXpccAz|6n`MakEi&QR#gVYpGEN(QT#O +&|0RlFPVqma_@@l<N%=^is+>#8#<E5fpY-5^)c#bF5+lvm2|1ABkEi(eQT#_J{uYY=ks-clCKAMrRA+ +Ay%S0em+rHu;Nq&`x6|(tVLiWrRa>N5dPFpSH@>hg>d7qGnzc$1-Q~bUZe;CD|NbzS<{3R5B1I2%p;% +}$;dnrEUx%>-?e~RK)x#HhWDcnIRWKaqVD1|2}h250G2}+@=xfDP5l;Ye7Db7!m;=*z%etlVr-w#Vy{ +I(Ro8^w>H_#-L)B#J+s;xDB5D=Gd{6#q4fzmwu0r1)P@{7OT7UyTFTQ~b6R{}zhhnd0A0@dr};F%*9q +#a~SEpQ89XDE=`+{Mt{7`WT&}q6S3{isbbrG3>UkodP;^=sd*b8#yR0Ha0psE-E4-GCHMO*DhT;1q>O +|QBNT{mb~ddmMqcHDS@{lz>pzk%|9+aDkd(1l8=dsj2IM|aytTa>eS&D%|ABY5*Zg66&*$Kfmiq20|N +)9)F2rbAE!Tq+qSwfrF(ZZg@6vXm^%(Zd`dqqE;b@A<)#*`TaiBn=&A+ioI>#<A`v+%E~RaY7Oho(#x +bCSnUIWirJr(r%N8x}7{CDnIlwJu#E*)GZzTL%wz%mI4YgsnAqR?|5)m0cJT5LKE~O0;Xx-|@8*lLQ^ +J_N@Ilw=jA4<PXtpF)t1N@_6;$!3D;$!05*9t)XU2fy_2gOIn#l%O)55Bq0^;!V<-`cg?FrlU&#aZZF +O9@8+jenee&#-u6aePc%JQKk===>-AQ=)rXfI=Ll(Pr@A7A;y(0GEGCU+)x4j~L2eIQic^crc^T&gCC +v@-l@q3yO)0jwdb;ZqG#AG*}ali2jk0y*x}_K@lnODe<u}8kX_8bj3#X9u(EX)2;Dv%>%rOjdsl}#HN +Jy@NeYp=GJ^DVF(oC<043qYWySn^$7}Y<l%c=EO|x^B3bU;J1VNiKP6>Q<eg#7e7yRSH7W(E$41xWpA +v;2cZM}}_p!h~DuTo{PSp5=KO|t5Ce54OnGzKr5k|5mgfV^f8S39WG(M8}7;ErG`qAu7?)`$J!eVQCt +MWtXN0T7N#`Ni5$J>xTu_iXMe;scTSNn;t<1J-b!9`PH#Bow2%KjdGuAm;MSC=ak5q0#rtLrJcJ~wjY +NY+Q@T8FrFkEdr26bmzA#EQHq@!I?tvFXvdqTfE!DX5(r`l%F2->5pnOfnyS_+hbX)he-O%^I<8-8!* +h!v@wBUVZgd)(78w^G((jJ}!G&tRj756X^=OckdP-eDDG51}DGyT72`(H{#^UlcKV+QhfjY_u}WD&ai +Iq%P+r(OP4N*<rk!QncffoZfIwFU_(kj>gcFmE}KLh-7M<pmQqLelxQwr6Fud2F+%PW)8rAcTz(;5mZ +zxyt}?`@4l#j7^tsg8F1wxL_oet2iXTVu$5H%g6n_E5UqkU<q4@hLeoa63A3fziddmN+dP*Cu4QSJ*4 +KKB{=2^}*tvdDS(E}&IwlTM9)2huax3%|g*6e1Iv(_EDcIwonQ;+8UrdylRdz)K2cIiT4oBOx#5!fS8 +wCiwN*B&=D?$MkAG;7-Q=61Jq>e{18<E}Sr4rX)L+j{u=`gNr^w_ew*X`5Cz-qxduuW#c<US58;noMm +xz1!S&Qxo6DaOmOR{(2ubpAJ3n+|<Ym>EF=Gy#>8B>DahYqd=-(w{&Xj(T;p6%1!i6`3JUZ*`;G(j~; +=zUzhT~Eif=3Fz}W@rmr16So6E(7IkH*z$8RCCgD6ZXlP-;%@79R@u5U}b$$q!g51MF%vWt^ui?=@>F +_pymzL{)$MaW~MSw3pp}4+%`}SZe0NWrtH)_;~S{6RxmN>;n0Z~iApJC`6|GOR!EnUBB3=h7ddxZF#A +AkJuWa@X`I&<dCzkdAj$J5mJeDlK(Kb#`->vQMMouP5*$uGY6;^n=2_d4C&+ycYH!+U5nwbIhTCn?~= +pWz?M8Xfa>ojZ5#NG5pI>>A^?8aHlSL|=Ny-uBZ^KV3@WXt`s@4te_YX-WO5{N$5QFhM21{`zZ4<8KL +nqCrwW`=z2N6-4Wa4?q0yvGVfrf<c1@1q-#D@CnY1Lj6PrxS(7cYXH0cNf180xd~yXPMsQj@#4kb1e( +EX$G<i4`ykc9-bkZgzkZ#8AK}ILzx(dH@{Kp%kc6Ln{q@%w?^CBv$$$OpU-HnQL-O$9!yFEANJoJCNs +9CM%P+q?XY1Cjb4X>2aX1`z=H})`FIloAf%IzNhR=fnZ@lrw;F6M(yL$EN1>Uuaj*jk%bpI^=XV0FMq +{}St*s)_D;^C6-zWYv=m6f^peDL5w`PpZmF`iUDj63Ydj~|zxfBreYgC-qF=V6m%?%Yp5{dAG!?srO4 +`R%vg<j+6<eD>pyKYrueZ@>MT^7<9wh|Ygfed|LwEJ55qi$Cd8$jb%5UkA{j1Ik1P;IGr6+jXc*iw=a +d3#iOpU~~uk75sPY+O?R<u>;9O5op-Cb0^~u`8am$7?;6`6DRl`IHFEa9cJ^$ks}PK8z>K$C^ys{#Ch ++%_ZWYaA=Q70a=3i?vNS&Q{yVu>!=LJKuRnwT`Sa%`bwe!wAt521A;$pV|Ni^$%eUToOH!Fj(wVsqga +0Ux{rmSb0QY_S_HkV~dh{sUK?B+V$Q$Yj$_Th^`B6&iF)1THkh1rFDSNzw%Q2<wUMA(pccpypl$5`mK +YxVkO1nRU|Mu<Mmj?s{^dTL73AL9f52gY5g6H5X=s{Tkci2((Uw!oz1MJ{A_zip^2cQLbga0VwC%%_5 +`V%QFA4(Z^P|AJ>qzv9iH0+l0Hlm^PHYq#2Ddmzcq^z#4Uj1kAr?%b&z+VTwEOhuQ^#t_*@{;_OltYe +68TB#oA2d)I^nFjtUPMFor&6A;mNNaYltJ5FOB2_G|Ah+|Aj^w`gM&MeEEItTDu*j*0WOdu;8-6W;5& +GZGJ@Pd{?YEzn2iy-lkmUebCrfcA4xfoaP3bt^dY&)J*wiLaYV|1x79jvt@u-)A@%kj@=yJd1k^1PUC +zN*lm+ApvZ2#~Iu1F5+@oITCh7&A#1m2uCmP~N{s(`m(lFqVl%emdGz3vyxP7OTU3dI>{HZNo-l<ckK +2#1%P|wh|)JF$oy&?Gm|KX2*0rAkz7@wq*R7XL>mr}+O4KYN+rXS?BJU<aU+7SM~{`#w=ex??H1|4)d +>MN7_==lBj-{s*q*2pJk$H_;hMaYM9ER4im|B`a_w^EKcE@eDu_)M$MBs1Z9ecrFuXS7M3x2yHJ+uLf +LrWW@=L-<oUFYevDcL!?Ei-14mq%Iwhd&qTNI&@kf>yV?b54<Lyo)IqB+Xu+U@&_^vcqUXxIaZ?~;cF +>}5l%xtGt_6$pw;K@Xp^W-?L=+TEkr~6*VVR_o_Y1*-=RYXm;6&7kAD7&@<9DXf1sBI>I2?&8h}5wd$ +R12H2M6jaQW1X0rCl=VGYrMCzaaI@kGNI!ei7oDh+yl1`T?BMw`@gFY$esl(&Kg;=lO~s{i{qnGfp2p +W1ttf2wOspbw$W>2&C{fClsj4apYpM?1NBUZi~S{xJC*(eNbEu+FC9pMOTmdn$<rMatw;YJEnV6!&>e +eFhDBeFhDBeMXzq^({`O?y2*wQP0r7ke=lN(4a$II_j$<IxTp%7KF-IX7`sb-WMjHok=uIA0U6J`c8i +On@U3p(J<~b(O{_0aaw(jJfgNqA@8gGv)(3kAsRZqRd2h*_>+FWxKE!x9Y{wh0{&<hVM1m=19Tpp7Pz +6W)%7y?p}&RBfalG^P`PDpsC=1dc!6kmhG=+uWsW>|rsA3!n+l?HDwRoyUY|7`qs#XC@ke{1%YXm={X +3&9bU=Lt-oOpG>$ITlM|+QP4cblgRp{IBY@Z(@-yj+`&+RWa%?^_riH5rM`5|hPmQRh8i|-vI7iL6B$ +K)tkkQObS_PgX)pB`cwj5<blO~+^me`@bp{t2HYz#DkM1Wv#k^#OS6Wr8-|s2`*M1&xsZT?+@wZA8QC +M8j)yhz6<)sL!C`35|x88V$=pL*^j4U<%QY9xdml#V`$c&?faa=oo$8sbBulW}pv)9szjfnP=ql&p$7 +r7wKRuldIK}OP4OmLyx7(az{V;_B^72>cXo;!%JFyMw_(GK2Wa78z@)gM#u-VEplmAq;wJu4-gIWiH1 +2u1D?7%#@$EiZ-0P4$pXti$#oHEdEkKu<i?E~nVxH*L#G9CmBX*fokjg*8PV_-(ZKbYXh55!*XOm=Ca +unkkdNeA<UfgqB}Bs_qM?}NXr7fX2jey=(x79!T3LVl5Bzoc4+{(H3><*p!i5W6G}NWzYP4LsR4q@GK +Pul@93^)+LgZUoeSXDIpEqbUtkP)s2g%Wrdn08@hDrk-)-kAm9!9X{H21&ni7TJhD0Aw6myZ}RA}%{S +`(5CQ`iMF(ckW!K!6;vUR3<P{r|OQe>U%!j{h~|9Kz%ON>T{jvs`?M`N7)Y@Iuzv~pMCaO*1e$1l$4a +n>C>mXXt)|3S1S`dXp>%>dkyuOXsD;1Y3OMUJ}q0eteo0T*`-StnUazspM3I3iGDdhKVRBxHo185Vy@ +R;e)%Q0JJ5ydqXl@QZ$MiGT?qOp#shdzpASA|m({<~cw_x^SAEuXjFnn_UPg7{kMMu{?YB*&>x|Oz@7 +Aqb-}LnK?6kDBN@_>B9G-aM33=z8cgn=XL|Ix|Dj$CMVfo;L4>CR&-veLJfW83zgiZ&>FrWeLDdZ4+A +@bPmjFulh4gAl`cQ;J0(J`j0ItJ=9+N4Kk#smF79Djv}hnK|1$IpZOkgPAKaetr9n>TNyIxNXg&YU?@ +Qk{@^zvGTOSVws0op)FsfIDzS8R>GRmj~#B>|vY(y$)r8`hYsk^_j}SSf8J*Q=boPeH?n=s%sIR(9qB +aSFT*i^B~AutIM*mun_ln%8ng7%3E)}Rg!MaxBw5-4I_XC9qQ5ofK2IWqiubE%|!Wjv4#3)RmVX8{QR +6Kx%Hou<>&8hk>`K;<p`DcHP1h+Sg}GD6&0ObzI?fyKY#u&cinZD%*x7QzSFppWeGH(UVu*E20H4}f; +kBE!;pLQ(Won!kH9z*ZqSiXcA%x6hsgi+EAZ&g&i^1X)!ntZxw&88fB*fLfoF1ZG6U+gPQz`t-6m(un +8D?MK0}||(dhubz+a#9#n=EQ>I3Qs>O<Z7jy~Hs_Q3dA{K@$@)Gf$A$<n%c^X7eodKwoOCuh%|&E)_Z +fd8ODgXEYoW7r*K02*`v4f?njV=?I0kbB?>6EXzajIsrt3gM|O`A0xNK;PG1du=Jk5Pt=K$R+@?g!yK +;0WZus+wFF)zfn<9(qgg5?%lg{Ilv!r>e5l4Z0U7FHz7x84<J`)k5P8|{08BK<+f{GzhL}{?!|rk_U% +ACEJA(Wwrv~J0RCX!km?81keZq*hYcIXvbABu2F4$}2G3y!-lzv?f8Y+?6!HUI8}$Hn0CfWCq75e8FH +<^2ty;CRP`N*`d-rZdsB1nx*NQ*#HR?Y)UjY~|0v{?{NxB8TD(3n?<t<6xSO(BXfya6reLfNGD0qtY| +CLu>kuSdZBKLtWz4Q{t1Fwls3bkz$sE?dYxbGyl1wvi-xYqR>*59E2p#7)%xCHO0Z!m!i${Tf-<dk)Z +sZ*zN+e&qv`!}>TkZ)ZMQ4dfrQ6`WRlmXggqdo*X(nT4eJkXyLz1R_lcGK$`ad+WwlvSe)8)X}~fiB1 +p>cWBr3naB!+)o=H;HCrOpq)Wmga`72F%bZ`gRaLPe;jj+Yu(-5|19n<{B`}G_+11V^meg6I>2wVLDY +BiH~}(+zP6q@ea0VUqw5e@*MZzamcVn=p%wU;|IhQi7XC*0M;lSMkF84!Ow6&5A3t6`^2j4B-$uUcfN ++o{$U5H92LN|{eT4MdHU9<N8GqyWm-?P1kW2JIphKVUNBe=c4*ijl4)Au%mM!wpM;~Q**6T0;bnA2T( +3|iMnbFq|sLg!Z!^7jhg1ZZUW4~zBVT`)X)yf30cI{e@54sQ@v;kkp7TQkGqT^2b=~I7E-mkzPxKRCK +`KSK7NFRS)jTU{*Q(wPB*}x6ups&fH%+MBLEdgs#par;79)G2sxhnp~`5%2Ob+s~qeh>Wz?^u@uK(=7 ++*|Ue+UGM<)74i=JQ4dHSH~fvbGycZ;PiiMz^FN>geJAu6w11ET^hfAB!DEa$!F!a0KEI1{z&qM}w6$ +o*XiUND8btHojXUEH*}a;aHze=Iwg~?Eyao6S8X@Z>N0&)QP^hfXueSM{amRz>NN)Hy1M<Lk4}Z&1J+ +hEGmmM=^R0|(@Ibz0)<3dDKsV3R}X46A6-857DO{QC&^bPqIYG&Erfq#K!O4W4JOb^ZU(M*$Ow%5!E% +`DJNshVyuYwz1Ji@)&T`yL++yu?*>Ma=gR>?b&1XS|4atf<tT4{Yc`Uad&?4Wd3j&T6%eAbmfY+I)P5 +jnB@Yb6+nEa*DLSyeQ@LZ=@XhiMqyyxnQg*^x7rm_z$G~<Y&g^YB+$_c3xgy{b+1Ajq3D8v}dGq{zC0 +-1+`1xQ@eDG^z$c3x6LFS7<(9c5_BMa<ILof>N*+bLb1*lrp@JkbXLlPKS>#}oAdwiD*4|;ZTNc1^P+ +J*UH{fZpFh`h{>ubssm(n??dF?E7;C0jZ^Swm)>kkmj=9*6&q;ac=WAN)ZI5<({`~o=4?g%{5^#X-gz +*FVN3`qci_lg>mxZ1JKiKh%Q)<==vBrb-PRwazeFt;$SY!L6{4oZgF=#f87c%wnJ;u4n7kV^!qK|o?H +yIzSm)&(*UGKwM*=tqxO<mM_&eV|y&foa$L)~v4z!UUeKb$%ypLQhiJmwN@4shZRQl@;TuA3%)qpthv +-wzn&5$i)(XACFv<JvOW9(@XpUsFlXO)`Fmf%1nA3|!FvytQ&F&w*h+7<2M^{(!r`Q`bGQ-p2BHR9$P +s8V}?VYgAb4#5&>F_c-c4J%9A$G~UmiGiOewalKpDXJJCOesOLT&n03$7xRe5{IT|m_2c9^@@Uc4Xt3 +6YH73Yo;5M~=(DR4>V_Yk(yZ#Pb@NCl7C)Q6_=VQ;E`A*LJsWuLf$D}&)7@@7125a(IXPu7or*Ts1%9 +SgVjCde#$T>_rSZ~9eD%KY;C%om6+&^41{O&g?^9Yv#ht;(<)CsJ28uN!<F>BVW?1F-VOyk-saKO9?c +!3A=>sV`gL0j*`IuqtYA&*#N!rF#ITVI+zNri{!XD|*dkB4g3zU$^+cP+T?8ZgSgd_e@ScVVpvbDEeN +*X0rO;#gn7+61q0Y5C7d8_anPG05Y91GUQ^I$23cN$Tp=tCLU{G2VxM4!VI0cmVUm^%=Zwi1jMWt3I# +IZ9lH9FQ86feFSTTh1O^n5AYb<Xsq2D<sWtHzWeUWruIKmUmw7@0AoAw1Z@v^aZdS6zWdJvUMIl(^d@ +b7eS@J+V4caSt&<gKIN)J<q<qH{d~u<6{ny85sE5$`jq5DNwL9?XkJgNi?0kvWSg=-CL^#aV)*21Z74 +0ALcRHP^k3IHS64r*Gj{^^VT&;gM2t2?Gv`6s6gZ0}N@2ja3^~s|_*6MBlp<~aUJv)2Bf(28-howuGa +=V9i7kwYvf5-y(0a--e#x<uOzxhc1@XaSwC+f&!R-|jK>}vU=Pr*C~=5)bhjIXFJy5`dBu7&AkgR*#M +d4jAu`H?*H?I$(zXseOORddH8`+EC-O5a`2KPf5cL_|ac&%0u6IwK=PE?TsR$9KR<ZwvIc66FKloK=p +=57yl)-*80ow*b04J~3;seC45BS$XmcDI3s#1`Zq;Y_V8ofsVOz=jKeDIB{=KP>{U$-g|i-c*&9_Ja? +gweZX^=;J^NDBluCbPsW2ZDcpx7TUXWpx^?R|n(94|1JT!GT?T7Qq-V)-<Hj-F4b3&zEgQWb*T1c#<n +i6})i?MP|B*N8AKzgu5%b2ev9Ub=3LK_Qo5p-cd!Vn8=rW+sA?xx${X}(ER@P*a<$ThSu(2Cs{y!R1w +Fj?=_sgbCnX(6KJeZ>&J$kf6SzvvQ`eoO80r;-Vq5h4CZc<<M8}ajgO6zeNpZ_4#EgOIIwAbhOkp^@- +@EdcvkU`9)V_gIF!?=!sGC;e4c)$g`K)a1L6L{{}v16&YwlxZ_|BDwdPF=TdU6MZLMmYnA$&)9`z`#H +`eE4w2O`rGE*M|@ea-+8w_%894S6;!9nAcxJ-kd-3MEm1#I5LqQ=H$`mqs_tE!h{JEc#RqL0%7rh2l^ +Z@^kuB6KyN1+R{x2-UHR9Y!!piEpg+pX%j32I->T~KiYPDe8g!#gK62#9Q-3mV&L8<uTf^;teR$|P@X +Ig1EZ3}A!*j)G8!_jkuPOe;yg7g5qxZj%CD5zu;HZ20x+HLbjA4xf^G{p1Zq>gN{HuAp=)aaZP_#2>` +%uoCHf@6Z{Xo1Z5$gQOUwyFG#Q!e>>enB&Zw)@x?F%E0yVcrz3;3fwyT-k{u6RO)y63O_iG91~2Jxi+ +uzf>*B#%*#KmPb@PdxF&d1|A6eDcXB|MApQPt|I7Hg4Q_hSJD+?z!jKox*soU%x(f?b@~5UwGjKE>FD +=Lpf8O{=^s`>uKfX<(Oyvozgf?@^=pP5MyJ=>x(o7N&H;>4l085>s8-yQd{--2n(5p4yWrgdYwXBmQt +aPnV_G3NNP>*y|wgXfj$^{p|0s;BBL&t`hz+K-um+u-S962ThKP49syT<f5)M>H^}8Vs%|(*8#`hAi1 +91N3K**d(O79E;f1wUjLCsJ<RAGyJ2#efoU=3rTXjxN17mTFy)gE}xDVsb5E^$vhk;H7ywPsq!59Ym; +;Ro$<1~y<<?rg84(1UsW&{6FPUwU5Z&2TQAcplV=zGxhpld?c#du@m>Jm-^V~(MO2g+~k*s;9MjW!H? +IKF$G+)_Az$CJ?Ap|@k)fU(mY>k!T(@oOocA-=3ywTksYd?SK&HIyafrLHc1sC*Oa{c|R{bZ!v48T_M +uf!i&t$>I9}y)VV{^4x*)yW>ZgpBO_GXK?<mn|L65XzL-TD9e!}M>0>*PNOWp+WCZhW&RNU{&UUDJLJ +1>K8^UB_4wPjZ)aUi{~ibJHgqnO2ij93F0i97H_AW4>*cS1lZ3R;Pa=QxM;Ip{ZM4hO_ZJxBqn!rcNC +&*YS`lbMpN;t>#KkxpefRF&yKBY8GuLNhq(6c1&_G-T^e{denBeXve1zHT&!;`%#5FgZpv!MKZ_QocT +wI(SfYa7I1WwV#8_rtu6hT31>x7fmytI&JK4;Ba3u)$4)_g>GYJR?T>cp&B=9yEovhxRYu;*p>&!05K +IyE)F+tiFnc{%wx>9%f@a;ElA&7azRde08#sj1l+>DGK(k~J?sBPV-6ho0SoIt*;u*lZ5B<=ON3)|G2 +aEm)05G4rjH?0FfsS=u|f<XNZLDHm&6LSDx7j4bP9Yrf0V=pDnC=@BBstkbPo<}CaU=#ZKpn>{_}UTa +<lvppkn5-yGy&>=lFE8p5-V0e!PBG+Wzqv71cd(^@;yoZZudJpfR^K)QAWI|+gbnNgUW5#Hf|GfWw@9 +2d6sUCO*H3_;dsC`i9puiwYP(sk%L1{tv2F(mA2r3F%8T4$>+d;nvUEgz5Pg~CgJzwhiM$f}NSM<8rt +5NW{;MKt!gWm}LHuy}i4DQoAu6I)JoZhp0|D*Ryz4!F~vbX5t)u&6J@IGVvOz%_N=bwFE>hngQPx_qh +bGeUa-)4Q=^u4uj_r8|C!}})oeY)?PeJlDV_Pe`ZLBBQq%KEhq=@K$Lq#$Hr$kLDvAv;2jgftHA9y&1 +85xOO`I@Hv^L;v9Zqx#S6|5*Rq!{WlGgv|{5CG6?&7s9uMZwvoAeAIyP19Ar3H=tm^@&T&`tR3+7fIS +1g7;t)k+d#j8Ee8e+ylr6EK-<8%12+tOe&9O;4-C98@Ue&u5nCdlii8W?l^YTiA2cRtR?iN-M)XSVmE +Nm3_{M&x`d#X053L9-=|3X;zVNvNE)Vb?c;mp1l-5H71+P^25--DpUJLpxNC~P6x)ju?=k-0?_UzWPP +frVRZgJ0td!GLP+B@H;s*W>`UzJ))Y>W=cP)Dj|FtLW}*`H_6?w(yVG{J->#-c^50g@n>N({7Wu9ikj +s3De2sliH=CSZ)=1-4i*FoqJaPQs*UsS<ynM6`?{De8?u1_^QcT+-=_{s*1mnLBe|-Fx=?d7kIHXV1N +}i&o%FoP*cmLi`+l9{(Db;aBl)T!U+IJ#NCSxC4KLyKyi641a-d;}|lP%p!?o9&yNn<VPf(tR(Bni== +#v{2_9boFM0c{WLlYCMiRorn~5Vpnr-^WYgFQ9&l&5#;tLWxmVoJ-TQ<qvc=DV>o)OwQ7aCJuf$aEx_ +8T)EK}qoGDAKg_sB-sEw9S&DWi6%e7#<m>9_T5J;z7BHhHGNY&K=)O>@vRnr?H+jF>xZtc|yhO}7=c- +$s6XS{2#j5-Mu3^O%$FJn7^*`A(s;)v0&haax>jpcs^b7NaF-8Cr$1(X*%%okJH<F5U<{cHm0fh+FW7 +xD#K%m+`;w=XeB9CR0c(nL+L)NyH-$kj3Q3WCPhw>PeUkk=gWKnnV}Tm9&_S(0Hi1OqR>)**mO*{ezu +j7ugjyz`kI&*aRNUzs>LF-{tf80#3Q)hNtkw{4t)+pW>VN7XA`1;}!fhUc>kE1H75H@eg<>5Az{@r;A ++SCcE|SVYkIS?uOl)?ua{0<cOb%--vQ?SiCFRM9_Q2+v5GfJLolf-<MiGDtF2Q!1N?g?UmPLf?A+b)C +OStv6`ZpUZ`KvujpMm$<OnP{jix}l})uvZI;cmzp!uHKig*ek-cbd*udDq6Ol6{?t$uj!PyBU6VO`Jj +c%cJcr$(lzk!e7qd@Kw5W5HJW)7K82w6n($PV%*X(W^AQo5U7qX&V=Pk14JfxpY!#Ajlg*DF7fH(@+` +^(mbJ8I7|Y_PmX3_yDiKQYX`)$e@qWO#CQhsgrm#ljhLh(k^<QhN;UIvV2y;_Okcc5R2xVui%-y8u%U +OpYZRv3*D9Chu&&$tG8XB@V{l#Y{>48=m9YyczY3DBR3$ABjh%jNGH=6+D7~6bvm78vvywN9&!^zrdT +Hqie~Y?I3q5L+d_Il?=A07-UnXTOOOxCIqH5@qJO7%>mEIz6aD#P4p8Fng#OR6g?5wOVoU6HJ7h;~WD +(N~*Np?WD|0HHI_K}sg|VI;cB1~%uURM$Z9sMCFls|1XcC@^)9^B!4V?GjefV$qEbf8YYy|Cl*<scN6 +?Ti=!5`skd9wGUx5qo`UG@gNNpddq)vzp5m(*32qqpc%eMHCj+E4d?>ObWN{d~W`f6af-@A3Qmet*CZ +`-A?lKk5g}!)A#|HyLJ?IckoZeskRnnqf0);_XAArWn+e+A>=XT~}$V>=ip;!*<XPN4S=My;ci4>zr8 +RqD3ebWuVn)9omSB(6%urszUq0%a5S<P&+z_dQcq3ps<siAw6UQIQc*6A@&2l1YEgGUI7I$YNlGG($y +O9+U=@J{ZX~5ld4Y*sc1bzKMrG?ZUu~^!FJoo=D=VBfgAW!vYGvbead3^Rd<D4Ewg2g%#+W^Lb*X+m! +tA-Mbxuumzt+vh7L#rhsiN5CbD;C1$;iqnT$@OZ{m3T1pXDCLDIncZjj}46MdC7(9?7l3$p1v9(r_vy +G#VdCh@vBCk8~6m*_p`z2P-^UETyaUwSeZuJ^obk)3jiLf~v`RHdqh4m_#P=u7$z|9(H)U+aJACz$1C +jhSobTWKG#%k55EW9y*<VKA*<pWmAc4tC0!i0(r-(U&kbgO}rE@(}qe`H;+k{;H;Vtk``W+~F&Crl6k +k3gkxlOSx6<kf&u}Y@_7J_vE7jm`_8Hk5b4-AL>Vgz#~dcQL#WeQ6(v=G&n^XFkhvfR{3hZDpDn?OjQ +8=z*qrC{zzK~;|qiXW9O5nIzgw@sdd_+mZMQ3nhSXkq7t}5Eo8Y1h0!SFnPP!6a0q<1395J)N0HeinP +ib-QcYS(FBu@wk*Ak%e;W%vewP#H%w<W;VU!7&%ad6OOJ!*+<b`CBES4p*RF=tdSs^QBm8_QgWUZ`|^ +|C=W$!6IqkI8n~0o=RfS$P2*uut~O0U4HqP*bBaprTYXXub<n$ARwI$^qR1lqZAsR8YSJ^k)EpEMO1> +3I)I+1SE=qMJdoI2OgC`q+0D$wW?0ls|MAinxQ(6sdm+&I#riCtAtL~89Jy#x=PpTI$f_Dbdzq@t^P4 +z7;TbGib*wT|LwS-$%mP4y$P8jQ*261si}s$h5ucjjK_G4$9Rm#c>F)czX4E70|XQR000O8^Hj4?`x> +(RXTSge0EPho8vp<RaA|NaUv_0~WN&gWWNCABY-wUIcQ!OGWq4)my?cBV<<&Soo83(|H)gpkgiBzBMb +QXG*GuApX2`D0%0@syQ9;0HN-M22%mP-x#7S(H$8E7{Yg@IpwXLnTwr?#-Kp`QJ3*izFA%F^qmstihC +?p#$neRF0+1-STec#{zKR#q<p8M@Q=k}cQOwogD1+yRs7Wgv^L8uY<zXIWZ|EIxUzftS^3Gb%vxT?k! +*m2dYMc-fQTvGbP_evN3&{@3jM?ZQ(aX#{xvo!c4=l6f)^iG@U{NWRiJ~kmUGtCvNqiu-%;)~0!Zi@e +<<ZWzv37$XK!%hF8=W|V8(zB-NRd~MI?>|k?Q{HQuS}DFNmjAuja|1o^{eJNxtS{cz={`Yt^x0$~c+G +{m@wg6Qw2+>ZCJ1{W@DCnWaU1;D`4pIh*n5&7Sn)^beNrS$TG*TfZw2M?Lh;At;fr2{6(dc;M0{Cm65 +f~&&oYy+H?2>G4wLXGbfDl{K^XCWSc~3rg3z4w-N_S_$5trt-10%JLpXNJ#d(~9uwX*zqYIUVg7DRCy +iOqx{@O3jR{;Mf@N7aA1cY4Z@F1+$bZNf22}^iJ8Y7HV$bhHovU~*-N|%-v!#m9h%#CnwtlrD=J+}A> +$XI~D3v)$dc;>QvlfQc={{MgYud+p~+zihE`^X=fX)g*DW)+2|I%nQ5m!FVrf*>>N(NQKrc5jhG6|P( +x=G?X(XWJhx%#y<aSFSfa*>D?j$m?=yw_F89!kL}t0h>7Tj$rwAsN&B>P(@{3@OruOkaD*ic3e1*Nv( +z>1M`Hem9Y%z6#3J`f}oEHgsop;w(u-hu2gFmOoF?m$?F<dlP(A)p_MMD(N>EKZa8j({M#G0|JSitXe +^FCW3l`%V+qcnv0O)ES$sG?mOX(>#xgWMmV(1HmVX8Mj%C9qv9a9ye;do=pU_z3&|H^I4k<4C{jz$($ +*kvYgj(5InVoVU3b2+yc=CC1W1F9~Xs-^!fiy#tN;b28K>2n`9+O}69`GCW{v62c%|EZV$xLzO$*e(U +b6vTzy2UxaPdiyMc4M|QOPVd+C*3cz6VPr!fJLC|@0`P~JL)8;I$V_JbAJ{HJ(i~}fITd+?Ui+q_9A2 +vU#!<w^caTBAWzuqN^<YfqN8wfit@DkNAQ<GafcM%cpkD<8j>iV_qprXer@+C90L|x=`wA!n6Tpgezw +EQ8nx`9ut02w%-XassP=Xo>L}>R5o~1;CO8<>UTpYtF39F{k)Og$ZU8i7VXa!z0NyS%3W(xdC6w>zZT +Ep#yI$7dXZvB^w0E*F|4ytF#{%Pn(d|1c;F3bq;!E|~ix;35(7Mb%kZKU$X}?@U&11Qo9_WGgq$mh94 +Cd>g>2TMXeJA9cD75+cNZw|EHTr3gnkS1U5*m7mH-xQBfL0{2+9#BFtiOTiptXp7u9skK;a}1G?SXOZ +g_^Y&E~_yzBwl0TMO{B|-Z1V7&&@H4JRg@16RWKSkX$0=o0YVpoWl^g^c&q=#E#LDEr87&2+wsD_}La +ednnh>mcr{(vY#E3=1UJt^Q5`+8n$oeFf{u<1k_yEJnU5X{s{<83$$OPA>fSvl|(y2886l1Zi6n%Y@f +RY^Nf>2ivju_6^8&9)rl1qFrAxlC+MpH@c!J*_sk;PoO85eBXMmo$RNntwa$T1>QL}r3hORjeSlqF{a +C6#ILwWE!L<P9<sqnAyL$*tPOwq8QlnIl_Fg8w&2>%hIxG*blgDg@y^=fs;oh+(_GN+04$7?CaD09ci +l}1**weX4eK(qfSVx)ztW{?Fp~N`#QI`{T_>IsP)()*^7!E7EtI=f9`w4E&Iec$UhxQ6^Z>lH8Rkj2N +u*~~p6JTn^=H6pC)<9D=)LC`QxCZQx9Y>lqTMobND(eE!EI(0}O4#n2VKHo1xr9)8w|kGf#c-4z#C7! +@k!sfp9IL^cOkbZ$fmT9(hGXhMoH3<;`AXMx%oa=`1f?gz#D*PXqcD5Voi&W|q7EUqZ*}o%3`gw&!Wz +RMD{I!~LuU6LT*oDVWEW|L(*&Wm(=ZH}vL%ZM^>t8z**Iz1i@4K)PIOV>(NMVd3}iMOtvpjRW_p5Wit +<bsx*^kP%JgTRsSPvT%`<(=GqrbPDD(FaxgN*U<a-;CF*N?d0S@eQ0x+X8&d3rU!jRWhAj87t3HX~Uz +|S}i!21b<J2}?=xSin3XE@y0G-U-8v4lgUm({uVctZgM$AHUOi;S1y*ximT7A=9!E$c#PX>zw{i=&3Y +ya?g5TytO=L)HiHGC}57+BtMCFdW^n*E#Ao80yk^2=~c!!=bj*tgqz5jbL>Fj2{T`z3{sjfd-KN{ebW +9LjohS<522HT?8hEBYY6I>1WbLTMR+~6ue^fR9gvvVNQwKJz5znv3=U_2hzBQLfM<JY<Q~8a7;fKFB9 +C3L^9oP2Jr5R>=LMJLm{J7lR*{l(te&1$5dB!VO=l{NJny`xK7Kn#Oi+7WPfbzW@wCn5GpqFGPm%F(@ +dCMZA^+~&%o?f-ZxEVpOkp>uU3YN)#(_2asb7r$!bFqB#a4u8B5qp35u=68ybU&NDiFm;xr(si*N<B1 +{4HwX&CleiF)Vg;I$>HXEe{0*+pa!yYwSWj@P6%C1Lj<hnq$(#zy~qIyLDmQJ)?;S{d3~(al)VOH|QV +s0ez9<Dxkq&$~GkE7wJc5v!ZEEFPJGt%=p<5*Xm;a%djmF~Cxb0i;<Y;uu6OPC(vs=L4<*)G!C2VF>` +kimYDRAAU2hoAAi%DTGH3JK}g`Z8Adct`7l8kA@+X<mV~Y@U$L1MXcT>t92H!dN=O5-vH3NJH6o&8v; +RUAUwX~Th0b8O40{PY%g~CvHsNMetvap5+`(!_ZW<QPQD4I2&pGxtMwmZJCh0_lC>#N*DZPQs;9%tjq +oC?$6;E-OUy{eLO0*nXl)y35~gcoVAg;fhaI<f_9cMrXArJbtXyV2i0(Y?ONW%@XDVV@ewvad8}+iMx +%4aD4Eq4eS0e5ZJ83br-$LPns@n)%=9~+#1{g_g<N|K+UC7N*tsH$0f?l(o#2T5f1I1CS;6bRMB&4jI +E(4!4y(Ax&Lje$nMck|1XQ$~%MOZ1xzb&W%Y>lB2be!S5)d(n!3r@3ljXl2LO|al8wBS(UDk||+ti<u +teM+1WFE4>e1HfY!B7*|$@VVHWeQ_oR>qoHHZ$K>pw$fF=b{5fmbe-Yz!60D+fpR$Wq0=}Gz(wuV-m} +pLTL}a_d>gWi;RP@;>v4887qVA8!f@QM4+Q9$1A+gT<r*2h&JV=F8Gi69?V%)`JZNa+x73d!08~a3IP +^45;B9hogB*SdD}lPo0N9Gc7O&y>@<YU^f5HfNonLJ+{Okg7$l>WpCEvW`XNKIhI}ny2wuQpyAuJm$0 +dsvkrst9v2>QcwZ7BdJ+80*BUY;{CaEca)FEs*&c=lVE9YCmg0hq(wKsa;88N^AjyFP%44ImQ|2m$5S +W~B2y?+08(v|W1&xUub5`d3mSj;bK}O!j0h9AFZH{pI?4dr4QlVFZ)DZIJ6*?2!Y&7jKWz{}?KtjVzd +qt@+pyE-m=nCndI32HEJPI#`q;+Hb}J)e{CI+j`AdoTx~-fG8O9?4dl$M-TwScpVSz)c$!D$L9dq({V +p%YWGncS;!A;f}9hAqqV|BwJ=E;F<#24ZHMT!Yu$DFC=gM6xQ@hSuOdz^iu0OGuT6-k<{*MvfZP`Hmh ++L{Dwv7X$<F{5x5?}Pj3emK_Pc<;$EHGAS~0w{2H^c_%BWEiiAYWenUQK)pzRdxPnZiiCg(#9+x65E& +t|2+tk%OmFyTJ<8X|%gnbkMA>l$KhLSx~~qP+;G@9d^ESCGu*?8R1^4adE)NDwlNwph*E6J@n(;6soL +`fVH0-C881kqOsefWMEv8sB+-t>`+c6=qpWrq@>O7gzD;SJ(3AC$VSgHJnYu79&2aQ1)zFI-Uso{hXA +a#hGF>{3PsKgH84vE<Jgf+(+4wm!Ses%Mh50fig>nX@-)!<0T_~OK$H|R#qq7G##a!0}9B`nb*L(_Jb +QZ6~)01#)y|D5KR1H58;VocxbC(a-gXPA$%vKYRAW8TJ~*}Wl|nI^nO<wfI6vl8Z?K(U*=|b(=JS)#z +f%A+$|Dpbi?sCh{rKqLB_Rv0fhNRAvy;PJnR#8(961MO|+jOw5pRjN1FtbSYd*unyjB<01~}bWB0>r< +sq?hFF{)7xM|3l{bm;iI&gR7qUcufN1mEQsVjGJKu4+&V4c{DaRH`bI8Ro;wvp5=dwNQjX#R1KH9sYo +q<?`C^JOL)j)_#hUArC=Ln#K}l+1tLgEf!d71Ky$zD(f(5Ds|04O#;pO?fZCzQtjWlle0@(PpeK`fp% +KM(w605#XU!lThmz!J{%U>J5lm>#O`s5&7&a83RmV<!8aGo2<L9;*-J??jM5)WS7=(9+{<Gz<=*Ru!J +R8f;)Nz$}@3^5!M42Yfq%42azAV!?Kwob9zubaJPVLV2Vtor0v9@LloN_$;X()-r5f!20LNNc#<V+4a +8qii8hdzL+HJY@&;Hv%+Hb=03twgitZq~G(`KAlcvsaJiCLq<U1h@*y7?n3_N^+fYM@tX3kA8w8QfuL +UCxboP77EYj?vNpt^#P4OJ@_*8$tAQObghdxB4E2XNzt3hgpmTZbSLf}K`XLvK?7z8&@1CP5j@%9@eG +wW>n_>)W&?9!v*j#9EpKq%^<KrVN)^p`BGxw#>PhEmeE+CaT+pNu5+fQgDz;d6F6nvrNFC*^|B%pEmX +FV}k!%1QcXR7Vv;hX%=k?_h){97or~$+fsy3y$w4G*moG|OkxD&3&7nqu$P~XyhX`-l%pu&0lwa?o$W +!cVJ?uO{Nh2uJLQ}%v3kTECF(h;G!1?qTy7~*8=T09s8NcFQdFIjm}O&!Qcwc2gQvvPt~Ba517nZ8ic +{NvJMbRWA_c_icCG1ll(!m_;-%8Clod;D2c}1?Zpf+k=7IbMd=IQruKIhNlM7tT2DUgxa)7&8L{K^xC +I)G<8wk#x06UOxeQ-R?@N$>~<tMT6kL(?Pc5M7y7RT`iat;=X)fodpMxs%5)2Qm5z~K%kQO{D`S&G~2 +^sAeb{6;hOxdr>YP1zz=Zx*Xta+(2fu}Tm@wb@9_;<A1pogm_Dwfo5Om0WdE*&>U+ZUFc4>rJ#$PVJr +RVTX>yj{1P8&_2-~Le8FL&V@`Ual*EUY~u(Fb(;CsCm=!ThlHkb4B^&H{VlB|8;6`h<rA+UQ0N1+`H) +MyD-jvTyrgQ35e%HWjJ*De4VY^fZt%3ftDO`p^+0Q9BQ7RYN_a7p3(bSSV4fUWRS*b0211MVkyI2uw# +p$NZ1&C~gv)PYoWNjh$B14|-~o7#Jb_H+risWnHI^oWh~(A}`k7B)@*tSwSrRaXz?-c{<mDw?3_nh70 +u%@oAAuRTQ~L>4c^$9vM<bAJh>S2H%$W&LGYL>r5Kv1HXOIl(4jutM3iv+3&$jzLr<V@ImbDwODwLBV +^N8TB{vK*TCLfWzPRVLCsdUa%*erIryc?AS%Wss!k|=xXm#4`!9R~dqW%WphHV%iAa|C4upfHAVZBxq +j?LZ<2YR3_214c&@*d%=XF>Zw>yKY8Kw$cdNwZ9LKFHGbHs1Ii%HU%&tu~~Q&)e=C3v~eC<@Bt*^?n4 +k*mVv4&JwtnJcw$oI@U)Kdd~7Rd)t)~KTn@0hMX*FWv}q_@F<3zcE68948LVLVF*{=Zd3|^ekT|+gbH +-6co3;yTK}_r9JhS#C46AIVD^Ix6rscXZ!26N64a6`Xp^hIa&GUx~$N58r9e%Y~12|0~4Ow0T=U1Gw@ +9RtVov7Gmr%)ZUNM_rLSa%UJ%-_hNS*|4rufvJ}TpUG}oxy9gMZ*#s{>;!gh_4_yI!@Fco(Gfgo{Lye +SfPHf&T6ya?>ZguG%veWR(lM^9$<~`J*b?OCvp`tWc*{FjM3#U`PoN)@twn6Q?fEhK-HCGFPrAllO@s +_p$ch%3>-+s97vAklGY;vQXUQzFSq$BJC*5T6)L6tp0B*(<TF0DGvH|ve|ntsks!$I#u;6tExrq?yLP +!vVvPaVtBd3uO*W-q+7d6SnF8hxIj1@DdnyL$K34DdXr+sMFfC3PhUfUQbct>Dv2UcVQ+le*wtCqae^ +-Y$=Nml@Up>ct;*@WodW7gFa8-BvfLzC#^Rs<GcmL?^Rr;z?LwTIlK|dnP3<RTHTE;{kJ%_r5RQ(#Mi +Y5dQz29gANsVR%_wXWIO2~6Ea+uI1On7Eu!jWcZf5^gBq}_N6WKpMOIpv&>Vg5mA?K&M9$K&k!aX)K{ +3`0)h68%UZw7|(FEI&I%c<5|^9YtVSfWYz)LIti)aI~zRHI%df+w9(>J%nvvot1!~e-DA3djoE+Agt( +Gg3SO3)*yeO>VCU+Pi#*^4&6?ok)Fgst^l#BjI?TcfISMNiv%Uo6NB&xd#MPu&6{O)o1qmLL^Kfmx0g +VgjrfroJmMFt50-eEgD4pJY7hlLXen?d);WVskk}$tTV(xeQnUqNhZfMGm6z2Uj;1ZhkHLVgVl^a))% +9X^>zMjDLxFVD=RQ=#+CW$<B2H`kki@{(4<=#r`52?{86xmo{LF^W@%o3rGL-o8hbmb<l*zoFIv_$o9 +=&39Qi%`hIss^Q7%DFkLfa0I*YuoA%bBiJE=c9zZD??pj{3c!7zW7nhtm9_w}Hs(mHD9<d2+@`PL}rI +;KY!=bO3-h8<7W*=zKF70#DhHj;yk%#Wr9$CAJ;;S?yccY^<ZQZp9upGplQ}4YCK*a+cayV`LOcPo6; +7`a-TrU|;7vZtvV|Rwg1Df!@?dt?JQHerBnYA8(n{>9yI)6bJHndRkdtS}@7jDjRjO$6R^}5Y=$DH3G +t>P_bvlDeYZHyqA#&0TenngFN$&z<U@>ai5I*0RlNs*^AhTB6iyRl+9n?W0lm;M@?mxj-tm;&XGF3R% +mTyd=yFAco>DJF*t_U&t0;)Io^pT>O_6%sjk8-G#=0k@o;S)l+(I>w8N|R!G5YilL^3b{W}Y@Y)U$22 +C~PZikUs-lEc>Lfla>~TBnvRAow-qbcMaQT%^K8{UyNvoR|`G9_QD%4kVC}e-FTZi7PxD+Fu7H7VOqR +v|#!$Et-Lw5B69J^o;MeRhiHm(nG{JmtKC0AFz;uh0aB%Ba|Nj8iFJvT-5Fb(u1g`8~B$tZPBen1prn +i^ftX=AcvK|K%fX@Dys~*`jaM~Hkl-V;1T$1^Ou7JW!$+ewaM3xSY1yk3|m|wUweQR$pPkry;#%+ctS +EhM5^DZ%mtwG8%6CaK$h^eRb}BXu13h$rVqjs5a1v4Z{}$9Don(@mZ~h>9!ne%OSAx*5%cG@mrM@LE$ +I<oZ3q|k;Bm-wKYIvh^wM#D_Eat&{KXFau5gY(sL|&>>1Po?u#<E$28dCtI7LH-rN9j|6xB?XpAf4UI +nEhZv0^933Sz}p<e@xm%cg7J3_$#ImkFfN4FE+9#^!ac2(TR}zmCJe5>zJ9QT@G$yrVtACE9yXO3fQB +Rz8Q5{*M93u|$w8YkwF(lI;^dq-Z<5%o(e%;R^L7^^op<@%$dFbr_NpSj`2z?%>VZeFKmfJN4@->z=$ +8GTwmMvb8%0#7T^vuH7^svG$w#)7oDuboAA8Ar8krEa1JNqeAUhJqaX!>3owUEM-Y7O5E_9DlmI>{o^ +enjQ>DA^0oV92=b^=6Nrc-QMr2o$U1;}<1|#(K9uFFIP_$iq#ir(4Ly{l50g3@Ov)hmwJH51as9Eh(v ++q`7j9cD)c+1F)I^l~s>uX41>#Fv!#*R%@-Ig9f`aE|obT_|P4;e1iM3;gyD!?IDT$72FWPzU$Ac7?r +k*n?R`py`@MBF*h5hOUwsjwJ24CT(ZO6CfR8;@*O?zqEePktd(hnvPN0t4p9ql7di4`h=+@YXb&d=Tn +kxEdTGK&m2Z2e7wW}b<d>&aB@rh7?ia6go-#<I|{skrs-LOo{pjF=viRAz21f?-e7vY`-DqE38rQc&d +FwC0&X%ylv<v-Dl4+zNYFB*jVlMFP`z@*PESrEYBs&eaisu(j?(F#O6+K9vKt_rzX-NQQTPnH(C4oTg +b0jbaUedAL@0AF>+zNkrFBe3*vEHaRnJ%PlaiPvVk{_RUwQM@>f2aFDi8ObCJZiMS#4VZgQc*<LIf;K +y=<si{Ed8s5V@`jc|jL0k^VvZVO|tdrJ{u<v)XG%@{&&kZto3r=l6<QY;Ci)6!o>#yzY*E`My{Rjq#3 +-RYPgQP708nc-EYF$zZax1d2Ef_&1jJ?DMWnb<W6U+3?zyme)(Pyf=j2N9Cq?Ptd0HpzxA-zezt5eES +mD{zd0Br~s)ke<ZTch)K(j!gfFk^*kbU?^c$6?RYw8bZJ8yAlg)Z(ldg~`2SkMyBkP`J<L7^EG~O!Q+ +pQ7HXt=tqH)tS-zF^bT!8a*UGQV#F!gzadKB*N2kD+Cf98*GWSULY3jLZ2;+EL(zkzbp5skQC@zw4o} +76KBV6$7h8vIgPxn4%Ja~CGI+c;Jqgd^<gDOf_aU_g+4g?RQuAMq3V0sW5PHS+PweK(5d;gP)k#}3O@ +ax;#H%5u7R?y7_lCw55qmVl(6R@|v;HQQ^&Ci=wP={AJ)g+>7tHzzu##)FiMP`fr_~O}gyTA%_UEmqZ +CjoX+xF21=zS8@rY)Eg%S%eijgVI>njMQmD+TQ>h$22$yEcOIxsn2l_)E<9S6J9iuWPYMtOkKlszs|s +ujtzrz>|E$I}^Xa$wp!UC<KdLgT-!#AAJ~$s_)TE2tga9428(;+70l#78m~&7wP=Ux8O>|asN2&cMou +jj>x^F#3Yb_<*MSRYhyD}#ryMGI*zsXGtn{Q9JE6K=6nG+Tgm(@KYaud8Mc$4NOF_cl}Cq2AY02^L5= +!MPGZ8=whUem$R7dRe_kX^P#tX04Q~Pjjh0!3i#iapzLJRtd9k2c2gu2KEk-fxGx!KuzfH$bg=;O(e; +Vp;vTlROREtp8WZja^6~<8D`7Yj15WKD7*!vR0@f(<yko9IL$CqUC1N{8=Cp9z!ht}gs%wrHxC-uu94 +w~m1_5db4T8*YB&=j4`+*(63jGcuECVRk#Z2r*WS^m&cC)x&HbOunwp0pLQ8<}MBvnTV4a=MDx(EvLx +v&fqzV&zH1g~dOX{h_JNMWI4qzZyNaiE25L6En>J+@=gx7!7zj#AjgA1Xg$+-_=)$*|rE`#V_y;<dUI +?^I_xp*@u2}lhKBJaR|~@E9I+%;-x=45(K(G>3?p;1CEg};=jV1HexV8Bwx=bZ-?Rd1w^x{7Kv<tsIF +bwFVpZ9mX^)51d5AjO2=WuIKO#+0Fm^L*tzs9m?!O5kR8NlwZV=fsYW3oA2t#&WC*oIOmezU0wY(H)A +XiO@woTo4_S7L9G+%l5{#{`G=-Vqu`I&?QM2Ce8L~7>{~W|la~%sb*#UPZv&Bsry4eeSAk3T0KJnbPb +hd0X$o0o8viUG8JPk8cn$Kr#>5ab1lZw^r$x&{^7tiD8m2s*^07emDaRo4d|1wF?ci9UwTV!sMjJ9~! +OaD{Dg;X+8L;JMH;kmT0eH!0iVe2ht01{&72UhtOldxeBCs-*YmFQMagBWO#i<{RYt_WGjLKaQFpFp| +W#qBv=;psNC$jP>0Vh&IID3+K~GYkpJGO~_pI*n<AOdyB?qOZ5fMyrwv(Ebi&*1w=#>(~T&d|}z_2bn +$Wcxki=7O<{Y;M<G>Uw{n)B6ikL(&4v9u@(UdOKw8u)bIn754HP^mf-tPAJIOJN2Ulu*`(`H##F4@&^ +dG#bu0D~k;~C966Yu~9dM4ou6hoX-T{;JI&MZ!`|_Jm4OjEl-{{|Ua?WnK>$qHh)-1Daa((2^aG<|kd +lW!OT>p5M7;8E_l}Oq{vN5*%T|r2+aZv3Zv}z!LiFVVaCGJj?XnL31CWRegJn;8yD+O?~_NVSNFTYk? +|6?eXv#n2`x+0f!DDnYXxT*EIP+b{Rhs|b+>r1mlXgjhF6R|;KZ1KAn+d*X^lj!V=4|3Tp&kQ!9vKb^ +9UwAb?OFszGo{#PHv3)+WC%QdhK;%(6#cDI(k7{(GlB-5bl`(2`xiUl>pWLheu#(7An1lw7W`LDUiS< +b79lC8(Dil?BCSiRNYvblSVnqYQqDXWascUt!+CB5>CzT&aIlIJ)-PlwlU72FED0irlEae(ClBNt*yD +h=zd?;U`l<8w_>MncaPgs2Y*C`RiNCllu1!5&)9d%bhWDVtN*H=PxQgE62WsmyBd39Hkxc;jYeF;<)d +;}_y(ha>>jm%P}sgZulL}>ClY<q~>oh()k16b^866ydS-wLht)AN0R0djn-SzO=QPtU<nHif?Gr)S4< +W<X9+7sd5oW-PTzY@cp{h(4xEVx<MD^`WA3Bkn3o?@R;89(@-rsLX^9KhR!ym^2KP&y%dwklZ(OiRzg +oRxal$i3%KVQUz9l^KSjVptERP%{1u70R0}c!=)^?SQh>BL>4<_>96NNmNk?mC6=X`vWS&wys>_e&3; +i=y!mdi@&p~S22h>49YiU>-e^LI?hx9q=J9bHfGmd9ng&Q7NMtCO74nVnhJv<0C<qO0g@+yf#&KmMh+ +K&i*4&G6-bM0HuKQ4Us!4kXSw**j%6`wJ$+;#$44=UM7k2@28sJ16F|k8XN@Ql~=q$)mgR{E|vILNxg +Msjr3u@H9+#a50*UGG1ZTn9eyW;@b)U!d~09TZJ9tDc*rcsE^EZ<@ssKRf9q{ksix5@}@MpNWT7-a1n ++!n<%xa9*{Pg{S6RfRI5$T!c%-Ms#F5vlvSe-g4D38?IGYAvH%8~iD?^$@nDy3Pr@3o0n$sZlIzIG*? +?%KF)P)SVIMko`vSExWv!Mukc`;LGh~xyu>!sUu<xVFmdMH1v^C&;}UKFfxA(xV52Iww(>Q15I!3=g4 +HP!%9rf+g}MWler@nJRAox9a#Hr190;9rweFCx`fzp#l1(Wc@bN@$;C<85;^R%%i$tBH$+8-&Tzc+4v +yqcHnMn{h2#!TK(t}M<EPNK#Y|KgT62Z*kO0`nTr!$Q&j7MKg&NV03iZUm;2nGo_SFcPRobw>p-NtJJ +oF~5EQMf*O8{ULIpixd9B2N4Oc{$Bj${Aea)fL++WtYSW3M!V8R|I$xad}`Vj9*E#=*<(?b<De@Py|T +7tRilYT!+lk~V4Xe6GJ9$I<8dA;7^&VcDd;f<(^ov%kmU5JG@{0semIA6K+vCBrAw$7SwGHo<%!@S`a +7jo~==chp+6#?Q2N;B;LTKsGlJnuUHBm#P<OofE1Ur}nTx{5a}oNGsDvj9uQVWDkThpYI^EGq&3sF0g +shlpLeZZ*Ehg<4eB@ODEN6|K-UwnaGir*L$I04Jm56`$^(mbq(^%67$wu_*`f?DYUG?RG@-?JjD@Uot +>WnV|sd@^q<Dl2T^*$M&irl-aN&LJRmLaOh!0!Og$AdUkZe$+hM^x&?PC9lrRqXE_<}{6YXek=dLS4> +u8ve0P>pJFJB>!8`EN?p@<iO3FR1==`6IpvHP3qoz@qI>b6*(wY`~n{TJgd(z}vPf-?{v`#Mf=r~8nf +omZc>nSxi##f=<6G|J(OG8pJ57L-yl0OCc%QT{fu&Q}BDsW#cwbFP&w+-|;C--1Ssq)MLKfF_0JI>01 +bU=j60SJJm_a*-^Rodx}1fHHGrU|5H%PuWbUln2&))Z4_PYfpWQaDh0b!7dv+gL|Qn{xzmeCDfJ<;y^ +IjaD4ri5X-YGc<jnbG`ScUO6#Aou(<^=TQh8d*Rj|ob2OXSt>Ob4xo5znr$|H^qP?9V2;qCOHE&v6n1 +1j8o-dt~&9EWI7eU2-b>#(M7A>q%f3kKQX4y40VecYpKLCOhKik*mkR+^?2wdmDiw4KX(6sm#H?Tp1x +cnoKhbQ!w?bI{<p}7|XJz1LzNo&zA=W8sq=WhU<>XjBHp=Z87HaIyv=@rDQ=0iZJ4hzBl+L<1r%(k%H +U;FqF4lLtvuYLvQYVqH2I$+N{L<qgAjcc40i?Lf5v}f+)LO0)cz+3Dl_kn4DBi_EwVv40=KQe1E7|LA +F9~=1NJ$P_in#{jqj4^i2UlBoFVwag<Ee{a+UEuCyyVc`KT;B~Z$|Lwwgg<lC<7Q>1dfcK+P>&}ogN< +#<E!yYja3YD1EQMFS0Jg)8*dEKg4jz%`NDdl1fk#~f4}B$s2lKFq;l<kCq=cb|4UZy9Nh7+JG(v1!px +D~lAPD&nSd@V%*O54K1O&FtXb`Pk6kKY>Y)R-%vk*k*>s>nT&zH^A+Vk)rlN1~%$nS3=>C*h_1ye8u7 +~u1C8gMe0CWVX4+IfJ+?UjaN19WPK#ayeNvnl=6bLk3@5{r_8cE{uN>jP{f(j>B`mDNAvy8t<Z1HBA+ +1EJ|z{KZ+&tzJ~FV`4tbJh>UR>TaZY%=$UJo0~nmS6wF;Z=>DxEDc?KwAm&Yn~@r@%=aLZ{(<&B%GM! +^3wo9UJzECM%O>OoJ%@vt?3dUU+a(zv>Q>eY56@wxA9gtvx-3>^p;<zR`s+C?R;EJG8=_uDE|CA)TvU +AkS-q5L18`cEM7+ht&t7?rWiC!aMbOoM;mF&Ljy7$mxT=Xc=fp(8?SPz(u|NF_r<DNPEb|X1k=z(crs +4P%#H*QWA%YBxBH}r2H+QKCY1n$Q4tGL1&Xc;(E;LCa$Z4h=?J@AJv0Q;iVPkn0KA^xWC#e9cxN4EuX +`b`6*;S0`Fk+EcLxZ)XNghGTp$&BcKQrqGyi*Mt%!gEpVhkVTE3lTAIDXbJzRMofaJ&oR4$EA30uL4q +$7_F1ATk-aiuLFjt^IgPJW_G9Om+f8Z2+f~w-sUsyZ2}v#DA>DICZMc2$}U1?T!70;XZ`+jSv4h!5zl +B5wqj{u@QGrM4V*T{QEH+(@oP!*R>{&ynAi9m_H9Ol2!9k=BY9d-O59AcxW6CE#jeJJhX&|GI(eO5B2 +QB5G#uzI;(b)M{vcjb@(Qdsv-VEh~Jb+psc-gmR5;zb427Fq3DPXBNdQ&*xIBEWX_$71(UT`_Ms|sm$ +slgzKZwp;_+2fa!^G&39T1Ala7P@stki#%1O45!dAIc0Ja2jY_ca-br6}QwQ2?X`0B<L*Rgs1a1T(E& +$>uSy8!U?zi4^Bd;@hgEywv0rcBGr+4rz7vBo#D%)cCut?@74AeLYx>Tp}N3>38-zj-6E#(Wc{Xszc_ +8Fq;+CuxSlcV}rg`h=LRw&58222qNUV@L-oj-m6Rpfy~Wr6(f?kf`M{o+fTr5MZaY!@D^_MEhdH;r}B +d%p(xqMB)5D(pdbSE#fo3r9Bb#=bR6OpRfT=wTaLCRN#j-zL|vH{hqB$XRjA%@;A%k<TlydCVSdS`(v +JNV9DHv5IlzgvN$A%?{mtYeWiX(``F8o%0#)|Fw5Z)QBtKA{*gvFkrY%r4Tqb;X71^AHBTHuiJxGN+N +j+e;x9hjx%j*u>9LNeu&aG|U01u&9HYU#_$Qprw$QOe#g^}~1@GN^7nLjK<>vl>E%$;Z2%FMqdeaR@( +I5CIu@o?8`o##R&p(;f*Ww9ENxn@nyMd7}mM6;QW_MkAKAo9ltmkJYGqS`N>%MK+9w?S3f&_uarRI7` +tS%Vj6RYPW-yIGJSw4_WN3t0i0neV&G$z^1n**?JqGZ$qJs#)tw3dE~EwK7NeZaX4uzC<bZu%$M_qAw +0AX7tSbWu*dpL;`8AyPsUK~~_Z*G6@<sYgsPQbD{;AZ&f<Z7#dCf!xxMREu^sI=J){w)Zmf#mrl0i{o +1RC3-WE38oWkVO@7vh`ZMppbt;C_B!g7JNZ@=E50%zH)_^;X5p4Ki50<E#K~F2IcBPpegIWK!dyrwH; +`8lD{4qK9bbM91nKt%nUT}6?)^Kl+UPj7`xrFQg1VDICQKW@1~ZcXSV`!X$_u0=HyowELo4x>t}mgT> +!5~5pa$+Nz4jQ*n4?#+qp@j^o&vIn83x`Ajp3|BCoY?U5lJ^wCx$>3QY~qs!U5lVurmIft@7@uoCAAj +zb4ah;N|sZV7*X$``g&Hy(lrf#1EOJ0C`YhjLKt%p+DT)I37FdXCUE`>A*;!Qt#4g|I-20UK;s&-$)) +6#;BO1?5fxJ`89MCBnUvF)7U<;d0&$*RoP1N-AaFBGwGTelFHAXhAA!m9Hst(f~t32ZltC;)3}*fZrq +g&y`Hfh!!aGT6YMzx1ylm$wsIu^0t;6HJdQr)c`>t+#90{4sCMvPf)Qm154Q68$W|xG9|MF02h}2QXo +~@dbGhb`3o$e4m>pUj;XrcIC6{c&(f%4?tAz%~bJrS<jSw?2dFe2~wNnj&to?JPTD(dG4WnOvt*@tbU +p~W+#s_DSMrQX~^m>|>irU1EKGM=WS$wCP*HCH5qBn|r&N#9>3)(x>1CT%67GO<=<9n}iS$(`Z>1&7< +l%Yr+t(_#>w4%!Df11o#r~Wq#B=f*!=g61Jt8(~(5i*NxG!dWQ>P2%%t+hWw4q*OOb}2kH8BkDzH#9F +J5SnKx`SvZqoCl9V?wkv2ETgK-cxVIi>$h?^oQ*Dg$n&kS<X4%{P14u~30D$Yx&1=IhHkbTescv^j+J +rc*v}8em19dtDm%semYDnU#8>g^1`}5>PBf9VE&7aCnE(ildQU^?nKfS5eT`n%5+@o&-=|+IuDjpl71 +z~yJ)4&gmU7x8RtM<Rf^O!f|8Z&ukrJv+No!In>VhAzyD~^shD*H!Pej>W7B6e%C!&>008nCHCtUgSz +--dh6$p@x-IqZgG-2No^r)dTwgCCFvj%qyS~zGo&AdYP$|X?a#U&&<b&3_ba4+JI*-HXEr<?;j@Kx-I +41#+gr%~!Oo0QbDRQnol+A+N!1d|kdS*lZ7<Fy^DD#yvvQyR<p@v2epM}K3ZHQ21*iLiN3Hq68Cq;P> +#jSgLIgKEN)oqC3Zp?**c0PiJr7@KjTKPYXIS$IiIe-~`xTepns@3LUq!X|hMw(zle4ZZBFcIGr0ug1 +MoHhuxX4ANu`GKK=4fxV0zroNbq0i!yI@A)0)I&p?P+3a)3I2plwc!!Z591M)3e6$byY1Oi~V;j~-KF +2~orLxRAi$buTAY%|v@)q7l0~X-OY~iU+?Y-6nYm%^wAl|M3WgXOu?$NwZxjNQ&j^xXp;MgYXt>?I?V +>tf#8$sY^=`;J9rRzTR+=bwPCTm6_=W58Q?^Vy84-P_2qO-}`ah9jC0*k&OVcQP<RbQt{NJc1lh~_dY +W~<IE<*f_bW4ndix4zN*28kh2q?c%eWCCtAGB}Ay-@MPzGfHN<pKX=i!v^#7#EPrYOx(QPZ$2Tbb-8M +{wKP(0Xcv&Snu*Rv=)DW6Z8eBDyME30-xmT`H#<@0`9mynD@EQj0u|SYS+pl%rbDYOp@%cP`H#As;<L +|D4zKI#yt%HcmGOCVOv*TMU7om3HhH?2J92hGowsE}hsx3{e)C>`&i3FL=vY!-R`3HkeAmcY#DQfto8 +P>J(%3zg^2i%N1@M^5q6}9fnTlw%C>GYB538|Q&=sO)06sEmEH+dD)bxi?=&lTJsKln5Ll4{J@M=3?y +4qx@8PHthFwRW&{B9U<Wepk+HXD%-FCEzH891l2eh5F==RXC&um9BYJ`#s%VefTzKWmoqvXmS19xy4_ +i|hJ}>m-w>ZTV2x;5TJUYs`{)uVgb}Y>|1pr)}8@G&#;28r<bq>ug2lkNi0&f*WAo%D={;VNaDY>em) +!i28M=k`7Ggunl}@8~D&R@S$zMp#^gG!E{4s?Nh@muRFaynO4psmV`{$ia%#>umeG(^ehQ70IYeqi{E +L$4FJ2C)3k!P>q1{&uuE;uShu9^Ftib;uxN*7KabDXYPi_A5kg*e#8YVDtX!=VS%S5<k-*|Mi06BRsL +wC?K5dq2D9dAous$BVKnDa5+XbveqvJEm{IeRa&YJcy>I_nY{bNyn&vxAZ&1jVN8doToJD(*dH?a~nn +9ymR`YE!HWVEr7WZRuuEm__aT0&M8FU2Udg{-UTB_m{g5?}TMFLwG3!$1v?de*wiAs25GtG!e0B~qwD +UUV-AVVm_&*?vqfKZ~HTY9M4;;~hF;a#e-NemiA2ipOf@2JZ4zgXQ8~Ybu5!&BPo|59DalKf!aMBiL& +j4k`2XBk>{K-GoER{y8O@q0iRihN0&GLl(Rm=3&Z5nDHY8%@4GZkXQTg%eX#Jx4L2SzDED;|7K5zJdr +wS6>`YHI-%gJr2^bHS-&@k8|K8sfeynYvvRz^4Ot{JVbgNw#lftLgSmZ!VQG$3lT16wu?2=B=TGlY(q +(2x`#s2!B&#c;g!`u3dZX%`=obb+SdNY@9Yz_t_H%v7ub?h;S?chbQv3AG0%2R9uEoPymxOaK3is{Z) +$!hC#CnHW(s=hW<K2tJ@&0X#_s?spqPqt`61&VNuY4S(9Kc4Ol*5@%Az|{=D?gN(8t?o<HBSi6l^Nr` +Z&3!T`KZk<+)A1ntU=pA=b|j@;v84?$uXYiz)H2$KJgc};JX?h`4ntyG9>0<M0o^}t9F3$Fd3pY5jM! +#rETSL(@i|Mjt8+C?Qi^j4hdq`=qFr-G)%3<X~2H{i%cRZgSHAYho73Wkx#VseaxOer9&AYGm$JJaV% +DCHs({Gjv|M^rrG+WcqpaGiM;1V^mV`3LN+pd3+XEpHYT`I5|*DBVEsXQR&J0(u)(&``9l#Tj`Bm`?| +7k>dOO~w0Q>z2dP}##-n*T2vJHK7r!k$=wI@iI7w2WZ0c50PC3u;BS}LW#j6pqzYq9S65*eB><El%?* +GEw|##Mqm!}u@y@FUkZ^idARWovTQiMtt)zfOs#S*-XQ&1KOM?T=Jw-VybwK|=5vv3fS}bDK(#n<JOf +vQ;pju-}S0V%&*Xy;)x(Ru|dVb61~jOUDw2t9{W*;zhDp?X&BXFb4n)0))8EV$-i@QwIU3>y${JMt2t +l@LZa>Vk3!I0Vt?g;P>)IxsF@iGJW0^&h!4yeiTkC*9kkcFFs8ie=Pl!sI|T<;Y4vX?i^8zE)xOIQHi +dZ5U13mx5OnL79n4I!g<17S-0XUbcnEV=ZS<<M2flBDWYHgy!OdebFVi34?Yp!;ZL1=nMVX#U0mW3ae +#1e<a4gJ6)RfkWsg`<CvcC5BJIdgWWvcK;$Qd1Jt7wM^@v!I@L;Hlc|<JM{syJUBLek=+A9zWW$CN67 +mm_JSc~rM>khG~uRBC<Wge)k(L2fz`g%j$%j*rgHTfu>a5(jAE9;&d*O(%3XNa4Q;+n;rA;um}Ea3kf +p#}U7ubx~yioKFA#P522A!4@SIR1kH)*`9LqEe?|39#MDK#3LDii)ROy4nNg-EwhrV9aiRal_qgke%F +?WSeZBYU`BDqLKlunOQy3A-^0jHwWC?{H%rFsS#QqyPu_qNzjjN=*%9%1N%OzfJ^Ob{KfTtKow`%DPL +vFYS;>GNUHJfRP?5#+q@RQ+{W$zLymgCmo=k4_3@tx!ev$_{9XiBhlp)Ji8tQ_L<*HK=(D!D^s8?#J) +rM%KChmz2SS5fXgp#oavuWz)s+><X)6*ZfACm<jTnoj)kU5UmJTkF%0Cr4io(AIdTU6HW{eGX1Q?WMI +5u^QJpt1I&x-(_mpDUm{D26E;X$n@9l&sEmR#J?S^rFMh<3+eTxPVbR;Ok;k*U5JCatr+K*`ibA5Or- +r*5OO-lPl-J!R{xw~G}aLYIYh^=OYAGKZ#SvBE4!Q;&SDHYbG&v;Inl**9ozJRATCM)tG={vFFh3m_C +s$2(;nB@GcVN!jq;RhWfVEn-C&`M?~R&9vt{4qJS(2^wLAE~7bAXsbNAdZ?Feh2m+&cxI&EueLa$2a! +8r#nFp&jM~$qjHDYO8-Z&$5rwfG9fgLPXrU>aGdAlfu#a3o9XchOQyJpk!*-ItTo4WG0gZ?iUlWO$3I +e<<x5}gse%}-mta2eM+p7Ki5p3FXL9E;gImLBosLefE7WcwMU)6J;^=2UOM{T7u#dUl9wWioVzxd8>h +%P7{DR&)EkESTeft-3dWS7m&MXcGc9=X$BA4v}8^FRs&%u4@~l9IJ+k#MT@Hnb}}jjpX}RsCaL`<)Hq +r~&~q!GC{wH(pD;G#B%SX24FEVTW=B@N9>_BTyb58vJ#@Uo_aRzZkOz5gYo$AC!O}UIbp+@rMe*Q^TJ +Q{D}tJI?6I!LSz=V!MT*z>gLx0HGh;qF0<h^G7x<#rK~qqu>t|$%>uC!Y2TYkO1j$Y3`toL^hi^iP4L +P=D@8l85H%n&lK|9BsC^rgihFm8OJ?`mS+f>R0fA+TEq=cXE$eSk;+T^4OmIFH_{PSG#zYK!PJtd^L? +F;kmoI|Ud&@uQDzJ9B{+w0YY{LfH0eg)qdi>CwfO*6xdJ0II2M+?nyQa|QdS>D?L94j_iLA`>r^yK`I +2>BDDGumW*A#M|B(HGMTOY!HipDgXxQ<kFAyFTMXDjLvyIN;Yosy+~&ldMUyZCMfL`HUEIcD~8kSF3i +M=q|HSbLN22p+bD=6!~EeW>=6Lm*Qcp*(HIq4;KxYz0=&Z2;M-dIR1(*3Ec9nEG-u9Y_UOG!V{w;a7& +?uQ#mf7o(=K=enH_n*{ms&N*wmH`?Abi4}_>Z}~YS;LC<+L!f48pyObCT_f|8ak9Qdi_klgaVf>hTgk +v_kFwjlX7P=AQVj~`zNC{<+XYG7xWilZ!v#i*G6>)}oi%i|y=hY3RFCxp*f;uuSor1Ly5wn>#L4Y|Fg +_ZGbdYQ#hHJ|Y#+A6*bM#6VHXQ+W1UL=%9`flmW}}Fj`Q9(l3bB1EtDqqP+RZJ92mEZGRD(xKo!(r4_ +X<3`TNB7lm2L-y?q|qU!f>8N`KGF0yo{u7GbHmtfA~I=FT9}3TjkA7^;Miy9*Jjw3i6=>Wk%&8rKl<` +QO<l&Ha0_%C>F_=$}X6K6Z(|79m`}xnW4R9c!6#xie+w(FH0a?^pO|UWEnToy%2_D*H5|XrwX-!#j`& +GwxnvMg`BQDZQ@UVY@ySTf4u~3fcaCXJ&M)fpv%OHThRQm>_U=Q@f>oEdz4J6?2fcxN?9P+X3?!>kLK +FW`HQ#s*(XKpE5Er>4*4{4pcsxyE4+#oc7sotI83ZSZ&B&?ElMUSrv1j&$acbjK20{710HSZ5P#TbLZ +9Shyi-tL9bj4ncPor68Xp<3cyn-QG5-l;Yix}Av;0;_!|~%vdMn9a^^vj=#&zID!{|FGSs7NgYEGIm% +3C!iUh^8?oGR~)sk+DS`6QT*$w6zQIZe+2fRSR1!!|?PHd7EV5o%STRz<`eZ(RYeP#26T;Q65@K9d34 +Kp)k&$pSuKNqQ>I1r6WJj`?!FC|k9_Bv$TDqKlct3OoRpjn+<c8IVDvA@VOFrq9+z^{nOTA<(<h0g%D +iEUq(8&U;T-AejW^GjUz|WN~AK2}9&XxNJW{J>K`Bwi=Nj)N0guHbb4on`LvmKJVh`@IX^l0N3i-q?P +^GnB#MTvECc=)wAZ{WwEzoO*!rQK$xGdgRvPZ-lP2$`C8v+0rtb`QqCv4H7{!|VvWcKy7$mcivfP0?| +)Rp2Y6wN!*JB8<b7v?PGfhsL1mr>5RpL4%YMNy?v8b~KzymmXZ|d-GFOiLnQZIV<K|Q{OQih4{}mt?5 +I{cG3y^eMr5Xj8oPa`=<k_OwW4FN|<VE=H9liy?p7bDK4g<hUD#^D8Qz6+B`MW?SQIU@?hs|~lo8*8A +HN}AQo(clVeuiW3Gu%x4m#Dy8^$}-o0ETY<#ic;%q0yD(&u&)=@T$-?zV>)q2&!v*2l@o_<7KO6<=(C +b5Q^=I@<D4!XrO)@ES21}8EF9^K(p2}9bhYsx4!Oq!=RQ1>lyL5KRn-i|0%%r0`VDSZuHStgzF4GrF; +rGXu|>`7!-NVC^kRvXIH-q%X_Xz61^XRwElqMXemb;YXyAWv^P$Pw2$Z&ZTlnA1r&jP7__j%`hNgEjz +Uu8`U|KL)rV>S-b*y*x!$5f_j18R-7=^5UYCbr_tx-ZHS*K!dyR~Q<n6dz+^rf&8z0__s`*fsc1xn#2 +zoHM4<T)Q72Z6P{`?iv#^(tHz6`J~ym%oHp7g?3sOS0&c!AI6Ol6iX*pLCIO+9K-zRwz@@+gu<@t52s +wCe*D;<UC85=y}Pfz9}Ez96inqMcr+&7}1A;&tF3Ldp=l1-M;zXs>;c8128Q4%jb{UbukVbcazoRJ^= +5o8^Oqw3hH%clI$_BfClB!X_trqwU(mWpp!>M)W;9?d9G4XrK)e@mUau=_Zo<cqJF0WZbPcv<L4N(kC +JtIzaY(P?|}%YVOm<jfWAp^6OR3<AD>%@>^xkxuqG}`&gc2jE!VpeYtOSpL5b)JDl<p<hF=sK!)Sg(* +W4$n-Km%Guxp}z6uXaJ5i*I8%{o+L<h-7&~(fypbWGll(`c_p0=evS>2o}t9N%9B~6nJA<Y{qHN)EtL +R#bG8!<G+TUA;pGwbiMfVz2(9KO4YSA&L@TUjQm2SDgkT#twqHxnj7XGtW$c#sn)c5Xn1BoJO?DKdYa +pCtyeJgs8*r!;~|Gf%{NkG2BOI=K#T5p&#tt%a+onNW)P!;mAJI$Xb0lEc$^hsz$hq3ohg=ce`PaLVP +KZDEf6IvuatJRhvA(vw*>+KNf6r}EJ1m40=i%TN~KqeodNb@~L8@*qBJ!G3<0;W8Z0K1~)9KDqd7kfG +K>QL-eK*;e)Qn2dE2WUT8!xVE_P1~4Rl=*dv!vl))pS97-H`-qc#8AcOObHBR9<~g^r!pFV<3@)=t9_ +rsjkAW9{PW1FBX=MSAtt?WBcs%TN8I4|#t-Pzf2Ja#t-lEo@K}zavHXI9AVNWzNizvcbl*u4!54Eaz# +C3IY=z5PDO+qB*u@&fPYSbLG;=2t%$zzXMMR%{_-Q0{?cdsWy&!p^flLhrE=q)ryGPcO&=SW(8PDVHG +%(CNH^x@U06vBg7gio$^dOV?a>U;l5U%9CG0QWa()$VzSi=aWf_Qzcb(HwT>y<WD9E@`15rL0Ez6Z65 +WmagQ6q<9xGV9mFnoW7luunj2xMxaLSr6|X|6w4m9*)GK0+Ao$Z=5pC0E?LAdrk8yh!<bpx^-#U)1U! +@IUgYP<8Mmxh>Y4NuG`93{nH>(Wul@BG08QSq7@|O8l0jkuRQDAi$t*&WK0sr8ALIz|t4?oL4F5@NFC +-kI>mu~Q+G{&|@!w8rm?OZ+4-o<!uD!}*wP0_?q@8^*V8V=T{=;!Sap&Z$0zYfVtBHPM7lKyF5TK>$v +(Vn2w72y^tD0`;Nk;sJ$;v&e16Q)w@Uw0}itM0R9pUaOV)YKAReK3F5qBDjrSj0zUw+3`8{c&wi&N?> +$SNRbF{s_k#`u}Wz6r31lHpfZP<KuJ^+I(Fa6_x}fe04~)bxkOPAwbVOo0c1wu27Ub6s#y?VUumFkLg +y^1k!w?dYm&Mlyey8;!HquDSP2o8K?~w##{*3__0Z&$6tpjT?ltnfV242ha+2g&dk)2HSnDpS2aSQ+U +VKbaWO6&JW$+$^Ra8gy@2@82-Fk<=cj#)ocfJfYwgF8q~F4ul;3vf;8PsX@|Ud^WH>_weR)V`8%TZxo +J2$Ul|gdR-afsPGWm}?5vM%3xsC>69nag5?|#>vEnNHss)=@r|vYu_dMVYKYSJ5G!Y2-%1|(hrV@j=w +M5EkfW=?#0L-@RB_1cP3)qgRM@8K%v27q;%i)YVKRnFMz^l%93GWzKmtm6XBNo&YE|S!4n^^HRR>)d> +s1?2&5WfM>qE!Bj#=?J!J=eybzS#4c6na)pk9Df{QRG4D#h(vILe1DMr0AB!itXru8Z8tnX3&dItXNM +kQ^bmY(aTJ+qMq~~bHs|LlJMn0WttjYC|0~e>BVBjXcO|}i(TGL<5BOKKg+dPtegi@y41O)K&-gIid| +U$nN3tXE&QuDbK`CTfrx_)OF(XGwBdDbc+a$wFS9u|v;@he8nJNt(!t^;!5e;J@2|Z8?B1NsyQ5wf)t +~o@oAP|@xEEH*i{2#J|E60lTQxQg$@iWBi$><7i&NJY{D@J|>`Ole6jt`Lk#vEl=#3`Y_Ej7cD`wL1* +&$eeS@dQ<MzwugX^1}?idZ~vuvlTo3mVt;1Ezhg);*J2!BbG#Xq50uETAjK%6*aJJr_3$t3acaNC{X1 +P`iLe5^q_#xytK$6d-f0w`!K_u|RQI23a*0twn|5qj;pDrQaKC?a6d3yI8lBgnVsscwU>2U5Kp0b6sB +*Rqr$Fwciu)vu;VqUT!bIOsoUO5t@rJo092tXQfMyyh^M3nD|^Cl&3<T`qfRf-{$~Rkw(k>BM}X9h1w +@#v40?#SfVUcqf5n#x3FX|mW0Ah?Ft^KJOh=7rFV20rj(ByXLU#mHV%Ww^S2CR7cf0`#fGLJl}4~b&S +{Wobt7*9<wRR?1c4JG`P@o$M+hQ=jW{%4`1?*@#b-~hEK%!b;LT00xl(w>H#ofy>yJxx0|=(ipxoZ{F +F?j&cO+I^`~CFTjEWUyFeP}Ef-n4_6W0TTpA<bQl+uLPfgpWaYvxnQZv~+WrT24D$2`jws6oe4Z{-ms +wTMHro{w;wQQCn4tZyi_h<idwDH1o`71c)ou7QVx;*yJs;oah6cSU<MW&%oj(&q1K#|f}O^}#e=tJ%l +uDvc*o_$PBxL4fG;^oY}X&<AD-y6l8s-GzYM)jqss%r?L&0k+H7RoU{i6_FfX<j4R4wa8tk0<11PIai +J5uQp5OMpQAh>K_CMm4_>_4g?Zd5!5_Hy_H`8{GTVY*;H>{j#yzvd~UP?<a?`fB4^GSMzDX0*AofeDN +)}dzk)UNM5Rrrj}fOuu{OzLtiGnaX&!d4c$fBo16fnwKZ(;_bb%kfc6k}(#LFZMKo2s@9KHc1<Jh`M; +>HVdaVM0jGaUUDIwD<5{tK+A3Rs+&<7-_2zkTt6mw#wWV&}`hEJMkExDViLFjV>pT`tnLlnn9Kl2Z-s +02;xtSf+nbrnmZLBD_?P=Ly<qVbEL>P)?SMfC=%EmE%IhiV<{Nfz>oAVogqL>(7mx<&jCsz#3;fGQ0w +9NdkH*3_U>6xSS+@t?=b^d2_m;L`HA`-Oh+tJ~rZKLH>-N{$akF*qx05*IY=5pWuDmMa|fh;qYq-Iw( +_ZE|GI8y{HQv?oS4R!WpX<%Iutk9*(}X9P!{Kn;a3zY(KCDYl=8hE!HaQR*$8NI`Brw1^l|~&w!Qon= +jyg>U?@Vbz2`#4|N+F*%atw5*?-H_s2gwq}|d*q#OO1EBCCJkDXN>;GK2$c6LK2DqRs@y7x#MoP6s6^ +AUrcnPiOKteyTNuzdhM*i#_jK&~+xFA%vUiQjBGoriTa#^0(&{mOJTx=1OkT}+ru$s#XxHM(4^?4QID +P<kXKi9VWTqco6Z0AXQ5Mg;BK0X5hopTi3v`$)SfhO|l~HSgBoV0f%Zx|xbtC_b`|6i8~GJC=A;BJs2 +s`86cgAjyW-fLyP^;P(^3r!e?LB8b?j2C;8gKE`9_qjkOH<biulywhR@9`Ylhq+`hyv}Q2)9f07xWEt +Q(LyHjEiMQZM>V@lqzzGquqyf{;!~Kg?1dXs+55&lHs1nZDg!33)DYp?(!7oNi>@2n>M_Q??Sl{&$M~ +;2!1AY$HF7&oQGid2*$CwDJOz>W!a7G!`>xFtTzKm<(wo0A`<qkDEM!BgrhcDQe+VT8l5P`R+o-fk<P +^nFyfmQ2w!LLa#!1+%B^sH`A(%s(B>?-W#V*HtdKLH>6l#h%v6?OzAfFU~2MK+NtMmCYS!pbPlT4jrp +3|w1EaFRD~HgT9mug7d6*k+l9k-bGrys@uvOT1h(aVXzHcLemgOISNopWs-ZslPJE${O{5TqgT5DGOB +<2VCZfNx?h2Bsu|AZe{s7PugK)kJkcd5X)xT@gl!wZ7^Qx*%TC6VOB-mlcIX$LZ~oHPocxxopfZ0cO> +u+2j$73^o!kKdi@eBTkvuWJUqV{yZk-wf?`EU(~0+d7C<K)h#GgCge}>uB>}m`^Qm5=n=AQ8(aE}(Mc +kckV6;tIM}uLkbsv({T?QIXd$ONC3A7}Pun;Id24V!-3*N0xJR&HI?q-9IfMljB4@0X@)RLXC^#)958 +As?IH@AcysROiIkt_5xDPxRAXx^m{M>IGXvLq>XZ75HaM6W@vr_7;$gmn!16smn04Ne*&ON{s}V$(LG +h0z6*=<VV1@N}6Y?v=6I9_N$9PMITVea|%e%7N4I3eAMINF6!N;-_}`?em8=B_LxFyz<-kW5y!NQ9oA +{E^m+BG__k>`a6CNf35_p2{lZSbIys?mQk19x{qI&y5!1w`f`=A6R)SQ!|Unml}5TAxGtw&pW<aZK@w +bVveOk2<LHJzEomC*sjty)N%XQH4@5$-Vis9J0j7yTZ=?{V+PWS}=GS}|^f4Zyt4$JKveV}`aG#Er0N +d@&&urQOJ9-75kJgQe`IxgYHXpsW@h9dZkh2Hyg=N6y!%n+=*oj;DW5eDWA9m~thArbFUOLjR7pv_u- +7>f*cv^<^-BH<SzSvKSUrj+?0U(w<x)Es;d8Gx_9R__)j$62R*$%p04(~kM_XA{!qL68Y%y!XrjN1AP +ZsA@)7K8x?EYS|k&A)O;mwWy02c(+1oji2hd$i&AV0gtya$}=LgFoZ<P0BdGiMuY4VZg7Z;r%S|u5AG +9#J1}D{>wKaa$zh--sc~QW9L!K&PEY>J)(FuItg#@#r=MOKE5}%F#b)lW8o<#a-@`tn>CF-h!mAW)`# +Ecddl~p)-~^w_Hzsx*~1<~8l-wAg_oF=33BmQG#9Aae2XhGu@qh6%05JrzxD5A)HVY(l5%mQ93D|fpL +ly0D!%c3E)jnGTlCK!JNkVjJ=Zi@iy}hY0`|LYl6w8B_{W^&4Rk?x<{R(9(lB1*%kUoQ?CJHTzC^!cI +R5bia=+vbSAmlJQOW=UpZu&~SN!FxoF;gai!~gjk5mnKEUokp&=ui0%4-H=>?bms<<CS=iMt|yhh8YA +7VO4*3#V|6pz;9V!%_P{M8gSH4O1|+prQtCs)K2s?qGIj!2**qM9Z8K^Qgsd&<I!-2<}Lz=k#5~V;PR +e7sby_^B2*_0+P^0S{rv4vR8-E?4iEfibf7{*zwMXSSVu~+B-~c^bWNNAlzrblH9d{9~dNE^x+=T8^! +g9G0i4AWn^ic>$#e4=lX=!u$*fRAM<4Upp~Wb@QMretxSh2V{e5h^~+K6<Hj66vz!(;2J%R2cpJ3+8u +WB6#&&x1Y$hcgzZpw+LhJpsA0_Gsnga>LrqBhP!?j?n14W4p+QHg{o{($5`sxUQ-~gReM#GCu86h*jU +AynshEZOe)pd?c^h0L+Gz@;hCFU=T=PJxpo<|o0=BO*OEWxp?z&Q!8Pf;9`uEIyZNu%+RGD#@-wJDga +4SXM9uh*|LcBjR^$kWgLy@ZYT6@A6nH>_LxpE~3<TH@}S&k@5PzaSz%U$M*KXX-Gd*4t74e<B|CG%vM +4y4g>+wQ^=Nz$6=eI>u*0ku7QsW(Gojn-nfMPiA3$yqB2HQ?90V-lAKFLjT5x`lQ7sR(8VM`dn&VrB0 +}u?SW7rDJqwr#b#H2S)TthL8xOJ@OFiu*rehUFZLw|$@2WQkQk3f0EzsJqMyg;3?7YURQgZK^Izx_hi +3zNNqK&_Puw#YcW-(A&-=uo?S_6wdHyf@#NnN4`gP^`|4HhN!!ufaaC!c_5C=39J0W^EhbWD`fWM@mk +c_qvjYLnwiDG^W#K<9<m&o28?#gi`f4kmqc^UbWe)Ac9nIpXo2~_st&&URQ&~nmd$)dNt%;Q|1TILZH +H-1W_%riQe>aGJ;{>3^L71yO}BLhT4xbI(s-Zl}k!^;|TMIHM4HC)UCUg;htb&}&VfjaT*F6zWP)o31 +sL}EBD_q&idF+n1Z55gYKHJhk~FZ&XRCTpBPjIZVd0wy4PA-rS%r(@~22VtO>JeXqS;W=x9JS^=c52f +@;o8Z(qc`(Cl2*GNoG^3gmhq{;WL}u*ybp&qL2u;=r$G(d^aO!#KrBD<8!zsg0*5O?fyt*G^brFGhp# +SoXfdJIKpopFFv#6v#hCAp}z#3AM$rR)7QUakQJmGSm#C7Wr>vpnW-Dp@kSRkf>EMxfS{)Ln^=BgCgX +cE`CF=eObznd0y;H4QLwV<L?84fJ(-wVomoJunMrUrkHc~Tpv7=n(9Aa^HBlUM;00dwtCtYx0mpcR4R +6vd-lht}9Oe`ul$yC)gRF)vCTvl;bep1DdVcKOzdZNcoyPNkn5E;N<pjSkX{aOpU8m7NHJ9lIlXf1?H +4Pi{<^3thx61E;4Wcqr2<JA<}~PG!o(RHYCm<Ti0*v$ohzcH%IKI;Gzl1Y8;$7K{y3Psck_AOYiO4uE +fefZXD#9U+!IGRQ!OfzK4HUv;@4XY&8{@d2Vy+!daK{;;DQ^ci|7h9_O$ASAwJ3e>yNIuiA#hU4u=5Z +<zP96>Oh^rLrad*aLrL9+~W6L0J#y$5&Pj_XI>N3~cn?)+N*g&<>;>^Ze`u3Q{IBhhYS=?pnM=#=c)T +`Hpkgf&Ts`*-IB!j_KSdgVS^m+z4S77jEt>EHiGMAYi8^M<nj2=BVN_vU(qvqSU$i>-Ts;b>V%Y$0z} +toSSE9)JyVDuWW=-0e)foj`^vPtIw_XRf^a9C5+k@Klq#g+5M1442_}W+5U44Ms8pH+YUI!5K+Z0~N< +&^jRz5ix(&O;wcMh+oz*T+~Mc(nuOEDI}O1qL5@zRQ0l_?CjX8vgV9>YsHL?Poyqxko;Tg}hr{E4or7 +es2}GGLz}eP!U!%L%`9<4bE{Ito7>>OQ$m-MYK4dtYecs<)!0iw6;t{`Hfct+gj0+gX8ot&LGp1dxam +Shqcn${up$9_QcR*|Yt`FdC;%jkpa*m<Zu{WZTT*G&*my=C;z8=PX5<m5(ZpTm9YcIZ#xWr~0><<@SZ +FW6$hfOMhtlsde8aga`4oggz#3?5v&xv4jADV=ElD>3;pHY8T`}o25Z)6t1#`%Zgadn@sOLXD7eCyXh +?3azkHTu(h?7;7M2eS9qp?2vUbmF|^IUlV1Upn#KedweMk0N{m_G1UGPh21qyaAB}^y2%x7ds8dDC)& +)v0lueUVIC^I4yZjqr=jFpNj81tHldvqcS^=4wnJEf*KE6@n)8#mv`o)P4UkB;^DrX*|I6#nKP2-OmI +VA)YXsx41O|u=^dd)c$!IL|6>?y!}HBt!;<}xAgp>!E(XGHJ=H42E(nFXGCD|!V%I#sM=LA9qDB))qA +vB^pp`d5<}Izn>UZ#qIFsjLDDxd2c}jcmXLNVx?^=-ybbTuTDfu~9p=1EJ%5^6fJ4BE?jpw}lTN1M`H +dZb_fl45^A^oRJVy9$wu*s+4*J-`s@0miY+6$^y&5=W^I(!v76kBLjRI0Y?Dc;ayQSTZ9-Hx=RDcq{= ++7vu0gSsj^g7&UPp&$iNdA_e*G5gXk{6F@-1un`e{r?OX8Ey`!B#M_&@lvRuqG4z<GNS`BiFZp|K^T- +mn1&g}@`3`bI8s*buDe-VZ5Ma9-L<P)ZGxI&S)y5)-N>|F8ZEjhn)&{}&pGEEMuckjxBI(%{`<l^&$& +M5InTMD_dL(>ydiXb&?2eUG~j@V4CStQ>H(JtZ;F!hS2|Kw5w0p@{@QwsY4=~m6=_@IX?MfAW-s5n^x +Nz+dz!sH($4PFyYxtsA;~i)Iy9E%4YYWgJ+>TkwY%2zcfL+*igFF3p8@pKgMJJZ=hNJkmegj?JBCfWz +0oGmVQ+-V^OiTn<T>gM@Vw*Mx0BJ~^;vrd)S38wPp(O()LPfr@$}`&b<KE2lGT02(|K~&(D8J3&NXB_ +>qIhcsdcX2P4RTP#&gQs)$|gbtMi7NUZS(sMBT?bDKpi!gQlux*H!C-i~qvd*@pg>#aqj3Olu70dUzp +cX|AgbFEsTu8D97zs^ZlkkOFtgmEna?BT74&!euy2KM*d?8wPWfD+K0V@K6qprRzEAcuGIz;*%PWk33 +0BFDhkaKa3vMw3+Y8SklZM%U-L;mc3s{+*=OPmSU1nzF<>Kp0~|nM9G=QKR7jVA&n{zO~ZN7diD*dOR +aOK^HZs5mCdfPz@Z^UCeHS47a?UxjS2Td>b}mJNB5L(-^T?t{NzTk-rPs$W-h5Q0XOo~tLb!d;nJUxk +(8$UgXH46;3hd=<!Br~hUUe&ga)hh3x6gq*c#QC2D<;?J@+4#C;m*VqLZuMEvD30+?`D2htj;EbX+M2 +M!nTDtI-p#>>W)bETz=Rmy$f1i}WmEEtDK3YhJfPkNI<WyTqiFo7V4-x304^7^-L~W~o#S)sNA)lgjU +0Zcn(y^9mh>o=j)_E%n5u9?BpPxF&@{yKEq2@|UXGL_#y3aBI!1qk@Kl>Xk<o+abQc)4iZ#<<Xw*C~M +xVdW3&3O^9CX1$LS)DW4w~ozgQRDkq^o>Gq%&y_2@1tG;$edMw8V>~;r*f8`AbZ$_c-Ms-ggPqTg3)m +Tyk^oK2gH-|KUey{~GzT6IC?%w8gmbu>UJ4u(ftTAEcbxY=YgQ&X^E!j}{Bz*unyB~FOWo`A!dPCLk$ +-%Rq*R%n3<Ee%jDkI@Ip7$mW`dUsOcKCU2($Hv0J+(B-RB<tA=`j2T8>;Agso`bYT(jphI^q$d6GuEI +0q(cdtCz6S=u8qY#A)z??&_vl(m{<mmVugF(mfiB>xDjT<%`!j-wc(cGaEI<6-RX>cg@QBFJIin+>z# +*v`dt2u0O%B-BLgP5+)_?o+yL+&Y=EY|3_cH=lQ<rDCLUiarfnEqgPV0-<2uET%tqoOXl(=xklPZ;p- +hww+@#f=Y~7G&<;FuZ}{aUPOZq)ns}ZmL*+NZk;g8Im#5vXZ=&0b!3?6>^!GrXLPp+R#I@GU46e5%>{ +a51NhzKUH2Do|w4|P1ecT&F<)j@)4>zy3&y~%f{N(B@>bY5uUu#}ht7mt`3E2#ez&m1}2LYl}R@W&}w +T&Tqb972t%E|_}k$3Vv+iy5odc9G0Kl`aN8LECo<3wdMDC9F}YSE-O%dao;bwlWs&h@3fh}4Nwc1@ml +)R^+wk{_ehm@PATFZ00@7<lvIGCX_umK+G6y*MIZVtIb7{t^nZcqA$iDH-KCdzI(xyq2>!tkpqbp8ZY +3&hw2TpQ<UkK6LcswD9%a@yX}LG@)BT_cE&DI-6J}?upi+@rlQ2Xyga}Dhz(N-nibaSP@^wuv|S?x0> +G^N7Zc;`Rw8%l%z}8X!g9y?{|KO&$5-{=jf0hJdzPP2}2nvdbZ{nz-!LvnwX?IA-hL%d!C@(yyNs36w +4?fiQ}X%5(c&D7FG4_;-xJRx)V}No;rRnriCsyJPtMw;dO*Gi<&(svm+Uv*Z7$@DWggsZemB(?h$tty +1Epk2Dl@+0H^r6;QkaohV5YqbyDZ^i+>bK+QN47Zy7JadNz3AW9WZe-K28t81xmU8f$>E`VXoqv||0e +lJ7QmtgkuC^R6}Fuwm_kV#7`E%spEd;u=HZm*MM!!axaE=5)3$z-1`#z@b73kXl5})&;pDg;NlB2_kX +9x~5?FG+_wDdJg_p?#V?4n@O6GvaUxB<MM(?gC{^){)QY2#G}#YCr@Z(taKtF%<{|((_86FOtq;oi^K +>$=CEdRZQ*i-rsgb?DLjhA`ZkfqO@DkFt!pljRGjlUesaPP8x&@UHHW2H*VNHm1!Q2l*hC?Aq;dX4i1 +e}ydqT5FFfq%M6&6KKv9M-Dky|Xe8Od!3Ni33kBe^T&E(lZW$+bC)OD+B>V~s*7WUOi70(uohq>yCXd +5M$TCjWRhW(3x^Eg-9UKr16&K-P+;0KY=w1q8PsUm<A)l-*iD6-|2LDQBFnwSYoI0WrTMerEZY!&)fE +nAtZ`0mWvK=qFskxNagDlRm3D+Wi(Uo>H|<etG#ctLidQJ}8TF|6&s5Q|DJcSu#E1Zwv9ancNg|qe93 +~$gPpwj*(jf=;9?r#WyXA+&N{UfT)<Gf2@37;7wS_H1tr4AMt%${QhC`s23{c#J%#dPm!KDsh2)(8rQ +YUKc_TJUvqi0yi8u#dhT88AL$GmTHMC<QC79K@`!7}))4T2hkA)Wt1@0>LXvll)e~hS<@dGvtiV^T=Z +<8II-D`!O&8ikb_?Q7t32zPY_0n|3g)peCrWcan7a#OSmjywPHT->r|zNOOZ@i-{(F)Ce$Rg|@Za<Nw +`EV-j9GrCwz1#~K3>B#HB?rU2mGgF#LA{8NaDphw)c#u_)e3dN~lqa{HBn$xnibjyEKN%`?&Uym{$ws +<Tm;SIfmb^lP>Svz(Z{2Au!YgU)n}U6r1$lF8p(R{-1LHdd>eg!r$oge}nsP)%=&;Ko#m3JYLx*CPn= +b{N2SoIL1pY+*HC-9lRNVymT?{-P?pR(cnA9g%ZEqCiZ$3W~F}Qx|v7W#N$RT*~as$##Gvb64$D;u5t +W^2K8+M*YL5*#Fc^2!J8C5f|zQieMh>H)T6XbdDa}CrgLK@bSB1&MR25!r*_Ddti}wtF{!$+L29?{iv +Y^sM1ZbpOr#8;=f~41j3;vE--rp{WC@=rv*&di7YyP-#3wh}JREgUxqCSuzp{O6(|LP->K?wV-?t9u# +~$P>UH$>9z&tkE70L%Z^;P#*bopK<x_r<3`p>zc@9cw`7|+&Gwcfw@&YJMcg-K+nvsL^YaT^gJktplV +l_ij8a6xqsuR=8Tf=T(~gRLZv_9GEPW0q%kM#Xv6-OHA6+(b79r&kAc&A<pvL?zOg)#M$Lm2f!Susx_ +}fvGx>l<Scn^_Z?;8uCtZ2`2c((YLOuVt!~ID8mb?=TEz2s!7ZCZX_xOXjy7<t5Uy2)qyf&#rc3$krn +3y-B)>nN#CTmpC@=DV0GmB2l*B6-UobLP}u{TfZC8fX|w#q(6X&Hq$r^JX1s2zwR$DB*K5{Odwm6KQN +8EpoKdRH^OeQZQauZEomJPEJ#S`s>P+gZX(=gOw*+1G(@et0m>DMQR_jyu)Xdeb2=E*;d+cSNbC{32L +#!U1*^?7=?g8qtg=A(N-40AA5GqdSg{<OkH6}Kb4&*5E=*n4|dH620uc}@33!ySI<J@<coCY|jPN~Tn +7G=c%gH`V`G!T=4t_%;P)2kJY&B`@@N2N??BxR3jwE6Yq{*Z$QIcrX@5;tX2dF*F&BRyU8Kw;Ji>i9< +py1rQK1#?l#J2HecP8L6{?q>by@Cts6Cc50|^(@bRK6gHvNh^S63Q6bMO*@D>OI3^OT93^^UpVP7Wa? +LjyMu(N=VF?c`r@0Y_u*U58!}09oKc#q7HPUd&+?4VMPD!`DkHUi*=Q}(VOAfbc;1J<B=b(&VKhf2vC +sX1TK-pRo20JJTK@M$alOt}@41Tosqr1rQDZJ-$V<G(c`Oc+lHi-pZ*a{o=$mMtTxcml$K;I^%3v&ud +3L}`5g$Ez&6MUfV<}Dg)^R(1>zLZ=a6266)R;|g9re1B;^r!g(3hcddQdrQ>`~eV*v(hSFF9yC_%QX8 +*%=;^WKy;fwn~0&qS>=0zLtrt@@zBWrIA)dc+zK6e!(Hk{H6f$ZDR<m4>5UfE&tZB=c1~XuZUmF#G#` +cdFY7Wyp!RX7nR{Djm_|U!gWLXx3M&8V@Yk=*uFcpHpV>e#iLY<r^!b0O&6-px;vq{cpO3JZgznEXd! +V&cnw5Dp*BM2C$jPyWgB@FB&=HGEBw`2sg29#qFu!M+Qo>Dsz~??zABPL#r~A9dc1yzuX-5#st5nPgn +;X8p1u6bk}a@SdG1Bp<9l6eGoCm2mls)MtdoQu<1E^XM5`pNeTUSToph^t%ViZ|ZJF4;wJ|F9w9<d1+ +;e>8o+hsEQFfHkXQ?f`JW-CDWx1zOxhIK=DejvT_xpI>7GJY0mv{-!l_i|*cdX2JSym2T*HJq@iFH)# +{R$a+<>h5US&Q<VFvKcP3WHJkgD?zHekTk`%01i=u2c($G^Jb^tjaQB$X1GlVXk5qh8$(SFf3MP2t$g +JDGUz9Bn)Lr$}*o8e`TmJ(`}ZDQJ5*$N;hF9z9{--J|+Lk#iiU#Y*U(rncvHLQkbb7DaVAF+LCfmn2A +eDtuWIyDay0LOlNqNt-?$_nX*Ng=}e-sQJ9;_Tq(>ge5?{?+JRMygqe<_DmlW;mDbG^W>RsdScRDs;w +j^nwkoqrTH30GE?$^PkDU@L%xPqfSn5+|r?90yC3ecUyx;MVQe8z6<}xzBFU<VfwFY4(X&Gg&FmELD4 +q@I*<|l=DF_|9{=B;GjB+T2$yiS;Dp{}eD=2|j4gt?x~`NG^l=DEWB5Sg=tna+wUX~Nt{=44@3$UH=t +o5|cum|MskCCs#yuLKFRp3E&S!Dlj`7UozoHwrUX!g*Afhmg5mm`PK%@{%y8ka?RhlL~L;QDL@{d9yH ++DsN?jFwZ4(xiIID*(J=2$-G#YNv*LmUzp3toGr}dWHt-)Ix?pS^F}fc73R%kHVX4YWbP)+Tgj{!=51 +uYSSreb%*~~IO3M}O(JZl`wXKI*QzJjPk6)AdDvvQm50^KE%MRfZ1(yTD<#FLM7cQ!B*(6+Y;PRbtS? +f!U_bpWW{rZ+z1gsPRZxm6DaJgN$OcpLf;NlQ2qlHTnTndEC0O67Xm-)gaTDYXaWx8-touUJRi&eOs5 +iX12GF!O3CtMtG$r3IHgi9G*CJLABPG1KE$I-&^5vQ*wg5wb3SmX3{NpOr4j%ChPzRPps;C>{{(e-?0 +ZeFKT4EMFp%<sR~e`bEbhE>9Pmc9;a1gwwc3gHY*_&cwQR^Gl>TOYiF>Hn)gvj1gGIGp8qm9|vk*6Sv +&?-qL9Zue}fS_hPKtmo=z8SegcW9xD|v!+{U!I~4Qp<vC07Q?dFFo<V*x}mD<cJIn~L0g_@1!CFXtnz +KIQM)s$_PF+Y4c0hJSdXcDM%B_L%0{fb2V)UFKrYDRXhAN`2AIQzF$jxu58bjLBez38-xcalS?E@<al +P)kpfLAPv7-hz_ZM=j$K97Cx(vcULhiVIWd-WET0*=LfdX9DB0tttgqUabm{8r#VS0BK*LnqGlzTjkv +1E*O52p<{THw4+`#9Qu(*0WeIBm=C3))fgR`6?Xwbv67Z8g+e4F@n`5vg}rK18%z6jEy;P+t3r;zCAH +VsmJ@bpy&QQ!BHN+Z5Dczk+&&(^jGATMKMyG?f>MO%_+3H^S=2^`Bo>>nNIUJ=&h^_dqpMUlwWg1gz6 +r)d0iubzZ&U<paty+xVvqcTi}cpD6fG%7Uk@m$Kk#>q!>8>fbI4e!Y+dPd2Uh69w<gZybJwB*D9oBzU +y&d1`|4tq=o0{4>PB+m!=PqW!itryIomAxrO&drVa{VEW|19ab)_RAVdWg5c*d&C54?6rT*ZS;~OV$2 +(J5gEhGF>|L4+_(MVl{112e*3n6KX%aP?xkSxIKN;}%LP-AT4fSk#Y+6=L<Oi9wW_^r_!-0kuX`K_3Q +iCw5`&>gv!`pzYyjlc&Hj|DO)tk^(=yQqf*4nwYz{&%p=*AnC<=IX5LuQf;URug(_tg};55?|b&1-1$ +`6zHx9aoPtF{Ru!R5@MaBYSyG`(&Fu`<miIxIi8WbS<VncE5Rjf0O5Hl3YsT!dDiMP(5p#rSc@Eyj(B +a%{xplGOjObH)n6vS;M*)I|-#2jpODn>ylx3dGAES^BeTFSnFOPv|eiste<3fzB05CzNR`QhzcRcguc +p9If=g6dFm~+dd?FP=#?9!M0&D>-$?flCEOxmWhe1DGoDBR1r;s%hPzAYlV@ddfRt8G(WKRBuaQfu57 +MO7dkblGmy1iPzpWFJ>fO1ddZZ?)PC{l)2|*-r9+E*vL20)~6E+`Y*hM0Hr@~9S{B}R;6Rn3x%)IGrp +b(pz*>pOPAKuH}AgaZX&sDYQEs_d8_X?Nu4o3Vl;TfL3rqoNG{X2zxc^##M5K(%{OQ;Yp*AgIU=um;K +=>)q1Q)^7uV2fe<RIIvY@q00>HqRa<WsoL(-UImNb5US}Y5n9D*l1GB)>#nv=Gvwd&<M9OzAaLYmRa# +S353_0xMX{Ep8)P{CYkW2`I<O*AlDJFXw{L5mO`O}jf;Wvlh!RILP0l)fah@$@DS>tTHNwt!<I5b)gB +<)F_>t|R_pn;APo`$m;*Fh6JE0(KJPV(lgYiAhcmz%rq-KNqUpS59YTGb@EW=RYZGZ5(1gIx2qAFl2Z +SKFrSi=3`9ah6nd7sQNbq}|IewaVswVe+W_g+=-0Mxv@Jt|9D$jKBNqgUaks9SIMiTSB)*DcLt;WG72 +N&~xU5a`8$#yI55UL*$rJ*)aeZ0eY0TGsN_!V;9lUuyqQB(j?+^v%>Z!(wbp4`Ii{vzFH^n^8xV{IeS +9d4>Pb<ULfy~!~3dvvJzLZ*9H$1>f0+m-1K&_ueA@{yvZYL}4cHgkz?+S0dFc@34_b$q2CTArFDB>qW +P96a|0CN<HO815)j`Nc)<bWK#$J64iLsMe??+r4T~t3>xN>0&w|(T&n1X>PBcqEa|CJ*y|uwvs+ef_a +9QFA72K9cqkq3@!9+<z~+zA<LZ=UzX+BN4rumnysEUX>ST4c91al4^o)Bn5z|BRqJFlcIZ^rS=D( +4&BoN!H)`_mQV-#FUOzdUsqm*PI7NpVmA6cbVx9l$+8{2_f7^9@xu@$(!gzY$bg`qB`pa>GzeXJ65|q +R5iqQ)=OjhHHR}2QhjTlIAvZrTiq;W=_Zl(uB_tL=)xa(#=PoGAf@5QSOI)qTJbjqTGF2c#YM&V(}Yv +dDJB3$#X*HnKNUiYf+WDD$nZq#%$Q$*;@0fTK);fwpA#>R}Wb$_5~>C`^nbePV~&$ios(DPupXTcSr( +ics!o^Lqb3se0<V7#N;_^#tb9P+uuj6AXGb8?3Ci%2vc>otRE5VifhFza(n))kI_<u+hw4``lAbYWE! +@RBQqb{%%m1tj9VB{C#0(?209wlsz%d^1lkG45EO!5r-ih1%;F=ZZKEcFyU*&Wp_v7J?06(c<s!IrUc +$O&FU>&wPvxP$WVpuTcd=_Yev3$N<;7+0jl4tlR+nE_<c`G9N!Ey_W&DuJ>rqX`!eDH&!>~SpcU9xYx +Vx3#u1j`zrf>h;sfk9&aih5VNT2(6hNj`<o{#a2AiCQ=1kuS}MG(CzO~l5P87eyw!~jQUVrWdtp?YjG +Jb#c6P|7U^x^WlWNFc5`goyY0gUY1uD9^;l_5HPRpHB(8^IdHJpmE>%N~LKHodznuc#Yd=5<Mt2cN#J +1aE8fqi7J7)$q5UW|9*L|l>at2{elPJ^55pBX&Rb1ljt}#p>NVS0<Hy}JLWa`q`iSfllG1k5sfYreg~ +lGm0wJ7^~dipS6BQd8LG~5-TtrZo6ZPBP}50a&^5hB1~5IO>9BALXsZ7~aIK7f=KD*0f3D?54D`Q8K& +7zKHw8Oep{i*q?#)eiob^BJB2{h?J5$he95cvsH_^(lN=-hDz8!n#fW;}q;&Ifs(RafQBl$3vLczPLG +2bPL4j9#cB%*o`_!MuIKFHctyhTE_DObwmw5N9~%TMptvlT*sZ9|1mg6>|%CFqu>jt@jyrNx)&-TL-{ +_VsR&e&hLu%k*w_;d%!(y;~&T(OntnOGdd)q-+(Mx9YjNw>{ooN`Fbwg|)t*zg#Q7xnHS!i*HT0SxYp +WQq>(vaa2x^h)r=%aD0ijqA>QP6T%j*u(2QYCwcE$<o5e1p-R}@S9t&__DfNguJsjp;97AzP#s;H?)g +5;^NF=4_|q+P8_>mIQ^jX}NuZo$53+5ys&h^2U4|68r8p-o;A~pMrL^)(0bHg==MKd@o$DR`o$0LEpf +|cA(J{WpHHANeYKD6AQi%98^(w#nD|pQok~9x$MDP&Or27o*XKkwH-`i_YZ>^qn;!{ZQoGo;3b2p+S! +xLdJY}%v7+@B<ntt73x@3}(LD$g1!Y5Pr$DT5a{FgL^V0WF#=nE6-Q0_dpgSwmGNdV=-gqiV~~hZ#22 +(!vS}oV}k5y*HXFR&>v1F1mWGd)B(F_*|i>bRD1h=fjH#%kgH=f_Hd0ugb|8=yenJWCUVW-l8+y^%tG +o#TQXAm@ChQ$)k8r^BD&!gFJ!fd6S1!?$ZL?qZ2|GDN^(T(}DRU(jpX(h`TCA9ih`%bW)iHa`6>zQle +BBYpA?|_jFmbG$p|;WUj~k{8V~94M}r(28f9k&t5g=uHk}-^a;@Oy(!^`KvW#M<!Y{BLolr-Fr+iOXe +V3Vi>2Xw<#&u>*w2aNwc|3xB5!KUNQrwN<9O!k3>%&%56ofI{odQD&hVNO;O=AC9%vbLvY?_RjP%2#n +GBouay_Z2by;-ZHGp66>qr$#nlh#*DW5}d_o9mZ0d%0UpVVIKIaokZ)0D2hAV`uD=2@XHz^`D1S~{rd +b5zXrf#`j{`z<KjkIbAftuq_4P%TfG_M1bp`NyL9@mWphdCeL#lth4=P6tR=uc*n}e=GDZ@QRO`e2Ff +<d(Y-M#cLdikMTO#8zXVej7T#d?Q5Phl2Y*lCeL0;&S2B}p!f`R@3=5`_`0ivjxBx<Vcoh;WL$Gz?aG ++*4Qs#oG&`&^a-HG(%n7yBM`l}VA`^ehOS+B}0h#G$ab6%)JXTDOC_LKDP*E(27-0iRd_y3zCNx{~Fb +%Y(?lWwNpt*u)?+cupoH)Z;8qu4+0Y9h=3{}UpOwn#R57<$*Mv`6v5}OO40(Kh;s;@Gkz-VeF&I{HB6 +jXQO)-~rZQ4aTXoI~5@pUxp^N}(LuE_Iy4YjjuUFqLu`t&{n3@UP;L@|&Dv)RER4C0?GR2-G&6cJz^6 +dA`uP=E7E_>)hwxqNz1I66*Q&jMR>2Aq7tzSN;6kgx#Z#kV3F}jbhQb3loS7Eqpac?f<M`hG>d;Z&+( +KMN(*sXFnJ;^f!V*{C*L^7f*!VoUl)gdH5RMVTA{h%9qqjt9N+yYE1ssRHMlnWAa=S8Ad;Vg}q^IAYJ +rMJjPV0ijqb@JHO)lVD}Vd^a|e~mbrp->Nf2-Pg2-19G&+7m5LR8u#uBs;pcJGn7-GDl6mH$oW#H9eU +$bWfT5|3Uyv<IdC{*a6G3%+WJq&`o61+Ro`%Yi2%@}r2c_JLQf|0|kEl)K;huo{KznvIGz`-8_Ybqg^ +mknxpZ?OY=|BDbIdceyz^_>EXh(PFu3ufDyK~#GI@aA88*+v2PBDk*+9Gv#p19q|(sQ@_>F&HUMC$JR +Shy-XTLVtI{l|58s=-^ziIwm2ixiZ1_|0<ZQM3e!te6t3-=7{&9^S671X*j+jd0+j76qaUOY-#MnrNT +Qe#QAq?nq^fj|A^Tuw!^?<hD&<#~>?~<ux%|H?@`Hpc$RvWwTyi(U|7#qMTdq%R%LGc@_B(pR8$7yiq +DdNW%mty})-YFNwCJt)2^p?Oz$Hs`xnfsxt3!+Or&1S;lYF8@5SEN{ps?TiWCNjv!j^9a2V7I7~|A?G +*8k)3<lu?G(1aUhjJYvpgS|)~Bb$uO1g5cGD>0g~x=f1xI=2F+Y@zk6niH@MAxUQfH`qfeDmPNR%VU@ +;iw#o-8$&qg(~6M<HFox1O1s5jgbyvlbd(_<b@MZ{xW}XRLkSFzuiTfzr7v*Ts!hBEMOyi2{yAU%Kjg +I^7YkPSuxPW%U?H$G*<$2{Amcr)zhrL%f|0FWX4>nR0qFDKM%yue$zD^6{^vBKC^?hVA>jY1X`{w6k@ +oda52}J_vXUsz-QZta+13rQs!hdq^2pwjl-8n5%~bP^56WsA~Hg%Be15R+2<bQ$Jl*<!OZ?ep(?-&Ur +nNv+{)&hXXq6*vP1L{8ap&cJ6M}?$^S!LFn1$TAGfyy3!U=XLCw__dxm{7lf|4pOAUYp<Ri^{IovJ0? +NegU3BFbX%QMWhq}6(8!cn=y157NONb56BO`(46nhKbjc%5^(R_B}{fpsw1D2$X3LO}rF6}o=$S{~a) +pT;oRB>LnD#?`k)rtgCbASv~y=VAUEol@A6&rin;gi<}h=`b~cd_QJ;X3G2o1KHqDT{P2qlY^X5r)b! +{M^3p4zea%Ln}`%)owDlf>N5*2k@Qhy<+AlXfV~#8Swq`;8P<f!($CnV@v~tkYFfX&+s_Eqv=3XIR?? +o?vPaiW{Zv*_3ruiFh{2&3KKCP-Z+r94}Dj^w%#8rE`B|D<z2KpX8m)R+Sl)K9F=lWYUJRJ=!h1e4@a +lacO&uk9BD?WyA({?QIOnsB;*;Qx>GC0f0#=*Z4adD2h{_vaP@$@2fsJm8?o~{0>L}aa@``=lHd)GS= +|fkDRkDO-L2!FTXfdG+h=~{dle@Ybl#R4xf(-BX(1MApmW*Xg#UXkv7!dk_<_`ZU}C7SfZSNsb$!M7L +{9EtKXT*RA(w9UzLQrfps-d%1gf0k3YU*!I@@ps#hOlQ*~iByP7zAU^hNaAK>CQ($h~)g^sB9ThcQ&Y +#IN`A|G+~7_gQlkDDMPg6jr`NBqr8MLQSdKdfL3byIE(;Z3nDJX(5Wyb^2X?qigb~d>67}#i$78POh0 +6syu^+uu<51qJoXmw3E;4$5pW%8E`>0kBZ=X-O4XfWL2umFvSz`DZ=)MQe)!#k>(pe9pC6E(x{`bigA +^fBhT@xHSOgXXriL5>cEpm#@f^MHk%J;T)p0>mQiPFenD!1y1TiwUx;TPSCa^rGj37=hXE}(uZC~3## +g9mh8mBKPSc&s^z>@x$0WaEB9$a8RGKw)^~Veqq$llcx?X3f`ZICo4lrY!$TFSf*~lIGS!<?f%(>nu6 +bG1V7VG#SQg5J|E}68@B{XK{Q+PEd&?r!&MRNQ1eNiE-lp_i>VIRD#)uXa%g8#IEu_*~4bjKe&!(UJy +@eH?~^I}?sVhqYaN!KY8vH}}D`|BEm&4G<vveZj@6Xp^wWc(JyZ|cic$$x67qI)FN{Y_qUL*mYY%z9- +b3D5Jxkfi;@nn(BBCL>lxbx=b^@IaW1n142qm<4A{U1`sKX*7{Z+Lsm@R*@5dW>GtrWAMIR_gOF<TeR +jKl7duHf-1ukRJ#u|79B?Ac|TA&8O)c=p3f-o&TwLosg(DvZ3Y)UoC)O_?dW&nGs`IDtiv~>e1Oj=4e +LlJPwMzW51Q6WI>G2UCv`jB<nh&esoP1+D(Om$-Iz#A-A>e1B)}<^UtnCX#;otFDXuE-ttqa;xE7=Q* +1<2qaQbKv^UOX!@arhLDmVH(lut|A)A`i#J&<{H>xJiYv*%;FCa|-WPGQ$8Q5*R-8LhrJk8-MN<rRX5 +lyC0_Yu|GjQIfrANa9Bw_j%sJB3>S7ezgxOTK9xwT!OR4ddXm|<3cEC2j;pT(P$>W$J6~^{`+X82;hw +8LYC(%&j;d8j>3}G{m){oMChXBEKffh38<1vm>0(L&p8K`M>A=Xpm3QEI?<Yy+9<S!7mQsTVD*eHE1` +wj4<^H={npgcPT1Tfq!r~0R4mf#;=Kv0Ts<aSV>`RQQ)_){fNJRkIB7=U*K_G>tf9(RHvWZ#OEkn;6T +YPH1tX+JIQpRL2}-1}%BVBe>O^F^%vwGAd@&92XSL7y!SBM3UM_=hn3X9{Q=<uv098uJQ&gXqFIUEF< +BBXDioICl0WWUf71~MuYbFb@(Oo7VQPKlyta|0nmpIarVj+8h8jm@}Xon!gZRDRPm0S_%CK>2K5oiio +JztOj$p)*ZlP%%2)pIH1@DFqWlEapFhJspNCf3_XFI)o^z&n4%@OA)+_n=wk#IebX4V4cQ|0j-(SS${ +Y3+|9!BsY5V(WjQs!v7M6)xdKfq2I+yb{&bEW{q9K43%qn0i44W<2$B2o<;qg>MF<@Tl5`s^+u2W9Z> +1i{rt>NH4XpjKJMvO(CKJOOGraagQ4PH&h$vv652N4`Tmabja=N}b%K(4t(0(~v8?L+@0hK6xOcvVme +=(4u}WPYaPFg;$pNYR4I5mSNRqX-HI=N?T0;eWZxHo{^q7bQ43$>eht4~cRUKas_SNfw77TAHA}#fpV +Y}SKyy0Np%Y1QH6Vb`@wvzdxsCA%l7WsFEzm2-HL)MyZos@YuOHG6HHA^^7#%%f;Yv9`;IKyDUdcLHG +xV8x$h%%r^n}|}gzHy3RW;kKaf(0ab_B1{6gTGiUzw1i*@D^1)NWlh*U`@aKLHqXLJ3F05%0l_sX{^! +DW0|h3m?GwmLul@3s$3D++uavcDTdD{{pXSc_Q}gWg89t7y;-Hd@*fh2^&B?s<hSjC%mYo%_U~pqF0W +?{qebXMG*|B}w8b8x`~tm%cfPgaLgTV@RERg1Gqyv{zDYe9*WQ!mc}<PEI+jV<F?Y$>;CB#CsQfzP;E +giDTJe43(!Z0-dvH;9-=baG=TnpByNg75>=xd|sxh0ob2(@m?A3wZx0DT<#~s2WnR}2@pcmWbi8R$9S +0u~i>P?~?lN+t)zR5_fEj1_>zr?-cGYo$_M$0R`^3;CWb-hUy@*Vy?gzGH2ita0lwkCXp+7?0?-lL4z +K)(Chxkse~oneyGpN~>WU(#fq=PRY~l<0zK^_&g20J@D-nQ@9{lW-buMW>!{jOIvp)$v{EXRo4L0BDn +=W)50&y~VR%jd_Rbm!yu|Jwmyq(03W)f<n@>(V<E#q22ZcTAU!!5BZ)a7JPd$QZZb=Wii<H!#Vv^v9^ +z}ZWffRiu1mw3@oI}goEAT%J+*kT@}`fLn__h@`iFBCpGjc8h6mw)zcI{0XFZf<u`MkL2n^Y@kx<Mp= +%Zn)4r7>{jnID;#%WW>$#7t^wC>Y-2;_-eF-T~ES8mEX$)x^p#b7jE0AY!<k3Fl=eQoeCIY;EWYK}B- +fyj?ewZKs%8<vuGCdKmO<Zr*rA#tBKVPR0s5Pzmghmas;pGO?;R|anaIMI50paQ*saR4xF@#_Ma~TN+ +F}HPMd6rIJj(O~B6U*~i${N^Niq4zV#(gb!5Aepqrqi$XMrr;L<gZI9w^Y674&f(Qyav;`<8ieESuJD +1L<AM6UaoDZ$#z$kE^7V$1tY&o%NynietsGFqx0X7(if0GK7EN3I}SNqh0)hyyTL8C8>lG+^os`9*7J +6Lz!g{#s!G+oOJfxMqSj-;n+o_WE8pswmB#Noe`b={c`(t1=Y}f!L}J)(N!h6~ez(rjOd27(kkD5o?> +eZReYOt$!P5m=hpRjRBi&K%X?sh#Zye9zd!E3QL>G=<t+)}RW<h@t6j(r?d{?#@D(!9d7qB{4*LC81A +^QV)--#p)l`%Y+Z<nDdm`+65hcJ_8N|3e2!gZ3Rh|TV-8cT}y(MqWCb<vD&b2p)^uVUp8<aiWUQ}>?h +Vf0rIs4;JLp&h*24OMa6{ffMMe~G+5Z<ptzk%5VJk$FSqqn9qHY?F|6PLVfk57V?4@GI!WCESrK?8F} +|cq5byenvC$7U80zHqjoMcc6$azcG-4effcFtjNZ@hV5p)*iX4^tskpR`Y{=nw@Gii2W3Bl-zL3#t-F +WPobP{|wAituqkm_2(|yuM@_qM7H;z)z?w0pS?~XE5@@hugvnTj{(la``Px_O2s^5LmZwZ_4KIvhf^A +VokC;fVps`~DerU{b&ebNEqKIsZ2;Ia#)cPd<q?3{{MjUb_EoZ9Y%()X`w|3c|E7hZ9pbbO=M37zI8n +I2U@*RJ>adw|^UwDRku`Nuu0ave{eE|q?nj!zi2@AY-u{%e)Xb$|(F?yfAw_!uTq0<TqvF-!SuqHj7h ++*&hR$CYZ<D>G+uCIwqP`@OMO=)&y3P$;Cm@_ut9W)+QqtH2ieXOQhDhtj;_0PO^)nZ@^=ozXO}5B_= +~Z>d&IH*Vy|3q?hw)7R%OxjLyaAMt}1=$h1lGcls6184K!oG31u&!4nea?m9GDa!hJq!=E|xOq>jPsQ +J<Q$SZCrsuckw+WLZV&^DXGIo-GZ1^N8BirJoI6LXcqLPr`ZY1#dut%@tZf%Dkp&9M#ymq|6hHGY0W7 +|MyFs{hS${gm>qa2=ZFYZo0_TBI2bvcK)kh*e5dr_6K<J-h)hrhZ}2iBwnGgfQZROi88`{~EEOBzp_w +dX~}M!JTsWJR9MNLv)17%RWHuiLB2xf`#fvJF?aENrKwDpn>j*C-4@j*6AZjI_vv$<2?fn&8iG_i2%# +JrJQqCQMOJw^OcSrzoXu8m(Tv7k0>fzK8NdZo4c<Q#PJ%^<e*nr@Wtz!@DGWNW#BLSTEt*5-Jj2l(0* +G0f$SNDdBtxof58-@KFh0knjx&Ka}tb3E2Pvqa++6;dK%o94z2V68=@fO&XNpwo14|!o3nUNO(fRZzb +#$FJMmz$4EF+!o?D<knq<M{z<|e5;jPvNEkIxK%;~y5?UpkEn&Wd#S*TPaFc`&N%*9MyCrOp@Iwhdm+ +)H&*&tb7684vHxP)mE-XLL)gttq$Ny0x#SS#Ui2|t&RN&fegu)l;!5{{EFOTu4BSS;aM2|tujdx~WF% +$Bfhz~%lOJ*TfDMQ)76+XPhR3HW}sfNh^=8-@G9)b{<`d)$M6m`{*~OB>#XE;`n5LHMPYI4xy`u54#X +p1rh`u_dgO<*^dxWOn=wXZfs%(N#l9W*twjLBc%zAvl}GX0l0a7)z09Y4#Cp49j8`9}TnE4J?DDv#HF +?U7gI$ikXWQB1Jnh;&tMW(lzq%kt~eEnZPoY&A^|37|oZ#Jp-60ci@ZF3}V}uiHB-0%yiJ1#75zdT!t +Zx2~@cdatU()8u6Ck*Nxl~oi?6g7EHvYeC}4jaW3Iu7b8cdFy-R6lw(;4{w;?~K5#hUTg(>0R*Vpo`= +uO1D=zXc<UYBGSIBOc;Y#2h25xBhDO^5&^SHlVrfEcKZjPV)jYzkIr%HYf{1y3P2#mwwlfiQ-ur7gXD +YsL|TY*>5PWdA0oIE8rTq#Tma&F}Kig<XDvs|9C#;0LCZ^X+>3EWBOAgJ;aUW2S99)BO~~`n<j>FC +b~#ndX`~vI$4ke_X>nc_)68kIA#NehXWQ}~=_~JI#BlMtQOvou2zfOk1qb5h$?_H0ivUG#wUQD(OZ+( +MU-$ge8}SqM>&kMs`|&*;cxKA-ar%4&r%O2ZsIC4x>PK6?CHeB9(WLROy&U9sz>ksWFEl)EUcw6{SAU +Ef#0#R+AE$=z+JCY<m+_qbc)M#ay)pkpdQ@xk|H<@5`_gmp5+l4z5#EVdZjPh9mZY`KR*V|H<bQ(x1s +toLm2t`wWz7;cDmkqbucUtj8~dZ>U4qo?l48-mOQb*bic5K|v|mw|{PAC2pNJ~Ln8zv1_p3V{jT3G0U +HcRGmdIYPkher9$DZ%&BW~?59S#3KQ-3Z`DWCH{w@ofI{H^VjcwNHl$q?S(F6Lts^#pbw&qXcixV<L% +mEX^&mqLg-N@co)+g<I_o8(u1KOcWCeitExhPkwz64mgx_V)$6j6`b_BbEd9LXN@6M>hv|adNvxjfj( +f1&;zGOuH!NV|r<C{9f2YrM+C*wU|lL9wqIVk8yjnv^%7|i?kc1y{oj>o)`95Y0sAS9vWfN-cwpPwg` +KihELjiY3ZL6_CC_SPTKow>75mJqn4hu_mlRVZ-u=~<A<~_*V2>r+co;6{i3wCd?W0tv>%gp8*lqgJ} +;s929?EZKE`RiUOG#_pAjW}`HV6PriF+}wM0-6=2vdR`5)%{C~LyLh=*Jv=Nke8;k%XBfMxi-p2usOi +pAH;`*Hl)mtnik$1f}Xu7eA?mGYUhc=F}nP(Ei8e@36na{0%&dm?vFlrAU(KAUHlQP_O=%)FNp^G@o4 +wC4s;wX_}gsd5gbxy}G|$oYwXNE2^~Za#+5lgazP<vu)_vY%wW@D4uPEs}N{FNZv|W${cx*oAx!*IGU +T56x;?T}6I0`ZanrIyJg9dNevjddq!uXz6R|YUvQ3Tt0$2d4JkU$0SaDs~gR%C{$^iaC3N%P|Rmo{ys +Ai+TYE_`@q%^GdP|8_FSGXk*=1WhF`;{;nCuwURkeOvgEo_UxmuYGt_9qV<f|JJc9qW#Qgk3VaY~yG0 +7@pw&&TGEVTP7#0@1&FSAe0bCr;FhTY-PJWTFI?otq&=`P~<GTp_z;7tx^A(eqG*O})lXZu2@JJ;!BS +Y~c9w<29ii|`X}!b$iD7ve7`T!e?>QyexU*X4HR=W;xgoQ2W^zASb-OMN!*%bs6s_j8!(7B*W+F?XEd +mN3^vcql%_p>Pz2{F(ow3kVDf?i8XA4GWKm>}-gN?$Whe%vIfEd-RO!)w@q$W550b;s*{IJml(Y5{3> +No|rUZ<f!D)W3EjZdtK_d@z+mCGfhl4TP97mW@JvuvfVH>d)o9FGiS}7Gxx@u=FPwP7YlN77v|;L3l= +Rdyye!SCB-F<+nl8?_tIr$%WuD9#mZHy+5hj4@ru78zP~H|uKcrNg#EF<%69%P53$DYPxmwb{Nu0n`w +RG)e_CAQ|1|sm7d%&%>Ei$H8lY?a`?=3$H9*(;7w|LxT5G_6_3x+hPk-I;=Wp}(``KBR`M%u#bMxDp@ +3t=dayj2qzGiJjW!0U(Tvxr`v!Uj$yEoo*?|qwo_3Phk{_XGX-}1nNzklfANB;2WV~;<v^^br0^OJx1 +>)*CL_4G5(KKK0g9Xnrm@uk1NysNfu_ny74?Au>|;MLa-zW&CchQmkRJo?t#?;Lyg_<Qev@Zm>|AD{T +-<f%_TQ<^^ao<8%%m(5>&{mr-Eojuob{=)Ycf4HRnmj{H7JN%zDApB3~|9?9DfBS&kvH$-H{?qr$aKH +A@8}=YS`>)&B>55RjpZ%^j_Pg8IH@30g)5d;p8~c52>~w{wzx}y3cKVD?YvNkG^bvKkUHkShr?5D`WZ +4W?uB#C9Fu2buwL7OSyv3g9$|x=<aW3H=b0i-4XXTc<OnI)trS|L+huh(E7j6O_vjKDNBKyRWG7)nYX +3iF@;%EnWI93-~_@ieCUv<zf$koDL>@F&Tu@n94Xq_I|iFFEy3bI%%!Sswy!upE>8dI|8hUnR~NlA0E +Loi$!d3N<Vi*xW`LF_2Qqelo9!t{DQZ4u~Mh{lsn<>hyluPH|Yfp?bQxwgDpa4=G+s;WXkCnc3<m#;( +UA%j!0=aeHp63Nac?S{r7<?G53iy@iCix=zlA!QE7GKb>|{Pe};2E6oLCLVS-m^y0Y@cbgVFl*({%)% +x161U6LfxBe<B)RKUblKWh+fUAdkJy7;EZ2^ca$UJaMvK!~;xrZ(8?$oV#d(YE6mOxxms?n5&o{bCj3 +o|xvC&>;&vUzS7ZzzN$yvo@A^!pts4=(LnCn2me8izu1`2w3n{ZBhZoaX=S+WE%1eyW;Xsv7l2dtoZE ++Av65`SjNLeS-_UdG$pcIWcK;zh;+PS_RxrFNIg&zqIH@{z54x1*>qPlV8X!~=gYuj2slw>zC3`_F1; +w=_@g0=l@H*uTi*tIbj-zEo*DTZ7p^#4H7*od{uOZTP;(?gHBjUB<kUe7muv!06Dv1=2H|?|rte>k~P +CC*VS!N}}B5(;iEi0}WPS79|F}OP1uqgi<5Ufn9@#qnrnmsdTY@VJ;kt3XAR683z`Xc8F)$;zF0b)RC +KKH|7?&>`vq0M0cq(abaO`qP=+OU@dZ+`qEmTC^ZBube0q^u@}3v@U7|Col6Rfb9v#S$Pi=LZSE46-H +5VpgQh*A$APz(*Zl>2uiwe8XY*O>Gt(~_fqz+{YcW-kQdh3i&-v#i>sO9EzcNfa{L}I$+Mz$LEBKvn= +T*T!jL}_6q|KT+X;@18<uiD|U}LV#1=XT9DO?%8-(cjisHkKaA*R^vk#%Lfj(O5S{c|pIQ-PNnhuD{* +hbb&D+Lt(7%dh_F^cJG3$;y-qLeV_!zRJv*vc$fmL~d>Lm#wS6ubmm&abs-y4D*b;|MI&TRR@wLKA$m +mN5m@2UulAye%*W;?@H&-Mj<Vqk1>%3zS8-ng-aYo_60?<-<+RcSn8U;Y)tZSNB%<gGakYn-Br)J=0~ +uu$>FT)bVEaAZMfrPirBlJ*oQGY-sVOT{uY>5`Pp@y0$8V!0ZBST5HloqVuq37j_6)ttXIB)^-Au{dO +2g8uWIbp(4{tt<D~SuqQC9epRuryC5|3ptcNR-^#Bb$W`?sK$*?<PYI_We9Nl-XfyKExv+ntkpf7?MM +uj;$H3l^VU~rAi!x%{M!-7~C;=sqD3)iu5<XqP+jCD&kux=xxnmac}G=$aa9U(cLvZE=jy-33am>-I? +^sLA9m<Elu@&r=UfPPKV7R~b&!t<qt`2j;pNFrlajsDm$77N;AL3=Fdh@CF-s|(VxAkY%strP2(uLnI +LM2`>8Uq&+a(#TdkKSmpsMcpXI<|Z??P=+sn`3^t3;6o=CHnNkWJ-YXgX6*3j*7QOngIQ#9cNVGZ#yV +ksq=oz281zHeGPd$#0d)}pEJ7E}bjAo~%#UWqnOJwCY>m!d%{?1q8?LJD=Fs(u5M@3SWsY*{HNCamqY +bDR$d3W}F-&iz=j#cKb-{e%eo0S{;i0T|{$AEQc@OKYdzp2vjc|m^a&8Qkc?=0)A-el{eBT?RXE83k` +5`O@`HvYHT^oI+o3D&hCo#4h@ADcTsGKIY=KnnWewZZ78Zf$h80sJDU~(kuKD}#mbYp89p)mJY8S9(D +*io$<{mMZryMj!{9C*K$VX9z$5^t9iGEUbZ)b9}1b)>-;CjwK?v01Hgrog;5%P$UZH-2?xWK3h%hUi+ +2uJty|Yi?j{*opS@xqm8S7w~4E5U|Iva2A(8jm6E(W^u_=S)4ADi4qiLKuXkmB!;p+uIE^v{AXF8<Y! +nP-8L2_%g7Pz>kqO84?=uAp!C+xX6#+OPDxLXzIqmw9L1uXt?iTWr2Ir%AY95#jBT3NiYr?7Lz@4L1& +kHqt&#q^E<vmd%CF14;n}*lF!U)=$Se95)Z@5&c`o^MowwO8fZg>d^HA1(CLr?BePmaM)?ey+g|c3c# +58wpjBYU0Mmi#L!jr-fJDTvKABaOg8aJ|gvnUONFaHfCC|6+Fs?pRdob__WqRn(io4Jbh(sf}X4scQZ +1s>E}S=+*LG(3l0SSPt#@$^UvXMK|&XMJ^B*yX*QD3^vHt*)Sd&6oY_bkHyB3e~mG*P_p>Kp!J<J_Y+ +^*uT<f?S}pfZJ^uCNc3Y7tlPcl->6;B3`4sP<?UMZ<G`N}IMY{Vwb9X?STxd%9(j2_LaG@{!29P<{L? +_cjkw(qx7&22(K~|m2F~7a?+y3faPK{`M`QPfm|C7b@?!vQo<6U0dS2%QEuaDYZjYHEprsSFk6O`J;{ +~o*gpD2f<9*aso6wFnwf0fE_%Ifq+=In`-LpBi@v4SywOt(1IZ@fX-cQ%+y%>u$98YaQ-+(tl=2NRj8 +tl;rY2F*&7}^k08|(<m3Cs>iqH?p6->^taUso5@t7z22DAqN-^Sxos`o>NTLABZ#NZ|x8qCtNYGaLzb +@Uc_Y@$RVOT}O3xwvCtMi)TQ*&dl&Mc-T3Bbsia(qzelmJ|^kfp;s3RzJaf?;A<@S3LZK{9n41^ys6z +fSRe4?bvgreer2s+ogNd;1}5JYI8av**d9J(+>hg{sb_3gy&t}Qde&v80ewJc*2T$3mK+}ssNKqWMjY +lDaj4(u6GWLhF}LCM5-;-G4f&-pT-5!L);SOFuTbAG=Jd$-)wf2Co-YnDW@y0r;}ieByEDRK-h=co-) +Z!3kCBHNOUCPv;h&|rM;P0v#qXd^eS$E9-}Gx!RNql2Fehp5(iqhsavqj_S=(`jcht_Bc{>XZV8O{cj +I$U=fh*?e&W^~Oh-_V`j)l@(s|)cq47>##DN@k2X-~XgU8~i%R=(*XI<W}Q5HVepZjX^c%&4noJsh#T +4J4uO5^kY7pPOErb6wVs8>t=lNC;s)UCFwh$)j{VbxAsH{@@5joW2pPuPd7M&5uG|?acbN&P}s>TpP& +-xh}Fn`QNia$rsol-M6gOSK!zfBF6`ep*#AtZaZ7)EN?SoIsIDQ*1>J-*Q~?mKj+p3{Li^{0spU_Tko +s$KOSDAn{0QbizRRtR={&uLeLC5ZNz2gx)#r2t6=lrt<5Z1D0Xn!V%;RC-JVsr&`Dqax3YAn9m{EL>z +A>89JAZ$#8O>LO&>fbx6n1I#5tp|cu|pEVp@Wb#darRr<W9$mK533UCts4miCx6UByhLrG<-%C5D+Lt +pu=q-6T$y+}T8$pHiBXz4VfNyYB>i&j7gEO7h)B_DO|B_8W4SP}nB|r_s(}yLl@Nw7H91g%g*%>@!Q| +6z1F07w0<JuVfy5;jj|Am2l5+<y*l&+MCn|$bD?SL5k7~ko)1L{Cp>;=K8>_lH7dBH(*F54*O+XU~;n +4%q+JM?GpKPmR?j+s@bMkrr%)6(sq75jLK`eeM!kup2-;wd)^#o(amr<@t=YGUdKbAs2B2LW;3i=b4= +M8JbIs24hih=e~nIb5F1Mhi(R1SodByn*Fj~@*qhvJqAe8W5FBu#L}xB{P|OW&>XeDyBEsZ4U2X?4d= +7gfNZU7SEvFMfvx*n<<nt|Md3Fbt3GzaTvuB7)9eM`@W|W%k3*Czr*`3*7GgX~ILDOADvkQ@AZqcmbW +rfB0sQcuWRZ?=R+cC*qoJSZe#V*?Li6x)(T!+i;q*~~*m$}$LauZQ4W$bHaAwHx#3tcFbq8WA`9px98 +WzSt|zrx)ckWmb$+@iwU+j^Rc^Jh2;i_=Topz{mh_2=^u@V&_Hx&ooezuth$H|Zu7m4dCabBo+|Hjiv +GG~112<3&|YeDkZ1ulcpgnTu&>Jp+81OW{RvvgF`7NSRk6_8u?i%X<LyY*d=F?aoqedy9t=Ed#v`$Dd +8%SuvSS=@^Tzrx;T$HZn(`tUzU9K5wIFw=6L*E8T`<cpXB{_5@A`U7P^6g6J1@Qm~6%Agts`wT-#RpK +KcY*dpF9Sz0%S1zvPXAM@U!9S_#y${qqO(-^EZ{h1}c{(${a^c&fBCud1<o*)cK|BkTCEX=!AQo8@j9 +uUkf=WStmsms2EKE#+xd0t>*wLvqA>~;scTlO>LF^9b`$^f+pW147LqOSlipZ2qZe1zCU{P63KZbr$v +OBWNWiSB{|6dIjSMB{YiI_*A=+bNbGXJ+R*3u&Wt4m-|MpKceGBUgmWpIRVFXIen(*FFlz*eFqZBu#V +Jm5+A5cH|=;4WoU#*Kal+DLATX$3$6Lj*v%cYrpK&KotAQhtkpgWT?x-2mEBH|2+SB{`36U!}nlVYkL +Zmkj^mB*>>6%COK@n4}{JQkc>K=8_-J_Dq)!P3-|N8O2#E<ka(k{8=bT7B42XvC*4O&yGh#9r9E55nJ +(RDNH|C0zfq=LB;A)VI=RO98D%<S@07H5lHtoG&1)oFEBz~^f2G7j`t#^S!h_QOu%zcvncfr9eY>RZ4 +e9@m^e4T=5q>=L=X=|7__60-9sVDU|L?~CkH-K1^&wSe{`TyLg`CE}3jTYas16_DZ|v~-x0CkY@^pN- +Q22Lz`0am|?tkU;|9c&1^ZXyL63y4j`F=nUAKo6t1R`hc^0ob>|KlGC`0!%_uK9f<7dcB?RnFm7gs=O +<@jn<lz`y2_fN2sw_cOzrBzzv>4?S}7k)G_-Bg!N5I>x{1VQ!j+3D30Szc_AW3y$A%eB_nk-#qqV<9W +tLtP(LVp+8Rd^LGRYeiTW#Si*b>b0nNE;amx`CA3PICSj6<MhUw~sFyHELMGuwoq#P8ek)<Kgr_A`Bs +?i$qlE8Ecuc|u32P;MR>CLS;D1!YEfQ{$aGiwZ5;`Qzk#MerGbOZ2m?WW5!qA}0=LE6RJxW5ogiOmnl +lhiVk?@#=^%Cxo@F5A;NmwRfj)Ze1%$Cq9VVZ;~5++GFL_(v4u@Xi}sAt-`S<<PB@%Na7^%CxoP{Y4f ++BZwMPC|!-ITBhWOp-8O!d?>UC2YJT)06POYu*(<{_=f;|84$1#f!#?9mEe3?i=;8yu)O@km)r~knOh +9kEj2C<@qUjlz=u*pnQA?B)<YAKcu!^wfsue0RN>&+bbF_U#<KaB&?tDuYs%Ob5!CzIOCs#I!R~SI#L +!P#}x@LNq(^@!JYoK9Fq@bWv}5q*;~gB0{#Yz+y<C81FCqp(S^!b#GAS?Hnfk9nE{8zV7!2P65#!KQ( +)dgZg?FCL-334Kn-&<;Kd&3uMvh|S#R`Ra3{F7w+R0b;4ZvrT@e@Xfj*3xVSWhk8@%N(ck9cTt*<a=0 +~SbgIp7{?-V1mR?>d-U07n?HE|1Z%WWZ0PneHDb?T_&bVV(p$(qF_q3K%^A<3JqJ0-QBKxX%SVFU=PL +y9{J(FVQoQzGVvf2`(HYcvTK~>ky2y2vY>O9dA%K<O}cw-YA$)0>&j^%z(KU;2yk5Fz*HY81EJe1DH8 +f(31riK1`$)0k|6#r?CgZ1NKV9m_T>{$0RY99IIm~boJi|#wy{y4)F020_Rr1n=s|c@1<k&0pG^^DBO +<$-Zx6nzX|Zy$*8Ar-wYTyTI4+laMftR!*ak+@y5ce0Is=~v2ie00{;41LFZ<`6DdfGcn<jSb(k~3eE +K@BTZ`i)_)V$^|1IF0agyhN)zaJo_|^oJDdHXjOf-RJm{R~NCIT0w3;5hbfoBKcU`*H!f<Hq5C#8$LZ +v@<yF2WFOkY<8cnMGPjfHUzn17{9k8QvDkFW?%y7h&EAcn@B76?g?0YeD(KOz`&>!P^~x4^Dy~+#dow +IZ4(%z>vwP+i=$d4xB7#m<zZ*199R0DBwF8f}WFrp_#JW0qgK?LYTdP)+quf!J;W5Ji*^*p|7HJ0sGm +6dpzJGX<iKIya9PZ7#E=D27!MA;NBYqPJ$Punc&E&!dwfe%SJ!Y9lQdpna)@i%o_pUoG$Pj1-xd4Fb@ +UXH$%j&2b?)m@Q0vzHo_n-!Ap2I(+#w9Fs|aAk1zy-u>^Vv?s~vaF||JivjP}3U*J!>nX#R}5cT#Yz^ +)5qUjbN+SC6)^0WdcQ^EH_Bb4Wg3w2>^pO$!;@fO<mk>4l=6JPX)8PvD_5E2Hy7S}B0P!n+x1H30U>$ +6OJ3jDUZ!qn*NB3;3r3gopV_z)Oo{|GAj40VRyN;7<3EPH-Syn9~3Y90LDhz%Lyld^6zgQsf<B_5$AI +67KT>Q{CVL+{Xcyx&@ssz*q3P&{xz0E?kQKq$lzV`0^UmPvo%{aO_%vXB^<VwIVJ-R|WWkFy(+-D?u* +I1jkj$`U%+kPR3Ti-3U1Amx6C|0YCVqDAPv3E$c*C6I@V@c8V}LfWN60X>A64w_4zQAMjggCb-ul@DL +ooLEuRPbkvBpOmM>8qTfpc9J7(e6_g9$(0fFmOz<PT5y-m&Sa2`eAk2#az0!Od@V5Je*#&s<KEW%3kJ +G(uFw^~P*;|k{%mn*CfO-jYJmBmHL_Mhl-1~r_zY(z8!<fq>3_;t&!rcKF`v}HGxDzx!ia0P6eC$!dl +dXWu9uwv=z#WgtehhH!R^%7qD*=1{5%n46+Y9jaKLIbyD*!LxO@sL&;OBn@-7ud9oclL1b`V^+O}OU+ +zOqfE)d;xpDU2O(e+Y2V(<pbC%K=9}0~%mX0bKQr9A^O!KO^ecQNY4y1>cGQQ+J_0!F?Ry;a#HajskA +4#TW_q9e}a*sJAc^Jcsup%q@UZ4hZ~NfPX$9$5S%DhB`_00dVZ==r3S416IE-`iBjGZ%Xq~z%_4(`cn +xw{1EzXn3Dh>JtS}v%xD0eaCZT&I09b7OmN1V=;x_l0=)31sM{9-x4(ljLwnf)IO>>~=U4&b-WBbr7v +Lk({3zhK_fUVReF28O4|-sZ08D*f&@c{=eTe>=`UJpkABws}a0%WOaCZQzA7SjKFpZ448%3W}2KWr#t +uQ|e_;#bfNpd742eJ`;Bf;U)OpxRh)}f3DE|l&BS4ww+_e*zz&r37GqtZ<9YiTAJc|w@!4E-=^CYUbG +bQazz%>-+tnc!AwCRiuU1e>Ip&Pvl6UosP<vz|mJL5FlF=#geR%lT(%Cb(Cc|MUFgkC15&<lhG|JuUC +d__wuk`bM};d`|NV7sAAz3M;2|*A766hh|ky{t6%$H$k^Sixv!5<@D_^N!J#Sj!QmT+i@3rNLRYkQ|4 +F1{_g8KaNpd4`_>NJcXZ%h-+}wF4&0S?+-aYy1@8KLF-C!TC#5iX^Crw!b*=W;U!$GqTkW+EVjK%@wG +Vj|{sUX>4F_P4YPFXgNBE#td*g>Xt{Y0TTR+mVoBYy4nKL7!{Vt-?U&8&$XZY~pZ1UvEY|flHtgx_<x +!rD2Q03+LFK3%KZ)Q(C@dVqsb0@2<t!3}L^A5Xo=@OHlw#s>6SenTe!R|g-9>EOzmn}QQt%uYvFP2AK +T()e*3JUP0dhp^Q_24;p?}uFv%a@1?`?6(ZR}LLKc#zxqGFgwGFV%|$+<)1MX8mbIR`*H!vP1e7ieFH +0QP@{g_=ATE3J&d;_KU*52<{ij4*VD4PY=SZ7Wjp|=o}A!@Zh0+!r>gp{}H7x>_}f#J%<hwX>cR@E*? +7n5o~A4pVPng;`)OZ51u6)WWO|heg*<uECPPmgI_w(?dmND4<QQ$#2@{!zpUx{rPvc_A^Q(iBcrnp9z +uu>#4i2CKmKk+iU`2%Ew3MXwEvR_d02Yke%drnZ9#PY%^LK-@rRiQTP_|dujSznsp=22cC}pO-V`4EZ +Q9bJa&OLmLZJw63eWYH9~0gjKc`K2GyOXG2yb?=Z|&;F!14*G0)747K)kwgCOVo9UY!i*A8$ej?`phi +In&_{#2bRwfVZzo^*l<}^`ENe$;rvgX0x#wGiI>cZ@>MrI=*q^M)s#a{fRyM?6bU%zy0>x?9{1KzIyJ +U;{ljsIks&Np^~`6afkYR!7jFX*O$8rZY^P}QA7p1RCV<(?*i0>TUUSa-Gb*~SpDFsd8+z-!O8=tX3d +(ls~{`+&wvYV&Ae@@sy??sT~$4J*SuK^*lP6;yPlgx_;%h!_*bjynRDm1F<y)Bz`U(*Uo|SEugU`D%Y +Nk5!i31zAoxT)O5=Recg!R_0|yRd2?+@-DJhAKA3vU%OeU6*k->R4ZQ3+8d-iO0<Bd16n{U3Et;(Oo7 +A;!DZn@<awq(f?=5#uF|FLrAO7^gO0{ipr<JmK-Qdz|!3)^sOI@?rYV)r}K*o$kfV}B{nV82_lkZs@W +VEgW#!W#Z?D;x5%%7*S%*@%5Ao3K}9qhD3oxHnWb|8<q6A640u<0_l>k;+Q(&N`v8d7r5)uTf<SPpfR +rnl-Gtx|-c{&pqrnzxfUO?Qeg}wrttL9(w2@_Sj>O@$%iaZ5w;;x#xIa_R>o)u{ZZ@V{5-s*>lY*d*z +i^*ntBF*z2#q&JG_w%#I#C%8nmD&OZ3y1NP;qW9-eZRrc}6AM<+A)YQbj{ql46$$6DEH#f6$=g#rELQ +g;<#s{pYNrqI9^-LJ*O*k5RXEb1=+J%i*N3eP7G`3v5jcr!%Vb7^gv7_o?tv_Ym5Whd-Cn5fL#Lq(f8 +xemI;+Lt>Y(3&{LHxfWel6l3LHv_`@dqJ(8sguC_%6i13-SMm_`4DRFybFW{0|ZT6U1*q{4WvztY7@Z +L0DgyP}i|G-$-lKyBIr!bxQLdG{Pg%Og%P&sUJ*Z>dD)f`uROfZGMWWXZ_-LL;U`TpM?0=BfbssfvdR +?@s}h1dc=PK@&AVSb%=ii@lW~1$K)d$P1%9T#>P;@4?}$PKh2oLsKzc#y&m!BBmV7({~N@A9`TR*#b= +#aHtUWy+mCHz323%s*df&XW|qO!=$n{2!ok#OcQW<1Elj=VX{J6^&(y;o`NcOP{usp1Li~k@UxxU1A^ +xL?{|w^4jQINzA8Fq6KH{H3{AOSLp};T&7z%;mm%#8CFzf|}kAa~%T4i64P}#TBRCe|@m7TjsW#^w#+ +4qN4U;H@4ABOl75Pv%2=OO-5#9xQ_zeW7V5&v1l-;MZ(5dVF|_xi=xOAf>!ejMWWL;OLAKNRt=NBp^n +e;eX&K>WuMe;48(_ltk|vp_ulPU-0rO%qLKZqB-9$iVpi{Rd6<`I;tXW@MPnnduWIn9K`?4H-OmVEp9 +C12hcg40z)|0|v8sLBiD(VDe<6^v|@VTQVmAy(Qf=VWMflPzo?`VE=y7Kf{)0$~2{$(-EKO8a^~3;ra +!wL}uDDwP#XXZ1)AjhYJkx{redQOs4q2pP894A#*|Ru03Mmj{rktfI$loe}ai3r)MsR>)N%4@aHtf_c +wyb3?KdlG2Oa$oid&WNZ<kb87Y3cnS4#;->qx!DU!6TYbXW8UogRByCE~vlDVKKA?Oj?z57)W5fQzzC +<XGj@dx;OUKU^hv4Q;4Ew+rzOq<2l_p$)+AAAkRKhb8+wAjqHNqu_8$N=Pj^^jp%OyE!FNoZVKFpdI9 +{&D;xQf*+d&5~*3ncyjC{0IFD%p=l>giPS*IcZYYu3Ztp=f7Y~rv+(=79?;3{QFFr#7XGo^G`Pf8&Wz +aSu)KwaCuT+o{8R*Wc8SEoyjyZ&=8z7VS#OdEyE(I^l5C(NKc-ao*1MHyFq#ouQJRgpZ|ifiBX}Qbh> +COC?pbXnG;ZvTK!Gej!qgC8mRA*0nhY_sLRR8>FKTh3l>Z?O-=0_5<CXR^aX@H!`zzwf^-TpH8nCIB# +r#jC!o4!vQ~fM4=Pw%cy#Bf3({>9Qc>3!^T#h9YgF`Dn+bf(@bf18X6_C5Ye%K0W?b$q>JRXnQ4upNq +pxe@?S~(%$uM2l#+zkc{@B`ht7`4)7DM@jMoc7X|26Zu)$P3P&gIJ4gf{cJAD^da^SSBMr}O#9D*I&L ++~bL|>)E<O3)}2WXV0#+ux-Cv#jdT#oC5uv^&OSXJ|X4|Wq`l_^{?6e_utPRc;Er{@WT(YM<0EZ&lR3 +|<{3U8eBp%`_*~(w+9%lkm~U*uTw(9tz3h!Q-r#eClP5l6Cr+GTCr_SaUayy(K7E>f{neLzZt&fA-?1 +Nl_<`MXPGwKQe)xO8em1cm20Hq{f_Awv4+GtD40Ly6pnIG}tIx6#>dS1JTF-7%-(>fw@3W`WQy9OS{o +;3~O>4x*V7qZB;*UZ6G{nzD{CS9f8{+>G@gG3^rxE`E;<t`-|Cy)!XP)wZb)KT>Y46#yXFq~HxFYwSu +>%tm6X}k~p2nU%V|(_yrf*c|&V5kNdh{PMaNyv9iP2Gpt0Q6W*>Aw$!3Y~2)i*IAF@g2!f6b7@-eHN+ +2+%n)vQMvm1BWDrhYjf?9gM~y*Cguo5knB?>Morld&YLZCNW&E4+{+rj=0)j=o!?h=QX{<^<m_Y7}Yl +>L>JOOk)Gb6!G!;+*nqCEg%1b|4NXA%>NhYhuorw0r8n$IKcQE*!2=Q!6B7o5ex!d*LPC5(Lcau_zg~ +FgOl7}*+{#uP7#l~MaDnpeXq!~$7ly*q!T!Ete~4uLb9fNrkM^@a<IzMAI{Cf9GS&Z%=bzamCVJ_}e@ +x%LeTk{`lFGk9p`oGZS@>0yq|TqN06<T{#RfEv|Er!ri8tbBh9|z#@JQ9)`1{}geh$W+7r*@S%TK@f; +)~BP_MA9#=FBO;kG}o(+b^*$J^B9o??1JF|9+27r%M<&Zd{_wQ>?^8A{4}je}sQj)-*7888m3n06^kZ +=bsrjcHX>s6UN|yIqscz-nkp=Xm!`FUFv6_eWqeORo{O5ZQ7txKl<n+73*)6{E-J0<Ln2DqBJ3|A0Ih +#<iWbSy44dWP8`KVIg!XncP2zSh!!f>F!_>M6Ja4yk=_(`$&w|bT3TA@R<EJ|0R26{??Y&V$%NzDYp) +$d^nor;|EsUQs_xvmQw4qMjvYHV-KS2SQa}ClQ?;R?K|Or<Fb_v@Fh?NwlZf;Cr=EIh<@W8{S7OR$si +>%!>To#BcinYYHs;kt8;P?dbno7MRCRUrO(RE+B;LiE&E_G5_aCMIn{U2RF_*b#z<>dx!Na>g|NL{cw +zk&C=R=1Msqen~E~gXa!)YgTV`HQG-h1zHJLO4xG3VhBb?)1*zWS;K_3nG%R4!b&pnm=J*WbML)>}J2 +`Q($2kk)w$hkV|L_BI+c+(mK!QTj2TqO^Q3(XYLf2koUY(O#lo%ZFyx-nMzsUeN4&QRcqa-<{rnhW<T +!_G~~o_D7wlq&)22y_?fd_2c;Q<Gc(${`g~VCmN|upbc~Q=9_Qwm)ZuE2SF+~YC9C?wbx$b^ivt4{r| +uA&NVu!D$C=AG=po_nk8Rm7CozHk%_3N14I!F5b^+2Kva}A1jL2_0Rl+~2?;?V1V{@=44^1)Nm4*SlB +$Tjl(&L{ibhe4FGO0$h>f5Eq9A+r@6<ivrl>ri=`~+GYn|MB-Fx=`?DyWcDgqxaT(EbY1%^I9r>~#qe +bwRHFNgj!XU>SaAtV2hk&!nd$4uxyaNvM!-MUqj=b|yQ(P8!<e(c}B-%M!Vw{M@(m8z;L^B4@+0OSol +fk)7`>3fl+Pefwg5xHZ(Nc+7ax9%2cw@c)qH$`6fTIBSZGY3^y{?s7lF8X)u*fGC#>((7LhA&im2|o- +5=w;8@SMb0KXy-A!KYaMGnLK9C*>C7Y4!{E4>_0p%`MXHZLn5*7i*$Wg<j%K6I_y&ndqi$g3^#5U34c +YT@H3I~=g%*@9QxJP*G%ZQ)AGX3E72450C^d3Smd56kscrF{)0hz(CICa+Z99FM<Qp=i;R3vBw|NRYo +bx~|NQgM$Z|o44jsZ(7V^QMe7FP)v>->&7zzjb&Yr^~<Occ2?rP3v2zo&2zxUGshVCDTL@TXb6hlXqo +Ajyx{mBPKT5ogi$8041>NCXJf8<~NkuZaKV&$BDg%`*bvSD$c<H#9uk6zd#dco-brO5q?p^wV{-5&)o +bgLBUd?0`!LUrMPUKMGx^YZCeTRi`U8*b>Rd?-ZEuq~l*AnSF>7yHlq_yx|x&bUYXSE{36_*|s7Vz^5 +&R2-Maj30C^sf+$!e)&bz&(xY=u+!oQ#gkAt&Ye3a@4dWSR!#0BOUB2@bK_zS5rh6$<l(=GJa|OpJ}` +Xj=(Ea9l-1|`0e!|M-MAy5&uzB_bXqNLsQ=?@=vO`$+;PVp;cCzGp&vO3#(~@;*TFa}7Gxbc`r_>kQa +Uk8yjk7k`OIj8f$`|KA_E-^{k{<Ct2Fic*rm^4aP+wyHc4&j4QiAATQRiS60og0riG$EJUqNc{?*6h= +P%(0`inoXyg(m#ZZSZ=+CAB|aD=Rz6eX)Cc9Rmtuv{@P64ibVRtyPB$DfY|Fj##CgVkqj(rs_(zP~1N +GZ=LL!(LYX-)AoKPAK}--W&N>T`MFWLgy?Fiv<k$gSuo3`mvK6r^Siy@vicMVpydZiYEl<&paVA^gG2 ++Ei&NifIefB`h0p(pTS`D84OmRu}N*Vn#=qgOh0;tf6+LrW`e=aU>u=z#A0D=p4wT~PwpbV$GXbe9L1 +2`O-`RYCLjG8z%WEHJo1fVaOra&N1x*k25eH~fq;LuHt8nCaQ)VhcFEAM@qIzZjvd1_M#+bM>>@{G1` +NbJ77MT8Yi(S{d-z*o2F5FSon=#QXL(UElq-fciecO0adPU!w~aD3-zv^j<w>N~XD7zEX-8=Ku@_eUy +L9PtBfPK^eT8mlgLaDr+mF2`ufcBOtMF}%9n&M_WyP>Dw~JIv?kZ)9Ay}WERhu+FHBJh~c9&VnJ!HnH +9x`=APnnZ7NDhBgX)w5BjCM|pQ5XGc?~VK`J%!K>T^ykay3q&dwmiYcyW?a0FBp;k*Jee_cEzwoF>IK +k7*rR~XE2mF7#2Gi=7C{McbPd_F^udfxg+i}7#P^3F0L4(<KEEnkIle`5l1lBtXU)L)~yrbB0JqYsZU +RS`|UTWd_GZj&$v^zO;Zf23oj`KzoXCCq~fe-S)LIsi_&9cL0YWLO^K5^is1>xFkLZBQ4EaW7~?MoL) +#zdS6MLfuX3FamM5NgLdwd@44%f|uvj>^`n{Lr)%-hUmtxqe7>qtE25gem=OVR9%Q9kQVS21QqZkSm! +;^~PuPR5=l6o3Ku}N{R7~`eyLfe1nxANb$Yu6j00s3amnpJ}#7)O0re*5jbe7Spx>@DaaJ7+}7R!5)L +yYzXbgJG$I;c1nl!m)8OJ2`-XVPXvR&wX_+|Hk;=w>+1QKf-hMzw;k_@WDQ5X=!glEBc5I<mToY3~u> +qh$kG;so)$d)c9zRuO`MopPzE{IcU@y|3E*y@71dpe2}$k*P7UiSZ4O@*^-@|U4x-M9QE;pflb<w+X# +JD3?b}HUE`1J)4X}}cB}1_n{K*Eh71`Zt5&TN{BmYyrc9VHK?({Aj9!2K`RB&&5DSIE0^RrqY!$H(@h +JHK1ATsXb(Wm}Rr3vRc8xyU7-O-c&+}9l8lr#Owr$sGtn+6}f7`ZgJB=JUGHt|&5#OmDHGC*3DUk;rc +tHC1?=Me1^^`pK+;g&E!2&}M`91W40bhWhusFzJz<@nP4)KMov1d+CdA}6;&&ZoAvoFRN*?|}Xea0p& +$+-{m8_d6=qM~Nsci(-}kRO%x`I`54+_-ULnd-3Udy<orBdQa^^Ly{T*Te{W_wF_F0PWBUkE~o-et-| +zBhMkOgBR!nI&Jh>`QX;)wL$v)_U0ADflC`BJe@mtUa)xaVp9iUZAX_SFE3Bx<KyM}>#vuaZ@yVHwl= +gt2fE>&V6Zb73lo{L*T%LUSUya){WVtob0EgRKd+n8LpDD%N<MvSlbkty`k?Z=(e;N#ixx?Ke*RDM=g +*hv)2E*vG-!~dq@<XA*Sylm5*W}6a6%h6g0WD8zz-w$_-J&6dIWhSuMs1`JFtWp3jdeG?9t`ce>honw +<tY5{foyRfBXV;4j3@NOmx~}xaF2xWa7k$h7b4*TidZXpcndW&6nJOBl>`jpbx?Nj?Z@I9^}uS%dEel +Tgbo4Qt`BD(>_2?`}FA}lP6C$d;kOVckkX^5)u;3>+k>!c7nm?z2suV*T_9|azuu}=9VpDDn75a<muL +}TX)*9VZ&T<h%2EV*<>P1)SGz?x~Ms4Wn~%t?a`x$#Ky)-yLRmiA9$a0f^meBEvp;$h#X-LkSpvlytD +NUrHOW1WBV6|e#KqTsZ*zL-NStJdHeS51_S#;-B9(zU`R|%l)ioY8rfR8a;2f4y=KpO4BhAf_J`MrO_ +3jBZS(*gKqt5^HdtxDpx4Q7*|KG<^1Wowo;}r`K+mUnW9esIcl=}bl}Ww`J<40r*n+!?jXo&9Mdi)N0 +6vO6w&&P-B6gHL#s05fzg~PkpYefyzu%n4Uh6(pt8IH!edJ`N{Z)N!rYF$%Xl(z+#Banu*nic>LY|{< +9H9k%qq8cfCYDG|O*OVvb=~+kYz^{l<q$nUFX0Jt0uQjs?s$mDTo)d}5B#~}<rhY<o6Q<Ydky_=S#`^ +>TehJMT*wf*FmvWiQJZD_w0l6Cot%T6!4@%)A95llw1aEKiWSrti>|rmn#-lVhJG9W>wf2h!P>=8IM{ +D&kos<uCm>V!+7LB;LqEK+F$8@b<Q`dK&(Wbp+{}OZ`(BHFxBO!xf_-c-7LL@|2M-=B3l}al^6lPtJN +X>4gsk%%9{}yPKcaE%@_&GKL%%!!Ro_#HT;hYkVe9?a4{RO&$c=-&-Lz?wELpO|$g|a9Cb(^Fp16tU$ +c*hDsLd>G+O+9ELVFGUZolY`VcfAzeLP_n6&0ED!Nupn2EE7@wi7Itc8yP0U!lBTLO-;qei`{!|DA91 +ullgqny2mG!5dzK54I-<&#*=G66isJ1=@9uE3q^6((kVS*j%bUo)F&?|L~l?9242%`1<Rw8@tOMps&a +~^rHtVk1MYt?S_7L{Zs8kP5lQ9_)g*%>>qM~Kf-si$K;&sJ$$hBUHHIrY(BOYJEl2>>1!zFt4+J1AK9 +%>&g+tQw=Lp*Teo1J!HBG@99_^Dp;~!`U;WRkOgn?0&-{;n@?;I}d$=k;w<~$-Ty{>Jc;3@oF2qcnc* +Nt0IT<+WqpN&u>KvOmN6%F{HVL}EYu!BOxa(@rKh-%(;Ml}DHg%58o#S=Rv6XX-agI}+qXdpkIM)8&P +MGHk2KV<gcV;tBJ+UJ7KArn@o(akqc}_<qxE@&7V6B!K`$nkG?~|02^q|K3J=NxO8#cF{5p(~$$0es+ +`}4CR*+)fs9SZc=s0GtgxcxPe!S9G1`q9u*9}QsrQ?q8x?$q3Fyz2B>?3u=#r`6tmt9I${YL`CI_`F1 +8+c6pg^BsoUbcSoZabnb0fj$|vQ2Kmbom%b(KZ(5igGkICv;Oz>tp8tX!@auZS$99(-fLp(=T6LjLFZ +3ua}TQBe1!|sGo{~1pNswqHF0XOAD$Aa{IOBJ-d5P@>C>ktE?BT29vX<9$RF^J*mZmnwwhR$IED9k%y +^{wV!x0c5B*MR+Vpp*$<t$NXnk@3%|X*NUl?Qad-7b?C5~oKY|ca6<R0|P27MFg_t7ica57ZsqSiPOB +oAhN_q`9n_dKvC_^;z%e<Gzb;!Pd1(5V3qJ1#QhSfFp(|7f7^YwsU$%Om|E`ixO}{IIr6w!)`q{+g(9 +ZoK<G4ERqB3@!Mdt&3Al4UBp)HF>)}^DoB&eNXyrMjopIy*7G0$Rj-}dY$wM2fk%a-DlUwk88f4Hf73 +`G46i1jb}L$Tl;c*m|7zBT<VDK_36FRKOPVykFidVhF%{%Cgkzf?E(8>*C+mQ_ez8N@6f`iaQYM8>_9 +#C)QMv<?T6YlAdm4u@)+avOglL87}TdT>ua8rxOnm6csCuajhu62&~KxrN`HZx@TP_74fYI={VI~7v~ ++tf&}%~{=y$r;C$5+@X;RwMsZ+<ed#}(y-GsehP+zClRPOZq=rd6dMIPxf(c75e^p_?N56tJLCmR}!J +XT)peFv`}+zSrw0mJ{@Gh<A@i(U~mO={y-9;u7dU!gZ)dR)%>Q%2lv*1E?fkKNv`&3|ID*|TRSE?c%N +9$h5gCq4%^w6F&p-}fe)z9Ic8>Z<FU+V%>kzkp8AAE8&6m(;Un4;XG6P4Ct%|LE3Zk3E*A_J54+50Dp +-+p#Cu9`@o?^~dt&GyP1TfckWWQ(s@{(h2%ZbDTceREGwJkw;y3u+GnZuC4zzKSK|R`Q3dMckhmUYN% +&)@KwL*vCyl_R~mAiUZZPVV*glw&YU@k&p-csJiQ^}ap<slwY_f;I@k;B5$`eR-})ZAs1u>&(Ismk?L +RU0<jIrMX3m_M%0A4UJJ;Af>@L0!`;RQJAIKtWyL(RGAN@d%A3dZx5hRZ(aW%cN`qsy%Q0Jhg%N~<os +V>&k(t~?pmN)QX@BDsp@~aQz#NQ5Gl*b7d<#B25K$Z{b|MmLU*!AP%<G+lFi7|Codeh0t$@1irPn!G= +nyf9bwi5oZH$PQ>BJUKBm6vD4nR@}OJeEwlTh>3DF5i9inMfV+Pjqy2huGNIN#MxM%^f#v*swPuA|hn +$*s-P#Tv%9WY8N*5Vb3|T|MuQS_9NIQGq|RH?tPW5dgH&gZQDMqdT;VTd_8>`dP^E-$s><EVsO`0YYy +g(_2c&5O1(VyJ=gyQf8Br9*7)NXy+rE9y?ggI^;c*ZKYqN~ckF@fkysh9HDoIf>L<>pq@;{eS<ciLi7 +$4O^EZ@JwPLSy@8^vkJ^FQeJk;nPe)wU57xdTEFW2-7*mo<3_8t*?RA2S0?&srrtreP|ANK^lveD3JW +o!IggV>J!rk0BgQcI_=fquCA2=D;Az<JQZUSPMenb5g&=gzsF#`P$S{udM!Bo-GJ$J?A6K10K(QKRJ6 +TW^*7@4w&BX6t^oKg8#d8*4APFLC|)^~Ih*uF#la>>u`L#*7(bxE?imd_FdZ-om4gK5BZ*=mno;um`r +rOT0`^g}7ZYEW3=gYt|30VYzD(_@j)B3}YL(SJl=P;TL-iZfx?wg9le%=Gta`)=^ty?0+aaYz+M3i!a +LZ<;zX27~4qA$@UblaBZ_b>sbGbEP>a?;OL(1OF{!OMvsH~)8@^a?R|n*x^@lz#?(NuGuS@(Tv1Vh{2 +kZ5nC%JFPp)+EU6U49IMJ_$>|34Ve5<^eBTZ_3_m<hvcXr+1-K{y#6PUrjzj7Jh+YPIePW6Ya>UvM*v +B!!PD>jsrl$=o;_5G?<tDauHdUY+kQ&v`XLa#CIg%@5huj^<2;PrZY7ZnxlC@(KJ{Ios{KC4b2a-UB> +ZTIfo)LGBzHIAtKok9=EjgeQM<{<q)4crG6qw)39qvleZ?fHBbnI?v_@r>0eY}t@+1344%>H8Yi-0?= +O_}GIFW-WBh=0xsTF!6XG2j2YSC2sh%&P~`R^axt*_d6=Lt(5uW0<qz6CwC%$B!4AWAXkadTxqe=MX! +~d9NLk8)?J(1+r&6OX%4pZRNxxq;^bcBe&l`RospV%62lNvK{s}bK@LN__|miE%{AQPyK{k>4s`@_Hu +eub;e+fws9T@7%fws6d&GLgn#8)~8)eI8n`@AB^in$D-@t(bO`jVZ#y%X`Q!JbEx|w{E*qykYyn)<lO +42=Mjs9PVtkHd0x^$_D2f0Utz8btlUV>xs%H0(v?w>NeCguk0M)ptrg0Wll<hXyp`clS=xzTd$$U(E8 +<WPT2HtV0V{73e%^~fo_eCVNv%${PW;pO31OJx1@d(8cx%X99PH(x2`{Ehbf9XocISk2y#gWV?Pf*;s +ZH!VEIm%HVk&s+Z6dy=>oev<X^N8|}y8@sH&f2#X@>@;+99rl7=5t#7V)RQ=uJR9G=XV0Em=Q47em&L +Wv>1parPd(Fqrnxh(<Mk$<=AN*y7UtKU_{Fs*{D%_rjNe<kM&Aqkasa=!*3`p)Dd8Evwe|;3L`1+k@k +?vXoKJ?C-&y+?=aXUPSJs+)q7pMRlTwGJObW|MO-ak_7M_)n)+KZJ=%m!d%(kh?!!yQZjvG0l?eKA_T +@o`>+hyMt9+sMzmOL^k)Bf+qZsE7JiwKYYw|@-_i<*#;m1+LVV<WHDA#k3anVB>^D<gTrB<H!ll94n% +OIJx6(Jv!8J2@q3R8nTmo9?&o%F$E#my&&xvXfH6Qux~~JTbF(TK2fHNg3f`S;=w3`PYKo!bc{iWG01 +2N42lx<co{9uY2{V_O)n@YF`6dpGUQ~`x)IYu3ucwp1tqCCn3Rk@cZ+t_niN`O;P(uNp;D|lCvc(ye+ +-6yz{(k%C?m4E2}E2E<0OxZF$S`Hsz7!y~-2HN0;Z6&njP3zNUOj`M&b1^6K)l<@~T?rCuYfD59vSbW +LeR>6X%6rTa=NORGwclvbC9l||^;v3h<#y~0qvM!H@lPp>miuT-Shs?e+L((6^~6_4mOPjXe?wZ0a<m +cB4w8()Mk(iiLN<?H85@D25i_NDuBe0jb_z9QcmUxjarZ<lYMuhLiLJL0SMo%EgcdHmP<Tlic0!~AXh +5&lSjtiPAPpFhDr)IZvv?$7b(`Dgj(`4{<%{A>Ib{w@Ap{(b&Rf0h4;zuK=rVw;%%N0(5PQ?#gPOHox +(%i@UQ$l}=IUd8>26N-nHj4r7vu{-ARUh8Go!n|#~k=|HuFK<6@f_JEQv^QP%agn#K=;inE`}qGK{|8 +V@0|XQR000O8^Hj4?epjB<nI-@L1fBo@8~^|SaA|NaUv_0~WN&gWWNCABY-wUIcW7m0Y%Xwl?LBLE+q +kjc{VTZZ=8#Gx=F#k<KK1rGiL>k5JbY|tx2@x4C<(H;mPj6wvZA#8?{^*m2#_EpJG;HT=ay$TmMCB_7 +z_sU0<i0i?vK1lHcisYJ#SgfM&II_o!y;X?|GK5i{$dE@`C3B@5!UbzaPOr-*`VJX}tDM<6n|IgkrCf +iAYN^^{ULPu7r2IuCB7wJI!X*DlUZgGFzt8xJuw1d=P~fLwjjeB;#e3!MDpoh=oWigmo%}_v+~R;hWR +Lu=-eeaXR&$zkPFda`f!o+1ry-d<o@tW<|E}qG-0PmW7BSFInVSQ33n}x+0=^Qi&p-mpeQ1hjCnrub- +-KSY}eHZ-ASql7-OUld@V?$-E5lUv5e);$*H`S%|WXFGYmEM6+bBYhK0W)jS!iukc5G{H4rN^?9CMUI +Mk%*GwalXJzs+kE<*7qR^1bE5b#6TkATNSmY)OpA!DcXom{rD7q0v2}2M?L+=H25YRmQI1xDxi!3|I7 +SOm?w*jLxOD>1r-;(?#z#MwB66glB8$z=mtEgJ%_%fLTu_X+kWsI~|P>#~Fisy4N#Wrcg>-H9+im|*Z +`&xb<dan=94qhCb9YimWULC$UczrnZe){3?@Kx0ML4rc!C@=xy`ZkC02ksgot3lVR2<bZXo}d1BB4S` +d`uJ0Ud;%Zi$(0!Hc<pC`zf7aN$N*rq9(tFeis)s8-5kOY#nVW9#Fon;jm9)71`;hvbA{QPtXRbJ<dc +~G$Uh9dcWJrI@kjmcuqd)(X9t-CrpmtJmJk|#Mel+rO5+7E{a|N@Fo8mEvQ!|tyWRv40$|?iN~B&Y#8 +gaS63mb_<EknG7}lZZ=j(i}IU-4CnLpUW+IbOQF5*2e&46z3JCWq*^>K83a`^J-FVK>o=l+hE14Mun= +JU9kL9ap>Wgx&RsjdS5m-r^$9^Nl&2Rv^dewoY@e_JRCVO5Gf$8Qt(ZRf|slj!u_OMaz!JEY;HkI_wB +1inF*G@E9XKS1K8S>@FL_PkD{tXBMc<-OAP?orQ7VxR9lx!5`WD-<Szu6^%;QF8~d=bwyjSOs<tPM-e +&zuSU}`l1LJ48lUdmx&1ckq;vt`No@2z5z(jj(X{F`W8ws5wIwVWB6+g_arBIKY}4A8ZbyKrQ6d*hBO +)jW2mNL=0z|clN%Am<0Ozk@X4_a0CkRah6VvHbP;Bo4&0B|(Tl@p@4oj9m>O;v=ebCyfj<RwwgUIl(b +*5t@n2sbyn6Nac|Xj>wlD$3cW;iKzkP8SogV$|&>tY<KkWm(G(Z;uR=?Eq{qUD8Ndqc4Fvh^5tEBeae +7m!w<Y;tq2o(xJivY;apzwWvC-~FxAJfHm=Rc1w9t?Iy`1L0J?)~%uzPUfx3Fy_>cs2MF7t7b*y<a_m +*TMUcKMd|m2;&5Ql3(Hizi=Te@jhH#&40H8jiYD{kG_BN_T=#S!Rev*5Bv^1@a*mBAuui>4PQ@>-oE+ +ukl&`|(;p6>9lZIz)#$kJ-<S7yzc~N-eepiMxDNxRioSql>*$rM#?JxO3BEl4`OAw3U;g9$>4U-Gefb +~=?+<=wKsf&E*$;2uK=rY|`vuP?zwzTw)~_p{#C}$WrN~K~KJ=Ndsw^T!1J{;#F`mX=w&!KWlyn!+vz +b8-5g<@wXEKk=(t8a$9xSCnHvUCSs(~@LLE<G<6a}T2&x}cfUqe_IQGJ883R;Ke{{Bz<cTiH~YYi`+P +6^b|!v!4|!l4Jc2q>T+UCZ7E&Q*;IfLYgRHyJK-)CmIvZjC@879j2$I2i5Ll~Ay@kO=cE4|FwM3uLx; +J@jt8BsCz|f&hl|8h_V#?zJ=)oZtHA^XrQm?OBpeqeV7d&K2&n<$TWcLv;30g)q7Sji~}XZ5E<j&MVo +`ngp7aTIH~nru^a`YgFf1+<|Hjez3%Hl}-%n66dPsMGwkm1GxV86TXNOP<oF@&m#>EBy}2(=K_r)q<u +ZAG}f#b=zh6T2F3}A7}GVBN+v-)Wc48HzPNydQG@_Q0VYyoknm9}tb!31We%njD+rGVO?u3QT4cQMyv +GhAs5bL>a*YNOHcA!FA6;~fdUTa#*HBJLkXokvgcHV=C|`d0CH;L)1%R~UWip?VT9UA(;gRM|RnamLr +579@9(zxpd@~3&2>L+tQE7XCK=4@i8SS{}8b=M}W_cAq`RZ%G=1)tck^Li(cr=4xWRlBt|0UR-@EL$7 +vo(J+cvtlTpCbU3fKdS46Q|sXbRxWE2|7O*%E1l%HXZ0jLMIU725cAy8U8eWxXPCEX~f7t3I1T0Av)f +W!2wIB^;5p)_vfUsUf4f^5<wbT3VrvRzZH`!`Y}$|&ELRCqM5aiD->u&lhrh^bSBkdFDXfA*xW`iBmj +T9TrAdp`}cZi{YT+rM}bH;A|<u@-Xj(kD8y{tBV5GQ<SI~=ThnIIo+)Sr0H8&9S!A%-Boml({-9ON>? +Rowe!4Iysh(Z$L=fjxf*dgOY!c5s)qPm3W3q+a;A<*z3pc5MQEToIs_dgK)C{iS%H!05-j=j>(;FYjE +cH}lw!vj9WP#<TJw7;IhLYPmRx~nf?K#E_9~SdX|4HB<r8G}HLJq{c@2uVN_zIgn?_NR6LLYXL7;gO9 +bBl-+k4yX;$X_}}(;On_=nw|KD(7}`;Aiujl3H92Z0w6ruWcRZvMiH;lWi)nfa4l*Vb`E4|D_y9h91U +*ZR*3OIDe)WHMv&CHRsdvhLarZ$0S>p9vTxMA5*XqoxsrkG-+oujw$y?=!dY%_Q*l^f}yAm6kwaQ9*d +fWOlP|YyfX?gT^l9fWnE;~lOoC+dFY1lA}=n1PMbtu&1)v>wS6Tm8~a{4LU+zc{fBlc&ecG3`cMHMYT +`IuitdMKG(_4AJ??4;1Bs6yeaa^L;Pf^od`&hjJ1wEx>Yu8Zlvsoeluit)__EbL>a;xgN>8S5HqT%o9 +DG#-KDWgf6+#BkrQnNO+N~1-^Q1{RiFU(ttFc#JXBPz<Vsm>cl0#OqKCwrWHB4?Z^c;{J5y0kZA^P)1 +<c)>e3ZyQ)D$oanWjTC-YEwbJY_K&jZewsQO$q6?4{Af%FZ=<{lTS07psWgOf4rO==&Z7T2|mqiQMkH ++!giT+pOo*BbZ47Fv1L;rAq@?@TIPW6d6HH^G9X4EURm8-v~((~<{zc*?qDXe!p}Q`2hKo)uiiCQ7Po +40>jrF~Zo8NOL+@v35MUGScB^9To)c;q%*9;Cm6)Ry*MUBjwpTV9R%D+~vk<0E8nhr13yo*)_Nn>|xq +{g>7|+~oSlw5lA5zS~;@e;K)JkTuVmAi(jA3$Iw@L_7+PpuDHJRyd5II<vO^!pYu&Y^C3xAB~OCgPar +4Z8GfCWKJ;w2QRLtf=JI-<Ww%8~-Jb1;$x8oAPQfXft*Ca}k#CC-~J6~|O&<Mop%0{<0K>{k5g)4XcR +wc9Z!F=MC1Y_X?|?V^g?jPeF1Q%XXU0xU}oHmp3@uU~c5xuul1oOPR|dj}&yrzX(bsJs&6IK7lygtd) +Mq0Lo$$)(9fWlXKKVPXmLwk$%7a@a#6+u~-Tcvgu*wU0qCTyyrI)&&<hhmU)<l->1?p&z2SK_AN+l!V +JA<{N;%h_FbTPSE$1L#IX2ocLp3dDKZI;fBL`wnArBTNcOy5mz!OA-(ilEGip7wEPjRFoPtygtLu90% +%fF{J=vaKw5WYFgPDQ-ewup)qU5<A<NladO$U-vP$!iRUSA-yT=@v6p|G}bhZX#|9#Q0+UB!niPUdV2 +EhE$dxRD|eEJURI96VP;c1WRZ$TNf*pVwI#U6ls;61s(U<~31_1&va-9pi9qr06(Mc+l+Mlk6CS71uF +1RK7y)(>=w8uNWvdr2L!gW7}Y^xv5dR+2{gg)Y|8aIgriO@IugGRSNj1Ce?><uZRzangx!EcRW#93v% +zAbaurGAlsTE|h=9(VmvAj3rAu5a5@htO7?d&PNKD#k`DXA{u}FRHV2_1zchf7ML!R1Do#q0Ee<}0zW +P%Nzyh>H9o_Zyk233OH@GpLdDJaOQ}A{#27@#7(!VHLx4b_Kz<#7C|$(Yf-<=BH7ThjP%1IzW{!%yj3 +5STO)JEl98m2h2hAo`q&vV6BdR&RqYO40G!{ag&ttYi3n3A~VT%^o3PrjE+MZKfFXTVjDuDk7Zqk;Lw +z$L(fn;M+U(g!GNIN1@I*EH;3s+Q|xVoWF;YVGfdji-~$c`$;K*t=rX<^gQk&u3*Qz6ldG3yTw;U@*j +EJQV`u}m|wvl6&36JL~~L9)Zv0Prc3Pp0MrCGky=H$z!AV_=WCu^~Yi$U#xuXDL!OS^bm4=WkD57}JN +)vu22%8@U=q!z<<F?54)58nL}un(kI7@`1rl<THvs!JKb~x4YP=OZ{8HtdVJe;opvqK`nUs>fr3~g;O +cqmPPR4oHUR|<K<=G|5Rj^0CNPxaPTi0>ZnfoM7%g}+i#yFu><+L-F2hem`E32mNKAb#p#+$jl*rq71 +&YA5kOSiaxqC}35ayr0D4!KB`bvWkJxNYUreE!qDr_(QVhqTqR1Zp8GWXPI=!w4%f0&1FLhc2kv17$i +?tHBoKhJW*%#OciFx2-IssHb;fVQO_;D~8m@!ri)=G%`b)iOpyNnPJPS_a+C>tt+n8mP?L^}G%S!ox} +LNW??@a(ALcNq!9ytUq#dyP_6EH`1)h(|gQYKA3UILYXwEfiE6I8rE<FfkC`0L3jV8lr?-t?R&dqlV? +;Hsc3I1$bfBsQti_M|f2rMmXmIHZZ@V`A&MaVZOsxr{%ttneUc*ywd64cD<KLLDIWg&R`+EO3>X~>NE +?G5hIyGP|rrnkO78<0)bCR0{dT)HDBV#asv8NRW=jzFlh#ANzfgF4b#z+bZL9wq)VNNO_XlHt$pS|6? +U1s-PuK!Rk&mo<*=4WP<s{6ue<80y3z-jv=Un^RB=s~x!Ly0#7)oAL5~y8Tr-uTma`=8uGO;|Dux;&< +w4ENdm8Uw9J^}CK}Ff7hMfdDj&hD31eux|ijShn5Y1<6-KY8V=|UZ4S++D>C~dW<AH~)7D5?dQn=t0z +n{3sZea)FS^s?%T+#_*{%bihODOC)jUIFElVL{c>Y@2TGyG#xA{X!KSdi=Fbf?crrXmPHx+?$IV&;+t +{4s2M)H=;%b+lEz9w38xsiId9f1T><G%B9)LIjs{woMxv;mkZo(ATYpQcJSLYH7Dt`!}E^rg4E>TTFm +zFu|Z+S?C)xeY65)_>GPx=M^}&Aksg<&keg+seqG~=AjPE0iZvMGpj?3|J*3Gw!>vI6js<L^l-tD^H# ++RRY*~4!_*i-6GN~xFZZ2?GVZEMc_HnsjG~GcG*3<>^LPc_==W8Hv2Zf!h13oQdLrdFM(W2KZR?@az& +n+Jd(|BMK!Hm{p5qbw@2`ouFvc|%j0jGmm8Hy0mMGX^|ahUQV&6bx}_55WL?i;1F{bU=Jo#TbHPSt7~ +C~F8PeDvn@?BLa_!xQ{+`oqD=A-$Fk{x;#em$aJWoXgr)W}3U^W<w31R<QKkf@Ft3_q==4@ZOX(F+1T +9T_<FJnr{bo#(@95NO>RA9t|!CRvG^>_jB1*PJjnTN9E|4jf6c}L8{hu;R|a(n?ZCPeMjZAFIcQMCY; +5W*w(1lJX<LZHOc$TbZ5+`Uj3YlpIYe9Da!zDEC;tW<0TTevf}ZPOKV)g>Vg_BPk_+){g@PDATO+~V1 +Cm71e!HXZ-lew3e8QlkI3Ct!ce58k^9+lT$Dl3_8$$pJW)+-QGr?4*|fNNeuCwX_7Un4`<y^kom4~)j +xN_m)32$@)t&-emLpgRinVkX0DwkfxM_vIkj6Wi>ZHuX+R5P&7>|=<QA#50T<x6W99h$^i3>ib7~^g{ +XLGyW8ITSWaAVw-N(A&)S?X5^ABLQ{VQ5r9U1KGnb5v@wEDAttzLwvo8Tu!f8)zCNl~MO6V4ZoHv96+ +4+yoUjm>|&GwWDpLx=4^BA#S;?skdtsxT>nW+<W-&5(+NIxNGHMzRu%^G_@Wku*8V+;gdf+y>*puzuC +G<zMRjY!XF$6s@yo{0CQD;h%3uOIrV;7mA>g`lY?lxn{bxFG`WBOdWC_h&RlIyF;^}ox!<|rTME4+Fi +#MU_u&Kl0SW%$1IXWcHmLGL)G%uXjJ*j!$4vu6sg<u1Xbpau&=y)|fofHIgehSLg~>FT#FcVUF>-pHL +0=WD^`+X5jVz~&X;6BrD(U*fx<m3}k(f#_w+<xCq!4+WPS&cJtYxGgo?%-Pm}X;4VrLbE#+^KENDe@g +e1;r<!M8#MUko?~4MB)SsKXN#y|ZEonBjNAK>ETSN*|Y0VW6Le-$HId9_p@3w*km2wjMd6ML*X%tX|< +wV5r%k;H^Yzjq`Y2k*Y$TZZVA#&i|lY?<U@|u7;=T@lc~c0?MFY68kZt@DqkfF!Q4ZNLw04Uw!pt0Cc +F?N=L1XV74A1FL*BZ<v$6(c`yifj1d!RF5O@T3lH`l?ZMdl;M~Cd!Puyf0=;YA{_r7_Bk3A7@)09rPj +HKP<!JcB2Q(2se6R&<ZAupFs92&UMKd;(-)migrW^ds^O(JA{L;`U6l#rf>NQ9Y-my`S(!@2cjp}_YP +=ow+7Sw+$SD((q*_6)HN`^C(JWE~M2&ttc%8=j2dO8MFx4cDKrLBwJBCpa+S8{Zb6P8vEPmY~J=gNlL +Hc^S7-PFbYHTju=RrQN~m#xFf4^2)70qA|ut~Ru=8tgP%*4=CvLOvy4a9qI=+OmD?I>fR~@=L3(47Xg +^xYbc#W1A~=)#MU`kvsD&Rk)i^vIt7#*Tw#LMirQMyB*3p=-pimAGDI7s2NmhKC(mS`30A?yGu--&px +)NW9=Vq?i`_s>a1f-;YJ-^!Z)_0{KO2vf}nF6Qn9KRHZZ%j_fw`jfGS1Hj$aNN05Hh_Y_%nA!7`L|B0 +8qDB00@-NdmcY?aROId6(rO6BugZ>d6g(y1x>nUlrMWK8`2Xl$$Eg`7mLOCr}a972Nm==0p{-!KgJ3g +7+d@;wIHpT*5kaBS3k5mEDN>`U@La29i+vhR!djBC-+-Q_^YBQfknIl0%5<L_H|+P$hRs7r1F&;j_w$ +Yo1B!RGV;dJ;l!r_d3u)R9*#ZuRsr^%ayx}bdrHI+%z7|<7GO55hdMI?$2a9sZmd=Nv~viLqT7%B34! +~cdSaRjFj23m<YLU%Dy;?G1{_NEAQKx*o~z8L`o^lT#yv_kpjgX9!qHx0eq_E-fO2G;Gd*aY#+#~#tA +<?e&=OWw<JF~%XX)%bwJS>PtA=D4a9kWYwZ-!pn8z*bm!uO(s5r)HVw`#1SuG?I)8G(A%m(2YH~-EnS +v`H7wN{QD-Vs5V-`tCxtzoTx7t;RkI#x>O_jcGJnq4flgn63-<PG8-mu@+8_dUA-4q_1b`anry{qGm0 +k&vZ=N`2)j)tC{6Xoc=tPNvDJ?uxTYq%tk&l@m&<e=#x>l!m{#ZW4X8e;Qko<OaqL%kYz#W?V>(|Z*7 +J$8(tbKxE?pBtD7pWYdkl#yH&_PxM~cD<tahehd8Vc!~3GyL04L1*ilQr(1#C@HDH)4y<CH^A_WK>yQ +|ZrtT!+BE!FdnCXY_OWF_X9&Gtu!3SE;*^7!R%kcun+>%%#t@FfY8jf=)`sYMFDvvALpiQ3GSsZsDaa +`Dq&Tc+htgezlGMylp@~@U4#u;g>cz$}*O7yb6|`ywItVCv=qr&DMkSxIC&~8GcThyRO=wH;22rocL$ +r~28krHBD1^_}qFX&Mqd@uo3@L7QSOfZEU(#$d#`tV2+3zIP)#HO|Ns9R07YGfC7mAIngnL*fH1@KnD +I)XrrUaSJt%l}<0r-72JJ7_4)FD@jgFd6D4u{&l+a<S|L7Ed05bv)fcM@oR*h~wYx)^u4#3<7;C;9_L +MobZQ9nRupUT&tzt~XxNfuR^Fz!3!V@hZ+sa*vQ00Gp(p!_s`@$}YX{f&a{fj+pwl9wZ<RooKj^7V2G +=s99=Ae)M$H*$9@@@0a=bpsnR{rAiyDd!H*+{*{*kg-nOqfzK43SZ2prZ`e4I9rok2o$g}dhlrHgTaN +z*eYB8W0^>RY)oHS<Fc^hLaS455O1Z@vM@L;v%_^-rhW_fNa+fm70Rz-V(RA*x4AEijGOqFI=Eq%6rd +tRV7jh5bu6M?98uUKoYiumU^L-8HOesViJTv1*HXICoVQv%5?2-X;`xIKDs2#}(FA(8ns5TLIzyh@(_ +U7U;o~+rMj^Y0d&ybSSo<zyiluT|lP$SeqKztgGVLs-LjzMWSm%H>d8^FHjKMo&tY=`6Sy@RD$_RiWA +(|qu-!ye}$xe1~i-c}`^CEdY5_-tJFEXg7AZfAZQN2ws0hX=d8{N`f}Ov8iRe5_n)5T<1|7wGxCTqc` +Vdwi}r?i1<U+It9X8{Lb}C*<yJr*o-3o%<N<i0-Mz(4{=x+)=Z`H+9?R*B2p~@@1EY%=MJq?L8Syy9x +6`%n~r3Z^CjpgHKzSqw)b#+=R1vD|c!$3J(AWnX)AzYz<&~eiN$WExT*oPM>LN4)64#hRC~WMoNSJcB +ft~^l{%HH$iBkp`rxfEkWtr|2t?Px0~i$hVNQ1Hiq+>k1^SCZJ~1@F|Nn4=K6@x9s#Bv+}A9j-ELA+O +q4&WO)%&h57o<_wtrPF`|s1YZ#;`#ZpR)?=IUpct;i*XsuGbcN|7|HCGX$=*-a`C%KczaYWIU6lx>7S +AR2)C$uAvlMi7%*w_|2~5Tu{M-VsxS-9iYrk5KuM4p5Pzg?1KT6L+wfeVuT%p%)JQy6(f~1y>&5+Zc% +uZ2iSn>yUPf!XgC!%4G<_Zl2>E%07eKuKH%he-jIA&2ae0JRw};NiW&sDCg$&-lVnB;`VgL=W}RHNc7 +Qrs5-YjtUD6Fl}D}oraA|>&pvYIb_IDyTe}`@ulG24-;Ivk>_?~Ka89qRD)U>f;`CC`@k)G{5f*e~DC +YgC7_Ndk@1hg8b6;kHH1{Z3B|W}cL1tK&S75+RBRpA<1~rg5qt3{^dSEu>-JIBRLTw;<BX`&8e~qY4b +fhGpQu!0gp(YUNv;M`c-8`LL)u$kp_As`V|IQmT%txvLqISK?E}2d$*J+$8UqYrtI2_KjyzJO@Qh@Bx +{rIY#uvk=u5Xy&SBoIfmI;_zpK_@*mk94}6XXALzH^=CgxI)uiEzS+$Y~H4nf`M^l%H++w_$EuHoIMK +*I%aNu+#}b5Oi|c<^62r?N46DDm+v%$f_-OAFc?y-+NVB@=m&qWnI|w4u=_p}o8;<V8oF2~po2d2?~- +SjJ~mZrwf6tq>5O#>L$~wc@GobFZ}8CQQ*(REEsk~6$Hy4whTJkG(P{47+6TJT34hj22$m7!_B%<Q;j +@UFlgwR*B^uHW3rT}Ls)*o@TNYZ)MXu?>u=si>hS(c!w3Xf(Y>y@aRZv~PjhAKxx2p|zpvtH#?H07Jh +}f+5OgX03?xMWG%8oR18~uB)&0fpnXt9wEsu$o~#FI*<vvpgJz1BKW1bv5iVH@`f&pqe%;bXL*o7}do +uC9Iy^#@F%#SZ{=kq5f$2J?sa-hQH>B^~pp=-BUBpxAmBD#3k9Cc>{<piooSfcjnC*}n0Vb^ECfos;E +M=Z4-U-o-~=3ZZt)F)Pz>*>yG^%xN9U*>OB!Qbv4>T{52c9<g2T3`=HuKTpD^X>)D4+XnY2EK~BI!?F +i+&As(Y;^S!FLT-VVT*P<8jdxsw;tYaW1M<deF9CaB@5k&zk1VWRwW-}3)q7l~@Bt$YXU|^L2vZ|!qa +BT3>naP!x~vYH-+G<4PKBh5RSG9qq-@BRMTv(Ba<BmpAHrJgp#z$+rWE3mt#=bz-06<_1N=^`>M`7a6 +g0nxi)$V*x>P{b{A_$Q+2z$Y?XwW<_!(dm&v~1tJO#x!E-%s*owwld$UF4pwHk0~#5kARjuS3bT~P3W +r-Mf>Y^ZwcHl?Pb*xGu~b$ycjneUrXN6p}+KmrrKoQFv$RCN*6R|3+OdGtEOE2?Tm%z25_GOg#<Z#kP +ZK%>7~@QQI-&X#<l2UK2<<sQuj=Q6ph>#^Enz=bw}MU1xsr#av*qc5?LqpwGkHw*tem@NO<;PsykUjK +p(Uc27e+ZS*3o?+tugxzERulGFNW}n8^do=F2KVzG{8Qr$lUG`+~?cKcDd-w6<ulBq$TgZLprFTUK^@ +MWgIEWrh#h}v)#>=)3c-P#BPI!b+m(pOOXb~rA6op~F_P+2=c@sXT$tLZ%_pZmcInqvaJVu{JNh4w$R +fK66)`gJj=}7W!Qvim_4?{X9yu<t3m18QC80Dc9Q2%xjPNK0op4iCHcVT$jJu{st+*|LJ`TTt{ztJ9< +&HH0E?2WnOzL-1Z9B!3VefPaEx7i2to9=;e?tdYrnQvufdvuXaF{E3tF98>Sd0gy<Gd$iA5EdE0*mMm +*W|-Ny*^?3ll8Lv9*C8E`pc<2V0W~n|&<=UD0UvnA=VeTgEOAj^Ij~2z`n6cwM^wloX+}KzWqgS)wS> +}~$iycFjmvDltXL|tJAzA_YF5$c9e*hbQRZ1XrE4XP6L3HRtK&N8a5n02t@){rV=7`HC?!J%@tPD=!n +*V*yN=}T5O-eII;~jgCi!wR)TWJfKmfmpI>R&M!$d%#y2_?>Kt^qVNN*Q53iUyRw{X!%w8XTVG%Ii%R +1j}Sqo%=C#u)2ULQ*=1gU%S?cx6Bd*jZU7<M~>xDu(V|4>z>RIsUw-n9m8uoX!s)6u0uR7{*aBbhxls +nIp+=AGOhglSxM-K9+HnpzjtdWkqs{v8=iV2G`UfCH6TV4Mw*7La1j{^<t?=IOKDv$nn!S=0%PS17Su +haj9l`XcASG={nX!UNImQN>aRGmCubhwk?cml~o=&*~(Pq)09D$Je0Q6R#pl=?Gs}Wm9{XfTR8sn_oJ +gXFW=HRYqA*^$X;-=BdS3A#96!F`o<)zuur~bWezqpa6Vu~9iD(CZNl@2YuZ~S8)R3^vF*O)8!A~WK( ++ZKra#&(I2K!PUm?nubU1GwMLxw_Iyw|rjUtT9gU6Id=^zU}-P*6Z7nv-fk}V-RvrU3JPrL`-<301f$ +F8IUy!?3d_yY4fA8&!M$~~3s>?OAe*4Gy%f{JAtaC~XA)8B5~b|J^7!~JeMiJo&x9U~8OC8g~o^8~jW +(&<D`pFSFFTKj#)&iC+SZ6{kKia#9=$i>t>4;%%JJ4PkAcK<k)mCsDz(3aXIwLxIWCgj=n3XP$JxX*v +uRcwMv;%j!G<LmDgbhy4joekWe7p4DIFVw99=eKt3sEX|5hov3Eu6)l2=V~}yG~0W06wOcuyYtWga~M +Mh;zredb6D?q6oX+*Ysj}ZNj}f8#;4P`b`>_Fq@VaSPMtvHDlQj&_pY^D?S0mILv4pkZK8QD%ZXTs#a +P~Zrj}c)jM6CUBbOp?f0KgNXyqlD0+JR2%!=oDa-yjd+HK0WbO)R)V6>u*y5{1bs<}>$KFv@;MT3V;m +MNaCD&(oi@~)6tJ#PV!hjB)hLUc<yNGuzm$ifJkFJaO&3Ewf>cfEt@6f?Z#@@rpu486l6NR!!G_Pb-d +e?#wccGu<PdjTfPR2Y_~rlEJ4xf(;yg0y<v>2K<pO=%mrq_c4bP)TP1@g|&opRQiM(|%&k=Go^NJz@f +k?gk1S4!u(w=JaHql_Hoq94_55*qKzM$k!wNyX4;+02bFyP9?@PL?^&{5bQ&mWu;DiK|RgOKWKSWb46 +t=wX1a<W3MG*&m`k&?L&}TB^_rcTY|dtP+|)}eVDPN)y8UD&jOi$iu;Nw)}tF}2S258r-b0n4%%~d9z +;YpbxWpEPOuZM(>|SBohI9tM`1zIM~i}?^yA@4bo%b)%cH-rA+(5p$x#2R->aw!s!xj~rQ?)=Ye7B*t +$b3jmqy;>q5Q|Z*jXPqtBxI)7SA~~$ce24eQ==;et{kuSFMpLM}lOC&e906NESKyN%_6KX%HRe^x8Zl +#>cCEnmZ}69fg*vQU~6i44_v7jgWbR9W-(9><Hbid|y!wmP*zs5>U#3peT^m`=HJIP%a1q%cr*0S1)0 +YFj_y4D<H;#cHd6pVwITpQ7*`{FYgg8{NVlS!5|9WPmO=!&F`RN2-wOwXxuK!3alI+8X9@R{JwF`sI3 +YRci`oBl^jd^XT*s+g>YKe@~GqMLHGOpw_npGS^31Z?NtKOgq+3A?ZBPT;LpczzmC3sx+UD-_W=fg0O ++<LvEXK8w+D$n+xaa(!Y8g$lY~36MO(`>!HFC<+gn}XQ9wNY-|f3xJS06Rwg5OuupMGlZemvdk?HDUM +uO65)RZ_ck;nHu+OaRQsK^=Hxft`b)55^vE}$-s&?iK{?Ru}XvQqBg2?)MyS*SFBt&yRWK-Ce!Yhi|$ +j$zaSL_$pn`azByBV!Y(k(8;VXmIrUI66K#1aYlB4kZZg!N9)8LE_9RV44wP54pjqK#(GxtSPYT)ew! +JH1f&NJb1jmM@O}7U7EQy%7`wDMfi)?yV*%m35vW&cP5CWN3#J*6QG7!2Pvb*;<xF)pRfJjqURRejy` +jJ(kDt$sk>`;c6Oe>eSLgzcJ%DkVRUxz{VDHjwY3sdR_4vuJFLRkxt}r&p|6CLMA4^xX?KY%Na-);J( +*;i?DKmrG~mIC>6#obseFvrS&kXKlv3bBHR!(6QQqg+=(HZ>_RT8xr78(!km(CF<>iAk(Rpt3Yy6^Sz +ws8nxdzmgW?x_AWT#L64^T@31QY-O00;o{RI^Yc?`QnO0000I0RR9g0001RX>c!Jc4cm4Z*nhWX>)XJ +X<{#5Vqs%zaBp&SFJE72ZfSI1UoLQYC6B>Q12GIl@A-;R&JYB>@drI1@dqfIc)NzIQ^gL|{yi?e&5S& +w=NRKhud|V&^ea=vI{J>!!?rFsK`l$oqoVOL@?g>@tbKsRXh?3DO6by#6vA05|8kw4mX=k0)5}<=6yq +-L26=gU#)A5mzLs2mu6<bASxW-WzABY!n3^vHR#-=Fw|ppgzhA;OmW#p*>f%9rO0N%LTQ=<f|Gc}Quu +N|D%<`gE{R8ynn~EuJ+!_|T(>u)iph_Xe82$iIO9KQH000080P|F{P_K$FWzGQr0Luda03`qb0B~t=F +JE?LZe(wAFJx(RbZlv2FJEF|V{344a&#|kX>(&PaCv=G!EW0y487|shy;b5Eity9h5|XPK?VdE(xFLD +!yw2qooG`eL!!6%?<d(&>!#Rr5l!+vJwC}(SiD<+w3RZ4J7}q1e2N)1Wm8z$rgQ3WB*<4Yxc%_)7WPM +kZyg=2ft{`Ck8lWIY-=h(%9<j8c8KtGvs!O=>w?Y%!c?$&*zO-U_fPwW$6ZW@J~o+5?uGo-SVtae>p+ +=G{Z>^gG)OJHN8e-X*2u{1i-2HEogxCPPm%9DW1I`EIfo^D&!mt?<h8RW?rrNNW^)KhtwpK(xb|qmz? +l7DjFIc^7=#r85IEt&`-X<$Sz<%5>FaCftQ(LO)^EG>rsK8JI1lBrJuErzcg|-6C@u{4EQfkOY9=!XM +r1a7ZgEJhGjJh;_YpHzo#qNWDNH)I;)ElW{e04Djf0(O&Q*eqW*IWMEq{*GUZg0mj3;4aU!OnYXRpk> +SR7<oU!<?3>@$&5WlMNvV(QD|tR~1Gov!Nf$*ExuWk={oeIuo*>BVpTFBVVk{~X0dS$J*50V$?KNO<b +=;or$;v(Y&ouh@k02>Y%XM$RXAZo)kb>f@aU0dp{x;Konj<`wpOQDAv-sNg*A;a#!6P)h>@6aWAK2mt +d`vryt<J<vxS001v!001Wd003}la4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mb7*yRX>2ZVdDT2?Zy +U*x-}Ngx6bueG^u*R37I$9g4vyDGj3jHrkL+Fqff|xcYNFu`GY`x3-v0NiXFq0!lGX`uh(6dPr@OkUy +53zqr{?iDkIkxD=jHa9>DtZX|G-~PPEStFi)w$U^X+wOk{2^`_T=fA`EYH`+e3R@mF9i5X>YUInpag< +uCq3;$`mHOx7PgW^^2E3ynmUtpIeiaYxCmG4<FvW{{6=fZ{EGfA7R|dWHR~K=0)Bf%%&?>IK45Oss># +42SA1<X7%bi|AgN*d0`v+ZJpP4)mHVvw6(QOdUEp9Pd^c29?rD|yw+7YZ3&!d;c0D~s;gHP7r8O8PzA +r%W@p<Bu+I#T^yh2^-~h9elYF<Y>ef_^ergW>W1F=no4VS;<8+_3*G3*>%Lc#dxJ|js+Limds*1ugg8 +GxK>#|}{sRC)U8i_qQY3swY69a$pVEN^YzAk?M*R#d@k8j_;dH3Pv_vYMus5^UNKd<b*HLq#x%et=WX +XB$^WknN0r`7kjYh7k*+x=~s?T$j!0RZcVsvLmY*82d|w!Q}x4RD|qi>xRX3;2F9!JR`+RLj3j=Ei;1 +&%0{vKI4w)XZ`<dGN(1<kA6dm!RNc`6a8QB^cO-3KfK@DRh|{EU?ur2g7WgSUAeKl?8YuwMhOUzqhA* +wWw85AZ+dOFdDGguHw-6t<<W-`2wbEq_u1;kuMq%_9`&XMOZ0}}Gx{N*Cf}A-Z5JTXFrjQFmnSEyB5N +8$^d~RNPkCLHJ6rOO&Uj1rFhU3Rd3kIOXxzIjZ|vIKUfUA%nhZc&feM?<+~lD3)y7nNTa%eFiA}eu8j +2ZA%2%L+4Z$iaP|$9Vf(GzlaAq1tgKUV*%?wB#Jm2SgJ0pb`(sX+th-wB{>~?6DR#jK5Y4xQw7Ql3{e +gOHM&DOsPaw*o&npIW`+!}yHFmX5QgTN&v1O6OCwU*%lCvS7GUT7VirKPDz5DNrugv`sq0B^FqXb1zZ +^*_S?RJRQwp_={!a5vENaER0OwcVIN$CFJ{ujXd6ZrZsiY`JZ(&!2w#&C@4m|LzGQYfk2xYz<C*T;w; +_006M924SG!3?Bek#2ev&ynrA)edcsy*=+zToSPzt6JCAhp646h*lzPI)F-oq(KqfFTq3=#^VTLXa>f +KM8sG$ClMr<<M2I;>Z<Cj8)m+cb$1?w%p2$+ySpzCpC*oY@W~wlzGrzuLzy8&>?dnopQaW7Mjg~!n^F +G+29u#pBjOg>C5NEkBvKCE7^USQS?dpacHm+oFO;jnSLZB!KDHxL7Dr>C!K|CcQH=CLB^9YA~XCXDSS +u8<){=#Ozh=oN&BM^lAj{PArP<_PQO|Bj_SELyH0Rjxv8zP?El6ho2j2ZI|*|RB4UYZMiba}@XHZ6!D +5R2|C*_034u~UQg)$A&mjS^n~%@wFBO04}1iW`k4^X$OFCij71F!keghQUnLwX*M_1#SKt=&V*Zwrzk +Q`zc>R5SFI12o7)-iAdisUcZ0!`qi5RRHJDZ=(A_>ik{B{Z^10jo5)%tpOH1J$!Na7nw8A?X}z4zOxB +Pp`(^wnvMtkF9R*)wWX8==AZbXzF-gN`W|_Cm9pdJ78}L|N!<0~`qy0zKa8C&Kx#Q`d-+ccvWT_hmlL +;zQ%Fi6~3U&;62)hV6$m*stiKAt1z)|chz~cWlMYe5b$0!^p;33HOdDG!?A#VUG{l=8Ze8EkC;g{Jsx +B;uj7&ShTC`N$+)z?QPMzEwjyF;aE9U8_fF{;ePBkGN!d3)W119&B<(TV|O4uHhVH*bG<^8w>~KoR_J +U$p>GN@LA$&N<yk{gh*>=tbsEtBM@)LZ3`ldlCthhgr%BifP%}Hf>&Vys^s;7{_Eji<5zYj;OWI8yJ+ +t7J01_MkD@K<)YL2%M#oL+6s0oC!tRF9N|!#J=JITlHF4mB>nNf8uhU`VCs7@fAWof@{D*TSvI&opdV +sWB&owN6XaHttYjvjz~R(@5x@{q-wHss>y7<;XG=)RA->-h)$(!E9tw&kXb{byb<p3^B4BVpU5akaZn +sg^QLxoVpW`QFNfWS<N39q1JEoeKK86GJliBFC6;MwX!}+QG+}d)TNV1;-QZOZ<XLAKG^SUmfQDfUAf +-?&Pr#>NGG>N&oX<$wcyCN@dnsW-+=7QQe2H0~NztEz{ISKYWR(M%vot0Yvvt7jCf;<A!nYw{o1cD0+ +!Lwc&=7_-iLAwrQ7Y$feV2FL-(1fGK*Bh~bFeL%!QmtUMIc7j?4?$9DNo3HIXAtH9FpwC4)Kq07ivt* +p$SQ&Z!HN<?J_~`gb!UlX%c{s%h9BlA$d<hq*N2cEtQK_zs`vQ#h)SIB9q2BraEnWAcsp?9swzQ1z(7 +`vA6K&Wpu8=M^YY-<APBq;3Ouknx9e0Xqx@ATF1e~DL{i9CPC3>i))N05TY+<6vC#Ic*DzU#P(E5@vt +x2zN)9OO_dq}oahm0PoQVTr*w+=rfVvI;Q*~q&K*HnwI3{eoKfnmwA2fl7s^jP`D_i`%0lLvfwAa8{h +fNA;WSi5^gcm#m=Lj-p>}G>0U&VB|oP`H+RZuDf6ss^Afduz3hOO9kn60zPT7m7)mW8El*@8}#pmxl7 +c#cn1P?7p8(A6t%1m~_;!BV99LDQEOv+YlLlgkEsYdYu5gDk~W3_~`NAn<A`adWiDY*82<P>Z9{v4Cz +nQ=k;FU14iv9{*Qt=Xm)095*7g@{Z)%+XxYS0jsiiqH9rIh6}OAW<W_`OK^+w#!G%H1OVqnIap-bcGn +g*7fU24J&xNwaLqNAW?XS->GW!3$0L(@WaAmCDik^;c2gB=15t#kO4#eLzFdf{q3SVit=gc_uJFUgq0 +yw~_Xl)z8JMQIL@Kleh{W71J1n=eENvn$E#ltzl(m7)&497iBvdA$U=LF9z@PVG6ZMvX5V;6H*T?~pK +_;UEI__}!dnj&fx1w~kKM6giq<w$_mR<n`imGKc8!_k3QMzz08asj!fZn(#(JK99u!ODXtWVGC6;11f +V2%v$<N>L%k>s-Dk%NRG3IWkDC9>>Du#S&G>}VDAs?qSlXw1pQ<PJdzTV+7PkmpLs5ZJJEpns<-3To( +`kIKc3i8~hiJc1@lkTQXsStAH>7Iw^$jN^lUgRP7arXt5J)*uRTTBOMohcsMhK4VShN(FjWs&<aA6_^ +m+jU$}2#USE8zT08=7s2#lpay`w*ss6n*w&qz9|Hmh#TZhjuJo043P#$)-ZrC%K7<3OU~M2|CWgx*SX +SV}I&mhBYOt7Mc&Q*B0+G#?Iu8}BD9GyP*Dkw;&5IepwnIaC_?CjrZ7!Z%4s!H<@qRQ}7jW5rkKo4k3 +o>|^HIuv`G6Ey1S+M@G8Ue^rRAdkAFzZZ{mjD&qE-pNe2KQu*4}SH~)nqFS?hF=J8p>et3;+*S1jMf? +FUEWh^O%?+xyGd9wOD>8DJ!4hNvbENfd^<(1U$g+logHVG;0frZ;xd)uQxGVWG;B4xw;$-)y0o|=WWT +HOnK=Ih0fv(K>`9W-`B7|1y_@4uw*&v^i6`Q#EBad38JvTx&xkk;XyY(Cxhxd^PD{b9&^s=s2jfR;P> +ww6pbETh|`LCZF=cFCEYna$Bq9ErAY;nu;AdR?e>L@g3acD8_i>qSvq8+GKF#_5>nw7{>T|@l)|_)a9 +A{n;0E;)>vkad1~s}T=}ubN4#%rM91PdY28ulN<oJ1@Y%UGLQmTj_9<`xVfze&&kg-9E(SQkDc3X4$^ +xJR$bGW=3hGg=BPYY4LL^tFVG|XcsV@4&YjtaFg{&SJPcxPjK&Mg;WkS!!fffktSs=Cp5zE=>5LQIL^ +B5sa^pTy3P4tQpd65>?jI1zV*jGL|~#zHz@VY(xxlL9y*!ACm+Y^F8vzLyyi5`cLUN|-xk`Tq60WaM~ +7tfQ{jvyjd<27Yc}v<Ku6W7WQRVq!~w7a_f!QA6dC9NU}-4K--LQU++wF$s_ZTUSI4wDr_HH}3bD`IO +Z;)+RU)-#{9IO+j_OXPerBMsna=WO%v@+qADO%$9oBDde18gMmy|+-8Rc+h91A&l=R8-5yXbTdlE((M +MfE0S#<Kbl5s50@Jse@N$aW*u5T{(&i28+@V{<Az(Qu3<y>}psC7Aj<kwu#l2rZRNiP8Mw9RIBC9no$ +MbD7*?pR5yF^^F3zJ^*CVnLhbzB00%lc>YAdyyIf*4~3tI5|kuCSzo;v~7jeqGWR(2k=Rl`tDhyCvL; +umh*b1%J+2KS5Yf=Pg7&01N{|l#r@qO%lOsEHJ0dSIwRL!AV_hV4rFf6N+^qWVActNNF56sSL1~yzzk +vo>RCYi|$cGAy*_26mgUxJcrE&nkuSHVz<kZn(QpK+ofsBBf!LCz259Tr7Ntx+~S7fM5$5XT6xoSw&9 +{(zJtgCLl9niTU1R0&yZg|M-N;t7JLS>mSgRE4ovPl;Ad_8(V88#IWEOjV$%T%kp(%T@>0O!-rT*dvA +8Hn3wemFJb+fG(Lle+!*&d>!@eXJkUFd&EJn_Gdd!flS;342EZW!beP1P}kD6&u#_`bI!5X*50d?`nV +==~9=G(&)w~xgVo*mo20YMS~iShELgy_PK8_>+g7908@?e}ejVB-T9B`Y{}!OqLxM(%XNT`n~^WQ>^= +aI`D6oTIHoM_GaTd~U*?8m=Xh{De(2sx#CiSFcjALJejck$(vK5diLQy#&I;5CFD2-2(tI7y%$2YfXp +YS=};-fKu#n+~(^fsDzMfl1i|FXLGK-<CnVX_7sApK}z6SOC_8)F1G83_ks;Ir42+|&VkMyyu`;kBH4 +emhn{G=Ne*VdaVJV+1yVtQhg_Upp7inZZ0U}(r8Hg07cl+x7+bh`_n*fWg7^Q)7HY!<Ia)%>lb~%}a1 +==&Dd5AH3ZOLSlkJy$KbaeFF3YO1=TAV5>cgV$O87W1E1-wB5Io9pD#@9AE~@R;_A3f6K$oeCknF*S< +x4s&<%R8fhK=1EN>P;y(=&e@*p+L`Rf4HvJr(aaRTxtaR=`Oy6((V~O~(PVxtT2C*Ru&F{D_#&CmN>Y +)2BqkG&;4%v=ba8)rpv1?r;#j!jMxBC$u3|PigqTYT4yQOQ&JDgZsMr1i{x@&VVFF@o)($K?_e%!n2s +J-FL0$mJZ_<u&LYMsrfB%J%w>VvSawZ=(KA92-*WSdx+Ir>vjU&9MzxbQ!+`nUzlZ+bou4XwQi_VwH_ +nH#<w`CPQm(%5cawGd5YUJeFohAGM%$Xo9Xly8m>bZfI~DE@PHwz6>-;o&|eg<b}^+rpI!ne_;@yT1H +*NqQ7H|RJcRm?<kp2J0hqR}Gl(YXD9dtmhS>-mzPXcRe?F#IE096;(LKOlA-N8*>zDZck`<jc04}pNB +wO&EaP*o$8y2F>ee48&GNQ)vH}U1`XXfW8zf4k|mnbOh+tdbp$@rbjfyhl!;!yTN8d5NW4#*rfdlrEK +Z4LrC_(ri(xX8@y{K(ly049!Y*$R!@PW<ENDJ8g*6<R0M*GG6^AcPr$B*)GcanQ)-&fKEOB1#TCWx#B +VPac40h~xBy0|MGFt4w7H@NK|E=L5;2FzQ?X1cL^$Ffxf-uz3nS1i(}}jrfQFjxteZq`V6JJN{He#hW +*Q-8}?0)7Bk<-D%+oN$xvG85GISU;~kz=X$d!rB>Kb`miVVe=$0KG%zsw`SOnP7R*Vr^*ZtXmYbl?L( +cp8;A=oOMqsQU^|N}$E98Y}io3_kCMul;H7XWh*@A`P+d}QM_wsTMpq@T#ZsLY#EUp6YZmsJ%xv_T7< +!4@p>#3ONDx(FsCj-{zJ_0OLP9E26h~nVCKj!Z|h$4bDD0|oDg%q$Fy+!rC{_ZZPjLm@{|F+aA^ko>e +(a*`ngkvC&OP_Db&r8oU`9F&AhKTv4n6H@JfK%oU3_=!^yUUwva3Jlig)ntOl?1FBgIKJC>5lPJbdXv +%nvgp|0_Zftt|vavmL$;K;F*BlP`gIO#>pC*hA{<Ze$RTIVj?$qY)*A8y^ROf3^AbV7g&MqV0ww+LOd +C<$4XTT_+<t9JzT8g8;+A1XjaJLFmM&%<ALjFoO)06>8LywXAWb`AntOr?~1!7DT+{P%ttKM2*)%^oC +rk|y(ubOOF(I|Pq1saE7+_|c)bSW_1D*LY1Tv;MsRRE9a_>s8SeWAZ<?A)JMbv*1>Hp(L8S{hWzsEdt +E$j~q+58-auQtiO5<pcjIESjJx^HW(0WGEU%08gK!JJmfH=TS`qvKvfcdidy6IXN_3XzBXk>`^l5bDZ +HJZ>e@xX?OUdl3|IU3w9l?@_v^wOD7s6P*~-e2!soMw(TF@5d+a1jn|%6jd-Q|W3lmZv&mN38hl<UxC +jihr(*N&lMfvG*g1K~8S(Sl#~x0mQij`1<YQ`<Ji&^c?b;03-a9Qw=`n5UptDF5jY_TadilthjNTF;W +B!Pw(8^@tz>6b9zn0i)K_Ki)*cl66xl!1xgs|i<o4_N6vVAT$Ve64BMYy9RYuz`1JoGaSDWIGPV|CGZ +uBlzH0IO-HSiG{>#h7t2gid{QSdv%v-s%u>FF`&@+=nHJG`%NWxr=bKKeGoC_CIEIMTMWAYKRxl}zK2 +8k0{0>vN4U@;_f4=nPYmvr;lS7}_?!2#p++yN7D24FZ99alIS68Iy@d!L6FLNVs#52g8D%^TwhhZ-X{ +)045ns<zh#eO^48w9CJafiDQV?-EA5?9~hSP()fn+*OaDUnG&fDBG;+eD7P;)V=EB=fD#ls&|+#&Ms$ +8<NeRtydM1ZIiG^^?ST5raD}u1YLn;=hCGobqw%Zxf|T~mU~5iWXAA5RkwRfW+WB-EvYY`n;YDu-D$L +ZXY(FNELB3H(#*DTnbLK2%K8b>5wT4P|zFg-~A6(7ha7?@&mSbkTe@)y9jqNmi4ahey$>E}FnwPBHF- +1#}iU*e?@$u3I<Z}PJE~GL=z~mytsDwKv#Zeo!mqpaZW;J-`dQrr425oeH(}Nd#q%VZf!7btshrLv_r +WkEMYV>BhSa#(QCgE}4=5T3`;M^p%6LZqs*<Gs!RF&4QX=~^*nr`&eH^Hb5=Vic*xPQ8b5l`r&gF!xc +5q&%}zd1h}JBl1fQ)Y216u1WXaS;lkR)z+)6$g=F9aGGnxgqsF`tFVJsAX-7BTGp`MesI|Fq=~euB)o +W&_yhRMl$l%XL>_3AEbU?bs!N~7=8uDHl=V6Q?RVol6RQmjoF<%%%$gMmzNz{uY(Zym@bKL<PwuBv43 +Z#{M-SJt=%(2r%)RsRf!1~^e5yVSzR&PrbuI=m?|r${dSSa9+CU0Fy8g;B%A(W#&;&SDOP^k!#-b8xn +gyVi5i_02P-Y@hB_aDI%fzc4UcXH_j{yM6PBR^&+x@Ykfd{4CgKr*2&uqyhzj#|lYd4cFspa3L}KX-S +_kENSAdx(gN}jxD$5EYVM(Pq*{Y(0o1lN@XqFrb*BysW?g}Tpj>PdX3yZzc4HtD@&0R-Hv1M;EP~Fw- +nuB}r3Gg{_W>mRw<d({VbG5Zyc3Vi+uCsEBB(SJ(kgaR@K-(7ue8!=N@<Hz3Gp@(-ZxYVLucEZ+mJZ# +SdqT?t8{sogySWu7_w!VigHTsKLEy>M!cY7`PN$-5oOPJ{fX|24ksn`%S^CJa@Zi{|D{o5J=ANZs4x@ +XdulkA&Y<@lu5xIEcF8~33<Si&C42C=nUc<p$xPX7qXTV^`Q(5;n=aL5Wr-+na4r=rIoF)I#oePXG&= +-%8lJP3wH{UQoanSwx`Mr|;K<U0i!k5{K+V4cjRm}!XD=eM<aTHLygwmxX@q4VkA|r7xDf-F`B#dmG% +j$;+g42<VL_|(L{9BZkaDV(TCHeTn+vhL-_zz_y3wi;Ma!?BSNl3$3@Ds!aI2|vMWb~f4#-%tC!I#2Y +5C*0FR9amz(1HD^u@ElzZFDR(>3cxjJV3X01uroLd=jwm=%Nw&#i?z?y<_Z(tPrk1_xX4?de=^d>s`P +{)Jqn~0EjdO<UyA}9QpRf3?TP<wwo=Ux<BHiN}B3=9GX08CevsZo5c9_UI^)t@jLvGLfl={^T*3sTy_ +4ZB{(6CnyG64ioZ)c)wb*L7t@Vs=J8znE`B^H4d<ofES#=fU)`05UwQ20Wkv2<y?a2QRuu#=&A#H!Ux +~Bg#gw?KhbQ%dv`^|k46a^71ZUBW>KH%Gy?-HZr+7G|=Vfvw$tMof&Fs=fy(H+~X%{$nO12fOuP$8q- +MadhtuOT5)jzMi@Rin_=f>vIWxw~$j=bC;4<71as5RJJ+sN$%r!wL7O}1RAe>+Ptj;A;?K(wnV+Tm;? +ETaRAm-JZQ^gu6_iINl4wkw=+r47rvE}tfhoVxj9c<;PT`p9`${KhDM>0F))_QESY$@S+Y#OzfY99ZC +MZ&_n80l(6rS16ZP!SJg{qW+N+F!d$+`pM~+B45U@$(-veCdHVL%hrr+8aoI*&&itsy#trv7o9wEO=1 +3knqqmK%ZrR3Lis@hW}yGnH~~*H@H5)qq<01*Qb7GQJ`fE@oXV>~WD~G&x+=Ps@82|Zi?Rfnr^}gXDm +nJ9A7fL4V9?Y&{T;oR%S_XBs@KZKu6E1)^ympd!J9$7D*%CzKxV+}?Tfsnr3P=|Lyj|?hpsx*MV>zjn +wED>;E2K4&2lHF;UB$Ai}spdx*2WF@JI~b&`FI;jE%g;Z!m21vKq~oV>euO1o~J{lAo$)WMfa!v?0*( ++$=g_3yp;|V?EGV!06v$i`4cD{kQyb_I0)cCRfY9^?Si$u8T3z5g)Sp9*YvOCDQcZV2zTsv4ghA2pmB +;73#3TJ7m*1&t;Bdd(ZKV9A92gS7%E7y6_SHhkUNLQ*z{Y^aRtLIx?{15FU8m2w?DY0Or`)BTc;H=&| +Q_!;{Ag?gu`C>%AGq@dL*NHbnJ;h@PML`b5v?U!&<BR&KOc+u0^JZS49G=hx&Dg75x{LHu&;ah;VyJk +#1M#ETaDc-jU0PKQS_jNaH#!^eh;y9jO|a?v>e#g4qubbWnK*Zyr)(+i+|oaJs53i?Fs)vv1T2i1J@r +gkqZ;yOZ{8B=~Wz%bqn4%z`JSCDrlH7_X`+)IyVP}nfH*+{h_)0e2pWX)zuz7|*_QTWyZ>_vmLAt+pi +ZzzzBkMe<4J6@m-AI5d-ULkU{ayRgJy_#%K`@@nfFMgyfONuZk&3=^9Y?LdT>CaDonYwOzsm}&oJ|ji +ir<c*wah<}_=Q>|0NS=9iIU8%WI>pl!Oi|Gt>NV6hu0-h0H$geEm!*3SBJ=LDVqsCpZ_u!;I*5fo9w~ +3fOw?tDY&^21Axm9lpSX8y!dcMOefK74{rUd@P)h>@6aWAK2mtd`vrumq0Il``0021(001ih003}la4 +%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mb9r-PZ*FF3XD(xAXYEzXj+;Obyw6vRlxt$7+;hq)QVx+eI +awAOpn=xnX*4}-j4bEd(>&H79&6ZRl#Au*?&_K<7x-8b<0UK|q<A^05Be+F6tl`1k7RX%4q{IZfe%_g +(HS(Q+ULNa<L1QP8O(C8sq%eGmc;!M>BkOBFW8?s)Y?cTC8zOR7H|gZ(Pj-qlYBV+VjP;N0RE^gdF@G +7MW8E&q`yf~Yqa|4fT?mZgayUzMfr444XI4&FFF7ptHgNIA1ihN=R&Ruj7Bv%DfY%gUlV>|{KayWSBA +R-wQ9Hu8T%6)+ONSiL6MJ9)!g7<%^7Y=_9e1b#;%cJxHTL>S^J#qwXDMza4f?i=j8lNm4)#GpgC;;iL +aX}0!9y?N)tbu47erS#WumCjf*OQfx9oP;;$ycv@jWWVn_Iaf5(pIN4=9Pb?nlcOA=3SI6v`u-d=Zf? +AWaLz>TTm#hLB_;h`U)oyoL*F7La9cS%=Up9+%VdJ@(~W>^2#6_$0qHfMsKy24Bp@#lY2)hv(l0&~0H +23tXcDccb1j=c*%a%{jqdZNd64ybYR@6|T_VRKw|^v8_CQbKRIxei!za&3BxiyN_v4z6Ms0y&_jp&Yx +|y(-s@{2$GCM3eXurcVC(f0KLOWbOtl9~rmLrX8m2(f$`uO9KQH000080P|F{Q2u%Aqp2PM0On`_04e +|g0B~t=FJE?LZe(wAFJx(RbZlv2FJEF|V{344a&#|qd2?fLZf0p`E^v9>J#Bm2Hj>}{E3i`XkV+&vaa +>={t=q@3oz~YR_G7te_H3_0Nsz^uBDn<Vm+kd_`^^jh5+Fg_*>>;4>e+210vHT{d7lB@XQO8$HcRJGa +=FdQVljG+PuBWteYTfocX@QVESSGHU>h%9Zm`oOXUBKNGELYxT@*KA&e_|vOy*$`rAYvT#+<WvhkFMf +#s@)hTd**hv%RAarzeMRemOll8RJ9fx7O?Rc4sp#1S?Vn(i4D4vWPCroWQXtS)}<&f`<NUYtbr8^8(T +3GogQ_)wi7MZ{kj@E%I~)jX@R`OQxP@VLp%YA@mGme7;uXciU?WJ{4$00J;gDukqU%&kA-(O$T|N=2q +W5>U&ImSt#tWYipB97{`+d+hJ!k%Dd#nME031CyOZNNx0(Pu+?}S=I*D$e7p*;I0A7(!nHMjPq33{KD +8gjVS!t2J)^UkT=QJOIhZYCw&W{rgQeA1tAwW)uoH8>U=tB8_(bo!kN+9S-K>rPKRGYTJYjY}YE_4EG +&T;x7(u5A6tcjx5BM#gl|?v>x$HPOJ~{fYgT2$qo89pNoQNWe0Ehw6_Z!&RAO?dq9t#Dj-+<3%VZx@I +@l{sbF_=EgFR#yDT(Bij#FX=d&6Z(u$>+ogigzNRV3i5M02Y8{<PpDy@4#Y+2+Q*HG7nb_5p*u1fi$c +MPGxp8_W@zt2zY>F+0G8@B}I=A=w-8M8O8G+FqaMRZ1j5jB8bx)p8Es$uC*tmP5hEZiEs5CDn<iD`s{ +db{p0vQf|s2rou6m3^Yd#LN-tmh={PlU+kL;kwRtaYv|;Dx;cC9M=|pn#Ux}n-pGas%By99Vz^rV6f| +B{YF)%^~6fKJ0kf~pBIt%08pyn32PMSRuC^_y$ruRObmoXOraFGlQFb3nD=A|T0_4{oIyaLki_^+ow9 +etR*`Q`B4K5Rj20nlZ(xWrAFL$ex1l7c6q%z4$S*LoSJQ(%kg`I=f!k{0#D8buQSL6CEimN_UIEwvX> +G6(sryG_H{6+Q=HIJ*ijIi41Yw8<pMMHWYe?*-nFy&M2jSED8p3UroV{3e(|-4#&7jYhz-bAbQ&9>@_ +XCj;o=)dNBS`lG1E4Vm2&1R)%;@T&ed5$HGFI|#)@6tEL3e}Fnk*k?8w@BMV}{$L#7UM(_T3{1+f&de +T&geK)Z5u2B#BD$SqIjEpp*d6tInSvT>kcl;|;Ds;2z?dkR#pRsi@ZUr}19Ja;{ZKs{JQ4<KEE5h0%` +bdbOhdtcUk?C`bq<=^h-QHR6-anu>h9nqyfJk<(CXyl?#blj;P@SM&3Q0OR~hn7?w$YUpZ)E(i)TL!& +VR?*Bmv)MAUr0LV1+MXYthi6ZcWGPh?jVRumn)HzNbK#d#WB)I0sR|SHkEjwPmHS>@gq|0B^M|Y8nHU +exk6VQ<snM*mbKVPINnn%?byb0suCgk&+S`Y?|SyA-fLal4weewTIf<BFFe@#-W1YptshH>Y-d>(S)F +|kZV@ma=uEhx#J|(l<H2>8zv7LOlL-d7Qo~YDs;hs4x$8<J}e9sI`S>DryT3r+tvZptE!>yuz55qeCy +!Vh=D=sM1(m9-k1UPf&o2SrqeHteUiG4>DJ&fPs_}IIcV-b^#cSeEZW<xB!AW8498roIl44vdto5$Bn +szBTh!HgtQFe^qMZ8Gmgw__+51gq)iPl~Ds1xc;ADJw^Z_=?dny9@pU0k(4X7;Q33@4K+pjLn{*&=fM +<=J%DEE*J$B@Z~qsjh}8hP))lY_U1pA1tr0lU32UZr3LxpnaAVDEvxXv<Ej0pP2>J^T?j4#nb!G~sKL +U&aR~+LWOu+N3Y1q9DhF?DV1J0(zhh3B0yL$pN60kWW5i$Is}1(NTcqdj$fK#nBaKzX?zuL9v8>ze}w +K0~Jr^pvSXR@|vU$((ed)6=v*nJ@e;4($wJsTfsk#1n{a01mMd<WpNW8V2&$eJ<!;%J&K<m<RycTYD} +HxRNdU*A|4w+;2?Q&9p!1_1X4FQfON8<(b&l}(if|AT)}~DNFEj7^MF5y-+}jV*Xg_V?_}#0zas@y_Y +Lrop=sc!!TL2E#s0Px3!O>0*1#W7I>y9j(ES2%p}E#<rA^eV%?pE)a}vM5{jRk&HX&&tKUkvL=w@vaH +Vs+Bq4%}eZm++xca-oWlv<X&CJ1Gbp$(K2O%qJQtl3{KwM5g#P<(2YdUIN`!en>FKeRs<@c;m|p)zzc +p`KR%?LVKVI=RWgM}LR~)OIP7A$sDAu#9yuL=&m)PO7u1G3=AfQA4#|jU+%Fk*rMnx{11Ne4BWyISu^ +qkkJ^{h=Ev`;BR@rN=RVb!0$=pA7wp?dT{xWv=w<GICKz+W}X2j3FD;d$(z(=`Id56Wk204!-9p=v@D +pHiVeOZ;>{y)bwKU?;Mhj=%IjG>R<V10yuW+8+Z!<0&ffp_OmfkScan;3Gz4x(&uSyEJ2=TQsMAv`Qx +PZ~N+ZPQVSW=O2J(v>)^wBRSFi$GB<OQ^d$Rlf;Mb#*pL-U?R|8vivU_p&EzrG4*Fs?*VV&=yX&&Zx7 +!1%@z|*Jm;OV@_p0<EAKQ23_-m^CPF0^fQ-Dv8dhvotqlGNc+Ux!PjG}<8|uZ$IP_*lr^tKK6~+=1&( +p0z}EmrQV21MCDTnJ`MwqCk-AQqX2$Bz1$t53C8YM#6*uNZS;g1p^K;Ji7hlFM!uh1``M9a||bzE1rO +2jS3w%EM-qopf{TWWR~z71D<WY^w|l&1S1d3AkOD7k^~Jb6w%fTWj=<xM6`<H5d4xmSQm^KDgb1jrSV +*C2gR0XQ^Y{dHPN>JB)@IA$UXlo9Q|W=^xqfi-xs6*oLoE~oQr2W@P9veHc%u^;Sm7z(gEcB$+_>J!D +xVSq5dU6&j#ns@f*(ZzjX}%-C*3uDD^qC)xVOos2|W1GF)YbB1kiy7zD=?nP}PZDA5A)j$<ra?DRwlU +oOLfb1@4u-lN#fqDCPGXA*H(P~e7s`G)0y56HH}2FpaiCxHOlrx1vk@AW;BjOuwFW&VIv)I&b|3gcJC +DF>uLeS~8Ps8z$u1U5r0uGRODZP*?rwq9#Ytd>6e{N#y;#}NX$1<!$JKH~#a-dDC5D^{5Vq*S%<!B9{ +qW&lVb*n2`TTpZCBeCjyQ5;6}TAt|loMRQ$I0%l)3lBF^kA5mB|k{R~;fyFTrXe{2@(ZIO5{wIz=ntL +G)Kw3-B)5@*K<?uX9W0{;o--<e!;fXjBg|9YInfH~#|5)`S773XL&acO$8KVOwT1*F+Y6MY?A`6@|1! +9UF<{+T2Ly%L56M{k$qCjgxfhv|jYnMw_hfUS+amHs6Y~(CdZlRQiMapDQPC}{HONI=pD~75LjCX#`6 +9p<F@6zZ3GFi%PvQ{)&p~5LpRvI?WC+3d%-rn1HyFZTcwBGGkU-yoW<#)AxH%k=KAV~ab@PK{KUKl0? +aJ9CFWt6Y(>2?PyVsAxjRytU%q;Vj4m;<*<^B3iZDQoT4Ccmwu170+Qs{SOVbZ8Un0+Y)+V%uy)4*-` +tcS5Ef;5)%+5HG$WZWljjIBG+>*bxjhRKjrBAwyq?|Gfmo%yLB0IYc8blN;Uhc6syl)WC*OA=NN)$Tn +MqaZI@jNxd`}&4l}Q!Hf!Atlfi8i%vT>cfow@Xz3T^=>g`>I_*Ima`tNb!a0*8nA=zd)&aPh34JM2o< +HI^@nfG)2h=WMX`ob*S2g{`z_q^*%iVj{h{iwS>jn`n3Q9*251y^ypfPWD;q0sVU-sQz$@B9E7l1h-@ +LYoHI&`H$sZaObSkk2mwzzuUzsH>#wz(YAwrvq)&Gb0Ut3Pf0orcQe*Ww1+*}dWlm5m^7b5NH4{F4lc +pNE+8!NI6c6pVZO>ZlEBgnLD|`El&oBWyFU7t+g8)CwI`F&Hh$47?p4Tn4NsmGjP%b#ThoGv&sA>j3n +n6a|~-X@+7L947#AL!}=cJmz8C8uEx!zVCGV6fe)1$jUrQVGSY!t4`FRLNu$@_Bq3&kwE`21VsJoAp& +a%R>JS<!ZN<~%wbi9BFeZB+B8%7_u9?W)}IK<Y!1E)$v`WPhK<S%ca|*qwdZ{zN8m(Mu$4*!OZ%sR_G +Y`&)QvEdyPiRT>s49TWhlY|<Tn_LV0MMmXc32(R>D=qX68{oQH1WvM<bn~@mpz}Aw@ehG*?Qt6KXS{S +1(4FZ26ujzz3XqgJBa4EI}{Ps{$ZV62U->8T!rCOjLk99Q{L{_lk-=(DMwl3}_w5vyfrQ<D>E6CtMOz +T2KcT;xwGoP$ITC24h-JFDKC_uEJan0-$b|jBf^P^cNLAmV2ox^NvW0Bg)3suEZtk&?o`Ei|U#yi6S{ +K+eYCP`snPb=)pPanM_8~^nrmsEUdu!dJSfh6XJiLvmW!GiUC3+WkLOG5)C8pX%yBz3>b88WOk=B-*P +ftQ)fpEm-lWZIa(Bi(A}GX1^n1Gd;a2IztMWG|No6XO4#n<r=dy>q91qz_V6Xi94bY{Lx`i~ietSC$i +-Uzy*H_&&qgDBD!3YopmL6@zUCT^+7MZQG-Ok72yd1=sSjC!qHv#@j9gPNt`f?Bfwax}tVnfCuUq<2r +UN|4@lU%a2m78>JNW2L{mc>wNt*mIq443f76bxZqiHCjnO<9kc%-zJ!te0S{=xW^&})k`qvM;y5AMDg +S9kP3{IK`#m;Hm|zc#u@Ry~pIJ3gXLUXb0*J>&Vorvuf%Z@Jl^L_0NhW$bO-_YY4zGl}-tI#a5<&dO; +FJGpy&DB!m|vnG#b_lB>v<oI_8Uq3c1O9eNr$ZxMN8yH1@t<dlD0mI<)d7_K~@U8fw4PgE3*#+xUqZ< +gcub)@x9~r2@aD^Sc#o%pLMQ?pOjhPnI#};-|=zLYnS}gw2Yy7i<uTI~pBXao&-wBDJ5oyBos~t;i+v +>P9z4^|SxmQ<BP=}9jrWf}Zpbn*Zp8;B{;76FB_vI?7J(;1IW(WnRg?hYaB>dWYRYS1`It<LZr!72fi +RiL3)kv(atTv#sCYy!-?Hvqd_|cRuQo-RML6WAnA=UgcU@6kP;B()o^wh<019STNGQ*=Mmpa;>y3cNJ +Z$VCRJUZ~^Zo&iuwxGTWkiHnnHZiP_k^)dPN?@D#>4J?NXOVy*yoaiYa0f+(V>v5OySNHtL1AS<s7+O +}{qtw}^YdpEmWDN{D-0+$fU+C~4k+{MXwK&(nQx*vw$8&{o<OCHWu9Z$Qzy7>Y297kDwo-E*ShO&95k +)QP(6*iKBjpNzVwRzq{AS=U{{hUQ}3TR2y5Te%9`XOanooGRH(is&}j3_vJ3$GE86}^T4`W0)RTm!?n +eC!h*=k}v@N5O6kyi!Yh;dY5}*-aTmO<ow`g3$vR6Dz1g1=2k}3jYl*LwezS_Ryw;J59Q8G_&1YN~=A +I{j(7>L!wgy5>2Ety#1I4q+r6biIx*NTyyajj(H2$|@S@eNr>7^mqK9%q?JvI}Q5oT`Y|x|~+8sl#y5 +_Z5ta%1VWpRhBKorcr~b3>+!4K44W98s~GSYAFP1Dw+AheKN{9$(dNf!#gC?Wq8fMH9*0t79m#bNjE0 +Uxhm9z0by>yCwpy`3OaDQNs&~QnGzIUIw^}N78}Z62%L*K^OUrdhBQ^Bc62mWA$uEztX;70s!M7OL;b +-46R`x<<F@Y~9-O4}v^5y7fIYV!Y+Q7J!s?bsYzcB(-SrXsQD247&>IE=ep)7=4WtT)Ap|p~Rof`iF5 +Cs*JpvEcWgGUbk)YD<NCQo4d4M@JkV0CZh~Tj(d0rg}ZdODl1!huHvC*uDY&yUu{DBLctA?)zbRQ7B5 +L*-|Sv*~eM<oqZG&1FJdLu;(u3oAVi$g&*FUmw-5}-sMNt}{OcbZp5p}R3wYMrPU>G6TNFryZWeGiM< +2)3F_v-Z5goe0UQE423CllOQ$9o{#g+y`F`>n78-CEN|b_Oadl47Bm0b8?M^7P1kYpA?O(a4OOmC|at +045}9x1mWm+CLHfBS2AD1k-|B?lfG^%97Gr2jED|nKczRQAct&TVs*TEd|V*a3`ytm+i;a(02Hj$6<x +>%*2&96T7$6H$;gZwqFyyXk$yv+zo6_#(Tpjnqq8sUp(Zii8KUuqN24k*-3Nvrr+YcOnM)r?UsiQ_nX +OyC_Gr3<U_PeIS6Uc%8{zP}j^3FJqs9DX2Pbgkp!*eV7{`ixbR!j~B6rfCxMkHAJ0Ph5NgekI*sc&@X +&8@i9tDr6#sQ|9g7Co5wZ>7?ZO|H}Iy78RS;pGMCrucgeAm8QLT$EyXqLu$vNX0Ke6Dz&@K`HY3A>d3 +I;c@x{m;}x+bGO`9c%`#Y-CsAmoztEU`)dX98~u^@p5OoRLq9(9eeE}3@}rbY5ED+64u4p%NN1skbwa +|yFxG{td5~m8bz@FJWbnW8hsu3mDNC4Vxy{oXrRmxB0a2B>CqhyXrFMOouctw7dKJBnP>=w1zku`RwJ +6lfaxoh*KvT7dM0FL65%F*F)KwFg+@@ywC7j%7^DI=>X}eB=t8H~AY&6)Qm&?8(!&&Up2M_rBTs7Agu +!m#11ZBe67(xGWVjn1$8BWw$0)%9d#(Oaht507QlvezWAg;wpSZU-oEu&%$UP#AbMgHA=J~n62^svy$ +QV8Vz^llKo&AlS7Z=YS0i%T~1|}_o4nJK9_1#!oENB2wRtG2}kLJ>M!1aJTJ}a=8PGU<m<RbUPEL*A$ +*+tPGj!qA@C0)znx)6n9k%Ol(gA<<KvE3}A`b6NuPe{|>I7NIP*@B!I7$Q*dhOx@K&=t-wxh%s=yu29 ++Wz5bgh30@n4kYkA`o<tW+i0UPw0pAmlO(3cRC$q<u&T5S038(dZ_90+qrZ;j%n|=I+nGS*zt3?DmPr +Ai&LQ2L=AfrT3_*IpHK{?wSf?FgT^Fi=n&~j7rfXttC@N_oh`Y3?*J3<j<Nco{;i`&E@UMldX0VS~n1 +P;E2z-qt<}`E)9*tyv1X5z`fMC1XgdCSe7&$1S?^Iu0>RkjpL!(SaoupF34G@)Hk|CrZ&0PX!8p+(0G +K_O(Z0**z+J~wU%XgjlOKo1_`eX)|2I5YtO{^_%kSZ#+=zv6e_%1E0P~a!LBk-6#Q5Jzs@^snB;3P+# +_e#;cEY8hqZ2_e3pO2ppV4MWd9{X_JE`G%P>i+6o1<JI{<=ZQK7<x~s=O2=5avT3N;ikZSjfBI`ACq# +l312Pg%u%(pGmafj-9H!q^JMTysfV8j#F%{Jkx?OhEnhToR-<WFrrUjW{{Y?UWbU^poJ!)%>!~WM7mM +!ffE93cg~}yVSK?15z$qn-A|~c_lvm0e%8S&&bDbdv)+cDq_jUOLPX(qA{$54^9fc{7TdP~W*siQVS9 +c@bq1-B0QcT^xmqKq2SVW6R-B;)c=AYIQ7ro0Ui7AMTrV&6YBeASTj0E1RSVXf%gd-wFB<(PF-=a3P& +?gCC+Pf^8$ry^vQ%WSk(yCsAh00L-WLhy=hNqA3y(z&YjHFQZYVXk-NVyTlct7KEsXXy;R+ulF({sa8 +IMSui`tWG{E#sE~QS{-7ioCYwj|7&5W?^1Lvoa2ITnxQ?2y-Ytjstk`FfXMWHvaLD04>9Oj&IZ(NJWE +_yo-|ZmS(uJ9p3gFk{k6rn(Soch;jrKvC14s#Wyj|F^ax<y=6ZM<7^o+|A&hGL<$o{Vzd!#jYOGjmbx +LzqubFp!7KCk*5+s{*w9%Sna05^W0i4EkkKk6ZlYvFFW6%K*5(xK3_S+cN^j_bQ@sk=?dz?{7WmeONx +@_Ma`1j@^K{5~F&mhmqR<KH5Vj^NS7z5&8vq&5qH-(2MobeZ65-H}R~R)hDp>FqUs^(iS{Q_rWs+48d +#HH}&YB8{<zPWCbgH0wt#TJL>YNnTwQ-R|3p;v?RAN$Jt(8;`XovL}Zi8=Jg;ueA9R{KIQRz2;RGk*s +Z-<RuIxj(+OQ_nvxB&MCy&;Qgz?f>Y`<+G4@n)04VEaq;HZ>C&ISjUh$i#CZ<yB<lIfq8_{O=izgj0` +ot+jbdf2pFQXs@HGqbnIxtSBbIW5y5q?9-=D=I!^U{P=-=I7Lz;8b_GB$cRG&fKG)9_I~U26?Qp3-Xk +Um9!4EZ?7St)QO#kQIVkq)w9H9fU@n(Nq(Uaqm#HX*+T$H+Q8cW)12asg=hC5dLx|(tbiOkJqe5HWx` +%H{%s~_bTs7LqK>Q56npKJg=IqUQfBk3-@{#0z9wq|)BUK#FeB_1RF@nY|!Z5yAs%jd!211dN?~1_c` +;zO16<se#eXF~n(d11Y?nmH8-oPLix*oCp%>~8NNyPR{s@N^?bu@zRmyy_CCjtO43b?0>39>xJ<O3{r +G%^50uU>C8h@eGll9br^c=tpS%nwb1VZEnfB&&3NeeenaU6IjV4QPW@7^{gEnoKYa`aSgcrnhZyT%V2 +01jykV96gq5g>6_&SshqUshwVfX9+yE;|mBRz8K-H=N*7Be^t@z*~a#TnU<pqbo!<!kXe=XmJ^TEu#r +AvI9cf}*A)`hPHf7ZK-Fh0l}W$61iNU;W&74<?=Q`5ckH^tz_IJE<XoYZk+A>;4OkVgb_3m#KxcQC_N +yxDgHTPzjPWGrjhpt~+4(%Ucy9Qk(htS1s<_X>L6OU<DU$W^YVWce<JQYH`o=Mnf-ZBGl{pA$E-;7Y! +O4d*<3a{8Wo;-1UYS>zGc%x6^$i}&pht#vY1fpbA>MkwyLUAHG}%8mes}cO_Xi(NC#Sn7KOT@27rZb4 +6=@(XYs}Xu`#Z&KNi>b(sJH_%q>K(}>=ot`L`aF^S%`5KJ3U-QWdyrSRV|V_2NIB2#*WUa%v|2+``U7 +F7tXctm@O_<iEYdOsLwW>UDLfo)mermx?p>DF32vDm1yn8H{qSYd^no5g}#U+sX^Td(wR@S{$T?|eXD +!UL6@v(ix%p>mU2-RaB37FLLWt{?ZEcN0k}bgw9LjlKXMo81nh)|vN8<MIitcOdWXS0ol!XvpEm%(ij +`C7B1Io76v^*Y<E4wTNSpXzpC35}mw+O}B)sJLBdUEDs1xyqh_^nbiPzO@Ue@=3{Kh=LjzHO{wvTF!v +?|Y;xm9;AT*-r9b$~NO8yRn}5$CdLdONf)G#llIuE-u=hSy-O<n0Jds{;8e-`dcOnSFP~@4i2#OhfUD +;Q7Z$MAMk7efVx2o6p5F_j?)a4*-*1`1gMB?1#a3>*^OqVFFny>A3z5Gzxx5NA@Y0#i`(q+o+EV-&rK +?1)j_X*Wo-fJxcHDX#(iW?d?3f`lKwrN30}AZ8up?3X>W!Yn*G$y*yg0E@(`}ZLgK#^?hR#p5rDAs2& +DmzJce=BFXdtWpvze87nHQFIPHi3NY5)%&n4-+!j(YBtU`G!~scN%`+3w?OrYnlq<l|_h6eN6h#e;1Q +rManNj_qmbs(iE^CKO`{?ed!Jc`;!-J)GK|9=88_?9F)jreF%=>rRaU~khNQFVs2?YW*5<fcnJ?jX6> +cLi3I=*0(8U_Q$eCTC@5S1O!EP2_<b85xZ)qJP4{*aBMP{8+tpj}U|Sk7i$dFY4su?wUOr#u2GzWOD8 +JX}QeYrq52uO5aDPyyOk!ZqFbN22}p^VC%Dn5*lB0P>DveV@kfQX;+m6oY+N_{L#9sd@*h3jT<lr#ad +C^kdj0P+D(=E*>W?xTBZ_Q)Kc@JhDG>x*6zZrHti+Nh57F(<rSWz1kR|4NLKJy#9sn&Z*y;Q`I>&0;d +i@IACkj1m<EsjB~8QTY=XWL4a>Od-iJM!DCbBd(UQ30*WFE$9t5@!LO4lxZom<K0A&;6Nb`qr@hj3^T +)?~9kIH4F#i1%c|L5`d|BTgS*s-KuOLr*tlA{Y$?R}gjd+2PoUs0ih)z-Hj7_WNTEDsvETlrcV>T+V0 +&*S}q4Bp5@O}DVJo@#kQwMlvJON8N$5#?4;f=%edlF1tjII%aK(2UU?*q;4dr!qSqdWeDfMKGk_VePY +peTgsQ8xpV>H<EdPmHY0eguXUC|b0d%&bH8zADtmFr>b!q~<zSfxPW%Iy>((usX}j$7;tLLmH=H4ct= ++A@d%$y0}t9ao(gc!KhdA87Jr+%Re_`TylA6MD@xr&;90H{IebUuQiZho6ufQCQ7)eonQMuP)h>@6aW +AK2mtd`vrt4rA46hU007i!0RSif003}la4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mbYXI4X>4UKaC +zOmeS6zBvN-y`KLuAlIhGPxYdJ4Xee2%iBu?t5j-AJLHtD9hDkae}H!`V1QgPhf{qA?(0OF05oV4fO^ +V4o)i3A1%U@({&3}!aBzx}hZ8C7v{na-2J;&x;6kAe6+U)&by?5c{o&wJ7C&dzRh92aHuYFSosGEU~v +4|DkaUo-W4Fin1hdI$4)MD@z3NXn%6oJ<EBoABaIQe3BHndVs(rDYUdB}Fp6jb=rhRmrp;MVCdAL{WY +jO|If%mcWxLkD@rcjTT8!<{7}q$5otWX*P@ED4GC<SUjq(0A872RyT2xV2x=Mmt{UlV*ngY^U3l$$*Q +<Y2?mZ6G~cbRpls({s&#tOUNlYOIbfI}Tqtp_;YK%Ub(JqGfB`+Ligbby`&f1|UrrG#RV13H*D1FsU} +Q+Jg=Lxa0S2PqkFN7+dWnA%>hfYao~PwiKbof4!gyK1!xA4(k__r$=l+@(QJKu=3?s$P@F*DA_IVhvx +do1U70Do$+{>G*{2FTjjJkt3E0@b60|a2)sN59(D|3JbIQ%1-RQ!~hy3FVE{04eWcx2NQdt2_&Twg$e +c$|MusFzGeQI=QG3&sm)j4@-1kay)(4CE7y5icH9Km?`&pGse`^UE>NTvnwpQH#8wc5w(0E!7*Qxr?6 +;qw~|37w-<v4x^*<=*`*b-;Q1!zKA*p=Mg;U^rLr27eAf8y@;U5*}=)hFVX4C=-}j+DEj&6<OR;t;rl +mdhv(<f=~;C2`pxmt;fsEBbn^W8?Te$6S5fo~>YkilM8`+3k1hc6#c4#%3cRDkbASObqt}OL&wqj^2h +Wa<k1l?JF@1S-ae|QH8vu_EqUg=R*~QWGx5o$YGkWv(?9J)<A-p(w0WeNZPmWGro<XCBuMbZy27v!b1 +W%*r@Ne)tI{)e5_?X*{4&Fki&HysNeSZ4pm$Rc+KV1NfpH7co9OCn5hk)?Gv*SZ<n>zgb_~7VuKYDTS +`ry?e*F6PjfC?66qyfgepAPvcG=BgX96Y}`Iz6E-K0iIVID_AP7=^Qo8p6Ay^F!$G!P(I{pbs!!o}EH +VIP6dj2lfQ(o*XhLoDzHLpa}kcdyZdmJPCsrhX=<1?;NX}#c}R03n1{(=yF*ti)1v4(rcuYXi=nD1y3 +_tyBiywPUkF%rx6uL%DgGkDnTL#jtV4RT*p-u7n7^>b5ahl_{PR)^cj{CR0pv8QRhF-lFupr{1131Zz +BA_yPd)JgPji4h?l?@3aEfjH6Q(TxwDfzLSEYScxex-O@V`9C93uxFW}c6u;SrxduMlh_i;4*Ztv0V- +p(+3umcP_>b@+}egw~7CSxkri~a+lOg@+Cl)xaAqv@WpT|`fxK7RVd0{WPN{yn;ej&H-Dz-pQ&*W+a| +6L>`etG(pz(|+(dk51C$I=M}XK7N}!{p&|(DRT8`bdlcxAIqi#7_3cmzd51_D$R#7XXS0FzUKNHG+L? +eNl|3E`cb9VNnNN|PINJ3Me2KzY;07;?cN5Ctvs6*3t+%E(~acIBw18~(P2^K1($;Y&|@e8|DNO-fPf +vT9F(`$^ECSu!L+|ivuS=)BAEf70xEhk*olfbErD^J<P|`KflP3}Bd{A%b;K<q;p|7<gGx9*mFb5n_G +;ueRipGG>JA?cAN61#0**OOxNTse%p51cN0S1WI-mm_H@eE_Q`!X>(0TH_NPx!9Z?DHW>^R4O+M6Q%4 +3siUuuuGrO8b~U0Mt!X`aLy}C-HS+4C4YeXB;|Ob3%z~4({Vxna_!|K6EbP;w8KUE{$K0vdbL5rsYU# +$qRzr`M9wG-2`G8sO6bLg%3L)qaUJ&)<lm+<7GOpQe41s8Oe`w1IRY93hFl-qkNIz<ftbD`b~od`&1H +b;qNWnK?P?ju<;GT7z=f{v(jEyeha9Rx5tQk=hvN16#8rub!1E2Wnq=ZlPW1To*kb)|M~pr?}t$J@o+ +a#X`W=W>I!$>MUhVu*vUZz8qf2|r*h-$@cHT43#nd%x(}Sjt6e0MyqK07uTI{MVDCA4PRJr(DWb^0c@ +sF&ES*HNY)NB-5)z0Xut^@hcPsw-Wd}YTv)Upr(=TSljpM_UR~J8xP7YopmcyMLuZ!35m-KphZ6F(y0 +GR<vtLm@^{d|Y&xNOYoAYHsXdXE4eKVDfK=V?(Sm(Y<*V6)Q=80c3Qzq~o5o`<Fvh1J<|j=LG)y>Vcc +572{C{P^T&U3wUVPOPsBOCp^nYBl#Z&VPBW>+J^XmBM5Qz{c~R&UE>Q!Sb3gqjHf<Q1qL^zB@^PPHPk +&1*;NCy47AB)h#{_R-2|km{nffZoE8td8!LP@e89;ahba<pfsdweHW?)i@Qo^%Y0e#XyXdN8l&UWlUG +8O<IZu%r~)O3gy(rSBPueh2qlg?KQ~pO!B$nyLEJp&HqJX1Vya5H0I?(y<lg`ELU-p&aKvaO4u;zxj0 +~gXO9lHpY(7^YU;#gQ|LRy*pRKMwo9AN~OR0Q*dW_QJ$i(4&$E<vw1JMHib(`IIdwy|nHUcU4^}z+ya +~G-6?(qAkPoplekDkbW#FKR0VF+tAR#M^3!TY*`&o$j{b{Fv%-Pnu6mj`c;FY5Yr>)*bW&^G&rY$qVU +BdqFn0dhoj1ro9XUoICU#qDjJzkTxtbb!MbBb={ulxu|Z^rHj)P1s9+!yl(eSO_R2yi)s-T86>mYPIz +v;U)b@I76_wyVClRyO3I|@zUvS1ja&%UKPnwXo>))Z!*;Z@@&-c+J?q&yzbx{NT5CsYqwH+hE1dcB5U +3HoyQ`G0PIGk=uy!07g>LdP7Wejfg3~|i69rnO3EGZk~um&enHrD7IAfjk{$9Y^}S4gCu#2*#ruvsI- +O-Y#kVv5vqZ*7zv;^w_~CHHmzTiqVZz3@(bcrT{iaMR#tuiNMiCx&!)UrKn@yt`BiL}ZydHzZ+9xYV4 +zpG8-VSS&-W!C(f=ek#y?y=c@T^AbpEN3+n1*OCx}4{6#Us_31fE?7p5Zv|0jBEr%=t~zKo2(l{f!*y +8EBAb3M2atlIV3lO}OLz=yN<@CNyOEq>AT*Z)xg$boBC=_QjoixQkL@&5CUy1WUsD<B~geNlPlig1}s +;;La1fAPXBJ0$@R4UtI8!U9c7}uoN&YF6CfYi#-NN;DcOvXctB)WMkvv{O!?;D54UNc1)>s6G=D1x1g +^jUy{j^tRNTXuXKgoK!sO+g}+_AmkL9tf-?F79&gVM4_;_IBD+*f3oXCNV2{3d`|j-M;!q)Am1KjAQS +|Wr;d9-zRg@7-{#qtzu`%krsu6)%2qH2o^5p_b)`;xvHXx#k)`-A7tUyHSoEnJiJPMBpG5{!PAhNR?M +nn}g5ZM{7K!odj+tN+56m75R?_yH_dRU;a=j8x-C9d^uC##ToPJnZ=9)5W8{FKbB`@oy3%k8HfLrFJY +qSil4Dl+ZgmKB;xCOKN<yS;Dh>v;~i0h_v9&Ld?u{3hXPW13t7AJ4kL@L8|xM+)0MnzHhul-_qbo#%N +5TPN%j!urvs6qBaDU7__ni+RVY&@xUI`hlv-W*Quv0l`nYUNcmrNUCL#MdgP*M(1PnAnJ<7xs51x%U% +x@_mj8Bj66t>i2OQ8w;{@1;cnSTF9_+&G@EuwM`b*LRu<7;_M`3Lp5Fecdmr`|AFZAYrb$D81^=|$fG +uvsyazFMi`(i7PbcVwjU*j%pxA&r^i7V|g)$w36sB4&QP^^z_JN-&Yg-C5&;vnnp5F{q2TL?pK_4eqM +VDA%ukNe1_^A)tqhKfQ%6xR<a+0PbEYaCir-x@HogH}cw5KbIN$zjB!5TI>^&xv<bd<pcoKAltL4`_n +J1IXC=|$$GUW^K%9sLV?pW?DE;%t_5nUH{@hCR0%Km4#CJ$0Tv*az&V-SR^U<T(6jk!r^Chy$46N!bi +UiT$U25pMTwEh;q8*0ic6RnL+;(WJ1UednQ45{u-&m#}@8N_ImSW0`s-^2>tFF9ixoGJ>rfp0Thg%LL +a(pHIeOd|4_fXt@CJ0;K!&{{1e)*dF$J+rxnt?WIx)A_caqFq@I|NaAKDKuGcgYReKd+Qr4~AUc4B9@ +7yf@4$!*%-uAd#1-ijfEDT!=>(-9fm5$9l;8AuV5IPq<xawNG)`yRpqQr`iy~Q|tRM%o16WSso=4r?$ +4}f|s|B+Y0qp<<MNgyq_aiCe5LroD#l4;Tc_+GOmgz@Xucw%!ET0~b8*)0Ix}h~W5BiI#nByYLq8~xm +fBd8whk9+*E3ex@wFt!T8(bwO0iw!cG>iS)v0-gS@87?V-htGdUW525G_X|y6<)=k(|lRbQ8Y~P42Jh +}tz<Y*XksV%5*Qw%cPc0mh69h^@QKP`nJwbUr*7vMn2S8(2lEaMDzLE)Yy6QC;-ZLeyS*j`(Kv49Ak9 +Fgthze@JNi$c(1+iB*K<(&@kf(~m{pjMS{nrOk4ZeAj3!r~%H?(09WO5pP62O#&ha1+Pff0p2^JE5ex +2Y*!cdDI2P+s}UL)ZHy#fI%EVSreDz1wF7$U=?jppVm1<?$q!O-*4O9dpYqMMk^gL8OAb6UbsCnc=e3 +7XACC@_`$5~d$Y=(#RYhN<w-v3tJE=$P{)d4JKP5#W9bMhrilWzZI)uR$=9%Cs>}L02wd>B_;9Y=fjS +D|HSA6v_}p1q2^or8AI2p;xF|gLD<$BnBF|k*eW_Ep3?zE`YM`3_Y<~v??dF8S!F#fb-IID0cYh=`)~ +F!0y8yeE*2+-6`_$@e@^K`1r}*<Kgbd9@EcVS{biyWgKorsMP6H-)>z<IA7eN&<he(w=5>G8J3k2EBE +n;(%k(Px9T8)`7+r;q;>?gk&M(&fTI`x(WR=FmUQmfXV)8?PN0FbAhTixU+q~*b-n$4lYeploFW3cE( +H_^!qi2vOl)od1BQI4m<&*3>JFdWAMWfvve^Oh%p8yJF73KhAF6$_o?>4~ry?fcqDjA>y?rT1Swmp*5 +w=Lr`LL@GWv^q{ErH(mVR3xE&Zk`^+e=l3iws~~vplYDusf%7R^58M2v67(<aJPjJC!X4wp_FUl64kf +!s42CYIsi9)tuDb`HMAk4tly+6N0+HABUnjGgt$yMx!c5!5emYdfn}c$*0c{U{mS|BkPKZN4?p$-#k0 +kb;kCa7e{C6&D4JL{3rcpV!t_hd8*zlIz4zL*s)ziUPT>{rTbD3-;v(0>fPAyP|^PvnRigiuUnHx3gW +r(hU)0HzF2s?YQf`G3m&fok5@h(ubS|9)q=-q3m&H}c$^9zf4g`OcvL1H^hiOxFy5Sccx;GTsHmxn|A +e##ECAa+*(nX(RhigPI8;=-UEF-(|7$M#wq$8v`3KC?vJzoP>%E{Tqu;|v%`2F&fnV69UN0wNC@JuK+ +<R&3wcq0h)+FKlpS14+FNQxpU&O`-@nQk1v5UZZUJ09X+QP950auo}nRPmYf8=S_#WFD7lX+Z{s|2%v +L*+zL5BswiScG;i8R#KG-x02T_@zSeiXkXaHGo%1mK30H)eb5+RtZ-UgFpx@x`Q>rJhWgfGvtCaL!^H +xFR=j7=lL}%JLr|NF6{VooX!dOq^=CYCupwIU>oNsKVGj3UQX(OCUcmRSbQimq-lV%Jx@O+id2KGnYI +DHHGB4`Ns*SD2mbJSQQewgjqgqUNU)B84gv-FAwv~*dPl&Os@Dem@bu+f@in%(7Qg}f%NoFK3r(0tmg +6${?<I(8cZ5xTy6ASDO?5lYNxRcvtBsV5$e<Zzut1sO`1d7fHtiL;AEV>^<~aGB%#l93Y)`CFhnL%Pe +9HqZc2Vd&A5N30U3CUU3vGae&ryY<sGLic6&mHqYsWnQQ3gyL7{(sGi3C7AL8D473DXzcUq&Oen~z4_ +GMQh3CL3QT<o=x)@*nYOb&{t(up{oFnf!Eg_Tu#9_!nD;hdoi=zB|LW(ZBfDbJ$cb)Q^j^w<pi*djI} +_4Sh7FwyU_r6WMN#mc-N1v!j!PvtK%nCQj)6YoB3qky_=3UJWkMH8N-KxNhA;RKlM;dD5!~V=~Xnghs ++>0xH(e0hUpo<V_wpJcI1H+630sWuU4Qs{ybGDG=;7>sMS+?@uFUsUCejr?+H9qqDA(41S<kPvZre+Q +vzBlO&nqpQiR2TMSlFCi%<zFMuD<Z&l4KNv33Hyox_3M3B&1GVwD0J=q(0iIzf#iEf#6jT;cW2PBIiR +nLA;7YJYse|N2I2CaQ!&(<sBAcP^Cj>d^>t}*(l?$L2fS-~2sO%VJfUxKItV*scm^sR~)iJWXkNi`X0 +tC5U7VuGB3_zW9aX>H=jXcjWRy~}dzQ%})XqOa6lQo|j(V$qM4c0g3&V;-`oHmxNv0=B5M=zY>(&1I( +Ec<L^G>S{KBGgyUf81vhE8G~4684p!wQSjTkzvY?{4>J~EKp{nEFSO~HgfLC2WK!>nSBX>IW8Mw@;n9 +0j<X>*P^4RW6ji#!G2YTvh*D#1uuj$ATKl?PZbkgBW1TiZvf?w^IMsw<`!^s5q8Xx<;5KKfq!SvO8A4 +%(D7c*E|>fMfm7P7x7y>VvJJN<E{wln*^;|uj(EnS-(oPVFEWAA;F`@8#LHQp0#I|vkqe2J<HJDO`@w +&SZ6)N!h_AI67ArkKck{Q7XW3#018QmPIPND&wh4UU-u^3c)j_pT4f*KPvUiScs%)~Ol)zWWt(1GWC} +sR5XGn3=UlbIOJxlhC~~lWRQI1q24q{=WMnQA`G~y7TB;pq_^S@i=)420QFBO}`y;{fj^n;JdO^9Ttx +t8hmpjnkIAEhm8Hjkhyq=>M+Dkk9Kg4DnH$8K%i@gI1W)d?ZHNMr2IB`yB5)xjs7GH7@WUlhvVVb%XX +lra{Q0(_kH8Vi^G@42N#Dgf}WI(pY0mJ>x1{Bch8P4&hG}n!eI3J@b&2U@Nb95cLTCh&pA5El~v5$Hc +z{L!1FIWg2xgA{HNRN_3Y6ajl_D{`E}>vcfalqAO5;C+`<1k(E|hY1M<h;+5Pq5ci(j^gR0)}1|SBNI +9uJ$0NA~IOs4n6{rdZdz3qp!oWB{Jy?j3W{_$>9#<wLNy<9KL3MH!O==^m1>C?yGZx8h;)l2d~H%`R8 +KAD*DA!=IY0tOusiexd5(VK@4Ro4*5f!N-Wdz0AKN_Doyf<~As)flz!hsHKy&@SyIWnaH_W)HXO2m9g +$)7;=+pusA3d1R@Yf)%4zi3!IZOmiuZzH)#NwHR;r0*B9%8<zS_q*7LYZ$+5KW<a`bS?$Q$VFXJ3ln- +WTMC5%h`q2`K0^_dOsX;e%IA&J+7~ryU;-Jb~t$bXePLieu&uMrZ`5mP1+VB;XSE9z42uwjfM~hero8 +%>kw>NPyEmsg=fLEKxNM>2Rv)*)w;jcwd=7cE1x|}b|t8Q=27Q8dDmg#An4|k(qZvo<muZCyrlR!cru +E><sXMNiHaCaLm)u>d=@IvW$Sp@*$tiEAKo|^*A&IL+N^K_C{pc_u&vQn25$X3swp9cWpy_f-Bo$upx +$Ex{p{-x#_*YR!CndkW@?NQ-5p_6MStqod^$cV8ffqe2vgRCLpeKdkJ2n`b;{W(uTl`lTg`8|+d#$II +wU)_&><GtuNk?6?($<e?VR!U=FwMl5<VSfH4DgE|CMB#0GdT{<T+WB%RpI(E2zZNj$whGuw`1Bk<n3d +vNP;?8bSR%JM!jn=6R?1G=glG#+09duYzWg*zObIF^{x~~^A#NL6dli35GNum1Y48gEA@dVEbs!DJ^G +ezJJ#I0g&Ubfv$a`vG#aY9wSkz}E9nv9q5a>p(zex(<p#}_+PY9^5t(d12{vn9zBy~BDXOVaeT5WoJE +j@o?(-qbJ&*+hj)t5Ql_zl1WX@;D=THDiY(i;TU3$*#vZnMehfq*HZ(T#-^Hd-STBm<c+2wh=4%0A1h +@fkk({~1ENfd#HfwO+neGM@)l?HL<~Yx!u4Z(0H$B$Ji!!zOh{`HKl}s+%j5<dX<z@O*#AZuLB=TAHl +LR~RG^<(h}Ui~|JfKRFMN)9JKHHbZad9KGc<<NR^obrNjxPO<CuE%D8sM#oFfb6K%wrZ&L`Vbx^<t|P +wE&wRl=*X+nxMPt}GNFdX84ECor_)p{HIcEu`pOjBF8EiFFOgU)gm!|tvNHvMbWs2$ua?om;VT>ceiF +RIgg}*dFm=M_Y_3-p%v&1P4_;%!~b|O%pwsmaC*rOE_C`~syR}nbR!HRHFo&la*$;~SVfvSxld`vA2U +5zc^&V?Y1O~3hAsip!N=M_`FQXBPUd6PUxW^Z&U)Ks;aHMKg!(>aNLh<ts^9HdqAc{fM7pvBT?4z-b5 +nDJ*?Sual;ESH{ep-!3&@oE}ZaVNl4rlJ<%{F*N(L1HkFp0XZ_`e#testbwIsj&?a)K^iIP!n<ueJU> +Qvv{E$$;eVR=&D$p@l{d2Z@3m^S_Jhq^rU3lKa{FWrS{IV*ED&q-Jo&mHY4k-*E#y-11tCZ_xu_e_yX +TaZPGInI!Y^>&eBxt-jP~#?i`{;<boD$75}=w)mweEsm{~(>>;R6-<l4vg43#FwXAjeu6Ohhtl(B`tr +zo%&$o}O@&k;>P_gCHHlw;WP~~kl``zcq9-wD`zxsaI1Od-%T>OcPuP{0VHBd!l22p83d-nI;uc9*az +9CLwc%&#SL~SAh>lAy~7qS3#ZumQrS1C7c$W@?P;wieS9!EEM@hL9yCDh?d4@Nvg5C!XFBoJ<)1E^-I +%8V-C7w9fCau%@k(H@?A0D~~GtXnqyYvN)?ksF;Qz#=H}P}3cI#p>`}ZPr;M;*R4VAB&kC$X6fW40J; +s2?9WJrCkp(GmmWOw@di`@t+oK%mZW3%ony6{=Ul{Tz&FpkuGUCJ8M}0eK{@IvUO0m25b4UVz>Gd+^v +fEre(KMloQ;qpz2!J1waDPdkgi^6nX$i!=S-VhE;7FgWBKljUoDd^A2}sQP|dKZ9a@}e$XHTQ!Qj|J) +=>#)yx(8dZWT-o`ujr?KSq3$1y+*GE;h<?1BLkB~4^IuMZg78;MccSH^m82m_64(L`+#Ek2bPr<7frN +w6@sgyt#&9eMIm7IdUM!25x<d0lpd7(+p%C7m6c>>9Tx)iKz%KBrUkjMHIg@Nyrm9d?$(%cW3cDLa^| +=w4!9$=37B%MyLbZ~^prZ@{>Ju2#PeyJt{n^P?~JOWAOIPakDMBIaz;hQ=kVrPr@PTgQuv#F##sCSB7 +3?K)ntC6~t#=Hd6G$YnEh&S#<Q2(2q$d=Dc8V_64)2r74Lfwep5XU4ebw<r;qqfQcm>Wt@eA%ps(YN) +|-1b8V6L6=;g`l>=b#WbaXwPV&r6GvS`8h;?vA^mb-sNOzsX4f7a3zRv{s>lyDodj59TmN)D-9?Knqr +4YjJruyx@E|b+5LL?+Zu!=*eL8@YBs;Vz#>vPKN47j%OfGE-3xwsJEV7ejK{}FHNAF;WO*we4IY{;1l +^PdG1kO1Wkbn+qvC1t~j>i>h(p}qrv+LLqW42h-`gwDMttLIieKaT9b_PQg3<zUf^*YVEOk<5eJORX% +@>uAiYCpP$<~Hjhb{{W^!!Ce-@`YZN`+8-3u({Sp4+xG8LcrVp_Qd=^Fz;fCT;W_+^G@Ig!(chR@7HY +B5LMx6z&zg2hRJpDqb|&v(*^zWXUf3`M|p)O8?6$}#k%$|Zu9sCPH#<j152W2R2>UnaBKwxMxnhgJ@h +Gbdq4Qf!t#Mv#<b*k^32ADzAA=4Pf4`!gdBWj`LtW-yP3MzCHMa8iz1~oZeQz@3uZV{-JX3P+R|IwR9 +1<mNMCSIZ5Crp;Z4Q#R@*=$2^t@1Kz8^Mt<}5KBMQA!1qvwY2;QPit1=YU)G8o)IB2-`bA6W2&eGO98 +E6wz#}mL3+^jcZd^L{P6~7Pd#pW()=`1aU4e#!@ZGPR&cFnCQuA=L_tb#`xL_5yGl{vE#tOZYUIR*e* +q33hn;FejH&hflTJk0PG_g6Sec_C7c{(5RSYQg_y&c)fFWy3P;ewXeI^wzz$24~a{^Hz&c%(u;q(1Pk +}_F>>=1=I6wWltJ;_o_p-U?mY5lsUn5tZ}$>yUBqi(F@>~N2l*Zy<C<QX^4UVOo#eH6H^gAgRvmHvPJ +jvG)qj{-yQ}iAAR{GRt1)CA$y^7b4b`9JKI*SU-dbz^1>v=Osy_c52n$fZJaHl=>0WLSpP*^#5}1Oqy +NdZVyJdZRXWyMMy|R;vwbS;xfX1q0XIu-crei{U^|hmdEUIXiB40QEQ-Kck>D#QPjs&hJ4D)P(^>WUB +jL0X9+kU{kdKCG?7U0@7w~EDNT&6czY`a)23pIJwE>Rc_^b#D_%=qL1ECJ@8yeSN`sTVVn>9o{b0{lW +S(sCbJVtP_QN<=bv0Tm__lG7@q>0(Djg`blf`(yyvlq}NxHYBLV=1rKT;xyEivJw$a2H)0*;<lKlKs3 +KoF5+kJUTzT_;%I%&*>LHWn^*T8u$i`HHKt}>*qTD(xuMs^bGCU+(Uz~pT9lxqz*O|1=xnyF0|>atw? +ZKL(mBIA_#5$-W;C1STRz7v2KT$lGlcXeUrbJHMimbqD}%kuFw$_z<jkgWae1!-hdfFAV{pXBH}m|kJ +2hB{JUQio}?lvfE;qsp!zu}bc0)E8<YEk7@EH?dkpTD0@Pt?rCpnvbnrNW4kE;7m+r|Y!DzX41Q-kk@ +9E_D5JN4(Y{hfyNEuTWv6MJXsyLmOm}hQ@W2rE=_4Q~5-!l%giBVcq&^{D1^zf>f^o#~atPCmlv!r6E +-Cp0QYriYIe1p$;Axfyc0O+dnvZRCeXd<Ei8gI0ZM&&%0lv`bOz}!K-n8MCm;qTjH<s(!MA%|tq^Fjr +&S5TcG_8|b%<nwj>kG#NA_&v?=d!Qg27O<FMV!)q^_{&J*h7itV7YKqday^Z>*oY5BsN#sSP*s>PQge +rf>;L<mj<d>*;}x3(27IeLWlGBzLWq`SB8rsvrehiM*@GB3^riKPlKU`yHd;G&@+XfT>C!9?=!A)-T? +Ggra#EXYqCQnb>C`Sc3zekk<X%y+pxB|!FO?P8!5L}IF1*RPEir;DZV;50&8nlrDDD__WPPe2kai8Zv +9D4XS>xzm;a4<G-lYmYr7QBseCZUd2hcA&3zg*|^b4z%Vsvv;1-#%F>{sm9!Zj7FMK7e5T}>O-%@IWk +H8>x;KvDM9Q00-hH|*4vWk;eHW^IRBI8_j5##3#}Lz$wq=IW0AP%{Gn@Xvo!T_aV7Sy9XfN10K8mnpM +Fc68GGOoFUZcv8%MH<kLFzN0QoKL<7Y0Cs|p+6;1fvZ+F8RA7GNnr#g(KrgU39xN3oy;iqf)n;D<Gx- +_3RCu-_rL&8fh*=f;Is=)Dps`>qFsizXta{$J8nKu#26^`7ALUQ?!@V-PSD@kK-sYDdDLOMDG8)mAKN +`U|#9}n+>k;gyY$-5LNdXs1_Sddi35y3(*12ama!)knRK6GqJFJlKDZLYxiRf$3o?j<66K&8&5sAaMl +Ya*vr!41QsmsD|r^L)DG4o1DeimKAx6kXeFOkW)oiZXH>_rx*b_$W`V6;UMb?hQ~74F#t=JvcE$(k9v +eRs;t0%f#RvS;(&Krs?n_H1UWOa0qY8Yzn;_x2+yL@IHdiqgRE3B8ZT4gJ5mhwo-NG?YLIPwB=ohOr< +A^+x%-gksy*Nf`E3G7OdLV82r?;mZuf%A}mci=@+FWihq}J8V5AeWW<>u8&DzY4Dt=W$0Y5<EZH{bY? +2H=Gzb~438)en`{eR1RF>>VJoe5Lv?uemCeku<ySURXL?)NNWH;1joeKgR`($o2UFY)jTsY8L#LXUq; +kDQQs4}nL5<0yfe#%@vWZJ1G7@rHgn*_&E~^>CM~od{<k4I;0(y%=(LB%T?zUs(sax?{z<?H^Mada8J +0JV@B2~9&C~+w09&=DA@RbcdY&jdrj99a7(tn81-03uE^P49VgTtFs8F3)UNs|rEnNyvcb;Xg}o#)s* +ZW<Z=#+fxo&jc7qP}ek?Uqck@qZC4iGw8LTQyaw5o2-#oY96)@sTdq4L@Hmq-sw(K1)_6C=PH)=s}p! +&Xg<73a1-D5@%#+U;gajli4m%a&V<AF)0YcLacxTbcjq^%jIC0*TE+ka*qhtbW^|F1mD>C+C0QWoS(1 +r_uU>qaB-B^QQ>XLt7BWBvILy6mj8B?H2j|a^j`W1oJ;PQw!rvADQ4#SoiDzzpYTJ*b95jfy*N?iEA; +-u}Xe_^;Z)EA#HXrrn;VyxjIkq5t4z%PN6|YnZFJp{-10x6jF!VaS2tujS)9Thg9i!~H*)p+P10V%Ou +i=nG>e3rI>y$jmHmKmOMIs?Y`lFNo#YmrIRg$}lZ?hCjA5xu$YmCMie4v3r8m${#v!5o@qI$@(m^AL* +q)X>!vYB=09B=<bx|9Kp%9HaH#}mTrL!82d(n^M?T=Kjid3VKf`IKqR_%1fgAyc7PGV!M?R9{Aa0O>^ +s6lz7K<MBzc9!k$+uXzSxu$m`cEb)}T2nz->7~z1YWl9NqCrKAd^?6hS?u8}+C_I6Vu~Og$x7{0KI-k +>K(!jf|j8W$1+Bov&Rb*qInqg@6bfWevqk2D*1kdY9$bmR0Yi_Q#Bv!9|9kGld{ukLH*bgPN<8qQ}1$ +r`v4j8>zYtzM%wsKvsC7ww)p~dw_mh*4-DU;$;%U13QxIrTpp5|f^Ojw3%4#go!EQZO^bow7Y?In@go +Gm)~;F@?PB-}5_ZO>M+4|}q0y*WF4dGwwV!ReBG3MS<dHh=xFJ){hJpj|ue5DK!C+k=8N*%-FD56E`8 +P|t95Xs<8JSqj0zol5}hRzcI(ZvwiFGv(X_PmU02i8nJR4wVMUo&~ElHHg>|1=Up+(_Y5Hn|XnUMx&P +CRGS=WaGa1QmYkd1S1HtVR`Ld-Ae-}k^uZcD%%MrHowKB>#i9;u7(k4HF4|&GYSos5w4GjUoQrfq!Pc +6*fuUo-dgW(#EH4`&Rv7NCRYPr-tyRYQ>;g(|8Y#|jzxOm`1}tZVa{A%`v}ePVLf4*=x(6iL_f5IJwY +8<$)WhACE!nkacdTuXws8`={-oANrmdB1JjF<%M)dLHHdEC{S53DfuHBoKXl&P4{rk9wN`e+#YsNJIe +MskK%lojctM7fJgnxE}bZ>S0;gd&{PquS!=SlwS4z|iLLU|Vn>chw1wFKE{=XHzt7UZL8SN^uef<k>k +ido6^_);CZMw?T?(Rg$`pxQE;7t^Mb-}c;K8pnQQL|oA1V&>rTuG=WQAM8hUxCRgz>!3=KuGbkwsn;U +fG+8@HvSIO^1Lv=~fw*=N+!<ZdP0%Kw)P?ZS8oPC4Zez*g=^Cp4`ESRJplyAf!Cwb|{jX!_^)YZS*V> +@$|ModEzat*~Q9L+l)4z)uZBqnFPu_mO{dBGG0nzU+Mn(YptFORVawIPz?#OCd3CNwUAna021GNyp9} +Ks5cXpoEqXCp)%f}&lAw3k;FjxSk@*M>+<5O~b18cO;nk(Rx78Lj*aaCFPC<%qRLxU^=Iuh=cbhEXVW +JHnH2<WpHGYKdPsgx{pd~1NCpq*uOH7!VfPO5!QtU{@xK{PM&2@Y|$$9Z@_y$&15#wp2T?p+wH<P3tX +D-Y5t0gmqIltH5jRo8r*w1_{zT%r;80;$tm+uylJFz0FM+npJT>!ki>$&vW#(N+Ec{Cu3u(kwHQxbdL +a1_0G2`kZ%mhyGOkni&e{R}Q#TfsV;Hdz?KtzEFR;&te`c60*gxzFDNu&zOVGIf<9C=f4r2TcJ3#CrL +7$CnbfMF44ZrA$70nJm<V_fE*`R#^&n7;<4Dbsi<a8{&}TMP(eS}AWTcYRiC-AXBk~&gZPsw;*W>a+b +#ItgJ^4?{{1!EvOv%+V9);3cGCfC%%vr?#w-H&D=EM8K0v<99acmmYa~*XUZg#3+aUR>6JgAGMQZq9A +0O~2KH&Qj=En4nvhAQE7#CAcZO*&ooA?VS4eN+004;!YdN9o``=F6SiwH4Gn1DE?IwF02jc4YDJ!!pt +y2jvZH)<KN=Dj+2jHzv8hAr`djQ%%n)d4Hi+MBiRO!Iz?SDw(HfHr6NvPy_+_KxJ+Q?Vfib1cgiFKII +`tbcEY?I2zPz>b;T&yFmtf&FE_mY+jFg9!jTZhAi(I7SMa<jbt;V$uS{x3vi;4PeJl@@Fz5tx#oEN_y +1r(bK)*<0l_26r>dUmo#N6x6ueB4eX5Lsn+dHB>46)P=etfj?VH*u&!9e+t~xf{bQS+iIv1(RrhBHt3 +CZ_7h(_9x(xJr_{1qQv&#&h><xDxIc3BtRTtWQv^RX{0#e?ny41rboQB&fRjamFma8eg6Hn8zWal0}{ +_dmo-f)#ug9T;wcA?y=;aWQNcAq@n+x>oZy_s9@`|tK1?tZ_rp5cM2#sjMDJ$(4xN57yro$7)Qp^Zn6 +je@m-R?vXgdygBa#Ne8zAawohJMuOXgP;~e*rEs=4CIwtHi}EOMN>@Hk<4QZu$ay%`311KE9)qtp1b| +%K=}!y;H{{;%|pwWcyaQw4$g4@f?l8_h4{5fPx8rRxk!NnQjm4o>XzBk$iBzEu#-exev*4Dl#7*Y3y% +~`=DEwly#28monz8J^5nfruBqBQrufyM9weNa6Cks;z<^Zrfxy5h4gCDg!P&XP()iZk!>3OiOB6ZWM_ +ycECpz?_z|mA=o-6IGtf&od7E&OdXt?{)mz3~>2bZ+jShc8zRJAyU`iMGGTiWj;Y)R*J_#PEpNZ}F?> +Li?yWQkWF;L=K|1=f=1bHe}8Q@67yt~-40(bI=}kG_BG7KBN4?nL1I5c%3S8tiMJ)~Y;9uJg~R5lola +G|nnsQ7SBeT9m0ti$Y6j32$8`#@IsidMi*LSkP*-Tb>y51$&;L#mP4M;NfC@!lP+ewna3iAR(VOVj-0 +u;BgTAtKPT*8b$(Z7o6l03JXv2qdjJLNMuq8LG5Ur_))<-!j?obs5<dIylAaP_jzw0D2b1RJypHt()v +kY)6i?vZIv#t_M+`tBnk}XfEkh8l~ThcuKO+7eed{Tc*K}5bBzB^P9R01vShQWQM>-bY~l(gb)RR7s0 +s7?3MjeBLm**ig6)W+_T#CS)uo=?Mw`SLooRiBF{EJqNR|p%xg1N});x-*Acz5#0}(Kw`#QcsIfxFth +tX@$4FnEmwPDYw%IvAUt<!h!$&=wA!VCo7r4F%R>noc#Xp7>jboiQ;7dDCX1r#qqGFssnFc=(E#zNS_ +X0*#qDq<1pX>O2K2#@7fsnn>ObUv@!B|H@ThlA*>cCJK|pbCG@4zbSdt=dLuPMQ^5$I*4Ja&_So*yL4 +Z?yE8(ChgdkM<FBRP)KJ{+N=ZBx0ulV#rGO?ZR6qK#Nw5TU7KY~<eK#wQ$@*F*|;>-zU%vdMTl4h7rU +WdHnfMq`RVb&+0pq(-mL5e+BX9&c@EKD#qlzoSC}=xVlnm1tM@Ha|AuE8HX$i2OrhYERG+f^Mjp|UHx +WXD#pPeg?M+j3T@_i*zHJrevNcDx0;U;NJ=#i3XrI$U*OMgM<@wt;Z%)rH4qt>eO%O3Zr3;(Gn0&#u= +czDa%DIQi)HlD4)QL7n(4jRAN#KpP96DPj`-OtwJCy?fqmq9y%uP`U(%Sr%4kzeJf<nYTl~}nax|<uq +c8N@_!8M4CM1SV9#76Npv-oB!;l~{3oMj@qv)FdYv_(J&&yOXFy-d^u5L;H4LCB?s(Kb1nC(ctP70<; +GmHY+GLbzd|2$?a?mt#KQsVqwd-FrpmTSREoD0QiTiKT_6ble}at4L@@Wqhq>BTQjfc@SEZVP0=AU&Z +SEA#`jncM;f{dA-_40?qjrjIUV_2+Ca#vURM*a}8x$CSx&QQgHi1xgRwi#J$6WW}M7&0xS!r7dQo};G +Qat>`zI<hF;vNC~40{Tfx$mr^!5Az(Dai;}t-N2+=+9by+Q+E!4<`ydT$93-IH{`NfZ;!S4?LPgLRSI +K*^oPcUeR0{Z8w`;T|b-q}~DJqo(JsNik59*764_H6U=zgi6I?1KvlS+i=<XDw&@AVN)(a#EyYx-?;q +r|BKg#1bghTYZk(a8mwFyXAp-@<T_grEz%$dSbLmiz`V{QE~Q{TE-&7W><{}Np7e_*agfZwJwjCZQir +EzsTXP(~x-~CLj*A2;M8}2JX{nH;Kx2yf>UQ+*5hUNP-kyM$6I}GJW2hE0}omyuO3Zc6D6eymPZp24? +y#Fq4XrLW$s&+G_(11aB{1Za<YPB~wf|8-cVjNo<#t%CbmnwVbtY0wY=I=&)R!zF#9zV<rG`bP)Fv7# +gR8ls9ND(K2#D=@Mhy)KksJ>=*`dP$n4ZraLY=zfK>RP6^!)|Ie@4#|OP%vko2fSqDoDK=RW05hKle1 +f3ctorhA@0R_6~4ttdJB6Qjg0;S|NqEnc0LW0Cif(ezk@G2ROlf>+~#ry&=qom4{BYB5iDmtd|n=J3y +{5H}m|5A>Tp&t@24c@B3AK!`}0?<NS02?tWse_5mkItgu&XY$^BAC`49%zaa$nbCIAf2ApSQxarZ+UZ +&Z>BL))@Ylx_I2OvA=h-h@5x^+OVX&tGhmCqxSxarXrQ%8j;k>va4ENUU^Ms4VY)Ys?v?xZN{pa*FOp +!-eaEw<H_(^WShumZicPgrb)ZXW7gpAMNyw9^%@EixC#}f912g9=4vC~V(B2EU(3ujDpvEwD&LZ~QxI +i<eh}*Ds5F^x4VDWTe_4FcGGyAY)_KoRtg{3A(k9tW0_yPT5X_^8qnkD6u02OHpzhymkM%`Y6r4!prh +YnA(Dj1wwIm@6F!f;T&*`+v_d;EaHyI`u`2MXMFWL|UN`Oq8{SM`Kar~d<efY4Wji4j?z#j`2Sig=1S +&{R>B=^|hO)4AmQM(E?D!ecHRHq37<7P|7&0GW&fDESg2oskud4jO;hkA{QYhe(`a#!+k;R~c>+WqrB +T0j8L7QnO-V<BETGm$;}Z*mhvU;)@W()Eq#bx0tNS-oPpN4$&$wer%x_7!Fs>$7-z%N0W9|w8T;nw42 +0%c1bx#W7vYl)Q!Q6wn}?OtTDIosY#AyBIfpFPob6C)to>(0`lLWOx>ip;wRN!n#h7Nr~)d;qnAgA$1 +l$PWumCK0WErMo<(~)Z4kj#NVdD5wd1nR0EOCb+?Zv!J}SpIPsgj{<gYUG{BN`Chz?<x4T2&*&{PM?h +-QWP7CNn0L^lbdR!i*T{m)PwWwM>Y&|V|99bT*eJHsxHoP80n?gQCsOx(yP?T<iiXC35reB?w%v@!G~ +9BVZ3z6<$9b%q>5tF<`Ybm8J|=J&O_He9P~!(i9!g8?CphU1I&Q;SuGYTCox8?$(M$2YyXw&^?Cq&;{ ++OQg$VJF5weyLogO?2Gs$)^Z+8Y(6{N#C<zUSPKG)FP=}9ypf_9lbfdLR!usYwDxVAgh{U3SR^`z +%i#yA+E-)kR?I88o~HpNIl-^1a`R~~(|m{6@1E0=M@>$b(NiXxD^w770R%r;D03M1=y{Ll>qRv<C7H3 +dt@2)0TIHC8>>-zVu>E255{1~;J$Z78<dDyCs+GmM5`hmQi#ijgX`9!fOz%5;YpPP)IR3o#d#mc6ifc +85)~`|T4uY&d;X7=OUtec@{*UmU*h!QDMS4(N7xx6|+RKCT)9e)3^&Z}($g+WRoXUu{D%Y$5bD4iVNF +lVKCFiy??(R|ZDPz1z61&7I-)>l=|WisWeDkA`kZQQr86o9~n^5pepP=m%BdezfZa#Nf0C!rQ`0xH-V +lU5*YoV#qpOsfW&7MqJ-rK6f&0e-pJiTP~BDMP#e4G}88`#@&fo<eGiiKYmdppVNG4T{5!*Yq;j`2I~ +B}8%2g*g`$_q3n`SMM-`=!&A1LQ#D*S68ES^j5hz!|mRs#e7z}^?1~6OWAK!>*o=r+;Ku3N1`q|-GV+ +H&)o|@rDsg52jt=)A4Bd>8^?=Z}4$d6j%j4{o37><3-%Jk@TOWIT5SPR{RLDs24(`f>&UQe}V_@1(lR +u43Kj6#nBtNI1O#i*B1cCNx5spShxl`WRxb?MEo2y{G3VjedyxVaZ4?Msr3OGtkXfL)`b#_-h#TK$MF +wm7_v()unJ=mUk<d8i1Q(d*0QsN|^_rIjV~Cxh8Qwea-eBhd4Hr0jNgz7$WbuDlKJ9D%bhjg_fUg$&? +V_YFr?Js_+Mv_w%>%Hi4JtGA#OvR+_RCqqa}ebF|I8t5&(s=+$AtWmMNy<Vr{`7f`Xiu3H#Iu(ykes( +HOuGT{J`A;sY<M~=GK09_>yiEPr&7qnvk6xa-!&5t(G*ni0qWZ|ooR;MCI&{#L&h{1ZeT_?<r(3K78+ +C4rU{dW1HXx8AIAzE%l4WO{0pb!R4fLLk3zg2I^ipDvmw5PNMe>)=X7rlVjM2#|GP9kio8{4UIV*bz_ +hHmU^DzBZ;ELoD{-dNXe1+Tqhb95at4wapIiQ%)?Rq?Xl}tP0?Ay2v)xauoj_i|Bm5+b`&VUg~XIWk( +BMie)x|kS<l%LW?8S(u<bYPLdxU%TY<D+IoRMfW8@b(ofh=tCR&k0@|9=a6)iyh>*DE2Y4<>N^dcVk3 +`XJ-u*t}&Y03^3?o4p*AeA7M^=6nFDSY=z;k0SZsS7MO2ks{F3W>786Ec%#8nYU!T}VjS7=qy-c^)Kd +ung{L~04v524*hx{<aMg#ADh{=Q*`a!ig6z}nF&??7s0j5bT|Mqf5%aouXdYMa-6`HWaVka06F`!21) +~axt<D5=LFr>IW6Tw%-fLHV=&u?j)<e+5w{K;>@qkz_1CW|Bl5i$Xyg<3%!Dv9zqCA(F-}J+x0O_3+G +uEy=F&B|M(t*N#XiWjbE&WKh1vIKa>O~UBH+l-19}-G;NqG*71Szv;a<u3-9D=Pu^c(hn3mG)K%0yem +77U+>Bjp-pu?)S3K=tFR9t5Z#ZN*!3$%53)NL_X?ikh%EqZ71pLzN~f<YAWF$U7h<Oy4S`uA9s8_?eM +4;Ry}Uj05JDu@YACZ!)LUK}tr{$3w>yJzSEhm24Qks&=st5`5Q$C-+UJNrjnUGIUq0N6)y00<xQKw<P ++q(6VsCU6J!waW*%-IiYg}J#W3zjleO;-7uo?BvWlw?G*8iqfhwp?x=zayaJ=gbIG&Qaa_{mo-zKhUy +S6<KRX!Hzf+9yuq~#q59s?1e!m%a{`~<<`eFNII6VE?Xm%eV>X`p|IY4!3K(tYIoj{4|qhkeRKss1b< +@F<fRH0UHa=Z=$`r-E@U0`gNs1rnw=T$b!7ZR7KZ`5-PHuOCCQq@)MI5PeLs1Ci#nP+KiuHur^Kb3=8 +l4JzNMqH1TsmJwvC+8Ut7=`Hz0JBCzfwbtPp^sL`8J)x<+Sd~tk4s9N!l4{hmq~E3ZH39)%*!p`%%jV +r3?pai#3R;OrEIp1URexX?b-artgm*vb^!IBDBnyFrU2Lu#ugQgUnV$9jBAJINPOl`6QY(e+MyYui04 +Jc1(b*(l9kzpX^}9RA=0+ypgH+NyJe$gIRz^I(@sRf^5Lq<VYR>(KymnLiFU;Rnxb$0!y{$fp+a}nIq +gMDVs^=rM|O1$QpM|1FXPfVWOWjrjWFs--2wx-oX0clE9o`@=n5~+kCP<h%+VGQ``om_>fH3%)R|h{# +HLEVv7(|fsb~2#(J8J3j1f$A5>Kv_Tbz{5{UpaeCU(lhQeTSzbuF3JGv^tsye+N>T2*Oqic<0$y2m6f +<(Q)a$L;pK^JsT(4Q-#V@p8IoGZIzB7~s&+^EkOwL9f`Eid94>d5QY8#cndX<R%hjx(Sm=tI@aSz$Qb +sylco9(Fnj?K<acwptKr_?GQE12!2I}@e{suVYF{FPWosw1}q|?A3sZo7{<!-z{ih8J}7E>lBVuV%_! +>BtRYaXP7&0{I+nSbx5hx=E<`bChX>FabCmxRJAbxUw)RBua&7Z)`*K=ddD2hgLT5xcGj2dgv{T)huW +9Q3tV{mSl6ihZMh-G<)L|M_V%S&$s?RBdDp|25z65UfhIMLFD>wv&FZ+{-tS{fIyr1NAp4GnQ=+(kHn +?PDD$MbZ8n%w^-N*yI4ESHO<=xiGpu*)VUt7TIe3?)T?&jb*V$$u{qYp6T6Yodl2Qw;2MLN|+*K8;(> +vQ+!UHL!y^Dgf!qr*95VMz0Sqev)hSs{44!0$QMzNlx=6_cE_T7N{XoUac_csv&3|{a)41#O~SDV-sz +3GY4o^PoUW%nV}v;IU-Q`iShL1bDYj`U<BTnHZBtNbPNIM9WHjGS5zSwvxDYSN3C69XMrVzXNCJ`htE +&XUT{F<`}aTH#Ko)(Sv4#xhM~aswfc@zwvc!MDs+LlR$@~BihNO|IO#S)T1*OYww5XyM^Ha5_U>;{H! +TwayP~1*G7t<3CkC<DQ1-U;4-X2kkvUM-XY^|}?KcjD+3#CT5D1Ui@9Clif${IVTW!_HP<^+tzL*JO? +1!$e2fbfgD|HrcGk=8z>P9RM7AQ59Y6UdmaT6K_vvT_|+=Pa~s_qYiJ&ymnuV*r6@+>hR!8J)svAR@x +2g>-DLm3nYp(cVbcw_b)XwLA&_INbFb6_}Q6gz{m4v?EQyJd{OQ-9r#G(%Xs8zB%KGtG%?>iWuCqZKQ +VVj|~DSHM{j3nzP?5~;exCp*ApT!YJI^fE<R94~0l&U;@rPu$)NriOjMH|83&MQ|*EeOIS!7_&%ocV9 +lagy{mgV<s*J#NDkb9~7{__2KkVTg4jnU-hAw6C=L=vqCFu6!+y65pfpNo4N5A`-@jwMCPuRf&0<(da +2TrUW*WYmyXh?TGGDid070^d5)}}Iud(_m@Qum;-qmz21wk?39{eI<$QkI@qFU<$T`{D?+8JB+OKJaj +ljw!anJWZQ*~ql=_?Rhr?Bm$20;B4ivbJiY&b-J&Jr8tEfIpp$tA@<o}iZqFDj=RS^Q02YcBx|_4z-r +0>al<c;;N<!h9NhUCI<R3B!8@C2){7>?VAIuO}`*_0Ht~>uV?fU;hJ>FH6ck+z4r$tIs#;qYYcLVz$2 +@jn3(tH-ZX7V=P5#wfi3AM-|6|^MG=zO}r?iOV+ps6+}G-HcqVv3sgs9=Q&i-tlk@em0`M!^NrQ?=Fi +a*B*t<AT4RdJ8J{t<s1~Y0BPT|aV$q^RSfYoiPw?IK;HlvM_vdi+xUV(d!SS2@zV7g;5#lrE?_0;ymB +sEnr0_XV+Jo9T<wp6}j{Dt*J-{A(qwVzq)o<*u^&B4zUco;vO}n#_CXT3<$P)+Z7>cEd5SIR~KqCwYF +X#G%NNeuaZf>sifGE=3v$~qq7lYI=k|&<%T9l#5#$kmL1#?XX;SAW(X~0w}Qn%4Vl)cvyx7zG#w#XK) +@3U1;?xGptg@E8ZN7Mh2zSwxWtiS%@vXrWYV}RQ9XRr)U`TAeYGY0E04H!v}&}+u99v=W0>#%`!^pKh +`M$i7f`=-dh+}5Z4wv&P{!5U5uzwZv9zQZeAVz7R-jn%g?j;?TyJ|4P+`0L8m<F9F^RA*7Qi&gfr+Kd +k7bFH^1!#P^h4TCJ+$z-zC`UD<T)`X0b@gDsl!$F?_yMjzzeD*t(#y`3=>O=lMUDtq##0F%&ceqAqnN +pR1|Cs@W#j<aoF(^B&a@gH7(y-HPI<CYRS$3`h%Sz=zbd(V%Nw%4!s+%09HcLyg%5eTUabqnkj?c!;+ +P_o#U>ePt%g;Ej2}#fXmFQ-9J8(vI^7c5oZ|0x7AMN%6=SB5tl~dMHlrJ%u>T;padUZCwZQq!OQLrd% +O-^2|(e`+EhnTg>Kw|@MxpZKlh?y;w{omW4Te9)Bk53KLO3>HyOnL3+bFF7{fpfW9+D<Af{IQ?YSEpZ +dLuKOL#3%X6Qxn}8=_@%RvT?^m^O7!-*lrO0=;!2?Pk!<I2N~RyAjJwgrcWqJN^NEWqi|4pR_9F605L +%}hzXo{q0l}{AUG_qd3lTz*BSjf#{e~p?JD1%qIFWc3mYR*vsU|@epC;llikm9z4G@rX6LH^Y#AfL;v +R>zq47eKiVarrZt>Fc=duhi8YBL^as#p5B{)2>a<p;0Yv>fz#GT4rNo<}Hai&z4Dq4?f!k(Izc*i43L +(}br$(|4C_we~9zPU-F8%#%lHtI2ki>opBmj%^^ZB0I#rvDFxC}K|#@&t11bD_^>R3dd_w{EWTd7yLV +4H0R_nk0%W^zBmwFH+8e3Da{#vth4~(8N$>Mvz0H8AQ_y&yRHHgK}%oqOYcH>8lCqqt#<6>ASW=$BbX +5tnO@+$_qQdgv2XcpW_J&%Iinwut>$)#ktF8<as%`#N@FU4+$9vf#O(`iwcCaLG(+$M80NojcIy$Yvp +wj1h-1VnNztP-2w!>B9m5pFmLVN(<wRl@ZAn^1piIOXDccf$t1l@`4W(FVz3kuhoSM2<{g(G?(9}Top +<Q)ZOG|@mjwHe1f*8FO6^sS7jc~&t?S7AA;(_>{<CE|*P-F4tc<&C7EL{dn(+ih@~O^YLWv*fVo1fi0 +*s<rzzhg^FfQ}?vf`+cTve731u>cPT+mCayE1=a_OD)Yrds`KT72#s@06=C8MLPbw9}QBHM6Ws%eR5d +P#0>K$)X=ww{iXA^KcfHll-R7l2=1m8>6gw!Ck0zq6pJD+zb1;*->hV)ri-d6f`k=3mYf)jaF=dU+4I +}Z|CrUF{ltLqoTw{D{rsyR#_R9S20KF2kjxBe>OGqRdyG{2R(<Kq(c~VdiucCb%zew%Hygak5APBM}o +jl_;ALm8mJlYAU10duT#o2Nsd`=dY~EMzs+;yvbv_2Zww0B9a(PlII!?)a6URZKRbNY#o}(*fsBt{x& +{n*);D2Jlh47(h@O8rIbPTGGKz$cb`yNzXGW~sS6h~N(PDA6DE_i<zWP9aJ_Z9JQFK5~en}1Uog#6r4 +O9@O#8$Nb+bbZ4P3DDL^JC12kKY;u!+NW9zhvKEc40$*eAw~miexCqE5>WRNwbH$;=>ltZ{piB+VRUu +7bLNo_Zl0*_CM?d1{6Pj$7&vBP_{{CFOJSaWai{)3)jUvx-FHh>%@L-n5dS@=7nqZF{TifAd(3_@fNP +x$n&4tx@X?8_Uk@7ZbQ(#X3cdQ@~Mzf-r%4wTlNE#tsC|Pj0FnI1EfK3BN*7bk@s3oYq2lhJ5C&FFad +br6`Hw)W=0{@(&PfU5Uw*`0z?J<uc27sZ2j?bD(?9Gl01|qJH<!-KFCvMrL0x&45CtB&8{tO9P3W_2w +07#N{n_hMR9&{1EbkBhPnq!*XA{B)l@pH4;k+qoA}I%#U1cbNiCrk;xj8|20pW|#>boc&>en1UXHcft +1yS=y*7Tq0S%iwWn|n0Hb7s^-LUYsKew`E;l#@LwYhSWrGSDXNsN@F80TfOk7gk^fEK1ULvL0*_s%cX +&3?}HeT&Ua^JT?m9|1!*M#<9Lr@h5hNI9skC9<<Ly}-uA^258#1xFOfqTl9av_0S2MvI=M$t|nJl8P> +he7c-89je&&1^qan!Fm%ey$VoK!GXBgRibM$svcgZp6+i&TY*FnRIPKb{Oi4v;%3|HuEq%0T5}{=k0@ +qtbzB-Pc+`fe0mt*`nUy(GM}UCME(~|L2c3J<{=I3ZLE3UZMwitp=zFByYePLO+}N0r&CKM!YfQ;>`` +*qj{}bUqd-|W|zTKk`_Jeso0gW8KbuGr;`>^-qqtWt)->kL&J%~{Mvgd}9X!3p1PN&xdtc_AFa2PD6e +O|YJ?DV~@WnD_bkTUJyMNVG74X$SdD+0OIFeAAZq#{9EF$mfF%s$9deQMa3s-y^*mky>=&wk{bqNvB$ +96BY=ZgqA@*TmG-*^04AOymyZKF;yH2zv`yRg*#3&SQdE%jDB;=Yh|QI!P<1pdh(lj}wUh<69M@KoV? +76oL42o>I08i;I^@MZV|1X%IA2#Pea0WWZ@3h-(i>x*=0uq0^@cO!g<7D>miDlPev3T@3XC5w?ckc>W +yN_7)SP%fbRp*1oYYE@n&0lUYZrVx#Ef3UeD-nAuhPtRv}4Cw%KCAOe#u!33nxuTzVCtu^kB<|IQ5KV +%%pKE?K86R2R=Y?2e_fSb5LXKnkWO+6gomu_cSs>_u)Q}u|aSy_R)(-7VK1*ZC*kecw0;q~1Ez#7k{X +bKW!eLU;#_URBB>1a>&eJakWzIg>d?un;lJ49tFzfQ*a6c#(JAXM?i7H>}Fz)!ZL=E=Gw9u6C@zh74g +9P9agLgW@LU2?lqgBi*RpOuNH$+oTtw$*rNSobZ4Y!hzlF_?v3-OINb2GGpeI$OIJukJ1;7s3UNGL0f +`f3doDKBU*iB~W*oONMXNuIgyZlzt_dvU?F{(}@c+H=~)-*W)<Wu1%rn93PZGXb_B>5;(tC=N1AFc09 +-1S|3N-RtiVP2~dOsIdJAK8&JRl4ev!##-4J3x(+tcz&6b0x@vv?BTrSgFG1?E9t(Zbn^u`u<EO<CEr +IYKYe<6e9=sti#UOnjTnkfeCumB<aTfV+Qq`AtoY+Jraw4@@_6-id%`QVK7*onyEsGpYv<M$LSyQo=o +U>=S#A+}aJ2%Q{7QIWeDPB`m_I^;qYus7vP*%(Ox(V5<+$b<x#h7D7q3{!>MUis;E=ftHB`)mqop<n> +i{OQCzV&TSEq-(iX*T`jn3U3pF4DIHnW&#m@c&h}#+z=68@%O6GJ9{8nwfCcxxR``lzL3G{cI0AEQM- +6J`+=$rq=e-u~of>2-V->rBiz**-knxgiyTEz-Twc9@RygLOAH<PYF;bRXm^TP}SAderEuRmDCNefJ3 +fi#XoVSQXL#nf|uOn#V6;aT5C5F_oj;Sn+#)r(`k4*kqmXITs>T1C^B*oEuGZpQ&Tm$1cr#GuO-O&*c +t1{8;V}inNL->Zpr<*8WH%4LD;x=9QKTSz~VVyC>Oujm@~;JKME7pS9nO69iedW=Bm)HFd>Pc4t8T7a +5}~*DdyRyS~pSrpzP1%V&ce_`lyUAlZN<WM(LGtL|VC8Lt$mo-^st*u_I4!MlW(X?5jp-R4q+p`sl}k +-an{lO>;?cwJgX31h#<8Uv@$mwSdCuAT{`XP9A0rq{Ro%5_ARwmXAu1IWVF5A7Cj=eziZ3ugB9kiua; +;V2g8R@q&TdxiQZZynbC^DZRGzdaCcNWnpX_+A+%5^Z_q$C=3?^l5co;Ov}_7SIF4K@CuNv$64Tqf`C +KerD-r*Rd{k`u=$3<DwGXRcUvqOrJ@<3tbUA!4fk}tdll4HqY<(}mtk{n;&X6e-@L#T8}FFp=^N%XA6 +HH<YclbgcUpogi&y0Hw495}PIRPPpv)t@v{Yzge2x<DwJr-vZ)d`T7mFMi{&=2fR$SZ7YV!`oEpc?Rk +dqbf1GnK_K(Oa6V-S)1wc&Wx<>h07qm?Ar2S{GUZD5(rF;~cMdf4lOj5VaZ!ZFjNCE7dUY?5@<#Fmxo +=kM#$;zP=R+B`Yxs$AAiftD;(7#y~?#>FfVcis3?LMP6>230U%z*R3tSaBr4T3Lp&=(gRV(B8~QOe5* +IUf-+u(HbWs_4?7@ysH?8+2^##Gc-^&v5O$92#Ah8n+UTAG-D0)3TQME)I-$7Nd|b$mTr&y5zI-f4&5 +4T-@voyk6b&GU6;YGJ8E}js)lAPi|LO1ll*Ln{VBfW@G*<utzc=WNUPdpxh|3!1!}@-eLEp2KHBE13# +^}0OeB^?1CaPQA+D>Luxbc8$dYM>#=4-|@rw3fV@O)Zo0<k_oTEL144NitX1NQ|k^O$e(`^ofj%tAlY +Hy`Gw-`0wt=XfB-CjQuhnd9uUg8gmO~EJeP8^Q^1uT1&Eza~N7v(h3a)WO@u#9VKXR+HfZ(JZ%kW)k% +NvH=ElDZ-T4e$L<eUqpMe^>`(OR`U=1E-kw4B93IiJ1`8jt-*on*2YPAOp-WO)rQ_aY6S~)Ct=pE+xb +p9tP0K4+_%(XoeaZM_oX(M?0|QCflZEJ;pV*jijq%o7vDpA&Y!XO|qv_S-D2S35zu<79s{ybF8^dUV{ +fUfGw*&5(G+(%t7pT0Xz*VaM|==gqitF2}3K8ZEMOhQDr$>sp7KCCn-^>&bujW-aMC`T%o5--+?!tf5 +NAHK-)JR;M55gPDk9_Q_p3NBKtdXj$^as9=lp;v)CW7;wtWfhRbMibz7#Bc<$~iobX|4v=<g_%~ZgF> +lXN!qt;liX6#u#M)!Ow0<67CGu9i_xud!`U^4nm*X<rVq3pP|BYBBZZH%!Rt&=F}2-{0luR;l^8q12G +JQOCm6WR$Lj?v}A1sWMbDmT4?H>DvN!%ysUw{Fb3+*DU-2pX>oc=5FaC)1)s><Ptw1cb35-J3&}vp$1 +S$tes2olVT-oc1X}91Lt4cCPjKv@OYj;JN){<hVjHp?Jzft7p3j)wW!$z0I=S6}oGmW`$;N&GRc6yF0 +<6Oh?U_!OOcqThFtrMmG6;C-8Tea;<r;4}WdhMK>VA%BnVk)YCrmCKYKG9f0Ckz(VZ{6x-<7;FlG$eK +o<<<sHMC*Ns0r_HJ#Yp-o4mc)CD(%XhAL8~U8aQs3Pldz@!PS;#1IAXgG7;-DnFn{E^<SUN&2>>}y4q +~DBkvJWedp?IEFw?^h2wNM-PWqTif4aLbArA$z3?yH^=gl{n!c6hzN8iES`q^oq-a&ZH5MB7j>dp6yC +^9IuA=bwZlX^Dd@@Ly>fp`7C&c>RSk0c82$@bLZ7`9+hWZw+|p^m@gJ-$jTi^JOv7cV*n5GW?cf8md) +j<eGKG2Fn}596Zdd61wgkNGj(zSm2#C2`fOy=V|8D4Z4q`rcOvVMO-&eSh<sGRJoltKG;?_d@O5X)LN +n{VCeyscD*;2bBLl1#mK*cJVdp+2whFdlsao)q<~LcttP1T<%33lCT^VY6o)2w-{f7~u}tljdTqKlbE +HLQY3Zxh>yI6#I9qRNc^4r*VQu%q12G#Vv8=HRvmR?27BL>erJMz7N3iiNUOlLi>yFcDm8o(4KG#X+a +#61V*ynVzHjj~Q+!>54pLR$p^4~F<?ns4tPI?b8eMYEUH3;~T6IJtoH7xuFL_n(huYG-W?B%oLpIhe2 +EB^eavl<ba`HW>2%_%9CjZf%G#i%9E)_Vc=l#@Vtw>j@BPwXBaj`%Yz7f{580#XJ$C7I5_U9FzZ(`)e +$>QN*K*y2&}xE2BfhN|>1eP?y*x{F(e1<rICBDR3^fcG+)4nzSI3aQ=A`EC;E)^yj|3oW}+07ZqEFG} +m_sr~hvB+({A(s`29GM#TA0(=||ICS*X;K4_Jeg>9im3EnV)oDq<cGF_6TH|C&eS&O}r7s!tk<QE6;` +q@pb67ugx*xDk-057cM&3E=Gv9{C)IiCt-ok5|-3|VnscEF@RTm3GY<!uigdP%IfVmDV`E;snGv-dl3 +gntR?OeHDiH%qpxXf_VdZ?Rru*J>PzrqNRl4UxT+l@do@}Nu3>N_qYdY7o^Ii!~5IYs7~<{)PeR!`>4 +yx$4bP~Yz)%KET-#~YqAgTTytzKsYh%?qz40?V&MU}+$*Tn7PvLHkoOC(;OAE5#4;KW%)_o9?n7&F;e +SC@uyt2(`U|Uf0RX-Q@a9Aegn$^g1oCuUO(Iw3zCU@e^_HN7}bnkBZs0=IS9)+;UL-`h{f9))ry1<sK +h~=AMS{+L4w_A?{BfMl+%{jv^b7?l6kJ-{&_BqboIU5jyTr7Iw-UZ)9OqwH-{4s(n4v7-hPx`876>b; +s8pp3a|SiNndGY<jJs#ju19trrL{cH!K7LtC8L>5Dr3uQ<{hVQ^J4BRMmZ<2km2coF<`T-bG7tYX{HB +4(XBn_#1<<+?Tk>C#pK4^$w5p`7bo+kT<(v>s6>g`nk2-kd3~(ry7(lTC>S+hQf$Eo)#f@!tx6Ni+58 +DhDIH+_dxM-h1VxV@J|V+H&31e)6?@e5i0R+lY!<oKZBJ|Fil={hKR{Rd!NO9#fyDREdG%I>hV|tr;M +{y44P6*mQyu8*N{RZSW40^+$I79Pa`A_Y#==>h{+G%egKCmX{TIbysEWY&!L9$X^+X{PD-1{2ZrM1&r +z{nd8y8a@aCFA41_}^~Ni=@-y@=o@0VN^0&1&F3Kf^_us7)wrBz4TkvS^9p_brPHpJ_u&@-4BWv{K+8 +VnuElW16QkcvNvnPUlvH%siYVwLW%*tgUo<QLg!aNssefxHY6(7^wNRH8pWIC#p33iunqF~75fYh`OU +DeIYw-0-Y%J2fy7fobt#(S9$8=4c25KGl}nC+V@bu31?-Y^vpIoFq=xwRVqQB%YGI&ecFtl-$tjLKdt +4KA{8)(G$dkq8WLKB9OEHX9PaNLVQH<?KpgSXXIbCxa%XZ=UC$v_$24hN<ZbQfQ;lV9N)RZ`tXyK}=z +nWIKm%Bk!RxV3|!EaB~U2;RJNWBG|AYPL>tk>OrBhufjA|oO`t(;d!g{u4~dQnR1b5Q#$b#U{dfaBA* +k3mk9kBr-zQ7sUU9j-0Kk?Fpoy?4M}4(vIJ9gOzS6yHxoJdnXH_q$7m5&9p^=b)!9#5gEO=?-|%HSSo +&O5E{)^)W~~my%J_&U7&@|{6<pO4;a9|%Z?#im)&aVcEBwx17Pj@s4xiU-#>6Zzf9=4(jb=uMhFsSXy +hBcg=QVa}wHj%}*#&!?OyVUS=4*4ib7vX={R1x_#`RHv9Wc@k582rBwfbaj`}na_t{dC3WzMHfnP8Z^ +GI=6eB(62C)gjF_=59!H-*Vi<QAcS7TzC{<s&Ckb90w80pnIU_l^I(4DxP>q#X~?{QzC0Uw3PTYpfam +!=8{BZfmfj<BDyYTb`Rd+En_G=Ue0C|vzB9;)dAL$qG(AKgEuRF*jI5;0f>zr2Ty`VIWWL}4b#MO1Zy +rdz;@g;r_1$qRe|v(tpr3r;!Jd(F)2+SbIMMVaXk5CfYxF68pDCOISfJz^B{}#35kmJKOLYony&eh2? +hl<fu$Cy10}`#acHuU!#le8jlrn4^UH0$;3eY*UR>bh)81j)pO-{^GqRFyZ*1tFM0HH@GP*z_M`|fNx +6?&C_d*3)cQ6>(e7Ri00H}~QI;*TK#mt;$wk|juySi&4rX)IFZ&{PdW+8E&<(vJQq*Wb3a|Kg4tJm>L +hR{IFC?d7N)<z#_<XUbZ)}jXsSfUMCWJ1x@!>R*r0p$Lz1tQQ*My^8PxM`<fXj0E#Mw`Ro&d#IV@6pQ +y;~Ny@XqOg~<u%`lDCJPwsD4GNChIe%YErw~Mbl-$cSA)GF+-wr${V_f&3m7kZDd}chynLWu45RlWPW +SuEqbBIT!-1QZ`Go*Vd>TIrfgVpPFreexn<RDihOaT`rN{T)-=aa!%79K2|9SHbcAnOPZ-0<8SBJ~J` +u755b5q~I%gOB=*=zAYZmPezHDp+Ed{`bk}u+cqFgD<hN8HR(sHEik4EgBdKFRBH>GZo=FRc7=(<ZCW +eceDMo$z)u#+RzE8xa>fsUdhN<WPoyK1dilSEfnRZJr@SC-3)jmUHx#`FM<JCkEJys@F(1f`t~`7Vok +K+pbPP)h>@6aWAK2mtd`vrsau9Nk3%004>v001BW003}la4%nWWo~3|axZ9fZEQ7cX<{#5UukY>bYEX +CaCv=HJ8#=C5Z?JK4$P7iirfrYgr-1?HqFoi9SnFV0-2Id5)q0N_^|8_{p~$ceix_~iS)<sad$N5oV_ +f6e1}n3Cv^u(R#w;@RKj5cMuYDW)~lCK%hfkXNH=0FTUiS)jb<Nu??+cG7E>?$)aAx@i{20F<GRdYNo +ON5T96JJbh6XL>J3x~wHZd@s1(8^ea~<!osSlhN^62{K+gJ;R1Ju@9!7-&YVTk|rS2PSWn@HajRlLf* +&vzs<b{!<61GFNyOx5%G-!1+^ybY-R25X#Oytw$jD6jTC<DQX4vT^@pr^HFfKiTlxk25K7+EpaL(KX} +MN6PWZbsC%eAtzZsYCRdM-0z^+lt?TaL^VB9UpHI;pxbdr)u4{cZ@xgMr|~yNz^rF6p9j&^FY=t-s3j +vyHuanC}pNtJ1quuWceKwZP0bG{*%-n=Pu0j>;L}xY(*DcCseJ3bJwugpP%XTf+<F+0(B}@u|vP4_2+ +s04{j3b?F_a`%L^2-OQGa%(mQ^x8K-e&sTF0}1|KYz<)IUzaz+J@<-E?IksIk~Ml%Rn*3|M+Nsm@2x9 +2!dbznJ#%jVJDzYb;DpF9tHIC`1+47g8wg_}d~VW+qU)NzNgvJ^^D&?orCPyXUWC2PlzgU7gWX@+OVi +KB;KIEd(@7=LB#W*)VkCUw54!lx;VS4H6lRYv9zdNa}6hcO>_bB$a&$ZiVwLRZ<!D#X7Cpeq^M06Gj6 +wUgrPcTyz&kiX9#IQt7wO9KQH000080P|F{P<0w^1tk;!06{?j03iSX0B~t=FJE?LZe(wAFKBdaY&C3 +YVlQ85Xkm0^cx`MhaCz-pZFA(dk^Zh<!OX_x8Ly-zhp*6OFX3xds%$6cmx?QrtOH4KHJj0l!l8C`XZy +b&@H7F;o3v{?mwbt;wg+f58r=^XK$GBh{rb+ix#=E;hhE&=IE%acbw4<~-mI4ogSesksnagrEjEkw>e +P8yEt+*JZkCHd^nAHFIT`!(LYLn2ezjP=kxiXaf8MNDn}M%}jaFaqfq%Z<Z2m%mCnq)Ei2RoK&TD5fn +Vej{cy!&sJ5xVldhPt^fD;iXww&Arr-%%vNWiHShxAk<r_wT>i(a1Z8IB(ir!*WI-3t<}#|u($Vk?u7 +p4>N_ya1<i4W}Z_RcQ27&@=a9Ei(_HXPzd8lV#xKuuzu#BpSQ>3Ec6M)HLN|FFz^Klp4SM)CVUo_2_< +qv3x=drBoMkT`0#w>1sXY9K9-E>j_-o6S%n^D{wJ-5Ez_;kYqwD6Ov5g89fa41bJX&@|ZY@<z&RMddQ +2Q%#5CrGy`Xnp?MD~ra7Sxd%{rr9)@h}9#Uw9i3y~Th6qa&Y+*&5YOXoa9K9kx)n-H#Hc?=DMKN(QGu +=^^62}BmL}47+X^Lp{sPIQqqaxJ8Wr(KIn95vmn9oLG<`<(L76JqonUG)!2`9PbRNycZw2UEaSZacwr +LdW0t{x(rYvC-SCWA98a&U^mbT4R#(waeFvdVB$@*;Ip%R#TybG4q-gJJ31#6~)YVX1G7PyIP@e9Ixt +zS$E}KOv5>ISm;&6sstex+x}wabUU=hG~*%;iS;Q1ZK*tUj$}q!AuFvG_y8mG(=`?&S;2C&uN+!V?nJ +-=*bAN%&x(V5X(HHIU~d}i&#d8Wxhc*Bg8U`SmsB>(W7U+b}$Puxmjo?Hw$S{8)F&alO?I;V0mUX#xh +2OGP5yej1fogY#Gaq@Yvn#Eg9`>S!yOFOB3SQK~w6LnLQ!PV&a&2&k4gE7@iOZy>g3T?!naDVwe+#xk +W6e7|Vee>4^~GxrHSsSaQ4ca)Kqdu;c_wZlfiqXvuAC<P;mZiH*F_v6`1OXlXXsf*dStkQC%#VI3^U! +NNLNkb{MFryzF<>rP2WKshf*GfH2d7bQhh>6`PS4A8v{%v_WSbx-EHdlHzYn3@vPBoC<*6m%Sx3<qn; +%)VMu{FF9G%9Msk^)6bb;ixB#jZ8{1ne9~&$M}^Qzi6G7m<#C1j6Jl6m-Zm5$mJ@CEe94>kw(>%d)%4 +&$u%sVTM(xj4=GP(D`S)As?p_-MpYI=;>1Rn8R3kY^t{Vr363|{!hQ}fWT6~6fvXF-F6gGvm=Olh6NX +xkK1OA!LQ~}FrpVWYP#0odFs4QY^(u{DF?kyMT2HLIGi^_r=t8FTq~u^)89i9<@+Z-HvQ!IaIht~VMw +yL;N`p{oze;3`UdeQjcqL6-X|fC13!KU`Q(1Wlar9Q{RdbRFtV}>ML18!{$%J}ND+MnVGMcX{EQ~M!u +VULhq3&5=I5?o?Pp%barM4#r&Q)%Oa}qYWmRC_gR)udlBvWL@uaaa++p8kYmDOBPuWB@7?#;)XR+iKn +ls}ni8aK2#<=FB^CtW^07x*sIJHPLy#HsYo@6)>Qy}7n0%`rPgEVlynfN`>D#rjRp?{60kJ#$E*fTo# +M=@{9*eAdvT&S{J}qyEkMu3o5T7xmP_8~G@-_2}Z$1BP!mJD+w>-|n74f&(nr$~YP2psCrrLptO_dt8 +O|U=U`7PGPf3H|5k_2ed2&CM!j+DAY|+tar2sb18q!@emaSar7#ZsU{_(rP<n|GA2%9Ih53vIuK=63V +WEV_e$pL<DB_8fmooEEf(l)l+iN-3(Z(8no|mE&Jso^2TSy}&azw=N?p*fFxr<{ZW0AX4;aioU@&^XV +7W$>75aE!^yI@zJyz<@$(__62TjM_Qx^1~DQ*2}U>+6HASRB@0%=lGv+`wzNxfp5JCdiV@ibMQQuhoP +rsm|3MH(WvNiF%6=4ObDCM7eIl9@@#Xi~DkW`SgL7TDa8Y|etM<c~7N&>V7ELWx~s^^mDqZqUeb>XjQ +bvYfI~GX<HMf}Cv5-K}Jc(x$-7X&ywxu_+oouICosJfyTKG%GGAQ}e`xR!*ko_7u;_)Z9i(PNwD-)x0 +3hg?YdzT*|1d%>~(9Sa=Jvxv(}DWOG6As!|y1)XFod73Dp?Npnk@rZTYkil?)#jD+n5Qql%eW@f#Yc| +wVcafi+=`NKvtDxXeYS%`Ik=|ZUsI`}Jk;;j-hJ5>@9$K+TQJ@!{@+-YSgHcgZyr6$Izj1*?E7S6`hV +NThS{LzPsTY6^4PHD%k$P0O5uyI#sDfaMo@n$h>zj5;EZIXQ|jA+}ABFmxY*2un9U=cn4MrOZcC2>lV +h^8cyMwUY|sg=n{CbN1n+GR5<laowt_2i@{w=xCE6jo13@0ZHZMghHEC=0`(%tZc-=bLyO#Hux?nt~- +8=YC$ey5KqEE2yz48uLdPjL}%gBYl)2^~TKjbe8&h>yk54(3xHuPL<P{UXndaF^p%d6qua9T`yMCOa0 +dH)Y&@DuV*JGFPy(DhTHYS;0(9oWX12qUQbe|UTew_IF;;)Bxj1;NOE|%pPo2}e;Ok>q8g%F^qb*{ai +m&hSFc}k_TpR)a=%!LX+L@KIK8}Te@xG+>mP#C;HTMSHcEcQS8v3=_|@e>hqD9D)wNV2LtJ!DBNcr;^ +wOPg)}Jpn!&EUgvkSP?=utLun9Ic=?#?$-_I^5Zx^?d;hO<~fY;(T3UoM6z{F_~)d;d;#qw>Bysl71B +b?b*!`vo7GTiK`L%Z=D->ZOlw#N)l{JnhF>-2!2Du`>gAqZ;aTj_OnmKHCvnbfe^A<E++$^W}OaE)J% +$e|OIB@8wiZFK@-;H|syH2GX_T5)_@k>DLeUo9XO&cA!QMwiK&r|L*e4yPi3(UpwC6STvrJP}Wo7GiQ +Dvw*%HU{ew7=sC&WxX1H>2<)H1hJ2c;HL_fej@=RHGvLmvE!n$us47SbeOt04c9bYbJ)ghMpcVn{{9{ +QD(8iVdovKb3ofv2ic>t@{#qO}4?qe-<`pGJR_z@<d+KVMVPJ&ekQEV?MYzm@Ap)_(^W_RLX#Zyg27A +s$-va<Mh*TH8z6ZBL`aSFK|^DUoYwn)5q7<I3ch`_W;WULSP!u6IP=Ixn{^U8w5Y{b`VUpm5st>Qi+y +!<WndaW)V4xP58#uC{S_y?!UuCh25f{Mosfp4{=roAHK6+Od!;VN%IIxhZ;)-carqn~mH}XnpSkxr2R +YJ(2$ZM$W{=5qvM*(``8=dggf7TXAq|LP4w^?nKWAVQ1w+Ew`h3b$CduPj@l(_D0#Zbesig?G_kE_3w +AVI9r{rkFO26EQW8^Ut#N#8}oArKEDd2)nnMJ^*nmJA642~v1$0dpi$+J{dDX)o7tcia#Q~K{iWaX>~ +vlp-Rz{&qa8gn@CeW3@{`T=#Q8+#8+3T8t%U$HyRt0Y$m2-^MI9HmVLM89hTY)&8~bhUMYG_`+%ALH& +XiJs?-lv2BA+SpQjy;)@`EBjO^)UP^f$RwBG-!isK`{28RZo=l+`4v$vm*Z!cMlTeG!H8UfeHvLjf<f +U0q42p=Wlo4FgH5buaUtdzt#+?o};qEb^1pdiCAi@=KYh$fZuO>}D39US7#8@9gx|#n~UOt}f56uD<{ +8tE(T*t{&@1{!3J$yLxQntH&<BdT>2|euf_(v_mCuL7Ad)r)U$Pp=lKDJXAV#=_0Bq;kkU~P(Oj{Gv^ +GInk(91n0bSimMWd9_yH97Au17C{3HaeL0d)nTv2rQ+ZaME1BFlvp%%@;Q?!G{f$M^*<{(5lL^+v*LQ +{~aenAtW(nO$)Djc+>3dBT%ihvsOJ^++K$5kct)i7ZQ)nS-`QcHvu8Z>06z^@P(g|$$$0l)D<VN!^JL +s6q5Q0aVCiRMZ;^3f9cswE1k1$agg296?BYRpblGf=RgIcft%1^7Zh2%|*g5d(<KRZ`3+makxE0fZTV +WnoAag$0WMKa12vve-o>fmi}HNlPr{GGhoR#uOHeD>GQ_fx;J7LrYB~*BH50@H4`PVagay8N-yZhAeB +*(k4_v&lW=pvQI#Bhp6MO2kKKL0IjK_`fv|sa!;Ab=gLg(ql*t&KL&-B9QbfwS;+&^7(}3qDjXD6as& +xSVDb=4kOMd#!#@t-IDq3x0}6ux7zbb+fbkkKgcJu-9N=)E!U+|Qb;1R?0|<DBDXKBkHGHq#mRM@2nt +ZR}dkx=f_+I+}vi3tzP8Bt99Z(D0uF35hZr9{?9imT|Pz8NL3`V;^4Gd}uo;ty3z@ScQVky9Ch6aX(S +hEBax)_={b;mlZc}SHQl(cY&)v%I)s}WpvgK4W9Skb^`!mmbD)f82=K!xyYfL{ar8f-d^r_5`BSc5oe +2&4wF(F7qVnhBOBgcR)`4VH03fHVN4AwU`c(g2VKNHjpAK{zxBgogZS;7<cb8aUFBBMlaQL;GoiJ+wh +=G=c_1Y&7Isi{;V6w-&y&@U4Y!EqT?#tCps|g>x;OYstAbj6f5rsIgjdu7z_gIVXUln5%X{yPLr7CUC +R}+D`@6g-CqRkXR8Y1Er2wF(SeEf<YKzA~?G902KW=>=J-baP;FC5F50pNe8x00XRhygHi)_Q_;e>&W +l0EifZZRR6!VYegv9;jtvUDE&z*m?k-j~b~q2a1Se02)2d_W4o5nU;kz2LHCUK=Pi}3BHW4ZfDqW0<I +($7(&8egTXadSXTSYy!0wk?L!Sc~9@X!#TAwWZbhL9RUA2gy0^kT~7k5Dw4gJRey0)<dSLQw<Sp%TNy +7_u>GWEhcAyIRbWGOECO-cSW%wTnuPVbs|tDeP{@JAp2Ox(ImDkry3o!Wrnbz)LWQ3BW3-MWChgU>as +!Qb8581k@6sC7>3d)d86<<e&|xf~Si~D29+a{3LBb;d0k_plCpDB7Y#;2B@@XX&b7bMUYsBo*mjd#hN +23=59+B;ex6aIrruvXiOCb+EAqh?NCu>%FIup>ANbFB#l55uvCuXyFSqftN;}jqM~A0(wZs_Xom`iSX +YCBg;4e7__7jUPFTm4PF|}@8*_y~C;zTLojJ}6XSM!2KiNu~@qX|5+<8B5{@10;IuDMo{@=4<H2+KT; +Ezmh0df>j1-s&h^4S(PMS_xB47QiUHlSk;OKB^B_|-Y;PNqpJ;hD)ae_e8UBwvgntMkR5ohd@JKFkh( +eJa?1jtSpkj`vSV=sqqX+ex)PDz7@sm_C#qZD%~YNsb2^Y^OTWKRd~R4K>+-kl4?7C`&>9v6ZF#JI(l +an(?7D<Ci59hiL>-=)D9&rwP9zL3rVOy|}wyiryJ+@t+=K#_;EddeP$U>PW6Ix%~d>QJVDV7V=-p&;B +<(`>T7#uCC5Loz7mKp1-<y{rms;&1WzE@Y|bD=o+tC^3BHi<EmS4#854kgXpL0`mJcpJ7aoBcqdlFu_ +61(x0hEfZU@8D@TbZ6=1{#Ry}4Pe7Q@ZWbR(ACk=L7TzrL3V&}#Gfy5Y!!UgPfWIni_&`Y$(6%H8+ko +iwyqKh#T6@Xc+$zEhTexQCQYhf%s*wNJ{Aa8&F5t`efPZ&_cftF)&F_*zcjQvBD$dJvdG8bD%fU(QOD +&JQt>a33<C=tSsj_aM&RAWxzsdp_BAT*V%2TMG7C_DpyZMnu;WZO7f%N7mY~-*ViBoHw@$<sW{sq1&u +Q-v|ZXqJ9_zMX;l;;)!nVWyja*&UdzRXY$k>s%tyd?|d`xe%QQU47bzCqmsFp?A<@>|KW753e$<PVdF +G>r7mJ?@n*4dlnMtLCa3%V>1p=@d3=eljNQ78k;YDs29Gp#FNlr9>MCe*I}G<1uU@@>|Ni{Ff4=VDyq +deN`wFJK`UTFYD+_g%AQjk=ewj}PH%#O8g>rLPkI!0DHOOp#s>>yIxUGrazW4ihJ!8O+dRpnjkpOvej +qQPld*I30*+gNabRAy$?*VKU@(6FUUJYD!=IvXF>S~Z$Hn-w~Ap@VJfZ9pqkGUsOwy0YtN8dYbc?LnT +YRBL{+Yg10uvYd~o^n|E(KfzR-^EP!CrdRQOpe(}o}Zs5H=tdQ)TP^vGPqaQ)l&e_tRK|Hwmg0F$?U@ +jd?Ox*{ki(~rCd+>hul9pJs9>>!C{48IDeAMtCuOo>P)RMdqw{-kYV3Ej+UzaiS7f*j-79A^lju}%5v +T<RxMvHr+fO228gsl-B>E)zx(2I=U%D$@aAAL7IoFBX7r7a$&2Bd37yhi=RU4GUQuQ5s&s3J*;C8=;9 +OFNz?Mb@!*ufLWTw6`ai7J3`tQZb2Kt@9s{uYHTAuStnsNF(Qp(WTv4|l}Hg4<&d2}z`{+vyf^@laO? +JHrMybIfQhi`<Azc3p=(lV-drsVGDMVM0ZAvDcE2GVDtJ7U-2S#_w>a83>Y+L2L=t%;$WMtxKVyN2nJ ++j+ADb^ooY-Cn%g+Wzq{{;GBQBorUNUdJHbNB-rWDjV8QSx12m8+Q&9^F_vfwz;3C9N@4mjBkOip9!5 +K{pkx8W#Jxl`hy|c#k!}y>UehTZhtbQB5T`J`+T?)T>EF>_`xi4VLe4k<+%GithOx2cY;T!%i6ppesm +Ugv6+1Pi5q^Wz64U=A?_mc1n%~E1Yms(jyq0RtJG&(he;*AT3XRJj7mandid68cJhBvO9KQH000080P +|F{P!>1y<X#^D04RR|03-ka0B~t=FJE?LZe(wAFKBdaY&C3YVlQ85Zg6#Ub98cLVQnsOdF?%GbK6LA- +}NhIsoD~`Cb^RQR#{G2ubeAhTV>0+OUVig1cww>Ab`a~l=gD}J>5MI%nKClT~|`cvF^O$V5VoLr{CQJ +&dYqsCX;znHzl7;Sh6hgvS!h=%G0Li6Y+h>X31?*C3!YvO_s#@j8D>}=4F&tTU&F4Q6$B9a?7(>UXH8 +eP64X<T|KGq3qEAiB#X*>`Vt&6Ugo#FQUkB+x|qai!ZVn?DbqBWZf(hDIDcHJZzcDaprEYylxNUA$rf +s%<2cW%I?8H2)#-<`A*+fg=Ev7j8O5-#YRIB0PLg-LHoko>3SP!h#k(L)KJp?eD}H(x^P&cH$&UJYQz +sf@Nv@hd)g>(O?T4+cy1YNwV(@W#9NpKvf)1Pjv$xcGT9$b!y36P6(15kg-sjm!9v8cXZNP#mmd{zc? +m3{UsW?kAR$p^glzc=RD7PGZ&;$S;*7ZBjDqi<5;ry3l!Y=Rk2tU060mKIg(E)Ka*fMeYEfCG|3Y<Qa +Zw9C#07zPM^(I@S{0P>4!)pW?M8<!aGfjK1dqCp7S3Lj%gqqz(X)>EAX36qN)xdErqM8G|-sP8OcXxM +hME`j~{~po5r_{7}hW|c4qc1Pv%h}1v?g;;LieJvoPU+vXFP{+#eOG^pwtd~UuiGB$w#T~diEewM+n( +ySr@HN#ZhNNNp6j;fy6uH-d!gH2>b94<?Tv1GquY*j+mUWN)@{eS?L@bo=(bbccB<RXblaI~+uK!b^w +-%{kFjl*<-bL6WOK=$<Ekl;y{bu?XS_YPO0e2C`wR>NPZ)@{GGbND3uLM!n<XWWk?UEM%~)J=JnVKjT +P5|i1i^tk#=xI7a38QMFkezx5LS7U&Y-0(^H~#ffXI?G<%=kl5ENfaF$@c0MH<yW+{+4fR5Q5?gkClA +HN(xwvF)11)Dl&|@ikjVw3nm3D|QH!3n;_gt?LVNvB~N_bRFQ3J(|NEP$D0c*mqeZDeteH`~YWvL~tJ +ZAZGhJy)R#ylNY<dGw@$H=-$qNJ;JRQ_bDLtV3t(TH06ibdjtY-wh?UH(H2iDe(;C41VSRqv&nQ>OjI +}QQ{+h|Bn}Fd-8<s#ArpU`;UD{|WnZ-rUk^9ffapqNo+v0!RLfJ<LQKCIxMyn2GX>?jYI&|&UTnU)7i +!E)1?8n`d81n1Y`(f9HReb`IaV#ls^w(!)t#s@rwYocYB^IaXPd81h@zqT>kQQfX`@NeWO3a@C<Z)|l +8WP{P#h=t@BS`**(a6p_zit|vWx#dJ*Iz;sOcFsJr`e|pCToLg>W3jp!QKC#-QD*&lw27{$Q*9@{uo2 +?_dpo{|9KbI0Z?;j+*(LmwX1629K8geEKWMtbt&OUauz}qu4>P6?LjWz(qBi<s_M|qg&3Vx*Nz&usxE +J<*RIqpj=$5=PV)HD&<SC1NjUj6^lURRW+G0*G+a)q2xo`1(wz<$>^fV2+*&<PB_If%I<L~Xa<59PE$ +4o$(-gZ2GSR#Yf|GxANtu(KkX0HM#NfX9P|S4Xi`rm{fejaq1=<)F@CUlELxFu=@0v%+|41oys{q@d6 +m$b;n8Rh$l(g56zz;<&2q}iA#8OH;-Fnl&C`^YVk`mR0Ek`vT^uPwK|`!v!sUTA?d9&()qzE?2<XuvO +L^9(@q;bri9LR=-A~EEhsdy7yVQ#F8;Lb&H`Xgv4#IpTVNRx!u*kgXw-bx~!}bugYD}!{uC9SQXwl|g +ldA!HC5PL)lpsfkp)pp^1oynxeQ1d~pR0D)aQ-v7>nZNV*f&@iq@3Fs?S)As3WOjW$z=kL?#fdD)OU{ +(wXL(C0cvYUAh{<P7>4S8F!;u$DgD?v@C=+AAtuz|mep(`aHw2CYL@*=TrryQj?dBV;mQPStT%ixv#5 +^Pp~=c)I!0%A2K;dZenU3v<H$jnK=4eu$%jx+n72X5U1FoN0|Rm4U6gzok;qfd5OruD-`XNbY~*b=<9 +E#E>|M9p2gQb+5<qaF3G`Kv9^GaB0IY12j1&(}zt;xGx9j4w6XWb8{ThpqjHy1!+y(ne9D)gLz(&@t4 +;&U^0<jnQM>rKy(I!N%vnMr-<qd80J~AO+S&)3r@)z>ZM!s@s9=I!ie&e_;TE|a$tGL93a%rJ<&GrY5 +9I=jVbZGY73Q&fo*xmN2cl-w(3-;ukJ!~-8av65o>y6Rk=$E$`13<3*%f&D6-eyHpE7_AbWz2`{r=M< +CQMpj8yUqTZmp3db!Eu_g^ZWW5&SKgu*!DiU*9StQ><(C*<`u8V-ih-p6VBpT!oZN(!OuU#xN2MwjB# +EreonwJ;sj?)BA}mu*@F?FnClf8@wV|_E-ubL@~X(QiVs*`>Wyx*H))lFVZq}Y61&lCmSl4Pk+M|@h( +lw`9IZ!&rW8><5VNB17=TS9oY7KQ-oWv^ShHMHYb9XA3NQJPokgi!4(ZP8sEX>k)NAP>hI<`j{Uylr7 +`E}vfrM?c=vo-oSamXbL<>a6FOfO#2<vyK=>!4cpt~{9YlYE;es7|>_Y78rJ{pQc?om>4b^&XkU}C>_ +9A&~jsWIfBMp5VjEN>NbNRXt5)a%Ex$9`<V`&@x6AUCy^69V`%ARJNfcs&5+pmfaWIx6R7ew)mAW$a7 +Z@Z?*lU>~b<;x~kPk>Btv`5kn>a#X-=5R=x?4S<Rx@Yu}ZEefUHgE`UXDdF!TjbivBV+nCyV(^D#+Nk +2cH82tv2g4#{x<V~C&eLWoVoYh0aaLoT65z-+Y0qT>0w`+I`WVglPq1nrpuOGwC%fH_4WZOv0)X`vIw +TReTvF^f5^da`cbBZYR44#zeDs>V&&wsi`yISFiEfH@i{6(1f`RGjJ+S&ReTssjol0~DY-i}maUf2>b +j0RhevHI1gX+rTD5a(>T5`mABwauQ5PF(9IgQX)A5{T|x8!(w%LZIcm_iK|ek=y+;>c9=h#56}%-CD- +d<q^X^MucaVvNB`!u`ak)6gLGMO4mGUQvJ^-PNNHzu=<N2-h*=KxHMx1i<Xaa9&hV{F=c!Bg6J4N7-O +PO$|~GAaidN=2V|;_6etJV~ezYa^a&C#o)bA2XLI^??Y#2d>i=YC}S$5Ggt@9IE(@2n&l$=Nnq%B%<- +g#fmdLqIsi|y3gzK@71I=(hy9_!(rW{}G6H$9IY@dK+s&VkKRsFF-+T+a{q|J0**h7~SOFPxz{`pl8z +>=;n^yS}BzX9ao`EvhH7r{_&8ecZL)K68{H7^XOTX9D^U;eQXsuoh)-@P2J;!fBm*bO;V_-`Twvffo1 +7}Xq-n{M)Oy?IH9LG&A591MsK$C%XDWG-(j|?-;ddL-yFRx5&im(advyWl36c~9R5eghrl>9cyn@UEH +9M23MzHgQa!@EJKLjG1NX9m*07J^s=vYZ)$6CCGhWt*kj?1X~|B0YQjk-a-3`EDc+sv=E*NN%}`>rBy +BjLL*Nd(a-VrbWdl`iRU!?G*gyBJ)s5xypoGHHGzN0-1f4K<*jDf!3ywFcu_JoVjM)4)))10vBy$&ek +yjPF6it7S$(u6@m~!zE+be7fNDO#Dt86DB^F)T0hDZy-~Bwp6q<dc7|+MLo&l~G!YKc&bUdpk0d}n0x +1+*&hvJXat=zYdlHnS=BPt9+VkRsw2Wh6jU4*){YV8ayYcM-QE@qtUB>i}*q#?1>6>^MI*<%;WSxsm; +U5W71#=My;Ol|nVUW8eC{jIIF}sWmnN+F=D;(IQV2Ut*6C^iadt&x>)hNjWD`w>7WA3pvFo_}CwIN@D +?bvWU!{|0jQcQG>nb@p_{nHO;sB$v;0~9a}2OT^ccQ7N(9g%tx#H?o~cR<aLMg|ADQGvZ~(vv68UmrT ++-=+;SQi@znW^8}p2S6k)VG~<6x7h(JqsizNmDcl1qn8t@w?UfU;QT!KfROEguvov44tmRnD46Z=aH| +dBNbs?}V^diQa&ygmM?ssiVHnavokWYkTy_5^=<s03wY5BiZyj2|gF13rqJPGsxXde0!7CE<^`nhob5 +#Ld`bflO%@Gf%UDb{3QzU5w;2PO~<-(>0yLg#{5r};-yvs-Me>bIM(3uEpSaMs%li6$6@I{%55#YQOQ +EQ6wyG$oL!Aafio}e_@y~9j8MM>$=D|~cvbav*mVmBt#blwn&ZhDSs{w?pof|m8B7Pt(pTVf3TZmzQT +hNtfmCjMtE+;k33MfoM`f$99kw3<75>V9G7u_(x6pEe=j3YCkp;kJ%&oD?ZuXmpDq^vfow!OAFG@IEC +@ywZg+8U#_AimBb)k6~}C_-IeU80or&-eBG0_QQ(<|1w{4RB1&*UL-1%RhfeaBa`0JK{rPHN8T_Dgtj +=mNeU~*r?$O}YH(hYEKsXK8^+?9zOy1ldjQj?@Ho%vBy0GV-6%02d5dNpFUq_r`U9K6M4nc3sOqS!`v +XT3oWo()_bApl;sXAyuBjLZ4Qp6&lw}wtpr~%eu!FmD>E9>SCnXxsqeN`;66QakL@wLE3h2^S5JiUHU +cm4ld{n>@PXMd1A01IJ=DWy`6<PvQd(e`33lPq$yEw*QG=4TEP;Z=|9O5jqT_jlBgMEFd<RH~{>2@Iu +&(6*Qc~*Vi22X=&yBEOww=6%L4hpiu*G^-xv8)PFmP=b9n-^p>@I#u+vs8s~ts`f4P}Q|sn*u{YQ!pb +zL$)d)i_=C%Pwx$z7YJmh1-64)3e3N;-6&&s8dyZk8-X2EijbTNfYCa3l57WqY1jEo6u4no9hv^*b0> +AH9@<H4Q`wMESRx4XQFTp@_TPfv6%<NFsY4T%{I@0nEg4ckx(wKyQaEo`Va{bgbRI_JU)Br%8^1S-g* +A3D06gQ<W-*!gghUl2i0O8UFzbn2Z65_+jP(|K`!C$Q-GcJVDm`}D`|{=P$KCxq%pAyJf!Tc11dS)P$ +&eo)r}@txD}+qn{|FY{(yJe<t4A8Jshw|~7?j9^qfBwlyfbzBDJVD&^huh4V$LO>C-!oeYN=!DWmx7z +&$9M#wG6utVi|7<m)D{+sz#@8D2bk}qAJ@#zKJ7@zppr24J>ckiYvdqZ5y|QF_F9o$#u^Q_+h>0r#@4 +V3^yByJP>23Q!xwH_a(gAtuQRE^OQ^XRqtF{R~-2Ko{$oNA><Q<_aeO3K;>-73{gdJLi@&bZMan@?JR +sz7jFmfJfJ!86L7S6P#=Y`N*HRfBl6rc5$vR3h=nd^DBT{Y8CZ@o!xaev&-h*KL_jy+XqfdM4h2w<0# +`}Vfbh;+wlzc&X6$vlAP2*JZ-7^8LjhXm>xV48cS172d4P|6CGs1X>&X^*U88FXY=i}eBg7dhC<D-xa +{5)X#5%_X909b<(HBJBH*ZRcsm6$C07^@;!v+yejEM5tKE#EGUe%2}Q3Q>ka4uL2sHqyIK*`g4%H1UO +4(jzq4yrPl@kk_b0+7g)U14Pd*|C`4hEt4gDX2V6M9u>r%jnv?q_k(9-Uoom)zCi42Gc@(9O(TiAF^N +3006m)<VNuIF|<bo7C~-C{6Z5W&N@ss<<Zfq9)*Ites^;7yh@o4YtB8ikvk4QvRY~lM^TNRh)EeqazC +jaPM!b%$(eU1#fM}DmH<pwSWxV4h@i3x?MUZ=FMO+L$tQW4ERt*jS_G)gg_R~Zz+?{sk`ceQUvC8hJ6 +~0!z5S>Ay&(!^jDyU0eTY`bKQsFO$1?irZ_szqiph-aNT67<r9fIGQtPxraSx7^2j+oA@RXYx$fi~=q +m0G(1+Y|6Ca?uNfK^7T%@fCADKmB%&w^{k@br@2W>}OEIq{+QI#){tg0y9{Wzk5*oVdE2AaJd4+}_U; +Q1tmGfk{L%zFAT&;4hq_fLL6!;VQ(fFW^tC;Df*PT;f42m^VC|<ZPPI%urukQ<WI;9u`E|qdoD3u`0L +C9^y+j7~?nEgVqQ+B#rK;HW)_|Vp!B}vAeqx5reEwlbuHZ7F?nt2!nG9DdZG#jIO6>rEF_F+N!vPf|c +Ngb!IN+7)`pW!8@p^6&=3Xyu89M-f$K$rhC&9BxhOTj>fdCC2u*6vgj1b-Wfc^vc_uuSzfStd4asH?M +p^4@FNq>;vS9oo38&DVPz5HISAZtoC1f9#N&>2*jKqKSJHMAJNT^7`bGhpV;eP}u=da#kNFJEG!a(|I +NjUAL?oR>Rvh`11(w;MQbsKbM^hl_Wp*kz#IkV>1Nvsolj}8guxRiOi`n1gVK5I?d<U<!ah_?pnhk@k +U2AsAwZdZid++3ZzLNFbh-@wG!D_kZ<=3p-R}|lS>F;0_BI{#lb#d)_y)y5n9o32&o`?v%#~KFT^6#> +Pb5e=mOvepbB%XHK0Pky5>^E(I>_q(HY7-Q*B8Mew&(W;hd)5nI8|&I~Pw4gDH|^E23BLaU{cD5vJW- +Ssc0;Sq#+`HKULEoTJbt{lp~#_QFy`^S9Z@Q%v3;+}XZ7GjKCoj69d8LSKZR*((4g?`BGM3*eQivA^r +{a11qC9pA}mf75VF&F77S3g6Dw}i#>rUUt#s|-a9~uu+MvCCAponZbHPC}-Wa-{X)V!<q&ir$?>>d+( +x{ko-rZC8q6<I)-11IF(L+IDf<1h>qq^<{V#yA&$?Vt-CTm-P+Qmxhqr&TQfX$<()-Uf#=Sai-n*@Su +^nZVea0b@<G(vTm>$t{Fr8j|?0;U!bgKLpn!H}o%#tAurTdZw`bOr&e$^2}#aLurcuT+bF<Jxx&_O38 +X;cI3CjE`+|4il~BpkM;3wCfP<A*53<3Zj(Blw&E4_&epUYFWENRqbw#kVtS=sl77QO_XYx(8C^8ph( +88!4C}!7T|Z?D_F~n!6}V}2WM(wOXt!$AG#6dy~wKH(=!N~n+dJ;BgHjD!nI?sCaDZ;CqfwKex2)^y5 +`HGCfK4MW=_!Zk7`*pfLS=1pOStN7~w6k8+X^F*QlMASzCO75GDIj&WapI0@@yn0+XZDxkBW~5lAtnK +RL~pCrONPnZH{YC9k_0!(5Zk7iTXH*bY(V&Tvhyy=Rkmr?Mwf{?5?vaMX5~^0m+&@3+t%?+2hkhoiOw +K-0kfVOc-9$Y+6RnaPq4a-4PI4><RUbLCt{S;Kn#i5ECAuSwEKt*9MM(Z<fyL5k3sh_#vJC8i27)TBJ +FF{SpX*X6<Es{w1L0mO`67%>)(nV!d%=*n9)<)-@ItLsgIei7K?eU;L~Z+p*d`)l3O++{u9cet6>_QY +yjyS@#Ov5&~u4lUJ~(z?g=iPy5U1s!%(I`4Y!=u@mBeD_?F&4w*s8Gta;mDDPW6kvAq5W*V_2~YgTEl +mmOUhZkOZxYUioN&dS<yVGoCWx0O8aW7=FaVmG3Ny)ca)a@$%`IqL#X3&xFqy@h0$~ERn{#ULjMxWIW +ssqOh*YT0!eIOktCPeJ|27Mv+ice6gKMX?@no4vRYSxZOUyTNz-fq!L?d)mRftpErN(y;R(Xt>6oXfA +E4NWe*T=-`<wQxEkf*XtqrH?;QT&W8=v8x6)s`7j533FrFc%f)phi^690n3R()BY%Ga~m1+FEB|Zllx ++<oT3AJv_ot??b@WaRB5PYa`0OX$?5JA9rRiwAo~sZ5u`9qOlmjzRbYz-jX#5ph->=c&!YyZds_ftNq +S}cV)tFcw{8$F;<D?qv}N{Zg_<3txt7cyj2y4wi#NmS8kn#b8A1ekIUkqz-1V3CBp5vE7)e|_xn_69n +~Q)V~qv#N|n6e_%LSvCy?NsO+o)38Aq}nPoR9x?aO=$n0-;lndsYg=dV_wPOoR-tmiwdA_&LDw@DS=0 +e8OjsnvewCd<44Npjye_BJ#TKd`ocENXL5z^-9kQS_o_vEOrM9C6$Nb5>$ZW6X~Q)kc1!It;xG)>hx2 +um+pV9`j{&YJjPuHOuIQ+8<G0rxr=UZ88dw;z#PjyoM$MY=!aGC5HxLIbBQj=2MJ{kXDstxPf|KpIp5 +zDqdneC<3p+3WEt6O?U=w6?zqtJRV*C87TQ*hYl*mY+sP(zXl9QOeaGkrV69lQUuqF)|paeV%R<$7HE +;RZeBzZRaUcGv;%CjM4IgggGF;;n6%ctxckCBxb8GvA`lf?950|)AfwcAw!2T<xW6aQlwM**7&2Z~c& +n~$85s=6jKNn$-3F}wR;U~ru-zjoZ`%X=wOJMy`38rjD`)*P)0N^8TO=4#R9)=Ahr044{j0SnM6WKOW +0KAljWy8>rrWt~<v3FIimp)wFlUZ@?cE;VW`FzJ-ws5g7yj2Qu(T9!f4s$T%?|D#OSG~i2I^Tw_u}Tn +9aS@pT@H2G$G@x|WU^iVWGCj)_RTGrR77`pLb}enMHJA80S)Xr5z>Wn-&OPrSjWoWLON-qAAzb#3Vv8 +Q&~^2V&h0noD!qr1h{hv30rsg*7Z8E78$M|*UP0D#?*mINw0)z%n-UEN%$9Mc59o+(;S!xBpoo#w;iN +1y_ouyAKa55_SwRLq(JbZ1`I74BhF(`hl--xyVZY<gb}t}}DgjsIG@D&Si$MP$?EWP10^R;)vu@$ZKc +Vo#>07kw+n)LyY%09ryg(`wNcS$j;qV&{+$irt0U#USK4&QwByno!CIAzt(Z^3P3mRUam^_g2QlIWDo +J@mS47cgD;rnylbIM?w0VI%1b?zS+2DM$JhV*ZdZ6HKMHl}zTjOb(8l_qRD7O8=zz0v5kdBLxx_%7dq +hMPvSv=BpPuq)&fEQ=BMNr}&B>^zruBc@n+MPTq&0afcG{@5Z<oI5xn`D$KO6*sx<VonS)W)wrLcvOO +%AY-To*#>&XFmA4+>b#5=%g8%*%-zCDP8|`Y9(UjJqD-c7)sHl~p1QS(yw{9aaBzUKazGlsQR5w6!14 +p^*?HY7ggpF&6aEsMe4FsJhc8+j;Z?=kUYK`G{L#ogITCMM!sbT!hQnTPsHm`$qtWtnG5%m~89%Nbae +#D=v)-WKKBTCFg$Qy1c-?^oot!nOMPeh^pYkt$)X@XeS)d>Qd=r9b=%0obampQNkx$Q6r1)5TM_QJaj +%^`Glnuh$4k6i^VN51chq6fK0RS5z@Q)pqock*dOpegJvA!pMzV3+CXYEm&pRlNKKfb&a%W#y9YrCuo +={VL7b{2QdyI=}q%!Q~UpX1<*wmW8`D%P%v)GR~1XNd+_JDdAj8&jipDO2x<kzAD`{c_SI<grOYisV> +uPik@kL~V4k$Z~prL{d3`=15VfbMOUPv=tc!s3T03ix>Vf%+yc{E{fy4q|>Z(2a;j0x(Z3)#HSeAz78 +LElph&z-P#2AH7NLrwIkmKiTodNvV7B6h^|*X7t5*^K)A>Aq^xT3`#$o5BHCM6t>3FxIX&pHC|%?wAb +sh9D#{#RgQZf`ujt&YUR~($*-gED3rnJX69zvUS_{HxQ3gY|DB1vA@TD~7;jQ6o+a|RvQfszQYLuWvR +ID+iJQ2O0#15ad#+LQswxLM{m^w__G<4||baXQEHuw}k6nm^sZ`%;j$S^_nH~HzXpL?dplUcS{S#)$~ +41bQp_%$VC75g@2W9n1<7@6~GG2;j<Ggg9W>lzSu?=g#N)qG;>zZ15tW;yzafpI*T2aV*G3lGH)N~u} +9+$OVytdMv!C&XCfv%ouSth4e3(z?0(cyRceZ?D~~GJf25!mIraa73>IWZ(zw!mNpqRCQ_Grc*;uA8- +pSS`gzxy55`AeQgn8_^H*1$R*WlYhBs*xlOk}2wJdbUZ*cMM6jH#t>ful(aR1N_B!tEhInoViD9SbUJ +u%a?qmDT_HRvI6V;-L6cEooyJ$fBK@tw^$r|<8YgYWHml8Jb)&R!O`ZH+TNN{wl?TOd?mHdDoJ;?)1p +=W&>n6=Bs^?^G-#3Loy>t0aWK188kvE5C!xsLBcJn!#&-F_7Zv;^HnvTNwllHRtR_O*g^EscGHVBLg> +{(Q;mVq0Yee0SMO3_Kjo_bYbPizWSEH8S31Xw-U;L+zMhUifyK9n+PuM0hD=Jc>fBipjW%)8DP8wH^m +dL=}ArR51%BVI*$$I{E~3y!mDs&o?^^sU)#{;f|Hk4MQUlJT4Kvv@VzfBK%(i>Y|T7yc^>RoLK-p<@E +|LAnFVv34Qol-c&9&!k8ch2dWKOZYN~z5X4^qplL6gAi}QR1DnN9p3a;Mq&+I6**yBu%j?KTxUR{iG3 +$XprytVmRvup`47S<lj21f+C2)Tn9i6Ebo01I2*)47PP8i!bIkPR_CFs4P3Q0MPr3Y8&y&-SSI;;{5` +c<c{a$%jWH5M#>h)G8ONG8%tYw*{KWLU-GRq2LGNlNf!I(C+Gx;@kmr?E2kq3d6j14}<9q@{j)`O5ee +_H`27h$U*!umkglv|SX+*8`kTufVNCuaxD%TV&p<Bnb0Y-N)iELN(iBSvr{Tz>;W4=;w#%>3;)IO9KQ +H000080P|F{P{c-R7QY+-03<5`03rYY0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8GZ);_4X?kUHE^vA6U3+ +ueHn#sip8{oOYPq#kr@PxnT4yJT?P+HF$TsfX>~%f9Gzm$pDN-d!J8GNne$N325+uQwM7?5iI*lv=2f +%s!&cOi)j01m0uCK>Y7zOnDnmDt$AB4obVZIxM^jiFVL~Q5IVUF(|k;ro_-=^2D6VkwR*`r5eq%n8qq +w72B*?ur$&O1p6OHTu0G6Mg^MJ?ZTsTBe>CX3nh_lU+nk1Y5hG`%qSmCa3yzMPtYX+fK;tQhq|Cv<4( +?<TVx=X)9=jU(~bFY`GKKL6gor$JdQ+nG2al%LXfr}4+LpU%rlhyE?~E*5hN#X@s(k^EU!A)s>?MmK} +bD<h0cUpwAB3RxIXb0#Z%ck#pbukh<P{OhD>7&ugxxq#1)9!Y-SU*v>;IgsBSK6>=Xa!tlKJ>E^{4;l +>oo8Le*hfg07cnrfJ7gGmh$4iFhErri!K#4yVBX$08ya^{Udc>=ILKt<&BP$95Xo}P2-xKnk@7h3PN< +~fhWQGK3i=ys=+)yMo4}6O<M(r#`;95vCq)g!5m_l6(Npi|F8cuy1|GEKQcz4i{JsOS3+qZ9X#5n5&w +b#Cb@_<S?))K*tk>rISVbd`fjN>`s_4NR$9T7q9h|JA^(ct7q-=jz5lTU8%&0xZSmvKWxZ5#xWYi=OP +BsH`31a+t<KBQD1lQ%Ss=9~lAFUNGHbfCP-xR?@UmN}>At~mi}=U~IR-$B~pxgQ0nkPM1kUgbvsB;kA +hhi!)Do3b_%`buXnpqsJKV^t7>w_x-kwX<YYMFL{T+O$9f#yiO9?-8$cI7$R`m=PM-RxGqw!!ueA|J_ +ePp@b@#6UQP`69B?vqqP73p~UtHFo#4eGF?#HSYdGp;WY50$&?e|Oad+SY^3UudkWO<D5!0ySOr173q +X7UFR^f_Yb!=_KLz*%fkzBTDGfzn#x5`C(RX2vB8($IJY^vokuuCIYk8%AM>IkyaR44%ULC4h6`Fu0X +{#gh9~=mvpJ>9grqot7;@)vxIhd?kJqE>u?wB?r$3*~5B44oouJ6x9MG(%+@qkX+XBfUql@<ny*b2X+ +@r-B?_yNn7!bdRnPa^~@Hl8XleQCT#b2`I%#?=uqP@kbhk?3gd&j-hc@5_3S^0Tb@Trni*(s8INDf)+ +KMt_WEH#9gyuwKL<<FN1OyR6!BtsO@m_oXr88KDmFH6XuydVYR>O8kJc*^<76+?ar^#76*5<zrLJnE` +A-Y4CHV{1cp0KpEJdi7kxCD{!JN^T8*Abq9dK#y19W#w0G43hvdIcz!6qFASVpl|85x$NNLnGzsJxRZ +ji@8wB@lqYiWTocs`&HpC$(<jHYr8Dqi5tbkGqiI30xo)G#XZ58<m_F>%$cvKYqrH~*}&2pXzmxu1t0 +cn}ugvRPKGjGwT8H8W}0tzkL_YOibb)XivyOaf%gx^?2v6aDL&TuSjNRAE-&O&ygV1QPZ2g!J(Y^=lV +@A~$#<G!O90U`F$5Di@!daT#nH^W#QRavmubM^}K<OF{h7{=%~@X3RuPlrcB2HEzYF%!n8G%}${JO!W +&W<Y#21*XbBZ48B=3%-hsfqrRAUM9q@GIf?!_XK?k_@R3Y08KhE-64kKa|~jJV?P*rz~;cQhCI?+7)Q +-$VY_$G73kfcMlvk;EBXBXeX0@E1x^kI$L~(RIzA@fo+w;}Kj3SCo<jhWT-$@R*fS{g<oF!R9cmeF{2 +C#C84r!IEayGI4Nv_DoyVMlR`W0qqvk0E>|y?lPW^i_pd;|kGyjez=7)Ah<ZL5r%dzZ^kB^^dWCve=r +I8&-kN<Y2t@1=C?zqaA=h`Y?msUAHJ=H1I`RSRyO2(vNHuMKXY&0BP^8UU!!m8)zXYs%1`0o?`MI!;? +BP#HkpG#7o%WwYHme${7&A&@pf0y6<qb;p}$eLeBT3^U-zHCeDOIh<PN$V^5&DU*deJyJ~m$aVCZ(g* +e^+MKsDQUfw-<-Ckbt-F~Nm^&}oAb7`&J%4qmc#_2UF9JSpQWLzagW+S953G?%q8tNhdO-1U{UNZ%n* +acXY`##=OIjQsExr3Bfq?SGyI&qUcd|=W{i>J+U!82m%v~69!$jU{os~q$YCVl@OYQJ_~G?Piys8xCP +*Drwx4ll{>OA9A(vvW?}!RmL#_<)R5cd6&%emvjy!t?aq8hA`BeV$QvUL>fQ-XT@N+5xa6YDQ)CipXg +b~lZ!{`y2M}UYS1pMGBM7&Ra=hHn11v4`<46j92fe#J~iyTABD~z1TM<*EYKi!5)&T8clMe0Z4kkOfA +`L6F7In7dI)d(W(5ChtDY9QvQD2u|>D>LbegJ%r+;<OHC+n$GE;M_zZJ>j!l#o8Z}S0Vue0+2~5plwD +j1jJE@5&;_%2?5U+8OsF*<ufzH*>plEE({F+*eIEG6vOc=Ra|NKe0h9@o-vn2#kpR-$N=UAAee8BBWz +dipB0wK*#vTi&o9*9PEIo9^O&d+kXkw&GmkYh9R<q9V<R6X{fya#BqNf}cR>n_Qa<$y4;W7IaOCj}H$ +ww|%ICu}T$jpS<a{B(N;^D!B3Ns@L$1CxG`>MJjA;=qT-3Im<3zS?Cc?)X5gLx2fW<lOLQII=;IqVh- +;-(aA^BBnuE5X%Dncm*F*Vl={V{nS5|^6LDO4g}4ooES>?4S7rA_j#-%ov*(|SBJqIa()>I8i_EL2Dg +Or#k#X%`qw&I=TRb1{M+{djz$<J)un#Gvoy6tv#Xd-3;022^m2XSxn6cn07Ao~k%cSFN@<k$E19xeJd +qNbHg0^dgx#lW8b2q@Ib10@3pkIg_h8Sz?$*VWA&D$(Yi_^>0j<Km_8LH=rqoT<b8hF8^_kl1$hri3G +00{%nqo2ox7^ZW0#V0M9U6gG(S&nxhp1I*x$Jet|Ctm4t0d0UQ8$t_fh2K!29)r^w+9a<-J@Z#2f_h^ +(8s?lYR2?E022*fqM$YX}p@&O1$pMMDjr8&HqiPCzLu{4^OJ^Ma?w7$%&V$lT!6RuM^#8ZSOG7lLz`Q +4*Zb6@x$$#Wr@5WHYdvg;Go+P0!os8E8Qa1#Ut>gbQ6cdLZ+Ufx`}W;tro%TQn;*ZAdHH`w_GPj3*<W +xJRXexqOP~RWwCG@q6k`fLAAgpxz*DL>s*Ri!Mq+*G%vD3QOKKC?yn^uT{XbDA!kA$S9x9gpTqtIIJ` +dAmiZ-wBz9bk%<H|F}3<AqEuzZy`s7xt&6qzQ&B(mI&EuW{B&ZJnfwxd0iSx`kguV4rx{w(R4!8~T&< +zgpPm%^o8j5ht0s}a=JZ+d^NLb$-phl5WUN3F;;Rd|mtve(Xi1k~Ou%>1SVh<XO~f54PGO1+OIVEEf0 +He3G!S8?ep%HPa!x)fD~n<{@0CTrI0h1N=PNH^XK@m$S^taoJj4qWES>^EScE=G#6T)dp2Ohl^+v_oa +CR=N&VrTC`N=R&V3bh-vW71e>1)>A)d4uTqhmrn3|k>M@N5?XBOC+L2}O)RaZe3P*C82Img<s4cl6+b +*)Z#|aP6GO3kSHo&;OB0r7_MA<MnuGl0k808J)LVwt^nU8xqQPyYP_5w&h+IU&+3R-6?!USefvnuL*^ +ba5drppV>i_!|S*(0ss^~$^JbG1Jh$JE}7@|ITfa=*;Y?ZGB|bS*%#)-xYGLiP&Mj~eSACLF6Td{R7N +&*Jb*=e2rMjd?Q!q1hc8_pH#qFbAh5ZiCAu^myXIu*YsXU3E&ffeRLPDVUg$A-LBXc^j0&|BCs2OG@> +_@)&#&Uvfhb<PMI%pW<*gfks9vLX#&IF;X|&lPrPBh)P79ljczP(I^KC61;NeferYa)8Mwq$nD$m(0z +bR$!cz34j*lA8)o7imF55<AC?MKXm{F*Q45g>J8{{YOjgu3vZA`rOQx!J6CTaZGt#<^q4JAjbKUBs}R +cm;{y3qK+Z!g`p&@r-wjxqL)9QcSo%F(-wIq?nWD^P_yD2H#I<;;)?Cf)po(v7Z3R%%N^b-Nk5WiRD9 +<ma!pc<);OsW4~bbVUQc(5zjat=JboFvv~Xf42<SBnof2<Aa0R6A^=X7no{J%`7}C5PR#RN=#0JK4we +W8h!(P>`DQtsiStS~LB^p9a;CQ+-+nY4V$N|md<J6$uL@mZic;kxJ1gGDSi+Y9z>my&$9jL*k<l$9J> +D}#DzWA8^l%znW#KT7zM3GenMbH>G_W=X_etjGXSv7smG`rivE{bNFM9ty1lku6UcPZARZgIDfa@KLb +S!*ZkKVELPM~)Jy%T8c1j<2jMSq|GeT_#j??d`7?7$^7z;Dr3Ljdo=wgzmwbaJh2ZLiFXS%EVTOJl9B +^*n8^SM}!o=vBS!X`||M*8~xEg6Mq&y+KXSYvo2Yt3>q^rLR*uH6^zixPDX%t}`>ZjpnD+axqK?J*-O +xepWwKb$v!Js?&<O#on5AGN7!V7~uX0o{n#zGGZm*DQ`bre7bB@Rn3V%6$aU|+H>pH^Y2}1PpB<Pysu +#-=mD<qR!QSoVcXx^w{OWSzR|`H7P#HjlH1*I2MKQcoxmT=vGH9@R5iXiXGC5^VUCjR<F*t~F?^{LH- +G%I8<c6c(KT7wg|70|-Qi6X4kvy%3~-0k@CI!4mUf3dDXx6`tYi~yWuho6pMO4J`S3Sx0a1pCG4=bAv +C%qq-}sY=z4T}J+F73M#r<{omisPnWF5NM4L=*sY72<IyjSW5_~k0>Q5Mx3KynKET2x;HByU>l<U%QG +UvsEzjB2{Yu3Z=+^~dY5v(J{}mKKZz11%E|cp%pY*Q3$$Ini~o5zTg~S2<&j;XnDen!3jNvY<J!%$4A +&GUKl4CLQ|$O*Z{3g${+CK}}bgH>END7`Km9`m<JHQT-%B!Dbod?{~&0yYDaFrSz%hz3!69Ygv8GO3v +VvACrLlywd4syh4#|0E+`lrdhkWqY#<0DL*30v&CydW0S=%58-ZS8xJj5h+uVWde)+5Mq9GfxZ31at3 +)Bi#VIpbyoknQeman$*{rBZ?u(E@H)riUm(W@G)_hq)H^g-Yad|Q56t!9sIv`z#B+4B8CPY!{uwWp8K +Mx!=tD=U*XqKg@Fv1O~AT~4-oiOC@ow!Hwnq%7CRRj9wc^uu)HZTKd>F+-?9vp{Sy6$HWf<qM{o}P=9 +bFh{1w?iy#7c2qZ$_#m~j~j;JlEw2K2}wln_A(|>c0e=|!R|*TYCrcaELlz(ePFT|PNfe_`oLsW4)uY +_W&)GOKwPoiX*YtCw1egGN$n<t72V@U^*KnToBZfyZu0vRN98uzHPxA&kEZfn-LrsdC9(8j)n2&7KCJ +4)s#Q7EhgBO1tCof1Ttu*1U^VPMz!@$X-<+Ck+Q^%3fzwIfJ_K&tIGP>hw*6soxyqTed3z)#*}p{6yd +P~}B5CH<mV0GnxKHnmlq>QFW0t*X?wDydWO4;#JF@51l@kA1b!5%$a!+h?W9GHW4(5`9G<cPwEad4;K +i`ku^gA*A-A}KJe%5E%8{`L8Old>hQzn?=5L;z|PyOh|rF)*DUqK7En6Ph~uU9*~w`u#8Mb#(q_aXt? +C-M6v{;C}6llU7>;x7Zv`T$}jKbk)jjQpisqc;F}I6@0J)L!A!b?^(_s`3Zi8U-^nX{@G!SB~R)Wm`& +k8w*mKhNlgUYKuzzA*Am!<5?<GxSj~VzO#J}vUxw2S{~Tg>#9P)>8Ebq<nA1)+91Q8WGeOCtr$~}5Dx +|+TCuuy!m<aKcInd!ZnwpyJ;A0A09g9<natCJUJrWP0KJW@AFX87`sDdaYf>r)&b)%Ic0HHwMpUw+eN +w27-yNod8e!UlNeZ=9<gyiuwI6NO?0$r$M5(*_Pzv=D{{+DqS9Lr!*MHPj=SNiW`_2ylAr6d#BfM;s- +>k3#Qmo+1lPF2b6#aR^)bazqHY~l}4<suYB7?y0n6e88FJ{%G_Uy&wLcz5wnig=2<=aE8OU*k#1H8ra +P23mWNHSmmAGsQuJ=I;+{F7Sb$vKDg3e(PDncqlzoE$JmKK-@K_vihE+F0IMl<=tPfcugIuE%)vF|v~ +%YsYWgNw2!(mlRpPcSnOzT&QCb+p+TJC&yP_gR8}3?5ruZ@HR(&+s>4VtLhN|;CH+YGKf6J8$}DsQId +!1NjnwI@ssjQe%*aGlv1=Hs~(Lne$uEr-v88MgF}bTZGX{P(elDEjQF(B)tra#&bhbY#pVNm98N6Fy) +J!QJMD>68x6+aoi|&GYpSov7s_Mg^DGwfBRc~h7zp@=*Si6~VKfsuA{Tho+m!Q`CAgQP#t;DbiJ_e5D +6QmrH=o?0_hI~4V;15yWq6dmIi`3iU3{lmjvfMX(!nDF{~)m9arStp9Q+zkykL$a@Ej#8K$l+t?aZj= +(Bvv6pOAsxcU4rXx-L4a8F(Q#YRnP2=BQmt_$g2>8mOGeR}SEWx1hJ~%|w9mG3;pWIu`IHH5lD(()ip +!WN@qT-RI6b&NcJKzoUgS`kis=A4~EL6;n8UWT$tHyE~KaJ_ua#<mp|T+4teg+9#Xq3TIXgRk$(lSh` +{tX68VA2$4*a8xi(tR$dBnyN%wz8np;zX2vAa!~c%_uyXyc!9~$oy1#fjn)zYs6582z4_dbS27tH8c( +#36N(v-AjBRmYO5;TGe)<+3d_F0k8ZW1KIR|r++%WuqTXHb;_Xs9eI01~j-+71gDzOa53X{5(xwQixr +p#2<?`FE^Y;^`$kI1X7?l<uWnR!ZWJg;>H^T4+#W8zBdS6)JG0CC*I0jS+DoP1(Qn2pW#YRJK6vv$)W +i9bMnJtE=?_~Mx>4a}zy0IX&{4dRb=S`W0}ThEF^>%@8(SF4@3o`cnlC*!ns_%gGWM)a)Ih*ru?4MdK +D^L+aeW#pyz>!}MYYl|;?INBZ@dA@)mwrMOXgPy`@)Gdl1i!F*WsaG%<6|Tr%dF*JFW#3?;W_kG9r43 +@+Q*8yXpbLcrYdJ`DaNF=|o58zA=`{|$Rx|axnM)LCwOCrK_F2?X8aA%-+f<S|o4>ZSjXzpJ`<V}JEM +oDUrw>W_*D><tbiZ)@Z(ivilON1mN=)L>dt!-#@dgFl!!>d4C~-n!GO<H}n64}KbS3UYAr<i}Qt{`p6 +R?mxBYuE-O9sjfs(gzW<BQk$lNp8n%nTh1C@UABKIYByy=hK3s<YA9Z)alTxG4TJ3h3MgA2^Vn`6vmH +(()y0lM#!4)4brCX2-lTnlm%Z@{QO|0NR85JI4G@Soo1kE0Mze)Ul>~n}`EH2E<gz;n6X;`tKnRN7*s +xv8#zKX;o-u2Dj1tlv*zIJal}o^pq`Z5q_|4p@qw0SFThXP0C_WrhR2GDIq0Mq*!>Jqn>KQiYCYEXe4 +VG@AdRDthEx0%b&!iW3~K_!+mxLd}3xpoOy71kei8t(SRx0I=_OpCBcc47##RW<EMkeBcNyD=a=Ghh@ +UUub2aD<4i;GOzoOC{Kfe~ADSkdX$iJ|&lmxX>#BEnF200!*I;YIYZjMu*;#L}GEGw>{B&WW`zisGOl +LMHHh8M&WV;<eOj`hlhN<aD@#e<g?ETpsan}&oeKS0cZTBtHj6xkMoYpKJ7q8(oHqplul+T(lE0>n9# +G!Cb_<OuYKj(kw4Gnb;3v9{&0QzL$DH%^SmM<>PN0DNZThCj+e%iA8H2)Y}-t>iiW?;`nhX=wJcbz?L +zrmYxE76rM7flh$asMnx6N8DljmM+KHCYw?=^n+on>4xgI!2`QA<!s%%Y^mtx{#+H4CYsB~Wz{~o;7` +_YIzXudt2<U?Ka*uOS+Xr|t8ly+r-!i=8oq#E80t#r>}@?uxP`$t&LlQmM7NeQ@O2&mqU)aK1@sTZyo +bGg_x8Q4eS-nT=XI~a$~S4;57K{c|6QnE*Y9`<ti^hK$=yL!s;;VE@6Nh*XO(=|dF1E2?QsIOvnH}W7 +qI$SIxPa2P6LO1x1nx~Xw@6JyIFU-F}+E=<P>j+M02WhJ|&>}!t^TN?pozY!ET1j2iJPIjplE=2#?Ab +w~3IC3vZWhXMuHDIfKcs5yca$*-s?b8g&IHKWd1ZANI5Z`0xRSV%(eX?(c9w1{&D4F{^7_o8M;_FCXs +uo3SyInw?mc6`x#nywWZ<ZCtn3&oqw$!?-de(Mqzmq#49g8-YsIrs4(Qe4X_v``lzqqsY7PuBuj%>t9 +se6_ws+4=V0xBaPpMwR>pXrrS-#)xg`9imJ-vZt4)3l3|tpR&{Ps4Ien(H*o0<cMx~o*B+G0Sls*#{T +)Xo5!b7j)C~^prD8TmxqL#X{Oz25ilRET?ozF8txHW}-c6gzHs`#V<2>fL%Jw?{-X%U2yAJUw?)o(%r +1gt|8+DBv{QN?EcJcG~M%}Jod<KStg<pw^7Jhzd=yv<!Q?L8FVK>_0n`J=xrbT>;8yDl|N;fa!Q|--P +^G&$_qKkV!&>RFLAKji<d~#>DFy!N#ZiKu*TK^UDk#zBMD0Z7R6EelZXQJW^KmYI$h5Ux^t8OLaOo7M +bdExySC~eyD3|#yq(1RQxUk=E<IPEh>=h7Vh@qGBdfN9LfT8jgyJu!nDb3*wMp2_PXF@Ev)W$^gW0x8 +>JmKoU8{)YITyWmyPFSAg28)b$wU_5m6;Mqa^)=rKL(#OmO!?Q)9AV=>ocP!~H!MmKFiA;<iWM}y*^v +9I%ps|M3|IEDU(@B6;+#h_ZZoY3GnG}&~Ygx_L@tX_42xsijpft2l4ocjK0|)8?gVnNjjoGp*^N9URW +vo*`^(j_u{jE$C^e1LzMVGu^#B*~E=fC+OHa&Y$dj`=O`m^I_Cn|UoA3C}Zrq%;f8*c5!i|L(nt0qv9 +Wvep3wcxRtV**>c<9$qTDp<O+FFf^F_&~9+N>%H#u}vNSM$Sy^p`?eB9!fUCtu;VNtqE^7gA(3T>Sem +~+_T@rXFkY&u?}W6U9bKg7zf)n`}QGka+pS&>1JLUD@}hN0)v{&$9w$ir<F@hD_cS4gITaI1>{}Bzb( +NH^rwfL9&XyhP4$xT)>hjJHqfuOwPH&jeQam7ty)0!t8Lo)JG<KUklpPLq=nYvO!~ag4sfdvR7ziMtV +55DF1I!H$NQKgSHQH-k@r}*TUc17s*RW1YCZoZm)m+M>7k@htA~<Zhmu+oelRK8UIjm#$bO{-jC}F^J +5ETa%KYpoa`wZki{)}g8`7r?DCiG-;$)Pg>`UZxnO<@t4v$AN*~YMB+1dW`9-Av8cgTN}O3(6@@W=WW +wc@)2w5uWb6yLKdG7ul&Aq~QW7IddjBvuuE58v?fr{ZRatE&=wlttqc2zafh!_Tj@h4pWP>3b@PONL^ +Xl~ey?Q5weRHwe{)YN9I77cN9@Pi=>pFnc};C@6;G0XW>5frDQS(RvdykI5-DU2^Y)Q{qLgOQtlSBry +41KH=2#<ZE2w-if3hmVN0*UKo#iWZ@sl)kPVDPs=_d$Jv46i-OnKL|}r24U&?Ym-^Nl1mn{@5RRG82j +1k?rdXwx_YY~H&^D^af0W)gfgTlG{vS|F0|XQR000O8^Hj4?+Ifs~5(WSOuMYqK9smFUaA|NaUv_0~W +N&gWXmo9CHEd~OFJE<ZX>4;YaCwzhZExE)5dQ98aZpiI$`m!pieWRB0b5#Q?a-}2Q|yBq2()yz*~p|o +QnB5l|9y9)Y)gJ=Ga-m9-rd9Fy*$UM(F@4)Y2zA$c@A<>YvVvntgae|dH7DDln>HMtx{-|EOd!^B^?@ +3*}-7S7;aso-I%}CWmDlTEw$2G)>;05s?;X4a<$QOxN^DkYR;^O1E8lBtrk^=&LC#Rs|pvW+%0{8uu$ +SuG?mM}bbzY@YX`5r)hlDPIRW!cl))g+MO9G%u3;SYWKjyyTXb_>zLd5Wu9&0YHEG{BwB1ZNd?zF=`E +A=LvR&D&zM+WKS}Mnu3m=`4D4aIy_H|%hv->u$w8DG~W}`cD^$EPIgqv!!u%NVqR#~bUusZD2A^zCB{ +Q2VIoL-~RC;>ayO;y4K38WCsZ0=yP1~*4qs`Qc)VqFHW70gg^c1a{HEL$TGY7KR}Hz72Z_xx}>I=}ph +V=A2mR8$?jtf!k&0qYE{*pxgg=A=lbZ`Kr1mBB6J)87Qi9g7<<Lc(h51;SzpT6rf~gK!y!Fm~rm$+MC +*46=>Vu)tz2l(bZs8m5h58K5mhjT`guWwTxB<ts`*K8PxQ7JUqni=HI_PoQ2`l)Pant(a7J%{u4gOc_ +dT>eE2|p{x_Cz&Kx}yV_2M+tfaRe-RX7*~V46IW$qUJw2Um?p!^5{(RERZ1yPxNt@YoX>Eg77eD^8#p +*cQ{2y=m5!RylhR1DJ4Ud3Lgu(M5_Hd^vm7E(9J5Yntzv1^(Z%xBZSXAU0>~~vS%EGl#jH2izeTC3nf +vvHSRHn7jHJwPJ9S*$SKMJIhP73Eq>mJvZVlIf;s6;Ah9ake#y=nulsVnk=C52WGgu@Ba9%n&3AW0k$ +tOijOXnoytGjO|6(zrH>4yhkyC{%6aOe#@%4Bqa%lJ~Sc`Gn-WL1J5Fz2<_?$Z(V-j)C8_q>vm$;Y%D +%wPpgL97M^GUZ10{Noz6o!aKOW1}_Lmzi)Uhz{7GbsRIk4xSQ$x<bu&e1KyR5s&Le=6Jq~t6Y>B?avB +vJ);y27KhtpN>p1Dv_y-@JoU`^y5fsk_sxuTN$EuWuVo<HQ2<1$%Dz)gQ-Ni&Vu7l;4vhaL870gWUDk +MIDQqvg>P8-TR8fGIdV$WWTH$hsWWD)~V7G@nd%9-=gW~#_`z0~!UCcxcRLO`Iz0@F5tlwW`5VVAC%0 +Xn@D^kYtY8j33gnu4EEQN(@Ob>r3DiJ^H5MmW^i_cRlAO(Qjq*{pRiNqT0x=KC&4=ad}~*39;j-ZfA5 +Ii*77)e^2m{y479D%qysuHkQLq;8ST(D9+RTT=IRLKgZb_(qyLowSFW_*wa0FKBQ$N%xgCO#)RgBUrA +v5{WrHkt|V~Qc+(M3FwAK$%mWwSMXr@{bIlz$V3d2Mph+Vc-Y6i@gJAMiPpu|y_iq$mpK$yJfeD;(5C +d_@x@&Nzg@${iYeSrvYzNyFZyFNI*o9-MY!2VxZEP}1z-@IKXp6lo`Sl^<Wvrno%mvPc|i~S0CCT?^V +aDE&gj<*);K7(xaZ1w>ttJEZKyVTalXRc5!!pv_8lvohN&s7dgkDbcn~SPhI^%#37P%Lv!98?={o35k +Q=?E{*#4ZN~a4RXrgydc65y?hyg-8j@`)OX?VBc2r4&%sF))1<?F6md&V)}SHcleI1`3%J!fb4Oa9fV +;67pOuFKSF+=qFd`U`a&Mf+62VsaqLpW3|jFoLJB+ja}FH9I7M7G&}ml&xVnMD7WVjQu+fi<##{8Us7 ++?WJn3X*+Qo^A2}o2Dlq{(RcLQ-tPaxb?0ioc?gQ<<TiMo!utG21D6SX`iSK0LsJBpVDda`YARoh87t +YR{fPIB!u_vzxI@-GIC-d}eL!~R7+|n@1Z)WCaqw`~)9}Ie(VO(McDUtZ%}DP=tqcbJ?_H;DS{D~ue# +V%YeZyQwnsjM+&Xw`$mZb5)R2RzH%hKaDo^-pIt=eD~hiUgqW76S6vWExz@6WWIMepRT`-A@gP)h>@6 +aWAK2mtd`vryIxhVN5I002Hl0RSNY003}la4%nWWo~3|axZ9fZEQ7cX<{#9Z*FsRVQzGDE^v9xeff7A +Ig;k@{wp}1owdDVxp;__Se))zl_lHimXERJy1Hs>lbJ~}OUX<s4;`MJ|9ycx@O^;<Nx8cBz3tbpEJg% +?Kp+qZ1OmuKmacoh{kABJG7EqEtrx8~X;$>Sd7j2)5&l;He%=eBn<$Uc<aw`5B0mkn-{PnUGcV2`J!; +D2MHVH?M~}|lzv}&|_byFB^|$)#KOgnf{~jl093S{AFY|m=@bR}5w8Feon4ZD(qD1|FQ&ts*-uihj3p +cUnhe7W)DptME|N83HtJ4>cpV!q!$&D9B!GY#!lSWCwHJ{hWo<Zu$>uRY2Kh3hxFXH=yx}5{n_b4cHu +IW<^>OKADS&vHe8qQR;g}3b1dEjRUNq8GaNq7(@MO55N_8PL@%a6T=tXGrSy}o#b%Hud(dhx++lmzK* +elQr0hmOk6DoC%)+bWuJy`)^vm6)G$dDYq?%)-PEpP6=iFH!ub$xWCQ2dYq*MZTk*cQvNrTZy`igXBr +kn}@xouwtM{X@DQ2@KcP;=YRc|r<&#@KTnEh{o}i5ogN$FgGHJ>oFyg6EX>u9yyqoG45qSgnV}9Bh6& +l+ffi|676*B_R`VfFlN}5MQ6-TuX-4A7?1`y1yxS-RP)cXjKUZ}x)8ZgZ7dvWhOTXy7PU{BJMQ;(sq0 +-2_2)$rmI}fP4r&#GFYC888X_=tL#9OQC9wZJ;`E|mey0_LOJFhu36?ug+MvCt+KZp`lPjH~7r<@&up +0Qd*3s1>PnKjd26mIK#l85o)z>m{hS-68m>@5#cQ|*%nR?BttbRFGptD;rc&FE**a#bA6)x^09g=ITy +Yt^mkBDD~n{Q1fDk?+)gU50s~jQYXa%dQ?$`@f_1-qSaiZ!da58s>U9X$s}#rdkg+S?Y&*)mvRCD}CK +o{^HqI#vZ^zp02}UrRxmi+-P~H#&)Q5%@3DlJ2={ucf{E{UnZ$u;d)R0?VCS4bk^0THGADHeTI(E41Q +Px+E#s43oye^{^e=l72dP_i8Zkm(|XppM#ar)wfwC@3{{79Go_>gTH@Ivh~8OeW>(E~HN9qBHuf;~Wz +AjhqLte2`i;NA&Wx<OtvM(+apZfd5`*WOPP25gQEVDAswS1rh7q#1M@j;nY5uiR{!=f_T9mUP2takW{ +6`FDRnNm4+CP=;s<&CkC*gIeoLD`qWpZ7nj#i(zyYweLwrv@-*VYTeFO}yjTM?SHwKa#HdW-76519&R +qbjs*E;xH+H&gZHtJ|@L-=4<x;0I|rkHdpX1YbL;s~UPwe|h|DUn|;Z{++En+1p5x)(zx;s0G)Es7+T +h7R~0RvEUCh-g=QRbLY<w81V<SVh{K?JK8cW1zx^VZkuxOgVZnXH*T-s$-%)BZKj@_zJGc7(}%MsFVv +2+uog1nf9|P;vu3@~Bi)W>-%r=;P;MKk3;)!xesG|9Z)v;r=Nq+G`y&lh1$Q+<d&zD^*g-Z(Tl01|Zm +GfUI;!<Wcj~Ju>peYq=8#t<oIfD0Cu-PhVO1JXjrRjsr#8Np`-9GGW_i@(o)_Ljt;GXmT<PlHQKdC)_ +X|}lGHuVT&0g41^3LRZmkMoe0z^$*h-PYc%GY&0aO*>i{~4^4O=%k1;)*&O`&!S%-9$Z<+`z*I@By`b +RYl!S*CVHFs*viI`p=|o(pFaOcWMvH>=_)&*7%<f;@IZYp|iW|5jxxHcP+apNy2PZtYfa@#~**}RfuZ +;s@6@Hb=ui<+giON3~7?6t+a0LAWKuBvKrXaQz+Mwuz6VRmKIT#>maA6_R3B-yH%w9N_w_SNlC_6NqX +xZ@+?b}FfH@#Dr9q`2Vk53q6JYaj~S+X2V+~?sD!h_!7#$>J^h!bdiFfapZ$?`904LrWgp%~T~%Wxqq +W+;sRnI@*jamHKediLZ7O)y(>3(MIFyTrjF&wi0<qV!IXc_6R@|lsE46pZ54=qKu*!~vh3;js@{$9kK +YK?>m)7$&yo>TeFA6I}Rzj!W_VpvPqcWpT2Rc-#Y{dG$>d;qcml_pMIa^+$XR+!@-GR61&7Ky&MuFRU +)=?EbbIIUsjoLL@R_T04@!VD3DYsf3^F6~NdR6^+*GP}TgiTf41@-5<hj5_}aH=izHv1zONY$DbC0^W +C-Mg%d_q@EPx*guu2-9Ssj|+US2~6&7p_SZ=-f5~Mp`{K>7XP$cjJ1w_McuYmn@ZE_WGN7H-cxgPCC} +L0lSUC6sXX4PU2SQ5eA=dqG(8BtEVhoII;JfTL$w7=(_TePcBkUFZE<_`wWa&Ip1Ew>gZtwes|WPU9x +pFQH&v+JTZV~$e=vA4*i++8l*UR4bEOX9rZ;%b1GG_#>N4{-tKOgr(y5iAZJ<{-(DUM@Qv71I-oe7~A +Hu@$?_pu|4`E^S$5}Xharjj%9ByIZ@Zl_Um$&^Eja2t*?OBq#%=P6e%3FVed%IG#Bxz?N63?wq)AC-0 +fYk1K3+D~F%g-^#2C8&#qgr-`wzjo*Fi(T~zq3(Y#rBr#ok+9f)otFSX^^I0;r8nGNMY(`_3>bMr~Qc +Pc)qT*w@w2m8>=V?LcN>Wl*L|YSD6#l!K(Ifdv)15?nW)UnpvdTdSCUL=0TNpU4{q9&*^ae{qi%4^Ke +ewdh>Vk;fHbjAnk1`SLAMyuov|e+N_&*SOUGTrxqPur}l1FI@FMb*JYGJPI*u52zrgjxpN2}(EG2Lv% +8%At!5)jZ~soKp=#JJ=C5e);qC0))hH|OSB9bfYun_ikfcyeQw_XoM`$=!m4;;3n$X&&oh-CzT{}3~V +@vk+(NtZeSIX=e!8)7b-tOOm?rnVgXv$W1G*v51vnsp#z0W?^debiJ+w3XvWNi6X=}VqE!uUFl_R45K +Kh>gKM^|<jk!?$H<)KyKmEFb?vfta(R;7DJ`t>z!%Mj87Eag9_-8S&L$W%4?)}VV=plyLx!(S4`L!vS +J+x#jS+wAO^a4jjb;0_ya7kgXIwJu9mdQVN@*%{%W$+brwUorAuAq|>Zd)nVMy@-ce>%M{md)hr%Egq +o!U%`f)fe##u|CcQ2iThx^#9VLmO%>@T-RU!uZCPXw59RMnSmP%CNF<cx_(z)j+Su_|G}mUxZD04?(R +JE3bkBhIdKcaLnpJa4g%42NZk0wyw{hub(Wby(U&n7%WGlaFGN=XPAoh~r0jV*}bX~Hom=EM`(kL+Qi +{2O?6qy&rIyCOc^S^9xy#}ZBzvy{!oZjjfWnvteR%u+@b$tTZHb}i{dE;o4Rhwu{C;s%>BgJ;Bxx-S- +L*3HB0}KRtUv;6LF68#>^#R90k~X7mXHoCv->SgwMl<k&=BozYSw9q@b!i^bfWy)~yrCa|{PCbnf^ZQ +fdPuS?wG3*5>Q$)T(?W;e^3uQ3cM{aRSm|pM`b=pN-Gza+*8lbBkrryjQI2ag_3-L{i_N#+d~<ty`{H +)=BF&cH45riRH+L1jJp%HI)eh?8Z{8|`>OXHU+A{gg(p_NK@Atpa*oN><O_Qr#oK*OhcpDo(zP+efF@ +2>XNxp-X3jfVxEvMX1H)_r{+Ng!K$kH!iqO91{zg4w8g(&}4i}2Uy%01a^Vr3nlJ>Nm&dsQ@dH&OM+P +KvdcU6*0Fn<$<Ct`~rvH1(RZn<UtSUpeuOwp83kdnwYr6mFR@MZTA!vK4!XyhK?YuZrp4Z5alwwwkmt +#qYPvxup!k+}}x1L`6Lgzdn2PNQXteqWD8PxO=STd(hExkNT#;9&HKNyYUNU=yp@MmBpZwbe`>|aO(l +kYqg~8At|!xYEMTMO`7ZxSFxw7<>P17fahveh`jjgM>`0zFyGVPhnOWV3-@S_a;GDIpQ-TjXrF$})lO +wU#eOZBFLRwyxQ8fC{i{0ndN-X8itMJ?qjPGLQ0z1753>EfQh;zzV}80ve-*(pOUunZs`c92C&FMKJ} +i`ryGI3sXitxV=w=VWo*oB#)FoWc!#zD&L}47{`)0}_T9(-!by}q9-Z9iReh-D-IX!@6FUzaJ9{g|*e +zXUFxCcMpgP-id>zt~+6#E3e+K1okbVXuB{#oA;2<rr{XzeY-o^rvPY-hc>D+?2gR@PmgdpxeZ^r*Vv +=p{`h?GDf+g6WM(xv6et>9U3AUp-gb$6i#J+mYHi2(#ypck!w@+S8r&p4F>5U)e*FM`|l_x0@*5v!Yj +?{T_-czwaO56DwJl`zVS%OJU;eF;+?X0CSV1_3Yh8)oe2VZcl&Tnz3iG(5WeV4Av(0qGYR!4YGaa^C3 +OXLx2BT+C;$ixN-M;H$V^ABklJf_HLt;;P$&=g<f0!(0+{Yd+n*&jqD)VV@}IG>UO)&qq<wWHFC@5tM +a3D;d7;e%dFbKebDbQJk+WF|78nUb);tIQmMp0pgaGcZNIAydcp5yUVQrg^@({M0YNEqK~YzvV>Slx& +cl^w1FUZ!5a3b+8mekHp%YAW_ME2DfL8`URGTc-(ZH7GL-Vr@{duvkGjTLp|NU0~-QwbCvr+vllc=a- +Od9Y(0X|oNmZ}c%)z+=$xdDEvfXsJGt<957tYJ(WM2khKEMl4{cR`1Q4d`VHYAC~C8MeL9e{(O?;DlM +?#cD^HmYEv7HZ7+jZjc{a<i{4-lvc7*6j@mHzy6_UCDzEN{wbuhjPEzAEL>=G_4h~hcZ<usAW|JKGB3 +$1$N5_TFAdP5Hm$V)(cYEnP8cig%%VF@RR4Zk{}wd5o;XaF%B~tZUDZVmGqm^B^DlW#bpN6L0c^g}@A +0(gPt7mji)d}Im(|}5u5P=YFdAR~KB<4VG|@WJ9+Fal(9<`LE5Zh-lps8*fDN^NpCimxp}xGO3G3f)> +feIK$gut?Bv^xPqo5W{{qu+Fr=iHN8l9zz@~f9M%&INF5<~)<l<U+lyqj7=>eu_`SA*BH4`ZZ%$<f(V +9&=(d(|}$4G$^5R4XmSa4cx9))>r9+S5(SY|2Qdrw6XV${mI6DVeHQat6w9^ZbC2Kth|b%0i09-n@aC +SifTa-v=#Vc1vVur{kaLzuNESDrY3FGDfRD<1iNowKLNH0y~0n++CtSoUsgW_MNnqIpQ;}QTU#7$iW2 +>JSYDIW&@(_S`h}{dYz$Kid)2}kTHX6H_A)l1EzGu|Ej+y2sEH+M&svzFRUTcS-<U~*noj?ITmNop^i +g%XSX3vg&CmDsPeTy|;Z0OI0X0c*YJMA<sPI>XTCwt)ME|_3ezp{4w$N*`TD>as(ER>X{cdUQ^CDcw% +7m19|M+bSxo9B`UF8y2uLo4ERX@M4e;SHx8P?if|M{cD+yi4YMEeJr#rl_=#WzuSJ5Q@R^`GCRcZ{hk +Ymt}ruLghTuar}#-}uoxg0xbwyO%ZWQwwWo?;W)FTWG(esScrSylPzZuahMBpnmCdq}pWH=V8*#d0ZX +eMSA?otUAg9;Pc0e$ENVB+P!o+N!5Yax1L{=)y?kS)8+_G`>ze~d5=A@8vX0D=c0V(XK8GgZ-5Ud-z? +cwxPm;OWVhLewwbSV3M`kbAP*>6yV#;=4SGn~+6m*Ll?%4B<U0Pg3V2uL^hs(H0JlnM2bs(03CLxt-+ +Ri`r=3)&2J9|X+0du@amDBD?@j>)lSRI5&uX8VB1R~#vU)C*$##VfB42G`o<2?T=e;;p=IGh;-nFjin +NGy0|9swis!Zo1x@$;OOI5OG#n$fsZE5&Lr0iP$^jUrWqBy2B!|vYd@h`@f{9<hGFJ-^qf7$-(8F2Qv ++T&DK@my7s7240<v2$xe46PZgf(h-9YQx|DSkdcbMbnIz`%!d}-iDd4lLEQ+`mKZ)6~%9HOY*EP@_Dn +_SEOu7nj#m~1>Jl{8#TeRM?tiV3MXNWdG=@(-kokGQplE$m>pKVgvO*<@YGkzQvLg)>fh66&z^1939U +|k^Ju4|ms*<t+<T*BT)zm{jF-M?-(0j;ErrT`c(kf%Xh@&dgR&a5!?PNizeeV-L-W_z{55&}NVTi;ig +sy8Z8qAyVSRAZZrpCF^zLe3h7AF-C8~&K+nQOr=H@RQ2yUyY;+Dp()gixjx2;1{rhStWQpbo}??JFo= +vN_X74`Ki5ANPQsSNOw=e;Lw0PKk_k?kl_RsW>g89#a6{HXTN?XSD_rv0;y*|)!%z$|{&Az1uw>ZzEX +r)oX&oNKSLeZ<e>NbP&IJEZ+SB@%5{{8X(C#%$I>Mp>vL2|%Mq!KyZ2dm9jVWl;I-OyZSAx{1B}$It8 +NfLcPyTHi!L_;n@Pj3!Ye(2u!RenEbp_#keN{v@^PRYEjs6qi{PSVZeGE}~7f@IDTrTw6a9MXTSkOnv +uEl+b-xh5l9jr{dF7^`f3tW>ujESZ$<fV5;MQu7L7#t~NR#Ge?7#V2BUx*QZH*k3#jm&4&~*p=uU_Dq +f%AeodRrG4%E#x_67zFKNu{Df}=tO-M*oC5ORM+cpjLLG_C|jgmknW${2>(YyN4&YF9nw~lq<geLnhZ +S<=*V52bqp?<}<dc;`YU9HXjZ;jpmt;()5FR!e;o3MHVSf7Et=$#j;B7N_?PJ;Bk=G|fsZNGTrYN%a3 +jz^Qj=RJKY*uOjO_tbxf{gaoy-r47m?|YxlU%#uUCgbsF^t_=OU~&8W?)2={`Ma~zx~}2i*wi(w>l&Q +&R5kBjU!3(W-v4kg?fu8+_m?M^=kMS3-kyB?YgO*BKh(wQawA=?KbWfW7mDs(@6+3pi;LdH+2!Tg$KI +>n59gO}dT-vp|7+9aaA=x5Y??gl^-kY^{%%*3$HP(IlpELOhLfJE_~ZG{@84aXT=dQ^F3vxEI{(zR12 +Ih+dL^#Ylh?1$KDH!dLvqxR3=Atoc{J#wzsFU7hc8v7Z{MGuzdBdFY&!e${Nu~dZ(m)U{n$Hs`SR@DW +z)_fSfAGIj1(&$REf9e7pf^UY@;y=_M{f<q~8km<;jP0-O;ACPqk=Yo_u`&u5D;)8v3qjXo}%Hdv$s6 +;r;nLRoCm@Nd<FAdNeu)4=-yT#={N|=dVvLKYu*yy+7+J-03!j8yyc&_gP){(dm}{{cQJ7wDD?N8%#C +r?@;|oE34_C(L*(~T1c(HoN72YGR4{%qeT4i{PmmN<%UKFrlY3Z%ci+T;oQXrrdT^$PTS^omP7B_*`n +C}?z2+2Rx1anx|tvY#o5_ArTL%Uv@~Y2PMaArP;8vN1<lb2Dm!iF#;NLAZ3QmRFHUO(IX*l_UG*#&Xq +GNNo}8Xlobxmoq0V+144n4GF$u<ybUO)P(<;e5XckPtLOTma77IJ(z;wqPAc3`W;LO>%&I}kGO?sy6t +ETMnmihBjUHbI=<m}^_wu{PNRom^eW^u7x?6{a|2YXrn<E=OKzne6#{?G|>v&!oZQNHnXPtM|~%HaOx +&Y!fNeFdC#pl?5D(0`}jGYRng>RIBd*g!&O9q>F;`<fbD_6L2ln>z8M%x|bAaMp$1w-p=?`UbklYUpR +RdmjYjzS)$WEHkyDH?{O7bk+gu=z3fIXbQ&Ho}Ynl&?i9y9eQK4BRol$X##4nl5Q4)%h9nxZ8q`!t1_ +t)AlfSX6EL8+whgyq0i1Q9xi4gKIQ4<bqot{SI0k1$6bG%4MiM&ffXg~lU%?I;HnV}>sl8$zd-=+=IG +6yJ-5Ak@M+CkNjZ8;<(DSexv3wU+&nlSuM`K{JBrW4O%3I`M=mS~MC>z!K&Q>DS))~2}L9t2?12dxEn +PHGkm+MV<Z5Tc@JL{KksE0!%keBa2{8Y=;n=)+H0n(JyS~me=W10(w1dR$WK8+UDM?H#2{cYGi9D_`4 +a_>ooCXn#b_cGRUABZrBS_L_h&{-F3=D4op81OWSk^%#3rrgUQEl|LOFJ9{E<7QOv=BTJjy*+Kq+|AM +SB6D?X6&cO&K&!ZnLsN@lXgZa+w^35&z)mFgL(IsrL{<mGz@kx|=zJSh2mVD`W=+;e4518(RFRcge1B +TKV*4LDJ=&O&LC~eMD9{`IVGgu#B;clicXS9uvdqem#tK&Jr5wcJf)LIg4KW?ej8nsdg+hU|G$?&kiZ +!4*b_}!qVl$TPWtQef@*c6*F`?kAq}engC{MFPBk)t#q&iiKlzA&-=B6-cr+*<UfNr0DVlXQDnZbtrQ +*XHpjdH6!5)c`5-Xn0nB4ccZ_SBl<ArNGYK^{WJ{Ud_1u?4klY*8Xoi>-25d@nvBH)4M1Ai$JVws-0z +(DUJhZR0Qq9E7ipL-4;H*h{R0x&og_)+wBTp-)UYEvqpMr=2Bb4peKcykmlq`RNk}X>q2%Pk>du50vi +v*15KjbnaGb%x!X#W$CTy1~k8>xCj@8MbYn4eAKxp7TIB!>@o~p%2?x-wdpi=v^aKCbsIcdcwJH#*;J +CbSRXn_i1(o_#?Kq8f`N^92zo4Oz7MlXAC;ekfg~Ec{B+d8QPJt3i?+F3h}wm>Ga|dCa7N<aSI6n55m +v~WN=eD432holFqj8!0`ARt!Zhu8*exwOL{?M&U<-w4>xhZOupe3&DNj!n^tMf_&I$y!^(D0{W0kS~o +xOW)pod1y&o1B8vl=r}fo2^T@8hNtI_rSt!Z1K%w2za(Sr<y~t{L1j_U^D-II|ZEGquimduKss9dLd0 +gjEU{vB4V*0pAq&pY-LzPs+$<W|YT^xgb&V(n;olOl%4VXt}cv7}I{X$s>4UYVkBvQCNKMNWyuoQohK +LkWn1Xv#4A{*U=d7SKw}+<<S}q8T~xtHQi|R8Fq$qhRr%a{kSuH-ahJWa;@~mNi3SCfmf_FW}dyWwZk +atEBz(Ez&U=tq}e)vMqyud1}Xq5JBi8p=>t(_kuupCeA$t)F0X{d4fwTi0gYr{UuxK&@pC4Bd+Rj~$w +<HhgMi=gTE=1q#sI&joti=nhd}UNZGf8C8$`oAlZQqkukEoi@_oI8V{HcTbw}vnvwD0klg`g%>_T6Ja +Px=3+#-2Z#<5k)kwwz{V<v((v<O5CM|SZ~v6mFqoVEKQXDw#hYkMW2wrS60I`!t{BfIBABi}ckADU%j +h%NXVude2Q8GsmPOtUw%Va9g<O%%_ShJVu8Hb8?Nv5yM?&Y~~+1BmfOgl***Gv^IY4ysNrenYcDyeZd +}`=tMc?F$(#$N11JsOP*C4U7Vv|HTAERZG}wpTFn%X{PNtFQ9>h&N^UPCqn_8b)m$ZSvAgicEMVo(-6 +TqJLfghm(W=Uymr+fmPhE6g6nsNv-@)xYw%dVrRs2)&p9aI6V%$F%o&w6*Tb;aqWbighpW8~tl+Re8F +dImtffCe4Ptdh7~<TvKZlTY%4?vpSm&&`aL&#P-a!tAkWzWY`ZNLDtfdQv&1~Rb#B?1U0#1r!*!zoZe +~nK5rPEb2{D0}#pfONk#{8Rp{YCc6u=Q6F=QQ>FRjhhOC;sYfHY8=Ecz>0P)Mx?(^%~@Mugw7ewbN^( +6MyaW+O%>ZxHZDPsMhFz!_S%gEkm@3Azygwc|hHq1Cf|j@d&wE7hd(<XLc*#vR-hI2Z5^#>9fOmxv)f +u##xkr>fN`#c=BESfgrGVEJ)-wwBNzeW@><4zCk-S+&GoeR4>Eo5v~?H>Wk*<-ExP;iKMBvXV(4@(aV +;`-X4zJ1Y&nMWtvxUit;0PJX>NS)58vd#Us`=D_%16Mi$1}d>&e8dvh#!yUe2M-jS(&K6IhE<1kB1Ay +?kHV4{wC*nA8miDQ`hlEMxbEL><YL_%Ne;(iw?3JXDaTOwZ?SA9&&+Y<BAUSlO2%fB239+Nm6)CuG5( +nkWzuBqn@80GRy117MXQuNxkrw})o#97!y+?5h~xQ>J~gR0!IzOjvWh3}4-$VD(=f)0BWQEc(ufuvZX +CUOzL40M(mOjMoX>@b;ALEy3z;8FM-7$uy%4(8BG=|W?bzo6}e>DgNxYfN$Q@RpYbGgscKg``}Ioj@P +qwzpxd47S(`8yUQ{^a*}bb*?6k&#=XO+YzdnS#QPO8YN0BvWD$<Vlg*8e<xRK4A?ulk|H|sPOhXl@Oj +7LG861wxb*bJJD1q7<7ufbSCN190HS0cjgEBerpt>kaBqBRpIMXH28J}}U3iPVow;7|&K_x_e(%!nRA +X0$BUt!%X;Puoa!*X(c|<^)Ozhy^;lRWTeS$j9EQgGir+Jfra67{A6C&$G8mEkuw!Ckn>;RrtSEPz)D +l2?;NVv|3ExJg_z|o*f;fjfL*x0Hg+bCs}WZETg21>ToW-U%U>|3G%otj)>few+=6@oKvQAlrSXJxWw +p`mh4g%-vdzrKa;_yfllfi+_tOm6WFoRro$urltlC7#z+Y`0NSUQ37aLl!D)OL-H=eFs+Z?{$ZxCG7T +g7;=Rl!y6rd=uB%Kv--fPqbT!jB&;bxzr&iKwOC_|R0pg-mGc}so#An}t4wEAH*}C~bbl$|rOTkCw5l +92p~c%!oA+SYp^#M^i?&MN*BSc24jfoH+;a!Z4WVneT@_lY?GUOhr{j^Mb1n%Tv-z_u{=i0AHtNvEcg +;0<B@K<$1~>0q&d^9F4uZ0jH;Cixcbqp!U~;~U0>3}wC@c0=?<t&$W6}2<P9-qHsn}e-r*JAm$rUqp^ +?fjpJp|EkV*TEBSHK_zRRaq;>wrc4^w0-fIb}vFkn8((<Y#>HXBP4I9iP{@9q%_`vONdP?~qvpMy=n& +L?c7=eMbpApyKMA=~b7HC3MySv&M`ibmjn4xYk29+Itfm4JHhmb%4rjlUDa}d{kjFa)C!d2S>4^5uz3 +v`@z$xJ*zNBekq-;eb5i9QrgcDnOq-O|IDa<u+_|{_6N>KG~N0@K%=XAmqclZcXKoI^t&}`(-Ll!*`q +@m@GJahqlF)!2=h6B*1~(_*(iI}web$?d*s_hmgx<FS2}_5grKavz&<sbZqiH~9YB+SByO-r`_NH)2q +LFJF#4^pCREVJ44GLVd$^5m{f8I{BiaAxuwmr&@jHt5PO)+Rc=o#4CWQo=bzpLriwXZxgr4UBa|&Uf! +9@%<jHZ5+n`K1ZKFZDVm`c$302+Ya!jx_E%H}qKEAzo7`n++FO|gCY$Y*O{VU<D)%!I3>HO?scRMN<Z +&ajIVaq@8&-;Eq02eG2+1j;1`TO#F07LhAdJ`OrWcC383g+c^VWv{Gg`CK4Htb1sqtYG)V#@qZ`b$7z +uBPU+^?M@Oa;4M4ojCkWXx}kBf>sust&^mPDg{Y-!*rU~VU`25$5N}I9<VRt|pd|WjZ|hKaip}dsSEw +8#Bto17rVuBlUm1s|VeH-GD#>(Vy8h{nylXK9g2Bd8eR}`uk`ZPYK3TTYnCnliE2$PvP)kdQu+JyU5{ +5wV$?lkHB5q8lKiP|lQU6aXwZiSn4Xp@vo!V6dI}KJvVdswG0@bHzN$E*ArK(b{>T3{KeIfadvkMVlX +LJXEz%qMlAQ8?y0+NG!EA2wd89p7@G@b3Uo4~4OD5*Xtf=_60#~pyq6tsuKiK$}RKw-12p4td&!%CG| +oAIN$jk0&*Hs0j|1~!qs`zHMAa^<-e{7+cAhX^fy;!7J0wfF8e%96kl;f3H#otJOke|*<$LP7zYb)fn +pt(huFv%3^#2wl4r)7}imrPqvX0SGqQIPkr+%nu=i`9UOH7(GC3Gh>8u*}jqhH~WxqoGo(<c;{4OywL +x}IgI11!dPsnA;_F{1x-c*>4=z&1%VYV0mmJigb~X0%NF9A25_Azy8ucY$l+}FGsi$Y37vJpoc6I`aH +`f3I2uNHpXVZTCnPv$hE9xBKU0`xE`YNxlyt{P{<93TVD0~GE0q!VXAZMWC3MySi!ck0qV%V=j3e`#g +vt=WqJtDMfU!V3g8%_YM6%jQz{QE?F+?xY&~V=VxubL#l&x!SgAw;Vh8D8x72qPV>psequ+Hrgy0Q_z +`dGj%N1c$C|3{q(y4NMB+{Sr^J`n^i2j&PAw4V=#4CWks;uW{AwX&h(_Dsj>_gN+ZPN3z8XZZ}9*}(5 +l`8qX%5#P@-${u#>-*dFd^y&LRR5BHCtlG$y`kqD-w`0B!GitRzAaeL-7Pu2-9@$uPX8eC_%%@O4UPc +?1BSaHg8p~?;3GX`eHWuQ0+W<i*ovCML`1hTWhHP%6j7>v72%jE@Wk2YbyCG!5_zyN?sHwx4QNbTNjG +3|j(XP+v%8yWgWDWk<X~bB_A3KehvHXc2X}~?hpE#Ep_dS0Si-l?WCtm#m37vJoQmhlescO^JpKKwR` +Sp|CUmOMe)akDoyr0Ze)r}ja{Fxm&%!8lhwh`yxKT8)44l!Tzg}?PPr%k~H|2fRk>c#GD2_8QSR}5_N +eR%YN_wqOs`ne+vV;4OdHyo;YJZ=QGUIZ~JWZVR0BJgzp|BRs3VH_2}EnMV~d2m^9%IT5I!cfCDM%Hs +)K=x=nkbLij=2;b(&I&l|K#ff4jStV(O7xqYARJ43>;w@w4j1`70-bmhLt!>6C!AkBff4iMt0xSPO+3 +*fVXyVWc6b}cYmzSjpqtWo;zB_^en(|Y2m<>A&f|20OTt(N6bcvF5s#rz_7EXu1vPa{u~CvSKtaCFiT +{B_cpmCHwor4RrWVQv%Ck_2U16PXP{g-yp%y>|7HSDpXrWd>EeORi774#WJYgPM7%)C%7IG-x5c^4uX +fK}oH1x|aw4oW{e8`iJ>!3u(a-#{#0m9I1j4ko75%D%2ZI(Pl|Gf>l6&R^a1dYH(uzH0_gP#Dh$<jL~ +8ydkc!k}`z`Gdf}M{oWRv}2B8Y8vVO4*>4hPJw7RGlH?BGg~Bfczk9{VB^XntKWkwOTb(EjTh8$OK=Z +yoVm#8GyKifE=|>iIgZ_tMunCOkKA94-N^IAG2`g&>u?lU7!s9Fxa@|U<vAn7!$xC?fF)woJTvK#wD; +8DLZHy0ZDQaB3*ro}%hYro%gwxcRS7*GON8sWrFp1tK^xmU#hzy#^2Ul}Up>$S*8;q<djiK*fobicYK +q%1#6BC*in+a<nz=lWmOj}898zfn{K(-r6h$bAh~2zGqycFqZZK-hhPL@07Eq0nsSSPRA-|@!JX{IWC +<^aRNK>L^(HuSLZL;YA=^rRi_ju0zC?&Utgt~EV02ShP%eG~H<<T~Kid$wn0CW}WXY6S4#fG&)=i9De +SJ=WjrW?aA6L=|z&`F~c`wb200n=2+QmE*dh!QggDabXCuLeUyKOHjs5by!PM+B#OQs2}+MmF5M*&qK +&Pg*Pi3VdBgH<$<m8xJiVAx&W3SvJ7{J$Hq$hk_RA+KIR=BGLsgoZg*Yn2zA#3=RJX_#wk%z$XmP04F +~0-T>TZu*tv~Pq>;lp8=mTJOG^8c~b(;?0=?i1q`Qdc?_p+`3$FSF+bk}JYX=oJK<`+2Rjp%&i7zv!s +7XU1^ArdU=ybS8cu932tJ2rGxeGOfaEh~ILU__2+%NV=v{z@``lsh-)Hg_4LdixqG4z4#7kV`p{O3iK +4NuP%eUTG6dUo-TSypT?}r}qTauV~97+-s^IMXb1RP=-Fuykt6HEJs)QGk8hSZ4F?uOXmp50&=Ml8M? +usIa$5SyUi>W6K4UvZw@DA%cWDv{|?LuVau$3Mn2&ck(N+C_M4zQy^=iA{F=^0evhFAT!Y4|^L8U*$N +EJt9+C;u(=X_DC9xV+et8zILF&*xh&nPTQD;fL}WhzV)c&5fEq>2^0#-J9*?OE5tlwr{<8$P-PxAQ5w +M|xNY{h5ad;eoVfa>T!ei>W+XzSSc{k&J&WOUZ5}p5zV#>`A@J^HcqE~-E?B&K32CS<Q>(s!=Xi++%b +YLX!-Vv}3|toGg`t-3J_M%z5}KMy0yc92!z^&Tvguo1IN~Y(iZ&%Qy85F7W@;c2wu0;L5jt_$VbBO-B +R@vApMsjHF@+z`<3V{78cZ`|%$56bSe-|)6FHcB4hrEy4(4-7(yoS-mDwOZ8TS$<qCvIW`f8oAE96bg +aB6WBh?5CKXcRVdcXW}6?RcM1Ys5c1?3NTF=QC$`)_z>hjebwyrBv`TDqJY@BI&mRM9dya#I+OCz6|n +Qfa(_iC&6IYuwm2S1vZ&jbv44yJ{?Hp9X)}9^;d4x#|&oUhP#JWumtBMe#e8SPV3iF!FHbz_l?d?88& +kPb4t8}T4bDWfZ&ABPpTdfeP;!R3~4R&@PL2@BgTu9U<JpjfRrT-CUOY6AbAc+N6SF<04dA3)>C7kz3 +@f+GThK5{gB`}CR{*m#6n6FiNMWj_!k^yz&kq%s@6|lCW%|Qeoh#{>nB&nB01)^ak%P{QkJ}~de*vHN +=-PD2&4wUH}v)Glkj?zg}zgm6*ez@w@4LMgd=1@D<Hw;vM_1X`%pq>4)Bf3wokeQmT9NnZ)1|efXrVf +8VU`*6>v<1``9nqB~;OyaSTpqKyXVccte>W*cb)YYr%aWVi9vY27*(KP(Q6J{Xw6>2umRKGq7Vs3t%W +qh+gXrEY}MKIJ{{_5r;?g>~3IpcR(2G79Oe$)MUxArg(VWEeM<NJffWnH0#3n1!P340^9EbD~l+HR!x +!l7}(wvimW^sGkT*&!(I9KLF8e3gBt_E*7uAXj9jEAjLn^Jb6X$k6D`GKg*3oX9$}ST5VMVx?(ndOf< +^72gbm$7oF;M;?lV43?p%o9NwpBG2x33Y45uT6&J`j{jnN%pcMzm;+)Tg!2AI8aV^TWbwN_AeZu$bwH +XY$21(o3nn#O4%!WD=aXpI*!*r7)i>iZ(yQwt1vCr^t^gu)p-+#;H63aK=9lctF<z5d8SA#E?|c4nCt +GDevkxCJ4^z?sD==r}G@LXmP{>`W*?Ups(Ytap1MQQ@I12%ee1#2616Y48GYs9wo49na(h<%;b->bVt +R^eLhx!58iq3Vex{yw)Er3@SXOtXHy-;*$wb%8*k;rV={qf^&W~0Eu>?^$PJE2<$zEh#!ZP3*rgjtP2 +&NLBQCCyl2J7I>oES=soVNVSgJggiMBjTc#Zt<XT`a7jjC-v4qaLV8j%V@S~u-)j(1<-tqVF3Q?#Z?+ +G(xx+0hnB4{<hraX+P(J?_qqo_o_z>I42B5CA>Bd-e1N%$7(#)-%`gOOSLal}<24uKFQ00vW(`H6^Cm +@qNMPrm#NiFV9ChGs)Kl1Ova;2gFEhwh;`y2FDm;_P)kW-y<KOU#Xd!-#~}BBnr`UT>W$*Bn8`vx*9? +FMlkH%%zhxGUnGmNO^R^evSAO!9t3Kz+BnKVFHfta(Kws3$Jf10i)$i%vuPZ4dRppFTVZ*o^r8D_W^f +{iv32+l%lz8zvvTa)`1}rW6rQy7nmUn0Qp4WonO=b6Ce>unr6e@CiDxBFICZ-v>~4KcG<&)r=JB|N++ +A_;({%%nXn6GE>PVBG2q1_!h;fvIhb551e^-Q0)ZxMgN&+V6K2pCzqjzk?*<lo<Sz#Riz?9DxJZoVkF +g_IBx$?m_vzN%qGLiJ*EI8-Z;~s7iJ=bhFop&rcMd-1Vxu23p!gqr+C}F1gJG>sa|=3if{pDRU<y@;! +-m|K(3ulFMlEB3m;f;qh+`n;j2IF_hXO%uOc*h0ISnOr<^)qMM*=|%iM}0DiDO2Lsc)V@P*p<MM}%Om +VBh*QpEAmp7{T{gbi7|9za?^UaVWk#gYR%`dbX6uNLW_nMiAL3OY7D800>01a3OJNy=8Cg?NS`G;41Q +x0|sbSJXvq%9>tRoHCfWfj&SX1NhXYGudiLQY8E@JL?KYQ8;Y2ihal}zEGr&f!m1G|FhdJNgLOzK?wX +ADX(aK6E2&G{S^|SOH?j<tOV?}vOSL_RD~U%smSPu<@uJJ4pv8wHJQ&Jl>_KoCnD}=<!Ei#F4c-z~J& +(bh+9^<oM<ab_N#_$5_}bYly9V&NmmSNGs=8mYT8h{7!6Da;PYx{kjN8NQG!3V%0hFRTB>Xde&aB_8w +MPV|Ok2DnvlQFmfav27w2_5ZxGaPV=pk2F`Iz?TOc=+m+c6=wF_4AVvHMdJ6;2@8{1sX3{yv1lY#D-^ +Fe@yTux8?oP*aIqi3qUK?3EW~yhZVVh!>p|d*!X881WUHEw8+cBd&*34F`q~87!`#9y5mS0itQTSVnQ +)mHaY=(STK`d=v^lS_l!cB%JcWAPn57UWJ)YI~v4$R<?~pT~~Q1B2EHzD^X}D6%iYBGhG)5Yz^@u`zl +SZx=$%%A<%foD;h|kTy?Alm6f;o(1DH%fMF6}cjbYyKGR_oeswQWTyQCSb-!65jhBuOB90XW5<2UEji +I5BKSUJw2?cQ0g_2)jv^3(V4^9Iky+f*NKzKAV+a>{B;1U(4V`S@-(Ts?rJHCX@I$#qeq>pbz>VNFC6 +SX)-hUlVXf#CZzpaS^Nh1$y+g^7L_-$#MC<+noS1cxU@;ZF^Z=_4@o(F~2!+Yfgsb2induO~%ovr$r0 +_XyyPId<#QaWx$`-~$5nV`)%pq9zdy5%sU&l>9n{!x|+idzHi}kHVawKEE8~5h7et_>J!3RdKnkrD88 +znf;!J;G{xva)5{9*(hai3k=Ioq$~ipZ3>#_Po%((M%x;$*70T;T1e=u1MZk53`g!BRt3hAiMQD`Ttw +i<jKQ*v7lbM}VoQq=BW_$xBl8RywUPBn7%(J0or3*mgow_9VKW=}yZj`~7;v&<rn%p3Gh}q+cb;VQXx +{IgAvX&AduLd{mHbo;9M<1ue~p;0#K&Kt)fJqgl*V3MS)VdF0)je@dhCuHj;@v&E|v7@==(|}tr@{yi +4BTT=&O#LfU@O;yA$yVy9IdRBNk2_kr!Tsm?e%uV(~H{-uH;fZ=3*#Q-)(yAyNj6=El~CY`~&tpJ^Wg +rB*M*2M1J{`1lP146%5D@R-4L!*IZGgakza+PIAYy)M&cot_KetP5qgw$EUbxJ2Kuso)DdafWb&#xNp +a1gtc9bQ%$FfDk-wD0@kipgqMDdx}`R(KzsE1mGxe3sSGB1w0$;c>#mz$?ibzNaDFrMjvpx$##SnPvW +_GnB_kOtS0^&!LG3GlIALS9z##?idT&(fk6+fPb6W+Sa!uH1VluiAd3Aar478Z1p=3Wk88uY)E3K&dA +@*?j}8WdED)!>M}#SJMjcY){CFNDPvI`;bZ6H=^Pt7CzOZ^Jd~;&Yce3b{zC?kHHTnpT#+z0sZQzIr9 +2=kMp__oJm~<!_Mu=wKp~<hyXlZS-L~n|fT0pF96RL)SU$C7VJ0!+A20+}}u|sM;cSAV}b4+lK9U|2z +wqu6_3xn7V-c3^|?wVx+6p~|yTq?KYG-F1Jc+7+`;WeEj3Snv-BY9O*NG^6HsuTekD6y521>Ib1`MOt +ZdlxXEOIOoNid#a~I@aQvF$!L~W{QTxXyaZ_yqd>!n-KaXJQuJ?AO1icVj-m2S7k#XM}zXAV$p#q0>E ++1*)8~zQY^m)g@e6#ot6mljpi1@^H-q@$w4wGy@=&b87#GsP!te7BIxxN@U^p95zEEUr^3_m3C{5$41 +UUMCfDQql-1bAyS`L)#6)XvlVj>1Eqq40N)rp|rkglRPDP8CxmzB!K&cN?G6Nk~n#3WpABKdm-j9dYr +?-58VnDsWo!jrk#pxHLsK`{a?l4OX9^t?-d)#*HDMJuoosvNmDb=(_W%fjaxz1>j=OrtX6A;2dYIdLY +1{qDuA@*)@?y*Zk?q+8n1KZ{N{8+rjzREL)fZ?<=A%?E!mM54Cr|DS0$!WqkSsy|JFI5cU-|%y0{pOW +)LSR16fP{)I%U9(ixZDHFZ=jmk08eS{uunj!u1p-7P!Te}$gb32dcNY2;Yd0}s%2befpjlDLdncSwB0 +@2IJR5`akyb2*PLuP#O71S9V_S^-mpO|QUE!1WJq8<fQ~eH4G!_>g}~6xY(h{no*jg6fpHpEBc;_mlt +^-oafGRF#K9npafNK{^S6*acpq!ti5R=Pmf8DgI`r}~3j^y_Bs0m^wwHt9SV0H~DODdfsRsm6*a|r7L +g}@o5kWgo+9(*$Jp_alLQTG=;v)&2b-|n`jQ~Xj$8$%x?_DA2)v;rVC?R|ZCHCp^(i~u1ai^20b+U1P +`EZ>ElwLU`HR>#rP>7AIqK^4SxAUTX#;EEYD#G)^a6H$gHd}Nn827u@r5m2S<{W@u#HW=K@ooEG#3z* +$?nWR*!R`lHaY;Mb@<mo$&q>7hOYN%p1DO_27tE9OMYY87T0U<6B-WdrgphAYf=O?VbcP`=Whd4bD-V +GX51?7B^Yd6!g7W)VR)?&2uR2(xH;N0cQa*x3m;!GXOeUd#<6xtU!6qH&mB~EcG#0<luvr(l>+67teO +cZ@i%WMS0*h~h621I3=mZFH6ZA;H<yBCd1HRpd;bij;&6nmK{8F$7f(b>W87zf-mNdl)ltxg5R1|Q(w +wr`95!ULOmAi}1h5DQw98d|FL2K71Ggl8K!u2K1#9r5otxiPZo7E8IiXj;|;j}ObzTQ<;Cq1k~k?%kX +KO3`SNk(iz(98uEc_d^dMWP28rWI}8Jlx+(u%$p2NfOb~nom$z7K8;7QU|I+1TR1=PD;r9i<1vaUNXo +}b@9p!F_JTc*8>wrnA8(US9V576xZ%rMGVkpyc-JaP~<z2t}l%ya-W8I5f@Hs-ZqAwfJ0IUZ6w0EL+u +^+1-jV!aflU|7p)|W4}Yfu&ZobY7&KZQ0y_w9ylpkpbC?LF)EL~FK$t{fcux2N&aGG&Y9*8yY6bevw@ +BbsYOoi_l)x%+NdNQ}!7t(wv4pcR)O@gHv`J&}QUu18uFWGoRYCodw1W|J!ep<!;@-HZEu^<Py5%xq6 +`)um*n+n-Dmb2J9gXbjMDE(uo>#8p2&!Am7YQecU?}N*0Yu^zR0xm}5TN}X)THC{!yU-=XMDEI%?h_m +cf=ArU@-YnhXQ`>L~LVVi$3Sq{8R*e&bGpk6BklP>4P}OhYW_>>)SR!G;=KAyFPH+;Hk5nvSi_1&HC= +q*Wbyx-Z9SfmINZH8ccn(mlGi{1i&?X*LQ9kJonKqEBa_RTW~TrO47@-xEP!8%d-sTgB7aU@z^7;QH& +@4X|ZxX1<BJ^5O5usz_e*5U_D{}nE)X!V-4_Tyh3o|E|!=Zxp_p@H*ds&J5>CJ_j`dgiq>ZfAc7ll3& +JkdrhMCQE2j`^)(yL8(>@gu$Io_sZ78-2mtjjApNZB+gpdV09TShh`4;w8Y?Clnw{n{_Vg#);qJaCeC +CP0f_B&?WQ`gf_DW%FHCoSbvSq3{_km7Fz(bG{Wa%hnTmr@QbLumtQMm*i}>Qridd3gW?Tz(IRf*;!* +;&yVXFWuvq197P|6yKLd_ZOUzj)RWW-uIy<N`Iux|CCa7vExZORhPjy?!iGx%IWS?1VGbOt9<-z=+yl +TR4Shu!pOy<qeL&BYMLVND&=fk`eJfQXI02nOXa7nF|gv();PpStxsE%=xN!X;;o(3dTtX4d$WKDhB! +n-gg4!U^ym^2Qd9YCCkBAr4QQZz?+9YUF`I|ONd-lCet;9m3XW7|iCHwe8joQ!2XI}(<^neB0;45oMM +HuaWpRuNY<*t=0?g?13g|iCE~1Xmcfl9O5<2UGaT#rhrwCGZ0LBtJbAb8a4AG_<;n7Jj`f74&7Xmix0 +B>lLju2TBKIxdCUNa06hRs|+=}&VVwETE5-S!@h;Ji6AU^d8RwyCM$H-_Y22o^P&*)IsTMp{=N_qus5 +(KFBrT!eTSyN`_bjcr=NIKSUGAt;i3@d(0ZWuEP;^bKNJ(W8J9oM~^Ua&R9N{%Xrr=nc0Ec49BV%anB +4rAE*-n2<5JR4s}$_U2z1B0fC<w?U)m_$g$#C^2MAVBAQ0*r!6!xzv~unD9rUrgigd8g8T4(3uO&8at +dYrnp5i8626-x?7E2;Y1t(Y<5gOl`4~<F_9wyoOPg-`sD$LP0^f4Da?<BL<TO93?}0i1ofRQhQ5_>#4 +Ut=^AeuB9U1Cigq_8Nb*{qlHVnQ-g%asW$BYueKxm+Rvw0}sbT&f_BxlaXIU$Sr-O3U@Ye~~et*Bm1W +_lPhiv60=V92Pv%oae=@TYWY8Zfv>orrCMDl@Y2$cEW;Vlfa3J>3Eye^Vwt?*t9v+P1Ey@oV=*u<OoT +G7`C#1B><ly2GxS;@72Dgqi-fB|Uc<Fjh=yD%WPN{JQ}0V;~D)nkevNhRh@=llLd)fHQaqu*`Ee0?Oq +53ByDtE=3sI${!LPj_PpWfRN%-;bR~ITw0_LS!bP_6eFNGTX4!?x)(8IIKA>UW;oxMpo+}R2za*{-Hc +!;Z)k@M#)O_8jTu2#CM2A0Mj*$=4#F~=uTq4J;HwlKBls$X&j`9oaVWSFS1Aq|!&fN;TO1SyTq+rHRY +b5P@JlOrB2KtbM&6}BBl0c<n8IC({}Qm8_*a7QT?(J!;x0ufF}O>CO97cY2uEgdW_|7ch!A|2f(kUDT +JX+yu+XBoOMz;GSYC}l#qyR#AmEu3!5NJZZ-^9y0htd47S~$mjFHz`MIjn;G#&c*28~DH<^@t5B4*|V +Qi55@>nLv}uY*N<HG%aL8R-aOWFjLSj&^2cq@$}QKTNG}R82}Z`v7*FrVP7Cc>`r62wYcC{DF&v678r +Tn!t4l<*-B1y+Ps&8s|lnsUUG&Fd<{2DO@*9s2My^N4Fv}eLuDH)E2}f^ZU`USmYL?m6%e9p&(YG{y- +vRqCSv`cuF3sD|6!mf^%*>(Tm)8m;sqrJ|Vc}1&s(L^2(_VE3X_YM%&0UhEUKCH<GfAeOd~Amg(Qn3@ +Zs6<Jxh{&~G+bkan9r{VPG(7)}K|b0MtsWoU(^l;BdlXF6pthu|4b@0=bpoYM`a$V*X%My4F2kl79m; +40*nQ)aARJ{Q6;J)lEaq*&)ZZD|ex<sHp2fq7ZP_Enzb!a~b~T!M;4bO8k4{2o&^yz!b4nAxO`%8l0) +2wQ7MK#9E%u|%si`pa>AY<e^pu?|m=Ll8(M&t<9_<ZPv?jTu2Mt0*9>En)mN^W=zOvo5gtkkAYe{q_s +EfEYvTRp!BjQHc|NhwOCtiMh2<BR-dJd(%zl>zhHJAloZn$xpIO2|-{8rjsi$5~v-a&3x5<ej*^ytOJ +Xd^gJBW6e{=vh@n8-I1zk~M^KSr=@Eib7Df!dcEjn7-jKoc8KyqL=^3qn!E^_3L2ydbMCPc1%LVF?F! +FIL$YIM}_I#~|YL`~7y?g~rfqhuMwjZSh7h7~=9bwx!VmRGG_XtWMHJ`zB+1!^mMDlb|u*#xXbI9-w0 +q7H5hYaRuKgOctE}+cD3&7I^hfy^`JVM1d*YQDq%^%pp#jpxaCmbWI-~8dwA$*MrPQ?!GVj>%6A>hzF ++)AwwA{%63qiCMUa>SotfU-{D*;fc|$SPwsMCI`5K3YVq?}|zUd=1jR>(U9{68FeEei)49R=d7+KIm_ +~;?xe2Hu()$0bT$OT`DrKN=vangWRFuW0-)k?N)~FPzjA05|q=Y2+VdC2{1CDYQkVHK$gFp>zgLP3<y +Im4sO$FIJMysTv*RJcTHN)DPd%umqc*#)5JzyyXB&A{J|>0UyZwVcZv^M;O=V#eN8D4P4Rb=NTR;et1 +bP`;lwc`JBJeiV?|mTBRYo@p1_L3iHSgMaYz+vi{DuSIv_Q{c5*@sez_UcDn6ewY~}#AFCGsWHgf<+4 +Q#})nFEO7XDBD>5m?NmkP%|!X|On<?}))-jvW$aMW^vc{#0PN5w1<%O(jLz$QjEL;u-5RoH*v1#EkVx +v8>!giQxHlWTUR#Qnu&iyo0-Tvo7W(4}uWfp+L~Q1P?O13}awrmrWQ!i;^fHb~c1b#P$TU;Y%Dffkk| +Is{+n!s9JQE5d8@2THzt%5xOP6TMw|cEgl0QHo6GT2>;Hg6koOO<K(9ZV>*Hz;XJvpcTdJn6ss@`%@- +kt$ZDw&i<G{NBXIoS-LZh@_sHf71_E{CL`43TePixeVBMP<g%aPPm;!Odsh?EW)|%3+Ir~R|tpd(EP= +3m8h{q$VSWu%gM*=u=LTT^cmk7F8M5Clp^pqf#aXxZcq#@1-kkVDqDKBnaD=2*eeS|%?LWt|e143B4g +E6Bh+r&dqwn%g038Q5lu7j=23vjA{ZGD@AZ2VP((pnV9zUhlXt^{d%6JSezG|k?IfMUwNjT5QU6#d(l +IW3r{Sv?N9>d@Vy*u{E?lPZ*0K}O6*P8-31-~~TSfv3BQY!iNo;A4z%?V#vv1Ez!`y9JFBAr=H83;9F +^p7knjBZPy7I8-Ta(^cpNj(cdKMdG@NW~NUm)*hqZr8xOE3Q}_3u_vLkE|^y-R6Q4OLxu$Br~UDMNl6 +*Wa{-)np(Jx~Ex-3S23%w$<GyAo&k@0*b-G3fYjrUiQgYJpR6=JRu=unerfn&1VZs$G<x@`>RO_R4zC +`e|GK><RMMLBA{U&2dOOXzY_nu6erAMUZp=7|sBeOWdE<2Xh%$;&$X*vdM<M<XG#(CrV&>V@k#ao~Fg +q%gz@G-$Tb7#z8^O))g`6s2dFXs|X-{_bSlCr*J7f1w;CZoh?f@MB193UiIiZdHh$&Q7?{FYy{gZ9bS +ZgC7>iesTMgX#FkEH<SuAS4eY^7;&$b%6GF?~GBs5mwJ|a`PSe9>_t{U}QsMM{3>30ljKAqmw`%h-`a +oMj_=hxR9tqC8_rIaO<hh<=o*MjUf1h;oH*MZiLO|s`wBee$b81To$4GA)_2o4;heTA`X8zsJa`q?L@ +p|>rhGGJ>b4LFObcL4hnfe414?=PQgY&dD#kZI#-30s-WZq50QkW5bSz+fb$0qhB#Bd3C&ag|A%0O1+ +iBz^hVtFCPBzsmDVlD8+jkmx<7c+G4Pm{Te2{3<XdH6uVb7bDmzMOsev6V?4V`D!hsIAYvPw^`NcDHb +&AVXx8l$i*>bmGz}p_2^2(1~BbmB_lPXMsh$vfsfXC5p?Ljtn_O>%1DCDdOs)?Me+bqNj;sVhbBV!Kl +_~-+M<BmT-IL2G&cYNf5P0OA9da6;HJG;Y1+IRfe#St9VJ9e|^p~O4-vZ9$<cd@AC7;sSu8l|U^=$*w +o@i>N2-#fnj=0UaYI%72@6z_QOvAVldY;15{<Sr9kKuz-7uV&%6>kK7?Ee@nSoK@VFlB+`?#IRvF#n; +r)3F~w3Mk4pTB?%;S<^a<M!D!aKoR&v`6SWzed-HYqF@a_sn5}<CCindD5u`=lcgEIe=6y%<Mi1}Bo` +=B3Nm?*$W&^*-)EHb^_#z{9*zE8(gOPptg&%Xp{e>@KSm3Z~fJN?$2%s6+e6gj526*EPVOpOm9^iu<U +pn$ML-?g5Psroed?~DtgxfE-34wL*{_D{r<;<!5W4I2J;-xYjp0B@}+xt`RKdUnRyM9Ig>eZ{$rWyqb +>JIe#fF1XndQV;gHfZR~BLE6EZ0H6jfQ=f7o1;kuJ8bFB02?<j6Gc|ANek-(cGSYC-Q&8A;Y%tzZRkc ++_N4Xr3HDt}HwElvLpLU#Puu>IT+Ui;BG{{z?v;T}`weW0cBg|@2FHLI`GJ?|sD(lHQzJjLJ2mnH&(l +_ZCNoOGTKSoqSPIt4@08k@wiANtGxCG%r$&Al^Qn;^wcE;XN<16+K@X;{TG(-|!$o=(CYSe{5Q_WwH1 +!JwQR?1r)F0}tfP)73X`_^1V1_NGP>%AYrw<lJ4d^ThYQSL&(3c)+(70_SUF*4|Ad?32LHYFInc5iZ= +RS`re!b--v%JXk>%7YAfBH9c<!|8N*XKQkH*EY`*T3a|qCm^$ufINf^ytwh3m4H{)p8K|s?n!6&wE$T +dW$scT|MvJ^rEDfc<V6NvdLdWMYztNK2t^8f`5CwDvHgw-+Xg>d;8*c^dilc-wdYH<8R(7_o@2N+l$A +)s_Gx>FS0yVP5QBy=e<*}@GjCk|3Pg9)jsg)=RC}szn^_u3+wUYk6x6ALGN}ICOx&w>G@@rDS`HiEDU +>5-YfNcf}!ePPnoVP%qyIti;_)Q^a9m{s-&uHquMlW|Ms!U{0YzQ{BWZ$D?BxSHEmbq{})h80|XQR00 +0O8^Hj4?U)FBu4MYF{v(NzmBLDyZaA|NaUv_0~WN&gWXmo9CHEd~OFKBdaY&CFUa&u*JE^vA6eQR^uI +I`&X{0fd-dn2E<lw>lqyW<n*o+OjZ`ku+7V(+8M$K^wdkjynjYDmh8W@`TX?QQ@h00JZ^$&NESs#GkI +Km%wr8vR0JnrHLi;$pfimpQw*2;%u7%gZ3VEV5)-vJ3wEAc*3dxQMg#AXujHB#YQZ5|=Cwlj6Y?K`i3 +M_~M48QI?O3_>+XQip#5uIV;0S5*Ecla1*oDHCq=C9*6?vdcg#UNtPsRQbHqzto}ZaSk9vF<4O5|7aG +e~7je2+mPMJfaBjXTvul>dKeODd1f|*KGEM-hXmqST8efJ5lV#tA`E?V*#j=d$n8y?7Y8j?w)!*TR06 +xVcoUm6{VIEEZMKJ2Hn8fkl77Lbt{bROb`GF|LCUKa&PS~6QjDz5cg;AW&>Iai3EW`R|uKy+=G}Kc>; +z3Y`v(x$~y-ve9qwa{`SLHl8PD?h+Lqzn4EKbY1fq7V7&6891sdSbhC}H%kWl_G#au(0h7iF2pmq058 +jMMe%ZMaaYzJ-R~{#d_05YJEk{)6(6D!k@@E<UnFm>2BzrwLnNw;t?2c<>-%(|{fiqik}ZPVdox;jh6 +#je@_PzWq^-<LESBvV-71{^NQT=Cfk|kQx~b1|JYw5T*f^4gl&B%hSjLAU2quAj^YkoUl<6U$Y>){1? +z{04U0!1UC7AKpg^DtbQ1jSFDBur53z}c7O^HWl$WL@&Ms20ov+{r34tjDOIgQKg7}iC&zZvjQUg+<i +lp7r~s8SU=Ar%q^?KGC|`dH=Zl0L@?X!NKM!bOAeDWa#Fu0GLbY<aMCeyloKN1vXISw0v&$@6KYzA(e +tH$dl0pmt;+{QPJb(6xzj{RF9_~~9XJSOb^5HL6Ww|(f^k}tOjaN^{Sw4I8<h$>_d-Ms*|BC-T48k&a +{OQkA7EZqT?(uig<>TiM<fQYJbQv6J3}QTE<thAr$$t-(cf11&sDSt)nt}J1E@HDj<uEvIgT+`O<BBR +(3V)M_Gpxsp0Ou*gI7K=K&OEpU(w~a<wk7=v&IY7kjgo_^e$qGKQZ-Dir8xa9Eg$$|SwWH<^p#W*$-` +%t&&z5RNzA}9vMiqO-@p3X+t=?-FW!87@dJL**2-VLxqSTHeOxQ91yOx#E+h~{uCnMNVv`K^wk)qDli +_rklIS6p13e7B=LK0bL@`CY!VdzwxJcRR;$ny}4tNFZ`$2$0L?ND_<f7EW&lKn;l$+c;s!{y}(yi-_L +BN_9L!&x=;wj8)OtQy>4XfG*T$&oc5o0;kJFR}|7LNis^cv9qgGQyQS7%z^&!K+xK&vDs3wt#7N0mCy +74~8F_<Se?#Cb){ylCO^b;3LU0|OEWNh%>qMUJzapp?rO8L=Rc9fNEd3>R5Z#Fxn$B%lQ5XU?L1YHVD +S{eybm<1{W|GzCkhobevL%TgE(^0Y~L^ag}t*3Nt*SR6B6P?;dPx-{N(DEcp17RLk<c@FY2@=#)GfMy +&CjkLT9QSwfb;L<iHEE)&6PLWY+i#V77^S=ZJJpp-<IMr32EoWC6jEXsREq|iE2l{|Gh7N-~jQLi>q& +UZUa46V0%X3&Iz`IyF$(F$DbEE<d)NYt_1&(IKR-L8cWy1LTU=E58l!+%-L6Xf1KoCrT0!nA-`0<j7Y +P#0yi9#CV+_$afU@w?e<SuHV<`s}25Qtgog#9r21cFjU$4ILCZrE5@f)+S|3FCDiXf*wx?&inl#KS+@ +z2m$n#l)+#F6-iI8*}K;YqObHkUsPP*P_n!=uP{6B}Aruy*Z`guw`GW%2V$PsBw1wK!3BiLQV&7BIx$ +;Y{=Q)Bq;<JshZp0rwyWdkHU;~%Ebr9@qu6ui9+|~rg6Tna4arcik67$9ROUIR2+-sR}GP}nB*}`Q96 +?)6p>LMT?Okcu8*S{wqC53-;V0mj0u));vCEG#-vE)9*WeO{urA(mA{5^l$>CX_|R){Km(Ywf|WysRh +9W#Cm<>|hwlEEWs6~5ofC0WH?`E3jkJNSCX5%x*UIitkw^m;y`lAUQigeX8Y1>+&fMgwy#QWDPjQ82D +QtsF<o>kEYrdzf;=xbLIKM6i!J}Z1#B(6IC{P}ynfztW|9laaf=1L*>N0K;lm(mBdn6N$v|ubNWRtoC +(|}8YmTFCDib*=L0qY4#S~4DUo6HHm)F80L+Gf6+M#B}VKYpzq9R&{;2_OfnJlwR&3WBZCf;GYJ1sqb +Cz)FnP$eD5I{Hd+9S2yg)#?J!8q9&mb-<4oE6FwVUGGMXnudojf&K*?%f510NEF&h%wsvVD9#ctJ^+> +BKb7-KYLAta?aqx>ZNOI+26c;FL9KpWFra;Zn=qAi#d^AD<&vSSvp2i`L%~<7O!S@QNfSaW8nq%eTtM +38DEyX~Woa3<H|2Mox5rMz|uSK3M01xYmiAkH+YuL=utZDKykPJ|RAgL9VducDF-9O@jEy}TB!PybWV +yL)9T-hh<Z?&0a^)_+{n!(}!V#oiNqymHiw1?7M!~pyp@fxg|A*0CePz8&^_))D9d*;K603RCqlu%U& +PsXzbL1S0PI82F=v&ZLS+~{k@9~Vd&rtwwuLP)Mk51_L{@st4JS|5Zd41g++KtdaUuoX2Hi&}}x#!$1 +i6`u{bC3tXdA1;VXVh96dY7$zgSb{B$stwmg&uUobu)T$8k-+jEI)xt7mcH+jkcI<fS7b2+VP+667D+ +rIyl}JN9}zqIZR=Hzwt=k!4T0E$R>QhFzufX|GqF2oxlcE`E%<e3D#^oGn6>AE<S7(@E3d-Ypnj_`&l +BC_VXJ2pQ7a3f#ac_eQ;NS%BS&HWMk)F#o8y?R!{D!!!rx~TWU{ux;+0aEG^W=mPua@XZ&fCYay^y8i +6ZWhX8Al!fIUP6rD5w?<m`rvxRMvEZ_%bws;z5pK_dgTwJsxgU{gD4G*s1T8iAI14oG{)CAeB31<s#J +`Z^muIj`ic##>rt&7l~;-_>kMeXOu6Xh7|ZH&hEiH>?IQva%=$IvWVGuvzGM;Ukk&?DjamfmbDmN)ss +Z49*YgR#A5y(qoVg3gB(O{JOtyg{o4B6+3p(O$=a|uykmj#(f;vV|Cl@z<agH)bM}>h0CO@-?l*G-Du +^WN`w2(?S}&!%Bj&gPirONX+0Yt$qdeEEx|IL=Go7%aA87V&zvRe#TD)~xTt68Jj}0Q2i<QQn4l?uG& +I=fft9K5w}TtH&~Dq?+XviOIG&<~KCpgB)=`Wt7B{m&`-lZ)Smh>vny6+$>+ONL7dj`!zKHPC6ww`mk +!vN|fsmXp-0ZK=8%BGXYbndQFgosTP~{w4Ap-dxt->{gnn&5059y*65m?Z+LF)#XeqB&!c9XV6{a%eK +!pa6s^4h%`R7IXmrk7Xm)ubvoZP28st~P1fZrlu8kzCFOxH?`XSwXslbG;+ycGP+?xlXfH!lD_A8oCd +D%x!v*0xP`9;%Fo!@evx$Mxe&T=$aW7SrSJ}*rQu*xcK>nbG<{YYn&1Oy02Q$|ABrI)PNHZ-GeD8`^6 +O~TygoZ2wuN`qi78Rzfw(?FDg^CVg=;FVpYYELaD+S6eyNP!<q%@q@lK_*ij@Uzkg#GP~xepJ^X|P8d +X#yhuCm=XKE#;AwnC<OjGEtRC2x5b<C2;5X%YVP$kMb;7GTo{|DNY8$lKLsRJvFkRlN`v0_Ow;yy<uG +5|l)V+IYN6R;6@0V5Mp6vFx`oq^O20Ka4+<Un6gr%)s#J9U`U#ug|E)Q0w#`LZa<4Jg5L8%i3X`pk4A +8#X6FjDz5K%A?w*F^dj(y{ZA>kR)Tyfk8U6Fpm<Xooov0b{)KY{}zXbmVg|sK1s;8b=dBglPioMiP2e +z{$#@x$(84^iACv3I7A#nuhNV^s@#DDa~k|Vkf~4j8#Fv|cWIEN3Osi>2Y&9r186BR-X@L;KRb%05(K +YX45j-?EEVBQ;x2P@-Pnz2s4jrg^SxL)Lvt}!p&*+sN+op2x+tpx23;uuN~vPY6hsAJ9_9?jP?mCOHa +%nbk+xH=H<R0$qetjS_~2m_-#q-CIqZNr+<)HC2>IFxd+-kq!_Q^`Vq$T%G5`^O*k|QeT{l-g7sG_*6 +u+Z`;ArsAfBti{Or;ZrUVvUMO(qnsqi}=00Ll~P#}Nw=E3iK1;Wev4!p}6qkg@exwZ2P;_PB%U?NRW{ +uR2P&D^|)>L%XkF0YWJSX6-A3tB0W&eWblj#MkHxh(a!EE7b7ySq1Do_(KiOB2;k!NCY~O7^GqisqS0 +3rYBXckcaRC4k<E;gf9`Nuk=?lprLGUH~X4nSxIB3G>qvSM|}e&mGc8bsN0Z0(ZYq#gXi>Bt8Nkh_kg +1ZS0RXr88G{3$vq0N&Xo|nY5WOZi*S}zoE8lzS}Wt_B0_%$^y2LBaP;I{VNWuIj%=~j<k%zV9h1ZhU) +1gvKE?wFlzp=qEg*lhHZ%~81{x;?HfzLo;6MwgAZ|hA{Eo=fNz{fbcA4UqGy)d2tio;aQ)_}bS5O-98 +@gZEP)qiR-PAGz@DCoGikxJg6=kvx;2|&^ps-{d43AO21Ia1l&d`{2Kn0v!g|zs_HKC)^w-F5jsy23t +7?Vbxs0@Sj0BYzUPEYuEeLEhM5r6v%M5M;MtCn{;fA=w4HC~}m%HN(M(qH1w251&WU1g?OR(6z`ge2U +Eeu^JvnJk&**>WKYWyx}${y-1R2C)^TLGyjxXIoe5QQO{1KRYk+M*cEeK<_4$5FriNUR9vpawwt<cd< +Bid2NXI=o~MteI}`Nmgoi8>SCcr3aBs1kscW~f33;K=k0pGT~@}AAZpF5Vd-@Xl)d296`NcWW<WrWVz +FnTP+DAN%Ov7~P*=1=i{<8!-uHruY1I{jr+%PSS+1)Cg}4p`eH@5cwCp!_Y&2UcIY!VPmg;`8ui88=% +?43dh|?vrv{8>na*t+pl^|48wXAU_!JMBr>Ry6?aBaxzxI@Fh{2P*M$pzkE-vUAf%@8hmEX+q9Y^81( +JXjLVta^m~9*;T)SqQ4WIDPTx<BNZszW(PaNnfbugvkszdU;h#LSl*)c${EFO{5MEYp`$ho~D$CDajB +e(|n4aO$9JIR3uzWWYT6~XO1wZUV(G^zyL$D7}U=XP0xva{xk}}9-=4Y!GH0in&UZ}XV4-Y05PLw533 +1JvYB}X1V5n5{Fu#VcvJ{kLykuhqC$i_^Y(=e6LwS3hORh)s45UjxEHh{W%%##CQMKTx@K!0?F(NH0( +#gU?puq<GR#+*Y#hZZM}8FvT6Nn$1aZg#;{grm;Kc<_R$dlp#2yaBzy{<xBl(!1fUNwuxgw=$ABzBIZ +@xEUYO8Lf(+uSht_d6}=sM$q@<V*`@cjJOMs*&3YX?hOPvcFccL<=w*ws_B?mpITNeKdfKeYJVRM8N~ +N>}p4b7Of_6VUA_u(iTX?H3nxHUwsILulIoXpoYBRm83(fI(<K)#)TVO&dFg&57C*kSH#eQoSVr?|54 +s7Xu+&J=R`*y}(xV2tBQ+HNdRpSegO2h3hKkt$3fkR2hDnh<M^qKdV2~#!Kw-0J)^*>;^vf5_up8gRJ +a|B?~-1!>y3qIEY3s5&aWZY!lQT!C=$~f9<%4<+K$icz)_?-?Hsg7O{nHEvpJBM>_O|6i1bzs}Xj|i1 +IEgkL6%kMAj555a~s=>zI6UKw~9EPx|BN3`~|J*$M@P7>{`6u-%kn^!VkBJNU>6W<T4t7i2dq&*La!> +DWGQAuY(>2~ox!#<g!9ob=ba2dA+n#aX&c*(Xp_0d=EDMAX@vP(1t{tti97s360FV+C%;5ZpowGE%?| +S~YSOqWE87n@w1Lra6Dl8$um6R8;}Rp`{g}9H{f59}~fiy%}`FmCDwA&Gdm|l~IoB_r5`uXj*;8&_)( +aNaZ4GE;9hfc!0J%`$dDo?N|sCY#x_rT#E|>B$-QiDBO6AZUwnE@Kn<cJa=_<UtbvVByKHx8Me8$1Gr +dGI;EWot`g_m68G0plTO^C+(Er`t~C1rAS;jKVI_Xl$*8agZSp<fm>)jiI|}`89GmXF3h7|SW?a^r^G +T=trW}t4-|I_BAH?!9i6_TVT}VDLkD#mzAUd_6d}0(7+e2MWJTRlcFnor(_my1P=sc_Xql5*!!tAOps +b!IKR4)*8c$qEB!-UPk$$G?3df7}G?!5s+Z&KUFAV#5f*%8HDBUu$AY?L6U)Ddu0LBf$)SfSFA{HmN? +XdF?n%t%&NGbkfeDjuxPlyyd`HWhWvDQ*u3e|+?)h?9Ak$H}8dQ5li95s5pvd7M9a5<L0tyFWjE^7zT +4M{R*hgVCc$VRRD~*|ZFjGEzW29X}4jV#OkmP5uaKS;<n&6;*fuEOr7WX5~}?^fdrV*bPepk1;vxe!W +p$aYT8W<~0!8^kS2$8`OEidRKb7K|@c+Ut_#mm~2wBf1Tbn_<Z#r*QTVhDShyI{l}+~W&dGrxiGd|6k +7F7$KJPEcX?2^^LQzkp!k6ypalpcA&<iG01{8~4B0XVgXeVfl$F3i7fF_bI*c5l*D$;x?g$h)(meQlC +$OhGAL-NGjr3`ckwV2{5-u?5)qFliSz$5mLs;(mVkP*2$sXn`PLegrdmxBslNiIi`feHBU}(3GK-+t= +V|Y1B!cV?%arS;%Qh>*_T!lFk5VI2PVq9kW)A;e>Ax1<#{?p?phljP8f=Vs5{Y{^yEG>K^TKF@_WRJI +KVX>Z}PG*P(5;GnEeln_7z3eBQ70Wc>i-Qz~LZjxa{8xArdXl3Lq+ayBdOA_}d=!Ph9X)<J`udyRbwN +6b@^I?GbD9-B#hOON4XPBI^%5v9kRb`1)FtgG_TAC+`e-%GW7N-q^k9bm^!U$DdJkO#0{YH3Uwg<P6^ +PYSZ-UCS8h(=Qid~j$awX+}>}OzZVGsW5t`BwHM+R$^8ePt|-iyUVgJ5ZUN0bgB-rUpA%!nI17#<a|B +OTaAlux#y=qDyg@4Jr}sumP4ON(k<kr{1-X|{^Zk1yw#QRflbDzRseZk{}O1P>`r|H(-0-56eX8DsS1 +JZAnL{7^i`&>QbM&Z$?p347q&QL%|{D;j$c#x`WJB~jRnYQ1L2$h%}Qcd5?dDoR3mW@f_COrK%8rsQ_ +7lcEv4*xoT4>1^Mh-ku?gjnVWzjV_nvXqJ^DOv+LWED3%zESTrr%-~$3s~%pU-W?^99+lzDhk+`G3eE +F`I~{1JJE8Y5K|Z~AgS7jF`wuOfZboQzswM7dd08zLyRT(Wy5f0sL7@$*ncd1YHpOQCG0Vy!I`d;z9c +ms9WPY70WPjf>JpZMS5s}K$-wQI#$JuvAy0UjQaB9H5GuP5C++f};(Gx3Mv9$VRM?Z(M>Ah^k_U>i`o +xG~if8pXCR>8Uywk?Bp@ps<O&sDJo!R1Dr@<$w=568og7uU1LLwRA+j!ljA06yGqUjMkA4<dNYUEU(w +7%>x=3Y15Cz9nw=eO!P<G6BvpJZlWA;#oQ*c(&g}e>LxVVR)wF>)gWij84k<YsmoR>-WUrn$<PWd%qF +3Q|o~W9|M}!e&f+PWR8ZvG{)k|u2r;Jb{H`f*ACOg%<q)P?qnzy{^c3*qegBR8>|eCZ{#y+4KTuC`0s +*7AiBLMB7ySr5LLUw&o&Yx;?xu&)Zq|$ey%Ar*4yXph8HGmg00xJ!YNGONOX%wer+eMEBniF`tP#0ly +Qlt#`Mys_|R4yL+!X}0%yJ`*HCxgsQfPDN5xL?t+h>gyxnZ}op^4oWUq4KtS}tl)ef}bz~5<>(%GlWS +&=Q%h#!NR<B@9on#Ae#zyd^X3*(G`gp#j#MQbn7Ibrq@W0-$4`?}U?0SCKmpMhN4_>uYRTR)N|?g=mR ++t~Z}D6}(YVZyIT=qnWTQHc$({@e9NCV_jr7h5=XxynXJHpM6eEd$gUP&i6t-sM%8j<U27gzZ>yyA}h +~?S8z_^6KNKD?68#ecJ3gF8cf4U;HQ;liSi7$n*}D!$Zxa(oeX~UGfN$8)i|w0p5UYo~)z<&R$W<Esd +u$R%Q8CGds&R&YQX=cP0$P@kFB+Ex8)W12SSiE#n*iN@|~!`sbQ!MRaAv!%yvq*bC%1@fb!}1b;hyGx +`e;X{Tf=SK;Iu?|US^m#i^ggg8#z$WLFxL_Qf_0y=?b1%Kn$Yl`$b2jmLE3<q>knR@15haqx6Vgdx72 +!`LQ5|#%63>+$BpLuUXJY<5&1QJTR?(7xi2%-!<EE0hhFv1rnua1vL#d5)LYJ*jlUl(I52uk;Vq+QfG +mgsxA#uN@3t;i&nW8UO&uq>yeznF5Z{8R^hH1G{946ze-2-wJ^Iw>SFXxWSQp??DF;HV_o^<m-q31ne +gv>XUl8_^`d)+0!CEQ6=jkLg|`e)kbPsg7(BZB`kQM&c-0)I9O-+jVjL*x7g9R=a^tZL7}S)NO+6>XK +Ty#dPMkaWs0+skF+$yOh_HF4Xkh*6e3djXo-Gsr~P*H*lym?B}<Y5pSf}%X8f}%y=oY8;N?gjNNwnL& +=9OvF0H$h@<~i#s+RG7kd3`VI`(ZfrD9A27f39!5<u%IDC;vTD#3aVk!i;h|Enb4^7KCrao^qC&-4qo +Y~4$+pR7879)jRv;PLhilIxDC;c6>o^$Qn!${$w%hwjJ%3fhYQSonpxMy0sX>#GPS`99wyeox4NADiu +tr_TThQMq(ic``oNA(o#R*moU!nUf|oX?q=t!*0iE`m!?l-?0SS{$(6u8ba-F@bJz;CR<24}TLxpYi$ +{TRfyukIhPn+40=2dWkjdjmN1*k6qo^4YBI%?T!Q|g~!&yQ<chfR|1sXy(C%m7duz?P$t_8UWG{_GY< +3o8`QM8BbEY2zH;q>74bDhxtcX=;@k@<8UGtdaxy4Dm&xFnwQ!Y)(5N6&5^m)FX_XnpI<}Z%gggm_xa +X|XYxE}1<}MG(U3q{SwY^2j;m{tx;V^T0eeC|9JC!DX_v{$WVHHpAt6jgTXLYTL_BR2wZ+Rl6qP6Ri3 ++&!3)!wHnA*!=qeBtj%b{l2Oas(RBd_Ce^!)FQlZ{1C)N4;&ujGF1dnTN=$*552SEPg~@P{VlDC(+F~ +XY=fa4H1mp^ls$s+<`yz?nLu#ERO%qmN*NqXozugU)(nA+?p`f$#Bge{9~%^48T_|Qn?Dt)r>Av!A#u ++p4c0~8ZRD+JL*R0NPD!m;E7^KcsDC31UO0spbV%;)+7DT4a?WTBoBXH>sPhkuGqR4oZw|8JR28vP6` +QETxhT$)oOC6=EnN=U6y{x**&m*_6TRHL|dy6TPdo2#n}%WLEQHIxkURgigL^gi<c_rWjx^{2#Yx47) +r9q^-s&Jq+b(El}Ld|5#R$R$BvRH=4Ij=`a`1b6mR6>y@T&FnYo?+TIOc9bpZ);!1D%iHxl2fjN7=b_ +~fKZ(mO(GFrx;|{O)qP*hDs5EMb~+Vm!;Fd%7?Xgnh7K5&K4Lkne*QB?R8u(Z9$UC$j?Go(-!wER`Sm +EBlmZ`MfdR@XX#;64P`LT}Mp|JT`P(GHd0*A_-Ai`P87U5AubzS|fn(g=0Yyt;I9G`Z(#aIZ=mLp44} +)QO?68;p;7ruN{N~@3NG@l~jG%7%t)|ES;!Lv)X81JG3uN!#yv2xhzYfDSf5VQ^&GfEE2vLfCPV9G8! +?@v)btC3o84TmwQiTtiAX&UzlC^=X_xgRpl2P=!NOl14nmZYZ3}8&CDeuDvIZX;%l~^F<Me9heoTl^Y +<){+OZGxhIdraBxlQf!nrE!AlJ<mf(1{gkaeUKP-2es7$4fL2#rbqt9{Djc{poe@E9N3i-RB#u}_T(! +2RK|eU4yJ3B2pmB%a&bp<STS4DA6s3n0c?6%ACz9&=_yXofukS>B+a)i|N2_7-#E_<3`6d|Z5VRLQC> +2EOr4!>s(?H9)*pxltM~*s&L<n~lxU+&E}k+50AZuTrm(kP|p?s;1(Kl>@rI<v`w)azHn>9LUR6>=pC +om_V*dKtj9Uk<zLlB<%ApF-VmJYxQdf!cWEID>29_`$)kE<)1LgX8haT2t-nh=#-6I;9I044f%+ePKk +t<b;%=xg<j4oSq*D(g@$MJqfKP73uSd&h;!@V8=ap(BBTUOFmZ?@B&xItCN;X+Hbx)8fkW~Y8}2YTAu +itHB8S1%!&J|#ACL*^3IFr8-A+s9r6-k{ic0cd?mMDo1%8c=R*OGsuc`)i%etX?3mSgpF@4=i5=E}jZ +fRhZH<PxWyVGjS1^Q(P{o-i+*bRuFyT>=IF^n!_B8E`|0bZNeGs{o&njk(b85Y_`FDYH0D6avv!#9U3 +4YAxpsZ|kfXuKH3thFCJI|`m^rNwQ7&5}SLPun6*U5J#nQxhW3+}{(H7-jQ{ROJ*;1poDL^-!2Oi!NA +AIMY1)nWgA0XmDw+ej9>{kC9z`93l+~F!J<MFL*rr)UBAxMM?n^LEUFBtQkfo{Im&ACE(05B0tUbvlp +C{*&+~@N1w2x@AGW&j;)e7ZI3TM$>yw#@#3Q)&+VU0gJ&Q}JU<AY3Ay7rKj838YA(+MlAvH&tjy~zR$ +)pPAxF?UEG62G@#-$@hJJ=Y96WHJr`gsNY0NAgGSIG0`k!=QPyFQOx|}p9(}ZE+K_Zrlojb=^b<u+z` +c+tn!x6)M3+odo!#`(F4jZSB@Oc}L!h5k&kW-eE@`Z!NSdLbh`xf1=!4GWMsL;#zTj%ePm%ttcga27R +hL6QF#joM4Lfqw9oiJI2>w+$z2-0Pe;8~g&I9Rr7-p<8k3<tmMj~6RWv=NyXY|tg|@>=f8Fd{Am5(Uc +DVLEA2tHZltBdjo856>{NvAXF(Uk`SMN|!2PCG$d!a~tV(c(*<H5nq*F0@CeFh}K7|t^N)p7kdN~^l^ +*wE!1#cBRM7FhUg~aA=&1MGufe?SxHWammu&n%T1C|@5K~Dv0u&Ea*D?<o&rCcUlSux<Z)HZlkTfx+H +vN*F2+hDzEK;S&`IS~+Kg82h%RhbBUPkex$wh0y=kW`sfAd(56!^WUiSc1wS=($>MBkm2L{hfu^&Gxs +K7d<j<4J~y4;<!1m^06cYH*yE8>Sc+dNJVQs;!weVm?5U{Kt&bQ9(=2$@IHZs*#pg!QQzl(4WyA$VNW +s_z@pf%ip?#Wkru0c)Fx;))XD;Bm0C`(hAfB@tY;Q7ShFCq&DpS4y^BOy>qu+H+d<;tI|@%}MI)NIUH +2VUK!QP+{p_>$l;8Zj()7n1M6=bKb7@qX_~_a!W)Mb(fEf^1s@9f=E$%Wn7)+v@7K722a+zxV-%`y4t +pYB8F_$!=OMBKYDIN=jcs(sv5-;7gX1ESl@26<M&_*7^llc!g~)(Dh_2<!nUjqLDQt7`DcXh1gXBwmU +ugSwJ(A#i&aDG_S=e#y7*1(D!ymdt00sU{i1O*j`ZH`wr)vMwG|m2tKIEgZ4t}*v~`Gtn~>^@mZ=D*? +8R$~6Qi0Hr&>P<2MrV}(6+;!$b?t)OI?khUj_u^osb#Gl?XuU-!AN%&c7y6g*JYykJ_!0ZW6|=0PfeY +%P-N@i7wxWvqM{3gsd*QHlkK0>J|-Ey}N}0YPZy(R<22I@Xhij?|#uqpS-f}=#gvb>HE3mh#`)xSy#C +XxnxCI@axgbJf6)k?T&f@_)cx@n^6XjMci~(^c0WoYKH4b9A%Eh!wqLyj<6$dw)&zgsnBlRC_OALUH0 +~tc+xvEw|k}L>vC)JfP!8&3M(4^IbYl_DRFB|_c79Jo7{_nh5a*oDYwdeRbMM}%eIq_HGii@F(0ES;n +Zaj)uX2G(}LYmF3le3wIYaux?Av~!Lc{c?1KaQ7JN_!OiDM|@F_XX9$Kk0Ui-Z5?s0xFGmau=rTo2s! +rcP|bi|7VQO1h&VHxnuhJj<Stw>ku*sT$D4E}x3)2f*Y+GOP~z<P4879XB`XwOfXiPMhb@z~8DyF^IL +(uq$(`_Z$;=a+#@U?}B8d2nNpvQ_<TW(tm)vqF068*?ZQz*Of}H%R7C`+AQwcCY~`WtNYc6F)fLckJc +j6v_tv<A^O_lc5<g{U!3mOVe@e>8Y{A;$Zm;L>SuRfBDq}JP3L8dV>Ksf!C1EWUX^E%B+5~0cD6l_+6 +1k-Cyg`=&s(-v8ImW)m<=>@RGG&4#qX&AG1lA#6Q!0=YhG_agv~+`J(ihBwn&PEdqi*Ep~OR0x_V-Do +X2IurP<+@RD2<K%(Q|HTk{x^Wd7TS6LnvK*LTfDbZ_<CV%1kxG=k(!grvtx&o~1fRE%*^v+lz?lj^cM +K9J(yNpWqZE+_NOSI(KR_Zops1H2rw5SE-C1N#m*o5VZ1AV(%S@qZ3;kd35y0j9$%x-y=yBa61<=Q6X +!Nbp&v^bwcEeVUaj5~03&RYbcn3f%8{xJ?xc36IQoon0Cx>~Nq0;Z={Y3sR!@9y|uAda=-xga`s8puP +Z2USwQAr4OtDPSpOHs6P;w_y8t?}g_UXCG>D;&f_%k8@+u3P`tPP3r0HJE1eY_ryHmx7dt@!EH1cf6! +{B@!T!!FkXq%o?Al6lI1-8flhyJ2Z_eSbLVUY=VP|oc1$cuVBhpu7EUu7C&A;&oTftQjv@Ae?XuC~S@ +cb93i<NV8U|a}n6Z@Qu=O2t2Ef^Y&4=K@fzSv`E%rL6w0$%H9-+TY<{<hUMtI8#Hum<%7nOk5#V2?zX +o$tLw7r@VQbDIENUW`X0jXdD0lN6S2gcN*^@ScY#xL$r^QGqT?5d<lGkk;hci@E|Io&B^aaHXFS9IM= +ec%;Ctk_RWyv~a!d-^m_(xR4&O}e!Sw{5iQ5nH^K?e65}R!!g<L7e>khtESpm{sC;0=gXns`6g63!Xt +0x=8MQair`LP=>+#IZN>vB;9H*k0OhbSK$o{LJeFLPp2&B;W9XRXduA^Z~qxc%&&tG@1B~aKt8(1z&B +}#k_60_K*W|4#XP6$l~6>S#I3T&n0VXV!YfAK7Qbc}%6;-5-j3X<^+($KTg3qVeCIaq1>?YkJ@V9L67 +ZZHOI}ET+aAj1>WV$KxGR>zA^M;XWmD;A(NFZ*2p?)nd|$4{5Bb!=&~1J7fo~zsjzfi=^yxaW<s~)Z$ +70&AlRk9J8#Qh<=y#pw|N79f<5UASg3sHt8`R9Rzs*qN!aS>$%x$$9G&}d+4Af52E!6Nt-Uas=Nc0N= +sV!;$;|6*XNU|KbbV>3?C8a3xixZxM1Y0{_XJ5!tCKq>=eIZO~d+$KNF9RrBg`$c1kZ{HGipDIQLVlW +uD|~fRx(&>h+`CSK)#{)92POttu#n4&7}8iF9>;@V0>BHe4H6Jto5}ZTl3)Ba-B$LYa4374;I0ro8^6 +OW6s?2*K(}fJm*M1^{8E@Dg(PI)#-)&WDGe@;T1(0+MyrV^WZ%QQ4=xtDqhu8vq4vmmj%%%34aboHu( +i#>k8^8%@sA{x>#@wT5exHV?R&DJZGb!4m^+5#+meN3JI*^cpemkphvcfC@B?yc(6G$dgzthZZx;e6h +0;dxz#ByW_CJHUYpWT~HV(OGS|5{kYwf1bcG`{reYoy~{1z(nIJar#ZFnBD(FdWi1V=pC&A?-p>MC}6 +Y@t7`Q?<Gz{%%Q`ehg+q%444<$ueR`ExcJEV0)(8GH@pW+BmMWu=g3Wd(UyZ4-TR@gxNv7&g!*EKnSE +QZn+=d!cS9dygz&Lo#T+;_ars^aB{=inkLxU&28JY+=|jT4%lj>#I#rQ<>YEKg~`C{-6O7G1|bm9WF3 +UbEX(8aYHk|ls#`6Jn^e8kV#O}`bru<39bU3A>T!D#><bPxXE$+yt^D~ffBLfl76ZXvvJz#Dnr?zQh_ +%qAA^_ky9t;PjJ8s-UQL;twM0=Pm0nm?Gws@5-h5Yi^TJ3A?A)n7i<!8ZP4j(ioLO^)hc+sf;$0O*Tt +Nu4u&_4<b{Ir_TDtG54H@PPv=v(qx+)PZyGdJSCiUwzXM8*P+8=q}~;UkpnE?K!^jO#b3&jF|kEN1Sj +dQ#vTvp|{C*&C@MVZ8%73YxAD0--Ec$pK{v3mDR<S8>4(tfBGPTl6;&I9!RSck&dkMeU#%H|kAIJ8sW +I#n#o?y-g31Q8e3jSSg0hl1`JAJ6}SpY}9Ch_}RY84zm{=(`@A={ij(_051u6epPr3Y~(V_iGT~7Ube +7jirXU+ic=^NMo6MKTM<JC0fy`dni&AC@cDND5q5?Fd@1uakZh8znp2G*#a^I=8QIDTi=&0q-q*AkD` ++4bgaQkfc%}lqIzmOVfDxO8SOJr3@(aOKRx4BBQd+q}3k=1;^`8Nk-T6`#bTZAexw7!=OQ$heP2`cSw +MmApNzM8xK60xV@f~RNWc+oXgaj36uXEvzk=zCeaQ4_r0%1~QT{OTcshUy?6k39OB5*OAWTO)aS0^32 +g@|Uup8FETCTwLp%J^pdO<&6Jn#gJvL))$^XVU_s+Jp;zE{VAn)x3-a(`<);_#}HazZa}xs@i1QKp?W +9i4?b1a?c;|beX_NF)1wpt;9NDv=$gEcvk}Hh*4Ch(cJ`KQ)lsG<rZJHrHSfDdg#S5o_Z@4e7q!oecL +X7EpuE0CC^JNWv?<@%(J4b+(-6VwXbN-6JRbe`*W^QjCECpaxzSkJdgwyrrmO&NUId!$s3@7^%yhX0= +du0W{pG#L(5XuoaAuI=&X-hPocnkAD$|aN!E3n35N=0xiTCV#mHW@IOv$da$M=9+*D`w)y010$C6BnW +1ooZPgWu`geaZXDmKo7zrCOYzZM8|3w8jCB4!h(vPhCez3*RUWeHz}aP6Y9=B`r#Q29`>Twv^uU5bcP +G*Tgby2zErQwu4!;WYWKCc)I2j92A?FOex8=1bN-TN?5$ZQ_M-+fFC4j~iPKSj`z5%g0TcTQuu0BC*W +`Bck>{H(ucVh*|m~od9C9mVAK~vl#{EMHCABzu45(Q=<0l8Wm11i!Bye!Q<KRjt%tI#Syd;PuDVX4G) +;|_#CTzjw^{0>Y;t%+c7#kDM$<Iu~c}VftRmX1x8dN&#HqH(?YsrFyDMHacbscbaXSZiut%KASWS)gx +#>Jqu-62=&$f{<U;{Ye(su&?;0=AB=C+~RfTa?TUO0=hiQ6S?KQlV$3A4gOITRy%x0e1?%uF=h-^5vk +{FM`y<oM0h9*}E2O4K}G)5%vYN6FUeMXhf?Qn&MuA!#&%eRFeA9s<f?j(anmoA$;o1>4D(D+ZSLpbWi +A?*n#wdR_OL^M~Eu0gad&26x}2xY+^okS(N`4{W!NrDbnzP85n1AFY?`Fp`fMuDpwlcWq#oeg)0=51^ +Kb=ARRw5?A+G-~flpx*6?MdmJ0O-Ym6@z)=@WK+=(NiKM81W(~zNV{hj;k70T$B$7^%MC8y*-3%ug(p +SwDP9fv$z$t#gUdVj2TS$6;0-8H+}MvivjPQ(FoXq%>5DET1)&l{eBcj;u#t!vM%=KR<G!4Vfc7ahW; +dW=^U{p{&J5JSkMG?0&5I4ZKH@69ry5Zx?_X77_v)DII{40IvE^Ml5OL%$`3|MBs~Icl^wZn8NTC-j! +rp$!iWpUF2WJuERAE*F)thS8ciRpOWZ22oNoq}gDw$=|7^QMfC%~^8Z?s(jW|^bml?d-264VxeO^1;V +P#tg=tZy1`c4`FmV(2)_L%9VW1YKSJwxt!DY|*Qm2Jfe?_1Ipd=&Q~LZPLwQ)jrpL$?@7e)Vky7Hxy* +IGYo8~`fA#CpU996+p7yt5<pJNnGp*;z3e=b;uVv$gTzNXE2@(9=&~}+S(6{__^eDbnzuV!MUU{EuH! +#Dy6x}CKjdl$F<_$k-Nb=a9ouOTocy%iO~YrcJ%kcJjeB|I$8}F=i^HPxE`ra2q<Sp$dIAzq5nx)C4; +aKhr2iGVMe4q|h|{>dxDcexy9Fc;I5sGpYLDB>Hy4<3rFYw{+*{uW-l)CJh2Z+7^&HX(zp#FH*A@4<s +?cP6oj1$1-?!@As3ip=ow=_I_1q!^>2~lJ=jPyZTR_Xn6}dqX;c7L-fe!cS-7an~?hd0|AF#=s<}ueC +1=2;35{4E1fsDc*Uw!}L^u;5Q_k~V)41zz1HT@8g@X&gy=A<j>PT#Os(Q$3V8Q9L)ZjM}TT+dk{qO|b +BNm_EGn<oh%XE~j6V|bP(>)?uX7{JrifD>htCCOmuYG%PI%dd+~_U2onD22z0WFU4nTSY;xRx33M5;u +$jV<AU87?S(WMmWqzdvQ7<CH{UgYYWGuqj(1fBzR`M6TUueu9X*QYwT6(<LG)F@!VC(Qr=c{=ron=8v +s6Ls~=nq4&@oiD`{adDx;jXKE;--{grkbtqzfvy|toTb32b%!e(<P_+IQ=w)SMQJH3zi&{|w1ozzOBz +^)V1);sxbw{i`q98e2JB@wjeLlDH?c>#IbMdSNgmyRjYsvD90C5=6DXtG>z;X>mmq;a00qyID`tkAvB +B3)YJ7~_D7D?v+ipb?$?+`vlC8>p>sC4SdRR+n;Bwo87v*XF(Tkf4P+Sn0QtpIWAAPZ3pm$|}{g`0Or +w!9Qe-h88CQ+u}1E>+>KkA5wr$bq^_pW~oyt1PnSRYMIV<q0jRKyyJ3Dr^uL1YwY@*VDi3rwf|-FEkb +~{ciYZ5_mTvR)MhA+ThsWeY4*$>xJ9UDUB_^32}1g46~76jbl^kLm)wY;@TwJ~Tt+fm4hFo5o6<p41< +r>OZHk;K9VzFwC$f11;P*Ul5oe6^a28L#YSrl8<k_6?)|E58Ml(N-@5X~~b1hj%g-F&VT|4)Yo!`RJK +RshRsaB~H9pe|f{>~Aw%OR+F8lA)F8bM>k4U4KO0lDm|?pz6`{CuA=s^qJ5-A5qhcwe+u!)~Cp5+XOp +Y1eHz9s<*r*Jv46XjMX-a)TCsX1xcYM>bj^XEdBw<^}DQNa4!---b^`Z)(A+fMX{iJnvic<|?UnTk^` +T8)ojq6)+x@#4C?Tw{%H{6)3-ziywaK6NJZ%PImIpB-BVZm&kXLV7eofh6loM5H3Wy?z3>m8uvu29eV +2>-M#R=k$rU|ensdT-DFvmWxk%1&mg9mtiZQ1i;$*RGd4{NEE#o`4^R-{T_y_VO>Ud|ggh2~6Q3wqwO +r<bwvU;DtH1TY&p6_RrT*~-zJ&$;bIkmCEOU##Z3dCr`RSf%&oB#k8wAV_X-NPrD}x)=b`l`roiDV9O +TsTQ;|pVNLT=lfxoIAi&*{82O%sg+Xk1N^S~tn3m}TwE&>5!5vbZwLF-G@LJj29BgYmy$10J4Xs*g&v +Q*)ZwnrtRs3)3}+Q3dlGso+$Q*orNBiYMYb>T}-^{`s|i#hTX~G~C%HM}grW*lsz8KwweJRCZ62w4r2 +k5|%nvt~sTidS<6b+M<$p`0;P6H%<R|AKPM`*-OwdDi;5<d<-AUE@nyDYMVJ}9%?as`kRE&oX*N}&GU +n<m`uN&vKtVAa~4jnnyDu}dc|Rjj~Xgq@2`{x?;p)^R{r_>CAS1&tJ|%cU3mI#Z)0)Wgl^x{KJ0L0wq +<6wNSam$re=h)hF#w?kFXJaz(KXe9&G4B_VgQXi1yp|8<X#ZpubiTWZQ+rifzy8U1QzUH8&1ibBUl(b +ql9ht68th<>EHaN;^z%rN9*F(G2!iak4mCf^vXq8iFJP**=gbm8UVL-&&R;;S7bMVNwvw)eq_%OM<Y? +`<8ZFIsJCat=ixw2HP%utH+$Snrc~NDRk$!w<6P~Ccil4;c^oZ74Xv%!`_N`9w!)ek*W3`l-vjM4yrq +})yQe=X|35l1G@3iOg9y4xwpm}547E$`Nr#PiM6J`v&`!rw9jV=+R#C^|J&h|_uV4agG1{kCS60QUEw +>{5(uz9u-}Z9;EI#I*FwAz4=i?O&uHMP^qok~Y79vW*|+Q=M=~z2kF4x@Q>-K2uNN=2-ne7i0y=r9#8 +vC<PaZKUmU}$BIH)oyTiU-i8|hY~+>tcx5iQgs;>Jf-5gQ1W?|;``*Vgg{&ID^Rj&|p+eLSB{1XBxj- +DA+x3+X3}+OfHT;FD%Hfrs{z%><n<h#ECl9Liv~aKP!YhQi;>2`9SROgE3_9VdpY_EfyDdOO3ed77!Y +<273)8otlsU-xk>Mel1nv30x0gQ8ZW?tMK2ge$$}98ll$JjO)zveB3*lXmdWaW<&GeaL%{yG2P|p@CA +I%iY@CE`9f%_I7_?Y^(Zjw72V1Fn!wgwfJ`i|Fo{UI|y+HrsxW8uQs0T>_iiQP_3<z|1F<hkxj<dYKa +qXP5<H<Qr{)Zac9hn)8IwA#(c415oBp_m95ZPUtERq+EI#CRyLRaYp(vG+ixcMr|C7bT>#PoMQ~0ZC> +@Z*errN<g^czf^s0_!^R{Q^GN-+Ri*{Y^slK>BChVO!xlA6~?d8(Z->ri7xJIud%6Jo!xjj{~n<)H^= +9}<C{PeN3d&GnP&Th0izq1=z;#NFGI~4*pu(<T$i!Ht-AdTJHKk{t#n>2phwN0Z-yZ*9F8;a>j@FlC^ +sHfp#N9K}^Eg(+2(_NcBf+33R%M>qmsAY4CKoO@T^z!@K5^d}*fUF&wO7b?_#uk<hWHlQI8#}gmXqZ% +O(L!6^B&v{5<_;+Q-RN<bMh{=RLE9?2i+l;tMO$K$UWq9-HyU&~fKE*Znzk2MEggoS$;}dIh6u&M20Y +-vvkN7wa9st0$_vGGA+uqf`0Npy8z`@>GvJ8MM9llD6;6`X$!Yf*sYpwqLbz|bL#GCM2P@zslgT*Mgj +*B`EkdGmc^7Q33JZnCqkFrSKDS+_&kQt1qQ2;5M!7rn)LTlrhuSG_YC8^j1c<*;{q&9xMcsRy)1t8}y +vD7s_fQ6{u5P=k>UnvM4iFPE-KPF%sDW8gOS--CZP=`$?d-Oas+(LlGPy3Dmu@r5?y~hOZ2dM=tuNs? +SErQUZe`z*aojeaZV^@z?H6g5{yay$e018~3tDYQw={^Gp5xMh^gGLCdiZ;#iIblV?*72|UwcpS(>D> +mfwI0gu*gr}n?w35hPQlpi-&=9civx|?s+cg^PNZ{k>QU0+B@XHMK)(;Jf~ZSTX}IGwd!t8X`KKzCwG +<C=W}WrgUou*!FzYA0jOZT=HR_}Zmm=hKFul|%XS%CCjK8>vo-89BvP|aP?3erI}4om0qD2nRPFNn2J +W%CV@!)6eg8?RD)>$buOKGmc9fKjRD9mc9`gFFrjQpn+d7B*#;U?@QWo{OrAg-qt&xWRs4u8RRcswRd +&J53IrjTm^}T4^Ffi^rg*fcYbzt3Fgz50zxbWb6;_24=@81w-4tI<y&P}#VqDnBFYp=n(nnnOwZ^M+v +9(}Cx2wS_@YVN3*a3!Bf7_Bys?y;JcdkSy<+)Lk6?=TnjZZq^&lec^8x<@9KyI~i*2o3FnB@I)u|4t- +zan(J(olvpoJkD_vm$1u_&QetSON))G6S>YL<t`Xs+t_TY&7|`Rp5rnIlOn5zRS)`e@&3Kw<r4Sl@(O +SDK`OdmWW@()C#=prXlLws6Z;Og8`Y*AluShncI(V0ji@v6#U)7IWt!q$@_5})(0aS#eYY2A&PGqymR +I1Uem&ql*0ygA18UIgEhyESdapRq-i`mtY^#q4YrA#NBPIk(x5;|SvDzL-`c%H;DS+Q{?3syTU#HP7( +c56My^(uc!9cxcs(rS0V1aHdJ+}?|O_sBGmQoB~>aazVcPCp)bsY1CPxI_&20MH?JR4jhgSw1o^e4$C +*FP<@l9-$1ZI}L84F?m3H?Q#6iHM*?!~vuDhW=1kMdUBV4H(|l3jbd+eq{a${r@%n|I{DM)i+e*Tl)V +`^uIiWPrZ%lzq!8yaF9@yBred4g<k==Oa8YE@o$>-K^zY_p-7WOPKe8wmxTU;{+owM;tvgWGTNw$GS7 +JL;9GpnZ`oa5@;?iIc=d)yn;eaENj-*j*02ZOjwFMS!{}ejqCENg53nFG;br@lvq-{8Mf1N5!laxf>% +|qS1n~U_`reL$stz=+R{NfHT_0c7#2X6Ks>k@dt8N<4!;($1B+IET|NV-7`_-Li+!Rnfc$;}-7nOzSY +Aw1bxdw1rJ?nrmN#X@aQiNyx{vmY4oGEpt3<xZZu*#IZq_3Sd2tClVJpRP%5q{qC2OhQOi!24=;A3UE +gdrZE%Ex|?3YcdF0{!%;ncif{4bum~pZSg>il@^htb%xUMVyF$e9s^LC?9%2DXP^n4;K<j{qSwr#V$C +M5;k4xO9cX-P)EA!Pm?SYH1LMLcGp;@lTg%vuP^*+T-G&S`qh}#HGc4`k=HdocGsAN%c1~*<uX}{ia& +@aFY!rdeORG0L4U{ewX?>Y<+8?G`s!B$tqV%6ceKlQ*39z76)eu#T2!rnch=3OQxH^mz4!ckXPpIJ0H +;tPT?pq%gXnEsCSk5Gs1xzje?=9GOzpx6{PgSr=%fP0r*Y?HURZvaUoL@VPGqh6cUN65K4zEyB6Cvp; +5~oPQJc26oNtWu{bTp8n8Yay^I0B7F)$UZ$)EfnpLEp6Vqv1z=TCg=V|;+zoA5jBO~2}<g4%(~l?gl( +p$ZdCRYEU*q?JC?UOF!9*}Y%aD2gTDym|Azo@Jc^ZHKBBGR;w{V&(h)cG$V`RwleSrtMNDdT(Ct>5S- +Xwk&VbQj30YT$ZikYtx%)gq!(Yo8h!^XCz{-K_*nUp>SCuVvVXel~YjS9Nq=g)HGy{ui3g7?(YZxC*W +Ef7ZpJspN11I<;Oo`WMvoD9f~`KK2&-;Xz7A4j3!*s+(F6@vmiHfcR6DCW#wNTxtg!53)|Scs*=lX69 +mm$cMG&hAHz_A(a>EzxPP?tZNDFM5bdts{)k}}ecG_hq&{R1JHOp-fgeYr<Egqhlqmp$t$q||0}x=Z= +7~=bF4y2V23~;d9bYa>X1(j3_sX{i#m%g>`KIRRXwu$csMy`xW;J1->8`3Q4;m5iZ0o>Vd~{w{<<{E> +Rup-PTT$0161fT5BL%YWO<gE^9;Xre1W*!Z;+p+n6g+9v>&4hBZ(Hjf)7=s1{+=hVs9*fFg^_#r+%G( +w9~!0f5^<3}Eallyl#qi<yp{(U8=DtF%5eU|d~Jmzt+sk7ckA(B<c)1n>y4@%7r3?7wS|?p-0Y^$MB5 +5M3c(3+k3;o|Hh@@brEGOUb7#BDQ-16L{q^!09l;8*zIQK^s&@10Y?bch4&Aa9+tGodMVv0119G23P; +t?m!Op8(-Pn>zJ0yJ7=>B2~^yN+?ecwH~?#OSg?B{g8>U|W|u!nc$5#0+;%4|XN02`S0Y5^p$;hn2{! +6|2@6amYk;F3+kC9og5Hy0ybGk6s63>`c~7P;*+M8@+#2;&Asx+x9DPC_PBz^G}u_Y*JR;?hI14sach +o2XM{2HAV+_koKAJT?veebiTvy%6=rQHbk{=UCe`HHsy<M7MhtDeMjo<lRbWqJpy>C#T&#zU%cYMo&2 +g?EzP2n9x=sWHpjT1dt!-_E3U+5kU=9+k^f3h8@N#eF>9Z`Kg6*XScZ>q{-+vu=(0f-^k&a6(lm<m8> +<a#nX(pV%B&kp5Gs-zym=XR)wC<uHT02aI0sFssVq#(?!19xZYdq7APlb^IMwSVDI4OCu`$!-F&H%gg +R|IKjz>u;oIFI(HVp6feSf&6&0HZ44#Lxh7I#@HG;ke4OIS8uRR-<j;FzjJ<O}5opqaYv;m+(VIIFDy +#-2#7I1ZIQcVelVY;4UavTH%#J-AwjgQ;sqf4}s<a6ti)s7c|VmG)2Ifzj6^fxL3ebM5H!;0})#FC9n +8oO8PyF`L*x6jXgM$j1L&UerbBSn8r_0D+e?lGgV)!%Kh{n%SKzu3ag>1|t#vdI$P+-d@9L!jPq{%NP +aR*^p_ZkNk)G|NijgTLD}eX&(B)%$DRGAO3gf8A^Ry)u%0KHJ`l##ZuM<H7yp(l@s%m;TPUKO^J54=h +#^*cTum-zr!ClKAgluvjN?S{||#V_S}v>9T;v!hA-nh>u0g+AmdW1LS>im;lgY{*9Po-JQWD!?4W1k| +`{BS^aPn!-=no!4I>Tpbc!z{rX)dvZcvl@_|{L#C-wqh5X)xNh<(hRl>XS8soF!CB_0ZYx11phk<&mz +FFXugE+2#H4DBH=en_&_--kbCChpG15cBI1?%6ArmLap_l|1?F>mFeaw(VIBwp}ws3t|%UZ02@5PBv; +OOay*SK5<i1^qZF)v%l}HK$pOR9C`uxKiyqG<|_4ETv>qs4xq^Fk5$a!J_aUx<r?{8V`V@y5fJ$<M`` +?2M_8)i5H;}<awYS0}!kTLqCcOUV{v!N5M_ZRus<7dB;Nx2YGmoq21LR4G_V>kShaJ&FeHk(8BvXVmS +i=Xi^R}SmPNhht~(e_5ML{<Bph9KN#N+HE!zoe$mbt4?1E@y1<Hgni^Rmu;ulF9Su0A2H~m3*%1b_*? +BFpZ4pd*L<a)|E&&I1eY8&_h#CvZyQAQjUo|c}z<x+}eG1=;GkkK6$96d*=iTMu_J;~Ay^C55?V;LJB +n~bif2enw*PkYgCuro|91I5Z0+C4@QWQwp3SLnWlIQ+EP)h>@6aWAK2mtd`vrw=D4I;S^0053X001HY +003}la4%nWWo~3|axZ9fZEQ7cX<{#PWpZg@Y-xIBaxQRr%{yyz+cvh}{VPy<5>Z=Oj@_o4%9eL>6ZdX +s(oLs!ZnG16Xo!R))D+1Qq-=F(|NA`$07-y^DA~I+yYf($$b<97c>vHnPgf)e=4DalEC>i+WocdzIum +JJ7A#QTM<n8FE_j-ZNSW|3jaU%#g5@+82XjP`@oXHdSrVoBSn$URPr)9Gpx9*W;6UHW;iDXZNJ2sC+Y +2rLVZib{%}3;M6^Bcj=WL#{ET$n-4}=~(4%0*wG%0EX>y$^AF<UXXHzKn%jTuee7DdiyAP3wM8DMz_I +B5uU#5O#67}0_@nBbik91#FZm->qyTuYfV_CVu%KszEqS@23LFk~#~BVO`uHGqkbqE3R}%d}uMmsc4J +kwZbI#Pi0#r9AOlY!AuT#JlkZ)ANfv&ov%~<_yGIWjtoS_r-$&Tgd>fTW{D#^MNgBxOp0)1G4+&-8{Z +}1=k5&r*M4(*SB!JhU+`H{tVZfo8l(%_Qf`XE4<0!oxwG~c{~C9CxHJ1@Sgzw6TpA+dS84ez{Lr0aq< +SP@8P0w0gaOot_Uumax&i++bQsJ3Os!W|LLon^5nZW`2GfX#rOG5dHU+rt39zH?1_9omG9rk_iyF<Yx +(}2eE;(k@V$}m-^+K3@2B$4sl0P4`Fp*uwB<J-3;Gf`HA`fGkTYi!tY`+V^pAfY1Y87VD87YnF-v^!< +`anY>IZmvLo%I`lY@Dhllu`_6P}P5!hv5+zA?m_mGFndiR9*xh<l!qRT&rjD6Hm2Jyj(PpA+A&Nzx>e +MAt)dK~9Dw%`LI~BrS*=__QL5FNhWePfAu%Sd*_{roQwV2)L<-f<&hii^>`#SJ7cCN{D6)TCkrf&#%* +Wpsx&OdjSLMAuJZGiy+M-6G$?F+=I#-ibsWxxroyTmit2++abvyyn^0d#>E*)*ZAqf^_di3@D-0~9&Z +TR<Rx8YXCv}*QNTMZ!m)*?OZLn97C5~JUx?V8EQ?jFp4p+?XOE#~38aARA|r9g@cxMSpH!Z?l*lhtR? +zpZbDD@4v?p(y2Fe-6&M&uy#k6Ky_oV|($q$ggSbY;^<s%ZJGFeitAiouoopCz*jfKS*{0L0u#RNY=w +!3ZV6a+!clg^}Z(sR01jVg)QBMjjXcWb(BV%nX!xH28eWLct_tRRzo(L9ed>aWS^?XWF?rL#T!wL{6k +y-f+%c}vu;r?=TauMcg6jb+C)%Rnx_zB9Be8fIwE2Hd8^P{@u4j~A@)!)(~rw}VY^xrzaZ1YMzx=dAk +_aN_J`Xc+Opi>2?Kc@CSjDV?<_xm9TKcKG;0oO$F0@t5ooh5K?kxg8FTxdSy|Lj0=ofWgBN(N3elY$| +%dwo*;bZ-@bQY3F;Lc;Jn;#)zSgA%f+c#{3WF^CT;w9>tPt>M{K1VUY&*<H=(Bw=`iR@~1!5@OhACh0 +qH1JnyP{AV{%fL}DXFde0If02y785(3deJ`_;i@HuCZQQ#d&L=&1X)YyrHv=9_&!>$32I5c#P4Pi@RL +RFF|$m&}ct|j0EqV|TsCn(VcLT6OS|A3{o*Cg9a!WbS*?oi*aV?G-<c*cLd{^>)lp8O7m(t^M|5F`Y- +3KnVd%Iu<%rC}x_R1k`a0HziA<s&4I7`#S)ySTU@vNEn2kRLLrAwe6uI+owIfH(YB(2cIE5z-ogw#HP +U^9SdM<KldlMw^TC?BcKdtMlXR;`~_MIF?Tb!x~BBaVEMENmslGl%i=I6m%h`GN`MO6_q8U5h9iU`bi +#CuBl6#&!0a}$kj3}<A^*k64DUWyyW695<ol7)NDF1T3y4}U*%UHpD1=P>DgxWyL02fn9E|E!(<0Ag; +~wEVKc#SK1vsAqg6RzsLgyxXw@SSY#GpnwR6hnvW*B3CRo$Blu6r*W!vH5=o$J{2puVzZ3xVN3YDHQ5 +W@|O7<dDD6J|y*W1<MGr!vcEZoo`LY?6XLT5NP}X=W$LnNS7&0k~B&8PqaaU`V~lDUU(O0J>%#mBPyO +vV#K#As0CzO-5y7*w&Wn7K6A5xMIS_uOF+%)p`OEJdM{nuW{BUw&EgWaZD4I0wX3x8fQy7V+9XEFP7L +1a-N{YgB2^NRJmY<sTPa@S@5ug%3UhJRtZgjp+B0N${ad;O(6$$JOrY=*Vq@oIn3^j+9}ZM+8D?7*w% +r=Wn#qAYgq@Lt|1YNWk0;pHk$*}76ajEhg}>9+UAksXscishd`Kk17H;t82Ez4bIh#w50HL@QK3NO`V +q&;K+p;c2Tkr#8MDLMg#5Z>kVtZDRj?9*oTb2IdO=X4LB|J{6z^47kXi2T4*l-#Zrmc+@uG$tjFL}{N +ToxO%zIIq4D4z<XTO&`Z{k@7NL0uovpjvk{54}sy5=B=e|J}fv%5P8pASoxxR6B{-(;x)olivbNRGt1 +LyZGeG=88PA@8e?_@q}A4Q01FP@NO<NieeDYbaZk8k#m5YvxY)?x%Qn2O{!tNgj9{V?+e~m9tol29=g +c%phmfSnaMB)h>G=3N0X%59U~GRy6LA0$wc68oV^OQ32(sEp&I%xqMDRfh^}B3y|z#RrKmY#<Q;Ktx0 +Zqp{88xUprvJu<lI3r|ddkLPKQ$tpc!_r1^@*P?xLa%Idbx1@&!Fg8rzmFo|Llv*(D?4o{Xe`XNc^3b +^d9%}C)an%JK}!UnG8L`cg#RAuFuT*HmeKYhS;3W!BK0gN>sxoCka5*9MKQbAs#d%!=MrQ!^o1RRjg= +MYq?8OK2<tk~(;?x@m^oh=2d(lwSZE1Jmg9B&|sL1ab06}AZ)6l3CFBU8BC3Mv%n+c1-i^a-eG<^A%G +?G}$A%ZkeUcXxmU_#QsPx;>dumZf>YV3O*G#HbAbDaI3v;%}u;al92|M>5DT-5N{|TIuOrwPg_(6aqm +s^{P+ag$+7mpfF%;7lw<c8`+ifC*;Q@jLQhEL&7)}>_}FYP!PlPDs;;hk#uhLUHFo#H?j_ehqzbKOir +JzvSMS*;UyrJco3Z1E(3a-@hD=+a7-@8i!ny5Wqy2N39z@ZdkdHe`58NL+0aQB<SUrd96CX8X*I^8h| +;4{FgYrfU>ub~sGb@=YZ640P%>Cpq&!3lM1E0OQov1@Ii?-U?Q7hs(gBagxh&^enFu;(m=en5K1m;N$ +tZ!TUWR~6Hlb-*fK%D*UP1fo>Z|8G##lbCDCOfH<eg`ksawNN$Va%Ryy{rHicTCD?kd=4sAfxLIRRs& +Idq1tDL-S<%Ellf!Ja5))&AnEOxR;4V|9R~CbR>f{XZb;u)^2XCpj|iVP!hjy@RzdjtlWEWVoXL%3db +}r-JEry~)&SvhUR;?~p8@IDjbEAR+f`^8f;ZmKP;XS2B1Z2DqpOAcc=xq8*Y$i>X0Vgbh%2N+O#jDUr +LY?JiiOJrI$phBmqafpiIvA4i(3T;^0a79Ajyafw_l$+gze@c|~pu&|psY#!9Isz#|6g^b1lCJf6#XU +)RD0vR>C#<uDd6V(D)tDaWN7ZSnPpj*R3f74xf?AvUyP_|{dk`n*dNTv+%9C4auE+tE|s?=IlHN-n4* +#_cpG12LDTBPX_lslWF1pJjnN3%E$??uabs-?_njknQ25_A_YoNi|-t;Q%ftPs-GU)tGIZrfL}*|mb9 +7Zp{ow$od)YCF}>eV4X|hMwM<anT5zQ0YOrh-E28R9PSiQLg0V)#X2^97+WP7ee8l7c^*!e?p@O(-p9 +uESL(rSY0%9&InhHglKgVhdO_&lDkS#kd^EHqOL};z{1Q2AMza36>mC@yDeq(sNNi6>gAc*H+BANT{9 +~%BGg(cWGZYAE6G3V6nRY-Epmr4tgh%IUzIDu=5ro$Pz4k{vaSQ$A<MNLI_l`O2R(W)3jBXv_L_mJy6 +GX@82#Tz*HNbQa8Lot%H{b?Sh-N`!(b~}L)a`}=*6{jg!|&*H}BR009h2wlz8vcP(pO~)gtu-SFO*#d +jIj=_1}NKBrgQk0U9;-zus-TEm8OtL{`pX9{w14x9;7(ipJMdG9W*H`kxO!z9Syc7&Js06depKZYYTj +MCH|9lst0v_p9s6pSq_$_DAP}1gj^JKkx=nfKA&K*nWe(fwyZgzSIn;vYIaGt|TtPBTWBz<e^?|nx)0 +EYO67im}^hQnv7##w|ZIS88GPtbZ^f(QB=Dc?U!Yx7Xts}W^OZh)K%Tcz&-4GqlxpP%lU@0I5N_ARrc +s%EriPD5FN)|<mSv8t}S2L$Jkt3+~(A4gJYhns)VgxSC<iJNUaLFre1l_`SDH{a=Oo_rv5)aM(N(Ye| +!CQi%)cv=3A_E2W|I_E-ICtTNwN8aD_c0WI43LC9X8!XNUSRVl|;r$FH3nX^-&El{exr_aO(wUaw46$ +1A0!a0OOjwAM)7R&FZA&MA^w_I^j%W#Mqi<GTKl^^`Jqb<1IPOg(;}x~4#?Kz~+C+nA3mZ`7yR-25Gq +>yPh0PRLuR?hu!%4n&#B42fl<bJ#toq^9qLSXU5|tNk2Kn|DA4j_A=h;@&+u^l=vn-?zUC3ccAnNB#T +i#9QZ>uWV>h0}u<#EN1?2h(5MGW9&fXc@3g1_UhAuH|<FrRoUd&44;x}vj;WN94Oq8`x;E!=129C^Q4 +Em+=6-nF~`ARm}4{#m&iGk%&28-BcIKY-qd<NPwG_jley~4+xSw;NB@V6>R8g{e}&87(0{0&ZbJ4tQ` +@|}fpUhyhz!s$1GzCcP#PKZco@$3^;j=<;OR6-0dj|A53h7=oAq+tqIE85#l;R%jjr}Ftges@FTp##1 +1oVHt7-id^<XIIFgmPdrh?L}3K#3$qdR<WtL)5|oCZjzCW;*V3q-e7q=t+pyd1EbOv~B>Y3;*rzV9=) +5^vXh>S70NAa=Q@w*&pQIBXWdPa1C?wf=V#+^vhf*fEML^EWWfs+e;pYg=|!)lu)Z(9^RZIo@Koeidx +R=R()j6?8OPD`WKY%Ot{5_?eaP)|z%_;p#pE{-3E_x7YK>FT_Pt(f6qFUAmIU9jhctUaR(X=@Fmk4(; +fuw?lJkKr_(v^oZmMl74k`^g<jRT^Or3RjbzPJ-CtZT<^JO`1>je`Ze*+oXaf;qXU0^)M9_FDE`O`Rp +jI>Ocx2B(CzKgB&N=(L5w5@Gsf@WwyY;9yI14Cz*yG;)wZdxhkGyeadl@yvvp|#26yb{qU2JV%lf!Uq +R+(czeCbJXs%Bq%O%j(8E~GcvmM6H48H0^<9Z#_adf<O%)B0DA0k(X-Dk<=5bHp<ah4m2HDLBZZhUo4 +XIlrj<(6V|DtY@T$C>WdDMEAT?!(>kn6=|ncZH!|O}0->59E&tTCfIdos-o4C&9ZIT1Tr*L5$tN?I*~ +)a=G`<jjb`~7T~P<frtEwojniSJ6gj%HWv3oIvfridyi`Nsp*B2Z|Z&i{Fz+-^2^6x$WND7S8xCKlKk +!R^8Mv|&)SAWC_E#^BSx{E1J7R3d!{1D3QtrPX})O=Y#7^#)z4y7yf9Q}Y-qdA30zq`*Qep_+y13Ijs +=d<{P09RQ2X@O1gk8EKiD|<e^5&U1QY-O00;o{RI^a;)2|Pv0000X0RR9d0001RX>c!Jc4cm4Z*nhab +Zu-kY-wUIUvzS5WiMY}X>MtBUtcb8d3}zt4uU`ohWC4lCa&NEkT96&;O5|dIiQ#($K9nZDsL}v$lze7 +{%O9if6s9MYx_}0Mr(nF6j{MF68)%Xb1tBxCke$+z!<2F9a>L{?7SG$FOFlHzVMw1!3o@^Wiw{Y^&St +9CQm`Dj>I({>lerHC^KB9D5UcvqdZjx=E?fb>7x00aXzh1e7BesuIur_966)Oi5T>PIc`NZXzzjHPmK +>yO9KQH000080P|F{P#GHMfu;cf0QCa^03!eZ0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga%p8RUt(c%Wi +D`eg;Psw+%OQn>sJh$i%p${^io*ZLk|sv(vU-LAqd$X?TTt8Gb1N!O8<K$%bWE+LUohpo9{6iYw|mgQ +um=JloHIY^AteU>}?-V=6eOLc{6OhtDtwL@hwVg0+O;UM4(|MARe8_8gDH&A!2!{>gK@sOLd)b8-e=< +y8sX4*B?ZlRsc8fG=!~p@OAm^D$_ZO5RFyL@Jt4a>0_BqEEbFJH3w2nfLbv^MruzGBAR1ejKCH({KkO +`Myo662({U-AHBngDV-bW25VecwT4w~ajj_6@6ZLlZH?AQAIL-nYv8^^Dw3}X5^=d4HA?XTG<wnk!;s +{TYUvQhr*N@16sdF8I92}a$1t(oWzk5uUvf|s_}zqUk=e_?$Cz8iGC^gk%UnN+JxiRpBQ~)o#AN@}qZ +uc6Me`IkGyP0GUL?7X>w`y^*1HXI_>aHY__D*R<I50nlFFnGQc<M1tH7c=xP~uqcbPC3Usku~^}5uB+ +=!i}R3@(9PaMWIKZt#nSH}No_gQE=MPBDOIh)jh`OH)?b>&5TnQpJ8_y<r+0|XQR000O8^Hj4?BvqZM +rU3u|ngjp<Bme*aaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{DVRUk7WiD`eol?t=+b|5g`zwf?WWew +TEU<_4ap+}Fdn*b-vFSvuEEyu5&Hnw0RuVh$B1Ov+CC-dE6uTID(7GFWjHor(eh87l>?pXAQRj07tvy +<@!B;SP+k_Uivy9O=DvC}tTEo%eh5stKA^5hHEF%Ux)cT0N4Y4MBx<DCEtoePwvrw&fhE_t`FJC96qG ++5Un(o#4vV1BaMT=c>V!dUp6`|`YY08|d63xLxf@dIPRbFqq5aAELgY^@>PC2OsOTu>G149~tCpNx8l +~C2(`yE^&8k=mqrsDS)LsXlsbMg*BKN7<ZfzrhMo;KwTSK5(ArJn>}3r{X;)3!>ovbX}obFIZg@|Y*D +Hk<l)uzrG4xiVeB(YO(>-qWA<EAzAN&qVo^#3xd*n0gaDn>3s2<P&hA5;3ipzf5`7TS_?eXZD(yYHDV +cOPXxqC%kF+FM)sbgTo#@W1GL>hP+1>$B(<dvp@5vMaje=VrNg!FTvv@fxKH8ylCWLNJ~Y(Sw84oz7c ++?`6+w#h6{d=#Q&^*$NP(}d`JJk;+cGT;R8@h0|XQR000O8^Hj4?OHXdj9RdIV?*;$>AOHXWaA|NaUv +_0~WN&gWXmo9CHEd~OFJE+WX=N{Pc`k5yy;aL@+b|Hk>nj#MQK%ra*8n=CMSJYYw;&*BX%#O@lLAR4& +fj;bhegRw`an^hEY9w5W;ujgXHOty+lStvlt8D>x&Z3nt?mQL@w<SAp2?Fn1@wk$+o04G&?)V+Hd1ud +mGT))V_oU#Jo5xR2N_;F%*L_<d91^Xj$cw^8z#Jz2jy|b_l^*hhx^Z8;?FG0YOTB<_QkZB-(|q7!Io{ +1p&+I3s9Tn-f|}5{s0Cx$nbv}x7$20WQJjlKV-Br#z}n5wTmHaTFY<&UE~i*D?794_bJmI7z19#b;na +J!gy4fC^W=AVc4>@)N*PI^8n`#e&|iUP)7Xgg@J(T@>Lc<2T)f-e!a7SPL@x2M0F7oK%O@%0kZNm!;s +IO+#YZJ39dZ;*+>C=*l&2I-Jau0;#zU8`)yXk2Z}vs-t;Qz|44>Xty!1XW{<!oHqZ}JMhb^6}@7CZt8 +Y2MYA!5Ken0Bf->G&PPv)tAu6tjXLmXhTDF9(zyI~V*5g`-&C=q6^`7I37PiS6C4$_6^Fij~Q0N>t3A +i-~ec6l#xmf6113o3qQ_^VIM}RwaQLrgC#~5m_i-j-)Xe_5(epgPSC*iDF%;nntYJ@>LDNhYCJzpJno +<M&|e5)gYt*N=9&HBBt)B{GdWc&2nU3rSNtD(;VL%)!y~^ACmQN67@$(VlVW&f%(S&Ja}~jzlu!u6Hr +S71QY-O00;o{RI^Y300002000000000e0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bUtei%X> +?y-E^v7R08mQ<1QY-O00;o{RI^Zkumljo0RRA(0{{Rv0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76W +pZ;bVQg?{VPa);X=7n*VRUqIX<~JBWpgfYd3933irX*{z56Q$U*do<?X|Fng|^2Q+CmQ@C=+{}h?ONH +jkCC4-x)d1?l#>)#?t7$nWrc9F$`c#Kk*dF7_h?_A_E>%a1)bR)-`nYVv`NNhRNGDbYz@mis({N^jf1 +?sYgt7&9%WfYFTJ$-TfXriqw6!Ef+=6Q4a>0qj{pa(#iHy0TN|d{veU$0cDJ13}dv&1cHM;#GDqmJ&M +SjNK)PUQ<3S9>sEp@UI-984wOc03HXc*t?-WoWcf@H4u@~S)8PPG7?N=Pse#{=YYB8CgfNU4l`Y?M5O +RxC%IkR}`Ofye9LzKDJW{Gf4?L65{DmUtLbom)R6Y$O&(~(q+nBg1*0bk-Tnxyz>^|&esJ_i+Tf>_Ax +EB*!hbh5V>*PKvb-!8WFIGOf@r*}e`$r7H7jM)zax{qSw06x`V)Sl}sS>&VT1G?h9G=L7_3)}w^BzIN +_6uiMsx#$YxmEd-G4d}wl{J)K)Cryc!_-i<2_9a*n`(Q9Qek?-HC)h5q%HJ4P*+`BcgR@o8&Nr=YFpn +Gct7O9J=~t?e+1q{?o_~Dq-F_sxHm!sl{s%vvnAIpxZ*ERO9KQH000080P|F{P$Gc)#FYR503HDV03- +ka0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!0Hb7d}Yd1a143d1lA1n+)@jtPW5pwMf-Asj~zDv +nhwx$mz-OfhtC+SQH}iyVL$tJOk?z{gvPfnQZpHNtCNVB-%fOJ1O64zdv@HYz@;b1o#W3QtbWnPh!Yu +=(zwX`|TaoY@d3r4$!XsU=X)Po4Jda^cZqH?|wKw})1t_Hl+YoCd-?Hg_^_R(_|mKj<IPw?;}|bze|R +0|XQR000O8^Hj4?^T0nB76SkPfeQctGXMYpaA|NaUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gLFKKRSWn*+ +-ZDn*}Ut?%ta&u*LE^v9JR>5+cFc7`-6&gAj!;Ith>?XaWNhg=|(A+W}tiWQ_fJD%e)RW1-S1V);HYQ +G@lYrf~@9nNuq?IaI6s0xR6+{seMX4%e{9dcPMu?i{DNDqY&_c;6tEGrl0#PmyDxPc4O9^APalPjnJk +N`Bt~I+7xv>i9-K^P%bB~$j`~J233o&Z8T%HwxoW&WhG~oH=&BgDZ*Ehd@ESC)ViV2B|Wxx}rQkJN=E +<mF3w>Sx;hQ5#jqbSgjr&Fd?UBxhEAPr9;S1zK9dQkyK(2P57Ui)#*tCe$}Gt9v48L9`6OrvoucC0rc +8vD(Y@nA-X*A3h5JE@or5)WHbdOK@D&s%)2tK8r?fR0X$Mx*iYOH))z-8Md@I!aY76Z1XjhY*_GDA{3 +9f^@O(7F#)~s$5cp+|@HkhZe3&Vr2d9e0uU1Jp++C8$<gK@(OSH%I{-r%o+^I3xhGs)wAia(E3@a`#! +yt2<bA?GlRSv|FS4?{ek$D+yn8yunNkYn|^YA&YlHkjK^5>d|TQf*Np2ZLo6eBti@9lD~aX=L@uLO<_ +yB1AJr)!mb&D0AZQy-*%Qxepwc-V2{)t{GgG=k2jMV#r@RHDR*?#AyBzkQMQnwvhZ)kcnJ3_GCMPaQl +X38#g1bGf3zME+hmV5wPR4CDLYdaR83zw<i?U*<c&D~_6UGg^tw3LHQ`1wb=^L8IyWt>jFkLcQ+c8`s +9Z;>O%y%FBaIb~lRjXYzs?`MHAAZfS$iKI@!HJ%*lTTG~&%8P7<3q$srViiY9Xi)SYN#5+=B@&o9`?o +>^jHhX6ZX=~z<FobnRHk>bH`yiCbUW9yr0(BqXM?mtrO5ruA>6Jw54k*<cITqd0vlXA(J7|!_LQ@&34 +v|jrJz&M=loI6Yfepx*6<`OF+{AV$hmb>(Jt)d9Abdf_<#vfTkvG&Tdw!GWZq_8d8WO`gM!>*@mF?*` +|2TL=NLQeOD5W>yz#8k<vKyH(+w<Y&t&-`}8)1cuBj!wokazdqY#Vkz>uh|4>T<1QY-O00;o{RI^Z$( +PW@(0{{R!4gdfo0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bY-w(EE^vA6R^4jbFciM`Q=AFP +90-1ZKrTj?LSgKt-EK;7Rr|QnYD=CZx6MZ1eMhn#|HR1>D7#v2B1@mX^M7<QtqO?atg@BHI0jLaN?YI +$M&*^oxc;6)DxQTAO3tB@B2g*Exv;2tZh|0l9Hl6u_!(uYbY#S9OJwoY#&%m`1B=>&2X3(0iV`J_<<g +q=Q1Svz$rChlcvd1^<yat{2M2F>^yP+Yo{(B57=6PM7>j-=A;ZzhEC_-m=f=R5$Y~>VibeH$wg`ZJjI +l4m$+8;+tDaDTu^M>+nbLq-D-!6D*BJ;4nUJXgF1O9uoHjq^IcP2n(mveZe=-KOC4a6Q;{HAgT1oyt# +f*X?q_A-u8qBjf7***6=b-UtB`8z{x5-Ax$Jp{mv%J+6Hrh5km!zOYQlqge*c~poer)I#-lTdxuxx~$ +6uN+y4bpuL<OQiH)~W?U3j_xY`g-lwrYgzXwQ^)0899qOo4rc24ot_<q!tv}$^D@3ND|RFvgagKqKvW +0ETXwv?~YttYj+3<y@ZGkak-z%a-#9~?wI>x>j6MyHHJ7tc4N7=xBQXKfvt+tZryss=zhCW=%{yFBmN +dXL{5OX&%PeDFz{7Lbb+KQ_obC!xI3SBWjy;k*#}o^hhQW6Q<+aDZ46Jj<!tTRR$}*wDG;Gc*iL7c!J +VU*y#{p0HnzywdPaqt*1Ayq`b}v+W<AyFq*(T1yobiz;AtGYoSCv{ALTVZTshM+2UQXAl0MV0p9*d{+ +xMv}nLQYFZ=P4)V}rm%R7HgeC(^xV_WPvgB;j;6^`PgZ=}5v^<la34_Q6HW`+;4_)P?nbk2uTm|FGDv +XdEJS*>}1CO%2iO<OUQ>2?TWnYtJv>BBU~$83q^dn^_lGFY;}oLy!^Y7P4_|fWka1=u(y8(G+g3E%%H +0SZZFX!tqb!rYra^+3NB?A@B}(N?rK3w43JKYkD&r@TMNs_fqP>6;FRK8@on5QuJtUInIcNGg0nMu%3 +(^3(sej_<3Zyb)3@+j<kVOJk!W2tA|`9*C|`S51-i@dQi^cJKAQgu-ge=9h^35x1Gv=gIe%h{6g)A|8 +oSjW6fbfQ=`PFJAIQ+QoS@UvRBKuBFEPDBA+Y%=xr!qD=<&%o53GYO9KQH000080P|F{P#1NYD&+<M0 +9+{m04x9i0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!djbZKvHVQh3^XLBxadF@$CkJ~m7zVEMK +orBhZ;37$rLy#0Gg5=mklS6<sFldop3z0;Zq<7<g-<hFgQ50oMws)ID1xVIoIGo2f!{K<XRmqmi_0I0 +JTrOE&Zk4u-uZ${oRxaIh%0zyjn_N{X+f{j{gj^Q6m6{jk=4OpN7R}HVH}dA@CM&ox>|<U4)h)hTxcm +8=8wSU0Hv3DK>RuYAwiX!kf?0lN7%{UO$*lS=D`u>gyaZ|*CFGi!A{W5Y$YNdd!eguDeXe%qIeT}we* +yP@s!AS+)=JlGbKndN7DnxKCR;Xm<ZF*xZdj!(vFTFbvCm~8+Ue4ET<YfOjPS)e5Jo9biSGDuG98nL3 +~?~xa*5tsE<-b-g_=RN4k@eT58GPInSb7$+3vTp5&G*4pJv}eqdJ;*Z1%}=Z9nt7S>K{Sc3U$M-16Bs +rgV>}InW3sQ*M?Gh?WMKH#{m{f*`4<66!La_a|=6*LR#OeCa<_Vo>&|M6wd0JS4?bA<Q5G9reMveRH5 +pDaIEH&@)HNwss>qoL7Qw8h3&xy3vG2aU2mG$;OsN(v|QT`=es`9;BD0tZZT!34{Y#$@gp}nJRN@r66 +_?_Ul|5_`b=jyMR|-8Gs%U`8=C&;LL1!CRw)OnrDD+6qvJ2l}NSdFw+v!UFFopu^|8L?7gF$rGQZ6^u +A$aX7j^nhlN^gfJ3s8T=dmu`1<NvdpuEVUNujPV9=K@U*50>$sj!|nu^A^Le#T{3}v~s`)JsbfevvC7 +W#mscprgrZQaj$C(ntadbq=$ix?V!($0n*u~K3maRk1;wj+F=<KUMD%;b+uZf#`JW7EJCna;O1;05y- +yD#K{6eAbMSFlXOs$5Eub1REI#(f44FiXQe6w9BigN}!dGB5*j2HS180o%bkT3c^144Pw6HR$_~0Ni8 +PIkJMZ;1`M<Qz-SFaTfut0pvY;g+X`#Wd%=~bcwJFJ<$OX2$kcTwJHkr05DqZ4{nMrUC;2V@2tfr_%} +H!ah#KsCB!9}k60sO;n<6wOci%p?Y5B!YCc^%ibB2)b?~-%krI+?mi4=koeRD`$ZJ=?#|^l)Hx<D-1p +jn!kIjgaK?!EE7=8^nBODKDJ>s86m4^-1x@1|;L=k2k{0<mx!9GdJg34wbelcc&-E2HsyBVMdS38jH? +PH{S+fT$+9|I}S1l*2-)J>2g2QE^~=XR}NKpgVtWa5)K^8hB2!L1;^3?}Jf3dlfkEhDUaHM?oCW5<zb +@-{vsRrByQLB$e+R^m#Dgb4l~+%B|35k@eSGO9xoBvjIzZcy=LpgbR3puCSE^b@O-bCKV98LjYfdlA( +4*Q@GpU0I*jb#7XhS@Y9%egl_y-1)?(Q+lwvK6RN-b|`Yx9<1(`$&|d>w*xEk(MD)V`w3%E{W>{&V?l +q%P|H~2VWrZzNK}?4s@$3bv0K@A5klT<6dkQhGhn!)Jf%`NWmq$J^*mEEFLR$%sU@B6AAf<kwu44y^? +__uqk4Qo3U_R@Kv4-~x~ZcdG=fT1A!30d>}W@{q|+VYjip2(#4t957%!5zKqL`}WFHUm7homuU}QVy6 +=Wi8f}8`OlTbWS6~=Zi<1^Uy9FH<CgqFrY8K`ZZ6|nkpEF42mt_qcX|7WKx5MXEXPUix<>by{Q_^YYK +4woW@qEr^b$Q~N7E|EaER=P~t<~f`%;Cu<^Z*abX^L0wwcBI<C3EJ#JE)|Dq6il<FMj&iAWM-+eZ}|% +42k-3Qb2ohjOs)aRb9zdBfY$a$l-3@gTl7Ja_Sg&^N$VfNd+i~*Cm&7W1>ST6@9Brir^csrPkx-j5j{ +>t*mJtRpzBMz{zlhVbbURAr^5-2qbp(se*qs<=@e6#Q9%S~qRxcF6O~AaD7@JfQ(6`0tvHwgTvZ%vL% +T0i${8TPsF?Ali|6&;#yrd|Z}E?|-<!JV?XUD0mnp0=jt6F($8}eZ+7*7${OAy%i8Te8-bQyRdVJNP& +#F3b7|5!(k5~UWMaC~|`n;9x@fEogVy&m2BDYLyksfzRGhjHuOx*(qoCbEpKS^tz{+FU2DE{FLSnF$w +{m`hDI+p5pk*MQ0t}FSA@6>BF(p^L8&_^0*mDD}9(YsKey5B1~)ou&BiIE*~&@(+Dj!%8LIM**PNhN= +Z(<&Y5wvJF~cm)o4P1mG}m-Y`T*Jch{v0lgwCi+_1Q2}#VUjFL!RH>EvEs`!y^zuFSPquq>!bZaNe=z ++=U~19vB!#1OX?qjR*%K1>Ijtcag_3R_wQThGk63qpPBktq8e1<v0;oEf=3h`t0|XQR000O8^Hj4?K* +0e}@)iI9h-Lr)DF6TfaA|NaUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gLFLPmTX>@6NWpXZXd96JCcN;g3z +x%J4RhpF)TT0s7+k5B4$xBnWn|EoG7pLv^EJvkgD2erah2+Rq&iB6`!1?45BRaj+YaI;$f*=Th0Ljr> +W=XJIt_xjAzFY<($up?~wo+MKXud3;Pl8D7gc4bL5)`QjvxqNap}AzSIy$P_NPe_NZnsH1SL_!5FSLk +N&6BH;<s2E5-;PT1T;%iRj;B#3=StkplWfPEHie91v0CO#DjqO}&*pp8c3#u1n5uf8&%-QLnx(p7lCp +%WoP}JS1i9pEamzvK<&woQjQA|L9DOfh7|iJE=;#Q5*$t1DJmv{UCT9Wg{mfIv^<;7sz-Q7jyc}<J5| +6J=f-xIUPY$71E9s#KWtQ#}4^b3Ju9SyJa-TF(i!kOMA|)apNfC+cFv-e;78?&ioQ2n)icEV%@u_!JX +q}~pX+oCnm`Ax_x>|S{f$4CMK%wvr3H{7R5qk+XGAnW)Rg$nYI!qKX%{EfpgDMtEd#HR|xMy4u*9>Bd +hiL7Yrbw_j^VnY`Jo5;l(L>-Hi$_`96B9T@Pd!svAw!S3tObuF2xLC0&Ap5q=wQ+C&}5m{5!PAilPHr +O9c(#^eEn>{_Tazq;Q!5o|C<N@?;iZ$J$TRfga@5?EM25|;h6}LdR*?B?>F3IH`gnV_s4AI^Z%GbH$F +BVg?LOVVV<Z7`9a~M@EU(o#IO|m!g$I&F(&1=+83IAon(df8bFrod#oqfJ)(z)Med6%xy&~HROr)Tw5 +PRViAPMuL;p|}B$J^>u_}Sg(?gOKK9j%CB47X>s|0{=Oj?R-Ur!n`T2IhXg(pE&K4a5t<;!ICDvS0W5 +|3szIG8`L)*|tVf-9njWb4DjV&@_8%&+!{;E8L6$5MC9)Bg@C3%YJdnBF!4c-XfrvH^v4X}FXbEmN0j +Em`O#qF0qJg^B4Zlp@!3fawzZ$LCiRl+6CY<xo3v+HNeeE!55#y*65O5Pa`BL^)*gHqnij#=!hkpQOJ +#rS}6-!=f69PCc5T7-f_BX@*0YMdhDFj8=Xkzs<mca}UchRQIvLG)w8>somzlCQ5@%1u*k)C~010@qo +Yg2!G55V@!|ogJh{1tVC+!Fc$f{p@`HF2|2X;Qj<h{O*>Xgpy*gt6Yv;BQHOiM(rdOJaw>;vhS+<ODt +TBuIxlFj@jgGS!|gSfhvzL8DQEHr$s)lAD$FkFL4t(I>jC?2NVsOW`*D~^C?(R(%s)Pe*B&eK6J+sz< +1uce@s1u<$l`lxQVwOhHNnvKLxa~D9Vi=u-C@&FH$sPp6*Cwf8v>y{{;3C3<eH)=eQ!E#H<g)&ta(*v +PHihc2>$Wm$2UPsQ?mXEV&+M2|G0*QA<s1porPQ6C?~N>L7DC%tUy>pW3eHCF55z9VV2}E@5JX0Zk>g +NauBz|fvs40jTL66(rGX;OGAhIY7<(qz5zplm~*KGcl*d>cUiNbG_w{JK_EDQ26b&6<*YId85QPVqEi +l4$PnW60Tfylh1$9huri)*90j2vP_S&hcEKc&G^B9L!)xx$lC`T{!(yhKNq_~Akc-kj0NvJEY&l>91~ +rGStgtHKj(jBS46B2dWG67O4%CYA9oRZ{l!4%!ZMYJjolX(gT_amCx2nh*&eyDP{Vw7$b6mN*W!-=jj +@*?{vdxClNwiN1>3ACIeeMu**ITWmqK3J1YvoflOfq-;8?<h@?`~q&m_lpUo68MhXY#h3a?mZ5qhy2v +M8q8{+X4><Cb{D|2!ojANW8V{m<lRFH~b1muV#}r=^hN#2-V%Ntbh>bsrj-uSZg3(>w#!P4Z=F)sbN{ +VvGUReo;ji+EQB~uFoC%38We(+W|E-4AwY!jChV2~Va(LdbS4lh9506qZ<{%SCBm6DvjLF1PL&ddoo1 +Bjq?y_>caqcWM!K_%`f_0qMGD8aAZOIwytxJwlb&Y+kClkfm1m0ZxcrmLLh?9cj>ceRPTaf&v&+ohT& +^+T%UK#baZb8MEP2kEo)J@BW8B#SOicKr<ev&5-H<8y&H-Ui8Sotmwn)K<)k_w!o2;lXa~-(cQFdhmq +alciDWtk5T!wTwn0#l7?Cq2qSR_z4In$<!Jhyi4D>$spB8|8+b0EXU%|A4UY?HakhMl_Cz$_ogv8eD^ +q@{kTbrG_9BF+}BOYO+i8K8y3bH}8h`r2i2;RcKyxq9qm;yA;Nh}_6#1(0sta@(A~wOV=*{0K$nfvUt +54U`Va(T6yo^k0s``jyHM0X399*GPwB1htc+GsvEDGS4z#()J;Eu(;}m#8Gi!&4~gBw^Yb35OG81Gh_ +xur#`4Vy%phgN_b>Uni_8C4VP(%CDV9B7)y7T{DY`lDt<v2r@)!sx(gF%nlzq20Vgf3jOIhJpNjLOTF +c$^nD5+Gtqey*d9HZQB-5_4m6lwGTgPPSkYE9=m;eL5t}Y*Rk`$UmZ3njSTas?1co1Ct^22ao!7EfV+ +GYV+K#D~Ke~j^3?1*TTZz1Q^!dc-!eJc^ps5*qHkh=!i2>cV_V-4~H5fbr|;yWn2h3m?zRpu;vE531a +m6bE2A%vM9iFzPp`GEQc%5jm;tR2NRRFWlmCTEi4#y=TeO}*`aoiT=POmzTGqsVQ<$*CF&+l4b8s(=- +-<A(^FW$5eL;c9T0!BJs)wq}WN6Ig?y;#i3&eRu#juprC^;;6w5trnSEgF9MZJJN5yb|Bw45ZvdUQFY +Iz+D-mB722)4AqOGsYM^@0r1(5z(Qf7lU83L*aC5OlbscdiL0G<Z1BJ8e2etJ(ERh`H0dbL&D+ORah{ +T0c^>umTFe5Cp!X&Qv6^6{(OWZ$54VE}^CQ8(=)UtuAHYCFkRGH%`RITksGs-Tq^_tji9B?|AS;Ftj` +F5Z?E^$_7P`(OkF>MG2^C4KvGsS0)-BWQBVQ<L2g`Bh+EQz?>@s}!xwf;S*HS3eOnGIk6lYsr^!m##z +MeVkfsPEj6SeL)&w-Czl>c5-!R21I>gF+H{5ho2%W|~;JrCYGOg=0*W!cYi0Dn_7FrQ^xcj9ktPX28V +Ci%xnA$?j%5XgfC5paJ2HsB2;f2%SX?%6BQ<1*?Ony`v&P;|<;7w1fR4bN!-1C-^=`Ea0C3f?@q2mP{ +<w9w*`rM7M&u2NOee{jHv{G~Bw=q#cjY&Y66Tpvrp3ZwqI=GFKT6Mv0bUaF(lAWCp-9kl9s6fx&l{W5 +jm`V>S((ULaa2LcX2gH{ZJ1B)-105-~A>!zF>!rNi}hAjQ0ORDDZdu5L>M7V2W?az}?shB6yCn*E|;< +sMw_Q_l>Z6Vo*hx#5C!!9fBmJ)j84deWKby)!9$$NoQOS@JTC-jzkGIlG3EW(gL!6lz&WLA?)ECtJim +HnFEjoe<K8&qK!v^#1ekmc-Ce8+pV<pB-2m<X>uZy?I8hs@-PUXx3a0P)lfkK)Z(vv{_CUmSG_kaq33 +bHiS}p_g?OuXCBB-$&6Mx>2<qQHu^#}E#nN*&E@v6vRJHtux{AY@ZJqF8~lpO4d{DfHqyNsc3A!Vbwa +F%^b8E#VrsKY>O5!Q!cJ$2r7THP4(zVb=3<L=uO(D!*<QCG=4H%2i===aOHLhMtrD^tZf;V{$_o=D3S +cqAYi$nLA;kkt5@C*ONKBg{R`BwcLj7Q2%BiiMA|b0Cx&~10Jyef8<~!EKuj7pA<^kV;>U^)a3%Ve)O +<)1c7C;wLm;PN?Rq|J$t@RXhG@e<#d09g-x3LMaGFsy~YxSJ7qMZTrFk@@9T?@40;1VsFxs}y@s1l(H +Bt^J2$yD_WWe~fz9%j``UKT7Z5_}EW2IfU-vWbqq0l`g|y6F-3SK9u{ywmLab|DcDGih-$U_7X5HC<< +RD-nqrwnJxtP-XMnWg_Ig>8*}=s;8SRtdFyDMXy07LpyO??wap!@P-QMa0O(`ReScSV2z>2;Ck&t)_o +{CUKK~}_m1Bh$84TtcGHZkdgZls70XSrcHs@n2-vhw>muAL(MY(Ft=nuQ=S>fPDc|SrSh&D<O~cll*R +5%bR->@)WbO3f$$rrcA%&3Ed}q6T3ztc2Rn@V3?F}*RFxQrh#eB!|3z@fGDceEHu0JVY(O{H_cP#_W+ +ivkDWc?Lan4C$==&C}*vYh&1&*RczyGDbn=;1hRGJ})$dsFpwVP==Jbs}7*t*2RSuw7VPoVrj`l-l67 +*RJ>=I^HsjNy&NiO=HSy-So57_V>o$g$!E*ft9!MmXzN#M4K$%wsVuFEicXEls9v6!&hNDZ?{R_&;hu +^d(B&mz%%38K}BPbQti`5FwL5%tW>Me&hVsG&3CqL<TiKIdI6){lV4&vLMl*TPVzW!7lIP-N6veYjab +_N7=3O-R!K)uxB4+Gg=UUXpd%E{5(lJ_e2#bbAcLLA@px>S9{POrQkbLba2v3o>MAf@J!5$eF~dak=Z +~Ku?75fM<i)#ZU4frp&e-hp%h`WFnf>Sd>iDt!IK97Y={~^gl~De08NgfsBno&6iwP{q_Ymt8{(D+o& +^&|h9YH`2M8f}Acl`Zt)9DMpU_o%#Z*;JS`|x}ayi^JnxIk}tfO~?0PyyP2x8=$Fk(cHxF9n#>iH``( +@0auU-@d&#M*}qnWI_3(AQM!?y!<{rHGD>+(FG*_8WJ)UXb4wnfT;vaf@~f96EATem$xR4%>gIOD8Pl +er4X2;t#jxJybR9>%9-U-0N3SmqIkR}L@r<MBoO`IEII1~4zy`SIdee=+Sw`p84dQduk)8P3V5Kcy^N +jF-~;WOb>z%}9Fn*jK+i}h)!N=ZIqN-B(@bv-oDIN-IP{9;GYVK4G=9JkUx5wds|l<!{i6nX%H+nevQ +rbVz_gp6%F$U#G@EhAX!d#wK@6~p2RD#5SaPm-^?N|kKrgKkHvM$oo~U~Qx3bvQqR<jxueed44|i+ZZ +`1Xwi;JL>I8g)b$?;`f)<$o2*rfOW((Y_8X*$GE^`}QDIlh8A)MMjZ?M#-KpiStYQVf26|5^>{sOx18 +o9+T%vikjZTws3x-SC|Enc6N$+SiupV9RzK83g72`)pSJYpJ0nWPu8|V0}TF=>RWBgJ2>BNgOqRSdhp +MC~d&Yt$FGT8nV>LU`YmzxWxNpeVtN)z+&I}bC-EwsI4xrC8!0~b^LWMYDo3+h96acaZSq5auVPgH=V +ajo>|-4WCGE1;<vc^Ai9C|o|Oxv8#$X;G-9}MryQribVH{kqY-rDZb9V01_bSu0VKTF)Hwm@L2UBjt? +dB}(cInXrNBqs)CsJrN}W2Z8peV$LjzarWODPN2F9mNgR@GUD$`pU=*0ZBb6&A7Ti8tSv&WxXDv_nA4 +}v;zG|BKW{vN{dNx2f@N(BRKy$|CENd5B7o43E7f44k;bN=J`PaiH$Fr%!vm7yM6W`#DbJC@&T|MJ6! +_piVG`NR3eJh<p(p%puHVe|8Pk?90N8m8+~;7xN35a6{r55-!*<7(e<hP7(>?)}?$=kGtfKELRQ*CqI +`^WT1b`~Eu=A9|@HcXePs@5+rbgRIM6UcOnrzF0y4?uZAPO4C|Cd?&yJ=rZ!Ej(DAcgJ>V#zIyxS0vX +h-%Kqo&V+8~QtS1{MW-@+OUdenOMA<TBkh(9GF4pVGG<f#7LXD?Q<KXOh@Yh&B9c+Ziy4_%x%tY0*(I +0HbN?M4`MR*ONbNY1j{1w!$*TEJdyRq%BzJBuL*<;oh;~5(wY&@oC*QVqsO%=SMv1HIxh(8XO;cIC@c +|f6po2`K2wSb^+8k9ABB-UoZ(eb`%-a((050@i+8eKIcwfB@%Fm0331s*GXV4KlNFgj18`dgCgJ$~<b +E1tBq-0`Wyy(Tc*sWz1X^+-XONqcm6Vwz4-D0(@{q~r2!Ypindz@+hq0XlU#!l@r!`MR4<-3TMOE@Y2 +>Fi>I2c9;deC3uJnkL~F?I}1jyz&t>_k<B@W3cAy*-*MGxCp4l>+I`z5*_omd=5{006A^bYkf?U14e6 +Cbu{7#8F<wthlQ}HYYJ&SyUD^l1dy~?j53S6*fc>ahf6A3+S!O`SjywI#hSC#aN+TZI!e2IQuN>mGk9 +kQlX^4kL(uuS;LT`h1&LNb(35XmQhlZ{CqxvhE9uPwUTj2PkvK0@bZ-?kX@ESs9I&RYG5CnlxgAokM4 ++S=};kP*?``EYntyhriX1foB4iel>GwE=qIKjHvWK-Z}RkIr&;O1=ed$e;9;EzJ-;5x;^Qjeh$j&Imr +L4^bJj)Key))(8XfK`5<6<7&DrYEcA(Fh%u-eHE_#9a9z_zh+(c$=Cuz`V2oqfT*I>($9+ABL4FwxTR +BsxVXeD9I#$glT$;N-%tG1lDCJk}E7uQa#$J+;mmNYBIX~eR2Eb$!u}^&6CCLf2`pPd$L%lt7C|}_t- +qEKQ-&pp)T?7)pR;X+k(Z57*;im>is*Tr*@*sDQ?AWG2U@m&-04?WVC=~cpc$dGIFKSa_<_h8I{R+>m +MGT*Iy=9CoVsJi@(AU{DSUujz2zih&!$mBpQQ3N1F}}L__3&$q@WIFY_R}r;>EuDN_3jO<SiA&bUt=w +<B00%F~EprU_`kITM&0m!2Reys9v~%?#b)V3J|}_Z1vJW`#@U<~7vGxGT_jN-E9XnfM|Z27~OOGRo~j +tnJ833(@Jg^?W%7b6%)NiwXR>{P+NT{_^AW>iETCdVjYMf^qOA)O46|@-Qo*v$fK%4yg?5;3cg_SH^Q +t8JtP5HaY&-C}RHTO9pl5Q;zeXKvz_9*V@bBwvOtW8&u{UkpqTNakuHOoYFT`YC@CR(`KbD)iyyJt?8 +W4Njd4X?~5x5OiioefvD~~LXMt2eyE<0f`<boM4R*0jd}@ZncN&KVw%#0OjR$hoJcT9RaFk01iL2Ftp +%71%@asg2PSmRa{K{>$vAkZ&PET_2)>m5V1lJ;DigDZ3k0V?gCzBj<6oxgs_DLR*4=b^c(O;&9;!-_w +(nvNF~>9h(uStpa-v@sP)rZZO+7R74W#iSw47IQhQF`XFB1EF?F9RD_Vrb89E=`69~~X_nv_O{qP%Jn +kPcNRTkpw6o4e&xrKuZV>d5<`@d?a2I(u<u)24S+ZpH6~GO-(;r|@SyH8CE8bJa(;uHUc%N_DQgy2SN +O)+?_ZjYc0Qm!~IBA3U5dRCDV4m#e$Q&1`XVH@;k`#m&|6_-<5v8{I7?my75GQ^&=0`sgcQ;f}APoX$ +bN+dYQj$>j_g!?)ARkEc(s9!;LY_q(qQb06yljF<RQ+tJX;aCh~jEO^kxpzF0rBhWl_UUiImJT-Ed-l +qe7R>B)ru2W))Aku>On_&NScI@UA_Cb`(6vtG1Iue2bk56GKKCVUtk59+_4S>2=mB&I)#<TJC^2t?Kh +Rg0X>XYWDvdY`Lo93R*mwd+cFE3oVqrhpX_Q$bzBY7np5#1`i)eXpWth*17i~HiBynU0KJh%iCXS4Oo ++4on+cXG1=*NToGzBpM#kKpeM^Uq@X;%*WB&y$mH{&z8dQGJ_)$sLFPZtp~Tmn3(2c$e$D{PynQ-O1e +oZ%UxWR<cb`(FfD))9@vTmE`Q&Ei1@99Q^$M3}VO(d#8ne+6?<)5u#GLCKv|OqyGa?O9KQH000080P| +F{P+)TZ5A^{60KNnO04e|g0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!#jX>?_CaA9L*E^v93lu +d8jFbsz8`W1wVqBi0g+jT$>L*VUNEIka!0z<LsRh=vulH8B|`cbyrMov3mIv9~iK72`u>8$CYuDj8X7 +V8>hKN#yl9Gy|4$9mou(8>qtq|pV8S~jM|T1k&qD92cgvB+2#aOFZd3WxEiY>akZXzv!IZCc?)rLadj +Ex-+;!R?)}q9L$jt36x;=jFYTI$K$C#&$Pfw$-lwUVW>6kfTLP*AG%*#`l-*u;FmI=2H}FlyDBdN<{} +*5L?c_^Un-uan83!DKR*7@OVe{P7J`O1_uvP!(g!hk567$6a@&~f@`cKBgVRjF|nq|8;cI@11?3ARO- +$j)DC^N=S1TL@P)?@umL5V&(c=qBt0No?C9pgE!1`9P<2suSVPQ289u%ocE*A?zflM2C*_v!QNr@iL! +eA?dmeWDkT}RL`p^aKNVvZhzc~C%e3lg&l)Y$M<m|Z?Jz;~aprCxSSu0&hm78n$#1b>AQ(cvACsiT;6 +7&z;hqrOs_*b8RdaXNsTXUjVTev!YIL~$gx9B_=ojTI!8Nz!rrIXrQ(~k7$rk;dnh?cC=_c46P>kOR& +Ngwe4D(9q<bKPrr6Gx<;6=sP&PxC%YRIxEMe&GS1MbqPtH*JyrlQf*pcIn1rb_G}S(B<qeP)h>@6aWA +K2mtd`vrwKnaav~q005@~001oj003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*<WMOc0WpZ;bUtei%X>? +y-E^v8mQO#-sF%Z7zDW>Vc6>L29BI=<aSZJXKp@&jJc6ZcZ%%n+H^zEB$)LQVgnfd-^XE^68j|i$&E} +{=$Fv5vCXviMWM_7B>16hQaX(9TqiJea+fwC00=owoa)!rGLFeXG2w)j*VYIc(exKrGcWelJgIqifzp +l!*6-aASG+qgH+M%VW^;sT1Cex32G+@K9x-J7@6zzhb{%%4wdYESc}ewdE?*L2*s2bq|C>Q0*$eG**l +HyHC8UJ6nTF!Kh(tZ>SQ|K#QB{q3XgR+%=t@f=<<62AyV|Ebb|J(g2GmD$~mFTh`V7L=cqXU|fJNV2@ +D8(F3dlZbQ9`bA2)?((gqylhO>flL=smU;xOKIovyj-azTUrrjGR;)~5#Y0@AK^+;BQW=x%X7I&RgMT +v?{b`ctg#Yw19>615`cVvz4Y~-gJ-G0md=WVn0z(t9lxKgToJ;qwcyZxF_6tx;0|XQR000O8^Hj4?Qj +8HPR0041vjzYFD*ylhaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWnpAtaCBvIb1!FQZgXg9E^v9xRNrgcF +c5zCUvX#zZ1BSR8VI8#9`qsUwglD^j8Sbl(P~RZlCy=e|9v{yPVG1?eVo8p(tY>qyVK=LmXIWQZED4m +1bA6VWq>|uS=5Fl%{hdOAGzjIgis5f%8VriH%!q&dtQz<_DtvlpQci=&d9elEm;V+#wh(NXtTZjz6~K +-FGJWy4|cn_U#+6G-7N1H+sChw=Xn{+!N{ah_kYpinW<prfn9`<g%n4IL4#3@S)koDP<P=u+>EL{G@3 +Io2j)c088vF{6!GFL#f!AH%}r}YG0T+DGxT8dH&TJjJ9okoqrEOJ_c!dffjR7AcgiJtdu9T-=%R4~2R +&8HLY;g^@I>OXkmrru>iJ}Gpo*rJe@#Lln~J8acNM&t>>`-bs$wGZTiY2ml*GXq#tJlVaYM}$XGPXlg +^=k_$%T)oAOwFcg{|$!8~lQizb51B!EX#zW=r=NdQ?{Cg!_w_QK1P{*dEfDAc=<%Tqv}z$e)S+JJAFt +;E&b9zNvoJP3D@tYImSF08#8|i*UW|?|j$lelHFLU>5k_eTso=+Z+avHRrPt+{Bj3BQ0tcjAH05>>9+ +kSfp`K$f<pbrS^l1+?w+F?F(yT#AK{fm%ylw!KetXCFi|Djmc`;mP8^$z_{x37vcY3<tq%j*)(A9qWd +r2QJ3>VmL(I0TzgdKAvY-Gdo3?z>c+!0%k9(*2PF0Qsp_YKr+1mXdaLI;xISsyTnK+N?@N9wsx`m|_; +UBKie~WRKn;%5Onz>(M)T(Vv*sUAO9KQH000080P|F{P=INvmqY>p0PqF?04M+e0B~t=FJE?LZe(wAF +KBdaY&C3YVlQ-ZWo2PxVQ_S1a&s?pVR$ZZd9_tdi`y^|z3W#DI@#d*2L$%8q`S~VLm@2`mSD8@I8h@@ +Mv}8xO8<LDwxhN4LHDrLVYQx*_ukA%N^MO8MNxOYvse@$o7Pwl;@KJ1c`SzS3@Uk$P8yv-r)6m>ER^( +Ug>sD50pr-H+=*jOyG2o<Jwe@jZ{;&#xz+kh)2cB(&r7477uvf>TK(#re>4{5R==eM${Q}mT8p(j7L9 +0Iskd+kzyGk>SQzXXC{qfx5)Edc>91==i6HeYuKXZWhb~DM3~0%E1On+m8xJd^ad3q-Cx03~HzXobF~ +%ya!JC45le`GEN1MS;=t`j-NjT?Ap%kp|e|}POk3fy_sQoDno`u5-j0SHJ2MicC)&ner-HwI@_#IB;y +n)VP*n%N?gMnxcNNtyX0yA<hf|@8`0AVM!{XY6~8lm-{P1!XhIZ1opbO5ui&l{H032I`mFF?Qb!C!~i +<N_~ck;|Js>VQ8sA>#Sh7HJ&4|A~h$zKKp6?%=-zP6hPdx74u0Af)av8d05+h%DjjAoIJ}@(lPx)B4x +&e>%qybhaF6IKKwTD5?@(@J%+$xw&p$gmjiaYvY5$Fq+jmIZ?(I5-&__e3QOQ$1LSt8GRGx8mHZly<1 +#>ok~GneS9HjrKDHp+{@F|rMUkn?4P3g!?)ZCD@uBUT{wR0z&0_Z*VUFWVt)Q^mA*7hDDABFRya3FaC +mm)oeS^EBmFqgv&(<zy*4j;yrum$V;}QOQ17oj5-B?inmkW`0Z>Z=1QY-O00;o{RI^ZJ+iOfy1pojD4 +gdfx0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJE72ZfSI1UoLQYomSg!+eQ$5=T{6A +1d$AxKyNPs9Kdyqwm{<oiJO<AkXGbK+-A9}?k**}MgP4sv!r;58yE45C2{8LnVB<ZIh)O{p>W1v5w)} +6c2K*rF&JRyJZu|nN^SR0>fH`K+6W)DEd$3zj~wM)4L{z${W&XL(bN<X@+`Y|P<T`kK}nq8pchO97Ec +f#57?nB;n6kpE0z!)lrGct!60Knz$1EPAXda8tg`H@9Iolt$hn14A+$`7%4^pI!4-O#5W))Hw8WPDiJ +vdw#?|sm1^~AyFo*jJ147+|2t9#VA!r-X?^Gd#H=C^rm=CH7`JF3qvth8gGO=>azM`he5n$<AfJz;?7 +kwLp-dhzLkHVf#(VkLlh`uSJ^TI43(s84ckiX?E{mo_p_xKPSY7pf{#;w&OC=(oPv9AJ4hEoBQb##;$ +Qjl8V_#5?xp3)S&45ZIgq6&|HHrgXk_G|9{aHMYg2Wbc9g(4A^#P^;aexDw0Hn4qUYDa=1pam7GsJoU +p=opxk=x0)-G<XEV!_nNu0N-|ON>DL+y=@}0FbL~{fI1c4ur}!YOPQc3g~io`bHiclVx&g8kcPy=r3t +n99bPM=XW)1NIw6HFwN=0~sclpk6u^UdCaaAKQuj|Wjhx%#EcOkmk;GW`&Dmq@mO-H3At}%XIl?>F_d +(8dECO2Lt|c<|Ec+&hpLVjbCmkv#<r^y*jnx!{A%?WkvP#12Yz8!Gdj6iquZ;eSN6Xw2PvYK7u#?xR( +nSTTDDV&idj~UAwxl8xcLlUFWDbnOOQ5u6!@BF@NM}$~1V(E|8`U0MGNkk3ZBzlXr?%E4PU<ivS%&Ls +l9IA)Hk)Oc=yko`HN3m)HE)XZROL1}LrPqy?@QYBqYfnbB_k9>W^Ht2D+?_~p0AszP3RCx+^NRIHKs1 +dUj8?#AR<@r_di*dQ5et|2iq~{(0keC@!DS9kr<Y6aq;n_{5~vJToX_gKahPY7(lf8deTRe&7X9v<Ti ++xn%dYLn6u~#Rs;?mhm|zVs`@M=@e^_Tvn<Ig0uoL@8+6o1T;%XRK_;h?zoRk@ovb`20n6V7%t}|!NW +0h6220~CV0gK_`Q`1T3#7%iwe76c84Tc|HaX$tHHn7)13OPS0mz4k%XI$x_$SOW06rXC;KP+29NoGFP +vO$&kAqugN|;F|-!BG9pmzf_byV7@tx1~iGsX$*^rLbNMW$*b{4&))tjL_PmgFzCG)&6qTDR2=IMBd3 +`c?R(fxS+~PgXF$X*}PDhHkCH!DtNKI(Dt*deY2gF}lM<p9{W>()&t}EL|H35A%KgbWhH3RO!=g9+FR +cw1R6(Y|Bz}33T<kLz*)YKeRT@=MVSmRAE1RF+*mlV~c+KpqPED^VhFmr)#l_wfWBI?dWBr^NX<woD; +j*T}@r$mDKiXk##PRK6Hyq3EjusxDzET<hkDUA*3EsDNL<tb*^j}e07z^wi+m;z3%g~=ec_H^aa0|k> +?(g-;lK{y3X2dfce4WE>95L;1EfT+r<ch7);(>=(T};a7^P&r8R(#Q0oJq#7;1;o(y~ecefvI-$5aMO +|Lk#GW=Oa9jI7~(!PqX)S66mo1{AeN!J<&<Z@frZzX0vW-xH|e5wNeLo*$PZ2ISBA@W#r*eGZ^?B6=n +->D0I&i`bQcKTTwUpmrH#x%ZEzi?QR{P}Su-=Klrav#2MWMNW~SDN1TKJYbo>%H@HTH0T&$HMKcW}hC +uC(T}l8E-YbJa;^8M$2$IM<zS(BmV_ZO9KQH000080P|F{P{h@uto9B70P{Ei04V?f0B~t=FJE?LZe( +wAFKBdaY&C3YVlQ-ZWo2S@X>4R=a&s?YVRL0JaCzMu{cjt$^>_Uhtb(A@CST$f`-m`gXw#%KFb6?wYz +17;pih*<=5$n!yeMkd|9$U0l6T}CPmz=TFib!k>yCV1eBXRtRcg!b?pC#_D{*(n<aVbj!}z^cMQy~L{ +XSz$`Ce+N${DLmnX9F^E2I$>FZ5`IAa-(>-Mts(QdOCjA3Pi*KA1am*ol!{mSwprwc(}Feu>W2PL}Hz +h1d#sJY$C67viGSqB56&sC`lLt<XE33q2Y=V%Hl%dj;F_>aD0W<CS2N_K79iZ$!yppQr#hQ};iM+%Vx +`!G75Ft`@>0WVt8`_`=Jjf53MJICjqvc&!1jQEXQUVAZgds<zx1KmhQFzi}b>TlhW(LSP{Q0svj~1kn +?ajV_4+wqUPR36d(LHlFKCzJuq#ju?FK?VL>j(JunnG?R|#rZe^u4n$06w0wMD8>7ncu`TT144>XiTG +`%=H)dOmZ)XjF>Fu-&8cF;Nz^WKKNT+|&km@2u9?3nXZ-5f|<rppLZ59Dw?jY81#JM>Mv)Y+;rRv>rN +eu3l_F!i0x~j!=^xJ4O$_uVFXvtDctiny_ma6gijR2k1bTGVRV7XgRP-eh{OeF*?poL4Z0$(6YY3}YO +z{<+noCD)PJ+A~e0^ks)QS)lft2Hg3lW7`mzcHXm<&u+4O0yxPWwg_y$Iqk0W-j}i{d%M_qooVl(E+p +rvjsy{E83aY6@5hrY@#Z%D70dFyHt6-^{=Nf1_#GkXpG}MFKUrS!FRhtf~?RLfG4D<nv6eJTWhm19t* +37=3DT;;6FC1SfV#0e$T#fn0H))^FuDc7gZ9B7H~Ln`mzevfM5A7LV{L}JM)b!mX6p2Um371HQUy(T9 +$cH1FO6!0#M%3F+c=c;GX~m*1VF%fhmAjSpi{W0RI;eNXTCi?ghKKO%k}38r?N7g{pz|g0Dfw8*ad7m ++W4k>tU*FB+$WdXEzY^K<~AwoZ1Hp--_$Xpobo_arU#4<>Y4kSTBBpA3u%9?6I}enLUx|37!p)E7$^Z +JYiGk05h~>JpnJ!?3JsS;&}wM5)kD}HvY?F%^vG-i0;OKX7SDzrU3so2&V&N8Va-mr_-0{Nt?lNAeVT +Ks^A?F8fD~&Y>HqNiK9QVYMW5lu9JdC^F}$)IBnLD_DB_%T7W^Ci|x*;wOGEWDpj@A+U?h1;f~lPH+< +$Ee<$Fq#R4rlNk6Vd`pH2!ryLSLV>_iK`g?GK_XG^rv?^_QMMgo)gg6;GHbnqIn4wGf(xS^cf<aQOV2 +G%MU}#y0V@~l0_3of*wui*7-Dcwpvel9udnEjzH>4Ok07ODIx`H(BBZ1@OW3qGyS~UZeT)p}X^_qG99 +2|Fw4X}h;&Da~HSF?Yh^%I@Qegi<0*KBb%us&P0X_>=gSGHtzj*cE#);?M0mDsBH;<zEdp*0pAWzh{) +z~+POIcCM;{tVJ>)PL?M@$`%RYkD3tafvKI6#OXhNLd4;jZ73$@!W-2f}v|=0~)4hF19UI`6ZM~hAau +Kifb36NqnKkMZQD<Zb%;X{Lqz~ry|yvZOe(&-d!{t88wu+{rKaL?2PG+s^JW1?^c+NLZ=0_4#3_b<!e +!5+4$FHBSu1dZa{D+1Bk;;E445@(CSVa)y*NAGtCQdqm&_cq7tbg1ttzG0QYJSlG`1UCnz(>fw=v>Nl +SH@ecI#|%f>d{!d!?}m#WE2tI#QYs-kYVey-qoX@<En&Pz834VwZrtw?2NY(<WkGPFJ5eJDk)1o<{M^ +1XQ3RL8z3oS-Lk<h4;g?H9zmnitPiO<DKTFu@`6zgRF^HODG~%H)zyuTD4f`Punxyv#xJD;H^C{&No% +&)d{~o4Mf8y+CRw4qlI!@DuR$`vp5sk`=JNU|*-<5N_+?Jl=HP8B>oZkoD!>DpSBt`~KYi_f^0X9fY- +qbIRVXYtRNHm{zurlBpvF{81WMSfO}m?Xy$Bxu=+!G&*?=j`X`4^j%cF>i9dZZ6SPb7hr43ij-sCWdZ +-LDG;9%z%%O?=y&j%wQeiPdu0sNcS<{d0X~E`yB#ohW=CQD?fUZX%o~r}=L*N8`+RZP(v5}I(JgL`9( +kG2|Bu-2P)G<6OR2Hrv4B%L%fUP1myuiYy|0@Is8ys$QogTcmtQ9-#-;+6w!BRcBMChOM#O$3uZKWsB +;puqMHoYQS@Cs;{gr#vUp~-bp#~40cGJpBv|K<off6SgFFh!8?1ECYjn$^2th!lfwaZuP>7b5wnFJge +A-N*pjMs&E)qr1MbIt7LPoC`e`)vPprmFRm^JmYVJ^4U=tRwa15WuJ_;v67$*rs99M$O1L4AN2sKCkI +cMx6y)Ru9B1SUMQarmfU``UBAvLq7;zQ!=#?eEGtM1?(5QFEMgl^;${nRwvoSjh*-L0-LqJgyi{}de@ +7tOSB^Omb!?)lb(iBbXsvyUSWgXDJs;NYhkcqQAsG#d_^0G;9|x0*pJfMXGai&_n7^ed_zfWhAP#r(F +VKo0R+2}mxn01g5)>q?THU?T2v@4Fpt6DF!9ulo4_-U+9Ig_&AwRO;H}h>t|fBO0BWu-5`o;V0qn{4t +bH3tW8jyH*#sV>HPEE6`;R?@_qcDtI+p@B?i6m@jnq<dLdOe=N(&p~Bh{bwcyFbN2`fQ>xNFJlvmVCQ +@VO|uLT<pt>A@!fo;W%D3nU&x1ZG3gOcSS-P7>US*wzE6-amz}T}l)l?Bb-fP{-`h^g<s)msnMun?cv +m@jw6`RGBI=fX9oqs^Gh=bXA2Z2jmFah@A!uI)_|GEW2%lM@;WTE>|+Ati(47-qq5GrUIc(QXgm!R8D +=|3*&j#Mnc86R4pJV-Rkuw3+?*~V6pQ#)}T9D*fK)bZ5V2>SOl^*7(&7SEmhXF!lUjsmEQG8_=;2uIf +LvN-HGjiHKiE1v*xlbV^@kv6xP{!KnhxvE9nPmnSwuW6Lfe|9lYlp+HxarLw4OBUtVAswvT+N8(QW`t +pBlju!rJJIB-ohM1rx;P}CnsgT4<5eA+jgN46)iN5!}oHnQT8K80^k9``F35YAb@py^jnlAU!cAIIGv +=5Q*;F#tI6dPeZ7keHL(b_NwNv4c4EU^=2hPcu(Z@uv>8RHvmD{`u4B2scqf0yfd+tZh$B5y>T&WpO~ +6W3=Je0EwCsZB>*c?^(x>iZJ%ujKPsL`E`tuZain>D>S8Rz8*j1ewKnR>?Zo{ZNfu$QxJ_n(31zj!LD +@!q7}|>)1-LLpGHqVc5HY^E_X{pJMY?6&|NqVJK3JFW)n27zz$B0HYaIfwo|*wv||&;Q{mRR476V!g1 +Db-9%V0i6}=JpTe|Zq8)=IV;2<<O53?6GB!!nBmZmUea=6+nOBw+2LBx)hWSH4X?7-qMhf60U<Zf8Hb +h{4JLc<~|O3eI~`*BT3w5lF4%OwJFK7J)Djdv<JukEdgG+$yi?Or=Vv01#~*vjp|v%N`g9a&dxiP9q- +vA#d23=Oxri+FnzKbVK%%C69Y+^oH+d83rSP&4YSC_@d8of#GFeo|;+7Y|o|zW>#0n?*%Y)MRd!c1Zl +*_5}v0baM&x_{RFk*8A`3`$Fay%XWc(5-idO$a1#fBL8F@#532O2+F#qS>f)bJ?L2j@f5BdpdQ!HZBH +fSdgfZ%-Fr^Z4A<+H+72*9YSGM9^bQHV;wWC0b#H~Uu(>mF0-_*rI}M1AwIh90L6@cVCD^gIw=Th5WO +>+Qnj5xBj-GQFG%#pI2Elw1#JpL$-!UCh_OLJJj<+1#6wiA^BI?>;6y2y%1%zJ2jfH{Bd^=XrX+i{mb +Q+MKmxzwx3ex!8=JBh#%&FAzgLm#2f+O<xg{`>Js}__wy1VbK)TPikLS*Oq@D)1wdk$`uuOY_@&oaph +h>j=?)tVk8`c_e5mCUxRblQVTw!c0O<`r>jrQD}?SAjKE<}gW|;w*I{Ju8pUe2Rzb_dKk&ww;w38+#5 +P+iKQLm*QYZ)bjb?x1yv6O9zp`ErXG1$VB^k^$`DtR?vDjJF(gs2~0@tXt4FSVm(2Srns7PV8S<fwKJ +smUBrDe3R^n&ekg-ol-5GF!62L9rN%abpFCNr4j^j0fLGb_wagoNfE=odm+P>Fi60xS;`tvhJkVOgf9 +ahPR(r4AfX^iE8OnHMB^^OqgvWI)Eu&y}G#%62WQI?teJ}N2P~P6yR63DpCvs@G0heZ-tBTJ^G(s?wr +b*THs*r+Dk}trJPOnpk?c;P9#|^351dUFZ<c;F{zqXw;%UykLRPi|I{#3;e!j4F-l*T(5r(KQJP<v8B +%59sV&d0h@Di6jFAWv=c)Go4jpxu-Od*1yi=_GPge`)|jmIF0CWKxhM<Mc^8f`=E=0jNskunz}wK_?r +O-dfvr_JYf}IVCv2qQFKbEL`(oA=b@435jm9EV-|flhmE#?(D;vj%~7;nW~tn_0ra&{*M8A#uX9@8$M +F#0@P+h*H)}#_Kn3j+2mBX+c7S>MriyK&rMBBdbK%?=7>skIcjjbQS?4L9r1QI^xL(u$eZ;iM2rrq{; +4D#SwCRNaw$Gc8qCyhzdhoWK8p8guc!&P#MU1gKaQjsf%8mKEMJt%YrghfC-H#>+`Hk(CB7&4a;qK&N +^i5V&83R|n1}{Ey&l-9zc>mZ2GIHT4@oBD<r4DT@zUVWLXO+N1PTA11b(L<mHlbP(`hn55rQukp2KOP +2#HQB?iaSKHIs{qI`^^?z|h`mz3ALoX@1aI8(TWi@RCm(xyCdV5>lEM%nJpi9I`%f1IOmsiJZHiQ8_X +ohYnSi5U9H8Z<vTSLp&jHKLK(Ia6cLndvjMQx!eNS!eNWn0s09Or*F}C$>c~m0rrsfrda*%UVi3Zw7f +yNW3EI6(Odo^s=@i)W{ExU`W_`1Or*O=iQP`X^{xgDfvn<ywVojy!SzLIikWJB8_OV=+PgmOaAN)t($ +X?DIHmX>P)h>@6aWAK2mtd`vrte3r?LMB007-0001Ze003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b +!lv5WpZ;bWN&RQaCyxdU2oeq@ZG<HRS-m86`{+^fM6+*Ch1meNs87THl&8ZNOZzgmOPP4;$c62M~ak4 +ij<waYyukB<bCn(cwh3eu2yKVST?+=$zp-%YF*VF;agS}4JV8CdxCQMKpCyd1T`his+=qe%1Mn2HknL +#y*ZvBc$R`%Ruu)wH~_O0-)5TRWyA4pK`!xnP0PCpdCJI|qYrZPqOPm@7@<A%al`Mc5*?*KcnJoGNwB +9?k>>EJKvuM*@HIhKAnimgJ`((`Cd)~Sk!sjm%!pd*)-qtnamkt9=oU0YiC2WJaYj0jMZ;;)?XRl5Da +d=A@v7da571UlmgtV~^J?|3p+!#W82$@-D9DPG9E)>KTXn)ZIzfZoiQLQz%osZ5y#AFk9@`pG1jHlQE +f$~*zF5SJ6w3sWmY4w~9<i6IEnutuH*pDp)fFKJzb4>AB@zI!Nh`%5BfSN0V(B-sVexe85@mz~+Nu*! +Xf{C)xM+yOgf0>Ip)^EB;uelKpdANJ3WO;mV1C}IkL1$REJ#u?GQ<@!gA%NBRF5U8&#SDF-?ExuPEPg +Nq%2b}om3tKsL9U(NI+LNg5Vsm#FDG9f|R31fc=mS9OVnWvoT7-xkBb_kzISrW4@TC!X7%woyST3Bkx +e>7`0q`5cd!{DgG~q08z$IV8$5{M0L0l(J~baFNrc8a_R?9OW3;_+@)>7sf)$1xvr}<sre=@@ai_l68 +9M0V<rx0`CWpd4)M#U5789iG9M_)dMu5Z$f&A8OC@pq7UD4}^Rs(Uoi@3xIVru+#~Rn|;RIOl@To~q; +%PlQ_qt@DgBf|^ifxWLPSo-{vaD)yBE_{O;efD9+!KU_6=OkmI`ChE%h2&G;wES;xZ5)Jr!y(|9XhBc +LDs7t#kRLg0#|!^H8fCIWYYv4wqI(Gl`WZSvZ@})7FPl7nk*GP!4#d?cH5#LlUuo?%)((@ncGcCr&d` +91SgLl<+>yNBY+WG4!D;RSsVev{!r>n?7BX=q%~`q?tV&1XqciqS-rmFL6QuzPG%78W^QW*QdL(Nj3v +UZdNXBqJe3V-CCJF;1MlefhN=XQHES!l1#K?&r1T-OqQ7%)GH?Xo&6_#kf<tlXMqzmI{MF!sE-A@HCI +AJ;n!;-o9Y^q2e*b<xw5ERiA!3Y&A{oT7{K~Y-)#p~cqj_QzO~zA6;AzWVFY5TAf&#{)a+t+-2iSXrn +NTgiPHfk7+%_w~$TCBO-QO%KEa7|P_t0Syw-yv3qk>YW<Riq#g3REy3Tw@TANvT>WlOBDF(?c8u;Sf! +hBwhYUlq|j=}A1ZzU*k3B&@ne3htPxJJ8gu;$}6mt2kp}D*NyCrl62Ia>_(EdD4^(Bl+P2uBrHLsV!F +(!I>cK)0-4G*F9`1dfw|xyOoWns-Dp0MJ)81p#JaFXIs_Ar*Pt@P0QMs-hn9JtaX0p)i+YQg;#s^<<^ +a?1tU8Etee|{W*_n%NUu16Y{MXOnt*yGGLnOouUb)1!l+gp1bGZVP^ga1X5x(PE!M&%ojjh@r4480Ir +A<mhSNb^CkGNIdbHwcDOyCkV$`V{Fl-~K%h~&nZu~o!_f@DWomdx9l<kTMS>mRU?!V=#ma=5(L{mDwX +l3$r^ZuJUN<}3Gb$eTq+v1=s`J7N%tz13Hs(ZJX+DmoT(rHU}hsUzUccYhiJ9%yI_lne@h2N<a>WJ>x +=RoG+p9zGgg8r>!3bmf<2o8pytQ^p(khCSo4E!2!I~{~^-T0dh(9%JdJJQ&-Ww`Ich<y<|;KRL0s<40 +6I`GiD2QrQ_-{rpSp`TCBemO?CD5}S{+bm@fjaggh10hs_S?@`gU?jwV5?$IYy`1$PEF_VIz*vY-#0~ +<L=^)iXF5x8OknL~=iJOJ$U)kTyE`FaauCC87WIaoJPe=y>Y^m40IAE@RM&^YG7rtQ}b){na1Vc*RE9 +hKyyZ<*X54AFxcYLiuRr2kdO3!^B-sFBxRIenEkuB>7Pcz0eH67c#Zk?97xHE5t8O9t&&1CL9X$^mVe +fH(@;%c^-{qgZa>ThUY6CaKk?4-IDUe_4Vopt5AO5b7cF)9-up(qM_NMEYB?6zRm588*KDEeog{rC#> +AvA&Z8H)B<B>%jHO|-v5?-L)O1N5CTLt-h-TgtqoDKbQM1bz!bj)~x57iJY=<6$y&<K#~M=65xN?Vb* +o(TnK6|8)A(GZ`J~qTyK_&#o_b<0JKWcqm-!@Nm>vK=wD;zCK5eE&y&5;%g-Sy@<chTR^5*C$1Nbp}o +UrW3m!Rcq-b$VUW0}aGLIgCiGEcNuQuw_0gX1I>s2E;D<G0NavE+<{$oB9JsxPH-G_*p;|y=)(qsvKN +u1dH7W{#8kct@7Vq6WuiQqaW9mg?;N@CO!--z0Ouk_Z>PtWR6=eTDGEA3sR1Gf}9q)}4IfkU;u2-^oJ +J?K%D#L}}f%LO|y7w&Y7+P1}6`NBrr)$%XXPU~Y8Y;**IG;72-jxr)mG{|+$ejnhH^;3zqu1zYYQGY9 +`f>$!f{v_pAznK>2f@0@S~msry&iB1B?+v{q@HQGpn79yO0_xB*D^}~tY{h64{BGx1r}zO!??*FnnAs +fGv43=tq2Ae<dx{75LUmUcr|H%GI1%tfnj|=u86IlRZJ)U0#Hi>1QY-O00;o{RI^Z_eV6bv3IG7yF#r +H60001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJ*LcWo0gKdF>n9ZrjN9U0*TFzzCJ4*= +!zzm4S^fg@LYPWE~)d;tFGNB(tSRfirUKZu9Rwb0cSlhZN;a`qCv5TO!Z>HfPSztGe2d#bUJ+yP7Q)B +;RbSS`d22t70eELVr(4mOtb?ugZk%%6wU6Y*FNb)wJM~7i9ZX<fV9<<(%FXY__c{!Ipw$$8@=5oKGez +$z_{w)5QZTv#L&c{%BbV_9zzOY0D-PbEjqoBegJhlrwXyxwpvgDd293@WHYwxuB)s_Ca&QLX>pF_?Ci +f7G$v#dC@%IRN1az7j!AA`pNv7OaxsoYPM#NTQUO~f$V0R7c7o`kLUmRdi!enHBMhmqv>Qa$=HglnK- +|x8GE<Oi;UIrdBHZU6!O;PW~;wYp-j5k6@|P%y8wH#>Dvi`%Yg@ez1Sh_X|+)w!Js}`YM#Uq<ykaML7 +j<0UKW&d3mHpOr&r)$BZj=BI*UbK=3=pkIV)C)GGWpha&}dfE{41$V7ibXAc*|c^HdQqAnG#$$Fy{TM +pkAGV-0>o*Rc}Mqw~D0k!d>hsO78n5y?4`>c8#qQ*ueTn;p2!Rgur5d$B2^+r%-1htD7qMo<jQ*h@~` +-qKndQHqOLd3g_^Dt*rZW`2u6tO~j|5B=zHjgLl15FFzS$OMpFK%`<3gj>i(iGDxgUypc1j!5j7NPhI +)Su-eqWs4gq$C<bS97nNdgt`ggREyRP*_K8UdUe`0b|X(9iP6M~g66Ri532K))#53(WRga~kdL{oWN? +(n{Q0bO{)V<_W!z^FEt6*zD{{v)CSW{6AOid%M4jKka>@5fU^S--rEBkiR6=NTBOv>NoB=Vx2z$)A$j +h|@N>+KzMF9Tk(<gFF#67DS+0Z9)#|VWV0+w;|1-^@lWEDKmd77pk?y9QEzt|JWOHu%@7*iz$03J`L- +Hgmwfhs=-j9ZLPLLO+bW0GB~QVQ+H1{iedLn(pQL@n_U0t#Qq>WF|^hX=I*aOQ8I6wBW~-A=nT1+6p= +F+jvib)z!4Rxe6gHz$Z3uLTj<#zGRr1`>m(P3_(rgKe4b#$Q0jitAJBcy#_2TP%i_6X|NZsDqysm!9P +gTni>qg2e{K(cfd@nXgqP2~-QrcTf3gRSMfl1j<HH^g&xs)G{bnGKEM9bR?qY56db6g=8xW;F#s_s;U +U`MnX%hf|dT0X&@inZlP<|1~66F@6Rxkry46(paUh?0c!>D;MJq1b&%M;c-lYj7`T)<@+F}9>Z&VfUS +{kO2z4vTG*!=HgV!UDFTQ3TD@4urnOf9rQ$4UljjXZu8rcCGC7$Zf5F_6}$QbD|Drn-_9_ztnn^lPz2 +{E*e0&KWK14q2{A;An)HQG}L72J<AC4SJ&<$fsjcZDy=rGit5s0czHs?RhpNTm}LHZ?*gr>!%i6rLad +bel>#Bb07nM=0LH;>u$SOjpl4Z5jEUZ`m?m<t$U7)4^@Z5}IgTQ<$W*XeJX~e+*%-41p8!8n+v2YK?P +D1})yTWPpYne?J=Lhkjr5DKU^B9T5hSqzBf@=#_$H0a+o-54Kvh8)Z3C(GYR7YfRb=r0Hc{T)8GYJ&I +hH75JDY%x~=^>|Bz%1wj-sbh~BpGN{A43Z9xsw8fZxxmNd)0%sqkZDH;Th(W2ObT%V8D!P6ck*g*)S} +r33qz4#}5MY1=2-HZ)7O#^-Jof83CUl!&QM%V{?ySj9qRjkec+w;jptJS)$W0a8LBFSoswrQ+lfyc>m +4Swj(4w#{VGjLaRZ5(I(wACxKsCBZ49%Xb4obZL^{C|xn2z3RD$jNr{e}eI;-lWzncR{B5@FMQrrHwA +!1MZ9wcOd!<T%&sVzk}e75VZqgW~nXq5fQEfvkpB8em61|8VyH^ycr^=O@unb7qw58JQX8Qcv@-3uNV +zjive6_1U#SAMH25i6hH20(~N6KI2ivT?v)L)bpWY(cP}Pyu(eaYZll2*Nv}S;gId>Z^llCS;Jbl&l( +=pZ)^>RcW4dA|DH9hIEg15niOLaVr1Au(0}~({OV@$;r;uY2<3KB)Aje_dhy|xzse7mvm^-ZfcTBoIW +6*kv%1;Ex0LG#q|$MVVdwk?FHzlQDQ2(n-41NaWgF6hM}n>+Y|GP@b|=j03TSl3{ocrO<`oyT8^E)8O +4_+c5Yj#4DkswhNcOdqZD95=9YC%h>~J88T6M`0Cy|_+$sZ^1gdFvDzxs;ZLW`F3LndyHRIW@XYLMq~ +3dpJrX6QvfSGpV>ZZ9&EJQ2D9I;<^o=>F%3e~#pTrNK+`lDs0Z4sh}#c{5Es(ul1*wV;LF&z$DaKFMY +HysoP{j%-=bQ>`T}CH_5q&^u~e-)@rW)*nKOmYEuA`Fnz%_&z|Gc5e~wcP)M-I_P2W#Lqt*AIk_oK0a +~Wp}jHa2s~h+=F0uMGoE&&OxmMwaPnu=I??&#Rvo3=WA}ut!5l|CA!c^1ws{U!H(uadcOS$zR4ni12C ++HMPSq`s$^`Sd#qFKUC<b~Y?hrd5yGx!}0)|<-uB+Xa$6Zb2wXNAISAz?C#-Hk2a{tM1hXjP2vo_Qy* +ukK@f(Ws-#t#jJid(HeQ*ax22Lf|k2V|=r9LMzT)LT>c1_EveM<pi^hD%M$>@dID>pA|lmo&rzwuJI% +>;QM$t3OC_2A%yw2x>+sCYE9c+jf*l{KyNN%TzTKg}C={(7oFDeF^b<#AkBle%ZI!xQA4G7rO7exLLR +vdDEFw>B(*z_E-xabdL(f_KpMn9X5#^snW5p5|DCK>ThRXJB~M-pXhTLrT?t*GOi!oM!M1w)3(rZh7r +7fwJUd=WycQ`_`&yvG&E~X6Ap`X)BVczIv3_BOD(%xPEaV(yxbEl+ow0K$P0OVJZs;^N-xV*1-qRK^( +3B-Yw5d<e0R-Euy=pt=K~x2KRf&W&i?x2yT4tY{vS2?f1q>sD%YP~x$4S0#KzTXdExasAo-0tec9$8a +ogk%2NixYcXJO8g@4fDgIzLNFYi=Qt?Dc<Y5lbC)X{gt{#39Tpet@F-&_5(Db#CVUiW`cu1V&yHzH=O +nM2OcoYk#2@ewIhH`UC>dJ)GquE=XRU6XX{g4|X~LVvt>@zeWz2X?62Uog$W2JwKl#p_9&$z|Vq+-*q +0c0^AU-8Y=oX^?Z{pytF*S56h#Su?710pwmcd@ggnficosnDZb7m%2RI$EI4e&5W6fhAix~v;oY$H?R +la&i1;WU<|4!r+5cstll#?^~uU(7du8qCbkeI_62h!LY!H<bwM-u9#IMHu_VYrcSZY_<cRfdh;zDvj= +I16sF(ND3)GMzDF1^xj{TD8x3#-=ZwBf8#~5K&q#d-@-V+C}sFt*l`{T*Pz8d?h`nv>(H|!4-;@}Ssr +j!2yP)h>@6aWAK2mtd`vrrmO>bGAF001gC001ul003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5 +WpZ;bWpr|7WnXM~ZEP-ZdA%EJZ`(%lyMD!%h9RnzSvOw}$W;Ln+qniv(;#uKSGYc6O|C4~6shBqc67b +`_nX-lcb7~0f!qmbBa`#qnc11yRTM=(*LhbmvaTD#yWOsC+M>E9?S_%^^R`S_+c5ZATs5@WC*&NS7df +M3!y5R;Nn4YSGeSApcG+fDuLWvF+v3)s;oDu!d2v;;CAllwP2IJChK$w?y)J<NhGsV$5N;UBI^Nb>!b +-MfRXeNbmI0p)ZOK)`=nc7I?HywkX#j$9#-&tweOGZ1jR+AyvO*!<0YzF>bqff)hH<1x%hE_hP(%J#! +gnky)<p*I_CkquU6%D73Q0lNn+h19x*0`<cTEkrTmF1DJ7=F;0_Mx=Eegz0U8D?{oG61dHSpIOoz~fY +2Rfl8NL3Tma5npO13J-auTX#os3AyXS=TI454J5@Ldhv@>06NgSK3qnF^i&THd{Afvou|IZP&0gCB+u +klF%z&mtD(J`S+6K#cjchx>}O1DzZ9fX<4+ap(URkklh}nZlC7`r=Z;mlx$hnviyi<8RL95Q&jIHXRi +NlnEuB1T*;DX5w2j7)T1P;E8bExl6vXuqTuvv1Mkt4ZV84KU(&0tD09|uA3ZI=0~q+Rk=$}>jXeW_yR +tmTXDf2vbZpkr>$G9l?DGzuGz`Sv?!Zgq=+F4#pI<J&U3`g?Zx_*GHdBk9wy>fAD+neh@?jiNo=1xWr +~!|xq?{92`wrio1AJUx{Q>4(Jf9Kx<ZKP=S5!rtrZH#bdMO-ZNp>ChQuZcaqH$ZceUmE;{2*Y0aKK#n +k@G^M!b|<t1<(`$Kz|*GdXJdCFsX8LWzTnY<q4H$8(6J(;CdY1UtG=%UAo(`DnG&3$^wek6p!Q@j1J) +yFA|#P6$E3f-Wsq)&mslr6T{zEpkWX_)j&*%?uZScv13iUk6nVmX@+cC#@mmqDQH>zn>DekMsq9m#_v +V7t~qO87bOHCJT@Miys_WJkhyMw!f6f5$WAHWC?Df1bXZG4uDPB`o|^X(Smp5V>e$k^SQAW)8_H?hHa +%zrE*n{J3U&ymZ12P3=YYJ1s1n%~awca3faW%l3m!)Yx$-p#DIW~@>h%ODv{wQ-iZvB2PtQ+>d@a3VA +5jKDTI7(ggNXX$Bg)`NyQU0isy}&~r@X~gjDGy)^p}(K-`<~*L;fNnhXaCWwbTh%mpx|>;uATXNOZ^} +@xK@F2DrwLQqst@d=#27>f_KXlLqlD_xR5tN5w#&Ihm7hNi1ENd`F%wmf9SPAsI{tItO5KRuY(mF+jN +6U@c;!Auz^XQFlCEU{QgNg-I>EJ|4?)QV-yLKes`!+vqytg_)irtjMJ<CMzMdpned$a>n{hfD3>{Q0U +#&9@1ejLx|F;fU-x_fucC_fnX<sJUht~JSn+_-5;u&6kY4$_>!zv<k?il0hjtc!v8F{lIH3+9bffOOh +T4Zl0Q7j9cg6)*$(S)*9R&s&sTE+v50z|A=9I=>^jC}<QnbAZ;p;I(;OYW7`I#kJD6|2;P%ndqKp<$_ +2!m5MLE>;aVsZ?ENq4SrJL|7S;D1fx^%G7D!!#{w$X*2sXLRtU`zx=Y?*gp2Tf%%yeq6S6l8MU)ZH%r +VdySm^*pdZutVBe7oW+hucs6Fi1CYxU*2QxA7Q=KHs;w|5}D5X?#HQj5-ivMu`S=ho)e>`9u#r|;R2F +9RHAWl>;+t?`pRI1d>Q{Nu0oZNd;?7w@9RGMBVt~Z`nR;~m=*GgL`|SW+rpkPvgH`39C#s84X6Hxx?# +^mwj;i`g?2K7BjLwwJT4x79_zIFgEqs006X^;RzpM;56WA~INRyE%O(62wR%s`E*x7#)%yG1hM$0oaA +;>)9`__i+@lYdxu~O7SRc;EiYbdp!0YY&{^%s_GMd^d6r8_>qY*?CHn}MdHbjA<cf$YUrlj>fa`o-Er +twzoSeah+qtWkGl>AW_RovW~4zrd{<MozM_nW>GRM2dNHbu*o{VLJLwlx%9k_wKHq)J{(J|^SSo5)8s +a{+kxcUYw8Pv07ipbfCbL;mZubG?)3KE(kUvv1#|SW)=o!VRmoL#}H!JM@+=ecu*PqN`adR7_C3=IAt +6!n5ioFDjhw>anJ`ZdE_=RNL5O1etx@(r@{odH{*zA`ulM7Z8XmD;n*Tc7I*);LZ4QNX%7-gftS;4ol +;QCRQhF&c0f9^hnuyd_S@-cKAOrhX&Nb<T#s5j$UST@}itu;!yCFEX-q^Jtx)!J;YR<*oi<`nNg>HiN +WN*JJ;Dm38LSd0jG+@!E@d11(_Awog_zFXkT?>Va+Rt6Jfri8T;w{=eNo-P?_oZ_3AZ+5V3NuYEXs^3 +#6Ab#E{27v3P6I(O-H;^#_$=M*6j;m%VqYY4$)zHQpXP@BL6N{!3F1#d(pn-u4r)sPS15?kiliKp_QA +uF?UYD3m40iv0N{5O>zty5F7#a42-*i6~PSCS&h>rmCx>9c^%=fCxu;cE$1mP0S28Y;V_&V)3S$3U|y +Su-gt?bz=Of%KhliL;gio+<<rS>~iVV%2~~tjG2`ZP(NG-=6Cp+F3E!}Mu2{pwzDYx7n$cTkoF}I7gn +1E{0KOr4b3|BHV#-xE$jqN$mt%l24CO)<F<dg-JfK08QXd%P)RJ&Bbs|-T<+&4e+29|p^urX1-m*=7C +&@7&Z}OA5yLpM0xOw`gQ|cNg0!ON?AZmhlcb-lqq}5s<RqWzUF4izhmRV1&P(gNvcOQAYfGDe9%|Dc@ +4R~!9(AR=b87caNTn?}B96ZVqeA)17hWrm+>%VT@AtceL%?O}pgD^7G?t!F0V6>E0Yn_sD~363=~6v@ +#b9q4-82z$#Nkdhw4oXN4cjz8-5*yE5F;S`@IYCXyF*!heq)$^PSQvH8ejc=e@+r=Kh9=~)wIDBl%I$ +sQqU*y3da9PC@*v1Y0pYf3kRE#<i0SoDSD)&sE)s%3RlspT2>ImymJ1`E6fCpSK2G34a|Xr@(X>vB)Z +^#?VoY^-AQQo7*xF0SwG%pYJGzZh+0stRx)^$GJQ#JJ$wVwKo{ntiHE7V@8k@%1&C^)bQfd<_O3;Y-S +JRsJ#vYnCx>gRFR6G|fZ9p-FkaJX`H^k|o%<vc(~x^{t)pdINWJjBklJBf3-(QdU<8g_>9xN&zBK%7R +maB%nniekFo1%m2vrumZ@3phPJ?cKl#}S`JrkPaUSlTdcc;>ElxMW{4XZ4Bsa;$=zKHOzs5hH+*GU2B +Cl-)(-$?=KC()%d(!l8zGH`X&_udlx5=VHMY;d`du<fqh>nTFC^sl)2^S@!Zj60yrx%oS3hhYnTZ#f5 +=*)+ac1(bZSqS$`oiwRZT+-%gewHDbjwxkN)c$+es9_@O*<mND^Y>-W}U$>}3Vfj*b`gp;hf8vC`k2s +zeG_mPKY6ivqE;Z2RXIfMbPzBaGR#LB4u3$Kn3vbl-q_m5pA1*^v=fx9Zgyw(1wuYA`^d@q}_H~sHF3 +a+%0OB2N^0Bqo$tGjrZep=*sDWKSpl;!Gb3k4(dD~ar;=QALyweOCJtKE@a|88r(SrLiUd?g&*;b9m` +@6-pMU9Fn83t^#mE%5f-?<gHm!&h)HG<$1ac^!z(J-t+;W^6_i`Y5dz{au{F9ugkPUbr<$zkPzGa-rB +h-=FYqb+FCp#<)(en8~(PcpyT6xl}Inuc{U16*}GyF%f6ToC-Dx{78ypB<sWn-?}fGB`L<RKN3%UT~% +{jfj5lK$u;@I^`a_{O2H=ox(y4mBvQWcuwAbdiD0riM)k3Cx@d`EBM5t$@_hGRpcW|KrV_R|CU6+<VO +0DJ41V3<X##!C}ZP5ft0KZJQbKn3-V$`j>UlAdNGgY^2PYX&Pxw^aV2-1D6+bOvH>bBfGnBdl8f0f`B +zs%S$N;B8dO$@2`Q+A%!4W{$^6st@$s|2%tx<Cgmj*`muY-quFu#7fhWv0tpJ!G@_95$YU23PA~BD~! +s|uk$Il?Zuu5=Bt|yiYI>(8hJy4Pt>opTQlwblW%Fq2%t88b8^Pk>)Oh5kg%cr-e>ASPPpM6MQzJGuA +@<S@)@$GNlTUrVR`l3G0j?^)_BxqGE2jr#Lj)hn%Wt#2Es^R-zex$-m{e0cq-u+U}X}jzWGj`}*M7V! +N-f<(Uf%o0bh0;v-{cf8iH93*V-x%1g1w@X=H)mG80;^GYJ+Q&?>Io_GA`I;R8bFAxDhgbI*b(z@_@g +1;3*>|1degc;aF}ccOy{g2kZBy5$B`OGLLET6QVamSu`KoghDh+#N1mvu8+f*4!<e)|?fJan;9p7-c9 +QT0*Ky5!SSsld(ibY^#OizOALUpCJiW{C=Rw@zlX?xOJrIfg(RmQlKG?$NW4_S;f<l+NHWkl>?7lY)Z +rS4l&N#FI)S{{a&qUg~t1_&*9y<iVl6&@FP)h>@6aWAK2mtd`vrw&O+z6Ql002@J001li003}la4%nW +Wo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz<a&s?VUukY>bYEXCaCyyG+m72d5PjEIOcX34r?ye_(WnCin{Cm +DCPCw-DK>_|m1vu>M5-jU8#l<mcZSqmvg2)EYGBtkIdkU1GsBU?FnkHIN>d(Np(Lm+WGX3AZeXi42+K +9ILhiuswJLUdNW^x_HJ26+LM8?k0;@Tn!j8*YRvoxBAQBW4F-vg)^_Ag}YXpyZ0(VDT;a*bw&2`|d&V +yj3Al95&4h#qx9$0$d+PT9(@&~ZToRg#8?ok!EijZg|QGv+vlxO5$S6$tG!Vn=scTyBy;np912VIGky +eD6koS<9GHYf&Ro*AwMOVQ0|kZ}wIZLtFdTAE-6j7src?+R~PCV}R*(9%iCGLIO+AWQQg48tJUYL&re +vn^1GZ#IAqD2+gO2wYgc@!zMI{(E82&nXmA#46#N)M2Nl#F)=3T@1=th9OiNo5G6JRND#PvLdw`P9X% +rW`l`A!%MggcicAl38xU|xfarf>%g70U%zHC9^ewbd<}vC!JwlRk>CmsY6^8O86|l6T1i}d{`~NO=`x +c=0QkZj{LJadTIUj{%y<^wGc8nM+`*gb<l#ZsJ=_%{wKE~X6gh<zIJgBugRvSaFBXn%l4YJa#5{s<Ow +#<XLTKa!a>H=MGI%V)ihDkpJ2ZN|^YAEj&(Z?DV45$2diyzqiORwStPuKhmd^3pJQGsjJG^@HYcC0HJ +(qvfeCfF%;x^%(mt9>0{By31Csqvvz`YD<%u;bcHHpO7vY113km^BFfjlUE@QJ(e;*{@c3ngx?6OAFI +Xq=C&Y@pk;j$XgXt;n!4lD5~4PFn-RGkbwL41RVW>4Z4TT1VE6lyc(RLbKspQTzD#eAhTu8=kl0K$kj +kMc0L<7M31?<#{UbI9-S0)oIjtjTt4=BW9rS)$?}&2Y$q?CUx-}$dR|c9}y&Pb)nge(xY%$*CzaqnWC +^Tu*Y5^6>w~_aYbg|Nz7uTJc6ov{D+F}SeDhtd8!_;94BsHY#R}&EK&q|1-+>KYRfK{CBIut0q||5?k +6hi?Dl|fE3h>>N7d1UQmgT_Z?xjf8M|KOV$)vyGV7k>XKcH(-H_PD_8XPUd??$)x18wgBSyE90GUO7w ++rJ$yK>9kwa^xQ3LidvSitL>_cy;m?7Bbl7<)N=rn*EU2^w*%s)=ukJ72>cEKg}KGRKSKhH~+%lZ(18 +wXTYO!b*@{wh6AjeJ17Igm+<#BZb7j>pjyf#@4uU_iyB{;qo5JxlAyWTE@_QxOQ8v9h0n!&nY$Ov}Mu +J@@+`p!gZ&TXdm^Wuz{wF^<9qrxwSOup3uOZIrb}Di%LTYvn*UsTJ$l!Ge+A3kRc0>f~N_5@s2N`=cK +cOtKs~U5;7X#O}-8Q&*ZUd(*;uXrZb-YXAeCO{2&wgp4-eGZ;?v&2yU}|^On8YH`f(A(7oU8!NN^gvA +-$v7Km{bpbDE8mL?7YYF}OLi^LmQj3YM<p59BqI+r+s)3~{W?}rpUL-|hlkE8E9%d}mw9cBF{%k7aq_ +gMQB$K#zFw)#{o4bYY$=7(#Sxsl~3%VvI^*Bj<G+*|C)>ybt_ith7J!r%dI#b-Xke|kyc=ur4}h`Ju= +59_XjI)oU=y3rKd{gr_$6T%fll173?v0dh;O_neny^fG)P}N4z+>cl0g|inzh*O$p)YJh@x)w{aeYb= +kddJOh>J)eQm|`F@eo7`PQZj|Hq=W+!j<#~wMI^meetb9U-gF2P)p?sjs_^;E`8M@~IGwOJ89B5$J`H +6inoLF+QX`EYR$JmR)Nz?VL7y6Mc;@sv&72yvMi?j9C~=xRJ%+0us@5F{4ajq4mLKu$V|ao=<stQm^b +`zFx3f5PPcefYQB6K|dl@-OPsJHgu{S%_+A<mHUZ8iaGMYVlio>#bGMiz-VKy79p6>NLIc4jWiv4|dr +ca*lb$M}@iujjgOlrjM(0Tsq&GqWfw>RW|NSvX6FG4!QlSFJ@-AFG`=mzr`jV8FqXqh9noQ$+ud1@^Z +|M5bdj8(>%!oN)H|2M5oXrnne)g4Akpow>+2rlvHn{iDpx%AF>HsaUma%|0%->CkRP4B|O?~nambM*5 +8KG*%kFj^e5P7iWm_Nu_Kc+c)R?C^PBi-e|4mZsoLl+P()+mC(*H4|76@2OAUXsvV<{w}NEi)fUz?ng +X-w^;v3<<$JcSNKtuL$^=TB=`qVO9KQH000080P|F{P$4baLKg=B05lx{04M+e0B~t=FJE?LZe(wAFK +BdaY&C3YVlQ-ZWo36^Y-?q5b1!0Hb7d}YdDR))Zre8WU0=be4~|#Y*dF#GECGtdZG*K=(YWinAh2nPw +%N#%AyG-QBLBW~c#%lm?4$*T>BYR9`;CY6DoeLyK3^50$k=>N_;#0Og3x82#)V*WH6M|P-}0QN$%qsQ +57UUvV=h=m<J|LBNaO1^9!K!22}}V*ZH&iZn&g5eA~%}}-LiZ~Lza)oZOWrb%(e{nM?|ikZfHhBpboU +>a~j7W*D<;B&n`|szMD*E{)pgs_WAt;hqK9Fa%u8*Vs=k2-kBl%oX<Yv=;QQ{>BXn1Kk`WR`Lm3%Pc* +(^8Ny7{<O2(fEa$h(+PU^T!yF_*-Nt4<pI)3zJS|RR6BiW(N@=!ntX8$mW<yWao>s!_>8Zw(T9s&Wrg +pTJu;u^$Oi!Mj_?}lYEdu!CFDXxsYCA*E^TL?sIjJmglrF!pPz(cUJKy(lIVY3|03r9B#Su@|M5H$?0 +k0v@OpXc77z9rU&KDaBffdJOLvI<NE*9c`#}*5+LUeFF3;F6^lG!kVdn8@qSdx>Z$DZLYe<QYn*yRZq +^Z8NE;?+pXqovf4rx~Myp{$iUUI`G;Y%P%j#TC^NDY*kM&!$q2k<D0w9ZP7>mITbFC9!14D9;%<N}O+ +ZD$rRp$+9%7P#I3O2HSk?D)5>mkZ4kcL_sQJkUK6mQtCBCYeFEWa=K<U-GH1@O<^{HG6t!i<N>*48K* +J-hfOLT?KV&-<eQI9@&n?#sF+9*6%=-W`-7$Cb|>y<bgeZl%YYh=2o)lOBCw(P>4wKq#**V#P+?e)Jt +mrDU0kVq$v|14oa(qzI4@p=KxfGy9wGZ79$Sc1_y(0JPu5_i0ty(1d|9BFE()O-i<lBMWJ~RU+-(@(W +CR?Mqyj@yCK+HFTT=n$Sh;G+LR#d^u4}-NL&||+@=aRAQ8ExJ??TO@EdsiXY5QJ@QMumWpwrPnuqK`9 +2!k|A>uU(*`39H{9BIjia+j|h^Eg;aBAJ&ekNiL3OexI`c%{<*unI;vk}|O`7&{}6Tx#_HdEiyq-=R- +`-fJYk;m7`9I5ZmS;ZRkQB<gfsU$u~E|GmqqjB6FB*X9c42U*-QsbF7)HYggs%Zit^Hi9M*v8HwhfZr +M0fv@mTPvO9V4qyOXU?R<eTt=!+txNJ?Rjhg2G^@(lVo_rXJp-~`ESx39dR*~-1%%jFil=ViIR-g7IU +%w+-H2`cTg;d8M8A{0K|WqmIInf9YV{0t0?){6IClvb@?6F;sM?1wMJ`C5;s#fZFGtlH_=+905muXZb +v<mr#XJ{B3V1A?G#CtBsH^J(kO*m@eJcj&gh4=X7h3xP1{q9?LCxZWhl5zqWr$n|*d|H=F&6=OKE3$x +?&aI_zbErgZ_a0v%l9u&C*5-F5yK7a3b7afZx{D4wEcR!DUOJ`R|K8qv@Nl%IDTCGwpRgU1Cb)RnYAs +CqL}H`ahyZh-!*%A10A!K(6CoQ%#tIS<m3gxu_86Bd<^F;BD5W}R`qvzS#2NUKGcO*OghBR_K2VH^`? +~H5;<^WR*U^ow+gHfoqj`de5wH?vQ=Eebc;v80ri!VQw7_4N>$OPDYnI42Z7#GMdMg1;E$yN<}<)rNA +8I1ie=2h^XM24L%6)(=YnnZv|GP3MXB=?4r*(LOMTt23)*aeChB0+YX^<<_~X?`2@q!30%c?dC^K}r8 +o|ZAW#Zme24TC6s5%b?gbQs(>LjzL0YQ{nzi(+#BsWQVml!qDh|K`gRpkxTzZewJuo6mM`STXmc5DB! +jsOCY=M|Uo?V|l9=cpQLfl%T#6ZnpD#suYYZVCRlTRf0?#i5YNYs&XfnZn6($svf6_4kl@PvOcVHG49 +Zt~U)Ztf37>xqK5T_wT?2%z=U~4==J<8r-59DXSYYHD6dH+~x&+KeCYZ=<1j2a`o!h!0lSBD<ojZrv< +k!gt9Ly#_=)HFM2^Ehpp?Tsfj;phC`Pci!FNi=GP>)Dj##Wj&s>bl?0m@l?b(*ZE)0&iA@r%S6y{w9M +x>3<!F!qHb>}A>zb5V6X0IG@m~4ZW&77d+4RVZ5h!cF`?hP@v`zVb)Tco!t)9<PxWn9alkcHYhE^Sh! +D637rH<vZM30Vrai*V%d*jx0BUR4yQB<$Xy#)2abr?PKINqe_8gZ5ttWKuQfR-HQ=;;)s?;Q!hRaw8S +dSn&#&T`Z)nnMmtUqc!TqO(Hc=N8-w>i{7hQH#y@#F}irr_^T4CVLB*`F=nlv)EP{R~9NY`>DN}>53; +!c~C(!pOZLIORl$D6-2E5d;k|(Zs_Lc#*GZYF3@Gh=uPWxQuQNtNLXFU-jD#{Z7O>suqnHR{sa}eYj2 +a2QPAq29R2<UP)h>@6aWAK2mtd`vruJ<Z>jeI004yr001Wd003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa% +E+AVQgz<a&s?aZ*4Acd6iVjZrd;rz3VG@lmJ2>P{0R6RtlpH6*zL!q9_Df8YM)i1tev}DEjXuX=<}#r +{zJ*%$vtI3t5V$LRnUJsuPf9h*fPP6ru;&@J>N?{>P|bM<!WQW7O3wZwkmbQy?gpo>v-<w~B{_emer9 +A<h%_wgZ*g=H;A9iBbXZMENTS-`GRa)H}#KA=wc|U+~F8dKFNjXHbT81Bx;(eF?n8sMZ#TF^iSf5}HS +PY5}cQR!O)?qWyhL(k%V)5N9OW#AA?I0(AbhRcNpVg&h^Gz<svefwO#DxL<ja3aV}44NSln0$7cFt00 +ZPr*>m}Rupa4={kFiqjZ}P>j<t(GQoIc{ziERH@EHcj=#n>?PbPPDIw7c{r)pEmyNJ4Bb+m-e9LPr?4 +ajChOcmvesH0+C)9ivuY0xbLyQjJID<uqmTeri#<Hb3?04HG@u2pnzd++N0dI23iM9v7v;=E9+8SN*0 +GDuc2R(*>M^(4@T!YTz>k2&?no;7=8lw<j-`yc!sEl41FHGS~ssE|bQF4E!(bG9{sQ((JVS<M<G@0VT +cDGx99-Qw_vfrOB8-ZteU3O(EdQZNP<cZ+9E^m4<+%X}QE!z9{f}^tp<$#@05O`CMOds(2`D2cH1kXq +wsDRpDQy+7*1J?TsP)h>@6aWAK2mtd`vrxXp@-6BF0071j001cf003}la4%nWWo~3|axZ9fZEQ7cX<{ +#Qa%E+AVQgz<a&s?bbaG{7E^v9>SZ#0HHW2=<U%{$hq)rj)cAv6(K$kd0fF&t158Gg50wbMmBGd~=%8 +fDfzweHs6xo*YQeeO~A%JD_?z!h4-jR%#s?1rEENfFMND?OUs#J#YTV2Z9K+=4VSSB_?i?WDVU5K>IA +d$j=;!=Cwk}%RzN=OZw=oaKkWuPEC6{+#ukOF63i7HMuP-LZwwYYCxv{9m1C1zVe3mms|w_Jl8ij&$1 +*#*kWtd?-bQ&Xy~`|v!&SBZiZ+*fRhf#bByD<L89{|Xj=e!Y1UehuO`p&xplm%);)z|7_f;HO$h<Q>c +;<WLwII?t=-3#a_TV~^p}n@9Xn>wVjkGPkdo;jUZkW&)q<%nxIv?^)+ma;+Je{Kn-SG9w}4%d)tJv{q +Vd;9)L2X6!Yqwo(-4I1`%RN|@F~tsy(wa3$!w1*OOL{ZHs!FtY|$ab-kWORjb@Q&1_;Z88y>3M+dr!> +9u^CF7e?WUSV>is)<kk(&anFRTo|z|zq^<C>WoK{Wd!%-RxIVgZ$3(656_%feugW3L;T#B7eH2&-^{L +Brx<{#`RKiVW^qxwN>>2q{RUy8&V;jHZNleBa0HBi0{J@5qxEDQK*t)?Ggseoux=$ydxbaButwKe>=T +Lu*`>CP0yilpCbdkZ2iG`V1B19U94oD0b!t2B-!o>taU{lCaxc_7Z2oB<!zd_wMTX5;0GK0Cb>1E+ZS +o)o=SCL+tDVGslzzGKiYBX=>>l+e@t0*nVIssIoL|h3w$a0}{82#Qs@<rZ(V#8HTjeqF}+UhI`!Frzs +!11H|*$@AHVV<Ho4KMkKIsfQ*J=IJ*i{V(aZoQIsZFb8WF3Es)sC4+n@j6#9sf4ha*41AsVf+GJ0!PJ +X?ZUCxv1tE)L>-3^>wfBZx*LlU_3o5pWFqP<uk`_ZOT=6`sFw(~ze&wliu#w5GQ`QwU2gTl3GQ@(*;) +wfcl=eSu#y-~f@267sGis10BI7-zrJ-NED$v-gN4>GjqxPbzm6MJ<|JffW=2NR*sZuYRKUgHKsJD?`a +I){w99b1DJ*sGZ+xY~Bx(!OubO}fU4c{rG2JM>66RLq);)G^ONS3ISTwcTcI<CQAwN(V3Mh!zP!Xb&4 +SGF?a8!|6a|>=}&)y<>lX!xFbNiWadAmo@FxObTrp4G2Qq#(1;Hk^jhMFfJp)9tNc6aTz=Ei=ZbU?yX +T@(BNGd-e6cudk|+_-d+S!H?j&mg0|C~v!7?K<ad^PyhClIh)F1{sv(^sUAy#}(w!1#LTPid##_%f9T +EdoX3IZfcd(7zF{{T9gkja528mcB<>ID!JJ@-jf5bSs4+?*n8bUjER?tUJtdTStMgvJBHZ7ZT8)*Os6 +Z5LV3v_4v3?7TODAwB^k-=Ucuj9T@2bT>@=@)?~Lb3W6)zKhh$D~1;y44t5=>N)MJnhl1TDnp4B5MSA +HFb^gZG}vp!-b5N?1NR%nJ<neHz7M>lSd=<j28s)9h=<Pu=MuNl<sGXNw?+yPvzo8wvGIpg?+h_BS}8 +992<L7qwSxntOjliFG$4wKll7R+@;XoKKd0Jr)6EVLm|mLc{*-1fMfp+ZE^M`@_G=mOu3{Bo7esbabb +Vapc~!5PaDDBPZgo}H&9Ch1QY-O00;o{RI^Z)4V*`41^@u17ytk+0001RX>c!Jc4cm4Z*nhabZu-kY- +wUIbaG{7cVTR6WpZ;bWpr|7WnXM~ZEP-ZdF5DJZ`(E$e)q2+9CVd1N2vFhEdz$c0Sc^X(RpZ!zz}GOw +z<lZKvJ%aVgG&Skh+i(Ww%>jhWR0p#dAI$e&<SWM6oAvys1<rSR50+FAJdvUCSb?6pPLG8A<tpOJ3wN +Qsq1;QWj@iF+npq*&sy8%P2muJS{{d`LV%K?5JXOD%r${WygKitT81RGq0lvpVt-7QYK`iS6T?VjRo7 +XV_9QF&B~g}1~+P7#(YO%*L^mbOj5QXESGpPsYD>dn+bsr-w;W-B#%YT%p3d&1{CD_rGCdUkb^VlQqe +qNft+=x2?uJj){#R*8Kn#v3#L>ioKI(D3fAyMO+&CT$*7d%eNm{OSpUHiRb!*=am;hB;y92j+suG4Yh +Qd7v5f6mt~6b@u<ouVJK$5W9G0F}lXgvsQwLM?!BmtM3C}l0#B=a#PP6;vy(>1rjc8ed$AkMKK~jvB1 +C_HM%R80{0@#Rix@X}xfh((Z#*>(*-v&;eq+<KH5?L6AEg(B4tW@L|a0XvP<}8FLgiBxvo<8G-9AZR! +G1@``U_g8odaK@T@fjS&^a4Vbf*p8K$sokw&kNN{01ITO;=vq8@kR-%gy%NPA-iBBH-<6gK&H*gZh`W +wS+EiYa5#FW$(c{=<VjZBzGo0wbr6jqC^OXTZ<n#W-fAd2Z?n5ekV^?};vVRj5sdyBX(M+=>ZpSt?$v +-+3D{_#T@eIBqT!#r(Bi{t`|OIe`+`XO{I8sJo?-V)otNgTmd*!3w^;Uc(ZoOFj5g|h((KaMz<m%Hsl +wI_$)*tIk?_1lTX~QFPfu)QduMBmxfC*+T0Ta~W(35~#fKy9ih(8wz~A;Yw1pj&R4GFVO3cVhJnYNRl +kYVPcE7E)^paJ}oF;iTh(=5Rj{PPW^1UX&(q$7yYYLjsa;`hmz>T$(WvG_B7zL6;-sM}_M9?tyJ37)M +O4SO`sZ(||a5iHo^%H^06f}|{xh8Y>yiK;%63?jgJ(;i0P&85kzr5lCDZOGF$LpfVMk^>TwtTuwmK2E +j(kd-m=Xor%To&3&&7AwyisyQQ_DZKzC;bxUw+}S?1o@6LZ3OneXGtX_Kd^3Xya?d@XYF-G$`g21-K1 +R7b;fQ510|lb^!h*r$5+>SCbxs88*~wEMlvpyFUOh^a@SQ*$&^-dyL&y9I>p+R8p*<u9lYos)H4i5KH +l6ixZxR$zkuA{Bcj(Z^nn2ndL?kf@DU>9o?+dPO>w|6=VpXj)7w>5W*~!(T4K?28a9567^F%)9XX2-F +bwWFxC$*Pm}1?;I|Ujs4dJ21lmwDQUs?!sF<gg!QB-+KUdSnVfe^j~*90yXPs^EINt^Q4+7?=)TK}$O +gsj%w+rotT{oA|W-z*-Nvx`Xe0Obd3u$CX+Ee!vWnV$5cHA3m{o*Bl!XRi~7gaUCm?=~IDhym~0=^4W +YL~1L#n$a4d-vb!Ay){?k=&snK0pr+rZ{KMC2JoigUcz7GP`OXz@BsaK`EdmOd46*}UttX6Wws>W{Wv ++3*bwPEt}opXzSW+kL=|MsfKv#~l;>2ONPU@g^!8LGJII3WM}SDb3I;aOZRl1AII<QUUScsiWJwcDMd +ZWCMO#r+rR>$2;ZYof{=m|F46e^eH<uxfu<`%-m-8BjP7}fhnpF(*9Luo*q52LOVb29)L%(so&GjJCm +owOopnf%!9QA@9c%1q6%+G<vc`%2vWq<!63|Fw7wq}6g_lSjz4ylJPKZ;X?7QZe`4p~uQb%F?gUV7SR +kFXk`|NK88=&fhEz3T=*ekQN5==QU*ZW|9=NYmf^U8An?SZzkShg;`&^niEr_JT5<^r1S-Y^wkTI~bN +USKV@DE9|f2O%=p0bgs46@+kiN%Drztg6?l-5dH5rQLt6-d0TTb4Am?0^z?K?J~NWg99>*VD1>CHr(N +SC(`qzRxGP5Vlq3Z(AgTm95EH|^xPp3`P{e99_k6okgkb`}D1#OEfr4K&oyzgKxAxYjX(Pv<bUnZJm& +dcU|9h*WfyY6v2b$J)zTb@cQK{Y8MKRv*5Z|j`N8>wvv%s|YKLn%2XRl!!KWu20t!eTJqi32IVo$RvD +MgVm2_$TXBL*J9JH}tQOnRJK-|@o9-%v{f1QY-O00;o{RI^YMUu_V`0ssI72><{p0001RX>c!Jc4cm4 +Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bXJu}4XlX8Rd6iYcZrd;nz2_^~?l5N%g6%pWhb+lqz>;>WfpsV +fL$&Etuq*|ZoUR!5?-Ok&mTP-Wb+ILpk9_2llomRNC`wCP78pe!^1UuB@CT!1X)&tj3=(k=Mrg&LR3g +?1Mp9TTxHOYVN*Fs-=26UIUEmSq`<CZ8x_c8YeuNCx+ZBV`&9`W~*sO1^7t1w+)zvcmb?tt_^=<fnfM +|PDVN~CGWw}~}i+Zv7z5dEzd9~TBw_%g*><IF}4IbAVx-yn4YmU1IEt0jw9NiiN<>;6_kI`|S#F85WV +S)IQ%M6QvkY??C`gsCwB$&GLQmLXSFeuYzoyI%(Ql=>uU>_0iKtaH0ctVJ|f<562Rc)qPO8q3%4z$9P +|GvP3(4~PnZ2k3A7d0HYQ_PulX|-`_h_rPV29&lHM%U;FW_5<D1*4e>j_$0EHSN37cory=8lbc9<zBf +@ysE6UdT%N44sA_eC@yQei<8}149>`&oCcEj6F+sbaVDUKwo?WE_Q_{LCGNOz%Nax`c3#qC0P}e*)^1 +$OcMQ0-g?OOC5J+dA1nAbC*-Yw~OPco#Dup&yr+LT9$^3wY#UyHD{rTIgTgKo(WowN3C30lkolqT_7z +1Zs9rzI;^n%_6S(_h&tfe%)cL^POC@9T<K1Z;rs}8h*dMSOcPIK>A-(5c1TwdM-cP*-l?dbb=z&XbQ^ +Sylz`7ZFt(J$+#$p+bs3=%kL4O~R}-hI4>i#c6$Zskot<ou~}b{cu(xgBmoZC%lKYAEb^^rvlKP<kiB +QTjZjdpZwi2){BLR(_}T7lW;*>QXo=_p9Cac%w=NSdUR`UZXCehZgIcLI%WT41*rWS8qGl>l);Y8?G0 +jd51@{Omu9Y_ZWN_P1EHOj6LqX_j^Rd<FEP)QuJc_NxW35mwBl&rJqzlNlqvK08mQ<1QY-O00;o{RI^ +Y3M_ijT0000w0000S0001RX>c!Jc4cm4Z*nhbWNu+EUtei%X>?y-E^v8EE6UGR&?`tx&Q45EjZaA|Nm +R(pEyyn_QHYN(OD!tS%+HID=Sl;sO3p7zg~@7h0RT`-0|XQR000O8^Hj4?^GMX`8Up|T;|u@*82|tPa +A|NaUv_0~WN&gWX=H9;FJo_HWn(UIdF5A2Z__{!zWY}!?!mTdtP~^;k$fm^4*|h}s^ZX8(bgU(i#EH~ +K2!?gzq7BzkGMq~T2bLcoa}rv^UZkY^QIAei;9X1KxEr;p%Ac&*N~$c{2fz#3p7VM+!yDcPcMYvA_@) +`R>|Ej0a3KljM&vx&6Ql4(4|>6NwzJakm}@msb{k{u+(qOZK<1P2KMva$xV_)QAM$o=*&h<eeA;h$mU +Um%vD1ZNTw2KW0+!va|D)?EEA~&sZ_E<+lw^8ie8my2bk~8_7a##=xR&jD<*YoD}vfPqYY*?C2WnB@z +2?>WgHg`7h9}SA3Mti2^m+8*eDGsEf|X99L+j-SPey4uPjFtnE%>U?H|dDty)i)9jZDk+i!#gs|0L;D +NHY1gT!uEyf=FW1k{I!Y`*W=>eiuF5AK*8HH2ZB&HvrTrLJ*32RDk+jMaG33fWSkLIZbbW!PFK7G!*M +lJqnCSi`)5kT+ewKDim1CxRwLasa7;_CgHIKtl@G`@`r*=p#UjTCU7vC79BCq?y4IxiJlPLCu096sZj +$2H%Yg8PwlUc%=MCYV2)Zsi|GP?!rp)!)o1ZzhIttAWPU}CLg81Z40bUz0{`eGt0(L#6~~l>2e;I=p> +q2wbSIob<B^@2X5%x5w$^A$3}rK4vUJ5xcFvJsb9&^@t_&eRGvN{8xMI1lsk{9**=Fq&2~Uc%=Ux2_! +4GYkB9rn<u>nK%I~CCN1IA<#9I(p0pbi@`MF270=71VD$a|3QX&bH3bV>9t9gHWk8H@|@07$qM_cd+e +bQ2)TR^9mXNyJPGl19-CV{bxqS-5C4IE=ED?;LInxe%7T4sOtI`$j_r~e0q(@!pO`dK7y&s;ybkOd{X +R08n!t02l~m^-fK;b2_!O=0?4<1+O80=Ry_)0+mKR{YjrtZTD*#C;l!fnxvAykHGa_cbuQg)$*E!%5x +^wL2M={=l6T;rzchdvV>H!{35#z&e5Uo}xTFk4?gTqyaogd<U1V19z@>WxtVQh;U6R`yKO;Ecy*lO9K +QH000080P|F{P<(-waE|~00O$Y!02%-Q0B~t=FJE?LZe(wAFKJ|MVJ~BEZE#_9E^v8Wj5`j(Fc1a%oM +M&AP@sqk(M3SvCJk_a5Wh&4Y_GN1+@C~>#b?Xec{2(}It(lzA2W;6z8W{?FnnO;Fw%qD`^8!l`WM3PT ++wm@oh1>{I@mtNekT7#fBYr>@25T@3$mGt+WQIAvD%meB9g-0L|9C1uU$*Wra6&gOq5t@Rv%WsWGD+O +4;<>H{{~P?0|XQR000O8^Hj4?q7*1P2MYiIL@odT7ytkOaA|NaUv_0~WN&gWX=H9;FJo_VWiD`e)mrO +s+c*;c?!SWdevpmYh7%{=YfvxHrs=hN*>usS#o|)Kpk*pyBTG6`%HxXt-*@<uNJ{dfw|mz!5XYj(ncq +A)94TVy8jTQLXDQ1OT_t#hbKKF_OUg-@o2w$BVY(vr1V+p+{>VF#Bu0~*;pCd|lByY4glUpvnshpgJI +e4H!@zn;6PjEv!WeUoX6RXGfn&TR@gid+q7N{%3?7o<Fz75afW<1!`GOI+#mERqWHctdBDnfojK_!Mb +1{K`pNl9O6Y)Jgm<Rn%heiV9=#DT>(_}%DD7_lb(N8lpIq4wyXzD<f=d2vLVK4ySosL5I_SMCUGsaTZ +`>5v2i@qY!?RL>i%n2e7A<1&!gQAon9LI9qkR-4Iqy^kD&dCa8EM3NA&BaPdAp;&Ao7YRaqKaS1*<yB +9^0~hu3D|2z8CVPka12cTRlwz%BsoVI^p&JwC!A9rQQ+OoGP%PsU7dnpSqg^Rg)2rY%0b5T9;kx2MIt +UjDPU*_A<9v~cV&ADjzS)G;-23Smy3{6QUk}+cO@}ITS2TygnVD@g_&l02OePg{-~VTQw}0#_T^0QF_ +=6<W3^BZ2|)Jx1h0v`w3;kF3`5YNPdF}=YxTMxliMV{PrwT?!(mRC5X>UjRm>U53znceEe_=i9x|Hcz ++-^aPt8itti@$7Wh;SbP$q(rTF0-{|9M{%&x+(xu<vn~Bp*o^C%wST2+WcK)ZkAKK0f_AJ{ceV_Iogb +Kv`okL)$}|aG_E`Op@#TrYA3eg3&b$>oN2bnocS`YVxmf%!$qKk`=@u50NemZqpwi&<c&kFyxswZoR| +fBQa>tMFiNP!{bSRFC^g&32zr7bPWJC66b6t*BJ~yAdw6ZD`Lp4{3b182)87DL`#Bjmc=5dMV6B?A#G +ER-d~<quEQlI!Az+ZT)V<1a#fG69sohs7fwc!VoewXvO#uWiB_f>FFc$iB;3i41#8g^1%d1OKcEi^dr +WT$$OVB0lFD5LqlDap=j-&1(g^AN+Ymf%-V99qSg>gRDCAQr_&WX_;T&ZtrxMxMgUTHl$(Xjfh>C}Pi +!?y&DtI3ZQ1IeheqRK0S2#!K()?C>ux{dHC5K8Us5z7J9nT}sL1%ZPNKUZ(m07Dr5K9D>JGe<)Gv;~V +&#pX6M22;@$x5#&<GG#5ZS$-PxCd_Tnecpo-isXvpf(r`Y^CzI40V#oo!3SM-n}Gjkw0eSzY+(w>wt! +Q=dWye=-kmhveDV#`%Ha*5Z|Zr`|MJDzmwxH<@d#hUwpr8HHhAmExtl8m4Td)0UJ?K2{3wnlMnNB7?U +Vh1}shEhL11v#Fx2UUL|Qg#2SoUI;{D4j{9V$l(Lmj<sD7nkG6m>E!2Qmo7Zy2`W*3by|rXeo9o7!&& +eY4#G=x?Kztf~;}j<n^co6u6&o=UG<mxhRF<y;v{iY$gYTbzH~uaJ6oN{L_wx7Y7MD41_n5!d$L)Q|p +0Fi<pUY$oQ#rb)`3<6ROs>H#Dh0a9JJ9*CtssI5JEu6-WjSHB>dz_3Ava&A?6KO}#Mw^lO19V)ZU^&{ +T#GtMq6WXNfa@~9s-A-WM#wjh8JtKK>21AIm9P#^jua?3&2B|?gSmaKQnY1!P1s6S2}gj}cx2FbS!wB +qf!H3^(D1;FZRIVuTX|Z{F&yB51lUz8NF&*ziX;j*8Y~eZ64QUfN#Wx4DY&|>tif01uiYR*MF9G^(6q +4h_SbNQP6PKCp^t!H%>E5(Gr+=ZaVHL2;Q!+IqjUxL=lv3RH3g1#4~OG%c;f8kFdL2p;}bukYe!0l0U +Dx%dA~1+wzNYU5|>{Aicfl5+n+?{qCz+FfY$?V!-D}*f8KfXOR6~PeWg74+2ee4O>zr8oqLH5gmvjCW +d@f)zb=F@22H%2<x>zjP?9(gpz@Z#UIqPzWGJPtr9kmnGJ<a%LkX8oZ@u%jeL~w$r%yqj)v56ROt0_% +L%n+XOK;o5W%WITOS`>QJ<>9vo<veBi43YvpL<r{JFASx%O9Pt(HK3KntE=z*zlmHv<4j+g40lL6Yh+ +s?u>8OSzUt3kH;szon7=2kJCpvXbeWHdF3L9lIZV@kXx&o+zs1tG!ffaZS<&yxaOIgFbx%^Hw0qheqT +_NakM;f(o2|?$KINu;U26i0@2=%mJP*RTljmOz~Bu8&oxeP&=(r<@BRaF)NSkCH#lj^JbU=e_+dH)*P +d0ncs`SZ&vsV@OphcD-LF(6#?$CoD>OHi*S1juEoy=m?FVhz1a10F(5!+=va6L;ltbm3<0LFQ6TRhQP +9QIdf0!}+Xzxp={Ura7Rz$UGi#!_s%_<<P_;g#@wMy)4orxxlKHjOk=T(2!pkEzZw_0lbPSuT(xwg3* +W69@bU9b08?{}N|R>QkIuBbhQ@T=h0PcP2jz6$1^<JaO%I?=Z>Iem9=dG_1o&owqVdu;6)Y$|U3C6)z +S9<~HOr$YJia4V>rqlecU6(;z4ShYx7I|r)eZ^Z9QV4`GlTXgmcwV7HEKQ<lRz3#4cP+xt)A%P!xDr+ +At(zl4Qp9p`31H7v_K$ET0&9>fR=W=9UQ}3$|zt7W*%Ln9xNFxEl#<?dTE7MeuS<C?uH)K{P=G>%do^ +N3uQflq^g-ymkb8L8)wb8fLQ8!Oh6sO5`y}pn{I#%SEXVOXeWV+&@o^@KNwjH!DQZQ9k<R-TpMd)*UJ +&o5?U{+Mm3!84b&-<Thsp@U0jr!ZJJG)<@Sx5&c8XQ3L-E(`brRv>WX9wGD&~c+nbn4ti;IN+CCK}29 +4i}A`o@<7-qTxzZ2maK#?eA`Fp=E7sJ~f){#V~eTP;H$jH@j?5j;$CUSCgX56zd801`bUQmGh(Nf{`` +OdaHB|TfhMEd^K6fC$}?E+R2B^iOO*}E{~3aV7J?SPlm8oy}M98xHWGx=*PP_457pkzhIa9c=_RIDqb +cD2?v+G9+~$W)EhYxkl1(38#(2GoRk(hM7aoTy~^=pQGTiF3!u2=mlCd47OluaC39Vc!8+GfC3}|M3z +i1Sm9<WscB-rA=<s+d&0X(A$oG>*>fb{2;(H}Qh}DY70CoS_?f2z*&7lGTkQdwl0Zdok1lUPps3ycqH +1@2+xha*+kgS#`>K%ZKG^riKdWO{ubw71MGmQm@J?mAsd>CwdOMjQOlWJ|{dUD7Xh;j+lZ(UhV@pLBb +?pA4{%<;$wMuL=NVFUSPCs7;W?j)#IlB1xF;#k1zQfb0ZfbiRHdtJ364=P>NvP^T2yL<8av^&rs`u2u +h(W-4_ewE~)>F!&@bsOtkT|bp^qADoSYSA^64)MOJmh>LR2Qm+Zxk_CF6&U8iN_KjrG21m9V)>RGRzx +Z{8M-Tzc(>frBnEe`or<{)%!Sm~Y0r9>XXd=K!;4r9UCj+ICB3&vDs()HDb%#1#(k=s=fBLTm+?}XvO +?qKBOK}RSAp|dM)R3mnaz7B#LHdS+JslI^Hq1PQpV9m+1ZH<ma+xHU5(?$Jy>YW@2Ux%j&PR225-c!> +uZCI_G4x5O)UGB8Jo>A(DS)`t#lN~ZhTKoax~xcdKj<08rF*NmDImqxto{dbS!B%-Y=H^=W(M@>>V&F +wYLP#=3r=vAQNdt8ESua)KtVoZ2WaG(|UIN9%7~lT<<MvVe<!2O9KQH000080P|F{P+tX$<%=Q!0P&y +z02}}S0B~t=FJE?LZe(wAFKJ|MVJ~T9Zee6$bYU)Vd6ivD&n3BS-OsORIE#sa#3{Wc16c$~kSF3Sj3B +!K^(d#~$&4}6No)lE@6o+F_v=2V-3vF+5JcUt>X2elq>5Di$-7_v$NL}O-S59$?{;hd{o(unvJdZvef +#b2-u-HQw|=k>YrgBhd-vh{@4x-=FW%4Z?9Zotu&=)Q=9~XnKm7Rq`|rN_=G|Yu`-$^Eb3eO&^3{*yh +xfnv@Z%=^-&gPUzpwx9hqZqF_0Qk^>9hOzcl|b$>-jH~_-8~;AXg?E$cxGMA=it@HG-U&oIx&3t{`_N +50EF5*CCrHvV}ulOg{LojptLcoBj!9x1H%}9(wjn&-i_o-}n2_2VWnzb+^k*cNO%-bdTRh`F+Iiqx?S +M_o)iKfo?+Ypbw!>(DnL<ue%7n;=VmGy&w79L+Ata8JRv`bip%$=N5S$0qs_<f8#p${VCnMGrzkfRkN +O-g4-?2`EpN<-EF;Pz%XD=H0Xi`y{7D^r}_Ht?K^qa{5oRutI@RVen0e^#N(kpev65;`MRF)cdPUQIz +P2r0Eh04>7gEaAn}KYr)74!emsxd)nr=kcIdZdQj^;X=#%-qz?bDo^WyObzL!7~yb19PRDNPM;dwPb7 +8`<1fK2;xEL2RwZLdqc&DiQctpAlsOYJGUD-DwAd0;kqktIm$%voXuy}Nt<{_deL{mj5_r_dMZH`CA5 +?A8lCfG+oq`OwoPyuSazer4a8E(ceHsx&svSDS}!{6zN0L$UvN=lF@~?x~}XHvC~5=P$>Y{%Nmfzy3p +*447_S8Ls<aa%|ND%x>^P_Y-us65%WvR|srHw^2F5y9=xPUEHC!rLs6IUzZbE<alI}>l@3z|LQ-#fB) +V4?|${ohu{5XeO#um-|oBq{M~EKd~_XmJ$D0lBX<*bD|b6}{l4!D;iJp<^^g1dkKMrC$lb)<%vUZvT6 +whbsPSm$?%?j^?&9uER}L3<9e0`E5a?1NayN08`3;4;%x`GiWqt$m8<^j~{08PX+|-Sa`7Iy2jz>Lrn +cv9#M&>s%zmfTkl_VLN-^l!CW+5{Rh3Ba792M5d!p}lsoh+HVtdoW3s4(Wjm<!KQ;W;WiM}-+I%wXkb +u<{&Lo}<chRC$gn&r#($sys)P=cw{CSdF`#yMw!vyNkR03^slS8_#d!`E5MEjcrcj`E5MEjpw&9zm55 +AJim?SxAFWop5Mmv+jxGB=ht|Cjpx^RevRkXcz%uN*LZ%7_1RdTjrld^*O*^pevSDx=C?Dyo%!v|Z)b +ix^V^x<&ir=fw==(;`R&YaXMQ{L+nL|a{C4Jdus#pwcQC($^?9&957y_w`aD>l2kY}-eIES$4t{<I^E +>$Y9nA0G=Xdh_PUd&=^E;W}$qdd(=6bQ+SbX1`XYl43yqTk$=BQkcOU1XYqbVzn=BT*9-N@a<f19~mx +Ldi~xNCgn&fUS?$=$`5Vt(1LE8cOJ`Sr}NXMTO+Zsu;`F7xXfj~b6Mzkcv2^UHo+VZW}#$zA?&WZ@(h +PGaFC7EWT}Bo<C$;UpGLV&SC9T~>y~!bzRGtPF{TlbGMc{AT7iGryVn&CG9Relzo%ncvL(X684uGGtc +%%=~6nhRpo3$5_~7EQR@H2eK6AmmSDbB6peJ!u%HIx3KaTo?mt#3p<d79mv8CWMK!gumf2JUwQDA+0> +W8S7uXR249&?ePL5yCQEX%=1kU{$&#Eb$;pzOtT~f4XEMK&`JK$~WPT^}JDK0b{4VBqF~5uXUCi%dei +!q*nBT?xF6MVJzt45>EvBoH*0RbWUgZ$4a)?(s#H$?Q)tLFpg}ar1+<4S@v~zcGcXD@em*%Ll^{#BaD +_if%*1INpx+`1n`mo*~y^;E`-k)}9Bc-xYt=aJ?!(gLY*{D`Fsx>o=%wlJwS~H71(;`wi^r#$qR1Q5V +haQzfkIJD(<<O&Y=utWJs2qA!6Of&|gS+G+R$DyEy1}7G?PU3D_uOTEIrOL;YgCRkD#seN^DJ<zQ90J +A9BWjLHR__hK3A_SeFC!kWDRzI@$cCa+<hl~Fa03>DE%b;EPcVpJAJ#~q;Jyi(jU^F(qGcQxgUi8Ap8 +g6KM4Op_z%K=5dMSkAB6uP{0HGb2>(I&55j*C{)6xzh5so0N8vvT|55ml!haP0qwpVv|0w)N;XexhQT +UI-e-!?s@SlYLB>X4gKMDUy_)o%r68@9$pM?J;{3qc*3I9p>Pr`o^{*&;Zh5s!4XW>5!|5^CY!haV2v ++$pV|1A7x;Xe!iS@_Swe-{3;@Lz=gBK#NOzX<<D_%FhL5&nztUxfd9v3;&i`eOfUkbabY`gCVw_p|f` +PgOiJA64d~%6wFrk1F#~Wj?CRN0a$zG9OLmqse?UnU5y((PTcF@ZW_0Cj2+yzX|_M_;1306aJg<Z^FL +`|0evK@NdGu3I8VioA7VKKkozk>l&Zx*Y3|x{R@9RH(ov&XK!`)i}b7X+oye#^~q#?GFhKY)+dwo$z* +*pS)WYSCzJKbWPLJOpG?*#ll94DeKJ{}Ox7op^~q#?GFhKY)+dwo$z**pS)WYSCzJKbWPLJOpG?*#ll +94DeKJ{}Ox7op^~q#?GFhKY)+dwo$z**pS)WYSCzJKbWPLJOpG?*#ll94DeKJ{}Ox7op^~q#?vgi6#@ ++W;>4=x*QP&UCS!7CvsAu543xgUhAw=MdMs=sLZ3sXYZKN(7xpK|{oEWO4pgn22!DZwj2<uO$rynFQ^ +WF-_q%6nK3LQ{e%p(|l1VJh^czqp04R6mx=Lqg6?P#s%Q|3r~4MY^UE6zP(g>s65U>hu?0e-ZQ-Q3** +2S+7x)P?ga18m7PKN*MYlQ-87a7b=gY@@Og#Q($IF=t@vvroe0|;bwK1k8Gt+b$wo9a^~fg5R?#=kd% +;>P?S)W(3D_G=t>w$m`YemkVkB~O9?6ur}A(r52x~QDi5dfa4HX{@^C5-r}A(r52x~QDi5dfa4HY4^6 +)ATFD7`(w$pXXzRe~$C3q!>F}P*#W)qSUvJ#3CsuG$KObJ~HLkUv}O9>*=JE}aQ$|I^gqRKR?JYwP}` +%Ze%q!&$kQQlK`+g{L)?IsK+tadRko8Xk-l@OE=m5`K>l~9yWmC%%6O6W=$N|;JmO1OpKR31*{;Zz<@ +<>6EwPUYcL9!}-qR31*{;Zz<@<>6EwPUYcL9!}-qRUTgD;Z+`9<>6HxUghCc9$w|)RUTgD;Z+`9<>6H +xUghCc9$w`UR31U)5mX*Q<q=dKLFExt9zo?1R31U)5mX*Q<q=dKLFExt9zo?1RUT305mg>h<?)E)ANy +p#|7v_c*KfXm|J{dg#<%w4kDnxFfBmoj_E-P>4}YUY9Vi6wToHv5hd_l7`IHh|h4R=Z$~<l^4M2&FR4 +iQ%WG+m)0?1rnbD=)yk}{V9a%FM@nTv+54l>v1ToYtYg1-(o+t3r)0k>n^4!9lTcEBxVQx3Qt<95L97 +&r3qonzb%xTW+8MFY+=ZV%j^aeLtQjN1dZXWSmRJ>&Mk%~d(h1Gi_~P&CJi=1?TG1xe%p+<|ci01ONe +Re&xuCL73H?G^^elgSHYE(D3F_lR5u5+lf5$#v>gHn}hvPeWvY5u%DLst8d@wOoX#5{oK9REb5EFvW? +dI6;DmC72*VDa1>dVyVMRz%6BXC@OMNg_nRkGj3QDCpC&0xHIF<z%3PT8Mrg!&cK}+cLwgvxHE8b`Ip +PU&E+$$0C!>B1-Q8o)u9m86~<kFo9j~@>QfzCSXZF2g*CQ7V+(8S(Y4D}uHvZxSQ%giz{&to&FU&^EU +H;uWl=ReB#j@EhHE#zcEjv6o`wc?8na`NHy6k`RLVMIb_};PzNLX3V|EPkHb!Dl2>U{Tl$1xo6i6{?h +bic63ObnYe9Mko4rXUSCWB>yMcd6URCDq)OaPn=Z~`C~F}ev+O%~OJsHT(-Lm?)M3QmDr{Ol~uC6_n5 +g}GeJ{K8x=p38-2XYsSMAlSvv{K7N8Sl$crUW^;{kM3r{z7;A<T{CWZOPMlmd23ZL$Wn}aZYkA%9-fk +CPszhm^6V*jcuJl<B@a)@v!~?YDfvt4T06*t$rEHQU4^IQ*;DfHlstP%9-fkCPszhm^6V*jcuJl<B@a +)@v!~?oV0!kHJf0FSCAaXDJbOwWo|0!z$-`6f>?wJ8N}fF>4^PRnr{v)&dG?e%JSESbl82|{*;DfHls +tP%9-fkCPsyVy)UyZg;rn>@eLM~r@R4hc;rn>@eS8F$k-3cEGV(3q<al;+Je(ZQPL79@vqeK>SWQ2e% +Tt$s`N`x3E*EpT7RX#bd!2tFa=9&-56pakhZiDWB;g|LECe_Uft`f_XW_F`D+<V!$sJ^l(NMM?8ckX- +95}&CMwqzv<ZI6cGMCm*+>#GA2ooj9Z0!TAePC-JVD0rVi}gC=f|-Z44{YrNtbJf>A7JeRTl)ZOAK2O +lSo^@%KET=sJ`W(=0LaG~1cbEVZcN54Z&J1hwTkTZMtHrEz1|3~H?r3o;q^xLdLz8v$X;)R*BjaEjqr +LSd%Y1}Z)C4G!t0H!$PtPhS&<_YIkF;0c)gLm-U$7UtlzN!cVXO6`&bxv0d9U8BF=D$e1=P`z+D+PoZ +(m*NyRNI-?HMC?DfWqTQ<HWPF#qMZ`p9m#-f6c9N9;X4Weoc5Uz9N6F6c6ZuY2S18y$#j}5r_EQAP0J +F=r4;b=#8v?Cnt$c}cz5g5@Jw*j{?ZUb)iza#wb$o_XU;O4a<cHr)ey90M;+#R^(Y>*DzopEE`iJftG +;ASU2!ikTaad+V6({<wTAO|K#kQ0+L$c4!j<i=zJxifiy%(e<q#$J+%JRw+KUE_pc`7oR~Ay_`_C1Tx +)yzWG-JCWC&h;=9Ox)ZVPL|%6y)}6@fPQ<zsdEJRvcOtJl5$jG|a###-^STqU?nGX9BG#SA>rTYF6M5 +Z<Sa%|?JMjkYn{i_~io6^}#3Yepl6V96&A1V&L=IIV7O%*mN<^p<IaG-VRT76P386~jP$eN$NgS#qge +r+cm4r|waj23Isw56o5<->4p-Muik~maJ2vrh?DhZ)V;!q_aR7o7FB!nu7LzRS3C2^>d5UL~&RT4s## +Gy(;sFFBTNeEREhbjr7O5#u@Ayi2msw9Lei9?lyP$hAwk`SsS4pkCDmBgV+La35BR7nU`5{D`YyNQW+ +6VowlSK{;35_X^x??AnsXT&x(!Nw-Gv1z<cKMG8aAhS#cWb#Lzl|<Kmy(Gzwew}e@ROTonpYw{Y%x+@ +N$0FxKi$I2_l-cxVnBF`mlMleWNP>BtwIQ?h$@d`_ez?o)olhio3c|O-i!L@Qufj&Dz@8MgC)lXGDyt +8U-McDpFXPy~tMcJ>)j;O$w~Fnz%6d|<cvW5-D%OU^``-<>Z0we|bFk9Y*hg-VRpTAjh8@<%Cjd5hkB +!5(1~;+sPG!SRW#hfa);-99$pFZ1OY3KP8oL$^YTww0XrqHnfn>vi-grT8ufx@Nb!`hscui|JkZ{n{? +gcX4(y+i7uOx<*#IDZdBUp1JDuY=!Ph6Tmg0;ZE4j$ydWZaTpK-oD4ZIg}31LVo%!=>@gf?-?5_$85H +|HOEs#PHh3__dEE+%oYkp|QpRnISqd)>wna8pk^ZjWrHz3>s^!u?CGb)>wna8oT8Nx7=7`4H|1~s0|u +xgMST;wZXVyzm0dx4H|2#u?CGbHjf4es<V0QP|eP&*`b>KnoK?t?5vs{s@YjJJ5;l?YIdk*4}43gW@j +Dj&_Ov_uS3~7D_e)Mbyl{HHM+BT?0B=+**tbATW9mwVIDhgA>ahWN3tuE!44m%+Hr1bXRF!q0;+Qq-4 +QPL#usUjN#ogp4eJ~icLc!QSb}(^)QztVwd$<My@Sk-NJmuH+4OdVZ=Dqx;pNp?kvlAMXN%mS$ek4#E +A%y3HOF-T4pz<Kj$j9?=74GrR<;oi!okWmuxC10*+#@gSlI?%QIAxZTtOyzLx9&{9URcX!8(X&`5LTj +1Ijjdi5^h4!OAwEY=aHnfWaGV*#<1zV1*d4Y=hV00e%K6#DGE!R)_(|Z}2O;F@by1GKwhw8f@?e^kj& +hAQ~O)-a-W*DbGw!AWtTrdrsD>39Xu}Clh)ySx+YPWb&5#Ovg{0Y?LO9(qx6e(Z|<hg_wBbK6%@4!YE +DFlL<YUe7fjtxClGL6FX3ocZnt*<H?>WUZh@=H+Uvye)3Mv9N?1Q=}x@UovaWO?{p_`luXS0<e8s1;& +k$c!@^Rx*d<yxZg+8(&4LrZc+#-haxIPl7aWmQ`Pv8t7N5Yq5DF|_8y1oi7VlIp>{Kq^sa)8pT<kh8y +v<)cJ9wjXEq+`V9@oW_wqR!#Kd#sfx)yJGEj+G^X9sC@+huS}?jVy^;YjZ5<_!l-<#lsBf5Tb0*^j-E +NOgzG<OZ@_<lw&9kG+u^b@S`N8?OiN$VUa^ROXxg*c<6fH!lJ=76CZ`9Or*ucP7JeX9JmU2}k5EjJp6 +g$J{q8#Lek6H!Q@>s(C{-Z_b3d8?MdU`8WKNn;nrGj>yeB@i!ci+gK)WL~h<hzv1@Yon_L&PUl-fk#A +OH1pkl3Oi8MIWoF75!f#oXeAcnUS;tQEL7|?`OJ<xuHs8tX;g1=LtQWgqL6_?!Tt{-!JaS*W<Tv?>-% +EniTdt$z{`eEl>{e1HJMeT)-0?`4@k6dNaGfF78Muxl>G)&OUEqav_dV#6A&C?FLy}xboSYvdIS&D?3 +r*;+luF5jiDz+enIE;?KPT{KUSD?~zh}?f;fZy53H`?J`Q<A%UmrPok{Wj$4_6%LJQZX}$pP&S&%P^? +E?J-_MffTi*Doypa&E9&xenx6y3p~(fg)cPD95MYtt1E@H(|G|pKqyvlKq5rb+<x?9BPsLzE|2GM>P& +FMqQP8M-GB(a(wz*LZD;;W3OPhLO-sbYm$SB*Py%Q`D(z~By$fhLS5sX0f#rCyJb2y51mPtwE@2+Nk) +V|n51IbdHw9H%JpG4tO@;iAG_uG#S78hej)WxQiTy*?3S<J&r5&TMGrgV*4ejnaBtk;mEU2be77d_V> +gC;S!2A?7$pU9oE$_qWL<bmWE4G_9$zGpyzm)1=<@sHMmUKP9$z{+bV;<GXD8jw_JwptN$H#CMVVW&e +!(f;tz<NwmtVV;l*Y4g?pAUd&+D(<N>bx_|Fv7mYP?=}B(3o*z`K>a#<TPENWf&e1AZxNSPuB5vSHz~ +2us$N<$zym8<qopu|LZJzdU!#0l$<tEC>8j->^LJOM%1kz%LaJ%LBiZI4lqRQsb~Z@Jo@y^1v^8yFBn +qnZtrUFVW`}fL{t7RsjAW_yh1u1;h%#FVF7^z#jxZo}(qt(F(vH1b+bjDEK4rN5LO~KMMW`{PKmM6@f +nr{s{bHe^vy3v4;zGX^G#sBJfM`#7e*~)e|cLzxV?y0l(BwtOWd0K(X*8BZ+r+ANZw&V!<C<;;$}z$! +Lk6wleTb6~)THFJ%-f1HaT!tPK28NU<{TOC`mEU0qU2u`=+>I=<isE-9v11^A_!Vin+*^=lR2mwJj-f +M4wVf}LMQ@E71Og1-R2tZNJF`w~AE8yCA3{1y16+G17UmvW0$fxim=3jE?%tP1>9@K@lM_+?e#7k_>= +;BSJz0e=(x4fw^MS!YXqw{qWx`^tBBmf^lq)v*lsm9h?O;yBsFaoEM#t;o$FHxrx&xryJn404l_k7dB +$1%C(rF8Dj}i=V$b@JpPyI`DVF-+{ji{to<7KC(LSi{H5LWw#|?c3T7Zhu|N;FLfwu0KdeiYXJWc`~& +#K4_^cLhu|N;KLq~({weq;@K3=%fnVaOHGzK$e#BWz;;c1+U*d%|fnUD(w(!NbC2`rBz^{cc3;4AXW& +yvJ!Yts|T9^g=S`4#*U#npj@M}5D0)DNBS->w}vRjD9*Dd&O;FtJf-M}yL<GO+W7W_BxiyyvTez?@uE +bK2WDXv*Jz5pnGHC}Ff{$<0ruY1Yw5x2_DsJjs#efGt}FMZh%@#8J)EVA}?D}_hcPmsMzhs{bSo0Yqd +FA0_+bbNtP;(hFH?zRhkfX;F5TWOQny|*tXO10bDmlI`Q@vRn0;>3?%R22DOf8$>A`vp0O{(t<UB7dR +Joj7r~@}<S|reU}I;l6<~n!)=3ejLARw_1>rKrceCpf{l#=w0XobS_~T1@|p--{UXsR`4Hv*ezGzjEd +`2xlYA(*l+Q8L%Q26^a6SndIQ~r-a%J96Z9qY`_S2M*?r(|g1-TO6Z{SMo8WK2-voaHe)-hpz^5)p6Z +{SMo8WK2Z-U=|UqAb3z;A-zfZqha0lx`;1AY_y2K*-Y4fsv)8}Lg#*66_B1%C(rF8Dj}cfsF*zYG2j{ +9W*O;O~OJ1AiC%9r%afAHc5#Wdrz!;2*$01pfg3A@~RI55Yfxe+d2o{6p{$;Gcqj0>4zgjS2iy@K4~M +f`0=46#NtT<<qBQ0{;~J6Zog#pTNHa{{sFc_!samv11GNP)hp7sp<3Mmh0TOj(n2#b=t|4!p(X1e|B4 +iK0#-`kVfifmfxQ^(MyJaNA>h>m0m&T^#yehyOrN}{JzWYQSm6*1G|sk5BWW+FC|gHBU50v^7~imq*N +(mU(3tB)+e9%<+8o&Bo2ko&YL-DYP;pnWPka4t_^hgrt0fEuT5$^zxWMS+*iJ-iWi(g&Ls(WVGvyB>w +M{(t$*aFi19k&vdEc8hIDI_iVUPST$V4%_e5f6=KV=SzWHvw&;#gE=n3>J^a6SndIQ~r-a%J96Z9qY` +_Os6Zufy-(q3}{{v`Ml@F&5afIkWT1pG<xC*V(lKLLLd{0aE8;LpIH1%C$qEco%I@0<mH2L3GgGw^4@ +pMgIM{tWy@aGv;Lx58HeUsZlz!B-W&D)^EN<6Oa46}~F?s=`+VUsd?3;HwH>6?{nwbFRSO1b+j5$!*R +J_?zHwz~2Oa1O6uX8}K*5-+;df{*wY?dCB#Wf}MH2vvS_QSmF00yB|Q0LQkM)p}($Eh2B6np?A=S&?o +3i=tuq~2>t+^L2w4(l!W^dfHMfr0GyJEUjlFj!5M%v2+jbUQRE5xS;T%8*v}&Nv%r29v7ZI@vxxmHu% +AWjXMz1JVn0!bvs=Lr`&q<(7TC`s_Orl#O8&#{1HahM0{dCSeiqozBKEVueipHx1@^Ou{VcGbMeJvR{ +VZZX3+!hR`&nQ=i`dTs`&q<(7TC`s_Orl#7O|fN_OoQcpMhWOYAL|a`!Kt2pm(7U(5KLGeX+v@cDRTg +F0jKz>~Mh{E@FoZ>~N`qvjUI!C*`C{TM@fjU{{OS)dIU(#C{go&m#7-z<w67p9S`_i2W=L^U`Eq8suh +z(}2?irvayl+zfIv!EeBCg5QAO1it}K7d#!;?{fW)>vy?+$MvOtrgX@si+nod(?vcVc!uB^ki!r;+`w +}So>NU|Rn`$C^jhWjdWO6st5WELlNWZ&d?7R6s@%7p4a(gPp&x#mtVgffr6zU{`9;<^PjB~+d?b&^kg +;i6xdw;cEEJ|g4qDX(hkmzwedHaP6}b-VhH+hq*$E(bE7u23t!}cj@x5EVKI)rxtMmps^V=PM@8tKds +xPnf3c6ee^U^tA(NNg9Tb}n<omgM;`?GJbTb2XLg?B3zWM{snJnvhZpMtxM^JjM7fi9`KCx2$QN$B^X +d%2Fsb-Y~1<2qihbNsa3a!Pi02WRJeyn7*AS>p5?@7ZsC&wj-4ocy5!^9*>+6n;+SZsoYm>%{htcIm) +<2BHom+&t+(#ek+4pBD=5v%}R6sK<G;oMP>;5wTl2L+`oA@f=t(@H(S5NDk5_oSTQJfAKs+>d{K}G_r +WEAg^7n0JuT(ssrE#c`>^QN9;k~kX{k<5%p3?t=7X>+~bUnGaxV5-jcoLumE=<OXf<FW^&;**HwaO3E +o>>;!tiv#(=yTyIuzgS3L!|UKImP2kZ<4{flSR@M!ffprTdIgx!RrqE+Emz^(G4?W&l;D#ut}6?#><p +z1-07?69s&NFUK2RsHOtLtjGd6RU4O;~3@@&GR6TWf9ggOD&#bl}L!oc@KwUq}w%CbTo4^Kt5?A8prx +BX)}l7h>1^+snYY>2rQe`ty@MIsjBl7<`=<-4$+!?sioMy!^bnyrsQR1#opquep$BswI(|0JuZ7<W*Q +P^%+FQ!)`?xaFpeBI}yq4&tsr3xi7rDe|$MX2B5q0Iu!?~Jjyzv4m|7a+~cfn8F)r6k1s298F*EQ@Np +Fmj67O7Ap3PDx07Uk_b6w04v6}=b8PdY6}U)ib$WcSI~4$rR{x^nFNWUy=+$ng41hsBLe-tD<3}rhfn +)^d_1N)qoaSyN9bpp|25uPuTwjY0R17p7FbpgmI5X&*4m1pyUaI5fQq_UezaOnk?dx3iAZBS35(cIYo +SSP!j0=!e@PaD%!(a&d7tad&N2@mvxOq^x&+Vn%%5mVEP%xl3kFUQFA;LA-t)fb}l%$lPhUcO53K!2{ +$SSLXdr0<(LpIBPOk|>vw!2%?funG8&Y{DR=ew1Ru}vr#5I&H)>*P$Z{cPe=Ns{L_;plFXYATl|1|%K +J!7p)HT(wPz7!Z*lVb*2kJOfqkGPNgl<I&1rypI1bPNZAhnL*h_bvRV~(aNRZ6g|GMECaZCUHTXIc|M +v{Ft}5^{Al&F1a_VeIqBs=z<?yLZ9>3+2oYX}Gc`+w=ffoL8|Qet&kAQYVPZh077M*IDG@_$%cK2l;P +5fTNqtnooB`DmWI^s$P>pg-hUBR{2pCZ5o(zrMO2*XN_Z{Z-*+9jB>A<liQ~8*|Fwk{iU|{LM(UPh2f +&9tc>di9-B%^#23I>`E096%bK+ffEy$%En=%t{$Q$iVc(gNHgzmNvr>P>^_m5;9iQmI(LIj-AKd-*WL +>kANBoQaHwGn<4N`Rw}aR;tP}+}hpB2MdsvoK5mFGxCym%a7XICl0zOLx%UdTlumAQj@dRkmdf|RNt* +6)o;Q)1ETGDfe%fSe|<_J-%;y2pD!wQD~a!$fC1A>EnG^hPri@!*{#%4Vg{>hQhrkGD9-lBgZ`zgvBO +W?t^CDaIL?5CuN{R^-Aho79jo1P>fa{dFNVZ89ksx_Z8Fd>AWGd&TH2$Pvbfh_{<1ImAoMdJKEt$U<; +A1TGVt8feYEm<0c*IF%-|-tGoVTJ5c_V64%9Q?nhZSW>QR2D^>@#WvqzhBAY*{V{`P4C=cf$3O5wC7> +bOgfR*T!7`5ljz#lAeMB-Gzs(8N_Gn)q1HAqC)%uZBGbnpQx)RcP?z49j=<J+qwigM%=9m!jxRI7zX+ +$`SfFv&oO8>5C`5eEa#Y&9k4L=Ig)y#lQUWZ~y(5|EQmzx=tv(+w}+k;1}`-IH&jG4UT{VrvoczLfUp +>BZ;G6E=iJrk-9QZ&Ld~&dF|`<1poB$p{@T1P)h>@6aWAK2mtd`vrxBV^s?px007kn0012T003}la4% +nWWo~3|axZCQZecHJZgg^CZf9k4E^v8$R85cCFc7`xSBzMxN<@gr_O^oUrD~6rR(nGz7%~t`iJjU`*_ +Ha^J7XI{&~|fx_~Sjl_hy{gY?l0#e^7ydR$2%82vRvbp|Lr1qDB~co=h9v<8f%)_l&mMPP8qkq1&V3) +mEz$m_gZu1_!My9tKCWH(UqZ^@BqK8|)2QR8Bal6~kSFaMY$t($qR(T$ux^y3BG2<3~S!%%CWWtbo^s +^(uR&!x{Q}K<lYyXJO$DB7Gv2U)DyRq!O(+_-zI}Ejxr?X{%4^gV&v9MKYr-64~|IIM_?F;F6?9pNA3 +Zgtj^w-Brwz@=ujLB|s11UM`kCh!IE=C5EI@9gtT7TL4GL)zVw6mRHYJ2%+K>*me$fI5cEPxQQ#zGM; +4+@J$?C`%b&GMT%p@1!4)SHBGNPz2xA*YRW?vi6?vU@&c7Q=o)LbV5K^>V?m=zSgqjeBm8A9lBl%fy> +94Rw8bTzKx-*itbKg2j-!~PUk|C!(q`+&t)Qi|k<>G5Sd@N_wMs6a-<-Cn(i_?=7Q`n)1(=s)@_x^_C +2qS}+{i7g*VCDKxm}b~5I@x9PO1T~3x~lNYJkcsgDJ^qWnMlp;}sQ57ozVez_bc^2aa^YxLI!V=^2|v +xrI5DS$1WcL?%P*2Hjv(C`lTQ%R*mIPxIyUEf*t-z}q@!q0kXt;|<*0p$t4fGa~2LFVyDcg<|0)-(M} +xQ%IH4OqIu2#{2ah9hy!m<bv&Z&km0C39`(fK`Xp`Mq(FHi|oSduHX)29v?wP$xMxh6PF>yUULVA+h2 +sgs>P#=$>otGY<_?<QX>p)4SQ17by!Q`kglF+P}D3*1OVK|d%;TAKn#~{RD3Nt-Po5b<r$V^>#+`sMx +GkJKzH$bc^kq|S7f)hfKkjGP6+U6JI9i}n%K<`^lkaCvpqIa)uXSF-qlvr9j@J^ilc+-6ZIcxUkB}<Y +mVa|qP3X(15ir?1QY-O00;o{RI^Y`_a6Ee0000L0000W0001RX>c!Jc4cm4Z*nhbWNu+EaA9L>VP|Du +WMOn+E^v8^k1tCtD$dN$i;q{ZRZut5vsCBe0sv4;0|XQR000O8^Hj4?&`~4{Se5_)=n(?|9RL6TaA|N +aUv_0~WN&gWX=H9;FLiWtG&W>mbYU)Vd3?QBlO5NU=liZtf$pA}rlwtGo;*%7nx4#)nGyXk_vQAz(Gl +H!H4wdMo22aAxdD`gH-t9@65gAtf-M6^hz?*#1Ysx=<O>R5IZ7R&k8l$O5&QRFs}2+hF>3!Z^JK2I_u +6Z(was5F`^Ohvd~?}zFTVWjvg*IffBM#IuPlG-#iy6Q{PHiCJ^$>h&%Uwzt!JNE_TyhJd+W8=UViiMU +VP@&<$v?c^0$_M?=P19?8R4pu<Xre-&(x;*;k)_?U@%}eg20(ee1cuX)XJ~_rCY%fBxtHkpCa)vj4IC +_17z~>>ro^xcZUj-gxbmW&hVd{+~(XZ>tNw_r34^=tn<$_Ki1ReC^dA{b<<_m;HGZ|84ZQJ%9eaXP$j +-*^l0Q_W2+6JoWt_d~aFxzc-$J>!)wLy6m49|9GnB7d?Ny>@RD7`Tf8C?(fL_9h<*v=I_M(T{nL>%-> +D(cgy_UHh-t)@67z&F@NXg@520D+V6D&uo8%@2qG(k$O<8{Qi!Y=A}fc;3L>(Sh^#0gD~reqBeK$ntT +-YokJ!p1b~VDvBewF0tvq5YkJ!p1w(^LrJYp-4*vcce@`$ZG;)nA1zgbY&0xOSNkGY~2*@D;>)NDaw3 ++lF@VGEkJpk)i%w!q4xX5~?{@~GMRQM2`<X62FC`jI@8$N%`tzh3s!zg*7Z_;K-%SzLQu{4|S`$HmXE +xc<2KSr#`Q7eB}1=Hue$S=@SD`~r*HkBeVqar(IUCoIk$7r(^f&g0^jS)4yEeuc%w<KkCYTs|&-jh3| +Maq;Uc4)Xpt76*C1!QvqAH(4Cy{T7RZyno8#An%{CILQ0wEDrMi1&f2cf63w??_aUl*4?_TyLDT4>$d +LJZQX6yy4$dAxnbLKL)!AcelPT>QMVqoVOx8{w)Tc??G4-78@9DKY-?|%wji?w9a~_nU&C6zMrjI~*7 +`NA#F|!OO>6y{Rvt|&kEWGJ)5@c1<<YeAXj*wRZ4GML8q~BksA+3Z)7GHYLwWoY3nE((+k%=cNNhpf7 +Bp-@(-yRBLE9Fjwji?w9b1swg2EP*rl4)*(YEqvTY0ptJla+sZ7Ywql}FpkqiyBUw(@9Od9<xO+EyNI +E04C7N88FHePm%CTC-&=wyh?$ttPdtCbg|5wXG(#ttPdtCT)ec`OPW<+j`Pqh1rRx)~2M^rlb#L^bah +sHYF|b68!*~wJn*IQWpBOn8l$_laWD!A6iKedbLj{S#AZGSpjAg;8B9mnMEuPVq{OASutk8ZHVr#>`# +btLGs<feW=;Htl{ni=i&W#SsuKH_xH0ri2D5lEDy4N{~*hQ1M&VLmIqnCf0*ULg?Rr6%YzT`{$l~Nn~ +l45vz_2(ynl>O461qmILm`>-ao<e;Mu)@lI1~1@1J6MP|*9QSst|W{u!1B@9zDxD9@pxb1a93MpzCFj +j|jX8e=&$be`qV&;^!5Ll;?Y8$}MmUuHQ3e}&}`{5Z=Y_z9Ln@NBL*1V6=c2>vR|9|}Hy<oeS0Ev(%s +tlcTBbuO%RF06GftaUD|aVe}E3+vMq)+!g)rzxx<DXcv%tdCb%dt6vkQCfMFRvx95M``6zT6vUK9;KB +>Y2{H`d6ZTjrIkl%<xyIBlvW<4l}Bmi5%q+Y`N2v7RxnXdXp|rH39u51dO~~rU_gKsRn!xj;s-+ltjw +aG&=@~hEx-yd>Iv=egS7&z6r-Nd1V30Wz=|{K39avgjRKrpBgl2L04LW7a@``p$u)vpw+V1^jUd+@0- +RhU$aR+hC)Wsa-6O!sHG*7+1vt4zkn1}FoLpnbb-w^7*BEj=D8R`zhFlK|aB__y*P{ZQTw}=fxBw^D7 +;-%+K;%kiq1Me=h+;_ov^>m7K8EDa3UHFI1<Ako8)>O7N*L9G=wJMa00{bm04L}g1bs<>6Lc-~#vhCe +utqehg^u`xNdeZHMzzofe{fZRHLFoA_&qQGT3!|r!w-7}*nTELxbVY%0k*@55G(v}P=M`uA_NLQTqVG +EK@p;apG>|gBvj82#hfOt*&|B$p_tReRX&6WKNNGCxXOq4;D=&P>#pu0IQXHM)4FT+hzx!x=Ctl=Bf^ +3oiaD*j+K8Cohhk3auGu3X_@S87x|3@iausu0cXF*mu3}E>POc5eRm`c27Df%oRm^F_$+ZEwiaB-B!K +eYbiaB**!l(hciaB-h!l(hciaB+G!>9qdim`MN#Hazeim`N|#Hb0mjtFpaZ9=YN0-Ri%kgHfv7iEl^k +gFIZ7jBH27~{MrAlQQs#jLvcW7G_0^+PeMO=nh{!K{8LX0_?eYBQKs4r-#7_2Q#eFtgXC(YJzhKN6?4 +<)qsR()~!B)|QiQD@gbHRsq4<ek9hm<*aQhNcZ}70ip6<7gN&;LjGu-04L;DsHz`}wP*#AUKiuk4mI| +=n4)$N?MH75a6MQ%^kCN?2V&^6Bwc-$b`bt`u`X>V{5FIycAy=EfBl$%P{Tjck9L-$9n8UXY2)osZLg +0CaMiXA8A~%wgN#2CYwKdBQHpvi@^Hb^C`G*$YwMz@Q5r<|$qE6ew<5aK)!P(ag0!gAS%owR^CPjXsk +5zVsIZ?%!%2fMKVs-8av{|y3pMqVH3EV#KN0r@(bbR63vezM0;?Zg6yRL0EC}-xX)zh<;S~X{9wKV`( +UbruI)o>mQHzRz<ICcPBR=@5f>6sp-XOr$a>V*R-b9c)#URZ0u?Qr0CIk__kHxa)P9q5JeJlnvcN)oq +AU@tHz*TQV_CDS%z*TPq^*-J!z}aKO?LHQlEO)L$5sbvgVkBJXE-FI3{#cBJi{V8@s3aeYk#NDhs0c> +lV{yq`R4*z*h5lGfu?z1-MW}Kgi%aI>d{GhV{>NfAT);0XAXhQhF7g+Zp%OmxD*+IVm}?i;i^?FHk7U +45!hVVmRYF42<XyloDj}f>0Zu|CBqY|sg#e=x64E!b5{eNEytYz+t$8tGf!F#3*qRq37I<wyfE90ySm +3oG0k-DFhy`9-Ex^h(MlA5!S^-wBF=Bz&9uHpWz|^}rFtLjk#)uYP+bF<E9?`;Un*}(@BU*TEivTBiL +<_HN6W}C|XyLUT0-WR#Exfi%fRj9;h1d27aFR!~@Y=8dCs#xZue~F{$raJUkM;?0az(W8+Cc$Mu80<1 +J1oG-716?LM+G>!B3gLuxBw?tL<_H-6yW5FSm3qO0-RhC3%qt#fRig?f!9U^IJqJecx_C8lWQ$}*8LF +?ETVSTCI#4@Hb&I$qul}uJpG6e_kD=kUGEiO9hMkTyN^}~2({!Bu}}!!eX>pf1~y{;5?5I;&+ocE+*K +CD?yigZbFsS^vAgT*1-QzB*xhw8ZZ38gXQ8sZAmtFU=mYNhPozAE`VA?^*zt;hAnEH90x%Aeo-SK@nq +Lgh{g+bi#GP{*#h{Qji0C&@LDmS#K#mFNfJhgd=OCi-+|2-nvnj*wxCqL5S;~WM-jwp7n_oydT7mRI& +hM-x;az^SLO^&Ind?$>t+9sI_?s;P!h8H?m3a!L%v=%RCMqvhZq5Lz)!me7g#LazBEU_iM(FRiV*=c) +YJ~nik(YF#zZyb+zr7?t%n03@MmM*n*0ht&YE4vDl~>aml-i#r89u!Bzesr)JKm5FcXJMFt!^`&YOOk +m(J2CSpPmvB8n`5CYOT=1KRqoV3<y6xBOn;oPtOXlv+ZiFU|4Ug6JV#^)eyP6v0eaV#-Vww?W!O`cAr +WWY=;W>>8OCvZax)-ATIamc>!oO7X(1`7X<{-e=4F!c<$570w8*+X>EvpTtILXKAjK{G$8ZhYKZH7Iw +c?|;?t`Ff+9ZUh^mJ0-VHHeY0$?Fsivu&Fj`B4B5w2v2#UDTFCZx5#(;pJh#P|ff+B7V2?&a~u}VNt# +EsPgf+B9L5fBt{W32$|vDFr*<K;_ya>rRg#GGz$m{P+8Gp*PNJ!##-6f+eYB2d}@G099n34tgTG^Uwp +g>duCYM5wtW0wH8^aXRwZtM}@>@TL5-53^N9l9DKR5#ucU>&*|oQ50w1-Kp#?!t|O0-SE)Dcm?L!1Zv +5P~A8xz{wR6svE}zIJqK1b>pM}Cs#zMZb)b0B2+a*sBTCv;UZME5|vo2TG`Ehln}2p9XDyMhA5XdgtD +6<ceB`Ph;rS~XSfAhWxLy(LCRvGU6iX<2Gjgoy)?-5w_?o8U>|-<W1b+ib#s$|AljRo1q9LFd>pf;&( +!SZGbKI2g52C9&kQ=axm7^W!Od*~LQTK9T|iL9%^d<lg}=E|K+wp|T>^qeZtfNkZ1~MR0z&n_xmQ5Y* +v(-9L1Q=f2?!dyNwbq6B=*@k0YPJ*jR*)D`)pJ|(8p(E0)jq1J1-#U<Fg9_f<8XGC?M$Lvr7VkK0doF +An4<>D*}Q(J{uPh^zqq*fS`}hCItk2d?xJyF|^OF3JCi6jLuDhP}<EE0?>k13P20$6@d29CjjlEUjW+ +2fB>|QK>=tVLjuq~RtZ4+SS<kUV~qf`kF^5OKGq39`&cgk?PG%gv=7Ev61P@2!Cao3`vur;Il)|>n+F +Bhej~wLo|}gS*lsz&T%Map1=wym!Cao3#|7AKIl)|>n<oX>4kN)_o|~ry*lsz&T%Ma}1=wym!GQjz7# +ugCPcWdrDVD|!=o1X+Z;FX=1NsC5`kP`~++3anb9ruxQE_VslP2UU*2E3tlP2UUW~Axl+Js!iel(q2T +S2b3#Bj8nTrt$XB`vMx-W5abThhc@?p-m|z9ns|<=z#uV{VC?(01>NG4?I#{oAe%U~qj)x_vk4CBdlr +mh|^+R|hbhz9k*Ko9&Wd9DPfA__mWP2GF;pYj2BO=^?ecdPo>s-;!Rx?Ie#u^)0b#Zq7`CIWxD!s<}B +c2}aYm#HzVDGYN*#x5TQsC5Q>e&$q;?xiyFh2F|y{s<~x|31-pU607EB(Il8fb4#pR>g0;3{4KF+Ze? +PEc>FD~YMGNOLh-l6s%1{Dh{4|ytL9cFCWyY@607FI?+I2V-V&?k)+HvGVslHZnww&iU^U_`v1)EDV$ +!h@%mm92Z;Kz)vEl0kD-dss1JtpzUlJ@nye*zj#}3;POar<tE>Fh}+Y&4&ye+;?$IgC9u$J()I5`~~; +Yl#7=(cz_ZdOr(K+bJ3w7IL6h~V57Lz}y5iO|h$F|@g>mWbKh7DMY|HVI-jx5d!9m`#G1&22HXE@qP; +W^-E%t&7<th}qm0GwNbC31T+4#f-X`O@f%sZ84)RW|JUhb6d=)i`gWI+1wU0>S8ttVm7zMjJlXjf|$* +1F{3VKlOSeuTg<47*(8YB+!izHVm1k4Hn+u$x`l-af;G3rjJjY=f?&;UF{5ruQi3T-x5bRQHHQi2BHb +1<>gFOPh|=5^GwPx=3Fac*7BlMRA|;61+!izH<|5S*u(`8RfR$?<k(xV?hm-U}+THw+x|^+3M~LRmfB +-A`I$|?-h6Gs2*AbMtvs!?ad>zr4J8K14$=4BvxwBq?m3$rXmpdB;ILRaMa%ZyuCwW9%?rag@<cd(so +oxb~ToGfrvqONBD}pO`b_sBDMO5X^9sy3S2&dc`7U1NHILe)O1UR`OfO2QQ04G;OPVO8O;N*&s$(_Rj +oLmtrxpP#2lPiKGca95iaz%9H&Pf4It_X|VIW54+74eWeX9YO9)~v%-uLXzebCERWB7J^9K=8Xh7lC8 +F;^&711o!K6kvo<xettwi@WMV9@z;W|KR+fQIAfoS7BErj^AiGsPxiSeqZUN}`6&UxHTzt2g6UG9pAi +ruQlE=zFn{Coa{{1`5dqN0r~v3=OaSz8UI6rQK>+k|Q2_LDNdWY5Spf8LMF8|ME&%$N5CDBl3V=SQ1V +A5G1wbF{RO?tX`MVVYf<AsHeJhqu{;pR*(8urk1O$Eju3tdV$M2*c#X`#84GOUP9M#==$vS3le12G8( +Jip5yJ;A87XqrgJ)P<<pi}SIDKK@n!l7Qc-*T>Ey|i0BHG16MXp!BQsS(K#Nj7Ecy3c8&8KnQ^(YtIY +4FnVKt}-Y{_v;~pLYug|#vr#_TW%+{G~C3qW{=%osu{WM*Agq#rkjV@%<K$`X2(6JbkA|FX)AWyf4Km +At7dn=Y9;QPy4z^1Zoj=%ch70K=QP|7W~sX-b9<?|wMebZeU}>@w+gq7n;Yr1v8egpp>6jLO$uxSZnr +Q6++kq`xYxoC;C>5pzylT*fF~_10nZxfG|_fj*tOky(6*b#)pjA|w%;wz1%%tF-^tC!UD}y@PG;js?a +b{v=W0ef^P9xkz)id3cBkuDU$NbB@7%GTU%TV>(sR+2cJ8*dLnP$hk^T3Mh@!AV(!C=GEOeXK<xu*Ov +*vQQOH#XVN_Tr4wM)Mtp4<Aa$37=@<H)qfHucmE%F@UxJ#|B@G`5OJV_SLBntP7h(Km%NeDB!ky<?LC +-3PgyJ5sp7_l{k*53t>Q>UR50Yqn~pZk~TyvrR5_+j69dZ3d~ENuMT8YHnV9n%L@;x@{-Yx;3IHt>Ur +mMhvuy$97l<t9WcLpmhITH)T!hPFi&*Et<$<C+!Qks_nLMO`A@UE^n7Q+nGAsnYxWPQ)fF<x3OmGY-j +3hXX<Qc>TGA~Y-gIecXqjp)Y;C|+0L|MH}XuK?MyrFInH*b9VZ{>ex|wmE@#qGXVOw<($dn&*@XtP9_ +un^&g^B*>}AgEWj(e^X3p$o&g^B*>}AgEWzOtn&g^B*>}AffWzMo?&M;-pFlCADGc#v&GG}x$XLK@Wb +h5hJ!?SMt%#1$Msr~m($sVBenNA(B(Epy(N5jd;*@eul7|2>q*3K?u&Mstb_?ES-fzO;zmAOqRGPj{_ +=JMc~+aEV;JH5Icax=H{LzcR>;Zo08>gtEvV<Ai3`?#%UGiQUc%w5y59bo3NgPHT+GMDSioDIsH4a%G +i%AAjvIUg@`HYjtWwN8)yt&X!DogVw`9cMc_k<<<8OS|v9>dZ^WnU{_;3!R!BV0N5Y=(y!Y9cLCgiTf +>Q7CLUTs*Ve#bn3Q>b?Q#cZs^l-&AsEAd#7oue8<g7>bT)i$2H}SYswwhlsm4A@3=0$<GSyT>%Kd#>2 +zH8-El*oj%zv{*K|6r>2zGv>A0M8CwKaC0h3N{U9yhr;ybR3@3`jGDV@Gtrm|C7vyr<dn7b}McU^q$n +rZHuY3`b79$CHTuI=Qm?c}cQ<gV@Hb^Gmk-Oj7XU7gQeozLAWwcK@ax$EL`*Tv;-YxlhE-q{7XayRQH +&uq{scT-q$7YNE-pe*mW_i^<(?^wH$cdVO`=T2X4OP1W#`P}Wrk{3?Su0H3kKId)+-`quB3+J*H9Q9s +VfA8|BK(_^Q&5EILtH=u%3oP6Ssc<JI6fO5#?#zUu<u+V)-csQ<1uIfpB?~v(tw^o6ROmD}={37<L0V +v`_PvSq_r^t<ZgZu=RnEdy&cYew!WrbkRp7!+aVnfaE}Sn@<hFw-7>gP|d2f7|z+B;efo@Z3SFKBDUQ +6Wm?@g{1;&ypPw(Q<i@4c&+1iIa-6YGSPZqtAgX{dWs>+B=lw$ex(-J9BME_eHGmN-o3-qdz`x!W3>W +16Ww_HrkV2I4MLEACyrAkb~A-LRch>E?BpO-gv=-qff-Ct;*t7B4?95Ye%#qxY_^5ZDx0-E26*@K?ty +Yzy=^yKl#~iT-ler<GVGeDCVpMiFf%26s?N=|)~9mfzmHy4OC^RWwZTy?1rLx!jGl%9P?fVlQ_U4Kr= +;T|H?pcNHz8yf>MOmihhLT}5*PwzA`{aZ@DA+?x8R$Jvjl#|=fJ9?S#1fBvW<tE#Ff$JM75SrZ!d_)X +t>FfnYpZ?7W11-J`2Moa8L8#^yAik+Jm#cqrg#crR5s>pU0Rgv2cF0T7utovVd!ILO<!>K5C2NzXE{# +h;{8pUpje-yh=W)!<vX7p&I6LXdS#>~k+cKvTv<bTo4V6KY%FS<TBik<ft#p?cvpV58W(3%@QR7LKkY +LR=XTI61;=7z*ok*lb+rfs58&F@EBb4M^mHJ8AR9xbuet1wA(dgD1oZJ-fFDbT2*3}{RdTIj~}igF;` +sl9adGx7GP;l@Z+k>69=1=XU47gM8j?WXB}vFS#eQPT}Kqh@5?$fz0nXSpm@)O5N2s9CoTb=35&zUdr +{s>r`r(^cfAJ8rHj^1tXSU(>}vsv@^1X454}qoxZfR7I{LH{BsBRgt@@<u%mman-%$Px)vq=0pEMi`= +WW+;owu$iIYFZL8@jQ)`L+q+J9yYWWRkTfY6a{b#o$XI|U>z1p!IEk<oO1*IzTSNV$BPF!Vb`$GiU4J +XyMI|H#Qat)^K<<(C8dwF@aUA`-7d&i;e9h|lsL`A8aDpeKvtGrv0`X-uso1VJ$ic#v08H`fjF{j@0r +{1Kcsgr%`<(2x5IrH@^OPnM!@9t#&8#AxRtaPR$bLR|2otkqOJGHI{l|)@P&5Rz!xAj5(oQMuqipt9V +ieNK<^GdKAfNqN1!t(Q#O0XukR|%Hju2F)8<_DF8p8VTgYZW;g)WHhV>Ap>hBB0HRVxYGb)qu7rN`SU +1ssn9P)BxJ9s0p+~5&W6Hor>Vk^zBjvf2MD@BKR|XdlYpYada@wobDS|Q~>Q$R07Gq&7G9`dRGzkwO< +kSbwCmIr8Oy~z78p(z78v*zK$rOzK$xQzK$uPzK$!RzD_8jzD_ElzD_BkzD_HmzRoD3zGOe>PDXv5Q$ +&4@D5Ad9^kmf6m?G*+%~D2vT~I`QT~tJUT~b7ST~<VWT~S1RjVp4!ZzrQNrW8>bYG*SlL$;po_|av@M +<6=hHR!nHaO6`{QI3Ts%N5{Q#Uo0>cl=m^^8<41e*27qP?4ThfQ{ORm4sUKyn;}NUQiHf(2EK}{rQQ4 +P<vid5bDm$3PR0!MF9>DP~i3`&#~s@H3dNnvej}$f)-v^5bDw!0<h@hEd@arKUENP@pA>WF0}@WPOj@ +o2UvA-eX|lY=JUOZnq8_I7M^Im!om}+SKQlomy%$0^*EQDoBZmj1qk|UU33Bes;KNzr?Beean%uTu<K +r<)x9_@ZLK~v?oyYqGDT0~$+0wL`uui9Fv90|C~9=6fyh~CMZ?T^t!SA4IelJRJ!XIEDKj~ye*R1W`p +WZ%6=4g@Q6<>Ja!d&}v6LPv$2LN;n_)$;4c(9uocE_-=`EY19NP-1)Ef0J0>JJ<<|`Y`ZeNLQhGgTsi +nP0aW!m*Cy^TXYMmE^0h&$gQhv#}-k3oUs`m_R^I<!p*P69rs1ji3)1BcK0oC0jct;dtVVZFXz30j`k +N4Tqc4pR<qRgZ4U;jCUip#;9qg$YGL`k!b6gR6S|v=Vqe7Y7st{d{7i0Gm0Y1PW3$z)jTyqjGqu*R{U +FNxiPElAEPpPy!8IRuVMyiFQG7Q1uL_oW~rURDwOzS1ZAJM{AV8IX$m+5zeWe$&|x4mHqK65)||+1wl +WbXb%n7^%L!(;koK5O*tIbPgSDcZ_Rz=Gxz7U6xhyS`tnLe{#YOEXfS=bPmw>_2U`|QUmj585BI^Y1= +E*@6#4UguyMik<<*M(5kJ_wVEXb}MN7y8J=*2<iu^%8*uh}>@<v7e45f(j-mJ*WJEFX|DDv`-DDQ2Gy +u2gIdxs(~?}+l=rO3-WqP+Jg^74)-?_ot=-Vx>f*cyr_*L4Tf>Ta)+m@3hOt^C=|MNF0G*;fAe<|3v_ +^mr?Of^!j5C3?b@Kg79+sS-Wp%Aez0#8io%bLBQfsEVi(J?hGz)m+3>iJo@lN2x`P@*Yv-<z1t^#}s* +a*C_7`ioCpQl=me?Ufwmz`-&nj?;7Pjp~%a-MtM&u^75`x-tQ^$^2SJX`ih$P#LF9_(CI5`;*%u~Z-c +zAsEJR!ygBx~q9)!gMX8D)?<;EJ-Mp}>2=cz7Cf=U~U0|#^eML>Y5Azq;;$ZrUns|RAbWx|g)x`Tlp^ +G}@ttQ@|3te#RctuUTKN`BIQ{HOg{prv}o$^)_?+=JB>Xf&dcz;H8!9n5`HSvBXLs6%^-%;e{-JrbHe +*1|!MT7EI`|Zz*E*g}#+HZekbkU%^)qeX^ql*URt@hg=99=XhZ?)fk_*XP2Z?)h4_~@cRd8_^QCrB4f +%3JNXKSa7{Qr>F6{W;P_lk!&k?T?Z!nv}QNZ-1I}(WJc9e)}<T(WJc9e!G2Wt0Kx<?YG;Cwko2$)qeZ +zZh<7@^tjq@KXIi%dU1Mu$z8{yuG^nRg+F|{K<;sRTur<`f4V?Ea(Y}%d~1nQI-!zrHSsO45^T0RJ+3 +C+ZMPd0*l%}wTur>&Zlx-MO2*a1yH&qY!JO#0ns~QOOI1XbsEK#0g{vaUTTQ$_a=Ji1a``7$6(PT6?4 +nylSQP~Uy!oaQ|NYD{j_afSiO~gfi{ol?{h`qXbBg0?a{al{1#^kxYI5B+xK$DBo0?p=6K+++`lcq=Z +H8MFvA(Iv^`}Y~%oUES$#q-eMg?<(<7#r<uDDeZ<*g>yEzyYz<^;#p<hliFRT1T_Cf99`TNP2>YI6O_ +(gkyW<7#r<Cb?A+<*g>yA4Od-9XPHg*KL&>JzC`Pr>iH_<aWHgJCOH;y3FpRpsEP+o=|(*@$&9K-V<t +1-KzcQ(V~*?u2y^6@$$xD+tU+jPu*(&stEF)P<z_(^6o(16KYT0vaG1cDQ~r>ZhPITi1Jo@>h=(-iYR +Zjr*6SxRYZBK%j{MSS4EV!y3B5?-KfYZZ*`g7Zo3f|_DoNx%j`DXjf$M|R+o8+le`PcTkZD}hj|y2x7 +zO|&hsuPZ?)e`9O+$9-fF*>IMutLyw!d$aj<tmd8_>{x=#x0x+!aQ7geGreyJ0{sS-8u{t)n@q)ODpy +LGTt5mlll-fh}j6;UN>;{8$LMM;&YiFaG~Rz*~ans|Sbc){u56Kdj@2u^bv_=K8xzfhwnDQ`9LZX4gI +WB_?`g(BofCs!)M`%m^Ng1a@@rwHFM*{=vQSSAM);d>?r6=4R;r1T1<pMG5WMFu6qxs#g|@#{A$;@7{ +eh+n@&5x;(`B7VJ|TOYZ3sHLBqTrvha`K}^<$9_fpjsuGL9S0ThI}R!0cN|tkEgn%sEsE_c{RHch;m6 +5yiukD`iukFciukExiukGL74cIqDB`DHRK!men^O8&;$`A1EQ5hl+FUUSWqL}RD}#bl+FUUYWqL}RD} +#em+FUUcWqL}Rt6$qy`pM3v+Zd-R;`?iZtGgUtS?7CeLvzczqq5HT)duEQhLxCmF+C;DPwD5TmyBOcY +1?b?leFzIjy0uiufb2#w#RtZl(xMFKT+Er<62YN_8R<DZF_#H!J~z@kFJ(edn@9W!f;Kl9M~KA1-TJd +<jNtw(WB+K=3>kzIjh7i8snl{Iodb!%WbP7oQk?$i3=5!%^-0(@V6qqPBD5lxk66MjkwIW>S-;6k2Bd +DAicG?>sGVX{g?+k*=HXPmuRxzLQKP&9Iz1X(d3|om=iKNWMS(`qG&%!6zS5Ucm%U2eP`!M-<dz@JBu +fMXZeKhWOQuuT??u5{T5Q?2P~vM4_Zil9<q@7JZvHLdBj5M^QeWbCw*u8N#B`1={vJ0eP`!M-<dz@JB +ufMXZeKhWVCO}eka!yOxf>b<ZsG;C)X8B+3#c&aLRrs*A`6K?_@-9%6=#3Y)!fEY(42a+fVw=^hw{DJ +?T3;Px{XMN#9vK={w6Oe5YT}RWf8ab<SRo4sFCToZfrNGPgjl^s7BfE+M#j(LMqyxvEYt7ZF@lr<Z}m +DRURjVb`7<@kIZX4;4{cWXpb|P8R};_NKDyO^flxKcU~MU%D7y{O+z*7E(>;&F|riu1_yn1~r|r%&W< +5U{e)AP4C(6fN{qu9cAF)F5?X`{5Yk93>@KQydp#){YQ$Hexsv=#eighI!@?_s*KS6YL5~}v45(g=iD +t*EZr7URT1R%o_PSO^?N!RVEk}O$5%N7rk-K$2L(ChwAIKdF9fQba>{9|k&|DeT^5j&w!^}^!VK=cr{ +jr&LecRAgM3rtin=<r4CKA1V}^plS!IM%6arN^MG(&a6rekSiTm1htK{k~w)II<)yp8*8>=nDdG#AC^ +KIRord}1Xty`1KfZx<*MO}v+jQdSZDuR}DG=cD+|46Dy^-xL;R%Dkg$B%ZX`P0=3>}vn2=-~_Hi`Qzo +9rnaME(}){1yAYzicN~_D6%SQ;w#1!*}-1i6I-)W71>yARb+z?RZ-dH^IZh0DyrcFMyr2H6GPnvHq=} +dHE_>`>Yvi4q3!}Nh{ed&qwo2%KT~2O##Iq(%77vpF^+qZppn1-dnK(v^hXzCQ-69LbB`T_$369?m!K +7*+X$#C>ZZcQn2pxphTVUmDoXrS)=I=ZnDo=5Ak^v?71;eDtD;av5(UAbuPX=@q@f_ls;MBDr<Q_XoZ +1S~$MX9t1;H}iU-h=4P|bd*AlRj+6ok6=eFec)e^o%Mo5&G0i4=q`BUTVvZcRZqjkLOHq}5F$t!^4=b +<;?zn?_pQG}7v>kyba2w7O}e)lDNU-%B8*v0TB@D{CvT^uoXj1YP_>0ahpNQWBK$f`XuomlOnLysRK7 +;}r$%F4YjRiq{ncWxS~%^xJPKuseOkJ#Gh*swlkT8~R{3M<?!ary9q8$G5nr6tgEDSl11<;|Q+7^1tK +qw+cl-Zz>9kH}?d^|N5Lk)*G&h>W_cn>A!nTQ3L3wih|x{b!|ml#}OgV`RjAfDGEw|UO~2WRg935{NS +h%EO~iRLA-P&jUq3OsJ?XdjIfO5RTYz4#Zncum#)hZGMoRVAbjr|3hdJ3IKo1bH(yZ_ti)T->bGJ&$y +??oo5-(<f{FN*0_R&rSWI$bwGuBF<WbFoU6YHDJ$*?*kk$K#l?03MV+A3?r7a>}LcF1diK&gSyMfl?n +sY%S_^>K%xUX7`u&u!to0J3zf3aCfXog?Btt1Hgi!Dk*-PC4MbDm;^)a`T2f1wD2rWH!C8hcDh+3g;z +9l5_sztOE7sfvQAo>9>3qB^8?^`nv0{fPoE4J^2b?yu}`DvSiS6~+Ri9;G#*HHD$R#2(h=&bq>e+-YE +tRL#R6t;EB&{ANR8XtQ+>Gr6;+up=*IU@ng}FhoY19+vW(!W!K=46O5i(GaZjw<u`w#h)n&Dl`B~{ms +J~AO<yw3_~^7=88<Y0YPKGFb~T>3<}E9UZ&B_<ywO%@4qHI&V6+G%#xPP4mqnq9Ti?53S&SM4;rYp +1!icElCzx@&xOdshWEyD6~QRe{a!3T$>$V6&S7o81)H?504sxn5OdH~X)Oybp%)T8}e%ZolBF$cCQd$ +Zbm)$M6mAuR2-%Q<@v<E^v-Q3`gPqsx#F;p|u`E-36{=d$eV8O^cSes&H4ixg>E7^U@xySfwZhTCK>= +j*OGoZUq}BZZ1_-WH+XY6WG^CL1@9Tg3y3#3PSTu6ol4WR}flnLqTY~O$DLpwiJX$*;atAut!OdaAdw +6ouK*nP(dT}^`UY`=JP|VjLi3=<5K~^utq8YSk_2I0LvPw3}9GemBFH6{Zl|B`o5wt=zJ<RC=5EEsu> +glqfaFUg~;erb%R1^^r?nHA^!7J)1WM%mO&u`^i<m*#DJn6!wN7fj}puXq}2mvB+`n&j7S!Pbl))}lS +MoH9Wz2{QEf&lE$A&WVrfBfk&#Oanv0EGS}s|Tv?1Z;dUYET{;@$2@Y4oCzRxI1A>L;Vf^?rV2*Q2dA +jtLwgCN=$4T5BUVh{xTl0lH`%LbuEykZbq#H$9OMZ9JZTEy!HL0|u75cKtiLD1Km20>qMDaxR)pBe;x +{mdZf>*oeRU%xO2`ue3o(ATdF3LVUH1xxIECyrs)ZT_o!Lm%|CJ~Z?}&nO68(6b6Ks8<j=pyw5Y{^tb ++q5FAJLFj#CSe;<S+e->U-}AD9(Dl5cAoM)1D(DhoNjkwNcwIqI*}o|WDtkjg(8rq!f<E3-5cKg=1xx +RESAn39pDPIZ_=SR?k6$VX`jEI=l6OfsBzfd3>m$%5?wnw<iq=G|jMJK!*Spk2td7%~m^ZuB#Jo#@C& +{}6c#^zJcrn2o7p;j{DW^3N$6skp#A-RMi8zg2Ya&+6X-zDmE;SLW=CmeaQjFF_ten%DSS-EuU<DdoY +GTpsQWG)BMr$Ib*l10}1RM1u3pXT5d+b=w57<(-g;t!xBmKb-eyAwe^B)@005Qk~xKq@T`zMEgb6KH# +rOcgYQ5D&VGO<6xw<>aZmJaq<yMOMSBFqUnH=-y88dZde80W?mVHU=@^NQ*~7ZhP0#<`1%Fe%~OB}FZ +u%Zl1SR}`f{<BE{pJvX5U`a3tN2qA)VQ;G_ptBMdLIQO0)B&_a_tWX4fjjU7zeU0=gg1$!j6hU7j{fe +NkkpV@}*T|qE=xbz15%e{(N)hxmvRV=JHL^w#^fj_p5%e{(P7(AqvR)DNHL^hw^fj_kP)vPoQbc`iRz +!Wht%&-1oTU+$u<Owg)!kI-R(&v4x=j&Px?K@fx<e6Fx>FHVx=RsNx?2%dx<?UJx>pfZI;@B)-KWUSv +*`F)XB~G?O5ABs;rkW2uv`bhtLrC~U<JYjwH%0FT{py~T00FY=$Ink9W<zz6N+3AwbP(NPARfWv#KKO +`l{6(5vl9i(I6sqU0V+#QrESGxQ(8wBDN>(l-x#7RS{c)_Bg(u?I0}v69wUWf2JUO?lraUh>KrW<Bkb +e_ea&ZyN#A&p5t<VRE@gZMJeV9F84>(n7dt+VxH=9e^iaQ+eInnc`o-y)p)yIl&T^${!umBZWpDh2#t +PJjkViFDehp+*!@v8(ry=}m?z8JAJy9Gc2SCXqRjo#EsDIn+myFjTDOZ*%oAkpkE(@jdwI7hZ?&xM9M +PC3#@ruOi`w?`Zd2ZBN!woDZOZ!{MPA-1<*jDZ?b;OcM40=d2NijFr<C_$MPA-1<$Y9<mv>5eA6Mk%o +l@Rv@7=CVF;9BAKYCh`mv>5epH<}Lol)LubKR~@F;8^4KdScA?b;OcB$xZ6>dd=cn_`~ea(`5vc(-d) +%#&O0kE-+Tc5RAzV$1zeb=uvoO;r)){kUTl*Q)C|3~|S8>=g5ym;0k?>D|UoaR*_p`(tY2-NsH;5mYj +!Cf;rAR24xbV`}2v#!gicR5GR}-fip@cM#UPKc*($ZR}JPK_z2q;@!qhRS{G&rY7EP>{Jy&-eYRw-Ns +IFC#SsC#Ji21sv^o;O}yLKsVbtp)x^7vovI?rTTQ&%*r_U_yw$|Jjh(6@%3Dpm+t{fpqP*3_`#?k|r@ +Ym~yN#XVPC<FAiFX@2RYjDyns~RdQ&j{{bWA<b!h50xh6H106uFdrr{tTc@pJnbRYfj1({XzZ#d++4G +r6DnnEN#`x!d77esl_xUgd`>k52W_tKeMUzaR?9{oH`uowZsOIVI<9m-x^9H0npkQ<$sVVC2z}4|<hb +9vnY9NWom?pXCmPjQzO;Rgr&|JBPU{^3U?~x^s70b5-P@mHTJ8wTkhhZJXt)!q1c`+##BA;k~#5%jsv +&ib*ZJrV1?PTe$j;B3IK(L=(Tcyh2d~bWBkUbWu?a=siWj#C{`NLRTmZ;J%S<VJp-CTBoQ9^sb^7(72 +*7VxH+YZx~GP%)ntq8PG{Z!356?_A1JOwks-t%mahMXNDesm$)@u4<(381RQ6E#F;A*aGY7C+D5=}X3 +ZW&L8UWmuP6#Comsa{Q5|Tvq6W}qMM0%A>sKmj0qs=;m99Uo2rAv6%0a+!W`ovZ1RQ5Ju2KY*Zak<6D +&4a~5mdTYT4jlV<IF*=2naaN9MYFZz;Wi#8b#38Ayo>Zi8F_eDuTWak12w_PH$2KeVx%7g=pf;S=BP4 +i8JRmDuTYw9Z&>)oih)FzDCX{g1$yZ6hU8?w9aGJ-^?Yo1eo$Sb4eeFwF5Jkt}24Qu8b;zzOJaP!a9P +PD{8B-l3-@yydvmp!n_9bHMv$1^d+0_#oQ8ZW=bmnwuGCJ&ADQ32{$vPH45trX5Q;l6!bN_N}C?Ggqv +NZ4Hk<IW>@QXVb#Ix*0YKtAeA9bu9)3Eq^Jg@%^W9K%x*uVs1Br76en5C?$CY=YaM2HXg$PghuJ;n6a +{_F?o}CL6T8{H+N)y|yV+CbHG;loPiw2hCU&!@&38dxXS4z&^l4OISb#BmcB>-j>#R0dEWVgECIu@mX +3v=iLSLHTEV1fhZl#)Kthtz5bwW`SNUJE;Tg<JRP}By}W{$NMbE~x;Vx`60YW1hE&SGx05meCE+?rF0 +g1+W9^eZZXBxFz`e=@g4`(;c4p4)OnQP9`i)}4xKK-yO#kutYcYcHk(&u!J_fXTpf+qJSG*)q5NZAH- +6E>$IxE_1u46hU9RwI@RIWp1}>8MA`t_L#e%uXj|H$imFMqpcDn#kqI1=^+m@cSyS%ObwnpqCG4UGIK +|?Pr>Bix#N!;k+`c}4~d9Ntjw4@smeiGXYQn$7A($~8!_Jpm5!N@fJ!G-rC50}C;Mi`CDvZdT~${Li! +bJ`YDGYnX?}%zvdA;duh1b4GEMU<v_2x$G`~VW8M&tUm0Gi~ynnt|8!mEA^F!*%Vu}C!kXkt8p5}+lY +t(@z6$O3GuhLJ(Qvdl?TEUTvnqQ@s0Lw?_S8IzwPHKL&x>{KBKfhY*269vLyVfg$zIJI>fE?BQe)WH` +tKs~9{bb~-=J%`Qu?4{VVQpu~S<N5OmV#{n=8tN%LGEh)n7$!)0+`p?INZl@Ugv~x7sGj-cECLh=SNh +$*b!h}Q&HT%aQ=ciP1qG+{(>5H<hJH7YCXixh4bU8FXXu9C$udi%rbvf>mhPo^H=pXuw&u;RUK_3=e5 +wQCI!0{E(~a^MDA;0NF|S*3Kxd7Mj;2bFl2r!=xbq{Y8kn(h3#55utVX(PVLo^6I<A=RusDvF6>r|jo +jG69__lZGvUIpdHDippP~{-dq3pL7KSw*fD>jH-qA*coY}%Vrxih8raMLMY~fwC^EhR8;edWJa%c+&w +X$IX`NBapddQ_M9MNzRW{58wQD+c2wS^<<@nM$u!U^++(AP<I&@fYc;iP#(=<Ae@S1?<A;gpWUkVsoN +r4}1A#urX$pMr$i!fA~#Vb=J<n7#%QYYSJj!D8n4f*EZi!L~4N9teGnt6z^q+roqnb1{Q_VM4nbB-|D +zv^iiF`ND*@FC^X;Ce#(dO!9@v4T_*IGw8=`@`Xtq4k8h^FsYx68RZL8YG9F&TbR;LDreAIrGdoU!c{ +dym|4DX)x4oi*VLBWn@yb5u4i>r_u6z<RTRGFZxz@SQ;j>5JrJ+1*5i%_t@SVvBQeklG0@qs2!WXO1B +z@;q1Kbw{6tmcztQD}YCUdFO6}3sJ%1AHgWg@rI%K<*+00l~6zbfA-c=8J*9djlj#^L28^#{=G1yUiw +CB!0X^~Cl)}orf3W2=o{uPR_lVbl$MVJ9NctR0&Anxx~g#CvHPbtFg!-J<4VOPceK1JA5vA<stw!Z8i +P=rkt2hS<Op2LG9im><P;HV<(H#|6|2)hjro>zpuh6gVQ;?cAHyA@GigNmrHAw|$vzt$WcMccn$5%kr ++S`qZszeW-DwN?@JwN4TBwO$eQ)xSXz^wqyn5%kr+NfGqbzgZFV)&I64=xaa)#iMHn4k&`Y1`aBMz6K +5{g1#g@SK|gM(*s8oL0<z$6+vGE#}q+d1IHCXUjy3AdHRNA32WRmWqLrHIZxpj&}Pn~ZU@dNg1!dMDu +TWSv@P>gjsb1UJo<J(+j4{Y(zeVaa0j$4b4K)lw&jLRMc24b%5?u$MQm5w6hTiz+PrzB$dEQ~9w{=UO +^!#33~9UKks?D|6hTizI}|}rL%S5QUF}r_Jq-;D;*q&S?<k@jG<VSs?o&iN_^u+_L2biL>Py=&kJ9be +CfB4L)ON)qb^EpPG-(I5@$hKfer-HW+CgnRJYu(B8&8vVP@4gd+U<Wl@}(15>w1JpjeDp}52#bYb4>= +c7V}h-0j;V$(_~27GLI`6(vRR_B?DSjc~r^3PDM18T8nv1$)NfhJfvh${S6*bGN`SS2b2tIPsHO%2DK +;R;Ut4<KX^3Bpw@jJOfsnbm)p6s=69T_iZ~ZWwTh^mPF<-G=E7W7CjwEqnLT?HVJ^&N^)C>W`{uGX14 +QM%xvZ`SqH=RvwVEI*r?Yh`l;ME}b%4}6MpSO*khXk8<!1J3e}xf&PUNXYemD?ic7K{$<R*>PqQZARr +MoJ|c=4%f5b%A45n-=^F=3y9HNpV{6T(3Q>x4rFHV9W6*d$zQV2f~_fo;MK2Bw4?4a^8P8Q3A*Y+z3K +wt?7B;@fjpE7(!u_q{t6M$qT)*B&wu`uzRyq=C@q?~krB5c>T6xvd65pMU5*WgztVhi&}^LZ5%wXT*o +?+@Jcxxnl-GpMSV=-azQ{-}{XCBIxtq*O{6SL7)G=&B_+~{KG*jKIrogI}iQgUHhqp@PFT9xwFG@3|& +@MSFewu%gXK=81qikPGab?vb_c-e5_G)3|-C)oHnq*-!%3hZt~8P211wLTp2bHx|~_R(m?2PcCV?kF? +2b%(*7oNIeX63pE&1ZP0fp;$b})(s&O{JQ!{(tQCNdMXLlSn5c-^b_k@8lU&!dQ27S&Qx@sWwIkRcKf +zapN>MI69pYx;p4TL`D4jYx#pwF2#Mz%HR^P7o-211`Rn@tO=L7y|Hj~EDj&h4>}g+9NTG<66k8ay>W +7CIbpc)K1tQr%CLuQx3w>7krVi%HmoCrwRCpz`@4Qy-EV;h2G#PPc8NB6wX_CKX|NmP`e!5at@3F%Ps +;$7?YHBCo&otRifd7b(Fu{IL>j%2rc??PL=r;WOj95^N;fP!c{eZYl|$W!zE{9Lu<^B>0uJ9wou8tQi +?#+gKxm;8fO(41!NtGcpJ+Wld$k2#AJ#V@5zUfEzOcqM_KB5fF{H#tn|F2NiK-trbopA*&U2jWEWIt` +WwVkq`|d#*Bn$7%^rfM8k+NBOw|_j2Q{hFk*~INafWj3hJtSIzfnpR34q8ps&iGQxx=7d2@<_zJ4!L1 +uGQvRe5rXg1#z0PEpWT<;5uq`l@_5ML}Pc2d60LtMcCz1$|ZCo1&nv%6C)L!E0RpcI;iHL1mR+_lIF~ +Z_wHwcAryZR~pq~1Ubw|IYyAfjFjUR$Jbip5#%r<<rqPZ%2!haORv$^xW)0cwqyi3bp1z#FuuMrtcdx +#m5MkKS8E}H96I&1LYRnqPHP5&96GbNLdfzCX`5_yTbNLbF-uA39#;qxao;_m2orJls=g2psk|{o=$S +XISA<!BtFI`+EG1ckULo|%hgB(vhg3e8BE&<EYF$S>WNzyvMVRO=OD8IXto+L3iVzR!H!?&#WWBa4E( +RM@En}9_!n@kpV3tzlPAS5|guz{kFmd|yK}C#Ttx<%vTpEdrQ?@VdqA*Ko=F$;G(AP#4FJ>vttb05WL +HyIMN3v9RBV~SOhdvl8J#Aixb9IeWa)?=*J0>#Ck7=KdiA<H3EC>^sW)AID6jWMMe+~1PYU;0H8dFXE +HOykFslSFvOo{qyn8TE)zlJGHiTZ1p!IY@Kh6zlG`fHfKl&HUk=}U=`K~Pd+WDs<e7#Rc=B}N88Lv@t +_W-dk6jAQCj>=<<97`DN73_D>vhRv`Y!+zL~VM}bsuq(D>+!)(I?v3prx5sucsP2X5l?2s2`-VY5chC +MzNzmQPZ#^Rj)0iIg9#9kksb`64Ob>e1G+-LjgI+bxn8x&=SFJs!F+J$j?jHLLJm^(hicK;f^qy7J0v +b_-{o;GomSW$52fY^*WkA~ZVgG>#z1llt!^{W06N(C;DMg&o^PV8=NARFe%_}y}e9)&ZIQAuY(5C|}Y +@TVR4#n6$^Fg0>aM(ceL7(<w*h2F`pZc-bMDszPdN|ld^Fg1E!LX6$gFYRDVJpoCeL9-L<_Zt`wkd+X +`qab0CJPVx)SWJ%ufBbXpszl4AWP~?#}y^@rJh?!eQB#KsV{AnCH1APvZTJWRhHD3x@RTzr46>EzO=! +X)R&GDOX^G8a!Gw@TP~?Dbp=c6OPhH~eT^zYLT%#E%-d2+YdvBTAM|a0&^KwCMy)5(Yfe^m>_P8-y(Z +Rc#vb(THa51_Q`2iEjWBCHw3&yhw)XHjz323rx?VG8EJLk_CiKXI-s9CZdI1gTvC4>5=5+C8R_kRgxv +aXNxBBo&y@uBH#Nyjt(F;<&VA8aUS`RJl$;B@^p%--Ig1+i=`kaDtz2<cF5WK3m$6b%9sUAZkeQNPBM +slTIFlKB+En;mt^FYHUwI~w$P`xV7h?S`N^~3rdkFKfdL#oeR;jT&aIj5D@4Xvu!qFhxoQNv!=xBpS& +u+=tdx+~8vp{0lwYRO-0`wJF-PPGuRPMv)yf!@i*ieo-A)5}gTzWjQ<hLvk%v5sr~jaakB7NxyLFDUe +a>L-Tv0@j%e58rd~o#mRiN3L0H(@V6KnDyt<V%>1&A!ZetSi(HSHFtrkDQ3sAVhNeV>|Tb9e^iUv!>o +2+%1*{<HfBGw#<&J@^iSW0B`O#X0P5SgSS9-P0(Lu#mVRjobnIpJIqZlwEnaZSeJOjStq<*eWoUidiA +%lA)s0$@UZ4`I(XH6x?xkn(u*>?+e5$3d)%3E1OZ0&?){5;9A5zu8-lOgp>++~R*ZFW|K;O=X-`o4%5 +<Ov!^<=kknQOI{(1(WfZM~o^zw)rzss?MRKEZWdwM;Lls>)@(fR$v|;sx*N1*{~)-}Ti-s;ne?7vIxd +!0NHb3Nz`EpLqCu)oc>!?M}`~>@F}r!Md^UJM*QMHc9L?_E+k1!NVH3Q7>rd1t-l2ua-3Rg0V#dc+|Z +uE5<wDnSFCjTdpzgMv@x(T?02?#Okr%cJxWd&?RhLlFKzqcB~1j$Dt*Bw4`(w=o9L!Ax9p0rg{Nu$ca +Zr)jcHEYmO^r4LSMHMj3CUp6CUWiw4B}1Z&7C+ws*KN*}hP2fd^2TUbe!@<5Qj?U^$To(F(B7Ai&T7? +QY-At>h<4*zs4=)K`sP<hibq;p%21x2?V!#QY9Fi7b}PBKX9Mou(H>qbsCNbE*VI7sbAPC7{LMov6Dy +w1x9F*+|G#OS<)f+k}xp`gmxODO0v_7V!pjGcs#?2Vm-knVlq^~Y!2$VjK_xl7gELE+CV*XIUpFaN2M +pz0qle?w7F^lLv;614pK(@KJhpLs<|3nW&AW1(KDDGIuM(Y!cP8&}3=S8Y;?1mn)rHayVe9NwcQDO5u +`cy{N8S=qn0qR3pmdtzpC<2RGLO&YL<6!Gh-2xN#~H6$qS(@BGHKDQx3doLLhl=sq)l?3IzVn|Tl^M> +F=ujMZ*3d(!Qv7o)zpHmXF_o^Ws$iW~S);;;WqM)-^3<>&rNeL3eFZ@bL(9%m5;e;=Xf|{PUDCp@ei| +Y6&6(91#uNZ=6W=PP~ONInRJ*Q0*IpJ3g$?$Rp;eaVaa4fGOK}#<gf`fUDbwED&X^VoMEQ#?;2B9?>Y +lC#~(-s9aS<=8y85Gp?%KcT_-c;C9Xx=ht%a{<Pdtb6BsOuGra9*B8L0@kye@0P3<UgUbSU&=J-`Dj{ +q<vpCgm%y%XwHzJxYxC-Lf-dPLmK!YgP=D<(7X(3cfAKz@aIZk1r4DUG$^R+6+_Ux3@N+a!!r(V=r9C +{-&ZVpsHA_=qM)1~|C<uDD)knS>U~-(9umDzSM|zRZns@>RRs4!`!3{npZ}$jpqLl5Ng%WP!s|+cVqS +bzNzltnFDdD2_K?+m=`A5h>b|V^AgBAXz5!CYFTbV|LrVAMUnmLMG422oy05(WxGxcBwCjma)!pd4Ue +lfkIp5b`P+~U=uZmy@UpJCK!&283ncg=I3Hp0en<?_VKR1F1`ukZ`8O=)s6)tzM;JgZ*d{!$sufj6Ut +FVmoDlFr?3d=aJ!ZOaQu#EF6EaSWi%Vb`Kg)*<gLYY@#Ax|E6kcW>u$n(b?<Pqc+A_E*b`5*@zIRPOH +961Rg4;(uQArl-s2_Y98I|(5h96Jdi9~?UgAtM|+2_YvOdkG<y;w2RH8G8v~4DKa_dGTICm>TaT6!iJ +Lj!KdqyGSz0GrP}D;&<t9m!;idCGBy~N|VJ=id>br^|oo^y0A2Hd-<o0#his))j)Lk+g&Ra*{yG?q8L +~ADY6^<R7DA{9#CXAoT-W$xOzyD-43WKYT@eDitJ`QRZ)to*DA8x098dDT)keA-JPc@!X*7&8x`5<-f +5#wd2d$a<z1(|w<z-Ru2bII6nS~qDeoPMyu9m__bx?V-gU}*k0LMcI^{jA$jiG<dB3B`%ez5&?^opI- +JrY=D)RDfP~L|Xd3iS|@1u&myc?AFaYbI<4a)nZA}{X-<$YR_mp7tM-|kimp-1+KE7$desp>8WdAAx7 +cdB1i1R?KMBjQf=tBN4x-D*VKseV-vguGjgh&$D<DuR%As}XUh`c*{`@@_RE?o_|32$g!b8WDG@U)pF +>C2B<6seV-v<*i1<o$6N=QQm4q+^K$55#_B$#GUF_6;a-5MBEN)RT1T_M#P;5Qxyey-&~_4^!hi~DY2 +&{rH#@K8PcZjl$)49@$KG&ikwKBm@M(_-ouKVNSl}&@$KHDikwKBm<{pm-s6g#NSm1a@a^7{ikwKBnB +ws5-qVU)6>efK!?%0SDsol0S)&BU6nP2OD8UPgyaa2M;3Y*~f;CF;iXtz;8YMWP$V;$B2~H{U60A{z? +<w*Uq~|ugQjs$PO?qy_eTuxi>A4LLDDv{A=Qcc~$jh6a+wf{dUf%TFhSw_c@}}oDyk3!)H$AuEjf%Xy +>AA^%ycP2Drsp=iMUj^`J-6X)ioCq(xef17<mFAzZFrX=FK>Eo!+R8YdDC+n9#-V#P0wxk9YtQ=^xTH +`EAsND=QgYs*?VqHdTzsNk-g{Eq~|uQ7TJ4lO?qx&n`Lp1x}H;2-R)IE=WbYyws-EDbnb@LXnW_b$rZ +-KYP1_(CC#3$SG&`ytD-ip9#>=!;jW4@Ts^7C9(`C9VbSyjHQG&nl3G!>{5EaUyWOW&)E!7&6`_{xQ! +DCS*Ct)peQHI$>)NF2x=*dBcU_yvcz(NYogyzTq&lx_b#FNrs7dc~pBg&vT{h`m?o&hOy~`&3#eHhJy +ua9_zqn6Lm-iQ&^cVN3>GJ+!6aM12`_y!~EqJRURH}Vyy4)$yX)~n+)pWU2psONEP)(OR1-dF?rBYqG +Q=qFN%3DpBI|aHbqP*3abf-X9MM2)zk0=S1^ZH&TLF(6yU{FO*DG9Q_enN>CJ#vJf>{Ai~tDk7|LXPk +gtqDjGetTLgcSb#^OX^OCu8OD!bxGan&{Yxjpw`Wu4qX+o-m6RMPKU0FSnt&(bw@u}MXdK~Ox@AXX|v +-ZnoTU}{PrESnC^V%s)$0}swl*$Kj~G1-9IjFP~^g*&C-h-aq17WjUY(<p{l=hJy^>}S6l7?+p5T(Zk +o0de^t{BLtE~o)U?&HaptPX+4ENJf6<-Inzrk9`@gElX}H~V(df2+uXaa{@)g&o>zPN@UH<3%tG9Faf +$h?6g_fp%%%0X<T}Zv))5M-aoThbuRo%T;T6eu}x>&*WDtA_OnwIXpGPkjQRkXxa&J<)lP7+z<pB4FM +#qJxkc!{g*?oCyZ|3zQvGmaB9rjcQa>$j&aDT3iYsU)OhzCHc6poaf-cV={&akt<N?<&HcMjQ4k!k$J +O4k*H&MjH+)!k$JO4k^N(MjH+*f>qmaL=pBh+Mv?pZowOlDZ-vc8;&c&o<<u^D8imb8&nD0EqKEzMR3 +nIoK}RbWjCBrgsp%#$nYZLR=^w1DWbkc6j5KJim0zKMby`MMby^?Mby_tMbwv8ac%{?;j$v?>xv@kYg +`faHKB<5np8x6O(~+jt}3Fw#5u??hM3;CLJ{<}ait>YYh$k>=xbx2BIs*lzar>s<A5UQYvZ6I=xgJUB +IrwwK&}w<wQ;o~=xgH|MbOvAwThsxjq4OaUmMpeg1$CxPy~H#lz3N`QeT@CQD2)CQD16?Q|fDrBI;|a +BI;|KBI;|qBI;|0BI;|WBI;|GBI;|mBI;|8BI;|eBI;{c5%slC5%nd5&Mc$8wExPeFYUiF>P!2tjQZ0 +4E2F+1_g~`Gbv-1gx|=H1E-s@=wTsKBQtje0s#LqUj4IVGE~84di_54|?cy@3RJ*v0D%CD7qe``l%cx +TA;@k|8G%K7lnz=2xt0L!&cAWd0KZ+atlN4qCDmP%Nimc0;H%mLxDcjg0VSZ$lB5aGc=e!~u-Y5qTRt +SeTj+qDId}28YtU}yoYg7@=|CWkaAskjFr)gCPdubguzl9UYh77`L64@NJLOA66u=y_RRX21|5e~JL= +>QeNp|)2C1YxIv`JL}6!U>K0#uY&+2QMqaiDbPS6+tP-dKKZ2@AG>U;l$d$U5c<*ofyUn;Y7_%Q;Kkc +oE$?_A?WMqh$8IWKW<(g`dWWM5%hJcUlH`R%6u|T)ZBSm5SI8aT-Hy<vi_M1n-pPh!S_xoLL=I-UJ*_ +}J$y(J^tE=iBJ3?Vv{MmIKz;WeMcAv(G;^%ipWVAd5%z+-psK_g{kgT1im<n!><v&MY(#f;P!aYP9K5 +6m8_}&*rC{0p>=vy6SaUyna*HAy8of$YiADBvdyXoCzU1WO3gN`so%&r!h0pI&%ZAnS^Ow#l!U>Ig)r +w-#{K9E-7uwe)H7QsqKX+iAB5WLZSZx#*$Io4SR}nT2+^AI)tKk>csZx+K*P|>e1bcXLyCUobc~C1h7 +QW9+n%}|+-Xr?*Sm{2$@~R@(!_@~A!5$veMue35{Fs_AEM#BUqZJ#e^_hd(ma%euX2iS(mO>uWijCFk +vzK-&!Xn5??KrSJeeV3@8b$Xq>3V!n*+y1=?y`O#R;@3{q|XXLrEA|-1e4io?!tDgL)w_IG<{}BD>$< +CbH~hGQ0Yaj2*}#cZ`95Ti_jN#X^({L{rs5~ih@dK*Qy5URH;@UMCayDnl}t8{pRu&MKGCX)r=vlKf6 +LDkHzP68`Nn+c7JZ$IYnrK>$C$wmVfTxgd+HfSJe_A+dp$vT`jCQ|K_rGr^x!xj%fwJYV+A`>Q5oHKX ++c+8CIIlNWh~)a7p%SkAzj`b9=RyK&pR!vzkn-FrPo6JuL#IvuD((BT%a6e^&@D$*4NH2$asQ)f$CB> +HJ#t&=Dw|-JsSKfzr8c<}T=K{EQ;FBm=5t1WIRyR8R<%&K^+lB2YRvrga{H()rceXExcsv^gM9x-g^- +wn>*nEdT<gGn=(7BT%XvGFJ%paN?9A=xc`#FAyl5eNR=1K<V5etx*V+E^Jr-7lG1+<K`~7B;(r55hz` +lP>&CR(wQ~th9giqyGNZSZYO?P`xFF9=cly6B2YSWMTfZvl+F&S$H(o&SE<G3cH(bqcgpR=Cl4xu3pt +>*7lG2bw+({6j;eEkK<V5i{VoJb=T~aQMxb<l@`$3KulX(7DiJ7MSYf^khkUO$ZwPz1O6vx<6JKK<2z +|Y+gGdBQ=laxqAy7JhP}>&*rPhjaJMjsXJOZUN?`c~`pmcV<_Fo8;&Yn>jB2YSaPFp1crE_L1i$Li&6 +FMB^cH(=qqvu}XrlaRx;TN^zK%jJXg?dB?l+JC?kp}{$bDPy-rwoB;OF^J?ex){Z1WFfHX~jmMbYYK1 +Vh|`@7=Bzg#9i%r_)m2=&TW5JeeR4di8`JLl+GPdZ6i>+FlaskCUdv?9SD@p%0{yl!U>1tMqp5BpAj> +f;92vAXoBa|)k2_jcDqJ@5Gb`iDb|?J4XM4y8uPhb<}O6FwrI!zYt0u{8U%e^RgVu7Qf7Cnk-&_Ug`F +x5Y%4yqMlAu>oX-wxbH}3d*>|+-?l4NCE(w;M&yH(5!@BdiP3ASw1h=VDu=0Fvzebum9K~rDhqdPm#$ +CnYb3JvWLg?aFsSL6Dd|{VXY%D*YS)p%;_2)C^^}DdReD;!BZY(aJpEL+Aq-n5NWj;HgaRIC{pM6(5D +=ag&10bw3U)Zg!5(~{|R;gXYO7odb>Ox|j`OJuV%~)kVyHiK_SY$pstW6JV%x4cAQv?@s%={Kyl1=(u +SYST4LtQPbFQ1#z9tq3K=MU;9V|DrbK{a|<T)tq2?^s&Cu*bXx?BP1KY*<!4JFdMS7M0Iz8dik%HKdI +Q3(Du-){X<q$>(?IZ(%X{!fthcu#|jZMC&0Ik}r&FzzfUBXZM-AU=J^8b0`@#*1CZO<Z~y@T|r-Sr*z +DRd3kfAI&8wy@wv6?P-EfvT(4RHEE}IcZN!VH@q~FGhSclSO~8WjnN^~c6sfYARYQtk566!vLi<{~MG +;*7vF(ar56=uJVpe9KBG|*-=M~W&PAEeA+P_W_Lssh*A!K!Ats=Cq3G>PDH{{gt3ZZ@NFv!jwEK{V&X +7=w^WM|G*MNq;n6-;DjvsOh63aW&e_gZ&C5n9BaHHy$84oxaTi#YuFx5O>&dgf1cHyX|1!}?$}nj;$( +p;H>xdWY25+~`$BFmhL?6xkV|Wg0Vu`L-gjAEd(OPhM8!^@BXu!U}UWJh(o6Nw)~IDncJ|@T?*XTMw$ +rn5jB+Oi>Wu!bPoT$W$%#X{AD@YGJp;EmCBvzPWlv5o}K1QAHTG4rsGQrfNoWgefvrGjjf5h0r3_Z&r +k`>-J$q@R>Egl_FC$vrA=&Ox4VOwFAgh%^WayG4o+w9yVvh$Pk&2-mQu-#u+fb#jucgQz<f4vqPhb;D +c?`28m47th!7oGF7v?Rr1JG%^uJ`0-37W3tFRi{_ABmoXAwoPMX(%1shNqB2zWD>ZBr=r%mR8%q*Jk! +Wid}+8|`A<_>G^MW$*_=VzqMR2>%gEM*$%u$n@oq4dnX3L&j=MB5kAP;*DLZXgXccU&tr(ol0JRw_b| +bJpC29!Dd5Dbi4LmsL<mL(N?=zXg3wY3)TCYJP=QHl(5EhfXU(*i}wDtPpY+o5dqdk!zYir20axY5s` +n3%REGQ~F)VHO-&W*FdgmeoTE8<eKKsYmGv#Y5wX(MF{Me&I!4u1vzW4LU6R+c~22Ksdv?LL#}Cd<po +7SDSte)R$DBRP4laEDzY=z$`qNTZ!W8Ei%inYp#FZ7U67hjWRkwQsx=y!q?rM&WymDW44S*p1+7)b9G +Rq<wd&3@lVmzBW|FpTQ-m%^LtiPkA~sgM$;_V`U2Z~rU`!Fh0Ehb(VVH7QJ1%CDj_YeMlXOazBAKMe{ ++jrqT@Tl(?uJ(}p;AGzX=duUBB=DL8V)3zX8W{?BH1)MpcWR%rrCaNu}C)AKAUIP4!o-f4a{`sOg3p0 +I_2558&z*eHqCC@s|a4jX7!kvY}%$)kI5!8vXQfE)xsj#G`n|?B6t;MaDZgf>}fTlNH&>tbBbh>33R4 +NHqB0$*MPnzba;tmlXX*&Y?@o4PBxNF)`LN^X>Ol-(rwNMR13#s(;6K-AlYO`iAXlhZ5~ksuVSmZ%Sb +lOZPh*i$)>rTYQ~Ukn%nt~B6t;Mu*zi99#smGO>;UUI7PB)ZrD5!Ud6ClZX}!L4r=Iu2h*M~f`Yz`OT +=W;h!GU@bwR%i$tLSaA=xxHsm>^pP1YqsvT1(3wq<0J<~M4!K_+Q_SlbseN%M!b5h0T_e?+SdGD+53L +MCbcggP9^B-z0@GD-6q^-GaSvhG*bbuv<lOw#;G?E;WVvQ8T^N%Lp4vLTaXoi=8YCiS}{lcaW@nWRDO ++K@?FSgl?lGfBHNe1J@n^#YMevVoZn9Yn3Y$Rt_c5t*cgcU51=Bw4o-nWTkNT6>X6GBfT|WRm`PV83b +wsicZ&mxx@_9}jL+Z;PkXo>Ak5WYRY))I&fr>6;Z=bC68><KfjhFhVxzkB7%}+<|n`ACH=tCh|!OQ+< +k{wX5oNxFynMh5++(&nXEqdhSIfK|;^HtfYpgnVS+Ib5{`1n{O$xOH9fP%L+a}|M^8_3E5#~b+VJnf) ++l%YM<HUeUHtBc&S|vMyYPM>xrwPP}RTK^}F-RT+}(k8h|fGe<y*J3=z*S4k!uQ`(l%lpuI1)C<&tdV +yluM*e~`d31a<XuaY3tFNT!_k$!PZNvPIeoKW(xR@WBEUnvNd=!@fDtW=hf^(yOt{ch6UnJYE-77(sg +Nl7LqKSN}-Vw1|Cu+5f1Wp7&srERecYTIfV6t~SXsBXJuzDXjm`o&Ird7G8pFsN>~Wl-H7%b>cwmf1} +wsv>A>pS|2}Nl<18r+)FSxg7D-FZNqz4<@LJpqqpCa_HueWp)23sN{&f9PR0-Wzfwr%i2=Ol|eTrEX! +DRt|;rU8o#G3r%nwkC=SEeq>Pn8F!k<;lF(@GPACboyn9ti`0B4#C<*U(SH_wdVt{w`y%Djyt5QOI?W +;pd!tZ<~fiG?-@m0T)@H=1iDZ%dyD#7na_=+1Le6?OlsIp(JQ-U|xpd{44uU09+yX{mG>d;r4mEf%<u +EXsBzB;P}?>43cZ=iJtL-4Ou+ZbklrL_u!;;*&tVBq_;b~6~Jex)@LgUYYP9p-ZGueJYP92~0i;7&^^ +GdQtdomLX;$k$pY;8T9B^$7EjzE=HWuF=;+ch$|oWTUTTh>&4I(boe?f`-3dtpt)+UkB58?wWgo<i9- +f<xyoFu&=i%E5PpR7h`fwb)QNQQ)nutGQ>ogiY+})wCiyv)$I-5t^&a1m+Ey@1enM2wKV5W4?pC~Q_3 +Q;)5`dfcL$W!y1q%LhXS~}Mp^JvzC32%r9o!irAc;1Sqsd*XPeBtXG&(?Gc<%RPuTbDkeT<)$;^AAvY +oK+S(52{VxmgL^gXed`^%H&JuzkF%ai8!Fz%|D`Mre9{2ugo%6vP<U0<HEzX$!Dw(kl3owoNue`oA{D +Vcc}=<keuCiFLEpP7@HXBK3tTMX;I95cU%VcnM(%rh~t`|^Ul5Bj@k-V=knikW97Wcr>M;C*?~{vPyq +$vzYMyJYW!{w`Yv{avx&0R3ID_d$Q-_CDxu+};=TcXy?|uOKtuSCXmBFwVQX()=FAc@@)kgmGTQv>jo +bcemHP3&weOd+qPl$;|IH$jt8r{oU=;4zhy*U&T~r81Plhyk|;gWR`*5?N`<zGvAk!neQve%=bZm{pK +4m1gw~T1BQSV({I3>n!EkxJuw!nn7${*f)&&E#I%~b1NJ=|Wad4aWad4gzXAK6Z8GzoDVcds=x@-zXN +SzZXHI6`6Z#vp?^%-RdvZ`XXx<Z3Z0-)3_vDaq$ow8A*;LH@UP5Mm5BghUf3HENa=}EKim6;M)8_6P` +<`tw^PVZ0c~98Sb9c`vgZ&(_4EkGb*+cz33fe8ZyYB90g(cv60~e>`d<QoKC_Zu5b7QLeBiz5yK0F58 +WMK_(v-zL~9n~*Kl-0>bmC;2v3d7``iVZ4jk*P8p;@Yb+8+26dduC+jJ)vmp7-I%c#msvaWad3fGJVe +`9aZz5nCMe6eNV(foMVisJ{8mV#9SZeG-I-lbD9xhshno>o=r0Ip3t9ls4?NEV&*+lGV`7pnR!nbTI* +ai>FC(|U}&wAfN4L@Nx-}x=Okd_kL%D8V{#oj=JmJ^9T6zkp<`x`>wFQPa-A>c_PEZs#g5W`pLCSw_h +4uTO?_!eN2&Ft#g5WGlO3h0FD>aP&G$)1so#f5KF)Y!mQU3I={F$SRx$ks%=2-b6DImpOuwPcj?#QXn +;oV72HH>4!M15XO$Xbi{WKkHo6#Zr4H?;xGTKl3F0`NaU1&e;yNLbNcR@6=V)`zr*iU_zl=joSOG^7` +-X#_LY2HQbr+F9JPkSHqX9EP7{Nn-ynEm4d1c<A;071%uzP%6nvq6AV2Kwec8R(mD;6UHV6R}(u1jsn +hH_ya0po*DiLVq?ukjX$_zais5-~L{M%={koX9EP74CDd?m<{BD02v4R_C29L8wAKW(6{$Ne>Mn^$w1 +%SCj))`h7Je%MlKy0=<DxcT96yecR0|u_p$#A?<rn!*8_v9+v~jD{A`2Fd<tU$rYr9-7GPf&U8EgjV+ +N5MV`B=D8)IV*k?ZC$iKt>~f-sB7jiWJ*$c>{hjmV9oF^$N%0GLMP#=}U#xbZM161nj(W)eB~05gdyr +r(aljvMo0CXpNSBJEQ#bq{imCG9gaGV^^MGV^`VpLHFOGOC#QKA2eBT^Gz{nES9q-F2-<H@U90kRgV- +Pr68RA55(61`FvT&3!PjwwpkTt77IpnAr37zLd<|_k>tn@q}1hA??qwC&Y4!vU}Y{Qq9$gGU{F@kZ`- +Zf+2)Qv_@(J1W3qL)J6!fc>T*u#!+Q1?vim-v3$MixXgVmGIJlaIBxGt$;^EjYlgXx84Y`1&YEHFE6B +`!XoaWszML7w(|TXdjN&PKUrc81Ln}OE?@P$cebC<pdtZah+$WBXxvxcL?qe%dOPMpHcwQ}K&Wz%DwU +jwCil$}f%qX7Mfm_}qj;dkM-vz^%QM_nb)U`e2%qW`nkTaur#om{6Z4Ws!isSaaM%VU`N6oJ7A&**J+ +e03;yS9fsO1rj)oEb&i9+*+I?SUCZ+a8!vwC#ZzMcW>jQMBzrGm7TExO;n$jH10S>E0fgQMB!W8AaP3 +m{GLtff+@#2XTzM9w$}Z-tOLHm~^yFhDk@;WSDfcO(xEtAcEovA}G6y07*w@5|DJXPC|~PqjdywBpq! +MH%HRZj)!w39qo8HN7B)bhx1yqyIg9m?sBQMpCFg?3Eu$yUA7GRJ9>AmGB-^-PwaViWnP!)wuxWlb&1 +cI2u5C)D9mYlFP%&qsmSXRi5aj@ZYWhrBJH$DRhD&)$Jl!{>SCIGJyWU%qb^e{oHR7{Vt-dUHES~KI? +=-1+lZ9v?_zG}Lu%yAY|w@3oz0WQm2me;O}F}OsLNm^*^o}h>ZqZvfqgP$b<uT8%+*|U^{Ocyy_IBBZ +H2uzQL10W+{+c$QkZ?Y;-B17s$bL;=h@wxDm8DFDK$@KuEonrGAd41l2fs7)zaw)mPShTotatbclu>+ +rN3%NTH7Uq;=V}pB=(CW8{*n8^C1KNi!!C=i#nvX?K3Mf;A&1wf<9;LTS?f*es9|wbf!HXzKS-yw#*Q +)rlc)%1gy%L{1|isV)|pyDHREjhmj_GZ(FIkmx(IZ0NR;Sb1x$~{);rFVV}&|i_XBMrsLG#)x?H<vZg +kyADn9B#@?&x4SO$VGWvTtm(l4+k{tfY9DVqAh6%ginn$W5NK0YDE_%vXs@H->b1Y>%&Of;%#goM&?| +KwinP(dIF^|tQ@M<Ze>z-=x)l!{GXRJ*o7ScA;%=A;{$r40&v?a~d{;pV8TjjG<)o9)-)893;^Td1eC +%#poRo=W6!$GccbtJ6rsOC;AWoXv@Zm0I7@9i+K;J&vbp&@s#j$G{T8Z&IDTL+qRxxj_H{kqH}XKb_A +Q;6Vb)jCbKBS(C*;(c}!P|gVFVu$?YS>+;#ew%2^8Rs0ST;o+5CC)Y0*>9t>IpUpnS5^1-+vm6C_l-q +djC$5UmwhLMW#9eUvZWuJg&R-Z?O*or{}yjGZ^!v=U$1+3g>rlNc~#^#F)9{gp8p_4QJB{D*9wBRALx +lqMdX(76j7L?_5%gUWAI-T)E|RCQ_y$}{$4>7Z?s)e3uuR;wtHE3Ty$B~oNHAeLUDh^Rz)$;7DYi2KT +;6B_bCP8d%v%s`562!1+B;6e=BH14Ca+nplymWpiPQ8K${iiKx-5gKx-A1K(bb;z!c{PD^@FFU0kOKd +n2q^uc!vJK~Vy<QBmDhjwC4JpA`f}{HubnHhkG{1{CF8DoDLsORRTqiFMx+>)je$Jybw#qV;YKt{%Qy +n<#=VwrSMcU8;FK?NZI_S(j?Q7=T%-n%DEL)x2JGt>&2B`xgQ*v-dwK2vc_dvw|>P_pcO$D)%=Ef>!> +kf}oZErXXnLhYDo5JH6L>_mjqoMyRU)@-O<lpt1j;AZYAADhL|;?+V<>szsC2rqvc8cyo7!Wt<SLExz +ft!Y!H!u2v(^bPLyuW&>BNUBJxQhbdZRE!?Iy10kJ<xm#r^Zd2=uXwJi=uCfkpQ_IU~vnwp){PwpMmA +p+E;yYjNSAwDK0VQzg4l04Gc1Q`Fu)|6?_fZKVtw)t`9-<HgKE6Dzgpp_^oc*kX=`SH1_@7pS-#McMz +jIaz7d$Az8;mG{3}n`8!P$CaN|^3aLMK-V-axjaDLRb7D#7nuR>CE9N;oG@2&Xn_FUUzqy-K+BO9?{> +LJE%Ll`tfxgwv9g;CIyD;S>{fcVrTY5*h7ldn_3ZH7&A~X>Z!{N}1ZGEv$5VmlTV0Dr5{%_BiLc><L} +xpD752{m&Hy$N4W51mpf66ojtxKPm_Y{y!-Q4$Z&(rIKLWpHdKd$L}i$cKtsq2)*N9DF`P0uN8zk@;3 +^CH}kg&f-m!T0x&D0M?t7lk%Hhr#|nZCttkl3bD|*B&bopyHg6~hb+)M>c$h5(p(eK#1bzHKLD0v4Q4 +sX;Uljxw{f7!d@A}^q1bv7LUB<!v`R@vXK9(y8`uMSeppT~&1bsZSq+8hiM6VJvAD-2R29-UhAgJtl1 +wmymC<rQhQ9&4!{zO4ANiQh~<I$HDgeLTgg3yFsRS?YYYXUH9;dKQ;W&frisO${|L1k|$2r7F^LD0uf +6$E|!OhM4c&lLoH{6ay{$1fEGef&y6XhQ$2AT%KzRg|^RhW=GSXhZ*xg3yL!U|c4l4gF6A-P%yntqmp +J+EB7Y8+rt~HISrR14+6ykfd7!NxC(Vq+0_?x;2obTLVeDHISrR14+6ykb1WUQt#G4>fIVhy;}pRcWW +T^ZVjZ~t%20LHIRC@22$_VK<eEZNVgb9i5SNJt01(G|E(ajkN;0W(8v8F;+U2=D&W3uep_NTiMkLC2F +}(gV&H7OA_mS@Dhir;&^Mu|0W_)zLEYZ{iV)Q8J*WtQ&fdd{5a{eZstAG3-s6f8=<GAUg=kZs`7K17` +pj=3(Ag(Lj}l9aAM{NsLa49zfFkIt_mCp!tM`Z^=&SdbBIv94gd*sx_oO1~>$D>3>#QQ`YeW(CHKvIA +x}XU9>b;~0`s%%+2>R;PDvIdHgI+l@sYGz(LGOEtpszk{4w&}xps!yM^wp=$70Zbq=-Itxi|uQTBDSx +!ilDDPZRS`?{Gjh~GZ)XX`=MJU0yYo&Ht2()(!Py~pwhm#6|o6!Q^Y2?QxTis9z|?|vJHOOW)plz5mo +xGBC1qvRhuf+hTEn}wc)m@Qf;_xs#F_pn<`Z^)}~6eO}D8pZPRV)>y#quOPhO}`qJj!roOaIx7h@DDP +j|p<3Y;QM;H)#o9<tsC<fA2iP<*OgDN0QwVCekRaD1aDj-a<nI2RDVTR3gzjgtbUNhaV#sT5M>3;3zF +|lTP@SLIyNDVBe)JzX*=Zmo7^q}eqlWC^)Wabhf$LT>e%a|iG-LERls4q2o8TB=!2>Q~qOv;S<($<Io +=XC#SMbKBjTG5R9QY)HKUus1&>Pwv^%z~NjR}+aTFw^~NA~FAEx_^@*=&OITBIv7M4Qu9h6fQAeWqLq +mhsi3_18T`IQ)PNUog{>Mrw7!?VUEi5fcj6EpfWw6_Rr5wDX~6xdO*D`EYF?RbCyc1&Yd1mYl&F%^ne +-ztj(PsP-}^$xzht`403O#a!Ok5LrzJbQAA0rZOtiZH3B&$twtcHq}2%IUeY-wt#%=&q}49ul(gD~+{ +KYgtb+ZuRx<?Pf339)D`0=Ek}t4F(r?tDV)^T@wT>a4|7)$7So(V3j1&sD+jxluulKiV&w<3i{XuQaS +nhg%P#ZH=yWStv#*D?T_XoEq3f1}kcJ*Aa)b;)jHEo5p4pC1}kDVa%u*~LmAC}o!M^#zeJw4s^=&Xmg +wfv(N!%pTW7b8ygIy=+pVcGxR*Ozq1jilG^{VTjwAA6AiG6KNjEszP|9RCAv+ud!q?JoE1wtJ;n)GUg +UN^?=7M2eavYMyHI7H_56s=PFr$<!`?f<dt@+_+!dcTUwpxRGEWzWc>+Zy>-QW9_aDBjsG=QC*~55h> +T&`X!O3OTJheT#moP+Fkpi3R1Z&Qm(KeOUlUKEp5n>DpKytREo;gk#c57S<;2gmP<>{_U>Bb@20i=yJ +-_C*V^aEBJG@|w*9iyQZyUdxMdL@WO<}q<ax8wwo6u8{$=Ax{l=E}*_VDiEH{MLmFH*9+#xVQaGk&u! +Mg-z2;L)bh~Rw!9fA)C^awsAFh}qafdzt(2`mwOLSTj9Qvyc_ZV)&|@EL(Mg3k$T5PU&ki{Q%;OoDj6 +A~1;OYXXCKz9BG(=UW1Uc)lYri069(gLr-*Fo@^(1Y$fF_Y#QlT--+>#&dB$ff&!l0|a6`7Y`DM@mxG +aAjWg?Fo77)#Umk@VmucY2*h|U9wiXtxp<5~jOXHU0x_P8CkVuNE}kS1<GFZ>K#b?&X##D3HH`Fs!$^ +NWtoUP3-L(<6+tNh>vE7y~5s2-!beTYGx1}otV!JI}B@o+f=^BC9ZcEn*#CBWyjzG+VrDXy!50-8ah< +UJdlR(Uar4<4(50-8bh<UJdn?THirBwnk50<_z#Db}w{Qgw;`*9F*8p_5&$Z04W2O+1SY#fA~hO%)Ga +vI9ULC9$+8wVk$p==z4oQAS-5ONyI#zDwwC>sYMr=e^dgq()5aS(DE%Em#+X($^9A*Z2i9E6;PvO0(- +4P|u@Pa4YVAf7ao)j>RID68#MYFJ0QrpVOMMW&7}<wbCJEsK=%_U}4xr+O}DB_J92$luM)x2w8q!$>) +2r-ZqWl=JpEipbwB2KIi%z_wp8;I}7su2r^N7P((!=~85o`$d*?h52aK&NbW4MWkH{7x}xTT{0C_q}< +5Ht%xj1iq<aaiZ5?4ak)tSzAPKVa%Ez9S|;{+%ghd;Wu#q7bM`}bEwXeeN0u+;$i|~I%GS;`{<u#vs0 +KDassX=Iv2)Gxz8cuSTP2bEC6W7?j~eb=D{Z+5Ppi!GzKTc>RivG(q2+TGSxQzeQZACel`%THYvV{cq +eAUmv%IQWTW%ET4@Qx8+5J!+m5b!t$l3NA<u*S?d8Ay)FR<)fi~QY)q%f)?<s$hz4xcxerpRv?bw7)Q +7EhO+pV`<;AP#jK`v}CLZeu@zIMi(%AP}c68wUx*smsP80&(iHahO1yx@;UF5T`C13k2fSW#cG;ICa@ +LMj%dIHjWdBQ<ses1me_X<0OGNb=f#YAWmI2!qp6(Hr;_|2n^!6NMI1pvjhh5Tp}=t=Q#p{c%COPi01 +_YgLr;RU=YuX1P1ZEL|_ol%LE4Tyh30Q&#MFm@w`T05YOub2JsA6S$O(%2QCvB#PbG$K|F5~7{qghz# +yKt2n^zRo4_ERs{{t|Tq7`u=N$rrc&-x|#PcqJK|Jpf7{v2Ffk8YU5E#VsA%Q_W!zI)>PzN?16Bxwv3 +4uX8pAu+Cr*UMI9Y<z)yXRYm<?6`lp^mH`>d5S^iOd3aU)2iBwUJS~jr`p<@^^RlEmFD2thTkYg(Tty +B@rWKX9;D?*;P<?&CH^@VcU%E-8DYYth;8u9ob#8Mn%_vX6W8&KwGXg?UF<coFvKkCBmI+-j*BM_Dk$ ++FiG-AIXgQ~lCf>)h%u8Sjcw=Ti;GI-TKgPn<atx`g8$Ane(kcmX1-P2U5h+NTG;1J3o{$+uGzSyMUZ +d7>`i`cXXj_O>C(bdFSXibcP&!RYL`hmiacs#77j@op<WuHUc}Stu9*c;cg-w-x@$ItvVnb$EHR#2cg +==2OKm8!)O3AGmPPKD*{&e7-ez|#@*K8{?5>%GO_G@pQtw<d3;OO_<T-}1`&k}DJi+c-<aw>&&|NcKb +9c>nkzFqmX%}z1mdr=un@8$r-goYLr3kNvc1Y;1*>)K^BTRJH>~jpg?Sh7pu3%{P^>o)FUD~j=^>dN? +xsh3rcGqmz;%Xb;h#;5v2(NsE2R_n%-VWv6H5)e{c@96aJoR=;(p|HEH;+6=p4fgUPi)-s)W$crQ-~z +Df>II@7L#2ukILb!d~szjfeC{92uu;&Phf`N0Ro2z9wg8qc!)rc;9&xD1dk9{Ah<waiQrKJD+G@bI70 +9^fnx+u5LhF4lE4PRQv|jMo({oL5YICN2Ju`ZFo@?_0)u!i5g5et9DzYR&l4EL^8$fEJijF{i04HDgL +qydFo@@60)u#7Aux#N*Hv>c?~&hA+4+4C@@sVSAmrBx3_|{02u8Z1hz8zWvr~@JydK_Nv-WUz%?=G^W +v3ja*|4~CEmE$rU3nGhvZ|rIUqr)As>(iZM4L^j)^_FN$lo1XZzUO9ZzUO9k0=>i%{tlr_9~T&JjXaP +B#k3eiLp6ubmy9#+KnS|8(VEQ+5Ie2Sgww=OKrV@q_*Bvviqe1E@!7Ob)@}vSK?gG4w<#}rjpujH|(x +i-q#Uc)scAAk*P!-nM&*)-^}Ig)N}W!W-b?bUb~GjsqHqxq_!G;vU{>Dmy7(}NS@b`rBq|ph@^?+Q5( +s(wzc(ZZ9kM|rTM#QWNMray=j+pX!E1HX8M;jGUZL(&`j~Oh^mqeQ}cI+k@^k2RT+F_D&{Newff3>%f +52v@A`;0)m<~~*IhFzjjycg<10JG_f=!^$X9l$++8!g_Yn`vk8J<vM>gNOYxX%tcIo3s-telsW_a&+e +Jv`No2hm;!?*2%hu+OEyj~_SLGT8FDS}@G>tLcFzb~=#`wV}-LN^~Gc#A-X;B5juf~y4P2(A%WAb5ws +62Wx>D+KQnI709qfnx;k6IdhofWQX9hXl3=J_<n>g#0mqLCBvF7=-*Ofk8Ys2n^!+jKCnC&j}3T`GUY +8o-YXu;`xfeAfB%Y4C48Qz#yJ)2@K--j=&(E?+Faz`GLS7p5KRHq^oR7GnMcW0pGWFC%WG~cY(?kwu@ +=4n(6I(lHD~swEEq5VuEscWJoIV*8JTfGSqadMKd)XMea9B5;N3{A_94L&E7BZW_wL{&D3v{*r9q9d4 +pgSnUarozeG;uBKO<<ay6B+L;q-O1?|z;PO(N~J2e^Y`lnRxOML&1u9;ZYk+!b~b{MTAW=EZ*W_r<GG +t>Dx!Hl_f=-cl9+f<;%0vBxoIJV+{3v~ZKq(Vuo&?738#tJ>ALRqZP6Dl-}6?#gAjBs5icE?M1&CDw5 +1Xusp4!^dof(pR3!*3!5YI6tMY`E0_%UvRc+Sr|_ZE?G9e<v<v+@?CQE?gaPo9fig+v><`Ky}($qDL% +~dRLC8a<-H1mW8%{_?pd63F&$G4}|pO`xzlU<9<#^PqSYT(vQafNJu{ve?3?znC{7s7wr7FAF6*zx9! +L2e<q|Kr2mDGeuVy4LV9}tijbby-w@Ih`rioYS^R54dg}frMBvSu-xAV?@OOmtA^bfdeF*<RNFTyK64 +Hn8-wEkM_$Na8`1}VUeSH3tkUl<tCZtj{h8Jgu#_-k*(HLHtAsWN`GDKr|S%zo~Z_4}=A&KHBydy&#g +%@OqqwsbNaTH#SA&$a(F~m`LDTX)-=iU)V;ov*sD4cvp9EGFrh@)`!9dQ&6zax&q>376YIR1_}3g_Pu +N8tcG;wYSeM;wJC@Q9;u1|D$~4#6Xi!YO#fQ8)&VI11<B5l7)5JmM&vghw2O!}5uva8^EX6pqR#j>1X +##8EgXpEwGV0dW-c0^%r$1;kO10f?iZ0T4$)03eRS>Yq3YOMl`htow<hu;?d_!it|b3d?=sD6I8~qp; +8?j>0ORI0{RA;wY@|iKDQ%Cyv6(o;V82dg3Uo>4~Gx2$S74uh<ETcw#54;EA2Ed?$9o+MU=53wL5Ctl +Ej4uw*B8!s>(A3Cj**C#*M!ov_FtcEZYn*a^!CVkfL2h@Ego9<dXS$Rl>b33<d$I3SPM3FqSxJK=b|u +k6H0q?g|i*!l5D5g5+TBLc(mc|>41J&y<shv!iz3uosMjp67#qA{GDM>K|m^N7Z9ZXVGXj?E()!>M^h +V>mRAXbflO5sl%<Jfbn2m`5~*1M`T+a9$qK7>>&$8pCOML}NHCk7x`pNDz(T?FgbVyc$6?hW8?f#_&= +Eb+YhA1aTBzhair^yAZ@tcoBj)3U5IWN8uF+;wZfTKpcgaABdyy<^ypQUV9*p!aEPdQF!5jI0|n&5J% +xv2jVEa=Rh2VmmG+r@P-3%6kcy2j>5YQ#8G&$fjA0pH4sPPl?LJ{yw5-!g_jwKqxQ|DdI&Et5If=R1! +AX_Zo6x#VxQfM&|PziU9hEz*i~7rWC%Nzh&`}PiP!^sl!!gBL5bK?MOqFvB@u66M-uS{wj&X5U@sE!1 +~wuQZ(tV^@dmaa5pQ7s5%C5#9}#b0=MnX7u<eN01AC5$JtHF^*LXGn^=cy{hu3%>0QF}eB~pI|`XMn6 +L_=a6yx>p$8NA(3{TaO4PmHuj>eTo;KXDP><tHw}i~Q7+!CU;qNO*;x7zyw16C>f}ePSfMxlfFQ*Y=5 +#@XkIl5?<IRM%Gf{tRo6%Fg29l5!m^$6hUh#g4R+5t)&QBM?}!SAX4G1rNUWDg|n6lXDt=ZS}L5iR5) +v?aMn`cY^1{3NQJYJ3TGn~&PFPnjZ`=rsc<$@;cTSB*+_-6kqT!c70yN~oQ+gC8>w(MQsHc+!r4lNvy +}>GD;3UGDx9rUI9sW3wo>72rNY@tg|n3kXDb!XRw|sWR5)9yaJEX}bOWVux`9$S-9RavZlDxSH&6<v8 +z_a-*@HQ{Yf9U61Ep=cfzmeJKxvz9VBGKSn$j-aKxvn5ptMVuDDBcEO1pH4(k@-1v`d#L?b0Py8*_<L +EnT8iOP46s(j`i@bcs?eU7}P=mnhZJC3gDk5~WwVMCp|-ReGgMm0symrB}LC>6I>3dZhzD=9h#h)zYO +(wREXcEnTWqOP4Cu(xpnZbg5D;U8+<|mnzlLrAoDQnNlrXrc_IpDb><tO0{&EQY~GkR7;mdRLfw>C_f +;u^J67!x=ab1E>ps$vo8*I*OXrAGNo6#OzD*_Q+lPd@4?n?sFX@KR7#~ADy7m5l~U=3N~v`ARkrS$(k +PwXRoq=uN~0SprO^$Q(&&atX>>!SG`gWu8l6*0qqDDQcGr}~=$z6Rol_d4b4p`$PHBwJDUH!Nr7=3EG +)Cu?#^{{V7@boZqjO4QbWUlE&MA%2d8IKruQW#ImB#42(iojr8l&?{V{~3=jLs{K(RrmYI<GWF=at6j +ywVt*R~n-O4~01DmD1?EQW_n2D8y0lP>7?sQX(CAD8y0lP>7?sQYu}plu8F43UL%X6yj*EluVZ^CDY| +f$#l6=G97p*#L-;onJ!m)rYn@5=?bN1x<cuhu26cWE0mt;3Z-YdLg|^VP<o~-l%DAdrDr<uP>7?2QZ* +fTD8$i1X`8N4+NLX%w&_ZxZMsrvo32#arYn`U>A*uFj+RQ{bfr=_U8xjKS1N_ml}h1srBXOusT59EMi +kCqvZ%ig(EV76psrLRs4JBS>MA9Ix=L;Hbd^##U8NLGS1E<lRZ8J>l~Ooer4&wADTUKjO5t>sQaD|u6 +i!zuh0|3^;dGT!I9;U_PB&5tryD7S(~XqE=|)Q7bR(s3x{*>i-AE~%Zln}WH&P0x8!3g;jg-RaMoQsy +Bc*V<ky1F_NGY6dq!dm!Rtl#ZD}~dImBQ)9O5t>4rEt2jQaIgMDV%Ps6izo*3a1+@h0~3d!s*6J;dEo +AaJsQlINew&oNg=?&RQy*wNyB3sc_a(;jE>?SxbepR(m*IEp^UX>YTOIIcuqN)@l!@tJNM(S4$nVmO5 +xHb<jrYppDc)8>xdfQU`6M4%(<aoUV~-Xd~6oMyjEWR6`r7hBi_SZKN97s6Cvnk(y{DHPKdTqOH_KTd +9e*QWI^ZCfZ6(w3V7@D>czpYND;wL|dtewo(&qr6$@+O|+GoXsa|)KZt0e!BkRzf1vxZl1=?U$)<jwW +K%y-vZ)^^+0+lzW=}s*ny4QrP1FyRCh7-~&7OZjlrriEN*VP7rHuN4Qbzqi?d0@{(no!w^iiKEebgsP +AN7gSM}4Apa{5H6q&`tQIensba{5H=<n)QsSAC-NRi7w*)h9|{^@-9~eWLVLpDKOTr)npsPnF8*Q>C) +{RH>{!RVu4bmCEW<rLy`|sjNO#DyvVG%IZ_4viel1tUgsLt5226>Qkk%`b?>;K2s{I&y>pQGo`ZnOsT +9sQ!1;^l*;NerLy`=sjNOzDyz?w%IY(vvieM^tUgmJtIw3m>NBOX`k_);{ZOf_eyCJdKU6BKA1amA50 +%R5he~DjL#49%p;B4>P^qkbs8m)zR4S_<DwWj_mCEXeN@ev!rLuabR95el%Icj`S-n##t9MFe^-ig*- +YJ#UJEgLEr&Lz&l*;OzQdzxIDyw%&W%W*}tllY=)jOrKdaqPg@0H5xy;51dS1POb5tTKVO6qS!bU#)? +toKTY^<D|F-YX&2dnLqruY_3dl@RN_+G^^(QdzxMDy#QOW%apIS$(clR-Y@C)#plO^|?}6eXdkipDUH +s=SpSuxl&nuu2fc^E0xvfN@exAQdxbjR92rWmDT4;W%Y$pS$&~YR$nNU)fY--^@UPdeW6rVUnrH;7fN +OIg;H64p;T61D3#S0N@ewhQdxbWR90UomDLwYW%Z>}S$(NgR$nTW)t5?T^`%l-eW_GdUn-T=mr7;zrB +YdasZ>^9DwWljN@ew>QdxbeR90UqmDQI@W%ZR(S$(BcR$nQV)mKVo_244?-zNn10s4P039>s$J@`Z)` +A&TZK0YO=kHN<cg8CqQd`3_og^$k(>cjBy1wnlrKJo+gf%y0;gupNQ_?n<T6d&IZ)W_oETY~yve0)bx +AB~Ui3F@Qq@dH79zI^<ipgv)K*h^3!uOIdiRO;5~<MqP<g8F#<aFC!rUOyZnsE^kVhY9NA^}`W@`gr} +Y5JKP|{cx0^K3@O5Kz9TSiRlX-64Mt<B&IL8NK9X_k(j>VBQbr!NMibqV*v|hn)-VdwFkF}84h+6GaU +RTW;hs5%y4j=nBibKF~h-gVupk1#0&@5i5U*I6Vn*nC8jahOH5<%mzc(2Ffon6VPYDC#l$oQkLkY`_7 +kRiMzEPUtHEdDFoV&=4+c&Xw{N4P(&$8MbfPsn(Hfm-jZU;iCt9Nut<gPWqqC^dS=8t(YIGJgI*S^eM +Xk=FR>!N=Sp?=2w+6URoM5d^uvRBns}ro%3D)WaYjuLPm|%Rzv7|5fP)uJiqL{wmL=k;+u%d{*IT%eu +-yEDKqHjKs0n5Q_BKqcFHW7VuaGQv}IoM4^-yHlVqHhj{6VW#Z$BF2hgXKi@&B1db`sQFd5l3_ImWZP +{m`lXb9NZ=1Xb$!gaWn^ii8z{r!9*O*!C~S-AWvksmxIZ~3;>sj!wfc)d9X^hZ=$1;$SleenMHXbvnW +q=7Nt6iQk_Mq&Z1OjQL3{j)mfD4EJ}42r8<jJokgk6qEyE#)mfCvX+;j+6DL?2OR!+Zs=q{1=b6sIOy +^*xb1>66nCTqMFbDaLUNRhvDrPu1Rm^a(s+i&6RWZZCtYU_PTg42|bWFjoVupiZ#S90>iWv@;6*C+>D +`q&DR?Kj4t(f6pTQS4Iw_=8aam6$Se~QNmFsPWL;7~C~!J=Z0f=9(11(S+73NDoyC!FpX!Kh*efK$a` +2CIr647@6CU#FwubQU?CMNVgt(^=$n7CD_oPG^zRS>$vUIh{pbXOY)g<aHK#okd<}k=OC^I*YuXd4M^ +^3FdWzd7WThCz#g>=5>O3onRgljP3|771I}NDyA>^R7_tms+hjuR55+Qs$%+rSH<+rb-=)_V)}wz#q< +Tgis=i671I|SE2b}4R!m>;teC!FS}}bKsc7V2TQNt$onnrHJ;fXae~LK@1{HG@94h80SX9hW@TklnQ0 +Q(CY$|2|_*5L`LMpmBI8~;7byP~7MWxQ7QfE=Av#8WrRK~I>n6m0`;&i{(iB{@FD|MokI?+m<Xr)fHQ +YTue6Rp&VR_c&eI?*aU^8ka3bFk7mSm_+BbPiTJ2P>U}mCnHmbCB;?Nrs~fMhr(6j2MnC7%?1OFk(2m +U^Gsk3r6%E>42dNM)XA&jOdFl7||D9FrqKIU_@VV!I-|_f-!x;1!MY-wCI5@7;zM>F5)O!UBuCm6yS5 +Tx`<I=bumZ5>0*w8(`CkqvF;hs>LLc9)kR?*OGP&yOK&nC>!^T_^}{uS?5Tt~SWyE)`X*081dOPZkiN +k)Li+X|64E!fBcyL^Pe|X^IU#*h7liaJT@q5LHUMji+n|zdFp_OBmTgeWHfUrUw5kojlA<;MM~d123@ +K^@@S~^=z>cCe05^)-0L&<A1Ms4#4Zw<`HUKAz+n|zdFp_OBmTgeWHfUrUw5kojf}%D62a4JN3@B;?@ +Sms+z<#1O0QZU70L&+91Mr@x4ZwP$HUQ^|+n|zdFp_OBwrvnhJ^w%7=gGmB;$~`OGqs|bBHw7MtHO4# +RcSv^RYeXWt}6R^r)p%%HIeU*b=S<nLftj<Ip1cGn9nhF*G&DIL25qB*<CZA<?ODR<Bz&)K2pw{de=n +0i`FEmId82=vPe1mdEh3opIz;)nFFi3YvyyR&F=T{!g8to3~rOQ_I|1T3~rOz&v7>qzBI+ywqG$epBr +w9+Qzp8Q*?g))=dHv1Xl=55xhlUhTv@ihX}3`=nz~Z&?9(<z#PGK0t*E15?CU5kH8AS`vi^<d_dqB!G +{Fa2tFdPLGUqwErL%%FbU%Ml)xaK8w3XNd`4gp&*uaN@q9sG5YLwc2Jw7FU=YvO1P1YZLtqfkw*&_9d +`Dmq&-Vld@%%tw5YO)k#CYD`OCZMc_P!8IF`l>g6NvG=eSkpo0r;jInvta`?N>d!Yqp0fo$c{TZ+ob5 +ZbqPHJhDAhJ+S2>A8c<L=%GHX5!65br#l4oZ2okgpq|U09uZ^?DetcJ1paY>pq{>;o)XlP_tOJ{dg^| +9Nl;JRACD2#)Aq*$1ofo-@gPAxWq&+GP*2z&4-?eW_0tAHJy}16DcL~R^W#2(AW+W<>I3!Teu5xSPYC +L}oKIi7DxAXQ`s+B|ultaGx=S~PklrH*Li&&(2<c;j`jCElK~NvkPp=5-L;C3rK@d`|Mjz7u;$QV4{j +VDY^&$O{@*%bP-K09{Qk`_E`3y#Ptq<alM+mYVMw9B4O3l}WyK6d^Qk_ew&ZSi6QmS())wz`FT*`DVW +jdEKol9Ay{j*pS{RPq)lIaY|bcSS+2xU4o>>07$HJuZg9oL$nCgU*D7(>mjVWjRu&92CD0l#g}w2F+$ +_(6N-(@^tisQDCGn&21gnMh6($$s#=!H?E6k?a@l8vGbN)5JxZ+G(0Z<|+8ud8UbrG_})xri;u*obD_ +mlcC1z&eCgs`bZml-C6ob8+%P>uje0Lv)b!E(|(J+yQVu!ugUE-xxFTLt~<+Ib3E4^w_gbFu4#_vy0g +r6XPN6P$Rk;h>nzCiJR;Z0kn4FwZUvMk*As}`9ID+kg`Tw+IwuO96Gd#+9?bakM{l}c>+C7?{Jzlh`$ +Feeq4TTI`Bg-^vO<p<h0d=+=U1WgtI+vX>ijBoew8}EN<FbJb()nr%}SkSrB1U_&)Q3!ZKck(QfFHk8 +G0(62$fERN-tll$nv$)^sY3$D^2f8)4S62t|IiVG`%ZL?@H6V()6x0y+@kfBTes-ruRtGd!*?-()1o_ +dXF@{N1EOvP4AJW_ej&*ey6T!S}QCyt+52!h!xQeQggp{U?u!^P#VU!gDO(4GDB257#RVo9gNK!uDcc +~S4Ya#k#enhwYyEes8-pRW*q!2LFrd0VJQ0wr3?+fLK#EuD>P)te}x=F`B%s@RD6YUhRUx{!BF)TDj7 +1yQFqPEKicGry0m+XJwN>kVSS74`3J`OCf)Nh#`-qh^K-`fM&0uZ#`;#>^N)=6&AR8G80*`0&o3G48+ +Ok>GuF54o_}GiZ`wWo%GjvKe#O|h$G%~#?y-Mktm&~|GuHOlZwN~ve!pc5;`ckoAb!7R4C40(#vp!w{ +E7t=M*Yc~?&lEVf9G36i2uYGg!n%ggAo5GV-Vs$GuC&>n|sgwesk}6!ux*tXN2^_=<f*WN70}CoFF)Z +@XrJpm$FSjs`@D*;_RRf5oZT=h&Vf_L&VuZ9U{&S>JV{uP=|=KgE~Z<9n>M>?4S-2X9snNI6J6A#Mwa +|BF+wK6L?+d*Mx|(gW3dM7WyqA;_RRf5oZT=h&Vf_L&VuZ9U{&S>JV{uP=|=KgE~Z<9n>M>?4UM*w}* +boRp<ls4MT7`4UrK9y5DmP^)dR*Z}^UVl>S7-w>DgxfadZI6^C~+zM;B-^zseG)kg-_Jo1NO#rJcfdT +D1liTyrwn>1zvN1K9`x4G}_=Dy<u_k7&kztR0ia0>8q!i-|mrr<|SkJ6t4Lu&HiTf+LkGdX>Nu%7;#2 +aXWdC&1Pl{#~B}lUtVw>yu!%wnA7Azgs7)fWLQ(us#*07ncd^S+#xe24Ov|rWY;|*7Is|^dw<@K1@FF +v-b%xIn2Ln;qN^TF|fWT3)cwi<G1~MKVg0Rw$FV>SRcRHQ)*AJqb4g{7l_}P*M#-)o4z|oSRcRXvGau +W@tdAxtdHN;tG$F(fE^{QkKgBg#|VS?y<8=%hI>9B4B~g1auO`8=?TgQm>A5SQ+vYHV0v_kFo@skKEn +F=ZLhx}4B~fYfv`S)(>K(fFiDtRrS^nr!t^TNvjCn^yTDXoa`Y)-ef%aDqOZQ>`ujTF&mqKzD4nbi)} +}E2ceBUo)%!euOkp0-mFPHSOQb=GHz#a~3`<NNM(#1h65IP<+Y&CQ>Cq)y!Uy-b@~thA2lY69&6X&Fz +j8iu53|3qP2uI<$p;!Rz(|{%englRJW_8*+|*m4Ad3hiyN4!)<#taFqH>KLlD!pV+TFuh!g6`!@9w@2 +N#%-2x!Sf}9;x5%7U{5DWN%}4EmAItl(QafTSTT*g>?+uA`*|Hh}^G?l&g$K*p`v!C?n6Yy9JQS<(4m +HZuZP}*UVnd?pkHbRd!-jevyQ^oaI4TnH^tkIgXSY+vlj9<x3T5=gQmmt0FVfD#E`iH+z%2Yqow>gr` ++u+og)cw<<Z`x=E~wZ(4b?w>GV89;Kt*LoWV4yk_<sr=ud_cImFArrdbfDERyE+Q^h^Mh$;zHT_Gz{q +Lavp0EV4SA_MW!Pe`2guzD9<%2f~gc<VtWy1Q-f9u0T!aQJa34<B(-u;C2UHxR=8^U0O-hYWO7@-fW5 +jFzsG-3S=YxC@N!eD>s@<px;OtFG7eFtj+I~QWG#F-qrMHq}qhh7o}dwrMBT_q5P^0TiAgE`hAY8hPP +9HxiBjlRq0j}r(XJp3(T5W>U!gfK~ddx9_s;o+|iS}@6yU!K|dIYjyJbGkKb171J!9f7bAI>JAMC@&l +!tdH{M65TUc2oe2ZAv8I9m@rt#29wYoECY<#0SlqcbLR<zARj+Mm<Q}AVG!fv6h~MHO^#D$z(Qzp;t* +jF;}iVs5Wo|}DO?Dh<a$E<PA(D#@jH2$Fv!xA8zBY@p~*?=XJH{UIr%+du&;jk&V2&=Ky2@OOc(^>^f +AI95T}V~u%ekSKUg6UB60d2VGxPaPY8oZoS`Uz20Gym6I9U285)5=2c0Y~5C)N0yc1%u7Mh%;!3kDDl +cg7gK_;C$Ll|Vz`6a@jyF5?r39FsSg@c4akS@^R1nZZ{1&RYGppy&4LeM}b-_k${BIxAm1;QXk7b$)q +gHEnemVpjBxkQ-+I_Tumvk=3T)&lh~xYAmoNdoLyoP2kRFo@B2{P!S6%QS4kSxS@ZG-|<NN|R;kU15j +gWSQ~-j#HZ4q@;$ej`JH!)J?*PN|P1-gAl+K>dxUzrO7P{Anbk&b;%tJ0(gs(1-3y>ZW9LQD$Q?PrVN +A)k@Fi@?h*(gT%)Fe!<8m?t`G(xyhF1RI9_S8c9Ad$;rc3JAS7HNs(D@<?p%Y^yH8yb==hWS9|(il#E +munA%y1<%@|;><m3@Q7=-5$H3;mMoIIjFBFE_5r<=lt$;l%cs^BE0$z$S}S-S09gQz?v{=lBe&Fi$hf +K8K=C$xfqW0WROC}OaCa<Z|PFo@1m>HuK><ow1<N=Vp2IeAXefy0!#9}>4<FXiMp*AzncoVs_|R5^M6 +jxgvNU)~@LBKPuZYX_5I`R$yYpTmM+`4Qb3Qtu_rZD42R<Q4S;u(fi+Yfso)IeEQK7^rtQh&Zsja(?q +L1q2Re+PuMS2fgPTnoGe(%gGx`7uabzc|%hM*lIa>OLH*TYdODr>TC#t_cnP;ods;SoZmb_0}Je`oGn +n^z_!ZCJ8CxAJh{0-11{{IoUa_CSs3h}oUb0C(F1l+PTuohgp7Mn9EUxWn=3SBf-{vSANcP<EWW2KhE +tU$-_tY&j#Zj`Ppe%xS82MRS`;>KZr-9r3+&$9yhW>P*uFX4Ps@2YTWNmt3WH!_9H214PR{8e8be?!= +kyS*l3_3B^bpONU^A!vT?H6FJXnZ_`JQ9IXbJ=SI;XtShmD=n!_))8&d%u(T0_9r&gl{Qd$6~2dW4b} +Hg`@JXuc1-JEsdY5rOTU)1%i2gZLez)P)V6)8iC(*x@-n$#sDYym_C31e-jkC#Z{sU7pk9)EmM!&*@3 +(w&Bww(^J&L!huZF(-c5Bk!gPO5kEad@C<boa46ICG_C*PRHo@E8Ykdbrp-Gv#KO5u(?$LrL~xOMUpS +a)dX}OKCo@eKX#x&MGi|QZv=+{0nw}>)5e{dXp6B1eTkI=)X?%h2j7-0!J`_GQGQC0_I(%tldWnP)IN +xdWJ}pV%gs16cTI#_WPn$e1hEtw4?-66*oTtfQ8Y1DOr^#UwsNk%p=~bHP!D&y^%hWH!c~7(b4+!f6x +OJMI9nO53@)8(MeVSgSt^&?|nqH;(8l3zzy+&Ococ%PtMsfq3{xn}XP3Z{-Ky5yt;KC75)9<K1heM#I +*C_+x7^vwD3KARyHNDBd1D9ZBky;y0gPPu?0R+y2nl6)i1t&sHZ&4=-XF_d0q|}8|p{D%_3&HGIe(z` +J=MdyoN;Wt=YPv>?T{u2!dY8IcI6!K?a+z-mS$dCH1*b@DKBn~>oFg^8PmF_;q~<F(X~hVKNlhP6!@_ +Y=n@=cMaG=!m0gb+Jq}22w1riRGnm!~p!m(1*hoptKI9a_*b3iy-YJTGxX*qDb)O_V0|49g<c|=$rt~ +{lI6popiKBWaSoFX;d;HtuG=LyFGg7_>{>hLU|>9Y@nK@6Y2Bn&e3`98uRhR@dtgBU)4MHs~J#UaAL3 +|e`1oj{oGJbOkMWa_I&gh3j<en=Rs{hn<Q25I>AIAIXLw?_!WzV_`Rfe^u$uL*+)zNd=f={+m&sb%o= +o|O-$2!t4Zf0!`XG_{v%1BTxAUjBn%G3>oU7%UoJ5D&r6+unDKFxWJ;?>%89V8l_}v`E8qaA?o+x!VN +xG2A{xM8q?DZXI1Au#e&P;j4u4>qOl(aOt)e?hpps6&Icp2HV|^o*@jz$y*l}2!zlb+e;XP?$~+4ApL +G#<=Q|WdTaR{fe^ftZwQ0nouWL#7Z~2$Cu{`2qu7B_xA}%T7%=0u7b!QvjN4wM(197Zz4(MM2-8{O3h +qi=B2vSy#Lah<C}84kpSwjEoQ-ws@e2Yy{E&L{45Re)EP)WE^N$G&B(m=agdDp_OavEie(S>x0>=nap +uoqQ-`;nSK$x$5|BkReid%b$`(Wg4U!hR~jJ)~n1JvDvlh=Vy350aJeee>2Lj?J@kZ)J18--1a+gGW{ +!OYvfMyvueZ;QKaF!Q#_m@2`{+uBD%0hoDP`>ER=VxZ1kBM{Q<#@DeYm?X<j4DI|JGV*4qQ<Px%ZLcr +}+mH@W2kkJF7gq^{G4D1#sKZEJzDywG<n1fe34rIfy?UB381>ff5e8fJ57NX1JiqOA>c+wH+g>MnfaS +Nn&UJx=ynUPU%3+-Et`Qg+*}%}-TG&q*Cfh@LZ1D589}yG5&)a@<lrY#Qwm=p17@w!qUSQ~LZ&0@ghT +hh(Wx^m0H)!kzV{dzdC<w;h_A{;v^q99l@YBPr<T>9I_TrzQ={T5v+b?O<1JiH&6@>{*zwOsVYB2q_P +EcP8p5J_xXEk8@%~y|7ZQ#6=t&`N1g8MgLJ<cG+@I6g3!2X-Bo}fVy{J-rFH0J^TZ~J?`X&=PdUTzx* +;_4E072yBPSI<!t!2q1?Bf5eAH($NLt=hs5Y4|R1eQ=V-5^w;wPSf*)1324HqaN6Mvx5f+gD9S%aR%( +Y*+Gg0+Ix3tidkR~uTy##=qX+2U*a<T)DnTHh@PTZA2@vMjg{c=%@$~W0uJBo1C8t8@NF$p&j$|Q>=- +Q$!Qh)6qc#PDZ+47^U^q}^a*XC5=>3toP=fb2Grxlv9;4+L_=2<JG`ylOxO$%k81MyW$7xCrw&3gpKO +iLHNlGWM1!t#d{Rg(->;(S~0(goaun*wuH1QB@!P#Oc>y}^(&Q1~w!4{m+*1HmH!P#k==zuLaJ5A(8T +X2<^2^IFGv|*qGUvR#<L45)kgInkLhY-Rg;u9EyvnApa7=yEOH0=UoaK2{R24Z-gmPz0Y&R5^j`Vp+b +t@A`Eum-oz)0zdW!TIV3dPMLB=W7ROA_3;$)_H0-Fb8LszAmAHX|nvR(az5yRWA_>z(1T_BDR8mIJ-n +D9r%Z{%Zx#oFVhkW?8DhrQk%d&oL#v|7-Z@-TDE|FIJ-*Y9@vMoYuv1msn=;LHHyqw!8M$HM}Y^|aJE +cC0l0=+-%{PdHJsg`0Ucb!*$wJ}z%`t&ap1r<oUKqd1GeF8g~lGR4Yw}RC<(UVY=!1JU>k0peM=bT=S +@;3!8V+)-KNn1e8a8FG!p>daO(=q5y3Z{-K8c4-*9%1I(+aAXAh|(0pD=;gnB&i4d-i5iGN@m&Ylwgz +&M<35NFUhd`99A7>6@f-N87Vuf3y1AvlNg<z<?bfOR-~NfQXL4recDTn6iK_L63nXdNyy+rT=Uy(LW$ +ti#zml77HCoZtDDx>4{BJCGs_=HX}BB~yZV`1t^J+~6I4K1lN}@DAs9t`fh&Jp6o+q6p^U=LLSmK8l} +@Qv!oC`1$xn!ul9~K1y){XYliB>V?1={CtM!4aVU7&Lhfva0WkLAku&{xV1_*1!wT{1)^|^A!L4oGq| +-z9R@gqpRdr81DwIh3tFmxGx+%`^|Rm%&evJ#M{96>f!1+g4Q{OyFTfexTBoTO7=xd`qwWih!SyrLM} +aZ8b(bFzg1CN`rcmGveqIiPSb_WZd3l{M2-Nz87X(7Ct=uH657gHE4Z<MTZt)+4K&`G32C25TpD;+Zw +GV_rm>!)X4EoFU`;Q5PINd)>806ZMy@WxoZM-K8hP(}~3=DZ24+!g1?elYL7<B*c9-y0o`?t06iZD=V +?jAfuAPjnU7x=EQw75$P)e8K-&u`um2Crm3zd#rS@$GBEpug;Qw+0hr`SGQlpF@}Wjvo}l{O&Yi5axG +WT?q3#eoV;5yBCQc<{jN;u=_otzYDLm!C`^jv;Of9zaRRa|MU+({p<hp*MIoqZ+`WQJztP7k3ZP+lP~ +}Ho85mV;Xl*xpIP|NVfarM{?mv5%)@^c;Xg~N23L#fl~BbJs#!u+OQ>!MRW700B~-nH>X%aeQf@b@Ur +O~$seUQdFQxjWRKJw!ms0&Qs$WL+%Q&!9zl`daQT;NiUq<!IsD2sMZ%FkUQvHThzacY^>NlkN4XJ)Zs +^5_6H>CPGs-L6!IjWzd`Z-Pws-L6!IjWzd`Z=nfr}}xSpQrkHs-LI&dCpy`pQrkHs-LI&<y60%>X%df +a;jfW^~<S#Id?8pznto~)5-tUPyXtE08mQ<1QY-O00;o{RI^ZxCs$bD0RRAA1ONaZ0001RX>c!Jc4cm +4Z*nhfb7yd2V{0#8UukY>bYEXCaCx1RQE$^Q5XayBDNfl-QUwq3gevs`K?Mi_)z&>s2sKV}>AX62<a5 +{c+vC_yDMNxm9+ErX`S0JIFBj05R_g5>_O5&JnswInz&8(QNg55ZAB=U7+!V#f1_$STn&Pul#7#@fN4 +Gu>Si)NNNKW(vV<}{4vgk<6FL!>4qkfRqXud_4XP>X%uim`<v{~I;Emybe4`07z1sFSS;0b0Ub!Wc4{ +0@r+yqYucPlV`%QnhGy6UoZkXiM1Z!CQ3+H^D&5P!YzR&K{%jQ)bijv>l$MGj57afsY|~X|1tO1)tBw +Sc@HuPHsvdXHoPe%x1fTuv;pkaF%7^JIa8m@3C=EnF@q%;b5ghkPe)ID(<gX$i7B|d7}i;yovx7biT1 +BUMT-XI^w`0q2?!o5RJM#oR!B^9+`{ctb}^3;UCy7y1mu$>=x>yL;4T&r1BJe0!)0d_4!{q9Ph=$O{n +2Mr@rz?cO@htLFMP(ig&_^3J!OuPig)?(@seL&)}F53*)~PHqF2vN^8BizmwE{|7!E%yyi4d`IvWBlP +~!Kgpz`SbYuEKI9W?2-Eo`~@?)v+o{YZig{3>8E(h7{6mq7FX#I&%ICyk&Yv0LzKX^X`N1KvUvma1P0 +|XQR000O8^Hj4?Uo0!c6aWAK6aWAK9{>OVaA|NaUv_0~WN&gWZF6UEVPk7AUv_13b7^mGE^v7(OD!tS +%+FJ>RnRchQ7`}^O)daXO9KQH000080P|F{P&+%F)2#sj067Ez03iSX0B~t=FJE?LZe(wAFKu&YaA9L +>FJ*XRWpH$9Z*FrgaCwbW%TB{E5WMFrR^^gPr5}LA1relPC=!KhW#TolaO}#Dmi|3!I}cMpA_vFu%+8 +K?H?3mM!HYhy_M`c1@!+M=^|V{wR6x&SvAAOnp-pUIEI896;7D^|nRLkE)JcU9lAP4<>nepmZg<Via0 +)#;XZ9Qp#&>AJcT9r|Z#jz*DfYtJ8ek*fYyzB^_TUY)%(opdr2wrpc9joO>=Xr3JCBU7$J<m@m9yLhA +<#YqrRs}J!_^POn%LXmx8k08_8;<tu|4xmG*!Pc6|l+veh(#68+~L-a_HTAs+33qrQ2s8Bmb|sGX^x$ +)p=IAf_pqzqzWOYO1@ANW}UG}RhBD&+k!QDX+FJWMJ;B^oPXkgEJg%1#C~HuBwQ+*6yU@f#%0$LFb{{ +km@cE$nHIcuo$*j>TAa7YdXiZtfjntNv*U)Nfc;)->G%8Ep%SZshkQlZ$jIP3J`rD!Fx`LLekY_TLes +m<LVkuMg{DOxtcFF_s^6A$(xN<4f-ICu@JE||jPk|kPcRQQmUH?6pUTM~uhTvue>FK`+ap?`%xQ$beO +F&lO9KQH000080P|F{P;Q=U5A+5A0FoB~02%-Q0B~t=FJE?LZe(wAFKu&YaA9L>FJ*XiE^v9JSbJ~VH +W2^cpW^0XgOoa&>;!3T#Knd_h7MbhV#(H_C=}YJZEdpTic}h>>puJLNQojX*>O7|51YLA{qBy`Bba8h +I9-gOkn`iGoq3+Ea4AXnRK{5<AYQGrTtdoLd?t%^!aL>4j7cuzmH93<!hDo@F_oQ8=km`1jA<vh<+(t +4QJl`Rcj0>&k73a1#B)HBQ3vpeQyIz4nhWIc@JkPpEM53&FDm2|moKuEcX%RrlLJ4iHJNYpro~oS8ql +A6lo8;%BI0*bzLxN#lzBWUB!8LbS^hA;=d8?lBAFNZJ~}*2m=N&tPF|s1UL7>ATds9`(8Y*z63V*1ua +$MX)js5WopZrcDbP9z<R3Z*E3sI!>E8iTb`;Bu&moFZ{xOQYX(D=*N8VFn{n`TzaGFVoMVt!B(kb^e8 +HUTEq9<pu;6Ns*Ab8r!RUsry$O75*_edqRJ(z4H7Z1rLQX^M!G$n^{K2{FV|Nh`fo5<f;QncC{{)-%z +%$&<2PeBxGo_l4OF<go8gIxhMnY_aMqKm7wmree{lBn}#cI=GFC9hd1e>^4BH?pWx_{Wl`Fe&0h!pB% +H;rT``v$R)HK_L*@&tb)Jd4|F>P|GZxL6NGDH%8e_pv4uKlLf4coF88*aY|Duu?M4hkxoZ9GK*B?Z<M +fdkxJhz=bY5f9#X0uxmv~obiiWj7^_0ENy10)B2($iu=?{DQzZB_OVJgQma;S}zXw%NwYVq}NhU=UVe +P%^mNZm27EAZNT?TO)OH8BS$-Gx7>Dd~_p#@7+^coprmc;iQn3XY|<kBm8Mr)R{6~Vs}>q7COSWS2i+ +1$8>@t<-9gzJmfZ-K9~=@Ps!9H}3;zIqNnvlRN!A3g~&*Kt}1NH|+p68yl?@GIL8s8haRGQQ>QwppI; +vd<!+q_UaH?M=CKLthqL!aQfH@v{U}gWIy@E?yNYO7d_xjLP2t;02$vBB71|p=IGkCJ_V|rRhqb0B^$ +QS-u@2UqQ~45+aWY<FpCxV_0V*R!gY}?1b*=O$HBUUOd#IDs@#y!F(Yv&lf!3+Xbx{e}OhTGg}&46?& +>W+Fa+*58>zthOMfsM(OOT$h9g*HR-VlerX7TR8WUQ(}vX(bRCJcsZ@zUC3jrq&)v3FJO0>}O^7Hf+p +XZ=aAaerGl*e?S^~PM=D>zUIRxsqUBP1fDg5lVickH|em6jju9$QqW_#6ZIAKVA+X4Q;G^Pw8pSxZ>U +vliIs0;Xq0{fBN=uv=DiMY|4wvbNv^0Zj0J!Mf8sZJb4TUgKmXhOhE)mU2@*qyqWt%|D6dlv|$+E)xu +ZSKKkUs%xlV-*llPCr0eUJa@;sQ!)Ll3}WlG7gGLOSe@onOHU<RkG8j=j~6lUyA!d5bCDdLZhG_qu#{ +z>RQiFwMSKjUDzI`&FOPZ6PUnZ&GY(nprm09G)KZ@1ea`+WNfCaF)VbTL~VjCxQ3ZJHy!tDesxemc4e +a_S4T&T8h|X#;4PZg+5}4oNw-Ao>fZ@ZF?58o)6rJ_nTDcn7=c#qb-(!qj|USUFBT5H+hIbp#}h}(Q& +$U}0MAZal)PzGQY$DKzk~2D)X&MQ^4Vin$@T0RoSg2mus;~>lF-`|mDeAX#g^3S>Qp@kOo%$;3LI1H| +5=)-L&-GfOjfBs8T8=n6w5h>;o0#dmI_2AOvJ81QI=h!EjumQD&Okl+A<L?33!r@q79I$VpDvFR#!`H +l{KIeW)&C;c=`6KwXVREPVoFjE$BM4oUrS_X+s(y3Ju{1;E_o?`s<8q>e%yGQinkXz(j~0@ZN6g=jX) +mk24V*R<y~&c!li}>!CKS0iZ_?-qG57o@eD;sg5s$qa%Wk$e<3`$)F)hT^$X~t<u+4`3^%9?An@I!`b +O!8s4;MXiB#w56>DQZ%9?ext)Wa6Z}S*ke~-=Pm#uV9{q_>%+_&36|8gRQMF5_>O0GRgpRqIZ4VbEd5 ++kZSOk0c44Y~jHW%Gkuxiw|_CtK#(va5p0^ffR{W>OY8zsV;@>?W?BXcbNKkY_^v)OHa!pjm}VQS~`! +osvu*f@^Y8M%2&owcQjjJ8AG=nP6wYjCRf8Fq7c+^lAd6(1f1mWbGN>{9X7fN}2gZI{$iK`Uw+F9YmQ +>_0FxQhGFtZ&%r@a;Rre(9Em${NUsg3oY$&cUOM5SQ<W7?=KHYw!w8v+8r0G*OZ5QNUtZ%%gx%YaySn +3u#xmGjb8Nfnd7?lq-Njak0CN22v*W6OLVI$KEJ2l#6EoLHvZ1!VKA;3^wgI3^mh6y-TpF=26d;N$)N +TdG5Q}+O9KQH000080P|F{P*2fQ4dxsG01c4<03QGV0B~t=FJE?LZe(wAFKu&YaA9L>FJ@tEY+_+!Yc +6nk<vnY2+eVV#^(!V!<xDCRLsGIWt3q$-8LL))tSnuU%K0FW97>2tfD3?@v{(1vuX|=NZ-AgEpPf5Y* +&=|Rp6;IRo}O2u(P*56)9ElA-IDntrR2jyev`x`n$4$lM&mrpBe+c_WR_je0jkkxY-~)@WJbnePV;C+ +5jIJ4bsuIVID(rCxY-advxiLn%+tjv-`Lpr@Oz&O@J;74O*5z_h~i1|NB0vM3`l<?nh=24+aPd7aUSF +kbDBYcCfu~iG>NZU8|>wnPRKYK<w2Cw6#mV!=D5Yn;g!;Sk;Y`)QLmxk2AyWqMGn8&vqc<@k}*a4@{~ +QfPs8{cAF#hG*DPuUrfi1E&!oBCCeKB|@5$x$^nu)ftUH|!dvs1m3kH9jrb!AUoG)UOG`m%l1W^{G1t +`ULP3lt9ln?Nl(zr=GVS1glQ0hJ7Wf+f1ltpothw+FCIB1_X3Z><M%J&^8kmlK4l;1QPv+zEeEoMYg2 +DHxe8$$0#l#c1Rp%AHNS&^rUbV0drZ^A6h^Rx*<Zj;9RVg3;4vTjHrf6UV;zCL{q43cb`+z}w`!^4M% +w(({XX3(-7Lf#~I6cFt(m}ePD?qUPc!6KTDX)4QPId3{<DM7#p2?|Sz>D@HS^56!wje+IqgJQ}k(;0H +iSyA}l0k9X<fvFkwGaM+{c}`9lJkyc7xLsVAA5Y)?5`4Tkhd&3Gr)NjU=b(RF-uQkr4YN#&teFh|q@! +GGAl8N;`X~>AW=5wI(4E1s(a=Dc34&RePw+zcf<~y-pstCUo3&b%g*xGUPUA7a8DPrvYu6@RO~KL~T6 +@8d%Zp|-poTL#OVWqW5xr}9YDE{*$&(>AYtyFF!G&O9nuZT0s5lyn-x84+99`4=b2wdarYz*b$_zB@u +jNSn$^!jMMwKx{iJ{40XQ5IcPLpmQfM6QVhU1WA(ZA>(`Qy`u=zls~&%v~nZ7e1enw~7C(>8g($lp(( +8w%Ux_&!fV{_`YBXCXHVv~+N?!ig3r^8yzXx`0lhO|Tn-2AIvE;^W_fkAFY?07P~1_u>0@!0qMX1wq# +d56+MGkAnU4^Znn0H}I43-<L1m?tf5^w>LH}e*bVBoW6Z~d~~{ham<jiM+^Z&$!?(-L&I*)_kU%D+0D +V}JGj~5H^;vr8P7L1j*d_EFV8NZ&cn;|kH^8;>DyEGs@DS+m_?3m=;)SpdI7j{=)ur(+XVVmd^X4#<M +{$&fC2koC<Le@zG~(zbad>E<BJ&pU;_}i*>LU6g#%OtVW5Tq1QKC@?GX%Fdon0q9*qb%Q5MDC6|~_4- +q(Vvkncc%TCHJ}QS$Go;;hA+jZqlKNe(?dhBaI_XNzebZJ`Yj?#V>wBuGa5f>2&+*u?+oxJ@=UZ|_(y +%4@_ZiCF|k9>xM6ujY!Ey6SLsKS$Csa&;y3^y-S--O!k9a==Y8N+1#gKLEZRK)986%)*K_r!)vSibn~ +CbUC$(X$IjdhY|w65RHrY&nm7=sGR0JNx-C`QylZc@ADh*u$uKkOOPSuO*AIs1^NOZVfZDa^pR4s$GV +%nD=t==UXcmJLkUOIF(khbAfPP;bn_jA5a5o(d!bkX>d62*5>9hVYexe~X9A&00pxbrpdL_-1P=Hw;m +k#EEZtF+N(yzEgwd3a_q0ZXpYuhbjRK<;6@nMlj4WCjIw=Y?H)y;l%t|qKo#X-2Ks3>2%VtIDZxbZa* +2__&oMBY(r#vq1x5>*kdC}4%LXMU>h$eKu!!}6<U5ysdfaCl5G#W)Yb26Y_S<Vz?O0UDwgBXBxG(3gU +=$)Md#42Om>kt$rF}psUDn4kiN&_^Hm83Qru@X=KeIN~IO7%f-oa_DcdVxc+Oh{pG9;V@pOh8G3X>_Z +#`UyPR!bgR>xd}fb!mAFT9yjCG6}V0q-w8v+>l6e(r=w^Rp&OG{gYXa-!>9&~|6gd8&~l;!&sns;hnV +)Rm}LN7;VTwdIGoasK`8d(h>w|@BK8uE9kljJGQz2ppslM8X+o2S;Fb5t6^N$Ud$HN;_IDg3Ze6vEDu ++oj1zHeomhb7zLc`F4&%&n>7EytpDn`FpN{NX1t2<C|Sx!N+K2RqULt_suX?VAs3;@zlYfgR{6`*ba4 +(0)4R%~w^d6CPDldWAsWAUsYvE?>SUPL&G#6xi2DbRfbBP02mn-jFOP?PcAhT%@SWJ`;d^fx_tGnpn~ +PDt}3P#J@AF=Ya#$nl5whi}Y?wGZ$}8EL)?<0Pw5VjD^nGY}m)6+xPp7l$nvzX?J03q8#ibByw^OLE$ +ZM?}FaoCmk`!D%)nN$>*kl=%~qq`bXAl_&{E=%7Kn(dhshC;<pt1h8dheWP$XMS~Ic8r&qwt*Y=>>`y +i81k1~AlErk4y=75UX-MH&*sBbonI42}iUJ7ZUW9}b7}BclRcap)s&F;2yM@3#fv_99pg*%DZdH;#52 +G~uLJXii;v5tRaEpyn2&?U>SiuGq6Fvd!D7CTZ1*jW)2EH^NPoX+&RB36VnC=0das7GL(r|#*@hC;(e +}VpwDG-aB9+CyRYbu#w9{27h8r?`lGNg)P9+Yt#&)De6wQI{sDyGh&S(ImNM1^AIHHA^Gbw1+`+VhNt +P+Na<bGyIQ>li{2{1V<Cz+kW2WzL!XN1AZ^HacjjLPgA|25DC+2;?$=7H6?)1|ZOXgSM*Tzk_^)@G^+ +Ea+E1!m7)%?;z|)zZ?ynFw!qkvWXU2OdAcT)5=bzBI8aIGh|VE)0yl!4B7`=ZmMk}sN*Ic3J*f~X0OG +9LH7G8K77**YVRu{pCX3=PLku8ZnHbhJn&fzKGdRuYR;vYl?eaQIvo5RQr=R-%N+1G#O1T!+gL4MhF? +N=7eS9CH2NH@QqP;PdVHQ`}i511|Y2B=ESR>;n<#E`s2nXN=ycze;(_}=mteLDtSC#;#rPMf_7r@}kp +bCtSOkw~SBW6Gj@!#lkllhR%zS+IQ_yD_YfOY4+hCuPH@zfl*K_L^_66yFP^fY61ISBkeH$=xmY-tF8 +7?ZwIv~0FiX=tIe12!txhF>E3A9U5jB9b4V_Gqx--GI$5sz)+b)r*?}orOe;yev|jz{Yyd=P2FhW+-9 +3v}Yfnn<Sfrb(#E+0!4qt&=*sY1`^R_4Yqm~a^8D5&!r=G-U#RGJQw~_K5rS*3nrJSh{))kWrqgLfHZ +hhG&XchQWgA2*tBzimW(<l79XUHoT+@_DT?T_X^t*E)8>5c0tGB)VXOfujF};T&?DA{XL?;RF;EOu^1 +<iDCCK-CVi<}YH5*DysMhiD(p+=IJU;{1mJ9&HuNW?pd6Gpur~;Z7X$o-^M44<z@4**DZ01>^;bFTB# +&NtShUy`PXf#C`v_T;G9R)xfknw;$M<;ThH(PBD8NL=|3un~;x0AtGWZWQy$D2O1nOCMF?!#G{@Kzfd +d{0h!SKJms;u!P<7w+csX!-zM??nPS3)0VU5&KSfDs4f4gt<l3C;`d9z-X4R$(1&iVgWd?aZ4$Tc2f+ +)p*e66%&K}om^+#pgq<u>^p>+E1)(tiYO<`&;x+S|5UJl|bK^{I8P!lpx<SyguV~@p7}N#{gE2W@tk> +#*#~MExI&g$JqY0G)+nUe&&l5f)0|myJN5ga|Lo<YFl@2TLvR>lC1=-vr+c*Qz(=lm23|F4FdM+OM+Q +w?*5k9XBk9@rhkMxmcm^6T8xP(_N!z5oj68q^V(zlTbS6qfnzIKSRTGwrz3NB<<OkVqo`zDk1>1>6d@ +SxcY90jT@45sa>HLuERQ^f}wEjXnT#Z50kZPI%ox={yNhzmzJzte=D_FFSTC;-i;b{VI0GauN{B7{LW +@zb`eW|#at&}Q4<X4^Yqugh407c%a4I@^vc6_{3o1ta4bTyrgcTQFL*1W?+YA5O(i3R*q0$`tVqfEGV +J>T5a$apzNW)9Cq~2hKKWdGCQWjaJ-w;7ofIcdp98Kr2WllZ?84R<(ubG%+q>^X^7)Bf-3SqQ^86Qcl +%-q8X@IZ{W(RHNd5nYq0gI*Yu_i5emF6DXPR8@~9-Xnh+-nZMev^D)@bhjx=8Yoe!iz8ZbPYF0$w|Z5 +Y^EwqKFbDy(X$kP1MbY~%=!jjj0>7>xP?7PM-p!z`n?-A@mD<x8=U?_clN&>1#C3%AeVS`bngVeF3#g +l)80rOQ%5q8<d}mXvuBVht%orx0SPz(_p7ehI^Q4EZ}cvEFFvHR+lJjOo;f?El#F7X0KHNC=*{2Hq0> +0;Q4N_qZB|UYCN-K`=}A$mzQeXZwf8!T!+^`Eda8HqGK^7&cBL(1Zsz<;7N3)n*KgYX4*lE#6^EhvVl +Bq|FqF;efsKsL^PUUud3@G#X<RjxjD9h|F<wVev$uCi)Vt&%ypUu;f-Pwi1!)C^Qbtb#aRiefLyR`_H +a2>*(kz=s;@>+<TuCDi$`0Jz?BZO-zy{u|90^U$jiiuAME~OL|#h7ytKct1ejSYc*VTLOk#hpQ&DRWQ +*CW_5*_E9#={QM8Tmx8MN{med3sf5GC-j_h7lV*@EizVIbPVJj`$Q3a4=cBj&hR7M!Ax9&`_3)c1N|y +9UnDhU-&=EA>s1NZ~AX3EcC^G3Nhc$9E2lsCoA?ZP?Q9B@my|HXG9BG*1F$g*+l`TH~9xfud!p0RXY( +tbsMr#CJ;==)H615<{JtbJ1yQn@(kMvHQg{_f<?w{WwsSSxjgW+Tyk)AzNnP>zLioU_?I}ZC|PSU2N2 +1nq;}oO9vL*z<&^YaK}LJ>1dJDfxgL8^A*tf;Y_5le^b7UnTi#65W&GcMua84ucstBG<=`s*gsk2i=b +y<&Z`W`zme{+*X0+^7+4C)2^wlssH#-2r%K5?U-2!R&uI?Hf0FL~$w{jQvaSyqii$(Ss~%pa?I<yy@B +iv3w-MwyOSopU>tp60GI9DK)5nm_AF@^hx`eiiwB?b2zuz?Z@9F$=0aWnct>T~U39goaXQ{Tf3}jiK6 +y(c#d@gI}N<QE2f2iitSt_p0qbTX)P`q;ZLzeCjy%u0tv;p4tfva8c4*a$c-dg3*z<2h_WOs1-&f^(9 +ex_)W8ooy1@%bBX3px82YPXOm$y$i~K$=DyiI=UFjggD(`6I>Fcg1FGL2bN#(`Xx#Y#Rb={n4$KX8*4 +!%@>c9=FU=So~|d&oxh?qU+!Vhf*VP8%fx#8+eLjPJ!^X;doZk)>}pDSW{B0<T2ouBqNEh-S=&XsOsr +=mV%?Qu?Y(%MT(@h;_4S)|1iSrL6znT0*zNw~1pB;>U{BW(?DM~(VE27Pn-bs2ky;{~JeBt}$U3MZYq +thj<Mqhe^^<j2MOLr83DyXBjQWqN>hISO%acV823g1JD$$d5!3J3;>nhPdzJwATbyrp*ldL5^Y8h32) +jH~}t6Dc-LbZ<i>#A1tB~<HZdtKG~=ND0}9o9`wqI(vC)a@wc9IC#O{4?o2L08pV-c?l(e%gK$=w(k5 +S{lN8t_!brlu;tQ{u2nVzpC)I>j|&Fj_|hq!h4|$Z)Z*6?L2|-c2*VM^LoPDSx0!!{la^x3$ONotVDR +bPawSARfYGep73_p5#B4m@OBNKS9{o1=JZ}Xh1Ywrs{DE{Yx=zx>qxNo(l5eSrE@FxB=}dF;QOYg+PT +d3A1O1dgKNg^*2-b}I<tG<pePR>DaxHXqFgexSZ8YQ8x-YXsVLp$oNr4nzrtD)7unIHMfSDz@2iQda= +ibw73qIxxz17*eG$<RRplJS*H)l!Kvec&Dqgd801<Q4+{VdWO!#(*J&@`T_ZVgkolRm;OIw6aPWqPG+ +br5D_)-qH*sCFmn>$FvLu_$hMlR>H7z*P%-N)2vfaCi)9pR~RW}Mc6Fu{MkgesK|tdb@GTZtlQ@n!UU +PcGgcy)TZ_-%&J@SrmsrAMUA?S%dzjbHJ3QTuu&;m?+I998Y;gxKWhn(`?3`6L}hmY~L21s$vIHwS!Q +&BbjKs+Pz4)#t4lQB)J&_#ZEix5h$FVhpuUvP#r!1i%hp?QKGcn*|Wt#y$1liRY=Q_MKJx6iB?DxGp* +fVGATU7H)2Nwi&K310Rh~2epQ@OxgyE!-+bzXRZDW^@fP$UJS&b#g{44_QhyEgL2k1(6sJC<N5!P*Ry +ai<P{|f|in`|t@T$<hw!=V~X6h{v7%kv{)ycNW+4!&j_O@_PqlNi7t#azUg{07}17E1|EFmGD^J2mW0 +-EALSF!QYPX}Yh_Qs`<cwz4?ni#Y&xziE_LG{>|0(DJEj-L~}N_j-om|fXq3p3s3o?Hi(L?5yaa}aUU +IP_-lOY=YA<)_sez}EQXx-ROn_1*8|w5{n{jmw;hWto<nf)TIdrbHN`C-f>Vv9*%zx0i`2i_32Zya@c +?VL63pv$4o0!EQqtrhcf<%Q41RCG;PhzVor`Bhe~({M&_lu3nr!Whbb;dA{(<ahJ191J>aOdwAYFS!; +!IXeSj1zC{m>iyRZ@qJ-|7E<zUfdr*3o0=y`LIE<4O@NU<@TjVA4qV;KqfuWvPRmUKTQ(U-J$tQZT*I +RFOcQdo5V=9Jc`OZZ`XaCU@9he>Ga)6Btnxb@lf5O4s^C=n`x+5r0!nqWgNRgS$Pcdl1n90U!CgSuBp +!7t;_!K3ALrWnVC9Lc=n%jb^jxcQ6B`R&4^(0b%471Aw>^n`w#&>+mL)(#Ga%@Ra?2Pjscb19Oj#0tN +b*s_b<7&?7bXs}V%Q(*_(}{lYClh6V-_k4#uPK5EI9}Z)KGo7V$s|q!neHN3r5&E{TqIRuY=^BnP{Wq +cNRIhghAD@5a@2$$kjj!7#mM6>Nyjorp_S=WrW!2LYss1qllU|GFc^NMJUb=C_L!PHk799;88>+CMbb +wt=Y=OV;4{oEGGb(Sazo-cCyV0iDGgXYOGOGEpyY1|W)+Lrrw(||OGXHWc<feB!Nzuld(wr53y=?mc2 +@Y$@wPaY#S<UW5R<*|1k>X}Sui~r=5=DJ9y4;qJpYxGqSVX)TO`y2=}lNdC6*8EN+hMf!spijBk|$@v +BL-yZ%0!aro~}Qzu0h(EK0%@*|2D+2osKu7bA#<;ZczU5tB!fey7XCXJte^&3W6=7?pzsx4TN#p3ICT +xmm?nfPDgF&k;)^a<%d=gxp0iZXAjOaeOE_#DlXin(mMznns`DA+t>Fm>AEVCX%T!Mb?n9v}RPk#wjI +`uBb=z+ceC15}rjYlb3RC5gs_c3)3;DNHDA<wLc!Sgh1@%I2)XoSDvxl1Dcpw_DY@vXtJ1!3^(Zm9{$ +S{^`RKddb&t)3Q2Nmbe7mAbCEO`x%X&E5gwH{f=ukn5`*UdVtJxjB1qO6phJlYJ$Y6>iR)dG3wMBXAg +U}j|9sBXj=hngt1ODSCouyW+Q8+-p+&}(N;<ZERpj{;$CHaJN?P8+(p0ooX5Q7alFD4awX%{Py(jP9U +y#d>$K>M8>BsNBGZU4<uUqW!5i$7Kha!*b2y;AN(?_Iy6SUab(kzc^XLOUU(8}AUyA<n{ZqPQmqUr4C +rAgbINKD6021aFe%$5nBMA8?XO$$_V383<~2VKFjz*yW`kfN6us1LIk<Gf;Oz_mBL+^J>tr6)^c(PRp +Bc2dsBQX-p9ac{#d$)ke_e`MM?jfo=vZ0Q7oo&BQ7+FUl7t|h=Ia91RL6FdsQK|zjY4J-gEF$MhEhP= +VVivdo+=L7GjI}{}Abq4BiuJuO$pvS=d#)qTNg64o_Rj`k!*;8d!_b4lcf=*2a6q{Hsti{NC<c?ttSe +D&Je1=2`zATL>Hn$Wc`Pn}8s@mDiP*r@CiWl>IluF>nc^YqeLWbDQJ|KeOVdFpUM_m^k6B+;L3L1w;D +S4fhQvzl6Z8zNcg(XG$l_bh9r1|M&d8<%BAocrQkKn5b5Fblm_R=_Lu;o7g4AEBizOPrdR!zgInvf4! +(SRLtUXLy03y&;RbGQ3s+`VSUy>NefC6^~BP?N^wnryy4c*FTTTE=Hr<8*6nt$BTL!@2D(;nwB%33xu +`JRdLTx$E+6AC+FY_K0)dU&?tI_fI5+e{d<B)RRKDOd9Ut@s%n0Czr@}1tl067~LPnLuQ}8bY(){l^_ +bav;M_p^|i+FZvDa`b`*PFitH5-ibMQ(C;G2b7>{2=q{ox+CkytK1h#Hg>CgF0y#6&gk7JKT5*#l}eD +g|?+_P*>-M4Qg;@PIBVG2Z&AJliiIzbSJGa3YLZCu7|8xBUiVs6f}@>s4S4i~0GM9k?CgIb_r!z;c(v +sG__=1Yl@hxMi?E2Wl(cV9wkm0vd087G@eg2lJlo=OgHwbWy^W$}eHh>hy}@sTweT+_QvxS!oG^KP{f +jX9zNA0o?NxF19Gc?`3V0`)U2zOTF0^ZQGl@(8siPXgc9G4U#2H51seJpNo(hm*1hFE<$y-wuFT&1wL +bCQZWYOjrlcfMmaA$Cb<1KTD$c@s3CH*?Q$!#mZ+Hvgeh^Jcoj+kiDox<~bx&h3sV|GT)hzDr~#u*eW +Cc<pw5V{+DfX=CM<=j>p#`BJSO?TFNY>c3k_)kGanHiuI|riu&!qzi&!&GHSwL)d)uG5scMFPoGeC)0 +skvRsIouYU@)HTcr002HBUxmdrRXCUDV`Z3OdgJ}TtUwm(?TADVPJ7_=R>f<$YM55s4TYWe;5(tyg^A +R>20c-zVfo?ZH6)a;u9Tqn-29pl$0QGe*nJRb6o(yA}-{E)IUY$(;1wz{wFp-$x2aq)5%_)Vp>*Yka_ +p4nq|rY}iHxHnjzn3g=a(}tcUOa@KOJgVRT<fo_0cF&hhWea@HQo3aiTukh@GnsFJ@^8T+U{T=PW6aq +bVWu&y45jT5+9!=NZ}`m!z}lYi#O!O>zeVP8!w?%XbJkfFW)_sP4%C!GVuYg#6ysN)U^G8e0P`gf_E{ +A6rBGZ^H4~&`E&Rg;MG^Sj>%UyKs3gJF7ZJN#P|n3(5>hYWfCcx8dY*d}E7dCS2jL=DP}%gL%gRMD@M +Mk9urRq{e4X&UG;FUEu9t@Cb;9$~u)Iz<ULJ<m3BRkt?y{AOmkrDgYcC<_0c&-jU50np!OM=xnTYM!x +(wMX7ul(Wtj@wnVKddmw4}OnA+lDl!6ekR)xG|@P51s)7xQhmS{}R}Lt1T3;pnhkfqD(}e3)}|WTJP? +e4l-u%bIAi#Js$3T3^V!UsA}&UslK`%Y=M{-zr`%V?DBqMXc6dx{_WV{<%Fq4*Ht6ZSuK=BR^I_X<&U +@J<!u2Kf90?ciL2Kl?L^eyD^XI?AxlN?PfQ&m#{Cb)ON()d5@!4ZMUjYJ*};v`_)(<gIVb2fsNUJ8dl +fV^U#@jwwhC$ZT2^3l6&M|VPqBa`KBx$X{ch-YG;+kTXl8#`KoQW>Qd~B)tmAlic6bPeL=(gKFPV*a? +6fOh0|hpuGl7<;bux6ck=Do`Zr2^9BCs4SvB8e>#G_!i&-^y)cgnA$~U9=O)}OtZ>rCYt8H~`+fPTw? +F}x>v5KS*Xy)(B#lzNTl8HmCUK1$5<;T-^zXTsI&f(9&<>}ec@j34O`tZ9wh~rq*+7mzCD3%B+8{IE+ +L4RxGe*jQR0|XQR000O8^Hj4?E<V2EhXDWp=mG!$A^-pYaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0VPbD +}bYEXCaCvo7!H(20488X&tgiM}I>W#PBqU&W4@fJ7G>8jAQKogL7HJ$M&Px4zlC%T4&_g1>`q|GfzJu +>G1(?Vnq<f6ofT00xz!9Py(Sytgf_@3WQwcsfJ*4Y-OY7hV`ao=(J2>^n4zwLh+UN7*EvJVwVgaAOJU +o3pKkW@|!925UwUYvmjspq%HPxHg!@!F(C<r5pCKLK*^1OgjQ<UgYDWJu%7toi$CJL%8?qH-B%ECHuo +~$H-9V82Fl+wl|<_GxMK>Avxgv6v`ZFd7gTo&!u8j7Ck@MW93hIEvfeU0FfMAyLXZVe6WR!`Si3ivDQ ++vOyMZF2j!zLLGRO{FUTd0>wag$xN{C~kdQlK=}F2ScV5)j53@apC>pa3z`JrBB8l-0Jk9YS2_uWy<N +;zbWW#una!3)n<gV#A%Z9++?%YWqAg+;^`983zqKt{Fyfv-p5dQJ#i`g*N&W#S0)Ydp9Rb7l}lE3Z7% +E~oQ|*GzDmbCxDPGd!#~;0A5cpJ1QY-O00;o{RI^ZJ8xcel0RR9p0ssIZ0001RX>c!Jc4cm4Z*nhiVP +k7yXK8L{FJE72ZfSI1UoLQYO^{7%!!Qhn@A(y?y=)M|*nNk6^e`y9bnG&QaTBEx*jA9`LjV2TB#rBfc +pu5HKDO{ZP=uZwLXKUs4ji=@B6g5MhXOhvD2k83{UlyT+vc#J%WC*RiNvAW!gKRfgALtO_ICKV)iiKG +oZ$ZRefM?PEe*rOgjr|rJb~cIk(A|<{dyK?*^dqtp+mLgVpH|P9*pUeCP8C>{K%qUkC9zcG_$UuqcdF +xt6>xhnm>eAuY=AGjWPDfNsGfn1^H#1bYL;2UUbXjMd&nWLFn@=MJ^{RASUmvTnbQ9cb88>MV#jYUcq +Bk<^C>P!wdXQ`OW%yQ{TX9U(n=O<my?_ZLLC<EecroDClna4F9TsP)h>@6aWAK2mtd`vrs{!<yuJs00 +43X001BW003}la4%nWWo~3|axZXUV{2h&X>MmPUt@1=aA9;VaCvo8QES^U5PsLMIFgrSc&4N;BalIth +OMj%W$6YX1fkmJL`;@kNls_R{`*dnlQkpLi=@-tci-K88p7jVI;f;VpuKE`0woL74ohfti5C1G!K1Am +m?~aw8d1=8pWHI|j@C(|*$^iARR%(r(e1<P_UMzt3Nae*@8*l;YSAau(PoYD37Z&LY>boM*pBcjW1%p +0qtGLi=!H}+XO%TIa9*{(wa7Whx-r&+cydOy9(lTFP|AZ0#4>2C)Sd!#;R8|DN4U<hgqCyPHB#@6SYO +r;Yd-(9n1AM9zb%({%a0UPT`*4ph6FEmwU~l7#P)!e0j-F8j(VfJ3~psX+#Xvhingvn#@NGp0<%CTKc +rrAsVlR&+QMuG6MDY>|MN8qjZ)$Vz6%VVMPy1L(@4X4s(lyALq{MZx@TjC%HierC*d&J$c?cQD|nH9& +ui*_p@egzaLV9KbQ~v;VJH-*Fbef-sLX9&;pUYg&-3jV-o6iQh*5*VAntREg61nAKtfCsbCTthH9w0O +Ce>PeZlxvO6e^>H@Moih7GcWMs4aq&1;`RbkheEbQ=`bgZ0ow~u}(>%-i$_2ct92Kl38l!h4wPy60Gn ++rb-l)T6%{n_2}3NN-GK<e$qem6WVzv$J4*<lRIrJM%S=H?>X1_!uhCBE(0xU(oFa!Ja(TX-VfloE)6 +0~yq`ug1O;xQ7Q_8)B*$fu{+5nZM=9$mA!Dx`Lbm+K@l;p_1CK%S!gf4b1{sXT8T|S^W`6)sO9KQH00 +0080P|F{Q0iU$*Pa0Y0Okh(03-ka0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFb98cbV{~<LWpgfYdF_<RY +Qr!PK=1yFA-TlhgwkW6g)S)sLM{ot3dJ7VDvIPv<3RqtV`sr}L%KMZLUoZPkDf*vKlfpoD-WsC2;3*7 +)Sy+2#$y7dNzei12!w9!!KU@#p^!0mvt3vOujst8Cg{WM=q3Vbk~-{h@qCCG!2+?KoK2r5^TlMpp{eJ +bwX|b%1`Z4B6<N1sUTPi0c3o&Bgak<{?MFfC>>7kfODY`-0cu@XM<7?;>XK0G#t|fHqpHLrD4a6H3rt +K^qCpUA={-zMs*IxTa$DfQuHG=Fa2x=)1XJFDb8$ipJnD2mU$s6E$B$tU!tfqEx#Js$oRNXvf!hljuw +455D;Q_lhE>Z3RU*5UVH2ro4~)R_MY?m`{jn<g%39sVzew%zgo)Q@;(KQ%7t(l=Cgws_hzKg)NQk<UL +Y&-->3#;opX87B%(~ZN>B^I9%eo(<jWn2D_y!xWIcAd72Ahhs;q4gq>hK76r*efy=gxtz>E7@U$=9yV +72Inh|JD25FY5~KePVuFzDv?IWNWL$(w(&{3_bu*O9KQH000080P|F{P`A7eOW^_l0I3B403ZMW0B~t +=FJE?LZe(wAFK}UFYhh<;Zf7rFba`-TZf7oVd2LipYa1~Tz3W#D&LJ(>Ynnh03q6$3q@gr~kREcf$E& +edWLH}BVR!$1XQYi2r!mG@tJybi-h0w)HoJBnEMe?MF#XU`Pc|C6gAg&A2I4r#%2*h%dBz<tDy7!_IE +-spKy2wvB>`IO#$W<O=Q=nLq(EH8zaiJI3*H)fr&C9BIJBl|)!^OUXs&6TC)g(2MB^CB#8Flng%x&;3 +ex#J9BT@n8?xlF>&E$Ohl5L<h7HMB&PURK5q#q5df};sl$OC_%Ntt^EyKY=nF!d#0LWjkZsCUaFKWk3 +t&7m&UY?AyyU5#aPrfDOzN6xK%+4~q?*SMzCT|0{6yI<(1!qrIJCB=AwBph%SD*nsM%LFQ-|&O2^Xh( +#Ewj8>PJb>dcx+Rc^AJYV)3iZWyg{3R>F+>I%-x+xF?b5BWThS*>*JpRy<>Uv+w&|fu!`<b%zE)Y>o* +~6s5Sfo!Zmh*7Nc@Qu}bzCo=3_3w%+w3ix~7?KS|1>alM!tGS^KGidKx_sb>*$e@ko-PyIqhGL%VR!+ +HcGdTHZ%LJqG^URq6kSoKFyq{Ix4`4XgwIqVYp900c2G{hK|bEc0`2(Cl}Rm0dWF&Y|<q2a7$)}F9wp +(T!NCXPi&?tS~_xXeY;>5wcYNj-Hai7e8x*X>JKGbzcc_?@k&l>+``K?gHbtCE)L^*pXljr#p`|FpXL +`Qz%>>fz7b-R<2?K``47w(7ifY;cNHRXocBZEI*_974TZ?o4dcregD!Lr&mQLbEg>Bnr#Ri!Wc*Y&KK +s|3>hw2(Q$~JOIwvCfxN{b96b%e3A<7DSnw*nWVuG8LvF5WTl9q%PeQp^Yf7FK7G!ojH7gN1I%HQqFh +kg*>nDbHYfa~SvBF66E<CD$Vuz_ak?3pWZ<k!_n6c~Vz={261bh^3$5U2+7?2R<kcMZ*d_X0PlTzSij +RJHk{hFxsee#Q0|XQR000O8^Hj4??1>cCg9`uv9VGw&AOHXWaA|NaUv_0~WN&gWaA9L>VP|P>XD@AGa +%*LBb1raswHj-4+cxsMegz_bFgaE@PVPGGXrjz0uG)I)*V&HedKwJ_OOVBeB3OX5qjP+}{dVypKv7OE +?dgL=0{g;Zu`g(kT(2@omRZgS{4Q#mlRTTVLb3&^iv<&;S}{^Fv6h4{)yue~bND&YU;}c)gv@x++as@ +&!vUeiLV>-z`q9E9<ccvhcyfF+IlGz|hJ_jvoL8DQNFZ3rWma*q0eVX=$egdsoK=i0SVgm3CcUNLYm% +nRx~c_BQ<AMqE-FHACC}@MrTTq97TJA<f(=M1vZ4ZnVqT%3J%hnZCMd9S@6tY%Ijw;C+P=$;>}kGbRw +n5^D;8WN<));t^y1EnZ~?Du@@dY>O7T_imrT}qB?m-SAjaKQMNv5YGAR~cLH1uv@N;p>1t|Mx!RvBBe +&XVRip7BZqvjP`Tq$Z_LFy!ft%N<MlAI8-M+*K2H7iR}R5h(EsFpCTHYJl50$w~~r@vkNmLB~wIr=rd +e1CR!eD<?}lO>yH%M9$of?nB?0XZ)2X`U_I2yDl)gVYekD+Rq<(;<inc5n}{1U`yKD9O0k49F49b9$S +Dl77tQpyHEE!uPq_3z`qebzS1*`$E|OQaU#VKt>LEI)!zs?U@b8E$8{H*XyMz%z~wj$W-C=%^FUr_{c +<mpa<W>aam>sTO6StMJ9Q%H8m;jGr@~BE2=ZPW_CU#1h5oLCS?sUOraq2oJvUo?$Hg+Yc>&ri+HH<`+ +fC0F5rYINU~O-<N>yQ$>CTJNG)-9<cin%0uJ304>~6olMC|Q;SY(UV_9~r?W-8;BL)grylGXjbqV%LV +1SZ)Bml=AY;M7sEcU_Z>QZfJRy`v_ONq}2LJF8~v4&;dGF<<nVGRaW5%viT1|*l+f*D_@sCe73Ez}ub +u!!IO&gPY24nl%=%8IN?(@3&>InWC=)A-p#^JPO4f!)UB<y)XqFgJ@hiPp_XqxL+)V3~$)7ePf0K-`R +A;3W$jiW<7HPY^urw@~cAc|3fI9$&o>Px0G+g5Hu=nn#){-J~fz;RdAXzzGn0yuk!Bu#$hX|A9HpBm; +F-#~2lGOTZj(=iP?ffOX<Qj&NtZE%_E^q3&Xj2PpBcW3b-`RrdFN9X7nq%m2?xZpN3#<98<$u(3$Nok +ac2Dpeg>2qG%5_hU8x86j+7Ov_ER0+0~HhiuV8I|vAA{ACS}^*KI*<%~+!Irkji8gdly6`gYs&A}OTN +Yg<OU{j0ek8`=TBrX#@ggXJA^yT0F{#`&QX$W<K*y+T{@jRGY<MUuUwyGOxH!Oq=KCktW0~@UBvV!m^ +NzU%*eAAF%pDIBc@(@mXac_KbJieM-fw4Vm7iyI?Bu<qk`UQ#_l5htM%$BBxWZNv-uvT3@tQ~8^cI&~ +%?1r#(z8U?=9n1uDtP;qv%37nGu5TBVKq3jbOf_sAozZP_$Ev8B9zx!N-!XdHo5|(X@%dSLbb8^R^U- +Jo8}wN}+NZbf>5Y4O;hz4}z&S85e&BIBzWjA^nVusDpPz!kxSACf1D_iBFD(!}pI(ULaWg)7j}FUEdZ +YfnA|H(H_xIxf>C4JQk8at$J3l{B>j9aeoU!6_(f4J!#06U~`kDCb9Mtjk<P^YE)*gA72c%KkL4$f3` +-oo>y26Ck34L-gzMPzCp`(7BU@9e;lu_Kf^rqr)%JQ51^8(jn>Waw8F}^;>1^CPPY?fmfI`I{W1EQJ5 +0pT}qh)?gpD`_I5?0}4u3s`$)(-yC$it6=LHZ$i;%vp+64};i&l~<&HqzRNRNUAzu8kT5SGE5;Uo6S@ +Rb*~B&$`q(43t7=(&Meii$n%1+3Axiwk+N9Twi%YdhLGmLa>=%67zn#YohGC@r;qf{04i!BtI@S^iDq +k|YAw2~QH9VHvx)&pl4NGf9a}0*Ro&x~2t^H25r%nrqX5e|%2l0J>FUa_8f~t(N3QsqRoNO6?FU9y^q +xWX50Ld7OL&rJ9~qfWQIr{ZSY`7S_96fRC}Eobf;B-VhS<Z33EfTb0RSVbFu8%BeM$I3p>PtYmUNy!h +cp7&KhOf|jE`AqwS+AQCYu(7?Gq5mH6|b}I94a%VTlTF1>?2EJc}2uOxPp5uCR7UthGdLBRkZF!o>~% +n<hCc%xp|XBl0Sk+@hcyy|4RNQ`<JdPJ=<G(d#hlK)i-jRul}&<fu)|8s1M7ELU6g8m-zaq#>}>fDK7 +c!anIIzw@k!6q^PqJPkfV)Q8jGLc@``Z;ny-s<fiEG~@_P*GZFIZ>?q)?>?g%0(%9vt0bFbC&Sopym! +6=pCMLqh)?SL!+-`e!Ey(vp7p@r0HkG><dq#A1;fk?kAh+LhZ%km3>OyqZ7_W2hJ#Vy_|&)=?78UPiS +4S)tixhZbb?wUwH{uoHMO0T!Bh@Jc^>pZ3ZxR7M%&m~0=>HCQPj6P$4h_f6pxuX5=?dEwi-_j)e^kh? +yW_h$(%!u2KI!DFb4-U0kSk3t}?Jtj<{K(^RA74%)wBEGO4-%9(Pshb~Rpt6VddR$m1at<LHu9Rj%B| +<7;?ITzQVlw^r30GqWDET$CnifVR3XVYfr64y?X*Qj9#%*qQ)n2HRPY*Gn0w=1kiT8Z*){$(n<$W^G@ +@Z_1$Bk=B4TVt9(z@lVlolFhn&pQ7yn#XC2n-GK^sMDN2^Uy0y3sC75Y7vJrU(#MWnF@2!sKmj3Uys$ +L>4Ytgq+t#d0W(Fiwa(LYCFt<bBHJw5<cIXOQeW~QY=ubIF-CJ~CQZ`!qGfBht_Us5vjnLDVuVx7?OI +9qRT{;R?<cFHCix~Lv{TL|9x_%!dB&HB-z1AXT2&UGsyN?P$*w$SeS$N38f(209VYJOO@5F0U?-oroq +J7Ptm_U%4!)DZ|U*qROzcHr9+@`8F8xX9^W^L^oFvz2DdVBR+IxE?97M?a*Y$BTH5oVSqRaZG?VeqV9 +Gs%$O#e!sH$+x20MkW>@RRDoc(-WX!a2?5-{?5T?<5O0+r@7!y&QT}|3iV@FpvT35#I(wCcF%I_-PHU +GAPjDc=AIrb&x4VIfpk!pQ;N2UU~%Ap%q^c@c*hk*)Lyh&W9VwESSu=Nh0Vwf9E^Uu+vImNkMBSSc+- +Pv`Uliw2>n4{UNAUjYM+odnXlOVBO)#Eet~=B)|+ypoHEoLnkwY?NE*e-Zfm?}G*=PMZC|KX4SAh>kE +KW9Q4@7R9<pksg?st3+`Rt&16k(uE@^z&y~+~0EM<E&wx8uiuM8E?oXd{3D%Qx`l+;WYmGER4@%o4TF +R;Kn56>JP9e8J_ci2T`uoI_g<Donrob3%l-l-dg-rQCbZ%Ep`K1c*R;B8OYgEvFn@TOnvf$NcO=w>bL +E@cSc(E#^Q!j5z|r(Ipf=ew9)Qh06D#3a-^BuRDCDV`2r&wN5bmv%_}Ca#8ha+##LxBSwjnW-Q<t~YE +>7~Gl#WdeTmRg{VT7`?h0F}j_Us4>$!G<>~Kq|1l!avyKdTLFp*fwyybR*r*v*P+hL2Sl+!IB-<pcT} +40ocdOXvMGou*jbYEIT;fDdq92&V_ujT=zKN2C^quNfBrVH)dUDM{ny+r8j+RW{OiSzTSS}a8ME;s(g ++Qti?1ui!syh>gq2<Q`x8T-P_q+BljmG&dC~nN8l#2&cY@9IP29QzuV&L@LhrDStX$tnnT}Tu_%Esth +9#Mnmr!x1ZeZ{d8~+a>@TwXT6~Y@Gme?pYf7Mwq{O67;%Ys{M2Yd}cEq)%3{-*_i%xfWV+JwSV@Hvw* +@zvy>4XmFUz>(-o82m)PB?ZRlupZt)JE_YB?!KSa_qGgns~QMwcF;vQ?)?`~O9KQH000080P|F{P(zn +cbT<b805KB)03`qb0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rYWpQ<Ba%F90Zgg`laCwziTa()~6n^)w5Z; +H{v#Dpxlo=*vS=_8!GR+MqTPT^}(I!gP#j%Yf?*-cb&L_!n<Rn1JOKhEUzH@Z$J|nZcRFHL=F@pb9MK +hA6OO^|^B2~U(oX9&yB;#8_inV?TOS;70z_4}5d&Wgt<jxuSI=JW%ny)n5>*@85Cm>VC^x>f2i$>F^R ++#HEUKG+`!vfCALZq_bPrzFjoGgoNnK8-8ib<MgB5>Bc*peh!SF++PNl3aa3oZ%06-8D_mYDYrS*7=> +GOR;Np5_t)`BExFomxUjoNsn-oH+)%Ov@m-XZfn&LHSft+%DgcmdsRArNO*J`Km(-o^H~dW;6CE-xRz +<CXi#%<C2wH=YJ#r%6Kv6!-B)5KNlRBV=YRv4vE=@J$6X1*xsf&`vR~*ijX0eRFDB7XCyEFpvPh&eGI +n6JrhC2vn;*cNh>g>WO1yYYtICUd@3z1!w-`WN$<y~_b!QVMx*}dZOyl({C8wU!xzTyqBx0unZzA3)U +=vWlx&%<Q;T=NHgx$k-JN&HsmCdkh~oN$0bO<5lGDwWc5!Q@&pnh8{ItTh{ex5h$601n2-45*X_l^H_ +D7X+wq?2W-qWmN5$6T>yBfoFUHu>CNM6m3v}yRs16;N)DwPkFP<Ik{MU^R@wJM~7Ori<-=HlC+0dt&i +F!?bY-3-a4j=E=ZDxhMSrU?>XDxC8=)q)kWObXv|2Cw6=_b!@2Y~Z<b*AGNhmYfOU`A*y-F51MwB#fh +xA$bRK7RhgudgI|RG?Y%8GL44)-gq#s<zBU^VQs_@?PF(hGwRK5!dYL->6^RHlfd<z{&h5(_22YW!i= +s#Y&`Udc>5ypECe48+Hu(c5UxwcYe3GeLi5_XeAqP#hY`f~1kcUsmcg#*msuRPNRD$8_i>`D)8p>^H? +lZ)ea}VNK;R}GDC=iX2|mXFOp`%>s(fPLTGkjJpBqxGa0*th3HEu@6Fdt|U4IvHXh#R)RKNh|eH2gOo +&;(4^5sQiX;Vf)!qq{7<mw<v1Mt5dqdR|6Fa5WpaUAu+Y2-IRgXnG8`_KR#)an<*HF)EZa`u6lzmc}O +hI<%}K3E~uMPwtLbf(4NcgV*g&8NDQE|JF=R;!N`BT8Prp&8m7yq9qLkf^o<2PQk==_KkwbK`u^tE*^ +_uZ=?-^tq2a+XVjrD-cZT0TJqn<YjbwyP`yN2%5d@5*ajRV6vc7SU#(5IT$!z3m^ArI;-nD|4a4!#RA +%_mVH8*MfH3rGyNW#EW)889j-%dW*B&4jvMckAb&7jiS|NshJgjM8U@n`ehz12Wn9yMY9fw~xX$evwD +)B=x=tFQmV>QIGYq<(+XAY<Pw?p;a-GD{PdEKI8lqc(SND~p@>P}V9pLUWXMYILHk`GF0ODBT`F=OS9 +%ZcuB7Y{aX>mqZM9?+Xs)}nup2`#h?N2K8$|MT%0AfK>Nf_NQo;~4^F`%VFRE(UxxOizB73f95)RyNy +&KD|Y>(Oe@)Z+FdTgv@BotRz2o}+=Ii95<B#k$g(v*vEFSt|R4+E*k}N>s}`wY8{*jkjiR&}i_o*-cG +*3`k5<!A^~RQsmHjOIO*`b8Mhn)*A8}te(dEF|HoY$ZUK)?vftOmG2}I*a+?zR$LBuZt-9ufSn}ADw_ +lMAytR%+h5gS=GR}VP}~&{Di$Up@{Y<Ya;;x;1{8QfE2A5r3aOXsL^&bBTHQj^ySz37ZhByuUJ%vcz1 +iWf$j<=BDqU0tre5T(PF*mEZ&b#Z&0gu-`&YkS8NaO98tb}Buq5#W%hnzHx{2{+oe)M1wlvlyY8CRy^ +Y6*1z|Om)O8&HGRX<><f%FfVctTSn&GdGDu&FDLumcS$Q%>!NEiUzYW^$IPm65=a?q3&Q@y~9T{Pp7V +vp^*iJt0-!;=s;13$kK~Hfa9O$+wFRp0{Fi1mHXEx8_xOJJ6B2R2uYSL&W~9&akYsudCg+N^lOT-4{T +xd+=(RwoYK}#R7rvL#6YQxavdC?H*YSejB;U4fY<xCtqEjHt#>9;?`%nKkMe<wvA;O)aUr<^p0&-8El +>AOv3rT8p6kMQxK;S4k!kt9i-z+ebI%GN*ABqT`KKj(Y~LKx(Q#+uupkxIo*F^Zq=DSH@#BL8)lT%&6 +5iC>E!vl9IE*gI+-v0Hb~Qm)vUI@;51-EJP<OCr@le`QY)+9v@&h7)n!mRb(1;OP;@r|OGD9v14`yip +)B_7>WXu4FC4pMEWaF;jf7{)5~~Wn$PlJQ6DRDNfm%I1fzM91@+=VF_x)o9ja&Xj2Tb$Y%%_k}mA7T* +53PLKN%%+AZ3X2xbK8)_Jz>Tv(YDyDV@r&XeJjpn#dFMD<4%p>+X=u~`M)w?2l$;`aJp;z-|vm7Jq=6 +#22e`_1QY-O00;o{RI^aD)SbGg8UO%NdH?_;0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLQ8ZV`*k-WpZ +;aaCz-L?{nKmuHXGvF!Iera%4Uy@4h_0$hkC4d!E-zGEJ_Xj^oqO)LLRqkvcAAMUB(H{Q=k?#4eYz6s +Ku>SIxAJ$XzUe#R6C?7TS;A%rY5WX1R#q?_`<eQJ$rukYW-oi;1YBdM2V;RC5`Xm-OZ7B1z%TH>%k%` +c70bD~rAT=uvz$jFMtP&Axd3rD+pKuZ5t8-<&>s{^Ip>Jzzo4s<NyVY`~xri&AEFS*-!yWm!dOIbY<W +7STl1NtVla@3JcA(Rh5hte2G-kE3k9D62Y3E@YW6YcW>ehtVXv&JeL-w5YP8h7LtqBcgk@M{52_@5(Z +l=0OG|I}a+cr$&y)h*DCUab*qAr{j9P5ONr;vU)b21FC7BNNIY&OK4+y{OyNVKa8LK_4%{^8-M%v7cW +j<e68DED^8krnz6&^8!=7Nwf(wCDhb$RmjOt}QM3>ACewLx92F(74}k7P@S!1GMEdjsKi_1s9@=kTW- +0sj_X0<?Ur&KE$we-_CopBrla~u*bdonuo+Wwi_Ik5i@ULH0<xiq`E%d;HJ^J$sNu6lQqmjbpEX<hmJ +%#OJhdx7`KGo4+_;R7Bfu82k*_nff>NJclKt9g*_V#G1qtoI#$+OApg-El@OjP~vl6)ziS5;XJj%kEm +uSb8M!VIg%ku<HNRRYVfge5nOmJ-H^<g8rg6Og-0T!dxx>iMha&woCOEhsba7l{<jsICC^LB`{!Up)I +8JQzmh#g8Jb2Llok6xib^n-(RAHp2W1wuMzxS4mm}gjqSE=M!-W%MBin$9*aCOHB=a43z#LIy^zH*f) +k&{Cq25r52JFJG8+yUI{6RIzcJ1OW)D}8t6)BWMfiL7L;bng>Zme3!|GF7+H<D#tuSTkU2}_>^3?<nQ +Wvpi4aP3jq^`BYy)|_;wS#4v4hzJf~ydcdYTbc6wzC7#U>&t8it~RSj_}Nj{x}sv@_X&Rq4@SfvEujS +S2FyFR&pylU0b{I9b?yE7BHK2@0fMTjF5&N&qTS$jxG9l;)YzE1Ssk=zt*(%@|RF)URehJs}P%tXzRH +zgUwPHY>@{93qI}97|Ex+JuD287essQH696WiQG?1nB{F|H~7zLGaQN^hZ`0O2FvPhn&I@Vjdz5pbfn +V+bo!03iP3}0%*#Vs+xk@DriXbyfh|28!B+}jNs|V(gp4n4A)Sl4E9!(8S{ST8PfA0y`8OtOn8%A;hY +v0B~;tU0ZCq?!kX;FJd!2+1uv^C^0jWWnq}$C0z-MYg=>z?WH_wHM{PmJrv*BT=>0Z^)G@2TDe5^cwR +a%FJ$V12;TyV4XCxKmP%zb&6<KYS8=^Mq_3kEQ&T^V3bvgrN$l8r7F%|D%$tG1g>*HVp+YrPKmlw5f2 +E$L4WKy*Km)@!Gq#Q^0-yeOr-;2Sh0UR}e_S9$@5)Swj5b8T)(6I5eDwm6X&oHq!h|zmq^asQ4#@Z<k +wH-9fB5%^40L9JMFp_Aie#azhzamLfv8egvc(k!MKq7C)W*kk<F1`|gY4OVwk@rXUst*m{5f}D);B<w +FZX*lSBH51U;78;z^=yf<*{sOeM7_r_=l%B&0fG0AJ`7G=EXHG6LgO*~t4QWx#%Tf+@kGObvt~yx(x3 +nsynooxf6xe;1ASNLO@qg7{SJ_K@wZ?iU;|pnIw?}or|v^%yEt&yVO_1=2l%0Gc6}Reqi#?T2kzvHcO +=37Vs69Lw7)3pQ`}(B!9x-g+e+kGT?7bl5b;O|L-iTX^~6X~sJ?Q}-^C^TgY&m@{$3a7r=qrI&P>3f! +#)w~{hf2;K<fwNRJQ<b0`#N?7COkQQF<z}Qi(CFcTde&yL(nH&Kt%v3($#$CcT9WBRMTam5Q-8HO8-1 +-$Imo-VSlW2@&{Kmrdri2_p2pNQ43AP3*M|WYCzV|G=kDKerydw+(S-bQk5@h|Jm1c^7ofxsL??uoL) +QcTmn)Et~y|ZgxUm1A*Y0&g??0zC(9+(}Ht!9jDIjX9z+w#z*gSJVEc?^RTXVtAoPNNk?zIE-`pxd~) +TC#eB7RP75ODt_PQyzAMBLd4UQf&wdhWmjy#7W|85@-tr@lkPws6Qex{_axECR1ii$nPM0+Wb^iI!-l +O=ahx-cVGoOqe^_rzw7z`$3LctglPv5ZF3b1e`SlCN07Z|$5V1~mff9u15DJBm!s7Xl*NyBk~z<#U1C +Mo<OQlm7h(q&dNV0k&sQniJJ;cUPfx9NNxx%$sxLYzsqAZX*KxBaGf(6D`#<Wg`RJxy!aufgVUQqq1} +*^W#CIxu$=&OySpwbN#>`0laU6!_8^GG}T&TP8C$-|k|d`X1-B2Vf1rZ)v-4A+Ix$Phe?}^o*J36x;S +R;Th|9wZa{Bk2UBWyCUAw4Q4~5HZgCirTE|o2&nQocw`_A#FJV?co>3foCJpSur#MoHY9-p31cP2Iw~ +(Y!!RmAJJX>elAgqjz^YjfO^Cx&Uc|L=W7C8Bz@1^Xlw2k60vkpL2Un{>+uz)ePQm;ytFG0mj_hFFuY +?YCf)ylfiOMhlj!grqO@T_|J}_0%MmtmLF$aEEz=#wVIRJ(AH4VU`sUxnE0t&~x7zbRMJ9J6E)suM7q +z4deSq{H_fR$>VJwc9>#X=O5wqw>%`8=b&gwjJwaNQXId>S>6b_aC5C<2gFgu++<>TGX@y{1`F!0R^i +kkes`nk9>CsJn^lVk&%Ilq(gd0};3uW}!{gN)zzEHO>6cRmiHb9+#U~SafPx4$V3Qwh%vvXG%`#J2vG +kAmN)t%Z0mS$)K$=kj^Ox^h_iZf?^l&2CG$D#!zt5pLUm*-s-=lb%3Qh6seq&#-Rv>CT%d1qJ0=sfvK +x_ptb+x)nj8$PWq$K&Arjh<I&9t{Qu^J?OWf<1E-J1=EOnv>>tDbeJcm&2N+9(1ud)`Cs8jae0$BRZ4 +v;ky{(Y@+1LAV@;1P+`Ee=nM7~_&G#jB=Y2CmisS}*uf8#`~W*~=hk)){GV4=^m!?euHf?m#(>Ix%%$ +^ja7!b_qwFD0!sa9qJ7BGNTc(x5F0Y(?SaPDp4c6k8JXQs#+<mDTr=hem9qfPrwv8aZrc%7*>bq~nB( +7+szW{Di9a517eb^ni=R0}u&#`lsFyn|}BF+b>?eejeT6m(#Cby!`h0v!}104?<z>X3)_HjBt<6y?PC +&diUrttdMc*)nj^<3n|CwPPQAIP=jeD&^~mudF;S&di$OA%MW+j%wv8);Dn!C9%q-Z&9>g@(7Bg)T2V +~NV7Pf>uPIbv5@MVt5O&SD2JtXl9W#VTZRb98?k5>M4AKSt6hB&O@UoKe8F0I|BW|8(eg+I5?}%Z0ZF +~kKPd=87pM!xP&%e*XxsBNE5o#4oV^-Oh236&!UKR|ACgtdLV^O=aj|O|15(^-XV<#xPB_I_FvuSYgs +!A5Jf2qA$Bm$o-#AFwaZX7unwfB^&GfG&cI^hBD;br&yE4k6_G-=ie`?T)Y&!Zd91B34)rsq37ul|$J +Zte~4RwtOzQm>=NaMNy$JRI;$giMnKddlcLDgPXN-~g~mNzLCSsmWy29+yt2G8SuHE&+s`(QX>2C(qk +kjD3|&O71q!B=|>azlI4LI)BYL@!&sU6T2-4?RCJ#2j?vTO4DdA65Q9Qtxl%%!Yuieyqd`rwz<iaZ7C +XH7vNZe*Of2Pp-1L{XTGNV5|>+Ts`^hJk8r{e%1g{fPz+LuU4f}+0pMP?`J92r1|Bt`_PzFgeOGrF_G +vr(Oa)7MmMfJmL%9>si}s5M1ZNl~+Mw*x>TX<bwv@zv0ZWpsRF^n{I80!=E47cx%QOiIqIIlQgxKsSC +YT6f_IwoAyTm;tFkVvbRsd3igZ8L#qM@rOD87TMp=*+1l@45B-h>mO(gqsT*S)P~{Q5~?(BreC!~Z#d +aBuL04=NTVOLQ?G)fD=?jnzK~2h>_`F+<S(N0AQSboQZf4##if^ES2wGr76ANpGt3Cdn5w_#*1$1_0u +J*O^$ggCDm+BvRVk8U(o&rl*wkMuMQ@q2|~PvRq-)$9^|}_Dwa=j}$I#8UUGqoc#bQQERa!2A@1ZPe4 +|$F|b1t-?<wGV_8mBY6?g?<-Dj+BgUiw$PEFTCs#r}E_GBkB*NkFPD3&v<Wky5-9BM^3m4x$I7<$HGG +eGe*(U=8x8Je8@pBV=`Zj)hKuXXuPp*qPd4~olzEv(hPG_kE{)`gPi~-Ru8m#R)LMGId89K?PS#4s(0 +ca-jD8&>{+{1e1XIH629fl-;)vu;m9yruR{qIfGEqXxaALD2+K}i%?E&myM$NzjLJrsa>`{LfPx_4hd +Pr<oUsWFYAB}YS9{3Mdg3pzmn`B<Un8D2SEe#4}UjsKm}@g8(vn^ViK6A4Gfwq1w<R+u^^G+64$?`8H +b0F9O<rHdP#B!dh4o^tE?@+N1FRtk*{NTn)3uhw{nV6;Du7efxv3fy2Mj4Xj%R%8y=TZ5aF#eL&p!rY +1Y52xi1<?-p1$FCiz{+Xi6jRoZ~<KImXTVqSGlj<U?tE5`H0q(zag_7D~u!b4Cglsm&X;|xLjjv));P +kN^Zi=$&BnNj0U7Cxmu-Cj!M&!(nM!0)Vcv?v&Rg~iA(WCegeq%sD>7C%?;RybJpf~<JQHR4ZxsUpcs +&KEaD!XORswDGeLO|%MWQ}L%z`<)FWAYx=u38xg5fuUq3~o$Iom>JeTc(`0(7-Wg=J#5=H#>idR$#vz +9Z{9JQt)`pkXkfmfn!fM`jkRJZnMQJ?Mc5jCN&D7F@}fs7+rF3ct};Q?D15<*HwlT7Gy8(#Xpu=;hw+ +enXKC<^7evlT!Teh%}_lA6<?mrFD6O!?igK$I(iq&I;m=j+oOIDsq78xe%yTtl=lXM@Clz?KXL&Mh>F +&>Te@0waCUt7@SN#9#-^u}33DnC871|#N=_05`OBDvp`vU)^By4g4tgC4yH0))YM(*By_$&&q4pze?@ +;1&_WYp1&YEWDGm0&h%=dbA8COc>o>5|6G082jjk{)hVxkOmiGk@_5`eQ_*myrWRSSypQ_4#p7+)oNM +JXpUxYKhE%S@n}Pf@&BUgTLi@NjsI!l&-VVoEk1eqW%oTkHG>K&lpWoUWE>MYr@5x*-nWSZ1DrH^J~Z +o=ev&Aqw!tz5S^UOz_1Xq=y!TxyTb(DzFe9ol`*cTQM)M)!lwDS6Pm%gKc{!ot#r9w!8(|9z2%`A3?S +UZvzwDsr7kLSA3QSgBIbKMk$I;($!9d1R$A%h>2o~Q6Fh#!bh|;**27b;AJ@qcJ<99d7)4%>*s+A&V- +loNNi9fh>6FF7JJT)5&wQ8JA-qd9k0;TF3F-&ctvItAyuU7CjpQweY91(0IR7&td>I_JjE|>Ehdu*Ad +3hL%@=PH;i)~RYw7$3|6!PR&johAn)AWHup^F{?bOc7Lg%Ug>=c)14eEoLtl%lko~(+LWfgwcJ|b<vp +ZcOQDTT^O(;*&5(b){YmaCzl;lWX2FSUk*D#>LT9%GwTs1F4>fiZP%$0oMd!ofN75+2xqJ6pt$N`Tnr +h*aaMk~Gz+Gq=HA=bSsBeuw;s9SHF9BLece1Il+xnD|JnPwtBKtr--!Ilj{t&C?>z{ReZzKC~x>n89m +2o>f_0ky>^(0_rxtS%mhLb`v-^2z3XUnMkh?vJ_&It^lird{I{sS~k$062_>+XlH^eA#`PdOg^2e@&o +~BzTzY`k?cu{8dkgmCnj1J=yu|za$rL%Db&kMfq!myU*U~SZq`vjB$iw{ZS;mPuqNIy<W$JS!J1C7r8 +V)^m$REg<0F``slC?R@_*RDt2u`-b3r@cvQSs&U7Y$Np2pGR|BfH(oMi^jUNVp1bqss3Behx8$<5}~5 +xp9;*h`*!JFS~*ap&!^Z!JQ4{{kAC6*)ld&V|)|+j(EJHKC^_k9k_w<l~hzop=L-vK4elqeINmxnaQC +Qg0g{0R0Dzw7XNT0~?NSw9hk<4Y=4>W|ZrF7ghU*-f|{Xv*!1rx=wxrs;iXsmb#0<2=&@Uc`;B*jh!@ +V%u!xPF%A{hUXRqf4eASCZ_;1Q>t9cSJumb*lFM*?jOU!G`RQPmz0Tyij2^0jEfm`o>8#M_d3>D=)rp +pqc18ER8p;(K?6%jxiNX)6i(Pa+gGI4}-E_XA)$L)!E`IY?9<v`HiSgcV)u$<;G9d`uJiPP$Z{L)tov +sa<iFZ0)<lGw)wXM<S+-5@!%wWOBv6z7PVycguLUvodm7tF8xQwpG`lc+eFb@T9Dw?Qqb7rA}`flK7P +5FMLUS;OoTDAvf_C{6H-0wO;L&6xvwXVgqeIItn?lm+Q`Z<4^G|eJ9!+7+N&d`Q*)HbB!yP-PzI`@Mi +c;ceB<I1R@z0`ID)&&bX(hX;d24YOf4;2{~p;7_M3vo%OB;b>@Zp(3mVQ9pccxNp5rnoYG8gA%+QMj} +n3#+7X&vf(zWp&%N*J>h@9+ZYJ`b3PEPiv9oR*=}_NHbAwlm>gql;f{eKw)pJ!kZlj&3%1Z-tRv-HVF +U&{p?RYo0{(ibX}v+D!hPYQqOF~&`QW<Uei71rmfoqHH$gEGvcF0>cw1iOcgJOBvZ#rl?Pzc7^>k#xW +wQE;#E{uKuh*nrg=NssQc+Ftj$Pzn$>H=D;_t^#U;3XRW_Z~KDR6jh7C7}eX2-T=(XY&!c-HXA*(OM; +i0`Pz8`%p)M0`j<}aOl&eDTvh@|t#(D7q)()bRR2BrS>2Sb7|&`e}leJnV|GILbGiIH1V08h>^*5152 +I|3FTpLb$OkEjoOX*+3DP77&vUKp!3XKD<Aj9T;`!ff=8dgsvr$l|;H(J%@@K8)Hp2KcxUrbppnXrO_ +6o5P=xbe3dA|Db_1z)20ZVSov$e;?$vs9SXbjj9V&`cnq`)71N8&DCid7#MP&FTjz!ibR5*w!N&vH(> +=8K+vc7s*VI08ty(~T|Es!7fR7q5)eiy_%CZ^n_CEcA8igyw1Wc6RhnXb>e>OSKbHKUHQ=x}Am_=nb* +lEMXhAn!K!mFAKzAFmN;cVXxP^AuWlbdB;|4oP85W7!*eCv#YnIobP(Y^!R<3<a6fyR;7_dccF$Fq?M +b=!B>RSjOTUm@j_3x2$*nDSCg-2+;6Rl2a3~}d@>T;8tO!)=LwN6C0MIM+WSmzIgK=nl4Dd5h)swg9k +%xt?VnXD2X(a%F?8)j40lJKg!FkpDyrB%7Hb(r}dT*1*%V1&v0hfXQSPhPQcs55~i9-vOt09+X~k}`0 +H`!ppSr2`Y>_V!YO>J~U>6uSh@A9F`+ry_%<o}e=s3Loa6byol5-FB<}*C;D*@IkvtX!-JGeZz|eN+x +SvGD`(|P;=;hTWyjVI_`RH194fmaoKD@V+R!4JNH{K7=_UO1cS9)c`D=E{OUkEwW0S+T~|_RnZgkUor +Zy%J>ruJI<r%lUK<=1d8sgkBX(c5RZtUsW$W^j*H-Pjzr_)}yt~b!43+r&MOJ333ZnE1qB>UTlUGFjc +i`8(Zhpa5;Ui25<uG+v65KG{2GaZ*%9;H|ld}+G&s+5=GgHIO9r@GM!}LShO`$1Wj6NJAjppS<yWCB9 +l!pcrDNWW^RW7IIf(aA7PaGdT)s+nKN{cN9)wr&<pc!w0zDEikF1eUP&M-IR+lU}2NPC-FLAol+m8~b +pigmeh(!)*<)SMADbKD{Q?tbqj%J&MDyRNgQ&LUNXI`&%vJVx9)HRCngoX&GR_)&maz)!0f8kI~z>ns +5v^d<LU!`|KRuE^@<azLN6^lAqlTNPpDXM4EIGSx4;E1=q=^_ILc4X)7NvU0I5d8&fWx79ekU(s*nq; +v$qwU1N2^uDf8s9Q2{xLoaT?ZA+AmM-(8(zP)oJbQGGcW`To*Awy5g?F6B?Gs(}xRSaAgYy#tO~JlEG +1XtHrtSBE#9zghDWw6JvW>1Hx>!efSzf6IJo3}hB=nna`C8q4!5`hww5ea^pyY)DS>5Ok22NFeW3^WO +GYpkT>Krs@wyYn}#ZhxoB1n#1vx2n;Yy9O09FQHqK2)hi52KYm(ZAro6oUGx#NSJC<wt$!r<qPh8b)% +FMzeB7A_7RPOc7oHVcJ|ko8ifkPG|C0j#K>@4|iJiZ?{Xp_#RCWI7DkKa<WiGT}pqxls`o0o!&iB?-K +65wioPhy7faU`smRuaq6&qsZOGyAvhZ}Dw_oKB<72HZ7u>grm4kpsuq*vt7I)*17xcVGOq;o8rc-ZKh +4}^9%GaM8|ms|SKIQK%O-=x%IZ3Hrtut_I=fb9v+}qdy1Q}ud=tRH1j?9)41}rlw9Tl0=-oT&UFI<R& +Zd_iPt~N1%~d6Zz48(JhB@k2n^a*LjB}G1)V73@POVSW#it~Xp1$}pO6FxTbutsEYZF0e``rOg)5Nen +;cthOEe+}jKGtg@Tx1&Mwa-`BAf(+)-+)8UZU}TR*<82OPQBW1D5Q8mm=ceOiJH~AuBc-cdDdDb^v}F +Oha%zIo2E6{sUT$Ek&33G03unDmUg&Cb*J-%*7@-k`a{iPsHXPzuv#Kvj;h1Os}(=ItTD8u5qK7qifA +~Xj?JuEAhXvNt-E=b=F=*v&HYWkad#2q78nE&D*N-5D^SETo9L#GQE1hMD~B@bd7(S6l=r40qUM8EE- +QF$MuVg}UTNd!I%G|qZoLpFy)6JP$t#ge)=J=TFO6%2-x|{e$AZ<VL!@t2#(QJ=WDSUnl3q#SM)>Kh* +}bcjn4#SMPE(dAsMuAM+LdP2+*~!p%;U6mzslCEUg~rq-q+o4x$Fp+tu_}dHycL$m?DZkgy8KdGw9y` +15ir?1QY-O00;o{RI^aqv=#e#8UO&8TmS$a0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLYsNb1ras?L2F +9+c=Wn{VT9^&4!wlX+0b}aYfm69DCwg$IiyiJkIChP$VUBOpzQuVrx_R@7vt~2!N#g$jn{URh`Nui)5 +qGX!H|kaFbmwqJqt$IAriYsJxiPksl^S7_ce{!km?hkd<M+ELb|Di-XMb;om6->$4xjyol0dW0Q@XL7 +#a^Kwxh!-bxsUU4$XsJUux)I=eU$9VT=yPt%g)1`6^pON*#X^A+Hmr8)D{Wfq5J$bzu+qPTE2HfDLcW +Uf1_$|?_Cmqp7g%}eG@i!`pv(B;<~8{&Qt6=hXoQ~ci8DD&0+27?db;XrXTb(S!!C<*hGM0oV`B@laZ +e&$|$IzB%6`RHOJyz|4XWG4i0l;>%_&)6o*a&Nx$_F0kwy`RIJ&<iZ^Z-cJe=-7l^-CYf?X`pw=4*+) +NVd)mtY!=;xh26WRwm}#ZB7rkb=kq9;%geNozp~gX0ohVs=b`*nlzHWs_0_7-e)?%Li)w7QUY-E*LNM +BK%T)%~ay;*U`S6Q-`0nWNpYF#`XJ;p8KlGXJ70B;d$HVpfA?zk@n;zijZRD5z`sz4O{~ab5p?2%!T> +B03=}qIXaR;PG-8ls*P*>+!2_oyo>dr;@dle?WhU2ozbd;YGXu&Ugd_q60%0-$8@rSvTD6XQU<kR-v^ +VMU*htK+~2KWI4?;eni4V-CE!ik)6l#WxnXS;6VEkXW)nv=83qmLgx9>KSJ@$UTNrF(Ypp5*Hbbz@~j +s<n^5tUgZ34<U$p<U9PiuK@ha>dQs|j7{o0QJy9WGOF+YR^R&#&~JRj4q#@(eVWHBki9+%AP&eKkK8v +Wm##)KkO@Kv`gd1E{|?!!2^+ERzh~nSfcvpm6ztNQ+v)VT&@X%YocFF<#A#W8_Ja;tE^sT%vmES14#T +rtZyM2msSnomhR~xKG>wv|bX~g$;~6npHU;A~jrz3`_4ez@m&38;Q0S}2wqCQdGzn`sMCs_%0D0P#6Q +{Q@bG-&U^a^nBz2><j2!Q0z8j?W&k>zO?=H;p$q}C~ovui9wJ`AIN0^n7iv<I=S6QKATkweRMNaYB>5 +p!(;wfPQzuV*_2kCS&{72<`sr)e730ASP-@J~?@B}M6hcH4xak20y@(dal!%M<ij%MdsiY&6NVjW$G< +qb7L5DXj1G3~2PNyakDj1cr-saE2&Kc<rWY*V8$+@QQ`t+1e=pEX}cDGuv*-PhZV?zcEccqg$BOhkEU +pc<am8E&8(@MCp}Jqd+GB!jEsF;MEsw@|FFA(GNEYzP>i7nQ-wF4<}K;`+&|jNa(%12;CCQTv>~iZgZ +&P+6!KR>~a4A&;^>$uoOl^8*@SCtWfq0A)$d&WN}p5)|SPaVDO=f35FpW776ZH8b`1ViXgyZADu7~PI +m7ibWO|JCURJg7X&sM{`Cgh?eP(aS(p)jkQdlqvew0T#=Qwww`m@@z-VxqXccEw;*$sMvl{?`25q+YH +UEWH;o7thmSxfZH=d6uf?^A!Rj-Vu5sYocZliJ`q6CPI_gI-SF9yTS$~*)ph<lzPanG1nFhSr}n#3!| +z%DEhCvv|jddFT|aQ_p=02zmgEr!EhvmpciTiA!ityt1R!>^qz&1??XCy%D=0z3w}Ny59*j*xGn0niK +4X-~oBUQ~qa5_m^(v1#T&ML~JyK!TS*UJ>49U~D195TnLUDzumE%U^P(#@ZACfNrWZ25@?=IPuqV(lL +nUVXgbw%WaMXK_<ko&bh{Ur3t1`kB4FO02#vd?XwqGA&*x$cBiAGo}4xg4OtB$Aft>FDBknn&I!V4HE +;0ikWd1KJi^G9J^QYBhL|dp@4ghOgEuFrD{Sel*c1~gKh1OCEKDL2(#<fUO7bZ|PR9^-q3s2UwE4evC +P>;o>2e9!0jn8%;2A-gG3c^->duz9Bl`pW9lKrzx(~?>4<+5tJpOI=X@u9^iuV>Zc?n4yavO6=!54v% +6;+0LMS*5x?1-rS=mQ(S*nz3Qyf-f>LzCVbHALVTJ0nvM#h6jU8ibRkQQnL3d;95x+2cMN)l3l4HZlX +5AR+G)P=gtosA5`kMWHo<D_m&m1u=>cKzAuk5L#vlOI9n7iZtOPM!GPr7BXLBl$bzjg0$37U+s^sd%} +%^EMuIyT4Fyw{H*+92mT2zqD^!qR8vi@4=eZW(VI^{SezFeCqxzCm}h=kfq|IdrB{{^)~>*}S%9HTOD +~oH!l`YtpQ0p4ZwnTrVUav5(MK|g9`qVA(M9Orpb<t^2uZ<p2qKOwc@#tZ#<79<1J{CVSf)W0hXpDlO +58LA2}&uQbOh|8EVE*NdwUK;t)>oO+J;oh+s>kFJ1UAQEVjqv7voL(4Np<@wuXD-(eB>v%TYaK=n~oH +22QpLER@WS1qoqkG_Jy6Z0%CFKDNP002JNyG#4zV#tLfhqe;~(lH?Z}Jawhbc56z1I=Ou3e)#46!RhJ +wp)s#I?KK9V%Df>4U<L_Vht|^4v9*XDH{y#biTpGGdxyDZw+MbZJ2^amd*oi6{MS*7V$qL@X2N!e@vT +V40Mq9}WW3@zVi?>F2gmR+aC8JmQlBbIxqX^7Jz#xH(>Sf7I4GD8P8W<y3J%8$n8j_r)s|^TL-13mnn +4N<-WgYKJ{?|c(ManF$iv^OC@1r&no~>&Rz6Gu+w!w7Vn&o_7dIx-H1%q`1IbAN`Jm$DKrO-OsJ_sUz +kZQ~eEouaQ9T%JYjoG={F=~rzaGm({^%2rC-|jYs9gHNZ{Z4%USZRvNyo_37PeUT0u!A0zB1@?0qV*y +?AJ9L*22rRE;9PU>dTn=DUH7Wo(E0}n!Ib%?>LS_enu{+snkQd#b2TjWsH`IF&m-OfE@}isxN+U|9dF +`LFtMJjpvN_xdlvoWpeHH)+=BJe9IxeUJr>b{!xGlFsTy|Gyul|QvU#M<j;AGi{oazfzIYO!7!hK2f} +<ZYhYs-;j;n);AjRx5b$d0{iZo%U?hadpaWZ3o_>x32udK#E6`~0ln?m#49D;c?_>0L8^tk(f6ypUy* +@*tpP{Y_XfF@zZYj_~2#6}FL-<<Nh*mhI0OOUi$0%pqYA{-!M>^4nVNT(d!Vk`)1lNttpb2d!TG=&8n +5FBDRcB&)-eYo4*|-K*`5K}OP@-g(Vo<WtOp4KPf)!DAq7~EVSShX%3k1=O$3-oFB(koKn9#J{BC2Xe +e|oE?uL&U%>_l><ECsF&gBscRTgE<O?s1B=$%m{fj{K+u@dF_bAh=;5(Wsc%3iVb(xFWZ=EkuMNJYvx +^^?DOUCk(>=W%@a^bu`*w_}<Bnn11lB6Vs)Gm)S7wnH-wB0W{VNH{90t)FOtqAYralbgw{|-IL6-ht? +aUBs?OIk)5N4A}d>{C2tk>dx-6IQ46Ry9`1&w?&;mAF1}&Vkdvi(t((w8?j`ePW^^^Y2E#k-<KNcs(J +M#oh^VdKt$?G|20zj_H*7$Y%)xcv98j;<Lf5{tMxffWu9hrlM+UiUH{G!5gX?^cZyc;$jIb`w!9`d-& +3-lKx4i&BI?G9t6se#_8_L>XL#OWld>kWK@U%GQl?L4r!qm;VYSJo>biH1Hju+-CDrtoRJ)mZ{Wk~Qe +C#%n6x0BTf)*Kt%qy;#08;fpfyHo;Dxndnw+_h<KqmlfXdTTkqrBPyEY5n#axUY3t?(oIZ#~Qly%}%A +;y+Y?=;>41w>2QqPhr7-HRSzYs3FN{0EJ*wN_{FxiwP|QdGxi0_gRt;n+_<O$B3P@+!K@U8Bp7dis?^ +~Q-lOoB*1hW(xDklfMI{NJ7I+B5`W&TIp}MCE5(q|(Xu7qM&Lg!oQ5xs4m95q%toJX0@tIa=h!%x}E+ +<->fs*HY39DVI?n+y3bgRpcK7CBKL7;Gby?U!kZgIrnpOWl8$)h~kL;N8(P>6aC5-qg!BwrXwD<1GY9 +#1A#el5b#hL84Pcag2WUz3!Yj)Y*mWQF5_fuPj<ssa3p=FoHy8g6LU)P+BuU45%z)fb;ZqSqO#djia- +8O++=w1Z*Ej7|@@E`}3WEMThjXN>3`N<|;SsxLk8X}Q0!@e7<|;f_bssGM|E)!e_uB{y>F@&=BmwY`Y +_sQec$oTBvdvOux7tt|8Pq)_gL<LwQ7q0EZLFLo_`5Ys5}@|DXiQK5$IXB7>wNxiD1Qk6I6-iJVi$+1 +LoEeV%5aGBM*d$H^8?pQ_wuPqr52Yt5FUD+YBZml<m)=&fc%EH->alU3=3E26M@yNOs%LlYfYtTVF`5 +&YLI_E#`p#f&fV8tf8Jb!z>&(1=KLd%r-XzjddT9s@(+5!P#A3hv%1;mzM5%aW~FW7M4jQ-v=l-GPH& +wET$kSC8%hEtrk_l>5Tp@NFtr!%yZk4>_wB*LD&*fQ%8IG7N7l=|9G*`}w&5zx=3*w=nd$v=2x!!bTC +SVMnSR~c#f4N!G{fyTWImzt;gRnYe<tJ4VdE*>jy)2#?#`R<}{dn*k1cqoV1>Xpot@KG!dabLTChxdh +}Z*+vn4nKS%#z1#IR{A~$-<uS?agC|KsvfV3OB7{92@{s5Ssr0)z6~y>lb-rjo?{Jy<c7{h>H5fux_w +RVR7oDr@MkQ_Qxh1?A$AI-8LAybGi_0B7At9OOU*Wj9^c1ZdYMfX2^u9@4Gj-JdqOdaPTb;`Zp}L~C_ +X6VX=;nyfm;BRlaQQTv-G2a)s8@w$5U>L)b`R#-NbYtlH!J2G4XOe>*>mFqCsj+44ttwbd(l%u88j8K +N1N4ji&c3J@GWaqzy;f21LY7z+nfV(euQ(GJ!FW*u+AzCDlPZAC4XFlOX_DLZlH#Np<I{@KzMg%&|;) +UFt|Gp%*fnwHll35I5Sn)5ya@M%1c5vHi#u&RAF$W#Jkqpi9!<y;fBvc4yDSk}3lfJg<Xce`A(5C`;- +IUy!!7YW_Yu00hyrD)|z%Q3QC5iKp~<U{Mxfl|u*uK|hreK*AcQw`vnqEociG-G%o#)aY=Dt@igOckA +Uq{jOY`>s%LX=SiFFBXwEunN#&Jgr$$Zm^PwC^j8&VzzNhb2=1bR78v2DO)h;62$EOW_l`y3dEA(!CH +{~{OOGGY;8i<bDe|qZUc}ha!V%q>W_?q8g0}GY3cL-tIgE5>V2Wwk!b=z*kn{HR)B#`ntPtDjxM3JaH +(|VzLr8JiVw$HnVZz857TCYTkJ&&c;CbdNDoCLAT2rI!R=9ssUs4r3F@YX7F|$C~mIOf0s=&eHZY +PN&;5e>MyTgYk5>GaC#C1OH_(csUx*X5(OQ5Dtf<J>MHn_lDc2(R91^VcBZ)bh!6?>vZ^H+}1~(UAA? +2;r?*;$vr)JbLjqf^breFte%h^j1|NTAcL621##pI_bjC%jk%iW=$lUT3RQax#3@R`;9A&$eRlj}G&D +?HCs{RwR@Ycyok5d?h%dPsMg4BS?L-B<@W7hK=SMiyi3i=#98j0gy3^J`Tz4UUs6DdY8s?Mob&Qm6$$ +s{tn92ri3i762z{8!M<2X&rSr1i~2MR}fuj&f@ewyZ@{hWGWD4(RdLiG$xT~30->HOADX?2cTP%nBo1 +nssd2<M9dFot*q0a+YF92ut&>f2|ZPEUJ$HPYijDt{mlf!oQvIq0)TrD-QKI_E|n2;(eh+^=`r1tDMr +_+BhRh(NT)hD#fHI)`Z15*FmvTd`YSnG=V6;~o6m4VbBbN4U3XeuGwM7R@nahQv)^yIn*OtC13>6?)> +-N9%<_Jw(?uRN}X=GNRR4TEfH<e->!3fPy@QNm+zgOpqcim?4se@+2Tai<k&wC3>Ny{37#w+(&40yDM +5YW_X@dRHmg12?pLx>`oV;E)k}}>8f?HT29lrE*1>$aET728P7|EFfUj=%*TofMm!H>Lc%d<?sJWt9b +){@MPgsf&KlD>a-MUs?`rEnNQK-}ob_FQ;pJ}D%v%7W3xRID<f;((p4EtL!}pjOCGGp>qEUS&#z>EFe +WsOv2nzJ<B?z(f&9=P4k0P1Xn^p+nC}h0|F{{H0U0jQxql2B%6fa}&iU?E!(sED{U=N8kue`-T&9rGI +?V_A5a4ATq<Re;EOP4Q#cSXMPv|cmn{eVY0<V2#y;6b7{_mFGU5s(H0GPWwD;{8PBJRk{qI1leKhHXM +H<6tZ6#1BFZ-$N*n%v&#^EH{V>A0r95+`EbCR{-4ltx9gh21ztulsK(`zTTMOy9-jcwzjw?bI=8?a|m +>3le`kf5^MvjZxsDSZO54nn&_}oOheLVg}x+C&jlu+yl6zGMJ@58!PaOn+;N6OtH+NI&lg+c=PzDxHs +MjYJcNuJD6w<P{`-elG-0o=23s$$|JM6&hi>7Z<SolcosHekrB===4!=71qfwK8Bu_1vK{f3Fj7U#F* +%L@ci4=!=?^`AgJOi=MzAG&Dow251Kz*!|GFpZ|aaz=~Uemg$!ym1~WgwCE(wRfDlGzp!1ZfYhl9>{& +!l5K+v_bN*&FhJ&1sj|c5g&BtG*42aZVfW+#+r1fv9jWdFy36!SjVhCY7NLRiCs{19DGBCZ@{SF9XCr +b5l2x0?W2?3euV2x;MkKY_HsNb1g->hD}dY4Y{l2A^rbIx^gges#17n3=vO60c%Y93s<Q8aI`z3v22_ +DM8Bwxe1uio3$;nSwFe)#QD|R|{{6MzqW@A&jSP^~D9<8YVfeX}dOtHE1B6Y^rN2kYP>C+L%cU`!343 +W?~=s3*PNnS1mGM@<(=Qg^DvM`7|C(Y;Ec(r|057h+`b)m}}x;UmDHW976AiRW5ba;|Lyc-2(znxLF3 +@Pz*fa_J%kPiZ1QowQZ(;{h=1dh>?E&$ejfAGV}p?mh}{Tn*ZJh<CC-g&-rxU(xE4o?p*F2*BxHZ*SS +VlDSb-g<j*c`!P?c%y^Sz4vraz`b|JFLvQ_EH5v{F9-Ozetz)rJzVb$<n_<A=K;5N1;{aixCd`e-XC2 +2lL$UO9?+-p921M@1Tc8s4RCyVesJl&JNWpPgW+cfzzDA6z%{b9>u}}C`PFm<?)tiYtQxUY5L^2<_H0 +=;R`FYhl=OqC_-WNDavM-oG1#4ncr$_{@V5Z*1D$fZ9n>9Lv;c+jv96zJ>L>|onm7|ggrovj*e-}9D( +O(2sXtD)beq_PiQ}VGt7UZbHFU|)fKi)AbU=rX+<Glb#qa}0wFCGs6MnZT@{N6!Z=u@gjjORD?ae)ua +ad7{^F@*;^sUc~8@oGS|7=nNuk;>CDS<W#l`5|&l?wl-ld4juE@}<XwBWUc4*~+%6VPT5!cH_z+A~(; +!JxaipJ2UuXLU1gGGR@=(Ut_WUca-Ns3Jmj@^n-uEmXe~s((El)xTP(GGu@xuv?Zje9~<YI!R2Ew<7< +O7E&;>H3i}YH;;g9&8Q@}1qnpws}@|=g3A`^Z1xDa;*oH(n4f%qkiLaD=k?H#vjv9kkA+RD<s;yVC*U +j|jT1aZ65MrxYG<GEJp&724DMZ}GwsQBd+~+R8(RIs5+D_M_L-GWtsX9f%}hh3`o_TBv`n+c*2{Tw>9 +amS-hY&-YgeB%*E1D0l0Q-5@_jBZUoK|d{LvEm1?1CPvp9v|9V>Nl?QKf0qvFY69W`UfD28o@>vBnj$ +I^|cx4=bE-w9H`aDX0K&W{!mgit%%^KH)q^2Z}53uYT_);1?vW<wg(W0D~Z5dfWP)iy`kGi8+Y=6~&M +FRi25T-wO{+Sj(qY)p}Dqn!%b3=G^t{MBe~M7=zZZT4UWzJEejT73Laj}6F14A&6eX!phL1G4-7(gJz +XdR8`<F4P7%mW_8+p~(!R=CCZI!0IE=-p_ln)nZ=D-n3fcRNmK)PqjXf%Ur#}fy1cMqNfxE*7bnx0wT +WOKIu3iV!lw14xQ95ZR)9l%2r7sRylK|FlJ75s}@i1*;1poG{x&c;~^^_!XxH~uOHS^Ef4<JXX@O(EN +dYES!3f`eKu6*zaA|+`dnk!FUt@6V%o97Q&8WpWvDMJ^W=}1N<j-q^Y5%iTF@GbEK6%8lei8jU~z2~F +xrqG4fh(kE9I?+ppfSmY>(Y;GqrWgY^oZ0`Lg$@vHeMu4kV?cdnnyCC>;q(_lCVcPQp<1|NNfrpX=Q} +7rhV1y>4l9Bk^iDJf72fsw#>*s&A0d-S`Z7`-XxZ`QcSgT=?tvxX`6|t&GWqDI{_?!m3;dW#YAkbhuO +zOWVG<a#-k45TJQ^jN3KFK8PB<`<M|wl4cF8dFoEt&qtoUTX%l$0qZD_=a^;jkLyyEz|b1=x~fjvx}m +MPIQG<wNwmuUy4-`8I@%PISZ}@jHcHx#$gEtIb%1Np(5i5UJ8Sx>u7bk4@Tfg2f^+R-XkEOM8<}#<vK +$H-M*H!N1$E<ipWe_&g~UlX%!AAl28W(>?PGUuJg<ExDj$jV$}nU1)oD_qmF>{U0+TAcXS`2R@OI6+L +Qzop+pCyRy$*)UO%i$Na&0(qAOE%Oz(-BNL#G=%2y7g3RLdEyx4o#dPW<$fc-@P3P*LqJb=A~jElypz +*Oq6kXY-I%*Kr#2EnQ|Aj@kOrhxoK(9$-Q3&$yX49PraBXjj`Fpa?U1>yXtk8u83{9Twc<$2PG*nKsS +TA!$xK43%5C2c>5HsVrT78ppCgMWYN~$Rx|SI|YicV6{1&OO&!#qoVhw6<L~KseB5$8Ktx>$D#GQ9OE +Dm<^IdGpsn{f^!Urfz&&~LZ8(n=V#y>;a<%RrID=asUlMS1241tk+WP^F_tYp!zwhk=rVMDfjN{>JQE +W6RXq+GHeC5D@08mQ<1QY-O00;o{RI^Yo`z@f;0ssJ{1^@sa0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{F +LiWjY;!Jfd5u)>Yuhjo{qDcw>I`brM1+lf33RZwVJpi*XxBmMic#!yqRp0!r2N|0|GtxKCrz8Mh9tJn +@9sT4J-Y+n=E6WO3IsZ43tm7WQj`WWSjY@D*g1klT^dlizxY`3ln$dB)`jn=jZiY^z+2Yu0+*SGUEE% +^7zVe9zBszR9FA{?4WaZkt(2{2lLC#EGQujop?SH|kgBpO&?01LxhM<^a;-{8l6+wo8j}P>St)ISPmL +-T7L)qA3z=97C#(yV7Sd9KOsx|dG#wg)dKgRWrV?`2j{15(xlb-X4==wYH+SRl_4reRTh>c$ao2Lm3z +0Pj?3@TheqhD`phHsltmFfbidIJB0-%o{zAxcU`awy`rII2gn%|gcoZ%YINjP)1kcW{DA9@LUJPYF>2 +r|rJuR-z>Bli~%JW<E7-~b|Hbqu`^K*#2W&jEcc|An$vG#O6deg7Tv2#sX7gad+@Sxlp_7k0rju|lm- +M+fyZ{zdJ{F<E}~4_jZU{OEyU82V!?md0$rh*A`sf~wjLU`awPNz#Ss!or+WbR`1Gw3NC`<T+}TDf&? +>Vdp-EE4~5Y&@wB~)XBsGxuH&+l_)LSYVapkZ)*AO(<bA*)v#Nm$KX1}>Um;z?Hw55jHjD+j&Z(8dM> +6&QPHKhFWbV~%~-a9bH$2lYe>MuW6-!dtW-Mp=M=~W%g`0!<Q)1tdf&=;RiVtH@K68mNyu_XYoookIB +rMZ>|4`R#}|WoZ^(X8k%^ifS(oZl);~3Fhqj9eUhq<?U6OPd{b2q0><tAfbUzldpGrs<j%XeGm%`e;J +6dJUF2y@>6OFy5`h4}3_AfeT?U+Jw%!2<=(v&A`%GjfHbni8M9!S2wu-(;nR9CpfLRHRjIKr6W@>PU{ +JH$uj9o<OLbGwc9)2)6&Sa{GYD9;Y@`R<mniFNC~Z;yk2P)h>@6aWAK2mtd`vrxiTE9LeN004MA001B +W003}la4%nWWo~3|axZXUV{2h&X>MmPc4cyNX>V>WaCzNZZFAc;68^4VfzUS-v5|Rp+PiB#andyL^*l +`-Pn@RHQG6^!K{9HJWC6;yQun{#?gAhQl9KH>>4(!~A`4tR`vPFGy8yS?+cT-zOs0at_jJiqmdZqAT1 +?q8n+nCsGr>xs7MkTV`tiKr34FaWWFz)YC@u4Bu*DunJ0r%kDUp45^3u^n>_iA^e0BKZ;OOMQGR&w=< +#}naK>{U;T+1?7E5MuOiY57?NJS~wRFqt%IvUJWzF=`YTb4^D;+V-rk*kvNiO$nyDPr?`#HR8>qF^Id +D4CVeAxlaWbYOcVd727p(ymE@re&U|Rf7@(!!U|<sg?=y)Q;t0Hj|kwS0i>L=Dd^_!nL?Q<*Ja`+|mE +|%keMqi~k(F_#uAt)6vo4(f1(BtfzU8u`Q6A&lh};WjRQCA=H4uhj4w=7d%b*B!!VU1nD{0ZUlzcV1d +^KD#z0iJ6RS;s}D11e!DD?`lpPHQK4?q@a?J)T`jTI0N56REt>5c?D5ULPpS8@634kNUy2KCYj-!GR_ +rmzID(l|o|>*F%gL)e;pwK15|xI2rbm~Yn(@;o;i!6Q_*Xyi)9UX&O`%4erv}HPA?emp_DbdPXmxG<j +H0M+u+NMsUMz|q#0u=tQcYH~WK4eo!s)0rN;m(m#A|ST1-c}w7T*Rt8eL>($gOL60X~2$sq^edQJ&>f +=;<bXE%ew7hQS_roKEdz?|%qSC$QwLl!G`1XmBh0Y#abrErJmXtRVQO>Dy>H%r1B;r;V0(2X9UeUmwN +C&)>d1cykm0>L9ky0k`3IqKq%Zv_##9BtQ_?IO71EVRD9uN~D4tQKsSozY0aaz+0C1ouaXUQ3$N2V#Y +}F;f28p_Xv9n9f#OsL$Gqlwx3#~cnVeS+zdbv1ZIUI9C_<G%*2dYV4Sz;iO}aO0iGjcLIRayob4qk*L +v?)i}x$bC%=K#1eZ4nJpPUh+<hUkDS`tVIqTsqHDPf^=4ZzT$Ly=GcB;q3BPDFt7I`|AYPDC*9xJ_-q +B0yk7gvcW&=)qxxzp8CqXrlZNX=I7;X9r##eq_}vV-HKdJc*i(n^y{4m)%XyYYxEHMB8(mM>GZ_zd^w ++^Jrx=a|Od!K864jbSaj_?#BtQJ#r<Vr*C>#?9l*isLh`&*FHfMLG*>GgPySrWUN}wt=u4b&8OA*hEZ +Ai#K99PM<#5rY^*yTC@!w20kHwA%=uCVkuutrkue}knb_gp0M0!F8)g9`z`L`_nW!fk-HDy{WjnEU#a +!e4)?!uz@N65XSY!O6PWx#OKC^l;5=dr+R)ZZFj}_<HXJw#2;o&;9%87x5Lqdvr}bt&g9s8LTP-tP@+ +_&u_3T><(9qI{9JGyKWUrUBRmv@I>w|p1*u&He3Whe-uv~Pc>g-+UxvHl|go|p21tQ;t*F?te#b#rOl +SKgyL$AL#R{-fIR|h2h)5GF5;UK;F7`)(#Z^b`${tTZ65#&b;UJely?P6d<EC08J$_vP5Ru%hVIf2~n +Qz+BLp1`m=n$N?5Vxc>4I@`PJ@N7u68PS_%)vCzES`({J4G8hwr$vPL@zVlQ==o_OrH;Xpw;G{7@BD9 +`>W$c7)XxSE_PsCmz_};8BxvgZb7dts5b$0~MA#xBX;8uN{qzyLW@Enn;S~RPA6>KU5OM;bf<)xI*Cz +*I7ZH3$$`kVJ@q!ls`iF@gF|XKTK@yCr-xpF`dTrbI3zAWuZo4LxcodkV!0&J2_n$T+i76$i1b|<q9_ +n?ei7RD{tGpeHLD&h)Mw{#t=^~Y7g^VBSw%_U1vOzQ#<q%0n)FG_*JG+GvjFSQasvrvdZ8OQUQf5ox^ ++f9N-tH;N9qjBr{_?AT{PSO5f79x^1$0x=F<UN#k_k(y4c{YNNdcihf<_-^GEIkH*E^hm*|XO}9efe6 +N7QFvtt~RWRG855lJT@S<A0xslK(w{L{3h5DHsGQY$8A&!DyfdO*Co=+_?H%=?y7oGpTUG{45|hP}3x +z0^iIydMpTT?=lD{M8uwVk~<I-^1^fl9WS7h>0{yMN`MAfxa5=tir=xS32D+!WU8H)U^XUZGt9v+1b` +IF(o`qCOxVI*o=Fe~5-&|OpfXPY3}dM&NDUn19PI%(vJRHmWChzAB=%HIbXbtcS)&4dTPbbwH>3W3wR +3G5p>=Ww&{(7``8j04RI)41=P-+PzEp|Ok+;Aa+_C<dW1?vBWcg4tKFz5*=&HH}PtN%q^X*hl6jv)F4 +J}iwg`C!diN(b=>#}c+yW~5~FNGS0jdf{PM+CM6!b@464PmN=?UkX#B8O21w^Lb<)!PHuWA1gZsF3Hm +nd$@L2L?42RyizQ&|l+iSf#kGzp%co+pjW7ROH35;UYXqOT}f1ru-mOuFX&h4x<X$yA)JNcdMMhJe19 +%?buI`Y`t=sMqXesW!P|Qu3CeWZNy9gifA!#-(oKX%mVblxIEDJLE>-*mY?D}!s$XoM)Co$n?t4=G(w +sMOj4L=00m<tVKw43`BE8mR*cp<kSPHRYtX8f;ST4@As5f+Yxu0z7yceTJAOi<KOOIEe{=dMd=NhC8> +(txYX4vmj-S}sV*vp3ePpq|2>TG+Y|~<nE8N3^$@p{w`wkY+Z(BTX6vx}~`{?wU*JknK^y!daPp*?|m +0Xj@zDAFI4Uewv79EDS2Fsk?>c@>gi3&ob+v~JNaVqQ62`szq0OM@eG4^G>Zg=TS?mlgrvVwi^>l#dP +t-`x^&mMP8f}e1mfgr-U)0hK&uYJ}H6VQWB@c->b70K6+YUmcx`$tGj5&Kh&7~SMIuvH7Jfoef*nE>D +IQiEoFaZOfF++bsxi>r3D`rr4Of|2%;e*{Y&9{tUWTOpc-ABW!`y?%4>;yJ~!h<uNNLF4f|tg&LKgPz +N6n%3cJ^j(-v=B$tc_SUK&<lD46o0OGQjI`hiQqxYs!G?|0rBz?y5?HiK!tNl!3A4u@LZ1JyO7k6l*w +o^r%$2YkxWYr*9AX(Gv-8Ss;9RG6vBaG?3_TIaWA1|qh9rM9SNXCS+7pQ|MCJM(Pz=g;{1YfU@Au6%g +P1a;4MAei;K8_qj?jkj5Mzg-j|L8G-v%0~C?V3T>JA<fIn5v(u}*8&g#;I{2D9Tbd^mDFT`tDifjL0Q +o+pn3e^s}{fyI0q4ar4xc#|jSXh>_g0>vNwnC2X*+1s0L-;0c*0*Jt{kY-|Iil-+6V`P)U=v+Y_G;hr +~TY0m2f+w9fB_k7*Y#^|cWD^OD^Tx+844a;V5jQ<1D|JkC&l2BVihCbboUCK{=8ztEp%E-=Qq^Q35BA +xP@438qG5}E@RFc;Hd>8d*P2}W5MM3miE;CZ~%6Nw>^bUk-2i(U!?unwD_%QsKDxv#DzrRU`O?&~S#S +`YudZriy-I6O2gZX^xVWZFRrGN}IFVJwE@WJuL(BigifwsdHgA9-9tLBE^88^q)gax-`{HVi~x;Oc{g +<uE7Wh40L-qqmPWz{{Nrta5MKQ<ljRYPuFq^M<bDMec<*IwbQLvS*>iLpk?8;jEJp3u1WiVewHsIHvY +Rw3Pt;iN6pJ*wTeX4CceW30i=dLEdV<z6-Oj}!}Vd!@n^eWOsfsJmBURn;2&bl4G6?+M^$x9kIKszcu +9q~jw`r`*=)0>(#>LhOd)ozqWyRP}$gdEUv@-t#b~Z;QgPxNo2STxT}D+w*5S!|Bs^9jgWZEmwCw(`= +3^%yXP}sW4Ny8f?6Bv1^mDwcKTPU+%l>xj(*<d!q9Daeus?`<E5>=HXLcZfDv?HE*}-v*lvqJutT|$h +S{cCEhG;T&q1Dw2wSstG;1xAbQdOMQB>#XMu-FTG|WPii)KZIv&A82ARl`?cfUM&0?axCr4|l0Y>#(Q +*nlXjcc7JlH(Z#R@|8^Bd=mXTI1yHhIIDXz8lm^)(o9kDnForE31ySrDCZVRsLCm5~91S`WiyOGk>@f +g25U?=zJmAWv-^$StEsB8K$GU5GhvNspvtsP%I(OrVTW@ah`)1D2ry70LLM)2DDlODr8r1@F-s@H1bR ++C7NK4$TOc)X`cmDrES&eD~$slG`35>BNleo_M7zg1I@;G{90cOwdb~{>wr|U0ZExlrfPk6x_H{zQQT +s}8jqPRp_}A53vG9-vYDr?IS+Glxu9u$X^tSxjZa>!#mTaCj}Xs2Hn>eMawanKLIM0+YCMa<ajn))vs +}&eDl7RF8;WQivE68AdpGP((K{$SXgoLGf8du~VlBWQ;qkU^*GI?iqj>u?2wQ&3E7+K5Ys~>`<!$QQ; +Y8>TRNnG)nEBk@+)d><m~)auyHR;5Qant>_cuUvU6nwG0T5tR1vA1B1)+bHR@!K^KO3~BXxwskA3FWB +tG;>49!WiwbBN|_JrS*I4zHTM{Tl&m3~a-~R)iY%jFGvd*Qid}!?8|!=*mx<6Ev(q-8Ma<a@1{!u{L# +ET2rW6OYOZxuzm+?9oOU9x)k<;0+s^ZLb`Bw$QzE;QNd)Q?FJ9NO<~&c@()YR5$ZHzCpo}81nQ+WJP_ +Tu=ak-VnL<QCaM+aPmlh91nbvU2tdyyhmNrq`M8GisL6&DkG_u|TPb}$uB%w=-MO&-k3-V8Ra&A@xk| +jCp2MJyXnOc`-&pbg`n(EZH)Rmri*8-<3?kBcFibYhjk{ZQ;);h5QOoyoTuzEo$LiOpacxdmPUhP595 +BtZ?sP0q6{`SBvY}~oXggMR)z!N0rf!X-1Ts)oU3WjTe1b96H+#&|GJMIJ?esg=_9Kmp$rn&LBlNC6W ++UH`3Z?l)mf5&)tBd+F%?P<{(L5vMu5Q47rliRjn5j&)9f^L9NPBF8aI}T@MbQhdds;Olv>>ZFZ7@<@ +csVO?KW18AQkyJZzv5+|&vPneMu(tSSOD65Nck1Qkzb|72wnbn~iv`be`~Yug-$mfW5yp>CV6}wqjQ~ +wA!p+=XxMdAO3lD^|7fe!Lua3yoOKgT(cPXk8PQSp7QSv0SbEi)zIrB{0<cQ68uw$>(1_Qq~$USY;TK +mK&!>*Iw&V!cl*jgL(PBNRW@PC~qxGmOa(yNQ1z2hJdU(<7w!TlGze6d@?bR;oO2VJ3SvFDcH2CC~*e +jwLcxv<$E9~@V&yBM-<_8g<_>ROEj*PhDlhqvyZiYuAqbH$4@ncz(?ujf&3AB)tXJ~@M@Fpb=$FHgcW +&*sf%mnMuQCpwc?qA9XFixyWLJyv%Bd*ZF3gb*&EP^<AifTW1QhFZh+xWmK7VJ(3-!l-5(W#gr|ijQK +7fnpQg#1yv}=?4D;P)h>@6aWAK2mtd`vrv%{7h6>T002|~0015U003}la4%nWWo~3|axZXYa5XVEFJE +72ZfSI1UoLQYQ&Lh2FG?&ZNG&Q>D9KkyD$UGEQ3$9k$;i)BC`e4sPE1cNRwymb%u81Ya1Br}H8fYq$j +{F%=2B8p;^K;rF9T}K%+HIDSFlx3H_)@tGg9XQ08mQ<1QY-O00;o{RI^YX<cJvr3IG81AOHX%0001RX +>c!Jc4cm4Z*nhiWpFhyH!ojlZeMV6Z)0V1b1ras-C1pK+sG0Au3xcGa3JN%%*BVI2e&%FN#xp1;sib$ +hgNZUl(@3iCb{hH(y|)lzjtQexRNN@*Gs=NIGiPMc4l_wnP+B~{eJ&y!6d=|st0~gbNEX#BAaO~_>4+ +P6eqK+D2Q56GHqCqlW8`)r&UfCoZri&*E?5)KGt-m<Z<tiyy0b;!PA0Olw{&o9&5q0%1SyUGhQjdi!^ +5fWXIJ56TB*ErN~1jST-#vC?Wdar}3vhzWP)8`uhC++w}Fxn|I@jw<C}gtEA?vQpXZ(Zpa#`^wY`J*{ +IIcLXue0Iun_Koh_MK5H1t_fYt+WAaLg;tLjE2cam4=!6Et5zh9#N{bTYaNs_N$d%a64o5E}}T*({dm +fDqqszy}lLsr0QT-@vT`@Ol~CAls5l(4eqLg~-uSMx)`{3G)xEqUG)v}b?R7VKv(+fRB+Mv?vE)ZB5* +rzACga0`T2C>M=lh5xqlI+e&~6cgR+y&xJQb5>BqiD<M!z{pInS`7&%`&YYc#!ImNE6P<|k$<!LP-b( +;yX0g^K^3cJMUzvq6im?+_Y)7a20^pjeb*Z?s*-w@^j^TiGY|p?P>fZ#dI{>l&wu;*;|0R@`s(!X$06 +Yr`Lt3C`16AnI|7KZIc_d_ph7ZUrL3Cs$@e$prxE$V!0m-!qrc{K9=gb<cSC|<9g>3sgNlKJDY3Y!X% +!ohXc-L&t!5lO9Yu|rAO08(Flh635&lEnN#2yTF)$Cb_q-czU{L!$v*MX%4LFVUf@gU=2XnNLbR!f;- +y#&#XYPE{@!uPZZo8dZ@6Cz~i0-wawd*Q-$XJ0?6ptTgv{rx^YYK|^GGh{15`sd37%POis~KcSqXetn +Ih_LBm`YP%q5?MRD=TmxpCtYP8HMGy?%jC>oWk<`o&}CrX2&&qd@6zHvs=39k^LF`v7fv*XTazmn3Ry +P{jOx1{Lzcjh?~mA&OkLq&__CJbQz=9bLceaIr`e`p{K~R8MKldJdTlrOdkQ-g@(h$sx^8=r7|WRRTX +^Zi68g@4cxK^TD7Ya7Zj%%_G%e4skkU-nWVA%A)8A4>%ABZOgx>k=d5l0Hj6DFofwc_$*Wq>IeUyJ9o +xMbkkP39YJ-&O#+=%m$8Ahb8AMxmV*vYh3wOJJK~8e){D(@=7CO!fqk0O^`GIZ?4acyl_E@jCD^lHgb +QGxR?8z-van#YBBeQ)-SGcytAAN)p(7yrmloFJNa*3=9rsA-dd*E8fCda_<qfI@AN@%_2<Rt1EHKH3W +3k^6moRUIonclfQ(i+SN#Sr*$bZqwn!%4dbkOslEMjktLMx5%>A?I3TECd(rYJoM>MM|C<k~yF(Qz>Y +P2bLvw1{5A(xn<QVUSq_y`T~!WG)35@sbTrSnlKn7X1b`hBI{%Z8;l!n!?9Q2ekaS!3<?NOC{*3}t^b +Fpy5DZg#lBVVyh$+;=#mq$@Q9LV!x@tiz+|SBXj_?9uwIYTJ6l>HoC^A{25Ld3V9}P^azSYkL-6M8Hk +DK%gUPn;&h;>@ONMK1%!<95G)tPTUTO~{ncO%kcMOVw0+%pZi8B<IA8c)t2)03~mHBE)_Bj<o^aKLNr +j4STC^hk#m||&%h~ODo+=`TqE-)R$o~9+FB+pc~6=AQ;OL*?nhlx-rlqj?hzD!*g*~*8{#Zz`oDxfY4 +iiZ;%cb!r)T^SP9&5W4zt!Ju=e4>V0QBxIol-h6)b9$OV$Pl~B1)D7h_KdK(>VaD~({GmXC%68LtXne +K*iTpChl9dk6B#L@Pa6%q0Sd6Ww;m6>a=&Kk>3>`B+mF^~fDIA+%h`DRUU!YF^ux*JyYVH&*)@}s_m| +_7w|}>fwP@tpb<U*HhY-!RGF~o<6wXQkUUNVlo3Avg5)?l~aiF{+rvmUI862V<`u@S{Q_$mw8K`A&#M +WfU+15^iLq!2f<A5JaSR!Zw4P~~7MKt;6%g>*0{%~mjer}z38Ev)(fJ3=CXUin3YeZx#%5Z>}TM>ufd +M#l5G#U3Vc*oY~ys2`t7ub5=5y=x!@;3KjYAeM)9k2D!<id^fl<s~rGxIxDrhPG$81^`IWsVtul~u<T +O3ta~bvKyfoe4@s+uMmWG}mcB8-#?Kf!CZuEEx22%=Z*1#ZI=40z!g)7Sy#af5dXbDqbmcuHUYUfjtV +g$*=Jk0fXliZ-Dp8Ox$B~(Q)s&-c>tO?=%<gGVs*~B6h0uc@TruI^pXOiFC6lQMAQ4eoJiDA+Z|Pqb_ +esT285uBd>04u<*Z5zQ1u}%FAc~-yDzu133^Y9(7lmm(|WpwE%sypcZHzq(+0r8+4;axFgm!vO0ie34 +Yt;R`p)+%3#gQVt0W<LYp{PjH&6`KxoW~Gl}t!>-Bsat)18!bUU?%BP2w;ZQB7}r#(7IU_~@obIj`q& +<o*&%$;g7G66S%Hb5T2Hw9}6YSXBe(N_2KkpnYu&ht2x1M(AjwZm4~6pF!A5@`N2j2Czn%H|A4=qX)f +4~#b=A<;&YjDBH7VJ>q621s^zW)FtrM*w`WBJfjdGeop^yTx$GF9vG+hPG{3jL?D3VH$6iGkw<H9G)% +dp3i*+;Mrom3d|iq&jfY<6y(RfAuM6ivI>Te*DK(7=vJUgz{3nXm>&qyNfXw!da8{GR$hTz^IMACVI< +TMT-4|r+yvb^ibIhh*$Dksnq4V4?p#}L4_<Ck+n6$w-<0BK4{Ke!-+K&`$fy6m$1uIU|M4-*T<E25o3 +dQB!&k?p-UY{7v|B(NZ(xL>4*-8Nvtfl;4`GG5yEAJ4%GGrxn;It*nt!Y*l+6zHryS>6MFl3Qk<^S#E +~eU$BwfnB<y~vbUItnE|IZo`_mGrUVo2)0fr`!F`tbHl_d@KrYY#sHM_ti`;eG=PVSCl--j&py7gN2n +k00Nq7bhRaKf{i{Xm!!PI*bfuL{G7_lk50tUq!7ib3c8x`7bk=4D6<DYsO2(Ox!*U$Y0zGBMl|^nLfe +@*T0}NmwVrK_DwGQLkNV^I(cQvHjoaV9^E)s+Qs^<Lq*!Sb~$xj-B)~RD*u>#C;Q~PRz>TMos6<V#)F +A}e$#9H)o(`i@zB41(c@F#FrcY@e;T>lNc@s=z4lAgw3vyG&BX`4sPS(~;YaNIU$-m3shNb*c)P1P?c +ktwauS($M$ye0^tW$O@hm{QEL7apqPB1)8rmV{p{|8!%O@RH?WN~Vi|)SGzNXn{)`?PNe{0&knh6Z=D +A1iAgqiuhn+`5~x=iU**;hfWEi+!VFBzTukaPhpc-<bs!4gI(nB7N5NHh#v0Kzv-@jXeDrdZ8s8W~?q +Y4`pEP)h>@6aWAK2mtd`vrr&&GQaBt000LK000{R003}la4%nWWo~3|axZXYa5XVEFJg6RY-BEQd97A +UZ{s!)zUx;IE*6p&wtyar0zrM)w#l~Wc9BETOAru@G`6{sNG(Y@HG=&29S%u7oF?g^IYbs`=9}R+FRf +Oqp9k4COt9YQFHk!+SgH2x`tq9n@cobMp!L12vejyp$*$MNF=6(-Fc#8#tM_}fNUz#vJEJ?+%f8}AP> +nV$ik$A+q-GC;lWi7sD^SNf3L{D>rb~5{Myn2#i)s%>^gS4x)UKh&7=ObMe-Uj9CaN{kIIY`J%|X}W* +_w6t_~3n1t9924mz1t#3!k;S(t~O)jnO8{@MdhA?pN)>eZrq$3eJ`2fb%lTvIchSC|cPF2i%@4`YOVs +yvP{-dFK4{QrW=(3)c)9>>w<22Ve%i4$?{oY$u^@kng!ANewg@%VQp2Y`$hWVQub2eUCKfPoyk&Olil +8(defwv*1!pF)07nfwf`}h`RbyT1xt86vDV*k6n;Ft*V_iop8lyP7p!5O?I1^r}d~=j=zkM7TDjS9e^ +k<VhoAMR*PmNQ4gjDjtM&>@)If%YYQqVrGf=3hE}ZTPqCycUwGw`)KQ4{*S5k!I8<M>R5QQG@Dd^qH+ +himz;q94@=!9&<Zj}26mYByfiApx<*!%l%9vC)7<Hz26H^-Ql;1{LLZQA%%twjsw%}mRg!9GkTaRJ=q +HsZ4EFH2Is!93x9cKfhO9Co(g?;9&5Rj}e;X@yq?QX#4SMAA{pij>Z8;U(3FTNgkzO5LJf*3(C4pAf> +sTx^h8#T*JIdhtbjV9ZdN`(~RpBnJa#j}=Pvp?WOzsi4se0-WkRpHH$doi@Lnm_Bfsl@Y%hl+G~2Toj +Y-ojqgC(fg8`GSXeTi?vUe3w5Q0NVU^Q8ob~mIrS%C#MAs>ovn^y2kWdhyTI4cvs9nPi|;{;g$2nA+~ +q`;*Z|?DNjxR{(Y-!(b}RcpFtrCzG9u3<o=nX6#CbwJW7klry#=_TS>LkMg9>BA=GG6x?t}-58fQ-1m +#y9D_k#JD(kQwiy&I!{2pXD%bF9$AnS<Q05)y|s+LH0#G{6eOQN7wcFj~D6Xsv$<fkO|QowqL8%Blb0 +^6>cW?djM@%*1?9nGF|I-yOfzQH1XNWW{=EHO%T76!rDfb&|(bf!!Dxa#x~Vn3~yX1<c9qdQ><pcs+L +G{i$J^D#P=;`Xyv2pr0nUSe^MO&EXRq<F2vJ=SZ3o8*X*d)IMn$K_8KiHUz<ag&UQM<3_k7{wXA!C|n +xIU5kSN#H*oiaZ`~e9SSZc?F(-^n_BxVxMa9yz-OVaeUlP8GUmsV7}->&fqQ6M_u*7><91snj}RTRVv +XmTtr!*AfN6Zr`rMAe!KeMHxF(MZBDqkloL|<u32u9)jE3(db7EcN|=+Mf1A4qFKQ>X+U6Fafjcum6v +QdI#pPt-E#MF}0o(r-SPyPPT;PjdF!C$1jo0x`{J?lP$ok-?h!sbezGN(pxE7WCnVv0iqAIjjhg=ru* +v78;4kL76I;kL{`t;gyLWN7v5pGO;`gTQwBDCRbu~}*qzq&nq6}@8z`Nd2}At4Nq2}b6VaoA9!anzg} +N4zs*ni(|7P}c|G*`aVRmh-Tffy_q=9V72yFk~4<kiN~?7N;)fo-y3M0gvd5DWr!_B2C|KP)h>@6aWA +K2mtd`vru-i_fd%j002oB000{R003}la4%nWWo~3|axZXYa5XVEFJowBV{0yOdF@!;kK8m6f8W2t1Xa +n3ZNz~P(xH7Q#}%p;IEhL;9F^ruyu0pY?O;21x2^iWGvkkZ>?X^#T;YM{C9yp-p83s}<0MJWHoUkdjM +Q4a=7l9pmgI^R*BswF!mQ=n+6uWQR*|blR3&K)4lm9x$Tuh7l8sW=CZ8oqG85ZcX%L~;HPeR2ai!L4; +D|$IW-G0>@Xl*yHzZ68vl10wkk?8`!VIbL!&BCx&gl(kq;zi8wu&q-;rj<(sFI&+t@HwRVkPn-5ye5= +(`*_mDlg46S72<xjfry3SXJ@z!cRI;E#J<>Ps=na=w%=%IEoUs*CkFx+Bd?j&OC8ms7h%-AyRY6t}0G +(y3wnqqN=fVV*@ppHy-Ce{XGuO<&DrvZn=zPx0=;8*R2s3yaspt1m1Aw=-CW+Tt@WsHMcL|lk1F9$+n +!*`D`{T`HB=60@UqEO(~4coKF`dOzjNS{Le;cZsw;m0?(}gzwPUl%@KOg-qYY?^{yM>1FJcBlL~1pXq +k=dFrWwJb0JqMOP_fTUJ`g)QG{45c@1&FWg)mpJ6?WQ@OsR#rw8IWPG{*;CQvv8dC=`%`{1LwZL}m$S +p^|KZ8{iez#Tqaz!|N@bfxqF{kQL?K=@JFpig8zC67$HaKaC)KX)&o<WZv=4N)w~F^ymY5J^#o<xAc0 +53+yX^+T1XoL%l9R{sre-)o~I=9b{wPzAD%p)={F-VKVV0~UdI{<GzL8o7fBe6YS?8n+?Uk04tv$bJ+ +J)#*_OivW&C8dQmbhup_QYACxGRrd~}X=L#cD<UEEqiRqhOM^8iOLHj8`T9*dA6Lk``(O#5<Y`3kks+ +nxMy8f**bOH^Ca7z<G+=Bph01ZQU3XjhM&?{HE(DD8y)Q$C2}2yR$*-<YI60^_zXMziXy+J*{sL`|L9 +#Cj0dN>QnWG~A)<vO1=EBhM`F<7&1LqLnbfe@S*dx3tlftGgSqTZnU@zVL;UU*st2xgwRcCurFrG)6> +FtK|>QgiQkD94R|5G#lA2d_v>W6QpK7#JsOuZ5xy_vdgK2kHi-Biar>5--hyq`Med-@^#Ct}A8pC8aM +f%D-y=7g|mOCG3WW(IzR3r<U+gZ1?;UP;7&=tveMZI|7RKqxD{z=+E|EPF|%8d;K25kuH|RqkhD+`Y# +r*El|dTI1Thf=bxa4SW1*2wl5KOJ*6^-ri+ot8TB)$+<LG7VL(TEt5d2^o}@|f<dX^?k<FvEr%-}a5g +|R2U}eF^7R<jpx&mhdiMAR1{{(3GL4fxx_DdEC-Wl1${{Tci5?lSg+m$ji;r<J9V`1UoJkXY^EEX)xD +$HLckXLG=GEkxykV8tmzhkK*Fz_}h5@$h-@gpPHJG*-01&dmoeHSB1{sq#F~b9$YXOHGgX3n$5i<i5J +nl8b;+AO%p`E3_x&J{Y69Ut<_3wx&w1S@A)Yxwg=UuL$#Hh=J#NS<097s%qN&(8KQm6)72AR(E`eyly +k~}z#)nID8R?MI1b%ST*3moZiKwx#w%966M*8TIPogdOgJG<dky-c1Em<6X}?i5N|*!wWWLn#Ew=w{f +*X@NT#r)V%|;!-aQ%bmB7$>hCy*LtXrVyy*O!JwOF>6wSGX2t+~Q2f?VR%JRLt5_p^0e0Zih<+E$n0e +5>Y<7ZIfyhHKanQ`SjtCeGx9KTK|F}E3y8Ln*5KOOBRkqV7?KH}dvtM`9Ufp)#D_nRN{OvS_cxBec6h +$OV?oJt>ElDbE>Tab`TVqRr75XKR@3LM>hhXY#xI}@k$QSVE0jW5LkKS6a>(vN;F)AGw=m^Th`%<z5Z +79VEr8M;{E?noczW`860|XQR000O8^Hj4?4Y5|xiUt4x0uTTI9smFUaA|NaUv_0~WN&gWaAj~cF*h$` +Z)|UJY;R{SaCv=KVQ<?u5dH37ad0q1UR)(jKWy-p0bb&?#ykhGlNCi#*o;Kk#3WK9sX9iG|GqntvSd4 +r0>l=1e7t*ncSm=--Kj{phFq;6Q@UW*3b}%fuxm(Et}1QfPUl*s9A8VpQ^>R`;9hCTQq_lH$&xjP96_ +YvY24{{yPXrbR^?WU)!M@4#rsRRWeI;&>fg=@&P{?XR5Hb#EiMlzVWtoNaBYN=a2a1fL<Ze3)$RQTTU +9~9wumH^h01V*5C$@lbKp-2FD(d(-WFvpm`u12#y0pdeDM&V9xW3Rkr+jX?^)Xpm~{@Xtt|)V=bOzYX +3o)A>D74%*_=<t*Q4ot^bVbM<_|LG#(?JkRYGH!k6U0R`jW6m^e|@|P#V}ubDXn^eBEe4toOmF%x;+G +h>{9pwRo)T9#OSt7;oDEsbUhk!#RxSUHEf2AJ6;nd3^ur?%^J>J`ZQJ;q-nyn#0`;uJ5Kd<NNX56yI) +PIQ;^Dji)z#;7Aj0!=Fk`{-cwED8xgBIVX~Nb9kf`=a4CRA~KO+Tyj;h6^E7j&b1^Fm0TCX&_Nn>FGZ +0Q!ZJ(mh;$Sb>I^qj+L9Po2vEP8t?6{E-VQo|PZ&&4ncQ^3fsftbNNc6Nm7j(ym@3IToleR#SQv|2>V +>IFvNj76xQ=>Z1-;;cTb3K{cgkuQ@_x+>CWnsDo7e;O;Z)Gr_O$0Lnwi*-*U<Fr{I4Gm9UE?|(jrq)Z +*O|Hd2GdsTUixR*SToAJ@^AI_QBc#-0O<(CIdes_kqmsFDscbZa||KT6zd%E6H&JCTex-O9IzXIFooc +5@N%ApER`tPqbA!ATV7Uy3d=@?eJl8zqr1e+|B0b@AJ;3dXMq+_HF=|eSj1Ah<PH9EKt$Y@$};WJ~*Q +<JkQnU$Z9m3-OUE@-r3A}dSq}t!$i0qPRPbhzI5D&Q_Dg~VHb<Y@I32#YOaXeKBUa@tgu(4t=19iIz) +N~Os@cIUhY>8U?eI3O*p2&OuTPT8I6g9*aKo83QR=GDbH?WJhn)4p2H*erNvhg$|aJhD+*K~5=#}0O1 +tKX(y58ze%)xp@+XTBc7qJVa`{u_T<e+T(#e@dxJ(z#XuYQ!Y0;VT5)H|7EJWl*&cE~ANw^&>RV^hCL +UvwyVGn|NfiWSN@vSDDRluY$sjNsAh~1$j*rQ%$Go01{Zt#m0#W9@^)Qza3wL0K(88MTPc@HBmbL?Pi +l~c(QL>AV_Ogt?Rce!kU;uyaB)|ITW9`ba63XLy!^TRadM66pDNDl7NyIxfVm)10ZZABerV0<9aT9)C +nsV6iY`*Wm{`24b)*&Px2@^*c!pA*thT^I|MR@l_AHe&BWW|8vq$E|fTms#bSxR3|y%dK52`60$mX+> +T$MnuJ!&V@1-g^wnw33cgUz1yG<sB)B3j@>nJHO?P5YJ7~{Fii!OyFP5N|1)V(I0q=IvLzy*Tn(?+Hd +lpObv{6ZS&L+SfUr^e->{^Tg7nw;KpbHw#jY<<-Yn0}u?JyM)We*@@`dM5OzOg2A5dkUr%M;8OTE<P_ +yLN)W+B}*kGqw~=$>u1TGTxvYWEg&I_hE{Vi~rURz@8@udVS*P^U-TE5ft9=)v!<Ee79EubILjn#1z` +p?BQHT29g)^=luxn2ti=KKn7DrK=25^<4>|@SWcG`%Ek>FU+Bq>1ij&*8ue`?EWehH4P;mRm(rxyw`H +`cn?X5n+ND)GFSSd+xt<RCLu<`BFcIkh+f%*isMG4D9I~Y6C--Tp0-a>@9X<-uiZbeaBqZcL2<nP4Bq +no^z=Z1H#}oiP8y|svB+1ZLd9?4*9)JeRw<gKYwK|ex%)fbUdc!@yuoeWj_Q|-rbqjF{kQLup$hs|*E +(p-CyDFuf8^)l&{mt6T@Ec=Kg9T+iC@9;mv_&S75wEi_WML({3^hBv7p7*i*NlOX3Y;CT2}+n_g=duJ +D1PA%RARxF72^#a7_5ygp>dH_cKHX#Jz*)b=2OQN58{_(@xvNJqpw==|UbIfLNw&lhy5f+lSc~=<e>Z +TjVA9mb-g9wE<3B?uX0nz8H`gAMDv4%2`_*XANZdNx|KvZsD)HS(Pt*SBYFeSMB?35F{!+%{h5gPtL9 +8toY=|Lmmbz`f<?Q!1u1>;nZpnt(1+i>D4d+;1wf;oRD+g#a`!sP)h>@6aWAK2mtd`vrx(xT?{P&000 +aF000~S003}la4%nWWo~3|axZXYa5XVEFJo_QaA9;VaCxm#%}&EG48G?ntnScl>IT{_6VkXb0f!C=I3 +YBptFvabah0T$zCBID1{woR0-tQh-;b>XL2%dDj1)}Hrm&`><W?p!m$nIlfXSjHZDDIj?Q+u?##j%ox +k_^cjXafV18oJhme%FB_sbZhg2#u&Xcj?B{-H7L#wKINq;N#zSJXz5T1h47>HHZk=P<os&_-{M>B<yE +M~^G#rBBH=g4Svl!EpFebG<PGk8@E=n*o)m`hFy=!w68V$vK^el@+5|H~?-ye1cp!?r~Zbr56xi*xBB +O+t|Bs?7zwC6J<5pN-M9P6Hoi1mBZZN!6_#Haf;-`%@2+L^%lo<kFMVSu7%7oCcB_YrB_;$X3XlwW52 +z@{K!1Mt+BKa^8&lZ&)A!#N4x`2O9KQH000080P|F{P&?1KM$Z8N0BHmO03HAU0B~t=FJE?LZe(wAFK +}gWH8D3YWNC7AZ*OdKE^v9pQo(N9Fbuu>E3{nVWS({(5MWr50R;y1&>e<dQYEGvHnwC?4ASiDM@n{_w +7bt2Q{v;}d!(@I1F;FQz#L&1qh0U}uiWBxykY4223r`<aeriN#}g3wOYtAf$fEc<@z^2koOjPaMGZ~j +tdYvam%_+5o6YVB9D{Kw70A)q2mp2*BtkEVfyN9xR*F(F*JgDQX}d$Mak<DjI_D1hoe|nv;OU}4@7ne +%n{8R@m;g$y7ve&t3L(;_FPDy<V`Y}h!%3q_`42pRc}lRS%50Bp>HyLBz=j+~@#GD>?x1H3-k_M@L#m +zpxmMiQXMthlXh-Jv76|xAUKVFlzjvY%FgG&~k87ep#znoEI7ES*ZCaf9u*w^>>-Deu$Db1_byNAn7< +336Hp7NX3W2Yd7kp$o?pVE||I|UJwghYxZ5ov^`Ms=edu$pYSsw=b?aUDGABM$A=_Zw~#z$p;WB*-S= +c3BYPxFjbcGXj92bqSVqrMp#)5*1mYq2A~cf41KR@|Cy;wB|mTCS0O3Fyn*K+lWY8A1CNFIW062c{~C +yR91S*%P7IW-2c{AI<#pT-?nU{}i0e{ddJz$bl`Rhxa*xi@#7y0|XQR000O8^Hj4?rV2%95C{MOnHK; +69smFUaA|NaUv_0~WN&gWaAj~cF*h$|ZgygIX>4RJaCz-mTW{;Q5q|ft7<f_0#>(Ea3$$AV$b;i3C&D +_mAuF2(>46|iRLqSmswADnSnPlA3`NP3<K&zceJIcd0c?{q-&{DH3;X^4#g6AGylfcD)ekD=N-J3Jff +q{0dCrSRSR0Czl?t?g7&P0KLdJ3rta#>96kAs4aj)O+_j;VRGze9H%f;g(g7h*ewovkN96hrl6%y>e7 +Tdh0RhymWc}1#r>r#q@DOFP@8<spp2`bgl@0BIqt3(tTf2?UAnU2a>Z|pv4objC1+uNs<mU`9h_(jHL +$z&sG$;v<f`17?8Pg9h}qzf~&g2}szuGd4O;Jh|%jKZq@K@=77mPOI9*XyM$gD4kq8kKvr<TsY+ff75 +Juqfqnc-8~_d*ONmqGZKDs4*!#{!Q?rMdyOku#d@C&Tt5^f~?}Fzh*y5V;!SjL^dYLgKTK1%mJd0aIZ +`J;Fzru?x8=NFNRt&y^{qD8UZ!?gCp5Lc3d*$d~r|gR#@vedBPJuMM9n$IF?{U<~qZQiX4{YF&?%FNA +D0<1F<G`t-mnFrlQd770)m(V)QwMq>a^fpz;C(RpEK!p`VP`p253_6-z-BkcgCl4=++^1{sDYhN_FVf ++ri`3U2%ma-OgP$;Y)O=JPw4igGXc<3__E8NyGWKK*s{)2AQ*0^x=c3hMLBa$(|YpcsS6ZFs#1R%4Au +P*7H9^qoapGP&hSanuRrZkS|v86RbgMyD=h5&=YpcOjOK%r*D1*aLwhgIMdB7j)YytQgHI_e8HZ2&P1 +)Ut-CSCB+z0BH=NjLMoCSxg^#kl~h7a^@drL{>t+8helw^;+*`86i{!OKo&cV!K1X~2_d;il;pegpif +Pd^DVd12*fzg<d&U6n@DFDwj$*jeKKQcxm)L4ZCr~)X-e|-PUDuMEps$3S@r`So?;jch{MqmWBox>Lx +Zv`P)Y9A)`3QcmklM1wr%LT3~vOAXQ^?3Kvx>M6qyGsV#-9Gix<k8n2=IVHmbAE0aIASYw^sCp;h1%L +ZbzhW^_{JAqec2+L!>Z&!qA!szY(!vQ?5+co_=K@sKE)kpjm)7<U!A_F%QR3hyR?2mT6{!Qxl{(z}HI +WQD)`F5LMTv9}>0MKGC%_prEv$^0IE@#mNIiFkio2Ht7~ivawa<;?dkUGV4A+3lr2{|pz%Jzs<{^YJD +jbht2LEuilq-<1Wr@q+0!E>14|nIGP}aOH<{LcT)i2`nc;=udBFlK_^t!E&+kP?bx|J73KG`Bi`ty&G +>Hj!^?#1MgS-0julDY-YsT8%VlN7t8y=|9l<7^<sAE;o^m7!DjyCV&+w1(b(y1;@`M%Ik}m9_6+X=u> +wP8HNCs`%o0kS;QuuA7jp}S9-A)aVStM+S|5ZBz@5MHT$lv@iX3$nEKmqJ8#xvR3i;+<8;g#kdum8Xz +i(IGL9a`1GDE}_L9~g-Rpz7Yi}heG3RW$cdKF>%&{2eWD$npH<}5CD<#{M~Y<MU*v^kFKCSurcZ5YfZ +Oj?{{PAl2g;6W)_#$V5!(iGiMRYWjRkDOt{hn05Bi%blhu*v0BvTtSdGx(Eo+=Gl^uPax@&n&XSvD#Y +BswOQb;WhG-H-@LU_L#Ve_jvCyn&usZ2EtaRNMZA`WytIl+5w&c)qCm{;JjKJ0=8cai@i|%HL85#yn( +@nfQoq2-3+?;E<DFlo&VnO(I3`Z#hkN)U)=6?naBEll0VvBOe8NgDbUvE!LjSMeK7iFM=n3>$UJ!Pq4 +N9}#H`W32ipoMR^pE?P6I>U`u9Qc2ga!ZZ0p=LtK3PJ^EKfdTTDJPTU`}!sXn52pgz$5>&(Yi{Jq0}9 +49R;-#M2is6TMzA-2h#jgDW{<dm3iJ-pL04<}_CR1$H>IoN4M)_j}2uvt~D+=C69Z~H{-5U~MeMM5=` +7g*9w)kO_x@=5I2L%mzoMmD2J-Sk;sVr@23y0%p6oyc9&7I3R;HCf9j+wdgY6fJ+~z*7IrURko!@jAz +=?u@n$O$WTB4+}<LM<f1N2+2lvjit`fl^>04f@x(-iZ1N1^x#O7X6PDpFi^uTsM0C6cITZzX@Iu7&6t +Fhc`<y$#H9R)$qRx-(Bc|)s?2MvSh3e6()*HC-=5>#F0ETJP%xINR^{s2)U9jSjJ@48B>+Q(PM%Wz8> +)JY<2XsnL8}%W45+_R0JZh$Mo~2jkL6Zl%Re|()ZQdnQjC;(?`n-pQNB~^zBQe8lkwN`$~P+Xwtjx2T +HQo(GUZfrxak!l^TyGct<6gHwR%5@6w?~xPMsS?nxV6LB#A2qFs}xf7Yq{4A`-^{fi1~S(e++>OTbPB +HbOip+ijhdv5dDE?-CC3&#)msLO?C-2nXG<{}`pw{0u@G1$7Gqb4wx_j&@dEUbMMWoX(D|J%dGAO$x| +c(io1PRfA=x^~#Kp(j@-Ju+ByDL~3Tc!c2R1R(|1_(d4c;l|5TY@9-=E_Dz90IMp4kF{+OAd>c^51n2 +PkANCcada7`13z{!=5BS03j6pExhjhoUL7fOX32rZ`dE9yPo?)JEFoq8{;E!>;eATKS?g8aw)TD|i>i +%kyC=)VjNB5CGh93#(2rwnJ641tb|Aq`Zcgs8+c06NN{)M|$R2=^em#b0z^yR|7iY9WS?f>uA|H9p>q +WeF0x9n|s_l696{{&D=0|XQR000O8^Hj4?m%HiS(E|Vgp9uf}8UO$QaA|NaUv_0~WN&gWaAj~cF*h%5 +WprUKaCv=JO{?2D6y5t*h`?YO977jFp^!y8eYAyPc#GMUA{6^3QJ*cjlAPDH%zvMI_2JlgX|s_f-H)S +l&y}*-Y~D?(@7MrdcG63BFqTO+TJsfJ&nBnzkv%><vOizFW+!8wTvKc|n?envv7SkL9Hn)T=e;=|(IZ +cd%U|v^dDZ9HVbZNPrguf*?d46u@RzpY(5rnjLz0eG1<eci-oohFr(pG9t+DsL#a-`fwu3bT`=Q2z>L +EKnN`Lxgg6uG^tc$SRfIja7jcG4%`k>Fs8a;sa$?Vz6aRlq;5HKRGACc9+WZ#3W*|$l77jD{P0a|cQ* +hy=!$-h%Ju$KKj3?r`9Y<R*!j5VXd8<7r{+*Z)evRB9p2zPPlUt`H+H&0qKjMArRQD8aQE*G^qg8v&o +!EzzA96*SwD2fgaOpF#H#XM-FX2=Ml0q3hopM`G@Lq!E)Ab|^$vfu;?P6UMF`2^7OpZ`_C1G6?t9}F) +)7|-GvveO&(hb!w46d{l`=4(bZ3Z<P#E_vKq$N3cZpkv(y@vAmP?O+7mfo>JJGR1pV{*?LU6^Y1q@g( +b*|Jn<6h&L(LEIXwmM&DJl8`Xq}n~5OWq=i|mFUas+%`zeMb7rzF`5Sab0XAQa(!nanUf70~YX)-$9{ +uXI8<pp}w3jXf;B%xZmp33vF$5B_E1NP_clVFc7&hu9Oj5n$3Ia_Zc&jXgwulw+QmorkU2S46icxmT` +7-(>(T8Kil^bpIIK;g`IHtJmIex=!%ojaBm*M2wy=<RQA?266K?>$&THX@mglVasSmGDG%zx42)m2`> +{q_!tDny-M?d}ObBhRf;eyLXWziZWHxrKCejqor5y9;B&__8_7<cYW|wB#0wvrD^IAQt>&_04U?XR`= +{^unz%`3j+DhsF=;3>x34)C=f=FO{(u7LA!X&;y3Gkw>VDMLMbPye`dqRFqYF>=mP#+0(OkJ>=ZZvAe +^4>QB<=_{|C#<zJ{6zK>FOlS3K;vUOvuuG)n`Vh%0lR}#ZnuVf#KQ7@FbBfq)-mU<@yBzGM6y@FQNlA +8QNHe|nKgi{=<NO<N6RetiDxAr)ZFdxGXuaZe4JIs~#Vt18Sz-6q+3HoujdAlfHYqXb2(`7nd(%+B9o +1x#-#qUCIw<w!!h>R1nivJ$Pr?d=}#rydAq}mf*)lQxP%LtKcha~i9L~CZDs*pHJaX@4|$q@6?J(3WG +fiO9~C?BVVW_h86g@wQsKAPzfWxE|Kg`gZllrc$6So{xAO9KQH000080P|F{Q1x@egd7Y203Rv<03HA +U0B~t=FJE?LZe(wAFK}gWH8D3YcXDBHaAk6HE^v9}8ryE$IQHFN!A%}4FH~V#pi>}#7u!n)4R)pt+I0 +I61Og+`HXE7Lh?HGp(0|`^NJ=CnIZZEEV6g@g%e<WXjfdjfS~i;KO~Yu(#d@}C<dzgtX!coG{FZRLz> +RFFpljC5+^AG`y;NCE^`=`~@<z}tO9{PIIG&PEk_$o=sqvxPtv0RZm4%?%+q#hjQ>w?fVZ~iu(5gz^v +ut(U>Xf{{diD0hRS)Ihh|p|XuXx2e0Nc9~hh}y*^PFsfrrB(!o5R_Rz{gG4FW@<An38P+#30H2kC|Cq +vK7g>$dTGy6%DU-jyxs{3k*LE(`_UCP9vNohjqmrh%e7mGVfpj$60-tFJ|m>!D>w|3>D{1BO43wp99f +9l!yaoRcQsDIE5rmA3zEUD$f^-DN1IuAx^}HvIICC3SE+AC*ovbhdP0J^tv<yD=t8f!K_t%)@*gdSfW +crT2vIY{{m#hMEOC`9px3htypqyB*Ud}s83E#KJuy}w~REDD^?N?<ZT$awR=fHg^(KOtxj=;Fe^4v-j +R-3fa9eJQs6qz6UC}k3arqAA-F)GIFt1gz<vKbB>qC|XvNEKC!B-z+r9S@=T_&|$GTtE(YC-CsBB1fx +CJN=e@-tn?!1hE#|s@IGy?n73*j}$_z$iWM3V<dKnk+8i;Z&b)e0^!G>7c9HEWUpXKLtMWc^;hE9Rgd +2Oj$8o{J9xAY0>k3m7OeF~!aw^bl}!3qM+3mANXp(j)bXk{47%T+tf}vl=aRu79c_A`JMWZKZP`RP&} +40_0R|ONgfXa`{FIupMymhUQG{cq4@w^Nd{q;SLa}SZ^fgYDF*}qppyxeM4&yO%S_#P5>m(1!=*-&I( +x{T$li%M0h=8Fp#x%2@*=86$=}BeMaznz+Z~{mhiW5?El$v_Jhnne=y5rzrmb?#scx)*s;x1{|#AKOw +-Z;KhPy>nx##bop6L~wmAitHV_h<p>hnvDI}~vTc*I`y&&Gea)?KY5sHBo_Ym3}G=_!D5_As!(lBe-D +5)M+v=}3ts#(ET9A+T9Qdn4lbM2U!PYo<Yg~_wpp{qz(RLR14AZZ2gWDu-jk06$Qg7iB=-r3|!1y&!j +YBeJ})+pR8R|C>4{f^a6A+DIoxB>vlP$u{>&QAVKtCpEWot)qXMYgRnS*K&^#3>8l<c`o~55CLAfd&@ ++YEPoyfSNNqx&f2gJ?v0_7SbvC2q}+(Y(a=EkPNlYRthlG75_|DvLTlTuyR43WY1h(#BX`U^&ungCD} +6vMf65cP-TG8o#Z7ZQpnF+1w0pY1fQdJiw%X~q+Q)|3dVq8(%@>i0@P=Z5;JA&awH@iMVtYf3%~rBl= +>ZBAVcMblqS~!@^k?DW<mb845@p#8E~O^$wCwD48j$N5s7`~xn%Xz$ImdMy@bdEaZBEQVucQaQx}G4B +f%j+%nk?CXRuN>2h<TzfVoJMJqO35<nsKI0N~Caox3>mgPr7zV9Yme3fs|BhG0{34xo^sAk5VV&_7a^ +X}PVe8`<R7dAtQ^#`-9L-k+MI0MPG9N(q+ey<8^&hjodA8^o1qh?9_PG5{FQO=QOk)1_mvlXoUJPo_3 +2E<`-HAm%9=6in|x%Mf>s+SzB|&qlzNtSY$&NqLKbKn;i?oMCYQ(MahA=JAYy$%6^q<ry?jjDqH`S+` +r5!%)~mGAZISD<HfX-uJRaA*1>fdKf5>W$TR00}g!toM)b-y(P(#GNxoNn>&0CObdnOY&@c;MZ_3YjO +lp1<fUu?Xe~vlI?L+B7TBMsDN1;TI;fifC+Gx8aT6#LvV$;UREWi!fxbh3R1sm2qKi%MmWt^KDxEYTO +~eTys>vd#ra+5FdS2r3$SVd@fnD3WB$~FC7EA<L2#n9!GDKQjaW=6PBID6&a28jTK_pm`L3V<{LG>Ja +`ZDG*q%q|1>?rR5;X0bc&#+dBsZ2?|Fp8}4bT@fY!OzWi9&pC;g5{y$jvdU$g{Lj$?T<i#CX_oM#6hu +^$?(_;mR%i)gyN;)W#^7vMedRKbY$RXA$T8B8-_*b5yl?Qc(*V*>f^^8_xq92dH;UkNS*Jltf6?vtOx +-|<sgpSn$~{9Smi_sLR;~54xWs0N`=L{<NTt;7`8eP*K<+CfwU3IfJB*6V&HmLu;rr)f^^Ahun;DSLs +z=mT2!Sb#KufspBQ-LA4~E}_T=eFN=|^vw$@Ts>g2}bx!Qo&mJ$fVRs|PD)t0Oy(uR9qD1&`Zr84|nX +je@rSKBHykHN78p+Z~)s9;eTDNEZ4!KPerlJ>c7%7$FgV%3PybA*x1@6#9L$iE`_%m=EQpAD7SFaNUe +HUSm_1tZJhR7T-UL`QZpj?AQA8<#I5!-*qqPBCleEBM0Lu)J#8foWY@TEIg7p5ZC~5f>|o*&a_Orq=2 +(yEFre?sPY{GgOahLb$_;V0+L}(J-owts>N5+lA{WL^TyihzsmiTCExy3|iYE;#dOOrVFZ#1>sp><_| +LU1s)J}8g(tYy;R-V!onhVp5vv5wTcN*y-Z9VFAN{1L5qb$(uxYx?Lf|u!+Jo!(Mqw!w;AEr3}kGGWA +gx8?9$$Na*=+c9S_zI_=WX@k#y4VzhdKN;@b>-%-Tfwd=aX+)83ERF|Sx?#R8%{#C}?(7Ot@|RHxZH4 +;9x(s=y|_ZM>Fy1{pH7tv0Z)Jst!gpK#eKB)}Lvxjpnd9%3q;DJx`XEU?g6vFJ@*N!w#}=Po0>-t}b7 +t^W*^Hf`v@&m>}#F2>c~#M<S3*8Ek6y4QCG90ZOtnE6q!nRL>Lz&`0aM-r21&HfJ*625N0YU0VS|5w$ +6QPR(<9>#h%&tHq1lOa*qy+1!D8kM48R2T!T9Qs_`%l*6MeXn>2VhQ|uF!KX`9V#XuY;ePqlDj=^)+* +4!DS0dUh9w;S4rt1~`F;?*kl+LM_)ijh=0}lY^P$iSumaPU3E+i|1m8FDZ4yuzvn>nP_UgJM7D+}vhR +|RQWFk#A42r|s13(9YaCK{L1)jfud2vCK!969B0!_k#4}eu5H`YL8DEXR$H)BT1Q<9m7Gv8KKHd%E^# +<XCttsa1KBI7oYaZHv<LfjCKEJ@}B3KGCH4ANNRm0Txg5)nnk!E}Iw+U%74hEXuOgWMZB@M1m#??y9+ +M~z|03dHY*B!{b9e?G^e@%on=vV?FqXcY{)4dWI>W}vfVZkU?;1jnG5{8nH`I#EmV*ZlJQ^6BGe`HK% +1zrV^~Jb(GG^Ea=++@tMZW)X+Ow!^($5Z9nqthW9A(e6dG`@s^NKo$P%#CKF_$s$G^N#?p2ixo(I`TX +kj{ASo+=>gaiO7}tm8mum3a!nxMq6VKusoP)xa<&g&qP6zsBHK4yv;32iBJsOZ_XdQ9B5iI)GF&kq1h +DakW2V;2CyQCM@RYo3gI5U#p*Ze3B9qf^X&}dTV63DgZIWb?-fPsC?Ob9P6z}|+#6n&~(Nvc=(;VZq; +jpnbxiG#ijed>R4}@mU!plxi_@<FnQ=l4mXKHmbGI0ceW|_=ee=R>>jD=^fWG3(KJ&gXk91`ICUTi{k +E`1!?#0x9mgQ{~B_x{IM@pbQ*OzJ9pzhgNLZ_^5nTG6AhGrh;X`>`DJ!SF`Ray?-lN5x=F*1ZsNTn6D +QCKIoBn1#0fLCDv0`y&U5&2Rd9w%_G?&6<z)rYGs&fXlATlfP~=-|t|k<5t<?kCK|#%w1O7$_N94y~l +F5)`)>X3};xbKt`P_Gl=!TR+eqmrBX!WtD^W75DNvq;h<XuA{kPgMf(Qr`jWD($za&e8Z`bLnM;RhFo +{@k4!`}zQ&+~?ldqQpEr$SBWsbvX|I5T_m+4?*GN9DLu=A@@!jUNn;Vg!?7MeCX32I7AT|!zJj9$r$X +mD+OfS`F{-}mUDz$r@ZSdJAt7cAMT^%xioUY|XBd}Ge)Y7Hs0R2cN}f*yB44quq^17|&f5YLCy;YkvA +U_J?iFx5XdlqYUcL?ixNgvGUAdi1?8t8x5Fyte)7*?#~~O9KQH000080P|F{P(9;w0mO3v0QIH;03`q +b0B~t=FJE?LZe(wAFK}yTUvg!0Z*_8GWpgiIUukY>bYEXCaCy|d>v|hUk|6q@Pf<;d4*(e~Np^duS6; +eDEvdV;V@q5~wx@^Y0!5%eRuim(QGh7e<3~H+d8G3SC$5>1Sy>=u_v|-^U$;e8Wkud1BjX-N*{qpY_2 +rXnyICCn;o$J_@ZhwVT^E;Swl3RdyPlQV)6<s+$BCbVgQvbx)n-MuY%Z%=vCJ0LvINNWrl{(2p50cPt +Ez_gD+WEznze6z&~7j0)w-N*n)NQ*T$SsxS>##v?yA%eg0W=fhZQt#{lmJrDcgfhlU)_>ON3CZ;mgex +{AUgA+7kXPHZqWGI(;~uj<W}Kvw4u+Ucrm^<r=?&0pW1yOZf)IS+y{h=S>F9vu#^uO`B7TW>rFis;S! +ydcG;@YPDSgFgL6N8di2u!urBU+7<>-)zB8Zf_dZz2fb5-)tr}Yb&0D7U)(n9YaV>vtZ!t2+g-aUZ}j +_ie2|xym;7d&74<yZ*7yz}_!lshmz!)>z-BC4flE8HtZph=p<+iJ9ppb%EB=OHQRlO5yJ>E+(-)`N=Z +`*v<tpao8m13xn6=y0s#$Mna?|N$xtYw1O)(rzrw2FX=Bk<Jgj@%UH9(k57Te8sT}~!hbwi&O7j3iLZ +psP&eQ+SpVUqf5<9@3e{cTg-l=}PH{kGYyO4k_XfzvR5N*D6rwpiD&L#}<hDcrlowg#+hmhR>1`f|Ie +mTpLd1I^mK1_W5Z4(Z>sX1N4ZMI`Y}s&=!iF7)s6rl^*HQR}vJV9NEn_ERixf(dNO51ZR{v2u&CDc8X +mtGdPWp?}sJL|4~+(^eno0d0iLM|T0Yjemu~9BkIRCkGk)$Xk4MP=1(|t4;Qj9=%wvn>DvN%1(E%&2{ +#9{u#{s2KuNjs%5p=SrG6~R<sPs!~Zi(@5KjLmzDr(AFts2m>!~5*-7^LEw`7sRI7aQzO3hXXk{;}51 +n^8Jj`#J_kh^aYP(*-hK%71uf~Y-H2EVqB`d^H#ArD7a0)MWc#5+Y&cj9X0dR(4Hy#k7qnlRr_U0O>+ +!)Xl>B1OJ=d!A=sp0o;UcP%VdHe0@>FYP|U|#Rm+j7rB*Klyxu<d&0#@TA!Tof0}9RP(Bnf>MIizM7X +!=Wz^;!y(<*SIN7JHcP|HB&j=x0c4<0`_jYh{6BB8s;~}3@CjGbi8Q&<B5ALGbm=W5>~R<Y}VBUoO)b +cI5&8W$V$>Y=H;^3A=Q)xEN53hX4{)KH@ye&^T`BPcQWZ+zQjkcGOwCi7be&4R=dw1Ga~omSFu{by0p +FTnKmP)OypcmCc}Y6M%N;TOQ;1xF&N#WEgtY{QNb7YYQ8Ri+`<KWQ`VdNeQ;B(uNn9Ov<CWJ%$9)qK( +0@SxWeOVkqti|XOBkN|3D(G!=F_3qJc;F?u!vG`MRj!0KM7Pcsyt;hKG(=e1W_G-kW&SW-`+G;fQ*`q +k8(c&lK_BT{QscVhcwUE-l_+x_}EfrcDj_KQ9-=almWsfxbO0*Edy*160~UJC3hjHJhi;mHi0b0u7j# +FmV9hHaBH<xr9@;l>6?sS}x&kcRlhHHVu5#0_kfPJ7y{1#)p;34`gNv8*g4%=}B8|^ieUNPYSp!-V;| +b!F!?v^wihNAGDKpvo4DpeLh>3MZH~3-23>037}}_SqKA0F@bAkUC>=Mp_3nfK_nmr2iY5WjCaulux! +1XtQwekcPu!o6db(a@Z@%0ltl6MG0df9nt|hll_v&7UlPLwSX@qkPRy6-SIRHBT|OY(My}@fzkl>Sa| +1)cR{2v985tP-_giG;Zm)oB61PgcZw>!#w<R-5MJC4qk=q?sVj+>DEO)qO#AXq40zU;^=dO=~1Hh_`c +!G%l8ork?IND1mtArb>&N@US|IU3yZG{+i+r6yc7t3lc&F=yD>+-Ug?F@Jz5XdpXKnq&#pMR0zPvq?I +>mj^G$^m@$gX>$FiyWxoDBrH;*a+Ux3j<PL&8yiaM>>05?pkO#&IICUq#aIxec=x$L+OG3<WW(F@T=> +T?`YVdYk-9m!}bc8eA6lv2kGqk93h+yCM~i`gY47n{rT_`9y2sqHfrle)%sD<zdHH7W1*JaQBc>dbZy +29BRC(zw>T7l&_5a)H?AdY$WrMuw}S`ytXb`bZb7LhY7C1GLL2Z%b_UHwj>Kmz!-qd*ueedrWpnZOva +i!{<AToRv%c;Vi%STJJ=SozVTl=z{IM)<F6Kq{pjcnFPxSa>Z}@?5Q{{Z3Z2Zul`!_sXkYiiN<quk58 +9!7v+Z)I5g4nAk<$yj#dW9S|;4%C+$9_C?k>=puT9?>$OIOBCRTE4B#B*I_-xM=oc(Z?#>!;Z+=Xn3< +jfpJO1CUQ2z+s1bqosQh_`>;i1}`sm(P*;lPumSizu7Git)kvAL7QEbGrX8W79J@az`w4WTO1<6aulv +Jw36=Q2kUK(wDSRq@(swFOZa%(qNv*}oYYF62#o^fa#n3<HTbS9vbwwlx|!%|jNROTJj#M>FtXWp4NU +gNeunG%`mOBA%LVV_tf}YKhFZ+vo0bk>QSY(_$-3L-n54t$tTrt{a!vRe1i704lh}w&+bi8B+LSr$1h +Br%8dWaKohSGT3rPZC2y!?U3+X*x*1)nhtq|Y0)FrTLo7vS6+j2ADnr?8r@UB4wC+Qs-G&k0hlk9L_t +Z%FO&=Z#6S~0^JP?sN$KWX8AgY1)RILHV2-{Eo}PWTnwP{YyLlh4jaAVcMs>t?$eem)vGaB};6S1h+y +p3|Qr8mn$>I0(3yEw#Ww5laf#M9k=!aE5;>+G^%iC@NpT)GfpCkXVz9SQC6P11V5sl7ZmdU<|)*>q$F +XSE~*FMMrksysv=O(7!Fv!I%M{HpKEi+Lj-IY#Ba4K3PBQuub|RVzX#)AqN*cQYNbNxo}-UV`i*^N5t +a6$Fis|>i5;UsZnewmZZ*GH%o@Bce`V&5RTz#@y{N9RtJa7Td<HcmINn?k2_4RLZRI#7sYnDnan_-EB +)|K*A>VyJCwziB>T`fGUE11Myr9DB6jmV&)_Xj;Ei<lO;H1>asz)JY(6$~(iQ&s0{8KhF~F^)6IB=lL +S7O8IuH1noa$#yy#O*ukZeaFrTn=8saOZ`ZH*+aet}Cxy}C6Mh}!k{s@|f{0w&ii6|fLU^p$Y&(GlJr +FAN})x@63j1|sEHpQ;Rt8(AzEJ=`DerQbPslj0V;E7UzE$h)cpVhD0n$q0ff2tcu!pbP_}4oY2&O=FG +%94}^aCoI+ClM)_mk!#RLx)4UM8ciFnR8&|xMKyxq>%01?6g*WZcH^?c6?{?7%X(HG;voVyrQRs|{pB +x{=P%#BLtuY;`ReJLzqvo(zW(;jvls5qXMcV1>|bAh`_4Uh{^GkAU%x(;zqRMXQ=wFc83~>XIGS)Pg- +1Zt!|U=A$4QSKE}Q0hyF%Tw4DIDNAoZgP_ten7mwF`ZL)6P@W8IHaSP%aUCVF`p{CTt5>@18D9~d&rP ++o19OWO*d*gv21xwnu0y;_|{KzN!!U|CvZf+vqU0%P!&_1hB^GCa}x092?eOe$?x<!SHvyS~&VY@e5i +8MOSJ1F7%I`NIq7;<i}NBaRH!9Wp_<u5OBoPTkY@MYSy83_TAC>%qB`b0gX_bhODcyH77#q9)lz(U!y +&&C3<CFZFCkmn?sedg^A~lEjK%vbY1R>>9c8a=93F1WJ4gT)SwKoVE^x8T^bs%8@xAx#321aTpChlFX +l?VFT{P`R=&FleSy}%cYFlOklLk(IHQWWUOpAzLBtqZyn<X%=o6FLq7MPdDy{G$5RzRC0OQuFd{zwGC +|$`k|or`pK0=VA^w8=o9_aEXZ#Z2{t{@(7|g%GxmlHK(X`_(Ae4POfJ=P#=)CW9fPd%LkIxTGd&K&^T +dp(Bk**h;;e!WcYy-w|<l*4@PLR(4N>0$mZmN@uodK=ejXy6Jwh^<w^)V5Yv5ujzvH${RNd@&b4$d>~ +cUvqYl*^Od0-ud+tLZxAYR&B3b6hysYPX1h_Co_;Jc`$@cTB?v;VJ2F82ufem-u|~!XW>=+Mq=j<QX7 +6XbZh5fv$}Szfoz)LX|M*o)_Tny-?bFSoR!+c>VpmPqP7tvi>ya%Kb9fgUZ_IPL%%46Uh|o)lYh!8ai +S*T9B(*5L@8)$+->>(FQ#5=X<aRLUtIS7~>=o9YYg3>$4_>@h^v?-*Vdb(hBb7-V|dG3>;|;M-EyzrQ +}%~Ahs1NR3p%>I*7-DHzdohA+*syo|H{+D*LZN>B=8s%hUHGTX5sdo3gD38+LpsfY~G-I9rqjnl2Aj^ +>JCfFKcp>VD+-&v?jnH0ykTgs=7V>+vJ<4|MT@56#akxCI9)CftzM*<ry6)`wEReKQR0&{QcR1VPN6! +#|Hri3r`*$SQZu@96uIiT#5l3n%~LZX@|eFdOH3#o5pRX?51&Dy02N`Gc}N>yn(?Z(tW`i;vcBa=e>f +3Eu167bb8awx62av8ToQDoifLWr!z4W@|JOGBBYsPbrC7D2Mp~&#@f%Z(SVSlVLI*b;nOM2g@~_=C7| +<(4L>uJM6Gr_NTV6mS3?H<dJQa1M>Prq>kLZ<#U46y85u63xiWN!aL%ii?h25UY)@m$L3PiP(K_VF;s +=8?eGQSe*monOY6vLMeaRS4NN2`>v}fkCb5T~3O6y<CU8K-5wpH8LM}p_AVQnB9$psdWFOOkB%uv4<s +QO99nShwJf+H|YZ2DM0j|8IAwp(2uD^gC*&SkNM0`p@(Rb{D8oEj9({|I8}mKJ|Ns)p+y#TY_|Z;II| +>bfm~cc6gk3}QVboM)s)58skp{_yMSVqL6v51%#b@@=_(Ux6qk?}Ty4>6<|S209U!hMW~&Luxb%JCl} +IMN6x$zB(in7V}dAoA|_ylbP3gLu<m{=I%@BG5IxgIyfa|{YEA+Ks|E+G~I8!6Xt`n7^Galgr~HbIoy +^Y*9}$pA>|5cct;^xQDb5P0&FSPv#X)FQG{llp9iPSZMi;uHh7W^R;wA_y!2!O+mB9g?Ulay1&tyK1) +XphoFPB4I{Yr9jOeWp+4SkL7-44tch&NG{M*0%TlS1?2Fo2o6Pn+mMH)D;>2$9h2i*x#N~_qCQJ3YsW +tV{~z<R!BzOL%+2f7Ya(;ZT1av=etfI@0@X&thhQ`rIInKKha1_Jb#=+X02zj%i6Wey}3&L0X}Lsjov +tnQcsJbHyH|DciV8#ID*wncgmRN(jL$mJ{xAn1qL;W#^-9EM*Bx*V#NVV-|7KmMdWL_<UOWY!zSRKUg +2IC$_F9(2A)B5K&|Bg_=Iz_6)kR6&ND&0A=s0(lcRl@~i>{h^qG$V~+4Uj%D&wQjbTSDCnjiV8bY)P; +mFZ42p|gkTHSWscgSYFQ4~y0*g~=AVv!$myTsVg6tQTfrmV`!zQSzK(z#(E*CoR0kG8lV&YB;3>85P% +f^ym;e2te^#I-XI?tqLfNbN)Z61=b24JA;I)GAum5-;iWz39HtTJPn_E_)-LJxfk9RDdZ|Tg9k!+j*x +mf0&ioBweA1dm|q8ifxwlHq%>cb9bLD`110LG$o!a<N3&oeT?GuQ6q#J%@;dz6($3qvT{GG?2|$56D5 +&VEZ&5^X(&T1WsUzTIPbbUUO&=TH0~aEN!n&{>QQ%+QGj6Qhh@i>CFDv0Nz7<Fl$%T+uS#6}lYM22CD +i*+mHt%Loo|mD?4$*Jh9M|CVP@;W$U%6$|qGqDzP@i+JWEFz7f=d~kWotMEbmy9=)ivFr7mNy$l;IH8 +?2vmXoU@b_JgVeV-;5>MY$%(jn5UH*i|>%Tkvq|Jpw^G>@@$64^;vji*{-rO*I|4fG==-?~p;qjyV^F +ze$A9`6H3*`^JP=0@yW}5672sa8n<tq}YWt-4Dk$j$HD^k~&_|<wS1-lLJJQHzK{Jrsx3^HE2Fj4*ru +v#$MEo=6>lPp^4^xA|Ue%}4?^HEZ7(iy&RKaSo2ZQ${<e-ExM(L$v?K#PJIC~5_`kbOnZV-&g1h!P|V +sclS7z1c7%Wa@@-*<|RhchK#K)eg?=KSXYCf-uGzKOsAXzk|MR&^8ll>Zb0aDVx`}<R_9%4TPzHQ$k< +2A_<}g)B<&^u(|nSB7R}qhP@)|_H3Z$lEJxr9r#~`E$|cg)hcNHv`{|F&3w%e#{dVJ@1yueS8skbHzA +|oAQ*1lE(-P7)f6}nonQf3+rdsaR^%riN}_yeRRIDSldCYdB8^6C5Npm7q_xA4xtd4U3o)&A5MY5?B! +GjLQU{h*+F2C_c}Bm3@rqmY3kq#2)%G3?f_M-M2pDSLvmi7+kj;o4Qe-G}^2S++(6TdAMpEl0(=4(ne +Zm?h!tyC`BQ$p7U$46(BT3^z-Wio0k3l2nHe-i<LK=^*{8t7;hL3oxJZ{IkEw*rZb3<ryzu|^MA%NXc +qBis%tBYgs-XRv>Wu%|-`qO}w^ZeLh(paK3WtC;eqW{EctFMZdy!<I-%Zy#d|GX*rMi9;iWbEMNN~E9 +F^a-#(2F76=<(_Wdbv`#9UC0M|Dv$)pP9h1we?u3NeV|Fl)GSDnyI2<WHT?#3kLVA9b+^&iWicnY4~@ +NW2$tl_eN}DPB>*o^9Or5Uosm#q!bMLo*zJO$2`~vrJep2%7=)zN8ph%WGP^3!6c5)M1v%VQ8z2vPum +*1a<iC}e|I0S9HL#w}ndOgJHe6QM7`dlfGKMvpPDkm!#HB3J+t;#~t|N|v6#Vd!o~B0y*6FVIj#3Ydu +<I8e${B?dx!Lkp+Bv%TE~|3xzt7OU8F08*@7OdVXC>BT4?CyFnE%|}Mf!KS7FzW}1Q9=u@oYOd-0|TX +-mur%*nKqVF15Q*NrVl8LIJOcvIJjGJx?_i_*3?xy(lBgf;hb~0ZI>*JrF-`pr{Q+{}dYRF=2qEga5g +s#lVh_8m(v&g}&jhh()4aB_q&3c*IDE72<Hu2xE$zAi?@|NP<IO&wX74M8gxyUqduvKh%BQD)k71yFZ +S4$RYOLoW@e`LvqQ6hyJM{Bj2Lph!m-KhK9tAw$)9wEY@^Sgj1VL&_PHHy<_4os<O3wiuC*pFdrzBSg +Xi|f^G-BdZ;(~JR6EW@I=QkvaTm&J=Uft+1Yvb&2EBWGCuIdy}Y0|i5D}m(FjB<&S_Vob_yjnKMozM{ +}zul^II6M#|^`;**jn^9O01utBwk^i5xrbmz#BnHwD^whqGlHF0%XmbdB-*d=YSCyYgv|o?D#6Y-ttS +9aXqQucQ3qW7j9@4cks8u{OCAf2u!6l;3~^DY!5$LG~kKK8X*66BvkKJ!?{O@@;Fyc6L#<qC30f;6lJ +U_Rs3JRbPmqol93W9y;bEMR!=hTy_Z;D{vH!pvUsP&Su}vcVR+@q<CV%HjNH{!f)XmcTQhnSBkU-Ifz +^oUEMl_PNU0FMu@#39<JGLREOWH2co4T=BtZcMg|xS0mOTOyw$Rxp~J?rbL$rNBR=lBU=Q5_1cE9yrp +;}e<$JtPeuT9$KJP=Lq9Zp?M7)Zn$hLzca85<kwW_Z9oKTg*Yhg-C57eF&PCuXs`ZnxH2+ocLX~c>=N +jm(X62wC`h$5Pr)sA!-$cS|Yqz}%Xoby^qUwycVsOY=&L_hLQe2S~WG#z93u<PkmVWT+#4fQNV?7FuP +#@H*c>9iXt!BZWRLJTfFB+T2EL%^_cWaCswvt|v5uxhwtF+90zXE#>&)g2KGm?X#<&_BJzJ{+K8d0W8 +c!nR}XHk@3E-bScWVHZm|4lC&0`M~1O@SQ5@%UOXM^66B!112>qLcx;MsOYy3#H=AQS9oP?Q_o5_fnY +T10u{jaoPp{Fc}||-p<yTZCLblKKy>5gKv{$i=qB0oYj19~y$jmf6QalPj-5|mrJ{(ChNR#O{L*AiTg +S5)9i7bXofyPK*(2)U1g}J+MI|R(VaUYWm9egF%yp2VA3x9Gj}dC_SzD!JBkvvO_8SiA&xqGW*g4rj5 +SJ|tM{}QH!ztF!$7uJ>A@l{8*{}&Wnox^ajVgl%PcQv-Q<f6Csrvo+Qo-<V7lcWt8b`@Nm}6Y&`;JjY +Mwnjt8=W`@PH2RKadywC9myE*Il94_c914-o+sC=Za#L+RB`1w$X1rl_F*waRH`wi0Bk}O%Zl>Jh@u< +mq1+bmQOswdsQ_;&q8g|k3)vP@W5!<7e1_K6b1P7=D#~^u_XK~90xls7us$l#vXTrex2Eb_9ez(E*%C +HLG_}H#k28vrLR!1Da7k`*>RV!XjA=5wcZAFu7HQ0Om0MgO%B}%DwQf`n%teDbEa`;&9eHeci_owDJB +GqkcxC?@RVZnEkd+P{KxkGWFK#Gh;AXEc9iu@sC#A{F={|{FSx||OmyI#Avk~TmLFUe|f<L3Qw#r5?v +?()^%sORC5>*I)>#a%qEJ^rtA8Qh|>$NB`l)$RQkNPZ2_+x#k)f=F_+rp%a1`;$LqK>PyJ0~HU;@Y5g +biQRjZ$}eT80?P>3R{GXjCp#e$saW;aAy+RgE<!lp*((D8pi<QjFf-6Q>tvsvJS;<zB7R-6ueEdx5Pd +{BcW>%pV4K7k7y{xn&JeCj6C)@B}u0#asXAmH3n847ODoiot@!8&Xb;!_<<W?nQ%DJB{+kY=i~>TYQZ +~WE&ysCaNLGj5$5KEDIc&h<$801JPRH;@-{nRwx`3A3qvCr^&FW4X|tJCCPN_eydlALd~mj{-JL$h`` +-zEf)l_jVnhJqEAyY+t;dhon7pVG5tJN9VB0oiAu!zpcvhm7dtp(|VAy8RhCJ_(neW?zJQ*See3TpM! +f|*+;QLUUv2h?75*!!eayQUENhpH$#vutIVN+Hf7kyhVQ9C}>EyE3*222R`NJAQvoa9wh8X;g~@_<?2 +ULcvdC{Yub8T|qNXuhTyg(CIFbTKxCcudy^znC-<J0ffC_-vhp{5$F>(02XmGgQY>ABr`ug(&epPRPI +}pY8uD=q>!(#kJ8q9DkKt(!gi5;~sfgBZqZW!H&so-=wrw2L^Nff!9vXWieu|FE^y7O95$uB2YOA<1P +@Nbzywg4}^n%2puPNd22Nxs^dl-OK|a%ZU%AWy(d-_3%BOKJH$|yeWIbNaQ>K<jWdeuNokfzV~&hpcu +}GkG9PBRlrg;tF!4(eyGTHo+5uXtMey94E@1Y+=!1|=<ZNoZ5|F|%^UBJC_tUXmceS{UO)eBNgcvOpN ++IGdf%!>2BSnRa{yE85{_}L|#tv$!c2TfSUm>}6(9A@EmX*v$(&><#O{l2+YB1CpxEBTQ%a8}ef +jSEu2qVmsZExMt~c5q+fjAhka9P4yyJwR~r*G5&ul9!?H--bjsz$+rSV-|qWx*kV@y8L=(KmE`n?KE- +w9Hc0Ix5Plv5@=Rl)<6MdVnAUAUL%cruttemBN5<|RM~^}0CC1|3mMtfmRq@Ge14#^FMuY^h0`Eu_fc +LTyJbl3Bxi|%wy`%RpF;`ZQtJ&}(e#26g_f+3)4Qn+74rV_Q3V(q5-<sqs=_#qFIeH5VwYi>hKwy=H# +^h-e`$2|_{B+f2ruaOL)ctqYdKkz7v>0a;raxI0C^trtypc><<cLQhIYPK+9BZKge?G+9lNAaJX<<+c +qUuCBzf0q-d1xR;>u>d^_iZc``D;(k@?uJm}}U;-Jb?{LK`u(&qilYo*X|uk3co#UWsOTGHNEQEB<xB +v>y?xd;C>+H(ivZxiIZEjpn>5BSRW$=mkYivI$U7it|L-({%C;Tt7&Nnng%S8XbK|@xoy1YV)N51z5D +$E{S8~NK=GM**S{~G*`H62zk7w6i0tzlNaYgcqtbgjKqu?Fl-s3cgz>aiuxQ9C{bM?<=b2xle<gAB>b +42gy&_|tcH&|GCDS7>ltrYN+x>AJjrY~gQ>C){Tyf%Vy+#|Jw+rR^DjH8iBcyRoPp@4*K{ICEDch0Ux +-L)rI+-pimxsQ$rC00D4r5R$>5G7nl>joDV+UHvFd=huM)0jOt`kgND(JlW;!=dPXyhqvbxE)#74jGU +xItDmHk18CxJoCGWY3FJ^Btfvi*>cFiEI4?UlX@PN&Wc2Oer9o9~-yeg`<ba2MM(IXWj2nV99h1CYgy +k6aupC!~I82fb~jx4l97GeIz9`=P@epG`Qxp|>kKXSc24rn`)^Z`);j63>#~_l9cT55Zh|0Z-15vg)z +2;k(JtNim&FL_uGh>;>_s<`S~<Oq!_lDbDfdD0|(kT2A_Lh+A`*wN17tIw)9}3_)GeBCpUH>&I|0aQn +|YAKayr&x1rU0r*i!Ug7rHwpT9nCSV#Gt;G;B7We~gClP}|0-<U*i7X1GkN6C;^L%-6=Eq?SvNKSZxg +a@Mk>)OlW$NhdBH*~6aev*-wc8N2J|{yWPEu4othi2rkejdrf%jP!DV(djv1#`;-@Rd7MA}j2T2u){D +P!JTni`A`?TM4sa(fAMBBUlPr1Pr@kexC4hEICsbQi&X5*c2dWfJ5M836IZ9n;FxcV@)x7as}?_~f*x +Po8vH0|#R)$+pl*Axe0Vo+5!av|IY0SL<#R`Y1w0<Q4?zr_1W1O?pn?4_Z>}aNxsnIPMrUyaeLAli5U +Qf#CpyXC$nU8&p%w2RiXlsLQwOc|X;Hh~r}Y_JR(jjqh^R1sMyi(RI*fhuo`oLp-$dw?0MVJ`Yl{D$* +nD9k2tZLnY*zX?*&z*K!1-&RI+CdK4?ES6{i#C4PBE4vB!e+f4%(E>_}!l@OIQs#E<%4yzbg!dbOSKv +->oN<<MgQ4-(mRs!y(EI7Rh`h=`^#(&c=AAxIzs#aQ5oS+MRq_SzPEFNkE&|eprD-2n3FPzdCrCbuqF +Lo|*6?d+hJFhg>-IGtJ*<x9s>@+8XQ;V6Bi4OxIn0L~vMK+inh?qJ7n>EY1Phl*HV+4)Z@J~sO+f9(~ +nfBjljs(;^w`Tw*Ec@V6!(^WwZ?-^Bo@B#mux3*<EZ{Ms@Q~>UcgvczqSjsAMr?yaJx@&46qqD|UYB% +$5mU#2!i{%#(*(;sr;e{WBT>7h<jPJ~a3h_gpBN9^yYwT0T3PmPTkDuIca(!cG{m#3=F1b0c}b=PaRK +*A7pfOQL#G_lsLBA&e@n>k69AA3HB{XxGZ(Ay5*`|=8%^s-WDA@XRCFPJXFLf$qEqF}H_o%VSgx*$i* +iFEGGJ>T?7WqPRl)SR<VT<d2^W<!OX)j6dL>eQCXxFKW!U!96LXXMp>;$whU@zN)PCj3<W(_mZlx?on +5{ApXOOXEt$VXwdk^W_0B~(-Kk%yb@A#%9i?><M1qbvyhKp0c1Y7W=YqV7#2tS=O3*<cd1b>(hXPXN} +95}vhI6Ch(?>G#5ICL=C{o7B@_?wdP!|+q1E_87&juM_By?&qW6)UU&HQ=+?ap-Yi9d6P*k<WaeY={U +cl)hh>V{c!k)*m(@Q5UTuu6XbFPWzJ_>Rxri5v6ZKEoh^;Zq(Q6x-3`OWwTG{M@8FpV$plM?8R2M*@? +J*{0VRAWZ4c2qHk-r6g4$Q&ojIUNN0uhq|nD0b$RwCwX2bY7tKDVOElLWel?s<O!<sASj?jn&RN5tq# +q-h<3S(;hQVv<zF%yjfqF-<&^$+ex+3<>?_<Q{a3-?h4_8gwRu{lf*5tr9awa}=ky9zgvA8hqH2x{Fy +47>PCr+PFTzb4(?7hpJnz1K#VbU6S1E#U;xapF!^LDu)elv=A_>u_ox?Gm;i#lG+Vr}h2v*nij3)E$q +{GW+=Q9lOXV<pG$PM;qc`H8wlF*Qtk?R#X1E&?U%3~Z0DZx<_tgK{Y79U~YCl_y4RH2_d!U=;sFHneO +y^IR|@PHc6JoMbG#sf%MWIhSU1XV&bgD6Pq{5Z!QK<(JD|-wemfs~>`M2uVev_$xhVstPfE(D8iGLG6 +VZ`yPgk6?W_+V7v#CuGa|lzLV_j!xqy?XCLkALX^2WdvZSR_>FK)pmAUtkY`;$ZnOZ(y$$oChQk9KoL +o;XCN^}(IoDwS<Ba<pXEsDlJ~~LvB0I_ae7Y@MY@C^0*vbXT1+(ozD72K>No(|>G4aj2iI=}ARtblJC +NLz^MNr-p6l77w$-^lc+nS%8=gA&l5wCfY3J3~9?1VpN#U<(-Has}CDTi)ec0lgw8<S2&#ae`RMYd(` +gKmmNQ5jEEslz}9e`D`A`Cih*fW|e!uW|W@(MkPL%yPMwc^LjY;Mx#R_{(2H28MivX{LJSoQi%p8ex) +d*%7pHkv`CHKph8hu@K4_GA=1JG$ZyI8H|kMu;Xos$?8Z#ZR=vyUNs53Z$rV!)RO!x(jln{l_!5g<tj +w8sY!EA`buDhhkQj<6;CuxaEM)Rb-;aoIq|qX0zK`-K{;oVsTuUt$0m8tNVkX{S;B9Ox-D{KGKwei`( +-U!T5lG%W^IyHM(L7GC62?nPzc)<aZx1T3HRf2;wdmrB(OhurDN<&@iEk}gg#VvIjd?a9+$%vXF{7S^ +YEI|Xg)9j#}Sq-c_0{pNXl;x%ltBjr5k*n|F^+(I`SS0d&UyhV!)rjHCyt3F-5{qL^o?b1nTk-{pMxx +BMwVrk0>NbyJqXa0hzhtbkM8p0TAy8F(Z$M`0u#98!9;(t#F_M(maqZZ6FLnChz89&PaHRP;?iLq8pH +Hk|%c1gBx%sCvqmkm#F9&nnPf&V0beL9jZHl|AGI2_y}`N0M6aeNWMFB_Wl^^=fglPTuBmQ0&J%XVHG +TuA*ROo<wK~X=w{e8CCL|cHs#LYtX>Y$?utKJ?Iygzox8-Yv*@aV_re826RmD^-)1K#7I^<{;>U)Il} +wh&pykhTh&+LVDi*!&-Ss#0S~uI70n9S@BCq$|&83rwClzE&T|m(Vg6heTc6apuXe>h{th$JB_jU4L? +DoJ=fR6bIP3y3A9HeW7ad&VYhKI)0AjXm=TCRqRo%u-KKB3A?HLZ@d4f>Ki_;422Hp-i@KdKeKPk05T +#9Sxi;5SZ&2+Y*!TrO;7Io>qKsJv@8p?NuoFPd6##$5X?I?7^7LG;+g8k-at8Mfv#x~^KZi2;+hrHw3 +DOW{e5GbzTntyT`-f*1ur3fOJYd)OepC1%yeF-ZccilTVT)fq=xy6VX+;@H9G1Z>zLLcwWwQM?uq#}K +#;+IPK}I2=H~TeLLljYP5R8r({<1Kz``h`GQ>DnjOdTqePcfl<#segQM<Xf5Rk)$qLwvvAXl!zJ7-?W +d6w4M9p|UB$=!o;bb<X&IrT6D*KYY?^hBdFWxmG26)irf@a8Sq&)BD$a$2X3V<xc~2S9(3tDHZVtWS2 +ML#l;D#r!!$3{RVT(emk&7@LPc5$?R^(Q!&J+ZWjy%p9>mv9q1a^rfS+g+Iw(7cH*c1dD%A9NJ0puvj +*T_@;l>Lpo&w-Ct=#l@pn$vtgp|;Zb5qLHxm`XmPYokaH->@+hT}2Qjxp-v%HMZnLkb}{#c+QCnhPe3 +kII;sxyb`HS7n>VmlA_=W&^61M7<&Bm$DEdfH3TgtJ#W0Uf|#H}g&8Nsx3MQb%jMpl<k2J!0@%;=b!= +MVl-MaJ5(I(YClO8<L1oWU!UrqBJ~NDfhfD;%Cv)!vzUi@w(s^2TMysuoE`TY}Vhn4td2>q!^@p+_$% +`YsZ=Pt$`%d6gOrAm-^qS*3`cgtz8^~0o(Dzm0Mr@SkA*4pm1Oh7CKs}d$LLm{s>7tT}u@4fdd&WViC +ySSIbPfG+bGF6-sxYAeli{&ae>L&H2~xek(ozL-5@<nzK;@zT2pMFqFtUVwFtAcLp4SUoDi?o{^$-Ua +_TZpAFpX{@S3`*I1<a{V_Emg)VI3_sTGq^`SYK|574Jr6iaXC;M<Bg?9}#ViL)z9Au=$angi!k)_bWT +#IFj126l4P(b<Q81&hE*?9}bL$cfkxW0g-aPv=Oo8=2(I^=UU%<5pN8oM@WixVJc(--<!V}e;kv}Bk` +ninS^8x#;7YJxVyCGiFH@Rk~M0g&JKyy3x*f+U0wTkCl~Xxf-YQOS3g-JvfA~+?DssOQIcD>+jYloQL +3mqxRv85Me#~X?-#lXCtOvGW>*xwtho)H&N)rSdqvf8YSpoWPsuyKqv|eiDN}f&{)c7@PZy*O{d>GVJ +S<{8e6y`L)lC^!Ta?1H&f_Z6g5gAeG;t(v0qUX_4N^3EyWugE9E0Z1GU+=MRlRG0a|9C~8p-JyXu4dY +N_i<kS(H;Jg2F&3HNzzErA0V&ad`how#Nu)UlE-_H0$cJs*B}>79s$X@LiKQRPuiGkjQ`z^Vek!3Iv- +BrEcB%@6@1JktbC#6gQ(P?#k0xI_5KHnj;}X9IVltlHpqau^^eK)bSDp0QWv=){}sRxK9q%D8(tk{bM +2_O_1|F-Qg(Tlfkt&3+u0*LQjs?+FRCrw$@)ep=hkprE7*}l$hO#y0pf>daifpI`;CFg88*`PG@9Jiq +!XA07;ho+o!)jgYtjU8p!B>>k423=HI#k-5JKo;r|h{#gYD|*=kbaUp-w)>ky}#PMmfhi||_yxDNT_j +<})obQ>i&>%UZ7otCd{V5TwLMfp8I<(t-C;fUA6)~8v<pJq7+dOs5dH2lVO4n}7t^2*<<F8N7x1wn^Y +KY`VHT-DGz^=)oeOZXO}%5K-dug^;iD;wH{#UEx21-K5EIK<0K9!2Qf81f(y@51rZAWutD&IoJ(NF*k +)F1p@24!%Fja{baBNBphfI8YJisvvS?Y8SF!<Ouj_xxOk^Et*-^Xe(^C=y|6ZjVT2LrPVcA@rgO|7gP +Wa4Zf5C^s1;YC3{3P-U}M#M%6{9e|z`W*RLj6lla-wXMcSWfV157`(j;b!UE2|$NV)9tYXnlIteRt0V +0g@B~^DYN^;mx<Yyz^6>%w1Av*XhSC%n~d&XA*HYZp{Y!kA9SbCB7-ID>5Y2a;`6W@aq@`P3!IHR_>! +pU%yzJM;sO&fzdIDHVx4!kvFI<cTkI>0v2`C@huDFEc+ffhz3NcMD`y35)m!AhLh3en2TKgL8rY!7-c +gro2lyp1y2da2tw_KYaAWy6V#;fM@bse*c93B`#$H+=h_sucqLopG39_fpEc0Ob2H2atyu#e+(Y6Iq( +Et@sy2hZ(Ne8y;z8Xb>wb<e43AYoPCkJf6$TL2Fra-KL({A?b^v;9Pbr4l|Ye#aGLAUb)sTDfv~1=j? +RKieLi1kSvNVyVzp>kvae*pN}P}D*kcJ?CoV)qcud!cJRf~$Wg^yh4proVMX@!9&fSP=GR;e3Sv{N=` +LjmTJC^K$y?~*Ny<LW2FE}L2IK4jjeJjH`N_o&o%kl4!+qk;#nANJQA5A*;;DrdPmr%=bI-A|0HpPLv +aQ=<QBI=e2qqPOXl1iAGrTapp9bdo_mbQloj<EtoZWrjU}z9&H^!IZJuc-_4GOA3yLk`O=agiKi<)tP +#A8g0<&VBc+I9<v9?<Y1Y#upHHLDVhvnzJ%LKnGhtyLuP=Gb5aIg0*`nZG7b(@|kCW2GKMWKk-%un6n +wCrqDP>`<YcXWti6DGJ1OFWI9FD!Z<mTR(0?fIGfuZ%dOopv;aw|K~4gtQ0^oFE{9f+3OJi*sbYK2lZ +y)YX>9Bo7%w*CQGMl^=xp9!IA61d8E=i!c>Rf!@CC4HLS`tWr-Ird^y)kN&|#rWn&r89@)+a6sPwtZ& +o(YmLmpXbjV!Lt$v~5g}8v2d9{h*@KNKWQ?S}tQZu1Sc8_kb*eo4-L|w+l9PO;|+^!q7`@b*-b(6oHy +!`(4yT4|%=HcVNyg3aQ>88ExI3Cfqd_uXQ?8GQ*?L(TL1YT^HxQ3d3iSRHx?1Cb{sl;=irYb4&=GimY +ETsPE#f!)zxR(Is&=C^^F-)|f$ER6~u_YkH99)uX8|A2c?L?x7jIwNNo8vD-Sl}`GZmhrO$3}R8Yh)w +o2!s_v1Y<Tx7a=4)z~_qZ+AiUsY2Zm3r>O#rjowwuLAX@i_6pdS5*2=0dcv^)^QJDpj0;@i(}6!9oNB +Y)ZLXZ3X|d#cRshYLz*)O<wM(-Z`>A;L;PtDo|0V@)B`^!)Crws8t9eDu?^;u9aTgp1v||szSFhi34@ +gmK*T&eFGz3`rIWe4jWsmi@bqlM>eARt)h;N#8vEGdWUJb#BX<GL-$WrcjJD*Vw2Fc<!Mj`D)3?W05s +roAxz3A#|d*XE?3JVxheHg@K^PA#Y3%NM0B$hS{Z14CZ#A!HG@}#TcNYp6%kL*$N#TQ?UfC@co{uzD( +2=L+T3K|YQ=F?}!eXo0pomwNlncqtGd1A7eg(oC;o9$NC--?@t7+{WCGCTZ|oOS_siNJf@R12yY7x5( +e;lVcI+R^1Z4t=h0G_lKZ5Sd0!eF-*jiVhIN?@<=8_=0nE=?<sUn0!sANdh)z+K7KPTa$OLLrXL$72O +K)LT9@I&mA4dn%UM>ig&lWgQvIrsC(|EcDY%9H1^s{)rD5#lJPXRE9;9=vt)}sV{mG%hr<*&(>i&yc< +R4R>=#1D+sdDNJ+EFK9Akb+_7p)JAo@WVFr5m=?{2G>{KgFHH7}Q?6afrbua^CXk)$$Vay1Svx5c^uk +)#ZRUHUq6LH%;^vfHb~v;{pHbRNEHHsuqZjtG=SyAiXloN1XC*O|23sTaKgmOU{?i|zq(lXIhRZUfjY +*Or`FM~$8t_EbCZK6YLNNLf+8!{fwyknT0l>NA;oH0`nMlNab^9wECBizHoJlNUJ1<-IdUreCng>15& +V_vegD;m$guEQ2L)ICpw9eu*!|rFEP!7g6xl&WXm9qDB+oU>X#2>k699qx_+ZZOsc9YTGDdHXsOHiZj +gq4d^!$0jKe~WgRfjjz`*nTlLpUh*yO_y#D;TS%I9o++yNkI`0|sM9Wh1KXtuOtmkx?mWD_2Wkd_AjS +UDPgQ?`u;u<Z5%`sDKFy}fPUbkKx6ykzGq<oqx6v$^{-{gpQcCllUC^LyfWFfaDvcu~oj0`lzg71B&( +1)CwU9S-r{fuIe*PS|%b;T(lnY%e;weaza%ggpK4~El;8TDcxc>)jOAr3t0z^+y+=(Wvp6ry)T69YV^ ++9(6lv3#iIl}QyqcDJyY@-y~?rb(<Xstw&65|YGNrb&PT9||&G5DbhBSZ_Ij09KNq>?bwcr67Sm%zeR +Kz9vPEpKG2w!QsL2Ah}NKGKaf#I5_*?Pmlk-IR5F;@qf?HKOKzmgRsao%}+g&<=+Su?mty^N#&OTkU- +UR1T%(<ds+R&w@x?ghHY#cH5Z|9tYJ*wMT6!25?xfc`O6x(s%kD@`7yW<7#ANUYdjoexKR0^<5IJKRd +qaeVd+e=8td1fj>L=J6Kn2^Gm`=9hP6(a_`j0lFuBq>Xa4!Uk?WY(VKR`Y-;s0T=hfIW-hkb6ket_5< +5QZDe6ndsajoAUm+h=rG10s6s{(rvFMzirg-Zd$Oiqk+4Gs&Ac|tmait%W|0kuQ4&PC_sJA9A9%=nJ2 +!KW`yvo9X~A)uBF;7je)CVC<;mFvp|k@=+AdH<o(Fyml^_H4Y}0h|88rL{4RXJzgT5s}YtnPZ{wx{06 +5;7hxF9Ph@fl^TqohV`P=iMTlMeM^?xi>b&ing;JkO^BujI0<-Gr0#}i2^iuK?UGa)$WE!yc?WWJ-{S +1(%hHQF+gAK`2CE(B)PVj6D6(#s`!-2>I5C7uLf`Xm;%zfa8%L7&&^!etH18V;cn|h^9Z!5%`cUv!z~ +HIG<aX#Cds(~r8&)4lh%2y8ce*2JxR0Md`i!!#!I+%#p}f4D#F&Q9Bz>2A#^3Gt*BZ-$$9`MxTVM^)* +>1?q@H|iW-2^FB=!8gLa>Lld0=xoIt^_zdI0S4k7>z>vW}ny5owdJ%c&CMwdNCu5zwGHY@b$TGr&W{x +X}2lcm#>GKgW$f!%lC}Kd)$27<dL<z_cECN1NXOt&rDx`@ZGQK4+lEYgJ4xt_t{y+e#e;ESt!snJPGm +$z$6{ggBB)hpRq+I<`Aaa?W|N3(QUu~jl;EJ(H}EJR-l>I!_Z=hnuF>?e)_l1lHJnhULO=&M{TQoUe2 +01unF7E;`k4Pj#2d6y2AI*sg=KTKg?ns>q}1l#4%hX&We;9cqyTB3<+?x*hSxO*3A}VFOZ@eyaQRYti +_;7z2PF6oKNm%w<<$p6TAb?r)c5jrzhC}2l4YSq9I_L+Y@*&P*)OG(1vSED@1`rNsO2vBhl_X78GV++ +T{U8#b++*y?U=x?mzh0bM7W%``pu&yV%(1+t+zS0q%C>yVo@BC%<~4VZYt;d{5HTGnmfAqi@el^}SA6 +%dnUuYOYpT^UUx9)BwoAfPZTr4zf?}XGy{oQeA2s*^`-tiZVqeRE%%A|DPGi@7BLiCoXNRW1I?XW0wP +(b`6sWH?A-#&M2DrgyfKutb3GXR$kWmVf{mmJPiD|7mEMOe%JSv5h(h$Tt?x(bX$1l`Koi@vqH3+rVN +@o;fF2b5Fyr<o{%3!r!A7dc~pXR#%3+FD3Tu}0T{;v8l#+E&IY51qL#BE0x-B~(bQiUofser13@w<<u +j=)lelyS!^0<M(P++-R{W)(F$oys?9n*b(iZNP&5*XTGr=A#GrJuxln4AVt7U-oEt==JlvV4P|M+yiY +Bn!bU@7N`6DkIPl^D`VO5}KVHDqmTQ{YiV3cNY}(X`_UV<`SBj41Z~{;x2mg+|z-Ij{d7W0LV+6e?bn +AeJu@e)OAa5rRuzMuE>9kKsY^l^%qLgYIpF?f1Hm^$d8A=a|<SSt~n!(31P|dM;W)@-J&<Mzw#n*{s? +p4<EKLxYed<mTk_}tV(KEH4n@BA^Ib>n}@6GOK)|`uQoT!BbZDzJJyHC>~`!WgRj2&iu_k7fhZPou0F +sT0LfpMGkk8&uQnxD7vfS&IP8=wf)$EU+xKfsG-Xu{eOn!WHXJOP=HW%L&Nm-65mZzM4SB@=MVNxgLC +N!n9|?$RgLK!XQ={5-@tZqv(}lsp|Nb+_ioGm8t`E`m>7U|U#{x`St_n&U!dh4m|BLGKYID3rm${bWx +~=t4hp`^~@I!jh-mQW5Q#R7!O+(@8GgL#7@oiZInO*Wcw`WVtzfY(PR<nTDWDQd1ah11<@aSbf98{Y0 +MFyJ~?XxHUe;DtdmPLKdBCAB3a+B_i2ESt8Up4iyST0N#Fp|WIh1#}XxkgVlbXL~Mz6)FgM1vmlLQ4M +uL(vRb)#6V|M4z0X`0sKxvIP<F$G-(6z7Xw4+^F8fEzC9O2Dgw*Jv7E-hF|xL-7*h94j&?H2ufK#y}U +&4I4Z;I&Z9fP0q8auac5@UB{#J)cQ|Cgyn>RGlyum}Y>$a-eMzahwj1jqebfU@--m9O!7!lR8P>@HG4 +N0nC77a{<5N^U!o?`0*9<M#aPQ}bp|JJ5Tmi}w8zlamQ5s_OfnAoc$|t`c8yxV=g6cLqtXV~xKT<RsZ +8q@DWV8qQZ4fW65wy8+u1zBx{D*OUqSbebCO5X>Xb^CI2g)6);vIRzA%}{N117*Eq`kb<hr^(SGfC(Z +@BCI|@2mA@TP%&6W;!2jkKrKXN0N;r_LLZ}37`S+Mnk)^!HXyk@d$H`Q9`ydBhN3c+Ol1HbpX0$U0@E +SmeakX=QGUj5axPaZmd5CP=p(dQ^Mk1AXm3v60`w2m|^;O%Hw7&8j^U0D2arKIA~VSYQAyro8>$<0&> +tGefT?y`s(Bq0jX$$0)L7P4i?i`g_K0&){@nvt7Z&76T?x!*|T<Q@Zv9jIez)-&#wo2K3_M@Mm@FSMq +IbSKH*j9H0J)u+tiOlE)`ai3u-@SpBsnX2Gu**-I^dpiJCR0w~kYCi0%F2aVQ9h<|I<(@0Dgl0NgVEe +!uMLAZW9MCE>T3u~@}(U&SY&%KBn(FXBuN1O#1h3_nEGJ`XcZnCX=&m{@=$bcp3grIo|k(pKdV%E``o +C)waF4gJrs^Iy{&)WPvH^s%(h9SDtkL$tBr!tu(R8RauqV<)Shmes}NrogOLCA!73CWmM_@pX|IAVu> +%@NqWd{NvGS$o&GC%K$6a-uF6?O4OW)4p<Y4M9_i}7;X+U)tjP2W3RU}GxlSB>?<mhy)14n=0)c5;fd +vg_v4G8z+mu^hr?>V`*M_E{1B`Y)%JA(_80^lESX=*f3H^G6m_-0MMzZx_^Ddq0iy=l#kN{%5iYl4Nw +lSwL)zCpnvOqVtFSCuTisO4Vy)^8=w4Kv&b!flO{z{TZNt_zbCFT0ISjDcpcg(&@g?2|%wSl*XDWo8i +j@gO){G(;ko#Xqgb=;Qlv%-93RqPp3ai};eO8r~PRk|KQet#-7%U!E<)+*0Cwv@TqL|S)snShXCJud= +9s+5Q38jk@Q;*0kQX&H;hMk7p+tZR027!N39ix3UJzW;R*@lwsYB^0L4Or&_QN&^EH|0%(L5Ts@+CSo +27Sdjq*P(J7`s3(h3`>dX%aa=_A=GeSn<0U92jd2lLD|a!N8cNX;(kYxOhqUJjF?r~Uszn4T<T5VN<7 +esc=ja@51m!ewbJujUXa9LCj$uaMGzRok=>2U*@$DL>~Iucn=>Tf_~@4?icklxHQb3dbU8Q=&heaPy@ +&e8nEU9~7P7;UwwBE8=dWDknG~8JbOx+pe<oz4y|)r_8?9x0C(v->Pz&B9@pN>5!NUykUUCQa53+@>n ++SZu&Vyjf=iT&=bQMnb#JC_W+6YsRyq9kvNYNo5qTfGb1!n7l$0LlKM^{xnYwh+TV2Y14=dLRapP=q0 +VFL<49HgDaf(efmYbMe!`I<9d2wAgut1Xi&ljO|cTJC&rgNyBgr-g3*=4`3#rfcjo!m!Z&v~6K|)7D~ +%u_c|2E+yV=pR|<XkNX%0+i&$seyb@HgX}Ri?BC^R=VU`ECkuM*7Ze3eZxAR2kmLr?sx7zk=6KPD!jR +jn098MAgSp3YJE2Tb`F;zppJAn($4|~h`iimSAG;T>&v-Nb1-P*lbg^?=BZsi378Xk?0cFYEwGtunKg +!E6cE(EB%<iWxqE+h-W5fYGu9y#<bL@%hnjmt-;Zz>IOxeX{GrNugT*m0j4)j}892AXD;*5i!_~zUX- +1s&Pu5+Ie(b0SFZ$^)7T$)`$;ILTZ!0q|`xs!)vQb2Z-j4J<>dXGO0QBz<zZ$`JT@}5Q~lS(_$+y%%D +cdu<z6ny0b?#M|C7amO$+giIVMs%EH`i9)fsj=DG-Oc>!rv3DGUVt3AqyNrLa2oX?yo!V4AAXt*ACdF +I@nefGkN^809>FPHU}UHAOmnNN!jA#e4VoVD_x$D>{~0>Son>=hjA>ei%667AI&p^bT3m5B=`!+yq)> +i{Q}J5d2%4QKfJBa2G?_T8?TjzU`n%x<nltS~ol)bj!Y4;=v4SYqFrY9+y<^X6GWi^IcWbOD<<Db?gn +G|Vg<ZEmql1{tegEd=yBCwU-=3bne)BFx=3c&L(l$73(2$O!ViN)Wy{(s3eSPTCe0ZWZNUkma3|ysLk +vfeYlAKGUl_{1=vt)1bC{0$HMkw)Ck`NK0h{lG}<-&O-P9$1p=*E#`A)<YBjYGK2c7sVQD3TxbC^y%r +p<E^Ijr^YkZ4SF~Cm_d3j3}<dUgtOJzs)Iy#gGS*w2XKv9e;|swD{BT)s`p*&uW|v4U)QFBVf9ZHo=E +}?`IOOU9!wIBjlamih2ZtBgsD6fn$8;s+N-bc~I%h)xRD^^ykP&8()+&q->fZgKzOlN@rb_vui9LbkV +#o)7lD#hH=BRm{uU}E?9)0X;>~R(7arda^D3-1Az4|`4y!UkJ1zM&z?z#S>`=M?%U&EJxSw_O(Wlj9! +SecJ}W3#_js|c%6bkQT$tS%e-y3vW%o)G2r(`=OcHUla*Fu`K3QGI8())C3w*kdP3lNr8?GaG1l2cw^ +EIQ8<d%ufmK$1HgbBTqkkK*v8UL;Agt(!0LxVyU4E>Ah8F}t>Gj3}4==q4x9&68oT(4ArB4DcBtCKsZ +s{6`YOw2Yrvq@C5n3|YA7O`8dOduS}N%&n9mlHGakqG9T*qQZDRv&X>!P$8@T*Ipk2Q>-JlVx?$l1C7 +_x`utTqfnA8cYV(jF3jP0a!TSj@5V|<3`Hak5R#dho(Pzvydba4p(Q3XTD!gw89qjEXVX_P{fV4-LXM +=KhgB$bnFG#QPGWa)I2GlI_3DXL0Q#fW>vgJDmcT+%aw2L7wJbw>@*zo+Wm2EgcNK-E_FoL}@{F6FYf +&x+-U}Olx+ZD;>H3lP^oD3mJpo&?8jjAp2;z1Qn!>-S9mdBVIlQ&Gqgm`o;(<C+nx~F;YQr;D)TYI#9 +`ki)M6u4LGn##nL)%>+Y_fy|AaWndnCg;hJllQ(x&9-9emctDF!BPmRr}%?V>QV?rsw@JM`;%!r!UUk +Zz!x9<-Rv;q805MC7Xfu(<}Y;eRc(xI;Kur@U>abizOB)I{jDn6=9DGUXpJy_U?(1)0~gaN!aJ%L!8^ +gP4iH}9F9!rxU<c!OEOE6IhsR%Yyh<ysFhCQ2o)YP#GD8i6IV$lVu~r`A`4^h&?Xsz<CN_Z&PR}>WE| +!CHQ9M(v3ji+5xUdv%IS`nyk8L!8$!4{`qiXuAU<5zij###yqN3Zqa#)e=BPaQl=|Rb%bgVLdDZwGm5 +p?`Rhcs6hlW`u9;s?_@3z8crL1QSMgW{hnCY0A@%H3UOuUCFCdy!GhkxRONqKI8YZoY}+8ydw-Q)xE! +fbBpdr^WZ6l-;mbnl<#|15@cMC~V;`Fet>JJ7e~|NVdd?|~UWr@_VGhY#iAhYuI{|M{Rd440xoqOVQN +UASP9asTjVxAeb+`L9@=j}Eic9fj|G`|i)je+V_$?5x|9b3JI;Ne$YAmH)7)S)r7tFgHiFBKMmFt#pK +o^zWCKHo;gAi9E`lqt|P*qEr!ROf@f!zn&qP?A!JVJr~gWgbn<<qEp?3-Em@FkU|@!=yNbr1v1XM-(Y +^G*!Pe)N8ql99cM)M{pjq`c>n`Gx7DSnPwLXvwmosZ`J-~;Po7!DZ)^1VE9ddDN2@8sH@TX}??H@T?e +M?lW=476?_4Q`8L5TcW8+gf+Bf|igBZOr$b(JHTCi^KrDJw3x_&}0u0Yn0eMEf%1n+6=W^Or)J5B<^W +Ikcvu$5^ERT<Cd=0;DDE@+JVEHcCI1Swl1>%X??n*M_iTrL!CZ%L$s!OqH2yli)M1DuElFpk0Pi*Zc= +kKsjkR_tzlFact`1d)bJL~sS5TM^ulK~e7s7Ec91_T=YZG?A0zHu;sC2C<#vEb+DV9Ffd^(?qi=dq+e +?iOEw}>y@)R7jNk_=-8zX#y?QZVFac0f0|0?@TH<fHVhyVJmG6cl3O@AKuVQ}F*cks^s3m5$%_y<Nq= +;xj=E+C(^0xYZezZ2uokX8@KmQ)E7x(1yCk$CwUQgFq>-IY!<a-W$1aI8F*_pX2P{7nXnJ;qIFoyO7A +z!+w~1D=`H8CU*dvzXycv_hI>^K6>T!lUYHGA#9oDG>G1Y;(RU<#ziT>$3<FmnILkkHF4CuiMTP3Gy2 +nv0xeh?uRGqp7H8QGcRbqqv`M7!QE;uWBOsn|AtPA-4dipk%XS^;C{0}&){0o#U-cb4AB5zotd&aNMW +{Pt=&2)M@Es}kr&!saGEMVNGy_tt+y*~Td?Ij0|WoVQY2k&>tdRxc+Z2}_6Icq7(|{xlb*y)DAMsC>q +ZP>1J*1~WA-r@H61G#k=$U7`g7w#qIS&zfP&9&jn)<g`fo-Cod9H+*ro4A)=~ibFw2hd_uEEr{1lA}B +*<rQZdgQSo_{Sz=60sse`6%V@0qh0tt;R)XBsjqTjgHWwADVtI6$!q6fqHYNr&*5dxkIm1I-`Utu9Pd +Ev|vN^Fc-aedD(LXWLvBC~?G(vBB)HCtk1=L3z^6yD`H05imca0yjV705s#ZD8N0*BDfVE3?7@(+rL+ +FvNIHD^c0t5y%7OP-AMgwBTt1b4HNoQs`LRJpymzzl`-93x&`u*O9}@fnMz!G9#tEJ(un<43q>(ZkQ^ +nS-)-F4XGmo*?}Ya6sqXalUnF1dboWH=kcT*6-psA3ww-gal;i^S6x-ZS9Z$0b}%V?i#70Q-po70moV +%Pm48%oEBIsy@BIUQ^94grVIRLf;!72I&w;$j<g!O?5HgSOO11Wh}jjExVLF8jxpWK8GL)*QTv>AbLn +E9%aW`VBeBV>HylF^JxRcdD)i{89?EIDE_WwpW$<|6ujL6EaswKnl^yQQo!r5nQD~@RmOE7{9dP8qTv +B58xtUvTO>bSi{<b2TBcU^GKH`E8NOS784`lMr#buYI=eFsKeN4rp+n95}L#n-S!U>FRfSz3m4%n6eV +U`M{4hC*Kl1Wb-$MQuxTT@X0>4Dt7(L)p{RV#6@q`juqlW&536_$C)xn^uk48ruz8eC3%v!==|(w${t +NC&ehxU!j9Gx|okW?mvU^rH5XKXQ;xQ^ov+jaPCICw?(|D3DHObkG@h2Z~28bjQDg*&r~cz&cM>M5BA +nT?eE*lzyX~NBocBrT8@8r=##TcA0(cr&58!pHm9aaNDil603$99(?0+Pt$%gHxBQLdN;f&RzrI0n7V +NWY@Kc<CH^)%-Y5{YJiY~JIia)dwB!cSwC~b-TXaQG`w4lG;HkiQ2D~<JX$T9s_2v7L8ljs}FQjnJGG +qK=5J7y^Jg+!_MGk;w2IlACj=3};?koPxL`Py1vWB`Q!-3X_QWfG^;u@VG+-}HY$A2Z2(Q^Wny#A?NH +<Jk-JppC)bf^Mxdb$KgtC1Vo?%^m%=^lhEhs*JFgHDcA*^f9%Yky-MCRUR{ITkZ;0HwUKSts^njqVGW +#&=?38lJkcc4UXb?8cj?&y_IIvp96reE#}vDlhm^_VTiB)@)5QC3+XW$Ol;;#}Y1K>Zn?w+*jO#<*%# +KI}}t1o^(-hgky;=YBf>UA^n!Wc=h_-^OtYP1crY;efI3dTld$i*DqeZi=C6z?qtF;DXf4(>Mu%Bnax +?3a9ixMCsDSTwTps=3-0h1gP&oQ4kdLo8XZ6TZ@!LIH^YlgFJUq4$T&(gd+3TqILTQM+e1831a6)Yw# +s`9oQV;NX7ng_3#9mBuLptFUuNxfwF>7HRV(Z<FR=fC!QMbI+-F`l?df{ln<U~+N!K4M8jM^>UO|M3U +9jZ#tUP)C;=31LzdoHjfBE*^*il5>sTzGADe#&tZwYe1oGDgm;1#5XtmL<eb%Srh^a8PQmol$l%`v=> +qtJbPd_w=^acOAX@hWy}^UH<roPIpKQ&Lk?!I`)ajvI3~%2**Jm^UPR;v2;Y?-nJN1)|EMu$w_2{w3X +i$VDX=T^duDzG+Y?#<NJtBZDJegj~;>Dn4|^ASi(UB_@R`VYcM3zZ!Ng_Hi_>fSagMVlz<41t_8GSY2 +NNv}OMCX7w`Evxuw&ADNUv$#e|^JWhWmcmt<iNtr={?{fcDr^i0yi_6tH5qkuiUhZx#8BUUxnhwy|Xw +zwsGTC$*k-<g==0Rw#mH#tln#7<&Bh9j+8jMwIjqF5$dKX1xW+iN7WP4ReNyRYu7=K(4Phq~prNP)bN +_KFCsT;y&dF7T%_n8#+#BfT%F7eNHrVv)zA);!C7C|a5*A(f8@?V7+;A#OWBti;Exm6siX=-Q7hTD_n +<2GdoJZ<3nXnqsVy=bVI8UdtKSNY?%dS5IlM1djYz|;mNDT6Pv02pS%w|dvMwJaxapX&}!LqeB0GhLH +br;Tbm`OgU%vYh4LXifY{c)^v$xPCfjI&fKqxI#Q89I_FwUgjFQx|kzpk-n#e%NTvSuGO+%KJ&^EZ2y +YVuBn4eHs4bA`=iJ3<F82PKQluQ^@;vzW9iZ<Ne_u9L+2}ZbH)a8wnZ||*hTe9Ao*nPeDH6<yAx7C@g +Hr@RS67K0V<6<KvO`@3;@Iq#F94uhF-oy@5xRF9#Za(LEz4g_Vo#S2uH}IoSHDTdeN97C=Ab<MA#_~h +vK~AsKgUPeR4R?IvuEAX2%%XJsz<s)Ei%VNFmdW;DFfN3T*RXiot{-+yVg}tzYn3UAQ~8C<&0jf08)m +)_+}6vJ7nG^QG+>v?^M~*dyei1EpD4>Utxf)cwfb1zrb3pLbA&suFS`iDJWbC`GqLR3A+uBG%2CHBi1 +)Q=81i)!M6Iz4=7@gjebUa+c7+imKVVQJCCFB$F!yakgenNm}v#eY3tU*5samV2{4|>=E53M_)YtJe^ +*pH^xCa&26Wyp~%%Hr)vtv0?=YJ98~qfCX~T^nq>K}YB#lgNu*7!MoJi6EY*}i%j$9@Vih%oZI?3%l- +Bbe;S|n?M_YOv%V)68Fui<0Nf``i4|Spe6&8-kogr(T*yS#&bmBCeOMPA5x*!BLOqgSV#);IDkK#}7z +)o#>?(T`IRhO7ybfCthAsWS0-n~D2LYKZkOo_@JTJ9Q)DnS@-M?C|w<4*l^VSmL*hxvhlX*ytjw8I`d +MgXt=yqE#Y1ifLh29Z32b3<V<4koTvg7r@wk#4P`7-{*=0$Bq7=Mj*+N!N%4w6BDOQIaG4EbKD1X4tA +DN=t~3<Vd=6Dzr?(B26YqpvkCTGi87AbHq^R5+W42JHCom_8ylrkI*RbFk$m`c5Bc?Tyu2pEfw^oD!q +V;o?n-=({tb+#|9oT@W||6l-YKL(Ux8<m{?Fa*&8WXE9-~S7hcn2;9^ETf+}^j-UZIwuxB=RfX1Co)J ++Eeh=nI%tGO<GDN8qK;{{lk3(PadzT*^~fl}2t0>%Q%4hz;U!|3C?8GRo20_nf?45ITXS&a33s=@Wcc +9mEhYp&txL^T_&B(YkT@3DmZa(67pXP%IyRmAYab<)p$$OmtP3M<JCWwx40!En^;ozq>$U<vI<o-6Dg +q28sFFC4Qq`uI%=gvI-FvTk>tH8(3v;SFc2ZjW`@bP3p==F`SXNF8Y;J8s8!do@{dD?SB4X?+Z%yD{f +U3wyvW<ItQ#T6n*OE@&Mvw0Wq!_T7bh=EEk#YxF34T~mEn$3dyypu#h3bp%*~wNn7qbKiTERXrNKV4p +|(0Q5RrMIe5Y9<WcJv`-}%_s^>F?Q;1WFgQ>O>{}Ie0*m_d8hS+%;-90UP=MmETn%bI4-YZQgaScahR +=0{74cTvHSmY*>~BVB6E0%4WT#xloChp>#VHvlv)$!wMM~6}8Pdp^7<(E#Av4;#xV$Nzz{F<F`$&d** +3?{f6$Gx+*Kc3`TlU$bM}I&wd-jYVj!{c9yPapl&qu26YDN6ILAAa2Lu&Kv+g9s$>lBI$3RE4AvRja# +@Jb^YiY#Z#>ZanVxOw&zNh2QMhDb8>DD?c6RCTL$b5WqX@I|>Hl&Exo=#7iVo?J*Y(JS8soR$DOYD>I +L*>-n<!B}l|S!)T1p54)byR{^`j!dK^<)P3)UiJY|2k(F-d(t5{zLpg~L7nxJ?yV&w;WlTkKo^rCX4N +!o(A*4BYap9a%lM=hrQ;s?108-(4t8Cy=j8_Nvo$5uxFo|4(Lm&=inT5`X9i5JG%a(&R~8-QMrIHlx2 +az{kgW-gN{+}If4Y-LY2Uq$Vnp}mkRO`}(2;kK(2V~*x-*_)BppY$C0~>rfo1~pRf>#K6u7hm@Trw`U +4vFk)(Npe6L<Hi5_LjBOyOp2{AMGg=0p4qC<g`mv4N9pAyO2E6370yMGKmZ0`Oun0w0qH2Y*5OZkzj@ +{M1QV0WEpWcvvxqhjLQV@_9tY>g<9F;n24aWx#FF4#|QmY0}!Xl!K#G&JH%5wh5+!#_R?iB{<Rf1WVl +Rfq!uD&Fkmie*J<7L9QkC)`vgbemeXihyRWq{L|qm=Tt3#t&>+zzlj?2+0Y#r{_*sGAR2si_P>wMKOL +FVa*VIwYU#eAx2qk#r+~tA3kL&f>sR@wk?Y|f529b?9~jtJj&J_mi#LCI{q{xnANa@1zr1?==Ebw8Z( +ocLbcQZ;5A|)Qfc_hYo3Gixv@XTWj2H;yqL^dK(+ZVf%!-g*jk$+?@q1QHDmqg<SMAAgB&F>6SG3_;0 +ZEVv(TI0$Xkgq`7w1rFx2xJ8zc~y>5yf%~-3T0pZE&5uH-ClAXi8{8ptRTYSJVSf)ivQiqc#!&%Km?T +Jpuo_K3oV2v#g$IPE|LLacAUV@*_9i`0QiN;wM<#)zL)XwhMx1kb;q&ebSx}U`&Itg%eL%nSVP~#JXO +8wL_1s;za$)dW3UtrN~b@oj4|h0I`_7q{rEVVton3^1*}aTl}q88BE`J$=jvE@?#jIFjG4}jcU_VM2n +GFMnRRQpkMr#M-Z;yp0Y~>__SEVhHgr}$tmSK>P6;KNU5CXz{a8$CD(CL_QfusTn8js`^)7nuFix%r` +MO7=)1kES`%S_uh{fiUv5FlDnOklqFLq5Fy5yQ+Hhl<qs=X&k0KNbH<wq2(ruENeuewVPDQBR7pj3PN +64SvSZ7i+O3C=-jR`1fsZX#TFFwM0yyJ|Q=uwo)(yoRYH@5Xm>r&3QaM_D5-Pj!DZjSS$4l`LhUGjF) +1ekc@X@X{90d3wCK2T--{)Bag#DOe9Tue}IOZ6N>pj0k3hHvZZy1A`i;3q>Vo~0d+T#c+EaELnOWe9Y +ve<?TO^g!PdkK)g--EcC3<6)^NU5pMj)UWyzj$urB_I=4gkyK9zuFxreIL$Bv&LyjE`3t-`+a`b}so_ +xiqqi_roOH`7VHv_L8t#F{Wv@|Na$8}2)kWY7>YS^y$Wtl?PN4u&C`)@ca1u+T!yvK(GCLNyYsj~@Sa +Jb&<O5N3=Jhb=@<*4?4o9UYxlL1lEy*FHMdsffX9PuPW-!b#3rT3?9F6W{7F;o(kGUVkWspXIbk+&Jj +%G0Up?zTTrVJd9mw)=lQS|O4(Uwo)S7$%m=D^m)4W7UQY=uWw+l>C00K=2}>W8!Z!4K!u;-3a8Dd9iK +`Z0VVQvH~AJxlXbSmcL7rV30Ndbv!HKM^^m0AuP8)eF<C-PN1o17Hi5JY+X6Q~*4Q67dShgzniw5TDT +RID3kfS{ILHPd_{NpT2W6nE+5`C(px)4S?`!&W_;N|8)9<=-_l39N+1b`)SYN1q+X4XBTWv6Ll<RvLp +!>F@@RXA*@EnEjg-EB_$?3dyw61TS|KaV#<KBmdG+Nuc$*CWSr#YFhLQ++KjZZ_8ugc$(;NisThnU|H +5qIR3?NPoX@(&l<j8&{(WG=)s%sy*Z9Za+{o5a7Fyr1f~T8L5_)6!I9<Hu=ntMY{wbFg_s%G~w~|*da +6)bVeS&p|x^jYfnY>Da0sjb-edEcWFqDH2$p6}2BCaLJhp~+{-mHWw=|>@1cb#B%W97-xuVa?B?>f+R +aFprG1QRNf6urK;3`MO~gyK&<*Me7SkZIC-S6k_v{u}jKuH0$E#m6R!6}A}+zFe`0R&g%yK5MKU{&SG +CDrAZ6${e~?6^N1j7+{~t8`K$^G%(J%QQf_VcoESKvMc-@q!?PGx~H>$ZM1<#;iGV8n`lMF@1K$o(9L +IwLMMHUw5D?oHzwC_8iwi1V04Kcwx~(5d!1}xsC^{FNv4987KoDsqx%+rP{Ur;+wvZ}ZEmR6QC{Q<*i +<YF8tyia?}Y#D^Y@oY)U*&Ehj;r9jxOyPJwLbSKuAFM^mlX00RZo^b^}b=<YxZGWPv6QOeUwn8iFLc; +PSL1UrQYy8Uz{|x9jDyy5K?O@Q0jI1*$N)JsK+mbsvo6WY87jW1y&pmUw7{B6Wp_gTXiq8`N%fz8VMW +LV^Pd6NOlC5E^T&7B+;W$XsqJgrOM==v(A0s2;cafqf@w3KmG##x!+Sk&V@hB5Ram4>jsI;;MCH#sSc +9Q#nuT(wPD5a>}<)MA2<Qak>w3%#At`^x;n=xP>AnC?+p}f#o{|_JrJkc<K@iV_blA1lFlcWA*79JxL +>76<@d22rF)%zF!0VLj~iE>SdviLW2Q+75w4+9ho@ZKGgUkUD(rq{mX<h)7Z?C30-7I&oFifC8Deg8s +|TQbaV7503j3B#x5-R<n(WoZ=U|o*KfwITt(t*6B~u9W{ivKqyshmYZy7l+SnJcSOXE8!>o;(Q6uSy> +pIa<YX@!{`QJ!8>1T-+7WYTg$k_wk0)!28*%7n!NJlf*#X%VEkFb#~)al~gFz`F5;<@Ld4ujd~vev)2 +1aXvIkT)8&Q8xb5?8Vpx>YKIkSb&a?2;)3^kp12P@E!H!qR<Ax=E4gl5#+~XbpTjoD%@$VL)&R|W}uv +hq8rIPm`q2^Ac;}PNT_AP<L;x@g@CXaldiGD;snsA_gtlyY$x;!0O^*FNs1*wE5Fk=UeO%*<OEKFObl ++W{_LmbccQ;A^0-e&SWJuD+4azc38aHp{pHU33Z-2Y?bYmN)$?VS9P)kadK@PjxRaQ8d0p<pr%84sIR +B$mAD+S>WgDcLDBeU3f>Mz<`(7&oz8q?u09>Tt)1|ju(Ouq?WLZAV{s*_xzXM3+$3Z&j2X*;zgZgR@q +>mfaS9=Ck{@4pj1Gl}vLM^nk(u4@|WYUSCd+EHz0#<=sV%ecnve<##ZuB>1^kGSk)Ra#4OsT$ebySJ% +z-YwPyDQ)XCByLsBRW(^jABUf(~hTr$yrL9S<l&U>YV^`x7ik0pyk7Djn&B6kB&K{<xZl=@+=!xd6|z +n2SPVa7=RT!8ZvSS5<;SUgB~>1tK%?G^QT-?Zw*E`>mOIZ0zNQ`sXKkE-A8aW@P9iDQIMJ>>JxkG8F@ +(K5*18rU>2jn;UxU%Fm{;GT4AOQ`=7LB&{6Jqsw8$sAmSw9%kr|A?fORk^>@xG#^#y&nm+n2;?h7uU} +zYtXIw}UqZk9^ZZ-z}et(?7QTF{67lD$@2Zkfvl(Vb4nh`1&nT$r?hxQj&LzGof7##fj-#_v!1)qy09 +4@R7b&bY~jkUPABQwJz!WwS)4MjCnEo%kz3g^Xca|-3E*w}Gw2!cqBt;=JEDovc9L}{%=rQ?eJMzbOJ +ZERb)=zS^)o4swk`Q^48ESK3OY7iu)2H9E-99%{gNzJNiKA22G%dn_UV{Fp4QmG1)d$&;Xxg#HX3o=? +h$LoJHv|1_r8T@RI<}casXMz69h@xIDN*t6Z70|#YJ04!{HB3TwHz{f5+25Ki(KE^o+|1_y7)WSE@x* +fqNaCotu$tLR&Z}0<woA-izj37<ID!cWL<AOAzRn)yk8-$#LN2$3g<)5xIhRtssV>*FIgP_dEo8qeQ) +6$#A;AKUR7Uni=6|S>qs?r5P3Q{{Cd7Xa>&bKg1a}w)j6!Vky@b1mdh93Ov5<EU0&axLQtN<uCO25yK +u}F<2{n4hfeOlDOkhD!w1GwBTPatKK)3i0TWHcE#^E=ZS_klS@SW;eva6EflL5OP0+RjwOOS8m2|Va} +Rg83lf}z+{Ex|&kjXa?}+w4eiIdu1TGA~!8dfwyu@YHFW$;JyPjHYkR+&SdbL!-bh?7np-^m)LWd7_2 +{3EjvU_(#TpGG{1L_;`LnzjUa=3NbYv@iPwU)n)3d@#_Y`>zpp+8-kzT^sKk0cmZ%La^+m8ZH|&=V6+ +v8R27ANAw|IIyMFTZ`)b|P<P~~Ttgk6OL_HT>Uq;>#^)3M8z9kDK3f8(Y0wBFBt}ry-N@PnHeIlzpV0 +sbXgJF{V!3lpD?J2ne%x}mAm)?)kpOdDMho+EHx<)t7qFS~S*Is_XHR&Gfip^KjddUBD4<TQZS&6DkE +LOOud53t};Ur80yb4jVJG*kEbfZ6p?y=FD+RtDuO|YF=KMdQG3U=6G2dC#ZhM5cxKtw0zH(fiA8r=r! +%%LUu80q-Wu5Yf4jaC31ctZnImzGO`mF^mb)9y~08Es3hcop_8L*STVoKV9v{Iw9pH`YgnC9jASHi!$ +}4QNgE)aUkm(bDp?V+sd<M_7VSbbc^@49VkTI2@UI$ud)N&V(msG7>g~d}h!O{yU25<@Lr^xRvdCZKd +zlPg+V>Q#V<=om~l`S(F8(DEVaVyjN)}x+k=|m*pz1PPv~c=oJ0wiTl??T=+YOPTYjnA=qbEdFr0`+Y +vg9)g`lzoKiPc)@zhCwJj&6iGCtjd_iNZU4hyMW?MH`>t=f?$^1#T0zwh$ddN|5GU>YVQ^nxqC{PSSd +WJzp)q5a_A@3S+V>;9XUnWVEjm+{_&PL=jHD+agnIrmQ)R*K&^n3-(ppy&q$S)4&9zrFGlru=q#gAN2 +`GxkK<Uj^zzF5_~1Q~U6KIjPR9Hy8=z24Gis(#vAlhnFRbm~vpN~C=u4xD=~7+DX)uO`C;8SderJxAY +bcI~WGN0WgijuD|uIU=#Dhzu0uq{bf~BW*DQQPf5t)Lc1a3fwDS6DMjl97PTknwq97X!K=8p!KNg7Wn +K*qrpr%T={pD>Ovt!o7@}k9B9Tnh_Sl9^wl(j4I3n4xcjT)DjXlTl=izwWN^5)wbd{djEs?8NkgdVt& +28{4mH<`T+e;=Ct@)q2iZj#aHaZ|A{~z5f2*AYJA`*#<8y*{bcG-uciyWm?oJbgT60~yF#APdk%+fi# +*P6I$LLfRG>%V;50=z5?u&)cZo6I_1{_|w!%y0gxmtTrtm_n{vQRgsq9+oibLDw*p?P0<2<pQykj$?! +eeO&1<KelSVBur4V~1y3W=Qnm`C+`)xHvXuCTZ*&g;o>2NqHjpM~L>%OH^uYIDy5sMvc*BP4W7x?ZvX +1(I+IqlH`|n%9cf>3Y!P+ACve<Gxrq=#uRweVVCSC_)A-6VW$bqMX%M2gu>{!Y=&_Cf~*wTYViA9p+$ +98{)0a25FK&~rko1+iz9WO!BA)^szwUp#Cr9}Zax8>RrhNc{6M-2izuyp>CK>slHu8xx`1~%9XL`%P6 +s{+dcUiIH)Z$b;l-c+AnVb%o9)-Ub9V3mTxhX2S9xniuKrt~$fi>xK24{r;3mBU9)$RQz_gIa-S#^^r +fk&-(}yVWVq?v!obg?9a?(!#5?$;gmlo*9LXCH~>yOMX$Zp}uD}a2VCgkcU^hjI<yF!kUZ74_TH1IM7 +;dV-&PLXnU0)gx<luogR><5nk<4=aRYrAJ<kK<=I+{n6af;316j4I#JQU)E2yK;TGqNIS<d%}-Ul^n7 +{2_IauKz3zNk%;6-mWTZND9~XmIs10lWUt&8sUtsLubBjZUO7<^B+arz7gM~VK^)-{883SXrS;%VJCV +6Pz%h`bLUs$Y4<{R?c8T!l{)lWMEF>4M*{M$%&1u7?QylShYPZQMdP6*6|6H1ckzL7g)A9daav^WAdy +6lj;~OkzV<k!adASI|IAJCtVaM3gLejiCm8N;9cej{gXAB~8CN;hC2*isH5fi{{O{E+aY#zl_hny(E) +Gcts??!*}Qe}Tf|LX$nCq9KDLdiRw(oit1nW|mNdahY>^VI5K5br&gq=}X!8<L{;(gu_A4<O4`b&2|v +)w*id)n><v6*K=~>bw7fOWgf{Jh3>4f5#O}j@>LJ{ph}ZsW!Sbz<2Pa5pGUUT^II&9XmN`g+Y5uR>TW +^zxlalSY4I|p8JisNEfxPgGRNco*b^YB1|d+CCb?*52eXLi9hsw>=J90_4cMjEAX(6Qi{qHxf<39%_1 +p_3qq#_aGz+){&blS{n5IWAk|lk9i#n_QUST$pKDk`i_u&?P`Ki(M(fHDlWn6)6+ApMZ`v0!%*Q^x>{ +p6D&)vBkxtw8A3t>!pSVTetf`U)+;Di;ULO|cX`ufG&x9T9m6yX9ZXHgDC#A)YTj>8P7Z)(4WW<^H4M +2Mi6u@r%vt)85x_a?DY0&>5yNPlPn0ZC`qPWd)#>cujQ_|qTBrHeFTxT0IC+op~h)yY;N4t8<xUK6<g +;P)K~JKjf$Nu>|Q$|RKTeA4w-T4_;&b_F}lH^yzLMVQw@cuTATHTyC{hdTCgH7CnKyCvVJ?p>9%%GAi +!>7HOtUfd60Gcen4(j?QTC&8aC<w!3M3apH{_3E5?8vHGBkgkf~b(fY#9Lq1BW$M}S9#s~3`JH3~?^Y +F=6py$D5L*eVx_n=;?$`KXA)sUJsLkRUM4ii}T~VTy*@nbv7(vo3*{fc)naO9}oMJu7HoQcDM5|FX)# +0XDO(-`+N{x$TNWYh?xki_ph0tM&NqQ2tN@$}Ky5nRZ9%tKEK*K>$t^sYtW<T*SxEfM==_Kq$pglBsw +xq{%($rAu#7Re;D1%$n>=_W}d#i)MDx?gy&{p)bsBPnLU+=w8ZM!YCx<VqS3s)S-K0#MM!_nVJp>A?H +{G{b@cWC5%>gXm*q;|2F8wt^}Xk(a7tO$;Cw74UT2CMsej9I06EaLVNt8h^czpc?Xf!K38CWk=%PysG +JZYi-d>FbR&*U+IQAclx-kwT49ysmaBkEV8e(Qc~Emb^Ntp2-d<T2WuZW&owQZPs(j;S*Psr5d|Ie3m +Mvja9(~FgTILb2fv3Qm8JJKua)wgmTxn);)sL!h||^en#iRFJk!FK&j7Q9O+&A9Hhj5e@IK(=Z<DPue +y57vw6uH7W~(dLiORo(s(6YMlMU)<>kwI(O5lmpmY}a_XwQ{s|UNR%A8|lPU$cKF6NnSfq_N?H8A?C9 +Z55@YPB=x1@8FS6?%FQv)W*mITJ%S7Ozx)Xvq6MtaRN{>TcMu?54nU9COMZ<30gm@}5}^IMA-DHjitZ +J<cCL&L8FT^8KSvKl}W%|6UfQ^?f$4C-QofOPE4f=a)QU@jAKir%Bv(c~eae?Rj$xiv<Mg2G`2&0nay +B0XzHRntj2^_oLmEEQm>oq)W-z6Rr*sKD&OQHwH=o7>S`i+)>@<o}5kAOMjnxDqe1`?f%e7-!64rg5c +NtV6hJO{&BI?+{ea_GhciamU_30f{|^^>^CpoJ$?T4-BYGKFaFny{}m@l9G?9!9G_z{o8b@h`~l^`8J +>-Q7@dy}d(XZG5+F<9)O+c?74wWl@GOq(r9I#4EULic8)u(V)zn7pcv<Z89}as&SH+v6TCxImozq+}V +4MC%%c;UlUR=@e`_{0>P4EAh2kneApiiuSX*%X6<u}WDm{TB9<|1jBbQ!Q8=RIC^X7E3go;o`_|HaBD +u`A|L_R{$+)BTR6cEkong=H&SQkaVw{%9<dA$}7c!4)zbhzX}X#*;lDt<u?fyk9@I`~4S3#xx`ji!C{ +|IcL3fk?<dq5n}74%1P1?=HfQXU&vp%I=~Kp=IlU&Crqq=NpQLN!(K-Kzz-FpB#0sc;r^+t(b5}@JmN +#<HyjhKtHA)G(h<%t`Hq!8Wu~P)CRfDt(zhwsTlPBEqy<5Hbduy&=adNn9i#i^#=A1gj<e1*j1THTCl +DJ^mRfSI=O<z4qkqH2w4bDyA#LSrZa+z0H{*j}Bz;E6eVbg1vfCtr!pOMX5XMbhE}IKrxKni{jyNWVZ +{Kyh;UtiN1%+mvgG2oQu<rpZ%^amg^C_vWt>l<#Ni<VCk<!{lVNk4N!J81TaO!MG!ye^}iHsIIz6?=- +XZER1ZI6`Vsyl~qI3~lTz{(y6X+?dxZ)4A;D}oK4zAwwSrhRMFH!%wmvQj=w-pB+2Nu`>O?eJ_l<D7p +b+`nYTt`?PAQR-}pU?c?`|L)T2Xku!zvK85I)d0D?SniJN67%hhe6kg)_RuUs{^KZ{0Ry>VIOS?ZE$N +dDR@}z&H>E9L`NOeD)rAjjRUbymW75g9twmgnPi2&4=qP&*_id&rth3`|7!5`Qn>>?Tdj&(zIEh=4ef +#F?Af9fJ9SszCgk`>v@Yxf}pn^wah#!oCOK8Ds#O0yrD?8b7HpgLB8x|*6naOcB==)88?SSZkPagln5 +3#}}7}xP<=gF)`Ni8LP`KhFjF<E8wM-I~4O|yDQd)eWeJwCg~e2Ey;<g7TU12ptr9v0hk(<C@fK@w{7 +#e{J;a^HHLy?XsFd-n9}ud{c5efc)~_SN&(&%XWU#jAHOo@c-$|Mm6rFNqp;T{K3&+sm@Di<J4ydq~L +;6N8Jnx1PC6hBgB{Dm_n2P97I&Qbeg<&7DW&Wm~&!Gs<5D39oxo)3~N_;+U={3<q|HFZM=w(^r&x5Ba +!Yg5)HVBlj!>1pibY8%`CEK03-l2&F66=OOSYK{s*Uj!78XHt~WX-FSwn1yYGMI;k;ujn~V>Q#Z8moo +6}hAfoTp!A}C0oN`^5J<8Y^W+IAa!D%zHlPE#PvnWBvp0p3i>>}MH5cb3d0n*(CwYeJLff>3P(XY<hz +@KXw7YD@D`=tp44rp9=Cn2`m=Fo;P{C6h~2l_~%XfZ<&WJ6^zfg3&k9A!^2@hWN!rScW3jBkq_MOsk= +GzBSB4j&FE;nHG0Ub<NrXe4p5pJI;D((LB6;mTxa+f&c%tOZosNVpwmf7SSB1CC<oi`i@|DaDf-M2F| +OF21a*nG|_?+&`;}LE-!7lkXDqbVB)b45)bM1#o{HyX+4kPnJpvs;TUF`zFkj4e93VB(f7vBJp_AVlI ++H;AY)W;UCBKG|TxhX?`++7II*KqXI~*NYX0dZc5KFA)h$N2D#tlwaz0bILsxduv}JiVe81VV<?*8sa +>`x*yn|uxSES8n>(iZx%1wlk|yX660R2D4j|J8#XwjEO^yzuB?FNtst05G9G;FegpQ;NT0evvoc0Y1( +cFJh)uJ!YHs>;Ts_a`%oI^rXna7s;^S(O9;|E<aIf|wH0HB>|LHt<~9xgtle6{=hF()7ZVt-vigLWvb +#td%KT<dY-ox0eea5K4M)NkRWUo;<%xixA^oTGhW#v_AWh*safdHL?e<n6bor?1}_R}XOjea#HW;1K3 +@a}7`qL(ggshXeYf_7bh|<7Q@}L)bRrR|M?`vTzbF?Xq!54ik8-Yh=!E@49Hyem0Nh;FtYT^Uq&=(P8 +7T?Ar_4--H&9#7*9xI9}Fl3BCy`1I4lyATN;rp?o|hae{8zRRM^>^y~#neAB740dbI|4-y4du=Hk^$s +dB7X+DJE;h8)+mwc+YtR;h#-V~%J7I2_hZiD3z)tjj&<X8a_%8nbXDM+vK%nM3X2DRRCC@Ft<Q7+UuK +=cnhK7z)hrp)-e0c8)zBg|Q03u$kc0#Bkij)p{2m%&7#$ZWl4u`l^?8}bt*rWv#H;aQwls3XfAp2tn3 +nGTDJ?a^@d>FZ*&=rr}SBpLDX6He>e6%v#4cle(4Iq6R^ZBY!+;*j%}?sL1BuAP4mi;ei^D8p<u*>;r +y@kd;s<Z}mm)<B5j%{5l?TqU$&aGg#-zNncD<8LV?7=GNWi*<#C`G}B!Y(x~)s;vY7ftol_v^?VD3}B +FA<*D&7mc?~YkJy-ol_yr)4SLI6fWVmQQYHdZKFZ!AS)B2?2{OoVRX{Qhk6qp}R6KwH3`_^R8luha3V +Yf?e*kR_LuhVb>VIb~(X7~VSnrPH=0L?qMKrL)1;s>rrN(-@ECG~$EOjt|wyc-HEV8Y&SxEj1)yk23D +w-E#4?#-RjmeVA{J^R3!f%I%>{tW{hYnnqK<iI}r5MZb-1T|H{K?;obunvlSDYn#oPRE*Ct+(QMO)3w +;i9kF&>~&kMq>e?n}0EIr1W21q3N&ssT^LOIAyHf3~ymK0OR?2rVEW`<>C@)_PktH7bWxLe9;1*R35j +*`*J>F`lfA9GA;P?4L^~Ce|a{TNSnbqCEuXm`CZP%r@iPm<a<#0F=;HW{h>#cdJy3SD(yO1$4DoTiti +fTu~;x<Dtv0{f(#?p`gDyIkV?stf~|uRDpZ03@rx@>xQaB>DSiF)^rg)SK+oPG<3hMWM2*VsppPINmv +XTn#j8a7%ZAZzFsWI@N984{&nqNV;<!rc$oI`PaY-{wNyOxcoa1ETtjDDr{Qv9gYIYljLGY_o%3+z*C +z!Ou`Vu?V&C&x}8coaEXm4NO0~@<Pw<f7={0A8G0l7)tsAHz<t|z>C^*kIhOfQ@BT(mIh{OIBi$}92l +Vr3nemhW0Xh9TzV@rfs1m>zcrV{5Bv?-*n4djA4-o)z^_%X|23%-xe#wRvOoEp$H(%M*|;&3|vcqiZ9 +dTmVofjfl;p&bk?5S#b>d;&VS*`aREkdHnfn$;lr~APF~K1@!E3!icrF|6Iw5Pr!2R-WK~X#Jqw^YoC +pPamc;^n$4(2k+@3LnYs>Eey2M3iEi@;Q8WlxRq%@$B=7t*X|kBODPG}EBI3aj{~Bd&Jx*rw>Og6Wxa +cFq!-6-!6qlKSrWML@1Zvz(#Zokp9@8FX#kj?j$u8|ohtn`3(bU_6MwQ57OVeW(w*+Fgp|Q9y3~o{Mr +Oxa$YPQigj}jSS$!_y(8xPHbz!|W3m8oEG6Z-Q6ZoLPMt6AbsLUN$I45x|9&0&z6k+IaG7KoH8j+Ihi +f~dm)WZXx(xI<$~x74I$_Z$n<d&1_tkX$bvgIZD;&lONh0|XQR000O8^Hj4?VI%|AO921?G6DbqCjbB +daA|NaUv_0~WN&gWaBF8@a%FRGb#h~6b1!gtGcjXtZE#_9E^v8OQB7~cFbuutS9sz=CDyL%h7f`ylXl +u9cGyl;AO<YjB#Ki+|NY!neEDSO`T041RC^a9I94=d7=m?|f?HN<7hDaVd|IB+8W-RK(pf2Ga0g|rk7 +y`xS>$7{<6#1LCXS^$E<bd|n9LPO#Lx~&7mm{lt>+{?g6A#z2w&?}2qLAqd%2Nl2iC>wbdVOo(|&1qS +`OQ%tJUx4`sc>#B4}cieMb<mYQb69x>|H;LlwmqHh9n{l6j4dR6*?wN{3}K7^F)wp@Oz%5a&+)5eFR* +jHuYC?Y=^j3S*53hZsH2vuscC&}>rC&3x;1#uytPovS$WO;u(2%d8j?bA!@S%b4dPf6u40>9kN5(eU- +ou!M2{JMkd>{(F@>^yRpiz*_=~W#?Ra!oadvNp|O8F@O`u6P2jDLHFkM_kC1CvG3k1^$$=>0|XQR000 +O8^Hj4?LTM9AYz6=T`4RvCAOHXWaA|NaUv_0~WN&gWaB^>Fa%FRKFJE72ZfSI1UoLQYwO3njn@ALX=T +{sx55_5VlS+MAHQiE&#AqGJ0&Z1pB}8Cs&lUqaGmh<lzh{PvF~(`q)$)+wGv|K!=5Pk%yx1|iSPIbNA +-ub|d<VBQXN#P}7lH@T56a=gWBK}Nv5IIqiu2V+?Myp^d%{+fbDC!$a#(X>K#ckfSmg<w<Nqj2Afa3^ +`mh!R#1fV9d@eQ-BQVbyGVD-Kv1Uci32dlX0#fDwd@W#32%yB0F!Hd21&cC45(5gBKhlIGs4o)uhd}g +@KN3_FH_>FdpfOPnD67TZ)%vI?NW_3<5T&V<q=b)DSi!^s-@OUGnw|x=5BHw?#lE(#;g#v*?^j?t*NV +xU1ryhUYug`BP5aIVb2<f-@=PbNEgw~VwSx(G)~)HGgo{F`Zm-%IPiNP*bF1X+yZfn)M)vaH-k^#*%N +tLSV1BlzcJNIZzp(?y^8FF20LKOEi{%91Po$cbU!N_Q+UDn}1vjpTnoQ>#`1jV>Hm3$U?OEf%Kn?X9N +{n5{xBi@=Hspb8^Ul1LZg@(x`YEHDn1S!2RS#qHXVXB&aO1gmFm-+DHq3krO_+fxg)x8Vuy3H8h3<LM +YtxYqjRV_tBtIGsJX3n%ShrLA)^f&{6m=DU;Cje7^D6-ZOwabEO?MWQNph7^)Z$pBPL+6>3-m<!V0oB +?J5%YsIV{9T)8;H+K^V^0V$Dbx0$mk36WF_tRQ8PQIhqMP&tieUD}gvqQ=$mGks$x9NqL$?f(W`I^^t +r}NGhW8coku@S4T0SX-Va~MimzcVN4Tj_nQXzsPneMRgSHkXEfHxHYSAtThT4Xa&|&Qy+^zys%c?}<1 +M4axUXPvIeI_Pv<WtRIG%Yv<_?M9x0erp{r>KKI?()y`?cp}i9%YOMx2A4&1psj(esDDF+Ib|7n%|js +G^b-zKX&P&60eB^vesVpEK~$UF5#QInNegqJPms!h_^hqVbZ%KSCjPC>b!!xFjwS6vBATI6_E8R`i6- +v9{8sFw{9o=Lk@Qb5waX7#MJV{sZx7!7D$NXUH@{Yh;UxE)L0DL`;N&<4Kc6eR#+dJuZ#~L!^f5LbgR +IexR<y`%{K(fdF|`_M5(nwkgT3O8zFRd#5DS{vZg*k5MWSuMBvEHCl1K6?ds#L_)ACQMJ@i>)7AW1pD +_W$SSciIpy14j?POK)d&)p%PezQ#;y}JZ>yw-4DwMkskb`S0FouDrqae$V{ND%i?zLdo?Js7&C@ks>c +e(-EpXH^n@xjZ-dZ7HI7lc<$>r^)55hqwWJVBsGH~*YXdT+(xFnLTa^Mr*hj_h-UE>Z(qk@w}@wcp0+ +GO;t&V@IJefBf0p*W?u0XRI5^DN<ICM&sCx~d_-d8k4{fK9|<zB2d-7l#>=Egxc^V{_qOeLn|1byD<^ +yyLS(PXxS$?2s!{sM9yW@;R$~gv}D|ZO8!k6)q?)3fKUt1SMs_klP0?5OYBo5QM26l%aQ<S#Ny*0G%n +th3BZVYX{%-BF9I#93D?Y3wZc?)y@tE|5U#AIqL!xy3j3JxAX-9{+>tm(9<k&id$Ejb(vlQ4&?w3zB6 +_A{4qE^zKzulqm}Ol@Lx2GWhXT#*D&`Q_$d8*%_}@9QLzth(AxoWOC2vjn+9bO;M*3AvY^9f1C)xt%D +SPv_{Aisqq>HDfxa-pes|^mfRz8-BTt!s!4=b5d7ja0l|%g)xeuE1Ncr73vfpV)iXTIV`%6Z)q6W*W_ +V}O1u|$+3+@MHzhiJiY3BY|jNLFoJ4Y^*6T0dSx)~C5$QEb2Z{-SN9SD$>6ewcf?ux#a~Ld9`Wc9f(E +Z2Lh>CF<a6CivCJs*Ab1<CTCl?5om&ifwCm#AQ1ayMmN&xEocZhpzIfi-*l(e9!U)L*&rw4Y`u&Sy0d +Ag4VyAuJKydYgL9aH5@hKUBS+J7Rl08>mRNa`T!}|%$FAzr|*4rp`Y3$<fn_?+&$-|8AetS`jah&Pic +MmCLyAe`tVmwvZKqVJ$6NvGxQSUJ*lWJQop7Z&Gbv7-TiNy)Sh&%$;T<BHN4CEylE*n;9~fb>-EIIEf +5dtfs>lrIGV-s1F7`BZS7E}nk32lj4^ILQhT~hURAUOF4f0sfFsoURIQ)=wjiJX3m*OjP)h>@6aWAK2 +mtd`vrw1JwYa7P001Tn000{R003}la4%nWWo~3|axZXlZ)b94b8|0ZVR9~Td9_u~Z{tK1zUQxa+Nw%Y +IiXuFXay_W#7QkVcCekUR;wy<<8d<JUySXxk@mm=K^GPfAnl6dvImYFIr6{sFX7FMe<UG5K_XK7GBfY +{-ZyXFdpUsKQ4bc0PvhkyDDt599^YxT4q%X^Yetu=96F0GoE$$qfiX?kGRfea;DPrE&EWkj`SrtP<k7 +IdNTSEB0|ZYAi)fb7B!)bJA|nb0N!JQQ7%D*P#Xk5n%Ne~aasv4Z$+9HKuRTT}NEkY-ktZ!!nq&m7X} +$v7<u)mD2nYd0tOz5QYgjTb&WW!;%91PU6Ce4!9RCsUE|V*QM2q@1agx&o5duWiw2@jJr77_k&=|Zh< +VZ@gzPOfqrh#LP+$XB7f$qT6w$AmTHiQSNgX;&NnnU5F&fGK0hN12Z3{{^vpc)1s%2rKR*BqpJqPu5c +Yh%?$goPlaYpBhEF&paUSm5-@)X*_Vg9mGb6cf!JoZ*IgsvEldR0JRCuBkarA1T1JKs(n=7o0Orv!Ux +$14CC&4Gl(?jZCWf6r8Cx&{ac0(Y7{l6=bNsA!1;ej`q<E+0X}u>O>uL8Mc6yOMa^})pab4YUACUnc? +y~jBINHhUIYCFmp5vp}HyuWByREqaaR0c{W$Anq1Jp)h(0zV_?@-xe8Mo8~Ru?2O5W3!r!%QbeuUQKm +pa(9Ujw~xiU$XAVn5albj;)JQt`$XwYm-!bBCkqwR<2w^{*9BACyEA}<)3&w)m1!g45Lid{qIA<YT%! +mQOQ53+Sug8G&3lqE|>GTd)1LNCkU)MK4$v-_w8__?M&R`>_-?ul4tMG(*%T(=K9H1^3&*MH}*6M1Oc +!r{_m^OTX&37$8*4fHw4T@t1FdLB?LX6`FDtK~tvCDuL(ph$f$C!LIhK`E>9B>p@k@lr^naV}i?Qu7g +rMOxjb#>ucXYy;BU=4{oF2noC;sl2P@p;*>lc+1K|+~R15Zc9MrxsimUEorrTojBoNu69C)H0J8s?f% +CJjXTdug^I*9kD_pqij1>yC`px?ZucY4FPa?6q%kbAFz)c+-MWYdD~~O4Z1ZBmzw*I03kN6Lg2Z{(KR +n!9H2Z31Z^_)<{<K{*cdu^SwU7~Rq7LWN0%v!|<!neRW$p02`gxb{?VtDtlr6%0^1c3bhwt@^hEI<dj +6|3SFWk-*4S2Wq)6mQD7bogxxySO1|HO3K*EDW#^gz1uGLj*6r@#~`P@v?OrM+#-_ab3N_8|lS{l1gt +TWP+L=A|@WOY@a9FQnnb|InLp9R`b8cBS0u?rGocCfw=UhB7Eb5_y|9*zW#<Jpi+aE(wDq0D)WJQ)Sy +pD7iMsZ~%xXT@+E?pv$?Y!X2sb-Eu+IsM>1gYK%y&f2&I3q^$owXQaqyy@wZEGLKq&Eegi4xOO~+x!@ +%xbMP3BMS<YxxW|0LLEkx6s!R98<Cbx{-T!l7l|ib>_1A-HXQKV9$u*@nM6}{|XO?BX(KvT+J`<hr=5 +uMjkmgHa-j?PUX?~OD_jVJ<S$Y2YK5@zh{a%_Mr1`OF!ao2|O9KQH000080P|F{P<Y_Ef$;(W09*wC0 +3QGV0B~t=FJE?LZe(wAFK}{iXL4n8b1!3Wb#8QJaxQRrom9<k+c*%u>nR4!A$Fk{O;1J97R$)AO+c1h +Qch7U7KUO`HW6DCNGjPJxBoy7MS<Pz`}Ik7DA{qcyXc`h_!Bwv{S0mT2u>cJz)}~gT0Movl_yX9P7oY +Hr0W}_R%-{nWgi|tI(-adrOirPIG0$+FO`L7SKaF`t8K0}gQecS2#%0ElV+=|Rk{MFp|LVVllmrvEn1 +a`c~wB6tTXDOaT44b#jGyfb#5e-+F-*C>eP*?wUuzK+!}D#qi!6OQUWs8(#VS&Sed+XvIwCz`brhDK) +u}IhlKn>Ur7{N-cD0#r<Sq}(7M)#sQXe~%iMsfAm3~}Q%O5$$I2!YL^{e|5l(>#nDO+S4e1ab5P|ClK +$2nGMCREf<uGI-iV2$vAaM-H;v~r!6)5$JWfS0ZOgJ)9B%$0vI*H=>kR{`m$ELHGp~-;{=?EpJlt&ZX +AZILQ+3VJP#Il46F+d4OQlRHF$v{lJ%$;0k6k<lsVhW>_qY_D8gP75XkvPQAoJLuQ3i~%?L}?=E%Q>o +H4-CnajC~B=Qg=%~)r4dsMOTiqiFus)8Ad#vLYxX88|H$d1<8mf<N0A=5h9ObJnmDI#0QEpmL|R*jWb +SsiiD11Hl|5LJvD9nvy@}wT<i!T5YB}6Oy^m5NNFpIDhcg0+k^LKfl1m7l;a^xNvk`$|3wUfpfq|5i$ +&SE#>mA2)V9{fK~pKbHFB|0PMUmUyS~A`%&JmVSPEfg^vXzUgCJOLa%=HkHTYvSy?smnX#n^XvV^8Ca +wmIMZpz)RfBbTAZIrJ#(^dznD&+6|{(aFxUst`o-%rUJiPyNo|AITx!sW}$f6LbE+)4}2p?3_&Asm1I +`;QLZbnv!=cOAU%;6n!=JNR^r9zTv)-P&wq)g|n9`nN3#i(6Io_N^yy8sg1$yY5|Tc(~W<_y6|*4${A +>-ww0Sl<c+h|99-~-#)i<eEYM5uO0l=!519vA5cpJ1QY-O00;o{RI^Yo;N7|k0{{SI1poja0001RX>c +!Jc4cm4Z*nhia&KpHWpi^cb8u;HZe?;VaCwcB&5qkP6ovPCii->ij|-36W)%cYQI1U81Z2q}=?Q`)Ff +<lr6O~1Ql4deMpCM?HMV3Y52gs&BK-0AEk|*gUWzS5yX|&)G$$P$gNXtiX^5qGvOs32AeQ2Bf<epmzf ++Gk`b!GK>)4=hn4|l)*<}OUMv1?PqnZk|q2VKLr7v1ak>usuw;mT~k3y#n{S9YuGTALCY18uDa*rd7| +z!qEOsA-u&rt8M)^R`jYY!FtPytz!Rg4|dvxI#|V+RD@lE_Jg3Ty<*N26CkU9UEoU`4y~fS~e;hKxNH +^&QylHw823^dTuThf>zh3DNUnS$_MaWtDC5Yt*TO~1zkc~6wawtJ@m(tQwky(%SVJ$U;^emIb$O_f;& +Xu{0@+K<cr8cP7@9zCc=oYnE(<+fG$pA$*4foBPOT7>4b1}Bxpk14LS~^#fZfd?_;xh#IVVYACfU5W| +W6hTp*_`V)C(XK4vneLJScBaRT&=#uCKTVQ%F*r4TW48c`T097!a83}Q}0Mxp_R<}{Q8Bplw*5hk&q4 +;M(o8W@oonYb9-TlZ6Uswt5o!LA(7CKi!&XBhKj22mnhY*+}2Er=w}jQ59u#Q=R2<8hao#4b=MSrWT? +Y%Do(DPlT_*o4L*b=Jh!%Y<X$LhKC#Ae;%;Gg-*)k`fO^N=!SZzj${Sn8atG94}!;Ja_!*4>1ga+?p* +cmwDT?RxOvHx0SICw57&>janAEQ8q2=u5NhPW@WBR+zNtVRit$dqS9rl?D1ive?I_xs!dv}8XmxL@1! +??-qWXU{Lu|x_4>YKgCF#A)!G_A{|6v#i%_?osT|rWOB;1ut0Lb6-J`M2Ee&;<sps$o6sq(!!>(Qby3 +#LRTD@oN_n+uz{p;X!tq$4u`rqhJdLQ5X;Szs*^Lr=1b@FTP*)?WnO!*m{m!0!fCqH%a`W7eB<!9u1@ +uzpbc;CrioqYIY_Wl-iuAi&o|FOHjy>-`}cK5E6pS}F@kC(Td?7Ggo57^{iP)h>@6aWAK2mtd`vrs=Z +SUfxi008h0001BW003}la4%nWWo~3|axZdaadl;LbaO9XUukY>bYEXCaCxm)UvJws5P#>VxVaCO2ZfH +EZYzvBK-Z>gurv)4uX!j6m6m9mjU=ih6;~^|&%UEb$?~5B9WW!U$m8Ad?#H|1@d+ILd<3yfM82FrX%< +J%EQOFK01!p?GmN4Ej_W^g|3?rF?FW~K5a1{{f?!zx9f9S>)o4)b@V_A;y<U%8^DiaWM#G!g><TW#Tr +pLVe-8b~hFNG}xf4m9NC;~sjNv(m9Ih&}l6eRVsbE!R$U5ifj;7>yrbP^YoXw!rY{@5tped)Pry#OID +g(;z(2x~OTN+(*6ZBWc6nZiouGec?)ca7Wmi<91LA7C~)Dc3+EpdE&+^o&}&a&EmD3n|(mSt!eq%2>S +Xi(ppuV^fDbj4V?nJPIUlu|%vuHN0uHZ~WmN+nCs#6-j<xZ~Am+P`OM$w&PVa60zWamT!_Lxt2GkL-6 +YYIlZq1$89Mu&LjsRZ%FBn?O;+znYr(jnpTKHo8F%anE{_hK>Yl8WMWWxL(*@7`F@Ko}+&cw-kOSWVY +fU&5A2`<{3v66U0z)&}Csyjwf&gnsfNnddCX!iNfnLO(BtSnIWLe2$>U$zJceB->rb+EWu5XSyLfTDI +t?s7L^jqm6<>g5AZBUzrnnMKY5;`4RFnc`J0kSDq@~%K7khni_z9GJq~MYF3w+`UEZA4k(fy|H{phf6 +eH0FKUpZ5K_Lnn-Sa#_9v_CKN-?fa9$b%COra*?r)#Ei8{dwf@~<&3tf#u+ZxZJfFHjH9<LcIl5JD2Z +Kz%&E!-&laL})HjVXDB}fIBNKY&Q8#8^T~xpVAH+hSv^->H_rzed>Y`nAUvbVk`I46h8D5e&7EH@C4p +-B^Fh~g!z*94W<UBR+{2b*M2UAp>-}G|Bb|$5E<8DD<ku?!ce#VBM$hl*@<Zw{YpnJSj7TTp6@z4faw +&*lO{~}Tw;aAG3XzoPu_x;7Q%LOd)`}cy4^DNS*j2)<?RPo<JCT3R$DH=unD|=HX1!5XVb7=8H8?Zm; +Jcr8F<?ot4^mdqT>-Ah48!{{?a{>T9tKtv_-W_t>pLs8MUB}Ed+d&{5J%4LaP%pA0{Us{|^Wnv(S+fd +Q8WN01ig<_#gr&2VC8T#Tj5>@hKGf98y(bY+Wx_RnVR6qzzisS+v^e34K~G8C7i}?~n@gI~CeGUIgf9 +c#x@s;lP35$^yK%rS?oIsW!VPZc3GtCL<1R`W!xB+?<5)^y5a*S01#e|1M416qDOJAo%uufaq2bvr=Q +tPUSk0>zwwfy(*YFjMVNfn%Y6&XW_$DZD6|<7mls~V#!DvCc*Wg;A~NUq!!Ysu`P<)de|inhzB`%QHK +c<Yox;t>OKIred;wSS|eqx^YL2G6UplWnAJhYI(J^L#c1>Ed2@d1HR%4Z`QZU|kE8qod#(%}HWGNw<| +%KAO<%*!<#}UjXu}Gd3N4VObFE?ca+R}`md4(S4)x~Nx;?*q_3rkDplB}J>101icCSg=IBfeUCFYI7q +LS!?)@du*QmDv3^VnE}WaPyIU);CKTQ{sdaNBllarlip7~AXTP_(y7ez=fyllr{gXD6!*tX1}mHYc)o +h8pxrmYBJ7%u0bbVayY{*LJjc?spdZ9Yq`18d*}l5GfvU&=*Urq8xk5LviH#mM%&ya7LJv+jxzlgzH# +|dVfbiv)rJSdrZ^36lvo4S&0p#+8Xl=`!YxI-Q45a+Ro6)#O%%rc!{=;vr)Z6!w&HdJN<^7;WHuKZPa +XS(*?rJL%6~o1{>YPFL^O+Zg<`+A>jKYgcUZip-na8Z%O==IL2MLL3PrdpI4)~*4^Xu^AK*_pkdoQX< +F8L@?ggqkWTG5YnDTpVUs4UJ%3$a*j0g^xvDdh@-54&Yn~u2HrUD8Uf-9`ml7N9cvDYniPspgZ_$d|= +0fmX?H<>Ng`beRTHRnp#mkzNsex23m-gyfu{=rfWq}op-AjQr^-{LPg)H-=w<*?5$L)ok`;8{Qc8M>J +H%^`qzh>W#7dXUBh@zZj7%KzHlEm``9hqQIo4VtihNZ-76^p1fb;TPu=tKGD*D>MtU~=8-)V?eS<X=! +r0|XQR000O8^Hj4?KLo^*1pxp6xd8wGBLDyZaA|NaUv_0~WN&gWa%FLKWpi|MFJE7FWpZ<AZ*E^-E^v +8ek55YjF%ZS?`zZ!`h?h-c_D~T7#Y@3Uk$Nla#_Y5S-A&f~5i9-hCQWM*36Gh1^J5;F0j=p(K>yA)t! +8k%0XWu4^a!Vy`Yvr#n`<ISdR?8>(Nc?&ooiLKZO~!BwuJ{E4nHFL;7PK3^wQ}mXlu%HbqLBDSgzMA* +jfk6I11xwW}_Plqe7Vc{d|5oL>-DgDD18DRNKscqVvBuIpqyy*?y0D=uam5Vw^XOB~!!{=?eOS#$ZtJ +iaLCg>k>zy&*>vR?hEBIM6KIpaL^KsKY#IQ5>g@Xk}B<VaC)agSw3Gz;EXf)7b(TQoQY%;`GViU=8Z9 +SyKNQ>ibJX&P)h>@6aWAK2mtd`vrvesIlB}B002k?001Wd003}la4%nWWo~3|axZdaadl;LbaO9XX>N +37a&BR4Uv+e8Y;!Jfd1X?;Zrd;nz3VH8?9gOLeCTN~(8I8GLk|OrtvkDlP1o9N$)l*IzU<paNw(8wI> +Zt6_(;CTcW`)rfZ8?2K9vx-J$#4}r8b+5BK#B3vo9)R8OiFt3T%3>{=PX%-IIGZ4SI;rh9_u)t=Ty1f +jiBh38jYhVZa6!u6}~!1mEWx>eQLKg9b;m4LA$<!h{0~s>M^hr6lOEACWw4eGs_z!aIzbcd233k{h7N +Auz+}NIt$Ar|Uf&gX!7W$}{ajew0!Tw!p5kn$0uD2T@_0KYKu%Wx2W1zBcA+S1OPrb-oJPf`*I)cl?D +l?}6}1Q`4jO;DmP?F~&HM$e`ulNa)eBj=~5cu_bwC9%JQ-kh@uenP%w)w20H-d^vSUm}o54QdZMcz(Z +%GoR3<2`1s?~-5ms*nqt?BvQmOh#$&NelfI@Eos9LYZH=o0uOyqNkH-auo4LOf#NOliIZ;K)&!Nk#BF +%%_Wvtzbd`tCTUK;&%UV>(kBXagMSQBxT^pU*VhS}V+ho4avYA_aKzcYR{)XLV$zOoiYW)163lddJl7 +rAITN??d7u&|exMC>FF>)!=@3!dSK3t*iv`e_}*{luMY#Wg%i>SOk%q-cH#N9X!CW{JC)7JD^p=^!n3 +R+DKu3%R^6!Y?bm0%i#xDCFMorN)urXKwd4W!(}vDlb#MXt7NF15ir?1QY-O00;o{RI^Z=IW9zu6aWA +$Q~&@V0001RX>c!Jc4cm4Z*nhkWpQ<7b98erVPs)&bY*gLE^vA6JZp2?IFjG>D{%G)Npmtc$$Z!?)hJ +bt<GFFIW9MvVw`#K~1`;6)Yl_tJVMQ}F_uH?#@gP8gikxKbYUfT>i6s(fH2U3*CXd<4cPDI-Co;RAvb +tKH{0XlN21iFngF^hX7G+gNJmH&46y@N*+MmJTZY4{$&XYP704J-s%t}_R1gi?3m7Bb%n3)cjdBtutR +92S)F6Ar{OPPrQ&l0wV*$4q4WnxjuJS!u@WgyoCD=(uBuU6(~nJ*qhH5e?5e9bm;6UC1rOY$PBi!_z< +@1sqgr)!?^dr>ew=Pg`%qb^O@rpQ0-Vw@hslzupcfW2g;FhG8~yL)@1ul3KWE18-Z8(x%R|03@2JGmB +l4a6(W*IQmMKC>2}Srt12;s$^8PY|CLVnZZ06VB4S6baJjyeRVGNmCWWG^$UYj^w0CxZl|RdJ2d){1a +{X$rG={_RNaglV`t00cuchem)UMl`p=4>^FiZUrO`a+sg)T^W$lYEBSx&#LIla@xottTI<<rdIW|<q@ +4xy%|*Tj-8VM@JgL-#%{f?-ssIzF2cjxiAfwmkKc2q3yo=9H<5%ylUSFQaZ%^-jnlSMROw^)^f0mn#N +MbZA<z&DDpL<coB2!jU*@_j=9V{B!53zym#^quq)*_b6I1?ffNk1T7S1W69Cb$hSfCazD>l0Rr6a+CQ +vozM*fxXp>ss<BewGDQB0ffm)S;<H7S}rO}qx?ZO1I-@w<+#e@e{jvK0AofiMVPeodg2P)#7a<jv-D~ +7VZs{qoUn`Rk*6}bMY3`GlSaS0x!eO#kAy*nJV-dRff!^#E)<P{Y=Z%;I3-}c;)zbHkn;##NuwLrXMe +sWY_z8sC}Ob-x=))>aDjQ<(WCEpaSzh*-FFXL{5GE24HaC17xA_~I(j3^5@ZX2p)i4{Aq$tFngp4Z^# +)gsj>dz5k><D8*O#v@;WnGGA9)H&;@-Kv_}e+$c>c^@y*a<Txj4Uti_g4~@!iFn^XqqaaN{ZmH#`_DQ +eKwq6^PiWa@?bQ{tu7=y$SHfci`UfKD)C%UJoT#ZO9VGGLuytk3guG4hdj80MuE4#C|!B?1XUx1cW>x +028L;5g1(+g0E+^?Fp-tIL;9L340WUT<&IfMJ-xVv=D_Egz5z(re6+Xfc-5jSAx_Euq`6du?kZJh){y +-0@TGACUaw8K}=yDUmH}X3`sR5icUYaq5jai@bV*@3lsy`Gr(+tRGXf%QBFF`(=q$&N<gGlU=XG5QsA +Z6rf4h#NYl%M^i#fNX%0&Rs4bTj2_FJ0Me(Rt0Lpj-O?brtVHhdcy?jK(>&*nc31`bR=fEg*E^Jze<@ +Do7hjeCnpE-bhV(yID5BggP6shV>Dx5u3yNzhJK<nT#G_1W-B@5n0&m~a|5Qiv7@NB{$+T5<>V#O9H( +NfW^$iabZHF>u}L-J5=s568R?edo7OD-k2HlcT}oKj$kbq)NP3m8JdtOquSt7oTdUS|n})bJDH<o3pJ +DQ{b+*$&4QCm`9668sO^W)~v_G{>MERu)M|CbU9$Fi~{%b(TnS3LJt<L~yf7>5C(7k*h^5Yj>4bU^i2 +6kRXwXcKAlY7Z`N5O$5L=L-s(Hurc`qD>q_++W`uSbr~JFj<#nQQyP2bm>%D#&1;!fC%`ToZEPCpg7F +p#@3)G|DCzei69rFC6l-DKV#ybR=GaUJ!jqERERc+Hq=kxj8P_U>KW=f2lFcc6S9?H}LK1h(Y_m|rC; +?M@+{!d1cy(Fx6j%ftUw~=>F%WL$*rHp768k}a0ZmgdK<osmJ^@<fAm63lwUHIjoY+awl#$Eo^&BSVO +G7FrhodQK_Z&Q4)Pc6<pGx_&P>|q<T-R#{qO%xTBL0Y^rv2b_4<5{pF$*GT4ujLTnc%3B7Ix#GR(YK! +j8`CL8?gEyR_JDs&M5gfHP4g+EV)d9xUa8n!F=Wq^#+{2&Pfe47kSKa9kLiRH({C3R@UU)Xneq~l8s& +Q(n4E9+=&)ME1xnz5qq^mUE+00A({q}<bY|GS4?Gv3fB-`5xZEjU0yScUD-WITb=U47($jmDv7`giBv +lwF|n|eb=wNP5^r2}6Re|5fTjHSk;1@_M&6Jl8~9>jQISAqV5WG|m6Ul3)SWh-PhsWCnPDG|Bt7(s2? +X(72~pZ~YTWkAmoE*XhW^f-5<(+e3eoBU5lS<Fy8}$IBXSLnBb2l6-KiyHJatx$hO4UDO#kqQA^6X+u +}JhcjzJEKGLB)9_d^E|3?0JGmhv9I#ci!@E^6f(27+omf=D&|&=a{$IvPJ~hnfM<?$X`yuA0tTA!;8m +!gAJ$e;uzOmo8j3o3R$?sRtT27kLv@iZXgOp@2jMm}5H!GE;FFgoyGxFw!pP8$dKo@eXGE@~eMCm84A +3ite{UXGgU9LT3xDBNza&eJM0Uv(AjxKSLvxqRkv8wNN0;oI>2Fz5c{oW1>`d*1#LPk_kC<S%FLI<`o +4+=j<0$m?`Gk_(h8_ew|Q;GbWpWztM-NeHb14)m^Cc7s9jyemUzMLmr+DE3nTLs)2{)36==h&|~3HMb +GX!;FuTOjq8pz>z!&Pl}9;C`Ffr}KwW1<tBJO?vc#1)a`6CR(%g-Z`(&tB`0O1+7f7P8Fhk_QEk_h@j +mB-+@6wm%wI#5_{;*t50@Amq4nQ9zC~aAE#3i`)gn7%h#I9ptFpVeRom?Jl^aU&+A(j7`m}NpAr^M{! +hN@H!jw?@$lS1!|K^jDB;CZP=fnhvW<N+b{jZy_0jS>2^!6K~+N+INgI04vH&&iwWfU$}0b+qRg4EDo +bSM~B^H<|tVSkD3WEkZp9oQ?-xkqshRWDu1VLilkPgi`zw;vZjC+`vLHcgoJOV#XfCZkrbn0~Yr+M&f +i@kswCWGMtb?PBY7DM=)H~#!bLr;1(%}D(#T&V$IT1mXNtV*is*0q(k=EwK_9bc1OS$nqJOA8Z$dkOI +zwn|5FhMl1f#mX=zxazn&e7fovus!Rs`Q281+I)oL1*bjowKx^XWbL1GBT??6v!A5)vR?^HfPRN%dI2 +$lkN2djf}Bz2*+ftKy4!&G4b;JlJ*a~q2~Q=4N42e~RGwP08W?um)-rW(QSj(ktQJ~#oMfgGjz7UX{% +fdee6ax1IVXh;>}VapAo7-W2nMMYpCQEAq#^N(~v|B0Bvy>4x}qisqVI+qP*GmBz(rbc;YzI2B)CZNY +{cV-ytaELn(JMiu}U(vnW`{HvoNgvkugw_|ooH72%@xfg2R-bvl{xyj2gm>DwXwo<(JyBG#Dw#R~7oB +yP0{w&r`4;;xbO&rzt9BVZ!6G~5jh1Ep--?`+K@J2;>g<5QGWkMMjSkI>DrvyxJBArRC|DW|nDFlAvN +OySy?;-YZrpXCpsjEXhh36_)1V#4S_{~55)MtRfrlB%FX)0j6LW7Kv(pryl5IHAC23#<&S9xO*p9pzf +QniMMG@r|W1eY8&74&=6WUO4t{Js=e&}es=Nx>zcNOF={?=_bk@zG*{zvBaxQm58-@K;k`{?M*D(g}L +xj|BDSz#1Tf&|=mS*j#q!j3vn{m+q9$EPGyQ^;YDB2elzuNuT!+d{RA=q4x+dV=BE`3;tZ{`1|%&H3w +LkO*eevP@*LZ_f%kk8ubE?0Tp-u<M=LQ)5^rG`l;qXFFHdSLegPzy>oC=g+L~i@a3kd>SH<EU`|@vxO +k)xSbfiRKj(ZG8KBG@1K1L4}_4@8~6Of!PIOm@mcsCqR3?%5}JyT9(bdktPOOw<J(h)fWArte3Zt)jo +Hob+m{*i#oGb^-)1`&6DKpoqq-zEZFx<H0RC5Q{J`QBj>Y<n@#^;czH#a1(#wy=F;h%o6DKF=Q3G{U^ +3(*;gdtwl?KcTWLQM%zZb&eBo;v2Ngg)}sB<QYCZv1$sXm?8389M3fFd*p7Etr|@y>Kht$Jhds&iUd2 +aYcPbQOA%*4AJFM9kVWD#SNtRb_JWkbFD(~(skH&Z_X5z(NVP%Z%^1z-5lzQvWv(Y{vepiI4}x2kxip +kV3{U42{d($TFdIeu<kFvj=g1XMa4{uT3{7(OXsG+X0}lqr*Rif!MAkSRc-?Jh?4rY8Lh8+{={(`!2O +7_g88lzWy{i7I50vTvEjEU5y+F#kh+zJ`_jKK0GDj138=2vGSfCkit8M#I^~>DBV9u>ecd%d?mGV=RS +B@^94hm*YM2Jd0fw0-9>ThN+esr-mfA_m%+SVSBIBER+F}y%``e*R!xIlBFn$#cbCG~aY!b4AP2>M$h +Gvs0KwsChRF_hIP>;;1J#9ZJs~tF0r%@(f+V&Z;qIlqs<moibwCi6@6DHPTgZ5CBzh+*$=*Z>e*wZ*w +8SIuusEiSAU>)faD`iW=ad&R4l*+cXhbk#LPPF5rRbE!T;e_7<Iy!m_X)9a@#K5jAd`ZYIF!E$;o??t +3lFtPfmVUbZf|>&aTT3fb4AH{w%I+rj)q<!V9oRL>kS!4Dv5v+zH6!@9&wL%TYt#zG8Qaz%80EC&TYQ +9(6IgvTozXsg{5UL2qI=ZsbQHwBeJ;?Ce%tQgz|S{#y_O}adWlNHvz_W^0*%rKjt$hax+p|er90h#Lj +X&A^kNFx$XSE~CK@fRTQ6<uS-LWzAmC`+pl~~K%5W{AOAV0B!l4|U=k!;kBX#W4K0#HLW&_L8Oxp({a +jWswD7Qz;>p49#Q>my+*HM)1T=NGb;t-hwd9CfS04^v_Vrx-iPYfzn(}N0kioCvGf%&I)HEj|IT%D$5 +GgllB>MS@APc(KByT<5iE3rX$YlWArJYq-Zc@XO}Y`URhm_maJS{B$>1=z-mIPCw;y~%IT_G`V)Y0I} +LvruA%#(YI8peduHQ)@8GuBXA)_>iCn-HMSJ-@RDfP}a$@I?niUq;5OTsEieeBu2*)H*t=#q_hVO^WS +F7)avZ~8aWr!Nla|8RqgL~g?@Jzcac@*Tcc^Jg}%)Utmr}u9T7GAwUH;01Vx@60dtV;qlih(JL^vaCf +$3A#N$B6K-&lyZ4FNn8~(R!P2kxD5ETrV(R7-$MFk6{yR@;S5j!R0{`ew#rYtvhBU(tXu@#E^-054K* +W}kzu~hBn*mhXRL=Qt{*G~`{9k$Ti#?~)X;QuqG2CMGCL&Lv7oNJDL5peh5*Jema9`jtlXdHH&)Yxf- +%|Cc^4)XhQ4&UHWpk~pgUEm)OMx!!lKpmklzDxO8#bVgaL#Ym0Oh&Wj_i}-tAoErS*&IEe*kRj9lfL8 +-h%73M$H+6P{#)%43$D9Sd4>@HXH^Y~K;mO?lglQixxTtOKf7yuEqTm;VOew<56~QGUMXYQ>`>>6`!X +P8cu<g<Dv8s{_OzpS*XEj;zA4p<ydP5dcybC*@<RShCptqs@@+j`HtIiEf6~Wb-?h~mqi^#x)c-#K^} +BxniZxHF*ayfJhuSpwHjhSmTd;@6UvpsWLG%xge+Q379ai*iTv)N|p8J{Xyj9NIAEoQ3SGx~hqqMfGr +fxL`3o*hPo0<OGZt-;+K2)oRhmP0s(F%=ezMJxPl3jl(H)3s@K=r4wfkxAe8FcZOsS`_M2)kvo#j4I8 +sGfp8*wS~NCv=WahYUc!;hC~BCzm3-uU12pXfxK<(R-@j7C%znR&}7md?NtBaP@owpr#>o#_8)Y!hLy +!F+npA%nbkYa~>@&d&LAl$I73t`A$oXQEaA;@8}6OfdHb;T)2!`-;owHi}EkOM(iy;8N@~&p5y*w#3M +7A2x&|VEDmNuSxB<q)gB1*94(ACyY}%aaPF#S*B(e38$IqoQWR)tHi8|x<-H!>y9{a<h}<NnTOa%klk +Ez`WP|q}>tcF8l;8)-v|y}sJ2L8Zz7bis?F~PwQ_C2ONc{{4NdRYtHX?Wvb#3M<UU-;krfaEPcrZj85 +(9Z1F9pW{+0mdO_hYQ5>>Il&1PE9X>tJKwP<3#1$Vl^KRQvg&@aUGg>x^mj!r)<{KBezCDEx$5D?m6_ +yrjcOW#RQhE?5?A_r#iyc2^`Y&FDdAY?^OlcWi8Yo6(Y4=#2&AE})>zbXSNrb)`2wIz&7}pI&hdeaZ* +9iTMJ}sXcY2a6EuLelYA*^6NZ>(-Q3P^EiFmRg*>@(4NKZG>{MDWB1@GUEEMT4?u_#n3ec6O2K%@@%a +6V=?8T>-JIxlO=}p;eE9d`@7eIs;qsfnZ4Z5hWA*spgkwmS7Q&qW+D3-fNpo1S`@~tn{SkQZb_c?nu@ +})FCsbIU*UP0K4-8p2746N6WiKT3!**MsdbX*?0@D&3nyf>GJBVwYx1#hTtX|?H=Q5SmP8DMG9=?yh| +M#ck*h6*gtK8RgsfRML#tQjS*m2R!e&t5%MX^)=kR~FZ8Fcr+JKT5RC*(hZgS(tkTnh8%7|(zpd0WX! +or)FtJOu;8uzd!CWy}TfH4Lo+Zx1X;jVSzA(NLMIa@rP4SebcJ5+U(LRr8eDcMyf)S(dAV#IOj`QjHj +Bi5z(^)iRIeM-+{YDV{BgP~y{i1rkPa`|=;Xn)mjxK(y=!f2LWc{eC5y9kA;_*6Y{TQ?MlKoD2yB-4Z +qCS@diQ7DTY)7k_&GJmj=neVWb6-PfM=I24a88qxhZ;l2%fFAeK$Eo^A{<tsVwV(VR}8S)kDnAc#18H +c=@7cd7O+I8P0!XBSTFJ4d$H|3QGq(}-!1OD?E_6YC+;@f)jUvE|5OJF;E=!NU@p$lPTNj!004mke2n +tcs(Ao!u@F9k1BX^Q*AvM=G2JG`9=3h%XQpHmDw@PKtffqcta>Pj<Z8m*pMTV7G^Z2t{VO9KQH00008 +0P|F{P_`1WX>bMr0ALva02=@R0B~t=FJE?LZe(wAFLGsZb!BsOb1z|VX)bVi?O5Ma+eQ$6_g}G-JlJN +8ozgyZG=UicZXsoWiOuw(=|pE~ZC{ae>fH&~>9l`)ckfOz0s^GXv@{bx*h0G7{cgW+e~9O>y|oRAN@c +N#ptAGrZ~0EA^X%EPj>carG}a77DLa2&`*b?fr8JPMw8{`<US^nMVGY<N!ke%Q_Ro)polcafa;@cJX( +Q+*eb{;N)eg+o@B<bF+9fTQ_WiIEWir9SU<CW6NS3%W0D}l8#|Pun$r$EJlRJ%&q7^bTLkF-k*D8l0B +T(AX24kcuOsCUHaSj1~FDExD9YCeC0c>quu7qBge$)Z_kd*`4VRe-dVo{`Iq)6!sq9hZ>L~%F{ybKq6 +F&&DxMy1dq2X8$JzYZuzp}^Hm6EUdSFPKmq;`saVG>!*!adtjEK0BTGKaR%xhyLpPY!VinU(^@-(}N? +vBoA?XI6fIq$1#DqhJ{WT!Nr@C$Dn9!bl-*uQl+H`imVTZGI5uBJ%CJ70Ms08MNAt8Fk4%?u*!wYS>l +f@oLBOr*FZrfQ8iF*!f5$Vg%ywVKJdO>80Ip=?Mz-`gTSAy237-_sdViuJcQ#Hqly-eeRw@NJ0)XUic +G#2Gt&F{nwT#BsjDT56!nK<&L)ng({niT%NjQ;NjdYN@kFUhiMNe&&<@<Q*FxVs!Q)JG%<n@T$K68Y* +o`*qY<ov0j%gc<_xIKk$Lk+)-1k{tWmb|a3t0HN1oT{qbl8v_$D4g*GZ6*MkWzNX-=gQeF0XJ-2F?i~ +=yUFTeeaS1bQ4urDrN8Ny2LJR*(ghshi^V=`v8*4Se3sETss7-C2BTMFWq)a=@^o$j!&A#DU~r<a0r- +|umN~OEwP2X!ovA?#Vd~69?7hLl=yKx)P%Dk;q8hvm7d31kd1GW1wC!@mwmK^AS%0T=Ss!;aq*$O6dO +*KSHj3-bSM`jq|t!`=Y`FyTlTEXQB}5O@<^>97X=j)B+#i#gO!lBK}Csqg}RY2*OBG`Gn{kBpb&Wx4M +1>+=OiXO@O(xZ=TY1v+l9*n4`D#9Lu{&AxZ8)9;mYjA{+t27Bcy@v?6Y~dq!qC&Q>%9xQ>i%}S|@#_R +EDA$!q~-aluF~`M~z|>dc=sE!if68$hCrzZvi828c-W0YeP81xu7g^(Td}#uCVD74(cr&GjiT)2U`7h +SNRB8o{O^NkkT@%5|yzZCWAXq&?Q?~x9BCB<b2&SIi`YxOvB6{e!xX^wUo({a@x>f;ialoW;ku!;uQu +<4Ly#cMhaa6(~}7#sI8pKL|6<|`^>t-MNXph^`jJa*)~fl00;XptBTaCx-xigeEnI;7mB=fR>_s|JCP +aWBEWbxnvzD3O<u2LmN5{S=R^%5&(@HtRl&s%({_EQ<J~kr2?yj;xP&knB$;H(yxbRw-mt{HKZN5sOj +(`-=ymxi)vE3#uDgBOE_Lvw(N>!J;iex1#4qcsy?UAm8(3ZuG;?FU%nwW#Ml3LjIw8b+dwccZR&TiWg +l@s^#!@}YbtxYh>(biNM57V^&SWuEdNEp{?e^Oy!e0$u_-W_Gi=X%E(a%G94zJckY+Yu%+y}eFAu*6U +UPv2MM@&UuUTAL2<bs`K%3#WTRwPjj=ERkfDUhOF;V~+?L=uZCaU(q%7HB43IQ0`aRp|tO6x!8fQm9d +RZH#3~(+*enj5;^CLM~|Bq;Yu7PA++a;^Z)%H`mAOS$H_{7rj1Lzi>BdRPHIR?+@D}^X|3DdAB`1hY_ +1X-g6K90J(dr3cNLAYl`$FOw~kRO=^3L{@;$SZ@1ot<3?~6Adp@bRsBXp%^;4$nW-OJaf#-WCs<3+9? +sC9O?{>6b#Ih>N+B*=K3jqYniS(a3U5n+R{wLGejjqvyX(#B8tVmw4)%$u|NKH90@}U#vKr#eBicj3h +A<EO_kpG+vl-cMM8S=_g|a*-T*;JcsN8fw3ZLt(zF$I5Y^G9GmRxe{kt0MIA}&=?1A&YzsroA2e*$#7 +Q{2rr6Z#>t>71ds@>Cm2E5D#VTxEGs{KOJ?vTx{o!=d}zCZAv#xv3M@Lah_02L1|a;IBK>Q{5KNeTup +GBACxgFx6dpxg`=|ljTRrgkL<r2<3AU3QOP-Qb{pGiw_PT{(llrV*L15!|20vyOsY1P)h>@6aWAK2mt +d`vrxOVi7Rsp007@7000~S003}la4%nWWo~3|axZdaadl;LbaO9Zb#!PhaCzk#`)}Je`gi{oJO_oO)> +a;CyCSGDWKDK0+NMRC;d<y50&UYa8(CCIDo!@+{`UJmJ|s%E<Mf6@4|m>>%HsEalk^@LJ{*#XnDSzNO +e#GaKEpS?UccY(N%pm3N~@GsdeQr5`04d77hI90m{vIh{6bS+D54jPATTR5pHR(3K^C-_=1eLw6Ovqb +iiUoVFH0dc5z0SF=ASfQ*3S#77C9f+OAE;;3hZC3s4U>C>h)$)EXkNE_Vh7vi{qz{Spf<%x0+7GvZUH +CS28cDRBS+$mIH$e4@lfYi!08Q2WK~0(uvO8>r9L63zZHw<Ar9jpm|nlp4T`4Q-Ce5S=OT5f-y2=Qx2 +pTpd6FE-ivqVmuKgf+2!BgpJl(iyLg-ZdhzD${KdP|vr{r65iQHy8F~L^xLU1-VBzHu6tenGqc(}Rzr +MMAmAyZ?xJ2w_m1_=M^}fNHQca^?uQz2gl7SKUBtt)<#BrrisU?`Gq)M%XoF>OT0w3_<1=E!T$5Zk%B +9Rk7B38}RxESH~NdFZ$sQ_z3hzL?v8W6^OJ`{Nb!LwXKyby>LElMJ0grkqCcDRb(D)SxwK*){Rf?jh` +NdjM{)pAV6KyJlI!PwMLmkb2HW)2;QjoE~P5~O6JglMIbL7?TgAR{v6I_*1H_zcOL>WV6A-?;ae3m|F +m77YF<kpnvNT0+!g<U`y{t{@DjirDbtW1e$;>+mu3L3jvJlJhG@07<39WYCJ|IS2>>EyXn`0JMHc58y +w8%4ehy5UUE3OVeV)0%tU#>fC`Jp9(2H#Pw_At#eTfEdudW9REU)ToiLAQ4&>^7?M^NpRlCgre$R$?{ +fxHVE$h-lbMW&@fSAH<W^MCH8T-oDaF74MgEbX(K@84ix&b$8sBP=$&mmgBv>#i$*h7nV~9<!1)p|ll +v0dywp3|9#c-y&wo@`_K|;Q;xsbP`QwDKjv*&NtW({CcKY1#UF<~Yoy)EAH3G(N><Ei}bdPm=ujj@tH +=Oa(X`KYGqa&I^!XT=mu1^GpD_*(mJV^#r)z+r*^{bOpYYaHbuSaBF7o9H!h(54s2>L0hz!|DsTSgLJ +hjmV?5PSS)>-R0tObR4B$1TW%Eg*!=7L@i@$9>+|YD(-ng8<^yPV2U{~XR&p8Q}ur~VP#-UVWtqJh>Y +C~91YdnI1TDElOQd@hF5n3(_*p-;AB~>SUww&&_t4QAbu|ND^H6}&!iMGj!bh|K<9<Qqf%Jc36h}@Tq +)YkiT(2O^1ZPc!pB~TM*0)2=>#ge0Sx+9Ftk7<V{p$w_&Up6;HMo$c)@k8$ktYg9|TD^L{uAKLx_az* +w>nw01;c3b6(8z_){yPI*dnT&cH#CD~7^=M1CzAfZ>a7&FqM^j_%hydX4=#2}Lj1F43`?A^<WmAoq)y +)Q(K*lZg-^`ESOH(Pyw>cbI9}V$jwt>B=KpG4)=Gn_Cl8tq9u|SO$DUV9|Sp)qS)z9ESf<olp53WV}} +*S<wITO!5GG<TYa@RA=Zl*vd*Khjw29y%uZ_D?-wFhhk<yG7B<lb|R^H69?gLlmV(9#c(pZ1$yj3Yf{ +)bogB)bahmhrpe=vF8YiHg1k%;0ZuWq!kx9jM@gOgeSQN0^tVfDqpv<ML*e+0r3!N24CTL92E^q@0d! +?#C1_!&qCktcM-~ZSJSPBJjSZj7lP%X2^2Ztt|YMk0h<BI1~*mYsxx_y@mza@jDg7yu&slb33u>Sd2; +t+F;4ZgJ=<P*)8IFxKw^iyO2qR%ygx9e5}0}vp5h3(Q-@D!?a905qwq&UrCuHt%ehgcS^1`LozNg;c8 +VOppF4L9$wAD%sHS>J_lBM`(suC{|U3k8neo<3<Jj^*ku;QBd*c^SN#1UZ+}<#<YA&#F`f<-@w)9c3u +9%d?wuNI`0+X55$N?3(4F>>)oV9S+IsuZJJbK75GU!eaC-r%#Mw;+sy6ItIZ!dD9&v!_N)qdsB~*<_s +sWzyG-M?#@zDU=Dntm)uzW<2FX<H7{pi`*rm{ygb>UqFT`Jry?*vyswU4&|NwXkDff;tS2mdS5<-kHz +@0+-Kp=B!=ugm!oqje7x;gJzFyj<`n<+NG+PRY8j$I6gA(^2sN)B!PacpMmy)Dav>MVIi<T3$UF-J9$ +B!TFX+g8CA-7C74k$Dz(rs&HW=;lihVdtrG4`Z}@G%TGxbsrP9oG&k$<ax?aEAoHydXzU51*3Nf=?D; +3{mA%BMR)F*s^q|RE8T;8r4iw^Brnhf4?6Zpk4=l^0uwLL3sqh^Am1Z+mMYpP7bl48!N;Akuh|8NHxu +I>#TZmRO1_D->#8+;H;O1Pvh5<!z5TcYOfu&z3jU2#&*|?K|6=5a0CLg9Ny8ub`DStaxuB4xoO7HgM( +)`XoI`4n>p4UliUrSY)wdoS{TT?LGb)Oo#5Yi2Qi`2O44E~mhrQ|1rt9G#jSd-S}FhO`0(lHBy`*T+H +W^7+Mx)m1FPe}iIH?;L*ww(&3jea41RrTNd#rYQG=jMk{|?tmKoykI3M;+W`J-{kh!pwsxs#=Rt>syy +dgL?gL~f#f86j}E1*sQ7dT$8f#YT*YvCk2bo2a^I|AAkJ$nIU&WDD)(CO}CxohKL{_WOQSJ!Y{!)p!L +M7haMnL1~$L|~E=KQ)JDc#Jh_jz30V$-XN+?%A+%&rnz0Q$+sJHE@I`5{0tBcT_ZIcdS$cZ`W1?+X=d +DNh2v%)qz{Cx!A88XX>paYKWRj{U#)2JJMDv*19zb3mxLGWk`SwYok7f1lo8qdZ2tnHs<SuY7*|OOwd +H`#KC1PQV%xZHtaIVrd+a#_9rO=^6(+v)XY_TUw6S2)1<v!G^LP9yd?5uR2uF9K}nf%RWsRL&pX@E!! +>zfb(g61^Ci7vDmY&8AxMA}(GssMt&@gm>4B+Sj6oWtjV=8)w!Z7Va6~q5YWK*iS;Gg04lIR_Z(zck3 +iE8PiW}$;jFE-br8?f<pF@CEW4wReFV$?{bKK{!4`XWohaZ1D3N33W9~_Y9BQP=^kW?zeBqq<vlY@hQ +!_*-{bJ!Jd+;Y<3v|OL`_Q(ZW@xm6J8HXYV;M^R0!CO25gK{orW_c{8=EiV^H;5f79Ivp=%_v@7I(p7 +LopPD_*GMl_j9qQ&<RC`SWX(Y!88s(|cBhUv#=%`Z9{xsAyU#^7d`vU4WYS!$a64^6Y^T+qlcVF_w>j +!j*Hd^`53)0JZx1$(rIQNF$SkLGHG;)ge?5P9arWZm!&$P6pF3q*yK#?!Q>v<Q906gg?ZB3R(P7yCt< +PRS0^sQZ{`3KFuhAZo*$X#w(I)wv7r+Ss3MdT_6dek96r6)O3EpKFY~?*}<DhbM6rONG<aOh~@$J6N1 +#A%7CMYE<jrV=%OhkFxf!X}Ch8R&(|8mffFpqS#&L_n`R5Fj#rqD5>S-a!t-uQ0Q5#8EwV<^>o0Q}P0 +BjG2L#s-ZyQp_|XUr=W|DCvUZIq+>t%MzjG8i4oN$gu5gsxg_obF$f9r`k1Y$F%?y=KAP3Jk2&I%R%X +Hi?aEYI%${t6_jv#4P6C-5r3lKCKz?aOB13X{f;WSZNGHq&COQ#%i7hl?PuNHjBY(TmbQLsmgj-C>}J +ABO-?lQ&T*xgxpwT9{8#qgdxD7$wY_~w0;4A0m7DaP+BWQKznFFNA177G@V6}W-re*8YI@1g{8Gf;ln +k)3;C2O(I%L{?$90>Uu2Iw9GH@L!f@6*r9U|vz73O}Y?w9~`$PtJjyqAsZDL8Ul_hza|z8T3+Rmr!d& +z<@6e|CNPFHlPZ1QY-O00;o{RI^ZmvZBu}0RRBe0RR9U0001RX>c!Jc4cm4Z*nhkWpQ<7b98erV`Xx5 +b1rasRgkex#4r#<dw<1n6nCJzT#JydKvYOnh~DzW>&uE{9o9CG2JsPmAzwn03k6%PN1E}xy}a0$r28Y +wp5zVvkeevx61(di>gZWcw<tO6ZYIT;)oNvwUJIq1s+u$>^Z9R#d2TqNi@vl3rCd}Jazp5q0;!URr{G +GPaes#?f&<qs6OKiEOBJ3QQUWIvr5zB3@bmROM@)Or*v*f{ir&>P?nIR_4*^3gaHIPyj_vWZwB3TLQ? +*5i3WrCQ@&V5&D<4bdD46xm$(ZHMcnj7j9ZBBKp|um#jgu42pN|MEeD(#rPmMQM$Z;ValM?k#N33=*O +G7^aFOc&gXOy1%%D$2KsMQ}5cYV}+jx~k@tQFUhwKyEGwzhLD)~;_2#_5$MZ<Y#I<`+;)0|XQR000O8 +^Hj4?uV#XD<N^Qy{RaR59smFUaA|NaUv_0~WN&gWa%FLKWpi|MFJo_QaA9;VaCx;<OKTf35WeeI49Ov +Ov6o_BiXrrn_7F;%LRxYtWs!GhZ6&g#=#gYE{p}rTpKhG=Ma9C-jJ_Go<CBhI{%Q_|E`{2xAoyzjCR! +LfIyzz&?*cmSvO@0+_w4)rV(jx)IN0ejNQ5m{r9=l}XSDUuxQMlo!q*_2qe!qu|A46AQ|-4}!2-yKwa +PL}XR^xb9T;J<{2o=QZ69#UZHb<-R(G{y>=@?FBB_bvMm7?!YUTMOxUk_iV-(WDX>`p<azd+Is7e!X) +#sEwzGcGYrd|+o5<R}Y{syO~u$Yc<%O1D<3Ac<m_^3Uu;2KZv5vUQx7E929(x&t!-Z%>3f=QJK73-zu +6g)Tt;lWs>;(e^8S;1^9k24zk(|0YXMGr0`pttp^#djSVpxi<H(>^{HXgo~L6Xw0O+RoZ8C1u(LIUf6 +$nx?0;?{n_Eu$aY!{nk<%z{ipLI9*}7f^d>$*$I46f+&YT+(64E<=>{9k{l+O=6YqY5S1w0o}GybnlY +_dJSNd5SSiK2tAE1U?!jH4Y0My~R!G0x$l!Wor&)<A<~D;3dSmsYKsW0HMMIshYr`FZ$6Ai+URbSmG` +F$u*goCM)NmW8-Q?QoDTAN}`9=$s1ZSvQNh-0jeDibFi!N01&9~m0Tngveh!KU>w*m<~IG-g`2e{DWD +~H`HZ;5p0m)(A+vu3g%5Di??wX|5i6NQJ0?(3Qtw-0nz-ToVp4N(g%B^I8pU;kX3aVhy)Qq33K7&?Q5 +;G?D2N9Qn>f~|v)UZ~vpbgR8>thFby4tld28p<^Y?&w*ImC(kZq&*dOXho6x+N3BG5$7p&%%GB*w?iZ +=ZqOcp(e0-Wx8z(tA!qj2WAAwRM`S+Cm8^Z)pP|ei_y3Xe!_hJPJ`r!YjW5#yRz_^r*xhs76#Boja!k +2HxQwrh-)8VjoIT9o^nc3O2}!eNbNT{jf5p}*`vFi(0|XQR000O8^Hj4?y(bqsz!Lxf{zm`+9{>OVaA +|NaUv_0~WN&gWa%FLKWpi|MFJo_SYiVV3E^v9>Ty2lz#*zN6U(q*<0jZ6KPMj}y3WPh`NzQxm+KbI>3 +}Z8pIAo88I~1vOlcN<3=eMU``jw<Kv#|plB49ldySuupx?Y~DZu*6|dU+*^wyc`%QuN*3)qmoX+3e!t +Vy5KZdZ{~|6>a-aNj>}f;4_<j)$aCrSKU^1)g6(J6kRKBrO0n<`r2zLHaxzrZnLlG+yCWiBMwz}FWeL +}KU?2bwHDQG->OcFJJs&Qy;O1`G*K>cCGYy0$D3Xmt#`)1U>W<P{oYkO>7M7cY|32CW<)ewS4}5Xlh^ +BTN?7%}0iGV^T6YTMVtN<Es&I1{mKLH{^*&cx(zm`b-(R=zr-r|Mhq8E`@ApV+)~VxiCg5XdyH_$t@z +3PPLhd{9ik|;Lsa8cD%YL^zu3dML>tO6`R@AxHFl+JfmIax%w;yED&6x<u=X;g!waCTBN!s+>;70ALT +~%N!Fad0R?iyihkihl5<o&Ih6B{Z&?qNP$RRyv{(ca|+^>0-v6;4vLN<p9cNF;Z8lW(OFrP#N1Re+W) +M3u>GAxa4pc2y(A;a+y20kAmJwa6RP1TDLT*uq9NFsCGvWxLC(MvL|iA6fMhc~jDF9v^Vjs%l$-2DqL +qGyxo-Xs_C)K4#2&UCG8Y=zZJh3N`$$RY0_^VGM2qlErx%c>tZwfom-uD-h~dc58UJHV@PJhSo$<+AE +2Jao|pXny7ZKs=Sjp^ABxLMB(8rsL@dza##eBV_po!4a(~dgjIrI>h_S?O=ni2O{_uPt8TqcK`rkVmS +LkF_`&DdT8Wiy8?*%Lhdw|46gPLry@bcs7*azmg9r0W7r>kJYr*y70O}Pi0VL6@#uJQ3+_#|B(<7#*Z +Dd!sMNEWud<`s~qeo=iob#9jcpq>XsveGgA-)53u_RdkNL6H_#k;rPh>Eome4-NfdD$c#>M%X~x(($0 +!YGe>00W!0vpbZTUBCsV364yHRSdacVFa{a(JGFjtV)``>QEcN)yYS&RyG!}QdoDV`hu6owhh|F2Ii= +tcwpCuE;Ajh^gXZgW+7z5!Df|Euu0~Q6zyMmN`->;za6X%B@52*U{?t|OsI!(%<20`P&}#8&jqowun) +o8-v>WbzSHg}*oQhUrbykXe7gfr;o5Ej?Wy#-Zyu$p?kWrlCzS76^?~N!=h~Q^vD_x#$?+h3ioSLrdG +K(9rofB`<~5vzd`jNe-Rj%6nV51)9eLbnrl8HxoCjjb%QBw*K^_<4F|UI;!I!zHgE9ew5VhP^5a7XA6 +3#$pOu=Ud@uDq%hjdY)Z}Z{-P3YM60(@jCfSU|`qvI#9VEDIf2eG%7xO=js0GwWMd~?oR-?x2T62K`- +&{hH=xct6RvaA#tiREQ}G2n5kQz&lWxR)c39EkBf_PYTap`P*fh2iClQycI9|6s(CsyjMz&(Kk#HB{& +MDT1Hqbcfwf()|<<9w8)l%cmjIeb?;~-h6$1{pPjQ8gR-KO3GkYtLCnSUlu22S$4S3yZ;tn=DGsJS%W +5nUur?Y&{-KThjg7%5x&GmhzlT17d0H5ION9wa|KANg&{<D_jJHFv&AO$I)4CFj)X#H6wU^-AQm$G;b +%$S&{A9ifeCq`=K+9Mx7)VYh}zZBpd33eT*yG@J<b@pDwOwG1)p+mp<#?XXf!MfdQ(5p93&z?b}BC{? +9yupc^`6>!as+l7H;RfM*V?@1?V%_Z`&PlU<*=oVA{yq$QkBXiV4UqQUnE!EKuO80_c$ogW9$0G!H46 +g)RkXtY{C77^VUS|Hfl@kxRik|6AH*r!Bz%yNw2|q~N9Vu2ZR{un@`G0`9egMsoxl1N6d8*|_&;&*|q +2lIFNKczX%ny3%Y#VBCAKy--&NY;Z&ep@8CrsgwoFX0|;5KoFrpZh^{EI0!VHu++XsNP+<vTXsNpX{O +O`8sm@7aGve-mgfg`$OhVo14#|7wvG~nNKw6d(%(0#Eqln+Agc<}4-thv!NAUB_Zm|nV%8>;kbr=_BT +lfos}R61aa=T+Iwx9W4FhGobfd$@$W=B<rWgqGdJ`)GC3h_VQbX$YxJGME`6mg(z!3tpgm4hub@w6If +knRq*>~FKp0`Ic5WW~FBU<#@;ObraN!t#zv=Ii!6>r`}Ex~up7pR)wrOiBxL`1C^P*FeL-_SEoG-(B( +NRA6{4q$X9yCt~yA1hjBoE89XhD@`U;UHczE(C2Bd8gHz$3VtV<p)pGL$*iM=%J^DKcArFWssrOHf5S +d3t5D;79r~vSfa#iU+!dau&3=8;UsGIW<1hE2;Rr9+UBmV3a-?oZ~F#IP4vSn&ovgVL=OMDL+kv12lx +Oms>%EcRdoQNa-kup1Co-Zbroj6aZyC@9r!6!brNZ&&6lbv>b{hA$DFuxwbfDa<rbX}EXB-I1dzcnHV +Pi;MAR9Uv^=+iVjz<I9jZb;6}-TJz%Mc~!Y*ZHqKK;;xiSrwlh}p((04$=Npw?z9paYTh(>|{(z*igN +g_7|BFef+1V=$euR($!m3C)~Jdi*D;4;ai^S^fYY_u}8-E#zE{hmv8z>7er3eteFh7l`WSc7Ey=nW{O +{$a(8%aZjG#MdQSeCRbX$KD~5GC5(01~kAHsjyC$i7)EfOM^;xCVM%w>VZgM2s4$k+xBBj3(y3Fg2$> +PebikJLZZ6bX5(vq;Pqv;WkuR-zWM%5&_o-s+5EApW$@I<;$2f$gglkp_BHHhpcj<Fu|mR^eN{YwMS{ +LLfDL$9HCV7-lH@?dxjF{&W&=a3Yg)A<R=!JrGpAhzBZwVth!RiczE6Y+L+kgjm@DE7Y0b?tYV8yQ<h +Q5g)~Br1k#klH`q$Qv5*LN>7mJM*>omd0UgJ~rv))@!JaUwFz(fUUtqo2Aj*mp?<Y$A@f^-xmmrWvdS +IM@Y2!&&!y>8ld*#p=rz)*D>23!`RFYB1%_n+i3sC*9yn;r36rUzR_S@A-=eED!dd7j!G{r`G*rbPY1 +xt74fnS-A3iS<I@4Z(1#ZG%+|G}oM?Fo`BY3-ko{8rz5Ro`O!1aj-eCoEd)cqhxN(BW%J4$$UPsr?YT +HAUWe`QnQnMh%zW{7J!O&)PPACFOmlY>Qw6?_JL6xG3=0Oor$wT?QnEj_$H%|L1h_3_=7x-Dld`VxlT +s;m<&b~YRWqZU$A4iF7mYY*v%4idE*C{A>s$DSWAhT3|5SUh$Wnb-~ob*PVNvUPwG~TEV28L3H%%>lL +}y#=lw~(CwUfNDBTphj!j4G47)>CPqS(E3}@xSvfqt)ypM+FQ#<LVKDU?L>E~>w5#GOQD+h(dXYhW4Z +?~T#mOp7jV|G7rJMGd28_I;9+D|jxlcssaj<bWf_Vc&XuJ{)<&Bck$eU=<1WDuEZ#QyZwBJykx+Qh0W +dn*8op#TUGvZdoPl>v;D-Z*NHc~jMOF80Un9)JnsYVtTHeC_i}>1XKDc{xuilaWQBOW3|Pae6|G?>dI +$eENVKliZMN0{NykV3Io&RJaD)>@xo6D}Yb^4Q@f)27e66xN|U<&8(xrqbO%O55z##jZYT>4Lc<QZv0 +sSAhc%KCvs!vxh@m49%E6%ICb=FTcmbI1Kt{o!2>*V*lW`NA<PR!;3(MPe+2!NqQ%jNO3SeDZi;HRZC +g)j@-L}H!y?Y0^^AUn=a~Pr-mw(8wyOxJ;$;j1(|!pb@HUU#A*>6McVVRZoRsZ4f54QU96i9lo=`J<K +b;BC;kb2-`#L-fZ@~?}i9J=|G09bhVKFKL1>FCwuM{0Z>WQ6qWs=d(`%E~xobl|<Pe<FBdPN{5aFnbL +tX4)o;~GAVx3$2*XnG7|W2?i@e8N{bzTO8R4$nZNAU9ARKPo&A!zv>xpgR*A90Z-rXnV+w$1#h~x#w9 +#m`jD0fJtj7Du$C2#V7ykHE1-3p;POPVt3ekZnk|?DT)e2*Y^s-^kA)20Ek={)(k;cn=p?hVz`=2ylP +mJi(E^8Bf^%pXtex@HGrx!brBOAFxiXG6@Okm;yLAqc_>{yA>HvI{6NTV&@UuntdG`szIya$3{;Z?k= +lZ_jTBbajvmSUgsk<XtfvHLGu<#Fjs#W8`YAP(wd`bYOv2ala-$=B{;`?7H@Hc>d^Vfu(!(4Jhtqq0z +EUxdibXb+=XU-9sXylZlU1XNZr{)uX6S4dBGFy0I*t3y=a-Q)%6w~@TugO<=;xb<Cn3Jyz{zDwLcl3x +n*8;z7YVE)83oNJJXKiEIKjOaSidj9Zj7)9jSQe3wVV5%SlD9q50k#Up>aXo9uH-#HH8})mw#xK-JwW +b2GWY78x0$WkWnS4-5)djj}gNBT;1pii5elXcmkV2|1(uFJBvo#2|=%|T%G;8syskyOp*-OoY(|D^i} +A)3lnj;Hc1<^;I%>XZPh8hHc;HRbP7YKx0cYKr4$ox)Lx{bi>MG3yi4oQ*TuoZJF4+Q#`j6+z!H3hIc +hdR6~B@rbkJ!y&KymO)S|Ze1PKFKP7<Lr$@3%#w@eUV+gnZpl26a)2Pe6!sgqpO@7VxtJlarr21J`4i +yvDD9aS5skuKHQf_|DH6RS(*ECIig9bBqJT#BjFfuTVS0{W+#*Ox6`SlAFyT5~{i$5ikLz89RQf;{f} +h7jbEPv9CE7VUey!iBElz#+VGXM6ufN{!p6{eg^EOPd(pwS55k?SLt$dm<MemPGNxNm1Sv3@>SS?DD} +=4briH!UnsR(`<;Xs3HHhwuvIQtOl9<5;N+v+Y#iY`&?_jj$kh-oSY6nZ1GdKBa-XW)45b)Ap%b@I4u +f4!45`X2^c$IW&$P**4lJEX^gv#Us0Z4xBTi%W3OYl&=eg-**PY&G~4*Ea&_pR00?!`0PX?ovPb89xc +#h?^9b!DWsn``NmMXduNe-7x9k~N^ZN>oCner~(-sfmtv^RI+qe5PaTg?O=r;jSvF9KO3wd2|k6)POh +*gVgX`XP?2Wz)=#Ax&Y98yy_3SWk>Z)Ig9tMKg+lJcp#Atg`yBWHir#BH32C%gbxe1Pf3mv-iZPK15w +^(vm6F3_3Z^HJvj_K$XtyTlc@fbb+&{@%_T>gjHiP#DclX7EhcT;^M&WNeye?%kT%VB;|P7#(CAV&vp +)N1M&j{l5fhhUwP}@x4sIMU^tIF*Ne!{>CpDc4j2);e2$3%p21*O%PlI?z9LJBRk2=ZUr*65<XY?VDI +vpMtg~np2g8Cx)^A?Kb-&tn@n|8lKgYd%-szzbDi9*gs(s}ct_J+Z6jQQZ}wTJ^rgGLwJ;|H6&<y0a4 +Lh&Xub`*c7E^AyzAjg!AU~I_|6wzd}uHRsH1zYFYU}VGQ8)7H}y1uJy=mLE-1(2MPCf=Vk)WeX4y*o= +meSoVZ7s!EXA*V!Hb+eJR%7NeR1iDIj9bv<7EzbOnB8lHFqeMz)#p0uTQ|U&%%dV7QI5sR3{G_<i~vl +tDYcU=^|GpG+>!AXeinpmYc^TOas2_Hg1GDaLA9z*Il>A7vD^mpTa(O#pl2I^?${y{E0XIHZSQ~&59~ +jMw7%9{bH%lt=XEcUZ<r(+el*FoQo~qscYQ3Y7g>wXjSP7`+6xZbux(B*T+5I+Dwt?B_9Hs32jv7<yg +-cUKHV$_q3gBr{xKjr}2y?4cn8Ocnoj$xlu+PrpMvS9aUbh%eJGD!$DCMDoY0I1(iCxUR1do$9|CJ`D +#r1@}=D;b`_&bIlJ)s4qXt%w}m=-;RIXU+qU8B4`FhG7LMTe;j>3_44J#JXS6&-@s(Y{`(&4YyvnySx +j9qY_Y`3I6kS4w{{c1n6+Icznvcr*e?g<3s^$+g%hEvo0{{%}=$3DJZY2T2@l?!X9k680I%El!yM{D& +Uo)ahE_1-p<<;fw)#VT3^6Ta0>*eL2#s9v(PG)1S?c4Cg^>!B@|ByH!S=^IIMr&Bab9=!=fh0E1pcX` +4Wo4;a_j9utc0tFpBE1~-o%_zludN1-&|q&n(wfC$D2kQ&>l+BZ^SBJ(M05>=;VnTnk)RPwd=>jhbdj +sbLE6Fi4hkM;CO3h*G~RN^2z&Zi4#xY3VxS0PmpuqKCStj@+X!}pX{8Bb){1$%0068pe)EB<0bclh;X +9aW3*KiuV1Bs5xZ<t-tve?5D2J=U=$Sv`q|G1H#qT@?GcLvN{k@OR%=IF07=W12nUM4F7<o*DUY`nTA +Yb_BNCsaL4d2e{+K7hZE~4@3&O|f@C73Cg;{2$pVNZAbIgUwr<pF)0x$$YwcVk=`yiw)XJVLs@X*wH- +Nv!#{c~BCF6kqeUGqv!@_0%gU@jV0gjzzG4!wQNMDQX`<N}FoM3z#?!cC$usb^@XX^Ycry^QmCwVeU? +<t#q$bxmHUkz_?$OWuPm8@Z+liM6f*dN?)Lv!Py8$!>4u9JZ8hN*WcA7CHtoGGqsHN!Jos7<Z$XNh9j +PjhiURd+tdH2gD!25Fb0;Ic*Pves2AiI=F>Vp<)I=?aYVeU3OMopicC0&wNvXj&-Vybcm*|R(dy3-JA +46oXm#6nQ~1GK8lXHfMQ2eHw{50vA{>57_5T4-O9KQH000080P|F{P`S8laXSP60DTMq03rYY0B~t=F +JE?LZe(wAFLGsZb!BsOb1!9hV`Xr3X>V?GE^v93R>5-HHW0n@D|VcNC6CNYE*;PGkT}l7GjW@-)%GYs +#7aa=0xSSpRuB31?t%nGO0+cAMI^X*?=5!mfDdqebq$%3N^fqU_Ur54cqB<KE-n&_|JLZdOYt?s$}6K +?^6U7QB=cN3D2=QOBrNTP(hhu%;Lw9v!($6{345e8P^_&fp;A@4ctI_VO>0{eYW1;43977&_3&*z|8Z +xnu^=3L77n|CBuTPDI2U>D;@rvopCMp+lK}mQaGs+@*b;)!Aj*~6)TVZOS)^K!<SeVLMG4znQA)YcvY +-WmovCd=YF8$Wut|83xQ4|-Y2_D-iNj(&gDYV-j{dHmxBS!!X=mM2q!NYt508|?R{0#3EzgqFN`7+{E +eI~btbSrfg<<Ll7{9{r(2%8-sV0|k_;Ln+7>&~|o&~18N%8S8ASgHj4WmbxY7LVPl6pcLA0mQ&ei>lW +U^g@Va^ZycwnLdgM>g%P-iW?IK5=}XOkJU!94_-L%$lZM)eh^`wN}?`M;QC&`lLe`VCd4=M4?C#=GJI +Um7{5A!FsW$5Pw+nx@*7=!24JgN1cLsdis72M03z7jJYb&)c!<LwEg1V0Z-8qC_Zg=&#mxT&b!RBn=~ +|ARTPl%2Ur=OhqxQstT)SFBj%L0+FKpVuE9=Bc|;+*_(1A<yLwo)nBTz?&0^wb@@(D2+g-@guvIb+Kl +(7CG@d=vzMyRvB|2y0OH@T!XN1;UB0+xU#2OjJB7q;v@8vidmD*5(RB@BiZWVe5Qg{JM2X&$-jQ7MXN +>l4#>zvu30seaY&Vm&+#>vipA=8r_%^qRf8Js{Vo{6cm*Fkd`^FW#&QBp8@->EJ$j70iv3?3joDCejG +Pg#zo7_o%EMN#ANxe@fbFbO7@Zc@m-uYgLx|8B~;lnwNN?p}v<-$nO?$ft>@3({WgU`;H|qBR2C7z62 +hXExMNFG}(`M+c%aCFW*J^$uub4Bx1cMqTtRk~~ac={3HaEjSw|wa;&e-k91T5vsu$;%#2*XOwrkx#^ +tq-u|9ILg4Pq8VJA^16Fm|DSV7Y&L-&4@I3{6!Bfn$;eBQ=<f|aZ2s=YE0PYX@tic^vxVI=uB6Kx5&R +b0LT{Tvz7B6&KaF>oLT$T!gmOG9L;6ryI(>b@Ix3%+h(_@2D=%6qgmBBh>H!u)wajUcxs{%h8c^0;_N +3IIF5^|+PJTJF7>Ym*;&}1(wLJq7S;2&W%eRhXeNY{RtwEufbt`x0F7!9ixXLOgbif}r-uax2gRW9Nk +;LqR-R%B6v^E%@C1ZzGqxB{j^&HYUY;j8D%HeHRl1-m7XNa>d<MA7R?X<>Izpx*d=Tw9z<63Fps33qR +(99#mL>o~E<ZW>5~PG6F&a8&bgfv*)AFGbNNa(socLT_-W<9|>~0|XQR000O8^Hj4?tvyHYN(2A^`V9 +a88~^|SaA|NaUv_0~WN&gWa%FLKWpi|MFKA_Ka4v9pwO31T<2De!>sL%&1hN5Fhb@W%0etBqT_ot*Mz +Y&WQ3$j|+e{=<C8;FBBLBU^mrThIq-ZN7wl$pj<~<}QlgVdMwiSg!a7`Fzd<UC$2a+~IYS`1Np>nEb* +<><Fwo=rP=i64dlIA(E+A=kgag9`7XeM})c=Dsdm%vgHy%n+!@2XS%PgNxjxnWI~KT}=`8K7Co$=StL +Ru$X)cy_(m6IoL2(X&9#kxeSJ6g?mcJ^ibtN~=Ik5-q#y1n?OHXI^7wf+g9e4?rgx%8euRwV;iLTT8! +@Qb>o?bHD<Yf>TReA?e}ax0qDOuF+yANwe<)omPrE6tB+9#iUp+Ns^LoA;+bP))dof(lVVn49w#_#r$ +y~P_jb93)6ehdkX7L?*)gU7!Y29k4%<WgtZjUtfa6JUXYWTT0ZmQc|mN?gF07RDUnchAX{$gE`wh&cl +4DQ-Z`MuM=$*$`#Jjwn6b60Fk!}gi}5Wry3=b&J!?9L)LUSvRxo|@hJV>J1))sgMaU-w8%%wy%DA!a* +4;HQ4h@l-6>UZ2+-Ps4*pN-tS+G)2#Zzrz081P0902~hm4Z7sbjkJ#f<2=mwsSF6d(l=U>P8fwcr6@~ +Xtj-7Auu|a9knM74Z$n~hTZ5wY(@K~Qd!7sD2X_Mi=HoQtWigW;iAK~N0N&}TwU=T!-uXpp~kNuz7eC +<X$2<O??F$mRA&EDxPmFp4^-21eJeA*6<JLlg`D?T?|jZ+G5#N76;jL&K5ozONm@~&@Z*_Q@E!WRWt> +z|bS_6I%^n5g(?5=kJ}okThZO^;KQCwU?%!7m!1wS`7%@%Z6OLtdQRAV}{vWMj?p_Z2SN_Ds3r}4ex# +@J6OhdWBcsdRF=I6J`MKrWOQBEb%)Y4_`f?#F=iT3L(%z%CiGf!~brWY;#Hpps<RiJ5&_VfXAl<90({ +;4mFnA4MD);AYCzY(sYP4J)C(ns~I4JSC>k`n_kXgVHyhS%@ty*W{O!e$?x7o2bYTyaXqFAZgeCxBzm +BYCsoAN)y!NVKJSci+Oy_J@He!siu@lzGwE*ip1k=)Zb312~A9|JC|tiQoC}H}?;>t7X3Y`uUfe`*A_ +UCzOjJ*ilT7meW`O+a@y7Z1U-B5C=Raz6;baUIMdUt_X8?TEovX9*%e~>i1!bkliNGzbW8C+w|MHgEq +w$g`skQ4t*3gqctEZo?*Qo&zlkZ!5U;8xfQXs3Xf`eUt~sqf3}Uhh$NcMS4+%$1nZjZ&~{@6-&uzqJ7 +S3H#c+-5EshLUfr&?`nrJE925|Xo-;8ezQK|QJWJh?77piE4uQ83f`@vq9?0L=%?s%NzZRGA@wd|+3< +(!&(R93ciqo!_8z>OPcef~r{wfG`iJS#I^Vp<m;W_XrMu(I;p>^^wEF}q}*8#}PlogvPs<Zn<*0|XQR +000O8^Hj4?8%lHGc>w?b^#T9@9RL6TaA|NaUv_0~WN&gWa%FLKWpi|MFKBOXYjZAed2NwFZ-PJ&h41? +-CVBvka&AaGH1W`+Nl997#=r^#Y{Xr<yVw|Ge|v`oMB7dR3vZck-ae+VoG&3&nUF;Yjm?)&t-{!3GGQ +7&8#LAgrBVmOz8{LQO(_f<Rn}ApwN@vQp#fVWq`c;PQ3)$Z$dz{Ddk+H#19LVOj{#%PCoU?!Cx+Vy8A +}q4rdHBml7tMXHq<|8P@qK3EoP8wbp$?;1LyfAie5ip1zT@u@OF%`40E81H<gXu9DmlKHQGi?xZnw;4 +Pm=;hTR(o2@ZE<Yzmub9fhL{(H&LE>P$BrMhH`Lo0e{df57viJ5{&D8Mk}^^ZDV6>%#O7$o0B!qqw;H +l0c~yN^;%ONh}08f?8loGieTig7&yApbK=>ujKx6{i_EB+Sbs_ZHatH8~SP$Zn(AD?;U$_obsxQV{bN +ocF*0qhuv+j4bGXT+<wv9if<A0p8WqZd1xV1cU=^@R2JSS?nm-qYJiVD_rG`)e*jQR0|XQR000O8^Hj +4?-$2jnJthDE=7j(N9smFUaA|NaUv_0~WN&gWa%FLKWpi|MFKusRWo&aUaCz-L{d3#6mB0J1z}b@%<; +si`?`~6Vl{U>s*X?eSiJjY-<}wm2LN?bFsS=bOcW3W!zxM%v07&}d+L^X9=b7C|B=7({JiPA*?TLf^1 +F@{KygZ+ZZL>OfhEH~Oc6WDoYW3Hx(v42nRi+BP^FQI=&d%vYt_8f@77AdLjm%3enhPa1b-tGMji}Ck +Qp*OP$wq9dYgLO67AOs|ldm^b-H1#!s>#>Ne%Cj8XJ=0w^EXxU3`JR8PefA*c~#|^fVM@x%o|}k6#%4 +8xm)n!I&UuW5@t~=nZb<ZjabU9R^t1ry4-GF*L78k>kCy1-N-VNbta1Zti~0<0->iAe>r|X0myp0ybz +L}y<VTGEK`|yf74u4WhzdT5*JOg(bLC|&tb&vS-Py&k2iYt*kbZ=t~GpkeDw9NpQU!Kc6B<<vr_Kttm +<klHu)x<U#T*y>U3KdFrA}xm8$}#Z@L*ozQKpL^(oY*(he0gn3}J*MU!u2-ON{2y$0;dVG!FUFKl<{q +SYMU3^!L_mTJ@FRq1A$><IXKrEp}z^#mp_vs2jbYTKA6@9V0mmQ`WCeqSvm0(p-E(zCI_OkP>IA4|R6 +;3t*6+o+n_bDQ)6Hr9=wsg;EF&gr3PpqqNTY__#>tzJs4j!Ugdoj3WFdX+C5Gh!;Y&4q3D-RbH3KS-S +~U%*52ehGl{77~B`N!D|GJ<kBrM4YQ;&M)Q{uy_S)gzuXh`w*HNXhR6Zkqvf!06GGSIayw)wVa6K@=6 +wY_VL5_6Y=t5TVAT{wIM3*K>c6B2~}l7`{3T-(-O`o3}+skG;m7R@K|rx0Ebb}Gn?lCp)O@HN1AZcYp +QuE5odG2DnOoyZJ869<$5mlGS5x_pcgOd9B5e2kxEOsR*WV@H=_<{Y9jFPR1H#H&I{2r!+AyoHHR(Sz ++~Y)4~h(8eyMKefRlNVYrs8IEu$SCm6w_U<*=H$23Dc;#LVO;U6ru9)dY_E23xCgA^^?HOWU7Noi{gQ +xB2UhY{FH<m%W3Yg0ea<f5{&|}_eI3<9gy4aR9FZ!&3VKwxL59kCJIT2?!jk0sq^UcjuoC~lg1#Qo +^Ih^5g&JBTh8TtLw!et@f!l#A$f?wT1kj+-laZrzd;S2EJsW=5@u2mzd6_KCd*4%)(dR_v31LGAE2G} +;$8Yp22%fG?yo4NwrYD5KWW0u!IY3a^~*RPI0yncB)KRJDIdMsuJX#^Bx&6Ua~BK+GEM~6?mMyqOD_B +MLzHL5@o)qRbQyhe?}B?G6Q+xbnn(XYKmKnQDD!r6%%J=+1U^y>AS7azYrox5dyfBeJoDJ<*gaOdT_x +2Lb)p3Yx>_wntY=O@R1c@58>9EyGT-_x&lj!$2I2;Y7E<mt}N&a#kNTMloJ@(=l!yi8c6j;A!e-vfeS +a?K5W13m|&4rd3*DAB4|nO67*!uAh9Fd2(yXe5AJpeO|~n35#6Euk~a<J0H%$p*e#8YQ^M>&M=E1UD0 +#6hFA9`3l5!LoeHDc+E$TN5P;eoD`5G3BLA#0}4P4BXs)YgQo`}Y!A-pccbypJL>5TQY#Pzr5KIUpDM +s{yS(2c!RO1h0ui4%B+rc$h4U-dIzjOnqMEi0@eJ=3Fd3snY;v_!c$Tn7+7AC?UKFTW;8|I1;p`YO?E +@h7WCLUY8V4L?DNw8k&|9QHCI?U*xTgor7EZZN#XDdXHR>?1Kv2%0YtDn?GuP2|0G`qaS)b(%o(Lb+- +b7@rkT(J`_%liU<?r}ibC6W1RxK4FY9f-BwT;K&_L+SkeZ)Qkez_7CQp={P4TKTuaijlZ-}#)_{=C~? +gOb3c?>`3xNnB3E742apTH>wmU-p#_7&LAgo(wxLd_6cT`v=3r%&zq3&Rd+{70&HS_jiTKT;YD>m~X3 +6^|xwKU=PV)GyF>~Q>M{mL{`IS94-2iMA#U%0QBt3$*sV|)g8dDd|+4Oao@%}*_rS%CL*h}`s?hp-m0 +-j5n2t?%{|UMswz66|4&5s<hM-rtjca^bEI(E_G8qx59k0Ili)sFfChUA19;%^{|6p^)E5jmw6e}r%U +hCG$-_?|$Ho(JH2ii#CM5{nn~k@Bu->ok*9SgtHRvNoZ`0$DMS1H>@MI8@W0oLuptt{$#g<KwWcLki# +To$P+CchV<zND)yW^1Mba<Y3{O=m#748p>fYX9eq~M-7itAgd>$$N91CHgM^>Hf1-p{{`y~enjZd-nC +8n><C0f7f*C=28`JXpA(=-|rYcHW2YZ)JWs6mmXUblEbqJz4ZJ;Ct}AJ@Kk4N1*RYJb5r3m|w|~iKeT +kIKcaxBd`<%wmGlxAl4OZ#t^H;5kt<!l5UvmUcvfs@GB43{$IP*cXH;0+NEq64KY)*hdeE2sr+b|M?a +W92SkIi;A+eS1B4Y~Vow+&o|>vJ#&ctjcDUy#o^d<Frx$%sI}=QZYfOmi#d?S707Jqqh}ld$?cc5y7= +tTRhp#%X>D;#fj&1`m;g$3OiKSDw<AfI+cJA-EDxqO$VdL~rq3O2eW!-{99NyF2_#au<@}>`+D`Ge^f +E!KJ)5s8FuPzq?NU=#W?!tjN!x`^C-zW(3a;xrxrgo|!Z(hMe-_4dF24|Nn_h&0+?H02$+#(}uW~+-x +M_Hw7dFlDx5+kVQD5_?wCT!k4^7YC)RH#}wQAZG9qJy5jq=nWsdAgut^Yc6On)TS8s1()e98MFkZgj1 +YX*dz;3LpU{;7O<&y(e20)Ee6hBpbF$V~c?xFe5Dm*_-6KyF+k}Ja?c0p*L!o!^(l%p$pgohRqVYkM! +<HJQ4{#^Ep;X^f>aw`Ew#NZRhrhz<jp5MT_sZLKxtn$m@bsUm5~Q{P6-&g0JIgdUG^u!TkYRe8>*HQr +^~VYIT)YTkUNaAeJ`F_4z<Vqy_5OI3v`1X?E%hb^yG;kth;aE)Lj;O>D$>aZoFC3q@%4s2Im@(M|qSk +2HGqeVSNI>q&>^4T508FVIy|A1r|xA%#t;<8)zqh~JtI&le`@VKn=XsINB_qH}}VvvfV*^OMX$h#ov& +0NGyT%L`<38YvgRG~|%0uQ1R-@Ta7m3$|9K?4{!`*1O|310!i_JwE_43tk%LH6@)suS$yGtnB07E-cW +a4nJF#IJJ5?pyL;#Z2}a>q6A3fN`?@TV@+EF3WGgOBLN9!@z!n<$17uf*nw-e&5>cVSbR!Aza_O5Y{A +cq1!B}H?-M~rnTs)9gBjM+CNOQWDdaLlBl=IL>{P{5dFO0Jg3`)r)z$(-4(C|ZI2eFEOT1N{`GxR_!& +vz6{-28p^wm!V#zKI@m01C-12sN8Dig9+$2@k>$;3-Sx~auWdi*C@<BV-gB|<3~v&M4vNtXmfM2D!>p +ULGVzopd)8^M5+A<vaNqwsk;wJhoR^XJwRZUcAT8+ZiL*2P9G=NSF*_2~#0yNv+izh`-wR`vPgbJaLs +qydo{e&E!a`1FfU0Pyp3%Y9m&4w9qHoB5oXdBEEE+|N)UqF93YWR(*BMr3F{lO97KBM&W7pJ{_TY(AP +jv0xFa<})4z`Z%7pj2+A?j=TxA-ZVF~JDPTZTo*h_D-?_t_UW_lr9hZ$Rs@bcYq@e`{uZ>RN3OYLVKc +C3v4i~{bTJQiLM*sG=4;S}pS8nK)X@#XG00#Dia@&dt)PQWL6p+dc0&t_>~m_8f&#IIhJ6Y|DD_E*qS +}hzX1<w8jg7RJ3D4u@UUD=51HR#;9YSNQ(QCUs;V#fCv&+G5(hK6IGoqyMh1-V++w_t`voj*n@P*|cG +fTDp34)_mn-k=r&qe`$>yF?f{rNd*i5{Xn^~#>%Zmb2vrxan<4-)t+O=?-{HAZ+bW(T~!Hd<ERq`v10 +4Ymk^M>ZSBVft8vx1R9mBiFDSAHK0%#NYq01#^~`0K&J#Ya9uL?}&XkD(GcK9w~(Hi9b172;W(T<x@n +oDq>>oL2TcSW4hQlZ864rU!ZQ%wVzsD65XWi;$3eWijF>jMp&P+5oOA{L1~TZfcheVv66Yt(ODGX=tC +S-AOEOI%$xunmBPU)$DpZ4vxDj_3hcEkw;1aEXNge;&=IBd?hdi)HP!w+P86NH0G3WQncz-Te=sQr;? +vW^!#icP#~JpFf)4mUv-)(rEw*jQn*;xr1>-65fwtLH5g6v;F^o`KB8cW(N8MX)AA%rv|H7$l3p6)qJ +!~Y=ocOH)+|pxHku?c6r3X%~(DXFhId@q#nlw2TNv3(r;p2r_JXoFlPBc@)yAX6AbuvWT9g=--O8w7a +&6xsY08cU4^EG|gRG5bZ5}-ou9z9^hCy=oo6!|3^9MOPtd^UGI&4PNx)xV<RXrYj=h^ETfguuJ<x}|P +%<>2%4{E9+i);tOwNh~l7E%5>qE5Uo)VAcdB9Pug!S{a-qHmcO$$}BiB{|>am?MhlNqGogqG)8nLB;r +Jvez6DJOot6~EWO4qOa+{rm_OL$NJ97yQOXH+LSqt{r=_(?j_=5<gO1l#eTk6~X@r&;CF==dB2Rz=`@ +_eRQ*mBJCmKgi$yhYwS2gAmZHr9EEHm!F0kqTEq5qE`pviT({~a0~X5_`d?$WaykM=-%ubKB+HtfA<x +vI}(Q<?$=SOVVb1+&<e2$<EzXNPfKVG{65f9i(sIUeZG&M>c*llg<ijHZYE^r%l3%h9Q1ucX<FVK%_W +-E(jS+VHKWj76q-KNuJcfy8-@KFy@t%|_M9`1U*@%x1)-UXwhK0U49|rW<daaVD)*nm8NSw(59E5eiH +aTiNIwJ_7F0=&!!vw1+qn82d=6^YN><FZ%qX<Y52ENtN_I-ccN`yQwz$jM$W8ruW)b^k(^c3Ig)Qk|r +7?l3&OxWn$t2&%Z+LmYA8RxIo_@)d<AKmbo6Vv9lsCv*L!sy(U}qF~9+?R+6CCes8JS-9#!&UM`Dm#u +`l<AGXPlXrZ5tMuB99W3i#caB-A=38r;dj`#+6?Bl0TkDmGD>-qW#t$jgdXRG_$9_)H2{AIc@E-3Gf2 +g6)bW-}O>j^)h<a>t7TSQGgPFLId7MlNATiI{yp*G{THq-~M_635>&5ESJNJ3EOqSTe0BS)e@N%u^Oq +f^?t7TINMlEhZkQ1q#xIP|ebbELmfosPGc1X?hEo&75*?t%uzM!(L1+KD>D;j(+p(8`#Lg)3X3Oqv;4 +eF}N_a&XJSQ^02%i8K<PdX;e}YvSNB8JYBa+d#-%^oOrQuvrB+2Sba%hEKM`Oj7g93yYUo49V=uL!At +_7PN?UE^C&?Dspa_^?ZjD|=FeO2=!dyRH#Z*-OPp3k?4!+0Pxe(R>vJ7O+Q<b?(+hhmf;tn)u7N<r@$ +=z-)W1xDZ*w2%Qjt>eUey<Jqs2|N1?Ded6^MH{Wj`PO^1Iz}FL3%dMW459k`A+{V`ffJl$pV63zF~?W +oi_n#UZxuKuoa2M>VaFn7duwF6b-q5j-x%IhpP-$!jI9rLph9R6%~;mdtQSPB#?wG$A^}y==*j2NsXp +i<6hf$CPI-m!wv+N(W4{y4Dl~W3RlQ?2UQ*1bSK3m>*4(@Zg>)VA^@LtyA#^aBtFUeD?(&GZ7C>YbzB +Sm9o$kTF&|E#)F(A`%oI$2%S7O4<xefY>AaT$^IDFrGjl%yatPvZE2*k!%rITUR=izi|*dzhJQvlvs! +eE77)@UA1`0zb|H7jXM|*Pfw_1kuqCFXLY}E29mOGN7|~}>+tGd}3HCwIy={02@|=wW*naE$Bs7<*A! +b|{uHibt3wUOnx9Cn9jRO4B>u`Fe%dci)^!rf^2%eHg;=w>JHwXdP_^(L3VXI&<f51R3vsp@cMB;KsR +ClQ4ektxwuHKd}XIV97Q+4;A-y&Vnhd3$g7P!3ZA-HZQ_`?I>vH<CaYRdxPp9erR!l)mlEe4=}9{|*f +wjsEl=(8U?&<C_J<C4BDtK9`KIx@z38rpMOF6XW}bC0mrAofjQx{T}7p{$+?2_KE4NBTb>X)=cm+FMw +0x>aA|l!epwipxm6+O4E5c}hN6I=6Jmbi^*9NFDh+jvOMb?$oh8taFC#59^}2m+fKA@2(H2wbOe_1e0 +JZYz9SuDazYn_a`Rrm~l+>u8UMquZametrblP%X$qQ3g35AP<!jtjHhbcJ@u41O`u#Hugh{g41DU)FM +=3<#>7E{(%lboaPekz++25g{k**)HwD$q1iJ%L2N!H3!03^k7_F$mN=D4E!cU&{g}D;IvL~Y6Qay0BJ +->hlpaB-PSS^h_YfWB`a0@`QYytH-jH7(K*7s_N14RWzKT&6=Xy>3GVo#WAS~@^EqC_%p@qE9g@K`(@ +X#$sK+x13Aa7=E8v1NJpikk@~`<wnpglZhYXdX7-JOCA~ZX{7RWr_Y6M;`^P4Su|GL!Mm{IygPdcr2B +35{J^J4QN8aFpt)At`bG{q9~G2q3dL*A}I7`N7FLZOKmng=MqnZNh~&{o*ujUJif($Q>gNs1f(l8<!Y +kX+Dc9V<EA$E1<X2!t+U_zDxk*$!*uA;;b_{ob!|P2*9A0LLLBeVs8K~RVzxcLJ=-3A24EU+m}<EN8= +>SJ?>5e1RP>si3SH)AJj>*cAw3>U5i|>G1sXj%j|m)=`72Iw>;YkdDYg<dZqTdC<6nPxg=i3wkaW4L- +M!;?X0P6za4q#vDFUr7%U3If$jN16y(uP|VoeubHJm)pZ4p8OR7k)@CKf!m1>cOo6-2N^GJqW7Z1UOz +*3I6yWZa>Tp8S6NW2*vqDPGK=P^g>2@?^x-<}g<nBRBpG&K^M>e7$Wbz>L@|wi?(}V0M^MnZ$e4WnXr +UO!@o4_tbiXQp+o$P8i62w4M;`DQ0WHo*mfeKS3TXxeUMMid|TH;s;EGJfKWSB3@31)agCZnsk%5$Fb +VjEmyn83Qhi1Kc)IHgT6x8-cEPaM4|O}j}lM+uTR?cwHq#}=z$VQwJ!(P*VhM>66tCSvr$NWQP7WpF) +7jRM8vu$USyda^neCM%rxR!k_W?<zfg?L)Rx7>5KI}5OEU5Sj>5$GjtU&iymL5E)(`=Q6#+pfPXKo{z +6b}b`w=GkG(8a>N~_)?Wn`#x*^sXZ$>3@cR#d-76B-mhJ#v<JCc^6w7a^U|0HL&YI7oOULf)j}9cIg1 +=Xi<3wF0io2?9MJfZcW&#Z(w3(Un7g7v~~hj~~f01mSXPzI*-R)o4uE3?h#p-II8*aesx)o;U#%M7sx +zJS1y}$2HNKr7SsOBfDZ|kMz)tf&hl#VcS(Il01d~<HTXk$Q^Lb<L=SB4M(HHQI|d`iq2H&V(GKd=ze +wxIjZ{X5V9&b3mVYXbBe*T{?edR6AwE{b(6gfyuH><;8KzXOc(1Iw=fBhoqJNeiy8bbrn&2h@XMRTej +j_W<aiFZ`KcIpr1&x+;jv<X{nc}Ooaru$gC!hpJmLAWMQW$HnRam5PO?t}bT}&Mg3_caV3if%SfdlUJ +Xet{t&O*lL;NwMj~l#(iU^DKqgA1d6O+LAf@C>Jm;B7<>6SnwwR_ST1ohzc22}Xy^xRvlI3C<hM0IH= +OyD-)e=pkR#_`P*q?Fq5C~MVQ<L~FZK{Oi|CIxJ<ungQ%xP!w3*%XDX=J12L4JQ?^wiKXsPr#xDn>9Z +#Cmg>BeG_B?nBwSKox2Q17NxR4)#1kRYK#W4%imi{YqZOfLk|Fpv&`V@Qn|7Y;H7k9hrgHy=W3?nMR^ +1A=S<^^k_(PoOC46eSVUV0xTIwg=LFsYtOF1)6qpBi`^>fkg^u@dmyzE}MC)t9N(s76$Cy?a*&M8a_s ++J>ll3;prTF#5GUwe?Yx};deD(JT?#gPDraae*cX5{Ce!;Ua#bqM+e0%E)A>5t-;t3V(Wb`4ge~;sl( +vytak&=||I&_@FA7ne2iUA}^yj;Lt^*}j4CVkPCk$D=Csf+R8m=qOpN@ZtM^vJ$23bb7T0@$Y1c!S;z +hV(GJ!$lhC((pj}bqrK8chE|3n<B*j!h!McA;4m89@(t*eq{;<eWvhl>=o#7%57MKYEr4&WMz|=>oRo +PbZJvc=dLN_>I2RO9pO<iT`|yTSYl9U<Rt!lj%JFU&$0Z(t!ZT0G%8r$om!O3%=CmGLGIF%91~z~My< +bTWCOM%wtdi}2A>Q;<40A<4G;vsr-`v~`T6d&V|zGgf-r5aee8XU|I)>81I<d%V>-^Hy{R}hiL5Wte^ +{*yJ~6mTs5~KzfEJXVr{b%_uaH`v9v(*ds~+C^#z6P`LEie`#j7Ac*X{myaS}81eM6TE$TfND77KU8t +?A^@|Jib0ljP(xet^U7a&jXr7EbGQwm)=sl*D5Urc(C@6M{LrTwjxNA0|7sXokTOx@ji6LJppBHu5+? +z(-BfUMy;PO|vw9Wzx|X3-$z3))>4!Gq=8#LCK{L?$lP|0T7CuVGy2}Dw@!I@eT47n;>0KB6fTEXUGT +Sb>Du!$uYAUm1G+`_P2RB#odST+T}r1g0rGHL4bT=lJ44}G_te-!j3??9Eu*eFI;KmJ(v$W^8D_k)i4 +t<+J(gp>k8II={DFnK2@3dV741dp-(9hpC*K*!dwFHtc<G2xF~?WtuZqJK;xcuHkL`$%qzSE4)+{Tgh +~jrr@K!1?pq*+H<*C6i>H0}-Jf^kZD%;W*bQnyU)owwm%q;iEof{<FmKl^g8OXD^@ef{bL1k~e2uxa# +Ae|LG}j7mgawq_j1hw`AA&R<R9V+KUR7f@vptt|NfJWNRME(B_Ym1D{A?*O=hJ}Js<&2Spow7tZW&K2 +rYW)}DRk1#gq2fvtd_aHpy~oyYnL5l*rhlQR+iJ)HGAc^r6kQ05pyG0MzmNlYqbJ~Rp(x=iR~@30X}o +7ZmuyZAnWrj1>K_qX!c^}?gvgCCX>VNRz6rUr%XZ83qlQQ$`@qS{jA2KG_J3h&(X6zoQ{r9gVtZ#I$p +6)$#Id)UKW*BNs#aksxOL3)l*y~%%!cUc-1#}<?;Eq9*^VnEZ!n%14(2shspo73Yuc_&l!@OP4AIeCj ++Kmh3L`vOq0$vBtPSXrY^o@95fB4RB&{O#2b8fo=vBQ{o-RshuE3Wg{6L!nQ}_Kz;|A9lm2+T4(8+a3 +(|!)`SOwsN5ky1%G_}UDhkTBoqlkm4#GgU3va87IshyiZhKHQtF2ZGiyu5~D*$&^RYeyZ=)du8A5+@2 +g$IYO6EK!3XwhGxh8Ox0TEe4b1>L43x{GByJT%vq?KxNgnK;@v@Glj3+1$n&b0P8UE{hzgmvcSomOLX +lIO|g!d)MWK<4?Q+QAwqNV8Dr&5ANMN!s(IiiO^zyAGUvgA16Wi3Bd$?cA3%I77HBY-JchWe(T)h9%* +&y?^Icpe^Yh!|C{yiuvvMpXuykQII$Kpm-)sPPx1(pd1*6QhK3^GhMgo&o<6f>DV_U)%_Ts8Kdr=9`~ +2Hc&c7Jp^xuL+k#oGsYtA!II_V+qR`^?PIf@?AZAk<4k!yFybq}Gm_dMmTONMo&YgH5!EVagfGhsLiL +{)w$5*<8JDooN9I=X^<@&we(Df+Rd3saH}YL~8xE9K^=7Xw#%nq?*<Yc`JJcxW5@@?8$lD7>0{@DyPp +Z|6?%d*ch;d4~8M6ijT_RH8y=l}S+f2dygcu2yd+UQq5p|NZ9U!KI@E=oS_t<5EfINhi;dRh{WNY)2u +>3yBvdxT6io!YJSnvm+<e(EQ{EM~9_Y>%DJV&|ov|T&2Xs1?$knAq|+X+PA+2(l;N|B!&Mh1y~(-{Hg +Wnc|N*;Q=2#qhJoig|C^dUnHVpH{WXIbo#1f#$BhZSkSjOfHWa=Q;z#~16X(+58^o+b$6EyLhGBX1qb +k}aU`6HvM@8}yLu_h|?tztm%@i0f?JU5QBy)_`C2(EFm=xu9eWu8y=Q}ELFdZ(CGk8;ynLkWw1d8$4m +x_K*pw0{4A`_PffC{gOLM1-hB6gu?=0`8cx$a+O)rJ_{Cb+t3JfoDN!8Yw%icG&~jal-`2bW~INSVvy +f_Y|YV|)n4pXLBqL)fz~y*)D`2=KvKql7N<Gbp-?{2KVGB3}qj+TT}N3ujQFrw2M@bW50lP9!yPS1fs +Wau7g_!h{R6haQ@aR}q0C1e~tRLvnXKaJ$Sz`zX!Kcb>>AnbU=ZZLN~a`|xRc;MPDqOE&Zun{9jIgoD +k3g3aWMG`~(0wDYcIw0=nP-XoU!a*qbn191eVcFU3hRLX#oma^R8HmKqv-Qnz{8@#lW0e9LM@gMwbPE +Q%0{o@q8z8{B4)L`<W_me$$gYNltnOi`|KLB(e`2O$I#Gw1ry!Ox~$v^0{ik#`)q?_vt%)!Gg>7NI0@ +T}cmx|X)x-NDQ^WL(s2c&E<*R(Fr_&!>T|e%KebY1KP3{y<CA7W~p9zZK?eRYh-cSkLbRB~kK`$4mWd +3v9KlA8Yo`2C&)Q0bTxcvfIO?sV=R-WPkpxF5Mu<l;V+2v2GF>xW7kUjW&iqx0o60M4nz_Ww_y<Mnkh +6D>o;Fm)y)vqnZC3LNN+`(ug>G+rQ;uJ2C&BMS~4*rLEL%AqNBya_kVtZmipXRf%!vBI{i}s2$X4IYn +N!xhSoU6aDB-zs7@4i+qi6dJ0AE(10eSV&m|rxv=})Xhpq}Hqegl)QZ||x?MZ!Xhkj7Qp#;pQxgIRuc +fHLF2XzDKsS=BA@OHbia2=El|+HU>1{)gSh711e)X?(Gz4WwzcuII@=M$JSAATJsMBn87X(od#&Spt; +U6G!&F>=sdH^t0_GFP$Q_5w-PoEB+e5P-_jNm!Fn;EG1rKkAO?GN=zH`S(dgL&VChxQf!h^COJ=^n_k +FD0C%1-=Xzz@7WW{Y<kV)5^D6I@cX?<R^4~AWvsazjMcTn37<VOJX$+wFI9FcT?l<6M4Wt79}6HCGrB +6CcWZzbn2NsY`W%Nb_hA0OoEy7+IMNGo6Rs2hiF5%aQEQ7^>MC7C$asOq6Dwonf)!RE)VGbCfS%0@S# +hT={=}jv^&JPyS7BXR)s>1+iaOp*uEtf(8z?5_<{{GvW-$6h-74>*I4~{A-8yiIKkqqM7Ni|FCd60b! +oQgcURm-u!il0Mvu!naK?(+!AWbrSi^^Yalsls4#;9*oCW9s^t`2>{S$jcz2kunhI&oE;loyvt_lUlW +yQHl4xYW36KK~K4B<^CPrrHcjm-ckRD-{himO7Ov$KdPd!&))%Ks@LcmK*|SzW`nohz4RE75(5bw#vZ +l!A@7m<a)otb3HQi$(2_xLBYc2KKDRdMC=l<a-*tprscgACQH6K$JJ+ib434_uyAVbmVn(sJt|fAnl` +jQHkf>>Gif^HvTBQ7vYV)G|=3baloD;)Y;51X@@PwBo<wb5>2<`@Cq+rCiY`(b;1qjA9jcDShp>{w6& +0(Zrg4%IokDXR4a0+bT64oykFU!wAy^fW`7a<94~TR<k^|^sJF*VvJ|5qfplqoKAADR_LnII-ln@zz- +;i4p~GaIgK~zCk@7>Kve%iGo3c&KY$q0P)vb_DD&%Z<MT@<Os=Eny;=P0Ijw<dmL}Y<ja%+<e_AjraJ +cHVE-XfZ@^?|(@W!bVx=`%?xBJjAFxrP0|_y5}rFct5pc3l=Ox5K5HQ8h3Xy20^B{CiS;N~qQTk2fHn +3b-OygWGg7lhA4I=OEbqT*5!ZZrhy4-0AYBmLc%uis$j~`Cw&uyZOL&Qt_vgcW;T;e)Y}MU&AAI1Rim +EfySL@W{Bk>@G=7T@$}8XvxztWHVt%kaP%~Vvx}U<5V%PJ26OORixB1{loeM;(44yy3qesBpj~U((1O +;6f^mTt^^;fBc)AU1kDy6%+%cOUr$fvr{QcYzfw6w%ADdwVV$j{@D7~#NCwdzGVJv?(_I5NoiE(=_di +xLhuuQqU=Or7e?fnsdG7R^a0xnBog}}G4p<GXKruY}hbJUX%B}5Pd;IL>)S8EW|bX)VYgR`7}w0G&b% +YjuPHD2XaLE)nQpZD5x8EhtQn&la4bY~12RR)E(<!N#^o9XWZ3*H|9hYpMWA4kK4_AaxEx6l!%$E}8x +JNhZ-TY^#iTer1V?&1vU(WCV-LkswYD>mrX$RU(a%wz5;Rr5x7f)w;?009$XNKuVq&OVs#4^_L{JNhi +aOJfPf$@TbmsczW#yyQ89YCa-0zkP(s=w0G2K0(*drf)~Oc$cnpV$(ev!Q9;3_H5JhT*!Jsn5S^)k}d +_vqAh5e&736Oe65kkgf~RR&P&cG?Y}t!&LBF2@aLWzFBh0Dj<8vi<_OZs;?oe{rm?)JDy|X0AZ%gcE_ +rQJV$Ho~sb$gpJ=RO8)R#tfWuuNc=ejz0_U!B596aHaH+V%SF@j-v7Yvo0C?(#15PL^oA3Y1VvzLLot +XmIfgZG5u-vhYat+3mr-FhWuAB^AtVN%F%XI&fnx8m!=!|0CGn1HsUM_Rn(oDrj5JkmBmgr9rU<0itA +R$F8ldc40LoYOb=o6`w%-+$1Ykj(_c^!e4@F-*d?6UP{5p0k%6K$MQ!$8X8(*OA@th?@9tRTZgthvt3 +b`8;iQX=|i$5guRAm*MZlp`KvN7EIc1@bjokn?Q07dZ4G2?&G!CQ*pvt7e$Zhq92g9)?d*U{k1i_>At +_TUiI-lnXVWh3etC(wh2+#ujDeeIQZzdaJin|90CY~+LPZ3#{XYXO9KQH000080P|F{P!c@efolN(0J +j1F03ZMW0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgfYd1X>PZ{siw-Tf<w-XOaTv~&v)+}z&UE +hr4dVqzkS<Rj&z{`W^YZjoHL2>f`D<fG^`B+ej{RMju|=t-bU9s$2dvcNtu>|A%eIQAuT8eFCw1<DgJ +I!RHi;@-fgXfgykB2WgT+#_3fA4P*H9YK9aB?uQcSy(q!Rk#P`b_c~osLjYB(C*c&z>trwyj`!2F`H& +xf!Z0PPmI3(#%<tfpux7+gnfdSZ_2qoq|ODYo9z<(R6yI(ymQ;u|I;-yXpteaJ0pt=ppF{`#~5>%AYz +9ijwg_@>vb`g=k3UAo-(0UGcHU6qadHrL(TYiMAg(T&BQMI+UL^Y$GHws#5pBjgb8|yS`TE^9|OvwMK +RjXMVrl|GFQBn>^RFs@A0s$YGtgsVJkL99eGb*S~fEml5N0P-|O70Kkr~S<894t<>S^y``&jcSGgr9q +4FF5Q1nheT?#8zIE{yX1x$xN|E~T4P)h>@6aWAK2mtd`vrt1$<l9If002>P001BW003}la4%nWWo~3| +axZdaadl;LbaO9rWpi_BZ*FrgaCz-LYjYdNk>B|%Ce{Z4K5!{nx<o-4s-h^`=AA6*NGf+JMFlK@0lDU +47v2Xc#HIZ9>(@MYK~l~=a&>08EMRx0XQsQSr=NpIYX9qfwJ4WaaXC?Kv)X@-Pxkh{`s%B_O8?yIx~Y +>|*L7AFdw+}m_V&)NvRbXnWt(fYsmhydscV(0Gwz_ui=XtOQBA4VX^~!Pl@?32(N&$*jjDCiz_8GMQI +&OVhf~8vSzc$l9;>u%uEq%X6MP*dG^=dADXT`6wfR(U?Z+lt>%CP~uGKPaG=5Xwo2Aa1lwU8(JcpUV9 +Bb3!ZMD>uUcSl}%^o*OaCq~2c9GWEVup`qbyG=;MY-OjjcLR4&a;cL%Ieu>`*f_@D*vg>3i_}~t6GoM +kLhLu>$VVRtp>z!Pr)BQ{3)$w*l4zdIgOS6)KuxBnMsdXQ_i5pSe**qj_CQn;G?y!F12Yml97N+I=2H +!ud#YpX_%N^+6S+WzdL;Y`h0eJ{OaWN_~?B0`sBxxa{+P%FfELwUZri`%;@1*EwdVsvACk|(tef|jjo +C`pS4ZqMu)i<X_MV(#HB+<+~!(uXE)F{&v0UPIGqBiYB$q&Z%@z91cd&y(3^m;jMDS6{4p)Ir+S%HKz +ZnWQUK^|dA7LH>vXJ+uG->SFOLh}4aZeg0w#}2n19i{(%#dN;SZR5yJ*_Vk?$z2^+{3dqRw!2#7x3V% +X9;nuq}T$KYw?~&-VIO&$GroQ8s$kR@qox>Sm^ko2)8}nd}LESm>r=)*P$)s%-P+>|(n~>)JLWVAz!S +mzW9|at!cqvjSR|%k7@Gth8xsV4tO17=78>d!$xn1>BWyks4W{m+A_34Fb}iHf1f}v6Z?=7uUCGwN$) +GvWqOwnr%Nb8df_yKRiFdVSp=Fx&pRTi@aQ1j{zD22bpqvl`XE|18i*+Juq0hShN-FcYK?wOTc@9LZQ +*?WG`Fc$7GYI4bEImr)mI8e)`Q|LO5xv?L;XUZ`)i!_ovCTf1>C3w=r{=(Hzv2q(}ntYX!(@k+G>Qvz +$6?fR!)WMiY||)Z?_uGhM0XDlOa)_YFW__5eMa=eVO83A?>Lpo8pp5vW5Eq~<&D1dC($00jyF0}h#bV +sFI5fslQrVQp(5F9_!i@X)5p5Wmu&sA~{i8L`o%*Z2<hdx;c5{4j>EG+=0xXN%0re54fMq;b9RV8E89 +K~~6Dnt7s5Rw^ZMwgH|qxDI%oR@*T)->Taz&((!ygaE`6cpey1wKevcyLHdaQupWsvPp;}9N-Ob*~C( +-(y-O-f=xTyKYG5ie>4vFf23a0hDAU{*#t{dL!DeE>PA=DYCAH+VXL8qO%Gv>uyu=t9(D*WXU+)mysJ +}(ZA>TXFnSmw81WVfQ;*e#kwA}UIU4mqNZJh^<(<CK;Lum_c&gXsjaJaOW)_394Vea&5Tr+<j`<wrCa +bKf>0NqLW=oak!1%Zr28Jx?5n|a^L|JH);xpdK1wfq<u&MfRO`Br~0_$dkOdPESx~}Wt2nl#&IOHQi! +EOKq`&fVu<sd90P#>Vd$Gts|9^v~yGSC5SaVE#LLBBn{@0JPgKn#%JCy=$eC_y>0Iveg^0jLOI!gC`9 +5&kRm0^TALFZ3d9YYlSTNe`X_3g=%2aGGx5^wxuk`tb2H?Q6#u>Y~yqv^?{NQgA@Sp`LFOyQ!l+Em{l +XTLGqn7YPW7p&NIE^Z4*_C%;pl&bIFi5xjWd5W%#%#O+A<`zQ&!Vvjx;gc<ec$Lv#93|Tz~67MmOtw= +?vq|K~JE1Y(%^A#TO^~RF{faFskDI5VPhfif;34Fro;xhwAy+1uce9Y&Fnfct1hj-YkR^#r&jRp!Ks8 +Xt20ab4uXTkA<tOMg1h`6!w><7_aE=lBj073XKQc&(;FE=XJDeUeNq?>9tB_Anem0f0_kSaqB;$7Rgx +y=^Zg9p8I3JOQvUeq|HqH!y;5Qe}Apj?g;uOpsVYSGpWs5@&!H!??C)2XCDA6SCPMC-`Q%WMG_Ljy(< +ZV#0%Z_=UxbE#}=4<K|~z)Uo)!p;FS0+K~AQNg2~l~`XXQUgx#8<3+OxYVdCZqmfg^(F!1#lW8gr-dD +C$_+&m|1dBw1|Ng=kJM2Mic8Ue*ubf^#S%pb3el^k*%-?a0D`du42W8$5}*+vz#r&vS@8r^!M0I)y~( +N!D6KRaok-!jy}TrjA+gVm5$AAlZX;k-isFK)ahri01ChIbcy@Ghq83*vo(`m`7o??|2_+Gblg4VGd3 +KHPfB>*z)cf=Ao=YbfiS!Rr0C`F=7?O}A5^=;uSrJ)@K}b_tF+7cS2~5|LV8^V^OI4To4fEDm-6B8ib +7vxf?Vt5e2zY>P*O2lN_07kGArA)(YA^~qiR_Avy`kwnR)e-#J@<M^50n&6D2Yjfoi}8_h)62oAz3kn +zQqrrcmk6R7z2+PqQD{agRTEpA9(^9_gqD4!_u5e%=|D{Us~aKWWz531IC^o$}HR(a5mj$W{&=5a{$4 +vuA3rVYxTRS2f#j_^x^fqYW)p;wt*GHhFE~5GyzQ}2PsOsZ2txQ>jWsTl67LzvOxh{f~DpGL$j<-%<) +|eKy^p(s|;3ku~nzv9jQNj^Yov2GeVndw1A8n<%?rHuW=k>4c4JK$lDJP0o1rb#}FFsr9D;y`A6CuE( +?WwvGvXa5$!c15K$J0w4sOQ8jXETRv@BeK(gO^Pu3{xjN$XgW8%V5XBS`(k3tc|dJs3TAfG*ZDlkXA< +oqrLi*L_c@DF@Qh}(lm0z^YM8c7M1@=GEiY<Zf6TQ*3s0+m7PGwrM}WHNlz>1o!by4VYQ^FvQlWhae{ +JPdp^qy}{W3RYr-Bk9n}iDtBeV*a@I(X6k}18H(5TSazRRhF#atl^-C^SfDG#j-3Q1?WNHa-5U{f}-5 +ECvWX3Uikl?LC<SoH?5~MsWCYL%C?yz*2bMByFWG@rzkDPYN0FXVce?nZJTL8s@ZmCjIX~Izts#k?`8 +c(8sMca&`^Rk!-h5uYQ%wYStiy1$G<D|3Zq_(h`!c(qtH;hCXEnYm2iyPwjfHODPkz;(^*Md_5Cb287 +Nb;Rh3?@QHApaGb}kl!JL?vw%hGh2HOwbg{-j=hp9mpDMLRei*mCaj`o74kJNiIU(Ni95yO>Pa>oZbD +_GKx*ekm%P}zu-Se^s<OGue4Hvu4okbohti)Dlr=235uDK-A^Wb!dw1^UQ3{6#$%>>VXV4~W~s_N>dr +HRwQfi3;rkv>rNKQMcBi=Rv$?!-xA_$Lh2#kn7nCyJJpOdYiyDSq@p9oXH%Sqa*r&h{<&^^sz8fFNCk +w=_j`tdj?B0(6M8;@^Ekr>(Z#H{qor(?jS+;W6IW42zoTOD*Kcv6mh~SqmKv=t0_2eK_@D^+wjGvEc2 +vG+eKaik9R=I(P9-H^sB-_4B|wN5(N_l`G)8Gljo10gZ;>@o{eGz!u~*yF{ld&VK_KA81#^aCGV`_ed +}#Lm}8(8nLlngm<$q(pA0{Alt>SvoFgNOvV80;_6=e_&;Ck#nFP0(d<`0QMmQ)d9MHSQBpiyK^F;k2d +6Ik+&a$iHbru4U<j8T72NuOTLPsj?!Ws-AP=IMRdAiU;(`DKL5>7zp-6`}8(<2|FPC*~0jkLH#d7pP# +?7MV<8XihN*#AU2<?KXdgE(lOic;qk%Z`=AKG4AdXpUD0O?iN)Wm_%uK%xH<V4*A}4Qz67uq@YURwPZ +n?6x08fR8{M%`>pKSrdivpZ@Xr@5yl5Xy^bhJnIRWEv7K)D1wVZH?YDkf-Tn*FB_&G`{5m8o|t&G-UT +b}xp(Igm2jud9_sca@l@%HHUn*dJuJf*nmB`Ef|L3S*uMlkwig&0J=oN%1EW$LWOWT64xT)I{wzizVZ +;kN5l&HOrm$1eXbcmj)z%8lF$bhD7PC$ZAd-F4BYPe^wWrVi__(_{T5_ujzoJSzki%*JwJt83s{xp?= +E?bXqw)KBl@|3%SNrBz8+0WcdVIwWg{6kWbQjS}R^tQMl$#-c-et9Px?;!=7UL{!^XC@2Yq-AVG=%|& +pa*6W5rY`VJKAn0>|Nsq6Z6eFuH;CwQSh!Si2Q}xdI=Nt(s-5i0OZWNMY#hqp#^=r+@R5F7SqwPgr!? +KV8OJY;38R@AOx<`8;$1gmO=<E95l;N0`!OFJDVn%*{lZA<&CZqk}3$?-vxvAsSWVoNojd-Khz$@gX9 +3EVaSnHe!>t1>oPV1;)W)R!YJlOjL732Ibt$9c8ef#_dHMl9jaBDq35^JIUGnB^{LgIg4<wyVMM+x=E +z)g_KXfkbMbJX`;T@)2=FG&TMgpBrV#&}gXQT(uIDz;$W|2{U}%bi8UgTGHB5`x7APEqmoO<&YP|ytO ++(|9ahhJN))^Qmi|*g(;rb~S1HzS}6mc*R|2onQx0{g(AhCKxo7W<wWS2q>igI!k@iK6gXf`a>3MjXa +epGQ=caB-N?morerZIGwr89}QU=UZ?vfq%3as6|T9PHQ-q3ztA9=%6kJ;!^m5o2~xjaFOlQGha}_l5W +f_@DkJ#&ID3_BRr*0sqtAgnSA3zy8<8zYyf0#DBDNoGm1Nhu)^KFQU_E)J5hF;p|J#afiOXaPCni1g7 +(*k}Ag$pfR25d^&w<y4E=UeUa<J{23OiH@?TnlacH!>R$>Ts-frR-_Zelp;6YD@zMFMDFk(k+Aum5(c +w<Q9|Nr7`=|6B6O+Y1<AJa-^jti?3xJFrfubU2C1QsuVR@cia$JZ#?~a;y&H(RjKr2VjQaJi8Wfy@kt +1}dUc1$-G;Jo&HDZc;y3p5+CaC+2e#}PpBK@e34L?s8raSwN*7ltH>2bN6NNOz?eBG3e5N*<MP(WLyK +r<)8F31cw5(1r(2j37mL><u1al7Wrrg)95$`#=-QH&g5E@~R>INYb!SOF;H-$sv!rmzkv-2feV=a2jQ +<kuAb8dq7%KwKXNXk(5-y*-YlSK=DqqyPb4a3!<@1e~gdEyUA!PyEc^3S%UrKvp2@uP;&qcv}V@~X-# +m_t+LCOGe^+W#iI|7p-K*X3r<q}$PT|rs|=64IuTyLY?hc8-k-h(U^keu0dOsxH*aU}PT&5=pP5C7H+ +IY>QExFucAKHg_m<OT)?gEvL>NXWcH^8G5^=C#9C!#kzYy;fhz{JIG}eag`P4cWJb@vWTH=_>#~;WGR +1e6}!3cbZWAFDy@JJwd+$C8i9_UHcfKfJ~tcYH*;Ivlr34JE!qo*zrEB^BNzgV7_CN|&_xRc`W3PmyE +2^-(DZB)*fT&@M>pP1(Z?_Bc|MX`Nv`sk3OtkQdGJ_MnfXxmc61rX<h4|iyk$tnUNdb)Guj@^Nik2=$ +$O^B)Q-2k+Y!KmvK?wM_bd(g}pi5}Sz;+f(3(8Ia@DKXhCfBSlRQn=%j2m7_cNHNR<5Pn-$OTlQ6@jL +X^@PQ}((UDPH^8c#YG<m=P96Jh~2<Q`*wrn&?^AOzK3kA?o!u_y2zK3gxwRx-S3U={k{WmB|9MU6EB{ +B?bIreC<!C(N|Bxcl_Q{V#(s*_oDQI)r_Ko|-R)U2%fH5h^3BT4v;e@YvlS5uatfMvQ_C1rJaaMi5yg +KD)vC+nk{4b1)DC(n{+J^`(Y;ydN0Q}MdhTF*+#szCb6q<%M5gCC9$UkyS!+bIveKRzG$6MR*I^iCT> +lq|ni%M$ba>rK|Uw1hfI{KTs7FlBSBh~Q5je^YY|1fbWQOs3sSSd}e?0RE2YpJ_Nlm#p}!cW=+m@vM- +jJfF<uP)=cvPh_@PBk9pNTYpJ({9OR|S8#j^3xN6r4>5B(r96A!mJ@VSswaPV{Ok)>%6To`N-+X~^L^ +k-cd!~XG&~ok7!LbV4P6@Pp$-1p<Zd48ohct;yUdgcVQSadbB63=po`LzQ+6MCY77H<iE=}|$3%&VwX +a{icwveSqSO+6Q;SEPV$x<EBfkNk7iLf4zZY3S8wy@n=kB*A%B?<p^Z4<{7d-mgigWNN68Wi-TBs_V9 +5G9G4%pKk6R;2H-(Nc$Aps9Nn_&iEJ)2?3-BNoXav7c2Vj$y3l*0J02v___$)@xyt<p7pVrRj?nePLX +bJSm|U+^=#Ch(J07yK?kY*b!+bkck_%ZjX-%}9=qJpaj~i8>@rbU$+iIDYmv`qxBbgFSemt?wE0JAE( +{;^)a+7!~nIA70G4i<rP!-Pg%vCVwj*Ud-KIB^}9WjZr<5A3_6wuO#i~Ftps7c9T<nv8%0<KxR`uY!T +6X#2O3Fa2(%ZZq0=NsNpo_qRer4`x&<(+IYrmk4AwUf20xlFgc3%3+G-<)L>PX$wgXCo<8~JIq?+7@5 +p4tv)*s>?D3Ot2A@aKGJ%Y(oT-$i``~3ewG%XYAL8*1IzMgxr6jY5B;;)Mu>LJ3U%+@Uhic0~H!Mv|1 +G0Sq1EM1(U}|zv*CulqOC!iW^Pz$Kh7$r=2nJund^75_<Vh*ozF6-Quaft57eQyVe_gc3B!LJvA}GAu +0ZN=o1%S?8t3RR0FudIlfu#ySpnS&|z#`9Za1=BQ$R^Cu(R@ZYN1d@DRM&MbU3@^;n>^5Jm~8ZVMAr5 +>?zFKQS|J9;?_dOwvMQP(b?@0iKc=6ub-PwYyS~s>knLk)-ZYY@Dv}Pamvu+J<k>pIIw{K>apuWf+0s +YSL@);7g{lAqX&HhXj#HT9hO6<C{>sm>l-z~$dHOg)LLj#R8#~HKg9)Mh5BwdrCV0gnCiYa=B2XVp<l +7?88(=F>V>&tWw1=4vl`WtpmIkd0Hw@58Eo>5d**2t=l7G{NFeQQ+BFL7mz1-Rq&Wv(p(>wOMtKwDPT +Jp$9NvF+=IVIrw@JtOs0h1*aeLlBk$%*YapW8Ityc==x-Q#N7SB*UU<?|@e<z<0hdXhQv<KxEE!A|{( +YtMPX%!K8GPQ!uS=he#&N4s11HujVUja8dYdoW;Z{Y}0KT7R;t##ntFB|tKk{QN5HWc-XmJe$PHv8ce +d#FROzAg;Y_9hGCNZ=(mGg!uBk!Dt-$>V)$vNx#e*J}Y*>ovW*~w%g4!FsW|RIQj2Vg-qR`lx~)_mSf +*}-a?gV?mOk^a4~4<>;exuh$%rStH{ANV=@r*fm@B^IOF@XJ1N3KuaWH--&j263CN`2EL1Pc668UZZk ++50EHg@DaTS&};?%PvBj5ksyRRFtf24k-`Z&UoDa4az5p`z{c9?DunS=hTj^r7Rq8tRXsBlteI*{)`B +=YLSB3n>p%7j7C0xcaTMMX8_z^@N*J=&}V{9;wz5Y7Fe2+uw1tp=mA5&w8%Yhxk|F&fcEo`$w_(rz{= +nZh_Hj5hT~4qu{jQrp+`Eo^{VrG1ZI!q-35Wno|Am+-ZiAk*G5!^Gz5`36i-G1_zQL9{y7CU*?LFUP* +#8FfdxM4jcn14G!TgK*<C<oRgTsJBmhN@NpTSZTC<4|=CsDG15>QlF_!p}k&Yu=kWG#~%$D_?uY*e`5 +~lCi@d+xJghE&<U+`s!EXc--8YAD_I2mMN$D|Qm%l2c#1N;?myPL2Z;5-;#no((qc&mmxX3(2^<u$Ij +m~~4kDwy#D@!Ge_|Y4E--)FJ#JzRNI+ojKN+;YrZW>6jNX!z@-!a>Mq#BcwiF?Bz6eQdBfBg-<JfXEv +xsNV85&t?$G~GU66vT$`v#btrZL6|*&Li;aOY@10+~rt{-D_T_s$17C72IBxC3G^{=LvmFl85}S6s&V +gLD4Su%b?U;b5{UJA)zqobDds?AHxNJN}MU&F2GbB90PEynP<Lp3lP*1SUw<KLD4UX3ALG<Yl_-j7>+ +SKQy|bobw4wtW(LrfC<2-U@UUM9=yu19{1pgYoLh+2&FTYh^=6_AIe*mmt5R-n}UEaykG0;1`BE#vz; +Rl_R<QI5iYYEUL7Zxs}-!WAtnczRO!`ZJ``I;^`=2#1&MhxQs2s_8pI9Zz*_@qm~II)4h}=jI#>-wa< +JkvzM}%AGzQK)z7QU$1L2}9^N!?U8NZ8l?sMlwr-Brw?r`sQsL4l1Ft(||1rXVK4RcQ$ESFxEw*@j^k +o+4R;^bONjD1O)cRnXq(!9H2_@D}gKF&B!MR?L_f$5gw&!DV@jBM7XD)ZV-^HvL_U@ngNK#M(pedfEI +gt2OIHg$%e@-4K=$qyBR#c<HkA(-)eBS4A%%y_}b6g}(383e1n)8W<ias?B4sK={gQ=P_?3vYNh0(NL +PIC>iASaN=)QKtJ8=lc}qj%sC8D5ItJXwkd0XObUe<MrsyU7cB!IB}Eq^drrTwA5bB^bVDj)z2P{6IC +XYJQ#Z#;9uWb>14G;)~j{3nQ}K$gFR!-DB6)>h{JNmn!STel1*jTu#V_WKClOirSI<aokPV^5<Ai591 +J-S@d~G0udp6OQgJYe<)mx>xo<>s%aB>Iui{79xVU_*i}iYU^AN&3O?Qb3q3!FhJGHbGY?(9CeknBU$ +{Kblz`M2Hze{EP%h!LA$xYN-ktzzlw#W~1vBrEZvzyQH&M$qJyQNn&*e`;6FO{Z4$T6LV9g9m!1eotB +ULE7sVV|XA{RI?w`|kYY?VGdTsPIKp5Ukxn2^7g+KnBdl_>BgR22#L$ClM%vWj6&jWgUnj&-Gx9`FrU +?xi0@(bosw-+1?NFf0pxlxrnlZd=?>pqNfM-@>aWxweI7m_rI~zKN9iZ_tCzO;CS1~uO#{5`Oy!*5&a +*C=tz)<k$tIiO{(%k&+%8suaD1<|DT-Xz1U?8+;J|GWf4S*d$B4=wRi7E(WsuHhld*J=zMaSAto!A^P +KP!7rdGpFVG-&AC|*%xksAcrrVlofIMJay~_94x$GiNI02h+*)FvBkL2c!jxpGy5813iFRN&DR|k`f= +qC}~*+HBhHlydx#x4=k&n63O-4hIVx>7YnYD+oJTsW03@P4|Y0Yz`ivLiK~kPa(9Qs1|D=~Q}|VlbJ3 +$%SkSs(MC}ptmUqKX)(pwYSB`*IiM?@}Dp-j8gxHgFlxoQNAq9^dfGnlR+oc+iqONlDR`=MR%b_cUw` +s$J`e$*BtVtrv_l8|AGxJRG^Cn?z2#A)|qsod|6>3*UIGa1yMhLP2X$Y2>vD5lE5OKIyYZ=>{WKkqhS +=-4Y7td=a5%J4QZ55*_yngqg^!wbk`1-0Qk3p5AXD|IQaxUWnS#h=*k-(&UxA36`Ogwp^Hm#n&GtKS= ++v*PtQcvJ}<&eDsipt4>f>1#02|#D(`}M*+AerEwW9UOHEk7K^5IT?foQycLDEMNrboBvG8~DBNcH91 +*Y4ZtD>Uf?MEh+PsAqsJ<a7>nD2m|Wv&^abQzO}(UfHXNOsHyl?iV!75zP^wwWuL@2G2jAQS^2>W!3e +m*K)5$GvRteRIMH9=Tf~;(P9@zEdxvHeG4zqyZLPNCKtX&Gs6z4}?7*jWGU4+sTtERMPh$sBS&GYF8` +1o0oo^q@qfZj7VE)5a}{bAZdGv1PlSZR<Q`-i^hlMzJZb5KyucGJHlH}k`a*MW57~;d6AJ%Io@1s0It +(zsG?SKvl{|K=^0%C7v29BT(d_!?Mdy5?n2>us8z`nK>x3~m(JZiT=*V;qJ_O85KH5SqX2)DuM>r~f? +4+8L6^*^%zjGM_QMCTS9HrEr$ktui>_bdYPhqe+?<#j-}|oUs=XsamLf5*2+tDD>UxWvB6x=r-cz{mb +i9Z9qWyeyr5D%yV+>xtEtdsh;#ejZVAbW?{t83=C1te0jeOVff-=%=3L$8Vw1tpmyrBc~hZ$V)F6t(c +nJUbn;r&&wcNX?`?tg(He`Rs14<-CL01u}5Er7o3*g7?)1Ry?cUW0fRDJK<GK54^xb0jogjc${EBUnW +H1=v`fdsig=9`Hq>>9X>kbnEW%&nD~-%Q}%MF)2=u|Ly(p+4<S*=y3M({hL>>kAWy<)q&vtVhBetMZb +4X3M6K1BjbtcXWu(ohIwReHwBu!>1I{Qu$S3-z2=C;K-kA@(_V{2iU`6Ubi0aglEkv(7h~s4tPrra$; +1f?qx(+Ou8U#V{NYlF&*2XO7(LcXpdBK{81}Ko+)WC%hCJJ`#CE%FSDQ)x5)2&kn@N2WpuL9bX7*`ph +N5j3WS+Z?7qdFv?uSQO1*emDr6of&Z+h<?C0eBB=bRizz9~tK;G2Pg_a^%Xj)G)!1;0Wy{OV2FmqX9@ +DsaszF7lV(RiD2yH;VGbftF&Nksjr@V_F_Qr@9jdmaf69K}0XE{GZ#2aeC9mA=e$n((9(156`*zw&*$ +_O>~*?C6;?uQYjg84CP4(B^-ti?Mm?8iLz?AP<E;7h2|rt#3BPssNueN-|MBHgXFI@SmFon@X;Ae&L5 +z+q$txb&DbA(x$a=e+%J1QQs2@C208NdP48!4e5fH>!+GHkzZhlO(gXE6coEb(z~04*VBIZupvM?y#} +d#9ZgTt}RKkyPgCGCW6MVNzvsI&?V@X6X{o(6y_%XNeW?_Jj<)XDrfb^e?b<ZTJ-$;JyrZzRRw$_;bb +@x%n^$0WpDazgFqFmNYs9%!6I)Gr9-?N-d)RW|K^0@!T5-g>-(7NzCs5-;y1-a6mJJWW{YIdp6h53FZ +$Bql~6ZJ;lQYp8&<_B*oG)wuL6_T=gTRQBL|L}qWwnbA{l*H5LS|Rh>2Y9`{TD9~mESL@<h%oY400+n +w+PjkJ{{&D=0|XQR000O8^Hj4?J<H#EjRpV!To3>NBme*aaA|NaUv_0~WN&gWa%FLKWpi|MFLQKZbai +uIV{c?-b1raseOJM9+cprr^D8jPcqk>dV#~7QcqX~D>9o^M+i7x(GY~{V5@Hfy0MNGD=~wj7OTVsP(# +0-FKyp$YY-0CevDjU_1)j2#XD6&OwbGkw*8BCzRge^gee&c<@qR1WatT`LmP=+<pJe4(E!Rp*#{_Fd* +TFotwx$IeZEG~sq6OXBSoZz<_rEgdh3}nog*VJ^rLs)-t+c8V4MV%fOjMP0POTcrqymg(0*rfa)vEVk +%b=iEl~+a!yDOBJt(z6a+XvBhjl8}t3I@M7Z{9G~cE);U<>y{H??(9`nBkfqO0WPxFvhK{m4$7U9}#? +h`tmE2W?qWUc+@V=uD)ve#=MBO=BKAc@y@i8cFMNmPO`RdyaKN&P_TPlvz75%)_0w>Cpd1*J$zQeNp> +f#gKa|;)&;~ShF4h0L=#~3jC}_Ik`#*LAzL$ZyIiKxFF%G6m@blD>>#CJ1e~*0y3WADl%za!=z7@6tO +x~BV5(=%+rIKWOdBHplQFk__bnu;C^&8RHT#1S^OXIdp&(j;32bI4JUczTW|Oiq+AH15@_2e2<!3?e? +v<~$P+YvT#+%ACE`!Vi1Qb{}dXs6+(dbrIx1CYiC(Rt^^j2|i3~x-B#mbmGz9)}U=H#Kd4Zsku@E-!k +NkU&qx-q5>-#4KE;Qzn>{FN->o+>Mam-Xn=oc0mwzuTANF0|2H^nPosf>fwG$rXe#nEtXR1~@IcAS*n +?SZ1-9pI!tFWKa5}WF$z_FEPl%dL^117DWm8G61ozITcMn4RwAf!m)aUP|4gC2Bm>u)!}%C^2&oVN55 +3dfmTQyi|n^}k|74Oc$QB`&%!#@)+nf$(bPGmr8Rf5=5Y90p<#;+W)y`nohRiu0TZ@1y{<DWm@OwIH- +WvdTJU28#6)=B0?)3M%qL?iU@M`{A9k7IG980QI*j-iI1H9f(s2u;D0zf29=DtsKt26JJpfljZ2`4I{ +Je}s0>a=+h&eO}AgOsEj+F!|#5I}H?0j}Q<mH=2!5ZwXwZ>9n7L=HksChhq!7>a72N#r?UdJl`Jqy_) +o_?`w$@R}Y_+C?GqAXcCr*zqss%xn;6JthVE?Ie!(!8Lgv=Y{?c|b+3rL&iYBmQzQM`u|;FUuBt8QJP +#ho=@ig!UK8bl>?Aus=%hwB8k+U*ayWT4{Ppe*7GPuOi2;8&xF&Se#+}H%4b}o?*xvsW*O`IX0>z=Sr +|vEA)OXR5SRV#N*;;=ed_*8-7P5E9@p;c#-2qCO!bsInfT<BoYE|p=Jg5yAI3pkp>TOf{b=9v&8^wh2 +BWav4a@9wW8dyLkNn#h#f6sn&m?W=Sb|uXGB~@<^rGaE<uNL_)=VCs$tTcI7&G>p)xx%BZOL;jtwz*6 +~j%D$>hl_CZ{pgZSLV5Q$c?7T6R*yv8m8ZHX6|}C&tziY6W^k(-8mCx>26+82i54SW(Np+K;k?yn0k@ +`$y#q<u=D!52XX7wi}{^jb{*!*mDf(7CMZy90<9oU0!sod?XuYE{3K`S0*Q8Kh6-ZsKPu@FtGQQipeM +TU0e|RQSkXHz;tcy9f!^ed5hiF;*|&6?SXK#GmzvRBn-0-RL2{+0Wfq=2kr#}`+{NeE20MEW?nVM9aL +5%?|0I|6*MRB3nFj0TuBSJIqnd_Wk7`G4#zLd%?;g${vH;;AbJlcNrlc5NINUT3u5@t9yV}cx)-}l6` +QTSgI3P7y;I4h;Wz;k7VRXi9MxFETkks_uiA9L2Qmp}b8WJV#e65M5;}AQXSkLd12-d|T`?|*{1vd%d +aWu9w)4=8Gj6*emR`a2{9e^SzKv=X5avTAWlbK8x^a18@ZhR^@Zn%);Ugy3(%&0<`+qGbha8Ug+s>aw +F<k1?O@9&|Bd<%k;L)YOoE8PV4;fq<l%Gtm(V_4d4BBG`oYaIjgJuMu;ZttF4Om145W$l&{NRcj-iDL +-ctprCnxF3B)S5wbNDuE7xU+`4)OIo{sT^OF)9JqDuUVhr%WN_oR>4VOleMW3nAxG{*=rV7n0<m5$fR +5@kKplKvLmK(cRFqVL-_kK`3*GDTg}R6?5MtGM=ng7P~^~XTzk`)6+E9g2M0JuQT&FLC&TA+xV!3-Jw +M!IkdkYo|6_)NYYyvvLLN@1htnah!wSk_h<^t5W3qvJVE6(bWAcmt08mQ<1QY-O00;o{RI^YBjkVu=1 +ONcN3jhEj0001RX>c!Jc4cm4Z*nhkWpQ<7b98erb98cbV{~<LWpgfYd6ib%Zrer>edkvUYy_kXibdZF +qb^`LDH<S2i^4%3979}@BWdF$m)>1k6^i!TJG0BHY`Lu-;*fjhcIM11&tZA7ghH3H-d;lMHp?IQO%$D +-oka#8TeQw*)|s|&tw9_8{rne2Z-o;ug23&BgGTSs!0){e?=jjKT~Rotuy9h>7G%|E<KS0QqQUa5EL; +c53SBkirUQHwO+z`R@UeAbt+0EJqNq^9TDTDw-`5svE1i5oc9hJai^~Y;M`>I`LFlC%;gIJgS>*Xr$p +-|z{zmy_kvDi>H3}=Noduy3ROoiPr2p3?=mw1lb?A);=lMKno`bNkM>3?p93!>_Ds*$m^9-())!wc#` +bn0^XNq}SNr#msNXX%u>>uzzQ4IqA(NK0+g43`@=A8oB3~qNgHUSLfT&>Y?H_$ubqA5>)2I9=I$KD6J +)K`?}6xbw0jT3c&i#$)ex;T8o&jC|SAIx|-IvGIT!Cq1cg|3~Db)bJFpRF_ah3bAnlL86G9H=Dkt243 +Qi6bTPfwZBRNe3@415>_GS;EzeidalBcky*mVB_L@LdVoEB@5rp@4i`G$8)H-xq0{7Ekj?z0-VFGX>q +Vo(z=8U7mS|->Tw?Uvo_RB!TMq%cPMBG>|M+?lirqChrx{RNk*PPgVfu4=;)JBt#7Fy^Z2GSd)J$h6- +{G9@<a&EQ+lx#rc`JHqh!0&doPKAfLc@tdlIWQaw}_+{DD-ZX*m0N2nwPkgV?m;<g>OZg+rDASM}HmC +EWr15F1Gxg>d7*u#&gbmpTaBuZ*1_HF#V0=m&uXWYeMIH4;Wr1d>2om$;ENC)N#iNRZybY9(vwR;$FK ++N40KiK|b#CY~=Y9`?d)ZMP2i$Czy8izFpXR?$Q+a^szFT=p{>`-psU1%LiEcNr*2_;eC?nk3B~kI9f +HQIUqOPSQJv&(uIawaf@Bzx1=aAs&?04{bvXty>rR<dK4wfKU?`j2BANqM$Y7AwEp@5(#$%?%C(rNG5 +4bv)?|?ev)>l)l+`&zQ3RPDp9@Si%w5Enl+vFPUqrzCW&XRC$4`;p`vldGR%^kC7k(}w8Um*E38k(pt +EG+U}85}>&LdF+z)*1Otxm|=U%#<zjTJihh521KQ3-2$iy4?>gXS;g4kZn5KO@{)EsieMVHwCnQ?-TL ++3P!%S@`H$&t3dP!fNd!u(F|fBx{q>JDxPI4XNIgdGu|v>R@0EGH9i<5$t_(olzE8u^9}4V?CC;n#RM +q;Yf@h~Nm#ffodSH%Ze4XMXs)KOvZxO8r*_8f;F>oVIc@meJ?97`~J~_>JKMF>L%S;#ahqg*kLvrT-3 +kZL{)q;Wz8?KK1v=l|LU3TH61~m_X{Gi)`@u->Zy&>~j1Xzp-EApJI3e$q@K|tf_POf;?k%3vTGo((R +0Hw>!EH4c!)2hrMUnmuQva4<;@*dPci%+KMS%tul%kwx*|M%!c1jR(<F6n84Rvc1DZnA5cpJ1QY-O00 +;o{RI^a;tNof=B>({6bpQYz0001RX>c!Jc4cm4Z*nhkWpQ<7b98erb#!TLb1ras)qQJw+s2jfcm0Z4s +wqH+f-ZKvE@L`%Y`IbE*r_hbwz3O@#883-0t^7^;%xfc_uK}U0YJ*>?!ND{dfJ!-X3or<IdkrFxUF^` +?5J5DC)veVt*ZIX6MV9@H5d%G3jOm+msJ_8sw6G9{^|T}ZJk~wrCQ|iD%EOP<kv~8ONC97>Q2p9*{n+ +PtW?!yRH>-YYE|l3-6YjzlBr_>y;Z-B(lW;;^Hr+md7<=erHd>|VRBiyS}YM*K-1bv7R$V-aMpTOHs7 +)e`lQL!JV|o%DX&`<+I%YW*_E#9Z&k6HHQ(;)4wYUk=Sf<3yNQYna8<wml<@0$kuP8lX{u$}^8RfR>q +5sb6M)W*f-t<+MG1|<(6q81Nh9-SrVGH*wyN?li>l;WhcH!`fCAjFGD7Jk3@}pDRV97o5n*u}&8}d|a +S3x<ECIljw#UpQ$r#BY?XVfMJ(jd)2&U08DoPz*R@E|0lM?o@R3SgZui>SRVBx(z{VfH5Kd<r%roAds +>IDn9t8_WSoq(sAyuQ#Ckk)MiZ>Sf3xeKRv%cv}=^C~mlqf+y9M+%p9p^LD(TO!D$43~Egy8uF+T_;7 +JEp%4dL%GktkCsb-I;_`{UqPFCf9UJSs0i_O7~?*3Lnf(J(X@R5Q#{H_os|h<_hr*o-_G>Xp&LfhQFa +}rNqlzvdSpI-M~EG%S3q^&!wL9_338;)vO?b^SsYDM{cRrK9Tr7i47ax49G)J(2wxq&K0Hwq<$FP<t7 +7Jjlo#?RX!G*$)$_C0r{Rm|;kRdRUcNpIe|UcS9W*EM3vQ5}e5>6LZ;wwA+AkgwfHzi8_5dD!F5%0gM +-PA9f@3<zgA^>&r~*=4sL4cmFu{ih-k27*ZMcStoNZBZ78LyNCs<H^Qxe<Afx=(DIZ-K~e6=jM2uQ5w +?w%I<0_d-}^DpzV8uCc^2alRB_y^Nt!f+qcD>>^4p!C9dtJ6}iZ69(6JPNI@yua#*+R?_iKne|nlBrj +~1ohU2DbsP))rqbuWJ0h5JW%j<sk6W6J72zj_m{)Jg)h#Ij}PCRhG!>-$D_`i3-2VKSHK(eyYG`(k(c +o8ouK>Oi&aqo@&Cvh@$N{*Rc2tI85`EN`T@7#FhkmdBe6<jHP!0)@K52%-xaVS{Pgmtx5qC>Dg#mgI{ +rjFta89CEg%zItXa-qSGu_SF-lkZ@YZi5p}Vxrf1Wj0Z+O1<zIQEefd~tvP2jUpy2z2kr8m(Xd{e>|J +5#Uw)Z6kuI&m{~GYn0>O=53P?jtYr5a>V4D+lSYQ}rV=%I6U3wpv72c#LP4dUmC*alwkD0<pL1QY&*T +6_6E>HGBuYFw^+X0^>bR^I4QW^908r6sR{n#RJXVRg}f_e3k>9mdiYg?G4#hvnb261p09MpnlcfC+B- +mE<rf@-q#j+Zv#edWL<!<8x2dXW|zR509|u;X|(RL84Lw5$TSdq*(RI<SZam*(X79R$IO)%c(gwN4sp +?KW9`ssvC__a9)kV}1o{3T7>ragcoz(Y^*)wYD$YUWxVP^E>Ki<$`_3+->_V%HG@q&x^}B5L8B_R%!3 +dNV82DVYaaHJmw!lX?Bf`W8A07?62<bycmxS9gL_`N~{?Ad}6O_;62H=P`4)&kuvb;20k74LIXwJtAB +%hMU0MrQczKAN6t8sHk9K8d@=Tgs-d7|TnRUk=OG#A*DvyXPaHscR_kMlaEh!N4Sn2zx4>+cF+&;t;? +s27ExR~owTW0^^fQ(&x_GWuvuKhzOKPz1+owTz=m2V?@sDlells;a_|LHkHRRR_V;OfUvoivxO$x{Ed +6SY}nOmY^l3I`ebsSLGFG!|>#yx`gg;;F#0%84JX4nWOFoipfOnb!L&HPKBMr(4I#NCJ)D*b=v9<FE@ +0}1NgY6Ct4v{?rqX|xCz1GkG{3HEIyJvI0JKQ$#w*26-9*0b>ZMPZy<{Hq|0DlR#D~im_tyE!!r3~i4 +XkSR^LU}$nnXfp$-5DjwTSqBFRWl&;k?#9w95vG_<Yq79g+$=Si_(!?QvomHOR)T9$*F1YK53<e}4q$ +O<f29kiK@H?3K19$<?uZ!wl&fFFFnml+R?or_!5EXD{gp!TfV5loS^z}XJ^L5VdE2tqU=09gPc)5s!R +=@>ZDjlM=B0UxaaM>xS*O|{MpVqm#wL=#Swp9DInHE#rkSXl=yjV`D=G{fG*K(T)yx`Q2yaGUsmlgOS +`>)^OZ3Bc;9eFf@a09J+&C(J8Nk=+)0kzd2q*UbyCic2k>wSl<l*S=a-Rj19c_s~~5O*fvr9`=z3*sF +U2ebL~+;Css^+_**GgjdjTU<ymvHe6VlFMz;xQp7+F)r!t6+R`h~RL~l^)LBg)Eoi9Uf|(kn=^d)JC~ +<)Q5_QD7oE6Ek0u-hR=yzoWY8Gt?(rFt`24@yHHXY13&%8=qq3U$Qr_h{R7!T%^qZ9=7AF1M#E|4_h7 +Q9rWw?=k;cDc%~usx0f)YLhz4$pxl;n_vz-95HFTVZ$Jz}H%vUTS^i4Ota!jov@<wmKoD_UJ8j`WF2i +@cA;j2GjyDa^Ym;1S4&n`DF)8hqxN}1O-s40X#5-&TgB(JiwMdoTh_eZ-b895nA0eF1ng<a6z!D5e(1 +d(5~sejEX8D0xXbI;Iwy$;PUB5U=`)2HFUNUh;^^KsLwoHYu4Y0`prAt-%XT`MRbc8ciQZ9$k8ZFpue +$uCX80qrN1gtP;#TB)S<?CmlM)oyGj(Ew3=a7t0mA80wC!Usf*+qH~|1-os$M=6e@?Zng+(bL0?Ad4g +T{3I^76^4NdTLmr<iRIhN2I8I|RXYAFqUR1L-uD-Z}Y(6>uCH*h)%-}~q8FTZ*Lx|L9|7`huSoBbDk* +JBIg-*yj7;;8c|Nts*z?z^|&AF`7bwu5ALn@2GuRJ3naNlbmqK%Hn1tLO+D@9s`lpdKvmK!9dJUR>-Z +Wx3J^d;5<cso(d2GTkmf<gTXZHQim7^IgLQxqG?0|K!o*HI~j+n_)HU1f9I}0iit<?`#}2=`@(axxBK +?{pV982ptu0X4wiV&{Kj;ANIZB&gf%kfcJ97_QZ<>CSkn7NcTf~VC0}n#pJkJOm$J#gbEWEor4A8hh! +cE0T>Y=&OdxmF$yPTiLGr>HGwpLpe+LZ;sB)AWdcGo&NZ#ZXdA06K{y}>L4|{p*DR5I24L^Ntf$`Cvz +MNfMkw<6g;p)>Tb<3vAl5jN??vS-Ni0tUnVA#7PaunBZ-wbc&Y<-g2s0DtPyhPOt_%a@55R(wSp<^4Y +}tIW6z<-4lEflLH4$j%0?zm@83;Fd(LFBIAjBQ^_ZqM;a}u{|zstCVdHT{)0K6ZWt_SbC8dQrzt=FWE +4C$h65K%}2b!+0ViWue+751`Z&paMK5>ZA0M@cnm!MxEPD5f7*=o7dCT4lTw4_;-Uhn6r+*s@ttp~6* +Okp;u7od+&E%8kwUdwd-DmUkWw=5l$MU7)>m3E~+3Ed`vxjpc$Kspp`}B%pQZHhRdy6F~$lrwmCKi5A +)ik=zKK(*h$QFnwxNqXZiogM=jx3-ZADD5${%Stn~#(~qD};X`jk9Aaq1txqjcTe8j)KC|OJtb^fGB& +2^sFPhh3*7SO3pWi>Tm35&o!zmFitrY)bq%qhH1!&3Prvx<an9fb<)9JAUFgr9em_IUGQh~4?+o2e=U +@aQ3f{M-@L=M_SYN3&jA-*DvCK9};m|X(m_*5AOD62PfG^1obKs&R1d1r84MFpUAgp{j|r<Vv(mWXX6 +<Py`|fFjx3CJMFLpRVAr*2;uNmMZzi@j#&IK+!1zi%x!Hn*%3>3EyGR_d?BA1)jGy>amX@U=X#j5K;j +%H$X9nJMUQlY2Pq|O2W(~BhesGfC4qI7Frx<Wdllt5`H!`TknV1vNj<3JTgrh)r46wA&FXo5J~I4OrC +kw#;Lrv&{_|$1o}vBI|G;=b%%N)-mVvX%#+MN=dNas?;C>^XCTq)ASpxn*fWdHu0T^_05FaL@b_f-%I +<9jkqL?G#B>Z0yBH7fHw}ZlldT~`Ox8{k63z4G$VmD?vq#lpNiJrN+6QnR@N=9LVrkbW$LKo-!-PHPJ +yH)Cyom<vdc&cO!`3dk0Il_PMyjzPZ+sqSL@1cR(5{ox?Jtaog3MR?F1$t~0x?QK2a6?BAjWW9J|9T( +XoP`gidsoUsxG-sfLMUrAs@k$LogbLYoN|pU`Y>Le76_+7)EB!QARMVq=%7$O$bK3vhldlP@X+|*0Y* +(--GWMoQ6l<&=T$z%nhyjp?WMREM@8xP^-ye^(nSj=ovEX8Canzjhw(SD3SGN4&{+ifha+Yu!3n!)h6 +2o-yQ6b1y<fOy<ccGV_wa#pSxtnXn{EnV<*j|#mPAu*U`OY#~M4$RamLlNcohGA*mVDJWnaPVrU;@(p +(zE_}*_ojOUWPy<nzmA^R%-e@FC3R_lhaIh=_chbF#}tlP6)Pp<7Z8^Nq2livj7|NBvJ$QGycf015$$ +2N&V%~-sY3IE$0iL$5}NPSzqLSuFT2Hom1xypBMbaC}buP&5dC(l_X$uOY9(aE}M9}hBxXsA+A7y{k8 +Q-C+UQ^&7fsDr)7Pt*w~uBiiwTOMWXmz%B9h-4JPnB|K_v{P#M7U2P6n3NvG0nAim+^~d$!qWIs@&GU +lkYuxT1sJB(u6TzDu?&=Y?mprK66%l9fGEM^M<Y{PP_TEny|UZ0=0Gn>QQio|B8g*=xk~+&U*VRTm;q +R2`65Egm%QI|u<eZzXs}SBp&<>xq`fLxi63Kr<M;!kzSIWuA6VZe+M(^{DZt{<RUZ{<u}Z51opM#Oz{ +voont{QgOi~!8P9_*B1{PIZ*Foe{(p-sR>f?cVD9}GDVl|$@K`qB05Y-=q8R6mYQifOMS2`Q1fnboJ4 +TKw<^IPO3_G?f43a7c6p{kAg8G~yg*Uk)7bOD<-LjOv=4T7+EwOH1;GC88M$T3pYg2x=!X*Nvs!hgAE +AUuQ+GIqz_%w7PkumNx)&zVc2^9T0{38tI9=$s>S?4kAf80^T&gg@`>kLimyXeDhB+=)qL6p$f-^r`3 +m80^uZ#o%ym0mXD;YB97q1;74pG6@R9-_ImK%z@At39T(7FvUKDanv?9oZ4$$P}B!8OI9v>K}pbB1d1 +X0?##S-o=*lu;`5}u9H6mZOa>Up(rId_m82VNvmX!fIK)QvsgpghK}m6JzfJ=XLias@h;%M6y&;GW92 +TF|1EVZuF3`9*(X?f>uty#6gzAEcMt(r~)IEaE>QEj_RF%m=7W7Ncn=uKzUqAl<;z<8H2M{4|K7cf~a +{%MEK3X5ZUw-`;51==xBlFm??Mz1S=lJ5ioxWlIP@W{2l?=qbBqOJ>pE3I;Knj*W(kLe8?DLnkhu=W# +J^kFb_xPXVgx(vK;eYV_ub&9zM;o`D6ILo<*UmB#sWr*5GNY7#j5!8nlp?zj>gta1VHk)6!!w#|4$TT +-qBAv>sZqAys^WO@w8(Etbnes500~bM9L|0~vXM@`v`cAO)^yPl5DWwkfdYy5>z^o@d7t*2{qAme;|s +%;byvly`SawKy~fb4%uQ~Jo%@Ik6%!`3a1%Kyn5eS4;0)+G0hoNqc>&9_{hX9gJ&mTIs!&2ej!etKCG +$Gix}!t6Vi7G+7jc6k0GK`8oHjw@4qlAk0e5@{Tr;R{s{z6?B-5|$GI`sf8;TQ&)39+9n@mp7WeTDJO +!-5%2TZv3nOaaHb@t|kco{Kl(Q$C{EKJr46E7_J%w)}2uuKkWooqJMX?}xg=glaTB15X}e2%syS%7YC +$hM?6FxKLHg~9t0SmLD-emHjhOjev({o(lChKX*x?87<$g*vB_oS77?Q;IKcKl<v48)QR<*qmbY01LM +|V2}4Z`19Jlve75&bWCnI!VcchemcO1M)cZU?F2t^ZPYg+{MpBDe3~TYE^m^R+edONQZK0QpMlDpQ$7 +1QZeAHHAM+g8MW)Q1420sIZ$|)$a)ND1BC{B(<q*HY0|(>PsIuCh^XI_uX!$B=un=SQ5%ffH9GV<R8$ +lzxZ6CIpWebY>(6<R&fF>|hb<to6i863HG*cKWbiRlJ$m5h22%=|elWbJik6nB_C~@w|_|~|9hmUsZ0 +~zCJ9vYgWtT12x?INmf&uHSPle88+riCPaH)dY}D>@cMx$xZR$hyQo?<i|BmMB+k{Yu*DYk_(N6xc+M +y+w}dX2ux~u*+b91BW3?kws^ml(SW7?#Xa$a{J)m@#8@GC~PfQX2vE-InUDCAkBgA1w+qDhkJ<*GLAM +$7M!>&kTavHTOgA!G~MdL7(n4Y1)&uM55AEWlk>ql@BITm`0|?}eth;Gm<J{ZmJ`a;CTPndx>!V;fH9 +^7*w;1i&0udAX%EbQJbm{KyaA|YJ9_5mdS?7)xd8^HKm)1CPkrfd(t0WPHRQ>4S{cF@1y~-_?KPta^F +Lj>H{^tENwN@i>#9zS;FBP?@$3V@kH+?8mRh0bydiPEu!p5JjK#Xe)x(&mM|YV3`4#ZGlGqQeix&2ZM ++~H-ygcj$3K-s{OP2m{WFCRqy;YA_TFji}A)0!WY);7{6Ey(or3MY7X9OgfbhpFa_+rBUnn7(jOD|k8 +Y8lGXan!wh0UNGw!+ahBdjJKy9s()BA4~?Fe2aDmkl|o!IIU!G1M7U;>SM6xqNAH(;mrNKJ@A(baQzv +OterTASp}d-0oe|FO_{#!wuPn5HkoTO*_3h&%FpEg-<_WRp!mKdiM62T0F+~!mU|>Xk5XY94ITQeiM+ +(%qwkr7W_;(l(OA3N21oar)3JeD*w30FJ>h6xAL-Z8SbTh5H#J*7@ZJpu7AVZ5CO8|{;2oX3-Ffolt3 +T}Qd*;doM(aWTQ<782m$zUQl3(RhdR2wFDHgLkp+1WHpi*R7Id?&dpx&}h@W6I6n9lBLx=S=jMr_ksg +t;PwV;7|K;jMGr+a#M6<nE4AdF?lI82XZ@>4_38td0~-&SvhLN^y;sRv4Pe1f%8-8!E2*CSP1{tphRj +P*f&alunR0)$wc_Pz{7P3g;G<X)@ELZ|+soSIJ#%w&#de0Y=9)Ac%W#CWYu-MsHf?B_+km*fub;V`#W +I&!0kvW{S=$zDXk~K&+Ti)&&mp)PC1qB0oNdc4KV&r31E!p3%FB^U~r^La@x93>o`95}F+Xq!m)S4hv +F>w*dtR7?(4FR6Z7nmazk))@g_a4D%*&dnP&-$K!rrlr<%F2^t<m4Gsb|$M_yi1Le6fh4EoMNNtI`LA +$ok<hSX=y@>n2s18?%@J7AopaQ+whRwLUX9sFtHQ6BUiogiGn#-An8!np&^M!2!05b5X?$}9}JmU@NN +tJG`(1a!$NV3{jhLq$Eojsw=lNqUgE-6zx1#GqEWxSyV7CA&QJhsYA%uJmfAK7jsA3bXi|M2ATaO>>N +@!`qg@sEcu!;`~Pz&)V*6DX7*sF|dnfBWL);j2G=cl77Ky#D^p+aLaVd~$mB<4^zbx4%cz8Jzu#%jDx +#y2$e7&qZ0Su5WJdJ`I3{4EFX99zOc&@xMR$!%h(Xb6`|@<92Ok=dX&S;Sy)rjxJ{rY1Mb=wZ+)Gd1U +-j6wi!kSxqsO8enak@p2^x8cxSG%1U-5Qp1sgL#8jHR1(s%o#!Vnj*i#@mhiU;IIcVE7!ociK|3)@{1 +=vFOK_$IW)%ASBjUl-!H&OQvZ`5?=gIr?z41ZAaDlq9$K?=RtQ1XBmqAiSX|`IlFRu1p7r^x9*=2zj? +fuJ<+JD@CFTl!N=z!qtfTrw*KakJs_GYZSFG_EqzEGE~>oKsL8KT3bx$ck#88~^Mq#8E|<M;0DdrMDP +y<sP;{#)z&ZSG@qH%Tbu4HR-lc24A6BrY8vYmUiVIln-zb@UqVU`nisa*K88HiU0QzPdo?s5vsb3~zQ +f!)SRfOtV~3rU8Z56+xxQeMXYC<g{COz~SqAXt|8$n!;_N>@Av#|F-?RFMjX&!v|lEcE?{&zWL+%`+v +5YV|32#(ci(L(QPG>6c#s?%dsp`+jKZZ_qNr?oL-x?#W`6L+^Rn47LaBT$_uVftF_bA*<Zt{Mzrop2U +iZCZqAFn;Gd)v2)eNay1VOi5ikWSqeNVpfDY^|g-k3+9DKzzim5iBVqA;K^dMrx0ZrC1)uRw%(RUzSE +NIIjhegy>!r>S&qy?9=2%}Sc*M<%crMCoYuvR2(3|ZtcY`nh(X3-}Z-daGHzMm{dcs0PvVRH@%@NF!6 +bC<8^N}VY`0mtL$2MSZ5#zC<K0SJqo!bhg~Lk{eWWv(STB*?9R?vVXI90dE1p9K5CK1%{!IZyX?4<5O +E#(<&V;OD~G+ha)18N`$<=MW}KL=N76p>jz9)^nO&`QGHUH<B7%K?0CNu#+;t+ORHq0uQk(&`Lrg3BF +q?yQT>hwD?Tuab97%t@I)>g0P1}XHdfSXF`-YQh)V(GatvzC<v%ulJxV<IL%`dXL099uWA~4!HE|om+ +>IQbNBXEvDS>_a(jClSpRQP3+8WQM<B$5M-45S-9Py1tHAt!Z!>F^E!n%B%b)s(^7qx#r|RK>+EKjD9 +kp*`!bV<J<&iHKX8b-o@_46fZ)pPOX?gu9l*1*~9z1LCv6=K7{@mHR2As|5q?ztjN}KvRcHNPBw!|aD +SrQipxa@Lk!ar)d)K8&VKKXKA0lS*bOfVli<ccEKQIX({;o!crHdpSzphT}SJ}*dh`x}f3IY)RVS}>Y +3cfQ}fjI~bL>MtZ@DDbJ;M`=Z$p8?JMOVzU0ZE4TM_qr4B-|61nb~UVfh~bY-p~65uE}|^D&;|R)$QY +ywEMRC|hgO1$<q*?VyIxF91j;krJUsCp=MgcQPB29h%-QQCUzJL-KgcOEs>9NBLnfDePPeV17g!~N&( +HlcFj<syGY{kF8Hu#TYe9xQsYNIkl8oQjzRYik*lE}xK2PJ&IJ5IIkg1Uu)=a3`<)*>8dFlG99daTZv +6X{PwA6aFem?THnbz9M0I^PcC-fQm|C)8wgBrIhxjIaV9;pn(w^9uoX>lRrzXI)t(nxM}UE_$W^a&6t +8g?J=!Ln*eUL+M3E1}>3<-PXNPsyId)pE&=q(2bzmDWqj1vaWas6v+!QfR?>DxC3x_o#7toXCwO0$`a +pKnIeGgbo+xoD-Esi)kFGt8trTKtSOo(AL9%W`%i##`i(j)R;{hRMm_bQ=a(pxVct<)i1cQ$p8Y?^|i +pd(V(c}>{tz^{14G@Ymk^7$Ez@p!l*zmlKE;5i9HFI>gqR>1{1z#o{H*3!G*a0Dt032q;Y_Eg(=~rGs +rfstCT_@QaO(@v`rVeLctYlc6WDipt7T7Gt+D>sbypso!{Mrx>6fy?{+)65@H&-c7~~)VG4W6Wm6z5$ +%D*drz8&ErVaW~>lOr}%iHK7p%0euZgOlCX4rT`BbG)Wld<ARUN)A{(2<mF1*o+rEsqHWK8aqEr9FY( +N^`EZV!Ev<mXY)tIIY=?)ICtzo8Ep$1+Us<H<{F6*VRNhvX8=&ZhD)74j2YY@p=K+RKUXcf~{1TK^h= +^tA5d~*uVo25s5<s0153-9JRMc-y*xb9hWEuH`X7Rw3ptNGV&T5cQMfd_T@x*W2=6K)wkut>Z90Rf@# +eTm}Xq!fLu*L37BRMtp@8h@09r?Cyw%Q#>_^(O>E7HJPCE(p_?dMS84`L=H*fxFtr5Zf<`z}aPO8;17 +ZcXs@Aa2k;9msJJW6Il^bcCGfu%&ywhG+ZQ?9R_M;gf9VJ(U@x(1)*k%Q7<<_q~>$TB(5hc2(NJ0(Y( +zap0`Ef_-Z7}5O=vG*t@YSz@Oz7@^pBiG)&-1yXF$k2F?$Jp)Pd-cknY0ukYZa1M(yQk;g%*8dnU)%> +fQw+IF{Fj9!KZXnQEEcYrK}@0Mt-`)5)rmd$B{vJKjvshf#EWf3T?$0?bb5tSUq?1byNuqYr(3U`AFX +OoQekJGAR_`4j#>Unb^9Y;D*%%i4E8qgKU6#zd>cNib>+8qP|u4;%SbYmtKSyH-uv``CsWf3dGegTL9 +FT!1;D}(dXTn&}dz!<^_&;e|MS}e|_J~&AyJ%$YQ!al3BBN42w=1+)d|r8qo6cyzb%J4psplyJV;FDd +~B%N~;jdAcbIwf{jmi0S0_&XU7C_2kXwJ<WJUDYfXI=0j#LL5&^!)C2wL6UzEFFl%D!RNwE*BKK`&ZX +%j15<MpY3!=Ne09`w~=@0mqUGyj)nm(O5PJI`@Z-nb8iRt(vDK0~&<b0}d?yu=I29tT)_@8VOk#P0wk +jVcW^-RX)w9_&8wtQRlxEaR(J_!3Q{9Z=b>wY2%wAW91L^PP+|$*#)w)vtOV%^hb^{;{!1W@_<TDh>G +>-jCH&G`GgPK@jZDfiYLX$ECh__BCKJozR1?DQ$2vNEU#YU3@zjNhj)skz>0Pe*e1DWy8f``amnQg7B +hOhZKg#NSAu&4a5)P-pl0-C#Str@PY4?wAmDm*W?sJBZ__2MWjdS!Bfxm+~8kFfU|rsNnOyqNse?bAl +>6n>wrOHqEY5(E3sZbv;%U1|H`txr_Ts6!(ZKMZLJ(hD`WFB0<qnk$mUknZw|?}ijSGqP?lle*1g}nu +?|Y=oCf^TzL`z?yS1&}tT4R+gXCY^g>4Egm+^qpVWLi^bOeeU-J3Thk;0E9@T^re-wHE?f;Ta4_x3y~ +OI8>8LhZ252!YNVn72!lF@OWi`y)sX)B!(wXgzx9)NC?i`*Bo7YuIC(0dK26pS*oz40gJdBUgaHs*`C +o@kdg-v8pWx3h-u6DPVL|VtFe?9%dsCaGI=Yn0t#!(UdmgDDFyh_w82gUxS`NJx}XVfoFaD_WKdbN)k +P+Dwlk*X`*oH=i^83YduhIJYjw}C-Oo6@a*)}!-Mek;Yf8JetXze2R;0qoQDUV;(0=2bGJQq$2lKAr2 +Aqn)F=G_pX`*$h1Ui+Qs1AzKHR~ieavynR|T-dc-S83;C;`c_8<2w3LdUq)c)hOi^9F5-ND!w4Jy$CB +EE)UHqD&WJ!hp}Z|eg`_c05@l}&`i55_dN{gP{ZJS<|a&;YL-{@^ZYXR5s($on18+v*^rGLPyJdU`$s +a%w@|RxcB-^CYx+Ak~Th=g?NsQQx8Dn0CCsjfsc7n0VOCw)LAOE?ur&@8|a4xT?rn)x(4SRoQ%$^O#u +^0agsmHe|IrOy(i-Qc5&HJ51lmn}%2YiBbh3@&S;;6mtM5Fmy+Al4?<nbwC4HSqA)unZiqR`?OAWG)z +O9HRaYY6}2uj7Ex(>Fy>c_`!!fI6|T`ZlADSwL`Ujp{5_BnaKGqc!RaHmvE<;uIG9ZXb8j+BW>=U85# +i4sAgz)^gsMrvDW~7yGOp#iCTAqDcv3a1RL@OaG|H#(N--(X{k}7cRuzVRWDr0N2sZ{G(D=FuChyLhS +@IlWtF9u6Oe$DuD^>i+a!OnHBBg=K$nkJCIW<4|<omw~*F*by8J1(@R7-$Ic4~*@(86YqZ&Mx<r4(K& +0`kZzbYRO}0lUxv-<^?5F=!5u1!F2=wy1~7)nM^X*UsMHdw29Lswz2ACU?iUeaxuC`iHb?7oSXH=mfQ +Ww+`f}$-5kO$MV=s?Q9CZBUR~pDyx#OsuF)*1xrwyBm%_Eb)I0Rv0Teiczyhi^rfxv#p}c8Z^G{mpT9 +gj4v!E2bod|Pw|_f5bnkIZy??xWcXAH@Dc-%y-aq)=fBxflFq6K{C#T1qJ7CncusSk5P}sn_v!29Bb= +SFY^`kEEmpJ5bId{vG(yEo<RF9P#RBWHf{a|PTn&cAs4=^%wBc`3ciGf!tq_fKK&Ua>{une4JA9YXV2 +6Ly2XmDg=N0Kq%+o5FlMx$E=!M-fkTj+>%VW(Osa<X-M*yB1|-vRcmOXlX6ilRz>`K4`C5h>c4n|$e~ +N#1Ou8BuRGg!dxJYV3VcVmfEzH{Fno+&AWrb#)NgtY5w;5$LaKfmhY1TpAT`3Sr@2Xx9JB1?F!c#jFq +mJTrSEM_dAh5mK`_U>EQYFg{Z|yruoyJdQK&nNW;aGMDmOtPdSt|BK?U7I_$;lln?)G=>lVEm0z3aAM +?AA;#$+$>Kh*>lXa0BFFQFO~NexBwskq<2xT014?BaichN96l9z1>|f?o;-N04k9kzcF^ibWT}h1uQ! +JiQo;%g;qL{0{D9YT56D%Cyo_3r}NG1E561?rX1=z^^$U&<pZ`0q(&1e_t?EoYk)Mf5lztOnKK~fKQA +Ixr)L+U<{%&(&LvW(u}P4oxPGgAk8Mm73lt_#m?+1ts#$FlkOx<?tn6KAM5Ms9w#A`6@5b;du{Mh*yk +UC*Nz_<sRVO9KQH000080P|F{P+sgoyVn2!02u-R03rYY0B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIUtei +%X>?y-E^v8mkj)ChFc5_Ad5X}JLMei05B?pzN%1BU(sqSFnytIB&u_G~t*N<XW_H>6l+xBJB{%XaWO# +{EEf5=YN+oG0Z436KOMfP8O$8L|IWXFG)OVU8hX%=y+R2sZ*surZ_u5sa(jLBMyda0i(-71l%X@TpYf +2B*Px|S@iAN%&xqPY{WHyC`xpzT405rk42{Gv!03@qyovjif#GSB~S<}~LY3g?w8FNTwOrW2nzWgvbB +{F2Xks-7Aocfnj*Wy2wuh(sx{6<2tIP!^|o=z&3;ssDk0|XQR000O8^Hj4?^+UO!tOfu8F%tj)BLDyZ +aA|NaUv_0~WN&gWa%FRGY<6XAX<{#Ma&LBNWMy)5E^v9BSle#fI1qi$R}gurQ`r8107Ve&w%q{RZqa1 +7k2WPyHaD`UC8;?6`#m$1C{lJFS|czNik$12Geeh+bWYqC&RbdfZ`Qo%O4)@e{#B*FxxEtjTwh=Rt{S +zIUWt<Tdn3BARao_3udO<$)(hQwWoua~Q5!4#p58jsyePXK1zqt&rD}o0t=IKw;Z##EvDB#+OXX?MIv +n_{UsNk(@_q@azPDIxM<H5SR;m5^Djt5?YbWs6J5|9naggmvbPdd72S)vDXDVH-cWZInE3Dfn%pXnas +uON+`lb?l`JzaIw!(F)45oC_V#h(*ovM}>MGbpP>9uK{II^tLv~{CPFOJ&pg_7l77&<8yg(@Z7AVq9% +l;z|>iI%>K-iu1twX&26gxrzjn{^t?_-v(yw6DfL9J+=bQq@Omjh)i7Q-0G~#qvruB#G16lg&#}%C^! +KFyWSnE~0;6XY%X;P*o2+Na2k2;u+>so_3tnEC`~IlqWn)TC-%T<OQV_M(P$Pq!ZT<2#Ri>>Dy(99I{ +kQ5gQO$iCSCduh%TOF-J85mZ9|`o1U~RdGTQEsNJe+N+fC9S<`pI)I!=_AE2RKV)!k<AP-68ZpClCr6 +e^#qi)HC7|NwUaJFAftG4U8gel&);$Ae`dD7Y$=XBAi<n`IfBs=NRymI4~#P*K_!Q>U5otH!WCF8CVz +6XQ?WC_`jW;JY_q`Vi~MAbId35iH;0Q_+jIM(fs3X~#WhEPRWV)B#yNR`0ZnS7QI_xru{18q667%QG2 +caznWNUcgT!lVIVB?*J+#`tvS+h8pjgFztyTmoKJo8D0tv~ztZp|a^Ka(&U7$*)#{t{k=lE#NSQoUx$ +jn=HZ)F1+ew`7C#81Qwr&QA|KckA36s5)prxBUT&vO6S~A4AHwg@rdM<;CFbSBK;wpg)CrOk;d<6>~p +APF0wnZco3Co-+=&Hb6g5^nqD@|X?-)(A1In3tsCtbBbI58zCoLSp<~L<>--KOH!d@Q@K~#(XjC0(pw +Z8YZJk@V6c1vDG`KV%_fa!hMV7abqTSHp=4Sj*gRaDs7$Z_jDm~dcR1C9=^K<bDnC_W6CDnLfrO0UmS +;3D5TXNJ*L(AOoWJuu_l)H_xm=6>uvF6uBuN%JtOh^ZTukPEDX*>|4J0MR3HAYTM2yo7gAtX7mV_~7! +YR%i{dZH}sDoIxr0t3pR9;QBgl8sZ_U+-gR64eIuRqmCGT`XoS?^d6%SHOr%tQzQJ1fYDg@^!2YZ%>3 +-G}2T|Y;&^$dj}1tPECG(0>J+H?Qx0bgutL^$TnN<(K@q9B(x|L<qA7irUlU0T|_i#dI2aw3PD$jYo_ +n(oa{&xf}ma(%H3S(o&YHE1|`~XXlbQ{_$*YHYGX!^5xU8-3D|@Zyem#(fI*e;X_(MvAap(f;UwtK`^ +TqsoCLu^B%3?Osxw_jNQ42Yho~D>1G}0C6aS1*_+<cUw+X1xs@fE%a||Y<R1U`<VQ^#*!^D)eOSW4?* +%U1~iOLwHFs4!1e}OvErZ!BfVjHDwxzk5UFPeEMc9Ee=XKDV$Fwwjjr*Iu>^^MScMp31^c>ufUd|Hv? +y#b&F(=h+c2BD$MlK@Pk_B6HtOx|Vsf7<P<GP`(vAMQzK7cZ(6nr(N(_=5Wtrm?{7p^c_pojT0yszrR +WQLm-yc*h6vaeSU)zuD+k`^{#E`Ea$fgwl>G(I&yCE$eXy#Ep;nhVdXajE|GLVFW*~1aR5=_s>U6(k@ +T;lYCZZX(KK|@HC%uoyJg$J5aoJrgKh$hi_vGoY-*{KM7$bkif(q6(@b23hPaa;=bSxWEc**Y;p-zrN +c7ajgY=7xkrSK(-#aC;O-z%;U#4+@#i~XZ0<{*j2r^FeoQuu(n?Gip<7LlFafTCAPT;~4TiwcOvD8h! +|Z^85x7PEkpws-$1s72E?YCv)4s<jh@-M%!lAA;{@_5@1oi5<$sG5Xijnt{C)_Fx3zzy?j?<2ad4|%$ +1vg9Uxy=MC^t-&=a2W#Eh=)kVG$>vW$P<ke+k@nmvlY^Zo6c}4;oH=g@NzBwVh)a5XfDdbG>&-LuP}i +>R^#aP#*L0Xl$%SYeEIwFiDUzat1#<zQd>4I`=Nz0m<dd~(n7kaw-n*Wm60Ma;%vuXUA6*6xHr{}AWK +x035;!JxT;TgxJ5~`Gp2TH4(Ipvkf%&ksyiJ8qyC>|?*9Q$O9KQH000080P|F{P*2K?c5DFv07e7=03 +!eZ0B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIa%FIDa&%>Kb1rasol{Fr!!QutbBa+{MJhP}OJEHWDr-8i$ +F0HG!Jn4)^o*UfO=tt6Q50FuywAL`g~1Tu4g)<?<9sAPb@dyGczt^X{7fd32Qsw8NFYjWbkKOW){=Z) +EIsk2FJNt#pqz)eBHjtktjSk<nya#qq##5rwbMXGbvj+qJsLw2YGN8X@}#Jp1r#yy|7}YUsy^_P{nfi +<Wzm>{wvxVnlOhx=C<t(>FS^${K<8|#(18xHBkyi%PEU@wAuG>%nPuWg7g=J?p&>TH@8i=PM9ZMn&+I +Y=F!DB67Sak{0>Pp+xHzyebn6mq(8fIKcCetdMWc6^xvGmI=$ikt>vO(C5`s^eN<91#5tMDt^qI7$53 +;cn?CqSD-K@wC4s534sKC;u59WqBj$R=Mulc%Y9C1{mc#obx$L0lc6ml$pQzxGCP0VHvNRY|rYu0BUG +0<ph|E1k#I8f_aZd~LDG#c0sW~liMP)h>@6aWAK2mtd`vrxGG#mQ(7005CV001KZ003}la4%nWWo~3| +axZdab8l>RWo&6;FLGsbZ)|pDa&s<ldBs~>kK4u-e%G&<tRF%xWHv$G7FAHkb_=6u5;z9>uvkbVa<rN +(MY0@nWx?40-gC~}$)VPpwkRKLtvGXL&h0yw8OdYYbUiDYsuD#nn_4Xv`>r{%yzQDtS&B|EsmHw8slM +Yy|52!>dK8@*2VV|F??%0o9S{=b-#XqN7K_D4@vi~CI*PjgQ16@W$Z-|64wuYpeiUUtw3Wyf44$j>tg +98fz3Tic`1`8m9e%o7EMc*t;z}{Q!S|mF(c-+!eOlgV`d3$P*p4f~^bA;m@v36Nj#I4TQi+o7&a6L3# +g0umR3cx{^!I)k2uMB#<1{^WXojjJk~_f;ye=ykBkPD3dsCl@+-}(IDp}vN7U%W{!8*f%B?LtJPH+$_ +<BD;Zai3d80=AuC)Z3=sR}%G*O{8IDP>Ma<Y-BC_%_dW#+OJsA$sYJ|L-0{UE4nOAd&O|xGIwM=0Y4u +`<nDXayZyWfwgE<Db`dPyiGJwn$QVGtX7wBP<>@NdrjfZRBonZT{P#xIStr^q>z1V64#gjDCddCbfjw +o*<;s!r_Vl5KMU_-N40#K>lqG25MRK*1E{Qm~%2dKBQX^s8At-G7`M;@;Uo|q6o;v&TP4~pgMkrP{Jy +YPVYJZ;9P`u66|5kf%?S!n^{SJWRA>bn{AQa5hkkss1+bAV>m2tp<zJ`xO1%?N&Ie2LC!0#;%d_r$NG +*yXS+X=yV-*<91^g`X}5!Y-hJ$`MOMDO*;heWq&tlPp`vQxR?=shnE^o=GFu#Fy}S49Zv8-qiZ>lFhz +Bd8ccUT6J*_spQYg&jvV_uDU;V+&i_$x8N8s3a4JbPsiNs!{*1`{wnj=^p%A$}A4M1Bk7LQZNc0Wbpu +@#Iak_Pn)iV%yRGrU=`PN3iETog3AHX$*f5WA$LP<HX8}73&90NrP-LUZ58pMx1d}LL}-9!acukZ$^; +K~I*6Lq^G=3L)ZREqV1}FtGut%4ZdnF)e>zA|eu3di_C%~Y@w3wFE{!ebIf`D~cz6Be;}Lw2H2@1bE$ +9IE{2BIEg9y(MxQ|26cNmebuirID=K7l9cL8kh`i$F_C?v;+QHHQ)O3~;!3{)!?xWsBI=@1zspim*8s +d$i#a*N=v@vzZiG<ft~$OD2<3JC+FSqGRELm8nW*&lv#SO~LMOy@1jXaXUff9WtU#m;g9%YSxA2f+Jd +xSHGRQnU6KvWlbV4^8QK#eGI_T2!Dan+2{yp55-fL_qaF4H9!6^c~gnx-dS@r?6se#eR-7Y*)<pvMx8 +kL2(c&<ic|vg|SM-()UEyf$c>@0=cel(=eQ+*uEQ+85z*}_HLC>l-yHv^t-u<$Pg6FWpRmMZ}gss-;> +Cg4&<54!#IN0CsQ`J98uO%m?vti_iN}KMRzaC%}MqLgA*?|H~`|)$mS>nBADx!&l(_Z4sEZ3^edZgHy +W1nwgn{3USKcFw58w1_Bw%r!Y4gb)H4R<yhW;wPP-(?b9avSQTQF)CB3IVw?Zp48v`}`7m8&J*8d0dH +Yr58Y4+pb@)84CK^fH>Vwef2RumG&=gFDaiqA*dj?R-pdMgH+`njnE@_!Oc^%C-u1Al~J4SVF34Ctvj +^V3oto8Va1(+SoXy#QuRt(dha+;_pg2}0}LSF2R32)TcWRi(YmX9DVy5rj29CFt+FuIXm0F)XPQlRg} +6=9rBrU8>>+6=x@=G@cSolx;NEO?_pk>HHQ2g4xwfuSC}^qlCxIUmHRR9zQkBJ0aSyXRvDqh`0s(+h5 +?)ke#p?&W^Vlyn+1&f5E0-1sew6!MX%Yl<QIX;<w(^vFT>f6}`vw>j;j3PHZfNUo8_7nN)x@eLqxTy{ +E^76`sVJLdpBuwqL;BUpM=`8LA5@T?U3}C?whsvUotQx}K=H){b5Yu)7dS=?cx3k-`<6d=H$QcvpT!b +{$4dY{Q9eoJDWiAh#O5>QF6a-slyngb?J;<c>fC45B}~t<aEhHqdwHBvyn}Z(o1!p~h5CAD~A0Om>=z +9&c>vp`HGU=v)Q)#HJn8VFUQQN$v_n_$v%BA;Fp(C<@fvH{ChFd(ylgb&|T5Hz-{~p}J<e1Uf=|?mZ+ +nN2)ZnNe6qGmlpLV*MC@A%D4^LcV>KJ9Xio39hiYA-$D4zmadn?*I%Bz^NLD|OLU`G_}GPT_qq8aFPi +ooEkSSXU-orGYne1c8|&z=Q0J6HZcvXK7bq;GUCbek_2<0A1R%<oll2B7kJCz<gD2I!+@I5fCpyKw+1 +bQ{6T&SLo+$V4;+#;eq2g-2d{VcW?WLK&pj<;4|I5dD`SbLQe<LSa*MWlWMejAUf&Y)2wiA0WKuDmBr +tsT9HJ*-5CUC&KaKY3No+I%Z3w()m9hoSniLk59k)2@w2?D{+^Dy%XnwLQfBy3tbnL$2Z3?0gN12j!; +e+G7pyhZ}L1ib;B|5!jq6o2JlK4bats!H^E(NV^=$tv7aq6dOGz@<iSQeuIX@eN?X(3Um?q$>nF7=-f +WX))PAsP0lA^nkh{4bM`v@bM~fAd!To&U()}k+z2$(~2=ZIg=CfKmxq)u_uVkqs@%LaNcBGGI@I!$-y +^^C5AZ2uT@yA1-3mB#l!|j^48Ls(b$Ysj9sQHNKDK`Vo74mMh@Xm50=xR4S;z)h(+|~75f#6M92fG^J +@bRUMRe$U=O5omnlL*hf#rJwm_?o$nALXfXAp0m=aV?^Pn^tJQp-METk7886ph{Y>$|dC;Y0*aYKj*G +Xk4>dfql|rp*8W?z!RK{wBvrqX{mYTNRqWmt$$ZJqSpNO%a`xY0(eVmc|nVW#p<m?jusB3r>fokXeZi +YE^*LiWRaehNCXeO_eWAOCHmzp!;q~?KvcG=OBwdnT$`ToxElOp%66#^)Q5dq9%_}gP<J-S+k}G<M#4 +1i#nJ~O!NPQJ+ToQE@S1Inp^95J_^h`vwig5(}$PoW5g8F+q_>h_6B4Uv<@H}$6yEhJ)q%+DvM7)0H1 +gn&;gf$0uo9pP!|GC=oR?{=}d)-UlGo^(c}F775gU|7Q#W#DuK@P12ZMe0m5}SGUH43OD+7d6>T5ZU! +nR+sB-df^iGe)(-XTo{1FW)+z_Y+pqvmUU&gucC7zw=FItcb8Iu#`YvanRfF8M6gQf_>5Cp)0K+s_4) +NQIkr97x7P6t^5V2C;kljbG+am{{+jiVIRw6Yjk@JB&+Jv<0`4~3oRlC_{K38t6=CSyA`1{xejN69=Q +(K5s(%<r-UA_2~Y)^QQ+#^v7xe*VF`2UBDde=+o^pp}o8J;J$RDmt6O=V5DdW~10{3w;BDc<Q{b4DgY +?=$@iGUPn6xFY7c4>6eg?KFVe=Gx7;N7u_Z@OYt$i7GNLalApRTP)13ib5nDPWm<^=CLj6d4b{V8;sB +BfO(fYq9)OLbE&q817FeF`O666c?-_fruU(cG?&~XZn3v~x(?I)25*gb)Pc$$^o-8Y7gL^u=oD{{>wn +B#sgi2DQ{+-0m1Idrq_t;`c=rcu4kIDifBOiT6Z}?zDjJz<WFw{Q0##QI^&;_5UunalH7p@Q(<vBzyn +`V(;8NIKm+>K^WAedsUO_{-#AT^?{DcA_?E(hSyQTK?E27(FUGDHg;T7uDilS(Tt2xn?^$v`n4WHk&S +o!}W5o{A-`pc5*?ys&AMAV51dnDbJ7-2tydZF5A2ns~_tn{^?HX~W<+K99%e0{^SY;0JMDPb!sZ2V<^ +zh0mVLYUsqqRalzdY^63%>&9~W$t53n_@|QwT0~8<$av`lq)^M!ZOJE9vsSHVOex{xOUUGFqM~a`#7^ ++4k!0LyG4-EPHy*-gYKFwoJV@FDm?Su9)15+-Zc_x4#tYaZmH_@1iv{JV2d?m|UZ9S<rs-Wxv_iXDVY +g%hAFwObfPEwO8|(yW!wZsyeKR>`rvMxbM)mln37?Gj4I3168;-q&`FDAEvVW<W)Z%JuxBFXJX6^E8d +za%R1Z{YpRWn6@jZNAN#>U1umWCmEQTpvO;{St7$4SuQqxG)2qbofiJiEHbE7S1_mM(Yj7<;3g&vd`_ +PVK}si^_I-XZgeC7U<}4dBYw^_YW)fhyu5%w~1s=(JWLeB`$Zi7fP@74%hJ|Z-W=~jzmQh5v+d0PDl+ +w1acZw0t?${-<kx;oVhq@<A#yKle1RRSCBKCgThHLjxtGfh=du$GoN+EOO_kB9q}H|@ZyLpXY75py*c +$fe3B{XGaiV~MK4V9V|Z#WGZiz|PJBYYGeXR?qtT$yL$u-h&}>hQzC7H3WnM5*5_*IcPd@b0(rfzHf9 +cMgMrx-4(;p0E<DWSAlj2VYOirjfN7rUWhXG0-*y@&5cp69*nw_ed$5XG3`+WiEZ*pVdrIpkA`|rMs& +o)2t2Qj&ti|rp^O44ivWi|tc7#~GzaEXpTh1J(1uLfbS9Y;5&>9VoFHdoBPp~gP=rZr6`<YQ{sX|dz! +lDRnD4m&7+*ijsJqO+H$@wsMOV+GqA_J);EBOz0^;tQ|V=sVIBPUya^Ii8cF?i}6Y4)48Xh)%?+{T+v +JoxpDu+uCEkEz>t9M~9W>dbJl*@B@zMDp9}^nJF=}ji7YvuPHfEYnu}uJJ0xAkWq<`>H=HpWdW%a761 +hOc)Q$6Pq%CYib$0A0e!`;Plxk$%oAcW5F0Aq**ow060vS?<gjzPE(LnWWuX+@B4*=#?HE$b1l<%fD; +nUZ{XtgNy;eipR(SC$H1$Ye)^j5xxN@P=U%>z|^^jQ7uWf=GG;tPrXig*qW&6T9u2JEnf6sHln5O;X= +v;JS4xDY>VXfEi$kq1Xvdsxq9sC68$j^A?z+4fR+HRebfn_03?{G4}LF_ZB9GGM`Pk@k@gaHDG<yADt +9r(CKlt@do{jE-~xA7f!|Dyx_c=U^IJteP9u5cU1^yh@FwAu@O8(*{Hs=GWb4wJEiEIv(rioCaJ;A_! +V5C?^#hD;rwJVZaxy2p!tL+j6f2BnWLNFszMTpvh)D~-Cac5Qt`ac%}`^!C`-YwQa8WN3#eGPYY)N+e +q!6F>vq{V;#gHBkRLyck85kU##=*S73UBHtP^*FQX!+=i;zAQhHIeisy2Qi<*2-%v{f1QY-O00;o{RI +^YBRq3!$0ssKu2LJ#e0001RX>c!Jc4cm4Z*nhkWpi(Ac4cg7VlQ)aa&=>Lb1rasja5x=+b|5h=T{Kf# +RjtMUTg)1ZP;PJ4jr&d5d^A5#abN6kkq8X(EmP4{*-KIHFB^;@`-$WWQvMe3ty$d!Xf`|SY2lN=?{J7 +cPpT0y<UHYgFgrB%yZ$M4Z=mb5_lT~$PZ|@o%brda1^lLOC{ZYpINL#3+EsIx!s@9I9Z^DPjuk2JTVJ +xF3fOm{`(5>4n7|7dJpgK;TO8c@Ucrmo>+1Gf6O>Nhi00dL8?)KH)e6F`8c>jwHQmbTcL$kj!9+P_zh +5IQxG}?sS>sZm_par^m?NIp$TSSOIB6-68u05aHX_OBe!G!{$0Bg4KWvMA&>2owxv}j-s3JF??S{m2R +eo02F^oyo!^#NKiMpQO@X4`-a_gfr%)}g0de4waX#AxFMQ64NQD>h1>y@hO*G;y7NwZ)+khJ~VbUV}X +4Nx(Ge(<i-Clq%(mK0NhoM8+`ec2Y3&ZkAw%x)&^~A(ZJr4#?`ix6dJOnGT(IzU4J`G%KXc<^iwIbz6 +bpTRcvlW8h2ck{7dA^eR+9aY9eUHVARBBykah`L<irpfpn^Vm#)ShM+gN|l0P=KAH=;x+`EoSZ|NMMS +ObLwvsyU7jn_(bfN#t!bH8!`EI^z^QJ*Pk>6-c+)>MrFNjeK-5*X0+v5WsvdfP}QR39VqSICi)+EZ6x +m&MNBR8I-fX<$qF7~M19!hL38O+4EotXQOb%NRLe^zPPbP`7Z{uUbCp=}(1aw9F67pFAN{{X<D1r0Q! +A9SZ-k1cJYW3-P)h>@6aWAK2mtd`vrxvGN4@9(000jH000~S003}la4%nWWo~3|axZjmZEP=JUukY>b +YEXCaCv=@%WA_g5JmU%6@xxNxQi~kC?tzOLqqDl5!Mt7B#ju!Df#=#kAMkomvip98b(T~%e@R7F|Zvy +;m_du0h5tT8BMfE!Ig~d=lMeeT*;HkWO0m^1j|5pKDFpwPcf4Qr4+!oaKPk}?rsz<i!K~Ix{z23QtY` +_|CcN+5_C0{>^OEEzM*RLOQRbFT~5@m<aGkz+1NU-MLmr(%TF*vTlX9mvdK1dV;n_z-<lHuJBC#A^(Z +}!Gs{nKS$m9+wU2B=XX9PO+`p)PzbP#H{;o5(FG88*MyKdqq=W0r{tJJ4@C#5&0|XQR000O8^Hj4?vb +$(ciX8v|`-lJl8vp<RaA|NaUv_0~WN&gWbZ>2JFJxt7Z)9b1E^v9(J!^B@Mv~w4D`4cV0LCOwlC#-_6 +>TcJv8!B{O;U+-sas0N0!h$<O#%!6(vnm8@7Ir+!8}1o_TB?kmI+{{r@N=Sr>Cc9Q0(?q-A3!I&D&y^ +pA~#xRA-yI+C^0pi6`5l%$s~K3)HG;bKjhC;eD~6E{=J*uIg!9?Y7hQy{!ETZeP7WJ1aI=etOL7rl`t +AQEsZ}t0;Xo9?i}oxE6I*zRsho=#GCxpG0N#TQ-Ycd~tbkmT#M!%N@#MRjsjL)7EB9`kx*xvnGevMfq +AQhc$0&cmRLT&d%2PCR(iXHea=ieb(M?izWS^?gd7GF`yTHHj2Kwa&YG&RE+5qAiBq!sA!6^X|r;br~ +9!iF#YjR=Rd;lQ3nFAI&Tkk8NI3xOoF(7kpblr+oG`%G@Izi)_?~92S}Gqz0O-7Gd>^2jH<DlubSybV +lM&qa$l<pB*|Lh$sW*b>w7Nw;`<lR>$<|8eNk-l@2mDjbtu>L>@2@q<@+}JKHKH=z^U@`2QGMa_Uh%| +pD%uTj)Ig=SJiG0z|uIKpHIHL`Tg>b(aifZy`GAjXXDTR7>&M;k%y~o)-)vh-{vT;)JFOr+4jIc1(9( +a{}uWyLY;}86RN<|=-(nLG=<k^RF1j?SY5P>McU-s%{baMugB54T7h6yjm9(7*0KU3;2ltLDBCo-E|Y +O|&LyL#(S<6!s<u=XUPKeBQE!TJZPrkwb7&I^C%^v@rPxdaKLEmESJJQBtcL$b$#hfIyR1zKLq=!JEm +`n7c1$heu%)gXKAUpe@Yj3{I5Vy0V<d>kG9N4E@DKB)WCr~YefUZA_pDvr=1r7EuYUOZcTsuRE%SODy +}JcN5@p+M^{xS{vIb39RW+0Y!a;Vjb+#<FMSFj?;2Mi}MSHu@3mPJpu>6eDh4?Z0G*Nnp>bz>V_lsk; +E!GGyEk$pa0H&N`fqklUs;t_mbTo*qh%7QczlpA(9~a4~f|HA3CF8|3j*1dc0uIE}1>f}7+2$pXg5WR +0#!5%`Jc+V$4flW)k_k=BlPSn)QsJK^{<%wT1`_`?L0r}CM5B-xJHMFS=*C>2`<LiKVBx{)3EWQ;uU$ +8gNEVCa6o+(9uq<q=Y@LE~EY=_qSNI1E09lv%>ieq9JDc)jR>MFLm0<MN(FSA;NyYy`lp8iSh%+~V;* +G$-@MQHp+naCd*G-4pW)|Uq1r?+AHfMnFyV~dFILhieyN{}kfDg}61AsdC1%uOTD2vc_o&Yi#Ls{p|3 +dFaqYW1F|n?-3wrZC%%qM!Hqs@N0=99n0~3hm(yQvgH~O*R!jF?}5~PR+OP9HsAFEX@HF!=;-{<t +PIeGp-S63AMUzSN>up{}I0gf?q@Ga=ue-9Q^`Eg(N9#e9!wd9J5E)fP3`Q^jI3t;AFe?Sm(W-zVMBH? +m-xW=ZL%)KS{&?Ts!f<j4@Wjt&qpll>132b3NWvc2ny;k<ovATe_#7K;h@pmyYKj7oDo<fE0=r!@Rae +QO-AuknM#$9-Hsn<bl;|d<_fwRbbR?u(2{sdxZ%tQcgX2omYA9JQD<XtVS9`O>yR0q&Jyj0xbtOl$GN +;OD%IQZzUAzHMQ{r%w;^WbcNl=bmwBRu+{tn2B@;eaQ7G(-iMZH*6Wt$;5AQx2=&?~q1(>MU=>6P-lg +9Xy~6=(r9Q0Do%(VId2APPWNGVtQ_3`&8Sh|C7fE0$73SWe@S*=?u|%6Uo^DkGhTqUTVi&?=dHk}t0` +?WohP{u&2!emVugTI9QZd%tM2C5)3@DeRmr^^6JK=%%gZU=#T1VUH7@lx*qNkv5auZqlJ&C^Kmcq)n( +HFdnK$5hdyj(h!5`tfT?f#}a_XZ=oXVGZz!(`C4U#I`yg&L1Ulzn-*M$<)PIbV+E0VT3Nd^{?F<Vt-$ +o4$WlYD2_JWSKrf(2%79{I6M4#u*L8K+W35G<n~qVP{MY=O$v?8mdvJ>ulbfgiqWmHzwRyl`D5isA{P +PWS%`Ezv3xO6bQF&@<5%KzeGBC}=C;_&toCu;#^G?MdHa2x5!fwAURz*vlhJNh)MvfFgz4z-pu~SXzK +s`=s{_0TIz>#f!%(o;cSWEYNwGpBTO@?i`eokf@iEXM~-rnM`ZSgh-26AN-(qJ1R7@;+QJZYv(NQ$H2 +7l{B+)y3<gBszIk(rjrW(zL0V6XAFYLpwY@SNAH4(RqgAG0nGNv|&Zt9ky*j<3(E=rO8*QHpIxrc(cp +_ADYKqbq@F2{GR&OD7mg$5JY%oJcWBwc8M-p<zgHaZN5W8n8REpuhG~xx+%ty97~|@d|k8i+-&Cs&P& +;&hPkI{jPUghPCTQ;c#b1oQ66#~wm`}m7rHiW=$cqq)Ajh@fnp+YgKijE_3F@~EkESbegoHCF{pb6(@ +1a$00!6xWcf56D}ex(jcjzgu6L2usL@2hEr(avN0;9B0TBxnGeu6noUXu&+%|=QG0(GTnHCMWnV?giF +?$FZ-sTkws_*T&nY?uQR+{keHh_w3i!<~Q4uGoFMPl4e0!Z}3Pdgly#!RHfOi7Ib@|dcYV*`;miAMo; +8&VNuh$$2Zb~s(OXk0#8G;rjRtnrt?tIY3OCcHB?!NM|(BI<M)@JwHV^3C?`s}tOdhjsc#6WhU*e<Z3 +OMX^rpl?S*z)P%U;S}?y4AF%f{+g6i#6zpu(qDxaE1~e4RK#iiO15H2C^b|C03jK2*{dTCx(?ADN!h? +ZeATaN6p)n5hnR-fB%O|AuCjD=nu5soQc(E%e?9AI6(L%sH<6P9=-KgeR_gPqCmM~v=Yjzq>P+pen{L +V8u!3+IaTZBRlS-ufUx&Fv0Z<xPeNxx(nb+M)H!9&J)Yrsw7;Z3`Pw60xo;u8|5XRGyknXTS7FsHfo> +XlE5iaknr?kzu5#vF0&8vGC$(~%3BO1xZQ)LXc~0W{^th>r?xV07|PczxYtJ}t(R1Zj`LX4hrUBelqG +(mOIMy8V<qRO5*9L0U(IdBxv>@v*cIMDk;4-zThnsfij7u<%GtzQW!dUs%|f*jeKD1|6~o=-(S&yYSA +9@Zuuw46JMKG16!1n$D;B{}7*`O*ISl$~mt3!1OixOGKWNXSO;Iu*{x!d#z4blC^obQ!^}p7(Fn0LTB +ntq8Jzwes;>KVXqVBh6XyEpsqo)m!Iam<z^u7hPri<1(Og9904~B0UCGR@OUY(ZJD2ffP?u<xy-g0JX +(`8m^Xc40MTHY8cahs5AZY@87J(er$KEH<u9qcsvMdC%7}|97#ep)foCSz@bIRUcZ>;%kmy1eLMRC2m +jrKYOEuEHmHN!~FG{Qj*R3TlI$T#Og?Q-Z$u&Viy|@WZfAH#^vQV&8&XT6lDXFsOXsBaJGJR7OWbM?m +X4>qx1t*a3Q<8k1YhjSLd)5v1dO*_eLvnJ47BpPnaiWM7HngIK>pL*R=O%X$6fTsZnVw?_l4>Kz#iO% +I(L4O$2~sH&3&I*MI-i1gdhUg2ieDoax)Dq<&1u$BKVLvoR(9-`3F*YFM=T}|(43RidOB9;1M~=1#i8 +?(S%J4QqeO27Gbv6D<Q?zllgkf=@XQCnV+y@a6J8Vn9!E!9@7LBXa8+tS?@}GOtAN5e>Jp%Ektg?=J- +qy?k6Ce0Wu)u6kzOS)ecfa(#R*L*Vd@tEOU0e{j=C$#yh4SuMU)7GE2yghm-H=2&4j%zqnA$2pd8s$> +eoMmdTY82@*1FJ9*!6o&nBM1Gwk-++81A!@ktXwLVfOcM^C#_hO+vj^ntPG2N<i-Z9-w;0dH9Yr*d5J +W<$8VKd}znU2)M;7GB&d&yw06=X;Rjty%H;<;?9N8uz$6lbf3%9)}L`;uJ&^VBy44*g2#cnt8!gn*}{ +xRON!paKE{g*WSLy(YAw)1D)1V(A^aP$u*Kx7*+kU90;YLSa(%LimHU`S}#RShe>!mCT~T;@~x|NlKz +#L(P1iy7?|XEP7yIrsIzC4kj0;-RwbqUu<$FH9;gI8lCM_WC3)<w5$<SYM$%WCCL>3>%&0lr*aBF9>| +ns2(T`uS*R6g#K99v*RS*aMa~}BBGijt~A!;B?OjHB}T)XlM9hW3EQ<VZCiz}7@?^|XO_NN3WT2{A{z +G;pp9-?2st2e+Njr)LzX9-Nd0>bxFELI2sM6dn<3l#dLIEM=s(a$Oy;&IU8cbFLUuCB`0Crr8*2U=ue +376eCdxJ6_kiM?6F0ar{7v2F_FOD)Wqv+QBAtSZ0jYj&?bcYG!nhu1!^q<<D9VgtyCos8#&5^uL^j_g +gdpK7|UNrH;VT8Buq?$5>Y*DXHLw|@ue&dZ-fa!nB%A}2Mvm<8xsL4C$@Ree2J=BfCE2dPwlR_VyT^J +5KArp+h6iBXaM<zc1O{>7P0o%<?u72BNmYvr5t~%!2WLTF)gC}Ai_7&)&Z#smx_qZLVz~s7zbc%k(gb +n61LccF_l~Vm+#gNxP^EM<%s$U*Km}YzMy4UIHB-saEeOQNVpu7T|_UmodevRXYkh({WBT=@+eAfGj( +|W&t+;D`GWu2R&$Mp1xUKW%3E)(;la^q$ry^BLbmC{=gozg3Xd&VO@gR-kVt^3Rj`F0;B%sA!-@$n4C +%wX`hd-zM(K6!{yG>x0kuO8#}G5Gosc>3Y|>=VVnurthl1xL11t%ej}P|xFKENGLt)q*4O@0MR6Ur%` +NR{Y2CN#A!g!^0VF103P00__OQ*EG7)BEjI;N40!|n??G41}|5Q&?C3HU}!Wo92@){tKi;)%%2srHiI +F9BbkqkVp1o@S26Fcu$O7QJOOXh4$5N9kHnDwRc_z~{6GqehJ?=DW22BnvW$r0*bR^Zq%*-Y+(IH8b+ +P%BSV#M1;Gyu!cg3o%8o;?+tH470UJn)<eImjFSReOJe(5M6yqRBoDf3vpF(@p8;h6)N<~pSyW%7?ur +ov&#$nlN>ta^DKoCCJ+xmf%US5?DqkKP6tY@%K?6db>CzbQztQ?+NQ6vH`tm;s|OJN2doCRU^XHau`! +yl`O5XI&fNY*@)7w|ZAQKsV`bGWq9FKKZ{*d7sZL0ejb1hSK2E6b9UD8MuA18Rymel&ZL#G}RmkP4S< +O#3=f7fXz%V&ZAF1jndD-y`fcF9l~hPhC3ZwwidG+u`kp%w_Rn^B;gP;iKY8YKxXbn@zWLzmq)A>Xxg +zT&QO_>t#msEIEQV{KDz<SF7N&{`}2)w8X{kRF}paw8R_Go%^Rm>{P9s+?}}es%r2hwRk-+UcJaAU<I +giN>+nF6q%m~M$)2-2Lv4iA2PLubYLPdqY@avjaU9*|cgy=WZ(zi%^G$Il#;fLSVP-59VlDF6EkMeEx +LR~P%4`f{rBQ%FDZ-zfgmkNi7}dJHLm`vs7=nb=%uaOB>wq$vw|DMBse|wBofqL#h<gZ-*AZiS%t-h7 +t@+GZlf1oKS~-x$8U(xs%HYvwI&Zi!^3$)cf3ZAqRpkq-5t+7v9GGD&mrLG^rs#{;W^x9+6A|R({NnQ +2XMg(q&tH6*Emt5{iG3Uo`DdMccA;4oxv0s1JLKgmpHYAVAlog;Nyj=CU9_C5B_`GUhc|mF91>5XA8^ +kuRNrQ`IzEX8FP^%HX^Xzun|hhgOCq}u?Tn*~&qtmTxX%%o&!V~<Nz*K}_DJWb{89?+=@=D}Y)9D#%@ +p6G0O4{$w!z&NxIN<fOsY1{X_Iqxz{dvv;Ndh$jelDF6DKzS1fxw+0TO;&9ky!>>(%*wn_;fq@?L^lV +}35fye6R61ofK0(xErFDRE4hU-*|n|AL!yQMGaOYK!)OTX7}GMO)dxacgV(9{O1lF^-HPBXzvXL2w4F +5eq^b$BJ8O0}386ArGNp?$Oaere^t5a?G{9qnT0_$ZI&6+(YIOL-&F_*Ww(}C7#bjisI8Kz^gez!uLn +94r6*#<Ujgtai}3E-3#PEd*IaVFTNRvCz-it7m=>4KjlqcA9F`rqXS5gb(n%<HBV5h_ll9zpy8`&9dA +c}NfCip7_0dfg_1)9ovi(wBNF)*C0lJ^NAczL8BTTNP!FF*<(zC)cQ6U4=cuY~kG{T98W+at4bVgXcl +GVq6_)iJ3#K5XBVSz+4e^3tD!#=u$YNzPsRKN=8EBbnV9DRAas>!sU)!v7S!h&#NptwjU_CR0513NB_ +EFW=j4IgbdpcMGoFFq0f=BrIz;Bz%YQrMQCg{xObAU@4&pp8>?)kom%N3cH-nfeyt>6lJC&IW|pyRtx +$q^#`hLSlb9U>lUYG<EXfR}LZZCLE<s|;TIH4N@@E!s-qv<go5mA+oh=Gfn$liX?*!C<Km`uTt`;bP3 +=tqVh@ja<QacX1+`HN*r;e?=F3Iv3~wV|?vcL5UUbsrN1KQwlu279JJ<#+WU+>hcXJNeZsOm^U`lMlG +*w=@pVm=LZIJQW!-7--6vGF9anq8HH*X=*II{LsaCy#y9b>+R5*UTRZt983k9#)e?r)(e_k3DEN*X;^ +k2Q=ry}G<{OM3utMj7IwT@6Q0lnj{IZ9(S*?Zp*1(%KYY&ufMF$6}ATpKxuqbk01Q{oZ+;VRehjZ(?0 +oRuq*qLBWRMyo2SYzfFYPoZ`lSGvbBodmHT~q2b(Vd!yn^$l!vr9m~TimCU<E%7DPc3QX6U(gl$aL%5 +{$^*Lo%To3zebm+dz{ner_(d@w&9QpKjj>_r(TjA7>}bxbco=%7mq-6+rxU7ACz<WkfnGp23q%da#%( +4z%8e;p~p5eydvf-Jg{`TJkaW>WD5(}5F2GtV1oz=uBsYHc@;jH&I;2FBO`U%`?8mU^ogO7j%*47yT+ +&UkOQXU0r|&n?lHJ1r_zqylw*IoF@Or>OnX?q&x+czlISdH$;IX&tvH|Y9NUUuQ09#|QRswNkx8iPSi +7FYV`xeKoQhyank>*kNqjD+g2rjN@)n13ZTFk~_`2;oUB-izs3^~)u;Imz11I+c+mC;LAULW-ew+c09 +t*c_z!LKYbglJtsl0+`TJ$;7zTNoR8f@2n16%_Gj2qC{*ZFb53riBLBVqkAFYxOCb&ww7upwo15HIOL +>~V&4Me+==k5fHC-yEpo_%Rg`dGtI98F#uRo*14E9=Zh9h|1XB3%-u^*K{BvkHp>zcnvkQ0zl8O;XlW +V1^~-rlh*_Hg$No$BdFP;97IFIr@Z=?Oa=BJ$aDIs_G-{spp;8gl&7tL&Sq`HgntqD)Yg;0Mj**&(NU +p&8PYCeX*DhMBp@kxqNtP1pmRVk<jtiJX;<MK>An-Gxbom6L?g9}{@zH*KAk1kmnO!r+#!+Xq#Z|{Z~ +~vCCW;!HQ6lppx@9yxTswHF>Y~fKioQYm{H7BGYcGPBEz!%18*QJgeB?p!!bWi5xCiw#Y#GXfYF|F8H +cCor5&5TqJ9YKeCyztkgz-2MOc>8B7<Ldw?sHZ2`d4nX?X414-_F*@>}vJwXnp9O@s3c(<P6w4u4-dU +$lk@O?J*Y0aTW$`ZMN>>F}%}SG&8nbfllik2hOl1qJ5J-*I)VefLX%mtN_~06U|ZSPy2oZB!8A`@F)O +kg=dAsvi=72q?bc#$GAD+<X+$z=h5zkD_p5E7adV}kEfXQoHpHv$g4VEKQ`u0N75K_<t=c`jTGA+NAa +?%wy`w`a9#HI{grujB2e2j&Bx9to3O}d5GO(%?a&T*AuX?7Ud*JEpeooQ{bDbI2VVD1dr$LQXUC@)Yp +BUC8b`O1ltg<ZqRbvsB$4KFzMa!1uFmG`)wXJSHYWpcJh~pCd)=4z7{W{z=$h}zzq9!j+^yN~lqzB#c +(~Ka)Ac$;dlKm}PBRH_GQ|z9?J>0d6)zr)-kd&^&V%#dgXtJk@9_%5u^n)jn7o`xv_fLY(RNy4?%W|8 +pLE0Zb9>lqL?Vk250SAE{rc*~*PdvfqVeQ5D?x#-VW={;F#n}*w~M^`MfYKN;WfkrY349+(4)vF$$!K +7&QYB{be)X6@$J(}q;{EhkbAZb^_UjBIqZmj;qT`gwuh!yOr}(}6U_h$8QeMy3~qT_kU)O<03ZgLJ=> +Y_`ml5u1NC5Pl6?)60FhdVAB>8xuMhE<Qw#$OAYCpZ<_d?~ml>X#sEW+fU=<uX{RylR7<5{f%8Ek&n2 +m}dG^lwk<;>?JX#Rn81UkLtbDX%;SJATvp5mY(A|Qhc;oBt7Zqelo=4@Wy?8sAT=ti)uLFddq97fjeC +J?lh4QK&Cy#F@@>UaCtKt0#RjcFK}M<$oM#?5@0<Jbf`@}h1O0j!OC8+-9RL$Q=_wD^1r(*p3;$Cw(j +qjPes;!|D~xA4b2BR%h&a?UA5ROEi|#Q%-FZ$>nCX~-Z(=YGNv4A6uB8D!Wdl)uSB@o=R|yg|v0Olw7 +Z1LhJ3tpcEe|GD94N})axl6LLjuX$0gLG2noRA8HD^m&!{d0pXGpiX@(hpt%vejpg8`|2R0=Jscr3Nc +d#@n}uRW$ypZgD&g7?-Ou6udAS@FxIqE2l+IZxM|m;r{T3MyeO}m%h@U3f)o*&KT-}*a;FaUJF@*s^6 +qu=oPYbWX>>?r4!cM$rb_k9lJIh+;MFaNAuSxCJno7HSGA*c@fsuk>@g19FdEahy)c8@Gl)vY3!=45_ +s3wm1_{+p$B?2s6j7qigCzDJub~}16iE4{688CW@)Rc$gHd-BcPa$~`lKi~G&9#8m04-8?0pa-bgV4B +7K-MFP1|9{w%J2Vl6wxGmZs=DnqVx28t@y;?yZW(Eb%B%Fkn325D^*c5KYQ$A*P*s2S+opcoQ{pZPZQ +CalTkdRd7z)eWNApo@uEzc=%D_W}Q*%oD2=#nuoo^-Eq(SGjMFIv34pbG+~>;FZLjq)tScXOh}Hg!%u +zZN?U=;;5PFeB#P_ZLWMJScW9u9u`@Cw#T819g88WMkiQn`jT`Ou)V>7g&%UHmPgIB~#d|XVrakeW%% +x%B3?gDwwUB`Sv$}0?yiCFU^1w7OXGV;zp~BzEpFma2jF!9fBk4}P%cI?)!O!_&Bn(U}xk6~}z%|HAc ++wPZY~d69TpXWBBN7Qc!{@t2=3jXwGCBKkK^t2mU!){2*H#(#J4i*ju)qDKU#xI8Al?>&Yz!S%g(p7D +t!jGT`(Fk>6(T?~vIFOKif9{q-vOd7&8ZDYF1`#I!?L+mTdmWam<<!5vP)Qz7okrd^ika#IUCx5;&`C +Po={G4m>`?+y{Fr$6=ZLTPokH&VFJH;ZbMz(!^9Jm2_{nFi;5MwNa9pcf0V_CnYSb<p-e`|=8odcY_5 +z#1mHJU@q0+Dyb(8y7DayWv)jieNC*HDgu&2Z(@NjkT;hl4#F-+%8z@xmc3A)x)L!Li!f;Dp(S0U(>M +idxI}R&*&qhpL5V|orrC**7kojCaisiN$j@&yY(^J_~7wt5Oit%RYi)YGF&Bd2lw3Hm_Ie{o!(lE9RA +FSEIqr=20fMB_L*)q79KwK2G!D1rIpw|p#a_?%k6q6kIad~>d97^FT`;#jHVMzIBUHQ<*2&gD<NH7X| +4F-Dn3pf4WaT~^4yfEOXch-rsIN9}>aq|ij-)fk=P6yEqnBJ00Q`lXQnfjop@QX}>Jsybt#Zh^^ah~{ +&Ys3>Aywm1Pea#^BbrkQ%N;=967@@C(c)#`$fH5||ed7JX1o21?5OQBRfOs=2Zbp9D@gE}V2cpC9a?@ +sJ#z&cEp;LFsGZP=G@WpJ7czRG7$eO^K-q-=nT!OA3gF}rC7sJbqDSVGUeso*ys@Hj$SBECDL$2})>x +!IJ5f;A5Gtee^UmC}nn8zFaH&9Ch1QY-O00;o{RI^YP)3Nsq2><}V9{>Ow0001RX>c!Jc4cm4Z*nhmZ +*6QZWo~0{WMy(LaCxm6Ymei$@w<Not7{+$YwPS32wI~Ka78b`0cletiw2GC8d{59D=U*alCp1mxc{CR +l9EV0cK5E)hh2%B_YCJj7w3u#Me<BhRh;RpFyEqmlaF#XI|_a#RZ%7T3uQSMiQ?xn$?1XTR1gdKj+F( +Yx7l4u|6Ux_Y*ri*JGoFH3(ochJ96^vhD3jw$Lkq^r)C9GAR8i;n9XK6J(9dWR}r6+qlF2A;Ac@NDha +PaP9RJ&NsvGMAsIOqC7o%=H{xCz9DMki{BZXx1#kdEqNHH(hKMc9aZSDhbdpnf5Jjc9AlDNWl&BLmEa +ZvTWlruWNXP}v4W}Qess(eH{iH;}?#Y2Ol@$zMTM7p*1eFzMxnAa41u#b@9xbt~kkp}d`&iMpLU6GrK +c6Tg8GBSG#N|L!0O5>jrCq5DNvcdrkk6XTkOl`ZuE;UDq6Iq^0$Fy9qToNgCI_I)S@~#;g&(c?vOdEg +*0gf)974;8n+3}$%FU<Hb|SgsT8X};Ob5>9pPbRo&Blnuu>fBetm=9DbA8+bRbYN9E_6-)#(7CWu__b +UnJOw0^6p5KsOh|g0ty(#L}3`q<ahG7?-nr2B`d*puwdO}ErO0jqja2_jSaa4>Tk_g#FPF0P=d$zdt> +P=&oMrc?wm-fBTNF4MNiN;`(_<o5CpL+%gx3mp?9t)^m&8RNyO-Nguy*kdwQ<a<6c`Xin~Jw@o5pjxF +ZAy^6QUhmGJQKX?9ZkvTH37&pcqTx5JNsd=VZKcP(Q%Y1bOU@p`}$NI4khHC=qY-jP3md$(-Mf+3P`c +Yq28AkKCgkek+kHze4N!TTyb$FlEg&sFFoPwgQ!Cj?SQvP4U|BO4z-mAjUL<5h=<n=GtYCS&Z4%aw>O +*7##J<*&M=Xb+q+nJEOHlhBl>&}<a4U{Yo5KyeQ!I?lX+G#6XVqOexS#h*hHzqk{8B?9slxisuA=@L} +jkgyJWB+}K|XbQaUOZvX%ifYopSSWcd)F}!=d+<;Z2MjFl!G%HCmk`J=R=W}8z9xcJWd@1{+ie)YQEy +ldA%F`QYP$^_eL;+>EEHmYu!trVl$3!R$hTzGF)RRKvFbie!9f%GQRCZ3uV^#sf3CnF3rGxqJCR>ON} +Q8-B<Czt<bm-k2=s^t?8?Q1)b0g;+zFaJ$QJ8YUa$|AL0Z`Jxb04k(Mj*FVH=4wpc@0~YtYa`{q(z^Q +pjRMJUeKZAqkzzgAbh?w3KuTtX?hy&vU7^+D!v;gErmm^#8A|ZS66#trdD$Z)-FRD(_?+OP;CrY+2Oc +<8qy>zWEd+kPps!zw;2iS)zmJP2esr%;F;O$zw;^Qm@s4ACHnM9b@fR)E<WpU{D3EWS69n+zMsTUXfc +UythC6<9l$7I1^dXgXtikPXa<Jl%(VbNP8#?EY^}-p_383(k0t4oK5ja*Nbm<ppve&eg)Qj2dHKmAyg +TXQK9zxNYe5+2Ma*m-{7CFx!8P{fw!G=ji8B!1f%TRPNCguyOK>y!v`>4tl0rG>PIh(Ajhq{1UmQjY; +;WSmxWYohXa255O>f^tx1`k@A8aX)@{5&td#r;28w-nXv|#ji@&SmaP0=Azu$}}N%P{-ay{0iwwvX0y +<B2``z4Gg$Qe>yus*?cl4FbVsf&evH-wgq2jSd#KZ-lt*5EdfE<U2|9Mdi_VAZa%YG3?3;`9&%D|6$b +&aJRr)2NPPtlsmW&jvAfL0{^oKzs6<uG!JH>%BUmpaK5ZSeuQq7fM3we6F$sj-1d|e;`<}X_mtoCG<m +;>4v(?u-NF!`p$Amx(@H8R3+E1U*AI+t?v>b`WhSaMVYaC{r0K`5f<3HQ>GS1kcAe+m2|}B-5O*or=h +Si%yp~ZYZ3ufI}?-l&X0L;+XJ}QX^In=oz5~E=`)Q4o##AzU*a)%%{IxZ3MTgG0X>X5U@^$bcq&jnY6 +wi`3D%gXp`#;&eCoHJen>Q{!;;o3O8p3ILZyESn%({}ctyVF{GqN0W<K404yLXPBz^@0Zi{153-hd~6 +DN)?5rTppW7oqChOI_}{t^;C%#izi*z?yUrxY!@bF_Gi3PNt_^oTIB6vR6~%2->nElmA`X!&4I=1Yq$ +ik4WT_l1CDzr&F6P2G-F#@f(u$-4404<HUs0RZXFD$v$}uM}ETy^{3$CxnCu3zN{LX-l7%37hRqi0pB +|v^P%j9v8c_abnGmfG*hk4$i*y2Sl`?pb2F7!zmKsf73UMU$VvjmW#ja7rUE3hGY57LC3bMJJ;j$m?H +$V=>Cuw4oAG<sTv_<+P#hte2;17Brooa%Om-#bp$_}D-mF#yO=SpC&=mqGA=rLGt+)-;l}}o9I{DypO +XDn)T5$%aKD4BnjTQI@jEuNd!PuXr+qW-<6-Iiic|mS*xx*IuJ7Wyquw6pY~CX_tQC$GCNy^;?DPu_$ +kVWWBY<-9NrdV69*}&No*C})r^zvT&8KqD*n|Gh!HO6H&ydDPuD~g)aj)bl653hcJWJ}S=Y8)2=Kmsw +Qax=1d@u}F&l>=rUIawJXn22-%;vgDJH+0KJumr)NOJWomM%Ff?e-U{jiHq`qM2*472bB_t5mLbPm;* +Z)mZ+bbm8do8TA7E*QGGGVVG9VmVb1i8*rwhe2Gb>TE9*ZJ%xl@7W!_aC5D?f4EOHy+)~r~4Qiw~e6c +1I&9|#SPw+AO+ny(V-`aoUIHTWgH7<7jYrDV5fXo|;v3E_;%vr`BXo}|I!nwqF(d~tMTTxe*z$E#(Hd +CCm<o4zU1k0{3;TzQJCyKwtC@#KKy8hh?^0y>6Fwu?*KgxMZ@P@oM8MHhS@IX;Tv95^yhPMI2(3+e6& +aOC<(g?MXY}J-+#k@aQn4j(bjpxSxZugGCDJpV@mu^yY$T;axhpsD6C&`Ph9eUI2XWc@yBk0JrL+>(H +;oy+=nkqRyIcrvGwD)#WL;Y;?DUeP*o%m!Uz8F@Q=?pt{^-{+=3|w#c#v*Q4^O9?r-vCfc0|XQR000O +8^Hj4?qF0L5l>h($dI10c8vp<RaA|NaUv_0~WN&gWbZ>2JFK=>WWpZU?E^v9ZkFg2^Aq<9hpCaQO6d$ +0_?K*eq9*RZ~)QH+Xe{<elaVT_Zrts(cll-o51j8YaX`WLBA2XK*w_>S~UA$?^txWb=<BO8zq8rC>fO +qMy$*|zR!G$(ZDH9&GcI~*djiv#c&q{%mB?pK;`Gz=E3Qh*FSAAwNt)fQkOA$}dA^q{7l^B;H(){g%J +;gL6`sW94P)h>@6aWAK2mtd`vrvx+0S@>8003$N000&M003}la4%nWWo~3|axZjmZEP=edM<Ezg^|H( +!!Qhn?|us5OVhO-4jVfJa@s3omyKdVBX5S-9=5_DPd~d2iJP)cNBRGxU%!=i2D+Azv_a73+j#;SwN-8 +psn=moEo1D|w;@2|Oy7*fMX;?H#OhFil-g>NvIy9#2u7K7N(H1zluE1o0qPp~J71ntCHztP_GcCW-w9 +C(!Dk)z0sp14MeJG@^rwx2Lz(=n$q#W%zBY%=c@2~+_{$AGL|R)aZrHMVI&N2h(RLvG6M3#)A~MHFqi +qdNA$ECo9%=9v_*?VJVRz$u88Oi5(z-Jx3*uq<<l=l>ogKP|$$ouxOlG(X_x3EK#g_d7P)h>@6aWAK2 +mtd`vrt%!w|g=K004Um0018V003}la4%nWWo~3|axZmqY;0*_GcR9XX>MtBUtcb8d6iaMZ`(E$e%G%! +P!Yr`90A)fU<eRkS$9c*CNLTodlYEt$mT+kDlc)>U%x|AwB*=Xu{<<6x9{9O9X8MN%xNL`<|nv<^-d# +et_*7tY9%GsmMaOpQi97ZFxh~{D`!Y3vz$U(tvaZx)>)^qs(^RB(iYgpDB&ztQO-v7o@q&;CW~?9l)` +67!FTKR>chdZBFi%9o?a`b@XF&=)JH;2SopQZ-g}tQ&~kyjGWOsgYt>-YIbnIvw5?jDyM|dd`uoB<Cf +OEs3h~JwqG|~%t-cNisrS-UOoY&AdMW_t{e2pBql>d#klz=FQ)L}{#%f3FKyBu31e{#9XsaDHGdEk_p +>hY5brg^DSUn{BCog1K_70xVLW3=%Nq|t>tzY<#HZG`htAM>I-a!7S4$4+J+2n_%mTAjla7>wyM%$wk +;x5K#SyeG-cS;j)ZXmyvjm801RFHas1q))?2k}?4W8c)ilxT~b;smderWXSr?$=)TLUZy|2)ZB2AAc@ +?$wLkyf^Lxk{p6?Y%9oSn>AY#S@`Gx&_&Gw_Y|@1RCt=)15?Rw!#?pdy<>xd3ondw|HQca`z$%SB>E9 +%Ba!6!J@|<5ucg$bX7FjlKu%!5pp~yv5N!HQui;@}`x4D>Yc2Q7RMqGlE1{VTfP~0TU-~agS^IyevOi +t&-|Gq=f2X<-r;&}Zm1`iX?4?J1APu<<bO1ndd$R&I>*gD|@15Se*7qetRrbRd{O$bR8X07%AMtE+^q +e9-%IphX9B#t&95gX%EZs<dnghHmO;*#5{D*M4(XhH!!&4&(@*0jbEjXIaWTS(`Y07%m)jScKM0ZKZs +iU2h9tbQh9#d>0Y#NhwfL~u-9O`b>dS{!+m2JN3j5oWDl%NQ_e@{0vCwZA5Xfs42|pDain8bkFJCNGL +vjdMPXX^za4@}tLzXh){7twny@G&Btcku>M-Q1ris3nDEX_pif-lXEy~Wm&=pflPwyOQNJWzCh%0D?~ +bBK#v2pZs2|AjD7Dn&HA2JL?t;XsAm|IyVOXT=&B4*qqZ!NfrZTvglBfjiAG*p3crT1&OJA{Bzj%?h1 +2QXG2H}yJL9uaQ}hRP{#9BHL^eq<9oEzbH(jtBdbMPYK1WxETU|TN?eKRjoPe3wv%$btfofaW4C$1Y+ +2KALy1@ctkBdA8&<v+1vU~-*9NWKHYlnqT>o)%opKpbIq_I!QW6vqM@|F5eI6O^nq#w(BmH!<6Nfq~W +U8zo731<C~o9bwkpZg1=8E??;k-oR_Q8i023ib%kh&`?1yW=@q-y4}v=k$30z>WW3(&%wIB4Ur9)Bnq +Vg8M3SJi4!6h(*mTZj~NxW>EgA8bQ8)e<NZz!SuDH`!zlM^YAzN;af?Ej@n7Z6xqK}O9KQH000080P| +F{P{g=9JNyg)04OQ|03!eZ0B~t=FJE?LZe(wAFLiQkY-wUMFJEJCY;0v?bZKvHb1rasty*hu<2Dxko? +k&Y7+7v?VIB(<2;jlark(Aeuffa|MUf30TA~v+vZN6yKf2iezUPvZL`sU2>8?K{wnbjv_dWO0o2uBd) +oN4gx)Q4uliRYWG~;VkWVIG6`}yolSI3JphS!ERBt@2qM9U&qF<&RmuAg{W%KUcDeyTNJXTp6x6Nf~U +n!PitzN@OD8mILbosbEAR|%ft`)1pRAB*IE>@dd8+53#^O;K$ZsuYRb$mD|kTsRtv@g0{L9d%~tCmC1 +D(z6HBD-|1PO5|Ept5u{#wwZMg=~ZIWS%3LKYPWjMz}iY5OJU#bcvj=Bu6QEWJh>mGcJ`2teyLJXiS% +2UXuBr1g8OUU<v2s8-$O)Exm6`j;<rM@N*<bZ5+dD;qnev{hA+H-|NASPzgqDugJUe&)#QUnAbxiIRf ++Vn$TgR_s3vnZ`To<V_x2RxXL3#Zey+0&yNdN6;5?e)E2q^lB2j2*r;5pBV*bCcik(aa%;XHVP<$g;i +nA7(ycf`qqr>)hGPz@0e4sBBt4pQ}L*(XW%MVKaDQ<2U2}?^eK?I9EIT7FUBR&b139j^_a%?VY@M$-! +#j(iKKC#%E{G#L)-!k`gXUd=WL2m0U%j@kL{1qE!DKn9YE&eO;hp&j+kWwmDStx<f%#)7XcRNvmO}Q0 +}=VY!elZuHQQ~@?!TzCqZw>xice2S5=@(jAb_5>ytY0TIq-jFLgHSQ%$cq_D9(AvbjX>E6zDcITf$Ft +7=W$yXEQ_k|m^LZfN^5-HKp8M14c;!}uwtE*o_X%K)|M9FxsdJB|{l@1Vt{JS(5cF7Qf}h;BlLeX}g} +36sDLkgn;n@qgoIpU431}%qhUZd-(qv}(TI4A?fq6?-L%gyKti&y$z0`LdD`8SF24D8Yip!#mh?`(-Z +_yPNTw^bh2-d;*>dN|(FRdC%J7?BwI-Z>4*<1$VChDIg2{Lk_lw4;=OT=pAAeAP4S$fdZ6vs}3jr}A0 +x`34;!>i%tNh&d<&U);<+ps<5m^7bi$08yw<Zw<)w(|B)vpc>MWaCzt9yya$Sd&$l$tuR0ZOpF4t;}< +x?fj#YDfEF2h~-gFmKl2;#!aYhdaaCF9@8IuiTH|;to8CO&y<*Ts=?XA;Nx)VkScOYUTAB9i=hRAL=@ +}{;w=@~iFiBZTqk6+adJ|i$2cBx3VRG8!6^n^%#GPG$eyEEqvBEtpcf5{V~dDL4bX{#GbZn_o0|kvpl +ZOSDAk)9j5l>ol@p!_pIwUv2%)UTla`9dO9KC`zC^-v6o~T3%0d!gGF1*mgf-v-{+(lgDU7FY9l#sdk +Sa@th>JR4GEmsb5RWb6Uu1E>MCU;=cWexU>2bFp%<xxyq7k><9}3&xs1S3V22c)C+?nN`FmFuSuV^DB +osAS(y0D^`TvjRu0!P-OSavM1ZJlWex3h~`&bLB!;*nL8VvFOD-V&~CMa-4datCJ%5zhUdSGPVlX)4K +Gc{b#P{HHXoo6}nYGl`DtGUd9%U~k;_Ks7yBNG4Ufs3^OV;+WN(avR@vvM{i2mO=nZY$v24Ug&Wqd7c +PkTSM)`+e`M%%U921)<t01Kv;734FuAbU`vkN1)c%@5wC(LmRA2%qYcOPuZqOEx$$Z>Bv(fWeJ~-vuk +fw1%A}LIZp2~YbIr5S6RcbX!8y`&1EpKlPNAYw#_TQF^e9_eK6P{xxzf-xOORVM04vMI9&|#_1<Ryo6 +hu6Vd79qb7+N@zv#cmeCoSr6=zC70_PjAk=pnfc>}T<pV-t*3bpk6xP&&48q`9lasOAz+OrAt6!-uRl +sA4NDEM8kuS)sIJ@b&B0O@tw9^}=)3UqX^b(~m+gE{oz`is_t9H$|~r^J@CQVpw^Rw2RmL&*kU(a2T$ +>nv&zAEG$r8ZuQ-iFwXRw>2Tf0?>;pYug%kjg*j`<4|iQU>OVT_cBiA?_6H;Q-%&7df6l)8$|e9G_}3 ++R!BBN`lP_m+ORI<119b0oA>KNq{Kha2nGgp(WWB*Na#)Jx$St4u%s6|X4uFU9xFRIi><o*N0E&8Gt2 +jWH>2MqP>F3A(9;d#ifc8Oi6<}Z#qdoLKBR{!nwp@33!xpAf8=u}Lf$|WTg|vF-(tsiU12}>z?A42l> +n{L_c=}|%-3s*pDaVbsn^IJdxKB@fZYdSWDwRhI#w9QG9L}tmH<PcKNj9|Pjw`Np)jXdND45JffrG*7 +j~_t;C<{w^WXyBerdwdQ%=#*zIuJ$ojT+!BGgGwg@vhYg;fk%OZbcf+W^B2%yMhBxkT3@aG{!*bYL$x +zb?lfWC0HX_gE*1SJRQCN{goXN9`zkc^~+9&4uwG}A-sy4C&AJdv5qXZ&+M@)v}o8}1=F!krqO2Ne`* +-c*)KVYp~E1i!~qJS+XNy%nzGpkat;Ek5f_gg4DWf*(LgBLbM@Q{E9$tsRD`cMiukfofky;|<6GOHUC +q<$8C$$&yE)|E0?9Bpw6&8s6C6$<wok4q0U(~IZDa0t%<l{oZ!-U;Kt%^5^x4v&Mts9=0T^=UMSJS6e +h^2~RGEd;aiy`(tEXIx!-$j6@Qm65gZ@&9#-G~$4VO@AT8m~JR913F*vP6Q9#91igPE$M2_I4q+ZQzy +Ee_Op*g+FDSOl6arm3L|pU%euUZbZZt;}~cd8AE1>LTlwwUhPc<#*6#Owx^f?0mgZ&!CDr6O-Cp+*#R +%_0MQ^ER#7B-I0Ux+2r+*HIIZh(jhlQqn7Y09Zl>5*~f{Wl)D@K(`kg(9<0Cc9W**L%Z@1Knwgpb_VC +L>C>l7m@ZDI;b)y@aBl3(o^`plZ8pfuPq1Q<qO89QtVa(ooi!<LAg#(!5tF8zoPCLy^8^Aan4G`#HW% +4|@@v3M098JN><eE|NaSn}((#839i(sOB#rQqCiNa3MN_af^HAkyMLpJ;`?QF60E_XmbmjN$1XNy`k= +PgG88f)2fiG<z{Vg?#4OTuPk^Ufh0V6#5)6`{6K_zSK5Q-Cem-l(-1gc35(kES?Nt8PtUZ$E4i>4N!9 +%1gQpfD0)z{n_*@l5KZ_KF>|ANugdp-;OKb7;QUOY?{b!;pV8}-JsG4$zHP;J=9{RSf3!z$n46Ha$1` +)&F`r(*KCV!i@hN0HiLr6a2w96?afN`@8|!qiG4PS>GF^3sO2a`=-sCV2GJsvvYr%698c+p^+rlVoOQ +BuFj&X=dWd(70s6(2UX2-|Hm7*`ag>8_7SubsJ@v7Z%p#Ktdj~!Rn)VNi%~0!6>Bi6O7Xe?1c3Af$f& +4k$I2jw5@u(>trbU5{-p9=Eo(y?Dm~utcfc8;n(Ui2!`O0udAE{QPcJL9ic30l1XItu{B_i$h0qMOdC +#FcmesGRe{E-Yf-kJR$F@P=CSEEJzaU9T9dqth0HN-jl2T#a`sIq1vrR7?pOFSB7-f3NCa&1<^TwSGf +wrd{14#*eD9U^Fajij5=?yDyr9ou=!AG~S~q6_vu9gF5GQI3uOU0eK2MbFf1!k)3HYuTV`@|4wTZX2# +)FXs0P-PmHhhdP}rY%6c$x^eu$Eo7LPb~F~Gg(E58oPAr6ujax|>)?YsbD3I~nb(?xr<+5AWJs?k%s8 +&u*F?g*;eamss!p;Z7hy|03m?Wk9S)jhv#L9#OYyy<5Sw;dEbMI!IfeB*b3IJI&B&9iHZ4vHjmX3-#g +ibcJ&Vx+e?7z-Vy-|n5jHei(D=<moqCS<WN{%WZ5hf5pD^)SeUZRlB5x~-k>u3eY1D-N1x_1xu86q3e +>ZnGTZmDlEirPQl}k%ek{Jak#c#!Id@Nzg25?xDmdp(@Z`U;$uA$Q4!?0;B&FYu&H>O4yMC*D=PJ@CH +HhJ^@oxO}W5Ednam;t;y)}tjh8<|LRu^qEdbj{e})=DhwFRUuQw~pLhcsu?)LY7l|p?shpMrnIt;-Bl +dqsydbW3g7NO_8O>#xk!(y2{#=9ZifS|D`8gY<3C#>N*4h#3K2U<1HRsnbC_NA^l_nNv+a~Kyvgj3nQ +7%&7DSRcgpxpn4b#(zNWB=mkaE@hdtav^k07aNL^1VR8q;c`=!p1BINq;_HsdYQ|#lb_+|VzXD*qiCe +8?l7+srV?2+i~YW)B~ibnUV4RRss#CEc%Rl_Z^xcem$x;LH!!fTFCQpckNZA%dRYHipSG_Q$Wz?{PEH +Jj1KkdX`aOi`gEu|^5b2H%d4?CIrU#bw(PFJ4@aF7}?2FM4~wW^hdWb)HnoGMWw9pjYEk;V)DIHY^cD +y^baqaQ7D>rMA7d&8f#md$I?J+sdW7Yl;5?P)h>@6aWAK2mtd`vrt}GfoF&j007E1001EX003}la4%n +WWo~3|axZmqY;0*_GcRLrZf<2`bZKvHE^v9p8*7i_w(+}v1?xi)x$!CYYMZz<+Rd&nIb^eYz4i4_Tm! +8v(YCs>=#bKSjUxT+of$qvO7iAX6sQqoC5oIG&U=QuwG=y+B<rSbBu^4n?Dj&|EL|y4HZ@Q5`^XIEY0 +c|m$L)J5Hk+c_*jJ(KlM>k-uSaWyuAePrE~StxRqTd_7x+452vjt6JHFHd7TzJ16(CX?V!ThYyL7{q1 +*(dN&X*X5;+?pMr)^#DldLRw<%sxhxqN#rs)}cIAu7b0ghRg?+TtPOdjiIuuuA-t&e-c$&z_G)wLH#n +>|E^jMagq^DC#Y{xw-uFh{4ZpK$RnU|0Y!&J`!8l9LHn(I^u+bMQ>=0;oMnW%VGthqW1~mdRwOTTFBi +~wdYx}F0vWB5{NS<8~_wRUx|uqoLQMF6=06=#cgRaqiOit!_1N16paC{W4(o4znsCYL4NT6r(!>42mZ +O_EX{L}8mqU3Vzq$3oK@+LE8r^!y<kPnvb16=Zur1+O<^kt%ZSd1<;4|1qk#@NFT9O)mPU{4OG};G2~ +NKvns~(z9avMJTBEYwhnr^gPxx?F)=1|Et;6QiQPq5hOWg3Jr*x`Jc4?h$ldVuSGS1Qyj!xM*mo>^cH +ELjY($qysV8V?^4%U6olMI$6lK-Tp!7whk=TgBg^#@=M&RheTT<&F2)p|UW955!0EX!i`GRZ_$^9S<{ +fgEJIPqg{t_I#==L0M~Z<|}|HOFg7~3;T|zIhPkjR*y#DcR(kM_lY;WzJy0Eqa;CoBnjZcb;;_OsBFu +DadY;sF`Djp#=d$sW%R7z<<+Z~KaWOF*oQ5zNF4>JC%Ge3*k+F&PwVe}S~eVAMGD%2&Tb71+cae=K^( +vmUZqvW0aR4L3a*f|8F-0=KmdSsT9iQU#6ksZfa2f3XFK5AR)H0O&2lo5tdSBO49<&3?-u8at7UR=wp +_qItPhUyA$sxb`PWnS9R5T8YK6aOcDrM%sgWQpG}=BMkKZeBLx4KxHH^c4kTMu*mz<ZD^)bxXUc#7&M +iF|;sN+4Stc%k5ww!@=BJ)9G;*J{zFUIy#+!r~B0NeuTl1x!UR4tpV2DL^gD=-fT2f2C*vf8J0u>!W% +M^>gsE`f>lfrBVT3CaRMa#ryJJZZn6V!f9$@Jom?E!iDE9)!$Mrl2}Cs69(T3XS0rU|$!T27Q@zv<gK +}QgWnguXUE8-{1kPqRPr9=d+P<HBZ^?Eo=w0`1W?jZn&0rF0y6^0#At#@ZXHsJi9ff6}PDNLX;iGy@j +D$AHHa0#uIS9V9`qBsR@t%!ps*2`WC2LcS9B&8gL@COSIr@Xklg?sYX~$1&l9`==Sx(n7vt3Y%nW$KE +;WZ^SwD=r%hRFzLx^5JZIzzZg0bV#%5;HrHCE2MYgrPRxB@6x<XrXIIhx7$v+1a<wi&dz&jQx4k(xBZ +<DL*i^b*H-%;An!8ofDSrf_^&3DDO1*lVsD*AAYM-KLD;39uWcl#1Naj|Ac(Lj(_TLcJBVO4TO!@lQy +&(6x?9xT72$ViY)ShP%-I<N?4S8TR5S>9~cBE;V(afW@tJ_f7s7a6hKTwf+P*XQ3amQ&`2lJ6Ibw`Z4 +c{<c7mG7T30*ivvUHF@a~GP8>OnC3YTHp5m&A|90i?RmFHJ1rE%As%nyDM<L^kGHpz*tv<3rw|Fb{y7 +Uh`A6->4KYt<?7|@Kix{vQP_dm12<`sgynXxbdU>6IY#akTb-?`tZ2>_Y?#|h-0_G@&SOZ*=I;?m~1~ +C`yLn|K!ci2tVMs~f4LM3Ki4g|bTOT``6AdxSsqD~S}?s7e4zfI*v!JpsW9lTtpFy;s;?c2Y<m<2MvJ +H&gjkH*?Xji;0)PFlf3f+hJ=h4vpfnb^%h%yIY;=mfYBr2%g6VeCVmu_bvZDi$n@O*qI=mgHR^5it(M +%>lRJL$OOR2gUimM%pz!ayxQ$YzRI8J81f_I(U2Ogv0m|vFJsA0iyRH>7$b*il3%?g0pcHf8X*N;tPW +)vlSGmB**#$%nTSMb*2GfrAB2+p;D=G(jli>I-8_0`}(gJSDrh2Q?U)NxJ=6_mJGfIf@c-g=e2dT1k6 +Wf(U846fa|6#k57MU(o$<}E-+tWI&;McU2hvjG2v+7L#kC!ilo_6f|v0F2KWJBJh<Wwz)_gMcp&Y5O( +@XO6@yUgbJ0R~+*1LG*)DlAGz|W*$FzuensM~ky?r7%PSHHxeJ2haU`<0dQ^gnZ2@D&26!5A<JQr6tI +{9vpyg$N}kb|WVcg^0w>CsY@Wy>g0!T(GmPjk~fev<{V6D8gHbl3#s@0ibe@TmwNK%jUkGmTwQ=>opV +jA`b##Dag1!In{`1-dYuNSZKlhfxrrfRBdc9rllG0vi^PI8Z`@CQG~UU;<q*nnC`kG}#)mzqhD}IYbn +ajOHJ5)$9x-v8pjAP_zdJIL&I%ON!5)BTh3ZlrmX`u4Fd^65uEfbfSF&mw##is+z=u7Akq&$Vz*RB(D +^eYq3Pn3Z5mlzV9zItjL`E)<4x{#|bBJqn&_F<8E=;EwjGF)5{N7xTwZj2eH?rmdI~yCXUE9)%~MQ)q +&qgjsvJ6;7W~D8!}Whiu0Xfs8^yg`2ZrMcn5G~Dlx#Vp~MphrkbK2W?slO@W{jlFVI0&kM(9X;3L_>i +8{6M#1}3QiUF(=Ift47pV47a0*mB0P%|yT8P@%MIKy;P$&%b1u-^RHkGKP2F^s%+<;QM}{1Mwg{neuZ +=zcgl4Lt~H9&~@ah3;BC_J=HhMII+i8=xJD29nM|peB%_UznI@(*eY=Xo(G=c;VIbeu73}NF%r}@D~G +pnLcG?Wxdg{SC)d&f2LakP`oza+aj}5+qIm3rY7Sah|kQXz5SZ`oxJ+g&K9;)%7-@BZ$_Qi8ymmY<$d +4;Q>=?UA<kfrW1yLzBF(rnT;ZAFUUDdQd25POn&BCwQ!b-3UMl&m5RkI7v;CeeDhLLcy<2~i3vd${jR +6gOVM*NpsU>NTulbNwqPH@*$Nn^%y@uR-!j{(;*E9CIcwl<6X+$DMOg?hHM;9+Dk91(0&A)?v8FbO4g +W`u&-u2S^RBuS~h6<KGw6v)O7$8UUde$=8farQUV~3g!=ME<!<3j<FXj;G~fF;?ssUV*+Jk%-W6yw8` +twesDBNwM^OZ_)B@9@<3erF|wqYCoBdv5F6Ozd{BcZ13S*P#_-sS4sT;?sGKAqpz!Oys(N%yo+yJvC> +m5(G0yg&`Dp6SfT_`vKI(J!+ZYo*0Kx3cR+*!MkFgq}0?&92s*q)<aM2&=~7^129}`V%M0oac~xS!KO +Cs2`xAf#1Jj>p}}d3dhVVa+;(%AG-z^6j^WW47m(nosAD;nSUo8U7EgSe9E1C=)S63=MHN*C7Qv%{$4 +k3>VV8qt8+{me6dW|jz>FqANF+`2#M?m$2@bd%wN2{do};c{Ijl#`&=)LP9iir#hQ<w`3x#C|c6%elG +VMa^@XhJ<oay-?KokUR4*7%M`>RdGPP6)7@rSMVqH6f5r5?!y1uPr)Hb5ysBXZ{YZ%jhu(YUGCUyUcd +1tqT%U;s?t@`niCG=|CK<BQpkgCQwKyN}E|AN*5*-$&3cS&jc8|4|Ll&`!~~KLv&th|bnE*C{lxD=Sk +-Y^UhJ((;fVAtt3*Si=W_O<@$#XbA2z1Z;tOeexTxQ64r14EsN!-=%EB%R8G1&hUcnPe5LqY)~fR-Vl +v;?QZCfACooY3Z3ChAO7^laXPm5uz%k9r29vmL7Og_{#f$u<@Gmbm&wKA_1XK&WwLzp!{Yk=(gOl}HD +^j)@Kmz91F+6lY^>1B#A}*9-jdNt8nR?+Y1e<;(e&I)P+i}~set7i_KwVBIKlA{&B{LaVOVw=IQF%pZ +!KT+5wU&is%5|=$`yhU-vr)41S%w+U6|^T{8F2t=>&~EkH3zendnVL-Jzhu97{nD8mYZ2kkOPjf|>Ju +{02ER9(}xlnv}CAFMs#@e%c~xk%^L`C+WX4slS=-=a6aL^la<VvnOvl9X{cCr7{O4RPJFWLd(NOm@EH +W%i5i!TBD@FlulTO#*(~{{_ucV<8c4rwP*BDz7oV!M*k~q+HK_1ZQX9OGi+!-VWa(>4MRmnd0$Q>o=Z +%%O)pe!MN{UwL$N~LEK8Dn20q<CVhs*=@VIZdqJM(j=2pBWqi}uc1OL1%ZFA*(@ot&CTm1F?n|F%~dy +;g3*ikCs0o3uNLZv!4W~|RkF$2)Hg{>|F8~b4eC=qr2kI4>#WlL$%p{<|kxbA@GG)|^PT~+R`j6EX4{ +sQFAkAv#nIfyz(3;#1e>SJ}!|D~(#C^5|Kj0{c>?X^GHp|^Dt?h%U}q2hg7Z)5(jhgUrLi0t>tAOz!7 +{I|#9;FQTP7Mf4+xZFPmFb7rI5q@$#8pI*f7x5#||D_vnvOA$^ItS;W%$Cs6A|Ol>BJ5g;b{}9-ot1u +jK-YmQUW&v2qleIfyavI^B5zND+9L%lfOV(aL~ZK+r*%q4@gdn=Ne0q5m7`&O(6t%on>tfZmu&+nO@F +;t2dV_qwnVJg-J3IUE%NjjP1v89cfZCb&08E&VJ{=b_%P7x9IUCv`o@>OS_B(}%7P(Tk%>wFdiL`q)` +85P=&V4*N7nBw61WnoUQDboGx6<FU$9jDRg)O61g3T5ZFkb|d=6Yp3!wNW`vLMLn<_PQ${$eTluHV%U +dgc)egm+U4Is-C{H`6F`{>SCgIrf1cY87#3T=J083wkL&42-gbB1rY4Rl)D{B1sPjV^Ma&A<TT+svyU +D#N&Tx_|6d1)aTgr}&Y4FgkZo`eI+oBWfOA)nV5+?rhx%7#j}YOz<+#rnu+cK?x{~kaw67fqsL2d?>1 +192ASBE<TjGrS&p?^+nK73i(Z!7yQ5(e6?-DZeZ+98c>SfoNcNop4gj>V0N(S#4aW5UOQsaJ1HSn_t! ++-yvKx~&ZWt4-#9kMSP+UIk{8P3gZwF+f;ihbE^X?;X*2v@mec`gQ~p2>gL5c>?+RnuvAeLE@4R;=dr +g7h!YK)$e=63`zCt1OzYm|IkcjXS%bs&d1=p&mQVHw^uR2FxVo$Oj$@esk_KBB0-5#>e-{@=LR9swLU +o8gJ-DW<mrqV45$3#ef$azkBs|WL36M;j2+dE15u*F2&9wY;Pyy2z1&KVsUVU%-#>E<#<3QQ|H;4oAy +FK^5_@o{RhpR}U3zlONN>l_u2*^R);iZ+Rd{@9B+0q#<RW02E;-vO8v_#nDJ;E1v0skmo1{`qJi{$5+ +SGC|JVbPDc%1N)=NK)3Z5QVIMGkK%9aUHhhX4df8$vhZ@$ZHWJN%GQv};$HFoEZuA+*5R`BM2<l?ZuJ +Qc0ioFyWU)F=Swn2Zo3V5`5<%-bNOW0im;Mvxt|a((x>5^@_6U-k?<L1=(Asye&)JKwo_}S!MAZM8ef +i}E(urmj13h0Fm2-a!Y$T~KUw!?D$FLyvIoL^2s(3QC>5!FuziEuWfk2JFM{f29tAmlwW&Q}2WjbtsK +xxMdb|Xf35Ac`0$lUWHwnY&vB9y~5te21bu69IC=fO>BAduQQ^0n><w+TLRCCxV{<K2Jg&^aD2#U?f; +6>=mnmAueClkl7CUcg0*5RbxR9}}I8PY0rgM`b_Y`ccU~wWTzj#=Czrgytc+KG=u4(){xxJQtyVA5&C +#ce?h#PzMXa(0!-O`Y{}KQ0X!<-KsNpblboaC+Nl!<KOU)`$j~7Y%zYS(*CoWAJRKI0ug)N7_N1NsNL +oJ>VCK<YmQ*O5t`qhb)u&`YTHWvHJyLuF!~QrO9KQH000080P|F{Q2vyfQobet0HKZm03`qb0B~t=FJ +E?LZe(wAFLiQkY-wUMFJo_RZe?S1X>V?DZ*OcaaCz-LYmeJVa^L4yFd7&mIWotOyX<C=*@I(y_l($U$ +B!(6%|hacEr~Hj>iC$k?r{0-saL;S<8f{g?1vK!k3=@ByQ{0~)m6oH*Y2{#Vm%IHrxuH>+U?tJ$cn4J +t;azv`1griR$bS$`bXVvHdV9HKl?+kzupvG19$q9lQn|x+tnvEWEMu-WksL8r^_$!=R6y#oodIyUjM) +s40O79A`o-+d8PJ4)i%8bJ3YzZ^Q>-rRlaT8n&HyLw_Q85EAP^a-F`R(&Hkv0Qgv^Ou7|O^*V}%0wk? +{CDxIsZ+EsxA_>ZC<m2>@d@%fz^x`W^UXZQCz=t!pLTz&ukmGdjU|FY@T3Kr>|`qQZT;U~s1-}_PBJZ +qaqt#Cy0%uG<VFIJz5jq3BhuNS*wSZx<um{C*gl*ZjN)eY6Uf(h|Vf+uyezWN-&tUl+v_S&|Av5iVvt +;~@8MZ&L(tHYvSZPiZk44#j>-NDX5F#qAh+tju9;l=+@9gJU<$(wlbg{Bw2^shy)EWS0SI>xLXtRVWe +8n$iOn>PI(sLr4cfxnY$nmEUysuPp1`h~r?D7$vQSEc(%(0{Ln#k#81V&C=^KI6Cb$5He>EaGBIG`!d +|5&I7SQQE1&5BIL#esW)LKBvXl)&44OV0cJKj8W`SEuazq{HVVynzq{&b@gXOjd6ebSEQM0R&A*kL(u +_TyCl>#(Uk7|Rkd#aorvt@<a39+GP}$S8RmTH<OG-#To)FV1I$<ORdv(F0ttVyn4O#~o~v~+)&sO_ul +^gBWeOKhPBUZ+a-~06)qvT|k`&&Y^3B-=4Sh117@Eqs`5GBqU1tsr?BTh7p7rBu3pk($E~xRvGWW?Gd +st>gQ~C|w2Q6~bIep>11XKC3Z4_N0Bt5HpxaQyt@04l{EWc{1VX>I@s$S1CS_#^imk2<nhM#H;3pP*# +dl5ffQNe^`HaMO9*i!SX->VgE%X~6BG0$R$Io-busbk8+;JI8<L;gPVpI+>dqb>vp{>kh1239v{M+9? +8({g9t51mZhnJ4Uzv1_u)y`DyKd9M?E-0NnO>|Qn<4tvE9<(i1*b~1C@<IL?#HG?|d8(#HVe|FXcWZV +Kf<!{$TEtjqwIMnG1g`P9_Q{3MO{`;baB^p}j?g1}X(Hvk_1B|LF>dZ>faA5SL9U1o!%s~@Aen{>T%_ +E_!(jonxXt}KV;;M$hY!x-hlVJ8h@3aR$Y%35ceKr)IRFe@e*bc+~;{1HO$@d4~$W7jMoAVWaKSw@!{ +!LL_72iC5q^?#E&tFwn=d3h9`_uaI?;oEmu4=dd{9r+P4DO7-(6{`>(;uF`{BfSiub<w0eD(ZaU%h$u +Z-0f+@Scu0>D2!@4+KWQ9zJY4;LQ*EVy!~HK>PxB9aA!6{Q?+ju?w~xY9iSP3JyInAdYZY4tvU`D&OS +U1SVS4`0!*lC#=FVRWq~(l;$mn)w;S0c+k=x1yZ#g#arA}Ul;{45nMmONClJ&^oC^k?L#vf%U@trUpE +@qzSYVZ&$9vs(*yr4-w(ww_OGgji2h13k1COeA>H+KJFD^js%XvzY(j#|4hQ5@k-><ok|uTjD1Vs2EF +a~M+{gbGoZ=_Xk*TT+kE6b6>O*$ZcAtRqo9rzScJ?^uy+Bh}z)KLT)du(`^{$&e@lhn=+=6GF+GyDov +L2wql4X@DKq^&DSzTA<Sh#XadIxM7P=K={Ti0zdAYuRk3gqfMyV+I%1ay|3aIJe{5>ZScqTtL8ER>U= +A2op5W~H)rZEy&h1fcK<D*&R7ETxl8g$n1P9kU&v!2nys!aUf(k~hqMh7RTUHK0r@Rx+qQ&z`Okl{he +H2n02*1{lk>=$&Z-<6+{MGm*o;qP{5(NFhhY$BKc!7Q5ne4+74v#gF6e3Oa|$x=a!XwlA)cK>}g{-$c +F&w^^ROhH2uBCVPaVfQ##~c6Ly<12v`^h{M3#L0cS2D8ocwuCwKm_}+4f&-RLTBJuaRk3V-bHx;mQ7{ +Lla4gm5BmJ+aa;2WqAz)c))35;t+Z2fR{t$gg!;5}T>KrAL;a5A0`-3Y^JS{e~gb-5JG!N5~PBMwvyc +IVRa=GjkM=o%ocJEeRv1dxmCqN-64&3W-rVlhA*nSnKee5?VY!>EBacvhXNRYA+5g;XIc0*EhFrq*kC +1PR{}YhYik#=7W^t`v~Ag7G2SEL+tRif;;Ln*iNkDZ-Cn$D86F=!&!=cxvCNYvjAIRofDkU|+D1q0l? +Bg)iWfRkNx`n8^(clw`W>AJAXNrdA*fTR>i?VGv?*Pg)+KJ_7?>RYQI7dqpFpQckaAh~N~~)n@Dn6?( +>32UI;sL8pP}K_I=;eq=Sm1<!h+BdKWnW^^_C`0f=bY1?+JOHIH;LS@wf`s%}+_z+A9RXG(gb-m#&x~ +YG%?OzuSSi{|Nk{Hb*!t_(<k^mIlfv3g;l!mtt(%JQPuz$lK|Lec*-^bRAPdCm8%aROE5Cul=@G{e2V +1bw~;2!I@xAY#0!1*1}8d^I`BOm%>HqQhlE~{DgIW~R#0f_sBO=sJ{8t{1EGmkt?+YaAauC%|k-DEGZ +l5)v>)^1!D6qh0}^5-wUfBNy&hsB4NuV1|R_`x=m&3*aEULp<^0u-7FI+tx0TxEJpUR<Q%7}B6Cj_U7 +gzWGsOa^`GwS2vEH;O;{!k&%e@J$<ov#VD<MO&U|d>|DDpX1=ki)sahmKS!HlL28VCcILqs93p>5qy) +CF+`ME4rq?kTzU@@L`L`_)`4&7*roknD*T(!*2qQ3bi8i1uOR)e9F_%kO>BK#~_@<4y04mX6{%XOUX5 +XWzM8U}}nQ@=>Eo&@g3nB)6Lep7>F0a86tH|F#GS#+o)Cw2K$k|<EX60kqU?Ja+1DO;vcQ7Be3T@5~g +<}uAk#$WVG8_rnoa$;M|4+6byFD1FeeO@c8Fvd;d|qY`;|50VM0aI#zzw}kTmrHP_GfjPy=cf3{;}B9 +>I{|2P1}JO*wF;=37~~Ja@pd#1v><tt)L~XyJE8gflfj)4?zAz77gx+PfdHH4Ibduq||0biQ0x1r{a% +q+4P^|8s3=aJGHM1*64yh>I$vXXn|zzIcRdy!F0ksETo6YJp1_<*DKPf8^Zf-9tCk>6oHJ1Y^v0=$;J +K0%j}V9QMa3%$YbhFXaW{wNAv?jWShlN0jKxM*+q7*zqkieiV+cXm}uck4Re{?RIv1uZy!2v9a=}Ini +F^e&L2Jbt&Vg=BFgmU-_ugbWm;MwFEnHIht1N>VbcEn`}bYaaHgcciJJ)<ICOz7WkVO{Oepk7x-0zy& +~f3}t3OqwunO@+-YDD};+rtGfMb}yM8R_0YGAi4va^dNGhH&OmP-=L%OzPA(6425M7(bIy$sHnM))~q +w&Ul$80x?eZi)(3!gb3EH_|DvU>p-VI?&<oJ{YQ4*4vl+$6rg$FG%8`*9LDRTpwOy-e|WikL*IBTH}x +=QtJY4=#n<EdK4k7>R8EUNg)>1Jge;K0AvVOD*K=>kY8CLDl*&`;p7hu&I^U`CU4~_@_YL3Yw3>!Amh +=Wkmme>sq1&^<9`~p!jG?Tx*r~1hh7_?ZIGSSZro*L3?eOPD>|a$8lB`Yn;7cM=N0Jh1O&d>f?TNUIs +AWyrx~pC7sMMKl17qu<?_q5^_QSU+JoFcL)1Pp&tT-B7XYq+pf@0O%Bq*!u4|AzBs8hy;n@@~1xkbE> +=RJy)j-@_+B-u)K0a~$_p^v9Be%K?2?(?RVxzu+RElwELC~oNpgo#pm!KuYtA6VE3Ru9GJ_bR9G7g5_ +IIz#<kbt9oi;H1|$7|5G5IZ8fjms#T0yh95j%pa%k_kXC2i)f5C_T`M69+(jWfnDew{nVyqx9mF86(< +Vc@OHF%h!Wdb9u(w(dXycRe^MZK4N=v5VB2d?&I8XMYBuJ_#szg*C8?TVI-hVPEQS24$*!A*6$X$o|) +MaCu^>1k+t-Nh|5ij8ofQBo{qSe#OLV917<S%lw?(OrLzaF)C%3(sGuR|Q6=wq-0bAs3pcrefT9PORO +2}fNIGf9k+>OvXn<Ba_GulR1P@Z=TQCRXEKE!!EgB**;H&z)wH$-jr$`|@)TFOfcK~JsTO7t%LeGaem +?DkJLw+5|hd{NBL`5Dk#IykT9@aDjMq6F`aMU%a;J|$vUo;@6K<ODVFA1KRP8=fELt_#W<l?MvV`vUb +c0lonkmmxX6WeRf%LuF^4;gVRxebrBd!5csfPdX_!#@M51T@oCo2^l83gfVcDeu4(oo9vd*Xv-SUi+q +RJ4rO7+JjjG+k@@f^r%i@;hB^G8)ZuzBd`D*`!RrzY(R7qUwQSXo&8bOdzuI^d^t>DYDUR$``L#(JJi +?oQBI%fK!(Uip^uoYQeOjYPkl$n-JK``F$88d25i)DFMLD`RL;uAo)3G5b8@>_|2bkB2@xnC^xRdu+k +=gJRn^sSm<RC8!3aislvxb~(51%sMK2Gn8YyGJx~Z<4XBfw#=ZO?O2KL8GmX;FAwi-sD;)9$(z$1SUD +};~S-FPpQ9f%I&!;BY!2H?fOh08!-!yvL)iRAgvR3_M(MptHtmTcPT3#e7!>nX&+o3IDYV<ztvALAES +um-qX=#{`<Fg-p<_YNkrm-a9d#n`rR&WTRx+>7HxR)oYAMyR3Uf?{OYcI}OKo=7NnF$ZcBsbhq;2_4{ +1SSf<<IsL}rglGT1EtEc^N$=afuh7bLA@z)eh9V>1zhVUN!5*r7uA2t82cGJ|9x!-ofwNXkQRnC)Y7~ +3#%a%2Ctz5Kgmkmmw1*p)y8){MY{iq&2eEiL07yT21feD=|^GeLfol#bNh=Du0R$w|1ie{#vhYxtl`U +%K>6QcQ->~a20{=47EdJ*5)6`z#$3kD|y8S5@P@^kx)<Wlo#G=IkClPblVpWVMNYP|-UaJhS0vg&|m? +i@kcqO*g};4+pTu6`yeuoFwuj?Ura9d&9?EoUeV9oYl0DAMhYu8mux5|Dglel`q&!Vf$k$3hWEE2ZOQ +)EY3_Rrf=S>mAVI$5Ae1Ho}6;<&MtVqL_tSoi3gXpC<ztyugJ}#j-&R2gI|9V7T4yX?)h?^t5WXP&W{ +S_PKbPixH8D2l5_WquK~}#6IbP(NPCI68I23=RNQxSS$)iQ=f-Uf^PT(_{L>bcB*NsA<#HUs|%I&sV7 +h8Ui|M2Icuc2ygfW-F4Hrsq_`k2Y#5q6(M>8cA$yOU6Rz?=;Q*F*sfb5h#tO%!i`QAq{aj>HQ_YWN6x +GlhPr-eCXRZZ?a3`Q)2ZknCv*TW(hT69R4Ot!r*&*9pUDFwl-5I{6z`QMCENJE?Ev6omO!2_mbW3l}c +Yx$fmHa}<C?%ZRG?<*@?<mSen$X=_Zck75`|L%tsU)fcL(WkB0a8NP=!5ZenZUJ#ZNQ`p+}{k@DpgN1 +6XwV~k2NUK#K<|!Ix)rM-JtyrtRw)3Q5f8`D6Kt63%+lWv352T=s=_e>VE}#pRlw5oCGK6?NJ25dBzi +s$|1MJXeb<a=)^u{MO!~Wg9HXU?&y#YW_tuOdqZ$KAvocn+6PIo+S#8~*BWXNGZaXktU*T%g}y+aB$B +SbyQ(Vq`D%5=qq`7V<hk@l3q0*e6hb@)+G|K<IXP6tTw<!*m}5VEW9D~ETbIpi)E7FAuMD)SqrJFe4m +R;hRo6<EN0K2(EupQex@*TWj3h^Nfq|N!%Wvi!gEX$!szWLO`jikx?y8TTwoFF`!^gsiAbn|S;9a8YC +%_Ynst<>K%17mm?@4qkIiI_ZD)#rvSWw=*uv;$@lXhV5$RH=wn+e#}u-kXF1ue%FJn8vmQ;tDH%u|4> +-PU#WNoDU3z%_O+K3BsmKLY9vhN#_C<jKnFw*4fJ7O<!rjv+(iwNz;Um{G#g8fP(8!iK*_v6#CVZYeF +}>vaNuH@L7Ood85nTJl`ui3~0$NE$nLq?3idbs0*c1>f!)%$)#{G@;n&KTPZxjvT0;-Rr@Wq$6`ot;p +!#g#Vl+j>6rPFz?1KN9X=!Q3bqfCM_v7+xU*VUviH6{z9W#HJf3ZJiCu}W-?Q28iCyPo0!@XDT;Q#5s +7X0%xvG*#eg>A1MOV7NHY)D;~Z^-$@fK7vmQ>7&?e$@iu4IGh@H+!vpZjy98zeE56t3*FxvPcCb?A2x ++Naz-=0OMPa)nME8Xj#MeDv8ws98DN4y{99L>XciZF(Ppj{G3%#Qp2&z3PkM$W-S%46$rh35jeSgkOQ +*YW$CMr~a#_#hyPLgUN+DPTn3pbtU^xOQnp0@LlJ3+J#uam*uAj6D%9H2(wwKVLea*QeXh>6phXTGcP +mNx*q%MiD!<fcp3vvBz$gC7S#kV_yIh(jorF`Jl5O(VFyZXUA=FbeRD(+uuFL3r{EKleBA|4wPIg`_1 +z=7Z}bf!Cpn3_2Zt7JW;G#6%I#tb)cMJQi~~GT*Gnq1MdQs5R5CtlIM_Z`QQeP&6pzZl=vq(f6hcc_R +0j6n>aQz4>~gFsvcbj9R1G`K7LTT-7eiAff7TI+C=nWlLl>)GEr)ni>PXeL-oNjfZHG>J4_y~Ph;Fuj +KS1nRA0zKgcZU7g=4YIp~Up0<yBjTA;Vu2bKEJ8Tn~7;$Uw8<g4>b9)N@v91t{u@@-oN^6x{ONt=`-) +xjKq^*23fqZrCvR%qqOZG>I0pr?&AjpzPU~>%YhF9M~PTx>hx(rXX>P8ESmJ6t4*uJci_GFBuE@1Bw) +jL^O<w8=!yzq<EjqK6B~tHOCC?c5Oq+5Cev$?lI=8t1#|I(lThmu&u!OUl~slw7RZJ-+Os=unEk5^!L +)_LF+gQnOZtU&IP)3S9!_)4jeDo?5y7Q$R;R^2==@8<Q^VvL48K2s%j)Of9VET=zJUWb=~Dr#IWW?)P +IF8+P(#wy*R*M3XOmn`?mQNDDkwSM~*yWUpyn(XBsXw=~b9&tp4!g!#sQY<~{!Z5&l!dDxXDQk^Ft2& +x@fTa#BsHO(fk1wg$bA6P<|ZqCY5f*I=hkx)A23#EG-OpZWo{vd9Oo<JL5N&0=Ik=`=KOn^1#}q_H1b +(^5~!5*;2&KX|%9@0ADT<@y0~f(NhB5ye=;V>aRryrtcYCr-_S`<nQJpjwJf*AM6;FrZW&V9lx6ZEZA +k-8i0els1K*XOc9<T4H083Uyim#*bsfpLS<Sh-h$nqPOV(B%(yUQYK5sYj@(WIVx1kC87!RAIdgIcOv +J|;UPySuA0JlPjY_f3q!GWD{>mg(hcTHWqW$y=+LCB(BVSq$6zM)4u0}@4ji3;XGj{IW-<<w=L1*{;n +?9KqBsf+L`;`#T1k^LJ?o=e>Wn>(t;FN-EKdS*i~@`G+DfDss`4Cf#m6Yx%Ys41l=<v?0C&Kckd@bmJ +bPOAt;u*Jv}p41E7+hfTnq6&qHuG|y5Mv$SSrdHF=2@L4(mPFd8+!%ZAk469>GP3J5DLZ@XQ_XDGn~! +0<LO1YA|FasT&<ZefH$xqdENd*q`T<hfnb8H~8PTvpjo&+0tg>s}=}d&WCvHVq_sQbz+YTju4~`JPii +ZJ=%D3p`H{?Qb%CV87xXJU~`?M5#tJx!reN-d^V5L9~UM<OQbHkY#AVXufqyRl4L83gInB95XTQnRMR +85?O9@RG7_IOuv|gjRBaj>XM*)5&y6u}Sl1Sr(?;*AQuUrd_K$X8M??YO&Oz6%IJkN3Q+pCU`&-U?<L +S8iYdj}qkDRqlFZt1IBr{1%2qwnHvE0X%^4Sjs7~;&AOSea0&-#E}Ck=$L=$u*?5{474YI7k_w-F@); +iIlwwTY|-S7nRlEHq@oO2t-jGP5};i9iH_r~aIyNJh>~w?c<=FGv)Du7oU_NnBw2>Y@m)f>#6UrLbm# +`=i(U$w1bc1zMjTlt^`??K-pizbI6IbyVr04>C&mp-{PUyFBalXnel@pD=7jo0tZxA|Q_Cvdi5ina+S +L+Qy#{G%~WBV*b7c@s8G1ao7oOO^&+=HW2h=tt~Q=&jOsC&54)KmWln8JZv`1UpA!<1(B^qn(RozP9D +#Ou4wvo5K2fTsn8K(&l2tcQVNYUC202HHp1CFU|%ur&K-yf=2pF_$q-KwP-`qzf1YopE*NXL>J#Vg)2 +ZzPI_sce$rj~e06@4Rrm{8+oMcIqqeEH5B{7+s77q_JIbqocH5jYOMThU@2D$rS-|oknY)7;D?4O}H_ +IRq8jP6i_KilI;=@MT$_-so|OB>f9s;8Uq&GDh)LtY;9zG)>s>0-6Xv+RZ8pSPtdi&8M>+~L@f=Vcbt +0D%PTQ^uuYbqA4omu^~dn9XcA{4rOt)8aA<H{~SQloQ#MUKAsFMNyEuU57f1alO%KJ-4gxaHUZt^^d7 +@P##Yg6Ks7Q=;OOrn8W1cL~)ci7LkzDWZvz5^3fN)u4uw?@i|33;_2AbFJ(t_x-E_+3By#=qsMb{v3g +G9$X|#NRmg~8f05C#WCscEv|blOlENio5IT=ClLw@nixqI*VX4WUnBT{J$y*q(bzO87$$q42g+~Zra? +ia?!P5+S0b?)l)Sz}bkbh;{wc`ezA{=5eHm1-}fhAAS^|W@Nxs5U&7G*~}v8_h1B;7+-?o5SMlo(KJW +R^_!n(M*LIp1vPHODdrP0x-cYdM}ekTEKnLS(bkfBOBS?B_?nkOF4BZ>eXn(Z3+~!9&sw(AapDuiD+Y +@GSF};P&SL_q)j5iR)rFt)0C~8m|?QqRsCzjs`9{rK5o>*3l_an4D>-J+%8n5M!(v9u_gNspA<IHpB3 +3+NPZUKgcTMVHaP=kYiV?LDE~-;;ut0;eeid+$5ym><?aKnd9?DA2?V2IL3|j91%(o;h=AgMA_505`x +D}UXQ@DJ}I>iLK&{W@FS5}z`#%<4a)8hj9EY<DmrsLWmiy9;YlBb%ztbM5*AWq72L^P>bk^6|2G;7?R +Fq}z2R{gVD)i9v5KH7o#C=Uz)GhBh#5|gkCv@)LIyJKS&?W^4Y1>(dsL(lhUJt9WN`1)O$8Vsr9+o2o +inE(agQN8ZC9EUJX6-xf*{8Zl_CbhKxlnZePOwGE>08uxK@%#6bGeKr+9O2n%s6if2wPh9P#b*!J@C2 +e{EbXA=AlxwwdqxY{NC%W+%~uUmI|XAK(+1!^o8G<y{j~aE|PZh}K~s9vnReKSI%K5`~^cea9!dy0WL +6sKvp&!ScLDCx`2r7UM<KxH$6NU#vt#6nCAD>i1?GT}?%s;3tYW!B3FHjw=>7q60Ug*65Z#c+-WV;xW +oOm;5~%JHdDaGl`X=O)L6P+RVl+xLgV|xX`}H0GMYz>WCw4G*C?v=5{`4$FvII=>jqof{f;hGdxKS;; +eLuYAV|i`0fK~5&+wQqT&;QQEz1*uwJ}&oeg}8xVX=O874V##Q_6jduKurfrW{Qr%%$;J%76Sd7=Z98 +P4Pv7zuxk){2WC3+<luj#C4*7(91EmFA|yOw&&2KH0A(cc%)LX9dNSA8weK?vPnsrt1~hwZ8Ol9=Fs7 +$lB0}8pP+a`V*11lNWr0a$|#MRsY~~QCF7vaT8yPAUUPTS&GZWQ_h4yNLG1}+7dsu?43GVWF%E?!e5o +RIK2KOYMtwkTW;TXBgEzL^~bN1?m<gl4GYOT5pl^Zi|3rl95NgU$M4;EZt~NH3Oz%S6E#rl$4<Lo8uf +W_3d(R&M1GtCSetQg2U(f(Z0ZMhhI5_GVwr}!O+PUW<9+M62k(^#aZ&#nCpI3dETwz2?;Ds-o^fReoz +X;fA>nQgQu}Mi<I&c!*?Pp}<*)<)?*=MAlBr<BMwQTVsz`u&r7=75ay{rs4FhHumIq~ELW6RQ8nU|V4 +}Go!3a7K5AOCWTo}xSNYtXQ#5mWK?ZkzvWlSfcaNid~PYOKgREJjPykm6{q3|*!|z|lCX28uGsKB2yi +2a9IM%L!MB21u(#tI7RLfFl!FCyP2;umDS3SNpWpJfXQ1rX1QhZu(RL8+}l7lZ0oiBj}Xf!${5M%qjs +7ER($`4WyTfui3izO_8)(f-0&Z9+xZQsandh>Ml$Kv0d$p2U)79VKQJpQh9g|+9P9v2%@qe31F}eRmX +;%Q(;dDE}g8$jT$Ud<SMQSa8Ye4VV{O;#+VcxU6*qS)N@V05iZa<b;ycM5d{9<9(+s=P#n<o9>z9P1q +c_9U5ojwAb`*Ab!Srk!gxt_8vpIv-4sZOLge)4s}%fO)%K$rPwIwvcB4C?Gxdu`Mp{{0q|D6JIGm6=_ +s3V79vU|kY^T5c9~C?dXe=@8V*y)v;T>e@r^DKx>0BSFqC%k)AZq|3pV*6<%npNerJDpa>s*!X?VmzA +hlu`hWDzrEb5enKr^zItm`;zYg!s8dEyT}J)et|osE7DDt|AiT<eh}>VC$*i=QR7HAF1&N$M4Bk7PY* +2gtP_;#^AsLK_9ZQsP)u~RgP{)0y)S7LBHdZhfm`1izRrOO@4UsVRG_i0=!M<@l+f=0%Je9%1)9xya1 +lKXItD>GMw6Gk&dFV%kdm{oS--9BQRkWc9c|t><Bz|Jg~JbXAg8%>>pI@ie~gZknZP8Tp;-n=Sd|N14 +V(KL}Eu<I<rq4hkM&yN89NG6c5xFhkRTgT>#hxshCG*=oP->)kLh`>$3;nv2YY}3P}D}6p9h-UrR(Dc +M8O(p<k4lmwy+cr#6G-#uS2M`^9-#hj2dg)VAoE0vD`|UBY<Udg?M<UdSoyZV%`!8<SbUa)sLoEW_-= +jJvSAyGZrl7E|Sk{GFx#R$1y@7%7sO;hw)u`{D1*(PHn{V2%;xI&T0A-oiJHlN*B9e!a((I!tuA<z;_ +!iWevF5)(z?wQ_b`arOWu;*u?o`{H8PmKV#uua_Bo8|8gAY+akKj=U9fDRGCT_8Ht?70rFj3&#|qm33 +<h0-Yf7V{arhZ|M4B*Yv6`DIB$23bCzWQ>$*@Rn4%JcZ8UG`dy_<ekbB`i5D=>Qet4+uH-;{J^rv-<I +8mt7(6Pmr;R*Yi9LapL~U;9hb=}!eo_ZIP{z}*<#NS?_I`HiPrdvs7I>w%Q;{nR*o52!U&Siv=X?R-q +X~2a)4`e2tAOeQzi$O(i(PMCl0K+Ojt{KmePm(e8-*lek9az?;G9p2?Hu=;4p<984A`%(vWeh|h6>NQ +rGAdQf~7zH4i<+9{{EH~|E8v`FlkW}S?W4cTLO$Gq3{u*$Pjy$3WGbrc1hoLc5S*pr1vkqQO4X!q>07 +kL8Fe&8Pjh&2&zRS-cpd1N<tGsJ`Yu)_d88V<)kF$#ZO&ZB!T!i!cX{K98EE>xAa%PfuS9Ad+YCsCP+ +rQ34V{e(G(?J>7M~Cp)Uj_Uy}`xAZ#1_<u`K(5|63vFTYtpozOJ6l5Fmft9`<`n5Y)Kx>E_`x7?ao=y +GY9DDd&MEfsz%H?~^~>z0Dua8*}5OM0&JjxxZ6>F|5?+@ZJzmUD#1Q94ItabQnz^(FND172c1)-WlL0 +Amfy<3bS?CA2!j<$S_D(vtX|Prr$ln%#NCd9)p|sgO*MYRZNurbzMVQ!cMOLX=^&jyF<T9DjEN8zxj= +Z4BsL3t+o6{ld~9)1R9FS#+2nZi>g6LQ4`TVt~-A2k^b!I>s6g0x_2RLb#_njy~(Nmv1kSYaf4=2oa~ +e^+3mp>9;^Tbr0sw@wkoW^Z>0)4NHrkzu}cc?(1HCoj3*LS9~|o`~TOM6aDUYPttEEa*JU2s-J!<gnt +z{*z<9>JJ_qKn12&C5p5}qX*lyj8W<TE<*$hnIVUQuY#iy>MkmDPnDNKOy!ETa4PwIkQnSNg$VEmvrZ +Ol36?emN8D3|{I;58Nt>*Y~<2gNaCteZdbRMfsmrjRCb?H}pP1N0(|6N4S*NB~?FQ*Dws2`CUo_PP3- +geNBz+k5d2L*G(S-MEBdHgi{zU@}V0Avnt3kZyqL82jqA)Fx}xUGn(Uzl!3XuxMEh%;MK^~a@8A_<1= +bVj$UesL{2PEd-9V+(o;GKd*Tx(MgwW22!7V{z7p(idoz5GAyI&+heSc{WMI!lX6KGqg^X$kzZHqir_ +$`hfDfqHvJ+N?jZSsIx_ET3b=Vf|Tv5&#U%aHRqUc*AM3a4Ryfs!PplYm2Zb#eFWqwXb}%Is<5gkAvI +z|_(_y-d)f5pmsJup{}aQBLXS_VFq)wns;a0HoUml?r<=fW_5)SbDom0WN#4eKm;xV~_Y!eT-of!37m +j}SQojYRwvw!HAv}qF<^p#*MA<L9q^mj+G>QGfye-+mx)REr#^=AW7@#<>-IaoMB*~CpQY<5unZOhj{ +Z?i>ygYl0QURS{Qr*i3j_H(c7A1x(D|#7ZB9T%Y?kneY=rU8M2#^7FY??V1SJ4$>q$&|l1Br_&aE5N0 +xiPuz8<4T|3Qy(5=K?FIxMhI8`|dk8q$?z-GkJf(rfoMM=`o+`Z00@O=_05)*#GQ@7az{%*_m#rY4DD +P&zy>3^nQ<Hb-(7>w-5OV)DrwWrrt?p5^7KRo1H?0tnAXxp(p*+LI=j(K=2N|tu9-zL4VXOxpYHNh>a +@@P+=wXS+g7qU*Ih2&ux8jL-XD<lUhLe%@_lRp7I-IcE?pmZ%d`Tp_gy3{|Tubv~^vu_cVL&yliAH2c +Xfz=#Qt&1N&k$TwLQ~x8qrL#h)umqQm@y9^c1E8}v^jx&#bBNl`)LN2oj(Kri)syq%)=wu}c|yq0(9* +djZH9h8Ri$Myyr&b_zk_?4wF+=!NjQ}zIh`qec8<33xZ_lfJ|8RazI_BN2m-~Rr|KWl;}hU=!w{w(id +p&P0x<?=6X7OhYK{`vXQ#e+v2o~vtnq6qq5P)h>@6aWAK2mtd`vrs>+4GM4w007S!001EX003}la4%n +WWo~3|axZmqY;0*_GcRR$V`Xr3X>V?GE^v9hSY2=9x)FWPuOPe#Y6D)k=zX~`ZZ5Fbo9zb3dILLY9~D +}nV>S}0l9U~zXn%Xpkd!Rhaz0+Vz$URt&J54YoSEU;=z=B5x^k5fNy21NYU3DRS)Er-B;oVLnzl_!o< +8#@VJB9;ObWflUmNGjB+aEzu0DICQeBj}aAF~N#<*p)DVM9HyK-^yiT%N?VAn6HD4o>GUR+$HIk%R5z +rVk`Hb$FavpAYwF#H?%BclG6RaRtdwP$W4Eh}_Z<zh1MJ4*=a2>b^(N~)(}{M`|_3*Wt0+@02Wu&=T7 +jD2fun4opbQtqYiB!nx*SqUK!?vG_+4L3+7U6Kr~$k$`PJZ6Qk7MMrr^p932w8*afo@SvjWpX5GaA~L +P(hk@q8+N6R+S-lCs#L^NErp-hH(a8W>2ppHm6a*Ah3}gUMj(1rFf2(tLP;`a!?{*s%;@K+L2e=bRSD +|?cnyrNfY<D?a0+*9!?yxKWpygK1Dp?wTl*%8l{pV3)_^2_HeWX?kAduh_kX~yHt-n5<?{AS_$|2fLA +DW!cCl0#C)Y9sR&32>ZW+a%^1-rXsa8s)gmrI}8~w6>haR^PElJF23T`?ZH1>)9DpH+^cgW_I(*<`j1 +<*J`Ag(yALeWes2jcmBzc0mkRk(%I>Dhd3E3>)~l$_uJC0<J02P+$1mO_CIWcJyF=>4-1wgg`tal@x6 +!dvkIhk!vxFI!b$)m(bhDXdrEQjkstS^y{Ff-9Lzx1U_h8X&{LtF9nY!)^s%_tEAL{<09xM4z=&t-kH +x#Bl|GkwsN7RTV2?m|jyz8YvJc)~BM#L^cVrJ}tT7g-?SiyYG6vp`xiHcZ5AtZ`btkzldQ}fL|tu1D^ +fJ8;1*1-aWPzSr|gjFi~BEpRzutYuwmShMhF9U^ll~g_D)agvs|LO#~Pt9Pc5HAn3}c;1PL*B{(Vkan +Y<slEBIUUTH9`0rgcNT<p@a;f&XX=hBQkPq!404pQ4L?I))W(;dp6wr;lJ>PckhW22LH3Z_cyJZVv_c +@oYdt)mBg2y^-=<db3>h<_gkM;xwxX#v@S>K=<ed2~rebQE+TBaGUV{ZU|!oEV&QRh!q~b}tK|E4Or@ +&olfn7_c^QL<IyI0F-KrjL#6oM82LCU66MOybe=EZSPaW!B*+BaE(kK*G#8rWo*pX8F#6tGvCgH4Lh0 +VXhpEVRvLg#5t7qKYRKB^tv~<U@z=jU;$m4m6BD;{jQ!U0?eCA1Zn|}DeXL{H{xD{5M(QyR0Rb$^oER +e&a!U|o+##N*kHraLw!(C|8#Doox?pA+QK59*bWpFsxN|(+Ksy1Ukj$1`E7e9A>4E~#D&$d_I`m}mvO +VZ@?)&i@){IJC*8O)2s^?;NR9l8U){NOnQ`WX+7YZ$@f>Zb^mv#fCO6=Ob1beU*&+|RIp8cH97uVk&m +e*hVYV&nby8WS<epPj7n3<_ii#-bKmP#Akq0zG&c#8h#x!$32^=O^t=)tmgtF1W?t%fkRwu7(n$yZSS +af3N$C9psB!u!<TYNQ=({X5UA$R>wB$Ly^Z3wJ_*9$J*0(e#r@k+Ubc#V(3ZsmjW|rv8o_8`Ym$)TbN +NpLhaBMp#+MoSWE6A__{9=3!_nKUWFzsIZ^?zd>lAe=oJ>`TEe?gHE?IZ}`0y03D621N($d?hNTZ5DJ +`}j#zVCD)`*jJ{2h<HUPFNG2&vcpX@q)SoFo;uIJZ_n^|(bSo~bjZJkE6a<y*+1w(AuzP!7h-F)la|8 +FWNl})IF{?F;@W=0TT3AB{;*xMR`>)X-Crf>;^ixm`EHlAdDs`1q<Bw0^XEvwZ(k%C`xH%H@J>pIfir +|+1z4key<hL%Fcg36X(=6!K}qrAN$7K#s;Q1Itisw)M~ghs4{!6@c@pT6ZD9cV$E`2khdAMy<Dv$(Qx +y1?C6BINQbce~5EBkz0!UtoxM4MU(-Yxz`}kOeZ-G`>Z;fx!ihQXsXcqW8-4n;*dq?+m6I*)E#iy+qx +RcTnFy9-{xtgi2qF-a$Cn)(cmnJ_}S8x@EyL-*?rITJb?AL|GkI+7AmnkCYYl%6djW*RzCln`^Yym3k +K0ursBNSr4VgGl!-Dj!(mBq77{_Dkz#L1z$L#9lzW=)&8NgJ+yxhPiwO{L*}BdZ}h+E0JDHU&q#56lk +*c;V_7br1sjHDN3nHDU>b?hRZz2$ZoHuIVqux#yJ+9YQzDt2#QO|Kuc6m{2Rv9jKJ!v|bd!U*LOsEg) +TOCEIk=me+GcLAUk7geu3!e(Dwu%gq4jh*IeN1sLZbEoZgFf&p7f{bmX9b+PV)TGZ`x|~_bG1fc?^XS +g-m-ww3JntUj;n}MBI3G98`V7QjkAxF47)3E3oviYixKV8XZdEsetZ7RcTJ2sp2ct;K(zV5+kWY4{W? +5eDv*ABiK)>jgY3^))t(u)F%&1qgGV-ap^l$iJnSKQ~buS(c98i`XQQ!hG^qm<&U3z$6BIkFT{g-R(h +v~U#z7X6C2^aboGaRaD{%NH3(3hCoZ9er>XhYiw=r0NBsQybLc+*nr=o@wsg9zhXV=`KOc0JQ|@p7I{ +C}wY)Az8{XNtCU=%C~uWn&~?4H7hqYyep<Rpwv-w-_b)IH)NuRo@(_VhxFJ0`(nNf}O!{WI9k4=pITj +#$nY|6D&!>L++VE*F%Q=aU3qQI27%SH4xu5*qLN5xQ(`^HU)DO5-CpN};}X5MdY`i#!7E6oj{ddr(H~ +q{^t+5euKeE<TZA%t&=bqlTX`>#5xj0cIcDr63T%tst)z@&5x*O9KQH000080P|F{P|?6QvHuAG0BIo +r0384T0B~t=FJE?LZe(wAFLiQkY-wUMFJ@_FY-DpTaCzNXd2idu75`tKV!$8}nU%)2yg>sM0_sid-2i +bKBw4hDZBQd}Br&E)E@x<4P1Dcb_vRpnhn!^51E^p?;&9$?-hGVMWxgX}xUOVX@-QUHuE<MC*h=JSC3 +&cyM`oGtSd!98CaJJXyJW}ZzTovj$w#9#qSAszw`{|O1r^D|Xf%rXnrtdAL>T3n<e3bS++Qat&)AMn2 +y9?gDi<CriZqFsO!Dj~k0h5<AxqA7UN9dK_;{YDzJEqEBDb7)FE!-!BS3m2UlT?Un2yxOdBIAyBlakb +f}f8-YgdWPHGc;XE0JUyGT-I#d|3;>r0xMmf(HNfnq+wwD`FX0aeWq#Yq|0KrTJ}Ot)R(zfcKJv>9WQ +SR4cco)Zps)hUBF^V&u@-C2g2>UhbF-x17bi43#utxsGPD(-U7?=Z>Wn?-<}0o))|$>ne-TSSW!8A}o +u^Z&fZi7y|W{a-y+`!sZfwX@!Ea6&9G7Nxs=5V@bwil4Rul#Y=)L7&E?OrA(qKWo5btYQC;gJg<i=$o +)2nwxF8LRuc3!mShSc%d_d(hnKHkYjMPcq{*#z0fJ%*3NDcdKuy#9UT6kRU%Vh6xR&ro`eWOt`u?PR3 +H$}UsAg$`dXOaw%pVE>0|7x>;0BtVJWKa2S5o}7fz{Fga#7}YNeqBYkmYi<m*AF5wE7ZGTv`tWvo~;O +O1D$g?NnO~8LF}*%42RA?YUqA_7ak15%(1<6AWy+N-|dNmD>f)0h-r^{-!ZUT;HqYdiuf(Miw#4(Np$ +5*b1zzY0#khdF)+ZUzgX}IB=a_V5lreHGV1<-c#X?$y3sD(R!~e_YGk~OnIicVIoQrui4KZB3?-1|Ek +q+uC|?*Wez$vYp-~{7PPSoCPagj3f?_h1)b)gmLK)^?r*a>Ay3G=z1)I>%?|0%a^2G56QY-GtP&QX3< +9)j-o)1JFd{V<>a7xfYW5f`vlCQrnIWr6I+zVY+f{@^b2@T)cM1n>vub^)7RV(7!#-PpaeKD?J(?TzK +4TEI19D*a%g4(%&%^iU@7|ofJik1D`|$(Ne^y&7@47lZp3S^D{Co=E6Qi&9yhvFDwc^?%_lexXk86)Q +G|yiu8vWBOOuqX5%V_k3oTaJCTxAa5TL|_@B{o%Hj~|YYF?$?8oLrD++HIfV(@%6r5Ly*6q*h-Y{JB; +Vsu0b%E&V78lx&~p$FskF@u*G-xLog6VHu&FOO|c8k338?2S1RLW*^uFwqanyRv&qq=$BtcfvGiNsr4 +4_AQqA$t<y=yd7N?)f}`0zJ1CpNgc{PC<<bZKqHWNthKC@o)PA}t^Q!QVgB$Gx1?D}VS^znX@?8OSz; +7VEe|Yp$o@D+NyyhZeP+9c>fzpTmje;IJmfrHc@Piwzg4*>=4l~D7QLTI{SliP(Y2#q2-pXD2{J&JFm +4nsg`hQlMu?Q|TFMr9)TjcOn$=15ZY0CA<F`domAC{q#RCxi{#4EmKcM0$a6*a2LRBwPx0SaH0a0GB` +q@$FC14s3bY5Z|3Wg+HANB5@@-9T=rRy4_v&`w8!N2=%wijPlp6oCHJ;uJ!a{XcXVof0uo-$el+h!1h +Nf`G|EkS4qRr#lY2<zNCDNS^ILe5C8Zq<sM@S;6pg&&pU#F`>W^vr5uLg6aq27I--r%>Wps&{RN``3= +HBUL-t?{e1NaOxua>GlEWIqY2|2_$W0QS>^HGiN9~}ULn>j#v0G2<g!9MZY|p$eSm{D60RI+l_L+W-T +i3>I?}wrU}9-Akr_|?4mPwN#V~H1L~^RKidG}y8v+cKBuiw%Qk}q*4y76o@zDMmq3xT?;lm<8V&LNd0 +%;bM37{$>bsMCzjmg1yjNyZlpY}DJ8PO)%81Og81U_FL^ciPttSe?1qFiCv)HT7=^`w4MPTU*`Mr)p| +Ar^1*%-Ljk9b9eHvN*`5rg35yIijI5`9d+&c~d*YqGqYRL;3$gao>Jn%?rKU7q>_0`N;qUx{GffgCW> +PR@mKL(iZrWieU)7Z64Pq!6q)06(k<vM=4Y~<zr4ZnS6&b9W~l~pj?s6)zS0iKcTjz$?BA<Qv`MM$&# +!g_2%VXH<o!CPlep0(;|2Mw1J-wRe`rU0`m>z^a@HK-iv(OX>dvn)HE0nhtMdQWMM~&v$wC*Dq38zLq +Vwe0mGrOwR?+%9!xG@U!D_HA&e;ZTV8S%Y4t0Fu;EH;D9qvff$e~3J|DIGW4zAu@tllTtQ=1|Z`dtI9 +^kc)+tlTge30V_8Jp`afnu6h<Df%da+cQgfbY=f1<(9uLqOqY><3*0lqhx}{;nXPR@M+^twsRWk{#Rd +qfZ6j^f-ck4D@LLTQW3nwBv#<8tvhN?$>mNGj<VVH<Y!zUOQOxl>s~BHf#i7y(1ut1vzcM$4}QM+-pb +MD71+BV|yQFkPtr|^ha(wog0VVflj8w>^gengx>oWd(L2_0<dm4AmR9(BkSa&^;Bp5M)F=d>Sa5N77Q +OucMu?9-Rk<TEDQG`a5*=_kAvgXwUTEh6-r-~G}51c@Z<W|pYM2CCb6o^+ru-_p-JeG>Wt+co8!UqfG +u)OH`sdN=ikuUJNTXU-X8EREj}B(3ADQG+GkMWfm@rd(S)&DQ_|{5ziYPNF}^wq|Fs!MTU&%~%^1`LY +}Iq2XA?UVkVJBr(a1U7&?YyI?Opz>L;y*G{EUeyc0D7zvbAk-26_X(hBSv~`nRAfQ>p|GR;(_l*o7?J +Jy!M>91do;CkyZH#QP(;oxzV8{GgOBhZC*h2(rP|O_O`UY$`AoEw&HjW_Qa(wMyL#Jq$;cR(&VT)lEv +{EqI+`X?r=}>=5dL2@_yHUF%aAOqyBj>-N#j6s}+Pb4>+GGj~4P9~;*-AjWkR@&RvsuXYNztvAy|Z=@ +QePho~LwrRRf=(s|>Ou}_<zz4la=if}u^P61%GtIkcDcxeC#%uhZ%H5`zZaCyxvvoo)7}T$zZvrKNH9 +-aA@|>8v+=kYLy|T+ULB}tQ=d_AY?IkVFj9c~CcM$BY<N;aR1Ow^w>*5_`*OjY7j{o8Cg1#fFb?u6Z! +g0k;Eo~2Wb(;`3&Y>r@Rs+#lN{x#w>aOB|b6>*QV!)L_v5=V<soCm!x^p)Gw0a^Uxvs~6_)R{I>AvBr +=icrx@7^0U^}Cm#U6u5U<=8!a+`W!yZZ!q~twJ9GwR|4{9#nrTYzB39gFRl~1+b`8UVX#(eTY9S+|1a +L=&BbYmFG=*i@ikLX+rJChls%N@g~lt08A>dY`f9=RozbqJ*dtw)8xIuIo^?5xtXg%bd0aiH0jl$v-T +hT3s6e~1QY-O00;o{RI^Yo>Rl#%0{{Ss2><{e0001RX>c!Jc4cm4Z*nhna%^mAVlyvhX>4V1Z*z1maC +wzg!H(ND5WVXw1}YYi3Y$S1AShhyC1?Wpkfca@DVjo}q|usPid0BycYVpXXGl@9EqgZ`0fr@V=FQA|! +(nT52Sw2iZZKFBAi7=~2fVUc4i1a)JBiDcP~6r+Oy9L`u(s2ewn@@@JfSC?H+zS6`!TMwp4Yeh2JN(M +#lvEU(bBYA#l2RbY-XQN_;o<*-ucBOxi`Y0f$NwGlUm;neU=WcUH_iu|GxS!Ns<OzsCQahEGj*yhMRq +sZxWy<P1ErIaWH^g#f{<C3Uwp*YfAwog27($8aq@DT5X^c9XhS0WeZ4l0ywQwY7=X0hYwP;`%GIl7_J +)KWiMand9W8PC><DKfBo~@nA{R)3PhDswOJZa)6w4`DX3<fShXjo2>cbg`X6g&vysh3`CGE%4nf}$nW +F_u!p`TR_q1D(!ji--WVb80%fSsqjs>a$8bP?L@al~$Sq0ZkEs4xc`E4*#it1Gqk{v5p#xPSNM1vsyt +>dc3nCmJ;$Pb(dBEu8qtD|2x7Zof}T0FJ&cC$&?@j`|L5DLVR^?CT!Nyi;!;h%lL2zK-OY5arLF%0va +U5p%NzXt#OOtMF`VhkGW4b~)Bv)RB)_B#22h=1=8c+&_cwDKB0OBv|+Eh+4F!a_T!+B*j{?S}(8WUwW +skP}6NMc8<wO?lpO<qGb1qTa<Gwa;%3hzLK~i|prHDjuIKBKrRDZ@xV)c3SMCC*0<K3#y{>N4Dq&=|s +<sE6B8KxZ`s|)5*R5pcO78e;d4khpb5kKM$z<vK*buk_4ckMOq=uAzt_pYaavNZ{NT5$#vXCDmP@oyO +`vGhCfg6<KU&D4us==^*rtJ(@0Z!hgjP<@p`NU0Z<oF`ihDiN8@4g-3uw9LbyQ{8oU{+oq=NG9g>mQY +wMQtxm*tD#t+qaLuK<6p2JexdnqoC;<MZ2(pdSy?46Qe;SS5HEM2d!>=*MzrEmq=gq=^l=AZGp%e-42 +{Q@R4s2U2lqtl4SX7N(-PiTPaF)ijll1HYU-&;}QZZYE`fORIA<N&|G8@jIVxuNE$b=PwzDj|j2KMm~ +<lEVjAxP6a{AQuV?!Je3^N8F937g<dMp>gw^?)Ca{!fUM@-TEQjNI-hwbp3HSx>wdC%|ItJBE-HycgN +*`S-v`fPrd_CO9KQH000080P|F{P$p*lTcHyG0G&br03rYY0B~t=FJE?LZe(wAFLiQkY-wUMFK};fY; +9p~VP|D>E^v9ZTzPLBN0$GepQ1n`5b34bu^r501u%eD;~Yrr1eUXdg~w<Xn?<prW;ds+TM{#v?>_ISv +%4wTlUV_g$vR$Dz2o<eDrMW$dy(hcuI(C?=R)rfb<+yDHg(yxD(CML+g#LTsft$Dm2pkmt}5EPE`38; +UtjC$dNSD}=`4@tIO^|Ip{lk#{%X|bvaVXGE7jQXMO{@q`~XzljPKvS|K-y6`~p1-YP(7sAEbf5^7Sz +{#ZK*&9jfjNbx1b%Q(Z`G_+MFe>UGo9%|g79_wQ8O9PQU%n)?2DMPz=hZmRmOveXW;xRKY&(=z(L*ON +h0wy$sDQ`eNGUPDh~l$!u;zt!52Yt-L6W!k_t`uaw-yLw~nn6A|&lJciSayc}_{S9tDkby6g$t2HZS% +S!y;=>e~_eNH*!)Ce=Q#xSu{ea(dB#4x!A7M6#8D?5xXV<Fz2|lW3mgkk+gC@-<ldG$r@*iLS-(P=z_ +m?XeJDUjjncgU%q)Rnj@b^N2SOyJnbmJRjj&1(CF=c+M8UsS=4aqmUiARAVwCcWfO}O+y8go}S8)$<q +J`u0VQjiD*^kRpQ&2_g2{WPN8N!0nS+=#Ujz=T`9Q5(_L&;#F5xAx4Wh0v`5YS?BLqHbtJS8Y^N9)Uq +3sHDln`<(_AF`_d}4LVKRbOqQQQ-!T$lbkuF%8g06#|jK`5l;ln3mv=Kv?I+Zb#B&G8=70aS9KS9aM# +<imh|C0cZSiZLRy(*G;31W7mO$@y){~+?^&01aWmFo>aHnNE;pM-88fo?pe>_aL7Ic^NUz5GSjC2YUf +Tv;iQ=7_$T~PW*Q+D*(6q8Dl&H4?Iy11AOYTS3GB~_s^ToMQe;~S-_eTG&MufXl5_HcVVgq6cT{&4Z_ +Yhia1hwFr{ZS9mF(6ab<~747k0>?36&z?*s#{fx8SH5e=5S~c6x`QaL{|EOCj~Ce=c4Tnr83d-NZq8w +)8#?($ZgblBp$TO5=9@>AH0P|)f}L2%uZkkNVi83M<7sKfYmC2?Hk&wC`uqYV!}Ylh^<9{VD@C#8PY+ +-DLT^vI>T7O)@+2?5zy$WD7%fK+1B`V1>XQJaI{2>*y~E~yL~o6*!~e(m$7Hg!X{@^I|9xU!3msavQb +-+!!OyDEp=6OvzH}kQ!^uN#^Wu7bwN&b=NHVb>6HGxY?N$OgjxbH1LZH>L}4eA@L+ec0c4}OuZjW;7q +Jo8_wL(E@$$dF{?h^^*zV}?%oic6jX;S2ECV~GQRiSdsxrFOw<;q_Aecr0$JK)QL?H>X+#ks>*)@#{v +ZBQ;k`pC70g6sm99_6mWa5XdIM$uG(`HBF-bv6TUT&>+@>T<oEu4!WTC!|aQz3f_@UwCa>Wwp3E0RMM +B9Ya~a^wQ6QIb+H_nFuBgjU~x0;rt0+o@`J4s;vrT&yy!Q8qyxJiR+@nY>!LJrJW;D`Yi%Atg?Ajds` +`4@yKk>=U;~=xI$j$g4;X&P#m*=(qk2^wzmriUpnJklv6uyd2_P^cP`#;1S@hx~2kKi!GMd0NDat$Zj +Q^v2UX6dzlEXb0LJap+xhah%1fYeW%2}Yf;L$>2SCOL<TpC$R9wbbYmF0+_9GZ?PoY}Hjf8=m|9Q&kq +o@omX-A#*lKSEg#gKTZt<h-?m?qKjnJmZGW^ED#gisfig68C)i$y+AO_$g`j}ck9QZp}plTVfQ9@`qA +h_8y_>1YlgG_s%J`Z}Kw~mBk5N^Vq0lGe7yj0b#cw1L0%!|)Xqn2TJv$!MEt=gN}JZ6AMJs9m^FOO_B +<jEW-%qdn#ON|ta)g}-%K@1om&!#<($)ba!$5Td+8HArw!1FTDM<o0a-^c^Q!X1RP#)YkD5Z0$8{_LF +54A+PB%otE&$X`ImEwwPzpb?$50$|VkD2Qbm!Xbi|v-~XU>jpB^i6ldO0bz`s5V2({{!3VCx(SE+fNs +g3?Jw-P7*UZ~09tl21DItD?u9a-2u%EzXw$eUk7Sv3jfqO~Fce2n%yHeLk+@&n3h$92D6BAh`qVkm3B +?mJ7BV*N<pB}NdOlPy?>j7bk-s%bnn00>HVLrdRCGUd_&ZQ(H{7rrb&f-A7I@B$GP+S4qV-x9I}xRWg +k#158Mt=Rl4$3K)avNg2ijYG-2pkIc3swMIKfe%i>ACtR~rpJvZL0Twa|sa*`)6qfusLm+}*Y9VR{kD +4VX8#T9&gDLCnIz_Iwctn17eTKPMApAxl!3bc1ehV?_$T>`1i&h)&q6NBo|pS$;3zg4nUX<M2{8YYlh +=60n}cKvbYh3sP`4DzSjj)q&!JMiw_9KOz$>yyyLxG(<XSNK$qCoVtVdzwP#G&<;?D0SSzcK#P=%w>H +`o(uR7_S}JLsA)5);f>?1mNRF4b?jtPxJvZPgE><SY0fq9MSU~CxIAsL*HrS-4LArkpVPoZqsry5z3k +~b1tN!h8WUcmGboTt_E{bC|8%+jK3Ywr=N8cv|92##Suig1+7aTRMTy~chs<Ko)R^Bd*-Q4SYxd;5cx +R`i~-+c3pt3iM&#(LyswtO*9hT}jx#Z{PQXWzYkf3^^3sI3>zo?X}VHTbil-akA0Ba`=1m!D7ID0g)| +ws@(knVU;T3*9d!-cINPXS6XMQ^J!&G~4F+%&2m^2x`52{^i1H$r7h5#F+def0bHk)+205h3#Q;HYCU +nuGg4OVv|~q*Gz+u7ieXN+Nd1yZCT3wdIMhKLL9Q9gk~T4;Lj5(av}gjm=tPR7ThT6AzuN|&IT0e6*- +!SQVl6{qd8%<Swgb+QOF$cNGFfDf_{^WnIriEk06C-IYi>J&KO&h(f5(i)P0d-#Lu5@Woet%5gnEzAe +alhnF;Th{I{|+<hL7j-bjrBc7?vTg<XN85uw=J-x$q|c2=o7lB?YsA9q2C@PZ22gUp=NHrlE482IDUb +Rg?7s1G)4iO2;Y9xvh+29@yC@JuqoKO0)4wbLwU8>G&wRd2Tttw9vwDympLjlW}JHlXO~#pTyfgt3Y5 +o(wWBuF9h2V8bFZ%#EYY)OA5xkLzO<V|^4CNbO=3nW!s)uM&;`R2^i6RQ47R#1C{J$PrYv@tKshl?~+ +X=w`VHq<^RDhHO-F)=&@t9<Znn{LjZYcI`17cQZ_#`h%9IfGV*x*7;W@9JRaNCE5B8B&Xn%M~D)^-G? +|Mctj_=MMNtt+aM8WXzNB7HcWK!K`0D4V?eN?E2==v<~D$aPDe5S$;4l=XaZ5{t6zR_1sqsb7HE_<#> +S*L#WxUJqwvCJ6C{*myuKPgwdMCI)!XL}a@yrH3ld7iSIh=2+$~+un-HS4?{Mk(dL<oma>2X7dKQ12p +3P$8fBLjv{R;@i7}!JESaV<R4=t7hu@;L#AOwnRVkoc;q#IQ9QG1HpP&?2|MW{j6e5auk^DnvG;sjlt +Z%ci>YvcQrg;;kj=OBLkT16*3=VH$m6CyO#Qk^!q;B!69hcowZ0D0vczGs^aA6SS>mf%8IGeSLl2&lh +PSaN$5p;5bIK_N@6N9@5a_7m1(zD}VpVJ-0qG#i2xXxoHDIjRSC##PYqXLTxOO>b3KtIRFz4@~O^MC) +PxUNzUS17DGJG4GiHDnlSztvsb$*=RCbJbo|irrHKLyB@$(whQc!H-z<_*tmTNY0VMU37OrqXL9euyW +-jOZO!#+b5MoeY9KvL>}?crb7DgtacvfTo}ZeYR0u6@06wtR^$&rPN)JKT!OPyoIF+hSuH)*63-R@r4 +{VDd@S~-DdYG?P;)ek!^?eZ;ot@j?;R9ysX0WA>UugURL+o92L>4#}_3S$=E4G{jCk5}w^ys1olv+no +4_}(mbgEBU|1)--5Uv)TiJZVX7gs+j?KB>tl9nqW)s55P{ze8-iJR;afF7L_B7ICD9I2W6Fbs`9T~|C +YR+iHw|1%)&1Kv>1i?qkB4iX)|&*7pVMMqYX@Z|~KN35gE9=>6L_~%u0pM&U2%0xxnRR0$K9w-g`y*u +Gj>9|r6kVjq=Z~jx%d4e8d7|4Ml5gu)7Mc!&J+hPYP69j@7O4f&{Y{O)d7y$cihLf^9>p>ncdKqsJ;m +&b-o{ZHTvW&%6K4_Zs_Vk8teW>iy+Xxp=m8-T2%r%qQkK1E1oV?7)U<TDOpg#fACm9r_p`Va|4y-IWn +`ih3$Lx<52S$U@(<TaWh_z1m^vRLcmEP-8HW(sYV4`ud1~-=M4Wp_wxMBC|lUG1)Rz%`ubbl1*ouL2^ +hBuycF>M#wV1Y?fWjbWSpiQ4wQXGrULYy$n$Z2tOCrUzw{kCo`=ICvFL^N6CK@wBhoR<T#jeikgwPca +vU!SM438zHnQieY&*bcSGy?L9#fAdfB8Wg)H8ro%15Z`5S{R6%_1Blfv`s^vi#i(IS$9n5ZW+znj4Ne +30Mt3ZL9KOy*fdJR(PbKTUEXs*T?CXu*9#0k{QE{1P#!45r5ZL~zI&xjmMl60y(N4J(Z=;oZ8!qQ!iQ +0rZq#ZU1h~J2eaRz;7%+JT`6<)Oi14q(nbnv`mIGG#gZj6WU55(-~v6_neX`ADC2kS>UI1SxXkIvw_q +4-hp1Ju)G@j2X}Q<dh#7DsmgOr_KH&8R;(C^{G&dS9#ETmrM`41SJM{pI_nqoR6JL{9)3ABaigYHlas +Y<R_%+0_G#kqX)eRz*`Ab55SpZ3W+~>VlM=A}6CN#ODA_=Ut<tn6;to(fV#mgIBA>!t9-r>kAh`AzHV +usR2*AV#f$7AzC>A{v9AfZv(SG^M=S>y21%<QBk*_jgz>>h$#h}{1j-6qV=1*4^#W#&fr^MpXG6tJ09 +kQ5_QKm>z|XjOZfN>&e3pVKDsm5hC$5|YiksS(A`k<(1I%n*~5i5i0BUBww1lJae6mP^qmykPa9g^qe +R@D7)VJwa*-u6xAM}~9Vn)=YR%})<T0qt2cuIw#KRAU^mj{^@2JMr->dFGL1m*#i7)ZQukU_hr{rkjv ++xIZZr{4k5}@z{l3Fu95B&3sm(LgC%2sp!lzo+bmDaoM(ING1JA+bu`Q^*>Joa(`<on(0_tPZqq=!#S +&?kPW<6b)tIHrwDu4i`4f}cST>b;I6^=4#Dx@yBL4~_0aa^fo(b?_J0d)eIZwMbVPxurWM;5Fc|e~s> +_z%a+cETVV0Q^k#SyzWU>4o2?P2X9JlYrUbjCGNtiQte&c+|Vl&!c`rY#z}*<2}VAf;}ZlxIDAEg&lL +Gp60#J#*GEiUVUUd<_>WGqREor%?17Eao2<GWS-mHKo<fBXEtQnx@seLC;ooO~=WpnRQUWjYG^0UX=R +Q2o;F&^nDDHE$6de8dF~=QtvL7nx^S41+e-L~GeRON<3PN+dS)27dHrvtCeOL(c`b*?@1Z^CWB!3u_t +{6)bi=_{rj)r_1_^{t#`}`OVblR`DFM$Mv0C4_oJ)6D@XeGWd;`|%<J?#ZA5hnFENA9GL;e%-&$K7k6 +=&x&L(banIt<V49yJ8U8Zx}_;TUi$zL~~Yr`@um>`~(IptikI!BE@Bgt*+c#{{@%#spInJw{KrxzIW( +|dd-iY5z^CVG5n$v4xBzshJh|XV&BTCA17_Y`2$-?Uc%W*7VgfOCIw9H&H|3w`a58x2RUs;FT+E{YfC +5KJ0W`Gs*oJbr07uLBR8Lk^0O%hB~OD`@XYZB$p>;oh=Ru&U#*EtSDd4C85u|$^R#3KQvp#OEK`Sj%; +QJl3m5ln#f5)~s<`(ts8=OjNxXdi;_JZ+o#z<o5o138b<c~(=HfqVU1fE1J@z_>=l0&_JWtnn`QRGn; +YFIS9-ZBShylP)Js=w0;>+Iiq2#epD41h{6H)_b452A`P~=;ahef^V<9%a~kEnBgk%Y5RG!k|*@(!`* +^88o~g}y+Z!LKj$RD2;)Cz=d)HIN5JP@3>SKV=R{|2*YKlBD=~gDA|&@Y64}c!sOu#CKQ8+B6E>)S;B +fQ_OepSDHk`v|M5`b2q*A!Dl}lr0c@r-;E~widKp8lw}W0LRTI_m-IUT&_Dhehz)h=gMFMIa;9{R(=+ +lxwv{wTC+H67-6H&2(D-?HD;GUpv(ryJyZisXf*(G*FoWce{r$;9JzihLpRuP^k5v@eN(Pa~AJ|C{o6 +YN^2D`V=@b45p4P>8*TEqqW81YWkf)vCrPMP_B9-m_&NeJ{V+|@cg4&p-cD|*C3xxx2!^t#xU0>sZ;> +WS&bHT(6E|6tdE-x%GJ3(@JlH?KCm5Ywm6o=zi6gM0~`^Ptj_aeIPd)H0fh<R7NryNZdO7|$HdG~Cpz +J8WdDW`hT)R&Ct4|3vZ5RqW8+%&z9+Wx0hfi}j0P*@LyI_{5J@W}b*|ZOElTl*u3NA+*2*h^1Kg{4T^ +jN^_u<60>)+F7!)7&2MdV3{j&xgMgHxYRDJMV~>iv0>KxyXDH7zy!J;*_&kp9|Fba}MpcOLr&DoVD|K +C?6|fNtjBW38;AFJSHK<*L6bE%G{oe)5LS>BQX4gz&Tkq?aQ624HP)h>@6aWAK2mtd`vrtPMLn^Ze00 +4p)0015U003}la4%nWWo~3|axZmqY;0*_GcR&wadl;LbS`jt#aLT!<2Dw4_pdn6KG;q*nuop_2o^ymZ +2~ltpp#-B1_PV6=$MTpsuUH+9i+c~ze7=!WGlU3(XJ6h5=DMIm+xGtt<gCxm)qLbMlP46@=_a1VqNL1 +wsP4#PbOQQmuyugOI_J^nk+UtmCL-&tSW`E%dIwfDy;DHOR;$pkFrWC^^)ZJ8F#hGGPTAVQ^^(vV-3< +|GFdJ~mO+qn`W*czf2n0<Z>8Pow2Hpq^(GTlMZ*^}z5ZEl?0hjH{Gupw*GpYI%R&KIQm$T9K@g7IdRf +tar+N2G=CXjgw8(+ASV0n9%3?*igN~`HH#-L>Dq6V3i`8$94&NplT@=_@>7vv+ORgUt?k~g8J%&~!iq +tJXS<5SOQNTJT;i<RH{VJKb`S(UYs}zE+<xV^+NY2vd;z<>cw9$F43$lk26ZDpNV=|3RyyR8bIh7j+w +BM=C&aL4k?d+|RS=#uKk*%h>l3s>SC6;d01`avI&5$=!;+HQy0ie{1ROMu>WZ|Iv6lZF<+HC}>jC4TF +!j#|^yOZ?Ok3Z0iZOwN6{^}v7>#K_oF@3oD;p*XPp8W3aYn>kcx9!gu;*9OWPpxh0ih%;T3F!O%{vC7 +tU7&1Z<RCkXaDVp+3f%w1|1KUbuip?qi0r*8iUZ*$?YSo=WofUnj54jCs4iK)hK^-vbZL~ZvhyBGCM< +iNy-2!{tx95z;3K=&fgbQQ_HDp=N_$an3T2hZ)UVPIbQf49O||fPxDnb(k-9<hzw2gzp;fWT>Qq8@3$ +sA})*Ug`MJ5r#8k?FHgZ)B}3h^4i<V%^Ujk4Jx31RJSdYoIf%AC{JsG&*}Qw09-g&D-xyZeWmyN{ou* +NKmZEfSuBg3INslG!$Hr8xfxi_JTI_+`>ccphYh$G-Nke9D*&mc`-8Cz9}t>D>d<&h6R_^=0Wsj}z_r +gQ<J3y9B(}b&(2ljCywVw095l1<}9gVqIAyHa5IBLV++JwY_O`qD-%h(WX<&IpNZ$Px)efoDEYkBx$O +HPpr{!Iee}R>3u<~kZRjpn{;#Mopn8LyrbHz%trJf-6%RV8`Sma%cp(Mp>1j4-z~_Gyg!Wf<0|0j>*8 +lD-1Ih}tyYaR&}J<vBo^Hymer~e8RLk^)JGTp9(IU+{0U_9UZHZcu@qs<qA3GoGf*Z4q!c;aYdNS<I% +<)1{MaJ)Z9+GeHlje$aNBWu%eh=v%GQF565<baAd^&C&MI75IP3eQ!arT|JdWWM8dJ*7;#{E-p_MNPA +&KmFvLMtu1T;9;R7+&R0OsvEQZ3>)-nm@f@fNWrVVuSUde5H9FpwR4DjD^$x8`}vu(~XznawBtVDv2c +9JPXAEc${qxONlOwgrPpU0xVTLyG~~jYLc3C!ZQ%7+0OJLvA;hj@|w`B=`Vn-ccf}<e!#^&Hnd^bR5l +nJN%ymyBD}!PY|$p2G%4YS`k&-I&)R~xZlbY_C0A`Vv=?<&Q5TuEh#`|{f6%9Do?)<b(};FHUf5V)z8 +0;7VWavlX;*&T5~z;S#Ut`#t=gpFqghLr|91iebcq+vu0{<d7oNsK^*w>?5q{zZ8{7|_!r7(pD=%WAw +6RGKg2?|&7Y^?aR=&I7!d!%d3&`QH3npu!8rnh^O*PU1nJ~=N0|0Bn7nxmTzO$rE+PJi*Vn2PhfIrfy +w0L7TJ9nE$db?<_ltXUDdW;4ft=l*EoxXX1w5KcR|((0yc=oer^8)4i`|A(Kq&vN)oClOtAuO}*N4L} +$cWsBD?6>=BT?x>tg}PMZn2gAw8cF>s!G!kTa|Og*E*qV)VpVC+!-Jj2U-K>sr7dUq#g_G8ES8%_1#5 +ncRlexq4c3a;8UTm@FMH8F7)`^TRh3b`)85W+$9)bS9J05LxAG9te~yY<Rx@L;h||~X8c?LEheTwOt& +|;SI(SsYNo+fX2^pug&|t`68etI|BK*ma<P~U5|cmAA@!Y9t?5?l>4K(fVW#oOTSO*{h$%Ck%J+$VvD +28Q-udoO?O#pjBN*^R7BH|+55uLtZo(XuR;07}7z!(#_F#T>Fl$u=7(W(JPC<?!RW2Uo`=3ksI4XCc* +)e|0fwtY7#<WM4dp*h>@FU{Zom!p$V=CPTi*AJBXvWUnDuX~7FsvVxjuZ2~<7r)U_sd^7aL8zq$J*sM +m81C#Uqk@3HhNzn%lD{`LyT-1Xw<aT%9jCfoX?n5%^5(ZF0s+{va!Is2Y6!YD~3C7cPBI)p%H|8qbz3 +PaU*=lrV=g!1%0QV9-uL#Gl+VfQ(HcK2nD?6D@-pdLd%jrP_#+@=pzK@e0dDo1-}DtTmJ6IjN)ng)#b +FT^<(}YZBM?wzW!m?f#Ha45piDZ>h0o$(9N-xy*F}L4NA2o@=;rId9C^EvPQ;5I&k|>U9z6?rU*W^r! +Lrx?!a^4FDXfM0zRJ{OMP4jPbKCZ;<m^vUCKLu`!njeLTw8kT9i}wj>y`7Iz1b_DciURC#~RkW{Uo>; +6|qlkIdTg=yO8}KAQ2(8*^HseQ~tw$2YjwSMBwbslC;0uj~irCv$(dnf^=N@P7eNO9KQH000080P|F{ +P))n>948$B0J&@c03QGV0B~t=FJE?LZe(wAFLiQkY-wUMFLGsbaBpsNWiD`e?LBLA+sKjM^(%06r9`e +NtR(O4=9DN|Tb8rR*_KPvo|AH1BuEZPtU!RlLp1Z@e*5)f-WWjgC6~Jo$J&)dV5X<1r>Cc%<7HWFqRC +|0)J-WSlPKM6i?WWASyg0BEhhZ^V2RD<MP7?9b(YRlGx=nb<jG2u2lDCPpoRK7E!1CGv0A11ia}My{9 +e=wOr35-(ZHxxbW1Pp_(7<xD9fTWEiduw!9iW_&kiE^$X2tm06Y)Gm$}&1(G@+Urre5ON9WP|A{PfdO +gxzvStjOnTI7|2^V8kkho3~U5asK1F7b&Os@-fzP+t{`{rjT+sjjy`fs10ZP3m-(i7~zX0Am&~1fju? +UW<9L5Y~em7)s9Fd0K5@FafYH)=hpd7X17wpTiiLs0H>@&mNL2T`<n$gONmeo6PTFiK@6tzbK@ux`g$ +Z)cdWdkf5`q68vl&efaZ>K+kwnJP1AMHOzA|&r*@o%B^|YvKw$l&a|{id8sHjj$XlNx3_P3{kTt4r&( +Oe$*OK?HCf^?MFrEwZ>qthE+%W3=D`7Q7A&RYuXrWuxA3PZhm%R3Y=Egp2L}i9EU79W_%cgs!E`T&#q +1Zral|~a5KGtyX`a@T$*>aHQa;BIevK!~w5;k0uo{eZS2n_Xy-4Z=-pmFA?*$A4&v9483xP`pQ>ftK5 +D+sX1KvqpmvZoNgt%KMlmd2W9?4ci4OuockjxMg5aMM4N|#Yy)b!Lmv_`-e2Yzdh0KtwLC2N*L8vGzc +spscBlzP<yYoLe)(60x)-78%>9bJ&&wS1FgmFQ?E7nS5hh*;K8`n{AowBW)Bov%UQ5ym;9XYXGAY4Y* +a)!nU2ffgbCHS#!wC+Wgirg@TO0XS`{sJ-=vzolEbv2KA!h1p#M<jvL1?cL<v<-1pxH_-K%9$w%5ba^ +8m-on!pdV2fu<=eN{A1AM0-o1o}r=cOfcJFqQ^5pyIdDKNt?pxt>ptnE6*q+n>##RPEC~)?*NXjzV4@ +dU4b#M<L?@$?z)Lx;0V^l-<VuskQ(@c;YJbM!R;f8<W9)4s4;Rm`tq(xKd#j&Q_YWys^TIEG4Xns+$t +VJ2sYZ1{NWR0SO(L0ykre3QrP~XQd0K#GZ_6!;EmswWqfTl^B!QmFIl5z&8ag@xFLJ24rQJO~uOs0%h +FhIoTaTSEty_UK~l6rzj?sT(oP2Pa4n>eCd&N<9MkB|HasU13fjg$;-?SlirRO)|eML44vlTwQ1%qw~ +wlr+35x6Kxn6VRD}^wA-M+wKpeBws{_-2E_8s*}~RO7pou-rGmjIsuMMw0?wpKaTEzE$d<n7$*6A?ex +XwOW3I1aDYM$+LP+QO(Y7scb|atDaqjD*M^qm&^p4OBA6sYtdq)@a0AnIFzP?19+wlX*4wg}2eb}Ed6 +_lUIyChTJgNPYP-MtK%up9phu6C%tHV4skQ(C~)Pir`T>NnQ;>3)5wTys2Q9^G}gb7gk7a$5i;Z7bzG +!r6^k}YW7pd{5rl)%tPE)W6<E84(p)_ImMNcJVQ>9n?izWe$14o;?Al(-v{=mIUgygs^=Ei|Y#Sr{Nf +MYdpoSz5u4KyY*J6e*w}qVRE1Vh{KNN5_0^6hGVzJAs>lQHnKH!iW19D6tS#>x^G8aVy~APk08a2g6N +_cFlG;8qx09APxi~u3*4=I2aE`pUq%FR&kbHjr8gGvtIrupW2AR0#Se?0$_;6&;{!8oRq+e?ycY`?gv +CJXZG+@!USH2xvJ^6Cg-pybvsbq@Ee|D13YC0t)8}KW;(USEJ-X4YgV=)xw2QnlJ7k8&DeElTPiDgm= +^KXHJX>+_QFQmmL?ueQsDELhj<0TdY6=o>S(SFcid3YtUYuGiDperJgv>u>2wC>|8xqoC3sl@`(r`#< +%L+lHa=R24L;ee1#gMz6ju#;f#lkXvfd-H@Nh?iB97oVkl=Wp_%f@C$U<?K!U=?+KJ4o?Sle)n<_nky +Y)3c}$~_={1_VEwrp1&X!IvfzW5R3>#}A+~M>zsYh5+I&(3VFjk}OEQU`eI6uypuD#gg_s0bG`Fa_x% +pUQ+V%3#cn__~GLkw<9wAOn|rog^2Y`DWMRmq;G6fS02V^1Opo*F(*>0IFb?7&#|)*hj=J2K%k^qhO? +5rVP1;{eH%ChkOmF;CSqqGUZ<XM2qv5qVguSK@CJ9F;b~0tpx`n)GWSrzJ5oaSP|8ks@S;ptXmn}+h8 +h1Ob4%*6;I0IDi2}9K0(%jWCnX7!RRiQT9Y<*m)B^M#L{45Dm=fqGStIA9P-2NCX3Z+vHs!XcKyXG^( +ANM&1#}0xW5nvAJ2lw7WhyE&p*vbHdZ_jx9~{8sb#z9&em4Ejrp#apFO**h42$>%e@+eW;b#X7i-W2K +W^VXvBdXfPL*y`#xnAH&Ch}FiHfUY)dwqQI`v|nE`8|4;$iXLN5ezp29Zr-W!lO+CXm66*I@BJLtP!| +P)B*aIf$`FhrHO!>AdapT^~S7#vqj>af*05C?=IipO<rGKT)$>(`4bCcQmRNW4nB8FUNg-Wq~{0<WHI +-?xqN+fb9r$$xxIUN_w(%~jr8L9WE{OXKE)p|@W&7M<JX@9C$w`YkM%d)Am@XDdBBvY&Jj8D6s>@!Iz +Ki~@Qj45YCi(uRKXL!XPM4xyO}3A&S?`{N};{my_c=s=nb|lip+atJf7Z*O||l#NZ$9JhS~F+oI`eB; +_L~?)^)LH0p^#mbG$c6Qy1(-wPvb(Gm>diuuky!n2VuYoU!Ks4_OVeDR7DW%S<S%L~jQdxEj=Rzc5Fj +4N8BwFC}xpTlts!ni&P&@*h56WEcXBf4DDQ?m+#^dEgJjvg}-~tou5=u+TdE!tHDp4my}GEte|mM82z +%U((?ee6!q!pSSoQnzf#_U`@!tpP=rbU3~gIYy)@*KfP`i&k_OkH-|TA3aGMJOp4FO(a?@t5CWs1aVv +>{zkK51ZiZL*%X?#mG0v?W?x3cuM@DCWv-j;ri`ee?&!U%L_w3-@tklsp=Mc|PRqr!8K|q_zt0k<hQX +qcsA}Kqx{K)1dFxIm67rHJd08sgM<le*R$#9@X)G7;}F@sT@6+2S94fd~#{1DZ+dBYyHtpElAEf&z8q +dJL`O2{&##j8=1S)|n*6jXebnvG;k(DP^rUzEv4$_FBf8YrP`8EuZkb07&p_KgM?SO`NfisIPQL4|b# +R)ISEVIE;_=l8(88&F<wD#}Mjry#!_y0Us?k94(Etd3zVc~WUjGPdXC9b-gD6O+N_J?yT;;9}^VckWl +qd_~i-6pOS3R-a_WoZJY$H9W9_T(|3@$ri}Os#_#&oDwal-<xTlvF=ozA>r%w-gHpo$e<)n8{n;AmWg +TP9RT<t{ToN4sHX-KgJFftj^^0X2OtUPz_B~hF5;ef2mu;24w6E--DSg6`U_erRd@W%*@p_NfyFwqF> +iIfXuu+H!qIZJ*2)Rtk*Jg2eqY3eunLJv_}SEEC>w+yI&tJDhl}v#kILLNP7^SLeZ-$dZ_si?!@MwtI +a|CUDYF!0qO=jB<M=yTSNS|{ElFUbI4&JmF6&;)ZFe8qR`Uex14oM-b<NQbqu06QA2Zk$L?%VRJ387y +@}WZ9+S9ejvc4^RJwqFe#82LAW<XaEd~}wA#g}Dh)IP|V$qu$cR29)ODdXr}vIlX##KQ><Pjj|F!(>x +5Ie7|{;Ib{JGn9#E)2VHr5<z+6(bz_LRen!xT{9X(5yP2pBCw<Iu5_sDXepNYV#{rI+j-KvL-=843Up +1uOqOQ`n|^p~InE~XcPyjiAxSgztb}pZx?x)yC_e%>v1I~)mHmPSpUu$n>}$KVpOLT0piI7wCE&{YEy +=xf6EYZT^dNx(Fbl=pKxB&afgMV6*q8@liURa3t7w0d=UVzza9wOivjOP%+h$^k?r=1iNy*3~ot6`~` +ewx{-X$d-)Wg<GT7nyeY-tDp)28^2XTqbH8HAzSDaA>-%Yo>%oHYC=z7V5kd*qH;x>$fV)By>$$jzIJ +=!er6#{gp<y@+4Lr!mJd5$@A*l5{2YvWR4a#7q+wr-k)d7c8}m?bm@=BJVmQ^wlRAAb#ddmktb?a#U@ +_JYAx7wL$MR@So?OsgMT)@Ma=XKE?#&ZY$^+bjAewqF{-=)@RXor(^hkB-b-THBsbM1EeI@q<!CxymH +_USY7HUX<k=S8BQp1Dl3qG8O9X&Wom8alW_<h!)h>Xt7KPQMZrVMk%SLrhz5C&v%&%!Ly{2XO+EYsxD +BBtE8Xx15|5kMk&^aWvj7@OXrt(N(MfxWi7Cjx<s_+vHza-r-f}6I{lc(9m`|y5laogd`Cbxh_^WC(h +<+7$X14ulPfZJCIk|XSY=^;gh5x`&F2m^x8cHjXsO==dkCEuVjgG^lbU|85(*-(oORcSvQ@5rSB?YQX +ZBGbTB5*Pm8`xE7Mvs-_SZ-eo1xPq>kPjw5zyJ65*B{>-vbQ#~cGn;;S<0{>*(2oA0FIqWp%a!Sp(Iz +u8>k}dLt3Hax=z@}wn%Bz@!{$5cj&qNZiGtk$?<XYTjf{+N}s}a8o@sJDN^;*<;&Lt7f((9<CbzR8O& +2IR6MTFloIt(v!%_eJv!)HNM}tgNRbyPy_0eu)*hY#Gt}ZtNl0zKOPz#ig_02$`zQq}<`w8J4<IlwlA +uJe1@Bf1<5T@qxvMnvK5gX@7lKx_)pS8x1+|yfpvt)N-PxTvYuZERL`QwN-qy}c$kcDy9?14#d<t$_q +1+n5x8&*w4P{B+U`IewL+&I@tLNt~Ij-jsNPqZm5R_m@EGCyXH`h0li?=UtIkYgmy5>}8E8UAH`A8Te +4DdNXlnE>ZYHa7&GKyAIe(bq*#~k}tbLrTnuT9vGg7e#iQdCjVfMb1IAfy!2Cm9+yWQd(^1InH1h(F> +dn4H@ZzW#1%FQ1dorI6~(ERdp_T8HTkdW*ML|B=#xW=<-Dl`7v>7`n7~f0VQ6S8&2%=)SEt4A9o$92y +zcP3su71%EzmjZC<Y9O35hQy{TJCq+69hi!+CS$Se*w|UQz@&+494OOkTa@iF*@F<-IWaFnxyA@|5)D +1GShBgzpq8#E4jn>bAvu4@Hd$YkHoJ9rQo_pP#tQ)(nikJTA)uw35kyx0_Q8(<T+yyoP?R*Co_k+lyE +hku*>W^`Rp$N2vOL3$OQR$G<P#!?xN<ifwqtk@*q%=gUkOUQZlmVGY?pc=DIRxu;wU&L7Z5o?dUn4$g +Jys4tm87AZZpyeO-#ohRf-{{%-+Y3AbP%Ci#stl`J*I)VW}cKCPC-w|?t63fr+1fU(bYnb$lQrT%w4$ +`el`Nehoq0nFO$J79rhOhRe_E7q6XsfG^1UzN6;XKK(#^_2Bl0;dWB?}wwc5-$RBoST%uz-oW>}L(2W +m`V0SejKt@5L*u^ga5$Y1Ak`n>FR@9ifEN8%uH#%!-^oP_t%mq|ntKYXkqAEkNIrK}iyIo^CAnr@a0Y +4O@GmeHVQ9pbLV8<Ae9c&cvHRhw_Bwv5Qj0jX@kSAeD0sT!{X-~~!)pi&$NbE3%U4WS>$wLA5a<xk^2 +O7J=+&DL)YA=yqri1_S)f;-HOjae@sB<;h2gLkbdA_tRhI2~BhG-7!eO(s!B8T&=#3Kq&7apn<VFI4l +A_n(Cy)KI#AiUG20F#(D1_`gN2c*fB#gS%v7fnZKIOR~m;t@g!241AZD;#G-#w9q}p0LUVpTLA@lpv! +QP3gfg;>|@!YEcHS@G@9F#0|j5E_eiz@0@s-*%hC!3h6a#upTWWVv>AMS-F^#M=|;oCCv`|uxp4#z9* +H_ke5hG@I{Zzwr1K9rtj0&Ta9Bvc{pnC7_hhDl}V=Z=%v&G^076`Wja^sW1O4N28WrhaC}mX9%#kkJx +X9sqIH3)$kHbg)6>cHGVto6=pjp2NXw;%#YaIxD2^rkoP4;_&I08mI%XeOdTV!i(4>a)<P*AorODRlT +38(}3K(!QbY;a0M|K=BSxEaR+0>jv<Y!9pLpSb4N<)`ZBi*D~QsN|K)F+gj$iW}h&N-)bS47ETks_56 +lb2!gO3yHR)<JDLC8|uP4sz3}r7+1<K$x6MnV(?OZkqYpV#HeVG$IxwFDO^^f@e=o2sr=lQ#khA#h!_ +I!ZIUT6rw_bw*kEl9nuvkHiRI~g#t%9vd?PzvdJ<BoL<+~Jo-$=zb|bSKaZuZT8KCl@57_QP0vzAMgz +$Xs*v_tR-!u_XWeAAFDy+rAWB*bwP0L6B)>FR=8)}ig_fyKVvbEZwfdx#Itm2GowhF;(5>=XW@g8JYB +sJLOfbzG&}oYD-j7moVHxH*!?@6&Hq&T2m9=IT9>Z&phb0GqVBqN#_|c?}s}IJGM!_v*rJ5LvQO{}Vu +|?RY*2-`T<h=z0;$d)px`1P#wsMnnv>M*Hb&$&~=wbYBFy>yCTqeoD4P85~UDN|44P%NQ&?0Ur)8y(} +?@%&2l+^2YoGiC;ah1|x=7auxrv|)>Adbp}pKv6=*;t*$%0cX4E?<Knv<$~$kdps$9v$n<qgL@Be%NO +CkR|o9C^tt^SkBL)SIug*SNWL~N8nP0uny0vN6V0<iV4tXX`*SR#XuNFpS?nz7a$=L7VkS0I`TyN7Jt +X`PJ;=b;*$<wNrpt;1N+2ue4vUmcBUyE21c=?kaY*R*Pv%p=Ecdsj-%7#lhbI3$eexq?W|c<F~f?Ba` +i3PQH?nH{`B8|J%YhIz;TrY3NBF7<{^rryAtFvg?*^*kZk2na3I&p4OcBm;vrywKs6OOKzKbhODY{J) +acQ@p*~6sb)?j4ov4+bC#~D=VB>Myuctn4Cbj+P@Q>riaGNxE*%q!XZi|e|aZdR)i;h_{JU)KrqGaxx +$$}+a43uVRy^o`hXukA-0i6oHZJd4?$s|3go}j_vr+I`~f?<)FstYeFtRUJb9iN#CGdxIWgXvq8m_^q +E&QEG6k!a0o9q`Dgj|wQ;IO~(d%JdnB`NB=2X%{btGMk@MEI54iM40(HvvTwhtu9CQAZ@p?>qQ+tC6; +mE<JzOLnW@V(QaA1pbV>8-TgJm_^vyTX$@f9~p~F;osVbR@QkOSjP>l6OI&e8C8$(lME?MT46<|a)pq +d%IS?N@q#b#<{X$hsv&yj~P3_)<TV8>{eR^C6tnm{*%HC3F1Br1k~U7=2ZIM9S%`C9t!*i=H3Tt}U&% +H$f6Z82}a@Uq<Z_(3%X{j7MPa@M(Z%?b_^o70SHgTZRptGryq)Pa^`L-Yfv1Nr}ujS}K8FAvU~7?mvP +pU5|~*DGJIL}sMKpVZ0$Rb5cwYH_=lXWijCC!qROTNC8VHs}xwrh4`V`jj?!{saWu&Y+-Rbg?&*;72O +n<4vkX18%p8JoJXj;J?VKaRfZ}%{Tf+r~6%pT=+x!fMxEvt_=)%5T=o;41vvGPN!qFF%oM#mpm8+CKW +JMXQ<6=7pgSc3}J4xl(vdo@vxGCVCl_qiZylBDMq>zO!;zcn(4G%a#o_}B18^TK~-W|P3yL%uP)?*ej +on)qP@b8m1@NxjW)1J{G^GHA@fXCD4)hZJb9qlVI5r{c3^-yROY3kOdmPe3s8|cHbK5dRrIBkYK%#(s +=<^w3hOlBhhT>u+tv0J*6~<u>?)O1=vcb?qN;UNtKsSxT=H1TL@D>Bs(vh0shj&+RzjAt(#;1<6_NbQ +eHCCfw}G=O^_$k61K5aH<5{4Bo-|T<VsjaIXIZkWJdp(I%a2!8hV5?FZA&QSmPwPfw2iJ>3#ZelH6>T +c)>Db+MRA{sUlJ2vPQfyHGWyRV=?KDmTTmy_cNb`QY&P|jbnsCSR$JSS?MHp&kNd{$!A(J;Cs5QpVhj +Jyx`<$D!&8P)<qz&?i<qw9Qa9aL$LbTkSg!p^-P|i;$VsJ~?0&JIS8iZA;~xe2G=SWyM_aIGVGd!?Ao +3P#K28xfu&!kc(h;{X1N01#Yg2{P<v7I7gU4sgtsk4Q#C_B^X9v&L0W-LhKG-92^T}H++LtQ8cQ!mi` +SgRNEE-T4?Rmr2otNnr&ULrF6;uh{C)4t_*~_4;MW;c+Bey8X7ZtUdQULRD*Q&<%krnW7xltE{w2QXv +5)X2={k2I;yqW@pCf-6KZy@pf7QV1_nU{+~>OzY6**|hXv^gA284d55TU&~cu-yo=fsccvI__c4*{3r +D;xi0}e}sVOMwVS2Hca{wmoQhlQt4b?EX3je434i#I=+o|891YL<l-Z6e8Kx>wufm{R9K>H^re}U*03 +mamXa@CUHh`bvXiRWP=HJ&nwQCr%Y^VUS`9|lt8menV{G*odxbX2c3>xiHe0Y-#6%TH>%uR$01<Bp#E +|YGRzsyLbdcdq#il$sVWf3=v(=e<;T50K?$_Bye5G-_NYSd+?(`YSK#TfH)~MzAm(G8DY{^U63V+F5; +@RLgAOucEpN>r$a66g5RYHzg{RjoRe*ff@{%5M<L)C%dvQlP?4sC)_Gy^V=1H%XW#w_d=qk7&yM9*I6 +H7rdg7uvX|TI!jQtmPMJ^o5dC2TlD+l`O?XN6{_Xg)$qhA?bHmhqGXwj!51W6$gqhZr;9$WXM$HCW!) +Jg(%s17XY2kILqJqE#3KY89{iyNYh8g^q(BznEiC25!-m4w}Ab<i2jo({iI34@j;$?nCS0(fc=oZni2 +n*bJsSbjkJ5lYw7-k9F!-goAjocBzbR^NhrzW|I<nSDX!YyBnO=ydn0xwrh(L!5=fT}B7ssgNcieJUT +l>@%f7e<wZyDgrE}*fHl}r`SXyP1`gigN%My%LL8*zV3OZm~u+J+xY~8(brn(&>7@0*I`^H8H{inIKc +|KkLc0piPbPJj(B@3#Hs8R-}d8I1$*dxboxf~QntImzC2My?jtx4;zPfZI^7uL-9#$;J)ZdjM}Ijr?F +7s%P&AIZiG{Nn_}j`m%7c|A#*etSRRhUa&+qzg+7->EbO(m(0WN7sA6-RNQ-<xSaa!~%25{fuABR}go +(3%W4tx-HzyJfx2YD~(&HOv@rupBYU0zV*gED;@2yr5fNzUEk@&T!SMLm`6e^USRe-oY51Ux<sWn6vI +tg(cV7Mj-O{(OL8H-=Ex@>_8<0ksyIjbRED;$YzqL=Wkx!V2q6E+kOAH|n{>6VzfqttSs(xe)cFe40< +J*FFwcg>dA{Ez`*uEnzes*LRSz*c(w6?%lcdx`YAjVo{!)i9XiW0(`Ahki{7l_`h1F$G-XKr2@vNy)B +~cpMn~dTu7JOGJM#fc6H)?i-<{{#F7@l`{L!p0!FvNfS1bYwqwxdU_j~v;zGQ@vl<tveYaPU+q{PjXr +E1xTrS-p4U+{p6?(fax3EobuVq>fb;4c;6|+Fn{&8kXvPwY2Xg<<92TR;QD`ZwfU-ORcd^JCiQJsimB +h?%k!;9{^W(7W$VnqX)`v5CZ~rQSN*EgI>!|M<<`-)(v7k-Z975*t!5vUM>n+Tl?zzSwnXZokyRH6N4 +@~pe?9k^fEIgaN%b=3<?aKbG0{u2&7}$_PTbZ{3Q<*X0wo(4F>TqMVb#8*HQGG`+hq941ZGBR!^M57m +dWHlQW=bpUnT#2?^7D2u3FaLqgrKT^AmX=(^qAUf~|xI;J|Y#gGPcR9AlQ_6w8o;J*M+O9KQH000080 +P|F{Pyhe`00IC20000004D$d0B~t=FJE?LZe(wAFLiQkY-wUMFJo_RbaH88FJE72ZfSI1UoLQY0{~D< +0|XQR000O8^Hj4?Dud}2wE+MCy#oLMF#rGnaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OUtw@?Wo~C +_Ze?F(Zgy#MZ*DGddBu}KYuqpph420qgD%~`VnZ&0Kn@FWLJr*oXWJf1F^V*6i^>`yjh*hluVi)`XB& +F0Zyt}nd3tXwgeZ2si7=2JErJg;8I9>3rHjA>8W|M>_Xr#Bp>~~d2<Rpg$PMVYEJT77X7CgkC>BMbaS +tZ8(tDiSR~Od>q$ePc!R1eul(fqRppffnzFw9;fVELN{X)M^&@{clJUfEf&pK0UIssvH&bSVYo2z>hB +14A`gJeSvj-0ZXF}u_fQIXTjp2T1?BtK+8NJjL|B;ob|k&U$(El->^yo?NnXIgf2R6SUXNeD&`MzNW2 +4UvxgOgYd9v8T~$_ldzF>TJ2{QT>E{b|kr*aS;)EW*@JsN?96p*%5UXOGQKV$C*l#idE#KM+RM;w4Yo +$i(qMfI+2nqkEwnao2RFGd;hSl+vdx5_wczEKj7vDgg<ak?(#~!<?>gO@1p*Iludh^bvC-}kXJKc7X4 +f|U+boQe!Sa#+cdRU!|@syWx8gH{MB&361O;^C7-vk5{sQV-=_Z{?S9T_@$39UU^`4hT&(pi`hZF@>h +dhUJ82^pzX4E70|XQR000O8^Hj4?;8v_VW()uT8Y=(*C;$KeaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa +%o~OVQ_F|Zf9w3WiD`ewOVa++qe<_&R>Blb7Sd7rjyGzPjww%;^aI{E^e&MO{cw~AQF;rCJ7!v%2qq= +Z|^SN2#}Ow_gc*)rohEwU!HvdpvhzsEq7d!LS${uNL7nH&zK~XR6^vWpe5b1nlwAwkXFKr_d;xe@T#i +Fb-CpwJCo7s%jXa8Sd;F^9jo^|W#o^$rm5uR#YLKnHjB4vQk;t7f>sq%^DZ)x%8TmI>_mCd*7*h*e7{ +QKD7t>6MFoqr5*EL_j3NS`O)Uyi@hVRCtjt6m!<?M2UlU$bqHf47$oo-?dy*ccD4UwEV<(B_06J-v44 +XOOGI3Oiq-C}ik6IeO8GSjOU8>jkc`;z9E$BwiByonjy1gN5w&P_6wq``8tYp%$LTi%6fZuecC|E9;z +pQ5oy&@%2r1z{j&)J^kPg~1l0?VkkH4Nk1xMsh#Og7WA_t(p_IXSb=_S}31bCx?+GeY6tD(3}nXv0M* +pN);bM;09yFK*RP@|RXL6wF^{iQ+5)H>43t9cNN$un1IyHvr`WDMbUCM@Y5?1xUIRNU;$$If%9<AVAJ +jC1*@J@ta-E7!j40AE{f(%WY&4D9T}20BT>w<gcP7DJ{_r<TA~vl$Wc%7gywgH#;YH+-bm-S5hIHbGF +&AwBdUIYl%^LAStiYwvY`iQ*^N;xhS{zS81X`2N)>cFa=abUY;M~=(|up3g)Q`nma-NZ6n6R!iua9gq +3uig8>YzfEBR5)6azFQji_p_q>i?sKMqnPt^cUc`g#na)1cLxySt+xS#vn5f8Ycl7oV29v~Jr=*8a<I ++)MO&f>^!DU=b+5_7-@kuCaO5LvO5Zw?Aw8<7Ju)E$hfEWKKRu<?Nw`D$fzm5R!8pX_PP!Bk9k;fbI3 +SJ%mxyX)lc)0;nEFYl5cm&@A^H$RX|a@N!>JBy;%F}c|we}zAVHnQr#Mc(D?kptuC$tK*G85dxhx#Dd +7u5tjtD5G^2S>FdPM+}L!AqsY)-0*E%E5j2A1!WyT4d}~jQ5LLhh|@ccCQxA_m5Y;P(>7qzB(VvXuBF +J^h9&xYWQMu0Pr2A`G0@D{2U?f#Rcd~5T+#F%B$Tn_k8vUP@T4INZ))lCI*k1)cp2Gg>@j5~mJP*Jxd ++{FUDu+XyRSd%74^VJ`uLeO^}(aLtwkeJk$Xc+UNA70H*$CP!F-!J8B7Yb0({nAKQb_MCOaZofs{@Wl +<2b=vovkP^SIG#S~?>_KvJXR-E#27ytZRrF*B}=BA~kLim3sYqk|{z*;u9MNE?^js9~kH=3oh+hWsQ- +7DW*_7rq!5$6MBXfJdk{Nm9}RPy)t^6dJp_cbn4&(r;nhGWA?!3U3AU$LA?|rq0hN=h)&Gy2eaFRO8< +_qAZz8Ij&X0@-V0d#PkP#g@NGEfKmOIU#~~YSjKBuDF+{xvSBnMVq+46$?b#{E$GQIRiq&b=DPGrNM! +3@VJ_w}$2Q2#l0eUwLQ@2jAyAMR%HYWlIi$tV)?vTG(x}LOU!#W{eu8|wMztWmd7hJ+ax6yWuwDjUTt +N%gWz}!}qN&O}-BX@p4vIY@n^T*H6_v7wPJl26v>M5;bF|H-1+jEt@Y1+!E1j+6(X}YCVJ`VUR5dPyY +9~OuS1(Dywsd`Hm>ijA0)IH~^>=z+a~RA+)mm-4wlw0g%*jwF1cTgQB+%;9?egZ+Pj|)(Kd^&P{h$B_ +DFqbHdmb^(f$e!1I>AVway&j{Yy)YYm%K@msS{4Jd^7L*OTaFx<pQ%nH;U<rv;OFw<~##PCn>8NzQMp +@izSrEj>G~gu^hVBUM~*qI)cIyhviu7cO+Q^luFs7NF%Dxf>Ey&#*=`-tm_YKF^lmbTxR07HqwN+TXU +?{bjihLhH%XZBnsQ8_1c`#q~c{B)@Nm--FAjG%z;dS5gv1K!O9EFK(e{0*#=Ssw5AvRZP%_T@^~^2_# +R8}9hGOeFd@edZwh7>Ub6sw@feVx_>2vQ6Z`OjN&TTHoY4{5CnyN2;KpyS-(7wAu=HaEAi`=RyoXnq+ +Sa9F7*IcYnnI;bnnT6(6R2W_*1;b1v*z>;+H%#**6iG7*aPhG8xTNsZ>}fm%b;d<LV)%H68o{})=4G^ +&+f}wWQSgaKPMa1OvAO80Zj9=FkO$ea<aVnc>U?ivLpQVTboyt`v;pL`fGyUlp7OhNUVpa=I`8z;K9- +LNcN+*2#F=tNYKw_7o?cQZtxEa@-leSKuOHQ6lDuS2ftYTKg>^o#qFn}hg{HXfgTvX)lOUVeb@Jq`HO +h|=f8$zRH+Rcm=eP%TPWZR$@=D5jK>+;qfa_ymVrpH6J?9eXKqtra4|K1XT#Z}<>hF;2<LYR#&o>SFK +>-Z*D%g9mZ>^|6_<^b9e=xE1KUGapZQIxM1vfCj4hP9Nh1WwX}x6=tVysfp0e5HK>g>{J^XaF&o&iqr +MX|DprA~~8JM<2S_V+yDojhSUKVR5D>OX)>fmfK9G;C>G}x0(PZ{&AcqlO}PMLBE3aaxKhr%b=G}tK` +uVP#R6DmcyV82gpy9Wf>KA`PSBkcK&jmtJiy=&b#^zy_`ww`_c-D%Gb;_9f{u#bMzh2v?Z?VkIj9ZfL +lPU3%U#7r>VAKHzAPOq2b8$i%EwonpwOnYp#5-;!T4Cm!ZQ_32V1f-!%c69D)s;gzga@dpL1^E%OFtn +N$`hOaf;v^S(Gutn6fk?5grM)TBE(jpd2CqXeydZCOEWKB|YqyZ)-w)d36~)zFbZR0>C)KkfS>@PXVh +E!;JeK#w3vDA|Pu)V3upqBrz8=!!$L!n|Wb*!cIf(`|gBGN7Q?D0|d70J>Hzwl=zFW;DEG_0D5PD7$y +dF}ua+J?(80I?m0(*`Nt-$bPH#t>*ue&^(VcQ$%J2bhKQ09zP37}HJ>@W?c4HwA8HqO|(-A*T;jU2eW +`$m%U?=dkrtM`Io$jOnw1l<+l8Rzur)7=Im9<=oS=U7wNmtmY@yx+u+X(o>`4s+GX)fe_*oXl<y%-?a +M@my#>K~B_p2tfJ(+vuHWbDdT6^#C3%x|r#XXLeL-d?a)O`#td28p3BfNRrwphz+1Uze3u{td}ND92< +sH8?9qWW!_)7*RY&Q56{d3A;JQfV|H@bo{b5hqv%xZJPEGHpgM|9wHF<SXK%kVB={;kp8(CT!tyvIXT +hfRNU~A~22bb~T#oDrd#!=LN!HiiRV}jax?no%mul!_vsRyqzrVT$5MmdBXUrQs9U`nuMTTjQwv8wtL +8Y*DJj}_uZB*CP<AyyHfKu%BRh65q-4h4Yc*q3kO&rl8R4q0>#bBFG4E4FCp3K5T584hHLKQZOOor7c +WBK@ke;Y3Li+_edOSxh76Xmw#zTlm`erERCQypAePo7Du%-kcE(BQM?3@;$=&5h>+p7xh#Xmr)Lina! +j?DZvcx@*gOmJ!$-)7Xc_hzejSL*BELCBe)ym>0_`=b+@g-%i;{u?EA`F%RjEn15)qU$CK?PhwR!9d{ +1`qUL~an)_Y2e+4(~0rdv&Lo;&)lrdul*aAI>`hJdfEn3(zSHKQ0NfFG(BVgGcFK`~u*?G>vD?;7ggg +{s6i;MUNyg#`4G!3;jY<ou@h1@R2tdqctkkV$rQCo(jy3+J0^<V-P=<V*ly5}$n?YNo$8^!-`>I@LF7 +>qnaf0eRFkFa!-wg*|kwT8R;mE_0)=%D7Kf$?M&arPF^>HUkrGnJ=ln>TTo_3?%Pe`{jT)8=-)+2GK` +P{avd57=uGwIT$DdztFHQ~&)ip`N%Uv7ZxL?kxm;n^U(aG!P9o+|U^vIiIT89*-Dw+^Ta}qJmjjq&oz +$N*p<<`ucrF=lT)nSnlCDaQLzZ8GBN#kup559$bZa4t3P3S3BAx>N^blB|yTVK^&~nH9OW`3;#l77IY +D|^RpmO+j@I0j`vXh_p!a-SAa1YKd&+_^^XJ`XhzSnQn4-Z4%W!2PVk^B4o@Ml`>$wCp#jAjJpziS0b +-a3-4#>xf?VYs3b1Z+rT#_6@HZO>+k%3B;2){lb<R`udq0l%OdFcQrX=!zxCnk7GKqbPXzX{6U!UfFE +(wFU4b7jhW{)l!w3<g}hGfHuNwF{F6K5;h=s!?P0|XQR000O8^Hj4?1B<fFp#=Z{Ko9@`CjbBdaA|Na +Uv_0~WN&gWb#iQMX<{=kV{dMBa%o~OZggyIaBpvHE^v9xSKn{jHV}UIU%{yeAa|-_uj`8eV=yu=4VtD +!;-C*sAkfm;W-W;tNk#33{_i`I`axMv3+!Q-Uo4TwyN}=9eWX0k8{Mp~-xFG@J>-hTRIz+V3eMAj#5` +AmZAt|R*?c7+*dc}lgj9m&qtTU=C6E`>NkAmPjO>*vX6NTIPaxcJzDpsDd3Ii$mm*Es=Jh$#3*>nMin +8=KmdvM<k%tJjf@dU(wxucsL=j<G!G$7pBYBF!Bl|wGb}8TOG{o9y2kII}K-k$_rCBqjpX)_o*bKg1t +v=pe@H~fDF`j?KjW#9)jSqAOGL-B~nDHlk(p!q+lp!_GI2esah=|NPAbu3(G{b$2aV}1<fe9kLjPl +F`kVG{xl={|0*j|$S|@bG$(^B@tiziD)c|!YKxj>oweGjNn`8NJji&DJ`t{`w<hb+1h&XO%bAKIUqZS +KNGU-Cq^JTD6nzKeB^5h~e=iS}eyZWRkoB)NCk$Z|tdj(}y}!LC2nWGqr3i$Lk5p-sLU4s(ZGq`MhOH +xwK%3}QpBVb7WP?iZ4c(+)39~+b|L}fsb@T9`XEpU?%SA?2=c=e0M+K&%;v&%|W<akAPi{n(1txQtI$ +iDQb{w{Z9rMz8K)bNvW8N^+pBA(-8=V^@z0F4j6_|WG6UriG%J&`~ynsxPVj#y9xtKf4)|1DuEc6bJY +@KMe<@B*{fo#o@GN&|hs3KifrZ$|szaSq$XtFK2rbhRea=E7musN0xV^iDtt};Wi(zU?j11QH^R!T)S +Kn_qS!VAbrwPz_10e_-!=tdBjLK_m2un#*gv#5(8$<K2#Z7r}z!vr?v&TofIzV8%LpykA1H%;j_P|ib +gmRM<%sBLHROnO1j#i`gQEcRTg6T?k&wKL;U`?v?H#TJwCx7U@RHzVFVfa296Wl!LJYt50Q$S%?Cy+F +rYu)mB_c#e@Q9IL9TUOA!yUKd?&2ThK2%GdjtcRM0l6YaZxa?rmZcaSF}haFeU>Qx3(qQD++aNQw))S +yf%kY{pcBs`1-AhbviM>osM538%iY8ky>-rX%Om;R8`x}_XShgIO++LCH8%yht@c^mgw2<!6mz02jw3 +;Ky8H#~<E3w6!U?Q%RBH0@Xy;P(vniB3YoV&&tTwyWLv<7Y5iFGMP;N`u+L)~oH9eMZ70&%f`Zzj2G^ +`zsQvsEN4_!|>5-LnZ!nG8y+$e+&BjG)*sH3j*>O-?%*iOxGigygmgKiK%Wi)B17Br8x~8Z`MtXf^R- +!DH6W|Qc*mX(dz-*!EtSrqepbOEs$uPseXN$qe$*~nI?6Bgj7uJ@#Kp4G)*Dj!Juk&=Ie5eo@iQ{L|g +vWPJ2BziX9Md{QTkuS7V^hC8-a#VVGI3)Y+EE_3RCHOw%%6-{84$a{Xr3DL%Rx8sTB7LG}F!%8>r$ml +(xaE5RU`cb~(T!k*?>C8A$xv$~~yhoj&WZ{wchp`sjJf{xQ;vwG2_4;!>rAowGtJDn>dDtPqCT2n6GF +0QYaH<!<7%7C5|!eVSPxof<;lC`*By<Og{t}dQctpVirpbp&gJ!p>S<2{`K^kZplApbAL@xKwh)5`mA +MR2^Hp$<Cbi>=jRBtOl`FO$ijhaC%S<X<P#VG|!Wo>vQ(fX}ws>J-dKB{*JX+G{XMNps)z#^3E_?~_? +68^?CD4cB$oo?_c+&%Vx{;IO+z5JZa?cqaGYA`^fgfVruQ?(&Isr1iY(81sG7zGav?o^<cM%hZM^U+1 +O<j~nA?6e9};a{k&KN|->n^OYzaOXL%TilqL+Gk2kG+PN5GVw>CBNiB7*cHag)>t6Ou*E-j|W3GPmku +qS<;mmMlIBHuoXqX7v{Re|BJ96_6P)h>@6aWAK2mtd`vrrF|Q4$Cg001~Z001Ze003}la4%nWWo~3|a +xZmqY;0*_GcRLrZgg^KVlQxcZ*XO9b8~DiaCzlBYjfMkk>B|%rs&!-=%rxE-fZnDVJcdQidm5*ohYxf +ak)Sc7?OxU3^D*jb5ptBe%(C}3_y^Q_wGX;+;xe-^z`(5x_gHGe!n-JUa?J5uGsW?5*!s(o(oyBg^=u +aTdqXL-uUcNq^a1ja>WbIlB_6Y6_ts|3YIL`R#a>wsx<DU$pdGlV2@lTi!DRU5tn7MNTRUh0Gv5EuSL +m+h?2#85msr*(qt|}nE+rcdap83zJf0<1{SS&^pIrB-_oKP=P@n^Kw%swNKlvpDe{4c2-75nNxcRMFi +#ddUHHA;{VFL4M?q99h(|!q@-TV`mqc$-hH1*<(_Zft%eOZ<&yXn(FqN=2iS6Wj|JXks06-+Sc`24M% +vW3Ht&=QSS8I0SzxBTxvV|0DKp_A{QKSf-#93H_z44DVkc(!}>%9{j4gww4lR;qc1;_?Ly1+xWStZfR +9mX|=tPnVoa<<{U3N#2j0n3tu=o87KGTpKjmpIH|BCB$?3LjAtlBZ#rJaPb7@J%fk$^TZt%owEjGbkb +oGb1Y$<yr}*Dbz@;*I|Z|Wbnz8+|H=^Y6uWX2PJ`S!PFi}`yG}rgvHaece<#u=ydi!l}y2k-ujWqN}0 +@ki`!4KzXGR0l9eLRP%|ZOGznvuk%)P3&cXUQnb@2!!D!bZF2&y6-`^7Jp#8#UWIxFI9ONi6bPN`<*{ +n!P9#ust*2yn?HtVfLT%};@;89`8!feX~h(@w9S#wse1*3VMB6ncNYT<%a1ui_B8H#5^?PRd_sg`9ax +2N<4KgpWhcdr~Q;8#h?8_+!dCE|I>CbY&_N+Iio^ROs-y=#aPTWt|&X{W&asimHUg>qaW*Pykn3L8U^ +Nz9TGtOl&X1R#h;z0HbeWJbo`n383|Ldk3I1S>pKHiE)J(P%g@bTIu@s2n^Opcyb`RwOYP`eFfGGO++ +3D8hM)Q^B`i-(O98V5_<0MS+TNVixlXaGBZp-Q@ikR9S*I%z^=|KG8ui%u0+rAksy$tR!zmw}O__3<5 +JzlA|3I6&Or0G;-?|yrhX%>m53}7+;=!xVjI3;^2I8`)+&}Tur9;vl)avnE*Q+$nt#_6j^f0R%MwNr> +|f0%-<vrNzUUW^o3l$#;4a)E+M`I*WsE6lPuO2NV6k}HmX>C3Jr-R01-u%Ov-J*zvQV%%0aIWn+!Qx5 +G<+^#1aI?Ov8C0(yHWvdhYe~dmU(f_}ANsiDvSb-yHwf?x?>Ce_4m6KL?UA3i>9v=vn$bnxY;F^sDFN +@^NW{FgUNnQm<#7aTl38=|g7CVEm;7q$u%y?)9P*oPn7yb=YZ$=l3JnOiuh`nj59ym!0#yF)at*25m1 +^k|+dlT^fopT8XM0GLD3y_@*>YbgBu7Fu*@<!J;QON*u_*E$kx@=+;L?&Lb4osr9N_TFnK61?*U2j<K +jqGKaCgC9Dn#HiCpB<Mm>`Z+0_MFCs2{2=pB1xW<BC0yAJOG!;t-&`a}(k+p@^;3$$W7HV7c44947Ws +-u#g8)JqIL3&5>URX-{*d+gmr}xB7$5@s{&TPQ0%IkFx=pw(DEle=-n+ADfNw|aURE4o-iNtjT+hTnb +!#&kjCkPo5I4XCBt(Le%Ol93V5{?cfpHWF69r{`BldTaBogo6-rd~aoZnmp5IRp?*TsL2Z{7y)$M^4U +E`~G%y~myKc+#9guk4I}fV>wNz##-l59Wdx>}<sTwm+cV!+<!b0F)p!vc9(R9cDf?NTMm9fx$K(2G1d +i6!9kqY0@xXN0pw`rmKnTY0BO_gR(cjhO#%^l)bT(^@5^|!R!JsX$K)z3C5NX?fLlbKDfTQ9yg8Rr}5 +q7@@E<tHeqjW?<Y6cXIGu@x8w0$3;u5W-ybG-<BPrU1paN;=;hhuDwtdX6$BU{KD1EF53r`0w4A|aT6 +*5&kUb2jqIwvzM~v5drQt&=ur9p80A1ENC*?&V!+Z&LRt^=%pD2^0n2hyX@bPYPKMsDpx;g*Tbn=%mt +bFqQ+aJE`^@L280eWdrM+9<O{pbJyo^!}EAj%jRB+IW~gBBs`!Jv+P{*sqh@Rdt12r|qb0wB8w`3~z$ +A(cJ#-;3;lZ;v3{K&fJa5fuzJ939by8)H6Z3R1tXlHI_Rb%CmKcospy7(l>+9JP)~4Q4D}!-xfIad;5 +67NC(`6U~9~$uzkA`Q~<fjoQ>9xjDHDLW!~~>RVZU$e{LJI|9WlcD`l09O|lhj39T#)MW~XM0FUx7RQ +ba?iJht$d-UEA+vu%h6+Rp@sQPMQ9_c6e}6(Z#1=%k0vEH^@Uk$)?@<cXxGBLE9;}wJl7nIeF#3e&ek +H}GU^6FWnPIa868kMxFPSK7XtO$O(;V`b82cGu{}3r=ZfZ9go%koS-_qRhF-%fS^bty=F%%LeLLbOKe +Qwe}o1fT(uuz5pM1o_}{!kCW_5d#fJ3D}A7Eo>pnF%IV158KpOPx!~Fo6ot5rAihi079sbuUfHwoZyd +wH|cIho-DrJ5W{lFt3T_UT#^H1Cp4EKfxZU;eyq6#y4F0HM|ZGFPu)!v48R%ZHeJrfDW-_ZRFAzv<>V +$$#4y-{5cD#{80E%Sjimf7!(2pYAhc)RD%NRR{>a!Zv0v~W{*(|8g={`(Gn2V3nO}=>u*OjI0#B1D*g +{Du#$MT{GSv*iL_h#$`|9TpxwgmmmWU0{1D;^h^&N4pT*ZxtWDXpqD=lQh1@iwwiLYvZ%wHUsQOKEja +rN`3c?Gu`<I~MP{z8!xK&!=YzZiAb*~lVE7_mBMvzMoO~hSVLVT#Q1p7sRU#i9fM2roLVCU*6<~SDD> +OPyEPbNSXR7O7g$ZhwMpdpYTCPHD*2~;-rMQ}HyCW&hIU{gd`y5C~gj`|!1VWdQdUk!ziNyt9jUmpFy +JY-ynU4_pA_`2PGP=LWDP&%dc&$4)${KBb;Sk|3Igeq!$11+x!MK*?t#2y9)s5y68ixu4)?B$e|%*ar +oHd=yRrAB&&KZQrBr&wW+2(c9pNuFc3$Jhydp>zY*3Di2SExGoDpC1Ldzy|xaE0OXd1ZyYF;EGzB4ZY +t=fd=QZ2?!Ht2H&nqi%qGU*nL^Dzg7ikE?i)%6g!e^hD7;_sM#s15qo0P6p6`BEh0$o;t0(XNjH7P@K +GeO-i5&aAkMG-PNq~}Imvy<AR!x&CXT4~sU_C!5z;h(gdnv@zTp1xsp`M-A&gXgzyG-jsN)XO=7S@FO +Jc6(skwt)Sp1OsM)c=X$}<DZPCs{oYl~1&T4Y{7ETSZVg5_K0NK&b{*D-rPkZv9jKqMshCl}Xet?s3R +h}r}?uwMw&ZGruw$?fC!xGiH}kkSJws-<djBR-~<mc9wp{nI{57D;j9v04IOswK3fb`02Hq4C|Y?odh +`rT|)O3ttB@$oLil`#|2?Av<=I<S52hzU=j@a&h!SU#-}nkD@j1`UM2uAWTb2^1YmM*!m&Bv?BH&$z8 ++D?JCrru_0RVV}ij$pAxV_#dCPJ0bRR5D<`_e78cHkbXe;;^uR9fx`HorUIIRLb~`D^%CR48wPGq?%L +MG9un)Ni`;NS5!4b32ehb$0#UazIC%sS}4F8urT0vl?R=4Wp=TaSIAaz3qDT9e`bZQkwQWPX02btuMa +bjoLc3<?FK`rMc=7T8UTru9_+u_7*R(h@e=g{Gk@(P<T!ER-G+Y3m7NEg$yYi83ypPdyC&EN^Jsi318 +2z_2szAQAdMOdJIAhKluA#xOpZL$w`Pc&4qK~&YrtG_23rM$@R&J+edHMHE541%^<?zJc{MTKWnwe+t +A*eO_*U2ABZ1ckuYdAX&|zTbAvPoLd|>b#4Vyr|Sk54UR%EkIYVcG#Tmfc%kXT!ty~cfZZKi-vY|igW +7i0JD~cot~Mkg}jFfm<0-;KEL~0MQI<NTNnq_)`Kc9sx^1eWrD0iC1ha!Iti{tlZvIk31tQ<ZzZBNC7 +3{AB&?vGl-wc3J^j<$B2;1-9;CE#QqxqRt#P5Uc4e~%GDzn<uZ1pDCq?f1x|}4-$6`SB#F6xGpde~Yc +T_Uyu#sI4(_=Q%#Iv#6Gqv$3Qk(f>1pcJ9p<Cl(=+HQ%GD*~I6k=(EP-|=x1W=Qdv>BM}o|Z4v>1}B6 +==r{WoQ82qSv9-3o~lr7snFRTGud9K!UVXBld29?(x}nt4B5Bg5)@j3tt}+vQj!kyRER`vLjk@)rK|L +{na>-10_Y)gaZmi!=^~zh*CK;006kaV9UzprBi6d0eA*}k^G*iUq0}s^{id1a8oqtIt7DV=lU2Ca2a! +R7)yzyVOsgFp&zN&>w=^1J;Gtlrn(-9rN^o=)=q{9z3~H24&Vc0E6ybACm<pq@=MXo!W!l1kMi9PALI +w>24-zsl7OE)GJBO1_;Hi>2i~0!r1Elfl^vF}EGj%EfyVsF9j7TW-YzSVuH&W`R43vo(Cj&kr?7AGmy +CtX0p4tSES%M)1G3=0@YJtNm@Cba6$}X_drCk#Wk5JCTrIK4D(i9ee5eR|#Hs5xX9|7cBNg3eTXSx_- +{iSId>LaZo9r~hp0vRrsJPx>66eH~NImrfHOQ|R0re`0TK>DC;q|vtqJC;Jwj@QkJO>x1L<JNeT3aqS +cYt8VFb235P4|bANhhSd=+Pvai<k+{QyEGK6O`!091FTgt;_5<%6*Pnlpe<175>d3*#5A~rmEW`DW~$ +!>bTncoyNDFe9kXe`u!6)%9zALccooVe*xRdD4;%dE5V%u^!7dV_cAC2P30WIWyP|0vQEiKJ$Q#GzaF +#chG5mBI2l@l|aS1kpn&IeVh@E99Re>1L%=qTA-%;pk{m%Q%?XsB*TVQHLIVZ**Mj1D7b@22TF2x<K( +owA$jvS#;t+J}hSZp%z>{0Vb>TY~Kp8Pbv2&V5o++W;$y#D`S=@9uJVgI<}VcbnTMrZ0>Z$gM27)>R> +dXBpc8@>a~=_7b=(4`F$uz~2`)1{d(#ybvD-6+Db7&{pK!E?BCytmsJ-FoM0ir3umhD~_{d3{{0z_nO +dVFpl|3nd3cwa;u7S9p2{P|9xl#1>a~0KSoZ_6>7u{T*gZIt6~#^i?_*`Fe+S1=Dg^h4Ej)YmfikeD> +K4{l|Fh9&7xka$D<=MJ+4kk^1RyKH<zV@J?2SZMy)<$RrK$dZtE<fxyA4?!{sz)?{JF@7p9eHjE2-gt +w`tZUg&>XZRf!w%5w&(EnGP*{-P#c3|*+VUkt+De|8PSM^d|LBr8CRBvh8t&dWaVH(icnVWzrH93R7W +7t@3O~#L&s<OAX3G9%I2tGMzPu(@XWgT}bnl0?6EZw;yqQv3a1i4nq`hs0f{``K7wuMK=?oBLiF6b4u +O9(Hq5LLx|(n{c6le8hVra)z^&&!y9$4;K%53RDm-fL(WM7PhF^w|a77h(1};(=X%Z-Q^70d9lsPHYu +uOPnWJD7WZx>k(Brj+pdWY}f8(o2I6%>cm*>&p5j?i}+#>do{E}L+6C%nXw;N>%6gcYy5I@HNOA(b{w +2duOUBhnz|0ozc<@mx-H*7WuE8t@!Gz~u*uL@^L=w705IObKffLf@xM+SXK6_@Pdkngh?aWVKWfeBKK +G$|vaJFsN&%I+xud35aQ6aL?YA&?8OgT|BT*fLU+FT9GV#}#D&FUFuCP9Nk=BxJkZHqSLk*3cv_+Bp! +be9Z&k;dO>JAxQNQWx8sE!5@PFz0chOWJEJL<Y?+h`T}4r~pgn@a6#TRVLv`a5CanuWHbq^6p#Pko#+ +n`tbw8B=(CH5GF39HKD>XTnEQWtbJI`RM_6%1SO5VZ=?(eCPJTY*y20S0H@U%}rDM;gNeg_vx0Cae%g +F&3iog*}2DQ20yo~Au7MLZgU!;HgFDF(}dotcKSy2Q=Piw+-M*DK^<C^Tg#b7bIAM6QW}MRqHK`MPDD +dSUCSNAuW7E2h8luEqz1}UIQ9{)E^r3u7kh}`dsFmNy&iQ~9ZUm#MDPdaWt-FX%KNxA{3v*D?<LevH2 +w3C8A{M7(LI|9d!T>WVxS;xS?%bpxpL=>7FPAE7^64+)C|8#LBIXUBJSz&Azrih(MYK&-O33y5O!46H ++#vzJ^bD!S3w7OzGoJ4h)qQp8&2q`(=oRw#PBr2_B%cxqxJ!FPI_oErKY%z`xX<S4u0y(UKR)yE_etP +jgRz~XGo))S4D|outfrOHusY76l(no5>Me7w8f4&PY|ubBr^hs7mAn%zI9}eKWNzq8Mg&quMdfVn?fn +9wBLCKX@fI^aX)W5>vOEs%u!~lle`W?#gD~5vS0TqXxC(E3dm>frQv!WhwN2wYVmYw7TMRg5<qf_Z!J +Q+#aD~KDgd`n-GcWT2<vPPN1Z4212g>Dol30hp;!dA@en}brV~3#Bpd|$PEU5$FuRP>K8?E9IkJwOO( +&9`6^S~vX=d?`E?X<@M4soQJ$tC83ZwC6NAt}rv^jgfzh}xgN{~I!i4#<c+`{0XH&e7iV6SMEHeb~^L +2Rz7pDz3kwBj`P``U46dZfXx?~L@p2JonVU*nBfd1kNV=_X0DKQ<5XcR5-<9i46b%z?v)o%*eLpbDb4 +2CVPCH#czwq3#cJDT7R?zcFyIGPhd-v^p&_y^Mmz4()O8e*sWS0|XQR000O8^Hj4?TmJlPY$E^w6Mg^ +yE&u=kaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~Ob7f<7a%FUKVQzD9Z*p`laCzlDYjfi^lHc_!u%6 +l)c_MSiGf6h(i+5Ke%QLF=SU$;<xm+s6P!wb_rbrzh)@ZNpzh6H95&$V#c6P6B?_8;jO#+QZccWiufJ +aA1ov94VOx|WevQD!?<mH<FU8I>Pvp9}sZ^c6th_KkMW$tx4x63FOtKeSdVjTwsv|F7dK@mMjaeFlt! +9x(m!7P@dNGkwkF0)*u3G@rcQ?ZGPWm*=ZSjrB(66r#~0O@KS#WM2*jR5}ziHKH+OppLRGAIB~F_U3{ +eW0(n*#ewI+yvo$a3?#XWG=s8$5r|eC3lDbv`$wNpaW_Tr{0^BG&@;FcT1TGK<PndJs4$9z~*uhlyM= +(Yne=^SDj)R05z7;IwyP;>Hs}S3lRounj>I7PjM^-ACZTrNxT)CV2c=JGEd_N3E+5A@aPU{#o(AQFwr +0`WTwan9m*nti9uV$Y@MYr)=Hxq6rHLC14Me%Y|N2lz^KoXUNGYXOxYwJbgY1^%DkXiW%57DD3cB|g5 +qV~(LLAETGJqi<8&kEJW02skU%r&ujEB_iIPGBljh7CXb#hl(lQ5f#c6VP0yJ1T(}$jF{$2-ZyG+-Tr +j6{m8QzF*zJ3b~ien)kWKxuX)m9M6g(7)gN|xpvC|HQiG76WSHE<1n2l4>%Gg%<^)ILm;B8z4qL-R70 +o_JRx+Qf%^i3<a9>|xJD(nLCXFp1I%(<9MCcnby!V**?ytMK2)AT(A0yt<Eouj!)W4n0jh&m+FUXh9~ +Cn9OYI#?5*nhhbsPyi`a=qU2W@!l=dBS*Ii5N4-<a(NhC?Imt|+WrmtQ(#B)hK2R_9Rom`yr}H6LueZ +1gVD`ULOb^pJu__R=ATNS!9_2tWSadmZ7nTmvj2bP{lF$~Pk&*AxWd0J=MIL6`H4qra$bxL^iGCtv0{ +R9d2A1oL=&D6<8Lf!RvpD!0aR4y@w4+!t-xHT<#;ZD$L7pZ(&G0#~wv6W}lQ8c*ngh|bkcR04{WVKL3 +Cy;dK(Hp_D3l3s14#}qG`=r$MfE|t-e#a|3egRZ#hcfs-<-hzzO5%IzDL3R%Vq|@dx<Rm#QknS!a!`* +`bGf&=y$+@Le6_)kx9}!;WEhXfc=1FkZi>o$cj{*6+x6B0Rn;*0uD@STJeiw6J(5WkmqR_1ppINSXi! +L@dUK&7O;ME(M9GQO;wMh;~s&7!R9iE^@`B1D|rTO2T~IvoE|g^<C2zxejP`vh(}>)0D=glwOEhv?V) +H#3;b8o6xZb}j`C$sfCQmXmIaDEJ|qS(YA~liq^Q<`xBw-BIVcg+SSkgYBCP-qMKT(DvrJcHju28cD< +IjT%n}%yrD2`|329_nUrIeMQdEREO^}^=gtOBUfC?*^fdJ9GSQbDJ0@_NKqjsygtzP9zP+};0OhAb%g +QsXrEkiVNG>sAP1D7U_>rUBIczhU&>G<;YbAK`vqp7%=jDHwi3@^k{e+qve^~C4V?T7KFTLCR5{p;Hw +#rRV6uYVMO9bI4a#PHv4Cd27ej3)$c^zr6uG=%4)>%rBhi_!Ia@ecZ4k8j1*=;P=X0N;*jPz7!@oFc% +F!^z+S{Mmmux*Fa7$b7pT-CiT?%kf0?#Z7;5I~sht>QBVYr^(HDIs`N>0QB|f`f>sz4L=UAZ#@_po{8 +ZP@Q0Xw=wDsoa0IXa31%`uT*Y8~^W$Xn{==>KFuuAN!ozn%z_9=BYRJRE1P53B(Z`;+=zr|LA5yO|K; +n5~Q^r(${xHPHIBp;Q8{Ce@*EprY`1*DNfA(O;liRBM=h1Z76aC3(3Mlh5Cu0}}NesQl1PJ<G4;d1Y- +{ulD!M{IEhc-?Z!~PY(oFV|TgV#9%XKs;!9Q*#FL|@7GE2A(Yqbhy=yVFt6QOV0M1?aQt33&_pFPUXY +s{crHZygj%{b#-eD;-yVrQy9Ss=xB;MX>~Ji%LL0*vQ~MlZy`H>UouMLTLQVca6?0BD0$7w&d(Y1!xH +U+W>^W=z+@3<RuytRx&%l!E*Iua2H|?uS=x$K_$wp@RQVsiKiLMryt_8Aj^WSkMR68xMKXKkk}nelYc +L_ppT<Oy@=Cb?uT&%I+eStmtZK1Y<nie3vr`;=X@>0Xc2{H+C_LnFbH*~s>aes&76|%>BujkTo+<QZ- +$8NBT(NmW;F<LF0Ru=)`NM#UUH;!Zw9|0;M_w;ANyz=^c!El=yZG^^b*M0x%la*#XA7yas)D#1@N5cr +=S1a>AVor>k+6m@Rh;KPP6;G^PxZW@!`3+%}Ritg4Xm=HvIYx{^_YdjRxSg4_Kge8<0cas~_Wl<eALb +L;>ee$Cv1qfQcn@1i}hFVI1Q`QNy!A1s`S!8k?gUv=c9=5!tp3Tps|yyfUH}@LOe3fHNAQOA3v$Gzh_ +nf%zhrBuO{mqP>h`05(rSr9q4XA{j^b5`M2e5*<wCtMcwHmM$s|0tgKJ&agn2P+4grKq6_*6S=TaAS0 +x)V^116Aw~e{u9P{%d@tbF&y~Xqt~!t=$jE17zoN*>kfJjL8YQ@javlXd*Lj+}EYNmFG$_DABIkeDz` +6xXrjXP$&pCu*7Y*r44)9$HErVRyS}?DO68xM3*$N$9tWz+fidYB^!;RDi4)g>R*ju-RfWg7fI$f7>K +%Q0(+)qO3V#u!koWrJB^|}V<F)$Sj)?+gvRwZ~qE(Yj}$}I<uB!aXeqk>$P3b!2Rl~DYdCJXR>3Jy)t +|5JvaiI1)TvrS9mU7F6%M6^JLEQ6YjF7@I4OK=D?aM+`eV<{jwpuR}}8bzZrLk$xkWwc|7KD5{I!%E7 +0(C|5|LZ$4z&+zXLL0rm<YRV8bI30Y#=)5)=-W5E+=;DRALeEhskpbjSzrBA~uQe63L(o7TrWU=I=r4 +hnoSuXj*#iLd<pCPYJ}|F<Ximu*MruhF*S!i}X;_t~2HFw_V>b??TbMJ9>VKYq%j3Vh8V~+D9sT<dW^ +nrL+wZ>a801e&h=?IZeh6Z)2}rkEKV1wj`=73E{lVx4jQo_5mtWQaMamQ<rT_{};6pTr09S<3nlczAQ +o}Qs=3Ir$R-lhTM7lv`Yv%~W2E0d%q%pSU(f#Qsn9CG(IlIE9dG#Q?^M`|r4@3O_wC|(W;`fJB|IIhw +`tJuHeelF!;=QMIJ$>_??g~)$cbz<U%*k^{G>`?)75;nk+P@iJ{doHJ^*2vL`KjHXIp4q6Z1sqPcZ26 +})#&<UX;A&1imlQ0iBfdv9CvkmqU;?yzg-=lBr%T<_MDkLb6(Gx)#0LlxU@fGT|Hw>RTG4k-#wx26LE +i>?9brTQw3r-SINtN7v##D&<2T;mhy}&@y%p>J06U$(1Cw=^A>F|IFkw5Yx3X%fi6h8KzoX5c1~Xj%; +Tdaty1ro01KkJ3<4f>9A%6Nr48n+RW3OwboSA!V4*MJy}|UV-ughJt9L3+Uwhwu)$zeOF48cKeF$q-Q +3Aow7ci0k$q7?5<kb`a=$Yu+1iFWZHwwb36SCSb-yC=T3xe|nxM+D$6j>J>1PGsO0v#QnaV*z@)lbmD +vzz}6m~wpEWZgZq(1X9}9p32p5ggw>4ac{K;`sIu9N#{UBeDK)9I5$U94!tX-sn*r{ikB-ACBi?h#rj +T6Xa5LI2hC2qS?|4!iCOUE=21_1!IVrGW_>rn%v9n$vP+?^3{8l6j3>z@(IR9pcg>OPL!7LEJ&mTto( +xmL1!SU#!hPDfF5=JL#IA$V0+$=;P2t!(`0x%>0eK8FjJ}WD>jJT?U<%*c^sFhpArZ{Rt9BJ7tglhY* +8lR*)J_@`Q<TMwxxLXQF4F#nof<}(oTx*Y1vA%%K(heA;jf|OkE$tUSEgeT_ZS-<~=bFiol<hiv@04( +;pB@-W5xqwlZbru)&S>ti)CwIpY(~eob%nPOi)gHkLRF0h?h$25qubnF-ns<%E|ts>((ADsgF~7%}fz +t>Q*AH+A6M$-*YUan%`<7<PY{2aZ$2#~()6Q5Z7IKqN*9ZMMf%`&p378W|h9r}Ao@8ZeOv8ZZN(M+-Z +Cdi`_VrHED%1NjDQn5KHyttUvyXOnh3D#}J$CJ5!V0otT1(RPXHTBG^*4UFv$il!PzMNHgb(vSWGBR2 +b}ewdCTA>RZMXofT+G42{9?P);A?LcUHL6lb_MFi;5=7TrvzweK(!Q3DWN{1XBcN$<axl-Gn=S}{c7} +RL=<Q0XMNL9Fmn5@sls~YC9NBS<9&oi0l-PSo6t5bZnZ@lBilW<uk_kJGzO#&7M*}P1K52Pr&dfC?~w +NRj9_*dr!%r;h22C-_fm$Nn4J-pk!(gtyw%lUgS8gfy_tq^7~#C<LMysyzUCE*w|zYdyujYyC8sH~TO +JHJ<nVUlMI8u;n&&V?yk&55-yXA-TQe67Yjub|`p-efo(-r`zvU*3#vhV3MMl$`yUF4nNR;R>qhaL61 +?m1@Y(@0x4qVAc8=cP-vwBG*)y)ckeFVDOOs!A)<Qx2?)u^UzUrwkq{y1rmtt4!+k6DDz9%<$sj@CE( +9Cz~FRoWfNH9oHEFqw@+k&n>GLcjPPt*$Q%O<rt3}<Y%T|ArF1-2ktBD1P;@P>+CY#0uJ)U_c8KMshT +l85{DUnvjq#5)*=}!Tf0!z!)q_WKVoS3RwXUt3G*y`XQF|^Bssd^&-WiF(Y*Ph}-cRH`meI=<(IPK-M +=+Bw^A>ok5~9Ng+`PiwvJ_OzD$1)8GZHMUi||^_h?2~oYLw4vq5R)%?1;W@>wg+EXG;g5O~M1z*tf9$ +?-@30<NjXCH3~Xz3~sQr0YmW|Ac6LiNr+qQar7W*pP2TeLA{ChgO_twO|%KA>Q80Tuy7$2ECdBs#T3; +Zd>}CH=XzdM3JXB6h!OX-S8|nNWhYh{i;b#y@I0?v!vAK$+!H^_VA-RtFLN$;NHci+4&HU_fLZfjr&5 +3@m=>5on@d2UYqvh`IQD)=_s`gf``hg?&lJW1XqL~+uPL#s%T#r|f&R_t1WTiXBAP`pfL2V-H~~&2Ix +nkzY^S6{F-q0)U8f+mqN=|kOWhOxJWJQzW8STXXTYWIF=e%p`53mNbpZ0+1=$RX<q=evg6|O)@FraV5 +;xo0kDy=3D}o3Ftc2gqWxVJqj0~%QkG;xjD>H4q46D41V-Vq;Jq@yt_WO`jft69IUz!V}1-35A+W*#{ +M=i#h$94+1bhD}*t*$(Hz)FaPs@0bdT+x1lH5$=fNtMLPEUU8y2@F8x2t{gu`kTzs+Ao}=8rR$S8!qJ +sw6Jgsp)4}MZBC^Sx*BLH4Pa_SRfWTKAF&Knp}NKg(NLZw*79ds;1EXxm?|No+Mpw>R*$zwyt)-edU3 +1n!5tDymtFTC(r9j?hAqM0h4&$w(HbF`4w1p(MD2eW;@0kbnGN!~!E5Es{iQB>)PlJR5?ByfE%9Vxd~ +kT#sX>T_!0RPV%UV}Z3I&8Ghi3|AlIzN_xENM5kxQLgn5Sa&hcPA6DoF0}4KZ4nWj)xwuF+XWC<LMsf +39S&V7WLE-@-IgRbgw;6u==>gH*4fU{Ofc5sM%!Y8H@02FOI*w!``rtP0u$y6PEZBRAmWUcEj>cuEAT +ma4&#=`uI+hk{qQ*Gk_V%iLan^2<7o!U&;rg;hxTe6v7p8%eS(yqZ+aQ<-3?UA#4*(Ge16l1X2&37F` +r=Zp%Ks?s(rqoD#lrilSBGRR0c*ba$3xt;!i!RIDHoF_e7kyS(_DtB#{njQG6tD*B@;rLu+l<yP&sRZ +w#B$uK(4Wzn(h2B<2s`$7Haz(Qq)nBb)_S8ZFCqQjMJdFN)wLc5mgZ5`_by+WfGB45<>B)I2bL0`Bhi +4{|J31VpkV5r<#|`p=VrzBADag>jufS=mtjn$_cvMw&)j2bCbTE^J4-%{pTT%Ia8`%_zFz0A`8UuPf# +iB0p3TB;jt(vUk<L)c_f#C|~NM_q{0p<)7tR0;X6enAxf;B}?qtt5|w(3>?<`znK8G&O%f|vz9giR5+ +=u&wP4>F^39YqGOA?!xOwL`WBoEO=kwWONG2NoN}TLl=m@=*uqx;I>)8}vMLnb&X^QHI6g1PiUX(Hpr +4Yd*>(s*flqg8d7LPA>602Y0JQl_I}Dqd^l97w_5`{Q|W(stE<x9lR%g#qN2qJp&b)#-6DjP!}-0+F} +$(2a*b+coQhVPBqo9Vj(&@8s*x8txEa5C`aF`yMrD0L%X3VEC8z!#P-?jh(gsxGrBWdf>16z+7K|(DR +o7?>v%CeO+l97Ek2vbg$bdNJ9#1AqvIh4mwkfEb{NDPJQ3D8I4G9460PiD-NL7>-ruHB#~FEi-&2*;D +5u#R6-eP#Y{3(s>{AJ2HjLr)7BdwNyb$PBR4zN8NmMzw9@d4UyIE#p(9gL(28&b+JoZExL<d-OmteuO +Qx}6WaSu4>z1k-Y@_UqxNck^igwdRf8oI$|jr**GpCqJ09IgVkWwk{y;jy?IDKnx(*U>|qpPOwV9AKg +!+cs;b>M<Ls)kFQ8;;HghIc+l2(TVQSWe~;etkHov7Q-qoc6XdwrllAQO1BTxNV5S}VJ{+ZMP$ws=^0 +{n;GBNTpyMRo>Va_w|2adl)bAd6LT_$?Wv*wjv&#?@X=o5MO&SbW<2{w{izvYa`I##SJA}YKDC7+;Cl +dV(h1YQ-#b&68oqpP0xF+)r-K}+pI*A;o={+A(4hnT1g(wLQs1XyDA^6Z>;jH=@{Bet-EIxfo)S)0b? +;YOjCQCzU_OSK<OpbY+Bjt16HIk0?YA(J84UfWFj+F_7kOUWKPvsX;)0~Ol&yU3KTTrk78cqoY%K0+5 +m-Ue3mKcBGl>k1(Ger`tWc@<<Ew-7`wy=7NwN9$O(0CYpX+AVE3yp{Oa@+RIU&9JmFS9_Ocik0|>YXB +WPJ@jf-po)<zt-Pb32MItM<&pxJ!W+{WGA86Q1GcFbf{-lW{GoxnWO$~Kj>0<V9Ha&7%ZZLtFx%c*>- +3Xhh84ID`wu34Wa=q5S7K?OiIoXHCQ5L(Q;*R4Y-v$cd`qiU4f;o6pg8hhin<emES1iq_j0MYZ}d4-% +bmFxI$&wvXpjt@S`!N9{0NL?Mcv{yPc_DJlUORihoeo5L7HlSL;%x5bEP-AP1H^j)&?vB(k$p5#Dz|^ +Wa+yQt{^1tGB1(gbs8qsw&|i#>s7)N32kk40z;5Q+7K_Kv?iByQ(_FELsVF#fbbOqQYT1L7%S!QxeF} +Z99)-t1mUxbC>}K#-M=SoPPbsufKcy?bm;_J!jg@QypLe?(S;Sc2vN->bI}N>7D^xfIo4spH)(z^Qds +uhXNfhi~&7OKt_uyObe7E6_p~zSL#3`FHE#<X==qJj`D37a<VHBec_q+5CckESM$D3%XX#Hkf>ul@jx +el>gpbq#p2|<1AILq9(u4BDVF101B|8-vnkrZ7UOK^q3!TI)nCKYU4_cU=p2lbM>DfJZcpk51}s{YoH +zlyMZcrvQ1;6JxRWZX821P6@iB5m%dnA8k*`C?3%<DH)#mrf@~pOmL7sJ(Z{GVt8TqKF^&MxmF%UD8N +6k}rm@dLhksw<~3k7WOk^oV*R72yeJ>?h;a5|>csTCu*4JglbhP_B5ZYVuj)sD>RrV!JNmK+gAiOyT+ +az_q=iVMuRey10_i&axemt2e~*ZA0aX)&K>_jgFYaWW<9^<fshx|;d<3&>(QdtOA?Hm;jgGQ2sP6!u0 +_Pqc14wcH}$L{qzWqjp?0u!Fh=CZ+>wIGKA0xYLN#zIxZyd97$al`m{Zk-aUMDIUYwuxT*@t=NC4;sF +!!mg-U}k7EGmj%d2Y0Xu3P%u*S>C3RFe<YHf;jEo;0zFr4|6pvLEa^8-IVu_QRZOzKI_D2#$N!cta#h +g<6kOw7f^bgm9RskC(CzI6Ofl!4H=0=}ts95)cZeBWpfT_^+>iQB4?;GGknT34sRGqG#%Mcwt1{bA`U +5{$J#@?^~lUrrg*68G1oHhaRwpUAUy;D;mhh@Mje?BW0dGt2}uc~@k7cW!P;;Z^Le%n>O>P}PvLk9xX +{!z2i*zKcgnfUcjXElhQUA|DwqJ=y|u4X{+6M}G#=EIoI3xU-d>Y_E^*KmC49Y(sU6vr}OG)Q}8qI!2 +uo)}|gto+?o;oMJ^gx3V7?z;CHb0#46b6*cqLBWD+zuu0<pMw=ys}e(kJ!Va9qB}`92U*t(HF$GNS8> +ouNvy0>=-@(98{3;Y<Bh>CZQ332Re^ZJivfz}mmhgzs_v;l2c@UBl5qrAulDTDjneX-E_tioT&LG5Sf +;HdK+jX-^*#=zJ`}}he_m0P66h4Q;#M&^Ujb=#RO+4s>_fVdboHc4`r+<?ivXq2B5>UJS}(l~_6ksV< +$$AwOdP?b*HbqDDq7M`m=S*c%8700aYU=^$N`3(c`eyk1MM6^QR%+()=E<l7H!fnzsc$Yhiz6#w%bP3 +8?9#1G>0(DefiH;IXSSsmL4PT>B<COQ?p77yb}eZUEsVbS8{f3$hB7tpgZJ5W6x&;VS`7tUDZ;W+upm +<aMnGZ#vVF@S%cn(5HGGSv!s$dqj((eq=YAU+a@a>Lu<QoI>M4WT_u6?RNgsNuC1j7O<&*;=Nl8@8+H +E@3L#$l8O*TK1QW@aXf&y)u*NhwE~UCqUQrWRVGzy~JJqvQm}|3TR1UG-YL-L0l}YNi8pfRsV}}RhH~ +LWlG>=MU&~?B6NxMRIkB=D^Ryb%u3Daj<mM7?CEgA<YB0~w;^KI2QNcJ5X=Q;BHnJf8wJB9fccWm+Q9 +lV@}i_ACN=jp<l%t6xIWu{1rAoi=%2bFM8RAs#UzGkEAlqPlIovzLQ$>@1zg853c+=%qE&3d!BS*T5O +S(XJ}HsvmvgN513;ge=+3GQ&DuzG1Zpts|T@tIaLBUIO6EWt=?#7F`ESzM&>lCqse`sc^Ogzv>^TbNM +Qwl;DX8jiyH3EPbJWZiE2>Txan8&UgHQFtuwH>t3r%C;3Tox*71V{SG7Rkga17z}squ1!Q9nab{td<U +kNt-#%NTVr}>*PM;Y<j0GV@uwx`ecbHs3`R{8g{}+IUdLw<Zm-~>pw&5*Tw9CdQ+BsRjh3W%l&02GFN +`)HID@w2O>MOkbk^GR)T1&l;TDDHl9^>1&vgYXr(o69mAW#<fF*?Ka2YS&=t0!B_IoR5)i3zgc)qw0e +|v2f?0^_7Oki(8Z`W@J*F7$S2G|BnoXa3xty0<=FijTub~e%+s-sWHIbZa-)RgH`M)2q;$qRPXMC5A= +k!k<hN>Y-OxssgS4RDiHtgs3wr1a32GaH4VrjRoWy0R}f3Bnd%9a6OO-28*(1LM)fl<!FH#|6^BvzyI +4@sR?k8M;oS+6(7eP6{EnR_#>(I=7=KQ<SQE4zo1RJxn8@>!<!AN7kv;lpC>x6_4KVRXX6CEev?SDly +FDT2f)VrY4tdxkq2XK)lkMmGkr!-rX)%W~x11%PgQxN$?%Ym8!Tls!*#t?Ke&&jTdK{f{r_2l5cP%Bo +}dTXMSrziIK5YPgif^P3cLsBWJ)fY9T4g<O;{e=LB>IwJTugiM9d{5*$@q<r0f7xm2~hz;hr5?bQ-M- +pDYVuSW_3bu;XyQdE}ioXf28mF?2;whF>5m>IezFVgIvp`Pu9xY6#V+JR-JC-v?;XPLKnJ?%9tfavZn +k}Z)q8yTBUn!4596Aez-3Uz?ZbQM+0Bx+b~GwI|0S3p?{7UUIOwz<Sgl%%@8lxJ8?tR<-cW{BRV>HVK +YmFG|XeE6JE^FKaYWj=H@+iQEu%v%Drt7f!X=)kFq;e_)^&FWMo+a@-Ss=k00T^y+u1r5VS!#F$%z#C +o=f`sW_QG>1qaohw^WlMK~cn7n(DY9KKj77TtfVP3~<CTAUuqPJjHSzm9R1xYdi=Juif~n1EHxSWxXg +Rt@?{^!juT>`j&9CKMTG00$oK5n*=K!4eo%%iL2!KH}-M<dd_uSs~_R%`Qh9SYT9qIr#f3pZ{6;8dkZ +np4Ac)V%dS2$9a3?BUk$fx@tpZ*redjLNbta*=KJ6OKo@A+VN5SXtv+!M{TNyMiFi`WyhNaalYKEtxm +T6n9arjErrE3GX``pSxu_-yTAJA&<@{%?uZ@Zvq=+WtpB9#EmJfvL!DmCmK!*OTWbr-zWhVUmGH8_*u +-RL;5FywjmsKK50DedwMaWk-7V3e3Sd7hb*!vb!Aqd3C?R->d-jb9LCJ?$&yvU!6j)FH`3aeHqZ`tX~ +C2AJ`zZ6R9Ki;B*1PQhjFX#p&rcZz-0<aO=3X<24jB38%=~_@;tOT<+SOIndZTdtQI7;at?;XHciq+p +iaFKdwF!!3x|keMX%D=o92FCDrGddK|OC(^yp{5hx<mBG8w`!wN3I9m7*Hs-O7fm-?2zUw+XczPdkvk +GK$|){tc1S@lW<G$h?9)UJfTsuRPynzkz}^|PNHXel3iZ8^NIN~hWnuREut_MboB+u&X{&QZDVjp}hL +68Z~f7y$mZPKz#Ocwf~d?mzw62!hcVQ&JS;&8p&(K%(sHb8viBFD?<Y_Fh%8rK^>?;K<BQ9rKnZevt` +;y1mR?EhoOOl4fU5hR%Z<2fbUS+T)8}{#j;>T;0V;C6>D~+@EC}gTjUt-kwmI>JycGfB;iS<`>)aT^> +|63ey&Pmk^gN>ebTBSrl1X&hV3V!yME75$R1MUnP@rh4~RWMqGWvYI>z7;pWZwvxyuV>O4uQzQm@|Mx +>M%dW#)K#ZQB5YXxPi`Be`K95+je1%U2$xjI6}-$`(U%~Ao173wcn+)Rcv<xKPC)0&Dpf%kEgNcDXW{ +DhcW&0DJ-V>_rR2CRd8v?aT?A;F~@3@5k#WcaV2Mw8)1?b|2?MkfZVX4m8Ep&HEq?#|X7w>e`+N8+-@ +kt-Lni5KCaZcNqVU{SL=XRcuRc(k=e?x(5x;va6*w<k$AGQ!Jc?4p#7N~odTH}h~5dn|Y6!TCF>GEma +nGd{jjUlKxpQW2-ZJx)U|`7j{y6>$prD(EQ_RVUp107ziDH^^iY9DjGRK3`TXY@I=*1x}Yn7?=6bNn- +mHhd$n~SV&}7CrE+Bd`Jk(Vla!(sb2a}AvWvLRSVGA@wW8d6lhaC9I{cjcu|5>1{v71jHau;s#;ZD<2 +p5YgDaLQn~lt6tt?S)i0E2yDC@Yl&TyBM9ov#<UYbyys<))@l0UoDtBSPsw^Pk;&{{VQ*tN#$?ttH&@ +4hwRsR>zqM}iKc)!BCYx`U%*hjy;O>Ny8!u9T~epUEwj)gPEzX_owr|4PKr-#&`#?6B%WYMtTQv>@nv +D$x&`xs^d6UyHw=1p*{<^E61S+s0_2@nBpXA{jN=iahWDd-Mc&Wd@~CIPqpHmppBrpoX!}8&uGD!?8U +=J$#Km`u?gOcIR<Pt1eHSX2FlA^3GxXYM%O4vKBY))kYl!iUt7S0ba1{XTjZ_ocl6e<ZcuD#0=Ap-Zn +J-M%}c-dyu?oPp1$`rAwU{rMfv~G$WZCN81f}xCH1ZBozSU%V^c(4Livn2_+!<nzMkf_tN!S)^+g;J# +bC*my2~!g@R9?R;?Q<3`sm|+PbfI(AI6%M%-rk)l2%+T1uAWF2&7)jky)Y)y1Ou(K!{g8Sv-~CT^gJ` +q~_GKXV=1$M4*`NbNh-@Uc~0b6p>qu4cajnAdXbw?&qE&db_2X?xRt0JwhNdKB1r-F7Ire%*RJxbfOL +DBSk8aby^O%)~L*&{@>#{5Mcb0|XQR000O8^Hj4?UFKFJMhE}^d>a4&Bme*aaA|NaUv_0~WN&gWb#iQ +MX<{=kV{dMBa%o~Ob8lm7b1rasty$@B+%^{fuD^m%5Ol^E%X>JBg^($>$bklnO^qF=*`f$!j>Pc@p+q +f7c`_*azwdiIB<k|IZS=t-k&i#Vi|?SHk;{uql8d6O?^Dw1!{y&`B#PrWx;>VPRHA4(1BzPHvR0&#;- +OTfs3|9^Z5kmpIS5I1KfL<q4rjlVOp${W6*-mqSk_T1IWPBrO-P96mMXjMdgFe-BP&`H_C>QA_aNfnC +e|B5>mo8AF91pqR?|HIm4I<*>s%X_N`2lC2KzEefLl#DCpYJv$UiG0`XS&;MUE5X5(XH#yHiMacZd5+ +nna)g=Hx1?hO>%+4sf5Idt7&D0a4QWo*}zVT5@1ix00!ZywikoC8FUX!MQkr(%lB0JdL8uUKe+FsL*o +;pxbW@ch@w%x=NDd?rz-?&eBcDURX&btAu9c_50o2vKPmtbzJ0N@ug+qst=0EnpWTiU@_8ArA|T?%6N +(HG-@ECh$IQAfuS^w2t1%G@Da&!QGvD#RuC;nt2*Nt{=h;2<wlG`U_|9dhI@j;A<$X0NYXJ16dHX-fs +%m>s*Nb1aKT$+QrNZ-HM5?JY+6MbFc9d$ITWJ>S~=$>IK!nX3vi$#tMPo)44e=Q3j0vNs^GW~)B`w@v +s32*?`|HhjdlVu)qA41e|HWNXNqWmu))87+f0C9!;f=3IWCM&oX5A$R-hilbw|$51-gq)CHVLrjx9({ +s0vn>1uCEA;aY29$^P3irNOdBiM`Lnz2RP3h;RR4W-pII>G(13Uo3HtIslfPv-RRcbK;OWaXi?S2Qk~ +WFjea^r{D^meGJr+T*gITdbDrTmmY5<Bt}@{Y*}__@$6?Ah8c{fbZ^{}W%fIYv^?AM;Rwt|5&M#}Mw5 +4D?2VK{4v0=v)}TFQ#>`GhVwZqkl&5;l8a!xqe*S3btyF$-f-fsGgirs5PizhC(*XFNkA7(T5>A&<my +5d8yNGCPuqN>kt?;Zs21$u(SY94L^PEFWcR@TM<Sm^2N=Sr-h*BBU4Oo(m;f`823T)x?kA$-e>=YtbN +hz*aeFZFmgI-~7ljS}+>WV)zs=ai1tVdjLy4Q)u?9|%)m9$hWvW7({roEyW8VH?jXNHZvHbj>d6RqyY +Z|#7CND_YxFhp6P?{9B!UUj1z^S$c_rVAS(`26A<n3(|JV6^Bjj?S^^q<GIx{dzOz0dVh%*7P3Zr$s> +gf7u~V1tFLxU?)$~P^lQ6sTtQ-e9`e?j%>+$2;)%{<s8nPjT${~tD*dByAF>c{(eUq4pH<{L*O-9A%X +Ty(s193Je1VOBpU&e4#~U}>;MP5tV^9`E5-O>LoTSiSMYQ3`Gjw7Z<}BEA<2yAWx}a@ODq{^uvx{!$# +~r_Z5t+6BPllqah-GwjJFPWtl23;sSJ|=PhKbZyn*w(=cPJ=$Uq-z1@$mW>d7pIsj0HhClKtHU%S!rV +1-wZu5*^rqJW^G(!oLYD}RoMRPiUknpqvqpySE%+FM2ssY3K{yhram(?6&dTx0@O4&eqOc(1Bq=)}jU +Ji&Be4VIug2Z6>vHpA$1!?rV?Vi{K%R47;~#GjS`P(AYicHZQr#ns5$W2<p~d9_c6^9X+Sk=<PmUEsj +YF0YqGt>)L_%-lK`nC&9>F{Qe=@cuKHT1SE3n^-jn?nAdRDPu0KPCdp1lF4ZNDu_~oJXeN!s8d^=kd^ +bmPN3&%9Zw*hPo2@xkNj~enRWLYRP!63;@D8aXSVe#u`i_eB{W??b7UNH&mMALsWE+53Yp(C6HY|U&r +pM$amc3BAs%=Pv|To*B9vswfC5fF^9L7*(uu$}8*c|x6Cyx?Ru`+6I%g|pbKSs_>nSomzrm#bnK!L}z +JiJU^JG)|XFXLOSL`vtr{%!^k(<PCDY%6xx!Gc}NkQ%y_&0`l0;}_E{x%kW4|@}!rEn0O7j){^?11gw +1AO^A3w0DNF9@_BIc#WdE|?nm`qKsa!@>lDNCrKN?b4vwdPY7n?4Q5UfMc<Xw&A94G6(ucX!8ywE3Q7 +&5AKx|rGoa(IyDx8fZ}TPtDcdhIh*qhks+se6M$%=iq-aWlw*Yt)bs(VSq*r(kP>Jhm?)^kQDS>H6ta +Yu2?1BwRFM7I)_eAj$X;CmT*YXu`g&)cjaCcnN=)P8<C)`wU=mNl(sTqdt>i`oF5qCs8`ikf!hSU!a; +y8nR~#$N(WX=2-3;>X>Cod2Wq@xohwBGcL2odr&0T@xFByER8LqcRlMu_G_3V8}`7+g)y=4uCUM}9TX +~_(WOlA9XX784;a_vi7>@MSUN%xx}p$aK?bELn{v<-v)phxU39QvWIyu#imp!8MKaJX)(3`JDiKmVy8 +J;LDu4UcFqE_yYZMZVMtGN0+z3Q$kiwyioI*Mn-@^NFPZ?lZU{91S97g7+^tUJGsJhT&X6gwcLqOPrX +oRh-7dTmYMM22BpmuE};w{xZ!Bp1V!Y($?+~%HTHhKCvb4+9w|I78d1QS8((1AO7=GcKg%Ko6Ozlg=? +@D1=6>a2L%t~k8FDUdb{4r_Gz15|E@i+|CprL^y}?9l5|`o*nIjU<t?*$H2z@!)qqKjX(lTOA1-?M{m +ngw&6snpZ@W7`fgbDM1Da9$|I2`>QInSr<sTMqVLz98g_?42j?6S}9T|R&$hz(<?N7)E$oF4qcXCD)r +pro=0s5K#8eke@ejZ<WeDXG)HsZk@NSF*Jw;%(Sx*)jmk#Dmc?C_bGb16wo7+D~V{s&M?0|XQR000O8 +^Hj4?000000ssI200000H~;_uaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OUvp(+b#i5Na$#<BaBp& +SFJE72ZfSI1UoLQY0{~D<0|XQR000O8^Hj4?T^H?)!4Cic_CWvuH~;_uaA|NaUv_0~WN&gWb#iQMX<{ +=kV{dMBa%o~OUvp(+b#i5Na$#<BaBp&SFJftKWNB_^b1ras&0BkK+c*;c-=Bi#!=g6ex^|qjX|X+=BF +l}jj%`>@v&CXz$TA)4B8xgb^4L#*LsAb?qGYAp0#_8RMb7-@!I|MpYPZ|1^}z|zk?dj@qd3GNvZEIt{ +)-6OI^GUh=;=V9ZyS5|0g*l0!;i=zUWhE{w&6!)c~OY=0XeozY{vm!2bLH5B#8QGeZc6RSS~u?03(Ot +`T==#b{Iv_=aQ$lE`G!=(w0-`R3d~JS-_3M5POkhx$X<&)f3JNje7L41%xkefY}dl6uqGPfP_qmClWl +MCnq}eTigdW*)atzw6y>r*f}BIp+_8q08I_2A{o)1#30A<(4FJD=!$r|Hz6XS9lZEpfa`1nD|qQ6%|q +BD!I8uv+Tm?P!O0U~g7kxP1egGAUF$E$y9aFQn!s{g)*Od@G$8>fZ$&7;R!F=ar(p_&2NJtGw8hL=aA +m+zS;HfH+LGviwl63STu^BACIr1~>`_mG?$D9y`zHL<Y9aWe6aOV}?hg^_*j;os7+$=Ef8OUtqF<lj= +f9t}@VoEf=wF;~iG!mPGADt4beOl)%`gIZ*Mq3Qm^#lsSiwE+Q7tX+1^M7s>eX#zIUaR@#jtG9fx8-@ +Lb8vZ=(tmjtuQ3EV*w`G5j#FYAXs$F(cW<(T03-b+GfJh?)DfQ2-{(ZJs2w5pLVlhCo%PG7zGZCogNU +`ZoH$qq}{G_bhs3b1`y0aEPfzYdQ9IQ%^qh@|HsTkKi;}dc<3RBAb{V-5j2LhkqrP>4QzS`107;;E}% +GILlR=CmMnZ(x=;s4iOYEG9>|f>GNjBZaM?Z%JP^&JVMoA)O!9xQ9nlsFzb7u_95oYSXXmiINg{yes< +njxVs`OZ@JIw|b5-b|`1xojUEu)|l7=34Af}nYO%zNEs2VISA$<`|Y?iMDllzGt*9I~dll7gpGSJjS% +hlrRbZm@KTQlLg-9vZN_4VR*jeugM&DY=1VuG~!H}u<dKJFpo_vOkkO|)1sxarMuHZ`DqI@f2n<LUeh +x&q$$VvT0go9P;W*9#^zftwm81-vm<`ZYXiSJT;a{f&>?WV)VH?8#z<G_=%K>#2S_(^hDCyIL+x1JoD +;^n5y>tU!`+W6almkPL0e_zDlmyw+wjDvsf4w_wSN>WcKm^4n_q<$8^-7qhVejaLR}s9ntrE)ERTXWI +0phsN5C_Qhaa3qay_Qc|udy1O=LGnK2sUwu7Y%&AHGV!mF%V-GA|tuyw!scH0(wwjutGB<Oz05R0Xz_ +nmNz&kfM5_P{kN<c!NZ%sqiX>4dSz%(g<$k1=KVeX+*2HI@)aReoQvq8?0Mh3)SNL<L84S#O6l6K#<B +B+i>&d2AeejGu~ObGTcVQrH7D-xys9bRNMkHpz+{9f|pc+u!AeV}zJ?+Ts2@Fq&1wl5J*f5#G6>=N%j +eGq?d32}R^u1XnwJe&2<axtB+ja3inliRtz{<bt)tyW0qKqq?H_!d<0&yro8wwd&{yDeu=vk*!2pO|Q +vN}$$HnJ6O&NYH81^iDufiUA2qXA%msO(r&gZMAFy1Hv9z{ZlKV1JNX-$<<LYH_}Q5tkNx=l0Rnw(LY +)+s5t0!{}}w4_QSaD2@plG@8ZtU@;fkOy>vqFhra7Xop!(7?J~tBu3u4SIOw6vuBbL-H&dB4(Le2l2P +=_<iGD}JLI08!Ne@5afUQ=-*r#UFNsyZGOW6M<Y-hZ`ppGaJ^zKP2{4xBq%ZS0^Y_LAFpy^1%-J>(n1 +_yyhKCgoqcUuK7CQPb9Df70jAYidYxp?rl^vTrQ;b+!BBO4k_nAN;{!-KU5oku=r=>UCWE3#M%&#{bJ +ZqtImdXbxM;>g;%SkW`)Gc*klshy36+_Z)SE4NI?Tt}vU(ze2TXiT!N!`r%4GngH1D<T0W$dFnK(}cA +EEag6@C8L#?TZE!*-OTV}FK_LpPAGP>#%{qMMIy1UD|x7-OV*P~)L~w}vh0Vj%FDmu(==Z#H^xdT8m& +5p`F-zz9}9j?sk)TPc#d%3SuQMekFd-Y!bs?xM);VGYTiBF(Val_QUgyplS=bU|DCwjeOQDk(17VnE3 +l3jgiBTdE%d?U;CPiH&Dk;_5wVFYNik=-<HNGpjGYJ<dkCzOpQ9QpAT7h{eum&-HY#br=GG;=VeCc<7 +qZ@kPg%>Z$!#&|POYSMBC`Z*&P>c!ha6b!Yqg@_h1b)xp!KC8=)(?y&yb(dA6cQya;zsbWvP`nrrs$9 +R=1WWjW2<!Dt44OwGkwP3ISAx%F98*^k<!?=*ES+J}pbF61k9sUvR|hpycAR1SLx@E3KwwS!p^p6;!5 +gA_W}SRDeX<1Y0m&hYfdx?_d*1BTo_}&kwykIBR`b0L;}XmCAa(U{hAos02~3NeUslBr!oD8>rbNdjm +Ob-D940lK3?IdReJd$XCONDrEUw9a^~)1$(MWMl!=o=_k8Moy_^HQk{jh`ZP(*v<`3twF&Y@gtv%W4& +EZ}W9Xk`@m5D7SS!?{N^1+czQ(*Uc5%TxS!lJigtdvZ<!`z<JbU#7BCVLds~Ss!D>XG|D{Sp1v1hY5P +quiSJZ*|oc%Dc-VZ!J8&~7&cy#p<92{kjL4n7B^+u5!{O1kZkEv7SjG+j`kp**PKGNvb*+>=x-x=;c< +J=BbRiE&V<{RQz^;$*vbrQ8Ilq1dX5Q;?lUjZ)_8>O_%6i=zX9E(h1TKd*ghH8`b<2;5YyETm3Ef)sm +dMRKTD#K4#wp-jwSne~HWK>%!`#x-p9!-MruBfcyuXKEsXCeiDRQ>1cP2?pClKFiympa92hqJi#`@Kp +}x3{9Y6Z8(pQTe>Mr4r%xvtv0n97*~zkP^(&f^3{x_Sb1)jww#LnPiBF7a#L&4Fg*>A9!>ll{pAB$Wi +l7UzbY8is{hSM_&$YxrWaom1>fmTd`}{FS;rZhWK}_3wMUD%uhu6$)%cp60)MAtQ<yr}RSRuY{9w~WC +nk1E)5w4MS&_ndGF+2|HKT-t(mWfM2f}(GEH3F&v2_ceTD-rf4n2gYDursDDpo-!5gRLIJX&sCS{aHe +l!quik}Hi=5wo!tU!*miPGT>rQm8_v3PIeXvul7x(zS@u*2M`UXrxFA_KH&z2zRz!P12-lTPPjnh{-P +=efA1fK{)uV%6(b5ptqQ~%DGcIJ3X<qmT2o2`!a0PWwu<jZk$sJr3~sdb{XwE^{}3Qq#o9DqZIo;I0= +(Z5`-u90z0S69u;$faQPqyXOUF6*btt|h|)!e+)#OtmdKYHDo=(oVxd7@MKa3tsftXv9w|4Lm`aycr8 +b#GxHhZ^uLo+naD%Y4!q7hiR#*s#zT<6nuA86oqzFCKuEuC5r#TfO*_}e-_wNxW@~5KMfB!6A=10yE| +ATeO9esVW!t^b$!a;j-jPYkJOYvks%Nqp)l*ht$^0W}nlS`Qs4_63K-%Okmar%;?#KK2NIDS?Xqm#2- +`Fy!}tuM}QjdiH0WEB{6vgf~+QBZJQe#=+Vu2wG@GuJ6Kx}ic<9#vdEs@%zzEq}|uf-0gB?6nLvA3f< +-Tq_i>t@5KAX(d(%S9xKiWCG1+*t?Go1vRAGvJ;#YYtJgKtCt9uL#UC!lvQ+c`Zj}_FS|XcyThr<J^7 +`R{Ep#NpCY8xFKwtP<X1Lo!>?qYH2UJz$w>!+dzs+kxJdUe=v0|h;59G({H>QCJWz_kkl(JUb+D+CXh +^z!K5a?z3ef8e`e90^(nZ}1FD%uWp!q)bcB;52fD{+gr{NmS)r^Z)*U~n*c!F_)wP}q?xtNZs?Qt&mR +83YwHLP3@LST&X-hxFg4?7`RO6xuugRcI{DB>!!ER$wW<*R3n<dqRlOFa2PTVu&;q}OOr`MTV9=pbWB +i|$geBy~$FlGRa_Qf4WvBo$w46jymC3U|s-m_G2cjr|C9v?%#hg6)sHm9Go)mp&cOp&t@B?AsasS~Y) +d*@cY{2+`>`Kpnz9d`Ph9`{wk24RIopd=){zu(9kYL{=z$U}PcBI^xi`Y|K8%kxgSz*_THBOalAyP+a +TXt|ym*x6<a$;CXO47z~DkL9Tqd&H4!@q|nuh7tfWhpxQqyJQD|xIG`8BV8tM(O%DRjpm|to9YO0EZ( +YyKv~>ur=jB$~{Gr@TkuQ@Cr73?IhIRyMCwu*!UsWMsM8p0F;YaKthkaTS;5YP(uGC=W1}7@Zp}GzSr +S==^IlBh~ijN;Z=Em!;1D;M^kIb!yA;wnv%4+5-Z1cl`rEz28|Hjy}F_)P23kMHV?-62q$M_Z9pq!1F +KEuQ_?EAHQ%cq|J`7jrNUI@0_ejNBD#Gm+=J5LZD1tf^Ey%QXJ=;`3thXl-_U#kHMJzU-ORSJx;M-K} +|s=iwo9Bey#hbefjB3WVfks6)nS?k1dTo_m&zfh4+V3F<?2;Zv+7j(SSm%=}A&*C7EkFVZ-gp3oq?&v +oLS1_ABB%LFnlU*q9z66j!`#9ykC=txboJ7w4g%b?lmk6{i4NuPgUR3ONdXTNtbF6&KDbWWJf_<i!bb +J&#rXD|bO2mp*QCQ>IcLJOs4$lj{pz$}hh)87)MZ0dj2ah~?D?->&d_r+1P|Qi8Q}o+42_yP0#f=j}% +-aV}axRk4%c$&y2s*Hw=Ip#ca~tA7w;)|yH??IXI^hlq6s0r#13p4fx#Me?q&eY*=#spK>E!6s_sbHv +^PxaRV>8$-fO7AWr-VR=C2W7i0Sq<Om;=23a5=aX`sXCQSc;&;)4Bfb*~QuWkw8KZ&A|U`HsSpvAts@ +p$AS{)EIVFfN2^f#9D0R@?l5FL)O_E8NT%P^!Ri-gh&X^`<_kSLVc?%*SoABvr2a!`1wtDN#UYCP@YB +0@JNjKM@#)R255DT#<oHhd?DAch%q8!J7Z(E<{<mT1Zn%gI(`iGmuyDu(Kt<gc`uN(Q|C-u{em}O+40 +CgK@qY6~zuB1A+UW9}7QAPDaHbcSRwr3TgL*l`v&)nT_)|Gob#l}!lWIBowFZCB2Akz#_H8&CTu7|C_ +OVLZDaOl;v57MVgO8JH28C6?V4NN${Yo#4()p=TDzjWRmXmM{w1z?w`r&!KuM+Cq^!Hbd7!vAHaSRn< +RuBPJk4}YIndL)cIjN&6qf1Rc9M#82*-;-FF{F;l;Ty#3SWT>sRlORyr1Yo;xlDW-Ii<Wf37b#~^`gQ +e$oHW{qi_+>oRx5Npt&p{T_~w!n)BBG08mQ<1QY-O00;o{RI^ak9SvPx4*&qPE&u>I0001RX>c!Jc4c +m4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mY;Sj8Y-M(3Y%Xwlty+6;+c*;c-=Bi(Vo +|wpg!E7>iU7ePo2I+LwoQ?wR~*{Hpd~8SMi#Y{6xaLdZyuyb%64CO2HMy%Ih^<WX6Wg3I(elxN0oX|l +~}2&QKl7zHlkZ8aig-{s9PiJw$Y{&%d*bP`mRkUliQVQm5@e>x7%)|Yf<!d)|I+$VW;fqn_71wFOAB& +YAcMYWT$e`X(GKU?^gEIv$vP+WZBz2DpPGM%@!BlsSX#f@%=`d`&7WOTT#|o)#q@!*sOG=#1f8P30;W +FNisRtM!nR1olE3NtbrylF62_<Idu+C)*233%Ua&4wW>R!Eizqa%774M4JVhaSnIs6)C5_R)mpcmfVC +hKNW{cCvqj3lp?uKgK)6!!zNM2IqaR9C+e9|-zA+`}fxhWmRrHmRz+2l%I5<>}GFCmA&Q&^@f}zSaTS +2z!muK!%)@>Wrx=&@NOs91<JTS_=)5Ej2t=!vAt(&3*0VjpgYmqt&3;R8JK-q2QBGxE;et8bY?k1DTB +hVaZ%BZ`(l18Y{jX`yT+Tkh4NH)JSaw*<kycV!u3RE1}OVSfCUtWQT3;3`&zqr1=SzKR;Qy`dTdffnb +$wa_wIX%MHZx_E`z7e?Y^5y0E+3f{A{a7dIlV4{aYx;EY=Ecs6=^QD(xVk-i^=dK$zH?QGMOG}3qXmk +;SZ+JjCiH)2Kn=4KIv912e}69@R1Hk~1#^)ZMdk#3ydcSze}TUX(q>6c1xkp&Tlb(g5=g-}*9u$(m9* +TF?K4?b%B0c3Ms>ZZM<z&_>NzpM8p79T(f#?$v#QdW?6i5I3fWiPJQAQ%bto~>iL_HvSVKgzj=H|7Ku +P@PfPyOUXSA<P4ZPOtsz#UBSxNZ-q!><!r4CMR%YPJj1oCPRp3ss<;ytDe>tdWOf_>s%Z8-=ZWYw#d{ +Ei}9iB_(a&?a}frlqGM={_8P;si)5?P<8e(x5d@53B)&IYK+ux`jZ!2CY6BOEycM;HH6sKj^z?@HVTN +gDx{{`vJ!p)><*62YkGLG-7c6g@aHk&)A=8dk#VHo6PRpZ{PKAJbtt<^keq#MW+{iU1Cm6h~be3vr@o +k#5-OkcpnEeM)?hY=2%X}I}F{SB%n_yW3;h0z#IyzQ?|)}FbGPlKeYxQ0ss5EFDZFcy5q7*HOG}w%%A +iC(_p1O$KgTjFJ!yGva@KwUAPpanQS{2Ztfnvy}EpJdvTq(6?V_eI*XO@bk|*2+TT@o&hOrK#(T_&gP +|s%ad`Pf4LXFs?`~f{w-&+w%fcNA!oAV8IvHp#`=U@L5QYrmtjFIbPmllgY&L9xY6H&sE!=z7_p;B_= +K{%pi!fdwD-;4A=H?_i$;cAG($&ocx<)dkKVZ~`ki&W8V(u^q@~Nji7>HR+iS=Do;`y;UhmHIu%@w)+ +wC{?e=k@@bDtLv97|76oBo?(^kUuB%{~U^YrW(}lBCBA@DV{bCp_PIFq#SE0QygIy?p8)`Fd=(7C;%) +4cvbQjq?=9$0TfY(<-FwdR2-iKK7c1pTn42ji$QpYVp4c>4r(U@yhfaPr>tjK`A8n30;Qtq(W~|+kI^ +B#XU73;ao=6-WU;5%Fo1eAoO>$z>C_82u+vYkZf-i+^{x21or<4rz8RDg8)!Gc#tTjn4yHFZuP!_t_S +ezMgjw)875zgRBP}p!)H;EG3x;!tpc8$G*Z{W^%ti<Zd2=lRn4l3`hWurXkQ(CQ438Lg5H(7b8F&jIC +<ibhB+8tj7%mjqN|tq;F&}{{;G7D<1iGgOpO0I>ETDho`WsyCg#jh`4=H$MB{P*QrytG78ek>7si)Sa +fF~9#+Nt>9vl>D6bot9O8-O5fwo31e?wjQ4Y(|BHo}oq}Ae<Hm$pO}f$|b^|oXx4va_0syK~@Z{n@rz +mVKgkqrDaiORP5SDW$;1eP6%(>eOZ+Z!iDm6-^pe5gCOEKfDfGPms_KXG3c?Co=<i4edY>$paReJmv! +*2MxLo-W8Rc)+J18KLr>>PplMLM1d`D_dsOX|M$OIX-mYRGF^hHuyyK3T<PS+O=4qV&yye-3@5^q5jY +P6@^tZGUj`3)7%*5fWX!jn}$oFbv*_Tz$LNh)aEP9X^a;vkZfygHWnRqW^;l4u_Udm}xT)6D%g^0S9! +YIx{9A`@fe#Q@cZCv(CkPHE#!5W#ylynV<b0g~x$>o}}B4}@@qB;Y!w<kj5<_#!r9(0%it#+k*&>M1; +9*X2xQdUshYWU}_LX<7VNdnnxJ*o%Sic|fq=@s!T?x;fe4hP{tn5N=Xu0BJ~!uIi?a|7x_QkO512<7a +E<<}9LSa==rK#np;jNfg4Toyn&mc}<pa%mU;AH~2~k2ctkLGMQ8F&Rm68+9Mq&<hPa#cP=fx0@Yqqo@ +)?8Fo`Tv4M=jb;KwVLsqSwgbaIOJyHf}a@3X32{nK)U~^75F+35cQw|Tdor@7n8z}|>3yDXs<O9Zp@@ +F*ANVGb;S9Z9^x&wtEEzt3wb|IPwhcXB!FbGDon7JJ|B9_D_h>}MXUO;T1i$?w+c`|^|#ST-$0~rsa; +N8m2{RXM+`~yd)I80=`qw5a#wm4QA!J2n9B#*AI!CV!jt>7e1@gO;Lnuav)&Xa?l*ff^ZT1hy9jf!a) +?Yh2iku%(dAHly>txTDXtdxpN=$Dkt=a$w+JqB~#X*(YsMrD4R7m>}5WNIAD*rTX3NG&<`PPbxHRuvl +TIn;zYht7%XGx!611QQZ|w73f$1$<Cb^0m}j4Md`?u-<v$QDbyRezgkxiRB?NXmkbyH_DQe?L8rdXU7 +rI)Z%G;ViClt&~4iDqvY8!hxH)V>3|iV{-SEais9}LC(l34_I7bY0DX<Z^OH|A<oLDqcmmD>n%X1oYS +B90E~mqYI9=c8_&%{|->GFm9z{~&yYw%xcM=hq58};I%hAAkFvioHp_*A&iL_sKt*VMNI(w8fgZQ%Pv +gJ-`|FZD}ERu*PqfV={`JmvrcnQ9wxL2IV(A80JV^sWqr<G=&2GReJ50qJmnLLttj)CZO(oj2xbJfD- +i*QzK3xnSpnZVV6O3QqK6{2NqiiS!29u)jQ=Z5zukj!ucs0PTi2tGM&8FVE^T&){@+XfEt0F7X6<K~4 ++4<$>S9s_E@wMA)wGL4f754gdyEu|$6)L<Q(8iIn7h+9M$Jx-NT+XD@nZJ`Eg{uz&Ph9(GY%?88bCUi +r-fnG8-%jpclUld{2u_4XccA$WkQRd0s=EAS~rs@73WVRQUha9jchfh4F9Z%7|()Ibk@>|Bh1)S@WE{ +|faJvZR<1krce1`a6r`lU@5$T>#``hDL~hJ`$_f7g2+pn^X_M7pX=@S$uel5$-?#<_t}`w47-z~k0k5 +U{5o-gZoT>^)gg$-8zxRq%I+D<ju<1A;Kn-d<unH!B0VdN{F%Scnhtp-BZWNQV$y00vNx7-(_V7pA1p +t}`NYO;6fAKCqLjcyrK0JrZZbNX8Bv9~6`cdzDFL8-s!5?37unymWYm_Zx-RgAj1`9+8SDUHuL~L4EF +ww8htD6`KeHLKZ;PqfUy7J)6w6TK7sdVx^(Q0jI!wi<2Q~FsVVQvcgE+0+!?{)KBB^$RH&4j+#j&IBC +WOvC^YSLJ8pHGa4Lf@|{XTva`6|#Vq}$lc-%i>n@RCbl{v1neC$%UJ>A<@x89UVj4Bh<^FyyeC_EN5w +P;|oz-C~P9-(qdseEdJluf&_~Aa|?;c&0H59fWM*|0;dQZNTjD4FNyTI4mYM-0Ka-M{hE>zhps_0o&! +ZIGoa%blg#}lkm<D1%7uq&>H^rHy5T`Il_wf9|hzg|KY1#yG?K^ON2M+QzxAz)=i)O2C_rQcW#3Bq<P +bX`_c1LV3|@UOWK;D40SIQm{|oBiTW9=j!*1|VJZC5;>@n5Y|}IRVKZ3dEp<i~hbz@YOvJLt02Row~D +4`J=GaFyMT6XAGbUY7XTltT1btUEOf|f$0x>eX-R&a1je=N%b}8t)&&zp>n}cIX7T#%pLb)40f<X!II +=U43-U=X+SvZlJh63o*7E$?(wt4n?kx}%(ZGc3-T{&%4+K<6$SP-<<-p$FTFZ{0RsZ9sNB{qIG(TT1( +YvEy*;S_nq88}(!-1QvGjzKuw<{efIDeJStFI-Fr;mCRc4TYEkls@J9)1Ls7YQ(o`WNC+aus*L3ow_N +L)z#K~QbGM0Aq~nMC6P>v%(@!GKaZ1%Rc7zvFmsX;B;5K&1kayFi%GH}=g#hKln@G^Tt&&S7h;f-C$9 +5J*g{If)0)hwc*|Wq7+rNQKH~*7caIXbbe;MbMBAr3{IUtpg0NK#S0s$>oV9%?-B%VXuaPq3`689khg +p<zciXn^g%aN0!>Q=LQ~9iS7+TxMDVR0Ng2eBP2sXgveo^7uoR#oc6d4emP>v?P&2m^NNYZCegha$u} +;<#R>X?bH$j4C{G<}b42cPFh|j>$x?zM&}fLIWmy3+%2|k3_<Z_d5cB1R8O~E&XBSRp+*+Dc8MS7-f{ +JrL*W;fdppX#r1G>UN7{aL%oU3%n#2rWzwVcl#dc2#PS2r{^gB)FH;B{aN03`&b|D~F@K@id3)@0eO0 +QEaXx1M4NC5dX4y?(>D_#+saFQAO{2F0Oope$3ndf>_iGsPm>5f|=SZ5Cm1#n0~I?rUxGKzoF-JgNW) +i>M+#WcO}n06@WdVj_avSgTxGPzbjvN%Kte?_Ra`w<0Ha2{5D&KX3jO@<Koja(pybpkL-;BBYWZhqoi +=uLbPwj2G&lR<{Qx+Hntwuf0PWx7=S+1>v@PSLKZp>h;6%r_qEaWH9C;{&a9^bHLyhM#ki$#XCbT!^n +@byeaPxcZS^05!-BVkH9Dlu57F!vAuD_VE6jswawsejc$_TS>$AvIoC7sRhmSD4w;AYF!oXHID2{?=; +6W*=f3Oicn|wuyg$a*as2T|?~!BsQ=ir`tQdY!n=-CGh{sPx))`+c5+0*c#GMJ^O4K4AgrQ8M2k1T2d +_-ueGHGYwt~U`&(8)a~apy%?YU!d6lXPqI^ZF~!v2*(wm~Sq)Ckk3%s;0q`{rwWE4{G86puK}m3}k1M +{{m1;0|XQR000O8^Hj4?tT~LVPyhe`YybcNC;$KeaA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FJE7 +2ZfSI1UoLQYODoFHRfvyID=jH4N{x?K$jmLsFDg+;Oe)ULDJ@Bjhw!<$(m?9;VA93KIq|uPCCM4_8Tr +K}d5O8HTwL+-i8(ny6KoYUlrZI$bTqjDP)h>@6aWAK2mtd`vrw{C7Lyep000<&001KZ003}la4%nWWo +~3|axZmqY;0*_GcRyqV{2h&WpgicX?QMhdBr_za~n63-}x(WbfrRiX`U@PsXJGc3N6twclA0-j+67MC +c_~pPBffh<{^o@wg3J40bnpsQk1t&<uYf0?na~0-Do@pcp;9X^(OXjm#OG^eR1&m&Ffe2-+znuGW^3` +`JuR!sf?2-?7Zl_fR}jXCy5`0!cW9f#&Wh1x3L?hay}4?SV|Esgtv6#TR9MEB;0T#)`TyjS?c<sAKnU +Acu*>k1K4y4gpz2HKDe<2@VRi4B=US0D2jRHWh)t`Zi*!?{6Hq6moBB~UMY-jpNg4FHvoFTF6Qb?@!+ +S+C`&~wlQi}{q%r^?FUaP|ht3ZCm9NS`bP`7b<bZINKs}J#fmlUze}TV}D!0yNfuAe~V(ugHS(ZX#f{ +C6C5ew?_pHVCl86ayw!w2rE#yN)sh2^YKu&EMNf+-KnXjQC@k3221ID}#)Va+2D9hLfr^ioVgghdnt( +F0b{i^92&^-A7R^Ib!(JB#imRf(HDj8fp3`M|bV=S{4#lBF92VkVX3plFb@Tc}lxJR~XTf$s)l9mP~= +xwb=Q;^SCcU3|FyJerQh<VsvlFMgSvj88;&bOrC-f%rVR{&?}}S^&g!bbkGtxcDGO=f8=+P0mjSV*Km +nbbNIsE~Y?ia&~z-8AIyi{P^_K$>jWJ@g6YGFRsPu<ZN;cWUnu%NJVTizCv<m<LU87cpbf;oKCKP8vv +;flk0P&`{80LM&fcby`CI@Ivq{L<)`W8#nl*CI03@vlk*Q#C}(^&KEED9xsWEtzrc&Q`Zzj0#lnEv=o +8doid>50i_71plb=6ci;owlCu2x_KL+kb?@z~E7*y@}bTl~|h?CLT=;twET>u@dAp$aw;`7HbCSsW*_ +;-9gxj4tl9ABJYPvLa{b)8-t<j<3<@j#5GlPeU<hv~%`RucsaI2S|)Fwe(K2Zdg28vw!gPgi3@Qk;xO +r$Frrk-4H8eAwx9yWLNzAArVzPAotv9%6VVJ)BF>1Q#qZL$v^}vH{Zz#R2KvAs}`-ix?E%aTZyc#nN$ +vzd}6%eNCbOjLYHoPDiCLvd~MTC`fdI4}PkU5P>SYX%y@CWMi_@%~~d%j^nr)@DW34N1|JCdE$qeO8R +L{{0^h|_Qx)u-9tWTIODw;zBw4ah8lo0J|%LI1yp%}*+9+RIFUlZgRfXDz-gkHpoI)Om%kkV3E*s~N& +4X;`ttfl936=R$Ubb&KE&*|wfXN3Zp4pAqIWnDZ~Gv!g#gfZ9RYvntioG|BmlTQcpvmB#|JNdE8{#15 +>%EKfLG2l@ImFI@-d|h<RgtKZRUq=ywRz%O^UL{jI+_NSCju8E0$O8W8(iqc4UyqdfsMkA~~&%MG-{d +Z8M+T*u!JYx`xLp-&yFRhSu<oHR6I7#PT|DQ)t`O5PV&nCfI@Wx_`L$Znw`hz`qybudLl}@ZfF|>_ZZ +9cmSl+WN4srSwJ0ny*J{AAH?CCzIY|xFo(HVnCK+^7QAx=u6Y(n^z};@963rbTJ%T+;y;e``{l+-@X< +;8d66U?@oO)l?!w|2|K@T5))z=n>K^o2i&8fJ#S%<26pGc3$xq`=5g4fSe(m-9CQ&|ma-E6`(9#9;P2 +)I@;v&imkkBiTP$6-vjH+^CTHn9jiPrarC0cVCh+n~wNf_>Y?mz_6Lr*inSVV~gywzx44o)!EVV{I{j +SdY#F=6N+6>=5utBJECav-S40@(}QmCUJ6*hz8TK#3jwD0ZftD%=J5C`y1vO@VT13UxGbhv{~#wj;YE +3dtADya9e#Eu2&LADa`IcyUobST7)OOO;{_gvBlXVd4<epoaL<vG8tXjs|4G7}pji#AR8KqMacL2VSG +#UiSJHX%KHp91Zev1`4rHW)a>;cVJ+SlVDlHX062d2Lc@U=b|l&>^6XK4gxpmI)r;4`SS$(CnaeFyM= +%i{8x!eELYLJ0h*)8{5AA5!;(D(nsv|sc1(^{iHdQIQWZwlSjQT$EvZpcvJ6c7ok3VPKVx;u+p@h8p- +lpa+e7(qbRLC;HqD^(>{&FK^Zw9KDb~U6VXQQujPgd}Rd<4!N@MI~k`U-9=E;W^Gq(Vt8kW{+Ju0~|C +AX64X)67a+G67wVd0BKN#V9A?!6min6C)+9Bs@*siNO`DFa6Bm$|0YqOq#R=I)JOsDInpZmEqeQd`=X +>uQ{tdR3aOGi)i&{kYnhU?s70{?b(#5b(nz76s2YCAhx;AU?5w!LSP7Z~(%^uTVoBSDQ|9Q<fW%VWuE +f&1S?dxQhfve!*M-dK~){o%(EH6_Uv7P0`GZsXoopPzlJ|_yJR}7_vQ1H?Q@kXv*E&8nNV7i*%IbwOb +`Z)luihX(A6my3Wl&nh%1iVFdrGzMuwE7geo>Caqw1b}@Ce-d-UC(InL}zgr!d@ji{NOhYOo&|YX|nf +Z`Ck?|;3{^J>dUApO#;}2;C0y;9G-;r1WAoNM;QVr5D5{dMHE%6_RXhR8&?I7mGxd9b(44D%3!(1*P1 +roz3?3FLamxr$p#KI5fKoZe|$c0B3W~bU>XE=GWg2FKjCTbXkn*rtUJDx-e0_a!$godALY((=B40mWM +)MT_!3nf;kCEO`N6=Cke=pj_u=tchdFRL^RF0E#x>7{{q34_M~DJ52c==F3udOibFqpO87zvQg`MRbQ +<_+R6~01`{I7{W-cz>o&5_MlHIDK7)twZ4o2X;azrfqB{Wt`=JqfW=*zV<cP-OSe_F5<fQAKCi2WRWa +S)<fbN?i(NmFf~}0QdtI^!R(6QxL0!Tq6<CNic3Y%YsDda@uL;eRdN8;~i*TW0NT#-~)^Op8l`Mp;>_ +Sz<U<p63k=5pY;)ghw=*b=#g%yRC2Bl0E{;vzcs@|Lc9hR~QVRD<TtE)1Tl2{6s<0sDA_3qr;mKM;i6 +aS`6BaJgqd!J`W5qz$jng%F}<S-v)e+Doq)hsP|;AKQ}z#vU<h;fV)z{y&Af}M6kZqXns_jovbD}YOh +p7!l`*1*?hP*rm2CMGs*Xf=x5&~hPivy>7+aYCh49@DaAvTXj${212~d|R+664O!0xy@_~cc|y`9xyW +K4K{3biEVbxUINJ_Q5JhDhNtQvy##%co0v4{KONHt9@Y1vI=HnuTT<ysDp!dee_I_bCX#Vu{{==$L8) +$9({E|vQ;3S}t=#wy*;8^u?&`u>LM}zJUGIu!+9nqmkQZM32>&-J{Xs4M!VjRf1g~de@nx1lIv6x%<S +^=~o>s0W47PB=mMfHtFC|F(mB=-4?T70u<spdTlt&~s+p+uL7&v}tqy~kCHRQm#G~uk=b-U0M0RA+P0 +B!Uh<_Hue`Tv}n<&W*?vwHmeY1V=tWvP-61ZOLVz=#3_e(N~$WYSpq*bQ&x7V$qCAb!}UGu)jicThu{ +?KSXcT{Td8OML}pP$`7psx{!EGOv!dS(Rw2aIy^Kqw{ALrG&orVen3(!gPG#tOjh`DoYmHfbl7j@rmz +I)7Z~m6a<ncD;rrw@KXq(HL8Bz5taGV$obn2=#O7dExP~kx0sg#z@KfJ1uzcIv`ZF5i#IAk+OHM8Qu8 +<kuIzf(!Fo}+@Nd_+xJ2&snBFh>y&hq`iKS|Q^~S;HI=K04<=lqsG~gM3;b(|Rb>PlCTdg)ux{ReuuA +=;21gImiOw%>=rO}-)|8Qew5MR(h;RUmYdG;0x2@3-sOUOwB>MC$>JuX$am_Y9vh-6I4(10`&$=l-N_ +1WpAc_Z|7bHgz6fe$5Ujte#CoH|Uoa{a(r`4C&+LK&h^((r6@Hhy17L7*W4Z6O4m&25R&q?kmc7;Foz +RR#(SHBXE5&Z@~oGY7Aso7<pOKp2G$Wk4j?R7?S>(H5;zaHX(F{ko7sR0*h#5Vpg|>+8!a8Q-%)R8y# +-6Mn6uas2b7h)_w`M&XL0=ORvB+BQ1grSIKwr)oW}`Kb=!&rD_n^FQ=Z2NKJ5tTY}UYhjYeyOU{>^G@ +$q&5T+e$nr%kUMRhz*bTw1)nf~oGxyyfB5!(Po>bmY<+Y*XR;HZ92Y9QJv0&OrC0>jj>RhYom3r4os> +v1LS_zU~<lM2IRQW5wwGm8x3T&?VN26nED^_|(;Oa+X!D|~9^oz6&DdC1JylNVGVrvVBbEcslOzVcN3 +IrSkQS2?FNcsQt?if>!?G(+21=&t=wZffTc?%p<O0`W2kgd|aE2?06_beq`M4?i)59Ub`h#Gn?jk<!- +0dyv_NNL9zzrT+P+G0VqSF5bO>D}J?o5cb6CGOY(Q4iy3hLa|^hb0Jw!M%MONr|%$tt2&sCdu#3B-@C +!=CyDcN3$r+!<y2oV$4phqxHB7;<aZ5IGmsyKEJdDISM~1bz8rlolY;0^Nvdq%Db)`+=Dltiw8fPM-K +^2jrj}T6J{l%w511kRCNLR@Sw}{RMnXiT#PI*2jD8EcGP44rqi)kDJw+OMkl>2oKFPt@~_(8kgpOK=R +<jgxPC&^%tH<B#RbOba+~8MvMHtC!QC#r;$-nrT~oz*t#VqY!%I9z#ks7Cnsxh~dcG)EGuG`}>#MYy! +V4>q<=8g1&tw^`9OxyfqQ&AgTBlIJ?z3eS;7@4_hO&n3Uces6Ly({DkIu~gnLGzK*asP4U|bZtw|gT0 +5&7Yss5bmlaT65xp14`~oRYI}@3PG#k#Xa@qdDs!OP-FKg?kpN5cexKAKYm&Y2?th(H2qzQQ)?W*fx6 +ybYzIL_fM}UH6{#d;?178sWF|WVrGSo_erR<d1#MDO~C)6v9DC${bc<|0-;QU$lDtoAl%hnj*ignwt6 +~tjGOrU`>n=*Q|$CxyOd%C(AwYC!~}Vt-HKV?i?{OCY3QkybXvRREupazaknmNuI6Y1?`)3>C@lVJQ2 +__pg{Xj%c8>}^O;5+g$o-%-h__I2B4%IQV;E$CiC#z1)lx5R)|$JaQm?S}wcSl&33o4rCCpZZt><emg +;g5Uq_9OfcWcz6PGNP<c7=^4IHV-~YAUPf6_r*c?yk0g7p-MjuX(zN#wAY}n*@P_1Z0EqZXtn79rNc9 +z*TT;&;tOk)%z{@0Ck{g?1O(R({&s@`V9fg7VN3Y-lyglB(xJBw|_Lbjx8k6@tnwo3quid93S0q9_-l +=NNXzR#Ljc+@G8zFuOIJOH^6?}JckjQtbb-jF2Nx@MDhIW_N&nN?59iBUQ_7?tG#HBW=R^mUJCW|y-} +7fpIgbVLWr8{t5DMQJMnSN^=nk{>rkQ^em$n1i+}YT0yty*Ed1y3f9!fo`Aiz0LfXjrTrra0e4eKQs9 +3_Ayx*$_0w^z#ZkVn2!G^H4-1|PE8Qsv^Jc|PMof{ap<Cf9A@M%0l3+aKsXGh93?&P2MyV0l*pqnDE- +9l)Ey;l&ea9hLZChqnMq)jB-7)qBUUJRynW?eX)=j{?uC+jHuic`ayU^%4b)ZJrhkfYv}QKQeQj0R-{ +TrY?cxr7jCUjq0c_;YZZL+Kp7$p{)`wW}2{`krRM$Xo27fx$fuL2F=(B@{(oHU*ViZwn@K2V=+=<G!9 +fSPOhblgKl6w~8quVc?K&klJBgu}RTdIM`9watiyYTaI6=ajZGJ@QbaxkMh|q-mHJsMcQs-BiCwSA%C +kP)_s$zHSjo=ZYqUa(KPx9B3ZkhJ}N{eay7$Gr|=62{Q*M`wfio31S011Pv%g@);9xnGn48R1`O?X#8 +Y!egs1wj9WhN;sc_lmcShFUg|YLt+Lb`T)`&>U2fXTIi7#C<8*Vl$n2sACwcjdQ_)TXYJ#W_SE`EekN +Fen@{+aeYuQeCXZg4|9E@p+_&*W;TKP#zSoJSDl9EhAMgU$lrj-+&m!<2Hk7&_XfT2SG;EPY-;q161_ +s4a&CR6g-S-^Hb2GkU4xe0lO0YQ@5O-4LXec}t=@5Z}aI@r|Hb5Bew%`>SIIKTvXTH$0w@<It1ibgew +pD$c_v%;QXg#ONoBCFiRbgU%56K@MlbQ!#JOvm*)T>$f7zZ4k}eK!K<igvh@dD^|f@(PLc=APXOxDqz +3Y)xf+oRiTj3PzU=RJ87d2?))BijySkI9S=jI@17sij%xmMXg$^b#_r1~JwL6Qzn>0~P7fO%AAoKd&t +}7OgTS59N6Y%LjRg&ZUm#b@cEe2%8y=^foi0WMci0;lO{Xtr@A&iLkdFT$I*`ALBmNFc>#8Xconscxq +AZ*{`WTm<N~m(6G8o;X9?fA~^<mzTI(6ubUa<?bD#!4;G{#V;%y>akEe*36eUi5#$81VppI42cQtk?i +H4N4^NV%>#Ed7_C648H#6dDTQ!xIogwFb4j7F6}DBP^RVx8{%|tE8SjU;$xuC)jD!Wph{%LDaRv06T@ +BWy(kNsYHRt57IZd>R_jhZW9B7ods$v_1;u@LlU(>opDBA^8*NdZ)hA>-^Nnzsu_c;h#0y6%Z=5d*{- +dO$=<C64FF0wmeXs-(?BKM+!r>ZDwtaPN2hfsH%Sk_!hd=9Q0MW0(0oWh1ko>I(<Y1U_zJ9!f=`?1wh +>^cI((eC+K$gqHvYXYAFx`s@K|Y3zX7R>xm^pIE71(k`8Eb|-Hbrl0AF%v+gpX?5$BEav^HUEyGfqZB +8+Y|$dlTGv90FVwKX)vlUl^UJfT$#2;vwQrv(lkZK^wDVd4vj4f$L$sss79IUl|1#+xDT2es)iOIs+Z +x^1K7bIjaIss~)@BbH!H=*R73Nl>PhcB1`-xxHy5->LOKvtCV?mkfEITCa=Skiu7Q?BQ8fi^2JLqTv# +w1o)rppw4DV;|ziZP72cl+$+b&976K&ihg?CAK!QTLmWJ-vI32VuZVI0xVF}y<dvs=tq*FP%SYOYXTt +#uf*Pr60DQLD^dn|bf8vTD(NMop)_X+NIqJo*3;6ix;89O;dJO$(I{q_r1B{f*X&g|i&ESPoG~e8aAC +ANuYlk)CPU#?lsl1hsIYBFN-K}7hU<vBXO}(YwsaQO$V#k7ZDyLiasr8zskI4EQ#dmJZ5eOdZo4VoL4 +Isu6Gf;>Gf~(~g6;!8b_L5;N*MaNFUflir-@5~WKk(3}?V1GR$i#EkQfsx*T7D>NDJJE$P-@tl)vyr7 +b4dU4`o?z1Mk9N(Y%vgi16sED;%huxN6nYrxIGPzIqsP+e(`h2^#IZPwiX+GE$ecwyE?I`+bw!a^8%L +MK20TeQb*(bW)!j_vmzjG7r?9K95c$t@5~DMYVxI21$7q4OE<nvxI@Gz)dr<wsu;8)g?_J$T`0?{?%s +u2G`5xYymA^#uqRREqx2l>5J8^L(VvOq#2WzET|z8r;-;6bRUbDH>8yOJQe~<Lisa)88;>y4rx~Ve>w +Fy>6~;-p-9n;|z@wY_{GxPLbA~L<EHM(EP?O{J(pizX1!~e4eu#&;6zOXA==>HtBc18gPT32RY<oO;1 +kHj&gTzrM@i{@{sh8rJHDf@^Qpx98<00tzZ1m7Rl*V6ZiuE#G#OnAk=yGscmfm}Biq+Q?ju?En(BqeK +3oyIQt*7#HI`Cd5gS{qY=ktTX7Se{SV$_;hlwJ?Sfxm(!Osh5wrp3#?Lc=>fTh2S_azT$-R|>G5T7Ah +?LN}PQx=QztXJ{Ys8QKT^cWs<v*$&R}_Eh2c>~N4-!z&(ZW&rACTc`R~8c!(aMCz+rFpIpl)UdU+{qf +&W*{{cS!F+dMqb$cxXAOO9+UigVqRW#?ebfqtVj9UXz!?<}UT_z9-9jiIUM1-!kc^Sf{9trt4lR63hZ +Y_Tzbm+r#Ts~J!ozj6rX!YcK?NHxN#{|P7S2rr@OovUjwnB53)#n$`DJhJrf$E|8KCR7zBxpofyj?yu +Q?bTL3kL!Bntp9#DotyL+<fZF&sV7xCYO4=O?M7Mn25ZPlsiudX+*g78hXmNWEVHq9Z8Fbx~#2Loe1t +&7AJXD*Z~02xtu~v2+W0;+3()C{(2i3ys%$9IBz+<!em3O$~rQddO(iW1uJ$82|uF3v%^%a6_EE^wkX +B2RuT{WG1q#laNxWA37Mhw#8RbGOJMlG;fot1WNo|$62v4$e)#TmPjUrGn@4vy9As-R;yab=_*T7JXs +W3#oJ6=brnI^I!-X0mufEQV1P=^C8^v_H3!hIU2`J2W6hD%9cm7RaJB3DD2tpQf}{24IPrs9l?9+=e6 +lNEaD(2j*DsPq-t9`3q9kM|zNJ8`QhHUG0MjPST?DHCX0dedY(|@z1pglRp>>Nyulx6~TeLLZ)L=n~Z +rd@HIY}f{O9?2{7+Y1{*jx##Mn$XetmKM;ydQ#w@CUjrWC*PqyD3RLsdgWJjUtnu0cMJF;bfqaCvy_8 +(H52cKyk{UD%#<W^+<KePw1lU{uSJIYyY|kvSeBAjxi13$wlU%%usc3XUT}Ead*?~EWkq(AT6?*VYdp +52fWFEtq^-uT1{1#PxR}B_d1u}+rAadJjCug=~<27uGextFbObd^>0HtKguUTK2JxNm*c53y1JVDe2# +Y^UFGoEdXD#Z)qsDxJQ-b&6=-Qyj*Eq!v!qjt!t4w4s#!Fw4RoP>z%Qc1;8cOr9wGHy6C#O4-V3S}#g +iF7YVjmhp49XJ4Qla#Y+8uy;S(qUg-`kB5VHvi)76qCMLw=Ds3sIt_g2JwHmbh8BEm83I&ed}f8-rSS +Tp=|Lils(qEdm^UAcEy3Z22GXc_us*68&Ec@LvMythp)nX8Mu)P-oY6^kbF5<JZtR}sz8vM;Du*TW-L +EzT*AspXPL^ScRji{t9*gX8qPAkoL<<LS0^oEfCd`*ndVk>qVB!T{zC_Y;-I>lmfN)=&=@H<HvB*j(D +s#<faT#ahe8LtQ0PZ?Mx;;)EbxD?};aF?#)h_~*Y08<h$gLr<2vkSOQUi+ITaTaMPx)opss`cp7*G_K +;(dKCM&FleIS5^~HAiXom6Xy3yUM7%7k;n`n04rS2kzZw+%4ngl4{ULBu$fC>rLJv1ZyT<8hDjpc3t* +iJ_bN;^J8J)Jl=vRfnUR}$e65Cba9w17H<)Q`@s;G}oCRGDqoWWF=T$Czm=zb}J-Izwn6U+W7R~v?8s +DZ*GCB;`$L{VdN??zK%A#Jnb8?buGzzoukx>>q-^<P~*jyTfe5KBWNiH9Y>e3`s_sdv>`S81tZtUp*| +UM+)H;&&An{VrbpsD^`dvi0v!%I`T8z99rBm+2k8t3ukeXd2(5#_vSW%F-^kq@siTy0Df-y87W31?fd +%mSE~uVi?Pg3M-*D8WwneJVq7oA;QbbzWpZo7B}Sa=9PZG*r+%(->*fJm!>WLe_F9bAa6MIhm}IC7A% +hm!R?x6EH*-A#^{NnRt4f^ex(VA2Gv2Iwu|22{eM-8_4>m!Stt!O^Tj?}H&WUS^$g`eV>h+jT}jMKO` +Dsnf2)Q(#Vp$;TVv&IF5~OkIA2cb9Ox0MlV6b1yDLT#^gFUb35xH42#oje4mC}|A+>YRZ@@E0Qwa=U@ +qP+3Ye~dD*=dJ(m72c4VhMcf3tw>O@S0Xdi#LDjs0Ac<8>od9?6n4pC&(%?Vd*i61y>*G!k6_r*ytPC +Oy&4OTq`KG8Xv5+Fel$t1$EhRlsA>uO@91>6U*FOm9V4xQ%kc5&keDZnIy)2(9!CoUKiN^CIJ}F%@V0 +48-A<XOG~ELAEHudc1wW*{^fy*2Fly{$fOam3M32vNCfU`Hh1a1g?IYa1w#c`&^uMwcNF{$k)rESk0U +(1FO}*hLp(vw-0PrjL{+05USfm64sV#mi3xpMw7Mn(9nTss#K_h<NqyKvL?|M+z+p%p+4pKxz8X>EE8 +h2TIldHl6%ncyKEM6$4Pg*6A(<}{@Ky-EQ9~Sl|GoHWD(Mu$`G`iQSTh`ptF=22l#ZOivN0B{#>qNwX +zopN66wa?k{0gxW@XK^;!XU7W{65L|HX}c+LHQ0s80~U62U^jN!Q%lgps!&(kC}^BUsVaaRm6QWT;xg +4T07YBgK%Sdmu!^QT}#}zir6xPEj{W%TQe_Bj-cWy8=a6(^#2w81L3b(iFl+D+!=(0*&9-vlhrGwGT@ +~O+cB8HVU&)1^B`>tRH18zfDXD0gU+YLMWLe@5Cr%v2?Y|?&{mBNl>gaE4(4wA_(TXfI9K8i#ExijGz +=?5M0&+*)`ZFnQPt|^ify6rS$HwCKf$YT%}#CX0h5&Qv|OW1a$waMGP`!jJKxa<}@uSa<AsrVcQcbuU +B+j)UjyfzHugWHfG)3CPk-3k&6Dbhi}Nr?ZiM<?wt*aP5#9%j`Q-#SlZf^s{!8G&8vq4972<<?EA>b$ +CM;1@RQnMr%>RKRD0etpC$D>{|8V@0|XQR000O8^Hj4?000000ssI200000G5`PoaA|NaUv_0~WN&gW +b#iQMX<{=kaA9L>VP|D?FJfV1YjAIJbaO9XUukY>bYEXCaCrj&P)h>@6aWAK2mtd`vrxmb$s0)m004> +w001%o003}la4%nWWo~3|axZmqY;0*_GcRyqV{2h&WpgiLVPk7>Z*p{VFKuCKWoBt?WiD`eb(CFe+b| +S{@AWGV8ijaE%*GguQeUhrfxuWxKNi?cqQu9mR$B^^JTH{(w@;sr*SNlDBc1m==jhe3U%~A440f{Q;> +S6(rkZ_pJA_h7wruyfm&)k8VUJkx8p+?2hmgx81M`4zeJ~GFz<bziwA?+S>614bXwU{rsHB2cBXrz60 +24ODR=3&Akd6rllCV?A3<3jM*?bBC26FoocP97!@y3+}E(xiWY?35y-}=?^iV#v_1?e#B)Xs!}eKgk9 +6dGA#K^2|Cwyi2uww>au6gUMG!JD*HN-7-}0=t?E^ed8`d!Fmd{ZFQVtVW&i4JWVi5BYz|yaFMO?afS +FXBk`+@Z{U0o%^$;e?m3)D8{Xo-&oz^+;umhT>N4+Fa4?DOu<Bo`T%MQojo70x|SW58HF?O_-U4TSf{ +vg_fWVhz=hBE5qlM7jHo^W_7Yu}G0h8^)@aY1^j0y9Zn<FU;3(T?eAaoQjr0aY#_*g$^u~9QWRX8E>u +ADTbee}rxbmpW`YFi!$yh6_v;(|LRr;v_uEAaRvEDIMz-%Pp0^W{`xy(P$7oYCG+^sL~7mNAL`gZw!e +hMgxAt8=Nu=2P)J_xM{7%V{>YiOgPX|>J92%y=~H#Dsh&X#94U|-Pk)aC#V$GD6|ZdTWftBFN;dj~I5 +D1-Iby^fNs2qWnPq6hBBfg4WQOU#wkyufsRKQlDi5rlr%;BOO%clOuvYNgnIZ-GH_{8FTkME`xr`t&? +b`QXL!Ra}hx15ir?1QY-O00;o{RI^ZfN#I;Q0RRB70ssIz0001RX>c!Jc4cm4Z*nhna%^mAVlyvrVPk +7yXJvCQb8~E8ZDDj{XkTb=b98QDZDlWCUukY>bYEXCaCwcA!EVAZ5Jd0!icvTKQj`ngQni;>t<+2V36 +_aBV3Bwudjrki*KsHXBqV&YZ12q59ox2JF9<`(GV#MxhPY<<?mb#9)lTg=h|?{h?p-C89c+N?2w^<b0 +jqL74+R3_NMP3tIBF*lK1tchVJx|;Si{OZKnohuVSF67TV_)xk$4{g%LDlkpDXKX#xoYH0_){OJT9+o +AbcjfckkIR@(<lK8(r-q4G!cCdorllP`=DkUG2F=2+bem8+oy{t+Y^*C~lZD`l+asOP2}YJiDps*Jzp +qxlWy*TTO-<-OyRIZ2E@IRq1MTDhy?$Qa1y86mnF%2l}7y#X!2@nxa(Es-c#g=qaHGowFIfSm1~ZnF5 +<$V7Tf>A?vm{j=9Ef(s@2uLuIB^Oh_rbV3FU7=LPa>`Iy=-P)h>@6aWAK2mtd`vrxl))Zn`a002N100 +2S&003}la4%nWWo~3|axZmqY;0*_GcRyqV{2h&Wpgicb8KI2VRU0?UubW0bZ%j7WiMZ8ZE$R5ZDnqBV +RUJ4ZZ2?ntypbu+c*;b?q4xbP()50rD<-vJ>#-K(5AZqx=FTa_loQG3|gXMwlXD<bR6HW-)Bg@&`J8T +cb5XGB9b%D%slf#B}wvjA!#XGzL+g)>$F(PbWG(+=T6m{N>eZCa^n_wKFaWKLeg5Poe~wT7gE#8Dt%2 +?SFf`qNk*d`I<K9a(%XfyRH{l6{$J@r8gkHddG(4al}l|U3F}|wb-}-u(gtn(uJIZn%(|jd^NffV&Nb +76gQCuD7M8QxTpt`AwBoXbTUMiyS~j(DWMubbH<nSUMihksc3MF1Tmt!A<ezzqEXdXLG<)`#l!od?LE +l+P$}x7OtrJy+O>hCQF{q7oayfzNk~iV-Lg)gfo?V`_O0J~2k>;fG4z-jzcE=i;fdZlw+ZL?YKgxa>Q +w_;xtst=0)rN|iUY=itxWK)@<NXO7_1fZS2i<1YR<rH!F`m3eg!IZk&m{w8on0WGW<O>lXExIj{2H9z +s3x1;NL|#1TF3Ps8_C;THjd8x`%`0T6HX33Jx0{E9F1m>VJwI<o8eso)3PVoA!sqmD}jA4q;aZLxp30 +UNq-mBDm;#Z%m&-Ay^tl%3T@e-U|(A333WD3;F{anT2)0ZOks}?+tZ-nudUBW<auoheu5L;ym~>;4xj +!oAu9v3pJji`jz<1eOD$K|mCclNrDqoN>A;jZAKPh9?T1sXsur+g`#*dPE-6XZjtU*{@Q;yhWi-7Km6 +bu?4qXP?1=sta9PQhUcH(y0?x<wxmauk0dqysW@)>jt!I^C;<x;bo?T%Xj#v>S(k}L^Joe-@0T_2tVl +(EFHa5()Ku=PI0Qg=Md>y>tCve$}*k;As1wnH)4y+dc#f`U7TKmPsslPQUtS`}1CjnZMME)fZHgWRS0 +27t;?N0v1*caY$aSjY(3>!SvsOCzqAs6j}J6S6C0+J@yxB<j3Ub|H&ML{p<cY)CBYP^OsPmE_}sBWlS +m>NTf_Ym-Gphm91r){u${wWt9$8^S6$TkjFNU-ujVrQjaDiTs5$%!flh&6&|tO6W24H3mc<_fp0kV{9 +V<a@BC9gejB@XkQ=HgXEZh4}_zoAy|SMA`OcC@o}F|-MdcP7t#fPuI380j}EhTC%2EhQgA0-{c`c{^- +DUxcuT@zQ{z4Ala~ZFC=}Smo-Vk5lnRlAGu8{0FGgLsqe$lqVMOk*3nn)P-bMkWO3Y;y%4J{&pJAfzd +!qa0taHV{e-xv=B<AKnxp(dE?Q)41J)@Y5%2`>J6DEYm?$v7KK3l}4*;QN=2T?s8`*&OuGSM`sr)l!x +-`U5<ZRW@-LY0B9$i204i!`~_`}+y{fEi+Pe>pbbn;|;NqTT;fm?Al7`9^*zPH?4M&ZX~g3>(o!fKK+ +?n8kA5buUZaqM*=dpO2za|H1L1<_hIA<6*ZNnMs?AMy8!R$DNC<jQw=cb=HXwcOO#ShY~}ELG8h0lcC +eD*XzCS)tDh)E0If-+&}h`3Hex~O7?k#{^*?*3N9D8jw}`gyVj_7v{fELN3KJS<MilD_4FH{_&}!^J5 +au{#+ic|jPafL`jY&SCE2H1>6E36!>fM*IyRsEe17rf^u@{5>39@X3~bCo2kw|T?i#eKXDh9EfJ^K7r +<R^zxUzm~(z$;>VF!<4XTg(G)=daXmo@!^(xXYlYitMdNGPJB@eJ1;C&K1R0juOnYmXC-TkeuAv^dhC +>&KIJfKW{s9oP&k4kN?qE%@6HTg=I`OKQ(bn+2bC`9|^<T{c(Fk7?5CU9@{yD$S9^gmzsUP=D!z$Wxy +`oOU^Sh|%jQ?Nf5Ga;)eouN#?+v#pT=q(yMKS1rZHb4ZXwzo{6Vmg|a@A!h~W`X@-noOuq@c5MW_mGn +}<-`DV=4AaJ{f!Cy1PNV597i>g3!_GJ8O4!p*c!);7F;mT~eN5xn2gf2CI3P_r-U<kdIPQGjhUU(FgZ +tqy+YNE~T^dzxxXe4+<4t>%A|(pRS_}3t1o1T@sKTrH#-D}juIl`=blJ6ZXq<)*16QB@oRfQ<!o4g+_ +v!P)=boiqsDl}+ipvEOwXAvkmc@kT2wqGPzs!9XGbbkHfGt)KD0FvN;DYJL2!FRI5#SZlkS;Xh3PBb% +f`N9IvB;~IwfURD7IE6{&(=nb-w!IopnYdV30)0fbR7>SlRH5I?_|N9FxfuNEVbU(EQ9~zyNA4Wz5|d +{zEj^h^y2i*+u6nC+p~-Flh=ICzj$-{+q<(jr!R-ifk^#L<^REG{%OhhJ=E?=**2GO6B?Wu13PB|=!h +7UM#I|p0rmdU6v=%TwBD2aWs`pqH@*}UlJDc}@xcj91t&g(C6TDk8F*{K`+>q3gI87I2jHqAUusdfF< +<iKTwBGr1&l-x8cE~c-Ro1@7d&t6cNlx(fC8EHSIqrYe3p^MO3jThU~dyfhh7HvpaGZlx~E$ld;pinw +lzKQk53=}roE0vw>=B{kA2o~p-GeNa*R&Z)j}=@pXFvkH_RON6pl_~xLEa5D((ZxHUKPkU|UOkk-Bp` +_JZ#f(Je!K<=A@NS=3DvUdT9dMg$DBZa;2(6(5ssz<9R>M<|C5{NID@Z`)x<%po3l+i)-}|5XL0ABCz +2->saVWIbXk&aXIN7&TC9A|V{7t&sL>98fHEx4EtGhq!Os_5cA^^ZVxS(EIoA?|-@A&J=oqzs=w-m~) +w?7oogtAsa+3SJ>Nr{mJgFN1+W>%2W0}q;~ILrrTE{+WmYzvX#_nw_{8{(c#^e_KmxD-?<*$>p$Jx7A +`$)kHR$e$R_lN(%~x;&-7tjUWz8=+xetNJs!u`bpGAm?qb+*@3(PpLEXmo$lO8HiT?29<AWET?{W<&5 +0{%7w`%?dF~pw&ts}-0E`Svp|62M9Xr+s|J^u+%O9KQH000080P|F{P?L&3{;&Z601gBI03-ka0B~t= +FJE?LZe(wAFLiQkY-wUMFLiWjY%gD5X>MtBUtcb8d2N!xZlf>|hVMLumA!N&)Hmp%in7{DQHX#Z_B3) +}XsiJCj!n|O{hHu$oMt&O-#^&=|4c`E5CGleCPDzA2BXOdd9b>l9Kup(*$?qclQ_ucbdl6r(dfZQrw* +!D?kg9D^jWnSKDWXhr4y6IRyZvVD2_<@oOSbM&y5~OY@E^~-=-|wAhe{7!8UXg{+-Y|ZXM(a;fS(Dva +!P&Jz7jo>kKr#w($^a`)KVc6aJ~H?OKlxKV5#Uf4^2x?cSE+t%CiZV!zq>u1KoQ`n}xL<?F867iGP0X +)Th2PK_T(hSV62^Z%s#GeR?~-h#cy^Z%T^18;W`W^f^C!0P6N;gEe<)Wy2kLcOi>>}T-e)PQ=5fix2l +jt*v=i+T~W7>%PZ?kwjb2ov>;KhVKZTjz%;$s%|u7uNW>dRsK}ck07u7pdaK^E-5!ygk|GxAH>DVU_{ +NzV{3D5&~a^gjb8VRhn_azNO5{ZCp&!aF|^kauK57(wpGd$Dy&3hRN)|%bAFA*O+mjT*p`$q&v*)VPU +=t$;z;l3@M`fJz{(}s|R?U*lOOee^5&U1QY-O00;o{RI^Z1ojSEE2LJ#a5&!@u0001RX>c!Jc4cm4Z* +nhna%^mAVlyvwbZKlaV{dM5Wn*+{Z*DGdd7W2TZyPrde%G%U$PbYWWu2=|As`QK;<QE++lZC+p(s|=E ++w&{$Suj0vj4s_Job>46s;dDiN`nhH^a5jJIM2O?P|mG9K^2D#sOPdEo;Z~@Ou=OtuDTBH(JxB?7)Oe +=Wq4ztXbec;ofWW;E!D!qs<KHSiaUKH=LF6YF23Fj98`XIjbtJHbU{7tGzH<jYgxAuR+)xk1Ad`p;cZ +Qjpxb<EluYDXK*i>L+ssCTk%4yMKJ>W8;{5S^Aks_l!b+<Ifym5Er$*c!6707Qzh7~u4M@;JR`N`Wj6 +94^NJa^^Y`X{!7mn)Svy~DovWl+Wxp&I_itO|CFs>(_%$NjYRBh*et{~gYe9-H9ImSB+FLzC)li#*kP +?_Yu*QP%y2En$o=MA>OK{qQN$$KI2@1BTyByeMc+nJ6s0}#7ltulya<TzD4z<k&E~1FS8`yBioHO3DG +Z@qAcm`hd)SpA|`J<?%Up?*pd1q4Vs%VJ6bqsZ@RY2-|hxSvVG%*M;v30QpW?|Jp^!7A62B!e~HD{VG +NN0}{fRNcrqQ4JYfv{U{IP5q&350usGB{T$Cyr$d@_0fPVARBp>)O3}mOTq@;$I71eWx7$r`txOGgwf +DtZUWgZlNoI4)PTh3Nx!35Xz^=edD%x>_zq(tiudprbG;Mo?)f|$1N6fEga9_sw@%3Y4m^vD>jM|6_5 +a}Flm+nI@cA+waW})?i2@BmV#E8gq<$Q3YHXeTjt<^NA_A^JqcC%T-0!LzrO^_&7K>JFr~1C#_uQ|wS +IT|kZRO6*6|&bnp^e6VTSK{xSPypQn)7b3{hY>kf*xzpLiFddWKs&3t17v6up%H{Ne7Ws}K3R>-SfmK +P>Xa&ByDz&x=_sh}sl9kN4kDhR)hb>HH8krt?%yF@wp>^LY8((@G4ax64Be$pP=}xe{CzyfrTaI0-jl +@ZzbfD=hcra<bLd1=WZ{r_1H^`|<$pk+Xa#a4*=wqz5>U9y$k4cHD6j$jC;viTjumePE#|w~COoD~>s +hL3bEB#10XUVL{n9Yf!o;2=m0&6_ztEiTwh`M(PzN6vma+(zQ}i3lA7f!*oF|n3J>SOC+v%Iv!pIj<L +veNa0@Y`7owIHmUDmS7RX{<1+|u)oTcT4L<c)M4LUM(JD%5q9hixC1qRk!H#`NZtn6jkk*v~!Y4sbo& +dE3>VMC$BBiwc#@z#nK<)jnXk16y{!6DKa(5J-xRv%YjEiyhAl!B`{$o7tIMEA#lMWeC;r^fFNM6R^7 +A1C&at5E<blEeB6zaK#NvRLK%r{KrYqk@znM@PyP+#X?y?NA9P&1*{nwpl4kTv;UQfeQz9IqI%_Mpud +AZ@A4UwJCPCZ<hkXQA-hU+A%wcH1nXEhv+XK<31>c|-*rT@IS6B@+^4Kniw{Gfx;dYSRGyOqNC-=~>u +Inpp&!rDG3wZ-31n7N4%KKK25^*5QC_Dr`rU(N52xU<#GT0>nLr+MvAlLhRH&JZWvv?s|u!<nS>$Au8 +I`bxJG~+}Mkf%8`mAX1nBjE+bjA`JFthHrW6s$BX%pCu5@=E*?oI){m8rm8o<R{w<;&nw-qeJWF_(N& +K81iy0EZH*l!BC&QD|M^4V74<?okHzWPhna;{M7DTf+O#;Lpe5gUFKmJ(hFf5T{{J?ZtZ9gwfrYAQCW +sQ&|=_I0I0*ME=!_n}wul8izuj{s+6cFh*IAB<ZY!Zg|Z>K}bgLzUYC0LpXkH(;`0`VYKU_3t`R0m}M +ed6Zi9RDRfPSteVw;zpFC8r@Mj6|N79#LCpRh=7XnxsK8V5ceL>V5wC_Tm2eZ5WAKDyJsx5qyKKxbag +w^Q31vGdPy6Bg+Nuqo(d@F)>!#23pqYMBdz9FOpM#xq8TN?ti=NymaD1&~emD-Eb(yaLa5is{N&BxXx +`S-&S#MLl%oIQbh|w6=lb-j+V=k5L}A`FRh-@SPWq<Zihh{8mRA)VbKihUBn7kW274bLwEjNYscce64 +6w>TVcP^>-L_XRK2>~&kICU@E6Sl7zl(SO7fwlNe9RN6#TQ$Yp6N0#FUD2e1};po79{hIQLH$JHNQtU +~{Wi$Qrwg+DM$kU$&pZ+M3&o=dWH}rpP^h4`=ui?iMW?ywYDM)8j(vyH6xLv*h0X)2MZMs$mxcS;VKq +fzcCVR|$!=kb3iF@_*KYx^X@_o=#|vp&mcX2ntF6HgHAHFr3d8x(8I!;JKq{rzb?1&nTC$8jsVdZ_U5 +ExvHhSxP1Qn#I04mvG{f(vomcrAtIMQ{P^<4>;KqlhlO}~qHp-_632yS)8T<$8MH52`it%3+J7KT4Hc +<ysvkuBh!y*dA!bPughif60%dl!KAz8?BaQz9P)h>@6aWAK2mtd`vrzObdocU}008j;001EX003}la4 +%nWWo~3|axZmqY;0*_GcR>?X>2cXb!ByBE^v8mP|ZrjFc7}yDF*h^1qoWbxUg4GD=2#qPo*@IWiZX8o +kqo{H%Ys+sDVKE{t5Mg#|b)i4!eoii?Sp4pmk`w_x6GUG)siOep5POy62BoG(?Q36xl4-&u{fXK{`8l +$pp|<hz2Z=Nn{Yv+EgvT9-hwdO5X6NXgFimOLFb%`azeRrDYCl1)AuiplNzG(P1;=sm=4y9^mo*_D(6 +)xmE;DWV!HF*{I8VKhHC0p&?IGCFtx8Gz*?jMs%^jar;f$U_z_CS`!ALZ(JfA`eVAApb@7y`b<=7=GG +qKwVx*J|DB-Q5YU^d2sYLW&ep$m8*ku{=KcUsO9KQH000080P|F{P`w5&vq%L10Ot+>03!eZ0B~t=FJ +E?LZe(wAFLiQkY-wUMFLiWjY%g+Uadl;LbS`jtrB`il(?}5h?q4x7LP>;UI2}T#NJT28oGMimiE>{~C +wF5{nx*!x*<F(c#DBk;b!@Lq3ipx^P3@h1=Ixo6Y>ciT%QlT`3}zX~s@BGVSX*5-4zu<-+OXJKSbXuk +6Is7_jw;s$M(t^u)*`<Xw`fx<?|Z2Pq;hzRCUg55Z6}NOIo3{UWjo0a%HU3_Laa-CrHlQ!G1^4Y>Dk% +&yX)-y?b+4qi?_eS3B<QwWStbaDTTv0a%R7ZfIgi@qg^RMSjZaHSS+$i7fp%T;Q$_i(x1c%-aLQyOVr +u{7yhnS*@D%=+6YUF?c>ynCuBylHgObXZ%!{R&tG4kUtW@Jdi@b|H(x|iL<T}7?l9Y;DA3rs2f9P7Gf +~RVc=A>&O#Dlcvk{pOr&PDW3E6Klim7tJOUi@HGtszh@Uk}gexDsZDx~G0X1U0>o!Uj~R~*Ow`~8;O& +l_i9qYaQgG{TW7VDM9e*1^GvH1guBS{P9U&a`O!x!AzX&9!Op<|YAA6c%Q=R*IrR$zJ&@OMhi{z#KzP +LNVZ;2?c8e0c)*G6e@vIT9*KsYn>s{v={C4gEK-|W{Cx-VHWacHi%ym4(w!ElHU$KYN@b*^&WCvRbmi +(@3pjoWC$~hNk(!1EDJ2gZVY)_O#uwn1}&ZNgWGx}v-GmC*A481BDZXlZwbD?9M^ld)oR(8vXtvzpFT +@p#3PME=7X5&lCD@}2}kC#CM7CdF}ru#6o=6Hq|f-SHu8&TGvxuPQqx(F#}Y@gHYMMGHNoR7|A!$Xs{ +fdjEU_eNI-|=KwS=XAGhyZVy{PIESF5PUdinC@xUPeeW)(?TwDBw9DxseKl0J(UJ;c|bBxWm^1x1m-Y +~TZ*4FI!m58E*9AZ$peuRULO=L|fmhHs;8a6qMg_O(5bn}-XN&ZL#fI-zo$8j^5&7lSZ=d~59<u>8q= +uJQ@MM21H~5~p0a)9Z^skHw#%OqzTzeF(>&@g$1zUvy~#6Ls-A)&Y8;A;lhJknOJ@YpwnDfj$0uJn$# +(0ge^p;7C|uEygQfWidP%2K#(HA5a#Hv_SthZro=18_~H_^>Fp~3Xc@_!)ixqTF<BOLsB0$>482lL@= +!W){?FR971T2HX_yCILvd4F55`Lt+kcx#C%PgN&@sa8K~581awkF@P1AtQ0dPIjKV|7ZG|H_+L78xb4 +3%u?4+eOvcnmT8sQvPw4so!A!n&!2Dscb+trOZl#VRm#AwT^m3F{We~3f7X=QAD;6c<EBn?8+YYu0z! +?KJMkFhuo*e_w-hgF{d-%t7WJgCHW<C<Sw`E@IStM~q&Ns&K->n*7&<Yt40r==g`etYyA42ZJSJ1*SD +PxoB7d^<r9un`pJ0&ZFxZh)Jef!!7ro9rjBK19RMVsG#fM}jSHL=QSWP~-cM^55)xW}Joz^@>@L9|h! +SoRF$daBIptBP(HKxo?*aPI|YN87w5xg7!8+KxCAWI9bvdeF*IvipR2)cX(J;TLRjq=Ka?a!SQZ<otV +ky3<&Q!@{z?X&fjD*6M9TQ@4uHgnG%ZMc7*C1Rxchf%)1qghc2d*UlofVFtNw&FaK*U8bJkl{0GXoS$ +X$Q6(Aph&hy4lhFZS0m&2Xf=e^Blo5iP`z<nBzFoUw}9N-8Aj121fpBfr}P<$G672l9Xjb$)+Y*0M1z +i9mWCLVU8b08eRt)YL2vcY54^^R5z>mjmkfD_$iozrg}wPujCy3-c^*rqW&_A*D(yomk=P)h>@6aWAK +2mtd`vrzWquk$Yi000dN001Na003}la4%nWWo~3|axZmqY;0*_GcR>?X>2cYWpi+EZgXWWaCxm(%WmT +~6y579E|f(iz!8dO)2avt!PITCm^LWVVs<huU0G}-QbSU9j6wgsmk&MszyJm6jV<xM&pDT_mF%D>>cI +>OivoDpOJ#s<wQL82g@2A}YnEj_E8o}-b*A}y*2z8U(V;P>FUppqAZP6!TfU7(M|>}_H(ZLz;R#uV>V ++xI#cr*XR8bUFSOeEZZ9_?oRU)^4r+EbQiR0LPe{8UP({O0eG^l{Vj_*-G&0D-{`5OYcU}-1}_!wE_{ +PLbD*4a}Z&wgGTymT}YN}D5_(z+i;9cRZIUj}Tr4uz&0ilnqz0T)m*jqq|bjTHA#Nz~%jfJOrwZ@tMD +k$!!GXRQZ>n;*abVS2BS01>vPY|i0M{V3tl7{#{)k(=FITF<opM#X#1fCdM$u6fB>JNJJV`aiH^cC8F +w#Q#tNuYCm*P7F#Z4C8|EtR-P8q{H?SnueK0xE&fz6}Cv@u0RT^t6_t-G=l`QT?S9DuP=X~?umDpUhS +&xZ3Vwcf&Z;D#W-R77i$M^lf-`twr$bUr$U3Oqjn~i`YeHuaT=IT!BCl^aY`t9FNMTE>NDCuI@<;B+Z +KW)G;EKsMN)wt$`ZA%hqgU}4QT0a-Pi9%v6B2zlyVSMA59Ex;ToJoEg}l_&>Er!gj&W7K|;R^ih7WW< +VO?s{D%8eeFcv^=v&))>{0PLkSaIF9%rjfSQME>>Jybt+hsFGbTig4sFp157ds@oTplw<&vW^qL8eIN +)OB?x=^I)A1j~WbENjMF&_p<4s7a#e0Ug>_&UQ8jB`M$=7gd-K>nzII7)V0Lh^Q5AhuzNQW|~`^s*3n +byrM2kZkDTsk`U2}7+h$>M2RExE4VV1bneh|@0A7_s7KLB9)#%V7kpN*qXb{S`zMPt5?04dV#hyGEKU +6&h>U2-@n9vzi2HLTaX5=tP9%N>krmPP*h*Gi^;w)xe$H_ao|Hw!3?tV`cQlKIQ+_J)DVN<9r5TuIH+ +F<r*7-)qhO>qBPm3T2yd@4u%U|xuukEw~w1M_i0ynqXVZxxJSDcD95K>Ih0&Jr+=(?J0lLbhAT`Xoa) +|G@=EaELF5R6ukY>x(MnA)iHEbO&O2ES;W<_IaR(-YHk7F{YS39b*}dvzM%;p8cuFKrd}Y+<BZY03EF ++ZVV;;LAXeSY<I7-Ds_8zttE#tsj5B3szn{PfS!TEeGrVW#Dcn)$rK&YeDkE)1^e$i^v!2$2~({wj}W +UWCe|v#pa~s8~Ek<^QUzVA4$rz7%EA5iHury*vJEI5L$%;(Z+3GtNvc`Ju^585(?TDjjTSnaQ-)eHny +6D;}N_CAN+y+S7FlJR`Sv^W3_yzN%Nd8@!WQeuIuv)ZcOw5_tC}cY#=w4r1m(r1CFDA0Z>Z=1QY-O00 +;o{RI^Z(JXj$x5&!^NJOBV80001RX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlaa%FUKc`k5ywOf62+s4uVU +!UTJZbpDh!IYIu8&3J;k!3p8)QLS3GwCy~3m(a%h#CY~yyzt!_p^6*@BIMCO(u`VBa^`0-oE^9cW?K! +t;#)1({0<dl}J;T?GI(uFutnGylq4(zaOc`O|}>Mb6(!uWW~+V7AdUDJQwRGD~no_DEMA%n)Z+jIV5X +D)s$s!1~mMmxZ7p9p(yq|%k`H^9Lae}BJS7X;L(nb82nt6MFER0fT^-==2cZzV|wuezrPYq_24{uSCv +f(Tsn`g1mAS$UWxhuD+%Y(WpT^%Z1Wn%3wRW3z7Bl-k>3czRh``*9UXyQ*i36Dxe?79_$aC<O;ICh8p +D_;>?LnFtDCA_qvF}NtU%&JC2CPLFpo7m!S<rz8yr_|;pM+tQ8zWb;HaFs%^Q{#jKgP;G&#DG172r!Q +&tbafz`j%*2o_*8ngE!SYcOg;Nz&Ra{N!A)cB!pc+=MSsS=y40yU?3x#nnv(T5|HVV(23W~Aq+T>TS9 +#8bJ@Xe1v4DvE7((^fPsIik07zTQcm8E+b~KQ!zv%X7A_1aAb$Q;0h?T~dYD&5pGP(1h49umlJ(W_3x +_Kuxd=FW5@3nr}t^0JPg$Y}9H<C<6<rAseyH3ZTMkSO~sw)FSGhvjaeLI+e5Vr&2R#O2oAU+w7Y$yyB +bLbNpXwX7){NrtO;M0CU~}wI6uF(eR4WO#L4_OGv1}c$}6f8%M|A&lksIc8m|F&z^~Uz6UEN>vI3>IF +=l~t=K_SCu#<ZU>|{6%UiHtwh=YK$CVGiqlB?9;;&zStQ9kpYB`<6alfjwny+%u_3D8g04WIS<?<EJY +q4DZeq0bi#Q|;ETEYo9xU2Z#01Ut`nG#s1%YOsR^K5nIxRk_m7E9I^xv1+S7XrMp;*61;)b^SK)2P@r +Z%I5u)UZ(T%wlnR;1vfySb*y*8=g;%3Ksa4743c{D!JL^!cEC|o|ktCTY#^u8Tf~_*oa~+$keQa)hpO +#ZPC<;)#$ar6+qiRmIWvqKUZQ8Gl1Ky#$5@Hha(@n*sv`}Ucr?yV4Nr#LW(lGY>sim+>|9~b0auXtZ@ ++}ho8$mY(G)d*(!fH*=097xliGpp~crkjnLQ@;{E^|2aF>&H-a=-6Epm_%+O-6O(9+=KarQ^p;x|%6m +AP)1DQu#Y_qCvv`_5LQ24_y%A&L^IB@VB%O%+>EsNA_Z8f25Lgf#v5nq>gY|o1a{RVIV`!gr6B_uM*5 +aihkhq=WLygq?U4U?z={D7_`!t_1|bz^`)Lh|vxY*6#ntx&NFe<VEbfM#8{V3{4byP||yRfdrWNaJKV +3rQWSat)YwSNiqZM%+p~JRC$<UFb7=bcG3prxzNi6w%R<(hsUi>4<L|QF$u5<GzlRasZ?F)$uxV_?|z +2eqd|V0PGX7-Gb$Q1J=GMy@XSb2J|b^0{C>W`95K9vVCUvS7%qqDTY|MLC(z(L=0!I7mIh+&r&?a<O3 +r-pmihI+2nK#zn<f-GyL@@R$4c3Hu>}Kqmloottch=uh6vua5;i^Ax79z?spIQo`j^-9Hbq0;2wpix; +<~!Fw>A(F6G-447nCLBwL2%-w98Ec+!?k-cs1@4Xrcv76Ae+gue=X>qa6#PGGPdRw|DKA5rhhHsAF5r +56u6g&5<&vY_NjDN@p^m9IgqVOW7ZMDC>o=Vj=?L&%RC+>_BBsAUkwZ9YqAq>T#sDkBjENLVugV9+lO +EgFOh7I6Y%3O0o#vYIX_f+sKMug-sZvq*oKFJ8ZWng0Cxaxs5%dA;Z{0Cy0mW0jQ-!GmfV(0pj&sk8H +Hse8bs0ADK=?;<W#JQ2}pJQ={<#rO<Rfcrk9NRn+mZ>LO3LqMVs63eBHzr{w)RBpfpv7Y}ZbX`0UHsP +Pi^2ky;<M7qC%}bCNGmLV(O}Bgv#}8Ly>J5``$T$b|0V~nm2~p@{LhU&FS^(NWp6bESiS{Mv!;KIEj< +C0=vOOGxP<u%80X?6YO>D#Yk8wk110nkXz@;)pnab6<5C=4so4Df7C!hJx>?w<$v#0R;lTGI++tXg<G +dp3YI%g(G6E~P;Nz?j@LM2a<Q`9)9V!CaM^>mpKKTC%<Lk-ib_mgA-zG{*@r{7=0?<7e+7=<cMFt3v& +3W1pb<g0mE+&K9kK(+99*o*UvzrKC-D*fU7Z$r?~8gbDP)pFNOVjmhSIFhiAr=PN)cLEd9v4*>w8tZV +GS)VKJcaVZNn4RM;MtWdozY4%4v_ST@lE-E*9CnW*a$`u(e0F~iWI;ENv9H1qyN1}E^9uGRFX$*=_Ju +Pz1UU&CiR-#!DMMk;6eK{0dz<uurqqtcgnn>8OEJhB=rD)rk0G-{fEa!H;!-hz?PUF6iUCu9k>Sd^B{ +-sBvQNQa(^gm}GPdG$bOO|YUZ&`<;8-TXl@)8qXdzB46C#crE7yd?%WC6c(+MKwdfisASR%^{aw2#Qo +DHnWQiVPQ`gM?HpGiTxSn(kLo08i}cU1kcHd7Fln4;mbP;hciUP=zfSmHT<TYxZxy!~}GUtIlPdj4uL +ze=wc=Zl}N(~Gw+=hsWLKIHHN0ZAV36pyvHmz=-{V$;!atGKJ3lOdI~ygVBHjRl&;S+U8m4g|pFUYaS +fY0oW?&EOz(1(L2DDmGybp6IHPlx--8vl%k^3!E}V6B!!sN3ZASFR@Pb{d|G{z59v&dpUnIU(E5-+jo +o0w?AIv$Hmq8#eDREChMxjfWp1i-hX`xS@GA;za6u0CTAaFpV6!N%gd|z#Ue#c=2zG0i#OmUJ1oB+ow +pEds_Yk4MN?#+Owm(i`*v?!C+4kED~`VfVyDk1at^?Vr730wX&O0^B;Q(xKv8FQI<Zf52@8Yt*s%iNb +RMac+kY&P96StDj@gj?LORwf1r+@NICBK(o(UFJD|+55PW`vaS9N3^+Up_l!96znG7==2czWa+E0LMO +OxntSrHlnH)hGWo9g}BdJpYAqH#4PWyI{8UwksvSGAJSs`ib=yE)am+#D5W50!GmMqmWJWx^rrE*tJ+ +Nj608jN!&oOKQja#%nTp-6N1EQ762_^yhp&!vw<nb1i=%3_|8=7O%SbQhz%tjhA63Z=w(P`2)_M}6@T +9ElDxbVRTNWRxx+|2Oy`4{8(S|`h`WgV5+ubR?_vutieRWD2q(d^(sS7jGWOnTFXrx&ae!LzXl9p$@6 +?|4;OUQ1-owGC|Gwk$dhyst)A4z|==bLYj<5&B<HtAUtRKn)vs|%*hyD!hNL?6*S|0S3UjSoBXV5u+V +P}jTFzQbda*1puMSw=fw^Lq?#TG(q96fz1M=L1*FXfKX#0J}#GeHn;qIF)Ij)c<|qWGZ?Mih1&{9~8w +1sL;=SDX4|UG5K%7Ob*7YaUF;rp#@Yj&(uaB$y^?5}EB3fcr-Jq4(A;EZqu%8Rny`3F9m#Fcg3gx`5& +ZjjYZJKmlZqkr9!S)wr`7>QIew`#Z+XU~(Pl?=c-haD6iroJDGx28N=pQq6Ry`gxOV#HziCMi*rPCt0 +kMXfjmWnX<1ccJe>)d*s;3S*?Qv=biOsH=;@P{=*baLd7@fD=<@=b21?swKd&bI-wM%5MmWHtq^xpSt +oIcna@wy&u~uVvZ$@=Y_cGSlmVL5kEq2Omb*1|@>*y7(dA81RyGH(V_Ri%=B098nnUJ4WANK|%jlr|C +-`H!_)*UHs|{!OQ+970t7#f*grfezM77vNuKS2%k8s?xdjX0Ay#56;<6bOItdh0eWUX)3n-Q4W&A>Xc +a1*St&k8Atld6yX<(zN`P6hm`<E~V2be=eX0=r{0sSkV&_`pVJJ$?3!E>R?zXtqgN-8|bh`}|q8UH|F +%+2l#B8c%1*^W<yaQ6yBUj;hf={$4+QKRNmK!yn<pA4Wrq<BzIMfxghqx#R44z9(tKVd!I1SuvQ&n;i +)#6c{HJkO%IiXZQ_>^m;g2j!Gro9gS$DzV;l+!57pc_7xjk+^&p?IiAG!A8EITEX4z=atNGA0yI7Lys +94l7d9DE`Q#|XntJDZq&_goGkf5gzNe0@Q04A&>nSHIY$4Jd#jQGI>2+pE<Gq%h(zQco6bI)GJ9j8Tp +<EOMy28Sy>h2fMZblJQ1jRf`jtvwM#$I10S}4?{(cyqRz8qv_;$axnN-RtYI<h)PCpy|oag-AY!;G#H +IGlS?$zxd$1|K=;)4eShSP|5mP`zJJDnjg<>f~;n+1&E+TWx>_)w-Ypw636W)vi6R*>dUN3hS1-E*l( +fFo}@mdAjqWE*t5BBub_0OjsVI8ap@HkGgO*W|<AV#89iNudpWG$l|%yWD@j2MA*N;f<1EOR4O~tlF^ +;MMB-{O@Dq<80A(RpswQwGxi~Z$B;o$(!dtJ0vwEDY1dD&93}EWuCC%#8UW1S^RKW*62cXf{cCg@hCy +udn$g>J^o4Tdz54>^jD{R24qv`M}Oh#8)I!%3Q_GgW*rK_u9rorbc+n3PIc7fAz-yOq1PCR4&cM_5)R +I2W|w}6*4sQ3=6SJcV?AxuNS!d+hJ2(_{jHvm_4kpnZ%toc=9MxD!${*B2v5Lz8}NuOAOR-((tf%F$U +vHn;ixH!83lNDY!+8Rmb+Z)y%u-mZ_2T^QDl&#$msvoe<+YO9VeRI9H^vSzla=n>4btBwD@?k<9^C%{ +OWkvt^-Ut@dzB;}h^+s5+!Aa5`>&gK32gZm3cbBW{ZN5G)YuBYbbNjf)9^bL(1vUQ5!s<m{v4VZsRHd +yp-tsELDR5qBv6Wv39XGFgX|AM=P1DM`<E7m=66j`L&J<){Ik2p@UfA`TcC4_ig`j7x>@SOi+n~*E*$ +S|wr^#hyLj=EbY+GRa30xKomHfp+SVD+MFW9#oIvZgaD;k%bvL{703l0Ow;oAqj&~qO8r#D+*^B&W(k +4K%(_yD$@_fel5L#-G0@aJwG)0ONycb`M3z)LD^<6NNpE_8jspuE!vaWQfVj9$roY%A>Mqbg3h28f3U +(>ZyY<(Nk5Bd;A0$03T`x4*)<;K9=)jAsc)VY-<*)E|-%4Z0z1mG|^VOuA<uQ@{(JrFg?Qd<M!|e{3o +^!8&gO<6Y^tcK_XPBZ|=XlvH=w%_&t&)Z{{ReMY5>k{ET+r9srS0zakbQ@w3~+MqJUa*eZ4=W?-`f^k +m&J;5^MbZ%}7lP-Z_^{J<O?q&*O_i7&gPzlf63(~h5c&$^U4LWwr3$|^ZySHMeQb<%4DqdyWkZVhQJs +w8=wh`@eDTl|~6ZX=%I8B{nm580lb2~Ck^AcbE^s>&dl0=^)s?E~Kcr0g(U2r)EPu*1O@o(AIw!3uoG +dRi7>ysHfwFGS|&UF*c4xv_@aT<M<PtT3m4XM2%UW}f(&c&|HTe=!QYKxCWc~^{r$?(c6p>_*zv*36Q +I*>3kj=ncrm#Pk}snTJ&4ZjNy4_Z<E&BWhmS9dzZJ8zYK8@e|0ElKlxq<3=oez`F{9uS($?>1C_LuT- +MsYdfMtQQ*5qZH#f+ykYmiUf#?dbFc}KBOVrc7BXAHHx_NY^nD^Q<lM{>CsUi2^aidlEqJnOy^e53cK +jta_19vspAuR>Xne}mRnQJP>9R3k9aNZo5=)RVL+lc`Qzjr<&nv|=!uWJO>S3J-e0jL-_L)XUtM0L^Q +)`3S6%D$Sw6f|?M(2z)}to1DpjL9rXA+_`rZ8E@|9*fk?k)xkDLX(#vQ_6wx;dDdoB4t2AQ&dV=U4qH +;DIUU#dQ77lN_di8LQ|f5|M3ee!M~nmyA09&UX<()E74;q92JzvJ6!_WJc+BUR$1>)|no9G!PNGosYd +)hIer4-gT-#JxD{^!+ZK3{mEf*nf*Kn?3%jK8~ld^+)6llW`}dHm}@UR`_R`X&Rn6dQViNPuN7&f9Ux ++k~aKg6OqqjW4=#rE&<PdPc|Y$elj`5XQu=D$x9|aYwW4#^2_Jg(u?)x0p@15#Vrpr)JK<plKKi%w$d +GG=69qc*a6us&($B+z|r~S_B8nx6yn{yH-9a879afwP)h>@6aWAK2mtd`vru6@>nmRq0037v001BW00 +3}la4%nWWo~3|axZmqY;0*_GcR>?X>2cZb8KHOaCyyJZFAd5a{kU=F-KL!<Shl+lGmFsQBqurKB>x<6 +j9FBUMc~H;82_s2=D+<6mM_y+w*kK3kH0#H_3enOJx&4Pft%zzdYRo&Wn60;&{HU)`f~=p_i+?sDzxB +dAhDtY_41OwknD&cNZI3WIB5)-SuKA6ZgH`maW#Dcu#dE%S3C(d7)lYJ>T}kI<sF5-9na&R8Jk*a`t^ +slneQe|2_ZygJl=3i`3EF-2dDA_+iu&KRyhGqfevpIL56H@!;y};g5J=M?~s1QL9SlS?NZO$Dc+;krz +F2la(sL((hAQ>aUlUY<xjBjr~>$1dmd&_ZK$>do+DbK6audP-K9EW*Usn<$eirYL>t?R)!1`}L<lx +eA2H{<yJ=ezsSEl9(g<I(WT!|3s0a67)gdwBGZS|{SOT$Q3)D3Pk{salA9E~J=gOkRm9$M;nZ38$%I? +TPt1OK6#5RphgE0+}&bmv#gRbp7$m?J)j4xW_ENT%7lfn%}?eTUCE}-?!@i6>FNQxrh^}t-`;{m4ty9 +R`C=%pv8A&PfWZ0mcXaoZu9>`Ln^9GZf7n@aP{Z4Ox;3sCYZ0xun@geQHzH@VySM(a*ah!6%DPnD<#U +RIGb)ORYpwupkT1r(8pq}gr2jO{7_jXi=L3#%&1c2cv@_9siKCYg(}x6?H8=Q1IaqFD^5wo&a~TQ3Rr +|ld!itL|DsnN5<nJ(+=3J<_gA1dN(k8g^-`qbKSg1uB60nUm*Oq-dr-F!=Sfwvs)`OdR8O><&)dCk>` +AxPs)}u2h!gQh{Adkia&slg$4i#S*>0Jdb&_f0!rk8#aut_(@~o<!7>*tu;Z6Vg<>p~@b&%YdI;OmqC +ArSOw2ae<8>V1qGa6dSvaBU^Zg*O)RHElP>5KbqwSWy@L>~^$b^mbpcsIQJ6hD3%8>{hmu*#S73n;Kb +b4(Bt!SC78Su9ViYJcM2FgcMN6X4s!ae3Y{$~vfvyZiX|&J67Z7Z>hgc=!4K0b%jx?)In}j`6_UZ(rZ +N<xdY^&&}6hOu(IqnW9B;YamQe6^I}b1|Q+xIA0eDq9&Q+GRHHW(Z)*-SoovmCVB-&E&Ht#3^)~ws#= +x(v$KtU*3mNmi%wG+<;Bz4n7Hd|i!a5CD&n!8DOPu5)MgVwS1Fu3f~%Y%DE>($Re3grSDda2iC77N&U +7|YuhF7frj6l?ZKj^1r8<)Z=u!|aWHD2e2~M|I%jrf<PfMP^JjFbxR`@d(o+8<k%2a`vr;!#A=QOPg6 +RZj~SA|`xDAyV>4dF{x2zB&erHVP^Bt;>^&PbJoO17eNbv-&84e@Wc7c$~oB8MD;zL0*Ws;Vp}QgN23 +#t4~h#b7i({loAx2g%_=;_v*eVd9<+e;giRMuWglm|ey`G`Ks?%*?Z%szk0!N>s%R%TlK@NmL5`RBA> +;pdO@z<ucC<vzaa>CAQlypFRn>MgY&S4Qwqv@%id|@p&*Td*W(5Hi4c)JPW05Mt9c4i*S-60?QK7GvY +~Z?;b~ew!C-I#m<gU3d3rV>1WuTB40l(IQh~Z@pfWYi@8h`PnzWbN3Tf7pq_5U&<3&2R#m_2vVg=-Ww +a)yu%2O4*Y*vb$``3qB8Xa7qmP3xpC04k&HeT0f#N{B-;Vy2>#V~L`0qY|w0Zl#g9f4Vc5nCo@Ops1^ +S9xX!}Q0fiO)guBXiR2eZuh0!+3CDti2oF`kkcRZ`@IPcVG*RYgmN6{*PAoE3q>GY{)~O^O-_^#?8Z- +i&-Qoa#t|0lTRt4bia|w&b@RDsA8SzDvmp)O6NU-YE_=(X-shh#vR}Y!5)^*BS!->*d=cepNKD|kGbM +SrfZ6~v~Edup9Z4uPm(ND@*FSnvdZLAc@(-whlzpN<0TXZA}BOsd~kbrJ37Er#)&Eb$t)(`Bgic-CqT +468bjwgRYylZtL;~xy9i*PH})aT<&1@klZAv|neA{>_JrkqXg>nE+}E$kX1^Vn-s&>VO<*gX5R&LGNo +KlO$!ftD2W6=>Y=*TOGzc$-0mWAeQpBgphCYP^IQCUhr#&1X(jn_qd7+gVSgu#(4~SmC!g&gJvG!fIy +UnGQ3OY5KcMIaHm?P`KMfiORDVtmaNNTw{d}@-gH(jeYd$$BMxMWk_nb=jY5q;_GX{0>>KwPUZOc-x> +imanGl0EJr`@JA9l%l=Q3pFcB+Y9510Pl1CglvTJjBvSJ!Kqh;MkY+RoGO-bD@?XLz>9Vp_R2%SDpQH +^Ak>3%NEC^m^EF0iV!e7QB%G8B#Y}CmVF%dRI6`HX4OgH??f;^<c8tWw19*+Jdr&wBp6r4nM4cJZ+bm +DYNatrNJ42KN{5q4f7eW%V({+gq%joL>yA#4yZli)I?>@(h_Xc6NarF##Ph@Go>`!MMwcT%c@cy)I=k +<=#M~wrd);~R|y*|P<F4UhrZ4hb?kV7{v3%CI;I~<~}-GQn7Rg?DD#+9vF8?I-a&bsVn=)XPj``;V=c +5U|n`H~hj$EK(PHl9@-T4hfJcXrzcl!r<RTu&Mf6;hhQUYV8%#iLXs91%mxw=gW*M(Cp~mP>w6`~0vb +qiT*@3D%{fa8xi~J@{iF1O}HCdoO%up<YpbYwRcc+*BD{2n<kID2VM~yy@0xz(~OFGQ5JvtWto=4)7j +I|8_S@b9ipY7_qJNZ4>2^TNR-unTT3J)Ct1#u;UXwVfPvg3^^1{;mnN++88@IA=Cj@t}_4(J+mF1zWC ++sukFZ0h=xoyIh=@}6rvDxqOt@A-RVMih$;lmSKEv8e-xX%z`j%WYJ1LMaCLDJ?P@DF`*vA(55vhK$J +<WI9_8CAZi#Gy-N@YUSW>HogRPZLz^At_P4}qI8qV}4P$2c>W;`LAbR<TvK#i1K+oZ>yc*3LhFYlnzH +%_U0J{<_sb8Xd7)b5cm=$x}q9Oq*ncRDa($R&M}c0T!FD2?O6zt>BufJ|b+_d+MWo!1kag-#aE8>rhu +1ypWYE*KsJ6W_2rTPmcUnaPjr+`#Dwd+XG8?5+%^<t*2SfU-aF$kTPECWiFJ1rF)lRCCUTAP|*AA-QN +0#<{s^9r|u0GApi4K!5~1&&0|iV5@L-A*WL$d(ElPOxhXeVr%oR!T(z^@q$rFS|JnCWRoK@>*@_~h0; +{UiU~oO3GAb&SFurc32r?pCD*N4iP;2W^KK>eJ{Twma1m}uxDm~^C}T!z2sBd@GTNNbYzn$@y3{;70+ +?sfqZKsUqd|`o>g|bumT|79)oi8vLLA}KW~tiZyP9KnS8(cphAml7x#JZ<dOhkFseV@bZuCD_=6-AO| +A8*OQ2#f5CNR@V#TF4#eC5)ahXguy)s9o5y|(qCdul-kS9A4V4ARs`r4nKO#rStg{=HO^AR%S#3Hfpy +nEhm80mF~JAJa1@CjKO4mQyPT)mr5u1#_ib#XUP7&Wt0wP|L_IbTTnKz{@wb-+vd0o60s7PQ{gJb#Z5 +bny|KoODT}@5ESey{Zlbk6o5$U2n(DsP;QZI2GThdwOm}GsI<}Lf;`@|pB#S|uV#6_Uzb`Of>(MKVPm +pcUPKPcuPdDf#|E(<k@#aTx*Z+a@9r+WFa7`SQv4T>44ThIo}ayhwdU((1iBHOay>08T|r3f^<)yXrY +94FArMO^6J|b{*eEYj31E=w454+Jzo>2#KL*xWdkY^?sS*)&=9@9X6;TilRhumcHyUQ?nlUy3(r35jZ +{jplX9{_r3PF}`p`R9nT>LcLB%bEg!t-Lan2jfMp}sUH8=0oIu|5}fE0s~PXbboT*!AvKFYu>@;v9sv +;K5oKMwkF)3$9CSGuAG4RwroBX>uS(Pa4x(6R0O2+uoTM+EUOgD(G!NIKw?Sy_igTJ5vV+g@=us4FhS +a#GOIZ3gJB3Y}W(&q(J8322kCs(z={5@i1UCq|98b*=hIN3LB(;iyf${u?x4X=mfOC+rD!trgp%fH5n +K$!Im(?IB;zJFl^VjMhr&mw4gnVM*ynK$#T6Ngyee^VmFGL7aW4KJb-Z&|Lm&-Jh!vEu!ZQ1gmb1Ru= +z?TI>@batjm%vitMGeL!HGF6Jm*2$x;&{D)MK-if|r2fXJvMCf{DjVmV)@{A4BxXy@y4kNICO!}GJ9c +`m5pfK9ycDG<CEQEOScxiVPKZ)AKCFt*8}5&d9!w)-T84>zAj0$E&A5lunQdD6S+?RNp6js}=i;^gA( +KXi}J9v&bzj3%ITmTK)|WTNvbFRRl9)><wkKvMGrhXu38E~c0Chih^2?!(3VNZel!pdQOCQwi26i!G1 +9<TFj<q0R)gKh{eIvCEu2$#Rb@BMRGuZS-_q<FJN){^=6*P!icbXKZt%qsz)SJS{KlR%P8Yiv(4-c?N +^B$tg_tKOo_A=`atYXwA&WQnpKbL_`3cK!${Qz+fyhw`o7TKmU90kBAJe?>1dOmC?$`L<glzUsFSZPT ++cne2>n`wq<137*o?v{PU&gV4r^IiT7P|nB|b-Zc+zqq>YdL#>ccb?OxrV?;dVMJG(kC8Xin9c{J^>c +?!{l-n2^3*hyLo*gWX4vNgmqf`0S;gwWry{Xi*{e)CP%*wh}(CrQ^cikb7U1HgxZX{Cw`bT2Ak=43<K +8|VHcRGT=vr?Rgc+&D;XlZFB0J0RF1aeO!F({?=#;`YJ%z^wqLn|rpi8QeP9nLmvD4T}KZ*K}6={i$L +Uw!vLU9#eS>znR(FJM~(#P_XBG=6JXvXfK@CBJp}kPH(=Sv0G)(X)f8q1|bP(knZ-mvBu~ltUh+oW>b +U)Aj{~L8nRG-2-D-amFpV$-FNMboj4O9TDz*6|A3Om>5`5L`h3FKpVT;F;##CsOJo!?`KTj*L7IdRbc +2wqXEs%~;F~qqez+?52J#vNjaG+DHp-SWv`Ui$2zVXBw)KvMEZw=*mfb>X-nZc(R9Q(8e+gitS1G|e; +)kq3K2Q?O@!aY&vFX+&k~gI|9S-=&ZJx>}3aBirIfV<FXEo^c+KvvN3U(Xo3eCJ;*xkw|M)%0Q6z9$% +IkzOmb_H>p{hnq4mjnotGM0U~hp$d>T_N=_{GS#wOZfdn>c861mh${Bve2fyg;Ej2=sgHP!!)N*7;sz +Lez`j<(-j{rP-HC^`8u6>bOzW7izVfd$6=~MEn$$^Q^1X@c#<VLP^TU#QG=KiG$QJ*gZ;m582htV!X} +5Tt?`OkAj6S;_Gd#Ow;G+f_Y&^7xlFM}ee2DG=!a&Tr`etknmORIy|^$0rT7Sg!R~$}=wT)^MJlRnju +0TZ8}oyJfvM2U_Ez+|r+$$snff}z?z87|sxpy_UL>v&+3p%G_usO{i|B%lV5+u&hmGZ8i&SK00@mR#( +dhPWbo=<t6L8htSDe{*mFjuuC>~6b5CHr;XoGj!_k{Q)up2rNOoRd$kzv)oqGC#SCbCiRB`ozPoz3!1 +DLSq&H!7fp(tdkof8vg>;RaQumMe~&Gga}S_MG+yV2O9<DbMHBEk>f#*aeeR>{u61ri$FphZJ7E!_u; +RX1HTwpB+enX|*UM)cm3)&jawY)D*P1CbCU(#XFy`Z8V2uZc3sGqhCYyu`XkJNR+V`tF!+a$KJaRCW` +=-y-<|LfJUtBiEuir`B^)N0u~<CGZ>Ng#QaJq2;M{4e*>j<4&b`~C6iu5B5w#cyzSNob`S_3GGyZBUd +Y*uN=@1_(>DVeu?#S|%D4!%L7IFYAb_K}OcG4S&4OG!d>meU|NaB&71LS0h~8NqKEh{j%#R9q4shU-$ +siwk<lndu2pJ3nXppNE-Msu-1;)s1yOG;c%+}mA43=>K@Oe|K3x@;RaP<M(8(qNU^vbgB><sAIatD*` +zvSPr75DZuasA4yyB+%w+DE%b^!snc?1|^uedSG<_8=42kB|3bHhgMEQcGj1U<U*kd%P3YB1Ff$jVo? +R@aEeb?Hg3?Ce3vNo58+Noxb}<4aGW6;42&Tqg{3kI_lSCnq4^Ri;zddcu{)g1>rrOXNO6E_`*|5!;% +lTZL<Pm(Tnp3U#;2U>E5*Yo4r=^H+-e$tFP1S{oJK~+-;uk9I-fes@(7iZ*9H~yW&_=Qh8+B%+%<1)@ +}}NUEFzj&(3rI^1-=oWUIK+<*l;uSe2&t^GEX0o2zoCz^V#AQ(s)WIq5**RU!?kM&GvI_+`n_nArRJF +HG!P1*LwC?tebFtv`RPSC^Z+?-3v}U)_qqDcnJ&_FWZ1R)g{I=7xKJFqml?pxdDS_d#u@_-%+b|Ng4o +4R>*x=V{0Oek$U35bC`mtsnVC)h?;q^yA4l4zh2s{hEHsM5%VKHlf*}v&gBCcQgmE@Z5l^iguT<;XL> +O2mMlqPI6FX%$uR|M10EgXQsF>^5pc9o9XX+qub%b&-ah^H!bc1$=d!&o7fTC1Ax&evTjY;8>aj6-%v +{f1QY-O00;o{RI^a%(gY5K3jhF*CIA2<0001RX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlabZKp6Z*_DoaC +y}l+iu&)_1#}FuwhsNxU{=zx~;k{Hchf=fb1qfob97DB1h6R6o=&ut*8(C?R(Cd3uj2mancrO^$_zi= +YBuTrd4~kTy8qkwPLwsa^I-dFuvBR>Wo<0`?IqPcDEC(6dT@EhG|uN6owhO7pgNE>$E7@`p9<1G?iR4 +qnNBqS#Tqm*>S^a<qxw1*MLnoqL3SD!3>}V6z$mtxpBxHC(BoF-v0I3o8^m_KR)~L=5BfS`lpv~Kir+ +U*NFAZ!sWU6REWk%RcjA@XNkTyz{$(DRV_;LjA>CDS&NF@^Qse{V|SWa00CTGTY<n&&XzBnYHpcY|3e +gJHa|mJAG9D;`Ciq^s9F|GZWzDkvf}GX<Yz_Kw!qC24*~F20IQ~*;cdpw1JrqD(cnLbxv03-Uc8wlIb +WPH_?@4h`xmTG^+s;HmZMhkGkWjdX;$!>t;wjMi;{t$JXm<6TDWVJsul|ihCi>A+dvrz)Ij?7+x#YDt +>ESDclpgc0H8y_>34wVCtmZdu#y4ft^3=bZG~>Ybf^Uc%Uki!PG~c`diC<|Dq~mpaB+PtKJk46nk&@) +`f6@@d)u-`wBI-gHaqNOv1969w5=?KCY!~Q;XTSWkA?dh`k7bBtyjqJZszk7dX^eZPEMqS0SDYNUR9P +E-txULqSfe(tJTk{7OPdvU9Fa<wU5W0`tkDL(rGVJPZB*2(JhEiVA1eu5s2LFBnYYYYj7j0YsVMkbxB +-#ln|FS$OkO`na;)U0=k0)rGUOPW*9~1C^#yyF=$do(VmboM(i7tv)45~517O~M3#-{wK6+!Xb<64i4 +1Zp596)qBRyjj0Lb9T`yT*8uJjHv53m_Bh?9pmkQ+sr_cnDogKUm=bFUWW*a)X&RG5IU$=Ie++z?xMG +_i-1Dz=DVd;Ur8yFKH3)qxh&#%ggUYtSq}lzNVI4_x|acW59}1Vm1=c#s2Fi|U7K-4%rZQP|tPw2quO +u@%_|Tx^k{{+)gGQ3D+hk+G&#YlxL2TjASn1$P18$Q&pTm5jVOhL_(v&)#j}so6pDQ|<P;u-DfcS&8d +E+&o$TzI^(pC*M8&<MkW4z7AL}s;5t${$;hy13FZ>l?uHQ;#opot)&rx3shmRK(9ERnAF?pQAS1A`+A +G6g*gaOBT0DI8F??FqySN;AYpP_D>u&7U8)G-W$k^+$Z5Pr#!jO8Q5FuUQcM4DSvavI8Rua$<~ihSBj +OwmCGf~LyfCV@Re^6d6b(D!(@APtw2bR8P?4>GE-ebqn*HtW?p?54lv#cRK$p}r_Ks9?rP+(0-{WCbV +HlSRk~MG${fan-EQ{(6`7EGQwKbwuAA1WoZ4iX=Yb*^(;%hO<A?u>*%HGa9x!tkn?>;cl8)Qwo)d$|# +1PZ>fr3mQinu;XY15O^`g;cFHM<@mNqRM*qTBeAlwb=1{IHMy~KuzFfDbdxl-aRpgTSh}^QZ=~aUT_V +aa9?#?Ae{`JL^UA;xL_$D;n%ic^a0iLjoN?E_Lg0zNN<12)M!}~hqQA6vix4bc?YMn#I{hWTP~?x7X| +OMh#2e5!>wm%TRwpo*#gG((V!_UL}-brEww#>v|zkC@T2bYG%A8?DEZj=`YNIgXmXGG6BaR;w1w!98- +sbvCA16+?VvvZ1$}$t57>|;MYeKF!H88Kh^h{pDpnw!H2h<)HH|bu^LtsttV3nkYc_VE4Lho?Wm^SDr +9IW5oj@9hXOEt5u<~)6K7uI^*x?lwct=vVGD^(Qo3;!+7M<Kl#Lf@g6yVI~z`V_*5k00M4kD`)>D;&d +mgkE_JmJ{U0FE}`BlK{aw8P#pXc8j$!K4MP<Ea^pjsqeXATd=gmoqJ@O=kVsHKo2q^#hV?Q~m9H5m}? +!<V)Wn+`4<<OO`O0`Bv2Tyf7TOtMmB)1!?UhJiY~B{4<2Kad;AvUIQro9Z}VWw<co0uLM>@;P6gCk<2 +cl&o6c8<u6;OBD}Dgylm&^?2^p_7`YMDA&V|wE^DaC%Vm}vNc1`NiZn5PZp94G-8Az9O`K5qcdG2A8e +6A=m?dAz7%~;figW4nohUxqioyGS8U|ju?l8G%Mi`^$bKMZ3Tu>X7cq~STXJQD0^eqTpQDTk2d#VwNk +jN6X(0T*gUP^jL%z*-z2~aJxhM`vXZN$P_)ROgBZMlIQh?kIZG<JxNovp-lMY6<LFh^_l3qGd3#RAii +r2NfU-R(sy3#Wk!m_U`*SO*~^U`<mA|Nj!LqV9y`$Nt4<>iSd<lgDNY*O0(1O@Q|iyhunnhXyyuC$q& +63$<N9Gd!4poTOm$Rg6<=Swj%kg_t=9T+@i3LZf0My{0im@`l|BuTe)hxe+G8y`9)=!}cBI{PQt19w) +6jjRu9LXZ!47+GENhfmspyQ+Bn*W_MscVmyn4_<9+w+AlS&xh^4e*VrRC>8vOdGEPZ{`3b|!MgM#t?P ++m?H++A~ZWbeApBIK$dS>S>7pG8yL8fQ~@uFb>j0GYLW@L7^fZ%bQodO<&AG`UCMyyu+m9uUzZmNb0* +TJ(V|379PN9kk%!C7-@9iA$O-!~1a22?78VOWbpSZ&gn3Uh(j^5U2lg{XXt3&vnq4Z|QB+U~71)(L-H +rOPB&NN4lRt+k5#+1&U2zS(y5qacPcRWC^D#maHL>bqFmmr*GU^l=M)FUu|-OWXjxTDd2yRn)8DuK@z +q?+w!4bafGJd-3Pjb{2uHP1AY{5OxLS0ft2)beF!1w9@nwaKIDFp;sy$jNT)m#c4Ig)yMhNUDU|=Epp +#y_8Uv@W6*uqV%T^kZdE97f<b%W80{U&J%`~GhCd_Gy14s;5g3$@+h<%TQ(y^R?7~=33sIsYY@q$#jj +(wyP)yV`cM>etM4Z7SPNfGJhOo7~22xE}=qG!`pydZe`6``Xu)pK<R$mzm973O$LNr9DA0fFLuXv@E^ +L`hu1L7An*Pa+CGG-U|VNHWHwf!&=TrTQuF2KIVFHq>4jPu9*l+SoCNqb}4Z%0kB>%04QIC7_?&!2Lu +_jn*N0L_2yD_PmKcH9g3#P14Yd)oHTt$w2KTKVXM)&dJC%%=ehi+)%Oi5uH&x7JeVT5B4z@f~)j6-s? +P+4D^eIIe@lXrJmnMtsgfF|wQ>6OL}eO#a!yD*j?Nn-48L0n^)VE5gHN>As3hnedfQ$h3(O6>rdV&|e +n9turdB@(V0yi&a8xH5HgI9SXM%^V^Gj6qJ-;|0|9FvNJEUTluCwfia#~;tSp3@vbm#HJ($3+4dW>l+ +}Ur(r(JT%Zawy4<d=Puy0QL#}6*EAN#`LJjKtp(~d$85oS?Lhld?4u-q5E_^Uv=O2!|x3*ie9Ym}C_t +MA*cP<neZNrj!&;=cdbG!J85_*8Ef?_<irH=n29WX3+(_kkH(;Mg2$#&A+wjT(R{*RgAsX^)A6I5AJ+ +djqdSs-qY5;4zbA&(o-V-AkJuqEa!c31h#(r1p5H>G!<-SCgTGK%It>A7oOlKcz76dC9G0$9{&5YSh2 +(8@uHkexl(GiqJ}k&+3>iK2v*vPiJFrcu|T*)Fp0<-8wuhK$EQ}ZC`8upC|_30&}D{AxDV#b-ad$){3 +tysdxC*720gbjEmK;kI9oOA8x&|X(2up8o$J0J#DD}WUzc$x(9Vl)}O@3z4DI2C3h@c;4@?=u$*nrPN +w=aRj1zI%YSkNN2BqvsaTu_v&-AhVo#1eh<!esrC-<dHDbyI$J&bAEKl%!Nf{&`ixXS&zY3zad;V#5l +l580>d@7!$=+q2MJVUdLZKQZTd&YBFwtbXbWA>$!I&rgP_`$f{02}<0|XQR000O8^Hj4?IrQj0h!Ow* +n>GLd9{>OVaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLiQkE^v9RJ9}T-NRt2iQ}l>sEe%HIeHq;_gajv +HmyoQ1*_{wa$W|L`BTF7V2+m_a`&CtUORa|?xjX-6u-vLwS6A1gt20gFIdk1<p5+O5T^7t2ags4_oW^ +0Eaaa8A$l-){rid_!!;nw1AdXUn5qWd&XZa%J9RXw8{C>h06`-?t;^DwsFG=|zN#aDoF1*P{@0J&kX> +i}^bn+y0y(~*ocF3-cbTZ>}ZuFSp<=G6sXK|Y0H=@wDC&vHGd9uWZY2w|^d6XHWPG^n%le0Jqm+X@lW +h{$X6en{p3_f!Pj8gU~$Y#uo*sIISx8{Y#1V0-P;dK~{cUcfkIS6w#JQL7y4yuxH%sh`HZXw+<XR|C@ +*q!q?!`H`Wr|*uRoekWJ=dT8@2Ny6E)4<m>0r*bgflyJz<8TghVqO@sc*?RFPdS5GWjp~be&PvdK2L% +>?lV#x002@qnND_pd2-NY^VrWr?hyOb>Gy9z$b4*1;(33u1bL&)*>b^?zC`G}9Solj&M)2J0K`f-0xp +7(n~AZ0?QKqvH(zXR{xbTq^Ubh2LjD%e59W~r(4UVt-;LxqU~O!Ues;e0Ex^1Qo;J`r3_b$aY(cgG+j +6WUL&5=Azi(cD=pU`Y3vK-R1C3~K?~h=x26g1DnKq96#psDKZeN|BK7VsEU|;da$(zgLv$I|Y7UA^m? +|bgs<4cqmF|SDl+r8ay?``YL?zi%{(RnramjpF%81w~N!<T#T^6X-FN4*6)UuOLNoA~?nOR%`x`(_#T +6iqNQVenAW>M?wGsHCtuZkmsA1AH+6%5Yc#XN2kQ4h$$h-#YG{mjs^Ja<F4)rfckh&w<Hi+Xu{W3}!J +TM<^)mI?80Fj`ii>+q#LbtW@f56-C1VGW+cm9j8Kbze)4DMh&Tq1kJt2q_mD|^!M86|Gcf!(dh54q^} +b_TE%R)mD$b;W;@@-?8{bf=i4fVJFN_NS1^>iH0bdmhPygL^`ec_-fB+e=OIpeRZdL~``^O>##b@eZ< +&ft|Dc`zDsl%pIiLg4<m!AlxEKt7ADk4v;`rI~lfjFZuTKB=_p{gMZ{Gf6cyW34`#=Bn$2)I4@%i+27 +X15TIFI7RpGlhKcc1Q;pSQMmcK7xV{_Dvvw)@lj&HotaehxIRVXzHmd^PNU$3bLX-?Mcl`~f%)b`JrG +X?uQTAu#yDcW=%I?&*m}W_@S>>$-*B3<=hR2c*&0n!~p?q$tNHC&PEe9N!auA>)Q{kvOLF#9`~`{mAG +H2QS_8V+b3%L;djn`u%9#L0{fr`?JxxJRZIrw8f+kW?#Dds+&jm4&EJ{yK>)kT;qcjdrwUmVQCsGK@S +?BLKP1nl)92=&xXg(2WNwe3-<>JT<<uWJ0nF#>9&Dswrc+Uh%|9=_3ZfS^3|K+>E$0%|7I>CE@<m1=x +sgyO8=ogAq>+R;O3z~X@RYYFs(15*hET`#V<{C45Ag*b*bxe^;Se<tFp_Uzd9ab@|5ySNcDf-Z@Ak?R +QF_XcKW))!T9Mff9;yq&l|n}KEw<Lgg8Ba@uq-j2=<lL34Mi#?HJ!WFvC|RUX>8SJjFz?4}kx;8Vvs^ +AYTlRU%tlNObuvs5bX#sI-N=ArI3&&p;;#2rUAc!XpuczmLoJ~2oHDSWstRINj|}>pIk}87YXE=Q5Hn +EDhI|q*Jf8KB%59ed2Yf1JYsiVm=hAwa;AASac&lv(YwI$#%9lA$fF@MRf(||`D{j6Eifx`ZXya$OB^ +OrW5k<yDc=kt5G4&VNOYMunZ${YVnJp-eDR!N;%XQ3p$FGZ!#GQ!egPA=#26R=j7R*F>k50p&m>HH#S +bCgA?DuYAeI)jA(Xu~gat=^$ZH@{8B!Zl6^S-1R|h}Al<1JkqBx@;cA9xfmSVkOf}Lp4iY@y1K6(QDq +0^EJ5Try5IaZP7`$JXggfWyDpg{Fru6UY5&0vC2^-zJ9-B7Dit)$Z<E%r!pJ<?T=MC%ES^a>>u1mv1M +T_iEE%9h0nA_=r?Gv(n_n>sB03ozR;l#QRf#7{TTxj+;g2VsycMJWf?NM>n6;nzje3nrX}!AA~e=Vi9 +q4f;fZiH$5*iIZ@cL7IV~2Q3mE%c@x{N)S!LTo^9w1)4c-IvA+122$j6fHR@NtY9%am1V@2g22k9L^2 +y-2S;cJB|@h@MSxp1xrk?BJZYKNInO@D$wwB-@?D#n*w<jKRDx^MQexwHRZ=O4u@1?lZ(xuq)ZQy`nn +w88+Q4$R$X+}@kE1(|Ckp@q698x8Axf#B%NZyay%|k0h2lQ+p`ZrCfh7q!xY;DmBYzW?a3Ks#`aWBCe +wQ;|lN>x9ykc{2NlQ28jNf~cEL;j7>7j=tPe@=vw8){{_rcp0beep6Y@BB-$ds5!^v^s1*9^OgjRk3R +mL|7vZ3+cxK~9`=uyN=`A8FlSBn;Wi18?hq(DV3?`<7j5W^nJ#7kI4TIGxH;{`T8%><X;65X|i2$pao +d#PMxNA-_NOg0SDUnus>4UmsnG+{9I^x;@s-Q=XuYa25~?!BBl1L`y*m@cd+}S0P~AHtY6rvmqdD6MR +rkscWqitikE2V&gp7B8o>uZmpozYKlMTC8c}NJVppZxuH1;I@<#2n4vicgMH%itZN2)HN^lr^A-yp2@ +~M+MW$R*%1p5GEmqxn-w{Gkm<<&`!1d$?=&9lcaF&na6A)rQt>BV-c?_4Ff`&vU{TNbiP}KsnHyd*n? +)wn}^;r9;f0k^?K?~okVHa!tIDs`JP(;wCe-HKi2j&NXy5<&jk4o?z1Wp$aI^Agixv~kN+~;91PivVY +>>M96MTi63cO15D@9Yb9FCkZpm?zDNLIR|bLB<nr9CAF&B!W1Ac>?lc;AYWJ5lcuY!MRGwC7{iQLQ)7 +n5@ms@5K%|WxtD?6`5J~0=5$I*B$7RZ)EOZOR5Oj_p>(+_Gz$XC<7xg5-HxuJ?lg}3V=p-xd!NyL9Q6 +-1Cr7VwScA}=;A7OFOsP}TUw4ZmV|;xv0l%L@Y7=oU31#*Z<?}I53dN^3V8Fb6?uC@`hhB2an^2YIo( +GW|`1jy#kXtcCp!y)v^YJi35Yh5kLQd^z5c#HG*<|?YSGH9(@=1&pNX{$ikCFn`3^`&r7Rd5Nl|(5s{ +B68ZqWgkFJ9RZw5l?LzDAweGeW#<3Upo?Q1m=CMNNlie=D<k7TW&U&N0Zp+ZV*At4t#eqgAi(B5(|VQ +hy-4U$+&#cV+0QNd1&O>bn}T(?#s74nE=M7Ac%F^)$o)Rl!`t@!ol^2OQ1oRF=aroV?%i1FWI6(#xDs +}Edmr)l9noK=%|1Y8Y&SEv9Du8X@||GjNfPFjHM~B0Y%l6;rBsG^=MtT@iODmQrFlecwLxE$~g*$n_8 +PY<^4)`DDR5tN?K`*A#(z1Nk2l8hh3QNdY9oEK*olxpD}p~OqT?v=+pq$L<*!Wq2%Ez{&*%|HeBp9A4 +g>g6?*fr?+K6Qh%fsV63&IW1^LJV3oxsvX%=y$&LE|CNhLtPTs9$}DeVQU7L=aEx8S%jc`?LZ3{tluB +`Ei>P42^z31mBYl$m2=UDA+<uD;9&=_QG`RMj|ohyXoA;zhUI-0DF_9hn7DON&mB%b<RxEkQ&95g>vT +iy)R?gc*n+bZYRHnp<p#{gv$&gb<Etl3xdq-UhfOM-><s5;=f_zb5{ycqy|*Ll}JoZI~#k0ewcb7%s^ +E%C>i&6d1P8X;CcHL}iDUm2lOYHI=&|wA=1BSEAXl**N%MlovFBr`e_w(z@PpM#^3+`|}jkZ|)RUXIT +|T*CZ_`rOd@rE>2VuE+$H@A7^gLDP>7b9Fg-}V;5X>OCfE{;y6t0fM-)XPHy|NY#ypk<ytEG&71r7j= +e|bv`BgG$D7ETNGbB{P#&9Lc%>5)aubwC%!=Ba>c0>i48}f%Dm-JJVLouku1AP?8U<M(91^0_X**^#K +mZeNbUhgriG)^KyQGOLt;p*(-nF|b37NpgL`Xk?#0qFZ>JN@6xQ&o(0FEReS4*cb(=d<oRJTyY2aM6M +jTPav<a-<~sTvSY3r|8Kki~|CqAVq;M)0WyB?0Bs3gZejwm%`;I$wcc3p%C*wKOSCaV=m@c-p7WKu7} +Qg&XeSx0GuUFG!fs)3W_F5QbMyl1Mngzf~q6V-~UIbXuB(IAs&L6QpWIjw#IngcbEtoM^eEa6^(BrS8 +!tfvI5Gc7R8uO-xWFZ6GP0uD3?o{+ANtVQ7+}%QTGdkR0p^=)pHUh)9b{^n9OTc0=bGrG#rLU&rkLAR +fySsJL;YE6Z**30O%n1(<_PN7k_HR#RNL=!LB6xTi0BSOTnY62*D2i)EZCPl2eKl(c0TSUDsOASl4Jq +X}0SkXMX@$V--Pwp{R<7o{??l6+v@hoe^YpiLIL5o^1-QKboiAz0iU0NF}w$EMINX;<K<3Z+U1KZFC6 +%07>sLi}u{BWa05q45SkWDl4!VpJ2EM7r=IbGu0hKcB%aAXjCgkiI5t2arddR&d}gF)DVwzOyeaThT+ +$fTQg~RyoV3>s@Em3eCfm{|KG!6?95S5eM7Ta0%6Gba~npC@q|{=a5cD>LeXlD3%)n02JFI+v@pg#2d +%+0y7ZBuIzj2_SdASik0d{Xk|QxXd=7LAb#XYRhgkT=Ak7^NO;8ELej~23r=Cw)RU$A0&$8f_P<UVkJ +idfA9=EO<V8#K8nd%|i~UCVRMGrK7~N%N$+9|Wx+S#;7Pfl_n#Uwm+%H46Wz3+9YV4F=(Y3T%n*`JaZ +ZYL9l547~d9BSft|FBs(BUZd(uz_HJ$Dx+P#3lgtJfe}Z5x$3Y@Mc5EYh?!Wh#s5k(-}nhnGpt@rS?b +CcrnP0jsVEB6E6je*FKVi`+QJrR=V!U3I+WG1_konFuq&MgXmUuRK<$PF&7WpI1@jc<Cev469aLXL!V +snd0lAidnXGn1ICW3p+%(P7p0c*OEyWp%sIwCe{vZ!Lby#7vxTq+(j{$%H1m&9j<Udf@0b56-bIhJB~ +aw)|$wc+DQ)_O-ezE&QW<VDb+0iq+-i+e)zw3G^h>$b8Hh9#T#Mx%%MKDb7Nm6;f;1z)Mn2>@0)x&6= +$|WpOEH4Rv_|Ev3r6D%Z-p{;;N?2UIaY!#e^0~d>3H0N?i;{UvY+_7^jvFQAlw5s(VaTau|4cxFO-V0 +t@5YU?N)9JOoLKj!;U5F!pddGw$65A>@J)p;L3r$Mh-?HO9@2EL(1F<PMjN9N^;3aW~>T9P$d<B&jG_ +sVhMOHWv1dnw?MZHliy99Gx50{JeSiMDvF_H`sNNO>@<Jq2746#Oe05-ni(AcO{)3HeRe%+)EP9ldX2 +1g61lYPqunm5B@=3{b?K@jlJYiHgXn?35l~^(cZ@sUVU!bNf}xvF0)py42slS+hfRFCZcJagL86ai$} +JhB&p&8u1XHeO^6?XWAy1JK+y)MgbKa!6emHpT-|XJcXp)@Lq=5xhMzKZmp$yFRiqA5tJexv<<%`I`1 +f5?(D8~XRZ;6LHXu^Fn<S@L;I~XvV<B&5XcKQHSp>JrO$&jl*MJ(Fgru;TEy=T-MI}f!)5n&13kxp)R +@C=!&rDJP2UTm9No>S2x7e?T0usIt_V;)9+Y(Sr9a@tFFtJi1S+G4=9aiM8+9F*@0K;y*D)Y#>R4d94 +MCp|R(H^Tx^uLSfD><m`TTg+DP2J8%0rYBj&ZLHAQfU5;_r7Scdh9rZd~%#;;&)4Hv6>~etas_?tV%C +yjlGa3EUEXA`i4cMW3@Xz5VIkfZaK`L8*1W;tT^qPYN;Gl6WALK@Lq-hl*nVgjOCe+JR_uMyaXp9F5j +HIaoCW|N1R`M!qy@PGETVnah0UD?!>ER*_NE4<9xgwtnPgo4>$n{Q*L&MKjK7)(p&CLW}+J^{;3INBi +JKhH=xLy;)>teqZ8APV<`Q@<;V6;{VYb-oS0HIdqJJ%Bv!(Md}Wtg(EwghA~tOC9wjXMd&og23@DX@D +h$T8fO)8Mklv?uV^D{{0jqX>P=8OgdF?JCUH>SDyc$XJO!bR}IslDWE!PZnAT=oARJjECy>PG1r2eF6 +_R~es=50@g3(q~j+9h06?gWu**EGDaWkAQPZt`D3Eo^nu51;AZoc#|_O9KQH000080P|F{P;+B}@WBT +F03H<p03ZMW0B~t=FJE?LZe(wAFLiQkY-wUMFLiWjY%h0VX>=}ddDU23ZyUK4e%G&H<p;~Dthfyp3#3 +sODUd~j-P%FoMIIJ`K+T+ySaF84B*$X`{qg%9UPdEX&ZcjzkXRS;d_4E_aa7$J>jhccm`P<#Evl|5yf +NAd71vs6y^?y8zB<xW_~F~$O(x#%Urz*H0l=%8vTSV{<4vQA2|X6ndhtH|{?1xspAiY4r5lM(Rx7FXY +9*H9*XgbKEcf^Lqx_G?elo?5BHVN?ragXLRmQF?$@1uj-YQSiFO$in(9${aEX?d(P*j=bDk|7wJH#%; +KTR*()^xfQJqbn@rV%cPx*sMN*mA!m3+3_O_eS`AOHP<dy#4UriM{DWAsf*-63{3BsAe<5crE-EYqBZ +!z^YA27HeL5syZD(wAzuN)@c25_ghCD&4p~rAZIl8$L*S6;jkZAF=j7WZox{Ppt8cX!5^wBRVZq_=(p +4amACQ%771-Uo5EO8S>cV?5w*fwS?sVh7i%gcTbC_$<XN*?bS<nbD61NMz$<`Dz#;5zA^y>M_O5C4Ue +E)vo1hKO%KnzZ!E2h59zx<@5C#_Gm!`S&gVd3R(ds!QgTqc-#ZHig?~rQI{bPSD#3vJ@9&y=#=+xPjK +rq>}v#Ui&f?Lzi#TLm@29aWG40f-{_e9M>ij|FGKZv`Al`Ivfoz&u&Mm>_74}rt(Eh+-0V^^~QCY0pd +DNOSK?H~n<;E7u9ka2L7)2sv(tEAHG8STx6V6~lx<lCyv_PXinHS)C-m4ZJ@a)ni`H`c`*X^n!ha9h+ +;s1Wl?JpzwU3y#FeNn5tHwN%luH(=Ul)s&{k4j;+`IE~4mGbjVaHA&~ihrQndur%a2h^;jbs^skJt!! +JefMeyAze2KgK4@|2#NAJa+%u!&2IpnKkjs9n9DDXzSN=`3TB=c`dSiDEhBp*V`ea^@&SAU9=@2WDb9 +dhddr4z8ZAzXIpJA1Dh7H2`V$BH(=MG2W_(Bf**=5eu#7VWbW`{I_8*1ga6c&?-s<;m?aHNC&E7ep+{ +Cz2Aujb;r)Wt5uzhXa$KAy*XvE;2n#z30=;KX{5Jg8)+eUQRuvEohpRlxOjR<SI~&2&CN^9y@AfLF~d +uc2kK;raACbWQe4Qa@_p7XRHTs>(mIM{Z3+hqVYKO9YcJC@O8FpH1P4>D933pwJnKVcx*sf6nJjhTZ* +^i{##RCkVsr8^6xDW4sJ^d<w%Rr1LBBW+~b|H@i3D)#AIHxC<J#q}8SP>*D((q%>7$3GZ0+ipMBD)$T +%E(n8ve`}O9_B~lH&8m*9<NXm4axHf(}Xvu*a13y7TU<O3-r)8uQi+AsD?>|00J~&7!M^9Fs#%J(y3j +6X9vFmZf&I*mv<&C&G4}1)M^G7(#<IMUNOit6Y+t6`906IdYa0NsMuLi~v=i7|m=7Ram@<+4`jITgt@ +|SeZl21wMKwbDHh=j=Tmmo7LS9ZVn*flI3Y0tFo(1Be`g{t<4mJC=P0pWa3{(L-tPL*YgEunpZoP7!3 +`;+e~ijPhY8y4Ksn=%-9l{cQ~**~-MLVRW#Q5x>t5*9YsYmL>^$Qw9vj`VPWpL(j%;napFtLut_C;ob +$aB69TR3HSAQLqkjt!XhHT&CM>=LyA)U;+S@2@R7MB{!u^A*G&%Uf)VgFJZWd`Jhr&7?Z@52nfN(tV3 +`>Ld#5Rs7II<IRYm1EYdjC!aAi61~-$&j%PUrUNlM884Ys}!y@{xY7m~p>u0I5<J&w%XP$hY-&3eLkb +BO7`2HB)f%TR49R*`UT;pCbiy%C~`r%Uqx=N+MQ}6$<5NhdmLlb$D^<nit%iKsm-2MFX``c&o{><LHU ++&{|gneVy{}#h)<OoNL3rib?#J9<7jCVCjiGce~U=ysLV=9nHh7aU%7_bcp2B?uE&N?>?>e8&j{?oY} +X`MeamA!be6o0w7IW*Ul4TH7`aPlNoPSPr!eaNkxFim$RVP5b+nu`}Nc0GSe`o@SqfBl;_nTB1{Z=HI +Ony*9h0X&+U!ZaVbVluhnfr+w;E*YrS+ZMG2G2CH-qjM8Vcd1d_A`N4b?znR}!#A9GSA^lYa^rnNp*T +q~hZbc=fi7kaYnn=JIva;LcZ<lfFd%odZ>2A|_7hsTaHDHj8K_^pQ8M+_<X>(q?kM;WiP;gi`D)_v>m +*o5(VdH%xG@u!w;s$B9G((yNmS!0r3~dAMUU7)TITXg5&5?GUvNJzNy~k_nQ`L<w=1^%{6SMqnF}Sab +8FD?Vy>)9k0*M%w7IV`ai%h~`64_Vz_m|>d+F$bM!v5gD7XpKxP8UTTI%^`h)#*N!z7+-igSnC&W5{r +ulTtG!haIgqim8DYCa(a9g_~wFZ{aEW{oL$;;Gz(o=<6hoe1#&In$<7q=1GSt3;4zd9F<3hv`=#&y%1 +-_}Q=zT6(P2*Re;d;x!i>HJfljdmj5-lNfiLKgyreG~@Q3`s<nDGo4Nax0g7+d2bl;1~=71H;E54HtK +=$L!fBD$Dol5*&Vv;ft{euG8jvT3x24NyeBtrdTf==L5C(^GjlXo<6O(ejBavAc86K@t%mdF|7pVyQ~ +ZqOzXMQ90|XQR000O8^Hj4?c+eklG7A6zQz-xdBme*aaA|NaUv_0~WN&gWcV%K_Zewp`X>Mn8FJE72Z +fSI1UoLQY?OOeA+eQ-qUr(_Yqo9OJjFVh@E)g5B9i=hqI6>sJxJv?RMXoH?)KcIsE$fN~d5r_^UM^2^ +Gy6d<Kjf&%9Z(b%l1Spt%+AjI=3__MBT*J7{3;-YoR1EA_wL>6^$5JyY{s}=6Y9Zx=cP$57l|P7hmw~ +YxyU$4maCL48JAQh@HLwgxnN}a)3f8tpS~w!BaR43c}(+I33<GbauwXaZ#VPBibei<LFM|&&+@DLM^m +3n7$dL7$4{P*$vn$R%p^@x;cGR5C|hmv<Z2-Ua%w-4hx-p6lG%n#k|n4zp{s;z>NJTM7c3wrlP5zWK= +S$7>G)#O6s;^V&$A^7!+9Z#oP{BtFv}$=cmmq8Fij-OX)1a>vw%+{Vfg%%&R8le)A{kq_<Yjq^?n?`n +w-73Acw@;_rLKUc<^kGOtK{-oGuwK@XA;;ho_k&H#ALRYiRgP1rt7b#g=r1Ru;_fz5M&-vlkcP#qsm; +1cd*h&g&&28yy^c^WErRlz4&r-5Y9(+tHFnqX-O_f^m?h_T5myvxLh`EGz*Wk#f7bPI#QH#pvK~f5r7 +^g&%(H^-hmZpN&x&_}q)xoKO)ZNtkA9miL9s;fRAkiO9j=mpSDE+^{75jHjCcIi8%JospDDu(KdCBZ` +qk6diax`Uk=fEU;oRF4ECIEhbhpr%R$Y07_0?YnPcvzNX3<_>~JFAe^mRG&PhL0yaU2Otn&|!zckHag +oU6hV6#tJ$3$3llf>GD*h#v(E{BLv14Tr4I|%Z1L^@tDoPB%RAfrOA)$bF;08qG01FIW?I5N2>10B#* +=C*Pu_#rI*^R$`q?C(<SgU_WfVP5(`+Jre^lO+SPUdr#L#z{pbqw@i$>buKzF%zuu%NG8H6{2ki}65p +^Xja!UL?^%AAo|uNCMdT$XIv*PK?m=`V0ahL?##@=yE(e?7Ad~O0~b{0tj8PKr4%{qoX5xXux6NozUp +*#V<dM&wo6-Ad|E2FMhqsvx3K7je`ooAZ87tK1+W<4pG94M%Q=nxCl4=1M-){rmUS=?Vek-R&p>|;rp +KUk3u!c3W-rMV`NT+RDht|<}P1itff>kql%6Ni+u$?*7u+)9C!n(vk%$Ld2B*D&9dua)mJbz!EE(8hb +4tQ*to<qWaUH(4Qsy!D)b^o%*PM^5@dSCq|3KsfJGUP*h-Ep#R$Xzd;w!uS)RznQg1maR+yC`rcIW{M +4Ki8pJ4Q`dL~gsm?t{(N9jvQG(nVtH-o9o;8T*#eg<F<378>(&%yK}<7{fpQt)e@t+_Qv!<{c64XQm? +2Hp@bl8F_KAOXJqdVhcayP<wRHt(nA9f}*2S@rqhzSdW50YTuxOmC}p=zDMFTmE+bHYeUdg97UjFzC| +dgC&iZ)nYQ&>)<#%QDp@KC48u!m7YH&svamo$Xd!NDO$4ZCJ+Tss36JZBfwn3S?pCrD#NLgdmAE2Xh? +`#mcxY4vyuf|&gueIs<wva$Zjz$^&OH*Yx~**r*CS^DtThCNdk<jY$2eCSY$;SV?3&2?$^XrD#GTvjq +puiIkKy*9h+LD85Ju@6}2+^8(e<}47G?d&MKejm<~bn&_3(i4`G&vU15G4VaO4dsJi3Ey2d_2-^I5HD +oYjI6*tIB4Rp5@@9oT%lqS$F1teg%5fmu+7u1CoRru%1#N#~A@|_|Q;JBcIN}0EfGK9XTw7oZI#Y2ms +*NhJ1@V2=>9VhCD#5qpidu`59ZzKZpRqm0m+S&}Zz(JX|0+}{!1%OuoZRlep-UG^tUF|6ftnY%nzI-} +5&~;ozMg)e2NGQ81Raq2bDrRGQ-zRABWL8KP1S$lp@_tI8VMrpH>NH{Q9F_VV0-S76iow1LG%r9-_bt +Xs9F{B;;25XLtOVbC6Sk-Lb_U|>D8v_DWP*9Y0fmM*XIEHs@@WHTDhNTzM22Bsuyn3-Pc6JF?<0Y4GM +BPXZK0i8oYU)#a<<CNMs47FkIU=GSK<i4Q|^aXmq1xhIk<8inUvYC^fC6>P@W}rjaZwo)29+TTi`vY; +P0ucD7F_NEIj!3eB4-j@NLRqS+Ab7S7)s3O-#d*@Kpg7cuvz4ySFm44GF_o5r-ZaAcdmpH8R^1#gD!Q +>a=k+FlkH)$KGJJk(R<;Z|%BMzpyRuS+tfBCROi`*+F*~N}VZ*Gia3I=Exvn-QWpMUOe|}*;kz$oVQu +2xKZDMm;<Pl1MkA>7o^pCI;tge$1r3%?Lz~r+-5lj(<!vJ5S^$lZQkjszyxT)s<uXH)>dov6fXLN(Ht +5qu-%lE_Qx9)2e0ZYx1(jtk$}8<p=?p;q&mx%4&;=BkTqr!938@{2I!z!4_rRPLrZ*D%67utuftz^eD +G%f-LO^fTe>(2UWxB_9AYpeYpD5Pt_{KqG+Aah80_{+sHl9Wc<Kj2(p(B;?a#cow@;tK-*HF9wDE7Yd +-E`OcekK13fn5^WM@HR(CFj@{&oq&Y-I&KGJ>3z*DM*snv0b6fU)19mSK|*0yvV*+@qkoWA529;P_wk +S-;<GQBS#z0Jom+Y-9&+kThIW28r<?&iKMFtt0nd7HN8KG^1DxwXnR)lWt{D!^N4-cFsBN+|w2UolYQ +W&68Z<U5ATe3A_AUz&FOT;%b340s}l>!mX&@AX!OTGw644b(J$UBvpA9BfIK)V3}8Y0Da7sm~hwl9C? +l1^(80~H4yz-33tVIeWq|%Ev#&z53LEyD&}CQF@GC27;6Pk&GYI7RQK($He;wWc6Cn3nO;%>8!Fcsk8 +<5ar@Dp8+qJQbHN|_yIH)Q!<PM#f3(Ex?eP)+dwdCwp_Dky8b*6mUE_^#})hve8QCFEo$KEDkY20Z%d +-H)HF+|!=aAhj4xllKxx_esp0kwEoCJ+6ttC(ph@F;F4fp7!)Ji5l86dDP}>~973HDNU}fGE-=^(l#& +R9Y?E3n~6gQO<nqOP#hw-a(=_t1ZlOMz6J(Ytx!NfEVh{ZWpvr6FV&2IPSDb&J2g!X|8$dndd<|PdH5 +vFZ05gul$yCe&UQ<EZKQ%jo04)&3&y+cQQzau$myJP<}zb^YO#Ku}XgY@E=nrwXDuM*{qMP;Bh$qpzV +)n8KI*|_>$|6Hh(>t>z=e4ew8`gbWyd|%K=0?wd&`CS{nWYZSWhy!r<_W!@~X$@>x-#M`s<iusKAl@G +lk>{yY1`KYOS<1LRXfwB1|x&kY-Vsrgv=+4F)*gw_pls6I4SX9fNUi-Q8sYb;f*Sgll<VVxOuw$ak=@ +rEvM<0q_SUNT@&EUy?b*)V7735@+S=4*2NCB)F1%ZYAZfTMOzak*Va4ZVh)90Q|f=(r2mKtn|7QsTkX +IgJK;pHq?jltP!`I3G}C#(yXhGs(4`2J4|gbq~8^66iOH)MoYcbH?K&qSE|m#51zYa_3@4Zvcdt<m*2 +fJ;w{)%(j}CmyAcMA5+1-IBHKFXx6Gn=l^(cBS>4#La7EVH>X+>r#q^j(3Av2*LUqcsCKoDYz^ICn|X +>Q+If&>bld)$i6KZCH*DlFd8EdNcnIw$3nhcqm`Yj)cMXSCMAmg~n8Arwbt3F;^+pKp7MFwWEs3SWS6 +$=4q^d;L6K<LrxR;9ROqI;0=bN$DQs-{Bx9g*AFLtYso&Dh-soPVseBb;ZnjmOQ6Wz46H5YYH1|7oRP +d>V1n%7auce-0N!e`4gumjNS(;>ucFI?|{{|it{0|XQR000O8^Hj4?$E^s91qJ{B6C(fsA^-pYaA|Na +Uv_0~WN&gWcV%K_Zewp`X>Mn8FKl6AWo&aUaCwcIO>?t05P<Lb6>56$CCXS}KJ1wu`hFZbllGDx-W!9 +lVk^er0o*w4w7<Q8F-W^Bz&Rvd9#;D$vFzmW@$un-)t?W!m06PSRJJdl(|9Y>vX%dbKeroxkI(FW2fN ++Cs+?5^sS1|GC;5EiHc5W|EY$u`ZP?fQpUhbbhiyOEt2*TwdyUU3yV0piWLC-z`||qjiIq~am*2jA|K +s&Ld&>*9lU1zJvR3`r82&T+@#6>kma{CcnB1xAr&{#qL6z)HrIOXZ<4cvF;z}iPntrmq%w!Q)a@Q<<I +^L{)K7T$uy!`s*`^zi)h5gf-vAATac1?0o|6Hm!9xgVmxc&2~V|uy%K@3I!6Z$?z*g|bj&6N&H&J+fr +virUnfhdI1ROV?NxXjVWMJ?oE=&iZaYa1jRHU+AJi=~(bvBDA1f!<PJG}p!s+=z7;bTk2`4v{eugdwz +nL%>}!;4TWdOFQGDfUl=PtZ)Q$Z2@;t9B0_rfla_e6!0EQ-SL3CM!*qFfJ4AnWWZM_;49jh6%4poPJ> +wC2)MEZe1+mT!^RGz1Kxw_YCPa8Bj5-oz#-sC{SZj&gTA?G0KFd6E>jvklo^lq+Jl){S;FJN%y^c}K+ +v0GV>H*s4x}^FgK-gWVQ_S?Kf~kll=EO2+H5or`$ptTaw`y^ngO=C)~zK#nVjN!$5<=eN4fUtI1(V&y +cq}8B-m7s6HG6SO&kHybD9F9xn6f5{p2DtvoEAPA}|1%u~yFjrg;^uooP^Ca2iBy69H-xGCToFp(Tz1 +OkrS2Aq0a-ulvl*u(1Q_6!u_w$s&1)KsX7o->xCOuR~lE2e~ce2i&ebs9&a>2~lQ3+G_%&w`&Mf=+4l +HR~`Yag&U&G%vibu=`*|s|5D{8PG`h%NFjaVhV|KnBT1fT8k*+&=8XufPohI<_@n`Kvjf*R`X3wFq|& +o&34_Ec$4C<-$&`BAqDkoX4BzSQU7%)LSXyI53R_z)@GF6!TUmiRPhn|<5Giausv!EhHN86S*Mv7sVs +MNUwvJ8U25WNlbUjfagh!U$p*?qxxe5!o<r*O`?oj=Wngk$-8Yy6i!__D#ngj6*4P6HBPI02LDlZRu9 +0p;>)dI>vibL8c?#gQsFY;5Ijjp@POCARBEoJecvR(dhyM!{T&nYY<2FFMfB*{vZ+;^5U?9@f$b|z=x +cu?g)wikg?^9B;Va!N0WwxAd@KoAB9+5iCz5OxE4G|oyDUESvu7i+)YJ388rVd64Tcn^|jyF4E4&}b; +|nL?xeX-d|gjy4lJtd>UmswQg{qV3pdIS0i`N70dN;UU~CTRYTfnJF|y1!zZM^zG=S<V3}gs39Xu+X1 +Bw2b<O+#N#dvbqNDp+5i_A00(^(+JboeqoG8j;8{u=pTcWf4WOypDx8C2rK9ND9sxX3n`LW<HubtD>U +9{ac~kXjPT&wuqK1sDffc9$IGG_6+km46c!U8SZGZ<1fFm{vZ9&|qYp72c;L`^9zyLU<q0kl##taAu0 +|MHB02lyg3>4aecx0lXAz?sB8xR5m;2ScHHk}w8-9oVeUyenrGS#<k7C1SmOqLS(w%Biv!@;uOI<A1{ +r9sqN&kJu@cz?3#1f>BI5rGf{56wrXLEr(HNp!~<h`CN&Ii<y1MTAQib&+@ReU|fgt%yUHba4l6)t)$ +vZek7Lhhv$PhAtgRGEOKmk&;@<K(72sr~z8!B{?5=Z>Q=#KF3|{ENUTtKi{G58(hkSuAIUE)RvaBbR2 +_g^Vmo=QWuSrNm(A$TlKEYaJIszk=|dE%IFwp@38$qTr1!}osElTa1gO@_k+R}@4Cl`yK+h+=GxRA(M +xobkYh1Gbsc*CQfMt9g1T>1{s*XUEzBpo2_5r78gHK@R7OeE*u-_C#-OzoYJD3IK@CNi0?<7<Yr{Ph% +&xkPU=1~E2J0>wC!2qM5dIdN=!4k6P+)K36ksW>ZNRSlQp$qw<XinT*=f%wL;Upc@5BF4O9KQH00008 +0P|F{P*8s{A4CEG02u`U03-ka0B~t=FJE?LZe(wAFLz~PWo~0{WNB_^b1!XcY++($Y;!JfdA(CjkJ>O +0z2{d<sgRwDX4^d?ap>-HSc&#fdO%`PWRd~Ab!^u*0#voXef^OHu~d7kBPEXg=8fk)&tNdfGVtSoYm} +9$x!l^K`6<{Mg^fFZ|20z3cif_6hB*Yc!%L3D0FA2m0*iznS4y7@-|pNP?z<`6e)@b1>l4g*qa@6k<} +#rLuTWYX!`=L01QroykN4AW^C@hUff^m-!g}gKD1tXy83)f+$;_G4I8tnkYG7}K;A?0B{!eL?86GRt4 +j$v`)EH&1LJEVw_GsPf&@8KQ1I$`9t`zEkhFWKQ)p?>wJCN33GHGW;g60up(Cv+EcUnd-CI&I7Pt;Or +W}JlyED0e`sn9F8-u5a5d}SKC2xzTwD!9fCNY?xhhu*_tv495!QaQkyyLW!+$BtXraDm{zZ0}UV9Iu! +Vr(TXar0%X{p-)*h`*Js(&AlwYGq1}ko~13yOBH{^pa!*}7d}N)o);nruPND+eAMG1;yam^B<Mm`7vQ +`HhXN~qx~(!N;4)r3?=Y(^ZSP66(cd9f)4ZtBvmzzTR-C`)>7DUB9p{qt4!0F{=vYI5o==*JC#wW(*s +&BSy%v5({j4qf96gGj2aXh(pD$a1M~AYeeM%BuLpvT?{~kR_0z;rJ3-Qkfpk2a`a88z|9QpOp-%8H34 +#~+Ma?vJ)6wiuF8bP^l7rueA3^ZjK8jO@>!?-L<(zcE7Do6W%B0J~w_~xb)tgsrZ;;>`xuq~9?-kh5$ +*cj}20Z>Z=1QY-O00;o{RI^ZLIB=)A1pok}82|tw0001RX>c!Jc4cm4Z*nhpWnyJ+V{c?>ZfA2ZbY*j +Nb1raswO31T+eQ$+>sKri1f&8<kX$6O1o&XZ5@0}a3dlKG2C<}8_BJ#raF?-s>7o52y%s3Y-g|TVOZr +PX`y!Vw>tRQ*OmaEjH;<j28NEh9yrj|12&H`0J#M{v^{UlE@VO^GiPSsR<AiZ0mw&E&l=vy~F{1$zl8 +B|06SRsGG|?12B{d4-^+Q5$Zutm(G`HxeKR81E1DeyjI6`y0rje2kX+R=IMrb@g>mWu5nw@`~T+Anud +r3H^Ap>e@^eTz(kms#Zo+iZe5WQQ+2}fx}!35%kU{ZoZrUiTEy&J~y*L2-Mv(xcpHtztfknbSrJzNFO +GmG*;zmYatpYte4$Q_9|4$q``(y`ZMD8$;A%jt2u)oLxt3Sq`b!o37jMwm-B0a<ezM;)|Eqd?ug#mNn +W%iFK_;;ucCdU^6N$_y~VZdq1JC{~n_=eUGGtW>N?DB_G>qjiFB?(hgjF=WO!lH|g|Msz9-29`;Z#EI +*i(Itp-{q_y(Ip|HU%D5@A!V9qvT3qdb@*Jt?yN=90r`?P29YH52NH5fhe%V9xa=NQ1y!kGYXg5)`NE +VThU+^8d!3IPbx`-np_U*?9eha5Z2D#T5;m6;KD7bb{=O53{(fzGBvuuq6q7Q31mUAU(n|Dv6Wqi-Ng +QIsxwN_FVcaM+X4ZDNAU?Ju-+7B{2y*$4-K#Q=<M5KZD-@h&f#jwdhbmJ&|Kmmrlr%<ILMmhaP`9sf6 +dK`wO#22MYt^i6Go%}><<*MAczT<S1Y+HEb%133FT5Xqssx-Mp9MI&Y0<<S&O)wYgulgM{fWM>bQK6c +}DPO0&gFJL%*FX0PsIJjl&0usCpeB5jaaYku8?LS!rL3CjUe)oJ36wDj*j6pMZpoxVK$Bh`SV?LHrcn +@TF^zC|a+##03{qB?EYXF&!4eJWWjj^bq9(zLAqE8b7>3AnYa|W;LpUMm8xEm7tMo%Wj`IYRhXfLU5$ +>uS?169!J*eHTWTQ?wfys}TxY~(MBdJX#d$Guy_BN9|vT@{X)^`@0$#k(9kKqf~;D^Nq55ZYSGdk^UR +Hjoq|NOoeuF%=9uJ?u-z57Ay#)N~=*+5~Ttqsu`Tx_>lS}!)oeGx2EX;pps@0UOF5|h1aKgCcHK7=XX +bk$rHhuqF$*WF4WhpWTk4rT$RnE}5(+8p{_6G?p*7YS=j66aUWDd?W^TQvUssnwuhI)N{c_xp<t*-qX +ay!VNvVDP>>p5#gzbWD{VG8B4t(Giw(%(m;$el+M<q-5Cd*ZZ=?>W0WPFiOjtf}K+-zs8eoac&^Wy;M +ZAr-;Hmh_=$~$dh|^K;+9|nr$O{%EL0*Zu^&)Jl!gbCC~Iv)g0`4r-I=$3+KhiDiSX#p806)%Qk@UdQ +XUNL3E4@t=pRLbnL`CYuV$m$9MwMg-atj8LnWk^>OgkGh>G}He}OdHj)&l$VQ6N4^x=5dOyW9GIONuX +1#H;6Wd$tI6HvEP<t3ohO&Z%(C>u4C1Ds>;c9tD21iU#&!-7PN%TCLEa$5c5sh?5j+!=lV1%=DD$+U~ +eLnTg_fddzH5GQeNT<{3*`6vKGc3!S{GT1JXS-DL<lu9mIBKl;^YQOpIZE@+GdwCyHP7E}9p`CvFO(Y +n@N&9tGgfohH{BEnx=^WUM3&~XLS}uK4CRq6SNPiQ=$jf__!Vv&UHGZ_B&t|O_rO6&YLJ!Y+@v-8<tM +){%Ve7LQ!RI2HZ?K79G`FVnf|_&FUv4VrxVApHzk=?BeSubWE)S&dRo@xnNqhz0(R5^`vUm-i_HLkUT +l`b*HE?KslS3NM8fwu+`t1qhAVdTFk&bw4C(5F;DC!}5qCrJUoeRWxdd$DUh~-|;i?X^RGd#WsNvwb8 +lR7-mB`f$X&I=NQ)_Jf4^T@31QY-O00;o{RI^aq2K?5g1ONcj5C8xw0001RX>c!Jc4cm4Z*nhpWnyJ+ +V{c?>ZfA2ZcwcpMWpZC+WoBt^Wn?aJd8L<ad)qV=hQH@mh?J6qr6Eq&HVzBW^#uxJlyxv*FF}@$8iV5 +m*`X~j`|T+9QS_u;KkOo3?sF_lI`^^MtKJf7uG9Q-B$lPw88({DW}_k8?}`%2>#?GDJy{lHCz?!}ldi +_!-v6r?ILt*lTVyn&yp&}+&&Aw`a!TTQXSLW4FDCphy?WY6%@;Q|y_}XKapXfW=tl#Q+=z>G<`%k;i! +`tA&Qe8rK_l__;<zgcBJt$x=;Z0ei7<03G?g;V3b%CSW$b(=CKIzPmzE}zRef_?ie;X<5@?d8C0Usjj +Rp^_t}2%{wzjrhF)k5@=V$JM%4AX0SK9SWy(;O9Y6<67dr`Zf%ydPXFP3FjkhODLj9W!%Q&qOy?Sg-n +TunLe*i%z!XL2#&H8y5<*BzUbGRdeDwsdp<_m;fItu3poxFxsXELXOE!r4hxtM&c3JHlJv*Bf^lWHvr +^{ipZr%W9e4J<WO9fBmjvkLkW*c?61mS6APs*v*b^6nm?!SnNe<NzPu_)tPKphpX!s#v$H);ilZ0`i! +K$XKFpPIdyf!*Dt)7&Gj;))oFK&uBJ}X+|0#T;AuZ|m)g}Dxt!6swfSPVy46tqsK)iX(&^P{mz%pWRH +yY&8XibJ!;bGBs5`gTD{S1#kF&nDsO)WJKgL$z@Kx2<F*do|=x~RQ`GJY&s|V(;iSwIs>i#6{j$FL@l +cQWg!pi)T+Jn9Q&PXh5nwRa?YJ+Xt65B#e-MJH~akoAa(O@XZog$Y!5dG`ZgMPo$X>6Vg*Y>*2tykCm +erp{@AsmEoH-ryExEI3x5FUhZ=)=+nc^FJWsC;O{H433whf%0B3YA8o(kN6Kg-WAPX%s4rLZ#6#gmDO +E2t&1z3ZV{Rs5kQU3g!pQCUcAVA#<DgQO#znS?6uO-eG>se8B87cbGlqCrsZg-zncF-y`23-yPo?-xu +E$-;ojXQ|2S)nE4s=bLJP!L*`@V5%ZXN!aQYu$^43W#{8Q34f6@}Tjo>dcg%C<_snO^3+8j?56mB#FP +J|ue`fx|eCZ$cD-K>W-!Lc4Uzz?K`9tJSkUu{D?D&Io$(%A%=5Ng3nHh7&^l#UkxnTam^siUJ^snWT` +6u&=dCk0G{>A*8`4977=G*l<aIk)7m*!yD$0WjJfXOZ<4>8%pWFM0QOoo`mm`F?#OcW*>6T$?2V)Tj8 +Cq|zbePZ;9(I-Zq7=2>&iP0xUpBQ~&^oh|YMxPjcB>G77k?14QN1~5JABjE^eI)uw^pWTz(MO_>L?4M +h5`7Z%Nzf-jp9Fmp^hwYsL7xPD67)&XCqbVCeG>FZ&?iBk1br0xDD+Y2qtHj8k3t`XJ_>yl`Y7~K=%d +g_p^rizg+2;>H2P@t(deVmN28BMAB{d5eKh)L^wH>}(MO|?Mjwqn8hr?T2z>~B2z>~B2z>~B2z>~B2z +>~B2z>~B2z>~B2z?Ct81ymdW6;N-k3k=UJ_daZ`WW;v=wr~wppQWxgFeRjbn1VvPxu2wRR8xjHoxV<* +N6YIN|tG++qb_>{{v7<0Rj{Q6aWAK2mtd`vrxh{03Ra(0074U000jF0000000000005+c00000aA|Na +Utei%X>?y-E^v8JO928D0~7!N00;o{RI^ZM2oF5i0RRAx0{{RI00000000000001_flvVe0B~t=FJE7 +6VQFq(UoLQYP)h*<6ay3h000O8^Hj4?VN4oMD**ri?*RY+82|tP0000000000q=8if003}la4%nJZgg +dGZeeUMUtei%X>?y-E^v8JO928D0~7!N00;o{RI^YZ{!RLd2><|69RL6t00000000000001_fwu$z0B +~t=FJEbHbY*gGVQepAb!lv5UuAA~E^v8JO928D0~7!N00;o{RI^a0Uan$*3;+NwFaQ7+00000000000 +001_fq4!90B~t=FJEbHbY*gGVQepBVPj}zE^v8JO928D0~7!N00;o{RI^Yh?(#Im5C8xTH~;`100000 +000000001_fh`*V0B~t=FJEbHbY*gGVQepBZ*FF3XLWL6bZKvHE^v8JO928D0~7!N00;o{RI^Z-Conc +(4FCW{C;$K(00000000000001_fh{Zm0B~t=FJEbHbY*gGVQepDcw=R7bZKvHb1rasP)h*<6ay3h000 +O8^Hj4?rViXR6bb+UP8t9J8UO$Q0000000000q=Cjc003}la4%nJZggdGZeeUMY;R*>bZKvHb1rasP) +h*<6ay3h000O8^Hj4?aZMR56afGLwE+MC6#xJL0000000000q=6Dd003}la4%nJZggdGZeeUMZDDC{E +^v8JO928D0~7!N00;o{RI^aUUdwv82><}-8~^|s00000000000001_fmuZW0B~t=FJEbHbY*gGVQepO +d2n)XYGq?|E^v8JO928D0~7!N00;o{RI^Y5;FXc<3IG5}9{>O(00000000000001_fk{sQ0B~t=FJEb +HbY*gGVQepRWo%|&Z*_EJVRU6=Ut?%xV{0yOc~DCM0u%!j000080P|F{P~gsY%1{ab0Cpt+03HAU000 +00000000HlF-S^xlWX>c!JX>N37a&BR4FL!8VWo%z!b!lv5WpXZXc~DCM0u%!j000080P|F{P|kPiG- +v<-0E7Sl0384T00000000000HlEeWdHzhX>c!JX>N37a&BR4FJo+JFJE72ZfSI1UoLQYP)h*<6ay3h0 +00O8^Hj4?C7Ak#^9KL`lNkU2BLDyZ0000000000q=BVn003}la4%nJZggdGZeeUMV{B<JVRdwGV{dJ6 +Y-Mz5Z*DGdc~DCM0u%!j000080P|F{P+uMGPMit=09YRY03iSX00000000000HlH0Z2$mpX>c!JX>N3 +7a&BR4FJo+JFJfVHWnW`&ZEaz0WG--dP)h*<6ay3h000O8^Hj4?BMIZjs~!LV^KJkD9{>OV00000000 +00q=B?}003}la4%nJZggdGZeeUMV{B<JV{K$_aCB*JZgVbhc~DCM0u%!j000080P|F{P#y2XdUgQ-0M +7#e03-ka00000000000HlGOmjD28X>c!JX>N37a&BR4FJo+JFJo_QZDDR?Ut@1>bY*ySE^v8JO928D0 +~7!N00;o{RI^ahrU`h_1ONay3IG5Z00000000000001_fmE3Q0B~t=FJEbHbY*gGVQepBY-ulTVQFqI +aCuNm0Rj{Q6aWAK2mtd`vrvVvA-r1z000{c001BW0000000000005+cT%G^`aA|NaUukZ1WpZv|Y%gP +MX)kSIX>MO|VRCb2axQRrP)h*<6ay3h000O8^Hj4?Nd?{ry$b*U2qgdj8vp<R0000000000q=EIK003 +}la4%nJZggdGZeeUMV{B<JaA9(DWpXZXc~DCM0u%!j000080P|F{P*?4Z5GV@(07oML03rYY0000000 +0000HlHIt^fdVX>c!JX>N37a&BR4FJo+JFK}{iXL4n8b6;X%a&s<lc~DCM0u%!j000080P|F{P`xs0S +jZ0m0L?o903ZMW00000000000HlFax&Q!hX>c!JX>N37a&BR4FJo+JFLGsZUt@1=ZDDR?E^v8JO928D +0~7!N00;o{RI^a;%Vojt1^@ts6#xJo00000000000001_fmzA`0B~t=FJEbHbY*gGVQepBY-ulZaA|I +CWpZ;aaCuNm0Rj{Q6aWAK2mtd`vryZtclLb%005i-001EX0000000000005+cg3$l~aA|NaUukZ1WpZ +v|Y%gPMX)kkhVRUtKUt@1%WpgfYc~DCM0u%!j000080P|F{P)9W$9)tw|00a;K03rYY00000000000H +lFF(f|N(X>c!JX>N37a&BR4FJo_QZDDR?b1z?CX>MtBUtcb8c~DCM0u%!j000080P|F{P~K6MXz~UC0 +4x>&03QGV00000000000HlEe*Z=@<X>c!JX>N37a&BR4FJo_QZDDR?b1!3IV`ybAaCuNm0Rj{Q6aWAK +2mtd`vrs;K1#VRW004~!0018V0000000000005+cG2Z|HaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZLXk}w +-E^v8JO928D0~7!N00;o{RI^Z8>W$h81ONby3jhEl00000000000001_fy3bd0B~t=FJEbHbY*gGVQe +pBZ*6U1Ze(*WV{dJ6Y-Mz5Z*DGdc~DCM0u%!j000080P|F{Q11XUvwR2u045v&04D$d00000000000H +lEr<^TY2X>c!JX>N37a&BR4FJo_QZDDR?b1!3WZf0p`b#h^JX>V>WaCuNm0Rj{Q6aWAK2mtd`vrru5Q +RZC<003(o0018V0000000000005+c(Cz>LaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZMWny(_E^v8JO928D +0~7!N00;o{RI^aEF%i_J1pokq5&!@q00000000000001_fok{w0B~t=FJEbHbY*gGVQepBZ*6U1Ze(* +WWN&wFY;R#?E^v8JO928D0~7!N00;o{RI^a@`n8p71ONaI4FCWj00000000000001_fl&Sc0B~t=FJE +bHbY*gGVQepBZ*6U1Ze(*WW^!d^dSxzfc~DCM0u%!j000080P|F{P^rgXk`w~~0L}&g03HAU0000000 +0000HlHW0s#PUX>c!JX>N37a&BR4FJo_QZDDR?b1!INb7(Gbc~DCM0u%!j000080P|F{P~Vh{TNVNU0 +I38303HAU00000000000HlFQ1_1zYX>c!JX>N37a&BR4FJo_QZDDR?b1!IRY;Z1cc~DCM0u%!j00008 +0P|F{P%;nY+A|pd09IoF03iSX00000000000HlGN2mt_aX>c!JX>N37a&BR4FJo_QZDDR?b1!Lbb97; +BY%XwlP)h*<6ay3h000O8^Hj4?84n&_jtT$(ohJYQ9smFU0000000000q=5}00RV7ma4%nJZggdGZee +UMV{dJ3VQyq|FKlUZbS`jtP)h*<6ay3h000O8^Hj4?xq@y#AqM~eM-%`6AOHXW0000000000q=DBg0R +V7ma4%nJZggdGZeeUMV{dJ3VQyq|FLPyKa${&NaCuNm0Rj{Q6aWAK2mtd`vrr1UHuDz<004&?0015U0 +000000000005+cHZ%bMaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZbXm58eaCuNm0Rj{Q6aWAK2mtd`vrr<~ +_s3ua004pv001KZ0000000000005+ci97)SaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZdZfS0FbYX04E^v8 +JO928D0~7!N00;o{RI^Z98YpDM2LJ#c82|tu00000000000001_fhs`(0B~t=FJEbHbY*gGVQepBZ*6 +U1Ze(*WcW7m0Y%XwlP)h*<6ay3h000O8^Hj4?0Gbn)X8`~JzXJdOCjbBd0000000000q=73*0RV7ma4 +%nJZggdGZeeUMWNCABa%p09bZKvHb1z?CX>MtBUtcb8c~DCM0u%!j000080P|F{P)UBl1zG|C0Fea%0 +3!eZ00000000000HlG}N&x_HX>c!JX>N37a&BR4FJx(RbaH88b#!TOZgVeUVRL0JaCuNm0Rj{Q6aWAK +2mtd`vrugf8EtI=008&`001Ze0000000000005+ca!mmMaA|NaUukZ1WpZv|Y%gSKb98cPVs&(BZ*Fr +hX>N0LVQg$=WG--dP)h*<6ay3h000O8^Hj4?tl&ctBn1Ef_74C6Bme*a0000000000q=6+*0RV7ma4% +nJZggdGZeeUMWNCABa%p09bZKvHb1!pbX>)WgaCuNm0Rj{Q6aWAK2mtd`vrwA)Mlllt000gJ001Na00 +00000000005+ci&OysaA|NaUukZ1WpZv|Y%gSKb98cPVs&(BZ*FrhcW7m0Y%XwlP)h*<6ay3h000O8^ +Hj4?LqAK-AOHXW9smFU9{>OV0000000000q=Dd80RV7ma4%nJZggdGZeeUMX>Md?crRaHX>MtBUtcb8 +c~DCM0u%!j000080P|F{P<_FKH#r&r04r1g03ZMW00000000000HlFER{;QUX>c!JX>N37a&BR4FKKR +MWq2=RZ)|L3V{~tFE^v8JO928D0~7!N00;o{RI^aTjUw<}BLDy_lK=oE00000000000001_fwXY}0B~ +t=FJEbHbY*gGVQepHZe(S6FK}UFYhh<)UuJ1;WMy(LaCuNm0Rj{Q6aWAK2mtd`vrv1<DE>PD002J#00 +1BW0000000000005+cRFwe$aA|NaUukZ1WpZv|Y%gtZWMyn~FJE72ZfSI1UoLQYP)h*<6ay3h000O8^ +Hj4?LKY$hp8)^>egpsjApigX0000000000q=C(q0RV7ma4%nJZggdGZeeUMZEs{{Y;!MTVQyq;WMOn= +E^v8JO928D0~7!N00;o{RI^Z}*T0V~2LJ%{8UO$y00000000000001_fvcAR0B~t=FJEbHbY*gGVQep +LZ)9a`b1!6Ra%E$5Uv+Y9E^v8JO928D0~7!N00;o{RI^ZBI})#z0{{SV3IG5m00000000000001_ff% +0w0B~t=FJEbHbY*gGVQepLZ)9a`b1!CZa&2LBUt@1>baHQOE^v8JO928D0~7!N00;o{RI^Y<;wu-*0R +R9b1ONaX00000000000001_f$^dN0B~t=FJEbHbY*gGVQepLZ)9a`b1!LbWMz0RaCuNm0Rj{Q6aWAK2 +mtd`vrs1+NSrJP004#@000~S0000000000005+c_M`y-aA|NaUukZ1WpZv|Y%gtZWMyn~FKlUUYc6nk +P)h*<6ay3h000O8^Hj4?<(ziwIspIxrvd-~9smFU0000000000q=8(m0RV7ma4%nJZggdGZeeUMZEs{ +{Y;!MjV`yb<WiD`eP)h*<6ay3h000O8^Hj4?!_tv0eFgvkXc7PbBme*a0000000000q=C||0RV7ma4% +nJZggdGZeeUMZEs{{Y;!MjWnpq-XkT+<Z*XNUaCuNm0Rj{Q6aWAK2mtd`vryArC)nx&0049c001Wd00 +00000000005+ck+lH;aA|NaUukZ1WpZv|Y%gtZWMyn~FLPyVWn*+{Z*E_3a%E<7E^v8JO928D0~7!N0 +0;o{RI^ZXRyIc31ONa64*&oq00000000000001_fxx%{0B~t=FJEbHbY*gGVQepLZ)9a`b1!sZa%W|9 +UvPPJXm4&VaCuNm0Rj{Q6aWAK2mtd`vrr{-*`7HB007hq0012T0000000000005+c-Ms+-aA|NaUukZ +1WpZv|Y%gtZWMyn~FL!8VWo#~Rc~DCM0u%!j000080P|F{P!1n~N-_Wd05Sjo03iSX00000000000Hl +FY!T|tqX>c!JX>N37a&BR4FK%UYcW-iQFJE72ZfSI1UoLQYP)h*<6ay3h000O8^Hj4?0k^DRe+&Qsbt +?b>9RL6T0000000000q=CZ10RV7ma4%nJZggdGZeeUMZe?_LZ*prdVRdw9E^v8JO928D0~7!N00;o{R +I^aH67>G20{{S82><{d00000000000001_fqc&a0B~t=FJEbHbY*gGVQepMWpsCMa%(SRVPj}zE^v8J +O928D0~7!N00;o{RI^Zm+CJM32mk<m7ytkv00000000000001_fnL)A0B~t=FJEbHbY*gGVQepMWpsC +Ma%(SSZ+C8NZ((FEaCuNm0Rj{Q6aWAK2mtd`vry~;nB5E%003w^001BW0000000000005+ctJ?tpaA| +NaUukZ1WpZv|Y%gwQba!uZYcF$Ub8~5LZZ2?nP)h*<6ay3h000O8^Hj4?xKRI91p@#8rw0H49smFU00 +00000000q=EJC0RV7ma4%nJZggdGZeeUMZe?_LZ*prdb#!TLb1rasP)h*<6ay3h000O8^Hj4?EdXQQx +B>tGJq7>(9{>OV0000000000q=7c`0RV7ma4%nJZggdGZeeUMZe?_LZ*prdcx`NQaAPiTc~DCM0u%!j +000080P|F{Pyhe`00IC20000003-ka00000000000HlE{_5lEJX>c!JX>N37a&BR4FK=*Va$$67Z*Fr +hUtei%X>?y-E^v8JO928D0~7!N00;o{RI^Z!${vEI1^@u*6aWAr00000000000001_fp7K!0B~t=FJE +bHbY*gGVQepNaAk5~bZKvHb1!3PWn*hDaCuNm0Rj{Q6aWAK2mtd`vrvPyIHsfv003Jl001HY0000000 +000005+cRQ&+}aA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFJ^LOWqM^UaCuNm0Rj{Q6aWAK2mtd`vrwpaV +Yi4C002Ht001KZ0000000000005+cI0*s(aA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFK}{YaA9&~E^v8J +O928D0~7!N00;o{RI^Y300002000000000g00000000000001_fdL-^0B~t=FJEbHbY*gGVQepNaAk5 +~bZKvHb1!0bX>4RKUtei%X>?y-E^v8JO928D0~7!N00;o{RI^Z5S~bi`0ssIT1pojl0000000000000 +1_flD6(0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!0bX>4RKZDn*}WMOn+E^v8JO928D0~7!N00;o{RI +^Zz;Tm@S0ssKp2LJ#u00000000000001_f!rYi0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!0bX>4RKZ +Dn*}WMOn+Uu<P(VPknNaCuNm0Rj{Q6aWAK2mtd`vrydoCO2yW006xO001Wd0000000000005+cDJ22` +aA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFJg6RY-BHYXk}$=E^v8JO928D0~7!N00;o{RI^Z}6H@O(1ONa +W4FCWx00000000000001_f!QYl0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!0bX>4RKcW7m0Y+r0;XJK +P`E^v8JO928D0~7!N00;o{RI^aw-4uH@0000p0000i00000000000001_foLoO0B~t=FJEbHbY*gGVQ +epNaAk5~bZKvHb1!Lbb97;BY%gD5X>MtBUtcb8c~DCM0u%!j000080P|F{P*|I|DmnrH0MG>h05bpp0 +0000000000HlHEECK*<X>c!JX>N37a&BR4FK=*Va$$67Z*FrhX>N0LVQg$KWn^h|VPb4$Uu<P(VPknN +aCuNm0Rj{Q6aWAK2mtd`vrzOdXPqJj002%B001fg0000000000005+caxVe^aA|NaUukZ1WpZv|Y%gz +cWpZJ3X>V?GFKKRbbYX04FKlIJVPknNaCuNm0Rj{Q6aWAK2mtd`vrtgmP8b&+002#0001cf00000000 +00005+c+%*CKaA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFKKRbbYX04FL!8VWo#~Rc~DCM0u%!j000080P +|F{P{Lqv0CEEW0B;Ha0384T00000000000HlFBR005SX>c!JX>N37a&BR4FLGsZFJE72ZfSI1UoLQYP +)h*<6ay3h000O8^Hj4?`M5<yH4y*+Q9J+uApigX0000000000q=DyG0swGna4%nJZggdGZeeUMa%FKZ +V{dMAbaHiLbZ>HVE^v8JO928D0~7!N00;o{RI^YEdHkj|6#xK(N&o;I00000000000001_fm>+;0B~t +=FJEbHbY*gGVQepQWpOWZWpQ6-X>4UKaCuNm0Rj{Q6aWAK2mtd`vrzH2jPgPt007~8001BW00000000 +00005+c%YFg?aA|NaUukZ1WpZv|Y%g+UaW8UZabIa}b97;BY%XwlP)h*<6ay3h000O8^Hj4?S0vir?+ +5?@a2@~v8~^|S0000000000q=8GH0swGna4%nJZggdGZeeUMa%FKZa%FK}b7gccaCuNm0Rj{Q6aWAK2 +mtd`vrx%lPBBUb004**001BW0000000000005+cbf^LVaA|NaUukZ1WpZv|Y%g+UaW8UZabI+DVPk7$ +axQRrP)h*<6ay3h000O8^Hj4?(}si~>lpw5wp;)JA^-pY0000000000q=Edd0swGna4%nJZggdGZeeU +Ma%FKZa%FK}b#7^Hb97;BY%XwlP)h*<6ay3h000O8^Hj4?000000ssI200000Bme*a0000000000q=6 +^N0swGna4%nJZggdGZeeUMa%FRGY;|;LZ*DJNUukY>bYEXCaCuNm0Rj{Q6aWAK2mtd`vrzbG2j(XM00 +622001BW0000000000005+cYsmrtaA|NaUukZ1WpZv|Y%g+Ub8l>QbZKvHFJfVHWiD`eP)h*<6ay3h0 +00O8^Hj4?000000ssI200000D*ylh0000000000q=C@N0swGna4%nJZggdGZeeUMa%FRGY;|;LZ*DJa +WoKbyc`sjIX>MtBUtcb8c~DCM0u%!j000080P|F{P}gb!O0g3F0JB5@04o3h00000000000HlE%%K`v +!X>c!JX>N37a&BR4FLGsbZ)|mRX>V>XY-ML*V|g!fWpi(Ac4cxdaCuNm0Rj{Q6aWAK2mtd`vrqs4000 +6200000001ul0000000000005+c72g5?aA|NaUukZ1WpZv|Y%g+Ub8l>QbZKvHFLGsbZ)|pDY-wUIUt +ei%X>?y-E^v8JO928D0~7!N00;o{RI^Y(<=&m}0RRBr1pojm00000000000001_fn?tT0B~t=FJEbHb +Y*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJfVHWiD`eP)h*<6ay3h000O8^Hj4?S_CJ)8w~&eMLPfh +F#rGn0000000000q=B8`0swGna4%nJZggdGZeeUMa%FRGY;|;LZ*DJgWpi(Ac4cg7VlQK1Ze(d>VRU7 +4E^v8JO928D0~7!N00;o{RI^asivFsh2LJ$;9RL6>00000000000001_fd}sb0B~t=FJEbHbY*gGVQe +pQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJ@t5bZ>HbE^v8JO928D0~7!N00;o{RI^ZUFY^&60ssJ~1^@sr00 +000000000001_f%NtQ0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FK}{ic4=f~axQRrP +)h*<6ay3h000O8^Hj4?OE7styaNCLAP)clGXMYp0000000000q=9Jp0swGna4%nJZggdGZeeUMa%FRG +Y;|;LZ*DJgWpi(Ac4cg7VlQ%Kadl~OWo>0{baO6nc~DCM0u%!j000080P|F{P@iq=Crbzb01+Ah051R +l00000000000HlF+{Q>}RX>c!JX>N37a&BR4FLGsbZ)|mRX>V>Xa%FRGY<6XAX<{#OWpi(Ac4cxdaCu +Nm0Rj{Q6aWAK2mtd`vrqs400062000000018V0000000000005+c4F&@MaA|NaUukZ1WpZv|Y%g_mX> +4;ZUtei%X>?y-E^v8JO928D0~7!N00;o{RI^aIVuY`80ssI-1pojZ00000000000001_flLMi0B~t=F +JEbHbY*gGVQepTbZKmJFJW+SWNC79E^v8JO928D0~7!N00;o{RI^YdCj#9%4FCYbA^-p#0000000000 +0001_f%ymn0B~t=FJEbHbY*gGVQepTbZKmJFJo_QaA9;VaCuNm0Rj{Q6aWAK2mtd`vrr_}8>WQ@0049 +q001cf0000000000005+cZWaRoaA|NaUukZ1WpZv|Y%g_mX>4;ZV{dJ6VRUI?X>4h9d0%v4XLBxac~D +CM0u%!j000080P|F{P>Ee6=QafZ0QL+303rYY00000000000HlFB9RmPxX>c!JX>N37a&BR4FLiWjY; +!MUWpHw3V_|e@Z*DGdc~DCM0u%!j000080P|F{P-HM+HlGCm00$8O04V?f00000000000HlGiA_D+$X +>c!JX>N37a&BR4FLiWjY;!MUX>w&_bYFFHY+q<)Y;a|Ab1rasP)h*<6ay3h000O8^Hj4?gzWMdJ^}y$ +Mg;%>B>(^b0000000000q=A+w0|0Poa4%nJZggdGZeeUMb#!TLb1!6Rb98ldX>4;}VRC14E^v8JO928 +D0~7!N00;o{RI^aaF<5qP0ssIg1poja00000000000001_ffp+S0B~t=FJEbHbY*gGVQepTbZKmJFJ* +3HZ)9n1XD)DgP)h*<6ay3h000O8^Hj4?{C0m_YXSfOfCK;lA^-pY0000000000q=CXM0|0Poa4%nJZg +gdGZeeUMb#!TLb1!9XbaHucZ)t9Hb1rasP)h*<6ay3h000O8^Hj4?V4TZq*9iasof-fDApigX000000 +0000q=9WP0|0Poa4%nJZggdGZeeUMb#!TLb1!CTY-MwKb97~GE^v8JO928D0~7!N00;o{RI^a$nt2@n +0RR9y0ssIY00000000000001_frB~&0B~t=FJEbHbY*gGVQepTbZKmJFJ@_MWpsIPWpgfYc~DCM0u%! +j000080P|F{P@{jE%5nt&0O1S(02}}S00000000000HlGzI|Bf4X>c!JX>N37a&BR4FLiWjY;!MXY-w +U+E^v8JO928D0~7!N00;o{RI^b3x3My~1pok&4*&oi00000000000001_fo(wp0B~t=FJEbHbY*gGVQ +epTbZKmJFKA(NXk~LQaCuNm0Rj{Q6aWAK2mtd`vrvz|dNZj3001fj001oj0000000000005+cU`GQ0a +A|NaUukZ1WpZv|Y%g_mX>4;ZX>Mv|V{~70Wn*=6Wpr|3ZgX&Na&#_mc~DCM0u%!j000080P|F{P+%(? +b7v0#03|a303HAU00000000000HlFbNdo|IX>c!JX>N37a&BR4FLiWjY;!McZ)ay|Zf7oVc~DCM0u%! +j000080P|F{P(})b#;_m&08?fF02=@R00000000000HlHUSOWlXX>c!JX>N37a&BR4FLiWjY;!MdX>( +&PaCuNm0Rj{Q6aWAK2mtd`vrwytJ<f9h004Xh0012T0000000000005+c;CTZ8aA|NaUukZ1WpZv|Y% +g_mX>4;ZZEs{{Y;!Jfc~DCM0u%!j000080P|F{P^JW?;86qs0NV=y03ZMW00000000000HlGAdjkM)X +>c!JX>N37a&BR4FLiWjY;!MgVPk7yXK8L{E^v8JO928D0~7!N00;o{RI^YW2g^X=0RRBz1ONae00000 +000000001_fgOMY0B~t=FJEbHbY*gGVQepTbZKmJFK}yTUvg!0Z*_8GWpgfYc~DCM0u%!j000080P|F +{P)i~!_B90n0KyXh04D$d00000000000HlFHf&&0>X>c!JX>N37a&BR4FLiWjY;!MjWps6LbZ>8Lb6; +Y0X>4RJaCuNm0Rj{Q6aWAK2mtd`vrwFl;9!{y006Eg001EX0000000000005+cx`zV*aA|NaUukZ1Wp +Zv|Y%g_mX>4;Zb9G{Ha&Kd0b8{|mc~DCM0u%!j000080P|F{P|3HP4kHQx0QnyP03QGV00000000000 +HlGElmh^8X>c!JX>N37a&BR4FLiWjY;!MkWo>X@WNC6PaCuNm0Rj{Q6aWAK2mtd`vrtFMrHsr1004Of +0012T0000000000005+c@}2_#aA|NaUukZ1WpZv|Y%g_mX>4;Zba`-TZf7oVc~DCM0u%!j000080P|F +{P$OP+jfDyT0Nx}303ZMW00000000000HlHWp#uPLX>c!JX>N37a&BR4FLiWjY;!MlZg62^YiVw0E^v +8JO928D0~7!N00;o{RI^aVlo<rF0ssK_1pojW00000000000001_fxN5(0B~t=FJEbHbY*gGVQepTbZ +KmJFLiQkb1rasP)h*<6ay3h000O8^Hj4?68(@m9|Zsa;SB%)ApigX0000000000q=Bce0|0Poa4%nJZ +ggdGZeeUMb#!TLb1!yja&&cJY-MhCE^v8JO928D0~7!N00;o{RI^YsXI;N32><|!8~^|u0000000000 +0001_fd#b#0B~t=FJEbHbY*gGVQepTbZKmJFL!8VWo#~Rc~DCM0u%!j000080P|F{P+#uBQB45=0BHg +M0384T00000000000HlFvz5@VoX>c!JX>N37a&BR4FLq;dFJE72ZfSI1UoLQYP)h*<6ay3h000O8^Hj +4?>xHBtR|Nn7bq@dl8vp<R0000000000q=E3i0|0Poa4%nJZggdGZeeUMc4KodVqtn=VR9~Tc~DCM0u +%!j000080P|F{P`&G0bsG@?097{t02lxO00000000000HlF{#RC9vX>c!JX>N37a&BR4FLq;dFK20VE +^v8JO928D0~7!N00;o{RI^ZBa68mx1^@u#6aWAo00000000000001_fzj3j0B~t=FJEbHbY*gGVQepU +V{<QUWpZP6a%o{~E^v8JO928D0~7!N00;o{RI^ZKW*?g54gdfvFaQ7_00000000000001_fpXmg0B~t +=FJEbHbY*gGVQepUV{<Qabz*j9a&u{KZZ2?nP)h*<6ay3h000O8^Hj4?sv&>0P8a|HCtLskBLDyZ000 +0000000q=A#{0|0Poa4%nJZggdGZeeUMc4Kodc4cyNX>V?0Z*FvQZ)`4bc~DCM0u%!j000080P|F{P) +RrXd^`pK0JIVS02crN00000000000HlE;1q1+aX>c!Jc4cm4Z*nhRUukY>bYEXCaCuNm0Rj{Q6aWAK2 +mtd`vrx@q!jM@M001Cm000&M0000000000005+clM4g@aA|NaUv_0~WN&gWVQ_F{X>xNeaCuNm0Rj{Q +6aWAK2mtd`vrzK(z<jS0000w0000^Q0000000000005+cARq()aA|NaUv_0~WN&gWV{dMBWq5RKX<{- +iaCuNm0Rj{Q6aWAK2mtd`vru#%j1Gw>003;N000#L0000000000005+c2Q&l#aA|NaUv_0~WN&gWWNC +ABa&Inhc~DCM0u%!j000080P|F{P+lz(VS+mV00TGy02lxO00000000000HlG#TLb`bX>c!Jc4cm4Z* +nhbaA9O*a%FRKE^v8JO928D0~7!N00;o{RI^Y94<p?3`v3s)D+B--00000000000001_fqRz(0B~t=F +JE?LZe(wAFK~HqVRCb6Zf7oVc~DCM0u%!j000080P|F{P$7G~3eO1u0Q4pR02crN00000000000HlGW +lLY{9X>c!Jc4cm4Z*nhkWpr|RX>MmOaCuNm0Rj{Q6aWAK2mtd`vrrjTWkHT0000_=000sI000000000 +0005+csGS7>aA|NaUv_0~WN&gWb7^=kaCuNm0Rj{Q6aWAK2mtd`vruDNN1<{c003Ky000vJ00000000 +00005+cX1)agaA|NaUv_0~WN&gWbZ>2JE^v8JO928D0~7!N00;o{RI^aYmPd3F0RRBF0RR9N0000000 +0000001_feGIQ0B~t=FJE?LZe(wAFLq^aWN&gVba-@7O928D0~7!N00;o{RI^Z8_@eQw0000k0RR9b0 +0000000000001_fluHC0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD5X>MtBUtcb8c~DCM0u%!j00008 +0P|F{P)eJ5rvd^101pKK03ZMW00000000000HlFE;ROJ2X>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eUt?` +#E^v8JO928D0~7!N00;o{RI^Y=X&48Q1pojN6951s00000000000001_fqmlz0B~t=FJE?LZe(wAFJo +b2Xk}w>Zgg^QY%gJCVQ_S1axQRrP)h*<6ay3h000O8^Hj4?#$vopG64VpB?ABeApigX0000000000q= +8TA1pshqa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zE^v8JO928D0~7!N00;o{RI^ZpmShtW0RRBE0 +ssIa00000000000001_fxzko0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gPPZE#_9E^v8JO928D0~7!N +00;o{RI^Z){%>s%5C8y0Hvj-800000000000001_ffDQm0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gP +PZgg^QY;0w6E^v8JO928D0~7!N00;o{RI^a?(f%6x0{{T!2><{m00000000000001_foA*#0B~t=FJE +?LZe(wAFJob2Xk}w>Zgg^QY%gYMY-M+HVQ_F|axQRrP)h*<6ay3h000O8^Hj4?lqGFmuLS@A<_`b>CI +A2c0000000000q=BUX1^{qra4%nWWo~3|axY_HV`yb#Z*FvQZ)`7UWp#3Cb98BAb1rasP)h*<6ay3h0 +00O8^Hj4?x5&L(7zqFXvl{>aB>(^b0000000000q=A?Q1^{qra4%nWWo~3|axY_HV`yb#Z*FvQZ)`7f +WpZg@Y-xIBE^v8JO928D0~7!N00;o{RI^a0J-O2E000280ssIb00000000000001_f%6Xr0B~t=FJE? +LZe(wAFJob2Xk}w>Zgg^QY%h0mVQ_F|axQRrP)h*<6ay3h000O8^Hj4?8NawNHvj+tRsaA1D*ylh000 +0000000q=6z41^{qra4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1z?CX>MtBUtcb8c~DCM0u%!j00 +0080P|F{Q2fp>$q5Dk067o<04)Fj00000000000HlGU5e5KoX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV +_{=xWpgiPX>4U*V_{=xWiD`eP)h*<6ay3h000O8^Hj4?sK-IyX8`~JSOWk6E&u=k0000000000q=EJq +1^{qra4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1!mbWNC9>V_{=xWiD`eP)h*<6ay3h000O8^Hj4 +??z>d9K>z>%KmY&$9{>OV0000000000q=Bg!1^{qra4%nWWo~3|axY_La&&2CX)j-2X>MtBUtcb8c~D +CM0u%!j000080P|F{P%j{@;hq2h0RI3003QGV00000000000HlE@8U_GxX>c!Jc4cm4Z*nhVWpZ?BW@ +#^9Uu|J&ZeL$6aCuNm0Rj{Q6aWAK2mtd`vrt8wHMCh(0szBR1OOfY0000000000005+c0viSZaA|NaU +v_0~WN&gWV`Xx5X=Z6JV_{=ua&#_mWo=MP0Rj{Q6aWAK2mtd`vrry6B6Xkv000;R000{R0000000000 +005+cmv9IGaA|NaUv_0~WN&gWV`Xx5X=Z6JV{dY0E^v8JO928D0~7!N00;o{RI^a<&ks}N0ssIP1^@s +b00000000000001_fpBsN0B~t=FJE?LZe(wAFJow7a%5$6FJE72ZfSI1UoLQYP)h*<6ay3h000O8^Hj +4?IlqJu?>PVf7J2{x9{>OV0000000000q=Auj2mo+ta4%nWWo~3|axY_OVRB?;bT49QXEkPWWpOTWc~ +DCM0u%!j000080P|F{P|N3MW;_D`0Nn-v03iSX00000000000HlGvuLuBeX>c!Jc4cm4Z*nhVXkl_>W +ppoMX=gQXa&KZ~axQRrP)h*<6ay3h000O8^Hj4?;8`d=JqZ8+!z2IzCjbBd0000000000q=7iI2mo+t +a4%nWWo~3|axY_OVRB?;bT4CQVRB??b98cPVs&(BZ*DGdc~DCM0u%!j000080P|F{P>ES2h;jq~0Lu; +l04V?f00000000000HlGsya)hrX>c!Jc4cm4Z*nhVXkl_>WppoNXkl`5Wprn9Z*_2Ra&KZ~axQRrP)h +*<6ay3h000O8^Hj4?;Fn=qzXt#S_7eaABme*a0000000000q=9q62mo+ta4%nWWo~3|axY_OVRB?;bT +4CQVRCb2bZ~NSVr6nJaCuNm0Rj{Q6aWAK2mtd`vrt_7H%O!f000IK001cf0000000000005+cbjb(+a +A|NaUv_0~WN&gWV`yP=WMy<OV{c?>ZfA3JVRU6}VPj}%Ze=cTc~DCM0u%!j000080P|F{P<)2vWk~`6 +0B!^T0384T00000000000HlFm&j<i;X>c!Jc4cm4Z*nhVXkl_>WppoNZ*6d4bS`jtP)h*<6ay3h000O +8^Hj4?y+WEXXafKMKL-E+A^-pY0000000000q=Dnn2mo+ta4%nWWo~3|axY_OVRB?;bT4CYIW#$Na&K +Z~axQRrP)h*<6ay3h000O8^Hj4?L<FqKzybgOeFgvk8~^|S0000000000q=Ado2mo+ta4%nWWo~3|ax +Y_OVRB?;bT4IYb!~GlaCuNm0Rj{Q6aWAK2mtd`vrq(x1wAzd003?e001BW0000000000005+ch1duHa +A|NaUv_0~WN&gWV`yP=WMy<OWpiV2a&KZ~axQRrP)h*<6ay3h000O8^Hj4?!3toa6b1kQ4k-Wt8~^|S +0000000000q=ER|2mo+ta4%nWWo~3|axY_OVRB?;bT4IdV{>gTaCuNm0Rj{Q6aWAK2mtd`vrr&6#Ly} +Q005;9001HY0000000000005+cM&t+paA|NaUv_0~WN&gWV`yP=WMy<OWp!g}aBy;OVr6nJaCuNm0Rj +{Q6aWAK2mtd`vrzOw19@Q>008PV001BW0000000000005+cu;~Z@aA|NaUv_0~WN&gWV`yP=WMy<OWp +!g~a%OU6aV~IqP)h*<6ay3h000O8^Hj4?CIy%HI0FCx)CK?mA^-pY0000000000q=8QY2>@_ua4%nWW +o~3|axY_OVRB?;bT4IfV{3A7a&KZ~axQRrP)h*<6ay3h000O8^Hj4?%-c!TGdchOg?j)1AOHXW00000 +00000q=Cl;2>@_ua4%nWWo~3|axY_OVRB?;bT4IfV{~_Ba%FKYaCuNm0Rj{Q6aWAK2mtd`vrwQxjTkr +s007el001HY0000000000005+cI6w&iaA|NaUv_0~WN&gWV`yP=WMy<OWp!h8cW`oVVr6nJaCuNm0Rj +{Q6aWAK2mtd`vrrjD($`}r008Sy001EX0000000000005+cutNy|aA|NaUv_0~WN&gWV`yP=WMy<OXJ +RrlF*0UyWpOTWc~DCM0u%!j000080P|F{P=2fak2V7U0NMrs03!eZ00000000000HlFZYY6~wX>c!Jc +4cm4Z*nhVXkl_>WppoRVlp!^GH`NlVr6nJaCuNm0Rj{Q6aWAK2mtd`vrr8w)3TWo000g)001KZ00000 +00000005+c$!-Y%aA|NaUv_0~WN&gWV`yP=WMy<OXk}t@Wp{9LZ(?O~E^v8JO928D0~7!N00;o{RI^a +R8aZJVFaQ9tWB>pj00000000000001_fun&50B~t=FJE?LZe(wAFJow7a%5$6FKTIXW^!e5E^v8JO92 +8D0~7!N00;o{RI^Y9c_nI26953aOaK5K00000000000001_f%LHn0B~t=FJE?LZe(wAFJow7a%5$6FK +TdOZghAqaCuNm0Rj{Q6aWAK2mtd`vrzD8$;u!L001X4001cf0000000000005+ceZ>g?aA|NaUv_0~W +N&gWV`yP=WMy<OY+-I^Vs&h1VRC6<Zf$R5Wo#~Rc~DCM0u%!j000080P|F{P{{FCn*s~~031dD04M+e +00000000000HlHB&<Ox=X>c!Jc4cm4Z*nhVXkl_>WppoWVQyz*d2(rNY-wX{Z)9a`E^v8JO928D0~7! +N00;o{RI^b2yRRu~2><|)F#rH100000000000001_fh^q#0B~t=FJE?LZe(wAFJow7a%5$6FKl6MXJ> +L{WovD3WMynFaCuNm0Rj{Q6aWAK2mtd`vrvy_tr)!t002=e001Tc0000000000005+c+2#oVaA|NaUv +_0~WN&gWV`yP=WMy<OY+-I^Xk}t@Wp{0FWMynFaCuNm0Rj{Q6aWAK2mtd`vrxmqRe;qB001yC001cf0 +000000000005+c+VBYgaA|NaUv_0~WN&gWV`yP=WMy<OY+-I^XmxI9VRC6<Zf$R5Wo#~Rc~DCM0u%!j +000080P|F{P$Cb~Kk^Cy02(X+03-ka00000000000HlHT`w0MWX>c!Jc4cm4Z*nhVXkl_>WppoWVQy! +1Xklq>Z)9a`E^v8JO928D0~7!N00;o{RI^aEGQ(uZ3IG6JD*yl|00000000000001_fhq?I0B~t=FJE +?LZe(wAFJow7a%5$6FKl6MXLNOPYiV<6ZEs{{Y%XwlP)h*<6ay3h000O8^Hj4?<m~XImj(a;`V;^FBL +DyZ0000000000q=7dQ3IK3va4%nWWo~3|axY_OVRB?;bT4dSbZKreaB^>AWpXZXc~DCM0u%!j000080 +P|F{P&RcKP2B_l096eD044wc00000000000HlEr843V!X>c!Jc4cm4Z*nhVXkl_>WppoXVq<7wa&u*L +aB^>AWpXZXc~DCM0u%!j000080P|F{P_5GusB!}U0Ne)v044wc00000000000HlF19tr?(X>c!Jc4cm +4Z*nhVXkl_>WppoXVq<e>a&L8TaB^>AWpXZXc~DCM0u%!j000080P|F{P-*tz59JI10EuG&0384T000 +00000000HlHDAqoI+X>c!Jc4cm4Z*nhVXkl_>WppoXVq<f2Z7y(mP)h*<6ay3h000O8^Hj4?9(C^?p9 +cT{85RHlCIA2c0000000000q=5!63IK3va4%nWWo~3|axY_OVRB?;bT4yaV`yP=b7gdJa&KZ~axQRrP +)h*<6ay3h000O8^Hj4?ivCZag#-Wq+6@2zCIA2c0000000000q=D%+3IK3va4%nWWo~3|axY_OVRB?; +bT4yaV{>P6Z*_2Ra&KZ~axQRrP)h*<6ay3h000O8^Hj4?){$p2AO!#bz77BYApigX0000000000q=B+ +K3IK3va4%nWWo~3|axY_OVRB?;bT4yiX>)LLZ(?O~E^v8JO928D0~7!N00;o{RI^ZZfJZ%W4FCYeFaQ +8300000000000001_fe}Fp0B~t=FJE?LZe(wAFJow7a%5$6FLiEdc4cyNVQge&bY)|7Z*nehc~DCM0u +%!j000080P|F{Q1!pOJw*fn0L}^k03iSX00000000000HlG(P6_~UX>c!Jc4cm4Z*nhVXkl_>Wppofb +Y?hka&KZ~axQRrP)h*<6ay3h000O8^Hj4?N5_!Yxc~qF@&Et;9smFU0000000000q=8FQ3IK3va4%nW +Wo~3|axY_OVRB?;bT4*ga&u{KZZ2?nP)h*<6ay3h000O8^Hj4?lLpr^0{{R30RR91BLDyZ000000000 +0q=7(G3IK3va4%nWWo~3|axY_OVRB?;bT4CUX)j-2X>MtBUtcb8c~DCM0u%!j000080P|F{Q1>RZpP& +Q)0M-fs03`qb00000000000HlG0R0;raX>c!Jc4cm4Z*nhVXkl_>WppoNY-ulJXkl_>Wprg@bS`jtP) +h*<6ay3h000O8^Hj4?1D+(%vj6}9?*IS*AOHXW0000000000q=9Ey3IK3va4%nWWo~3|axY_VY;SU5Z +DB88UukY>bYEXCaCuNm0Rj{Q6aWAK2mtd`vrs-2r(cT$007(x000~S0000000000005+cSXv4IaA|Na +Uv_0~WN&gWV{dG4a$#*@FJW$TX)bViP)h*<6ay3h000O8^Hj4?Bk*i<X$t@V-Y5V7BLDyZ000000000 +0q=6k?3IK3va4%nWWo~3|axY_VY;SU5ZDB8AZgXjLZ+B^KGcqo4c~DCM0u%!j000080P|F{P#bSWa)S +Z@0DA`j03rYY00000000000HlG(X$k;vX>c!Jc4cm4Z*nhVZ)|UJVQpbAX>MtBX<=+>b7d}Yc~DCM0u +%!j000080P|F{PzW0g5l{sH02~zn0384T00000000000HlG6YzhEyX>c!Jc4cm4Z*nhVZ)|UJVQpbAc +WG`jGA?j=P)h*<6ay3h000O8^Hj4?qA1qp?gan<CK&(#9{>OV0000000000q=6N33IK3va4%nWWo~3| +axY_VY;SU5ZDB8WX>N37a&0bfc~DCM0u%!j000080P|F{P|3~9zg+<U07U`-03QGV00000000000HlF +HcnSb;X>c!Jc4cm4Z*nhWX>)XJX<{#5UukY>bYEXCaCuNm0Rj{Q6aWAK2mtd`vruN*(&;ZN006w9001 +2T0000000000005+c+Ib29aA|NaUv_0~WN&gWWNCABY-wUIV{dJ6VRSBVc~DCM0u%!j000080P|F{P; +VlMEch<~0A<Gj03QGV00000000000HlFLr3wIWX>c!Jc4cm4Z*nhWX>)XJX<{#AVRT_)VRL0JaCuNm0 +Rj{Q6aWAK2mtd`vrwO>F3d9(002r-000~S0000000000005+cdDRL4aA|NaUv_0~WN&gWWNCABY-wUI +X>Md?crI{xP)h*<6ay3h000O8^Hj4?RZ%J}b29({gv$T`9{>OV0000000000q=Dw@3IK3va4%nWWo~3 +|axY|Qb98KJVlQlOV_|e}a&s<lc~DCM0u%!j000080P|F{P<W;_XKWAv0NXhL03QGV00000000000Hl +GI9t!|)X>c!Jc4cm4Z*nhWX>)XJX<{#JVQy(=Wpi{caCuNm0Rj{Q6aWAK2mtd`vrx9Th-L!@001Kq00 +15U0000000000005+cKQ9XaaA|NaUv_0~WN&gWWNCABY-wUIZDDe2WpZ;aaCuNm0Rj{Q6aWAK2mtd`v +rv>c*aiqC001hT0018V0000000000005+cel-gKaA|NaUv_0~WN&gWWNCABY-wUIZDn*}WMOn+E^v8J +O928D0~7!N00;o{RI^Zy-GmaT3jhEPDgXc=00000000000001_fx}u00B~t=FJE?LZe(wAFJx(RbZlv +2FLGsbZ*_8GWpgfYc~DCM0u%!j000080P|F{P=Rqn`&<+N0A@k}03HAU00000000000HlGbW(xptX>c +!Jc4cm4Z*nhWX>)XJX<{#PV{&P5baO6nc~DCM0u%!j000080P|F{P_Tg30++b}004Rc02=@R0000000 +0000HlFIdkX+?X>c!Jc4cm4Z*nhWX>)XJX<{#QGcqn^cx6ya0Rj{Q6aWAK2mtd`vru^<bMBJK0001<0 +RS5S0000000000005+c5j6||aA|NaUv_0~WN&gWWNCABY-wUIbT%|DWq4&!O928D0~7!N00;o{RI^Z0 +1;r?5KL7y5=>Py500000000000001_f!zKK0B~t=FJE?LZe(wAFJx(RbZlv2FLiWjY%XwlP)h*<6ay3 +h000O8^Hj4?_Gl<9P8k3IUt0hG9smFU0000000000q=9@s4FGUya4%nWWo~3|axY|Qb98KJVlQ@Oa&u +{KZZ2?nP)h*<6ay3h000O8^Hj4?92gG9H?RNz0AK+C8vp<R0000000000q=5!l4FGUya4%nWWo~3|ax +Y|Qb98KJVlQ_yGA?C!Wl&220u%!j000080P|F{Q2QFP{Aa)b004#o02=@R00000000000HlF-2o3;nX +>c!Jc4cm4Z*nhWX>)XJX<{#THZ(3}cx6ya0Rj{Q6aWAK2mtd`vrv9lp46Ep000D@000~S0000000000 +005+c7Re3(aA|NaUv_0~WN&gWWNCABY-wUIcW7m0Y%XwlP)h*<6ay3h000O8^Hj4?BkyPY!vFvP5&-} +JDF6Tf0000000000q=D)04ghdza4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mUtei%X>?y-E^v8JO92 +8D0~7!N00;o{RI^a8iZ5l(0RRBY0{{Re00000000000001_f%EVV0B~t=FJE?LZe(wAFJx(RbZlv2FJ +EF|V{344a&#|kX>(&PaCuNm0Rj{Q6aWAK2mtd`vryt<J<vxS001v!001Wd0000000000005+c1oI96a +A|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4ygb#!TLE^v8JO928D0~7!N00;o{RI^ZT767gG0RR9w +3IG5r00000000000001_fshXm0B~t=FJE?LZe(wAFJx(RbZlv2FJEF|V{344a&#|qd2?fLZf0p`E@Nh +AP)h*<6ay3h000O8^Hj4?{(0-8sU83T=4b!_DgXcg0000000000q=C;74*+m!a4%nWWo~3|axY|Qb98 +KJVlQ7}VPk7>Z*p`mb9r-PZ*FF3XD)DgP)h*<6ay3h000O8^Hj4?L_!}!Vp#wH)M)_#C;$Ke0000000 +000q=CRN4*+m!a4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mbYXI4X>4UKaCuNm0Rj{Q6aWAK2mtd`v +rsau9Nk3%004>v001BW0000000000005+cXo?R2aA|NaUv_0~WN&gWXmo9CHEd~OFJE72ZfSI1UoLQY +P)h*<6ay3h000O8^Hj4?bsBC3B@_SvK|ufjApigX0000000000q=D;<4*+m!a4%nWWo~3|axZ9fZEQ7 +cX<{#5X=q_|Wq56DE^v8JO928D0~7!N00;o{RI^YPH}m9P9{>O-e*gd^00000000000001_flr|i0B~ +t=FJE?LZe(wAFKBdaY&C3YVlQ85Zg6#Ub98cLVQnsOc~DCM0u%!j000080P|F{P{c-R7QY+-03<5`03 +rYY00000000000HlHMzz+a$X>c!Jc4cm4Z*nhabZu-kY-wUIUvzJ4Wo~JDWpXZXc~DCM0u%!j000080 +P|F{P}+Hna}ovs0Iv@K03HAU00000000000HlHL-46h8X>c!Jc4cm4Z*nhabZu-kY-wUIUv+e8Y;!Jf +c~DCM0u%!j000080P|F{P}U2E?^8$s06s<m03iSX00000000000HlFD<PQLFX>c!Jc4cm4Z*nhabZu- +kY-wUIV{dMAbYX6Eb1rasP)h*<6ay3h000O8^Hj4?U)FBu4MYF{v(NzmBLDyZ0000000000q=C*X5CC +v#a4%nWWo~3|axZ9fZEQ7cX<{#EbZu-kaA9(DWpXZXc~DCM0u%!j000080P|F{P_P3HBDoL%0FFHX03 +rYY00000000000HlE&aS#A-X>c!Jc4cm4Z*nhabZu-kY-wUIb7gXAVQgu7WpXZXc~DCM0u%!j000080 +P|F{Q18>P52gSB03iVY044wc00000000000HlExf)D_3X>c!Jc4cm4Z*nhabZu-kY-wUIUvzS5WiMY} +X>MtBUtcb8c~DCM0u%!j000080P|F{P#GHMfu;cf0QCa^03!eZ00000000000HlHcf)D_3X>c!Jc4cm +4Z*nhabZu-kY-wUIUvzS5WiMZ1VRL0JaCuNm0Rj{Q6aWAK2mtd`vrr^eovEe)005c<001Na00000000 +00005+c=7bOcaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{DVRUk7WiD`eP)h*<6ay3h000O8^Hj4?OH +Xdj9RdIV?*;$>AOHXW0000000000q=C+c5CCv#a4%nWWo~3|axZ9fZEQ7cX<{#5baH8BFK~G-aCuNm0 +Rj{Q6aWAK2mtd`vrqs40006200000001Ze0000000000005+cDTxpOaA|NaUv_0~WN&gWXmo9CHEd~O +FJ@_MbY*gLFJE72ZfSI1UoLQYP)h*<6ay3h000O8^Hj4?fUpD*!T|sPmjeI*HUIzs0000000000q=9j +X5CCv#a4%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?XY;b5{Vr6t`V_|GzbaZlQVs&(7b1rasP)h*<6ay +3h000O8^Hj4?B7pnEl>h($9svLVBme*a0000000000q=AQv5CCv#a4%nWWo~3|axZ9fZEQ7cX<{#CX> +4?5a&s?YVRL0JaCuNm0Rj{Q6aWAK2mtd`vrzNEKNl7Q004mt001)p0000000000005+cUW^a`aA|NaU +v_0~WN&gWXmo9CHEd~OFJ@_MbY*gLFKKRSWn*+-ZDn*}Ut?%ta&u*LE^v8JO928D0~7!N00;o{RI^Z$ +(PW@(0{{R!4gdfo00000000000001_fyIvy0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!UZZgeh +ic~DCM0u%!j000080P|F{P#1NYD&+<M09+{m04x9i00000000000HlF)lMn!KX>c!Jc4cm4Z*nhabZu +-kY-wUIW@&76WpZ;bZ*X*JZ*F01bYW+6E^v8JO928D0~7!N00;o{RI^Y(!2wY6761T<W&i*w0000000 +0000001_fufoa0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!pYZfSIBdS!AhaCuNm0Rj{Q6aWAK2 +mtd`vru4i{}1&6006!O001fg0000000000005+c+p!P;aA|NaUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gL +FL!8ZbY*jJVPj=3aCuNm0Rj{Q6aWAK2mtd`vrwKnaav~q005@~001oj0000000000005+c7_<-oaA|N +aUv_0~WN&gWXmo9CHEd~OFLZKcWnpAtaCBvIb1z?CX>MtBUtcb8c~DCM0u%!j000080P|F{P*RK$DO3 +Ug0J8=F04o3h00000000000HlG+wGaSsX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFK1<Lb7 +*NUaCuNm0Rj{Q6aWAK2mtd`vrvF(sh30o008g?001Ze0000000000005+cXSfgmaA|NaUv_0~WN&gWX +mo9CHEd~OFLZKcWnpAtaCBvIb1!pYcrI{xP)h*<6ay3h000O8^Hj4?W!q~^Qw0D32o3-MEdT%j00000 +00000q=E6e5CCv#a4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bUtei%X>?y-E^v8JO928D0~7! +N00;o{RI^aT)uOES4gdi2H~;`C00000000000001_fseot0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2 +S@X>4R=a&s?YVRL0JaCuNm0Rj{Q6aWAK2mtd`vrte3r?LMB007-0001Ze0000000000005+c%+C-2aA +|NaUv_0~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1!6XZ7y(mP)h*<6ay3h000O8^Hj4?p?#O|GYS9z+ +%W(EDgXcg0000000000q=6CG5CCv#a4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWpr|7WiD`e +P)h*<6ay3h000O8^Hj4?8c*uCUkv~NDmMTCF8}}l0000000000q=Ag$5CCv#a4%nWWo~3|axZ9fZEQ7 +cX<{#Qa%E*=b!lv5WpZ;bWpr|7WnXM~ZEP-Zc~DCM0u%!j000080P|F{P_1U%2$==|08$nJ04x9i000 +00000000HlF9@DKoSX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bUtei%X>?y-E^v8JO928D0~ +7!N00;o{RI^YaE!sjC2LJ#x9RL6*00000000000001_fgAS_0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZW +o36^Y-?q5b1!0Hb7d}Yc~DCM0u%!j000080P|F{P-Tj5srLZ@0EGnr04D$d00000000000HlF<{ty6g +X>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bWN&RQaCuNm0Rj{Q6aWAK2mtd`vrxXp@-6BF0071 +j001cf0000000000005+cv;YwRaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWp`n0Yh`kCFJ*LcWo0gKc~D +CM0u%!j000080P|F{P?imxM`#8B0HqiJ04@Lk00000000000HlHC1rY#nX>c!Jc4cm4Z*nhabZu-kY- +wUIbaG{7cVTR6WpZ;bWpr|7WnXM~ZEP-Zc~DCM0u%!j000080P|F{P!nHm5Xb@m00jvE04e|g000000 +00000HlGL3=sfuX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bXJu}4XlX8Rc~DCM0u%!j00008 +0P|F{Pyk0<n==3a06G8w02}}S00000000000HlGb4-o)xX>c!Jc4cm4Z*nhbWNu+EUtei%X>?y-E^v8 +JO928D0~7!N00;o{RI^a?NYv>X0{{Ty3;+Nb00000000000001_fff)E0B~t=FJE?LZe(wAFKJ|MVJ~ +BEWMyM6aCuNm0Rj{Q6aWAK2mtd`vrv42mT->%008I!000^Q0000000000005+cXA=<saA|NaUv_0~WN +&gWX=H9;FJo_QaA9;VaCuNm0Rj{Q6aWAK2mtd`vrwWGC^`oV002ZT000;O0000000000005+cE))>}a +A|NaUv_0~WN&gWX=H9;FJo_VWiD`eP)h*<6ay3h000O8^Hj4?Uj>Whiy{C3@t^<z8~^|S0000000000 +q=9Q65dd&$a4%nWWo~3|axZCQZecHJWNu+(VRT_GaCuNm0Rj{Q6aWAK2mtd`vrxBV^s?px007kn0012 +T0000000000005+cFhUUkaA|NaUv_0~WN&gWX=H9;FKKRca$#;~WpgfYc~DCM0u%!j000080P|F{P)+ +w9`WFBI02KfL03ZMW00000000000HlFYMG*jSX>c!Jc4cm4Z*nhbWNu+EaA9L>VP|DuWMOn+E^v8JO9 +28D0~7!N00;o{RI^afQ6vjkmH+_g5d#1n00000000000001_fu=<f0B~t=FJE?LZe(wAFKJ|MVJ~%bb +2K(&VRT_GaCuNm0Rj{Q6aWAK2mtd`vrvsES6JWy003SD0018V0000000000005+cIouHdaA|NaUv_0~ +WN&gWZF6UEVPk7AUtei%X>?y-E^v8JO928D0~7!N00;o{RI^ZDEGxtm0000K0000V00000000000001 +_fmYrT0B~t=FJE?LZe(wAFKu&YaA9L>FJE?La&u{KZZ2?nP)h*<6ay3h000O8^Hj4?J3F1ztpNZ4IRp +RzApigX0000000000q=Bd25dd&$a4%nWWo~3|axZOjXK-O-YcFMZV`Xr3X>V?GE^v8JO928D0~7!N00 +;o{RI^ZSo@)>E1^@t(7XSbn00000000000001_fs^170B~t=FJE?LZe(wAFKu&YaA9L>FJ*XiE^v8JO +928D0~7!N00;o{RI^Y|(NhiP8~^|fkpKW600000000000001_fxqVw0B~t=FJE?LZe(wAFKu&YaA9L> +FJ@tEY+_+!Yc6nkP)h*<6ay3h000O8^Hj4?E<V2EhXDWp=mG!$A^-pY0000000000q=DiD5&&>%a4%n +WWo~3|axZXUV{2h&X>MmPUteKjZ*_EEUoLQYP)h*<6ay3h000O8^Hj4?Wg8Jh6afGLG6DbqApigX000 +0000000q=Bgh5&&>%a4%nWWo~3|axZXUV{2h&X>MmPUtei%X>?y-E^v8JO928D0~7!N00;o{RI^Y)qv +cvj0ssJV1ONaa00000000000001_f&2#&0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFV{dJ6VRSBVc~DCM0 +u%!j000080P|F{Q0iU$*Pa0Y0Okh(03-ka00000000000HlF~3K9TtX>c!Jc4cm4Z*nhiVPk7yXK8L{ +FJE(Xa&=>Lb#i5ME^v8JO928D0~7!N00;o{RI^aGybep@0ssK11pojb00000000000001_fny930B~t +=FJE?LZe(wAFK}UFYhh<;Zf7rFba`-TZf7oVc~DCM0u%!j000080P|F{Q0$2m)`JTG039U&03ZMW000 +00000000HlF}4-x=yX>c!Jc4cm4Z*nhiVPk7yXK8L{FKuCRYh`kCE^v8JO928D0~7!N00;o{RI^Y+mr +!&!2LJ#u6951u00000000000001_fkPV-0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rYWpQ<Ba%F90Zgg`la +CuNm0Rj{Q6aWAK2mtd`vrx3uow}zQ002^Y001KZ0000000000005+cy&@6-aA|NaUv_0~WN&gWaA9L> +VP|P>XD@SbWn*b(X=QSAE^v8JO928D0~7!N00;o{RI^aqv=#e#8UO&8TmS$a00000000000001_fu%h +X0B~t=FJE?LZe(wAFK}UFYhh<;Zf7raVP|tLaCuNm0Rj{Q6aWAK2mtd`vrsSlEuhl^005*00015U000 +0000000005+cSy&PPaA|NaUv_0~WN&gWaA9L>VP|P>XD@YhX>4;YaCuNm0Rj{Q6aWAK2mtd`vrxiTE9 +LeN004MA001BW0000000000005+cXj>8haA|NaUv_0~WN&gWaA9L>VP|P>XD@bTa&u{KZZ2?nP)h*<6 +ay3h000O8^Hj4?kr5YLRR910Q~&?~9smFU0000000000q=B4k5&&>%a4%nWWo~3|axZXYa5XVEFJE72 +ZfSI1UoLQYP)h*<6ay3h000O8^Hj4?9^{A_1PTBE_8<TNApigX0000000000q=7AL5&&>%a4%nWWo~3 +|axZXYa5XVEFJEbHUvP47V`X!5E^v8JO928D0~7!N00;o{RI^YZb27i{1ONaB4FCWe0000000000000 +1_fpB&b0B~t=FJE?LZe(wAFK}gWH8D3YVs&Y3WG--dP)h*<6ay3h000O8^Hj4?cCq(Si3I=vNf!VB8v +p<R0000000000q=A%s5&&>%a4%nWWo~3|axZXYa5XVEFJowBV{0yOc~DCM0u%!j000080P|F{Pz|wG( +252C00IyI03HAU00000000000HlFdff4|4X>c!Jc4cm4Z*nhiWpFhyH!ovvY;SUGZ)YxWc~DCM0u%!j +000080P|F{P|6ow3@rfw01N{F02}}S00000000000HlE&h!OyBX>c!Jc4cm4Z*nhiWpFhyH!ovvZE#_ +9E^v8JO928D0~7!N00;o{RI^Y!&$vd<0RRAL1ONaY00000000000001_frE(>0B~t=FJE?LZe(wAFK} +gWH8D3YWNC7AZ*OdKE^v8JO928D0~7!N00;o{RI^Z~3PorT2mk<?7XSbr00000000000001_fsTt30B +~t=FJE?LZe(wAFK}gWH8D3YWo~w2b!lv5E^v8JO928D0~7!N00;o{RI^Z*yXoH10{{S@2><{Z000000 +00000001_f!dQ20B~t=FJE?LZe(wAFK}gWH8D3YZDn*}E^v8JO928D0~7!N00;o{RI^a^bHjuj3;+Nh +DgXc;00000000000001_f#a7F0B~t=FJE?LZe(wAFK}gWH8D3YcXDBHaAk6HE^v8JO928D0~7!N00;o +{RI^Y$<8uMTa{vJKrU3vY00000000000001_fjguU0B~t=FJE?LZe(wAFK}yTUvg!0Z*_8GWpgiIUuk +Y>bYEXCaCuNm0Rj{Q6aWAK2mtd`vru6q1J+9c001%q001Wd0000000000005+cLKqVOaA|NaUv_0~WN +&gWaBF8@a%FRGb#h~6b1!gtGcjXtZE#_9E^v8JO928D0~7!N00;o{RI^Y*X%kCq1^@v05&!@o000000 +00000001_fzlZh0B~t=FJE?LZe(wAFK}{iXL4n8b1z?CX>MtBUtcb8c~DCM0u%!j000080P|F{P?yZL +xTXXE0456n02=@R00000000000HlF@AQJ#^X>c!Jc4cm4Z*nhia&KpHWpi^cVqtPFaCuNm0Rj{Q6aWA +K2mtd`vru^8xq<Nl003MC0018V0000000000005+cTO|_!aA|NaUv_0~WN&gWaB^>Fa%FRKFJo_YZgg +dGE^v8JO928D0~7!N00;o{RI^Yo;N7|k0{{SI1poja00000000000001_fr%&+0B~t=FJE?LZe(wAFK +}{iXL4n8b1!pnX>M+1axQRrP)h*<6ay3h000O8^Hj4?KQ&l9JO%&&@DBh0AOHXW0000000000q=C>Y6 +98~&a4%nWWo~3|axZdaadl;LbaO9XUukY>bYEXCaCuNm0Rj{Q6aWAK2mtd`vrs<-#F7O8006lG001KZ +0000000000005+cN-`4waA|NaUv_0~WN&gWa%FLKWpi|MFJE7FWpZ<AZ*E^-E^v8JO928D0~7!N00;o +{RI^ZssX4n80ssI=1ONah00000000000001_fsiv30B~t=FJE?LZe(wAFLGsZb!BsOb1z?MZggdGZee +U+b#!TLb1rasP)h*<6ay3h000O8^Hj4?oH;H;j1&L>EK~phAOHXW0000000000q=D%*698~&a4%nWWo +~3|axZdaadl;LbaO9ZWMOc0WpZ;aaCuNm0Rj{Q6aWAK2mtd`vrx7Yv1xDy003Ya000{R00000000000 +05+cvq}>HaA|NaUv_0~WN&gWa%FLKWpi|MFJW+LE^v8JO928D0~7!N00;o{RI^aKw23Qo3jhG$CjbB( +00000000000001_fm~4&0B~t=FJE?LZe(wAFLGsZb!BsOb1z|abZ9Pcc~DCM0u%!j000080P|F{P=d0 +e&n^J~0MP*e0384T00000000000HlElT@wIsX>c!Jc4cm4Z*nhkWpQ<7b98erV`Xx5b1rasP)h*<6ay +3h000O8^Hj4?uV#XD<N^Qy{RaR59smFU0000000000q=9l?698~&a4%nWWo~3|axZdaadl;LbaO9bZ* +6d4bS`jtP)h*<6ay3h000O8^Hj4?y(bqsz!Lxf{zm`+9{>OV0000000000q=AxQ698~&a4%nWWo~3|a +xZdaadl;LbaO9bZ*Oa9WpgfYc~DCM0u%!j000080P|F{P`S8laXSP60DTMq03rYY00000000000HlGB +brS$^X>c!Jc4cm4Z*nhkWpQ<7b98erWq4y{aCB*JZgVbhc~DCM0u%!j000080P|F{P^~>j?@9y!0QwC +802}}S00000000000HlEmdJ_O}X>c!Jc4cm4Z*nhkWpQ<7b98erXk~10E^v8JO928D0~7!N00;o{RI^ +YUN^{|P0RRB?0ssIV00000000000001_fsTF?0B~t=FJE?LZe(wAFLGsZb!BsOb1!IbZ)<ZdaCuNm0R +j{Q6aWAK2mtd`vryka&+9!V008EN0015U0000000000005+cLVyzhaA|NaUv_0~WN&gWa%FLKWpi|MF +KusRWo&aUaCuNm0Rj{Q6aWAK2mtd`vrrN|-hpcY006fF001BW0000000000005+cyQUKWaA|NaUv_0~ +WN&gWa%FLKWpi|MFK}UFYhh<)b1rasP)h*<6ay3h000O8^Hj4?Lr&z|NFV?JQE~tPAOHXW000000000 +0q=96p698~&a4%nWWo~3|axZdaadl;LbaO9rWpi_BZ*FrgaCuNm0Rj{Q6aWAK2mtd`vrs+D-+GM(003 +MN001Na0000000000005+c>c|rSaA|NaUv_0~WN&gWa%FLKWpi|MFLQKZbaiuIV{c?-b1rasP)h*<6a +y3h000O8^Hj4?2#vMhd;|ahy$b*UA^-pY0000000000q=C85698~&a4%nWWo~3|axZdaadl;LbaO9rb +aHiLbairNb1rasP)h*<6ay3h000O8^Hj4?@2mZqTO|Mh;B^219RL6T0000000000q=9wR698~&a4%nW +Wo~3|axZdaadl;LbaO9tbZKmJE^v8JO928D0~7!N00;o{RI^ZC>_NNN0000P0ssIa00000000000001 +_feZQ*0B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIUtei%X>?y-E^v8JO928D0~7!N00;o{RI^a^L%E==1^@ +st6951s00000000000001_fg<}80B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIaB^>UX=G(`b1rasP)h*<6a +y3h000O8^Hj4?Ps)sTYykiOMg#x=BLDyZ0000000000q=63t6aa8(a4%nWWo~3|axZdab8l>RWo&6;F +LGsYZ*p{Ha&s<lc~DCM0u%!j000080P|F{P`LfY$!HG%0FgKV03!eZ00000000000HlGu0~7#oX>c!J +c4cm4Z*nhkWpi(Ac4cg7VlQ%Kb8l>RWpZ;aaCuNm0Rj{Q6aWAK2mtd`vrq_C>99}&007_z001EX0000 +000000005+cWfK$taA|NaUv_0~WN&gWa%FRGY<6XAX<{#PbaHiLbaO6nc~DCM0u%!j000080P|F{P{x +`^z32b{01pBH02}}S00000000000HlHR6%+t)X>c!Jc4cm4Z*nhmZ*6QZUtei%X>?y-E^v8JO928D0~ +7!N00;o{RI^aByJ$~}9RL9PhyVZ^00000000000001_ffg4O0B~t=FJE?LZe(wAFLZBhY%gSGV{c?-a +xQRrP)h*<6ay3h000O8^Hj4?7Spl!3<&@Lz#jkr8vp<R0000000000q=DHq6aa8(a4%nWWo~3|axZjm +ZEP=PZewp`WpXZXc~DCM0u%!j000080P|F{P@-3g)s+AM0D1uc02=@R00000000000HlE)J`@0OX>c! +Jc4cm4Z*nhmZ*6QZZ*pX1a%E&LaCuNm0Rj{Q6aWAK2mtd`vrvx+0S@>8003$N000&M0000000000005 ++c>^>9#aA|NaUv_0~WN&gWbZ>2JFLZh?aCuNm0Rj{Q6aWAK2mtd`vrt%!w|g=K004Um0018V0000000 +000005+c7(f&NaA|NaUv_0~WN&gWb#iQMX<{=kUtei%X>?y-E^v8JO928D0~7!N00;o{RI^aTxH~)i3 +;+NqDgXc@00000000000001_frmsC0B~t=FJE?LZe(wAFLiQkY-wUMFJEJCY;0v?bZKvHb1rasP)h*< +6ay3h000O8^Hj4?URZ%=h!Fq)$~FK1ApigX0000000000q=Cdy6aa8(a4%nWWo~3|axZmqY;0*_GcRL +rZf<2`bZKvHE^v8JO928D0~7!N00;o{RI^b2l$uh$CIA4TjsO5900000000000001_fs11l0B~t=FJE +?LZe(wAFLiQkY-wUMFJo_RZe?S1X>V?DZ*OcaaCuNm0Rj{Q6aWAK2mtd`vrs>+4GM4w007S!001EX00 +00000000005+cjEWQhaA|NaUv_0~WN&gWb#iQMX<{=kWq4y{aCB*JZgVbhc~DCM0u%!j000080P|F{P +|?6QvHuAG0BIor0384T00000000000HlFClN11OX>c!Jc4cm4Z*nhna%^mAVlyvhX=Q9=b1rasP)h*< +6ay3h000O8^Hj4?FX~+;eFFdhhzS4y9{>OV0000000000q=9vv6aa8(a4%nWWo~3|axZmqY;0*_GcRU +oY-Mn7b963nc~DCM0u%!j000080P|F{P$p*lTcHyG0G&br03rYY00000000000HlF0p%egcX>c!Jc4c +m4Z*nhna%^mAVlyvrZ*OdEVQyh(WpXZXc~DCM0u%!j000080P|F{P)i&`DzgUw0D>0)03HAU0000000 +0000HlEswG;qwX>c!Jc4cm4Z*nhna%^mAVlyvtWpQ<7b963nc~DCM0u%!j000080P|F{P))n>948$B0 +J&@c03QGV00000000000HlHcyc7U%X>c!Jc4cm4Z*nhna%^mAVlyvtWpi+EZgXWWaCuNm0Rj{Q6aWAK +2mtd`vrqs40006200000001Wd0000000000005+cW7-q|aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~ +OUtei%X>?y-E^v8JO928D0~7!N00;o{RI^YjgXtBu0RRBK0{{Rq00000000000001_fvVaR0B~t=FJE +?LZe(wAFLiQkY-wUMFJo_RbaH88FJEDBaAj_1X>Mg-Wo~w9a&K-faCuNm0Rj{Q6aWAK2mtd`vrynxtU +G25000^*001Ze0000000000005+cuG|y=aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OVQ_F|Zf9w3W +iD`eP)h*<6ay3h000O8^Hj4?1B<fFp#=Z{Ko9@`CjbBd0000000000q=8!L6aa8(a4%nWWo~3|axZmq +Y;0*_GcRLrZgg^KVlQrVY;ACFZ)`4bc~DCM0u%!j000080P|F{P!E(*5(pFk060JZ04M+e000000000 +00HlFH?-T%VX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#Md2euKZgX>NE^v8JO928D0~7!N00;o{RI^ +Z9{`_ogBLDysegFV200000000000001_fsO+e0B~t=FJE?LZe(wAFLiQkY-wUMFJo_RbaH88FLPyMb# +i5Na$#<BaBp&SE^v8JO928D0~7!N00;o{RI^ZB=2jy{2mk<l8vp<#00000000000001_fkr140B~t=F +JE?LZe(wAFLiQkY-wUMFJo_RbaH88FLQ5WYjZAec~DCM0u%!j000080P|F{Pyhe`00IC20000005|{u +00000000000HlG=FBJfAX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mUtei +%X>?y-E^v8JO928D0~7!N00;o{RI^ZB7wwF}4*&r6K>z?a00000000000001_fhI5&0B~t=FJE?LZe( +wAFLiQkY-wUMFJo_RbaH88FJE(IV|8+6baG*Cb8v5RbT49QZe(e0XLBxac~DCM0u%!j000080P|F{P} +Lm`U0x3W0JJUu0672v00000000000HlFEKotORX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a +%FUKVQzD9Z*p`mY;Sj8Y-M(3Y%XwlP)h*<6ay3h000O8^Hj4?tT~LVPyhe`YybcNC;$Ke0000000000 +q=E8J6##H)a4%nWWo~3|axZmqY;0*_GcRyqV{2h&WpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mtd`vrw{ +C7Lyep000<&001KZ0000000000005+ch)@*(aA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FLP;lE^v +8JO928D0~7!N00;o{RI^Y300002000000000o00000000000001_f!=Qw0B~t=FJE?LZe(wAFLiQkY- +wUMFK}UFYhh<)b1!0HV{344a&&VqUtei%X>?y-E^v8JO928D0~7!N00;o{RI^aSvdJ4s0ssJt1pojt0 +0000000000001_fiQ3t0B~t=FJE?LZe(wAFLiQkY-wUMFK}UFYhh<)b1!0HV{344a&&VqZDDI=W@&6? +E^v8JO928D0~7!N00;o{RI^ZfN#I;Q0RRB70ssIz00000000000001_fyr_e0B~t=FJE?LZe(wAFLiQ +kY-wUMFK}UFYhh<)b1!pqY+r3*bYo~=Xm4|LZeeX@FJE72ZfSI1UoLQYP)h*<6ay3h000O8^Hj4?!+g +}>y9fXPKo$T1LI3~&0000000000q=8^`6##H)a4%nWWo~3|axZmqY;0*_GcRyqV{2h&Wpgicb8KI2VR +U0?UubW0bZ%j7WiMZ8ZE$R5ZDnqBVRUJ4ZZ2?nP)h*<6ay3h000O8^Hj4?lZrq7umJ!74g>%IBme*a0 +000000000q=9>V6##H)a4%nWWo~3|axZmqY;0*_GcR>?X>2cFUukY>bYEXCaCuNm0Rj{Q6aWAK2mtd` +vrto=I<+eY0012l001Tc0000000000005+cZGRO2aA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFJo_RZe?S +1X>V>WaCuNm0Rj{Q6aWAK2mtd`vrzObdocU}008j;001EX0000000000005+c+=dkZaA|NaUv_0~WN& +gWb#iQMX<{=kb#!TLFL8Bcb!9Gac~DCM0u%!j000080P|F{P`w5&vq%L10Ot+>03!eZ00000000000H +lEzh!p^EX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlaa%FLKWpi{caCuNm0Rj{Q6aWAK2mtd`vrzWquk$Yi0 +00dN001Na0000000000005+cpp6v(aA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLGsbaBpsNWiD`eP)h*< +6ay3h000O8^Hj4?l{{D>FcJU&T08&%ApigX0000000000q=6BV6##H)a4%nWWo~3|axZmqY;0*_GcR> +?X>2cYWpr|RE^v8JO928D0~7!N00;o{RI^ZFJ?kr96952LHvj-200000000000001_fq<kH0B~t=FJE +?LZe(wAFLiQkY-wUMFLiWjY%g<jY+o*Lc~DCM0u%!j000080P|F{Q0USG4ulH;0FNdB03!eZ0000000 +0000HlE(xD^0!X>c!Jc4cm4Z*nhna%^mAVlyvwbZKlabZKp6Z*_DoaCuNm0Rj{Q6aWAK2mtd`vrswo= +st)N005gd0018V0000000000005+c;=>gHaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLiQkE^v8JO928D +0~7!N00;o{RI^ZXV}bC&2LJ#b6#xJr00000000000001_fv46L0B~t=FJE?LZe(wAFLiQkY-wUMFLiW +jY%h0VX>=}dc~DCM0u%!j000080P|F{P<YTEaWV@408=Rd03-ka00000000000HlGY-W33FX>c!Jc4c +m4Z*nhpWnyJ+V{c?>ZfA2ZUtei%X>?y-E^v8JO928D0~7!N00;o{RI^aWtq6++1^@sPBLDy*0000000 +0000001_fg0)+0B~t=FJE?LZe(wAFLz~PWo~0{WNB_^b1!URVr6V|E^v8JO928D0~7!N00;o{RI^Y}e +=#3K0ssIR1pojf00000000000001_fnV?y0B~t=FJE?LZe(wAFLz~PWo~0{WNB_^b1!XcY++($Y;!Jf +c~DCM0u%!j000080P|F{P-i%Br?~|H0HYZI03iSX00000000000HlHC@)ZDZX>c!Jc4cm4Z*nhpWnyJ ++V{c?>ZfA2ZbY*jNb1rasP)h*<6ay3h000O8^Hj4?+XnpBr33%~(+~gvDgXcg0000000000q=DV|6## +H)a4%nWWo~3|axZsfVr6b)Z)9n1XLB!jUv+b3a$jU+W@&C^WG--dP)h{{00000ashGyrgH!Q%Ka4p00 +0 +""" + + +if __name__ == "__main__": + main() diff --git a/ippisite/ippidb/__init__.py b/ippisite/ippidb/__init__.py index 97a23c61955f8cfbf3bd596b47b1399bf56e1fd8..dff61f605675a68647da71213dc19e685c56cb94 100644 --- a/ippisite/ippidb/__init__.py +++ b/ippisite/ippidb/__init__.py @@ -9,6 +9,7 @@ This is the main ippidb module forms gx models + tasks tests urls utils diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py index 8b8d64f5622ce12c4237a5c609721112ee6bb5be..37aa4872e5556c41107d9e947257d749663843c2 100644 --- a/ippisite/ippidb/forms.py +++ b/ippisite/ippidb/forms.py @@ -172,20 +172,6 @@ class IdForm(forms.Form): .first() ) - # def get_or_create(self): - # b = models.Bibliography.objects \ - # .filter(id_source=self.cleaned_data["id_source"]).filter(source=self.cleaned_data["source"]) \ - # .annotate(used=Count("refcompoundbiblio")) \ - # .filter(used=0) \ - # .first() - # if b is not None: - # return b, False - # else: - # return models.Bibliography.objects.create( - # source=self.cleaned_data["source"], - # id_source=self.cleaned_data["id_source"], - # ), True - """ Step 2 : BibliographyForm """ @@ -424,10 +410,6 @@ class ComplexCompositionBaseFormSet(forms.BaseFormSet): if form.cleaned_data.get("DELETE", False): continue complex_type_dict.add(form.cleaned_data.get("complex_type")) - if self.has_bound and self.has_partner and len(complex_type_dict) < 2: - self._non_form_errors.append( - _("You need at least one bound and one partner") - ) def __init__( self, @@ -482,6 +464,7 @@ class PpiModelForm(ModelForm): "data-olsontology": "mondo", "data-selectpath": "https://www.ebi.ac.uk/ols/", "olstype": "", + "class": "", } ), ) @@ -491,12 +474,6 @@ class PpiModelForm(ModelForm): required=False, ) - # other_diseases = forms.CharField( - # label=_("other_diseases_label"), - # help_text=_("other_diseases_help_text"), - # required=False, - # ) - class Meta: model = models.Ppi fields = ( @@ -506,9 +483,8 @@ class PpiModelForm(ModelForm): "family_name", "symmetry", "pockets_nb", # pockets_nb is Ppi.pockets_nb in the xlsx file of #33 - "selected_diseases", "ols_diseases", - # 'other_diseases', + "selected_diseases", ) widgets = { "id": forms.HiddenInput(), @@ -535,17 +511,6 @@ class PpiModelForm(ModelForm): self.fields["symmetry"].initial = symmetry.first() self.fields["symmetry"].widget = forms.HiddenInput() - pdb_id = initial.get("pdb_id", None) - if pdb_id is not None: - # FIXME move PFAM choice to relevant form ;) - pfams = ws.get_pdb_pfam_mapping(pdb_id) # noqa: F841 - # choices = self.fields["family_name"].choices - # for key, values in pfams.items(): - # text = "{} ({})".format(values["name"], key) - # choices.append((text, text)) - # self.fields["family_name"].choices = choices - # self.fields["family_name"].initial = choices[-1][0] - def full_clean(self): super().full_clean() if hasattr(self, "cleaned_data") and "family_name" in self.cleaned_data: @@ -573,13 +538,6 @@ class PpiModelForm(ModelForm): name=name, identifier=identifier ) self.instance.diseases.add(disease) - # for new_disease in self.cleaned_data['other_diseases'].split(','): - # new_disease = new_disease.strip() - # if len(new_disease) == 0: - # continue - # print(new_disease) - # disease, created = Disease.objects.get_or_create(name=new_disease) - # self.instance.diseases.add(disease) self.instance.family = models.PpiFamily.objects.get( id=self.cleaned_data["family"] ) @@ -593,7 +551,9 @@ TYPE_MOLECULE = (("smiles", "smiles"), ("iupac", "iupac"), ("sketch", "sketch")) class CompoundForm(forms.Form): compound_name = forms.CharField( - label=_("compound_name_label"), required=True, help_text=_(""), + label=_("compound_name_label"), + required=True, + help_text=_(""), ) ligand_id = forms.CharField( label=_("PDB Ligand ID"), @@ -604,7 +564,13 @@ class CompoundForm(forms.Form): label=_("molecule_smiles_label"), help_text=_(""), required=False, - widget=forms.Textarea(attrs={"class": "molecule-composition", "rows": "9"}), + widget=forms.Textarea( + attrs={ + "class": "molecule-composition", + "rows": "9", + "oninput": "showCanvas(this)", + } + ), ) molecule_iupac = forms.CharField( label=_("molecule_iupac_label"), @@ -620,7 +586,9 @@ class CompoundForm(forms.Form): def full_clean(self): super().full_clean() - if not self.is_bound: # Stop further processing. + if ( + not self.is_bound or self.cleaned_data.get("DELETE") is True + ): # Stop further processing. return smiles = None if ( @@ -839,7 +807,11 @@ class BaseInlineNestedFormSet(forms.BaseInlineFormSet): class CompoundActivityResultForm(ModelForm): compound_name = forms.ChoiceField(choices=(), required=True) activity_mol = forms.DecimalField( - label="Activity", required=True, max_digits=15, decimal_places=10, min_value=0, + label="Activity", + required=True, + max_digits=15, + decimal_places=10, + min_value=0, ) activity_unit = forms.CharField( label="Activity unit", @@ -872,6 +844,11 @@ class CompoundActivityResultForm(ModelForm): "activity": widgets.HiddenInput(), } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for f in self.fields.values(): + f.widget.attrs.update({"class": "col-3"}) + def has_changed(self): """ Test if the form has changed, we consider that it has not changed if it is not linked to an actual instance and @@ -1043,7 +1020,8 @@ CompoundActivityResultInlineFormset = inlineformset_factory( class TestActivityDescriptionForm(forms.ModelForm): test_name = CharFieldDataList( - data_class=models.TestActivityDescription, data_attr="test_name" + data_class=models.TestActivityDescription, + data_attr="test_name", ) cell_line_name = CharFieldDataList( @@ -1068,6 +1046,11 @@ class TestActivityDescriptionForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["test_type"].widget.attrs["onchange"] = "test_type_changed(this);" + self.fields["test_type"].widget.attrs.update({"class": "col-2"}) + self.fields["test_name"].widget.attrs.update({"class": "col-10"}) + self.fields["test_modulation_type"].widget.attrs.update({"class": "col-2"}) + self.fields["nb_active_compounds"].widget.attrs.update({"class": "col-3"}) + self.fields["cell_line_name"].widget.attrs.update({"class": "col-7"}) def has_changed(self): """ @@ -1195,6 +1178,11 @@ class CompoundCytotoxicityResultForm(ModelForm): fields = ("compound_name", "toxicity") widgets = {"toxicity": forms.Select(choices=((True, "True"), (False, "False")))} + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for f in self.fields.values(): + f.widget.attrs.update({"class": "col-3"}) + def has_changed(self): """ Test if the form has changed, we consider that it has not changed if it is not linked to an actual instance and @@ -1309,6 +1297,9 @@ class TestCytotoxDescriptionForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["compound_concentration"].required = True + self.fields["cell_line_name"].widget.attrs.update({"class": "col"}) + self.fields["compound_concentration"].widget.attrs.update({"class": "col"}) + self.fields["test_name"].widget.attrs.update({"class": "col"}) def has_changed(self): """ @@ -1403,10 +1394,19 @@ class CompoundPKResultForm(ModelForm): exclude = ("compound", "test_pk_description") widgets = { "tolerated": forms.Select( - choices=((True, "True"), (False, "False"), (None, "Null")) + choices=((True, "True"), (False, "False"), (None, "Unknown")) ) } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for f in self.fields.values(): + f.widget.attrs.update({"class": "col-3"}) + if isinstance(f, forms.BooleanField) and not isinstance( + f.widget, forms.Select + ): + f.widget.attrs.update({"class": "col-3 mb-4"}) + def has_changed(self): """ Test if the form has changed, we consider that it has not changed if it is not linked to an actual instance and @@ -1509,10 +1509,6 @@ class TestPKDescriptionForm(forms.ModelForm): data_class=models.TestPKDescription, data_attr="test_name" ) - cell_line_name = CharFieldDataList( - data_class=models.CellLine, data_attr="name", label=_("Cell line") - ) - class Meta: model = models.TestPKDescription fields = "__all__" @@ -1520,8 +1516,10 @@ class TestPKDescriptionForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - for f in ["administration_mode", "concentration", "dose", "dose_interval"]: + for f in ["administration_mode", "dose"]: self.fields[f].required = True + for f in self.fields.values(): + f.widget.attrs.update({"class": "col-3"}) def has_changed(self): """ @@ -1538,23 +1536,6 @@ class TestPKDescriptionForm(forms.ModelForm): return False return super().has_changed() - def save(self, commit=True): - """ - Before an actual save, we set the foreign key that have been created in the meantime from unique identifier - (cell_line_name, protein_complex) we where provided at the initialization of the form, and/or the input of the - user. - :param commit: - :return: - """ - # right - if hasattr(self, "cleaned_data"): - if "cell_line_name" in self.cleaned_data: - cell_line, created = models.CellLine.objects.get_or_create( - name=self.cleaned_data["cell_line_name"] - ) - self.instance.cell_line = cell_line - return super().save(commit=commit) - class TestPKDescriptionBaseModelFormSet(BaseInlineNestedFormSet): __compound_names = None @@ -1737,15 +1718,19 @@ class TestsForm(forms.Form): pkRes_tolerated = forms.ChoiceField( label="Tolerated", widget=forms.TextInput(), required=False ) - pkRes_auc = forms.IntegerField(label="AUC", initial=1, required=False) - pkRes_clearance = forms.DecimalField(label="Clearance", required=False) - pkRes_cmax = forms.DecimalField(label="C max", required=False) + pkRes_auc_av = forms.BooleanField(label="AUC available", initial=1, required=False) + pkRes_clearance_av = forms.BooleanField(label="Clearance available", required=False) + pkRes_cmax_av = forms.BooleanField( + label="Maximal concentration available", required=False + ) pkRes_oral_bioavailability = forms.IntegerField( label="Oral bio-availability", initial=1, required=False ) pkRes_t_demi = forms.IntegerField(label="T 1/2", initial=1, required=False) pkRes_t_max = forms.IntegerField(label="T max", initial=1, required=False) - pkRes_voldistribution = forms.DecimalField(label="Voldistribution", required=False) + pkRes_voldistribution_av = forms.BooleanField( + label="Volume distribution (Vd) available", required=False + ) UNIT_CONCENTRATION = (("micro", "µM"), ("nano", "nM"), ("pico", "pM")) @@ -1783,3 +1768,15 @@ ADMINISTRATION_MODE = [ # TestsFormSet = formset_factory(TestsForm, formset=BaseTestsFormSet, can_delete=True, can_order=True) TestsFormSet = formset_factory(TestsForm, can_delete=True, can_order=False, extra=1) # formset = TestsFormSet() + + +""" Step 9 : SaveInDB """ + + +class SaveInDBForm(forms.Form): + ok = forms.BooleanField( + label=_("SaveInDBForm__ok__label"), + # help_text=_("SaveInDBForm__ok__help_text"), + required=True, + initial=False, + ) diff --git a/ippisite/ippidb/management/commands/create_labslink_files.py b/ippisite/ippidb/management/commands/create_labslink_files.py new file mode 100644 index 0000000000000000000000000000000000000000..151b60e67345a4538940cc6e4c8dd19f871ccc39 --- /dev/null +++ b/ippisite/ippidb/management/commands/create_labslink_files.py @@ -0,0 +1,47 @@ +# coding: utf-8 +from django.db.models import CharField, Value as V +from django.db.models.functions import Concat +from django.db.models import F, Q, Case, When + +from ippidb.models import RefCompoundBiblio +from biodblinks.lablinks.command import LabsLinkCommand + + +class Command(LabsLinkCommand): + + queryset = ( + RefCompoundBiblio.objects.exclude(Q(bibliography__source="PT")) + .annotate( + resource_title=Concat( + V("iPPI-DB compound #"), F("compound__id"), output_field=CharField() + ) + ) + .annotate( + resource_url=Concat( + V("https://ippidb.pasteur.fr/compounds/"), + F("compound__id"), + output_field=CharField(), + ) + ) + .annotate( + doi=Case( + When(Q(bibliography__source="DO"), then=F("bibliography__id_source")), + default=None, + output_field=CharField(), + ) + ) + .annotate( + record_id=Case( + When(Q(bibliography__source="PM"), then=F("bibliography__id_source")), + default=None, + output_field=CharField(), + ) + ) + .annotate( + record_source=Case( + When(Q(bibliography__source="PM"), then=V("MED")), + default=None, + output_field=CharField(), + ) + ) + ) diff --git a/ippisite/ippidb/management/commands/import_drugbank.py b/ippisite/ippidb/management/commands/import_drugbank.py index d84578fd63f746e789766d86920ac509188aef77..54f0425c484e9b6d522e0d36ae88fc3102eb3d85 100644 --- a/ippisite/ippidb/management/commands/import_drugbank.py +++ b/ippisite/ippidb/management/commands/import_drugbank.py @@ -13,7 +13,7 @@ class Command(BaseCommand): parser.add_argument("path", type=str, help="Drugbank TSV file path") def handle(self, *args, **options): - df = pd.read_csv(options["path"], sep="\t") + df = pd.read_csv(options["path"], sep=",") DrugBankCompound.objects.all().delete() self.stdout.write( self.style.SUCCESS("Successfully flushed DrugBank Compound table") @@ -23,9 +23,9 @@ class Command(BaseCommand): try: dbc = DrugBankCompound() dbc.id = row.loc["DRUGBANK_ID"] - dbc.common_name = row.loc["COMMON_NAME"] - dbc.canonical_smiles = row.loc["CanSmile"] - dbc.save() + dbc.common_name = row.loc["GENERIC_NAME"] + dbc.canonical_smiles = row.loc["SMILES"] + dbc.save(autofill=True) except Exception: self.stdout.write( self.style.ERROR( @@ -42,9 +42,11 @@ class Command(BaseCommand): "Successfully inserted {}".format(row.loc["DRUGBANK_ID"]) ) ) - for c in Compound.objects.all(): + for c in Compound.objects.validated(): # for each iPPI-DB compound compute the most similar drugbank compounds - c.save(autofill=True) + c.set_drugbank_link() + c.compute_drugbank_compound_similarity() + c.save() self.stdout.write( self.style.SUCCESS( "Successfully computed 15 most similar compounds for {}".format( diff --git a/ippisite/ippidb/migrations/0053_auto_20200424_1936.py b/ippisite/ippidb/migrations/0053_auto_20200424_1936.py new file mode 100644 index 0000000000000000000000000000000000000000..1f0b10a9f1bb5156d8a32c830a48ac628d477a41 --- /dev/null +++ b/ippisite/ippidb/migrations/0053_auto_20200424_1936.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.1 on 2020-04-24 19:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0052_auto_20200423_2019'), + ] + + operations = [ + migrations.AlterField( + model_name='compoundpkresult', + name='t_demi', + field=models.IntegerField(blank=True, null=True, verbose_name='t½ (mn)'), + ), + migrations.AlterField( + model_name='compoundpkresult', + name='t_max', + field=models.IntegerField(blank=True, null=True, verbose_name='tmax (mn)'), + ), + ] diff --git a/ippisite/ippidb/migrations/0054_auto_20200428_1717.py b/ippisite/ippidb/migrations/0054_auto_20200428_1717.py new file mode 100644 index 0000000000000000000000000000000000000000..9309d147af3e78d2b79c8a6412a2e467132430b3 --- /dev/null +++ b/ippisite/ippidb/migrations/0054_auto_20200428_1717.py @@ -0,0 +1,44 @@ +# Generated by Django 2.2.1 on 2020-04-28 17:17 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0053_auto_20200424_1936'), + ] + + operations = [ + migrations.CreateModel( + name='ProteinDomainComplexGroup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('domain', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.Domain')), + ('protein', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Protein')), + ], + options={ + 'verbose_name_plural': 'protein domain complex groups', + }, + ), + migrations.CreateModel( + name='ProteinDomainBoundComplexGroup', + fields=[ + ('proteindomaincomplexgroup_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ippidb.ProteinDomainComplexGroup')), + ], + bases=('ippidb.proteindomaincomplexgroup',), + ), + migrations.CreateModel( + name='ProteinDomainPartnerComplexGroup', + fields=[ + ('proteindomaincomplexgroup_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ippidb.ProteinDomainComplexGroup')), + ], + bases=('ippidb.proteindomaincomplexgroup',), + ), + migrations.AddField( + model_name='proteindomaincomplex', + name='group', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ippidb.ProteinDomainComplexGroup'), + ), + ] diff --git a/ippisite/ippidb/migrations/0055_fill_proteindomaincomplexgroups.py b/ippisite/ippidb/migrations/0055_fill_proteindomaincomplexgroups.py new file mode 100644 index 0000000000000000000000000000000000000000..b32c3d242145376bf2b8dde766d0111ce5dd5ff5 --- /dev/null +++ b/ippisite/ippidb/migrations/0055_fill_proteindomaincomplexgroups.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.1 on 2020-04-28 17:17 + +from django.db import migrations, models +import django.db.models.deletion + +from ippidb.tasks import generate_protein_domain_complex_groups + + +def run_generate_protein_domain_complex_groups(apps, schema_editor): + generate_protein_domain_complex_groups(apps) + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0054_auto_20200428_1717'), + ] + + operations = [ + migrations.RunPython(run_generate_protein_domain_complex_groups,reverse_code=migrations.RunPython.noop), + ] diff --git a/ippisite/ippidb/migrations/0056_fill_ppiname.py b/ippisite/ippidb/migrations/0056_fill_ppiname.py new file mode 100644 index 0000000000000000000000000000000000000000..4895010d595750d0ccb2bf275b051fafba99d7d3 --- /dev/null +++ b/ippisite/ippidb/migrations/0056_fill_ppiname.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.1 on 2020-04-28 17:17 + +from django.db import migrations, models +import django.db.models.deletion + +from ippidb.models import Ppi + +def run_generate_protein_domain_complex_groups(apps, schema_editor): + for ppi in Ppi.objects.all(): + ppi.compute_name_from_protein_names() + ppi.save() + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0055_fill_proteindomaincomplexgroups'), + ] + + operations = [ + migrations.RunPython(run_generate_protein_domain_complex_groups,reverse_code=migrations.RunPython.noop), + ] diff --git a/ippisite/ippidb/migrations/0057_auto_20200430_0740.py b/ippisite/ippidb/migrations/0057_auto_20200430_0740.py new file mode 100644 index 0000000000000000000000000000000000000000..b82c0eb60a3e9c8713fc5d67d56c78f97f7f2609 --- /dev/null +++ b/ippisite/ippidb/migrations/0057_auto_20200430_0740.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.1 on 2020-04-30 07:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0056_fill_ppiname'), + ] + + operations = [ + migrations.AlterField( + model_name='ppi', + name='name', + field=models.TextField(default='', verbose_name='PPI name'), + preserve_default=False, + ), + ] diff --git a/ippisite/ippidb/migrations/0058_auto_20200430_1915.py b/ippisite/ippidb/migrations/0058_auto_20200430_1915.py new file mode 100644 index 0000000000000000000000000000000000000000..bab8608b9f863131d362a79e311ea42a92215c47 --- /dev/null +++ b/ippisite/ippidb/migrations/0058_auto_20200430_1915.py @@ -0,0 +1,47 @@ +# Generated by Django 2.2.1 on 2020-04-30 19:15 + +from django.db import migrations, models + +def fill_pkresult_avail_values(apps, schema_editor): + CompoundPKResult = apps.get_model("ippidb", "CompoundPKResult") + for cpr in CompoundPKResult.objects.all(): + cpr.auc_av = cpr.auc is not None + cpr.clearance_av = cpr.clearance is not None + cpr.c_max_av = cpr.c_max is not None + cpr.voldistribution_av = cpr.voldistribution is not None + cpr.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0057_auto_20200430_0740'), + ] + + operations = [ + migrations.AddField( + model_name='compoundpkresult', + name='auc_av', + field=models.BooleanField(default=False, verbose_name='Area under curve available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='c_max_av', + field=models.BooleanField(default=False, verbose_name='Maximal concentration available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='clearance_av', + field=models.BooleanField(default=False, verbose_name='Clearance available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='voldistribution_av', + field=models.BooleanField(default=False, verbose_name='Volume distribution (Vd)'), + preserve_default=False, + ), + migrations.RunPython(fill_pkresult_avail_values), + ] diff --git a/ippisite/ippidb/migrations/0059_auto_20200430_1926.py b/ippisite/ippidb/migrations/0059_auto_20200430_1926.py new file mode 100644 index 0000000000000000000000000000000000000000..7b4d5920b8a85d6a4c79caa521dac749d83cb540 --- /dev/null +++ b/ippisite/ippidb/migrations/0059_auto_20200430_1926.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.1 on 2020-04-30 19:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0058_auto_20200430_1915'), + ] + + operations = [ + migrations.RemoveField( + model_name='compoundpkresult', + name='auc', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='c_max', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='clearance', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='voldistribution', + ), + ] diff --git a/ippisite/ippidb/migrations/0060_auto_20200521_1858.py b/ippisite/ippidb/migrations/0060_auto_20200521_1858.py new file mode 100644 index 0000000000000000000000000000000000000000..fa04bab1b150a484467e2f2171f679212629ec0b --- /dev/null +++ b/ippisite/ippidb/migrations/0060_auto_20200521_1858.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.1 on 2020-05-21 18:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0059_auto_20200430_1926'), + ] + + operations = [ + migrations.AddField( + model_name='compound', + name='drugbank_id', + field=models.TextField(blank=True, null=True, unique=True, verbose_name='Drugbank ID'), + ), + migrations.AlterField( + model_name='compoundpkresult', + name='voldistribution_av', + field=models.BooleanField(verbose_name='Volume distribution (Vd) available'), + ), + ] diff --git a/ippisite/ippidb/migrations/0061_auto_20200522_0813.py b/ippisite/ippidb/migrations/0061_auto_20200522_0813.py new file mode 100644 index 0000000000000000000000000000000000000000..9f5d605e1a91f3559e014f8c00499abb95bf273e --- /dev/null +++ b/ippisite/ippidb/migrations/0061_auto_20200522_0813.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.1 on 2020-05-22 08:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0060_auto_20200521_1858'), + ] + + operations = [ + migrations.AlterField( + model_name='compound', + name='drugbank_id', + field=models.TextField(blank=True, null=True, verbose_name='Drugbank ID'), + ), + ] diff --git a/ippisite/ippidb/migrations/0062_drugbankcompound_inchikey.py b/ippisite/ippidb/migrations/0062_drugbankcompound_inchikey.py new file mode 100644 index 0000000000000000000000000000000000000000..44311a6a3070e497171d2567d0bc3f177fb5a354 --- /dev/null +++ b/ippisite/ippidb/migrations/0062_drugbankcompound_inchikey.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.1 on 2020-05-22 18:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0061_auto_20200522_0813'), + ] + + operations = [ + migrations.AddField( + model_name='drugbankcompound', + name='inchikey', + field=models.TextField(blank=True, null=True, verbose_name='InChiKey'), + ), + ] diff --git a/ippisite/ippidb/migrations/0063_fill_drugbank_links.py b/ippisite/ippidb/migrations/0063_fill_drugbank_links.py new file mode 100644 index 0000000000000000000000000000000000000000..62ebadd55653c353a44eaf9d2ba32bcf20755aa1 --- /dev/null +++ b/ippisite/ippidb/migrations/0063_fill_drugbank_links.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.1 on 2020-04-28 17:17 + +from django.db import migrations, models +import django.db.models.deletion + +def run_generate_drugbank_inchikey(apps, schema_editor): + DrugBankCompound = apps.get_model("ippidb", "DrugBankCompound") + for drugbank_compound in DrugBankCompound.objects.all(): + drugbank_compound.save(autofill=True) + +def set_compound_drugbank_links(apps, schema_editor): + Compound = apps.get_model("ippidb", "Compound") + for compound in Compound.objects.all(): + compound.set_drugbank_link() + compound.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0062_drugbankcompound_inchikey'), + ] + + operations = [ + migrations.RunPython(run_generate_drugbank_inchikey, reverse_code=migrations.RunPython.noop), + migrations.RunPython(set_compound_drugbank_links, reverse_code=migrations.RunPython.noop), + ] diff --git a/ippisite/ippidb/migrations/0064_proteindomaincomplex_polymorphic_ctype.py b/ippisite/ippidb/migrations/0064_proteindomaincomplex_polymorphic_ctype.py new file mode 100644 index 0000000000000000000000000000000000000000..aa4370a431bc0d4053425affe737d8e7846bbc2f --- /dev/null +++ b/ippisite/ippidb/migrations/0064_proteindomaincomplex_polymorphic_ctype.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.1 on 2020-06-29 06:51 + +from django.db import migrations, models +import django.db.models.deletion + + + +def forwards_func(apps, schema_editor): + # add the content type to the classes using django-polymorphic + # i.e. ProteinDomainBoundComplex and ProteinDomainPartnerComplex + # code is adapted from https://django-polymorphic.readthedocs.io/en/stable/migrating.html + ProteinDomainBoundComplex = apps.get_model('ippidb', 'ProteinDomainBoundComplex') + ProteinDomainPartnerComplex = apps.get_model('ippidb', 'ProteinDomainPartnerComplex') + ContentType = apps.get_model('contenttypes', 'ContentType') + pdbc_ct = ContentType.objects.get_for_model(ProteinDomainBoundComplex) + ProteinDomainBoundComplex.objects.filter(polymorphic_ctype__isnull=True).update(polymorphic_ctype=pdbc_ct) + pdpc_ct = ContentType.objects.get_for_model(ProteinDomainPartnerComplex) + ProteinDomainPartnerComplex.objects.filter(polymorphic_ctype__isnull=True).update(polymorphic_ctype=pdpc_ct) + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('ippidb', '0063_fill_drugbank_links'), + ] + + operations = [ + migrations.AddField( + model_name='proteindomaincomplex', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_ippidb.proteindomaincomplex_set+', to='contenttypes.ContentType'), + ), + migrations.RunPython(forwards_func, migrations.RunPython.noop), + ] diff --git a/ippisite/ippidb/migrations/0065_compound_replaced_with.py b/ippisite/ippidb/migrations/0065_compound_replaced_with.py new file mode 100644 index 0000000000000000000000000000000000000000..f4c323218f77c3867815f9019e651c186a924b48 --- /dev/null +++ b/ippisite/ippidb/migrations/0065_compound_replaced_with.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.1 on 2020-09-14 18:02 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0064_proteindomaincomplex_polymorphic_ctype'), + ] + + operations = [ + migrations.AddField( + model_name='compound', + name='replaced_with', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ippidb.Compound', verbose_name='Replacement ID'), + ), + ] diff --git a/ippisite/ippidb/migrations/0066_merge_20210128_0926.py b/ippisite/ippidb/migrations/0066_merge_20210128_0926.py new file mode 100644 index 0000000000000000000000000000000000000000..ba4c5b4eda6d9c5870fc362ca731f0d3d999b169 --- /dev/null +++ b/ippisite/ippidb/migrations/0066_merge_20210128_0926.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.1 on 2021-01-28 09:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0065_compound_replaced_with'), + ('ippidb', '0064_auto_20200624_1636'), + ] + + operations = [ + ] diff --git a/ippisite/ippidb/models/__init__.py b/ippisite/ippidb/models/__init__.py index 652f2b182757b0d89c27e04835925777aa9d6f73..cbd8934a2713994d395be5fcfaea77c5ed7834a5 100644 --- a/ippisite/ippidb/models/__init__.py +++ b/ippisite/ippidb/models/__init__.py @@ -9,7 +9,9 @@ from .ippidb import ( Domain, ProteinDomainComplex, ProteinDomainBoundComplex, + ProteinDomainBoundComplexGroup, ProteinDomainPartnerComplex, + ProteinDomainPartnerComplexGroup, Ppi, PpiComplex, PpiFamily, @@ -49,7 +51,7 @@ from .targetcentric import ( Distance, MetaInformation, InteractFile, - Network + Network, ) __all__ = [ diff --git a/ippisite/ippidb/models/ippidb.py b/ippisite/ippidb/models/ippidb.py index 9afda10805608a9dbe2d9e0db30a33ee1f689634..8d881b983778e912a921a799df96da9a0593e987 100644 --- a/ippisite/ippidb/models/ippidb.py +++ b/ippisite/ippidb/models/ippidb.py @@ -8,18 +8,20 @@ import operator import re import sys +from boltons.iterutils import flatten, unique_iter from django.conf import settings from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError from django.db import models, transaction from django.db.models import FloatField, IntegerField, BooleanField -from django.db.models import Max, Count, F, Q, Case, When, Subquery, OuterRef +from django.db.models import Max, Count, F, Q, Case, When, Subquery, OuterRef, Exists from django.db.models.functions import Cast from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django_celery_results.models import TaskResult from django.dispatch import receiver from django.db.models.signals import post_save +from polymorphic.models import PolymorphicModel from ippidb.utils import FingerPrinter, smi2inchi, smi2inchikey from ippidb.ws import ( @@ -30,13 +32,17 @@ from ippidb.ws import ( get_go_info, get_pfam_info, get_doi_info, + get_chembl_id, + get_pubchem_id, + get_ligand_id, + EntryNotFoundError, ) class AutoFillableModel(models.Model): """ - AutoFillableModel makes it possible to automatically fill model fields from - external sources in the autofill() method + AutoFillableModel abstract model to enable automated model fields + filling from external sources in the autofill() method. The save method allows to either include autofill or not. in autofill kwarg is set to True, save() will first call autofill(), otherwise it won't """ @@ -60,19 +66,21 @@ class AutoFillableModel(models.Model): def autofill_post_save(self): """ - method called after the save is done, usefull for setting m2m - relations - :return: + Method called automatically after the save is done, + usefull for setting m2m relations """ pass def is_autofill_done(self): + """ + test whether or not the model has been already autofilled + """ return True class Bibliography(AutoFillableModel): """ - Bibliography references + Bibliography reference (publications or patents) """ @@ -127,10 +135,15 @@ class Bibliography(AutoFillableModel): return self.source == "PM" or self.source == "DO" def get_external_url(self): + """ + Get URL to the publication + """ if self.source == "PM": - return "https://www.ncbi.nlm.nih.gov/pubmed/" + str(self.id_source) - if self.source == "DO": - return "https://doi.org/" + str(self.id_source) + return f"https://www.ncbi.nlm.nih.gov/pubmed/{self.id_source}" + elif self.source == "DO": + return f"https://doi.org/{self.id_source}" + elif self.source == "PT": + return f"https://patentscope.wipo.int/search/en/detail.jsf?docId={self.id_source}" @staticmethod def validate_source_id(id_source, source): @@ -330,7 +343,29 @@ class Domain(AutoFillableModel): return f"{self.pfam_acc} ({self.pfam_id}-{self.pfam_description})" -class ProteinDomainComplex(models.Model): +class ProteinDomainComplexGroup(models.Model): + """ + Protein-Domain association group + """ + + protein = models.ForeignKey("Protein", models.CASCADE) + domain = models.ForeignKey("Domain", models.CASCADE, null=True, blank=True) + + class Meta: + verbose_name_plural = "protein domain complex groups" + + def __str__(self): + return "{} {}-{}".format( + self.protein.short_name, + self.protein.uniprot_id, + self.domain.pfam_id if self.domain else "unknow", + ) + + def name(self): + return str(self) + + +class ProteinDomainComplex(PolymorphicModel): """ Protein-Domain association """ @@ -338,19 +373,33 @@ class ProteinDomainComplex(models.Model): protein = models.ForeignKey("Protein", models.CASCADE) domain = models.ForeignKey("Domain", models.CASCADE, null=True, blank=True) ppc_copy_nb = models.IntegerField("Number of copies of the protein in the complex") + group = models.ForeignKey( + "ProteinDomainComplexGroup", models.SET_NULL, null=True, blank=True + ) class Meta: verbose_name_plural = "complexes" def __str__(self): - return "{} {}-{}".format( - self.protein.short_name, self.protein_id, self.domain_id + return "{} {}-{} ({})".format( + self.protein.short_name, + self.protein.uniprot_id, + self.domain.pfam_id if self.domain else "unknow", + self.ppc_copy_nb, ) def name(self): return self.protein.short_name +class ProteinDomainBoundComplexGroup(ProteinDomainComplexGroup): + """ + Protein-Domain Bound Complexes group + """ + + pass + + class ProteinDomainBoundComplex(ProteinDomainComplex): """ Protein-Domain association with a "bound complex" role @@ -358,18 +407,44 @@ class ProteinDomainBoundComplex(ProteinDomainComplex): ppp_copy_nb_per_p = models.IntegerField(_("ppp_copy_nb_per_p")) + @property + def complex_type(self): + return "Bound" + class Meta: verbose_name_plural = "bound complexes" + def set_group(self): + self.group = ProteinDomainBoundComplexGroup.objects.get_or_create( + protein=self.protein, domain=self.domain + )[0] + + +class ProteinDomainPartnerComplexGroup(ProteinDomainComplexGroup): + """ + Protein-Domain Bound Complexes group + """ + + pass + class ProteinDomainPartnerComplex(ProteinDomainComplex): """ Protein-Domain association with a "partner complex" role """ + @property + def complex_type(self): + return "Partner" + class Meta: verbose_name_plural = "partner complexes" + def set_group(self): + self.group = ProteinDomainPartnerComplexGroup.objects.get_or_create( + protein=self.protein, domain=self.domain + )[0] + class Symmetry(models.Model): """ @@ -420,7 +495,7 @@ class Ppi(AutoFillableModel): symmetry = models.ForeignKey(Symmetry, models.CASCADE) diseases = models.ManyToManyField(Disease, blank=True) family = models.ForeignKey(PpiFamily, models.CASCADE, null=True, blank=True) - name = models.TextField("PPI name", null=True, blank=True) + name = models.TextField("PPI name") def __str__(self): return "PPI #{} on {}".format(self.id, self.name) @@ -482,6 +557,11 @@ class PpiComplex(models.Model): class CompoundsManager(models.Manager): + """ + Model manager for the `Compound` class + provides selections to `validated` or `user-visible` compounds + """ + def for_user(self, current_user): """ Get compounds visible to a given user @@ -491,11 +571,13 @@ class CompoundsManager(models.Manager): qs = self.get_queryset() if current_user.is_anonymous: qs = qs.exclude(compoundaction__ppi__contribution__validated=False) + qs = qs.filter(replaced_with__isnull=True) elif not current_user.is_superuser: qs = qs.exclude( Q(compoundaction__ppi__contribution__validated=False), ~Q(compoundaction__ppi__contribution__contributor=current_user), ) + qs = qs.filter(replaced_with__isnull=True) return qs def validated(self): @@ -719,6 +801,7 @@ class Compound(AutoFillableModel): ) iupac_name = models.TextField(verbose_name="IUPAC name", blank=True, null=True) ligand_id = models.CharField("PDB Ligand ID", max_length=3, blank=True, null=True) + drugbank_id = models.TextField("Drugbank ID", blank=True, null=True) pubs = models.IntegerField( verbose_name="Number of publications", null=True, blank=True ) @@ -785,6 +868,14 @@ class Compound(AutoFillableModel): verbose_name="Number of tests available", null=True, blank=True ) + replaced_with = models.ForeignKey( + "self", + verbose_name="Replacement ID", + null=True, + blank=True, + on_delete=models.PROTECT, + ) + class Meta: ordering = ["id"] indexes = [ @@ -815,7 +906,9 @@ class Compound(AutoFillableModel): # ] def compute_drugbank_compound_similarity(self): - """ compute Tanimoto similarity to existing DrugBank compounds """ + """ + Compute Tanimoto similarity to existing DrugBank compounds + """ self.save() # fingerprints to compute drugbank similarities are in settings module, default FP2 fingerprinter = FingerPrinter(getattr(settings, "DRUGBANK_FINGERPRINTS", "FP2")) @@ -840,14 +933,14 @@ class Compound(AutoFillableModel): @property def biblio_refs(self): """ - return all RefCompoundBiblio related to this compound + Return all RefCompoundBiblio related to this compound """ return RefCompoundBiblio.objects.filter(compound=self) @property def pfam_ids(self): """ - return all PFAM ids for the domain of the proteins of the bound + Return all PFAM ids for the domain of the proteins of the bound complexes in the PPIs this compound has an action on """ pfam_ids = set() @@ -859,6 +952,9 @@ class Compound(AutoFillableModel): @property def best_pXC50_compound_activity_result(self): + """ + Return the best pXC50 activity + """ best_pXC50_activity = self.best_activity if best_pXC50_activity is None: return None @@ -871,7 +967,7 @@ class Compound(AutoFillableModel): @property def bioch_tests_count(self): """ - return the number of associated biochemical tests + Return the number of associated biochemical tests """ return ( self.compoundactivityresult_set.all() @@ -882,7 +978,7 @@ class Compound(AutoFillableModel): @property def cell_tests_count(self): """ - return the number of associated cell tests + Return the number of associated cell tests """ return ( self.compoundactivityresult_set.all() @@ -890,11 +986,37 @@ class Compound(AutoFillableModel): .count() ) + @property + def pk_tests_count(self): + """ + Return the number of associated pharmacokinetic tests + """ + return self.compoundpkresult_set.all().count() + + @property + def cytotoxicity_tests_count(self): + """ + Return the number of associated cytotoxicity tests + """ + return self.compoundcytotoxicityresult_set.all().count() + @property def sorted_similar_drugbank_compounds(self): + """ + Return the similar Drugbank compounds, + sorted by decreasing similarity + """ return self.drugbankcompoundtanimoto_set.order_by("-tanimoto") def is_validated(self): + """ + Return the compound validation status + """ + # if compound is not linked to any CompoundAction this is + # because it was dereferenced because of duplication by + # `replace_compound_references` + if self.compoundaction_set.count() == 0: + return False for ca in self.compoundaction_set.all(): if ca.ppi.contribution_set.filter(validated=False).exists(): return False @@ -903,21 +1025,174 @@ class Compound(AutoFillableModel): is_validated.boolean = True def autofill(self): + """ + Finalize the computation of the Compound + by computing InChi, InChiKey and Drugbank similarity + """ # compute InChi and InChiKey self.inchi = smi2inchi(self.canonical_smile) self.inchikey = smi2inchikey(self.canonical_smile) self.compute_drugbank_compound_similarity() + self.set_drugbank_link() + self.set_chembl_link() + self.set_pubchem_link() + self.save() + + def set_drugbank_link(self): + """ + Set Drugbank ID by looking up InChi Key + in the database + """ + drugbank_qs = DrugBankCompound.objects.filter(inchikey=self.inchikey) + if drugbank_qs.count() > 0: + self.drugbank_id = drugbank_qs[0].id + else: + self.drugbank_id = None + + def set_chembl_link(self): + """ + Set ChEMBL ID by looking up InChi Key + with the ChEMBL web service + """ + try: + self.chembl_id = get_chembl_id(self.inchikey) + except EntryNotFoundError: + pass + + def set_pubchem_link(self): + """ + Set PubChem ID by looking up InChi Key + with the PubChem web service + """ + try: + self.pubchem_id = get_pubchem_id(self.inchikey) + except EntryNotFoundError: + pass + + def set_ligand_link(self): + """ + Set Ligand ID by looking up SMILES + with the PDB REST service + """ + try: + self.ligand_id = get_ligand_id(self.canonical_smile) + except EntryNotFoundError: + pass def compute_fsp3(self): + """ + Compute FSP3 from CSP3 and number of carbons + """ self.fsp3 = self.nb_csp3 / self.nb_c def __str__(self): - return "Compound #{}".format(self.id) + """ + String representation + """ + return "iPPI-DB Compound #{}".format(self.id) def get_absolute_url(self): + """ + Get absolute URL to the Compound page + """ return reverse("compound_card", kwargs={"pk": self.pk}) + @property + def pubchem_url(self): + """ + Get absolute URL to the corresponding PubChem entry + """ + return ( + f"https://pubchem.ncbi.nlm.nih.gov/compound/{ self.pubchem_id }" + if self.pubchem_id + else None + ) + + @property + def chembl_url(self): + """ + Get absolute URL to the corresponding Chembl entry + """ + return ( + f"https://www.ebi.ac.uk/chembldb/compound/inspect/{ self.chembl_id }" + if self.chembl_id + else None + ) + + @property + def chemspider_url(self): + """ + Get absolute URL to the corresponding ChemSpider entry + """ + return ( + f"http://www.chemspider.com/Chemical-Structure.{ self.chemspider_id}.html" + if self.chemspider_id + else None + ) + + @property + def pdbligand_url(self): + """ + Get absolute URL to the corresponding PDB ligand entry + """ + return ( + f"https://www.rcsb.org/ligand/{ self.ligand_id}" if self.ligand_id else None + ) + + @property + def drugbank_url(self): + """ + Get absolute URL to the corresponding Drugbank entry + """ + return ( + f"https://www.drugbank.ca/drugs/{ self.drugbank_id}" + if self.drugbank_id + else None + ) + + @property + def sameas_urls(self): + urls = [] + if self.pubchem_id: + urls.append(self.pubchem_url) + if self.chembl_id: + urls.append(self.chembl_url) + if self.chemspider_id: + urls.append(self.chemspider_url) + if self.ligand_id: + urls.append(self.pdbligand_url) + if self.drugbank_id: + urls.append(self.drugbank_url) + return urls + + def get_bioschemas(self, request): + json_data = {"@type": "MolecularEntity", "@context": "http://schema.org"} + json_data["name"] = str(self) + if self.pk is not None: + json_data["url"] = request.build_absolute_uri(self.get_absolute_url()) + if self.inchi is not None: + json_data["inChI"] = self.inchi + if self.iupac_name != "": + json_data["iupacName"] = self.iupac_name + if self.molecular_weight is not None: + json_data["molecularWeight"] = self.molecular_weight + if self.inchikey is not None: + json_data["inChIKey"] = self.inchikey + if self.chembl_id is not None: + json_data[ + "image" + ] = f"https://www.ebi.ac.uk/chembl/api/data/image/{ self.chembl_id }.svg" + if self.canonical_smile is not None: + json_data["smiles"] = self.canonical_smile + if len(self.sameas_urls) > 0: + json_data["sameAs"] = self.sameas_urls + return json_data + def clean(self): + """ + Perform additional checks: + - check common name for the Compound is unique + """ if ( self.common_name is not None and self.common_name != "" @@ -928,8 +1203,93 @@ class Compound(AutoFillableModel): self.add_error("common_name", "A compound with this name already exists") def get_jobs(self): + """ + Retrieve the jobs for the compound + """ return CompoundJob.objects.filter(compound=self) + def replace_compound_references(self, replacing_compound): + """ + Replace the references to a given compound in the data with + references to another new compound. used to deal with + duplicates in the database + also delete this object + """ + self.replaced_with = replacing_compound + for ref in RefCompoundBiblio.objects.filter(compound=self): + ref.compound = replacing_compound + ref.save() + for ca in CompoundAction.objects.filter(compound=self): + ca.compound = replacing_compound + ca.save() + for car in CompoundActivityResult.objects.filter(compound=self): + car.compound = replacing_compound + car.save() + for ccr in CompoundCytotoxicityResult.objects.filter(compound=self): + ccr.compound = replacing_compound + ccr.save() + for cpr in CompoundPKResult.objects.filter(compound=self): + cpr.compound = replacing_compound + cpr.save() + # remove similarities with current component, in case any had been + # stored + CompoundTanimoto.objects.filter(compound=self).delete() + DrugbankCompoundTanimoto.objects.filter(compound=self).delete() + + def get_target_activities_table(self): + """ + Return test activity result data as a list of + items containing for each PPI family the compound + was tested against, the best activity, the linked diseases + and the modulation types + """ + ppi_families = [ + item["test_activity_description__ppi__family"] + for item in self.compoundactivityresult_set.filter( + ~Q(activity_type="KdRat") + ) + .order_by() + .values("test_activity_description__ppi__family") + .distinct() + ] + results = [] + for ppi_family in ppi_families: + family_compound_activity_results = self.compoundactivityresult_set.filter( + ~Q(activity_type="KdRat") + ).filter(test_activity_description__ppi__family__id=ppi_family) + best_activity = ( + family_compound_activity_results.order_by("-activity") + .values("activity") + .first()["activity"] + ) + diseases = list( + unique_iter( + flatten( + [ + list(fcar.test_activity_description.ppi.diseases.all()) + for fcar in family_compound_activity_results + ] + ) + ) + ) + modulation_types = list( + set( + [ + fcar.get_modulation_type_display() + for fcar in family_compound_activity_results + ] + ) + ) + results.append( + { + "family": PpiFamily.objects.get(id=ppi_family), + "best_activity": best_activity, + "diseases": diseases, + "modulation_types": modulation_types, + } + ) + return results + class CompoundTanimoto(models.Model): canonical_smiles = models.TextField("Canonical Smile") @@ -1099,6 +1459,12 @@ class CompoundActivityResult(models.Model): else False ) + @property + def ref(self): + return RefCompoundBiblio.objects.get( + compound=self.compound, bibliography=self.test_activity_description.biblio + ) + class TestCytotoxDescription(models.Model): """ @@ -1136,6 +1502,13 @@ class CompoundCytotoxicityResult(models.Model): self.test_cytotoxicity_description.id, self.compound.id ) + @property + def ref(self): + return RefCompoundBiblio.objects.get( + compound=self.compound, + bibliography=self.test_cytotoxicity_description.biblio, + ) + class TestPKDescription(models.Model): """ @@ -1177,29 +1550,15 @@ class CompoundPKResult(models.Model): compound = models.ForeignKey(Compound, models.CASCADE) test_pk_description = models.ForeignKey(TestPKDescription, models.CASCADE) tolerated = models.NullBooleanField("Tolerated", null=True) - auc = models.IntegerField("Area under curve (ng.mL-1.hr)", blank=True, null=True) - clearance = models.DecimalField( - "Clearance (mL/hr)", max_digits=7, decimal_places=3, blank=True, null=True - ) - c_max = models.DecimalField( - "Maximal concentration (ng/mL)", - max_digits=7, - decimal_places=3, - blank=True, - null=True, - ) oral_bioavailability = models.IntegerField( "Oral Bioavailability (%F)", blank=True, null=True ) - t_demi = models.IntegerField("t½", blank=True, null=True) - t_max = models.IntegerField("tmax", blank=True, null=True) - voldistribution = models.DecimalField( - "Volume distribution (Vd)", - max_digits=5, - decimal_places=2, - blank=True, - null=True, - ) + t_demi = models.IntegerField("t½ (mn)", blank=True, null=True) + t_max = models.IntegerField("tmax (mn)", blank=True, null=True) + auc_av = models.BooleanField("Area under curve available") + clearance_av = models.BooleanField("Clearance available") + c_max_av = models.BooleanField("Maximal concentration available") + voldistribution_av = models.BooleanField("Volume distribution (Vd) available") class Meta: unique_together = (("compound", "test_pk_description"),) @@ -1209,6 +1568,12 @@ class CompoundPKResult(models.Model): self.test_pk_description.id, self.compound.id ) + @property + def ref(self): + return RefCompoundBiblio.objects.get( + compound=self.compound, bibliography=self.test_pk_description.biblio + ) + class CompoundAction(models.Model): """ @@ -1255,7 +1620,7 @@ class RefCompoundBiblio(models.Model): return "Ref. {} on {}".format(self.bibliography, self.compound) -class DrugBankCompound(models.Model): +class DrugBankCompound(AutoFillableModel): """ Drugbank compound """ @@ -1263,6 +1628,14 @@ class DrugBankCompound(models.Model): id = models.TextField("Drugbank ID", unique=True, primary_key=True) common_name = models.TextField("Common name") canonical_smiles = models.TextField("Canonical SMILES") + inchikey = models.TextField(verbose_name="InChiKey", blank=True, null=True) + + def autofill(self): + """ + Computing InChiKey + """ + # compute InChiKey + self.inchikey = smi2inchikey(self.canonical_smiles) class DrugbankCompoundTanimoto(models.Model): @@ -1278,7 +1651,44 @@ class DrugbankCompoundTanimoto(models.Model): unique_together = (("compound", "drugbank_compound"),) +class ContributionManager(models.Manager): + """ + Model manager for the `Contribution` class + provides selections to `validated` or `user-visible` contributions + """ + + def for_user(self, current_user): + """ + Get contributions visible to a given user + i.e. validated or created by the user or + all of them if the user is an admin + """ + qs = self.get_queryset() + if current_user.is_anonymous: + qs = qs.exclude(validated=False) + elif not current_user.is_superuser: + qs = qs.exclude( + Q(validated=False), + ~Q(contributor=current_user), + ) + return qs + + def validated(self): + """ + Get validated contributions + """ + return super().get_queryset().exclude(validated=False) + + class Contribution(models.Model): + """ + Contribution: structured information describing some + compound(s) and related effect(s) on some PPI(s) in a + given publication/patent + """ + + objects = ContributionManager() + contributor = models.ForeignKey(to=get_user_model(), on_delete=models.PROTECT) ppi = models.ForeignKey(to=Ppi, on_delete=models.SET_NULL, null=True) bibliography = models.ForeignKey( @@ -1289,7 +1699,7 @@ class Contribution(models.Model): validated = models.BooleanField(default=False) def get_absolute_url(self): - return reverse("contribution-detail", kwargs={"contribution_pk": self.pk}) + return reverse("contribution-detail", kwargs={"pk": self.pk}) def update_compound_cached_properties(compounds_queryset=None): @@ -1309,11 +1719,6 @@ def update_compound_cached_properties(compounds_queryset=None): ) c.save() compounds_queryset.update( - pubs=Subquery( - compounds_queryset.filter(id=OuterRef("id")) - .annotate(_pubs=Count("refcompoundbiblio", distinct=True)) - .values("_pubs")[:1] - ), best_activity=Subquery( compounds_queryset.filter(id=OuterRef("id")) .annotate( @@ -1324,11 +1729,18 @@ def update_compound_cached_properties(compounds_queryset=None): ) .values("_best_activity")[:1] ), + ) + compounds_queryset.update( + pubs=Subquery( + compounds_queryset.filter(id=OuterRef("id")) + .annotate(_pubs=Count("refcompoundbiblio", distinct=True)) + .values("_pubs")[:1] + ), le=Subquery( compounds_queryset.filter(id=OuterRef("id")) .annotate( _le=Cast( - 1.37 * Max("compoundactivityresult__activity") / F("nb_atom_non_h"), + 1.37 * F("best_activity") / F("nb_atom_non_h"), FloatField(), ) ) @@ -1336,11 +1748,7 @@ def update_compound_cached_properties(compounds_queryset=None): ), lle=Subquery( compounds_queryset.filter(id=OuterRef("id")) - .annotate( - _lle=Cast( - Max("compoundactivityresult__activity") - F("a_log_p"), FloatField() - ) - ) + .annotate(_lle=Cast(F("best_activity") - F("a_log_p"), FloatField())) .values("_lle")[:1] ), lipinsky_mw=Subquery( @@ -1572,40 +1980,9 @@ def update_compound_cached_properties(compounds_queryset=None): ) .values("_bindtest_av")[:1] ), - pktest_av=Subquery( - compounds_queryset.filter(id=OuterRef("id")) - .annotate( - _pktest_av=Cast( - Max( - Case( - When( - refcompoundbiblio__bibliography__pharmacokinetic=True, - then=1, - ), - default=0, - output_field=IntegerField(), - ) - ), - BooleanField(), - ) - ) - .values("_pktest_av")[:1] - ), - cytoxtest_av=Subquery( - compounds_queryset.filter(id=OuterRef("id")) - .annotate( - _cytoxtest_av=Cast( - Max( - Case( - When(refcompoundbiblio__bibliography__cytotox=True, then=1), - default=0, - output_field=IntegerField(), - ) - ), - BooleanField(), - ) - ) - .values("_cytoxtest_av")[:1] + pktest_av=Exists(CompoundPKResult.objects.filter(compound__id=OuterRef("id"))), + cytoxtest_av=Exists( + CompoundCytotoxicityResult.objects.filter(compound__id=OuterRef("id")) ), insilico_av=Subquery( compounds_queryset.filter(id=OuterRef("id")) diff --git a/ippisite/ippidb/static/chartjs/Chart.bundle.js b/ippisite/ippidb/static/chartjs/Chart.bundle.js index db74e2fef97e006d74c648189a96462ab86a6371..b6f4f388c7459e69b776e3321716b93f5d1f570b 100644 --- a/ippisite/ippidb/static/chartjs/Chart.bundle.js +++ b/ippisite/ippidb/static/chartjs/Chart.bundle.js @@ -1,18919 +1,20755 @@ /*! - * Chart.js - * http://chartjs.org/ - * Version: 2.7.2 - * - * Copyright 2018 Chart.js Contributors - * Released under the MIT license - * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + * Chart.js v2.9.3 + * https://www.chartjs.org + * (c) 2019 Chart.js Contributors + * Released under the MIT License */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){ -/* MIT license */ -var colorNames = require(5); +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : +typeof define === 'function' && define.amd ? define(factory) : +(global = global || self, global.Chart = factory()); +}(this, (function () { 'use strict'; -module.exports = { - getRgba: getRgba, - getHsla: getHsla, - getRgb: getRgb, - getHsl: getHsl, - getHwb: getHwb, - getAlpha: getAlpha, +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +function getCjsExportFromNamespace (n) { + return n && n['default'] || n; +} + +var colorName = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; - hexString: hexString, - rgbString: rgbString, - rgbaString: rgbaString, - percentString: percentString, - percentaString: percentaString, - hslString: hslString, - hslaString: hslaString, - hwbString: hwbString, - keyword: keyword -} +var conversions = createCommonjsModule(function (module) { +/* MIT license */ -function getRgba(string) { - if (!string) { - return; - } - var abbr = /^#([a-fA-F0-9]{3})$/i, - hex = /^#([a-fA-F0-9]{6})$/i, - rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - keyword = /(\w+)/; - var rgb = [0, 0, 0], - a = 1, - match = string.match(abbr); - if (match) { - match = match[1]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i] + match[i], 16); - } - } - else if (match = string.match(hex)) { - match = match[1]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); - } - } - else if (match = string.match(rgba)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i + 1]); - } - a = parseFloat(match[4]); - } - else if (match = string.match(per)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); - } - a = parseFloat(match[4]); - } - else if (match = string.match(keyword)) { - if (match[1] == "transparent") { - return [0, 0, 0, 0]; - } - rgb = colorNames[match[1]]; - if (!rgb) { - return; - } - } +// NOTE: conversions should only return primitive values (i.e. arrays, or +// values that give correct `typeof` results). +// do not use box values types (i.e. Number(), String(), etc.) - for (var i = 0; i < rgb.length; i++) { - rgb[i] = scale(rgb[i], 0, 255); - } - if (!a && a != 0) { - a = 1; - } - else { - a = scale(a, 0, 1); - } - rgb[3] = a; - return rgb; +var reverseKeywords = {}; +for (var key in colorName) { + if (colorName.hasOwnProperty(key)) { + reverseKeywords[colorName[key]] = key; + } } -function getHsla(string) { - if (!string) { - return; - } - var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hsl); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - s = scale(parseFloat(match[2]), 0, 100), - l = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, s, l, a]; - } -} +var convert = module.exports = { + rgb: {channels: 3, labels: 'rgb'}, + hsl: {channels: 3, labels: 'hsl'}, + hsv: {channels: 3, labels: 'hsv'}, + hwb: {channels: 3, labels: 'hwb'}, + cmyk: {channels: 4, labels: 'cmyk'}, + xyz: {channels: 3, labels: 'xyz'}, + lab: {channels: 3, labels: 'lab'}, + lch: {channels: 3, labels: 'lch'}, + hex: {channels: 1, labels: ['hex']}, + keyword: {channels: 1, labels: ['keyword']}, + ansi16: {channels: 1, labels: ['ansi16']}, + ansi256: {channels: 1, labels: ['ansi256']}, + hcg: {channels: 3, labels: ['h', 'c', 'g']}, + apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, + gray: {channels: 1, labels: ['gray']} +}; -function getHwb(string) { - if (!string) { - return; - } - var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hwb); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - w = scale(parseFloat(match[2]), 0, 100), - b = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, w, b, a]; - } -} +// hide .channels and .labels properties +for (var model in convert) { + if (convert.hasOwnProperty(model)) { + if (!('channels' in convert[model])) { + throw new Error('missing channels property: ' + model); + } -function getRgb(string) { - var rgba = getRgba(string); - return rgba && rgba.slice(0, 3); -} + if (!('labels' in convert[model])) { + throw new Error('missing channel labels property: ' + model); + } -function getHsl(string) { - var hsla = getHsla(string); - return hsla && hsla.slice(0, 3); -} + if (convert[model].labels.length !== convert[model].channels) { + throw new Error('channel and label counts mismatch: ' + model); + } -function getAlpha(string) { - var vals = getRgba(string); - if (vals) { - return vals[3]; - } - else if (vals = getHsla(string)) { - return vals[3]; - } - else if (vals = getHwb(string)) { - return vals[3]; - } + var channels = convert[model].channels; + var labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], 'channels', {value: channels}); + Object.defineProperty(convert[model], 'labels', {value: labels}); + } } -// generators -function hexString(rgb) { - return "#" + hexDouble(rgb[0]) + hexDouble(rgb[1]) - + hexDouble(rgb[2]); -} +convert.rgb.hsl = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } -function rgbString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return rgbaString(rgba, alpha); - } - return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; -} + h = Math.min(h * 60, 360); -function rgbaString(rgba, alpha) { - if (alpha === undefined) { - alpha = (rgba[3] !== undefined ? rgba[3] : 1); - } - return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] - + ", " + alpha + ")"; -} + if (h < 0) { + h += 360; + } -function percentString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return percentaString(rgba, alpha); - } - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); + l = (min + max) / 2; - return "rgb(" + r + "%, " + g + "%, " + b + "%)"; -} + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } -function percentaString(rgba, alpha) { - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); - return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; -} + return [h, s * 100, l * 100]; +}; -function hslString(hsla, alpha) { - if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { - return hslaString(hsla, alpha); - } - return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; -} +convert.rgb.hsv = function (rgb) { + var rdif; + var gdif; + var bdif; + var h; + var s; + + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var v = Math.max(r, g, b); + var diff = v - Math.min(r, g, b); + var diffc = function (c) { + return (v - c) / 6 / diff + 1 / 2; + }; -function hslaString(hsla, alpha) { - if (alpha === undefined) { - alpha = (hsla[3] !== undefined ? hsla[3] : 1); - } - return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " - + alpha + ")"; -} + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = (1 / 3) + rdif - bdif; + } else if (b === v) { + h = (2 / 3) + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } -// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax -// (hwb have alpha optional & 1 is default value) -function hwbString(hwb, alpha) { - if (alpha === undefined) { - alpha = (hwb[3] !== undefined ? hwb[3] : 1); - } - return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" - + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; -} + return [ + h * 360, + s * 100, + v * 100 + ]; +}; -function keyword(rgb) { - return reverseNames[rgb.slice(0, 3)]; -} +convert.rgb.hwb = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); -// helpers -function scale(num, min, max) { - return Math.min(Math.max(min, num), max); -} + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); -function hexDouble(num) { - var str = num.toString(16).toUpperCase(); - return (str.length < 2) ? "0" + str : str; -} + return [h, w * 100, b * 100]; +}; +convert.rgb.cmyk = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + + return [c * 100, m * 100, y * 100, k * 100]; +}; -//create a list of reverse color names -var reverseNames = {}; -for (var name in colorNames) { - reverseNames[colorNames[name]] = name; -} +/** + * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance + * */ +function comparativeDistance(x, y) { + return ( + Math.pow(x[0] - y[0], 2) + + Math.pow(x[1] - y[1], 2) + + Math.pow(x[2] - y[2], 2) + ); +} + +convert.rgb.keyword = function (rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } -},{"5":5}],2:[function(require,module,exports){ -/* MIT license */ -var convert = require(4); -var string = require(1); + var currentClosestDistance = Infinity; + var currentClosestKeyword; -var Color = function (obj) { - if (obj instanceof Color) { - return obj; - } - if (!(this instanceof Color)) { - return new Color(obj); - } + for (var keyword in colorName) { + if (colorName.hasOwnProperty(keyword)) { + var value = colorName[keyword]; - this.valid = false; - this.values = { - rgb: [0, 0, 0], - hsl: [0, 0, 0], - hsv: [0, 0, 0], - hwb: [0, 0, 0], - cmyk: [0, 0, 0, 0], - alpha: 1 - }; + // Compute comparative distance + var distance = comparativeDistance(rgb, value); - // parse Color() argument - var vals; - if (typeof obj === 'string') { - vals = string.getRgba(obj); - if (vals) { - this.setValues('rgb', vals); - } else if (vals = string.getHsla(obj)) { - this.setValues('hsl', vals); - } else if (vals = string.getHwb(obj)) { - this.setValues('hwb', vals); - } - } else if (typeof obj === 'object') { - vals = obj; - if (vals.r !== undefined || vals.red !== undefined) { - this.setValues('rgb', vals); - } else if (vals.l !== undefined || vals.lightness !== undefined) { - this.setValues('hsl', vals); - } else if (vals.v !== undefined || vals.value !== undefined) { - this.setValues('hsv', vals); - } else if (vals.w !== undefined || vals.whiteness !== undefined) { - this.setValues('hwb', vals); - } else if (vals.c !== undefined || vals.cyan !== undefined) { - this.setValues('cmyk', vals); + // Check if its less, if so set as closest + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } } } + + return currentClosestKeyword; }; -Color.prototype = { - isValid: function () { - return this.valid; - }, - rgb: function () { - return this.setSpace('rgb', arguments); - }, - hsl: function () { - return this.setSpace('hsl', arguments); - }, - hsv: function () { - return this.setSpace('hsv', arguments); - }, - hwb: function () { - return this.setSpace('hwb', arguments); - }, - cmyk: function () { - return this.setSpace('cmyk', arguments); - }, +convert.keyword.rgb = function (keyword) { + return colorName[keyword]; +}; - rgbArray: function () { - return this.values.rgb; - }, - hslArray: function () { - return this.values.hsl; - }, - hsvArray: function () { - return this.values.hsv; - }, - hwbArray: function () { - var values = this.values; - if (values.alpha !== 1) { - return values.hwb.concat([values.alpha]); - } - return values.hwb; - }, - cmykArray: function () { - return this.values.cmyk; - }, - rgbaArray: function () { - var values = this.values; - return values.rgb.concat([values.alpha]); - }, - hslaArray: function () { - var values = this.values; - return values.hsl.concat([values.alpha]); - }, - alpha: function (val) { - if (val === undefined) { - return this.values.alpha; - } - this.setValues('alpha', val); - return this; - }, +convert.rgb.xyz = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; - red: function (val) { - return this.setChannel('rgb', 0, val); - }, - green: function (val) { - return this.setChannel('rgb', 1, val); - }, - blue: function (val) { - return this.setChannel('rgb', 2, val); - }, - hue: function (val) { - if (val) { - val %= 360; - val = val < 0 ? 360 + val : val; - } - return this.setChannel('hsl', 0, val); - }, - saturation: function (val) { - return this.setChannel('hsl', 1, val); - }, - lightness: function (val) { - return this.setChannel('hsl', 2, val); - }, - saturationv: function (val) { - return this.setChannel('hsv', 1, val); - }, - whiteness: function (val) { - return this.setChannel('hwb', 1, val); - }, - blackness: function (val) { - return this.setChannel('hwb', 2, val); - }, - value: function (val) { - return this.setChannel('hsv', 2, val); - }, - cyan: function (val) { - return this.setChannel('cmyk', 0, val); - }, - magenta: function (val) { - return this.setChannel('cmyk', 1, val); - }, - yellow: function (val) { - return this.setChannel('cmyk', 2, val); - }, - black: function (val) { - return this.setChannel('cmyk', 3, val); - }, + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - hexString: function () { - return string.hexString(this.values.rgb); - }, - rgbString: function () { - return string.rgbString(this.values.rgb, this.values.alpha); - }, - rgbaString: function () { - return string.rgbaString(this.values.rgb, this.values.alpha); - }, - percentString: function () { - return string.percentString(this.values.rgb, this.values.alpha); - }, - hslString: function () { - return string.hslString(this.values.hsl, this.values.alpha); - }, - hslaString: function () { - return string.hslaString(this.values.hsl, this.values.alpha); - }, - hwbString: function () { - return string.hwbString(this.values.hwb, this.values.alpha); - }, - keyword: function () { - return string.keyword(this.values.rgb, this.values.alpha); - }, + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - rgbNumber: function () { - var rgb = this.values.rgb; - return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; - }, + return [x * 100, y * 100, z * 100]; +}; - luminosity: function () { - // http://www.w3.org/TR/WCAG20/#relativeluminancedef - var rgb = this.values.rgb; - var lum = []; - for (var i = 0; i < rgb.length; i++) { - var chan = rgb[i] / 255; - lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); - } - return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; - }, +convert.rgb.lab = function (rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; - contrast: function (color2) { - // http://www.w3.org/TR/WCAG20/#contrast-ratiodef - var lum1 = this.luminosity(); - var lum2 = color2.luminosity(); - if (lum1 > lum2) { - return (lum1 + 0.05) / (lum2 + 0.05); + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.hsl.rgb = function (hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; } - return (lum2 + 0.05) / (lum1 + 0.05); - }, - level: function (color2) { - var contrastRatio = this.contrast(color2); - if (contrastRatio >= 7.1) { - return 'AAA'; + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; } - return (contrastRatio >= 4.5) ? 'AA' : ''; - }, + rgb[i] = val * 255; + } - dark: function () { - // YIQ equation from http://24ways.org/2010/calculating-color-contrast - var rgb = this.values.rgb; - var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; - return yiq < 128; - }, + return rgb; +}; - light: function () { - return !this.dark(); - }, +convert.hsl.hsv = function (hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + + return [h, sv * 100, v * 100]; +}; - negate: function () { - var rgb = []; - for (var i = 0; i < 3; i++) { - rgb[i] = 255 - this.values.rgb[i]; - } - this.setValues('rgb', rgb); - return this; - }, +convert.hsv.rgb = function (hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - (s * f)); + var t = 255 * v * (1 - (s * (1 - f))); + v *= 255; + + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +}; - lighten: function (ratio) { - var hsl = this.values.hsl; - hsl[2] += hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, +convert.hsv.hsl = function (hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= (lmin <= 1) ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + + return [h, sl * 100, l * 100]; +}; - darken: function (ratio) { - var hsl = this.values.hsl; - hsl[2] -= hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +convert.hwb.rgb = function (hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } - saturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] += hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; - desaturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] -= hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, + if ((i & 0x01) !== 0) { + f = 1 - f; + } - whiten: function (ratio) { - var hwb = this.values.hwb; - hwb[1] += hwb[1] * ratio; - this.setValues('hwb', hwb); - return this; - }, + n = wh + f * (v - wh); // linear interpolation - blacken: function (ratio) { - var hwb = this.values.hwb; - hwb[2] += hwb[2] * ratio; - this.setValues('hwb', hwb); - return this; - }, + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } - greyscale: function () { - var rgb = this.values.rgb; - // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale - var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; - this.setValues('rgb', [val, val, val]); - return this; - }, + return [r * 255, g * 255, b * 255]; +}; - clearer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha - (alpha * ratio)); - return this; - }, +convert.cmyk.rgb = function (cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; - opaquer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha + (alpha * ratio)); - return this; - }, + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); - rotate: function (degrees) { - var hsl = this.values.hsl; - var hue = (hsl[0] + degrees) % 360; - hsl[0] = hue < 0 ? 360 + hue : hue; - this.setValues('hsl', hsl); - return this; - }, + return [r * 255, g * 255, b * 255]; +}; - /** - * Ported from sass implementation in C - * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 - */ - mix: function (mixinColor, weight) { - var color1 = this; - var color2 = mixinColor; - var p = weight === undefined ? 0.5 : weight; +convert.xyz.rgb = function (xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; - var w = 2 * p - 1; - var a = color1.alpha() - color2.alpha(); + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; + // assume sRGB + r = r > 0.0031308 + ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r * 12.92; - return this - .rgb( - w1 * color1.red() + w2 * color2.red(), - w1 * color1.green() + w2 * color2.green(), - w1 * color1.blue() + w2 * color2.blue() - ) - .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); - }, - - toJSON: function () { - return this.rgb(); - }, + g = g > 0.0031308 + ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g * 12.92; - clone: function () { - // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, - // making the final build way to big to embed in Chart.js. So let's do it manually, - // assuming that values to clone are 1 dimension arrays containing only numbers, - // except 'alpha' which is a number. - var result = new Color(); - var source = this.values; - var target = result.values; - var value, type; + b = b > 0.0031308 + ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b * 12.92; - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - value = source[prop]; - type = ({}).toString.call(value); - if (type === '[object Array]') { - target[prop] = value.slice(0); - } else if (type === '[object Number]') { - target[prop] = value; - } else { - console.error('unexpected color value:', value); - } - } - } + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); - return result; - } + return [r * 255, g * 255, b * 255]; }; -Color.prototype.spaces = { - rgb: ['red', 'green', 'blue'], - hsl: ['hue', 'saturation', 'lightness'], - hsv: ['hue', 'saturation', 'value'], - hwb: ['hue', 'whiteness', 'blackness'], - cmyk: ['cyan', 'magenta', 'yellow', 'black'] +convert.xyz.lab = function (xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; }; -Color.prototype.maxes = { - rgb: [255, 255, 255], - hsl: [360, 100, 100], - hsv: [360, 100, 100], - hwb: [360, 100, 100], - cmyk: [100, 100, 100, 100] +convert.lab.xyz = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + + x *= 95.047; + y *= 100; + z *= 108.883; + + return [x, y, z]; }; -Color.prototype.getValues = function (space) { - var values = this.values; - var vals = {}; +convert.lab.lch = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; - for (var i = 0; i < space.length; i++) { - vals[space.charAt(i)] = values[space][i]; - } + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; - if (values.alpha !== 1) { - vals.a = values.alpha; + if (h < 0) { + h += 360; } - // {r: 255, g: 255, b: 255, a: 0.4} - return vals; + c = Math.sqrt(a * a + b * b); + + return [l, c, h]; }; -Color.prototype.setValues = function (space, vals) { - var values = this.values; - var spaces = this.spaces; - var maxes = this.maxes; - var alpha = 1; - var i; +convert.lch.lab = function (lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; - this.valid = true; + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); - if (space === 'alpha') { - alpha = vals; - } else if (vals.length) { - // [10, 10, 10] - values[space] = vals.slice(0, space.length); - alpha = vals[space.length]; - } else if (vals[space.charAt(0)] !== undefined) { - // {r: 10, g: 10, b: 10} - for (i = 0; i < space.length; i++) { - values[space][i] = vals[space.charAt(i)]; - } + return [l, a, b]; +}; - alpha = vals.a; - } else if (vals[spaces[space][0]] !== undefined) { - // {red: 10, green: 10, blue: 10} - var chans = spaces[space]; +convert.rgb.ansi16 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization - for (i = 0; i < space.length; i++) { - values[space][i] = vals[chans[i]]; - } + value = Math.round(value / 50); - alpha = vals.alpha; + if (value === 0) { + return 30; } - values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + var ansi = 30 + + ((Math.round(b / 255) << 2) + | (Math.round(g / 255) << 1) + | Math.round(r / 255)); - if (space === 'alpha') { - return false; + if (value === 2) { + ansi += 60; } - var capped; + return ansi; +}; - // cap values of the space prior converting all values - for (i = 0; i < space.length; i++) { - capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); - values[space][i] = Math.round(capped); - } +convert.hsv.ansi16 = function (args) { + // optimization here; we already know the value and don't need to get + // it converted for us. + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; - // convert to all the other color spaces - for (var sname in spaces) { - if (sname !== space) { - values[sname] = convert[space][sname](values[space]); +convert.rgb.ansi256 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + + // we use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (r === g && g === b) { + if (r < 8) { + return 16; + } + + if (r > 248) { + return 231; } + + return Math.round(((r - 8) / 247) * 24) + 232; } - return true; + var ansi = 16 + + (36 * Math.round(r / 255 * 5)) + + (6 * Math.round(g / 255 * 5)) + + Math.round(b / 255 * 5); + + return ansi; }; -Color.prototype.setSpace = function (space, args) { - var vals = args[0]; +convert.ansi16.rgb = function (args) { + var color = args % 10; - if (vals === undefined) { - // color.rgb() - return this.getValues(space); - } + // handle greyscale + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } - // color.rgb(10, 10, 10) - if (typeof vals === 'number') { - vals = Array.prototype.slice.call(args); + color = color / 10.5 * 255; + + return [color, color, color]; } - this.setValues(space, vals); - return this; + var mult = (~~(args > 50) + 1) * 0.5; + var r = ((color & 1) * mult) * 255; + var g = (((color >> 1) & 1) * mult) * 255; + var b = (((color >> 2) & 1) * mult) * 255; + + return [r, g, b]; }; -Color.prototype.setChannel = function (space, index, val) { - var svalues = this.values[space]; - if (val === undefined) { - // color.red() - return svalues[index]; - } else if (val === svalues[index]) { - // color.red(color.red()) - return this; +convert.ansi256.rgb = function (args) { + // handle greyscale + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; } - // color.red(100) - svalues[index] = val; - this.setValues(space, svalues); + args -= 16; - return this; + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = (rem % 6) / 5 * 255; + + return [r, g, b]; }; -if (typeof window !== 'undefined') { - window.Color = Color; -} +convert.rgb.hex = function (args) { + var integer = ((Math.round(args[0]) & 0xFF) << 16) + + ((Math.round(args[1]) & 0xFF) << 8) + + (Math.round(args[2]) & 0xFF); -module.exports = Color; + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; -},{"1":1,"4":4}],3:[function(require,module,exports){ -/* MIT license */ +convert.hex.rgb = function (args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } -module.exports = { - rgb2hsl: rgb2hsl, - rgb2hsv: rgb2hsv, - rgb2hwb: rgb2hwb, - rgb2cmyk: rgb2cmyk, - rgb2keyword: rgb2keyword, - rgb2xyz: rgb2xyz, - rgb2lab: rgb2lab, - rgb2lch: rgb2lch, - - hsl2rgb: hsl2rgb, - hsl2hsv: hsl2hsv, - hsl2hwb: hsl2hwb, - hsl2cmyk: hsl2cmyk, - hsl2keyword: hsl2keyword, - - hsv2rgb: hsv2rgb, - hsv2hsl: hsv2hsl, - hsv2hwb: hsv2hwb, - hsv2cmyk: hsv2cmyk, - hsv2keyword: hsv2keyword, - - hwb2rgb: hwb2rgb, - hwb2hsl: hwb2hsl, - hwb2hsv: hwb2hsv, - hwb2cmyk: hwb2cmyk, - hwb2keyword: hwb2keyword, - - cmyk2rgb: cmyk2rgb, - cmyk2hsl: cmyk2hsl, - cmyk2hsv: cmyk2hsv, - cmyk2hwb: cmyk2hwb, - cmyk2keyword: cmyk2keyword, - - keyword2rgb: keyword2rgb, - keyword2hsl: keyword2hsl, - keyword2hsv: keyword2hsv, - keyword2hwb: keyword2hwb, - keyword2cmyk: keyword2cmyk, - keyword2lab: keyword2lab, - keyword2xyz: keyword2xyz, - - xyz2rgb: xyz2rgb, - xyz2lab: xyz2lab, - xyz2lch: xyz2lch, - - lab2xyz: lab2xyz, - lab2rgb: lab2rgb, - lab2lch: lab2lch, - - lch2lab: lch2lab, - lch2xyz: lch2xyz, - lch2rgb: lch2rgb -} + var colorString = match[0]; + if (match[0].length === 3) { + colorString = colorString.split('').map(function (char) { + return char + char; + }).join(''); + } -function rgb2hsl(rgb) { - var r = rgb[0]/255, - g = rgb[1]/255, - b = rgb[2]/255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, l; + var integer = parseInt(colorString, 16); + var r = (integer >> 16) & 0xFF; + var g = (integer >> 8) & 0xFF; + var b = integer & 0xFF; - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g)/ delta; + return [r, g, b]; +}; - h = Math.min(h * 60, 360); +convert.rgb.hcg = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = (max - min); + var grayscale; + var hue; + + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } - if (h < 0) - h += 360; + if (chroma <= 0) { + hue = 0; + } else + if (max === r) { + hue = ((g - b) / chroma) % 6; + } else + if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } - l = (min + max) / 2; + hue /= 6; + hue %= 1; - if (max == min) - s = 0; - else if (l <= 0.5) - s = delta / (max + min); - else - s = delta / (2 - max - min); + return [hue * 360, chroma * 100, grayscale * 100]; +}; - return [h, s * 100, l * 100]; -} +convert.hsl.hcg = function (hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; -function rgb2hsv(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, v; - - if (max == 0) - s = 0; - else - s = (delta/max * 1000)/10; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g) / delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; -} + if (l < 0.5) { + c = 2.0 * s * l; + } else { + c = 2.0 * s * (1.0 - l); + } -function rgb2hwb(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - h = rgb2hsl(rgb)[0], - w = 1/255 * Math.min(r, Math.min(g, b)), - b = 1 - 1/255 * Math.max(r, Math.max(g, b)); + if (c < 1.0) { + f = (l - 0.5 * c) / (1.0 - c); + } - return [h, w * 100, b * 100]; -} + return [hsl[0], c * 100, f * 100]; +}; -function rgb2cmyk(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255, - c, m, y, k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - return [c * 100, m * 100, y * 100, k * 100]; -} +convert.hsv.hcg = function (hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; -function rgb2keyword(rgb) { - return reverseKeywords[JSON.stringify(rgb)]; -} + var c = s * v; + var f = 0; -function rgb2xyz(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255; + if (c < 1.0) { + f = (v - c) / (1 - c); + } - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + return [hsv[0], c * 100, f * 100]; +}; - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); +convert.hcg.rgb = function (hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; - return [x * 100, y *100, z * 100]; -} + if (c === 0.0) { + return [g * 255, g * 255, g * 255]; + } -function rgb2lab(rgb) { - var xyz = rgb2xyz(rgb), - x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; + var pure = [0, 0, 0]; + var hi = (h % 1) * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; pure[1] = v; pure[2] = 0; break; + case 1: + pure[0] = w; pure[1] = 1; pure[2] = 0; break; + case 2: + pure[0] = 0; pure[1] = 1; pure[2] = v; break; + case 3: + pure[0] = 0; pure[1] = w; pure[2] = 1; break; + case 4: + pure[0] = v; pure[1] = 0; pure[2] = 1; break; + default: + pure[0] = 1; pure[1] = 0; pure[2] = w; + } - x /= 95.047; - y /= 100; - z /= 108.883; + mg = (1.0 - c) * g; - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); +convert.hcg.hsv = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; - return [l, a, b]; -} + var v = c + g * (1.0 - c); + var f = 0; -function rgb2lch(args) { - return lab2lch(rgb2lab(args)); -} + if (v > 0.0) { + f = c / v; + } -function hsl2rgb(hsl) { - var h = hsl[0] / 360, - s = hsl[1] / 100, - l = hsl[2] / 100, - t1, t2, t3, rgb, val; - - if (s == 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) - t2 = l * (1 + s); - else - t2 = l + s - l * s; - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * - (i - 1); - t3 < 0 && t3++; - t3 > 1 && t3--; - - if (6 * t3 < 1) - val = t1 + (t2 - t1) * 6 * t3; - else if (2 * t3 < 1) - val = t2; - else if (3 * t3 < 2) - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - else - val = t1; - - rgb[i] = val * 255; - } - - return rgb; -} + return [hcg[0], f * 100, v * 100]; +}; -function hsl2hsv(hsl) { - var h = hsl[0], - s = hsl[1] / 100, - l = hsl[2] / 100, - sv, v; - - if(l === 0) { - // no need to do calc on black - // also avoids divide by 0 error - return [0, 0, 0]; - } - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - v = (l + s) / 2; - sv = (2 * s) / (l + s); - return [h, sv * 100, v * 100]; -} +convert.hcg.hsl = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; -function hsl2hwb(args) { - return rgb2hwb(hsl2rgb(args)); -} + var l = g * (1.0 - c) + 0.5 * c; + var s = 0; -function hsl2cmyk(args) { - return rgb2cmyk(hsl2rgb(args)); -} + if (l > 0.0 && l < 0.5) { + s = c / (2 * l); + } else + if (l >= 0.5 && l < 1.0) { + s = c / (2 * (1 - l)); + } -function hsl2keyword(args) { - return rgb2keyword(hsl2rgb(args)); -} + return [hcg[0], s * 100, l * 100]; +}; +convert.hcg.hwb = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1.0 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; -function hsv2rgb(hsv) { - var h = hsv[0] / 60, - s = hsv[1] / 100, - v = hsv[2] / 100, - hi = Math.floor(h) % 6; - - var f = h - Math.floor(h), - p = 255 * v * (1 - s), - q = 255 * v * (1 - (s * f)), - t = 255 * v * (1 - (s * (1 - f))), - v = 255 * v; - - switch(hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -} +convert.hwb.hcg = function (hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; -function hsv2hsl(hsv) { - var h = hsv[0], - s = hsv[1] / 100, - v = hsv[2] / 100, - sl, l; - - l = (2 - s) * v; - sl = s * v; - sl /= (l <= 1) ? l : 2 - l; - sl = sl || 0; - l /= 2; - return [h, sl * 100, l * 100]; -} + if (c < 1) { + g = (v - c) / (1 - c); + } -function hsv2hwb(args) { - return rgb2hwb(hsv2rgb(args)) -} + return [hwb[0], c * 100, g * 100]; +}; -function hsv2cmyk(args) { - return rgb2cmyk(hsv2rgb(args)); -} +convert.apple.rgb = function (apple) { + return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; +}; -function hsv2keyword(args) { - return rgb2keyword(hsv2rgb(args)); -} +convert.rgb.apple = function (rgb) { + return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; +}; -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -function hwb2rgb(hwb) { - var h = hwb[0] / 360, - wh = hwb[1] / 100, - bl = hwb[2] / 100, - ratio = wh + bl, - i, v, f, n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - if ((i & 0x01) != 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation - - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -} +convert.gray.rgb = function (args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; -function hwb2hsl(args) { - return rgb2hsl(hwb2rgb(args)); -} +convert.gray.hsl = convert.gray.hsv = function (args) { + return [0, 0, args[0]]; +}; -function hwb2hsv(args) { - return rgb2hsv(hwb2rgb(args)); -} +convert.gray.hwb = function (gray) { + return [0, 100, gray[0]]; +}; -function hwb2cmyk(args) { - return rgb2cmyk(hwb2rgb(args)); -} +convert.gray.cmyk = function (gray) { + return [0, 0, 0, gray[0]]; +}; -function hwb2keyword(args) { - return rgb2keyword(hwb2rgb(args)); -} +convert.gray.lab = function (gray) { + return [gray[0], 0, 0]; +}; -function cmyk2rgb(cmyk) { - var c = cmyk[0] / 100, - m = cmyk[1] / 100, - y = cmyk[2] / 100, - k = cmyk[3] / 100, - r, g, b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - return [r * 255, g * 255, b * 255]; -} +convert.gray.hex = function (gray) { + var val = Math.round(gray[0] / 100 * 255) & 0xFF; + var integer = (val << 16) + (val << 8) + val; -function cmyk2hsl(args) { - return rgb2hsl(cmyk2rgb(args)); -} + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; -function cmyk2hsv(args) { - return rgb2hsv(cmyk2rgb(args)); -} +convert.rgb.gray = function (rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; +}; +}); +var conversions_1 = conversions.rgb; +var conversions_2 = conversions.hsl; +var conversions_3 = conversions.hsv; +var conversions_4 = conversions.hwb; +var conversions_5 = conversions.cmyk; +var conversions_6 = conversions.xyz; +var conversions_7 = conversions.lab; +var conversions_8 = conversions.lch; +var conversions_9 = conversions.hex; +var conversions_10 = conversions.keyword; +var conversions_11 = conversions.ansi16; +var conversions_12 = conversions.ansi256; +var conversions_13 = conversions.hcg; +var conversions_14 = conversions.apple; +var conversions_15 = conversions.gray; + +/* + this function routes a model to all other models. + + all functions that are routed have a property `.conversion` attached + to the returned synthetic function. This property is an array + of strings, each with the steps in between the 'from' and 'to' + color models (inclusive). + + conversions that are not possible simply are not included. +*/ -function cmyk2hwb(args) { - return rgb2hwb(cmyk2rgb(args)); -} +function buildGraph() { + var graph = {}; + // https://jsperf.com/object-keys-vs-for-in-with-closure/3 + var models = Object.keys(conversions); + + for (var len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } -function cmyk2keyword(args) { - return rgb2keyword(cmyk2rgb(args)); + return graph; } +// https://en.wikipedia.org/wiki/Breadth-first_search +function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; // unshift -> queue -> pop -function xyz2rgb(xyz) { - var x = xyz[0] / 100, - y = xyz[1] / 100, - z = xyz[2] / 100, - r, g, b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + graph[fromModel].distance = 0; - // assume sRGB - r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92); + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions[current]); - g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92); + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; - b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92); - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } - return [r * 255, g * 255, b * 255]; + return graph; } -function xyz2lab(xyz) { - var x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; +function link(from, to) { + return function (args) { + return to(from(args)); + }; +} - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); +function wrapConversion(toModel, graph) { + var path = [graph[toModel].parent, toModel]; + var fn = conversions[graph[toModel].parent][toModel]; - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } - return [l, a, b]; + fn.conversion = path; + return fn; } -function xyz2lch(args) { - return lab2lch(xyz2lab(args)); -} +var route = function (fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; -function lab2xyz(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - x, y, z, y2; + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; - if (l <= 8) { - y = (l * 100) / 903.3; - y2 = (7.787 * (y / 100)) + (16 / 116); - } else { - y = 100 * Math.pow((l + 16) / 116, 3); - y2 = Math.pow(y / 100, 1/3); - } + if (node.parent === null) { + // no possible conversion, or this node is the source model. + continue; + } - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); + conversion[toModel] = wrapConversion(toModel, graph); + } - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); + return conversion; +}; - return [x, y, z]; -} +var convert = {}; -function lab2lch(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - hr, h, c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - if (h < 0) { - h += 360; - } - c = Math.sqrt(a * a + b * b); - return [l, c, h]; -} +var models = Object.keys(conversions); -function lab2rgb(args) { - return xyz2rgb(lab2xyz(args)); -} +function wrapRaw(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } -function lch2lab(lch) { - var l = lch[0], - c = lch[1], - h = lch[2], - a, b, hr; + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - return [l, a, b]; -} + return fn(args); + }; -function lch2xyz(args) { - return lab2xyz(lch2lab(args)); -} + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } -function lch2rgb(args) { - return lab2rgb(lch2lab(args)); + return wrappedFn; } -function keyword2rgb(keyword) { - return cssKeywords[keyword]; -} +function wrapRounded(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } -function keyword2hsl(args) { - return rgb2hsl(keyword2rgb(args)); -} + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } -function keyword2hsv(args) { - return rgb2hsv(keyword2rgb(args)); -} + var result = fn(args); -function keyword2hwb(args) { - return rgb2hwb(keyword2rgb(args)); -} + // we're assuming the result is an array here. + // see notice in conversions.js; don't use box types + // in conversion functions. + if (typeof result === 'object') { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } -function keyword2cmyk(args) { - return rgb2cmyk(keyword2rgb(args)); -} + return result; + }; -function keyword2lab(args) { - return rgb2lab(keyword2rgb(args)); -} + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } -function keyword2xyz(args) { - return rgb2xyz(keyword2rgb(args)); + return wrappedFn; } -var cssKeywords = { - aliceblue: [240,248,255], - antiquewhite: [250,235,215], - aqua: [0,255,255], - aquamarine: [127,255,212], - azure: [240,255,255], - beige: [245,245,220], - bisque: [255,228,196], - black: [0,0,0], - blanchedalmond: [255,235,205], - blue: [0,0,255], - blueviolet: [138,43,226], - brown: [165,42,42], - burlywood: [222,184,135], - cadetblue: [95,158,160], - chartreuse: [127,255,0], - chocolate: [210,105,30], - coral: [255,127,80], - cornflowerblue: [100,149,237], - cornsilk: [255,248,220], - crimson: [220,20,60], - cyan: [0,255,255], - darkblue: [0,0,139], - darkcyan: [0,139,139], - darkgoldenrod: [184,134,11], - darkgray: [169,169,169], - darkgreen: [0,100,0], - darkgrey: [169,169,169], - darkkhaki: [189,183,107], - darkmagenta: [139,0,139], - darkolivegreen: [85,107,47], - darkorange: [255,140,0], - darkorchid: [153,50,204], - darkred: [139,0,0], - darksalmon: [233,150,122], - darkseagreen: [143,188,143], - darkslateblue: [72,61,139], - darkslategray: [47,79,79], - darkslategrey: [47,79,79], - darkturquoise: [0,206,209], - darkviolet: [148,0,211], - deeppink: [255,20,147], - deepskyblue: [0,191,255], - dimgray: [105,105,105], - dimgrey: [105,105,105], - dodgerblue: [30,144,255], - firebrick: [178,34,34], - floralwhite: [255,250,240], - forestgreen: [34,139,34], - fuchsia: [255,0,255], - gainsboro: [220,220,220], - ghostwhite: [248,248,255], - gold: [255,215,0], - goldenrod: [218,165,32], - gray: [128,128,128], - green: [0,128,0], - greenyellow: [173,255,47], - grey: [128,128,128], - honeydew: [240,255,240], - hotpink: [255,105,180], - indianred: [205,92,92], - indigo: [75,0,130], - ivory: [255,255,240], - khaki: [240,230,140], - lavender: [230,230,250], - lavenderblush: [255,240,245], - lawngreen: [124,252,0], - lemonchiffon: [255,250,205], - lightblue: [173,216,230], - lightcoral: [240,128,128], - lightcyan: [224,255,255], - lightgoldenrodyellow: [250,250,210], - lightgray: [211,211,211], - lightgreen: [144,238,144], - lightgrey: [211,211,211], - lightpink: [255,182,193], - lightsalmon: [255,160,122], - lightseagreen: [32,178,170], - lightskyblue: [135,206,250], - lightslategray: [119,136,153], - lightslategrey: [119,136,153], - lightsteelblue: [176,196,222], - lightyellow: [255,255,224], - lime: [0,255,0], - limegreen: [50,205,50], - linen: [250,240,230], - magenta: [255,0,255], - maroon: [128,0,0], - mediumaquamarine: [102,205,170], - mediumblue: [0,0,205], - mediumorchid: [186,85,211], - mediumpurple: [147,112,219], - mediumseagreen: [60,179,113], - mediumslateblue: [123,104,238], - mediumspringgreen: [0,250,154], - mediumturquoise: [72,209,204], - mediumvioletred: [199,21,133], - midnightblue: [25,25,112], - mintcream: [245,255,250], - mistyrose: [255,228,225], - moccasin: [255,228,181], - navajowhite: [255,222,173], - navy: [0,0,128], - oldlace: [253,245,230], - olive: [128,128,0], - olivedrab: [107,142,35], - orange: [255,165,0], - orangered: [255,69,0], - orchid: [218,112,214], - palegoldenrod: [238,232,170], - palegreen: [152,251,152], - paleturquoise: [175,238,238], - palevioletred: [219,112,147], - papayawhip: [255,239,213], - peachpuff: [255,218,185], - peru: [205,133,63], - pink: [255,192,203], - plum: [221,160,221], - powderblue: [176,224,230], - purple: [128,0,128], - rebeccapurple: [102, 51, 153], - red: [255,0,0], - rosybrown: [188,143,143], - royalblue: [65,105,225], - saddlebrown: [139,69,19], - salmon: [250,128,114], - sandybrown: [244,164,96], - seagreen: [46,139,87], - seashell: [255,245,238], - sienna: [160,82,45], - silver: [192,192,192], - skyblue: [135,206,235], - slateblue: [106,90,205], - slategray: [112,128,144], - slategrey: [112,128,144], - snow: [255,250,250], - springgreen: [0,255,127], - steelblue: [70,130,180], - tan: [210,180,140], - teal: [0,128,128], - thistle: [216,191,216], - tomato: [255,99,71], - turquoise: [64,224,208], - violet: [238,130,238], - wheat: [245,222,179], - white: [255,255,255], - whitesmoke: [245,245,245], - yellow: [255,255,0], - yellowgreen: [154,205,50] -}; - -var reverseKeywords = {}; -for (var key in cssKeywords) { - reverseKeywords[JSON.stringify(cssKeywords[key])] = key; -} +models.forEach(function (fromModel) { + convert[fromModel] = {}; -},{}],4:[function(require,module,exports){ -var conversions = require(3); + Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); + Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); -var convert = function() { - return new Converter(); -} + var routes = route(fromModel); + var routeModels = Object.keys(routes); -for (var func in conversions) { - // export Raw versions - convert[func + "Raw"] = (function(func) { - // accept array or plain args - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - return conversions[func](arg); - } - })(func); - - var pair = /(\w+)2(\w+)/.exec(func), - from = pair[1], - to = pair[2]; - - // export rgb2hsl and ["rgb"]["hsl"] - convert[from] = convert[from] || {}; - - convert[from][to] = convert[func] = (function(func) { - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - - var val = conversions[func](arg); - if (typeof val == "string" || val === undefined) - return val; // keyword - - for (var i = 0; i < val.length; i++) - val[i] = Math.round(val[i]); - return val; - } - })(func); -} + routeModels.forEach(function (toModel) { + var fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); +}); -/* Converter does lazy conversion and caching */ -var Converter = function() { - this.convs = {}; +var colorConvert = convert; + +var colorName$1 = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] }; -/* Either get the values for a space or - set the values for a space, depending on args */ -Converter.prototype.routeSpace = function(space, args) { - var values = args[0]; - if (values === undefined) { - // color.rgb() - return this.getValues(space); - } - // color.rgb(10, 10, 10) - if (typeof values == "number") { - values = Array.prototype.slice.call(args); - } +/* MIT license */ - return this.setValues(space, values); -}; - -/* Set the values for a space, invalidating cache */ -Converter.prototype.setValues = function(space, values) { - this.space = space; - this.convs = {}; - this.convs[space] = values; - return this; -}; - -/* Get the values for a space. If there's already - a conversion for the space, fetch it, otherwise - compute it */ -Converter.prototype.getValues = function(space) { - var vals = this.convs[space]; - if (!vals) { - var fspace = this.space, - from = this.convs[fspace]; - vals = convert[fspace][space](from); - - this.convs[space] = vals; - } - return vals; -}; -["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { - Converter.prototype[space] = function(vals) { - return this.routeSpace(space, arguments); - } -}); +var colorString = { + getRgba: getRgba, + getHsla: getHsla, + getRgb: getRgb, + getHsl: getHsl, + getHwb: getHwb, + getAlpha: getAlpha, -module.exports = convert; -},{"3":3}],5:[function(require,module,exports){ -'use strict' - -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] + hexString: hexString, + rgbString: rgbString, + rgbaString: rgbaString, + percentString: percentString, + percentaString: percentaString, + hslString: hslString, + hslaString: hslaString, + hwbString: hwbString, + keyword: keyword }; -},{}],6:[function(require,module,exports){ -//! moment.js -//! version : 2.20.1 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, (function () { 'use strict'; - -var hookCallback; +function getRgba(string) { + if (!string) { + return; + } + var abbr = /^#([a-fA-F0-9]{3,4})$/i, + hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i, + rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + keyword = /(\w+)/; -function hooks () { - return hookCallback.apply(null, arguments); -} + var rgb = [0, 0, 0], + a = 1, + match = string.match(abbr), + hexAlpha = ""; + if (match) { + match = match[1]; + hexAlpha = match[3]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i] + match[i], 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(hex)) { + hexAlpha = match[2]; + match = match[1]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(rgba)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i + 1]); + } + a = parseFloat(match[4]); + } + else if (match = string.match(per)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); + } + a = parseFloat(match[4]); + } + else if (match = string.match(keyword)) { + if (match[1] == "transparent") { + return [0, 0, 0, 0]; + } + rgb = colorName$1[match[1]]; + if (!rgb) { + return; + } + } -// This is done to register the method called with moment() -// without creating circular dependencies. -function setHookCallback (callback) { - hookCallback = callback; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = scale(rgb[i], 0, 255); + } + if (!a && a != 0) { + a = 1; + } + else { + a = scale(a, 0, 1); + } + rgb[3] = a; + return rgb; } -function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +function getHsla(string) { + if (!string) { + return; + } + var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hsl); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + s = scale(parseFloat(match[2]), 0, 100), + l = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, s, l, a]; + } } -function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; +function getHwb(string) { + if (!string) { + return; + } + var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hwb); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + w = scale(parseFloat(match[2]), 0, 100), + b = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, w, b, a]; + } } -function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return (Object.getOwnPropertyNames(obj).length === 0); - } else { - var k; - for (k in obj) { - if (obj.hasOwnProperty(k)) { - return false; - } - } - return true; - } +function getRgb(string) { + var rgba = getRgba(string); + return rgba && rgba.slice(0, 3); } -function isUndefined(input) { - return input === void 0; +function getHsl(string) { + var hsla = getHsla(string); + return hsla && hsla.slice(0, 3); } -function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +function getAlpha(string) { + var vals = getRgba(string); + if (vals) { + return vals[3]; + } + else if (vals = getHsla(string)) { + return vals[3]; + } + else if (vals = getHwb(string)) { + return vals[3]; + } } -function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +// generators +function hexString(rgba, a) { + var a = (a !== undefined && rgba.length === 3) ? a : rgba[3]; + return "#" + hexDouble(rgba[0]) + + hexDouble(rgba[1]) + + hexDouble(rgba[2]) + + ( + (a >= 0 && a < 1) + ? hexDouble(Math.round(a * 255)) + : "" + ); } -function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; +function rgbString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return rgbaString(rgba, alpha); + } + return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; } -function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); +function rgbaString(rgba, alpha) { + if (alpha === undefined) { + alpha = (rgba[3] !== undefined ? rgba[3] : 1); + } + return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + + ", " + alpha + ")"; } -function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } +function percentString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return percentaString(rgba, alpha); + } + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); - return a; + return "rgb(" + r + "%, " + g + "%, " + b + "%)"; } -function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); +function percentaString(rgba, alpha) { + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); + return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; } -function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false - }; +function hslString(hsla, alpha) { + if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { + return hslaString(hsla, alpha); + } + return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; } -function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; +function hslaString(hsla, alpha) { + if (alpha === undefined) { + alpha = (hsla[3] !== undefined ? hsla[3] : 1); + } + return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + + alpha + ")"; } -var some; -if (Array.prototype.some) { - some = Array.prototype.some; -} else { - some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - - return false; - }; +// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax +// (hwb have alpha optional & 1 is default value) +function hwbString(hwb, alpha) { + if (alpha === undefined) { + alpha = (hwb[3] !== undefined ? hwb[3] : 1); + } + return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" + + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; } -function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } - else { - return isNowValid; - } - } - return m._isValid; +function keyword(rgb) { + return reverseNames[rgb.slice(0, 3)]; } -function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; +// helpers +function scale(num, min, max) { + return Math.min(Math.max(min, num), max); } -// Plugins that add properties should also add the key here (null value), -// so we can properly clone ourselves. -var momentProperties = hooks.momentProperties = []; - -function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - - return to; +function hexDouble(num) { + var str = num.toString(16).toUpperCase(); + return (str.length < 2) ? "0" + str : str; } -var updateInProgress = false; - -// Moment prototype object -function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } -} -function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +//create a list of reverse color names +var reverseNames = {}; +for (var name in colorName$1) { + reverseNames[colorName$1[name]] = name; } -function absFloor (number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } -} +/* MIT license */ -function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - return value; -} +var Color = function (obj) { + if (obj instanceof Color) { + return obj; + } + if (!(this instanceof Color)) { + return new Color(obj); + } -// compare two arrays, return the number of differences -function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; -} + this.valid = false; + this.values = { + rgb: [0, 0, 0], + hsl: [0, 0, 0], + hsv: [0, 0, 0], + hwb: [0, 0, 0], + cmyk: [0, 0, 0, 0], + alpha: 1 + }; -function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } -} + // parse Color() argument + var vals; + if (typeof obj === 'string') { + vals = colorString.getRgba(obj); + if (vals) { + this.setValues('rgb', vals); + } else if (vals = colorString.getHsla(obj)) { + this.setValues('hsl', vals); + } else if (vals = colorString.getHwb(obj)) { + this.setValues('hwb', vals); + } + } else if (typeof obj === 'object') { + vals = obj; + if (vals.r !== undefined || vals.red !== undefined) { + this.setValues('rgb', vals); + } else if (vals.l !== undefined || vals.lightness !== undefined) { + this.setValues('hsl', vals); + } else if (vals.v !== undefined || vals.value !== undefined) { + this.setValues('hsv', vals); + } else if (vals.w !== undefined || vals.whiteness !== undefined) { + this.setValues('hwb', vals); + } else if (vals.c !== undefined || vals.cyan !== undefined) { + this.setValues('cmyk', vals); + } + } +}; + +Color.prototype = { + isValid: function () { + return this.valid; + }, + rgb: function () { + return this.setSpace('rgb', arguments); + }, + hsl: function () { + return this.setSpace('hsl', arguments); + }, + hsv: function () { + return this.setSpace('hsv', arguments); + }, + hwb: function () { + return this.setSpace('hwb', arguments); + }, + cmyk: function () { + return this.setSpace('cmyk', arguments); + }, + + rgbArray: function () { + return this.values.rgb; + }, + hslArray: function () { + return this.values.hsl; + }, + hsvArray: function () { + return this.values.hsv; + }, + hwbArray: function () { + var values = this.values; + if (values.alpha !== 1) { + return values.hwb.concat([values.alpha]); + } + return values.hwb; + }, + cmykArray: function () { + return this.values.cmyk; + }, + rgbaArray: function () { + var values = this.values; + return values.rgb.concat([values.alpha]); + }, + hslaArray: function () { + var values = this.values; + return values.hsl.concat([values.alpha]); + }, + alpha: function (val) { + if (val === undefined) { + return this.values.alpha; + } + this.setValues('alpha', val); + return this; + }, + + red: function (val) { + return this.setChannel('rgb', 0, val); + }, + green: function (val) { + return this.setChannel('rgb', 1, val); + }, + blue: function (val) { + return this.setChannel('rgb', 2, val); + }, + hue: function (val) { + if (val) { + val %= 360; + val = val < 0 ? 360 + val : val; + } + return this.setChannel('hsl', 0, val); + }, + saturation: function (val) { + return this.setChannel('hsl', 1, val); + }, + lightness: function (val) { + return this.setChannel('hsl', 2, val); + }, + saturationv: function (val) { + return this.setChannel('hsv', 1, val); + }, + whiteness: function (val) { + return this.setChannel('hwb', 1, val); + }, + blackness: function (val) { + return this.setChannel('hwb', 2, val); + }, + value: function (val) { + return this.setChannel('hsv', 2, val); + }, + cyan: function (val) { + return this.setChannel('cmyk', 0, val); + }, + magenta: function (val) { + return this.setChannel('cmyk', 1, val); + }, + yellow: function (val) { + return this.setChannel('cmyk', 2, val); + }, + black: function (val) { + return this.setChannel('cmyk', 3, val); + }, + + hexString: function () { + return colorString.hexString(this.values.rgb); + }, + rgbString: function () { + return colorString.rgbString(this.values.rgb, this.values.alpha); + }, + rgbaString: function () { + return colorString.rgbaString(this.values.rgb, this.values.alpha); + }, + percentString: function () { + return colorString.percentString(this.values.rgb, this.values.alpha); + }, + hslString: function () { + return colorString.hslString(this.values.hsl, this.values.alpha); + }, + hslaString: function () { + return colorString.hslaString(this.values.hsl, this.values.alpha); + }, + hwbString: function () { + return colorString.hwbString(this.values.hwb, this.values.alpha); + }, + keyword: function () { + return colorString.keyword(this.values.rgb, this.values.alpha); + }, + + rgbNumber: function () { + var rgb = this.values.rgb; + return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; + }, + + luminosity: function () { + // http://www.w3.org/TR/WCAG20/#relativeluminancedef + var rgb = this.values.rgb; + var lum = []; + for (var i = 0; i < rgb.length; i++) { + var chan = rgb[i] / 255; + lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); + } + return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; + }, + + contrast: function (color2) { + // http://www.w3.org/TR/WCAG20/#contrast-ratiodef + var lum1 = this.luminosity(); + var lum2 = color2.luminosity(); + if (lum1 > lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + + level: function (color2) { + var contrastRatio = this.contrast(color2); + if (contrastRatio >= 7.1) { + return 'AAA'; + } + + return (contrastRatio >= 4.5) ? 'AA' : ''; + }, + + dark: function () { + // YIQ equation from http://24ways.org/2010/calculating-color-contrast + var rgb = this.values.rgb; + var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; + return yiq < 128; + }, + + light: function () { + return !this.dark(); + }, + + negate: function () { + var rgb = []; + for (var i = 0; i < 3; i++) { + rgb[i] = 255 - this.values.rgb[i]; + } + this.setValues('rgb', rgb); + return this; + }, + + lighten: function (ratio) { + var hsl = this.values.hsl; + hsl[2] += hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + darken: function (ratio) { + var hsl = this.values.hsl; + hsl[2] -= hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + saturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] += hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + desaturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] -= hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + whiten: function (ratio) { + var hwb = this.values.hwb; + hwb[1] += hwb[1] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + blacken: function (ratio) { + var hwb = this.values.hwb; + hwb[2] += hwb[2] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + greyscale: function () { + var rgb = this.values.rgb; + // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale + var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + this.setValues('rgb', [val, val, val]); + return this; + }, + + clearer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha - (alpha * ratio)); + return this; + }, + + opaquer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha + (alpha * ratio)); + return this; + }, + + rotate: function (degrees) { + var hsl = this.values.hsl; + var hue = (hsl[0] + degrees) % 360; + hsl[0] = hue < 0 ? 360 + hue : hue; + this.setValues('hsl', hsl); + return this; + }, + + /** + * Ported from sass implementation in C + * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 + */ + mix: function (mixinColor, weight) { + var color1 = this; + var color2 = mixinColor; + var p = weight === undefined ? 0.5 : weight; + + var w = 2 * p - 1; + var a = color1.alpha() - color2.alpha(); + + var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + return this + .rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue() + ) + .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); + }, + + toJSON: function () { + return this.rgb(); + }, + + clone: function () { + // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, + // making the final build way to big to embed in Chart.js. So let's do it manually, + // assuming that values to clone are 1 dimension arrays containing only numbers, + // except 'alpha' which is a number. + var result = new Color(); + var source = this.values; + var target = result.values; + var value, type; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + value = source[prop]; + type = ({}).toString.call(value); + if (type === '[object Array]') { + target[prop] = value.slice(0); + } else if (type === '[object Number]') { + target[prop] = value; + } else { + console.error('unexpected color value:', value); + } + } + } + + return result; + } +}; + +Color.prototype.spaces = { + rgb: ['red', 'green', 'blue'], + hsl: ['hue', 'saturation', 'lightness'], + hsv: ['hue', 'saturation', 'value'], + hwb: ['hue', 'whiteness', 'blackness'], + cmyk: ['cyan', 'magenta', 'yellow', 'black'] +}; + +Color.prototype.maxes = { + rgb: [255, 255, 255], + hsl: [360, 100, 100], + hsv: [360, 100, 100], + hwb: [360, 100, 100], + cmyk: [100, 100, 100, 100] +}; + +Color.prototype.getValues = function (space) { + var values = this.values; + var vals = {}; + + for (var i = 0; i < space.length; i++) { + vals[space.charAt(i)] = values[space][i]; + } + + if (values.alpha !== 1) { + vals.a = values.alpha; + } + + // {r: 255, g: 255, b: 255, a: 0.4} + return vals; +}; + +Color.prototype.setValues = function (space, vals) { + var values = this.values; + var spaces = this.spaces; + var maxes = this.maxes; + var alpha = 1; + var i; + + this.valid = true; + + if (space === 'alpha') { + alpha = vals; + } else if (vals.length) { + // [10, 10, 10] + values[space] = vals.slice(0, space.length); + alpha = vals[space.length]; + } else if (vals[space.charAt(0)] !== undefined) { + // {r: 10, g: 10, b: 10} + for (i = 0; i < space.length; i++) { + values[space][i] = vals[space.charAt(i)]; + } + + alpha = vals.a; + } else if (vals[spaces[space][0]] !== undefined) { + // {red: 10, green: 10, blue: 10} + var chans = spaces[space]; + + for (i = 0; i < space.length; i++) { + values[space][i] = vals[chans[i]]; + } + + alpha = vals.alpha; + } + + values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + + if (space === 'alpha') { + return false; + } + + var capped; + + // cap values of the space prior converting all values + for (i = 0; i < space.length; i++) { + capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); + values[space][i] = Math.round(capped); + } + + // convert to all the other color spaces + for (var sname in spaces) { + if (sname !== space) { + values[sname] = colorConvert[space][sname](values[space]); + } + } + + return true; +}; + +Color.prototype.setSpace = function (space, args) { + var vals = args[0]; + + if (vals === undefined) { + // color.rgb() + return this.getValues(space); + } + + // color.rgb(10, 10, 10) + if (typeof vals === 'number') { + vals = Array.prototype.slice.call(args); + } + + this.setValues(space, vals); + return this; +}; + +Color.prototype.setChannel = function (space, index, val) { + var svalues = this.values[space]; + if (val === undefined) { + // color.red() + return svalues[index]; + } else if (val === svalues[index]) { + // color.red(color.red()) + return this; + } + + // color.red(100) + svalues[index] = val; + this.setValues(space, svalues); + + return this; +}; + +if (typeof window !== 'undefined') { + window.Color = Color; +} + +var chartjsColor = Color; + +/** + * @namespace Chart.helpers + */ +var helpers = { + /** + * An empty function that can be used, for example, for optional callback. + */ + noop: function() {}, + + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), + + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, + + /** + * Returns true if `value` is an array (including typed arrays), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @function + */ + isArray: function(value) { + if (Array.isArray && Array.isArray(value)) { + return true; + } + var type = Object.prototype.toString.call(value); + if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { + return true; + } + return false; + }, + + /** + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, + + /** + * Returns true if `value` is a finite number, else returns false + * @param {*} value - The value to test. + * @returns {boolean} + */ + isFinite: function(value) { + return (typeof value === 'number' || value instanceof Number) && isFinite(value); + }, + + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, + + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); + }, + + /** + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} + */ + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, + + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {object|Array} loopable - The object or array to be iterated. + * @param {function} fn - The function to call for each item. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } + }, + + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see https://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; + + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + + return true; + }, + + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } + + if (helpers.isObject(source)) { + var target = {}; + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; + + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } + + return target; + } + + return source; + }, + + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback. + * @private + */ + _merger: function(key, target, source, options) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, + + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @param {object} [options] - Merging options: + * @param {function} [options.merger] - The merge method (key, target, source, options) + * @returns {object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; + + if (!helpers.isObject(target)) { + return target; + } + + options = options || {}; + merge = options.merger || helpers._merger; + + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } + + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } + + return target; + }, + + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @returns {object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + }, + + /** + * Applies the contents of two or more objects together into the first object. + * @param {object} target - The target object in which all objects are merged into. + * @param {object} arg1 - Object containing additional properties to merge in target. + * @param {object} argN - Additional objects containing properties to merge in target. + * @returns {object} The `target` object. + */ + extend: Object.assign || function(target) { + return helpers.merge(target, [].slice.call(arguments, 1), { + merger: function(key, dst, src) { + dst[key] = src[key]; + } + }); + }, + + /** + * Basic javascript inheritance based on the model created in Backbone.js + */ + inherits: function(extensions) { + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; + + var Surrogate = function() { + this.constructor = ChartElement; + }; + + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); + } + + ChartElement.__super__ = me.prototype; + return ChartElement; + }, + + _deprecated: function(scope, value, previous, current) { + if (value !== undefined) { + console.warn(scope + ': "' + previous + + '" is deprecated. Please use "' + current + '" instead'); + } + } +}; + +var helpers_core = helpers; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +helpers.callCallback = helpers.callback; + +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; + +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; + +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, + + easeInQuad: function(t) { + return t * t; + }, + + easeOutQuad: function(t) { + return -t * (t - 2); + }, + + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; + } + return -0.5 * ((--t) * (t - 2) - 1); + }, + + easeInCubic: function(t) { + return t * t * t; + }, + + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, + + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, + + easeInQuart: function(t) { + return t * t * t * t; + }, + + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, + + easeInOutQuart: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t; + } + return -0.5 * ((t -= 2) * t * t * t - 2); + }, + + easeInQuint: function(t) { + return t * t * t * t * t; + }, + + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, + + easeInOutQuint: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t * t; + } + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }, + + easeInSine: function(t) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, + + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, + + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, + + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, + + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, + + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, + + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, + + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, + + easeInOutCirc: function(t) { + if ((t /= 0.5) < 1) { + return -0.5 * (Math.sqrt(1 - t * t) - 1); + } + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, + + easeInElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + }, + + easeOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; + }, + + easeInOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + easeInBack: function(t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; + }, + + easeInOutBack: function(t) { + var s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, + + easeInBounce: function(t) { + return 1 - effects.easeOutBounce(1 - t); + }, + + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; + } + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; + } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, + + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; + } +}; + +var helpers_easing = { + effects: effects +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.easingEffects = effects; + +var PI = Math.PI; +var RAD_PER_DEG = PI / 180; +var DOUBLE_PI = PI * 2; +var HALF_PI = PI / 2; +var QUARTER_PI = PI / 4; +var TWO_THIRDS_PI = PI * 2 / 3; + +/** + * @namespace Chart.helpers.canvas + */ +var exports$1 = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {number} x - The x axis of the coordinate for the rectangle starting point. + * @param {number} y - The y axis of the coordinate for the rectangle starting point. + * @param {number} width - The rectangle's width. + * @param {number} height - The rectangle's height. + * @param {number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + var r = Math.min(radius, height / 2, width / 2); + var left = x + r; + var top = y + r; + var right = x + width - r; + var bottom = y + height - r; + + ctx.moveTo(x, top); + if (left < right && top < bottom) { + ctx.arc(left, top, r, -PI, -HALF_PI); + ctx.arc(right, top, r, -HALF_PI, 0); + ctx.arc(right, bottom, r, 0, HALF_PI); + ctx.arc(left, bottom, r, HALF_PI, PI); + } else if (left < right) { + ctx.moveTo(left, y); + ctx.arc(right, top, r, -HALF_PI, HALF_PI); + ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); + } else if (top < bottom) { + ctx.arc(left, top, r, -PI, 0); + ctx.arc(left, bottom, r, 0, PI); + } else { + ctx.arc(left, top, r, -PI, PI); + } + ctx.closePath(); + ctx.moveTo(x, y); + } else { + ctx.rect(x, y, width, height); + } + }, + + drawPoint: function(ctx, style, radius, x, y, rotation) { + var type, xOffset, yOffset, size, cornerRadius; + var rad = (rotation || 0) * RAD_PER_DEG; + + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rad); + ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); + ctx.restore(); + return; + } + } + + if (isNaN(radius) || radius <= 0) { + return; + } + + ctx.beginPath(); + + switch (style) { + // Default includes circle + default: + ctx.arc(x, y, radius, 0, DOUBLE_PI); + ctx.closePath(); + break; + case 'triangle': + ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + ctx.closePath(); + break; + case 'rectRounded': + // NOTE: the rounded rect implementation changed to use `arc` instead of + // `quadraticCurveTo` since it generates better results when rect is + // almost a circle. 0.516 (instead of 0.5) produces results with visually + // closer proportion to the previous impl and it is inscribed in the + // circle with `radius`. For more details, see the following PRs: + // https://github.com/chartjs/Chart.js/issues/5597 + // https://github.com/chartjs/Chart.js/issues/5858 + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + yOffset = Math.sin(rad + QUARTER_PI) * size; + ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); + break; + case 'rect': + if (!rotation) { + size = Math.SQRT1_2 * radius; + ctx.rect(x - size, y - size, 2 * size, 2 * size); + break; + } + rad += QUARTER_PI; + /* falls through */ + case 'rectRot': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + yOffset, y - xOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.lineTo(x - yOffset, y + xOffset); + ctx.closePath(); + break; + case 'crossRot': + rad += QUARTER_PI; + /* falls through */ + case 'cross': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'star': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + rad += QUARTER_PI; + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'line': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + break; + case 'dash': + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); + break; + } + + ctx.fill(); + ctx.stroke(); + }, + + /** + * Returns true if the point is inside the rectangle + * @param {object} point - The point to test + * @param {object} area - The rectangle + * @returns {boolean} + * @private + */ + _isPointInArea: function(point, area) { + var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. + + return point.x > area.left - epsilon && point.x < area.right + epsilon && + point.y > area.top - epsilon && point.y < area.bottom + epsilon; + }, + + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); + }, + + unclipArea: function(ctx) { + ctx.restore(); + }, + + lineTo: function(ctx, previous, target, flip) { + var stepped = target.steppedLine; + if (stepped) { + if (stepped === 'middle') { + var midpoint = (previous.x + target.x) / 2.0; + ctx.lineTo(midpoint, flip ? target.y : previous.y); + ctx.lineTo(midpoint, flip ? previous.y : target.y); + } else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; + } + + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; + } + + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } +}; + +var helpers_canvas = exports$1; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.clear = exports$1.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports$1.roundedRect.apply(exports$1, arguments); +}; + +var defaults = { + /** + * @private + */ + _set: function(scope, values) { + return helpers_core.merge(this[scope] || (this[scope] = {}), values); + } +}; + +// TODO(v3): remove 'global' from namespace. all default are global and +// there's inconsistency around which options are under 'global' +defaults._set('global', { + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + defaultLineHeight: 1.2, + showLines: true +}); + +var core_defaults = defaults; + +var valueOrDefault = helpers_core.valueOrDefault; + +/** + * Converts the given font object into a CSS font string. + * @param {object} font - A font object. + * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font + * @private + */ +function toFontString(font) { + if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) { + return null; + } + + return (font.style ? font.style + ' ' : '') + + (font.weight ? font.weight + ' ' : '') + + font.size + 'px ' + + font.family; +} + +/** + * @alias Chart.helpers.options + * @namespace + */ +var helpers_options = { + /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height + * @since 2.7.0 + */ + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + + value = +matches[2]; + + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + } + + return size * value; + }, + + /** + * Converts the given value into a padding object with pre-computed width/height. + * @param {number|object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 + */ + toPadding: function(value) { + var t, r, b, l; + + if (helpers_core.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, + + /** + * Parses font options and returns the font object. + * @param {object} options - A object that contains font options to be parsed. + * @return {object} The font object. + * @todo Support font.* options and renamed to toFont(). + * @private + */ + _parseFont: function(options) { + var globalDefaults = core_defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var font = { + family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily), + lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size), + size: size, + style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle), + weight: null, + string: '' + }; + + font.string = toFontString(font); + return font; + }, + + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array} inputs - An array of values, falling back to the last value. + * @param {object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @param {object} [info] - object to return information about resolution in + * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable. + * @since 2.7.0 + */ + resolve: function(inputs, context, index, info) { + var cacheable = true; + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + cacheable = false; + } + if (index !== undefined && helpers_core.isArray(value)) { + value = value[index]; + cacheable = false; + } + if (value !== undefined) { + if (info && !cacheable) { + info.cacheable = false; + } + return value; + } + } + } +}; + +/** + * @alias Chart.helpers.math + * @namespace + */ +var exports$2 = { + /** + * Returns an array of factors sorted from 1 to sqrt(value) + * @private + */ + _factorize: function(value) { + var result = []; + var sqrt = Math.sqrt(value); + var i; + + for (i = 1; i < sqrt; i++) { + if (value % i === 0) { + result.push(i); + result.push(value / i); + } + } + if (sqrt === (sqrt | 0)) { // if value is a square number + result.push(sqrt); + } + + result.sort(function(a, b) { + return a - b; + }).pop(); + return result; + }, + + log10: Math.log10 || function(x) { + var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. + // Check for whole powers of 10, + // which due to floating point rounding error should be corrected. + var powerOf10 = Math.round(exponent); + var isPowerOf10 = x === Math.pow(10, powerOf10); + + return isPowerOf10 ? powerOf10 : exponent; + } +}; + +var helpers_math = exports$2; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.math.log10 instead. + * @namespace Chart.helpers.log10 + * @deprecated since version 2.9.0 + * @todo remove at version 3 + * @private + */ +helpers_core.log10 = exports$2.log10; + +var getRtlAdapter = function(rectX, width) { + return { + x: function(x) { + return rectX + rectX + width - x; + }, + setWidth: function(w) { + width = w; + }, + textAlign: function(align) { + if (align === 'center') { + return align; + } + return align === 'right' ? 'left' : 'right'; + }, + xPlus: function(x, value) { + return x - value; + }, + leftForLtr: function(x, itemWidth) { + return x - itemWidth; + }, + }; +}; + +var getLtrAdapter = function() { + return { + x: function(x) { + return x; + }, + setWidth: function(w) { // eslint-disable-line no-unused-vars + }, + textAlign: function(align) { + return align; + }, + xPlus: function(x, value) { + return x + value; + }, + leftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars + return x; + }, + }; +}; + +var getAdapter = function(rtl, rectX, width) { + return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter(); +}; + +var overrideTextDirection = function(ctx, direction) { + var style, original; + if (direction === 'ltr' || direction === 'rtl') { + style = ctx.canvas.style; + original = [ + style.getPropertyValue('direction'), + style.getPropertyPriority('direction'), + ]; + + style.setProperty('direction', direction, 'important'); + ctx.prevTextDirection = original; + } +}; + +var restoreTextDirection = function(ctx) { + var original = ctx.prevTextDirection; + if (original !== undefined) { + delete ctx.prevTextDirection; + ctx.canvas.style.setProperty('direction', original[0], original[1]); + } +}; + +var helpers_rtl = { + getRtlAdapter: getAdapter, + overrideTextDirection: overrideTextDirection, + restoreTextDirection: restoreTextDirection, +}; + +var helpers$1 = helpers_core; +var easing = helpers_easing; +var canvas = helpers_canvas; +var options = helpers_options; +var math = helpers_math; +var rtl = helpers_rtl; +helpers$1.easing = easing; +helpers$1.canvas = canvas; +helpers$1.options = options; +helpers$1.math = math; +helpers$1.rtl = rtl; + +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + + target = model[key]; + + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; + } + + actual = view[key]; + + if (actual === target || key[0] === '_') { + continue; + } + + if (!start.hasOwnProperty(key)) { + start[key] = actual; + } + + origin = start[key]; -function deprecate(msg, fn) { - var firstTime = true; + type = typeof target; - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); + if (type === typeof origin) { + if (type === 'string') { + c0 = chartjsColor(origin); + if (c0.valid) { + c1 = chartjsColor(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; + } + } + + view[key] = target; + } } -var deprecations = {}; +var Element = function(configuration) { + helpers$1.extend(this, configuration); + this.initialize.apply(this, arguments); +}; -function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } -} +helpers$1.extend(Element.prototype, { + _type: undefined, -hooks.suppressDeprecationWarnings = false; -hooks.deprecationHandler = null; + initialize: function() { + this.hidden = false; + }, -function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; -} + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers$1.extend({}, me._model); + } + me._start = {}; + return me; + }, -function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); -} + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; -function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; -} + // No animation -> No Transition + if (!model || ease === 1) { + me._view = helpers$1.extend({}, model); + me._start = null; + return me; + } -function Locale(config) { - if (config != null) { - this.set(config); - } -} + if (!view) { + view = me._view = {}; + } -var keys; + if (!start) { + start = me._start = {}; + } -if (Object.keys) { - keys = Object.keys; -} else { - keys = function (obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; -} + interpolate(start, view, model, ease); -var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' -}; + return me; + }, -function calendar (key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; -} + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, + + hasValue: function() { + return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y); + } +}); + +Element.extend = helpers$1.inherits; + +var core_element = Element; + +var exports$3 = core_element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service + + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes +}); + +var core_animation = exports$3; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$3.prototype, 'animationObject', { + get: function() { + return this; + } +}); + +/** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$3.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } +}); + +core_defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers$1.noop, + onComplete: helpers$1.noop + } +}); + +var core_animations = { + animations: [], + request: null, + + /** + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {number} duration - The animation duration in ms. + * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions + */ + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + animation.startTime = Date.now(); + animation.duration = duration; + + if (!lazy) { + chart.animating = true; + } + + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; + } + } + + animations.push(animation); + + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, + + cancelAnimation: function(chart) { + var index = helpers$1.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); + + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers$1.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); + }); + } + }, + + /** + * @private + */ + startDigest: function() { + var me = this; + + me.advance(); + + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, + + /** + * @private + */ + advance: function() { + var animations = this.animations; + var animation, chart, numSteps, nextStep; + var i = 0; -var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' + // 1 animation per chart, so we are looping charts here + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; + numSteps = animation.numSteps; + + // Make sure that currentStep starts at 1 + // https://github.com/chartjs/Chart.js/issues/6104 + nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1; + animation.currentStep = Math.min(nextStep, numSteps); + + helpers$1.callback(animation.render, [chart, animation], chart); + helpers$1.callback(animation.onAnimationProgress, [animation], chart); + + if (animation.currentStep >= numSteps) { + helpers$1.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } }; -function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; +var resolve = helpers$1.options.resolve; - if (format || !formatUpper) { - return format; - } +var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); +/** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ +function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } - return this._longDateFormat[key]; -} + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var base = array[key]; + + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value: function() { + var args = Array.prototype.slice.call(arguments); + var res = base.apply(this, args); -var defaultInvalidDate = 'Invalid date'; + helpers$1.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); -function invalidDate () { - return this._invalidDate; + return res; + } + }); + }); } -var defaultOrdinal = '%d'; -var defaultDayOfMonthOrdinalParse = /\d{1,2}/; +/** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ +function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { + return; + } + + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + + if (listeners.length > 0) { + return; + } -function ordinal (number) { - return this._ordinal.replace('%d', number); + arrayEvents.forEach(function(key) { + delete array[key]; + }); + + delete array._chartjs; } -var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' +// Base class for all dataset controllers (line, bar, etc) +var DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); }; -function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); -} +helpers$1.extend(DatasetController.prototype, { + + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, + + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, + + /** + * Dataset element option keys to be resolved in _resolveDatasetElementOptions. + * A derived controller may override this to resolve controller-specific options. + * The keys defined here are for backward compatibility for legend styles. + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderCapStyle', + 'borderColor', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'borderWidth' + ], + + /** + * Data element option keys to be resolved in _resolveDataElementOptions. + * A derived controller may override this to resolve controller-specific options. + * The keys defined here are for backward compatibility for legend styles. + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'pointStyle' + ], + + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + me._type = me.getMeta().type; + }, + + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, + + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var chart = me.chart; + var scales = chart.scales; + var dataset = me.getDataset(); + var scalesOpts = chart.options.scales; + + if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) { + meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id; + } + if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) { + meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id; + } + }, + + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, + + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().yAxisID; + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + _getValueScale: function() { + return this.getScaleForId(this._getValueScaleId()); + }, + + /** + * @private + */ + _getIndexScale: function() { + return this.getScaleForId(this._getIndexScaleId()); + }, + + reset: function() { + this._update(true); + }, + + /** + * @private + */ + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, + + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, -function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); -} + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, -var aliases = {}; + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; -function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; -} + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); + } -function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; -} + meta.dataset = meta.dataset || me.createMetaDataset(); + }, -function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); + }, - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); - return normalizedInput; -} + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } -var priorities = {}; + if (data && Object.isExtensible(data)) { + listenArrayEvents(data, me); + } + me._data = data; + } -function addUnitPriority(unit, priority) { - priorities[unit] = priority; -} + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); + }, -function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; -} + /** + * Returns the merged user-supplied and default dataset-level options + * @private + */ + _configure: function() { + var me = this; + me._config = helpers$1.merge({}, [ + me.chart.options.datasets[me._type], + me.getDataset(), + ], { + merger: function(key, target, source) { + if (key !== '_meta' && key !== 'data') { + helpers$1._merger(key, target, source); + } + } + }); + }, -function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; -} + _update: function(reset) { + var me = this; + me._configure(); + me._cachedDataOpts = null; + me.update(reset); + }, -var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + update: helpers$1.noop, -var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; -var formatFunctions = {}; + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } -var formatTokenFunctions = {}; + if (meta.dataset) { + meta.dataset.transition(easingValue); + } + }, -// token: 'M' -// padded: ['MM', 2] -// ordinal: 'Mo' -// callback: function () { this.month() + 1 } -function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } -} + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; -function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); -} + if (meta.dataset) { + meta.dataset.draw(); + } -function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + /** + * Returns a set of predefined style properties that should be used to represent the dataset + * or the data if the index is specified + * @param {number} index - data index + * @return {IStyleInterface} style object + */ + getStyle: function(index) { + var me = this; + var meta = me.getMeta(); + var dataset = meta.dataset; + var style; - return function (mom) { - var output = '', i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; - } - return output; - }; -} + me._configure(); + if (dataset && index === undefined) { + style = me._resolveDatasetElementOptions(dataset || {}); + } else { + index = index || 0; + style = me._resolveDataElementOptions(meta.data[index] || {}, index); + } -// format date using native date object -function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + if (style.fill === false || style.fill === null) { + style.backgroundColor = style.borderColor; + } - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + return style; + }, - return formatFunctions[format](m); -} + /** + * @private + */ + _resolveDatasetElementOptions: function(element, hover) { + var me = this; + var chart = me.chart; + var datasetOpts = me._config; + var custom = element.custom || {}; + var options = chart.options.elements[me.datasetElementType.prototype._type] || {}; + var elementOptions = me._datasetElementOptions; + var values = {}; + var i, ilen, key, readKey; + + // Scriptable options + var context = { + chart: chart, + dataset: me.getDataset(), + datasetIndex: me.index, + hover: hover + }; -function expandFormat(format, locale) { - var i = 5; + for (i = 0, ilen = elementOptions.length; i < ilen; ++i) { + key = elementOptions[i]; + readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key; + values[key] = resolve([ + custom[readKey], + datasetOpts[readKey], + options[readKey] + ], context); + } - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + return values; + }, - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + /** + * @private + */ + _resolveDataElementOptions: function(element, index) { + var me = this; + var custom = element && element.custom; + var cached = me._cachedDataOpts; + if (cached && !custom) { + return cached; + } + var chart = me.chart; + var datasetOpts = me._config; + var options = chart.options.elements[me.dataElementType.prototype._type] || {}; + var elementOptions = me._dataElementOptions; + var values = {}; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: me.getDataset(), + datasetIndex: me.index + }; - return format; -} + // `resolve` sets cacheable to `false` if any option is indexed or scripted + var info = {cacheable: !custom}; -var match1 = /\d/; // 0 - 9 -var match2 = /\d\d/; // 00 - 99 -var match3 = /\d{3}/; // 000 - 999 -var match4 = /\d{4}/; // 0000 - 9999 -var match6 = /[+-]?\d{6}/; // -999999 - 999999 -var match1to2 = /\d\d?/; // 0 - 99 -var match3to4 = /\d\d\d\d?/; // 999 - 9999 -var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 -var match1to3 = /\d{1,3}/; // 0 - 999 -var match1to4 = /\d{1,4}/; // 0 - 9999 -var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + var keys, i, ilen, key; -var matchUnsigned = /\d+/; // 0 - inf -var matchSigned = /[+-]?\d+/; // -inf - inf + custom = custom || {}; -var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z -var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + if (helpers$1.isArray(elementOptions)) { + for (i = 0, ilen = elementOptions.length; i < ilen; ++i) { + key = elementOptions[i]; + values[key] = resolve([ + custom[key], + datasetOpts[key], + options[key] + ], context, index, info); + } + } else { + keys = Object.keys(elementOptions); + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + datasetOpts[elementOptions[key]], + datasetOpts[key], + options[key] + ], context, index, info); + } + } -var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + if (info.cacheable) { + me._cachedDataOpts = Object.freeze(values); + } -// any word (or two) characters or numbers including two/three word month in arabic. -// includes scottish gaelic two word and hyphenated months -var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; + return values; + }, + removeHoverStyle: function(element) { + helpers$1.merge(element._model, element.$previousStyle || {}); + delete element.$previousStyle; + }, -var regexes = {}; + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var model = element._model; + var getHoverColor = helpers$1.getHoverColor; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth + }; -function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; -} + model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); + model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index); + model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index); + }, -function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } + /** + * @private + */ + _removeDatasetHoverStyle: function() { + var element = this.getMeta().dataset; - return regexes[token](config._strict, config._locale); -} + if (element) { + this.removeHoverStyle(element); + } + }, -// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript -function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); -} + /** + * @private + */ + _setDatasetHoverStyle: function() { + var element = this.getMeta().dataset; + var prev = {}; + var i, ilen, key, keys, hoverOptions, model; -function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); -} + if (!element) { + return; + } -var tokens = {}; + model = element._model; + hoverOptions = this._resolveDatasetElementOptions(element, true); -function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } -} + keys = Object.keys(hoverOptions); + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + prev[key] = model[key]; + model[key] = hoverOptions[key]; + } -function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); -} + element.$previousStyle = prev; + }, -function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } -} + /** + * @private + */ + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; + + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, -var YEAR = 0; -var MONTH = 1; -var DATE = 2; -var HOUR = 3; -var MINUTE = 4; -var SECOND = 5; -var MILLISECOND = 6; -var WEEK = 7; -var WEEKDAY = 8; - -// FORMATTING - -addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; -}); + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); + } + }, -addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; -}); + /** + * @private + */ + onDataPush: function() { + var count = arguments.length; + this.insertElements(this.getDataset().data.length - count, count); + }, -addFormatToken(0, ['YYYY', 4], 0, 'year'); -addFormatToken(0, ['YYYYY', 5], 0, 'year'); -addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, -// ALIASES + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, -addUnitAlias('year', 'y'); + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, -// PRIORITIES + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); + } +}); -addUnitPriority('year', 1); +DatasetController.extend = helpers$1.inherits; -// PARSING +var core_datasetController = DatasetController; -addRegexToken('Y', matchSigned); -addRegexToken('YY', match1to2, match2); -addRegexToken('YYYY', match1to4, match4); -addRegexToken('YYYYY', match1to6, match6); -addRegexToken('YYYYYY', match1to6, match6); +var TAU = Math.PI * 2; -addParseToken(['YYYYY', 'YYYYYY'], YEAR); -addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); -}); -addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); -}); -addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); +core_defaults._set('global', { + elements: { + arc: { + backgroundColor: core_defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2, + borderAlign: 'center' + } + } }); -// HELPERS - -function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; -} +function clipArc(ctx, arc) { + var startAngle = arc.startAngle; + var endAngle = arc.endAngle; + var pixelMargin = arc.pixelMargin; + var angleMargin = pixelMargin / arc.outerRadius; + var x = arc.x; + var y = arc.y; -function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + // Draw an inner border by cliping the arc and drawing a double-width border + // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders + ctx.beginPath(); + ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin); + if (arc.innerRadius > pixelMargin) { + angleMargin = pixelMargin / arc.innerRadius; + ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true); + } else { + ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2); + } + ctx.closePath(); + ctx.clip(); } -// HOOKS - -hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); -}; +function drawFullCircleBorders(ctx, vm, arc, inner) { + var endAngle = arc.endAngle; + var i; -// MOMENTS + if (inner) { + arc.endAngle = arc.startAngle + TAU; + clipArc(ctx, arc); + arc.endAngle = endAngle; + if (arc.endAngle === arc.startAngle && arc.fullCircles) { + arc.endAngle += TAU; + arc.fullCircles--; + } + } -var getSetYear = makeGetSet('FullYear', true); + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.stroke(); + } -function getIsLeapYear () { - return isLeapYear(this.year()); + ctx.beginPath(); + ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.stroke(); + } } -function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; -} +function drawBorder(ctx, vm, arc) { + var inner = vm.borderAlign === 'inner'; -function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; -} + if (inner) { + ctx.lineWidth = vm.borderWidth * 2; + ctx.lineJoin = 'round'; + } else { + ctx.lineWidth = vm.borderWidth; + ctx.lineJoin = 'bevel'; + } -function set$1 (mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); - } - else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } -} + if (arc.fullCircles) { + drawFullCircleBorders(ctx, vm, arc, inner); + } -// MOMENTS + if (inner) { + clipArc(ctx, arc); + } -function stringGet (units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; + ctx.beginPath(); + ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + ctx.stroke(); } +var element_arc = core_element.extend({ + _type: 'arc', -function stringSet (units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; -} + inLabelRange: function(mouseX) { + var vm = this._view; -function mod(n, x) { - return ((n % x) + x) % x; -} + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, -var indexOf; + inRange: function(chartX, chartY) { + var vm = this._view; -if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; -} else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; -} + if (vm) { + var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; -function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); -} + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += TAU; + } + while (angle > endAngle) { + angle -= TAU; + } + while (angle < startAngle) { + angle += TAU; + } + + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); -// FORMATTING + return (betweenAngles && withinRadius); + } + return false; + }, -addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; -}); + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, -addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); -}); + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, -addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); -}); + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; -// ALIASES + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, -addUnitAlias('month', 'M'); + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; + var arc = { + x: vm.x, + y: vm.y, + innerRadius: vm.innerRadius, + outerRadius: Math.max(vm.outerRadius - pixelMargin, 0), + pixelMargin: pixelMargin, + startAngle: vm.startAngle, + endAngle: vm.endAngle, + fullCircles: Math.floor(vm.circumference / TAU) + }; + var i; -// PRIORITY + ctx.save(); -addUnitPriority('month', 8); + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; -// PARSING + if (arc.fullCircles) { + arc.endAngle = arc.startAngle + TAU; + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.fill(); + } + arc.endAngle = arc.startAngle + vm.circumference % TAU; + } -addRegexToken('M', match1to2); -addRegexToken('MM', match1to2, match2); -addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); -}); -addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); -}); + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + ctx.fill(); -addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; -}); + if (vm.borderWidth) { + drawBorder(ctx, vm, arc); + } -addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } + ctx.restore(); + } }); -// LOCALES +var valueOrDefault$1 = helpers$1.valueOrDefault; -var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; -var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); -function localeMonths (m, format) { - if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; - } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; -} +var defaultColor = core_defaults.global.defaultColor; -var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); -function localeMonthsShort (m, format) { - if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; -} +core_defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: defaultColor, + borderWidth: 3, + borderColor: defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); -function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } +var element_line = core_element.extend({ + _type: 'line', - if (strict) { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } -} + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalDefaults = core_defaults.global; + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var closePath = me._loop; + var index, previous, currentVM; -function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; + if (!points.length) { + return; + } - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } + if (me._loop) { + for (index = 0; index < points.length; ++index) { + previous = helpers$1.previousItem(points, index); + // If the line has an open path, shift the point array + if (!points[index]._view.skip && previous._view.skip) { + points = points.slice(index).concat(points.slice(0, index)); + closePath = spanGaps; + break; + } + } + // If the line has a close path, add the first point again + if (closePath) { + points.push(points[0]); + } + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + ctx.save(); - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } -} + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; -// MOMENTS + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); + } -function setMonth (mom, value) { - var dayOfMonth; + ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset); + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth); + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; - if (!mom.isValid()) { - // No op - return mom; - } + // Stroke Line + ctx.beginPath(); - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } + // First point moves to it's starting position no matter what + currentVM = points[0]._view; + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = 0; + } - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; -} + for (index = 1; index < points.length; ++index) { + currentVM = points[index]._view; + previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex]; -function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } -} + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers$1.canvas.lineTo(ctx, previous._view, currentVM); + } + lastDrawnIndex = index; + } + } -function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); -} + if (closePath) { + ctx.closePath(); + } -var defaultMonthsShortRegex = matchWord; -function monthsShortRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; - } -} + ctx.stroke(); + ctx.restore(); + } +}); -var defaultMonthsRegex = matchWord; -function monthsRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; - } -} +var valueOrDefault$2 = helpers$1.valueOrDefault; -function computeMonthsParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } +var defaultColor$1 = core_defaults.global.defaultColor; - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } +core_defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor$1, + borderColor: defaultColor$1, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 + } + } +}); - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; } -function createDate (y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date = new Date(y, m, d, h, M, s, ms); - - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { - date.setFullYear(y); - } - return date; +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; } -function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); +var element_point = core_element.extend({ + _type: 'point', - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - return date; -} - -// start-of-first-week - start-of-year -function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; + }, - return -fwdlw + fwd - 1; -} + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, -// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday -function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; - - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + }, - return { - year: resYear, - dayOfYear: resDayOfYear - }; -} + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, -function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; - - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; + }, - return { - week: resWeek, - year: resYear - }; -} + draw: function(chartArea) { + var vm = this._view; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var rotation = vm.rotation; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var globalDefaults = core_defaults.global; + var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow -function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; -} + if (vm.skip) { + return; + } -// FORMATTING + // Clipping for Points. + if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) { + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); + } + } +}); -addFormatToken('w', ['ww', 2], 'wo', 'week'); -addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); +var defaultColor$2 = core_defaults.global.defaultColor; -// ALIASES +core_defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaultColor$2, + borderColor: defaultColor$2, + borderSkipped: 'bottom', + borderWidth: 0 + } + } +}); -addUnitAlias('week', 'w'); -addUnitAlias('isoWeek', 'W'); +function isVertical(vm) { + return vm && vm.width !== undefined; +} -// PRIORITIES +/** + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar + * @private + */ +function getBarBounds(vm) { + var x1, x2, y1, y2, half; -addUnitPriority('week', 5); -addUnitPriority('isoWeek', 5); + if (isVertical(vm)) { + half = vm.width / 2; + x1 = vm.x - half; + x2 = vm.x + half; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + half = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - half; + y2 = vm.y + half; + } -// PARSING + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} -addRegexToken('w', match1to2); -addRegexToken('ww', match1to2, match2); -addRegexToken('W', match1to2); -addRegexToken('WW', match1to2, match2); +function swap(orig, v1, v2) { + return orig === v1 ? v2 : orig === v2 ? v1 : orig; +} -addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); -}); +function parseBorderSkipped(vm) { + var edge = vm.borderSkipped; + var res = {}; -// HELPERS + if (!edge) { + return res; + } -// LOCALES + if (vm.horizontal) { + if (vm.base > vm.x) { + edge = swap(edge, 'left', 'right'); + } + } else if (vm.base < vm.y) { + edge = swap(edge, 'bottom', 'top'); + } -function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; + res[edge] = true; + return res; } -var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. -}; +function parseBorderWidth(vm, maxW, maxH) { + var value = vm.borderWidth; + var skip = parseBorderSkipped(vm); + var t, r, b, l; -function localeFirstDayOfWeek () { - return this._week.dow; -} + if (helpers$1.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } -function localeFirstDayOfYear () { - return this._week.doy; + return { + t: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t, + r: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r, + b: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b, + l: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l + }; } -// MOMENTS - -function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); -} +function boundingRects(vm) { + var bounds = getBarBounds(vm); + var width = bounds.right - bounds.left; + var height = bounds.bottom - bounds.top; + var border = parseBorderWidth(vm, width / 2, height / 2); -function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); + return { + outer: { + x: bounds.left, + y: bounds.top, + w: width, + h: height + }, + inner: { + x: bounds.left + border.l, + y: bounds.top + border.t, + w: width - border.l - border.r, + h: height - border.t - border.b + } + }; } -// FORMATTING - -addFormatToken('d', 0, 'do', 'day'); - -addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); -}); - -addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); -}); - -addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); -}); +function inRange(vm, x, y) { + var skipX = x === null; + var skipY = y === null; + var bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm); -addFormatToken('e', 0, 0, 'weekday'); -addFormatToken('E', 0, 0, 'isoWeekday'); + return bounds + && (skipX || x >= bounds.left && x <= bounds.right) + && (skipY || y >= bounds.top && y <= bounds.bottom); +} -// ALIASES +var element_rectangle = core_element.extend({ + _type: 'rectangle', -addUnitAlias('day', 'd'); -addUnitAlias('weekday', 'e'); -addUnitAlias('isoWeekday', 'E'); + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var rects = boundingRects(vm); + var outer = rects.outer; + var inner = rects.inner; -// PRIORITY -addUnitPriority('day', 11); -addUnitPriority('weekday', 11); -addUnitPriority('isoWeekday', 11); + ctx.fillStyle = vm.backgroundColor; + ctx.fillRect(outer.x, outer.y, outer.w, outer.h); -// PARSING + if (outer.w === inner.w && outer.h === inner.h) { + return; + } -addRegexToken('d', match1to2); -addRegexToken('e', match1to2); -addRegexToken('E', match1to2); -addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); -}); -addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); -}); -addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); -}); + ctx.save(); + ctx.beginPath(); + ctx.rect(outer.x, outer.y, outer.w, outer.h); + ctx.clip(); + ctx.fillStyle = vm.borderColor; + ctx.rect(inner.x, inner.y, inner.w, inner.h); + ctx.fill('evenodd'); + ctx.restore(); + }, -addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } -}); + height: function() { + var vm = this._view; + return vm.base - vm.y; + }, -addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); -}); + inRange: function(mouseX, mouseY) { + return inRange(this._view, mouseX, mouseY); + }, -// HELPERS + inLabelRange: function(mouseX, mouseY) { + var vm = this._view; + return isVertical(vm) + ? inRange(vm, mouseX, null) + : inRange(vm, null, mouseY); + }, -function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } + inXRange: function(mouseX) { + return inRange(this._view, mouseX, null); + }, - if (!isNaN(input)) { - return parseInt(input, 10); - } + inYRange: function(mouseY) { + return inRange(this._view, null, mouseY); + }, - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(vm)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; + } - return null; -} + return {x: x, y: y}; + }, -function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; -} + getArea: function() { + var vm = this._view; -// LOCALES + return isVertical(vm) + ? vm.width * Math.abs(vm.y - vm.base) + : vm.height * Math.abs(vm.x - vm.base); + }, -var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); -function localeWeekdays (m, format) { - if (!m) { - return isArray(this._weekdays) ? this._weekdays : - this._weekdays['standalone']; - } - return isArray(this._weekdays) ? this._weekdays[m.day()] : - this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; -} + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); -var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); -function localeWeekdaysShort (m) { - return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; -} +var elements = {}; +var Arc = element_arc; +var Line = element_line; +var Point = element_point; +var Rectangle = element_rectangle; +elements.Arc = Arc; +elements.Line = Line; +elements.Point = Point; +elements.Rectangle = Rectangle; -var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); -function localeWeekdaysMin (m) { - return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; -} +var deprecated = helpers$1._deprecated; +var valueOrDefault$3 = helpers$1.valueOrDefault; -function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; +core_defaults._set('bar', { + hover: { + mode: 'label' + }, - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } + scales: { + xAxes: [{ + type: 'category', + offset: true, + gridLines: { + offsetGridLines: true + } + }], - if (strict) { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } -} + yAxes: [{ + type: 'linear' + }] + } +}); -function localeWeekdaysParse (weekdayName, format, strict) { - var i, mom, regex; +core_defaults._set('global', { + datasets: { + bar: { + categoryPercentage: 0.8, + barPercentage: 0.9 + } + } +}); - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } +/** + * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. + * @private + */ +function computeMinSampleSize(scale, pixels) { + var min = scale._length; + var prev, curr, i, ilen; - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } + for (i = 1, ilen = pixels.length; i < ilen; ++i) { + min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1])); + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already + for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min; + prev = curr; + } - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); - } - if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } + return min; } -// MOMENTS +/** + * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, + * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This + * mode currently always generates bars equally sized (until we introduce scriptable options?). + * @private + */ +function computeFitCategoryTraits(index, ruler, options) { + var thickness = options.barThickness; + var count = ruler.stackCount; + var curr = ruler.pixels[index]; + var min = helpers$1.isNullOrUndef(thickness) + ? computeMinSampleSize(ruler.scale, ruler.pixels) + : -1; + var size, ratio; -function getSetDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } -} + if (helpers$1.isNullOrUndef(thickness)) { + size = min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + // When bar thickness is enforced, category and bar percentages are ignored. + // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') + // and deprecate barPercentage since this value is ignored when thickness is absolute. + size = thickness * count; + ratio = 1; + } -function getSetLocaleDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); + return { + chunk: size / count, + ratio: ratio, + start: curr - (size / 2) + }; } -function getSetISODayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. +/** + * Computes an "optimal" category that globally arranges bars side by side (no gap when + * percentage options are 1), based on the previous and following categories. This mode + * generates bars with different widths when data are not evenly spaced. + * @private + */ +function computeFlexCategoryTraits(index, ruler, options) { + var pixels = ruler.pixels; + var curr = pixels[index]; + var prev = index > 0 ? pixels[index - 1] : null; + var next = index < pixels.length - 1 ? pixels[index + 1] : null; + var percent = options.categoryPercentage; + var start, size; - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } -} + if (prev === null) { + // first data: its size is double based on the next point or, + // if it's also the last data, we use the scale size. + prev = curr - (next === null ? ruler.end - ruler.start : next - curr); + } -var defaultWeekdaysRegex = matchWord; -function weekdaysRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; - } -} + if (next === null) { + // last data: its size is also double based on the previous point. + next = curr + curr - prev; + } -var defaultWeekdaysShortRegex = matchWord; -function weekdaysShortRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } -} + start = curr - (curr - Math.min(prev, next)) / 2 * percent; + size = Math.abs(next - prev) / 2 * percent; -var defaultWeekdaysMinRegex = matchWord; -function weekdaysMinRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } + return { + chunk: size / ruler.stackCount, + ratio: options.barPercentage, + start: start + }; } +var controller_bar = core_datasetController.extend({ -function computeWeekdaysParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } + dataElementType: elements.Rectangle, - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderSkipped', + 'borderWidth', + 'barPercentage', + 'barThickness', + 'categoryPercentage', + 'maxBarThickness', + 'minBarLength' + ], - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; + initialize: function() { + var me = this; + var meta, scaleOpts; - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); -} + core_datasetController.prototype.initialize.apply(me, arguments); -// FORMATTING + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; -function hFormat() { - return this.hours() % 12 || 12; -} + scaleOpts = me._getIndexScale().options; + deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage'); + deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness'); + deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage'); + deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength'); + deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness'); + }, -function kFormat() { - return this.hours() || 24; -} + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; -addFormatToken('H', ['HH', 2], 0, 'hour'); -addFormatToken('h', ['hh', 2], 0, hFormat); -addFormatToken('k', ['kk', 2], 0, kFormat); + me._ruler = me.getRuler(); -addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); -}); + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, -addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); + updateElement: function(rectangle, index, reset) { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var options = me._resolveDataElementOptions(rectangle, index); + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + rectangle._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderSkipped: options.borderSkipped, + borderWidth: options.borderWidth, + datasetLabel: dataset.label, + label: me.chart.data.labels[index] + }; -addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); -}); + if (helpers$1.isArray(dataset.data[index])) { + rectangle._model.borderSkipped = null; + } -addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); + me._updateElementGeometry(rectangle, index, reset, options); -function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); -} + rectangle.pivot(); + }, -meridiem('a', true); -meridiem('A', false); + /** + * @private + */ + _updateElementGeometry: function(rectangle, index, reset, options) { + var me = this; + var model = rectangle._model; + var vscale = me._getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index, options); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options); + + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, -// ALIASES + /** + * Returns the stacks based on groups and bar visibility. + * @param {number} [last] - The dataset index + * @returns {string[]} The list of stack IDs + * @private + */ + _getStacks: function(last) { + var me = this; + var scale = me._getIndexScale(); + var metasets = scale._getMatchingVisibleMetas(me._type); + var stacked = scale.options.stacked; + var ilen = metasets.length; + var stacks = []; + var i, meta; -addUnitAlias('hour', 'h'); + for (i = 0; i < ilen; ++i) { + meta = metasets[i]; + // stacked | meta.stack + // | found | not found | undefined + // false | x | x | x + // true | | x | + // undefined | | x | x + if (stacked === false || stacks.indexOf(meta.stack) === -1 || + (stacked === undefined && meta.stack === undefined)) { + stacks.push(meta.stack); + } + if (meta.index === last) { + break; + } + } -// PRIORITY -addUnitPriority('hour', 13); + return stacks; + }, -// PARSING + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function() { + return this._getStacks().length; + }, -function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; -} + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @param {number} [datasetIndex] - The dataset index + * @param {string} [name] - The stack name to find + * @returns {number} The stack index + * @private + */ + getStackIndex: function(datasetIndex, name) { + var stacks = this._getStacks(datasetIndex); + var index = (name !== undefined) + ? stacks.indexOf(name) + : -1; // indexOf returns -1 if element is not present + + return (index === -1) + ? stacks.length - 1 + : index; + }, -addRegexToken('a', matchMeridiem); -addRegexToken('A', matchMeridiem); -addRegexToken('H', match1to2); -addRegexToken('h', match1to2); -addRegexToken('k', match1to2); -addRegexToken('HH', match1to2, match2); -addRegexToken('hh', match1to2, match2); -addRegexToken('kk', match1to2, match2); - -addRegexToken('hmm', match3to4); -addRegexToken('hmmss', match5to6); -addRegexToken('Hmm', match3to4); -addRegexToken('Hmmss', match5to6); - -addParseToken(['H', 'HH'], HOUR); -addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; -}); -addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; -}); -addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); -}); -addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); -}); + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me._getIndexScale(); + var pixels = []; + var i, ilen; -// LOCALES + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, me.index)); + } -function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); -} + return { + pixels: pixels, + start: scale._startPixel, + end: scale._endPixel, + stackCount: me.getStackCount(), + scale: scale + }; + }, -var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; -function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } -} + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index, options) { + var me = this; + var chart = me.chart; + var scale = me._getValueScale(); + var isHorizontal = scale.isHorizontal(); + var datasets = chart.data.datasets; + var metasets = scale._getMatchingVisibleMetas(me._type); + var value = scale._parseValue(datasets[datasetIndex].data[index]); + var minBarLength = options.minBarLength; + var stacked = scale.options.stacked; + var stack = me.getMeta().stack; + var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max; + var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max; + var ilen = metasets.length; + var i, imeta, ivalue, base, head, size, stackLength; + + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < ilen; ++i) { + imeta = metasets[i]; + if (imeta.index === datasetIndex) { + break; + } -// MOMENTS + if (imeta.stack === stack) { + stackLength = scale._parseValue(datasets[imeta.index].data[index]); + ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min; -// Setting the hour should keep the time, because the user explicitly -// specified which hour he wants. So trying to maintain the same hour (in -// a new timezone) makes sense. Adding/subtracting hours does not follow -// this rule. -var getSetHour = makeGetSet('Hours', true); + if ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) { + start += ivalue; + } + } + } + } -// months -// week -// weekdays -// meridiem -var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + length); + size = head - base; - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, + if (minBarLength !== undefined && Math.abs(size) < minBarLength) { + size = minBarLength; + if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) { + head = base - minBarLength; + } else { + head = base + minBarLength; + } + } - week: defaultLocaleWeek, + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; + }, - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, + /** + * @private + */ + calculateBarIndexPixels: function(datasetIndex, index, ruler, options) { + var me = this; + var range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options) + : computeFitCategoryTraits(index, ruler, options); - meridiemParse: defaultLocaleMeridiemParse -}; + var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); + var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + var size = Math.min( + valueOrDefault$3(options.maxBarThickness, Infinity), + range.chunk * range.ratio); -// internal storage for locale config files -var locales = {}; -var localeFamilies = {}; -var globalLocale; + return { + base: center - size / 2, + head: center + size / 2, + center: center, + size: size + }; + }, -function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; -} + draw: function() { + var me = this; + var chart = me.chart; + var scale = me._getValueScale(); + var rects = me.getMeta().data; + var dataset = me.getDataset(); + var ilen = rects.length; + var i = 0; -// pick the locale from the array -// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each -// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root -function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; -} + helpers$1.canvas.clipArea(chart.ctx, chart.chartArea); -function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - var aliasedRequire = require; - aliasedRequire('./locale/' + name); - getSetGlobalLocale(oldLocale); - } catch (e) {} - } - return locales[name]; -} + for (; i < ilen; ++i) { + var val = scale._parseValue(dataset.data[i]); + if (!isNaN(val.min) && !isNaN(val.max)) { + rects[i].draw(); + } + } -// This function will load locale and then set the global locale. If -// no arguments are passed in, it will simply return the current global -// locale key. -function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } + helpers$1.canvas.unclipArea(chart.ctx); + }, - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } + /** + * @private + */ + _resolveDataElementOptions: function() { + var me = this; + var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments)); + var indexOpts = me._getIndexScale().options; + var valueOpts = me._getValueScale().options; - return globalLocale._abbr; -} + values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage); + values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness); + values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage); + values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness); + values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength); -function defineLocale (name, config) { - if (config !== null) { - var parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); + return values; + } - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } +}); - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); +var valueOrDefault$4 = helpers$1.valueOrDefault; +var resolve$1 = helpers$1.options.resolve; +core_defaults._set('bubble', { + hover: { + mode: 'single' + }, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } -} + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, -function updateLocale(name, config) { - if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } + } + } +}); - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; -} +var controller_bubble = core_datasetController.extend({ + /** + * @protected + */ + dataElementType: elements.Point, -// returns locale data -function getLocale (key) { - var locale; + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle', + 'rotation' + ], - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + /** + * @protected + */ + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var points = meta.data; - if (!key) { - return globalLocale; - } + // Update Points + helpers$1.each(points, function(point, index) { + me.updateElement(point, index, reset); + }); + }, - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + /** + * @protected + */ + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveDataElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; + + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + rotation: options.rotation, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; - return chooseLocale(key); -} + point.pivot(); + }, -function listLocales() { - return keys(locales); -} + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; -function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } + model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; + }, - getParsingFlags(m).overflow = overflow; - } + /** + * @private + */ + _resolveDataElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var custom = point.custom || {}; + var data = dataset.data[index] || {}; + var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments); + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; - return m; -} + // In case values were cached (and thus frozen), we need to clone the values + if (me._cachedDataOpts === values) { + values = helpers$1.extend({}, values); + } -// Pick the first defined of two or three arguments. -function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; -} + // Custom radius resolution + values.radius = resolve$1([ + custom.radius, + data.r, + me._config.radius, + chart.options.elements.point.radius + ], context, index); -function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; -} + return values; + } +}); -// convert an array to a date. -// the array should mirror the parameters below -// note: all values past the year are optional and will default to the lowest possible value. -// [year, month, day , hour, minute, second, millisecond] -function configFromArray (config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; +var valueOrDefault$5 = helpers$1.valueOrDefault; - if (config._d) { - return; - } +var PI$1 = Math.PI; +var DOUBLE_PI$1 = PI$1 * 2; +var HALF_PI$1 = PI$1 / 2; - currentDate = currentDateArray(config); +core_defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, + hover: { + mode: 'single' + }, + legendCallback: function(chart) { + var list = document.createElement('ul'); + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + var i, ilen, listItem, listItemSpan; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + list.setAttribute('class', chart.id + '-legend'); + if (datasets.length) { + for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) { + listItem = list.appendChild(document.createElement('li')); + listItemSpan = listItem.appendChild(document.createElement('span')); + listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i]; + if (labels[i]) { + listItem.appendChild(document.createTextNode(labels[i])); + } + } + } - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + return list.outerHTML; + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var style = meta.controller.getStyle(i); - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden, - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + chart.update(); + } + }, - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + // The rotation of the chart, where the first data arc begins. + rotation: -HALF_PI$1, - if (config._nextDay) { - config._a[HOUR] = 24; - } + // The total circumference of the chart. + circumference: DOUBLE_PI$1, - // check for mismatching day of week - if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } -} + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; -function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + if (helpers$1.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } - var curWeek = weekOfYear(createLocal(), dow, doy); + return dataLabel; + } + } + } +}); - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); +var controller_doughnut = core_datasetController.extend({ - // Default to current week. - week = defaults(w.w, curWeek.week); + dataElementType: elements.Arc, - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to begining of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } -} + linkScales: helpers$1.noop, -// iso 8601 regex -// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) -var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; -var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - -var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - -var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] -]; - -// iso time formats and regexes -var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] -]; - -var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - -// date from iso format -function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } -} + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ], + + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; + + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } -// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 -var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; + return ringIndex; + }, -function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { - var result = [ - untruncateYear(yearStr), - defaultLocaleMonthsShort.indexOf(monthStr), - parseInt(dayStr, 10), - parseInt(hourStr, 10), - parseInt(minuteStr, 10) - ]; + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var ratioX = 1; + var ratioY = 1; + var offsetX = 0; + var offsetY = 0; + var meta = me.getMeta(); + var arcs = meta.data; + var cutout = opts.cutoutPercentage / 100 || 0; + var circumference = opts.circumference; + var chartWeight = me._getRingWeight(me.index); + var maxWidth, maxHeight, i, ilen; + + // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc + if (circumference < DOUBLE_PI$1) { + var startAngle = opts.rotation % DOUBLE_PI$1; + startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0; + var endAngle = startAngle + circumference; + var startX = Math.cos(startAngle); + var startY = Math.sin(startAngle); + var endX = Math.cos(endAngle); + var endY = Math.sin(endAngle); + var contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1; + var contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1; + var contains180 = startAngle === -PI$1 || endAngle >= PI$1; + var contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1; + var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout); + var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout); + var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout); + var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout); + ratioX = (maxX - minX) / 2; + ratioY = (maxY - minY) / 2; + offsetX = -(maxX + minX) / 2; + offsetY = -(maxY + minY) / 2; + } - if (secondStr) { - result.push(parseInt(secondStr, 10)); - } + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveDataElementOptions(arcs[i], i); + } - return result; -} + chart.borderWidth = me.getMaxBorderWidth(); + maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX; + maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY; + chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); + chart.innerRadius = Math.max(chart.outerRadius * cutout, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); + chart.offsetX = offsetX * chart.outerRadius; + chart.offsetY = offsetY * chart.outerRadius; -function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2000 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; -} + meta.total = me.calculateTotal(); -function preprocessRFC2822(s) { - // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim(); -} + me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0); -function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; - } - } - return true; -} + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + me.updateElement(arcs[i], i, reset); + } + }, -var obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 -}; + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, -function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - // the only allowed military tz is Z - return 0; - } else { - var hm = parseInt(numOffset, 10); - var m = hm % 100, h = (hm - m) / 100; - return h * 60 + m; - } -} + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } + }); -// date and time from ref 2822 format -function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)); - if (match) { - var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } + var model = arc._model; - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + model.endAngle = model.startAngle + model.circumference; + } - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; - } -} + arc.pivot(); + }, -// date from iso format or fallback -function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } + helpers$1.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } + /* if (total === 0) { + total = NaN; + }*/ - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } + return total; + }, - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); -} + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return DOUBLE_PI$1 * (Math.abs(value) / total); + } + return 0; + }, -hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } -); + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var me = this; + var max = 0; + var chart = me.chart; + var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; -// constant that refers to the ISO standard -hooks.ISO_8601 = function () {}; + if (!arcs) { + // Find the outmost visible dataset + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + if (i !== me.index) { + controller = meta.controller; + } + break; + } + } + } -// constant that refers to the RFC 2822 form -hooks.RFC_2822 = function () {}; + if (!arcs) { + return 0; + } -// date from string and format string -function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - // console.log('token', token, 'parsedInput', parsedInput, - // 'regex', getParseRegexForToken(token, config)); - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arc = arcs[i]; + if (controller) { + controller._configure(); + options = controller._resolveDataElementOptions(arc, i); + } else { + options = arc._options; + } + if (options.borderAlign !== 'inner') { + borderWidth = options.borderWidth; + hoverWidth = options.hoverBorderWidth; - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } + } + return max; + }, - // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth); + }, - configFromArray(config); - checkOverflow(config); -} + /** + * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly + * @private + */ + _getRingWeightOffset: function(datasetIndex) { + var ringWeightOffset = 0; + for (var i = 0; i < datasetIndex; ++i) { + if (this.chart.isDatasetVisible(i)) { + ringWeightOffset += this._getRingWeight(i); + } + } -function meridiemFixWrap (locale, hour, meridiem) { - var isPm; + return ringWeightOffset; + }, - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } -} + /** + * @private + */ + _getRingWeight: function(dataSetIndex) { + return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0); + }, + + /** + * Returns the sum of all visibile data set weights. This value can be 0. + * @private + */ + _getVisibleDatasetWeightTotal: function() { + return this._getRingWeightOffset(this.chart.data.datasets.length); + } +}); -// date from string and array of format strings -function configFromStringAndArray(config) { - var tempConfig, - bestMoment, +core_defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' + }, - scoreToBeat, - i, - currentScore; + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } + yAxes: [{ + type: 'category', + position: 'left', + offset: true, + gridLines: { + offsetGridLines: true + } + }] + }, - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); + elements: { + rectangle: { + borderSkipped: 'left' + } + }, - if (!isValid(tempConfig)) { - continue; - } + tooltips: { + mode: 'index', + axis: 'y' + } +}); - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; +core_defaults._set('global', { + datasets: { + horizontalBar: { + categoryPercentage: 0.8, + barPercentage: 0.9 + } + } +}); - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; +var controller_horizontalBar = controller_bar.extend({ + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().xAxisID; + }, - getParsingFlags(tempConfig).score = currentScore; + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().yAxisID; + } +}); - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } +var valueOrDefault$6 = helpers$1.valueOrDefault; +var resolve$2 = helpers$1.options.resolve; +var isPointInArea = helpers$1.canvas._isPointInArea; - extend(config, bestMoment || tempConfig); -} +core_defaults._set('line', { + showLines: true, + spanGaps: false, -function configFromObject(config) { - if (config._d) { - return; - } + hover: { + mode: 'label' + }, - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] + } +}); - configFromArray(config); +function scaleClip(scale, halfBorderWidth) { + var tickOpts = scale && scale.options.ticks || {}; + var reverse = tickOpts.reverse; + var min = tickOpts.min === undefined ? halfBorderWidth : 0; + var max = tickOpts.max === undefined ? halfBorderWidth : 0; + return { + start: reverse ? max : min, + end: reverse ? min : max + }; } -function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } +function defaultClip(xScale, yScale, borderWidth) { + var halfBorderWidth = borderWidth / 2; + var x = scaleClip(xScale, halfBorderWidth); + var y = scaleClip(yScale, halfBorderWidth); - return res; + return { + top: y.end, + right: x.end, + bottom: y.start, + left: x.start + }; } -function prepareConfig (config) { - var input = config._i, - format = config._f; +function toClip(value) { + var t, r, b, l; - config._locale = config._locale || getLocale(config._l); + if (helpers$1.isObject(value)) { + t = value.top; + r = value.right; + b = value.bottom; + l = value.left; + } else { + t = r = b = l = value; + } - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } + return { + top: t, + right: r, + bottom: b, + left: l + }; +} - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } +var controller_line = core_datasetController.extend({ - if (!isValid(config)) { - config._d = null; - } + datasetElementType: elements.Line, - return config; -} + dataElementType: elements.Point, -function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } -} + /** + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderCapStyle', + 'borderColor', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'borderWidth', + 'cubicInterpolationMode', + 'fill' + ], -function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; + /** + * @private + */ + _dataElementOptions: { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }, - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var options = me.chart.options; + var config = me._config; + var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines); + var i, ilen; + + me._xScale = me.getScaleForId(meta.xAxisID); + me._yScale = me.getScaleForId(meta.yAxisID); + + // Update Line + if (showLine) { + // Compatibility: If the properties are defined with only the old name, use those values + if (config.tension !== undefined && config.lineTension === undefined) { + config.lineTension = config.tension; + } - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); -} + // Utility + line._scale = me._yScale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = me._resolveDatasetElementOptions(line); + + line.pivot(); + } -function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); -} + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } -var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } -); + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); + } -var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } -); + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, -// Pick a moment m from moments so that m[fn](other) is true for all -// other. This relies on the function fn to be transitive. -// -// moments should either be an array of moment objects or an array, whose -// first element is an array of moment objects. -function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; -} + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var xScale = me._xScale; + var yScale = me._yScale; + var lineModel = meta.dataset._model; + var x, y; -// TODO: Use [].sort instead? -function min () { - var args = [].slice.call(arguments, 0); + var options = me._resolveDataElementOptions(point, index); - return pickBy('isBefore', args); -} + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); -function max () { - var args = [].slice.call(arguments, 0); + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = datasetIndex; + point._index = index; - return pickBy('isAfter', args); -} + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0), + steppedLine: lineModel ? lineModel.steppedLine : false, + // Tooltip + hitRadius: options.hitRadius + }; + }, -var now = function () { - return Date.now ? Date.now() : +(new Date()); -}; + /** + * @private + */ + _resolveDatasetElementOptions: function(element) { + var me = this; + var config = me._config; + var custom = element.custom || {}; + var options = me.chart.options; + var lineOptions = options.elements.line; + var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); + + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps); + values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension); + values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]); + values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth))); + + return values; + }, -var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var yScale = me._yScale; + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen; -function isDurationValid(m) { - for (var key in m) { - if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { - return false; - } - } + if (yScale.options.stacked) { + rightValue = +yScale.getRightValue(value); + metasets = chart._getSortedVisibleDatasetMetas(); + ilen = metasets.length; - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } + for (i = 0; i < ilen; ++i) { + dsMeta = metasets[i]; + if (dsMeta.index === datasetIndex) { + break; + } - return true; -} + ds = chart.data.datasets[dsMeta.index]; + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) { + stackedRightValue = +yScale.getRightValue(ds.data[index]); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } + } -function isValid$1() { - return this._isValid; -} + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); + } + return yScale.getPixelForValue(value); + }, -function createInvalid$1() { - return createDuration(NaN); -} + updateBezierControlPoints: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var lineModel = meta.dataset._model; + var area = chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (lineModel.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } -function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - this._isValid = isDurationValid(normalizedInput); - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible to translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); -} + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } -function isDuration (obj) { - return obj instanceof Duration; -} + if (lineModel.cubicInterpolationMode === 'monotone') { + helpers$1.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i)._model, + model, + helpers$1.nextItem(points, i)._model, + lineModel.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } -function absRound (number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } -} + if (chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + if (isPointInArea(model, area)) { + if (i > 0 && isPointInArea(points[i - 1]._model, area)) { + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + } + if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) { + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } + } + } + } + }, -// FORMATTING + draw: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var canvas = chart.canvas; + var i = 0; + var ilen = points.length; + var clip; -function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); -} + if (me._showLine) { + clip = meta.dataset._model.clip; -offset('Z', ':'); -offset('ZZ', ''); + helpers$1.canvas.clipArea(chart.ctx, { + left: clip.left === false ? 0 : area.left - clip.left, + right: clip.right === false ? canvas.width : area.right + clip.right, + top: clip.top === false ? 0 : area.top - clip.top, + bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom + }); -// PARSING + meta.dataset.draw(); -addRegexToken('Z', matchShortOffset); -addRegexToken('ZZ', matchShortOffset); -addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); -}); + helpers$1.canvas.unclipArea(chart.ctx); + } -// HELPERS + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, -// timezone chunker -// '+10:00' > ['10', '00'] -// '-1530' > ['-15', '30'] -var chunkOffset = /([\+\-]|\d\d)/gi; + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; -function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); + model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$6(options.hoverRadius, options.radius); + }, +}); - if (matches === null) { - return null; - } +var resolve$3 = helpers$1.options.resolve; - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); +core_defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false + }, + gridLines: { + circular: true + }, + pointLabels: { + display: false + }, + ticks: { + beginAtZero: true + } + }, - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; -} + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, -// Return a moment from input, that is local/utc/zone equivalent to model. -function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } -} + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var list = document.createElement('ul'); + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + var i, ilen, listItem, listItemSpan; -function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; -} + list.setAttribute('class', chart.id + '-legend'); + if (datasets.length) { + for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) { + listItem = list.appendChild(document.createElement('li')); + listItemSpan = listItem.appendChild(document.createElement('span')); + listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i]; + if (labels[i]) { + listItem.appendChild(document.createTextNode(labels[i])); + } + } + } -// HOOKS - -// This function will be called whenever a moment is mutated. -// It is intended to keep the offset in sync with the timezone. -hooks.updateOffset = function () {}; - -// MOMENTS - -// keepLocalTime = true means only change the timezone, without -// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> -// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset -// +0200, so we adjust the time as needed, to be valid. -// -// Keeping the time actually adds/subtracts (one hour) -// from the actual represented time. That is why we call updateOffset -// a second time. In case it wants us to change the offset again -// _changeInProgress == true case, then we have to adjust, because -// there is no such time in the given timezone. -function getSetOffset (input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } -} + return list.outerHTML; + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var style = meta.controller.getStyle(i); -function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden, - this.utcOffset(input, keepLocalTime); + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, - return this; - } else { - return -this.utcOffset(); - } -} + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; -function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); -} + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } -function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + chart.update(); + } + }, - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; -} + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; + } + } + } +}); -function setOffsetToParsedOffset () { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } - else { - this.utcOffset(0, true); - } - } - return this; -} +var controller_polarArea = core_datasetController.extend({ -function hasAlignedHourOffset (input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; + dataElementType: elements.Arc, - return (this.utcOffset() - input) % 60 === 0; -} + linkScales: helpers$1.noop, -function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); -} + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ], -function isDaylightSavingTimeShifted () { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } + /** + * @private + */ + _getIndexScaleId: function() { + return this.chart.scale.id; + }, - var c = {}; + /** + * @private + */ + _getValueScaleId: function() { + return this.chart.scale.id; + }, - copyConfig(c, this); - c = prepareConfig(c); + update: function(reset) { + var me = this; + var dataset = me.getDataset(); + var meta = me.getMeta(); + var start = me.chart.options.startAngle || 0; + var starts = me._starts = []; + var angles = me._angles = []; + var arcs = meta.data; + var i, ilen, angle; + + me._updateRadius(); + + meta.count = me.countVisibleElements(); + + for (i = 0, ilen = dataset.data.length; i < ilen; i++) { + starts[i] = start; + angle = me._computeAngle(i); + angles[i] = angle; + start += angle; + } - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveDataElementOptions(arcs[i], i); + me.updateElement(arcs[i], i, reset); + } + }, - return this._isDSTShifted; -} + /** + * @private + */ + _updateRadius: function() { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); -function isLocal () { - return this.isValid() ? !this._isUTC : false; -} + chart.outerRadius = Math.max(minSize / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); -function isUtcOffset () { - return this.isValid() ? this._isUTC : false; -} + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; + }, -function isUtc () { - return this.isValid() ? this._isUTC && this._offset === 0 : false; -} + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; + + var centerX = scale.xCenter; + var centerY = scale.yCenter; + + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = me._starts[index]; + var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); + + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, -// ASP.NET json date format regex -var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - -// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html -// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere -// and further modified to allow for strings containing both week and day -var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - -function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (isNumber(input)) { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); - ret = new Duration(duration); + arc.pivot(); + }, - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; - return ret; -} + helpers$1.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); -createDuration.fn = Duration.prototype; -createDuration.invalid = createInvalid$1; + return count; + }, -function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; -} + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + var valueOrDefault = helpers$1.valueOrDefault; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; -function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); + }, - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + /** + * @private + */ + _computeAngle: function(index) { + var me = this; + var count = this.getMeta().count; + var dataset = me.getDataset(); + var meta = me.getMeta(); - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + if (isNaN(dataset.data[index]) || meta.data[index].hidden) { + return 0; + } - return res; -} + // Scriptable options + var context = { + chart: me.chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; -function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; - } + return resolve$3([ + me.chart.options.elements.arc.angle, + (2 * Math.PI) / count + ], context, index); + } +}); - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } +core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut)); +core_defaults._set('pie', { + cutoutPercentage: 0 +}); - return res; -} +// Pie charts are Doughnut chart with different defaults +var controller_pie = controller_doughnut; -// TODO: remove 'name' arg after deprecation is removed -function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; - } +var valueOrDefault$7 = helpers$1.valueOrDefault; - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; -} +core_defaults._set('radar', { + spanGaps: false, + scale: { + type: 'radialLinear' + }, + elements: { + line: { + fill: 'start', + tension: 0 // no bezier in radar + } + } +}); -function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); +var controller_radar = core_datasetController.extend({ + datasetElementType: elements.Line, - if (!mom.isValid()) { - // No op - return; - } + dataElementType: elements.Point, - updateOffset = updateOffset == null ? true : updateOffset; + linkScales: helpers$1.noop, - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } -} + /** + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderWidth', + 'borderColor', + 'borderCapStyle', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'fill' + ], -var add = createAdder(1, 'add'); -var subtract = createAdder(-1, 'subtract'); - -function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; -} + /** + * @private + */ + _dataElementOptions: { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }, -function calendar$1 (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; + /** + * @private + */ + _getIndexScaleId: function() { + return this.chart.scale.id; + }, - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + /** + * @private + */ + _getValueScaleId: function() { + return this.chart.scale.id; + }, - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); -} + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var scale = me.chart.scale; + var config = me._config; + var i, ilen; + + // Compatibility: If the properties are defined with only the old name, use those values + if (config.tension !== undefined && config.lineTension === undefined) { + config.lineTension = config.tension; + } -function clone () { - return new Moment(this); -} + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + line._loop = true; + // Model + line._model = me._resolveDatasetElementOptions(line); -function isAfter (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } -} + line.pivot(); -function isBefore (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } -} + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } -function isBetween (from, to, units, inclusivity) { - inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && - (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); -} + // Update bezier control points + me.updateBezierControlPoints(); -function isSame (input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } -} + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, -function isSameOrAfter (input, units) { - return this.isSame(input, units) || this.isAfter(input,units); -} + updateElement: function(point, index, reset) { + var me = this; + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var options = me._resolveDataElementOptions(point, index); + var lineModel = me.getMeta().dataset._model; + var x = reset ? scale.xCenter : pointPosition.x; + var y = reset ? scale.yCenter : pointPosition.y; + + // Utility + point._scale = scale; + point._options = options; + point._datasetIndex = me.index; + point._index = index; + + // Desired view properties + point._model = { + x: x, // value not used in dataset scale, but we want a consistent API between scales + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0), + + // Tooltip + hitRadius: options.hitRadius + }; + }, -function isSameOrBefore (input, units) { - return this.isSame(input, units) || this.isBefore(input,units); -} + /** + * @private + */ + _resolveDatasetElementOptions: function() { + var me = this; + var config = me._config; + var options = me.chart.options; + var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); -function diff (input, units, asFloat) { - var that, - zoneDelta, - delta, output; + values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps); + values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension); - if (!this.isValid()) { - return NaN; - } + return values; + }, - that = cloneWithOffset(input, this); + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } - if (!that.isValid()) { - return NaN; - } + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i, true)._model, + model, + helpers$1.nextItem(points, i, true)._model, + model.tension + ); + + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); + model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); + model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); + model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); + } + }, - units = normalizeUnits(units); + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; - switch (units) { - case 'year': output = monthDiff(this, that) / 12; break; - case 'month': output = monthDiff(this, that); break; - case 'quarter': output = monthDiff(this, that) / 3; break; - case 'second': output = (this - that) / 1e3; break; // 1000 - case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 - case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 - case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst - case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: output = this - that; - } + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; - return asFloat ? output : absFloor(output); -} + model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$7(options.hoverRadius, options.radius); + } +}); -function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } +core_defaults._set('scatter', { + hover: { + mode: 'single' + }, - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; -} + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, -hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; -hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; + } + } + } +}); -function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); -} +core_defaults._set('global', { + datasets: { + scatter: { + showLine: false + } + } +}); -function toISOString(keepOffset) { - if (!this.isValid()) { - return null; - } - var utc = keepOffset !== true; - var m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); - } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - if (utc) { - return this.toDate().toISOString(); - } else { - return new Date(this._d.valueOf()).toISOString().replace('Z', formatMoment(m, 'Z')); - } - } - return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); -} +// Scatter charts use line controllers +var controller_scatter = controller_line; + +// NOTE export a map in which the key represents the controller type, not +// the class, and so must be CamelCase in order to be correctly retrieved +// by the controller in core.controller.js (`controllers[meta.type]`). + +var controllers = { + bar: controller_bar, + bubble: controller_bubble, + doughnut: controller_doughnut, + horizontalBar: controller_horizontalBar, + line: controller_line, + polarArea: controller_polarArea, + pie: controller_pie, + radar: controller_radar, + scatter: controller_scatter +}; /** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {object} the event position */ -function inspect () { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment'; - var zone = ''; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; - - return this.format(prefix + year + datetime + suffix); -} - -function format (inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); -} - -function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } -function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); + return helpers$1.getRelativePosition(e, chart); } -function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} +/** + * Helper function to traverse all of the visible elements in the chart + * @param {Chart} chart - the chart + * @param {function} handler - the callback to execute for each visible item + */ +function parseVisibleItems(chart, handler) { + var metasets = chart._getSortedVisibleDatasetMetas(); + var metadata, i, j, ilen, jlen, element; -function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + metadata = metasets[i].data; + for (j = 0, jlen = metadata.length; j < jlen; ++j) { + element = metadata[j]; + if (!element._view.skip) { + handler(element); + } + } + } } -// If passed a locale key, it will set the locale for this -// instance. Otherwise, it will return the locale configuration -// variables for this instance. -function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } -} +/** + * Helper function to get the items that intersect the event position + * @param {ChartElement[]} items - elements to filter + * @param {object} position - the point to be nearest to + * @return {ChartElement[]} the nearest items + */ +function getIntersectItems(chart, position) { + var elements = []; -var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } -); + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); -function localeData () { - return this._locale; + return elements; } -function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - case 'date': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; -} +/** + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param {Chart} chart - the chart to look at elements from + * @param {object} position - the point to be nearest to + * @param {boolean} intersect - if true, only consider items that intersect the position + * @param {function} distanceMetric - function to provide the distance between points + * @return {ChartElement[]} the nearest items + */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; -function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } - // 'date' is an alias for 'day', so it should be considered as such. - if (units === 'date') { - units = 'day'; - } + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + return nearestItems; } -function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); -} +/** + * Get a distance metric function for two points based on the + * axis mode setting + * @param {string} axis - the axis mode. x|y|xy + */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; -function unix () { - return Math.floor(this.valueOf() / 1000); + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; } -function toDate () { - return new Date(this.valueOf()); -} +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; -function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; -} + if (!items.length) { + return []; + } -function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; -} + chart._getSortedVisibleDatasetMetas().forEach(function(meta) { + var element = meta.data[items[0]._index]; -function toJSON () { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; -} + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + }); -function isValid$2 () { - return isValid(this); + return elements; } -function parsingFlags () { - return extend({}, getParsingFlags(this)); -} +/** + * @interface IInteractionOptions + */ +/** + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean + */ -function invalidAt () { - return getParsingFlags(this).overflow; -} +/** + * Contains interaction related functions + * @namespace Chart.Interaction + */ +var core_interaction = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; -function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; -} + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); -// FORMATTING + return elements.slice(0, 1); + }, -addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; -}); + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, -addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; -}); + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, -function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); -} + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); -addWeekYearFormatToken('gggg', 'weekYear'); -addWeekYearFormatToken('ggggg', 'weekYear'); -addWeekYearFormatToken('GGGG', 'isoWeekYear'); -addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } -// ALIASES + return items; + }, -addUnitAlias('weekYear', 'gg'); -addUnitAlias('isoWeekYear', 'GG'); + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: false}); + }, -// PRIORITY + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, -addUnitPriority('weekYear', 1); -addUnitPriority('isoWeekYear', 1); + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + return getNearestItems(chart, position, options.intersect, distanceMetric); + }, + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; -// PARSING + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } -addRegexToken('G', matchSigned); -addRegexToken('g', matchSigned); -addRegexToken('GG', match1to2, match2); -addRegexToken('gg', match1to2, match2); -addRegexToken('GGGG', match1to4, match4); -addRegexToken('gggg', match1to4, match4); -addRegexToken('GGGGG', match1to6, match6); -addRegexToken('ggggg', match1to6, match6); + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); -addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); -}); + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, -addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); -}); + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; -// MOMENTS + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } -function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); -} + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); -function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); -} + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + } + } +}; -function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); -} +var extend = helpers$1.extend; -function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +function filterByPosition(array, position) { + return helpers$1.where(array, function(v) { + return v.pos === position; + }); } -function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } +function sortByWeight(array, reverse) { + return array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0.index - v1.index : + v0.weight - v1.weight; + }); } -function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); +function wrapBoxes(boxes) { + var layoutBoxes = []; + var i, ilen, box; - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; + for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { + box = boxes[i]; + layoutBoxes.push({ + index: i, + box: box, + pos: box.position, + horizontal: box.isHorizontal(), + weight: box.weight + }); + } + return layoutBoxes; +} + +function setLayoutDims(layouts, params) { + var i, ilen, layout; + for (i = 0, ilen = layouts.length; i < ilen; ++i) { + layout = layouts[i]; + // store width used instead of chartArea.w in fitBoxes + layout.width = layout.horizontal + ? layout.box.fullWidth && params.availableWidth + : params.vBoxMaxWidth; + // store height used instead of chartArea.h in fitBoxes + layout.height = layout.horizontal && params.hBoxMaxHeight; + } } -// FORMATTING - -addFormatToken('Q', 0, 'Qo', 'quarter'); - -// ALIASES - -addUnitAlias('quarter', 'Q'); - -// PRIORITY +function buildLayoutBoxes(boxes) { + var layoutBoxes = wrapBoxes(boxes); + var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true); + var right = sortByWeight(filterByPosition(layoutBoxes, 'right')); + var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true); + var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom')); -addUnitPriority('quarter', 7); - -// PARSING - -addRegexToken('Q', match1); -addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; -}); - -// MOMENTS - -function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + return { + leftAndTop: left.concat(top), + rightAndBottom: right.concat(bottom), + chartArea: filterByPosition(layoutBoxes, 'chartArea'), + vertical: left.concat(right), + horizontal: top.concat(bottom) + }; } -// FORMATTING +function getCombinedMax(maxPadding, chartArea, a, b) { + return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); +} -addFormatToken('D', ['DD', 2], 'Do', 'date'); +function updateDims(chartArea, params, layout) { + var box = layout.box; + var maxPadding = chartArea.maxPadding; + var newWidth, newHeight; -// ALIASES + if (layout.size) { + // this layout was already counted for, lets first reduce old size + chartArea[layout.pos] -= layout.size; + } + layout.size = layout.horizontal ? box.height : box.width; + chartArea[layout.pos] += layout.size; + + if (box.getPadding) { + var boxPadding = box.getPadding(); + maxPadding.top = Math.max(maxPadding.top, boxPadding.top); + maxPadding.left = Math.max(maxPadding.left, boxPadding.left); + maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); + maxPadding.right = Math.max(maxPadding.right, boxPadding.right); + } -addUnitAlias('date', 'D'); + newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'); + newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'); -// PRIOROITY -addUnitPriority('date', 9); + if (newWidth !== chartArea.w || newHeight !== chartArea.h) { + chartArea.w = newWidth; + chartArea.h = newHeight; -// PARSING + // return true if chart area changed in layout's direction + return layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h; + } +} -addRegexToken('D', match1to2); -addRegexToken('DD', match1to2, match2); -addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; -}); +function handleMaxPadding(chartArea) { + var maxPadding = chartArea.maxPadding; -addParseToken(['D', 'DD'], DATE); -addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); -}); + function updatePos(pos) { + var change = Math.max(maxPadding[pos] - chartArea[pos], 0); + chartArea[pos] += change; + return change; + } + chartArea.y += updatePos('top'); + chartArea.x += updatePos('left'); + updatePos('right'); + updatePos('bottom'); +} -// MOMENTS +function getMargins(horizontal, chartArea) { + var maxPadding = chartArea.maxPadding; -var getSetDayOfMonth = makeGetSet('Date', true); + function marginForPositions(positions) { + var margin = {left: 0, top: 0, right: 0, bottom: 0}; + positions.forEach(function(pos) { + margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); + }); + return margin; + } -// FORMATTING + return horizontal + ? marginForPositions(['left', 'right']) + : marginForPositions(['top', 'bottom']); +} -addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); +function fitBoxes(boxes, chartArea, params) { + var refitBoxes = []; + var i, ilen, layout, box, refit, changed; -// ALIASES + for (i = 0, ilen = boxes.length; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; -addUnitAlias('dayOfYear', 'DDD'); + box.update( + layout.width || chartArea.w, + layout.height || chartArea.h, + getMargins(layout.horizontal, chartArea) + ); + if (updateDims(chartArea, params, layout)) { + changed = true; + if (refitBoxes.length) { + // Dimensions changed and there were non full width boxes before this + // -> we have to refit those + refit = true; + } + } + if (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case + refitBoxes.push(layout); + } + } -// PRIORITY -addUnitPriority('dayOfYear', 4); + return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed; +} + +function placeBoxes(boxes, chartArea, params) { + var userPadding = params.padding; + var x = chartArea.x; + var y = chartArea.y; + var i, ilen, layout, box; + + for (i = 0, ilen = boxes.length; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; + if (layout.horizontal) { + box.left = box.fullWidth ? userPadding.left : chartArea.left; + box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w; + box.top = y; + box.bottom = y + box.height; + box.width = box.right - box.left; + y = box.bottom; + } else { + box.left = x; + box.right = x + box.width; + box.top = chartArea.top; + box.bottom = chartArea.top + chartArea.h; + box.height = box.bottom - box.top; + x = box.right; + } + } -// PARSING + chartArea.x = x; + chartArea.y = y; +} -addRegexToken('DDD', match1to3); -addRegexToken('DDDD', match3); -addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); +core_defaults._set('global', { + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } }); -// HELPERS - -// MOMENTS - -function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); -} - -// FORMATTING +/** + * @interface ILayoutItem + * @prop {string} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {function} update - Takes two parameters: width and height. Returns size of item + * @prop {function} getPadding - Returns an object with padding on the edges + * @prop {number} width - Width of item. Must be valid after update() + * @prop {number} height - Height of item. Must be valid after update() + * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ -addFormatToken('m', ['mm', 2], 0, 'minute'); +// The layout service is very self explanatory. It's responsible for the layout within a chart. +// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need +// It is this service's responsibility of carrying out that layout. +var core_layouts = { + defaults: {}, -// ALIASES + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } -addUnitAlias('minute', 'm'); + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + item._layers = item._layers || function() { + return [{ + z: 0, + draw: function() { + item.draw.apply(item, arguments); + } + }]; + }; -// PRIORITY + chart.boxes.push(item); + }, -addUnitPriority('minute', 14); + /** + * Remove a layoutItem from a chart + * @param {Chart} chart - the chart to remove the box from + * @param {ILayoutItem} layoutItem - the item to remove from the layout + */ + removeBox: function(chart, layoutItem) { + var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, -// PARSING + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @param {ILayoutItem} item - the item to configure with the given options + * @param {object} options - the new item options. + */ + configure: function(chart, item, options) { + var props = ['fullWidth', 'position', 'weight']; + var ilen = props.length; + var i = 0; + var prop; -addRegexToken('m', match1to2); -addRegexToken('mm', match1to2, match2); -addParseToken(['m', 'mm'], MINUTE); + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; + } + } + }, -// MOMENTS + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {number} width - the width to fit into + * @param {number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } -var getSetMinute = makeGetSet('Minutes', false); + var layoutOptions = chart.options.layout || {}; + var padding = helpers$1.options.toPadding(layoutOptions.padding); -// FORMATTING + var availableWidth = width - padding.width; + var availableHeight = height - padding.height; + var boxes = buildLayoutBoxes(chart.boxes); + var verticalBoxes = boxes.vertical; + var horizontalBoxes = boxes.horizontal; -addFormatToken('s', ['ss', 2], 0, 'second'); + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // -// ALIASES + var params = Object.freeze({ + outerWidth: width, + outerHeight: height, + padding: padding, + availableWidth: availableWidth, + vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length, + hBoxMaxHeight: availableHeight / 2 + }); + var chartArea = extend({ + maxPadding: extend({}, padding), + w: availableWidth, + h: availableHeight, + x: padding.left, + y: padding.top + }, padding); + + setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); + + // First fit vertical boxes + fitBoxes(verticalBoxes, chartArea, params); + + // Then fit horizontal boxes + if (fitBoxes(horizontalBoxes, chartArea, params)) { + // if the area changed, re-fit vertical boxes + fitBoxes(verticalBoxes, chartArea, params); + } -addUnitAlias('second', 's'); + handleMaxPadding(chartArea); -// PRIORITY + // Finally place the boxes to correct coordinates + placeBoxes(boxes.leftAndTop, chartArea, params); -addUnitPriority('second', 15); + // Move to opposite side of chart + chartArea.x += chartArea.w; + chartArea.y += chartArea.h; -// PARSING + placeBoxes(boxes.rightAndBottom, chartArea, params); -addRegexToken('s', match1to2); -addRegexToken('ss', match1to2, match2); -addParseToken(['s', 'ss'], SECOND); + chart.chartArea = { + left: chartArea.left, + top: chartArea.top, + right: chartArea.left + chartArea.w, + bottom: chartArea.top + chartArea.h + }; -// MOMENTS + // Finally update boxes in chartArea (radial scale for example) + helpers$1.each(boxes.chartArea, function(layout) { + var box = layout.box; + extend(box, chart.chartArea); + box.update(chartArea.w, chartArea.h); + }); + } +}; -var getSetSecond = makeGetSet('Seconds', false); +/** + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 + */ -// FORMATTING +var platform_basic = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } -addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); -}); + return item && item.getContext('2d') || null; + } +}; -addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); -}); +var platform_dom = "/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"; -addFormatToken(0, ['SSS', 3], 0, 'millisecond'); -addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; -}); -addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; -}); -addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; -}); -addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; +var platform_dom$1 = /*#__PURE__*/Object.freeze({ +__proto__: null, +'default': platform_dom }); -addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; -}); -addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; -}); - - -// ALIASES -addUnitAlias('millisecond', 'ms'); +var stylesheet = getCjsExportFromNamespace(platform_dom$1); -// PRIORITY - -addUnitPriority('millisecond', 16); - -// PARSING +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; -addRegexToken('S', match1to3, match1); -addRegexToken('SS', match1to3, match2); -addRegexToken('SSS', match1to3, match3); +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; -var token; -for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers$1.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; } -function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); -} +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; -for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); -} -// MOMENTS + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); -var getSetMillisecond = makeGetSet('Milliseconds', false); + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; -// FORMATTING + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; -addFormatToken('z', 0, 0, 'zoneAbbr'); -addFormatToken('zz', 0, 0, 'zoneName'); + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } -// MOMENTS + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } + } -function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; + return canvas; } -function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; -} +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line getter-return + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error + } + return supports; +}()); + +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; -var proto = Moment.prototype; - -proto.add = add; -proto.calendar = calendar$1; -proto.clone = clone; -proto.diff = diff; -proto.endOf = endOf; -proto.format = format; -proto.from = from; -proto.fromNow = fromNow; -proto.to = to; -proto.toNow = toNow; -proto.get = stringGet; -proto.invalidAt = invalidAt; -proto.isAfter = isAfter; -proto.isBefore = isBefore; -proto.isBetween = isBetween; -proto.isSame = isSame; -proto.isSameOrAfter = isSameOrAfter; -proto.isSameOrBefore = isSameOrBefore; -proto.isValid = isValid$2; -proto.lang = lang; -proto.locale = locale; -proto.localeData = localeData; -proto.max = prototypeMax; -proto.min = prototypeMin; -proto.parsingFlags = parsingFlags; -proto.set = stringSet; -proto.startOf = startOf; -proto.subtract = subtract; -proto.toArray = toArray; -proto.toObject = toObject; -proto.toDate = toDate; -proto.toISOString = toISOString; -proto.inspect = inspect; -proto.toJSON = toJSON; -proto.toString = toString; -proto.unix = unix; -proto.valueOf = valueOf; -proto.creationData = creationData; - -// Year -proto.year = getSetYear; -proto.isLeapYear = getIsLeapYear; - -// Week Year -proto.weekYear = getSetWeekYear; -proto.isoWeekYear = getSetISOWeekYear; - -// Quarter -proto.quarter = proto.quarters = getSetQuarter; - -// Month -proto.month = getSetMonth; -proto.daysInMonth = getDaysInMonth; - -// Week -proto.week = proto.weeks = getSetWeek; -proto.isoWeek = proto.isoWeeks = getSetISOWeek; -proto.weeksInYear = getWeeksInYear; -proto.isoWeeksInYear = getISOWeeksInYear; - -// Day -proto.date = getSetDayOfMonth; -proto.day = proto.days = getSetDayOfWeek; -proto.weekday = getSetLocaleDayOfWeek; -proto.isoWeekday = getSetISODayOfWeek; -proto.dayOfYear = getSetDayOfYear; - -// Hour -proto.hour = proto.hours = getSetHour; - -// Minute -proto.minute = proto.minutes = getSetMinute; - -// Second -proto.second = proto.seconds = getSetSecond; - -// Millisecond -proto.millisecond = proto.milliseconds = getSetMillisecond; - -// Offset -proto.utcOffset = getSetOffset; -proto.utc = setOffsetToUTC; -proto.local = setOffsetToLocal; -proto.parseZone = setOffsetToParsedOffset; -proto.hasAlignedHourOffset = hasAlignedHourOffset; -proto.isDST = isDaylightSavingTime; -proto.isLocal = isLocal; -proto.isUtcOffset = isUtcOffset; -proto.isUtc = isUtc; -proto.isUTC = isUtc; - -// Timezone -proto.zoneAbbr = getZoneAbbr; -proto.zoneName = getZoneName; - -// Deprecations -proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); -proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); -proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); -proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); -proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); - -function createUnix (input) { - return createLocal(input * 1000); +function addListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); } -function createInZone () { - return createLocal.apply(null, arguments).parseZone(); +function removeListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); } -function preParsePostFormat (string) { - return string; +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; } -var proto$1 = Locale.prototype; - -proto$1.calendar = calendar; -proto$1.longDateFormat = longDateFormat; -proto$1.invalidDate = invalidDate; -proto$1.ordinal = ordinal; -proto$1.preparse = preParsePostFormat; -proto$1.postformat = preParsePostFormat; -proto$1.relativeTime = relativeTime; -proto$1.pastFuture = pastFuture; -proto$1.set = set; - -// Month -proto$1.months = localeMonths; -proto$1.monthsShort = localeMonthsShort; -proto$1.monthsParse = localeMonthsParse; -proto$1.monthsRegex = monthsRegex; -proto$1.monthsShortRegex = monthsShortRegex; - -// Week -proto$1.week = localeWeek; -proto$1.firstDayOfYear = localeFirstDayOfYear; -proto$1.firstDayOfWeek = localeFirstDayOfWeek; - -// Day of Week -proto$1.weekdays = localeWeekdays; -proto$1.weekdaysMin = localeWeekdaysMin; -proto$1.weekdaysShort = localeWeekdaysShort; -proto$1.weekdaysParse = localeWeekdaysParse; - -proto$1.weekdaysRegex = weekdaysRegex; -proto$1.weekdaysShortRegex = weekdaysShortRegex; -proto$1.weekdaysMinRegex = weekdaysMinRegex; - -// Hours -proto$1.isPM = localeIsPM; -proto$1.meridiem = localeMeridiem; - -function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers$1.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); } -function listMonthsImpl (format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } +function throttled(fn, thisArg) { + var ticking = false; + var args = []; - format = format || ''; + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; - if (index != null) { - return get$1(format, index, field, 'month'); - } + if (!ticking) { + ticking = true; + helpers$1.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} - var i; - var out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; +function createDiv(cls) { + var el = document.createElement('div'); + el.className = cls || ''; + return el; } -// () -// (5) -// (fmt, 5) -// (fmt) -// (true) -// (true, 5) -// (true, fmt, 5) -// (true, fmt) -function listWeekdaysImpl (localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var maxSize = 1000000; - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; + // NOTE(SB) Don't use innerHTML because it could be considered unsafe. + // https://github.com/chartjs/Chart.js/issues/5902 + var resizer = createDiv(CSS_SIZE_MONITOR); + var expand = createDiv(CSS_SIZE_MONITOR + '-expand'); + var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink'); - if (isNumber(format)) { - index = format; - format = undefined; - } + expand.appendChild(createDiv()); + shrink.appendChild(createDiv()); - format = format || ''; - } + resizer.appendChild(expand); + resizer.appendChild(shrink); + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; + var onScroll = function() { + resizer._reset(); + handler(); + }; - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } + addListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); - var i; - var out = []; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); - } - return out; + return resizer; } -function listMonths (format, index) { - return listMonthsImpl(format, index, 'months'); -} +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; -function listMonthsShort (format, index) { - return listMonthsImpl(format, index, 'monthsShort'); -} + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + addListener(node, type, proxy); + }); -function listWeekdays (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); -} + // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class + // is removed then added back immediately (same animation frame?). Accessing the + // `offsetParent` property will force a reflow and re-evaluate the CSS animation. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics + // https://github.com/chartjs/Chart.js/issues/4737 + expando.reflow = !!node.offsetParent; -function listWeekdaysShort (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + node.classList.add(CSS_RENDER_MONITOR); } -function listWeekdaysMin (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); -} +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; -getSetGlobalLocale('en', { - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); + if (proxy) { + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + removeListener(node, type, proxy); + }); -// Side effect imports -hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); -hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + delete expando.renderProxy; + } -var mathAbs = Math.abs; + node.classList.remove(CSS_RENDER_MONITOR); +} -function abs () { - var data = this._data; +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + var container = chart.options.maintainAspectRatio && node.parentNode; + var w = container ? container.clientWidth : 0; + listener(createEvent('resize', chart)); + if (container && container.clientWidth < w && chart.canvas) { + // If the container size shrank during chart resize, let's assume + // scrollbar appeared. So we resize again with the scrollbar visible - + // effectively making chart smaller and the scrollbar hidden again. + // Because we are inside `throttled`, and currently `ticking`, scroll + // events are ignored during this whole 2 resize process. + // If we assumed wrong and something else happened, we are resizing + // twice in a frame (potential performance issue) + listener(createEvent('resize', chart)); + } + } + })); - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); + // The resizer needs to be attached to the node parent, so we first need to be + // sure that `node` is attached to the DOM before injecting the resizer element. + watchForRender(node, function() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); + } - return this; + // The container size might have changed, let's reset the resizer state. + resizer._reset(); + } + }); } -function addSubtract$1 (duration, input, value, direction) { - var other = createDuration(input, value); +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; + delete expando.resizer; + unwatchForRender(node); - return duration._bubble(); + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); + } } -// supports only 2.0-style add(1, 's') or add(duration) -function add$1 (input, value) { - return addSubtract$1(this, input, value, 1); +/** + * Injects CSS styles inline if the styles are not already present. + * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>. + * @param {string} css - the CSS to be injected. + */ +function injectCSS(rootNode, css) { + // https://stackoverflow.com/q/3922139 + var expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {}); + if (!expando.containsStyles) { + expando.containsStyles = true; + css = '/* Chart.js */\n' + css; + var style = document.createElement('style'); + style.setAttribute('type', 'text/css'); + style.appendChild(document.createTextNode(css)); + rootNode.appendChild(style); + } } -// supports only 2.0-style subtract(1, 's') or subtract(duration) -function subtract$1 (input, value) { - return addSubtract$1(this, input, value, -1); -} +var platform_dom$2 = { + /** + * When `true`, prevents the automatic injection of the stylesheet required to + * correctly detect when the chart is added to the DOM and then resized. This + * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`) + * to be manually imported to make this library compatible with any CSP. + * See https://github.com/chartjs/Chart.js/issues/5208 + */ + disableCSSInjection: false, -function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } -} + /** + * This property holds whether this platform is enabled for the current environment. + * Currently used by platform.js to select the proper implementation. + * @private + */ + _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', -function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } + /** + * Initializes resources that depend on platform options. + * @param {HTMLCanvasElement} canvas - The Canvas element. + * @private + */ + _ensureLoaded: function(canvas) { + if (!this.disableCSSInjection) { + // If the canvas is in a shadow DOM, then the styles must also be inserted + // into the same shadow DOM. + // https://github.com/chartjs/Chart.js/issues/5763 + var root = canvas.getRootNode ? canvas.getRootNode() : document; + var targetNode = root.host ? root : document.head; + injectCSS(targetNode, stylesheet); + } + }, - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + acquireContext: function(item, config) { + if (typeof item === 'string') { + item = document.getElementById(item); + } else if (item.length) { + // Support for array based queries (such as jQuery) + item = item[0]; + } - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; + // To prevent canvas fingerprinting, some add-ons undefine the getContext + // method, for example: https://github.com/kkapsner/CanvasBlocker + // https://github.com/chartjs/Chart.js/issues/2807 + var context = item && item.getContext && item.getContext('2d'); - hours = absFloor(minutes / 60); - data.hours = hours % 24; + // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is + // inside an iframe or when running in a protected environment. We could guess the + // types from their toString() value but let's keep things flexible and assume it's + // a sufficient condition if the item has a context2D which has item as `canvas`. + // https://github.com/chartjs/Chart.js/issues/3887 + // https://github.com/chartjs/Chart.js/issues/4102 + // https://github.com/chartjs/Chart.js/issues/4152 + if (context && context.canvas === item) { + // Load platform resources on first chart creation, to make it possible to + // import the library before setting platform options. + this._ensureLoaded(item); + initCanvas(item, config); + return context; + } - days += absFloor(hours / 24); + return null; + }, - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); + releaseContext: function(context) { + var canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return; + } - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; + var initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach(function(prop) { + var value = initial[prop]; + if (helpers$1.isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); - data.days = days; - data.months = months; - data.years = years; + helpers$1.each(initial.style || {}, function(value, key) { + canvas.style[key] = value; + }); - return this; -} + // The canvas render size might have been changed (and thus the state stack discarded), + // we can't use save() and restore() to restore the initial state. So make sure that at + // least the canvas context is reset to the default state by setting the canvas width. + // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html + // eslint-disable-next-line no-self-assign + canvas.width = canvas.width; -function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; -} + delete canvas[EXPANDO_KEY]; + }, -function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; -} + addEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + addResizeListener(canvas, listener, chart); + return; + } -function as (units) { - if (!this.isValid()) { - return NaN; - } - var days; - var months; - var milliseconds = this._milliseconds; + var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); + var proxies = expando.proxies || (expando.proxies = {}); + var proxy = proxies[chart.id + '_' + type] = function(event) { + listener(fromNativeEvent(event, chart)); + }; - units = normalizeUnits(units); + addListener(canvas, type, proxy); + }, - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } -} + removeEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + removeResizeListener(canvas); + return; + } -// TODO: Use this.as('ms')? -function valueOf$1 () { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); -} + var expando = listener[EXPANDO_KEY] || {}; + var proxies = expando.proxies || {}; + var proxy = proxies[chart.id + '_' + type]; + if (!proxy) { + return; + } -function makeAs (alias) { - return function () { - return this.as(alias); - }; -} + removeListener(canvas, type, proxy); + } +}; -var asMilliseconds = makeAs('ms'); -var asSeconds = makeAs('s'); -var asMinutes = makeAs('m'); -var asHours = makeAs('h'); -var asDays = makeAs('d'); -var asWeeks = makeAs('w'); -var asMonths = makeAs('M'); -var asYears = makeAs('y'); - -function clone$1 () { - return createDuration(this); -} +// DEPRECATIONS -function get$2 (units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; -} +/** + * Provided for backward compatibility, use EventTarget.addEventListener instead. + * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + * @function Chart.helpers.addEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers$1.addEvent = addListener; -function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; -} +/** + * Provided for backward compatibility, use EventTarget.removeEventListener instead. + * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + * @function Chart.helpers.removeEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers$1.removeEvent = removeListener; -var milliseconds = makeGetter('milliseconds'); -var seconds = makeGetter('seconds'); -var minutes = makeGetter('minutes'); -var hours = makeGetter('hours'); -var days = makeGetter('days'); -var months = makeGetter('months'); -var years = makeGetter('years'); +// @TODO Make possible to select another platform at build time. +var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic; -function weeks () { - return absFloor(this.days() / 7); -} +/** + * @namespace Chart.platform + * @see https://chartjs.gitbooks.io/proposals/content/Platform.html + * @since 2.4.0 + */ +var platform = helpers$1.extend({ + /** + * @since 2.7.0 + */ + initialize: function() {}, -var round = Math.round; -var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year -}; + /** + * Called at chart construction time, returns a context2d instance implementing + * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. + * @param {*} item - The native item from which to acquire context (platform specific) + * @param {object} options - The chart options + * @returns {CanvasRenderingContext2D} context2d instance + */ + acquireContext: function() {}, -// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize -function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); -} + /** + * Called at chart destruction time, releases any resources associated to the context + * previously returned by the acquireContext() method. + * @param {CanvasRenderingContext2D} context - The context2d instance + * @returns {boolean} true if the method succeeded, else false + */ + releaseContext: function() {}, -function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); -} + /** + * Registers the specified listener on the given chart. + * @param {Chart} chart - Chart from which to listen for event + * @param {string} type - The ({@link IEvent}) type to listen for + * @param {function} listener - Receives a notification (an object that implements + * the {@link IEvent} interface) when an event of the specified type occurs. + */ + addEventListener: function() {}, -// This function allows you to set the rounding function for relative time strings -function getSetRelativeTimeRounding (roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof(roundingFunction) === 'function') { - round = roundingFunction; - return true; - } - return false; -} + /** + * Removes the specified listener previously registered with addEventListener. + * @param {Chart} chart - Chart from which to remove the listener + * @param {string} type - The ({@link IEvent}) type to remove + * @param {function} listener - The listener function to remove from the event target. + */ + removeEventListener: function() {} -// This function allows you to set a threshold for relative time strings -function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; - } - return true; -} +}, implementation); -function humanize (withSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } +core_defaults._set('global', { + plugins: {} +}); - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); +/** + * The plugin service singleton + * @namespace Chart.plugins + * @since 2.1.0 + */ +var core_plugins = { + /** + * Globally registered plugins. + * @private + */ + _plugins: [], - if (withSuffix) { - output = locale.pastFuture(+this, output); - } + /** + * This identifier is used to invalidate the descriptors cache attached to each chart + * when a global plugin is registered or unregistered. In this case, the cache ID is + * incremented and descriptors are regenerated during following API calls. + * @private + */ + _cacheId: 0, - return locale.postformat(output); -} + /** + * Registers the given plugin(s) if not already registered. + * @param {IPlugin[]|IPlugin} plugins plugin instance(s). + */ + register: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + if (p.indexOf(plugin) === -1) { + p.push(plugin); + } + }); -var abs$1 = Math.abs; + this._cacheId++; + }, -function sign(x) { - return ((x > 0) - (x < 0)) || +x; -} + /** + * Unregisters the given plugin(s) only if registered. + * @param {IPlugin[]|IPlugin} plugins plugin instance(s). + */ + unregister: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + var idx = p.indexOf(plugin); + if (idx !== -1) { + p.splice(idx, 1); + } + }); -function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); - } + this._cacheId++; + }, - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + /** + * Remove all registered plugins. + * @since 2.1.5 + */ + clear: function() { + this._plugins = []; + this._cacheId++; + }, - var totalSign = total < 0 ? '-' : ''; - var ymSign = sign(this._months) !== sign(total) ? '-' : ''; - var daysSign = sign(this._days) !== sign(total) ? '-' : ''; - var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - - return totalSign + 'P' + - (Y ? ymSign + Y + 'Y' : '') + - (M ? ymSign + M + 'M' : '') + - (D ? daysSign + D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? hmsSign + h + 'H' : '') + - (m ? hmsSign + m + 'M' : '') + - (s ? hmsSign + s + 'S' : ''); -} + /** + * Returns the number of registered plugins? + * @returns {number} + * @since 2.1.5 + */ + count: function() { + return this._plugins.length; + }, -var proto$2 = Duration.prototype; - -proto$2.isValid = isValid$1; -proto$2.abs = abs; -proto$2.add = add$1; -proto$2.subtract = subtract$1; -proto$2.as = as; -proto$2.asMilliseconds = asMilliseconds; -proto$2.asSeconds = asSeconds; -proto$2.asMinutes = asMinutes; -proto$2.asHours = asHours; -proto$2.asDays = asDays; -proto$2.asWeeks = asWeeks; -proto$2.asMonths = asMonths; -proto$2.asYears = asYears; -proto$2.valueOf = valueOf$1; -proto$2._bubble = bubble; -proto$2.clone = clone$1; -proto$2.get = get$2; -proto$2.milliseconds = milliseconds; -proto$2.seconds = seconds; -proto$2.minutes = minutes; -proto$2.hours = hours; -proto$2.days = days; -proto$2.weeks = weeks; -proto$2.months = months; -proto$2.years = years; -proto$2.humanize = humanize; -proto$2.toISOString = toISOString$1; -proto$2.toString = toISOString$1; -proto$2.toJSON = toISOString$1; -proto$2.locale = locale; -proto$2.localeData = localeData; - -// Deprecations -proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); -proto$2.lang = lang; - -// Side effect imports - -// FORMATTING - -addFormatToken('X', 0, 0, 'unix'); -addFormatToken('x', 0, 0, 'valueOf'); - -// PARSING - -addRegexToken('x', matchSigned); -addRegexToken('X', matchTimestamp); -addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); -}); -addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); -}); + /** + * Returns all registered plugin instances. + * @returns {IPlugin[]} array of plugin objects. + * @since 2.1.5 + */ + getAll: function() { + return this._plugins; + }, -// Side effect imports - - -hooks.version = '2.20.1'; - -setHookCallback(createLocal); - -hooks.fn = proto; -hooks.min = min; -hooks.max = max; -hooks.now = now; -hooks.utc = createUTC; -hooks.unix = createUnix; -hooks.months = listMonths; -hooks.isDate = isDate; -hooks.locale = getSetGlobalLocale; -hooks.invalid = createInvalid; -hooks.duration = createDuration; -hooks.isMoment = isMoment; -hooks.weekdays = listWeekdays; -hooks.parseZone = createInZone; -hooks.localeData = getLocale; -hooks.isDuration = isDuration; -hooks.monthsShort = listMonthsShort; -hooks.weekdaysMin = listWeekdaysMin; -hooks.defineLocale = defineLocale; -hooks.updateLocale = updateLocale; -hooks.locales = listLocales; -hooks.weekdaysShort = listWeekdaysShort; -hooks.normalizeUnits = normalizeUnits; -hooks.relativeTimeRounding = getSetRelativeTimeRounding; -hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; -hooks.calendarFormat = getCalendarFormat; -hooks.prototype = proto; - -// currently HTML5 input type only supports 24-hour formats -hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" /> - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" /> - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" /> - DATE: 'YYYY-MM-DD', // <input type="date" /> - TIME: 'HH:mm', // <input type="time" /> - TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" /> - TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" /> - WEEK: 'YYYY-[W]WW', // <input type="week" /> - MONTH: 'YYYY-MM' // <input type="month" /> -}; + /** + * Calls enabled plugins for `chart` on the specified hook and with the given args. + * This method immediately returns as soon as a plugin explicitly returns false. The + * returned value can be used, for instance, to interrupt the current action. + * @param {Chart} chart - The chart instance for which plugins should be called. + * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). + * @param {Array} [args] - Extra arguments to apply to the hook call. + * @returns {boolean} false if any of the plugins return false, else returns true. + */ + notify: function(chart, hook, args) { + var descriptors = this.descriptors(chart); + var ilen = descriptors.length; + var i, descriptor, plugin, params, method; -return hooks; + for (i = 0; i < ilen; ++i) { + descriptor = descriptors[i]; + plugin = descriptor.plugin; + method = plugin[hook]; + if (typeof method === 'function') { + params = [chart].concat(args || []); + params.push(descriptor.options); + if (method.apply(plugin, params) === false) { + return false; + } + } + } -}))); + return true; + }, -},{}],7:[function(require,module,exports){ -/** - * @namespace Chart - */ -var Chart = require(29)(); + /** + * Returns descriptors of enabled plugins for the given chart. + * @returns {object[]} [{ plugin, options }] + * @private + */ + descriptors: function(chart) { + var cache = chart.$plugins || (chart.$plugins = {}); + if (cache.id === this._cacheId) { + return cache.descriptors; + } -Chart.helpers = require(45); + var plugins = []; + var descriptors = []; + var config = (chart && chart.config) || {}; + var options = (config.options && config.options.plugins) || {}; -// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! -require(27)(Chart); - -Chart.defaults = require(25); -Chart.Element = require(26); -Chart.elements = require(40); -Chart.Interaction = require(28); -Chart.layouts = require(30); -Chart.platform = require(48); -Chart.plugins = require(31); -Chart.Ticks = require(34); - -require(22)(Chart); -require(23)(Chart); -require(24)(Chart); -require(33)(Chart); -require(32)(Chart); -require(35)(Chart); - -require(55)(Chart); -require(53)(Chart); -require(54)(Chart); -require(56)(Chart); -require(57)(Chart); -require(58)(Chart); - -// Controllers must be loaded after elements -// See Chart.core.datasetController.dataElementType -require(15)(Chart); -require(16)(Chart); -require(17)(Chart); -require(18)(Chart); -require(19)(Chart); -require(20)(Chart); -require(21)(Chart); - -require(8)(Chart); -require(9)(Chart); -require(10)(Chart); -require(11)(Chart); -require(12)(Chart); -require(13)(Chart); -require(14)(Chart); - -// Loading built-it plugins -var plugins = require(49); -for (var k in plugins) { - if (plugins.hasOwnProperty(k)) { - Chart.plugins.register(plugins[k]); - } -} + this._plugins.concat(config.plugins || []).forEach(function(plugin) { + var idx = plugins.indexOf(plugin); + if (idx !== -1) { + return; + } -Chart.platform.initialize(); + var id = plugin.id; + var opts = options[id]; + if (opts === false) { + return; + } -module.exports = Chart; -if (typeof window !== 'undefined') { - window.Chart = Chart; -} + if (opts === true) { + opts = helpers$1.clone(core_defaults.global.plugins[id]); + } -// DEPRECATIONS + plugins.push(plugin); + descriptors.push({ + plugin: plugin, + options: opts || {} + }); + }); -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Legend - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.Legend = plugins.legend._element; + cache.descriptors = descriptors; + cache.id = this._cacheId; + return descriptors; + }, -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Title - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.Title = plugins.title._element; + /** + * Invalidates cache for the given chart: descriptors hold a reference on plugin option, + * but in some cases, this reference can be changed by the user when updating options. + * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + * @private + */ + _invalidate: function(chart) { + delete chart.$plugins; + } +}; -/** - * Provided for backward compatibility, use Chart.plugins instead - * @namespace Chart.pluginService - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.pluginService = Chart.plugins; +var core_scaleService = { + // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then + // use the new chart options to grab the correct scale + constructors: {}, + // Use a registration function so that we can move to an ES6 map when we no longer need to support + // old browsers -/** - * Provided for backward compatibility, inheriting from Chart.PlugingBase has no - * effect, instead simply create/register plugins via plain JavaScript objects. - * @interface Chart.PluginBase - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ -Chart.PluginBase = Chart.Element.extend({}); + // Scale config defaults + defaults: {}, + registerScaleType: function(type, scaleConstructor, scaleDefaults) { + this.constructors[type] = scaleConstructor; + this.defaults[type] = helpers$1.clone(scaleDefaults); + }, + getScaleConstructor: function(type) { + return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + }, + getScaleDefaults: function(type) { + // Return the scale defaults merged with the global settings so that we always use the latest ones + return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {}; + }, + updateScaleDefaults: function(type, additions) { + var me = this; + if (me.defaults.hasOwnProperty(type)) { + me.defaults[type] = helpers$1.extend(me.defaults[type], additions); + } + }, + addScalesToLayout: function(chart) { + // Adds each scale to the chart.boxes array to be sized accordingly + helpers$1.each(chart.scales, function(scale) { + // Set ILayoutItem parameters for backwards compatibility + scale.fullWidth = scale.options.fullWidth; + scale.position = scale.options.position; + scale.weight = scale.options.weight; + core_layouts.addBox(chart, scale); + }); + } +}; -/** - * Provided for backward compatibility, use Chart.helpers.canvas instead. - * @namespace Chart.canvasHelpers - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -Chart.canvasHelpers = Chart.helpers.canvas; +var valueOrDefault$8 = helpers$1.valueOrDefault; +var getRtlHelper = helpers$1.rtl.getRtlAdapter; -/** - * Provided for backward compatibility, use Chart.layouts instead. - * @namespace Chart.layoutService - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -Chart.layoutService = Chart.layouts; +core_defaults._set('global', { + tooltips: { + enabled: true, + custom: null, + mode: 'nearest', + position: 'average', + intersect: true, + backgroundColor: 'rgba(0,0,0,0.8)', + titleFontStyle: 'bold', + titleSpacing: 2, + titleMarginBottom: 6, + titleFontColor: '#fff', + titleAlign: 'left', + bodySpacing: 2, + bodyFontColor: '#fff', + bodyAlign: 'left', + footerFontStyle: 'bold', + footerSpacing: 2, + footerMarginTop: 6, + footerFontColor: '#fff', + footerAlign: 'left', + yPadding: 6, + xPadding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + multiKeyBackground: '#fff', + displayColors: true, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + callbacks: { + // Args are: (tooltipItems, data) + beforeTitle: helpers$1.noop, + title: function(tooltipItems, data) { + var title = ''; + var labels = data.labels; + var labelCount = labels ? labels.length : 0; -},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"34":34,"35":35,"40":40,"45":45,"48":48,"49":49,"53":53,"54":54,"55":55,"56":56,"57":57,"58":58,"8":8,"9":9}],8:[function(require,module,exports){ -'use strict'; + if (tooltipItems.length > 0) { + var item = tooltipItems[0]; + if (item.label) { + title = item.label; + } else if (item.xLabel) { + title = item.xLabel; + } else if (labelCount > 0 && item.index < labelCount) { + title = labels[item.index]; + } + } -module.exports = function(Chart) { + return title; + }, + afterTitle: helpers$1.noop, - Chart.Bar = function(context, config) { - config.type = 'bar'; + // Args are: (tooltipItems, data) + beforeBody: helpers$1.noop, - return new Chart(context, config); - }; + // Args are: (tooltipItem, data) + beforeLabel: helpers$1.noop, + label: function(tooltipItem, data) { + var label = data.datasets[tooltipItem.datasetIndex].label || ''; -}; + if (label) { + label += ': '; + } + if (!helpers$1.isNullOrUndef(tooltipItem.value)) { + label += tooltipItem.value; + } else { + label += tooltipItem.yLabel; + } + return label; + }, + labelColor: function(tooltipItem, chart) { + var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); + var activeElement = meta.data[tooltipItem.index]; + var view = activeElement._view; + return { + borderColor: view.borderColor, + backgroundColor: view.backgroundColor + }; + }, + labelTextColor: function() { + return this._options.bodyFontColor; + }, + afterLabel: helpers$1.noop, -},{}],9:[function(require,module,exports){ -'use strict'; + // Args are: (tooltipItems, data) + afterBody: helpers$1.noop, -module.exports = function(Chart) { + // Args are: (tooltipItems, data) + beforeFooter: helpers$1.noop, + footer: helpers$1.noop, + afterFooter: helpers$1.noop + } + } +}); - Chart.Bubble = function(context, config) { - config.type = 'bubble'; - return new Chart(context, config); - }; +var positioners = { + /** + * Average mode places the tooltip at the average position of the elements shown + * @function Chart.Tooltip.positioners.average + * @param elements {ChartElement[]} the elements being displayed in the tooltip + * @returns {object} tooltip position + */ + average: function(elements) { + if (!elements.length) { + return false; + } -}; + var i, len; + var x = 0; + var y = 0; + var count = 0; -},{}],10:[function(require,module,exports){ -'use strict'; + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; + } + } -module.exports = function(Chart) { + return { + x: x / count, + y: y / count + }; + }, - Chart.Doughnut = function(context, config) { - config.type = 'doughnut'; + /** + * Gets the tooltip position nearest of the item nearest to the event position + * @function Chart.Tooltip.positioners.nearest + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {object} the position of the event in canvas coordinates + * @returns {object} the tooltip position + */ + nearest: function(elements, eventPosition) { + var x = eventPosition.x; + var y = eventPosition.y; + var minDistance = Number.POSITIVE_INFINITY; + var i, len, nearestElement; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var center = el.getCenterPoint(); + var d = helpers$1.distanceBetweenPoints(eventPosition, center); + + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } - return new Chart(context, config); - }; + if (nearestElement) { + var tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + return { + x: x, + y: y + }; + } }; -},{}],11:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Line = function(context, config) { - config.type = 'line'; - - return new Chart(context, config); - }; +// Helper to push or concat based on if the 2nd parameter is an array or not +function pushOrConcat(base, toPush) { + if (toPush) { + if (helpers$1.isArray(toPush)) { + // base = base.concat(toPush); + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } -}; + return base; +} -},{}],12:[function(require,module,exports){ -'use strict'; +/** + * Returns array of strings split by newline + * @param {string} value - The value to split by newline. + * @returns {string[]} value if newline present - Returned from String split() method + * @function + */ +function splitNewlines(str) { + if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { + return str.split('\n'); + } + return str; +} -module.exports = function(Chart) { - Chart.PolarArea = function(context, config) { - config.type = 'polarArea'; +/** + * Private helper to create a tooltip item model + * @param element - the chart element (point, arc, bar) to create the tooltip item for + * @return new tooltip item + */ +function createTooltipItem(element) { + var xScale = element._xScale; + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + var index = element._index; + var datasetIndex = element._datasetIndex; + var controller = element._chart.getDatasetMeta(datasetIndex).controller; + var indexScale = controller._getIndexScale(); + var valueScale = controller._getValueScale(); - return new Chart(context, config); + return { + xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', + label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '', + value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '', + index: index, + datasetIndex: datasetIndex, + x: element._model.x, + y: element._model.y }; +} -}; - -},{}],13:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Radar = function(context, config) { - config.type = 'radar'; +/** + * Helper to get the reset model for the tooltip + * @param tooltipOpts {object} the tooltip options + */ +function getBaseModel(tooltipOpts) { + var globalDefaults = core_defaults.global; - return new Chart(context, config); + return { + // Positioning + xPadding: tooltipOpts.xPadding, + yPadding: tooltipOpts.yPadding, + xAlign: tooltipOpts.xAlign, + yAlign: tooltipOpts.yAlign, + + // Drawing direction and text direction + rtl: tooltipOpts.rtl, + textDirection: tooltipOpts.textDirection, + + // Body + bodyFontColor: tooltipOpts.bodyFontColor, + _bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), + _bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), + _bodyAlign: tooltipOpts.bodyAlign, + bodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), + bodySpacing: tooltipOpts.bodySpacing, + + // Title + titleFontColor: tooltipOpts.titleFontColor, + _titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), + _titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), + titleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), + _titleAlign: tooltipOpts.titleAlign, + titleSpacing: tooltipOpts.titleSpacing, + titleMarginBottom: tooltipOpts.titleMarginBottom, + + // Footer + footerFontColor: tooltipOpts.footerFontColor, + _footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), + _footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), + footerFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), + _footerAlign: tooltipOpts.footerAlign, + footerSpacing: tooltipOpts.footerSpacing, + footerMarginTop: tooltipOpts.footerMarginTop, + + // Appearance + caretSize: tooltipOpts.caretSize, + cornerRadius: tooltipOpts.cornerRadius, + backgroundColor: tooltipOpts.backgroundColor, + opacity: 0, + legendColorBackground: tooltipOpts.multiKeyBackground, + displayColors: tooltipOpts.displayColors, + borderColor: tooltipOpts.borderColor, + borderWidth: tooltipOpts.borderWidth }; +} -}; - -},{}],14:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - Chart.Scatter = function(context, config) { - config.type = 'scatter'; - return new Chart(context, config); +/** + * Get the size of the tooltip + */ +function getTooltipSize(tooltip, model) { + var ctx = tooltip._chart.ctx; + + var height = model.yPadding * 2; // Tooltip Padding + var width = 0; + + // Count of all lines in the body + var body = model.body; + var combinedBodyLength = body.reduce(function(count, bodyItem) { + return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; + }, 0); + combinedBodyLength += model.beforeBody.length + model.afterBody.length; + + var titleLineCount = model.title.length; + var footerLineCount = model.footer.length; + var titleFontSize = model.titleFontSize; + var bodyFontSize = model.bodyFontSize; + var footerFontSize = model.footerFontSize; + + height += titleLineCount * titleFontSize; // Title Lines + height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing + height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin + height += combinedBodyLength * bodyFontSize; // Body Lines + height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing + height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin + height += footerLineCount * (footerFontSize); // Footer Lines + height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing + + // Title width + var widthPadding = 0; + var maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); }; -}; - -},{}],15:[function(require,module,exports){ -'use strict'; - -var defaults = require(25); -var elements = require(40); -var helpers = require(45); -defaults._set('bar', { - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - - // Specific to Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // offset settings - offset: true, - - // grid line settings - gridLines: { - offsetGridLines: true - } - }], - - yAxes: [{ - type: 'linear' - }] - } -}); - -defaults._set('horizontalBar', { - hover: { - mode: 'index', - axis: 'y' - }, - - scales: { - xAxes: [{ - type: 'linear', - position: 'bottom' - }], - - yAxes: [{ - position: 'left', - type: 'category', - - // Specific to Horizontal Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // offset settings - offset: true, + ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); + helpers$1.each(model.title, maxLineWidth); - // grid line settings - gridLines: { - offsetGridLines: true - } - }] - }, + // Body width + ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); + helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); - elements: { - rectangle: { - borderSkipped: 'left' - } - }, + // Body lines may include some extra width due to the color box + widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; + helpers$1.each(body, function(bodyItem) { + helpers$1.each(bodyItem.before, maxLineWidth); + helpers$1.each(bodyItem.lines, maxLineWidth); + helpers$1.each(bodyItem.after, maxLineWidth); + }); - tooltips: { - callbacks: { - title: function(item, data) { - // Pick first xLabel for now - var title = ''; + // Reset back to 0 + widthPadding = 0; - if (item.length > 0) { - if (item[0].yLabel) { - title = item[0].yLabel; - } else if (data.labels.length > 0 && item[0].index < data.labels.length) { - title = data.labels[item[0].index]; - } - } + // Footer width + ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); + helpers$1.each(model.footer, maxLineWidth); - return title; - }, + // Add padding + width += 2 * model.xPadding; - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - return datasetLabel + ': ' + item.xLabel; - } - }, - mode: 'index', - axis: 'y' - } -}); + return { + width: width, + height: height + }; +} /** - * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. - * @private + * Helper to get the alignment of a tooltip given the size */ -function computeMinSampleSize(scale, pixels) { - var min = scale.isHorizontal() ? scale.width : scale.height; - var ticks = scale.getTicks(); - var prev, curr, i, ilen; - - for (i = 1, ilen = pixels.length; i < ilen; ++i) { - min = Math.min(min, pixels[i] - pixels[i - 1]); +function determineAlignment(tooltip, size) { + var model = tooltip._model; + var chart = tooltip._chart; + var chartArea = tooltip._chart.chartArea; + var xAlign = 'center'; + var yAlign = 'center'; + + if (model.y < size.height) { + yAlign = 'top'; + } else if (model.y > (chart.height - size.height)) { + yAlign = 'bottom'; } - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - curr = scale.getPixelForTick(i); - min = i > 0 ? Math.min(min, curr - prev) : min; - prev = curr; + var lf, rf; // functions to determine left, right alignment + var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart + var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges + var midX = (chartArea.left + chartArea.right) / 2; + var midY = (chartArea.top + chartArea.bottom) / 2; + + if (yAlign === 'center') { + lf = function(x) { + return x <= midX; + }; + rf = function(x) { + return x > midX; + }; + } else { + lf = function(x) { + return x <= (size.width / 2); + }; + rf = function(x) { + return x >= (chart.width - (size.width / 2)); + }; } - return min; -} + olf = function(x) { + return x + size.width + model.caretSize + model.caretPadding > chart.width; + }; + orf = function(x) { + return x - size.width - model.caretSize - model.caretPadding < 0; + }; + yf = function(y) { + return y <= midY ? 'top' : 'bottom'; + }; -/** - * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, - * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This - * mode currently always generates bars equally sized (until we introduce scriptable options?). - * @private - */ -function computeFitCategoryTraits(index, ruler, options) { - var thickness = options.barThickness; - var count = ruler.stackCount; - var curr = ruler.pixels[index]; - var size, ratio; + if (lf(model.x)) { + xAlign = 'left'; - if (helpers.isNullOrUndef(thickness)) { - size = ruler.min * options.categoryPercentage; - ratio = options.barPercentage; - } else { - // When bar thickness is enforced, category and bar percentages are ignored. - // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') - // and deprecate barPercentage since this value is ignored when thickness is absolute. - size = thickness * count; - ratio = 1; + // Is tooltip too wide and goes over the right side of the chart.? + if (olf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } else if (rf(model.x)) { + xAlign = 'right'; + + // Is tooltip too wide and goes outside left edge of canvas? + if (orf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } } + var opts = tooltip._options; return { - chunk: size / count, - ratio: ratio, - start: curr - (size / 2) + xAlign: opts.xAlign ? opts.xAlign : xAlign, + yAlign: opts.yAlign ? opts.yAlign : yAlign }; } /** - * Computes an "optimal" category that globally arranges bars side by side (no gap when - * percentage options are 1), based on the previous and following categories. This mode - * generates bars with different widths when data are not evenly spaced. - * @private + * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment */ -function computeFlexCategoryTraits(index, ruler, options) { - var pixels = ruler.pixels; - var curr = pixels[index]; - var prev = index > 0 ? pixels[index - 1] : null; - var next = index < pixels.length - 1 ? pixels[index + 1] : null; - var percent = options.categoryPercentage; - var start, size; - - if (prev === null) { - // first data: its size is double based on the next point or, - // if it's also the last data, we use the scale end extremity. - prev = curr - (next === null ? ruler.end - curr : next - curr); +function getBackgroundPoint(vm, size, alignment, chart) { + // Background Position + var x = vm.x; + var y = vm.y; + + var caretSize = vm.caretSize; + var caretPadding = vm.caretPadding; + var cornerRadius = vm.cornerRadius; + var xAlign = alignment.xAlign; + var yAlign = alignment.yAlign; + var paddingAndSize = caretSize + caretPadding; + var radiusAndPadding = cornerRadius + caretPadding; + + if (xAlign === 'right') { + x -= size.width; + } else if (xAlign === 'center') { + x -= (size.width / 2); + if (x + size.width > chart.width) { + x = chart.width - size.width; + } + if (x < 0) { + x = 0; + } } - if (next === null) { - // last data: its size is also double based on the previous point. - next = curr + curr - prev; + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= size.height + paddingAndSize; + } else { + y -= (size.height / 2); } - start = curr - ((curr - prev) / 2) * percent; - size = ((next - prev) / 2) * percent; + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; + } + } else if (xAlign === 'left') { + x -= radiusAndPadding; + } else if (xAlign === 'right') { + x += radiusAndPadding; + } return { - chunk: size / ruler.stackCount, - ratio: options.barPercentage, - start: start + x: x, + y: y }; } -module.exports = function(Chart) { - - Chart.controllers.bar = Chart.DatasetController.extend({ +function getAlignedX(vm, align) { + return align === 'center' + ? vm.x + vm.width / 2 + : align === 'right' + ? vm.x + vm.width - vm.xPadding + : vm.x + vm.xPadding; +} - dataElementType: elements.Rectangle, +/** + * Helper to build before and after body lines + */ +function getBeforeAfterBodyLines(callback) { + return pushOrConcat([], splitNewlines(callback)); +} - initialize: function() { - var me = this; - var meta; +var exports$4 = core_element.extend({ + initialize: function() { + this._model = getBaseModel(this._options); + this._lastActive = []; + }, - Chart.DatasetController.prototype.initialize.apply(me, arguments); + // Get the title + // Args are: (tooltipItem, data) + getTitle: function() { + var me = this; + var opts = me._options; + var callbacks = opts.callbacks; - meta = me.getMeta(); - meta.stack = me.getDataset().stack; - meta.bar = true; - }, + var beforeTitle = callbacks.beforeTitle.apply(me, arguments); + var title = callbacks.title.apply(me, arguments); + var afterTitle = callbacks.afterTitle.apply(me, arguments); - update: function(reset) { - var me = this; - var rects = me.getMeta().data; - var i, ilen; + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); - me._ruler = me.getRuler(); + return lines; + }, - for (i = 0, ilen = rects.length; i < ilen; ++i) { - me.updateElement(rects[i], i, reset); - } - }, + // Args are: (tooltipItem, data) + getBeforeBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); + }, - updateElement: function(rectangle, index, reset) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var dataset = me.getDataset(); - var custom = rectangle.custom || {}; - var rectangleOptions = chart.options.elements.rectangle; - - rectangle._xScale = me.getScaleForId(meta.xAxisID); - rectangle._yScale = me.getScaleForId(meta.yAxisID); - rectangle._datasetIndex = me.index; - rectangle._index = index; - - rectangle._model = { - datasetLabel: dataset.label, - label: chart.data.labels[index], - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) + // Args are: (tooltipItem, data) + getBody: function(tooltipItems, data) { + var me = this; + var callbacks = me._options.callbacks; + var bodyItems = []; + + helpers$1.each(tooltipItems, function(tooltipItem) { + var bodyItem = { + before: [], + lines: [], + after: [] }; + pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); + pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); - me.updateElementGeometry(rectangle, index, reset); - - rectangle.pivot(); - }, - - /** - * @private - */ - updateElementGeometry: function(rectangle, index, reset) { - var me = this; - var model = rectangle._model; - var vscale = me.getValueScale(); - var base = vscale.getBasePixel(); - var horizontal = vscale.isHorizontal(); - var ruler = me._ruler || me.getRuler(); - var vpixels = me.calculateBarValuePixels(me.index, index); - var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); - - model.horizontal = horizontal; - model.base = reset ? base : vpixels.base; - model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; - model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; - model.height = horizontal ? ipixels.size : undefined; - model.width = horizontal ? undefined : ipixels.size; - }, - - /** - * @private - */ - getValueScaleId: function() { - return this.getMeta().yAxisID; - }, - - /** - * @private - */ - getIndexScaleId: function() { - return this.getMeta().xAxisID; - }, - - /** - * @private - */ - getValueScale: function() { - return this.getScaleForId(this.getValueScaleId()); - }, - - /** - * @private - */ - getIndexScale: function() { - return this.getScaleForId(this.getIndexScaleId()); - }, - - /** - * Returns the stacks based on groups and bar visibility. - * @param {Number} [last] - The dataset index - * @returns {Array} The stack list - * @private - */ - _getStacks: function(last) { - var me = this; - var chart = me.chart; - var scale = me.getIndexScale(); - var stacked = scale.options.stacked; - var ilen = last === undefined ? chart.data.datasets.length : last + 1; - var stacks = []; - var i, meta; - - for (i = 0; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - if (meta.bar && chart.isDatasetVisible(i) && - (stacked === false || - (stacked === true && stacks.indexOf(meta.stack) === -1) || - (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { - stacks.push(meta.stack); - } - } + bodyItems.push(bodyItem); + }); - return stacks; - }, + return bodyItems; + }, - /** - * Returns the effective number of stacks based on groups and bar visibility. - * @private - */ - getStackCount: function() { - return this._getStacks().length; - }, + // Args are: (tooltipItem, data) + getAfterBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); + }, - /** - * Returns the stack index for the given dataset based on groups and bar visibility. - * @param {Number} [datasetIndex] - The dataset index - * @param {String} [name] - The stack name to find - * @returns {Number} The stack index - * @private - */ - getStackIndex: function(datasetIndex, name) { - var stacks = this._getStacks(datasetIndex); - var index = (name !== undefined) - ? stacks.indexOf(name) - : -1; // indexOf returns -1 if element is not present - - return (index === -1) - ? stacks.length - 1 - : index; - }, + // Get the footer and beforeFooter and afterFooter lines + // Args are: (tooltipItem, data) + getFooter: function() { + var me = this; + var callbacks = me._options.callbacks; - /** - * @private - */ - getRuler: function() { - var me = this; - var scale = me.getIndexScale(); - var stackCount = me.getStackCount(); - var datasetIndex = me.index; - var isHorizontal = scale.isHorizontal(); - var start = isHorizontal ? scale.left : scale.top; - var end = start + (isHorizontal ? scale.width : scale.height); - var pixels = []; - var i, ilen, min; - - for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { - pixels.push(scale.getPixelForValue(null, i, datasetIndex)); - } + var beforeFooter = callbacks.beforeFooter.apply(me, arguments); + var footer = callbacks.footer.apply(me, arguments); + var afterFooter = callbacks.afterFooter.apply(me, arguments); - min = helpers.isNullOrUndef(scale.options.barThickness) - ? computeMinSampleSize(scale, pixels) - : -1; + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); - return { - min: min, - pixels: pixels, - start: start, - end: end, - stackCount: stackCount, - scale: scale - }; - }, + return lines; + }, - /** - * Note: pixel values are not clamped to the scale area. - * @private - */ - calculateBarValuePixels: function(datasetIndex, index) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var scale = me.getValueScale(); - var datasets = chart.data.datasets; - var value = scale.getRightValue(datasets[datasetIndex].data[index]); - var stacked = scale.options.stacked; - var stack = meta.stack; - var start = 0; - var i, imeta, ivalue, base, head, size; - - if (stacked || (stacked === undefined && stack !== undefined)) { - for (i = 0; i < datasetIndex; ++i) { - imeta = chart.getDatasetMeta(i); - - if (imeta.bar && - imeta.stack === stack && - imeta.controller.getValueScaleId() === scale.id && - chart.isDatasetVisible(i)) { - - ivalue = scale.getRightValue(datasets[i].data[index]); - if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { - start += ivalue; - } - } - } - } + update: function(changed) { + var me = this; + var opts = me._options; - base = scale.getPixelForValue(start); - head = scale.getPixelForValue(start + value); - size = (head - base) / 2; + // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition + // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time + // which breaks any animations. + var existingModel = me._model; + var model = me._model = getBaseModel(opts); + var active = me._active; - return { - size: size, - base: base, - head: head, - center: head + size / 2 - }; - }, + var data = me._data; - /** - * @private - */ - calculateBarIndexPixels: function(datasetIndex, index, ruler) { - var me = this; - var options = ruler.scale.options; - var range = options.barThickness === 'flex' - ? computeFlexCategoryTraits(index, ruler, options) - : computeFitCategoryTraits(index, ruler, options); - - var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); - var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); - var size = Math.min( - helpers.valueOrDefault(options.maxBarThickness, Infinity), - range.chunk * range.ratio); + // In the case where active.length === 0 we need to keep these at existing values for good animations + var alignment = { + xAlign: existingModel.xAlign, + yAlign: existingModel.yAlign + }; + var backgroundPoint = { + x: existingModel.x, + y: existingModel.y + }; + var tooltipSize = { + width: existingModel.width, + height: existingModel.height + }; + var tooltipPosition = { + x: existingModel.caretX, + y: existingModel.caretY + }; - return { - base: center - size / 2, - head: center + size / 2, - center: center, - size: size - }; - }, + var i, len; - draw: function() { - var me = this; - var chart = me.chart; - var scale = me.getValueScale(); - var rects = me.getMeta().data; - var dataset = me.getDataset(); - var ilen = rects.length; - var i = 0; + if (active.length) { + model.opacity = 1; - helpers.canvas.clipArea(chart.ctx, chart.chartArea); + var labelColors = []; + var labelTextColors = []; + tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); - for (; i < ilen; ++i) { - if (!isNaN(scale.getRightValue(dataset.data[i]))) { - rects[i].draw(); - } + var tooltipItems = []; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(active[i])); } - helpers.canvas.unclipArea(chart.ctx); - }, + // If the user provided a filter function, use it to modify the tooltip items + if (opts.filter) { + tooltipItems = tooltipItems.filter(function(a) { + return opts.filter(a, data); + }); + } - setHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - var custom = rectangle.custom || {}; - var model = rectangle._model; + // If the user provided a sorting function, use it to modify the tooltip items + if (opts.itemSort) { + tooltipItems = tooltipItems.sort(function(a, b) { + return opts.itemSort(a, b, data); + }); + } - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); - }, + // Determine colors for boxes + helpers$1.each(tooltipItems, function(tooltipItem) { + labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); + labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); + }); - removeHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - var custom = rectangle.custom || {}; - var model = rectangle._model; - var rectangleElementOptions = this.chart.options.elements.rectangle; - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); + // Build the Text Lines + model.title = me.getTitle(tooltipItems, data); + model.beforeBody = me.getBeforeBody(tooltipItems, data); + model.body = me.getBody(tooltipItems, data); + model.afterBody = me.getAfterBody(tooltipItems, data); + model.footer = me.getFooter(tooltipItems, data); + + // Initial positioning and colors + model.x = tooltipPosition.x; + model.y = tooltipPosition.y; + model.caretPadding = opts.caretPadding; + model.labelColors = labelColors; + model.labelTextColors = labelTextColors; + + // data points + model.dataPoints = tooltipItems; + + // We need to determine alignment of the tooltip + tooltipSize = getTooltipSize(this, model); + alignment = determineAlignment(this, tooltipSize); + // Final Size and Position + backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); + } else { + model.opacity = 0; } - }); - Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ - /** - * @private - */ - getValueScaleId: function() { - return this.getMeta().xAxisID; - }, + model.xAlign = alignment.xAlign; + model.yAlign = alignment.yAlign; + model.x = backgroundPoint.x; + model.y = backgroundPoint.y; + model.width = tooltipSize.width; + model.height = tooltipSize.height; - /** - * @private - */ - getIndexScaleId: function() { - return this.getMeta().yAxisID; - } - }); -}; + // Point where the caret on the tooltip points to + model.caretX = tooltipPosition.x; + model.caretY = tooltipPosition.y; -},{"25":25,"40":40,"45":45}],16:[function(require,module,exports){ -'use strict'; + me._model = model; -var defaults = require(25); -var elements = require(40); -var helpers = require(45); + if (changed && opts.custom) { + opts.custom.call(me, model); + } -defaults._set('bubble', { - hover: { - mode: 'single' + return me; }, - scales: { - xAxes: [{ - type: 'linear', // bubble should probably use a linear scale by default - position: 'bottom', - id: 'x-axis-0' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-0' - }] + drawCaret: function(tooltipPoint, size) { + var ctx = this._chart.ctx; + var vm = this._view; + var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); + + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); }, + getCaretPosition: function(tooltipPoint, size, vm) { + var x1, x2, x3, y1, y2, y3; + var caretSize = vm.caretSize; + var cornerRadius = vm.cornerRadius; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var ptX = tooltipPoint.x; + var ptY = tooltipPoint.y; + var width = size.width; + var height = size.height; - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - var dataPoint = data.datasets[item.datasetIndex].data[item.index]; - return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + if (yAlign === 'center') { + y2 = ptY + (height / 2); + + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + x3 = x1; + + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + x3 = x1; + + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + } else { + if (xAlign === 'left') { + x2 = ptX + cornerRadius + (caretSize); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else if (xAlign === 'right') { + x2 = ptX + width - cornerRadius - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + x2 = vm.caretX; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + y3 = y1; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + y3 = y1; + // invert drawing order + var tmp = x3; + x3 = x1; + x1 = tmp; } } - } -}); + return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; + }, + drawTitle: function(pt, vm, ctx) { + var title = vm.title; + var length = title.length; + var titleFontSize, titleSpacing, i; -module.exports = function(Chart) { + if (length) { + var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width); - Chart.controllers.bubble = Chart.DatasetController.extend({ - /** - * @protected - */ - dataElementType: elements.Point, + pt.x = getAlignedX(vm, vm._titleAlign); - /** - * @protected - */ - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; - - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, + ctx.textAlign = rtlHelper.textAlign(vm._titleAlign); + ctx.textBaseline = 'middle'; - /** - * @protected - */ - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var options = me._resolveElementOptions(point, index); - var data = me.getDataset().data[index]; - var dsIndex = me.index; - - var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); - var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); - - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = dsIndex; - point._index = index; - point._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - hitRadius: options.hitRadius, - pointStyle: options.pointStyle, - radius: reset ? 0 : options.radius, - skip: custom.skip || isNaN(x) || isNaN(y), - x: x, - y: y, - }; + titleFontSize = vm.titleFontSize; + titleSpacing = vm.titleSpacing; - point.pivot(); - }, + ctx.fillStyle = vm.titleFontColor; + ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - - model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); - model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); - model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); - model.radius = options.radius + options.hoverRadius; - }, + for (i = 0; i < length; ++i) { + ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2); + pt.y += titleFontSize + titleSpacing; // Line Height and spacing - /** - * @protected - */ - removeHoverStyle: function(point) { - var model = point._model; - var options = point._options; - - model.backgroundColor = options.backgroundColor; - model.borderColor = options.borderColor; - model.borderWidth = options.borderWidth; - model.radius = options.radius; - }, + if (i + 1 === length) { + pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing + } + } + } + }, - /** - * @private - */ - _resolveElementOptions: function(point, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = point.custom || {}; - var options = chart.options.elements.point; - var resolve = helpers.options.resolve; - var data = dataset.data[index]; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; + drawBody: function(pt, vm, ctx) { + var bodyFontSize = vm.bodyFontSize; + var bodySpacing = vm.bodySpacing; + var bodyAlign = vm._bodyAlign; + var body = vm.body; + var drawColorBoxes = vm.displayColors; + var xLinePadding = 0; + var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0; - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - 'hoverRadius', - 'hitRadius', - 'pointStyle' - ]; + var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width); - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve([ - custom[key], - dataset[key], - options[key] - ], context, index); - } + var fillLineOfText = function(line) { + ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2); + pt.y += bodyFontSize + bodySpacing; + }; - // Custom radius resolution - values.radius = resolve([ - custom.radius, - data ? data.r : undefined, - dataset.radius, - options.radius - ], context, index); + var bodyItem, textColor, labelColors, lines, i, j, ilen, jlen; + var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); - return values; - } - }); -}; + ctx.textAlign = bodyAlign; + ctx.textBaseline = 'middle'; + ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); -},{"25":25,"40":40,"45":45}],17:[function(require,module,exports){ -'use strict'; + pt.x = getAlignedX(vm, bodyAlignForCalculation); -var defaults = require(25); -var elements = require(40); -var helpers = require(45); + // Before body lines + ctx.fillStyle = vm.bodyFontColor; + helpers$1.each(vm.beforeBody, fillLineOfText); -defaults._set('doughnut', { - animation: { - // Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - // Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('<ul class="' + chart.id + '-legend">'); + xLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right' + ? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2) + : 0; - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; + // Draw body lines now + for (i = 0, ilen = body.length; i < ilen; ++i) { + bodyItem = body[i]; + textColor = vm.labelTextColors[i]; + labelColors = vm.labelColors[i]; - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); - if (labels[i]) { - text.push(labels[i]); + ctx.fillStyle = textColor; + helpers$1.each(bodyItem.before, fillLineOfText); + + lines = bodyItem.lines; + for (j = 0, jlen = lines.length; j < jlen; ++j) { + // Draw Legend-like boxes if needed + if (drawColorBoxes) { + var rtlColorX = rtlHelper.x(colorX); + + // Fill a white rect so that colours merge nicely if the opacity is < 1 + ctx.fillStyle = vm.legendColorBackground; + ctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); + + // Border + ctx.lineWidth = 1; + ctx.strokeStyle = labelColors.borderColor; + ctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize); + + // Inner square + ctx.fillStyle = labelColors.backgroundColor; + ctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); + ctx.fillStyle = textColor; } - text.push('</li>'); + + fillLineOfText(lines[j]); } + + helpers$1.each(bodyItem.after, fillLineOfText); } - text.push('</ul>'); - return text.join(''); + // Reset back to 0 for after body + xLinePadding = 0; + + // After body lines + helpers$1.each(vm.afterBody, fillLineOfText); + pt.y -= bodySpacing; // Remove last body spacing }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + drawFooter: function(pt, vm, ctx) { + var footer = vm.footer; + var length = footer.length; + var footerFontSize, i; - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, + if (length) { + var rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width); - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; + pt.x = getAlignedX(vm, vm._footerAlign); + pt.y += vm.footerMarginTop; - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - // toggle visibility of index if exists - if (meta.data[index]) { - meta.data[index].hidden = !meta.data[index].hidden; - } - } + ctx.textAlign = rtlHelper.textAlign(vm._footerAlign); + ctx.textBaseline = 'middle'; - chart.update(); + footerFontSize = vm.footerFontSize; + + ctx.fillStyle = vm.footerFontColor; + ctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + + for (i = 0; i < length; ++i) { + ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2); + pt.y += footerFontSize + vm.footerSpacing; + } } }, - // The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, + drawBackground: function(pt, vm, ctx, tooltipSize) { + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = vm.borderWidth; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var x = pt.x; + var y = pt.y; + var width = tooltipSize.width; + var height = tooltipSize.height; + var radius = vm.cornerRadius; - // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, + ctx.beginPath(); + ctx.moveTo(x + radius, y); + if (yAlign === 'top') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); - // The total circumference of the chart. - circumference: Math.PI * 2.0, + ctx.fill(); - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - var dataLabel = data.labels[tooltipItem.index]; - var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + if (vm.borderWidth > 0) { + ctx.stroke(); + } + }, - if (helpers.isArray(dataLabel)) { - // show value on first line of multiline label - // need to clone because we are changing the value - dataLabel = dataLabel.slice(); - dataLabel[0] += value; - } else { - dataLabel += value; - } + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; - return dataLabel; - } + if (vm.opacity === 0) { + return; } - } -}); -defaults._set('pie', helpers.clone(defaults.doughnut)); -defaults._set('pie', { - cutoutPercentage: 0 -}); + var tooltipSize = { + width: vm.width, + height: vm.height + }; + var pt = { + x: vm.x, + y: vm.y + }; -module.exports = function(Chart) { + // IE11/Edge does not like very small opacities, so snap to 0 + var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; - Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ + // Truthy/falsey value for empty tooltip + var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; - dataElementType: elements.Arc, + if (this._options.enabled && hasTooltipContent) { + ctx.save(); + ctx.globalAlpha = opacity; - linkScales: helpers.noop, + // Draw Background + this.drawBackground(pt, vm, ctx, tooltipSize); - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; + // Draw Title, Body, and Footer + pt.y += vm.yPadding; - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } + helpers$1.rtl.overrideTextDirection(ctx, vm.textDirection); - return ringIndex; - }, + // Titles + this.drawTitle(pt, vm, ctx); + + // Body + this.drawBody(pt, vm, ctx); + + // Footer + this.drawFooter(pt, vm, ctx); - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var arcOpts = opts.elements.arc; - var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; - var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; - var minSize = Math.min(availableWidth, availableHeight); - var offset = {x: 0, y: 0}; - var meta = me.getMeta(); - var cutoutPercentage = opts.cutoutPercentage; - var circumference = opts.circumference; - - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } + helpers$1.rtl.restoreTextDirection(ctx, vm.textDirection); - chart.borderWidth = me.getMaxBorderWidth(meta.data); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; + ctx.restore(); + } + }, - meta.total = me.calculateTotal(); + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @returns {boolean} true if the tooltip changed + */ + handleEvent: function(e) { + var me = this; + var options = me._options; + var changed = false; - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); - me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); + me._lastActive = me._lastActive || []; - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, + // Find Active Elements for tooltips + if (e.type === 'mouseout') { + me._active = []; + } else { + me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); + if (options.reverse) { + me._active.reverse(); + } + } - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var animationOpts = opts.animation; - var centerX = (chartArea.left + chartArea.right) / 2; - var centerY = (chartArea.top + chartArea.bottom) / 2; - var startAngle = opts.rotation; // non reset case handled later - var endAngle = opts.rotation; // non reset case handled later - var dataset = me.getDataset(); - var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); - var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; - var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); + // Remember Last Actives + changed = !helpers$1.arrayEquals(me._active, me._lastActive); - var model = arc._model; - // Resets the visual styles - this.removeHoverStyle(arc); + // Only handle target event on tooltip change + if (changed) { + me._lastActive = me._active; - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } + if (options.enabled || options.custom) { + me._eventPosition = { + x: e.x, + y: e.y + }; - model.endAngle = model.startAngle + model.circumference; + me.update(true); + me.pivot(); } + } - arc.pivot(); - }, - - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, + return changed; + } +}); - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; +/** + * @namespace Chart.Tooltip.positioners + */ +var positioners_1 = positioners; - helpers.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); +var core_tooltip = exports$4; +core_tooltip.positioners = positioners_1; - /* if (total === 0) { - total = NaN; - }*/ +var valueOrDefault$9 = helpers$1.valueOrDefault; - return total; - }, +core_defaults._set('global', { + elements: {}, + events: [ + 'mousemove', + 'mouseout', + 'click', + 'touchstart', + 'touchmove' + ], + hover: { + onHover: null, + mode: 'nearest', + intersect: true, + animationDuration: 400 + }, + onClick: null, + maintainAspectRatio: true, + responsive: true, + responsiveAnimationDuration: 0 +}); - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (Math.abs(value) / total); - } - return 0; - }, +/** + * Recursively merge the given config objects representing the `scales` option + * by incorporating scale defaults in `xAxes` and `yAxes` array items, then + * returns a deep copy of the result, thus doesn't alter inputs. + */ +function mergeScaleConfig(/* config objects ... */) { + return helpers$1.merge({}, [].slice.call(arguments), { + merger: function(key, target, source, options) { + if (key === 'xAxes' || key === 'yAxes') { + var slen = source[key].length; + var i, type, scale; + + if (!target[key]) { + target[key] = []; + } - // gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function(arcs) { - var max = 0; - var index = this.index; - var length = arcs.length; - var borderWidth; - var hoverWidth; + for (i = 0; i < slen; ++i) { + scale = source[key][i]; + type = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear'); - for (var i = 0; i < length; i++) { - borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; - hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; + if (i >= target[key].length) { + target[key].push({}); + } - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; + if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { + // new/untyped scale or type changed: let's apply the new defaults + // then merge source scale to correctly overwrite the defaults. + helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]); + } else { + // scales type are the same + helpers$1.merge(target[key][i], scale); + } + } + } else { + helpers$1._merger(key, target, source, options); } - return max; } }); -}; +} -},{"25":25,"40":40,"45":45}],18:[function(require,module,exports){ -'use strict'; +/** + * Recursively merge the given config objects as the root options by handling + * default scale options for the `scales` and `scale` properties, then returns + * a deep copy of the result, thus doesn't alter inputs. + */ +function mergeConfig(/* config objects ... */) { + return helpers$1.merge({}, [].slice.call(arguments), { + merger: function(key, target, source, options) { + var tval = target[key] || {}; + var sval = source[key]; + + if (key === 'scales') { + // scale config merging is complex. Add our own function here for that + target[key] = mergeScaleConfig(tval, sval); + } else if (key === 'scale') { + // used in polar area & radar charts since there is only one scale + target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]); + } else { + helpers$1._merger(key, target, source, options); + } + } + }); +} -var defaults = require(25); -var elements = require(40); -var helpers = require(45); +function initConfig(config) { + config = config || {}; -defaults._set('line', { - showLines: true, - spanGaps: false, + // Do NOT use mergeConfig for the data object because this method merges arrays + // and so would change references to labels and datasets, preventing data updates. + var data = config.data = config.data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; - hover: { - mode: 'label' - }, + config.options = mergeConfig( + core_defaults.global, + core_defaults[config.type], + config.options || {}); - scales: { - xAxes: [{ - type: 'category', - id: 'x-axis-0' - }], - yAxes: [{ - type: 'linear', - id: 'y-axis-0' - }] - } -}); + return config; +} -module.exports = function(Chart) { +function updateConfig(chart) { + var newOptions = chart.options; - function lineEnabled(dataset, options) { - return helpers.valueOrDefault(dataset.showLine, options.showLines); - } + helpers$1.each(chart.scales, function(scale) { + core_layouts.removeBox(chart, scale); + }); - Chart.controllers.line = Chart.DatasetController.extend({ + newOptions = mergeConfig( + core_defaults.global, + core_defaults[chart.config.type], + newOptions); - datasetElementType: elements.Line, + chart.options = chart.config.options = newOptions; + chart.ensureScalesHaveIDs(); + chart.buildOrUpdateScales(); - dataElementType: elements.Point, + // Tooltip + chart.tooltip._options = newOptions.tooltips; + chart.tooltip.initialize(); +} - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var options = me.chart.options; - var lineElementOptions = options.elements.line; - var scale = me.getScaleForId(meta.yAxisID); - var i, ilen, custom; - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, options); +function nextAvailableScaleId(axesOpts, prefix, index) { + var id; + var hasId = function(obj) { + return obj.id === id; + }; - // Update Line - if (showLine) { - custom = line.custom || {}; + do { + id = prefix + index++; + } while (helpers$1.findIndex(axesOpts, hasId) >= 0); - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } + return id; +} - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = { - // Appearance - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives lines the ability to span gaps - spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), - cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), - }; +function positionIsHorizontal(position) { + return position === 'top' || position === 'bottom'; +} - line.pivot(); - } +function compare2Level(l1, l2) { + return function(a, b) { + return a[l1] === b[l1] + ? a[l2] - b[l2] + : a[l1] - b[l1]; + }; +} - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } +var Chart = function(item, config) { + this.construct(item, config); + return this; +}; - if (showLine && line._model.tension !== 0) { - me.updateBezierControlPoints(); - } +helpers$1.extend(Chart.prototype, /** @lends Chart */ { + /** + * @private + */ + construct: function(item, config) { + var me = this; - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, + config = initConfig(config); - getPointBackgroundColor: function(point, index) { - var backgroundColor = this.chart.options.elements.point.backgroundColor; - var dataset = this.getDataset(); - var custom = point.custom || {}; - - if (custom.backgroundColor) { - backgroundColor = custom.backgroundColor; - } else if (dataset.pointBackgroundColor) { - backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); - } else if (dataset.backgroundColor) { - backgroundColor = dataset.backgroundColor; - } + var context = platform.acquireContext(item, config); + var canvas = context && context.canvas; + var height = canvas && canvas.height; + var width = canvas && canvas.width; - return backgroundColor; - }, + me.id = helpers$1.uid(); + me.ctx = context; + me.canvas = canvas; + me.config = config; + me.width = width; + me.height = height; + me.aspectRatio = height ? width / height : null; + me.options = config.options; + me._bufferedRender = false; + me._layers = []; - getPointBorderColor: function(point, index) { - var borderColor = this.chart.options.elements.point.borderColor; - var dataset = this.getDataset(); - var custom = point.custom || {}; - - if (custom.borderColor) { - borderColor = custom.borderColor; - } else if (dataset.pointBorderColor) { - borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); - } else if (dataset.borderColor) { - borderColor = dataset.borderColor; - } + /** + * Provided for backward compatibility, Chart and Chart.Controller have been merged, + * the "instance" still need to be defined since it might be called from plugins. + * @prop Chart#chart + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + me.chart = me; + me.controller = me; // chart.chart.controller #inception - return borderColor; - }, + // Add the chart instance to the global namespace + Chart.instances[me.id] = me; - getPointBorderWidth: function(point, index) { - var borderWidth = this.chart.options.elements.point.borderWidth; - var dataset = this.getDataset(); - var custom = point.custom || {}; - - if (!isNaN(custom.borderWidth)) { - borderWidth = custom.borderWidth; - } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { - borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); - } else if (!isNaN(dataset.borderWidth)) { - borderWidth = dataset.borderWidth; + // Define alias to the config data: `chart.data === chart.config.data` + Object.defineProperty(me, 'data', { + get: function() { + return me.config.data; + }, + set: function(value) { + me.config.data = value; } + }); - return borderWidth; - }, - - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var dataset = me.getDataset(); - var datasetIndex = me.index; - var value = dataset.data[index]; - var yScale = me.getScaleForId(meta.yAxisID); - var xScale = me.getScaleForId(meta.xAxisID); - var pointOptions = me.chart.options.elements.point; - var x, y; + if (!context || !canvas) { + // The given item is not a compatible context2d element, let's return before finalizing + // the chart initialization but after setting basic chart / controller properties that + // can help to figure out that the chart is not valid (e.g chart.canvas !== null); + // https://github.com/chartjs/Chart.js/issues/2807 + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; - } - if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { - dataset.pointHitRadius = dataset.hitRadius; - } + me.initialize(); + me.update(); + }, - x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); - y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); + /** + * @private + */ + initialize: function() { + var me = this; - // Utility - point._xScale = xScale; - point._yScale = yScale; - point._datasetIndex = datasetIndex; - point._index = index; + // Before init plugin notification + core_plugins.notify(me, 'beforeInit'); - // Desired view properties - point._model = { - x: x, - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), - pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), - backgroundColor: me.getPointBackgroundColor(point, index), - borderColor: me.getPointBorderColor(point, index), - borderWidth: me.getPointBorderWidth(point, index), - tension: meta.dataset._model ? meta.dataset._model.tension : 0, - steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, - // Tooltip - hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) - }; - }, + helpers$1.retinaScale(me, me.options.devicePixelRatio); - calculatePointY: function(value, index, datasetIndex) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var sumPos = 0; - var sumNeg = 0; - var i, ds, dsMeta; - - if (yScale.options.stacked) { - for (i = 0; i < datasetIndex; i++) { - ds = chart.data.datasets[i]; - dsMeta = chart.getDatasetMeta(i); - if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); - if (stackedRightValue < 0) { - sumNeg += stackedRightValue || 0; - } else { - sumPos += stackedRightValue || 0; - } - } - } + me.bindEvents(); - var rightValue = Number(yScale.getRightValue(value)); - if (rightValue < 0) { - return yScale.getPixelForValue(sumNeg + rightValue); - } - return yScale.getPixelForValue(sumPos + rightValue); - } + if (me.options.responsive) { + // Initial resize before chart draws (must be silent to preserve initial animations). + me.resize(true); + } - return yScale.getPixelForValue(value); - }, + me.initToolTip(); - updateBezierControlPoints: function() { - var me = this; - var meta = me.getMeta(); - var area = me.chart.chartArea; - var points = (meta.data || []); - var i, ilen, point, model, controlPoints; - - // Only consider points that are drawn in case the spanGaps option is used - if (meta.dataset._model.spanGaps) { - points = points.filter(function(pt) { - return !pt._model.skip; - }); - } + // After init plugin notification + core_plugins.notify(me, 'afterInit'); - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } + return me; + }, - if (meta.dataset._model.cubicInterpolationMode === 'monotone') { - helpers.splineCurveMonotone(points); - } else { - for (i = 0, ilen = points.length; i < ilen; ++i) { - point = points[i]; - model = point._model; - controlPoints = helpers.splineCurve( - helpers.previousItem(points, i)._model, - model, - helpers.nextItem(points, i)._model, - meta.dataset._model.tension - ); - model.controlPointPreviousX = controlPoints.previous.x; - model.controlPointPreviousY = controlPoints.previous.y; - model.controlPointNextX = controlPoints.next.x; - model.controlPointNextY = controlPoints.next.y; - } - } + clear: function() { + helpers$1.canvas.clear(this); + return this; + }, - if (me.chart.options.elements.line.capBezierPoints) { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); - model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); - model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); - model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); - } - } - }, + stop: function() { + // Stops any current animation loop occurring + core_animations.cancelAnimation(this); + return this; + }, - draw: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var points = meta.data || []; - var area = chart.chartArea; - var ilen = points.length; - var i = 0; + resize: function(silent) { + var me = this; + var options = me.options; + var canvas = me.canvas; + var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; - helpers.canvas.clipArea(chart.ctx, area); + // the canvas render width and height will be casted to integers so make sure that + // the canvas display style uses the same integer values to avoid blurring effect. - if (lineEnabled(me.getDataset(), chart.options)) { - meta.dataset.draw(); - } + // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed + var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas))); + var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas))); - helpers.canvas.unclipArea(chart.ctx); + if (me.width === newWidth && me.height === newHeight) { + return; + } - // Draw the points - for (; i < ilen; ++i) { - points[i].draw(area); - } - }, + canvas.width = me.width = newWidth; + canvas.height = me.height = newHeight; + canvas.style.width = newWidth + 'px'; + canvas.style.height = newHeight + 'px'; - setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var index = point._index; - var custom = point.custom || {}; - var model = point._model; - - model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); - }, + helpers$1.retinaScale(me, options.devicePixelRatio); - removeHoverStyle: function(point) { - var me = this; - var dataset = me.chart.data.datasets[point._datasetIndex]; - var index = point._index; - var custom = point.custom || {}; - var model = point._model; + if (!silent) { + // Notify any plugins about the resize + var newSize = {width: newWidth, height: newHeight}; + core_plugins.notify(me, 'resize', [newSize]); - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; + // Notify of resize + if (options.onResize) { + options.onResize(me, newSize); } - model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius); - model.backgroundColor = me.getPointBackgroundColor(point, index); - model.borderColor = me.getPointBorderColor(point, index); - model.borderWidth = me.getPointBorderWidth(point, index); + me.stop(); + me.update({ + duration: options.responsiveAnimationDuration + }); } - }); -}; + }, -},{"25":25,"40":40,"45":45}],19:[function(require,module,exports){ -'use strict'; + ensureScalesHaveIDs: function() { + var options = this.options; + var scalesOptions = options.scales || {}; + var scaleOptions = options.scale; -var defaults = require(25); -var elements = require(40); -var helpers = require(45); + helpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) { + if (!xAxisOptions.id) { + xAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index); + } + }); -defaults._set('polarArea', { - scale: { - type: 'radialLinear', - angleLines: { - display: false - }, - gridLines: { - circular: true - }, - pointLabels: { - display: false - }, - ticks: { - beginAtZero: true - } - }, + helpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) { + if (!yAxisOptions.id) { + yAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index); + } + }); - // Boolean - Whether to animate the rotation of the chart - animation: { - animateRotate: true, - animateScale: true + if (scaleOptions) { + scaleOptions.id = scaleOptions.id || 'scale'; + } }, - startAngle: -0.5 * Math.PI, - legendCallback: function(chart) { - var text = []; - text.push('<ul class="' + chart.id + '-legend">'); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; + /** + * Builds a map of scale ID to scale object for future lookup. + */ + buildOrUpdateScales: function() { + var me = this; + var options = me.options; + var scales = me.scales || {}; + var items = []; + var updated = Object.keys(scales).reduce(function(obj, id) { + obj[id] = false; + return obj; + }, {}); + + if (options.scales) { + items = items.concat( + (options.scales.xAxes || []).map(function(xAxisOptions) { + return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; + }), + (options.scales.yAxes || []).map(function(yAxisOptions) { + return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; + }) + ); + } - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); - if (labels[i]) { - text.push(labels[i]); - } - text.push('</li>'); - } + if (options.scale) { + items.push({ + options: options.scale, + dtype: 'radialLinear', + isDefault: true, + dposition: 'chartArea' + }); } - text.push('</ul>'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + helpers$1.each(items, function(item) { + var scaleOptions = item.options; + var id = scaleOptions.id; + var scaleType = valueOrDefault$9(scaleOptions.type, item.dtype); - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } - // Extra data used for toggling the correct item - index: i - }; - }); + updated[id] = true; + var scale = null; + if (id in scales && scales[id].type === scaleType) { + scale = scales[id]; + scale.options = scaleOptions; + scale.ctx = me.ctx; + scale.chart = me; + } else { + var scaleClass = core_scaleService.getScaleConstructor(scaleType); + if (!scaleClass) { + return; } - return []; + scale = new scaleClass({ + id: id, + type: scaleType, + options: scaleOptions, + ctx: me.ctx, + chart: me + }); + scales[scale.id] = scale; } - }, - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; + scale.mergeTicksOptions(); - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; + // TODO(SB): I think we should be able to remove this custom case (options.scale) + // and consider it as a regular scale part of the "scales"" map only! This would + // make the logic easier and remove some useless? custom code. + if (item.isDefault) { + me.scale = scale; + } + }); + // clear up discarded scales + helpers$1.each(updated, function(hasUpdated, id) { + if (!hasUpdated) { + delete scales[id]; } + }); - chart.update(); - } + me.scales = scales; + + core_scaleService.addScalesToLayout(this); }, - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(item, data) { - return data.labels[item.index] + ': ' + item.yLabel; + buildOrUpdateControllers: function() { + var me = this; + var newControllers = []; + var datasets = me.data.datasets; + var i, ilen; + + for (i = 0, ilen = datasets.length; i < ilen; i++) { + var dataset = datasets[i]; + var meta = me.getDatasetMeta(i); + var type = dataset.type || me.config.type; + + if (meta.type && meta.type !== type) { + me.destroyDatasetMeta(i); + meta = me.getDatasetMeta(i); + } + meta.type = type; + meta.order = dataset.order || 0; + meta.index = i; + + if (meta.controller) { + meta.controller.updateIndex(i); + meta.controller.linkScales(); + } else { + var ControllerClass = controllers[meta.type]; + if (ControllerClass === undefined) { + throw new Error('"' + meta.type + '" is not a chart type.'); + } + + meta.controller = new ControllerClass(me, i); + newControllers.push(meta.controller); } } - } -}); -module.exports = function(Chart) { + return newControllers; + }, + + /** + * Reset the elements of all datasets + * @private + */ + resetElements: function() { + var me = this; + helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.reset(); + }, me); + }, + + /** + * Resets the chart back to it's state before the initial animation + */ + reset: function() { + this.resetElements(); + this.tooltip.initialize(); + }, - Chart.controllers.polarArea = Chart.DatasetController.extend({ + update: function(config) { + var me = this; + var i, ilen; - dataElementType: elements.Arc, + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } - linkScales: helpers.noop, + updateConfig(me); - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var meta = me.getMeta(); - var opts = chart.options; - var arcOpts = opts.elements.arc; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + // plugins options references might have change, let's invalidate the cache + // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + core_plugins._invalidate(me); - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; + if (core_plugins.notify(me, 'beforeUpdate') === false) { + return; + } - meta.count = me.countVisibleElements(); + // In case the entire data object changed + me.tooltip._data = me.data; - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, + // Make sure dataset controllers are updated and new controllers are reset + var newControllers = me.buildOrUpdateControllers(); - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var labels = chart.data.labels; - - var circumference = me.calculateCircumference(dataset.data[index]); - var centerX = scale.xCenter; - var centerY = scale.yCenter; - - // If there is NaN data before us, we need to calculate the starting angle correctly. - // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data - var visibleCount = 0; - var meta = me.getMeta(); - for (var i = 0; i < index; ++i) { - if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { - ++visibleCount; - } - } + // Make sure all dataset controllers have correct meta data counts + for (i = 0, ilen = me.data.datasets.length; i < ilen; i++) { + me.getDatasetMeta(i).controller.buildOrUpdateElements(); + } - // var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = datasetStartAngle + (circumference * visibleCount); - var endAngle = startAngle + (arc.hidden ? 0 : circumference); - - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) - } + me.updateLayout(); + + // Can only reset the new controllers after the scales have been updated + if (me.options.animation && me.options.animation.duration) { + helpers$1.each(newControllers, function(controller) { + controller.reset(); }); + } - // Apply border and fill style - me.removeHoverStyle(arc); + me.updateDatasets(); - arc.pivot(); - }, + // Need to reset tooltip in case it is displayed with elements that are removed + // after update. + me.tooltip.initialize(); - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, + // Last active contains items that were previously in the tooltip. + // When we reset the tooltip, we need to clear it + me.lastActive = []; - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; + // Do this before render so that any plugins that need final scale updates can use it + core_plugins.notify(me, 'afterUpdate'); - helpers.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; - } - }); + me._layers.sort(compare2Level('z', '_idx')); - return count; - }, + if (me._bufferedRender) { + me._bufferedRequest = { + duration: config.duration, + easing: config.easing, + lazy: config.lazy + }; + } else { + me.render(config); + } + }, - calculateCircumference: function(value) { - var count = this.getMeta().count; - if (count > 0 && !isNaN(value)) { - return (2 * Math.PI) / count; - } - return 0; + /** + * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` + * hook, in which case, plugins will not be called on `afterLayout`. + * @private + */ + updateLayout: function() { + var me = this; + + if (core_plugins.notify(me, 'beforeLayout') === false) { + return; } - }); -}; -},{"25":25,"40":40,"45":45}],20:[function(require,module,exports){ -'use strict'; + core_layouts.update(this, this.width, this.height); -var defaults = require(25); -var elements = require(40); -var helpers = require(45); + me._layers = []; + helpers$1.each(me.boxes, function(box) { + // _configure is called twice, once in core.scale.update and once here. + // Here the boxes are fully updated and at their final positions. + if (box._configure) { + box._configure(); + } + me._layers.push.apply(me._layers, box._layers()); + }, me); -defaults._set('radar', { - scale: { - type: 'radialLinear' + me._layers.forEach(function(item, index) { + item._idx = index; + }); + + /** + * Provided for backward compatibility, use `afterLayout` instead. + * @method IPlugin#afterScaleUpdate + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + core_plugins.notify(me, 'afterScaleUpdate'); + core_plugins.notify(me, 'afterLayout'); }, - elements: { - line: { - tension: 0 // no bezier in radar + + /** + * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` + * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. + * @private + */ + updateDatasets: function() { + var me = this; + + if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) { + return; } - } -}); -module.exports = function(Chart) { + for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.updateDataset(i); + } - Chart.controllers.radar = Chart.DatasetController.extend({ + core_plugins.notify(me, 'afterDatasetsUpdate'); + }, - datasetElementType: elements.Line, + /** + * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` + * hook, in which case, plugins will not be called on `afterDatasetUpdate`. + * @private + */ + updateDataset: function(index) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index + }; - dataElementType: elements.Point, + if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { + return; + } - linkScales: helpers.noop, + meta.controller._update(); - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data; - var custom = line.custom || {}; - var dataset = me.getDataset(); - var lineElementOptions = me.chart.options.elements.line; - var scale = me.chart.scale; + core_plugins.notify(me, 'afterDatasetUpdate', [args]); + }, - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } + render: function(config) { + var me = this; - helpers.extend(meta.dataset, { - // Utility - _datasetIndex: me.index, - _scale: scale, - // Data - _children: points, - _loop: true, - // Model - _model: { - // Appearance - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - } - }); + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } - meta.dataset.pivot(); + var animationOptions = me.options.animation; + var duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration); + var lazy = config.lazy; - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }, me); + if (core_plugins.notify(me, 'beforeRender') === false) { + return; + } - // Update bezier control points - me.updateBezierControlPoints(); - }, - updateElement: function(point, index, reset) { - var me = this; - var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointElementOptions = me.chart.options.elements.point; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var onComplete = function(animation) { + core_plugins.notify(me, 'afterRender'); + helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me); + }; - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; - } - if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { - dataset.pointHitRadius = dataset.hitRadius; - } + if (animationOptions && duration) { + var animation = new core_animation({ + numSteps: duration / 16.66, // 60 fps + easing: config.easing || animationOptions.easing, - helpers.extend(point, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales - y: reset ? scale.yCenter : pointPosition.y, - - // Appearance - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), - radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), - pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) - } + render: function(chart, animationObject) { + var easingFunction = helpers$1.easing.effects[animationObject.easing]; + var currentStep = animationObject.currentStep; + var stepDecimal = currentStep / animationObject.numSteps; + + chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); + }, + + onAnimationProgress: animationOptions.onProgress, + onAnimationComplete: onComplete }); - point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); - }, - updateBezierControlPoints: function() { - var chartArea = this.chart.chartArea; - var meta = this.getMeta(); - - helpers.each(meta.data, function(point, index) { - var model = point._model; - var controlPoints = helpers.splineCurve( - helpers.previousItem(meta.data, index, true)._model, - model, - helpers.nextItem(meta.data, index, true)._model, - model.tension - ); + core_animations.addAnimation(me, animation, duration, lazy); + } else { + me.draw(); - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); + // See https://github.com/chartjs/Chart.js/issues/3781 + onComplete(new core_animation({numSteps: 0, chart: me})); + } - model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); + return me; + }, - // Now pivot the point for animation - point.pivot(); - }); - }, + draw: function(easingValue) { + var me = this; + var i, layers; - setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - - model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); - }, + me.clear(); + + if (helpers$1.isNullOrUndef(easingValue)) { + easingValue = 1; + } - removeHoverStyle: function(point) { - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - var pointElementOptions = this.chart.options.elements.point; + me.transition(easingValue); - model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius); - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); + if (me.width <= 0 || me.height <= 0) { + return; } - }); -}; -},{"25":25,"40":40,"45":45}],21:[function(require,module,exports){ -'use strict'; + if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) { + return; + } -var defaults = require(25); + // Because of plugin hooks (before/afterDatasetsDraw), datasets can't + // currently be part of layers. Instead, we draw + // layers <= 0 before(default, backward compat), and the rest after + layers = me._layers; + for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { + layers[i].draw(me.chartArea); + } -defaults._set('scatter', { - hover: { - mode: 'single' - }, + me.drawDatasets(easingValue); - scales: { - xAxes: [{ - id: 'x-axis-1', // need an ID so datasets can reference the scale - type: 'linear', // scatter should not use a category axis - position: 'bottom' - }], - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left' - }] + // Rest of layers + for (; i < layers.length; ++i) { + layers[i].draw(me.chartArea); + } + + me._drawTooltip(easingValue); + + core_plugins.notify(me, 'afterDraw', [easingValue]); }, - showLines: false, + /** + * @private + */ + transition: function(easingValue) { + var me = this; - tooltips: { - callbacks: { - title: function() { - return ''; // doesn't make sense for scatter since data are formatted as a point - }, - label: function(item) { - return '(' + item.xLabel + ', ' + item.yLabel + ')'; + for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { + if (me.isDatasetVisible(i)) { + me.getDatasetMeta(i).controller.transition(easingValue); } } - } -}); -module.exports = function(Chart) { - - // Scatter charts use line controllers - Chart.controllers.scatter = Chart.controllers.line; + me.tooltip.transition(easingValue); + }, -}; + /** + * @private + */ + _getSortedDatasetMetas: function(filterVisible) { + var me = this; + var datasets = me.data.datasets || []; + var result = []; + var i, ilen; -},{"25":25}],22:[function(require,module,exports){ -/* global window: false */ -'use strict'; + for (i = 0, ilen = datasets.length; i < ilen; ++i) { + if (!filterVisible || me.isDatasetVisible(i)) { + result.push(me.getDatasetMeta(i)); + } + } -var defaults = require(25); -var Element = require(26); -var helpers = require(45); + result.sort(compare2Level('order', 'index')); -defaults._set('global', { - animation: { - duration: 1000, - easing: 'easeOutQuart', - onProgress: helpers.noop, - onComplete: helpers.noop - } -}); + return result; + }, -module.exports = function(Chart) { + /** + * @private + */ + _getSortedVisibleDatasetMetas: function() { + return this._getSortedDatasetMetas(true); + }, - Chart.Animation = Element.extend({ - chart: null, // the animation associated chart instance - currentStep: 0, // the current animation step - numSteps: 60, // default number of steps - easing: '', // the easing to use for this animation - render: null, // render function used by the animation service + /** + * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` + * hook, in which case, plugins will not be called on `afterDatasetsDraw`. + * @private + */ + drawDatasets: function(easingValue) { + var me = this; + var metasets, i; - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null, // user specified callback to fire when the animation finishes - }); + if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { + return; + } - Chart.animationService = { - frameDuration: 17, - animations: [], - dropFrames: 0, - request: null, + metasets = me._getSortedVisibleDatasetMetas(); + for (i = metasets.length - 1; i >= 0; --i) { + me.drawDataset(metasets[i], easingValue); + } - /** - * @param {Chart} chart - The chart to animate. - * @param {Chart.Animation} animation - The animation that we will animate. - * @param {Number} duration - The animation duration in ms. - * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions - */ - addAnimation: function(chart, animation, duration, lazy) { - var animations = this.animations; - var i, ilen; + core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]); + }, - animation.chart = chart; + /** + * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` + * hook, in which case, plugins will not be called on `afterDatasetDraw`. + * @private + */ + drawDataset: function(meta, easingValue) { + var me = this; + var args = { + meta: meta, + index: meta.index, + easingValue: easingValue + }; - if (!lazy) { - chart.animating = true; - } + if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { + return; + } - for (i = 0, ilen = animations.length; i < ilen; ++i) { - if (animations[i].chart === chart) { - animations[i] = animation; - return; - } - } + meta.controller.draw(easingValue); - animations.push(animation); + core_plugins.notify(me, 'afterDatasetDraw', [args]); + }, - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (animations.length === 1) { - this.requestAnimationFrame(); - } - }, + /** + * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` + * hook, in which case, plugins will not be called on `afterTooltipDraw`. + * @private + */ + _drawTooltip: function(easingValue) { + var me = this; + var tooltip = me.tooltip; + var args = { + tooltip: tooltip, + easingValue: easingValue + }; - cancelAnimation: function(chart) { - var index = helpers.findIndex(this.animations, function(animation) { - return animation.chart === chart; - }); + if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { + return; + } - if (index !== -1) { - this.animations.splice(index, 1); - chart.animating = false; - } - }, + tooltip.draw(); - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); - }); - } - }, + core_plugins.notify(me, 'afterTooltipDraw', [args]); + }, - /** - * @private - */ - startDigest: function() { - var me = this; - var startTime = Date.now(); - var framesToDrop = 0; - - if (me.dropFrames > 1) { - framesToDrop = Math.floor(me.dropFrames); - me.dropFrames = me.dropFrames % 1; - } + /** + * Get the single element that was clicked on + * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw + */ + getElementAtEvent: function(e) { + return core_interaction.modes.single(this, e); + }, - me.advance(1 + framesToDrop); + getElementsAtEvent: function(e) { + return core_interaction.modes.label(this, e, {intersect: true}); + }, - var endTime = Date.now(); + getElementsAtXAxis: function(e) { + return core_interaction.modes['x-axis'](this, e, {intersect: true}); + }, - me.dropFrames += (endTime - startTime) / me.frameDuration; + getElementsAtEventForMode: function(e, mode, options) { + var method = core_interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options); + } - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - }, + return []; + }, - /** - * @private - */ - advance: function(count) { - var animations = this.animations; - var animation, chart; - var i = 0; + getDatasetAtEvent: function(e) { + return core_interaction.modes.dataset(this, e, {intersect: true}); + }, - while (i < animations.length) { - animation = animations[i]; - chart = animation.chart; + getDatasetMeta: function(datasetIndex) { + var me = this; + var dataset = me.data.datasets[datasetIndex]; + if (!dataset._meta) { + dataset._meta = {}; + } - animation.currentStep = (animation.currentStep || 0) + count; - animation.currentStep = Math.min(animation.currentStep, animation.numSteps); + var meta = dataset._meta[me.id]; + if (!meta) { + meta = dataset._meta[me.id] = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, // See isDatasetVisible() comment + xAxisID: null, + yAxisID: null, + order: dataset.order || 0, + index: datasetIndex + }; + } - helpers.callback(animation.render, [chart, animation], chart); - helpers.callback(animation.onAnimationProgress, [animation], chart); + return meta; + }, - if (animation.currentStep >= animation.numSteps) { - helpers.callback(animation.onAnimationComplete, [animation], chart); - chart.animating = false; - animations.splice(i, 1); - } else { - ++i; - } + getVisibleDatasetCount: function() { + var count = 0; + for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + if (this.isDatasetVisible(i)) { + count++; } } - }; + return count; + }, - /** - * Provided for backward compatibility, use Chart.Animation instead - * @prop Chart.Animation#animationObject - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ - Object.defineProperty(Chart.Animation.prototype, 'animationObject', { - get: function() { - return this; - } - }); + isDatasetVisible: function(datasetIndex) { + var meta = this.getDatasetMeta(datasetIndex); + + // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, + // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. + return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; + }, + + generateLegend: function() { + return this.options.legendCallback(this); + }, /** - * Provided for backward compatibility, use Chart.Animation#chart instead - * @prop Chart.Animation#chartInstance - * @deprecated since version 2.6.0 - * @todo remove at version 3 + * @private */ - Object.defineProperty(Chart.Animation.prototype, 'chartInstance', { - get: function() { - return this.chart; - }, - set: function(value) { - this.chart = value; + destroyDatasetMeta: function(datasetIndex) { + var id = this.id; + var dataset = this.data.datasets[datasetIndex]; + var meta = dataset._meta && dataset._meta[id]; + + if (meta) { + meta.controller.destroy(); + delete dataset._meta[id]; } - }); + }, + + destroy: function() { + var me = this; + var canvas = me.canvas; + var i, ilen; -}; + me.stop(); -},{"25":25,"26":26,"45":45}],23:[function(require,module,exports){ -'use strict'; + // dataset controllers need to cleanup associated data + for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.destroyDatasetMeta(i); + } -var defaults = require(25); -var helpers = require(45); -var Interaction = require(28); -var layouts = require(30); -var platform = require(48); -var plugins = require(31); + if (canvas) { + me.unbindEvents(); + helpers$1.canvas.clear(me); + platform.releaseContext(me.ctx); + me.canvas = null; + me.ctx = null; + } -module.exports = function(Chart) { + core_plugins.notify(me, 'destroy'); - // Create a dictionary of chart types, to allow for extension of existing types - Chart.types = {}; + delete Chart.instances[me.id]; + }, - // Store a reference to each instance - allowing us to globally resize chart instances on window resize. - // Destroy method on the chart will remove the instance of the chart from this reference. - Chart.instances = {}; + toBase64Image: function() { + return this.canvas.toDataURL.apply(this.canvas, arguments); + }, - // Controllers available for dataset visualization eg. bar, line, slice, etc. - Chart.controllers = {}; + initToolTip: function() { + var me = this; + me.tooltip = new core_tooltip({ + _chart: me, + _chartInstance: me, // deprecated, backward compatibility + _data: me.data, + _options: me.options.tooltips + }, me); + }, /** - * Initializes the given config with global and chart default values. + * @private */ - function initConfig(config) { - config = config || {}; + bindEvents: function() { + var me = this; + var listeners = me._listeners = {}; + var listener = function() { + me.eventHandler.apply(me, arguments); + }; - // Do NOT use configMerge() for the data object because this method merges arrays - // and so would change references to labels and datasets, preventing data updates. - var data = config.data = config.data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; + helpers$1.each(me.options.events, function(type) { + platform.addEventListener(me, type, listener); + listeners[type] = listener; + }); - config.options = helpers.configMerge( - defaults.global, - defaults[config.type], - config.options || {}); + // Elements used to detect size change should not be injected for non responsive charts. + // See https://github.com/chartjs/Chart.js/issues/2210 + if (me.options.responsive) { + listener = function() { + me.resize(); + }; - return config; - } + platform.addEventListener(me, 'resize', listener); + listeners.resize = listener; + } + }, /** - * Updates the config of the chart - * @param chart {Chart} chart to update the options for + * @private */ - function updateConfig(chart) { - var newOptions = chart.options; + unbindEvents: function() { + var me = this; + var listeners = me._listeners; + if (!listeners) { + return; + } - helpers.each(chart.scales, function(scale) { - layouts.removeBox(chart, scale); + delete me._listeners; + helpers$1.each(listeners, function(listener, type) { + platform.removeEventListener(me, type, listener); }); + }, - newOptions = helpers.configMerge( - Chart.defaults.global, - Chart.defaults[chart.config.type], - newOptions); - - chart.options = chart.config.options = newOptions; - chart.ensureScalesHaveIDs(); - chart.buildOrUpdateScales(); - // Tooltip - chart.tooltip._options = newOptions.tooltips; - chart.tooltip.initialize(); - } - - function positionIsHorizontal(position) { - return position === 'top' || position === 'bottom'; - } - - helpers.extend(Chart.prototype, /** @lends Chart */ { - /** - * @private - */ - construct: function(item, config) { - var me = this; - - config = initConfig(config); - - var context = platform.acquireContext(item, config); - var canvas = context && context.canvas; - var height = canvas && canvas.height; - var width = canvas && canvas.width; - - me.id = helpers.uid(); - me.ctx = context; - me.canvas = canvas; - me.config = config; - me.width = width; - me.height = height; - me.aspectRatio = height ? width / height : null; - me.options = config.options; - me._bufferedRender = false; - - /** - * Provided for backward compatibility, Chart and Chart.Controller have been merged, - * the "instance" still need to be defined since it might be called from plugins. - * @prop Chart#chart - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - me.chart = me; - me.controller = me; // chart.chart.controller #inception - - // Add the chart instance to the global namespace - Chart.instances[me.id] = me; - - // Define alias to the config data: `chart.data === chart.config.data` - Object.defineProperty(me, 'data', { - get: function() { - return me.config.data; - }, - set: function(value) { - me.config.data = value; - } - }); + updateHoverStyle: function(elements, mode, enabled) { + var prefix = enabled ? 'set' : 'remove'; + var element, i, ilen; - if (!context || !canvas) { - // The given item is not a compatible context2d element, let's return before finalizing - // the chart initialization but after setting basic chart / controller properties that - // can help to figure out that the chart is not valid (e.g chart.canvas !== null); - // https://github.com/chartjs/Chart.js/issues/2807 - console.error("Failed to create chart: can't acquire context from the given item"); - return; + for (i = 0, ilen = elements.length; i < ilen; ++i) { + element = elements[i]; + if (element) { + this.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element); } + } - me.initialize(); - me.update(); - }, - - /** - * @private - */ - initialize: function() { - var me = this; + if (mode === 'dataset') { + this.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle'](); + } + }, - // Before init plugin notification - plugins.notify(me, 'beforeInit'); + /** + * @private + */ + eventHandler: function(e) { + var me = this; + var tooltip = me.tooltip; - helpers.retinaScale(me, me.options.devicePixelRatio); + if (core_plugins.notify(me, 'beforeEvent', [e]) === false) { + return; + } - me.bindEvents(); + // Buffer any update calls so that renders do not occur + me._bufferedRender = true; + me._bufferedRequest = null; + + var changed = me.handleEvent(e); + // for smooth tooltip animations issue #4989 + // the tooltip should be the source of change + // Animation check workaround: + // tooltip._start will be null when tooltip isn't animating + if (tooltip) { + changed = tooltip._start + ? tooltip.handleEvent(e) + : changed | tooltip.handleEvent(e); + } - if (me.options.responsive) { - // Initial resize before chart draws (must be silent to preserve initial animations). - me.resize(true); - } + core_plugins.notify(me, 'afterEvent', [e]); - // Make sure scales have IDs and are built before we build any controllers. - me.ensureScalesHaveIDs(); - me.buildOrUpdateScales(); - me.initToolTip(); + var bufferedRequest = me._bufferedRequest; + if (bufferedRequest) { + // If we have an update that was triggered, we need to do a normal render + me.render(bufferedRequest); + } else if (changed && !me.animating) { + // If entering, leaving, or changing elements, animate the change via pivot + me.stop(); - // After init plugin notification - plugins.notify(me, 'afterInit'); + // We only need to render at this point. Updating will cause scales to be + // recomputed generating flicker & using more memory than necessary. + me.render({ + duration: me.options.hover.animationDuration, + lazy: true + }); + } - return me; - }, + me._bufferedRender = false; + me._bufferedRequest = null; - clear: function() { - helpers.canvas.clear(this); - return this; - }, + return me; + }, - stop: function() { - // Stops any current animation loop occurring - Chart.animationService.cancelAnimation(this); - return this; - }, + /** + * Handle an event + * @private + * @param {IEvent} event the event to handle + * @return {boolean} true if the chart needs to re-render + */ + handleEvent: function(e) { + var me = this; + var options = me.options || {}; + var hoverOptions = options.hover; + var changed = false; - resize: function(silent) { - var me = this; - var options = me.options; - var canvas = me.canvas; - var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; + me.lastActive = me.lastActive || []; - // the canvas render width and height will be casted to integers so make sure that - // the canvas display style uses the same integer values to avoid blurring effect. + // Find Active Elements for hover and tooltips + if (e.type === 'mouseout') { + me.active = []; + } else { + me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); + } - // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased - var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); - var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); + // Invoke onHover hook + // Need to call with native event here to not break backwards compatibility + helpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); - if (me.width === newWidth && me.height === newHeight) { - return; + if (e.type === 'mouseup' || e.type === 'click') { + if (options.onClick) { + // Use e.native here for backwards compatibility + options.onClick.call(me, e.native, me.active); } + } - canvas.width = me.width = newWidth; - canvas.height = me.height = newHeight; - canvas.style.width = newWidth + 'px'; - canvas.style.height = newHeight + 'px'; - - helpers.retinaScale(me, options.devicePixelRatio); - - if (!silent) { - // Notify any plugins about the resize - var newSize = {width: newWidth, height: newHeight}; - plugins.notify(me, 'resize', [newSize]); - - // Notify of resize - if (me.options.onResize) { - me.options.onResize(me, newSize); - } - - me.stop(); - me.update(me.options.responsiveAnimationDuration); - } - }, + // Remove styling for last active (even if it may still be active) + if (me.lastActive.length) { + me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); + } - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; + // Built in hover styling + if (me.active.length && hoverOptions.mode) { + me.updateHoverStyle(me.active, hoverOptions.mode, true); + } - helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); + changed = !helpers$1.arrayEquals(me.active, me.lastActive); - helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); + // Remember Last Actives + me.lastActive = me.active; - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; - } - }, + return changed; + } +}); - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildOrUpdateScales: function() { - var me = this; - var options = me.options; - var scales = me.scales || {}; - var items = []; - var updated = Object.keys(scales).reduce(function(obj, id) { - obj[id] = false; - return obj; - }, {}); - - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; - }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; - }) - ); - } +/** + * NOTE(SB) We actually don't use this container anymore but we need to keep it + * for backward compatibility. Though, it can still be useful for plugins that + * would need to work on multiple charts?! + */ +Chart.instances = {}; - if (options.scale) { - items.push({ - options: options.scale, - dtype: 'radialLinear', - isDefault: true, - dposition: 'chartArea' - }); - } +var core_controller = Chart; - helpers.each(items, function(item) { - var scaleOptions = item.options; - var id = scaleOptions.id; - var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); +// DEPRECATIONS - if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { - scaleOptions.position = item.dposition; - } +/** + * Provided for backward compatibility, use Chart instead. + * @class Chart.Controller + * @deprecated since version 2.6 + * @todo remove at version 3 + * @private + */ +Chart.Controller = Chart; - updated[id] = true; - var scale = null; - if (id in scales && scales[id].type === scaleType) { - scale = scales[id]; - scale.options = scaleOptions; - scale.ctx = me.ctx; - scale.chart = me; - } else { - var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - scale = new scaleClass({ - id: id, - type: scaleType, - options: scaleOptions, - ctx: me.ctx, - chart: me - }); - scales[scale.id] = scale; - } +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart + * @deprecated since version 2.8 + * @todo remove at version 3 + * @private + */ +Chart.types = {}; - scale.mergeTicksOptions(); +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.helpers.configMerge + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +helpers$1.configMerge = mergeConfig; - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - // clear up discarded scales - helpers.each(updated, function(hasUpdated, id) { - if (!hasUpdated) { - delete scales[id]; - } - }); +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.helpers.scaleMerge + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +helpers$1.scaleMerge = mergeScaleConfig; - me.scales = scales; +var core_helpers = function() { - Chart.scaleService.addScalesToLayout(this); - }, + // -- Basic js utility methods - buildOrUpdateControllers: function() { - var me = this; - var types = []; - var newControllers = []; + helpers$1.where = function(collection, filterCallback) { + if (helpers$1.isArray(collection) && Array.prototype.filter) { + return collection.filter(filterCallback); + } + var filtered = []; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - var type = dataset.type || me.config.type; + helpers$1.each(collection, function(item) { + if (filterCallback(item)) { + filtered.push(item); + } + }); - if (meta.type && meta.type !== type) { - me.destroyDatasetMeta(datasetIndex); - meta = me.getDatasetMeta(datasetIndex); + return filtered; + }; + helpers$1.findIndex = Array.prototype.findIndex ? + function(array, callback, scope) { + return array.findIndex(callback, scope); + } : + function(array, callback, scope) { + scope = scope === undefined ? array : scope; + for (var i = 0, ilen = array.length; i < ilen; ++i) { + if (callback.call(scope, array[i], i, array)) { + return i; } - meta.type = type; + } + return -1; + }; + helpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to start of the array + if (helpers$1.isNullOrUndef(startIndex)) { + startIndex = -1; + } + for (var i = startIndex + 1; i < arrayToSearch.length; i++) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to end of the array + if (helpers$1.isNullOrUndef(startIndex)) { + startIndex = arrayToSearch.length; + } + for (var i = startIndex - 1; i >= 0; i--) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; - types.push(meta.type); + // -- Math methods + helpers$1.isNumber = function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }; + helpers$1.almostEquals = function(x, y, epsilon) { + return Math.abs(x - y) < epsilon; + }; + helpers$1.almostWhole = function(x, epsilon) { + var rounded = Math.round(x); + return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x); + }; + helpers$1.max = function(array) { + return array.reduce(function(max, value) { + if (!isNaN(value)) { + return Math.max(max, value); + } + return max; + }, Number.NEGATIVE_INFINITY); + }; + helpers$1.min = function(array) { + return array.reduce(function(min, value) { + if (!isNaN(value)) { + return Math.min(min, value); + } + return min; + }, Number.POSITIVE_INFINITY); + }; + helpers$1.sign = Math.sign ? + function(x) { + return Math.sign(x); + } : + function(x) { + x = +x; // convert to a number + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; + }; + helpers$1.toRadians = function(degrees) { + return degrees * (Math.PI / 180); + }; + helpers$1.toDegrees = function(radians) { + return radians * (180 / Math.PI); + }; - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - meta.controller.linkScales(); - } else { - var ControllerClass = Chart.controllers[meta.type]; - if (ControllerClass === undefined) { - throw new Error('"' + meta.type + '" is not a chart type.'); - } + /** + * Returns the number of decimal places + * i.e. the number of digits after the decimal point, of the value of this Number. + * @param {number} x - A number. + * @returns {number} The number of decimal places. + * @private + */ + helpers$1._decimalPlaces = function(x) { + if (!helpers$1.isFinite(x)) { + return; + } + var e = 1; + var p = 0; + while (Math.round(x * e) / e !== x) { + e *= 10; + p++; + } + return p; + }; - meta.controller = new ControllerClass(me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); + // Gets the angle from vertical upright to the point about a centre. + helpers$1.getAngleFromPoint = function(centrePoint, anglePoint) { + var distanceFromXCenter = anglePoint.x - centrePoint.x; + var distanceFromYCenter = anglePoint.y - centrePoint.y; + var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - return newControllers; - }, + var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); - /** - * Reset the elements of all datasets - * @private - */ - resetElements: function() { - var me = this; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); - }, + if (angle < (-0.5 * Math.PI)) { + angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + } - /** - * Resets the chart back to it's state before the initial animation - */ - reset: function() { - this.resetElements(); - this.tooltip.initialize(); - }, + return { + angle: angle, + distance: radialDistanceFromCenter + }; + }; + helpers$1.distanceBetweenPoints = function(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); + }; - update: function(config) { - var me = this; + /** + * Provided for backward compatibility, not available anymore + * @function Chart.helpers.aliasPixel + * @deprecated since version 2.8.0 + * @todo remove at version 3 + */ + helpers$1.aliasPixel = function(pixelWidth) { + return (pixelWidth % 2 === 0) ? 0 : 0.5; + }; - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } + /** + * Returns the aligned pixel value to avoid anti-aliasing blur + * @param {Chart} chart - The chart instance. + * @param {number} pixel - A pixel value. + * @param {number} width - The width of the element. + * @returns {number} The aligned pixel value. + * @private + */ + helpers$1._alignPixel = function(chart, pixel, width) { + var devicePixelRatio = chart.currentDevicePixelRatio; + var halfWidth = width / 2; + return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; + }; - updateConfig(me); + helpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { + // Props to Rob Spencer at scaled innovation for his post on splining between points + // http://scaledinnovation.com/analytics/splines/aboutSplines.html - // plugins options references might have change, let's invalidate the cache - // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - plugins._invalidate(me); + // This function must also respect "skipped" points - if (plugins.notify(me, 'beforeUpdate') === false) { - return; - } + var previous = firstPoint.skip ? middlePoint : firstPoint; + var current = middlePoint; + var next = afterPoint.skip ? middlePoint : afterPoint; - // In case the entire data object changed - me.tooltip._data = me.data; + var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); + var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); + var s01 = d01 / (d01 + d12); + var s12 = d12 / (d01 + d12); - // Make sure all dataset controllers have correct meta data counts - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); + // If all points are the same, s01 & s02 will be inf + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; - me.updateLayout(); + var fa = t * s01; // scaling factor for triangle Ta + var fb = t * s12; - // Can only reset the new controllers after the scales have been updated - if (me.options.animation && me.options.animation.duration) { - helpers.each(newControllers, function(controller) { - controller.reset(); - }); + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) } + }; + }; + helpers$1.EPSILON = Number.EPSILON || 1e-14; + helpers$1.splineCurveMonotone = function(points) { + // This function calculates Bézier control points in a similar way than |splineCurve|, + // but preserves monotonicity of the provided data and ensures no local extremums are added + // between the dataset discrete points due to the interpolation. + // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation - me.updateDatasets(); + var pointsWithTangents = (points || []).map(function(point) { + return { + model: point._model, + deltaK: 0, + mK: 0 + }; + }); - // Need to reset tooltip in case it is displayed with elements that are removed - // after update. - me.tooltip.initialize(); + // Calculate slopes (deltaK) and initialize tangents (mK) + var pointsLen = pointsWithTangents.length; + var i, pointBefore, pointCurrent, pointAfter; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } - // Last active contains items that were previously in the tooltip. - // When we reset the tooltip, we need to clear it - me.lastActive = []; + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointAfter && !pointAfter.model.skip) { + var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); - // Do this before render so that any plugins that need final scale updates can use it - plugins.notify(me, 'afterUpdate'); + // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 + pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + } - if (me._bufferedRender) { - me._bufferedRequest = { - duration: config.duration, - easing: config.easing, - lazy: config.lazy - }; + if (!pointBefore || pointBefore.model.skip) { + pointCurrent.mK = pointCurrent.deltaK; + } else if (!pointAfter || pointAfter.model.skip) { + pointCurrent.mK = pointBefore.deltaK; + } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { + pointCurrent.mK = 0; } else { - me.render(config); + pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; } - }, + } - /** - * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` - * hook, in which case, plugins will not be called on `afterLayout`. - * @private - */ - updateLayout: function() { - var me = this; + // Adjust tangents to ensure monotonic properties + var alphaK, betaK, tauK, squaredMagnitude; + for (i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointsWithTangents[i]; + pointAfter = pointsWithTangents[i + 1]; + if (pointCurrent.model.skip || pointAfter.model.skip) { + continue; + } - if (plugins.notify(me, 'beforeLayout') === false) { - return; + if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { + pointCurrent.mK = pointAfter.mK = 0; + continue; } - layouts.update(this, this.width, this.height); - - /** - * Provided for backward compatibility, use `afterLayout` instead. - * @method IPlugin#afterScaleUpdate - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ - plugins.notify(me, 'afterScaleUpdate'); - plugins.notify(me, 'afterLayout'); - }, + alphaK = pointCurrent.mK / pointCurrent.deltaK; + betaK = pointAfter.mK / pointCurrent.deltaK; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } - /** - * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` - * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. - * @private - */ - updateDatasets: function() { - var me = this; + tauK = 3 / Math.sqrt(squaredMagnitude); + pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; + pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + } - if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { - return; + // Compute control points + var deltaX; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; } - for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.updateDataset(i); + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointBefore && !pointBefore.model.skip) { + deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; + pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; + pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; } + if (pointAfter && !pointAfter.model.skip) { + deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; + pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; + pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + } + } + }; + helpers$1.nextItem = function(collection, index, loop) { + if (loop) { + return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + } + return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; + }; + helpers$1.previousItem = function(collection, index, loop) { + if (loop) { + return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + } + return index <= 0 ? collection[0] : collection[index - 1]; + }; + // Implementation of the nice number algorithm used in determining where axis labels will go + helpers$1.niceNum = function(range, round) { + var exponent = Math.floor(helpers$1.log10(range)); + var fraction = range / Math.pow(10, exponent); + var niceFraction; - plugins.notify(me, 'afterDatasetsUpdate'); - }, - - /** - * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` - * hook, in which case, plugins will not be called on `afterDatasetUpdate`. - * @private - */ - updateDataset: function(index) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index - }; - - if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { - return; + if (round) { + if (fraction < 1.5) { + niceFraction = 1; + } else if (fraction < 3) { + niceFraction = 2; + } else if (fraction < 7) { + niceFraction = 5; + } else { + niceFraction = 10; } + } else if (fraction <= 1.0) { + niceFraction = 1; + } else if (fraction <= 2) { + niceFraction = 2; + } else if (fraction <= 5) { + niceFraction = 5; + } else { + niceFraction = 10; + } - meta.controller.update(); + return niceFraction * Math.pow(10, exponent); + }; + // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + helpers$1.requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + callback(); + }; + } + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + return window.setTimeout(callback, 1000 / 60); + }; + }()); + // -- DOM methods + helpers$1.getRelativePosition = function(evt, chart) { + var mouseX, mouseY; + var e = evt.originalEvent || evt; + var canvas = evt.target || evt.srcElement; + var boundingRect = canvas.getBoundingClientRect(); - plugins.notify(me, 'afterDatasetUpdate', [args]); - }, + var touches = e.touches; + if (touches && touches.length > 0) { + mouseX = touches[0].clientX; + mouseY = touches[0].clientY; - render: function(config) { - var me = this; + } else { + mouseX = e.clientX; + mouseY = e.clientY; + } - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } + // Scale mouse coordinates into canvas coordinates + // by following the pattern laid out by 'jerryj' in the comments of + // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ + var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left')); + var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top')); + var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right')); + var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom')); + var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; + var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; - var duration = config.duration; - var lazy = config.lazy; + // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However + // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here + mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); + mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); - if (plugins.notify(me, 'beforeRender') === false) { - return; - } + return { + x: mouseX, + y: mouseY + }; - var animationOptions = me.options.animation; - var onComplete = function(animation) { - plugins.notify(me, 'afterRender'); - helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); - }; + }; - if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { - var animation = new Chart.Animation({ - numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps - easing: config.easing || animationOptions.easing, + // Private helper function to convert max-width/max-height values that may be percentages into a number + function parseMaxStyle(styleValue, node, parentProperty) { + var valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); - render: function(chart, animationObject) { - var easingFunction = helpers.easing.effects[animationObject.easing]; - var currentStep = animationObject.currentStep; - var stepDecimal = currentStep / animationObject.numSteps; + if (styleValue.indexOf('%') !== -1) { + // percentage * size in dimension + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } - chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); - }, + return valueInPixels; + } - onAnimationProgress: animationOptions.onProgress, - onAnimationComplete: onComplete - }); + /** + * Returns if the given value contains an effective constraint. + * @private + */ + function isConstrainedValue(value) { + return value !== undefined && value !== null && value !== 'none'; + } - Chart.animationService.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); + /** + * Returns the max width or height of the given DOM node in a cross-browser compatible fashion + * @param {HTMLElement} domNode - the node to check the constraint on + * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height') + * @param {string} percentageProperty - property of parent to use when calculating width as a percentage + * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser} + */ + function getConstraintDimension(domNode, maxStyle, percentageProperty) { + var view = document.defaultView; + var parentNode = helpers$1._getParentNode(domNode); + var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; + var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; + var hasCNode = isConstrainedValue(constrainedNode); + var hasCContainer = isConstrainedValue(constrainedContainer); + var infinity = Number.POSITIVE_INFINITY; - // See https://github.com/chartjs/Chart.js/issues/3781 - onComplete(new Chart.Animation({numSteps: 0, chart: me})); - } + if (hasCNode || hasCContainer) { + return Math.min( + hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, + hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); + } - return me; - }, + return 'none'; + } + // returns Number or undefined if no constraint + helpers$1.getConstraintWidth = function(domNode) { + return getConstraintDimension(domNode, 'max-width', 'clientWidth'); + }; + // returns Number or undefined if no constraint + helpers$1.getConstraintHeight = function(domNode) { + return getConstraintDimension(domNode, 'max-height', 'clientHeight'); + }; + /** + * @private + */ + helpers$1._calculatePadding = function(container, padding, parentDimension) { + padding = helpers$1.getStyle(container, padding); - draw: function(easingValue) { - var me = this; + return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10); + }; + /** + * @private + */ + helpers$1._getParentNode = function(domNode) { + var parent = domNode.parentNode; + if (parent && parent.toString() === '[object ShadowRoot]') { + parent = parent.host; + } + return parent; + }; + helpers$1.getMaximumWidth = function(domNode) { + var container = helpers$1._getParentNode(domNode); + if (!container) { + return domNode.clientWidth; + } - me.clear(); + var clientWidth = container.clientWidth; + var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth); + var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth); - if (helpers.isNullOrUndef(easingValue)) { - easingValue = 1; - } + var w = clientWidth - paddingLeft - paddingRight; + var cw = helpers$1.getConstraintWidth(domNode); + return isNaN(cw) ? w : Math.min(w, cw); + }; + helpers$1.getMaximumHeight = function(domNode) { + var container = helpers$1._getParentNode(domNode); + if (!container) { + return domNode.clientHeight; + } - me.transition(easingValue); + var clientHeight = container.clientHeight; + var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight); + var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight); - if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { - return; - } + var h = clientHeight - paddingTop - paddingBottom; + var ch = helpers$1.getConstraintHeight(domNode); + return isNaN(ch) ? h : Math.min(h, ch); + }; + helpers$1.getStyle = function(el, property) { + return el.currentStyle ? + el.currentStyle[property] : + document.defaultView.getComputedStyle(el, null).getPropertyValue(property); + }; + helpers$1.retinaScale = function(chart, forceRatio) { + var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; + if (pixelRatio === 1) { + return; + } - // Draw all the scales - helpers.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); + var canvas = chart.canvas; + var height = chart.height; + var width = chart.width; - if (me.scale) { - me.scale.draw(); - } + canvas.height = height * pixelRatio; + canvas.width = width * pixelRatio; + chart.ctx.scale(pixelRatio, pixelRatio); - me.drawDatasets(easingValue); - me._drawTooltip(easingValue); + // If no style has been set on the canvas, the render size is used as display size, + // making the chart visually bigger, so let's enforce it to the "correct" values. + // See https://github.com/chartjs/Chart.js/issues/3575 + if (!canvas.style.height && !canvas.style.width) { + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + } + }; + // -- Canvas methods + helpers$1.fontString = function(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; + }; + helpers$1.longestText = function(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + var data = cache.data = cache.data || {}; + var gc = cache.garbageCollect = cache.garbageCollect || []; - plugins.notify(me, 'afterDraw', [easingValue]); - }, + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } - /** - * @private - */ - transition: function(easingValue) { - var me = this; + ctx.font = font; + var longest = 0; + var ilen = arrayOfThings.length; + var i, j, jlen, thing, nestedThing; + for (i = 0; i < ilen; i++) { + thing = arrayOfThings[i]; - for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { - if (me.isDatasetVisible(i)) { - me.getDatasetMeta(i).controller.transition(easingValue); + // Undefined strings and arrays should not be measured + if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) { + longest = helpers$1.measureText(ctx, data, gc, longest, thing); + } else if (helpers$1.isArray(thing)) { + // if it is an array lets measure each element + // to do maybe simplify this function a bit so we can do this more recursively? + for (j = 0, jlen = thing.length; j < jlen; j++) { + nestedThing = thing[j]; + // Undefined strings and arrays should not be measured + if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) { + longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing); + } } } + } - me.tooltip.transition(easingValue); - }, - - /** - * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` - * hook, in which case, plugins will not be called on `afterDatasetsDraw`. - * @private - */ - drawDatasets: function(easingValue) { - var me = this; - - if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { - return; + var gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (i = 0; i < gcLen; i++) { + delete data[gc[i]]; } + gc.splice(0, gcLen); + } + return longest; + }; + helpers$1.measureText = function(ctx, data, gc, longest, string) { + var textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; + }; - // Draw datasets reversed to support proper line stacking - for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { - if (me.isDatasetVisible(i)) { - me.drawDataset(i, easingValue); + /** + * @deprecated + */ + helpers$1.numberOfLabelLines = function(arrayOfThings) { + var numberOfLines = 1; + helpers$1.each(arrayOfThings, function(thing) { + if (helpers$1.isArray(thing)) { + if (thing.length > numberOfLines) { + numberOfLines = thing.length; } } + }); + return numberOfLines; + }; - plugins.notify(me, 'afterDatasetsDraw', [easingValue]); - }, - - /** - * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` - * hook, in which case, plugins will not be called on `afterDatasetDraw`. - * @private - */ - drawDataset: function(index, easingValue) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index, - easingValue: easingValue - }; - - if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { - return; + helpers$1.color = !chartjsColor ? + function(value) { + console.error('Color.js not found!'); + return value; + } : + function(value) { + /* global CanvasGradient */ + if (value instanceof CanvasGradient) { + value = core_defaults.global.defaultColor; } - meta.controller.draw(easingValue); - - plugins.notify(me, 'afterDatasetDraw', [args]); - }, + return chartjsColor(value); + }; - /** - * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` - * hook, in which case, plugins will not be called on `afterTooltipDraw`. - * @private - */ - _drawTooltip: function(easingValue) { - var me = this; - var tooltip = me.tooltip; - var args = { - tooltip: tooltip, - easingValue: easingValue - }; + helpers$1.getHoverColor = function(colorValue) { + /* global CanvasPattern */ + return (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ? + colorValue : + helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString(); + }; +}; - if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { - return; - } +function abstract() { + throw new Error( + 'This method is not implemented: either no adapter can ' + + 'be found or an incomplete integration was provided.' + ); +} - tooltip.draw(); +/** + * Date adapter (current used by the time scale) + * @namespace Chart._adapters._date + * @memberof Chart._adapters + * @private + */ - plugins.notify(me, 'afterTooltipDraw', [args]); - }, +/** + * Currently supported unit string values. + * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')} + * @memberof Chart._adapters._date + * @name Unit + */ - // Get the single element that was clicked on - // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - getElementAtEvent: function(e) { - return Interaction.modes.single(this, e); - }, +/** + * @class + */ +function DateAdapter(options) { + this.options = options || {}; +} - getElementsAtEvent: function(e) { - return Interaction.modes.label(this, e, {intersect: true}); - }, +helpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ { + /** + * Returns a map of time formats for the supported formatting units defined + * in Unit as well as 'datetime' representing a detailed date/time string. + * @returns {{string: string}} + */ + formats: abstract, - getElementsAtXAxis: function(e) { - return Interaction.modes['x-axis'](this, e, {intersect: true}); - }, + /** + * Parses the given `value` and return the associated timestamp. + * @param {any} value - the value to parse (usually comes from the data) + * @param {string} [format] - the expected data format + * @returns {(number|null)} + * @function + */ + parse: abstract, - getElementsAtEventForMode: function(e, mode, options) { - var method = Interaction.modes[mode]; - if (typeof method === 'function') { - return method(this, e, options); - } + /** + * Returns the formatted date in the specified `format` for a given `timestamp`. + * @param {number} timestamp - the timestamp to format + * @param {string} format - the date/time token + * @return {string} + * @function + */ + format: abstract, - return []; - }, + /** + * Adds the specified `amount` of `unit` to the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {number} amount - the amount to add + * @param {Unit} unit - the unit as string + * @return {number} + * @function + */ + add: abstract, - getDatasetAtEvent: function(e) { - return Interaction.modes.dataset(this, e, {intersect: true}); - }, + /** + * Returns the number of `unit` between the given timestamps. + * @param {number} max - the input timestamp (reference) + * @param {number} min - the timestamp to substract + * @param {Unit} unit - the unit as string + * @return {number} + * @function + */ + diff: abstract, - getDatasetMeta: function(datasetIndex) { - var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } + /** + * Returns start of `unit` for the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {Unit} unit - the unit as string + * @param {number} [weekday] - the ISO day of the week with 1 being Monday + * and 7 being Sunday (only needed if param *unit* is `isoWeek`). + * @function + */ + startOf: abstract, - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; - } + /** + * Returns end of `unit` for the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {Unit} unit - the unit as string + * @function + */ + endOf: abstract, - return meta; - }, + // DEPRECATIONS - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - if (this.isDatasetVisible(i)) { - count++; - } - } - return count; - }, + /** + * Provided for backward compatibility for scale.getValueForPixel(), + * this method should be overridden only by the moment adapter. + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ + _create: function(value) { + return value; + } +}); - isDatasetVisible: function(datasetIndex) { - var meta = this.getDatasetMeta(datasetIndex); +DateAdapter.override = function(members) { + helpers$1.extend(DateAdapter.prototype, members); +}; - // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, - // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. - return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; - }, +var _date = DateAdapter; - generateLegend: function() { - return this.options.legendCallback(this); - }, +var core_adapters = { + _date: _date +}; +/** + * Namespace to hold static tick generation functions + * @namespace Chart.Ticks + */ +var core_ticks = { + /** + * Namespace to hold formatters for different types of ticks + * @namespace Chart.Ticks.formatters + */ + formatters: { /** - * @private + * Formatter for value labels + * @method Chart.Ticks.formatters.values + * @param value the value to display + * @return {string|string[]} the label to display */ - destroyDatasetMeta: function(datasetIndex) { - var id = this.id; - var dataset = this.data.datasets[datasetIndex]; - var meta = dataset._meta && dataset._meta[id]; - - if (meta) { - meta.controller.destroy(); - delete dataset._meta[id]; - } - }, - - destroy: function() { - var me = this; - var canvas = me.canvas; - var i, ilen; - - me.stop(); - - // dataset controllers need to cleanup associated data - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.destroyDatasetMeta(i); - } - - if (canvas) { - me.unbindEvents(); - helpers.canvas.clear(me); - platform.releaseContext(me.ctx); - me.canvas = null; - me.ctx = null; - } - - plugins.notify(me, 'destroy'); - - delete Chart.instances[me.id]; - }, - - toBase64Image: function() { - return this.canvas.toDataURL.apply(this.canvas, arguments); - }, - - initToolTip: function() { - var me = this; - me.tooltip = new Chart.Tooltip({ - _chart: me, - _chartInstance: me, // deprecated, backward compatibility - _data: me.data, - _options: me.options.tooltips - }, me); + values: function(value) { + return helpers$1.isArray(value) ? value : '' + value; }, /** - * @private + * Formatter for linear numeric ticks + * @method Chart.Ticks.formatters.linear + * @param tickValue {number} the value to be formatted + * @param index {number} the position of the tickValue parameter in the ticks array + * @param ticks {number[]} the list of ticks being converted + * @return {string} string representation of the tickValue parameter */ - bindEvents: function() { - var me = this; - var listeners = me._listeners = {}; - var listener = function() { - me.eventHandler.apply(me, arguments); - }; - - helpers.each(me.options.events, function(type) { - platform.addEventListener(me, type, listener); - listeners[type] = listener; - }); - - // Elements used to detect size change should not be injected for non responsive charts. - // See https://github.com/chartjs/Chart.js/issues/2210 - if (me.options.responsive) { - listener = function() { - me.resize(); - }; + linear: function(tickValue, index, ticks) { + // If we have lots of ticks, don't use the ones + var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; - platform.addEventListener(me, 'resize', listener); - listeners.resize = listener; + // If we have a number like 2.5 as the delta, figure out how many decimal places we need + if (Math.abs(delta) > 1) { + if (tickValue !== Math.floor(tickValue)) { + // not an integer + delta = tickValue - Math.floor(tickValue); + } } - }, - /** - * @private - */ - unbindEvents: function() { - var me = this; - var listeners = me._listeners; - if (!listeners) { - return; + var logDelta = helpers$1.log10(Math.abs(delta)); + var tickString = ''; + + if (tickValue !== 0) { + var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); + if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation + var logTick = helpers$1.log10(Math.abs(tickValue)); + var numExponential = Math.floor(logTick) - Math.floor(logDelta); + numExponential = Math.max(Math.min(numExponential, 20), 0); + tickString = tickValue.toExponential(numExponential); + } else { + var numDecimal = -1 * Math.floor(logDelta); + numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places + tickString = tickValue.toFixed(numDecimal); + } + } else { + tickString = '0'; // never show decimal places for 0 } - delete me._listeners; - helpers.each(listeners, function(listener, type) { - platform.removeEventListener(me, type, listener); - }); + return tickString; }, - updateHoverStyle: function(elements, mode, enabled) { - var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; - var element, i, ilen; + logarithmic: function(tickValue, index, ticks) { + var remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue)))); - for (i = 0, ilen = elements.length; i < ilen; ++i) { - element = elements[i]; - if (element) { - this.getDatasetMeta(element._datasetIndex).controller[method](element); - } + if (tickValue === 0) { + return '0'; + } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { + return tickValue.toExponential(); } - }, + return ''; + } + } +}; - /** - * @private - */ - eventHandler: function(e) { - var me = this; - var tooltip = me.tooltip; +var isArray = helpers$1.isArray; +var isNullOrUndef = helpers$1.isNullOrUndef; +var valueOrDefault$a = helpers$1.valueOrDefault; +var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault; + +core_defaults._set('scale', { + display: true, + position: 'left', + offset: false, + + // grid line settings + gridLines: { + display: true, + color: 'rgba(0,0,0,0.1)', + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickMarkLength: 10, + zeroLineWidth: 1, + zeroLineColor: 'rgba(0,0,0,0.25)', + zeroLineBorderDash: [], + zeroLineBorderDashOffset: 0.0, + offsetGridLines: false, + borderDash: [], + borderDashOffset: 0.0 + }, - if (plugins.notify(me, 'beforeEvent', [e]) === false) { - return; - } + // scale label + scaleLabel: { + // display property + display: false, - // Buffer any update calls so that renders do not occur - me._bufferedRender = true; - me._bufferedRequest = null; - - var changed = me.handleEvent(e); - // for smooth tooltip animations issue #4989 - // the tooltip should be the source of change - // Animation check workaround: - // tooltip._start will be null when tooltip isn't animating - if (tooltip) { - changed = tooltip._start - ? tooltip.handleEvent(e) - : changed | tooltip.handleEvent(e); - } + // actual label + labelString: '', - plugins.notify(me, 'afterEvent', [e]); + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }, - var bufferedRequest = me._bufferedRequest; - if (bufferedRequest) { - // If we have an update that was triggered, we need to do a normal render - me.render(bufferedRequest); - } else if (changed && !me.animating) { - // If entering, leaving, or changing elements, animate the change via pivot - me.stop(); + // label settings + ticks: { + beginAtZero: false, + minRotation: 0, + maxRotation: 50, + mirror: false, + padding: 0, + reverse: false, + display: true, + autoSkip: true, + autoSkipPadding: 0, + labelOffset: 0, + // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. + callback: core_ticks.formatters.values, + minor: {}, + major: {} + } +}); - // We only need to render at this point. Updating will cause scales to be - // recomputed generating flicker & using more memory than necessary. - me.render(me.options.hover.animationDuration, true); - } +/** Returns a new array containing numItems from arr */ +function sample(arr, numItems) { + var result = []; + var increment = arr.length / numItems; + var i = 0; + var len = arr.length; - me._bufferedRender = false; - me._bufferedRequest = null; + for (; i < len; i += increment) { + result.push(arr[Math.floor(i)]); + } + return result; +} - return me; - }, +function getPixelForGridLine(scale, index, offsetGridLines) { + var length = scale.getTicks().length; + var validIndex = Math.min(index, length - 1); + var lineValue = scale.getPixelForTick(validIndex); + var start = scale._startPixel; + var end = scale._endPixel; + var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. + var offset; - /** - * Handle an event - * @private - * @param {IEvent} event the event to handle - * @return {Boolean} true if the chart needs to re-render - */ - handleEvent: function(e) { - var me = this; - var options = me.options || {}; - var hoverOptions = options.hover; - var changed = false; + if (offsetGridLines) { + if (length === 1) { + offset = Math.max(lineValue - start, end - lineValue); + } else if (index === 0) { + offset = (scale.getPixelForTick(1) - lineValue) / 2; + } else { + offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2; + } + lineValue += validIndex < index ? offset : -offset; - me.lastActive = me.lastActive || []; + // Return undefined if the pixel is out of the range + if (lineValue < start - epsilon || lineValue > end + epsilon) { + return; + } + } + return lineValue; +} - // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me.active = []; - } else { - me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); +function garbageCollect(caches, length) { + helpers$1.each(caches, function(cache) { + var gc = cache.gc; + var gcLen = gc.length / 2; + var i; + if (gcLen > length) { + for (i = 0; i < gcLen; ++i) { + delete cache.data[gc[i]]; } + gc.splice(0, gcLen); + } + }); +} - // Invoke onHover hook - // Need to call with native event here to not break backwards compatibility - helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); - - if (e.type === 'mouseup' || e.type === 'click') { - if (options.onClick) { - // Use e.native here for backwards compatibility - options.onClick.call(me, e.native, me.active); +/** + * Returns {width, height, offset} objects for the first, last, widest, highest tick + * labels where offset indicates the anchor point offset from the top in pixels. + */ +function computeLabelSizes(ctx, tickFonts, ticks, caches) { + var length = ticks.length; + var widths = []; + var heights = []; + var offsets = []; + var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest; + + for (i = 0; i < length; ++i) { + label = ticks[i].label; + tickFont = ticks[i].major ? tickFonts.major : tickFonts.minor; + ctx.font = fontString = tickFont.string; + cache = caches[fontString] = caches[fontString] || {data: {}, gc: []}; + lineHeight = tickFont.lineHeight; + width = height = 0; + // Undefined labels and arrays should not be measured + if (!isNullOrUndef(label) && !isArray(label)) { + width = helpers$1.measureText(ctx, cache.data, cache.gc, width, label); + height = lineHeight; + } else if (isArray(label)) { + // if it is an array let's measure each element + for (j = 0, jlen = label.length; j < jlen; ++j) { + nestedLabel = label[j]; + // Undefined labels and arrays should not be measured + if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) { + width = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel); + height += lineHeight; } } + } + widths.push(width); + heights.push(height); + offsets.push(lineHeight / 2); + } + garbageCollect(caches, length); - // Remove styling for last active (even if it may still be active) - if (me.lastActive.length) { - me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); - } + widest = widths.indexOf(Math.max.apply(null, widths)); + highest = heights.indexOf(Math.max.apply(null, heights)); - // Built in hover styling - if (me.active.length && hoverOptions.mode) { - me.updateHoverStyle(me.active, hoverOptions.mode, true); - } + function valueAt(idx) { + return { + width: widths[idx] || 0, + height: heights[idx] || 0, + offset: offsets[idx] || 0 + }; + } - changed = !helpers.arrayEquals(me.active, me.lastActive); + return { + first: valueAt(0), + last: valueAt(length - 1), + widest: valueAt(widest), + highest: valueAt(highest) + }; +} - // Remember Last Actives - me.lastActive = me.active; +function getTickMarkLength(options) { + return options.drawTicks ? options.tickMarkLength : 0; +} - return changed; - } - }); +function getScaleLabelHeight(options) { + var font, padding; - /** - * Provided for backward compatibility, use Chart instead. - * @class Chart.Controller - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - Chart.Controller = Chart; -}; + if (!options.display) { + return 0; + } + + font = helpers$1.options._parseFont(options); + padding = helpers$1.options.toPadding(options.padding); -},{"25":25,"28":28,"30":30,"31":31,"45":45,"48":48}],24:[function(require,module,exports){ -'use strict'; + return font.lineHeight + padding.height; +} -var helpers = require(45); +function parseFontOptions(options, nestedOpts) { + return helpers$1.extend(helpers$1.options._parseFont({ + fontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily), + fontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize), + fontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle), + lineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight) + }), { + color: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor]) + }); +} -module.exports = function(Chart) { +function parseTickFontOptions(options) { + var minor = parseFontOptions(options, options.minor); + var major = options.major.enabled ? parseFontOptions(options, options.major) : minor; - var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; + return {minor: minor, major: major}; +} - /** - * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', - * 'unshift') and notify the listener AFTER the array has been altered. Listeners are - * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. - */ - function listenArrayEvents(array, listener) { - if (array._chartjs) { - array._chartjs.listeners.push(listener); - return; +function nonSkipped(ticksToFilter) { + var filtered = []; + var item, index, len; + for (index = 0, len = ticksToFilter.length; index < len; ++index) { + item = ticksToFilter[index]; + if (typeof item._index !== 'undefined') { + filtered.push(item); } + } + return filtered; +} - Object.defineProperty(array, '_chartjs', { - configurable: true, - enumerable: false, - value: { - listeners: [listener] - } - }); +function getEvenSpacing(arr) { + var len = arr.length; + var i, diff; - arrayEvents.forEach(function(key) { - var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); - var base = array[key]; + if (len < 2) { + return false; + } - Object.defineProperty(array, key, { - configurable: true, - enumerable: false, - value: function() { - var args = Array.prototype.slice.call(arguments); - var res = base.apply(this, args); + for (diff = arr[0], i = 1; i < len; ++i) { + if (arr[i] - arr[i - 1] !== diff) { + return false; + } + } + return diff; +} - helpers.each(array._chartjs.listeners, function(object) { - if (typeof object[method] === 'function') { - object[method].apply(object, args); - } - }); +function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) { + var evenMajorSpacing = getEvenSpacing(majorIndices); + var spacing = (ticks.length - 1) / ticksLimit; + var factors, factor, i, ilen; - return res; - } - }); - }); + // If the major ticks are evenly spaced apart, place the minor ticks + // so that they divide the major ticks into even chunks + if (!evenMajorSpacing) { + return Math.max(spacing, 1); } - /** - * Removes the given array event listener and cleanup extra attached properties (such as - * the _chartjs stub and overridden methods) if array doesn't have any more listeners. - */ - function unlistenArrayEvents(array, listener) { - var stub = array._chartjs; - if (!stub) { - return; - } - - var listeners = stub.listeners; - var index = listeners.indexOf(listener); - if (index !== -1) { - listeners.splice(index, 1); + factors = helpers$1.math._factorize(evenMajorSpacing); + for (i = 0, ilen = factors.length - 1; i < ilen; i++) { + factor = factors[i]; + if (factor > spacing) { + return factor; } + } + return Math.max(spacing, 1); +} - if (listeners.length > 0) { - return; +function getMajorIndices(ticks) { + var result = []; + var i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if (ticks[i].major) { + result.push(i); } - - arrayEvents.forEach(function(key) { - delete array[key]; - }); - - delete array._chartjs; } + return result; +} - // Base class for all dataset controllers (line, bar, etc) - Chart.DatasetController = function(chart, datasetIndex) { - this.initialize(chart, datasetIndex); - }; +function skipMajors(ticks, majorIndices, spacing) { + var count = 0; + var next = majorIndices[0]; + var i, tick; - helpers.extend(Chart.DatasetController.prototype, { + spacing = Math.ceil(spacing); + for (i = 0; i < ticks.length; i++) { + tick = ticks[i]; + if (i === next) { + tick._index = i; + count++; + next = majorIndices[count * spacing]; + } else { + delete tick.label; + } + } +} - /** - * Element type used to generate a meta dataset (e.g. Chart.element.Line). - * @type {Chart.core.element} - */ - datasetElementType: null, +function skip(ticks, spacing, majorStart, majorEnd) { + var start = valueOrDefault$a(majorStart, 0); + var end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length); + var count = 0; + var length, i, tick, next; - /** - * Element type used to generate a meta data (e.g. Chart.element.Point). - * @type {Chart.core.element} - */ - dataElementType: null, - - initialize: function(chart, datasetIndex) { - var me = this; - me.chart = chart; - me.index = datasetIndex; - me.linkScales(); - me.addElements(); - }, + spacing = Math.ceil(spacing); + if (majorEnd) { + length = majorEnd - majorStart; + spacing = length / Math.floor(length / spacing); + } - updateIndex: function(datasetIndex) { - this.index = datasetIndex; - }, + next = start; - linkScales: function() { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); + while (next < 0) { + count++; + next = Math.round(start + count * spacing); + } - if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { - meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; - } - if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { - meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; - } - }, + for (i = Math.max(start, 0); i < end; i++) { + tick = ticks[i]; + if (i === next) { + tick._index = i; + count++; + next = Math.round(start + count * spacing); + } else { + delete tick.label; + } + } +} - getDataset: function() { - return this.chart.data.datasets[this.index]; - }, +var Scale = core_element.extend({ - getMeta: function() { - return this.chart.getDatasetMeta(this.index); - }, + zeroLineIndex: 0, - getScaleForId: function(scaleID) { - return this.chart.scales[scaleID]; - }, + /** + * Get the padding needed for the scale + * @method getPadding + * @private + * @returns {Padding} the necessary padding + */ + getPadding: function() { + var me = this; + return { + left: me.paddingLeft || 0, + top: me.paddingTop || 0, + right: me.paddingRight || 0, + bottom: me.paddingBottom || 0 + }; + }, - reset: function() { - this.update(true); - }, + /** + * Returns the scale tick objects ({label, major}) + * @since 2.7 + */ + getTicks: function() { + return this._ticks; + }, - /** - * @private - */ - destroy: function() { - if (this._data) { - unlistenArrayEvents(this._data, this); - } - }, + /** + * @private + */ + _getLabels: function() { + var data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; + }, - createMetaDataset: function() { - var me = this; - var type = me.datasetElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index - }); - }, + // These methods are ordered by lifecyle. Utilities then follow. + // Any function defined here is inherited by all scale types. + // Any function can be extended by the scale type - createMetaData: function(index) { - var me = this; - var type = me.dataElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index, - _index: index - }); - }, + /** + * Provided for backward compatibility, not available anymore + * @function Chart.Scale.mergeTicksOptions + * @deprecated since version 2.8.0 + * @todo remove at version 3 + */ + mergeTicksOptions: function() { + // noop + }, - addElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data || []; - var metaData = meta.data; - var i, ilen; + beforeUpdate: function() { + helpers$1.callback(this.options.beforeUpdate, [this]); + }, - for (i = 0, ilen = data.length; i < ilen; ++i) { - metaData[i] = metaData[i] || me.createMetaData(i); - } + /** + * @param {number} maxWidth - the max width in pixels + * @param {number} maxHeight - the max height in pixels + * @param {object} margins - the space between the edge of the other scales and edge of the chart + * This space comes from two sources: + * - padding - space that's required to show the labels at the edges of the scale + * - thickness of scales or legends in another orientation + */ + update: function(maxWidth, maxHeight, margins) { + var me = this; + var tickOpts = me.options.ticks; + var sampleSize = tickOpts.sampleSize; + var i, ilen, labels, ticks, samplingEnabled; - meta.dataset = meta.dataset || me.createMetaDataset(); - }, + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); - addElementAndReset: function(index) { - var element = this.createMetaData(index); - this.getMeta().data.splice(index, 0, element); - this.updateElement(element, index, true); - }, + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = helpers$1.extend({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + + me._ticks = null; + me.ticks = null; + me._labelSizes = null; + me._maxLabelLines = 0; + me.longestLabelWidth = 0; + me.longestTextCache = me.longestTextCache || {}; + me._gridLineItems = null; + me._labelItems = null; - buildOrUpdateElements: function() { - var me = this; - var dataset = me.getDataset(); - var data = dataset.data || (dataset.data = []); - - // In order to correctly handle data addition/deletion animation (an thus simulate - // real-time charts), we need to monitor these data modifications and synchronize - // the internal meta data accordingly. - if (me._data !== data) { - if (me._data) { - // This case happens when the user replaced the data array instance. - unlistenArrayEvents(me._data, me); - } + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); - listenArrayEvents(data, me); - me._data = data; + // Data min/max + me.beforeDataLimits(); + me.determineDataLimits(); + me.afterDataLimits(); + + // Ticks - `this.ticks` is now DEPRECATED! + // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member + // and must not be accessed directly from outside this class. `this.ticks` being + // around for long time and not marked as private, we can't change its structure + // without unexpected breaking changes. If you need to access the scale ticks, + // use scale.getTicks() instead. + + me.beforeBuildTicks(); + + // New implementations should return an array of objects but for BACKWARD COMPAT, + // we still support no return (`this.ticks` internally set by calling this method). + ticks = me.buildTicks() || []; + + // Allow modification of ticks in callback. + ticks = me.afterBuildTicks(ticks) || ticks; + + // Ensure ticks contains ticks in new tick format + if ((!ticks || !ticks.length) && me.ticks) { + ticks = []; + for (i = 0, ilen = me.ticks.length; i < ilen; ++i) { + ticks.push({ + value: me.ticks[i], + major: false + }); } + } - // Re-sync meta data in case the user replaced the data array or if we missed - // any updates and so make sure that we handle number of datapoints changing. - me.resyncElements(); - }, - - update: helpers.noop, + me._ticks = ticks; - transition: function(easingValue) { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; + // Compute tick rotation and fit using a sampled subset of labels + // We generally don't need to compute the size of every single label for determining scale size + samplingEnabled = sampleSize < ticks.length; + labels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks); - for (; i < ilen; ++i) { - elements[i].transition(easingValue); - } + // _configure is called twice, once here, once from core.controller.updateLayout. + // Here we haven't been positioned yet, but dimensions are correct. + // Variables set in _configure are needed for calculateTickRotation, and + // it's ok that coordinates are not correct there, only dimensions matter. + me._configure(); - if (meta.dataset) { - meta.dataset.transition(easingValue); - } - }, + // Tick Rotation + me.beforeCalculateTickRotation(); + me.calculateTickRotation(); + me.afterCalculateTickRotation(); - draw: function() { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; + me.beforeFit(); + me.fit(); + me.afterFit(); - if (meta.dataset) { - meta.dataset.draw(); - } + // Auto-skip + me._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks; - for (; i < ilen; ++i) { - elements[i].draw(); - } - }, + if (samplingEnabled) { + // Generate labels using all non-skipped ticks + labels = me._convertTicksToLabels(me._ticksToDraw); + } - removeHoverStyle: function(element, elementOpts) { - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var model = element._model; + me.ticks = labels; // BACKWARD COMPATIBILITY - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); - }, + // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change! - setHoverStyle: function(element) { - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var getHoverColor = helpers.getHoverColor; - var model = element._model; - - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); - }, + me.afterUpdate(); - /** - * @private - */ - resyncElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data; - var numMeta = meta.data.length; - var numData = data.length; - - if (numData < numMeta) { - meta.data.splice(numData, numMeta - numData); - } else if (numData > numMeta) { - me.insertElements(numMeta, numData - numMeta); - } - }, + // TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused + // make maxWidth and maxHeight private + return me.minSize; + }, - /** - * @private - */ - insertElements: function(start, count) { - for (var i = 0; i < count; ++i) { - this.addElementAndReset(start + i); - } - }, + /** + * @private + */ + _configure: function() { + var me = this; + var reversePixels = me.options.ticks.reverse; + var startPixel, endPixel; - /** - * @private - */ - onDataPush: function() { - this.insertElements(this.getDataset().data.length - 1, arguments.length); - }, + if (me.isHorizontal()) { + startPixel = me.left; + endPixel = me.right; + } else { + startPixel = me.top; + endPixel = me.bottom; + // by default vertical scales are from bottom to top, so pixels are reversed + reversePixels = !reversePixels; + } + me._startPixel = startPixel; + me._endPixel = endPixel; + me._reversePixels = reversePixels; + me._length = endPixel - startPixel; + }, - /** - * @private - */ - onDataPop: function() { - this.getMeta().data.pop(); - }, + afterUpdate: function() { + helpers$1.callback(this.options.afterUpdate, [this]); + }, - /** - * @private - */ - onDataShift: function() { - this.getMeta().data.shift(); - }, + // - /** - * @private - */ - onDataSplice: function(start, count) { - this.getMeta().data.splice(start, count); - this.insertElements(start, arguments.length - 2); - }, + beforeSetDimensions: function() { + helpers$1.callback(this.options.beforeSetDimensions, [this]); + }, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; - /** - * @private - */ - onDataUnshift: function() { - this.insertElements(0, arguments.length); + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; } - }); - Chart.DatasetController.extend = helpers.inherits; -}; + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + }, + afterSetDimensions: function() { + helpers$1.callback(this.options.afterSetDimensions, [this]); + }, -},{"45":45}],25:[function(require,module,exports){ -'use strict'; + // Data limits + beforeDataLimits: function() { + helpers$1.callback(this.options.beforeDataLimits, [this]); + }, + determineDataLimits: helpers$1.noop, + afterDataLimits: function() { + helpers$1.callback(this.options.afterDataLimits, [this]); + }, -var helpers = require(45); + // + beforeBuildTicks: function() { + helpers$1.callback(this.options.beforeBuildTicks, [this]); + }, + buildTicks: helpers$1.noop, + afterBuildTicks: function(ticks) { + var me = this; + // ticks is empty for old axis implementations here + if (isArray(ticks) && ticks.length) { + return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]); + } + // Support old implementations (that modified `this.ticks` directly in buildTicks) + me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks; + return ticks; + }, -module.exports = { - /** - * @private - */ - _set: function(scope, values) { - return helpers.merge(this[scope] || (this[scope] = {}), values); - } -}; + beforeTickToLabelConversion: function() { + helpers$1.callback(this.options.beforeTickToLabelConversion, [this]); + }, + convertTicksToLabels: function() { + var me = this; + // Convert ticks to strings + var tickOpts = me.options.ticks; + me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); + }, + afterTickToLabelConversion: function() { + helpers$1.callback(this.options.afterTickToLabelConversion, [this]); + }, -},{"45":45}],26:[function(require,module,exports){ -'use strict'; + // -var color = require(2); -var helpers = require(45); + beforeCalculateTickRotation: function() { + helpers$1.callback(this.options.beforeCalculateTickRotation, [this]); + }, + calculateTickRotation: function() { + var me = this; + var options = me.options; + var tickOpts = options.ticks; + var numTicks = me.getTicks().length; + var minRotation = tickOpts.minRotation || 0; + var maxRotation = tickOpts.maxRotation; + var labelRotation = minRotation; + var labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal; + + if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) { + me.labelRotation = minRotation; + return; + } -function interpolate(start, view, model, ease) { - var keys = Object.keys(model); - var i, ilen, key, actual, origin, target, type, c0, c1; + labelSizes = me._getLabelSizes(); + maxLabelWidth = labelSizes.widest.width; + maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset; + + // Estimate the width of each grid based on the canvas width, the maximum + // label width and the number of tick intervals + maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth); + tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1); + + // Allow 3 pixels x2 padding either side for label readability + if (maxLabelWidth + 6 > tickWidth) { + tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1)); + maxHeight = me.maxHeight - getTickMarkLength(options.gridLines) + - tickOpts.padding - getScaleLabelHeight(options.scaleLabel); + maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); + labelRotation = helpers$1.toDegrees(Math.min( + Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), + Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal) + )); + labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); + } - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; + me.labelRotation = labelRotation; + }, + afterCalculateTickRotation: function() { + helpers$1.callback(this.options.afterCalculateTickRotation, [this]); + }, - target = model[key]; + // - // if a value is added to the model after pivot() has been called, the view - // doesn't contain it, so let's initialize the view to the target value. - if (!view.hasOwnProperty(key)) { - view[key] = target; - } + beforeFit: function() { + helpers$1.callback(this.options.beforeFit, [this]); + }, + fit: function() { + var me = this; + // Reset + var minSize = me.minSize = { + width: 0, + height: 0 + }; - actual = view[key]; + var chart = me.chart; + var opts = me.options; + var tickOpts = opts.ticks; + var scaleLabelOpts = opts.scaleLabel; + var gridLineOpts = opts.gridLines; + var display = me._isVisible(); + var isBottom = opts.position === 'bottom'; + var isHorizontal = me.isHorizontal(); - if (actual === target || key[0] === '_') { - continue; + // Width + if (isHorizontal) { + minSize.width = me.maxWidth; + } else if (display) { + minSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts); } - if (!start.hasOwnProperty(key)) { - start[key] = actual; + // height + if (!isHorizontal) { + minSize.height = me.maxHeight; // fill all the height + } else if (display) { + minSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts); } - origin = start[key]; - - type = typeof target; + // Don't bother fitting the ticks if we are not showing the labels + if (tickOpts.display && display) { + var tickFonts = parseTickFontOptions(tickOpts); + var labelSizes = me._getLabelSizes(); + var firstLabelSize = labelSizes.first; + var lastLabelSize = labelSizes.last; + var widestLabelSize = labelSizes.widest; + var highestLabelSize = labelSizes.highest; + var lineSpace = tickFonts.minor.lineHeight * 0.4; + var tickPadding = tickOpts.padding; - if (type === typeof origin) { - if (type === 'string') { - c0 = color(origin); - if (c0.valid) { - c1 = color(target); - if (c1.valid) { - view[key] = c1.mix(c0, ease).rgbString(); - continue; - } + if (isHorizontal) { + // A horizontal axis is more constrained by the height. + var isRotated = me.labelRotation !== 0; + var angleRadians = helpers$1.toRadians(me.labelRotation); + var cosRotation = Math.cos(angleRadians); + var sinRotation = Math.sin(angleRadians); + + var labelHeight = sinRotation * widestLabelSize.width + + cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0)) + + (isRotated ? 0 : lineSpace); // padding + + minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + + var offsetLeft = me.getPixelForTick(0) - me.left; + var offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1); + var paddingLeft, paddingRight; + + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height + if (isRotated) { + paddingLeft = isBottom ? + cosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset : + sinRotation * (firstLabelSize.height - firstLabelSize.offset); + paddingRight = isBottom ? + sinRotation * (lastLabelSize.height - lastLabelSize.offset) : + cosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset; + } else { + paddingLeft = firstLabelSize.width / 2; + paddingRight = lastLabelSize.width / 2; } - } else if (type === 'number' && isFinite(origin) && isFinite(target)) { - view[key] = origin + (target - origin) * ease; - continue; - } - } - view[key] = target; - } -} + // Adjust padding taking into account changes in offsets + // and add 3 px to move away from canvas edges + me.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3; + me.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3; + } else { + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding + var labelWidth = tickOpts.mirror ? 0 : + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + widestLabelSize.width + tickPadding + lineSpace; -var Element = function(configuration) { - helpers.extend(this, configuration); - this.initialize.apply(this, arguments); -}; + minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth); + + me.paddingTop = firstLabelSize.height / 2; + me.paddingBottom = lastLabelSize.height / 2; + } + } -helpers.extend(Element.prototype, { + me.handleMargins(); - initialize: function() { - this.hidden = false; + if (isHorizontal) { + me.width = me._length = chart.width - me.margins.left - me.margins.right; + me.height = minSize.height; + } else { + me.width = minSize.width; + me.height = me._length = chart.height - me.margins.top - me.margins.bottom; + } }, - pivot: function() { + /** + * Handle margins and padding interactions + * @private + */ + handleMargins: function() { var me = this; - if (!me._view) { - me._view = helpers.clone(me._model); + if (me.margins) { + me.margins.left = Math.max(me.paddingLeft, me.margins.left); + me.margins.top = Math.max(me.paddingTop, me.margins.top); + me.margins.right = Math.max(me.paddingRight, me.margins.right); + me.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom); } - me._start = {}; - return me; }, - transition: function(ease) { - var me = this; - var model = me._model; - var start = me._start; - var view = me._view; + afterFit: function() { + helpers$1.callback(this.options.afterFit, [this]); + }, - // No animation -> No Transition - if (!model || ease === 1) { - me._view = model; - me._start = null; - return me; - } + // Shared Methods + isHorizontal: function() { + var pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + }, + isFullWidth: function() { + return this.options.fullWidth; + }, - if (!view) { - view = me._view = {}; + // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not + getRightValue: function(rawValue) { + // Null and undefined values first + if (isNullOrUndef(rawValue)) { + return NaN; } - - if (!start) { - start = me._start = {}; + // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values + if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) { + return NaN; } - interpolate(start, view, model, ease); - - return me; - }, + // If it is in fact an object, dive in one more level + if (rawValue) { + if (this.isHorizontal()) { + if (rawValue.x !== undefined) { + return this.getRightValue(rawValue.x); + } + } else if (rawValue.y !== undefined) { + return this.getRightValue(rawValue.y); + } + } - tooltipPosition: function() { - return { - x: this._model.x, - y: this._model.y - }; + // Value is good, return it + return rawValue; }, - hasValue: function() { - return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); - } -}); - -Element.extend = helpers.inherits; + _convertTicksToLabels: function(ticks) { + var me = this; + var labels, i, ilen; -module.exports = Element; + me.ticks = ticks.map(function(tick) { + return tick.value; + }); -},{"2":2,"45":45}],27:[function(require,module,exports){ -/* global window: false */ -/* global document: false */ -'use strict'; + me.beforeTickToLabelConversion(); -var color = require(2); -var defaults = require(25); -var helpers = require(45); + // New implementations should return the formatted tick labels but for BACKWARD + // COMPAT, we still support no return (`this.ticks` internally changed by calling + // this method and supposed to contain only string values). + labels = me.convertTicksToLabels(ticks) || me.ticks; -module.exports = function(Chart) { + me.afterTickToLabelConversion(); - // -- Basic js utility methods + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + ticks[i].label = labels[i]; + } - helpers.configMerge = function(/* objects ... */) { - return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { - merger: function(key, target, source, options) { - var tval = target[key] || {}; - var sval = source[key]; - - if (key === 'scales') { - // scale config merging is complex. Add our own function here for that - target[key] = helpers.scaleMerge(tval, sval); - } else if (key === 'scale') { - // used in polar area & radar charts since there is only one scale - target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]); - } else { - helpers._merger(key, target, source, options); - } - } - }); - }; + return labels; + }, - helpers.scaleMerge = function(/* objects ... */) { - return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { - merger: function(key, target, source, options) { - if (key === 'xAxes' || key === 'yAxes') { - var slen = source[key].length; - var i, type, scale; + /** + * @private + */ + _getLabelSizes: function() { + var me = this; + var labelSizes = me._labelSizes; - if (!target[key]) { - target[key] = []; - } + if (!labelSizes) { + me._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache); + me.longestLabelWidth = labelSizes.widest.width; + } - for (i = 0; i < slen; ++i) { - scale = source[key][i]; - type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); + return labelSizes; + }, - if (i >= target[key].length) { - target[key].push({}); - } + /** + * @private + */ + _parseValue: function(value) { + var start, end, min, max; + + if (isArray(value)) { + start = +this.getRightValue(value[0]); + end = +this.getRightValue(value[1]); + min = Math.min(start, end); + max = Math.max(start, end); + } else { + value = +this.getRightValue(value); + start = undefined; + end = value; + min = value; + max = value; + } - if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { - // new/untyped scale or type changed: let's apply the new defaults - // then merge source scale to correctly overwrite the defaults. - helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]); - } else { - // scales type are the same - helpers.merge(target[key][i], scale); - } - } - } else { - helpers._merger(key, target, source, options); - } - } - }); - }; + return { + min: min, + max: max, + start: start, + end: end + }; + }, - helpers.where = function(collection, filterCallback) { - if (helpers.isArray(collection) && Array.prototype.filter) { - return collection.filter(filterCallback); + /** + * @private + */ + _getScaleLabel: function(rawValue) { + var v = this._parseValue(rawValue); + if (v.start !== undefined) { + return '[' + v.start + ', ' + v.end + ']'; } - var filtered = []; - helpers.each(collection, function(item) { - if (filterCallback(item)) { - filtered.push(item); - } - }); + return +this.getRightValue(rawValue); + }, - return filtered; - }; - helpers.findIndex = Array.prototype.findIndex ? - function(array, callback, scope) { - return array.findIndex(callback, scope); - } : - function(array, callback, scope) { - scope = scope === undefined ? array : scope; - for (var i = 0, ilen = array.length; i < ilen; ++i) { - if (callback.call(scope, array[i], i, array)) { - return i; - } - } - return -1; - }; - helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to start of the array - if (helpers.isNullOrUndef(startIndex)) { - startIndex = -1; - } - for (var i = startIndex + 1; i < arrayToSearch.length; i++) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; - helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to end of the array - if (helpers.isNullOrUndef(startIndex)) { - startIndex = arrayToSearch.length; - } - for (var i = startIndex - 1; i >= 0; i--) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; + /** + * Used to get the value to display in the tooltip for the data at the given index + * @param index + * @param datasetIndex + */ + getLabelForIndex: helpers$1.noop, - // -- Math methods - helpers.isNumber = function(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - }; - helpers.almostEquals = function(x, y, epsilon) { - return Math.abs(x - y) < epsilon; - }; - helpers.almostWhole = function(x, epsilon) { - var rounded = Math.round(x); - return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); - }; - helpers.max = function(array) { - return array.reduce(function(max, value) { - if (!isNaN(value)) { - return Math.max(max, value); - } - return max; - }, Number.NEGATIVE_INFINITY); - }; - helpers.min = function(array) { - return array.reduce(function(min, value) { - if (!isNaN(value)) { - return Math.min(min, value); - } - return min; - }, Number.POSITIVE_INFINITY); - }; - helpers.sign = Math.sign ? - function(x) { - return Math.sign(x); - } : - function(x) { - x = +x; // convert to a number - if (x === 0 || isNaN(x)) { - return x; - } - return x > 0 ? 1 : -1; - }; - helpers.log10 = Math.log10 ? - function(x) { - return Math.log10(x); - } : - function(x) { - var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. - // Check for whole powers of 10, - // which due to floating point rounding error should be corrected. - var powerOf10 = Math.round(exponent); - var isPowerOf10 = x === Math.pow(10, powerOf10); + /** + * Returns the location of the given data point. Value can either be an index or a numerical value + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param value + * @param index + * @param datasetIndex + */ + getPixelForValue: helpers$1.noop, + + /** + * Used to get the data value from a given pixel. This is the inverse of getPixelForValue + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param pixel + */ + getValueForPixel: helpers$1.noop, - return isPowerOf10 ? powerOf10 : exponent; - }; - helpers.toRadians = function(degrees) { - return degrees * (Math.PI / 180); - }; - helpers.toDegrees = function(radians) { - return radians * (180 / Math.PI); - }; - // Gets the angle from vertical upright to the point about a centre. - helpers.getAngleFromPoint = function(centrePoint, anglePoint) { - var distanceFromXCenter = anglePoint.x - centrePoint.x; - var distanceFromYCenter = anglePoint.y - centrePoint.y; - var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + /** + * Returns the location of the tick at the given index + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForTick: function(index) { + var me = this; + var offset = me.options.offset; + var numTicks = me._ticks.length; + var tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1); - var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + return index < 0 || index > numTicks - 1 + ? null + : me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0)); + }, - if (angle < (-0.5 * Math.PI)) { - angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + /** + * Utility for getting the pixel location of a percentage of scale + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForDecimal: function(decimal) { + var me = this; + + if (me._reversePixels) { + decimal = 1 - decimal; } - return { - angle: angle, - distance: radialDistanceFromCenter - }; - }; - helpers.distanceBetweenPoints = function(pt1, pt2) { - return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); - }; - helpers.aliasPixel = function(pixelWidth) { - return (pixelWidth % 2 === 0) ? 0 : 0.5; - }; - helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { - // Props to Rob Spencer at scaled innovation for his post on splining between points - // http://scaledinnovation.com/analytics/splines/aboutSplines.html + return me._startPixel + decimal * me._length; + }, - // This function must also respect "skipped" points + getDecimalForPixel: function(pixel) { + var decimal = (pixel - this._startPixel) / this._length; + return this._reversePixels ? 1 - decimal : decimal; + }, - var previous = firstPoint.skip ? middlePoint : firstPoint; - var current = middlePoint; - var next = afterPoint.skip ? middlePoint : afterPoint; + /** + * Returns the pixel for the minimum chart value + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getBasePixel: function() { + return this.getPixelForValue(this.getBaseValue()); + }, - var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); - var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); + getBaseValue: function() { + var me = this; + var min = me.min; + var max = me.max; - var s01 = d01 / (d01 + d12); - var s12 = d12 / (d01 + d12); + return me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + }, - // If all points are the same, s01 & s02 will be inf - s01 = isNaN(s01) ? 0 : s01; - s12 = isNaN(s12) ? 0 : s12; + /** + * Returns a subset of ticks to be plotted to avoid overlapping labels. + * @private + */ + _autoSkip: function(ticks) { + var me = this; + var tickOpts = me.options.ticks; + var axisLength = me._length; + var ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1; + var majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; + var numMajorIndices = majorIndices.length; + var first = majorIndices[0]; + var last = majorIndices[numMajorIndices - 1]; + var i, ilen, spacing, avgMajorSpacing; + + // If there are too many major ticks to display them all + if (numMajorIndices > ticksLimit) { + skipMajors(ticks, majorIndices, numMajorIndices / ticksLimit); + return nonSkipped(ticks); + } - var fa = t * s01; // scaling factor for triangle Ta - var fb = t * s12; + spacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit); - return { - previous: { - x: current.x - fa * (next.x - previous.x), - y: current.y - fa * (next.y - previous.y) - }, - next: { - x: current.x + fb * (next.x - previous.x), - y: current.y + fb * (next.y - previous.y) + if (numMajorIndices > 0) { + for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { + skip(ticks, spacing, majorIndices[i], majorIndices[i + 1]); } - }; - }; - helpers.EPSILON = Number.EPSILON || 1e-14; - helpers.splineCurveMonotone = function(points) { - // This function calculates Bézier control points in a similar way than |splineCurve|, - // but preserves monotonicity of the provided data and ensures no local extremums are added - // between the dataset discrete points due to the interpolation. - // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation + avgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null; + skip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); + skip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); + return nonSkipped(ticks); + } + skip(ticks, spacing); + return nonSkipped(ticks); + }, - var pointsWithTangents = (points || []).map(function(point) { - return { - model: point._model, - deltaK: 0, - mK: 0 - }; - }); + /** + * @private + */ + _tickSize: function() { + var me = this; + var optionTicks = me.options.ticks; + + // Calculate space needed by label in axis direction. + var rot = helpers$1.toRadians(me.labelRotation); + var cos = Math.abs(Math.cos(rot)); + var sin = Math.abs(Math.sin(rot)); + + var labelSizes = me._getLabelSizes(); + var padding = optionTicks.autoSkipPadding || 0; + var w = labelSizes ? labelSizes.widest.width + padding : 0; + var h = labelSizes ? labelSizes.highest.height + padding : 0; + + // Calculate space needed for 1 tick in axis direction. + return me.isHorizontal() + ? h * cos > w * sin ? w / cos : h / sin + : h * sin < w * cos ? h / cos : w / sin; + }, - // Calculate slopes (deltaK) and initialize tangents (mK) - var pointsLen = pointsWithTangents.length; - var i, pointBefore, pointCurrent, pointAfter; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } + /** + * @private + */ + _isVisible: function() { + var me = this; + var chart = me.chart; + var display = me.options.display; + var i, ilen, meta; - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointAfter && !pointAfter.model.skip) { - var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); + if (display !== 'auto') { + return !!display; + } - // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 - pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + // When 'auto', the scale is visible if at least one associated dataset is visible. + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + if (meta.xAxisID === me.id || meta.yAxisID === me.id) { + return true; + } } + } - if (!pointBefore || pointBefore.model.skip) { - pointCurrent.mK = pointCurrent.deltaK; - } else if (!pointAfter || pointAfter.model.skip) { - pointCurrent.mK = pointBefore.deltaK; - } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { - pointCurrent.mK = 0; - } else { - pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; - } + return false; + }, + + /** + * @private + */ + _computeGridLineItems: function(chartArea) { + var me = this; + var chart = me.chart; + var options = me.options; + var gridLines = options.gridLines; + var position = options.position; + var offsetGridLines = gridLines.offsetGridLines; + var isHorizontal = me.isHorizontal(); + var ticks = me._ticksToDraw; + var ticksLength = ticks.length + (offsetGridLines ? 1 : 0); + + var tl = getTickMarkLength(gridLines); + var items = []; + var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0; + var axisHalfWidth = axisWidth / 2; + var alignPixel = helpers$1._alignPixel; + var alignBorderValue = function(pixel) { + return alignPixel(chart, pixel, axisWidth); + }; + var borderValue, i, tick, lineValue, alignedLineValue; + var tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset; + + if (position === 'top') { + borderValue = alignBorderValue(me.bottom); + ty1 = me.bottom - tl; + ty2 = borderValue - axisHalfWidth; + y1 = alignBorderValue(chartArea.top) + axisHalfWidth; + y2 = chartArea.bottom; + } else if (position === 'bottom') { + borderValue = alignBorderValue(me.top); + y1 = chartArea.top; + y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; + ty1 = borderValue + axisHalfWidth; + ty2 = me.top + tl; + } else if (position === 'left') { + borderValue = alignBorderValue(me.right); + tx1 = me.right - tl; + tx2 = borderValue - axisHalfWidth; + x1 = alignBorderValue(chartArea.left) + axisHalfWidth; + x2 = chartArea.right; + } else { + borderValue = alignBorderValue(me.left); + x1 = chartArea.left; + x2 = alignBorderValue(chartArea.right) - axisHalfWidth; + tx1 = borderValue + axisHalfWidth; + tx2 = me.left + tl; } - // Adjust tangents to ensure monotonic properties - var alphaK, betaK, tauK, squaredMagnitude; - for (i = 0; i < pointsLen - 1; ++i) { - pointCurrent = pointsWithTangents[i]; - pointAfter = pointsWithTangents[i + 1]; - if (pointCurrent.model.skip || pointAfter.model.skip) { + for (i = 0; i < ticksLength; ++i) { + tick = ticks[i] || {}; + + // autoskipper skipped this tick (#4635) + if (isNullOrUndef(tick.label) && i < ticks.length) { continue; } - if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { - pointCurrent.mK = pointAfter.mK = 0; - continue; + if (i === me.zeroLineIndex && options.offset === offsetGridLines) { + // Draw the first index specially + lineWidth = gridLines.zeroLineWidth; + lineColor = gridLines.zeroLineColor; + borderDash = gridLines.zeroLineBorderDash || []; + borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0; + } else { + lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1); + lineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)'); + borderDash = gridLines.borderDash || []; + borderDashOffset = gridLines.borderDashOffset || 0.0; } - alphaK = pointCurrent.mK / pointCurrent.deltaK; - betaK = pointAfter.mK / pointCurrent.deltaK; - squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); - if (squaredMagnitude <= 9) { + lineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines); + + // Skip if the pixel is out of the range + if (lineValue === undefined) { continue; } - tauK = 3 / Math.sqrt(squaredMagnitude); - pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; - pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + alignedLineValue = alignPixel(chart, lineValue, lineWidth); + + if (isHorizontal) { + tx1 = tx2 = x1 = x2 = alignedLineValue; + } else { + ty1 = ty2 = y1 = y2 = alignedLineValue; + } + + items.push({ + tx1: tx1, + ty1: ty1, + tx2: tx2, + ty2: ty2, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + width: lineWidth, + color: lineColor, + borderDash: borderDash, + borderDashOffset: borderDashOffset, + }); } - // Compute control points - var deltaX; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { + items.ticksLength = ticksLength; + items.borderValue = borderValue; + + return items; + }, + + /** + * @private + */ + _computeLabelItems: function() { + var me = this; + var options = me.options; + var optionTicks = options.ticks; + var position = options.position; + var isMirrored = optionTicks.mirror; + var isHorizontal = me.isHorizontal(); + var ticks = me._ticksToDraw; + var fonts = parseTickFontOptions(optionTicks); + var tickPadding = optionTicks.padding; + var tl = getTickMarkLength(options.gridLines); + var rotation = -helpers$1.toRadians(me.labelRotation); + var items = []; + var i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; + + if (position === 'top') { + y = me.bottom - tl - tickPadding; + textAlign = !rotation ? 'center' : 'left'; + } else if (position === 'bottom') { + y = me.top + tl + tickPadding; + textAlign = !rotation ? 'center' : 'right'; + } else if (position === 'left') { + x = me.right - (isMirrored ? 0 : tl) - tickPadding; + textAlign = isMirrored ? 'left' : 'right'; + } else { + x = me.left + (isMirrored ? 0 : tl) + tickPadding; + textAlign = isMirrored ? 'right' : 'left'; + } + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + tick = ticks[i]; + label = tick.label; + + // autoskipper skipped this tick (#4635) + if (isNullOrUndef(label)) { continue; } - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointBefore && !pointBefore.model.skip) { - deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; - pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; - pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; - } - if (pointAfter && !pointAfter.model.skip) { - deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; - pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; - pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + pixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset; + font = tick.major ? fonts.major : fonts.minor; + lineHeight = font.lineHeight; + lineCount = isArray(label) ? label.length : 1; + + if (isHorizontal) { + x = pixel; + textOffset = position === 'top' + ? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight + : (!rotation ? 0.5 : 0) * lineHeight; + } else { + y = pixel; + textOffset = (1 - lineCount) * lineHeight / 2; } + + items.push({ + x: x, + y: y, + rotation: rotation, + label: label, + font: font, + textOffset: textOffset, + textAlign: textAlign + }); } - }; - helpers.nextItem = function(collection, index, loop) { - if (loop) { - return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + + return items; + }, + + /** + * @private + */ + _drawGrid: function(chartArea) { + var me = this; + var gridLines = me.options.gridLines; + + if (!gridLines.display) { + return; } - return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; - }; - helpers.previousItem = function(collection, index, loop) { - if (loop) { - return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + + var ctx = me.ctx; + var chart = me.chart; + var alignPixel = helpers$1._alignPixel; + var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0; + var items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea)); + var width, color, i, ilen, item; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + width = item.width; + color = item.color; + + if (width && color) { + ctx.save(); + ctx.lineWidth = width; + ctx.strokeStyle = color; + if (ctx.setLineDash) { + ctx.setLineDash(item.borderDash); + ctx.lineDashOffset = item.borderDashOffset; + } + + ctx.beginPath(); + + if (gridLines.drawTicks) { + ctx.moveTo(item.tx1, item.ty1); + ctx.lineTo(item.tx2, item.ty2); + } + + if (gridLines.drawOnChartArea) { + ctx.moveTo(item.x1, item.y1); + ctx.lineTo(item.x2, item.y2); + } + + ctx.stroke(); + ctx.restore(); + } } - return index <= 0 ? collection[0] : collection[index - 1]; - }; - // Implementation of the nice number algorithm used in determining where axis labels will go - helpers.niceNum = function(range, round) { - var exponent = Math.floor(helpers.log10(range)); - var fraction = range / Math.pow(10, exponent); - var niceFraction; - if (round) { - if (fraction < 1.5) { - niceFraction = 1; - } else if (fraction < 3) { - niceFraction = 2; - } else if (fraction < 7) { - niceFraction = 5; + if (axisWidth) { + // Draw the line at the edge of the axis + var firstLineWidth = axisWidth; + var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1); + var borderValue = items.borderValue; + var x1, x2, y1, y2; + + if (me.isHorizontal()) { + x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2; + x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2; + y1 = y2 = borderValue; } else { - niceFraction = 10; + y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2; + y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2; + x1 = x2 = borderValue; } - } else if (fraction <= 1.0) { - niceFraction = 1; - } else if (fraction <= 2) { - niceFraction = 2; - } else if (fraction <= 5) { - niceFraction = 5; - } else { - niceFraction = 10; + + ctx.lineWidth = axisWidth; + ctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0); + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + } + }, + + /** + * @private + */ + _drawLabels: function() { + var me = this; + var optionTicks = me.options.ticks; + + if (!optionTicks.display) { + return; + } + + var ctx = me.ctx; + var items = me._labelItems || (me._labelItems = me._computeLabelItems()); + var i, j, ilen, jlen, item, tickFont, label, y; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + tickFont = item.font; + + // Make sure we draw text in the correct color and font + ctx.save(); + ctx.translate(item.x, item.y); + ctx.rotate(item.rotation); + ctx.font = tickFont.string; + ctx.fillStyle = tickFont.color; + ctx.textBaseline = 'middle'; + ctx.textAlign = item.textAlign; + + label = item.label; + y = item.textOffset; + if (isArray(label)) { + for (j = 0, jlen = label.length; j < jlen; ++j) { + // We just make sure the multiline element is a string here.. + ctx.fillText('' + label[j], 0, y); + y += tickFont.lineHeight; + } + } else { + ctx.fillText(label, 0, y); + } + ctx.restore(); } + }, - return niceFraction * Math.pow(10, exponent); - }; - // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ - helpers.requestAnimFrame = (function() { - if (typeof window === 'undefined') { - return function(callback) { - callback(); - }; + /** + * @private + */ + _drawTitle: function() { + var me = this; + var ctx = me.ctx; + var options = me.options; + var scaleLabel = options.scaleLabel; + + if (!scaleLabel.display) { + return; } - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { - return window.setTimeout(callback, 1000 / 60); - }; - }()); - // -- DOM methods - helpers.getRelativePosition = function(evt, chart) { - var mouseX, mouseY; - var e = evt.originalEvent || evt; - var canvas = evt.currentTarget || evt.srcElement; - var boundingRect = canvas.getBoundingClientRect(); - var touches = e.touches; - if (touches && touches.length > 0) { - mouseX = touches[0].clientX; - mouseY = touches[0].clientY; + var scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor); + var scaleLabelFont = helpers$1.options._parseFont(scaleLabel); + var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding); + var halfLineHeight = scaleLabelFont.lineHeight / 2; + var position = options.position; + var rotation = 0; + var scaleLabelX, scaleLabelY; + if (me.isHorizontal()) { + scaleLabelX = me.left + me.width / 2; // midpoint of the width + scaleLabelY = position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; } else { - mouseX = e.clientX; - mouseY = e.clientY; + var isLeft = position === 'left'; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; + scaleLabelY = me.top + me.height / 2; + rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; } - // Scale mouse coordinates into canvas coordinates - // by following the pattern laid out by 'jerryj' in the comments of - // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ - var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); - var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); - var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); - var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); - var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; - var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; - - // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However - // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here - mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); - mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); + ctx.save(); + ctx.translate(scaleLabelX, scaleLabelY); + ctx.rotate(rotation); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = scaleLabelFontColor; // render in correct colour + ctx.font = scaleLabelFont.string; + ctx.fillText(scaleLabel.labelString, 0, 0); + ctx.restore(); + }, - return { - x: mouseX, - y: mouseY - }; + draw: function(chartArea) { + var me = this; - }; + if (!me._isVisible()) { + return; + } - // Private helper function to convert max-width/max-height values that may be percentages into a number - function parseMaxStyle(styleValue, node, parentProperty) { - var valueInPixels; - if (typeof styleValue === 'string') { - valueInPixels = parseInt(styleValue, 10); + me._drawGrid(chartArea); + me._drawTitle(); + me._drawLabels(); + }, - if (styleValue.indexOf('%') !== -1) { - // percentage * size in dimension - valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; - } - } else { - valueInPixels = styleValue; + /** + * @private + */ + _layers: function() { + var me = this; + var opts = me.options; + var tz = opts.ticks && opts.ticks.z || 0; + var gz = opts.gridLines && opts.gridLines.z || 0; + + if (!me._isVisible() || tz === gz || me.draw !== me._draw) { + // backward compatibility: draw has been overridden by custom scale + return [{ + z: tz, + draw: function() { + me.draw.apply(me, arguments); + } + }]; } - return valueInPixels; - } + return [{ + z: gz, + draw: function() { + me._drawGrid.apply(me, arguments); + me._drawTitle.apply(me, arguments); + } + }, { + z: tz, + draw: function() { + me._drawLabels.apply(me, arguments); + } + }]; + }, /** - * Returns if the given value contains an effective constraint. * @private */ - function isConstrainedValue(value) { - return value !== undefined && value !== null && value !== 'none'; + _getMatchingVisibleMetas: function(type) { + var me = this; + var isHorizontal = me.isHorizontal(); + return me.chart._getSortedVisibleDatasetMetas() + .filter(function(meta) { + return (!type || meta.type === type) + && (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id); + }); } +}); - // Private helper to get a constraint dimension - // @param domNode : the node to check the constraint on - // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) - // @param percentageProperty : property of parent to use when calculating width as a percentage - // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser - function getConstraintDimension(domNode, maxStyle, percentageProperty) { - var view = document.defaultView; - var parentNode = domNode.parentNode; - var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; - var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; - var hasCNode = isConstrainedValue(constrainedNode); - var hasCContainer = isConstrainedValue(constrainedContainer); - var infinity = Number.POSITIVE_INFINITY; +Scale.prototype._draw = Scale.prototype.draw; - if (hasCNode || hasCContainer) { - return Math.min( - hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, - hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); +var core_scale = Scale; + +var isNullOrUndef$1 = helpers$1.isNullOrUndef; + +var defaultConfig = { + position: 'bottom' +}; + +var scale_category = core_scale.extend({ + determineDataLimits: function() { + var me = this; + var labels = me._getLabels(); + var ticksOpts = me.options.ticks; + var min = ticksOpts.min; + var max = ticksOpts.max; + var minIndex = 0; + var maxIndex = labels.length - 1; + var findIndex; + + if (min !== undefined) { + // user specified min value + findIndex = labels.indexOf(min); + if (findIndex >= 0) { + minIndex = findIndex; + } } - return 'none'; - } - // returns Number or undefined if no constraint - helpers.getConstraintWidth = function(domNode) { - return getConstraintDimension(domNode, 'max-width', 'clientWidth'); - }; - // returns Number or undefined if no constraint - helpers.getConstraintHeight = function(domNode) { - return getConstraintDimension(domNode, 'max-height', 'clientHeight'); - }; - helpers.getMaximumWidth = function(domNode) { - var container = domNode.parentNode; - if (!container) { - return domNode.clientWidth; + if (max !== undefined) { + // user specified max value + findIndex = labels.indexOf(max); + if (findIndex >= 0) { + maxIndex = findIndex; + } } - var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10); - var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10); - var w = container.clientWidth - paddingLeft - paddingRight; - var cw = helpers.getConstraintWidth(domNode); - return isNaN(cw) ? w : Math.min(w, cw); - }; - helpers.getMaximumHeight = function(domNode) { - var container = domNode.parentNode; - if (!container) { - return domNode.clientHeight; + me.minIndex = minIndex; + me.maxIndex = maxIndex; + me.min = labels[minIndex]; + me.max = labels[maxIndex]; + }, + + buildTicks: function() { + var me = this; + var labels = me._getLabels(); + var minIndex = me.minIndex; + var maxIndex = me.maxIndex; + + // If we are viewing some subset of labels, slice the original array + me.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var chart = me.chart; + + if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) { + return me.getRightValue(chart.data.datasets[datasetIndex].data[index]); } - var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10); - var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10); - var h = container.clientHeight - paddingTop - paddingBottom; - var ch = helpers.getConstraintHeight(domNode); - return isNaN(ch) ? h : Math.min(h, ch); - }; - helpers.getStyle = function(el, property) { - return el.currentStyle ? - el.currentStyle[property] : - document.defaultView.getComputedStyle(el, null).getPropertyValue(property); - }; - helpers.retinaScale = function(chart, forceRatio) { - var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1; - if (pixelRatio === 1) { + return me._getLabels()[index]; + }, + + _configure: function() { + var me = this; + var offset = me.options.offset; + var ticks = me.ticks; + + core_scale.prototype._configure.call(me); + + if (!me.isHorizontal()) { + // For backward compatibility, vertical category scale reverse is inverted. + me._reversePixels = !me._reversePixels; + } + + if (!ticks) { return; } - var canvas = chart.canvas; - var height = chart.height; - var width = chart.width; + me._startValue = me.minIndex - (offset ? 0.5 : 0); + me._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1); + }, - canvas.height = height * pixelRatio; - canvas.width = width * pixelRatio; - chart.ctx.scale(pixelRatio, pixelRatio); + // Used to get data value locations. Value can either be an index or a numerical value + getPixelForValue: function(value, index, datasetIndex) { + var me = this; + var valueCategory, labels, idx; - // If no style has been set on the canvas, the render size is used as display size, - // making the chart visually bigger, so let's enforce it to the "correct" values. - // See https://github.com/chartjs/Chart.js/issues/3575 - if (!canvas.style.height && !canvas.style.width) { - canvas.style.height = height + 'px'; - canvas.style.width = width + 'px'; + if (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) { + value = me.chart.data.datasets[datasetIndex].data[index]; } - }; - // -- Canvas methods - helpers.fontString = function(pixelSize, fontStyle, fontFamily) { - return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; - }; - helpers.longestText = function(ctx, font, arrayOfThings, cache) { - cache = cache || {}; - var data = cache.data = cache.data || {}; - var gc = cache.garbageCollect = cache.garbageCollect || []; - if (cache.font !== font) { - data = cache.data = {}; - gc = cache.garbageCollect = []; - cache.font = font; + // If value is a data object, then index is the index in the data array, + // not the index of the scale. We need to change that. + if (!isNullOrUndef$1(value)) { + valueCategory = me.isHorizontal() ? value.x : value.y; } - - ctx.font = font; - var longest = 0; - helpers.each(arrayOfThings, function(thing) { - // Undefined strings and arrays should not be measured - if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { - longest = helpers.measureText(ctx, data, gc, longest, thing); - } else if (helpers.isArray(thing)) { - // if it is an array lets measure each element - // to do maybe simplify this function a bit so we can do this more recursively? - helpers.each(thing, function(nestedThing) { - // Undefined strings and arrays should not be measured - if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { - longest = helpers.measureText(ctx, data, gc, longest, nestedThing); - } - }); + if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { + labels = me._getLabels(); + value = helpers$1.valueOrDefault(valueCategory, value); + idx = labels.indexOf(value); + index = idx !== -1 ? idx : index; + if (isNaN(index)) { + index = value; } - }); + } + return me.getPixelForDecimal((index - me._startValue) / me._valueRange); + }, - var gcLen = gc.length / 2; - if (gcLen > arrayOfThings.length) { - for (var i = 0; i < gcLen; i++) { - delete data[gc[i]]; - } - gc.splice(0, gcLen); + getPixelForTick: function(index) { + var ticks = this.ticks; + return index < 0 || index > ticks.length - 1 + ? null + : this.getPixelForValue(ticks[index], index + this.minIndex); + }, + + getValueForPixel: function(pixel) { + var me = this; + var value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange); + return Math.min(Math.max(value, 0), me.ticks.length - 1); + }, + + getBasePixel: function() { + return this.bottom; + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults = defaultConfig; +scale_category._defaults = _defaults; + +var noop = helpers$1.noop; +var isNullOrUndef$2 = helpers$1.isNullOrUndef; + +/** + * Generate a set of linear ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {number[]} array of tick values + */ +function generateTicks(generationOptions, dataRange) { + var ticks = []; + // To get a "nice" value for the tick spacing, we will use the appropriately named + // "nice number" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks + // for details. + + var MIN_SPACING = 1e-14; + var stepSize = generationOptions.stepSize; + var unit = stepSize || 1; + var maxNumSpaces = generationOptions.maxTicks - 1; + var min = generationOptions.min; + var max = generationOptions.max; + var precision = generationOptions.precision; + var rmin = dataRange.min; + var rmax = dataRange.max; + var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit; + var factor, niceMin, niceMax, numSpaces; + + // Beyond MIN_SPACING floating point numbers being to lose precision + // such that we can't do the math necessary to generate ticks + if (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) { + return [rmin, rmax]; + } + + numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); + if (numSpaces > maxNumSpaces) { + // If the calculated num of spaces exceeds maxNumSpaces, recalculate it + spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit; + } + + if (stepSize || isNullOrUndef$2(precision)) { + // If a precision is not specified, calculate factor based on spacing + factor = Math.pow(10, helpers$1._decimalPlaces(spacing)); + } else { + // If the user specified a precision, round to that number of decimal places + factor = Math.pow(10, precision); + spacing = Math.ceil(spacing * factor) / factor; + } + + niceMin = Math.floor(rmin / spacing) * spacing; + niceMax = Math.ceil(rmax / spacing) * spacing; + + // If min, max and stepSize is set and they make an evenly spaced scale use it. + if (stepSize) { + // If very close to our whole number, use it. + if (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) { + niceMin = min; } - return longest; - }; - helpers.measureText = function(ctx, data, gc, longest, string) { - var textWidth = data[string]; - if (!textWidth) { - textWidth = data[string] = ctx.measureText(string).width; - gc.push(string); + if (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) { + niceMax = max; } - if (textWidth > longest) { - longest = textWidth; + } + + numSpaces = (niceMax - niceMin) / spacing; + // If very close to our rounded value, use it. + if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + + niceMin = Math.round(niceMin * factor) / factor; + niceMax = Math.round(niceMax * factor) / factor; + ticks.push(isNullOrUndef$2(min) ? niceMin : min); + for (var j = 1; j < numSpaces; ++j) { + ticks.push(Math.round((niceMin + j * spacing) * factor) / factor); + } + ticks.push(isNullOrUndef$2(max) ? niceMax : max); + + return ticks; +} + +var scale_linearbase = core_scale.extend({ + getRightValue: function(value) { + if (typeof value === 'string') { + return +value; } - return longest; - }; - helpers.numberOfLabelLines = function(arrayOfThings) { - var numberOfLines = 1; - helpers.each(arrayOfThings, function(thing) { - if (helpers.isArray(thing)) { - if (thing.length > numberOfLines) { - numberOfLines = thing.length; + return core_scale.prototype.getRightValue.call(this, value); + }, + + handleTickRangeOptions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, + // do nothing since that would make the chart weird. If the user really wants a weird chart + // axis, they can manually override it + if (tickOpts.beginAtZero) { + var minSign = helpers$1.sign(me.min); + var maxSign = helpers$1.sign(me.max); + + if (minSign < 0 && maxSign < 0) { + // move the top up to 0 + me.max = 0; + } else if (minSign > 0 && maxSign > 0) { + // move the bottom down to 0 + me.min = 0; + } + } + + var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; + var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; + + if (tickOpts.min !== undefined) { + me.min = tickOpts.min; + } else if (tickOpts.suggestedMin !== undefined) { + if (me.min === null) { + me.min = tickOpts.suggestedMin; + } else { + me.min = Math.min(me.min, tickOpts.suggestedMin); + } + } + + if (tickOpts.max !== undefined) { + me.max = tickOpts.max; + } else if (tickOpts.suggestedMax !== undefined) { + if (me.max === null) { + me.max = tickOpts.suggestedMax; + } else { + me.max = Math.max(me.max, tickOpts.suggestedMax); + } + } + + if (setMin !== setMax) { + // We set the min or the max but not both. + // So ensure that our range is good + // Inverted or 0 length range can happen when + // ticks.min is set, and no datasets are visible + if (me.min >= me.max) { + if (setMin) { + me.max = me.min + 1; + } else { + me.min = me.max - 1; } } - }); - return numberOfLines; - }; + } - helpers.color = !color ? - function(value) { - console.error('Color.js not found!'); - return value; - } : - function(value) { - /* global CanvasGradient */ - if (value instanceof CanvasGradient) { - value = defaults.global.defaultColor; + if (me.min === me.max) { + me.max++; + + if (!tickOpts.beginAtZero) { + me.min--; } + } + }, + + getTickLimit: function() { + var me = this; + var tickOpts = me.options.ticks; + var stepSize = tickOpts.stepSize; + var maxTicksLimit = tickOpts.maxTicksLimit; + var maxTicks; + + if (stepSize) { + maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1; + } else { + maxTicks = me._computeTickLimit(); + maxTicksLimit = maxTicksLimit || 11; + } - return color(value); + if (maxTicksLimit) { + maxTicks = Math.min(maxTicksLimit, maxTicks); + } + + return maxTicks; + }, + + _computeTickLimit: function() { + return Number.POSITIVE_INFINITY; + }, + + handleDirectionalChanges: noop, + + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 40 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph. Make sure we always have at least 2 ticks + var maxTicks = me.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + + var numericGeneratorOptions = { + maxTicks: maxTicks, + min: tickOpts.min, + max: tickOpts.max, + precision: tickOpts.precision, + stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) }; + var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); - helpers.getHoverColor = function(colorValue) { - /* global CanvasPattern */ - return (colorValue instanceof CanvasPattern) ? - colorValue : - helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); - }; -}; + me.handleDirectionalChanges(); -},{"2":2,"25":25,"45":45}],28:[function(require,module,exports){ -'use strict'; + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers$1.max(ticks); + me.min = helpers$1.min(ticks); -var helpers = require(45); + if (tickOpts.reverse) { + ticks.reverse(); -/** - * Helper function to get relative position for an event - * @param {Event|IEvent} event - The event to get the position for - * @param {Chart} chart - The chart - * @returns {Point} the event position - */ -function getRelativePosition(e, chart) { - if (e.native) { - return { - x: e.x, - y: e.y + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + }, + + convertTicksToLabels: function() { + var me = this; + me.ticksAsNumbers = me.ticks.slice(); + me.zeroLineIndex = me.ticks.indexOf(0); + + core_scale.prototype.convertTicksToLabels.call(me); + }, + + _configure: function() { + var me = this; + var ticks = me.getTicks(); + var start = me.min; + var end = me.max; + var offset; + + core_scale.prototype._configure.call(me); + + if (me.options.offset && ticks.length) { + offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; + start -= offset; + end += offset; + } + me._startValue = start; + me._endValue = end; + me._valueRange = end - start; + } +}); + +var defaultConfig$1 = { + position: 'left', + ticks: { + callback: core_ticks.formatters.linear + } +}; + +var DEFAULT_MIN = 0; +var DEFAULT_MAX = 1; + +function getOrCreateStack(stacks, stacked, meta) { + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + stacked === undefined && meta.stack === undefined ? meta.index : '', + meta.stack + ].join('.'); + + if (stacks[key] === undefined) { + stacks[key] = { + pos: [], + neg: [] }; } - return helpers.getRelativePosition(e, chart); + return stacks[key]; } -/** - * Helper function to traverse all of the visible elements in the chart - * @param chart {chart} the chart - * @param handler {Function} the callback to execute for each visible item - */ -function parseVisibleItems(chart, handler) { - var datasets = chart.data.datasets; - var meta, i, j, ilen, jlen; +function stackData(scale, stacks, meta, data) { + var opts = scale.options; + var stacked = opts.stacked; + var stack = getOrCreateStack(stacks, stacked, meta); + var pos = stack.pos; + var neg = stack.neg; + var ilen = data.length; + var i, value; - for (i = 0, ilen = datasets.length; i < ilen; ++i) { - if (!chart.isDatasetVisible(i)) { + for (i = 0; i < ilen; ++i) { + value = scale._parseValue(data[i]); + if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) { continue; } - meta = chart.getDatasetMeta(i); - for (j = 0, jlen = meta.data.length; j < jlen; ++j) { - var element = meta.data[j]; - if (!element._view.skip) { - handler(element); - } + pos[i] = pos[i] || 0; + neg[i] = neg[i] || 0; + + if (opts.relativePoints) { + pos[i] = 100; + } else if (value.min < 0 || value.max < 0) { + neg[i] += value.min; + } else { + pos[i] += value.max; } } } -/** - * Helper function to get the items that intersect the event position - * @param items {ChartElement[]} elements to filter - * @param position {Point} the point to be nearest to - * @return {ChartElement[]} the nearest items - */ -function getIntersectItems(chart, position) { - var elements = []; +function updateMinMax(scale, meta, data) { + var ilen = data.length; + var i, value; - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); + for (i = 0; i < ilen; ++i) { + value = scale._parseValue(data[i]); + if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) { + continue; } - }); - return elements; + scale.min = Math.min(scale.min, value.min); + scale.max = Math.max(scale.max, value.max); + } } -/** - * Helper function to get the items nearest to the event position considering all visible items in teh chart - * @param chart {Chart} the chart to look at elements from - * @param position {Point} the point to be nearest to - * @param intersect {Boolean} if true, only consider items that intersect the position - * @param distanceMetric {Function} function to provide the distance between points - * @return {ChartElement[]} the nearest items - */ -function getNearestItems(chart, position, intersect, distanceMetric) { - var minDistance = Number.POSITIVE_INFINITY; - var nearestItems = []; +var scale_linear = scale_linearbase.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var datasets = chart.data.datasets; + var metasets = me._getMatchingVisibleMetas(); + var hasStacks = opts.stacked; + var stacks = {}; + var ilen = metasets.length; + var i, meta, data, values; + + me.min = Number.POSITIVE_INFINITY; + me.max = Number.NEGATIVE_INFINITY; + + if (hasStacks === undefined) { + for (i = 0; !hasStacks && i < ilen; ++i) { + meta = metasets[i]; + hasStacks = meta.stack !== undefined; + } + } - parseVisibleItems(chart, function(element) { - if (intersect && !element.inRange(position.x, position.y)) { - return; + for (i = 0; i < ilen; ++i) { + meta = metasets[i]; + data = datasets[meta.index].data; + if (hasStacks) { + stackData(me, stacks, meta, data); + } else { + updateMinMax(me, meta, data); + } } - var center = element.getCenterPoint(); - var distance = distanceMetric(position, center); + helpers$1.each(stacks, function(stackValues) { + values = stackValues.pos.concat(stackValues.neg); + me.min = Math.min(me.min, helpers$1.min(values)); + me.max = Math.max(me.max, helpers$1.max(values)); + }); - if (distance < minDistance) { - nearestItems = [element]; - minDistance = distance; - } else if (distance === minDistance) { - // Can have multiple items at the same distance in which case we sort by size - nearestItems.push(element); - } - }); + me.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; + me.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; - return nearestItems; -} + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + me.handleTickRangeOptions(); + }, -/** - * Get a distance metric function for two points based on the - * axis mode setting - * @param {String} axis the axis mode. x|y|xy - */ -function getDistanceMetricForAxis(axis) { - var useX = axis.indexOf('x') !== -1; - var useY = axis.indexOf('y') !== -1; + // Returns the maximum number of ticks based on the scale dimension + _computeTickLimit: function() { + var me = this; + var tickFont; - return function(pt1, pt2) { - var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; - var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; - return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); - }; -} + if (me.isHorizontal()) { + return Math.ceil(me.width / 40); + } + tickFont = helpers$1.options._parseFont(me.options.ticks); + return Math.ceil(me.height / tickFont.lineHeight); + }, -function indexMode(chart, e, options) { - var position = getRelativePosition(e, chart); - // Default axis for index mode is 'x' to match old behaviour - options.axis = options.axis || 'x'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - var elements = []; + // Called after the ticks are built. We need + handleDirectionalChanges: function() { + if (!this.isHorizontal()) { + // We are in a vertical orientation. The top value is the highest. So reverse the array + this.ticks.reverse(); + } + }, - if (!items.length) { - return []; - } + getLabelForIndex: function(index, datasetIndex) { + return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]); + }, - chart.data.datasets.forEach(function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - var element = meta.data[items[0]._index]; + // Utils + getPixelForValue: function(value) { + var me = this; + return me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange); + }, - // don't count items that are skipped (null data) - if (element && !element._view.skip) { - elements.push(element); - } + getValueForPixel: function(pixel) { + return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; + }, + + getPixelForTick: function(index) { + var ticks = this.ticksAsNumbers; + if (index < 0 || index > ticks.length - 1) { + return null; } - }); + return this.getPixelForValue(ticks[index]); + } +}); - return elements; -} +// INTERNAL: static default options, registered in src/index.js +var _defaults$1 = defaultConfig$1; +scale_linear._defaults = _defaults$1; -/** - * @interface IInteractionOptions - */ -/** - * If true, only consider items that intersect the point - * @name IInterfaceOptions#boolean - * @type Boolean - */ +var valueOrDefault$b = helpers$1.valueOrDefault; +var log10 = helpers$1.math.log10; /** - * Contains interaction related functions - * @namespace Chart.Interaction + * Generate a set of logarithmic ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {number[]} array of tick values */ -module.exports = { - // Helper function for different modes - modes: { - single: function(chart, e) { - var position = getRelativePosition(e, chart); - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - return elements; - } - }); - - return elements.slice(0, 1); - }, - - /** - * @function Chart.Interaction.modes.label - * @deprecated since version 2.4.0 - * @todo remove at version 3 - * @private - */ - label: indexMode, +function generateTicks$1(generationOptions, dataRange) { + var ticks = []; - /** - * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item - * @function Chart.Interaction.modes.index - * @since v2.4.0 - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - index: indexMode, + var tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min)))); - /** - * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect is false, we find the nearest item and return the items in that dataset - * @function Chart.Interaction.modes.dataset - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - dataset: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var endExp = Math.floor(log10(dataRange.max)); + var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); + var exp, significand; - if (items.length > 0) { - items = chart.getDatasetMeta(items[0]._datasetIndex).data; - } + if (tickVal === 0) { + exp = Math.floor(log10(dataRange.minNotZero)); + significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); - return items; - }, + ticks.push(tickVal); + tickVal = significand * Math.pow(10, exp); + } else { + exp = Math.floor(log10(tickVal)); + significand = Math.floor(tickVal / Math.pow(10, exp)); + } + var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - /** - * @function Chart.Interaction.modes.x-axis - * @deprecated since version 2.4.0. Use index mode and intersect == true - * @todo remove at version 3 - * @private - */ - 'x-axis': function(chart, e) { - return indexMode(chart, e, {intersect: false}); - }, + do { + ticks.push(tickVal); - /** - * Point mode returns all elements that hit test based on the event position - * of the event - * @function Chart.Interaction.modes.intersect - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - point: function(chart, e) { - var position = getRelativePosition(e, chart); - return getIntersectItems(chart, position); - }, + ++significand; + if (significand === 10) { + significand = 1; + ++exp; + precision = exp >= 0 ? 1 : precision; + } - /** - * nearest mode returns the element closest to the point - * @function Chart.Interaction.modes.intersect - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - nearest: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); - - // We have multiple items at the same distance from the event. Now sort by smallest - if (nearestItems.length > 1) { - nearestItems.sort(function(a, b) { - var sizeA = a.getArea(); - var sizeB = b.getArea(); - var ret = sizeA - sizeB; - - if (ret === 0) { - // if equal sort by dataset index - ret = a._datasetIndex - b._datasetIndex; - } + tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; + } while (exp < endExp || (exp === endExp && significand < endSignificand)); - return ret; - }); - } + var lastTick = valueOrDefault$b(generationOptions.max, tickVal); + ticks.push(lastTick); - // Return only 1 item - return nearestItems.slice(0, 1); - }, + return ticks; +} - /** - * x mode returns the elements that hit-test at the current x coordinate - * @function Chart.Interaction.modes.x - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - x: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; +var defaultConfig$2 = { + position: 'left', - parseVisibleItems(chart, function(element) { - if (element.inXRange(position.x)) { - items.push(element); - } + // label settings + ticks: { + callback: core_ticks.formatters.logarithmic + } +}; - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); +// TODO(v3): change this to positiveOrDefault +function nonNegativeOrDefault(value, defaultValue) { + return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue; +} - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; +var scale_logarithmic = core_scale.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var datasets = chart.data.datasets; + var isHorizontal = me.isHorizontal(); + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + var datasetIndex, meta, value, data, i, ilen; + + // Calculate Range + me.min = Number.POSITIVE_INFINITY; + me.max = Number.NEGATIVE_INFINITY; + me.minNotZero = Number.POSITIVE_INFINITY; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) { + meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + break; + } } - return items; - }, + } - /** - * y mode returns the elements that hit-test at the current y coordinate - * @function Chart.Interaction.modes.y - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - y: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; - parseVisibleItems(chart, function(element) { - if (element.inYRange(position.y)) { - items.push(element); + for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) { + meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = []; + } + + data = datasets[datasetIndex].data; + for (i = 0, ilen = data.length; i < ilen; i++) { + var values = valuesPerStack[key]; + value = me._parseValue(data[i]); + // invalid, hidden and negative values are ignored + if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) { + continue; + } + values[i] = values[i] || 0; + values[i] += value.max; + } } + } - if (element.inRange(position.x, position.y)) { - intersectsItem = true; + helpers$1.each(valuesPerStack, function(valuesForType) { + if (valuesForType.length > 0) { + var minVal = helpers$1.min(valuesForType); + var maxVal = helpers$1.max(valuesForType); + me.min = Math.min(me.min, minVal); + me.max = Math.max(me.max, maxVal); } }); - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; + } else { + for (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) { + meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + data = datasets[datasetIndex].data; + for (i = 0, ilen = data.length; i < ilen; i++) { + value = me._parseValue(data[i]); + // invalid, hidden and negative values are ignored + if (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) { + continue; + } + + me.min = Math.min(value.min, me.min); + me.max = Math.max(value.max, me.max); + + if (value.min !== 0) { + me.minNotZero = Math.min(value.min, me.minNotZero); + } + } + } } - return items; } - } -}; -},{"45":45}],29:[function(require,module,exports){ -'use strict'; + me.min = helpers$1.isFinite(me.min) ? me.min : null; + me.max = helpers$1.isFinite(me.max) ? me.max : null; + me.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null; -var defaults = require(25); - -defaults._set('global', { - responsive: true, - responsiveAnimationDuration: 0, - maintainAspectRatio: true, - events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], - hover: { - onHover: null, - mode: 'nearest', - intersect: true, - animationDuration: 400 + // Common base implementation to handle ticks.min, ticks.max + this.handleTickRangeOptions(); }, - onClick: null, - defaultColor: 'rgba(0,0,0,0.1)', - defaultFontColor: '#666', - defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - defaultFontSize: 12, - defaultFontStyle: 'normal', - showLines: true, - // Element defaults defined in element extensions - elements: {}, - - // Layout options such as padding - layout: { - padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - } -}); + handleTickRangeOptions: function() { + var me = this; + var tickOpts = me.options.ticks; + var DEFAULT_MIN = 1; + var DEFAULT_MAX = 10; -module.exports = function() { + me.min = nonNegativeOrDefault(tickOpts.min, me.min); + me.max = nonNegativeOrDefault(tickOpts.max, me.max); - // Occupy the global variable of Chart, and create a simple base class - var Chart = function(item, config) { - this.construct(item, config); - return this; - }; + if (me.min === me.max) { + if (me.min !== 0 && me.min !== null) { + me.min = Math.pow(10, Math.floor(log10(me.min)) - 1); + me.max = Math.pow(10, Math.floor(log10(me.max)) + 1); + } else { + me.min = DEFAULT_MIN; + me.max = DEFAULT_MAX; + } + } + if (me.min === null) { + me.min = Math.pow(10, Math.floor(log10(me.max)) - 1); + } + if (me.max === null) { + me.max = me.min !== 0 + ? Math.pow(10, Math.floor(log10(me.min)) + 1) + : DEFAULT_MAX; + } + if (me.minNotZero === null) { + if (me.min > 0) { + me.minNotZero = me.min; + } else if (me.max < 1) { + me.minNotZero = Math.pow(10, Math.floor(log10(me.max))); + } else { + me.minNotZero = DEFAULT_MIN; + } + } + }, - Chart.Chart = Chart; + buildTicks: function() { + var me = this; + var tickOpts = me.options.ticks; + var reverse = !me.isHorizontal(); - return Chart; -}; + var generationOptions = { + min: nonNegativeOrDefault(tickOpts.min), + max: nonNegativeOrDefault(tickOpts.max) + }; + var ticks = me.ticks = generateTicks$1(generationOptions, me); -},{"25":25}],30:[function(require,module,exports){ -'use strict'; + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers$1.max(ticks); + me.min = helpers$1.min(ticks); -var helpers = require(45); + if (tickOpts.reverse) { + reverse = !reverse; + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + if (reverse) { + ticks.reverse(); + } + }, -function filterByPosition(array, position) { - return helpers.where(array, function(v) { - return v.position === position; - }); -} + convertTicksToLabels: function() { + this.tickValues = this.ticks.slice(); -function sortByWeight(array, reverse) { - array.forEach(function(v, i) { - v._tmpIndex_ = i; - return v; - }); - array.sort(function(a, b) { - var v0 = reverse ? b : a; - var v1 = reverse ? a : b; - return v0.weight === v1.weight ? - v0._tmpIndex_ - v1._tmpIndex_ : - v0.weight - v1.weight; - }); - array.forEach(function(v) { - delete v._tmpIndex_; - }); -} + core_scale.prototype.convertTicksToLabels.call(this); + }, -/** - * @interface ILayoutItem - * @prop {String} position - The position of the item in the chart layout. Possible values are - * 'left', 'top', 'right', 'bottom', and 'chartArea' - * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area - * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down - * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) - * @prop {Function} update - Takes two parameters: width and height. Returns size of item - * @prop {Function} getPadding - Returns an object with padding on the edges - * @prop {Number} width - Width of item. Must be valid after update() - * @prop {Number} height - Height of item. Must be valid after update() - * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update - * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update - * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update - * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update - */ + // Get the correct tooltip label + getLabelForIndex: function(index, datasetIndex) { + return this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]); + }, -// The layout service is very self explanatory. It's responsible for the layout within a chart. -// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need -// It is this service's responsibility of carrying out that layout. -module.exports = { - defaults: {}, + getPixelForTick: function(index) { + var ticks = this.tickValues; + if (index < 0 || index > ticks.length - 1) { + return null; + } + return this.getPixelForValue(ticks[index]); + }, /** - * Register a box to a chart. - * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. - * @param {Chart} chart - the chart to use - * @param {ILayoutItem} item - the item to add to be layed out + * Returns the value of the first tick. + * @param {number} value - The minimum not zero value. + * @return {number} The first tick value. + * @private */ - addBox: function(chart, item) { - if (!chart.boxes) { - chart.boxes = []; - } - - // initialize item with default values - item.fullWidth = item.fullWidth || false; - item.position = item.position || 'top'; - item.weight = item.weight || 0; + _getFirstTickValue: function(value) { + var exp = Math.floor(log10(value)); + var significand = Math.floor(value / Math.pow(10, exp)); - chart.boxes.push(item); + return significand * Math.pow(10, exp); }, - /** - * Remove a layoutItem from a chart - * @param {Chart} chart - the chart to remove the box from - * @param {Object} layoutItem - the item to remove from the layout - */ - removeBox: function(chart, layoutItem) { - var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; - if (index !== -1) { - chart.boxes.splice(index, 1); + _configure: function() { + var me = this; + var start = me.min; + var offset = 0; + + core_scale.prototype._configure.call(me); + + if (start === 0) { + start = me._getFirstTickValue(me.minNotZero); + offset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length; } + + me._startValue = log10(start); + me._valueOffset = offset; + me._valueRange = (log10(me.max) - log10(start)) / (1 - offset); }, - /** - * Sets (or updates) options on the given `item`. - * @param {Chart} chart - the chart in which the item lives (or will be added to) - * @param {Object} item - the item to configure with the given options - * @param {Object} options - the new item options. - */ - configure: function(chart, item, options) { - var props = ['fullWidth', 'position', 'weight']; - var ilen = props.length; - var i = 0; - var prop; + getPixelForValue: function(value) { + var me = this; + var decimal = 0; - for (; i < ilen; ++i) { - prop = props[i]; - if (options.hasOwnProperty(prop)) { - item[prop] = options[prop]; - } + value = +me.getRightValue(value); + + if (value > me.min && value > 0) { + decimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset; } + return me.getPixelForDecimal(decimal); }, - /** - * Fits boxes of the given chart into the given size by having each box measure itself - * then running a fitting algorithm - * @param {Chart} chart - the chart - * @param {Number} width - the width to fit into - * @param {Number} height - the height to fit into - */ - update: function(chart, width, height) { - if (!chart) { - return; - } + getValueForPixel: function(pixel) { + var me = this; + var decimal = me.getDecimalForPixel(pixel); + return decimal === 0 && me.min === 0 + ? 0 + : Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange); + } +}); - var layoutOptions = chart.options.layout || {}; - var padding = helpers.options.toPadding(layoutOptions.padding); - var leftPadding = padding.left; - var rightPadding = padding.right; - var topPadding = padding.top; - var bottomPadding = padding.bottom; - - var leftBoxes = filterByPosition(chart.boxes, 'left'); - var rightBoxes = filterByPosition(chart.boxes, 'right'); - var topBoxes = filterByPosition(chart.boxes, 'top'); - var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); - var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); - - // Sort boxes by weight. A higher weight is further away from the chart area - sortByWeight(leftBoxes, true); - sortByWeight(rightBoxes, false); - sortByWeight(topBoxes, true); - sortByWeight(bottomBoxes, false); +// INTERNAL: static default options, registered in src/index.js +var _defaults$2 = defaultConfig$2; +scale_logarithmic._defaults = _defaults$2; - // Essentially we now have any number of boxes on each of the 4 sides. - // Our canvas looks like the following. - // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and - // B1 is the bottom axis - // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays - // These locations are single-box locations only, when trying to register a chartArea location that is already taken, - // an error will be thrown. - // - // |----------------------------------------------------| - // | T1 (Full Width) | - // |----------------------------------------------------| - // | | | T2 | | - // | |----|-------------------------------------|----| - // | | | C1 | | C2 | | - // | | |----| |----| | - // | | | | | - // | L1 | L2 | ChartArea (C0) | R1 | - // | | | | | - // | | |----| |----| | - // | | | C3 | | C4 | | - // | |----|-------------------------------------|----| - // | | | B1 | | - // |----------------------------------------------------| - // | B2 (Full Width) | - // |----------------------------------------------------| - // - // What we do to find the best sizing, we do the following - // 1. Determine the minimum size of the chart area. - // 2. Split the remaining width equally between each vertical axis - // 3. Split the remaining height equally between each horizontal axis - // 4. Give each layout the maximum size it can be. The layout will return it's minimum size - // 5. Adjust the sizes of each axis based on it's minimum reported size. - // 6. Refit each axis - // 7. Position each axis in the final location - // 8. Tell the chart the final location of the chart area - // 9. Tell any axes that overlay the chart area the positions of the chart area - - // Step 1 - var chartWidth = width - leftPadding - rightPadding; - var chartHeight = height - topPadding - bottomPadding; - var chartAreaWidth = chartWidth / 2; // min 50% - var chartAreaHeight = chartHeight / 2; // min 50% - - // Step 2 - var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); - - // Step 3 - var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); - - // Step 4 - var maxChartAreaWidth = chartWidth; - var maxChartAreaHeight = chartHeight; - var minBoxSizes = []; - - function getMinimumBoxSize(box) { - var minSize; - var isHorizontal = box.isHorizontal(); +var valueOrDefault$c = helpers$1.valueOrDefault; +var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault; +var resolve$4 = helpers$1.options.resolve; - if (isHorizontal) { - minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); - maxChartAreaHeight -= minSize.height; - } else { - minSize = box.update(verticalBoxWidth, maxChartAreaHeight); - maxChartAreaWidth -= minSize.width; - } +var defaultConfig$3 = { + display: true, + + // Boolean - Whether to animate scaling the chart from the centre + animate: true, + position: 'chartArea', + + angleLines: { + display: true, + color: 'rgba(0,0,0,0.1)', + lineWidth: 1, + borderDash: [], + borderDashOffset: 0.0 + }, + + gridLines: { + circular: false + }, - minBoxSizes.push({ - horizontal: isHorizontal, - minSize: minSize, - box: box, - }); - } + // label settings + ticks: { + // Boolean - Show a backdrop to the scale label + showLabelBackdrop: true, - helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); + // String - The colour of the label backdrop + backdropColor: 'rgba(255,255,255,0.75)', - // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) - var maxHorizontalLeftPadding = 0; - var maxHorizontalRightPadding = 0; - var maxVerticalTopPadding = 0; - var maxVerticalBottomPadding = 0; + // Number - The backdrop padding above & below the label in pixels + backdropPaddingY: 2, - helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { - if (horizontalBox.getPadding) { - var boxPadding = horizontalBox.getPadding(); - maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); - maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); - } - }); + // Number - The backdrop padding to the side of the label in pixels + backdropPaddingX: 2, - helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { - if (verticalBox.getPadding) { - var boxPadding = verticalBox.getPadding(); - maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); - maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); - } - }); + callback: core_ticks.formatters.linear + }, - // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could - // be if the axes are drawn at their minimum sizes. - // Steps 5 & 6 - var totalLeftBoxesWidth = leftPadding; - var totalRightBoxesWidth = rightPadding; - var totalTopBoxesHeight = topPadding; - var totalBottomBoxesHeight = bottomPadding; - - // Function to fit a box - function fitBox(box) { - var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { - return minBox.box === box; - }); + pointLabels: { + // Boolean - if true, show point labels + display: true, - if (minBoxSize) { - if (box.isHorizontal()) { - var scaleMargin = { - left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), - right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), - top: 0, - bottom: 0 - }; + // Number - Point label font size in pixels + fontSize: 10, - // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends - // on the margin. Sometimes they need to increase in size slightly - box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); - } else { - box.update(minBoxSize.minSize.width, maxChartAreaHeight); - } - } + // Function - Used to convert point labels + callback: function(label) { + return label; } + } +}; - // Update, and calculate the left and right margins for the horizontal boxes - helpers.each(leftBoxes.concat(rightBoxes), fitBox); +function getTickBackdropHeight(opts) { + var tickOpts = opts.ticks; - helpers.each(leftBoxes, function(box) { - totalLeftBoxesWidth += box.width; - }); + if (tickOpts.display && opts.display) { + return valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2; + } + return 0; +} - helpers.each(rightBoxes, function(box) { - totalRightBoxesWidth += box.width; - }); +function measureLabelSize(ctx, lineHeight, label) { + if (helpers$1.isArray(label)) { + return { + w: helpers$1.longestText(ctx, ctx.font, label), + h: label.length * lineHeight + }; + } - // Set the Left and Right margins for the horizontal boxes - helpers.each(topBoxes.concat(bottomBoxes), fitBox); + return { + w: ctx.measureText(label).width, + h: lineHeight + }; +} - // Figure out how much margin is on the top and bottom of the vertical boxes - helpers.each(topBoxes, function(box) { - totalTopBoxesHeight += box.height; - }); +function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - (size / 2), + end: pos + (size / 2) + }; + } else if (angle < min || angle > max) { + return { + start: pos - size, + end: pos + }; + } - helpers.each(bottomBoxes, function(box) { - totalBottomBoxesHeight += box.height; - }); + return { + start: pos, + end: pos + size + }; +} - function finalFitVerticalBox(box) { - var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { - return minSize.box === box; - }); +/** + * Helper function to fit a radial linear scale with point labels + */ +function fitWithPointLabels(scale) { - var scaleMargin = { - left: 0, - right: 0, - top: totalTopBoxesHeight, - bottom: totalBottomBoxesHeight - }; + // Right, this is really confusing and there is a lot of maths going on here + // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 + // + // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif + // + // Solution: + // + // We assume the radius of the polygon is half the size of the canvas at first + // at each index we check if the text overlaps. + // + // Where it does, we store that angle and that index. + // + // After finding the largest index and angle we calculate how much we need to remove + // from the shape radius to move the point inwards by that x. + // + // We average the left and right distances to get the maximum shape radius that can fit in the box + // along with labels. + // + // Once we have that, we can find the centre point for the chart, by taking the x text protrusion + // on each side, removing that from the size, halving it and adding the left x protrusion width. + // + // This will mean we have a shape fitted to the canvas, as large as it can be with the labels + // and position it in the most space efficient manner + // + // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif - if (minBoxSize) { - box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); - } + var plFont = helpers$1.options._parseFont(scale.options.pointLabels); + + // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. + // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points + var furthestLimits = { + l: 0, + r: scale.width, + t: 0, + b: scale.height - scale.paddingTop + }; + var furthestAngles = {}; + var i, textSize, pointPosition; + + scale.ctx.font = plFont.string; + scale._pointLabelSizes = []; + + var valueCount = scale.chart.data.labels.length; + for (i = 0; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, scale.drawingArea + 5); + textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]); + scale._pointLabelSizes[i] = textSize; + + // Add quarter circle to make degree 0 mean top of circle + var angleRadians = scale.getIndexAngle(i); + var angle = helpers$1.toDegrees(angleRadians) % 360; + var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + + if (hLimits.start < furthestLimits.l) { + furthestLimits.l = hLimits.start; + furthestAngles.l = angleRadians; } - // Let the left layout know the final margin - helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); + if (hLimits.end > furthestLimits.r) { + furthestLimits.r = hLimits.end; + furthestAngles.r = angleRadians; + } - // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) - totalLeftBoxesWidth = leftPadding; - totalRightBoxesWidth = rightPadding; - totalTopBoxesHeight = topPadding; - totalBottomBoxesHeight = bottomPadding; + if (vLimits.start < furthestLimits.t) { + furthestLimits.t = vLimits.start; + furthestAngles.t = angleRadians; + } - helpers.each(leftBoxes, function(box) { - totalLeftBoxesWidth += box.width; - }); + if (vLimits.end > furthestLimits.b) { + furthestLimits.b = vLimits.end; + furthestAngles.b = angleRadians; + } + } - helpers.each(rightBoxes, function(box) { - totalRightBoxesWidth += box.width; - }); + scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles); +} - helpers.each(topBoxes, function(box) { - totalTopBoxesHeight += box.height; - }); - helpers.each(bottomBoxes, function(box) { - totalBottomBoxesHeight += box.height; - }); +function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return 'center'; + } else if (angle < 180) { + return 'left'; + } - // We may be adding some padding to account for rotated x axis labels - var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); - totalLeftBoxesWidth += leftPaddingAddition; - totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); + return 'right'; +} - var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); - totalTopBoxesHeight += topPaddingAddition; - totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); +function fillText(ctx, text, position, lineHeight) { + var y = position.y + lineHeight / 2; + var i, ilen; - // Figure out if our chart area changed. This would occur if the dataset layout label rotation - // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do - // without calling `fit` again - var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; - var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; + if (helpers$1.isArray(text)) { + for (i = 0, ilen = text.length; i < ilen; ++i) { + ctx.fillText(text[i], position.x, y); + y += lineHeight; + } + } else { + ctx.fillText(text, position.x, y); + } +} - if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { - helpers.each(leftBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); +function adjustPointPositionForLabelHeight(angle, textSize, position) { + if (angle === 90 || angle === 270) { + position.y -= (textSize.h / 2); + } else if (angle > 270 || angle < 90) { + position.y -= textSize.h; + } +} - helpers.each(rightBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); +function drawPointLabels(scale) { + var ctx = scale.ctx; + var opts = scale.options; + var pointLabelOpts = opts.pointLabels; + var tickBackdropHeight = getTickBackdropHeight(opts); + var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); + var plFont = helpers$1.options._parseFont(pointLabelOpts); - helpers.each(topBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); + ctx.save(); - helpers.each(bottomBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); + ctx.font = plFont.string; + ctx.textBaseline = 'middle'; + + for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) { + // Extra pixels out for some label spacing + var extra = (i === 0 ? tickBackdropHeight / 2 : 0); + var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); - maxChartAreaHeight = newMaxChartAreaHeight; - maxChartAreaWidth = newMaxChartAreaWidth; + // Keep this in loop since we may support array properties here + var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor); + ctx.fillStyle = pointLabelFontColor; + + var angleRadians = scale.getIndexAngle(i); + var angle = helpers$1.toDegrees(angleRadians); + ctx.textAlign = getTextAlignForAngle(angle); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight); + } + ctx.restore(); +} + +function drawRadiusLine(scale, gridLineOpts, radius, index) { + var ctx = scale.ctx; + var circular = gridLineOpts.circular; + var valueCount = scale.chart.data.labels.length; + var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1); + var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1); + var pointPosition; + + if ((!circular && !valueCount) || !lineColor || !lineWidth) { + return; + } + + ctx.save(); + ctx.strokeStyle = lineColor; + ctx.lineWidth = lineWidth; + if (ctx.setLineDash) { + ctx.setLineDash(gridLineOpts.borderDash || []); + ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0; + } + + ctx.beginPath(); + if (circular) { + // Draw circular arcs between the points + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); + } else { + // Draw straight lines connecting each index + pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + + for (var i = 1; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); } + } + ctx.closePath(); + ctx.stroke(); + ctx.restore(); +} - // Step 7 - Position the boxes - var left = leftPadding + leftPaddingAddition; - var top = topPadding + topPaddingAddition; +function numberOrZero(param) { + return helpers$1.isNumber(param) ? param : 0; +} + +var scale_radialLinear = scale_linearbase.extend({ + setDimensions: function() { + var me = this; - function placeBox(box) { - if (box.isHorizontal()) { - box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; - box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; - box.top = top; - box.bottom = top + box.height; + // Set the unconstrained dimension before label rotation + me.width = me.maxWidth; + me.height = me.maxHeight; + me.paddingTop = getTickBackdropHeight(me.options) / 2; + me.xCenter = Math.floor(me.width / 2); + me.yCenter = Math.floor((me.height - me.paddingTop) / 2); + me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2; + }, - // Move to next point - top = box.bottom; + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var min = Number.POSITIVE_INFINITY; + var max = Number.NEGATIVE_INFINITY; - } else { + helpers$1.each(chart.data.datasets, function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); - box.left = left; - box.right = left + box.width; - box.top = totalTopBoxesHeight; - box.bottom = totalTopBoxesHeight + maxChartAreaHeight; + helpers$1.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } - // Move to next point - left = box.right; + min = Math.min(value, min); + max = Math.max(value, max); + }); } - } + }); - helpers.each(leftBoxes.concat(topBoxes), placeBox); + me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); + me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); - // Account for chart width and height - left += maxChartAreaWidth; - top += maxChartAreaHeight; + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + me.handleTickRangeOptions(); + }, - helpers.each(rightBoxes, placeBox); - helpers.each(bottomBoxes, placeBox); + // Returns the maximum number of ticks based on the scale dimension + _computeTickLimit: function() { + return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); + }, - // Step 8 - chart.chartArea = { - left: totalLeftBoxesWidth, - top: totalTopBoxesHeight, - right: totalLeftBoxesWidth + maxChartAreaWidth, - bottom: totalTopBoxesHeight + maxChartAreaHeight - }; + convertTicksToLabels: function() { + var me = this; - // Step 9 - helpers.each(chartAreaBoxes, function(box) { - box.left = chart.chartArea.left; - box.top = chart.chartArea.top; - box.right = chart.chartArea.right; - box.bottom = chart.chartArea.bottom; + scale_linearbase.prototype.convertTicksToLabels.call(me); - box.update(maxChartAreaWidth, maxChartAreaHeight); + // Point labels + me.pointLabels = me.chart.data.labels.map(function() { + var label = helpers$1.callback(me.options.pointLabels.callback, arguments, me); + return label || label === 0 ? label : ''; }); - } -}; + }, -},{"45":45}],31:[function(require,module,exports){ -'use strict'; + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, -var defaults = require(25); -var helpers = require(45); + fit: function() { + var me = this; + var opts = me.options; -defaults._set('global', { - plugins: {} -}); + if (opts.display && opts.pointLabels.display) { + fitWithPointLabels(me); + } else { + me.setCenterPoint(0, 0, 0, 0); + } + }, -/** - * The plugin service singleton - * @namespace Chart.plugins - * @since 2.1.0 - */ -module.exports = { /** - * Globally registered plugins. + * Set radius reductions and determine new radius and center point * @private */ - _plugins: [], + setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { + var me = this; + var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); + var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); + var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); + var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b); + + radiusReductionLeft = numberOrZero(radiusReductionLeft); + radiusReductionRight = numberOrZero(radiusReductionRight); + radiusReductionTop = numberOrZero(radiusReductionTop); + radiusReductionBottom = numberOrZero(radiusReductionBottom); + + me.drawingArea = Math.min( + Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), + Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); + me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); + }, - /** - * This identifier is used to invalidate the descriptors cache attached to each chart - * when a global plugin is registered or unregistered. In this case, the cache ID is - * incremented and descriptors are regenerated during following API calls. - * @private - */ - _cacheId: 0, + setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { + var me = this; + var maxRight = me.width - rightMovement - me.drawingArea; + var maxLeft = leftMovement + me.drawingArea; + var maxTop = topMovement + me.drawingArea; + var maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea; - /** - * Registers the given plugin(s) if not already registered. - * @param {Array|Object} plugins plugin instance(s). - */ - register: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - if (p.indexOf(plugin) === -1) { - p.push(plugin); - } - }); + me.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left); + me.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop); + }, - this._cacheId++; + getIndexAngle: function(index) { + var chart = this.chart; + var angleMultiplier = 360 / chart.data.labels.length; + var options = chart.options || {}; + var startAngle = options.startAngle || 0; + + // Start from the top instead of right, so remove a quarter of the circle + var angle = (index * angleMultiplier + startAngle) % 360; + + return (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360; }, - /** - * Unregisters the given plugin(s) only if registered. - * @param {Array|Object} plugins plugin instance(s). - */ - unregister: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - var idx = p.indexOf(plugin); - if (idx !== -1) { - p.splice(idx, 1); - } - }); + getDistanceFromCenterForValue: function(value) { + var me = this; - this._cacheId++; + if (helpers$1.isNullOrUndef(value)) { + return NaN; + } + + // Take into account half font size + the yPadding of the top value + var scalingFactor = me.drawingArea / (me.max - me.min); + if (me.options.ticks.reverse) { + return (me.max - value) * scalingFactor; + } + return (value - me.min) * scalingFactor; }, - /** - * Remove all registered plugins. - * @since 2.1.5 - */ - clear: function() { - this._plugins = []; - this._cacheId++; + getPointPosition: function(index, distanceFromCenter) { + var me = this; + var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); + return { + x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter, + y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter + }; }, - /** - * Returns the number of registered plugins? - * @returns {Number} - * @since 2.1.5 - */ - count: function() { - return this._plugins.length; + getPointPositionForValue: function(index, value) { + return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); }, - /** - * Returns all registered plugin instances. - * @returns {Array} array of plugin objects. - * @since 2.1.5 - */ - getAll: function() { - return this._plugins; + getBasePosition: function(index) { + var me = this; + var min = me.min; + var max = me.max; + + return me.getPointPositionForValue(index || 0, + me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0); }, /** - * Calls enabled plugins for `chart` on the specified hook and with the given args. - * This method immediately returns as soon as a plugin explicitly returns false. The - * returned value can be used, for instance, to interrupt the current action. - * @param {Object} chart - The chart instance for which plugins should be called. - * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). - * @param {Array} [args] - Extra arguments to apply to the hook call. - * @returns {Boolean} false if any of the plugins return false, else returns true. + * @private */ - notify: function(chart, hook, args) { - var descriptors = this.descriptors(chart); - var ilen = descriptors.length; - var i, descriptor, plugin, params, method; + _drawGrid: function() { + var me = this; + var ctx = me.ctx; + var opts = me.options; + var gridLineOpts = opts.gridLines; + var angleLineOpts = opts.angleLines; + var lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth); + var lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color); + var i, offset, position; - for (i = 0; i < ilen; ++i) { - descriptor = descriptors[i]; - plugin = descriptor.plugin; - method = plugin[hook]; - if (typeof method === 'function') { - params = [chart].concat(args || []); - params.push(descriptor.options); - if (method.apply(plugin, params) === false) { - return false; + if (opts.pointLabels.display) { + drawPointLabels(me); + } + + if (gridLineOpts.display) { + helpers$1.each(me.ticks, function(label, index) { + if (index !== 0) { + offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); + drawRadiusLine(me, gridLineOpts, offset, index); } - } + }); } - return true; + if (angleLineOpts.display && lineWidth && lineColor) { + ctx.save(); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = lineColor; + if (ctx.setLineDash) { + ctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []])); + ctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]); + } + + for (i = me.chart.data.labels.length - 1; i >= 0; i--) { + offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max); + position = me.getPointPosition(i, offset); + ctx.beginPath(); + ctx.moveTo(me.xCenter, me.yCenter); + ctx.lineTo(position.x, position.y); + ctx.stroke(); + } + + ctx.restore(); + } }, /** - * Returns descriptors of enabled plugins for the given chart. - * @returns {Array} [{ plugin, options }] * @private */ - descriptors: function(chart) { - var cache = chart.$plugins || (chart.$plugins = {}); - if (cache.id === this._cacheId) { - return cache.descriptors; - } + _drawLabels: function() { + var me = this; + var ctx = me.ctx; + var opts = me.options; + var tickOpts = opts.ticks; - var plugins = []; - var descriptors = []; - var config = (chart && chart.config) || {}; - var options = (config.options && config.options.plugins) || {}; + if (!tickOpts.display) { + return; + } - this._plugins.concat(config.plugins || []).forEach(function(plugin) { - var idx = plugins.indexOf(plugin); - if (idx !== -1) { - return; - } + var startAngle = me.getIndexAngle(0); + var tickFont = helpers$1.options._parseFont(tickOpts); + var tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor); + var offset, width; - var id = plugin.id; - var opts = options[id]; - if (opts === false) { + ctx.save(); + ctx.font = tickFont.string; + ctx.translate(me.xCenter, me.yCenter); + ctx.rotate(startAngle); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + + helpers$1.each(me.ticks, function(label, index) { + if (index === 0 && !tickOpts.reverse) { return; } - if (opts === true) { - opts = helpers.clone(defaults.global.plugins[id]); + offset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); + + if (tickOpts.showLabelBackdrop) { + width = ctx.measureText(label).width; + ctx.fillStyle = tickOpts.backdropColor; + + ctx.fillRect( + -width / 2 - tickOpts.backdropPaddingX, + -offset - tickFont.size / 2 - tickOpts.backdropPaddingY, + width + tickOpts.backdropPaddingX * 2, + tickFont.size + tickOpts.backdropPaddingY * 2 + ); } - plugins.push(plugin); - descriptors.push({ - plugin: plugin, - options: opts || {} - }); + ctx.fillStyle = tickFontColor; + ctx.fillText(label, 0, -offset); }); - cache.descriptors = descriptors; - cache.id = this._cacheId; - return descriptors; + ctx.restore(); }, /** - * Invalidates cache for the given chart: descriptors hold a reference on plugin option, - * but in some cases, this reference can be changed by the user when updating options. - * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 * @private */ - _invalidate: function(chart) { - delete chart.$plugins; + _drawTitle: helpers$1.noop +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults$3 = defaultConfig$3; +scale_radialLinear._defaults = _defaults$3; + +var deprecated$1 = helpers$1._deprecated; +var resolve$5 = helpers$1.options.resolve; +var valueOrDefault$d = helpers$1.valueOrDefault; + +// Integer constants are from the ES6 spec. +var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; +var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + +var INTERVALS = { + millisecond: { + common: true, + size: 1, + steps: 1000 + }, + second: { + common: true, + size: 1000, + steps: 60 + }, + minute: { + common: true, + size: 60000, + steps: 60 + }, + hour: { + common: true, + size: 3600000, + steps: 24 + }, + day: { + common: true, + size: 86400000, + steps: 30 + }, + week: { + common: false, + size: 604800000, + steps: 4 + }, + month: { + common: true, + size: 2.628e9, + steps: 12 + }, + quarter: { + common: false, + size: 7.884e9, + steps: 4 + }, + year: { + common: true, + size: 3.154e10 } }; +var UNITS = Object.keys(INTERVALS); + +function sorter(a, b) { + return a - b; +} + +function arrayUnique(items) { + var hash = {}; + var out = []; + var i, ilen, item; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + if (!hash[item]) { + hash[item] = true; + out.push(item); + } + } + + return out; +} + +function getMin(options) { + return helpers$1.valueOrDefault(options.time.min, options.ticks.min); +} + +function getMax(options) { + return helpers$1.valueOrDefault(options.time.max, options.ticks.max); +} + /** - * Plugin extension hooks. - * @interface IPlugin - * @since 2.1.0 - */ -/** - * @method IPlugin#beforeInit - * @desc Called before initializing `chart`. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#afterInit - * @desc Called after `chart` has been initialized and before the first update. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeUpdate - * @desc Called before updating `chart`. If any plugin returns `false`, the update - * is cancelled (and thus subsequent render(s)) until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart update. - */ -/** - * @method IPlugin#afterUpdate - * @desc Called after `chart` has been updated and before rendering. Note that this - * hook will not be called if the chart update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetsUpdate - * @desc Called before updating the `chart` datasets. If any plugin returns `false`, - * the datasets update is cancelled until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} false to cancel the datasets update. - * @since version 2.1.5 -*/ -/** - * @method IPlugin#afterDatasetsUpdate - * @desc Called after the `chart` datasets have been updated. Note that this hook - * will not be called if the datasets update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @since version 2.1.5 - */ -/** - * @method IPlugin#beforeDatasetUpdate - * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin - * returns `false`, the datasets update is cancelled until another `update` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetUpdate - * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note - * that this hook will not be called if the datasets update has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeLayout - * @desc Called before laying out `chart`. If any plugin returns `false`, - * the layout update is cancelled until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart layout. - */ -/** - * @method IPlugin#afterLayout - * @desc Called after the `chart` has been layed out. Note that this hook will not - * be called if the layout update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeRender - * @desc Called before rendering `chart`. If any plugin returns `false`, - * the rendering is cancelled until another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart rendering. - */ -/** - * @method IPlugin#afterRender - * @desc Called after the `chart` has been fully rendered (and animation completed). Note - * that this hook will not be called if the rendering has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDraw - * @desc Called before drawing `chart` at every animation frame specified by the given - * easing value. If any plugin returns `false`, the frame drawing is cancelled until - * another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart drawing. - */ -/** - * @method IPlugin#afterDraw - * @desc Called after the `chart` has been drawn for the specific easing value. Note - * that this hook will not be called if the drawing has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetsDraw - * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, - * the datasets drawing is cancelled until another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetsDraw - * @desc Called after the `chart` datasets have been drawn. Note that this hook - * will not be called if the datasets drawing has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetDraw - * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets - * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing - * is cancelled until another `render` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetDraw - * @desc Called after the `chart` datasets at the given `args.index` have been drawn - * (datasets are drawn in the reverse order). Note that this hook will not be called - * if the datasets drawing has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeTooltipDraw - * @desc Called before drawing the `tooltip`. If any plugin returns `false`, - * the tooltip drawing is cancelled until another `render` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Object} args.tooltip - The tooltip. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart tooltip drawing. - */ -/** - * @method IPlugin#afterTooltipDraw - * @desc Called after drawing the `tooltip`. Note that this hook will not - * be called if the tooltip drawing has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Object} args.tooltip - The tooltip. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeEvent - * @desc Called before processing the specified `event`. If any plugin returns `false`, - * the event will be discarded. - * @param {Chart.Controller} chart - The chart instance. - * @param {IEvent} event - The event object. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#afterEvent - * @desc Called after the `event` has been consumed. Note that this hook - * will not be called if the `event` has been previously discarded. - * @param {Chart.Controller} chart - The chart instance. - * @param {IEvent} event - The event object. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#resize - * @desc Called after the chart as been resized. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} size - The new canvas display size (eq. canvas.style width & height). - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#destroy - * @desc Called after the chart as been destroyed. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. + * Returns an array of {time, pos} objects used to interpolate a specific `time` or position + * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is + * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other + * extremity (left + width or top + height). Note that it would be more optimized to directly + * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need + * to create the lookup table. The table ALWAYS contains at least two items: min and max. + * + * @param {number[]} timestamps - timestamps sorted from lowest to highest. + * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min + * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. + * If 'series', timestamps will be positioned at the same distance from each other. In this + * case, only timestamps that break the time linearity are registered, meaning that in the + * best case, all timestamps are linear, the table contains only min and max. */ +function buildLookupTable(timestamps, min, max, distribution) { + if (distribution === 'linear' || !timestamps.length) { + return [ + {time: min, pos: 0}, + {time: max, pos: 1} + ]; + } -},{"25":25,"45":45}],32:[function(require,module,exports){ -'use strict'; + var table = []; + var items = [min]; + var i, ilen, prev, curr, next; -var defaults = require(25); -var Element = require(26); -var helpers = require(45); -var Ticks = require(34); + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr > min && curr < max) { + items.push(curr); + } + } -defaults._set('scale', { - display: true, - position: 'left', - offset: false, + items.push(max); - // grid line settings - gridLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - drawBorder: true, - drawOnChartArea: true, - drawTicks: true, - tickMarkLength: 10, - zeroLineWidth: 1, - zeroLineColor: 'rgba(0,0,0,0.25)', - zeroLineBorderDash: [], - zeroLineBorderDashOffset: 0.0, - offsetGridLines: false, - borderDash: [], - borderDashOffset: 0.0 - }, + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; - // scale label - scaleLabel: { - // display property - display: false, + // only add points that breaks the scale linearity + if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { + table.push({time: curr, pos: i / (ilen - 1)}); + } + } - // actual label - labelString: '', + return table; +} - // line height - lineHeight: 1.2, +// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ +function lookup(table, key, value) { + var lo = 0; + var hi = table.length - 1; + var mid, i0, i1; - // top/bottom padding - padding: { - top: 4, - bottom: 4 + while (lo >= 0 && lo <= hi) { + mid = (lo + hi) >> 1; + i0 = table[mid - 1] || null; + i1 = table[mid]; + + if (!i0) { + // given value is outside table (before first item) + return {lo: null, hi: i1}; + } else if (i1[key] < value) { + lo = mid + 1; + } else if (i0[key] > value) { + hi = mid - 1; + } else { + return {lo: i0, hi: i1}; } - }, + } + + // given value is outside table (after last item) + return {lo: i1, hi: null}; +} + +/** + * Linearly interpolates the given source `value` using the table items `skey` values and + * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') + * returns the position for a timestamp equal to 42. If value is out of bounds, values at + * index [0, 1] or [n - 1, n] are used for the interpolation. + */ +function interpolate$1(table, skey, sval, tkey) { + var range = lookup(table, skey, sval); + + // Note: the lookup table ALWAYS contains at least 2 items (min and max) + var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; + var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; + + var span = next[skey] - prev[skey]; + var ratio = span ? (sval - prev[skey]) / span : 0; + var offset = (next[tkey] - prev[tkey]) * ratio; + + return prev[tkey] + offset; +} + +function toTimestamp(scale, input) { + var adapter = scale._adapter; + var options = scale.options.time; + var parser = options.parser; + var format = parser || options.format; + var value = input; + + if (typeof parser === 'function') { + value = parser(value); + } + + // Only parse if its not a timestamp already + if (!helpers$1.isFinite(value)) { + value = typeof format === 'string' + ? adapter.parse(value, format) + : adapter.parse(value); + } - // label settings - ticks: { - beginAtZero: false, - minRotation: 0, - maxRotation: 50, - mirror: false, - padding: 0, - reverse: false, - display: true, - autoSkip: true, - autoSkipPadding: 0, - labelOffset: 0, - // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. - callback: Ticks.formatters.values, - minor: {}, - major: {} + if (value !== null) { + return +value; } -}); -function labelsFromTicks(ticks) { - var labels = []; - var i, ilen; + // Labels are in an incompatible format and no `parser` has been provided. + // The user might still use the deprecated `format` option for parsing. + if (!parser && typeof format === 'function') { + value = format(input); - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(ticks[i].label); + // `format` could return something else than a timestamp, if so, parse it + if (!helpers$1.isFinite(value)) { + value = adapter.parse(value); + } } - return labels; + return value; } -function getLineValue(scale, index, offsetGridLines) { - var lineValue = scale.getPixelForTick(index); +function parse(scale, input) { + if (helpers$1.isNullOrUndef(input)) { + return null; + } - if (offsetGridLines) { - if (index === 0) { - lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; - } else { - lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; - } + var options = scale.options.time; + var value = toTimestamp(scale, scale.getRightValue(input)); + if (value === null) { + return value; } - return lineValue; + + if (options.round) { + value = +scale._adapter.startOf(value, options.round); + } + + return value; } -module.exports = function(Chart) { +/** + * Figures out what unit results in an appropriate number of auto-generated ticks + */ +function determineUnitForAutoTicks(minUnit, min, max, capacity) { + var ilen = UNITS.length; + var i, interval, factor; + + for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + interval = INTERVALS[UNITS[i]]; + factor = interval.steps ? interval.steps : MAX_INTEGER; - function computeTextSize(context, tick, font) { - return helpers.isArray(tick) ? - helpers.longestText(context, font, tick) : - context.measureText(tick).width; + if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } } - function parseFontOptions(options) { - var valueOrDefault = helpers.valueOrDefault; - var globalDefaults = defaults.global; - var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); - var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); - var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); + return UNITS[ilen - 1]; +} - return { - size: size, - style: style, - family: family, - font: helpers.fontString(size, style, family) - }; +/** + * Figures out what unit to format a set of ticks with + */ +function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { + var i, unit; + + for (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { + unit = UNITS[i]; + if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { + return unit; + } } - function parseLineHeight(options) { - return helpers.options.toLineHeight( - helpers.valueOrDefault(options.lineHeight, 1.2), - helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); + return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; +} + +function determineMajorUnit(unit) { + for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].common) { + return UNITS[i]; + } } +} - Chart.Scale = Element.extend({ - /** - * Get the padding needed for the scale - * @method getPadding - * @private - * @returns {Padding} the necessary padding - */ - getPadding: function() { - var me = this; - return { - left: me.paddingLeft || 0, - top: me.paddingTop || 0, - right: me.paddingRight || 0, - bottom: me.paddingBottom || 0 - }; - }, +/** + * Generates a maximum of `capacity` timestamps between min and max, rounded to the + * `minor` unit using the given scale time `options`. + * Important: this method can return ticks outside the min and max range, it's the + * responsibility of the calling code to clamp values if needed. + */ +function generate(scale, min, max, capacity) { + var adapter = scale._adapter; + var options = scale.options; + var timeOpts = options.time; + var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); + var stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]); + var weekday = minor === 'week' ? timeOpts.isoWeekday : false; + var first = min; + var ticks = []; + var time; - /** - * Returns the scale tick objects ({label, major}) - * @since 2.7 - */ - getTicks: function() { - return this._ticks; - }, + // For 'week' unit, handle the first day of week option + if (weekday) { + first = +adapter.startOf(first, 'isoWeek', weekday); + } - // These methods are ordered by lifecyle. Utilities then follow. - // Any function defined here is inherited by all scale types. - // Any function can be extended by the scale type + // Align first ticks on unit + first = +adapter.startOf(first, weekday ? 'day' : minor); - mergeTicksOptions: function() { - var ticks = this.options.ticks; - if (ticks.minor === false) { - ticks.minor = { - display: false - }; - } - if (ticks.major === false) { - ticks.major = { - display: false - }; - } - for (var key in ticks) { - if (key !== 'major' && key !== 'minor') { - if (typeof ticks.minor[key] === 'undefined') { - ticks.minor[key] = ticks[key]; - } - if (typeof ticks.major[key] === 'undefined') { - ticks.major[key] = ticks[key]; - } - } - } - }, - beforeUpdate: function() { - helpers.callback(this.options.beforeUpdate, [this]); - }, - update: function(maxWidth, maxHeight, margins) { - var me = this; - var i, ilen, labels, label, ticks, tick; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = helpers.extend({ - left: 0, - right: 0, - top: 0, - bottom: 0 - }, margins); - me.longestTextCache = me.longestTextCache || {}; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - - // Data min/max - me.beforeDataLimits(); - me.determineDataLimits(); - me.afterDataLimits(); - - // Ticks - `this.ticks` is now DEPRECATED! - // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member - // and must not be accessed directly from outside this class. `this.ticks` being - // around for long time and not marked as private, we can't change its structure - // without unexpected breaking changes. If you need to access the scale ticks, - // use scale.getTicks() instead. - - me.beforeBuildTicks(); - - // New implementations should return an array of objects but for BACKWARD COMPAT, - // we still support no return (`this.ticks` internally set by calling this method). - ticks = me.buildTicks() || []; - - me.afterBuildTicks(); - - me.beforeTickToLabelConversion(); - - // New implementations should return the formatted tick labels but for BACKWARD - // COMPAT, we still support no return (`this.ticks` internally changed by calling - // this method and supposed to contain only string values). - labels = me.convertTicksToLabels(ticks) || me.ticks; - - me.afterTickToLabelConversion(); - - me.ticks = labels; // BACKWARD COMPATIBILITY - - // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! - - // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) - for (i = 0, ilen = labels.length; i < ilen; ++i) { - label = labels[i]; - tick = ticks[i]; - if (!tick) { - ticks.push(tick = { - label: label, - major: false - }); - } else { - tick.label = label; - } - } + // Prevent browser from freezing in case user options request millions of milliseconds + if (adapter.diff(max, min, minor) > 100000 * stepSize) { + throw min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor; + } - me._ticks = ticks; + for (time = first; time < max; time = +adapter.add(time, stepSize, minor)) { + ticks.push(time); + } - // Tick Rotation - me.beforeCalculateTickRotation(); - me.calculateTickRotation(); - me.afterCalculateTickRotation(); - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); + if (time === max || options.bounds === 'ticks') { + ticks.push(time); + } - return me.minSize; + return ticks; +} - }, - afterUpdate: function() { - helpers.callback(this.options.afterUpdate, [this]); - }, +/** + * Returns the start and end offsets from edges in the form of {start, end} + * where each value is a relative width to the scale and ranges between 0 and 1. + * They add extra margins on the both sides by scaling down the original scale. + * Offsets are added when the `offset` option is true. + */ +function computeOffsets(table, ticks, min, max, options) { + var start = 0; + var end = 0; + var first, last; - // + if (options.offset && ticks.length) { + first = interpolate$1(table, 'time', ticks[0], 'pos'); + if (ticks.length === 1) { + start = 1 - first; + } else { + start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2; + } + last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos'); + if (ticks.length === 1) { + end = last; + } else { + end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2; + } + } - beforeSetDimensions: function() { - helpers.callback(this.options.beforeSetDimensions, [this]); - }, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; + return {start: start, end: end, factor: 1 / (start + 1 + end)}; +} - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } +function setMajorTicks(scale, ticks, map, majorUnit) { + var adapter = scale._adapter; + var first = +adapter.startOf(ticks[0].value, majorUnit); + var last = ticks[ticks.length - 1].value; + var major, index; - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - }, - afterSetDimensions: function() { - helpers.callback(this.options.afterSetDimensions, [this]); - }, + for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { + index = map[major]; + if (index >= 0) { + ticks[index].major = true; + } + } + return ticks; +} - // Data limits - beforeDataLimits: function() { - helpers.callback(this.options.beforeDataLimits, [this]); - }, - determineDataLimits: helpers.noop, - afterDataLimits: function() { - helpers.callback(this.options.afterDataLimits, [this]); - }, +function ticksFromTimestamps(scale, values, majorUnit) { + var ticks = []; + var map = {}; + var ilen = values.length; + var i, value; - // - beforeBuildTicks: function() { - helpers.callback(this.options.beforeBuildTicks, [this]); - }, - buildTicks: helpers.noop, - afterBuildTicks: function() { - helpers.callback(this.options.afterBuildTicks, [this]); - }, + for (i = 0; i < ilen; ++i) { + value = values[i]; + map[value] = i; - beforeTickToLabelConversion: function() { - helpers.callback(this.options.beforeTickToLabelConversion, [this]); - }, - convertTicksToLabels: function() { - var me = this; - // Convert ticks to strings - var tickOpts = me.options.ticks; - me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); - }, - afterTickToLabelConversion: function() { - helpers.callback(this.options.afterTickToLabelConversion, [this]); - }, + ticks.push({ + value: value, + major: false + }); + } - // + // We set the major ticks separately from the above loop because calling startOf for every tick + // is expensive when there is a large number of ticks + return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit); +} - beforeCalculateTickRotation: function() { - helpers.callback(this.options.beforeCalculateTickRotation, [this]); - }, - calculateTickRotation: function() { - var me = this; - var context = me.ctx; - var tickOpts = me.options.ticks; - var labels = labelsFromTicks(me._ticks); - - // Get the width of each grid by calculating the difference - // between x offsets between 0 and 1. - var tickFont = parseFontOptions(tickOpts); - context.font = tickFont.font; - - var labelRotation = tickOpts.minRotation || 0; - - if (labels.length && me.options.display && me.isHorizontal()) { - var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); - var labelWidth = originalLabelWidth; - var cosRotation, sinRotation; - - // Allow 3 pixels x2 padding either side for label readability - var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; - - // Max label rotation can be set or default to 90 - also act as a loop counter - while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { - var angleRadians = helpers.toRadians(labelRotation); - cosRotation = Math.cos(angleRadians); - sinRotation = Math.sin(angleRadians); - - if (sinRotation * originalLabelWidth > me.maxHeight) { - // go back one step - labelRotation--; - break; - } +var defaultConfig$4 = { + position: 'bottom', - labelRotation++; - labelWidth = cosRotation * originalLabelWidth; - } - } + /** + * Data distribution along the scale: + * - 'linear': data are spread according to their time (distances can vary), + * - 'series': data are spread at the same distance from each other. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + distribution: 'linear', - me.labelRotation = labelRotation; - }, - afterCalculateTickRotation: function() { - helpers.callback(this.options.afterCalculateTickRotation, [this]); - }, + /** + * Scale boundary strategy (bypassed by min/max time options) + * - `data`: make sure data are fully visible, ticks outside are removed + * - `ticks`: make sure ticks are fully visible, data outside are truncated + * @see https://github.com/chartjs/Chart.js/pull/4556 + * @since 2.7.0 + */ + bounds: 'data', + + adapters: {}, + time: { + parser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment + unit: false, // false == automatic or override with week, month, year, etc. + round: false, // none, or override with week, month, year, etc. + displayFormat: false, // DEPRECATED + isoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/ + minUnit: 'millisecond', + displayFormats: {} + }, + ticks: { + autoSkip: false, - // + /** + * Ticks generation input values: + * - 'auto': generates "optimal" ticks based on scale size and time options. + * - 'data': generates ticks from data (including labels from data {t|x|y} objects). + * - 'labels': generates ticks from user given `data.labels` values ONLY. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + source: 'auto', - beforeFit: function() { - helpers.callback(this.options.beforeFit, [this]); - }, - fit: function() { - var me = this; - // Reset - var minSize = me.minSize = { - width: 0, - height: 0 - }; + major: { + enabled: false + } + } +}; - var labels = labelsFromTicks(me._ticks); +var scale_time = core_scale.extend({ + initialize: function() { + this.mergeTicksOptions(); + core_scale.prototype.initialize.call(this); + }, - var opts = me.options; - var tickOpts = opts.ticks; - var scaleLabelOpts = opts.scaleLabel; - var gridLineOpts = opts.gridLines; - var display = opts.display; - var isHorizontal = me.isHorizontal(); + update: function() { + var me = this; + var options = me.options; + var time = options.time || (options.time = {}); + var adapter = me._adapter = new core_adapters._date(options.adapters.date); + + // DEPRECATIONS: output a message only one time per update + deprecated$1('time scale', time.format, 'time.format', 'time.parser'); + deprecated$1('time scale', time.min, 'time.min', 'ticks.min'); + deprecated$1('time scale', time.max, 'time.max', 'ticks.max'); + + // Backward compatibility: before introducing adapter, `displayFormats` was + // supposed to contain *all* unit/string pairs but this can't be resolved + // when loading the scale (adapters are loaded afterward), so let's populate + // missing formats on update + helpers$1.mergeIf(time.displayFormats, adapter.formats()); + + return core_scale.prototype.update.apply(me, arguments); + }, - var tickFont = parseFontOptions(tickOpts); - var tickMarkLength = opts.gridLines.tickMarkLength; + /** + * Allows data to be referenced via 't' attribute + */ + getRightValue: function(rawValue) { + if (rawValue && rawValue.t !== undefined) { + rawValue = rawValue.t; + } + return core_scale.prototype.getRightValue.call(this, rawValue); + }, - // Width - if (isHorizontal) { - // subtract the margins to line up with the chartArea if we are a full width scale - minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; - } else { - minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var adapter = me._adapter; + var options = me.options; + var unit = options.time.unit || 'day'; + var min = MAX_INTEGER; + var max = MIN_INTEGER; + var timestamps = []; + var datasets = []; + var labels = []; + var i, j, ilen, jlen, data, timestamp, labelsAdded; + var dataLabels = me._getLabels(); + + for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { + labels.push(parse(me, dataLabels[i])); + } - // height - if (isHorizontal) { - minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } else { - minSize.height = me.maxHeight; // fill all the height - } + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + data = chart.data.datasets[i].data; - // Are we showing a title for the scale? - if (scaleLabelOpts.display && display) { - var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); - var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); - var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; + // Let's consider that all data have the same format. + if (helpers$1.isObject(data[0])) { + datasets[i] = []; - if (isHorizontal) { - minSize.height += deltaHeight; + for (j = 0, jlen = data.length; j < jlen; ++j) { + timestamp = parse(me, data[j]); + timestamps.push(timestamp); + datasets[i][j] = timestamp; + } } else { - minSize.width += deltaHeight; + datasets[i] = labels.slice(0); + if (!labelsAdded) { + timestamps = timestamps.concat(labels); + labelsAdded = true; + } } + } else { + datasets[i] = []; } + } - // Don't bother fitting the ticks if we are not showing them - if (tickOpts.display && display) { - var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); - var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); - var lineSpace = tickFont.size * 0.5; - var tickPadding = me.options.ticks.padding; - - if (isHorizontal) { - // A horizontal axis is more constrained by the height. - me.longestLabelWidth = largestTextWidth; - - var angleRadians = helpers.toRadians(me.labelRotation); - var cosRotation = Math.cos(angleRadians); - var sinRotation = Math.sin(angleRadians); - - // TODO - improve this calculation - var labelHeight = (sinRotation * largestTextWidth) - + (tickFont.size * tallestLabelHeightInLines) - + (lineSpace * (tallestLabelHeightInLines - 1)) - + lineSpace; // padding - - minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); - - me.ctx.font = tickFont.font; - var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); - var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); - - // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned - // which means that the right padding is dominated by the font height - if (me.labelRotation !== 0) { - me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges - me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; - } else { - me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges - me.paddingRight = lastLabelWidth / 2 + 3; - } - } else { - // A vertical axis is more constrained by the width. Labels are the - // dominant factor here, so get that length first and account for padding - if (tickOpts.mirror) { - largestTextWidth = 0; - } else { - // use lineSpace for consistency with horizontal axis - // tickPadding is not implemented for horizontal - largestTextWidth += tickPadding + lineSpace; - } + if (labels.length) { + min = Math.min(min, labels[0]); + max = Math.max(max, labels[labels.length - 1]); + } - minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + if (timestamps.length) { + timestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter); + min = Math.min(min, timestamps[0]); + max = Math.max(max, timestamps[timestamps.length - 1]); + } - me.paddingTop = tickFont.size / 2; - me.paddingBottom = tickFont.size / 2; - } - } + min = parse(me, getMin(options)) || min; + max = parse(me, getMax(options)) || max; - me.handleMargins(); + // In case there is no valid min/max, set limits based on unit time option + min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min; + max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; - me.width = minSize.width; - me.height = minSize.height; - }, + // Make sure that max is strictly higher than min (required by the lookup table) + me.min = Math.min(min, max); + me.max = Math.max(min + 1, max); - /** - * Handle margins and padding interactions - * @private - */ - handleMargins: function() { - var me = this; - if (me.margins) { - me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); - me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); - me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); - me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); - } - }, + // PRIVATE + me._table = []; + me._timestamps = { + data: timestamps, + datasets: datasets, + labels: labels + }; + }, - afterFit: function() { - helpers.callback(this.options.afterFit, [this]); - }, + buildTicks: function() { + var me = this; + var min = me.min; + var max = me.max; + var options = me.options; + var tickOpts = options.ticks; + var timeOpts = options.time; + var timestamps = me._timestamps; + var ticks = []; + var capacity = me.getLabelCapacity(min); + var source = tickOpts.source; + var distribution = options.distribution; + var i, ilen, timestamp; + + if (source === 'data' || (source === 'auto' && distribution === 'series')) { + timestamps = timestamps.data; + } else if (source === 'labels') { + timestamps = timestamps.labels; + } else { + timestamps = generate(me, min, max, capacity); + } - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - isFullWidth: function() { - return (this.options.fullWidth); - }, + if (options.bounds === 'ticks' && timestamps.length) { + min = timestamps[0]; + max = timestamps[timestamps.length - 1]; + } - // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not - getRightValue: function(rawValue) { - // Null and undefined values first - if (helpers.isNullOrUndef(rawValue)) { - return NaN; - } - // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values - if (typeof rawValue === 'number' && !isFinite(rawValue)) { - return NaN; - } - // If it is in fact an object, dive in one more level - if (rawValue) { - if (this.isHorizontal()) { - if (rawValue.x !== undefined) { - return this.getRightValue(rawValue.x); - } - } else if (rawValue.y !== undefined) { - return this.getRightValue(rawValue.y); - } - } + // Enforce limits with user min/max options + min = parse(me, getMin(options)) || min; + max = parse(me, getMax(options)) || max; - // Value is good, return it - return rawValue; - }, + // Remove ticks outside the min/max range + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + timestamp = timestamps[i]; + if (timestamp >= min && timestamp <= max) { + ticks.push(timestamp); + } + } - /** - * Used to get the value to display in the tooltip for the data at the given index - * @param index - * @param datasetIndex - */ - getLabelForIndex: helpers.noop, + me.min = min; + me.max = max; + + // PRIVATE + // determineUnitForFormatting relies on the number of ticks so we don't use it when + // autoSkip is enabled because we don't yet know what the final number of ticks will be + me._unit = timeOpts.unit || (tickOpts.autoSkip + ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity) + : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max)); + me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined + : determineMajorUnit(me._unit); + me._table = buildLookupTable(me._timestamps.data, min, max, distribution); + me._offsets = computeOffsets(me._table, ticks, min, max, options); + + if (tickOpts.reverse) { + ticks.reverse(); + } - /** - * Returns the location of the given data point. Value can either be an index or a numerical value - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param value - * @param index - * @param datasetIndex - */ - getPixelForValue: helpers.noop, + return ticksFromTimestamps(me, ticks, me._majorUnit); + }, - /** - * Used to get the data value from a given pixel. This is the inverse of getPixelForValue - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param pixel - */ - getValueForPixel: helpers.noop, + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var adapter = me._adapter; + var data = me.chart.data; + var timeOpts = me.options.time; + var label = data.labels && index < data.labels.length ? data.labels[index] : ''; + var value = data.datasets[datasetIndex].data[index]; + + if (helpers$1.isObject(value)) { + label = me.getRightValue(value); + } + if (timeOpts.tooltipFormat) { + return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat); + } + if (typeof label === 'string') { + return label; + } + return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime); + }, - /** - * Returns the location of the tick at the given index - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForTick: function(index) { - var me = this; - var offset = me.options.offset; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var pixel = (tickWidth * index) + me.paddingLeft; + /** + * Function to format an individual tick mark + * @private + */ + tickFormatFunction: function(time, index, ticks, format) { + var me = this; + var adapter = me._adapter; + var options = me.options; + var formats = options.time.displayFormats; + var minorFormat = formats[me._unit]; + var majorUnit = me._majorUnit; + var majorFormat = formats[majorUnit]; + var tick = ticks[index]; + var tickOpts = options.ticks; + var major = majorUnit && majorFormat && tick && tick.major; + var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat); + var nestedTickOpts = major ? tickOpts.major : tickOpts.minor; + var formatter = resolve$5([ + nestedTickOpts.callback, + nestedTickOpts.userCallback, + tickOpts.callback, + tickOpts.userCallback + ]); + + return formatter ? formatter(label, index, ticks) : label; + }, - if (offset) { - pixel += tickWidth / 2; - } + convertTicksToLabels: function(ticks) { + var labels = []; + var i, ilen; - var finalVal = me.left + Math.round(pixel); - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - var innerHeight = me.height - (me.paddingTop + me.paddingBottom); - return me.top + (index * (innerHeight / (me._ticks.length - 1))); - }, + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(this.tickFormatFunction(ticks[i].value, i, ticks)); + } - /** - * Utility for getting the pixel location of a percentage of scale - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForDecimal: function(decimal) { - var me = this; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var valueOffset = (innerWidth * decimal) + me.paddingLeft; + return labels; + }, - var finalVal = me.left + Math.round(valueOffset); - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - return me.top + (decimal * me.height); - }, + /** + * @private + */ + getPixelForOffset: function(time) { + var me = this; + var offsets = me._offsets; + var pos = interpolate$1(me._table, 'time', time, 'pos'); + return me.getPixelForDecimal((offsets.start + pos) * offsets.factor); + }, - /** - * Returns the pixel for the minimum chart value - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getBasePixel: function() { - return this.getPixelForValue(this.getBaseValue()); - }, + getPixelForValue: function(value, index, datasetIndex) { + var me = this; + var time = null; - getBaseValue: function() { - var me = this; - var min = me.min; - var max = me.max; + if (index !== undefined && datasetIndex !== undefined) { + time = me._timestamps.datasets[datasetIndex][index]; + } - return me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0; - }, + if (time === null) { + time = parse(me, value); + } - /** - * Returns a subset of ticks to be plotted to avoid overlapping labels. - * @private - */ - _autoSkip: function(ticks) { - var skipRatio; - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - var tickCount = ticks.length; - var labelRotationRadians = helpers.toRadians(me.labelRotation); - var cosRotation = Math.cos(labelRotationRadians); - var longestRotatedLabel = me.longestLabelWidth * cosRotation; - var result = []; - var i, tick, shouldSkip; - - // figure out the maximum number of gridlines to show - var maxTicks; - if (optionTicks.maxTicksLimit) { - maxTicks = optionTicks.maxTicksLimit; - } + if (time !== null) { + return me.getPixelForOffset(time); + } + }, - if (isHorizontal) { - skipRatio = false; + getPixelForTick: function(index) { + var ticks = this.getTicks(); + return index >= 0 && index < ticks.length ? + this.getPixelForOffset(ticks[index].value) : + null; + }, - if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { - skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); - } + getValueForPixel: function(pixel) { + var me = this; + var offsets = me._offsets; + var pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end; + var time = interpolate$1(me._table, 'pos', pos, 'time'); - // if they defined a max number of optionTicks, - // increase skipRatio until that number is met - if (maxTicks && tickCount > maxTicks) { - skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); - } - } + // DEPRECATION, we should return time directly + return me._adapter._create(time); + }, - for (i = 0; i < tickCount; i++) { - tick = ticks[i]; + /** + * @private + */ + _getLabelSize: function(label) { + var me = this; + var ticksOpts = me.options.ticks; + var tickLabelWidth = me.ctx.measureText(label).width; + var angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); + var cosRotation = Math.cos(angle); + var sinRotation = Math.sin(angle); + var tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize); - // Since we always show the last tick,we need may need to hide the last shown one before - shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); - if (shouldSkip && i !== tickCount - 1) { - // leave tick in place but make sure it's not displayed (#4635) - delete tick.label; - } - result.push(tick); - } - return result; - }, + return { + w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation), + h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation) + }; + }, - // Actually draw the scale on the canvas - // @param {rectangle} chartArea : the area of the chart to draw full grid lines on - draw: function(chartArea) { - var me = this; - var options = me.options; - if (!options.display) { - return; - } + /** + * Crude approximation of what the label width might be + * @private + */ + getLabelWidth: function(label) { + return this._getLabelSize(label).w; + }, - var context = me.ctx; - var globalDefaults = defaults.global; - var optionTicks = options.ticks.minor; - var optionMajorTicks = options.ticks.major || optionTicks; - var gridLines = options.gridLines; - var scaleLabel = options.scaleLabel; + /** + * @private + */ + getLabelCapacity: function(exampleTime) { + var me = this; + var timeOpts = me.options.time; + var displayFormats = timeOpts.displayFormats; - var isRotated = me.labelRotation !== 0; - var isHorizontal = me.isHorizontal(); + // pick the longest format (milliseconds) for guestimation + var format = displayFormats[timeOpts.unit] || displayFormats.millisecond; + var exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format); + var size = me._getLabelSize(exampleLabel); + var capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h); - var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); - var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); - var tickFont = parseFontOptions(optionTicks); - var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); - var majorTickFont = parseFontOptions(optionMajorTicks); + if (me.options.offset) { + capacity--; + } - var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; + return capacity > 0 ? capacity : 1; + } +}); - var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); - var scaleLabelFont = parseFontOptions(scaleLabel); - var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); - var labelRotationRadians = helpers.toRadians(me.labelRotation); +// INTERNAL: static default options, registered in src/index.js +var _defaults$4 = defaultConfig$4; +scale_time._defaults = _defaults$4; - var itemsToDraw = []; +var scales = { + category: scale_category, + linear: scale_linear, + logarithmic: scale_logarithmic, + radialLinear: scale_radialLinear, + time: scale_time +}; - var axisWidth = me.options.gridLines.lineWidth; - var xTickStart = options.position === 'right' ? me.right : me.right - axisWidth - tl; - var xTickEnd = options.position === 'right' ? me.right + tl : me.right; - var yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth; - var yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth; +var moment = createCommonjsModule(function (module, exports) { +(function (global, factory) { + module.exports = factory() ; +}(commonjsGlobal, (function () { + var hookCallback; - helpers.each(ticks, function(tick, index) { - // autoskipper skipped this tick (#4635) - if (helpers.isNullOrUndef(tick.label)) { - return; - } + function hooks () { + return hookCallback.apply(null, arguments); + } - var label = tick.label; - var lineWidth, lineColor, borderDash, borderDashOffset; - if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { - // Draw the first index specially - lineWidth = gridLines.zeroLineWidth; - lineColor = gridLines.zeroLineColor; - borderDash = gridLines.zeroLineBorderDash; - borderDashOffset = gridLines.zeroLineBorderDashOffset; - } else { - lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); - lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); - borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); - borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); - } + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } - // Common properties - var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; - var textAlign = 'middle'; - var textBaseline = 'middle'; - var tickPadding = optionTicks.padding; + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } - if (isHorizontal) { - var labelYOffset = tl + tickPadding; + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; + } - if (options.position === 'bottom') { - // bottom - textBaseline = !isRotated ? 'top' : 'middle'; - textAlign = !isRotated ? 'center' : 'right'; - labelY = me.top + labelYOffset; - } else { - // top - textBaseline = !isRotated ? 'bottom' : 'middle'; - textAlign = !isRotated ? 'center' : 'left'; - labelY = me.bottom - labelYOffset; - } + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return (Object.getOwnPropertyNames(obj).length === 0); + } else { + var k; + for (k in obj) { + if (obj.hasOwnProperty(k)) { + return false; + } + } + return true; + } + } - var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); - if (xLineValue < me.left) { - lineColor = 'rgba(0,0,0,0)'; - } - xLineValue += helpers.aliasPixel(lineWidth); + function isUndefined(input) { + return input === void 0; + } - labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) + function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; + } - tx1 = tx2 = x1 = x2 = xLineValue; - ty1 = yTickStart; - ty2 = yTickEnd; - y1 = chartArea.top; - y2 = chartArea.bottom + axisWidth; - } else { - var isLeft = options.position === 'left'; - var labelXOffset; + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } - if (optionTicks.mirror) { - textAlign = isLeft ? 'left' : 'right'; - labelXOffset = tickPadding; - } else { - textAlign = isLeft ? 'right' : 'left'; - labelXOffset = tl + tickPadding; - } + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } - var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); - if (yLineValue < me.top) { - lineColor = 'rgba(0,0,0,0)'; - } - yLineValue += helpers.aliasPixel(lineWidth); + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - labelY = me.getPixelForTick(index) + optionTicks.labelOffset; + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - tx1 = xTickStart; - tx2 = xTickEnd; - x1 = chartArea.left; - x2 = chartArea.right + axisWidth; - ty1 = ty2 = y1 = y2 = yLineValue; - } + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - itemsToDraw.push({ - tx1: tx1, - ty1: ty1, - tx2: tx2, - ty2: ty2, - x1: x1, - y1: y1, - x2: x2, - y2: y2, - labelX: labelX, - labelY: labelY, - glWidth: lineWidth, - glColor: lineColor, - glBorderDash: borderDash, - glBorderDashOffset: borderDashOffset, - rotation: -1 * labelRotationRadians, - label: label, - major: tick.major, - textBaseline: textBaseline, - textAlign: textAlign - }); - }); + return a; + } - // Draw all of the tick labels, tick marks, and grid lines at the correct places - helpers.each(itemsToDraw, function(itemToDraw) { - if (gridLines.display) { - context.save(); - context.lineWidth = itemToDraw.glWidth; - context.strokeStyle = itemToDraw.glColor; - if (context.setLineDash) { - context.setLineDash(itemToDraw.glBorderDash); - context.lineDashOffset = itemToDraw.glBorderDashOffset; - } + function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } - context.beginPath(); + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; + } - if (gridLines.drawTicks) { - context.moveTo(itemToDraw.tx1, itemToDraw.ty1); - context.lineTo(itemToDraw.tx2, itemToDraw.ty2); - } + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } - if (gridLines.drawOnChartArea) { - context.moveTo(itemToDraw.x1, itemToDraw.y1); - context.lineTo(itemToDraw.x2, itemToDraw.y2); - } + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; - context.stroke(); - context.restore(); - } + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } - if (optionTicks.display) { - // Make sure we draw text in the correct color and font - context.save(); - context.translate(itemToDraw.labelX, itemToDraw.labelY); - context.rotate(itemToDraw.rotation); - context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; - context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; - context.textBaseline = itemToDraw.textBaseline; - context.textAlign = itemToDraw.textAlign; - - var label = itemToDraw.label; - if (helpers.isArray(label)) { - var lineCount = label.length; - var lineHeight = tickFont.size * 1.5; - var y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2; - - for (var i = 0; i < lineCount; ++i) { - // We just make sure the multiline element is a string here.. - context.fillText('' + label[i], 0, y); - // apply same lineSpacing as calculated @ L#320 - y += lineHeight; - } - } else { - context.fillText(label, 0, 0); - } - context.restore(); - } - }); + return false; + }; + } - if (scaleLabel.display) { - // Draw the scale label - var scaleLabelX; - var scaleLabelY; - var rotation = 0; - var halfLineHeight = parseLineHeight(scaleLabel) / 2; - - if (isHorizontal) { - scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width - scaleLabelY = options.position === 'bottom' - ? me.bottom - halfLineHeight - scaleLabelPadding.bottom - : me.top + halfLineHeight + scaleLabelPadding.top; - } else { - var isLeft = options.position === 'left'; - scaleLabelX = isLeft - ? me.left + halfLineHeight + scaleLabelPadding.top - : me.right - halfLineHeight - scaleLabelPadding.top; - scaleLabelY = me.top + ((me.bottom - me.top) / 2); - rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; - } + function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } - context.save(); - context.translate(scaleLabelX, scaleLabelY); - context.rotate(rotation); - context.textAlign = 'center'; - context.textBaseline = 'middle'; - context.fillStyle = scaleLabelFontColor; // render in correct colour - context.font = scaleLabelFont.font; - context.fillText(scaleLabel.labelString, 0, 0); - context.restore(); - } + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; + } - if (gridLines.drawBorder) { - // Draw the line at the edge of the axis - context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); - context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); - var x1 = me.left; - var x2 = me.right + axisWidth; - var y1 = me.top; - var y2 = me.bottom + axisWidth; - - var aliasPixel = helpers.aliasPixel(context.lineWidth); - if (isHorizontal) { - y1 = y2 = options.position === 'top' ? me.bottom : me.top; - y1 += aliasPixel; - y2 += aliasPixel; - } else { - x1 = x2 = options.position === 'left' ? me.right : me.left; - x1 += aliasPixel; - x2 += aliasPixel; - } + function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } - context.beginPath(); - context.moveTo(x1, y1); - context.lineTo(x2, y2); - context.stroke(); - } - } - }); -}; + return m; + } -},{"25":25,"26":26,"34":34,"45":45}],33:[function(require,module,exports){ -'use strict'; + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = hooks.momentProperties = []; -var defaults = require(25); -var helpers = require(45); -var layouts = require(30); + function copyConfig(to, from) { + var i, prop, val; -module.exports = function(Chart) { + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } - Chart.scaleService = { - // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then - // use the new chart options to grab the correct scale - constructors: {}, - // Use a registration function so that we can move to an ES6 map when we no longer need to support - // old browsers + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } - // Scale config defaults - defaults: {}, - registerScaleType: function(type, scaleConstructor, scaleDefaults) { - this.constructors[type] = scaleConstructor; - this.defaults[type] = helpers.clone(scaleDefaults); - }, - getScaleConstructor: function(type) { - return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; - }, - getScaleDefaults: function(type) { - // Return the scale defaults merged with the global settings so that we always use the latest ones - return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; - }, - updateScaleDefaults: function(type, additions) { - var me = this; - if (me.defaults.hasOwnProperty(type)) { - me.defaults[type] = helpers.extend(me.defaults[type], additions); - } - }, - addScalesToLayout: function(chart) { - // Adds each scale to the chart.boxes array to be sized accordingly - helpers.each(chart.scales, function(scale) { - // Set ILayoutItem parameters for backwards compatibility - scale.fullWidth = scale.options.fullWidth; - scale.position = scale.options.position; - scale.weight = scale.options.weight; - layouts.addBox(chart, scale); - }); - } - }; -}; + return to; + } -},{"25":25,"30":30,"45":45}],34:[function(require,module,exports){ -'use strict'; + var updateInProgress = false; -var helpers = require(45); + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } -/** - * Namespace to hold static tick generation functions - * @namespace Chart.Ticks - */ -module.exports = { - /** - * Namespace to hold formatters for different types of ticks - * @namespace Chart.Ticks.formatters - */ - formatters: { - /** - * Formatter for value labels - * @method Chart.Ticks.formatters.values - * @param value the value to display - * @return {String|Array} the label to display - */ - values: function(value) { - return helpers.isArray(value) ? value : '' + value; - }, + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } - /** - * Formatter for linear numeric ticks - * @method Chart.Ticks.formatters.linear - * @param tickValue {Number} the value to be formatted - * @param index {Number} the position of the tickValue parameter in the ticks array - * @param ticks {Array<Number>} the list of ticks being converted - * @return {String} string representation of the tickValue parameter - */ - linear: function(tickValue, index, ticks) { - // If we have lots of ticks, don't use the ones - var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } - // If we have a number like 2.5 as the delta, figure out how many decimal places we need - if (Math.abs(delta) > 1) { - if (tickValue !== Math.floor(tickValue)) { - // not an integer - delta = tickValue - Math.floor(tickValue); - } - } + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - var logDelta = helpers.log10(Math.abs(delta)); - var tickString = ''; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } - if (tickValue !== 0) { - var numDecimal = -1 * Math.floor(logDelta); - numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places - tickString = tickValue.toFixed(numDecimal); - } else { - tickString = '0'; // never show decimal places for 0 - } + return value; + } - return tickString; - }, + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - logarithmic: function(tickValue, index, ticks) { - var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); + function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - if (tickValue === 0) { - return '0'; - } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { - return tickValue.toExponential(); - } - return ''; - } - } -}; + function deprecate(msg, fn) { + var firstTime = true; -},{"45":45}],35:[function(require,module,exports){ -'use strict'; + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } -var defaults = require(25); -var Element = require(26); -var helpers = require(45); + var deprecations = {}; -defaults._set('global', { - tooltips: { - enabled: true, - custom: null, - mode: 'nearest', - position: 'average', - intersect: true, - backgroundColor: 'rgba(0,0,0,0.8)', - titleFontStyle: 'bold', - titleSpacing: 2, - titleMarginBottom: 6, - titleFontColor: '#fff', - titleAlign: 'left', - bodySpacing: 2, - bodyFontColor: '#fff', - bodyAlign: 'left', - footerFontStyle: 'bold', - footerSpacing: 2, - footerMarginTop: 6, - footerFontColor: '#fff', - footerAlign: 'left', - yPadding: 6, - xPadding: 6, - caretPadding: 2, - caretSize: 5, - cornerRadius: 6, - multiKeyBackground: '#fff', - displayColors: true, - borderColor: 'rgba(0,0,0,0)', - borderWidth: 0, - callbacks: { - // Args are: (tooltipItems, data) - beforeTitle: helpers.noop, - title: function(tooltipItems, data) { - // Pick first xLabel for now - var title = ''; - var labels = data.labels; - var labelCount = labels ? labels.length : 0; + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } - if (tooltipItems.length > 0) { - var item = tooltipItems[0]; + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; - if (item.xLabel) { - title = item.xLabel; - } else if (labelCount > 0 && item.index < labelCount) { - title = labels[item.index]; - } - } + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } - return title; - }, - afterTitle: helpers.noop, + function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); + } - // Args are: (tooltipItems, data) - beforeBody: helpers.noop, + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } - // Args are: (tooltipItem, data) - beforeLabel: helpers.noop, - label: function(tooltipItem, data) { - var label = data.datasets[tooltipItem.datasetIndex].label || ''; + function Locale(config) { + if (config != null) { + this.set(config); + } + } - if (label) { - label += ': '; - } - label += tooltipItem.yLabel; - return label; - }, - labelColor: function(tooltipItem, chart) { - var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); - var activeElement = meta.data[tooltipItem.index]; - var view = activeElement._view; - return { - borderColor: view.borderColor, - backgroundColor: view.backgroundColor - }; - }, - labelTextColor: function() { - return this._options.bodyFontColor; - }, - afterLabel: helpers.noop, + var keys; - // Args are: (tooltipItems, data) - afterBody: helpers.noop, + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } - // Args are: (tooltipItems, data) - beforeFooter: helpers.noop, - footer: helpers.noop, - afterFooter: helpers.noop - } - } -}); + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; -module.exports = function(Chart) { + function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } - /** - * Helper method to merge the opacity into a color - */ - function mergeOpacity(colorString, opacity) { - var color = helpers.color(colorString); - return color.alpha(opacity * color.alpha()).rgbaString(); - } + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; - // Helper to push or concat based on if the 2nd parameter is an array or not - function pushOrConcat(base, toPush) { - if (toPush) { - if (helpers.isArray(toPush)) { - // base = base.concat(toPush); - Array.prototype.push.apply(base, toPush); - } else { - base.push(toPush); - } - } + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; - return base; - } + if (format || !formatUpper) { + return format; + } - // Private helper to create a tooltip item model - // @param element : the chart element (point, arc, bar) to create the tooltip item for - // @return : new tooltip item - function createTooltipItem(element) { - var xScale = element._xScale; - var yScale = element._yScale || element._scale; // handle radar || polarArea charts - var index = element._index; - var datasetIndex = element._datasetIndex; + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); - return { - xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', - yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', - index: index, - datasetIndex: datasetIndex, - x: element._model.x, - y: element._model.y - }; - } + return this._longDateFormat[key]; + } - /** - * Helper to get the reset model for the tooltip - * @param tooltipOpts {Object} the tooltip options - */ - function getBaseModel(tooltipOpts) { - var globalDefaults = defaults.global; - var valueOrDefault = helpers.valueOrDefault; + var defaultInvalidDate = 'Invalid date'; - return { - // Positioning - xPadding: tooltipOpts.xPadding, - yPadding: tooltipOpts.yPadding, - xAlign: tooltipOpts.xAlign, - yAlign: tooltipOpts.yAlign, + function invalidDate () { + return this._invalidDate; + } - // Body - bodyFontColor: tooltipOpts.bodyFontColor, - _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), - _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), - _bodyAlign: tooltipOpts.bodyAlign, - bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), - bodySpacing: tooltipOpts.bodySpacing, - - // Title - titleFontColor: tooltipOpts.titleFontColor, - _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), - _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), - titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), - _titleAlign: tooltipOpts.titleAlign, - titleSpacing: tooltipOpts.titleSpacing, - titleMarginBottom: tooltipOpts.titleMarginBottom, + var defaultOrdinal = '%d'; + var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - // Footer - footerFontColor: tooltipOpts.footerFontColor, - _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), - _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), - footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), - _footerAlign: tooltipOpts.footerAlign, - footerSpacing: tooltipOpts.footerSpacing, - footerMarginTop: tooltipOpts.footerMarginTop, + function ordinal (number) { + return this._ordinal.replace('%d', number); + } - // Appearance - caretSize: tooltipOpts.caretSize, - cornerRadius: tooltipOpts.cornerRadius, - backgroundColor: tooltipOpts.backgroundColor, - opacity: 0, - legendColorBackground: tooltipOpts.multiKeyBackground, - displayColors: tooltipOpts.displayColors, - borderColor: tooltipOpts.borderColor, - borderWidth: tooltipOpts.borderWidth - }; - } + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; - /** - * Get the size of the tooltip - */ - function getTooltipSize(tooltip, model) { - var ctx = tooltip._chart.ctx; - - var height = model.yPadding * 2; // Tooltip Padding - var width = 0; - - // Count of all lines in the body - var body = model.body; - var combinedBodyLength = body.reduce(function(count, bodyItem) { - return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; - }, 0); - combinedBodyLength += model.beforeBody.length + model.afterBody.length; - - var titleLineCount = model.title.length; - var footerLineCount = model.footer.length; - var titleFontSize = model.titleFontSize; - var bodyFontSize = model.bodyFontSize; - var footerFontSize = model.footerFontSize; - - height += titleLineCount * titleFontSize; // Title Lines - height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing - height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin - height += combinedBodyLength * bodyFontSize; // Body Lines - height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing - height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin - height += footerLineCount * (footerFontSize); // Footer Lines - height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing - - // Title width - var widthPadding = 0; - var maxLineWidth = function(line) { - width = Math.max(width, ctx.measureText(line).width + widthPadding); - }; + function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } - ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); - helpers.each(model.title, maxLineWidth); + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } - // Body width - ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); - helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); + var aliases = {}; - // Body lines may include some extra width due to the color box - widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; - helpers.each(body, function(bodyItem) { - helpers.each(bodyItem.before, maxLineWidth); - helpers.each(bodyItem.lines, maxLineWidth); - helpers.each(bodyItem.after, maxLineWidth); - }); + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } - // Reset back to 0 - widthPadding = 0; + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } - // Footer width - ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); - helpers.each(model.footer, maxLineWidth); + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - // Add padding - width += 2 * model.xPadding; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - return { - width: width, - height: height - }; - } + return normalizedInput; + } - /** - * Helper to get the alignment of a tooltip given the size - */ - function determineAlignment(tooltip, size) { - var model = tooltip._model; - var chart = tooltip._chart; - var chartArea = tooltip._chart.chartArea; - var xAlign = 'center'; - var yAlign = 'center'; + var priorities = {}; - if (model.y < size.height) { - yAlign = 'top'; - } else if (model.y > (chart.height - size.height)) { - yAlign = 'bottom'; - } + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } - var lf, rf; // functions to determine left, right alignment - var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart - var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges - var midX = (chartArea.left + chartArea.right) / 2; - var midY = (chartArea.top + chartArea.bottom) / 2; + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } - if (yAlign === 'center') { - lf = function(x) { - return x <= midX; - }; - rf = function(x) { - return x > midX; - }; - } else { - lf = function(x) { - return x <= (size.width / 2); - }; - rf = function(x) { - return x >= (chart.width - (size.width / 2)); - }; - } + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } - olf = function(x) { - return x + size.width + model.caretSize + model.caretPadding > chart.width; - }; - orf = function(x) { - return x - size.width - model.caretSize - model.caretPadding < 0; - }; - yf = function(y) { - return y <= midY ? 'top' : 'bottom'; - }; + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - if (lf(model.x)) { - xAlign = 'left'; + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - // Is tooltip too wide and goes over the right side of the chart.? - if (olf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } else if (rf(model.x)) { - xAlign = 'right'; + var formatFunctions = {}; - // Is tooltip too wide and goes outside left edge of canvas? - if (orf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } + var formatTokenFunctions = {}; - var opts = tooltip._options; - return { - xAlign: opts.xAlign ? opts.xAlign : xAlign, - yAlign: opts.yAlign ? opts.yAlign : yAlign - }; - } + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } - /** - * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment - */ - function getBackgroundPoint(vm, size, alignment, chart) { - // Background Position - var x = vm.x; - var y = vm.y; + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - var caretSize = vm.caretSize; - var caretPadding = vm.caretPadding; - var cornerRadius = vm.cornerRadius; - var xAlign = alignment.xAlign; - var yAlign = alignment.yAlign; - var paddingAndSize = caretSize + caretPadding; - var radiusAndPadding = cornerRadius + caretPadding; - - if (xAlign === 'right') { - x -= size.width; - } else if (xAlign === 'center') { - x -= (size.width / 2); - if (x + size.width > chart.width) { - x = chart.width - size.width; - } - if (x < 0) { - x = 0; - } - } + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - if (yAlign === 'top') { - y += paddingAndSize; - } else if (yAlign === 'bottom') { - y -= size.height + paddingAndSize; - } else { - y -= (size.height / 2); - } + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - if (yAlign === 'center') { - if (xAlign === 'left') { - x += paddingAndSize; - } else if (xAlign === 'right') { - x -= paddingAndSize; - } - } else if (xAlign === 'left') { - x -= radiusAndPadding; - } else if (xAlign === 'right') { - x += radiusAndPadding; - } + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - return { - x: x, - y: y - }; - } + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - Chart.Tooltip = Element.extend({ - initialize: function() { - this._model = getBaseModel(this._options); - this._lastActive = []; - }, + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - // Get the title - // Args are: (tooltipItem, data) - getTitle: function() { - var me = this; - var opts = me._options; - var callbacks = opts.callbacks; + return formatFunctions[format](m); + } - var beforeTitle = callbacks.beforeTitle.apply(me, arguments); - var title = callbacks.title.apply(me, arguments); - var afterTitle = callbacks.afterTitle.apply(me, arguments); + function expandFormat(format, locale) { + var i = 5; - var lines = []; - lines = pushOrConcat(lines, beforeTitle); - lines = pushOrConcat(lines, title); - lines = pushOrConcat(lines, afterTitle); + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - return lines; - }, + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - // Args are: (tooltipItem, data) - getBeforeBody: function() { - var lines = this._options.callbacks.beforeBody.apply(this, arguments); - return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; - }, + return format; + } - // Args are: (tooltipItem, data) - getBody: function(tooltipItems, data) { - var me = this; - var callbacks = me._options.callbacks; - var bodyItems = []; - - helpers.each(tooltipItems, function(tooltipItem) { - var bodyItem = { - before: [], - lines: [], - after: [] - }; - pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data)); - pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); - pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data)); + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - bodyItems.push(bodyItem); - }); + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf - return bodyItems; - }, + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z - // Args are: (tooltipItem, data) - getAfterBody: function() { - var lines = this._options.callbacks.afterBody.apply(this, arguments); - return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; - }, + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - // Get the footer and beforeFooter and afterFooter lines - // Args are: (tooltipItem, data) - getFooter: function() { - var me = this; - var callbacks = me._options.callbacks; + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; - var beforeFooter = callbacks.beforeFooter.apply(me, arguments); - var footer = callbacks.footer.apply(me, arguments); - var afterFooter = callbacks.afterFooter.apply(me, arguments); + var regexes = {}; - var lines = []; - lines = pushOrConcat(lines, beforeFooter); - lines = pushOrConcat(lines, footer); - lines = pushOrConcat(lines, afterFooter); + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } - return lines; - }, + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } - update: function(changed) { - var me = this; - var opts = me._options; + return regexes[token](config._strict, config._locale); + } - // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition - // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time - // which breaks any animations. - var existingModel = me._model; - var model = me._model = getBaseModel(opts); - var active = me._active; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } - var data = me._data; + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // In the case where active.length === 0 we need to keep these at existing values for good animations - var alignment = { - xAlign: existingModel.xAlign, - yAlign: existingModel.yAlign - }; - var backgroundPoint = { - x: existingModel.x, - y: existingModel.y - }; - var tooltipSize = { - width: existingModel.width, - height: existingModel.height - }; - var tooltipPosition = { - x: existingModel.caretX, - y: existingModel.caretY - }; + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } - var i, len; + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } - if (active.length) { - model.opacity = 1; + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); - var labelColors = []; - var labelTextColors = []; - tooltipPosition = Chart.Tooltip.positioners[opts.position].call(me, active, me._eventPosition); + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); - var tooltipItems = []; - for (i = 0, len = active.length; i < len; ++i) { - tooltipItems.push(createTooltipItem(active[i])); - } + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - // If the user provided a filter function, use it to modify the tooltip items - if (opts.filter) { - tooltipItems = tooltipItems.filter(function(a) { - return opts.filter(a, data); - }); - } + // ALIASES - // If the user provided a sorting function, use it to modify the tooltip items - if (opts.itemSort) { - tooltipItems = tooltipItems.sort(function(a, b) { - return opts.itemSort(a, b, data); - }); - } + addUnitAlias('year', 'y'); - // Determine colors for boxes - helpers.each(tooltipItems, function(tooltipItem) { - labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); - labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); - }); + // PRIORITIES + addUnitPriority('year', 1); - // Build the Text Lines - model.title = me.getTitle(tooltipItems, data); - model.beforeBody = me.getBeforeBody(tooltipItems, data); - model.body = me.getBody(tooltipItems, data); - model.afterBody = me.getAfterBody(tooltipItems, data); - model.footer = me.getFooter(tooltipItems, data); - - // Initial positioning and colors - model.x = Math.round(tooltipPosition.x); - model.y = Math.round(tooltipPosition.y); - model.caretPadding = opts.caretPadding; - model.labelColors = labelColors; - model.labelTextColors = labelTextColors; - - // data points - model.dataPoints = tooltipItems; - - // We need to determine alignment of the tooltip - tooltipSize = getTooltipSize(this, model); - alignment = determineAlignment(this, tooltipSize); - // Final Size and Position - backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); - } else { - model.opacity = 0; - } + // PARSING - model.xAlign = alignment.xAlign; - model.yAlign = alignment.yAlign; - model.x = backgroundPoint.x; - model.y = backgroundPoint.y; - model.width = tooltipSize.width; - model.height = tooltipSize.height; + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); - // Point where the caret on the tooltip points to - model.caretX = tooltipPosition.x; - model.caretY = tooltipPosition.y; + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); - me._model = model; + // HELPERS - if (changed && opts.custom) { - opts.custom.call(me, model); - } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - return me; - }, - drawCaret: function(tooltipPoint, size) { - var ctx = this._chart.ctx; - var vm = this._view; - var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); - - ctx.lineTo(caretPosition.x1, caretPosition.y1); - ctx.lineTo(caretPosition.x2, caretPosition.y2); - ctx.lineTo(caretPosition.x3, caretPosition.y3); - }, - getCaretPosition: function(tooltipPoint, size, vm) { - var x1, x2, x3, y1, y2, y3; - var caretSize = vm.caretSize; - var cornerRadius = vm.cornerRadius; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var ptX = tooltipPoint.x; - var ptY = tooltipPoint.y; - var width = size.width; - var height = size.height; - - if (yAlign === 'center') { - y2 = ptY + (height / 2); - - if (xAlign === 'left') { - x1 = ptX; - x2 = x1 - caretSize; - x3 = x1; - - y1 = y2 + caretSize; - y3 = y2 - caretSize; - } else { - x1 = ptX + width; - x2 = x1 + caretSize; - x3 = x1; + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - y1 = y2 - caretSize; - y3 = y2 + caretSize; - } - } else { - if (xAlign === 'left') { - x2 = ptX + cornerRadius + (caretSize); - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else if (xAlign === 'right') { - x2 = ptX + width - cornerRadius - caretSize; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else { - x2 = vm.caretX; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } - if (yAlign === 'top') { - y1 = ptY; - y2 = y1 - caretSize; - y3 = y1; - } else { - y1 = ptY + height; - y2 = y1 + caretSize; - y3 = y1; - // invert drawing order - var tmp = x3; - x3 = x1; - x1 = tmp; - } - } - return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; - }, - drawTitle: function(pt, vm, ctx, opacity) { - var title = vm.title; + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - if (title.length) { - ctx.textAlign = vm._titleAlign; - ctx.textBaseline = 'top'; + // MOMENTS - var titleFontSize = vm.titleFontSize; - var titleSpacing = vm.titleSpacing; + var getSetYear = makeGetSet('FullYear', true); - ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); - ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); + function getIsLeapYear () { + return isLeapYear(this.year()); + } - var i, len; - for (i = 0, len = title.length; i < len; ++i) { - ctx.fillText(title[i], pt.x, pt.y); - pt.y += titleFontSize + titleSpacing; // Line Height and spacing + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } - if (i + 1 === title.length) { - pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing - } - } - } - }, - drawBody: function(pt, vm, ctx, opacity) { - var bodyFontSize = vm.bodyFontSize; - var bodySpacing = vm.bodySpacing; - var body = vm.body; - - ctx.textAlign = vm._bodyAlign; - ctx.textBaseline = 'top'; - ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); - - // Before Body - var xLinePadding = 0; - var fillLineOfText = function(line) { - ctx.fillText(line, pt.x + xLinePadding, pt.y); - pt.y += bodyFontSize + bodySpacing; - }; + function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } - // Before body lines - ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); - helpers.each(vm.beforeBody, fillLineOfText); - - var drawColorBoxes = vm.displayColors; - xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; - - // Draw body lines now - helpers.each(body, function(bodyItem, i) { - var textColor = mergeOpacity(vm.labelTextColors[i], opacity); - ctx.fillStyle = textColor; - helpers.each(bodyItem.before, fillLineOfText); - - helpers.each(bodyItem.lines, function(line) { - // Draw Legend-like boxes if needed - if (drawColorBoxes) { - // Fill a white rect so that colours merge nicely if the opacity is < 1 - ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); - ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); - - // Border - ctx.lineWidth = 1; - ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); - ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); - - // Inner square - ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); - ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); - ctx.fillStyle = textColor; - } + function set$1 (mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); + } + else { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + } - fillLineOfText(line); - }); + // MOMENTS + + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } - helpers.each(bodyItem.after, fillLineOfText); - }); + function mod(n, x) { + return ((n % x) + x) % x; + } - // Reset back to 0 for after body - xLinePadding = 0; + var indexOf; - // After body lines - helpers.each(vm.afterBody, fillLineOfText); - pt.y -= bodySpacing; // Remove last body spacing - }, - drawFooter: function(pt, vm, ctx, opacity) { - var footer = vm.footer; + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } - if (footer.length) { - pt.y += vm.footerMarginTop; + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + } - ctx.textAlign = vm._footerAlign; - ctx.textBaseline = 'top'; + // FORMATTING - ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); - ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); - helpers.each(footer, function(line) { - ctx.fillText(line, pt.x, pt.y); - pt.y += vm.footerFontSize + vm.footerSpacing; - }); - } - }, - drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { - ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); - ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); - ctx.lineWidth = vm.borderWidth; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var x = pt.x; - var y = pt.y; - var width = tooltipSize.width; - var height = tooltipSize.height; - var radius = vm.cornerRadius; + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); - ctx.beginPath(); - ctx.moveTo(x + radius, y); - if (yAlign === 'top') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - if (yAlign === 'center' && xAlign === 'right') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - if (yAlign === 'bottom') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - if (yAlign === 'center' && xAlign === 'left') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); - ctx.fill(); + // ALIASES - if (vm.borderWidth > 0) { - ctx.stroke(); - } - }, - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; + addUnitAlias('month', 'M'); - if (vm.opacity === 0) { - return; - } + // PRIORITY - var tooltipSize = { - width: vm.width, - height: vm.height - }; - var pt = { - x: vm.x, - y: vm.y - }; + addUnitPriority('month', 8); - // IE11/Edge does not like very small opacities, so snap to 0 - var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; + // PARSING - // Truthy/falsey value for empty tooltip - var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); - if (this._options.enabled && hasTooltipContent) { - // Draw Background - this.drawBackground(pt, vm, ctx, tooltipSize, opacity); + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); - // Draw Title, Body, and Footer - pt.x += vm.xPadding; - pt.y += vm.yPadding; + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); - // Titles - this.drawTitle(pt, vm, ctx, opacity); + // LOCALES - // Body - this.drawBody(pt, vm, ctx, opacity); + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } - // Footer - this.drawFooter(pt, vm, ctx, opacity); - } - }, + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - * @returns {Boolean} true if the tooltip changed - */ - handleEvent: function(e) { - var me = this; - var options = me._options; - var changed = false; + function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } - me._lastActive = me._lastActive || []; + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } - // Find Active Elements for tooltips - if (e.type === 'mouseout') { - me._active = []; - } else { - me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); - } + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; - // Remember Last Actives - changed = !helpers.arrayEquals(me._active, me._lastActive); + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } - // Only handle target event on tooltip change - if (changed) { - me._lastActive = me._active; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - if (options.enabled || options.custom) { - me._eventPosition = { - x: e.x, - y: e.y - }; + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } - me.update(true); - me.pivot(); - } - } + // MOMENTS - return changed; - } - }); + function setMonth (mom, value) { + var dayOfMonth; - /** - * @namespace Chart.Tooltip.positioners - */ - Chart.Tooltip.positioners = { - /** - * Average mode places the tooltip at the average position of the elements shown - * @function Chart.Tooltip.positioners.average - * @param elements {ChartElement[]} the elements being displayed in the tooltip - * @returns {Point} tooltip position - */ - average: function(elements) { - if (!elements.length) { - return false; - } + if (!mom.isValid()) { + // No op + return mom; + } - var i, len; - var x = 0; - var y = 0; - var count = 0; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var pos = el.tooltipPosition(); - x += pos.x; - y += pos.y; - ++count; - } - } + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } - return { - x: Math.round(x / count), - y: Math.round(y / count) - }; - }, + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * Gets the tooltip position nearest of the item nearest to the event position - * @function Chart.Tooltip.positioners.nearest - * @param elements {Chart.Element[]} the tooltip elements - * @param eventPosition {Point} the position of the event in canvas coordinates - * @returns {Point} the tooltip position - */ - nearest: function(elements, eventPosition) { - var x = eventPosition.x; - var y = eventPosition.y; - var minDistance = Number.POSITIVE_INFINITY; - var i, len, nearestElement; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var center = el.getCenterPoint(); - var d = helpers.distanceBetweenPoints(eventPosition, center); - - if (d < minDistance) { - minDistance = d; - nearestElement = el; - } - } - } + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } + } - if (nearestElement) { - var tp = nearestElement.tooltipPosition(); - x = tp.x; - y = tp.y; - } + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } - return { - x: x, - y: y - }; - } - }; -}; + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } -},{"25":25,"26":26,"45":45}],36:[function(require,module,exports){ -'use strict'; + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } -var defaults = require(25); -var Element = require(26); -var helpers = require(45); + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } -defaults._set('global', { - elements: { - arc: { - backgroundColor: defaults.global.defaultColor, - borderColor: '#fff', - borderWidth: 2 - } - } -}); + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } -module.exports = Element.extend({ - inLabelRange: function(mouseX) { - var vm = this._view; + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } - if (vm) { - return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); - } - return false; - }, + function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date; + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + date = new Date(y + 400, m, d, h, M, s, ms); + if (isFinite(date.getFullYear())) { + date.setFullYear(y); + } + } else { + date = new Date(y, m, d, h, M, s, ms); + } - inRange: function(chartX, chartY) { - var vm = this._view; + return date; + } - if (vm) { - var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); - var angle = pointRelativePosition.angle; - var distance = pointRelativePosition.distance; + function createUTCDate (y) { + var date; + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + var args = Array.prototype.slice.call(arguments); + // preserve leap years using a full 400 year cycle, then reset + args[0] = y + 400; + date = new Date(Date.UTC.apply(null, args)); + if (isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + } else { + date = new Date(Date.UTC.apply(null, arguments)); + } - // Sanitise angle range - var startAngle = vm.startAngle; - var endAngle = vm.endAngle; - while (endAngle < startAngle) { - endAngle += 2.0 * Math.PI; - } - while (angle > endAngle) { - angle -= 2.0 * Math.PI; - } - while (angle < startAngle) { - angle += 2.0 * Math.PI; - } + return date; + } - // Check if within the range of the open/close angle - var betweenAngles = (angle >= startAngle && angle <= endAngle); - var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - return (betweenAngles && withinRadius); - } - return false; - }, + return -fwdlw + fwd - 1; + } - getCenterPoint: function() { - var vm = this._view; - var halfAngle = (vm.startAngle + vm.endAngle) / 2; - var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; - return { - x: vm.x + Math.cos(halfAngle) * halfRadius, - y: vm.y + Math.sin(halfAngle) * halfRadius - }; - }, + // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } - getArea: function() { - var vm = this._view; - return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); - }, + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } - tooltipPosition: function() { - var vm = this._view; - var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); - var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } - return { - x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), - y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) - }; - }, + return { + week: resWeek, + year: resYear + }; + } - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var sA = vm.startAngle; - var eA = vm.endAngle; + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } - ctx.beginPath(); + // FORMATTING - ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - ctx.closePath(); - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; + // ALIASES - ctx.fillStyle = vm.backgroundColor; + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); - ctx.fill(); - ctx.lineJoin = 'bevel'; + // PRIORITIES - if (vm.borderWidth) { - ctx.stroke(); - } - } -}); + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); -},{"25":25,"26":26,"45":45}],37:[function(require,module,exports){ -'use strict'; + // PARSING -var defaults = require(25); -var Element = require(26); -var helpers = require(45); + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); -var globalDefaults = defaults.global; + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); -defaults._set('global', { - elements: { - line: { - tension: 0.4, - backgroundColor: globalDefaults.defaultColor, - borderWidth: 3, - borderColor: globalDefaults.defaultColor, - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - capBezierPoints: true, - fill: true, // do we fill in the area between the line and its base axis - } - } -}); + // HELPERS -module.exports = Element.extend({ - draw: function() { - var me = this; - var vm = me._view; - var ctx = me._chart.ctx; - var spanGaps = vm.spanGaps; - var points = me._children.slice(); // clone array - var globalOptionLineElements = globalDefaults.elements.line; - var lastDrawnIndex = -1; - var index, current, previous, currentVM; + // LOCALES - // If we are looping, adding the first point again - if (me._loop && points.length) { - points.push(points[0]); - } + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } - ctx.save(); + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 6th is the first week of the year. + }; - // Stroke Line Options - ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + function localeFirstDayOfWeek () { + return this._week.dow; + } - // IE 9 and 10 do not support line dash - if (ctx.setLineDash) { - ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); - } + function localeFirstDayOfYear () { + return this._week.doy; + } - ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; - ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; - ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; - ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + // MOMENTS - // Stroke Line - ctx.beginPath(); - lastDrawnIndex = -1; + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } - for (index = 0; index < points.length; ++index) { - current = points[index]; - previous = helpers.previousItem(points, index); - currentVM = current._view; + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } - // First point moves to it's starting position no matter what - if (index === 0) { - if (!currentVM.skip) { - ctx.moveTo(currentVM.x, currentVM.y); - lastDrawnIndex = index; - } - } else { - previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + // FORMATTING - if (!currentVM.skip) { - if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { - // There was a gap and this is the first point after the gap - ctx.moveTo(currentVM.x, currentVM.y); - } else { - // Line to next point - helpers.canvas.lineTo(ctx, previous._view, current._view); - } - lastDrawnIndex = index; - } - } - } + addFormatToken('d', 0, 'do', 'day'); - ctx.stroke(); - ctx.restore(); - } -}); + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); -},{"25":25,"26":26,"45":45}],38:[function(require,module,exports){ -'use strict'; + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); -var defaults = require(25); -var Element = require(26); -var helpers = require(45); + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); -var defaultColor = defaults.global.defaultColor; + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); -defaults._set('global', { - elements: { - point: { - radius: 3, - pointStyle: 'circle', - backgroundColor: defaultColor, - borderColor: defaultColor, - borderWidth: 1, - // Hover - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1 - } - } -}); + // ALIASES -function xRange(mouseX) { - var vm = this._view; - return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; -} + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); -function yRange(mouseY) { - var vm = this._view; - return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; -} + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); -module.exports = Element.extend({ - inRange: function(mouseX, mouseY) { - var vm = this._view; - return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; - }, + // PARSING - inLabelRange: xRange, - inXRange: xRange, - inYRange: yRange, + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); - getCenterPoint: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - }, + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); - getArea: function() { - return Math.PI * Math.pow(this._view.radius, 2); - }, + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y, - padding: vm.radius + vm.borderWidth - }; - }, + // HELPERS - draw: function(chartArea) { - var vm = this._view; - var model = this._model; - var ctx = this._chart.ctx; - var pointStyle = vm.pointStyle; - var radius = vm.radius; - var x = vm.x; - var y = vm.y; - var color = helpers.color; - var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) - var ratio = 0; + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } - if (vm.skip) { - return; - } + if (!isNaN(input)) { + return parseInt(input, 10); + } - ctx.strokeStyle = vm.borderColor || defaultColor; - ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); - ctx.fillStyle = vm.backgroundColor || defaultColor; - - // Cliping for Points. - // going out from inner charArea? - if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) { - // Point fade out - if (model.x < chartArea.left) { - ratio = (x - model.x) / (chartArea.left - model.x); - } else if (chartArea.right * errMargin < model.x) { - ratio = (model.x - x) / (model.x - chartArea.right); - } else if (model.y < chartArea.top) { - ratio = (y - model.y) / (chartArea.top - model.y); - } else if (chartArea.bottom * errMargin < model.y) { - ratio = (model.y - y) / (model.y - chartArea.bottom); - } - ratio = Math.round(ratio * 100) / 100; - ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString(); - ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString(); - } + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } - helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y); - } -}); + return null; + } -},{"25":25,"26":26,"45":45}],39:[function(require,module,exports){ -'use strict'; + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } -var defaults = require(25); -var Element = require(26); + // LOCALES + function shiftWeekdays (ws, n) { + return ws.slice(n, 7).concat(ws.slice(0, n)); + } -defaults._set('global', { - elements: { - rectangle: { - backgroundColor: defaults.global.defaultColor, - borderColor: defaults.global.defaultColor, - borderSkipped: 'bottom', - borderWidth: 0 - } - } -}); + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + var weekdays = isArray(this._weekdays) ? this._weekdays : + this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone']; + return (m === true) ? shiftWeekdays(weekdays, this._week.dow) + : (m) ? weekdays[m.day()] : weekdays; + } -function isVertical(bar) { - return bar._view.width !== undefined; -} + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow) + : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; + } -/** - * Helper function to get the bounds of the bar regardless of the orientation - * @param bar {Chart.Element.Rectangle} the bar - * @return {Bounds} bounds of the bar - * @private - */ -function getBarBounds(bar) { - var vm = bar._view; - var x1, x2, y1, y2; - - if (isVertical(bar)) { - // vertical - var halfWidth = vm.width / 2; - x1 = vm.x - halfWidth; - x2 = vm.x + halfWidth; - y1 = Math.min(vm.y, vm.base); - y2 = Math.max(vm.y, vm.base); - } else { - // horizontal bar - var halfHeight = vm.height / 2; - x1 = Math.min(vm.x, vm.base); - x2 = Math.max(vm.x, vm.base); - y1 = vm.y - halfHeight; - y2 = vm.y + halfHeight; - } + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow) + : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + } - return { - left: x1, - top: y1, - right: x2, - bottom: y2 - }; -} + function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } -module.exports = Element.extend({ - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var left, right, top, bottom, signX, signY, borderSkipped; - var borderWidth = vm.borderWidth; - - if (!vm.horizontal) { - // bar - left = vm.x - vm.width / 2; - right = vm.x + vm.width / 2; - top = vm.y; - bottom = vm.base; - signX = 1; - signY = bottom > top ? 1 : -1; - borderSkipped = vm.borderSkipped || 'bottom'; - } else { - // horizontal bar - left = vm.base; - right = vm.x; - top = vm.y - vm.height / 2; - bottom = vm.y + vm.height / 2; - signX = right > left ? 1 : -1; - signY = 1; - borderSkipped = vm.borderSkipped || 'left'; - } - - // Canvas doesn't allow us to stroke inside the width so we can - // adjust the sizes to fit if we're setting a stroke on the line - if (borderWidth) { - // borderWidth shold be less than bar width and bar height. - var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); - borderWidth = borderWidth > barSize ? barSize : borderWidth; - var halfStroke = borderWidth / 2; - // Adjust borderWidth when bar top position is near vm.base(zero). - var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); - var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); - var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); - var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); - // not become a vertical line? - if (borderLeft !== borderRight) { - top = borderTop; - bottom = borderBottom; - } - // not become a horizontal line? - if (borderTop !== borderBottom) { - left = borderLeft; - right = borderRight; - } - } + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } - ctx.beginPath(); - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = borderWidth; - - // Corner points, from bottom-left to bottom-right clockwise - // | 1 2 | - // | 0 3 | - var corners = [ - [left, bottom], - [left, top], - [right, top], - [right, bottom] - ]; + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; - // Find first (starting) corner with fallback to 'bottom' - var borders = ['bottom', 'left', 'top', 'right']; - var startCorner = borders.indexOf(borderSkipped, 0); - if (startCorner === -1) { - startCorner = 0; - } + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } - function cornerAt(index) { - return corners[(startCorner + index) % 4]; - } + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } - // Draw rectangle from 'startCorner' - var corner = cornerAt(0); - ctx.moveTo(corner[0], corner[1]); + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already - for (var i = 1; i < 4; i++) { - corner = cornerAt(i); - ctx.lineTo(corner[0], corner[1]); - } + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } - ctx.fill(); - if (borderWidth) { - ctx.stroke(); - } - }, + // MOMENTS - height: function() { - var vm = this._view; - return vm.base - vm.y; - }, + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } - inRange: function(mouseX, mouseY) { - var inRange = false; + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } - if (this._view) { - var bounds = getBarBounds(this); - inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; - } + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } - return inRange; - }, + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. - inLabelRange: function(mouseX, mouseY) { - var me = this; - if (!me._view) { - return false; - } + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } - var inRange = false; - var bounds = getBarBounds(me); + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } - if (isVertical(me)) { - inRange = mouseX >= bounds.left && mouseX <= bounds.right; - } else { - inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; - } + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } - return inRange; - }, + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } - inXRange: function(mouseX) { - var bounds = getBarBounds(this); - return mouseX >= bounds.left && mouseX <= bounds.right; - }, - inYRange: function(mouseY) { - var bounds = getBarBounds(this); - return mouseY >= bounds.top && mouseY <= bounds.bottom; - }, + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } - getCenterPoint: function() { - var vm = this._view; - var x, y; - if (isVertical(this)) { - x = vm.x; - y = (vm.y + vm.base) / 2; - } else { - x = (vm.x + vm.base) / 2; - y = vm.y; - } + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } - return {x: x, y: y}; - }, + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; - getArea: function() { - var vm = this._view; - return vm.width * Math.abs(vm.y - vm.base); - }, + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - } -}); + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } -},{"25":25,"26":26}],40:[function(require,module,exports){ -'use strict'; + function kFormat() { + return this.hours() || 24; + } -module.exports = {}; -module.exports.Arc = require(36); -module.exports.Line = require(37); -module.exports.Point = require(38); -module.exports.Rectangle = require(39); + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); -},{"36":36,"37":37,"38":38,"39":39}],41:[function(require,module,exports){ -'use strict'; + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); -var helpers = require(42); + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); -/** - * @namespace Chart.helpers.canvas - */ -var exports = module.exports = { - /** - * Clears the entire canvas associated to the given `chart`. - * @param {Chart} chart - The chart for which to clear the canvas. - */ - clear: function(chart) { - chart.ctx.clearRect(0, 0, chart.width, chart.height); - }, + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); - /** - * Creates a "path" for a rectangle with rounded corners at position (x, y) with a - * given size (width, height) and the same `radius` for all corners. - * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. - * @param {Number} x - The x axis of the coordinate for the rectangle starting point. - * @param {Number} y - The y axis of the coordinate for the rectangle starting point. - * @param {Number} width - The rectangle's width. - * @param {Number} height - The rectangle's height. - * @param {Number} radius - The rounded amount (in pixels) for the four corners. - * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? - */ - roundedRect: function(ctx, x, y, width, height, radius) { - if (radius) { - var rx = Math.min(radius, width / 2); - var ry = Math.min(radius, height / 2); - - ctx.moveTo(x + rx, y); - ctx.lineTo(x + width - rx, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + ry); - ctx.lineTo(x + width, y + height - ry); - ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); - ctx.lineTo(x + rx, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - ry); - ctx.lineTo(x, y + ry); - ctx.quadraticCurveTo(x, y, x + rx, y); - } else { - ctx.rect(x, y, width, height); - } - }, + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); - drawPoint: function(ctx, style, radius, x, y) { - var type, edgeLength, xOffset, yOffset, height, size; + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } - if (style && typeof style === 'object') { - type = style.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); - return; - } - } + meridiem('a', true); + meridiem('A', false); - if (isNaN(radius) || radius <= 0) { - return; - } + // ALIASES - switch (style) { - // Default includes circle - default: - ctx.beginPath(); - ctx.arc(x, y, radius, 0, Math.PI * 2); - ctx.closePath(); - ctx.fill(); - break; - case 'triangle': - ctx.beginPath(); - edgeLength = 3 * radius / Math.sqrt(3); - height = edgeLength * Math.sqrt(3) / 2; - ctx.moveTo(x - edgeLength / 2, y + height / 3); - ctx.lineTo(x + edgeLength / 2, y + height / 3); - ctx.lineTo(x, y - 2 * height / 3); - ctx.closePath(); - ctx.fill(); - break; - case 'rect': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.fillRect(x - size, y - size, 2 * size, 2 * size); - ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); - break; - case 'rectRounded': - var offset = radius / Math.SQRT2; - var leftX = x - offset; - var topY = y - offset; - var sideSize = Math.SQRT2 * radius; - ctx.beginPath(); - this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2); - ctx.closePath(); - ctx.fill(); - break; - case 'rectRot': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y - size); - ctx.closePath(); - ctx.fill(); - break; - case 'cross': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'crossRot': - ctx.beginPath(); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'star': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'line': - ctx.beginPath(); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'dash': - ctx.beginPath(); - ctx.moveTo(x, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - } + addUnitAlias('hour', 'h'); - ctx.stroke(); - }, + // PRIORITY + addUnitPriority('hour', 13); - clipArea: function(ctx, area) { - ctx.save(); - ctx.beginPath(); - ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); - ctx.clip(); - }, + // PARSING - unclipArea: function(ctx) { - ctx.restore(); - }, + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } - lineTo: function(ctx, previous, target, flip) { - if (target.steppedLine) { - if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { - ctx.lineTo(previous.x, target.y); - } else { - ctx.lineTo(target.x, previous.y); - } - ctx.lineTo(target.x, target.y); - return; - } + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); - if (!target.tension) { - ctx.lineTo(target.x, target.y); - return; - } + // LOCALES - ctx.bezierCurveTo( - flip ? previous.controlPointPreviousX : previous.controlPointNextX, - flip ? previous.controlPointPreviousY : previous.controlPointNextY, - flip ? target.controlPointNextX : target.controlPointPreviousX, - flip ? target.controlPointNextY : target.controlPointPreviousY, - target.x, - target.y); - } -}; + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } -// DEPRECATIONS + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } -/** - * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. - * @namespace Chart.helpers.clear - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.clear = exports.clear; -/** - * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. - * @namespace Chart.helpers.drawRoundedRectangle - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.drawRoundedRectangle = function(ctx) { - ctx.beginPath(); - exports.roundedRect.apply(exports, arguments); - ctx.closePath(); -}; + // MOMENTS -},{"42":42}],42:[function(require,module,exports){ -'use strict'; + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); -/** - * @namespace Chart.helpers - */ -var helpers = { - /** - * An empty function that can be used, for example, for optional callback. - */ - noop: function() {}, + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, - /** - * Returns a unique id, sequentially generated from a global variable. - * @returns {Number} - * @function - */ - uid: (function() { - var id = 0; - return function() { - return id++; - }; - }()), + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, - /** - * Returns true if `value` is neither null nor undefined, else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @since 2.7.0 - */ - isNullOrUndef: function(value) { - return value === null || typeof value === 'undefined'; - }, + week: defaultLocaleWeek, - /** - * Returns true if `value` is an array, else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @function - */ - isArray: Array.isArray ? Array.isArray : function(value) { - return Object.prototype.toString.call(value) === '[object Array]'; - }, + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, - /** - * Returns true if `value` is an object (excluding null), else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @since 2.7.0 - */ - isObject: function(value) { - return value !== null && Object.prototype.toString.call(value) === '[object Object]'; - }, + meridiemParse: defaultLocaleMeridiemParse + }; - /** - * Returns `value` if defined, else returns `defaultValue`. - * @param {*} value - The value to return if defined. - * @param {*} defaultValue - The value to return if `value` is undefined. - * @returns {*} - */ - valueOrDefault: function(value, defaultValue) { - return typeof value === 'undefined' ? defaultValue : value; - }, + // internal storage for locale config files + var locales = {}; + var localeFamilies = {}; + var globalLocale; - /** - * Returns value at the given `index` in array if defined, else returns `defaultValue`. - * @param {Array} value - The array to lookup for value at `index`. - * @param {Number} index - The index in `value` to lookup for value. - * @param {*} defaultValue - The value to return if `value[index]` is undefined. - * @returns {*} - */ - valueAtIndexOrDefault: function(value, index, defaultValue) { - return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); - }, + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - /** - * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the - * value returned by `fn`. If `fn` is not a function, this method returns undefined. - * @param {Function} fn - The function to call. - * @param {Array|undefined|null} args - The arguments with which `fn` should be called. - * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. - * @returns {*} - */ - callback: function(fn, args, thisArg) { - if (fn && typeof fn.call === 'function') { - return fn.apply(thisArg, args); - } - }, + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return globalLocale; + } - /** - * Note(SB) for performance sake, this method should only be used when loopable type - * is unknown or in none intensive code (not called often and small loopable). Else - * it's preferable to use a regular for() loop and save extra function calls. - * @param {Object|Array} loopable - The object or array to be iterated. - * @param {Function} fn - The function to call for each item. - * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. - * @param {Boolean} [reverse] - If true, iterates backward on the loopable. - */ - each: function(loopable, fn, thisArg, reverse) { - var i, len, keys; - if (helpers.isArray(loopable)) { - len = loopable.length; - if (reverse) { - for (i = len - 1; i >= 0; i--) { - fn.call(thisArg, loopable[i], i); - } - } else { - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[i], i); - } - } - } else if (helpers.isObject(loopable)) { - keys = Object.keys(loopable); - len = keys.length; - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[keys[i]], keys[i]); - } - } - }, + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && ('object' !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + var aliasedRequire = commonjsRequire; + aliasedRequire('./locale/' + name); + getSetGlobalLocale(oldLocale); + } catch (e) {} + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } - /** - * Returns true if the `a0` and `a1` arrays have the same content, else returns false. - * @see http://stackoverflow.com/a/14853974 - * @param {Array} a0 - The array to compare - * @param {Array} a1 - The array to compare - * @returns {Boolean} - */ - arrayEquals: function(a0, a1) { - var i, ilen, v0, v1; + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + else { + if ((typeof console !== 'undefined') && console.warn) { + //warn user if arguments are passed but the locale could not be set + console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + } + } + } - if (!a0 || !a1 || a0.length !== a1.length) { - return false; - } + return globalLocale._abbr; + } - for (i = 0, ilen = a0.length; i < ilen; ++i) { - v0 = a0[i]; - v1 = a1[i]; + function defineLocale (name, config) { + if (config !== null) { + var locale, parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale = loadLocale(config.parentLocale); + if (locale != null) { + parentConfig = locale._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); - if (v0 instanceof Array && v1 instanceof Array) { - if (!helpers.arrayEquals(v0, v1)) { - return false; - } - } else if (v0 !== v1) { - // NOTE: two different object instances will never be equal: {x:20} != {x:20} - return false; - } - } + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } - return true; - }, + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); - /** - * Returns a deep copy of `source` without keeping references on objects and arrays. - * @param {*} source - The value to clone. - * @returns {*} - */ - clone: function(source) { - if (helpers.isArray(source)) { - return source.map(helpers.clone); - } - if (helpers.isObject(source)) { - var target = {}; - var keys = Object.keys(source); - var klen = keys.length; - var k = 0; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } - for (; k < klen; ++k) { - target[keys[k]] = helpers.clone(source[keys[k]]); - } + function updateLocale(name, config) { + if (config != null) { + var locale, tmpLocale, parentConfig = baseConfig; + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; - return target; - } + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } - return source; - }, + // returns locale data + function getLocale (key) { + var locale; - /** - * The default merger when Chart.helpers.merge is called without merger option. - * Note(SB): this method is also used by configMerge and scaleMerge as fallback. - * @private - */ - _merger: function(key, target, source, options) { - var tval = target[key]; - var sval = source[key]; + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.merge(tval, sval, options); - } else { - target[key] = helpers.clone(sval); - } - }, + if (!key) { + return globalLocale; + } - /** - * Merges source[key] in target[key] only if target[key] is undefined. - * @private - */ - _mergerIf: function(key, target, source) { - var tval = target[key]; - var sval = source[key]; + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.mergeIf(tval, sval); - } else if (!target.hasOwnProperty(key)) { - target[key] = helpers.clone(sval); - } - }, + return chooseLocale(key); + } - /** - * Recursively deep copies `source` properties into `target` with the given `options`. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {Object} target - The target object in which all sources are merged into. - * @param {Object|Array(Object)} source - Object(s) to merge into `target`. - * @param {Object} [options] - Merging options: - * @param {Function} [options.merger] - The merge method (key, target, source, options) - * @returns {Object} The `target` object. - */ - merge: function(target, source, options) { - var sources = helpers.isArray(source) ? source : [source]; - var ilen = sources.length; - var merge, i, keys, klen, k; + function listLocales() { + return keys(locales); + } - if (!helpers.isObject(target)) { - return target; - } + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } - options = options || {}; - merge = options.merger || helpers._merger; + getParsingFlags(m).overflow = overflow; + } - for (i = 0; i < ilen; ++i) { - source = sources[i]; - if (!helpers.isObject(source)) { - continue; - } + return m; + } - keys = Object.keys(source); - for (k = 0, klen = keys.length; k < klen; ++k) { - merge(keys[k], target, source, options); - } - } + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } - return target; - }, + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } - /** - * Recursively deep copies `source` properties into `target` *only* if not defined in target. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {Object} target - The target object in which all sources are merged into. - * @param {Object|Array(Object)} source - Object(s) to merge into `target`. - * @returns {Object} The `target` object. - */ - mergeIf: function(target, source) { - return helpers.merge(target, source, {merger: helpers._mergerIf}); - }, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, expectedWeekday, yearToUse; - /** - * Applies the contents of two or more objects together into the first object. - * @param {Object} target - The target object in which all objects are merged into. - * @param {Object} arg1 - Object containing additional properties to merge in target. - * @param {Object} argN - Additional objects containing properties to merge in target. - * @returns {Object} The `target` object. - */ - extend: function(target) { - var setFn = function(value, key) { - target[key] = value; - }; - for (var i = 1, ilen = arguments.length; i < ilen; ++i) { - helpers.each(arguments[i], setFn); - } - return target; - }, + if (config._d) { + return; + } - /** - * Basic javascript inheritance based on the model created in Backbone.js - */ - inherits: function(extensions) { - var me = this; - var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { - return me.apply(this, arguments); - }; + currentDate = currentDateArray(config); - var Surrogate = function() { - this.constructor = ChartElement; - }; + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - Surrogate.prototype = me.prototype; - ChartElement.prototype = new Surrogate(); - ChartElement.extend = helpers.inherits; + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - if (extensions) { - helpers.extend(ChartElement.prototype, extensions); - } + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } - ChartElement.__super__ = me.prototype; - return ChartElement; - } -}; + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } -module.exports = helpers; + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } -// DEPRECATIONS + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } -/** - * Provided for backward compatibility, use Chart.helpers.callback instead. - * @function Chart.helpers.callCallback - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -helpers.callCallback = helpers.callback; + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } -/** - * Provided for backward compatibility, use Array.prototype.indexOf instead. - * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ - * @function Chart.helpers.indexOf - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.indexOf = function(array, item, fromIndex) { - return Array.prototype.indexOf.call(array, item, fromIndex); -}; + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); -/** - * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. - * @function Chart.helpers.getValueOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueOrDefault = helpers.valueOrDefault; + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } -/** - * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. - * @function Chart.helpers.getValueAtIndexOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { + getParsingFlags(config).weekdayMismatch = true; + } + } -},{}],43:[function(require,module,exports){ -'use strict'; + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; -var helpers = require(42); + var curWeek = weekOfYear(createLocal(), dow, doy); -/** - * Easing functions adapted from Robert Penner's easing equations. - * @namespace Chart.helpers.easingEffects - * @see http://www.robertpenner.com/easing/ - */ -var effects = { - linear: function(t) { - return t; - }, + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - easeInQuad: function(t) { - return t * t; - }, + // Default to current week. + week = defaults(w.w, curWeek.week); - easeOutQuad: function(t) { - return -t * (t - 2); - }, + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from beginning of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to beginning of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } - easeInOutQuad: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t; - } - return -0.5 * ((--t) * (t - 2) - 1); - }, + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; - easeInCubic: function(t) { - return t * t * t; - }, + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; - easeOutCubic: function(t) { - return (t = t - 1) * t * t + 1; - }, + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - easeInOutCubic: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t; - } - return 0.5 * ((t -= 2) * t * t + 2); - }, + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; - easeInQuart: function(t) { - return t * t * t * t; - }, + if (match) { + getParsingFlags(config).iso = true; - easeOutQuart: function(t) { - return -((t = t - 1) * t * t * t - 1); - }, + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - easeInOutQuart: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t; - } - return -0.5 * ((t -= 2) * t * t * t - 2); - }, + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; - easeInQuint: function(t) { - return t * t * t * t * t; - }, + function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10) + ]; - easeOutQuint: function(t) { - return (t = t - 1) * t * t * t * t + 1; - }, + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } - easeInOutQuint: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t * t; - } - return 0.5 * ((t -= 2) * t * t * t * t + 2); - }, + return result; + } - easeInSine: function(t) { - return -Math.cos(t * (Math.PI / 2)) + 1; - }, + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2000 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } - easeOutSine: function(t) { - return Math.sin(t * (Math.PI / 2)); - }, + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } - easeInOutSine: function(t) { - return -0.5 * (Math.cos(Math.PI * t) - 1); - }, + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), + weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; + } - easeInExpo: function(t) { - return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); - }, + var obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; - easeOutExpo: function(t) { - return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; - }, + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + // the only allowed military tz is Z + return 0; + } else { + var hm = parseInt(numOffset, 10); + var m = hm % 100, h = (hm - m) / 100; + return h * 60 + m; + } + } - easeInOutExpo: function(t) { - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if ((t /= 0.5) < 1) { - return 0.5 * Math.pow(2, 10 * (t - 1)); - } - return 0.5 * (-Math.pow(2, -10 * --t) + 2); - }, + // date and time from ref 2822 format + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)); + if (match) { + var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } - easeInCirc: function(t) { - if (t >= 1) { - return t; - } - return -(Math.sqrt(1 - t * t) - 1); - }, + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); - easeOutCirc: function(t) { - return Math.sqrt(1 - (t = t - 1) * t); - }, + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - easeInOutCirc: function(t) { - if ((t /= 0.5) < 1) { - return -0.5 * (Math.sqrt(1 - t * t) - 1); - } - return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } - easeInElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - }, + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); - easeOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; - }, + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } - easeInOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if ((t /= 0.5) === 2) { - return 1; - } - if (!p) { - p = 0.45; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - if (t < 1) { - return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - } - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - easeInBack: function(t) { - var s = 1.70158; - return t * t * ((s + 1) * t - s); - }, + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } - easeOutBack: function(t) { - var s = 1.70158; - return (t = t - 1) * t * ((s + 1) * t + s) + 1; - }, + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } - easeInOutBack: function(t) { - var s = 1.70158; - if ((t /= 0.5) < 1) { - return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); - } - return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); - }, + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } - easeInBounce: function(t) { - return 1 - effects.easeOutBounce(1 - t); - }, + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); - easeOutBounce: function(t) { - if (t < (1 / 2.75)) { - return 7.5625 * t * t; - } - if (t < (2 / 2.75)) { - return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; - } - if (t < (2.5 / 2.75)) { - return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; - } - return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; - }, + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; - easeInOutBounce: function(t) { - if (t < 0.5) { - return effects.easeInBounce(t * 2) * 0.5; - } - return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; - } -}; + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); -module.exports = { - effects: effects -}; + configFromArray(config); + checkOverflow(config); + } -// DEPRECATIONS -/** - * Provided for backward compatibility, use Chart.helpers.easing.effects instead. - * @function Chart.helpers.easingEffects - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.easingEffects = effects; + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; -},{"42":42}],44:[function(require,module,exports){ -'use strict'; + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } -var helpers = require(42); + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, -/** - * @alias Chart.helpers.options - * @namespace - */ -module.exports = { - /** - * Converts the given line height `value` in pixels for a specific font `size`. - * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). - * @param {Number} size - The font size (in pixels) used to resolve relative `value`. - * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height - * @since 2.7.0 - */ - toLineHeight: function(value, size) { - var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); - if (!matches || matches[1] === 'normal') { - return size * 1.2; - } + scoreToBeat, + i, + currentScore; - value = +matches[2]; + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } - switch (matches[3]) { - case 'px': - return value; - case '%': - value /= 100; - break; - default: - break; - } + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); - return size * value; - }, + if (!isValid(tempConfig)) { + continue; + } - /** - * Converts the given value into a padding object with pre-computed width/height. - * @param {Number|Object} value - If a number, set the value to all TRBL component, - * else, if and object, use defined properties and sets undefined ones to 0. - * @returns {Object} The padding values (top, right, bottom, left, width, height) - * @since 2.7.0 - */ - toPadding: function(value) { - var t, r, b, l; + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; - if (helpers.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - return { - top: t, - right: r, - bottom: b, - left: l, - height: t + b, - width: l + r - }; - }, + getParsingFlags(tempConfig).score = currentScore; - /** - * Evaluates the given `inputs` sequentially and returns the first defined value. - * @param {Array[]} inputs - An array of values, falling back to the last value. - * @param {Object} [context] - If defined and the current value is a function, the value - * is called with `context` as first argument and the result becomes the new input. - * @param {Number} [index] - If defined and the current value is an array, the value - * at `index` become the new input. - * @since 2.7.0 - */ - resolve: function(inputs, context, index) { - var i, ilen, value; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - for (i = 0, ilen = inputs.length; i < ilen; ++i) { - value = inputs[i]; - if (value === undefined) { - continue; - } - if (context !== undefined && typeof value === 'function') { - value = value(context); - } - if (index !== undefined && helpers.isArray(value)) { - value = value[index]; - } - if (value !== undefined) { - return value; - } - } - } -}; + extend(config, bestMoment || tempConfig); + } -},{"42":42}],45:[function(require,module,exports){ -'use strict'; + function configFromObject(config) { + if (config._d) { + return; + } -module.exports = require(42); -module.exports.easing = require(43); -module.exports.canvas = require(41); -module.exports.options = require(44); + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); -},{"41":41,"42":42,"43":43,"44":44}],46:[function(require,module,exports){ -/** - * Platform fallback implementation (minimal). - * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 - */ + configFromArray(config); + } -module.exports = { - acquireContext: function(item) { - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - return item && item.getContext('2d') || null; - } -}; + return res; + } -},{}],47:[function(require,module,exports){ -/** - * Chart.Platform implementation for targeting a web browser - */ + function prepareConfig (config) { + var input = config._i, + format = config._f; -'use strict'; + config._locale = config._locale || getLocale(config._l); -var helpers = require(45); + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } -var EXPANDO_KEY = '$chartjs'; -var CSS_PREFIX = 'chartjs-'; -var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; -var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; -var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } -/** - * DOM event types -> Chart.js event types. - * Note: only events with different types are mapped. - * @see https://developer.mozilla.org/en-US/docs/Web/Events - */ -var EVENT_TYPES = { - touchstart: 'mousedown', - touchmove: 'mousemove', - touchend: 'mouseup', - pointerenter: 'mouseenter', - pointerdown: 'mousedown', - pointermove: 'mousemove', - pointerup: 'mouseup', - pointerleave: 'mouseout', - pointerout: 'mouseout' -}; + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } -/** - * The "used" size is the final value of a dimension property after all calculations have - * been performed. This method uses the computed style of `element` but returns undefined - * if the computed style is not expressed in pixels. That can happen in some cases where - * `element` has a size relative to its parent and this last one is not yet displayed, - * for example because of `display: none` on a parent node. - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value - * @returns {Number} Size in pixels or undefined if unknown. - */ -function readUsedSize(element, property) { - var value = helpers.getStyle(element, property); - var matches = value && value.match(/^(\d+)(\.\d+)?px$/); - return matches ? Number(matches[1]) : undefined; -} + if (!isValid(config)) { + config._d = null; + } -/** - * Initializes the canvas style and render size without modifying the canvas display size, - * since responsiveness is handled by the controller.resize() method. The config is used - * to determine the aspect ratio to apply in case no explicit height has been specified. - */ -function initCanvas(canvas, config) { - var style = canvas.style; + return config; + } - // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it - // returns null or '' if no explicit value has been set to the canvas attribute. - var renderHeight = canvas.getAttribute('height'); - var renderWidth = canvas.getAttribute('width'); + function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } - // Chart.js modifies some canvas values that we want to restore on destroy - canvas[EXPANDO_KEY] = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } - } - }; + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; - // Force canvas to display as block to avoid extra space caused by inline - // elements, which would interfere with the responsive resize process. - // https://github.com/chartjs/Chart.js/issues/2538 - style.display = style.display || 'block'; + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } - if (renderWidth === null || renderWidth === '') { - var displayWidth = readUsedSize(canvas, 'width'); - if (displayWidth !== undefined) { - canvas.width = displayWidth; - } - } + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } - if (renderHeight === null || renderHeight === '') { - if (canvas.style.height === '') { - // If no explicit render height and style height, let's apply the aspect ratio, - // which one can be specified by the user but also by charts as default option - // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. - canvas.height = canvas.width / (config.options.aspectRatio || 2); - } else { - var displayHeight = readUsedSize(canvas, 'height'); - if (displayWidth !== undefined) { - canvas.height = displayHeight; - } - } - } + function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } - return canvas; -} + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ); -/** - * Detects support for options object argument in addEventListener. - * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support - * @private - */ -var supportsEventListenerOptions = (function() { - var supports = false; - try { - var options = Object.defineProperty({}, 'passive', { - get: function() { - supports = true; - } - }); - window.addEventListener('e', null, options); - } catch (e) { - // continue regardless of error - } - return supports; -}()); + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); -// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. -// https://github.com/chartjs/Chart.js/issues/4287 -var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } -function addEventListener(node, type, listener) { - node.addEventListener(type, listener, eventListenerOptions); -} + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); -function removeEventListener(node, type, listener) { - node.removeEventListener(type, listener, eventListenerOptions); -} + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); -function createEvent(type, chart, x, y, nativeEvent) { - return { - type: type, - chart: chart, - native: nativeEvent || null, - x: x !== undefined ? x : null, - y: y !== undefined ? y : null, - }; -} + return pickBy('isAfter', args); + } -function fromNativeEvent(event, chart) { - var type = EVENT_TYPES[event.type] || event.type; - var pos = helpers.getRelativePosition(event, chart); - return createEvent(type, chart, pos.x, pos.y, event); -} + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; -function throttled(fn, thisArg) { - var ticking = false; - var args = []; + var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; - return function() { - args = Array.prototype.slice.call(arguments); - thisArg = thisArg || this; + function isDurationValid(m) { + for (var key in m) { + if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } - if (!ticking) { - ticking = true; - helpers.requestAnimFrame.call(window, function() { - ticking = false; - fn.apply(thisArg, args); - }); - } - }; -} + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } -// Implementation based on https://github.com/marcj/css-element-queries -function createResizer(handler) { - var resizer = document.createElement('div'); - var cls = CSS_PREFIX + 'size-monitor'; - var maxSize = 1000000; - var style = - 'position:absolute;' + - 'left:0;' + - 'top:0;' + - 'right:0;' + - 'bottom:0;' + - 'overflow:hidden;' + - 'pointer-events:none;' + - 'visibility:hidden;' + - 'z-index:-1;'; - - resizer.style.cssText = style; - resizer.className = cls; - resizer.innerHTML = - '<div class="' + cls + '-expand" style="' + style + '">' + - '<div style="' + - 'position:absolute;' + - 'width:' + maxSize + 'px;' + - 'height:' + maxSize + 'px;' + - 'left:0;' + - 'top:0">' + - '</div>' + - '</div>' + - '<div class="' + cls + '-shrink" style="' + style + '">' + - '<div style="' + - 'position:absolute;' + - 'width:200%;' + - 'height:200%;' + - 'left:0; ' + - 'top:0">' + - '</div>' + - '</div>'; - - var expand = resizer.childNodes[0]; - var shrink = resizer.childNodes[1]; + return true; + } - resizer._reset = function() { - expand.scrollLeft = maxSize; - expand.scrollTop = maxSize; - shrink.scrollLeft = maxSize; - shrink.scrollTop = maxSize; - }; - var onScroll = function() { - resizer._reset(); - handler(); - }; + function isValid$1() { + return this._isValid; + } - addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); - addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + function createInvalid$1() { + return createDuration(NaN); + } - return resizer; -} + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || normalizedInput.isoWeek || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible to translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); + } -// https://davidwalsh.name/detect-node-insertion -function watchForRender(node, handler) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - var proxy = expando.renderProxy = function(e) { - if (e.animationName === CSS_RENDER_ANIMATION) { - handler(); - } - }; + function isDuration (obj) { + return obj instanceof Duration; + } - helpers.each(ANIMATION_START_EVENTS, function(type) { - addEventListener(node, type, proxy); - }); + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } - // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class - // is removed then added back immediately (same animation frame?). Accessing the - // `offsetParent` property will force a reflow and re-evaluate the CSS animation. - // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics - // https://github.com/chartjs/Chart.js/issues/4737 - expando.reflow = !!node.offsetParent; + // FORMATTING - node.classList.add(CSS_RENDER_MONITOR); -} + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } -function unwatchForRender(node) { - var expando = node[EXPANDO_KEY] || {}; - var proxy = expando.renderProxy; + offset('Z', ':'); + offset('ZZ', ''); - if (proxy) { - helpers.each(ANIMATION_START_EVENTS, function(type) { - removeEventListener(node, type, proxy); - }); + // PARSING - delete expando.renderProxy; - } + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); - node.classList.remove(CSS_RENDER_MONITOR); -} + // HELPERS -function addResizeListener(node, listener, chart) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; - // Let's keep track of this added resizer and thus avoid DOM query when removing it. - var resizer = expando.resizer = createResizer(throttled(function() { - if (expando.resizer) { - return listener(createEvent('resize', chart)); - } - })); + function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); - // The resizer needs to be attached to the node parent, so we first need to be - // sure that `node` is attached to the DOM before injecting the resizer element. - watchForRender(node, function() { - if (expando.resizer) { - var container = node.parentNode; - if (container && container !== resizer.parentNode) { - container.insertBefore(resizer, container.firstChild); - } + if (matches === null) { + return null; + } - // The container size might have changed, let's reset the resizer state. - resizer._reset(); - } - }); -} + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); -function removeResizeListener(node) { - var expando = node[EXPANDO_KEY] || {}; - var resizer = expando.resizer; + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; + } - delete expando.resizer; - unwatchForRender(node); + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } + } - if (resizer && resizer.parentNode) { - resizer.parentNode.removeChild(resizer); - } -} + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } -function injectCSS(platform, css) { - // http://stackoverflow.com/q/3922139 - var style = platform._style || document.createElement('style'); - if (!platform._style) { - platform._style = style; - css = '/* Chart.js */\n' + css; - style.setAttribute('type', 'text/css'); - document.getElementsByTagName('head')[0].appendChild(style); - } + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } - style.appendChild(document.createTextNode(css)); -} + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } -module.exports = { - /** - * This property holds whether this platform is enabled for the current environment. - * Currently used by platform.js to select the proper implementation. - * @private - */ - _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', + this.utcOffset(input, keepLocalTime); - initialize: function() { - var keyframes = 'from{opacity:0.99}to{opacity:1}'; - - injectCSS(this, - // DOM rendering detection - // https://davidwalsh.name/detect-node-insertion - '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + - '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + - '.' + CSS_RENDER_MONITOR + '{' + - '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + - 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + - '}' - ); - }, + return this; + } else { + return -this.utcOffset(); + } + } - acquireContext: function(item, config) { - if (typeof item === 'string') { - item = document.getElementById(item); - } else if (item.length) { - // Support for array based queries (such as jQuery) - item = item[0]; - } + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - // To prevent canvas fingerprinting, some add-ons undefine the getContext - // method, for example: https://github.com/kkapsner/CanvasBlocker - // https://github.com/chartjs/Chart.js/issues/2807 - var context = item && item.getContext && item.getContext('2d'); + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } - // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is - // inside an iframe or when running in a protected environment. We could guess the - // types from their toString() value but let's keep things flexible and assume it's - // a sufficient condition if the item has a context2D which has item as `canvas`. - // https://github.com/chartjs/Chart.js/issues/3887 - // https://github.com/chartjs/Chart.js/issues/4102 - // https://github.com/chartjs/Chart.js/issues/4152 - if (context && context.canvas === item) { - initCanvas(item, config); - return context; - } + function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; + } - return null; - }, + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; - releaseContext: function(context) { - var canvas = context.canvas; - if (!canvas[EXPANDO_KEY]) { - return; - } + return (this.utcOffset() - input) % 60 === 0; + } - var initial = canvas[EXPANDO_KEY].initial; - ['height', 'width'].forEach(function(prop) { - var value = initial[prop]; - if (helpers.isNullOrUndef(value)) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } - helpers.each(initial.style || {}, function(value, key) { - canvas.style[key] = value; - }); + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } - // The canvas render size might have been changed (and thus the state stack discarded), - // we can't use save() and restore() to restore the initial state. So make sure that at - // least the canvas context is reset to the default state by setting the canvas width. - // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html - canvas.width = canvas.width; + var c = {}; - delete canvas[EXPANDO_KEY]; - }, + copyConfig(c, this); + c = prepareConfig(c); - addEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - addResizeListener(canvas, listener, chart); - return; - } + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } - var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); - var proxies = expando.proxies || (expando.proxies = {}); - var proxy = proxies[chart.id + '_' + type] = function(event) { - listener(fromNativeEvent(event, chart)); - }; + return this._isDSTShifted; + } - addEventListener(canvas, type, proxy); - }, + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } - removeEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - removeResizeListener(canvas, listener); - return; - } + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } - var expando = listener[EXPANDO_KEY] || {}; - var proxies = expando.proxies || {}; - var proxy = proxies[chart.id + '_' + type]; - if (!proxy) { - return; - } + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + + function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - removeEventListener(canvas, type, proxy); - } -}; + ret = new Duration(duration); -// DEPRECATIONS + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } -/** - * Provided for backward compatibility, use EventTarget.addEventListener instead. - * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener - * @function Chart.helpers.addEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.addEvent = addEventListener; + return ret; + } -/** - * Provided for backward compatibility, use EventTarget.removeEventListener instead. - * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener - * @function Chart.helpers.removeEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.removeEvent = removeEventListener; + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; -},{"45":45}],48:[function(require,module,exports){ -'use strict'; + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } -var helpers = require(45); -var basic = require(46); -var dom = require(47); + function positiveMomentsDifference(base, other) { + var res = {}; -// @TODO Make possible to select another platform at build time. -var implementation = dom._enabled ? dom : basic; + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } -/** - * @namespace Chart.platform - * @see https://chartjs.gitbooks.io/proposals/content/Platform.html - * @since 2.4.0 - */ -module.exports = helpers.extend({ - /** - * @since 2.7.0 - */ - initialize: function() {}, + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - /** - * Called at chart construction time, returns a context2d instance implementing - * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. - * @param {*} item - The native item from which to acquire context (platform specific) - * @param {Object} options - The chart options - * @returns {CanvasRenderingContext2D} context2d instance - */ - acquireContext: function() {}, + return res; + } - /** - * Called at chart destruction time, releases any resources associated to the context - * previously returned by the acquireContext() method. - * @param {CanvasRenderingContext2D} context - The context2d instance - * @returns {Boolean} true if the method succeeded, else false - */ - releaseContext: function() {}, + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } - /** - * Registers the specified listener on the given chart. - * @param {Chart} chart - Chart from which to listen for event - * @param {String} type - The ({@link IEvent}) type to listen for - * @param {Function} listener - Receives a notification (an object that implements - * the {@link IEvent} interface) when an event of the specified type occurs. - */ - addEventListener: function() {}, + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } - /** - * Removes the specified listener previously registered with addEventListener. - * @param {Chart} chart -Chart from which to remove the listener - * @param {String} type - The ({@link IEvent}) type to remove - * @param {Function} listener - The listener function to remove from the event target. - */ - removeEventListener: function() {} + return res; + } -}, implementation); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } -/** - * @interface IPlatform - * Allows abstracting platform dependencies away from the chart - * @borrows Chart.platform.acquireContext as acquireContext - * @borrows Chart.platform.releaseContext as releaseContext - * @borrows Chart.platform.addEventListener as addEventListener - * @borrows Chart.platform.removeEventListener as removeEventListener - */ + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } -/** - * @interface IEvent - * @prop {String} type - The event type name, possible values are: - * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', - * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' - * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') - * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) - * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) - */ + function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); -},{"45":45,"46":46,"47":47}],49:[function(require,module,exports){ -'use strict'; + if (!mom.isValid()) { + // No op + return; + } -module.exports = {}; -module.exports.filler = require(50); -module.exports.legend = require(51); -module.exports.title = require(52); + updateOffset = updateOffset == null ? true : updateOffset; -},{"50":50,"51":51,"52":52}],50:[function(require,module,exports){ -/** - * Plugin based on discussion from the following Chart.js issues: - * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 - * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 - */ + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } + } -'use strict'; + var add = createAdder(1, 'add'); + var subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } -var defaults = require(25); -var elements = require(40); -var helpers = require(45); + function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; -defaults._set('global', { - plugins: { - filler: { - propagate: true - } - } -}); + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); -var mappers = { - dataset: function(source) { - var index = source.fill; - var chart = source.chart; - var meta = chart.getDatasetMeta(index); - var visible = meta && chart.isDatasetVisible(index); - var points = (visible && meta.dataset._children) || []; - var length = points.length || 0; + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + } - return !length ? null : function(point, i) { - return (i < length && points[i]._view) || null; - }; - }, + function clone () { + return new Moment(this); + } - boundary: function(source) { - var boundary = source.boundary; - var x = boundary ? boundary.x : null; - var y = boundary ? boundary.y : null; + function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } - return function(point) { - return { - x: x === null ? point.x : x, - y: y === null ? point.y : y, - }; - }; - } -}; + function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } -// @todo if (fill[0] === '#') -function decodeFill(el, index, count) { - var model = el._model || {}; - var fill = model.fill; - var target; + function isBetween (from, to, units, inclusivity) { + var localFrom = isMoment(from) ? from : createLocal(from), + localTo = isMoment(to) ? to : createLocal(to); + if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { + return false; + } + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && + (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); + } - if (fill === undefined) { - fill = !!model.backgroundColor; - } + function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } - if (fill === false || fill === null) { - return false; - } + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input, units); + } - if (fill === true) { - return 'origin'; - } + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input, units); + } - target = parseFloat(fill, 10); - if (isFinite(target) && Math.floor(target) === target) { - if (fill[0] === '-' || fill[0] === '+') { - target = index + target; - } + function diff (input, units, asFloat) { + var that, + zoneDelta, + output; - if (target === index || target < 0 || target >= count) { - return false; - } + if (!this.isValid()) { + return NaN; + } - return target; - } + that = cloneWithOffset(input, this); - switch (fill) { - // compatibility - case 'bottom': - return 'start'; - case 'top': - return 'end'; - case 'zero': - return 'origin'; - // supported boundaries - case 'origin': - case 'start': - case 'end': - return fill; - // invalid fill values - default: - return false; - } -} + if (!that.isValid()) { + return NaN; + } -function computeBoundary(source) { - var model = source.el._model || {}; - var scale = source.el._scale || {}; - var fill = source.fill; - var target = null; - var horizontal; + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - if (isFinite(fill)) { - return null; - } + units = normalizeUnits(units); - // Backward compatibility: until v3, we still need to support boundary values set on - // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and - // controllers might still use it (e.g. the Smith chart). + switch (units) { + case 'year': output = monthDiff(this, that) / 12; break; + case 'month': output = monthDiff(this, that); break; + case 'quarter': output = monthDiff(this, that) / 3; break; + case 'second': output = (this - that) / 1e3; break; // 1000 + case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 + case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 + case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst + case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: output = this - that; + } - if (fill === 'start') { - target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; - } else if (fill === 'end') { - target = model.scaleTop === undefined ? scale.top : model.scaleTop; - } else if (model.scaleZero !== undefined) { - target = model.scaleZero; - } else if (scale.getBasePosition) { - target = scale.getBasePosition(); - } else if (scale.getBasePixel) { - target = scale.getBasePixel(); - } + return asFloat ? output : absFloor(output); + } - if (target !== undefined && target !== null) { - if (target.x !== undefined && target.y !== undefined) { - return target; - } + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - if (typeof target === 'number' && isFinite(target)) { - horizontal = scale.isHorizontal(); - return { - x: horizontal ? target : null, - y: horizontal ? null : target - }; - } - } + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } - return null; -} + hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; -function resolveTarget(sources, index, propagate) { - var source = sources[index]; - var fill = source.fill; - var visited = [index]; - var target; + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } - if (!propagate) { - return fill; - } + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true; + var m = utc ? this.clone().utc() : this; + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + } + } + return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } - while (fill !== false && visited.indexOf(fill) === -1) { - if (!isFinite(fill)) { - return fill; - } + /** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ + function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; - target = sources[fill]; - if (!target) { - return false; - } + return this.format(prefix + year + datetime + suffix); + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } - if (target.visible) { - return fill; - } + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } - visited.push(fill); - fill = target.fill; - } + function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } - return false; -} + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; -function createMapper(source) { - var fill = source.fill; - var type = 'dataset'; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } - if (fill === false) { - return null; - } + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); - if (!isFinite(fill)) { - type = 'boundary'; - } + function localeData () { + return this._locale; + } - return mappers[type](source); -} + var MS_PER_SECOND = 1000; + var MS_PER_MINUTE = 60 * MS_PER_SECOND; + var MS_PER_HOUR = 60 * MS_PER_MINUTE; + var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; -function isDrawable(point) { - return point && !point.skip; -} + // actual modulo - handles negative numbers (for dates before 1970): + function mod$1(dividend, divisor) { + return (dividend % divisor + divisor) % divisor; + } -function drawArea(ctx, curve0, curve1, len0, len1) { - var i; + function localStartOfDate(y, m, d) { + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return new Date(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return new Date(y, m, d).valueOf(); + } + } - if (!len0 || !len1) { - return; - } + function utcStartOfDate(y, m, d) { + // Date.UTC remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return Date.UTC(y, m, d); + } + } - // building first area curve (normal) - ctx.moveTo(curve0[0].x, curve0[0].y); - for (i = 1; i < len0; ++i) { - helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); - } + function startOf (units) { + var time; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } - // joining the two area curves - ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); + var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - // building opposite area curve (reverse) - for (i = len1 - 1; i > 0; --i) { - helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); - } -} + switch (units) { + case 'year': + time = startOfDate(this.year(), 0, 1); + break; + case 'quarter': + time = startOfDate(this.year(), this.month() - this.month() % 3, 1); + break; + case 'month': + time = startOfDate(this.year(), this.month(), 1); + break; + case 'week': + time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); + break; + case 'isoWeek': + time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date()); + break; + case 'hour': + time = this._d.valueOf(); + time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); + break; + case 'minute': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_MINUTE); + break; + case 'second': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_SECOND); + break; + } -function doFill(ctx, points, mapper, view, color, loop) { - var count = points.length; - var span = view.spanGaps; - var curve0 = []; - var curve1 = []; - var len0 = 0; - var len1 = 0; - var i, ilen, index, p0, p1, d0, d1; + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; + } - ctx.beginPath(); + function endOf (units) { + var time; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } - for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { - index = i % count; - p0 = points[index]._view; - p1 = mapper(p0, index, view); - d0 = isDrawable(p0); - d1 = isDrawable(p1); + var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - if (d0 && d1) { - len0 = curve0.push(p0); - len1 = curve1.push(p1); - } else if (len0 && len1) { - if (!span) { - drawArea(ctx, curve0, curve1, len0, len1); - len0 = len1 = 0; - curve0 = []; - curve1 = []; - } else { - if (d0) { - curve0.push(p0); - } - if (d1) { - curve1.push(p1); - } - } - } - } + switch (units) { + case 'year': + time = startOfDate(this.year() + 1, 0, 1) - 1; + break; + case 'quarter': + time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; + break; + case 'month': + time = startOfDate(this.year(), this.month() + 1, 1) - 1; + break; + case 'week': + time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; + break; + case 'isoWeek': + time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; + break; + case 'hour': + time = this._d.valueOf(); + time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; + break; + case 'minute': + time = this._d.valueOf(); + time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; + break; + case 'second': + time = this._d.valueOf(); + time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; + break; + } - drawArea(ctx, curve0, curve1, len0, len1); + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; + } - ctx.closePath(); - ctx.fillStyle = color; - ctx.fill(); -} + function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } -module.exports = { - id: 'filler', + function unix () { + return Math.floor(this.valueOf() / 1000); + } - afterDatasetsUpdate: function(chart, options) { - var count = (chart.data.datasets || []).length; - var propagate = options.propagate; - var sources = []; - var meta, i, el, source; + function toDate () { + return new Date(this.valueOf()); + } - for (i = 0; i < count; ++i) { - meta = chart.getDatasetMeta(i); - el = meta.dataset; - source = null; + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } - if (el && el._model && el instanceof elements.Line) { - source = { - visible: chart.isDatasetVisible(i), - fill: decodeFill(el, i, count), - chart: chart, - el: el - }; - } + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } - meta.$filler = source; - sources.push(source); - } + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } - for (i = 0; i < count; ++i) { - source = sources[i]; - if (!source) { - continue; - } + function isValid$2 () { + return isValid(this); + } - source.fill = resolveTarget(sources, i, propagate); - source.boundary = computeBoundary(source); - source.mapper = createMapper(source); - } - }, + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } - beforeDatasetDraw: function(chart, args) { - var meta = args.meta.$filler; - if (!meta) { - return; - } + function invalidAt () { + return getParsingFlags(this).overflow; + } - var ctx = chart.ctx; - var el = meta.el; - var view = el._view; - var points = el._children || []; - var mapper = meta.mapper; - var color = view.backgroundColor || defaults.global.defaultColor; + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } - if (mapper && color && points.length) { - helpers.canvas.clipArea(ctx, chart.chartArea); - doFill(ctx, points, mapper, view, color, el._loop); - helpers.canvas.unclipArea(ctx); - } - } -}; + // FORMATTING -},{"25":25,"40":40,"45":45}],51:[function(require,module,exports){ -'use strict'; + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); -var defaults = require(25); -var Element = require(26); -var helpers = require(45); -var layouts = require(30); + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); -var noop = helpers.noop; + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } -defaults._set('global', { - legend: { - display: true, - position: 'top', - fullWidth: true, - reverse: false, - weight: 1000, + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - // a callback that will handle - onClick: function(e, legendItem) { - var index = legendItem.datasetIndex; - var ci = this.chart; - var meta = ci.getDatasetMeta(index); + // ALIASES - // See controller.isDatasetVisible comment - meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); - // We hid a dataset ... rerender the chart - ci.update(); - }, + // PRIORITY - onHover: null, + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); - labels: { - boxWidth: 40, - padding: 10, - // Generates labels shown in the legend - // Valid properties to return: - // text : text to display - // fillStyle : fill of coloured box - // strokeStyle: stroke of coloured box - // hidden : if this legend item refers to a hidden item - // lineCap : cap style for line - // lineDash - // lineDashOffset : - // lineJoin : - // lineWidth : - generateLabels: function(chart) { - var data = chart.data; - return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { - return { - text: dataset.label, - fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), - hidden: !chart.isDatasetVisible(i), - lineCap: dataset.borderCapStyle, - lineDash: dataset.borderDash, - lineDashOffset: dataset.borderDashOffset, - lineJoin: dataset.borderJoinStyle, - lineWidth: dataset.borderWidth, - strokeStyle: dataset.borderColor, - pointStyle: dataset.pointStyle, - // Below is extra data used for toggling the datasets - datasetIndex: i - }; - }, this) : []; - } - } - }, + // PARSING - legendCallback: function(chart) { - var text = []; - text.push('<ul class="' + chart.id + '-legend">'); - for (var i = 0; i < chart.data.datasets.length; i++) { - text.push('<li><span style="background-color:' + chart.data.datasets[i].backgroundColor + '"></span>'); - if (chart.data.datasets[i].label) { - text.push(chart.data.datasets[i].label); - } - text.push('</li>'); - } - text.push('</ul>'); - return text.join(''); - } -}); + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); -/** - * Helper function to get the box width based on the usePointStyle option - * @param labelopts {Object} the label options on the legend - * @param fontSize {Number} the label font size - * @return {Number} width of the color box area - */ -function getBoxWidth(labelOpts, fontSize) { - return labelOpts.usePointStyle ? - fontSize * Math.SQRT2 : - labelOpts.boxWidth; -} + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Legend = Element.extend({ + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); + }); - initialize: function(config) { - helpers.extend(this, config); + // MOMENTS - // Contains hit boxes for each dataset (in dataset order) - this.legendHitBoxes = []; + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } - // Are we in doughnut mode which has a different data type - this.doughnutMode = false; - }, + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } - // These methods are ordered by lifecycle. Utilities then follow. - // Any function defined here is inherited by all legend types. - // Any function can be extended by the legend type + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } - beforeUpdate: noop, - update: function(maxWidth, maxHeight, margins) { - var me = this; + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); + // FORMATTING - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); + addFormatToken('Q', 0, 'Qo', 'quarter'); - return me.minSize; - }, - afterUpdate: noop, + // ALIASES - // + addUnitAlias('quarter', 'Q'); - beforeSetDimensions: noop, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; + // PRIORITY - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } + addUnitPriority('quarter', 7); - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; + // PARSING - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop, + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); - // + // MOMENTS - beforeBuildLabels: noop, - buildLabels: function() { - var me = this; - var labelOpts = me.options.labels || {}; - var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || []; + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } - if (labelOpts.filter) { - legendItems = legendItems.filter(function(item) { - return labelOpts.filter(item, me.chart.data); - }); - } + // FORMATTING - if (me.options.reverse) { - legendItems.reverse(); - } + addFormatToken('D', ['DD', 2], 'Do', 'date'); - me.legendItems = legendItems; - }, - afterBuildLabels: noop, + // ALIASES - // + addUnitAlias('date', 'D'); - beforeFit: noop, - fit: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var display = opts.display; + // PRIORITY + addUnitPriority('date', 9); - var ctx = me.ctx; + // PARSING - var globalDefault = defaults.global; - var valueOrDefault = helpers.valueOrDefault; - var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); - var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); - var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); - var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; + }); - // Reset hit boxes - var hitboxes = me.legendHitBoxes = []; + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); - var minSize = me.minSize; - var isHorizontal = me.isHorizontal(); + // MOMENTS - if (isHorizontal) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = display ? 10 : 0; - } else { - minSize.width = display ? 10 : 0; - minSize.height = me.maxHeight; // fill all the height - } + var getSetDayOfMonth = makeGetSet('Date', true); - // Increase sizes here - if (display) { - ctx.font = labelFont; + // FORMATTING - if (isHorizontal) { - // Labels + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one - var lineWidths = me.lineWidths = [0]; - var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0; + // ALIASES - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; + addUnitAlias('dayOfYear', 'DDD'); - helpers.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + // PRIORITY + addUnitPriority('dayOfYear', 4); - if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) { - totalHeight += fontSize + (labelOpts.padding); - lineWidths[lineWidths.length] = me.left; - } + // PARSING - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: width, - height: fontSize - }; + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); - lineWidths[lineWidths.length - 1] += width + labelOpts.padding; - }); + // HELPERS - minSize.height += totalHeight; + // MOMENTS - } else { - var vPadding = labelOpts.padding; - var columnWidths = me.columnWidths = []; - var totalWidth = labelOpts.padding; - var currentColWidth = 0; - var currentColHeight = 0; - var itemHeight = fontSize + vPadding; - - helpers.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - - // If too tall, go to new column - if (currentColHeight + itemHeight > minSize.height) { - totalWidth += currentColWidth + labelOpts.padding; - columnWidths.push(currentColWidth); // previous column width - - currentColWidth = 0; - currentColHeight = 0; - } + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } - // Get max width - currentColWidth = Math.max(currentColWidth, itemWidth); - currentColHeight += itemHeight; + // FORMATTING - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: itemWidth, - height: fontSize - }; - }); + addFormatToken('m', ['mm', 2], 0, 'minute'); - totalWidth += currentColWidth; - columnWidths.push(currentColWidth); - minSize.width += totalWidth; - } - } + // ALIASES - me.width = minSize.width; - me.height = minSize.height; - }, - afterFit: noop, + addUnitAlias('minute', 'm'); - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, + // PRIORITY - // Actually draw the legend on the canvas - draw: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var globalDefault = defaults.global; - var lineDefault = globalDefault.elements.line; - var legendWidth = me.width; - var lineWidths = me.lineWidths; + addUnitPriority('minute', 14); - if (opts.display) { - var ctx = me.ctx; - var valueOrDefault = helpers.valueOrDefault; - var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor); - var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); - var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); - var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); - var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); - var cursor; - - // Canvas setup - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - ctx.lineWidth = 0.5; - ctx.strokeStyle = fontColor; // for strikethrough effect - ctx.fillStyle = fontColor; // render in correct colour - ctx.font = labelFont; + // PARSING - var boxWidth = getBoxWidth(labelOpts, fontSize); - var hitboxes = me.legendHitBoxes; + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); - // current position - var drawLegendBox = function(x, y, legendItem) { - if (isNaN(boxWidth) || boxWidth <= 0) { - return; - } + // MOMENTS - // Set the ctx for the box - ctx.save(); + var getSetMinute = makeGetSet('Minutes', false); - ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor); - ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle); - ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset); - ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle); - ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth); - ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor); - var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0); + // FORMATTING - if (ctx.setLineDash) { - // IE 9 and 10 do not support line dash - ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash)); - } + addFormatToken('s', ['ss', 2], 0, 'second'); - if (opts.labels && opts.labels.usePointStyle) { - // Recalculate x and y for drawPoint() because its expecting - // x and y to be center of figure (instead of top left) - var radius = fontSize * Math.SQRT2 / 2; - var offSet = radius / Math.SQRT2; - var centerX = x + offSet; - var centerY = y + offSet; + // ALIASES - // Draw pointStyle as legend symbol - helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); - } else { - // Draw box as legend symbol - if (!isLineWidthZero) { - ctx.strokeRect(x, y, boxWidth, fontSize); - } - ctx.fillRect(x, y, boxWidth, fontSize); - } + addUnitAlias('second', 's'); - ctx.restore(); - }; - var fillText = function(x, y, legendItem, textWidth) { - var halfFontSize = fontSize / 2; - var xLeft = boxWidth + halfFontSize + x; - var yMiddle = y + halfFontSize; - - ctx.fillText(legendItem.text, xLeft, yMiddle); - - if (legendItem.hidden) { - // Strikethrough the text if hidden - ctx.beginPath(); - ctx.lineWidth = 2; - ctx.moveTo(xLeft, yMiddle); - ctx.lineTo(xLeft + textWidth, yMiddle); - ctx.stroke(); - } - }; + // PRIORITY - // Horizontal - var isHorizontal = me.isHorizontal(); - if (isHorizontal) { - cursor = { - x: me.left + ((legendWidth - lineWidths[0]) / 2), - y: me.top + labelOpts.padding, - line: 0 - }; - } else { - cursor = { - x: me.left + labelOpts.padding, - y: me.top + labelOpts.padding, - line: 0 - }; - } + addUnitPriority('second', 15); - var itemHeight = fontSize + labelOpts.padding; - helpers.each(me.legendItems, function(legendItem, i) { - var textWidth = ctx.measureText(legendItem.text).width; - var width = boxWidth + (fontSize / 2) + textWidth; - var x = cursor.x; - var y = cursor.y; - - if (isHorizontal) { - if (x + width >= legendWidth) { - y = cursor.y += itemHeight; - cursor.line++; - x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2); - } - } else if (y + itemHeight > me.bottom) { - x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; - y = cursor.y = me.top + labelOpts.padding; - cursor.line++; - } + // PARSING - drawLegendBox(x, y, legendItem); + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); - hitboxes[i].left = x; - hitboxes[i].top = y; + // MOMENTS - // Fill the actual label - fillText(x, y, legendItem, textWidth); + var getSetSecond = makeGetSet('Seconds', false); - if (isHorizontal) { - cursor.x += width + (labelOpts.padding); - } else { - cursor.y += itemHeight; - } + // FORMATTING - }); - } - }, + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - * @return {Boolean} true if a change occured - */ - handleEvent: function(e) { - var me = this; - var opts = me.options; - var type = e.type === 'mouseup' ? 'click' : e.type; - var changed = false; + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); - if (type === 'mousemove') { - if (!opts.onHover) { - return; - } - } else if (type === 'click') { - if (!opts.onClick) { - return; - } - } else { - return; - } + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); - // Chart event already has relative position in it - var x = e.x; - var y = e.y; - if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { - // See if we are touching one of the dataset boxes - var lh = me.legendHitBoxes; - for (var i = 0; i < lh.length; ++i) { - var hitBox = lh[i]; + // ALIASES - if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { - // Touching an element - if (type === 'click') { - // use e.native for backwards compatibility - opts.onClick.call(me, e.native, me.legendItems[i]); - changed = true; - break; - } else if (type === 'mousemove') { - // use e.native for backwards compatibility - opts.onHover.call(me, e.native, me.legendItems[i]); - changed = true; - break; - } - } - } - } + addUnitAlias('millisecond', 'ms'); - return changed; - } -}); + // PRIORITY -function createNewLegendAndAttach(chart, legendOpts) { - var legend = new Legend({ - ctx: chart.ctx, - options: legendOpts, - chart: chart - }); + addUnitPriority('millisecond', 16); - layouts.configure(chart, legend, legendOpts); - layouts.addBox(chart, legend); - chart.legend = legend; -} + // PARSING -module.exports = { - id: 'legend', + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); - /** - * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making - * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Legend, + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } - beforeInit: function(chart) { - var legendOpts = chart.options.legend; + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } - if (legendOpts) { - createNewLegendAndAttach(chart, legendOpts); - } - }, + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS - beforeUpdate: function(chart) { - var legendOpts = chart.options.legend; - var legend = chart.legend; + var getSetMillisecond = makeGetSet('Milliseconds', false); - if (legendOpts) { - helpers.mergeIf(legendOpts, defaults.global.legend); + // FORMATTING - if (legend) { - layouts.configure(chart, legend, legendOpts); - legend.options = legendOpts; - } else { - createNewLegendAndAttach(chart, legendOpts); - } - } else if (legend) { - layouts.removeBox(chart, legend); - delete chart.legend; - } - }, + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); - afterEvent: function(chart, e) { - var legend = chart.legend; - if (legend) { - legend.handleEvent(e); - } - } -}; + // MOMENTS -},{"25":25,"26":26,"30":30,"45":45}],52:[function(require,module,exports){ -'use strict'; + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } -var defaults = require(25); -var Element = require(26); -var helpers = require(45); -var layouts = require(30); + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } -var noop = helpers.noop; + var proto = Moment.prototype; + + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + function createUnix (input) { + return createLocal(input * 1000); + } -defaults._set('global', { - title: { - display: false, - fontStyle: 'bold', - fullWidth: true, - lineHeight: 1.2, - padding: 10, - position: 'top', - text: '', - weight: 2000 // by default greater than legend (1000) to be above - } -}); + function createInZone () { + return createLocal.apply(null, arguments).parseZone(); + } -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Title = Element.extend({ - initialize: function(config) { - var me = this; - helpers.extend(me, config); + function preParsePostFormat (string) { + return string; + } - // Contains hit boxes for each dataset (in dataset order) - me.legendHitBoxes = []; - }, + var proto$1 = Locale.prototype; + + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; + + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; + + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; + + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; + + function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); + } - // These methods are ordered by lifecycle. Utilities then follow. + function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } - beforeUpdate: noop, - update: function(maxWidth, maxHeight, margins) { - var me = this; + format = format || ''; - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); + if (index != null) { + return get$1(format, index, field, 'month'); + } - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; + } - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; - return me.minSize; + if (isNumber(format)) { + index = format; + format = undefined; + } - }, - afterUpdate: noop, + format = format || ''; + } - // + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; - beforeSetDimensions: noop, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; + } - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; + function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop, + function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } - // + function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } - beforeBuildLabels: noop, - buildLabels: noop, - afterBuildLabels: noop, + function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } - // + function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } - beforeFit: noop, - fit: function() { - var me = this; - var valueOrDefault = helpers.valueOrDefault; - var opts = me.options; - var display = opts.display; - var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize); - var minSize = me.minSize; - var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1; - var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); - var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0; + getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - if (me.isHorizontal()) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = textSize; - } else { - minSize.width = textSize; - minSize.height = me.maxHeight; // fill all the height - } + // Side effect imports - me.width = minSize.width; - me.height = minSize.height; + hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); + hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - }, - afterFit: noop, + var mathAbs = Math.abs; - // Shared Methods - isHorizontal: function() { - var pos = this.options.position; - return pos === 'top' || pos === 'bottom'; - }, + function abs () { + var data = this._data; - // Actually draw the title block on the canvas - draw: function() { - var me = this; - var ctx = me.ctx; - var valueOrDefault = helpers.valueOrDefault; - var opts = me.options; - var globalDefaults = defaults.global; - - if (opts.display) { - var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize); - var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle); - var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily); - var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily); - var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); - var offset = lineHeight / 2 + opts.padding; - var rotation = 0; - var top = me.top; - var left = me.left; - var bottom = me.bottom; - var right = me.right; - var maxWidth, titleX, titleY; - - ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour - ctx.font = titleFont; - - // Horizontal - if (me.isHorizontal()) { - titleX = left + ((right - left) / 2); // midpoint of the width - titleY = top + offset; - maxWidth = right - left; - } else { - titleX = opts.position === 'left' ? left + offset : right - offset; - titleY = top + ((bottom - top) / 2); - maxWidth = bottom - top; - rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); - } + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - ctx.save(); - ctx.translate(titleX, titleY); - ctx.rotate(rotation); - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); - var text = opts.text; - if (helpers.isArray(text)) { - var y = 0; - for (var i = 0; i < text.length; ++i) { - ctx.fillText(text[i], 0, y, maxWidth); - y += lineHeight; - } - } else { - ctx.fillText(text, 0, 0, maxWidth); - } + return this; + } - ctx.restore(); - } - } -}); + function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); -function createNewTitleBlockAndAttach(chart, titleOpts) { - var title = new Title({ - ctx: chart.ctx, - options: titleOpts, - chart: chart - }); + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; - layouts.configure(chart, title, titleOpts); - layouts.addBox(chart, title); - chart.titleBlock = title; -} + return duration._bubble(); + } -module.exports = { - id: 'title', + // supports only 2.0-style add(1, 's') or add(duration) + function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); + } - /** - * Backward compatibility: since 2.1.5, the title is registered as a plugin, making - * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Title, + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); + } - beforeInit: function(chart) { - var titleOpts = chart.options.title; + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } - if (titleOpts) { - createNewTitleBlockAndAttach(chart, titleOpts); - } - }, + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } - beforeUpdate: function(chart) { - var titleOpts = chart.options.title; - var titleBlock = chart.titleBlock; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - if (titleOpts) { - helpers.mergeIf(titleOpts, defaults.global.title); + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - if (titleBlock) { - layouts.configure(chart, titleBlock, titleOpts); - titleBlock.options = titleOpts; - } else { - createNewTitleBlockAndAttach(chart, titleOpts); - } - } else if (titleBlock) { - layouts.removeBox(chart, titleBlock); - delete chart.titleBlock; - } - } -}; + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; -},{"25":25,"26":26,"30":30,"45":45}],53:[function(require,module,exports){ -'use strict'; + hours = absFloor(minutes / 60); + data.hours = hours % 24; -module.exports = function(Chart) { + days += absFloor(hours / 24); - // Default config for a category scale - var defaultConfig = { - position: 'bottom' - }; + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); - var DatasetScale = Chart.Scale.extend({ - /** - * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those - * else fall back to data.labels - * @private - */ - getLabels: function() { - var data = this.chart.data; - return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; - }, + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; - determineDataLimits: function() { - var me = this; - var labels = me.getLabels(); - me.minIndex = 0; - me.maxIndex = labels.length - 1; - var findIndex; - - if (me.options.ticks.min !== undefined) { - // user specified min value - findIndex = labels.indexOf(me.options.ticks.min); - me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; - } + data.days = days; + data.months = months; + data.years = years; - if (me.options.ticks.max !== undefined) { - // user specified max value - findIndex = labels.indexOf(me.options.ticks.max); - me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; - } + return this; + } - me.min = labels[me.minIndex]; - me.max = labels[me.maxIndex]; - }, + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } - buildTicks: function() { - var me = this; - var labels = me.getLabels(); - // If we are viewing some subset of labels, slice the original array - me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); - }, + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var data = me.chart.data; - var isHorizontal = me.isHorizontal(); + function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; - if (data.yLabels && !isHorizontal) { - return me.getRightValue(data.datasets[datasetIndex].data[index]); - } - return me.ticks[index - me.minIndex]; - }, + units = normalizeUnits(units); - // Used to get data value locations. Value can either be an index or a numerical value - getPixelForValue: function(value, index) { - var me = this; - var offset = me.options.offset; - // 1 is added because we need the length but we have the indexes - var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); - - // If value is a data object, then index is the index in the data array, - // not the index of the scale. We need to change that. - var valueCategory; - if (value !== undefined && value !== null) { - valueCategory = me.isHorizontal() ? value.x : value.y; - } - if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { - var labels = me.getLabels(); - value = valueCategory || value; - var idx = labels.indexOf(value); - index = idx !== -1 ? idx : index; - } + if (units === 'month' || units === 'quarter' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + switch (units) { + case 'month': return months; + case 'quarter': return months / 3; + case 'year': return months / 12; + } + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } - if (me.isHorizontal()) { - var valueWidth = me.width / offsetAmt; - var widthOffset = (valueWidth * (index - me.minIndex)); + // TODO: Use this.as('ms')? + function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } - if (offset) { - widthOffset += (valueWidth / 2); - } + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } - return me.left + Math.round(widthOffset); - } - var valueHeight = me.height / offsetAmt; - var heightOffset = (valueHeight * (index - me.minIndex)); + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asQuarters = makeAs('Q'); + var asYears = makeAs('y'); + + function clone$1 () { + return createDuration(this); + } - if (offset) { - heightOffset += (valueHeight / 2); - } + function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; + } - return me.top + Math.round(heightOffset); - }, - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); - }, - getValueForPixel: function(pixel) { - var me = this; - var offset = me.options.offset; - var value; - var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var horz = me.isHorizontal(); - var valueDimension = (horz ? me.width : me.height) / offsetAmt; - - pixel -= horz ? me.left : me.top; - - if (offset) { - pixel -= (valueDimension / 2); - } + function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; + } - if (pixel <= 0) { - value = 0; - } else { - value = Math.round(pixel / valueDimension); - } + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); - return value + me.minIndex; - }, - getBasePixel: function() { - return this.bottom; - } - }); + function weeks () { + return absFloor(this.days() / 7); + } - Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig); + var round = Math.round; + var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year + }; -}; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } -},{}],54:[function(require,module,exports){ -'use strict'; + function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } -var defaults = require(25); -var helpers = require(45); -var Ticks = require(34); + // This function allows you to set the rounding function for relative time strings + function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } -module.exports = function(Chart) { + // This function allows you to set a threshold for relative time strings + function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; + } - var defaultConfig = { - position: 'left', - ticks: { - callback: Ticks.formatters.linear - } - }; + function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } - var LinearScale = Chart.LinearScaleBase.extend({ + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - var DEFAULT_MIN = 0; - var DEFAULT_MAX = 1; + if (withSuffix) { + output = locale.pastFuture(+this, output); + } - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } + return locale.postformat(output); + } - // First Calculate the range - me.min = null; - me.max = null; + var abs$1 = Math.abs; - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } + function sign(x) { + return ((x > 0) - (x < 0)) || +x; + } - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } + function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - helpers.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); + var totalSign = total < 0 ? '-' : ''; + var ymSign = sign(this._months) !== sign(total) ? '-' : ''; + var daysSign = sign(this._days) !== sign(total) ? '-' : ''; + var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + + return totalSign + 'P' + + (Y ? ymSign + Y + 'Y' : '') + + (M ? ymSign + M + 'M' : '') + + (D ? daysSign + D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? hmsSign + h + 'H' : '') + + (m ? hmsSign + m + 'M' : '') + + (s ? hmsSign + s + 'S' : ''); + } - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = { - positiveValues: [], - negativeValues: [] - }; - } + var proto$2 = Duration.prototype; + + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); - // Store these per type - var positiveValues = valuesPerStack[key].positiveValues; - var negativeValues = valuesPerStack[key].negativeValues; - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - positiveValues[index] = positiveValues[index] || 0; - negativeValues[index] = negativeValues[index] || 0; - - if (opts.relativePoints) { - positiveValues[index] = 100; - } else if (value < 0) { - negativeValues[index] += value; - } else { - positiveValues[index] += value; - } - }); - } - }); + // Side effect imports + + + hooks.version = '2.24.0'; + + setHookCallback(createLocal); + + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; + + // currently HTML5 input type only supports 24-hour formats + hooks.HTML5_FMT = { + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" /> + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" /> + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" /> + DATE: 'YYYY-MM-DD', // <input type="date" /> + TIME: 'HH:mm', // <input type="time" /> + TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" /> + TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" /> + WEEK: 'GGGG-[W]WW', // <input type="week" /> + MONTH: 'YYYY-MM' // <input type="month" /> + }; - helpers.each(valuesPerStack, function(valuesForType) { - var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); - var minVal = helpers.min(values); - var maxVal = helpers.max(values); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - }); + return hooks; - } else { - helpers.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - }); - } - }); - } +}))); +}); - me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; - me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; +var FORMATS = { + datetime: 'MMM D, YYYY, h:mm:ss a', + millisecond: 'h:mm:ss.SSS a', + second: 'h:mm:ss a', + minute: 'h:mm a', + hour: 'hA', + day: 'MMM D', + week: 'll', + month: 'MMM YYYY', + quarter: '[Q]Q - YYYY', + year: 'YYYY' +}; - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - this.handleTickRangeOptions(); - }, - getTickLimit: function() { - var maxTicks; - var me = this; - var tickOpts = me.options.ticks; +core_adapters._date.override(typeof moment === 'function' ? { + _id: 'moment', // DEBUG ONLY - if (me.isHorizontal()) { - maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50)); - } else { - // The factor of 2 used to scale the font size has been experimentally determined. - var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize); - maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize))); - } + formats: function() { + return FORMATS; + }, - return maxTicks; - }, - // Called after the ticks are built. We need - handleDirectionalChanges: function() { - if (!this.isHorizontal()) { - // We are in a vertical orientation. The top value is the highest. So reverse the array - this.ticks.reverse(); - } - }, - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - // Utils - getPixelForValue: function(value) { - // This must be called after fit has been run so that - // this.left, this.top, this.right, and this.bottom have been defined - var me = this; - var start = me.start; + parse: function(value, format) { + if (typeof value === 'string' && typeof format === 'string') { + value = moment(value, format); + } else if (!(value instanceof moment)) { + value = moment(value); + } + return value.isValid() ? value.valueOf() : null; + }, - var rightValue = +me.getRightValue(value); - var pixel; - var range = me.end - start; + format: function(time, format) { + return moment(time).format(format); + }, - if (me.isHorizontal()) { - pixel = me.left + (me.width / range * (rightValue - start)); - } else { - pixel = me.bottom - (me.height / range * (rightValue - start)); - } - return pixel; - }, - getValueForPixel: function(pixel) { - var me = this; - var isHorizontal = me.isHorizontal(); - var innerDimension = isHorizontal ? me.width : me.height; - var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; - return me.start + ((me.end - me.start) * offset); - }, - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticksAsNumbers[index]); - } - }); - Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig); + add: function(time, amount, unit) { + return moment(time).add(amount, unit).valueOf(); + }, -}; + diff: function(max, min, unit) { + return moment(max).diff(moment(min), unit); + }, -},{"25":25,"34":34,"45":45}],55:[function(require,module,exports){ -'use strict'; + startOf: function(time, unit, weekday) { + time = moment(time); + if (unit === 'isoWeek') { + return time.isoWeekday(weekday).valueOf(); + } + return time.startOf(unit).valueOf(); + }, -var helpers = require(45); + endOf: function(time, unit) { + return moment(time).endOf(unit).valueOf(); + }, -/** - * Generate a set of linear ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {Array<Number>} array of tick values - */ -function generateTicks(generationOptions, dataRange) { - var ticks = []; - // To get a "nice" value for the tick spacing, we will use the appropriately named - // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks - // for details. + // DEPRECATIONS - var spacing; - if (generationOptions.stepSize && generationOptions.stepSize > 0) { - spacing = generationOptions.stepSize; - } else { - var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false); - spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true); - } - var niceMin = Math.floor(dataRange.min / spacing) * spacing; - var niceMax = Math.ceil(dataRange.max / spacing) * spacing; + /** + * Provided for backward compatibility with scale.getValueForPixel(). + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ + _create: function(time) { + return moment(time); + }, +} : {}); - // If min, max and stepSize is set and they make an evenly spaced scale use it. - if (generationOptions.min && generationOptions.max && generationOptions.stepSize) { - // If very close to our whole number, use it. - if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) { - niceMin = generationOptions.min; - niceMax = generationOptions.max; +core_defaults._set('global', { + plugins: { + filler: { + propagate: true } } +}); - var numSpaces = (niceMax - niceMin) / spacing; - // If very close to our rounded value, use it. - if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { - numSpaces = Math.round(numSpaces); - } else { - numSpaces = Math.ceil(numSpaces); - } +var mappers = { + dataset: function(source) { + var index = source.fill; + var chart = source.chart; + var meta = chart.getDatasetMeta(index); + var visible = meta && chart.isDatasetVisible(index); + var points = (visible && meta.dataset._children) || []; + var length = points.length || 0; - var precision = 1; - if (spacing < 1) { - precision = Math.pow(10, spacing.toString().length - 2); - niceMin = Math.round(niceMin * precision) / precision; - niceMax = Math.round(niceMax * precision) / precision; - } - ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin); - for (var j = 1; j < numSpaces; ++j) { - ticks.push(Math.round((niceMin + j * spacing) * precision) / precision); - } - ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax); + return !length ? null : function(point, i) { + return (i < length && points[i]._view) || null; + }; + }, - return ticks; -} + boundary: function(source) { + var boundary = source.boundary; + var x = boundary ? boundary.x : null; + var y = boundary ? boundary.y : null; + if (helpers$1.isArray(boundary)) { + return function(point, i) { + return boundary[i]; + }; + } -module.exports = function(Chart) { + return function(point) { + return { + x: x === null ? point.x : x, + y: y === null ? point.y : y, + }; + }; + } +}; - var noop = helpers.noop; +// @todo if (fill[0] === '#') +function decodeFill(el, index, count) { + var model = el._model || {}; + var fill = model.fill; + var target; - Chart.LinearScaleBase = Chart.Scale.extend({ - getRightValue: function(value) { - if (typeof value === 'string') { - return +value; - } - return Chart.Scale.prototype.getRightValue.call(this, value); - }, + if (fill === undefined) { + fill = !!model.backgroundColor; + } - handleTickRangeOptions: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, - // do nothing since that would make the chart weird. If the user really wants a weird chart - // axis, they can manually override it - if (tickOpts.beginAtZero) { - var minSign = helpers.sign(me.min); - var maxSign = helpers.sign(me.max); - - if (minSign < 0 && maxSign < 0) { - // move the top up to 0 - me.max = 0; - } else if (minSign > 0 && maxSign > 0) { - // move the bottom down to 0 - me.min = 0; - } - } + if (fill === false || fill === null) { + return false; + } - var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; - var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; + if (fill === true) { + return 'origin'; + } - if (tickOpts.min !== undefined) { - me.min = tickOpts.min; - } else if (tickOpts.suggestedMin !== undefined) { - if (me.min === null) { - me.min = tickOpts.suggestedMin; - } else { - me.min = Math.min(me.min, tickOpts.suggestedMin); - } - } + target = parseFloat(fill, 10); + if (isFinite(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } - if (tickOpts.max !== undefined) { - me.max = tickOpts.max; - } else if (tickOpts.suggestedMax !== undefined) { - if (me.max === null) { - me.max = tickOpts.suggestedMax; - } else { - me.max = Math.max(me.max, tickOpts.suggestedMax); - } - } + if (target === index || target < 0 || target >= count) { + return false; + } - if (setMin !== setMax) { - // We set the min or the max but not both. - // So ensure that our range is good - // Inverted or 0 length range can happen when - // ticks.min is set, and no datasets are visible - if (me.min >= me.max) { - if (setMin) { - me.max = me.min + 1; - } else { - me.min = me.max - 1; - } - } - } + return target; + } - if (me.min === me.max) { - me.max++; + switch (fill) { + // compatibility + case 'bottom': + return 'start'; + case 'top': + return 'end'; + case 'zero': + return 'origin'; + // supported boundaries + case 'origin': + case 'start': + case 'end': + return fill; + // invalid fill values + default: + return false; + } +} - if (!tickOpts.beginAtZero) { - me.min--; - } - } - }, - getTickLimit: noop, - handleDirectionalChanges: noop, - - buildTicks: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // Figure out what the max number of ticks we can support it is based on the size of - // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 - // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on - // the graph. Make sure we always have at least 2 ticks - var maxTicks = me.getTickLimit(); - maxTicks = Math.max(2, maxTicks); - - var numericGeneratorOptions = { - maxTicks: maxTicks, - min: tickOpts.min, - max: tickOpts.max, - stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) - }; - var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); +function computeLinearBoundary(source) { + var model = source.el._model || {}; + var scale = source.el._scale || {}; + var fill = source.fill; + var target = null; + var horizontal; - me.handleDirectionalChanges(); + if (isFinite(fill)) { + return null; + } - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers.max(ticks); - me.min = helpers.min(ticks); + // Backward compatibility: until v3, we still need to support boundary values set on + // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and + // controllers might still use it (e.g. the Smith chart). - if (tickOpts.reverse) { - ticks.reverse(); + if (fill === 'start') { + target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; + } else if (fill === 'end') { + target = model.scaleTop === undefined ? scale.top : model.scaleTop; + } else if (model.scaleZero !== undefined) { + target = model.scaleZero; + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - }, - convertTicksToLabels: function() { - var me = this; - me.ticksAsNumbers = me.ticks.slice(); - me.zeroLineIndex = me.ticks.indexOf(0); + if (target !== undefined && target !== null) { + if (target.x !== undefined && target.y !== undefined) { + return target; + } - Chart.Scale.prototype.convertTicksToLabels.call(me); + if (helpers$1.isFinite(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; } - }); -}; + } -},{"45":45}],56:[function(require,module,exports){ -'use strict'; + return null; +} -var helpers = require(45); -var Ticks = require(34); +function computeCircularBoundary(source) { + var scale = source.el._scale; + var options = scale.options; + var length = scale.chart.data.labels.length; + var fill = source.fill; + var target = []; + var start, end, center, i, point; -/** - * Generate a set of logarithmic ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {Array<Number>} array of tick values - */ -function generateTicks(generationOptions, dataRange) { - var ticks = []; - var valueOrDefault = helpers.valueOrDefault; + if (!length) { + return null; + } - // Figure out what the max number of ticks we can support it is based on the size of - // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 - // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on - // the graph - var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min)))); + start = options.ticks.reverse ? scale.max : scale.min; + end = options.ticks.reverse ? scale.min : scale.max; + center = scale.getPointPositionForValue(0, start); + for (i = 0; i < length; ++i) { + point = fill === 'start' || fill === 'end' + ? scale.getPointPositionForValue(i, fill === 'start' ? start : end) + : scale.getBasePosition(i); + if (options.gridLines.circular) { + point.cx = center.x; + point.cy = center.y; + point.angle = scale.getIndexAngle(i) - Math.PI / 2; + } + target.push(point); + } + return target; +} - var endExp = Math.floor(helpers.log10(dataRange.max)); - var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); - var exp, significand; +function computeBoundary(source) { + var scale = source.el._scale || {}; - if (tickVal === 0) { - exp = Math.floor(helpers.log10(dataRange.minNotZero)); - significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); + if (scale.getPointPositionForValue) { + return computeCircularBoundary(source); + } + return computeLinearBoundary(source); +} - ticks.push(tickVal); - tickVal = significand * Math.pow(10, exp); - } else { - exp = Math.floor(helpers.log10(tickVal)); - significand = Math.floor(tickVal / Math.pow(10, exp)); +function resolveTarget(sources, index, propagate) { + var source = sources[index]; + var fill = source.fill; + var visited = [index]; + var target; + + if (!propagate) { + return fill; } - var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - do { - ticks.push(tickVal); + while (fill !== false && visited.indexOf(fill) === -1) { + if (!isFinite(fill)) { + return fill; + } - ++significand; - if (significand === 10) { - significand = 1; - ++exp; - precision = exp >= 0 ? 1 : precision; + target = sources[fill]; + if (!target) { + return false; } - tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; - } while (exp < endExp || (exp === endExp && significand < endSignificand)); + if (target.visible) { + return fill; + } - var lastTick = valueOrDefault(generationOptions.max, tickVal); - ticks.push(lastTick); + visited.push(fill); + fill = target.fill; + } - return ticks; + return false; } +function createMapper(source) { + var fill = source.fill; + var type = 'dataset'; -module.exports = function(Chart) { - - var defaultConfig = { - position: 'left', + if (fill === false) { + return null; + } - // label settings - ticks: { - callback: Ticks.formatters.logarithmic - } - }; + if (!isFinite(fill)) { + type = 'boundary'; + } - var LogarithmicScale = Chart.Scale.extend({ - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } + return mappers[type](source); +} - // Calculate Range - me.min = null; - me.max = null; - me.minNotZero = null; +function isDrawable(point) { + return point && !point.skip; +} - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } +function drawArea(ctx, curve0, curve1, len0, len1) { + var i, cx, cy, r; - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } + if (!len0 || !len1) { + return; + } - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; - - helpers.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = []; - } + // building first area curve (normal) + ctx.moveTo(curve0[0].x, curve0[0].y); + for (i = 1; i < len0; ++i) { + helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); + } - helpers.each(dataset.data, function(rawValue, index) { - var values = valuesPerStack[key]; - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - values[index] = values[index] || 0; - values[index] += value; - }); - } - }); + if (curve1[0].angle !== undefined) { + cx = curve1[0].cx; + cy = curve1[0].cy; + r = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2)); + for (i = len1 - 1; i > 0; --i) { + ctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true); + } + return; + } - helpers.each(valuesPerStack, function(valuesForType) { - if (valuesForType.length > 0) { - var minVal = helpers.min(valuesForType); - var maxVal = helpers.max(valuesForType); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - } - }); + // joining the two area curves + ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); - } else { - helpers.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - - if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { - me.minNotZero = value; - } - }); - } - }); - } + // building opposite area curve (reverse) + for (i = len1 - 1; i > 0; --i) { + helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + } +} - // Common base implementation to handle ticks.min, ticks.max - this.handleTickRangeOptions(); - }, - handleTickRangeOptions: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - var valueOrDefault = helpers.valueOrDefault; - var DEFAULT_MIN = 1; - var DEFAULT_MAX = 10; - - me.min = valueOrDefault(tickOpts.min, me.min); - me.max = valueOrDefault(tickOpts.max, me.max); - - if (me.min === me.max) { - if (me.min !== 0 && me.min !== null) { - me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1); - me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1); - } else { - me.min = DEFAULT_MIN; - me.max = DEFAULT_MAX; - } - } - if (me.min === null) { - me.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1); - } - if (me.max === null) { - me.max = me.min !== 0 - ? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1) - : DEFAULT_MAX; - } - if (me.minNotZero === null) { - if (me.min > 0) { - me.minNotZero = me.min; - } else if (me.max < 1) { - me.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max))); - } else { - me.minNotZero = DEFAULT_MIN; - } - } - }, - buildTicks: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - var reverse = !me.isHorizontal(); - - var generationOptions = { - min: tickOpts.min, - max: tickOpts.max - }; - var ticks = me.ticks = generateTicks(generationOptions, me); +function doFill(ctx, points, mapper, view, color, loop) { + var count = points.length; + var span = view.spanGaps; + var curve0 = []; + var curve1 = []; + var len0 = 0; + var len1 = 0; + var i, ilen, index, p0, p1, d0, d1, loopOffset; - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers.max(ticks); - me.min = helpers.min(ticks); + ctx.beginPath(); - if (tickOpts.reverse) { - reverse = !reverse; - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - if (reverse) { - ticks.reverse(); - } - }, - convertTicksToLabels: function() { - this.tickValues = this.ticks.slice(); + for (i = 0, ilen = count; i < ilen; ++i) { + index = i % count; + p0 = points[index]._view; + p1 = mapper(p0, index, view); + d0 = isDrawable(p0); + d1 = isDrawable(p1); - Chart.Scale.prototype.convertTicksToLabels.call(this); - }, - // Get the correct tooltip label - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - getPixelForTick: function(index) { - return this.getPixelForValue(this.tickValues[index]); - }, - /** - * Returns the value of the first tick. - * @param {Number} value - The minimum not zero value. - * @return {Number} The first tick value. - * @private - */ - _getFirstTickValue: function(value) { - var exp = Math.floor(helpers.log10(value)); - var significand = Math.floor(value / Math.pow(10, exp)); + if (loop && loopOffset === undefined && d0) { + loopOffset = i + 1; + ilen = count + loopOffset; + } - return significand * Math.pow(10, exp); - }, - getPixelForValue: function(value) { - var me = this; - var reverse = me.options.ticks.reverse; - var log10 = helpers.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var offset = 0; - var innerDimension, pixel, start, end, sign; - - value = +me.getRightValue(value); - if (reverse) { - start = me.end; - end = me.start; - sign = -1; - } else { - start = me.start; - end = me.end; - sign = 1; - } - if (me.isHorizontal()) { - innerDimension = me.width; - pixel = reverse ? me.right : me.left; + if (d0 && d1) { + len0 = curve0.push(p0); + len1 = curve1.push(p1); + } else if (len0 && len1) { + if (!span) { + drawArea(ctx, curve0, curve1, len0, len1); + len0 = len1 = 0; + curve0 = []; + curve1 = []; } else { - innerDimension = me.height; - sign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0) - pixel = reverse ? me.top : me.bottom; - } - if (value !== start) { - if (start === 0) { // include zero tick - offset = helpers.getValueOrDefault( - me.options.ticks.fontSize, - Chart.defaults.global.defaultFontSize - ); - innerDimension -= offset; - start = firstTickValue; - } - if (value !== 0) { - offset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start)); + if (d0) { + curve0.push(p0); } - pixel += sign * offset; - } - return pixel; - }, - getValueForPixel: function(pixel) { - var me = this; - var reverse = me.options.ticks.reverse; - var log10 = helpers.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var innerDimension, start, end, value; - - if (reverse) { - start = me.end; - end = me.start; - } else { - start = me.start; - end = me.end; - } - if (me.isHorizontal()) { - innerDimension = me.width; - value = reverse ? me.right - pixel : pixel - me.left; - } else { - innerDimension = me.height; - value = reverse ? pixel - me.top : me.bottom - pixel; - } - if (value !== start) { - if (start === 0) { // include zero tick - var offset = helpers.getValueOrDefault( - me.options.ticks.fontSize, - Chart.defaults.global.defaultFontSize - ); - value -= offset; - innerDimension -= offset; - start = firstTickValue; + if (d1) { + curve1.push(p1); } - value *= log10(end) - log10(start); - value /= innerDimension; - value = Math.pow(10, log10(start) + value); } - return value; } - }); - Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); - -}; - -},{"34":34,"45":45}],57:[function(require,module,exports){ -'use strict'; - -var defaults = require(25); -var helpers = require(45); -var Ticks = require(34); + } -module.exports = function(Chart) { + drawArea(ctx, curve0, curve1, len0, len1); - var globalDefaults = defaults.global; + ctx.closePath(); + ctx.fillStyle = color; + ctx.fill(); +} - var defaultConfig = { - display: true, +var plugin_filler = { + id: 'filler', - // Boolean - Whether to animate scaling the chart from the centre - animate: true, - position: 'chartArea', + afterDatasetsUpdate: function(chart, options) { + var count = (chart.data.datasets || []).length; + var propagate = options.propagate; + var sources = []; + var meta, i, el, source; - angleLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1 - }, + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + el = meta.dataset; + source = null; - gridLines: { - circular: false - }, + if (el && el._model && el instanceof elements.Line) { + source = { + visible: chart.isDatasetVisible(i), + fill: decodeFill(el, i, count), + chart: chart, + el: el + }; + } - // label settings - ticks: { - // Boolean - Show a backdrop to the scale label - showLabelBackdrop: true, + meta.$filler = source; + sources.push(source); + } - // String - The colour of the label backdrop - backdropColor: 'rgba(255,255,255,0.75)', + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source) { + continue; + } - // Number - The backdrop padding above & below the label in pixels - backdropPaddingY: 2, + source.fill = resolveTarget(sources, i, propagate); + source.boundary = computeBoundary(source); + source.mapper = createMapper(source); + } + }, - // Number - The backdrop padding to the side of the label in pixels - backdropPaddingX: 2, + beforeDatasetsDraw: function(chart) { + var metasets = chart._getSortedVisibleDatasetMetas(); + var ctx = chart.ctx; + var meta, i, el, view, points, mapper, color; - callback: Ticks.formatters.linear - }, + for (i = metasets.length - 1; i >= 0; --i) { + meta = metasets[i].$filler; - pointLabels: { - // Boolean - if true, show point labels - display: true, + if (!meta || !meta.visible) { + continue; + } - // Number - Point label font size in pixels - fontSize: 10, + el = meta.el; + view = el._view; + points = el._children || []; + mapper = meta.mapper; + color = view.backgroundColor || core_defaults.global.defaultColor; - // Function - Used to convert point labels - callback: function(label) { - return label; + if (mapper && color && points.length) { + helpers$1.canvas.clipArea(ctx, chart.chartArea); + doFill(ctx, points, mapper, view, color, el._loop); + helpers$1.canvas.unclipArea(ctx); } } - }; - - function getValueCount(scale) { - var opts = scale.options; - return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; } +}; - function getPointLabelFontOptions(scale) { - var pointLabelOptions = scale.options.pointLabels; - var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize); - var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle); - var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily); - var font = helpers.fontString(fontSize, fontStyle, fontFamily); +var getRtlHelper$1 = helpers$1.rtl.getRtlAdapter; +var noop$1 = helpers$1.noop; +var valueOrDefault$e = helpers$1.valueOrDefault; - return { - size: fontSize, - style: fontStyle, - family: fontFamily, - font: font - }; - } +core_defaults._set('global', { + legend: { + display: true, + position: 'top', + align: 'center', + fullWidth: true, + reverse: false, + weight: 1000, - function measureLabelSize(ctx, fontSize, label) { - if (helpers.isArray(label)) { - return { - w: helpers.longestText(ctx, ctx.font, label), - h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize) - }; - } + // a callback that will handle + onClick: function(e, legendItem) { + var index = legendItem.datasetIndex; + var ci = this.chart; + var meta = ci.getDatasetMeta(index); - return { - w: ctx.measureText(label).width, - h: fontSize - }; - } + // See controller.isDatasetVisible comment + meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; - function determineLimits(angle, pos, size, min, max) { - if (angle === min || angle === max) { - return { - start: pos - (size / 2), - end: pos + (size / 2) - }; - } else if (angle < min || angle > max) { - return { - start: pos - size - 5, - end: pos - }; - } + // We hid a dataset ... rerender the chart + ci.update(); + }, - return { - start: pos, - end: pos + size + 5 - }; - } + onHover: null, + onLeave: null, - /** - * Helper function to fit a radial linear scale with point labels - */ - function fitWithPointLabels(scale) { - /* - * Right, this is really confusing and there is a lot of maths going on here - * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 - * - * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif - * - * Solution: - * - * We assume the radius of the polygon is half the size of the canvas at first - * at each index we check if the text overlaps. - * - * Where it does, we store that angle and that index. - * - * After finding the largest index and angle we calculate how much we need to remove - * from the shape radius to move the point inwards by that x. - * - * We average the left and right distances to get the maximum shape radius that can fit in the box - * along with labels. - * - * Once we have that, we can find the centre point for the chart, by taking the x text protrusion - * on each side, removing that from the size, halving it and adding the left x protrusion width. - * - * This will mean we have a shape fitted to the canvas, as large as it can be with the labels - * and position it in the most space efficient manner - * - * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif - */ + labels: { + boxWidth: 40, + padding: 10, + // Generates labels shown in the legend + // Valid properties to return: + // text : text to display + // fillStyle : fill of coloured box + // strokeStyle: stroke of coloured box + // hidden : if this legend item refers to a hidden item + // lineCap : cap style for line + // lineDash + // lineDashOffset : + // lineJoin : + // lineWidth : + generateLabels: function(chart) { + var datasets = chart.data.datasets; + var options = chart.options.legend || {}; + var usePointStyle = options.labels && options.labels.usePointStyle; - var plFont = getPointLabelFontOptions(scale); + return chart._getSortedDatasetMetas().map(function(meta) { + var style = meta.controller.getStyle(usePointStyle ? 0 : undefined); - // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. - // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points - var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); - var furthestLimits = { - r: scale.width, - l: 0, - t: scale.height, - b: 0 - }; - var furthestAngles = {}; - var i, textSize, pointPosition; - - scale.ctx.font = plFont.font; - scale._pointLabelSizes = []; - - var valueCount = getValueCount(scale); - for (i = 0; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, largestPossibleRadius); - textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || ''); - scale._pointLabelSizes[i] = textSize; - - // Add quarter circle to make degree 0 mean top of circle - var angleRadians = scale.getIndexAngle(i); - var angle = helpers.toDegrees(angleRadians) % 360; - var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); - var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); - - if (hLimits.start < furthestLimits.l) { - furthestLimits.l = hLimits.start; - furthestAngles.l = angleRadians; - } + return { + text: datasets[meta.index].label, + fillStyle: style.backgroundColor, + hidden: !chart.isDatasetVisible(meta.index), + lineCap: style.borderCapStyle, + lineDash: style.borderDash, + lineDashOffset: style.borderDashOffset, + lineJoin: style.borderJoinStyle, + lineWidth: style.borderWidth, + strokeStyle: style.borderColor, + pointStyle: style.pointStyle, + rotation: style.rotation, - if (hLimits.end > furthestLimits.r) { - furthestLimits.r = hLimits.end; - furthestAngles.r = angleRadians; + // Below is extra data used for toggling the datasets + datasetIndex: meta.index + }; + }, this); } + } + }, - if (vLimits.start < furthestLimits.t) { - furthestLimits.t = vLimits.start; - furthestAngles.t = angleRadians; - } + legendCallback: function(chart) { + var list = document.createElement('ul'); + var datasets = chart.data.datasets; + var i, ilen, listItem, listItemSpan; + + list.setAttribute('class', chart.id + '-legend'); - if (vLimits.end > furthestLimits.b) { - furthestLimits.b = vLimits.end; - furthestAngles.b = angleRadians; + for (i = 0, ilen = datasets.length; i < ilen; i++) { + listItem = list.appendChild(document.createElement('li')); + listItemSpan = listItem.appendChild(document.createElement('span')); + listItemSpan.style.backgroundColor = datasets[i].backgroundColor; + if (datasets[i].label) { + listItem.appendChild(document.createTextNode(datasets[i].label)); } } - scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles); + return list.outerHTML; } +}); - /** - * Helper function to fit a radial linear scale with no point labels - */ - function fit(scale) { - var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); - scale.drawingArea = Math.round(largestPossibleRadius); - scale.setCenterPoint(0, 0, 0, 0); - } +/** + * Helper function to get the box width based on the usePointStyle option + * @param {object} labelopts - the label options on the legend + * @param {number} fontSize - the label font size + * @return {number} width of the color box area + */ +function getBoxWidth(labelOpts, fontSize) { + return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? + fontSize : + labelOpts.boxWidth; +} - function getTextAlignForAngle(angle) { - if (angle === 0 || angle === 180) { - return 'center'; - } else if (angle < 180) { - return 'left'; - } +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Legend = core_element.extend({ - return 'right'; - } + initialize: function(config) { + var me = this; + helpers$1.extend(me, config); - function fillText(ctx, text, position, fontSize) { - if (helpers.isArray(text)) { - var y = position.y; - var spacing = 1.5 * fontSize; + // Contains hit boxes for each dataset (in dataset order) + me.legendHitBoxes = []; - for (var i = 0; i < text.length; ++i) { - ctx.fillText(text[i], position.x, y); - y += spacing; - } - } else { - ctx.fillText(text, position.x, position.y); - } - } + /** + * @private + */ + me._hoveredItem = null; - function adjustPointPositionForLabelHeight(angle, textSize, position) { - if (angle === 90 || angle === 270) { - position.y -= (textSize.h / 2); - } else if (angle > 270 || angle < 90) { - position.y -= textSize.h; - } - } + // Are we in doughnut mode which has a different data type + me.doughnutMode = false; + }, - function drawPointLabels(scale) { - var ctx = scale.ctx; - var opts = scale.options; - var angleLineOpts = opts.angleLines; - var pointLabelOpts = opts.pointLabels; + // These methods are ordered by lifecycle. Utilities then follow. + // Any function defined here is inherited by all legend types. + // Any function can be extended by the legend type + + beforeUpdate: noop$1, + update: function(maxWidth, maxHeight, margins) { + var me = this; - ctx.lineWidth = angleLineOpts.lineWidth; - ctx.strokeStyle = angleLineOpts.color; + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); - var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; - // Point Label Font - var plFont = getPointLabelFontOptions(scale); + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); - ctx.textBaseline = 'top'; + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); - for (var i = getValueCount(scale) - 1; i >= 0; i--) { - if (angleLineOpts.display) { - var outerPosition = scale.getPointPosition(i, outerDistance); - ctx.beginPath(); - ctx.moveTo(scale.xCenter, scale.yCenter); - ctx.lineTo(outerPosition.x, outerPosition.y); - ctx.stroke(); - ctx.closePath(); - } + return me.minSize; + }, + afterUpdate: noop$1, - if (pointLabelOpts.display) { - // Extra 3px out for some label spacing - var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); + // - // Keep this in loop since we may support array properties here - var pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor); - ctx.font = plFont.font; - ctx.fillStyle = pointLabelFontColor; + beforeSetDimensions: noop$1, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; - var angleRadians = scale.getIndexAngle(i); - var angle = helpers.toDegrees(angleRadians); - ctx.textAlign = getTextAlignForAngle(angle); - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); - fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); - } + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; } - } - function drawRadiusLine(scale, gridLineOpts, radius, index) { - var ctx = scale.ctx; - ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1); - ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1); + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; - if (scale.options.gridLines.circular) { - // Draw circular arcs between the points - ctx.beginPath(); - ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); - ctx.closePath(); - ctx.stroke(); - } else { - // Draw straight lines connecting each index - var valueCount = getValueCount(scale); + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop$1, - if (valueCount === 0) { - return; - } + // - ctx.beginPath(); - var pointPosition = scale.getPointPosition(0, radius); - ctx.moveTo(pointPosition.x, pointPosition.y); + beforeBuildLabels: noop$1, + buildLabels: function() { + var me = this; + var labelOpts = me.options.labels || {}; + var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || []; - for (var i = 1; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, radius); - ctx.lineTo(pointPosition.x, pointPosition.y); - } + if (labelOpts.filter) { + legendItems = legendItems.filter(function(item) { + return labelOpts.filter(item, me.chart.data); + }); + } - ctx.closePath(); - ctx.stroke(); + if (me.options.reverse) { + legendItems.reverse(); } - } - function numberOrZero(param) { - return helpers.isNumber(param) ? param : 0; - } + me.legendItems = legendItems; + }, + afterBuildLabels: noop$1, - var LinearRadialScale = Chart.LinearScaleBase.extend({ - setDimensions: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - // Set the unconstrained dimension before label rotation - me.width = me.maxWidth; - me.height = me.maxHeight; - me.xCenter = Math.round(me.width / 2); - me.yCenter = Math.round(me.height / 2); + // - var minSize = helpers.min([me.height, me.width]); - var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); - me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2); - }, - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var min = Number.POSITIVE_INFINITY; - var max = Number.NEGATIVE_INFINITY; - - helpers.each(chart.data.datasets, function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - - helpers.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } + beforeFit: noop$1, + fit: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var display = opts.display; - min = Math.min(value, min); - max = Math.max(value, max); - }); - } - }); + var ctx = me.ctx; - me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); - me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); + var labelFont = helpers$1.options._parseFont(labelOpts); + var fontSize = labelFont.size; - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - me.handleTickRangeOptions(); - }, - getTickLimit: function() { - var tickOpts = this.options.ticks; - var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); - return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize))); - }, - convertTicksToLabels: function() { - var me = this; + // Reset hit boxes + var hitboxes = me.legendHitBoxes = []; - Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me); + var minSize = me.minSize; + var isHorizontal = me.isHorizontal(); - // Point labels - me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); - }, - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - fit: function() { - if (this.options.pointLabels.display) { - fitWithPointLabels(this); - } else { - fit(this); - } - }, - /** - * Set radius reductions and determine new radius and center point - * @private - */ - setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { - var me = this; - var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); - var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); - var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); - var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b); - - radiusReductionLeft = numberOrZero(radiusReductionLeft); - radiusReductionRight = numberOrZero(radiusReductionRight); - radiusReductionTop = numberOrZero(radiusReductionTop); - radiusReductionBottom = numberOrZero(radiusReductionBottom); - - me.drawingArea = Math.min( - Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), - Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); - me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); - }, - setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { - var me = this; - var maxRight = me.width - rightMovement - me.drawingArea; - var maxLeft = leftMovement + me.drawingArea; - var maxTop = topMovement + me.drawingArea; - var maxBottom = me.height - bottomMovement - me.drawingArea; - - me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left); - me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top); - }, + if (isHorizontal) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = display ? 10 : 0; + } else { + minSize.width = display ? 10 : 0; + minSize.height = me.maxHeight; // fill all the height + } - getIndexAngle: function(index) { - var angleMultiplier = (Math.PI * 2) / getValueCount(this); - var startAngle = this.chart.options && this.chart.options.startAngle ? - this.chart.options.startAngle : - 0; + // Increase sizes here + if (!display) { + me.width = minSize.width = me.height = minSize.height = 0; + return; + } + ctx.font = labelFont.string; - var startAngleRadians = startAngle * Math.PI * 2 / 360; + if (isHorizontal) { + // Labels - // Start from the top instead of right, so remove a quarter of the circle - return index * angleMultiplier + startAngleRadians; - }, - getDistanceFromCenterForValue: function(value) { - var me = this; + // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one + var lineWidths = me.lineWidths = [0]; + var totalHeight = 0; - if (value === null) { - return 0; // null always in center - } + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; - // Take into account half font size + the yPadding of the top value - var scalingFactor = me.drawingArea / (me.max - me.min); - if (me.options.ticks.reverse) { - return (me.max - value) * scalingFactor; - } - return (value - me.min) * scalingFactor; - }, - getPointPosition: function(index, distanceFromCenter) { - var me = this; - var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); - return { - x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter, - y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter - }; - }, - getPointPositionForValue: function(index, value) { - return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); - }, + helpers$1.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - getBasePosition: function() { - var me = this; - var min = me.min; - var max = me.max; + if (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) { + totalHeight += fontSize + labelOpts.padding; + lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; + } - return me.getPointPositionForValue(0, - me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0); - }, + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: width, + height: fontSize + }; - draw: function() { - var me = this; - var opts = me.options; - var gridLineOpts = opts.gridLines; - var tickOpts = opts.ticks; - var valueOrDefault = helpers.valueOrDefault; - - if (opts.display) { - var ctx = me.ctx; - var startAngle = this.getIndexAngle(0); - - // Tick Font - var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); - var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle); - var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily); - var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily); - - helpers.each(me.ticks, function(label, index) { - // Don't draw a centre value (if it is minimum) - if (index > 0 || tickOpts.reverse) { - var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); - - // Draw circular lines around the scale - if (gridLineOpts.display && index !== 0) { - drawRadiusLine(me, gridLineOpts, yCenterOffset, index); - } + lineWidths[lineWidths.length - 1] += width + labelOpts.padding; + }); - if (tickOpts.display) { - var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor); - ctx.font = tickLabelFont; - - ctx.save(); - ctx.translate(me.xCenter, me.yCenter); - ctx.rotate(startAngle); - - if (tickOpts.showLabelBackdrop) { - var labelWidth = ctx.measureText(label).width; - ctx.fillStyle = tickOpts.backdropColor; - ctx.fillRect( - -labelWidth / 2 - tickOpts.backdropPaddingX, - -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY, - labelWidth + tickOpts.backdropPaddingX * 2, - tickFontSize + tickOpts.backdropPaddingY * 2 - ); - } - - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = tickFontColor; - ctx.fillText(label, 0, -yCenterOffset); - ctx.restore(); - } - } - }); + minSize.height += totalHeight; - if (opts.angleLines.display || opts.pointLabels.display) { - drawPointLabels(me); + } else { + var vPadding = labelOpts.padding; + var columnWidths = me.columnWidths = []; + var columnHeights = me.columnHeights = []; + var totalWidth = labelOpts.padding; + var currentColWidth = 0; + var currentColHeight = 0; + + helpers$1.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + // If too tall, go to new column + if (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) { + totalWidth += currentColWidth + labelOpts.padding; + columnWidths.push(currentColWidth); // previous column width + columnHeights.push(currentColHeight); + currentColWidth = 0; + currentColHeight = 0; } - } - } - }); - Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); - -}; -},{"25":25,"34":34,"45":45}],58:[function(require,module,exports){ -/* global window: false */ -'use strict'; + // Get max width + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += fontSize + vPadding; -var moment = require(6); -moment = typeof moment === 'function' ? moment : window.moment; - -var defaults = require(25); -var helpers = require(45); + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: itemWidth, + height: fontSize + }; + }); -// Integer constants are from the ES6 spec. -var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; -var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + totalWidth += currentColWidth; + columnWidths.push(currentColWidth); + columnHeights.push(currentColHeight); + minSize.width += totalWidth; + } -var INTERVALS = { - millisecond: { - common: true, - size: 1, - steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] - }, - second: { - common: true, - size: 1000, - steps: [1, 2, 5, 10, 30] - }, - minute: { - common: true, - size: 60000, - steps: [1, 2, 5, 10, 30] - }, - hour: { - common: true, - size: 3600000, - steps: [1, 2, 3, 6, 12] - }, - day: { - common: true, - size: 86400000, - steps: [1, 2, 5] - }, - week: { - common: false, - size: 604800000, - steps: [1, 2, 3, 4] - }, - month: { - common: true, - size: 2.628e9, - steps: [1, 2, 3] - }, - quarter: { - common: false, - size: 7.884e9, - steps: [1, 2, 3, 4] + me.width = minSize.width; + me.height = minSize.height; }, - year: { - common: true, - size: 3.154e10 - } -}; - -var UNITS = Object.keys(INTERVALS); + afterFit: noop$1, -function sorter(a, b) { - return a - b; -} + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, -function arrayUnique(items) { - var hash = {}; - var out = []; - var i, ilen, item; + // Actually draw the legend on the canvas + draw: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var globalDefaults = core_defaults.global; + var defaultColor = globalDefaults.defaultColor; + var lineDefault = globalDefaults.elements.line; + var legendHeight = me.height; + var columnHeights = me.columnHeights; + var legendWidth = me.width; + var lineWidths = me.lineWidths; - for (i = 0, ilen = items.length; i < ilen; ++i) { - item = items[i]; - if (!hash[item]) { - hash[item] = true; - out.push(item); + if (!opts.display) { + return; } - } - return out; -} + var rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width); + var ctx = me.ctx; + var fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor); + var labelFont = helpers$1.options._parseFont(labelOpts); + var fontSize = labelFont.size; + var cursor; + + // Canvas setup + ctx.textAlign = rtlHelper.textAlign('left'); + ctx.textBaseline = 'middle'; + ctx.lineWidth = 0.5; + ctx.strokeStyle = fontColor; // for strikethrough effect + ctx.fillStyle = fontColor; // render in correct colour + ctx.font = labelFont.string; + + var boxWidth = getBoxWidth(labelOpts, fontSize); + var hitboxes = me.legendHitBoxes; + + // current position + var drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0) { + return; + } -/** - * Returns an array of {time, pos} objects used to interpolate a specific `time` or position - * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is - * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other - * extremity (left + width or top + height). Note that it would be more optimized to directly - * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need - * to create the lookup table. The table ALWAYS contains at least two items: min and max. - * - * @param {Number[]} timestamps - timestamps sorted from lowest to highest. - * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min - * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. - * If 'series', timestamps will be positioned at the same distance from each other. In this - * case, only timestamps that break the time linearity are registered, meaning that in the - * best case, all timestamps are linear, the table contains only min and max. - */ -function buildLookupTable(timestamps, min, max, distribution) { - if (distribution === 'linear' || !timestamps.length) { - return [ - {time: min, pos: 0}, - {time: max, pos: 1} - ]; - } + // Set the ctx for the box + ctx.save(); - var table = []; - var items = [min]; - var i, ilen, prev, curr, next; + var lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth); + ctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor); + ctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle); + ctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset); + ctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor); - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - curr = timestamps[i]; - if (curr > min && curr < max) { - items.push(curr); - } - } + if (ctx.setLineDash) { + // IE 9 and 10 do not support line dash + ctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash)); + } - items.push(max); + if (labelOpts && labelOpts.usePointStyle) { + // Recalculate x and y for drawPoint() because its expecting + // x and y to be center of figure (instead of top left) + var radius = boxWidth * Math.SQRT2 / 2; + var centerX = rtlHelper.xPlus(x, boxWidth / 2); + var centerY = y + fontSize / 2; - for (i = 0, ilen = items.length; i < ilen; ++i) { - next = items[i + 1]; - prev = items[i - 1]; - curr = items[i]; + // Draw pointStyle as legend symbol + helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation); + } else { + // Draw box as legend symbol + ctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize); + if (lineWidth !== 0) { + ctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize); + } + } - // only add points that breaks the scale linearity - if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { - table.push({time: curr, pos: i / (ilen - 1)}); - } - } + ctx.restore(); + }; - return table; -} + var fillText = function(x, y, legendItem, textWidth) { + var halfFontSize = fontSize / 2; + var xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize); + var yMiddle = y + halfFontSize; -// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ -function lookup(table, key, value) { - var lo = 0; - var hi = table.length - 1; - var mid, i0, i1; + ctx.fillText(legendItem.text, xLeft, yMiddle); - while (lo >= 0 && lo <= hi) { - mid = (lo + hi) >> 1; - i0 = table[mid - 1] || null; - i1 = table[mid]; + if (legendItem.hidden) { + // Strikethrough the text if hidden + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.moveTo(xLeft, yMiddle); + ctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle); + ctx.stroke(); + } + }; - if (!i0) { - // given value is outside table (before first item) - return {lo: null, hi: i1}; - } else if (i1[key] < value) { - lo = mid + 1; - } else if (i0[key] > value) { - hi = mid - 1; + var alignmentOffset = function(dimension, blockSize) { + switch (opts.align) { + case 'start': + return labelOpts.padding; + case 'end': + return dimension - blockSize; + default: // center + return (dimension - blockSize + labelOpts.padding) / 2; + } + }; + + // Horizontal + var isHorizontal = me.isHorizontal(); + if (isHorizontal) { + cursor = { + x: me.left + alignmentOffset(legendWidth, lineWidths[0]), + y: me.top + labelOpts.padding, + line: 0 + }; } else { - return {lo: i0, hi: i1}; + cursor = { + x: me.left + labelOpts.padding, + y: me.top + alignmentOffset(legendHeight, columnHeights[0]), + line: 0 + }; } - } - // given value is outside table (after last item) - return {lo: i1, hi: null}; -} + helpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection); -/** - * Linearly interpolates the given source `value` using the table items `skey` values and - * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') - * returns the position for a timestamp equal to 42. If value is out of bounds, values at - * index [0, 1] or [n - 1, n] are used for the interpolation. - */ -function interpolate(table, skey, sval, tkey) { - var range = lookup(table, skey, sval); + var itemHeight = fontSize + labelOpts.padding; + helpers$1.each(me.legendItems, function(legendItem, i) { + var textWidth = ctx.measureText(legendItem.text).width; + var width = boxWidth + (fontSize / 2) + textWidth; + var x = cursor.x; + var y = cursor.y; - // Note: the lookup table ALWAYS contains at least 2 items (min and max) - var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; - var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; + rtlHelper.setWidth(me.minSize.width); - var span = next[skey] - prev[skey]; - var ratio = span ? (sval - prev[skey]) / span : 0; - var offset = (next[tkey] - prev[tkey]) * ratio; + // Use (me.left + me.minSize.width) and (me.top + me.minSize.height) + // instead of me.right and me.bottom because me.width and me.height + // may have been changed since me.minSize was calculated + if (isHorizontal) { + if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) { + y = cursor.y += itemHeight; + cursor.line++; + x = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]); + } + } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) { + x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; + cursor.line++; + y = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]); + } - return prev[tkey] + offset; -} + var realX = rtlHelper.x(x); -/** - * Convert the given value to a moment object using the given time options. - * @see http://momentjs.com/docs/#/parsing/ - */ -function momentify(value, options) { - var parser = options.parser; - var format = options.parser || options.format; + drawLegendBox(realX, y, legendItem); - if (typeof parser === 'function') { - return parser(value); - } + hitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width); + hitboxes[i].top = y; - if (typeof value === 'string' && typeof format === 'string') { - return moment(value, format); - } + // Fill the actual label + fillText(realX, y, legendItem, textWidth); - if (!(value instanceof moment)) { - value = moment(value); - } + if (isHorizontal) { + cursor.x += width + labelOpts.padding; + } else { + cursor.y += itemHeight; + } + }); - if (value.isValid()) { - return value; - } + helpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection); + }, - // Labels are in an incompatible moment format and no `parser` has been provided. - // The user might still use the deprecated `format` option to convert his inputs. - if (typeof format === 'function') { - return format(value); - } + /** + * @private + */ + _getLegendItemAt: function(x, y) { + var me = this; + var i, hitBox, lh; - return value; -} + if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { + // See if we are touching one of the dataset boxes + lh = me.legendHitBoxes; + for (i = 0; i < lh.length; ++i) { + hitBox = lh[i]; -function parse(input, scale) { - if (helpers.isNullOrUndef(input)) { - return null; - } + if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { + // Touching an element + return me.legendItems[i]; + } + } + } - var options = scale.options.time; - var value = momentify(scale.getRightValue(input), options); - if (!value.isValid()) { return null; - } + }, - if (options.round) { - value.startOf(options.round); - } + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + */ + handleEvent: function(e) { + var me = this; + var opts = me.options; + var type = e.type === 'mouseup' ? 'click' : e.type; + var hoveredItem; - return value.valueOf(); -} + if (type === 'mousemove') { + if (!opts.onHover && !opts.onLeave) { + return; + } + } else if (type === 'click') { + if (!opts.onClick) { + return; + } + } else { + return; + } -/** - * Returns the number of unit to skip to be able to display up to `capacity` number of ticks - * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. - */ -function determineStepSize(min, max, unit, capacity) { - var range = max - min; - var interval = INTERVALS[unit]; - var milliseconds = interval.size; - var steps = interval.steps; - var i, ilen, factor; + // Chart event already has relative position in it + hoveredItem = me._getLegendItemAt(e.x, e.y); - if (!steps) { - return Math.ceil(range / (capacity * milliseconds)); - } + if (type === 'click') { + if (hoveredItem && opts.onClick) { + // use e.native for backwards compatibility + opts.onClick.call(me, e.native, hoveredItem); + } + } else { + if (opts.onLeave && hoveredItem !== me._hoveredItem) { + if (me._hoveredItem) { + opts.onLeave.call(me, e.native, me._hoveredItem); + } + me._hoveredItem = hoveredItem; + } - for (i = 0, ilen = steps.length; i < ilen; ++i) { - factor = steps[i]; - if (Math.ceil(range / (milliseconds * factor)) <= capacity) { - break; + if (opts.onHover && hoveredItem) { + // use e.native for backwards compatibility + opts.onHover.call(me, e.native, hoveredItem); + } } } +}); + +function createNewLegendAndAttach(chart, legendOpts) { + var legend = new Legend({ + ctx: chart.ctx, + options: legendOpts, + chart: chart + }); - return factor; + core_layouts.configure(chart, legend, legendOpts); + core_layouts.addBox(chart, legend); + chart.legend = legend; } -/** - * Figures out what unit results in an appropriate number of auto-generated ticks - */ -function determineUnitForAutoTicks(minUnit, min, max, capacity) { - var ilen = UNITS.length; - var i, interval, factor; +var plugin_legend = { + id: 'legend', - for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { - interval = INTERVALS[UNITS[i]]; - factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; + /** + * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making + * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Legend, - if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { - return UNITS[i]; + beforeInit: function(chart) { + var legendOpts = chart.options.legend; + + if (legendOpts) { + createNewLegendAndAttach(chart, legendOpts); } - } + }, - return UNITS[ilen - 1]; -} + beforeUpdate: function(chart) { + var legendOpts = chart.options.legend; + var legend = chart.legend; -/** - * Figures out what unit to format a set of ticks with - */ -function determineUnitForFormatting(ticks, minUnit, min, max) { - var duration = moment.duration(moment(max).diff(moment(min))); - var ilen = UNITS.length; - var i, unit; + if (legendOpts) { + helpers$1.mergeIf(legendOpts, core_defaults.global.legend); - for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { - unit = UNITS[i]; - if (INTERVALS[unit].common && duration.as(unit) >= ticks.length) { - return unit; + if (legend) { + core_layouts.configure(chart, legend, legendOpts); + legend.options = legendOpts; + } else { + createNewLegendAndAttach(chart, legendOpts); + } + } else if (legend) { + core_layouts.removeBox(chart, legend); + delete chart.legend; } - } - - return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; -} + }, -function determineMajorUnit(unit) { - for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { - if (INTERVALS[UNITS[i]].common) { - return UNITS[i]; + afterEvent: function(chart, e) { + var legend = chart.legend; + if (legend) { + legend.handleEvent(e); } } -} - -/** - * Generates a maximum of `capacity` timestamps between min and max, rounded to the - * `minor` unit, aligned on the `major` unit and using the given scale time `options`. - * Important: this method can return ticks outside the min and max range, it's the - * responsibility of the calling code to clamp values if needed. - */ -function generate(min, max, capacity, options) { - var timeOpts = options.time; - var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); - var major = determineMajorUnit(minor); - var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize); - var weekday = minor === 'week' ? timeOpts.isoWeekday : false; - var majorTicksEnabled = options.ticks.major.enabled; - var interval = INTERVALS[minor]; - var first = moment(min); - var last = moment(max); - var ticks = []; - var time; - - if (!stepSize) { - stepSize = determineStepSize(min, max, minor, capacity); - } - - // For 'week' unit, handle the first day of week option - if (weekday) { - first = first.isoWeekday(weekday); - last = last.isoWeekday(weekday); - } +}; - // Align first/last ticks on unit - first = first.startOf(weekday ? 'day' : minor); - last = last.startOf(weekday ? 'day' : minor); +var noop$2 = helpers$1.noop; - // Make sure that the last tick include max - if (last < max) { - last.add(1, minor); +core_defaults._set('global', { + title: { + display: false, + fontStyle: 'bold', + fullWidth: true, + padding: 10, + position: 'top', + text: '', + weight: 2000 // by default greater than legend (1000) to be above } +}); - time = moment(first); - - if (majorTicksEnabled && major && !weekday && !timeOpts.round) { - // Align the first tick on the previous `minor` unit aligned on the `major` unit: - // we first aligned time on the previous `major` unit then add the number of full - // stepSize there is between first and the previous major time. - time.startOf(major); - time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor); - } +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Title = core_element.extend({ + initialize: function(config) { + var me = this; + helpers$1.extend(me, config); - for (; time < last; time.add(stepSize, minor)) { - ticks.push(+time); - } + // Contains hit boxes for each dataset (in dataset order) + me.legendHitBoxes = []; + }, - ticks.push(+time); + // These methods are ordered by lifecycle. Utilities then follow. - return ticks; -} + beforeUpdate: noop$2, + update: function(maxWidth, maxHeight, margins) { + var me = this; -/** - * Returns the right and left offsets from edges in the form of {left, right}. - * Offsets are added when the `offset` option is true. - */ -function computeOffsets(table, ticks, min, max, options) { - var left = 0; - var right = 0; - var upper, lower; + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); - if (options.offset && ticks.length) { - if (!options.time.min) { - upper = ticks.length > 1 ? ticks[1] : max; - lower = ticks[0]; - left = ( - interpolate(table, 'time', upper, 'pos') - - interpolate(table, 'time', lower, 'pos') - ) / 2; - } - if (!options.time.max) { - upper = ticks[ticks.length - 1]; - lower = ticks.length > 1 ? ticks[ticks.length - 2] : min; - right = ( - interpolate(table, 'time', upper, 'pos') - - interpolate(table, 'time', lower, 'pos') - ) / 2; - } - } + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; - return {left: left, right: right}; -} + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); -function ticksFromTimestamps(values, majorUnit) { - var ticks = []; - var i, ilen, value, major; + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); - for (i = 0, ilen = values.length; i < ilen; ++i) { - value = values[i]; - major = majorUnit ? value === +moment(value).startOf(majorUnit) : false; + return me.minSize; - ticks.push({ - value: value, - major: major - }); - } + }, + afterUpdate: noop$2, - return ticks; -} + // -function determineLabelFormat(data, timeOpts) { - var i, momentDate, hasTime; - var ilen = data.length; + beforeSetDimensions: noop$2, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; - // find the label with the most parts (milliseconds, minutes, etc.) - // format all labels with the same level of detail as the most specific label - for (i = 0; i < ilen; i++) { - momentDate = momentify(data[i], timeOpts); - if (momentDate.millisecond() !== 0) { - return 'MMM D, YYYY h:mm:ss.SSS a'; - } - if (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) { - hasTime = true; + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; } - } - if (hasTime) { - return 'MMM D, YYYY h:mm:ss a'; - } - return 'MMM D, YYYY'; -} -module.exports = function(Chart) { + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; - var defaultConfig = { - position: 'bottom', + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop$2, - /** - * Data distribution along the scale: - * - 'linear': data are spread according to their time (distances can vary), - * - 'series': data are spread at the same distance from each other. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - distribution: 'linear', + // - /** - * Scale boundary strategy (bypassed by min/max time options) - * - `data`: make sure data are fully visible, ticks outside are removed - * - `ticks`: make sure ticks are fully visible, data outside are truncated - * @see https://github.com/chartjs/Chart.js/pull/4556 - * @since 2.7.0 - */ - bounds: 'data', - - time: { - parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment - format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/ - unit: false, // false == automatic or override with week, month, year, etc. - round: false, // none, or override with week, month, year, etc. - displayFormat: false, // DEPRECATED - isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/ - minUnit: 'millisecond', - - // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/ - displayFormats: { - millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM, - second: 'h:mm:ss a', // 11:20:01 AM - minute: 'h:mm a', // 11:20 AM - hour: 'hA', // 5PM - day: 'MMM D', // Sep 4 - week: 'll', // Week 46, or maybe "[W]WW - YYYY" ? - month: 'MMM YYYY', // Sept 2015 - quarter: '[Q]Q - YYYY', // Q3 - year: 'YYYY' // 2015 - }, - }, - ticks: { - autoSkip: false, - - /** - * Ticks generation input values: - * - 'auto': generates "optimal" ticks based on scale size and time options. - * - 'data': generates ticks from data (including labels from data {t|x|y} objects). - * - 'labels': generates ticks from user given `data.labels` values ONLY. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - source: 'auto', - - major: { - enabled: false - } - } - }; + beforeBuildLabels: noop$2, + buildLabels: noop$2, + afterBuildLabels: noop$2, - var TimeScale = Chart.Scale.extend({ - initialize: function() { - if (!moment) { - throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); - } + // - this.mergeTicksOptions(); + beforeFit: noop$2, + fit: function() { + var me = this; + var opts = me.options; + var minSize = me.minSize = {}; + var isHorizontal = me.isHorizontal(); + var lineCount, textSize; - Chart.Scale.prototype.initialize.call(this); - }, + if (!opts.display) { + me.width = minSize.width = me.height = minSize.height = 0; + return; + } - update: function() { - var me = this; - var options = me.options; + lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1; + textSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2; - // DEPRECATIONS: output a message only one time per update - if (options.time && options.time.format) { - console.warn('options.time.format is deprecated and replaced by options.time.parser.'); - } + me.width = minSize.width = isHorizontal ? me.maxWidth : textSize; + me.height = minSize.height = isHorizontal ? textSize : me.maxHeight; + }, + afterFit: noop$2, - return Chart.Scale.prototype.update.apply(me, arguments); - }, + // Shared Methods + isHorizontal: function() { + var pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + }, - /** - * Allows data to be referenced via 't' attribute - */ - getRightValue: function(rawValue) { - if (rawValue && rawValue.t !== undefined) { - rawValue = rawValue.t; - } - return Chart.Scale.prototype.getRightValue.call(this, rawValue); - }, + // Actually draw the title block on the canvas + draw: function() { + var me = this; + var ctx = me.ctx; + var opts = me.options; - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var timeOpts = me.options.time; - var unit = timeOpts.unit || 'day'; - var min = MAX_INTEGER; - var max = MIN_INTEGER; - var timestamps = []; - var datasets = []; - var labels = []; - var i, j, ilen, jlen, data, timestamp; - - // Convert labels to timestamps - for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) { - labels.push(parse(chart.data.labels[i], me)); - } + if (!opts.display) { + return; + } - // Convert data to timestamps - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - data = chart.data.datasets[i].data; + var fontOpts = helpers$1.options._parseFont(opts); + var lineHeight = fontOpts.lineHeight; + var offset = lineHeight / 2 + opts.padding; + var rotation = 0; + var top = me.top; + var left = me.left; + var bottom = me.bottom; + var right = me.right; + var maxWidth, titleX, titleY; - // Let's consider that all data have the same format. - if (helpers.isObject(data[0])) { - datasets[i] = []; + ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour + ctx.font = fontOpts.string; - for (j = 0, jlen = data.length; j < jlen; ++j) { - timestamp = parse(data[j], me); - timestamps.push(timestamp); - datasets[i][j] = timestamp; - } - } else { - timestamps.push.apply(timestamps, labels); - datasets[i] = labels.slice(0); - } - } else { - datasets[i] = []; - } - } + // Horizontal + if (me.isHorizontal()) { + titleX = left + ((right - left) / 2); // midpoint of the width + titleY = top + offset; + maxWidth = right - left; + } else { + titleX = opts.position === 'left' ? left + offset : right - offset; + titleY = top + ((bottom - top) / 2); + maxWidth = bottom - top; + rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); + } - if (labels.length) { - // Sort labels **after** data have been converted - labels = arrayUnique(labels).sort(sorter); - min = Math.min(min, labels[0]); - max = Math.max(max, labels[labels.length - 1]); - } + ctx.save(); + ctx.translate(titleX, titleY); + ctx.rotate(rotation); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; - if (timestamps.length) { - timestamps = arrayUnique(timestamps).sort(sorter); - min = Math.min(min, timestamps[0]); - max = Math.max(max, timestamps[timestamps.length - 1]); + var text = opts.text; + if (helpers$1.isArray(text)) { + var y = 0; + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], 0, y, maxWidth); + y += lineHeight; } + } else { + ctx.fillText(text, 0, 0, maxWidth); + } - min = parse(timeOpts.min, me) || min; - max = parse(timeOpts.max, me) || max; - - // In case there is no valid min/max, set limits based on unit time option - min = min === MAX_INTEGER ? +moment().startOf(unit) : min; - max = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max; + ctx.restore(); + } +}); - // Make sure that max is strictly higher than min (required by the lookup table) - me.min = Math.min(min, max); - me.max = Math.max(min + 1, max); +function createNewTitleBlockAndAttach(chart, titleOpts) { + var title = new Title({ + ctx: chart.ctx, + options: titleOpts, + chart: chart + }); - // PRIVATE - me._horizontal = me.isHorizontal(); - me._table = []; - me._timestamps = { - data: timestamps, - datasets: datasets, - labels: labels - }; - }, + core_layouts.configure(chart, title, titleOpts); + core_layouts.addBox(chart, title); + chart.titleBlock = title; +} - buildTicks: function() { - var me = this; - var min = me.min; - var max = me.max; - var options = me.options; - var timeOpts = options.time; - var timestamps = []; - var ticks = []; - var i, ilen, timestamp; - - switch (options.ticks.source) { - case 'data': - timestamps = me._timestamps.data; - break; - case 'labels': - timestamps = me._timestamps.labels; - break; - case 'auto': - default: - timestamps = generate(min, max, me.getLabelCapacity(min), options); - } +var plugin_title = { + id: 'title', - if (options.bounds === 'ticks' && timestamps.length) { - min = timestamps[0]; - max = timestamps[timestamps.length - 1]; - } + /** + * Backward compatibility: since 2.1.5, the title is registered as a plugin, making + * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Title, - // Enforce limits with user min/max options - min = parse(timeOpts.min, me) || min; - max = parse(timeOpts.max, me) || max; + beforeInit: function(chart) { + var titleOpts = chart.options.title; - // Remove ticks outside the min/max range - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - timestamp = timestamps[i]; - if (timestamp >= min && timestamp <= max) { - ticks.push(timestamp); - } - } + if (titleOpts) { + createNewTitleBlockAndAttach(chart, titleOpts); + } + }, - me.min = min; - me.max = max; + beforeUpdate: function(chart) { + var titleOpts = chart.options.title; + var titleBlock = chart.titleBlock; - // PRIVATE - me._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max); - me._majorUnit = determineMajorUnit(me._unit); - me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); - me._offsets = computeOffsets(me._table, ticks, min, max, options); - me._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts); + if (titleOpts) { + helpers$1.mergeIf(titleOpts, core_defaults.global.title); - return ticksFromTimestamps(ticks, me._majorUnit); - }, + if (titleBlock) { + core_layouts.configure(chart, titleBlock, titleOpts); + titleBlock.options = titleOpts; + } else { + createNewTitleBlockAndAttach(chart, titleOpts); + } + } else if (titleBlock) { + core_layouts.removeBox(chart, titleBlock); + delete chart.titleBlock; + } + } +}; - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var data = me.chart.data; - var timeOpts = me.options.time; - var label = data.labels && index < data.labels.length ? data.labels[index] : ''; - var value = data.datasets[datasetIndex].data[index]; +var plugins = {}; +var filler = plugin_filler; +var legend = plugin_legend; +var title = plugin_title; +plugins.filler = filler; +plugins.legend = legend; +plugins.title = title; - if (helpers.isObject(value)) { - label = me.getRightValue(value); - } - if (timeOpts.tooltipFormat) { - return momentify(label, timeOpts).format(timeOpts.tooltipFormat); - } - if (typeof label === 'string') { - return label; - } +/** + * @namespace Chart + */ - return momentify(label, timeOpts).format(me._labelFormat); - }, - /** - * Function to format an individual tick mark - * @private - */ - tickFormatFunction: function(tick, index, ticks, formatOverride) { - var me = this; - var options = me.options; - var time = tick.valueOf(); - var formats = options.time.displayFormats; - var minorFormat = formats[me._unit]; - var majorUnit = me._majorUnit; - var majorFormat = formats[majorUnit]; - var majorTime = tick.clone().startOf(majorUnit).valueOf(); - var majorTickOpts = options.ticks.major; - var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; - var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat); - var tickOpts = major ? majorTickOpts : options.ticks.minor; - var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback); - - return formatter ? formatter(label, index, ticks) : label; - }, +core_controller.helpers = helpers$1; - convertTicksToLabels: function(ticks) { - var labels = []; - var i, ilen; +// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! +core_helpers(); + +core_controller._adapters = core_adapters; +core_controller.Animation = core_animation; +core_controller.animationService = core_animations; +core_controller.controllers = controllers; +core_controller.DatasetController = core_datasetController; +core_controller.defaults = core_defaults; +core_controller.Element = core_element; +core_controller.elements = elements; +core_controller.Interaction = core_interaction; +core_controller.layouts = core_layouts; +core_controller.platform = platform; +core_controller.plugins = core_plugins; +core_controller.Scale = core_scale; +core_controller.scaleService = core_scaleService; +core_controller.Ticks = core_ticks; +core_controller.Tooltip = core_tooltip; + +// Register built-in scales + +core_controller.helpers.each(scales, function(scale, type) { + core_controller.scaleService.registerScaleType(type, scale, scale._defaults); +}); - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks)); - } +// Load to register built-in adapters (as side effects) - return labels; - }, - /** - * @private - */ - getPixelForOffset: function(time) { - var me = this; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? me.left : me.top; - var pos = interpolate(me._table, 'time', time, 'pos'); +// Loading built-in plugins - return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right); - }, +for (var k in plugins) { + if (plugins.hasOwnProperty(k)) { + core_controller.plugins.register(plugins[k]); + } +} - getPixelForValue: function(value, index, datasetIndex) { - var me = this; - var time = null; +core_controller.platform.initialize(); - if (index !== undefined && datasetIndex !== undefined) { - time = me._timestamps.datasets[datasetIndex][index]; - } +var src = core_controller; +if (typeof window !== 'undefined') { + window.Chart = core_controller; +} - if (time === null) { - time = parse(value, me); - } +// DEPRECATIONS - if (time !== null) { - return me.getPixelForOffset(time); - } - }, +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Chart + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +core_controller.Chart = core_controller; - getPixelForTick: function(index) { - var ticks = this.getTicks(); - return index >= 0 && index < ticks.length ? - this.getPixelForOffset(ticks[index].value) : - null; - }, +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Legend + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.Legend = plugins.legend._element; - getValueForPixel: function(pixel) { - var me = this; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? me.left : me.top; - var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right; - var time = interpolate(me._table, 'pos', pos, 'time'); +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Title + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.Title = plugins.title._element; - return moment(time); - }, +/** + * Provided for backward compatibility, use Chart.plugins instead + * @namespace Chart.pluginService + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.pluginService = core_controller.plugins; - /** - * Crude approximation of what the label width might be - * @private - */ - getLabelWidth: function(label) { - var me = this; - var ticksOpts = me.options.ticks; - var tickLabelWidth = me.ctx.measureText(label).width; - var angle = helpers.toRadians(ticksOpts.maxRotation); - var cosRotation = Math.cos(angle); - var sinRotation = Math.sin(angle); - var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize); - - return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); - }, +/** + * Provided for backward compatibility, inheriting from Chart.PlugingBase has no + * effect, instead simply create/register plugins via plain JavaScript objects. + * @interface Chart.PluginBase + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ +core_controller.PluginBase = core_controller.Element.extend({}); - /** - * @private - */ - getLabelCapacity: function(exampleTime) { - var me = this; +/** + * Provided for backward compatibility, use Chart.helpers.canvas instead. + * @namespace Chart.canvasHelpers + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +core_controller.canvasHelpers = core_controller.helpers.canvas; - var formatOverride = me.options.time.displayFormats.millisecond; // Pick the longest format for guestimation +/** + * Provided for backward compatibility, use Chart.layouts instead. + * @namespace Chart.layoutService + * @deprecated since version 2.7.3 + * @todo remove at version 3 + * @private + */ +core_controller.layoutService = core_controller.layouts; - var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride); - var tickLabelWidth = me.getLabelWidth(exampleLabel); - var innerWidth = me.isHorizontal() ? me.width : me.height; +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.LinearScaleBase + * @deprecated since version 2.8 + * @todo remove at version 3 + * @private + */ +core_controller.LinearScaleBase = scale_linearbase; - var capacity = Math.floor(innerWidth / tickLabelWidth); - return capacity > 0 ? capacity : 1; - } - }); +/** + * Provided for backward compatibility, instead we should create a new Chart + * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`). + * @deprecated since version 2.8.0 + * @todo remove at version 3 + */ +core_controller.helpers.each( + [ + 'Bar', + 'Bubble', + 'Doughnut', + 'Line', + 'PolarArea', + 'Radar', + 'Scatter' + ], + function(klass) { + core_controller[klass] = function(ctx, cfg) { + return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, { + type: klass.charAt(0).toLowerCase() + klass.slice(1) + })); + }; + } +); - Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig); -}; +return src; -},{"25":25,"45":45,"6":6}]},{},[7])(7) -}); \ No newline at end of file +}))); diff --git a/ippisite/ippidb/static/css/admin-session.css b/ippisite/ippidb/static/css/admin-session.css index e53ce0dd539b43dee4bbcfafa760a7bd7c5fe6f6..3121b87f39cd2c88fe4fdf9630d84327359f478d 100644 --- a/ippisite/ippidb/static/css/admin-session.css +++ b/ippisite/ippidb/static/css/admin-session.css @@ -7,7 +7,6 @@ Description: IPPI-DB Theme /* ADMIN SESSION */ - .MainAdd_btn { margin: 0px auto; width: 160px; @@ -15,19 +14,19 @@ Description: IPPI-DB Theme background-color: #2D96FA; border-radius: .25em; text-align: center; - cursor:pointer; + cursor: pointer; box-shadow: 0px 1px 6px #aaaaaa; } .MainAdd_btn a { - top:15%; - color:#FFFFFF; + top: 15%; + color: #FFFFFF; position: relative; display: block; text-decoration: none; } -.MainAdd_btn:hover{ +.MainAdd_btn:hover { background-color: #007bff; } @@ -226,7 +225,7 @@ Description: IPPI-DB Theme .input_field { width: 100%; - margin-right: 2px; + margin-right: 0px; font-family: "BrandonGrotesqueReg"; text-align: left; margin-top: 0px; @@ -242,8 +241,8 @@ Description: IPPI-DB Theme text-align: center; } - /* BibliographyForm */ + .biblioChoices { margin: 0 auto; width: 167px; @@ -269,6 +268,10 @@ Description: IPPI-DB Theme padding-bottom: 1%; } +.form-group.form-check{ + padding-left: 2.25rem; +} + .form-group.form-check, .compound .input_field input { text-align: left; } @@ -337,12 +340,37 @@ Description: IPPI-DB Theme border-bottom: 2px solid #2D96FA; } +.molecule_scheme_placeholder { + background-color:#F5F5F5; + border-radius: .25rem; + border: 1px solid #ced4db; + margin:auto; + display: flex; + height: 228px; + width: 250px; + text-align: center; +} + +.molecule_scheme_placeholder p{ + color:#999; + margin: auto; + font-size: 16px; +} + .formset-item .formset-item-delete-host { font-size: initial; + text-align: right; + position: absolute; + right: 3em; + margin-top: -4em; } -.formset-item-delete-host input{ - display:none; +.formset-item-delete-host input { + display: none; +} + +.flex-group { + display: inline-flex; } .formset-item+.formset-item, .formset-nested-item+.formset-nested-item { @@ -360,7 +388,7 @@ Description: IPPI-DB Theme /*opacity: 0.3; overflow: hidden; max-height: 5em;*/ - display:none; + display: none; } .formset-item.delete-checked .form-group:not(.formset-item-delete-host), .formset-item.delete-checked h3, .formset-item.delete-checked .formset-nested-container, .formset-nested-item.delete-checked .form-group:not(.formset-item-delete-host), .formset-nested-item.delete-checked h3 { @@ -556,14 +584,14 @@ Description: IPPI-DB Theme } .complex_readonly { -border: none; -background-color: rgba(227, 233, 235, 0) !important; --webkit-appearance: none; -text-align: center; -cursor: text; -font-size: 23px; -padding-top: 0px; -direction: rtl; + border: none; + background-color: rgba(227, 233, 235, 0) !important; + -webkit-appearance: none; + text-align: center; + cursor: text; + font-size: 23px; + padding-top: 0px; + direction: rtl; } /* ProteinDomainComplexTypeForm */ @@ -587,8 +615,9 @@ direction: rtl; } /* Background image classes */ + .imageBack_Inhib_Hetero2-merAB { - width:100%; + width: 100%; } .imageBack_Inhib_Hetero2-merAB input { @@ -596,7 +625,7 @@ direction: rtl; } .imageBack_Inhib_Hetero2-merAB label { - width:100%; + width: 100%; height: 98%; } @@ -610,7 +639,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Inhib_Hetero2-merAB input:hover+label span { @@ -625,7 +654,6 @@ direction: rtl; border-left: 1px solid #E3E9EB; border-right: 1px solid #E3E9EB; box-shadow: none; - } .imageBack_Inhib_Hetero2-merAB input[type="radio"]:checked+label span { @@ -642,7 +670,7 @@ direction: rtl; } .imageBack_Inhib_Homo2-merA2 { - width:100%; + width: 100%; } .imageBack_Inhib_Homo2-merA2 input { @@ -650,7 +678,7 @@ direction: rtl; } .imageBack_Inhib_Homo2-merA2 label { - width:100%; + width: 100%; height: 98%; } @@ -664,7 +692,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Inhib_Homo2-merA2 input:hover+label span { @@ -695,7 +723,7 @@ direction: rtl; } .imageBack_Inhib_Custom { - width:100%; + width: 100%; } .imageBack_Inhib_Custom input { @@ -703,8 +731,8 @@ direction: rtl; } .imageBack_Inhib_Custom label { - width:100%; - height:98%; + width: 100%; + height: 98%; } .imageBack_Inhib_Custom label span { @@ -717,7 +745,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Inhib_Custom input:hover+label span { @@ -757,7 +785,7 @@ direction: rtl; } .imageBack_Stab_Hetero2-merAB { - width:33%; + width: 33%; } .imageBack_Stab_Hetero2-merAB input { @@ -765,7 +793,7 @@ direction: rtl; } .imageBack_Stab_Hetero2-merAB label { - width:100%; + width: 100%; height: 98%; } @@ -779,7 +807,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Hetero2-merAB input:hover+label span { @@ -810,7 +838,7 @@ direction: rtl; } .imageBack_Stab_Homo2-merA2 { - width:33%; + width: 33%; } .imageBack_Stab_Homo2-merA2 input { @@ -818,8 +846,8 @@ direction: rtl; } .imageBack_Stab_Homo2-merA2 label { - width:100%; - height:98%; + width: 100%; + height: 98%; } .imageBack_Stab_Homo2-merA2 label span { @@ -832,7 +860,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Homo2-merA2 input:hover+label span { @@ -863,7 +891,7 @@ direction: rtl; } .imageBack_Stab_Homo-Like2-merA2 { - width:33%; + width: 33%; } .imageBack_Stab_Homo-Like2-merA2 input { @@ -871,8 +899,8 @@ direction: rtl; } .imageBack_Stab_Homo-Like2-merA2 label { - width:100%; - height:98%; + width: 100%; + height: 98%; } .imageBack_Stab_Homo-Like2-merA2 label span { @@ -885,7 +913,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Homo-Like2-merA2 input:hover+label span { @@ -916,7 +944,7 @@ direction: rtl; } .imageBack_Stab_Homo3-merA3 { - width:33%; + width: 33%; } .imageBack_Stab_Homo3-merA3 input { @@ -924,8 +952,8 @@ direction: rtl; } .imageBack_Stab_Homo3-merA3 label { - width:100%; - height:98%; + width: 100%; + height: 98%; } .imageBack_Stab_Homo3-merA3 label span { @@ -938,7 +966,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Homo3-merA3 input:hover+label span { @@ -969,15 +997,15 @@ direction: rtl; } .imageBack_Stab_Homo3-merA3inhibitedA2-dimer { - width:33%; + width: 33%; } .imageBack_Stab_Homo3-merA3inhibitedA2-dimer input { display: none; } -.imageBack_Stab_Homo3-merA3inhibitedA2-dimer label{ - width:100%; +.imageBack_Stab_Homo3-merA3inhibitedA2-dimer label { + width: 100%; height: 98%; } @@ -991,7 +1019,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Homo3-merA3inhibitedA2-dimer input:hover+label span { @@ -1044,7 +1072,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Homo4-merA4 input:hover+label span { @@ -1075,7 +1103,7 @@ direction: rtl; } .imageBack_Stab_Ring-Like3-merA3 { - width:33%; + width: 33%; } .imageBack_Stab_Ring-Like3-merA3 input { @@ -1083,7 +1111,7 @@ direction: rtl; } .imageBack_Stab_Ring-Like3-merA3 label { - width:100%; + width: 100%; height: 98%; } @@ -1097,7 +1125,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Ring-Like3-merA3 input:hover+label span { @@ -1128,7 +1156,7 @@ direction: rtl; } .imageBack_Stab_Ring-Like5-merA5 { - width:33%; + width: 33%; } .imageBack_Stab_Ring-Like5-merA5 input { @@ -1136,7 +1164,7 @@ direction: rtl; } .imageBack_Stab_Ring-Like5-merA5 label { - width:100%; + width: 100%; height: 98%; } @@ -1150,7 +1178,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Ring-Like5-merA5 input:hover+label span { @@ -1193,7 +1221,6 @@ direction: rtl; height: 98%; } - .imageBack_Stab_Custom label span { display: inline-block; width: 100%; @@ -1204,7 +1231,7 @@ direction: rtl; background-repeat: no-repeat; height: 100%; font-size: 12px; - box-shadow: inset 0 0 0 1000px rgba(0,0,0,.04); + box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, .04); } .imageBack_Stab_Custom input:hover+label span { @@ -1238,17 +1265,18 @@ direction: rtl; .multi-btn { background-color: #FFFFFF !important; - color:#495057 !important; - border:1px solid #ced4da !important; - border-radius:.25rem !important; + color: #495057 !important; + border: 1px solid #ced4da !important; + border-radius: .25rem !important; } .multi-choices ul li a { - color:#495057 !important; + color: #495057 !important; } /* Compound form */ -.compound_title{ + +.compound_title { text-align: left; margin-top: 15px; margin-bottom: 20px; @@ -1257,23 +1285,23 @@ direction: rtl; .compound_title:after { display: table; white-space: nowrap; - border-top: 1px solid #212529; - content: ''; - display: table-cell; - position: relative; - top: 0.5em; - width: 45%; - left: 1.5%; -} - -.input-inline{ - width:32%; - margin-right:5px; + border-top: 1px solid #212529; + content: ''; + display: table-cell; + position: relative; + top: 0.5em; + width: 45%; + left: 1.5%; +} + +.input-inline { + width: 32%; + margin-right: 5px; text-align: left; } .molecule_draw { - display:flex; + display: flex; text-align: left; margin-top: 5px; } @@ -1285,38 +1313,55 @@ direction: rtl; margin-right: 5px; } +.smile_field { + display: flex; + padding-top: 20px; +} + .molecule_code { background-color: #fff; - border-radius: 0.25rem; - border: 1px solid #CED4E6; - margin-right: 5px; - padding: 5px; - width: 25%; + border-radius: 0.25rem; + border: 1px solid #CED4E6; + margin-right: 5px; + padding: 5px; + width: 25%; } -.molecule_code_button { +.molecule_code_button_active { background-color: #F5F5F5; - color:#000000; + color: #000000; text-align: center; - border-radius: 0.25rem; - margin-right: 5px; - padding: 5px; - width: 33%; - cursor: pointer; - box-shadow: 0px 1px 6px #aaaaaa; + border-radius: 0.25rem; + margin-right: 5px; + padding: 5px; + width: 50%; + cursor: pointer; + box-shadow: 0px 1px 6px #aaaaaa; } +.molecule_code_button { + background-color: #F5F5F5; + color: #000000; + text-align: center; + border-radius: 0.25rem; + margin-right: 5px; + padding: 5px; + width: 50%; + cursor: pointer; +} -.molecule_code_button a { -top: 5%; -color: #FFFFFF; -position: relative; -display: block; -text-decoration: none; +.molecule_code_button:hover { + box-shadow: 0px 1px 6px #aaaaaa; } /* Tests form */ +.test_title { + text-align: left; + margin-top: 15px; + margin-bottom: 1.5em; +} + .tests { background-color: #E3E9EB; } @@ -1631,12 +1676,11 @@ text-decoration: none; -webkit-appearance: button; margin-top: 5px; background-color: #2d96fa; - cursor:pointer; + cursor: pointer; border: none; color: #fff; } - [type="reset"], [type="submit"], .input-group-append>button { -webkit-appearance: button; background-color: #2d96fa; @@ -1679,7 +1723,7 @@ text-decoration: none; .add-compound:hover { color: #2d96fa; - border:none; + border: none; text-decoration: underline; cursor: pointer; } @@ -1713,9 +1757,7 @@ text-decoration: none; color: #dc3545; } -.form-control:focus+.form-control-placeholder, -select.form-control+.form-control-placeholder, -.form-control:valid+.form-control-placeholder { +.form-control:focus+.form-control-placeholder, select.form-control+.form-control-placeholder, .form-control:valid+.form-control-placeholder { font-size: 75%; transform: translate3d(0, -100%, 0); opacity: 1; @@ -1737,24 +1779,23 @@ select.form-control+.form-control-placeholder, margin: 0px !important; } -.input-group .input-group-append .input-group-text label, -.input-group .input-group-prepend .input-group-text label{ - margin-bottom:initial; +.input-group .input-group-append .input-group-text label, .input-group .input-group-prepend .input-group-text label { + margin-bottom: initial; } -input:not([readonly]).form-control.has-been-focused:valid, -select:not([readonly]).form-control.has-been-focused:valid { - border-color: #35dc45; +input:not([readonly]).form-control.has-been-focused:valid, select:not([readonly]).form-control.has-been-focused:valid { + border-color: #35dc45; } -input:not([readonly]).form-control.has-been-focused:not(:valid), -select:not([readonly]).form-control.has-been-focused:not(:valid){ - border-color: #dc3545; + +input:not([readonly]).form-control.has-been-focused:not(:valid), select:not([readonly]).form-control.has-been-focused:not(:valid) { + border-color: #dc3545; } -table.vertical-align-middle *{ - vertical-align:middle; + +table.vertical-align-middle * { + vertical-align: middle; } -.contrib-card{ +.contrib-card { background-color: #e3e9eb73; border-radius: 4px; margin: 10px; @@ -1762,7 +1803,7 @@ table.vertical-align-middle *{ box-shadow: inset 0 0 1em #e3e9eb; } -.contrib-card-title{ +.contrib-card-title { font-family: "BrandonGrotesqueBld"; font-size: 20px; } \ No newline at end of file diff --git a/ippisite/ippidb/static/css/main.css b/ippisite/ippidb/static/css/main.css index 0a75848741aaf427779d67a3017bd394ffe17451..d7fdcbb8e7be243efef16d633e3f05d120465656 100644 --- a/ippisite/ippidb/static/css/main.css +++ b/ippisite/ippidb/static/css/main.css @@ -379,13 +379,15 @@ div.hidden { } .choices_background:hover { - box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.2); - background-color: rgba(255, 255, 255, 1); cursor: pointer; color: #000; text-decoration: none; } +.choices_background:hover .flip-card-inner{ + box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.2); +} + .choices_image { text-align: center; padding: 11px; @@ -893,7 +895,7 @@ div.hidden { } .form_div-fluid { - width: 100%; + width: auto; padding: 1em; } @@ -1023,6 +1025,49 @@ div.hidden { background-position: right 50% bottom 50%; } +/* NEWS */ +.news_title { + font-size: 20px; + font-family: BrandonGrotesqueReg; + height: 70px; + width: 70px; + position: absolute; + border: 1px solid #2d96fa; + border-radius: 120px; + background-color: #fff; + color: #000; +} +.news_content { + border-left: 1px solid #2d96fa; + margin-left: 33px; + height: 160px; +} + +/* TUTORIALS */ +.tuto_title{ + padding: 10px 10px 0px 10px; + font-family: BrandonGrotesqueBld; + font-size: 17px; +} + +/* CREDITS */ +.credits_card { + margin:22px; +} +.credits_title { + position: absolute; +} + +.credits_title img{ + border-radius: 50%; + filter: grayscale(100%); + height: 100px; +} + +.credits_content { + margin-left: 150px; + padding-top: 17px; +} /* FOOTER */ .main-footer { diff --git a/ippisite/ippidb/static/images/Other/DrugBankLogo.ico b/ippisite/ippidb/static/images/Other/DrugBankLogo.ico new file mode 100644 index 0000000000000000000000000000000000000000..473d82128a8a4a3a22e6f9594b9004f9d0c960fe Binary files /dev/null and b/ippisite/ippidb/static/images/Other/DrugBankLogo.ico differ diff --git a/ippisite/ippidb/static/images/Other/EvolutionPlan.png b/ippisite/ippidb/static/images/Other/EvolutionPlan.png new file mode 100644 index 0000000000000000000000000000000000000000..08b0b00f5d7d49ee83f21b8b0639bdd839920bf8 Binary files /dev/null and b/ippisite/ippidb/static/images/Other/EvolutionPlan.png differ diff --git a/ippisite/ippidb/static/images/Other/PDBLogo.ico b/ippisite/ippidb/static/images/Other/PDBLogo.ico new file mode 100644 index 0000000000000000000000000000000000000000..b8ac04a0103438ee7bf83a4abded27b396485b71 Binary files /dev/null and b/ippisite/ippidb/static/images/Other/PDBLogo.ico differ diff --git a/ippisite/ippidb/static/js/ActivityDescriptionFormSet.js b/ippisite/ippidb/static/js/ActivityDescriptionFormSet.js index a2a69f9d9af1992865eef9528ca9a3db3a259767..b5c5f793fdadad2833fba66340e90673df402b03 100644 --- a/ippisite/ippidb/static/js/ActivityDescriptionFormSet.js +++ b/ippisite/ippidb/static/js/ActivityDescriptionFormSet.js @@ -1,8 +1,8 @@ function test_type_changed(source){ var cell_line_input = document.getElementById(source.id.replace("test_type","cell_line_name")).parentNode; if (source.value=="CELL"){ - cell_line_input.style.display = ''; + cell_line_input.style.visibility = ''; }else{ - cell_line_input.style.display = 'none'; + cell_line_input.style.visibility = 'hidden'; } } \ No newline at end of file diff --git a/ippisite/ippidb/static/js/compound_form.js b/ippisite/ippidb/static/js/compound_form.js index 278ff40629871e92e8421cb922d1434afef7f879..eff0c9710515d9d71a4d626638d3c49f203d9acc 100644 --- a/ippisite/ippidb/static/js/compound_form.js +++ b/ippisite/ippidb/static/js/compound_form.js @@ -5,14 +5,14 @@ function update_molecule_composition_fields() { if ($this.val() == '') { if (that.val() == '') { $this.add(that).prop("disabled", false); - } else { - $this.prop("disabled", true); } } else { that.val('').prop("disabled", true); } if ($this.attr("name").indexOf("smiles") > 0) { + showCanvas(this); let canvas = $("#canvas-" + $this.attr("name")); + //console.log("canvas name:",canvas); canvas.attr("data-smiles", $this.val()); canvas[0].getContext('2d').clearRect(0, 0, canvas.attr("width"), canvas.attr("height")); SmilesDrawer.parse($this.val(), function (tree) { @@ -65,23 +65,29 @@ $(document).ready(function () { }); -function displayMoleculeCode(Code) { - var canvas = document.getElementById("canvas_window"); - var code = document.getElementById(Code); - - if (Code === "SmileCode") { - canvas.style.display = "block"; - code.style.display = "block"; - var iupac = document.getElementById("IupaCode"); - iupac.style.display = "none"; - } else if (Code === "IupaCode") { - console.log(Code); - canvas.style.display = "block"; - code.style.display = "block"; - var smile = document.getElementById("SmileCode"); - smile.style.display = "none"; +function displayMoleculeCode(Compound) { + var x = document.getElementById('draw_smile-'.concat(Compound)); + var y = document.getElementById('smile_button-'.concat(Compound)); + var z = document.getElementById('id_'.concat(Compound)); + if (x.style.display === "none") { + x.style.display = "flex"; + y.className = 'molecule_code_button_active'; + showCanvas(z); + } else { + x.style.display = "none"; + y.className = 'molecule_code_button'; + } +}; + +function showCanvas(Compound){ + var z = Compound.value; + var x = document.getElementById('canvas_window-'.concat(Compound.name)); + var y = document.getElementById('canvas_placeholder-'.concat(Compound.name)); + if (z!="") { + x.style.display = "flex"; + y.style.display = "none"; } else { - canvas.style.display = "none"; - code.style.display = "none"; + x.style.display = "none"; + y.style.display = "flex"; } -}; \ No newline at end of file +}; diff --git a/ippisite/ippidb/static/js/ippidb-charts.js b/ippisite/ippidb/static/js/ippidb-charts.js index 1cb0f55cbcf48a7393c9bcf89e9b23d9b8c5f6ed..f18de6c3c5e8344f3fa25bc266ceabeb7fa8bcd6 100644 --- a/ippisite/ippidb/static/js/ippidb-charts.js +++ b/ippisite/ippidb/static/js/ippidb-charts.js @@ -213,7 +213,7 @@ var drawCompoundsBiplotChart = function (canvasId, scatterData, tabHash, options }; -var drawBarChart = function (elementId, data, caption, queryFilter, orientation) { +var drawBarChart = function (elementId, data, caption, queryFilter, orientation, labelIdMap) { var ctx = document.getElementById(elementId).getContext('2d'); if (orientation == null) { orientation = 'horizontalBar' @@ -241,11 +241,15 @@ var drawBarChart = function (elementId, data, caption, queryFilter, orientation) }); if (queryFilter != null) { document.getElementById(elementId).onclick = function (evt) { - var activePoints = myHorizontalBar.getElementAtEvent(evt); - var datasetIndex = activePoints[0]._datasetIndex; - var selectedIndex = activePoints[0]._index; - var id = myHorizontalBar.data.labels[selectedIndex]; - window.location = '/compounds/?' + queryFilter + '=' + id; + let activePoints = myHorizontalBar.getElementsAtEvent(evt); + let index = 0; + if(activePoints.length>0){ + index = activePoints[0]._index; + let label = myHorizontalBar.data.labels[index]; + let id = labelIdMap[label]; + window.location = '/compounds/?' + queryFilter + '=' + id; + } + return false; }; } } diff --git a/ippisite/ippidb/static/js/ippidb-slides.js b/ippisite/ippidb/static/js/ippidb-slides.js new file mode 100644 index 0000000000000000000000000000000000000000..c124ff7cdb1d27754567e1fcc1bc721a038e0789 --- /dev/null +++ b/ippisite/ippidb/static/js/ippidb-slides.js @@ -0,0 +1,68 @@ +var slideIndex = 1; + +var myTimer; + +var slideshowContainer; + +window.addEventListener("load", function () { + showSlides(slideIndex); + myTimer = setInterval(function () { plusSlides(1) }, 5000); + + //COMMENT OUT THE LINE BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME + slideshowContainer = document.getElementsByClassName('slideshow-inner')[0]; + + //UNCOMMENT OUT THE LINE BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME + // slideshowContainer = document.getElementsByClassName('slideshow-container')[0]; + + if (typeof slideshowContainer == "undefined" ) + return; + slideshowContainer.addEventListener('mouseenter', pause) + slideshowContainer.addEventListener('mouseleave', resume) +}) + +// NEXT AND PREVIOUS CONTROL +function plusSlides(n) { + clearInterval(myTimer); + if (n < 0) { + showSlides(slideIndex -= 1); + } else { + showSlides(slideIndex += 1); + } + + //COMMENT OUT THE LINES BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME + + if (n === -1) { + myTimer = setInterval(function () { plusSlides(n + 2) }, 5000); + } else { + myTimer = setInterval(function () { plusSlides(n + 1) }, 5000); + } +} + +//Controls the current slide and resets interval if needed +function currentSlide(n) { + clearInterval(myTimer); + myTimer = setInterval(function () { plusSlides(n + 1) }, 5000); + showSlides(slideIndex = n); +} + +function showSlides(n) { + var i; + var slides = document.getElementsByClassName("mySlides"); + if (n > slides.length) { slideIndex = 1 } + if (n < 1) { slideIndex = slides.length } + for (i = 0; i < slides.length; i++) { + slides[i].style.display = "none"; + } + if (slides.length == 0) + return; + slides[slideIndex - 1].style.display = "block"; +} + +pause = () => { + clearInterval(myTimer); +} + +resume = () => { + clearInterval(myTimer); + myTimer = setInterval(function () { plusSlides(slideIndex) }, 5000); +} \ No newline at end of file diff --git a/ippisite/ippidb/static/js/ippidb.js b/ippisite/ippidb/static/js/ippidb.js index 2b443c06002198d9b502192811649ee43e1c7d9e..a8d3a4050bfc7231f04aacc9541fb56eda13f253 100644 --- a/ippisite/ippidb/static/js/ippidb.js +++ b/ippisite/ippidb/static/js/ippidb.js @@ -22,17 +22,23 @@ $(document).ready(function () { //Function to load different template setting on Composition page -function onloadTest(type, choice) { + function onloadTest(type, choice) { console.log("Onload Test:", type, choice); var total = $('#id_' + 'ProteinDomainComplexForm' + '-TOTAL_FORMS').val(); + console.log("total: ",total); if (type == "Hetero2merAB" && choice == "inhibited" && total < 2) { console.log(document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value); cloneMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value = "1"; document.getElementById('id_ProteinDomainComplexForm-1-complex_type_1').value = "Partner"; + } else if (type == "Homo2merA2" && choice == "inhibited" && total < 2) { + cloneMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); + document.getElementById('id_ProteinDomainComplexForm-0-complex_type_0').value = "Bound"; } else if (type == "Hetero2merAB" && choice == "stabilized" && total < 2) { + console.log(document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value); cloneMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); - document.getElementById('id_ProteinDomainComplexForm-1-complex_type_1').value = "Bound"; + document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value = "1"; + document.getElementById('id_ProteinDomainComplexForm-1-complex_type_1').value = "Partner"; } else if (type == "HomoLike2mer" && choice == "stabilized" && total < 2) { cloneMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); document.getElementById('id_ProteinDomainComplexForm-1-complex_type_1').value = "Bound"; @@ -45,6 +51,7 @@ function onloadTest(type, choice) { cloneMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); document.getElementById('id_ProteinDomainComplexForm-1-complex_type_1').value = "Partner"; } else if (type == "Homo3merA3" || type == "RingHomo3mer" && choice == "stabilized") { + removeMoreFull('.inline_box_complex_long:last', 'ProteinDomainComplexForm'); document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value = "3"; } else if (type == "Homo4merA4" && choice == "stabilized") { document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value = "4"; @@ -53,10 +60,10 @@ function onloadTest(type, choice) { } else if (type == "RingHomo5mer" && choice == "stabilized") { document.getElementById('id_ProteinDomainComplexForm-0-ppc_copy_nb').value = "5"; } -} +} //Function to load different template setting on PPI page -function onloadTestPPI(type, choice) { +/* function onloadTestPPI(type, choice) { console.log("Onload Test PPI:", type, choice); if (type == "Homo2merA2" && choice == "inhibited") { document.getElementById('id_PpiForm-cc_nb').value = "2"; @@ -89,7 +96,7 @@ function onloadTestPPI(type, choice) { document.getElementById('id_PpiForm-cc_nb').value = "1"; document.getElementById('id_PpiForm-symmetry').value = "8"; } -} +} */ // Function to duplicate form and increment ids function cloneMoreFull(selector, prefix) { @@ -219,6 +226,14 @@ function create_bootstrap_multiselect_from_applicant(source) { } }).show(); } +function openNav() { + document.getElementById("mySidenav").style.width = "300px"; + localStorage.setItem('mySidenav', 'true'); +} +function closeNav() { + document.getElementById("mySidenav").style.width = "0px"; + localStorage.setItem('mySidenav', 'false'); +} $(document).ready(function () { $("select[multiple].bootstrap-multiselect-applicant").each(function (i, e) { @@ -226,71 +241,6 @@ $(document).ready(function () { }); }); -var slideIndex = 1; - -var myTimer; - -var slideshowContainer; - -window.addEventListener("load", function () { - showSlides(slideIndex); - myTimer = setInterval(function () { plusSlides(1) }, 5000); - - //COMMENT OUT THE LINE BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME - slideshowContainer = document.getElementsByClassName('slideshow-inner')[0]; - - //UNCOMMENT OUT THE LINE BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME - // slideshowContainer = document.getElementsByClassName('slideshow-container')[0]; - - slideshowContainer.addEventListener('mouseenter', pause) - slideshowContainer.addEventListener('mouseleave', resume) -}) - -// NEXT AND PREVIOUS CONTROL -function plusSlides(n) { - clearInterval(myTimer); - if (n < 0) { - showSlides(slideIndex -= 1); - } else { - showSlides(slideIndex += 1); - } - - //COMMENT OUT THE LINES BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME - - if (n === -1) { - myTimer = setInterval(function () { plusSlides(n + 2) }, 5000); - } else { - myTimer = setInterval(function () { plusSlides(n + 1) }, 5000); - } -} - -//Controls the current slide and resets interval if needed -function currentSlide(n) { - clearInterval(myTimer); - myTimer = setInterval(function () { plusSlides(n + 1) }, 5000); - showSlides(slideIndex = n); -} - -function showSlides(n) { - var i; - var slides = document.getElementsByClassName("mySlides"); - if (n > slides.length) { slideIndex = 1 } - if (n < 1) { slideIndex = slides.length } - for (i = 0; i < slides.length; i++) { - slides[i].style.display = "none"; - } - slides[slideIndex - 1].style.display = "block"; -} - -pause = () => { - clearInterval(myTimer); -} - -resume = () => { - clearInterval(myTimer); - myTimer = setInterval(function () { plusSlides(slideIndex) }, 5000); -} - var multiselectTypeAhead = function (idSearch, selection, onSelect) { var bh = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), diff --git a/ippisite/ippidb/static/js/wizard_formset_with_nested_formset.js b/ippisite/ippidb/static/js/wizard_formset_with_nested_formset.js index 83faadc08fd4eed52707d753328f85145a5e0511..08a45863858286c8018588d72bc0a0c6b310a544 100644 --- a/ippisite/ippidb/static/js/wizard_formset_with_nested_formset.js +++ b/ippisite/ippidb/static/js/wizard_formset_with_nested_formset.js @@ -23,7 +23,11 @@ function add_nested_form_to_nested_formset(source, prefix, parent_prefix){ .find(".formset-nested-item")[0] .outerHTML; - current_item_name = $(source).closest(".formset-item").children("input")[0].name; + if($(source).closest(".formset-item").children("input").length>0){ + current_item_name = $(source).closest(".formset-item").children("input")[0].name; + }else{ + current_item_name = $(source).closest(".formset-item").children("div").children("input")[0].name; + } current_item_name = current_item_name.substring(parent_prefix.length+1,current_item_name.indexOf('-',parent_prefix.length+1)); empty_form_as_str = empty_form_as_str.replace( new RegExp(parent_prefix+"-__prefix__","g"), diff --git a/ippisite/ippidb/tasks.py b/ippisite/ippidb/tasks.py index 9095dbc20181a26f73ba434ea9f655e4053fc434..c6ce3a9d552b78409594f110bc2e9ccaeb92f9c4 100644 --- a/ippisite/ippidb/tasks.py +++ b/ippisite/ippidb/tasks.py @@ -4,11 +4,11 @@ import tempfile import io import base64 import itertools -import time -import random +from typing import Callable, List - -from celery import task, states, chain, group +from django.db import Error +from django.db.models import QuerySet +from celery import task, states, chain, group, chord from ippisite.decorator import MonitorTask import matplotlib.pyplot as plt @@ -35,6 +35,10 @@ from .models import ( update_compound_cached_properties, LeLleBiplotData, PcaBiplotData, + ProteinDomainBoundComplex, + ProteinDomainBoundComplexGroup, + ProteinDomainPartnerComplex, + ProteinDomainPartnerComplexGroup, ) from .utils import smi2sdf from .gx import GalaxyCompoundPropertiesRunner @@ -42,14 +46,36 @@ from .gx import GalaxyCompoundPropertiesRunner plt.switch_backend("Agg") -def dec(decimal_places): +def dec(decimal_places: int) -> Callable: + """ + generate a function to return a number rounded + to a specific precision + + :param decimal_places: precision for the value returned by the function + :type decimal_places: int + :return: rounding function + :rtype: function + """ + def func(number): return round(float(number), decimal_places) return func -def compute_compound_properties(compound_ids): +def compute_compound_properties( + compound_ids: List[int], task: MonitorTask = None +) -> List[int]: + """ + compute the properties for a list of compounds + + :param compound_ids: The list of compound IDs to be processed + :type compound_ids: List[int] + :param task: The task to which some logging can be sent + :type task: MonitorTask + :return: List of processed compound IDs + :rtype: List[int] + """ compounds = Compound.objects.filter(id__in=compound_ids) runner = GalaxyCompoundPropertiesRunner() smiles_dict = {} @@ -60,16 +86,20 @@ def compute_compound_properties(compound_ids): fh = tempfile.NamedTemporaryFile(mode="w", delete=False) fh.write(sdf_string) fh.close() - print(f"Galaxy input SDF file for compounds {smiles_dict.keys()}: {fh.name}") + if task is not None: + task.write( + f"Galaxy input SDF file for compounds {smiles_dict.keys()}: {fh.name}" + ) # run computations on Galaxy pc_properties = runner.compute_properties_for_sdf_file(fh.name) pc_properties_dict = {compound["Name"]: compound for compound in pc_properties} fh = tempfile.NamedTemporaryFile(mode="w", delete=False) json.dump(pc_properties_dict, fh, indent=4) fh.close() - print( - f"Properties added for compounds {smiles_dict.keys()} in JSON file: {fh.name}" - ) + if task is not None: + task.write( + f"Properties added for compounds {smiles_dict.keys()} in JSON file: {fh.name}" + ) # report and update database property_mapping = { "CanonicalSmile": ("canonical_smile", str), @@ -118,8 +148,21 @@ def compute_compound_properties(compound_ids): } ippidb_convs = {value[0]: value[1] for key, value in property_mapping.items()} ippidb_convs["id"] = int + output_ids = [] for cid, item in pc_properties_dict.items(): compound = Compound.objects.get(id=cid) + duplicate_compounds = Compound.objects.filter( + canonical_smile=item["CanonicalSmile"] + ) + if len(duplicate_compounds) > 0: + duplicate_compound = duplicate_compounds[0] + if task is not None: + task.write( + f"Replacing references to compound {compound.id}" + f" with existing and validated compound {duplicate_compound.id}" + ) + compound.replace_compound_references(duplicate_compound) + compound = duplicate_compound updated_properties = {} for galaxy_prop, prop in property_mapping.items(): ippidb_prop = prop[0] @@ -127,32 +170,105 @@ def compute_compound_properties(compound_ids): try: updated_properties[ippidb_prop] = ippidb_conv(item[galaxy_prop]) except ValueError as ve: - print( - f"Error setting property {ippidb_prop} to {item[galaxy_prop]}" - f" in compound {compound.id} \ndetails:{ve}" - ) + if task is not None: + task.write( + f"Error setting property {ippidb_prop} to {item[galaxy_prop]}" + f" in compound {compound.id} \ndetails:{ve}" + ) for key, value in updated_properties.items(): setattr(compound, key, value) compound.compute_fsp3() - compound.save() + try: + compound.save() + except Error as e: + if task is not None: + task.write(f"Error saving compound {compound.id}") + raise e + output_ids.append(compound.id) + return output_ids -def compute_drugbank_similarity(qs): +def compute_drugbank_similarity(qs: QuerySet): + """ + compute the Tanimoto similarity with Drugbank entries + for each compound of a queryset + + :param qs: queryset over the compounds to be processed + :type qs: QuerySet + """ + for c in qs: c.save(autofill=True) - pass -def validate(compound_ids): +def validate(compound_ids: List[int]) -> List[int]: + """ + validate a list of compounds + + :param compound_ids: The list of compound IDs to validate + :type compound_ids: List[int] + :return: List of validated compound IDs + :rtype: List[int] + """ compounds = Compound.objects.filter(id__in=compound_ids) for c in compounds: for ca in c.compoundaction_set.all(): for contribution in ca.ppi.contribution_set.filter(validated=False): contribution.validated = True contribution.save() + for pdbc in ProteinDomainBoundComplex.objects.filter( + ppicomplex__ppi__contribution=contribution + ): + pdbc.set_group() + for pdpc in ProteinDomainPartnerComplex.objects.filter( + ppicomplex__ppi__contribution=contribution + ): + pdpc.set_group() + + +def generate_protein_domain_complex_groups(apps_for_import=None): + """ + Generate Protein Domain Complex groups + for all validated contributions + and pre-contribution PPIs + """ + if apps_for_import is not None: + ProteinDomainBoundComplex = apps_for_import.get_model( + "ippidb", "ProteinDomainBoundComplex" + ) + ProteinDomainPartnerComplex = apps_for_import.get_model( + "ippidb", "ProteinDomainPartnerComplex" + ) + ProteinDomainBoundComplexGroup.objects.all().delete() + ProteinDomainPartnerComplexGroup.objects.all().delete() + for contribution in Contribution.objects.filter(validated=True): + for pdbc in ProteinDomainBoundComplex.objects.filter( + ppicomplex__ppi__contribution=contribution + ): + pdbc.set_group() + pdbc.save() + for pdpc in ProteinDomainPartnerComplex.objects.filter( + ppicomplex__ppi__contribution=contribution + ): + pdpc.set_group() + pdpc.save() + for pdbc in ProteinDomainBoundComplex.objects.filter( + ppicomplex__ppi__contribution=None + ): + pdbc.set_group() + pdbc.save() + for pdpc in ProteinDomainPartnerComplex.objects.filter( + ppicomplex__ppi__contribution=None + ): + pdpc.set_group() + pdpc.save() def generate_le_lle_plot(): + """ + Generate the LE-LLE plot + for all validated compounds + """ print("Generating the LE vs. LLE biplot...") le_lle_data = [] LeLleBiplotData.objects.all().delete() @@ -180,6 +296,10 @@ def generate_le_lle_plot(): def plot_circle(): + """ + Generate a circle for the PCA correlation circle + (utility function for `generate_pca_plot` function) + """ theta = np.linspace(0, 2 * np.pi, 100) r = np.sqrt(1.0) x1 = r * np.cos(theta) @@ -188,6 +308,10 @@ def plot_circle(): def generate_pca_plot(): + """ + Generate the PCA plot + for all validated compounds + """ print("Generating the PCA biplot...") pca_data = [] features = [ @@ -313,34 +437,62 @@ def generate_pca_plot(): print("Successfully generated PCA biplot data") -@task(base=MonitorTask, bind=True) -def launch_test_command_caching(self): +def set_compound_links(compound_ids: List[int]) -> List[int]: """ - Test task of IppidbTask + set/update links with external databases: + DrugBank, ChEMBL, PubChem + for each compound of a queryset + + :param qs: queryset over the compounds to be processed + :type qs: QuerySet """ - self.write(std_out="Before first sleep, state={}".format(self.state)) - time.sleep(30) - self.update_state(state=states.STARTED) - self.write(std_out="After first sleep, state={}".format(self.state)) - num = random.random() - if num > 0.5: - raise Exception("ERROR: {} is greater than 0.5".format(num)) + qs = Compound.objects.filter(id__in=compound_ids) + for c in qs: + c.set_drugbank_link() + c.set_chembl_link() + c.set_pubchem_link() + c.set_ligand_link() + c.save() + return [c.id for c in qs] @task(base=MonitorTask, bind=True) -def run_compute_compound_properties(self, compound_id): +def run_compute_compound_properties(self: MonitorTask, compound_id: int) -> int: + """ + task "run method" to compute the properties for a compound + + :param self: the task the function is binded to as a method + :type self: MonitorTask + :param compound_id: the ID of the compound + :type compound_id: int + :return: the ID of the compound + :rtype: int + """ self.update_state(state=states.STARTED) cj = CompoundJob() cj.compound = Compound.objects.get(id=compound_id) cj.job = Job.objects.get(task_result__task_id=self.task_id) cj.save() self.write(std_out=f"Starting computation of compound properties for {compound_id}") - compute_compound_properties([compound_id]) + result_compound_ids = compute_compound_properties([compound_id], task=self) self.write(std_out=f"Finished computation of compound properties for {compound_id}") + return result_compound_ids[0] @task(base=MonitorTask, bind=True) -def run_update_compound_cached_properties(self, compound_ids=None): +def run_update_compound_cached_properties( + self: MonitorTask, compound_ids: List[int] = None +) -> List[int]: + """ + task "run method" to cache the properties for a list of compounds + + :param self: the task the function is binded to as a method + :type self: MonitorTask + :param compound_ids: the list of compound IDs + :type compound_id: List[int] + :return: the list of compound IDs + :rtype: List[int] + """ if compound_ids: qs = Compound.objects.filter(id__in=compound_ids) else: @@ -353,10 +505,23 @@ def run_update_compound_cached_properties(self, compound_ids=None): self.write( std_out=f"Finished caching of compound properties for {compound_ids or 'all compounds'}" ) + return compound_ids @task(base=MonitorTask, bind=True) -def run_compute_drugbank_similarity(self, compound_ids=None): +def run_compute_drugbank_similarity( + self: MonitorTask, compound_ids: List[int] = None +) -> List[int]: + """ + task "run method" to compute the drugbank similarity for a list of compounds + + :param self: the task the function is binded to as a method + :type self: MonitorTask + :param compound_ids: the list of compound IDs + :type compound_id: List[int] + :return: the list of compound IDs + :rtype: List[int] + """ if compound_ids: qs = Compound.objects.filter(id__in=compound_ids) else: @@ -369,18 +534,59 @@ def run_compute_drugbank_similarity(self, compound_ids=None): self.write( std_out=f"Finished computing Drugbank similarity for {compound_ids or 'all compounds'}" ) + return compound_ids @task(base=MonitorTask, bind=True) -def run_validate(self, compound_ids): +def run_set_compound_links(self: MonitorTask, compound_id: int) -> int: + """ + task to set/update the DB cross-links for a compound + + :param self: the task the function is binded to as a method + :type self: MonitorTask + :param compound_id: the ID of the compound + :type compound_id: int + :return: the ID of the compound + :rtype: int + """ + self.update_state(state=states.STARTED) + cj = CompoundJob() + cj.compound = Compound.objects.get(id=compound_id) + cj.job = Job.objects.get(task_result__task_id=self.task_id) + cj.save() + self.write(std_out=f"Starting setting external cross-links for {compound_id}") + result_compound_ids = set_compound_links([compound_id]) + self.write(std_out=f"Finished setting external cross-links for {compound_id}") + return result_compound_ids[0] + + +@task(base=MonitorTask, bind=True) +def run_validate(self: MonitorTask, compound_ids: List[int] = None) -> List[int]: + """ + task "run method" to validate a list of compounds + + :param self: the task the function is binded to as a method + :type self: MonitorTask + :param compound_ids: the list of compound IDs + :type compound_id: List[int] + :return: the list of compound IDs + :rtype: List[int] + """ self.update_state(state=states.STARTED) self.write(std_out=f"Starting validation of compounds {compound_ids}") validate(compound_ids) self.write(std_out=f"Finished validation of compounds {compound_ids}") + return compound_ids @task(base=MonitorTask, bind=True) -def run_le_lle_plot(self): +def run_le_lle_plot(self: MonitorTask): + """ + task "run method" to generate the LE-LLE plot + + :param self: the task the function is binded to as a method + :type self: MonitorTask + """ self.update_state(state=states.STARTED) self.write(std_out="Starting computing LE-LLE plot") generate_le_lle_plot() @@ -388,14 +594,23 @@ def run_le_lle_plot(self): @task(base=MonitorTask, bind=True) -def run_pca_plot(self): +def run_pca_plot(self: MonitorTask): + """ + task "run method" to generate the PCA plot + + :param self: the task the function is binded to as a method + :type self: MonitorTask + """ self.update_state(state=states.STARTED) self.write(std_out="Starting computing PCA plot") generate_pca_plot() self.write(std_out="Finished computing PCA plot") -def launch_validate_contributions(contribution_ids): +def launch_validate_contributions(contribution_ids: List[int]): + """ + Launch the task to validate the contributions + """ contribution_jobs = [] for cont in Contribution.objects.filter(id__in=contribution_ids): compound_ids = [ @@ -410,11 +625,13 @@ def launch_validate_contributions(contribution_ids): ] ) # build the "main" job - compounds_properties_computation_group = chain( + compounds_properties_computation_group = chord( run_compounds_properties_computation_group, - run_update_compound_cached_properties.si(compound_ids), - run_compute_drugbank_similarity.si(compound_ids), - run_validate.si(compound_ids), + chain( + run_update_compound_cached_properties.s(), + run_compute_drugbank_similarity.s(), + run_validate.s(), + ), ) contribution_jobs.append(compounds_properties_computation_group) # compounds_properties_computation_group.delay() @@ -425,14 +642,14 @@ def launch_validate_contributions(contribution_ids): def launch_update_compound_cached_properties(): """ - This task will launch the caching of properties on all compounds + Launch the task to cache the properties on all compounds """ run_update_compound_cached_properties.delay() def launch_plots_computing(): """ - This task will perform the computing of LE-LLE and PCA plots. + Launch the task to perform the computing of LE-LLE and PCA plots. """ generate_le_lle_plot() generate_pca_plot() @@ -484,7 +701,9 @@ def launch_clean_targetcentric(self, params): self.write(std_out="Command:") self.write(std_out="clean_targetcentric --csv={csv} --delete".format(**params)) call_command( - command, "--csv={csv}".format(**params), "--delete".format(**params), + command, + "--csv={csv}".format(**params), + "--delete".format(**params), ) @@ -507,3 +726,16 @@ def launch_update_mrc(self, params): "--label={label}".format(**params), "--pattern={pattern}".format(**params), ) + + +def launch_set_compound_links(): + """ + Launch the tasks to set/update compound links + """ + link_jobs_group = group( + [ + run_set_compound_links.si(compound.id) + for compound in Compound.objects.validated() + ] + ) + link_jobs_group.delay() diff --git a/ippisite/ippidb/templates/IdForm.html b/ippisite/ippidb/templates/IdForm.html index d97f17ab6cd0615576ab175a2f35c5ce17cf2dd3..ca0006576badd6fbdcea4ea8e25fc5b4a3ca53bb 100644 --- a/ippisite/ippidb/templates/IdForm.html +++ b/ippisite/ippidb/templates/IdForm.html @@ -27,5 +27,4 @@ </div> {% endif %} </div> -{% endblock %} -{% block submit_button_text%}{% trans 'Next step' %}{% endblock submit_button_text%} \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/ippisite/ippidb/templates/PpiForm.html b/ippisite/ippidb/templates/PpiForm.html index 06605fd324aca0fc7edff715529b3461fd8a3da2..c5cf5faaa8287f5cd50de6bafa6d8b2ed6fcdd95 100644 --- a/ippisite/ippidb/templates/PpiForm.html +++ b/ippisite/ippidb/templates/PpiForm.html @@ -12,13 +12,11 @@ {%block step_desc%} {% if "Inhib_" in complex_type %} -You have selected an <span style="color:#2d96fa;" id="archi_type">{{ complex_type|cut:"Inhib_"}}</span> that is <span - style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. +You have selected an <span style="font-family: BrandonGrotesqueBld;" id="archi_type">{{ complex_type|cut:"Inhib_"}}</span> that is <span style="font-family: BrandonGrotesqueBld;">{{ complex_choice }}</span> by the binding of PPI modulator. {% elif "Stab_" in complex_type %} -You have selected an <span style="color:#2d96fa;" id="archi_type">{{ complex_type|cut:"Stab_"}}</span> that is <span - style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. +You have selected an <span style="font-family: BrandonGrotesqueBld;" id="archi_type">{{ complex_type|cut:"Stab_"}}</span> that is <span style="font-family: BrandonGrotesqueBld;">{{ complex_choice }}</span> by the binding of PPI modulator. {%endif%} -<br /> +<br/> {%blocktrans%}Please select a PPI target family name for the PPI you are describing. If not already present in the given list, please suggest one. </br> Also, please select a known disease associate with the PPI you are describing as listed in the MONDO diff --git a/ippisite/ippidb/templates/ProteinDomainComplexForm.html b/ippisite/ippidb/templates/ProteinDomainComplexForm.html index b975608958de3ea1b796a6c4551a22accb288774..a6bc745fa6aa8e55a0db7c1c9f0df204545fff0f 100644 --- a/ippisite/ippidb/templates/ProteinDomainComplexForm.html +++ b/ippisite/ippidb/templates/ProteinDomainComplexForm.html @@ -31,9 +31,12 @@ function update_partner_bound_fields(archi){ } $(document).ready(function(){ let archi = document.getElementById("archi_type").innerHTML; + let complex = document.getElementById("complex_type").innerHTML; + onloadTest(archi,complex); $("select.complex_readonly").each(function(i,o){ $(o).change(update_partner_bound_fields(archi)); $(o).change(update_partner_bound_fields_visibility); + $(o).change(onloadTest(archi,complex)); $(o).change(); }); @@ -42,10 +45,11 @@ $(document).ready(function(){ {% endblock extra_js %} {%block step_desc%} +For the PDB code: <a href="http://www.rcsb.org/structure/{{pdb}}" target="_blank">{{pdb}}</a><br> {% if "Inhib_" in complex_type %} -You have selected an <span style="color:#2d96fa;" id="archi_type">{{ complex_type|cut:"Inhib_"}}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. +You have selected an <span style="font-family: BrandonGrotesqueBld;" id="archi_type">{{ complex_type|cut:"Inhib_"}}</span> that is <span style="font-family: BrandonGrotesqueBld;" id="complex_type">{{ complex_choice }}</span> by the binding of PPI modulator. {% elif "Stab_" in complex_type %} -You have selected an <span style="color:#2d96fa;" id="archi_type">{{ complex_type|cut:"Stab_"}}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. +You have selected an <span style="font-family: BrandonGrotesqueBld;" id="archi_type">{{ complex_type|cut:"Stab_"}}</span> that is <span style="font-family: BrandonGrotesqueBld;" id="complex_type">{{ complex_choice }}</span> by the binding of PPI modulator. {%endif%} <br/> Please select the protein that is bound by the modulator and also the protein partner if applicable. You also need to specify the PFAM protein domain(s). diff --git a/ippisite/ippidb/templates/about-general.html b/ippisite/ippidb/templates/about-general.html index 5bdc1267f2001912b62cc5c09a2de32711286c6c..2b950dedc27c72204ef610978ce9317fe4ecd932 100644 --- a/ippisite/ippidb/templates/about-general.html +++ b/ippisite/ippidb/templates/about-general.html @@ -32,6 +32,11 @@ </div> </div> +<h2 id="terms-privacy" class="mt-5 text-center">Features and Data Evolution</h2> +<div class="row justify-content-center"> + <img src="/static/images/Other/EvolutionPlan.png" style="height: 700px;"> +</div> + <h2 id="terms-privacy" class="mt-5 text-center">Terms and Privacy</h2> <h5 class="row justify-content-center">What personal data is collected?</h5> diff --git a/ippisite/ippidb/templates/about-pharmacology.html b/ippisite/ippidb/templates/about-pharmacology.html index e6ebd8107862058eae4863f12ff0a32d11e7bd6c..7d68763cba34e5344140066afaf82117b0ee8b8e 100644 --- a/ippisite/ippidb/templates/about-pharmacology.html +++ b/ippisite/ippidb/templates/about-pharmacology.html @@ -19,6 +19,9 @@ <div class="col-sm-12 col-md-10"> <canvas id="data_per_ppi_family"></canvas> </div> + <div class="col-sm-12 col-md-10"> + <canvas id="drugbank_data_per_ppi_family"></canvas> + </div> <div class="col-sm-12 col-md-10"> <canvas id="cell_tests_histo"></canvas> </div> @@ -26,6 +29,8 @@ <script> + var ppi_family_labels = {{ ppi_family_labels|safe }}; + var biochTestData = { labels: {{ biochemical_tests_count_by_name.labels|safe }}, datasets: [{ @@ -83,9 +88,30 @@ 'Number of compounds and binding data available in iPPI-DB per PPI target' ); + var drugbankDataPerPPIFamily = { + labels: {{ drugbank_compounds_per_ppi_family.labels|safe }}, + datasets: [ + { + label: 'Number of binding data', + backgroundColor: "rgba(46,87,139,0.6)", + borderColor: "rgba(46,87,139,1)", + borderWidth: 1, + data: {{ drugbank_compounds_per_ppi_family.values }}, + }, + ] + }; + + drawBarChart('drugbank_data_per_ppi_family', + drugbankDataPerPPIFamily, + 'Number of Drugbank compounds available in iPPI-DB per PPI target', + 'drugbank_id=true&family', + null, + ppi_family_labels, + ); + var bindingDataPerPXC50Bins = { - labels: ['Biochemical', 'Cellular'], + labels: ['Cellular', 'Biochemical'], datasets: [ { label: 'pXC50>=8', diff --git a/ippisite/ippidb/templates/add.html b/ippisite/ippidb/templates/add.html index bcf10a3b2bbfc1dbf860d1f929cf04ef4c0ef521..886e436bdaae4a3ebbeda777d4a2f295b9bb691c 100644 --- a/ippisite/ippidb/templates/add.html +++ b/ippisite/ippidb/templates/add.html @@ -39,7 +39,7 @@ $(document).ready(function(){ <div class="main__inner"> <div class="region region-content"> {% if wizard.steps.current == "IdForm" %} - + {% endif %} <div class="color-wrap"> <div class="region region-content"> @@ -48,7 +48,7 @@ $(document).ready(function(){ <div class="view-content"> <ul class="nav nav-tabs wizard_step_nav"> {%for step in wizard.steps.all %} - {% if True or not step|endswith:"DescriptionFormSet" %} + {% if not step|endswith:"SaveInDB" %} <li class="nav-item"> <a class="nav-link {% if step == wizard.steps.current %}active{%else%}{% if forloop.counter0 <= wizard.steps.step0 %} @@ -65,15 +65,6 @@ $(document).ready(function(){ </li> {%endif%} {%endfor%} - {% if False and wizard.steps.current|endswith:"DescriptionFormSet" %} - <li class="nav-item"> - <a class="nav-link active" - href="{% url 'ippidb_step' step=step %}">Tests ({{ "-7"|add:wizard.steps.step1 }}/3) - </a> - </li> - {%else%} - <!--<li class="nav-item"><a class="nav-link ">Tests</a></li>--> - {%endif%} </ul> <div id="Form" class="formset-container"> <div class="step_desc"> @@ -82,9 +73,11 @@ $(document).ready(function(){ {% trans step_title|linebreaksbr %} {% endwith %} </h1> + {%if wizard.steps.step1 != wizard.steps.count %} <p class="step_step"> - Step {{ wizard.steps.step1 }} on {{wizard.steps.count }} + Step {{ wizard.steps.step1 }} on {{wizard.steps.count|add:-1 }} </p> + {% endif %} <p class="step_step_desc"> {% block step_desc %} {% with wizard.steps.current|add:"_desc" as step_desc %} @@ -136,15 +129,15 @@ $(document).ready(function(){ <input type="hidden" name="ippi_wizard-current_step" value="{{ wizard.steps.current }}" id="id_ippi_wizard-current_step"/> - <button class="submit_button" type="submit"> - {%block submit_button_text%} {% if wizard.steps.step1 == wizard.steps.count %} - {% trans 'Save in Database' %} + <button class="submit_button h4 p-2" type="submit"> + {% trans 'Save in Database' %} + </button> {%else%} - {% trans 'Next step' %} + <button class="submit_button" type="submit"> + {% trans 'Next step' %} + </button> {%endif%} - {%endblock%} - </button> </div> </form> <div class="empty_form" style="display:none">{% block emptyform %}{% endblock emptyform%}</div> diff --git a/ippisite/ippidb/templates/base.html b/ippisite/ippidb/templates/base.html index 93bb2356153915623a6138d04a10f66cf32b760c..9aedefb5d98cf9665e662912d027f657b95616ce 100644 --- a/ippisite/ippidb/templates/base.html +++ b/ippisite/ippidb/templates/base.html @@ -3,191 +3,210 @@ <!DOCTYPE html> <html lang="en"> - <head> - <title>IPPI-DB {% block title %}{% endblock %}</title> - {% if gacode %} - <!-- Global site tag (gtag.js) - Google Analytics --> - <script async src="https://www.googletagmanager.com/gtag/js?id={{ gacode }}"></script> - <script> +<head> + <title>IPPI-DB {% block title %}{% endblock %}</title> + + {% if gacode %} + <!-- Global site tag (gtag.js) - Google Analytics --> + <script async src="https://www.googletagmanager.com/gtag/js?id={{ gacode }}"></script> + <script> window.dataLayer = window.dataLayer || []; - function gtag(){dataLayer.push(arguments);} + function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', '{{ gacode }}'); - </script> - {% endif %} + </script> + {% endif %} + <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> + <link rel="stylesheet" href="/static/css/fonts.css"> + <link rel="stylesheet" href="/static/css/main.css"> + {% block extra_css %} + <link rel="stylesheet" href="/static/css/ippidb.css"> + {% endblock %} + <link rel="stylesheet" href="/static/css/ippidb-typeahead.css"> + <link rel="stylesheet" href="/static/academicons-1.8.6/css/academicons.min.css" /> + <link rel="stylesheet" href="/static/bootstrap-slider-master/dist/css/bootstrap-slider.min.css"> + <link rel="stylesheet" href="https://ebi.emblstatic.net/web_guidelines/EBI-Icon-fonts/v1.3/fonts.css"> - <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> - <link rel="stylesheet" href="/static/css/fonts.css"> - <link rel="stylesheet" href="/static/css/main.css"> - {% block extra_css %} - <link rel="stylesheet" href="/static/css/ippidb.css"> - {% endblock %} - <link rel="stylesheet" href="/static/css/ippidb-typeahead.css"> - <link rel="stylesheet" href="/static/academicons-1.8.6/css/academicons.min.css"/> - <link rel="stylesheet" href="/static/bootstrap-slider-master/dist/css/bootstrap-slider.min.css"> - <link rel="stylesheet" href="https://ebi.emblstatic.net/web_guidelines/EBI-Icon-fonts/v1.3/fonts.css"> + <script src="/static/url-polyfill/url-polyfill.js"></script> + <script src="/static/jquery/jquery-3.3.1.min.js"></script> + <script src="/static/bootstrap/js/bootstrap.bundle.min.js"></script> + <script src="/static/typeahead/typeahead.bundle.min.js"></script> + <script defer src="/static/font-awesome/js/all.min.js"></script> + <script src="/static/smilesdrawer/smiles-drawer.min.js"></script> + <script src="/static/bootstrap-slider-master/dist/bootstrap-slider.min.js"></script> - <script src="/static/url-polyfill/url-polyfill.js"></script> - <script src="/static/jquery/jquery-3.3.1.min.js"></script> - <script src="/static/bootstrap/js/bootstrap.bundle.min.js"></script> - <script src="/static/typeahead/typeahead.bundle.min.js"></script> - <script defer src="/static/font-awesome/js/all.min.js"></script> - <script src="/static/smilesdrawer/smiles-drawer.min.js"></script> - <script src="/static/bootstrap-slider-master/dist/bootstrap-slider.min.js"></script> + <script src="/static/js/ippidb.js" type="text/javascript"></script> + <script src="/static/js/ippidb-smilesdrawer.js" type="text/javascript"></script> - <script src="/static/js/ippidb.js" type="text/javascript"></script> - <script src="/static/js/ippidb-smilesdrawer.js" type="text/javascript"></script> + {% block extra_js %}{% endblock %} - {% block extra_js %}{% endblock %} +</head> - </head> +<body {% if debug %}class="debug" {%endif%} style="min-height:100vh; display:flex; flex-direction:column;"> + {% if gacode %} + <div id="consent" class="fixed-bottom pl-5 pr-5 pt-2 pb-2 text-light bg-dark text-center"> + By using the site you are agreeing to the use of third party cookies for statistical purposes. You can read more + about our policy <a href="/about-general/#terms-privacy"><b>here</b></a>. + <button id="consentBtn" class="btn btn-dark ml-2" type="button" aria-label="Accept">Accept + </button> + </div> + <script> + if (localStorage.getItem('consent') == 'true') { + $('#consent').hide(); + } + var consent = function () { + localStorage.setItem('consent', 'true'); + $('#consent').hide(); + } + $('#consentBtn').click(consent); + </script> + {% endif %} + <div class="jumbotron logoJum"> + <div class="container"> + <a href="/" id="home"> + <h1 class="display-3">iPPI-DB</h1> + <p class="lead">Inhibitors of Protein-Protein Interaction Database</p> - <body {% if debug %}class="debug"{%endif%} style="min-height:100vh; display:flex; flex-direction:column;"> - {% if gacode %} - <div id="consent" class="fixed-bottom pl-5 pr-5 pt-2 pb-2 text-light bg-dark text-center"> - By using the site you are agreeing to the use of third party cookies for statistical purposes. You can read more about our policy <a href="/about-general/#terms-privacy"><b>here</b></a>. - <button id="consentBtn" class="btn btn-dark ml-2" type="button" aria-label="Accept">Accept - </button> - </div> - <script> - if(localStorage.getItem('consent') == 'true'){ - $('#consent').hide(); - } - var consent = function(){ - localStorage.setItem('consent', 'true'); - $('#consent').hide(); - } - $('#consentBtn').click(consent); - </script> - {% endif %} - <div class="jumbotron logoJum"> - <div class="container"> - <a href="/" id="home"> - <h1 class="display-3">iPPI-DB</h1> - <p class="lead">Inhibitors of Protein-Protein Interaction Database</p> - - </a> - </div><!-- /.container-fluid --> - </div> - <nav class="fixed-top"> - <ul class="nav justify-content-end"> - {% if user.is_authenticated %} - <li><i class="fas {% if user.is_superuser %}fa-user-shield{% elif perms.ippidb.add_contribution %}fa-user-graduate{% else %}fa-user-circle{% endif %}"></i> {{ user.username }}<a class="ml-2" href="{% url 'logout' %}">logout</a></li> - {% else %} - <li><a href="/accounts/login/"><i class="fas fa-user-circle mr-2" title="Login"></i> LOGIN</a></li> - {% endif %} - </ul> - </nav> + </a> + </div><!-- /.container-fluid --> + </div> + <nav class="fixed-top"> + <ul class="nav justify-content-end"> + {% if user.is_authenticated %} + <li><i + class="fas {% if user.is_superuser %}fa-user-shield{% elif perms.ippidb.add_contribution %}fa-user-graduate{% else %}fa-user-circle{% endif %}"></i> + {{ user.username }}<a class="ml-2" href="{% url 'logout' %}">logout</a></li> + {% else %} + <li><a href="/accounts/login/"><i class="fas fa-user-circle mr-2" title="Login"></i> LOGIN</a></li> + {% endif %} + </ul> + </nav> + </nav> + <div id="mainnav"> + <nav class="main-nav"> + <div style="display: inline-block;"> + <ul> + <li> + <a href="{% url 'index' %}">Home</a> + </li> + <li> + <a href="{% url 'general' %}">About</a> + </li> + <li> + <a href="{% url 'compound_list' %}">Query compounds</a> + </li> + <li> + <a href="{% url 'cavities' %}">Query cavities</a> + </li> + <li> + <a href="{% url 'tutorials' %}">Tutorials</a> + </li> + <li> + <a href="{% url 'admin-session'%}">Contribute</a> + </li> + {% if request.user.is_staff %} + <li> + <a href="/admin">Admin</a> + </li> + {%endif%} + </ul> + </div> </nav> - <div id="mainnav"> - <nav class="main-nav"> - <div style="display: inline-block;"> - <ul> - <li> - <a href="{% url 'index' %}">Home</a> - </li> - <li> - <a href="{% url 'general' %}">About</a> - </li> - <li> - <a href="{% url 'compound_list' %}">Query compounds</a> - </li> - <li> - <a href="{% url 'cavities' %}">Query cavities</a> - </li> - <li> - <a href="{% url 'tutorials' %}">Tutorials</a> - </li> - <li> - <a href="{% url 'admin-session'%}">Contribute</a> - </li> - {% if request.user.is_staff %} - <li> - <a href="/admin">Admin</a> - </li> - {%endif%} - </ul> - </div> - </nav> + </div> + <div id="content"> + {% if messages %} + <div class="messages inner-wrap"> + {% for message in messages %} + <div {% if message.tags %} class="bg-{{ message.tags }} p-5 text-center"{% endif %}> + {% if 'success' in message.tags %} + <i class="fas fa-trophy fa-2x"></i> + {% endif %} + <h3>{{message}}</h3> + </div> + {% endfor %} </div> - <div id="content"> + {% endif %} {% block content %}{% endblock %} - </div> <!-- end main --> - <footer class="main-footer"> - <div class="inner-wrap"> - <div class="footer__section footer__address"> - <div class="footer__logo clearfix"> - <img src="https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/pasteur-white.png" alt="Institut Pasteur" title="Institut Pasteur"> - </div> - <div class="block block-block block-block-1"> - <div class="content"> - <root> + </div> <!-- end main --> + <footer class="main-footer"> + <div class="inner-wrap"> + <div class="footer__section footer__address"> + <div class="footer__logo clearfix"> + <img src="https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/pasteur-white.png" + alt="Institut Pasteur" title="Institut Pasteur"> + </div> + <div class="block block-block block-block-1"> + <div class="content"> + <root> <div class="address_street"> <span>25-28 Rue du Dr Roux, 75015 Paris</span> </div> <div class="address_phone"><span>01 45 68 80 00</span> </div> - </root> - </div> + </root> </div> </div> - <div class="footer__section footer__menu-1"> - <div id="block-menu-menu-footer-menu-1" class="block block-menu"> - <nav> - <ul> - <li> - <a href="/about-general">About</a> - </li> - <li> - <a href="/compounds">Query compounds</a> - </li> - <li> - <a href="/tutorials">Tutorials</a> - </li> - <li> - <a href="{% url 'admin-session'%}">{% trans 'Admin_session_title' %}</a> - </li> - </ul> - </nav> - </div> + </div> + <div class="footer__section footer__menu-1"> + <div id="block-menu-menu-footer-menu-1" class="block block-menu"> + <nav> + <ul> + <li> + <a href="/about-general">About</a> + </li> + <li> + <a href="/compounds">Query compounds</a> + </li> + <li> + <a href="/tutorials">Tutorials</a> + </li> + <li> + <a href="{% url 'admin-session'%}">{% trans 'Admin_session_title' %}</a> + </li> + </ul> + </nav> </div> - <div class="footer__section footer__menu-social"> - <div class="block block-menu block-menu-menu-footer-menu-social"> - <nav> - <ul> - <li> - <a href="/credits">Credits</a> - </li> - <li> - <a href="/citation">How to cite?</a> - </li> - <li> - <a href="/news">Latest News</a> - </li> - </ul> - </nav> - </div> + </div> + <div class="footer__section footer__menu-1"> + <div class="block block-menu block-menu-menu-footer-menu-social"> + <nav> + <ul> + <li> + <a href="/credits">Credits</a> + </li> + <li> + <a href="/citation">How to cite?</a> + </li> + <li> + <a href="/news">Latest News</a> + </li> + </ul> + </nav> </div> </div> - </footer> + </div> + </footer> -<div class="modal fade" id="loadingModal" tabindex="-1" role="dialog" aria-labelledby="loadingModal" aria-hidden="true"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <h5 class="modal-title update_modal_title" id="exampleModalLabel">Loading...</h5> - </div> - <div class="modal-body"> - <div class="progress"> - <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 100%"></div> + <div class="modal fade" id="loadingModal" tabindex="-1" role="dialog" aria-labelledby="loadingModal" + aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title update_modal_title" id="exampleModalLabel">Loading...</h5> + </div> + <div class="modal-body"> + <div class="progress"> + <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" + style="width: 100%"></div> + </div> + </div> + </div> </div> - </div> </div> - </div> -</div> - </body> -</html> +</body> + +</html> \ No newline at end of file diff --git a/ippisite/ippidb/templates/biblio_citation.html b/ippisite/ippidb/templates/biblio_citation.html index eb335c600398528a58d8f3043c6c9ec36ca57768..d1a28999642a1b14ad2426a19836487c99e787f7 100644 --- a/ippisite/ippidb/templates/biblio_citation.html +++ b/ippisite/ippidb/templates/biblio_citation.html @@ -1 +1 @@ -<a target="_blank" class="card-link" href="{%if bibliography.source == 'PM' %}https://www.ncbi.nlm.nih.gov/pubmed/{% else %}https://patentscope.wipo.int/search/en/detail.jsf?docId={% endif %}{{ bibliography.id_source }}">{{ bibliography.authors_list }}. {{ authors.biblio_year }}. {{ bibliography.title }} {{ bibliography.journal_name }}. </a> +<a target="_blank" class="card-link" href="{{bibliography.get_external_url}}">{{ bibliography.authors_list }}. {{ authors.biblio_year }}. {{ bibliography.title }} {{ bibliography.journal_name }}. </a> diff --git a/ippisite/ippidb/templates/biblio_simplelink.html b/ippisite/ippidb/templates/biblio_simplelink.html index 51e4b4cde5d258f8c1d7d5895b903332a9da921b..04fb6b2981b84fa9859b44474bd24f69ed9c7487 100644 --- a/ippisite/ippidb/templates/biblio_simplelink.html +++ b/ippisite/ippidb/templates/biblio_simplelink.html @@ -1 +1 @@ -<a target="_blank" class="card-link" href="{%if bibliography.source == 'PM' %}https://www.ncbi.nlm.nih.gov/pubmed/{% else %}https://patentscope.wipo.int/search/en/detail.jsf?docId={% endif %}{{ bibliography.id_source }}">{{ bibliography.id_source }}</a> +<a target="_blank" class="card-link" href="{{bibliography.get_external_url}}">{{ bibliography.id_source }}</a> diff --git a/ippisite/ippidb/templates/citation.html b/ippisite/ippidb/templates/citation.html new file mode 100644 index 0000000000000000000000000000000000000000..7367afc0c548557151360141e288c2c3158dba9f --- /dev/null +++ b/ippisite/ippidb/templates/citation.html @@ -0,0 +1,54 @@ +{% extends "index.html" %} + +{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %} + +{% block content %} + +<div class="inner-wrap"> + <div id="main-wrapper" class="page"> + <div id="main"> + <div id="content" class="main-content"> + <div class="section"> + <main role="main"> + <h1 class="page-title"> {% block pagetitle %}HOW TO CITE ?{% endblock%} </h1> + <div class="tabs"></div> + <div class="main__inner"> + <div class="region region-content"> + <div class="page-intro"> + </div> + <div class="color-wrap"> + <div class="region region-content"> + <div class="block block-system block-system-main"> + <div class="content"> + <div class="view-content"> +{% block view_content %} +<div style="text-align: center;"> + <div class="latest-publi"> Latest publication</div> + <div class="link-publication mySlides"> + <b>iPPI-DB: an online database of modulators of protein-protein + interactions.</b><br /> + <a href="http://doi.org/10.1093/nar/gkv982" target="_blank""> + + <i>Labbé CM, Kuenemann MA, Zarzycka B, Vriend G, Nicolaes GA, Lagorce D, + Miteva MA, Villoutreix BO, Sperandio O.</i><br /> + Nucleic Acids Res. 2016 Jan 4;44(D1):D542-7. doi: 10.1093/nar/gkv982. + Epub + 2015 Oct 1. + </a> + </div> +</div> +{% endblock %} + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </main><!-- .site-main --> + </div> + </div> + </div><!-- div main --> + </div> +</div> +{% endblock %} diff --git a/ippisite/ippidb/templates/compound_card.html b/ippisite/ippidb/templates/compound_card.html index 548c0bb05744b5d96fcf4f06aba797dd864be7a9..94436c01b566cbd3cffbe07e068d99e265677d11 100644 --- a/ippisite/ippidb/templates/compound_card.html +++ b/ippisite/ippidb/templates/compound_card.html @@ -6,7 +6,8 @@ <script src="/static/js/ippidb-charts.js" type="text/javascript"></script> {% endblock %} -{% block title %}compound detail{% endblock %} +{% block title %}compound {{ compound.id }} detail{% if compound.common_name %} +({{compound.common_name}}){% endif %}{% endblock %} {% block content %} <div id="mainnav"> @@ -36,7 +37,9 @@ {% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile width=250 height=250%} <div style="display: flex; align-items: center;"> - {% if compound.is_validated is False %} + {% if compound.replaced_with is not None %} + <h1 class="page-title-warning" style="margin: 0;">Compound {{ compound.id }} - This compound is replaced with <a href="/compounds/{{ compound.replaced_with.id }}">compound {{ compound.replaced_with.id }}</a> </h1> + {% elif compound.is_validated is False %} <h1 class="page-title-warning" style="margin: 0;">Compound {{ compound.id }} - This compound has not been validated by a curator yet, data might be incomplete or inaccurate</h1> @@ -52,7 +55,7 @@ <div class="row" style="display: inline-block;height:auto; margin-right: 15px; margin-left: 15px;"> <div class="tab-content" id="tabContent"> <div class="tab-pane fade show active" id="compound" role="tabpanel" aria-labelledby="compound-tab"> - <div class="card"> + <div class="card inner-wrap"> <div class="card-body"> {% include "compound_l_item.html" with compound=compound show_detail=True %} </div> @@ -61,7 +64,8 @@ <div class="tab-pane fade" id="physicochemistry" role="tabpanel" aria-labelledby="physicochemistry-tab"> <div class="row d-flex justify-content-center"> <div class="col-sm-12 col-md-9" style="margin: 10px;"> - <h5 class="card_title">Physicochemical filters <span class="info_point" onclick="showLegend('show_legend_physico')"><i class="fas fa-info-circle"></i></span> + <h5 class="card_title">Physicochemical filters <span class="info_point" + onclick="showLegend('show_legend_physico')"><i class="fas fa-info-circle"></i></span> </h5> <div id="show_legend_physico" style="display: none; padding:8px;"> <div class="row d-flex justify-content-center" style=" box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.2); @@ -211,7 +215,7 @@ <td class="table-light"></td> <td class="text-center {% status_class compound.veber_tpsa %}" title="TPSA <= 140"> </td> - <td class="text-center default_if_none:" not available" }}</td> + <td class="text-center {% status_class compound.pfizer_tpsa %}" title="TPSA >= 75"> </tr> <tr> <th scope="row">RB</th> @@ -224,94 +228,96 @@ </tbody> </table> </div> - <div class="col" style="margin: 10px;"> - <h5 class="card_title">Radar chart<span class="info_point" onclick="showLegend('show_legend_radar')"> <i class="fas fa-info-circle"></i></span> - </h5> - <div id="show_legend_radar" style="display: none; padding:8px;"> - <div class="row d-flex justify-content-center" style=" box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.2); - padding-top: 9px;"> - <div class="col-8"> - <div style="border: 1px solid #f2f2f2;"> - <div style=" background-color: #f2f2f2;text-align: center; font-family:'BrandonGrotesqueBld';"> - Caption - </div> - <div style="padding: 5px;"> - <p><i class="fas fa-draw-polygon" style="color:#ff6384;"></i> Descriptor's value for the - compound</p> - <p><i class="fas fa-draw-polygon" style="color:#36a2eb;"></i> Descriptor's threshold</p> - <p>Those thresholds correspond either to the limits of both the Lipinski's RO5 and Veber's rule, - or to the rule of thumb of Ritchie for the number of aromatic rings - Ar, and the mean values - usually observed among drugs for Fsp3 and the number of chiral centers - R/S.</p> - </div> + </div> + <div class="col-sm-12 col-md-9" style="margin: 10px;"> + <h5 class="card_title">Radar chart<span class="info_point" onclick="showLegend('show_legend_radar')"> <i + class="fas fa-info-circle"></i></span> + </h5> + <div id="show_legend_radar" style="display: none; padding:8px;"> + <div class="row d-flex justify-content-center" style=" box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.2); + padding-top: 9px;"> + <div class="col-8"> + <div style="border: 1px solid #f2f2f2;"> + <div style=" background-color: #f2f2f2;text-align: center; font-family:'BrandonGrotesqueBld';"> + Caption + </div> + <div style="padding: 5px;"> + <p><i class="fas fa-draw-polygon" style="color:#ff6384;"></i> Descriptor's value for the + compound</p> + <p><i class="fas fa-draw-polygon" style="color:#36a2eb;"></i> Descriptor's threshold</p> + <p>Those thresholds correspond either to the limits of both the Lipinski's RO5 and Veber's rule, + or to the rule of thumb of Ritchie for the number of aromatic rings - Ar, and the mean values + usually observed among drugs for Fsp3 and the number of chiral centers - R/S.</p> </div> - </div> - <div class="col-4"> - <table class="table table-striped legend_table"> - <thead> - <tr> - <th>Short name</th> - <th>Threshold</th> - </tr> - </thead> - <tbody> - <tr> - <td>MW</td> - <td>≤ 500 g/mol</td> - </tr> - <tr> - <td>AlogP</td> - <td>≤ 5</td> - </tr> - <tr> - <td>HBD</td> - <td>≤ 5</td> - </tr> - <tr> - <td>HBA</td> - <td>≤ 10</td> - </tr> - <tr> - <td>TPSA</td> - <td>≤ 140 Ã…<sup>2</sup></td> - </tr> - <tr> - <td>RB</td> - <td>≤ 10</td> - </tr> - <tr> - <td>ArRing</td> - <td>≤ 4</td> - </tr> - <tr> - <td>Fsp3</td> - <td>≥ 0.4</td> - </tr> - <tr> - <td>R/S</td> - <td>≥ 1</td> - </tr> - </tbody> - </table> </div> </div> + <div class="col-4"> + <table class="table table-striped legend_table"> + <thead> + <tr> + <th>Short name</th> + <th>Threshold</th> + </tr> + </thead> + <tbody> + <tr> + <td>MW</td> + <td>≤ 500 g/mol</td> + </tr> + <tr> + <td>AlogP</td> + <td>≤ 5</td> + </tr> + <tr> + <td>HBD</td> + <td>≤ 5</td> + </tr> + <tr> + <td>HBA</td> + <td>≤ 10</td> + </tr> + <tr> + <td>TPSA</td> + <td>≤ 140 Ã…<sup>2</sup></td> + </tr> + <tr> + <td>RB</td> + <td>≤ 10</td> + </tr> + <tr> + <td>ArRing</td> + <td>≤ 4</td> + </tr> + <tr> + <td>Fsp3</td> + <td>≥ 0.4</td> + </tr> + <tr> + <td>R/S</td> + <td>≥ 1</td> + </tr> + </tbody> + </table> + </div> </div> - <div class="card_border"> - {% if compound.molecular_weight is not None %} - <canvas id="radar" data-radarh="500px" data-radarw="500px"></canvas> - <script> - $('a.second_nav').on('shown.bs.tab', function (e) { - drawCompoundDescriptorRadarChart('radar', {{ compound.molecular_weight }}, {{ compound.a_log_p }}, {{ compound.nb_donor_h }}, {{ compound.nb_acceptor_h }}, {{ compound.tpsa }}, {{ compound.nb_rotatable_bonds }}, {{ compound.nb_benzene_like_rings }}, {{ compound.fsp3 }}, {{ compound.nb_chiral_centers }}); - }); - </script> - {% else %} - <p class="text-secondary">Compound properties unavailable</p> - {% endif %} - </div> + </div> + <div class="card_border"> + {% if compound.molecular_weight is not None %} + <canvas id="radar" data-radarh="500px" data-radarw="500px"></canvas> + <script> + $('a.second_nav').on('shown.bs.tab', function (e) { + drawCompoundDescriptorRadarChart('radar', {{ compound.molecular_weight }}, {{ compound.a_log_p }}, {{ compound.nb_donor_h }}, {{ compound.nb_acceptor_h }}, {{ compound.tpsa }}, {{ compound.nb_rotatable_bonds }}, {{ compound.nb_benzene_like_rings }}, {{ compound.fsp3 }}, {{ compound.nb_chiral_centers }}); + }); + </script> + {% else %} + <p class="text-secondary">Compound properties unavailable</p> + {% endif %} </div> </div> </div> + {% if pca_biplot_data %} <div class="row d-flex justify-content-center"> - <div class="col-sm-12 col-md-9" style="margin: 10px;"> + <div class="col-sm-12 col-md-9"> <h5 class="card_title">PCA : iPPI-DB chemical space</h5> <div class="card_border"> @@ -321,46 +327,48 @@ </script> </div> </div> - <div class="col-sm-12 col-md-7" style="margin: 10px;"> + <div class="col-sm-12 col-md-7"> <h5 class="card_title">PCA : Correlation circle</h5> <div class="card_border"> <img src="data:image/png;base64,{{ pca_biplot_cc }}" style="width: 100%; height:auto" \> </div> </div> </div> + {% endif %} </div> <div class="tab-pane fade" id="pharmacology" role="tabpanel" aria-labelledby="pharmacology-tab"> + {% if le_lle_biplot_data %} <div class="row d-flex justify-content-center"> <div class="col-sm-12 col-md-9" style="margin: 10px;"> <h5 class="card_title">Efficiencies: iPPI-DB biplot LE versus LLE <span class="info_point" - onclick="showLegend('show_legend_LLE')"> <i class="fas fa-info-circle fa-sm"></i></span></h5> + onclick="showLegend('show_legend_LLE')"> <i class="fas fa-info-circle fa-sm"></i></span></h5> <div id="show_legend_LLE" style="display: none; padding:8px; margin-left: auto; margin-right: auto;"> - <div class="row d-flex justify-content-center" style="box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.2); + <div class="row d-flex justify-content-center" style="box-shadow: 0 3px 11px 0 rgba(0, 0, 0, 0.2); padding-top: 9px;"> - <div class="col-12" style="margin-bottom: 10px;"> - <div style="border: 1px solid #f2f2f2;"> - <div style=" background-color: #f2f2f2;text-align: center; font-family:'BrandonGrotesqueBld';"> - Caption - </div> - <div style="padding: 5px;"> - <ul> - <li>LE: Ligand Efficiency</li> - <img src="/static/images/Other/formLE_petit.png"> - <li>LLE: Lipophilic Efficiency</li> - <img src="/static/images/Other/formLLE_petit.png"> - </ul> - <p> - For the calculation of the efficiencies, we select a reference activity such that Ki and Kd - are favored over IC50 and EC50 and biochemical assays over cellular assays. - </p> + <div class="col-12" style="margin-bottom: 10px;"> + <div style="border: 1px solid #f2f2f2;"> + <div style=" background-color: #f2f2f2;text-align: center; font-family:'BrandonGrotesqueBld';"> + Caption + </div> + <div style="padding: 5px;"> + <ul> + <li>LE: Ligand Efficiency</li> + <img src="/static/images/Other/formLE_petit.png"> + <li>LLE: Lipophilic Efficiency</li> + <img src="/static/images/Other/formLLE_petit.png"> + </ul> + <p> + For the calculation of the efficiencies, we select a reference activity such that Ki and Kd + are favored over IC50 and EC50 and biochemical assays over cellular assays. + </p> + </div> </div> </div> </div> </div> - </div> - + <div class="card_border"> <canvas id="le_lle_biplot"></canvas> <script> @@ -368,24 +376,13 @@ </script> </div> </div> + </div> + {% endif %} <div class="row d-flex justify-content-center"> <div class="col-sm-12 col-md-9" style="margin: 10px;"> <h5 class="card_title">Summary</h5> - <div class="card_border row" style="text-align: center;"> - <div class="col-md-4"> - <h6 class="card_title">Bibliographic ressources</h6> - <p>{{ compound.biblio_refs.count }}</p> - </div> - <div class="col-md-4"> - <h6 class="card_title">Biochemical tests</h6> - <p>{{ compound.bioch_tests_count }}</p> - </div> - <div class="col-md-4"> - <h6 class="card_title">Cellular tests</h6> - <p>{{ compound.cell_tests_count }}</p> - </div> - </div> + {% include "compound_test_counts.html" with compound=compound show_bibrefs=True %} </div> </div> <div class="row d-flex justify-content-center"> @@ -436,7 +433,99 @@ </div> </div> </div> - + {% if compound.cytoxtest_av %} + <div class="row d-flex justify-content-center"> + <div class="col-sm-12 col-md-12" style="margin: 10px;"> + <h5 class="card_title">Cytotoxicity data</h5> + <div class="card_border"> + <table class="table table-sm col-sm-12 col-md-12"> + <thead style="text-align: center;"> + <tr> + <th class="card_title" scope="col">Bibliography</th> + <th class="card_title" scope="col" title="Compound name in publication">Name</th> + <th class="card_title" scope="col">Assay name</th> + <th class="card_title" scope="col">Cell line</th> + <th class="card_title" scope="col">Compound concentration (μM)</th> + <th class="card_title" scope="col">Toxicity</th> + </tr> + </thead> + <tbody style="text-align: center;"> + {% for ccr in compound.compoundcytotoxicityresult_set.all %} + <tr> + <td> + {% include "biblio_simplelink.html" with bibliography=ccr.test_cytotoxicity_description.biblio %} + </td> + {% for rcb in ccr.test_cytotoxicity_description.biblio.refcompoundbiblio_set.all %} + {% if rcb.compound == compound %} + <td>{{ rcb.compound_name }}</td> + {% endif %} + {% endfor %} + <td>{{ ccr.test_cytotoxicity_description.test_name }}</td> + <td>{{ ccr.test_cytotoxicity_description.cell_line.name }}</td> + <td>{{ ccr.test_cytotoxicity_description.compound_concentration }}</td> + <td>{{ ccr.toxicity|yesno }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + </div> + </div> + {% endif %} + {% if compound.pktest_av %} + <div class="row d-flex justify-content-center"> + <div class="col-sm-12 col-md-12" style="margin: 10px;"> + <h5 class="card_title">PK data</h5> + <div class="card_border"> + <table class="table table-sm col-sm-12 col-md-12"> + <thead style="text-align: center;"> + <tr> + <th class="card_title" scope="col">Bibliography</th> + <th class="card_title" scope="col" title="Compound name in publication">Name</th> + <th class="card_title" scope="col">Assay name</th> + <th class="card_title" scope="col">Administration mode</th> + <th class="card_title" scope="col">Dose (mg/kg)</th> + <th class="card_title" scope="col">Dose interval (hours)</th> + <th class="card_title" scope="col">Tolerated</th> + <th class="card_title" scope="col">AUC</th> + <th class="card_title" scope="col">Clearance</th> + <th class="card_title" scope="col">Cmax</th> + <th class="card_title" scope="col">Oral bioavailability</th> + <th class="card_title" scope="col">T1/2 (min)</th> + <th class="card_title" scope="col">Tmax (min)</th> + <th class="card_title" scope="col">Volume distribution (Vd)</th> + </tr> + </thead> + <tbody style="text-align: center;"> + {% for cpr in compound.compoundpkresult_set.all %} + <tr> + <td>{% include "biblio_simplelink.html" with bibliography=cpr.test_pk_description.biblio %} + </td> + {% for rcb in cpr.test_pk_description.biblio.refcompoundbiblio_set.all %} + {% if rcb.compound == compound %} + <td>{{ rcb.compound_name }}</td> + {% endif %} + {% endfor %} + <td>{{ cpr.test_pk_description.test_name }}</td> + <td>{{ cpr.test_pk_description.administration_mode }}</td> + <td>{{ cpr.test_pk_description.dose|floatformat:2 }}</td> + <td>{{ cpr.test_pk_description.dose_interval }}</td> + <td>{{ cpr.tolerated|yesno }}</td> + <td>{{ cpr.auc_av|yesno }}</td> + <td>{{ cpr.clearance_av|yesno }}</td> + <td>{{ cpr.c_max_av|yesno }}</td> + <td>{{ cpr.oral_bioavailability }}</td> + <td>{{ cpr.t_demi }}</td> + <td>{{ cpr.t_max }}</td> + <td>{{ cpr.voldistribution_av|yesno }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + </div> + </div> + {% endif %} </div> <div class="tab-pane fade" id="drugsimilarity" role="tabpanel" aria-labelledby="drugsimilarity-tab"> <table class="table table-striped" style="border:1px solid #E3E3E3;"> @@ -468,6 +557,7 @@ </div> </div> +{{ bioschemas_data|json_script:compound }} <script> var showTab = function (hash) { window.location.hash = hash; diff --git a/ippisite/ippidb/templates/compound_db_links.html b/ippisite/ippidb/templates/compound_db_links.html index 10723bd5591252c613cdbf135ba9c32627a302a9..95baa39456f61bc755ef93bf47f43ba0762bd3bb 100644 --- a/ippisite/ippidb/templates/compound_db_links.html +++ b/ippisite/ippidb/templates/compound_db_links.html @@ -1,23 +1,43 @@ -{%if compound.pubchem_id or compound.chembl_id or compound.chemspider_id %} -<table class="table mb-0"> +{%if compound.pubchem_id or compound.chembl_id or compound.chemspider_id or compound.ligand_id %} +<table class="table m-1 card_border"> <tbody> - <tr class="row"> - <td scope="col" class="col-4"> + <tr class="table-row"> + <td scope="col" class="col-2 text-center"> {% if compound.pubchem_id %} - <a href="https://pubchem.ncbi.nlm.nih.gov/compound/{{ compound.pubchem_id }}" target="_blank"><img src="/static/images/Other/Pubchemlogo.png" style="height: 1.5em;" title="PubChem ID: {{ compound.pubchem_id }}" /></a> + <a href="{{ compound.pubchem_url }}" target="_blank"><img + src="/static/images/Other/Pubchemlogo.png" style="height: 1.5em;" + title="PubChem ID: {{ compound.pubchem_id }}" /><br />{{ compound.pubchem_id }}</a> {% endif %} </td> - <td scope="col" class="col-4"> + <td scope="col" class="col-2 text-center"> {% if compound.chembl_id %} - <a href="https://www.ebi.ac.uk/chembldb/compound/inspect/{{ compound.chembl_id }}" target="_blank"><img src="/static/images/Other/Chembl_logo.png" style="height: 1.5em;" title="ChEMBL ID: {{ compound.pubchem_id }}" /></a> + <a href="{{ compound.chembl_url }}" target="_blank"><img + src="/static/images/Other/Chembl_logo.png" style="height: 1.5em;" + title="ChEMBL ID: {{ compound.chembl_id }}" /><br />{{ compound.chembl_id }}</a> {% endif %} </td> - <td scope="col" class="col-4"> + <td scope="col" class="col-2 text-center"> {% if compound.chemspider_id %} - <a href="http://www.chemspider.com/Chemical-Structure.{{ compound.chemspider_id}}.html" target="_blank"><img src="/static/images/Other/ChemSpider_Logo.png" style="height: 1.5em;" title="ChemSpider ID: {{ compound.chemspider_id }}" /></a> + <a href="{{ compound.chemspider_url }}.html" target="_blank"><img + src="/static/images/Other/ChemSpider_Logo.png" style="height: 1.5em;" + title="ChemSpider ID: {{ compound.chemspider_id }}" /><br />{{ compound.chemspider_id }}</a> + {% endif %} + </td> + <td scope="col" class="col-2 text-center"> + {% if compound.ligand_id %} + <a href="{{ compound.pdbligand_url }}" target="_blank"><img + src="/static/images/Other/PDBLogo.ico" style="height: 1.5em;" + title="PDB Ligand ID: {{ compound.ligand_id }}" /><br />{{ compound.ligand_id }}</a> + {% endif %} + </td> + <td scope="col" class="col-2 text-center"> + {% if compound.drugbank_id %} + <a href="{{ compound.drugbank_url }}" target="_blank"><img + src="/static/images/Other/DrugBankLogo.ico" style="height: 1.5em;" + title="DrugBank ID: {{ compound.drugbank_id }}" /><br />{{ compound.drugbank_id }}</a> {% endif %} </td> </tr> </tbody> </table> -{% endif %} +{% endif %} \ No newline at end of file diff --git a/ippisite/ippidb/templates/compound_dbsearch_links.html b/ippisite/ippidb/templates/compound_dbsearch_links.html index 5b5fc9e3c0eb91feda50fdb0e56a6527d6fe9250..2ee9a08470ce7bae4d55251a7c56d706c89ecec6 100644 --- a/ippisite/ippidb/templates/compound_dbsearch_links.html +++ b/ippisite/ippidb/templates/compound_dbsearch_links.html @@ -1,19 +1,19 @@ -<table class="table mb-0"> +<table class="table m-1 card_border"> <tbody> - <tr class="row"> - <td scope="col" class="col-2"> + <tr class="table-row"> + <td scope="col" class="col-2 text-center"> <a href="https://www.ncbi.nlm.nih.gov/pccompound?term={{ compound.inchikey }}" target="_blank"><img src="/static/images/Other/Pubchemlogo.png" style="height: 1.5em;" title="search INCHIKEY on PubChem" /></a> </td> - <td scope="col" class="col-2"> + <td scope="col" class="col-2 text-center"> <a href="https://chem.nlm.nih.gov/chemidplus/inchikey/{{ compound.inchikey }}" target="_blank"><img src="/static/images/Other/chemidplus_logo.png" style="height: 1.5em;" title="search INCHIKEY on ChemID plus" /></a> </td> - <td scope="col" class="col-2"> + <td scope="col" class="col-2 text-center"> <a href=" https://www.ebi.ac.uk/chembl/beta/g/#search_results/all/query={{ compound.inchikey }}" target="_blank"><img src="/static/images/Other/Chembl_logo.png" style="height: 1.5em;" title="search INCHIKEY on ChEMBL" /></a> </td> - <td scope="col" class="col-2"> + <td scope="col" class="col-2 text-center"> <a href="http://www.chemspider.com/Search.aspx?q={{ compound.inchikey }}" target="_blank"><img src="/static/images/Other/ChemSpider_Logo.png" style="height: 1.5em;" title="search INCHIKEY on ChemSpider" /></a> </td> - <td scope="col" class="col-2"> + <td scope="col" class="col-2 text-center"> <a href="http://www.chemsynthesis.com/text-search/search.php?mode=searchform&field=inchikey&searchtext={{ compound.inchikey }}" target="_blank"><img src="/static/images/Other/chemsynthesis_logo.png" style="height: 1.5em;" title="search INCHIKEY on ChemSpider" /></a> </td> </tr> diff --git a/ippisite/ippidb/templates/compound_form_content.html b/ippisite/ippidb/templates/compound_form_content.html index 671989dd185764364eba5c11ed13d3a111e54ae1..ee750a8f401964e8ecd1e37c98f27e1b63522058 100644 --- a/ippisite/ippidb/templates/compound_form_content.html +++ b/ippisite/ippidb/templates/compound_form_content.html @@ -2,8 +2,6 @@ {% load customtags %} {% block extra_js %} <script type="text/javascript"> - - $(document).ready(function () { $('#delete-btn > div:first').remove(); }); @@ -59,37 +57,37 @@ <!-- {{ form.common_name|bootstrap }}--> <h3 class="compound_title">Draw it </h3> <div class="molecule_draw" id="myDiv"> - <div class="molecule_code_button active" onclick="displayMoleculeCode('SmileCode');"> - <a><img src="/static/images/Other/SMILESIcon.png" width="35" height="35" /> - <p style="margin:5px;">Paste SMILE code</p> - </a> - </div> - <div class="molecule_code_button" onclick="displayMoleculeCode('IupaCode');"> - <a><img src="/static/images/Other/IUPACIcon.png" width="35" height="35" /> - <p style="margin:5px;">Paste IUPAC code</p> - </a> - </div> + <a id="smile_button-{{form.molecule_smiles.html_name}}" class="molecule_code_button_active" onclick="displayMoleculeCode('{{form.molecule_smiles.html_name}}');"><img + src="/static/images/Other/SMILESIcon.png" width="35" height="35" /> + <p style="margin:5px;">Paste SMILE code</p> + </a> + <script type="text/javascript"> + $(document).ready(function () { + showCanvas(document.getElementById('{{form.molecule_smiles.id_for_label}}')); + }); + </script> <div class="molecule_code_button" onclick="showModalFromMe(this);return false;"> <a><i class="fas fa-pencil-alt fa-2x"></i> <p style="margin:5px;">Sketch your compound</p> </a> </div> </div> - <div class="molecule_draw" id="draw_molecule"> - <div class="molecule_scheme" id="canvas_window" style="display: block;"> + <div id="draw_smile-{{form.molecule_smiles.html_name}}" class="smile_field"> + <div class="molecule_scheme" id="canvas_window-{{form.molecule_smiles.html_name}}" style="display: none;"> <canvas id="canvas-{{form.molecule_smiles.html_name}}"></canvas> </div> - <div id="SmileCode" class="compo_input" style="display: block; width:76%;"> - {{ form.molecule_smiles|bootstrap }} - + <div class="molecule_scheme_placeholder" id="canvas_placeholder-{{form.molecule_smiles.html_name}}"> + <p>Here your molecule</p> </div> - <div id="IupaCode" class="compo_input" style="display: none; width:76%;"> - {{ form.molecule_iupac|bootstrap }} + <div class="compo_input" style="width:76%;"> + {{ form.molecule_smiles|bootstrap }} </div> </div> + <h3 class="compound_title">Add complementary informations </h3> <div> {{ form.is_macrocycle|bootstrap }} </div> </div> -</div> \ No newline at end of file +</div> + diff --git a/ippisite/ippidb/templates/compound_l_item.html b/ippisite/ippidb/templates/compound_l_item.html index 208ad5071d114f0520975b6465b9322584b48e64..c1d06cfbea2ce37b39cceb188a765cf28e927c1f 100644 --- a/ippisite/ippidb/templates/compound_l_item.html +++ b/ippisite/ippidb/templates/compound_l_item.html @@ -1,11 +1,36 @@ +{% load customtags %} + <div class="row m-2 border border-info bg-light border_card" style="box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.2);"> {%if show_detail != True %} - <div class="col-sm-3 border-info d-flex justify-content-center align-content-center"> - <a href="/compounds/{{ compound.id }}">{% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile %}</a> - <h2 class="position-absolute" style="top:0.3em; left:0.3em;"><span class="badge badge-light"><a href="/compounds/{{ compound.id }}">{{ compound.id }}</a></span></h2> - {% if compound.tanimoto != None %} - <h2 class="position-absolute" style="top:0.3em; right:0.3em;" title="tanimoto similarity value"><span class="badge badge-light text-warning">{{ compound.tanimoto }}</span></h2> - {% endif %} + <div class="col-sm-3 border-info justify-content-center align-content-center {% if compound.replaced_with or compound.is_validated is False %}bg_warning{% endif %}"> + <div class="row"> + <a style="overflow: hidden;" href="/compounds/{{ compound.id }}">{% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile %}</a> + <h2 class="position-absolute" style="top:0.3em; left:0.3em;"><span class="badge badge-light"><a href="/compounds/{{ compound.id }}">{{ compound.id }}</a></span>{% if compound.replaced_with is not None %} + <span style="font-size: 26px; color:#fa8005; font-size: 75%;">replaced with <a href="/compounds/{{ compound.replaced_with.id }}">{{ compound.replaced_with.id }}</a></span>{% elif compound.is_validated is False %}<span + style="font-size: 26px; color:#fa8005;">not validated</span>{% endif %}</h2> + {% if compound.tanimoto != None %} + <h2 class="position-absolute" style="top:0.3em; right:0.3em;" title="tanimoto similarity value"><span class="badge badge-light text-warning">{{ compound.tanimoto }}</span></h2> + {% endif %} + </div> + <h4 class="pt-2 compound_list_title">Chemistry rules</h4> + <div class="row m-1"> + <table class="table table-sm col-sm-12 col-md-6 card_border m-1" style="text-align: center;"> + <thead> + <tr> + <th scope="col" class="card_title col_width">Lipinski's RO5</th> + <th scope="col" class="card_title col_width">Veber</th> + <th scope="col" class="card_title col_width">Pfizer's 3/75</th> + </tr> + </thead> + <tbody> + <tr> + <td>{% rule_status_icon compound.lipinsky "Lipinski's RO5" %}</td> + <td>{% rule_status_icon compound.veber "Veber" %}</td> + <td>{% rule_status_icon compound.pfizer "Pfizer" %}</td> + </tr> + </tbody> + </table> + </div> </div> {% endif %} <div class="{%if show_detail != True %}col-sm-9{% else %}col-sm-12{% endif %}"> @@ -15,19 +40,19 @@ <li class="list-group-item">Common name: {{ compound.common_name }}</li> {% endif %} {% if compound.canonical_smile %} - <li class="list-group-item">Canonical SMILES: {{ compound.canonical_smile }}</li> + <li class="list-group-item">Canonical SMILES: <pre style="overflow: scroll;">{{ compound.canonical_smile }}</pre></li> {% endif %} {% if compound.iupac_name %} - <li class="list-group-item">IUPAC name: {{ compound.iupac_name }}</li> + <li class="list-group-item">IUPAC name: <pre style="overflow: scroll;">{{ compound.iupac_name }}</pre></li> {% endif %} {% if compound.inchi %} - <li class="list-group-item">InChi: {{ compound.inchi }}</li> + <li class="list-group-item">InChi: <pre style="overflow: scroll;">{{ compound.inchi }}</pre></li> {% endif %} {% if compound.inchikey %} - <li class="list-group-item">InChiKey: {{ compound.inchikey }}</li> + <li class="list-group-item">InChiKey: <pre style="overflow: scroll;">{{ compound.inchikey }}</pre></li> {% endif %} </ul> - {%if compound.pubchem_id or compound.chembl_id or compound.chemspider_id %} + {%if compound.pubchem_id or compound.chembl_id or compound.chemspider_id or compound.ligand_id %} <h4 class="pt-2 compound_list_title">External links</h4> {% include "compound_db_links.html" %} {% endif %} @@ -36,24 +61,56 @@ {% include "compound_dbsearch_links.html" %} {% endif %} {% if compound.biblio_refs %} - <h4 class="pt-2 compound_list_title">Bibliography</h4> - <table class="table"> + <h4 class="pt-2 compound_list_title">Bibliography ({{compound.biblio_refs.count}})</h4> + <table class="table m-1 card_border"> <thead> - <tr> + <tr class="table-row"> <th scope="col">Publication</th> <th scope="col" title="Compound name in publication">Name</th> </tr> </thead> <tbody> {% for biblio_ref in compound.biblio_refs %} - <tr> + <tr class="table-row"> <td scope="col">{% include "biblio_citation.html" with bibliography=biblio_ref.bibliography%}</td> <td scope="col">{{ biblio_ref.compound_name }}</td> </tr> {% endfor %} </tbody> </table> - </ul> + <h4 class="pt-2 compound_list_title">Pharmacological data</h4> + {% include "compound_test_counts.html" with compound=compound show_bibrefs=False %} + <h4 class="pt-2 compound_list_title">Targets</h4> + <table class="table m-1 card_border"> + <thead> + <tr class="table-row"> + <th scope="col">PPI family</th> + <th scope="col">Best activity</th> + <th scope="col">Diseases</th> + <th scope="col" title="Molecular Mechanism of Action">MMoA</th> + </tr> + </thead> + <tbody> + {% for row in compound.get_target_activities_table %} + <tr class="table-row"> + <td scope="col">{{ row.family.name }}</td> + <td scope="col">{{ row.best_activity|floatformat:2 }}</td> + <td scope="col"> + {% for disease in row.diseases %} + {{ disease.name }} + {% if not forloop.last %}, {% endif %} + {% endfor %} + </td> + <td scope="col"> + {% for modulation_type in row.modulation_types %} + {{ modulation_type }} + {% if not forloop.last %}, {% endif %} + {% endfor %} + </td> + </tr> + {% endfor %} + </tbody> + </table> {% endif %} </div> </div> diff --git a/ippisite/ippidb/templates/compound_list.html b/ippisite/ippidb/templates/compound_list.html index 7c3ecb494951ec95b5561f4c80fc8d81e438a459..c603353dbb457b5a07cb6a0c6de0b8108ed78053 100644 --- a/ippisite/ippidb/templates/compound_list.html +++ b/ippisite/ippidb/templates/compound_list.html @@ -14,16 +14,7 @@ <script src="/static/js/compound_list.js"></script> <script src="/static/js/ippidb-query-url.js" type="text/javascript"></script> -<script> - function openNav() { - document.getElementById("mySidenav").style.width = "300px"; - document.getElementById("main").style.marginLeft = "0px"; - } - function closeNav() { - document.getElementById("mySidenav").style.width = "0"; - document.getElementById("main").style.marginLeft = "0"; - } -</script> + {% endblock %} {% block content %} @@ -38,7 +29,7 @@ </div> <div class="inner-wrap container-fluid "> - <div class="row flex-xl-nowrap"> + <div class="row"> <main class="col-12" role="main"> <h1 class="page-title">Query compounds</h1> @@ -131,6 +122,14 @@ <input type="checkbox" id="chemspider_id" {% if chemspider_id %}checked{% endif %} /> in ChemSpider </label> + <label class="dropdown-item" onclick="toggleCheckBox('ligand_id')"> + <input type="checkbox" id="ligand_id" {% if ligand_id %}checked{% endif %} /> in + PDB Ligand + </label> + <label class="dropdown-item" onclick="toggleCheckBox('drugbank_id')"> + <input type="checkbox" id="drugbank_id" {% if drugbank_id %}checked{% endif %} /> in + Drugbank + </label> </div> </div> <hr> @@ -202,9 +201,13 @@ </div> <span class="open_filters_btn"> - <span onclick="openNav()"><a><i class="fas fa-filter"></i> Open filters</a></span> + <span id="mySidenavBtn" onclick="openNav()"><a><i class="fas fa-filter"></i> Open filters</a></span> </span> - + <script> + if (localStorage.getItem('mySidenav') == 'true') { + openNav(); + } + </script> <div class="m-2 d-flex justify-content-between"> <span @@ -292,7 +295,9 @@ {% include "boolean_badge.html" with param_name="pubchem_id" param_value=pubchem_id label="PubChem ID"%} {% include "boolean_badge.html" with param_name="chembl_id" param_value=chembl_id label="ChEMBL ID"%} + {% include "boolean_badge.html" with param_name="ligand_id" param_value=ligand_id label="PDB Ligand ID"%} {% include "boolean_badge.html" with param_name="chemspider_id" param_value=chemspider_id label="ChemSpider ID"%} + {% include "boolean_badge.html" with param_name="drugbank_id" param_value=drugbank_id label="Drugbank ID"%} {% include "selected_badge.html" with param_name="domain" values=selected_domain %} {% include "selected_badge.html" with param_name="boundcomplex" values=selected_boundcomplex %} @@ -372,6 +377,6 @@ <script> var queryUrl = new QueryUrl($('#loadingModal')); -</script> +</script> {% endblock %} \ No newline at end of file diff --git a/ippisite/ippidb/templates/compound_t_list.html b/ippisite/ippidb/templates/compound_t_list.html index 81673f8411144cbb38acf2543a67b823e396d234..98260a99af84388bc13e093649a80daeb5e05193 100644 --- a/ippisite/ippidb/templates/compound_t_list.html +++ b/ippisite/ippidb/templates/compound_t_list.html @@ -28,11 +28,13 @@ </thead> <tbody> {% for compound in compounds %} - <tr> + <tr class="{% if compound.replaced_with or compound.is_validated is False %}bg_warning{% endif %}"> {% if compound.tanimoto != None %} <td title="tanimoto similarity value">{{ compound.tanimoto }}</td> {% endif %} - <td scope="col"><span class="badge badge-light"><a href="/compounds/{{ compound.id }}">{{ compound.id }}</a></span></td> + <td scope="col"><span class="badge badge-light"><a href="/compounds/{{ compound.id }}">{{ compound.id }}</a>{% if compound.replaced_with is not None %} + <span style="font-size: 26px; color:#fa8005; font-size: 75%;">replaced with <a href="/compounds/{{ compound.replaced_with.id }}">{{ compound.replaced_with.id }}</a></span>{% elif compound.is_validated is False %}<span + style="font-size: 26px; color:#fa8005;">not validated</span>{% endif %}</span></td> {% if "canonical_smiles" in fields %} <td scope="col" style="width:150px">{% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile width="150" height="150"%}</td> {% endif %} diff --git a/ippisite/ippidb/templates/compound_test_counts.html b/ippisite/ippidb/templates/compound_test_counts.html new file mode 100644 index 0000000000000000000000000000000000000000..f6ab2ef40dc7e46a41af691157c6c14e4908ef6e --- /dev/null +++ b/ippisite/ippidb/templates/compound_test_counts.html @@ -0,0 +1,24 @@ +<table class="table m-1 card_border"> + <thead> + <tr class="table-row"> + {% if show_bibrefs %} + <th scope="col">Bibliographic ressources</th> + {% endif %} + <th scope="col" title="Biochemical tests">Biochemical tests</th> + <th scope="col" title="Cellular tests">Cellular tests</th> + <th scope="col" title="Pharmacokinetic tests">PK tests</th> + <th scope="col" title="Cytotoxicity tests">Cytotoxicity tests</th> + </tr> + </thead> + <tbody> + <tr class="table-row"> + {% if show_bibrefs %} + <td scope="col">{{ compound.biblio_refs.count }}</td> + {% endif %} + <th scope="col" title="Biochemical tests">{{ compound.bioch_tests_count }}</th> + <th scope="col" title="Cellular tests">{{ compound.cell_tests_count }}</th> + <th scope="col" title="Pharmacokinetic tests">{{ compound.pk_tests_count }}</th> + <th scope="col" title="Cytotoxicity tests">{{ compound.cytotoxicity_tests_count }}</th> + </tr> + </tbody> +</table> \ No newline at end of file diff --git a/ippisite/ippidb/templates/compound_v_item.html b/ippisite/ippidb/templates/compound_v_item.html index 60e175c2094df59331cfccd580d7b8eb092b9018..72d84920ad1bfc72ce275888504dec55017e676a 100644 --- a/ippisite/ippidb/templates/compound_v_item.html +++ b/ippisite/ippidb/templates/compound_v_item.html @@ -1,15 +1,23 @@ <div class="p-2"> - <div class="card border border-info border_card {% if compound.is_validated is False %}bg_warning{% endif %}"> - <a href="/compounds/{{ compound.id }}">{% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile %}</a> - <h2 class="position-absolute" style="top:0.3em; left:0.3em;"><span class="badge badge-light"><a href="/compounds/{{ compound.id }}">{{ compound.id }}</a></span>{% if compound.is_validated is False %}<span style="font-size: 26px; color:#fa8005;">not validated</span>{% endif %}</h2> + <div class="card border border-info border_card {% if compound.replaced_with or compound.is_validated is False %}bg_warning{% endif %}"> + <a + href="/compounds/{{ compound.id }}">{% include "compound_smiles_draw.html" with id=compound.id smile=compound.canonical_smile %}</a> + <h2 class="position-absolute" style="top:0.3em; left:0.3em;"><span class="badge badge-light"><a + href="/compounds/{{ compound.id }}">{{ compound.id }}</a></span>{% if compound.replaced_with is not None %} + <span style="font-size: 26px; color:#fa8005; font-size: 75%;">replaced with <a href="/compounds/{{ compound.replaced_with.id }}">{{ compound.replaced_with.id }}</a></span>{% elif compound.is_validated is False %}<span + style="font-size: 26px; color:#fa8005;">not validated</span>{% endif %}</h2> {% if compound.tanimoto != None %} - <h2 class="position-absolute" style="top:0.3em; right:0.3em;" title="tanimoto similarity value"><span class="badge badge-dark text-warning">{{ compound.tanimoto }}</span></h2> + <h2 class="position-absolute" style="top:0.3em; right:0.3em;" title="tanimoto similarity value"><span + class="badge badge-dark text-warning">{{ compound.tanimoto }}</span></h2> {% endif %} <div class="card-body desc_card" style="overflow:hidden; word-wrap:break-word;"> - {%if compound.common_name %}<p title="Common name"><span style="font-family:'BrandonGrotesqueBlk';">Common name : </span>{{ compound.common_name }}</p>{%else%}<p></br></p>{% endif %} - <p title="PPI Family"><span style="font-family:'BrandonGrotesqueBlk';">PPI Family : </span>{{ compound.best_activity_ppi_family_name }}</p> - <p title="Molecular Weight"><span style="font-family:'BrandonGrotesqueBlk';">Molecular weight: </span>{{ compound.molecular_weight }} g/mol</p> + {%if compound.common_name %}<p title="Common name"><span style="font-family:'BrandonGrotesqueBlk';">Common + name : </span>{{ compound.common_name }}</p>{%else%}<p></br></p>{% endif %} + <p title="PPI Family"><span style="font-family:'BrandonGrotesqueBlk';">PPI Family : + </span>{{ compound.best_activity_ppi_family_name }}</p> + <p title="Molecular Weight"><span style="font-family:'BrandonGrotesqueBlk';">Molecular weight: + </span>{{ compound.molecular_weight }} g/mol</p> <p style="text-align:right;"><a class="read-more" href="/compounds/{{ compound.id }}">Read more</a></p> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/ippisite/ippidb/templates/contribute-detail.html b/ippisite/ippidb/templates/contribute-detail.html index b4f8a28f56b10f207a964881840e0b8ebcf1b225..cc8fb6f07caa7b84791e8ded98839947ca6c7a6e 100644 --- a/ippisite/ippidb/templates/contribute-detail.html +++ b/ippisite/ippidb/templates/contribute-detail.html @@ -17,64 +17,127 @@ <div id="main-wrapper" class="page"> <div id="main"> <div id="content" class="main-content"> - <div class="row" style="padding:10px;"> - {%if contribution %} - <div class="col-12" - style="text-align: center; background-color: #d3d3d380;padding: 10px; border-radius: 4px; box-shadow: inset 0 0 1em #d3d3d3;"> - <i class="fas fa-trophy fa-3x"></i> - <div style="font-size: 24px;">Congratulations!</div> - <div> Dear {{contribution.contributor.username}}, thank you for your contribution.</div> + <div class="container-fluid inner-wrap compound_header_title" id="compound_header_title"> + <div class="row {% if contribution.validated is False %}bg_warning{% endif %}"> + <div class="m-5"> + {% if contribution.validated is False %} + <h1 class="page-title-warning" style="margin: 0;">Contribution {{ contribution.id }} - This contribution has not been + validated by a curator yet, data might be incomplete or + inaccurate</h1> + {% else %} + <h1 class="page-title" style="margin: 0;">Contribution {{ contribution.id }}</h1> + {% endif %} + <div class="row mt-3"> + Contributor: {{contribution.contributor.username}} + </div> + <div class="row mt-3"> + Created on: {{contribution.created_at}} + </div> + <div class="row mt-3"> + Updated on: {{contribution.updated_at}} + </div> + </div> </div> - <div> + </div> + <div class="row contrib-card" style="padding: 10px;"> + <p class="col-12 contrib-card-title">{{bibliography|verbose_name}}</p> + <p class="col-12"> + {% if bibliography.has_external_url %} + <a class="float-left" target="_blank" href="{{ bibliography.get_external_url }}"> + {% endif %} + <span style="font-size: 18px;font-family: BrandonGrotesqueBld;">{{bibliography.title }}</span><br /> + <i>{{ bibliography.authors_list }}</i><br /> + {{bibliography.journal_name }} ({{bibliography.biblio_year}}) + {{bibliography.get_source_display}} - {{bibliography.id_source}} + {% if bibliography.has_external_url %} + </a> + {% endif %} + <p class="col-12"><span style="font-family: BrandonGrotesqueBld;">Contains : </span>{{bibliography.data_and_study}}</p> + </div> - {% if contribution.updated_at == contribution.created_at %} - <br /> - Last updated on {{contribution.updated_at}} - {% endif %} - {%else%} - <i>Former contribution</i> - {%endif %} + <div class="row contrib-card" style="padding: 10px;"> + <p class="col-12 contrib-card-title">PPI Architecture</p> + <div class="col-6">PDB code of the PPI: <a href="http://www.rcsb.org/structure/{{ppi.pdb_id}}" target="_blank">{{ppi.pdb_id}}</a></div> + <div class="col-6">PPI name: {{ppi.name}}</div> + <div class="col-6">PPI family: {{ppi.family}}</div> + <div class="col-6">PPI symmetry: {{ppi.symmetry}}</div> + <div class="col-6">Total number of pockets in the complex: {{ ppi.pockets_nb }}</div> + <div class="col-6">Diseases: + {% for d in ppi.diseases.all %} + {{ d }}{%if not forloop.last%},{%endif%} + {% endfor %} </div> + <table class="table mt-3"> + <tr> + <th>Complex type</th> + <th>Protein</th> + <th>Domain</th> + </tr> + {% for ppicomplex in complexes %} + <tr> + <td>{{ppicomplex.complex.complex_type}}</td> + <td><a href="https://www.uniprot.org/uniprot/{{ppicomplex.complex.protein.uniprot_id}}" target="_blank">{{ppicomplex.complex.protein.uniprot_id}}</a></td> + <td> + {% if ppicomplex.complex.domain %} + <a href="https://pfam.xfam.org/family/{{ ppicomplex.complex.domain.pfam_id}}" target="_blank">{{ ppicomplex.complex.domain.pfam_id}}</a> + {% else %} + unknown + {% endif %} + </td> + </tr> + {% endfor %} + </table> + </div> - <div class="col-5"> - {%if complexes %} - <div class="contrib-card"> - <p class="contrib-card-title">{{complexes|verbose_name}}</p> - {%for o in complexes%} - {{o}} - {%endfor%} - </div> - {%endif%} - <div class="contrib-card" style="overflow-x: hidden;"> - <p class="contrib-card-title">Tests</p> - {%for o in testactivitydescription%} - {% include "ippidb/testactivitydescription_card.html" with object=o %} - {%endfor%} - {%for o in testactivityresults%} - <div>test</div> - {% include "ippidb/testactivityresults_card.html" with object=o %} - {%endfor%} - {%for o in testcytotoxdescription%} - {% include "ippidb/testcytotoxdescription_card.html" with object=o %} - {%endfor%} - {%for o in testpkdescription%} - {% include "ippidb/testpkdescription_card.html" with object=o %} - {%endfor%} - </div> - </div> - <div class="col-7"> - {% include "ippidb/bibliography_card.html" with object=bibliography css_class="contrib-card"%} - {% include "ippidb/ppi_card.html" with object=ppi css_class="contrib-card" %} - <div class="contrib-card"> - {%if refcompoundbiblio %} - <p class="contrib-card-title">{{refcompoundbiblio|verbose_name}}</p> - {% include "ippidb/refcompoundbiblio_table.html" with objects=refcompoundbiblio %} - </div> - </div> - + <div class="row contrib-card" style="padding: 10px;"> + <p class="col-12 contrib-card-title">Compounds</p> + <table class="table vertical-align-middle" style="background-color: white; border: 1px solid #dee2e6;"> + <thead> + {%with sample=refcompoundbiblio.first%} + {% if sample %} + <tr> + <th>{{sample|verbose_name:'compound_name'}}</th> + <th>Chemical structure</th> + <th>{{sample.compound|verbose_name:'iupac_name'}}</th> + <th>{{sample.compound|verbose_name:'ligand_id'}}</th> + <th>iPPI-DB ID</i> + </tr> + {% endif %} + {%endwith%} + </thead> + <tbody> + {%for o in refcompoundbiblio%} + <tr> + <td>{{o.compound_name}}</td> + <td> + <canvas width="150" height="150" data-smiles="{{o.compound.canonical_smile}}"></canvas> + </td> + <td>{{o.compound.iupac_name | default_if_none:""}}</td> + <td><a href="https://www.rcsb.org/ligand/{{ o.compound.ligand_id }}" target="_blank">{{ o.compound.ligand_id | default_if_none:""}}</a></td> + <td> + <a target="_blank" href="{% url 'compound_card' pk=o.compound.pk %}">{{o.compound.id}}</i></a> + </td> + </tr> + {%endfor%} + </tbody> + </table> + </div> - {%endif%} - {% if user.is_superuser %} + <div class="row contrib-card" style="padding: 10px;"> + <p class="col-12 contrib-card-title">Tests</p> + {%for o in bibliography.testactivitydescription_set.all%} + {% include "ippidb/testactivitydescription_card.html" with object=o %} + {%endfor%} + {%for o in testcytotoxdescription%} + {% include "ippidb/testcytotoxdescription_card.html" with object=o %} + {%endfor%} + {%for o in testpkdescription%} + {% include "ippidb/testpkdescription_card.html" with object=o %} + {%endfor%} + </div> + + <div class="row" style="padding:10px;"> + {% if user.is_superuser and contribution.validated is False %} <form method="POST" action="{% url 'admin:ippidb_contribution_changelist' %}"> {% csrf_token %} <input type="hidden" name="action" value="validate_contributions" /> @@ -82,7 +145,6 @@ <input type="submit" class="btn btn-primary m-1" value="Validate this contribution" /> </form> {% endif %} - </div> </div> </div> diff --git a/ippisite/ippidb/templates/credits.html b/ippisite/ippidb/templates/credits.html new file mode 100644 index 0000000000000000000000000000000000000000..dd7657dee31f2744e5813bfccab186bab4d66e7b --- /dev/null +++ b/ippisite/ippidb/templates/credits.html @@ -0,0 +1,95 @@ +{% extends "index.html" %} + +{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %} + +{% block content %} + +<div class="inner-wrap"> + <div id="main-wrapper" class="page"> + <div id="main"> + <div id="content" class="main-content"> + <div class="section"> + <main role="main"> + <h1 class="page-title"> {% block pagetitle %}CREDITS{% endblock%} </h1> + <div class="tabs"></div> + <div class="main__inner"> + <div class="region region-content"> + <div class="page-intro"> + </div> + <div class="color-wrap"> + <div class="region region-content"> + <div class="block block-system block-system-main"> + <div class="content"> + <div class="view-content"> +{% block view_content %} +<div class="credits_card"> + <div class="credits_title"> + <img src="https://research.pasteur.fr/wp-content/uploads/2019/03/research_pasteur-screen-shot-2019-03-18-at-16.08.27-150x150.png"> + </div> + <div class="credits_content"> + <div style="font-family:BrandonGrotesqueBld;"> + Karen DRUART + </div> + <div> + Post-Doc in Chemoinformatics and Proteochemometrics group - Institut Pasteur + <br>Contact: <a href="https://research.pasteur.fr/en/member/karen-druart" target="_blank">Karen's page</a> + </div> + </div> +</div> +<div class="credits_card"> + <div class="credits_title"> + <img src="https://research.pasteur.fr/wp-content/uploads/2015/10/research.pasteur.fr_face-150x150.jpg"> + </div> + <div class="credits_content"> + <div style="font-family:BrandonGrotesqueBld;"> + Hervé MENAGER + </div> + <div> + Head of Web INTERface at the Hub Bioinformatique et Biostatistique - Institut Pasteur + <br>Contact: <a href="https://research.pasteur.fr/en/member/herve-menager" target="_blank">Herve's page</a> + </div> + </div> +</div> +<div class="credits_card"> + <div class="credits_title"> + <img src="https://research.pasteur.fr/wp-content/uploads/2016/05/research.pasteur.fr_sperandio-id-photo-150x150.jpg"> + </div> + <div class="credits_content"> + <div style="font-family:BrandonGrotesqueBld;"> + Olivier SPERANDIO + </div> + <div> + Group leader of Chemoinformatics and Proteochemometrics - Institut Pasteur + <br>Contact: <a href="https://research.pasteur.fr/en/member/olivier-sperandio" target="_blank">Olivier's page</a> + </div> + </div> +</div> +<div class="credits_card"> + <div class="credits_title"> + <img src="https://research.pasteur.fr/wp-content/uploads/2016/11/research.pasteur.fr_rachelgrandintorchet-150x150.jpg"> + </div> + <div class="credits_content"> + <div style="font-family:BrandonGrotesqueBld;"> + Rachel TORCHET + </div> + <div> + UX Developer at the Hub Bioinformatique et Biostatistique - Institut Pasteur + <br>Contact: <a href="https://research.pasteur.fr/en/member/rachel-torchet" target="_blank">Rachel's page</a> + </div> + </div> +</div> +{% endblock %} + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </main><!-- .site-main --> + </div> + </div> + </div><!-- div main --> + </div> +</div> +{% endblock %} diff --git a/ippisite/ippidb/templates/form_with_nested_formset.html b/ippisite/ippidb/templates/form_with_nested_formset.html index 410a4f6b44f1b9b286fa3d001b4cfbf9417d8fcb..b355d3f1bb9b642accac434714347da44563c3fe 100644 --- a/ippisite/ippidb/templates/form_with_nested_formset.html +++ b/ippisite/ippidb/templates/form_with_nested_formset.html @@ -1,29 +1,44 @@ {% load i18n %} {% load customtags %} -<div class="formset-item formset-item-inline-grid"> - <h3 class="compound_title">Description</h3> - - {{form|bootstrap}} +{% block extra_js %} +<script type="text/javascript"> + + $(document).ready(function () { + var elements = document.getElementsByClassName('delete-btn'); + elements[0].style.visibility="collapse"; + elements[1].style.visibility="collapse"; + }); + +</script> +{% endblock extra_js %} +<div class="formset-item mb-4"> + <h3 class="test_title">Test description</h3> + <div class="row"> + {{ form|bootstrap}} + </div> <div class="formset-nested-container"> {{ form.nested.management_form }} {{ form.nested.non_form_errors|bootstrap }} {% if nested_form %} - <div class="formset-nested-item formset-item-inline-grid"> - <h3 class="compound_title">Results</h3> - {{ nested_form|bootstrap }} + <div class="formset-nested-item "> + <h3 class="test_title">Test results</h3> + <div class="row"> + {{ nested_form|bootstrap }} + </div> </div> {% endif %} {% for nested_form in nested_forms %} - <div class="formset-nested-item formset-item-inline-grid"> - <h3 class="compound_title">Results</h3> - {{ nested_form|bootstrap }} + <div class="formset-nested-item"> + <h3 class="test_title">Test results</h3> + <div class="row"> + {{ nested_form|bootstrap }} + </div> </div> {% endfor %} <div class="form_div"> - <input type="button" - class="add-test" - value="{%if add_another_nested_one %}{{add_another_nested_one}} {%else%}Add another one{%endif%}" - onclick="add_nested_form_to_nested_formset(this,'{{form.nested.prefix}}','{{parent_prefix}}');"/> + <input type="button" class="add-test" + value="{%if add_another_nested_one %}{{add_another_nested_one}} {%else%}Add another one{%endif%}" + onclick="add_nested_form_to_nested_formset(this,'{{form.nested.prefix}}','{{parent_prefix}}');" /> </div> </div> </div> \ No newline at end of file diff --git a/ippisite/ippidb/templates/index.html b/ippisite/ippidb/templates/index.html index 970e4e9aab8068b87948fe68154b4b923439fff3..bcd153454e28b25fc0dce6b9fa9179c0d4685879 100644 --- a/ippisite/ippidb/templates/index.html +++ b/ippisite/ippidb/templates/index.html @@ -1,5 +1,9 @@ {% extends "base.html" %} +{% block extra_js %} +<script src="/static/js/ippidb-slides.js" type="text/javascript"></script> +{% endblock %} + {% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %} @@ -28,15 +32,22 @@ <div class="slideshow-inner"> <div class="latest-publi"> Latest publications</div> <div class="link-publication mySlides"> - <b>iPPI-DB: a manually curated and interactive database of small non-peptide - inhibitors of protein-protein interactions.</b><br /> - <a href="http://doi.org/10.1016/j.drudis.2013.05.003" target="_blank"> - - <i>Labbé CM, Laconde G, Kuenemann MA, Villoutreix BO, Sperandio - O.</i><br /> - Drug Discov Today. 2013 Oct;18(19-20):958-68. doi: - 10.1016/j.drudis.2013.05.003. Epub 2013 May 17. Review. - </a> + <b>The iPPI-DB initiative: a community-centered database of protein–protein interaction modulators</b><br /> + <a href="https://doi.org/10.1093/bioinformatics/btaa1091" target="_blank"> + <i>Torchet R, Druart K, Checa Ruano L, Moine-Franel A, Borges H, Doppelt-Azeroual O, Brancotte B, Mareuil F, Nilges M, Ménager H, Sperandio O</i><br /> + Bioinformatics, 2021;, btaa1091. doi: 10.1093/bioinformatics/btaa1091. + Epub + 2021 Jan 8. + </a> + </div> + <div class="link-publication mySlides"> + <b>Redesign of iPPI-DB, a database for modulators of Protein-Protein + Interactions</b><br /> + <a href="/static/images/article-jobim.pdf" target="_blank"> + <i>Torchet R, Moine-Franel A, Borges H, Brancotte B, + Doppelt-Azeroual O, Mareuil F, Ménager H, Sperandio O.</i><br /> + JOBIM 2019 - Talk presentation + </a> </div> <div class="link-publication mySlides"> <b>iPPI-DB: an online database of modulators of protein-protein @@ -50,15 +61,6 @@ 2015 Oct 1. </a> </div> - <div class=" link-publication mySlides"> - <b>Redesign of iPPI-DB, a database for modulators of Protein-Protein - Interactions</b><br /> - <a href="/static/images/article-jobim.pdf" target="_blank"> - <i>Torchet R, Moine-Franel A, Borges H, Brancotte B, - Doppelt-Azeroual O, Mareuil F, Ménager H, Sperandio O.</i><br /> - JOBIM 2019 - Talk presentation - </a> - </div> <a class="prev" onclick='plusSlides(-1)'>❮</a> <a class="next" onclick='plusSlides(1)'>❯</a> </div> @@ -81,7 +83,7 @@ </div> <div class="flip-card-back"> <a href="/compounds"> - <div style="top:20%; position:absolute;"> + <div style="padding-top: 3.5em;"> <div class="choices_title"> Query </div> @@ -112,7 +114,7 @@ </div> <div class="flip-card-back"> <a href="/about-pca"> - <div style="top:20%; position:absolute;"> + <div style="padding-top: 3.5em;"> <div class="choices_title"> Navigate the PPI chemical space </div> @@ -145,7 +147,7 @@ </div> <div class="flip-card-back"> <a href="/about-le-lle"> - <div style="top:20%; position:absolute;"> + <div style="padding-top: 3.5em;"> <div class="choices_title"> Surf the efficiency plot </div> @@ -180,7 +182,7 @@ </div> <div class="flip-card-back"> <a href="/contribute"> - <div style="top:20%; position:absolute; "> + <div style="padding-top: 2.5em; "> <div class="choices_title"> Contribute </div> @@ -232,4 +234,29 @@ </div><!-- div main --> </div> </div> -{% endblock %} \ No newline at end of file + +<script id='DATASET_JSON_LD' type="application/ld+json"> + +{ + "@type": "schema:Dataset", + "schema:url": "https://ippidb.pasteur.fr", + "schema:includedInDataCatalog": "https://ippidb.pasteur.fr", + "schema:license": "https://creativecommons.org/licenses/by-sa/3.0/deed.en_GB", + "@id": "https://ippidb.pasteur.fr", + "schema:name": "iPPI-DB", + "schema:description": "a database of modulators of protein-protein interactions. It contains exclusively small molecules and therefore no peptides. The data are retrieved from the literature either peer reviewed scientific articles or world patents. A large variety of data is stored within IPPI-DB: structural, pharmacological, binding and activity profile, pharmacokinetic and cytotoxicity when available, as well as some data about the PPI targets themselves.", + "@context": { + "schema": "http://schema.org/", + "bs": "http://bioschemas.org/" + }, + "schema:creator": { + "url": "https://www.pasteur.fr/", + "@type": "Organization", + "@context": "http://schema.org/", + "name": "Institut Pasteur" + }, + "schema:keywords": "database, molecule, PPI, inhibitor, modulator, stabilizer, compound" +} + +</script> +{% endblock %} diff --git a/ippisite/ippidb/templates/ippidb/testactivitydescription_card.html b/ippisite/ippidb/templates/ippidb/testactivitydescription_card.html index db01d637299ffb1b8a055fa242765a6af0a91036..9dfc087c21a6a5cae626df98d0b7e645a2a0c18d 100644 --- a/ippisite/ippidb/templates/ippidb/testactivitydescription_card.html +++ b/ippisite/ippidb/templates/ippidb/testactivitydescription_card.html @@ -1,28 +1,47 @@ {% load customtags %} {%if object%} -<div class="card mb-2"> +<div class="card mb-2 col-12"> <h5 class="card-header"> <span style="text-transform: capitalize;"> {{object|verbose_name}}</span> - <span style="text-transform: capitalize;">{{object.test_name}}</span> </h5> <div class="card-body row"> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'protein_domain_bound_complex'}}: </span>{{object.protein_domain_bound_complex}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'is_primary'}}: </span>{{object.is_primary}} </div> - <div class="col-12"> - <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'test_type'}}: </span>{{object.test_type}} + <div class="col-6"> + <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'test_type'}}: </span>{{object.get_test_type_display}} </div> - <div class="col-12"> - <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'test_modulation_type'}}: </span>{{object.test_modulation_type}} + <div class="col-6"> + <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'test_modulation_type'}}: </span>{{object.get_test_modulation_type_display}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'nb_active_compounds'}}: </span>{{object.nb_active_compounds}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'cell_line'}}: </span>{{object.cell_line}} </div> + <div class="col-12 mt-3"> + <table class="table"> + <tr> + <th>Compound</th> + <th>Modulation type</th> + <th>Activity type</th> + <th>Activity</th> + </tr> + {% for result in object.compoundactivityresult_set.all %} + <tr> + <td>{{result.ref.compound_name}}</td> + <td>{{result.get_modulation_type_display}}</td> + <td title="{{result.get_activity_type_display}}">{{result.activity_type}}</td> + <td>{{result.activity|floatformat:2}}</td> + </tr> + {% endfor %} + </table> + </div> </div> + </div> {%endif%} \ No newline at end of file diff --git a/ippisite/ippidb/templates/ippidb/testactivityresults.html b/ippisite/ippidb/templates/ippidb/testactivityresults.html deleted file mode 100644 index 2f86f899ec9402d2007285ce09afac99c2b16097..0000000000000000000000000000000000000000 --- a/ippisite/ippidb/templates/ippidb/testactivityresults.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load customtags %} -{%if object%} -<div class="card mb-2"> - <h5 class="card-header"> - <span style="text-transform: capitalize;"> {{object|verbose_name}}</span> - <span style="text-transform: capitalize;">{{object.compound_name}}</span> - </h5> - <div class="card-body row"> - <div class="col-12"> - <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'modulation_type'}}: </span>{{object.modulation_type}} - </div> - </div> -</div> -{%endif%} \ No newline at end of file diff --git a/ippisite/ippidb/templates/ippidb/testcytotoxdescription_card.html b/ippisite/ippidb/templates/ippidb/testcytotoxdescription_card.html index 599cac2b73756f8324cbfe893600ea05f07110b1..5c4f4cd2a39013581df51e2268ad43a3900c676a 100644 --- a/ippisite/ippidb/templates/ippidb/testcytotoxdescription_card.html +++ b/ippisite/ippidb/templates/ippidb/testcytotoxdescription_card.html @@ -1,16 +1,31 @@ {% load customtags %} {%if object%} -<div class="card mb-2"> +<div class="card mb-2 col-12"> <h5 class="card-header"> <span style="text-transform: capitalize;">{{object|verbose_name}}</span> - <span>{{object.test_name}}</span> </h5> <div class="card-body row"> - <div class="col-12"> - <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'compound_concentration'}}: </span>{{object.compound_concentration}} + <div class="col-6"> + <span style="font-family: BrandonGrotesqueBld;">Compound concentration in μM: </span>{{object.compound_concentration}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'cell_line'}}: </span>{{object.cell_line}} </div> + <div class="col-12 mt-3"> + <table class="table"> + <tr> + <th>Compound</th> + <th>Toxicity</th> + </tr> + {% for result in object.compoundcytotoxicityresult_set.all %} + <tr> + <td>{{result.ref.compound_name}}</td> + <td>{{result.toxicity}}</td> + </tr> + {% endfor %} + </table> + </div> </div> + </div> {%endif%} \ No newline at end of file diff --git a/ippisite/ippidb/templates/ippidb/testpkdescription_card.html b/ippisite/ippidb/templates/ippidb/testpkdescription_card.html index bf8d6f5c2cb17039cfd914e89ad9260e3342f018..0aeaf053f7cfd21fe3b70cfbd97b1adb6de1f7cb 100644 --- a/ippisite/ippidb/templates/ippidb/testpkdescription_card.html +++ b/ippisite/ippidb/templates/ippidb/testpkdescription_card.html @@ -1,30 +1,59 @@ {% load customtags %} {%if object%} -<div class="card mb-2"> +<div class="card mb-2 col-12"> <h5 class="card-header"> <span style="text-transform: capitalize;">{{object|verbose_name}}</span> - <span>{{object.test_name}}</span> </h5> - <div class="card-body"> - <div class="col-12"> + <div class="card-body row"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'organism'}}: </span>{{object.organism}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'administration_mode'}}: - </span>{{object.administration_mode}} + </span>{{object.get_administration_mode_display}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'concentration'}}: </span>{{object.concentration}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'dose'}}: </span>{{object.dose}} </div> - <div class="col-12"> + <div class="col-6"> <span style="font-family: BrandonGrotesqueBld;">{{object|verbose_name:'dose_interval'}}: </span>{{object.dose_interval}} </div> + <div class="col-12 mt-3"> + <table class="table"> + <tr> + {% with result=object.compoundpkresult_set.first %} + <th>Compound</th> + <th>{{result|verbose_name:'tolerated'}}</th> + <th>{{result|verbose_name:'t_demi'}}</th> + <th>{{result|verbose_name:'t_max'}}</th> + <th>{{result|verbose_name:'auc_av'}}</th> + <th>{{result|verbose_name:'clearance_av'}}</th> + <th>{{result|verbose_name:'c_max_av'}}</th> + <th>{{result|verbose_name:'voldistribution_av'}}</th> + {% endwith %} + </tr> + {% for result in object.compoundpkresult_set.all %} + <tr> + <td>{{result.ref.compound_name}}</td> + <td>{{result.tolerated}}</td> + <td>{{result.t_demi}}</td> + <td>{{result.t_max}}</td> + <td>{{result.auc_av}}</td> + <td>{{result.clearance_av}}</td> + <td>{{result.c_max_av}}</td> + <td>{{result.voldistribution_av}}</td> + </tr> + {% endfor %} + </table> + </div> </div> + </div> {%endif%} \ No newline at end of file diff --git a/ippisite/ippidb/templates/multiselection_modal.html b/ippisite/ippidb/templates/multiselection_modal.html index aad9d3a02d9cd6fc6b8ad8b42c1f70b8ca48533a..3471348002b58e1eb1e6289cc0dbd2c401c77850 100644 --- a/ippisite/ippidb/templates/multiselection_modal.html +++ b/ippisite/ippidb/templates/multiselection_modal.html @@ -19,7 +19,7 @@ </script> <div style="max-height: 15em; overflow-y: auto;"> {% if on_value == None %} - {% for element in selected_list|dictsort:"name.lower" %} + {% for element in selected_list|dictsort:"name.lower" %} <div class="form-check col-12"> <label class="form-check-label"> <input id="selected-{{ element.id }}" class="form-check-input text-right" type="checkbox" checked value="{{ element.id }}" name="{{ param_name }}" style="width: auto; margin-right: 1em;"> @@ -35,8 +35,8 @@ </label> </div> {% endfor %} - {% endif %} - {% if on_value != None %} + {% endif %} + {% if on_value != None %} {% for element in selected_list|dictsort:"lower" %} <div class="form-check col-12"> <label class="form-check-label"> @@ -53,7 +53,7 @@ </label> </div> {% endfor %} - {% endif %} + {% endif %} </div> </div> <div class="modal-footer"> diff --git a/ippisite/ippidb/templates/news.html b/ippisite/ippidb/templates/news.html new file mode 100644 index 0000000000000000000000000000000000000000..74d4af19f71966404ba4a464796f1034e42b49c2 --- /dev/null +++ b/ippisite/ippidb/templates/news.html @@ -0,0 +1,80 @@ +{% extends "index.html" %} + +{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %} + +{% block content %} + +<div class="inner-wrap"> + <div id="main-wrapper" class="page"> + <div id="main"> + <div id="content" class="main-content"> + <div class="section"> + <main role="main"> + <h1 class="page-title"> {% block pagetitle %}LATEST NEWS{% endblock%} </h1> + <div class="tabs"></div> + <div class="main__inner"> + <div class="region region-content"> + <div class="page-intro"> + </div> + <div class="color-wrap"> + <div class="region region-content"> + <div class="block block-system block-system-main"> + <div class="content"> + <div class="view-content"> +{% block view_content %} +<div style="text-align: center;"> + <div class="news_title"> + Nov 2019 + </div> + <div class="news_content"> + <div style="font-family:BrandonGrotesqueBld;">iPPI-DB: A community-based repository of Protein-Protein Interaction modulators</div> + <a href="https://sfci2019.sciencesconf.org/data/pages/SFCi_2019_abstract_oral_Druart.pdf" target="_blank"> + <i>Torchet, R., Moine-Franel, A., Druart, K., Borges, H., Doppelt-Azeroual, O., Mareuil, F., Ménager, H., Sperandio, O</i><br /> + SFCI 2019 - Poster presentation + </a> +</div> +<div class="news_title"> + July 2019 +</div> +<div class="news_content"> + <div style="font-family:BrandonGrotesqueBld;">Redesign of iPPI-DB, a database for modulators of Protein-Protein + Interactions</div> + <a href="/static/images/article-jobim.pdf" target="_blank"> + <i>Torchet R, Moine-Franel A, Borges H, Brancotte B, + Doppelt-Azeroual O, Mareuil F, Ménager H, Sperandio O.</i><br /> + JOBIM 2019 - Talk presentation + </a> +</div> +<div class="news_title"> + Jan 2016 +</div> +<div class="news_content" style="border-left: none;"> + <div style="font-family:BrandonGrotesqueBld;"> + iPPI-DB: an online database of modulators of protein-protein + interactions. + </div> + <a href="http://doi.org/10.1093/nar/gkv982" target="_blank""> + + <i>Labbé CM, Kuenemann MA, Zarzycka B, Vriend G, Nicolaes GA, Lagorce D, + Miteva MA, Villoutreix BO, Sperandio O.</i><br /> + Nucleic Acids Res. 2016 Jan 4;44(D1):D542-7. doi: 10.1093/nar/gkv982. + Epub + 2015 Oct 1. + </a> +</div> +</div> +{% endblock %} + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </main><!-- .site-main --> + </div> + </div> + </div><!-- div main --> + </div> +</div> +{% endblock %} diff --git a/ippisite/ippidb/templates/tutorials.html b/ippisite/ippidb/templates/tutorials.html index d8093f177b681907de42cb0cc0c09821ec6960f3..33a7ab757555bb56e3fbaaed2f1482a3cd510998 100644 --- a/ippisite/ippidb/templates/tutorials.html +++ b/ippisite/ippidb/templates/tutorials.html @@ -25,9 +25,14 @@ <div class="color-wrap"> <div class="region region-content"> <div class="block block-system block-system-main"> - <div class="content"> + <div class="content" style="text-align: center;"> <div class="view-content"> - VIDEOS + <div class="tuto_title">Tutorial for Query mode</div> + <div>A short video that shows how to use the new web application to rapidly build tailored and complex queries to iPPI-DB and share data with colleagues.</div> + <iframe width="800" height="480" src="https://www.youtube.com/embed/DJrLgDlL16w" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> + <div class="tuto_title">Tutorial for Contribution mode</div> + <div>A short video that shows how you can efficiently add new data to iPPI-DB using the contribute mode and your ORCID ID.</div> + <iframe width="800" height="480" src="https://www.youtube.com/embed/ErKtdymqJao" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> </div> </div> diff --git a/ippisite/ippidb/templatetags/customtags.py b/ippisite/ippidb/templatetags/customtags.py index 48a4b5e86fb57cb5ef7f8e9832e1c9f2a80e3643..830662f8046cda1491e81f4fc49a8b0ba489ca2b 100644 --- a/ippisite/ippidb/templatetags/customtags.py +++ b/ippisite/ippidb/templatetags/customtags.py @@ -30,6 +30,22 @@ def status_class(value): return "table-secondary" +@register.simple_tag +def rule_status_icon(value, title): + if value is True: + class_suffix = "success" + icon_suffix = "check" + elif value is False: + class_suffix = "danger" + icon_suffix = "times" + else: + class_suffix = "secondary" + class_suffix = "question" + return mark_safe( + f'<i class="fas fa-{icon_suffix} text-{class_suffix}" title="{title}: failed"></i>' + ) + + @register.filter def bootstrap(object): return mark_safe("".join(bootstrap_core(object))) @@ -85,8 +101,27 @@ def bootstrap_core(object): # HACK : If the field is the DELETE button of the formset attrs["onchange"] = "delete_button_clicked(this);" field.label = ugettext("DELETE_label") - wrapping_classes += " formset-item-delete-host" + wrapping_classes += " formset-item-delete-host delete-btn col order-1" css_classes.add("formset-item-delete") + # HACK: if the css_class is a bootstrap column layout, transfer it to container element + for css_class in css_classes: + if ( + css_class.startswith("col") + or css_class.startswith("order-") + or css_class.startswith("mb-") + ): + wrapping_classes += f" {css_class}" + css_classes = set( + [ + css_class + for css_class in css_classes + if not ( + css_class.startswith("col") + or css_class.startswith("order-") + or css_class.startswith("mb-") + ) + ] + ) # overwrite the css classes attrs["class"] = " ".join(css_classes) diff --git a/ippisite/ippidb/tests/test_SPD00000304.yaml b/ippisite/ippidb/tests/test_SPD00000304.yaml new file mode 100644 index 0000000000000000000000000000000000000000..38780a20d0753047b8fab601ddfa98d819e34752 --- /dev/null +++ b/ippisite/ippidb/tests/test_SPD00000304.yaml @@ -0,0 +1,64 @@ +source: DO +id_source: '10.1126/science.1116304' +in_vitro: true +in_cellulo: true +xray: true +complexChoice: stabilized +complexType: Stab_Homo3merA2 +complex: + - cc_nb: 2 + complex_type: Bound + domain_pfam_acc: PF00229 + ppc_copy_nb: 2 + ppp_copy_nb_per_p: 1 + uniprot_id: P01375 + - cc_nb: 1 + complex_type: Bound + domain_pfam_acc: PF00229 + ppc_copy_nb: 1 + ppp_copy_nb_per_p: 1 + uniprot_id: P01375 +diseases: + - ;rheumatoid arthritis;MONDO:0008383; +family_name: TNF trimer +symmetry: C3 +pdb_id: 1tnf +activity_tests: + - cell_line_name: '' + compound_activity_results: + - activity_mol: 22 + activity_type: pIC50 + activity_unit: 1e-6 + compound_name: SPD00000304 + modulation_type: S + nb_active_compounds: 1 + test_modulation_type: I + test_name: TNF-α receptor binding ELISA + test_type: BIOCH + - cell_line_name: 'HeLa' + compound_activity_results: + - activity_mol: 4.6 + activity_type: pIC50 + activity_unit: 1e-6 + compound_name: SPD00000304 + modulation_type: S + nb_active_compounds: 1 + test_modulation_type: I + test_name: TNF-α induced IκB-α depletion + test_type: CELL + - cell_line_name: '' + compound_activity_results: + - activity_mol: 13 + activity_type: pIC50 + activity_unit: 1e-6 + compound_name: SPD00000304 + modulation_type: S + nb_active_compounds: 1 + test_modulation_type: I + test_name: TNF-α detrimerization ELISA + test_type: BIOCH +compounds: +- common_name: + compound_name: SPD00000304 + ligand_id: 307 + molecule_smiles: c1(c(cc2occ(c(=O)c2c1)CN(CCN(Cc1cn(c2c1cccc2)c1cc(ccc1)C(F)(F)F)C)C)C)C \ No newline at end of file diff --git a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_2380_002_e-9.yaml b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_2380_002_e-9.yaml index d23e8c9a7d11e94ced63753499e8129ef5fbcad1..e9b4af6c917854eadc83f64b1b47011fff9a9cd1 100644 --- a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_2380_002_e-9.yaml +++ b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_2380_002_e-9.yaml @@ -35,6 +35,7 @@ diseases: - ;titi;sfddf; - ;tata;3232; family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 diff --git a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_4_9846073_e-6.yaml b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_4_9846073_e-6.yaml index 963453ff916c5671abe90aa1a69dc0f6e5c655ab..1816cf3c497366c2da859d9693b1e37a1fc82125 100644 --- a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_4_9846073_e-6.yaml +++ b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_4_9846073_e-6.yaml @@ -35,6 +35,7 @@ diseases: - ;titi;sfddf; - ;tata;3232; family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 diff --git a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_639_39406_e-3.yaml b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_639_39406_e-3.yaml index 8dd666a74fe8f9106e69b46166e717156c4bca40..b4a2fa449f7f257dcbf21adf78b3ca8a59fbd804 100644 --- a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_639_39406_e-3.yaml +++ b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_639_39406_e-3.yaml @@ -35,6 +35,7 @@ diseases: - ;titi;sfddf; - ;tata;3232; family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 diff --git a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_6_85_e-0.yaml b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_6_85_e-0.yaml index a11ee0b690e376ef4253a0d0571575582f3fed1f..78e71ba7363df4a701b2ce4d19d3dfd67117db14 100644 --- a/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_6_85_e-0.yaml +++ b/ippisite/ippidb/tests/test_activity_computation_and_storage_pIC50_6_85_e-0.yaml @@ -35,6 +35,7 @@ diseases: - ;titi;sfddf; - ;tata;3232; family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 diff --git a/ippisite/ippidb/tests/test_basic_entry.yaml b/ippisite/ippidb/tests/test_basic_entry.yaml index af3ac0d2a90e95ef8d83cf1c348a2d3f0946af0c..c2d2b159b1cb6cadc272d0ad6a1ae828620fa143 100644 --- a/ippisite/ippidb/tests/test_basic_entry.yaml +++ b/ippisite/ippidb/tests/test_basic_entry.yaml @@ -35,6 +35,7 @@ diseases: - ;titi;sfddf; - ;tata;3232; family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 diff --git a/ippisite/ippidb/tests/test_complex_no_pfam.yaml b/ippisite/ippidb/tests/test_complex_no_pfam.yaml index 9ff962bf4fae400a8dc91f2f37d0ddff0233227c..325f7a7cc94b9de4e326530ff3348f78e0048251 100644 --- a/ippisite/ippidb/tests/test_complex_no_pfam.yaml +++ b/ippisite/ippidb/tests/test_complex_no_pfam.yaml @@ -32,6 +32,7 @@ compounds: molecule_smiles: C diseases: [] family_name: WD40 (PF00400) +symmetry: AS id_source: '26958703' in_silico: true pdb_id: 3emh diff --git a/ippisite/ippidb/tests/test_entry_28.yaml b/ippisite/ippidb/tests/test_entry_28.yaml index 5923d9523d70ffdda832aea5ce80f94c55319a23..1ecc6012bf6b638ba6f3df02f495b80390493e74 100644 --- a/ippisite/ippidb/tests/test_entry_28.yaml +++ b/ippisite/ippidb/tests/test_entry_28.yaml @@ -33,6 +33,7 @@ compounds: diseases: - ;cancer;MONDO:0004992; family_name: KEAP1 / NRF2 +symmetry: AS id_source: '24512214 ' in_vitro: true pdb_id: 3wn7 diff --git a/ippisite/ippidb/tests/test_simple_heterodimer.yaml b/ippisite/ippidb/tests/test_simple_heterodimer.yaml index 31762772d1822d48aba3bb24f3cbd84864c7dd24..a866a7c2bebb560ee44921472f3e7f704d1dc167 100644 --- a/ippisite/ippidb/tests/test_simple_heterodimer.yaml +++ b/ippisite/ippidb/tests/test_simple_heterodimer.yaml @@ -41,6 +41,7 @@ compounds: molecule_smiles: C1CCC1 diseases: [] family_name: WD40 (PF00400) +symmetry: AS id_source: '26958703' in_silico: true in_vitro: true diff --git a/ippisite/ippidb/tests/test_simple_heterodimer_208.yaml b/ippisite/ippidb/tests/test_simple_heterodimer_208.yaml index 84608560d331b79483534668f836e6005f4c987f..946cda2acb84266f38764a70094ffeccb668ae77 100644 --- a/ippisite/ippidb/tests/test_simple_heterodimer_208.yaml +++ b/ippisite/ippidb/tests/test_simple_heterodimer_208.yaml @@ -20,6 +20,7 @@ complex: ppp_copy_nb_per_p: 1 uniprot_id: Q07817 family_name: BCL-XL / Bad +symmetry: AS diseases: - ;cancer;MONDO:0004992; compounds: diff --git a/ippisite/ippidb/tests/test_simple_stabilized_heterodimer.yaml b/ippisite/ippidb/tests/test_simple_stabilized_heterodimer.yaml index 3dc5abcd9777d0071b571fc4513c95b311e41a4b..c17c7ecc4ee2a10fd73ae9343a5b6a808502f765 100644 --- a/ippisite/ippidb/tests/test_simple_stabilized_heterodimer.yaml +++ b/ippisite/ippidb/tests/test_simple_stabilized_heterodimer.yaml @@ -34,6 +34,7 @@ compounds: diseases: - ;breast cancer;MONDO:0007254; family_name: 14-3-3 / ER +symmetry: AS id_source: '23676274' in_cellulo: true in_vitro: true diff --git a/ippisite/ippidb/tests/test_stabilizer_204.yaml b/ippisite/ippidb/tests/test_stabilizer_204.yaml index 32e3ded658e247ef496275ba8f0e5a63f38f1854..3f9acbf71ade1a40d5cf30ce25f36d01824dc263 100644 --- a/ippisite/ippidb/tests/test_stabilizer_204.yaml +++ b/ippisite/ippidb/tests/test_stabilizer_204.yaml @@ -19,6 +19,7 @@ complex: ppp_copy_nb_per_p: 1 uniprot_id: P04049 family_name: 14-3-3 / C-RAF +symmetry: AS diseases: - ;melanoma;(MONDO_0005105); compounds: diff --git a/ippisite/ippidb/tests/test_with_all_tests.yaml b/ippisite/ippidb/tests/test_with_all_tests.yaml index 154992d54674d638c69474d0d467e366f227c978..1892c39f18464572c31f3890d95e9a4388f9aba3 100644 --- a/ippisite/ippidb/tests/test_with_all_tests.yaml +++ b/ippisite/ippidb/tests/test_with_all_tests.yaml @@ -45,23 +45,23 @@ diseases: - ;tutu;5456456; - '' family_name: Menin (PF05053) +symmetry: AS id_source: '15072770' in_silico: true pdb_id: 3u85 pharmacokinetic: true pharmacokinetic_tests: - administration_mode: IV - cell_line_name: '1043SK ' compound_pk_results: - - auc: '1' - c_max: '5.2' - clearance: '1.2' + - auc_av: True + c_max_av: True + clearance_av: True compound_name: toto oral_bioavailability: '22' t_demi: '5' t_max: '5' tolerated: 'True' - voldistribution: '5.5' + voldistribution_av: True concentration: '1.2' dose: '3.5' dose_interval: '2' diff --git a/ippisite/ippidb/tests/test_with_pk_test.yaml b/ippisite/ippidb/tests/test_with_pk_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cb852f220e3fa6b7cdd24b4a6406114044427405 --- /dev/null +++ b/ippisite/ippidb/tests/test_with_pk_test.yaml @@ -0,0 +1,59 @@ +activity_tests: + - cell_line_name: '' + compound_activity_results: + - activity_mol: 6.85 + activity_type: pIC50 + activity_unit: 1e-3 + compound_name: toto + modulation_type: I + is_primary: true + nb_active_compounds: 2 + test_modulation_type: I + test_name: test + test_type: BIOCH +complex: +- cc_nb: 1 + complex_type: Partner + domain_pfam_acc: PF05053 + ppc_copy_nb: 1 + ppp_copy_nb_per_p: '' + uniprot_id: O00255 +- cc_nb: 1 + complex_type: Bound + domain_pfam_acc: PF05965 + ppc_copy_nb: 1 + ppp_copy_nb_per_p: 1 + uniprot_id: Q03164 +complexChoice: inhibited +complexType: Inhib_Hetero2merAB +compounds: +- common_name: super + compound_name: toto + molecule_smiles: CCC +diseases: +- '' +- ;titi;sfddf; +- ;tutu;5456456; +- ;tutu;5456456; +- '' +family_name: Menin (PF05053) +symmetry: AS +id_source: '15072770' +pdb_id: 3u85 +pharmacokinetic: true +pharmacokinetic_tests: +- administration_mode: IV + compound_pk_results: + - auc_av: False + c_max_av: True + clearance_av: '1.2' + compound_name: toto + oral_bioavailability: '22' + t_demi: '5' + t_max: '5' + tolerated: 'True' + voldistribution_av: '5.5' + dose: '3.5' + organism: 1 + test_name: test +source: PM \ No newline at end of file diff --git a/ippisite/ippidb/tests/tests.py b/ippisite/ippidb/tests/tests.py index ca1461b2f33ecfcb08f9c68af7e0d92daad74be4..42311209918c0c45fb159f6dc95ae6d334abc468 100644 --- a/ippisite/ippidb/tests/tests.py +++ b/ippisite/ippidb/tests/tests.py @@ -3,6 +3,7 @@ iPPI-DB unit tests """ import json import re +from requests.exceptions import SSLError from django.contrib.auth import get_user_model from django.core.management import call_command @@ -10,7 +11,6 @@ from django.test import TestCase from django.urls import reverse import requests - from ippidb import models from ippidb.ws import ( get_uniprot_info, @@ -35,9 +35,9 @@ from ippidb.models import ( Contribution, LeLleBiplotData, PcaBiplotData, - DrugBankCompound, Protein, ) +from .utils import create_dummy_compound class MolSmiTestCase(TestCase): @@ -94,66 +94,6 @@ class MolSmiTestCase(TestCase): self.assertEqual(response.status_code, 400) -def create_dummy_compound(id_, smiles): - c = Compound() - c.id = id_ - c.canonical_smile = smiles - c.is_macrocycle = True - c.aromatic_ratio = 0.0 - c.balaban_index = 0.0 - c.fsp3 = 0.0 - c.gc_molar_refractivity = 0.0 - c.log_d = 0.0 - c.a_log_p = 0.0 - c.gc_molar_refractivity = 0.0 - c.mean_atom_vol_vdw = 0.0 - c.molecular_weight = 0.0 - c.nb_acceptor_h = 0 - c.nb_aliphatic_amines = 0 - c.nb_aromatic_bonds = 0 - c.nb_aromatic_ether = 0 - c.nb_aromatic_sssr = 0 - c.nb_atom = 0 - c.nb_atom_non_h = 0 - c.nb_benzene_like_rings = 0 - c.nb_bonds = 0 - c.nb_bonds_non_h = 0 - c.nb_br = 0 - c.nb_c = 0 - c.nb_chiral_centers = 0 - c.nb_circuits = 0 - c.nb_cl = 0 - c.nb_csp2 = 0 - c.nb_csp3 = 0 - c.nb_donor_h = 0 - c.nb_double_bonds = 0 - c.nb_f = 0 - c.nb_i = 0 - c.nb_multiple_bonds = 0 - c.nb_n = 0 - c.nb_o = 0 - c.nb_rings = 0 - c.nb_rotatable_bonds = 0 - c.randic_index = 0 - c.rdf070m = 0 - c.rotatable_bond_fraction = 0 - c.sum_atom_polar = 0 - c.sum_atom_vol_vdw = 0 - c.tpsa = 0 - c.ui = 0 - c.wiener_index = 0 - c.save(autofill=True) - return c - - -def create_dummy_drugbank_compound(id_, smiles): - dbc = DrugBankCompound() - dbc.id = id_ - dbc.common_name = "DrugBankCompound" + str(id_) - dbc.canonical_smiles = smiles - dbc.save() - - class CompoundTanimotoTestCase(TestCase): def setUp(self): self.smiles_dict = {1: "CC", 2: "CCC"} @@ -438,7 +378,9 @@ class QueryCompoundViewsAccessTestCase(TestCase): self.assertEqual(self.c1.is_validated(), False) self.assertEqual(self.c2.is_validated(), True) for i in range(1, 21): - self.assertEqual(Compound.objects.get(id=2 + i).is_validated(), True) + # these compounds are considered not validated because + # are not linked to a CompoundAction + self.assertEqual(Compound.objects.get(id=2 + i).is_validated(), False) def test_lelleplot_filter(self): """ @@ -675,7 +617,7 @@ class TestGetUniprotInfo(TestCase): exp_biological_processes = [ "GO_0000281", "GO_0008104", - 'GO_0015031', + "GO_0015031", "GO_0016197", "GO_0019882", "GO_0031175", @@ -827,9 +769,12 @@ class TestConvertSMILESToIUPAC(TestCase): def test_valid(self): smiles_to_iupacs = {"CCC": "propane"} for smiles, expected_iupac in smiles_to_iupacs.items(): - self.assertEqual( - convert_smiles_to_iupac(smiles).lower(), expected_iupac.lower() - ) + try: + self.assertEqual( + convert_smiles_to_iupac(smiles).lower(), expected_iupac.lower() + ) + except SSLError: + self.skipTest("SSL connection issue with the CACTUS WS, skipping") class DuplicateGeneNameTestCase(TestCase): diff --git a/ippisite/ippidb/tests/tests_contribute.py b/ippisite/ippidb/tests/tests_contribute.py index 5ecf48a3b84c3d319a703bbc6b52bce956c8bc9a..25e777ee2474504443375bfe04538b09054a718b 100644 --- a/ippisite/ippidb/tests/tests_contribute.py +++ b/ippisite/ippidb/tests/tests_contribute.py @@ -1,6 +1,8 @@ """ iPPI-DB contribution module tests """ +from requests.exceptions import HTTPError + from django.contrib.auth import get_user_model from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType @@ -22,7 +24,10 @@ class BibliographyIDTestCase(TestCase): b = models.Bibliography() b.source = "DO" b.id_source = "10.1016/j.bmcl.2013.03.013" - b.save(autofill=True) + try: + b.save(autofill=True) + except HTTPError: + self.skipTest("Connection error, skipping test") class ContributionViewsAccessTestCase(TestCase): @@ -47,6 +52,7 @@ class ContributionViewsAccessTestCase(TestCase): ) def test_403_without_perm_and_access_closed(self): + live_settings.open_access_to_contribution = "False" self.client.force_login(self.user) response = self.client.get(self.url) self.assertEqual(response.status_code, 403) @@ -80,6 +86,7 @@ class ContributionViewsAccessTestCase(TestCase): self.assertEqual(response.status_code, 302) def test_ko_with_staff(self): + live_settings.open_access_to_contribution = "False" self.user.is_staff = True self.user.save() self.client.force_login(self.user) diff --git a/ippisite/ippidb/tests/tests_contribute_e2e.py b/ippisite/ippidb/tests/tests_contribute_e2e.py index fd67349c9fcbc4363b2934887353356e29a840a2..90516e7acf4d94db6fc87c5386d197af6039cbae 100644 --- a/ippisite/ippidb/tests/tests_contribute_e2e.py +++ b/ippisite/ippidb/tests/tests_contribute_e2e.py @@ -44,10 +44,8 @@ def compute_ppi_name(entry_data): partner_protein_names = [ get_uniprot_info(uniprot_id)["short_name"] for uniprot_id in partner_uniprots ] - bound_protein_names.sort() - partner_protein_names.sort() - bound_str = ",".join(bound_protein_names) - partner_str = ",".join(partner_protein_names) + bound_str = ",".join(sorted(list(set(bound_protein_names)))) + partner_str = ",".join(sorted(list(set(partner_protein_names)))) name = bound_str if partner_str != "": name += " / " + partner_str @@ -60,6 +58,18 @@ class ContributionE2ETestCase(TestCase): in the same way a user would do. """ + SYMMETRIES = [ + ["AS", "asymmetric"], + ["C2", "C2 symmetry"], + ["D2", "D2 symmetry"], + ["C3", "C3 symmetry"], + ["D3", "D3 symmetry"], + ["C4", "C4 symmetry"], + ["D4", "D4 symmetry"], + ["C5", "C5 symmetry"], + ["D5", "D5 symmetry"], + ] + def setUp(self): login = "contributor" password = "12345" @@ -67,10 +77,11 @@ class ContributionE2ETestCase(TestCase): User.objects.create_user(username=login, password=password) self.client.login(username=login, password=password) grant_contribution_permission(None, None, User.objects.all()) - symmetry = models.Symmetry() - symmetry.code = "AS" - symmetry.description = "asymmetric" - symmetry.save() + for item in self.SYMMETRIES: + symmetry = models.Symmetry() + symmetry.code = item[0] + symmetry.description = item[1] + symmetry.save() models.Taxonomy.objects.create(taxonomy_id=9606, name="Homo sapiens") @staticmethod @@ -141,7 +152,7 @@ class ContributionE2ETestCase(TestCase): "Ppi name", ), ] - for activity_tests in entry_data["activity_tests"]: + for activity_tests in entry_data.get("activity_tests", []): for compound_activity_results in activity_tests[ "compound_activity_results" ]: @@ -229,7 +240,7 @@ class ContributionE2ETestCase(TestCase): ) self.assertEqual( response.url, - reverse("contribution-detail", kwargs={"contribution_pk": 1}), + reverse("contribution-detail", kwargs={"pk": 1}), "wrong final URL, should be the contribution permanent URL", ) @@ -312,11 +323,15 @@ class ContributionE2ETestCase(TestCase): return data def get_ppi_form(): + if "symmetry" in entry_data: + symmetry_id = models.Symmetry.objects.get( + code=entry_data["symmetry"] + ).id return { "family": "", "pdb_id": entry_data["pdb_id"], "family_name": entry_data["family_name"], - "symmetry": 1, # FIXME + "symmetry": symmetry_id, # FIXME "pockets_nb": 1, # FIXME "selected_diseases": "\n".join(entry_data["diseases"]), } @@ -452,11 +467,11 @@ class ContributionE2ETestCase(TestCase): data[f"{idx}-test_name"] = pk_test["test_name"] data[f"{idx}-organism"] = pk_test["organism"] data[f"{idx}-administration_mode"] = pk_test["administration_mode"] - data[f"{idx}-concentration"] = pk_test["concentration"] + if "concentration" in pk_test: + data[f"{idx}-concentration"] = pk_test["concentration"] data[f"{idx}-dose"] = pk_test["dose"] - data[f"{idx}-dose_interval"] = pk_test["dose_interval"] - data[f"{idx}-cell_line_name"] = pk_test["cell_line_name"] - + if "dose_interval" in pk_test: + data[f"{idx}-dose_interval"] = pk_test["dose_interval"] data[f"{idx}-compoundpkresult_set-pk-results-TOTAL_FORMS"] = len( pk_test.get("compound_pk_results", []) ) @@ -467,15 +482,15 @@ class ContributionE2ETestCase(TestCase): data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-tolerated" ] = result["tolerated"] - data[f"{idx}-compoundpkresult_set-pk-results-{nidx}-auc"] = result[ - "auc" - ] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-clearance" - ] = result["clearance"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-auc_av" + ] = result["auc_av"] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-c_max" - ] = result["c_max"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-clearance_av" + ] = result["clearance_av"] + data[ + f"{idx}-compoundpkresult_set-pk-results-{nidx}-c_max_av" + ] = result["c_max_av"] data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-oral_bioavailability" ] = result["oral_bioavailability"] @@ -486,13 +501,16 @@ class ContributionE2ETestCase(TestCase): f"{idx}-compoundpkresult_set-pk-results-{nidx}-t_max" ] = result["t_max"] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-voldistribution" - ] = result["voldistribution"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-voldistribution_av" + ] = result["voldistribution_av"] data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-compound_name" ] = result["compound_name"] return data + def get_save_in_db_form(): + return dict(ok=True) + form_callables = { None: lambda: None, "IdForm": get_id_form, @@ -511,6 +529,7 @@ class ContributionE2ETestCase(TestCase): if entry_data.get("pharmacokinetic", False): form_callables["TestPKDescriptionFormSet"] = get_pk_description_form + form_callables["SaveInDB"] = get_save_in_db_form # Adding a step for "done" in order to also save the data in the db form_callables["done"] = lambda: None @@ -533,7 +552,9 @@ class ContributionE2ETestCase(TestCase): ) def test_entry(self, entry_path): # load the test data - entry_data = yaml.load(open(entry_path, "r"), Loader=yaml.FullLoader) + entry_data = yaml.load( + open(entry_path, "r", encoding="utf8"), Loader=yaml.FullLoader + ) # process the wizard self._process_contribution_wizard(entry_data) # test diseases @@ -557,7 +578,10 @@ class ContributionE2ETestCase(TestCase): comp = models.Compound.objects.get(iupac_name=c["molecule_iupac"]) # test ligand ID has been stored if the X ray data option is checked if entry_data.get("xray", False) is True: - self.assertEqual(comp.ligand_id, c.get("ligand_id", None)) + ligand_id = c.get("ligand_id", None) + if ligand_id is not None: + ligand_id = str(ligand_id) + self.assertEqual(comp.ligand_id, ligand_id) # test activity bibliography = models.Bibliography.objects.get( id_source=entry_data["id_source"].strip() @@ -616,5 +640,4 @@ class ContributionE2ETestCase(TestCase): """ with NamedTemporaryFile(delete=False, suffix=".html") as f: f.write(response.content) - print(response.content) return f.name diff --git a/ippisite/ippidb/tests/tests_utils.py b/ippisite/ippidb/tests/tests_utils.py index 5c73f34e75dc2ebeb17c8b63d4eb9470b7da2a0b..21bc5614c6ec2aba6b50981b3e1a1f1719e21696 100644 --- a/ippisite/ippidb/tests/tests_utils.py +++ b/ippisite/ippidb/tests/tests_utils.py @@ -6,7 +6,14 @@ import re from django.test import TestCase from openbabel import vectorUnsignedInt, OBFingerprint -from ippidb.utils import FingerPrinter, mol2smi, smi2mol, smi2inchi, smi2inchikey, smi2sdf +from ippidb.utils import ( + FingerPrinter, + mol2smi, + smi2mol, + smi2inchi, + smi2inchikey, + smi2sdf, +) class MolSmiTestCase(TestCase): diff --git a/ippisite/ippidb/tests/tests_views.py b/ippisite/ippidb/tests/tests_views.py index f228aaef42dd633cc91ead91a11bab1cd000832b..0d3966ae3387c7bc9fbc5cd89b3a0810848d1530 100644 --- a/ippisite/ippidb/tests/tests_views.py +++ b/ippisite/ippidb/tests/tests_views.py @@ -3,8 +3,11 @@ iPPI-DB views tests """ from django.test import TestCase from django.urls import reverse +from django.core.management import call_command from parameterized import parameterized +from .utils import create_dummy_compound + tested_urlpatterns = [ "index", "general", @@ -23,7 +26,7 @@ tested_urlpatterns = [ # "biblio-view", # "ppi-view", # "contribution-detail", - "admin-session-update", + # "admin-session-update", # "mol2smi", # "smi2mol", # "smi2iupac", @@ -37,3 +40,31 @@ class ViewTest(TestCase): def test_url(self, url_name): response = self.client.get(reverse(url_name)) self.assertEqual(response.status_code, 200) + + +class CompoundCardViewTest(TestCase): + """ + Tests for compound card + """ + + def setUp(self): + create_dummy_compound(1, "CC") + + def test_compound_card(self): + """ + basic test for compound card + """ + + call_command("lle_le") + call_command("pca") + response = self.client.get(reverse("compound_card", kwargs={"pk": 1})) + self.assertEqual(response.status_code, 200) + + def test_compound_card_no_lelleplot_data(self): + """ + test that compound card is ok even if LE-LLE plot + data are missing (which can happen during LE-LLE recomputing) + """ + + response = self.client.get(reverse("compound_card", kwargs={"pk": 1})) + self.assertEqual(response.status_code, 200) diff --git a/ippisite/ippidb/tests/utils.py b/ippisite/ippidb/tests/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..3bee4a1e2ad13ed76ce13dfb8ba74eae6fa5982e --- /dev/null +++ b/ippisite/ippidb/tests/utils.py @@ -0,0 +1,61 @@ +from ippidb.models import Compound, DrugBankCompound + + +def create_dummy_compound(id_, smiles): + c = Compound() + c.id = id_ + c.canonical_smile = smiles + c.is_macrocycle = True + c.aromatic_ratio = 0.0 + c.balaban_index = 0.0 + c.fsp3 = 0.0 + c.gc_molar_refractivity = 0.0 + c.log_d = 0.0 + c.a_log_p = 0.0 + c.gc_molar_refractivity = 0.0 + c.mean_atom_vol_vdw = 0.0 + c.molecular_weight = 0.0 + c.nb_acceptor_h = 0 + c.nb_aliphatic_amines = 0 + c.nb_aromatic_bonds = 0 + c.nb_aromatic_ether = 0 + c.nb_aromatic_sssr = 0 + c.nb_atom = 0 + c.nb_atom_non_h = 0 + c.nb_benzene_like_rings = 0 + c.nb_bonds = 0 + c.nb_bonds_non_h = 0 + c.nb_br = 0 + c.nb_c = 0 + c.nb_chiral_centers = 0 + c.nb_circuits = 0 + c.nb_cl = 0 + c.nb_csp2 = 0 + c.nb_csp3 = 0 + c.nb_donor_h = 0 + c.nb_double_bonds = 0 + c.nb_f = 0 + c.nb_i = 0 + c.nb_multiple_bonds = 0 + c.nb_n = 0 + c.nb_o = 0 + c.nb_rings = 0 + c.nb_rotatable_bonds = 0 + c.randic_index = 0 + c.rdf070m = 0 + c.rotatable_bond_fraction = 0 + c.sum_atom_polar = 0 + c.sum_atom_vol_vdw = 0 + c.tpsa = 0 + c.ui = 0 + c.wiener_index = 0 + c.save(autofill=True) + return c + + +def create_dummy_drugbank_compound(id_, smiles): + dbc = DrugBankCompound() + dbc.id = id_ + dbc.common_name = "DrugBankCompound" + str(id_) + dbc.canonical_smiles = smiles + dbc.save() diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py index c94bbcba13db81eb23980fa4b3c606c8e54394c7..56c3f9734a009b5554347c49f6d040dc58a3c522 100644 --- a/ippisite/ippidb/urls.py +++ b/ippisite/ippidb/urls.py @@ -5,6 +5,10 @@ iPPI-DB URLs routing module from django.conf.urls import include, url from django.conf.urls.static import static from django.conf import settings +from django.contrib.sitemaps.views import sitemap +from django.contrib.sitemaps import Sitemap +from django.urls import path +from django.urls import reverse from rest_framework import routers from . import views @@ -14,8 +18,39 @@ ROUTER.register(r"pdb", views.PdbViewSet, basename="pdb") ROUTER.register(r"distance", views.DistanceViewSet, basename="distance") +class IppiDbStaticSitemap(Sitemap): + changefreq = "never" + priority = 1 + + def items(self): + return [ + "index", + "credits", + "general", + "pharmacology", + "le_lle", + "physicochemistry", + "pca", + "compound_list", + ] + + def location(self, item): + return reverse(item) + + def lastmod(self, obj): + return None + + +sitemaps = { + "static": IppiDbStaticSitemap, + "compounds": views.site.IppiDbCompoundSitemap, +} + urlpatterns = [ url(r"^$", views.index, name="index"), + url(r"^credits/$", views.credits, name="credits"), + url(r"^citation/$", views.citation, name="citation"), + url(r"^news/$", views.news, name="news"), url(r"^about-general/$", views.about_general, name="general"), url(r"^about-pharmacology/$", views.about_pharmacology, name="pharmacology"), url(r"^about-le-lle/$", views.about_le_lle, name="le_lle"), @@ -46,37 +81,25 @@ urlpatterns = [ ), url(r"^contribute/add/$", views.ippidb_wizard_view, name="admin-session-add"), url( - r"^contribute/view/(?P<biblio_pk>\d+)-(?P<ppi_pk>\d+)/$", - views.admin_session_view, - name="admin-session-view", - ), - url( - r"^contribute/view/(?P<biblio_pk>\d+)-/$", - views.admin_session_view, - {"ppi_pk": None}, - name="biblio-view", - ), - url( - r"^contribute/view/-(?P<ppi_pk>\d+)/$", - views.admin_session_view, - {"biblio_pk": None}, - name="ppi-view", - ), - url( - r"^contribute/view/(?P<contribution_pk>\d+)/$", - views.admin_session_view, - {"ppi_pk": None, "biblio_pk": None}, + r"^contributions/(?P<pk>\d+)$", + views.ContributionDetailView.as_view(), name="contribution-detail", ), - url(r"^contribute/update/$", views.update, name="admin-session-update"), url(r"^utils/mol2smi$", views.convert_mol2smi, name="mol2smi"), url(r"^utils/smi2mol$", views.convert_smi2mol, name="smi2mol"), url(r"^utils/smi2iupac$", views.convert_smi2iupac, name="smi2iupac"), url(r"^utils/iupac2smi$", views.convert_iupac2smi, name="iupac2smi"), url(r"^utils/getoutputjob$", views.get_output_job, name="getoutputjob"), url(r"^utils/getjsonnetwork$", views.get_json_network, name="getjsonnetwork"), + path( + "sitemap.xml", + sitemap, + {"sitemaps": sitemaps}, + name="django.contrib.sitemaps.views.sitemap", + ), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + if settings.DEBUG: import debug_toolbar diff --git a/ippisite/ippidb/utils.py b/ippisite/ippidb/utils.py index dd72f6b1b59cc72e1d62567b72c0d0fd44dbf249..b931863521a387c128a6496eb2a172aa35af0717 100644 --- a/ippisite/ippidb/utils.py +++ b/ippisite/ippidb/utils.py @@ -11,12 +11,30 @@ except ImportError: import openbabel as ob -def mol2smi(mol_string): +def mol2smi(mol_string: str) -> str: + """ + Convert a compound structure from MOL to SMILES format + using open babel + + :param mol_string: structure for the compound in MOL format + :type mol_string: str + :return: structure for the compound in SMILES format + :rtype: str + """ m = pybel.readstring("mol", mol_string) return m.write(format="smi").strip() -def smi2mol(smi_string): +def smi2mol(smi_string: str) -> str: + """ + Convert a compound structure from SMILES to MOL format + using open babel + + :param smi_string: structure for the compound in SMILES format + :type smi_string: str + :return: structure for the compound in MOL format + :rtype: str + """ m = pybel.readstring("smi", smi_string) # generate 2D coordinates for MarvinJS layout # NB: the line below should be replaced as soon as the new version of openbabel @@ -31,7 +49,16 @@ smi2inchi_conv = ob.OBConversion() smi2inchi_conv.SetInAndOutFormats("smi", "inchi") -def smi2inchi(smi_string): +def smi2inchi(smi_string: str) -> str: + """ + Convert a compound structure from SMILES to InChi format + using open babel + + :param smi_string: structure for the compound in SMILES format + :type smi_string: str + :return: structure for the compound in InChi format + :rtype: str + """ mol = ob.OBMol() smi2inchi_conv.ReadString(mol, smi_string) return smi2inchi_conv.WriteString(mol).strip() @@ -42,7 +69,16 @@ smi2inchikey_conv.SetInAndOutFormats("smi", "inchi") smi2inchikey_conv.SetOptions("K", smi2inchikey_conv.OUTOPTIONS) -def smi2inchikey(smi_string): +def smi2inchikey(smi_string: str) -> str: + """ + Convert a compound structure from SMILES to InChiKey format + using open babel + + :param smi_string: structure for the compound in SMILES format + :type smi_string: str + :return: structure for the compound in InChiKey format + :rtype: str + """ mol = ob.OBMol() smi2inchikey_conv.ReadString(mol, smi_string) return smi2inchikey_conv.WriteString(mol).strip() @@ -52,7 +88,16 @@ smi2sdf_conv = ob.OBConversion() smi2sdf_conv.SetInAndOutFormats("smi", "sdf") -def smi2sdf(smi_dict): +def smi2sdf(smi_dict: dict) -> str: + """ + Convert a series of compound structures in SMILES to an SDF format + using open babel + + :param smi_dict: structure for the compound in SMILES format + :type smi_dict: dict + :return: structure for the compound in InChiKey format + :rtype: str + """ sdf_string = "" for id, smiles in smi_dict.items(): mol = ob.OBMol() @@ -63,37 +108,67 @@ def smi2sdf(smi_dict): class FingerPrinter(object): - def __init__(self, name="FP4"): + def __init__(self, name: str = "FP4"): + """ + :param name: name of the FingerPrint type to use, defaults to FP4 + :type name: str + """ self.fingerprinter = ob.OBFingerprint.FindFingerprint(name) self._smiles_parser = ob.OBConversion() self._smiles_parser.SetInFormat("smi") - def parse_smiles(self, smiles): - "parse a SMILES into a molecule" + def parse_smiles(self, smiles: str) -> ob.OBMol: + """ + Parse a SMILES into a molecule + + :param smiles: compound SMILES + :type smiles: str + :return: compound openbabel object + :rtype: ob.OBMol + """ mol = ob.OBMol() self._smiles_parser.ReadString(mol, smiles) return mol - def fp(self, smiles): - "generate a fingerprint from a SMILES string" + def fp(self, smiles: str) -> ob.vectorUnsignedInt: + """ + Generate a fingerprint from a SMILES string + + :param smiles: compound SMILES + :type smiles: str + :return: fingerprint + :rtype: ob.vectorUnsignedInt + """ fp = ob.vectorUnsignedInt() self.fingerprinter.GetFingerprint(self.parse_smiles(smiles), fp) return fp - def fp_dict(self, smiles_dict): + def fp_dict(self, smiles_dict: str) -> dict: """ - generate a dict of {compound id: fingerprint} from a dict of + Generate a dict of {compound id: fingerprint} from a dict of {compound id: fingerprint} + + :param smiles_dict: dictionary of compound SMILES + :type smiles_dict: dict + :return: the corresponding {compound id: fingerprint} dictionary + :rtype: dict """ return { compound_id: self.fp(smiles_entry) for compound_id, smiles_entry in smiles_dict.items() } - def tanimoto_fps(self, smiles_query, fp_dict): + def tanimoto_fps(self, smiles_query: str, fp_dict: dict) -> dict: """ - perform a tanimoto similarity search using a smiles query string + Perform a tanimoto similarity search using a smiles query string on a dict of {compound id: fingerprint} + + :param smiles_query: dictionary of compound SMILES + :type smiles_query: str + :param fp_dict: a {compound id: fingerprint} dictionary + :type fp_dict: dict + :return: the {compound id: tanimoto value} dictionary for this query + :rtype: dict """ fp_query = self.fp(smiles_query) return { @@ -101,10 +176,17 @@ class FingerPrinter(object): for compound_id, fp_entry in fp_dict.items() } - def tanimoto_smiles(self, query_smiles, smiles_dict): + def tanimoto_smiles(self, query_smiles: str, smiles_dict: dict) -> dict: """ - perform a tanimoto similarity search using a smiles query on a + Perform a tanimoto similarity search using a smiles query on a dict of {compound id: SMILES} + + :param query_smiles: dictionary of compound SMILES + :type query_smiles: str + :param smiles_dict: a {compound id: SMILES} dictionary + :param smiles_dict: dict + :return: the {compound id: tanimoto value} dictionary for this query + :rtype: dict """ fp_dict = self.fp_dict(smiles_dict) return self.tanimoto_fps(query_smiles, fp_dict) diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py index e0914075cd7300541f19cc43d40d6045b171352d..5010e4e76dc6872a1ffe9e5693ecf2d5815fd210 100644 --- a/ippisite/ippidb/views/__init__.py +++ b/ippisite/ippidb/views/__init__.py @@ -12,7 +12,7 @@ iPPI-DB views from django.contrib.auth.decorators import login_required from django.shortcuts import render from .targetcentric import PdbViewSet, DistanceViewSet, PDBView, NetworkView -from .contribute import ippidb_wizard_view, admin_session_view +from .contribute import ippidb_wizard_view, ContributionDetailView from .compound_query import ( CompoundListView, CompoundDetailView, @@ -22,6 +22,9 @@ from .compound_query import ( convert_smi2iupac, convert_iupac2smi, ) + +from .site import IppiDbCompoundSitemap + from .tasks import get_output_job, get_json_network from .about import ( about_general, @@ -37,6 +40,18 @@ def index(request): return render(request, "index.html") +def credits(request): + return render(request, "credits.html") + + +def citation(request): + return render(request, "citation.html") + + +def news(request): + return render(request, "news.html") + + def general(request): return render(request, "general.html") @@ -68,7 +83,7 @@ def google_analytics(request): __all__ = [ ippidb_wizard_view, - admin_session_view, + ContributionDetailView, index, general, tutorials, @@ -93,4 +108,5 @@ __all__ = [ get_output_job, NetworkView, get_json_network, + IppiDbCompoundSitemap, ] diff --git a/ippisite/ippidb/views/about.py b/ippisite/ippidb/views/about.py index 726f1e0a1f068bae1e817dea77e49ba4cdf2d1ad..323bfce6a72c84f4b4780e4b8e533981da42cfe4 100644 --- a/ippisite/ippidb/views/about.py +++ b/ippisite/ippidb/views/about.py @@ -95,6 +95,21 @@ def about_pharmacology(request): binding_data_per_ppi_family = convert_to_bar_chart_data( binding_data_per_ppi_family_raw ) + drugbank_compounds_per_ppi_family_raw = ( + PpiFamily.objects.annotate( + value=Count("ppi__compoundaction__compound__drugbank_id", distinct=True) + ) + .values(value=F("value"), label=F("name")) + .order_by("-value") + .all() + ) + drugbank_compounds_per_ppi_family = convert_to_bar_chart_data( + drugbank_compounds_per_ppi_family_raw + ) + ppi_family_labels = { + entry["name"]: entry["id"] + for entry in PpiFamily.objects.values(*["id", "name"]) + } context = { "biochemical_tests_count_by_name": biochemical_tests_count_by_name, "cellular_tests_count_by_name": cellular_tests_count_by_name, @@ -144,13 +159,17 @@ def about_pharmacology(request): .count(), "compounds_per_ppi_family": compounds_per_ppi_family, "binding_data_per_ppi_family": binding_data_per_ppi_family, + "drugbank_compounds_per_ppi_family": drugbank_compounds_per_ppi_family, + "ppi_family_labels": ppi_family_labels, } return render(request, "about-pharmacology.html", context=context) def about_le_lle(request): try: - context = {"le_lle_biplot_data": LeLleBiplotData.objects.get().le_lle_biplot_data} + context = { + "le_lle_biplot_data": LeLleBiplotData.objects.get().le_lle_biplot_data + } except LeLleBiplotData.DoesNotExist: context = {} return render(request, "about-le-lle.html", context=context) diff --git a/ippisite/ippidb/views/compound_query.py b/ippisite/ippidb/views/compound_query.py index 1ea45e79385133f29f6f91ba51a59c955de18e19..cb894a7268f5d9de13a8e272baf714a765e0af45 100644 --- a/ippisite/ippidb/views/compound_query.py +++ b/ippisite/ippidb/views/compound_query.py @@ -16,8 +16,6 @@ from ippidb.utils import mol2smi, smi2mol from ippidb.models import ( Compound, Ppi, - ProteinDomainBoundComplex, - ProteinDomainPartnerComplex, Disease, Domain, Protein, @@ -28,6 +26,8 @@ from ippidb.models import ( MolecularFunction, TestActivityDescription, create_tanimoto, + ProteinDomainBoundComplexGroup, + ProteinDomainPartnerComplexGroup, ) from ippidb.ws import convert_iupac_to_smiles, convert_smiles_to_iupac @@ -367,7 +367,7 @@ class ExistsFilterHandler(FilterHandler): if self.value: # filter queryset on the values not being NULL queryset = queryset.exclude( - **{self.parameter_name + "__isnull": not (self.value)} + **{self.parameter_name + "__isnull": self.value} ) return queryset @@ -619,17 +619,17 @@ class CompoundListView(ListView): on_value="uniprot_id", ), CompoundListFilterHandler( - ProteinDomainBoundComplex, - "compoundaction__ppi_id__ppicomplex__complex", - "ppicomplex__ppi__compoundaction__compound", + ProteinDomainBoundComplexGroup, + "compoundaction__ppi_id__ppicomplex__complex__group", + "proteindomaincomplex__ppicomplex__ppi__compoundaction__compound", "boundcomplex", self.filter_context, self.request.GET, ), CompoundListFilterHandler( - ProteinDomainPartnerComplex, - "compoundaction__ppi_id__ppicomplex__complex", - "ppicomplex__ppi__compoundaction__compound", + ProteinDomainPartnerComplexGroup, + "compoundaction__ppi_id__ppicomplex__complex__group", + "proteindomaincomplex__ppicomplex__ppi__compoundaction__compound", "partnercomplex", self.filter_context, self.request.GET, @@ -708,6 +708,8 @@ class CompoundListView(ListView): ExistsFilterHandler("pubchem_id", self.filter_context, self.request.GET), ExistsFilterHandler("chemspider_id", self.filter_context, self.request.GET), ExistsFilterHandler("chembl_id", self.filter_context, self.request.GET), + ExistsFilterHandler("ligand_id", self.filter_context, self.request.GET), + ExistsFilterHandler("drugbank_id", self.filter_context, self.request.GET), TrueFilterHandler("lipinsky", self.filter_context, self.request.GET), TrueFilterHandler("veber", self.filter_context, self.request.GET), TrueFilterHandler("pfizer", self.filter_context, self.request.GET), @@ -757,10 +759,19 @@ class CompoundDetailView(DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["le_lle_biplot_data"] = LeLleBiplotData.objects.get().le_lle_biplot_data - pca_biplot = json.loads(PcaBiplotData.objects.get().pca_biplot_data) - context["pca_biplot_data"] = json.dumps(pca_biplot["data"]) + try: + context[ + "le_lle_biplot_data" + ] = LeLleBiplotData.objects.get().le_lle_biplot_data + except LeLleBiplotData.DoesNotExist: + context["le_lle_biplot_data"] = [] + try: + pca_biplot = json.loads(PcaBiplotData.objects.get().pca_biplot_data) + except PcaBiplotData.DoesNotExist: + pca_biplot = {"data": [], "correlation_circle": ""} + context["pca_biplot_data"] = pca_biplot["data"] context["pca_biplot_cc"] = pca_biplot["correlation_circle"] + context["bioschemas_data"] = self.object.get_bioschemas(self.request) return context diff --git a/ippisite/ippidb/views/contribute.py b/ippisite/ippidb/views/contribute.py index 31e28ae6f31968aa2e1eb219b5d1323dc75c10e9..308fb4742a011d8b4860ac591800f213935c7a4f 100644 --- a/ippisite/ippidb/views/contribute.py +++ b/ippisite/ippidb/views/contribute.py @@ -4,8 +4,10 @@ iPPI-DB contribution views from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin from django.db import transaction -from django.shortcuts import render, get_object_or_404, redirect, reverse +from django.shortcuts import redirect, reverse from django.utils.translation import ugettext_lazy +from django.contrib import messages +from django.views.generic.detail import DetailView from formtools.wizard.views import NamedUrlSessionWizardView from ippidb import forms as ippidb_forms @@ -23,6 +25,7 @@ FORMS = [ ("ActivityDescriptionFormSet", ippidb_forms.ActivityDescriptionFormSet), ("TestCytotoxDescriptionFormSet", ippidb_forms.TestCytotoxDescriptionFormSet), ("TestPKDescriptionFormSet", ippidb_forms.TestPKDescriptionFormSet), + ("SaveInDB", ippidb_forms.SaveInDBForm), # ("TestsForm", ippidb_forms.TestsFormSet), ] @@ -42,6 +45,7 @@ FORMS_TAB_TITLE = { "TestCytotoxDescriptionFormSet_tab_title" ), "TestPKDescriptionFormSet": ugettext_lazy("TestPKDescriptionFormSet_tab_title"), + "SaveInDB": ugettext_lazy("SaveInDB_tab_title"), } FORMS_TITLE = { @@ -58,6 +62,7 @@ FORMS_TITLE = { "TestCytotoxDescriptionFormSet_title" ), "TestPKDescriptionFormSet": ugettext_lazy("TestPKDescriptionFormSet_title"), + "SaveInDB": ugettext_lazy("SaveInDB_title"), } FORMS_DESC = { @@ -74,6 +79,7 @@ FORMS_DESC = { "TestCytotoxDescriptionFormSet_desc" ), "TestPKDescriptionFormSet": ugettext_lazy("TestPKDescriptionFormSet_desc"), + "SaveInDB": ugettext_lazy("SaveInDB_desc"), } TEMPLATES = { @@ -88,6 +94,7 @@ TEMPLATES = { "ActivityDescriptionFormSet": "wizard_formset_with_nested_formset.html", "TestCytotoxDescriptionFormSet": "wizard_formset_with_nested_formset.html", "TestPKDescriptionFormSet": "wizard_formset_with_nested_formset.html", + "SaveInDB": "add.html", } ARCHITECTURE = { @@ -114,7 +121,7 @@ ARCHITECTURE = { has_bound=True, nb_copy_bound=[], nb_per_pocket=[], - has_partner=False, + has_partner=True, nb_pockets=[], nb_copies_in_complex=[], symmetry=[], @@ -123,7 +130,7 @@ ARCHITECTURE = { has_bound=True, nb_copy_bound=[1], nb_per_pocket=[1], - has_partner=False, + has_partner=True, nb_pockets=[1], nb_copies_in_complex=[1], symmetry=["AS"], @@ -196,7 +203,7 @@ ARCHITECTURE = { has_bound=True, nb_copy_bound=[], nb_per_pocket=[], - has_partner=False, + has_partner=True, nb_pockets=[], nb_copies_in_complex=[], symmetry=[], @@ -549,9 +556,12 @@ class IppiWizard( # update its date of modification contribution.save() # super().done(form_list=form_list, **kwargs) - return redirect( - reverse("contribution-detail", kwargs={"contribution_pk": contribution.pk}) - ) + messages.success( + self.request, + f"Congratulations! Dear {contribution.contributor.username}," + f" thank you for your contribution.", + ) + return redirect(reverse("contribution-detail", kwargs={"pk": contribution.pk})) def get(self, *args, **kwargs): """ @@ -574,21 +584,23 @@ class IppiWizard( ippidb_wizard_view = IppiWizard.as_view(FORMS, url_name="ippidb_step") -def admin_session_view(request, biblio_pk, ppi_pk, contribution_pk=None): - context = {} +class ContributionDetailView(DetailView): + """ + Contribution detail view + """ + + model = models.Contribution + template_name = "contribute-detail.html" - if contribution_pk: - contribution = get_object_or_404(models.Contribution, pk=contribution_pk) + def get_queryset(self): + return self.model.objects.for_user(self.request.user) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + contribution = context["contribution"] bibliography = contribution.bibliography ppi = contribution.ppi context["contribution"] = contribution - else: - bibliography = None - ppi = None - - if biblio_pk: - bibliography = get_object_or_404(models.Bibliography, pk=biblio_pk) - if bibliography: context["bibliography"] = bibliography context[ "testactivitydescription" @@ -597,11 +609,8 @@ def admin_session_view(request, biblio_pk, ppi_pk, contribution_pk=None): "testcytotoxdescription" ] = bibliography.testcytotoxdescription_set.all() context["testpkdescription"] = bibliography.testpkdescription_set.all() + context["testactivityresults"] = bibliography.testactivitydescription_set.all() context["refcompoundbiblio"] = bibliography.refcompoundbiblio_set.all() - if ppi_pk: - ppi = get_object_or_404(models.Ppi, pk=ppi_pk) - if ppi: context["ppi"] = ppi context["complexes"] = ppi.ppicomplex_set.all() - - return render(request, "contribute-detail.html", context=context) + return context diff --git a/ippisite/ippidb/views/site.py b/ippisite/ippidb/views/site.py new file mode 100644 index 0000000000000000000000000000000000000000..9878db475863b99fae7ca6f66e020db51f9d347f --- /dev/null +++ b/ippisite/ippidb/views/site.py @@ -0,0 +1,13 @@ +from django.contrib.sitemaps import Sitemap +from ippidb.models import Compound + + +class IppiDbCompoundSitemap(Sitemap): + changefreq = "never" + priority = 0.5 + + def items(self): + return Compound.objects.validated() + + def lastmod(self, obj): + return None diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py index ccbaba2f8909ddafc84f99a8760481d5c8b16c2e..77126d82abb338c56ebac789c54de9aca433a64a 100644 --- a/ippisite/ippidb/ws.py +++ b/ippisite/ippidb/ws.py @@ -1,19 +1,33 @@ """ iPPI-DB web-service client utility functions """ +from typing import List import xml.etree.ElementTree as ET from urllib import parse as urllib_parse - import requests from bioservices.eutils import EUtils from bioservices.uniprot import UniProt from bs4 import BeautifulSoup from requests.exceptions import ContentDecodingError +from chembl_webresource_client.new_client import new_client class EntryNotFoundError(Exception): - def __init__(self, entry_id, status_code=None, msg=None): + """ + Exception raised if an entry is not found using on of the + Web Service functions of this module + """ + + def __init__(self, entry_id: str, status_code: str = None, msg: str = None): + """ + :param entry_id: ID of the entry not found + :type entry_id: str + :param status_code: status code sent back by the web service + :type status_code: str + :param msg: message sent back by the web service + :type msg: str + """ self.entry_id = entry_id _msg = f"{entry_id} not found." if status_code is not None: @@ -24,25 +38,41 @@ class EntryNotFoundError(Exception): class BibliographicalEntryNotFound(EntryNotFoundError): + """ + Exception raised if a Bibliography entry is not found + """ + pass class PubMedEntryNotFound(BibliographicalEntryNotFound): + """ + Exception raised if a PubMed entry is not found + """ + def __str__(self): return f"Bibliographical data not found for PMID {self.entry_id}" class PatentNotFound(BibliographicalEntryNotFound): + """ + Exception raised if a Patent entry is not found + """ + def __str__(self): return f"Bibliographical data not found for Patent {self.entry_id}" class DOIEntryNotFound(BibliographicalEntryNotFound): + """ + Exception raised if a DOI entry is not found + """ + def __str__(self): return f"Bibliographical data not found for DOI {self.entry_id}" -def get_pubmed_info(pmid): +def get_pubmed_info(pmid: int) -> dict: """ Retrieve information about a publication from NCBI PubMed @@ -77,7 +107,7 @@ def get_pubmed_info(pmid): } -def get_google_patent_info(patent_number): +def get_google_patent_info(patent_number: str) -> dict: """ Retrieve information about a patent parsing Dublin Core info in the Google HTML @@ -110,12 +140,12 @@ def get_google_patent_info(patent_number): } -def get_doi_info(doi): +def get_doi_info(doi: str) -> dict: """ Retrieve information about a publication from DOI web services :param doi: DOI - :type pmid: str + :type doi: str :return: publication metadata (title, journal name, publication year, authors list). :rtype: dict """ @@ -176,7 +206,7 @@ def get_doi_info(doi): } -def get_uniprot_info(uniprot_id): +def get_uniprot_info(uniprot_id: str) -> dict: """ Retrieve information about a protein from the Uniprot database @@ -278,7 +308,7 @@ def get_uniprot_info(uniprot_id): } -def get_go_info(go_id): +def get_go_info(go_id: str) -> dict: """ Retrieve information about a GO term using the EBI OLS web service @@ -296,7 +326,7 @@ def get_go_info(go_id): return {"label": label} -def get_taxonomy_info(taxonomy_id): +def get_taxonomy_info(taxonomy_id: str) -> dict: """ Retrieve information about a taxon using the NCBI Entrez web services @@ -311,7 +341,7 @@ def get_taxonomy_info(taxonomy_id): return {"scientific_name": scientific_name} -def get_pfam_info(pfam_acc): +def get_pfam_info(pfam_acc: str) -> dict: """ Retrieve information about a protein family using the PFAM web service @@ -320,7 +350,7 @@ def get_pfam_info(pfam_acc): :return: Protein family metadata (id, description). :rtype: dict """ - resp = requests.get("https://pfam.xfam.org/family/{}?output=xml".format(pfam_acc)) + resp = requests.get("http://pfam.xfam.org/family/{}?output=xml".format(pfam_acc)) root = ET.fromstring(resp.text) ns = {"pfam": "https://pfam.xfam.org/"} entry = root.findall("pfam:entry", ns)[0] @@ -329,14 +359,14 @@ def get_pfam_info(pfam_acc): return {"id": pfam_id, "description": description} -def get_pdb_uniprot_mapping(pdb_id): +def get_pdb_uniprot_mapping(pdb_id: str) -> List[str]: """ Retrieve PDB to uniprot mappings using the PDBe web service :param pdb_id: PDB ID :type pdb_id: str :return: Uniprot IDs - :rtype: list + :rtype: List[str] """ pdb_id = pdb_id.lower() resp = requests.get( @@ -354,7 +384,7 @@ def get_pdb_uniprot_mapping(pdb_id): return uniprot_ids -def get_pdb_pfam_mapping(pdb_id): +def get_pdb_pfam_mapping(pdb_id: str) -> dict: """ Retrieve PDB to pfam mappings using the PDBe web service @@ -367,7 +397,7 @@ def get_pdb_pfam_mapping(pdb_id): resp = requests.get( "https://www.ebi.ac.uk/pdbe/api/mappings/pfam/{}".format(pdb_id.lower()) ) - if resp.status_code != 200: + if "application/json" not in resp.headers.get("content-type"): raise EntryNotFoundError(pdb_id, resp.status_code) all_pfam = resp.json()[pdb_id]["Pfam"] for pfam in all_pfam.values(): @@ -378,7 +408,7 @@ def get_pdb_pfam_mapping(pdb_id): return all_pfam -def pdb_entry_exists(pdb_id): +def pdb_entry_exists(pdb_id: str) -> bool: """ Test if a PDB entry exists using EBI web services @@ -387,7 +417,6 @@ def pdb_entry_exists(pdb_id): :return: True/False wether the PDB entry exists :rtype: bool """ - """ """ resp = requests.get( "https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/{}".format(pdb_id.lower()) ) @@ -417,11 +446,29 @@ def convert_pdb_ligand_id_to_iupac(ligand_id): return ret[ligand_id.upper()][0]["name"] -def convert_iupac_to_smiles(iupac): +def convert_iupac_to_smiles(iupac: str) -> str: + """ + Convert a IUPAC name to SMILES format + using the Opsin web service + + :param iupac: IUPAC name for the compound + :type iupac: str + :return: the SMILES + :rtype: str + """ return convert_iupac_to_smiles_and_inchi(iupac)["smiles"] -def convert_iupac_to_smiles_and_inchi(iupac): +def convert_iupac_to_smiles_and_inchi(iupac: str) -> dict: + """ + Convert a IUPAC name to SMILES and INCHI formats + using the Opsin web service + + :param iupac: IUPAC name for the compound + :type iupac: str + :return: dictionary containing the SMILES and INCHI + :rtype: dict + """ if iupac is None: raise EntryNotFoundError(iupac, 422) resp = requests.get( @@ -464,7 +511,89 @@ def convert_pdb_ligand_id_to_iupacandsmiles(ligand_id): return iupac, cansmiles -def convert_smiles_to_iupac(smiles): +def convert_smiles_to_iupac(smiles: str) -> str: + """ + Convert a compound SMILES to IUPAC name + using the NIH Cactus Web Service + + :param smiles: IUPAC name for the compound + :type smiles: str + :return: the IUPAC name + :rtype: str + """ return requests.get( f"https://cactus.nci.nih.gov/chemical/structure/{smiles}/iupac_name" ).text + + +def get_chembl_id(inchikey: str) -> str: + """ + Retrieve the ChEMBL compound ID for a given + compound InChi Key + + :param inchikey: InChi Key for the compound + :type inchikey: str + :return: the ChEMBL ID + :rtype: str + """ + molecule = new_client.molecule + try: + m = molecule.get(inchikey) + return m["molecule_chembl_id"] + except Exception as e: + raise EntryNotFoundError(inchikey, msg=str(e)) + + +def get_pubchem_id(inchikey: str) -> str: + """ + Retrieve the PubChem compound ID for a given + compound InChi Key + Documentation for the corresponding web-service: + https://pubchemdocs.ncbi.nlm.nih.gov/pug-rest + + :param inchikey: InChi Key for the compound + :type inchikey: str + :return: the PubChem ID + :rtype: str + """ + url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/inchikey/{inchikey}/json" + resp = requests.get(url) + json_data = resp.json() + if "Fault" in json_data: + raise EntryNotFoundError( + inchikey, msg=str(f"compound for inchikey {inchikey} not found in PubChem") + ) + else: + try: + return str(json_data["PC_Compounds"][0]["id"]["id"]["cid"]) + except KeyError as ke: + print(ke, json_data) + + +def get_ligand_id(smiles: str) -> str: + endpoint = "http://www.rcsb.org/pdb/rest/smilesQuery?" + text = requests.get( + endpoint, params={"smiles": smiles, "search_type": "exact"} + ).text + doc = ET.fromstring(text) + ligandInfoEls = doc.findall("ligandInfo") + if len(ligandInfoEls) > 0: + for ligandEl in ligandInfoEls[0].findall("ligand"): + if "chemicalID" in ligandEl.attrib: + return ligandEl.attrib["chemicalID"] + raise EntryNotFoundError( + smiles, msg=str(f"ligand for smiles {smiles} not found in PDB Ligand") + ) + + +def get_orcid_user_details(orcid: str) -> str: + endpoint = f"https://pub.orcid.org/v3.0/{orcid}/person" + resp = requests.get( + endpoint, + headers={"Accept": "application/json"}, + ) + data = resp.json() + return { + "first": data["name"]["given-names"]["value"], + "last": data["name"]["family-name"]["value"], + } diff --git a/ippisite/ippisite/admin.py b/ippisite/ippisite/admin.py index aca43f83f4d0189a55b6e25e33ab9c63bff0c755..6618e8350c12a65e3364b850383f928307572402 100644 --- a/ippisite/ippisite/admin.py +++ b/ippisite/ippisite/admin.py @@ -8,11 +8,11 @@ from ippidb.tasks import ( launch_update_compound_cached_properties, run_compute_drugbank_similarity, launch_plots_computing, - launch_test_command_caching, launch_import_targetcentric, launch_delete_targetcentric, launch_clean_targetcentric, launch_update_mrc, + launch_set_compound_links, ) from django.shortcuts import render from ippidb.models import Job @@ -43,12 +43,30 @@ class IppidbAdmin(admin.AdminSite): "launch_plots_computing/", self.admin_view(self.launch_plots_computing_view), ), - path("launch_test_command/", self.admin_view(self.launch_test_command),), - path("import_targetcentric/", self.admin_view(self.import_targetcentric),), - path("delete_targetcentric/", self.admin_view(self.delete_targetcentric),), - path("clean_targetcentric/", self.admin_view(self.clean_targetcentric),), - path("update_mrc/", self.admin_view(self.update_mrc),), - path("check_path/", self.admin_view(self.check_path),), + path( + "import_targetcentric/", + self.admin_view(self.import_targetcentric), + ), + path( + "delete_targetcentric/", + self.admin_view(self.delete_targetcentric), + ), + path( + "clean_targetcentric/", + self.admin_view(self.clean_targetcentric), + ), + path( + "update_mrc/", + self.admin_view(self.update_mrc), + ), + path( + "check_path/", + self.admin_view(self.check_path), + ), + path( + "launch_set_compound_links/", + self.admin_view(self.launch_set_compound_links_view), + ), path("tasklog/", self.admin_view(self.tasklog), name="tasklog"), ] return my_urls + urls @@ -74,14 +92,6 @@ class IppidbAdmin(admin.AdminSite): messages.add_message(request, messages.INFO, "Please specify a jobid") return redirect("/admin/ippidb/job") - def launch_test_command(self, request): - """ - This view launches the task to test jobs - """ - launch_test_command_caching.delay() - messages.add_message(request, messages.INFO, "Test job launched") - return redirect("/admin/ippidb/job") - def launch_compound_properties_caching_view(self, request): """ This view launches the task to perform, for all already validated compounds, @@ -221,3 +231,11 @@ class IppidbAdmin(admin.AdminSite): listelem.append(elem) listelem.sort() return listelem + + def launch_set_compound_links_view(self, request): + """ + This view launches the task to set/update compound DB cross-links. + """ + launch_set_compound_links() + messages.add_message(request, messages.INFO, "DB links update launched") + return redirect("/admin/ippidb/job") diff --git a/ippisite/ippisite/settings.py b/ippisite/ippisite/settings.py index 65557ea69e8990627e2022dc0cf101e8b17d9c36..65844de0017d83c7dcab4267a5ae480d1d38a006 100644 --- a/ippisite/ippisite/settings.py +++ b/ippisite/ippisite/settings.py @@ -42,6 +42,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "django.contrib.sitemaps", "django_extensions", "django_celery_results", "crispy_forms", @@ -54,9 +55,11 @@ INSTALLED_APPS = [ "allauth", "allauth.account", "allauth.socialaccount", - "allauth.socialaccount.providers.github", + # "allauth.socialaccount.providers.github", "allauth.socialaccount.providers.orcid", "rest_framework", + "polymorphic", + "biodblinks", ] MIDDLEWARE = [ @@ -201,3 +204,11 @@ CELERY_RESULT_BACKEND = "django-db" GA_CODE = None DATA_UPLOAD_MAX_MEMORY_SIZE = 262144000 +# Django BioDbLinks settings +LABLINKS_ID_PREFIX = "https://ippidb.pasteur.fr" +LABLINKS_PROVIDER_ID = "2079" +LABLINKS_RESOURCE_NAME = "iPPI-DB" +LABLINKS_RESOURCE_DESCRIPTION = ( + "iPPI-DB : An interactive database of protein-protein interactions modulators" +) +LABLINKS_CONTACT_EMAIL = "ippidb@pasteur.fr" diff --git a/ippisite/ippisite/settings.template.py b/ippisite/ippisite/settings.template.py index c9fe8ccb077116167ce83373185a070e17c3e4cf..163bd2fe325501390d797585f1d2b7f24cd16fed 100644 --- a/ippisite/ippisite/settings.template.py +++ b/ippisite/ippisite/settings.template.py @@ -45,6 +45,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "django.contrib.sitemaps", "django_extensions", "django_celery_results", "crispy_forms", @@ -57,9 +58,10 @@ INSTALLED_APPS = [ "allauth", "allauth.account", "allauth.socialaccount", - "allauth.socialaccount.providers.github", + # "allauth.socialaccount.providers.github", "allauth.socialaccount.providers.orcid", "rest_framework", + "polymorphic", ] MIDDLEWARE = [ @@ -88,6 +90,7 @@ TEMPLATES = [ "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", "ippidb.views.marvinjs", + "ippidb.views.google_analytics", "live_settings.context_processors.processors", ] }, @@ -175,6 +178,15 @@ MEDIA_ROOT = BASE_DIR + MEDIA_URL CRISPY_TEMPLATE_PACK = "bootstrap4" # celery setting. -CELERY_RESULT_BACKEND = "django-db" DATA_UPLOAD_MAX_MEMORY_SIZE = 262144000 +CELERY_RESULT_BACKEND = "django-db" + +# Django BioDbLinks settings +LABLINKS_ID_PREFIX = "https://ippidb.pasteur.fr" +LABLINKS_PROVIDER_ID = "2079" +LABLINKS_RESOURCE_NAME = "iPPI-DB" +LABLINKS_RESOURCE_DESCRIPTION = ( + "iPPI-DB : An interactive database of protein-protein interactions modulators" +) +LABLINKS_CONTACT_EMAIL = "ippidb@pasteur.fr" diff --git a/ippisite/locale/en/LC_MESSAGES/django.po b/ippisite/locale/en/LC_MESSAGES/django.po index 1cefe9cadc5f6cd0396112110d905375fc898d04..8ef0937a0f96bc14df3dcb8d8503f6720a137605 100644 --- a/ippisite/locale/en/LC_MESSAGES/django.po +++ b/ippisite/locale/en/LC_MESSAGES/django.po @@ -471,6 +471,22 @@ msgstr "" msgid "Unknown content" msgstr "" +msgid "SaveInDBForm__ok__label" +msgstr "" +"I understand that the data provided will be, once validated, published " +"publicly on the website." + +msgid "SaveInDB_title" +msgstr "Contribution almost complete!" + +msgid "SaveInDB_desc" +msgstr "" +"Your contribution is not saved in the data base yet! Before saving it, you " +"can take a moment to review. You can go back to any step to see what you " +"provided, and then click next for the followings steps up to this final step." +" Once satisfied, please agree with the following terms and save your " +"contribution." + #~ msgid "compound_name_help_text" #~ msgstr "The name as it can be found in the publication" diff --git a/ippisite/requirements-core.txt b/ippisite/requirements-core.txt index 85d10b9d56a5a1d2628244a3d4a488250598b497..56031793dd609cd3d8fbbcbe851560686ddb6eee 100644 --- a/ippisite/requirements-core.txt +++ b/ippisite/requirements-core.txt @@ -16,9 +16,10 @@ xlwt bioservices bioblend bs4 +chembl_webresource_client # libraries to compute PCA -scikit-learn==0.20.3 #later versions do not support Python<3.5 -scipy==1.2.1 #Scipy >=1.3 does not support Python<3.5 +scikit-learn==0.23.2 +scipy==1.5.2 matplotlib==2.2.3 #Matplotlib 3.0+ does not support Python 2.x, 3.0, 3.1, 3.2, 3.3, or 3.4. seaborn # postgres driver @@ -28,3 +29,7 @@ git+https://gitlab.pasteur.fr/hmenager/django-diu.git#egg=django_diu #openbabel django-crispy-forms celery==4.4.7 +django-polymorphic +boltons +# django-biodblinks App +git+https://gitlab.pasteur.fr/hub/django-biodblinks.git#egg=django-biodblinks==0.1 diff --git a/ippisite/requirements-dev-rachel.txt b/ippisite/requirements-dev-rachel.txt new file mode 100644 index 0000000000000000000000000000000000000000..159e4b22264770293156b7273c2ab060fd3b29f9 --- /dev/null +++ b/ippisite/requirements-dev-rachel.txt @@ -0,0 +1,18 @@ +-r requirements-rachel.txt +# linting and formatting +flake8 +black +flake8-black +# documentation generation +sphinx +sphinx_rtd_theme +# coverage +coverage +# tests +requests-cache +parameterized +# dependencies to generate graph models using django-extensions +#pygraphviz +#pydot +pyparsing +pyyaml>=5.1 \ No newline at end of file diff --git a/ippisite/requirements-dev.txt b/ippisite/requirements-dev.txt index c8aa1e20adb53df4bf0f96e67253ded5ce33ce92..d9e46e82dac8a42e3e362c1cea5c31e81e60bd81 100644 --- a/ippisite/requirements-dev.txt +++ b/ippisite/requirements-dev.txt @@ -6,6 +6,7 @@ flake8-black # documentation generation sphinx sphinx_rtd_theme +sphinxcontrib-bibtex # coverage coverage # tests @@ -15,3 +16,4 @@ parameterized pygraphviz pydot pyparsing +pyyaml>=5.1 diff --git a/ippisite/requirements-rachel.txt b/ippisite/requirements-rachel.txt index da63e865154490881c01da367008ba4489d1e639..662749c052669318b881567ef97c49cda31caff5 100644 --- a/ippisite/requirements-rachel.txt +++ b/ippisite/requirements-rachel.txt @@ -1,24 +1,33 @@ # modwsgi mod-wsgi # django and extensions -Django>=2.0,<2.1 +Django==2.2.1 django-extensions django-formtools django-debug-toolbar django-allauth +django-celery-results==1.2.1 # import scripts -pandas==0.22.0 +pandas==1.0.5 +openpyxl +xlwt # web services bioservices bioblend bs4 +chembl_webresource_client # libraries to compute PCA sklearn scipy matplotlib==2.2.3 #Matplotlib 3.0+ does not support Python 2.x, 3.0, 3.1, 3.2, 3.3, or 3.4. +seaborn # postgres driver #psycopg2 +psycopg2-binary git+https://gitlab.pasteur.fr/hmenager/django-diu.git#egg=django_diu # openbabel is not installed from pip for now -openbabel +# openbabel django-crispy-forms +celery +django-celery-results==1.2.1 +django-polymorphic \ No newline at end of file diff --git a/ippisite/templates/admin/index.html b/ippisite/templates/admin/index.html index 354388cb754e5ce0a198738f9ad40f2dee215399..82295da00df61a8bf3e6a0c8684875c100de9ff6 100644 --- a/ippisite/templates/admin/index.html +++ b/ippisite/templates/admin/index.html @@ -60,6 +60,11 @@ <input type="submit" value="Plots generation" name="_save"/> </form> <hr/> + <form method="POST" action="/admin/launch_set_compound_links/" + style="display:block">{% csrf_token %} + <input type="submit" value="DB links update" name="_save"/> + </form> + <hr/> <!-- Button trigger modal --> <!-- Trigger/Open The Modal --> <div class="div-modal-btn"> @@ -78,12 +83,6 @@ <button id="DropBtn" for="DropModal" class="modal-btn" >Drop all targetcentric data</button> </div> <hr/> - <form method="POST" action="/admin/launch_test_command/" - style="display:block">{% csrf_token %} - <input type="submit" value="test command" name="_save"/> - </form> - <hr/> - </div>