From 810189732befa2a5a7feb139c935bbd4dfc400a2 Mon Sep 17 00:00:00 2001 From: Anuradha Karuppiah <26330987+AnuradhaKaruppiah@users.noreply.github.com> Date: Tue, 18 Aug 2026 11:34:32 -0700 Subject: [PATCH] feat: normalize the adapter invocation contract (#241) #### Overview - Publish the repository adapter-contract documentation as the maintained, incremental guide for harness adapters and custom-agent integrations. - Normalize the southbound lifecycle around `AgentConfig`, `AgentRunRequest`, `RuntimeContext`, and `AgentRunResult`. - Migrate all five bundled adapters, the NVIDIA NeMo Agent Toolkit adapter, and the LangGraph custom-agent example to the typed request and result boundary. - Keep request projection and consumer-facing result enrichment in the NeMo Fabric core, and remove the redundant descriptor input selector. - Regenerate the JSON Schemas, Python and TypeScript bindings, and Rust API reference; update the public authoring skill, release notes, examples, and repository overview. Adapters now receive `AgentConfig` at startup, receive `AgentRunRequest` and `RuntimeContext` for each invocation, and return one typed `AgentRunResult`. Adapter authors can follow the staged guide and use Hermes Agent as the complete harness reference, mini-SWE-agent as the minimum-surface example, NVIDIA NeMo Agent Toolkit as the shared-framework example, or the LangGraph email-phishing analyzer as the dedicated custom-agent example. #### Where Should the Reviewer Start? Start with `docs/adapter-contract/README.md` for the reader path and minimum surface, then review `docs/adapter-contract/execution.md` and `crates/fabric-core/src/agent_execution.rs` for the typed lifecycle boundary. #### Validation - Full Python and Rust workspace suites passed. - TypeScript generation, generated-file, type, dependency, audit, and package checks passed. - Documentation copyright, API reference, strict link, and Mermaid render checks passed. - Final review fixes: 131 focused adapter tests and the artifact-collision Rust regression test passed. Relates to #228 Closes FABRIC-211 Closes FABRIC-212 - [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license. - [x] I searched existing issues and open pull requests, and this does not duplicate existing work. ## Summary by CodeRabbit * **New Features** * Added configurable Adapter Targets for harnesses, shared frameworks, and custom agents. * Standardized invocation results with statuses, structured errors, artifacts, token usage, and cost details. * Added optional native OpenAI streaming and adapter extension validation. * Added normalized usage details to SDK run results. * Expanded custom-agent, MCP, LangGraph, and mini-SWE-agent integration support. * **Documentation** * Updated Fabric 0.2 and v1alpha2 adapter contract guidance. * Added examples, discovery guidance, streaming instructions, and adapter verification checklists. * Clarified configuration and lifecycle requirements for adapter integrations. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Ajay Thorve (https://github.com/AjayThorve) - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv) - https://github.com/lvojtku URL: https://github.com/NVIDIA/NeMo-Fabric/pull/241 --- README.md | 251 ++++++------ adapter-contract/python/pypi.md | 14 +- .../nemo_fabric_adapter_contract/models.py | 4 +- adapter-contract/typescript/README.md | 10 +- .../schemas/adapter-descriptor.schema.json | 19 +- .../schemas/agent-run-request.schema.json | 2 +- .../schemas/agent-run-result.schema.json | 2 +- .../src/generated/adapter-descriptor.ts | 4 - .../src/generated/agent-run-request.ts | 5 +- adapter-contract/typescript/src/index.ts | 8 +- .../typescript/test/stable.test.ts | 3 - adapters/README.md | 25 +- adapters/claude/claude.fabric-adapter.json | 14 +- adapters/claude/pypi.md | 2 +- .../nemo_fabric_adapters/claude/adapter.py | 101 +++-- adapters/claude/uv.lock | 6 + adapters/codex/codex.fabric-adapter.json | 14 +- adapters/codex/pypi.md | 2 +- .../src/nemo_fabric_adapters/codex/adapter.py | 94 +++-- adapters/codex/uv.lock | 6 + adapters/common/README.md | 55 ++- adapters/common/pypi.md | 2 +- adapters/common/pyproject.toml | 6 + .../nemo_fabric_adapters/common/lifecycle.py | 72 +++- .../src/nemo_fabric_adapters/common/utils.py | 22 +- adapters/common/uv.lock | 15 + .../deepagents/deepagents.fabric-adapter.json | 1 - adapters/deepagents/pypi.md | 2 +- .../deepagents/adapter.py | 84 +++- adapters/deepagents/uv.lock | 6 + adapters/hermes/hermes.fabric-adapter.json | 11 +- adapters/hermes/pypi.md | 2 +- .../nemo_fabric_adapters/hermes/adapter.py | 45 ++- adapters/hermes/uv.lock | 6 + .../mini-swe-agent.fabric-adapter.json | 1 - .../mini_swe_agent/adapter.py | 37 +- adapters/mini-swe-agent/uv.lock | 6 + assets/fabric-hero-option2.png | Bin 1689531 -> 0 bytes assets/fabric-hero.png | Bin 0 -> 1695531 bytes .../claude/claude.fabric-adapter.json | 14 +- .../adapters/codex/codex.fabric-adapter.json | 14 +- .../deepagents/deepagents.fabric-adapter.json | 1 - .../hermes/hermes.fabric-adapter.json | 11 +- .../assets/adapters/scripted/run.py | 7 +- crates/fabric-core/src/agent_execution.rs | 10 +- crates/fabric-core/src/config.rs | 167 +++++++- crates/fabric-core/src/lib.rs | 16 +- crates/fabric-core/src/runtime.rs | 358 ++++++++++++++---- docs/about-nemo-fabric/overview.mdx | 37 +- docs/about-nemo-fabric/release-notes.mdx | 123 +++--- docs/adapter-contract/README.md | 195 ++++++---- docs/adapter-contract/adapter-descriptor.md | 223 ++++++----- docs/adapter-contract/conformance.md | 106 +++--- docs/adapter-contract/custom-agents.md | 210 +++++----- docs/adapter-contract/examples.md | 104 +++++ docs/adapter-contract/execution.md | 283 ++++++-------- .../normalized-configuration.md | 237 +++++++----- docs/adapter-contract/openai-streaming.md | 94 +++++ .../registration-and-discovery.md | 130 ++++--- docs/adapter-contract/results.md | 158 ++++---- docs/index.yml | 10 +- .../api/python-library-reference/index.md | 1 + .../nemo_fabric.types.md | 76 ++++ .../agent-config/struct-agentconfig.mdx | 2 +- .../struct-agentharnessconfig.mdx | 2 +- .../struct-agentinstructionconfig.mdx | 2 +- .../struct-agentinstructionsconfig.mdx | 2 +- .../agent-config/struct-agentmcpconfig.mdx | 2 +- .../struct-agentmcpserverconfig.mdx | 2 +- .../agent-config/struct-agentmodelconfig.mdx | 2 +- .../struct-agentruntimeconfig.mdx | 2 +- .../agent-config/struct-agentskillconfig.mdx | 2 +- .../struct-agenttooldefinition.mdx | 2 +- .../agent-config/struct-agenttoolsconfig.mdx | 2 +- .../struct-agentworkflowconfig.mdx | 2 +- .../struct-agentworkflowentrypointconfig.mdx | 2 +- .../agent-execution/index.mdx | 4 +- .../struct-agentrunrequest.mdx | 6 +- .../agent-execution/struct-agentrunresult.mdx | 6 +- .../config/enum-adapterkind.mdx | 2 +- .../config/enum-adaptertarget.mdx | 2 +- .../config/enum-adaptertargettype.mdx | 2 +- .../config/enum-capabilitykind.mdx | 2 +- .../config/enum-capabilitytarget.mdx | 2 +- .../config/enum-controllocation.mdx | 2 +- .../config/enum-descriptorsource.mdx | 2 +- .../config/enum-environmentownership.mdx | 2 +- .../config/enum-instructionmode.mdx | 2 +- .../config/enum-mcpauthenticationconfig.mdx | 2 +- .../config/enum-mcpexposure.mdx | 2 +- .../config/enum-mcptransport.mdx | 2 +- .../enum-oauthtokenendpointauthmethod.mdx | 2 +- .../config/enum-relayatifstorageconfig.mdx | 2 +- .../config/enum-relayatofmode.mdx | 2 +- .../config/enum-relayatofsinkconfig.mdx | 2 +- .../enum-relayatofstreamfieldnamepolicy.mdx | 2 +- .../config/enum-relayatofstreamtransport.mdx | 2 +- .../enum-relayopentelemetryendpointtype.mdx | 2 +- .../enum-relayopentelemetrymarkprojection.mdx | 2 +- .../config/enum-relayotlptransport.mdx | 2 +- .../config/enum-relayunsupportedbehavior.mdx | 2 +- .../config/enum-resolutionstrategy.mdx | 2 +- .../config/enum-telemetryprovider.mdx | 2 +- .../config/fn-load-adapter-descriptor.mdx | 2 +- .../fn-load-adapter-target-descriptor.mdx | 2 +- .../fn-resolve-run-plan-from-config.mdx | 2 +- .../nemo-fabric-core/config/index.mdx | 1 - .../config/struct-adapterconfigsupport.mdx | 8 +- .../config/struct-adapterdescriptor.mdx | 2 +- .../config/struct-adapterrequirements.mdx | 2 +- .../config/struct-adaptertargetdescriptor.mdx | 2 +- ...struct-adaptertelemetryprovidersupport.mdx | 2 +- .../config/struct-adaptertelemetrysupport.mdx | 2 +- .../config/struct-capabilityplan.mdx | 2 +- .../config/struct-descriptorprovenance.mdx | 2 +- .../config/struct-discoveryconfig.mdx | 2 +- .../config/struct-environmentconfig.mdx | 2 +- .../config/struct-environmentplan.mdx | 2 +- .../config/struct-fabricconfig.mdx | 2 +- .../config/struct-harnessconfig.mdx | 2 +- .../config/struct-instructionconfig.mdx | 2 +- .../config/struct-instructionsconfig.mdx | 2 +- .../config/struct-mcpconfig.mdx | 2 +- .../config/struct-mcpserverplan.mdx | 2 +- .../config/struct-metadataconfig.mdx | 2 +- .../config/struct-modelconfig.mdx | 2 +- .../config/struct-resolvecontext.mdx | 2 +- .../struct-resolvedadapterdescriptor.mdx | 2 +- ...struct-resolvedadaptertargetdescriptor.mdx | 2 +- .../config/struct-runplan.mdx | 2 +- .../config/struct-runtimecapabilities.mdx | 2 +- .../config/struct-runtimeconfig.mdx | 2 +- .../config/struct-skillconfig.mdx | 2 +- .../config/struct-telemetryconfig.mdx | 2 +- .../config/struct-telemetryplan.mdx | 2 +- .../config/struct-telemetryproviderconfig.mdx | 2 +- .../config/struct-tooldefinitionconfig.mdx | 2 +- .../config/struct-toolsconfig.mdx | 2 +- .../config/struct-workflowconfig.mdx | 2 +- .../struct-workflowentrypointconfig.mdx | 2 +- .../config/struct-workflowtargetspec.mdx | 2 +- .../doctor/enum-doctorstatus.mdx | 2 +- .../doctor/fn-doctor-plan.mdx | 2 +- .../doctor/struct-doctorcheck.mdx | 2 +- .../doctor/struct-doctorreport.mdx | 2 +- .../error/enum-fabricerror.mdx | 2 +- .../nemo-fabric-core/error/type-result.mdx | 2 +- .../nemo-fabric-core/index.mdx | 2 +- .../runtime/enum-errorstage.mdx | 2 +- .../enum-openaichatcompletionchunkobject.mdx | 2 +- .../runtime/enum-openaistreamhost.mdx | 2 +- .../runtime/enum-openaistreamprofile.mdx | 2 +- .../enum-openaistreamprotocolversion.mdx | 2 +- .../runtime/enum-openaistreamrecord.mdx | 2 +- .../runtime/enum-runstatus.mdx | 2 +- .../runtime/fn-invoke-openai-stream.mdx | 2 +- .../runtime/fn-invoke-runtime.mdx | 2 +- .../runtime/fn-prepare-environment.mdx | 2 +- .../nemo-fabric-core/runtime/fn-run-plan.mdx | 2 +- .../runtime/fn-start-runtime.mdx | 2 +- .../runtime/fn-stop-runtime.mdx | 2 +- .../nemo-fabric-core/runtime/index.mdx | 1 + .../runtime/struct-adapterinvocation.mdx | 4 +- .../runtime/struct-openaistreaminvocation.mdx | 4 +- .../runtime/struct-runresult.mdx | 6 +- .../runtime/struct-runtimecontext.mdx | 2 +- .../runtime/struct-runtimehandle.mdx | 2 +- .../struct-runtimetelemetrycontext.mdx | 2 +- .../struct-runusage.mdx} | 84 ++-- .../runtime/struct-telemetryref.mdx | 2 +- docs/sdk/python.mdx | 14 +- .../fabric/adapters/scripted/run.py | 14 +- .../claude/claude.fabric-adapter.json | 14 +- .../hermes/hermes.fabric-adapter.json | 11 +- examples/langgraph_custom_agent/README.md | 1 - .../email-phishing.fabric-adapter.json | 1 - .../langgraph_custom_agent/adapter/runtime.py | 37 +- external/nat/nat.fabric-adapter.json | 1 - .../src/nemo_fabric_adapters/nat/adapter.py | 110 +++--- schemas/SCHEMA.md | 23 +- .../adapter-descriptor.schema.json | 19 +- .../adapter-invocation.schema.json | 50 ++- .../agent-run-request.schema.json | 2 +- .../agent-run-result.schema.json | 2 +- .../openai-stream-invocation.schema.json | 50 ++- schemas/sdk/run-plan.schema.json | 19 +- schemas/sdk/run-result.schema.json | 59 +++ sdk/python/nemo-fabric-runtime/pypi.md | 2 +- .../src/nemo_fabric/__init__.py | 2 + .../src/nemo_fabric/types.py | 214 +++++++++-- sdk/python/nemo-fabric/pypi.md | 17 +- sdk/python/nemo-fabric/uv.lock | 6 + skills/nemo-fabric-build-adapter/SKILL.md | 104 +++-- .../references/results-and-errors.md | 13 + tests/adapters/test_adapaters_common_utils.py | 7 - .../test_adapters_common_lifecycle.py | 145 ++++--- tests/adapters/test_claude_adapter.py | 97 +++-- tests/adapters/test_codex_adapter.py | 60 ++- tests/adapters/test_deepagents.py | 102 ++++- tests/adapters/test_external_nat_adapter.py | 195 +++++----- tests/adapters/test_hermes_adapter.py | 122 ++++-- tests/adapters/test_hermes_streaming.py | 33 +- tests/adapters/test_mini_swe_agent.py | 35 +- tests/e2e/test_hermes_e2e.py | 3 +- .../langgraph_custom_agent/test_adapter.py | 103 +++-- .../langgraph_custom_agent/test_contract.py | 1 - .../hermes-shim.fabric-adapter.json | 10 + .../hermes_shim/adapter.py | 50 ++- tests/python/test_sdk_contract.py | 108 ++++-- uv.lock | 6 + 210 files changed, 3691 insertions(+), 2033 deletions(-) delete mode 100644 assets/fabric-hero-option2.png create mode 100644 assets/fabric-hero.png create mode 100644 docs/adapter-contract/examples.md create mode 100644 docs/adapter-contract/openai-streaming.md rename docs/reference/api/rust-library-reference/nemo-fabric-core/{config/enum-adapterconfiginput.mdx => runtime/struct-runusage.mdx} (64%) diff --git a/README.md b/README.md index c8b3275e3..b320d141d 100644 --- a/README.md +++ b/README.md @@ -13,59 +13,61 @@ SPDX-License-Identifier: Apache-2.0 [](https://crates.io/crates/nemo-fabric-cli)
-
+
m8y!yqFr+6-SQ$J{*?O(9rSXr1oA_eD}%YBs=i9m-aQ5}y^< zhW(cf`S2CKEt*}lw1wxU+Xccf7O>$+&IVKeaw F{!O4KoklftEK zaukx9K7-6OytzSGiX&?^1b~zvL+xp(rmEC}7sm$!Rclm5tl=Z_f7Nu$g}A#J27Z`| z$}A6 d_3rESk49Cjf2#uVwkFmJNRw!=vg7?vXq5xmY4V#dz-h zD)GMCSMNbpbZfZ6oRsdUy8%=((8M!qA#MJC1wa_rCNWVlt*+b^E9nzmH1YEi<}9E# z;W6*rd@Tqml zLxAW**HKSF$MO!k?k;j$wFzjlqPp)hQ_@%@@H|9?MGYB55Wj7XqkyWpN0{3>CAx`G zWmFtk8J<0_;6Bz5CEX8LIE#}A+heerzID$r)-Kf1gfFKW?|<0Ez^9UD3<;I%K+3zG zq?u?-*n=WX!K^fDyxF9C^Ve!#)#oirtmzz-V6-2dPPT~BsQ|JuO6WTJ2m5eAQv|jv z>eC5J!0>dA@>8DtG*N&M>{?`)px!6=MFd33*=MBuv5$bLJ4iv0=QNc2s;3n_om3(C z=6lqx3j?o{ouJJj-#*7#Mh*TQskWaTrscqFapc@5_7n;49Ins)bA|~E6-{Yv3l2?~ zCn(1m8rJ8b&60c9+`|Xg@WDTH_(KM>71y;?S^4XXGC4gHR!`~5{KWbPhY)5g;J(Af z5%=(K=U|QxA|l)0d4`ps-DAa=Ijz~%BEG2?R9fwd#PNZ^^nf)@&8bFAM3ggurJ3e~ ztC-f=9ym0ouOF%SO27ee(>;dD1D`Q2(W{wjGle8b4L~KY6Lq~S2=X)^Y8D=oDiG55 z;p`V-wcUo6{%LBb0@3?jO~YDxhUE$b%4>_vyT*7Pg@6>C{AT}XKOmS+=I-Pz0`9>^ z161HaY2SoDvYF+IDjzmDJRw(Ga4bN`%MQ!}^8|>(fU-OqkUxfH)WJ(nhhoPIPOh z^Q{q!(V+Ppw_n@6$5UMjeQl1bY(~(02qELK)6Llv%q=sDz74cS6bkS^O@*EiX@^3X z_8DWY3XF=BytWz;c)BD&rAXs6xA`#2H)x^_01lgz35r?xbYjnZZyE~ORVg>)?I~$$ zbseG%UWTV2BbAMjJ8E%JN?UeVt`brMxN+0G5lc4V463(WQyk7cw11y`CAO|Du|W-i zbhyUi7W&aEMI6{~1;CdjRcWeSv=#tSVWQ_rcvNu!y@j(|Y2HdOoKf^=YiYK8s$z%$ z(bQ9pU75C;jy1hcUeHQLqY|e)O`-`2=O}7=Qyq-CW(CVuMwhC)RsRZP HP1O(ZRS7eDfo+^~4{!{goW3FeaSptp9t`R07P;9c*8NLUsX3eo>&+hUT z#{m&URY>7(d_1VW=*CIo;P 5>W9L|IrAF-DW^GE?jBd&2`c5_rQ_Qkp{B^1s0LoR3 z?Wv7D(A{A4Chtds0>O1L_*1L}n7~klGz~afX4ss&=!{O)>^>Jphof}M_`cRY)aZ +B<+fCyXvu|IL8WXS(B2L2N`sR>e?@x1?@N%+OM=8!QH82Eq zDrj@u$i1bM03he-dxasOS-%^r#N8NJm*hlaq_P7QPW?{REd_s$=S+YQ^+2$LB)Uy| zW-@y 41jv+OYfmA;BGWI(9gESV z9k>ToC58ehkzEVj1 X;$|b>1=&W@Q^SMO%@9i011?Jj_wt8P)Kt!vuH$rP$M9 zi>UAqyIeK*xaK2OB1#%qHtjD_=@sr0VZ*XTslfQx+^e>fnNjstTV rsF|h)% zA$a_7jLT5{7NLQS>~m3%u5@dID>8{H9fBDw#$Trqv?78^%A(pIWv!qz15{H3X>tr? zCUVDx<%b>CY7*mAmxxsW(mk;NjiJ 71X_X0JlP+{pjV)aId=79%=}sxBE{ZNQRI_u=uYRkcsg+l-f-@SZc^`v4 zwp$X76rIa2Te_|K-vb``)wo>mK=q*lW6!I~3v7XW`c%YcyG=qwh$nHx5N_L`4H&RM zzvIoLr|ol@`xV2r9TF@#Dt>L=Z1y&p+I;K(Nms(j(JAG%lV`SH_Hf{eS}3r@OCa$T z54#nl8lK|*wg-be+9MUu$cZ%b xII8;w-u? - O(pYKbj+rfq8wr#{j)6}NSWotJU_lw+sOARL-mfnvp) zHRBb;#pVYaVxLK%E)P_IHCj&oM(`RMbw3nVByLIl?#HogHWf){NWW8z((HTh(|dP| zYqT%1bxKL1{Mg($wnf=F2wLjhr8VBKKD2+G^b^M_Mwx$5@7OH70R{~}aVBc*y3OuP zhJ%^8&vg;K5rbBKD0{01GGX_rSIr9GU3h2UnVW1F5Y?t*RLk`v#SCiJaKkjilT)Z- zn=90eVIX_a08Tou#^oyo2ipIgvmr)$wrFhHT42Bo2J|Mv
i!_PWr4sYJ|E7=1tAdrV!zV9Pgv|>VD^*DBEjTYPM!8OJmUVwNf>G zwDXGCj{Qug&{DSZlbHfv3C{E(Q$DFnsY}?EFZh|jGeh16@O3NQ!35CStYkW7rZ$H= z4@=F6lu1uO2skKn&pMDF|1c?$(5G6tYNJoP&1CnwdhMCe6_lK z(g0`->ge1td|a!EbsSSPl9TmRbMzj(=djyt%2n0PJqN?`LE0AwQ#fs9X>xzZYMZre z9{LID9s&SD20Pkg%5}C%T(2#c``zO2a;GGp^^fJET*a HPRL+Oy4gnz(B}{W$75C(Ag(PS!(FuA}YvZO>XvRYOa%PDo)N^r650>-9 zN`80F=*k2H3clKF2ph!+hk8B{X_cePZ|FSoXI!*zmP2Tt+E~YB(+NBF7PrA}3^V^o z)zWF0fDIqCI^_f5ZHN ^xS!Uk{`E9mgnw=GM6|4|Ane>j z?hA`EIt--A0Y|`;f=UPMBMOx{h Ap=FTiskMH;Sy9`VRO6*WEuAuKI|lsxSMMD)^0X zDIst9ERS|&V ~+k<}T1J$NL}4jg{_zdIZNB`^6`sNJ3`xO6%^J7=v@ks<-v z%1|*eE2*n{4MZ;;DclNb%koSBW|;jb-XcdZeX6M#RPhQ6nbSy>!&CNbmpXBc9TM7H zX_T~H*f{O9KDL^eX%Jev6`~wKOL1}HSJ-4H1G(az%WnjfG&H{%ugU~h7Rol+l|EIW zH>NRKFw+fM7V0qsgygr3jeXQeviX?;)Rf YoBjW7s~@ IzDvAR_*Y2Q zAS3e0HatW_T&TE-C35psLUCHKnu-+4O-1|SP}rk*#r$^7#`ET Z0Dl$W%O=qWH zupg$tL$k0=|6+SwzZti)T$${bnApz16-f4j^|bGp`!}5cU_e%^($q8U$6L)X;C&zM zSA6vkE=~LNGu!{xpHPLxpz*&=sJ5!U*i8E`6?JKjYrVSnq#9#aL${#hI|=vSo-(JQ zXPa{2GX@n@xt#X5-ntTJ08p%}AOL9Ymak^gc!EL40nIP>lBS9i2dKqkr(0w6KFf83 zhN_LA$_gY9`n2Ews=+AICgjv&ZwxDn1=@v%TqDrHAWpv88YGX~eEmYuH}w)ho2;7r zwGN;nZGc=>hDv$B(=4M|ui6cP9qlwvc7w2mNh+r>ebzNlTp{HektS@iqA0a8TeQ_g z!C5EaAQ+72pqU0VJiBfTY#fYlX*|m1^V4YU2)1`9SS1Cip(nQwQp~+#o^WkpMO5DA zWirRVK?DG(t8)N|eA+whV44C-Kwa02%7XNT4^WV08#@`yVa7Zo(QQON(A?t_aUp 8 z!1>|I+?9#dbHFM%sr86}6-1 8i=*UOl+0bN#_kAA{$GOM6H^U*Ix*$ zC`%XKD#daD@&}8KfXwPm5gDB$G#^0OBPEQ^UM*z^K=MvpEU`C>4VGE^92vk%0rV7U zl9#(Mo~#zH(m!A?Gzi^p2gUTpmR44y1jd|*uF4vHM(DhUDGFkkQIv70iX>@P&y c}ZG1X=T1j;l!bXGur02<`p$_ zKnxh?aCuIyiaMhx1- M*w^R@#cjPvU)*{X{iYsVt>7Ag}cm zjN|sJM0u;`NS)GC%&-J9ju eP`OAEL)+jEBC3H$Wn9VKN>^laS9gosCWLTK z%#JIlU$#E_)_WvCV4u$nk#k^pHpR&YCa5N{Kettkq~_H;PJ0vMUe(`Wl45W${6v%X zu0r)SHm0^`=v90ZscZT<6*vl1=-NN4>4;)dJm{QPc^YN8B5 R9NW)o|ct0hGpY@LC48t$)7^w@Td zWNcLbKt76$*b>F91ZiIsG_*ko&ed*GlYT7-s`JBB%TjsGh9%9$g-Y7?Y{4J(l-?hB zx4{MzGP~uTsH*DO`ZqV6JBCZGc}1dPZ10`~RxRhCs(OHVrBwMkdtK!mx1_Y(eF)d- z#+vDKmt>x x?ONov>T9L z@fA2+zVG8m`UH3CvS8m$jh{*Z#u4MQdw{uDhwWdTe|8TtRYLpBuGTP(-T l`>TYWy{%T-~a0$ z#_X3vn1Y>AS(Ems2C9XkB21bFMRPr!uKD!IeOea!dB#Pl;NRQO%$c*P8lQu~+80uZ zH6**h2*!FJT{qP>SHzmzZBt0I&jm|R%BA 4Q)?+MYK5?FU-Cu;ZDrKrQz9ew z-#-{3-Jfisa(9@p-PZ2>0RdCd0~$7TbkBZ v zUQP7w$JmvO8$z~d?4Y% 25a; z0~Du|@H^S;ycq6QJF(@pIe>8TlMgialo~As*lR#|A%aUIB2HrgmlsaV0Apy0r(K}l zX?8m~-lZ`DqMVE2CtomKCr5%(IO28=PSE+9yjG|A7;@})2*niEth_T*6oQC){?{x> zfy@*zNrA-CxY*#4Zy{h gdzcBx2&t>E+7eggj#vru-u z0>Erg=GDp3HU*Fr7Uxq+L{z<}+x!E5mH@1PVIRPnQz#e!YjOkBY+uce=J8ezU3bNt zIw#&ZJ-u24le9aT`IT3c1f>TB5-N)5Tqh$LJfs~4Eg{;=ZZ`N7L2D=-2Af=jjRjj4 z8*|38ryy+ngOg9ymn n 7PPyG-sMm?U6OTf?{@|apgHQdm{i$ z2=fqX=QejT+YM2NSB8mokupaJ*F2;-b(nw?QtCOCQ4g3B*djGLwTYcAQMVhSx=((V zOp_HHqK;01c)OV|X)gg|iC4+HCGw*vD{`8nCe70$P}t@_&Iw1*>9cGA0i$L8MEi z4?&N~4z|XHq^W1@QBHVe#e!JFiR_bBj$1io(N}5Q=ZuJ1$tDZM&t|-~vsod<08r#N z y(T+thLa6wb3@w%lOAu!DF~Y~diq?i@GS04g#e*- z1315+fHPkW0EfXrEy#q$Q{w#;6PSS$uY|E0&{|hEUocDpM(phx5K-Uf?%(I0kwv%J z9=AO^nL_i!RzSD>gnJIX9iBMMw8Ow!XzxS32d}+Q*J?Aj7CL=)d$TK;51O3mADl 2P9h zFc5TK_CY8s$pI7i@lxC8aC#;Q66#t)f7;0~tq!qh17-i#NGyoHHQ2nM9nf9@6BuW2 zLrtM4)p^)!G~5I1(_WRV?fFyHV1J-6(5aODQ|P?^k;V>MI4=~{6+prjekmIBM*pV- zaxW^FZEPM7x21zCu?Rtv8=`C<|srh-@EJ8ko#&x4(WClV(xc&{n2_RrXD}b#u8*1sR(#i+DV(F9 XQiAEJ&T~CC9LxQ1s?bK0S7;KPAQrY^DKOwZ26UpGprq72 zf0-2RCoHBmqSzYJb`BN9;fjF8fJSBINP>Nhh|6!m `xle-GCzG+=oe!|L00aT+xr&(Hp2;eDU8Kcs73JR79V_n=VMwza##RZ(| zXY|Dog-(iBm_vaSn5{{DB=U+Fn!e>W09+_bUH<`~!~_ZDt#J`L7BlY6niU=mHk_cL zd H(bR@-k zTmviy)909RW`RTFDu69(%+1xkqNGY?28G7Fm@l)dyG0}-E=QdMY}=*$XVOgyy_!(u zlU4POYtUk0joRYB|1}k>38XWUfv}UWu&n5r_8A3G?nndvbp~cW$V?eSPC`Z}r9Cce z2>>(oHSf>mYQSDaYLhZs6lfC}G_F`zE0#fDnda1SRBTEx3LPFAX#WL+1Le9La7qrn zzlY`sH3M7Pz?>X`>JBUBKqD&`rnz9xF)FvQiU25?L805i;*AbL2c4f)-HBL9lm+E2 z2E}-k>;No=(4`?R^*apwkl Nff+#C;_N@1#Z#3WVKrhrx*lZVy{)!u^zJztd?UD?&rOO-3!CMKB$3N2jo z2KUA}oa;)OwI} MC`q +^JJni1wK Ow@& z;HT+OI+nPj%9ao&U$DUpCLqYHYMtrqeS+pW1=6s5SarB-n>oE4xiRYGNN#7>Q1af; zMaIwCgH0o-1e?Vy87uc<-j*5$LSjvct79t)sCdeaR(#S&6lJEl1@h!u387CGO{=1A z)}ms#3i9CP*(~f=0`pjkj7U`G_CYgvo+zswjO{uB%MVR-V`;8HG7NRo;J$jl^|O-^ z?ZGW>lMg$2*1lrvbKOI2-O()fbZ~2Im@&&53D9ml>BrV2ZJMUUO@SIz-t#O s =qGrw?EOPo?mqev_{WP~Yt+ua8vHBiF7nlTW*v8@-h7sTQ@C?Fr)!`uh}`k8T^H z(!Kt*)PXyRSE$XX+h-qiM7TYOA5P0L^A>y#tMvrHp_w(NvBWI0%`8;KliOO(O4AIt zG=`|#&ny4^EYbWRr~Fv~yQdT+?jqCNQzbmLXzcdHwvxN~JZj}dd;?6Sb7merJ-V>` zupf4! ZcFZFG|)x8}W$+Hl$@C|XuFZmOC}dek$t ziHFxuZ<%}1XF~{a%Z=vmQ(y~6V*d;M5>S~Xxz4rd5W|0VW8NnEe^b{Y7&|3|lX6C! z9pIve00vIbRNTknr|n>eu^Q|L^AoRnYt8}z)TNzxLB(g(##nJ$oLy|Z&t=^zNNvN1 z)z-`sNHoBTr<|JG0FddhhhOwL`#>0a$E84+-RE}$RuEPl8&>DpS(?=!ph1gy@LQcu zwCF?^iJsB@It7NqQ>PI8Vz}0G5#yCuInyd1#42@p8f%PIQ)|qz0Youq{NTexYQ}NP zv8LP`Cdb}Lf;mu&A?gM;UPZn+Vz`!@jTz(Y+I^~HQ}k({BPSz3-{e1E&_X}-VbaE- zv=x#91OQJuBd3+)vpRB-MD}G;Te8N !0cdXZ$Lv`wC4;~LRk@4-R>FzC%qeMnkbJ%*|0B_7 ziZX1Ljp_qg 3kNH=}hDO zie1YVwVK*F-3r+0xQOV$aw(a9Q}q&5Ld1=A8CKNG&yG(nfmge;n@HGVdk7C(w?W_n zb>bSn(hfqQuKZe_HW(#Z*56IVn4pQtAnTLG(8g=6Hwv7Q7GzJU Qv> zX%z@6%EChhp9ig5OA{z~x+EL*bM-8*-q*r`lLg-5DmWylATnp-R03VJHtUJuJ;;Dw zRN#gtpu#86DsXm=Dox9lwRBU(RLpBm15mK|Ua>ALCkjT`Nje~qjX%L`gb(HFdNhKu zB0dyKn8u??DQg4bviG*3RD~Vw*Bl14!OoooF3N>|m{YB#C%{t-<|FJT!D`l%o@)*_ z) W zTNYGw%>k;4ZWhh}j(mWE<&Z-KcX~_ZR(Jt8mAqm)j*?w3V3=NWjSX@NuTVFyqU9_A z0Hh? gHLAwoav6cA%X0VHbzED1IBtyiU ziQn5EkzD9HwOG-Y _ja%~#v|mLEZbs# z_e1Tk4ZB@lCfZ6Mw9-q3)TZyx@;&sY^kHf08iL_42eqvl3 0p9dGDF?MAV zser@>-x5h_bIh3l!p5esE2w_N<(Kh6%{Dfi*mRjyV1$_q)r}~WbNDqdq&o@5_Hp!S z&mj h4VYFfhm?=Yf2YjyOm&%}EfmkYtTwlgT1qUaDTuoUu zOSm1ij}04&f2Xbj0EF`Rm|KZ`0+wu4egLs{ ~8 zs{irPFxzfU)=RC=Ey5h >hHr*A{V_qYk cLj9~-|m@K6!UNIb&^s8{pXX=DEj{$L!X!m7b3h+>46P$A&{r%{HvV;Iwk zs1$Mevj3{bjbw9(Y1|6r#@T0^PtE>TwTySdx?jz%JUhPAbzRqWJJ$f`AaT}h{a9&l z(+S(@RWNPnKdKb#Vn50&3zc1o9I+(naQm~g^;}$~mTQ4g$>S^!RlnAHuVme#jZH0u zJ0+Q#!>UY88Gibq7;&!Kl9W-DT!P9T{B*E3fUVo5tugj+J!>#Wuq)B70GsyT8rQUP zdpg@H16miiE{?@>fpNfWF@Go1+7GEX$8W3j0aOS4s`A}SW*rs5#f}Q!rqFdW?>?Qv z@93>R!-Qn}W4zKWJK9E`nt&JCV1|WuA#m~m=I1h<^0bGV6-(K-$tcOTK~gF3DKJoy zX4kI;uBu-dnaV YL&g1d>*|G zIhrDW3&0Uc2368hBScwTDI}|$<{TtC`kvwwo&|@zNt%5;9GhU{*LiHr_7k3MexB gVEPo$~R?_ZCclqm;oO*?;xVp zj%j4z5875X^m<9e`P#|p)FNZURC!L}Y+=UR1m>;f9U#>TxbCpHUkY7BQ4}bcNC85F zxW!YU86z-Zpc {{`^JyxlOICPWrkxQGDZBg8sSER28!RkLok)0RJCBq%2K9%K}CHIyc1}x1Gy8Lyj zIvCWs2lu(Qu-UX_?7t~2O^KckF_ner+!h1XcsFfU^j3E}>1RvAgB2qbD78_1PE(j` zgj9Wsrc%`!I0}oW3W{!F5*@LjsluK5*GjWZKiDX(v5M(T?^l 6ZLdP`oT5Y%W<6A}_}=kpn?v|4|R2@GS b37|xmj49jTYxEzDi7oB0c$fwN(Hnby2DBu&&Y90bgV;#2&e#u*n)v~5U+gJ#p zc4*szYpGnS!VRUCp)SltM=Vyxd;+0z0RbWB%-Wo$+y+$-^0?BjP+_sC(-(K`J)q%~ z$SwBKz?kS YNrku0E;(AYcTvtA$PNR}h^?nv@3DUj0i4oheADO;mJFc|*vyIj1Fm-Z0jE%Kh zEkj0?L6>f8K>D-ZM|}r$9Lr!JGHhyZ2D^SygXpTR wK!`99Qe3A zt!JWoiA|U^0@(YA >hf?48OuL{@ z*|j|>P+uW%oby&72U`DSEwF*5`XL}pKO`QVggOW!BUCo4KF0zS<~~H^b0Lda%Z{2t z@NAl)4peJxCN9TxSgd|5%7*lJ6rG|>tQIaR?CoOM7+gR%PmxQdl53&X`+3DL!%$w~ z?~krn0!7lr7F(M_LFqi9u$$_piZ?8ib}63acJ%>De1w`8A8HG>3cpC Ga4!Ya+?c9?f{jZQ=`AdDks(=4Gue~D6Nmyq zC7;JQOLa_*QWVV|mtf-`HAF7%ju)(Yj4n^F0IL{kxvD_AwZ^<@rW!zR{`@K#Pi z;B P8%I?9g5e*Xs9V^;I7E}TbSP6h-&elB3WEx%KkNt#< V@`nTz6a2&J@ h z%G+XP{^_`wKQ~`(jf8O-W8Mx=;@wmw8IhK>QDO_qcN!e)6l19!8haXzqCx|(oB+(> zE}6WW7TCxzT|)(lTxNp?%RFXN5ljO}prK1%Lq)WlqT;(NK?F9Fe^%_OnbV4!mNz!T z@3W`6ebde3wJ?H@9I3?mB!`Jah0MWHKG+LWoG! Is+n4{!7V$=`d0Pa-3{$_~#9t6U|(Y78ziQc)v) zdc?wy3CG%fMkhNB{VORBG4L+h;4c=I3XLX)g~1<{llo{I7Cv%`)n-fij_5cQp0k>K zY$PoySd~e6TI!O79pRMlRK8a=Vn*y%v*Ps0bu{Bh6GJ2ftQ4RSH7)w(*Jo0UayM*G zCKc}bGP*C8&+Z7YQc6q*T>AUDi#ncP3q_++EpE2*c=SB&8p4yy*bNU9MjCfWiuQ$q zIW3f`_h!8YcR%_w*@*>C!B1ug;!+oX`0&B8lgjnC7Pn$lZHg+|jIq!e^F8flIWb Hcnpe%P0Z{LCMnvH4&6`xnGmirQuS-3B`zW 4AqaT~Fb&x&}^*(gCA%;``9_abFTu{13GUmNqy3%IP zj4JNcK5*taiYDxzn6^gx{qg(s_a>4Mkc-x#ujwlW;IjfcyyV!=K| q&pOZ|)ORi#+=DDAmD8Byc*D zH9Bg##yusdC@-fnUbSDUfBTCDm^dbJ7w7pezzlGr xPx rM74x}(ipi%jXCCA#oxxY`nSg$A|N3mTA^ zfM!(jn$h7Wt{NNaj3u$KSKJkthCS^uxZz51$oVM(I%T6+RVXpkaYGNG=`luJ*pUba zl|mu#%>ptzw+xO#xM7+3(GOc%_w6~uOoWRS#d^r0xXen=B7&QG-9u%ubHoiYv%}%K ztfNVFh2aNN%_kV89}U&}ktQJwq7)@xbR;Sos=3`L&8+bw)~~0>db_w8ng})(`pOxF zwi0hxj?kxG1<+|&%9&Lv(8@2`vGtpR_9CPm7YW^yVRTGX5aPry5ot+UuRQYoKoAmk z_me!VWt{zy%>ojZL-N+H0AnI8hEE5z@H5uRCvi%5wWS6AOyxgkc;H~#Nm4royG~Yc z$7P3pb>$2zY3zKJfv-ZLz%0>g@XXH)Vq&)KbS5Ww6!-?n0;P?F$HA*^d&@g_IO!d1 zSAL bsJL>T7m?FAIOg_i>Tk@f##z)6#2Qo zG|OVj s!&~m`A9eoRLzBU|ITR~ $@9;`$Oi40D!pz-|j3>^C3l@cd_ zwHqRI>pkqNj=b?YZ;}>TFc&tq)KCTv>{M)XU^}`bLS#l)#v(9bn6qv*H`N_XEXm*L z5rZ^=NaJlX?j1tvfv_7#KSivGV6OTBUIdHUy?io-2Ud&zGzH@Hc+cuI7lV{OkHU4N zBJ)NF2*aV5Q88JxFN;i}%;_Jc Taa?wzz-~U#!(ij `(;32bs46Z*V5Nz%KQ|%LQp6C)=R!7fuX0D4rkGRLmiaz$>)4p}<79{~B zy__@pT$3VFVyFa(F~4{$s=^hezs$Y3f+BlyjczKV>-#Zb(6&jRr^q2TAPEEWJmCGg zK+uD?0Z~PUSWC&UlNj5bULhOM-KT7F@+>=kDge6xOn}bp7 {OWrpoW`r zV>Bxki7}amhFMxI)MS+_idzyaXqQ&6me4b@g?*hhA;fY1Q8@LdO++?oLw1FTt<-7v zmT5vd@>3r~>*Trb{5g`$M@A;c*Ia_KL?nrKs$K+Rk24{Gz`dK5Bmrcw*xj% sQV_(IJd91uiJooRs w(HZ~4 zQ*3NfGcg#-76HO)xX|`<8X20FTxsdHA_Nj{)0O#7hDr(;fVNh0xM1sz^bFVi1zdKP z9wN(>>)%CL=a9nZ&F3(RhXEO2QtqrRe3_ehZ8{96Ha)cm#r&H3hfYXWhStebpE^i! zAodI+we6@W6NDwaWyysGcOY_@hjSj9dh)C`mu*c^4AFv$O-aK)h-2J{Jiu1uJlNK^ z>=F)&T#`yAL(BJ~^ru>gq40jKriFQROv%;f!gwVx-PjHkhLQ<6uOz##)W(qoJkOD_ z(@8q+RQ4b_i9Jr+A`EP7 QRw8 z8jhr$1t^w=Zv$`ggnp*F;{#B7RZG(woIEw0KledkQXvi= ;dFxDV3z(r;~vu0ciLMy6J )fO*UiybaC}W zA$)_;)Q3^kFZ%V=(jWq*=)*ZNVPzO1{ROICBIOK7BsiWH3_qz;5uma$;C`oEZ^EOd zAN{CXpef^nZLuDHPb+g(OeQsV+ P!uq@DW*t zlYIzsNMDH0ll~f2^^1pEL0`Ib4uL&-*Q8`6qEjSv%re?(F(MQR_-)UX#u_TFkE}gJ z$JmGEBJ>qi^IYA1^RYQ_UZZC--Xk*yO{nGfaFewWUKxAEHfz-lU>^qvtbEa5mgWE4 zgem1I`7L(Y2mmLY>4x&lRyT_w+dUr91-A87j|+`g2xRi%FxE8Vz*Gv+qt|d#wMNW) z#H}dTCxQK!jRpxDpT!aft;S|UH86X~X(?gI49SV%TA#9l#g1>q(x+TcekBK^N1b{u zLzw`}xi`E3Z|iaiHv`Z4I~q2yjjqOl24Rwd`fde?Th_5+|D9H*Iz88);P>o@HZ!H5 z7V+{G0ptoxvc?@4MgvQujZZZ?j2gL=HB}cN_ekQ~U;CkQTI}gI4u- T9o z29iu`aU2UQMTmoHBI&SHsTi8f62!lV1}yjD %4{=Ljk&YjPjkF&NsPI7AIYy_|F z%|>JmnbRKvuJ?Wj_5}w1T`a%#SA{oOt=F3#=CMn{NXEd#%tTfE>B)rsCq;mP0kSup zC6KF1Z}}_tN^zn OycLx5UoNGMgx@uQY* zuD(sDS+6CKr)3{erJXQ>Te@W`Y^Eh!BKACCpQC)AeBqF{eQVXw>4TDULV4(up_g7Q zI~^FyD@bXA!yJxUNDz97^#wj&*{&t*DM%n|ZQsAfH7|Ra6hfmqH1nIpAbZ{WZ`H+E zkn-nR5XGeL-A+zU`UedWgMt@)O!|!)o}ihN%!b6Ch#xKt;PSIMU3(;zlBe6-WGDkj zFe?MuOHWVVb0g{=ErAf$uC$y#Cv{N69;)mCouX$s(S|u)+evYfphNTTab9?Pp5jom zKRI_AvtjDRAGo&}cxD6Kde`e#vtnk~yiiX$Ev7Qo;S^t5FcqxGS0T5Tm;brDN=Dam zrE~LX79ye@2GqD1`iRpJD<|fi#tnM45eHI>f O5AlV-2Ckb+m-x$euxccF66 zyP8&pafrp5>vH84{vsnuc&$aaRBx@VtElYYkM@QgKM;a;y&3ze *5~<{y>vJrRmH(!%1Tf>98o&_ z-!*EP%6X8tnwvhIm87or(+Z4)gv>=pNjo*{54EI?Bh?9PWWa!+G?=C_f5&p+KB(jL zdAZz;$M}cu-_1^s@$qp#+JOwMETL0E= j_Z2 z Lhn>Zt!JVAdZCHB7C%zvxw*1we)kdjV`%;iOPginQA zQl|-!s1QLLZX*7fJKF?ZL=ZR9XewNTOd*~Kuj)Nk?f?#H@BowxkO#tTmOHl@*J0?% z$3Q>-{e^mh_~7OVt3J=ai_cp=<0d}aeu0lf*gRO&NmkMD$d_HUjlG9mj!nuw+g`yz zkK8cSyPQdoS^qUBPg+~^5-u9*vhT-FqwdW@KoO`713V9BbnWKy1ceOPpg>H~8^@iT zDLErH%l`^U-ni;hDDHDa=40C9o7%c11D~>4DI+7J_OAg0qp|z#+ehagf1Vs0`cJwX zx9-3`Jr^IuZz~&v&;faZ9`xGeKR+TQ=x+e=hSd&|LU|S$bDXbjL{IIf+ClbdvR+6y zsw5aSr=V`hg9<5fL>mfp*a7!8mFjNKOKO0~zO?xMHO2E3J;| t)r?@FbDF}&3%d4NK8%iCUeX{0p(#mS+JNd>VA7fGp z;U)$l;YfgUEr4Quo|n7j(D@fhl1V|1{mdywMZ}bB1>TbgMMSKPh#2lW$A#4-hfX}5 zLZB%wZo&I(4x_eGwb>1HE&VPr^Ng3>zO;T`hK58@J0E$l?l icG%zb)I0+4T@>R~*`)Gi^}+UzCL| z9s^Ga*A}rp*FQs}sDuK!=xcuz2Gnr+TZy0%s rgWI*=b+$G-gR~ibddtDCYew1 zZsTQFy-bv3a;|
9sdoiz^-vCfZ25v7s>q4Y{2ZvZGRznG GNnQmNRPF)2=M lZ@9G>~7Fyg;OjRC5T_U{FYb+?{8f=3l{OjSiYsC=8mDz9nC!*ZLxv1OYmpC zXa>Dhv05n!|H3a~Y`H7q hu%fI+WMp!QPFmB4EKcOf0+7+hu>@Z6np7=8?c>7>Mb*q$=O(j*K8E zC>dYQ+aWAApAX`|b>>lsCZ+Hjg6n1(yQk&N+-xMqf(NMBcN#nW%)Rvw8unTheGKS> zw2B|Kp7-q~>Aw!X-`j;eX1N4xY@GL9gRcqMNht~wjB_b{Q^>m-qy_szxfdqBeziJ$ zbnk`MKg*MyX^K W+P7JC&f3Za#_#UZS3J05ZbV}$Mzv9Cf#2&0pol$G z`-`oaagN8@7=3~jMx+~&K<+GOf+4OrXzjk2G$(7Bk0&Y*8RV;F1*R=;1c1nBlubG7 z8i{|lp3nuuUTVrsNpRXuQZ;*CD}F&1mQrdlrI%B#FWP{kM$XCkWHT0LCip7>@Yt(~ zV;{wBuhI#-d2|?GP>_J`$4_Xii6cBUSy$B92PYL0ZQjJaYL_-g!)&$qg&{b8l&Q z3<${zoQ6~ZFQG+}bI`-DFkfC^^^4tWhEWhV>(pMhWd=Tn0e;l!3e@q(kw_tj)(LJP zqYD~pYoXx+2I`vf?@P%qdE>!b!xWDo{r;!qf`@&E-pfX_Z4QFz75AV=TIC<6jvBF> zHvumiA52ynueHd;5N|8}=W6(ub#STN&)nSt1JlMYVeY%%R|9|VQQW0q2HkJJzvjN( zReajIZMfg^-grbM vNXJDzzCgGF56gzSLB%6#*u2SLt!KqFSB{oi z(9JjuagKQam}HDJnO4#E7rA@6GSbA33VSIv2#MVUQLz!RwHSlmBV12XYFDS6UTDR% zs)1pmD8>p0YXNxSAX8DYnFBE7qjWDY^h8FQ%X!ppR!7dEfFjsyq#RB@wtifAwY3vF|9L|D3PU zf5oy{!9)NJE|GY7WiCg{E-6J*ZqQcauIVQz@4AF2MqO9Z^QqjYb`kbBP0k`TNeBuO z$NaIPc)VZ``>TlgRD}5Ym!kJD`R!pP Pm;d1xDL5Y^6Q?&a2P*R58 zc* E{$Nwt@~O;az3UU1wt+lu2|Y0%CE)vq|!JaT7Z zS#5`b6J#u61s+*itM?}3?)jAK>mRw;EHAQasCM6YDsK??%R4i82`RgukzcAzQ7lTR zr49;_0KTGvlZ)R>vq6l>xv5Aa3q>MY =EP?S1VUeb}n{y#O}M#$Af2R z#I9S(uhqp5t+s9|a{K;?zr={YUyGl22R9p|4HqS$cT16ooHotd9z@2fWLSO=w^`N$ z!u?$4WHl^n*)K1F0m8mAzhY;sEK|pml&Hm6_{UhQ5}-zrj&bPtV4oiALxiMOmHLeW zg<`&7ercZ{LS!rU+ONI-NP0!xK-=Cklz-xM(N)0!2I;FP<;_UK6Lt1r#5JQmx#IjH zEXx^Q!;{r8pG2_Hd2keA04!fvDdO=Iz}Rojui=N85n2%RW*dzz@^} $$&6SjS6Rg$@0l)#fdC e7pdm$HWO8_+qXwsfF7Lw1%delul6fz2okLBaWff!rp63Wj;=LP$5JJblkqIO z9hdW4>F4TzjOm@IUu2))vB#_v5%F^>id4rbqE#6y<3cs2(QVZtPd BxilUKI-?x+T~Hz;gNOOEvrCP5gsEa>Ag z@{4wx4eRIrr){J_ESOtaR}4d %UL&*2KL_%TToZ}QIe6x3g# zSj~{dmQSvMgHd()&>-uw3yha&ze&oVvQz6$@QX|Uz$2$cW0#%j(1ZV3O9ZbgpFCr9 zv%^sC05Nj7t&g9{h1qwfLqnO^pp++${9EWm uswLfP`%S&2M_%oL_u(W9u8 z?H(DKJl6dlXM~AidfXUng*@vr6;e^RSPtsHu`tNO5}}%VPO9HIhc(9X#x00`4kK`v zH+-tkgc8eIQ(alD%GKvx4d;?mz~*xyDD{RB8f~%TK|5vv$ms3Jwb%iaC|8@YLaR)| z>AvBSE2>FF{Qf*Ya?T_g`&&dMwb%uwfNa5~445m ^+D{ZB+Omt1~ z7r;o~_^ho#VI48&vi=;D7 A8tj z555xKe!Ht}=sMZow_Zb|UPa=yRauN+S)@GUV&-JXwB3UA{L`|k{ROwlWo}1}tB*`( z*5~<~v%kSo|us@FBMGsaO1=-0Z2m-)|`wio(eB3q=Fo5jWpqFniviaEh|bt(ACO zWN`v^Zd{~k$Wqa6bjU`AY$@?W1}38dnN^aXnNGy9)@* SlwEy+r`Hz3?_a*_eZSTA3;*W~z{#U~kugx663#k3je0P7h z;VcdmGNx$cTV>w*aJhl4y6yYDdh~ ywDH*hQhpMfAtBpt~93#$EU(=t&gGnb7kp z#jiPSf9}U1B0||KNWjicX1XPlSAMk(W%#VEs1twS1mJj(l5$<0a#5cU7WQ0=2m$;I zMfFy6z{0us?7U0560Rc)(reEBnKv|mIar#!4QG8*iXT5)YZXe;m6+X_r1^g+nnC;r zNQ8=_Xc46S5`hZHt>Hb&P0Gk?UPH@||4HO%75=^)qV%vN PC1w|CRh^AJc^O^2N x%r{Fu68=7gN+bf}!9oNJ*fGYx&x zDPcVR6&0=fP0W5O5Pd``>3vdg31}-}nrU}O{P=?9z0rjMc+|l}b@nZ6D*^RG`70 z(Bybo0y_VM{5iWObnd;q6F&FdhB{2}?s&+iPw@GD(B^o^(A>+6dJv=|7*dX!l?2XP zhgx+x;j@}zBqDJ^^G{i+Wmt*3a6pv;*72e2648t7%Ri+}K3Ej#iQjn4f2C5^G)QGB znUv^H(y0khbNZ<9m}yRk97jOE&h_1bL1xrq3rixI!JkWoDh8BfzJ3w;b~S?%H#<$R zWtF9%|DlPJv#KPHE8kXqO4!YK*n;O5dOj-m_cqG$^`gA?<~aFys*h*D1vS){s2x03 zc66VCHCy_BT&k36Qeb4B<4p;O13dF1%s<~75(GQ*%7Q!iC#SCrOlKY1=;-#G$ABT8 zufUO!xPEAvx>6TDu@KJfLC}qaKVUiJes6z~o{yx+A#E1ugL+=9LSb?cjoVQl%F3 z$R+oSgSHwgK5W{~8do)UWs)6^Rhaoydm%Rtb6Y7bA+8k93hZZzkbEel+o;93fG(+r zMQ8uf>=$%TiS$mJ)t|t0%!&p@8*A}msf&Aw0|6$9FyGx+)ureqraAX>y)+LETxFIF zHWTlRL|L@>za!zF|5-W@*n^h}(l{}7D&xCy)YogsbCS3gR#j(zN6& *0ly>kXWmguQ!0GVe6NnxDL!#O*tS^gVa?L+S *|;>4O&( za-bbQDRt;ICnlJ~Kh~|o4=kzdXs_Bg8$Pi@#W=qhn)AMMEErsvFF%J5{v%_Ifr4Vh z9? QIJ9-OuH2n=-pyJ({@@ALX+VZnXjKAxPL5PR6cugTagElPVbaEIP}$c;$tCqov8 z$uB20HU42>66E&Be =ty- R{qfVwo;GkJ_app3aM&nXlRdcu5uX+w=H~R0x!;diabdt z39}t3orQRk;B_i;nLKpA>SRVsOr|?HP=X2DbIoF$i^JX9vH93H=5vLJQ}pdq i7`=l7sPj@A%4yIJ2$MSl>4qh~*h>!9)Fs?qmkDfoEzAYT0?$>sgP?4{hXq4RLx zH~*SZ5p|Y*b=UB578kuK`L&@dx5l{vvY*|3{+xF`d3o9YUg7cvW(ay#bqStc3OSAm zeuf5zXh>twjGf5g+x=r`ZG%`m@| G0f*_@cjULf~5#X(=3ld z%8;g&fS1S_o4L*R?%B@{ - {+@GUB6CoN74N8e(rIFBehLJ+$qe z6uf_hg>sNSCRuoI7{VDe+P<)LY=#yXkJdr%m%F3NS?uUm^l8k?2hbcbeK2Ub04@0B zk(rR_!dRjrjr)X?hB*@$7#zj$1DcP+D7Clh1pZ@~Bl0j(aUkp}6GG{@*72k63mi{S zLfamCi+VM^U$+npdM;IKG(5@U&WQ!-7&K+)TmcgjG+|G*vNSLez}7>Q3{{6SyC~WI zf(dEyP1@VaRHPe-nTP~2nrcO)*6}j7qr-QC7U4 w~<#)Tj{h_!_?Z1Nbd%ND%xIA<<2K`kwduqZAnAjt~ z|A6T~AHmN6^$#;4F~dssX5nxEB|anv_$Z)M5J&for7kC4KL+alod)cgWR=v->Y`L9 zsUu91;Uh1i7{h>xsG&TIeKu~|crBxwSzOhiac5}` 7iy)FxD<&w(lQZCrT_E@AkY9R4k;U!Wei~zi8Kf}iuG8LBADKgjm> p?1Y&y=WU6~?MzuTq> zkK+2~y${dH5qU9)y4OT5-;yphuWZj`K@Gb*wUMF0-9$q%QOCe@X{M<=Oj*H`r-2#N zufSBFIo)uc8E*rnUgG=CX~R&F4@8pl9_MjPFU<2Zw8oVzNfAv8$zr2LocZ@I%az9& z#xuqvN=u hDN;SRmOD wNubl*9XI48!Q ze(=iP`vvCP#m)uPo-+unwh*I$<#4$3p^Y?84m0k@M0*aV&Rwhx8e~5`{iK!DI2fr^ z#}u84@ D^~V$7#fWmouUttR}9l52ZUIG)M;nh?KCOf!Vb zg;DwM*{Bbn|IQzcV6wP3N>U9+ZfX`v|4tOwstq##vN=(#uY+XYq8I_B?kb ep_e;A;i)TFP&oeu*}1!2|ll-EjGy z*~$Szfv;Hfom@;=D#I~-6}I5Bf}a9<8j8jEAlF697%ot6= L)e=uXP6M5dj*xe`TQ_{ zreP4;Uwz7}YR(c?W}b_xlG^ROuM)Rik?c~i_vAzx)Vm!BniEeSxx?=>fuW8h&-?)V z^Qgd%f3~xN99h$Qdwa4crWZqnFLiUTJrp57TMKUM>`cT$&bs^Vg~e~R#SiW_=6X+b zLmu=S-)lcX)xw9XNnpZa8!3oU_FH>QtURg5PxL_dNXqa&^YDej8E56i%u#-O0`P;p z4G=dLmA-0~m|#5!RtYfT82UNwD~|?PQ>O`F0`26o$?OblnNt@SuBi+inz5kLMCG9^ zmhAeX)(bt+sJ<9WDusPnoTNFoi+=gOShFHk;V$%AFkz_cO27*_Z1||mNH-$5L9bNB zzel>AYz(PLk+cEG1teCM b{& z*XV#jYEi}v%L}Gsl*?hZf#30gxip>xj(&} TI|57*PmVPG^ZA{8Gr zd@kjQfi~D624D3*e8&u$kbb+s40#uS8-IU}4%ohUe_7)pe~vP{`d%q^5YTu3+|c)Q z;zp{jrk0KEm-|Io2fCNXrJ;nCaa!!gbX|Qhvy6WenJ%Yq)LqbtKX>*?{|(X@JZ2Ys z=K}>x;+KVm*Hjc&{Xx?mflG+u$C4q}9Rja^DEgkhK&d^bXgtSzh}I*Z>pf?+78{Ad zrxY$-29S|V#W9d((5O*-6y{ipX#0@TYNJV;W<{+d3wRPE{z(*Q%||OJDs9AI#d_eH z(!&BcHdHE70S~cQ*1G(orWUM|e#AnuK62(xy9C>+Vk*Q|sA^7(o_qiV&b45Vi3}_X zWQIzMswjVLnuvc>tofd;nF<+xh(r+mH0+5tA!dcP7_S6pX@=}a!)Ze@o{Gh&z3M~B zF)@`=KBeNDM#(-9S_O~khfIJb8M^aqtXd1|72{lZ832#T S@&IX3os{-xe1ii}N+@v<_>pITtet2MCD >6K}^!xAHI(lC7 z3E53|hT|16vL$W?LEIc>*r`U2lHL9`N}lCj3ajwK)5^Xz%2AMfno!OSs}ouYN+n?2 z*y`(M5;gT<>UFw55a$`&a1wkXE%;Sn{^K)}83L+Ws^`f+`?&<)oV+1P1Wu*d@+wQc z+;8;54UkY(#oe!;kLT6T++?ZduIWou{3%;GaZ`T@#(SQ=)8kssu4R`vsnQ|+n!;y> z!Fp804EM{VTA!a+Jkv{{gP}#L)D7)R=16~F$fmTL@8IK(F>H2IihVU(a5Jt}3Pm!! zZX8e M2}U{O z_5E~m(#qV5#UzA)w;MR!EA;@Ng5_>>xbnyS6XKzdD$fCrl|CU7U6{zE{!72LeQ cTP)zSHC!A kG4%C-lU`-M~c zU*~jre4I6&zu+S*j#1lcd(xs;WdyEPUk2mFoqOPJIE03ABTRjg3v$NqMcZ79z$6Pr zSI3w7*B^aaPd&bah^VGEt}QSwq=6K<$_uKpah0R4aa2mG%BLo`4aokC(5ezv4Vz9v zLhsAYi7%-?PU7U_?x<$~inW5{;*{89s&n~pV7&cJWFw`tD>c5pS}4guxh;8VyfTmu z+`gj|T$S~=UBVc4+iCm{r_GX1Sb$dxQH>dPbBa= ofC@ zBSo_v`Q0sVK#hrBh0NWpKuR}ZK4W+-B&=`OP99@w(B@M9yq~0mOWrM )H9+S)xGSWpi>6D =MB2aCrXDW2Asx{$@jH*D)@s+mOkH>8R}|W`1iSQ%c6m=aI;c|4 c>>cFPz9+T6n`xZFoSk(_>Itz zztM<4C2aeyy97g9eMZ)K HdZNq$OG8PnF}1dw0(V5e}xf)975~KP6O5l zvee(EzfrJo>CE5Uo6Cx@l~j3s-sp_EYCngR)?)X5Wy`n^Wxq+L16O=0DlrAf 5=un?AbsBTr|)w&hyS $e3r0Q`MyG2d(Bopf%lI0`sul7iCVjuoWhpf zg43VKpYdi?@8a~Le&RyohM}idwxPoe|BodHf-AGhNRdmtq}$aW@}8$45(|@bC&%xj z&!wJ|U8cAIKtd%sFp+jV?*QN4$ZmcH3u0Lr4j-ylQao3p)0^6WZP83mGi}hmHpKD~ zspl8NNOI{$SJrKOm+S2H?EyY7$a b%XsUF8-p65ClpBjWwG{*Pcn4A#!w^;~!nzU#mKA0hw6!?BSyhUt=43&z{U4 zSIkVv8s1j2f+s(kzDE=G?K~E~5f{Fl7W$qwzGazpJ|5=6m^T}f7l=-a tkDe 4d3ZUAH{{e;pR(H;#xc~n?tEV0 zLRSzjl(>~S(n#SY0gU-bRCOcso(ZH5!@ilTq;$-q9NGw!BQiaY8q?5yd_k7RwBL2@ zHMHqgW{qn?y>~HLbU*4Rf=HLu0wtn)=@Q0U1l~bc*dnO+;eBd}9UM#D&YcG)9h+B# zjnC5|_cmsCxO0AIG~~Bc&}QfJ-n}H@g7=;ylOEqc&mlXAa|NR5 &9*7#?m@s~H5Ee;7Y5xl@br$aw#A%?1Zr3B8@n}ZcE`TekZgRW} zG3W!S#m~7JmN?u@b#XEr01o|P$AGIx^`Ts_NoS^|JDfCbONmsg26Fn@`NAu@l)~Z4 z%s<5n4IQ{Jr$3rtIe1(l8%;ghlDdiNNXFZ@l8y8{u7A0Sk#j@{p9p_uNv^+Vn0Ok9 zp-LSr$6>>K&s4=A0N^a9NJbsHn4dWDAW3OTS~<}&OO;C`bkxAYe$>~+JXf^^9#G sBIKLKQBT_T4wlGvBeBL^}Z*UlRDB6hW}-yFI0M tfF9rxV|t(DqBFL3@j-~$(`!! z>~O3>=8J)vuF}xju2mBqo#3!Rki8cI*6j^ywMzzxD}hl _5;Fk|*>C ztyt9N;*9ySbJA#yWXzHA0!j@z2?cN8w7h6)A)*ib3z+~UDAmvzfAqeu{(h uvm zFOc7#wgdml2R_7zU&d~`t#)=7JVmH))TtM|NsFhAW8 jA$oGL&=P> zF3hj50}06G)b@)J#@kO3>K4<`_*}JHQPq$$pU?T~1ctNpC0$-G><}vm0eMJD1TApE zF=Bj=mm8d3sJ}-BqZz4{?GT`_$rR^6-v&lb_sJt$?nT5_qiQkda2GqQNZL|$1)zd8 zQKXR#@{ o=(4D;p4~8PY$!`(KgCG7IY)94|FFF#HA&UlwxUc1yZp$t%hdI6 zEvIyGdXdjRA{at-uhrXDW_7P prWmIpO_DFfg!LPuY2MN(4ePtXL!!kvITnyS?+HXH zHBW!k-Jj|O__x^gL|cls^`FReq*I!W6j}i(f?QA5YwqpOQo)Vvj^AasD>MEhu&2du zOCV=nuY|#Wj`|;6oc#~Zd#;XWc9G4ly*NTfSpYj1r@F7<+sHhJdDx$^{E<>+pRa4p z`FrqDVPePX{`5M*uI8a$rWVBsxDmquk9TiA6SQ3X{ZgWgg{$8lUpn^uwHsdMspJD! zPo8F!8_^8@{_Js)5HU6*O@BuWCD#WuHC0$^&7_JJPDy&@Ls??$?WAP+!3 zK9Yz5^TPbmCG3yK;rPevzdPaMu#$%TystVfyfO{fmchlT3E<~KKU`zXY1;Q z;w`oRaYG>J$Vc=s_`Y{;HTd@`8)3Yi`186;(1vjEp`B@u5t+9Vyp$l(GCWVDKzO1t z8QtL*^neEZ-?SA&rGJ>F!*Gzh8a@@~z5HS^y(5IGvhR@Xkm3H9{gAiCtlm?Gg6F*d zj|bTRTwYvodQF;k(bzX~dg{U2wG5C`QYA1WNfg-!%@0V6G4NrX@c%m1IsqY3^0*nq zJ@CTe@ly)E5?cpF@3U#W&@%x>G~qC>!9T8371aO$V$lyY@f36cpD|xl`2Y<dvFj zbW%iCJ&Eo7G&~t&+5ZeB36TuQBtn^q7zwxyr&0uhm=^HUQa&?oVIotyoWcy`dHlSo zz4};&p_yz&-1;EdKn?uN9iT@5W7FnrXqIXb9lO$&J;aLqOQj^=6Dd_0Og5jbswG+@ zU_XZ=nFz>Zs#s{fD4~VxNSDo{U80#h1hJX#)2Y0qJ!J@qWkqZB$j#Ru%_w)JCCX#~ z2&QF~e%GIO-U_}yiuXUxx&*)Ii@a?KY(9VLyZr>%`A<80^f(IsLl|<|1!)i!6C>9h ziyg>7$dE+h6%7Z4v2;Gj#_~d6crQ(HwM+Ov00Ke%zW?;Ip8fy)=rf=BJ1_r#m#d?% z|Hf~8?Q36)eSdWJs!W8G$8m&=fO;AOJ2WWoXp>Ktk!O1qST8G{ftOJM t0^|h*0Dysbp=FdcU_`KurLq7cp`so7AmNB{7D_fq z6)X{-NDiRKt%md+Y1GRrPDmt&eUglu11s859(fcpBf>bQgoFsAr4i*25c54%;`uk$ zpkwp_?J{qlbGby+rIdAfR=1%80%4XVAe0mn@_WO0TyvEXBtNaIy*v-Gk*P~|90=x| zQ5T@tKm~=#$KDeHXHH4a#^t<60vw4g1n?3*bE(Kak06mIWz=)AIA@ABb74170WCCu zCa}#r5^b!i0QKchjBu5`EP6^bh5V3-Fs0?{008bjf8pgXf5qRu{qMf&Yo72O-}&9o z{E;6$d* ~(qf#8M*Ur8AB}Rq4o+7lKKBTf`kBY&HTy01~ zjn=kDenH?&;TI2(FXl?O!nziSO#rSwczVu#n<98A=SUif@4h@lRpj_6Gdh#VINvO% ziX8c`J_o@#PG=`y4H)ac`n5 Pa)qPcd@*rFD2ZiB&wHu~GM zafd!*2{EM(Y2=v8sU}j{?%%;u9mviZnSrB-DC1=fkPx@epc+ruzq)PVh^!}wvQqc~ zwrILYoqgcgiE{u;55bg^4P4C+hJL4QW_pLhn=Hb=!d}|v_^g`^vn$4DB~()Yf+-Eb zYMes3=n+-_+*M(~{H@67Q!qdcr`(ZRz-r1A=TeAGg`8R)785+hg%(8a|AhQoJ)^fV znPpLHNxJ0dMo;I0fk7*@BO(BH9qN&muvjcEUcB`5r~lBu`LcigWncF1UiF8sdgX8Z z&iRvb-~Jz-c=Maza&+d*>hNIT7Yb_}pT~^g_JI9B3MFjpG&>^s;O7MD4ofg&c3SN+ zA|zhKQ{EQ8D5V6pa;_D3hPP4Pv!&iFNl?YFmf#m;a2+ZU5lSS_keaIsTyzMq^8 {)Mk;~T#I8@}PGKm3$$`{pNp{3m|G8{cqa-*?=A zqX<)*0rqqN& z1S|yy9Z*G;g5RTQ+cJn!rWWUeBYzLD002{`uWYo7Gm@y5Fd7B-Gjth3@^PFqQuEAg zlT}MNxd2U?Om0ARAF1l_=0Ko1O}1r{`4U#Ngav`T{wRS)Nh!(d5kcXVS|x|E0oP-C zA*x=6Lvy~3o#Z@k6;{zmz@jHSM(USmR}&J|p{jb4(`5m2VX&eDNIAP@4@U)Cq$U** z8Zz?QK+@Xv%BG_^tz_h7)Co!yZ<0fol4l}RV{D6yjCAfomSMWISS-e2SRWsM)JK2J zcRlGl|M-vp=vhDhtQWrMMPKx|FZdUq@-J_^@%2ZCM;9+$VsQA7Ndu2%*ZlH|EuAe2 zcWZ}JfqH=&BO*9FJp8Sf|K@vcz5R>6=!>57<3Ik8hkWScpYVitzVq!@U2`oU3}epY zfXbHq4tGq(a%il;Awdg8n`(n178eX|#d zCjc_AoTjZi20SJrv!#ZjFdda9;}D*pE!+WWW)yX5qC*YcXxd43Ka$#Iu4<2CDQm@~ zK)JrFO;eY0R?MiDN8fIx1Cv$4$^q48P#9^*htV@b0uW_ZO`sc7A_JlNC+0vDQ5C7U z1=fwRy=pe`v<*e<)AAZX*Y^qW;`#G8-1~;F|Hl98*7w}@;uk&lxzB&zXMW~qe%|Li z?oa>hPYw iEn>PpzlqkYZa13kJ}!p`EMkH^p0a z9~GLu@S+HZ)dV}lyVN&ZdeD*qae89y!jzqw-D0$T>Kn_Hf=1;bf*%gx+x283RC1KF zQ;FFky4Ie9zK=l_nRT_1x1nVQSs}VAOLR4NHnlRwY#0-HhN5yphO1(>=E4DpopVtN z0^-!yREGOkP>ooqg5Z-Wi;}S=kpl*n>5k|qMUO&ZGFnB>6qPM4WGFQrs3zO!$RHul zUpCvBP*k!nKY6|q%tN%fM8LL7eTAPw17nzq!9x(KU2(Kjk=R$m3^cW%qQV#hTzGuG zsI8P8Q$mtj5)vyG7-FZKSVZBfV@`#Ji8LW6O~g0Yti`=Tj}8$qk6udRQ!ZCr+DLBC zs_{dcX;nsWra^n!IJvX)+Q%J-V07Eiv|yVmoN1qxGXa(S$UmHkCr~z;Gxl~(U4>}8 zA@~jMh6a0}&Rs3|b6CQtUR_@T1=ZGE3z|;BT%yQf4i%dSOIE-HX@z*!o%^rRg$jeB z7pBzD8h*{VqW-g3EH<0r(Vz5*zxvC+{O#ZRAAauVfBq#u`?Jt>-|{WrbnC6RUw5w? zh$!cQ#+-Hkh`cHq$a#-s+b7@X5D`%$9~oB_x5N~QkI~6UTn)!@9dXHO^7x;WjHN@# zFMrS(@w;0xAEhETOW&B$rG!ZnY6wJjuz%DVy7ojisEw-=3=O$Z7sHY`C_$sO1C7(| zaqd|nOd$V>Oba{bG7bwERRG9?En@<*K7i~!a*1cmi)=~XiQ)s2=y 3G@tbZo>-9hV$d7!%3!eM3|Mr_td)g2E z*6+OH%;A|&`lNrhTCMo4*}#m7BpQR11TCem$|IP)GLUQNgpk3H>iUbm^h^KGum8p` z`r ^z#Esu@N# zG~nWms%IoftyZ~0%;op7ppM~9P@Hx1wM(+92Ngx~^3&P|NG?{{NKen;m&j`y0t6T( zkwL!M7E9;@dev*>)CU0(q(nqX*4S05WN|1XXWr4NEi$RLSzyjC!JJGbLr;{x$hY9H z=3-^tbsYh}8x);|4B0|vzpqUsoeGk9=cx&YGDnInVCJ`77y_H>2}Deo08`&5fQ#qP zKm6g3`0nre?qB}pU;fqq`YSK{@Bi(pGiU#gPx+UN)MLW+dQGbGEV4Be?ams2 M2iu+UI@N=Y7&Aef$@E;TJ#tE5GtzeaV-+_qJQFz5a%g#$mIG^ad?t z771cjCslbuJy*aXRCK>dHCZq#Tqmomk6estujoW&HfI|GG2b29qzOPO-^n+8NMob3 z{E>htD+h)0NoFBA^aJemC1O~VEDDyoOr}z}XOwkTERQGis`K5V~bbW}mAIZTR!nC@sq`auFiZXKWpeZHWZd8VRR)43?0+S#m1n10@3g1RB zh=HCaD9j;R(I#)ql4Vcugb$07luPp|7D!+VcC6UcnLv^1r2dek*Fk5>6w9tzM1z)T z7u7W}LQp44)eR`(gzRLVERep2l!?v>!R2y!;qJSyx%!$f|LU*#+c(_!2fzP2zxne2 zcYQMa+kf|OFPuAv3CCe%8fD6SxCCh8GAMk1Gf70~6 9RVLFsTdT(YthCp&u zkr`#ICWV3H_DG?`KFFS`hTbwAgAIAJjj^A#RFA57OuzBD9|4jOBZp?DL0G-1t(YYo zq8nv%Tt$08@N#DG(fCQ>v2@?8EX0RA`|LJt2T^v(r%$Arfem+*sg$@*WuD616g>lA zcT#v(Sy9hrQam_0ROIF+vZpH|y>02J1bfS`+!z1rOyZNRf4brei+rnCvnj==FqdRk z_pxdtan?MTSc*(@2=m+#B+@Jn4-tK|kNQB(vzTkN<+-U!fgm7l^*+xh{9xB35)QWd z*i`IWS-lD5X-%Xa_9UK%bkxw5l8zB4#XJG~JDDV!6_1>}^V&hSDC+SM)C+uEism5z zje1|Er0dv#uJ?Ce%FwQH(0_?tC@F)m0)V}`RXq(cq5h~(i91I$0->Jw=uPJsJ|IR_ zhRxj$`3_eC*&c02BNtb&a2WpM?^*RI1wC$aqb<@eDHu0PocbAuA?Li=44cj7JHG8( zU-Y6E|J=|2{5O5WzaR4Eo4@&+ZoT#PYwmR~LK?>n5y+wR9Bk+=W`eMb#{v>@mpM4a zFfI|rK$hzu5iRAR=RN?)i)eZ8GjkWmF`x@FMUNykkBGoq$^`oWAV<vsI~pM(dKCF{1GEvW3q~z3~-60xs!=A|&U!EA#^~&2SjY zB4Uy=B|$}m07>Oc>O=V*_2fmb09yLW ?I4m-pyXo*_D%@8Pr!ar^TRN@-S6%nzMwF>0? z`*qh|`{iH$ JpxV$dskbURF8G#5@ln{~}D?&h&c{dKpK%~Wq3{F;k0w}Ek z`HaF2G!)d353_KWC=Vn`dV(-ok)0Hv0vbQ65Ou;RJP9KTQU)a9d`aeM(9TtHvRc9W z$iQ_4&nAzVfS0U9g2Wlqm)EQ3m$Pm@6Ok1q!OdlzfY}v@INJg_PzR_>ygFk-4 $*-}V8LX`0C~)i(%EaS z`OClji|0J|Igk5-$9?!me&pAE?bqJ#zW4e5@A=-#$CtalXFMm)j2c=@&&*tCYL`K3 zc~4k>j+%`K;Nw5x6CU^2$9?I)`O^E|_rBlw_22k)U;p**z3tZPZ@AB9So8Tm%x+1z z4ics$DLvIVqViA(LjbZ~rh_xfQoT-R6O^@=w#Mq$3hjTCf8BDVz#()#0PI% zQSM^ThYKw&&!@*-K(+$wgsSA-cI0eHc%HhN5~YlDu0)$CCpNNq(Nk&3#1B+zSy_le zGsTTcOF1oERfK6ynGr^ljB0ry%ON!=gi!2AD_y0sM{~|B(8=5e<$h&F^(7Gy!4AQ3 zv;&w?N3=>+Gkoei=+yX6&fJrRjw&gj`bCs&hMaRAv&_qwh5!*d6l7;R+=OKDn2!em z%3zy&D68Rimzapud&oX1Q=2H7N7zk~&rFtCcOn3yxi7ZjHf+{cU3<;B^LPK;i(m9X z5B}hP@=qT0RbTm4_y2(VJmIUqdc9t&m9W#&T|lW&_%5WCP`llqNc#3RSayZF0R}}= z$w^#@h#l%nG95%LJBcb+-d3iulHNB3QMbnq)GMjsRPG7i3Dk61pYjuGGD}^cT6037 zAxjit^tJVA8xO-w^*_?5#9UY)tQt>-WAe(xUE}JW4-6P{Nfq6RGB1esu}NZO6@l8& z?tqneXtIr#3OXa&xMnb|6Ak+@1ia`=6o6Q#0|3!_DWdzLbP)oanE9;^ 3anGhK9P54zN47wrH >}NmpArF4=!yfvB zPkGvHx7~i#HP?>AFl;sq`bd2AfKr?!bOB4RlNkD>`bd&4iWGs~5{)?ro*@lF05n7E zGbIw&ort)sLjxxv6W9mkh$2N5a=rqR+(ZZu$Qf}&WasRJZ9dBWY7?BbNY);i1g?uo zS3$v0g8*U0l4T^NP82&TIIP4->s$B@2g>Ri2Ixw&BA4S~Mzbnd;M{ajgG7{Nv#oLg zAJ=Ov0f947d6>+@Qp`k)k+f8>Qk2paARzL-X_A2=ALu7N6_O}+luZ&%9gt^8Lxv~{ z9Zx)ujHZNK=#hndtUWXum#LwuHfLAkJ*gAna}D*xV_{2vZ>5CEW~c#(k2X%};Nb98 zuYS!_p7OM({ooJWeDhns`}@E5ho1TaXV07+#!cV%rst_tXy_Z^{jUkVtF_=W83k31 z1jh~$dHEn=&iTv!?U(=FZ@==jul?gEJmCqieAVy&^iRLITP*ZEW%Ue5$20uf5$+_E zLi7X%=%Txp!3+O$MF=ZEB2K(=*{|@GNH?Q^4W%aQB@dM46i6bjnJ_yZO7GNOFzF;U zk~3vcr;8Onasr*D9M#tr8MdUnSuxc}$_#)hY55D8x)9j|KDyd-GzKI?g;pJ7K?^Y& z NM$nS=kWL~GV7wq&^#;>|EZ!$I3c=^$HVHsp zr3l6Re4 q5i=#FBTyMQO}%qmQ`Qf&e#s)vyz`79F$PhLxm0GW^=+4O~)06;nCVY4}V^|g22 zamOou>lGjQ@Q1(q-S7EN|MCC+)KB@8kNW738iq}mx-pMgPE2>Ob)IBt8q`b;1u3@A zZM`sQLqSVG)sHA&@(=QZks=6V?9ik@kQ-dGFcqo+2P` ht&<%FEeU z9#PT-zzhR63sf`& !edPAp+td4052IaYmbK8z|usjL@3fy2~>C;{;LB?;=9(d zD_ZfU8EVD?2_c$tLNx7Z=JHrkIzXi|#U8C~;2*V9yo6zSLN`xAJq7I)#wsCp016Bg zbW{$Mrs@QvvSO8B;f)U=m!nV>+NgmQ;Z~WmKNzwfPI*uk#Q^7|^X6zyJwuV33e |;!R6kY&Y?6asG#sPvbLXilCF;=O(Ag*mI0nJ zAvT#^N>q#!6izk37zQ X2oESeIxWr-lOSa(H0TFc<898 4wrL#%At}PkrxITTZ?0qgJ={yO*v<-oztz2<~k@} B6cx|**Dy~+x`$a%!HQhDmsPAK;|M^4H}6zcFruh$)ML@mLOJUl2;}6u z(u@OfO{hkdXvtqh)H89z7HsKLaHo!fgDSi8gsPe;2Bn6jnNnF-n< h37gAWEV!);&_L4Pzde%@}kb(l=}uyZ^`-2tX4?lA$92F!msR{Y+Nu1%Ds8 z&cqe_u*qHDcZ=mO{L+7U{Tpxms;_>+&;HEMy!9P#|K@M`rp?KEu~>kl98+K)L9x=& z$*;U*C_=NQfvHptBsB`EsZ!Sg!S(mL{$n2T@L&AJUwGKVKD<9zzT_o8w^%GNC8Es5 z`FcbzB O6--Ru&Z%>)}R7W-~LDXZbFojZearV*U^{z z%@sk;2#{ vO5+55!pZ9G2ufMH6LMvlal1Sr!lA@3N(sE; z1-Oz{j#veEpBNk23sJLHB(ck4XP#Qo7oS_rC1P4SLn1IbDdk$OP|c7@Gq2`gxNVS! z3 aU}vNcz1X*Q8xdFh>!Bf zpr<`XhYcC0TBm3=dv-PjnvW#op*i$fRdxm-%1Hw|DZs3p9%T|z6U*v4J9AptK}57! z4}I4WrC |qZ(fBwQxzxbyg@rXyh{I`GWWxwvsYcS$(u~_rX_hV8IjsSaOoC1 zX2)H~B0;X5-4J6VdkQ0%D@M+5lYpF;5fFe6H8vhq1P~#hWXf{34Pty2r>-MnmqHyM zW-VUlT@l$7CSO?<2u~i--&U_Z$Pj!xYr4?RQb#g&;FnJ_1^{Jy0k8M5Ekp!JT~Noa z) $J=)q5@X 86kV=#P2HOMdYUZ@lrd zAM+V`95 pF1juGH8)*LvW%9TE%0T%{tk%+(EUj;-JPz2@)c246#E{0?0Bu` Tdq)T; zACN4fpiSR!JK-GA1_8JV+Onp?z^?FDfEuPR%A_#n@o{4})e2>^2u3g#ln^0tU2}8_ zK)pfhGvJJXq~vLWgVts2ppmuuTL2(_Z_VYV6GXR^=r%M4l*&(bObt^M+z(W{?70v$ zDOB6#!ebV^nuuV705Yhm5RbRwtAKNidIGfvlMEFxAOmdvD%d#mYl2{U)nT?mU5WKo zo0Ys_VBq8@;9?UHn6Z@lsOU}cmQT+p@NjLJuf}ZJn=bX*J%WOL3d2**u5KjwM4<4B znh7w7n2G_yTA^l?0Kv A=%*}-CqX7zLa^|ocpQ2BF0QSbMjIWrAMwaS0Y5|*Jg0WQA<&(L?0Qx>; zb0Yb#O9iNTccoM~FRclNbw?wX;a;+4qR0xg#EW#Y0hHNGe`l;gm(n z0L+>eSAsDF?#ktyb1owdt+@)XYtPm|I34+L2VO>yJUdE`H!H(HuqsLIe*#FU>r(0f zAQK%P9-gdE{_{`##Akfwrw(I&+7JK8S3dqLt~zsev)Oc<(&E$Bi)zkT?;{&j)%|K* zsx3tFOjGMIg2X~N=J7F)dCcqI@K<--b=M;w_2^&wwO>n+u ^F0%h^vn)hAwy};jcgCjvVr{M6g<}9{s3C z|Mn|?`{?Y^yWjoppMKGc4~~uqX&6QV#!6Pc3!JUA;0$agf`pVHyPfqwUn5M3d(}vW zN_o_G_o?YuQ$;D6K?c%t>` pFo% 3W+R zySdsd{B`?_9Rk={0h!f^v$Qk04rgA6M3X!m*dwCPlU1s!8xw+LcTj=^MJ|of%{*Ys z_@pK`Jezq6Di4wrmLp;;;gS;RuS#nHUVI`GDOrFg2s><&l|=K~8BzU76l$WZ8B2g5 zynr0|jhS-4I=Ja?-be_2zj)biyz~P;;DHZ*@P~|fWYcdxL$Y*{;X&~0_N-6`m26LL zqbYNtpe7XnK=)TA_a&U7B3`I?b)KY@AR(lLb}$;LU!fkZAy%sdoJqj`v-?vGHyf}A z&86^YC#AYGA%$Retpjp~^?qa_ugnz^6cmYf;zYn12rx+qtBwQ!=ms$DL3WanZ1nbS z)xtuFbG}33{JK+tS{Q^{{RY7Cv{W##o?($xH@nR>rX2VS*-fecP;U$hu5$! A>JnKFWKyHy69hpxTa9=}x@N$VfE$R8=Ap%#@|{e%#~u1*`aUJ>l5l{86eR`; z9E>SrlXIIuvgNYAr>$HY=%ukIh{hB0gHb^IQWZ= DMz%yvi?R?B!`{7jBUpT2&;gt~9Wp%CMsz6a|}4W$hj5YM-{LK9~s@jaO@ zAUKcsSA*mDD>@+yCTgd#7!J$OKq3q61byuuY|1#bo9K3g6i}gvP^VIr!4rgnA0Q|t z@%H0Ds(-dHNcGb!FOlZ{xS6>^^Bib~thF2o>gzEwr4Q15BoOcxdZbi*Ek_bep&T;F z-<;-K-18}L+BPtg&IKS?XI0~&sd88Y&M*-^mJbl8U jetFDp2Ils?G2PfC)~`%9>|Cy}0P3 zB%;V|7+5{XLVYw8kPx4LVK2T*MD+0=_i?Yk@y7Sw`ks5=`#x{H@eL;@>(#-MU@R<+ zo`0Izn~}(XBsfG-P!h_i2^CuK-Z4b9N+m@TN&K&Gu5k9{KWMQ5a&4*{9$0vXd -NE3y-WY=xm(y-(#>uS7#281tCH6Pxa>ipZ&0BpFCfOh(Z2 zuuZBAYcgvt3>0=%2g7Yp&D5l 62- zfBmKZYPDRh*F)F!>Ta~{KF0Y3-$OYIo#RyS{YJ>m5kX4np$~n?m^ZiGcI(m6(YxRM z_lxC0>Qc^wxOCic)^so#F1QezHLhgtOcp@idkLtSXtUj<-H5m5B{0fAV()D-#cTOU zmATD{XPebU@M>cKc0y1Lvd}At9tPLkYvF{;mB$E>IhUs FlUW0mZ(fw^vLk zE)Y>xxJ1)3@l}vj3Pi?@I|*X93}AL|PjtT;A5&*6=juqXo>y@OqYQ{4@EQhT6FJr} zXOhhsWG6mrdIH04!{CsMc}81>HfbSFQF1~bb!gcO5Y(pakx8ioV|ao*Y?jOAdcD5= z_S+ux!5{Rxzy9m@oxl6z9{us4TVu(W@-^)hy*>3{?N0S8gh#}zQMd}bUlYqTJjw!q z`~@vza2>7WHgXYA@QQ+bnqgGZBSLQZEDgP;Pb)rrY8W~vb*ID)NvbFf&Po3!EX10H z?0!T`0~!kWpJHB9nxQLOUX@*3BsxbR_mmi0E{8*klMI}qJltv!1d5>Ii_qDv0O(Ju zjtrqCA%aNyl+9z&`G!cz450$zPbsR=EOi)b%Cr?6r9)_>#5f)CfHR5wP5V*s*j=%N ze<=fjlukfb-4n tVrEc478TV^1-5+BX`P z2BT);B)+Y)^elyDF4TZDcq1IMXY+)7vVsuTvMm~tEM%JsDmV>5-^eO6K<(3L1kS|- za!3(snP;h;igC-EWRYng5vs-Z2LhQKtoW0f)$n8k0A=sOmK#A$!-hifkdh{ MD}JrhvH2Eg zQB6Jrz9U?}6q*;H5>FmEa22B$UDxn4N~)6Q0F<|_cp4Pv4frrDHbTiH4}9PU-1vqY zkB?98I(PS7cix@44& rhIpusc|K~`^oohNz6h#smS#*K*VjW>v1 zXr_A4$RnGzHLM{3ps Ih*O9ub~-V{tg{K_dlxWL(!XCo*ol$4(5sJIvU0CBM_ zf@el~jtn%L7cO+_y2RD1$QFqA2piK85m5HvND_{67^}<&Y>hy)Ea*-~L_72rfb1+D z&MUK4OL| e~ryupscf8|$x4#cEz3$Kd zqU-x!k42L*SvkBx_(sng;WIB05# oId+iM(JI#>zgKBpK z tbz=jC+)7BD5|*W1Q(>xf?rW3J)1HV#Ym!6!K>y~5fBnj6H=l?M3hMmnASN8 zBzYvgjPDgl=}#tvkT9jr&(jxOP;DvD0G7+sB&uOn#FQY3p;5oZrp?AiO8i7CGA0B9 z@nZqFneX9YMI?erc^v!I>h{}j|Jyg+^w1Ceko9`~@|VAS9LEp)@DCryjhO9bKEUYh z#xpvrjv-Bx2f??$nm!| I$aST zUa(;4L6n6Ap^_f6Kx7L|S*%p>86-2U(Mw8l+?`tr1S0acciMj=vGlQS6Cu^obI=?& zIiKk^dG*_wf#f6#y=+C9c_Ho*=A((UbG4)nzUop|BTP|V{Y_xrT5*c2E&ztC0`niL zqUO2t>A+kki(olf01Sr%i-zSlJ}?%L^b8&2V0XJ+!Rs`csDjqel!#K-zxTcGJv=&l ze6qRm^>4V>4L2;8%W=#+8mK$RUD~pd1tL{^*YMrv?i&ZI0dSdBdYP)XE-ZGn4)iH; zkhqi|fOy?Nd;?T}nXO3~>==b60D^i(v6&)S|C5$zOQr~*2k8e0?QvlMg?|=fmU^~l zD^RRu`2kViva9f!4*=x 5@ld>} zj-6r+Rvg0?l{vZ!CSj-0n4y3z*$zU>>6dI1ry)?`+*Q!Xv +CHo@) zpu2=Dq$)uQnhk6gBKV;(AJYV+(E)MA6RM-4ZXvk58-O;ksVO&`1SP>Eh@^dDY_FW4 zni}MN&>{qZA$?qAy$zu6{oppqy4AuGeYhsy{Dq+IwLZ&!Swsa{asWlM+f2>S2D%hd zqoYXhj-s-&Me)_MCPM(hO)a5SyVgz)n*D<8Xg9g@R0>rP)?HztyF$vSWCkj*O=d35 z|Fhx``|SEqRgURrfuvjnB29KVh*}J%VykbwHA5g@M5U;*uu N>$uLQHlpBa)uz3sP@@kh4^=>Hc60 zm?0gSOi+m|-x9K{o-SigPbQy$5@LAI4ZCG7hbV;Ss2admL`|!i!b5peimp_HX4=_? z5 hcdD+k^pRGm)z*kII;0mfHi)S(Azb zAo3e~5CiI6zas)_38a!o^^{jtt831gOiN|TVRK3GlZ%QrGx xpT7G&@9r>d zhLJ$d@n{DJIxg4m0%Fd5AS;=LHf3eLa(I^HB|MN3@P_-`@JFwH_1QB=cinyGrHdC* z*DH$x>Pbpq%qWbX%vk77Wpr58-(x0FW(4GIalv6?ZG|!M3hF13rYlhUbNiT;VX}uX zY{&9A=20{|gGE|8n=L1pN0N8#a!kc?kSULn{RiZ#MbuQ1(2~=w uCD7+ z2n+P7zU4p-? a5Yf_}Agk4_PN6 z0y`x(1e3z^*>