From e29aa786d638b196e6c6a2e860baa3dbf4faf0fb Mon Sep 17 00:00:00 2001 From: Noah Ingwers <98993329+noah-ing@users.noreply.github.com> Date: Thu, 20 Aug 2026 15:40:15 -0500 Subject: [PATCH] docs: ground findings in checked-in artifacts --- .gitattributes | 1 + .github/workflows/ci.yml | 35 + LICENSE | 21 + README.md | 192 ++- SECURITY.md | 37 + experiments/dashboard.html | 1056 -------------- experiments/run_all_experiments.py | 20 +- experiments/run_experiments.py | 16 +- experiments/run_focused_experiments.py | 4 +- experiments/run_full_overnight.py | 2 +- experiments/serve_dashboard.py | 212 --- ..._Multi_Agent_Programming_Architectures.pdf | Bin 297495 -> 7347 bytes paper/main.tex | 1216 ++--------------- paper/references.bib | 228 ---- pyproject.toml | 2 +- src/emap/__init__.py | 2 +- src/emap/benchmarks/sandbox.py | 202 +-- src/emap/evolution/fitness.py | 2 +- src/emap/evolution/integrated_eval.py | 17 +- tests/test_agents.py | 30 +- 20 files changed, 452 insertions(+), 2843 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/ci.yml create mode 100644 LICENSE create mode 100644 SECURITY.md delete mode 100644 experiments/dashboard.html delete mode 100755 experiments/serve_dashboard.py delete mode 100644 paper/references.bib diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d72fd52 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.pdf binary diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..585be43 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: CI + +"on": + pull_request: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +jobs: + test: + name: Python 3.11 tests + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Check out repository + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.11" + cache: pip + + - name: Install project and test dependencies + run: python -m pip install -e ".[dev]" + + - name: Run tests + run: python -m pytest -q diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5351126 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Noah Ingwers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 5fbb521..70a6e26 100644 --- a/README.md +++ b/README.md @@ -4,42 +4,64 @@ Noah Ingwers, 2025 +> **Research status:** Exploratory, non-peer-reviewed work. The findings below summarize +> 12 recorded GPT-4o-mini runs completed in December 2025; they are not results from a +> peer-reviewed paper or a full-benchmark evaluation. + ## Overview EMAP is a framework for studying how resource constraints during evolutionary optimization shape multi-agent LLM architectures. Unlike existing approaches that treat computational cost as a secondary objective, EMAP makes budget constraints the primary evolutionary pressure - forcing architectures to adapt to resource scarcity rather than simply trading off against it. -## Key Findings - -We conducted 12 experiments across 4 budget regimes (TIGHT 2K, MEDIUM 5K, LOOSE 10K, UNCONSTRAINED 50K tokens) with 3 random seeds each, evolving multi-agent architectures on HumanEval (164 programming tasks). - -### Main Results - -| Regime | Budget | Pass@1 | Avg Agents | Avg Edges | -|--------|--------|--------|------------|-----------| -| TIGHT | 2,000 tokens | 98.4% ± 2.3% | 3.0 | 2.6 | -| MEDIUM | 5,000 tokens | 100.0% ± 0.0% | 3.0 | 2.4 | -| LOOSE | 10,000 tokens | 97.6% ± 2.4% | 3.0 | 1.8 | -| UNCONSTRAINED | 50,000 tokens | 100.0% ± 0.0% | 2.7 | 2.0 | - -### Key Discoveries - -1. **Evolution consistently produces 3-agent architectures** regardless of constraint severity, contradicting the hypothesis that tight constraints would favor minimal single-agent systems. - -2. **Multiple viable topologies emerge** - evolution discovered diverse architectures achieving equivalent performance: - - Traditional pipeline (planner -> coder -> reviewer) - - Test-first pipeline (tester -> reviewer -> planner) - - Hybrid architecture (generalist -> coder -> architect) - - Hierarchical 4-agent systems under loose constraints - -3. **Budget constraints preserve diversity** - under constrained regimes, different seeds produce different topologies (linear vs cyclic). Without constraints, evolution converges toward simpler linear solutions. - -4. **The "Goldilocks Zone"** - MEDIUM budget (5K tokens) achieves perfect performance with lowest token usage, representing optimal constraint severity for HumanEval tasks. - -## Computational Cost - -Total experimental cost: **3.09M tokens** (~27K API calls) across all 12 experiments. -Estimated API cost: **<$1.00** using GPT-4o-mini. -Runtime: 1.5-5.2 hours per experiment depending on budget regime. +## Recorded Findings + +The repository contains 12 completed experiment artifacts: 4 token-budget regimes +(TIGHT 2K, MEDIUM 5K, LOOSE 10K, and UNCONSTRAINED 50K) with seeds 42, 43, and 44. +Each recorded configuration used 12 generations and a population of 10. The runner +is configured to sample 12% of the intended 164-task HumanEval corpus per evaluation. +Each artifact reports a 41-task final evaluation (25%), consistent with that runner +configuration but not with a full-benchmark evaluation. + +### Recorded Results + +| Regime | Budget | Mean final score | Final-pop. agents | Final-pop. edges | +|--------|--------|------------------|-------------------|------------------| +| TIGHT | 2,000 tokens | 98.4% ± 2.3% | 3.2 | 2.6 | +| MEDIUM | 5,000 tokens | 100.0% ± 0.0% | 3.1 | 2.4 | +| LOOSE | 10,000 tokens | 98.4% ± 2.3% | 3.5 | 2.8 | +| UNCONSTRAINED | 50,000 tokens | 99.2% ± 1.1% | 2.9 | 2.1 | + +Values are means and population standard deviations across three recorded runs. +Agent and edge counts are final-generation population averages, not the sizes of a +single selected architecture. These numbers are reproduced from the checked-in +[summary](experiments/results/focused/summary.json) and +[per-run JSON artifacts](experiments/results/focused/). + +### Descriptive Observations + +1. **The recorded final populations averaged roughly three agents.** Mean agent + counts ranged from 2.9 to 3.5 across the four regimes. +2. **The selected genomes used several topologies.** Checked-in artifacts include a + planner -> coder -> reviewer pipeline, a tester -> reviewer -> planner topology, + a generalist -> coder -> architect topology, and two 4-agent LOOSE-budget systems. +3. **The MEDIUM runs were the strongest in this small sample.** All three recorded + MEDIUM final evaluations passed 41/41 sampled tasks and together used 414,390 + tokens, the lowest observed total among the four regimes. This does not establish + 5K tokens as a general optimum. +4. **Topology diversity is a hypothesis, not a causal result.** The 12 artifacts show + different structures across seeds, but three runs per regime on varying task + samples cannot establish that budget pressure caused those differences. + +## Checked-in Evidence and Cost + +- [Aggregate summary](experiments/results/focused/summary.json) +- [Twelve per-run JSON records](experiments/results/focused/) +- [Recorded run visualizations](experiments/viz/) +- [Artifact-grounded research note source](paper/main.tex) and + [rendered research note](paper/Scarcity_Breeds_Efficiency__Resource_Constrained_Evolution_of_Multi_Agent_Programming_Architectures.pdf) + +The 12 JSON files record **3,093,390 tokens**, **27,360 API calls**, and runtimes of +approximately **1.7-5.2 hours per run**. They do not separate input from output tokens, +so a historical dollar cost cannot be independently recalculated from the artifacts. ## Installation @@ -62,19 +84,31 @@ cp .env.example .env ### Run Evolution Experiment ```bash -python experiments/run_evolution_experiments.py \ +python experiments/run_single_experiment.py \ --budget 5000 \ --seed 42 \ --generations 12 \ --population 10 ``` -### Run Tests +The runner writes to `experiments/results/focused/` and skips a run when a completed +artifact with the same budget and seed already exists. Preserve the checked-in JSON +files before attempting a fresh rerun. + +### Run Offline Tests ```bash -pytest tests/ -v +python -m pytest tests/ -v ``` +The test suite uses mock backends and does not require an OpenAI API key. + +The code-evaluation harness is **not a security sandbox**. It executes generated +Python with `exec` in a disposable subprocess and applies static checks, +restricted builtins/imports, a timeout, and best-effort Unix resource limits. +Run it only in an unprivileged, isolated environment with no secrets or sensitive +network/filesystem access. + ### Basic API Usage ```python @@ -100,7 +134,7 @@ print(f"Tokens: {result.total_tokens_used}") ## Project Structure ``` -E_M_A_P/ +EMAP/ ├── src/emap/ │ ├── genome/ │ │ ├── representation.py # MultiAgentGenome, AgentGene @@ -113,13 +147,14 @@ E_M_A_P/ │ │ └── executor.py # LLM backends and message routing │ └── benchmarks/ │ ├── humaneval.py # HumanEval loader -│ └── sandbox.py # Safe code execution +│ └── sandbox.py # Best-effort subprocess evaluator ├── experiments/ -│ ├── run_evolution_experiments.py -│ └── results/ # Experiment JSON outputs +│ ├── run_single_experiment.py # One budget/seed run +│ ├── run_all_experiments.py # Recorded 4 x 3 run matrix +│ └── results/focused/ # Checked-in JSON artifacts ├── paper/ -│ ├── main.tex # Research paper -│ └── references.bib # Bibliography +│ ├── main.tex # Artifact-grounded research note +│ └── Scarcity_...pdf # Rendered research note └── tests/ ``` @@ -161,23 +196,63 @@ class MultiAgentGenome: - Adjust hyperparameters (temperature, max tokens, message length) - Change message format and aggregation strategy +## Reproducibility and Limitations + +To run against HumanEval, place `humaneval.jsonl` in `data/`, in +`src/emap/benchmarks/data/`, or at `~/.cache/emap/humaneval.jsonl`. The loader falls +back to five simple placeholder tasks when it cannot find that file. The recorded +artifacts have `final_total: 41`, which is consistent with the configured 25% sample +of the 164-task HumanEval corpus rather than the placeholder set. + +Important limits of the recorded study: + +- The `--seed` value controls NumPy-based architecture evolution, but task subsets are + selected with Python's unseeded `random` module. The OpenAI calls are also + nondeterministic. Exact reruns are therefore not guaranteed, and different runs may + have used different 41-task final subsets. +- The JSON files contain aggregate scores, selected genomes, timing, token totals, and + configuration. They do not contain final task IDs, per-task outputs, a dataset hash, + a Git commit, or dependency/model version metadata. The GPT-4o-mini attribution is + supported by the checked-in runner configuration, not by a model field in each JSON. +- Project dependencies use lower bounds and no lockfile, so the exact December 2025 + software environment is not preserved. +- With three runs per regime and sampled final evaluations, the table supports + descriptive comparisons only. It does not establish statistical significance, + full-HumanEval performance, causal effects of budget pressure, or generalization to + other models and benchmarks. +- This repository and its research note have not been peer reviewed. + ## Research Questions -**RQ1 (Addressed):** Do architectures evolved under different budget regimes exhibit different structures? -- Finding: All regimes converge to 3-agent architectures, but topology type (linear vs cyclic) is seed-dependent. +**RQ1 (Explored descriptively):** Do architectures evolved under different budget regimes exhibit different structures? -**RQ2 (Addressed):** Do constraint-evolved architectures exhibit different coordination strategies? -- Finding: Evolution discovers multiple viable topologies achieving equivalent performance. +- Recorded observation: final populations averaged 2.9-3.5 agents, while selected + genomes ranged from 2 to 4 agents and included both linear and cyclic topologies. + The current sample does not isolate budget from seed, task sampling, or model noise. -**RQ3 & RQ4 (Future Work):** Transfer to abundance and cross-benchmark generalization remain to be tested. +**RQ2 (Explored descriptively):** Do constraint-evolved architectures exhibit different coordination strategies? + +- Recorded observation: selected genomes used sequential, hierarchical, and voting + aggregation with structured, freeform, and minimal message formats. Whether the + constraints caused those choices remains untested. + +**RQ3 & RQ4 (Not evaluated):** Transfer to abundance and cross-benchmark generalization remain future work. ## Broader Implications -Our findings suggest something counterintuitive: constraints may be features, not bugs. The dominant paradigm in AI development is to maximize resources during training and optimization, then compress or distill afterward. But biological evolution tells a different story - organisms that evolved under scarcity develop fundamentally different adaptations than those subjected to scarcity after the fact. A desert plant has different anatomy than a rainforest plant experiencing drought. +EMAP investigates a counterintuitive hypothesis: constraints may be useful design +pressures rather than only deployment limits. Biological adaptation under scarcity is +the motivating analogy, not evidence for an equivalent mechanism in LLM systems. -We observe an analogous phenomenon in multi-agent architectures. Under budget pressure, evolution discovers cyclic feedback topologies, compressed message formats, and aggressive early-exit strategies. Remove that pressure, and evolution converges toward simpler linear pipelines. The constraint doesn't just filter solutions - it shapes the search process itself, maintaining diversity and preventing premature convergence to local optima. +The checked-in runs contain cyclic feedback topologies, compressed message formats, +and simpler linear pipelines. Because there are only three runs per regime and final +task subsets were not controlled, these observations motivate a larger preregistered +comparison; they do not demonstrate that budget pressure caused the structures or +preserved diversity. -This has implications beyond code generation. As LLM costs and environmental impact come under scrutiny, the ability to evolve efficient architectures under realistic constraints becomes increasingly valuable. Rather than designing for abundance and hoping efficiency follows, we can design for scarcity and let evolution discover what's truly necessary. +If the effect holds under controlled, full-benchmark evaluation, evolving systems +under realistic resource constraints could be useful beyond code generation. Testing +that proposition across models, benchmarks, and cost measures remains future work. ## Future Directions @@ -191,15 +266,22 @@ This has implications beyond code generation. As LLM costs and environmental imp ## Citation ```bibtex -@article{ingwers2025emap, - title={Scarcity Breeds Efficiency: Resource-Constrained Evolution of - Multi-Agent Programming Architectures}, +@misc{ingwers2025emap, + title={EMAP: An Exploratory Artifact Report on Resource-Constrained + Evolution of Multi-Agent Programming Architectures}, author={Ingwers, Noah}, - journal={arXiv preprint}, - year={2025} + year={2025}, + note={Unpublished, non-peer-reviewed research note and software repository} } ``` +## Security + +Report suspected vulnerabilities privately as described in +[SECURITY.md](SECURITY.md). The generated-code evaluator is a best-effort +experiment harness, not a security sandbox; its documented boundary and +reporting scope are stated there. + ## License -MIT License +[MIT License](LICENSE) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..f6b1a2f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,37 @@ +# Security Policy + +EMAP is exploratory research software. It has not been independently audited, +and this policy does not create a bug bounty, service-level agreement, or +guarantee of payment. + +## Supported version + +Security fixes target the current `main` branch. Please reproduce an issue +against the latest commit before reporting it. + +## Report privately + +Use GitHub's private vulnerability reporting form: + +https://github.com/noah-ing/EMAP/security/advisories/new + +If the form is unavailable, open a public issue asking for a private reporting +channel, but do not include exploit details, credentials, sensitive data, or +working generated-code payloads in that issue. + +Include a minimal reproduction, affected commit and component, expected and +observed behavior, impact, preconditions, and any suggested remediation. + +The generated-code evaluator is explicitly a best-effort experiment harness, +not a security sandbox. Python object-model escapes and platform-specific +resource-limit gaps are therefore documented limitations. Run it only in an +unprivileged external sandbox with no secrets or sensitive network/filesystem +access. Reports remain useful when the implementation violates a documented +fail-closed behavior, silently falls back to in-process execution, exposes a +credential, or introduces an unsafe default outside those stated limits. + +Do not test against systems, accounts, models, or data you do not own or have +written permission to assess. Do not exfiltrate data, degrade a service, or +retain sensitive material beyond what is necessary to demonstrate the issue. + +Please allow a reasonable remediation window before public disclosure. diff --git a/experiments/dashboard.html b/experiments/dashboard.html deleted file mode 100644 index 23f6e26..0000000 --- a/experiments/dashboard.html +++ /dev/null @@ -1,1056 +0,0 @@ - - -
- - -Scarcity Breeds Efficiency: Resource-Constrained Evolution of Multi-Agent Architectures
-- Minimal architecture - single specialist agent -
-- Complex topology with role specialization -
-- Tight budget evolved single-agent architecture (1.0 agents) vs. multi-agent in loose regimes (2.5+ agents) -
-- Awaiting analysis of prompt lengths across regimes -
-- Evaluating role distribution patterns across budgets -
-- Requires expensive failure analysis after experiments complete -
-| Regime | -Budget | -Generation | -Best Fitness | -Avg Agents | -Avg Edges | -Diversity | -Tokens Used | -
|---|---|---|---|---|---|---|---|
|
-
-
-
-
-
- |
- |||||||
- Auto-refresh every 30 seconds when experiments are running -
-Apy`3Agn!$QXx2I#IF>%h4K!Js% zQU%^ON8Ukom5@&p2&wn5tGQEs}hxA-Gs%|gk<<~XDD%l_>Dfurw z^B6SZ3a7XrlNd}rbD&}sjRog!iT492e}C5C>P!$9j9;I-x1}0f+!OkS1NZNE_L{r3 zsCuVT%2AQY?YzEyM~KI}zWO w zl{->oIaN1>kCvTf99Fds-nd}YW41|;GmeL267~(f+0^1pjGl+dsxbT&l6_PsjAzun zIn=bJMX`3V3{`fYLnuFQt!uL>i&d6LyKoBpSN06jsKWD{WGjH~)>byi$NxOD>{51r z*n4oLIaJPlGgqG+DnF(CoHlG7xf#SR)A Q!CVf @7gkGc>G$mTKPLDh=6?KQAdm+GuTB{Y+=T8^AW}vB`Z|x8JD8d5oTQ z)ZnE&{buDYepqYh7pCGW%r(r#o!$M>Po7ZVMnP=@BK7^{N&nfyoVtFMl_EZ@GESHH z(RCMMPCWR%E>%7uXV%Eiyv<{*ATxVhV$K+jTB+j{6h{h2A{3(*PI~C=9nwBOEc4Br z4Fhx_tzIDax(gUhUE!pMXzUdX+U-FF-zWovt~c~k;!|So@iUh$H-Rv%t`B1>utd0n zAwrvApK6HF>)A_QOrhzfzWUv@x-4Stf#tp_!v-^ldAtJ>AamR!qCOZ`+GS^l9FC0B zMYQ8s5WR&Fa+64$&X0p0l0jby6}K9Ve$IZki)oXEL>Qz8dw`gh03QrPFY5+L8iot1 zU$te-O`3m)M8qvG?lIURWF@DCj5-N{$R|kLym^z=lz*CnjNX=ZlT0pN3YYFAUTW~C z-R%3kGE35!$E 9gR2fAhPYj`(gRpgJwen~$1<@QNR^p~sI6^QJ?<; +J+ULe6tNHiNfV35YqwZdXQ zIyfa#tVPMbRy=56GR!>jx<*N1=evj#&xbdHL$PwVffX~V@K=`izNHR}yD{WR?^v0b z3HzoV@Jp3HVHfGq|1`7&uC1X#(oYSM@n|%u6gE*fHb?M=C4>!R#)7E5ZYLe5+h|Dz z_#yYQQ9*E${(9DfLd-j1_Qlj9r~IR`+I)Gh0yPls!DlwNIEeWw`TGyi@fsppWKG02 zM!fl+7KAq>u#z=fKH0?Uz$O6WLV_VZv@0_9OlmZ|8gE8$K N>wWAW5>b-D6mBogAnz8W(nYB z$D|>K +0OVpJk3B6!eMP;v|Tt?7; zG?i#^C?lt}lyslyD=lzV&Er{tSsj{_Z;!!xh;vm7^~s6Jk nxvHRXzt?4*}aAnHH66+ zAt~=h%<^^Re*9E~i-zJ~$GqRRwLBF*PQ`hqxknFT`uX@0CjdIkFkUKg&+2LmKu8vs zHATRN_xj1%HWENTWJR0Z&TTv`yPkUyt_nCCj!mBpDzJdpY7aJbN+Pm#o|}~K9eVwd z$Xb!yWOr<7-Fn6A)&^D_9Yg+`L)$i&p`+tz>2vt m3mD(UPEmkOB?2!+E^rfq1Xoz8{M4@VmSLoD{tsu1r`_t=aJt)h2PO9sd% zB3ez3AMtuY!BD3JJvAOTm8Ru;#i?3;(CZ_s;CL7PT%+ExIBnNIPIf(VB3buX51ZCX z+U!! !wrNi-3*29~%%PSsrQOnk~1DD3E`vgKg`IBzk%q7|s;U^;A^pHw< z1#95_)t?=Q2M=doW`vP3c_d}3%lg^Z-DAu6q&0n4Zk#Pi_F=5!nWej%-Z$t5M|E4S z)@Kx^w3lDnRw1-L8nhDX D!tjD}NMq($6YS!y`6YhAq>jR!KYqd{XiDV{Yf(mOL|ces!jJ z*5Mwi>^F&WPkwH{$9raPp|;aKyYny@cxOydN*<-NH95_&f74p(1x{lz15WQSq2k<> zz&wZ1GtFtCiahgeayxU3pp<*VLG{Yc**mN`K(TZIt-oGe@kUK3(wS9@NRE_tG_=Gn z*dj29eWcoL=^9;J)|JrkG&6{C0nH1*f|kg5A6j)bXvI&XnPVn6Cq2kxrm1S>fJ4F -gY4&&0`*WvJW9A6FWJeUN{$h1}J$l=xJ ;JI0b(O(bS{Xn(xN)_<6%fxP$BFY|JKRwyOj2mKkwu!p%&})K z@W?)cb7C%q>(^3`mv7i(>!#cBmUD)Ci%X7EJMnpHL@&yOcPYV}RvG<}#5}RTG9Z-3 zIf(gQ9!+=V9?v7B;+5VF#HzDza@3$>0C)&yZ}Fq9I@+66Js02>3(*{trg8Fc#Qnt_ z+)f=mSJ mp_>Cpw8jDJmhiZ|Na*^J8t|E!5eG%DCBiGST zN`bOSVR-56lHIGnM<(sH*z2{$l*Dot@wa;kl+(C&J?i4~hBv`%_-|mGzGA!!5q3?5 zlp4bA=p1?`4hW5~(ueN~je~bmbm!5cjIi4-P<@`dH78;}Vm(9@HFj0lV_IO|j}!In zOlwispkq=usuiwko~BQLj$ U!vU?0Rg>NehaT zmP$~VMY4uZ4(R`$xvmM&^KGd6#mxc<1afWf$IH1K8L9pq4Ec>Eda?x6**>^OukUj( z))^!N|AG#KVSq~x10J-))(@n`4S4;nZylr$@ZA>z4Cy5U(gg{8B(;^F5_nA07tI!Z z86!gu^J4oCSZx#Edd}@5q3@tSN)Oe~pFP(c*Z?yGXMfeyUZ62!NUWOo_b^mrSzqFH z5D;P4H;QlL3|L@&eCUvl4i3BY^)3hg9BL7@_CV_ZNGxCQWsI{u=q9i?bBtVlV}y@6 zOf+Uf-f{4qw-kXN)
^9{uAfs zv-n0w?W3Cib1QsLGk0doJGmS36R$gs3+&`N#I9NsZQvc1wExlt_@P@->q@7*9JVR2 zW%;vO1z69y8!n#q)I-R@o@XC~>m4S9b)0X#H`)AqV9=ya*)z=2N284_By0t^OYoa} z|GJ1D@8@p24n0i!YjfyrC! SN3ZJz-O;<3ACA@q$~}ua!m5BS_0(tH1}L>G*ub9;)X!s7AV=Re z)=z|MGN2>a)|3&SB(ecGptc@wsk0pMCm+J@rrqh%&-A#Uh=e(>xbBo=Z(pCa?yYFu z8jfWU4{J XQ39_4wH+2Lnhiw|xQEOm7) v@9w`qYK$1tZm*i?9Z>;HYRkMh_1i2V7GMXJtFpkod$td(ZyV9<+He znLoL2g$fvu5|FoA9nI{qx!m%+Am?TSQa~hFez CZ~ z;ZL&(?Q=yLvAD6iyWSr^x^uP0-8Gae(cN0|B=cq>jq1-$x_CRUHw2>lMp&EP2a3YJ zhLX}tf~{%t%oS_TwJNxLtUOn|=r=VZz}nBvG}_{msjcy1{V45O0J8P`GY>w4k|$r- z4tk3^N0V<4<{9LR8tqN52CiC{*5x+>0uX_M0YE9|l#CRG}gYrPm)_v2G|3PW|?G z`IE8d=C_=!P;kaDVwe{{ZK_CIg7Ffc7@`t2kCIKdAY&wx3rEPkUPifzXI z}f^?qnh-Ax+g}cB2#p*yTqVsr8d{F9FzGqpP%_rmpg@EtlzL zA0{Wv0h{P$^U=RAwX7yaGcIoKmkvup1`a@{gI PYvvlwd-^AG_sur z3$vXRJ_U9CrKc&%tPHn&Dr-0BHrt^k5Iph=vTybD5I*EkOEF@Aib=5t%_|!f4FMW- z56nh$!L{4-+ezt-&rNJ#^U_)O>IUPYQ(+>MthF%0oKKskC(^87YB3(iJ)4Y-)PwAC zw8>;*@w1+g1DPiG3QR`EgjeR9+$X$)M>$OEqX+B7{&Qm$G*zQ;o8_$CZ*6slGqAB^ zIE7ht@ eDTI2WQQ&8BBLxxr8b4^m{6msxaK#g>^-e+ D7f3y*po#({JziR$e%}&H$=0^J=!#VGraJ=8??ELG(V5l8m1;i`%?T_FL&OH^8 za4#zXpSDU}VZFXmVY0QhiP;@QmE(9%0WXg0`RTW% =6LzIUQ|%2O (@{Q6!Zq*bfU`WRU0yzrC$klz!`+)za|z^LNse)J5>0iJpG; zlx4j}gefCkD|wQ?YX3m#vUAgB77KiO+ikFNwlnF0`QYi&_s@(VH`>`-N|HiKMQhnO zS{p+{zd%N6Xff$Y70<06Juvih@u|7B^RTG5^Pg<}63d}LYESY!)%P#Nh^88K$sD2~ z5^sq;gw_z9Q}3@3ji|&hD?-3+CnaJA&quI(d2tPjx_^+^lPs(ekuMUsioF!4nh3_x zeTT7d`k_ 0l}36=ZEvd@f3+d7zlp zR`wx!60vn=KoJY%<0+?1uPW=;;1T9pjz!Q8BQP<-{KL^a4s{LpkeoIn$F)v_H!@iT zljw^1rIt%p5n^5cH6RkdGDYUf_IqCJagG}3&(-)#JCkT=JaaINZmkL0M^9=h>1p(B zIBiPDg0(U+jGY)<%6Zu}{inrc%C~x}_{MH3;fK*P wW=s*@u>swOc_p5-Z5OD zUAah^BTWvY`7< ygcro80=C3vL=5qppaiOL9cdZN zIyHr9TI~826I9AOu6U2&O|%0;fWeOpa-Zlnk5MwY2w;L)zU~4;?n&%Y3@#cW)8sp} zZH;i6#iO`fq x<6?~KY{W@ zH#fbS5!_>tnIgO4?wb$-WjtTBUlKLF3W5p=NS6pBmO1F0H 5kLH=4@FK8W8Pyzw&gFI!&G*;a<`*IVNa z?QrD8&Ned^C{HKZ6-34nrzJM|zkwiEk~-nJQM2u*UW9FO7C-7!d$6PD7sHb3oB6CK zY5uV1y?}a?U!y%_tC~0ZzPEu*9UwXPn)u_>{M*m=! sNH3@i6%TXJ z&z1>$?((<8%wTr{lQnNzRrvAA-R-wE_P9
Z}?YShOvSO(SJTpz#?So<|1h5^mPY zz!UMRkY0DDOMF0}q3#bMK3Z-m(X548p``1#h6**!!|k226F0?`A
|e_jZhf*C@f$wPa-Dd<6 #@yVu6jK zn|iB ;;P4k<&dPQdi$Lo;`;=X-=q1I!RA?UL4X}L1%hEZ*QJ>bY;h0g)!N}eUF$^pFKJ; zkcTQS>qn0`X>4WqO?&p$N{Cc#*P^3dQyvkKIYnZgX*_iv7;!zA2BNb$P5fi7Eal>F zw^6XuDs!PG93QSh>BMhY;KtKz0SVLb^S2eMHSf1^A&m;^m12QfW_B>*{o}4Q&Ir-X zQicE`mtdigzNzWDF2-xeSsX6)S@_O}DPD0mfA7KK9}N~vzi?`IOAam_>^Lr{UKq&V zKVBtCa>|<3(O!}r+GgbFq#~zZgbA>inc5oz3h_jkhDGFT*6eY)`Hw$<{37egG6Mq= z%U+i16~VeR*LYiz#K%4k_++)A`3W70h(LlOvd7>e4Fvc$ql*t7!8^FEE^RwL36Ql( z !JsS~usc^B8dm%i};A0PP~&;%T1|g6A!5 zPKp0Yf5T@@N;R6_M$E;{duKN&LcvaNsNU4uL{IIw{R_+8r6pJwCSqV+)3A-CN=P9? zFa Ay8t*$kCZI?LgvK|$LzUsoU&JpqpsAo!2~xYjhwp0SPY#b zh{%ddQ>YVy6f&u;?}C j`qa(9g1xX@H zV!C;+>xpJmB+;kx7@IWA*UlU&gh%9#t|wjw;aU}`I|q}hNUl+k>b~kfY8Mm;#;=!C z)3XiD??Ko{l03P{<;_z$l?-U5hMd(Ls(cbC{Q}2i7$-GMRfPUoS0`beBlpNT2`jfh zlv-hhtr vM=Wh`Moz;Lut(3nig4(|gZgi(r@h7}75A3B&M9Rq-qJ8YJ}FWVyoa zb4fWVe7ZWa*AWFLxk4*6;|NiWgX+Tkdk(gSI28w;y3X-9!a{&4LOrDOFX5k;Tqa$r zNzCGAcDh29x?Cckac1Hf(y7Dh41=?tS#qkMvTCj0+Pjz`mui=iO7qOO`Q6 B z(wFCTw+n|sHKvSJ6>_IwsS;?=UmSYgv#BBKh1n9j%BmTv)5P-e`PT1oI^3O~ipl%g z-o5MY&2=MJvm&4{I6OcGn@c4FF}6xU!&BtbXJ8jM{Jt#XDZ0fM%T7kc@AE2ld`lDx zZu(&=p2W;;iqFeW;;Jc{dx&`yR+_YY Rv^l*wYYYaDXZcBp|0>*%6#a) zr+Nhp$Bz()t3#(reo*-a?ub0Nn?zR&PJ&Nt&t!xHoPy>2%ZqQ5MR=aBM*eHTM|p{k zWurm#ESe9 +E)AYIe2wRzPAsU778r)z|?Iz%+wG#WW5 z6W*Nx85%)VXKl3;`VzsU@R}On+qhACz0nW!ks(nY^K#s$-0;d-QN@t;!@J>QF{P{n zv$Su#%<0f7ZpN>BSO*9PzLOWq7tlLu9q@>F>TmtJghpGG5oV}=)NC!Ip4@ClFl+f% z6)*>BPi5z4vn&0lW~Ds!!%8G8zm5^fjO!iThqQ$*Q%=IUb#A#UaoR@$4T*zypEGHn zH=JOg?KY&)y0;jMZIkMBACs(1(1wo>DWDDfp|ehy%EO}iDr9Pr_n3nQIS|F_?T*q{ z%lc6}U7I*(AA*B)#+AMeyq!B%pF`h@ugQYnm!*PkohzWl8Sf-Ga?eqFvlP?;O2C>M zv~06`cZncT`o%o>#q1L4gLM}rntmecr=XOuDXNJKOV&ps-JQ^JN7va*fdt3%oN*D1 zc=P-akT(_kBaT}dgXCY8WB(Db2zSBj*_I`oLcCU)Oavf-_u-tiDi5Y 1k8a!kaq}`E~!}hD}Xd91)q}EIU zgFRUX{K*zNt^~9lh9%LW*L!8B9`E(V hQiLOZ98{sun0Zp){KO)kw#-rY)!XdfIV<-RfnTdUP zpv7rky{Ui)^B_V7+>;0%1mTJUWz>qP{R!sx!5uDi@9Wgo+82G^2E+G=j4@&5N{j|c z*33WhNj7R$TqBj^j*Ob9$b7{u16bVbqBeDO&PL}?0+5OZL~G*&JG?Y620df?!4&-$ zt+$(rciUB;>R`zy3%@TU@_{GxLjo16f9)fE^QJ#W9^^QN;B7vkd=)|8*8yiF!609- zF&!#QlD?JR$q?O8*r@69Ce4RWwoo7AHR$sa!fT+;AZ140*#O)ip>#tG-v?jEJ9mkX z+fM6aZae{iB9Zt$-x`^NtnTdD++#%s@cS0L#Fq! (b@C2(H)u>9eU}&Hm7s5GXUOaWJM(rfGul}Oz zP1$quidbkaOaH^JEws=Ra26hL?$(*N(BQ}gnXch!__4 %MDJ98=~^iR7ir7go7tjT)8OMHg+HZ3G$%-9>< FCQSnpko{usb?WqlVCtRt;*7A!5*X5Ni=`NS` z3`Ztoxfll_huH*^Or_Ac3c_^^rg#u8eK?uoXNh*0L^DL}y^=UKt_ccxTA+U*CnIb& zBIiFmDl~W@qPoV5TBGS-hB@!4mrLum!MY?KE?UhG^#cryp(jL`CI?MQbyz0*=eOiC zag{Cj!|W|Rrhx7Ckh9UN_C&!XyvwW6TSHN}q7-rWg~6;gtF&UrE_7`x{G42epoEe} zw+AX>Sl@M2?~XmGzT+0pWba~FAbss;WjrT}#%xtpt=$mI-d|W!evoC99ZJEZ2+f66 z3dy%}&z;|-tgImJEMIcuw}S|Zy~NC&OwsV*T-b`<^nxQN?-RuPrR_B55Y8&wMonh6 zo+$b*sb*l0p>AgwvTUq!&O9X$@A|dYm1<}=OYVk#1#J)9L_e98_r{OoqTjZeQ6$$z zcw#l3RN4PjRM#E-g#;?G-up`Qv_r|AMO14<5Rh5;I|I%rVkBa9*8MZ9+A{_-E*!Si zyJ$Aq-Azk+2=^GDOliQ(^gz0+ekhfw&h&WrdYkY^0SWj`GTk?w=^?=yEW fBTS?!_5U)mFSHXUR?Wy43$K;?{aB8Z1&I|d$=i_ zN08XJ%)R%SmiL|Kz4D8)zXp)jhBbqn6tx>TY$nnOj;eCvB>QBGm|+XHXXBf=6z1ia zs28`8rKMu|V6o?!2!as)o^s=Osdh%w&w)*)>f@o4FY%!!N|Tyonov4noAx5n+eTiM zo&10^x3z-12^TO796?P-sj@=a=Z~Jw)i}R38w{%E1g8M-yhE#XmvnFl^4|Q|V5C9y zkf3XpLNM 6&NX~R$i2H1xp_1kA9T{O7gV|)6ZDOtH z -^IP;QTXwxbrJFY7B0MRePwQFzk+%%~^UHMaNtbvByJF>Lzn}@^v3w;Uzs!CSj zhe;@f7UZquiGJ6K^x2<^tP51aK-t(=DPn5Y2qty=x0?|!8#X)|@4bEn(h tQjk+H*Z9)hONyCvejH_YJ=Cv>z&50yt-k z9R&M-xRHL|)o@bYg13aUa}|ZRcSw&SV8&i#3(HjQ^l2>xNvsVoo#+v6ff34~Lr^BY z1stEZ9lM~5&ngv_M6$ZL%B&f6j`s6gr{WSN-BoAS5Yp`j i)0qas#5*{^LhWBtIM;He{;Mp z<-u|Z`HEzUx6+2!z0$>Pj8YE|uP^SY0|f+A>Bg1kH$q; zq0RU-$-@jrq>a<5c5$Ab@P9FO4?)84K!bqCwr$(CZQHhO+qP}ne8;wJduG4?u!pVs z4|`1Il2oNqmF}lIDTNy~jxw}z;QJ(J4pl1g4K(A3lKcPN&-X#PN9P#CJeW(3(OA>w z;d86FTlwos%&KcRj6U**pmI`e%TMtt7W-H57M!Rc)`I-D3p2R0Vv+VhV6R-*Hy%(* zd(C6-w`2cW=k<@^=_4r2BHh-_q$qE-b*YaWJuYBh&Do{7_~=gK`Jgf)jCbvfXpwq> z(IDp)o#@!fLc(Ljq gG+nCU)bCBHjV2SD2B&O`0zC zRhw#lCz zY;`cj!JVBd$xhW(fzvyKCV)eUf)RDineDBFn!+8 J?Nn0e{(4CHm5H;q>$c zfcA=ziNNW*scCLe@L5852$ucX(IEPn+$NvcN fB$*#2G{uI|v;g6WgAMeQop%UXvs$f5L`ZP+*12n}G-7x``9v^{tDnC7< zh%2a7L5Q73qUpU_Lb1{O^hEV4(dF7WR8U~tazV8l^A94aRG$k%efxYI=7QAL^W-Kl z-Uk*4q~GbWaw;KSh!%~8;bbraHxEb2IGA0~fr3vifbHbQTFuBp2Xjxal6<{dngy38 z-fl#E_=IsMcjdZP9bJhwK7FWz8Pnx%Phb0W$n_fHVd+bO_pxE~OTWyCRkloNzvYA> zQl*`Vh^SjrAu;5NA+AfWP^2@lAcE%=-Y#9U>#17N6qIcYRrB)+p1Un?{d=S?2=>u` z;94i%Z@~=_mAE~e*gI#9I_%8w=~&k2MM97(%U?6GARn=xfW)*M$G=rh;J5&Lr>-Ez zM{(yI WY-^pwe>Rwk>r%0wdpRO={$Oy3e$?ye)Ah35~-s4dX~uFm#+3 zFb7CBZ1^b@o3&Dvy)=W6g`9$@&D@GZUfVpe!#E5FKvr+D=zoRSFwNsK<^>BAzXL{& z|CrakU7q{ZLAnnI8mpQVC->GVgl8CA%^qyqf={BvZI3&Bv28q^uY+cbXc`B*O1}0l zFaj%_iMh&*X>0HK9lGj}&*qF1gyn_dvq4ci@`!@TF_$AvIRWL D^ zFpc}r-smn^P9ZWc!siFAfU@T4;Fa89U9nSA1_ltLqlTqV^p_~Zp~YjgWhto}dBThY z8-wFVYaI!M9ETSBs~PsnCa+JJ=?|mfCDP)sM5Nzkv=?H}>PRAIh!ioC{+Z`!f&`0# zDC_lB$JqpZ8^@bK*1bFbW^qEJ6Sv_uC%<^Flr%D; ? z_RK?te5Met-L&;|N$eT&82uu_bt0!$HQCF?G{s8W!6QM#xE*KYZ4g1wu8yaJSjVWx z r7m+H1d@jhfuX=fQlgbD}KTfqm|@X2TZLmyTr PJ s{~9PRyYVTNKCL2om}MpIft6*GvNNR?S5T?kYcnndOF9VqG% z`6hs~_V9}e6XPC#^Q-8GE-y`TWljfT)L5}FN~v4)r?905PqJl;*EVOoWObQ7nz{UX za=S`c+kzc8aAyWTZW`f*zZXw@X9GyNRm0OHR4{sm nL3 z2 j% e;n}s|YX~*|~njVA{>3oUVh{u|6YutnNLC=0rBzm#7p9hkb9;LNxQUB&5DO+q$ zxQdl<*yu pDQi&M9~0d6rcP-HVRTJrOJC&*8n%b#eMfGHFR_-b<{A_mW|=~? z-L_(Gf@r+OI&0$(zemus|9|6k|I@kV|Bu(PG5uE>`hR&HBm4h2y8p%3F>-J)GX6in zuBOvC!E|SpEUTu)R&}$@c5B^ot8GTAdT~~2>%URYOWx9s{&=VF-}8@OO#~}=K4Tu^ z_%32}iiBXM+Wg2Y1c90PmCUrn_<$&dxuNm#VTp-3vH3WqFf}woBf&Sdc_ SqKq;u@D)VkeHmDoQ0B*A-6ZYI5e}fxe$~psjHNgRn}k9x3Q4L z@dH1rKW{G0KO4x&-@Xo@nwx7|fVNqG;ctCzDqw(+*;4=^WoT=F!iJupvXUGQ!qAQ! zszQzdw0#Q;*@}H56I(+W3S&c<23H^jq^wO&B(1+M0Sg;*YoiBwOF0*RV@NJUEF`WC z;27H9F2L ^d;tHGGPge< zlRJyIwV~7cTYCmjZgO*SV{vG2^PzrCRFRS2*rko_`H%c zvd4;4BD(5fVDE0g;-fXXKe1@DO+ l;A}AcoMg^k(PZ?4*Rl zzc|ybKfa_tY>Hod!uS5r-9P{1UvlxkEz;jV@BBaJmW=4u)||qbJ;3+3IKuC46Bt{_ zzgtWp%prfY*yx$R>CySIq0OVe=?nha6~I3+Y7=wY$9yhH^WlD4#1_^sX=q^F;r>uG zIU}@N0Ax^Tb7N;AW#Oy-pU-ril~s^^3tL0z_vx#CEh&lViGh23E>ve|W9lt`2!o$? zC 4`BxiRphs?{Bw1pd*uG`%nH7AN2w;f39h)E^aLj ?7&C;Re$(%{<$uH#4#1M zjk%Nj#>Lk*7S@mMi@)jn_^pl6#Yg% YYCrsQe_5UY1Gok-y sh9S66jPy4PlvMWhZP#wn@%n}}4e$Ts8EYJ)FDsXg9%g@@1fs4Si@|oX zySY#uQ{yj$h1awKn SCyoo)BmIW!l?ACW!=E*=&QUuZpV0O4HZa8W5+ z2*d0rF%%mc!vhb6gYVGaGpRdx60XamdeT;^8FYgsm9)yMEmp}>^wE9!T~fhz?u})i z7rSC?qO=O^S`(+0A|eZ=rzUlB+kn?|0|P{O3c@~QikR=&Rz7piGRe#u>*ou|&oJD; z)V{PGD9)y~(4rxl@KPg`2(*Cf_LlBx?~3wzWUDC`MFCvI`f8o (0^*21@&}H(>vdTwg*CG}lxXkk$ z;{(BOLq?_)V>POBi|JqxkIIjP;%j&6w5%|bTc;`D&0{E|SxZ-7hHF=1!JDPFWbgHG z>`e=5xE$3FbU=?bGcBis=o>){1wfSv{D_CSE9&()adU`%Ia0|ryQ&GgNd+PvCF;m@Wo)Zu(^kX IzL+ zJD1OOx|aUwiogry WaW7a5xUpgP2epz)3AbSOx9VRBrX%(ByL&TqyDGFt z&wMAD$J&;EIIk*Y4Dc(@ +Kwrt^~D8~Hu ~xH? zVcM~sa`5x=0)k?ci2$L6B@7hR-Nq_&R`O*~VZPHS#GU9KHM)XkxohxTpRH++qaqcL z+JW`F i*&ps3)Skv{X;1`20lA8sc%mr)FHa_Z+Bz~=|-fO7`_H=x*Hd-vo? zhKIsTb%&I%=iyu*<|=_7El=8&)xfQxIR9U%ui-Q|S7glDq|xxd9qxq51Twjr;n6+k zNF9@_nR*8hQz( j@C}MH*AXG-tH6LPiIjL(ZVK}M+ewa z%@WcLk#@3mI>Ct!XYikFy5 >oYk+b0*VjV6F z`w*&&!*m)dm9=_Tui0(CAlZU@))C@Rzk{_rG}=S5G4zWRtvlneLZM5|&{hg~+M!Cu z$~pPr2lU#jJm~ AgEv z_7?!R5zZFHqSQ#eam#DUn+n+_dadBCok+wPZ 6$Mcir&UQ$1C>UqMPp8 z^3uP!s-bPGyrQr9$uV@H9K8bBSY*C#JrXVW*?;idjuQmJ;&(y_yyl=;5)OBCcT+({ z;3Ks|tE_>>C*`+R4cdXL_qH5I_9{`F^}ez+(%?xyd_^nR_m$_>8du#bdof`)s?HrK zU5r#8nsV-Oc2rSt5mhvIz3e%&>ES_y_d*&~Bf>qBxqO6e)q_4As}k0E<|O b?9~v73GR9uB7{t2}+nG_YENoQJu1oH6vWt0?F(UOWC&;+2YWprE|X zQ@XSZbw>&_bTZq{GV!2O&NX9#d10B=d=UZ~Sz>h(Mpr972MTdpE3i&?oku3GKbHI- z&(Rumg}5Y$%PTu5M}(f|rH}e_B?9686e;J=3cWlh2#^Be%e{I3r3OVW+v)i<%F)5Q z=crX6GLS6$xGcFAM3Mv>-ryX@@x6D$Q8}*5%L<{;HvwYlRqmP`sZDR|%pJp=y8>`a z4TQU)^V!iVzFn@DztMK+S?TvajM(|(mExe gbU5U!C@G=mJk|? o$4tF}KtAxC!K^ zzYeX~ZDQQ}?6ST}2A0@B@0xIDSO?>9O8piB 6fII@q-1QB=lQtkZICE3XH6nF*HnpNdDz+($kn}ty# kB%-%5b<#L)=9ETdeL1#;D7GElv~javZ6 z9eW|=Dz{WOto8=iE zYI$LNzox3T z2b)UPyixcFaD|l;MO7`CDF)svMW3c{+49)cG9 `ii*S~Dfyqmati4IjJ*E>Sq z=DuWo+9s8?&!8qSUzb(_5%0TBoRH*wv^HLLIaJI)Hn5J_*a`clz&TTYLg~CH)&6+J zIhvh*G?tBD4{J_L_zPJ-=UhvR7xM&v)Iu09cw3j6QbBkfK(HSZBK)av _`lqhYL$WWa=?YLBHcC2= zP46fp%afe(9={JJ
BNmZ}g-BK)AUmk2kHe6!0S1fCP8MT@={9_Q(kFHqC6M(DqC8Cv _OQ{`sLp;hR`<^HXa8q}T{c7;m4g4YZLh*NT`{cOUO7qygl9uaF`8Sa%-yQ{bI z1{s@Gz9NMcLj723rngS~7w44P?;VHdc3))mK89%BFS1rFmw{Hqbxfl z<&Z~ >$oXAS8(tL~-bLbiyt@DR8Tucg z5~SPYMvRXIR_WlDMOZ~&cb(rYzPan}(=OgQs2wyo5fmr}q=Nw9J57AeUkUJ*<+GZ2 zowU-)cO`xMHu<3(Ca|gpkY1a*66eRjC8-aXtkC+w`p}2)B&w53znMxp#!xTG&tihT ztwyrvr}*3E$VC*V1b$rAftNkLxE}9%b!C$l65w}Iz=$w6&v{Z{pNf}Ef%4^7Johud zjs*PBwnZ^El&)KnLe^mw$+j^B$7#zgG2rEU|Ildx{C@sd?+&}^rln&t$nZZcSxl_z zRDmQwaa9$Y?^Honazspr9tDhn@SwblwM!k*=*KS-jV8vqkW^``jug;3H^OQu>Rv`I z_47G$$Phg3tQUfmn_FEwpalh7WIpr?8AZT-2Ex$NO|viLP*Nj4H<(IhQ*EN}22#G% z$8Qr1*B@&|=f|-2hsguj-jq*Rz&-Bk>It >PF z@{E2QE6YnZyi|Dw;22iS3x@vJ6P70C5Q;HSs)g#~kSoxQ@S4-hkNiumS%IJa^rVDd zbcu)XP8^Kgn0J02q^G6HU8dg>S;~cAjuigpYu8L4W29 }_Yf!KC& zF<7f8z$AA9TF4CpL~{*h!VrIZcLL=>;9L=$0ChOOL=D%e4@8jqa#a3&We8jqkae%5 z6_t+J20$IfzO%T&>73nZYrao-?&P#g+AfUpVxGGNP_5m2r-Qr*HB(o;s2U5Aj)jlX zbBhL=IM8ccSPHU&7V%+3{Ej7AM#LsoGm@PoGT#v;+`dn5%}&)N)^Lnz-L8@39^GrK z;R&dRo`o}2^ra+c$5W!%fN2!@jpZVD)aE02;Q@ImL)HknL(CEtWMh|LF#AZ%*F2{P z ~-~m>$(X;S>=@k5p5@Z;>Fy(x)lc#2ACSziB!Yi_g(K6lz%!AMC)DwHa zvkTtM3TQrs;ReAn4&)7i0;VhrSCpikn)wYKd9`AeR$^W)LdR0u``IeAizDq8Kq#zx zwF8iw(sOWV%7nifI=qblglrpGvpB?-v}-8yEM}$^Sd-R{LVK?2pfKX)SyFQl$y#&1 zh>)L!*n?_3B(9sHgu!i~4PATn-it9S$x)Z24OU#AA9=I;vsIrO!@|j5AM3|szpF&= zfTX{OTJt+8msh$8NH=*kt9~XUnYSLoe02G<)bnX?z+A6P1!wX#F4iKi^?Qd1PGb05 zir%5-F7oAz(V}D6#7-_B>vsFG-l+X$Uc760#i`YJz8Uhwcf$in+bjsn%wiJUo{$0Y zA+Fn2BOf)F)jvLd!&8xKFz@b-@yPq*92QX*{p0P`?Wwft_FojHUqg%2;dWdbSA0N> z{^(|FlKmxBQWiY`sf+LP&Z>~JLEZ7?dAnSnQ;+Kh>B9pQCJG*=@a4o=FzmKCrEps8 zG0N60gSm$6{A_N3=yyX}g7m0wIO9HU#U$0o+D{E8?mg^-8_5s|uIp>{nh0?ME=VNB zn5ya$xD8*NXzx|*Pqr8t?3g4exYa@1N52vjdy!>bB(3fd xZXKy5}r9xeh3`ub9p8 zp8`1yO*Z=v)j< F|@W6SX*M zf) jj32s^Q{rdV9It=0wDGJ-{PA~|edx$t)RIU )7!ufqwbTA(9+RXC-ktw0YzLGxy zCAj7fObRNRI*JH{k9L7-WYZLTt%!(8^GpWTM?GoxfO<`b{tIkQ9m?l3pd*}^Ljb3= zNDb$YG Be$#AezVUX#?sUSA4wt3!@wthEy`tU|0H;pZwkNcu5 zLYZvhsk<+n#cFrgZ>i@$X2?3 npk`vu zH>8U;yX&65x_mK);u&J_`wv~=$7#J8qmROgn4I=upxV-wudx)wvD)@nngVh$XQ{oV z_#rBwlVtxu`9{oBrCiMkGEFwmiUdkj3BJ1Y3OoT#m$2Y@gFT9fe!)>$2Y?{z*v_+r zou}{CD9&ENS5^s-apGM>LT^ol>OY^@4eOMSog~$ht?G(wIC>*OrOhx-TKJR7cY=zI zch(=K3iBE|SJ)Sk{fQk%&NNY|p=L?U)siwnqvr=O!)QhM SEABJIUwTO28g2G)H9oa65GB IUXyCRC@ zi2RD5fW^;en$H`%sSai9a3DAP0I;Ko@kMYy>>w5emCgBpX|L>=kU~TrCMS;1fkf+B z$w<@(G5h1y4ow?u?aqh7bG6q2`SNtQK`PaMfbUqc0%B1|t)f4g%TUH$6MUNVBgijd zFB*bftnGzb6miNtPIhy8e?;=65g`wg1dz=m*_bIOi~CBKneoPhEzLWt$xQ9J0M-h^ z)JmTzv5;-=YSd2j-@phag(7!FHv$DfT|= mhH~ykH1MaO3M3X= z3QjFkPjY7{p>sT~^iDnVIm9?$gBGR;+gxfbebKfFXYd<;mi)fM7>8Y2BS-ZUaWedu zH4-DngrD)jT~;+;hSlTv)>=wj@FPH)B1U}i`fzygGNON6)jI~WX?vc`!Jx85@zh7O z<%pO8llq(4--}f+8vUcMVn7^?r5DN7D4T%?Vz%h!jz^yr#oB-CbUk#Y+DWfump91j zex `;>QkjglVXLA=n(=l);H>L~Fh0@{R z>+1q(EG(Bz^gOBe^5J2*fD>v8ZIfF0B{wVIKNvAN!Ux5e#Zbt{p7*2i{afOBZY4Z) zxol3@3tUmVFU@7tIY|3=h|nyS%vT1-G>tVN+O;=8aCfKfQNmuDJoR%x#v1=5ch0)R zbxtwJ<7DS{vq1*j8ads4Y!~XK9ql5Eo;s5XcZ!ze!H~wj4I3+TTlv)WKvh?-XWZPU zUOTi33p8s<%cwIR<&w-D0Gh_lMM6Ik1(=|3b@>6oQ6`R;@zs4cJ(nwe6MQ#P5S<>5 z7fb>|;^P}M^aAadP*RrpLt$eUSI`svKq&JpddCCh2G++rFx-gXsZ2N;ksm#q_crIz z3z+ol+A(dWsNP#VjT#8{Zdd?PT@03`T!WPe2Y=#@7r}br*U2~;^3bVbL!*?-`33KO#PmQ}b65DV@|3nn&F9FcS)ya%LHq1-07UP+ zLQJ8thrY%xD-2&`=V0K%YCal~*jva{$@o)o90Lsv1O*t@!BmQ?{N077=_A6IIY?fG zQ}LcT)0w1|Rz%}%+_bn<+4*Z!oFc;DoR1O0lsTw~C2snQXNv-swpj;Yu%dK&b^bot zP0#hA9x;^q?^Oq5-Xol>@TH?{V>TqC#lx>Y2oE};=Ao?hG%rr!0Zdy`SN#|(>=`qD z>sue^`c7kyX~A4?i9n3mQa=kPxZ&UAwwnmEL7D z3&)YjF#k)J>4dGz#WwPqWX1EkR={UQ-nlId|B#&g}2N zf&cDFgEe$ISoiw=Z5?H)=jfp546J$I$hCPBTo;lC*efHMHq@MYb?Kpr{7x$asWgsK zj~9qk{PtD3>D%sU)8q`v14@?sz&Ao&xh#5^dhL=RPJ$hhn|W2;THhqK%O$LK24~Xb zHDxkH%5X;;9Pln5WQM;rwib +8M_d}(T?ih%FoC;x#?1+2 zjlURD@(a~AQzS41;BVR4D3QuSf`|~wdiDLefSFkIM0*)`!M5lbl0e)EOivNk=G|d@ z{{r)&nyE$m<-{pjVTQ8(YiZ1ETV+croopX_cu*Ds6$k+t0Wm9?aPBzu6vKP?c>L#= z6b?8^1bKxQ(Qf%N&PK0$W0#32&z-ss#oo&I66F~6M~_8xZv7!#_ev?=Rb>EXmcKQK zxeog%#yR^kWZ!pOJlmP&zzd<_dmv(} `{tZvV6svSkPwj(WH4!giPqsn&$f230g=3vxEYmqgTiK1~up}h+sWg6U37V6u zAnt!#$XgMnh+i 6l)7^?ZoTBppeXlpji<0Zvgz~==Hhf$&0UjZepG#Aw3BKuvrAiOSiegL z^DP^)?AO9nz+Aj2=$)y?nMPAO >vJR4%}PGKDdn;Vlp&vFR6 X6ZZmkpmT2Qsh #kp@ZSVyPcOVX-26kK<^;9l0T`=mKK*|s+~LlosG~<%I_J_ z{>{J)KT>hR7LYbUK5#xj4&$HhojcvR+rvssF#tnHeR?7p>@p-~Oam>6Uv$vMBEl}6 z8qBO-gWc#f^Y;h$_?i%y-X*b!+gU1MkYsY7Fh;}?`sQ#=@%ubY3X>6wF!D3>@v;yd zboqr`s5(v?Iq^-N5gMa# &4%RJ$Psd;rwUSa6xQg2g#Hk|OJY(sLrx{L*FHS!; z^E+jK1a(MQUDQ_=k=yl(GcR<8TRqDJu#2uB&G^EsdN^|&(g9{$kXflX@r)$p@q0+t zC(SPFW%VsO8{I0WbxPN`36<1iN8_vzC~=MYHMjXz#(%EX8Eowk7{iWR^8qIoE3=oT zp =k$Rx#T6cI8UBZ7pJDi$tH*xUjWg9duJj@9TYzSG%5 zv3oyfCdAq)a}PQG*<3T>JlG}Oa^-+NNL0SG%gpFfraT6XPK!Y`o{{^s@4eAP76kdO z@@%!&65R6b7bQ0a7*uS41U?ZtV%N^I#U)V^U()^sn6oG}irc%kntdP|mXF`gan{v$ z*!wMJ?=S{wG}X)4Z&!cfas8?Yt+gkVfy$pg4eFiPFjhE)tFM9|zo7+9G5mt(Iha`q zm{SFsrr(Q#FMQok;Awaz`M<%c{|UL1?mkqG@Fm?&jD!&PC|P*m`sAJ5!k05g`P2QD zV(iI $j(WBX PI(L z#*28SrLBdFDByiKo>ab3O^D;e*QcTh`sGUA_e<9D*x=dDah?srWVjj@+9?(#8&NjN z(w`LqR9i~#!DDl`1SX}K^(RxR Kq$fql%6cwoJK`$ zjxRKp^z`Nfx1MLJj;#9}T*h8?b91;FEXxHKCr0ixd(bN>0S!<0-#=)5>m@+t?bi^r zV;+N#f#qN47&fWQdzBBYv0dF`mku%dfci&u7(y~q=-i|o=9E?wvwBK6lhgwtozGQs zm=*m8caI`(gd^o`@oL1KgdlQewZ0;&?Yo9dcTD}hBD#Vls{s Sk^?XCy?i2i=GvP{^qw00<29@bfQqS{mpRG_3@3H}@C x0L&YDZ^T|V23l9Wu0?c*XQA}UEbJ# z05SG_U63Z5!MvNJIWrv(0|C0ug&Z&Q>X@Hh^aBg^x$Xv=1aUik&vkQT#mvGBql*Nn ztecq#YYxtj3h~)QzoRFb(Y;=`VC}_{Y_TP#@f@2EBj><6iJrod){p zxT%(?qL0)TrYh?xWh1&?0i{UGxYzVRgA%>SvJW#GI%u?fj?VS Zkb1w1@ZM`G5Hz@JWSY&kTz5d1J+b?nE}V=1S0K%`5Q25CLNK7 zegzfBPL?}JPngRDS!Vivxn~vKGwwGH($EZFYA$D1wjL?hS{_l0W<7lZBjC{ (WQxE}Dshv0V{i2u+>_e?| !P5#xf?bw;<~hUD`I6hUA@+J{C5ZVv;15PCyOab2Z7U)MdaXK zz@md2#v=mSh{9a{GG6C4!{s-jrPMU#*Us%5AbDvy&lCJr^YC8!Myb BIKdLGV!WnqPLEC$WeJgFesZLqJiw81PUG&`gt2@sFMLoJ7B;?h77gi`BHI7yi zKM>Zcm622%)JiJZzj^84IsFyF;o_gBrh+jpFF5P1j6mr$9j6WluZC3wZ(b z?*M5M5v4ctE;p*OJbX$XuYtn4XxI-^aXvtfPCaK$cNp6W$o7FEo%$)$S|+eHvv(dO z!xkl((}YmdTm_m}3Q65h78Y%?VZohRIB8}g1jbxf=9~w!Cc(pN_Oj?=LJiz&QmaS$ z!t2!Ss}V?CSiqczwByDE)9ezOw(__@(WEeDb#u{Cv$N$@$0K?0?Agt33tPkeyV9q~ zXJT#c%|OcPo3#DM&o|T3VNRSEiUSR`$cHdt;n%9NcL+ZxC2=%+z7umr#5Nn}JeSly z!IdHCPc_d6Lpsr9bBdW;^xq@C9Lj!eC7d}Nwt54}g7C>ed|J7RMr-uPW=5~a_H>}2 zc~JzVpMcJIDP~dmJz^t*lRT0{mGT9t0m+%8zz?s9LtaPMRd0K`ZJ1k+{jEbnp5{Qz zy5>^W5bW&@Nc%iDFS_@p8y_$6?Bto0_5^1r6a^3k|3*}I9xNb2wv~NSycxr{yrg-P zyW9*ZhHAM&tm?j^glxvXuD>Nu$IZ}G)I>`gu)Yt|t(EU}U^Z{_)&E5!FN!kDq| FXAgO;+XQkdR*j~xzDs9Fog3P Wog(b66M`a(Bn229S ISX9}}bSmbW-)BVn zOyyx>jib=;0NA0Ff7ri|DrE0qe}`rm8E>uK@cvoDTNkh;h@S4ijxS-9zb|G03YaO1 z_d9w2iGX8?b0qRYUSht*#cRXr{&WOVMteS3)&39dE9LqDl_ddlN4-U01`cd#e{X7? zg$<4VeXf)ZmffWYB|xa4yzwB2YQ|ataoyhJu`bnVfYz_JOh^INgA1KN%RLKwfH@a4 z61&F*$!fWgIq8^QSAa%%GDZmVqV*%}r>VwjJ90Ho3AYf_lvD=?grL!p&~^5?-KWgp z0R4qh^ibd8#WBYCO9yGZx*o!!ST)QrL-Dnz*q%bw>$#*4gC*|}J$XySI65-myVZcU zjdsN9>t=MQ{yY54A7XsoadbM LAd zgtj0vMT$U8r3kbnHZ$>m^fvS52M6KiXm$ByU5HmZ$jjb$nV7SYBx?0oh@;X3!AR(> z5#I#s^FtGWvsD~oIk{CHc{*L5piKuf$B{LJ7d#~H#Hd!7r=h{@v!_13=$T!ull+U} zF)p4RsDT{A9MsedN?ycG;Zls;n; ^Q?Xe62iSR1I(u?%i{^u?ke zRa9UGGEo>_Q;C3k1A;HH8^cP5>q^cU5Ii*fqg0bvVX&}jt2t2yLc6Rx+Zz(h9@}Uw zXv0h-m4j!a-j^Qs!9U=qmvgJGfjYjf7kfsTw`jOtqwMvZoWfvvYq!c5V-0ASXJDs! zju}H6Evoy_d8a%Ftc8e0@-4lYV?=eGB=l38$%b3+zc%`)D1#WSnvRISfgTnJBS$mB z{g|AopO-$!kMYtu6NVk4K_8v%PDzp^xe$LrIHN2+^<1cuJ>z=vHXm_8dsZehkEExS zv1dyot#qzxC2E{Ab2EJ1NL`*=xi^eaJO*T j3#C=fA~z!XKG-gc|H2&!fvfC#tb z7twZhsBtJ-qJV5Zdrhc2QFv(mgAPN_4IAgg^#VY}TeJTx=}vD%U)8C7X-t?vkbcFa z(@*0*LWOp>vG0H5KtnM=m }vA5#2U7EHAM;!IG6TXJE}$-6k#Ye#QAd`v1MdYO=YXoa_(|@kCzF-YSE9K zf<%?MEi==>wF@~0k1s+WDt+6$!>!0|Hr!{c$uKe{nO>Neao{4DXrvo_&1do}?G8w1 zjV~0xdN D}A_M}_8cGD=jPEN8r$B}x0x&)JSbC?JakX1r z7PB2Pzu<;gfwK!Fyb7p#b3>^^KM;q_gaHixARu6AivlbykA_kyD6Leq&_7G{DXJlt z*`68BUzhfC(j=ssw#`T_ ~XoyCD%joAH12G|P+C^V`EqEBN%RWJOb)Kq=71D4= zCyEs*t$*0DY8#z=qKwM-+@JK0<6z; ;Bu%=P3Z|taCxgD+I|A=mncM ^ykZbX-iUs$oPJ@Sn2Hq7lOA1}T^@1ZRUK;A;jt zsRURb9co$fs_COM%F1>aO6*_|7KG|Shj*eCB!ItsL9rc uUS1t0@!UVS zuQ$IgCw%^qQeg;Ve~v1}h!zs36ZAva!8YVGOc6gwPTisa$*+WFMm;5s8}7Gb%YN$R z!tIy9V97zR5}z5UY9Y_gjsZ?QL&;o9UvjF-D4&G2E!O5NCt8D>Z^~pKjBP4TXTkn1 z4)y~hG$(NUEeSg_#E-W mE)brzl4np7(N!aZK#wZWwU!t?&%CJYm zG!!#(T@9C5h4T2~IT~!#?Hoq6P2T_+)Zg~F2*^sM^zrrY( !TK1B4or $$H(M( z0$m(yyU9GsPs5fkE$IzBjqtkoT^AunTn3dDbV5op&RO#;U=G1IU7)`oLs#D8kjTV% z%*_^-6qmYb(^+^H)>?D6Y58ShJFL!6J^RwdI8d7n;syZp5#7B?UZp7@2Xz8 bsS;(|zW6)qw?aH#7fyD#$g+kKA+Y zP2z^rWXpqvturvvKh7aH5(%(*1w`w6_|ksds&6EHrc{}16hLQF-SCg6mb(~-2y20~ zMkESi6K3j-s{Oil%guOKo-mgmS^(<=l+Q?N+=rtLd=>$Drx=O~Gi5{ONIyr3qC0g_ z5J|#B h-sZH z!6Se+sj3sx#5)MzU_@~!d=2pQJkbx5g04fa;dG6U_y8to@}?v7b~vMWAz|JZ8u>_G zH O9deV%HYqTHI=vpw|4ZCMaVf3t=oa3_q*ZRz{vZB!fn=>Dw1oqF?Ia4C9VoZMZ^NdW Dj{=;Ebi5l3^Zh{V<4WmgYKlXI zICd9Q2q}rQl6r$;!*T18)>tY(8@;y0Lb>^j|HIfl^a!^Fh#D^2wr$(CZQHi(s;_L@ zwr$(C&3i^S>7)n!3wBnr2aC_U??sKU#*LcR@1xToiu)-oK!vr@jB%ALr9PFb=2W3F zVVARxlfpN2jyTnna^VV{B-ki>ysesK_4;k_tJ>$C57t+NVtZxCRL{_zWq3q^2C~4= z?|mw2YsFbMc3vtS`rpxu?4Fx#9fzGodAdCKGaANgbX=gv0I }qe0MxO?e-haXjgL)M;{upSR evmehy6k{d2zH zA?_%q?i;;ydH}HneBrE_?+mLTvSSBYBt!N2ys+4K*)pcN2C7kz(Q;$cuDpHTFfKYO zZwZdN_7#a>Y({BP=R)>!8>prr9$d|D_ %R;Em8vs-f0=k%+Uk16av zi3;2Vls^O#ElBc{3VDonpJ1q@Vt5Kt@wvcD336}^#$ub!*E;#+MDNt+%m*LWQsC}# z64XdyH(EJlR 33pTe2upJVl7} z{48l+6>41IHrT+UIQ2E7^TZ~nE$fGeRloHD>w88$B|+4|J%i1{2T>{bu56RzdGjlZ zd*6N6DYPGv)e(an7Qz`H{A-rz03IL)miqVTDj!;@vZBely5=T4lkz8T!iuls!@6bb zUW~#?TeqPC^t)%~qHmAOlpsUq^ik8F76SbwJJZu(3PpfF1q;M*gk#BnoT2MV;<>uG z<~zjEt~f1BC|VnJxj)8$&E^x@UAWK?F|8?@634BS7bluZiIe+R4Dej1lr)lw-Dnwi zsD1LU;CIcQ+$w3W>$SpPAb=MS%7)1-OT$qj!BO@1^#idx=4a&s$GOJE99SbLs#+W= z9a>g~rx%#9>i{8#w=(xW9wQ3hXGA@bjnN>BUe3udEyn7i6AQg4r~(oEyL88pZ9QwG zY0?02z*9QTaBWQV(#&@E|8h4~#-HCZyt&j|H(AZ<_2|gpw-!HeYmQvbQQYoe3JkNJ zV(ojmX5uE3AlXuCg$Gp2MI%tGu}ZL$oygeBp1`Jtmx#DZMZJx}V%BlfhUSwuEcX@u zL=8{I>^FicLDF}16QpK!t?b2{#$yp-TyX6J4Xq>TMj;8OcLZ3!qD_ztnLrMrPlM?# z5EIf8aX8%djc9t6=JG7otUO%bRs|5Kp%pEg`nILKgFC`xM)^gScekY*rtQgb*Vxz4 zK(kgfx+H9j_XrMh^F|Zp;qH+{{~Q*N{Z$o8_6%`{O} RjK(P8&)o3NzchjPliVH?4fi$9QF3*C|yvlq6Wy^o2?l#9ilY3 zOX+0ZV@KQG-*#*`#GDp%c@rhRt}cT5{@ndNH=(ILtE!Tt?ffIwHG6gw57{sDE2+Fk zqN|hPa6N|vCRY~Bs`yy^W(9_XZnoq0dHn5C2%yNF@g_Y1iMhpF{XhSEUqQ3@6#Sf% zdr=}~+-5avee-1gbWg@lJu+c*r9}QF$8m!CQDm>_-df7#tLot^(pf5bz+}YhtW_h@ z;5LBGiFw5|HlT ji* zj^`}$l8BGFe1<|m&{W{(fY|QmGDY+*_mip?A8f-GpiaJGxqN2)mHr*|`5r<+qv$yc zMM)-YJ5Z39oWWp9z7vgEORymJX3EkdbtwRicN;ovqm{p#x7t%|%Qwkk!4>5dx|60p zL-Mg*TS;5OX`z{Is*K|Rr<`=&j^$+Ozu6}yORnJ2I~B#YBE-jT$AmRSYZ%fvdC-}& z nZt^aOu*eff z9kO-w?z7*tVpfUwK}*?F?&n`<$h8vjo%CBs=SXAtG92{GH0MoCbUDW8?~y#acMOhE zh_!R)ca)m&jo?LQo<9f$*6XCTK&;}9%n)O>YH7j#t)SGrP{EaTI|%5KrDxoe{4ivN zN)v gO$9(^5f7vESYL7OLnY<0Zat*$laS*~+_T;TU* ztsnV%3?Z7-D{hFQpmGlt2HupIg pq^)9IY3DXH1i+G_3^pRs79whQ+RDy(+ey3ZDW++6nHqrq32o z)i;C7ENnMBNT=JwZ)SLv)M=E#tFleiEiPJhbz)JzZ zlely~-wLfFi`R` #KmY z{5pC=rGhw$g96Bc)A91G>TOuQ7UdnTi`O(~9^onb7=J3h%w}dX2Mt5B2%^&L1^kTV z!VcoF%aI&)DO{7dKWMT>IJ*z!{y5U<2YkyAib8|3-> nZ5p)6J5g>~H7)qa&1d)d2dWMc@l^9b 1=K7 zs=&YNf|lgPZw~e`uXObJTFBJbi6CozyUSLg>IP$S{mSC$sT|ck{=4i8%|R*I3-5zk z>(_5;?gdNpa1v?mv}5)vqE?iLl`0YXq~fpZmD4|!xsP$1FRu7Nscc1{Z2V%pIF4Vl zgA(6c_{!~5XZa7*!aNidB5@`eIy%PTANGF{?^V%aKfa^3*(6^7OkkaxaBQp0nu8tq z6Bcxj)XMHUTY`sg_|_=$OX^G=e2MQ&KGF+=zbs|)ldd8R1AU6~ebb1XBX7?11lt0) z<{HheaNBnX^?5Jj^`6TS+&J52aLr_MR+js4dlbE+REBPp Ivk3JG zMCs5d+lg2%e0nP!)uid0meXhOq{>xL!$62_ny&N%{oIVg0QXBWwQ?&JwR}qUG&~$M zBJaZ+rdVlw> @}1200S H_gqt8tVqiVpF9{Q#3{o|2= rv z{ys8^%(^a>@5B%c0W$*N5u)e)s0yN8F~0@||DBb;LL?(bOvCL9tc$BX8`vKuYC+6L z>{Jp*yu1nB&6eWf#Q2}FWJE4ea9j2;Csw@cN3Ge$G&lN|VI}vfeWD_-K`px)1L#U~ zFx#*j-0L?b)u;N7m&@{2E}#0n0O#0NTxa)9s645`MpDx`0?0GpozkeYYRQLdWj0+0 zP+DmVV3Mpu)rwq>hT;wd-2|&K+=t!k-h&&zpPnF< ettge&G2oYxI++aZ-szP^+xA z(5_~VH9{ a4Mj@mr(p2v_3%6TmZRq?$zqQ3zgI4TXjcDFoC_{ECUm(~=m3@EQie3X=O{>5u$h zypW-dS|}f@^Fx26DEEaF+>9qst3=^D>-E)*1Y6ku>K+BN>-z(OcZ9CtSQr;vhswr= z2-O{ux1Dif5lFVBI{ei6niR=M0)k{ib_pZTjh#{Cgig#W1i5wmeQp)W2*&o9x3X#m zLaSG5$#-HeZJJAD6sA>hjsAY3=YThuwf*kTE07yQiB9ZmE-mYuRPwYrelmf-m(7v+ zAR2T-|6JT3W=eC1J|>v-_r&0m6B&Fk&5i@0o55#@gGf?(v+zed=`~~w>){Z(xB;cn zx_W?@uTQ-w#B5z`te-p)`Nc_gtu Uh0LTMH2AkvDj$yIKE!>E zHUEeJt5IdbgFOnk^sQt_?CY()4GUz@>gSE&PM<1d2@r7eWKt4WFSvSD9F;q3*-$z) zxL2#K_kelMVGRF%o*)9(3^Z3y{Y#>`Gx|~7d_gg_Ny|^vv^coDrq%h9#xY|ehSDCg zXJMd&Hx(Vxm(3SCnxd4)%3{8^xCyUjAu@}Gr&6!k8^i+|ZsAj|I@LTyN_Wr~X!nYp z;PlJG5fLEFQ3XzZw$041O& >mR!8Gfd06?tiG%6#36{5X~F zL`&t20OpY2`zr?{8({*o4z-m*K_E%Sfl?Gc+D&Cs*n6)1O22YUpZ7EhRgHG`ccv!4 z06!*Xml)L-e{w>yaLB4~#yL;OHEr>gG?Eqmr zH%Q0F>#eg~ymQx|%Ue8_agTB?<($rwuBc>X^(ciE7z^Vcl#7F*iK)>6Foo7uRy$V} z&<$!}_hU@uX=-gipOYMjl$2vaM?*C0yx`#aNH%=FsU27X13PGa1E7Ydrzau>;GuxH zd_qe}3Uq*&uxfN_Ztg)J$zM8v49}nN)7sL;<|3fL%iF-rHr%;|{q6oE`r+TY;> 6U%=Xao_5(gDaQ_01iT%y>_Zz0c4NN@ jCU+;mub67;`{x~xZuNh{ zQ{;`!k2)-X)^`gFaAxPP@?xKh|9{| ?u{b<{sUU}emu{+K8XN@?`%P9EC3TeQc zADBfpFtZEnuZD2>z(x{y@*ibd`r}Ue!&mtJ3)%l8fBxM|{MzIE%+ovk+j{%x6ZUs) zX;Nls{o@As+hq*slOA0Mymy}iI0pQq!QwWa|C<|I-`$*j@;`got7)13%enmnlNlX( zx7QZ=Z!k(jgTs&Z1uakN*6_~Erq<}n)B&LlJA1i5(zOQ$W^j#7ZVZ1@H+`E>1}3J4 zANE|X)Yi({;r KVMl0^w{Bde?-T90UCc-)dtr =kJ!pvyqsKg>jK9#t{BmqHnt{*S&c z9&|Zez4+scKX_L|twp!8%zZQ@&!lBH^g>(3mxrZ)xWhK@xSUTi)T3WkihkHqY0;uj zZ@0-&m4+MGFbi{ZZV1~e$hH6-+KK>VBSlB({7cWH9@Y5eGY01`BW30)6Jzr6%fd%R z#6vyo^FQDq&z=wW$={ 9aVX*wErn71tt8>_)?@TsL z>Yhi{i11lOX(deK(j0Ak^DLGk#o=g8u0u#O#jKhh3e2i5EJdK^?VMQmp_HVdy&}=e z;4$i@*HOu%SZ*EfNJEgX0W0O^Fl@)Ul+1AuTEa}Djd-2nJKT`<5fSI>AqzPpJcGTJ zY7WDYcaZzS#kOq5(W-J=Ds%DGf x4*<#Nn-gE*|rUsx#DAC>>i!XC~{54rBu 4ek^>AgxhKWeLJPMK=62Bd}}5({RE4-$!jG zjNFN|t6=va_U{&BM^~CGeCT45n!_X5HFsXp{IhlgQ2&4nF5nZDPI?vR4=`j!FWTYn zj!sj1k`)s4gGGDyWV@g74mZ~hbD-jinAI!q){`&V8IQpJJyFvRR1OcjO*f}XP{Tsu z2>WW4YnO 6P$a)9+|d J%gS9J-`l2PV zmlp*A8>|*^+<~v`xjkf*jBLn16+PTf8VcO`$O;Z;WgD}LDL=FQrk5`8!}jtha85xo zR!N=P8Tl2G1TVm{0J?V+4emz%Q25~vdfh_`KWOtt{irhRjE=%>KGa8R{A7YLeeq1M zr^dtu`|u1TH>*a$-u%_RhptK`SJ!3&9>_wvyMA#ZEn7kllof}T_wC5+G&^6Rv3CsQ zMJz^5XrI*DK;Y+(c{%bKkLmm3 q*VqR0b< zWW=)+9%qOS@57qm)1H%@vrNlAXfvCJO)uE9XTYYUJQeCDpB{@eVEs7KsVYn;GOYmQ zy7f04duLX!1AExtS<-X?>Hem$n1j?48cJ2RhWl?FNYt1dExLDaKuL!v5X9ppqS09* z!FU3B-;i!A`*}}T9K)v+-%fk3i$#og8wNL1FV2+U0?YM5xkz?``^%*$=jukh@)K 5=ayMOa#^L7DbQh93{u_AWSHNcf;D{z%U%3eA;QLF=#2U|CsA(HjIQ{e zfcj!|;*+vMGeUl#{^#>sp?WL@5|^Xv@!TpQZb2+BwMKBeVfR~n$#NAo7@PHd#ZZzE zb*z`C4NU~J`(LCN{4Th}HiCMCpHqBy7r}+R-(dLT>l3hE$TF*OOaOwZs13gPTh!V2 z*LpY@gHq(Uo_MhnQYLvwZ`HuN=KUpDhg_Qbt*K`NW^~5A1~%ICJ=4H`H~oG@CinC<&=d8k zKbd*eamu^+$vAUMds77gr&Z5gFUoEs8_pjvvhB3&WdluLcIbY~OLNn@H6Y>Qt>DFR z{U=qD-VVmpcZW1^U6nlKf($-u_?v8ovT|9HNj-5 x^sba?XsACa>v zGD!R5TVbD*n;PXOzS1LkN2*FgN&u8O8C_FE1cKl4pxUlE0wwI`t3Hb;?(Hm-8P3hVdHO7p>v70IR)H3XwkB;A{_)e}V zrZ_%!iP6?iLPHEC-VvO)L|%F9rZqCXT^aH~KxrKgyAKV+mUK>82ZHsvQk>+60lHpU z28P v5Q9(LEkP{oUu2Y@!ZgSnaK#5+tt`U@itDRf!HbsNRWFz zR5K3&Jha_5+d@wgm}u^H^YzKa)nb80Qn;0~gOZ0#VG3x!2Br~@`*I~W^FGn!xQ_X~ zn*$q C*pTX^!|q-B$!%tWsIbYcUaxo2H44{L-~5j7s!Kchp$n4^iIHBIdO8TgGy>xQ8W zmb^rWcxqxNWS9FF9@jMN?LPKrJTc1q)w47uA~|?bmFil~i~})5<@$YTn@BS;$Qe=H z4vBLDPWwv9bURap^^AcCgIH91X|8zS=2xCg_zBZ+da)BX%L0!Z*?H+4KmK%UAFY0p z|1?ES8l(IF9Fav?uB*(4gtB{U+5?Ipl!4lba9y`Ahu4new`46eYn+FzwGhQs2ih)4 zOJ*8<8aa?u$vMIey@IGoBx^)Rr^wU}5n8?CdTr!#b#wo2%>>ktA1=a~cU~dOoalA! zh8AP^`2=N%MYK@hVHC>tLHL|T97K4^K cN5X={S+cGSfvOBOPtIx>^Et|AA8ve{BU|7-Lh$$Iy-h((+2)ty z`B&)=Cv{s%VemoFim9Nt4Y=gFV%!W`Hf}DDb)3{&U@gxj4%(AnjrljVR?!q_h0mFE z< O@qJ5;RSFe7}vI2SA}&4yp-`_H@q); zXgZ!f6 G5h}V_6yI70o52qPGL5(W|BS>J^Hp5c^(RY`_a&>lgZJ%`ymAy_V>c z&xs4lq%r3{>P~bm6rFVh2%a9lM~AI7c0Q}jh8A^#ly1)m*Zu@-NN?01y3SJAWhf(* zt|JS7PqB)$v&)^egf}099aPK*@4=`^AlZiG$bl)a-Gl?IiyYi|JQUq?T|uame89 z+c66jA1C(BfW_qO;s`pi48urxF?dOY>e2}Uw %wQ zc{I_v!uJV!!@?!CUgVJ{>IW?%YDwElNxlohnUsG{8Bqja?xuu2J`vx<4pjz+N~OJl zgp@Xy{CgOLU3r47%3Y0$>(AD@Di{PUvlg~I3&c5h$hjQRC{QDVNn2=y(AYX4SBNv9 zpfX`tq3SPHR5Rf1{5HJ_jX_X_x=UEQ|ETTf?RJ0-R#$GI{6%SgCKGrW;|YywJbCo{ zMF*cqU})E~mEZnQ0ZueqeJejCV^V1aSTGjc!Ko63 w_!kl1Zy5Sur{I_l dGbR!StN~Pon%i48(@Cjl!8Y2js=&CaqRp&UV*^uFEy36!%kG1DQQZ zjmmLNILG3i4RaV ;sX8NKFG`Ge7sgr1%jc84L4MUY1l!Wub zBWnoB+fSD?M1z;_=4^{iA*DhL#Tz4Vy@hpld%LZEt(HrC5ay=&Ck~6v0!<<{Q3Gv5 zw%ou|sJg4W&>IFc9V2Qunt=3a06$GJPfRKh-n|!TEIp2DqEb&Yfg4`M#lPZNW%+W{ z=b55M+gS9(t4n)as>1$wj$r6J)Bg1aokC}1I6RDb4TzXG3OF&hx3DEZl=8dF*+dXc zJ!3%y3>qSgngbH1Q&C5(#OV5;b|3CpS&q0hnVnXE`8jGW!u%WHrgpd@_o>ud#^fKd!BHD z;o9Os#=+{x&3O>|#r;X`O90C6+M40lL@<$x%VV;Q!yM+`5SpoT-msq9wKRS-FJX!J zN3<22b1fv&8g!5%iy_36GJT~xqyopOo+0C?qYdteN92zlUR#N#4i;ee4_G-233M4K z_P>$lgfFHu Pj0O@0CSCvwzhOd>cxz6&jyfqwKOtP|+6oVZEcr?8q zP@sLprVnsud*2u6>_^0i=0jXGGL++nSQD+0gKr&PO+_qji_^C;Xk+v2Vsx#Pfkr7r z+}~;H-EW}o7AIaqO%zf&Bs*DXOZE6%!5oMO&0r__Sfz>(36%GJcO`kk9>Vkr>i+Lh zD;N!V8QHgmX(0CaCW?Z?nr}^tRMD=m($#_DPSqA$qTxJpP^&3?