From 602544ecdfaa55e8ddb7de36ee66ee4846e27198 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 11 Mar 2026 16:51:25 -0700 Subject: [PATCH] feat(seo): add OG/Twitter meta tags + generated OG banner image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add og:title, og:description, og:image, twitter:card meta tags to landing page - Add default OG tags to renderShell for all module pages - Generate 1024x576 OG banner image via fal.ai Flux Pro (dark indigo + network pattern) - Update meta description: "rSpace is a local-first platform where communities own their tools, data, and governance" - Update page title to "rSpace — Own Your Community Infrastructure" Co-Authored-By: Claude Opus 4.6 --- ...09 - QR-Code-Payment-Requests-for-rCart.md | 75 ++++++++++++++++++ server/landing.ts | 22 ++++- server/shell.ts | 8 ++ website/public/og-image.png | Bin 0 -> 34773 bytes 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 backlog/tasks/task-109 - QR-Code-Payment-Requests-for-rCart.md create mode 100644 website/public/og-image.png diff --git a/backlog/tasks/task-109 - QR-Code-Payment-Requests-for-rCart.md b/backlog/tasks/task-109 - QR-Code-Payment-Requests-for-rCart.md new file mode 100644 index 0000000..b99d2bf --- /dev/null +++ b/backlog/tasks/task-109 - QR-Code-Payment-Requests-for-rCart.md @@ -0,0 +1,75 @@ +--- +id: TASK-109 +title: QR Code Payment Requests for rCart +status: Done +assignee: [] +created_date: '2026-03-11 23:43' +labels: + - rcart + - payments + - QR + - crypto +dependencies: [] +references: + - modules/rcart/mod.ts + - modules/rcart/schemas.ts + - modules/rcart/components/folk-payment-page.ts + - modules/rcart/components/folk-payment-request.ts + - shared/transak.ts +priority: high +--- + +## Description + + +Add shareable QR code payment system to rCart. When scanned, the QR opens a public payment page where anyone can pay via credit card (Transak), external wallet (MetaMask via EIP-6963), or EncryptID passkey-derived EOA. + +Includes: +- PaymentRequestDoc schema with payment type, inventory limits, enabled methods +- 7 API endpoints (create, list, get, update status, QR SVG, Transak session, page routes) +- folk-payment-page.ts: payer-facing 3-tab payment page (Card/Wallet/EncryptID) +- folk-payment-request.ts: self-service QR generator with passkey auth +- Payment type: single (one-time) or subscription (reusable QR, accepts multiple payments) +- Inventory limits: maxPayments cap with auto-fill status when limit reached +- Payment method toggles: enable/disable card/wallet/encryptid per payment request +- Extracted shared Transak utilities to shared/transak.ts +- publicWrite on cartModule for public payment page access + + +## Acceptance Criteria + +- [ ] #1 POST /api/payments creates payment request with all fields +- [ ] #2 GET /pay/:id renders public payment page with enabled tabs only +- [ ] #3 GET /request renders self-service QR generator with passkey auth +- [ ] #4 GET /api/payments/:id/qr returns SVG QR code +- [ ] #5 Payment type toggle: single vs subscription +- [ ] #6 Inventory limit: maxPayments with auto-fill when reached +- [ ] #7 Payment method toggles: card/wallet/encryptid per request +- [ ] #8 Wallet tab: EIP-6963 discovery + ERC-20/ETH transfer +- [ ] #9 Card tab: Transak iframe integration +- [ ] #10 EncryptID tab: passkey + viem signing + + +## Final Summary + + +Implemented full QR code payment request system for rCart across two sessions: + +**Session 1** — Core implementation: +- Created PaymentRequestDoc schema with Automerge CRDT storage +- Added 7 API routes: create, list, get, status update, QR SVG, Transak session, page routes +- Built folk-payment-page.ts (payer-facing, 3 tabs: Card/Wallet/EncryptID) +- Built folk-payment-request.ts (self-service QR generator with passkey auth) +- Extracted Transak utils to shared/transak.ts, updated rFlows import +- Added amountEditable support for tip/donation use cases + +**Session 2** — Enhancements + 403 fix: +- Fixed 403 "write access required" by adding publicWrite to cartModule +- Added paymentType: 'single' | 'subscription' toggle +- Added maxPayments inventory limit with paymentCount tracking + 'filled' status +- Added enabledMethods toggles (card/wallet/encryptid) per payment request +- Payment page only renders enabled tabs, shows inventory progress bar +- Subscriptions reset to pending after each payment until filled + +Commits: 636fc13, deployed to production. + diff --git a/server/landing.ts b/server/landing.ts index d08b619..a3ebd7c 100644 --- a/server/landing.ts +++ b/server/landing.ts @@ -31,8 +31,26 @@ export function renderMainLanding(modules: ModuleInfo[]): string { - rSpace — Community Platform - + + rSpace — Own Your Community Infrastructure + + + + + + + + + + + + + + + + + + diff --git a/server/shell.ts b/server/shell.ts index 9081994..acfd28e 100644 --- a/server/shell.ts +++ b/server/shell.ts @@ -111,6 +111,14 @@ export function renderShell(opts: ShellOptions): string { ${escapeHtml(title)} + + + + + + + + diff --git a/website/public/og-image.png b/website/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbc3b496cbd913f0fcb050044480d8502e64d36 GIT binary patch literal 34773 zcmdSB30MFA6p?D1Mg&9zWRWc`h=7Q+BC>^)ii(1g7KDt@ zkd{R@A+iJ%A(35)7+C{BNdN(5O;|!flFI+mJ<~JuPS5-G%sb!vf4=ZkQK`Ch*R%Z2 zx#vXMA?0D#m>)AchFP!xgINInFw!oJF=pX{`Oo}$;rwUuqWSZZ#fuj$UbcS<97A;vWvsC7nBLC7!`Wmx#*}`uY zV-_vgj#;>N!J@Sbq%{~U=;xAOx(7P@>u15jMT?g#l>yyY0SeI8fbK6^1UkJ0^ca*5 z2hTB!*DhJNZST>g>#fhqY`-kO@5aL?%T&KDs8q0N;;ZdO#*slH2N zx31m+{ey=LjK4EEW_sMr-1fAcy@TT!Cy#TU=e@jrE(BZ+ycQH35*l&q_MOPP_o8Cs z9>ph+|MWO9H7z~kX=YY-PGM0ot)%qD%d)EKn%cVhH*Xu7TUy)N*&Usnp5DIC{R4wv zz77c{Ca0!_Gsx`R{J0i?asK7=yW?65#0VXyohNRkkT@94qg-MP2|Ka%e8rJ+~ z`L5Jr&|^bVD611=ZL(en1{st7>@^rN<{yr%FF(uv!_D6-`2XI$4-2Dqn}1DT@Hwo> zep}IGj@igyWS;Nz_ZqE%>Tx1Y%*&h>Fio0U!F(0{!wP2&na6;||39z$Li3p4FZ53z z{6ky+lUDwn%H~J?jau%8AA~vlpzLi)4f#Xg1ga=}fJ<8dE#GyhLW*eTKHIa8% zwnX0g%ynxMc|d-Dd#o4c%~RmJ-)FktXGYoG2ERV|$BRE&&2Ml1(HH(w?zb0zyZDDE zf4TA7|MW>oj)7)s{3$hXVFht=n_S&mWeug63o%ieNt``^+FoA&mE-P-PA!gCmOr(? zru@@SnKJ&``@hx6f9s|Htr7jvcK&07_>WceM|=K%x!ix@fd2ts z{=YIaW`jUUUbQyC$p85;vu^t97r^}X*Ue1i?Z5xa5KpE!{2Sq6uJ-_1px1^XN~hnfVoIRL1vM}7raf3|P_CCK@Y_5N=A zV345pc_RY@On|&2NdURcMWC{FQq1CRBwmVHazv6_%;+4fG>GsC)jb7!BlR^5uYIdD zElG;<1=5+mEP5ho-Kc6ss3Gy z=gTrO+G&EnLQs}sBF;g)0{n)lyW*o#%u2R@PqbI`Ufg|xsjnBVbgaBZ3yy~^7|+MW z>#K!kQq0XTv2HQqDLO#dQQWL@IJ}H}*OL}wX>~eIb)U<}zITsAaIV7mR*xHa)qAX5 zeNi#K5c-i7gXLdR7jM|YJ9!VfOQUw~92D&C&4E17H z`0hviYd0&uf1KqrnH1J|_*7}E#*;WSn9QsG@4~N2I>0sBtOA z2kHbfL>kExFls18j5=twSvo?h3ca65%=Qj>mv%5#^~ON$uIWHUEg*m-}q@r+fI_#pheU)D*{?XFcsK3lB!cyf9P+e$-=E1 zW4!gFe!U{O9`Z>t%`nDKsalHB(lqiWzD6)a9J9CZok%p!jW_}^QXxXORhUvS6 z$KH*Flo2WBQ|t0al80pA14yO2T%WfkfJysT>*9|h^FIRfi!oA6f}OJb(eCSqp__~a zs4lUIemJ5B|C)5ii5*Qa4P0Ev@eWn~iL7s9vQaWP);my9k1EZx$we^B)eNIua2I|R z6Mqb@eEPu{5-SW>_xjIz@{-S6iErcE9HVrG-Bdi1?3n`M`^OmuUi>7%3SMTd)h&iR z4qZVo;jhj}4=%E3rPpQ$hmNr%J2k1Z{rwJYlp>aROFwAl2T9sG?kPTF9kYdhg4C7C(TkOJCIH~$unN>N52ae*vy?4q@vtUrbdeCis+LejhvtKo2K03OpmOGS&kVDas%}f4%x3N zjNsQ*h;#^6lE*tLZtGE3BkkIun)q2??FVho_J+{=8cU!VVTBSW!z;-79UzTKQp`mz zvQvr~6$t<-!&umZsyOTvc`vo)eSDwB7-7G5eEif}DW;zGA=X`OzsHPA-TpPvnPmLq zVk=I1L`A5hi~jQ`BX5lEAXqR5d7xL(#3m_b^^_D7CB-a)JjRs}a@E|=KYr!3$EBa= z3^$M);+Q`I?cw-Fyqi3#0N!FrUP0&l7j%hFN}fXJaq@`fcV(@qEf=Siudo`ToU`2% ztQGs^<0apKiFzSA2in+Akn>l^3brvoJsF?E?JZ3ySL`&l^b?z z7PL*PX4V+BsM*(`0~!W3=L|PNgO6kB7oG+=#b{KLM@XNy2<;>h&_%f}hnoFgxP{yi zK`*rFtuI6l3&=Rr+up@-etcOTFKnjQH#2yxFrsCYovv&T-%43q@Z(QXjF&3{W?71P zgMUT+I@qIFiH~3u`B%F_J&~2;3%%*<`P~mzGmjiLE3)u*$CARG?6K> z7LvP2*emcdkFj7@$e7)Ac0^uc-u*ahytX=sl&JB|!ZT1HZjO6E=cf(VhU|oa#+}%A z6$(2>lZDBFJ8n;{Gr6odHV_3Qn>D+6YHQq^8R}WdpBUfcyEKK&R~vxXfJQp|up7Tq zpBQMpn!Ex3ycV$1CAiH5pA8i9pm@vMRJ6%Sha$Ryeo9#*GQBzWn({hj*((*i@C{20 zfATYjbI@ZCEz0z?;uvFM2kgTctbs7dB~)9zM&&^BGk?G$wtgX5 zweqpV#RJK`_|?JqdZN-xJ~v7?TG_**Rr{Sog1)fHrOTyWiZT3r|MT%91umy2M=qe- zKd?K~ko%Gp$is@0CM<5%JEAW1M3(egZLvx-mM?o`q|!oc+41a(6q7rt*;Ect&*IyF z#FG)|+gAc?6#P9mYJ(H;@#0eb(pbbEzk64z6yvN7+fts_i`S8bmq1wp;XINouoC(g z(OYy`_v)=;@v;s3eN!dm(KDjGQjDW&+$c0enk&ETmM6OOaTQj$4=D|o6Bi<$R0y>l z$Wy1Z1;%EcaBIX?_nX?-v#a4q;z5Mg*Qnk@u7;O?@+EF%2X1^;9IkE^`7U8-z-@cf zUc7CXX3-)=Kn58MFC3!E70c%e3tPTt8_5vsQ}(q^^>%}K#hVY1B*pM~i!GG7z+yoOS&cDgK(~>k zNipsaXHsa~D#a8+K5!?yHf42))!2Eq?iu$IGWya2&2d7z@(5>pT)!26O>~I5I-GPJ z>TBQf<~}9%gr-tf~_0M}g2^+{LHWTy~r-P1%i{k)4Es+MSd2XC-l{1ZM3P zZ%diy+eB=N4sGg%QlOHnPUv}~H{oXrTl}XFXHDhpZm>v-eq8>-Jqow)j3?Dx62k!U z?>@I=yncK&v5~Tna7gl`7rXY;taS)wDDNzG_)M%EvQgVyxyzI zfXMLZ@wM7SI3a?>mgR6BN7ggSC8EF6bSLqxqH>YC;TvDF@?)FVKCKrXiigAi7TsJ7 z>Tr=_yu%H+H7P434+uvyeP*mfKH!7%y|3QTf-PRU$G)=K2v-)u{47bx(@s|rXy=VYppxUhHE4I8|HzcwIa050U;RkE=qSqU)`1tJA1F)9 zO?jVe_DeA;#BELeC6mxFB@qfk9Axny8KZI{J;EYM4yw{ER+XgE*MC9xe9$R8*Fp=E z)16;GRcLs79GYkvF^+Ex5-WD0%akGU`U^scV=VMeI@N~C4UsA5UzL=rc(U*0r}rN8 zj60TutSocee_LHZ6mf^)()l@=qGENg-}D^?1|g)~eG z0jmC-^P__DnxKCZV*ef#|F5vS7&CEX$Y9sg(nV7&bkzYV<`LZ+FI4m8&h6ff=J?Lq z0!BUo_3tsjO74cvpixnboVPEoCnE30U0#35EST*AN-!6YBVP;%`lj8N63WVQ^`0>N zCc+u^h!OiKa?OIZn{|T5dK*L#pnNZi&aPQ9)39!jFTbzXU#tYg&XNa6MDHOzrX1&d zSM@bCXzVIQF4(?G(_4xeAF*N1lWGL0TOvNiHrfrS9#20sG}mAMr>m^Z%+yZOY`?<& zy-q-(rRMfU34hq+x6#@ryY+pB#lH8M&+x;WGwQNo=<(%1{l{AAFw8oAX2l`!RPCi@*&(>p@PqMlVed@Okg zR~i7mEry=Yh~+b@52W$NYgbsR*LJ%FVizEHh7RgkgzSOZYT&*Bt-+ax=fX9I!hOGM zE;r6#JsA%5tLRUD=jI|T-5c_dsaOFo3%x`QPs7*48E#BJL)+OO8&`I_6gYg6VhY$| zB>(`Im`Waw=9L=|b?f`a(cFCY&eQP_PiNMI~9 zYwt&1^;n!$EBd;j-JR=N9F0~)D#F4yvy7<*x=3;h)H}-UR21G8=ur6M!aV+tnW{W@ zajlZmhgYI&G0g##eQrBwtnzbki@C(VdD```Q_I=*t4Uw-{dBfXZZC_%?>nTLuW+xi zF!Mr$q|Fx5rMLL&GG}!qHt#LM?q*C3L|LObNiv}lAkrg>AznOwwOF}F1R)x@O1YIL znQlXyr$U2jk_|W?LmX@@De9-{#nY3j6Y0=IOJnp4YGuRR$JIL%bRvtr^lax)P)We{ z378knT`0wjEP<_Qg_Pc<)E?ZOr4uIn!Rk-@L~rjp zOEFB1OZQ>Hw9ekxP_LOlfv&+LK69|rumAv#Bkqa0EKZat$I(gGq3A|q!1Q`_8Nl)~ z%f#0t_l$OWLrZ~>rrZssL>sN!+t`^? zEn4HnRtEUlevcr%XU3?+RGH8nbTh+vX6k*EoepuHBik6yb#90>h}|0~%Bb=eGtVAI zbbG*sqUx27G1?b2;1fsKFA{n)?%+orSlNjDqjuh% z+(7mdby40Q6jMdM_!5X8!oFEtVI@>S@O_VaNFw7CNV0I(j;SbDqoFhKRH6Ygh_3v| zzedi1D~-h=z0qI3BX8EP@*%#}zz(I8PZi%KG4)y^>+I1t!aH`lIq>lmB|bfx_h})k zioT^~Yhg<<^Z01-@L})r7kOu6Af1D0bE}sSwc*NoEFaIf3+RMQ(t|qo3wH}nm+41o zUrdG85d1GxkJ|4%US4_DlQotx@iO63fvhR{-Z9hBJ4KG%f!>GE?hht+|?UIqHi0XL~`rV zLv6GQn<4*w;ie9)882UwQ4SLiShrFi5Fd?FLKUwk_a1u;^SDtQ#y!F+rR&33xpL#I zx0lZb__f|G|0qeo&-reEMl;Qk_vw){cGK}cJlaj|RvMgHA=*N0$IHTgK2{3$Hj;Fsnp99+aMmAcw5qSd-B>;_ZRGSENb7cZoS!|Mr z$n~j@^yhRNCb~srb@-Njw{M<~b;>(3#Nw>n=@#Mi9oc!5cYjUe2k{;@V~VRyP*Ihe zcJVJVFu>OAAObe8Ou;@kjU-&|gEzyK-;~3twO0u02l<27#fTKs=Js|??9eb;w#+jM zC-U7vR5C_0`P5-kbk%MC>Np-AQH84yckNQOctD(VY@@2N=H8xb-FY7?nwGblKGfz^ z{M@^aA|MshjR?L-kmw*mS%9s#iZ*x`8Wd@`H=UW~s|b)ib5|<0-xysERLqhofK_=< zx{tK!HmcW`k#Ep9Yky4pmVYubtY3;ryOuEL7;~w=o;p@3#n@{K7on@?kfQux8C3R3 zD&b(0`dZUI_}+#CPO(x9%h}o2C%>Fg=a@^dpPRln3hmx-pl4wecpco3UlLxlpii^T8a$xc$P+F^X7WJ-Yg%ASL(N5JQH+d(1gf zlAKOB(XDhRskFLvnF{?;N_a&p2s zw=0{`ZlM+VE*3vId?xB^@LU1 zCxF8w#P^A_MSs0KJl*b?{z!^p@5&vMLo{W?@>{C#{1e;`;A1Vmmh0u8?fXz&2;b5@ zq>kYZ1;9C^7(&)8pj*$i`Dv(Z0iSD*SObubAnN={)8e(2PYHWIq+XnwBv!7BHA5OK z&q#_G-}`rZ34tA{Lg7ye^AIm7M%L(I`USjSOWw(hK)=r)XU{|Wdzc%7^#lj+o0hyg zG^DI9XcD;)yP#t3=v#r!c%R&;o&bMJpi&T^KjxldtDJY=1s&pa8M*A0XtD?zy?A-# zuxqIR8&Pf&mX7bTpto4JjD0Rmz@S4V+a9#rhJebA-zyk!MeT46k+;n0kr6lt{z9z`2 zbzeOXzvV)Rev#{UD=D63ajNep-K7{i++549`f?#Vr8hO0#^;p4ZMnr&z=yNlejt}EQB;WETPEbMdl2H z;nC+s!WZU&tDVvxo&F&xThsj}*j;-4YvjuB1d{!AziED(DE;pP>+T+Is%beLhYsL& z7GpqM3Ro80ux{^eg{bBJVYm@VT6A<&a!7=}nYy0aUM!?qj z#@uBv%kjp8aHZ>1krZR2QUSndDs?E95ii9cx^bw@_*ozdRlu|P+Y#s)huT4SVy}V5 z2)vQYcb1#A&>scD($n|!yf0*;KOF49EXgMW*VWBJ^uueo=}bFl0`~1Mn|r4&qN&Qf zaB${F^4PUd40^B_xy*O&siXBK6H$L1mf44?&P$g(rI?b-4%+ypaq(tFksD!wfHl&W zk2b7DWU9KAkvN{{rN39}Rnft|a)A+9>v7DG57cg{Wn+GJFx}1a*x~igD{c!@-W3U| zg+SQd+ym(JTljl$6>3#K&hh8Peo0(P&5}GwFK!$4&nQS@PHq>OKGdR{#ieAH_TYE1 zXPgB^JXW<8N3Q2mDc_?{CSqioyDB*HWGu^}IlouZ+N9Ek><|UOmB8J)`6^z~tQP`a z){?lqFG03%^~I|6gXJRSX;S*-k0y%od*){C26zE;c1PZQlVc0X4bOD|eCLU(A|hZ! ztR3%ppC(w23g-qb%G-3iESS~rN*>}Hm5iaOhCSQCRM^dWiFU%36l@9QJ|V;hHyS8d zQAL#H{}doMdazj8N@QXC@;=NwSfCic0Upf$u@4PlPwfyH5SAbwqCMgb{K4071YL<_ z&M&>K`=^nsNiKtHYi|r34-mao+xq6*w7Ov6y`aOzRmc3Sg>gTG99pNm&L2^AsIwaN zkezro^>W)JJV+Jh0q^Xa`yWstBLj;Zo)K2_snv{*SJeRU3zMI16R6i{hiZR2Rs~$$ zDrEN)^ouEV!wur?v5cfm3^q}(>qi^d_N)Vvg}#P(pAZ5SQI&gr6aHfV5@_t(Z2=Vi z<;)S+URD=`%0~B+R*DVy;zZJ2v2u1-aN4mJ9=4)Pr2kl{$#l#wBe4uZ^n=h-)qGX7 z)|nzX=<2|U3)#6{T`7#sJeijEr!bR`U%mL&A#!oJhtOPu<{U75ZdSpSc`BPEnc@Ig zWJY{Fmmkd=mmiv7UhcJ$@m+7Z;c<9i92)Pd_N`SRz^*3>J_GT;Tih0nuJQ$MGc9{@ zBM{=1yzZcQe0GIJUn6dWJEuSIp|ukRyKrUgN#m>W=ZFNKG817@xJrD6BQxM~fIfNU zp4tI3Et&*qlS*ayT%N5^1620|K~s_-y3QT?sH^) zYSGI)S>HP-R*4jlPBfzn#7f8l{}9D48YIsho^*;SsQ0_z=K;;?sY~XlaS)G%jS9uz zf_NF-+YmUL)z9qZ-cb~`OhP#|?(=eA7$iD?e&8;bVtlbTQ5DJ0M$3Zpk2qJW z>}>I%w_M`&c^{OtUdMj2*tGPJ>c~;*J(vez{ZYm(2LE*4W+)oFI#6UKBgVHpd$+;q zGk?A3Gh@mp4tLosk7v5;?WWJiHR~EKQ%+GY+@T$S9xb2uY`-k`2jX@fJ$eund)fS# zk_Xe4F142nwT-`P8`04|FU34f`JQ|Oc)0iC&%>1mU|!Ss19X=lg(BF3EzpQh2f*RU$G~ zAW5#+`pJ<}u@-(!ZD#N#Gxz$Wvu6kH?T}(#XM0AYpM0mJ7~!;$!^jZ<*hgvG`wQ$1 z!mcDN;6V}Hi<^xU#rydc3HN#=GAEgOW2M z>#}GmW}8bbzQK|RY@$3a|1^FPTEi`_qlpZ}0fL2JiOZ2pq4&tN#oL=*K8f#KOw`JI zclA#asQcLsQ`FqX=hHd7hw(d!SzvzKutn-o3~wuBN5$X+!);H^0pKb(eGlsKlAE* z`Tpqg+hF+~24~s{o<0!-p|ZJoKCvD6H+^QZG?7~yKP@0hwLv-b&cAL9bU2Gkd9Y^zs^Q?08^br%u0xVkuBa}T;7-z%Ae2v#KcMT;#8WVgn~_Va;r>@p>r@UG=-G?#o&J8$-Jj7&MsijRWGmA z$mJoW4tOrm1_mz;$Z~b@dZ>?Ft>9qr@8Rrrp%)k!-Bvip2r7`+WUyV6))vRezF zw2M-VISN$0_hD9q6RD0Xk0-t-s!PVk3V??b2}Odz<(s8O=L?krKFKf zeDz9fF&XR!pA2948i{q?QU_GJhf{a0sH42g2M(8~JIrOnWcC4fguXd*w66|oV!6!K-<=-w(xAsz`nxyq}G zxU+b}T>MW_0qprzmzlXzzjdAL-qs*$!ZUi>pDtX*G6DMs1c^8NU^YPFv}=XJRmvGs z%!IZU#1C)~Z-_%Z`Ev?==3Vg}4hj;GFH*yrV?0 zBrhRzrEA*DsNsg_cT!Bg-Didj#OvfDT8gz+>+63W!WXF#R~4_5V$v_5+U!veT6D`@ zPr&G-kIvKM;d5pYZkJjJ3)$BTW*|mRsp% zM|D}0#7R8!9=QlQ8r8==r|uGm3Sk~kZeBm_V*snA178a(07~F?#=SORM@=8rC>~#E zEFrBb$qawS#EzA}`V%3Wki}?cMxZ%RMhL~VvK(KOd7N<`-p8Psj-CNKkW8d9M8FkB z3Ch6^^gZh6_L5hvJBy;YdjWu2Gts;8tDCh=r!aWuMiPZZd z-{0}+`EtQ(R09aFgbA2CBoMqbuC*7Eb&_qrS|Qp?GgEybz8y>o9ghsO2q(BRk53M=>|@Q%-^qOi9z|KeMKUMQIxJ1`jxK8f$|i0tMQjC24|>E1{p?7> zotZfC^qpbUaYoWwaj>Rvn%WA<1hcE4HCHuZgq}oAXi& zX@q5H?ZNB&{OjaypSMEnu^R}sJyen6v?v!RQP3s~sBg^(YstdXpfY8TGfjq2rdh79 zQ$|H{x#~>eC#(K?>>z$Ipvj{!uNMeM>c~-EvUyiEUSW!KFU9Z<7H7#1il8};kvL)D zIYU~tzSt80bm8Z`@D1ZYYIs}4Fch|npc-HRtLO;S;7MkUky;rrhnfo6%DS!DKS(ja zJA`#SLKgN(XmowJ5{N$^S6KKM8O}{lq(946PJZyDw&byo;#{sXAw`uWc)QQ6yZi#! zdojXJb036j`RtYtPu_13DFp1YblQ}JsN!Cq9qut>Owk9*Dd=iqTV07c4K z&yypKO<~vhKpRF>Cwr3Cy4DIUvd_^H4beG`?~G>xhZubS)0wCei?2kQQ`iYs=In}` z*&m@u)f#9nN3Zx2nzi9|tCS{ioRu zwjr@*r*qR*#M)G~3FB8vvQDSKG*gqXgF8Nqa`OkH1@Me58i%tX9Ool2{UIN>z4HD z?2Mv&NM0~_`OtHccs=M2o2Z5i3)mKM4y6$ixk}ECj}B$EQ|0K`VaE&!TM|fah|V0> z1WraN=1w#+ZbVYKcUh2GTX?1xecFs)=Nf{aJMi)lP4jDdY{+238G!FxwJ+QDNZ^oD zT^!XppjvMN3#2k258|a7?M52&3Bm1R9M5vUIs2mAb@Ab>3mL7*A!RYb@AiCjw99n}_y!Zr}!?T@KtLZL0-xxSI-M&yrX!7_;4{8PyZG0V zqQlqM3E{7sQ%Dyv6TJywl{0EpfcchpA7;5l%#egWV6x6}IUuZPgWGONG7$<6s4bbf zEW16@vX#+%7O1w8`k4Z_%N*U7Yw;bM##+q;JoUv$ZjL5eia4dL++MC4rg|UBp7Y-spkaV+pfwitC%PgPV@k$nW9AR z#}L|V&!Fh^Rfm_RD~{d9dYyRP!XJ#HjW0!FShYq9Y#rTETgz8beJ5MB1}8FT3AkyS z`W-}oI4XC+yb=7OA#`Iix&(YR?;bwU=JzCq!|F{*@*C*FD|tu^I9hMzDO2rRk4{A~ zD07-xCl|)xklSIlqF6**WJ_%17T>uca~EAC4&_s#wFaV%uHDYBz5-9kXEx*uXHGXy zF}>(?dP!*vG~LY9H%H}kKUvr{jiu3>sri2SzyFVnbC|hiYJbvaRiEu`u^SZ&l zD@(J&{fs+RQMAZ)_h!*|uoI({DpqVkWm`l`gFQ}d2D=WD{dFmOqV`LYcvg$MYs16U zUd3!rI9{ZX^%X59r6+67f+(q*WVrGK{V*8aDImeOP+};X@}CsaN+L#3MSjNpW?IZW zk5`ft`0gKX8g>TnqkOYH21?wS7&X1;jH}WLAt^xpG=KzCvTCWoBR3y@{(D(^e+h1% z|Nl$E!8dDLAKBeKo1b|4Iu#^SehzEDosu+o*#UYE%m@nH{wka2yJwG>6sl?CrxKh~ z&bc@pe`3|SB?kd@CQLRBhBUXvd7zzkp*>m8K-}%TGx4_sxA}c<)$H8{1)$dA>>JAR z)-JFA!!i6IWZx7})FaG%_^%9Q^tWs~1vN?5LW5u928uE1k&>W33zL;{Bl_s7nOi_3 zE%ri|!b4VZ0Q!&R4)`O6`lxka&$vj_36I7ODe$o)K(NTz2EP(2NgfhpMe1MR!VO9J zro8a29S@v_Yp>J_pA1^ylKP|ZpWtUyQ21skTv-jTg?Kq|QC+g=Fp%R#31EN0sJiw* z*}EBGVom8jrq(H@BKZw)ap9Zk$6}nL&yb1@j%1FJ-fspOgu@Tt|9N`;;w81e4sQJV z#b!RH8DvGBTKr?s?h|gcR{a@=8hA}Hseq}b zP@n9nOUxYANV(*f&^{kD{G>nV$Ju?K+YCC|w@r9H3lTYd?ijK+Of`rFDdCMEc>k|C z-XJ%2whfOuu|4>4wMJ|Bk50i*QB z{>RAn^i`15@@txl&EF@#%r~I`vfVI$Zp(Xt={!BpGwNS5QJnsqg7n*szs)iMmRc4D zaNA!;IzMWV%mM5K5cmFz*Z$c*^YPE8m;AgCM5~(G9POrMyx6=sXpUP4?3d*dgifnF z^Nzszs;g}EHi2HGo|DzCfa}AaBff^$lLRmn3yHY$o~)T;Siq^^-G_2@&luRIE;rBCjTcx_g2P!)H*p0DP?a_Y`z z&9`u%6yw4ej3>UjdG+!XbT=G5S|eXL1eHGx4+8G^Z;@PHw3Q49N?AVGM)>5W$r|1A z;z{JYiPVXVD4b*qK9RD9QApD`H=!QeHN%}~-#lz+Cx{TapHXjv!_*kV8Iz1K?GTuR zQ!iq~&7l5CqBrNG0Xb~&yI*C^toTWpB?mP!Xt`m=WOliJxV|`;>kIY%j_<-flVbY1LsWq_wsq)xG4$v{(V+R&5VS2oWIpFVjh+U(?VDqK zMoi~KSRDG&(hXOXz66Fi>Dem}*ib%l-(n?!QKXShDW?CH;4K(=_LT+7@*(@HQTptvDD`ftMSS=sK`%Ua zC^3WESv;z5S(Gp^GzNkV9=4<#8nV2+zSC>(fkTTjyY;2J@bTZmP@Ka3YL=L|6i#K8RnRi)! zWDe_zZz!RJolq1K!1-9+&y=T3zRz(OrjAPZnnHg`9(^BLODVzCh3zWGVMn!}*7^y~ zW97ik@ocHU!dJ1Y4+O@#`6o#+KjyMPbTW)=r&dZaz{^o-jq0Osxm(1pdBOfY^;JcI z!XrPpnJBR4>{_k8d(C!4V=F`_PG{TOx4N-r=74OI~JjWI^TT8jC z>ng*;-O}kxIbzT^(#-5t)rhKVnJEaG=%-prk{D;X$PUIWm=|xf5@?MGVpk%y1{z&u zT$lL%fqrDUVvu4I)l5Eeq{#%>#Mv9~58&VDc3G!c{B(pe9{zYX8@j-F;_Xx)6_{kT z+S`dx>cD1ScJA!@77EcS{K-T)9Jrd6$Vu)(?pg5nj7W%YGmfZBxKUFi+2EoYw%aCw z+|6>oFonkU$MD7k{3qs`ucCZ_Kk}km*{`2Ber66PzM#2=8ADzkMaZn^i1@68OjrFR zRz(E7BNo*})#rCKE=_$phSNE!R3PhdFk9>+(i0Pr5PnfLtYirDDGtp9_1;e4uDRvw z+Nvea^*d3E7B#TuIFe8a8I>n&1j9zrcT$X;(GC!xxW4$4elI)%I0!7%g)^!XpV{KI z1GC-!*vSUmKAb)WKRXNz?K&%kVHiY%AiEVZtEiaZJ6*52OO3E!_H}xjzMU8?#;yRm zBd=_NG5Cxj_C-VNmj_*<_%&W6dNkp)uqzo}R>)S;XuKd0a;J8diF(<$%DrISvY-gC zdv#|*GfDY8iko)xq>2lp@FGvQLn19e5QhyHP!TNHAQ~K9@uVC4aDoqCu2SE@Kv8%t zv%eO&`io3(fRK*3OWLjm;5^^U)SPx`$MVg&9j|zUqj5O|d_?cGkS0%DjF{#GQ;wr= zUrp4M+P@AVdX2HhhP!|ZG=;&pq9E$nS~+AV6a)ENbp_R{9BNkO<4NuRlbIl*X4p(; z2S_UmF;#N)eIiMnmb(#JT904fjW((%wG~qrnq>oVv#f-YZ#B?e>)X``O*YddU}dfZ zmvy1ClR#GAK&XI}G!Z|q3r5;VbX}7e;@iK}OSduW={mDL>dYng$)l35l5xpgRJ{FH z?d2b5gL<*zby##co=?DN)=`wu8}{$lmYTOAWm4_DA9L-|pPx zx#w+EJ?I`lyOqGoK8wFcc^+Ah(NU@eHHzje?HW%5J zN!ao7S1bl*fpAhB_kAtJTw--FP}%7|Zin1S(2Iwl7y2FoM&wkO9GJ8!TpxZh(mSE~ zSa)_MzAQll0-V+Vj4{mUC&%05ej0(!5kmp-L#rTne`E*lwH30HQpxHX7IK@2szaPe zlFsxI1H3G9*dYoxYUW<{$OJbIk`d&siAERgx{1wrz7+%6h8qdtS65+6y&i}y1RiyC z3{v#e6vP+Y=D2>gXE&KIy#(?Xfk?H6DF>3xhsefO=ZHtG@fSg7?V+K^F1M$5+1m>uUV@8yQUpj~y24pSK1S7mzO?-=$VYpj$8T9c?E0^i* znmS0>mgXkK)U=O}?t2>$;45E9uT%Y03}1MzL~H{b$(o8CBb zjK1{?x~^QXEkOu!vUW^e-a^%}(wuP}?j~yd;`#Un8v%Uh*Rlbj^InqrRC0TVxoaP6 zqHnW&W-L@*bSg<=mwx$f@8o^AbC)gD9#Xm^#!XAxbOwqtM_7$eCteuR248?<60xr- zs}Y82lmGNA%JPEqE!D17;c-vh72e7%42}vnwk>EbWAOxX$u|BERAZ zr6`BE-x`07SObBSx%EXtAj@vX4+9gWBr*eGn;_wR+WSvM_S`Qkp~?pdLw~YQbu8y< z&e#MfQNY^fyB9*dBrM;GdYd6n-zD}1KCd73G(pfh_|+vi3#rmJm>g;Tgs;cN`}qvO zEoZ={q{Kdc$I~>U-TA-;C;1ankBg@X`>n5=jLa<*7@WkO6{4{$e z^@Z8M&9H3s($a~v1pkk~cV(D6)mPbE4T(2D>1FOnnn~amE7<^#UMwyC{M>@sNE?SC zxoWEpHYzK_&qZZ#^F4%LBs7rS5j&is-5Th8m?ej(+eV|i54o2m?2=;IfyepTWfMhl zAr*YP`H=V)Dp0v6+AH28DVJitPr`2elCnrJMumU&HQFS2@YzA%USG(Vd=EnS*8GUd z_c=|+Yc3%fAi%S=m@LUe^@t5~P*XaD9)MbKkfJ zP3xa^uxHO4NSo2Ga!h5#54hCgS~w*C@CQd8&SvC%O?-L--Wi|Q@zL1@gvv2jy)$wt zu)82x4Js>fCDu`jK@1;|vpqo6$}J0?v=q=Q1o^J&y$5J{L&Cxi*IBYP5L-Xj%DY{3 z1?1H}F5a+0XbavpAXaUl?*bk@3|IUuo4&U)%P|DcG58T}{BRa{0`dE2@brB(L`H@1 zY3^Z=$fmc8n#k)m*K@fI`0o{n>rHxbYn1KBL3qZ=NkUOSaU{fA zpX}x=`$(M;=rRQnPJHTxB%0v^ z-DPZ|;Z(evC6RSl`EtV&M#r36c0W3mm@O!Us1ntt1dEjGl?#=3REd6Va&-#r^@yF@NN4j`@7+ZD`1Q(f6w zAeu>IdlEBI1MZJE!3PY3Y??a^e>}2#Cc;QTEXS9LDaSoQCVN+wbQ_{wY`;sMu|v); zJs)+E#h@+Zg#1V&P7;SN&oHCnF)vni%0E{L6@-whkM10f@|^oNa0V-f#ai_u3F&k&xFc6PPfQ16{YEx zbUTdY5rDhb1wZUNX(3EU7W7#GrE^07k9-v<9pltT1a>9woAAE3*RtRIn*?AYGBsqz zWh7VAGlI^BslErlaTb+o_D?nzfB6ju%&v$EdF$gVehkV@2uiW^oJHHz_B&ATC z!LC$d2pF)+c9NyXh#!4Bv0V#x3R!;TYr74%xee*UcnJ;gpZWN%W=l>Le%` zO*M}xHPp#2aX=`H+#OMMooP4%a-b2gB^d}V*MAt$3%f2>yXQb zd9iRQrHTP;l6tqjh=b?^vU{+GvW%#O1c+pMS0`u6O(l7UOyu{1FqwjoSO@A?2LA*F zQOiNP&P)JdF;YYv_z_2=k0PFDcTJ3eE$jXvpvQ1zMG*J&9AraK09NYE z?NuL<9sa#pzU2qUEKv^KG4v6S{x*gH*H25jF9JlHj z3)cqifGVH8OcK<9b%n|624QjS0yeBN$X3<$UsPaODUO+Xxvkm4j+N3Lf$+4 zM8mv0aJ-RFDf*7s#8_qsz|3L@Q4kp*VRb@%6`c=64J6uzeRUb5Z=g;?)ySm~X5;tK zcY>8%(Yb4nkevNKyfGJTqAbOMi2J-n!gJWQ7c&I?nf0B49z7IYNzN9zLM95pk4xcY z{PJ0qDQl;UbNk0YggP{8%#RcLe1LtH8SM`4?J@xd&DtFAvX#J^Vz!AHL#Z+4TvYam z2p_B}JScfKD)tauX&4x+R8eoDmLKkO)P@0i@cLxZZ-L)S6sD)Xc_%TJBoY?^A-omx zppe$0-Ob?oSbfx0+(KV$mmB!ii%jH_<8;?>*2@ywi#W-tiHt=vjG>HrabdnG@ECxp zTL9D*tIJpzK@m0xR;H}x*N)iyGjLUTUS>@_{KlUcoe3rM({va71v2WEA>jfy zH*}j@Tv}PN0$sL4U?KEwC0x!l>9h3h6_UfA1_v{vv;Ab^)nb9K3-^&-9l$iKI1b1r zUZv(z2JX4SjEs04h^p$A#2YH`!|Fgnj;UB)wQ_z}xk~Qt+=G%dl~+COjWdyfj*KAX zR%^)~EBrKmDC50m&zz=HE~jaqF!QT_#Jt5z;eSWDh3t& zUyU5~JQy-x@nq;18d2S=S%M1r zA+A5C5WkXG6t@TPa!<{Nc-T3dSZZGL^bHn{oCA<+4Y(%(671uy!C{MSA{3e$mE2X9 zZYln4LWQ0rwD-R5zSAdIacIL$1ZomG+A@QD1xW;E2lNG!P4dH%Mc|xop&05f=_|k` zK5*p~Yl-E>2cxYadIiLD++ShMVy9~D2A4`xBDXZ{QS4Ir!7=Qw+(Oh#&pF69&xL_v ze4FK2d_Z5FZ(mw`mY-}5mv=e`w5x7+W$|0^q-7GhAQzN}_Cl&Sq(wnU>k7{0_b-lm zGK`>-McU>U$`5&+$^%uX35jk9W@P1)bjMKl?+&ErTX!m-v;4Tf0jUc(#dsjJig>|_ z0KXYCOb8W;r^_}{COvke6VhuEsjczOkm|r<{n`QD!zp>H)eAIs^rvY7n@ymLd)0<-)5B{*_PV zJF2tXc(=!)@Y#wYhvu)TdsH?Oh^RcpCmShLJn#NcNB!83p5EK`D zlsrkIKhR6~h|bfEl)lO!`Zf@UTahNL8iG=UO1M3Qn;<(2P;5*mxeBZ^9{DGK#{r4H zO}O1jHXj;KP~t_S*G_`!GT!SQxq15D&@+kL;i;;B?^GS+s7x-m@bBIZ(4F-zPg~BT zm;1rbDIb4W7heln(a%z+PO|ocJIZ7&M>NQ6kSD|o`g^EXQyV}}{vlo?=?4kb-(1$N z3L?WMj64LKs8ibjsuI?8lc4(MUhmf-yeukJCdX%Wd36t$QWL*pQ8xXQw$hR%_0rl@NBj0Vj@hQIB?u6AS?x6T8 znb)DKj}4J%h;K-=!G)PCm2kyg<&xNRTj6Yeze!Q5Pw&nM*&#qzvdSa7uET~B!^a|4 zkO#c{c7m8aep|j*u~x`de2W!hB^o_+-HuUfeL+C?bM$r79X0$@UlqGW);+N{QJj+y z`XI?V>`U5Z86j$Ngk+mS@@PFBWVLwpdryx&#!gbFHz>t~a-4L~>6gOI_w8vuWPqL* zLNEEcaD@r$B<8Z0mgIUm&TF0Elx#9tuQ9+!IUaG}crR)@15_92PN;Wd73hBR9m^2d zzSK3(D-&+KlB=)b^@%l}6FO9h2GvOg#5x8^ z^nJ(e<=ZRduw+3ERts4hd=6#Eu7q&%S#sm#6NihMYPI>GsPO>MG;c!p8XV+Ws@pPw zmD!+DA%XokwwGGT{mm^%EX-8Y zgFfW_T*^L>TbzKbte%UyZ0xev3eOh0%WpuH<9p&0Eu{tll0 zRDKN5Q|W}0FJUI+IAx_S)&!UJKDm-x@G8C^?izXt;>^-sKzNxiIan>j+%P4cFh5*Q zNYZMd$0Ef@3E&<-fFsh$E!=$Siw~>CTZEV~ec|QWKK=9xKcDD&{4-LCkKCk%t{_z# zV@pLo6n90^qv!|QCgtJ+B^c#BiP&OnO_;q{D8MQ-u@&6Kif#R&uNkyel4aE)VQu1% zQDJCBm`#8t#AAhibh!ann8JSS4vZKD-k3EER7sQAm7~S1dB$b|2M;up>~luCog1E( zFydC^rbf0+#|mv_od)ST#ux@iZd4TqgN&i)K3Cv`z6yeNVeyj_`T~!0rlO6{$Hk1}zfk9S#Nigoh0k8GVq)q8>^;r}I z+g&ZD8Dig8YqHAX+`Q>knbC_UKYW+b1RVlm*{*Hk0Esu4R8y3xh&jm27T@;n#Vj92 zzAqMVul>v&Zkwn@%h0hvW;^5Kb(h9?59Mi$H}+6F?GF}}#@jaqZCc-Y^@(!2ee|GyN65Zx@@gimzBBUx-?8*Zyq!NcpP9s&Yd} zRNp+d)kdBHjnI)Ffg4e$Z9k~a{NN~Lous1wv)Z*)YzkwMuOnb5u6+fcE~RW8v;n>? z&qbss{cA#8=Ghn?($aq5oOR|A#qb&s7W|{D^Ncn2jIHjMZu=)Ztlx_mwmA1nFQ3oY z^%@$=r3R^b)04n6akiB8Aj3{By6E^>4Jf+`)SZ=n3xQhTS$B^v%)pHv+?@-OZJZP} zavQE0z>3YMP&&%&r2xdAmh<5~*% zxTP(TJE=*|qt*BCO~*S{Xz=yor_WToH$O8m*N%Ku#DMGkbL;Beq9 z_~i@$YyNjM@@z=zV`KMMYWgn}wd%Vr2UKSNz$>SKs8Dg$Gd#8G2VL7T{8&49cQ+M- zJxk{_2`qiL%h@Angkl!q0fP){AgB=(a1(|jU=dqLF<|~y8KegYAlywLxH+nFYByS| zSHPUupj7CdI0xzxN@OjR2Ubg~_3_G|TfA~R*y{26vD2~=m;;`*%t}MrrjH(ebp2uS zyc3t-&aFL`6VfH*2|Jimt%b*&v0z=*oy95Fla$xI zl%4W@R}w!Pj3#3+mgAz^O2{9udGHl*=~xSbvDL^oLap)f@`8_D04MX)km9vtkxV9P zU)zvCN8!?`n>C0#i;~D0Nr)ATci&ZrqLOU;%eK8~GxJDFFoB60_stWq*l=LYl~1{2 zcu?8fIBo#gVL8;jCRP)eNf`Clp8=wn0-*1mRW~5v+OCD)?FV82x1fi;4+n!|F!$gF z)$g7=aOBpfS_*rOSUL_hB}F4qnL&B|3wHJj_ddJ}4^CjgF=X2^O9vxo)xa>i1Nt2o zPwAVEy=W`|dd)I=J4QjaLDGJQD0aP>c#<=(7ink6&!dDwZ5dyN2ar2H4~?7askJfI zJk@R>loPt)>yYRbB&i=TuzV&7N^h5VJCsP$v#T|4x4&N3IIdSCa~4CB0O`Rf3vzE* zujJ&MSynwD(XIrH8-p#r`m!c4_pQ3D~9!P&Cj10e11n7=l~FYP&GR?nhN~RT1Ca_F=LcL9PC6bl3?p* z)<`&UNhPSrOY081Il7BNw+U<(*Zu14R3O*k+ybdr7KmUoFNP(pXtvl&zrKrei z-1EaL%P;u?RKfX8VaF)zHs6g?IZOYZ_4yL5_F$KaZQUPiq1&KJV+FdBwF=}uiZd=; zl;8liqwNJ^NfChpZi(rWDWkB>emU8bQUIHxV?Rp4i4GXbbG2U^s20HsKF=&l!qFYg z*1IJ41>#VQCN4&b5`7CwyS;7d8UE!M#Zx*5BQdZAeUJ?b>jGiT6{eBT13an|dy*NB z{$LZN9g9|gP)%l)f@O&zZ4)l2kPY7F#I%n%*`pNVh-t>K(0aG+JloELrti*;mXOgM z9LrCBIEy^uLP4!uVpvATI^7<+s(C2(*3#DSq@haVz}-l`A$=iKmJ?;}AYztI3U&}q zy@(dsUU^G(&I1($5pJ^qb8c#;U|7`V-|MM9UH+4RSOn_#TuSLavX-=RT1&j*^y;ig zWlvcw+f>kYd5W+Uzs2vu+^u>|{nP16tkNtCwS>Xb`Eiu{qhJ{7NIbHk%K_X(;Lw1T zjYq1zMON@Lc@ogf)XPWJn(Hk)K5kYk<-a%0m* zN(WfNq2)1yHb^9>V*xfqz9@OQVgoDYbuwD6#A2$5CJS?^pX%S$%ze6pel##p{OB=K z2N0s7b_c5$uyjk9gcQl)nz!=385uS{3%Qf6Zlp}*77nZD9(T?d zvgUoTbM>%ywm3-zK0&;(}o{&KN+p3&TsY z;RkF>M^Jp$>R2?P3=LT0v80a|V~=f##h5R%Z*R@>wbNZJ_$g()E#)vc_2lh=(hH5i z2vsHVKgHsYhe9tjy6j&;^Mda33$up%z_5+4voL^zOh`4RoIM#BjS$fpOIw%C$jbYM zu}=<*@37OXA#!{7R!Lou&NO8TyL}f{A}S0A@0~TI46Tak#!3Yk<8v?@YmxVnlOB(F zv=GyBPjykY5-%M;YnB&OmbzyTvW&3wr6qOTO`nPo9prDFg@=}HM>ElB@5780pySo; zkV|dY@vOBSo_i|d7e!L%S*~yGa)jhAW~-`u@Nvqzk16WP3*kGBRsp>ret)`h*PI81 zg6;^Ql#{%wMLH{uom+!ldOww9*rUWQ?WbYh%~Y*3Au2&(*`5k(jq>DHD;MYFE(g^# z)doKofnHC=6g~gVrp7D}_v4R4)n9ObEiTs+aw8NvS-ZvfsDn<7d?jCzFY=kln%cEj zdE>L%3DyEXmf+?H{FQ0K`p9XxbJcIUJ{$mygZ!=ESsEy~(ziEOFzwYe#a@iH4?LSX z>gZKz#+A{xZz6RnH9$d?N-HS7rdYqBI2V)QZ}IpSME;W;l>iX$woQo zP0)&ma2!tBmmd`NtB6KN0ryckBkTN+_ni5c|KMN#;qP>_DmCf9_w~2h%y^G^tmn|n zx(kc8e{wjdfK%G{h-q>#9E`K-d-$H4i_OK0uc}}D;j@}u9JX+DJ;2j!5O^pjO!puK zpc`|%3DwwTbjD41LhEcu++(!MIJ zi3sthaDFo2U0z;|tO*pq4R@%}ou`6Hg6>R1e)Zj@^(-$C!C{ zdl6d%9o+#_rQMCX4(_>(fPEj6rWrb#E^nMOzgJac`5a&^{X9j2cNglFABguc1}&l; z(BM7i3?;SKK|RXFc~w-6LN+2I^AM!<&eIkgB3OvG0tJ>+{Mhy_cE%BiYvrO-HodN< z%>c1no~2U^Bm(j`{+pR@nMYoBhW+--NUKlYfO}2x6vT|qH_EUu{b3})()-wB3~j;i zS)lO#&?ft-P;M0>11tJ?Tl1Shm5esAB=}_3l5V2e$gx0N?NO_3wnCQ}kpA!<7f7fB zZBZS(Wi79RMgRp^7Is>lf_F4I?rzoZCAr;O7rMIuX~~nD%en~T-+-0N*@TFSdRX4b zAIK{QEG-BJcqC`l;yh(u3T_of#RJ#@R2$c_3;Na-=MF2r>jshGqOG_Rq#>OGxlxqk z-66u36nUjZtW`!WXl^m5q`R*YCxxYO-*|_Cy3n`n#c|w1klao$GHr@M8slg{@aFniVH=8Jb(#KeSiifzN?(PDQV?XaKkUG0pG>YiQ9z729GAWL z_G1r8;L2!6aZ)|R=V05APT(57B4X@`Ty4Ig1t3-*1E}yPpeA64Y*3D?>0Z2zs5(d% zZkx(VJe_1VsJO62qubs*-V^9vw{7>i>xazV2M_kUF-1E*tI=Fpasooh#ugn3(Ws{f zzY?z=KT+*dSC)-ESqNM|4BzJ7vpMXy%)znor|p5=wFA4qindcVxaAW3-7XypYN+h7 z%kJ0KU0+Uhpd!JvZhPR1H;i;Qm@WnW+MlkY5`gXJtdHOjGU($!9Qn12Bvy@{BH49> z6JRshpiBgbd2P%4?jz3rr%CI3g-GNHGmqP^6NiZx`jL*QxO_7!Z|By{ zuuTPM`Em|1O79$=%fB-9y0Gp-cV7>gUq3OV$}T2a9|`sE$*c>A-aA1on|Zg{^_9Ry zrUB?Gc%sRbTt@`N2%rYWy`0ZCWsRSCVE!{Fn~`Lo*x9#%`8?C`v|7>%dfBK{f zcKMTi{oa1m%D-G#OQb(;VK^;Hy#e{%h1nRHkE?SdjwSp~(87waRgkc7+NdpRdKAr5 zxn>k=IOvb7z2QvloHCN4)4_yc+g1o*E_Ymoz!207na^YCz){*2Fwm1SOF!K#`W%{P0XGBVF!N_ z6w$>WtlJ#pcI{%BD^LA+gvhw!^W?p|{ZJR%3Fkr!0Gue@E7$u zcsH}-$m~+|g4O;+P2qnhctL78>`GRt8WeeH3Rd2w_KKu;;C##Sd6aAw1S+Y zo7kNUplW&^2Kcc0mJQL}FFDf0sD^Rv&uVKj7+m#k>asVF{NkF9Tn9n3XFcL>vr(4G z=zD(ml*zJ}A-k60@xKNcABoJm=Uq1>m;(eBE(Fef!?q_U0|Cw%yy4fsHkbW%OSc)< zs(;+)?LV=y`ad4~AH0#4-WDmN*)H^`#`%M#)TrbNSugzeM~#6j?vd`D%H zCBz$|SV&nXzAw}AUh*TvA>Ikghe1CWOV)2&Fx!6DPR09rOS+8b>3fxM>R6m5`=g8Y zko<63QU=kC=ktu8d3eqk6-c5ew4R!4{lX2g-dgX@btn@jn%r2e)m|C${mA<`XbE%a z#w*NSk89JqKESW->zN|`cq9RCGnAkz$(zdMVaz2M`J0myy*Zd`UfV@X+b6pT(5F6T z+z$NI&*sY=Q?6LKyD?5}*63*7q}bQ?kV7B1*QQQH3d3+8Q!|cu*(2ozyoq;QovF9o z4HLxxU0`mRAH6cu!a#guwo1Wd@X^mt<(QWJ0&0P4LoCNY2I_9`U`~Am5=_2B+yWL} zxD{;Lh?==A2MsOY`)2{HUA^GUa#VMlBbbxsgL2V+zydQjjM2BL`4_+s?2hk1nKN_Ks!)6{oq0RC)P+TX`|den7dzCT!mT^ zocT(_(CVOTX-POr#xo&jRJqMv9OpT%;k&is*p@du^oTb<)@a~W#NYgwhJ@68JWQ?ZSd?5kEn#;Q@-mzFVFjfRc06wDm*fVCy%~$Wq6K>3B_`s^f_;!9uQ#R()*mrVsC7|#tQ%_46!D{QUIB0?J}~3TnJq*w`x%U;YLk=pbZFT9{QKFke5>fOiE5 zWPY5$ZnQ53=x%PlOG$XW@Vwvf+*j%S^Z4sNt6`5Q2Z!!&He`VYRpO5K^+jmOC9p&i zRS#;KU?(-RXR9q{n_91FMMo%v6fS~*w7xTIRgwB9YZO%$0&to`SY=Tjui+J7_*LDl zUT6Nud#Nk(AEkg?4A|scns2yc7w66_9Xmin%{<Q(jaCWrs{|)e4IiA3YDvA6j1{^DG%LMzBgn_9j-~W*q<0 zkQ^0N2;wv@MH`8FqOkW1AlVVs6%$Mq;LbS&ILcrxFq6|wRRKM-!_&;eOn9q8{7?O5 z2%Is{{Q8`}&8F9C@w=cqo<{(p4}-<6Fl&Ah(|?&Ow`&9k_jfs5 zgU7KvSF?`0pypHUSpE0>)y>CXr9A!z^ohneCE2h#`1FZ3bi}90*Q7>3xdB`z&iSh6 za>lHN!d>uUZ{@n-ur$#P5Ece3x{{ImUdP1h!3y*E7%vAs5nKMo@5$)CU2WD3{H)L) z^6&DtC+}AFJf{?vukWby?T>O=aE+7!6{ga6DbjqmhI*!D(j z@Y^}fc*L!Cu(s-%H6v6!A>sD&JGI4;LiH;C!jbRYJh*l8C%J=>?_#DMZP>As^t6o2 z6@XmoZtf%t8lBRoPLl(xz-N`t0rKX57g_tSANRkYz~4KN!NUFr@XyF*-|Xx?8tve2 zhG`^hROC@opkWdQDS$>n6iKehTi=q;S>pSvNRoeX-c?y}`?-UTXutJ(YW(mIs+$SyFnO-@dX?l_iw`f@Sp>+~(c)5)L< z#hIu{o90i)eh9C$DE(EvDw10i-26*oJ9*4&MISW9rc`H`ZHgM_#MHyBb)6}x*S%Vc zcYx{T2p|%_n9!=t%u`^lT7ryH3{;V$TAqGb)xEH3{Pfheu#B3dUEh>9UaTQVhYkhZ zKM>}7@L3BXO{7*w?_^xcts6(bR77b+G!!0cG>ktfCaLX&5MMXroWAl&x_v zJ3C9y8csr}9?+6wO|PCO&HJo&QUCD~u%;ShEdVQc94gf>IFqp51C(tC&bkDdBX8%1 zfr)V6A11=x55R)C^6H;VA)t~rsLo95;a#8&xOMTt;`CnhOS%^6q>w?oMA9LwNxa%7 zqgr4$XOo;I$8t%U!q}n9mIqCkiTCL;em-iuL6$}(vbKe!lj$*u z%k-rveEQI<@dqW5)vH>n#|MEB?|B9*7|#_agc(0al2-vC;>to$j?F!$D#w1>B5jh+ zP030mD8j;05F&Ykk^XGy=$`uLw>UvMcKg$Mz^(q>Kx5A$TNl&zFr)MZ_MJ~nO+V-o zQ~TzRS(@}N7*2gwwgs6m+6m?+GBdMXGDpBYB)Q!mg|6s4v{YGeh)L;W*U=m5P{_PG z!3ES;b`RNoR{K5Axxxb`8Zx>$kfN~-l?T`MGTb8ytrjl#h^zs7H!8APP3Mh)ddJaK zw8yJgZbRDILS7-MJtVkLq8?8?W*%=AT%Ljy3+cDm-*d-gLt5@$uZjymKn&*C*=S8X z2BGkmoat}qO$?l?z`In)ezK@9&|wbL5SEJ2`d}t^1UiWL7v$MOm#U}`Xuf3Qo_I&r z9qFykmqy+P8_HHEb!`gZPwkNp1JE_@a2_n?Dz&^?S8vWa9N%h1`}AVS(muN` zmuJ2zv0|`hqwL9UkO`s`qD*VsGTfdtHd^sC1Iil$IRUs(Y+TS5vrK?Bvo_W%>-`c5 z(qrnf(rD3Z_HFQ;e#A^WUoEQ>%n`erH$W4upq@@ycrU+ZKTUv} zwVy&|i!+SaUxY}HW)_Ya`B4f`IzIqNz?aQQDPKT=8D!vpKd5Z(zBuCzgF{rv9k5N9 z@lN>tA^Hm!`^TsL;T1E#f|se5O_f>3U$={#S>$K@Gyb-Dq)L$V`;3^P90y9P8PV5Y zlwZFOVW6F{<>Nph%h#VU=@IEYiiL1rov9om_sx;N&67t$Qz&K(64Gee@FVFOG+xN? zD$UNArT5EwqF0!$S7a~YI@tKBka{H~{gRnRgyVajwupF(mwZu{DdMpq=vnyltT{?PSBvaC00MQdQflb+y>;DhUH@=+u!C`G)+bbv`YXZ$lCLByJ2=ZO zX{>dkZm^>ctzb}qz~Li^JVPnps~~wLNq!Bw2K@@&V*OU zu5uwa^0cLGCL2gnS`t#Kl}RafnGQ%kZ~AO#HCV}T`wE|!p0KYw-Gllb_5JF7a4Xz} zkq%-H?#;pNfKFlVkJj1iO3LsN9j9+>uq1~04oa6P6Cr8;BHKRtYD_jUh7Bd@he6_SPvvcZ z1q}Am87Wg3-_L63#aPz~%Wk|ixkZ1V`}{LAFV@bgTUseG=2x4+rZxbqHmuKCU_jz7 UJc5#uA^{I)Z@)<10DbQGA0!*8HUIzs literal 0 HcmV?d00001