From de1ec6d0a5c179dedcfa0ca9f565e3df68c9ec4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 8 Nov 2024 16:39:24 +0300 Subject: [PATCH] Added section: Single-Layer Application Solution Template --- docs/en/solution-templates/guide.md | 29 ++++++++- .../images/single-layer-abp-solution.png | Bin 0 -> 28804 bytes docs/en/solution-templates/index.md | 8 +-- .../single-layer-web-application/index.md | 60 ++---------------- 4 files changed, 35 insertions(+), 62 deletions(-) create mode 100644 docs/en/solution-templates/images/single-layer-abp-solution.png diff --git a/docs/en/solution-templates/guide.md b/docs/en/solution-templates/guide.md index cb5cc5ae41..56bf92d1fe 100644 --- a/docs/en/solution-templates/guide.md +++ b/docs/en/solution-templates/guide.md @@ -34,8 +34,33 @@ When you create a new ABP solution, fundamental modules are already installed. Y ## The Startup Solution Templates -We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by ABP Platform. +We understood what is a startup solution template. Now, we can explore which startup solution templates are provided by the ABP Platform. -### Single-Layer Solution Template +### Single-Layer Application Solution Template + +The [single-layer solution template](single-layer-web-application/index.md) is the most simple startup template. It provides a minimal solution architecture while starting a new project. Your .NET solution typically contains a single, or a few .NET projects depending on your UI and other preferences while creating your solution. + +The following figure shows a single-project web application that has [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with default configuration: + +![single-layer-abp-solution](images/single-layer-abp-solution.png) + +As you see in the preceding figure, all the application code (entities, data access, services, UI pages, etc.) are located in a single .NET project. + +#### When to use the Single-Layer Solution Template? + +In the following conditions, you may consider to use the single-layer solution template: + +* If **your project is small** and you don't expect that it will grow by the time. But remember that many projects are thought as small in the beginning. +* If your project is a **temporary project** and it will be thrown away in a short time. It can be a POC project or a temporary application for a short-term advertisement campaign. +* If you are a single developer or there are only 2-3 developers working on your solution. +* If the developer(s) working on your solution are not experienced or don't understand the structure and benefits of a layered application, and don't want to learn it. + +If the preceding conditions are meet with your case, you can consider to start with this solution template. However, be noticed that your solution can quickly become a [big ball of mud](https://thedomaindrivendesign.io/big-ball-of-mud/). We think that only a very small portion of applications are suitable for that kind of structure that has not an explicit architecture. + +#### Can I use the Single-Layer Solution Template for Modular Applications? + +If you want to [build a modular application](../tutorials/modular-crm/index.md) and want to use that single-layer application as only the host application, then it can be a good decision to get started with this solution template. In that case, you can use that single-layer application just for referencing to other modules' .NET projects and use that host application for configuring the modules to run a monolith application. In that case, do not add any application functionality to the host application. Even if you need to make multi-module functionalities, just create another module that uses the modules you want to work on. + +### Layered Solution Template TODO \ No newline at end of file diff --git a/docs/en/solution-templates/images/single-layer-abp-solution.png b/docs/en/solution-templates/images/single-layer-abp-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..034e412f1db9dabbc55bf64bb2c544c1db9e07ed GIT binary patch literal 28804 zcmb@ubyOVR)-Bo)Bq2x$8a%i|(BLGv1$PbZ5ZoalxVuB};O_1YK^rHyH13TwxA=YM z-1EKr^p5fRj~Y#Nb#>L=Yp*%iT(byK_#%OZLVyASfzYHRMU_AxxBw6czU?JEut(Hy z_cI7Y29gr}q~ex-xZ>_cxSK(9s}F}Dc^ca*66Box#$3^FOSyV+c>P22pUCxbxT+PY zR`xQ=N;aeLhrA;)0nJPH6j}a}Yun0kK_jkei+35uu1g`j+3QY*A5r*9BV%nBVmEuM z(O$llQi!FJ-k@7Wj(p6uSAkP)eE9=$@812ApXyUzGpg9C@4e@|zWxR&gS)Sv&%u0oul07%4VgXA;zy1$2Nd8|-?6t~qXbgy6V~#Zgty|~U(6(i6Ib$^ zwA%k>E)>+xWE0nG9f_S5+&Iv?4Lqy!KjR{G`zmq3rL8w|9I@=X_q~^pMdyZm&AhEc zSnk^iN5Xbd9(S_s=A|L&kC~;3j%`MqEwfFS2!`ydTq z`U)jFTUi$ORnj;O{hMy?Yaw=rNOzB9PaB>Y5248votA`yzq&DzO)u6Cc2ga^lbp+1 zE{A`0D~KtVF#lO zcoQATmp!1Sp(YZhAaZqTyb0Z`mXB4@J~D_ROJMa6s1c)#^5at26*4uu7M@FLp*9!Ng^F?P`w?(`IycCzhN0cnywxTA6G)3Tyl z?kV1f(vW}(8#^j;0?%^`nEX?sNFX$;gX<_~ME^;vCLnOLq_N=%;V7gX5;JnfF0rrL z?MmRPa6dXIMh&Y<=N(BW&tVD@<&t~z*tz*y-(&Jt>0r$cmr2G|5NhNk_4HBd$@--a z=(fdE&s4vO25J^=ew%i9#6nu^xQ`poqy=aQl#aJfXz;u$}?Qdb%7p%36Ee z3aaOrlg4RZx2wJ=pb_o&KNh;|wAfsZldl<_X1uu6Ub9%uc)V(Yv@l+r<45QSo^qsV z^-VQcdl+Io`k7>!W?folLO=I^Pfj6ioNkJ{A4b zOTIe>H6i_aG3^{nvy+EUTqC`fawTUjn9KSfS*GtN8)TQ{FI;46=w~0bi|;EYjBiz9U1DxKCtA;uE{;YXIj-~O z^_3H+oHCz2m_j$PACdi+4!4`k+Hr~1-yXt_MtnlDs@QuR%hDX&u#sX*hcBX0CkGY@ z+Ry*gBWumo*-Sm`uNHXLOQQ=p3dI{Qle)*~C)9gQ153!|f%IwL%-6nY?T=0{<{B!~ zP0fkp6J@hr%kr9zw|c?Oc&o$Y^zx;6f_8)gG3Vib}&=mU5kA7L_&uKZ(c zEKzj?Hxf^?yz|!51Zs^Oo|(lrl24h&49X+j`t{b4A0I;1FNPkSMV+2t1!^b33_*1p zu|DeoyA&5N2E+S9^T+0|uw6SbSN@ARb0tko4hM_tR+am1Rl0*~4jCum;e$ujw~CA7 zG=lw%_x6fJ6Lu^i(2xNNV`lY_02I$)e-+XKx&%k1Ztub#<;wEhcdYu&++Hi6JeJL0 z-czKCyxsIRd2b;Z85~^gyJ#RWRvy#T?Xs7s^yrtIeZMfCg)-hpH*4N)7Xc@Z95n@hd!v|qmaFj5;rMRZQ{9X~H56?Yr`^iY zdzVHiSw{!mgkGFai{&&B=S0ZK^Ro9=>FGjG&Wj`F_i+G=H4Rs^Llyg`{DYyL`%#E^ zm-OUhmbLcy&}B`V5w(cdE%neTgWebo-z}ci^n?#2eV|hN^zTMj%en7?9RNgJG|Y1! z%~lDH>{el8ZfSulRo4xz*P=#3PfUfH3Efu%Rm*|a>f0}NhYBt$c}! z1>6?WKfD_;swBNdv2PO>B}h2GxaXQxqnAf4n33M;;RAa^J{&#u>8UZW&$a*wAFYKV z1X=d2*+}_GwHc7~@5DA`L`7#N+NrMd7A|Ync){1?;O_ajwf0tsRaME2^7j*`L%g<_ zblnjiUd|2oA9^w716PaN6~1LsZgkua^V94sUPey9(6C6C~8M*GvIYy6JD9$gx4C{{kI!S{sRyK@G5@)ho zbLbD`N&yqEkcNdC@(}CX!wUAhT+Ql0Y%S(d8`%@;2=;2Yu- z5a{obraakYc5XNfy4tvy(v=z{KYcSaccHr^Jzgudnxe(wsKKXq>yVLNc}*Pgc!D@r zjE}QgR3pD?6wWW^Kr6-2x02*l2I||pEC?HQRSZ|7j5-M$En!Fwv{d~mIrL{s$KKe~ z-Q4RveyIIg8kz*Tf9~rivo#ZP-UpgAtN7ueroUr{?K(<6IcuH6ZkQ^TYDf2eVos;! zgIEy&RBApfIr8va3=<}I8*V$a>nXF!2E;1%3*OuROcaT+AC}`l?5X8Y^Y&TmUzEPnRA0gfKhKVuAu?2zwYRKze*2lsL5#33&J&U0L4Z^YW zg$*=-gmI%;;6V=GJrMr2sS4d(*dH4ohe0}EkP4rx68n!!yC5#>`O`ll7~Yq;q`I?_ zaGhG3H6Bh^2eWZB@_H>UWo2bdX-9atxUG72ly5%?z|*Q*sYQLxe$&J1y6V2W86}iC zc8!IFRndNT(ET}3ss-+sQ<{JLk&z!#4S@RQJ}>Sd^Hek+tJwg@#Duvi)reRYg8nEFvR($ zT37s7l=jc=nRt@vA*xjrZf>u;N~a0SD4s>mb}-}>%3EOq9`N(I`R@;F7S^!irk0l< zisZfN^M1GT6O&|W6{|65rE#P|=)1H3Y-|{^Ci9baj*gCQY;2sLSF8Bj*!=j>n*isi ztzAmeH}1DV6;uZ)vt^s-M?Y}E!hC0)*(;VYH)RrHCu&+4SE|;~wX?tA&e+@wo-Ao- zrt`oNKf_{Nulrg{loG}3v{I1w1KVyn7xHD1XN=yjI$`NTB7k086kAO#^Ig&H#FNue zi0@0Uqq>rbhiRNR$d7HBBp+WU74?qt`g%2{Jf$LR6fw~|&!%SdxbMNsZH$VoM9xmV zV5=oLBx!45>x#5s)B=~IKOpW#Bg-WIZ{M`bY}eoVx|&(XfWJbvbdQ?Ku0_KQONpHE za|dpKv8RiWIZSuK5rz(Bli*b1%drG{tiJPvfz``bb&8efNE+LYjaued5GmBDlRD1s zwokI&DHqMsC(tKRx4oFjq?N34=oQNPqZOG-R}WV~goyMAq`rFgG3WTMoinIcYnQp* zl491xZq>Ws;8wkAcQ3&#fPad@x-^EqM)Blq)9Srxi!>TC={vlnT6A!2f!8d9r{!Ci z%Z0~%1`db6J3sLFk{YwBT6(}%89;ln$X+`o32j?0>Rgc9;a6Uh8ThMq!3?$ zKBho0UAfB?`htVYWtnv|HJUxGt_pY)etf;Qo--$$X-O+tOyxwKw7E*~$EhB41cUk(pF$q&r61h@{s4?5_4}*+-}clc^LZlf7rKeFnRws zR8W-6THG3S$U2O4;SgJ}Bf}I3R!x8CdtY|et1&POS~wGHFHl_<&!R*~e-d?+S%+@h z+vKwmg)BR3kNJAKK{9tj`})LeEB5#I*B*AbU%!4W5lN&uG?|NWJ-CrZcor0{M9L^# zgYwI|tm_8s!lib+r041Q{xZ58wj2Rn$p5o>!zDK!09z0$GBAINT#S36+`?^nkSO7M z9=G;IR@UAV(Z4GuCT4DKt~HAA5r-y+$hH(t_^kAkKy#Vi#7<%7oK%-(MKmRlCyDXK|w)rF@1aPm%^nwEATL%UmQBfT`LXxV3zcm z9IOp*s7#2*b{2rt%Z!D;6fES9im#z|sT1q2=x=vR!y$eLJ%nn2463N-vxD+I~cHq&3&zBU=l0 zrYnLuXS+Y{B(Yi{2w;hMI?yu$&#obHd-YC zkK?A@FXAn4Jh>6ly=+ zCe^>KsL*{l>QpILrTcp@LleK{H4CR+s4}4G`F)MZie*;*)mD+)ro>W%oqk&^M+5d< z;Y~m63?tXsvTyT-LlfQB(&9HiEQrweslRT$sPAy`Wh3tuwM5!9-ew+W=0Hpxgzq({ znMvntQN!Dlv3(@<)#|E|-5yuCZ2Qm~UDmiE6?Jv9nuXxK7zq+O$utV~5gOz|n9b=9 zp!d+qV$_x2yDi-j)G1~E5=gVEFRL(Sk%hS!9Q;|4!wE&5@Iuz%LSEn(T)lxs=;|Ww z=My2^@$31I#n2Lqhnb+YydW$7eFH`(6|}BdKygmwVC8+9A_RZAUb9}(cs#4W%DCZx zweZcARg^2Jv*Mr>XqC-3w5fqh_enE4*iz20Lj-nC3sQcH+7l0C&D1N~nQby`(y%Ly z#HGe+l{eJ%E?#+*@bO-`90n`hQ#1GS>Wbvp3AfZl$efIw9>=c2gDY2T@pKXqbuyL% zrD*J>?B45UK?VBD(1Yo&A7P&p^7aE1)&kOGx(2cCQ%N|j-5PCrg6ggy9H9*C?BLxU zYFu2wYxMQ1{YIJhg*>S>GbXY%ELLFc$NIhV+!tzR^LCq< zXF#NdaOHr}X-UC6-!>&54EcyE%J#f&>#Nk-byLB|@t3ffOrPh+k@yDm1R?XFgGwi1S(D>FOT zqu<+VBKZB`*epY0*@YhV6EUuuhh$pc-GvMi3H)40@zF?5nCE8QE38Lf&DL^4B8WB@ zwc0<^3Z)5e4>yx#G?MXBWnMiVpk(Weo3Vn z50&2lL~>dp<{Ip{@ACO`)A(Y(e1P?%+4VJwYkp|2ti(oPz~5<)AS|KBE*n$rQI_E@ zNDA&fPz)RIWcW}bszvMA)!`V5)%6&0nW3b%HQvZFzbRB>TpNri=W6&2nF7yX`GT!$9R ztnH2VHq5+f!!w`FKVX-aM!R(^y2O2=983*nQ1$6*JL~)<)InK0Q!vFcVYQZRjiTb^ z#+N4I*eJuLc4;V=lW`d#!LIuT9+;vMiHnPiXI3_&p!}^e-`3h=Kgdpx4=0%*Q%es; zi~|P;!*=N|pASuc*~-mn_h>A&Sb>s_t?glAm)h6a*1=!A&QrNg)Kg0)YC4@`b!72~ zF=@VEK6Hx&b&%l|Qym?%Bb$YL=XNMw|E-_Oo%iPEUg-)w!RL4O&M3Cg&JqJB`KdTS z1bGUqkeuBx-{IyF>2~QdXvNnVAOY50R@aWwv0o z0O>AK@)+K_)L{Aq>4eXUy4n1W?mKuVQKa*VH$`n|gjUn7YkMZLhK)T27ni4MdsiWS z(8w-=7OyW;10pnNTv1}i?$%Xj!D9y12P?~*5tr>G+O12bg#$a>`H`d+uJva%%DU``s+I(@Ue^E6v)`N(Oq(6URRZC9eI z$|{KrqQx{xFi|T~sV~=e)s~Z^C7R^snkiDXS^wQ?7tdYSi;RrSUG)$ zspwc;TbpRJwz2WPoRm0e+>E@%RHdJ7_r5=FyV0{98cXB8zq?CJN)pq44XmW@ltT4$ z0oV@!6Xjk=y#A>D4oJHn=qLs?&N78I&cVO!sp#-gi&ct)NIdqATTXm-GhCTcA%SzT@d$fws1_l?WvO z;0X@_EMD0;IXTtUvB8OniB7yLyMi}O5ro_hOErw1JEJM=X5);EjE9SL3_%pYiWGZ_ zlKHwR5t8Duz)Ye3c65Axuwiba(!FsH-KJR=Vc)vo`+IVxq`aMVnxdvMO(NaeA|v#Q zg?DMM)Y4MFQBNAYeib|EaGM80`9*mF-r3o?K3urC-HgJTl=nH0%g)Z`UUj2rukYyS zsIGPZ#t{t-ZTYQj`2M5>Y1{pAOG!z7!6hCR{w3DFB(HQhpcXVI_D;FI8sSR|v8%b2>@Q8?`wGJT*&wM3Kb@ikRsf9m& zU;_v9kU-jzbhd0Am!UT*DyMJ18*@ZwY|Q3v4n*Oxo|~JS@700zHetK+PnYsdU+Km% zd~bVzDK2|>qvIC6us^L7*eS{48iTz;muZ$})Nefe{w*RsxN$gqsc=mg0KmGIoRFB8 z6hAiTh92tV(zs@4X3~XxVGqy?AS8G*Y}w^)Y>u|JwxAcgYf()eSH&|%(XsI5U)pAg z<@4mTly~a;)hb;|mO828x8KB#pyfqI2T zl+gI-uJ?h&DyvQWXCp`BRlF@s%lO;%;^m%ZAZBZTB<1h&)!OVn4b7I64zI5V!&9SI z+Y3&Z6ldhv_RguY87dF4l<5qhZx;3?bn6eCsELCn&a1x@;%C!`yxu|k4 zXP4Vb(~C27BBp;!F`g{Kf;O3YtU854k*dT98s%`I=eQOr}&wOJ~nLU|L@(E{$xFQM8_RqUL#m|DW3;CDx; zIwLqaIEYSPLIduCLBoGHN-eWPT$Em}2O75d^yvFh@E+Q6d#CRUDRZq*v1#pSeh2iPTYnkuu^n-{w)AIlpdH zp7!6q{Pm5u(mGN*6_}Wq({uGLxw%Hbs^ac|jv4TTk+v5)TkLq)Tkv+^wnb`? zrM$;|DpBCZL(A1IefK`#1o0jJCVO9_{r&yF6iy$x01eB> z?ts_e3Vn=#&%l;6EB%WHe|0B7V$U&90*jCzTa}4UIu#6YmLNN7`NwtVo97lx0)p}n z8*hF&B^blBDBl7L_u!`E>9ONsq~l>>!l%BnQdksN;Ipa2k{=t-uc`9;6Bmej^UJ=e zk@Qm2T1*Xy0T+`SJE}hoxoUAeIfg)t@TrN=CCC8{8#vcsZ+GI{Twe;|$m>l+9tC=% zq={TexJf*f{ze%`@R(b#DXZqy@r)JAb0|FL(;r=bPkf*5jRqn!c%A8qA_X^otCe67 zeLUStf*ERWLuJfhF5lGNq!5Q7FjzHM3O(r8A3o}2H^(4+vIa4z#6qnAAiP;|U0Zt? zThnRxa(8i2D^q(qPwMcxnpKz25|k6wzYCi<5IPgWD-blm{^43!zM|3cO&+cV4iunz zc>frXqg0fdmPSZG(7n#u!`iUoLfFG<+mOZ}CBdk_-0{RN)xsLiR`eOpuQXl?ruC7i z-C=te7&GsNC1Ug-Qs0L&K+PQ?grH?N}Z!XWXL9}QJ`OWUj=;uDFLuf{MROotqF+l zBx>BJ(=KZR>#rUkW^_u}tmh6_RaR7Tl?)UJe~AJagkY_6uRCguQ}yqV{ooa0SNc!RnCKU?6+U$U{{Swcax9SIa;dAR zd=+E0iMORjs)i_ZxvlP6$jAI*^z&Z-==rf6=dQ%gJ@c|oh2lzkwo(W?708`o>J~Gp zL(R|PA;8Dm=ltpRD#5aD146nsH>IGdp6{ig4qjA&o@hb1XN$S!RQNCc*k~UxwD|G? zwSXP&^&gOeeIMb(&N&!GBbHf?5%$n_Mo_omy8td#q=Pql?P^m5ja!1mqwHkba3X72 zRxATuG4afKaBY>^)#Cl;i`>@%yq8+i(!_AI6#1zgxRHN^?r9cYa|5lkr~9>Xxlu$G zc}A|;VrF?}2SQYNCf&9s4t{47$F{rSvA!Xw!4mbD@7*8MgtzK8AU0J1e7Q{%*9bGM zN{epoWmasi4*C@GiqxFf>QikXD$7~-^>fxm>MTe-a-73L3yLk?-rE5&P@uF9t?yri zN?HC;4+*bLu!&ZVPn)6VqRK`4l@3hKVtzz0ud*wRb z7zFpjwQ}92rpw(ME*o8SXtUi$_h5HjkxAKn8<$Z~O0yB&`)Ao2ATPNw!GTDvJLtJF zYR#X%DB3EOgzE}sIf)Yr7ctB})J>)suzpU1%wDMuqab3TNX%K$bIle(O5)Fi2rX5L zQ3Agv-_dU;dR%Qd+%C?i9NeSkl z7t5FaKpM`7fVgeyLr3%~uHf@0QSMz4%p7Ned^g8D;N*ao4~XZ0IQ@=qboKjt6x2JT zKI3gdkT6mop%AangBu)0l&yB*oC@vT_*%L)D$7suM~c^|JrAd25X;r08ulbpK)Lq*A5^ zJ3CljR@%F}oC0*C8|$J(YsHqDF{?TcpomNi{w-#9>dCKnp=h+u^@eENVdk(h^^h;O zOI#;DZ6MhPXMm4Y^ydM>cHuKxN|qS|jRu(Oi)liL%F{Y*hapZz$is7{QtSeHpW4Kp zm(|ASV`+ZJ?#i`XSGOZ!7lj@^?yI4#Uy|6YM{!J@wnW;}I8~oExc&w^F2RnBKhr5* zyE&eFKb*@?NgYU`>3s&b19nlc(^1KLVu)ayYtNIXX|E956RA+`{;Eyg_bSBQlRyZd zzk1nU41G^~x?H_AJGOl2{vP3+U;%KZ(kcKEHdWMU1-;ESN0s(~lj-57tSMEbYNBSK z$et|zcHi8%Oeo5~KbZA(Jy<+pnILK|ISaW@wNeZRZI#vTPDH*LV-CDyUiR9bsdFtK zA7cuzv-{m@racxw`1(XYtwfFCcty+c78cPDh=E`g0~cRV3d4~{uO@1sgqc4eA;Vn$ z?(~J^H{}OQ57pX~di=__JxM%}t1G6*Dd<9=h1*t$3a0&BOB6cF67<}d{E444j3TBA za39ehLNo!&~mE%`xpPc+xVZpqau(dMqXoaSEOeWcSP5=e%9^q zfqYLbSV82+1z}6XWD4C)CAD7yVCu3xeLJ9gbEPBr*f8RV6^hdJP?NpgbkNVoMaWyi zy%+1EIBQ#4x>l_48)X)#$4kjGNWVd?RDz9T%>88?MMG1^T-9dnHd*wO?+or1mtgu& zIB`m@mZ^)jPjM9-`+_kA3w|ZjTc`bc>x7peG1XS&mrW0x^cqs3jN^J~BmyI>KN{YI zAk5CDan<58SaDw@vB>IbrZ%9-^ zrE6*{wKAuL>*&tT%1R%G;XOy!IY|@v{i9K&jgIcV;1TM-3)7TYjU0)WE5$?_mF5`V zuIp1rxn4hdtIyotCTUEF2bZ*n;a8{j49tvDs3PI9iYhOkXhVh`>S|f^%Qw%=h zF$?bqJJ+@LToBo~Z7X>iGr}dTCqGiz;z@W}E>S!X_twkfyjEt@V$DOSRsuq!FOCi^ z0`EHcT-q|g#Z22J;x)K$dZDp|1^vY5*WR^MEg%{$h1S|c=jVL+^M1`RK2?y?ioyNO zr)SX-sGs8WqL2xMO+#IMoE~n!rQlM87L4#lhGeh<`ACX};QJ@vsSrtA1U&h(=^TCn z`4uV*Ku4Rv>M%!$4gt!)?wtyp)VZlmj+U|?d|yge#vNXK(pydbaAVLJlP=HjHg~CX z<$%kcX=~E$fccs+RJxVO!H%AKw;H7~6_|V*98r-8Sq}-P?|@XbUiL;#WF)m~XT}+F zrAAK9#^=2tS|;T>Bjr)DO1#z=`xRNwcnLE@$c5E^Y}&tsGdfObOrOx_WZ=8+;~Jh> zIi)}r6V=;SYIC-;KDQm#3-?X%E)+6u!USZ5z(~*KL4Fsv*jVg{U$^|W;-0fzR-U&7 z3Bx5EAlw!g2VO0qi<4&`x_-r{%B7vXd2P=?8`nw!qJ5D}`u4wTO#e}v{@XjK6^IOP zQ2zzsV})tOv${vnuAQ8{5MGV$=%+|#23j6+9um0hv>PM$AjBUJoOF{RA*I*oqx&d8 z8TZ(JzuprR@>_u_WJJG2t3jkO`71tk)*uBY5EC^$iz6=YA}CvP!gNQfT-s*kM2)BT zathTA)8K@;LIs}0-^(a5`j(LqV-2M33jN_WIKTC%?Nz0Y^De9yF$V-8UIegJPFk5E z2Hfz=bMRCsG8U!ibyi~}iZohgZCvhZdoyUM z-c|$@%JFO3B7qE}JE-3SJtXZFQyM!~UM_5G`-PwKUr>5T^0{C5)dGXF8EKY^8MCl| zL1h{9ERy6bSR3-5-=S|BP4cA!Wdt?$na%c5GWpF6yw$ZbyodPe*Ldz+ExY7MC?XH?_zJFmX0qX=A2* z-!^)OwKvbfKz;fO#_{h0^^Lvr!I3r4=>kKpJiH4TgnP$gZJgu4U#B2fE{WRRWimDN zlR0{Sv`YKp13(Sw4tkVC)&Ckc?0@Ob1t%oFKYd?2ZMhoEe-8!E8#OT$RV@mMd>bF!YD zchUIMFQ(<{=a~GENz8ylB!s7)hEWfe)7vlwN0P<`Kj(^`;sLpjjk7p)Bty;kI3ea^ zlUg2Li9p)V1Mj-TVf-q^KJhrZJ=<*X_+UBtZfeWS3MlcS#{M4n`*AH7M|af2TlB|@ zs#`EgjOhgpkr1=x_>GXX(ctNe4kZPF8s2PGoB?6Tru*@gAvj#KoXrKAo)<;hZ*ZXj zkd$5S{i`Y}fkrKVZJcv3NSIlg^W-J4wzdmZAeg|8VT^zFvIu zqn#^nn6i`$=*JMIS0N%aT>14t=36#@9%Up_N*K@g@5z6mr=!IoFXyD{gytI~8m&bh z$rRH>Z7o(Bqhq*o`-nXe^&+~^aP5S}SSob8;uQcBbn|H_fRY=@RT#Bd1uZ+%ckZH( ziXi02xI|0luM+D`OHqpl03eLph73qqCh?ZN^V=6ZW5$*4UhOmQb2%O<$s1 zBLE(R^lu08fHi6m#Y3w_85~@TE5Xki0W=&_Gpbaz!ukdu8yFHZ3+jkC3sYM4$^KTK zIV?EXQOXI0prnu@S2l<0MoH712Ol}p$dx}6-~?n~a(B?H__RYH)Fs-+b$cWamhlo4 z7I#vjhR|=Ia}}VCB;7|#TB=*Y?QV#t{l$^%K2IgrivW%mV^BXXkst{d|I*QnFh|M~ z$PFnORrhBAAnb@#x+qUIDUw9w?b8TLeS)Rd&NOnQ`CChb7nQ&>t6x4DI=}y0&C{BK z-nm$2>whZEBtoIt-`scqNYP2|#z&d_3K|4KtzIGdcR@b(Yu(a(2K-V3>`*2pcH1U2%cFC5lv1|ys1Zrr`86Tj& z2U55(zafN+*oa92Nx;}KZ*`MpFvIsh4Zalb_VR>!WCh$%^{7ZvAw7Z^37}!uHEBh| zox(3QL0-3qy7dk<`a_4rSP&Azz8Js)DpqDK$Uh6flYNGz;+JjzUN~|glsy_Uq2b&g z&2(8#1%#oBP5cITjeVrn>yyxS98uPaZW4A1ROaFFxes|X;j0cfQ~JH+pO(SAJuiT*Q;Kp6VZUc{XsgnvCS@}EaX{?~WUU;lR! zz)diLEfxn>z28T({Whq-Ig;LCdPu)#9a*ZoRu%^Cgy%+Au#E0V^n2j+s{@j0CgVBy z=Xc8oY)-s1N%hSibBzfui3lk+XOEgKdUg@pFXk6!`k{Ph1+b)H53FnIquK<}`OgQ= z_ED&nSE(+kyy68haV0N8jnRFJr!z^`1lWWUN^o!ebnb6#fxVnQ zqo26sTcs_S(7TG#MCY{0r{$`_Ahy7VI!cQR@GZQ*&(|%jurI8ml;K93x?X)|SMvTq zV&MD*Tg$BjIheV*YUrij-evyf-7mscQhPcx$?TmVEiCFE2 z=*?%-ehQ)2698)8#)mLW#Y@p#FmMe;-zE5g!v3^brdk*%n2lZfZ4Z!<9#ih4r`!(q zlSOx*(Ls*&C6WRgFu>BhzH*hSEkkbzWvD+jrzUHBd(~*&{nbu797gH<3IEd6F;75S zX548c#|dr_{T$pYxm$5&&Llu`z>#u^PX4J`>mU$4jix!HYv)_4+{)Pt;;MJDYHfU+ z0ZTw$-QzW)v!T4(YV>2BE<=uT6M6L+rq%T_s}9L8J;8D{=I|V>(XuLid+_cb<`63a zBe2?CYZQ zfSg^VN#0K}q})MWu#LBqDYaGL9C}g$Ueb(t;LIsy`zt!Vys;uV-6NZk^u;AkHuVK9 z+fuu;yz4l&6IS+7N9GB~pYcF6Q-mty9J(4XrmJ|k5Lt13x-c+*ionWUY> zf}j*WdCJVgL^=!fU&5i>KD~4ygA{Z~x-uKj1;_y|ARo12XDIOv6Y1KznDU{T9I|S+ z+{5FBaRIi_)F^_GSZN7BVh_#A!?#|zWOdvPkz`yLll1qogh)!KVr9?~8JI)^Dx@Lw zb9(15{oAl~L`TLgUizrX)7p3TeNv8_L+>rn4aA<0sq)G;8WN#D{1BAnT1Od7Egca} zwcku#r&BF7_0Ha6dU@*k2l9=xIFKvZ2KB?(TzJN88J_ADFF$>P?MEyTXio@`M86GA zOieR&MN~>c)+xXJCVBy8GwzfsY|7vN+CMHc#AJa^<_mmTMw)+apf!c@N3s@k{sw(}EkMbZ2_x)s=qxb<2v0Q%nhH1ga31mw4=`JzH4r zl%Ya)KGI(GoLmj5(_2;OL=nFG84Xx=q%ic47w~VC524~Hnz4pZE5v<`;`$6N=KWF{ zA2hSIA)E{ik`ysQ@Adro+PkWUy39R#+bq8l_VyPLhccxoIBBADuxO=AT#wZ;t29+c z{t!jnuzs#+Y&53&chClqJ^niP{+LFsawMJ1tMPLpNl}5N)~^`bYh2mNnjl4sD?(z@ z!!Sd_A(cRxWK&7S+}@aS!QT5AJV*2&nA=fDhz8QUg_4w+#rfdWZs~J}BFb2avy%w} z3go$e|E|$dt3ktI96p>a6F`KhQ=Af+qh$Gg%fxo05L*D3F^NtYT=4VEl0~8ZB9rFS zH+J{2-s!&wCbNhm0`V9HXzRZcnE^4V7heUF$4GummWL7als^0&q>w5X5RbC zApqQHPE_%vf>_XN-n3@Hx*qUam$q^;`<69ZB>k1|AwD=L$TO^c3z)$Ki`ls-jGv8o zH2?zyLyj0Rt-!9$^S6O6i5=R8hLUrc=06(SpkoD$nAR+NuR2uA+0PPM1(Y!0$n5&s z*YpQtu}Ac=V2Zf(sMR)wT(|{07f>%jGeSFZt#j9#1Aak$Yx@Dn9(B;f?uEPczl4*s z!s6}Tjro6^X>avotAmCnceXq>F6JN9^rXleI6e3adAMS13y|Q90q#!@M3P1KOt7p3 z0-obe?y?L(GEkPdid{u1NI@+0__;k@vxgjc{SG317-@4I+f5@~n6Sd6|!%14G;O-%(AmFZX#rKt#OTgt=x!>kSC zfRCsUfsgXKXVjQEBbmIPKe9%zCYEv?_V4AU{WPdABf&3gv#qo_5C0B+5zy14%Gv9s za3`WD&d{Xa{EOD=i;4p^j{;e~R@5AqFB(WqMDgSX?`;pOG>%9zKf*7s|Lwqe_2Xsz zXW6fTAWpw@GT#WSEEXXxUX3IM;eH&wujImLWHf{N6y!O=Sp!y;Ja2bDh|7F6<%Rb< zd=IE|jr(U`;*|?WKin?>gQ0B?2b^VV5s5M(o@n9rwKzyxv#Mjw_xAKFIsK^S zvl{W{kqxLp0b~|3S?$w6&;}G}0C|nq-VtH|agoX|n3Whz<$7aqc*pz?CR_vVg4o4x zwLIPe;^ZieIwDgM13A--TI6%8!LG;(1OS}&jd{sGd-|l+Fs=L1YrxY3N7#E8Zezql z6!Sp(2dsc-)>cfoMtA*KlNN|RSs*sG!wU*c36kdp{`y%t$s@JDYYy+d2JCp$ZT<}j zJl8_4Qs)uGrdF={oraSRW)gJUzrk{*g&&-=H8!8g@7LMQaiV1hAoY;*I{P$0Ub;HO zs%i$~{M#P)$%(*rva9R`)XH$9XK6vA@>`O1>0V!|DBnI|lvv^RqO0E&Kqtw8TjE9J z9&BDQK4#s)?lS$CmrSEJ&jp?tk71>el^5;r93VuHlTRI6I}RAl1^d2B@J2`jOo0D* zx`Jo}jzrTi?R4-n0^w{LoymZx*ve74hy+r*f{%0^$v-6dpS|!GBJlqwTk!wl68^6P z|D{<`NK5O5vGaNBGL?Us?o=F|eyM;8M8gJRJ}_trx5`|m>^OuVY@~mJ6BvpJH%S7a zFLM065rC0b*V-#0W801<`R0SsdFqU8JZQW48MFQYfNmjaLzIVt<^N_woutPM`|_M4 zvT7o@j~LyFSC+3y0H^6J#HLj}(HW<-)5h^8F6dJD&e zQHds;f27iqy@y9lstQdMs2_sxD?oKKZB6GSKgU2C{20%iH1^ACoe8&ngUlUG81)={ zUf-P)!{d%7_R5wMIHk;WlePOHiHsiPS+oFDs>CEBppstDO>U)b{enRI{IklyF+7LN zvU(7}LHB&jKO&U71R(O!3IQwgpOODBWc~jD!T%kb*$j@7HGJzTueZYe>uiwcbcTF< z<;;((eGg}ZRBe_g-A?0BoM%Tn`Em>OGFom0#mH03T2ck4G#jjZeVA%oyc@=+{hLbR z)byXfNc&NMYulH-_2abtQ!Y2l!|`y*6FUdDZiNs&dO#vg1yck@g)=f7Sq)p0UM_{Q z#lO7(VSq95j}j#|W#}lLW)~#O*iB zE$8GMOv|Ry(2IZYBdcO0S>{j+po~04m+DUb9m!9}xJ1n1HYobLztDhgpeG~{V zF#$#6jH0aXeY&~OSn$vIf%2*WBIAqR3$ez2Pj)=YuBuj3vr@#eK112H@79K! zY8T3}gG~@;LO0@Lhg2~a?9YC>uNdOaDB6q1nD_*5uC!J%xMAD3eh|nQ>GAUUUR(lU zgW2+jzXu$BPf*VJjS<9Gmd|Dl-Ko-08QGC6??ZwmNC6kk6Icqci9b7s3m%EFNJb82 zQ@?8$zbHBp;$|5{d2WS8lD9e+wMQoCh=yoc>(B&&V<$^`ca9Vvu)A>x)<|x3AOsQ@^q%= zWJlYY^a%3_^+1SdXEs*x^A!J?p)0neeM=omOJBm-P*=|G)tKY4GIeY3X7PRn253Pi zIpnN+yA|Pjy!P{Y+$W^xz_X{uq%DcfCI)|478_^mO82VN@Cnt^<>_pKYUmZ7BY;Xj zs$inS`Ap(z>6ArZNzKC2W$&Fy-=H1r!{0l7yN8h|+sY^V%`G8jd3iN1YsKI6>~+}p zO&E>VQvL-YXF7AXz#T}0@2dk{lpJo?>L^{Am8qRyd*8JG5gG`Ee&4o8S-$`4P{j}# zK|#M&7>@=#Jrj+;gxjh+iSZ83g{pk30$ebW)zk%(Z2LOBBf$tc;d+aiTbxSbWp+4f zB^uuR4Pq1J-E{W1kWF^8;#rKs;;uBTbWbV+Et{gL9)lgK-219Ou#}u1g?CtHnyp|zX z4rcPSQlNA7Jm4{9TH~69=ciZZP2UA7mdp}-u&mR{R$yddx%X<kjRK`R)d8X#*I-qyO?M_VHCYYMh?b}ev<;KHrXR%+gB!)xYx=Xr2B(`*eNJ~j~D@b>5Hh1{_?pf>H zb`!bS;JykJ%Qc=uaoKsX-dnyid_H5tSnE9imX6)cl_y~f#C%Kf4RMzw_^%N$_ zcAqRu9oGkl(Z7G2`54pUY8x0l4(Y^{AUJS>#&?fxmOPW~395S4*>^1GkHYu`+z3eD zlZ=2^0YpCP>gwLT@c{|Dmp_hI*ib;O0%j2T-P zKlEsY<363nY_d7uWs;$FuxLjW!@Oh>M?mZ+^DVZ~vuDux5j=mC z+?q!h@k}bh`v9y(&7@4lK%cw4+J|xK79)PJ60%1L_W-7z6C70 zUebc7PZ?tq78Mzp!T)~j;KGuW3Yf9Iy*+4+5%363*Qk*9jH_Pwk3&ETbd}GVN};N{ zy1KdB0R?1A8eM4m6*n}x)AAtylg63!^6C-W8bP)W%wVBhO_Fm!;Jpj){c10z>+9K*R=9jP~6 ziU*Q;uH8MB$RoJBM{`aaQPfg$#L-=EzAfW}$8s4dCmT_hEf>=5GJa1@ z?q8+z@Y&y;XwW+{;~w?+K+3I^8eb-*7b^YwxmxKY=psTEy~CSZ6ciNA3cW_pBkGh0 zeRcIeN1o0gO3e`c-mYmP_ywC8;2jW(ZB!C1XtXZ%cqi%mq?;+J#?QS$>>KF6N@tFF zT)a^vVL7x>g{r#oB2L~tVVm1|!N~ldm;1bYyYJzD;o;AaMwX|>bhkT#7_{Tk1Sxiz z?I6+0b7(m0uVaA*`=>$EZS&^HQ95wO{u}`~{kz|A@6<1h0wPCkDUBu5dnfjIO%k)b zL-`nmN}@cZ$Kz(geRyB>DR5w8JuPgNH3is)fl^b3MLl%!oVL$Nt|dkE4DF|(%oGhZ zF$Kjvc~rCQIH}e9g1-D37_JYXu7f<#Le*4z1lR!4SC4;g`ZknGDz*`(Ni1@yGxoCN z*^f)Euq@9Pyd>^w{Jt;P1`{+x-nxuOT4M?u{Zg_glj(Or8JoY)wGL4~P#i?poI!kN z&QaS@p~Y1xQ3E*(z*+nH`hE}&2;B#H8RzHcb8~aRlZS_gpY2SyUu~q%{(<$&*1f%g zRk-#$3~y`4TS zMkD8Wl`E0G_IW`AS+WgtDRM9v;1BUIDX)-BaigHje? zwDXOC6&rMOFNMEP=O^rgwwnr#Qs0}sdIkmtK0ZFcA~oE0ZF;r=D_7>}&IoHuarO%Q zwjp~1|I*atb%(eGli^~)1tf~jwE22VNOaFTwkwE(74POm=+1>D8XHrXa~7M&L0Oqj zFUDb^;Rr1Jj&n6Kxyo3NANQoR-yv>v>m4$)vnfC!BFc3hG1L{b!_eaBSH;uAKFASfi;_7aCpnadi3PvBv$9( z@GzK|4jAAx`Wr^O^Yp1XT#)$bDlv9WP2%?DQyXmItB$ir{}~;YD2b-{2Rl{-9tVWe z5>s(2{yD{Q6bksMeTPFkYEB-0HW8%cy7G;_i7?OmlQ>aFTgBLugyN!Utw-7DVCiS6rw%-YzOBiU3JOsgrHj>; zO6OO$FKUwWEu1ef**m*HUNtqQLIXRLQ-NQ1DCq^B!dgQrEYEpI$p2}@uN=mob>vQ| zaUfxM01kC(A<7vS4-1pb?XGlB2(-)cw9+ZEgUZdxbGC7ohdE}*-JyU(Q&Dwz6pB_O zXi9KgCl*3{!dck5Z~p>F&Squw6E^ZuZ`W3AUwKO=?|cIcr_K#WyJk zTW}02s!h({uoFdvXne8jjlraO{g+`(Wsb3us*;hDn)=woqp7t8W1wnKV?cFos*7v5 z@eV`{Uu4PHe)}^e5U`L-UI^t}fqo{{$;)j?mk#H7wTs<6*?ijza&Lg}!qJ&kqvm3% z^K*!x9;~oqu6*B$-aUIw zFH*SwCU;P1$l%e@69*II*PhZ!23CW%#H-onty*233TYG|v!v7Xe$feNS@DYMC3_-3 zLtQ<-xo(JA7>0`%B^oiV*>E2fRklD2(n z#ebh%DQ5A{j*U5keeS7lg)x8+&7Mr(vwFagatR6f?=Liha+-c0X`uxRl8uecT$^w6 z@laQWVsbZD=p{z@Yq45P(P-sBZ)TI zoYk-`!&(XC+Qd4F)krBv@WmWm)m6*6BEpE1}^FDyadr*XaWRxobTJjcR{?%?I=D6RGgG?d% zFW@HhxliDGn-l7Vbkm!d#qhL@TH7aJe4L#53w=t`{;j$iKG0GSK~gtu|GL)pt&3R0 zqtY(FmeMlL(xA+EERBKM*|KOx`J8pZ#}1|hgl^y8)}1lJ;I+vh;I=q)V-Aki@_Wpc zDLs$ zNDOXbPmIMcBd}Gy2Uxwj(=~()qPrfcnpF6*$V6$1kC%nBBt6y`fX&uO$;;;4pZ`;x z^cDMq=o_BplGDi~l2(39@GEa9FoFhFNF1x{eV-&_l^Xp>dr3#Qn~YvQ_$_?eXZQH$ z_6F++Y?iYWzL=@uk*7x|s$inyN_6n-JM)7x##EqNLE5W@dHOyNiS%Rb=*O;?Qo#yr z)Omjyo2HG!qpClX8dQ4wzc=3V5@0oNM&D#;d17e=NwJJY-B!WeKkfs7>=7P5c?D%< zOEt~Ca)cY{%at6v`(Eto(K4YC_;`a@`jFeT0Wdm`u{euoDxZvM;b{uhOs2?WnD~ca zLXQFMkVS{3v-p6@&fPQD6V@rPEEdn&KU>f-*}GbXg2uJ)$_j#)Qmx@5hcr!(`IliPTGz-Pd?-p-UYMATI2d&d(Jh{e~n( zQ?jc&{m=V%=bt-4*g5`j1>jwiMjO-(SkY1k4wdXo?UV!7g8Ol{k8E{#=onh*pJ}^K zH1u@8&O8|rBB}py24d$oQOwJNHcR!Z;n1mygDJW({0NqzBh3=qQje}$#48blcYcX4 z_oq_O+Jzt9(^0C&Lq>4(WShyK@%V!fX1T+W9B!ZLDMuur8(val(Iy_A&Gq&5^(Qdg z`uR&peERzH4@}^4C2(kHsC$b9@;etyX0ZDFl>fhPVE;K=0|5ri2e0V_AZE({=A34} zamstsiyVNfUf_j~8EnUuo*}0?y9vW+t`9G9fG^bA3GrcsrQSW7`@`8PYPB%Ov~)3D z=eX?fA6f`%=@A{>F|8qbG2n?eqjTs`K_Te8{$BrX?g%1)-`LAv4APM9A_MD4sbd&Oa?b{HHgXWaIh z@UBVg``KN+hXb3v-WG~bTO=!v%cB~o4AMNU5d%Kdx~ZILtbM#^)-6w8MXh#QuEzP~ zn?}K+I`iHXtNshzuQk#)AN6YWm-5uB!h_HtPE)E~`U`8`oN9Q4`bvmETrAi9A!m1z_U9vG5yc-;8RhGolF7S`YT>TB2% z{_NI)%vwJDjj_5NH)%6z#mVzZM((8?Lq+!Gb}`Im0$QG~t0`8>@x)>ydyspYGiEp{ z>+-0pw%a!4K#%-0X~XT`b7!OXtNo(yEDw{eHD{0o#SqZUJuAx?fx0wR6=9Zz#O67y z(5E8V|3GJ}?|z%D5kv=#C}fj-CjD#m_szL~FXC{H0&&`tjez%L_dDm)PpEHyWzQ>< zRab|Vz*Ny~GeL8E9{NhcZP`qA4#yMBp4P-Qch|d((o!GY7QaR@9M1~8di$;;D>#B{hs|ybE^d(*EYwhp%`P+Ax>?O zYC;$K-1Xk*OvP|lRW&@xMw>jEu`0PB=%$IW$~ngLhav&W#)$+4#?%z(Y5XIRM{bl> zo1B&Y{Ma#_!fp65`&HBd5y(D>zr&e)vV~Q3bzJF`pywYc5!Pwg*?+Z(m;KvHX%>{G zjHfC}r)ix?oTMiqjRDQ2H+vvx7j`oZo-H(aj!@J*#)^%nmHb8EQJfm{Mt;-{KCb-L z+@)dKdN22}C$;fGia_6Lm`BL&nNba;QwFR2&JwFPj``bTbEdrv$qNdl$gjf|5eQZd z(V^F)za{^Aoo*FpgFNkR5Vu$cktQyusUNmGt8SvQedbv8-%*QD5!bhdXho=AZ3mU4 z^`}0|c>cjJ-^tue^O{cM2*%`cTi1!m#Vh-vYJfJG?|+> zUN0WOIDPe_W}j@gn5j5YW800yzQN?Cm@{YI5_&f8a$0kyE&R(XvD738hl%0mKxoyU z@5i^_Zzsx&bjFc7Kajccy+R$JFucj{HkwtbUk_LfC`q0d)Y?WsaV^}KMH%fybd!6i zD?0I(iX+L(*fL<8I!Y6c@uw7koV5QJ3pX5>BB)df?B)m6*+kKy8qn?1vuOgDev_}Y zK#Su1*Ga1(g$)m#WuBV7UxJHmV)Kt%$FHLs`^zS+8pTrT{FyO|6tqN0P_&sQtGKHQ z5dt{|X9ZcTS>?qymZ;V3!yD)CXMPF^OEh@lqd#y~kHit3{JLGAwlwB2=I3-3q4Y_R z$M5XYGC%vwXPJYSI~*ro#w;o+iXgCXuaT=ze)e21z1zsT%q~#|kjql?{Fw`*1f`zb z_$286N)8`(uiixFS!O*)^mA4GOv0K-j`;>A%@1KFl{)wHjbJ1nk`iwPLnuVe#5tSi}wQM zXJ$*|{HAEnWo#-bIf*85;%)yTHeO|o{NotDy{#pV5aFFk7G`GiE8(cPceE|IdKf{- zaZ#c2OmF+uY($w;HX8c~=7{K9{1v2Sa~=uzpu74e#@shq#+(?42u%E@dGlz+aDc(c z%)9P|!(H0<0DoqRfH>?>6u+ksNEdP$;3NlV1pr~W|LF?3BZfdskl?luNa({un8b_s zcRGn?g+y*!-hz9F3sHMG$vuyh9*^k1Qd3)|EHWTKS~1L5okP@m#-8zlg6{ba!7*XGe^x0s$mYpy?}M+z}e)P zNp^WT?0h0?qcFSEaLW_z(m1k^oPLqo+p$9}-t>IvrwfVbSyt^Gdzgjt!|l4uJ{skY zI4b@e)@@kVm_Kb+GXIX3Bl^;Aii-)~QMR7Q$!hrWL09aqm8pF&QH7JyyMANoUe(@( zhwNCJ0R<`UaGc7|>ksrP*p(2qm=X`|Uv3#TzxEa}EMI=xZfWLVwvAAe5<^qE(}A7I z!S?zR(dby`VsIMY_#Aln&9@!!uV+fFBcMtS6mR1YwMRkZ5UL<$u9(^5STlBm;?X5X zXHOpovMaolhXKgzX|b~pelLa#EqCJ5$jOn3zJHFx&znAPd2->V9VLlGxcA^r2a|5g zkj9?hC%$WEaAvL8*1nT7#ftMbz^?t=uH0ytZ2C;cEKrHOlO7D1>O{Z14CNPu45c> zS}`=u=fFa3IygvDG>Ao#%Z1-*P#k_Tz89Rpw(0ordc>uTFLPkI-ZG|~{ zkuRsmAaGmZo&byJCo3SGLipA9>)3ni|04B2Uk_nO5K4mY0I3bof`FM4e*rUJ7WwqM zA^PX{X;l6JbdS5xQ`nz6+VbEjmO+EdfnSD#@a@j!%&Sb>2{)H3`bKLz<5z9M%#B)m zGe4ed@^8mms(9W^M13s%Vch9V<>r|!h(K_V4`FnS_IJcT^8z81SYYNU z|3p9y$mD5<*bfSr8jH4w=sePlIkot0Unvm&LPo{MJcOyd(7z*Ye@tE0`jR71OVx~i zgxF>LVQm0XFf!a$Cb7joDnIazw`LJ4n~hlpl7cwF>m20(|0v1+o9S=*-)EZHp`j|& zrr1^{RsY`NDm&gTiL@-D;cSF6V5HLZL+g8hC=#L;Uv{ir^5M8hWa~@0z~_?3-Hm}O z|JL=7AslT}_AE&_{G6feu@J^9e2B$}|G!6h!bh7gw9+HBSs?lqmdP$EXAc>sH4+Nu zLohPMzqVh2J}$%rpC1CJ6wCU(JsA}YQ$PzC!2dtjhIFSx-~Z=FdosU+C~Q94cr&4Y zwIn7ue2yZkwva9O20^@KD8>^{7FQNL^=b1{`mLO#i(wYZQ4^&(?_N# z2`GE4HM*zCA4)z{Ua>`Vj3IpZxRx3i%&{ex5K!9@&*A|>UEIzcSFbppfipH-M6Dh( zS*8=(3D#X9g-h$l4`5{&kX1+;f2+h{X`W6Z)K$ay;Bp!_z#m&Wg+Jrk(rc0jj3Tfu z{w?II>G+F+SM;;ykmnaz8)sPaoHY^mgJ4@RcRNf z<6!2t*2x9%fl9sySMBMMQEF>Z z9sC8m*5gZqSOPATXK0rD!|MVgF^R8PP}RsOU)OsuCBUpi20PewR;lVGA*(%+$1w^aecV1Vi=*`;_TyCl;q?+Aip9FP z3Z(aqnKc$TBa$!`vvl!RCJ2mits@U%@M`H_b#l{LKdDWmQsCYr4F`jrEEtU7e|b3_ zpeiuBVkk!lW>#>|PR)f!lMme`Iq>qtz~~t9M=uN#_4rBg>Hgo{VK6lUKH3@b1Pu+% zAH-CpX@6MW0sSL@C~V6PbMwNAiv9h?W;ZuC zJ0XJ>Pp5%o=6l*o4Zf2AfOVW3;e_p%5^qQi^z`f;9I{eV*`8wosO#cjnfp0bLPEmt z7{7MI{812~t$>Yd(j!5H`N5r{=p~ajuxX&FbIbZ1Yy0fl_vXCybWF~smKQgy@6R!S zxWHAK_IQYUxna>EYrLst&5d~Pc97!y0<3rpG3#XV*Y1%4KtynT3Ub*Ou)>-nJbQr(8C2ln@?89m`$0~V5Z(<(P zTbOB*oMygqCtK6!FtPSx-sHrfGElv`dxb_2tOLqr7cn}Z=;{KzutsN(#Ic1cW#HED zZraelT$#~*f1yMTNTHegY=S@NGbOFyLO?oMP_XU&i3O-saSuO#;+1`|mTW|%By+}Aq=4m^w*)RLzmp6>5uxi$ zwPmsj5hHsAJne=^ouWv8skWahGC(uQ`-o@OHnBVMeX!2x|>(ZK^C$?xA^ z0oTE8KX3{R21 zbI3gfATmTYat#3oN2|gI6X3TltpzuTj=>NBK5Pd4V}h<$L$AmY(EBR5Yd1b5%PIc9SbLl^KoT$w7@HAB+T*KhSW$kHk2N|onx z-<_#4kI-YW^v06OIJ(s>nd3Fp(w`teUri!l{D~1U(OJ@8*#zXQ zR?u&+^7)f!LGq$=BR~0*tpe;|Q6c!Dn4{yt;o<8os|0D<3=u6l+hv6weA^etwPv?O zNqIs-PcKpzj6}mvA>|glmyU6p2+t=HQDI( zm+>tCx8R7Ho107KtK=#JnL36j##dhKndN+SU-Rw*4RxV{iv9%5oMG<`EH-jo%QH&+Vf8mx`= zJ2ilY3!{7aCKj8xg7yL)$@cbkarlt$7w5VWT)lG|AxQC8zq}Lvt*W9BuCq>>~VN@5*?uO%_+aS(KqWaZGs#F8e~oU zpYYD{eU*TI0cIWW7yyk%073O*Am4_KD)zM^`I&}*_O8eL@@D8r~C3+kJSOx2>73Jj* z14V*GJN&P7ECf=Ar`8X}^{wbbdMB;-qV`A1gd%dQ8}$<;kLw=GJ;)r|6Dh;wTC%98 z?-U;-v2^xa*!a8pJd+d>iuYlvR9{Eu=N<|)D0XC%&mZCQ_U$;Bxj^=5@?M7!NFCiT z%s>_{Un&N12J;7Uf_EF-?e77?4cu9Aaq-3eqHW}@UlBE`fVK`#C>6-%WJcDf_|x)y z)XLue_V&QPy{%2L$>tfRgw%aOTi3jk2%ok-IB>nXoFw!&bZqb6{$TPT5nrMO@l=!% z2YmtTI?T-1#@O`@m4$mVl`Whexn zO=6d@(feW_NY^pY)4w^u2^P%-3?D#+n3|l#NFaegh?Kj|7;(eODk_fQT{I#%OiAH) z)&3AjP;n?g4k2`?daQuAO8{ux|Lyg`S1CWCG7)qL1PysIAJCWnm=4(izlianjaBq| zI(DUs20`oZhSK)r3E1;A+}hga)~+_LI^HfXdAUZ!;@XeYYo8`>q*(<0n)xyF{kQPV zqdkIFb0ZrgJHJ7bZ#6>8(P0FvqKGz@(%MHNGRP3)7bbUeV?W2jb{N{Ow@QiK6m~YI zCVy=Y2BuyyoD4yS@?G*7{P>;hkLLdHrJ&KHIS4hil4==vR^coV`4l3a4fp+ym&!VT zb1_OoC@DYswcj1CcB1EIBo@4*^>Mgf0Bw*G>%HMyg1v;%w2#B+C(x;&xfQCK_aXML zU%eD=$IpsOb0?YHo;5L82cnN|Do#tmV3^6@1(wL&y zBB{h)nLP%91KVLBh%@Ij-h1176 z0)o!Qd7q~v^@2y2r_G_f`N7omZ)t+X6!U#EzCMt_JYFoATzBa${-o&JG7))k8sB_% z(^Tee+TI^`+25G05f>kSbaAG@pl8QLCc4yi+Jg_lRH(e3PS!{!$YQZ8pP5se6n`m+ zP9-Y&1p`V&r{(XCXG3+s1Bj4E}Hv~mQDOn>#gLM`q#IL2K`z=%qgPQ~5d1)kF83oxf3Fx|SvLDzp(pLB$_7A_Xtt{oF* zWBEG6w~t07g?6smEL|P&sb~}Wh+mR0qsq;@*vqC?fyg+BJ7~=^CiGR=JX?o$_DwuD z8ml~_tuQjh|4!FD1IcM%)VNDiqh2grJR9Ai$h^85?A9gh-RQL$u<@|<&}7Va;Z9Yf zPmnBqLPdk#wWG+zuxr4PAb0$e|wRi6Y-Ti4Kd_B@1GQ-#ZgjZxyIg0M3F$~Ev8m5?1V r