From 3efcd497de7ebe93b9cf71dba5f4ef43a3c0112a Mon Sep 17 00:00:00 2001 From: Vaibhaav Tiwari <155460282+Vaibhaav-Tiwari@users.noreply.github.com> Date: Fri, 26 Jun 2026 17:28:07 +0530 Subject: [PATCH] docs: refresh repository readme [skip ci] (#2190) --- README.md | 356 +++++----- ao-dashboard-preview.png | Bin 0 -> 213677 bytes ao-logo.svg | 25 + docs/agent/README.md | 1019 +++++++++++++++++++++++++--- docs/architecture.md | 903 ++++++++++++++++++++++-- docs/backend-code-structure.md | 1168 +++++++++++++++++++++++--------- docs/telemetry.md | 90 +++ screenshots/first.png | Bin 0 -> 804324 bytes screenshots/image.png | Bin 0 -> 147317 bytes screenshots/second.png | Bin 0 -> 502751 bytes screenshots/third.png | Bin 0 -> 187409 bytes 11 files changed, 2901 insertions(+), 660 deletions(-) create mode 100644 ao-dashboard-preview.png create mode 100644 ao-logo.svg create mode 100644 docs/telemetry.md create mode 100644 screenshots/first.png create mode 100644 screenshots/image.png create mode 100644 screenshots/second.png create mode 100644 screenshots/third.png diff --git a/README.md b/README.md index 27398e1a8..2d9f4dd2a 100644 --- a/README.md +++ b/README.md @@ -1,221 +1,223 @@ -# ReverbCode +
+
+
The orchestration layer for parallel AI coding agents
-## What it does + -- **Agent-agnostic.** A 23-adapter platform under - `backend/internal/adapters/agent/` (`claude-code`, `codex`, `cursor`, - `opencode`, `aider`, `amp`, `goose`, `copilot`, `grok`, `qwen`, `kimi`, - `crush`, `cline`, `droid`, `devin`, `auggie`, `continue`, `kiro`, `kilocode`, - and more), registered through a shared registry with common - activity-dispatch / hook utilities. Worker and orchestrator defaults are set - per project. -- **Isolated workspaces.** Worker and orchestrator sessions spawn into their own - `git worktree` (`backend/internal/adapters/workspace/gitworktree/`), launched - inside a `zellij` runtime adapter (`backend/internal/adapters/runtime/`) so - every session has its own attachable terminal. -- **Live PR observation.** The provider-neutral SCM observer - (`backend/internal/observe/scm/`) polls each session's PR with ETag guards and - semantic diffing, tracking CI/check runs and review threads, and feeds those - facts into the lifecycle manager, which sends the owning agent nudges for CI - failures, review feedback, and merge conflicts. GitHub is the implemented - provider today. -- **Durable facts, derived status.** The SQLite store - (`backend/internal/storage/sqlite/`) persists a small set of session facts - plus PR/check/comment rows; display status is computed at read time, never - stored. DB triggers append every user-visible change to `change_log`, and a - CDC poller/broadcaster (`backend/internal/cdc/`) feeds in-process subscribers - and an SSE replay endpoint. -- **Loopback-only daemon.** The HTTP daemon (`backend/internal/httpd`) controls - projects, sessions, orchestrators, and hook callbacks over `127.0.0.1` with no - auth, CORS, or TLS by design. -- **Lifecycle manager + reaper** (`backend/internal/lifecycle/`, - `backend/internal/observe/reaper/`) reduce runtime/activity/PR observations - into the durable session state and reclaim dead sessions. +An Agentic IDE that supervises parallel AI coding agents in isolated workspaces, with complete control and automatic feedback loops from CI failures, review comments, and merge conflicts.
-## How it works +
+
+
+![]() +Visit + |
+
+![]() +Visit + |
+
+![]() +Visit + |
+
+![]() +Visit + |
+
oP>=A& zHi9TMSo9;4yga9YCcWUgxp~bOhqI)rTRNcd9eKE6P|8T!@?rA`C}hWCw6N#A*Va)V z9O5p5aBuKd=(aBwivUY~zWpwhOUkP2RUDtoK)%6dhv>U{@RauQH5ccOgbEjc5LzA9 z#uBpCqevYkt@(?vqNWRn`Wt`r69<0~8!6rm08_?ga_&TMe)E{54*h_BQ9rR~amX*c2T}seb$CVAh<@-I2`lz{lHhIuoOr zR3gRhu}C6*?&Q5mOk%6z%QtGe?RWXA1-n>&SK`aFZ|soPA~7k6`T0U@viA!DQh5Dv z)OTGA2L40e{8rxE*ECqS+Im6{H=-fg<(iIgkKueP(i9O+_65977lytiNGj0L)1w^i z|C>B_03dDM(5cYwCQw @?^Gc*LBAM|N&R&H=GnzlM0Y*u_ 3!1%Az|dW5tqcox{}1uUCyOl#&`4+njqvZfZA68Y6>mKwDB@rD$MWr`T{*01$JqR z;c9E~V{L)KhS%#|x>L*N_Sa{%tM43LW#N+2k7gHGK#|b?c-x}9s;pA|{!eC~bWV;J z3wzt!XO@AQCU%^Lr(a+W2dGz?VLzj7;hw0Ujb$LL6n!tcZsHd7V7V}&)taix9C2Y_ zt%LQC-iGm5Z>~nU6$A4t440&3(yJaj1DJTv#ZNlt$3K1$iRF<=B+)3@tFb1DNA=_x z)Jn9q1P$IdXk!xU+hQ*oM8A}^M^_IK!(Y5i^$}^CuopXXMgoM{U6sj+NoI<(Tz2n~ zw1?T~R>=E2er(6i&Yr3#7(T@9Qp}#?)hdl`tonRA&X3T@%qpA%on@+{1LWpQI8 ++zlB=Gv%o!R`s^7T6N5_K{WPBX&AEFB_@5*a7{Dn!ALNYJi^>qS*(YB^~S# z7P;91rIsOXSoNQk3Y9YbC3d8P_ILq;f YeZzDW3oIyi!pL zy6w@5KIJ1Zq4kZ(#(}ctB}U_cJ2T2W4pOta-TL?RUz!shYhR7-C~4BH4xYCa&{fuC zPTJjpcs*UNP0n0MwkWdw8T{*~X1Z!fwMyuZUssbpeE4 &polMGtm$Vokml?iwJeovGQuk%T!-uKepE<72CmePPQ74yJEhwCLXG!g znqx%NS%89B8Y|_gyCUvW=as|3e{*IURBR?j_xm0NSP{x1a<~T3a%2rprv=lAmQ;JY zQU}<0Q>ZL<;D|Fl9(lzeT4T4IzSXDB!$)kWKR&Q1Wu9=Yz!2Z@u=rI+mU3_^MvYp# zJt~agaStS}3*PP+nhw(po7u0njo4pIqf+dCdV+^bQi$W_g?ENasvqvN6qoc3mskW6 zYC?g|{iRyv2}lL~#)D^kyV#}s#G>JEgupTHitt;`ui2w+eQQ#Ex;{pk1>?{E_k8T1 zY%Q`zIDx=e$wQmy(RnW^WjZX+Fg%;Xap}z~wDMd3{v@-K2m__ES)WhrC$owONdXNy zM&aScsm|2kJ^cj!sT#xGGJBzq5tKV-_ixA;dydeTUp8}F+tvubuLDmLQ;!Okg$`vz zJqLZ1@3xX(X<`p6PvSm edxY4RP(u6w+q5==OKp4M|S{b1{? zQtlS@!hloG{JV>t{d>+zC0|LVY>_aQn@Xm1v1P=IXlH7Eh09kcDHSd{o$wiJwI|nq zu)R~ExhZj@G!>lZ-{v}6;^{k4>7@N8E^dc3Qeq+Xx7syR%Ljztbf-!r6LTyQmx8bu zpB$qcHC!O25bNzf+ Osw;YfTa=&;aTVt{}5Z~8kaG?ma&G&v>l5u zxwZ2?pkHz(NSVJ*@%=WHLp1?R9|wo6?Tjv wQ*=a@N<7 q6+sqW~S4<@KMlW+mqC%cB*JNPjsygi#P_ zYHj4!{sL!t^%yn}u=J^i@i`n9ZvNVp`ON5=rxjJLN`zZEa 9x&O|2_}6=lMFXzQ~lH<2z1RKaVGI zppQLrUf`Y#`D;Nx&eeI5;^5(wU8EbN$n?5fWI(d`-N~z%<*?qtFL(XB6B84OO6#*f zXSIngOaj#to )6uO-qjD|KzQrXR9#GSbOr|3c=IoHQAkbr z1JVc#CGCi||6-ga$@A;fu)@%8>`J3aX}SA9aM*9MQDC}FmF?N+-E-m?HE5wUbxxiw z^j*g+RnNKaJ6riCxnqi24Z-n_7glhx3nYHF-GTUG#j{9O(IF$Xis3VmxBVl`Sr3^i zdlWsv+rLbSO7pFICpjlefJk-cE=-lGFQvi!YqAzYr=d#ur|O@4KBV+0;?# BUHh`vUI}?m)>oaCFw?OlRDL~=kKc*!TnU+NiP{`{^v*qH+qBpgUh?gmc{0%G zbwQ$f(mY!Q{w^V9Yqytn;US*D)R;`eZic6rnwr|+qwD3hF>`J?A>Vf%MHX2!+X|_P zf{T{lQrvb9bhv>MWHZH5tS>`p&?bE+l&yOjLUIUM=`1|NO@*`zc++rZ1$PV{!H7LK zD=MJvwNY+?v>9RTR~_*JDzzT |bDZ GCl!w_n^e6fLt6hv9(M(K?s_C*dIcNc2 zcB^ B<-j`m0|JD`EzTsGA#AtT!?n0#_nG)n?e zHY0HqYXuXkw1eY$xobC6O=<|zBq}J&ZFe7^lQvvxWk?BHtDbzv2DBt1SL6x$(Y-k5 z{zE0dU%5W|o5$~F+v%gxK}$4whc)KBaKbbynre*kjNYDE5=Y;t7{d#4LmfL6f2 p>UK~C&7md6JgMW3yu%`?T)sxE`eC3_y{M&`S+YFCi0!lxzzpdewL5q= z9+*?earNrea;;%wvqEEs25qVPu$~;nzFS+*nj6F`y?gEypSkbAtLPar34^0@yPpt_ zSV@C!Dw?!RH~TLvZXV@O73zB|7G}AYa2y-UEfb^-;}BF+EyY>?z9$ZtQ>Ogi$ec_m zTsRYEbC1B`$vNjT|E&UN->eX@`N?9?-k6`4U%WUvxZ{;6ePa#wNWFp<8tHAAl8}3f zAP(Dq?o8-QeSRna!EP-z0K*cSTlG(>13J%~eD^v57;|jM%au76Dh8gKZdAJ7B;p&y z6p^)8b5_pOOr3;QKkYQ@q q@4DrnH_{*nj9e zeFsuI|KfR#QX*z>(D7!#uY|uSG>H2!63)jvyfora`5 |YaDy$4r +zneBe^?b$l6NUHRuKUU}?g)8Ib06?`@Jrd}@FOSz0(!XoV zA47wia~9IwauV0qee2M6b*u&V^0dz6+;yqN9R2f)uM0ikTwU^DW$7&IZay`-v kBF_`qisDDJ2%v3Y-5jY5RY- z+KbR|bzgILxL>(@?yLs~NKte7)6|cL)AOwlNMq03*7^?Mw7 Q^&6NAA^O@`1lolc(HYyI{j7>{H6>F}-BIe5y6{ zB_@Ik*#C_5$)OU9LFm%?>#iM
Rj`Eb({D%n#j%o%yI@5(d0FacHou+NdwG? z%=dCuvc6Vz_P_*C2v8ckY%X-3;o-sW);;nH0YH&~I#NNqz*h57jy*EuS6+1f >5RKLGVW&I26qQ4o|`kG_*C zE%xGg_{A*cKxJ<`CAJ7KXyb3f5^>~bV9as&$lqhwfC0W?lgO%yTApkLMmye{sO?)* z1TF#zr}=k>NdhqS)=^~oIUm3uXlp vMhy7;RpOAbcwsq6N^7`?A&Bd`w1 z =y1qInm&!C zVe19-^Ov3i^YrR#UcVlk>=#r&mXjyBeLavQpzLrNm=%BTh(0v`6mwRoqGfs>z0UNw zE&U+utk4-*uK(gsav6ZGBu}$qoZ)ST$QrqyHEtaH0F8GM$hQ*Uo})
1*4<~4T3z~FA+Y&nbs#RZzxc{|tz z^hibto&&J{G}zPae!azwc0n>&Rr{T%r7R~UxV+AoCn# 9i2KozuEf^p>WQeG{~8lA?*U(~^HOIOfTHoG&A=?*01nAEYY*_R>B^-) z;Z7+kL94$;c1Y9H7;u*5=oEz1L@U9(fA6f=?$ezL3(&`Ndt(4g*(VF$3ay2X+f~j! zl=-oSL)F=bET(t|0yT0|Px~#qb721iSFdmiXwK1P)TPygnO&FiozJIU2vyCldslnL z=;Sfx= PZ3KN(hejY1hV9fN4sSvk>=9lz#pV*W3O?~$3Wfkgl@AO)ocY{(&8pa}t%sHW zoHCCbXcFTy^W4G5b+%&dejTwYB(ers-i+@3=GU;9lHaZy?(%EKB;PU%IZ&(1x9{D7 zf2i3oTHd&H+ot|Oyd{fVnpUFeKsA`T_#XO`wSF}i%bl(QLGmm6He+#guT~aCuSuh_ zmK&<7TDz+gVyv|pS9~vfU<+MJcY$7%`x|v$Ild8C%0%Ewr->+fD_Zudyoce7?{^Cx z_s{vwG^^P(guN*P%>s;Yf)BPT+3U5#C5w{p`sU_N<8c2%OA1YvvP%pa_3L3fIys3@ zI9o~mczr9_rpoILT^THVQ3wCj8)w{QS(J;H_(JBEX5Fz(lg_~Js`Q8J5gG_1o|nbo zpHxLe1|0Bv{i3+a31GZ1NnFNu88Kj%?`vxClag8DU+s-Mb19P6*=azu@3$y5m=~8R zc=~3}4=5kT^R?6ZvgCW{+13_cqWttYIk&@$@<%Ux%E8^e201XNyWK(&o?J43)NilQ z%xd+oN;u|y8iGw*_i%Kr`(Rim+c259z+qtO0^@@@Fp`=HC->)?UUwg rlcpf5HYz2-lmMf&`(pzF+q)3QKIG$o|Q zZBM;s3J-p?8d_XNy6+UOPF|gmz!;yG8}=MYod_hv_AEE~>mBsvqF&cVmsSADdYO&H z7TmF7hX9R@zgcPWJ?_FREQuAln{Y9!W^Bm`LCOdjDRR(LpVwWO`AR(yu+AX*XAa-m zR~d>*NVvB=jK8MzNjuLZ{fdI`;FE4<_SLkjqS1zRpzwUpcd?T+OR;Pl!W6}fnpu9o z?y-bbUXs_uIVtF&vIG{x69kQ7(Op^J7Nt6HkMw<8wAx7%L<`QLr6O}UuoCMe-RBXC za|$cL+H~3&9&c_>z0_OzfUE?nD1DUXJ+L*`JxNI#Uf-C)D`=MD*C5XRXrGC*QZ--h z4wH141s-BzUjFLfeDZ{EFkBCOBj&p@Jyf2$${ln0A|#092lYpQajWIu58xQxpsAGu z#Va;+aV+_}tugv&B*pm 4 z(SwIUZ#fJJ0;aih>OK%d0H3oAvOD3$SjqG?C*t7EjnQXHb#?%Za_B(po S -dJdlo=aV(|Yk_m*L8ZQH*vTHJ~iZ=n>I;_mM5T8e9N*8(l> z?rs5!yA})X5`wh2I|RMy-simUz4yPL=bVrC$@;)b!kS~wIp)yc7*PWHmTjw<14j_E zeTMBY%DJnJY0QDzaZSg3Z4_@6Ui=~sLF7Oi7~y~uh4jjPJ^cWSnIbQe&Y^OL>iwhY zq4n>~I#xEDV54j*kBKqspv)Pj+`TrgDt#)z${rT{9IJzP75~B-16q5fM&vnCPjaQk z>}H7v&=ezs31(ucuAK$6xZ~_lnUfRSev8Iuc{JGBl<(7he n zK~!bXH1|Ynx_e{qpg%MLUfuPs3oAtVE?sO|xI-Lh#7GrzH~2z@^w3d!@bV#=f@#wf zXGU*5SDtfjt?Ws8!A(^3oz1k-iuH?dEOE|B)=gjEZ&Yszqk5HPJ!oqrYOxn7(&$)^ z8U~H3_p|;l^Gy18`sx89Y=^PypHndx4FTRvx1BOFGD&X4AAFeVeJ+}oJ$`ltq-;L( zS$8z^fh^e{z2>lHT5Xm0R{^Qy+{~kL8x~CZqbr(~pI00cuP?VA&L!Q~GaI2b`zAtS z{mKtMCV;lJ)K0>1EOIAUr;P#Ky!Ap4V_lAbrbjOG;G`)E{RXv%L0KmA=PaVqE#jqs zLGuTkF~`KA!&q)TTV&tz=kZwz*UulrTl^e$ZSow21?UXhvKkgAix8KgH48});jyVx zE4o`U`?-eD=d^xqOTSAk`zyhkx3lwyJ X&g z#8VNaX9tT8W21ixj&4OmF@tL@GYn9#w;!&1Z?#*NxJY*(xp78M(&l(Lp6X vVOz)@*XkJ^r^hp(%^kPDETuEfq^zr@?+jD>sd& z^BR7FVriF5hV+Wvy)X>J10ITnzh-kjabti+<^2FLH$tUNr@tUB;N9a|(xd^josm#M z7I)2+wYZbZM(@W0`RXZ~jlTO^+9%RFu9~V&ZHvz?%-Yj(zo5Y(8O P69-^^W&Ef*ms~)1$5wat4wQFe{@HM}xg8#F1%gck0 zT|2bFjQ)wMaLI7XnvY?#Kb3BmYy2%6__B@Dwjsg0A^`loi~D9-h&bS T)$;B_raZU;ym)|RL9ba&IZD9d)UL02nvu+4fY^-KbMsVX*c|lGJA7lW4;Dh( z8A~GOv}x^zYUqopeE3hoQpk3^5X`NsQwx)B#{YZ(RQcvApgAXdhm|cfgvDw@DrjcQ z#lzte4&*dW#Nfd1A*97=_23BVGCY~#_3AWP2+o2+Eo=fkr&!XU?M#e?k`dA33prux z7xKl!6>1JO?#IW?7Hl~4p{3~}rtfMr^TuV+P9sujH#_XhmZO*oRK9lGFgax+>Y9&g z&e=>BICxrs2&$927vz$e3t`WdnzQCZ5U q@q9~GrD zDU5#EyrOsqnp+tNtk>Bh7oOHcFJVj5cKW0@-l E`Be}{L`U!un zo#Jml9PzYMGTPm0<8m-4?f+(r3;;N9+c0M}0>4zEGZ&hkIgr71*tMeSjqg KJ;A=*1Mynj*^H(@B8KMB7=LNP+DZnhs<0H`SlKj?CjC@t%Kd%~7{anPv; z>e^~eL;IaH^{fRev+LEsx=Lc8+NW7E(cgsj@-?_ngPSx%BpxtVYKL+7G%hB{K!&+% z{Y^}nMJ1RhWJ_#oiOqnVup$db&2uBS@@A$pui;$^#4cATC3%;jf`;>#5$2Jxpc8 z&~yePq0!Pf)Zx5^HjIe#IcZhCDZ-Gy|B0*I;Y68#F8}`n=@Dh<_*2%32Q_~JMetd{z zDL6O;&X~M8D^GKTp|Q;^UQ1)gyk2hmwEJ0%L8Oo~?yt5yjf{p3J>#%hi4QqkZgrWb z4SLta)s)j=?M-slXt)5iMYv@vjO$OXKK+Ld&f=phq&-BLI~}j_64u^x9)~08Ds*T3 zK)dCGvf))AZq?X`+knj-SZvp&sX{xG#WT@A TkXEJZrBRNv ^yr36pIR(jpxKF=j!u`syT&QGn=7@N zTe )lMH0jr+)ZY#Kmnd`Nv1(Rxc`&vnVkMg6}XNyd5TjH1Ty2L;XCRZ8X2S!Wo zN0*)xUZVy`BtY@agL+#$yz@%$_bzzLgHsEon$)NNKdAWczk)7xp=>hGpG)210fnr* z6?rQW-c1H|W52xYOr%pm>y|qMCgb@uE}@V@@F5En{$h+_$H0hgRL~#xd;@ain>(=a z+KQKc9D1tgm+6M0)=sXgbccd*&_bkQ9#y-D_~z_$x$HAsp&h>hR?8XDiLbu29Ud zhcnKbmXt!XP?xSsX6+RGr^|K(^vkTHTzK|T6GPVc-bVFtb8A?cL!2~#7)%%2{yJvu zhp71=_eTe^iAHFh*s^=0bfq;w?V=&`l_yO?qtALpzue@UX~6EjQx&wKfy=41(kZCo zxvFh(N1^fdhZ5MV|20UZo2%-Oh41UpPD}Jm?U#B5$B~^Orpn9US4}{^twux8T4$G+ zCVaDba~Amevxk8N$l2LY>$*)oWK8b mpJ^gp(C+U9xDg{+RO9JW>Oa-A<+%4Q6>`2s0 zM}7u|CA9aAGc?|NpKZ6a gZ N_Vp2idS4(p=7ULAJ7xA zAJT}5D}yG(?3v2@1wE$UCG^jP1vEWrGaK)mwA+VI@Ci77#8``vncdkB_ckifY~k9n zZbxft ?moA#SP%Jtw{nTvq5vOxpX)%hhD$^^riJI8% z5TYrabk3DT+bwrf>{f=lAa1RqDG#}0uh6KtZT42m<*^7kpnY@*;8q%aE+=vn0+x^4 zH3JZ^^VdT&8V?WR7KXyun<*5as5`mv`?Z7I)8%_z)_@oe$7MbEkvG~*`Zc0v+_7gf zl9zS-iakwlxpQkZUz!e=bi+fKDQcM_C7%Qwr|GYaucgs$1bLR-3r?dK*S(*5zmNYW z(WRB!?N~c|Im$*dF&JpPjcquXPp}&WC-|I#2V15x6%}RRf<#tQ;|TlYjl@uknp5LC z@YDjoCQK=^z6oKdUK%uXsM})Jt@A$J=C`!iJpm^-=#4N`J`F8QWDDJT>`shjvk&NS zPb*(8FEuvKcaUAX+3?$XtrwBU-S?C=Idg7i%rfZ69G)h3-?)CZMBqj97RYsR__`9} zmuB#Llz&REllRk>PGfRYO(N_OWRMd%5aypQ5fHKo+FsLnup>51kde~HT)FytefrUg zH7JATp+wJ?D$hb2`0PdcR@WehNZv7k2qQbI;QSwso2{W{oMNBfd8BcHG&$7F*7*?} zRy)NlKp8w~&y)`>qMpK477%@TzU{V#ract ) zr$fO%2jpuu@2-im69y;jnT6L*_$eu~KAiF9qY<*Ge~GA7&{ECi^Aby!jv|&vOG`$s zk{EICez@^1sum1DO`mKUKeQgqf^fLp2)KQ)KloATx>aigKH2Z)b+Lt5Ge?zXBWI-= z`QU;t_mQmUD_Ih1APG=i?t)1s_p%hBhOns1cy=_jD{2hvvRZE571K%v)@O0KFsJr= z(HqyTsD41X6F=U%5OkcLZ}<$sz{7r1ruC!R$I&eln85;xV@nuOc!fdUXD&30>Krpk zmCIvIZ0?OLw(T|iIeytUr!EW0K+Qk`BxEoNcUZ5bW6T^=*Tcj7E{Mj=K-qTPZ}gC8 zxlZxCx3k^vdy}N_+8PP2%mi5~TcSVPd}W^QLFBcq_NC89<7`<*(t`sV>z6e{8*bR| zH2?!e@{C!mb7mN_@+~{3Wjz6}Ijamlvy=>hgvo9GhhGC09tx~p=i6jw+MU)jUoqj{ z!u-=U U+;oYvdeJle5&t)_y&0PBTZ!rAEF;UNd$N z|CD|X#|iE~4nTw5L)0U 6ZQXd!C(;D-ohdWwr_}wru@Tt{?k8* z k^*{0jTmhC%o2KU_h~GB9u(%y%kr)c@(L|9+Mg7L+QGIELweO%&Q|X!R$W z5Z-5$|90jp;!vt?RK(x>w?yp)LnnR`jD@HR_isA?)68$Mp;Z09w;gYXbG;50h2yK+ zA?^&og9 4J+1I*rl&8I8ZljX6Hof1W5?0>#8f|Q`#OyH^lkE`)Hivtz z-W7Fd$jBz97jhAi$|moenGMHyl>Ht)%$ya)CrvdAceWpJR@8V5SW2$;4YbzpYiQ|N zw5H(U>n%Eev_3#5z?;mks6Yh*fhzuzQ`=5FN!@6clPa=bezYl(e@y7p!FGSNieOt@ zn4>lHCt&Fgy1zM8E}cPfe z#Q!F)bH?&VvAc6SYemzK&pK43!iuK~qx(aCDUR!-v7~F3$eC zLkIWEI+w!_Y?a<-_dn^H1&m;Qd7 p{)cHk)@C6vziUL{C^rD)FDDn;B 8Uiy2a1nA;HA|CIs@yW*Z)3KaKtC0h?$*vk$SXjbgmZI_g3#zAh5mt+<{ek_( z^17~0rw+NF_}#a#qceHFmndXPmMZ0JT>6n{w9IxS*C7X5jvGsWxB&IPGRAjAglcYA z_gzOP48ESD8mZ<~Mo0U|->1)(TD?ZgA5zQ`+nvlQN%&Qe($QqY!jQ?p08Hxc3pU^j z*ufj(Plkgh1%!nnVeiQyd}jOUQ@QRmno#wKzgbh-nMw2JzhPv)=s$}Ma^|j+bk#ff zlEG?C9KG9J7=By1VX520&tZ*#K_V3Fp!bD)yH15S-!VXLZ!uTS)6MDNoJxz$WrwAN zIL1;(jV-rPfBi@f6mK?|P<6&xQB)QO{T&SYLS#GPXDg&}{f0D$j$ |GVmug!a%tgY#em+HO)bvF*m!)T(N>w!Q4N0h*U&9QO~`Yrq7?V~kVc%*5l z*3mFDltlD8*?rwE`ODPG&Tiw8;sY;@+g8~R4MTNFLftf9&zB($W8>3J5~=^zSU6(| z3OqX--iaBzcBKD?fgqA6jlDO c3dV4Q@Cc*dy+wZ^+Q`sZdN1oup?ZSO2f``9E(3Lq$xKTX9yA z{ Bhr@=sy?Gt@fb`#4MtdLsm{K2OUvtC#7t??;#1sex;o2RhCE(BcTQLMp znIMHC@Y3?o29gHB;=KuM<*+wLe)%(%DI5f1Vv@41{CJx~;_{N}oC@1ReoCU;-{_k+ zl(e*Qphywat(!ia9#M#LgOnc%8L0~SnNS{iOW(Cfr$)~s&9S7RA$&6thQ{p3acDn| z1ZH>xeh^;IIsq&!>>O0JxK7yDqn>O~Z5L68UIam3o4L2*YsFH}gH~1>r%~RJO56R$ zcFLQWIFsitCzZD^h)$WC8{T=nDRogwy+?3x b%2K&PK#{M=V=I1l z-)HD0`j+m)Zf?e3K;RMoER11>h+VFbhML-pwHNx9lG|q;*3j_bz^IVRpnRWitZ(~z zeFDAnDi`5bZ%gD(oKm&tRYTrX2PWK5GBSSa6C<->&6SS)CVj VaO ;@dw+TsmMAyuc;FChCjWCPifJOOo&xbPjKZDofOvs1B|F*>Unh x*k!yb;H`1VL|6*18zVI^S&q{OZOZ7Rwu9LihV z(gYED$ifJ4LST^Z5=AVL1I<&+?LH%iR_H?B)cuSz*QThGcz&xVA~>%ns5!2GhL`#f zuv6SXIIX&B^z{rAX93lC7B!>1S&4l$n<21Q8dn4|rCxvTPYYK@(WdaEVyLcMY)&?7 zG>po;d_jcz*MZM_z>Q UL g(P~V%@zY(f>Yj|*o zkOM`eaat1KOdw|p-!Q4e`3jX!hGm%b+W1=zlT$Zl1z`Vd(!NS_k%|ysq3@haIDhxm z1(J19=eKCge3S4jj7jy_R&d;eZ(w=>7Q1Jjz=ofQ-xT0*$eTQs?n2!MXRy!Mnmg}r zW$8^0i({m%c^>#|UX76APATwVhKqduQfD*f&*yo~xN#rLfe9C*4(z_0$gs66NgGJe zw`WldWMQ2sj36YGArL8Mc*9Z49$3<`pCWr@6y73!D*gJWc$x-l5Qe%7?)N%3B*FjU z!g44VlFZ3%jJ9@9O{wHiZ8_n>WF|X&FiN{d)j69&P$5?#Kf;w#A#aoRiaX9Tr#{;* ztF {_E7wqRh=Ls2JKmtVG7us-R+E9q)g0 z3iw+^D8bDq&ugf=dEtiZg`mJX*?!%CMvbPZkqw|XZyg(FxutSP=cyft)Bkph_nhFo zsFUZW1_3LdC8Z1)Yj)};eOP%pFT+h15PJHbWZs>@V3l)6iFxgDZHvahGBY|nOvBC? zr2%rsQH9zaB7*PgK_u*}oUr}<>PQr4IB+@JeQByfP{yeA)zH#v@X}YNYsUGZs+Q*^ z2*=Gg)eE}~a|(M9WTc9vftT9YI?n1xYV3*}=$DTm44p!@(uN#zAXR?|U4k}@_}@O` z6*=5?2V6^*He9o$q>~R0P8eW$r4QZzkGqoBj$2k%Q5wP3MELIAJ3PFvr;#VmNAZ8F zAhaN;&sYKNnj(+gc%iKY1KLf^@cJ~Ri#g2E3rnhkc}9Nq(_2If1`4u?QR8W-DjcRX zg2v7qq~8WNTdE7nSu36)y`qKx^Xe=>FKg?LX410yrg+D&{j=JnX?Dtd*a2S1op>YU zBJje5W@=zm+^QCE(!2{AbyHD^<194Rx{C L{_`@)AtV+gOtHI z(BKj6ZRC-lI>8{#p>^g7X >*f(4Y8cSQ2gS%!+tQffHEJYPKRv#8OP`xNIr3yQvDNrfccacUPjlDkQDZc%~b zXrhyhz|GC_5Ue|7*hy#8u|FapTU$sD=&6|+dmM@kBPQPIYn)bqPWHF(8^S58t}eO1 z=gU1A#p!FGmJHL+9pAY`=F{r
ZFWF;}(8ujwb!n&)5`pa1orcdr8r|5= zOWp8ENq^qH!zKK;D4__FB7k|g@x$qZGYNMQsJQ*oM+Vg!Pz#8Ii$kR|)=bU5I26Cf zp8C}vJ0x2yuTUFiNHSDS1{*E#W3hsK3si OOg|1SmSBOv-1*mhV1l#yC`5Az)uj8E#AhgBWRiaflMY3^ zlnQ~3^Eih;qP`$sr4hEBRsI^|ybfCT(aqIVJq8ijZ_XI8LcxvrZ~3}K`mp{# o$%de{=o*C`iH!~ zSL%uxj*VGg-*EOFcQk$vSulQlFjVtqib&VMoKTSDzdF 4s z)w9}} #X>Grjvn4F}Gc`FMf6Qw_&_t33r3v?H@xt{V#b%3-|cN z^r1_oP|BW@Jr*Wj&DjK{A}l8>N?`mNHX3hf;cj!C{>!nq&<2vf5*)3t0Da7D{>Z~y zDmSuXKDLt>Ap0-GKPu$~*JKlr6E_=tGGK_YQ{S#p2D|kZ$ uh2&;|`+eW>$zF^+E!(sq9bMHe@d)HmD3Vu$8TYOeO>UY5*$ zuLkY6KA0O6;UTj--92ypj!nR6@XLZKtGwj?p{*D{LbX|{eI5bDSRNimIg?1fJwwl3 z1->n*NF5X>0!6+e|BB@Wb|cI1AF9Dle5A4r&+UHI(RSIANN(%w_jb4$K0sz~F!CB^ ze~Xr1R#FP^xhjH5BTnm=Ba>f?Pk_({yij$jerLeF-_7}x6lC9gdk9c_Hy+3y_!RaU z2l{;1_dzj2@H}h^QrpF_DXltP`_5X*Fv^u%#`t1mK>~?tQje00C(PMQOBC((4s_`$ z mr^nGfJjgeGPrz^YXCnc_ z`Jtwd2YIq)SN8rJQc^}qlz&-_sjtf_FOMH6c^EbPkUV2hiR^N21{s603KeYntf&HL z%N$XjQB=&-F2KD%c!o;n7Q=kCWOy7_=Vb_t)9wVWwProM&(JN$kZVxhkmvB-1;%2Z zF%k|&T}(d!rS0)2V7Ru)`Jk2=%X=qk=#5Ts03*Di6sM(Dr_0S-hq@W zgfk`E?IBK`N#@7y9DUbwv!<}w#n+KB>SI!zsY0t5WM^U!t0%vKhv3@*?6aG$JO5Ws zUn>rajZ*o#ISpsD>d#u&u#(I>s-S_kg=NO`Z|QE<+y?_=Qqu! (13#Y9>NU1Yzd zfDt-aW&N(qe)d`G3Mipooa7LxT-3#AV}sZEBggG}pm&kYe}IA% B=+hU-wWYNwT`KhpL-}$3-y&iQ-Dv*`sN16iHn%9XSl!Mtw*Dn4o2ol_U95(& z)sOB;sQfhKj(L(6x!im6i}}gvyyoRSN2SGIY?!%==uazb9}sZ X8Z zaQ?eLYqF`uQYP1XD*VSEr6=khibDQl6!pX+@cAM-QLJ0;*}_&|WnV|h3l+q-kNd`; z9@Y`30j_fmcr@W}i;CF+FT_xvD4O}gcx@%|33!vE^0!1*M2R95P7aIB5XoHgYAr9M zuyc;^&CI7*54-8(fVaUOT;>{XL=G_LthHgelU~99t-XR`jaKCzk_xv-=hazB7SAP~ zq<+~Crh?W+K@*102&AHz#O$Vg)R?3|T-)ICx2La*$wAWF=H~vLt#D8+S_N~%;4bl3 zz{H 95GH$$^UyQBx?A zF$u`~zIZ78PG4*=dkbF7waG3C5u38u6;q;Im5! LdHvUyl~d74h{ICLa2&`o-^8 zc}HE;M7E%$rBdnr)8G%drBfN4cYhQ{3$n~ms!wkPJY&fjgT%Ym>YjZN<-#RS@A NoJ(CEpFvz6TEywcJX<}#F8ej4|vg|Utt>`4BBq6-i>jmtIe17xu zyK&@kYJJ8KBh(H1kgds0r`i*!nqk4)KrRqjfS0s<5c#3a@MfvTH)|NyqH4dqm8Q zcX83Thr$yD_K(}2V}RM$M``u^SgfHFCr!fLCBAP>V+Ds65{@pbhPAf7ZJhey<++Xr z?r&KslAYT3MuS3UUtndeirLWi`8TZB`QgTX%1nT}leGTVt~&ct0)$H~{$JB{Tgk8T zV|->m5tiwNix?p?g6$T(nu@CsZ0+K3{Bfk}N^Z8_-Jc&*?M>)D?cI_vPpu1$X<5rP z`1rF%Qi_vZU8l}kKTV5m8zUf61O$A@o~$Xt58$Ey&hQ}W7rbBU5tFC-)KAC9_{~|) z#>&$BMHLD=P812-yDmqDgDh_f!>fs9sP046$!fyd)9HH7{@n{eMMctQ zGNo=k(pR{V{^i$X>Tc;% 8934K5bX`5?4yayrHq%(rhGcyIs6Vh~pmwfqK?o1`p z=d=&w239`nPou`dotSsq5yl7hU<)Szi#_7YJ~XU_m2y(2ibDV1%^Gd%aoyYK#`b{2 znu(N6-uUrHzA7>9e3%S!YTN0~^ObQfxtwHiqwA2Fba_z}7OH#2u0K!8AUam5Bo--$ z)>Y<^)YLrtZ^rsoo@7 BuX=>y%I95GcgpxfHbwGs)|QJqOe zFsnpbf~dVN(fh7fL;v^Dl{@&zcsh&v!-tu|^?PzM;S{k+;RkMp<5NKhdqhM`$@Sq{ zVKhZmL_9SOm!Ao{CTEPw6Zb z9t~p2c|2(@tEfmIf7 34c5-F1sY?9behp`mt d5Bl* z)m%+L$ +P&>=#wF;_`{hW`! c!<9T`V}?XYJ`6`Vz(zR(E-Oh_v**lJ5Yq^YGMr#mz;9mL(F?xvfZY|I_NhkEVf zERTBZZ(6vmeBua<@Zz{`@&fve$G%7+TDpK&hYb0%EdnlV7*g5}^ypb=3+pLL)qwo% zyz5!YF*H1ENe(ZN5Ij<11xLS!T#a5!D|-LOa?b~4ioCt9k5@Oh#(6VGlr`u2D7-8& z0Fd;95x7L*^?H&1?$j^@mzGi};=uNxjH5XXv!gYnE;idEQX8)9D*JxkxHU9v{EcM0 z(W;C!MTyQiQNUur1NnilH#Xqqm>wwPZPcpVGV!#QTzt8kTqC5|m^=^M8U&5H#6Mn< zaDKB`ZTxm0P1>{lHV&As{tO}ItJ^UH3InveBD>pj>I7}|`*w&TlAoSUUd84Zkr$Xf zs5m$fkO@~0sj@L=l|akpRei;Tfx|q9x3|4FE0E*Ya3 YAET4i2w-ob>zL!;I@MrkfjD3mM^0SN931$()EfQl*r&tP#JIK5P!aTb(Zn z%|S7(&hoZawl+9|^~s1WHpxF+Tg*Fu(8fqVFTD*m=B1W!Eo{nWga)&$#S52>&?GHC zNHT2J+_l;$pab{|koqmD2g;JoD6*MNyZPL4(z@;-=Xki}68g#n>i)VIOmFbzJtj|- z6T>BD$N~gDCH!LL+ni;*0{21i8=bw4y|3=`J1WxmCY4M9=QKpgu3P>ucl* fYpLf45Bavn*I(d@}4GOCOAOg&Z$H E>YMqq?+GTujpjd-^4`Wd7haapO8gkx5ovrUum9jRO%3GO|MTyfX z-b=ger{BM>L7x~dqD)uV0>(xJ2HZ;^%?9|{us+>6?%G4 wpMC)k=rXqz&lw+SA ziH~_ys#*r55NBTeEIA~au={&IKN)@> z%mk6U5v+A&HRNZ>QF6(Fe&un!fi@=RQH^c4IH&1LMjgXY$H>R4d1cJ}peM0?%gL<9 zoZQxcX+_WJW1z$7s7rW&wiiOp!XZi$;Y&)YE5TicGa(L+qS>HwY2PDhMR|48QS`(1 z-VNU`IpcNTL%9qA`&ZZdxYCl6p-Ik8!T_&bVgJd&8S};IE^xaBv3<0_(-sO4*d_xF z%gGJj?@tOT1O(jQy51)dG^E`{37Zjgb{U}^sH ;Uc)+Bx5QdF za^n=f6>N8JY0c&@ymY$w`7yb PP&@AHQjI;Wj=Kpdy~5wyEzwuOCdx zkrF~TUOP$T;Nv3CxA&y4iGfcSCKVN1&mJ^ouQ&;)*3sDLe@X5-&<7BlVLjl&vIJnA z5r#Hxox(MmVPnaSe4Ul$o+uGbOrR}Ley@p_tZo4$lGCjZhdUr$J>5Qg9bXS(c=Aa` ze0EUPQoQI#Bi4b*yw6vNLdk>u9X7L9`9W1fj05nn-n=xi1p?>(n3V0_%WAiI $Pl9vvtFwDnB?(cks$VN_TX2%i$+?yd_2kz4wEBnY7Qk*_B5fp`OKrBZfRh} zJ}cT+NgaWw>d=N`$5Vy}RkRPP3NJ#gpJw0DPb7RdJu$ePFeoUbIMTfN2>;u9FX=Oo z&p!us;?VbV?(l}d;p0TRBVDv1U$PuC{&ae*lFECuAS5MHrA7bWm@5~Hw|htA))cG1 zxh-615*;!M5qj8?tXi%p1XWN12Bfevu9DINn8~+&CgWtQ`6vn&=NH-`m)ouAZ-l>A z`(3$nii({4;3!Qico LKD?!0U&L~Vf3FW zClZSb3+K56XKrq+Y}lU2)Hz<}C#cU7tqzsF6&*8M8aYIp*q(1f%utD) z@qJv5pA(}Z34vs;iRhWF&v;L3S4~3}>izW!y5;@Akq0SS^uyF_rkB>+@I^RerC?m_ z%|R^f59K}&i`DWCJ0`IDqk%O1nbsx;qhcNW5NDMUAC0t-{+K+LPN#&YNRj^XxzLH1 z;P`2|I|i}+@RxMC)Cf C#dpZ0dlVlNEH2$ZjOzv-pdz7t>_G@Yf|3He!od z)wf{f$;mlUz+ObM2B%u7*R&*0+`bnj(EwMy-Gm$UZl+{A zgEdzWRC6E%?S$){5|*Bg)rPvy8YivxygCvuMhx(jC%`*g5StOk<6LBVO1O{Xo^&i& zII8Qib<=f-J4Vgkkjjv=K30$J@${Bu+R=Ep_AvtuH`h?PTSd0Ad1o3({j`U>cw3md zK3UAN&aPu$_>`H-T$cAs_+t(YrQk4b*xfUQCuK5Q-SyF(DZKbTk&&eD!%Wu|@PYTh zNb!-W7?jY7f&}(~KvNU(9%c2w-WigU&!R@}lT!$0a*jzJbFkEf4XmF=V+G{;6Qy)U zpnOw7J!%a_R|r0Zmoh$#cE;hin3_V#1?Lv+K0mu=7V^7ugt|MdSM-fQQss5h1l(7D zet`ZWyzrz16vHLHXy8MY+srjRE<09CP0bi3xNotZmETqou~0?OE1{kYgfmGm6ZpL3 zH2URg>HI+NBw%arW6IO;bm9Cp3P|qrD9#@-2F?kLavU?PO#?-}29DaVEOt_I4|_S? zkZL$Ty3KZ^3(BT;#Xoe;3<8@&ea(h-l8;#NhJSn1&0lI7x5WPnzpk%i7Bj(F8pJwO z)_ S Y0>YHnL3cX*^WMYl@ZRmz>EZIDy@=6{UYl}(!~imeVc|zqGOIC zXELYjnJ|TH_|Iei_s;?Za-+FrTcNl~Fgjnyht}3hFGp`Kz?_~3P? IfBlN{ z>UZQ(X_oY=(4HgZ)lxv(WVg})IkjLr zkjFJljhnpT!mL&IwlFtxlkDf@wi3uCUYeAcOiDWdVliPvW&e0hlH|fREAPwahck8> zV4s <^cg?+MXKnmwi;JICy^MB9?9=p?Bmz-87BH8Ix@MOiIu h(h`>jcJxuyCWdh?$)f**~*yY7nYqts^pQPkH ztxu~v;0Ql)LK&$R)RRm9GSvK#HAga!!|pyM4O{P!yF?baO29^2PV~W;rx1h42TZV=y)gG? zjjSO;pNHYBGS-&U8(uw;6|()7L;RKkTl2~AA3o37cH~PAMMD(C6FIK_*=w0w?bJRD zMwW8UBn6B q`fotEcUDPmV z3Fqt+aVz_z`7yj~AShj6x@qz9+?~723AQO;OO}qe0Z$>U*Zs+J=G!%fcecv #uDXKJo<%dx@kQm-vI!Ofl3uEh5Y_GU 2dkNvId z>nQl_zm5v;ZWa=9(FNT#@Dof8dv&0Z*E}aD_tr@^THcSRE9%+28FhattjQ^w0X-aO zRs3%1Z^;FvDiLC4m(Z?#(reOo*oV-OlZM!33dU=jqdCe73wgm{WU)qR3-QO6nZ_ +V?|uy{K#7o@ zeQ&w@`A3MFXv5nn7v$llNv3j@92_D09nu3~6KqW_Ew%gag}&~nlb*JsvId3$3|5^5 z3itdoSPrtOYso|~s+FxRmme%o<;bXZVMd!K*OFRBz1rB?6Jis80r*=d$Fm)l>Gbb6 zqU+$6sGee#k`wGs1sp%4n_r+VjffZQB@3qRNoXO0S?PjOl%on=^lhy!HfZnf?7s8y zt9f4(>cTJ{DCATfILF?;$!*jb&ECR!>f;gIjWCo=o8SA1e7_Uj59!ztY4iUStQYjy zhdEMzLr9x|tR? 8YFW4pK={dp@f!uv~iAT+9-r`{X?CrN{OmrpxEh zX~nrt0%ME;DH-EfIQ^35pr;iz`FSos-W6Qrc?iiGDKFx_89}wsZzF#c@akK2hP;wa zDy)9=-)obwLD2X6HFRtE=|-{~7WZZ;!vO$eQFfvH;RV?^J)foRi2S2<(b`RGtE;)Z zRk>901V)^F&hlH3bftYR#2mj~q2YWi{AaRPdDwH~&1*rYLzw#`0Q^40gSnhz0KofF z^RnU>I!|FdQadr4+!2|O+;L$!=T6Y&|Fl?Ibr;oX`B<0SSY<<=ODY>aOK XyA1aI dU1P7JGV>%pT z&VH~wik{nN1QhSuS!{fPeLVElmTsMCIn!y%%^2nn5GuJ^3o`=MS@xMZOHg*yVWa-~ z6?*=vJmFJ{GSt?PHEi;`DftP`)fa^pK#_1b^hvbYZ-ZTfo8=naVJ=coN;B<1jJsBY zm+PKg%nVG$ogLW?rESMI?Xu5N39iqOBjf1!7*Zh_Xl%6@3JRVXh$P~$2D)y$J9XPF zFSormJ!kR1MB }LX!*&;#FU&M9rbIz%d9-_ZEhGk*@Pv6qgk)ZE5*%*LFFtt z2!tg0DSdYT^VekuoW4JCWqT9^CkmgF4#|#d7i9b8TCHQFMO|()EiLEBgE297J`Y}v z?yT%0rIb^Y>G|7WU*lm^lLaJ2r3-J85E`0GttpC2-fn?61AS{!&s{2JymfFoGrO)l zT<(chIv(`P6<#+qg!S4&ZK2u&5s;|^LwdjV?%@{N`y-dw3=_G4+mQg(O+;Noz;F2+ z_L#{_rs9M#xHiu%MvP5?*fimZR#ctfmYL*-hRYGfNsV=pI{W&}rxA3%W?@6X*zr)G z=5jUUXV?=tg#Enjuq1lcdU+O0CHOND5+l!OqU=D3njQ;JsEOTdw1@c(=&6<=a9vC0C6 dW9DS=XnpK_zo^c1S4F96u4@3FRHtgBaRSSijR`@@lf0vPt=&tD}5^Fa&tt=@zx zJija!(-hUEx>l;zqm_i*0CAI%N}o&0GSRfYOz*$sf3S0>Canvv?fpUoH`b>%GPTc` zAb|H`2w$0oN9!fxaaCu}!`nFcai|oEe&>ob2ei`PE=$7f1ef__TgwNkx-WXfq#24l zZI5F(^G=wbs#xb0uGqEZ1UZLq8{bC? z{pR_H27hC-=P}H7dUXv?qoHY*($jPN;q>C!>`3xdVo5xfp~@z??|W2(yx9&@bFQYG zgFG2pbs>t419QuRvhMrcC2Z9r!C<}tlKG>^oG8<|45AM#fd)j^iSyqMmzr#@o8n;) z+ALhCr9n1Vz*>zqibMd^9G-;4L0s*(0^UWq2uvLcBdCH4mzFL1BP^?t(&?J@4mWVO z;5vhhy&ULsaba=JW4l`zVIy7i*{`)sggdl6(K7-8Wx$c3*8Sv ?|b)s*WJ+wmRkI(zX6KxY9f@o#k4fwW~7cwMm#j-5Y^c! zmbu;J%bMI!mebT+T-eJz?JK9^~zN#%K=ok1qCFS yyyx=$M?O^FSCBPb$y#QI)omVeTIXJAxL(PS?6C z%n{4LwjbY^J#?uiI;WL2^_s}@|LJ1hY)(!X8!Dr6bu$ ;Xe{vdTCzMUHTyRuoa`BthsZqmveHf+i c)O$lkSGkv!f#-xQac z&?f-YUjlWz@`TRQl1>782qiP2X?^X=keM!1bElW=zH(muSVY(Cdaq*%kj {9nDw8GgG;8{65lp1L{D>~chTH2a07TKt!^y qf=3+GERqY? zP!kz1gV~$wg_42;qD(v)-Zncpf?dVF llc}Ch$ppZxy`0^$$7P$ z)QIcBlQL`q#8~17X-i|uZH$T2lPRRs4ok%>M2J5rteJjNJx_iDnmla2^5=9;x(vG9 zEGAOF5gCY&L|BuieB6TnGz81c!ZHg!)es@;m)z=FS6!R>1@zshxRX~zSH3SOER1S> z11a%_Y)O!7FiZjEk;b i4H_aTd_Z@_f-`{>@3lb0*Yw&j? zwlabW1#D%LHd{Z_z9mTLrEw7bx!(R{yc~$PN_L@p>4;DXH`1I`G!Dk^--nWLDcZFt zmboa_Rym|u795!a==FyyQ{l7Q4oZkyLsD-KEaCJ8e&{P;m8o4h7NB^saB8-V;7l>a zKetL=nrG8Q%88By92^PyJp~6`MZ$M~=-Y(|?g!!B6(UxLwmFB#!F4>0*kPn)>( ><@f;!WjdW0cQS5q-9Y9^EZ9D6L| zjP7C gh9W?r;ywb>-Ozkew %n#BD0A=ayUVH4qnz#!2g=cT=`lYN-XDUjnF+FUpS@p`o-^MJiYJi;-a;;M z;68ohN`_<%+`~Tj0&MIxBBxf-XH)1`bqQy-f+=hblvsvbBGu$m$1RmJ(s{S&pY^f- zAn%8XavnRUN_ZhwoP6Lvn6j~{1*Rc+QAED2 f28@vy6m@jhk~>y z(}>ICfpN2es@AU7)SIo87etzvofsZA(sX{ij?W&uLNZpvxyWnp_BKlpWKlDV7ScK* zWfCXsmg(j63;mw2lV!1JqgjIiy;k-F9T#`^cm*FK8R&2e@ztMJ5tc?vGKD115v3 z49DfJE|TuE@OUN^H>-xpob5#kt1dham*VfP){Tt&!Dh~COo0Z3Z06+aF&&vD`8zlB zDuE-VZbc()M={*D j zt5d91?5DgO3gTu?JJZ#RHm%&%c2H{>R%kC{Ymugh 9R6+^X~`xVTr=*JV3t!j4@GY_vXc zGmqNJgrVg>TH$5+mMx}OEoSa1j%Hh`bz9^zJ^TMcl)}T5f?SS&DTtz&RcbDOyp+T- z{EZ~7)C5V-ZoRa=-k@iZbr=qVuQgtzGcCyWXlW?y`qaULQ^ZzYDbC)wZWaOw3*Mge zUECyU?NqOdNmMlPKiWFXwE0g-AFp{Szll{|y9ic#s^1~moq+x@aO$*P(t5J~Xd|Jy zY>=6dB7X74!^Po3pTljh7UNl5sAwQEx)dpc$?DG%VKXtHE>@%kLx32PxlAuiY_p*q z5)_mj@8p$Y*|E Q=}g08(8WvbhOg8eD01 ?l)Y+c^h~NRGRlGJW*CTRkh0Rm_GSFZ51&6@o)R5bPLlB8oY~dZu22 zR1Wkuf*NQZRGYUgxxV1M7Pz_GyEcS&cDrws5h>;5*8bh?e0sMX KmNgcER4gaO@-M-w)Gt znl58DJaHDsXXH~1!*NE*r~|f26->#Ov2{G|0F39yEtrkZ(LZrok_H3@%8T^7xNZ`8 z6@b;-SPGr7y>P}eb8s>qOFqmk2bin5-L>6K_72HYg&6%F0(GUby7Ogv97tRrC=)6f zr9i57#YQSxWXIk?Fhq&s<1bJ%YMEW#W@)%2>Z33oZVD(p!4mPKWi&uiQ0$dn#>1>k zSuPHpipWTUmW;>NR$*n9H_uXg00iB$WCi%Ll4yKXdw5+Y`jYAJ+w=<{>#5J`rFVaF zXG+HNoPZ|d*BbWGK*v2D_sfZvb4m8q+Ex5Sr0038)>O)DiSg=^QyJUN7G(#R;B>tu zRjKW{I+YuhSep_Z6HjKusxg2Q S%19vk|gY}Ml^_xmn-#+6d?<#wO z1$k3RpBL$9**=|1#$t-pHlpwp-1C*f0DS_D6Yd17fZpuf^0vHBN`41fo4=AIP}J|i ze`=%^S*e6i)hjot-II j=~ z-R`;6)qy{~lpWN^XUmN=Da9qnTd2;{h&I)2m>e%<))L6QT)A{|vB?7l-n3ScB<_@I z%{u}(EL5HzIa-1@l>4=3GMTUy8#qdolfRy-LZ3(~XQMkA@pwJzBG9E^OMH#ySLlm% z4Qm@}aP9!k3Dv>Zj#J8d>b&I!l=wP)d$=pc^)S}%`00Swzn-Zzw!@}zC?d>ufafl4 zZT%A}93P{6{CR9I9iQ-}Ltd$Qo<67m$jg-$kwLG#EEc&_<4wur*FB}WRNt|1X>_?? z#F@xl$*WSeG0xji7~y#Xc6m4x{Bga4HZV!QR^MEl?}IHJp0`j)>>3OBB;7*14|{BF zWjUB5vzjLMH>+r;YtudkkgCN@mJrE`ls({?Y6zOXJAQWOzJh1E&q{0Th)nOwNpPa% za5P3Ea8UA-+ZX5II&K^B(4v4usXOlLIzNV(xlDv&a{=kxr}I}{r*C$4b|&V~SSREN zD~wAxJg &E>6DueR<*SIu#I z$ P x-|?s;lwNMBNH<%9*le$%2(~-+MjGsd+cPf#llDQEsZh={ z3pUKUJI1PaYn-%5Q~Sm0ZrjL^Ofu63s9*JK$=%%my%qi!>utmtUK`@E xeJ#C`s%cIT1VQi$lfq`(#2KPCLfyU?Zwk-8P zw;x{fFi9xWW#h`yX6U=n-;+aFE=(3y*3=l0u-v9AoM=DgF7CT|URfKR_fI!69XS9m zkXfzK{5uYNZK5lxnyp6DLl%2VfZ^&G%t>u*(UCeHJ40i0zKDgDeGt%OF0F|<1u(&G zqt0Ux47u&-`e5z-fOM2ONCbhEs^hMSxuSVTz}5*O+-K1u dc;SMYO?>0`^^G2=~XbKMgWjmR28ZX|eC_RT*{~BK{ z+g?Lcwo)}7eLo_}e&|f2ksU=dX>n-9qcqs 2BKPL+eq4c-gx(Pr30I z2f)kFiEZ $~i(p)oV^`rX>hi)oFLOY4!JN_g_cYRp?{@_liKxFWc-ugvLq}W7 zM%Ot;>@P-F`gL))l=$R#*@P~^l oF_#Uo0kc5DQTg)WNl)H#^3uwfXChYpsWJI& z6EXE9WZg3vR5V_vwDwkWq*Z2$4D5(7MKto%hS2A$JxR?x_h^p=XP1=@f7ZJK=kB(? z%eOph>t5%F@b0 oP}}o?cVuz#9XBgVGd1b8ER@b_JCqqb zQcfDnT5tF%masHIkNpq$;@oOQM+cC^Pns5 G6T}e6LwZclhiyVcXB>vp)WP~caNM`CR|q2?pKN)MPhIrh{%T( zR{GI9igCdeDjF>4TR(msd>=dmrlVbbIW>ppZnPyHOGB5kne4LPl>5N_q>2E^ANtJQ zw8gL;EUmR=7ueysj-JB!Ed~R#5zW0aDMQ5}nqFU-ro-{&)?OR9g+$+6=q(7`$^zaF zKl4ED_7C>dl&5w~m}VR&s!wbFA~;x!7Kd}Odr((EG)l(U?i;W|rL14TQd{RpXH8gK zi4)g=mu6wXLjA5i6{@kcR6SgcJo2NksQl9Bp!nb`WsSB`p|Wd8^))N>`Gp=8EtAOx zfd~v0#jf|RGTb@{ 9)baGagx^r)O_5bBh}Y_$mD$e8g)CNdrwU_D}x&V*B~D_t=PoDUU@|3^{#0 zQG{&o_-YdXl-a*`2*dFDp#*JpII2d6CY@FIT&2*xjD^QyJZ0S;xv7w*A*Mp>9v@%6 zKYKgA6gW&Ypfkm~d2%sQhU;X hFM3FzOCB7Ml9Y+SR9@K3Q_eZXkw?E$9-G zrPNkok(Us)B{MoSV_`^(f$kLaqdwalApT>$od>wdkRtFM6X~lYdsHg!myU>rH z=Ad=7g@$~)G#;k2qq6)(`Zp;-i8PehbG<}u=8DywoDN_Y&_~Zg8vx&FqSXA^BhT)$ zq%*7AJ4C17P&{9VcxHi@`3_;oNNAA?4t={K3^d-S0vqtkbc)^U4VsVhyCSF9ns9Mi zPY }Wov+?icLWs%)-L*jhfPm@JM-EM*D?gVi?^F8PHd@UMu%fCJ z0Umxj((?jusmcMRqSs@(`sLb)D0?S5XXZ!~gbv!3_fjhH9Sd0j@LWUotEGDU=k`mD zXWSCrkBlhEfvWfR2~&4~b9ROj@Mw?Z+81lbDfSvC1?fi*JN7n}PhFxa`@U9*ktD znLJ$?e1d|446QVIaz(?_J29EwslZlXewN8ONcy$Z=EwPtt}rCzR;rhAvhVg#kb=V1 zHn{4lV2wcuh0q~w#m*7=JNMYPN2$HJV0siC0(TMt6+|t>&@-eBx`aCRp9C4%dQldc z!rnCdx7DR-rcKIphHamc ?Bdl8MVJ7$QjRbLZovoX438?+&)I zNr{r@w)0$5UM`sx@P}Jc9&VIF^ps}d_nt)&xC`V(?e@J@3J}B3mSY5wI>c}1a)7tL z%|YrTOnt{Yk#DQr{KF=LT2Q46bK7zOKitNMR=Nh%K*Fy@p&Q?{ Gv^uv7X-v>Io9aP{-SR$>K2LELr!?kxJHqYNrRvE#6aQh`u;?TM=R3j>80iWkKtlhHM8GBhlL3XFDD zMcFJ3!j9^U%B|DcsL7}Av_F!UADAq``o;P_@f!CuHZyZ`^`8_)`q`0@k+VIYFsWDv z%x9OFlgw2JK71Hs`l-Pr)u&8daUEY{D8xrg<0^yCDUjoWXD(ZP=>+Z#zMkUE+(lU9 zkIk2?f$OYRyydiNfg6G}A01%Qa&r;BJazK)H3Xy=z)fQ`l+v%A`$&jcphQTZ|AZ?p zDKYtC#r?Skep=>|9QEwu?J;i@y(ZUs*_)<2t30F82EDrDvpo^bx(~!^J73IJ`4i4D zdb@aUz}p*#R?yH~;=nM`mD%r;=6Mc;qed+VXYQdmXGSy{o(f^QivkaZ6r?N3(OWyu zklI8p`zAh!bdcN_ p+e(zEMz~_q4fhYX z +M0%#0=Ep~Tm7N(FklG!uW;O8zXx&* zl1g{w!Epgwx`fMtd2>fs`917u<@VMcv@=O4_n)4PAMY=DwmrHYr*hkW26O{?Ju#sq z#>3DXOLJ>imwDXQbR^A*R2z-ogyZsNG&o9U8Dl4fU_hIhQ8O?^0^UiRPcGkiUfb1$ zSFiSDdcAa*mh9f&vr*ICSk!Gs>GYToT0PR1IO;in&{wEkBLr+B)r+p~aQFaFu_ 6vh)J|8$_PhY;PkU5W7w}6#Lled_|;OQ!ZCXy zig4Rk0d9)3Uv5HVfPpar)8((rwQE=0`>4_E;_Slh_NqP2Esq42$XV`+qg8&9$xmS= zN%<<_K{QCla%4=`ULGrpr(` LO+A*F_*s0D6R9g0SBxKseiJ|R70_`iW(GR ziOr}{@#Tc o}OwHtYA*Rvf5Zf?D+ zp@&r1_#!%sar<3njquk1VL2VVO*KN6`h|p%+^NS{yG+bvLp$$MBYFRf*SYNGc}?Y= z&{BZik7NL~*a}T|!N-Ci7gw|GJs9w|m5jV~WlPj|PKohYa_TRG1-PxdrK2e^2vrmm zMh9yzO$-w)FD`;*y>wJmN+rg;FT0|u$hwQ6S?Y0V?@vy-Qehu&r`qng2TME(rha07 zC*pNf7+c^-v5nGa*}G1*qiVN;N#}L?9bn_iNv(BNXEZPEdM}}s$7Ayb0 ^lTAz-BImUG` z%3JfE_lmWS2@P*P_C_lT`e832oF`b2PQ2X^@uoa0xfS?)5GtwMM-~~eU1awi!&HDr zt3(fTF Y|E>MuR}eL&9Yw(%r0Uwf`-oa{Yd_YK<%oF%FSv#IM-j<9>1-wHnsn zos$m{F%GsBu@KQ!jeA2-{!g12qDEbJY4STah_=s 26& z?D9HdN%t)&~md33G!hx{z|P({b3)f)1mN2n3N9svz^xO)ZNjOG9uQoV5*BwKqF zuFTb@x;GkjHCMMU41xM;2Gw)M{j>*WXe87WbUHtbvYV#vqp_AXfSH|Sm6b(x2#ugL z*u0c1E?S+3Y%5^27ZEt(m6an1c!PhxC6Xp;y^9bRs6S=1z4yjI6&>h3zagP9(Ym78 z92pijxlMCn4hGnGY|kc^vROmJw1s%v+olg60bRdJ6#QZZjH9{S(hwM~S|V0PC9;C; z`>9gwL i0xSvG!<{lf=CUjauOi=`Q zwe$f0;|rzHYF*_wF6m5H!m+_Z;ou(mxAFYaZ_)EqF)WFlsiOqPuWS7-tqx9~D0c zEKga{d08U@>f?;!aN-izG&SulRv#*mT7>xjk8wuaS)ZV_Ja>9J%elhl0t3e)-DQ#p zgCCR_Evpy!V1kJI%Hw3)X%=E$6h3AoQJ3I;3Y+NL$*H^Ew4@v kQA^z<$;At`muN z{r-8MHaFu%2iEgWePV(gFuxC91$h=n&%?My;&8SKlUi|?+wEkQf8)x{UYDE6eBM>5 zJwf_S$<`*( A!q?9~8Np?aGrgLW0;&<3@32;8a#}zo3bqo`S(JGWXte zw*pT7UH!EJkGY|vmBceS$9r8fje*GX?}QLY6rVfT8^2;i^&2ug4>`lU)C<&_3^o+P z6sTd?VZZmt62W{f2aCI1Gj4Q8#a`>aC7_LS`#r{Qx8$N@gNVLMLn`g~LUZ&wak_rU zfZJ@gFjTEWlt~ACj8frQxrfhCD<7o&a)RISY)og|En|_#Wv*#>O0qXfwn?CPqY*4f zv^bjQHKCMetF#KRu v{NMD3npyMD zPoy4aC@%oIDlhIARF5tBOhtjCr6mqma7RbJ(o4BYTS!2i0khGwz(d8rb0Fa2t^9?# z>Px%Yy@#8V-Tfog>CT(tU5m_cj(&k71VXIQkr7!KD?OlDd+!URx5y0l=~`1dB1QU$ zjHD1GgQ5XFN~BJhg8Lw!Tesw`a?N8Mr&EW+%Mu;Ea%fr4fsesOA>w78{2H^TGS*lD znv)=udkRhF?}%p@A&~9Gd8+`3A9Qi+>70O5UOpB=Ul41;L%Zstlf0NYbMwta%)cx9 zx-(Rhlh%)!6d(I#>*P9{FtmMc0P(;{MZnA;Qp=pS=BoRf+e2UrDGX1uHuI)8q_DXQ zE+q~{LtTOUb7I@-YH*I?SS?OJ+33{1EfpjrQ#RRf?OW{l=E#`io>Wcj>coI{>t=Gh z#9TVYf$W`tzZ1*vn8`$_9xLWR{5)R8LtlzQfQu+gCa-JZ+YpDkqDHD$b$tX4Zr$Ps zT}2?eyRv60S+3*kLy-H#BC$IYwKYZnPMKg_h~13PbUv#f$f#OAYYfZ>Bnk6^*BUsu z%4p&{H%NL8yxQ*sA9}33`e639m8n&7r~BUcUr=9n^4+#0IX(^M1}n_5|apicno z&{JIiKwD!5 8oSajuN`x&xUCcc{t)L4(nLF z&e!Yr-)L^kCfpJ2<{8B&w#FdKQ@G7OTD$2`fsz{Tay=MZJYH(Lrp>qHG5yUiTv8MX z&CeK_pwEr%T$p#??jr6Y0?`toiH@(bG1lA7cHG4Mu?-D~?AyB0@H?S_@J9h_a%c)l z4-j~p_jr9{mH5zPEklbA(``4ktcIyA@<_B27;!&;9qzeFF(@+LLi%7i%v7H7q~3Em zsDUj(-<~(#c}{tJ`#&HZ;MS@nFLk*BBa7@m91J;G1xy+2}qj3b`?Fol$?D#)p$ zZd%E>7J4=&E-k6@_Gagt8>xGa#EA-#p6ouCf;k-4N2x!}W}9u&-?`bNiTbzc0>qCw zcx;sQBuK#y&Byj05|JKtR9@$3nqRaoHMgHkWgyYt5n7R^hn%`oi6T-q=ZKQpsA{|R z5^4dx#c%R)3qgsqOVs7q3}ng@Q*=V`lB}kzCq2*uv4e0JP|)A)0z6T!dq2_DbwUiI z(Z=u0pdf<>6h`wRayO@MY{}v{8atSB9`qtwq4@e7^>ZI|nK$Qh=#vICOTH=AGRVuh z=6*K3>Uz&=W_5|;bbe6<{;n4B)AOgNs|sk7bp5^f9UBMf9wGXED}3lI_5{RS=eeNZ zOwYGpScHU!=dhHlA3-}6Sdn-e1woKl0|C!ZjRPx~mc6`i`kdB_ sN?C*R1(j*y4%D z^PKON30BA#CH5A^i7GrY`o!Xg_?ZPD+ig*2Pa$MquM8Y#U&`Uwnzbvzr}@=&N)uQP zK7ObZcvD$f=x_qw=rgyCEBn(MR#`~8)^!e%dum8%XsiE`rZkfgASWnDY^lb~=x&(J z)=d}*vN8S1lF3d7J8hweA<`|5zsg@U9A%WIQC@x)zilGbv0{&&@#b;U#fOY78(+h- zZC-wjOvC2!oTetWDqCr`>sRz>9?>o|5cbG#O_}I^LLmsJ)LMZX&iY`J248j@@>#D_ zUw>Rsw|0`_h&$?#5B!T+bWhj$m{kljgV>hOb6z)ToYO&QgJ6vZ#9jM~Tu9 2RjVC20H`WRz/=YWkTFEV(@D~*W3XVRKPi-8ky)_Q~(|_0`oS22h zm#3r7?63=YLMMGA3qo6)`FKPS;1*OTsm}BBnJz?ke{Z8EMneeTUF0|e5rG2&BV6a+ z)9=5aYI$$$TcOxsbhYTA(VcES+u&rd4s#B-c%+DGszH9lDXVldm=GalU;cBp@$E_% z;w~&O(1_dn;ZMtaq;OyR+k?PBQTsz6jsCm;W~2880+@Cm$ER;zEAzbZA4YoCKE@XY z`qL=ynzrQsVF9H2K{X0ilFI!Box?nEhPM7_q#^_@f;)*mngZqgx+ALdk+8QkKli-$ zzk{XmmU8(!U&vX=MmV1v1n%s6(;lsMFy3FZsHo=}rN2Oz*E4s2AmAEhxcOjR<_4Ji zml`JmZ&@s@7icPSJ^>*2^_m-lxIEk;K{VPVFKKpAkOu7+Y^ $^dpN_;F)h^zy}{6221r zZ71oyHk=#<%o+|<4LoD;UGB$Fz51}7J0CB!qHwfEL+G#$biom=c0l6>17(CTTL%tU z^V}^u#uG 7-6lQdj878eZN@1HuII{$3=t)qGJ#@s&IP pC~E}WjkBL`s%S0D2VJ%L`rt%X5g!jGok4dAN&m_%)8+Ic{3DS5a8hQnn};~ zb;9J7a0~GEwyvrx%8&uI;V{skoz(d#HLaQqUcZ0z=@sa#hGJtQ8}^#c5;$bipxy0$ zc>Fd73c>%m^(PXSs6TKg_u)<;AM~_wM`qGSv}Ow(ZfJ@BIzer?878B_JW2#<8aAZF z@G!& O-ef`CPrdJF^=%nqB;OefYwVW26u#ZYJ zVTb!VF?9j&z0d*~oA#h!-vi?`2ClvijiUe~=)%@D}i4ZtU_;m2A`w>gt0<{KpXhNff;WM^!X`>bmC_E-4@$)YnL&4MVBg{ZC(W z{2#vvJmW%r?V~cyuxGv!KM{QbfYZ*V#pUTvl#zWoQR94Wwe|7_ zSL^`q<3~;{F84vRF#q1nWnH+BJ~KYvj^kpPJWwzY{IhSD?dS-UA7ONT_|?RXheSUW z(C2%2c#w3mM%Cx`X3T7hMz>PNYokTtz5dnL+p+!p?rMO$==z+I0|R7Py9`#lbhFYK zgweJl8L@|m7qJS7wiUFb>P Ek?0uL}u7fwKjtZd}QX3oHn>B@@A>w;r2VPrCR zWSc`LV<}~RBAvi`Li0m47FGO$<=mf#G6Z2y5Wn?U{vF2o^$iL5=lzJ?Z}`$Cq*uaQ zl4>(+<)R^pths4@F>UVY81nr!V^Zo?W=J2$aB-OsP)N>m zMBnJY4YNaqCjo!JAvK|r5(t7?N!$VnbcMY@G#ZL*gAOiiFBG-0 _!I{n{#s(+}cIG<1h;A%S