From 17de2574f2a7e719e882f3eee2ed7b739a60edbc Mon Sep 17 00:00:00 2001 From: Owen Hu <103096885+owen-reorg@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:51:25 +0800 Subject: [PATCH 1/2] BEP-431: ZK Fault Proof System for opBNB --- BEPs/BEP-431.md | 179 ++++++++++++++++++ .../BEP-431/zk-fault-proof-opbnb-approach.jpg | Bin 0 -> 128578 bytes .../zk-fault-proof-opbnb-architecture.png | Bin 0 -> 160319 bytes .../BEP-431/zk-fault-proof-opbnb-process.png | Bin 0 -> 119893 bytes README.md | 2 + 5 files changed, 181 insertions(+) create mode 100644 BEPs/BEP-431.md create mode 100644 BEPs/assets/BEP-431/zk-fault-proof-opbnb-approach.jpg create mode 100644 BEPs/assets/BEP-431/zk-fault-proof-opbnb-architecture.png create mode 100644 BEPs/assets/BEP-431/zk-fault-proof-opbnb-process.png diff --git a/BEPs/BEP-431.md b/BEPs/BEP-431.md new file mode 100644 index 00000000..fd387879 --- /dev/null +++ b/BEPs/BEP-431.md @@ -0,0 +1,179 @@ +
+ BEP: 431 + Title: ZK Fault Proof System for opBNB + Status: Draft + Type: Standards + Created: 2024-09-05 ++ +# BEP-431: ZK Fault Proof System for opBNB + +## 1. Summary + +This proposal introduces a Zero Knowledge (ZK) fault proof system for opBNB, utilizing a custom circuit approach based on Polygon Zero's type1 zkEVM. The system aims to enhance the security and efficiency of the opBNB network by reducing the challenge period and simplifying the dispute resolution process. + +## 2. Abstract + +The current fault proof system for Optimism-based chains like opBNB involves a complex, time-consuming, and potentially expensive process. This proposal outlines a ZK-based approach that significantly improves upon the existing system. By using custom circuits for block execution and derivation, along with a specialized fault proof circuit, this system can reduce the challenge period from 7 days to approximately 12 hours while also minimizing gas costs and mitigating censorship risks. + +## 3. Status + +Draft + +## 4. Motivation + +The current fault proof system for Optimism-based chains has several disadvantages: + +1. High gas costs due to multiple on-chain transactions. +2. Vulnerability to censorship attacks during congested periods. +3. Long challenge periods, negatively impacting user experience. + +A ZK-based fault proof system addresses these issues by requiring only a single on-chain transaction, reducing susceptibility to censorship, and allowing for a significantly shorter challenge period. + +Additionally, implementing a ZK fault proof system is a crucial step towards achieving Stage 2 rollup status, as defined by [L2Beat's framework for evaluating rollup maturity](https://medium.com/l2beat/introducing-stages-a-framework-to-evaluate-rollups-maturity-d290bb22befe). + +## 5. Specification + +### 5.1 Background + +In the last year, Optimism initiated a Foundation Mission Request to develop the Op Stack Zero Knowledge Proof (ZKP) for verifying the correctness of its fault proof program. This initiative aims to reduce the challenge period for Optimism from 7 days to 12 hours and avoid complicated interactive challenge procedures. + + + +Two main approaches have been considered: + +1. **Generic VM Approach**: This involves compiling the fault proof program (written in Go or Rust) into a generic instruction set such as RISCV, WASM, or MIPS. These compiled instructions are then verified for correctness using zkVMs like zkRISCV, zkWASM, or zkMIPS. + +2. **Custom Circuit Approach**: This involves developing a custom circuit specifically for the fault proof program, which is expected to offer better performance compared to the generalized VM method. + +Our proposal aligns with the custom circuit approach, inspired by Polygon Zero's announcement of a highly performant type1 zkEVM. + +### 5.2 Current Fault Proof Overview + +The existing Optimism fault proof system consists of two main components: + +#### 5.2.1 Offchain Fault Proof Program + +1. Derive the disputed block from the anchor L1 block hash. +2. Execute the disputed block based on the agreed L2 state root and compare the execution result with the claimed output root. + +#### 5.2.2 Onchain Fault Dispute Game + +1. The attacker and defender take turns initiating on-chain actions based on the claims submitted on-chain by their opponents until they agree on the disputed L2 block. +2. They repeat the challenge process until they agree on the disputed instruction of the off-chain fault proof program, which uses the disputed L2 block as the input. +3. Finally, they invoke the on-chain MIPS contract to execute the disputed instruction, which determines the winner. + +#### 5.2.3 Disadvantages of the Current System + +1. High gas costs due to multiple on-chain transactions from both attacker and defender. +2. Vulnerability to censorship attacks during network congestion, necessitating long challenge periods for each player to act. +3. Extended challenge periods (up to 7 days) to mitigate censorship risks, negatively impacting user experience. + +### 5.3 Architecture of ZK Fault Proof + + + +The ZK Fault Proof system for opBNB consists of the following key components: + +1. **Optimism Block Execution Circuit**: Processes L2 blocks according to the Optimism state transition protocol and generates an execution proof to verify the correctness of the L2 block. + +2. **Optimism Block Derivation Circuit**: Encodes the Optimism block derivation logic from an L1 block hash and produces a derivation proof to verify the correctness of the derived L2 block. + +3. **Fault Proof Circuit**: Encodes the ZKP verification logic to validate both the execution proof and derivation proof, and includes the consistency check logic between the public inputs of the circuits. + +4. **zkFaultProofVerifier Contract**: This contract resides on the L1 chain and is used to verify the correctness of the ZK fault proof, determining which party wins. + +### 5.4 System Workflow + + + +1. The challenger monitors the L2 output root proposed on-chain by the proposer. +2. Upon finding an invalid output root, the challenger generates a ZK fault proof for the disputed L1 block. +3. The challenger submits the proof to the zkFaultProofVerifier contract. +4. If verification passes, the challenger wins the dispute. + +### 5.5 Detailed Process + +1. **L1 Block Processing**: Extract data from L1 blocks. +2. **Block Derivation**: Derive L2 blocks from L1 data. +3. **L2 Block Execution**: Process transactions and state changes. +4. **Proof Generation**: Create ZK proofs for derivation and execution. +5. **Fault Proof Circuit**: Combine proofs into a comprehensive fault proof. +6. **On-chain Verification**: Verify the proof using the zkFaultProofVerifier contract. + +### 5.6 Circuit Design + +#### 5.6.1 Block Execution Circuit + +- Transaction Processing: Executes individual transactions within the block. +- State Updates: Manages changes to the L2 state resulting from transaction execution. +- Gas Accounting: Tracks gas usage for each transaction and the block as a whole. +- Receipt Generation: Creates transaction receipts containing execution results. + +#### 5.6.2 Block Derivation Circuit + +- L1 Data Parsing: Extracts relevant information from L1 blocks. +- L2 Block Construction: Assembles L2 blocks based on the parsed L1 data. +- Sequencing Rules Implementation: Implements the rules for ordering transactions within L2 blocks. + +#### 5.6.3 Fault Proof Circuit + +- Proof Verification: Checks the validity of both execution and derivation proofs. +- Consistency Checks: Ensures that the inputs and outputs of the execution and derivation circuits are consistent. +- Final Proof Generation: Produces a single, comprehensive proof of the entire L2 block processing. + +### 5.7 On-chain Verifier Contract + +The zkFaultProofVerifier contract: + +1. Verifies ZK proofs submitted by challengers. +2. Determines the outcome of challenges. +3. Updates the L2 state on L1 if a challenge is successful. + +### 5.8 Challenger Implementation + +The challenger: + +1. Monitors L2 output roots proposed on L1. +2. Detects inconsistencies between proposed and calculated L2 states. +3. Generates ZK fault proofs for detected inconsistencies. +4. Submits challenges to the on-chain verifier contract. + +### 5.9 Performance Optimizations + +1. Parallel Proof Generation: Implement techniques to generate proofs for multiple transactions or blocks in parallel. +2. Incremental Proving: Develop methods to update proofs incrementally as new transactions are processed. +3. Proof Aggregation: Explore techniques to combine multiple proofs into a single, more compact proof. + +### 5.10 Security Measures + +1. Formal Verification of circuits and contracts. +2. Third-party audits of the entire system, including circuits, contracts, and off-chain components. +3. Phased implementation, starting with a limited scope and gradually expanding responsibilities. + +## 6. Rationale + +The custom circuit approach offers superior performance compared to generic VM solutions, providing: + +1. Faster proof generation: 5-6 times faster than generic VM approaches. +2. Lower computational costs: Generates 10 times fewer ZK cycles for the same batch. +3. Improved scalability: More efficient proof generation allows for handling larger transaction volumes. +4. Reduced challenge period: From 7 days to approximately 12 hours. +5. Minimized gas costs: Requires only a single on-chain transaction for dispute resolution. + +## 7. Backwards Compatibility + +This proposal requires updates to the opBNB node software and deployment of new verification contracts. Existing transactions and smart contracts are unaffected. + +## 8. Security Considerations + +1. Thorough auditing and testing of custom circuits and verification contracts. +2. Special attention to the correctness of block execution, derivation, and fault proof circuits. +3. Implementation of additional security measures to meet Stage 2 rollup requirements, including: + - Extended exit windows for users (e.g., 30-day exit period). + - Limitations on Security Council powers. + - Fully permissionless validation system. + +## 9. License + +The content is licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/BEPs/assets/BEP-431/zk-fault-proof-opbnb-approach.jpg b/BEPs/assets/BEP-431/zk-fault-proof-opbnb-approach.jpg new file mode 100644 index 0000000000000000000000000000000000000000..806b1fa2661592ed727840a58f6ecfa11cf8c881 GIT binary patch literal 128578 zcmeFYcUV)|w?E8`I^!rfA_SD8BUM5hN
2dB~6t$yDnv>GI53Jwtxq#tan2v@@@Q4a4uIVwIGW z>kQOwyf8+^eKFQ^pjUyq}f%%d G@L3H=&oS z%n`e75tF}N6}q+aG(f^H+DGRb+#VF6MzY^ZSSo!z)A93=jO%^>g|fCvR|{(^v3do< zfG5B$FtWm3IzO>#_Ur$rQ2$He;y0n{xg_e;)g9RYHITLSOP`O1)0VoyV_W8FQ_ilN z<}h Nl4`%KDD>0Q`%-}|WanJJT; zoLJHbknF9Q8||ZszljGBo}LeqCdYkEw`uhj-9*=~rr9R3sO8;7;j@y}lC}royu7R5 zJt5aQPSD0=@E~yrvg1ydY kVq|uj~QRg#C48&qedHg(Q-seu4s??+@Ip_qDrfm zBZj%|P;`BZ*y{!wfBASmalr>UeYJrdB7o^#Wo=9U>(Nqb@up$387dj>$hFrWDW#&L zib5%f*pau!Lw{VU4O*xHQWGB?Yn7HiOD+Y#hi7qNN5gtr{Kv}^4ZmP=T bhM4p+qjPUl7i(_oxXvb03Uf?0 zSb3@52Vy$beY3fJX@(hwyz)8|IdAV+yT0isAh0dLXy+G3$sQ+QN(Yni=lRy)`n<~v z$PsJ9`|kt|qsb%nT^~s{dCv*Mlg7isH7S?7)+1t`gfsBJ6ql4y19vh^;G*>Ke7Yl$ zx}Ha#`lLe>2zO|0sA;Fkcl(!W#mZ)+`MKrJxTX4JDA?d#J4+H1OO7+CRBF`a<0Iy$ z-^%uzf1{K(P5vH;^ $QCIDZ;{OMJ9mzi=TP|-sZ7lyBHERfeD z|5z9D=iDbsZct@#Ub(%3Z$WJoU1ZoPv`?4iE?D=#<7*}C>yHsfE?P&?QS5<#awjxH zrM+iUtV*i#05W@{3%U1Pa?fSU7eaLa2Co>lSO}h)!VUL4t@j?3zzS8RxEVUxFBSNN z4>NJp)tDd3qY?1h{hOJ?kv$&>$lG5?HAkXv>bpe#glLQ)CBC>&dtQb!B0rz)5bR`1 z{?&A&tidVZ`B*%0%+5DM>bX6fzv^QpaYa-##zfQrXJ==Jfxh6d_#G0?WH;2D)GhEs zCd?_g^lpY@fBH^BS&4uHkPH!rYU+4CB8@+Dz^|Idrmum5o=et@kC{M3(3&KYy)w=7 zds044o~P$Xa>#*860-zOg0gmjq*Shm(OYVzV|zncy*n^oN=5RCcoIDfZ+fD+-adLf z*0A}@fSMjHA%Becx}1@aWx*Y?$sl>`1PkDk`jGuC!}6F;`YT=*aWlHk!A1S$_I?#_ z#AehhsR_AcU?;ZpOFIM85uhjXi11vj+U-*p5zRyfOuT%_7<;^DNv!YMw8+Ma9odI& zD1jWazt1~Y*2VyFtQ2L X)btjiJ#u=w|wNb9ze13LV6@;;}bj8qE z{S^-PT@Pd1P!5ru)CF^M+oVmnUQ;ge3=RHBI998IW$6+UZijG)>|2P@5`fLo(ZDER z?0s&&V`y>ORzcLe0Bs}n`1U+Sf>WbLn!sXE8{}oM0X~=}%dHdIKp`@5Ve`g%i-tkq zRM#LxtS#gm%-X>z9RW&_cS-JtLnYW@Y9o*Jbqzj;6?kh7#ae6s{3ms};I~puLm1ki zak`cNIQTE2b;_(C^kz&w(&*FrA2m0EL+w7xHA!|&(PTCCCQ6#l&TsD(1aX2QTA1I2 zBn#! {=gf01>(_ype*khd;-!x*=uvK(dk)N@nv=@_0 z)cmsu?oL7;eLfPsi%Z9Ra9J(iGK(5KT&7>TH*88KtY`F`2VfBBGJoutp@1cJEs>z} zh#<4GFVVXxK61XVP%Z~~N<0k9O;S9I=QFU-&4GiRVL$hgB3(B-%9Vt#i{Bvi!6Y zltbot(UaUgvN9I)!JCJOy56`FAKx^wFHnRl@-my0j$)Z<4bw`?))2S3KcUs-W@=J@ zPup~9rA%x)464)V&HxWAe9_Xt0Ny}NP8kUwP0yJQQhGU>(~~+U`Gpv4Q7_?f@5W(v z8+9p66B?rO*I4YM^)R;?>{@Ze(8~)k3YlE@F*RK6c&bw__E6vK_wDTQYZ$ITjw^ec zbEqB}djSI10RlBHmSO!cL-0Rbu(p<)y(!JG1?`3wrsv&9X&UY5pQu^igfgbox8cpQ zRrkhxig7N<%Zr)uq%l6ZXDxh7{>)L$l4fZsZdhG|$+e509UigP;Vw8bOLxVtRecjm zMRiEld02%t&Q%Ws`JgbB=#rwanH+|ffvG+W9Zg=FcifgAmoJLbAAvb aPhz}dqS%WQ3Bywp*5S47+U$F)zf>EVqlyzY(sR H=LyI|=4Y+-m} z|5DX_R`jvbNJJ5~GS~B6n!r;3$>VPSDY=9FK~rhJc-A+eIM f#gdZu_wyqA8!8kWL$>RU=(YTwyd|Zn$XD-Io6k9GSUt2d z`F=l{2X{~?t>TnZVu--lIP8 DyO8$8rl0i`PSZhW{J`$v>M!VAnu! ~8l{ajWtiDtdRBbpi~2qnAw9hWTHpy=u)ioeB+2Zm4DB}@_@ z)Bw)|a{YtWa})m1^E1v^UqA;p!U4us)8i@B^7kHq<%&3Xg|p|2?yRUBi`FDLGD;s` zX0e_&$ySC2^xIx2npOTTq5KACQvcvF@Ok8u^U!olM>-6Gm&@tIB4h0s{PCbhe_O+- zmmSkd3w4T|VX0E@*pdg8T&{UKa$`g-IlpV9yj`OK;qP&~rSRd`{Fy`J)C06l=`Ihp zeK*}#rzqJ^;qLtM2?!?OM%Y{L1#dkl#vBW`G9{L<4)Zzg8wE@Tt-)e!>>iuZmjJSL zB!;h+FyNnnvEC(KPtFb5qvah5`;gAWydai|;l)#_jq&V77x)`iDAYmuEvDB#p^5qf z@OX-9L33t>jNsECnP23+A01_H=aD`?u|#nNN*ijG6$-xhW;uERoEQ>eXCZ8)JZ0a0 zpkPbTE_pd;GG{y`1@YTzNS*dv=o`xGry0ryfSy%(I6q3ji;=V)?Ui5mcKua_vytQ1 z_L}5eFemp`Ep0OXYo(ajzorI+Pub}1wY*vwM!L~%*8kHzwKpdPf!-Nm0xH_1Gqc0N ztGi(L5ppL4)vh1VsjfZFz;qiut8r8dAyNORG+z|dbo0Ovtlb{h)xU!FHR(NH<(FFi zvOkJMDJG}MCo6$=mWP?898pm*qJ%9lV#Ijv8X`3KYV~YsKwxOgX;60;AeELQXKAg_ z54}u+?1khK4;ZbinYGGt%j%entXhTF?zg*K5?6r1%PCgU--LExE31O$yu K9w9Q z@>lyR)S8~O8 z`PH%SvUapS$G{#q5e_Q6`2i!sNt-L|{C zG%`UZ0Vo9uy4=$n@sQF9wryF*l`)3azHc6mRYAE- YM#N0ZAk$ zh;`{!+2hK)K6v&%u!5b1tjBn|`hrnnhh5X;{L9Oh=M4iq5zcAj4BUNt7J2DOSHLVa z*W4TKwt%R`Cvh++JL9;aKaO7=w$&VWI6kpU=d__JJeE-l#l%1Iag_>qhL?OCD}vt> zcIAW7vj)q=VBoGwJzZx*&kfBWm#QajIIa4+P(Y 86R*vel#!YCdts^QXV(k15QET JGCDG03_usnZgqUdT!@ De>v;?`v_j*+*5nDxbpv4}+cXne zYdvkp8yc*%3Ye~$=tYwS?%ADlCk9WXabfD$Th}?uG%~qEE&JM^atWZ_>lSkA5R0jE zC(1UFwr*~iNBRN^U?e!-5R5)n45~FG=%%42Z98~9g0Mx{BAUT3cW>-4iS>Dua#a(* zl7;elDjn=@XTR)|i!YVQR0u}R;rI~ }`9}7+}Y}{K}%csG+D32+p z(YzCV)ied9hOIqw_iei_knO6Rh{?_B_-hCp7As$rB=<~(l;ly467xZ7M)p<4LVFZb z?2MeFp0b8V+zZnK1WC)OY3%x!x~mKGDEVnW+Z`|*{ngyu(118uC?!k89FS^fUPg;_ zNmpmPVfBUw
eOTY{@*jJ~geoOE#boFL1{Ls!n#XgRTc5>#WYG0 IC;*RsQ>Pik`z(8*6E@OFl>X4VIDPGoNvVG<_m| zJjur?m2W2Q0keiVZ|@JJs0HCn!H|Lf1knGjqJ@Nh{3RB-k!j= Hxw4NA2lgP~_U8%OVD08tKyt52XVMha!dTQB0DQ}*wwpTrfkx%J)vAF-)TBIVS zJG~^bT)rW OW zfbm79)DTjsGpSNe=3fFee3r+1ckMcEb4IZ|^X@Kky@XD~OxqPRJ2Yw*jAQ5F#^zR0 z>5{b*#YscDsp$IZRPc^JDfn1E22G{KMdRaOFF#^PkJgHHwfMSAcYR8VljupZ01*>0 zw^j%a-krR!DPZMz{1vM8rXj>byTItn0EIh|sl>FlGI=-NDXk7S3|vx<84l_tsPyx6 zJ7i6AS>7$spZ8^!BpMe0wMb+)64QdAQ8EC58S?Hd?H@FbG;PTa|8)3iU{RYQ2a71Y z!_-0(!rH!T(kgU=w5t>*U1is3D0f-eA7hq*(ib~;a-nV#_TGEghg9pp4FfVi86>9Y z7XDTCkRSJzTO1?uPVd#D!!%dH=&*W7#Jhr|X%Fhkn0nyHpejOTy*}hPZA@&`3_I>_ z(*By8dP^rc Cmd1pidZ>*dYb>W%&`u*9L*{S&9Xj0}cb+wJuh&%1na x&Xyv7g_LkiRDjoK}W>e$N4>+(&oI(*7dCBtx1X@;%x%i zdz7FOR6Te*eaLEB`v+F^HE9FfCf*^Zf0DgHMS8SZXHug=x=UqBno=@)x(Tfj#^(?1 zY@g;nNs)a*nW-|@7M{9$1>tJbnvjqM9;+O>MH0n)oTeVVSoA!Xe{sPr#(ix!)2TA{ zFAQ*%qNhNKiGfGTeeO$hOMdZ==K&j&e2X#PHnd9Kf)JfNWD#lO;UBwX)!{}f3)Ipg zUx-6}E*-I7Nh;_YiQnJWF%f(J#q9a|rA*Ox^yVL3euu~6HxWI?DceQ3we9?-X_AjY zM2Gs@p!kxgGxqWG!y#{c`G { z=>ul^dH+S-mIS^cNJ$y%pw3A(Cmgy;`!Wiqf}H{SNX-wmKF|kM KbZZJ8cCb91II` zSE$~meu2f3QBUv}-UK*`S&}~oB+q8;q3y=#FNZ`axkaH&c6lRaddXmk|J?fAhZt9T zc8pnY1g@6fU7>|oGne1@hs;`I3%A~e;`p6)t-)~5Esxf(cbt6VGskZgxM
WuZn*Lvn#1H=52ZxHohLj5WUVIMv$!1}Tzx)3-gwRaVV@Fy@Ts zqYdAjUUa=3t=ZhHLh4M*hGGlmLLK3XtPkc{NxUPEyFVDl4mu9Xq?qejy^i`Y3vbX^ zR_6oBfnlDj9{hOXPcclM=CmI$nk0pd`8pD!efE*+KVk>zx$(%6pHLy<*-4WKaBwah zIpM}w)9sm?JRrFw=TX>iUSjIr7E3)Ss+$tS&b|`RfaSCxbI%{%gN1i?Du~4Tes4R> z$v+v~i1B<-cF<67^#T*{Xx~*e%Syg9P^Rarus!J3m{R2FFBeuUz9SwqF0#dIeZ~}L zp905w@T)oadstk_#@+Efn$r;29FqA2Sz69^`gQV`_M4cj7`8~pSWX{Y*wN~Siucpf zey~T-p(w!HLT x-b; TXH?w1L*q zt-9-jy?$m|aZQ`4_k9gaKBwWi!yW-+_M>)RMO!=Mm~?Y~7aY-xDfoR{KXt1up30u9 zQGIxqj+H)L4a41btRitARyYm8z4Y_KJreU?h-nPQPUcm969RMw+hpDF>z80 C8VBcFL6Mj9U=im|WFr<>06|rmbiXj@_4Kg9nci~8NzcqRExFKd zE|6OSu)IJfhcCd@;$Fh4*Rc|{qp3(axwzJlxe$}$8HZ %M@_waXd#g*Yg8#Ae6yL>;E6HVr*bMF729F>&{7&T){{ zW_H5MHPpK+OOcozwAMq5PaoMq1tSq)5Ar{~6?yTQmYRFga2c3hH%bw#Zlb0>hHHOO zFIqxqH9K6NDYyD08$HxnJpf?CTz_e3bPsjx-TUW-1(gw32Hxeccfg-uN?$2^Y8sk< zPHx`ZE3!h@xvnTsckc0#7Gw378IGjf-7!Q^=9`+MtDtW}@ ?GVCV=rlUWu>V&BS`c?Q1~zo5XZaIYAE?ui48fOs=e8d?ke8bjaAd*t z;m0>9Hm<)_6RqLx#Rf{vlazaj{tkVs8; bbPaiznb~l@e#;*U&Xb)JvmZ zyOzppMka!>;IWTgsxph@V|eL@l*+io@ByavbD0#6a6P_zvc2g-RNHEy`?6?6MwDB> zvuM(Ozqz@4!=AnDqsH+H^vsBjfAzjPcYmts4EQNF#^o;}zHBny%4tz!HDxhRvzooo zSZa9KD$=v=XYqIXzsOV%LB@Rt)|~suKtbQe+^4l3?)bCFE4d)5RO~;dCWj^Syc|bo zQ^%fXt`GADFa4pI0K01sZCc}DR#@u=hGkpppOLkHHfn;wU~30`@Ns2sX3eE!7s91! zwLpaS`94)b3E?bte)4gIS)t+F>oI~RIYyol#cQ%IP7CFSAr+G~4sTEccy=^Z%mLOs z#8ZT07ngM1N6@_E=8}7!ki{bXf>rRTa&W(7=+`I~#7U8=FKOx 2iA&=4B zv;g^>@sw7xFKlgn&6*rJra|Kj4UXIy&23r{1t9is1e9fCHPjDEX%SV{719ZyfKqoaY-8pHPQp{n5o^Fx`WPr!U3&ZJ0J1j4 zhUnhT%Ok{S1F5`YA79e?C+?~SkTSdogBentWu3RqlR`*(%qh^>&1 @|#fAfM>)dnI0%D1cZ=m%K0+jq%>A#(3fEVU|4D$ zZE`!_RD>P-%_>*3R-g$F>i#--oNuKg!SG$Y3&`);zn7aWC(jYpzdL73C7fTdd%KbT zw&llw%7EF4`8u#HF-o46lh{_US!@*}7o{Y?w3occYI%K_^VlWN>}h<-r3xO=iYQ6I zj33Mw;f;JY4^54IF$Oopw{`e4-Li}nnWMo3xIwA?=cufVXBEJMuKVAFSWwPmd4L_} zpp<8u@+jq n~a^SNzDC$99pxmuz9SKzn zV%~%E!KDlaDLKpV<)8RXybKoZ$PQomkPs3&tD53*3+UUv<$8YWi(Z8&Ui-a8_0Gz* zr)A8Hn11LrN0ZvE1^d`7_qSI;?<~{}+YCK*R5PWw3Iyx?yx_)(yUh~1?#FAh6cc67 z-YVuXfMbAjobMY0nC_8HYN41-Bhw4Ng(~GhPsPQ%fl9TaD~0Wk)$nRKfU9)YLpg|K zRANa72?y8z=y0oUZ^lJ|h_9h5*O`8x!=3?ydz}s&YArfgluj>}4k@N(98m6P0_Ux{ zmKjF+;4AI#n=0Ry5qQ`0PYXwuEz)XEVlc&*39Y=#?bLa?TH<5EHc1w8l11J6Cak zhLgL3cF&ZhuJ%V79AFT62sZ>?Su6@F6S}2=05y>FnzB2^LHH=^ow>!YKJS2y|a?7^GNeveQ+za;Cbj $#mUSEe<@jjjCfa$gMUwv9Gtkv zIe+P9i6HzvN%}*c1^3l)O<#nPUvWgA*XNf!)22y%E2)yaf;(K-%n-xK6gMe$4fVtm z4E!eaObl^ollpH(`CszyF2-6O7|>?ZZAw)`$y#B75k9$3mFuPOxOy>y$OsYmk;p`l zzX_@QbTdkDYv_Vx#d7tU!&Yw37d@XHB)lYsgWzg4UQ+%9vJ(XJ<*0Hec($JJH=!Db z8~wx}l680jG43e|W4_w`eE4H|Mv QJ*SB*%zkJSk-2NfTurI0QPN^WdY+y Tq>{SdMnyT=57*nx3yYch%RKXC_U^Wkek 7e?FRa^k6ameY4Za$5rTKXZ( z?f5u7GpPA=rb)hgAw1u3e{3(N;+9eQpRA|T=Q-;&ts4wW14Bd0@af>BnyzLCpaA)% zr0fItdbp^e 4E!oL^;zlw`Qi%`ff?t{zFP zNxj>xWr`uxu3U)l$0!yJ2jGtR-r@K6V@ZWF##7aUje5xDx25ZR-wJg_b ?q1)Pl>{Ug*_x7pr5(w*4g&|SD< zR(s4X_6eOk`mNm9{Lx%&dqsPV>#lLd2#4F)IaIK{LA$!f0ocLCp6C?1DPoc)Z|c7* zERM;ej6{3a!0&zzkQ*mZ3(DaLi-UP{ON!nq77PV!kB%Bl2Z<~xV67i!1%z+1Y^a?; zjX}C~CMEgyxd_iltv??`rOO(_7KYc_y0;& b2Stuho5FoQ}tgU%!Y48Ht$Rdup>vK*7#QQ@7yRwSb3 zC@Da@3gEG(Llvc!qp;N_)}%U4_spLStXQ>t_(Y<1f>ka~I7*yYDow+ygYT-ADrOcm zR1$&Oj#Pc(A#rCcQUSD9vwtawS@``*!76orPh;B=0hY0OJSmn_vVacRFteUID4jD( z$z8ht;qn4ky3(e!2k DKFshf5sa3zJi<(MyxN3mJ93{#9mUN&pkWw3# z>z=BXk?kH4lj}%R^lePsD^FHM;sF=xP8GUW=K5tWvec8N)bv(q#Ujbehrz!NR(MoY zY|~tUOhc+1xw~|xH^5kv*?)*#xnT6nE9UNDWluztbhwV%W>!v*v_Ulg)a7(fk;CZ5 zMhK!r=IWXTWyO}b{UaTO&+2Iv??T)Tq qtr-j zccT=p+>(`itf;ehG$IG#E{}Gp7nDWsjK^btH-u9lK^qy9B8|-5bDt0K>qwBNj4)C; zdpe{xSB0=F>9<%KDqHA)%of|f*U^d%96H!_7{>$7rm$V*uT%xheiPyl<+I<~HO2nP z{LF{mek)K1DX3A3iyJwX;&!zUD@w+s5|ic=|8jg6>-b5{?{27xAveg#7re(0#!h9Q zt8J k%x|0o`SbY5fo#IYSdRgsw>rM%o@&{Y*@+`izQZ7mk1Zy>t{utiyi0zEx z`?-|sv^UFh%Awu1vxa;BS}q>(h;r=-r3q`Ccwi>@kG8D?*87Rb3Uv-B zV^st!(2~}i9n&z&C2bZ=TyV =fEtA8dJ zd%2ZAR|7(ClrAoKe&1|$ 8{<`< K8wHSt(B=xXgeTAnXe5N}Xi=g~H=IUNqXHA+EH*&lfC))J#Z_^bR&z;Ld zg5*Q8y5}Qvp3GE%qiQ>Kkd5ZNeB!=W+e#2G494H!37msPoP5lmsW?$_wGm)=jJ}Wg zm}HOex>NfVXL|0lxQtsa2}7guXv)(r?U35u7W$!$`<_-*nnTVtOC8MKMu*Is^#`n) zbQh-MAe;HgP8$|H{f80m$++SCzm14fvOT&>Vgr{Hx+-Gz%wK%X%0|V(-3pbXc%$`B z6?{jn-@2til~}I%Knldnw$nSLbC@V6>gR4`u&o|Bvi7*d{iAEK@KBd+dCg#Zzty$# zIH!g+o)`r-npKjg)GqpR`C eLWBX8wv+t@CET&qt;d<$ zGYZ1uN-J*%6=4e!3z=SWfPHCqz*J7a+R86<3fwXhE~;m-K{#JYe6w!}h6a;;O%z1! zx$Sw{H=I(v9VU`E=VS`SD;Kk(=~vE>llM`1!5@=nY`bP2_ppLH ;}tY8whii2 z>w053aA!MG)OF KE*-w-$1NNgJarN;56@lv##z8o6Hf2!n|=qq3LX3z(x%z>iT! zUu^agrmazAUl2f7_vQNX=
lnk21*o>$SdhyKMQ_2{3{oszB$Vw+G>Z zIadS>rrt41ik{pCrt zWbtofv9+ Eu5X2;0^^oA;q}JPjGw=~~npXg|e| zj?bDpVw kmfUrQd4S7nr)E zTh*9{CWczq*+U$Qw+8F{&P=EMN#H?tbrWFs72fIizjpwj99FMTf_mxT$C9$I;P1 zl_ckCX`Aiwc{(#-Q8lOxdM?>oUDsZ@bFl&-yg)}ur6J{APTXNiozK)GhzUzQD=%TY zam|v=N#*?c$)8>B8OEHom-3gVBpJ&mB@R=1pEcErR=5TKJqcW|`Ao| 1}4w;*ei4o-_Qii3|=QG<(raFRHedo{}ia`ot21!jva`lp4>+O1aAUYC6 zhu})` n$bZd+{nWTJM#c+AN^NR6=W1u^!;>QSYUdG5jOn(Ce(T>i3$E&< zI#( yL>=U_#~achy{VKs*HVq@410uqi?cNl-E=OIvmO%*pmA&>r3O>wMM~lh zzRLbyVY|B+Uc+}2-#{P1ordg}UOd>7Dd(8VRJxX5eGY^|R(2`|COQc}`)O;cW{wv? zW%xf iPLtJdGi8ANP(C99Z+E3Hg zN70gzMoSK+>duZTetp}kM qA-6 zikjLjX6F4)qYU?nW*~KgTD;gaZ5>{mkyVo`#R?GfYcclUGcZ|h6n|H8^U2^5{H^M8 z^_*A{9aWz}JTI%G0Nx|v@`yP@_d8BQuu6J2$MZm`5S-X(q7#YR>nKBZ%X!6nlOsd7 z=!y&ywsPDt9~1RmSoA0`ww~XzbT~hgtJfo*=Gdgq1TetcVDR>xj>MHc&40ByNN8bQ zLPx2EQ?@;D@$fFy=ASy-$!j08Q3VX_Zb<3tI{Vx1W)4zqCLo&t1$2djFDjQ!Bp!(~ zXAUmtP )*{0o;764`rlrnjWk9KK)r_y;3=K)Z5gz KJ z8z%S|#)KNX+B{m9WqZFW&iE&9^PA8Qu5T!7f?cTuoBMF@Jr+Mz@?2h!A~@bKNCfsb zXt15oUhfco__8B}rT^6DFyg91RIA#E4L0ra%l&(-8}lV8xQSlJMmsow#*=IlZWXUp zbqCDic9=Ua5cbWaH>F9HTGOg O=NPY#KuAgxyTI zyfPOUs#VcGG*;#nm`Iqv< VHBWC^- zpAGmnJVqx6v81^_f#GG2D>FTUUPhvP1oK(RtRMP>lh(sdV&n^fS2bJJv^nnwO?!gl z)z8V<|F(LU_wpzzGKl|BurbP(lT+e{?_Kt|LVTq}@Y$b8ztR?zWj(n)u@79mDVhOe ze3_~p81Xq-i)SCcJ`9uEqq!w6QUgm$St@3bbeEDPs}(`@Bbx&IyC1yWcZdMM-e*_3 zOf|mx{jh!al=CkoX;(Wa6)tSzn}LndI1K;y8Lu`dveurjas~HpV;1{E+toF3cDbsZ z*yF#FK7@#N(BrgM8VC6gYFue+YJXeXIapcB*xT%eAWZtq5x^tZi_=PiCzQ=P6Z(^V zRo?mLzjnSl7_6_fY_DDr-}$&{=~ZLz4x}%CPF}t-=kv)Zr>l3L7-nz+7EtefpRn&! zd%~U`_;B+1w3 DN_TdMgRl31GDEoU8zwaJJ#|;)i7ge?>jdlxqKDpQ&$Bw zi)fHo1i#Pb#pMJ$Qk_JQ6Fyo(3_DHb9>sU_&X^anVgc4Qpak!OAUXTFJ=Gv=ju`%W z4X4Al73!xdda*&(uCt^hIpqYu?mipJhlB1w0hL%4PNbEyZ7W){HXPDT?KX^krdG|n zZ|MM0g=d)Qh_1(ICIdCWcd~lYT`E|9{}FhNVMQ9{JRnkh)ZlyTL*^45+9m+*L{s@- zd7YAeG SZMva^;8j9lrwthUpcr=Tld_D5o&yy(SxYcb`d?R)KA z(j1pX6Maj$gOkG!66~wj9<+O^uJ2h#6n`WtVBZvB0Wr!6UrO?_ea&Go*ra5aP1qH# zo276a0x@^cNa%2PYv4ubt)6|I5i$M5y%(u^a@N8@;lHl9|5={j^sDkT8wb;emOE74 zj+!>im!~-bbZ|tX%$xTs*T8(q{MONl#U6FEflD6AE+AJhG8z%}pYQ+wmA*fV>E@O- zsJ!ni9Iuo@X!dtG971;gsqQcQD_$*ZbkRVqLf=oRhXcR$VyZ|_fPCKgVeo77ALuuc z$HCLx599Lz7fL=%+v0n}3<9pUE<$R}aeQEGlG^`mT&*&1n{8ulK?G~Gf*(O%h`>E$ zloe4>ils4()pE4b#$?Q{_I+>1c%9buE07+=nz@=) 3`Bd7fdT~|*u?zgTR@**D0kyYC?9f+2aS{tejk?np z4F3n`C$qo4;>Zbwx2ZQK(xgMQI@956!vUXV&;Gw-s7Fo^ds5A0M)Dd($SSg(U8+>) z^KOj@9|SPCQF2)&$oZ>gTo^y7OI`9uojFDIaC>T81H=By{{V#sOaI8A?{Bl)AYue8 z3Pp@rC#X*MeOWU5fBOEuEq`&( s(LVR1n z_W5zyNGj&kBPxe}DKJGG(U(7dlnd&{hRN_OHNLj1y5t2i;1g+v+ixElIM6Y4iNT{O zaLIVN{&LyVqxdqv*Zg11!RUIrpSDpX2=2BY)SEWuHV?~urR)`)XE*8{{2+IJ#E3g* zyJxMlvZ6AF>1vku6vkqDnz~P1amiVGu1hWmwTKu{>jg_}*M-$_)no%NPg$J3zPu#$ zu;M<0*3Q0D@w`Yk$3raB;r~$f-eFB od5~F7f)uNZ-0CL&h=ft>zwxw-W9IZ z-Zxp#TI+f4`(FAK=R48A5Y}|pgX&&kd&yA{^|x)Y#k;R(PgY$1@)qzIj0Ay1`1XK} zxs&l^KV(Tt865Y}+s6=7YnxTcB<-a+Z}si8nbqaE7uE*7j&fP*X8ohs%X-e};h{tr ztg1nTf$?oo+uEgsr`E~j2Y$`9G{CdIbNxvBK=l)$^jplb+Lqghs&WH*cgLIWvSIaR ze2iX-c0M&EeMtWcb}-k{sE34^DsfUEm|Z)|+(O%dsBf@ L&2EpYSy3=`Cd=UfS`b}DNR_*YzkRwMU+3S3Ua*IoIiNsFqYb+8O855+?yih zHz;IwrVdnc@s+AiY?cwPy0@z2tM6RT^Lv_`1Dmsn83rXz75fXIGii~^x09%4b+gEk z{2KM!3aW8l-M>>?VRz{*C(o>|c*nmq5w|^zMoCsNNRt%Z!#fbbDNXcwTxe$;f7Ny} zQp(Hf3I)81^c}N?Fe2psQIs)n>O986`*S1{ i8W#Iu!9IcW1a3M{gyjq1 zF#TI>4B@hfMTbH;=yWY7?oA9qUidqg1OLrr_tPXt&}3NayLCLMroE##Z_`LmQB4~> zucbXvcR3FKqhsU3Y2uL^P3^RkCw43EP@I+Lzj$;@@2KBzsUSq8?48>1UkBO)LJ9!C zE|II<^9OvHbteREk%v&q!{ky c8M`SZ z?Q`U-ss5d-XUy-*)^{%5GKaB(n`+3)hAH}(3%IstWGjQP^62`!{=gfL z(=_I3K9BI^gN&S*u7QTb(=ihPmEOS^oxrH2S&p0EW21uQoF+M$@!Qsc*o1nYaV3Yc zDyD2~+)vSL0`Sz@D=!S|m*=~|-8Ay5fa&L>8hc!t(2=B?rjPz*ncCW}`Z6UI1^~a| zU}K4i7%JMrVA2jp*phwfpO)FQl($+{=?6l33>Z6ThkvLy5F7UY5DxJJPIYtk73)jY zl8a@F-Ls;YjDo`WACuU+mL#{4;FSeRq{5t5UfX%$5c`Uk2|}8I8lQ%Z%Nd1{nN+5> z)R_ENA>7of4{r%A Qq8(r`FUB8y~z&*0t-04c+Xs!I^a1) zK8BaoJ`H^}x|eE8*ZM$@yw~f*+Kfy&9I2ic=>JOpwN8a~=X%zAU2<6FHIiX**41SU zrkyCD(dq}WZ;B0W_irAfwOnbic |wVP&xIyGiIh C$*-)wS91adktZCp?<*s-G@{~eXT}rAQ=HiMr;*$Utv^Qy`0K09xi3b^; zccqI#S8T6UZC-^~TWZ ( z(jLxcv*rK}>KAWaTQzzeyQ$M|`on%ClGal^zO1mXv^;Xi11ju4-#V}gN{vH@Z58tF z#;tG2f}EJZKg#F8^fWboZM}shyXLW*mkX=&$tT_|LpQxr6F}qr^i!fE^9rG(wQSYh z_dA!J!Zw^FI^ZC(WV>5u;$0IYf7CzLWHCplU--`kQvai|f;Z~|tu&2Iriu#rR762_ z-ePzwasB9s*ZF4So87W+VZWixx _K5$>>r?kI&H4= Iw^+Je=c^9q+$Mr& A=#V_^ zAjRl`#;++KGKjHTsRyZ%(fV!1ZQd$g(Le~@EVDuva(KmUHY-b>MHm!2GS4sUjg&~I zQS^*2fWcdacE=rMpEBd7-o#-+3tBOv3T*F_ZqetQ-(@XhLqif`yzJFi3STi@yS^e# zm9bg~l kd{$TuGt*P24` zTFCe0z)U|1!=e7e7hHX`b&_eeiw?3i%5XeNp4JajP3ud;1p?G~tn&c*qSMr*OEO6n z=Y-3+t87quZ0ubrT_51psen%UVFUmW%-MRWy!q#-`M>{j+0Q@0a{S1=9#LwEA=$zb ziW)PrQ27EU#p;j$S<5ey)w~DPGkPMnVXteaO(bNXl* zRe;T!&2d0s>f7miu9pB99JEm#)u0Nxe)46!EdX;#^+xTu9C)>uXv-8smA;VNBtDpR zQm)k96T2PqKlFAH0=Zv*i}jE9@yIDeG3j%P_x6xs63Bo}f=K!GFVcR)azKnv)`?fCuD6+`8bnA;**>wLCLK83>S?i-b~zb^LILEL znmuBl{|~MH|NQH`O1*2oGb?Z`+!isPK43l%C9%`Le& 5u4fmY8A55DqyrcpdUs zFhHOJG2@3{NS3VvyV)f}m(VzbL0~hW)bOJWal G0cX&69wOvlRQI z{DKrhH=4L|M>Z}YyIt}5f3*I~L$mtj5vU!-4wvKqDe3Ech)Rj2{gzP1Ufpnm0FurC z!w4dS!Wec;HWHK68{Y9pz=7VOR?foDR+@#uA B~_B4EksSD1k{evO_)44>d z(HBv~aED)o!?H}fmhAwvixQ?AorWdS&EN|F6z4haA3BVi-gGNVF@h-?M+lEt>8==K zs-uU4V|%vvx9PZO^$~qs$im(~*6L)55vm7~fPxmEnuLdAXBiustt_Jd;^8;)snpvT zVn1h5WG@i+W$OxYqP1-0#oB&>Q;P3cv#1!d*QetalJC=MO^fS+YM}JSE@MC9^rW-p zs>Y!X>o5PEdAl^s5%1SEX6AP;-;0l1ngUzeq)&c7^0(zbS;>l(2CZDVar8{dhF?o? zAe&OgkdgB-bu88CVSQfu&b8vFcx*ecawRG1SuIlBVV1uSAhC%cE)7~yPihvWPigwO zrypwyr|!jBYyU?&Vt~q5Rz9-r^Pqp3-eQS|U!Blua?y;XS@Iq6yMO0ux^?<7roKXI z7clUhEAkPiHv!h5RY>9K_RGUhyE7k4mU1l$F$YqpM<>sAcBvj?t&a(3EsmiNIj^D{ zG%octE~@PBS7CJY qj>WsEe+$43-J=bqpor>UC`lYxWgn+{1pxFWE1VXt6uP<<1DDK z4pQ`;tJ1#iMDO8FNsxwnuu(6J)Q7y+oo}}kAkWw-8>7A(ym=rFIGGpNDG83LKD@9r zzNnLVuR9ULcqvF$sM&6v6dkYpAzjz&v Z}RadFVs!wqY`Bvc`OymT~zccG4|;K z@>h#n?d&!zCBm>RK24W+jaNbuP?&UD7rn b?>eR zeuaDXyp6+Xq%%dvGp7aKFo@FP5jZ|86|a?MyV;{GG1cQ=N}61r_5NsSZk( a?wua|^1(~^U0#pa{5G1C;*}|1>m8+|}u|wkHdkMUdnh+~eEv&rMVL$T+jBTOZ zh?M~M+uUL7Hgu^FH%y^wDkClmT?86|E#k`dfUdYngFEl|E6`Ffj!J(bd(XLqbhUcR5e^|23rN zXHWp|rl+%Up89{fMyrl2SP7fz9(RSv6Lam5ypl}4fTR^gF{zhkY*>THA_e;`!M2w8 zHH-WH7at!#8IQ`V!JQ+UbFUE8wwQR+|L!&ym*AOHEiiiU^lHeNTkmt$?HT%6hicCI zy;)(!94Nnx89S^OhP$b7U5bl#amGdzs_+2}^?XLMEV?lOv4ev9cRr%Td@-Y#`{N@{ zm@4>NEzziUt7|?!rqb@jrO=B{ry`?}Z9F?WJmfrN=NJd8@9XgH^@LS$;DOs@+=T0M zopebEChTac(q%==_`oj&kcmN$A)QTezRP6g{`nOml{awlgL+V8k&i^|#Z<@;A&FN< znJA!& O#yb{Wul^q>twA6jFpha1P2CnpLzRQa7sqVX|-rn5{JAd5M zJI3$%DVslZ*9VAsAY$jV^R{cl_|6)?`X=U3vC8oZZ-J>ueJ`;kJ-5aP_XK1kS A*FKk $=sj}@HFjrOYIao4ahE!RF6uMG&ahaHct#=RClZHx_XzTdLY;(Yw<=FTF`-YB5t z0;Z!?Bv;u{)GmWB?&RC{@s_=JTpwz1zprKgMGj3jU_hL<;J@bL;tQRm)VGl>CPs@- ze492X)@VMZb8Uw6r*w&SQSf)JDbSeL716?|qHt0);cFF#YI>8qpZo}u(d>5d`B3#K z{*lZeR4|I)yvWtO((C9kz=`QI40BD>j3Cv-ZI87sYKwTW&SCt5>qOK_^-d=_5Q%-6 zgDd4q-?>twUZ}xpjzz~S_R*k!7!9 E(6YRuVZ-&C*dBGEO^{6XXSNpm!`F)OG3W_`Dmh$_$R)Ni?&bxK^ ztckExGRdp7jAr)@QLr>7$q>&id#8msR1nWSLTt%57{c?K?f&$@Fx;7O3LNTJ)U5{* zWx8v30|AA0G4o{3`pz9QvgA;HB()DK1+V?uz1)=FLa#z5k)pJ0goalXqYT^@xkoMa zCu0=eBd=r7%#aYs1@e)lkv(>6{|4~NkG5z1V0R*Q5?kDgV%K1B$izeM ^d%V}_{@of{?WPr^@wb!eZ|P%In0GkS=F6}TSAt>DMKwZ+ zFmCnUDg~0qsE=X^ZcWj<+cw1orqx- *^nR-~C)o)$qjcM^W@J z#Lh~+qeZ!90c>mu$CUqX&+Bg~l;u4GqYopVEq5C7HIv6mS(d1{+Tu+Ppfy?VNcT9Q zoGUd)RansH<;GdZk{giEnzp#~N$LxRg7U9JU$vmbLGh{Won7c~X%BuiVm{`BrpC-K zB;zIv{3u2YV*m?UdB D zRTSi9luivt#W&{w#I5Jpb52@~eGZjSq^jP!!gE23*ZF=;{;bw1qr!2y%&{m$<#zcb zj1U&qBcU6h*3&bFdKl#K`+<^L>5XTdp1W-M+Fz{nljbJGy@pSU^wu@nxQF4ILh_BA zxMCJ&MN-eq)6fIi-Jv^Lz0nYXw2CRjA3?~gd8>x&1}wkX9=!)~oh}`ly$$HN1mDv! zpR#mZxGGFd %29aMDj3x0;YhAHKHPjROcv< zx?f09Uqs?fn$KjIGngO1-W%;HDUl&yI gmYTtm_puSX~L9x)RbVH}ti`J0YETH(kAcK8Oc;-wk9Vii1F) zhioz%UTXJwD&O7K C zd$}N*n)jcvv0Gza+d~7b(5$Z=Sg{6|TL11jAcfDJH9UVD&+m_DblTYQY`v2_q{J}r zC_-bC%rr3Agz`iRa2IT_I>Ma3RB*RELH~Mt`-qpB;AkmFvP10le@mqNS4VY3M-gf- zm8JpAQ0p|W0L-}juRX(|1Sq{T?}%Tt@NpFPr%x(H;N`N5f_`aM#u;NhFjwU#`7xfi zA+Ng02bd1h(Fpyoe?9fT?+a(ESsz&BiWJw09VJu4-4#+LhuIwr%YXRKJePw)38QKa z*;l~m4ac;- Gx=)$wSY( zbeS0rnWu DkX?z&;FM*d8>j}+H$jBu45(3pzww)$t+YyttX$5+c+!8rj zT#bz}B?rn+*-u4`T21~;XAE3bR`ro+-L)JxJW_k8R2YTC}r@CcUg1! 10D8FM6<*d+&gZ7zE*Ig_ j)z6PdD_};s7>-z z-fD?=s^Rz|M sT_8aHnft R>~~Eo%&PQ+Bh(dQ3Wv9t&I&-bg(TZO9whzcy{j1~hBX%SF1(Jj zVKOlyl!{zc0M^0 08@mvw)-0 zj2WvkXgL}UsJvREJUnu*8S{k!%Qg|MoK{mlAe!h~xi`>h9fp};WOWyS&~hWfENtRZ z?NGGi2A}H1Lsg3cJy+KgX{;x@xF~w%+G@J4^ShLZNR<3if!iNn_WNf99ON9iJ@sF- zURKqJC}$sN4c;<3jwB@2DMs-Nxb7C_8g(?k2YbDal))Yb_X;UD40RqsLN3v_d5!3u zOSDSpa2lPOCY%yhkq3~15+svCv5b4GqReDB%N|_mGR=yV979Z}>Ih%7;`Qr3&?r?# z*QD9iT*px{rBrk+_Wot >Oh zv*-mYE9mMxmYkS2>#T+?xfcia_I8GtIj|EEFpO`rWLEor-Hbq@P^3d}n4Sl#zIbWk zZdFdxr(4@uzGUn(Cw4hG7#vu}!9Q>(ycf222okYrV4f>~*7E}9%6;=QkIvc0U^9Eq zL8>e#@L}3Bmpm4V&e+gtKgai(Uhry+Vch6qWe^tH7&`hT9anjT3I?87vdi {v8DUIPpT<~Bc?8g7KQ0~4bp}HRTwe=gSr7}u?Zg^#hh(^ zCK!^$Jk@yGAF1N1s6`o4#r1=&q~w`(2KssOC*UcXyvt!9=()>I =O;1QnhZgh22W d129DZ0*b zZD_EpsT?_(@6q8ME}A_Ra`UN(dnu+_ab%?AeF-LrugMuIjx;N0?LwfWRrtJ~Ofk#v zuY2!;q>`1|s;t>jskCcjW^k!6C44V@x4{OWk&%W&bk0MV!#)QY(T?W(b2EPDhDTwQ zp@{K-e9d^&wH~AJ$|&4@1M$IXjF=i$5XYS9@M-zutG(}LZ?Y&6>g*>j )%Q7IFB|LaI^p{ zy@xntH=9JRVyK4?Ub);y76HC|!BTpG#&k&*=T?@Z@tY=Q;v9w8+Y*2MA9ZlfFzE5B zNG)cyzK^U9O+QCaWs>Ax_0hFsPG6#L{hj%Tp60QY*B@c*S9sNG>{;{vk)ye=VorQ_ zb;mT{wt(rA=@-aeeB1`v+x!6LQgfaRc;RkS#;>jlL$?f51ISJ0PbZ2AL3mP9e-tmu zfb6nE1kX=IlRk*CVzMHC+xLv^mchT9MEwX{XmTixG;D@d=;`kqa95Vm_&wrtpwjYh zPv6-{voq80)b0!q7Y{$)UJnvJp X;X$9i^GSsC1=5$l;4Q zwjJue2J$`Kiw!-)RWwd4x@-SvrbOPFWf{M8RMew<@fO_J>!qAx5!JKE8^(mNVXI@< zP+j0Kk{=Senk=YvZuVK7dn2y{UVZ$oPcM )SFPzHj41~!za3j<& l8KRUT5&+vN)f+WcCJB)6fVzS?!%;=%~=i`j)fF>Ae@>q9qe9eIu^^T z?cl1nx1ZzAXHCno;yx^KDS3qlTh8p=m7aA-nyQpdy1Cw9STa74Xzg>XWRDj#wzfP8 zXd2OhT6O2I$@(C~Q}a5IJTz*!@4VFDK)yk>9e!#w`f>KXbZI%u3Y)r%63SkuGt0G6 zyK`P7nLRo+%9^sFE2ZLEetooHeA!P;Zudo(cbRi>dMWWkHGzi%!V6g@OT7>tsRq-6 zPWWdv9PcG!<%r&&m5Xb%^<@=uvykvE%=PBG@RT&IZVG2^HM!g`93|NPKy#S!+^sat ztGr2NS_z~VgqaH@SvEz7d1Ys~uIsPD90q$A+A6oNr#yeQqjaF+{>Bkqf{AB{0oPq+ zO&xYUA><+zh7Zy#)F4X5UiGy$pE6bT6KAc`tBk;Z3um2$wD-Vmn1w=s4=+@;Rls6_ zs0JRgZ_~mGMJ;SXw(-(BPccVevDH^9#}yk*9vhL}0D{&lD$1PN?vEq91UW!VWpzF~ z!*IpHlS`c+TBhq`lyQ5PK(CN1;&VvBxrr_^GWsdq 45(U)iD3s$W2LH$_r4z6G)4uc&1Y3+V> zZ_Qve+xf;Bt2K%+!W7K#TQ6YE)?JGR&Iy~t3i8~DCTByihSkTY0;*^ID1igvpdhQ# zfpv@-{XDT~uqhd^niqdkT7S|*jD%~jloW@?o+@q`ncNp#S_atofPI%ZKEgpQ<{IKM zO3XV?O83?PjO`qh3JTsb^}sQ>p1L<&wIt^cLd-r66}?SaST4YAD);L_kriMExDTzv zyf*GR^lVx23u7TDo@$8pt})lbS_S2~f+tkz>?jgRZx@5vR$D8c(02{Vel5g)Z|8z% zZ1$;V?JaRw!o4r7T@3kLm-FtenwBRIV{YG%y1P9(@oGI8F@ V(~E&xSSKFv zNJR$_tlG>foo)-WB4yktqT`M8*?_w+AC+qsj60?2k|b# ^MM^$EDiA=tdq7buD2F$qN!#YTW@A%#<;-LWgprW|spMq|FTq0fa>A6) zUOiNqM9OWJtO9hI+~-KN)r4Y@&u=PfRqOw2>+?)qr=q^OZWf}tYFfRMbr{KHZK_*m zsj65PR7A>HVI-NulgSMxlH}=)74OI=gw2>-BbZ&cdDvz4P+?wn?3S;C&)!ZL!}-~n z4G52_L*i42iwZ_sgOryqqQMFL+r}%$zB0$(m@RkGmKKr`z^J9@>1lCso#{upl$B*c z)}0}Y$HMsO1f9)hZJT#ql1A7YL{a8ikl8p>R+T>~GflY?tmpSaOnj1_(?ddGaLdLx zks2-NFv7afK-p6SIn<>i5vx`({D@8@J)k5>Xz5rKxxqAo9hE>2c`crEaq)Q7PIbr~ zy -ZsTNVi)oUr{8SM;^n z1%{(_BZ1KDrNe%l^JW-P$cv(4WuePz8GPKx1q0emV}(aW42Eg_8&LnU`ez{^Eb0Yv z)vzpx$ONciFo~SK)Uz@Q!O~XF$)Rme||} zfg-+I0-=xYP)wNMz;3pCg*i%$z#rYnucAl$vOSA$O<-w|bpnq>D!KsEahh>gEM+$c z(RB!(im-mT_XX1n+cRS(n32%#NGkMlu>~=A&A>oLJpNpfaNBn1rjKBiB4&R_B|eKu z$Tn0u?TB}-?%~fJcrt10HXx<>4!y7#!BIbF{~r0nXSPObzft*K)Y fEkib2-m(nah})oZu 7*vca~4~g^|M{yRZe* dS%holve8mq4gf zNsI06bOXa9pXM1vDFniBF}T+ci{ioQg07s2^)R>)`K YXHfiB8ZkwP$q$R8& zkA&;bIcl&7S!cNH3JJ)y-wk?VyOv5DXUdJ)8hK!BI|3V=)8HLq3hApDr(FII^#fM~ zBTQa7$zoEvfJ!y(lU<{pJVP2eQ+QM`9r)s>my>_d_wV$cP_pK~b1}rE_rq4der?hs zSO-eqJJ`g2$@~hD(AQA}-%GV591-t$IWIL|sDyw#f1Qq3_prHYM!frW#OwN(iAvpd zUEOt^C(MKkZ~HS>vfjg9p=JYPh86V>U7OwS4?Y8fIa=Nb17A$uPT)S8^hCyLJBWAe ziC7J9pWHqAD#19#nl|q|8yRg?&7|OfhX5Xj;qkrJ9n!)fCNWUs-G#Xzk7XQLcVt(r zox@|94@}P;M1^ZVEZwo@E)#rDm_}>Ts;lGW@qA{s zLbWlrXEw4abIj|{n!gI>Q-ckpSar%Bur@rr IuE_yq`Z%YBeBo~a(?{0m|Ey|v6&>GxRx9bNccO{Mv=sg`3_n6vk$w34O zCyB|})gbxRy~|4@iY6_b2Srq>e;=O&M_+V*^>w(?zG)5v-_wHhPpCqIkkP-ieiXeH zAg4L@j$tLYlWqGhTQ2D%rPW5`Ch&|!b}X~}OQ2sT 0irMEM2<-Dy4C*$?i0P~3b-*B%qV+KF8aLW9qJ@F3K z+>-Fb>(+aS)41YYm;@4MNmA(&P9t=!En4>`|MIN|tStUB!E*5((4C*p%A(DDX@da& zqtYu)7-4{tsndlbqfhcfr6pIN4<0oQj>#s=jmTmMeflK3riB~AWWT*G)08d8<~w1R zY4^SzE6iHST)qgh13mJ`8c+U-!`RT65rTb#5cObK@UL{=*)2UK!5xXz+ueCKaY@G+ zwya-BI1ecC$f#>D8DC}qP;mUmbZNAorzqOf4OFgD@oIa2_x^V-mb>LpmvHS=m7+oz z9@~)7$`K#q*E9oS%LJ2Cm;3oVdaCVS`et3M&^nQ`uwDq_kd^5;T}uprbBS?4Ls_uC zfY!T&tW;xwFTLLn>Sfoa+_2sxq^zjMf_Ucz$}}(R%ro-bFf2Tec#VPd`!;6%3j$qU zX?Ie{?fvMcHa@gNIC{BKAJt&S7m^eiUCLJ;S(P+ S_SS3jq9=GB%_VhKaa4)K+ z)sT@xes~34W=pQf*-y#}d?PC%z}8 WhAk|4RJaPI!sj;dz=LBonaEMPr{rIk>jDNol_9PY{dPc<9SrUH^mE z6GK@$utqoj?t-S6?iHoW3tRK9>g^*SCxFJhx#qG;8pR*dR+>I*%lFRlPBNh3{ covmJ2mUVj(gwY~=b3%!cz`Ycp`kA_C#`)U zs0opSWB6LBtBOgbCYY9ctuSECsXAs>qN+L>Zr&w C+A?xvOtzoWn~dZV*o|a6A)b;Jvc6SFkt_$plZg$E&f^*%DL7V=^Ls zABTDz#f1yx0>8jV$uw+3_L3j}r27|HWNm%Ocdiz)ndFWoeEg<~&4u8dENLE*p0PGn z9RNkn?X!|?>w14cI(4HblANwO+KmXtO;{lj`vVTigFL{W-C5dSWtw6%P2SL! afUoH*XGrHfOeXIeCjaRnXT&KD+!*y#pxs@jT)mqtQ{Bzc zD_7l5Q~S=f2eg|o3ym3m;Vq5V8i?Vn-&NS4AB`Iz CHyRdx_mqIKN`@B9VYAU^>g2cslz;B%OVm&Me)~UrWRF7m4RvM81|ou z!|g_*XAp{(>e6=Jr3Tf^n%t)0Fb=I*k&EkGQ)hVm@Fi1xY5G?A^?5udhn*4*^9{JS zp@zj1I&pM 1mnugV{VwRuiip|or^b>x{lBw9ru~5hiaL1C37?)5WVFY ziVSy5lv$`A dP5?%g9AqBJEE5Rxu<7Phsw z)$$2p3eA|r6zl*sTIY`tC$@u{4rMnghmRi$r!%fv9#ytW89`-#dRLj3;hEEi_p8aJ zpCo##`*J@>?Ot|{4QS)<8^P(Vc~)HOWI_av1tj}Ue+cDhb39c{x&FZC^Y-Eyvi;_z zBXM-Xb;6Xd-x`Lt=r;v6+*zukqST`KJ281;Ia1v3Zg>t{n2b}=$<)({=sCGTX*g#U zZn|T36x7qnRGo8@KZ%ACmoa537-aw*^S0xLK%;5uw|9}Obyrsr;V10LHyz-Gt<9L_ zCUh@)zOOEATwd^3TP>BZvS)-oIKUz=D&JS5@bI%O#ox_S`|L5;HFNO*iLeqB>&f)| zU5sG%! &{i=O z`c?P&1$tV8u8e43R7y3CdaUFOs(d>$kl=D{nUwqrL&AAdWnaH2v2E-RY*4RG#w(-^ zRo?!3eDkq4B+LHF&6grXONgAy_BJ~zZ4+zT7FL02;YWbp_NO>*=oz4M&cj3>p39)g z?lyi- @`>sxwFW`M}&W9tUTmtV~5=F%v+&n^L~JUa}zGswC|~5 zTiOb&b9bu}(hrVH>0cdw`8DPz5@habRsGySNw6os8|V#09fJphB(Y7_gE0u*&E4Dm z7u_#i>kDJ)jI8qRXs$ach43 5Xc&j%T%K9S&wlPTN1 zU?-`XO05{hxZMdbAF?1+dRZ*2Y@+!!fXcjUsAJVOx4&-hUt7s`5U*A7a^@9KZ8A_d zg#a7uPaPb5lUKsoKFtF4Mt|)G4pSkx!Dpzf{o2)#_6V(dLXelWe(}pRv$U_Ss+LwAk**iSp=P?BNLxHg0X)C9OIP3IoQ4tq^Luqa0l{OZ z<>n7C`-hjE!j*?iMB+bL&W9)kRxeMvrhYOL64VOY?@!~81^B2bhyCNTub@_@t>134 zcX+p*l+kSTB^M5tnT+u+z)>Z;|2#kKl~f5DGUeSK6Zpu~HbAR!v(@WtF*eIjKRubC zbxzzVPwuISL}|EiydWzLW#JNa8wMt6u+n!-XzTUAa4JX1@~Rk(W1lq7((IhXain+- zKaaRB)zvg #V*>8}HMWd=WXVf*t{R>W+SckYJ1~m1g>2veMbCr?)&2 z-aNd-F;f!Q5i?qFp>lCvg~f!7Q!L}f(jC3S%%qc4Wi;f|>OHZB7{L=L?^d|v3H30l zDXuKg_xZm~$bY5IAcf6a`LB4jrw{a3uF*ZBC_Q+wz4V$*W$g^ix4$#}@FjM9JGU-b zJ$xLqYd*8>8w3f}mx?hXl?^4hDvdVO$!WF&Cfl6di57+k2;Cw)mwe+E*BLv{xL?9! zt6U?p)KdEVW5)O}#u~*TSxj_p7ssHb4Zy?)BOs9x-W-? B!b%qT>B(trR>iGMX(1ivjv30Eu-JbR-(T2OIO*M;BW;5g7 zpBvI&DA@R=k70B XtP_GA4fv* z2vaxFPsUBL`riKiJ^ZN7^1vGVUI=_k!OWM}+ZE}7 VCi>w zb(X$R*4yt~LLse~k!8K0j~sAgLUN2^(~7|5gJz)=;`u4x5tFm`VJ_@ht01wR(4M-4 zkB$EGWt2(Chj5kKL56k#HIwg)(8gg~?di(pDf7^bV8(#6Gfy2t{#xK=ak;myp*N8_ ziSuvsDe}R}$Y0eBr^*ZYBdmg#5sqi|Cd@3*6`S&xcIpxVaGBV8FMiFpP>tM!jb8P% zZA6u2)h<)G$t-%c+U$|0PNvA~8CQXPhQduR~q`5OM1mYOEU-00e zTdY-?=3~z+j8S=r+B_RREn#V46%|R?M15JP9y!`l3uR;@+3QrFG!-c2Gw70>A5kkhpuBmHeugaf2n=;-$y?m3*$nCOxZa`!O-pFmq6^JB_vCC!yrah-=>C`)P<~ z?@tG|oqI!Zk|$|*1jAA4N3MeiD>>ySFw7VyW}O|PHxV`w88ZGg*cv3t{YRF;LT(uU z)qpVWrZ8S@bQiI6$4` U$6>PKbxcE$NqqJz@@7y3&c<$(Iokv=B_%V z CWI=!td`>CBpyvTn^ zrALc&&Vn=5)FIRKM>y_>gP&L*Xo~adu5Gw#7{teiWbdWuEn@^aLnB-YQrYLA+N2oa zfc^BpdHB~Y>uA@8Q3oeMvC1kB{d3g)D78Zh3B5YnZ6+@UT1Cwa@j-IhR!`?(xaE-$ zIfbuzs1x_!e*5nc^smGZ-405ESyPmJA#{G{cyY>r7$9Uq3lO? !Ig?GUWC(3P5EihC{wGZIK?C67a<}`!h=F1h%#yvntH7#<2T!Axd79 z=&`D#nm@|IQ8Sj5&r@fNvKg|Jy<{+Q!wj?@Sy%95ET;l+VChm`ctoC9&s$rCeS|2; zz(!~l3HGT 0IM@qCo)WNv)P2tm$LHc)>XG6BJkAv^O3 z(O*9+>m)~B;!E<;7>o)@x0~OSGyvHs1&Is!mQ5^=VZ0l=(L!Us`9cfWYHY|AL~q`W z&id?{$$Mnj2=i5Q3JD(JFu&cum*!$)o9EL#re@)~DLay1@%G0^;GcB!fq*XM%ip EuT9Zme6Ulr_Upcc(z-)33by{K#!Dwp$6I2t&?8fd!zs(Wd*ynF$R%~xVORRL!a z@HxjYK(?>a{?L$J*_Fw{vd#HlhutkEB|gL;z8d2Vz?HyhtH4b*90Mn_zJA#Uu&xZg zR@Dif1^H!9PCm(kzsj_z`Np)oPNO*9P@(!{v~hb*nzUcb^t!BCD*IWnzKWvq1SNyC z_kSc~`M|crcg+Uf0wvv6sgIs5GI{{-T5R*jHu*rO;FBw_S=jgK1uCCA^gGD;OG$%6 z_sg1M;w!o|bQC5=BLcr{pE1Gi=#7$ImEc-TR8iETNco;FG1QirLM{gw fHzyiX{6t{{F`%vJ;;f3Ft9Ei-e|Ccu00 z;gcHYwc_G-pKFnNAu*pnuuMaJaTAdZT6t0g6ZuCS2E3s%XB~=ZwJO4KPvqDsu(xao zU~ Svo?!7U04WGyCJwA<;LC8Y @4M)HLlFJy*kyRm`8oD3lG)7Kr+k)8ku)Lph;etj~u>q|K_k>1p z%2izlH;jTQ8jr%1LD98~wPPkVjitjLRW+{GP>Ff_th`YZALGaitc*Bwa8#Nq=&VD* zDY~iPWYQ18s1dBNGFZ1yw(`xS?olkm)74c%z>LN)xO`6yQP)wz!rMQg&Gjb#^@2zK zz8W^k& !r z6bt%&7;{+892T!~&_z@QiW$yXZnE%e8$?czq-Xe2J8K1!FS+wJL59pdd*9Bo_W-E| z!AONPrb1wvcN4@?rA(e4@!HZsWgkH?1O$r6f35ra?CLrRqmg2!5TXp015(WLN~vYw z`2{_YqW$`G#Wn|ZR&>2N0%)=%6H;O%S!}RXd|%4wdh$Zz95j a&)R36eK$LhL6@}th8$S_lN>3=s(^4aUvV7TRTL2Shn37e^*OZDOn1wDinMIZ* zA?W*WYR31|YL+;Hb2v`Mp`%K Ntk0Zj;hOdn@S!T!H^3IX zvf>8}x(~bCKz})5f*BkQ2$baM9j}_*573EB&c4`H@OH*bz1t&y_>0^lC^_PqL6P8| za-Tkngktqkcp$3d1 _l#8oKt4%Fg*$aI7=-QsYPeW~I3 z{QsI`IrpEQO)?K(uQ|@cuFQf*wUPskJpKv+T`vzTfp9Pg!gzf&k@mGnmD;At&R$Yi z|BsS?C%IMIp@XBbR|&qAjg7tS*xYwVEb@mSi`Mzudrp@yEU}Tq28u0pPF~+{x=B5R z%BUL&&ip^>;CvJ=V4Xo5iw?_OD~}RhP)Q%0UOdz;I_UrS{O`QyZ#~#7@!5jY17U=U zkZZa3SPP~;2Qbh4mWEJ>PLc36E0yWbmT!#Pv1av6%_8|M7jCDjq2ZvHb^$^~mM77J z-c@Jo#m(w$RaFYyl|^VHsvHS>y)Cavikj)Eg3NZ+^CumT*C3ZsBgxQydz;Kn%pT%> zH2k0-5#1tozd*9eG!<6%$D{b!oGLf%51yt)loCkj&D;sJ%^UNFp?kcYqg`6+MUk>; zz9~+) 6mZ3trOUDYIqv%9wmNY)1tP-r v73|$ zLDOWF%%%2QIsvgcTT&(`cS=IjPcg$)W dpQ39^Wr!e>sYYHQ6@?k?ODq`zfF z?SA&mY;p8pBOyx& 5p-^U9p_%Q_t+t|go!AfdMUf7DYp<|yS%aK7ug zTZ#|NKSkxZ?_6?gEDSdqw}X Ln`pg zs?_~agRxB4X_erG5B=AU#+l|)O~pU3kfsyy(+Pn*&lM8w@-BI|Yw1;t{bEFplZn6& z*@$jRBAa2~Q?fL|W|EC2LW@zOv>a<~OWqmtSJC~dhtn8wuy&;c-V`k9#-)hiK@{vu z)GJOCcc0*R7Q1PycH{Mc!ljUykGdx>eeB4A&KQVUT^<~?zmmA3W7^Q$MCeniJXJc1 z@!)0=FvO~kS^1dgS6N<=#;J;MM5OCM!vmwY3cDbr40X9M6910iUA%2eMIW!IwF4aw z^#4fta_);A+m1tctox(u3)jvpvV)XX ?}vhwawNG_VDW|cvXZ9<5;!+o*6E&-yeA!U1(R397}xiH89*P z2Hve%zmu$*wb*M7 0jF auBsgxP%`$Q28-30H!)F~Bj*z20#%_#LHwcV3q8KipAbXv zpBcWy0t%_|g2^$5bXm9LguGTGE6=4rk|ZzQ2W7v=JW?Cb6mjm3Q(i8CF>BMk-$AC% zo7|pKCCt&8mv?1kWP&vgd!2APjov(m`!2V5KD7mE{G-O+(?p?}m)~qjI=-BE=4;)J zquAK?7?kVLqKX#Jp~k-?Rql3``!B0g(#EnhQ^LK@lq<)c{Q%dIi#inBz35J~^=+q1 zbk^bP|2go<`~Ez7G_oc5Gi}ZGOw2WjvZaB=)o+>}ah+Dji9zD)e$zdQ+uB2;B=T;M zc9>*$m}gj@*L&Xz>zl!OktYo8UUwBsOXT{>n}45xPV;m`8WxRQW%KQge0M>-+UV%E zTd6#m;QshJ)nHU~ #wqv| W586CCDtChHIa6|AZcTQScz-s!`qI7A>j{gFY1(*y!xo5m4+6v}tF zc%`UE@9eU0c3+dZxn%QYx?3DKaCh7}BbvUcBTkzy!wIQnQ+`_^#eKyQhdXzjGncu1 z(|bAYr`)#FCO4Ixx63!3dje0*w$j`l9!8524Bg5*ouu9KsZWGER}%mL&+)c}0f6%( zi-)gF! Pz#GM8pa!IbU(=}eS<1zF6`ttT&t7F zK0DKKxq)qI OBJ9w(-45Wv zaJA#Xe{bSIc%^Z59b~~+jmqT!Dal_U%;Jl6vV9fSEza%czh0u))kZ88edqreir4}d zZ|qF4yR_WN6wiV78%Zdy%QIXt^Onh{Ql;I_Dy$EVg{1+yp=n&|nd|R~R9@DUs*#Zq z0%4Oa+UT>*xM3La!HLS)2%YXgqx*Eu+$P`K(qUMgQ+apbl(yAb4cGbWd(YXbeK zD;NL%Sp)ZaT-t5mg3ySrC}WnUWeo Vl~ zXqgZD^#2{!f3N)1P}w1@x;eIMls_>w{-m#*H(#}PNk+>3KOZ=09iZy#u^M~vN?wvv z&z%_$LpO|8Z+*P+e$S&Y+fQ#J(ohfmolehSjVRrmH>}`#A_6`^C?j3o+McVH`*u)% z6jh=i(NlRzDKzOsZ!*FA^7CyeYS)ac-_ XPY*hbOCj_#P7KC=hAf8>DW3JO2A zNZ89eEy4v0#`%d3wF-nByBKb=lI=4+E#+#zcfwUw7GL{#Wy}?FnW@B?BWL4ZBB1@) z8S#)^_|`D*IcLkVGd4^1vdM;tm32@u_qPaXj@{e&`12JgfZT%!#SW3q9H?10`Sq!- z#@Ll=v=>%Go97Fy=wxZz?bZ(r`j&49#QX!EJxF?w(AU0ySu-D-60*n=O`@VuHAky^ z_4;Bi_lnbK>G<@JZP7^e>mG>&qWr7V`4!C1s6(|!x9D<@J-sOOW _L7A*}9gleVuOEfgfD_<)jd0)w9NHc%bdJ*fM8 zgSIhgakv0U-Vet?UDZ97R(q@R#U !H_>q# z7vSJpS}6}cqdWHTT|_HVIf9S$tZ2)1oN%)NV~M(fV65~0q*o!=?N{cEiv80r1ow&J zdZhyhc-$pl42GMK9?tPp>KHG*rzT;!-y=aYRY&$;^-<@uQW_eD@YXpx9K18T|5I~x ze)>kF8>f{bEW_9*Ip0e+U@9kvUdf5&<)U-->T8e-6VS)B=&EOn7t{SACp&1)XF9^& z4w4vY6XtHYX19exabh@yK !m6DEW5gToAfn55!Ys zuj7`rZx(588V0n=l$I?&o=~)vqK(y0WD$(qzum6O=><%FY=Z+802eJGA^oa^H&0cq zKd-XKy;;-oj=H3AA9cWu#lCD}Hkn_8**+f!w@e4 QZT=N!ZJrT=BxIub&nI(Oa76~Yt z&V>e4SLR@jT@z0eHdl&%nss}JaU-Mg=2hCUDGR3T7f_qTmxCf#KUUPJl}GX}Q|s;* zqCiE7?eBbI4d#%(J)f;5=TnMeE}gF?5;3-(EG;7|IgP_7o#a1%UC2Yn*;^%8g; }#UuoJ}Z<&=QGq8nCX
W88?=I qY{RK{nVYowg=?IO=qwPc8F)r?Xik zDyWb*@^;|**xiIH9lG5n$BX5d!2(Gtm^N3bY!$g;!;NQkA b1by80H+E8w4gjlo3A*`ZSkT+?QB=`9fsgTI`9oqgXEa zh@hS-Ue>#eFaY}HpjL+r?>h37(1pp}W2Jq&lyl#G&{Pm9D^GUZYnYTzXLBUjADbTx zHbbs;DjRhcuuo8nScp+(<4zf02P``GifF%yaONPiodGe77ua{$-WQS_vLU@Bs5-%~ zxb<~8w!Af&)Zp{cIG(((W8K)YqwTq>vH(Z>(TlU3co2<_^cRvjw~LeEZfm_qI~yD$ z5N3p#Tmng_Z>pkU)^9pqYdV_1^ZBc{%`@|&H8p5TD-+SUY(5{sIOg0KX5K47yCA7n zP3!UHiOie@IS{B^KQ9NvPm?K2J$I{Ie1bt@ mOMZ=(f*cF`Tjj1_ zbaeM(PZA|&l1HsL@cRplA+qFf`)-hKlYNGbaW`+2wgQ3p =rKsQJFJXbnqz~dbcO;$E_ zJj;>G-!jv#1YU%Rh>7i{ntu*Nx7=WQgZgdn)?Y399>D~qh0e #6D;k~_)f4SBbHULnfYbP<#cm*-JiQJzQFxM1P&G6g2)na|VLL;9!XE2z zpE6b|?WWaziLLD4% I4@B#daAu>6P=5;5N$ z)=C*&6T5sP!R(=mH9ZGkybI2`(eb?x2hc-z1Xd5qx^KD~-l =_^2+!{<2lYL?43jS?=t)y-Ii%>c?a8+6Z7-+Ls6yKM z% z5~DiV-T(1gkidV71|>8F!J!UU!Fmm81X?u1O{5j=7t6QSKgS!m{ 8(?Bt-oZ*QIb{#)U$RqvgeO z5aC)-IM`2Y)`Q%&o9X){Ibom{A4gB~WXk#VFE-Q5YMIp^IqfeORme5V^JaBLV#0jI ztJ73PhfT|Is0&i{X^K0d7leAxJ{m@>P42vD?dWJNr7WfIm+U SisQxNYVygo& z8UlGW%7mI*U05jAZQJb?Ue+ON9q0`K(A|{iyQVeBj4H%3OfPO(jy*^2>Te+#e_AxA z=LhPvOr(4T+PuKpb?&oeGgXs?0sgt-(t6Yqi qUtENQOm=^yP%daMrM?H3 zrM&fMv`4h%0S{+|2qwj~Ks-7!-|*q;p%S(W3C0r`r*d9?%?A0$<<^nN<)<#C>Y!{G zT~TqV?9VOV)d6Y6{2)i!_<>o4qAG3en6o@({|BA!;YRIngvl}47KPLcvh5X4+ajo< z`LomVH$+=~%Ks2z-cmMr(lj_6_$qyAJtda^9I!%sF3YUbba!5R(Dbv~ii}=vn-Q$? znRX=w{o_K;^|_RRA=&qJzCO+g=msrR(Qq;FB3?O3qS7@=UbXz%trU|iiMf#*F=!HK zX#Rkl7Smb8)J!Fs6mi5J1*8aXh=g>f3R| qQgI9(?Ve`852=F^& z?Hz4*-juAc@nuN0u*&HD&g>f8G8{%<+kNS)+XlRv xwU>G RPUeZaKgIkB994T^+AO)8wTu^j$@rwN_ZT(vupx*yJ){nXQ}Yac@;ktnbCQe?Rz3 zsxHxI3q!QLGQSHMOd*3F_=?rKpf&uh9@+efgCj$&e))JVyv5ZdYeKYT88$1FX729$ z7yjn+zjwHYFecGxG74#Luwp!{tkcZGxeu%ggnMeC(GL8v)9)s}T?Xw2vaFL$>MB~H zp`jQAr1sEcl!?xVTq34i%*zJAk7$=ppFXgafV?&6eX(1+Z=(0On4PAW#Fw?UtK31= zU=5An4dDyON^94wfFmNJEkK~^ t K4Q~Y;)T6V402AO z4qli|*1>J=zMlEqvd{^+6+PPdtuC ONC-cm1? zF1)+$2a(FkHdkwU Z#HvSvo!!JN)3=^NUnULJv?4xu$0bix w zx+z|PRzNcP{n>@16R ckB76Lwa6vGIh?^*D7S|FSJbXP%=m` z%NL1`;o~joy<2ME=<+ej=XPMx4W@!zKP-%NAus;yXJ^^IqQG4~UPIwLH$9}Cr}Ep^ ztiSv0y_%S{y2&wXHh7;>Ytr0|h`^~wWx?fP5cicxL8##>2dG_LC)fkpYxc4|ZoZL`d_JuP7 _O{*9+rcgqN6j9 zJpF7OJ6V2rO2nItf9p){5a?i%Y0Z5pYDJT&_4VS^`7o(jJuJq)QIP0ouUVV?#QVqJ z!m8sJemxxP7~pTxJVT+K>9_ozoX1EL)9k47^OhW(?^jHU)T_uhGmrSuV4h&NAeuHQ z_XhjTAk9-XU6PO9Hw$8y;C2H>I_ N0b6AYC`j0Ldw`Iv0e5;s(F-^ 7A(@5wClv(#gp$ z8A3kakU&5WW;Tt)OH2MyTx1o?y-lsEFtz_W #u##N+n4addKH~qhRIyK^juLw z{?@`&fpsH+XzAgcWSa_Tb_ZHl85e__EFWYVHmX^i`AQt3snK>!F}`pma?q$<1|WL? zE}wb=y=<20S8+P39P}W?q?-MkLqu?4mqq942(lybnD=setT!o1lxeaG0mTU#T9{!k zPd&*x`e5F&`@|!_$*tAU`l39ZkdVxXo7{QmWnyl_4 VXZ)}-ZI$LlBiE} z(u$Qf!npS~o!@#9zn6roydohxJ95s~v6>NqI oW7M zuc6^NJae1xR7T*n^t3d3YK$P G V}BbJ he5F2U)>w!g6+o8u2S+a!^zAhjTUtNH5Sk>5hgjm7jvQSX8!rCR}ZkZ zsAr?yJ{}twK^c>%{6_6le0`GgdW8{;kE#iWrz5WpA>7$5GOGq=A%hdHnn)7W>Cea> zqlERR-YQoJ)I*D^PqbIoanl(wOkeI=(x6+3RD?SG<9mkx?V;3)X#O&Qeo^@J|Dw`= zuj#1wEsNVM>ycRT;4&=P%k`Y4Lp2;=&UYU*QJncJkRdEU)As5BNgoj9v$oa?Ifw7( zi- -4h`hIRRL7- zzu94Qr0n&l?4`{(I~7Foj0#_jCy-A_NY=4|jHm9E3xR4xmjKt#sO^CYM8c0M3WTwe zCEWr)#PM8q`>h$FLgHv`Es351loGu k%4iDji+ zJq8I*nP3zH<$5rN`Pn+258;Jv;$1Ta`!2n+(>`_n$(Wr~oSr6YrC?Q6FE@<@HL`pt z7f8 {>O^UkgNcrQ(JT(c1l=m#&q<3ye*U`@+(? zNg* -yqvCwF)gS#nxLNc2m&wE|)uctYc=z~0m7pX% z!qy1q;$0S$oAygkO;AB-$;ARvC0tn!8{K99E>QDfUo^clJG*YhhyKTH@9MG_!b*ke zr1a<$;_N#fsQU%8ZoE-`XIUoZ(j)?t6W !uCXNTDZg^uW9SyWw5Z$?{+M`zkRYrhdWh2KfsVC#EEYNmw4kS0w?04c>z^H zp9n>)JMwX8MpN^I3&SSr#2=%x_8;_&f047>csv4M6X_Q^`(~nNhr~6-DT6=`hFUq@ z!!8;U|6(Ayd{IpA)<^$pweu5Uke^AReLG2mp$(ZJbEL_9yRHIYWRrP%s9bcK;gu_i z3=q?7lPqA5Z0=0YD&uvmsfWxH>|M$;Lut9YMOGDX7YdAYep&v#?pJ7yi*n%(!qB~5 zaPvNv#%#gUf{zwX1}@b3R9;z>R&j;w*fU$j*T-Uc`($M_&wj~Q^F1|==5s?lb^V%C zQY=@?+nEjf0k@JH@_?P9?VUlhF8(bv&KUWw#D{B&KbPumvO3|RF0!$fA1K?IWz;Lu z1hD-UsGWZKwuK*>{OV@zxgROHX;zzigpyTa&sO>80NBScuIYz#2@zDyl9`~q?Jq7* zk*&;~J(p0UIR5zMB!-g{l$es`T?TbU&-WB|mdZj)TAVo3)gKX09LJH8fC8`PUfPxY zi=rHQYx#oTk7MoHHurx13HSa%dJ WM2U8!skEii(Z$rE| z(Np;{ehi %dK-8!n#V;$dXGY8*|YGyT#N5j?u>BPs6NR*F4%1*X|J zuOX7l;&;<%_hnImIl1AM7@&DqNVy-^3Xy8o(2jESRLpQZ(-t0ANqc{Pcf+i>cu~OP z5DJItKEuCkUG7k-gKcGx29CY9!}ykACPuT!JrA-pZ)5D3@Cu}Mh@NL-%f=F-zvf($ zZvJ1ihP57WNxOCyliO BYjMRaK#Q zt$Ln<^9qf;Tvx4ZKF`ufh8(WTgZuCwG&a)4Jp~9tPgTU8mVl5MnyQ8W66bZZTH$y~ zm=V9%_r *GU1)4Tio(u(umN0LG9au74L^YSJL4by~gYC70$6 z=@oJMvlZWt({e-Ac}e9A=Xl(bbCUkIBssk?w?9|s?Yj35)c>(-f!!GJToa}jS|lmO zTqP}D!fUlU3%F_xKq)q&oDE+eKK!D&^H!jgU!=W{?;+)X4#+#q!V5DKLZLS_8ejF& zXoIi(p}nE0H|_&KW$~sjWYd=;-BeZlHkgth6(v?&lvF@*%Vu({b+xg}D>Gg3*Z0oY z+7*6itckOm$#MH$sSHQUym$GtwF9vx@Eg(UqqazLO60?USzLFQ_10cvm8n%Pa-yLA z`s 2k!i)Sb#z+wnzpwSnLpv zMp@K0NhC3if#jHM+Bh7(47JQ>dF=H1(+Fv_F;kfBwRuT(%WlZ*oDo70>2`Qjw;wX~ zC-zK2GBfnT#E0%cct<@D(r!EPSPgu!e1iCH$(VM^jbT7Q%t&kl$_96okC#}i2Mun? z1*;$sLOM^3dWmmM<^G#)h~h}5lSuijQ=L C<2*@Q 3;k_vDzPkF#S`uS+ z74#{WuxO~+hzZA*uAsiuHYh84pc`w8o@TUc8abzU*c5b?!vlWvABii0R@W({)3l%Oz!aFO<>td}i=!z&)#5Y{EnN zEW3>8g7`v{g@5rZ X>$TF9Ke0m4{r-;9pQRD#-^dH0h4^_agxN1=#H>(h z*O}}t=j-S$Zm4d `2F^}1 9b03DxvVr=xS58R^yBk#%LELn=bt>U=&_ z%nZM}ZAZvfnZtj}x4wO&E~Ah%>i>+J57ra|CrkD0DcF)C|GiTWOtqHVHsI#HzSaNU zhaeR<*{VBKxOvHYw!$~Sq)XrK{*OIA&Ikr~2jqN-II~0a?IY!6>f?Q0Glo9zw4JQa zT`MrOXQ=M$(ls+(o0db>=$)IG^|L?^+5dl$Or9^r^istQWn|N0pvdU8nV!nnwmvLI z+64n*;fF%+b9W=)il6=+clw4!=Cptk+GLhhf(f`UIi(tlyS;ZbuAxCx{}}3uuHu!T zwC@f;9#27047+3c?SMuRXwQ0VKyjw7S8DWvineY;#K}(Y$71CL6eKMtG#p75IIk!W z-e3G9{M5^fzfZe0tQ10X+GDW}_)^?42#49Fr3vdF+$1a@Ho>%A+>)l%!G}qmrr4p_ z<2g2gpavDY3ho8JlxH!rSg)K-N}RERQBb;swRjdf`o7|?tWhTyuM{7^BA~4(IG7*S z|Hqy|nyGT>hm|5lmq`F!$j1jgbOJ DH+SMl~>PD_{_fwrkfu8*0FmBXeW15cjW+AJPgF`w`-PC~Y~ zf>1@9uA84E81;oZcaYQa;+1G!g1>^ngYFxO0}JU7gS9t*+K$A>-*cEJwwWih&F&YJ zsA$bKDk!^4E;nX2S`-?E%G!>Sr@M@|{JUp9|8wAUX}B)VsnbgnKI5!Oqg7_b5fRo3 z)P&;wP9R~GgJ^^GG-#_hSbu5F4|w{bpY@9~*6>Pk`{1Zqnv)(VQ+aLKR?oxD18U;m z935K{?-V`Hh8irMhwc8|^01@PLR+oMb*)W cw< zM( 7r-c#x@*$&T*iYY@0v(I)7%=IwO|!Ctiq87{Q$eDdL+-fNAsU#rh7Jy7 z%Z{#=3|VN%8maC)&JbpyBD)--WUu5EP@gw*kTjoKB|l;Zho^v8gdoX393@0ot0P%U z^ruVn=^inVG1zQzqobecO u3jAI!6R4h168cPr566$%;ZPqbHyV zS|l)eA@rfl+e+=;&p};i-LOFpdc*h4IQB@Ql^@F~A#MmJlW*iE!VnH-IyQ01yVyU% zlr6pA^?j!5>kh2+XW^eZ{o&BGo=~>05a9|faf&@V(W}#$8#A&cA!{4_2Moe5bn3X+ zRw2_Bp`CDa_Oe