From 3034345316685a250c9dbc293303f9f14ee461bd Mon Sep 17 00:00:00 2001 From: Robert Jeutter Date: Wed, 6 Jan 2021 13:17:37 +0100 Subject: [PATCH] neu erstellt und angefangen --- Computergrafik - Cheatsheet.pdf | Bin 0 -> 298567 bytes Computergrafik - Cheatsheet.tex | 1843 +++++++++++++++++++++++++++++++ 2 files changed, 1843 insertions(+) create mode 100644 Computergrafik - Cheatsheet.pdf create mode 100644 Computergrafik - Cheatsheet.tex diff --git a/Computergrafik - Cheatsheet.pdf b/Computergrafik - Cheatsheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..364f8ab811b21a027e8022491dc4aa40dac10556 GIT binary patch literal 298567 zcma%>Q+F;3uw`T0Hh0V~wr$(C?PSNcZQHhOYsWVFbdP?!FSnkm{=gbF=3L|oB4Tt* z^lUKX^UEXaFl9+N4yF4Sush*H6`mC!=6AR z$l$18*g(x9d}MvSE4(`_J25!ZKw#w81bq=?%jXrfm9^e0@kvprP7itV5^wJ(Rg}L! zbW4=UYHCt$4;M4g>Xb?qkq*8O7hlKrN&GYH_Lo%~W`3R@uj>8*D-R;-YN!_&NlDZ` zD~wCk-}lSulD-`sd?iV$8g@x1GU`DZZ>jp$GnX-wOD128<=IvW+%tyB+!lI zruC^KEsiYCB!;1CcA@3Xi$Lb0f34IMO$ZegCFK)E^YY{>R?lNg6M^(PNw@f-aqLP$S>Zjs(2SpA?(k}rtW6yXh@vD6l@4ZVSaVTGdc zfHQF>M!ewW{w1Cvp(uc;r@6(8A`}X#FRn+2=H}(id1Hl7Nx>~?4*+kPf8#dB0Fzvr z5Dsc#C*BqflSYIE?Y^TzpHVA0o`*8uYtkHRZXbEU*)xR%_!>c-M2rFF`cmB-l^*7Y zD&2e@`Do6mrIlsN)Yi#mgI41n>xPSzuMkW$eQD6cpu8vL^S`<>5 z#tIo@5pL&;0}?3MGj+0l4pEU^H(C zWT>q%-p6>}Pgj!sc^r`vQIY6_RPjt&O@IJcwRLs5U)Q(C$9O-Fh_PZo|G4{}E=2ml zUzKbfA08(BA(a6`cH2=-NQqA4v_M)^++-GI6P0|DTO^MNzNzz1$hod@d{LI1Pqg(A zaNBHUmK@cHY5S(eQuJn3St~6^wG;2xClFm2C^pcsTaYIu>Mp}2n4g(YzR{<5NMEU# z5yZQ+Ab7BY%-neNCXqs-O6AZ&W}5$Q%oL6lmHnXw2{@mT-W+0Wh64(^f(t-ECCKn4 zQ|ht#&F8FV2*e)COu>LLg(H$o7O<9FLwRajd?v@xeMW&{9eSxHcnd*h{WBSQR_id+ zO+XMZq51n~GNu()nMpOGwBRF(LdLGU_v>h%b>{v2!n};trV@|NF~+Wu8uvx4xqMK7 z`^Z1RWMLs6`U-HDq=s^^{p+thyOp91=Y$E8sT0@Mtf!BQQWh%=gYOyZ>t&ny)!RR( zL~Hlk(UPj(A&gNyDzQK_2!OHo2${>g`ucT!VZBClHJ2h;g|!CHoWgKhW(G%iNyR`Z zC#Z@^OW0mpy+7YKTJ=na@oz*lH0ajpTVNv7Jb81=SKyZ0Q;>Iw0uDUt9COWcBBaF4Km~~5+B^WZx=y`_X4bs+vh|01tY&;h3=iRG5 zUiehw7eID8i#wSUuNfv78Q`Aipni>|8f|wZ4Rr;mpdpyoq0upkah|!+=xx8`4(?f0 zSfJMd@P0c5ex*Q~Ika5D_Q4?PG&>grqEz6s???*7>E5HH99O*Dh(2VUb{pC2oYsAU) zNRutTcm%%l*G57SLpb8U!n1pK&S;*V2BSH;cW&?e;M418+sy`gAO;ZB zVv@)yvT5^j$jMuIrJU8Qz-L+lyq>rR7$ z$_mD}sz#-F>e6NyYS=mkjj1B380|$3H()Pq7GI8L=-11ZL%DTbP-6{@l^#w`DwvZt zjP&a4(lEOah-fXwFxD6VOhFo1#F#4r{EY4>0_dn0ke-W^kR8Sy|0T290r9>SIEz#B-9?i}t*AnZQYc_s8?H$0ff5n`FH zz%=EMC!8Yty~kUKqi3RzA8xM);Jfxf@HRE4i&e2FI;bGdwRE=UvD-WbXO6!x&HpC0 zpWiLQUk33PZM3LJdy@Z%!$2y7EO4wehGYu6#!x6)RbblcEE@4KvL-@>4?YQx)G4xP z&zIM|dvS<5MiXexk*hx=nK?5V{xbl1y*;3)0C_J%nN}L}L5L>TiQ*Pwqa>anyIMxu_6CmyE71$QJ(s0@`75(7eY%}; zPA=c-@x3Q+pLV7V0%V-0^Gv<3oX|8UZQuz^8%KRItqFQCdlIfFI!pS86*+gGyc>wh z8Q&B<(tX@JmpQH2LdUVon<3Jxnc18fLkOiZFRK5>HN^o6^I2&&2oqXwW7(8GsPyx| zYbiZQSuh$=Vu-=*VKCv*>%bZdhX(pbHzzpR(qx(*M;YNK!qV{rjS?+8wfnx#>4PAWTU`xU|?bVU?OVG54*8XLFm0#MxHNcdacLRwJCZg*g>h8;`dkLb{2bXQ3xTr-Xd8|b zpGlFvYanTVqI!XkN_xS!govpqC4!xz%qRmOS1V%kL-v`GHY3D|ly%4ZjnxrIx_t&F zpi)f&=NVa;w#gt3(|7Re*IICoHG@UY8T6HD_nLe}C4!&zD;V};9(#f8#cld?%pZp+ zsvWwol%~l|RbIh4`pkD2cmz%3*9ueLKpd1(X9+^8c`0dE@t&c83E)lX0W%2+?^itw zr!e4G^p`38&a5t>;P^myDVFik>rj?f_R$IGp(jNKGNcq2ZWLBCnd1A{z~ygOz@oQl z@Jj*B@=>po7&DU6uFmWQ~{+#V2Z{Q*&^)iFKcJ^Co)bi_h=b zr&Y`TVua-9I^^@pttY#ur!q?y2qp`RHfOmuKAw6axTLSIx3jlA%@vjTdm&WDx4hAD zfG$7e()M=2#_OaI=2UWb6ZO90~- zD4&j6$umyH)Cr-q2`moSE^%8kg_=flIo5=Y*pU<_{NNz)R$-v7nkJ{9+O~FpzOR&C z8GGXmp^6e5QwbmVt{xGhZ5!NO==c)AyCNObeDQ=|DVJ0%=kQNRa9Q-a&jADw7Tb>T z-*;New^_2GloCH4chAt@;h;J6Uy7Y#lkDU$R?#AB^hEBe){%7cMTcFswRNHG@H8)(w2xro}}USS8AtMiDklJD$PVl^qJlys0e#%q;m zMJ&AGKHuA%f;6B=KV8xWre$F7%V_K4UD(ta(iFAbSs)6D@%Im87vc${R~J$ULlFdo zR55*giApHZq~`nvR91~09u9QoI@Z|8<*IZ>K-`Y>20t?f2N(?JaAmoscP^7-j2Is0 zD4l}T4{j-wy=3~}ddW67dzVl;C18ns`2<$LgEtD@P}7ViGl5@%Zy`;`7araqltdz9 zKmULtvbp+1%$;q=$xU+L>yK*@7UWLFig49Hx$9)_;dY3>A_K{m zVuJV7TZX$FD<^fN3$WC4EUr74qJ>w4G{&zbVmoDQ?vl!uVobX$NQrJJ)yN7^n+^_N z)hy*FI$Y||?X^}x;#A-}){1U)jmx5R@)3T0i7Ju!KHNh&FbBl^TRq3!#q5X1qp2@*lp_e~Exgv-$zp7`Q4#HBJJ|z=zu-IeL1&KZ= zlTp@o->9Ah2?^u<2A)5ji6G{}^!gBmhXjN2)UjD6S}e(2lQR>G6!NBsL0B#(=190A zBRcp=kdYst^Wa#!KWm1STU3*_uaZ7S(!RDZJBlAE>;#w}j>Q1;M2uGBi{NyHZY`&E zf9ijm^L;M-JlX2#I!VgfQs&as>(mFZNr{2JHjDng0%E$_GdqZa8IIjdSEdZ`*{qdM zfhZ{+S+*h~X~tqar|j0~1L<`l?A%;c85k~Hdph>6{;WYb3u>N@$yj&_G>zBEW|NV% zoVso$pLa9=<}r;w7QQnfO8&I2QM&Ko@uORMvc4WEg_l;(OmLsn09rWPxM7PLJ;@mE zZs<>?u##dR{_JA|n>32uRHpxK!&X&Y&UEX6=e@pEA}Xdo8Rwg57cG~}#oPvIsg;e$U?u%^+1I(HH&f?oh3;vrg|c@E{j)_pGD>6uH+;Vh z{_*Hccp~ZE1zu|4cb_~kRKpeU90^91_*lXhq49KAfA~`wyk2`%q0sxpU^g>kt+W$E!ba*>g~ZuU^qU5WbPEvvUgmMDn@k7(aH0YU+CVps?B- zHDmg6P@{%O4|A>c^%tKYc8JH|jzs9H$)+xM(<5Y0H*vlHv3#43T03@7-oyP&gL)^VsT->8C07dgbrB;g|~3Tiw7^xJfG|` zcFeY=Ib^#=5sQY|GJ=73bY$4V!Xg??w(}k|(@I&8}9r}6V*1qQoUUcAh6Z{Nmu8o~)dkxUJlgTsKbVq$0 zo^?x13LpY~C)=Wi1ZLqDNuF|LuHykqft(hzfHPRIfnY?sC` zrWe5OU5JhFi{metWG`b;x=g2+4aoKmf)}?)H0EQOSbAu0yw z=~H-;y#gyx)*l1AVh!6NzS4?kX|udRz^UH}H!)see+a?w?>JBEZEP{<9eGz6wr{&g z2>D7=rkUj_HBqH@nwnWqKS@CbroH*v07VtbrJn@OJ-+W5G1te`gjSimh3$s7e zJ@d2@wz2g$iQ$__CdIqzER2> zb#sjSxlKl#vjmZgGD zMOPg9&bwrUw$`hgAC}x6rIZr^B(IUnrdo&w1Zc0pAA%z;@b9aqrFH4i=91f9$j{~W z`g!fnJiNv{tx><5w$0Oh4t}@z{4U>moOOqkO?}>cUQ^XR?#HslAL}kwjZ0k4RO=G* ze^VqAi*#=9kr;2rW)oW7ioD-FZpK*adQGwt7GIH4@+9N6-)!U5kvuNo=t_n`aLXcJ zq4|j{xBcLiIrg5aE^cB^FIMM%|$>p?T zSZzz&_OBz*fntWij6R8JeJ%IA&~IajhNWqIJ&M_idcGEY-K&DcOw6Fu>HjwXMg`NQ zv%VUVC(9j#2Es;Hd|xMbSjenN*3;djPwei-k;%g-x2C0kLY0$hV-C0`9f)7V*id^h zSfWf^oJ*F&Ad|v0vsjw*Y!!DR`__>tD~4v2I}|tzckY-|dwtVBdzv??t}ybeUTUtm zz)kSGNE&y^9~g}?(L`{Y@qfuyS(o}-qh2~`SlzEZBet7R z+d<}<+W29pU9VFACg>_ciJ!(-g=<4($~?!alH~KK4TtCu ze(WGnwgP|UFCm}kM!wB8S%c042u%-VjT;hHPTf;NbJYHew~s=iA&0@R4@1+q+XNYV-ab|rs z>H+%6cGKWV*q48|B7P5SDi@s8?|_ z5*gU0d^V30X&KMjN^myIHzRO_ZQC*(1??Pc5`yqg*O;4e7mkM__*3Q^QiPTZGVn(N z@8__7fG(#R4GkKZFfoX|e=2T|HS_u%yH}G5!-_WCTJ!w{#|4eANDD7x8=_ey(4J#w zZI}Q)bkv`pQfY&kV5qN&Z~@FL>Adp?&)Um{I=o2gH4~U;JtBYXuw~ua$om>YoQL!9 zCQyPO-)URfDaO0JE{i+!zS&F0#7THvyDaO=wR*1EJl(aaDb<|bW=fNbOa`BwS1|!V z(O!(1BPS4s#LZbV^}?)W)b_2O0M5Ri?XI5waK>(!u|D=RB*D1x2wI0LfFD41bwqB# zvTI9I@q5DX+my2GBlGiTU}OVMdb!MCiUMX~161_2u#>g(}(}+WH1iCk4j-7 zZc@C@?G+yEp4|A_n^v1cAX{i(h3*!Jwx)T=Rbh}W-Ry@2QTnfWsBw!-N1sJU+0!MlIg znbKKwdrui4NSUcOii~W3QAbU|5_xXTovkn=}^4vPXc%;wUIM!Z! z#0iyLRQHCw9g9WTtj<4#+btR!VRTqnkTQVUj5dbfb|_Ia`vRx%dN_N<8TpTKn^V>1 zGodZV<23W(m=Y&nY^@O3YHjfIAaNNcq`I}2P>@gs;_REU_B-Il+!wS(Rx!U`)xWwS zaz9s{^dSM&Z0}X3^elL&v%DlPUIa+4UfBN0>S2#l-S`#)Yg6Q^vQOcr#q$37{Q9Yp z#G}fVQ^-i?{nc=|^`t2hA|E+vqui8GAtZ*lbt6~~G2az(idW0+W#&K42HQD1nGa)X zXY&7b-hbQwRe>yk|LFwT*x6YBw@$D}N7H>vEYRhXKDG3JifxudgF8BA@ zSziUYVUI;>r{~4H4==x45>Gm(-#&z9g!K=`+wOTT(dx~_PJi41q$87mulr)ltE{Ip z&M{@%A*lk=7-e;}=FpxPCBLm4{u??&2Y1Y4lF>{ih<~={J8JEeOO*(l}jp5+zz7xp2@o_i0+!CI&!J;Oe~2g`L;p?(UDn!bLMwi^EkCgokg z1QR2Li|;SCkLOa|&F4q$kZrQH&o_AS($lk)U9G5C4};uy5*xScR}#c7x_dVKc!O*c z)n%cv>*uSXV%$RP`DyYnrKkRzmT>kS;wIfw=NLTnC)fbYC#`lfl+i@m5}cpK4Vd%NaE!74qziNC z!Da7;Q;JuR1EsVM{|p>Ez90v5WW-lRwe&u!CF9x#2ER`>&2@o&JIM36PVbD|ZmXtL zS2-kIg=C2fuD|wkrn+EoP*txtF3#4YGT^@djRg=ZL7%Gw-LM(UIX?~D z8lJu2cg5d>|C|2JbF(hb7bT>S=&|R9g3SG53yDSzC+iE#e9bjK$$G3keJG&ZhOFDH z(O;nYfTru9>j$MNNY;HS$1<*q=m5vV5Y^OxZm}u8X=|bon@4E})95ycmV06?0Ge2$ zogfRHf8Xf2WII5tfEEb`u`5DJh;+xGp?ZMHbrTdvB3TZJ2mWdYR;&|22Fn*~*M8$6 zMt0*-ksDI8QWuPaCsvUtP%p4-(D4~F{lK@ zLolZN4>%?8pJ!X$?b;NIX(m-_bYrp|brNyP+-8b&eFYM3(`5-B^=w5k434^Vk~;vy zOY2RCw9hu{iCgf6{rS9}K*T|gi-%q7!?F*yj#R~p(RI65a8DD_E= z6g$ITQGMwY_m~=CJFgK5sb<9L+GQ#syVmC*v@ezOJ`LkPxLP6_e{+DOnMX@4w{ZyF z5NL-P8Ul_e1G9px_muNDsw_RRYBNr1+wHH?C**lKKqAQwy-B!X4-M){)@cP3wz~VX0brblkw0wRtVe}SINIpo!-*M@ah9S zmf)BxWR@jBGHM*lkv~AJlB)|27oaE&g%XO3QE%7HW{BEbpprPqH6viblR~GLF)$u< z^Bgv3%zXFU186k13T9615>2@$bsF?eFIt;_oyCIeiL@+MR1TN4V=dTcwEhb|hFYgK zihpOon4qDkj#T(KiA$3j)3cZoKL0i!;m;ixct`+z4WAIrh%^s_5$~^96SMeluKEH@ z3Z_qR#%S3GpVl7JFY>1#ht*VEFEIp{DO_}dXjsVVJVN7B)I`-ln06_c*cpf7o#l#V zU_gB1M?+F0@}#+p4xaCi?*lEC-1E}w@?B)M0>6t=dvs7!#KJF##cP7I68{0NN?W(a z3a-`Sst$4qjUBxYLZ%qiapRO61r+|tA+R6V;*+y+F{(!8L) z$6tZ|R7Nr95A?v%I*?^HQQ^0WtJ9IFux?lgnaGPo+HIApxXK@VP{pa3X`Xgl*X2qW z(S`$}J$Y}dC$5gx%aX@h>Kl7%gn>avyHVmB?+8JBZz7F33>vX=W6f>GEbYyWSEyK9 z!tOc%(0mn2^?ggA^VCOcITv>OUfhRn<$7OJMW8$r?KxDX%0)ngdw%R8OWm1Rmq{{D z&iccMXl^Va)1?IlN`w79>||vv#Pax%BHtewcAJUz3LzifZ2U2&U?0N^GfS_0hH8-j z>?XR%dfQI^O!;&%){wvDdw2`hUux{fID8E#RN8ix=u6Qi!V+9lIt)f?6df z%3PnUt(Oh~>Pdw>;5=vWy6=~CbIIz9%&%eI0oIm&?W9VsiuZVjzaT>Wg&|nWLF$EY zoa{gYKqT}jmt+}3%u5xa&PbAt_+ zmUU)yE~pAka~VPWph)4<8UE3{EFX+xPpT>|fqXm=I5u^a#mA>NNEg>lwCsNQTJ>~~ zr84qiM=OpgQXnA^=^e{mJ6V`KNJxsjflY~sM}@PhQdP!O;h&VsbB$d4>YVvopE{>S zo#SFW!IW*p0S0CGf!-E8{qx~2$jw9B0m*`AK6G13z^@;vjr=*u8@owG_Z=Od2lxjq z&p!($Y0C@+jrVs#sq~%(mTXYvlVbzm@XygeF$5H# zbIwVOytHyg{De0V-ThCArY%IQIyVQ?gejkK0b`v#SP4yhfy-=s82;yxvMX?E4Rsn5 z$;bvMHDZ~C-T(9=iX9IeaMZ7|RK6J}5ruDEs~{T`bL^onYL~C54@4Vq9VCh$U#R~1 zUUeA{r{PWElzfuL46pvJZchOjV&0KLdT~}(QgbT*iXCm=@*81Pgz;J1OMA4>R0qtWJ>^_%p`D9eDOI86LsVt7d`v%v6o!OT7VrV=F|+2+1D@Exf%?416@2anUisR};Y1cwbx+3(|*8<)YY((JJvG z{Y6(I&~6b@(N#8OZ$RcFC957%#CntFI@Rf$^cONT#;2@vBka(JX<;9GNqQ88qoCHqvT%tvuKluw}%)@!OGZrD9|8Shhoa;oKZnrdg@6y-Mp2hD^` zdSk=-%2$XEG8m~>UHu(7hSuNij_MQ*v|$t?koL*6L~lr$%M>P%SpE%Y$Y40tMKg3l zf3;DW)}gi1YCQF)gQ!3&BDqB$F_qhBepeHkG?xc*SdV=_?V{1QgVy8_8=u}r{947& ze=G_QYSUx%!iTD})TchZVB(R+I(gsCLnQglNSAEl$Qa`t_3#vOy*CYnGv0;L%6gQR z5Q^u3^DIDPM0NwZUb^4tc;iMGHl8%9Rd}D`-@+K(?($H-d{4UDUw)qsoVoUcWtdk= zW85Y304`8w*O3HVpq0R^_X0<(euL8V>PHt#g2u_7Q2TM6yD!gNtM07|XTChcnELCh_c8By2K7bUeHnx` zLAvScs7Z@J$Gs_hUtW+S?o9Y@C^QgNv8Dr*hint=#dTnKv+D9;8ZXw-@zE?R@DAIt z@UJ^q0vLE2kSm7seSWu#I4W-T=Rd1 zD;vOpoQ>S|w05{w=y$b(3s>vHB(q%CS%~MeCVyz=C3t13Dw5S>6@ir#w~^+%%OgL; zUid2J4n!kA!SA-RYri`fFlNg!?(W5kNn+skt9@;uYL1F|cBK;*h}lTjj7-@E#0V#A zn*wPN;!aJgfJwg%&kUYVqw6b!w(VAN=e0S7--|5btur)7q>5nfQk5xA2{^3#nlPk> zziPRHH5=G+)=d-ZJ(lwbWKk{#X;iUWDYtC73}h%@&9P%3QYU%}WvaPkKDftQ1GfcIBOrE_9@k%;0Ijn{+U9BwpH2p=s%V{t zxdc%{%dY5fgUVovKq03be-Oik~fL?m*wnY@=T@S7t%B9 zw@|iZN5oNVDuwjWzoN4rDTsF}J;i^-V*Vn6s>F`SUkOaj78_P~&}k0lz4SO{ZpM)Y z=)NN#Een^Iah!)l znRmKC*pGFi79O?CvW6KQ3acTZ+@ZXH_#D%zap4CzP-dWw*bwwG>!Tuykbxzgis1hm z;49L`#ds^KSwu7+{9Q(oa|X;59#MR~n-J}kHe_wZA#=`}tZac)k@Ku%N-rT*`9O7U z=*~7OcJ%$RDCZFESlh!Yi6@Y4J@Dq5OL;_H`fBoHh2=AQJMv~6%T!@AE}jcLDi$&v_#Q8&xvK zgWL^U_brP}G*xUbqcMMjao*=wQ|9*Jrl^V4(mmRHj$d2f7AtlUa>lK^Hi1+Ak4oEG zxM3*GGyahF1{p!t6ghge{R)iU+~N7^)^-j!>Ec3ghhzEbPY!7qb)?EM)vsZ|ci+Gt zw)|VJI_M4-YP+q0=dPtdG>_~4@NUH?Dfk*ojsx&CxzORf{@r<&)jkx7Sy{p{wyV5* zbVtbiG@JUfctdz;h?bD+C9AvwbT>AOFxFPu-5;K_*wCo4iAQciKsd>>&hm$z9u^#& zO!%&wLe2C{G_HYQj-k~`gjfaX(#@5upv)+XA1#Ipfv&MO7?@JX?rTY4V zoC!i8_3Jh}Ar@ZFW)0acfja7lK4v(4R0UWbBHBmk0P?9p2K<5f!WiF-p5c>fNqlIj)AKd;LZG(=) zY7xrr)9|ddBDv@ZTQ=LBr;kM1oZiDnT&`D5v$m6&C8YO>b4hprp1?D+-~=~aiSl$-gp4r?u|v@ZbuP&k}NHJN3EN2WBBBV*D~ zEY&c38cP6w0)r4)uX0gR z-}y!{N@uUXX13pJP@nb>#OAF9 zy*6T^S>7Qv1$@a%#m((muqxts*@YBirI-%eh%j{*cA-h5W|}Q`q>#B&QzO0vu2Qm1 zUxsnoA{|^#`@dX~*P#@H3bI#Xx_Z}Lpj|(klZ>RP@XyNa)J56ujG}+Lpv_F#1It#H zuQfDdrenKs)V${!YKz#$7H2L zX%W1rb*;L}QsPa%-Bn`f%K+zDXEdJ1zLAQK3H`)z{mX+st1ndB!nJ8O89+0wmbd%+ ze=N!$G}|zG=6_OVHs=3HnE?P!w*M_H>kF)Z*zDatEU%ObMc~kbACip$N zo&!2+giEAVtnaSa;}271KMXarS-Tx%J*NBOSH6v|dGp%e>AwtX`!!@ps38COXs43% zQ0FzHga?|GTlJYb(7>lH!_d6f`yQLI^3;pj;#2VN_0>tHbXZ>L;Rjz@JW@&ZDQHjCbzo_&m z)>Lj4{G1C~h1T`$P8ipCEOohWkP%ybS!iE?|_#H)`ru2Y|%~!4eXS?z$Oq8dy zh+-t}bCi9=9jPVH<_8<2@5mLir#fS4`y5D?{xP?=Z)nho_+`d;yRZ~M7?|^(VZZ!u zKltHi=voUDJfKv;q@9EFoou%MGH_pUy4#M7Zuo|V4-#!dtY+x}CzZm6I^M=aSC2N~ z`A%m|1P5Xad432NC$p1=In zmsN~E6#4!+j$GzR9f)nWHXwUg$?q$NP8wPP4B`ABL0!u9x>I#W&0*NC&_^y|KXMVL zFA*OPTeWLdyj{O#%kSY*yreHraAVyklmziq|5f$XQH5{+c4%$UyL?P_!t4(Zy`kQ z-Gr}xA(Vu4Ic{Nwy%AaC4aZZou7ZfFF(1jtBiJo+wG>kk} zPEnFlNp?fSD>hwqoszjaG>v#A*mYdduX>)2>5g_if8qD~%ZD={_tti6u?8wCSmQ{) zjm;>}{haf8JDA~Fm!>6YJ^qe&`Ril3Rh3SWft)x3Wb`2%DzGR;Tb%)&sXcWg_$iUg zJq{zxO>oo9QlU6B_^XB;{VXy2(9#q+V0y)aZcdY$kdC+G+U=a-KC9s}uzJ5bdaag1 zkko}Z1K}zkNa8ZmHfHl7^A+@+cQNRulWpB+%|D~5oetf7fD?sZa;1-<%c?~lD-YH_ zE+j5TWzFleOWxI<+ejd`>CyRlN8*P1PF)}Zg=>BcU>{JwvQEQ`K7=`uAUEnzR#Il= z1q#ZQk7`EhFCU4C2TnfCVP7Az4J8mUxHu5RGn%cDb}TQMK#GgOuiQz3NWvH=L}~Jw zEPASlQ51j57T+P>LKETUwt|RGtlBhk=>?PnX>Wme%e{=LiPW$-@Nm+;BR8{|1%tP< zssz`kqNG~=zGGK|%<@WVKY#frm}EBA%^V!HNaP?2_3t59{imWKBf>-T_84r&5Ui{- zORcBz{rfvYdp!k2M>qKOi1!h8!FaXd9CzOXZd-(m19IWIU}=drx%v?<11oIW2p(Nn zurvGv+pi3u+@7>Z_Hfs~Wl2&n^l#Y2rcRfuJ=y zEn8Xz3%4Ch&fm5(xV0zRSotd+#&>nPh1%#I0d{>=bd)f_s5bPhW?Oq|De9qhqqB0& zRIO1DMAMDo+O9b-4qrtj?4(v@VR8AJ_m?WC3TS~2Yu;4Lf3Z41R|43LcdmCsnMf=7 zQ5!HtBCYBC5jLmw=n-b4H^euOWlbXFEBWov)$E`AHvf7&%ZUAz=iMevQeEUagisYH;CVw%-srfn zzZZUhWy|0*3gJ&8ls?W23_Id-Cfl(&>B;QY>Urio{?j?qqKX#lDX{GuCZqxeV=hnY zL4^*2b63ICv>9`rT=s%&n1o^C(%!r~D}2Lw9b*5DdIIJBC>oh#)I+oZrCP~luW zP2Q1sB_g%MNaen7#+WUhp}?VF@8Ct8%z^T=EWB<>f{Gq6z~L0WUgRoo;m~{9)>F_? zT2V~7sAR=38B@z6Vnc+ppNzjKCLP%ledOuOCLdk613eWmG9effq$zh@p@*YIqa9uq zIbGMt+FT!6f51SxUV{FQBDwyulDL|tx90UKaP-T0NBC_CJ}?c?-(Q=>>2Gl1H6oAb z9ND!O!r$#>HA|O1)srTuRK!=Ub8cNgE_oLU-jPQ-9@~=q_8eiw|0lF55#%m`%y2|^ zy1lzV>QMs`KVld6i^AuczS$!0}W8{zW2SlredDoDX9 zln4r}g6H90>O_yxDk3UhK#mR({``N#&hZAI%hzR(M2Z{f{8@lmq&( znd7c8iC1-4vM3+UIh;d@`XwFwq>PKEo^)VS>C`oGucL@VIBou8fl9eX8vV-I1oqQw zj7=TdsRveb(Ms|M1OBlV*Gj2P89u6-YDqW@ZBa7QLwp>f@a9bNRc8GTw{oi56eyo2 zVFqAy5=YYAKQC)O9O9IO=gm;8H{$qrT>lTC8TmOATR*48wq?WVY4eYi2MUqD#yzb1 zB%Dgdi)uXxc_X#df@eI@3QGyr7I%%54~3k^`k%QF0l&I^5DMUN6Dh$nTe~iN2(26_ z3Y87521K9&n&YQi5~)L?*maT^VP*U_;6%f;{iaf!x{g%18HH;w$JMMB1x%T-6ZX}9 z)BE{RSRV9qhZOx|Z%tsPhXWfs>qRuatg^Y)%f-w{85~sA@ zjKG!`Wxki>;1m~ou1T*o+aoN74E79;3DmpRZF{}7lr|K0aRB2vV?GX+&1&PnbSbUt zvzp=ZQfWmdJKPdS*!{9*AFR;i&0>J9Ni0RT+CpBk_LFVuBeQ~+Q@`|fCvcjFz+XM% zyGlg*>PSkgHV@x)GH$9RcDWWdz@N2LNMn%x!~r#VJ&}@?-oXbBD$zyQ9xtEa8wbhY z5GJpEhFmrnje>kgzsKr$aLrP6q)K&ORFHHlY76<^V?r2Oq#bFb3renYs&Xyj8#LFVl&70^S*lPF$m4N;YcF$iW9au zgt_SrTH7C9Rf8d-jA6ZDrN%_&g?wj3`D1~r#F=D1WLS+4|6twJU>Z=WK$f$A>V}x= zLH(>G+b}aIfnz6}KvN(PM%>(iO{E-yLUVYc)Tj!mbO8DQ?wS!%BV3lnpxH-kzaYEBF&lx>QX8Je0-Q=6Nqe{g3U0W3e0+i zx6al;zLn#KO=K`HcJ!1|-2}xwIgkNbxWzXI%rx{>=E~q33E2Y_H;r)g=jYm%!87t_ zTuIBsZ;Wg2NINS{4oA(e#btd`sLT6dOn#ZhGN=Va%s%gOxrBP~)|?vaJe>zzuv_o5 ziOVfNe#Yu;$Z3F--tQJEh@wVFafyA=8!kMK-$$dKy5D{@>7>wG9%%k(RTBTJDKWYU z#p6#{6o$fnC_d-Y*)nCYX}&V0vm!KRcUuSp@4=8a>D&6`!k&^hgnQFMlNbUQMJVbz z$&n>#d;Vh7A$B-p@&`&!iw5UW4wTwv3ncWqxrHdkpE6)QF)zkz3nhmC!`L}BX|}HI zvdgyhmTkMbY#Uv+ZQHhO+qP}nw)Z?=`{4T#h!=kYf6i`Q7 zTcLBb9`Av}r`VcT-$XA!W~~V|-j9g1RT|#Sv~F`8Ng=9uIyd%Nf1x@N=Uj9}9z`#Z zwt}B+fS1mNU@Mzo2jMPYLxd1Szm8T{529LFBsv<;>vLpCE{S>@O`?}@f2wMc_W$~j{-h<_*SYR ze`IxVKSKD{Zk%H}a;V)vV1Ui9>lP=rKHwp4$}~^PzX{?$SEQ|)YlngfFX| zWJwN1Vq(m0z-;$wXxqDm6q9XsK(sqyA;S!+6>&T`z*;bBl(RX#w+GDNA}vPyw^+w+p7#d%MrphHrG-Y0`)=Nnpme?M zJ8<6d8(vF|90VLt%9Jl%Tib0oqL9Nu4?m%i_X=i(Fd0-o{qlQ`yP95h=MVIm9GXWF zi`=smG7x8?^k{R78YK(+`ZH8p;Ee??q99wM^yjhjdS&{I%mtJ=(zMp!wUb1oOMT={PL}Ql*OsUl6awXp4!#7;pkOgL71%rh5U({CxztC2 zNbfd29uzo}BtsZEXr4*WxpZz zVV?BJK|a>1AekEe`MGmHe*!IA!@tWK2{ojg7mN(8x2{SwLaS*WXT+UiuSETGV+*xn zi?S;}>lI#MnGRroEFRU&nh36E>%ezdSbD};&VR0<0eLv^J3ij z0~azbAJIov0@v3bJ9+e0)t}c<3q)T77`gcyEE7MeU zcdf$)T$f3%aL+Y);BHFrLU5ULmAB({8#I?DF6>ya-fz40lKmLY^6&>3L0?XD^bERPFwN%-T#{6?S~L5B=3>Z$>% zk3Rp$Lgu~&3!Wrqu)JSjdD`0N@`gIU6X+LVdJSPKqKXkDVEDFOLPN#cvloq6u60=( zVyShxoz_mZSl5KdB=5o$^jz8oTF9A2&sC9l=Zckr%Ek&$$+xuA_h4nIloA3E6jv z-Ka!k#0PG|N2psp$9=~=cyGYsFx6bGl3HJof-{8ug<5jXYRkn@rWyw?Q{=usY$D^S zuC&BHOpyMdq*v7ocZ%oTR@l&(KvB(6O|79{HudsSRm~08={-X522!dZ=v0NAY+ZI4 z!ht~W!$1PoOE1)3wJjJyu8`qNJ-WKC3pOGS&$Ke*B-aoOIG9=80b5W% z;TBSAxaZg=ca8TVD+b?!-swbVvW&*i%2GwK#SF;K_Vv6ar8^X+{TNm_n(LO2iq(Mh zx0KCh^fO1B1hXBmx(lwa(+_}t3I`&oW1a-;nXsAqWLCWoTFkD#5JXC=QkbrzTAXK2&+0LkYStNYvXxCa-g}uCg1jUHz?PaP>$q|E1 zRsM;3V;UhQLoZ?%vYPN_LtSlI#gHU@|;6b!??2{hg(}xDhkR6 zINNn&r{#qR$|%S%PsbZS3bRU_t1#z()jn7LL^fZ(h_ZQ5a`Sehg?31CQwM7xd|$D_ zX6np7@w;p<_}09S46JNDT!JKG&hO^5sk4iF)-fH9rWP2tD@lQ~oLuN&gnW;mh|KE6 z>g^vtWe_z_VRP8EIVS9gjv5ePiRE!U9@4|g`*@=YE4WBU&A$dpw05Yu?Inc;6XCoA z(-UD$NMJ=w8ig5HvvToHee@vkUA43G?=I#UMiMuN4AIlE+o_RDBT1>XFBz>mi9N0D zM00dkN-p*#*nJ5Z%6Q9p<9)cpXs5tT;Ps2yd<1fwiLI%?!*oh0)e(QNo)^CzNmbSt zuZmORrkEo(oTcrJsBg(NXQIenS2EXOO> za~9l{ZS=rrM*~<)6LMybNDmF3`Sfb+US~^eRGj{32<%H&0XBmW4B7V@i7{qMgvChUleS4IFnQQ9G19Nj$VSQ z+INObgsoSc5W%J1`#GLY#87Z30r8JKri`?9r2g>9PQk2;^vVRk%YC_HoIK{*z2VHJY>55wk=J{2|_p1X7Kk83&Gi z{8wzlo#S4b5=(KB<1@Lu&PD?7!ha?Tp56=|On-y;3pDg}Nd;FGW_YQS1kf!$=(TTE ziyMlS2vL1YStIHiwD8eVrT>Yfbjnau`+f?S0llhb9#PnvC2yP@|8jVbnf06gr!2cg z4hvw4(xr+SU!ZZPfR>jB66V8bx=5ZK5q<;nnb?be$vU+F@)|%{?NzTmsVx?`?BSr&x9Hw>~WB#2O~DQ*7O zOM|PFbn#cMwuZC`c^qDzqMpQBab=%{;^cu$|91bI6b!7OntGqo^|N4h|70T%SAUF# zhKOs!M$Ix;?yuo9iQl_uzmggn=#9*)q-oL zfVlsyNv&K>S0gj%a^hNLA$8E(y(T9En+SE*seNyT+;gTeySBR+5+JMJlVzjtccg1H zW746(*0`;qyz5U#o49gX4qI|x4(B`e*pjWONZX0tRALfOCI-{|$Y^nY6yp@^pTMmXt zh3!=R;z(_Nu#`F{xZ+hTrlG6nuSvp{IGBpSyZowEcCZQ8+;oc+q09#lAJ1zi(l=(`j!<*k3taOCSZcc<068V#=1Yv9 z^i(cvgLTk*u9Y;NQ-mVu&z-P)hJ`U0u{!6v8pH}B86_eC^R4CJYgP)#MLF?>7JO3F zjf|6c(;Df?^D$75*s_1C^NJAHLI-Ld5f;Gh2vpFWIL^Jj=O-kCMM;ggSYh`+##E6z z*nwf_-OxzlxYTjp(cAv2DzEIx*(!@zt*#hxS(o2&_~*1heqGLdFMCsXNw?7G7`ne} zXTQjxvxg~xV=t~1S>e%L0>%G8Qz}AQWv_={{^lKcb$93H$~=|HpIY^2iHWU!HhF@{ z;zob5+Icdi?aVat6~W!o*Qjttl-CwfOkf1w74@mW5yUz;fG#{BVK{W#w-X7NUDvVH zDM3U4c~}=0?a~v7)}h)9s=r$;7hRfx0;;a69mlo))Lh>a0{Ts?qKFBx zh$+TiG6ySW!O3};vY|Nj)o`Yc2&3N&S}B0fp?yIDKCs4^%H^E+CfIu++dqCo=t#Oi zs(bm-c7AmCA=F{3HxZ|vq23W8?#ZOxUGq#4uN2fkG(s`wN&p*}NeX)_gP_b?F7(G5w$&8()Xp1eSgyrBZWYQjXF@}Sa(4AqtXjKMY#Vye=Pbf#aW_I(>$}Os5Xhl8Ms@CX8 zSPLg@16R31-+RH}OepqH+S3co^Ja>AX0BD8ZCX@)ls9}y^^Q&Jj2Rd!^H*ybi)%3=m+-lQPK+~Q z*TuYrC*u}0Y{;uD=Y6DXRZ4m$p(qdcU-UeMLb|Q%8fkLJ(%Rpb?W=vAyV$0&K%x(5 z?Dq^S!l(~?mp1*g{|~}u`(K33!SLUF>i-x|+~(DA+#E~4{XxV2JKjtb^*ML5lG1gk zaAG%7pH(!G&f{kiIRpuc_NU4CM(F3mXZzdRJD)UQriiUsu7ol#_O=Hrr+Rjv@zRv= z=kwybF?Dx%T?0v31T(w4msjeck!CiKfpTW2cIL<7r)8H`tEJnkUcBMSi}1I71L4vG zDtFM4toQv1nD3VBC->^Bw8T>V^`ZK$=DT6XxhgSs`BUqCUz<0oO1JT6Sa(rHg;-Tv%)hk?%z5$w#{dw)`uG|FkKJEZFoo95P*|+P4l&0k&Km^fb zx&HHd#riS6x2rvle(=X@mK4xs`cV6y?GX-Y;3=Rdvx3%&x<&^P?TLcS)k!&AlQV&6Q zCzEAFX7^%8%>gOYR)bB3e`GnNpdUZ5dE(#f`nAP1zB2~UfPdr%Eqq>zkfobul*wmqDYtaFt-NdLqV zPG#TM06oCe92S}u(@PRwh!4euC(rEFO=u)>LzkE*KG{eywm8+{1L~Fh;JbwXBi_}X zVA>gI2zS||V;+7WgsTXm7{KF>d!%AP*n85JxU`jLwC39OP@ziWw!7+T$Sl6L*W*2_ zNhXp-Ngk(CvtBnEImnHEJRm~DC5;v@4lfs2L<2?_2}K2idss2ce5vHY5|UTXS~3kt`Ld?2GksxM8n))S+TTB3f6*A#v~uBEeE7x z|7x;!?g2sZkNVa2EjxGc{025$iW+TxK*SQ;=JG+Kr1<}Ibn%-!$###QFtQ2QRNt(!v0?oeC<|=}7KUI-+~bPcMFP;_7z&&g`vlzuk^P{aH$31WoGh?7 z^pc`+<~-mgppquo;ChfM?<4oHeQo6B{%qX(0dRr3D)1Hd(0|zg^Qn9^p!wmOi238y z@>!ZA$#E!=m8#ETErQGieLPa)c;Ysz#mVGTbfuYEo?I@SpBb(o=aDl86I%nDuJ_D z2vlnj#Ee4vCda(|A6`lW0)A4d$+C>&ck{|@arS>^{#2@rdEd1CZ-am|yU7k28J^`h ze)J!xK8XU9@MG2-k8K(Wo54$z&SwkGKRXha8#H|?H0$<(Ahz`d(*yp-R_5NM)fz=` z$Y_%AGVcKGu6;nw5NmUu0`Rvh^0Ee0%Z1l6DK27t<9^(mwOT;x$fqNVOY!;#?pTjV zDV&@>b`+?rAWJECvBrNJl4?CM2~GuEBOS`Ud#;Y;2>!L1`cd>7?8T+zCooS^34NeV zmbCXo$z}>hUtXZF58Bog+pM4alVv1Y5yiXds7$rpY5CITx{&PuGC7%F>t z9fFQeYKdr8sbm0;q`q_g4ZS^JBD6|x4jA{60NVQ0Bf`|06;fW>y9*)9f)9ifYB^*M zoUjk9)KX2n|KA~YFVpCKhT`|83~yac^=b_Yk}1IQPG(RBVBLXC*alfHXjdyM7z!~a z0T{Bc@xvvHhZs{p9nz~k6q<0_i@Rv&?0asp!#|ta3>jmh4CH7Ue(A(pTeT87v24Vq z*?%ycEOPH3gT6R=*J1*vSP+*|#Oc3{=BcDHhC7pK8( zX*T)7DVNKoUh-q!j3R*)FoK377>IBM|78>lgAW8Id<;AL8_uB|yQKzdo`!!*=*!ALVW~@Ry6IJ47-bFgNw;L8A4>MvJ7Jlh_wEpJJl>kOW+Dswn*geZok@WRy z{5zC~&wh3+oe&)Up$qkjV=H ziU7$FeDP1T7up(Q;WnFgmw{q!mC9DU*!A_^xjzp*RxYqN`)HpEVDjOPlR%YK`oVbH z5&>xWErpeuxQ`zB@0KkRhUX6oyRfmIWKO>{TKL<ybcD5Y{Riar)g}O0RwG!PLYoDI5{$l-*x@=+*BS ztzwrUSi(nWS5oNoF+5n3$=|N^);+Os%*Cg+k60?yl{W&t>bD6^(ctb^!OdMMLXBYo z<)lXv-_nLk5|7$rB1!}RZmTb79tVRw0^+CTKbm5*-pYES?64ObhHbzWHQmH~+qW zT^1Y3Ap{QrBv1kfsYYAjkk+FBVgk`T$hHu^3JvMrTtTZ_>9|7;rvB84qy-430-SUg z4;Hu$ELb07&_bSEAQ3Ei?{WY9fVT>Y&>!B&_731TQ;9Mdhnn?#{p&KNpuswjZ{Vo) zuzxGXJOBxDYn>XcC+5Zkhf2Zb$KwtJn_QF_O zWn(dJTie+wQb|8oXaY1#MBv)eHJK!hww5Kp$aiXsPCorJ?5anz&F6pNF!2Wotgs+d z*vO%&o0myN{1Bc?nzc#&lc?xutIn>Y;~sBZSa8|c^y=19mR%Q$txDJmJKM38V))_6 zmywJXjH9YRy4h8t)NC52SOR_FP@5ZP8@T>dWe{ZjW30>J*bF#L+e|ir6ky;9|;` za01iIND6eNE5L2m89tN)B=S{L#w2;E_140D9*@oA5rFknUR!s9$Z^eTkA9lyzk*}Yh?1ssEkOmjjEeMzk7+Mg>EVw$K?Rsx- zMn)6%?*sL(Bh`Cc{%TV5U$<)Y-tS#M7w&`uf3xCxJ0n#f{}5uGd&I zx*zM?dbNP7_Eg`7ec)w3cl@pU)>PmLiAdxLOCUxQ=T^x9_OOgTpo8m&4U6sKFgt{4 z>vAeOd`*eZB+G+S`xGj~6@`CEBI#;yM1q}nC-|j#oTKb#C%x=|a1W8t4!P`IuLM~~ zTq+V^XPsfgeW`GRcQ?Ot8;JOJOS%Ji@495!8J(c8^(+*yCXyMh;$c=a$3$bs8C`Z1 z2O!Y)u1Y7rVcqZB<{bQ&SfglVWnZ&qG$s~D6Bm_053*-u7Ca9ltG->K3dWhPb1jxB zM77pf$2K${#jX-$(E_G&)2D2%nMxGJ5_gni4P?5~RZ{IBznu(IzYGhDoq+eOB8m!N z%2FV)lTXGPfU26=Wxq=49EGXCp)5eTWRY19$3@NYwSJP_LMx;|7%1b= zDRqdfMX)Li@I_mLVtd5#c%GqHO2TI4(rxv#ACE#Rz2f&l77v^CRV!RZ<{U9ETEM-3 z?-*GnZ)T5wYUfRcXZnM1M}4w7{fB^_qW(Y}l=xf^4BwV-Nm9_P9N_PaZ#-%lRgyl4 zfl4f~$k~s-&r@;1Yh+T1$v?L5(VYusJKHQPMJF_TvJJiia79 z9gy_5#ga0UmIG;OS6Z{>-7v-aM*LLu2tV!c<2ypK+nh2mE66`lVqXVT-NdSz&KYjw zOHUPF<6UtSCqumjqr=LXq20@E$_&Yg;IWolpVnDcp&?#hvDs?%%2B9iQnYzanK=m- zZJ|Or!Xl?U>m=Qnnc}gzUf)swJsA#ZaQDS|(@um^IFDtc@sWKRBsf@vH%OAk*n}7K z_j4rk)w!6|aq>vGNRY}!hd@4Cl6=JSdw}#Db(W6t>!^nS}9}qHe$H z0-hJs29HV_5G%M&!T%I4nQ*vhsMK_TOW^^tYH)Bh92~VPX6E$@^yGHb_YeHijW!G! zk$3oiw*?%NpjfGXWmOcyh=33X4VAsZ>sbY}>FOK0<@rJQjTRS>mvv5BawyckCO8EXw7L!Or!jJ$nYj4Pa%H}#t+}h zL8J{5ol%DfTRWK^P0*+ZF=zEgu&L-+B$wy|2}K3*I!mGM&;zOEb1~MT#(m9wlcmvZ zrLYEMWN?SWhYo^((GrI_^%(!2TpYLk@Cl|%vS_OF1hv+NNdJTN(I zc#5-AOU)V$ z_fB1BEgG5Ntie>WYouJQ;C%8 z+LkrOhpdu5VuAA@*m<_pU_x#-XdXF3Ir z{&0KgdO^}xlhC?z9)ehJ;J$btGjoQ!QUI=t;pAOD$X&o-*o7OR09RXX?2oQj-PS3q zobf-7X59wh`eRn`)D#~9a||>+reViSVRgUv&BhzCDEYsk{Mpt%= zb3$hvc>ZFhbrgF7nE85rD4?I)Mp_-6TJjjFW$4QEmh%xVr#*S-45R)VVCYuIWqnjP!^x&;tS!;2bdfQ^UzTTbdbIG~aA*~qcUxEv`w*v`69*IRh&YJE|DWDN3vlDBxB#r^ z1kW%e7Zj2{lU2SdODNqFk9cc&tKLJctASz|Zi)*dR`{}$EAQsPxp9VuyTeHq=0$I_ zzN5A)#0@EJjT!E^_TJz%nv9ELG(7vFg%$60slKWYA!uMrMz)@MTQmz%)9~>`37%+< zk2+P<+6*jJ^bY2&$Y^X8{;J;7>vB#)tk*TT%go)2m) z+k)-lEADx!1*YsUnAycCrhl6VSU^213#_-W+;%+*JV>^^H|^ivbjGov1U4sCz%EC{ zjP^Ih4b1Lj7m%;twgUyOM`BiEvAdETB$clAZTdncOVHtgoCosbZK4 z3vifwK7$ZAp-72jw`Q1~BT^8^Qak9FP*dbSbjJ|HRr?EV2y=E8RPG)zG-x>zN{Gd` ztRkf$fSOCB?mBgN6z$dZVDV(4|1bY-BST@l>?a}C&w^LR)#uwZ_&hfUd9SQ>>M9P| zWwW@J9gGk@V3CZy75YvbbPP^rpro)CXfr|Dv$L?z#mUuWmrUftLrJUxcob~f>nd|l zwnnq{%Dl`y^SSPcy5^vrrCN4ZI-`=zbmURCe>l3GRf$*hgouUi{={&*c>pj@q#J6l z5`OhYsqq(W87Q<-9HlhN&AKiGu@)2fG>o+{y$dQ{qk)B`0ktL)qtxIHI!Eu=IVNGs zC8ozMyO4?5yYTnP3cP_*A+=aU(z3D)wHWnF{D2Y^TYcd~RewN?q$1P@YH+R-?>2zL zymQX8u|jGQvie^-8@jKfXB{Y7b^85J!H@7w2p zvLXo&uNx5g*D;n`gxv6A*R{$1xXmCxZ27(`u0l-c*h=$<3xk*QvE@j*Hfdvpik0XF zH6w(!$AEgXGHVY5w?@U}t~jK71ssk3=XV6-<&YDmB~RAFKv1YbYvZ8@!bCwTe$PLT zIFrhFF_M6o4zFg8vDgD%lxWEjq2H7BO2~(QA`LA%BjVJKD}kobpi6TkQK%Z^l+JBe zNCu}6?{Hyw{D~rLw)!mtXt)JCJYTCKiKIhRdi7^fqhu(SyaZrbvp__G9B z-Q!4)QH&~6n8sJ=&0sjZi7I|g7RNB?qm48iprgIIp*S){(d}VhBMsK$bc=pphnN^s zz75!CIb|Q1epXZ1+1^bw(1h*o+NgvN&hU{sy{chfBHr6lnK%XTzfAPfYQ4#T326(I zhHo%xhjVa^%Xh~r9~zR3XMO5IoG#vbs8pZ#f^r%k=_CJ6BJ)WOBztA~kR9-QxzKy8 zTP)a^iZ%nFaEwkZr@Q_AEmhik1!5C1LR87GbKD-T2c^yT@gfZ%=UJbje` z{Z^RZtFc9WB0P&8Bd-m5Z{m(|u1m&-f)^X)F-RO>#ft?b*C?8@+)yu)qH$1{N8z8# z)T!a6-EV@4DshA9mpIl`j=`T+@GN(B&l~ig_Y~Shb8r#PhW7c$J9BW^K*1xH*ni}t z&ma6QkXUwR$R>m`1-Owg<8Nt!oRQCO2PY;CPELSUX-lhvJ2IcLSmv|)*aSv2rLDgt zhFZ9tEgDx42X9XjNK%aorSw`FwWU5k4AA*6Bt}k`*V9hpJ*SG+o9o9|7^q4N^2=nk z;Y1aMoxUbL8U5Xnrgw-vJKN<#rz8Inn6&Lenq*pXL+ zHB==qL^hox^JL+Xnm33M;*C^lMc(x0W#{&+NTX8nEl>^_wZiaH+zsxxr z*kHhBO+TS$Y->H-roI0=h_KkvwHVDIqRGK46aXy>g8J9(@~P*PbWuzCC(Y?FF2wJ-V-ioVoWFUeLnq3roqNwty4nhtt^o2cW`nWM%`mY2D-sXzo zoza_C(&D&z?AOj(aslgw$#aF{e@HZ$^L(lu@AE`S=r4DnWn9_2q>HBC*5pE=$lcET zQldf$g4ITV{yzVT;9iQ!CDyMo^0J8bV?}PKaidk{c3XbBV9##;NBT*s?r)I{Q^jPQ zk&NLkbh%&5`lWJxTQ#?BFJHCc3T9%xXXz;bhag=L6yeu1@t!A$vskJzjg)GTK<98oqJY;$Q6P`XagMceA&;wmeiu6; zq|sx6fIjPkw!Aaa%4gr2{hN_j$cpi~(z2OVYJ;lX$XidgczVdp_b^q>U0X!TBX?EX zGlMAf(+Asx(I@LR#K$u)KG}1rwSRJ=Y_!qYx0>OYR|lenh`<3MBGPKt%Dvd(S6r1x z1s#XEr}VjlR;I}nj&Kw2y8EZ>(nA(zQ5hmV?Ti{`4|<);i^!*1BVKu+ixtM_dz++o z_wT2!CkHgx|3Z5@Ly_eb8j3!m=*~L#O$y6!vC0jIMD63yHN8~&I~lB>IT2v zPJh<+{LszJMCd65&98qxYb4|vy90tG>|cDGUs4}&T8yv1=aj43(?~Tudhj)$MCfNttH#>bnme{F7!q!LP7Ee4Go1hoVpY)=7~i^S2@Ei(D zuW&-KVesL#R|Fx)UFIyCU!>Hh?hTvSDZwEz@TqIJ-rM{7)2hv+XGQNbx5kGsQexyX zpyfsci!K*3HIC24zzs947q8VfvTccX16sNt;?&CBF-G^|)I;I{TBRx@8O|_;75sfA z%9RS$?n+C|We+tqRLnrG!%v zM3MACi8*4-G%RFWj`{_3-sW&3xCe^lP71P2iY`w(J^qQ!8j&@#^n{U+d=9E7;Pp<$ zSp+R&cn6rKKU&^d*;*7pZfMz3eXA6XkxI~ghPbBN2yNS;igt(+G}3GDq_W~WS$X+CbslcR9pTHwMV};niab&kuLUX-qn_`4-f+ay3W4me)eJ*nnt1^i z=a(ha!2)MihRtI^VZ*t`I$dRMhU(zDT9!v1)n@X;Nl0lBs0BICbSDzi;j?ARpOgG~oF@v+J7YaS4ow&~s5c$Rdau?_q1HNx-D` zz<`D=LS6%9+9H1OsE<2rsAa0j`pV*Bc^H1i1BxknS0OEU$XnM;hvCc#V(Gf8Te_10 zR7mgnlJ4u#i9*i&Rhp6T0fJc~*0=(5bky|&WsJx$=l~yiuVyg6(w3A^`Ii8Aj)1$a z51%g{dEFjjj5x6MG2Zr6hIyy&v5C*I{jgY7^}O&oVASXY<*$?H&(_sjE?P&W<_J@2 zx~2-0DHM2;o2L$IDa?oYdIgSjd3WQJ`B<#G;?}Xf(1sf*LGXr)zj;-_7ObIag)5al zzu>D5o}S)}xw*d@-d|FXwcg*_8Jd7k!8;bYA$7^PgD!c5*q;P?t{NZEt~vS$JkUxA@f2?Owo3PYq%fwh?JuJoGqd%WkPw^Vj< z8lRoFdh~w4$kWBGlHeAsO=qr?u_~QHBc7`F_#hvA13H5P!P8*)J&K#cc(v-sZa{mE z4$niLP@1>y$r$DR095W%SkO9yZTvewBt)v z^D-%GVV3may#vuC-EaMxGYwYwu=Jxbn@bSpNhOu-a0qy0yA7c!L_I{bF%qPr%qfvU z{${mT`3_xn6r0KR`d>Y&F>M3BI<-x!`P$LbHbNSCmUqz1Q7AA-qDEqc^)up7!%Va8 z^rA;k-`^r+{CfOyqOq3uDh|zCO>mo5@n3*59JtSXn6XSXte|!0=}FnIpDALl#87c6 z)g9JJ9>^L%pXsOkBtNiv!B`?pr4LJ(4OA>Bie%U?Uadt)p!$H5UV7Db+8<7CWUUG> zj1j}48>`Pc^h{$oA5n#Wp!yz0JpG*Pxdu=YnxGnO91Q?ULW|ykb4h|%y-%1H&I!Li z8%7#*QU4v7aq#^aoAyLT;p{e#o|9Y@a@ExD0L1N%hkuiXkQ(N}z}c zFu1RDD>!8Vokkx}EGk85f(#TnK}NlU%m-GDy!k~b$Rh^ti}qDV*A-m@pH?;crZ70; zar%mv#>y4VZehdNbHtK-JrVGC&nAB~(bRHk={K+?OHs}WD)%S$V~=u0$ci5iwg4_L$3BV! zPtzMCftJ@%W)A2y<=gxhS@(zbxa1!W3e-#BU7ax=s2|_zvi+@2&(BO4Vo2WXrT}Tp zveSs6hsw&N4|yP&fuJjX zuLz3{MS6A^1vRY-J(xju)(q=*--DFED%wS{80p%Oow@uH5_tgL?6HecIyb~vv!CzY zw%*nw#=y&bh8Pxg#_YjMU{K5GOn{M->jd`qE)U$oTM%k1h6!vX|A*w5gzB4!928}m zRt93bc*cyuf4Yb%Z2wwa>iUrHV8iN9Av@JaVccDRg)q{4ktfpRb+O1Rr#s`~cpK%l7D3HBm&^UXl0;x6 z8;bup{}o#qlY!QvA<5oeMMyHo3NE%7+Y%<$)`cl(fI7DwHk^b{N_$KbCDScOfLUd! z$X_J7Xi8OJ-YS3AnI$bXTp3iYA3P#Mk9$+2y3T=7ntw|G-aLzIpqx`=U?3jpg}sJGmdB-!l6+5UH9Wdt z0(yrrr9rXzf)uItPO+V$R_1EA6-ZWFbv?mHNz2O&c@U*3960$6hwCt{x+WIV%h;)g zNMcggctzPo4Ln$fnh3%HfE8QfD$ zpd3bfojE~Z3mvy{xl++Veep!n3pny>z?|T@mFX~>Sdwho)5w}rdy6EJpyz*mZOGBz z=etv4TQ%YUXYfBN`0|~vh^9?+SjjtS%C#YLaJx1dGJk3+v0JMYOLWTDWmh42U>qda z4$ufA1gS>FJ9eHMO4DorfJo-&PLEWI{nk!^#us^CVng{@NVn1RgJh_^19WL(thBOn z)>?xY9EGo!^0c}U`lUnPUtd(rsSf}wi3<;CB#XZf<+`OlJ2VF;FKFaQx%@e9Pl7Ad zwpTNa)?chb9;gEvE^K<%L-d4npGA8V@&&)HS}DWmtve4}Yp8^Xr=^-}=f{`^-R8rJ z%cvp9BrTwDu7zY8l|txcT;m6TBmpcqoVQ%3VaH9t@63CoAOq*kO~Yrqd{u9kqr zYV~K~{g(LzXjm`k^aXRC}A$r;NOzYtlL}ayqm7?}3a&UkX zyHyVI@Utj$V#Mw;tIV!K&fm#cu}t0~n)O9a%xxwxDrj$On^C|LA0pBsM_9rUsxV8n zwml|ToN%t5OBSI?;eUbwq2j#hAi+Xc8n)LEK7Fz$iYd78@Gjo!*McJl!Nnwp;lD!; z-vz31BP}_W*ukfu>sTp2&nG6Uu@DA`X7}(pKVV^fxQ-vC*b@*3LjX-oDsZ1CvFuc^ zwaX#v(^S^kG6GC`bM8sprRkiE#!9%Tr2dA+T0nWv2*x@Okb;sBe19Lb(dJZzHY2hz zM`YddU6X0^ITO2sD<g0Ee3}vCdT{>2hzei{3e@9;3dp3GkiR(-mNtO6DdkOgl-`v!-q6 zK7%Q{7>>TSOo?fxqN15AnL-R1v%r%!yQsv73A3gVR|M0WCe_?q zaMWwO$*pw@CUtm7ic|bL#-eH8068G?Vi^@8L^h`tMnk^w-7()!7_Y&mTX35LE^)-P z8YK7urfEsl;x0LD+Mv4bwX9^LlKGzj#n%K3%AqV`IeF@chn0+_)(}qJpbqg+qv*)U zq6B~lR9(%XxoiN;ucElcLsPlol|!uOn^mWcWm3X*|FWRZQHhO+h)ghZfxg9 z9UJq#&pgbJs9Lq^?6Z%0%9#mf0UOhatFJl0lggM)7~$4hHVwbjaSOc62}p-Epeo3aRgU?yy z#$}SijYXfbx_NzMY^1h`bpdF*?AZ7ni0hWlO9FXSvSS+=)m;4my7&6p=upy73*2bzqB7>p^)x~T*?DIPa zL5Ob}o~Myw$Kbzym9A>DK54iyUyK;CqrO&lh3USV>BLW!eo0jEH2L|DY50 z^da$9SmdN>g6DuB2uMLmzFHj|KKROFzt>+uy9K)GE~2rv!$c1;jCLf~yQ z%fh8-m?EUSECt8)=2|_E6c;5XEel!u4s#{!zxUcW6(6b&L;p47zbgplZHe%fWrd&N z1K|>U3dF>feXE_FmqT-<&*mR1F;AfAXkur9Lj^l3TpUR&b#{{gZP)m35p}k0di;)K z47Y1nrE!xjI`CnYe+URYskx2{fwJ(D+<4a|2dpo>eO!`Qo-WAdI0Ps^?yQWKf_!zIEW0m3n9%fe93IV?p)2Y+mZN zjy~u4&q=s5{p5S4k$8+@KTPpeCnR&0ot}T-h1?BpusYp3i+~ICqe4EOc0Whj0t#;> zTfH(W)I;NItyulS>7~_rpyfrXK2(oEh_^-zeJ0f#nh3kdyf!u#wP2z4CU$g|lpd|0 zn}>^dz?YOBo=1aFN!Cf-9N=;Y?W2;FKaR(*_A^%^s%Tw@>yAM#>EkA@hKqq97@I@4 z2ozc4v+!=1h>^)aPan~~`$&On0X^ne&1vmuM^E26Ici}L(CZ+#FmXT>sSATQt z-{tgl&h+%EF9n0dOPgaJBU1o+${IM@d~bhmX{j33E65Hs;NW(*)pNlTj=my>?5t)x`|1yl!@!OdJn;C^d<>v%7&44d6FsUIE62zZjgUvQPS<0B zUHV!H_B&Fi!p&dO-LIsiF4&<5!Gc7 zPF7e4Tc_5YDy&~NbP57&9$1TAJLAk3YltlX*b{w$!^L}jPZx;p@`+jDvBI{x!qhDI|TYO)GTUuk@*xqM0l{dDrp z=lH6?$boN=)R!LBpOP|Wi8#22&i4Fub;QO!qA>cASA*~EaZ>A9n(U}`4Im)KDtumz zckjECUu#}L8QivF1v7Zt1M* zMEaVTo0&ZXMuH)C^ma#%_{ehcn{jj6Yy*m#`QAH+d^26?y-*_7GM|FCEwi+Vj-jDL z@$n{})UGso3uT}5d%hg+Fcjq4NM2QMW74|AZ2B0+5+EHvuvfMb@66fCf+hS*#_<#% zz$Q9{%S2vj+sA7>fa_*S&ludvU9{4l{mAK~++t=%F)yYJ&+Tt;mwkwncG$?}OP31m z(pvq10hF|9nXu^dEqt;Hg(fUWiC5elbWDzhalg}QVy@jxE!K% zYVDY^HKO?>Pz9jE!=t@?GhR-NlT(TCI<750nLMD4;DT>h04$5_1_TX4n*P=~ZkpsoU`57ac`6Qix}_c_&Id>>jwkj9r(=%%IOx{b6~_#(}BywxUsX z6g;{gpg*1-nh+1h{`WV@COtmD9liEHpYWyojmQJQAO2zsx_{aCpIm_ClI?;Y+4BeS z%mRG0>nrSsv%fSC7RoG0$>g|R2g@V}>jBRvD8!GjpswmxtlOSIwNKfJQrhMrYvI*} z`1tMP`o}aqI_vGNj%`{Qq*ZmsB;o@w#c_%8-#^p`nBx+beR$#MFoL%}Odp~_k5o*g zLhX@amaISb$*D65(n}7oRQ`w2+^oELqspH)9*^ z?kxd7Q14#?l67|V%v`>%N?vYq=@H>Ni+O|Nt-AZ;yZajh7U67N9lxJKr2mSzpNj6% zGU+=i7H&n1?0~K3(f6$^U-dEK5?KlaOxKmO|KOx5LwCJU!!jOy=zTD|zKH3yv$=>a zyV&fe*YG(7!r`s-RV>xq)HCM+xypAPRE307ACO^0(u5c{;~JpMg;G_~g0*4X10x%Z_&xPFc(QkY;re$Bnz+ng|WWr)&#X z(T0NaCFN4qgViOU-Hp+z_wR&QR$DtGvXCpZRTMr}L8~B4Wi3+Z5T2Tr3gTaal6qP+pZloR4eQMnS*+zAy((a7h zoNyF#UQJ=-u6~JK+7ts5XN?z9oeU^zEjG=#uo79_3f;{7>?CNA$N!?65O5QcP%@s2 z)~%xG<+v%3<~#L>wd!2Uf0OS|b)r5xbtjL4*Ew<4R{l9M9v{`TBdSlLa$3uMt|k3A zE=ne@Jp)wl4&tw??*^J`O&`LH0JY`h;Vd_!d7auFLDhs^{l4DryZleRxSqb0HySKe zt#NUDwojxF>!j!EZf#!kjR~3ik!f0WelAT#ARB|8)v>Yn>lUj#re!MLoncD|R$qQd z!&=2x`MddB96kjh5?&2_;tIx5-g~*q8rwMPb~;9*e7lH!+s#Nx3dr5tmCh3rDH?(S zqrAAGFGUz#cQ=JBs1m}jpf?NRt`+Hero~yxKF`@!97r1+?!8Kpd(8G%RCj;yUnK7H zp?5`7Mhv{*U~R{eS0w+-%&e|L@YSo=(D1 zXOsV)!6N9K7?Oex%75GqBIcl+xqD-Wt~)0VaR&60wjG__bYF6B%NC5|_j?toR&P}M zN|wBWqrUle`|qUD>V_LN@3tqr+;s3sy7DycxQ>@-VY`3%rM$_9rD#EMhJrSRX`(d?{p>9@QcYmP+?RrL_Ms+iWfyfqCP z^hQXX>ThmqH9u>5eCiH?(M zNCbV9SJq}7x!5KBrWN#aTYe9qYg#2^v~@oQ93uhK9@N?5Q@U-g&}UZ+h`KfWI)$z{ z-=q0nnfmM_G#39ld~CtAX*?R{mb`jSS!B=@{IrCgwRL{8k8yjE(zcu=Ttvt6XrjYT zhvjKyi%SIAWE%C8u+ouaNf_MjC85v~8<`ah{dT3Km@Z&Tk^is6E21Z0LFr{mX_kDt z;bQKLl_#B_1FsQ%r*Az6QJ)k4b-F4Q{eGKfdKnBFt84r+4D(Xc(|)h1PeEaOOhE&b zhVmcC!uMu~Z=GM+@^9&nuZ8QC3mh1dzuXlE5m;c%Q0e!8XUyj8p5K12 zb{%_k?CAkFcmgRAYOd3fC9>d+hx_`_W z**~qAuPtTZKG6+`IAEn|2;cXzPv%GP8R@d1FKf%Z%bArI=Agf z(-UpUvM#Z__373}duah^LjQb*;|hu#huEG?b@$oHTYncOP??!KUbjrRYf7u*s6Shw z3lJ3kWK^fb5bOW+0Hoh?vp%N*QO5%4#~8LMbNs|0VI-wMrQ>XIeZrq?b6cDYVxO)~ z#ZAlQsp&X5XcLr164jqms@`CT7cnl&RsUp_Maw8#_mZTFrX4FnO@lt(=X;Xnq7L^Q zHXanYo1AAtjWr=H;_{8Eo)h18kby5yVo+i2xrcw(n{88hHd};=W`$u1GF7FGE)+d5 z=*s}R^4~R}-Qz{)L@z=4Yiu{M(N9*J^9!m;NR5pyTv>y8IV87z>VXXsL$!sN7`z!8-DZpbc`lvl^hE@sV@@?pj-_GoEdng(Iesdh)WFCkesn64iaPZr}d2m1BgAYkMCa9Kapj zo$}^m`x0J%ZCi@COy?A+CatjZ!PZ6_h#q(gInMQmNVWtQ*f%fEs%ZezgfTJr#?>A6 zihFF-43KBH6WF~rvHr)r<4HPdgKYUspTv6E82q0U?@#US+b(t9;B5hg$JSH*THhAv zk<=uu*U-|mb)DobsS^YqnfwLq%lW@oWjaG)liRSZt!#v%2U#3`48^%YkonwouK0(uTB%?QKESFl44{uD^fUjBOSmt`phgBky!Qlz4gUn zB;r$VB9t|{00eVB7hMhc+T|Q1yX1m^51d~VBsuQOb*q3>bgj-$RJfBoaug^d00>!c z75=fHMCFSz(haG2!OI%IVn9(eEgwl6j^U+}D#${hmEtTh@jF?=G;04OxKlz7z=*e& z-x`--IF~JC$R`=%YTrobQzsqD;@8#Ktw76MzO82y|H5Jp113+4U{!3wM$GCxqy%J^ zi9g-bHY>UV`z)rtn3}Q@Xq}$6ZCm!JmRFy{E;M{B?FL@W4D~V z!pc~((22e;lQ|ATZ{KL)c5W+*6&hyN0i@P2)Sw22>0h> zfqHZ%Wj4^7ezZN}LL)^_|Ec|9Vu_0XZ6+Yn^cYvH_zQcLaGJRqycx94#m6efCgh;v zrp=^|J>|+OBjyWQBK^|!k2Z9(cS{+hF+7y;8#E|sJ>T(WL)9SJdpyl&J}whz4Vh8@ z>ErPKSA{-~$8<1PFMsv4TPNB~c?U&Lnr2uDLRD?C;Wk{q0YWpGi^(}Co=n0rL=FN& zBnmB|iJV#~>Ps(R`{Bq&AyIj?!~beHcxm_=3s#5joE+&33X9*AJc)*1x3z=YVeNB{ zM0|xlUrv(ehs{~zF_j#HovqMFE84I%(caIluoR}2)zlnss*1yRIz9+A)r zn;dX)={e#>(a0T{7y1pNLOzB4N121)InH~U9T-vn^n%RcH$yMavQN`;Mb)Aro?P+N zb&L&tSu?Z9h#s$Zp%WHNMLJ*48moBgB4LzINy-3TvfzgsH!_e?>BqOO2sE?m>ule* za}D+N$_jNJxRoUN_2;RM@h56UuyDlu6HJSR#%A)}T|om%9}V@ z4ko>MG`G3Q)hI7@!^@vxAcKxzNTL^8qu5O6n?AIx=o<|d@7N}Yj_o?QD(3rAZ5EF& zV*;u}K9}K&W?)T72RD@phYmBr5lgW=W2iZZ{xB^lK-EIwC!_{WflUgRx3mz`H7>yk z;>9$iOWL4LyFZQO)gCMGODC=4qSw1ntL#xftB=j!Xn)-N2e3JGjoyfI$m8`%!Wyla z-e{T_gJ)gMdr3b1rMA_LGoCqXD93K%qf}nkVr85H`?!>K=nbxF!j9^-P!FQdL5m$sZq25t#bO3RJuwO_iYE7^5AQ%uR4mM|=s|p8=b1)}$ zR!c8N<)}_oFb~1I)UJYQzMRQAxf;aK5W21n@+$A1{=M2EwrBrBIEQV{CGlDUQCu*l zV26dQV3roLfgjNXOS*mSN!gFk4@9GA92E29wazNWUUn)xF06`qojr5Vz`l4k!LxVd zRdFz+JqtM>T#!B74E(BbUn9&TMJArC6h;2<^Q%Ey0ESk#gJKuz+oyO|z%>08-xbqtp6Unk0==blK z$tHMNN7ac5+QTHF^Sicx)v8b*atq%xaPONN&$kZTw}lu^_qtQQ+@|uO-tm|a+$ULJ z-)6mi0*XYIqem5?jF;6n>9t28%cBQz&AyuJaeivDeX_u4`C_)7M7(og|$ zlMyw<`BljdITl~GS!(MP`@$)rGxX1rt11;IMs*`NA0$D;WX;=7`GTaH{FRcKe~gh` z+}17;wu;XT!gPA6cYETvcMhO(5#GO`%|KoJt0oaAocvF_9K<{I4#wUPHzcJ2{#cxc z_$KR?e8)1RrT!lcNSPYi$*Iw6r=Sw3W)5~8o!$~UM^Uhv-`SU>z?Fevt=ow}s`m-Iw9!Vqw+IfJEk9HFF=< zTN_0tf4T>!mI0W|QzW$KO9yZDJAMym_OiXVnHIR{AvfZ`3eB-X2|`i*RPwbM-tVauI}L zkk^gC;BNJl(!s4uew170t539+bm1axuqUJd^3n{gX%ixER3Q)x7s3v-EEA(D^+MV2gs zsIgd#$qcb-5dK|6DB4*E_>|as<*ri(0_GIP#4Aw+t=baqS?xPF{dwyBs2IYWwhA5? zB7Mw(Kn`yxk-));-%1GRM=RAan%DyjAlGgk3uT?VIPykw zgR<-1_%rRXXd!UWbW~}Fm;mrKRGuG2Gh%)XcoM{4T;8Y9#l%BO%Y3U@y@ymIU0YpA z#wj}7v_zFVw}HW0Y-BTK9(UT?kYGok)s4bbAj17w`&@j6+g zuV`H?^yaiFv3JDw?H<)D%-@c_nOoFdEH~NTRU0?vS&4%RQwxIn7ZTvJao59*4jzg| zBKh`wZy`*1Q$q_|FJU{EOo-!pHfTsSFqZtdVTuc^Dnu%X^!QvdF7woWZ(mJpi;mL! zTN4|WAnte(zdXkM)`+B}wFv>(Qz`s43XPA5A^A`nri!te&Xx@$3!_e@w+M2E8GrPy zV1s(^$8#nSXBpLbANC=BpEZNColC;|wi`Z%8oF~9lcFkqc9lhrPc?lq z{B*XD**zNaIyz*{_F9OOU+Pe%)wM<5@Awp#N~Pfm$p_uBGer%YVnbb#Hv!4J7WvGstmxVpaUq;mJucRnu5zfzY30>a*WQia0k_PKcHz6R(Wydf} zC*CjQ6(~r@4xgr3Ee&3oZ#m#4-*^$F9%(~$UcNE9;JowC{6Ld+)jj#M1V>R5-q^yn zz%9J2@@-lUcbZGKp4^Y00CuU zMAe<8hE`KJhOL*z%-e|OI|X?+6IwHO#ZyhG=~e9Nc+mplk)SDT~tiIq{^ zu~jn9AL#8CMDk>t$a?iYA&tdmUT#l29Q1r@boio1pkhcqw1dJ;$lM=l!88bfCHGrC&qZ@dS)788&NbkV&HFTn=XIvSX)B&(|>LRR^1i;NFL5 z>Y|$KwMjCO7Osvf|0+4e(&@0slo-diWT+a?93NTG=ULxK`fu&&MKr(V7dgLJ8|~zV zs6J4>TYoP!-QE0RuBmvbdr{$02Zfybz<7Bm{-(Qs>-P}Jl%0AKtY0dm8|y5=g-{5J z>yh*?~R$W0n?~UY9u%$>MP$Y{!9>k z$V6jZQzj{(YK!>K4pGG6zoJU7($t%323J3V+-(R6C!TOlR6#U9-JqGP#S(lJ|U1zAk=fofJEz z$RV$>&C~}Y^)}uBN=*ECqxotRxzz4Bw+RgQjQ#j0K$36b^;8g8B~`_Frw5L9xC zK>#eRI+hNOuP|96{uPN7eGphXRaE<(O69zJcU={2Oxb5m`M#P&#Q45Rhva(tQ9)2a z^q~rt2xx(GL(BjGyj~z0pPIw+xXH8-GQSJIP;n1(#Y30e3n!cd`vvjv<$78hs-`(K zCc5~YPUH4cZ`r@%(HEI}3J2TQ5xSe{45=!Rfp%^q(Vd#u!P?tVa{xJ6{MZ(LJQ?CE z8Xamr45Ol>DD|0Ampq!yokRAIe&?k>4t%nc()mhon{n-5UOe)Wq}(#Z2aMo6gOSy< zHYZA}w4O`6h)x^j)$ocv*Jorzt*^&Uo49SAb&0F%~DY2_WD*(S}9=F>4QVf;+W-Kyn15-p2XZwj&%1B}$Rhu2-*O`Ux1a-Je z(hbLSNm5{Fn*BN!_>4Gu!~i&0p|?BNvb?9iN-3BN7ooYgLp`;eVQP-dF#5c^NmVNq zzc@-#H>=V9Nf5ThOiAM&=m zuTQ<{yP$27GfmbZ8Q0D~aflOQ+J8&yEqN~KIDY|dUp41egJwpd>LXydhFY2M#g!oi zo{sysIrTzz557}l2dpl%>1qg?#t(Ng99SP(py5zKDHyK=`R3wp>5D82q?y`OI3Ak< zT9_0p9e2F*xbO9gHVh+i3q8N0XQ!`@=P>U{;|R;<;chF!&Q@xTsS;-tQNMsqB(J!5u7zFjgl|wKYIVwR} zsCw|v&gG(-M~GgQx?YX0Z-C^oz2r8+Z}ebHyQpU+@F{)E!Sb8Yhgc0`^{Sl>0=crN zUU)Ub8$p(6NC8NWBg|56+;6&QF2GG~%2!BnLisXAs97&2;+iEGfOHJ;Ul2FZbnQ|=MpM35d=*+0$({l zWc6RgL+JK_Su3qvNH1n;YfM69VfZHit2fzmo7-P*w{0;)*>ET^JqV;Dp@=Y;T|N^m zhTmt^2I2;YXY1h8)hGbCrSlC0L--uE@ek@DX85A#C&kZ4on!9){yBj&io;=yux2?P zXcXCp2Ogx_Z6QDWC>%I>aqpGcE=y1^S|_Hq%DZjxx3h;1Axahcf-DcJj)#Xxs42kY z99Bzp7Lnx-``lY*do!O4PalwyXQ&l}(6QSTdT|E)Uud*p6nZRENpWzD>XLT)1^TaqXyppC(G%Fa^U*_CEj673K#8*wuWSy&j`rLU zFuQwad+0a_3-xc>ZEkWHbS0kJ}QNig`jWK2APOfLXqc zTY;*_N$v{Jjo__iXp{=C-}}y18$*$6<$it`0Xr#`+XZ8=UJ2e*)n?L>vHHMoy1O06%V4~B)mFj<7CHTe^82Z1 zE@Q+Th3XAoO6#KA9sE#)(9@z>7N|{xkNBHf073Nl+vRG2F{6U~r0)ojJ%8{Kv#Czd~ZMG9E1DZ+3+?)n&}9c3N@ z1=iBQ_ZSWc5o>Dh((}1qm+Uz{?XW>z)gR;<%3|1FfD{@M0n+t*WhubbvE=E8r3_rw z186`DF;(jrx=$G`m7jNve=X*~?>X>!Qzv_!vI63jj{avQ3nt%d8oYphW}yi9$7|Z9 z#S_&T0+OpcvL<7QIc9>|mt*|j(MjN3??AiGEbLS9s zg=+Hb+|xhcgyo)4Vp3=_Pz}PAeSZg-=<5cY&n( zMqh}&4qRv%?@MP?o$tP$Ag39Br&G{OGxhK3eqJ|QxAz=RM#K7d@m*h<@ATGv=ff2X zY9Amuy%k&6bSVDu_FCpIIytG@5cIiE`1d!oNY>)~(O7(`)KD$%Q(Ne;zfTH=Aj$Oi=e#1}HU|jVh0I@sze;i+n))`n^(7hb zA?e)|^w-ZTiBc{V>)%PrM+_@UZRnmm)}G&EU2*seFCVJ>Qm-15Z+*G=Ii%uLF!P%( zDRmFAv;ymsQZ*rMo`vBX{iLeEHD~iXKMGDr6AaB5jc`lp%smd=vDeT+5hS|dZK)!N zHn&3yI1hxU&v_vD()x{3Aqd;Yi^qBu36AHG5xAz6N_v(e+)E$7bX2D!VKRTku9TiN zxw!r#lbn{R20e|GRlb*CE{Z*2!klF%4?jt2yaOWHt;cq5ZK)v2=NCz<6a-U-E%H1n zVgvqOv45@PPRVD$Heu6xY%iC%x#{ld?6%L=o~kI>haP1rs%Ns2z$z{2((mLTPwa)I z3=-ldcAt}@tF!|Zrrd~&n@ZEGa_bc)A;2s{^qO_V9<)(*nKb1-)m4vCN6(Af3no!_ zRrda60B`HZ)0}T@KyG&2OJ=99{|dp@6PmMEi%&Btv!=7w5tB^+(ZaYYIFbFz(S(`M zQ32xIhod*~jZ7ke=&TKcWM9yl!wiC;=JbRmsfsjFy4C5IqCnuoqIO?@^c5&girQ_U zM=!wy>e$8==syo(Ay<#3)SBmi^=q>lvwqw`_@|ST!LW&;sPYNCtf2dCvHILdSq~6< zGhWHy@C`7aaieWubqaIkw$^R`UMHJW(8g!I>RO-m{_8>ZD16;#P>DNvS@s+OyWuiV z5?1Ur9WZ)U#w{ea`0#3|?(()Z7G8Ji!P3JF04D<8fXpIKcU4pbwEjFV(R=aOC!@2ni0Ggi_V0rYJ9u0JFk? zdIMV3d-ki@_Im1EY2Tag8MsLIJgMFnb~1GvxZ&)@kUXFjyOm^D(#w%BvyFUKB zB$H3VZTWc8s%)h`>rb?6R9}8?f4^@B!A7etIorrkX!|bXVGTO2y;Vzo5%DYZ_aJ3mpQBjPYx)5%{fKo8J3FZ4Mbg{pQ=H+MOF=+*Df$Br zHAF?d31;h#;yuqXk8@wExCT17pGte6T3XmSO%YK$`lapynnO+7czB^Qce1{E>*xMh zx_G7t$K7<@zqz9xAH0U@DURJKDEupftrgdk2l!Eh5ZN7|m4DpV^vG)MTvi3sE3^lo zFqB~hex$B?%9@;VtmiiFPCX9e|&bwJN4YwBrY*h<&YnmEUmlBC)7)PW={#OdN#(m zN?x=1vdIlvMQFk`C+xYj7rG;3Se&bSoBChv0lZTlX+(zGl`@%m*7m43ox%R7=Z};pS!yP+3bxMB zFi$SDYwDO;xuG;o7WZtFWXMbwCiq@kDhb=H7Ymhd*aPY#2%O7@ati72g{x` z?8AJ0zxvRE;L?ZC>e<&AMo)bIh||D$T5@&VD?ig?1q8J+Z4Yt62jaU4g^k1FBa$D` z`_g+k2>$2|O8y_d>z8r=g6g0!>e+Bt=^Q)aK=TN#r=yOQOj}yj%f6}aYH@kwh(1?$rWhN3{1hkqsgEg69*s*i zsQZ5gGPbXiNus;OO!zPr!>AzdPVZgR+?I3Y=ERrJ40a=qe$Z}BD%)f*7?vvDwklT- z!~FKw7LXE48%)9rG7tS%2pd@r&c@=xWE9_1FflnKlYA{xD zU2%Lx+3XL8r}2{(3T&~EjAX~_>25W#W}Y^LlZjZ^1VaOw5#tZ@)FxnJr}=~m(|QF7 z$y~rDQ(0=J{3GSyGBi?EM_l;jPdX6|RFxbREK}pZr!7@jS%^hUciBvo=+? z$g(+6y|Q73u<)Xi#3Do|WsQ4@F34$xbwI*!sFo}q%67LHF(Gx8 zRVE}g#fSdzw7EHtG8>Z2wPyVM61Qxra;GIm=izfy8NA_unxt&su~NA`ytm~+G$YO$2+aXZ3wrblexbJ9JFiP*xcB&tM4M2+!21sd zMreH#Z$60y=}NaiwoZ>(LH{k|5hQOm`?NmMl^p*1iJ#)I_=NJ^Gi@GGDQ|7ph=aGU= zH+RI|2+3SRgq(w8Aj+dE!$`C+6n5UD|6bmV@zwA#i8dh8iDh6j$=xz6K+_TG)v4i+ z_CKBHHQXG3Wd03~YweV(hWOBL&*f*h818+{-SjC}U?-yNQseB)N8w!CQj%BJy_q=^ z^_?ASd1>)v(~)+@_XL3*o+>%!p+R;{-#FHaFj8w0wuxc|kuti_hiLQ{K)6&#N&sC% zZ*I~OQOb@!ane{KMCbI6!JzwrjrtNmWx1S3k(Ny*l6)GNtA|X| z`P4jHer`e|FN4+tt(w;hG6g>meZ-!Wd53_Tu-c&OmE43x9= z0O2aEd*9AaDpddj%3r7H+m`$Tv<9jY^*-Jlm-(;VxN}C8Q7Lw^_#e^8K;boO3jGk6 zS~302Q3O;pyaSBMW1z#879$igB#w@ntZN~%Ye$Z-{-~-bs2>heSK;X*$_=o~%Pi1B zm_k8@+rnjUnj%!c)uyxS^D=TjIbWN@N_Bt8TyT!0JhE_mPCds z>;)u0b4+a5_~QW&8lmyofGQqNhU8*;=w}@!1)sL<42b#=JD)YeR6i$6CyUtKUcT#< z>2K26OO1aBFva9K|KY&9`=kwP9pfP^-cK0>{f*IUw!~@T!!CH|nLm~sJn3UTW}Z!< zE=`u$RW+_Wl8AVc!M$TO^g)|C1eiM3>ic z7+vtKLn>0E;?^YPD`4_nTsMbeiyNv)Y)~8ifNzjvwye`39fjX_S9z?G@v&6m`SB`_J^6Jf)?|Pt*n;WR8cCw z!_^mF?cQeA%73f$-`5PsB~u9pQWSYlzewer<;eTR@<{IOv#&CE`|~+i(GHPuI1n8e zb-o!}g`Q(VjZ$Gg-{xsE!wV)7^S`Nrj z^mxDdldi2>rlIs{#1nh&dRS)u+%yY?uHgd2Or=5Rs8Qtvo}I4DXz=-2^T_ZxRl*TgIv<&MUul`dH=SR5fXRMctD#25pX zpBaIoFV^oh!-PK`>RdJzWtH{3E#(=ktiCld8DY}GERCzuU5z24)vOj=Dzla=BN zy9~xqxvm@!n2x>4TEXPuuDkaP7V*$pedT0~SAqZ`f=F+W3 zUfN*mj7b?BcCxtnZ#+gu^)*CBz`T8$b^_YiU_Mx)s@-`D*lnVd7cUZDd%@Npux#MAQiG+cIE8=X+9#vH0xF>0~+vPW&! zx1*NY-xxxU=`G>t`i&^}yBtcV{rC>Siakq_RSj8a)I*?>wRd52(2dUAoHj4b=Sx$} zRNJ9WR@Pum&I`p6@XFEg9Hg1)-9}F*q^+5=SSmHC!c=XQi|Fpu)h|QZBr&tD?5R!^M|9d zG!J&Q6HM3wS+LSP zj=haDrmTS;{d@~I69LT=S8o!cCpD*(lo~gHZ}|0r&OoD{c&K6ZjQ~ZEIGyyTpmlXkj-Uthv{a;1=0ZYc*y$-O^z}S zo(wj3`P&lsPBwD=cY2GNUv*9V+Q9lyb_0@1njLbZuz8J~OCN#gf6j!>k;Oty5;Q*r z)Mrj>mq>htt_Of9c(?>KS$$x~A0)`kS}m3d7=ITR%XT_F>nqGq*N=RN5Zd~&HWPVX zs$J3(jOa`?BQ45W;%Nk%*ud<3>sP{qELN{hb&w@}7M|CAwN+kCnl+wvog=84-|pzT zQ$_{jY*k+i2>2au3TdfxTa$18qh>9bim4F=Xp zUGcIGChEeW2EL=aVtLj>2GlMtho$g4#Y`2{%f$ zXQD+}^v1Sr+qP}nuGn@eHow@mZQHhOCtdH|5B(#~8GGzK*Iesda0w*VK)- z68|j@tzDWwPxVLj;V|j;BKp&*lFV1yZTDI&OC9E<(-2bQ zeN|;mJ%0rHXQ_?&Ja0THX)xgIc+R+>@-K=u-d>IDlMtfSAOhTjcR(_5mB7WSvLKcm zr_Sme(OQcqU&f;c3_0OQt6>WBiEUH4dw7b4$fY^=ZM9U3-q(_b8FUV#aTsbx+b#!3 zO4yIZx;I_a7V%tY8?0;lD|oM3Mtj(V?ea6@MQE36cWvF+5fwQC=L-+gc(jo1?rspr z*sGy)WGuxJyA(o?bcBPx6OuHfyifihS@Oyh8I?;144pW~W=DtZqb zUJMjsZqgcEX`I=b-A2Qv`N(0wC;C)1J>@i3zFPYgpx*kU%w{rC&ZASvPoU<;9I-uE z8Rd0H5AG9X8~!M#DIk9xWe~V3Q2DIBV%aU}1(LG&zkjQ%Td@5R0jg`0A_q5>oh;fr zn4eSTm^IPP9Y@FcmJHoSA=D0d{^#kv$~SkQ28z@>QCI6wRS%~V9BsFX^J`381m5;tc5FoDh!J6CdmrWPcD}^hVPji0Lq(OBPIz z_tF{5m(ixfVdZ_R3e6*wiP=oQ%%xiWEm!HM>MW}-t4E{?(on@LV7LDbU!0l+P1Imz ztC<+QRCk&Cu+&>cJSVE%Xb!f#m3%{XjM%JbwKlP=r{w3*%YC^V#A70&(b zIXh4<75$Wmare?1xV=c?R-Z@GmeDB=p~80P-`DD%zf2!(LdLSBd3r5sFXT?~J(zzP zY{&1%e$B&(CQP#3i zv?{SPv_`4-Zets*(aQDm@Bx|kTkK%j>Q$jXVc>6(aF83A=-OT{^AEnwiCwE{7gyP1 z2la7u+WgL+Z;()zgg5&u`==^!8T(a51V}n0+EDJ6AF+@0>iLj@~fY zZI2|7XU;7&3bo6V?@Df|d+JrNH|9Cgam zpLv#*I4KYOP}U^eDgDH?>XQTQm&XJAvZJK0iN!%_h|%Tt)ey$>eEK_~PXeR!opU6j zAVeUpT+;Fu`-;Hqv&q+D=(FR3PP8z;HDx?p!z5-=G#R<% zg!YTGws6J6#S3>7{aza{2yw9EagOW{Y^JpKj6rHW54$S{RMbZ`n%x-*7ai7w=Bho6 zvzW(m+0Mx>mRi(4t!*RZ|=4fDTa9mHVF`!Vh7=>j6N_6ex2xE2=IU7 z9w=+l|0X)L+>_%(ZRf0XxgN#mQ#rsbGw`op(ONT!yE|V)AV$QD4%MJ}G1jhPXWMBf zoGr+4Djh^oEBpS%55k-? zE1AQy)bBMvph;dAap6+k@zRyZ@X>S4rrT33g|UC3i!{@?YK|p4Az4=U%WH58et0=) z_3Cveo`OfN^uZgv+Cua|E3J}W>#<(-?-S-(52&s>6iOS+>$xQx5p^|n@b$%2z04c( zWcQoi&bp}aTgAV*D9l&y`44vtH6zybFSIA>jJ@u1u}UKtB@PbaZ zBw7D07SovlS=VwRxQ)MHuB5n+*57Ay*d05THjhqE0w<8RS9~0o-7(wH9L__m+M$c7 z(;BbVglqnEa2LE58<9NyvZfEo(@B~kgHuE8glkNBjK3sVS*WagR?*Mp0CjJzaGy%j zZO%{nx-MEr$XQ3lsICQ&dUn*c(u@UMPwBO6RxC5PgCTcs1s>?OO65|YFpt2M1S$1_ zk8Nw4xS{}(gz$%w1?zcrI4`qjkH3qH7heC>ba*T5{;E(Dt`Pxvc;6b8P(!=6d_Mr8 zuTy^e0nrGb#jDt!LoZ>xaE7Z{g63IVZSFJwM9+{6*gWfa)^aCzG=!&;7?EkbeViV+ z6GVN)=EXXH@1&OO#rqBR(GBU?H=8gFh-S|ocK%yy+PKcK0>LnGe`h7UTOB($NPFbCzc z>M`~B(a=$bwp-Re0PgeAgdKKB=unZ)ockntS%qc~DEqZovAA6~uU?cVba4ODWg<3) z%aWErs|I^98t6hSZdhh>)PnD0Icvq=n0O(j2LPd-7(~RXE?{p+52=~IL_e5z_haAQ z`DreKbdFmT9r9s`Y=$J#X{sfjDw%s5ShDy&*`F=D5(tpDQG56c%Ya;8{tlUf*E zzxChqo|!d`&kxKLUakT~Qz5ivtWQotT2Ijld27XyZgH|+(AA1rdx7O`47d>-;PCfn zL>5&W^vJ!DC63*jO&{!vYs0X6Z)s5i(qBS~A6=K<6^ZRZeNxgeL0! zq7dj-B1mbO>e~o2YM?}+o#28Nd)79!H;EM*Rp)=z?I{D41k1hMKe8N0+z~aF+=1FV zCHfY!YoBT}`<$@>msL$=rw98|0zzMfFO0#&ItBZUR&WM;g(u1b9P{kG%6iQIu`aO1 zAXhjs7=1OI(Ip#VTA(h|>W7~r#k_T-CxKzwtaJS>45ymiRd?r)jPN(Ceeq3YFI4ur z=4vbWN|@LTS}q1;M~ST29;{|`5NQg_odyZ7O60vQVGe=|aaSbS8U*_%X`qeJxnPwg z*CYprAXBOJq*iUX+Q(P;l>##&<@>vHkF`;W1Fuv=u-V)19u}(Q=pm$&*bu@Q#>O^6 zD+XD4s?+z;DZU!^$yy`|a(_fVv?pJC+lH|s<9hqN1?iYnmhOa%LTi&dVdQx{NBdi# zkoSL^?LJpiYXiO8PYaIE7q3LiVW))Nx~|4V(!m8*b{%LObAgoq`7l@0tBwO+Xl9<=Puo9XAt%CD|Y1o;_w5) z)NCAiXtrX==etDy~^ zWWXt5*1?(_d~br!q8q7&rWVRiJ=Itqq6dBOICS2eplwW-(Lr{}B1(}=q)&Lo{^rV7 zh$;vE#h2kS56MSJnBDm=E!0jm)E@+Q19E2=loStLD55JKBWw}37MeWCEaPFP`JOq# zk22mQ!~a&7^Bo|1VRX9;!ES>7k}uf{e2;SuQf32Fz+E-!|I7fzI$)%h$0k9N#{Rg}H(%F90zBNl`1jl)2O&4D^P$Ig;!mSwHTM%Li=vrIuyfTibSZUxJ9vMF1 z1(3%3UeCXXaK~(5Z+;g@S|DhzhUOIVJ6?nZ2f~)iVjs=^xg7kM0Ab=~OKGBW=~5@NaWCOj1(eF>=AKxA`g8gjvN?D=q8+NJ{w?lT1T znhchL;W14e1yJ&|1LJg(g5NM}V2#JH71mnI?|T@3u)S$epkRJi`3iEYVDh$ zrBa4#Hud>Iblmr$F~C@m6h!c}rOu{$P>f@P1=H+Kj_@Ai|1DN>fT$Ct^zPI1Vh+(z z{H-Z6n^GT6O4@o1zJAALS7P>XOvv_jMFp;^tSxO&cPu~ur_-p}upv-ceDP#Bp8jge zv!yL_!QF+=LUVGBN$XBC-52W?VUeR{T;v3BGR{H{90uq;A+k)vhjxpbZpaoo+sV9? z82x$i>FRT*tO#<^pqc=KG}in_C8q&Gh=bvF(GgJ{kNU9m1Qn&t@|Qrx?lZCD%^Fcd z2UF)CKs0*<#0tF^#5i$k9WIn1yne_i<=eeD@e62t=geZMk9tK7!oLpt%6x0972;Ju z8Bj-Xyd)A{CP0DeADxBE<#ZFC=Lj|^{mF!;DFQn?tEaYc31KM zdVECSVXM74UpG&-yhTk5jaVC=1Z##y6*bpPu;`h=(FbuRb(}CBXw70y=pgcRBUgyd znc`K^p40&dsZquY6aT@%_Q)o~_Q!-rdw!qfiaM)%j&!fbxu*s?k?iCM#L+fSp`_Al zThrenWoedUMFz>!Lo;*(Jn3e!UYJi$7Cf=p5GG)4Qk{r?aH{i;SM6f7VNA}2kz@wK zIW>nS2jcXTJpT->pCUVmho4SZBvy?HrX`FTBJ(WSPmvNl{WKyBldc!US_;V4fKcj^ zXX!n=S!hG$>EJ~Lyt;9%Ul#mc?2 z7e{pwbvp9e1I9r_i+m(`^;!4*^CL(TR1dOz>i@R&9Yqoj%5-&CVKL{2=3TGe>l-znli@M)^=LDhtRFK=@`f7S+1+GNizZ#P4y zt_>KfFER?{17?_b`8~fIDnNe_-_~Y?pSXX`1PjyA63~|w1>PBMy?>Q=KbJq}UJxrH z%lL_&E)hEjdT}~qXcQz91i-b>|LbehTeawi?}^4GW#pVR?hm9rK`@m*i8akIJx35a;l9QdC{r{_zy4KT4+8jyoTdg(xs$;8wHQHj>a4Igs({ekCA|7{C!xb4Z;vk3Gxop>nPhzL*8Fy3JpFO9ec0Bq#w$M%l@Jq`CY7rHrT5cn{evw&?zh)# zcDMg({|kAjHsWE1IphhI^mo3ek75d|F>j38Ywus7iI=!kP@D76lpPaZ=JVgS30_kg_Xu7QYw3Y_Cs8~&|l1&ACH54V=^9^g>Y(K_X$?{oL)#_O%BIeng<=L$ZNXqQ*n*FUb!geRQ1LcZ*i; zco>%~;Adt1&Kcp8R4C!-7meaZMC&Dr$@mL~$@m4qbm)l{hZ$X3}3{-z~RKxym#X{b!~-jU|0>P zu*q3t&fR_qp~U2`HAx10J`l7%yMI?>UbZA^V+J)*vmX|%R|6@)mu@%xuw)`|K6%jU zBJ%i==i+#HPJQY%TtdU`%AgyBKMaF;hylmf zX4^pi`a|4{-QWjPe4HNJlrCaL3CA6&kNxh7N#o%BYj$$wcL0sGy7b7(s;*@}(wGpz zO_tD%yo`-|Yh2?+!5^bv&JAh)&Oh#}&xdEgu`C^TIkBhMIb%Yp54{XadmlS*mfn~z zch5}T@qsO{;UbkM;e33!oStjcxq0DGLtu9XC28@IGK!CraTnik3BWt3h%+EIJeg0E z*fVYA`wt%X(d0&RyK@)Y>!MG?#w(&m_ zCxwy=wS2q*|14NrwHw{oH}>9sC)xZV=l$Fe_iVWT>0TmOd+?h3r4Ejv+R^5CAD-p3`vj1KWP6t%#xQm>IA@$$QvG!K5+&;ViY&8tiE} z?bY=18pIMQb@0j6M0YazKuE8AS=D{Cvv;QOI_Nr!?Q1UZU?ErFMk=%DDvYXULq*}| z@z^IxNzX@dGZFJyV!$Qyt{%a~YqK(d(rT?%qKLN3Q8E~4vq=nCz+I)aKe~J7bW(zz z-M#(HlG*Cl8(gUhA9bG=_yDk#a%wTe~WVTg!@9nfaqpV`9 z!fy=}pH|##cwuJgJTyf;J)LmqMMW`&M$)M{-;q8%*ydB0|D$TnJE>GCrTi)QzpX6q zM&OPqW4k~_Sfr~_{O5y%Y%iOs7^j_kAdWW?+`mV4!v{zX8H zXo$f_J@Qbf&MD!ZmsXoK>*!14C~@=Y=z`qmOq9i-kE$6txo?6>i(=nfhYX}b`h=|E zoL7GYyv%{sRQ`c>v)@`*vfa7E8A$&z(3%(z`J@smUR^AVpoyXPQ$P@KVaqdn)fVir^=du;lo*`g^6dB< z?1i(hQ$eg!ek&*Bi&~wZxWmdEW1bj}P;safW_%dMRzb*&F?LXt0n`}xH9@$Vs~*(H#+TGWlrpzDZI zO6s!kJr2<;e^%}1-KQiS9F@=>;)~6|*jpeD(t`|@x0kkJH1DpuZoWNyB zyNP6O{u0=7$b01o^Of8c63SHmMg>teunz2nYD^Ndu?6K!V@Ina9LXX3>k z?uBhJ$XN3`O&eC@!q`->F#OCgsI&QL0F2@9BgRaS4gy0a1!gC7}_b(^Gfb3QALriEEq zz-T*dP&HNsA!jlk8eFq&jQ}Y4XfBaTydVJ$XL!=;dr=28O3UQmts_vQoO`oixI#?U zKvysdfWp9jJ03f{X``+E!Zv?b`%^M(2PdUUNE5zMdP&W$iMOr_`~CdLZ%x;TObrN? z<}h{X#5!SlU-89{ua2<20^f^l<2n>4}i23D$VQtSj!8mB7X3_6k(t+z?FPTNZGzKE9!or?$XPC9Z z4RT41I6r6`!R9OsRoHFDQKmVcZ0Qv3gD)uaz)k0+H^rd)DMO4Rlc4xqTdh|l4RW2j zu+b+rDD-dR#Q_$#m_etc0m=TH0WQeAlKmrGG5Axi?ecApKHM@deweB*8M zsUKQZg|>j0ATqe-YE^kFMPwjYnJ7%eIh1eh!@k`nSyW>|J@m^XHXb@oz=1N{gPU&F z=)%F*hIagn#cq3Scb+@5KJX5aMk(+?6h!wk(UMMqQjvcryV6NQ)%#P{uR5NQrv@3? z&FWDu7lHJGBu2b!`_wRL4}87o3g!>4qGb+JquL0y6R?yi7zQ^06mu2$U#N%UTVeDT z6lr6sux}IzWTL^Gn*xLi|Jh4Y7X-!x`;M3n45oe(>a`A;mLNsovvd5V?#1$MamRzl z@Lm9VNVDB#<{R^?MEO%fBu?;CG9y03bpGZ-9q{D~!hW=(NioZHo`A>Yr|Ii)A<@kd z{8TBKnF-76`nv8_(7n+bkwq)f1G)5Y z@b97#XZ6H*u(Y-T7=5HlKWVTQX{w^-KJ zhOusih9-^gnf$pk_+L1gV!{D8i@B=AY75<7t>B6QY5{ovW>Td8rU02dvnJ^;GJ~j= z>Z7yuh5p#R`^C_eAPWNpXXV2IO|4C4X3dgS>l4duiwmj3Cp8yj$(Ey94jagr&gRlD z%%x6?_%cARiVE-I#gViUAD!$iSc-eLZuieTR>M_CNavn~d8?A~F-`vHM(zsF0{vHA zYn6~)PxJvZrH2q8U!m4(W$%a58%g8oG%OhadPqJpKx32#pW0Z`GhOOO-#ne@|A-a` z>O#GnR*>0}@Q`AZ6T}sMqU}W1%X0N*e1mf$`#gb})`Ma|m&=Vjc`Ez*D!j z2`@t9TfSItaJ9sJsmp?nyYNMB-^=skDFY_;mHsSRbI;^$Khl=>Udkjf);IUSxGe}W z`@_=V`rYN6SVmY6#n)osWueJmBY1VC{&>-?`!dUsvJ>Xp*JLi4VBsW+gh>lfA=ml)%U0^EFsa_${pz?|tsA{}eZ< zZ^Q8M@t6Ni=j7}9Hplt1se1G{ORn3RyAzkI0erz#PKDq&@xqilrDxjq>ske0tsL%R zjut7{jW#jk2E75)he96u6CAbj@1`>&a2FpvXILB@7YpVxcU4-1POB6BfV(w=+h@;C zZ5KqEX79G66t!_|qL*lXn+^>*R+&bED8s*QfWgWGC~g<}cGL|qt~kCCu4!cY{LrI{ zs-$`0oPV>abrucN~ak#nV+(H3Vztco<%uF-}@KejLco@eT%JW7oc_;_|~fmYYv zZuw$O;uEByDLpA@?S^VHp5I#dF*yax2#4TeuYI3bTzx4LY|QEcl@Lex&>@+XK81=` z=4g`~zqh5j@n*ZZFP@P?P}UF)Vq#Kzf}2w&V7wBOpoWTJasyd`Z#weHWp8zDp(I~z zyxzOi8RC-KW}1c=JpQ2u44 zln%|9vY1iR@|}?xSSyA^)GonFXqL{JNd8j^j;-;NNyuLk+Oy7L8ZbbG5JO!t(bN zh>3@HSbo|4C{D`_3n-mPH~jjP6(Mwf$6$3N?SXm>P#SqH__)r;)VXGIO{J~`P_vqROyQCS7oOX zCM^YEbgNlx7fhKRd>F2>x5r7yL!k-fb1a{!^qVQ-`Z%Ss+8(f+*xggP%Z*3p<9OSL<0NsZGCh_xXmYB3z^ z1?Evc9Jydng)n*j>o9fX+h}mH<<>!ASjHX65J>9@cu;26nYKwgrfE#?W2D6?zTXFJ zYlFA_4D8BiDP~)xzFoZ$&iA=Yp_k{_G7}DI<8biYs|m!t_^xw~K#i%E{THWzqnpHG zvJ>JRm|8NI38$g>h89fT+ux4=Bv#9EHebx%z4e}$abR33=3ym|iZ`LMx(ItVcdNWm zI#99Wl_8^2s9*=%!C9%cO6aWwf#G8WILf(M(Jzink*s1qj+Pws>0GsI>{MPB{`~h3 zML$Y9iyxNZL-CpUaL)x>F>qX0L-MtkQaM+MhH%N;E$H@ZL!fjKc(x;D&|jbnVq=&<_f2TEnJ4PXM+ zITQc1<#S(Ip6bwfDf{A}Ss{`+TT0qj=O^-h)nsr?XT>tM>I6F02M_+8Xpn~QtV*g& zg4(IyyW8g@koBx$+2&V9t-R8c!XogT2Cvf{=cq-)a&J=4mS|D5fJMK0qu~m} zq>IqZ(-c=M|92=+$SM%CJDD8%Z~=islE2Zrw9yP}AdpdHA7@?vN(N6q&afc}X(H#; z3s+}ds{^$1rRTQ`GNLz=4~qX&s7sHVU3((IIVBBkJ9j2>MzH7OLbazt1n#nh#uu+LMU;L^qdy(zqfs-TR+ye4Mym- zS!L%<364|rsEBF4qP3kb7iQ8Ir|y@n>y|Zp4I1?=1aKdJJ~4Z~y0J<__0%1WPq02@ zw1QSbCOXs1pQH!cPt3mO$*k5iLhrp+}-#>vkkbM4=sW4M#Ri@qGF#RavUb zrn5yEseW7A=5G#n9-4K`j^*-Eq(+G_#vag#jZ7dPaka_RPphyuhM0jG&<`AlvT*IV zzXj_V5+cpFD)JpoN-6|XPsl4v>7)MIQYW~R|L};ybzzrtx_Y1QZ_0>4BnLBuC9Glu z-bu;p?W%qN!VpK*we4A zW8Sj?Tb0Md#a|eJb+(gZfTFd;-Fk54i>^wmcgumQLEbaOj#OiqXBKjCBI>_%CF4`>YKmd9{@35?0h* zX~r6>yn&FZWp=s6E;TA|ZLgbZEim{1XC@P@q7x=Mm~!fb{?0jN%FG<W)ix|DswZ7J;`lL|8)ix+pR}7A8S5rkN^DTgnfHi@9QCXP zZbmcq3bmH`;a{h-71Ue=G6;Le*UPaVCRFd78r2R5>lEZ{5yoxWt}VG41fx#U>~eg{nY5)mVuk{ zxrbD3Mw|u|1Zu*rV>8FDyfvr-e?&b?@Snd0-tV#C1|R=Iu9E&yJun)cRhP_Aw#Xvk zUT)i|drov{m>oyg=Ek*aC#lUPU7!2DHD|O%*)9GBl{)3w3;7VM3bf z2jA6ZJ^9{GF$JeRGz3p~KwFo^bj7+;d(Y)X>UZY#2&vd%8uk1+&SHqfNT+psdA~e* zDBRtHg7_^QO|i7&al7)>-$4<8Aba&I9S3!z1n4Uz1p`P2s zR6gt}gFydUFCgW}S5ihYlaQqX@g9Sqv`ksl`7{r)NekCjZT?aBTHbk1-rv^!cNGX_ zksPUGIQADnj+yxa+q^A92TgR7DJ&*hf#|zSk^x?!6J_AsSgAJ&$b$7mJ?$aku|A;( zpAwtYqO4gadGj|>VB3f^v5^|S#FJ~#UT_D?Nx5_LqExNvF_GCM5AH#j1*KLXx+%KO z_>GfIp(}mssT#-Rj_-KlxvOSFX@RPm4@ron@*$;P2HetL^f2%nfmUhy6pC~6)$%u54!p*-8@GLvX&Hzfj8TtZw(e1$|JJ{OJ*VhqElw(pTNGXH z3H9k+MZBv{F5K*b?lKc)w)t3{sBINnnmY9tBZ<`|I+j*#%p>x=m)q(hPe)#d%l&LA zIPIDji&(UQr7g%X{^e{%QYUh^?5Tbq&}B)7on5>I%2MT~-}<~xr7iSKOrER(D>}8G z*_L!{n$M=DBp?0xfY(S)f`6T9p{rH9(jtm2z+*wljG+sNV9e_>DIAY<{vuz0w^g>9 zV$VPOh#g9!O!X-jCyWaLeL{N7>x`;Ap(HrKrxR+YM+yr(?a7AuQz%NZON#K3I3j%4 zDAq#NEPlS(fRc=&WCOd*O3STaPAwi9M_dQA6xqi-S@Rc=ji-vFs+qJM?eV{M-M#Is z$VP)}x0qb^N}V?4pb?{K@=%NSLL7Z4R#bb!7%(F4@-_r#(-d38j1Omjm2%v=h~mA? zRd9)=g1Rz;Me@o{3rJkGHI2Z{UkPb`vRj;}Po+$M*-<*9G|H5;dws4EXAzFd#aCTx zJ(-)@?xi_Q<3YTt80NzwSJwj_cWzdslglw_xMvB8&7U^T+;kSve0SU{vcY2vaiQsC zPCF#ba^!3!!2atIB56AshGMyNiJ>-3yau zKeW7kQL%~CJk)9VF2|AXU)&o(o1S|!HlAc50?-+2o5aF@UF6B3gca$rZvnp<437ll zti`%cQsRVoHVF9CMLm=bU6Q28q+pdZB}=&zu7W{ip#3RqSpu=9KkjZe(r@y6y;Cqd_)aXP*gm z1kL-3QOIm}!tDJLoh<}TEO*KKU%MiZ+PPAt%+R<~_+s`g+Q@dWakE>8gKM2ceatjb@BB6O z@T;KPT70Pl(=2>fE@3^Fi zt}l+o(ox$y>pOobZftXii5oI3J2W5{GpQesGztIoQyR2)iOnz+(nEU-1D{W7hl4vkG1Z1FaW z70ve{ns!t!HC3j~M3vho-C}VZ^8BkE&R$9cf{2jO^$kvo{5ZTyyrE?O5oRjtrR#Bfd1C&6Z|HA_ECusX(_)~i#=H1v z3p>Ee97AUT=>ML>x%U?MOJ)i+wvbUDV#TZG*)H8|mgnJ#nd9kT+hMW;!ZFDcTjr{laSp6d5n8-Hq~UIB^tCnl=(q(9PDf!y(+8DN`2q0$@=r4%8k z2qdU;!h2<~ySRP&1SglE+<-tIMY^`?{5=yoKmS0vnoGKTzXa<}0rXXWb5XAM`o-eb#rZdGzy8gG^L;hkzt1a(dg?)T=JU`?b6Jn1 z=jWX?CN^u+ijTD$*X^?yPvAc8&sjFu_kFBD*G&)osxJwCJKF9DmrZ&jL21e1zbRUh ziN9(>6D+B6t=otH(D1gNU{fkusn`gOOhO2?#FGr-!vJ^7qcUfN!PshWX>9l#yZ%gC zcB#qfj6>wx2Gydqm7ti2|3k~I`{He1s$$|v7(}|&x6{-SNVa;p6$7bW(z<#_gG@X?&NyFZ0LGu zO*i8-?~?8Fq+P{g&IPOMQ3J6frEI=44~}rvYCfMHPL*~i>_y0{tGOyp`@uR(25!Dt;{wlQF|zBU+sZ(3l6G< zTogboH`=b3Q|;6-W;ZEKOeLdgXSc7I)9Jibyr%VfgG@?-OntaAg*2}S`mhSshQVBB z)O|&!-~>@Btj8=-c6XJd5**5Wc?%Yf3Rr63z)~PeZTk>nMDKvdhA4Z9-TJ`B8JDW# z$r2xqnZN@ysIXcGbr3dE2}eA$X_XbMUrZr6G+q?QMiXSA2rZx!HmiD`lbpzX%f6L2bl(l&2h}g)Tyd z`y;Iz@j!wW_&D(oUoH*v$c{((J8)F!}jflw}>CkRbXe?=f8aG zCa(JJvBSwmMmhL7BpvT>X>^(6S%LTth$WhwHrKs_5=;6+06#ljhD~q}3ojV*=!(2l zE#~Md{d2kP;A6a|AT;{@LCG*mAI>dT)Ir$ED0#cZ**m&CU5)oT-Kq#rAnoOB1Qa!T zLlt)j)Db351D*ux$F;CZmgksm-?@gJeU=)~v<)srdgudohnFA?A>ClZ)JyHnmE7WL zmKzmTKHIPX--1`o@^x@SyaH`I`K}Z9YKJv9&MF9nZhJ_;iXko&2W%Vnn6lOS)DfRg z->oy$3387M!GDi=>e&DB?}FbBr35$A#Rz#ItP(x*`2;_G15DbLQF$=n`#4v7jWD6< zS;q5kI?T%c+9U1kRUSWhC4Vr=Yo#~1q^V`-sFQ8%ifHUgjRsW`XQp&A4y+>5!>*?@ z`rvL#8+dTLR*umss?u1RsFKFKNM)eM8SI1+965D?w}{m{_5UVoD=}VXoI7?al1t+c zuk;(Rx-ZH(Kw&gHXK(a~!yK46^dPyNAm%xB*4Tp^|M5fHqU;eTRu3BhEdDK5tTYI0 z(!e%fmTw_Lj#LZ#;0I0&)Z5feaQP-gXO$;eC9Xln+I&~O!)-CJ=TW9lbQU5jStcOF z<>Kl^AKV=lL32`Ow!lr*4Y&EkX?-ryV&|m)OW`Ci4;9$E5G7b9gNqIa?La7)${=Y= z$UztGRoLw)H^J|w8s2O9F1CmW;vh052;5{@V%3>D%X6ndwmB@8UjL=oiIax#g6*ES zIkH23sGeV3NAXm%%nB~|ZRq9RYu~nRii2NUe4QMwcEwcF+^BW+!uEXL?za+zZjX;f zhjB7Bxx{@YQ-}1YBea=k$OgCEUq6oSL(7`TL0G2Ej(Zsu+xpx?eNzv(ph=(Y;9*s_EhCXJ=^!jBHvtcA* ztsylI!-FBdRXT<-pIS7g-n2jfVEh! zx9F?w98UO9MLqM6a6EmoNj~u-q@I3aiREu2jIpE^M4`k??uRh`W6k|!T0t!vxpV;P z(i4VM%x|RbBk+m+pDP`9@{o%)3+-GRB!URCcqOAj zdd0+|Kusu8q@htlGCpZQO$r_f$)TlyRI>FO@aQtAJyJTkjfL2sbYd?c_tinPUvw}i zTD$3SL8OtdKdTyjB7^j++wtI{Ph)eW{@OZE0XOafcevkxNGMSfR81o*P<+B;;*f~} z(v7&37(WKDdMsIhgHY4m&M=POZa`r0ALtoNfNpojif&!OBL0lgB?n%%@NTRnzAojE zY(1z%(|A5UWd#U28J1HUZ)jZ?7>OyTt1b5ULJo}j!Qt)1uMYeK`NID&c1~NOC_oNv z+qP}nwr$(CZQHhO+qP}{bkBXCd6=K5l~qZ0#uRstoztBrb#R~$Ic3rO1CW(QSBs5^ zSd65FDdW`n*erSYeC~*Vw_w$i0s$~fqS`c*{EHd=i%PX?HA;vnjCqIQra!H|Nmt^K zgi7dg#JU7@8FbYdxYb`Ww8pXYSD=EhxEeV-!}p@%5JaS9UY>qdzm?(tB$^FqgB(JT z+)!G5%o`G_e_5y=@R>CZKsh~kS2;Az?5{bYk6Ywq&>KsOGs0e5LaXouhKRcz zU10c995e31S8+mcg4I4$=d%CvZhvLA&ohdi1hwi9E@b(|>L{g#D>xKj`3{n(of0uj z*9obg0p!~F`TolvlisBapE;GAX5Hy0L_`!kwl>(=8y2G5hNGBm)p>;MBhqYdJ=)pb z4NX{sE(OAJQ2`V(hCIUUww&NF2GOi2R!S$8lSomxxv%s_RTv}%427j3 znIXX(aY@qGd<14qcSOf)k#t|8JO9!iC5)cp3#`25Mj0Uy?ylKEMRA#8S_7kZ%G7)( zc-0+0ILk1BYk2oR7Mlts4ORT9&ss-p>dQz?(08v7MW>lEC5sfr4wpKEftGprp z^G`9c%ovJgCeTgw3=#j4GEBgLKz}>0?DH0#pI{nk)!)*C>a7zSJ0>!PmGYE`@qO9UbBi5xn7f_Jb14wM*wM5bZ;CuHjy>?*ryf-m~=OR z0tCag=Ps!+!@J~3otNe(G%kb8A~Z{qggtT;M*$Lpf#(|&AeN{_2U~CxQr3)uLO(9PNWadtvbaIb`z*Ke6IE%}8I0BdgtHBs1JQvVbd^k)QaMp!0# z*OgrJ8Dqt|FwPX%><(kM@nV^)W;k@zKn%h$iJ!3~JpMh!FiqHf&7Jume&_}(07~JT zUlI-vr3(udh~cTN1~S^Ow+W_~EPkBU#Os5W{6uJZX;SjjU%>fNvB_k4R#dGL+>S4iV)DlL#Qe15y2Q* zKz^_yL?o5s21BN44Gm%|u32%CqzsE=8@h86nMxt9P!S%1D=9MxM_s|d%ESEgG!N6M zze5on4z-+qwUgPN!D_%cL^CYYEBrFe#KZW(M;d>D-#XLgqRiFNzfZ{@S(HatWtVt8W5G(ONi1`aW}bjNmVVSYBPN=< z)GeFDApgu83BO}CnI`8{4lu%2RxK7De?6`Q7^;+uxh32yGAIh| zDz_~VW!G{}O0DuMdzl;ctQBfs1m6>EHn?d-%AI27zrPYKDCXa>k_uAL!^W6UNCX>V zEM(J-Q^83)M>+ct4qB*csB^+iqGTsU!X(gd;}s|}&0?wF5%-iL2%N6i z79Qc6=42ek;ae(6vU*HHGZB#2txBP^z)WfKv_d=`OmQ}k43mSik?w#WchZdD$#{6j{j zTg~Eu+vt*a!e79hmO8m_zXhW@w*XV3ij2-Ree$xaSE8;=XhpF*6s0 zukTjqUKUy%3+lVxuB_!whz$bQ%aBarq{sHmi7!MqQMoxZ)MulT);HAx>0$^e7m{*e zgoDPOV;jD8U=#RSpG&{J0+~dhU9WBaVKhc<(Qx}g#8+&Z)JjT59>47oA%7mtLum`h zb6lOQ>MJLC>)N-w&i=2CJ~9SR`$?=>DYVGRS>iU8#y@%~&afEdu4_9i=MkO3jg400 zbyYj>1JP&QWbvPLKkM2}f<^AUv^zT^g}`bWackd;t|^<9Ndenh^{fBTk-^`T6s&zW~-1* z0u@&VR}QLKNIkOL-&|uk@%6Oq8DaAk(#vYF5YjEfE}!WdXzze(+FvzV*h|TgmK-Qa zi(;BNewk-caw#*egheV%?-&eiT;~N_7x=~3fKk0f>6?+xP_2BQ-dmB?0=Jk}b6}a* z%QoHc<$(`qXouBsQNvk3bE8D808uCB0IjPKh_39*6_N6_PivU}?C9IFO92R5ef5Lb zC7_T^X%8{Q*mfaS=0j-hdpaFveGALkS;wuR#d#Gf#jx+)+(@l~Q?xwf^INIO?cSVX z4FqyT8=HYki`*y)y|1XEvdqZs5}+nzFc5S6M@~Zt%+C&-*c@}M?uWCK!8s&F;1z!G!N%_ z5BQ79It4Sbu5-RQu=&c;-S9qX zISp`DYZTGoGqx#VAG+E!$~b;4F0%jPOH zbg{!;Rm&AH;$eC#wo1ogxTl|GHho@sE6=`N!Uk~yw5Ov1Nu+o)InX>Rnk<>vm@&s@ zF^#Qg9#e)hH5GNlKSLh6^BWO@)IZWf5MmjMTZkR>X@LMW@ZhfuG2VxU&}q(H!`g_L zB#^9~c;rJJjZ6J(TnC+e;6&*t0IwCpEU0`oqPL7|2(mV7R3lF?sn91TJT9Ax{hn53 z&>l9tq!mCcTFHDd9R1)<%|f_r_an)rCBo#wvLDTHu$~{4_gtt!Wc+n9=&ZCUDWaz? zkg);eBPuxRF*s;9_GZ`Nc4%#82Nj>~mRxWU1G=@z+1WihYekAq5)2Ni%yV4)clcno zbrqo*IAN3Sxl!*}34L#Z@{YZ!xRO4M6Xi>i*F&&z?xeTbnz-jZVJ2qvtrE~GNo3T2 zPiSs0lK_@nfwy}y+QcmG<*!E)d02o!0|=npH#)4T3EboB%*{!HFxiTr8G(-63~_=0 z=gg`Rpxp2{y+sv{cNDw%zP^X`D&JRWAD$_RQiDuMe<(LU2$2d0^Tf{syNF=7dfgmo zY<)5!4``ifnCL23gf+A|gyalbj~$nDyvvVr;%hEBb|#{(%kc+S^VtO>m_EGo=V%%X z?+CnfaP)|?@Gj8N!aw0d5%orWj!L)DXuo}y{Ls8>g!@TNshOcCxLA`fYWlSW6(*FA zdvRXH;9rK1X~Jp&2JK1xoTtnn)|ahf7wBM9d~QBKxLP(s*6y zQ0(et^29#f8C+6G$w-UuyI#KgLFYDJ7Tb7?pr?HJk9*LtO)rzuJFEsh>Hj{EY7ymA z)gB&rfZJpLIf{rH19kQfIag+J+ln$y*Q7PS9|1!`=W->3Cm`q@v}i+BC6Ae#c@_!D z5S~qNs$F|ga}E#m!yL7f^htG64m8Q*r8*T`wQATz2etL%&b+BF^HkcJU8;y;sLI#K z=ZQ|Bp69`|yj~HsA$RjtzolYzgA=Jr<{m9y)K{pyN@zcvOA**BB;8YvAX@5V*yt>3K=51auwbb=N-Y zJ4BrwUI1SV)d?S9a?abi{l(CQLF>VfTq9;!u01?#g92){0)yn}XvGxYDk*|G`-E$_ z8?!WcL1?r}l^~=eD!`WnPMQ3bVa+5AL3vz$FHjvr{fg0|bhM!4 z?I^FU)GuvR%2Gqm&~sR%R7T zTRQG5E2(Q{MOjL{n?Hgg@sIj*{a(8pyY(wfrn|VyS|9BWPRrZV74)Sxj3`Fni1PVv z7rk}-r-q5cZymO=K5{1^V~*xcD^GRMo4+#rsyYuG`a?^umgHP7kdUcy+Ha;JN=$YH z5Qtk$K5T#i8dn*b&$Ug?9i#m)PB%SVeZY{6b_%0Cxq|`$Q{p)~VXFAHe!bW%Yw!}k zqZvFUvu;{i40C(>-Wo&ie#2^ylF6P-H-Jj4xj+TAbj?X~F*}LR&f~J#j?E6ALu{Nx zyn{BvVL6>=)+?t5EZpw%uj1J|{Wi6(WHq;o_QEaAWS&*~p-b0DeZ%k5I>)Svu#+8D znlyQSb&8XXT9e8;&>ifiOS{Tp8m<-sQ^uO4+T}*0RILCiArl$#Hwy3z@u{adil`wm zIV;Rwi&UbatD|9=$BZ)o?9fpwRWg07_KA-`O_MK)1Jtr^-L2o3+h2+FDU&QW=qzza z4|W>tWcZ@Q!kZ6j_#(Mq1Y= z(w@MOi5yvPDs=$6pA|Y%k&+pZkJYacP_Ghix!1>be>?}*&J{c7mxPQkB-SB~ijZ>} zPx(I-m3DSGkcyh0Lr#gI)@`kfmOPd1Yg4OLvS-xOZ+;JhRkF5IO0^Q3FeA481q0!I zM-`|4+Vtcd-GQ1tH`F48{f3l>I)@srwhtSyEw=oQV!C(7r8T5_1Gu+5_mr>-3gq`a z^J$BzTkR?mx;UNb1F|bIGB@ipUyAd^3v-eA9WeLj@ECdzFNl95+*A#$Do(919sSLX zxw`pQ?_cd&=d&F46NPAe&dp&4o+b*>cQkblw~MvPHD0xzoesU^mIOSE1zYV#pHg;e zF0(B_@ z7stJarC>jdkBr4Q(Cz+}0O-vuz-uaqkt1F(|0KFk7iU! zMV!Z{2VXU{c~cz@|A*%LfF@RyW3=vt4ssq{w&uov+lmqT6g#9>JIv%qH7&zPgry}& zl=<+;mmHs+0BrL)&ADv2IorYB%&1 zq=hM#jv5@am7OuDAHjC8RfV{(*)YGn=$;b-YZYrfj#sfrU;Kh zs+pdTcFU4^{%q@$pEqoJh}DUqzFeY#5|PvWD2 z)yT*^AMiD&mX2MGd|Lo?26aXQ)iXnTzvn zO$KSFMm2@l$_TukdV76a?+?DHPN*27s)R#$iSn6@I*eEo5z`$VTKa5kG7$eq+f@6} zNOM^WbFH~MGg6+=k3`yk>QbiJN&t(pmXB*rnu(Y~^S5WL>Kp8c_qor$Q9I;OI(66g zh-gOTXL*FEgTU2qzjQ@`inuEFZ$&IG#Ng<@S^LaXHmIW^eY*jxH`isr&izQqU`Q14 zkDc2qG#oOTAF?;rTC`z)yiV1K+i4C+E6K4wd?%E-gNtuH zD{HfoTgSZHmZvoU{v>BD{>}45%(}hBgnLFm(%9TE^CbQmWAxsxM&!2Q$?8L(=7}is zKK7yZjYsP#`yxER?rY4N?2+eFoEqE{ZW_-=4w(5qYm;7q4QQ6bRcYVD%v?(~Pme=v z`no0q@bXEQhCQI4LmK@lX9WJ+-C`iHH?o4_;en!; zF|{*yu^`}J;AHs!W(00^CEc;blls2Z6?}_Wgj{c<&prjTns#liZwO82dEDO%DM$jX z(4bss%VLD*_46ZUVs@wmQF!w5rg2_CfLcvN$DT&D4oA<3dOoh26@LBy9X9j(VXC8x zDxey=JRbi3hg@jlfgdXA_-N?+m_F4Xrtti1hxZQ~W;$-5kw}K38;sZdH$L6eW%6&L zE4`Xz`k;j7Ct&~8m7Qme_ZqGyn4b8Dv)3j}(MN;*zjys`7wfh6nvJG=zdxpK8@>AC zDHz`b@SP*nwA%aP2$LGJJ{sDH!BwdVs`Q8u0swslV>1b8d5>F~WZ;#B7 z|L*txFh%`e-8p;rHCE3f14HA$*WD@Am^iXOoXvLhasGjY--US3${Q&T3tKk&5rfZ9 zp`o^C;`=PeRJ?n5xqy$==jQJ4z+@0L>?cyR#F7fmTb=!AGP+;}Y92WJta)8|;;V8y z;yGSf?gxOjB9?aJSD!f2ek)9RgEui;61&g#M5$jS`RzBZ_2_;Ju%W`KxlO>ZUNr|z zP*F_nt;UG)I_-mm@I2Tzkc+udd^5vDbqsygL%pOQukT2#S3o%aSvI+6)9`(n9y7&% zP0QdC8TujudFE?4L>uX_ze;?+g3{L4v5gp3Y!YeS7-Z{1!xPXWqKHV|Q_{X*X_M8{ z{Y2hV&F(Ofuv-xDI%}N^`VNmB*~#=9WC-+S(-DseUZVTK?KP@)U?Q;P!sCY+L?u`53fW zRT7J&JU-mjLTe@C{pWIP|J@sIGdlSsIYe-}#fEOP;ubf9$|&{vUy^j6*{s7x!=JEv zy(4}T8s#IY^}zF|KNsH;==^RQ?$&V z>qwO-C&kBI0Hfy+;>A||*4L8Q&6V2M(=(BrRK3%iVKgW7L4#}LcB}W|J;^5@Nn|8!2Lh#!YskT{IQ*5xo3^EeizpOGu@nUgB1azrVzfyPl z7$TyrBHvTwt)kCZ6`mq+%7x`6i?X1L3R@*uX3BBZ3F8Qge87&yp`kRhL|+WX3b?O{0-xy_k=!9raG9AdiS`WOeTT#ea;orq0)pT zN#&}DCX!Z(@*5UByp)eGtF360B??P${8EX5^r4W!^<85O-$(7>gAh3IZ%5QUMzs0G zmZOB9&$OG**6m3Ge><5 zF^ao(Z@$cS?y)E)lK1wZaZ(5aqva3Jei_HC0Mh{}?!iHmLlX<2uuFd|jeZ!Xj`r3c zFdXu_4PZ0muzVYW1dQff@o(l{e>?zOQvx_uQq)%TE_A^h@s}C%qoBmL%_wxups=)# znc{178WtlAGE1t~>^4_d-L(Zw89`KhlBZqUEZDsmLXc5^_JWbDTMR^pAaxik!y93PZt~X+m>w7ME#OhQ|W|;W);%x``zPXdi$v zsag`lu3kPdhcXKEnT{lfn1aOnJs*8QPQK1=(~~msIuXBIE%5HF?z9^PgL2*IWh|t% zzQX|3%?o6+ec5j!NVnFA+dl~Qvxr`p-{(u8GVe?gzy&n-S7>S1HYcE1>@xCN6ZMS( zY_2|#WXlDX-gTFEgRijF>Puh38qTO19ch96SZA28^Rwg*j?}#3h*-iO!5(i=ImGqM zr&Skc!Y9?-c`HTCtQ`7;x>^La5!bg{W(w|2wi4~F4BxZ#JC|10e{}Bqc8>Wa&9+}! zVf5mGNDuik9Te(Uh?zj^mw zl$)y~NlQeMzobIfww)gYZs;IgJ;+mU3 zHbKA*c{(*{MckeEu^*OSE-Z@~`3y#pWbR^izvyuZS| z7X6WpYjqK(Kd8J3t3|3QMSlD(HmC3$`2={?o$V!%a_t!=C{oDV06wssxu)bH4IAij zxHjskKuVs=Wm)efy)UJB2XNy!05c)k0b%wI}p}VlKD0c6$2Y472mxsL&{8ZE<*qpH32v-#R?*)*EceZ zN%Nybec?o}!GpLK^E0;dsGDGG*Fph9EuJ8ghS&$raZuUf6UrYeI0r6Pes-5WgIDUA zkRw#0oi7RijcJm4o1HMeRqeZKpmS>5nq#2xZ*QcVDyDFC(D8=O$>7<-$$cccZL_g=-=txoF!omGK z(eWci+(p1S1k)DHdmVqH#qk+1z^#SGpob@_2=wmvM^F_K?Vo=lAvk(LvyiTDYf}~c z8T2|g|Au=*uzC%nhU{4h!}M+a_5@vhFV$W>g`8$@j5e=|aoTFOBb#JW?aklZiIXVn z(3mxgY&<-uWcOtWZV^Vr)$E^#3MW;>dYS2eOw9^4oZ&pAAI|@qmA=g*jx3dLz3(#Rk%+Bo>5b zJ5t{nCTwOfUZx+=W=U%mWs8jAzZkRjA?SVYr;6@1m<#M_qxL(G+SOCUmUXHQpvH^5 znn|J8orkTkT2MZ&LfC8;eEvt_B$f#(i$f#9h)x4CAC5V?r01WdSuS}XY<1st=t9QY z6uG^rinmPgPZMfyOSj1imsy5p_Qt9D3Sjagi2!J)tCk{6FtcDe%ji(jkI4-lpbV(| zBb6GemR!u}@|Ii-N~%cz>NL5!fI|sr_J!6XB2UR1e74J*g4J-~rN}SJ9toXIna;dV z7bTI7$`<&=$d6o?$j;A3he{1OJpk0<)W439cJ;TXg|Hyfn-KeV}qv~v7;v;i#<;Ur!l?hm zYV>y8ycdVBL|*B?L^Lv=NBGw8grOSaq^&iTf^$i`+~)NlI1sXS><@*OM}V~a-ICAi zfGMK-hwIt+V~fO7ynh4ub3$!ClFe_7c2bFWGTn1P3^S#{>5yoCD6l4y_#1nUv8+sQJpT*qe_~cf6yhvfBCcI7IG- z=A1L%(l#p+PSTcsIyy{>AY+-;^=ENS^1S9a=lpE2bhI+gi2>{Je%PGPKWq*`Pc(2$ zz^MrH2b|IK(eZsl{~y|J?Ex80hE&t_aRh!xcf=84bOP^o^w#{3uDg@Q6!;q}?Ne0A zbmxy1bFq=$Gp!@Wf>#8=dNk{k6Jk9GR?B?y+wy3PaFc<-0jgyhVsiVOi#sbfRM)dH zMrcR|mB7D#m|w-{{uatHiZPBgbtbSOaX(WP;NE=Br6gAy)D3&Ow9KNfb&OjmyXR~S zI2QMB494^TGuLY(eFO89lK44sBMMo6T&*XHFk5_+1*SMk063cfJRgD*c1m}{XiqF; za1j~9=LsJ;c^tIC0z)$BFW9FMhd6Q!p5M#SFm)t)K=m?!x<9EVj+Ruv1%;oZE)RJ8 z59-cDQOE7+j~IhVNT2&JmO`n_H1C~amT4EKg^5eUZfoAbcAtaLIFZK z{)VopKq7fR(RFTTCo9Q{3MSux2RX$SF%{+2F{rI4#J(TdQdZA!WYShuHb9CH=_Si| zCa8tj^bS&jl+VRYrmWf7r0d-)Q&A1Cc+A&8L_?Qw9P4GOxeKF%qFwEM&z?H=3w@Pi z1j{NMVo*Bz2CXfVZbde~=Oy3@uS(f6-ENqV-3u^AE9tkx<@!iP{sL&3V8WZM`sdgb ztuo7e`WJYBs@U1#ZTz2ujG5BI%CWQV`ROAVz6T&DE84xbDyoR(8@ChPGg5_&v2!og z0%>by)E%n^%Ee|&4N9p{L|!^mBepKp^UL4b>qogr+LFfZ=U?a7`n*hr%|V_IzsgBU$Th+qI@xs{8is_E-TgFOMGK zqtr*JK2v3kQD5LtPUXZNGZ97h4M~h#6Nq5oikp=5~Gg^ma|~; z=gK`xR6^PTd~tiqDI#5vL+hQCJVMpE?Sij1L{_WXMP-NcA??crL&&d-R~%2plq!#N zOFhLECdDRVW}b6H`Pprpf%E}l@@405S?gEJ!#Lca>j8DrR(~Aq@~6}7GHe$)#l1xU z`6f3%gjD{()n>EqQKD^jj!k0bWowuof-LFe>E(aL;eL(Tfn_!6scR>@DY&Z>*qdJz z|IMh!rk7s>S4k$EXKK#jcMX#$862>seOxfeUURAFBs z{!nC#+GDJu)LDp%n-wYyCAx*$Ru-pO$-88hQgJv+Wiagm_EvJAuIx4~#+iF$@xO#Q zq@w0)^F4~7nknYdS717Mio9VE#Dn}M@^;CQFkg#^6p9js*mpiq*z&{%; zcFNm&u~#i4u|m8iz#H#QHxd-#DC~_9^w#>1q#z$~;Fd2f5|gf}bA8g-zYNQr1$df9uB*k)h_AFz#CZSkBpxz0Ux^we}z%VU;qpPx!^S%>2o z!6vE_0Ahp~oZWA9;!>dAD6+wEH5(gn9FnH~YyKh_i@c3_F@-#!i=~+w2JBJaOa$BG z7f9*Iy7T0e+^q%2Vn;s1siMc0Z(zgz^Wx<(oPOiQwoHnl+*kb%l-F88rttN3AkMjZ zstoQnfEV~8J*)zmfi{VxO;_zKn&cA2DnbojqD)6?!O15&o%1}_Em0N-#jTtpb#O@x zm`rtreD7JEitXxO#EGDSBi8}IFt2A+u!`=wf2W>@g@NkMCUa1&ekJ0VOK-KR)R*5H zp!y_Luh;A7wVP{@vE%}5of><>wYiS{TA{7v+1hSpac?@vTQ87&C0OHzvAM=Rb*xns z0#RbiY240dYybEkQDEC1Liu2#`3LjW#^uGtM+IW8gOE_FNK(Zl4fUN*&XKOozTtPx z;1i}Niba3!$%-!_iGyY}?s!G zD26Aww*7ae$CmE_!)B@2Aj{LR!vtNcS!mx%B07@9+2LZSIT1QshpC31-e5saZ4O-2 zqlv=`9xI4ya`mgB+(%`el)I|2%>kjoKs@Dc@xv*1t8}F_G|zjU>d_J@T(|V=6HB_vb+rGs zH_ERxH_|sI(ceoYP*ar`7Q2mgM}xtQL;cueN`oC;GMIM-+Zu1#>X)-tPI`KdY3;Fb|+XGftk-B2-3Lv zm*~w3=Wn9h!dePeOcnJ{*2hP9Fla6gIf1<@yC;@zfwi-Z5AholFc_nK<4f!01y0-T zUuFTA=@k}R$LcS3mOymk1L$xrT-7!93R3Qgi)41Pk4hE0m_4C(&Q+?D18XKL=D}l( z$k6-iaj}sO<7Qw=sGavt)7##;0<;aCx=F%X-6#9bXy%(j*dEqPsTmp$SzvTA4NTJ& zO93YQ2|`10R4S3dRhC(QdR4ZX>(>c*grl6>dmJFc1+`V_WKhvWnk>vtm0mP>jKBl+520>R>|ACnk^{(tP*nTy==PNrVT0f=$D6llycTl_NEkC(h`DW@Wdt&it7 z$LL-gG3dWJeiiu{*<7$`*2}ZzDjL@W-CvS&6eAVB$)r#yD-2hf{CrcJFbD^j;t@s- zATxI>%qy+Q+jW-1!l~*~?THl|<;7;ey^8JgiEl;|XC+%zo|$qW)y2pzUXLxB31e;3 zDoiw=qN|UIXE1UyyNb@WTu!@D?pWb@rh?n%=+qpej(s}#8xB_^900uBRY6yRI;o%v zjUg4Mt!Dw=EOCl*ZNc0{!j%ClRG$T(V3t|*SKTZlp;r0%1yGNE4(Ak>S!I?Ax0NW=K$vU33^0BAnm7!+Lfja`1x zcXsMEcC!bt8j;2VLgy{UWwc;QxnY}2mS0c3ureJfZ5H6i$!%0D>S9gixoOSfUw8aL zcEqoD*4XrmtKaq2TjPI;wIdmcekZh*Oa)^Xa9h!XkSuc}==N-3VfqoD2;83Iw!8KD zBe5G&>i=SyPM~qn=vxFhc(n})YNA`u@~$?Du`WnI8DXfJo|D+pSZ72S@W3s%mitOn zufh~%bnG+7C$bMh@HU|sHMXy^h3_C^`|^4p25!}Q&91xp`KcvQ0t2PcU@&q{sV;ef z1E4d7HN@utFhVYOpN6qbI^q91m6oX@X`?dc(={j1s8YkuO-n%~M}6>(L*05t3U%kN z)*w)>J}COC4A~ZPv;KA^)BAMOYD`}#vzJv~t|ebcuqcU052B80CPU{(GNb+jaL`6F zE6xgM2En$nei8RG!2O`i+k~rq77zut1FyG&GDYCGr2H%5+HELz=8`)vo+@(>kI!f> zjC&owdI9Au8oHKFo3T!+OGu?dZ;VXEPSdEA#sX2n1o7TWF>1QiBfV*iX$SR}p8{j6 zB`J4zXwexqRygb6R4SgceyH$gY#LAm0_$rCJdv4_`Lp$x7u_^tZaz~(thlHB&qk0LYA_$ShXub$Qi~lNEz0CzdHZVB#A~jp^yqiY^><`S8xoB!%j#!zx$JY# zbY)u<#%kqpXyEbBg!%S7vUh3HR<;x8i_?@)?Cv_Vd&ounuKSOpyNaMhTSyIG>Nz~^ zx6{p~40Rhn%Ww!k*5lB#u8o)%j*B-Y30tF#31N%vvxU=+vaTMTwB^?UnSCtdg{1?CFoom6sYFo`L} zt+bf@tVUajKTRYt{fttA(ML&3a&X_01266Q{6j&{+BKokpx9aJhx=KvY-?TCmeNeI zME|Y$B@@dm&8_^Ybq_;DUgqnqpjV9Ob!@nMSdp51)4uPOK9ylFuXyE)5l_{t4V zDkg|A^c;RvFV7T(Z=hKtSKu9YE1Q80%V(c&)cQ7mz0!lOP}ZFYC@-w1Gbu}Nb8R9p``auW7=0L*W~~J>?hBa@17-1F_Ndk z2>T5WAF8kRHmZ4TIoSs`Q6$cZxHfqPKK=6zHjU(b<_Kp z$5p$o4g8he{9}JgmnzK9W{U6h=oN+@YyEp{;tgB)nThjUdO=_8M^#ckA+_|`F2k=* zT9r>jUG5Ni5M}8;Z@EQ|zH5q1jnQKMM+CYcQ(9#)eaO=?3#QvZF;8=m^&*|0Q0H|8 z<8Y&piL-qS;#6d|7n?;QGchqyy=CBO8#NC z#d&8zyXq_f(RmHg=CRLz*w*VSGGSd3)w7a4IRYwTm^uDSK;~J?BL2|5Cr);-j-yReQc4H~oOdLWK(dhttpc ze>nYYoQ(f(r=NE-X(Xfp#$5DwtV zg8!!8UQN|Zmm;ZPrTA5BCVGS{kgMrwu4d-J#uY7(*B{~NFWnx`=b6UL+*9Gq(Boin?E%1+rz!RABV9hg81ep z5lm7|%Kg9i4?-U1zAcz;JJS7qSLx5gdHCp~p1b<$?7lm?6ZdPZ-wVgRblGjT?7F*? zeDzrZFujEo(*(0h9DN?GS81=e*9~=c+g)GMKb?oajn8E>RrlfTa7hn8W!?CfhbBCS zQ6mYma39sjb3VGg2h+FJ?J{jzgUM2@r-um)9$x=P2gKa^cH7=C$HUpiO7GT7GmKLt zyHEM-ySlwNA8T9dxtQ$A?7Oa{>J)lkT5!ic`T2HL{Z`vuHlHiNv+k;|@I_C8{UKN1 z{!T%U-;TrS?}Zqnxr&%zrr7vg9af?QH(sMa4&c`|z(#&{S8s3w@`|@NO`Qo-z!v+e zx2QR60^kCXl`3#faeDO(a)$+R^o?CA2K8=h9lSm(fmdE|on1(cS^%k5ow@2Sw{>`+ zS)gm4e7_AoodF{dprJp9JOFEY5@)m%nrvvvK35G%Vd~LzSb@GB379JMeO2FXO#rGP zAP}mwh$xPgU2mNi?_ZH!LNRr#(m&YdMkI+(w-MOq-gX=aS7OJ@I=eBm(?Ma5b~^wZ zVV|`6KU$MRQkcc{2)GC20sOwW6X2-6?<{7>3=D+kGWzf`?JWmCRrqeVnlbT^Ry?JX zZ$DyxajBrh0M!ZkYFxk8s%x{=)#FfjvS~0uCYx+8)%M+{GEfH#h%mASBCbCGe2_ew z1L5<)ncZ(N##E08Nb{d4VW@z|S+RmdB5)mW?*0=3lo1$yYLq@Cd0@8)b1}L3D-;g2 zwOnw4wHp_d%THJOamo38UX+X)h^D>Fnn}I{@|FQpU;#m86GWv7%92&6P`2-Lnv!5_^1`w=s{aIt(u z1<1fF%jMNIPe?c(ibYZmOn-Q}1F1l)IKP2Z8UxD2;lkf0>?&3X_(`K>mI>v_e@~F| zlacSWR?-6i;@yrMWijsSB^RF9ECeu@Kg zI0wZkSUMu1?I%qBBngm*i&OObkcCUc<(gD$$4cH_zskj*rxX*7cjH}_oK7-{9aki= zqLK-vlZqKT0~$_Q{l8;?fZo4i1DdvcRMQ{#aL2W2vt|G;hfSi*Gz-KMh8{klB)hD~ z5l2wyEQmEh`f)9{xJ%`OF%E0`c5KIBf?rKrc9E+~osXmod&LA&PsAt$lQtNTt^a*F z)qQ4-+;rICz@X=mKktT$!;!jCw6LfYT-Sjm5uVVF97go{1I~o%0Rl1yt*w;|4Yqzb zY8}L)d1NQdlCKdy6m$mwX-xnf)%G)#x`tFG%{CB>#a7$v?N%jeAx~*RaA{DP^k9hB zKbBK#DT#p)06Hs(Fsj`DT8?2Z5&^Gd>sb(NQ8f_$qFFfXV8av#gTkSY5!n81Yvp{U zc=#b2x8jdyHN4YSUErp>eueU+(Te~cnz2rllAX(ccYC!j)o2eYGyjTIcH-%vQG zNa!aEk)~iBEw{r93M;c; z-cC%LEIqt+a@4$ClSBwEp))_+A%;KGYc;?s=(wAxCCF5Tj$oF`fe~pXbhPPxAhCTCQ*}#}J&@?`=E3AwK z)mIZ{=D0a~T1_?|dD}~#(;pev5%f)!%|Ub{qfe z5Y759*leyWCYy|R=boMb|2cVME`k^rIQ2Aw($qbzCfVS2!fhaqYi~V0jiAdCq zH9?75XCMU}!5;lkLCkZe);dGd+h?lV*sNWEO&9U67IxAOMJH4E5zFa-DVUT;m&Of z;p;9o4xG4i@RMdVUK7#0T(e9KvBvj6H;!3ZQ=EqL^eGW`*40e9&2-8BYys z=tLU`N~spjwHC->(R|<(r;XdvthKMSFY|8HOna8ISDyExjwIwcJ#;fNZ+y z=U@CsKw(;R)D~{~(g2c$03DD^N07m|Ha50+2)rvD+oc&FD4dEuzdcV5^xU|-sW%{| z#n-NGtYU+sz*sn^bvGm0=vnZ7iI_g_N%Rbx+QOk1T6mgrMgk&0&Px@dPy8Wpvd`Tt z9uNFy9yr*}-o_yvlzQe2kLbJj(e>P~Rtd$w5BgV)g3D@<)d09HhV><)m1^;%V_I#N zo@zd-fPM(%1!+_#A#e;JZ~Z8V(Xf!w-zF#XDn?WrSfme+H1xGj$AtuCp8Q{+j63#g zr&1#$mf+O1aGev-Q3Z3m-zcKkYIt9@*X67C!nTChpwQ7yX%>m;vTSHf9EtneFg*kH z*B+z&)t}j;k^b<)M}!rDFK0%kY;ZQQEkz`rc*1PBW2YT#~R#bnI`(2rf zWV(atf$4~i^NUzPH%Z`+9*NjW7DknQ$d&TUFPj#_N&IlA43$`k3}8`FFuar=YSY(Y zX~lbU1HwUiyy__}W;v2b+?IQ5(|6tKeoHra$6;AVqz+eNz=P}&k7mrxoeD>MfDr`d zUo{A%5kKDUtYP|CF<=yItdHb$B+JJf2_0r~gIIhDN3Ng%Ozlz_NW2U$Dg`O_vX;qm z@v=liVgg@kDJQj8T1dYSm(_LI(?vP3%!X?j`jB8Y3NjVA?aKf6I3wlEFNKNJWHo#5 zQx=9_$+C-HlBcPJUd!9Ll{sA9K(>rV0jpdUMTKW@UR{Rp2mw`C|Fhg| z5I9eQ`j4;z=-*NXk`NiTwEjR4BrxTA`?ljM@Yxv$R4p?zIF!YO zlTmrN++L6SIWPn?X|n|lz*A4mGcyYWFcHn%9v!~-tG%HnlJ9q*vtjx{uZQzb>c9^p z{W-InjVmy}M2gN=P>X7AxWvE?Tz}$L+02GTAZ09lk>Xqd;qhn~QUOpSVF6r%a>Ka` z03Kruzi^XVV_3*1q~VEO+fW{Mlz;#rtOaqDFS$${6FzJlL$D}0{yw_4_YPwB$-^n1 zsJyAqSBB^16R4rKIu5BjI&u*bAavtwH82zLgnK)^l{@D`c+7FHXR!-?MQ;aNakY=M zU}$*N7%KYiewla>ib2Ll``h#(%yyehU<-7-<814`;7)NS6Oa~t_ zMb5o9-CW(qZBt%e^wWGBx#yMsGH78F&*=vy8MGlG>2NER0xo=%on3ehFew zQ6FLH& z6MR__$uK=Ea+>fFO-q~uJJ>XbR?%;oJifg$DgHRg2aKf110D{bG??U26L4&k8)RR+T>>sM_p;EGRJ=0XRlm6Dp z^mgRRd=PF z<%=rTF?Qg}*T5-K9y{f_SaNE+`|;gh<8*(L!vGpCoK4XI-q~=lpXqP7^$j?+0#CkV zb|H*}c$>_oxyOr~Q~9PGAu7(f<^%~?aFk|<>WP+k*0VC!r7)mn9U1juOFMxK>IZvD z2(5!v^RLGBOO9i2$34IK+^Aw(6^cKQh6V^?ynw~` zIa?6GEz&zE4wavZsKxC*w~wZ*=S*4?_{Db`2k_h9WxrLmR-|zT%$ZKbw*Q^!JYfDz z{zNxt$qg02jx$Q8h@^O3N52*~20C^wB~1jgIa##FIX5V#jik+ys=9O)5b@8?7IxT@ zSz%(})*ysnjL0^ml0@%iTpGF`CA5^kk}=cOx?$rsF{y_W*R8SEa(PfODgB5hJF6_$ z(>&2m18o*W)MH(v*B+i7@uTQ5iNOl`&^LqjpLDTUt~l z`CVv=In!I|Twn_#R|~bSI^0YgLxwaj&i&Zo+L2qb95^?z>!28_jLH}$Go0x2krX7I zpSas>S;d!$a?xK%9Y{Vc3p7G~q(K8rLPMJ7dikgi-07B{^5#4z zDpPj5K9Px}>b6o)?c763`jNt0xSM>lOI93e!eb=2<2vP8*Yo{FoE*pvhr zTX(j^AoGZG>rDQ~f&S0EP>naJD`K(Jiy)~umI5ioaO(<9s$0TG&q`*WjOwj8;{15d zsIen0SDMSp=k196r%PQOEjLO9evgY%)P>hW)~;l(6=i;ZW&9&5EUMbm= z6%m(V?_CTQ^IA#@Geg)$ncD0a1GRm00c&ymW!_wEfl7ox5;T|4~OV-4Z_CA;um< zfkD*W?^KhEE^z(+O3>u9JpAw*G+}}jFC)E^v@i#o3Uh#%wM-B?n;NtApc=WX-iaD~Ms zSAUlynCT0ixonvgJQ{mepwH7vnkhQGj_qW{6%yt;kC@7HWM`oed<0$ZVOKtpYnjA5 z`MC}f9(n7yTye!&y4-UK?RZ|tkPg&w2i@l@(k9vSQyk6K`_<5@YerE;E-!=lJwDEF z)9vM4`93lTxzAxyzdmaD_8cc=)O0cX({f#q7RJQO#uAB*(*=mmhQQ$BEVwuG!Ck@y z3G?n_p6S-{oDUFvRokQ2Cw)%^2A&a0BiuZZJs%q41{-+zjjMw?7`VlzUm4sN5b+Zk zex!|wCEU-pyCFOSh@w6tbq15#=obkAZuZOa!D9eW2r$hqdAz+WJiWo)j3K|ohm6&h zbW$2Hl*tED-+8LINKGOatr)=o^0Tl%uUA~3FCXlCX&Gr~L8>Uu-{t!$rl=ZFCP61{ zyXzmhFI)?NfZuzRy>B)^$0lLRcp>u0K~Pi@WBCR*u&G11%R53z@NiPapF@9dbJ-6p zDuKS%yf1RuYY^uK_z=T9BaS&`hjtu|A4LSa?j9OlOzN&!X?Q52fQe_b6Rq|q#o7_a zr_W5_96bw+h#`V_F{5HuiZwOLuQDkIHTY(hUpWs2mc3r>AiOC!E1&f}Rj zGvmkorB8fO3ucnCFnn-NXelBhaIFzxt+{9&rs`2Ony5+3BDR)kmKdd+dp$zVX zGa9!0$D}~EG(1gsOhC9^TKmjY&36|K$`Iesu*UQz5|bys^8;k7SfSFEUF#D{1U2cX zbV6$;fLOae)|L5__6f};CQ+L2BL0d$tNh~(up2=Kzu|rwy$Sh=@+BcU$G6wdi;?ul zFfz%m7^=L{`|XA+1}YaSp-eK;3S5G>FL_qng6Yi4lssr`yjxj^n@ZvJd#nUYbpKX0 z$j$($E`Q57GSNSqvH%T+;zD^AEH6}tD4`wlOGt_RQM6-F=usAuf=ZIou*!73v)Es% z1hkwp?n-PC-%WZ`peuJI#mmeDlc8hbKJ!6MGJoi_O?A0KK6qw*;O~7wdKnuxtz4Mx z_OebhP=v;-hG&9-H!&0%S+KX7ku>2tNSwZuLAfhoV~;@X2FZmUtU`6qK8Q7qBJ+hO zk6A@wHQs#1s#FVY-k>$k6+2NX`7&ktD~Vhca0PSs0qX zg=?~3G(ZR+N_9^uR|pCobCYV5dN1Y3g!A%rYj7%aFU>rUU5n>Z|Gf{*L!MJaK#F)w zltvXG$`;Qk5E{hWv$;P+{aelV8`{yFa(Pd#zPsjFHEgW*=%q(Aa{1~?#B}?C%pESKLwGo<;b>*OoGa`G@HF(0&FjjfDah(K7A{ks_ z9s?=5RB|HK|BPAp0Q`Q3FdKz>zmN1}zrJ6qB+K$rexpLY{LM?>y}VUvSw|Wh_wtUB zc^yUAa9oPqG#^(6n{)(4nz0^?C_MF|M*(vJF1ZM=Eb9#{?1ZSljZTeJnPrNvCu+PU zYAe4QjJp4Xm$&Dm6f<=>0;tsOd<*qB&{%g77cr* zcKF1qxxCG+CyJd)^7`)CN6YoxQv;Se&5f^%5?MW zR)panvR)?Tsa89|cH%obXX?A3>wZqzz{LDZVO3^iRtCe=T%XlrNZOnI%Nc0k}>cWDdulr76F+Xl4W8mNi7 zb@o^GRtg4e=~=f@sKd#4>1u$fMir%WMiP0*N)O%5&3v)YFF6JOEGAJKDp5gEbHuCAX@ z{0~`Hxpn)jyBUWs_)WfY+ZsJC5}%I9l&!W!w=5%_7aoD-VAkHL7#-^0$Dm1fzP(47ctmc3UR0FI80Pfg-_b zbl-{hdZ*N03vf`{f7b8M`pqW*5l)aVa0r;ILpt*%EBMe>lEoB}|8}idXQwi?wBdKi zi5fiQow3IxQuxkp2Nyir7{SY_U{cKaG;J2_*C18W3A+y+^eqLD+v0|f!4cSj2r|o8 zjc=^zm_Bl~62Exn?mvoHm1wT>-VUqRH=gu!1;@zW1DB~)ywO}*eh~%OxwBY~qT#6I z%R$D@Ro$ez(&_0vL0zRI1o|mD-#32idM!N!Dmjm4=B$xPtF=gVY-S?uAOJ0PK)T7O z^Wtgj4ayX2!DBJ$PmyJ;)wV zjIP>{JdFg%ukX?>4Q=_FW#8^|6cnBwp4B6>_dc)Q5amEx$cB=^UsRaBwIk7I47Pj= z+WFfKC9X9|3Q*pi4hj@5qCo$c)^TD2lBKQE3f!tvoNO^cGekt-?H|q=>9t9ZFWn_BPqvpdT}D%8M0_<8%Ah#j3+77%P%x5h|?K*$1>r+ zc)hGnj#0thlCP_K3*Aj6cMv|hHfXIuA~zr5%jYu!srX9;Q6#9ZjWf) zPcU{a+d$x=Rs1qy)>sn3`bj&>1H}#fEFYeeJ+P2fu$o({s=+qt^u8|I=K5D(o9V}^ zRJIB?(ni3j31qH0IcQgwDs=t%)oG3;L0GhY${h5 zSzv#m*6=PZ{+|d5$A3piSlKxk|JMk~&VLFeMiYJK>f(QdS0LdXz?xlfi`88lBiLxC zBr3Z%z{ary!ujLD{+MLYeXX^bm7YZc(D8aTx@ey?x&weR@%Uuj)@404U0VCTo_2Bk z_I%v$oLtd!Onnn(ftlgq&K5pXODOr_nwa6Cn*C+zx^Xquve~-aj!JZYb;d<)dhwvQ zy7)4FJ>aG@J@#04E$%r?bN`;3icN;`fIvGw1pF20xcPu`74Z7q!}|p~Jw)-%9{tYH z*?=pq`pR?$vY)Aw@Vgygk`UuvFr(9Ag!fSwO`lqGsJ4;C{W3@&;I|IuJ5}hXV|1kl|E8xK7WqNr zts}v(Hr%UI%c7a@JPh`Jw!JhJ=%ixRs}uhw7Kf?y;KXu{B?+&oX@$We zp8CNbpX=_xD*?ef@{7mZ6f+TncC@+{WP9l??#@R)7tqzN@38=xLCQMKb?+7ZXgy}$ zXWNb!**NeIX6RBE=1UgZ8RCmEp1AgX!^o?@SmkP5ckRy{^*+AUz!p<;^w~?Rf;l^3 zXB&aot&?0YNAaQFq4K8nbrbTGJ&j#{!;dfS+1FE6M#McYJ~Rx~T3kNvt;MzmYfI4* zrM>CO_H&yl_Lt)CsyFU+sa8mPW7}!fvF_~LS;@jo5g_a}c5^Y=;;ZKB>~4{|Mk{X1 z$fs(nZ$&ZE{?&<*O97PRK&91+h~xS_RM`kXw7^s!Nim}HHHteIwc05pJhxx^2fVbD zb!BiAS*2ohPNdj9>KTyPB5wC6|Y0)%Mg6+q7(_$c$G`3+l zhhd=@h?Y&HAewYdh6z|I;Vs#lpBpXwyu#%balIs#zz%GoWW&nWnV;{UfW@}*KsaO;dr|WTt-o~s~+0qDx z(s3sl6OSgSK@CnBs&a8iSRrED5pQ!&=rZ->{ScCPXjnFEN3dEd1AKwi`-mKYx3OmZ zw6;@dJ7u6qU`?01{C&u+ko&1j1LLMk{mk7{Pjv^3wYWlZK(+UWQq- z`>QhA6qk3BV#A?3$!jt`!Q4pQZ`HT`gfb|-JS_k~2=FR{RzYAcj7wI%s~be>wuv5g zF(r{9>iIpIx@Pe@ED%J)S%WjXX>ePO@@!%TJ`M`pXCdz7kWP#iyOQMPD-`v1*Xw_( zC(hzH5HW9;x}8D&%`FSdm2~KOf=Y;Cx8a$0X}bfNx0gg2`4#mJ9wY9yKc`%LaE)w2 zj&VO25ACkkx(d>_f5{2o861NroRBvt3`Zl-k*zSRqkro z9ye^BF)%v=mzSI=fWd5m#lbNGzPbDF>NVZ?m&&ht`x}GgkW@*J7>`vUC?;mmQYR(f zaBh6_O&;7}FY>L2;5-M4`w}hlMlinW!iV{qk5Gjl8h~iV6g~K_M}Z2(11Y`B7b37nWpqTj}VynCY$PTACjDg*&$;w8C;^zHC=AQDmV`Rb3!Yt?((@pgxhvW zCPr?^TzJ48Yqk#nW)?Bfe|O)g?d3i=JOK5rAA8x40w(cejGJSDro*w8y^zDoM$4vN z@2?>1ySj%xH~B+I*&DeNu>9G?sBaKd{xts3zWi^LPd-!!}!UvyYdl^V#t_D$PcF0Z*Cv2~l6Shym z1>3jllKtCs#o@iKELQF@wx~}YN9^CX*j^nMY@eb__D|Ophv%8fqw~KSI9>*SIGI5a z`~5Y>>AYtKH6!v!YWHcp5k(_#%aAq_`68x!8H6E8QQYx152fKeXx(*@c`LRJWblu~3_?yL+s zjtEBfWK!ag%_tJpe8?3sinL`nQ8$lA#L#2KVMiGpUon3g1{xmF`9#>H<9~R)icHGN zIHP2EA-prl{o(T+4e!h&(k8_k@n=fdL;oB=NIA1`hGzAv1~IlEdsOXnb^)2P#O^P| z4_LEsMr;g!fURIiI|mWD78})gFx!^)oC_#_-5gdtFZe(c6+Qesef>$vc}L7p{p_1= zZnVPXP*9rxco^Vl25dM0(by*g*;?j~e7nO19RP{V-*aZP&Bf=UL0$xWZ`P_6fzBg4 zBVV7^KEatg1(vuK6KT%FTGi20s~N^;h(|Ca3a-}3x|wi@f&W3!nti}k%ji?!cg=K){$P_$96_+Hm7J%bw;(&$-6>6v53K?#)+&2+4WCC}Viv zCl&EUhKG_CWf5FH>=?ff5bW}Pgk>buZd+nzA~%KBcRRA>N0 zn^IQ)=-DVWp?Vxh3|jETj~oRZ@e$UJ83yvFc4EN`!tXYUICfCuhB$>$3IPi$}3UPc>GyLYs#Gc!~FiklOmgMCxFl z-Fe_Rj5<$16}iPC$kAZ(=}X-7b`{_gpxk~W(GjZk1VxpzwO?Xn+cg9NCRtr3)&%|a13N2gL5*3!~#Ze5X3nYgpd2dJOD#CwA|t! z$G@Lojn>AWYstzu83p`;{HU3GJ_YJty3vfeaWGn_W+k!9;KxQ(_SE<==$o&^NYlCV z7VYM(@o14FO!C-I!}23+#kXwxINCAonFCd?{r-?Rpv3XG-#XveUUpLjRe33cxK3!$ ze^t|kLw&7kuLm$5O{B8{wf`P7gV-6k1uM~<1WRpkKOeC>N@*1lQx+hm%vK09EbETB z=PR~5?Y*&tqtApoVds<|6Il zkEd8q2LPK*KmtCzQAZQ;K?XGuXAWu5q?toR(gBu<3lTt-KJ#zmz9ue~IF!BTjnU`yhF%cTX8?|u7qWR3n)y>r1!O}=SI@fbQf_~c zzym>0LU!{#|4>mDd#pFJ$OjeT=PwP*xvkk&>i)bc3G1H)CPsKw~W!7ch(ICe& zDX0Z5ZXp+2<_14-Ma~tt#i9t?!exyd3>&D%+&sABb>cGfG@pMe$LgM@+oy+Ky$Pa_ z-2bQjXa_xMW&XMq(tpT2HG4Efwy^&IF1Jj_g&w=_%mCKMC>X+tugrGC!eQ{p^_v~x zi*m+Nm^=WvA7ft}Bq5=ftrRSH{3uW~sPK?pEHElB3{>p59PGezBE_CMrpYgxN=Ett zb`FzyI>B_nVN4RY1XHNQq@Or;al#O(>}*Jbk89wep-1}GXq3Wwh9Q8Jd130sQU~E6 zW213=Y2ea5iPYlbMj7yY-b;!AQE7ig?CP5r+Ok3=GTa`4vINl(-?0 ziB29h53rV+3Mu2>CZl)NkxhCEH_bu=3WC>^ef~wgEEeu=RMjS%AMaVA zAOaRM2Tws#!QBD{TZke=3}@h0Px?#oIBA;-rPbF*36e?ocd1nzInT<>>T?GgWNcjR zv~AnUU(HHElz+=4mdscvrWb2qWhN6Oo(k;QqC<(Rec>p&O*UhNGBNaA&mgwbR9a%!(Cs>t=uN;rCM$pI=fp8jx2(VUQN4!N%i;sYj>$9fJ^M?!Jqsv5vpX? z(eT>0*Mqj&HRU_PlR$icNzdOZJG`#d0DxP?r3ZPAH6V2Vl9syBKo{RmuCjKeRWVnh z#&ur`g<1bJ3P6_>yt3Nu4`Us_h(k*vR!WmWjhyjZkS1{^CU|k0BIrLaLz*ztFI~`y zSp@lO);pAi)XyW6;O(tMVZc{!rJP{RJ{;Gz^9aUPMBg)Yg8iWQtN+P#$5=#i{79 zCp7Ub1|4b`^+{sr8T<>9hr26S3!(zTdE7j|XVE_-)Jwf;N{>_LqVUcIi1X56G8Sbj z=`WtdFTKf<(o&Br+`JaK-|p|#|0RfAr$CZR`&l%`1 zcIX@BMz)9`3%@aUmvs-TC-%`jY%6$WrV%;pgxe&_efG zJ@{7&cm&TsZvCY(;fB#`ai7ZWh=;(OId4T%t)7MDVX@_{?}LxJRANcgz~}hy3<&6p zKyj<~1drN+AsX2ditGqknTcO9T8jlue|xttW8qB9Ghj@%&L(n>YCy=%YuIV2-R+F; z{Nl};E0Z1~r3#jS+U<_fjZi&wT$Rm}C)(icu#@LocoG^a5u%UXR_ARjQtzZ#z1M20 zYPD;A!3*67Swg);8Yl3l#P4Cgt@?F*~$*b$nm1 z;dvOd{zwok+Q@(%s;i($(t$Ja&B_f0+2af}H!s62GN1XTX2j62hek1e!*ChQXRM1U zVFVf|)|a}8^DQMsXheHDK}7rzLdHGez}z2~^TmjbNkTE%7N7anB#%9%<-nkMe_CJH z6ks7Ku^l3)6JU}Abq-L2+S&;|Ssd^MKqM%5L%zg3CLN|_#?=v0PY4Ht6r^*sCzL*8 z5>l2Tf%@i-mEp{az6*vfu1~Z^(R$V&g`&({rJV?hWnX}SM+bgbWM@^NcB$$3?b!kI z{^99B#%k83d=~H2LD+eh1nv{o z16|mbOT3P*rD7Pzd4D1<@Hh-e9Cs_fajj2- zo9;sUXOXDAAK74g;o(K#2QR*{XQ{nRx;5uxfYp;>nPIf+Z<@t@9blU;MV5N?xcGgr zTMtB}fqgrzAdYQJRwqrB5t{Foigmj)S6HvA$kcAzR1)JftZYXh$V}%TfvEN}T1_Y%s}@&2&1| zXrri?b6{oLG>0g8*#kjBEx6{FCpRF}JoQghss*#232rA+Fe4?DUW||}>C5^&0SoyW z*R&7g6b>b~T)d$mm~%92eF&U8X-v?6*>uI1jj%sQ(eu1EugkuPA$h641)Wn!Jk7|t z@}O-ceohO3x=_>C>S^$DZ{94&+?iS&^;zym$UE@Rz-?HJXX)w z;gu5+ZCTEoodT%2MimD533!ijlL)Apyp_AW6iwE$&R$R->2v<0C`JmTm6+eO&P6b0 zRO5}~e|FQtZyL7jofJsYR;ZpT5=_MKM$+nk6!;o!l_enA;jWKe&~0)m0?EdvNmiLO zgVwds*S!Y-Dw2mYyBw=4CR4V!9#{sS-UrQ(fwYY0PZlzUC-KF7b92vJZKwBuX?VIL z-t~tDh7lKi5<)W-`95Zkjl?0&EwlTNopQ)r-E$3c;jdLlDz-oUeF7_FHs3E4_IkLG_<2mnz2J(1r?b;($kM ze0w6~5=^^X!6izAcACOGmw>HaaBfBjC6ACXON9>ZS!Jp&Z!MK%EL-I+En?QETrzv9 zNzNgSX!5FvjEj&>^)!;w<^QDiw(#JY+^n_q25Z{jjYfzp_W*37z=2ic{?eFxv>#EO zpyw#r_G%mmSI+Fm_^97N4v$@Q2CM&u8Jn+Siz&Ys3`0Xupqf6Kh&}F~`#kY8)2&8L zSy_AK&kP}qO%cyEhu3aPEy{}~^5QCyaHe1Z(@!8Y)inG zkE;+6ss&k)-^B>6x_s%P6e)&(*Q@zUFM=SJ=+7vf&f|M2D`4NRoyHT8cTW zgUFMvu!su9l>Ri+j7C;K5RYxvfX2y;p-~y|@B*DFW~(BBC@=}BFY_Gqrqo&%89>O_ z3_}E6HengzIyWTAju2I>Jv3d%$m|Ja``Z-{PYvnuMtd~dwT{ZM?n$$jiqcvH5o6bj zgFas~VVlZ(lE}W9fg`^IX5|`^@+cPzWgNEXf}G}Zc;39M=C5Ng>dyRJxa!<5*1qvi z7-0B)hga(6yLQrqrOTBD`=j3?vapb~Cmz0;pp2;}G6zcNuG24l2pJetm$KZd4zBBB zdp&B19&p(UcKmD`(0)G1p-eR;ohj8fGZWD_>6GHwLn@G!@SAH$5NN}~Y?wYM!qR}R z-(akQcU`0GVPu1L7pL;|2L*7)eePT27%x*p6_7Wil+2J(P1=T)=x+7H3CoZ@-T3=I zPoulnI{qofGvBJdx^=^(9uS4Kl+-*gLy^j+EERH-H^WTNq>Ri!EHm;7<`nfqOpg1- z9?Toc%2`UTOJ>QhR?GLWQH8y%EU-2vBJfd$XXp9d#VK2HiX}oIRD{B&gCF;C^m=tV zIEh}Bi@Sc}tVqlC)ZiHj<3kU_AAW=`z2K^oA0Y8T&Y_Q(u7n0|wo~9JvqY($PVI8& zfeS`)5odAI*Q?Tc%dvw{cKW9G0XvL^M_b#)D%9PPIxLQ}9zL{#29}CGe$|0=L3n8w zSf_uq^tXzA#uW6;?%P6l;7to?6KMHy8CN%h-2WzM5KqoBrU%Q4-YCv-6AQqcv;!@5 zQDt5I3HPGA*f&AAY=VfB&b_QwD%tlZC(mlZ8ONd4C!PRX1yg!hE;~IG=nU4CVRlIA zo3`G^(EbDjzNsjpo|K^dDAmrCpOAE0ENZ%{G2?cn-)gdlYiBK=A&(+B&A$G3xLKHn zTy=WnZaM{uN{N)^T`N<}ina5Cu{H8%UpzIpT`gC#3fMva2NL7whpCcUcnbf!Mv?+a zxe2NznVcDXJyWK_vMzaEY7v*<@rzy1$fSWSNP8i!N^$+~9!Inq2Nx*rqs>pQT8ToDb0>{{VE-s3X9y=;+@ z$7eVPzJ0d7xyTG}>0ZWXxSV(AR9d+^;jTbEwRu6`&!yHaCPIk4t)l1tO35d zs#;8k65+O5JNscDn7e&C7pnawyQ5aEmdmmRoguZnl}+2N{=$Zt_BFT*hAGg?R!nnQ zOTXUU?^nk%wOyUUq>itMmeU+Qu<$raW-fQGH^@*QSKPt@k4VG(%QJ$(l+!;#HNn#G( zPhZp%$B>&UTE-i`GwoJbVzOjfz%hC%m0fm1YCefoKY+L&Le>1a`eov3tym1s%p6<* z>tn_p;Zw)?gS!#7{3F9?>y(rREvv%P)2a9%!8WwAEjO474^^NkEIv2`p<;EHpn2EB zLSaYAr%V}m*yeGe3Q)b+%?!Q?76B79w+lVHQbq`s53fh4!lGYje~fki?SB%MTIaNwZcR4%B~K>rU$M0;P6AR^P@f zi8>*n?^^4^JhyuN5BQs4Hc4$k(loNAv>b~Of@dYJcOz6aRaoDwuSF&*I%YCWv9wQk0%HF-8+a@q3wr4mt>n1t6ZLw9wad~IRgMeW|1F0b}B z8Fr7l-~!%y9Wv^w>E5l3*Raw;R=;IdPY6tDWv{Z&v#qy!`>j)SI$Its4ibTS{VpzF zTXm%DKR#-7Q^QLBvkHmgN$Z{8eG|pU1rkDEWAml<@C61co-UM#m_emabBenD|{2bJQ- zHLH9|hhrpn6f$PHjDuy)^8$sp^VRXTpfr zqcS?zatqDWjL3h8a%ubVNhNtclPNmxupO$uunEe4ej}bb2a}T+%>I~ z|D)IG8=v3!tIV>1`w?X=?1vk^EYZwEJ|V4d1CDq7xF`zgjnB2TchVLdA%tk_j$!G6WUeu^ z9U~%-#`Yth@LEZRS1HS3t`=sW+vluRbu=)t)D0FA@fX5fBK{aG#lPH;j-1>H1DI0t$?5ohBTjOn-R=KH_cy_5v2$fw>8j zJFx?HgKbN$b^gb=1RHaBW#R&|7i^7&umAoytd6cvu_OF&2k6mvHyYzk1QxyYuC=vbF=s+|1}63 zAq>!)wOS4iG)Irs$?^kDF=nwEzLIM8uMLqvEP@&ad|i)DFETv{q#Mkh?+GHBBd-s6 zI&6B!oTr5M(cc11sJZk<04G#Tmp`ifkz+GBk3~)FVfgLY>q&`%`z#sEChy@PB2plC zU(d6vd*q49{uDBU`aJpU< zte}TDoNa7J*^nE1SE^=?{@?kWPeo?h|l_+K<+|ag~gY%B?dOgm1D})NG%YgMmkwb%^=ky9L!ay#}V;7MQpBhIcz4xjS9 zFON34P1`OMTI7fwCFF)0fN&fTwiSOXhIyDS1v6EN*18tby=&`)owLq?L2J$Y53v8_ zdSoAeIW|%cJPM3Li^Hq5Q7RDnH^|5)sFk4u(*RZb5I$g@qP%4-I1qJ{cOyxL^Bs}0 z0j>lDhiRHj&4Sr5K9?H%|MEyYQO_${6rv@&~U`RWm(#gBecNt zb@zJKh5kcW&@@IeeLlrEB&_phgM7+LO0@+1@K0*O9sP0@LF2XS>4QL#&b+m5Otusv z{1*Ng>@cEzs0O{?j*2EN;y?VM)emmjxpa81rF1T|EcRmkxPld{O^hz|x}C;DA5(>Y zO<8=rmrvTSo_o`{hDZNbNG3q$#g1*NWDrzLOHvltSe$x9upSU)lQ8H^Lfd9zlb}VW zS~Ti0OI?k$=&0O*$8G87*04nmTBP1bH6t;hyX?JB~6~>h{<<7|G+FcWd*dH$W zSLJl-=+JnQe9gG?@9_u`y$l3RRADwUPVs`x3H;w(T8bPW+l19TLEo^N@so9Emtq>l zl{c?HDAEkGk0TO@b5DaA`iOIoC^1`jzow7mh=*?U#B66GrvZ>6!8rEJGg$~THGmEl zktL+ND%vV9^o{H~ow~ac=dX0)1Q;;!MAjw@6Zelpshhq?q~P=%SoxpM5zzARhWoI) zWx=V_!D>Hw6R!#{T53{mrQZpVt~FEAS;Ac(|{)tqzYv4AmEQC+ zshpF34$&IUx{GJDoqmi=5iFdp`b})4nXB4J0<&Je#icQd5lGculHWxK#}^I)*nTcU z!B^HWBfAFDxYUf<1Cw+f(p%9UE_pM{Nn^2NsB5xI`yYwbLHQ1K!v3WQy#a9o z>l-!q&BJz{PXd{khgY}z?2izYnXSv+75VL^J&g>M0ZP2*&5YRL2E*`*>%!bp;S&9| zp>o#vhe`zjXXhXcYc9p={!4;41Jii6nKpcNMwSrHtoQtM$5U5(4URuBN}Ur zf`7DJsbZ!ma2S^@&8<2F==FHlWx8!UT01`|;F1GqcJMrzfAL=?+hQ zOTJzhb@vcX`-M{&orI;m1krjGaTRTv(-!J{)-CJ0`#fdy1m`C!A5M(-J~K_7E(^!G z*feHLWGoj@f)PBzt0=d42}BUx^nIMv`#rXrDK#RI}6{eFCz&2#$dRSQ*DY z(L@ba9Vm%U+dRs-d>KQ&MH5MHqunx=>)krxAk-9(AC`6WR%9tQBvr`j(de+7{eTFc zpdIV4+SZ`lC5f|iT<11lJ7$nG-`#38>)~ic#003fDSt& zuuT5qpf%KwminWB$=}l@sFz0PmbS!=KTba;r{p7dHMQ%|<*D#i>{6a;hMU&AdH%SC&84k0KW%`(uyYW|+5vyfuR`LDBGx53Y5F zPZ9CjRXjP}i8Ryt9*R5*Z(JA0!>2gIPLtB{Kj7w27+ZO#ap)38+~fzAj=W%Oht=NG$iVb z(kI;V4FPz=ZMe0_(~}iBzAyMwL09PrY5U}*PbQGr_BY6KR=gGo;5kXP-QB} zj^8o*RFtq$L=oQr8Tdfz_}v7Kyi@Bx%JF%3zK{!f~PNv zFmyJQ&oGd5q?8qM(>T9%84p(-M#7-oUU9LqbkGSW9o|pL8(45?@p}(q75r359_7Jk zg3;@dpN;30KI+@79P1NfxZowNkh=(SH2%bcFai@D3l&jib-);n*;gs^rM;Ee=ohw0 zpr$fi*%|&-K#NHR|JP+_W}Hcr-+E3Fc9o3>&Pr7%e=U-%$Um=y9FA>o8; z*%`3KzD@02YItvA$Itt@%6Ob^N)iE+T69SLkfejPNSK!Av(5cE%4b?J~RlS@2^dfMZl4*iapk~{+E^L9c}!&;E{!GZA$D270vcYYB?;f|EdT4#1{Fn<+l6v5!6>mF+%7ZT zQ0BH3-7)0iE)8C}(!0`Le0vDYhbmGmW+UaHR_vfNI{P1LBY__0fV#1?%sxZyDi|@; zQ#T&s(JmR1c^R}R@@L3yezDKU6nUYxcmnG>>6#^C%P+xq!Yb=-Iti4U3v__%MI@3b z;@TodCOEtdS%Nq75KvYa;^lr>>p!=^JgB+{_k%~GU> z(vb#hY4xere4@c?)kPs#Y89$k9ggKBn+wfMV zQ~M#oMZT=lshOGzb#NP`L3jA$rna0#U#hO{3j+kH4uZGYS?(q-3|1IbVbbVDd8r|d z0iW{y=!B;0dd?y}&79r?e+3XKsN+k)Ai3^-@EW%PI%^0W8v*q*nS%im9hg0F6e%;& zVaL5VUHu^j;V=Mv8C|4`s=Z$qlmuUvl{&vYfU{f;BjKoCap;=mm zWQ(9#WlM|HFzEe?Nt7N@dwQV&CJR5@LA&hY=Hs!P;ptmZ_k5{!{v;xlD8c1;7uPrB zX0lICg);$`j?A~~@J{Zjq^xLKr~4O$Dq`H0wm36Yb3Mr%>0soOGP{Uvf58InW|P|n zr$#TDL9ZP{kADlSK%+8TO@{#Q7;dMlz|LsMd)y?WT*J*EQN8k(Sc)>YRE!H(+SPUX09wc}-|TB#R>@bY%;F z*l*|Ay!bMPD5sLu+~?oWDza$z=iV&Pr8;0#g}up+y?;JOyH2r^7?pPK0f&ni*Z0YM zF(&#EU079j?u1HJ;Y%i#5o(+>Ki5o~9e-fd+F%-*kl>o>$n;AcLz8^)F%pRG%lhHl zDKp6({6@R~qNkXc{Y@d3mTs`}wCe?{s>6Eo2<6Pm?=2kwQMQfY6$vxv?5~1w*Kg>$ z6G^A4GD426NgmuMG^RFaIQUKP|NPI|pxBa8OPKlZ-ggJ7X)9Bv0|-&8j3izZEy&*t%KKZP>k-zIlIISeznK+^0~x>eW<=mob$=p zINW>MbbgF_c{V+rT~h8M$Yglogy9sx0L8N!#Qn07d0d8>tl0E|>0W~=T*jk6u#+E{ zwX-<4_ArM47N5j1s&}t@2`CHfAch=*cY2JCt<2|c-?rb??g+(IB&^QWo;w-o=`FV6 z7nD4gz9HRoyJ}dD379O2V+gt6o0BhXF!|y^c@-NNQr|tt!>Gtj5>qy={e_MwikFyM zKMPmNy)Us=aQ!ZE1Pc@XF?-upKY5tJ{=I2h$W+L+H@RJd#zg7Fj>saU{ypTQGn^l; z3x;J&C!0IgYH1BOd79k{FtrJYn=t;HK=3xBwt+hz#Q#Oho`Mj0rz5=^;%hTQfr!%Sy^62oS^!4_n z@kGG}ax@~9mFD4s0s-VOyNjmRAhe{M{2tFrvj3J<6&cvaoqMn`oS{>?^wP02%{7bS zo#F*CfTmW0)LiNCD*|zL#0BvchC4uLe`$B+0A2MIky={nj+|<$ju}& zBw6G{f7lf8D&DJqK=^>W^SvtuzMxtH5omZiM(NJ{tL@jpz~exoV3iFuigb##YlD?P zwq)pfpnEUEhZQtkn*$zJW_(Y|4na&sx81P^ zS39_e_%Caeh)%kC(4-T)n7Ht<^(+mU)7?I%Rj1`Bbo zgGlt_`oIh;+vR~YnErzxq^sP1HfUF+@#{cLM6zGTJnfO*`kbQSnRQ2Aj?y};q`;xvZ7)i}lJ^T(%O+Arc(#l^yJ&Pt{WFne% z;G;m^6TBgV*X1@olf(R!Q(P37JCv5{i4^3SeH<+t4JG6NTZ9{R(fsh#%iCOkz6p6` zMeb4OES!UNuy3)DXq0@({1y9n8$@AZ!p|y}o!`JHJG&!@VKi5$}vo z&n0TZ83E94gdg3e2bn1IEAzW+Eh_O2#E*I}mSFk&4d#s5l~8=ZRD0T!7F{w7^8;JC zLw!;QQ$4HqjJ*fOTmh1<-WAWQtL_~!5_^VvD0qJpDXFD&xstQK5J8i`utgv>0S1@dk8R7Wt=@p-NuDFhy zCx4h4;V#N~Z*iAIxJp~CsNeKfOc(|QglZfPbEF~7NSq1#w-!)$IaGP z4BR-Wu)H7VKsYZdHo%$w(H?2T6mSlAeS^H%ZtX|NNT)WFB#yHkV}w9sdB6B0q9$W4 zih*s-Ss8S4_a`~}`Ndn&{9t~o*}~iKt9YEl`f*78p_}JB3q&_FzrTlB5xXM&MvZab zL!nA|Kw$3g$8CBiXszH<#nX=WnjIqyp`bVNeo4cfh81pC_RFKSplaW8m}^hM9-8mM zDku1`eD_1BxLir6!S@Jrg%E%r?9)+_#kO-T1#XRavZ;!*}Nrl+%iV~K$v5`O^3fc^4lL8D^P~aib{!&ErX0~cw zF4U~P%1tJ3N6oS(Y|lo@XNpc5bw;?A&`WSRi6`Eaq1aPm2+wZXjz;8VKk}rUxCUqW zjArma5r~jeMvMcjyskp}RDW1`q7f)eEE?n$i$7x^p=2&Ad5IiIXJ7}<59Haxnb~D= zKw1-l463ufa#^+(-CM3K4qt!3r4;-QXMzR_S>Seb47h>KNj6;^llf+!U(3|EpQGJ` zTtI`&KRSN2KC1R~bgRs^F#M3m{u2;eyN|jIwC1|GbH6MuV_3#4oKBbvqCLB=bG*Ptf;)%*_CG;JtL*n$qxybILwq{MivVtB=bMMQnJFB1%ft`E z>=|a+X%LX>6-ZgWXnOvBxBmXeJi%n#UBlmp+V>jL_fRWADt<(@paS0G@pf6>TrY+V75RHIGlNeV(K2h81 zjt)!i1cs18{&PKm2h_;D#DS>o!JjrdW-3!HhXkUW~1KQ@v6Oe_Iia9ZYZ ztQfU7K|Vaa&wyoGh@ofRPR5`<6^1qD^(e4<>|>I=NhYq?B(Ao-+1Q@ZSvwhBCY_=ljL?kA;WAi@AV-y3|tOV5)$ehPz17<*r%prORV!ZD2s2|9{<=Z0m zhh~DtGtww8vLO_B&hM2o5<_HQLQq%57bS`OK51zm6APRy>xce|`72cTQ-toX#a7d@ z9=d&$V>xMzlFr9J<`MT>Z zG369zhgwDQSBI-vSwlW4o_+r*QwC$DVe-4}j*S~Jb}7=a7t1%c&mp*>1@6uRP%##0 zPPBdHsht`l2IL^t<05cRAqxqO6Ti&iSS*o+PItf(l#_Z#gTR#>%M{-5<*Do%dFrAN zlE_E?t?-T=6|Ttc{Z6JjLU+BE>V_-;n_{+A(7#`0a@x=_W_2Im*YCQuIa#Wjox{hP;r8HObl)&Vfirz1c_O$OdT&^TW{p(lyrb%Qv13 z^G)Q(F0ah`Dj3=nHu*3H)8G5njN%@}Tf0+^4`K-DXeNS=EHRu={Y1?H;i*KL8Dfp}!soPbNjL!MM~vkkm6LeCYZG%dNJ0b#WF*+Brd-Qn zHNdTCa$uXl2#S-O%nl|K9(|@V#W*Zau)pHYYi^2{rE0VWi4tOBk!U1xFDpC1)#`6u z8TS4|4p?0JDoY2?jDA&={qCltEsVd={}&X4iP(5fa0RN9BW<1;DFqe>s?Sy_T4b=* zP!Ov44I!f{Y_Qgp)HeUsL9krba{W_T7!)u`qqZb6#iu`ZWz1GNl_!yn+b%HpL(M28 zpf|qOqGC=E#}Z*O_4)#09EX$`l+;?ug*+S@%@T{R%q)H0ab@CJrj0>4vz<xb5;j0GCm2pX;3t@#9ki0GyHGZ%1Iv>FZS|Z)_ zxYti@!4f59VRvH|K*_x2^54ES3+ulf$QR~P-t1I}JRlcm0xG~o730Rn# zQ6C3ulhFDcNI^R8Psy16eBqc4&*mILDqsu-tXIR7mdh6_4w$zHB~lmw ztj-bOu;`$n(hbOOM9(-d+1)TZmWO%t?DjyyRkSPt9`bL|PM~l?bE!HGhaJ|8sB0V8 z9>57u#!XYDaQT(U?$ZKVk}yiX?XQyz(D71wPZYIN1633SGAIhaQ~yXj2;c|{yeB(j z1ZJdo6n0^PosAJVJ%V>vTzbejs^dZ?+TM1CpSD^jpcknOI!dpa7-a1 zASa(?tD*~1pR(TSLZV}K$2@Ps1xIOgX>(T=iuBdfO=D0=g@-BAr~eTP)osS10(9q8 zW2f`cJ>v4TBg!Vn_k}OKh5fc07=pM*%;uX_0swwDd*SCY0#hDlBO~f@y3&?BhNY}> z^0#>2a$L`#s-9YoBNGVTh37>|% z5?|%&8pewJO*M27vcgJ!oGxt5qCBG65`q^Ibz(Y-a$0h(0huJNR#uaEUDXc(Ujw^#> zsY(euslG)5ODi7JK#Td&aQA|Pb2GX~=$C{h(FBzOm%dkloRWbjl#ZY>PAp=A2Q|R^ zL96l#p0}NuN)&>^o%;`Y4qPIaE4)ri?}xpl9%;=Pkw`;C=JWV>3F!RF!@24#i)75i z&q!qx=t|Z)0-#6XJ^W-aMYep!|Uc& zIHp72tRp=SW-)CcfSLt8^Mx-jGg*Upmj9VDS+kn3E)k$QHQ6L4u!4-#c^(GdBS~?p zyTm`9)6R+wd)$|eTh=^|pW~VB0PbJ%c3@9deOkR*X1O)lb^20onemUP%`O>C^rNu=+7`RVX)e>Svtm5s zA~ARRvu}!Tq?m3L6ivrN@yWuy&4mpJM;s&kUV`8{R!7v;JWAcn&0O?&%l-5>84{}2|bNcpt zA*G2m$pbk?bCNLUf(&m6@gd$U?zXD5406|)0B}^rvx`5w7TOJN>9?Xv^tD&QVaT}? zv4HpyySK|)W2)AMq_Aou@(S-im9CxQhXA5)-|vrQOS}$`)^WsPLuEG+^H+g#J&kOW zA!$(VNxB!A&cUjDhUtsg`mNTQhPAyr)K`H$#r2MQB%i9+gW#{xte`T7I>JP@yugPX za=Cx#n-A-#bBH5Le(Bo7*`rBI)%&6TU+DZ^gjZ*M zXB)YKtZV@+{mTl#`xLmouuG34th=AOHyhX`o*0^N4jWoF)I^l71IBK5sBMFJ8JtUA zo=^T2)nMMaVv3#60%@mLORx54baxYUB}2-8@)v&$$NB9nux=rwATX5qBnQ+6w{eJ4 zx8+>y!5U&X-V(t#eCOT3OA5$xYy~0Y(d*243`Qw2fv?qo-d;<6(eIGT>7*m}_b4*f zM_HW$WNMJT0`g;T=0<1K(nS}>wYPkoLpb#-^jXf7se{1pu1NLy#J~ zNy~Bz^$#u)vQB5+3$4qKDY1#9m5Smu?-fQ=h`9& zT1nYi-nX~+ICeIjs%J#4ZD&+1&S7p- zAYCY(m-^hE?~}X&MlA@wS~ez9e2he)}$WGpSB}H`U&>cCK(K zB$8J!M5b|N0~2H62*A+9%=7}%|CO^rGY4d3#3W>7pvL|a+QBjb|Bl0n6+%8gw7NO( z|AL2RM9+sj*Cn$9@?uwUZ~++a+yK;A2cXIBrqSu1o(51eGt2$M;Oe{w8kXIznE`}~ z2GA4-&!@%-NiRxDi)txBJ@?J|;{ht4u>hdq;n8{a?*bON4y0Q(BZC6~MUF?E|MeAR zM&=I4EXrU-IDX+LEdQtxARyNxBZG&B7en?|7ZXR97R2%j2xA?G%7=0R?Q9300rXFS zQDA8R|LtNCObxo^j|x(IyJfhaWZvjY5l4aEA1QX zwr>g!>PRo@;hhIOhI&)?J6xp`XnON~Gx~fx*yQ5y;&}fKqp8N7rv0TF+MbD!92(f% zfTbY*wa;=#+{Vu!MF811Ff%(nJO%^E0ThsDrY`M6Q+RU%`mHhfkp9*S%8N@XLhe88 zfyvKn0loi$o*i2m#)SarXb1f9`K@@@|7UCnn68}_2v8~@Z4KVezpytV5as{y_0gr_ z4fLG8w-pE4|GjqBCl7XqYj%5XaP~6xeMfAzn3A9vuU7WuKJlj-8Oh}Z$|i@avBEcc0=|?*MZDO}+Ex`zb$p`*#a?=?@P9yYFvI$<^yl zham7%w(yd{nLe}oSO4vA_tvNT`{(+hulTEv{qtu=a$#ov)|UIJ5BA6Jh3sw3UFWae z?Ouz0?hA#2vu8eV@Rw-?_{Z8=80&WWr%n#c+-Kq8G+5&)~k)H7vckA0ZZL?PgzxI~-~J}-M-CSNKlR0t3C#OLpW`A7J!D(ffh zmkXNgiGTd_*3u5v1+cSsPuD+s_X_M6crU5>J?PF-Q$yoV_$RmJg#TXG{zc!!e-DG2 zp1kS}`Ympx>pJiEE@k5zcu%?U2fSC^_zm8Ne(V>%cMn45FZ|mNoRRatKFIE$Nt0bQ zOJ7j~18^3ApTwpgZO{71KVxq_Flqk#-m`z}gsE@Ye;9pp{K(^zpzr2$yI+}*#}9KV zyH!qK|Mfljh4-nOJi;$~yuJB=_kq8A`QP=I{dZmhqqDPT9nkYz$t$1y-$CD=l0ZKB zJdB;??m{&Eaw%W)Pk|c9UXY=^jzOrAJatm&fceBp*cLL93zn>`+M(|{N!aU z$V<&V(?ivqq&2b2@Eb}>tN9*!5y?tL4_o_)WOZP~A#y^fpO6L+nCpS>p1QgI48azB z&3;ZJ3h1oew#209IXs@PQZDQdDs|DplQ-2DYqrxpJ?avSBUZzwU`Z27NNI;NN3j9{ zm=K0mv$Xv2##R?*^LNDFaHFKlf22xB8&bZ`tm=n2=Ur>n%j#O)_T%R-d-vl{=UyHmM%7Fi$qC_7&48LDT52jo*|-YSPswt)u2ELBuk)8bI+JgwIfJJG zvcWg#aXtT>Hu&8nY;Di)4V8`uhLgkVmSW}wD~-Aev?DZT6Qq&yAaW;jq~Xue)Wzu+ z>SVo8RBe=tYNj-A2{z{-Pq?Ao6aio%Yo(J3ov-9zgGzk}%Tw02qiP`w(G#4T4-`ue)kKwJtz%w4V$sqK zwMU9;J8WK<&ru4&{VUy#3T=~|nY1#EuzV8n>EWMXX)j3T5G6X=#_1JCdJ+k(j5khn zY?n;F>j81@7Ie!oz&%KM$_R?emak!?QZbRoRd~f|sV$dCcvfz+X#A;}s+@P;^GUfP zB=}G5a+!sg_*`*PklojEOq!D0Ku5}36;Ho0FWP@q9V`lu(qO2o>{@F-!owF61g_4x znum8qt?1Au7C%EQ7N^7-wai4wE0Dq}m-6(F>ulvF{F2wa ztD0Nmn>c=*HVI#&-?>WS+(}__vW)4^70Yz2zdysfa}+73fx9{_U58cQ{Zw8y9h>Kl zwpLrDnpxoR_{AEkR)$09_H-ht7UEK4o?4RY#*htp`%fNGQeW+UeyM@npmB0_rHxU; zpCvWt9g&HZ(+AYGy^cMBQZg10cZ7?tTGsGoxV6Adl=AI8f?p@}pU9;rjYz(@PI5fF zodmEE7L9@S4NxIcWy|5nFVTne+K;STs2rbd&Dw+TyEZB%`V{0#9DTuhjb_zCqV7rp zi;87CK8>&}wPT2T9>$gU|0J49#IWUJ-mB3t!gB3L z0XTMS!>J{46vhb0z*L}zx`FTwR(dqu0h@Xon%vdY>=(G&dCx6ULScY)n%iDSSXODr zA^fJ@S9Bf|0{E_mm{nQVx~p$a<%VM#31AnZEWijY0Q6<(e)NxsFekKSrn^LagmHbe zGtI_zTomR1(i!=Ns|HEl{3GO^+JGnKw@HF^u{h=Lq}dU2Qr7iB-(EjXoTay52D^(2 zvxCpSv@R8N4gBie;lbUD{||ky53H#4EV#z6eN6yNCl>TTTqqK)v4y71SG@QA1E8C~+-1=j<}wv{@iNolzYjv-8PKJQ?#6vT{GM`7*9bIXJ>^1bS9t4OG=BpNmgFseX;?A*R`wi$Qez29?V=^`h`!W@6Rs zC!#kZoB*57J%h~;l(pX0uD;OQMO&~7y>{?ho(f~KXbotcJGs0Rot*kMF)QiWvuL%= z6%KP&6(PH#Q#(JBu%L-=cYA)wB@RKfQu2VZBmIeC*uC8s?ntkLJ$^8Z!+t3t${g=5 z11pBkWYF)7KVzw&ZHIf;d%K*jP4#dl;?k#9bkm{jB-lhZ@ZVD^ptx?+YFQ81>wv^3 z5#uO>P#ti%9XVHfPfR+Z{QDqY)jKsz{niUg#0nL~Iwim~y{WQfhRM6g$Te$=qgred zzPuYXbP=dQ=!Qnr@Y$k2oG`GilSq9R$(Y(x*`@-kdN9m)Q0Gc~gx4hPXy(y`!@RErk1OlH)Q+mq z>7f3Qfh8HV$bWY*$7LkW8{obKcY0fVu5hpgq_C}_V>GKJ!%<&i_g)raRN-*&b5$vhUq2fxnEmrl!k!e(|u{n z==kE*LM6*yxjrge2rIE9n`(nJn2v@XeNquYf);?`iK%y~sz`cnQN7sE1-!i0yAt*l zG|?58C*#$xv}e2sLyFroF?nuF=u_xHKPUN9L`T%I!WBfg=%?&g{bGoLfAX_=Vj!n$9a;2Uo}Q3Jh*|QnEgWX6-om zS(#vWI7{*LW%M71gh3mYy=$)(&#fIS+B8e)CW;XogQb~vm4IwUv6C;F)1N<&T}nxnY~)_lnKS0?fidzLTpl^BK>2)`&VhM-C!Wlfb=NA8E{ z_lqOx#xATXV5OX0a7@UN@C&{A;}wXmsS}{jGwvgxFbBNXfRvDTD%d zQ<)8ykqDWYLyx%EFTG?r8)qE{Ep|MB{U?hjZhboktKECN9(_GV**wTxD@5(E3ZH;1 zXAo2Rv-L?=@5m!Tl+u&c`5kxbf=aBw`e@W;YkA~i8ce;70Euw{5~s%)oolot4g8Tj zkb`Av=_mckrGXzmhvCG_BwN( zc?5JnUEIP+Yj4cC!#|}2?76;REQr5o_M#huj*Kyzl1}l<6zOwdu7p94+)`8BC=*3K z><~J@J2)8%QRVO>?)2QxpbjWIk6o9dFdEY9v4$9SDCJZ9G@TJu0$)yL5pg6=DSQ*3 zmDxd-$l#>H*Qmz>w(MtxK7s4}TxNI;lXH!2pg9ifFXu_44n`2q^cQF3L7Uw#ifeF% zO2)ImM8&EnUx0hEPV{!_)Z%ft+vlkVLyF1lka8?cB|b~Qw=nxFO3N17Mv4v1 zHooz)4Qu`mYo?jH^-_ zKSoZ<&}RjLGDNxuUt92!YvOZwrJuf1n(^wLJgL>g`5KTHTS^V@IC5O!nufJt%)k;3 z#F5jxod0_PO+-z_X}SA5b|F!HNWf_CuRCwx|5M6s^QIt;yJjuyopv3eZ*Xe(Sv|oi zIiX+Gc($ku@}_kF*fwM-^AK7$NBjN>u?Oy9E+`4{c}qLs5D6sck%J>HIDWFSVtg<2 zfx1_z(7V3FV8eY*HaOG3Nh&h zz@)Q9k@}pu1(#go=kifb_cWwqhms z_(yud!a0WgMqdOsCB>+&)<8z*)v@h!+`&Vb{?PgWnfdRhS>n|-n7mjOjp-h5>@MY^ zhIT!jX?WADWAZKPSCN(`U{0KYOnsm$l=SDiE`2CFn7M+5Em%rFRh9wJmn=LqR&$YlrolkH$GE0FJa5s?7FRU* zfq+b`8IY%7k8o$OUh}3r$Ib+w!q~1bGVYn&TWG;yXgd3Kpjctr z{P~)+661c3>orD8X7qhd+XR~9?Au}>{-&xLiF`r#B0ULt3_q9cs+YfX_lSOR6jNr{ zaGIASH<`~$)Ff#%5(fmDI!(6y<|BXlB|cm1HHktnwZ>@coLn?~ov`^hP0w;9QY13Qk`n4^3&7Nu6? ze5g_=8AW4VZ)ZILbyEuyDpR_}&*;QBZrGULnU))Vik9Lc>>2%xzLx#tCF4^LSRJb+ zilGn6k&Ig|`^`=gv!@0et$TV)zZ7A2r6q@IGeKdF=A=}=oNq32uH_7qK_p=Bj!Iv9 zULmKmuU=eU#Z7wL3M~5S!DTb;UQi^rlZ2>4AbuE7eoXEIix;+RPFM|9m`S`TwldMC zy}1`B$&_7&TzE#Hj4ql52Hp>SCAko8y?J+Jbt{E(1?d3&*R4H?R${4A%vi*59$={oi9ShF7F4t>peM$TdyStttcK35 zi}G1ygxxspSmMXEsP#m$*MfTMw5n@0n81G9=zJ5V6zi4uic=bO;0UhP$7MwguK*a~ z5ymJgF#euvTO?N-s6Lr>>kPL{nbn0cY(crSuMof+^`kEb{vvn0hIaQXf=KT0QzHO9RF5#3dV`C{mzj7&&jM1`*`RE43y$Qrx_VpsgvnESC@CO1P6L;1fpynwe6!*V0IhRf3o4xE@o;E` z@YV|QX;KBaN6Ve9nw7OvO_w9f9s?n81Q2>I)qUY&=5=p|U5DP`TJJ|d-u>h|3zjm_ za`x`28RF$Y6jM^A>ng1@Kg475o_s8zf|~9qjf9W~KfQsM4Hp3-{S#qZDPU}{XzsBA zKcwd9n~#c&6CD5S`#7B1T#V3CTD~3=*p@xmYDlYEYDMKL7a=>-sJGG7?+2E#DlFNK zeMDRgzwe1hal{`7aDJ&F1S4M3{<%xg;``RWWMK^wuvUw|vZY{8^|LuY%K47bZIhc7ZQ>{E}WDdm9TjL@fB=+c$?A8N&oA;B^x-mEJLZM)qt z@anz4b`9S)cYPld?RsgfuMXBsi|k-di{|Pgt2Dx*F9jF_8w1&1xSphA)K`@!vx+{` z8a+a4GzUkQEiS=rl@pgU`!EHM(mz*cAu7osN9BlffjEo@t!?WlpklF! z+il8eUrQzWy(`__v=o`~kr9PbJ6O9CLsg5VX=F;Qhl>)d=EvE`*90H0WXV{X%J*dL zZW+#^m^cj|IA>(YVjVOppMiA{{{oFB^c>tQ8FW-UU(qP00=%#$#{o z!sw2ssj`#je>U0t<{1&_*;^NCIx@Z>5HoC-D1Sn*Rkt(vO!I>t4PiCoWC0J%rcf*4 zS>}TI6c>JEaRcx6c|JNYHKXB~R|IsrXJb5Jfj*fBbs8q4as%A=wh&eaf z0%}-|!)<_s&Ij6B)AA6-0A1HLnNtF(7H$gCVu~0ksp8g7Db=*Ku2|M*9DM|CCY483 z=%dbj zI8Pi}ld;FKP@$StbdV!PG|G^2smc{EyyhziMDwC$gL{-ch4f%y6kXY%wgZvn!S;c_ z7ww1NV07!X`&%X|h>=HTy)2FMtD!0=OCZrJ9T!)R;ffHtn8+)*gwKyFZ#lP%98q zOgTAxOSjFr?+AgP>u<%*m()wiTC*T0-Y9e*E$mkzZQCduJw>}}l}%S397!n%zSz@r z;I7K-fR`Q}d0p*3=gph+uOiiJ_S|dC6$8=_=InKyTE7^#>?0k+LEu#WOY0SB?h1Q@ z{MH&so;k-lSyfA=GO*3ZB3AGI@G*l=+eW27dtnIQy`6J92LVKvUAODT=5A zvC$Qq?vIG1PfX9zIY;P`HN`kQNG!-S=BOcUZXQ^8rbQ!{OT_B;3>@MPW|EeM^5G1# zSWhKZc&y7n-4`W&zIBymbvmk{MR*ydfut5w0Y&?B5fd~mswu7g3cteoX}4RK%V(O$ z;5&K++}yUO0q?*BgVuVd6P)&m5-hqCiZZ8&$KkCR7ID%194pk%8)?@3jMLXi!fkLs zzm>eq)iNiKN!!JyRpnejk||?8hU@^Wbsn19!zYP;rq)}ZYO~h>ik|7}@Zz);d z(u@r=0!EflLJhq%!k1g%+Qs;}kRrxur>qvTr867L^5}XbUk#BzNZ)2e)fZxsXTHx{ zpz77*sBe9hGpPk&zoGD1L*!OLqK&7Cgx!3Yv%FCwjY~E;2}7|#TwRB~P<*lO9agLw zp_&)c=e-|IdMow&n7!+h4vNM=U8?_bY$m#>dFR0@>8Vh?KUzZf`d^HlLyRcEmWJE5 zZTD^4wr$(CZR@se+qP}nw%^^nWRjW1ENW3ntt)j-{pb6T%4-W#se0m>Fvdcw%PEp< zRCoPXJ8gPajr1q)8H26qqQQjP&Ve9{>5r@U{|?pSsy%C$3>mvcl!K`dkDo@6$#t7( z?Q&mLz5{RU3rV;eeBe zFn*u2ca_;Rkz*VPxY}d28;>5DJ2j^=K$bKUc4Vh^w?@n}(C-=)W&WFXE;*l{^X+Gk zeA|Ri6CqMJR8G>pu(Vl=mO!A%4ull#ZxQ*aRN@(`XS|F(cg4>aL7%zWZ2u=GJ+n@Q zb+r*35jUCm>B9Gzp3~5`1phv21TcKr3;(?E8Rmr&k7X;kPQ)=h;h>{^jY=R5-T)hQ z)ijR5=AkhxejtwsJF>sB16=w9K26BoYT*_`!l%AYr?7=RPxtn#{IpDkiR4uTmnUsy zggveXz1fQ(ON{hECSchinGj=QB;2#yBSF8G^G~#xFE2jv*fIAv%*7jJ2xjzL00tEx zqTxtQqIX={TXrFQRl+#7H6boIV0p(;Maakf*vs~nGgS%s<0_ftkKJ$|-ZsaL*Y21o z6>u?Y^dliV!nq`e2hcT&n<93>CQoj3$urj7=kW&waoU(6h3n4H_*zAMYjy7}@)rHL zrNE}h5-2b!$BeAg&~Tfj8!idEzp87MlXGO`RD)Xj>sXAnBBOZHFpu=u`hj_!G>`4W zrKFo4e3s+gWSphk1TL2z!Wq%5=@a?DBHyz-Bg=rd&-@1W2LfRds;8Gsax3aRy_<4* z&p{`Un5{9wZivIRIdy!daP?SE>e0xrAh6drga|w04+-lLmv4XaVfXtO$;IeVst9ck zc0z>gdjvzZjs*fB;}qb{v&q06kc#b#JVs-$4bDTu%jT5jK)JmRNqZGQm9Z-71;__2 ze0=r1%pM7c25pDsB0q8`%dxAWNO~gh^Rn@T%n#%_dC^ch39C`kZhsbEz-Lv$a`EYm z$~uwM>306)vkaA-G)esfm4RH42K9xJg9~0~S5c({`A`RZGCsuOgwg@2k6P5zWQorr z|I&o)&84PQdK0zWTo%%ipkdLHNwktvfsrz1!pEnH@0nrtOQ!lN&+!*=Y}S!^E3oXE z`&o#*jtPP#PH9bu%5ucZwi}v;&Juc+{J+bs10_Q3xK6864dQ{qsLlJ zYYTgBLCH1$bHQI|<=dT`fJu`iS>aLwIO6V)u_cht#j8F!+Rp zZ5~6gjKq;SX5`&s?EZ#z#k(4pB~Kn%zJ3OxX*=9IIGed?+X`_XozdnpquYeprkGW; z3BHBYyC*oY+9at=IbY&I_MSFyGX)R+o4kkn1BK+w@t z4`W|GHGnQ$pN&V6R_SnTJ5Z&DO>7QhH&Ca}-G9Q-5To;wO0?m8$4C0$y88%soZax? zud1F4R9yC`Le(0Jd&5zgh_~aWe$av168+sxo>?VRO`pb1w4ik=4yDI@B@O~5c4-s` z9(PU&j~XdXC%#nySr?(4WZ+XoEQnVqr1SL5$aPYl)!z!)`yH^C79nVtpJ?QLbQdszGa+tfKC%o#Y7MvM}`B!JQ zi4D@G4Xfl+5_BoNgwhA<>IT0CP&Me3ilavPq1eiQjEGdE7rou zAPh4`C%zagX0-de0FQs?+gVtR3C=N-lTNB?`)w^tA#}8fDl{?vTTRMBb4wP|@icD9 zeO$s8rve>;q_DF84V3N1KB;g>LpXN8*^;kR+YKUsIESY|cq zIJ(R@di!%iPK>c(Yy3s1>5ngSlb9gFIIDLsdaEHdHO%PyWQy4NQku#Sds-xG4RDdX z?F4tqpoEKZT{i4Q5#w`XSSveT+znkvo0A(U)y1=e+rhp$F&}LGs7tZ;3!Tez{k6(+ zkN%3rW3=D&%@$}{WlGzoRC`dhq%baW4{xZGXm$L^%FQIHSW8|d`kni)9?!@H+iro^ zy$G-^%XBhIeQ{hIX95i9cPn6w{*m>tRihoft|@24!u0qaunOIE$q`WtSfuJDM{q^( zLy-WSp-t}WA~tDfPC9CDv#+qkU-NCJ3~+Xwr_jySIq&;0FUI#6a$F?ohj$6mUYj|$ zoRE}ZZVut09BA-lMw^#|Q79|3!&(R-^M(_erXkWNN`ABeX07`qJRN;wLkG7d*!H!X z*m3IU=#tZpd4S6fxaGLQzs5%yXJ}_6rC!cdO&VWNoWFG4l3#esC6sKff#urje2R-w zBIUB8=!J$=^xgy?qRIMs?zKL#9~_+Ips;Ex7GY@Y$>j!{YT@Qit8O{-IGUj035`Rr zDyXN|vppQ{9g*31UQ%L9zGOSUR|FNvY`rqZ&_%?z{pHkzn_dvVE=8lTVd{9B+>64c z6{`)tcn^1$b4OWAh)?_`v!)!kfRi0E{UQE$9&=mAFUXwol$%)y<#`I+l)aOljeXSz z{47*lnqEIdc}{hu$y2yVrGvE*Am9UR*NqTea5_#S2WaAm3xB{fy1MkEs#Dnu+xcCA z1^%Z0P1gydScojW<=Eyznx|K7j){Sg#DGMxHFeWN!x35Qx2#9-R~Hcyk7QYTr19}# z@UBUeR@1|LDl;>+%v#nW$Ldf>DWUhwa1&o0mq;H$N;1P=Ci)u&)(mQfnafbJfO*Tcetl*!_ETJ&%RzMh`=1P9T~t7L_BK# z5o|w}KzN_s`c&Y*T=_5Rl%f?TE2k9q$=y@DtRqjvg+z z3%ZF%l3bQy*PCw z=eB=75|y_M<3rSG-hug@4)>%BT?%B?Fd)rh^dTq@jvw7Vzv~v7PqSl?C1@mf?k0bS zFI&)W{G_9T+n>rUzzehxi-JD$geKEl$7s!+vd4x2cI4T^$_cS`=fT6}`OSo^Kwscq z7WaF}*({p?exkyFVO}1=47LU0P#r>nd;!eh0n)p>&X0B0GzS<$|iwYvD?e7+jWvK{PD zsJoM)EG;Sb#Qj*P0J?kRIz;FvZq>Dq2_~rOOgn!-v30#8d11*IJQ(ph;e_zYhSPjq z`%$}3#5awr__YEZ@e36{x@%1ncV@~;#12y%$cLy1h4|(8V7`6%p<%2+Hy`m8-qPa& zZ8l={fY!)pJs{XEC-aEDrZHk`5;GtFy+#^XVuRF@He%BkS~(<#Ph!&hT8GEO&Tlg?2Vj$BUU!1~Jao4J%|tJCnpPM*5@fE7*^@4y**E z%<)RvtPhL=1F%oAh8J(ZuzwUU&qpnF^Fu0YM@mVYf-=iDRE&r8)Yemdy)0+!N=n3g zb~b62Eq(?Naj4g7!^C{zx@K~!Tt;r%InUa9VT5gICHPo;Ki(^%$`)_SiQqk%sbPqd z?)Ff4%N0)f1Lj3Nb_hRt@2+Jg43;2D0JB&o*mlSB(y;FrflB8)YnxH2Y+^XwyNVY7 zp+<}i1a?`}^xz78z<7)8k`3!v!UbECzmz;#J5p_$e;#$D)7nw#y3eTx@Ui3>)Z}kX znm))*Hlo8qA9&7%d8h7aR40Y_W^gOx8QsB>`iLz1D2j z7uUQjIJr{f+*QEFg`^6yN4YQNn#Xf=k5e*K^ z5O*WBb9W(RH__P!TqH9-0+aULfdVQ=GP}@*4%iS{gk8KbK6tw8A@`9ZKW{@@8#ox? zHKPQ)pI96R6>>IL-XCO!v20MTi9xVQcCPH@s5@q;Y80jzCJYJ`L5yB>w_;V3?DlV# zj-7Lmg#b~Pu-tYgQpMPU|AM7pUGvXJ2<3n&l~;d6ogI`M_hSqRLP+pc>+Lf2>(M&T z++k~T2R}PQ?Uc>-(6j&sZ5zLBTU^v(z>Zy6OC5<~<7-itx}o~TSXz0HYrxbuV#A2u zCVvO(Ia!=FEs2bzR?VmT;U$>{#AEz6-#w5+C(D@#k>3&@fz{O_kV^y}!fGmDxv3aLmr0i@z^4f6WE~?PMS%5tQ~|^WskF6F_oUKfpZ9|= zL8?CU#MRY@z*0QzHo_l;jVy=vC1B&3>_J3{>zD1zGVrh-Y4ly0Rb*)7Ob{Eznk=QV zYqNMUto_8XM{mrPM;f_78R92}hNS}GS6h$HICRdLMr8aYJBXl22)*!cy&^XbTLsS< zuIsIS$t5ELng-=v?SY!HeWe~Ki6L-}WT8_#b3VaX_;e9$KBWN>7Ul7_*hd@331{gx z?o1;miWcyHTH@SrR6y!5(yiWraiovXx#@Zn!7OD0|E<58+0G+lFG@*b7F7DeqfMpn zihJe61=EREirff>>XCfU4-)NF1R4jP7rDotiShnIzsXMcy7fv@Q;(2(!IY;%d9puq zU2!cKL&AJ1(0jL|6pNa3D!MAM5@(Nt21^G{PdmYv^ei=vfDUTk_eizH%_kQ1FatL< zHWP#k;fA4$G{AHuP@=DE&ADdX){n<6Y?kmiuBW3PHbW@Do9rdf%8RnU6yn_`t+hF( zJ>Bev^L5Q)B{EeeO+*{HO`+bR>}H3LwR4zXLuBk!);P1u%u8pL*a+|(Id=b*A#7dm zv9Ple5e*U957O69$Isp$(I0Yiu5P%sO4*X@gx|R;Tj2@T2ZJxsk~qW4gjN7lvZy;& z1Lq%-3Z5s{#nG<&Wcg7*?KEgKT1^Ufdz1G~fI%z=`=11Y1!?-fLw!#;HsQ)CjdwTxcaeUNU z&PLk zSuK0yq$m2bB^~e_k_nE{sth}ZM#edLWO|~c^aw?KfsCnjqr9Exn$)kI<7B`j2|62g zZubHW%psOt=Z1O2*kra=b>W*?dg3x>&V2&=;Z3^H@$7Ext9F+0z#MEpm;?etB%Qs( zjZ1kLv>5|hIf{BI?Vm46U%d_D_y?Efj`dj1tj#Fys_<-~Y@8&3L}TZXkRxmj?FAsJ zhq*x#@gZ7>(XA!yqd4iYp$MCWFk`g^N;$m0SnvKl-yk2igKq4+X8`|*I5eL&OdF(? zwMVy|2wayzKi{{ZiU%R~hnYD0U8_D+8m9Lh({VoW=|DIkCJ@TEJlKVDoASZPwwa#F z90!r2Dcpjk@{NMDXA(noH-IkIj@8|ArLYI5#BDKP$ebgsGr0i>X(#1)33LfX1 z-Z-TVQd9O}snj@{7*P1ReOW(SLLR~E8tcZ4OM~3)SpIWveNZ zuAiEft|g3HBDml|Ctee|w_y9SrpP5_5tYIOJu>p^DS@_PW#vU`U1PjhYEI-hvE&Pf z_q4ZH>ps-mi8C;PGG;svS)%*;M3HySod;R`D9`8UNWOeD(iHx;U&QN>VO-Gc6%aNI zdeTCKaH@5+1S=iHLJznX0m-$P*CoA$O)2bEsz?vVBZlAy-SeXzPjuiAdOul6n%i4J zu^V3MEkd(%SYmo&$)X_s{2D>8y>&37mH_AIVfZtZd{_}YwhWm91QMC2XTogfx$Fr) zr~NPno#QcpE`qmj@Y;9@erY<{|64Uv@L!L~3(qz+oVPfa9a1cqdO80KN{k8N2mu98 zMkI6BZ?HSq(GtBi;pEk+#u6$c;oDG-e*a7oji`yYUJ7<*=~gydkhV}q7Bd3=+Ttj8updFdKz=9J}D;J%!RZ-8uI z(_0cDa|mbk;%OzBHy^D^m-MlVldqA~@ne-#T%TRELPvL2d%)H+Z7qr>u8s4vvi3so`=u92ls zB3k5t7nN6*QE@s#^TAQ~0p7?eemEw@h!uxBfPt?R0iA)<3Y>cd_^O>3i5#K8{zK>I zw=S4gFD8UQZ)2EkoVhidHT2YdLwq*SE)vE2j8)>lQjG~YBE+JC^9IDFpk6t@FLjw) zJXyNLi&18O$g)UXNMp`QEjlm23kOidHum^0z0;Y4IOpMouv|rEX=YWvv zarEav=1r)U;tV`T?J<^6J)Bgghr-O&N9?X`}EL;{JvWh zO&JfmSlRvVX}0CLLJ*QR&7xWj{XQjB4FdQM(*8IZUFccY zwUrn8kD*10`XmWp3~sz8u1dFK$U-Y*S9Q2jLK-iBA#Gv3qKC>fasL4q%iu0?j~~`a z0o`yMjK5B3^f|B_r!CB|om_Ni4WB&|sZX5b72-8vr8cNaB#g@KUD>~cNRCDHmj^&k zLeD~O!-m-dci$~aM0o=9z{e`jVw^rU7Y7C!*00%yl17Nj8L%U*;OEfz!8AbZj;s9K z2#Z;`3b;S{*^R*OIs*x%0#yx$8o~uY*-J@s8yz*u=i#25Zi;AsDr8d>+Qx8wu|_Kt z`_MoBy>SYV>fn}$%4m1Ao}*80kFgf1zf?VQqmW3*)rRUdhg$7Q3QiNPBZHQD*88U` zavWNS0;^6yct|ioSRf!%EnKZSp=IBlX5Q36`Fx*rTmZ2kzdp)8E@R}@Jy(@ZyokwM zmaRV#f7o)4c&j7nOb*b0>J>9}8n;S|z2X-Lw6r|new($vKk?yR*3bc;$@oUe#CR&o z!gv@BXIbBySNcMGf5|#Ls%}5y?bkL`%;Bj~NoPE2Cmlv8Dbb!aMhr9ALIT~>RD1K` z*Yg}I3bTm-Nw)&`z{6Y%!m}EmGa$`WrUsR);^1hZFw@u`ZH!)VwJI!2=)f4)n$RoT zpEhxlZEThJddsz z@TfUwAZ$LgnyMbR%mXNDH_{6-8v;4Wkq#OoKL8)4(3KxZEyLl()}$WQ+oc4Jdi0;E z%p0E=JK~4Na9txA94e}1Y#pfa9$rvO7F78c^>c^&7Fa+M@B$bQ8reDK4#J&PGX7_*QaLWhxDq@c4Ty2e4+t!(C~*meyPP*ob@-yo1( z^v?iZxa2E11KQ(qmtE(*-4~FVtVN5ypNh~f>#*2N#F0i5=a^n=E!N3jM#*+ts?H&V zS0%Tn^r<&97LsvKZ0l#oq}lcP^l2F{2krGFmJU{$&hx}u{PNSz5Sr!=k zWAx_XPG*YXrUr5&j{fh%`La*dC|)aOl7=qYYxj^dVVP<$kK66r1nP&nRFB%Q6=jL(-M0)){!&LgA1KOf%3a~utyv-0|M_ZP9fzc z;&_Qo>uy;g^I`2+U&Sum*OyglI}Q?;o3TfC~|NmhH}ma6DtXrc41d>_~z~M>eUR#5&@v8(!fZq)qE(>d^XT`9eHwUjok6j?V*DG`T{RCt7H zkGFE0VcpDQxTwkuj_dCDb7sNlr3|gTbqhlWvFNZMkkP8T>1e+-5407pEF|6OvdYmy zb_}znqM_H{0}@aIbXX0cnb^<3IIdhKcuB(Mg^Dg*k{Z)~&KSfVhRRlEQ?@FKlM!?? zTUNYNxrz}?Enr@j=dl7)N|G87P6t@{Ah4NV1zL{_Vi-(A>xL&cHq|Oj??ba0Vy{r< z#tfXVWdYbwHCa~ zFq{V9)Sfd#?$0NO>_(WD_>9b!LG-hZC8H5J4B!wa#vVZ~CN zybFTFjWJSb$S4On$0217CD#XDQI;;C3*;vp_T&&)es&h5^Q;LDW5K@Z6)R*N;o^t=aq~&0!IS zi*Tm0dt2C2?z7C&n%azr^?M1;!sp383L{NxEheoU_qxn_Hj;8kR;U%Va zi9*PbLO#YX$3`D#@3u+J-qp}hfSY1Z7Ox2)w7N#1=6W?LmnlLGV_mQ!13i|WlR0>k zTeMv4BQ+zc>K{}86DxmEKH(==j9U4u04W8!%_^1eAyq!SdQ*+~sW%Ex83dTFcdX zr2j5UM5=Z--=mSXyYq$LN6?LL>|&Qt(4J+MaSw?yZ9~Pi976R%N?wjvV&ieru2Qt% zLxcCi^=-2FO&QYL&j-D??ywR`%xsu_L)iB-GPl+i@?{ zR={222l5p)n{V!GC;O5Vx>PuaZ@@W4)98%yBJaMs*IxlbIFy_()#V1|QC;VI4V|;? zS%6YXIqPsTd*06X__vMG_@bx1g{;USnL(g`3Ui8Fcj`j&Qh!-8sMyWwQvV%fEq!*x zyB`;w3GcQ3f}4T3&f_U)rj+Jd?Snym{kyw z+1%GBNSdk23f!HAih;7m7%mU{4^zNnmgt2Dbo*d8(@%&%i@JtH?4$h)b-GAk)pHSg z^?M$Sn%%9R()^xH)*i);*vN=7c7b!O27ftn@2RsMC+b?1N1w*m*`=3w?H6hlgz{(V ziPq|HD5v$*(sMS>FbRdZK-#?hA6SR=9PQ_n&mNcK;DH%$3$Gn zggIAhK5v><1gcbMF%CeQ1$qz~pv>u@jkoZ2OkanU9qhvQ8M$B%x8VDa*O)lkPaiUn z@#1|pK3=bmmXmWI>Bcm!X)k*iyK;z{y9P4g;fKrqfWR;uSQAyG6L)pw46cG~tx?#J z=bJk5c=*|vA;YNdBkfWK)*;3;?PNCjAQkfw}OgK zHg6s`O(w$bDNRJ}0)NzTy7?YGx$#z)@hVmpxkzoGG4<9i-W%=Pss}9|PumN`rAT=yx3iMp!45oKiDsC0g647q8710+z(0~1gCdiLxhqIj;VE*O zRSog|0eusmWuKl6^uQDHgd;3un~p`Hx$;N>!G~OwGRKocelYd1b^DQrfe7=GPI7iV zX%`7VYe^N{gK^L0r2FHEjWQ)%mHib8$43Z>daRASXzkPZRFt&AUhS=UZdualKIQzA z>}Ui{IL69uxFICl{*FY*bGF`f;%kx(>6=kHHYMt#N|oZy!$&70&v$GeQ&;M>*e|%3 z7$ZbyH?b7B`7^@^Rz6SJgM?#>FPlRa)y+6wntkw)@UZXKx=4Xu0roPnf6ST#r_gXM z$Np7Gl)+>-$N>1c`f&Qb0cK`-o5U|nY82`tVt`iF*5pzzSM%p(RqC%-1nBgA-Z6uf zF2D@2^Bnl==s66vGSQ=cFW;`{$lup$YR+yn33tC{`50qos#y{n} z7k#@(Tj#NHa452h2T-ZSuztcr&Z6^m{*x_8_@nlh!En^3MflamBRStMO=@F?=S9h} zSLJ80-O!aGN*U=ia^S;KR5=*10oV_6#>VbOod|A?mf1a$4L%vF+CB`Y(k3C>Nz6CW zc=)JR>68%yXw#TVSo)^X`*wH<&1pu;Z>*&)c_9-6P*3M|%^uGYp6B_TXHj9?6q;?1 z_31pfo{Q1GO;NW5yJyM#)=4Px-#p{`qc}1yGhilPR4K7Vjvf~ZNBzBzJ-EhIZn7Pn zvW%Co0+H*uNGIQ|`*^%GWIMXsji7dF5GqsP3U zd?in6=P7H#f&!;S>JOw#H=X%taM*tv1{*m0mpN)m09B6#e=f0XcEXY7F@&Prk5k@b z=!tJVAL0;RB}eYYND+;QN%MiEYPb*>NHna1H@5F4C?u6%F7^kpMj5>~R#M z4Cu|x9}Hw&gf9){{x9GT+yA0tGY~Mau(AIatHVgZ&dkK|-`)S@?Qk%&viyG`+A&R_ z%F5SRtS}2P&J%Of^v;m~OwTdEOu)qSz(PUJkm3;p#RTEZ;%<-&G&BT+G}}NA`L|v( z9<%Si%{_M4%`ZEv+ppi+uY)sHW_@(<0vm!V@eppl@&0)z{0dtAC?p^VC@5(E)_|EA zTW}|rz%S{j8Cz(<)}DCq65k&b1^K$qY-z|VU$e3pVE|_CEC2!n0C8z35?WFU2m~aQ zwM7q}ZYkDq7gy@o?De-hH+_n$W4qwIW& zHe3wAIj~MH{_I=Ejeu+bFmW#SrR~#RLHlv`e?%d1zyMucT_AlkHb9aI-PBC@Jy16{ zfHR@(JPJ7qkh@M3f4DWw4>v2Iw<`c4@U~4oC}5JQZRqGgpc@cbdoGHB>zQF-z<>e( zw{<|U3rzqWbczEyqv~FmHvm6)Z~!ELZ?3J~onGL6M8B+lS66W}bov4C*gEjOJz07G zn#ffD&Q>mbfN1|ORuHas!rQO@9Q`)rwU?PaxpRI0$S)&+x0=D;Pp3wqex0ptkgYx0 zUN4XzI43q!6A)p<^DCHtH^KgIjT~fb;Kug!Hu&4?J||JUE<~>%AqEa$z_%^%!9EbP zV4n_8-i4&!=2pbrFL7g72e2?GDCqDo381_hz|!Un;2T#!ejM~u9MY4P_i9jYF7yH@ zK&KV(1$>ymE$^GJt-c&ZAMP>W^Xq5nK`$aN1c-m%^%h`@ycavrFW>y_ko=n7+s&7P zy`6u^9_}|kK>zM+?{C!&2ABX*miLd*&uMr-hG*!;M4ZR3?fb4IC};BSr49beA{1O^hpyIQ-O(}&u4j-QkNx4UiHG2*N2A0E-ROsFkvsQIAIO^z>-wB94p zUi4|mSpN&c?Y-VwGypzv`8z*nw@s5%cQ>E5ZHI?AD9={z-+w4ygRtPQ9Y#V01^|o@ zpwB(%9R&$-Wt2Ve4lOZ=rBC=MKz=}wh3^?q`_(KyfKcK6UtR?V2LSoc)-(9TE}=cY z!rf;8!e4&^0E7>C3K)QmU*Jf9fAA*%f9cFG{5#r)L%uu^fU_rf3P=FXU+}=22cjRq z+Xtdwz+0sJAHZP%{#U=gPGLO1J-_Mk8Q_qPPMRP3ciZsa0lykDiY08zFg~u3rX)Bo zP0SVVdxe~xC_kIGee@TWBxPIQUJd1_Q8~jb4?($ze=bm)sDZM0aYaV(w&m|1-NKQk}WB(TseTztf|@aq9= z<3s1`=nYi~T4XW8y57I|^#dNhCsKkAX-PfMq@jYg*G<+s2?p^Fb$d( zV-1xoryT6j(y|)NS}j zeOaV2-^Q=i5_WEw>(zySIDHJR)_A5%gHU&wH@qY4xLkH_) zc9aYCbdOuZD&JO@ts!^0#MJ(z$vA_cJhnxT(!9E?tYS83@h(H}l8r*Szp5V~Aa zEXB@Ma?uf)$2_4)+)ar+50&?C;tuZ0hmVg;H}U4G~)6Y^QbliJR_8niGZ z%F)C_a%T~>INeqkPPvqL>%sN*lG{S-)@Uua7A*4 zv3R1d@ttXRDcM`at&5Z|u+q=T9>0_?UdqAV0D^p)`^o*-)=nh>HHaBJ;`po6cxZFJ zYE27%Br#R^C;D+TQHAaa5Po<%?hBgf6uHXX%{zaed4wI!;@jPMZHDEmntNAuGfkLR zzHYjQQI+wOPVSsSDw95aQQD!Ll6-5jyw(R@|I8uBjlQ^33A8}^k3kQNDFlF-eRxzC z{C1ybJqzE?3uf4@0r4$=LOoRTcE_FBejIQU4^nI{B#!Tz{8 z3x)o9nhxuF(+hG}U@?WG>EEK5svXyMzM6^8fks7*s`O{&hocSUEEesAB2!UFy)zzS zZC%(5ohm8K(a)w}#s+UoK$Df>?laMbW5CyOG~hM{(sCu`#y3jq0e3MnqIx}O9cFU& z(!o`_uwDN-dDQU`K3U$$4D?%A+KHGUSc$5$^g=E>GW|wQp_C`tkp<|SD3%5Co{r?N zz4tkR_U)16%1v@Y!BZmCFsVdZzaT6kPST`Cb1KE)WfI9596x^ZioXHh3hx0U8rlw4 zxaG%F!71llP#Gi1;L9eMtBtbU&&WYfil#6uUkxy{J_lyw&zdo6%REdcc3vpJ6`onL zbaGM!;~4}Nd9Ol>eS5h8UZ%W}cwea=ziVzoabX_t_9P)O-vHI)aYorCuF8{^mTKWc z^M8xeZ}LCe9%yUP@sVPzl*z#-ZuJcgtG#mgKnq04PZ@=#F`vcTMR*5F++B2}ZE`xn z0fd$Q96V328{;&fqIWB5{e`O)emWZ0^Wa!(0j5~o*q ztO6fEb7*h-Pl3fj@{>15$Vi&cNY*2@qGi@fZ#HkjvIBcKm+4A3%J^Sw$>YNeCh;tv^2BEl_cX%ygpBX|16;Z>^R)}f>9}|VfxB_ngudv0u07uy zNghgnAHkQcE00DJO?oPk8!}xrW*<3@dU_6H&)&+rXhes_dDM@Mvf>W8P{Br?Kqpj| zVLpCD{#E}fuVm`R@+&OKvMC(iD63qLK)Y0nbi zU2mHRKI3$;wV2$`U9elnMkT9h^8x1&akPm*wNwCYPUK}#$m6f&xlJ@>{go(Uc){-j zuw3-eSXt$Um@KIj%T7HAbkb45H$4Zv799`ey;iR~MRpY-+1{un>*Y_h4U2XWG6fwB zOMNYIgA{kTMV+wP-gu^nh4%3Ik|PU}kFp@p-QC4N+(BhB|93}_cJrXx_@coe);+?L zD~|%y5F58jrCo$cvcP`D4d!PsqJG-b90H5?NoEkJ&e3*W}kI!;{$%mG4KGc?&l7#nYW( z;tdV2YLnaHI5Rm1(?_!Y?W;WvEA!L$u z{}01_1JDJaLP7`G7^s?!Z?ch`==wrMuK1h}!GVW%f2Eg0$fr^tsw=rhsHcj10WX=J z7C|2qR5F36jjovt7X#RB9(vwXk34&RTebG5WsOL8IQg!^r+t7#KcQS63Qr%%gn_(# z`N=zo`dD9TGP<_s@%(H-J&^~a)P0nEJs>qWu?xV>*1KT-@&M#8){e)`MfdB?(ravX zP>o=wC%!dgV%up#}*tQJ@i_HKIRPI+9;eRe*tv z4FmC(f;@Dd$5`WEi-@e*C3PI>S($;G|9ZJH^%>IJ^tMe3&P(v~`n){MV< z0rPjJ^o7{tVx+N8yTnIH$YfS}&uDTSC`QG0ouEwkVtn2`6B|;#E<$r@Tc-(PxJH>u z@X{Y88>%d`Q1Xjht$&)l4LiFy$6Z4`*Cu#K(g42r-Dok%lLAQ8=!v#>(oyM<$IxiB zixtXrmes(ERE{MAHO!;a$JID6x^IK7Rv+CYwUuy_@Joch-236_!CAzHQrYOrG_KN$ z{nP-Bn6cb>v1UW;mOX8vKkIh*7wm3*u-4)TOx!Mi(c%pv0K20*-VBFPTlvE1nq5KA zEWPR2M0xpc(Q~?6Dl%A}(Owmbm0!6^6LWL7`!10(8>=f~4oBweN|0kdr*BWR+#bM| z=S^~$uZHg@ud_8J9`SGG4Jtpd>v#b8h`IGdkz`jnJ?(G2OyYNvdtV?$mDXipwVcnZ z&^-C)1E{W4>tQNy!m;XFuTxnX8whyR!5O1zg!6c-Rjfr9uXE&F7)uXn z(-Y<#eLZEBWF4VN%Kc=#JaA$EGiR+G|J|+i*}6Q4NomlOLY-AA#3zdeu@R8xT|tlD}dw8%0udmA3&nTRc8Nmm|U0xeK5Pbzs& z276JEwg$n;>}7d#W-{&<5G|MmSjQVR{208dVetIl?mF zJ>zym&_kD>P0ZLZ?SI-yN!iS)-u(5H#x(KBEObi}n}NRs$8~GxywN{hMR^&`i6c~eQD#Mbz+w^l zuP$waEnAt)Cv+_fxgOPh&R^KO%81;-DfwMre0s}2K3;d{qA3BtZ?!rx;(CD$t>I_m z8@Kb5N^<4*P-vAv-b_tj+Q&5WPoubNZAL}jE-=hZXxQxgsp3lWupeP?7@UWM z`nU_}6M`@52rCoG(6d(m1DhQS1MOz;W=KuW4rOR?lQ!zx~3eeM^A0keTD0KFQWH8UzD-)VU)<7 z$tdR3O#ZM9{HbOorcHZG_RU9@)rt4|6is5*jNGZX>;`h0H?zcTCxD$e`-Yvd@CaZU zb>+kC-jS<4URm>R;i$ZF{aEftoD4TLmCl)4E_`xJL_tBCmwx0V!D9`zYgrU%4wlC8 z;#Qw~1;P}Ak9EbX z7;>9%W->{N)~E~if>zAi*6St|=VEz%gpRo8)-XnbC?woU!8qHmVi~Qx!Ds+%+!P82 z$^b&PR%2t4A&Yd2Ztx+Fott$u{BYS3KFYc;2NuouvhRxVl5J>S#V($7t!ziUR`22` z54oxbfP&e*bNYF<4phahl17$vMD8S0{-StSbw_!IZts&D@s1~OmSR1JC%u6Q{kXnD z*+9aT#zLF&RLSO)Fv%yh{T& zdt{A#EuR-qLNGkI{IRNQV7%{wklF;tjJobY^80g7;P8?@(iB4=mKX0?ZG>WG(SsgZ zJ(VZOxW3+qXVI7<9N55G>WbQ%PQ*LWIQ7ge;q55PyDndf8>;Q3wkn37D=#uHPch=X zbx4d>nC<0iEZnJKLAa!J=BB{c)^g)!s5Fe=BW7F5HjQ?zU0VJ)L0Y*FnU1rZF$ENO zqqRlq0a;WRv^XANbZ>mcUdkZc(XyIRE=|_o$Xn17<@O97rOPZ>CG)K~3nrR5jJ7Ki zRi@)Rm1!@G3sx4EPdR$bkt>Z;;*~0zviacCApS}V1*v;O$^z}DoYoO+I9E_(b^0|< z!cFi@BB!g(z}uI+YRc2BlB@FE+2xSdsnWDS6kOJvfoUg6ZyrLvc8I;Awu`)ZyM!;K z$hUBdQaCl@%BOrG>^D_m!iQJbJSxI(mjFZo}%+2QczWHDf@UN+zvdqM=5 zy{6Xe{fY&!I*x}=+tYp@(7cAR)i5=o3%SO}QK*EVwB6TxzO5kcYrhT6uq{=V&mLn% zuks>RIkp80uNRgP&$4c9%E7@yOM>3nA4&{85U5u%rc62qDOaSEY4oM3K5tN}=^brz z%_7~1fVFs@)}OEaAxJfPPv}o#8TCV-Es&pAAp5PM%jm1xccd-K@$cBpSvGk1?&Gz6 zO*uG%H{uV67V2KtWq57wWG=dTYow)O<(h+3dQ?Uy>wg$Khv-bgHi5>rZQHhO+vwP~ zla6h>W81cETOH?1rZ@kbS^SGxR-M|_d5ibCcg~QO8l}JaW5rlJmvl%^_M)F3>fARC zxJjv)&N=I!Jrrl#;emd!E&GiXDKNK>@Rxh?Udmt_GG+Z?q6|n)p3>nGvk+0-35M7pDF~9E1EP+jeQr$uP}A zS+u3;8_gJP?fgC-CBkc425FdQBIq;ewe*WO_hyx;Mn>|$22`dT_n;|dZ**o|)5upC z`4|JqMj7^fVn)w)@Gpcn7oMW1YMdX8KKSCFDSDa4@k0L+k6b5m%mtQNg#v6MR>A$; z&cg%HRbzf%TSp-K$VUMv^#PtY0h^ir|jzv`i~kSm}yK&a%q zmi7Q7RP}~N8A7BuJ7(~>N~pB5Uk2nhYk6<$;rC>M(a|Yv%Aw%GY;^fWPJFTw@wwg8 zV$}3Vfdq9W+))Bd@o>yPOfIZ=ozZoF6V(V35&r{#{wJ1rBy6>WkW=ok?Y) zkmX0jC=XT}-Cz{fT3a29{vhIbWA8$LE38CMgywFYAnN`6l8Ie9bGvAUF;kADc^V_x z_g1&rzv#{L{kyTLwcBBZ+C6H}>Y%>cKj%=2x+}}vVwf#tMsi`YXMOS~b;e0mr6(rM zkGGb)1b`7o-gA}hrO1xl>MY%bboAUgz`l^zENK?-_qQXzVZb{#O61*4Bc&wMKql;4f#_ml`M9L(esN(z3Uj<0j}&f$!09^ca)YNuextlc zQ72OHptoRW-4N^8+5Hp`B@LEn0Jg%CO|p64MVB8-@h#{LiA3dEAKAZGYim zcJ?_YspGfk;m&$5r{^x5?n5b2Nk}!JLqc>{PV1B~a6enfQB3Q4a<4J9X*ZwoFB)SZWbd6ferD`lL76nQ8%B9L=lD?Sj z+RQW8AnM?-=y3@<9CqF^GY#=sk?AiPkYs~$QbN*n1P}v@>}$`w16f-5sdH$q7vnB_X)< z`(#V^FLnbedu08a9X`}WMQqcO-m8){n+y@GPL6l& zRU^??HC2z!QjntbKxd0^iYD*#DbHA$0Ema?;duuoiS;iw&%akeEMeSbRDu%NmVid_ z#Sb(iW_lg!E<0JReDnzqUJab#2G_F@QtnfE@~e#9`pM9D<$4Z#e5oA@IM4^}{7#4Y zsoAh9H+vnD?}tO-)n-sAXfS`&ugs$`XhUhsB!cdxCao@|G5k32qLtgC8fub@n_@>K7e0s%RmjXA*)j zhA8^3)MowZU_46rEnh9372##-C)#2;7viQ6}tT+Rke-vgsu$#fwX>D zbwT)Sl|w#_M2ea=x2pS@h$b}9uANteK1K4r!5~4eV-F$#-Foo?2%?m$`XKRqI|+mZhd0DIE)%eV^<7yZnXRk33iD;<&itdoWDr{VIt&Tb;F`mISYit$C02m7G$T^tq8yVRQr z5@UVs7x3t?=kOHKFf$uRYsRJW9iR?W(3!5u##;oxm=q-|`*KqIEQC*Mt{NNEVIvu1 z4n!PeG~){;e_h@yX%wn)y!?H>UY5TYhC=p>TU@GPez(NlR*kR&vq9RvM4 zQnVFP1KU+hdl*Yh0&*gKylQkKy!M1iD?x7~R8s~ZiU zY9icm3c9ydz?OTnm_(mdPIM+_J%dsKvg|LKQ#(I$7cGmeCwzp6I(_uccp<&W^W~uu zMUZmQd}_W%F+~Su{bco8KzJ#C{m44qlT7)pD|2Ovidd6E>lq&!wV8CmO}39N3JyA} ziThvkt#?|(2rO0KnTbZvYl~OTPhq1ZSRBj{H>+rR!+YFnA{Cmjwf8W_-zbkxS)lsi zBpUVkp23g1<~$4&Qaat-DWTy|6Kp`QwK=ISrPLYCC|UNr3tF(hvl*BOZ9k#CtuB5& zc3JtZ+^CmLWK7f`0iK`BC_^drI$69D>-t%YbOXdb%r&2H$9P^CB1@|sxq=jN242CY z-&b8Jg-6VrixS{t20y(>buU*DBV*txypl43lK0TuMX2fl-SIwk2HiGl&8=Aa62KUv zlbv1e`k4k($aeAu^V0$Rl4h0iGrYJd>O9boZ>|p2B@xHBW0kcZ-Qlj$ES!&_ACHqh zYJ`om6+0gYT}Kf^qcNb1@JfG+OH$8ACFdQ6CYsDSXG`_2tXZG;#mfKnzqJlR;F(3= zLunq;?#CUH?C1#+P1EJdP0)d{RD%W$4VD}D$lVr@67C2xt3CsOD%#Ab{~K_{ z{ojBqPA2yMAXfhhXG~0-|GW8ri7V!ReKhX>XW{H0aix@_yF@P+STGQ>wSP;Xhq|o~ ziDi@k4B_E{NRTAt=mCqfy_36-fd>NCah&tiLwWc5qyCDaKGf8yIknm4v!ql}(G;1z zl^tw$O*~77_vhLHC@C6+=L^W)ok7FhT>%XT2fn_E{+y5%CKdzg609|%`#ppR8XPz` z-%ds7%rdWtAB^bC1a^NP#PPoOVBcqG7GdAa67!9)i2pCV5X?CY2P9P^$niBX5hWUq zv=1aA)%xP(d&l&TFUa`}77!i?i0^bj80hegkWxK15{MEQk8aR)9&Hw|9q{Fgg;7G& zSU_n3W}~yayXVm8>FMbxOtXtgON34|6BFom|EvZOdjcxdB@7GX7Y3XX$Y#*D#%Qz% z=zKj0FThT-tq#*F@5XkM{pSea*s7Fri0|yY+{ro0i z$9m^4${oRlKGY!M0C3Qm>FXQ3KqN$_VH6|aR&d}Hb2P2oo!m@dp~!a!lKIt%Z*GEf z7_co6`F!XAHw3Wp$ZC+lIgp>kGcyQqUM}7So*=sbS+mdF)Ay88;?txTcXy)5Ce+Eh z?~;C{gpH>LpL&2_69Y^3z$d}Xnbcn`o_Z>9uachP$6#b)Dm340O17zD8>?*h_D{~{GBj59d#ZZ%rU$( z(6{^B^@~&FU>_(WWF`l=j7XLV>}2nH&LUxC@9q7u(8wcD;PdI)31~gw2XHoZ@6|nh zL)=R6v-s0#$YJhejjb+U)`$KxMoDaZhj4FlfDBac_*f6h#ns^nz6RlM?l1OU~a_D^?St8kJs`K z%==IF{hs!>gXni3Zjw_&3t&qAC;jK=2x2qHj{lpO53wfZ=?R2tQ?L&BI6$>UIDoMx zw5R6%=VgKiG=EJ9@88>Hz9<;)MBt9_DUFdOYjvOHi9^@v9exwIs1VJI!v0=7Okh|@ zE+F7N4|8hz^!>omn_#?8ui&ib{Vr({iPh(64|a572o^}BPzW*QjMiU*4~Q}DOr8z0 zvM&;~zwCwa5Tw5HC#D_P z7UxG8#21KTzfTIN-{OVvuP%D_J7EH7Kg0*7vp~6@2DoeEN64ez`XS<*T*DWrK>By` z*B_uSNMHMrQ^avZqb2~TK%2!Y5#RLIE)d6IjaXHoHn)eg~vp-6B(thbv|)`y}?7I4q=r4xg-no_a(HTAj6C2VKX zg>CMSSLZ?Zs?=Q;ftDF6E^0gWIk2Eh+YfPj730pGMJI{r@0x0xgWGo7cFWE`B0E&r zv{l86-u+ndI+9GsoV5S}48Fu>C?`0Bq(s8ilt994lHX}6XQ;1eY#GO&I7QA>_=Y#) zc;asg!f%aO;Aw1i@rlqjrgkRY$%IcZ%saVY-XT z&^_55r4+i(Q03PP39*?ThKL> zlTpOz@K;2!WLB~?-MYF3Gs(J$_M?w_@^1pgXY>lF&w3vV_neX7PI6GU3bYC(!|en| zi$DbeHl0<%l|d^#)y5-XIS{Ln-Zcoma+Sokx)4ToMJg&*KQTydTvQhk`oFpMqkDq- z@i8esRg?t7u2 zpBz9;`<>(E&9qAK_v4A%)Oe<3t4n??{YG93TK=i$+^DRu z1{U8o9nuJnx<|qKo0R7PL-Rssp{FcB-Kn|d8UIw`oZz-ULj!7CYp9c@NsE=+V=9UY z%OLbE7WyQrL50W}Ni6*?3s^6rbMzW#X#)inIV--^11{g3-Avo~+vWjhM?d+MekC@_yPwTj zPq|g&#{Cg)#kLHk4eR6|x2PeY&+2$Bes6Ig31l$ULXR7;oZyaNbE>blC75?yI7>ox zhH4Yh5VWn=x5KdXbMKonb4(4ANGatC%7-Rc3q2_A4U28`iA@b$8dgom=plpb(pQvE zzEohtTSOd@5zb8Qsxib%nDn4p;CAw*LaDke!xy-wqVWw>8P(ahv8krHy#jF4zPy+y ztoYe!BU+Nna|%7by0ghUEx@gH=3lzVKosj3q+#`a*HQhZnpBZ|W?@q*KTloPe3nQA z6~{lF#IOOM(FtjI=w%?>Q#7=>Q4NR{xV4R?+}g zEV~E&W<|YMiMW31+b)cG>CZW#ZybRG+x; zd}v7^@inkth$vgGkS@cZQO$77qLpZhsn#<2JE6yrUW;Xn5XTzN(@JS#vX5qvoC`Zp z)wW&F{V=i7)8X!OB2y;yJ=r^rvNOfPKfcY)uPwF*womuzdN{a9T^fanZbFs?kk| zb)LY`z}JR8hqOaEI?Hkf-j#V8CE^MsevL5z30S3yFsAhW3ogy;tbhM{A~^GVl9ReF zA%$-2u=*&w8hR6(F*qU)X!F4xBAwo>dz@4>b@aTi2|4}yrB7=Zo>4w6gN{?ywZhg) zIYC~}P7^tOlS&|dEsv+_Lz0Ikdh$qhEqz5bE=h$3RFS*{F%nbGl7zOTL zk1|swPDfFqpDxg5Fy=wHfzw-DC)l*9L~ba;<2qJM96Q!^HRZkh@*nyXGSaQ?()PJ^ zww~$xwDGD?a`qi@&>~cO&7ngM4IMsX`BWuiiGesP{`o2MB)mt|-N4i&mu^9K42d5+Hbf|*E{_3?iyAmj;?0!s9tct#~3R^KrkUk+^80tVP0 z7HO~6k#ly;4l=aY-=<=*?%rUz_pmyriei@uXi!j7!Ly}N|e znX72a$pXYUW1-YCZXeBd+2w-KF^IB1s}fuXdnI;W88Xan()HDPn*c8=#zVNch90Wh zN(|#TPMUVfJR>!$?H(e?5RIq!Zxe{}JN<1CpdcJLeGC~-KDzPs9|Gc@|JqH(1x0`) z(~q1qS4Pw=WCFoOEK+=&obOam8Ux^+6sqt-uq8tYyXol8)It7J|C6rGhav8O`VkV= zjJu1zg;dc> zQPF8FM=dvI@(I(zmptDJG4wNHe+Asi;Idm+%ZN{{73Q0N(McTZJ)or)+k-<0RvmK7 zoVP_?phBtF5vL!rMD3WUW19*Ugb?RbG6b0KF6?-31{=h|bRXEWcHdoYfsPY% zq`Qw1QWTj8@_g)`&$Pw@Tod2R#>=p~C+kCvZ;ZJC3{JoZ7Z?|O?+ggO1duLX(Pu10($5;+a&H=+T5*LOHP)uq$T6Zd~1uJ!8bvJ$Wdo)RpE)Q1gJj9^056KuV?Yz7JO!~(s zol&N150)*grbZroZh#)_pN zB*{A;pU~_46v;L%m)BU$d}xv^8#8}{4yc_`G3wA5$gau$#Y`$y^a|e#{$5mZ`{_lW zfb(|SHomsE`o{U1%roIxkjeCeYVBiNoPFMq{UEc_?Uo?u92SQJmfZ6z`9sk5qfRKI zbqN+>-00W%we;%MUQ8n)ugMKQb-6oEg^|J>xSe6xf-I!sN3mv0F#SIN2wWXlhAcaB zdsc$N{542}aDgiVHdJ&TeGnp@f2&W*9V9|L&~EZv^1TV#kBKpEAV- zX~i+Sqk8G(XubBa#w2rvG=}NnXwx)NW9K!Qs6~D{I3xYcoE$?Gq=%v|NDuHv>-g7p zkF3db6&QM>aK(V<>*{CpnL(4=qjPxP9Uk!RJ|f2gBwFETCiF9uxAknSx!|64>QMmo zufB6(QwTVo><4FAeoDD)_Y~nm5Xy=rO18&)5)n~jOI$VL=mLf^gbV((pZfZV^AP>O zRKa0Aln*NWrD&iVe}w`lFE_bpQMmW0qZ_1FAm+c1NMsftv89ufb54l8n5!JFF2~6{ z*ZIQn+R`6@lrPR?I%0g-mv6}KRWb~}#=;y}-VsPFG_I}6Oxf#Idy*kX|8Z(qXse^$ z;K+a=?w$0NQ1GyCG?LWXmE@+w{3ZL2Q9@NMP0jox~8 zJEnxSb$HoN$bwmh9Bpp%+UH$^V+%JOOr18~Do-mLtov5u;I9M=c5^dwLNnGpL`6-} z*k5cBo{8hVrDZI%W7Ly!!izt03h{Sw92$^(Ysl70e6{B<5EbCzzKT4?*J&LEnYd%t zpya0;+nmeIn;Kq-!i_S{+*k3=6v5#i^hvjJ>?XfyOdB5{B@eMWZ2Kun~{ZY0Z&4M~mq(?4Ee%@wJq1&vi4%!N)2`z1woNv{`sJcU z35g~OSvIag?eYGnqHTpUh3=%f&@e;x(Iv3C^KSTnCh=zyH}=w>2tAiJhd(2vT4b@Y zrmO{A56`Oejm9C=&UZMbPIl$*EV`-qaw5_U{dX^i@h04wv+FqR8%{E%hM85i8B$>( z2r~0Fs=uod5f7)hon7^4IBmUFwQjZO>#THAa%0|9oCZt_FO*;$TMjr*etAY1Z~Qdu z+0I5JK`UQRQD)MhzXuixxH@}=Wu=mIota7S#f8#fxwJenkK-ImZ+|^0^vftlldm8U zHC&a5u7R?GJkoNV@Tc#0v6c5R7ysTCK3^60tEz^zip31vTK5#0c!#Guf2F1(=&f@n zDmjd(pp@qoo9*10Y%KW3;e_cp8SDHyPjE0)DNpFmlTW2utR@3B{Dk*Qp8xG_6>RdS z8G9cms)~wYF*fs|4a;f06Bf%9fjYA`S!v6_aWyo0SM{}U7`RKfW}SH)gwOM2RK7rV zJZh6%k*cW>M#GcLH5>Pqte&-8NNw0iY)-cQ{K&1GMjk;VIJi1et9MKb-e!X_n<8ID z)St{FRzsa0} zFO?8MkY4OX1MElM(q3tW)vPW_jBWxUQ+MiU)2+P-wFc?6yKDDe}_MUkCv6L7$m%l32W~OP(9j`&fAoyCZjDl4Y>+*!Y#Q)yq?yFBC8Z- zdTX%KgM0YGKjJYs=cJppJo)Uny`0TL&3tVXU^VfO5E6ejB|EK0ft6GU)`QWnyBtay z5k1_@-=h;?FYl{#n?&>iLz7=`3r}TQv#u{<)RFmh9PmGfsvQp6dF{7%<8;@Cd=TX1 zdNcmPoA&^3@p7$oG0VaUX6i`V0bbPyJ;6YHVZ;%@AdYz zYBQnojgsxP3o-d)2TSANnce)?UNm)=&`89L6*eH9-e4Zg-3?}rLJ<3|r(pjui+X=` z#e~;ix1?Nc8BuMs#xTfpXU8L1zw~A(3C}3o@5CH<1xK@rIst0fQ~Bsxo@)$OCJvPM z;em=%l#+G{H~z*c@T41SC35)HOHDscW7knqf=3o`pDCeDgLS$Xe{T-jTcX&NuFC!LgbCW zu=wWO>#TfJo;bRurBVzS6<|$v@u_GMycV@@l(lALpn$$g4iHDOX@i(K931n6z+YGr zaO5b@Gku6y>NRB}%_b6Yqb8-z$@1yhqG zt)KZNagF6C&zwBeCbbE2NIiVD2Im|ZEnak-3I=d!>6I?Z)V2Y?Mv7#QU69KM)88ThTlwuMqx(a$jL>UcMvZg zq{Ffa%mrQ-ONgT$NYGzBBZ@U2izfnl#h*^wZ@m9d;7iA2umOccDa6Os#i!kgb-&Gy z)>E;d2vYUnM*+-(Jr!O&wOvYeG-Y;AezZ8$hwd!E&u!_&m1Sj3k*wPcG{z2fm3qml z&u7Oh1!}K2Jh~)rXvt#kL8|Bt9TTg)6W+yZvX16_<76`pR^nWtAFDQO5c4DoYN!Oe zTYU0?qo{qWpPy2e%lz0*3`%!DSaTv1TaQr$P7R!Ua?HNSdnl}QR>7_vf3-2bp^WZ# z&a2o1#l;PRFPjVR@hU7AWu?z3O4_1g-$-U#tqI$=!B+jwCJP%9VLEuS#lEAj+4_of zy=uK9|JP{zfkzt7;CM~#QXgtwt4ej2DfwI(h|O8?17ET=nmKqi+*1F}*(#bZ&Blv^!}bTS5sC7N^pq|k&m zi9z;e$I?d7?g?hhTj|t30{@&U^p2f`=JKFz2QGC^T{+?z@PqvFb<<|2ksHQ?>%{pW z)E-rs&1%fj!8Y0qZK=c~=hr#Dm9@b2hu=d!#eL)%4;Y}tgA&QM;8~}!k0O<5ooM*l zgh2IXWW=UqpOJSeD#etVBTQb$$zz|&Cm6n39)&$(X}t)zmQxm7kyIm>dma9`G~a`5 zb<(K^`oYt8@hv5RENrj(yn3{9Lk43S8ck!}U%Cv;LSSTIC~kE?*pX2h$V#rIobWlq zJX$f>J3O08R+qye_}XOnbK@8hcQm>3IZAk6Eomx9^_|qh+NsmKR&wTmj=V{3E%M8y z{?4Am*EA}$?Xg;^dOqlclI{GH>vZ&=$p%d7TERPxVKI3h!4@Z})cF7~6ulW4qqU;1 z#2*ZcQM}aD5qD|&Iqg5qEhbYm+bY zgj+q;ElEooijUeN8M@FBu>rdk_EUR0^Vx_CG)JQ<@|UR*3;|-^hT!x>BS1nwTMh@5vffvYOlJps=)jrUFu`)68cU3a10@`A(HG9 zRU#2lZsw?xAGEm)6xMd91Kiq8FOdbDBu$Z7<*#g8;x)`Gdj94it&h`ZHe4kO&u`xt zOG`scTAb2grWmY2K-awLd-Hv9<)Yh~6|^Qzzch;+_1%$oiVoR?GNIhXyn zT>S-QUWih!@R91}OW})M5cY%B71cI|Smc-fTH9N%-cs%<#3Y~9rDQklbTUvJ^t{+g z>K9Nsb7if>&Y%JzJC&qTgsT`oDWq0`H>Nslg0H*nI!N7tIjG~n=uRv%FP)BJq21LV z;W-U>w(?ri#gagdpevHBFw;96AddN*K-lk%c`0dDaxeE68iR@Il0mi~qt_rP%iPN= z2(!z0g5$qZrX=$}5%sLEG1MY2xX}{N{54`QhePnu@@QhKQCLLDYXB!8ZWXG2i_CnD zAi?@xikhp6r03W(jp=uDk~+pPFsYi2n+<~ZZlY61L3X64>#hbKp#3Wa^t??dad!*h z9fy12vL`pB=5+>kMs0l1rYY9W>{j#=4{;;-0|<(nmW_#8r5O%@%3zOPt9k$nQ#~L3I%(JLN(?6k_`kyD`ia z!Y=K(>bP6cGvtrgAE{d?QFH3zNWy(_g?fFgzL5i4c&_+8^TXN2~L40X{)d4R324Q z_S-CYp3FF+OIAeZj1n^YDE_?p>iuyEdyDyv0JSu}XQr@AUr#f0co4eWLDj>M zTcT*6^VOz)Q+0!DbSl!3aMP5g2T((q;-I(!4G;>p8FYg3C6C=IK5t;i1ioorz%p+l_*{`~80g0Wa02Nl-{Puy3rnpPJ-;kU~AIf0v+8t6@Wq`79+N>`7? z;wc;M+|^(I%Z0XRg6hZQr7ms|)S=5@X@}4&9#fq_Q!1N?VG|P! z^nk<#X)r@suR8XOChJ$&{N{CZn;gKI?C5u|_P%=Qal{Z;bNO(_#g}Sh#!1kw0PT|D zu)odZjvTy%7=BlF&VWG#K>hsRU3}kJ3QQGF6W<$=Rm%r}OX+mN#>k&;rzWoJ95UXH zfADHK9&*k|8t2?Bwbu6-g2Gca6kzg5eWy9Nh2!-IN7|C;!rJxZ3E%=Sh$hM z=%y9cH=W~b)!L4V+Gi1K@9B`2Q_wbg6br3~dK#JCIO7aiU3fA*E=;=F)lHl*!(*5m zQFL(l$j$&MZOyQ3w2k-#`O97g3FRT~B{{2d8*k&rU7=787#+aRTdyRaE&wg5pE>>U zo~RT!_MnCVLv#1qscXuQ%l0Ev4?1NaD>3MIrr z;`#_47%MIT)9>|lYr;4KzxpM0CZbsWNZ#?Mv#^maN}PlMi8_nIA&a9~4a$KK!$lM3vR1Rk&aqD79Z4lT<7E~cJ;ta= z2@>s8D#5dhL=wcz9v$Xh>`{v`S~|I|X_@BGO$y5dVHJ;~+C*bp!uO_s^c-CW?q_sfV_ znHQ;tSQ?$Z$*Z6&-U6(U=goYD_=ze;l(^WJQ79YTy4SxFIm&y@nRPp7^POghmXt)) zjhr|Z)upUy0itzs>sAyOSkm9)@hkrBFuzMWR0g2%9+I7Qvc^{d6}+gbVCZ|N$)#CF z1hVX}@*`7H9E6BWt~5g`F&y*wi`EX72rTz-N)pp3M9g9>q)*i->A47v3Ip$`zk!Ic z0sHnCRl@iKI(N38&CwA}JBSh8gy*3T{e*Er=_^OrN*0!(CZlTZ-UP2W2X3c^Byk(c zSI-J85T1Y%55Fc?e{^d~sJz{i36Mbr3l3)O1=;**>%@3@M1j9Y`YO;64{GWS8sXke z(DtL~tBE_^D~E=M7-%{*%}@Mq5T2gqQDY^Fk1#QU1|@wJ1|(`Y59wSMIa=P2y6@DD z?>br#t?ZS4{v}mk;(z{?X+YonA05#dh(KbZHK*+p8UkwvkHlp)oWkxfWf0lP&>>Hi z&G=~Ib+FD(Bk0V3RU?=@_9A6CfKoQ^o0BvH!BvN0z9G2wDy#x;tgaDeII8lMUghx5 z7o_gm4yn~i7zyt^V^l;evN#=F&+GN;P789qJf2~7%%g;Ii_%i7i8lM|4A(J@cE>c` z??ICbD9Bk}G^^43+jw|Aa=Z|iU18EUFznPFfwEy2$7m&q{ph5=a*Hd1c(z&!(H<0b zm+>`%2Q6;qAe%pY&aLMA%Ox>O&|RcQ1)Ta)Szswy`0drX3NYWPcS6bL;#-D_tjSaO zj`Vi@wPDkfw=N1o_UL>Ii%BaReuh-;Dx3!MdUZxQcx{nbsZj-Bac z85c98db^JGU6=$(&-wU{zaNb*j_Q$-Cd*`o)mDa3X5OyBqK?cMTysc3LZCu;7r#W; z2L_c&=I$`7dNqS_Md5XMY{z*#7nF`Wg>uxR42O%^eo#wQ64hY(`l;e}AXodG7Dk}t z9abUgdN>Of&n&tlyE$mlM=DQrK~|X*{?c)rr$WCE zjlzBWp)vJkYkvlm(+Q~slI57I=y%+`vZJU6B7P>Ek|q8gM3%IW#ye}+Y@wu2oSj^2 z@0N%Ytg^4jAdim801*V;#ITC#msp!(XUf0ApIX>dENbA9r*vMdT96e>_t-plX-rre z>a9eT%y$d6}cl|+~VG%kLI(-d~Mt#^t!n2?&kI&}CO6}ZpqH-4pYJ`kpF zi2Wp&&E5hFiuQC@O~w7l;NKEr7;;5sN;uU#1ma4(2c<*r8}fL*@*4P_MRq*5vySAY zf9`(lr!uv@&X$mrM4~dZ&>pul?=vohKoV*O9#K z0RFRJ17X;%5ElY5s-e8!uh$Gw*H&(JKH^tJXYBSN609Wxt*Lo*x7=31G>_YoYfkJ< zGs?s%{3%t024r3CeznaC`H8Q9*+9y~hOqF3MT{_{thSF*T(NZRlB)A4`SY<#7CRVE5C$XH?A9?7ZP3s3deWc$${nWrdCT8Q#n&H5etQM zK5H#j0v54PeATE(xlkQdII1>nd3f~UEN_>#_=qo(1yfBndXK|@xre7>-dP{VrzPiw z#e(;dn3swoZOk9srrQGWV?Xg^N-=hL2GCW2TUr}m!GdxL~u+YJ~Br*THaQA8-5Cr<;08` zEX9K{A(!d{2B#Zc9m<-G!f#b?-(o>xvc(q>YrdqWBlxWMx{tTV({5>Wj+*3VTw_MH z9wmB<&t6Wa)hVtxnr^76^o;pTkh9mH;x%$82Dp%~!%cKwA{RO$2FlB07lA%i3T zO+Q5KUWa}ISvN8q`i8=M1*v^i;T*4g*su18FXIpBWp3Jm_gr7Aj3F*pODs{+*vaY4 zHW>Lg%ytl3#Y>OrN<&*jRQP*Rq+o^MMg^9DfW`KOtzAi}TQWRYip|NKkfgu|FGod2 zpOy-8aQ{t^5HkPZzwp2;%>R`K=KNpf;y(c+D+lv`=-~g019P*nv;MyYj4j}5OMZkL z3_Ha5FvX%Kt{xr{f7c=4#vpz#&`Xs^E*1nfyM_=Ek;fJVLM1K65{<{~zCLa5&iw?; ze&*#i0sPmVFYcb-<3dK}Lk*#WT|=u#kqy2?K!mIVqw}&#$$+5HkbywLpt-r^j13&m z_n3$yxR+7EMM+A2n3NtugS+jS)DzZXa|uv@=Ou=KMM!{%ovewWt%;C`;J{=6V@Ma& z@JirbLqtIQz=0enz~acx6+}A#KI2&i15WGjC#ZdhC!o-h60$e{F3^?vt`(PoW|8$L=AO^h# zzCcJIk5foslEe;Q!n;IRc*mZm_g&6NLi!U>K%Lh2cP~mtiWyy)GC<(}>q@pCi!Wfn0!p&1`o}Hqm~*c_sRl zK6!hh!2l-93QQq5Dsnnv2ADu^pn_f_%mKp#dBApIpLC(&y*#8a@U4_b;F3J*JW&Sf z-_r;tAn?afsDM6X7-(Q3rh3eNaph#LiB2a zjQnA53H)wp@m7L@yLsvRlZJV2ftrFed;b%M9Ig`aE#>c$%yQDEe<*+3REaBk4R8tKQ<-Q zA&y7r+ya|eX>X4P0t$vG!GMz?F#9DKNI^<*(2$Y_1`LYFJGftoYk5Kz`}F!N=6gnJ zhlw*OkjE!@9|>y`AK~$nk&^lg@eKU=`Gb*|3<1ftuR|FrAmWn|_zTqI3luZyi}L}| zr719g>8Awghjm2W<#8j9~?Hx?ir}ks%K9Q|mIB##?_ha|XyAzPhgLUJDI)C+Quq$;ac-L2_O|^^( zL-F+&7&R5bRvb6T1rTs}f zn*Jc^sthuXtsm0e5QO!x#9Cmb?TCw;;R!rWbzI-J&~;(ZhNsR@mphV(XqL@qW)xIl zELxSX*_Qya`mU+Zdfb^qGgrOy`oM|Z9u~KjBkLvfvD6SI(euPs$+Snv6JILUO zGd*ONO~@6q2!`b>f%`Wni{mMxk-w}t#0 zg@y_>E>g9g!iqi%ZC|v$;w=uSQxqdLzLc%E78tMM_q2Gr+Y?XM>})8LG8doPMX8XA z9GK^fX|ESYcQI|zqIj>v485!1Sno-uzgK2Y2x}!f<6hpFqh?RRd<03R#9zn$eF{5` zm79Jr7M>^_wc*{^e^9{5S9FBC-)nB5-yMK6 zn13^P1EK4T8d&|$O_|O+_(4F#@p+Q^3&=z^sj@5z`+Ga!7e#Yv9Ru6lW#UvI=-XJX z&lPT2J}vF8@`V1>WPQ3_S@lB{mAYcn%bDNia&bu)PfN0M@g93OiI<{Jc1Jsx%gg2Y zuT!_GGB{$dz}t97TWTYN?dr^R>-VwN*km2Ch{JCm%@EAg;d61CnLrI>Z)H+^=Bj?z zgm#&vsa9x1b?-=|>irpq~8r8P4~2p zR|2Y-6?eT6QiAC;`@yfwG0KZJ8h=hp?QF+?gBUB2$x*S#Kqb()&8+?XqaKe5shUZvthmr|AojIb`Ks9E&8VAep$gb|CDJrGXSEZvBc+wNBtf< zFfnXoD|JbBdYMc-nw?eI+JV(K@@v_DY7S{F#?XIuY{3*JTpjWzUdz0#A4*$upwTV6Q)XnnlLY;3i+xCmyoC zzA(%pAA`ec@>(U4_G#a!6o6DF4(^cbg?X(E5TKTeZ@e$%&j&F6 z=tduwrcmYq!FdwZ=QPfi+)uoS;n)lT2pv7;(?(dbHj4H&Z~l7z`uEF0_}xU|Vc)ka zw6+%VGNw?_R#zw;7iDU1)$h{x+f7*A0B(u<1DoM7+% zVKu$cr5C#)Z9LC($r)*a)@$3rtR~#*IE9`VEq0;gGU~UV8zG|*jKN*a# zVT`(}nw3{d{$bm8DuLHdg5|Y!f^u$%%cU1cMb~z+Io&vUL49FHAHPSYIPWMAN{93u z5x#OQecRg7djY{F(9oecNtMV2$CJ0_)ZZ<>EjH|N@|rT|jcu6EKkuI(4o(ULa6j}sRrYip>Mt;(_wg-R?*?9fQvkBbep2@6gyS!PLObK66-A`=OZ7<^~> zR{E|}rP04^ZlzGBPlD^kbHOJ0S4l{UQNa`-W5y;|F#_vm#I%o@U^?zdUx#r%>g+|M zyCKvPxF#@<7GcO?OzgIgpH?MzhxRL)dG_+k27hAKsT*=0J&>il|Kdk(^3n{CxZ`aRHXf@@AB&M=}oRGNZCphBNdH(r(*h|*YH%=m@Z_ZeGB1=`Bxb{ ziG$-0jC!KO78>1V`OoHNGr{RN5N+)s*3h1IWw$!enuTAjy$4Gjd)q@(Y^!W6^zU*2 z=lkZ?oZUzn_(w@5kI}_7ecU;3O#jJi^C0B=#|jbh`!Bot*)MRn>b&N?EJ zYSDKIRK3Jy?WP>xSCF`>Cz$V?iu<1^2o}mrI;{-aT})lk+DD4mt!g*s$IQZ zf0{|Fd|CYS5dk+&UZoa~P5g{PV$Y?MRtcMK z1%$}7QV&jF^~#yhs7(ZeDh}O$AJN{kdt=^>_{JHtTqObZ5oX9TJtsj2XO_%vlJ&gs z94uI+4#VAQ-&Y0A3ZZ{(>>{{+vnyrtf3xd8v2}s=+w%1$hoC+ zy%S}X%b|_C4UMV&P{B}coF(hRz)7>m%0X&nqDxsySJzu30KJANTHNEd@HdTn71jl} z#b#b=o$|Tf*Ayr@qm_*w&kwF%L1h?&@(^w`H~#E282VxzyUBhass=z(CVaLT04ofo zG|WS6svA3>^2QVYs;JxzX}U~5BflyKrK=}?%nCr*0gCG`=iUAqPV``4^)Gc|ouRl+ z*ud85wb9hY4ycj1y(ds{o6T?6WSTMZ6Xz=L$ExB>3`*g%G3V(*@6fgn ztSL=cSrxD1I?TO=Y|(*%?s{)@WQA!@PKW=!)C&0XYTu8NCVtoy<>#^;hTLk&%;z?# zOz4kaC(mFzi-G2mj+s{EVqC8O!^6-&+)I+>^qwGy$CG5yA0v?N?M!ngD(S-h!7yqz zc+KPX`x2y@8~y&PMmFQrh-sX=B-wosN0rJrBxazm4Umauv5O~zj^y!$g?o1XH7{?~ zcXf&+p%ZthmciL9f+P2B_g#QluMk^xqR=B$p`qnm=GUmUi~K0cofeMO??Uz%ZCFv4 zq>0J_p#w)mJp;aPb;iPoM(3+(3Z&9j3tWsy&%{7^*ApI#^||q@ zRUyT-N|z3dG-7I>MSnbNaJQ2vaP>L_h5cPx%z-u#E1rdbm>%~9di1f_V!RUR4!&+kwt>$ z&rlNQh8==6o!A_cgG0p)8>TH+e<-+ln3@OKPwn)LEJav6o*`!e4bD0Zkm-nKRHX@dY3)wsej4ZM3&+~#`uKfU zkn7%Dk=qL~GiSzfheYrx;jtrsPjOH=>1_$=xRQ)VOMvwO?_SQx7X}gJ&HPK?JF9HB zxiz7?oW`gp?^6pdN!5fKqT~GL5fWt(<>ZhKe?Nc~%U^o~z2_>;I=Cf{S@cgoSurD~ zuv&mn(Yt4eU>#5cM_Q2`s(4)9!mvs!%57Rsy?%<(#)R#k*L@mxBS?%18&}XnQ!d$e zzG5G<$IwuTA0hjd5CBl6o-63X*YNU#RInl!+e)KJ zLUm>aQMVv}W&y_2`fEJd6kN)AKVTzWlYNVG?rcQOSFk0M)15tav>EQxhv<((q@~7u z_a0(%k>YCw11P>t0|4|5`CwH%WGxLw8{|l_ag6&5f1QU^dfO|X1_#xX!xZkIwgy>Y zg;Xx!GmXI0r{89IJml2I_D>~Pli38;ceeHigK?R%EEe%%N(dACkvxPl*2tyF;>BeO z#r3$(Fry`>@7prEYvWB((!5j*^NOY}wSmfN8Q)@r=j|fg$ofgyRf?+mjgTwX^JSw4 z4peH(1UZzB5*Po<1Hdci?v&7`x=`fNzHSG@{(*L@w_eY1?0YE1OjP<;w-;GQ3*JS} zTX`0>o$cua<*Kp$%?Q~K6{2|uvyV7Z?mvqDPGReQwQ~t!oXj=YVICL{sIrcFrmtRM zaMB&=M;1eS8l0Rzm1c4M#G#d-w&AfVrrLSCZ;Ry?zv>|06l9PTfC1nlwhp7)!Pu=6 zVLN^oT|MhQg0enlqBkwKAZk z1s<2E_`UD=tn$T~M`r3u2v~0`+zK5o@7IUU+r;`UXe2qLRl7bENKUsGuR&`5L*P-+o z2YQjg_=%0G8al@^m0jQ|ch~3{ey#TZ=2}KGr>q*_)pw2%)jFdLfN7e|sOY zlN;@7YqvU*-fXqf^#{c{z0CK61|YF9gLKFcXFSEmwx?5q-f$$cR8g;k#>j6?s#jx<#R=l@ zoX6bz7zHA$#LBx>j2FRz$jXo%j~Ohfe(Z)av=8_t)ON>o`xpfcVpCU3YDWpQeY=@gip^phXM~ z=OJ}nLPM7em?uC44_GgIMcGm~wfgz@_@0f2a(og7qSVQemym*l#; zY#UbWQcdumN3BQ!_8ui`b;UOFi*PFK;(x>U?aV})Hap@-34ekZhL2zr;8h>~Ey`B( z-%IS2&em8LG!=zmBO}sbw4timutqi0#q~Tu=}9zpUfpEwo{(cL?t4GmwY41xs*IVs z<$m>2{8E+jS27oY2u=LiQZu7=f(z^}fOYoYvjV#cB|7R)8dmK8stG&YVTW@EvM;rz zN~wnd#7Fm*b8CB@ToTo(UD8DzwYq}l8x+Q&4Fa9y1{!K=Tgw<<|M`@Lbdg_SpX+KE zAc+dMLB#l$wZm~16=`vf4C+A`3W~b8avH$B>8TT^%~8iqb`5{-@CJNTw+M4>TAz!P zdnI7O4?fkX<6svu=|)KXkY~Mre8m^^$tW?M{#=V6p)MZEyQ(&}Xzs}A+JAUcKkv@F zgR)Q@;ZUv<0NtU7@X*P~Ne`WG6|MH3p^(eh9(p|GW+jL#7@?t9RqCh0{H!)*xEdX5 zF(H@{I@HACeD{SaHNDU3E|J#eW!j0)n^*H-nSAxK1oErFVWGXPy{5_RsH`wsme(IQuuXRMf?j}y zI3iOO_kooj#NyI*KCVMutrd$L}{KXCh9UlueGoa2sk0+U2}__)eQomhcsao6z?m_KQF>hlo9D# z&ruX<2!C|!l0~m<%mb8CTVeHK1=M~I0>+o)db|%-6o!5GW;onpw+IB+FcfdEmY{`C z$2b`6KpP^_G6jLG%@`7TEK*6L!lRQ{peGV?K`E7)#A9gIM&jKvhZL1_#}tU=iT&^v z%wxE+QuvPGFZ!4kPGPOrrYO{@>ucFpt&oTY5S()4GW z+xLT+{ThoWyYRZiobr^2M;$kpS%dnV*n#+Jzd5V*N>L}?D5`Ck=|gAmGt1Bi^0WzC zyArB2<72z<{buf-7ef&eOB_N^Pv}wFl5pnHRomR|@ue@lRM3$lD$vLcnY^p-#*h$q zxp%0+YDrnM>T70wmmyP)Ke?Oo>W`#lRZ@fc9o&lLc$7XfLlI|9thKB#`7!WSwicT- zA_UDkkEyOeHX1URPquWl2#mQP5mko8*v3=B76g20C&{K<+8GB{!jn3I!1Q0@w_V6y zzP7Tr2ke1Rl16u=)YI29DQ5ehO=B>!q^4)}fZFSb(4&8t6^#SGij&7#3hn~WxBTX7 zW=B28kx9-Hf;|ThvuL0ylxFhUON)GX)d0FPXk!NrHY%5epP@u6>I5@ zU?9s#_3Lj^T&~$m$!}^dwr7*kRz?4?2(_O@9c=epDnOImMtB@J&^>H8X8AM>g{$GD zzRq4@kXP!w;E|I1T)hkLr#+}Bb9Ha5`(VpWgmVb8qQ3>zLfW`#0HLsO!pXboJ0?>O+r2CA=Ds4>K!{+17Ort}$Yup>DK z8z`d{8whEUpsM?no zxU#KZ7$5stM%kB&4x4AfX{9eh*`}n@P$ivGG1(xXG-O8W=_-J(7ZOn+mN5hGIbAs@&{Gs3ToJ(n*N+Y}h?+ z9k+0Whl5)O%=OrXY6@J6pq>W3T(xy#>*|(p zDR(|v&jxFU#sxajQlg@AewQ0&vS%O?U4o_&)l6Dsj*tTNb6~q9=NRQk=DBfQ)gqFiBu;O>GyVgvufiLJ)rt_FD z@Suza)igGj1>IJs;#H&jfvv)6ewrr78+WxwdD9f4Yf%OmdxM^=u+yk%YzUoq{3-Xi zw6H!4sscRSQ!h6xo+>?+qw_wHc+mioE~OAP)EXC6Hgn`PWV69^_9KpHdRgzbf|B$i zBaH+L(pppW9ZFqYVz|Vz0HUt7;yW+zWGtYFNH>3+o5YE*p-B|^Q-*o{=JsPI}J9- z8PuxyG;bApvB)c1#`EFU29kP!5oXT^d_rd2MjGvms8km|q_JKY8D+UEnHZ77j-*UJ zdN{6R?E@WB;o|xoEAb}*|F8H*UACM$lpzPxlyg@<>P;8K%N+>Q(}DO@%9{qPKKxEg z(^FPg85b?PdjuJ<7Q*fhF$dpkV)4YR#DRUPN^Sia zoyC!vu+ZyR9HYuRfmt42_GE9*GtXRMRI}Z8C6jrg9LR(k|B-!gn1`A}As2vh>&|o? zw4jK!Gl3M_WL*d+{#h$NaflzhsXyaQY|H zL^_KzKY1G}h3v_rKIaQjbmThn^2bB8QCJ1nU|Si9;k9NT5tzV-n$AtWfXDF0Ae5QE z2hxJBV+7*XaBXWsK2w9C3lY;`%J2w|y<~;w^iLo$iA_oXqz4$O&+gg1vrVPMg3|?x zE&$BEq0Wl>j^b3Dl#~^==U=;jOR1)KoY~2cvJal($HI!DM8*l3=@{gXmu{uDp=fb2!e8)*wNT@I0Zd7stP_RX=+!g2YIGd zIMN5+q9%q<(dUb|k0Ok7AFdN41Mm4SLr{rSF3=!~JvE~dR@zUOtu%ms%(T0^(DNWd zhNF}}JI8y+t;v|O`^r+Z)Vp;{{rCD*Vg@Qu4Cn_D-=rY$;S2P%{Yr_uYbu%kB06FE z4X3|u)>0?Ez?p5k~zjSS^!0!W8 z6suyD@tOUF#IzGSYZ;z-8sa1E8aI_B7>c~3gQPpQ%ZUGHT%EPzaZab(XrGw!*T(P>T&S=BW#Mmd zstuZnkyul6n^ry0hsuP9Al;D~KU$ybb{$loMHQ(<@$hgn)?=NS-?eG-GdGU!-+DM- z$+`feYB+NEKn3QR^1L~YctFALOHVFxmZYEaYEBMeuU>+m(Dsa6ETD38dbx0DZ3Zi$ zb{Mg7y4x3xbe1=C{y7A?XT1v|W$lWXFzM5r`QR<|aHIV1LRP=ADLh*P3kWW*{|Zw5 zT5egGS^jIpfXB{G|Noq~|9{Aeo{pWJ?tjW$Z2lvMxsE~;>0w8iE-<%mGqklu4gwBG zr1p>c`dUs)B9G5+e|8_{ce-fkYR+N0tL5eUXVN1f&B$kBMQ3LnFK4G2(&bf&^;(A{QC|gIvV;MJ~cE9`p#zLaOuU z!2nfO+Su4o@o}1>c#ul!gOd1SqFMZr17i=!)Z#z(-GK&9^mESb;WXqg05sF^%lb*S zT-D^;@|D5sZRka@0`+I(^=RdrS9m;9@bY`k7*MbJ+M;72*%ZCmx#)q0j`~Tq(QCz?P(YgKaPU0YFUI!5C)HK zXV~Q)QcK`EmjKrFyA2u#Q(!w1e=;bKZO9|%hKZG(ea`9#>}g0 z0G{kKk@F=VMS$Y}kbN|zAKkb83$%)K9GybigJiW%e={^`I zB`D1$&Urn!jQlKzMQn5cce1$wPGW6Z%{U(IgWdArdVX_;Q^0-7B3u2~B?YLh0AB6n9b<$l*#kw(D#qjQ;*j7585~9_)pZ~k7jIR zMAen9#e2`=4=(d8jMc?mOdq4UcJ2&huF+2?XzUO365v-?qXeEqZN%1(#ZhkWi7;G% z8c#x6T2{pGH-s(wsyfCc41?+)!Kupc;>jKRs+|fG$Y5WktE|4Bon%v5mgb*1?wgdf zsfUlf&&i1%WxkUWmh z=>eNR1}wfwe+*!~oB_FBE`e)nT?9V3O>|fQDjsd;bVGAcdm%nq-AQOEXP5iVVaFJ0 ze^ae|FaQ-pxUrbM5Wkp2(S|qRdq6eoAKy;^l@4BeZd9N*U>?%?A7FbRHS8Z>EdZ4g z-dzWs6J9)6U*vZ%PnvJJb(g(vN+ zMLX&~iYP9f(>mF2XHDvY>KA=ZV^ZW@mg43ZtY40QInz#^ghiO6mH-k;5(s4Q<@Oh$ z3nXyDzOa=CH|sS6KqoS)+Z|ZuqELPcm})%#Mc8k=l*g!t2O52@hg_V`iY)LxYKx_8 zLVcjWagfl0W%$=6Wqd0HJJ~Uzf~HViku+1qG6Nf_L(k!Cyn^VGhlN5uPV{PWI0Qu$ z3Nxbm70H@O0~|cix#uK&(UU)<2cqqmBG%7 z@>Eg0|029pNkFZTq zk+a6-1B9|wz7$&_pHjS(a0=`s11ZdgQo%wn(BF$Zo@u%Y?~Doze?Z%;490UB=Cz-~ z$QAq|Def9d$RZM0(v4;Q*d<8K7GshpOnXrYgpE+*^x(ALBSiDMbgBW8=rIdUThNGb zYZnq?srA+`;lF0I#qe#-*knX@zX@P1yWBkdXGBwkKM%8rZO@}qdKzX9+8>abW%DkS zkb1-K)TK*Tfl!&@-$@rk9L0j^oi12~Fna*2mFV^{*cqaD3F3{9>yJJWUOUNv%PzHb zFE}&jR#dI!M}lJ`Pav*^gpTBy9QgEMGqE{J#fw%c&9)2q8A>VKkt~-D*PG2Jz4NPr z14vY(Fc%|<1&ky>!fnW69QD|#l(DY#Wg!77MtWRQ)p5}-@i;?riE#VDa1)r_n|2)C zPK1DS=H@jSaBwh6KgE!0^C*(?Ll1+h*idaFj!=a^GHJ<)cPHYdW!J$YAKb=JeM$ z#({3vh}t7q0doLy^-T&%&xjmkE6GUO1Hf%jrnv-)sa}DUU%=p!bc-q!)#s{1Gv24t zwm}4oYcs6RvaCnJ zK57#N7}f#Isj4;odLP}ho_LE)^=N^B`Sgh(dbV6BQ3VZxauOOQg+4&U(&d5R{&eGHia}F~nD=`` zr<`f{o2R1#=ctRdFYqmkh4_a@)spDmjRqp1MJjxH%&uU=$ar(WVc}S5ecJU(B4pR@vi?-gV$-HczSfmbAOkTZ! zTx^T<`F2KA;_cP+&@)y9TYUyBFwz`vIak@g@B4Eig{mZGw~Myex)BWt`&rLdgH-}( z#7brbNr%8l!&`Sm$pVfCLAdZ&Z&}YP;m@Wah^%DxMwZk`9m6qk8fj3@gj&=j-qKe7 zWznD+eeo$l3pN|g<}UVrh*n~EA4bF2;@t3er%~jBs6PHqLB}yAs1bxMKgLP#4;;qM zl4e>J>m$=o&B$j?^pNhpFXA9LZ=As!Cv6o!U=4Aacs8e(Oe9q2?S%t|mJBNL+}>!A z@0gWhtvM(X-OYITeXN#}ore^z-;%T30C0Du4gl;hV^6+KkuR!Dk^uG> z=}fxwow0!4YV1SXgCP=hc~kVjx>1%R4s~E9*fIZ6^U{=lc<97sbI81ip(Ij9&#NrKaNh zEz9&9F6f>EG?PHn@NS0HXsYgePua`UixO@Szi4D) zuT8x~E}aoLyRi&yCHpE`I_4126uV{xNar;dYHV^O!sKrR`_Nu?KJb_V&vxt(-mIrV zSaP24M$u0So2O;9_$L?_*9d3y_!h7s4L!+F0gLO71u@d1P!52h=hc{D@2rQPsk&z; zCqi?5`RO;{7luJ-cx7;vz2sd)`<7p+p##cN6>Y+o_03d5;y;CC7WXC{adpa@k<$r0 z<%vig3q@UkmJ0=zEAi+FG9N8fFtr+x$j$Ygww#5q-}rB*IP+R3#Uh;e4%B^l@zJ$m zo{`IE30QvB+plE@aOvO7D+KIy4wZ9E1<4OKv+E158S0n5;Nb#20Q=5f$%}nBiy%4v zd92@5L2Zm+9L3wNHz0A3aJE_sreO~qA(!j~!%rh*5w&DW&29^`d9!DhUQYXgoF$Es z^#RHvCX*wz`;s%!SOup^1+qPS+MnhEEc~AAszV6z#nw;CJk}7>z4v1VP*pWMyw-En z4{^LOwW~@rA`Jr>xXTR6I$h+*0`~?%n3%W6<+nPC&M$+7Dv_JiMK6s$9Z)kaoI~;$ zpkaH(=5*;|Otb;KN}lvKi`Vpz44IBuhJ=o)C9JWA$rB7bZogs%%0`}{>fCe=6+q(5u7SRN_%6(Bl@3M1Wd z=INt1zb?Rr4m{wCokzD|vQda-u6&0c&iTd9bnyhvj1@YzysbO~o|h+VeNs>=oYEYi z?H%FT-BS-Sv(?2v?)k&86g6>8EZL7@8s#@MX$veF@%!cN?CPSNC=F5hHfT=JW49hm z%)xX4A&=7s5%*AJi!RxnLQd#BqSDBMVmS6;j*lH_Bfv$6m`Q0RFi|^e(Y6J%jqk7d zJaq&JgP6tEA4eptB}K2hs?;jU>Gfm{dfpdJ>B3Mnx_LR&=cSw`TW^kI?x-$+-N~Xs zvMrp}IrjUFr~7L{VaVPKY8NRO(W9qq7G$WXO=3Jh3VSqIJ|>1H_Q7!gmha}t(ys$5 zWhI8d5`q_QL5|W0qRY$4?qppQ;zCk#X)TF}S2;gnEzA#~==eBB(nsQJr-{ z!gOtixr7dj=2vXYr@qHhY1<2$^gvZhBj;Mos+$)9AoZM;UdyoHhJr_M9Q)7;%t)z8 z_PIqIKsJY3>^fc=9jfBRg(*44Vj-=bX|yzesMw{LK;b)NJm)td5+sRi5wv#M08u{S z_c9ra2Tuj98$fcmf8h?e1v*oNYO5E$ z_Yd;E`vb|ZufX>=I}w>jM^L<=MlI(8-|NI~-bZN|^=il>ulvAi(ApIl+aWPaI1eqHZ4f@>uF2HFget<1%|$ai%X||MZbTZ{3^$8} zS$(Kos-_>RAI&yAb7HE%K=wGfYLGxG&LoV41zPazE(1ClUCn`?e`>_=8+)wZs#V3k z-bT^sJM;$H0SGr^#oLBISv#e<3s^lexwykI7?+sVy=&)kovT>p_g-PZ;UcaV@Z*zU zZFtgtTer-1X75j2@|EG8NJ*L|N!{Fi4Q_w6eMJ$yXlkVi0t7FhHI?ZAa0PkCa?&fi)i-CrD#09M6%$gsuN9=yDwV&5{% zhkZZ2Ac5s25Hj{a_-e-WddGj%0|~xjz6^6ZWyuI+8LBG_+YD?CisDnln8mCLphkwr z@tdi<%nh;|hvsaRkyHm9*@N4`wCm^)E_+Ul)5~RoIk8;6?y2I$5DJb{Ug9*dtJfC< zkqKg~`D$* z!n!J#mu{E)tHW?~jBKaVA`|2{osfXQTCGK_2(R^3Uk#|5k*7tqPWN+7Mok~ToUKci(&r4F$OJkUUP>kjXWwTsAV$r1F2EPRlBfFF6Xe8x#GfofG4IB3} z`Bp2g`6sRldWe{QafbrIm7WA`r119XtPUO8L zNk|a?WpWFl0nMI7-40V!EYbPv6;;Z`8{)dh?-{dQ5T9S1`>!cgJ^qS9Xz9ioEb;r^ z|Czp~tndsA_JtxnwwUOcnK5y~j{haeOvr20Wb7O48hTO>8b8WZ0o}bMi)yc6{}l6+orKjC5fohTLA~Xxoj_@UJ&AL z(DS8PJ~UBTBhFnhEX&Xo;SWLSi?Ni@HQ%tg8?lM}P+&l)MqziAcIY-2$uF7dAhI5x zn2xl`fIPCINURhh+9<}}`38H!$p)dkH^{j_J=!9W%+EDxsiFkdl2{=IeG7Qt#-NsY z|8D5!FDMh6wpe%73!L=eF|~cS+b40)9~~w_Nv_4rVq$PAnQk&M@Vmvf(LjaG7+M|} zXH0pdtcH&M=bB6Gs4K|~1KuP8?@pG~a4AXBtrcx_Odf_wp*lp|_2bl>kr%j#7l^16 zUE)d&4)Ayz|ECMi<&)(7%;ri6CKmsPv($Urmb;oa{neR301P!JhjD(w((E2s-OSjE zHWE>y%ej1Ry20(m81QU-uH){B(qOM!n4iukcK#eOC@$Dm;OjMx6YnWH+9 z7F`Rttex)M_z#{A>J|2vx4$t7#6Ar^sirCltv89)(U(MdC9TVclWs> zVza;!4%)kP^ z=LcH{-HW|h#~nr}L}*#MC+d)uh`LQpzm0#WN}eM%fQl%?+hFf0;7hFd;nB7oU@Xs} zkHdb(nNHD0ThT|J|0^=3y8{;qQ96|VuHL;rt;%3g$-~Bf%2aF$cj&_ zXgAl@P;XQjvKwgAUT_|g&kh=aGPw27JHi6U6e}KrJ=4_4?W7(FP)L&}ERE^0vSRQ! zC?44=2yCGjRO+}bSQ)zPDKXNkVpp+zJFM|`NCwLJi`4-Qc$j69uG5Gqk?Uu7b{;KN zl{Z;StQg$+%s@Q$$vKKZj_4r0q8jj+KgaczpzdyRr@q9lfFNY7Q6=|s71aw7<==H7 z4!;*?ATA-uN}Uw{Mol5DJ6fo{+K_uw;J?tQ)SM3RtW5}RLBwzJ7D=BpMtGa?aKNne z8ut3D9y>mATt9DEa(~%y9{jS!t{5&yxOBQSfI?*Tmv(P+;W&`e6V&Y0;9_m)mI38> z06Bh{^ySFPM1cxSA=b6sJb=qR_n>Y!p}R1^==2f%~5UKyS1bN4vF9xYuBD7tyeS959fiQ z4sTT+O}k(6ZVvY#1-NW%OR3$z4A%f%I-7jbqN&wJHDCYXr+@|QuX#C0lQ zNt~nSfBEs%3@E4c(42;qvNzhAV&tTNV>qELd?l0t+i+8QP#1G82k}{vYx9G$`Pz0% z(cf>LGFDx4iqfU}4pM_@;yIFW`=&l7ze=5iN7XPZvM%~0(jdb&?QY86a#Jvb%g(Mj zq<&%+&Xj7jH~RJ4FkV@B%GiVJ`tVYz!3|t!S{BBAg4pEx!`}c zAG6GpsjxW&1vH{EKgMhPt%C<7U$BZ^-H&rP72_#C=tMzvsRJEhl8+*llwc`Lb1k_h?qW!^gZ(8fkb8lp3? z{K5nVp%tg*%BS>u=n~9DwJ3ZdMKxF7a*WV|^Qsq)17Ia*+pJw!B?`4-~Mz zu0y`We*=3(%%8F0iVvixJ9+!#QM2ql(HVMch@K=qc`^eOVjJ86L{zf>>fFj=$Imt*uXy0KT; za4rC1vXGJCSt(&_%v33-Ca#EP5Hh?{`G#cOL?~eZ!3@C+?>SU?Wkf&+DP%SP((+mo zQIf1uy=VlC-E_J5m~;Tzn=hf8M$l4+3vxCgD3ZI#%(qb=v3C>iqtL!U)((=N#~8Yb>bwXp3vuv-&2at1S>#&o^@Ox_6lT^ulA7!oR z8^}ONcGl)0S#0CeZBsU7dcE0%NVtTVFJl)czsP(_UsD`$x~!`RKdd^qnibAewFAYY z^6QsDXDK2s4tTQZv#3ROtzM{7g#4Xs#Eu|TNxpO>sMLp-aD^`F)NJ%({|ID;T*==&iZ6e4IxJv>_ttm!*P2eF%yFYhKf6~b)o_7oA)Yj z7ip-uGdk(j^sJc@^QhQQRGPEutR+RP4s?Pa@&Qc5oz}5#%yu6zJ3XC5?%pXlG+Dw; zk`Lu^>_%5M>Hf`OyN=cIX%%bIQ*B=`2a5{)jNN5=045bFEP1NIHKnw>T^SqG&H&zc z~_l$3n3F3F>%INvXY8 z(D?{@?nD`$9uyW1bF=j&PYPVVo(r{v_*{xg8gCqX43!k_0vlp8vq^}lL(Lhn#DfH% zPuJ>mEls*|T#&CKH_;kTLlCJQPv21R#2Avx!_F2qy0aOe zkUPBDIz>OR6_z4JKNbuL@0H)i3x(n_{y+g6NJiU6YP&j6md`GC4hHtT!rV-!5*rV; znF4YjJx+Ps`N8rTs2e(sjss2%-gjc&jiervm5fs~wP4z@JdRK4h$XC$7U#G5N?Ur< zCjK<}x^D^SE5WpY?)@ueevUYuE_A9BoiO%oP>Wv!c8q?!I#e;-#|<>O=15kT=A?sR z)D~U?j_DI2z7_upuFz1C=2}yp(9ZNLjBu>SX9dLlm!YJ6pYJbdj5@${erw+L@AOjI z_Pii)hM`_J)bhv?!}%~ljq1xDHi#=J9$pEbk^q{;1U6Bg2|7Dlh@3SvA8~#6qlH_I z7yguffZ>{R4@20~X>ecB>cs-fZ*-S>vD_zzKWM8&GMR3cZMf#7#}l8~*%qnaL3YKs z=E;B+`QMk&c6WjA)bG0~r8jwj}UR z4RxCFVEzzN^TM_$f{(^Va;lbRPGg1bJDGn~Jw*WgJcjM=(=2e!V_SL~Ex5`~>WXV1 z1@%=Tze=os@iuw!ljQxrOp9*WIc!ugLWo{T!3yI4V(c86h2g<1du-dbZQHhO+qRAO z*tTukwr%TvlkTdnx`X}$N$MG7knFt{r#+FY?;|_k9!D!{<>xl?34_4+vvS*rc$?s0 zMKsE+a!R!m7>a>TvKAyoWYoU9A4Z$d;#;WkseU;L>AMCOhiK>OTam+;i0{$PF0ZY~ zqyVjGd5jlFE0&8uDyC&-Tb~#FKdsUF<+^$Un^MM01B=ZQAn@2*|5cTxr;obZc-Q&n zwVU_F$b=$DMQnI!eS_V_$mP?!lHFVM}cUMNj^rHs9n4gOYluDjeic zH?Pd1p}>_<)ZyC=KE(9Z-u#gAr)=7N&plt-oboiRI=vee!dZ;m)Q00D>&DJad0rW!&I$1+oM zXD^_!i}#RcJEgK7>Eaq+_+WV}{%w<^=C9{Q3`@nTzKN0wk`;}K>JViOQ|4?3%zwWq znsfI#1Ai%Lf9F2I@$39t2M2(&yW!aQrdo-sD_%dCr(HsNb@iYa^C4n|=r@I*H4`kv z^{7D6_oK{Y^!oBtc7}r`T7hKmSxidz;fq0bJR_5psykiZb1K$xB5WN!F-%VoQm2*= zdqljU@M4B2Lx#Sh&%DZltIv`>jgGcZ6W)tAlS}FwuoyR!h_q&v zI`+nB_F5KfQlm9r2LoS8%Tm$@^OyyTE+iQhc(u#gN z27_}ft!EzQ&d1Tp6E*&(7=gg2m3jd}TUQltXZlVC?h+d_r85QUYhao`4WQFG;ks2& zw6i>$x?QH8fZ8~1R~jk2|B~|(gZ9$*$Y;Dh{xbb%V!tkxxl;!wO zOBz5OMM+=E$J39PK$@a5{vTCh*MRPqNi|>8bpJX52AMKnNd3HdTK`8)-@=HuxcM1v`D40B2gBnx)k7jk)={ zBgf0UW4bqG9~fb{;T&bR^)z;G{$_#rCAzoI1-zP2l4?Uw-tcy9Z1HZ@p+iQ_&T72R z(Rc=X4fB7Xc+~S42_-YN%c{&aGuPZy^o9X9z8}BXl^vCJjN|Z$>%jjD-D5q>lDo;1 zssE=<#7uW@YEW>beATVK9zCe4A@l4ML#9@jzzH@_HkVL{uxIe!x61S#hg2kUKELAb zdE{v_jMJmCnFj3SiA;6%xVMqB4C$rovB{1jp5mnJCmSD?J)9-{eBVSQZiChPU3;N! zF+S8RNs$@VNs^I>E9G-e^hAP{VjkxU5_5}_>WkElh=@uM#z1UBBb{ips$44NGTmi; zbP=$}&Yg&}R*WiC{*9x4Xc zs~F7GeG=qs8xnJrF9yh<1wtr*p(`Q7VuS?iAN#CP_@YGl8YrY?ECDRR5}O}-JPGy| z%55d}H*%aI49B<`cT*X)G~|Bv>1ww04kx@Rh+N%|pv=(;g>y@JgHUD{hfR#4j2mGf z6*pXYVg~!yEfEfZwxlQ-(|9N1NihHs-yC>u8!hy%UMp6|>!YYCpah7(z{^E2E{4x$2#SKaUuN*1RTL z0I{c$z+MXR3I95EcN{Jq$B#!nQZ8p{=g5eN2D_``TRlk!waItU`yMj5kxMtvz(iSU z7el;iV{)C)Hsf948rdh@NVDzpY}WK8RZR9(-alntn;TH`m4ZTDtvE5d^deP^kAEa% zGt{2i%IB{^Tcp&X@cAH7^ob&o&MUDLUUWAn)!4D=v_fjpET#Q##s}Myar@rdjP*3r!;G;iXh2L|Gcu%iTvKw~ zC$7BH%v$t6$HNNRWHtgj=UG_ejXcg9J)zFij|9nuwE_Omf0xbxM`h#d902|*1(%8Ain=m<(SZF7X8@>Vlk@p!0()m?cj zAqrLW4e-kFFxeGG>muOejf5XZ!&=O-j=YX#wbya+dyisnBz?bj zfVQ2xduQh?cedwG|3y!+MRPAh_zcGwlC+``t0*Ef7*b(zU^g`}H8K>QpfsOg2-LvP z(A>z-P&mI>rOl}Y^jADapaRmxt--1O>`Pd18q?w$Dk&1XE9e;o=Nholt`$Jd4S*UQ zpPC&X8ag00H1y3M1vmQx;BfR-%?tpPETB4=cOEoQX?kE`YGZP65f$aspAL|vv>8B6 zPtPu_Zw8RaO~9O5+1NWEsG*8<9u8$;c^xhP)W8bV<>gbK&H{u+R~PpqBa@ehCnM%Y zCj%#&7Q_-008gzp4L~&?dVT}f0_?rYAfT`T_dahj1AzkYGEI%{Z+r!3T9-E_ClDZ^ ze{~YY;tr_Mp@|)s3s_(P(2D61fK)vHhkx?%kAeZKj9i0rFdaF;$B(hO1EA*mM)CJGZV4Eczi`3uJDU^8c~ig_JnDdxy1qZXi{Q4DwVEB%+gxpYl& zRY4`Kf4_NAe_do$m-~?SfFmX*M<#&vjgIv|?SkmNe_PRw4J-bQ1|MrGqr2OH{gaRK zt@*Z}c`-YGO8_i?m~dMCe{QAc0GC<>0jGOpYsLpAjG#aDzy5YFeX_rQuJ8JKzkC0_ z|Hw!#%&foOm}d5_{`jXx-PBt3{uBXNYqF><08nrQj1B($Ra*l7U}}KorzdA_|7s`O zv4X(_hj)RNr(>#dWN2{y#%unQ4e$h-O{&$Fru{Wf^E<`%iOsA|;+0?T8@;UcfSQa9 zKKic;JegVnclx&nd_Lxp8l%tGcl`Rs_%kA~$o+A{LwYNNH}##y#U?`=TwmKtq9%CH9H@A)p6nKI$Oke&XQRJTXfkc(P&_4iVwERhT=d&LDAz3J7#Mc^o2Sqi%0}H;U`4gO%SN{qq ztgQMIl(S^^#GUL zzTfEu3~~mEZ6EAiZV1BtcM#bO*p%KQ{Ey(=(rLN>7SuT7M<~8|{BJkcA9TS5fwn|` z_B2$L-YtBHMTfs50>RT;e}1N41;CZNhj1tg-MRnv?_0x%s9gQB|JGkJzdXH$!J6x{ z|Chh;jsG7L2m-_lNER^-9Y^LvxcW+n3(raff(PS`3?zR}8NYc0gS;2JzXMKU8pCd+ z%G9)WJXMnJtw{k*Aq}F;dr~4>(WyzJr`ZTfh=< zYDo%>^px5S4?vmhGwKsqZ+zNFAQtI_*;RK>DF__ZERv+n#vY7@z;S299w$5d?ZCA#A4n@w%t(Kji+@Gh-YZaub719`C3svoVQG|23d&#{=r!aD=x1nos{B z7YuQJCkv^EtY1w?GRSGlCU8V{Duf~6b)WVAV9$=^95?qD?TcIx#HrMiZ>k)uQIOKx z%|ow3Nf!WTkZIm_vQq~kOfjn}UK=G!$@-YQU?2qa_l`TN>dGXd^!qNbPl0s=smI7PLR4Mq&tv zc$Fxv;L7TTwbZDpGZXkbyKnk0C)wllS1d{N-rBK!z4Lx;Y zO~VAf%9|${MswxMlT^H(X(CY&jVTl~*IV@hR3afHQYHM*S`DzoHz+_L003&&F zHK#=}Y)K#mqO>#oLcK$MrAFSQiq~CVKPWs|tD!NcI+~}lAA@O$ySTKu+Bt1GQy6!1 z+qw_|G*@Ac?L?VYV^&3;2lENP$zFTBdbdE!C=eM6@4n>vZ&VZ3>KG`DwRk(ga)PfR&VbiDg)64!v9`pO}*%ihvzRr`kc{fD46aQRu z!JBf@uQ13T#rh5Ul8rFsNFA&c<-HJt16=CQXdu!*WD?Wd%7i98km=ugCAMC#`+<^- z&GuQU8!VG9CD_=ol2n{UiNEr+H@zK4NlE6&WMZyOqvOSNH^A37bCVOcw+-%O#XdhW8oawe zau?QL^xz(yYD(<-XRcXC{|Y0ICroCyCo%M#OCdaI&iML{#5zZL1+beE!kH;(`0n8x zrQe=Vs_I>GPdWdX*(fK)!LPXcUme7jWNEK@CWsmPPicI3rd54+CY`!e^o#>A9b{B~gHE7m-efSKw21SY{MeaMPR~%6NZ3RQK}nh85jNsV|L~;m@BQ;t1`j#uKyryl1S{OwKA9(X zE|~5Bb<2jt*GxI6;HR#yg`4g#W+Z9HsacjDSl3QiZSvtKI3OL`;#+l|%}J2oDM_aw zLV8T6H0BN!xgs80RvaZ=_l)P0(PNTTTfvX5_nX|1m9HoT?{S0btSJ6}eoLQm=Exam zS*=&~htsH^=AvQKBns;Hn22jO?;O;ObQ883@-PB^j_-H2^#@kR=H)BN-$^?yvr0s& zG|evwuj_ys=T_t7%hcx2Ld5viKUH*%>GLv9wa3O3MxIH{)>5K0F^zL;(#xyARFIB7Z`Ed{D#8C#^b1{_A?uCdAruP1a} ze_E5u6REN_3}Kt_OV&}lqgypX!-mie8=g~kpBL5N54S`;{2!)LmdvcJ$Q`8`ug089 z&tyP8=WHiime5?mYHY}X^bk|gApyP9ln6m3ntH2gl#&@Ktwxqm=68TEv5l1D3v0h1 zA3VJ$w{Lto5zVyEE+m~HY0rW#%R$uQ)u*k?bU@*&NEvAi5^S{pJ* z1GGuDE>oWai>ODpsaot(js*Nzc?!zRQ0+pQ6O|_DcAOW~bJ!szAs09g zNNFFEiP9VK(%b9BO51fF&{b4U!#=u_e+B$ruP;=)YR(fg2bo7X(gVrV*#JLDQd_Q6 z2=OB3UiCJmE@IUC$hJ-)Havdhob*07ci}l>K6tf_bVNsk8!5tx&4a}#mAYRVZv1lw zB(V+%XC3f7u{?CeGm3c@iFHY{0FP(;^6qRAFe2!8c?3=x;i1SwR{b0K?{eCgu zL)(8hQi}L+q)NWE3Hj7~yX3VC!2(Twd&7$V{U|lSkR+>9-Vp@)nsI39NHW`gZUDXe zR(s$O@2kQL9e8+ZB$y{>Fyld%ZUA;a+8eshMo2;;4+n}9uZN+w0X4~12^}IkEz8e0 zb+j#QBraPvB5cO%TWXfFNXM%94Wx8XaleZ9R+B<)X~lKYz5qh?Yu1087Vrln)}@(= zhcmEXnoU$?HS(HfUjgRDwyqO3N_7=sv9V#yXVf=vc$(u8z{f|k6L|ps@Wjpv43QHvBjzNEObT``wG>t6ZvN&Wb#K@mQq(ppRqE{4y4*hW#HlSC6PK zEll(Jk7FEpaW~W*?8g*a_(hFWMqB89NCQcp2KWU^Hu*)61!wS7@L91ngDPUpH7^h^ zR**Gn$ibHFCuRG;akkeF-}gq7b1dAOgGH`AG2x-iRg2lGj&einLGl}}-M%fCh>2)u~c0Yz8h#{F<-;ElD!FXeL$tVykd_s60V2VbbyXxKk z`fu8^cv1&q>`#CYYtsqX`|a@`5@p;9-3>hiMveT*IVjq>7V^<Y-%QHR-&ieWc*?x)W9-;Dkk_A$#?VLmvF%8kCTPLUf%N%yO^#TZ^z%>jdYgYs z7ap`~RpVr(mUE3`R`+}53j?sA0K2Z>*HKpF*jtJ35FK?mbx#pTD}ogpM3U&45fAJ6=dNC*{vT*Fambl!pt&$KPuXV3F6R&dOZdn(Xud& zOD1nW?aPttovj25RsOW}j7o*wm98HkZ)-O1K|8%&=&ACCM$BkgcAu?%>W+%TbwZmN z831#;+@+SVqg0R2>O#5O^GZ9F-U;mRvbxJ6Y#Xm}JG@vQR*)3lz~0Ga2l%?sp+3h9 zAWcXs67=;LV>#P=DVtkBpAmRlx+#fbOa~eKJS9o2P*ZI?$0*(|4n_FhC$0Z9`WE`* zmkiT@TZLY}CoakKLsjv1;^3*@zM!`n?&)|7)AL;XKAp94vbVxZF=*XwM3qgW9B_~w z>?$J~lv1oAs<~csn7SS`QIBpXg>L#^c84zZbs9@yzG39$j}8bm{_@6mfe?&9%#Xv% zI8t^HC03(63zE}lXZH@<+u5Q@CdVRR8VnsHI||W*^TTvk_r@i2JT5DWv8D!;_4Ca0 zxxvD`j<=xU--BA0YxO!9!(Dskh|b)rn0gYbb{LXE#wB7PAQaQD!s!A zbxd|!t+I4j{YJ~64Gm=#zaqHG1(NU|j-v|EuiZ_7JlVT$p|$FL%QE_ADKZHSA+AFq z(k;|d%apR8KW|@;WE)5_?Z$yhH(N`35Ki%T6adT8bd9bBC_igZS509I~}>BaI5uMgdgo9eN*Er+f}+|tyk8r5_-#38p*d|(cfY(WG7l2 zOOMe@cKUvfO+aFaB**4@F`Rzq8AP<>QQ&H;Hr2@JERx_uI0AK>OcIiKMoj6Gft2fI zR0s(oIn!rBLAD|$&@lRnbd515LD34m$U#g(VSd`K5Dje~F1R#i!;0Dh>o z#$}GmS6ESgHFY`Iee4H~en|3SH@zV=O5EQM-R2+amr}yy2cCG9+BL!0Eb?u|$^2HF z+UyVWQ@Ix*b7yOoy`;IAgGKh2o>ZUnS3&l~?LBFd?6A)OdV34~N_0@CDPH$iX7Q)( zQGmXHR2s>?MTKB&sMBo4G{y`1MZ-r!{l!hYdnCD|JN3Y&VeI#T$l&LL*nGLFH8l<# z^C4t!FDA`r4|xhc{EYc%JCW3QQc8>C8;(dCRr_Vi_hKXb0-o4jwRDS_29ec2zT>g5 zUIsHze9VM#o_D*E`-U496tRf8UiCNV5qKIN{^mD>Hv6fl2S&1Vh@ zNnknV|M4kS4w+~=RtTCxqcTr$B`m2Ds&<9;7gu`;yp*jpGCC5#*6UJl#$ty{lxtR5 z-E+NB<-cTX>v58HJ-Mlyrd$GH!e1)VQ5&_>OPZ?o4(e}13F1w3aJCZ{!7v_0*S}L+ zJ!Js(aN?D0Z*9G5p0XJI*ut@cs!QERLR1U?C0ZV;oW{b{{S1yZga7>;b10s&IY_u} z8Z~AQKGYMT8p(3_;fd{ZGJXVBfyPB1m`N?4Op}yh)PD}8H#L9mYePN?0Av7-MncJF z&|1fayz`RIX_!Vsgs+oG0iNDIdO>;mNuy1_=$@Mt2`k{iqKjAd0cOw^?5ZCQP3&q) z{F6DSLh2L=y3-TlFVUgY>T?`98iy^!z7Cnz$jCmi}_SRpI7+t;g5S=m_ztb>A z7$x;Ke^w%4!)K)LsK!S*=EF?}O`19xjqyoA5bQuxg`zQbSHt279KXZ*BB8j*ooZ-h zeOTHq(ih-vR^FPN%A}meyj<3FspkHg_W`}VHl-45S4_66L?J6uYL9}=y?(`aON8ka)6y8(LdRmqQgi$x?VHLFn z3>cpEfl*WKHR-M?BgNqkzVAT@Bm`bWPZR#Ro(eXQwi~Py2SUersIsGQ+(Co4znVVR ziO7Gix{})m$0Q?tmw*6sD_4^%=ay-Mr{CyO+x#HBIkDEpXZ9f5dJ$(c80K#n?w{Ru zUimub`R?yD+Qu(<*EooFR9QJuEXx&|Y<=^r`l}^>zq-=aUcH=R3IRBaGzU*Z&>{BB zat;0-D>@F!q)&U-6k*ltTfrXfkA&!Ko`~yLS;^*Zv!n-A5gzlyeMJw>6!yLFXyn)q z`fhpu2;C&R*^*SZ9h{N1Q>`P={ z-sj0xFJwzdTcT4z16OJ>P5JLdmx_tJEKvSA|In#U&#EPgR@johNM}aAi*_za=dLD} zWYEE>;|;QmPk{`ZiZsq$Rg*T)rOJ{&F{nv#E>)#cto4PDSj=FZ!1T_cs9FQ>dE~7J zzt$b*O>Fb71DYD{f5Wo}M0JV0C=nUiOFlj6? zcNydRuxAmZWLD6@kEl>qQ9(nNpIZC=H7uj>iJ9|WIweQF5G^#4CX>h=xPls}RZEv= zU<2=@HgIdw<}Dp$7#^Jxrx?k>`a~>6>fjPfh^>t$cRo6HqmmmL6{k2)sWaxE_`$i&;_y%2tY(=WE{$Qx==kY-jBdSS_U3BXv_8E;y)D2=>=arp~vd6r5z%|jbzi&4(^#(N;BAr zs>Y~@03(wx%k!yvw{W%zZ(^^}dDAUzvWjgh=_Hs-0Rm3XlU9DW9A;LV@P=^0$W5aY zyxSD)Zo9SbIjL38TEX9@3FZ8-r(Gg-HGK^@sWZv`k|Jg-@qY!ko1kf9v+3o0()o9nJsl*1k6xx`( zZ8du6zt>NaFpAbQQ47|O#0SNN$!pe~lUI<|D^(4|TWj-u=4#ydebB+<+{Y0M1Rndm ztSoV3%2+CV@(>=W*MBMD<`jodw1(}3WFnSw zRWCdqoTf*)Z;|SV9SkK7nK~bF$>&;MfSdQ21BRAi3}y)qQhITiFzp4x5N1} z9K{1^cSeiH_$w8fX4Dqf491zJ?!xmH9s3sOAL~DSHoNP?*oRYq(w)b|Z5`|i#hyPd zMn%N|B3zgDgN6`n+^hp)nCdGVM65J8J`^ydZmhF_dg|r{XY}Q0?9Rnmg5^!yIcK;u zeSD`DI;%v=alFO&NTM^l zZDEIJ3DZuJY~aX{bRP&?>g;4L{}lMRHbn znh^zlK(@$knU*F)ygR2soxnQ@jGUKS>?J?NVfMkI&gZ2TJ&X$`_fd@O4Wh?lf$SyB z1+NdXHz+4JkLy)?S-Xzy0db$iYgXV+Hv2*S|~ zobT^)#Spw*FI89)?$tr9cj}bN{a&w!8rfz3DOSgL*J7KM-1_*0%Sih9CevGa5GY1H zO5=D8jH{@(!+jx{{+1gdO^zJJqNFUV;#Frb8e<3WSDn>PRFtncnvWc1f>>FGmE*QS zVF`zN=6ckRb91YS>;r@ks=iPCzc`i6%l8d74}^Rx?bqteo6DD1i4@IsC{e$9FV8AA zY%QA(!?th5qJDV(7%KTCa^0Z6L z|15&hs!3b|Ev!%%UCbJyp+8?~8}60em1k|%@25#?0kWUC1jit>k?WY4n=|zkc{p1| zl}YE~g3FD|jN*nWa*H!;x^HG>N#AKRvbmkmq`fAei2Xkf?%{k*PXio+Zd`!(`ah$tDW>vMb*t#y$kA^w)R<>OiToxl=v4<7eR zh6@{A@#F6S_1M(=>40smX$%D7E`C;#u z+W~fMvMk%{KD!J+WWo7cIERGu2RT~S853w~ zw`Ha~m81j+{g8##-rXo4OlxaS*^r}9Jq%kvFRrW-Y0;&x?xu(vyS5Wd7YUt$a~uwl zQbXluKfkZyo||K&Ojb_q0x`})+SSAxV8;E$6iac%ZJl=^Ygiu4eR>FJCHW0K;YZo- zd+dwU04`fg~TcuJd@y`ZbDyA!5r6|xn2X*~uzHfq(jYAL0`pqZ`r1Wf)GTO|R7U1YK z89h^9#jxP9UssT^p5o9agE!*TR3EbfP&kjUq#IyxK`PF#AbBVC9vI0Hc=B_l-e1^B zkv_AIaj^=`5Ew|-8Xe7^&So1yrLul;M;F8$ZDiR?{lGt z`iI~xXiwzTL>nuz&f^j-c(zU9QP?-lAHqKl+4Rr!kge$gn{T;GhbgJ{6oKCotL0I`usqA-NKVT@P;Lzuuc0sX|6z% z+S{XvTEpgrirAKx#>QK*6`0%FdNs)x_&S(@dQSow4KQ8RL83(_Qe%ECI@O6+%svO3 zlG@IhdHqfz)IM!+sG+s+y)nVm{ag{@DV}Ut?O97nU_Vk9wYpn9JEwrSxXRx)F)MU% z8D%3|I=dy84{YbbdCLp}Ec_2ImxJ9S9%d?|<$xFK@VK>}3Z2$>s|fZ)f+nomzfOp} z@jXGJSjb+=C}U23F)Q44Ecxt4CKgN2^icM|Z8!PP0fuUfgGU6zTE|<>;mUfZ)1KFu zFLVQBDN8iFS^8Na?AWA_VEUDRE81l}Ij3z1gS56DSxbsK2FCstmx4~!^3mEf1kEZP z+Sm`XEATGy$;6_+h^zQOaeqL99v8Dk=iPG2?>k0~V^%~40#D_`_c#WOc=)%bl|T7J zmfy2l?VigQug`;}RMv4)`W{HJy^vgy{R z+2w2LMh&`Eq|kE&np*6YLMYvil8D6+mI1xZrHhAe^5tP+KiJao5CpBmry_(qj>-#( zmP7-|PVnH&JG~f3QDlr#qfJ?2VQQ@eoAK|ttuE6oh!ZrIZA2>bdZiQ5;y!92D40|(Va=QrV2Y>MUO;>E zl@2h~*ihh0{t;BELjWhkM$3u#A%5ZZ6$XDM6$(#7fNTP|{I(%%L&xWli`VM()8x9= zCTCqu>kC^p$N-E+{GG?z_|#PC6XnF{ZN@tJP!;YS_T*ddCdRWGoP`2-y|S4>sG!se zy{iyRgLyWzhU`FprNM<)pf>UqSeJpZ2dxa* ztM9C3inKh24}*7wLNQGYDX<*gQot7rKUc!$O~UmN$hQQ#D|7yy=nGeC3YJSTdXTi^ zg%mD~#|YgMSF@j%;$5#Sq1;Kz+AP;9Spd6U8t%DjiKw@#Wh|rc`&>`E zEjypvOFYqT1lp!saHE5&&%oWtC5I%sNkoIEqryGbiqt$l055}GO1kwyFOCs0Z3;rJ z^l7DO=^d_7@ijF}g6hd<-0o*=Q~1rl;k2Qmr{sSiZS`I}?C9;fBcf(jbMZd+j8Ebr zYVvj}z7`HXlo`$l0wEHyb<-%jk5O%;Rq419xN(sFEBLqP9uFtJI>(`)2aJyRL)QnhC-oscZ zsIkwkeEJYLb`17N4Rl+Zp^-CO70)l_0%dn|A|$ZUG#>vBAPr$PB@`j@w4)ul_RV44 zvK5}vEUR;{Y|?wXM;Cd%9BM8l!mf*6+>cm{w85|R3j8AzxqxbWmAz^!kU&Fg#jkd) z2#=zh)Gqr;NK+%-0r##W2i3MM-N+Yi_1CHsUKc;pg!dZw5ILNc;}x#KBj?bfArwf=cos06Xa&VS z>)mP-mqSoD@(yGyV7!9R?NSt8uBVjERMxjpZ$q35?8{B;J*K&U6ijNY(-Jw+a^v%auU4QB_G+qV@Q5}~ zgGqJA58sYSe*326--%)tlo1;qm&_%v2{p2fk%Zk?eC5G+JMKJFJ`bPomFVGm zyT`xhulHO}Qrkt>TRgICrJ{4l0)7LlmLDK&+Sf1e=jJU!eS%E-XkdqS&Xlm=q>5kE z74~OtHPA9cdpS1^k#508E4OJs3XN{GW#p2z+Tk@kD#{kA=%HG|vm zn04>O>Y~6_oc6fUa=As@{WQsmkd+)FX>>rmh=}4yq-1vK?GG{Yhy9vH#u$KsB#y%x zqeu9F;a7Gl4ygacTfU-xfON;O#9=(Zst~IC74ah@)Vv)M?OmklCW!`DK}n-$SzIf$ zFMIaORxgF_-27)_vfTT0klOdUg>ke+f%|AxV=s$qD`uvw0 zzIJ8ca|bF-Y6nNg1iLpehmS3-7R4jF zq>#Lpg=4|Ui4uRG660C$G5#qCff{_rcADu04DDq&Ee9bk&t;yzJkf6nqDT{TZY!-m zGR+#tCnOXqDE8F$RMm|o%yc(umm3`7Ho=m;?f?QRrZshkB0yFef2f=xvGbKHSSfG2 zaRI5pztb=^9q!Ymn6r&BHiuQ*xNdcPhgfQu=eY+Z0(Sq5$Z&)(K37+BUNJx`V{QlR zs_eL^G^MIue&os*=cYeEaPpvOVh%k2J`2dpk>#ofhDnyI+j6_$IZ9S5JPi+t)On@R z>vKiXE1h(SsTwP7?ZPlrAw>@5LW=D6{8_#p#KXc`gi@8JE*FN%Caz1$Ee1|0hBZ$k z=>yy?j~nZnf*4syO$mnn_5{{_L`>cAN)I3+HsqTO3?;gxfA<46Q;D-!>=mTwi9C^j z+pzz_8T?XytuSQdKvPZLBDuw)uv8G=A@Eq*#K ztl%4Kyco!&xn{X%#bpA`0lRUncbcR2b|i0pEM5rlc|ehG_%V6kgkFj~+4;OwW4hJU zU|T^grIskiX4|!iM~FuI{B|DXL1zzqscF^tf&a{$D`xa?N{XOeBPtD%4COy&(l(LK zV#MX>*RUAuiVL)7Wiisyc#;l5z>ym`5e&^IJo%+Zuthz;pGUzfOST3R@TvN8M)J@SUH9beYo#omPP zmz~g>S1WC8gPh(lMh3`1m#~dL73|JALXsEKqJ@IrkIW0*&qN<{#YjRX4PQ%-0>((`pW$gEY>-Ap0zESZFHJzc}Mo>$X%Z zp5}sNHl#82Vg=vMckofsBJtPBpPTTXlma(|la4a9)GeQv%lEH$m-QPZo&dMpqAc4H z{q-LRpYrMp9sya$pa%tKR<;%jna>)w#@<1$zz; zM*u}@Wk6RX_J*vYTSinVvnUe>SB#`M#b$+VQQ^}MHz#V7m*}1b8vR19 zbFN?Fs`(fw{9h5a|2Uun7yY1)f{>H6)dk z0nHbYh~ZHm*H=J@Hcfc)hp^oeI@Jq>~A=ae&CZG=X6y zGb^+flH)Yc-eTYr_RtQqQ+a;5cvfsFRWU?zx8qx4Q}yTnW%^BR-hBSdyc?T zPa5%$i7g8~bYl7cYf$k%1MZ0gYlCmah zgfHd=n+CA)O)v{0Z*%>UR(xYC@uiz($M9>8TR`%CLPWq>FmW`M(5fp^MrFb6)g7Oo zWah=WL>Uop{Gf$Urqj~TG6xvx@n~^~U3_m4TT`!D(XdfN_fXdb@IRhc zO@O^_S_H3=vuK-~L5%3C7buSb8k0C#;s@&#E4%%y8!Y#&9SP~p`x_r`JCWCVDT}vh zH|iO#&BY*I*;L^lI@`-O0_Q#*1T_!fr)Xvr$@R`>oPqE@YN+jf_2+qP}nwrzFUw(WZTKb=|3 zV%D+AWoAU=cNr2=eKi-**%d6eB5=+XmBW06Gb*Gr+9ZxLQ-Ti408X|RmsLVS$304& zjgtbgQG-L&pUkT}&NN|O5g9=~^ZJs%xddO`y?q_dPJ~B+KdY;Z7viz7_8)qknaEMX z9O^l+18LYD7$7{13zdFdUG#u@Q6Oa{Ax5_N!ugFB_OXQTO5L;nK^{6W<3yveLW|;Y zVfm3!LY!RNkFLaqn5mu?QIhPbJjwcM$qQvHhteboozc7Y8G7%jORqX7n^=l>-UV+U zgGK&dU5$r9I%%^8zjhs!Njkqomg@wA>+#lGRxBq~NK6x+GR-Q-9`X&L)h?XXk$Uoi z`_<68dXujuh6mV|ojmM29D;3tSdVdo>5$-`GL?O9q>6vw^>FlwiR0W3OjE zLch6N*o*S1RfV^?oHkuUHh^TewJ0xNEFSKaif9JL82V z=0eAC(H*Tsre>O|jAc`)y6seSKl0-ugV=#R+Je&`us-s`rQ6*qmMq^QXSe7!>SytS z0^iURD2R>hh5>6^_+ccVk^(V8P*hF$S8=JklnR6_LX@UEJNF0D`%>DoCs}>ugN-J! zlLQjgF{BKXQJQ9YAlOYvglADU_h}I-LqbamCZ3T?7i!5%i~0#tvMfs^joRm5S`F-u zcOHx4xAi>qcy~j3_TO|bE<40*RPefYP=G5#LRG*?PjejedP`-!yVFL!{4sRfCP@TrT%-ZeD(Og6%E__;c^NPMj zur?EOt6gGu{ciTy(%aJvS>%$HbrVwVZioz)PX63`RWajiWM0`{p*Pg)O|75EFb6}K z?p7miyDOEoO-~F(_GwVbVl(pudKq0y|Gh{IIrjde6~bVzp15AgX(nE^AjrYVa;YUdxbxu0NydPd8#%YBNy{#N zEhjaZb%~@_N4#~b`y0C%d;=dw(N>zfxwIG-pj_)z@)Yu@9aBtTnWJ_D;K^&xmtiOj z56xk2CyKqgH-iS`(R-EyR_ctvdNf+gv-W!wOhV(hM>HwTZ1gar#;rSlK5LtWfP-l? z=d`eMeWbdmz{J2oByy#-xp#O1^5ee{_xoz)8=+A01Xf5NBqF4suOhPhi*9h!J#K0} zIkZ6$_PhzXtazuhp%GU@ub3z#jTy$wJG;p z3+$ziQWzl=uked)NCqQlvQLJ!NA{4*G9T$6-KXc0f;GbOxbgR=u#qMk5C|(a|Gp_H zDbYOZV%l(z)czq)eFkxUyHuTA9)rC0AmmjWts#LoOV5@}Z(Qzp@h=d+v;ypMht+&B zKC!U&u0y>3qHH&AdFZn~C&*wCHSX`B0`ofY>w3T*Y$ukOsxZn%0RJX?M?wF3mq;d$ zLhmaEcpC**h%_*=f#H;8+-520n&tQK?lTXPUL@gw$iZT<$Kv;Ky5*4ex~#}eqme+? zafsvYmLGC)j_(rT0DiOyySXHBjh-{Zz;lUgtsZ@IpwT~mcv`j=%pqPy=xMu;Do;Cj z%qoi$@a=F7%c-OLJRKno0gdy{sSX^t)!D&y$F$p!58;6a2YIyxZs!QNbIObWxxHW? zJ_S!Bv94Jq`J?j6EURegOIXr)^QJZ&hyQ6va%1R*Zct~F8jKB>D%y_HcIxDd>pS9T z9=Wudnt5fMZH)7^iRN4`xRoCx?5%)>0GTSCZ9C? zOH1b}4Mzr~UDy%%)oL8<(ucEB#qM+00;?3UpQV_4g%!=(>D5yOTjxG+x|L>y1%oW6 zv52xrr^f|K(kF`sOQ4Mt(?wY{WheuWI&EqX&~H!x;|n+tO<> zUf;VCJ0e#^IOwTeUEo-+(ew*HGNNCy*7YfQVEH~aDwYuhsL#L@gByXS1CN%>5Tg7) zOsKQ)(Ja1`Aw<}t7NTCRj)`M+Jgs7cS^P#tj@6lODFD{O2$E)Qm2_Hig_XCwmMI3y zYJUwu$yZM?I2n8S#UfV9d)VXAU5o+_MA8V2VN6%T+sRL0OMREq-1Ez zq&z|^BQNR>bp;UF4ZNixfN$OIOi}>!ICz$TV>ggc-%*4z7TRJDPBAhVm)>{OKBv^r zvjPI{JT4@6gbr$M};5|1uxVXh|U!&g$)@H_%uT#8MEeWB^l&< z$%S{n{)?!+Y6*dtC*?|O{mU6ui{LKvwrn5#QDbW2DTKb*^BqZ87}Fz_bi>F5ZA3Ek zK&ky3#=f@WLu?3>F}IbiBWQTA(;T-z0o`B+`uY4{;lWw=mza6=6l zM&C8o*1?^aRgwyD$AMl6aFD1Vx#(=B$l+B; zt8}WR9#F_ifGlxCXc!Cu>D}p9T{#EU>SnKL;|N<+J-0zk9vU>7lCfW}eYt)W#RgB{75fi;P_c=ZJ5+~^;<}7GDZ<*=>)dxp}-DeH?T}tBgV8?i2e{5 zCC=??q%|;Je(9=b3Gf^nIPdtU#j0kuxg=eYF5$;j%0b%djl=FIi_~>!`smB0=Ip?e ztHBLDPYnkO4E^cvqFdrRtKP=KpNI&+D*8W3mH?_cjHj*f+;y%uQuD)6bLOsfx*jXK zrd3oQUlU+|b3UaTf$hgo<(DPk!q0mNjqUkk_=Nt9m4Ubuf}hmH+|S7SX?CIMy+3QO zNZ~(b08k;CF2F+;Uq^S2%*lQX1?Tb(jR|c1ZB~BmA(|YFB=mnEU(;vI=Xp0jl4~nj zx+{SiZ5x8JzIm_DG+8UTVdX_jvmUSB_g{eZt`LHmaZLr-MU?fp)9oeFfj%%xJC91o zmOR>PZXC)wnIG?m4;SzP<|RyT(WUm``YnK-&%~! z;SG#eF#Dlx$l*_e`U0S5vjSBh1HH&lgYiJB!}t=n@L<4=K$2T4Pyc3goZUYbXH`{~ zV!z8$IyRioIKke>4iq5UvafrHY+-}}_w{J)J&%Xx{a}$ChgT{e8AzeP+CNqCz^Wap z5~LoPG@7F&7p&R0mOPbaG0wZ(5prVb%@M)H*OUvoshT^^GNST$HDnL%2Mf2{ev~ie)L@F_pnlU_w!lf@&2E`fdaen!o9`!Ad-R)BA1k*>yD~>h zkqI2xt4|=aCl@#$jIAj`3Uv=FAEdSclX}cjkA;19x|Nd;dA!*@MqZk+?G}-nsYpL< z^GIzEoXFZz?<~~%&Tl3u5|uXx(+zlf@tLsIYLf=55<45vW`W2jeJ|>?jEKI61s5Uz z9g7{N=I53_U(n2oaM)*UOLhvfk08BZ)u|&WCkdhNvXmwUMCEk^u4Ja!yBQBZnqI8( zkyyD9q-*O(ZnsXbdbr|Pxi~laYdUcJJ~u7zHK4dS$Io-dUnj5$#FS~-vyV^lmo%|* z*BKYZDmt|oP@xs2#>c-Yz#&t?+KRU!izR;>je!(zQHnAeMsK$?=_6O=yCchTQioOG`WK<;?Lky!`)Rq zL8+-|P(Cj$0(R)D-4NKG6;l)QXPu9k{%*BSbk@Lyw$?+ht&yQrA4=3%(=OI2@+KlW zq-3JbFZuWnr3ITh{2>5s0L%4^RkY)0rI@4Navyy5D8bgJNvMdX@{ET01rBLr;P#l* zZBkckKAePB989Mrxc@tQ<=wD4jc<+>e*u_*--K%(!$}<(H5hn$mXa%Hg?(0_TMuOP zizCjNJtBl!fhElg*uhszw~NhiQ?by_By^3Anv|1$LcA_ZKDAFDPt#D$kZIZ?S)b!Y ze9{}2WY#GBfW6ZGz~YT20S$s_#Akq26k&319Sht0FF@E#Ae~+8T|wp5v8-++vK5ZS z&88RYcoN{hzzRWp0L-CC`WNcOG6^5MTKC&5ya9seK!?d?K@&0{lg$-(G2R zu-Xlb*_-v)l1E7c`1?B6?Q4A_bMJyd{$HscHJi?Y0*7U%rHwkB41f#Kb2O1YO-imD zKJNp%DJE>OHpxQYf)Wo1usBHh`zPk(=Z9m87_=yC7^@_6X!h~`C=&pa=-oXn>)b|0 zLmYGbBgMxk<_K9Vv%gsj7N|@`4%H{uS3ZXE$Dj%tQR8MvO|>MT(;}Gw(rsnRlE>2^ zR-XhVfZTk^+q`$c33VwD#eu|nENEtyz5q8Q_$9P&WV%0-GOqbRJL$^jxEhd=Hk`A+ z!&fR@tkSSvdbksWNwI>0sJk^23#fGHV1`2#7lzOHKMBip`6r5!eDC-+;NPzz<(E~ZEUE@FyR zQ}9=A!MqJ+QqQb)4}jKwLKPIQN45{rzVn`iS@rbF-f4R!o)DIQJuv+f=M@sgsKlA+ znY}X>&x`&$EQ&M*_i&PSkw!s0**}67cWsdzY0x#LW#zU>Dfx9vVpiz`(U_?kTUGv>L{XASX=-c9-kZ@1V>O-h~EdSudiorsIMnfQmXtDbmjlcNUUTDq@!Jfi~IKD zh~Na6>EF-hfQ+yvKd=BuaA^vzZvtNLc;Ddo*ia9!rlH~fJGQX!kDjtUu(g3x&<7gl z;sVe?q#VJ?>DI2Mtr6HW`Z*=`AB{%qpPZVSxs&G*7{)s@v@tyZP+$Pm1iT&~&&*f@ zT*8^D4j`!eZ2^t(M};^V9-F?}-ybkGyq!EcGo%!m0=TOO(*#rrs1-nW%jev48w3zV z_S);qU?fxmTB@nm`E9A<)bi(%(e?+ZADG>MIopGZwRd6w?*!-%170#d0+f;y2=mK1 z{&mp@_$p)j-&&OIYu?!|wkG!%vbCY%fwWu0Ysh&cz}Np^ zQLl4;{FwfmQ(FrIvzKw7{I65hv=#X^bW*=|qrW=Hs4h<+Zw!qN02u2WngG?+)ieOM zci?@$Ju!_D&wj@BUlAz|_4XkC-@ggawSRvlTz}=k=fBLj%mIJBm_^0yH-P|I{5rMs zLXt*czM`Igo$7v(AAajb{B9q9SB`(x@B7l)=G)@m>f-k2jqIkgs|Vk`>(Z=kEr9DH*sp0tX1d>^i*u{#oGLXJ!Wn z;51R6>@U)Puqb#3;PjCn1bBbVFZg?)bkZN`EgAsR3I1Uy{nQU(YXH-8{$V)%)OTSV z0Mm7TkQJiWuzszhUj&V)L3|)9#V=ufTB%=Byn3|bf5pOwe?^u56gU1;{1x8&%leD( z=3MiOM4vA6BfW=d#@67}_+hjUTE+a`1jqLm1>(aBlVf{ziv|xJ8&~_{R=+O zB?I_cz>nKM4&+DBe%)VgkNxjLz;hg8HR4;JVLubikC6RMs^1-Z#usfM^p)-V=O!!< zo?l?UQuU9}-N1?;VY@M#AE8FTwH^drh2fPpH47;kRm5 zA3UrNp*!U8A2pR7P{cd`aO(wFw)a#vyZ4yW9~Xa^H`y4(?%ep11c=RnU)G28p@Vwb zhmifPH}afDPqy0+-Pu-4}&kw6^gL92QYv%8=8UwZVR8Cg-#Z<6n)1>pSTzeB&?cEAC-0?fn9q~gp! z3R$D`vt6EuLhz$O^g#8em~I=^(Rz`v`+~wqPGZ~>miSI9M^vQh;F_ecHl8S=Ik%4N zX?5N&Sv#y=4qFVpNj#0-W|{3zp1>V<1E;Cs){xK0A^~cd6p(ruQwYIK4lr8ugI-Qk zgsf63dKaSsDe!nI8pnxSjRrZ9+da?6oDUo#-I=>?s)E<0MHk@NeRt)LuGh#yFNV)W zi>OWGM@`ieJLbmaC+k`K2-er=6Z>&^xd@=X<2@BDTk`%22%w0w~MJY#ZXEegm?cNxhI{Z|CNlMMMH8*b6F+XOWuFoAoHQ7sjw$#S7305m$-^*dSGFP=|XU-q{{e zQ~Z6JOeVg^z*K%qyJQ!W(1y7W{JLa}g<+0dWrE^lix88)$&5t+|JMaj12rk4T8a06 zv6iz5nAxAS?1HD!d`-_)LRfNZ_fo$^ z`#ZzPYTW;AC8x9@ZN)Rq0;JiSop*(YVxBb&PfAgXSP>RRzN4|P zWJX<(u=tk50p9({00`a7#n13cuUF(X-3 z9t%b8HHzJ*i+W?LuG)VJsRw76H1Luxp4cfNn0pMhvgDofxMvFROxm}N#Ld}|q>UoT z_CyoVL2Rl59hulA9FMt ze1!lrnjnv@pcJyNTJ7@?teB0}lSnfb=Tsm>4prH1N0_E)reQIY<76j`0g@WDTTxmv z`y7>e4pNPU%2ImV)jy0lMp*Vq$wY!PD5en-#s$*; zj@exG-9dVGmekJ$H#zAuW>I-fm^n9-PF+N&q8rfD83 z5>t|K!#Nvh94t!P&|atW9^qX$>yuYLQ)4nCtl{IDk>{{Ix7U;HNe#7CEgV@5;&M(X z24fijC`~MBW5@UTy*aTthW7x{6ZhtA^AjHUag4b~sr{*O! zhP|)I)MxhxE1dB#81u0^*~dROCox0O@8nf}zf5S=Pohvz!Tqquwn_{c(&Lv>tJOSp zSz*X@_Xz@Ha0E?8MsMu(=P#<`HU;h@7FQ4w69X4RuG{AE-1%IC`rKB;-x`C}~$ zOU*8P%X@qYK0g{n&lyzMF(8nSr4e(HNN@9KfUv6)_XhQ=(Ps>M+Kh*cug^3e2-rx3 zw5xkd4McmB$(b<+3e^pg(_^NN$mS52#~?EQM?vp9;)3$S&K$p0ev|eAyq!%iRXQQe z6`U{JwIQo_tyfocufDEmanPwW?!!J`vDDsq8k{FyEJ&tOgFgf@sEiTO^O~47er6({ z+`CU(c{Ikfuf0G|ojA>$T$0#}x809wL#2HXLy~!}9;b{Xjkh?zf@itX`#iJ( zgYPD2<9!E zrQ*Xk>e^jgc$&CNBD+T|ZsEA9*^b?e1(3t1Q5cu#X)m1iT#u;4NpKnf6AOO`M_-$3 zjEhX{Hr!d2#r_2q{Y@G5SRiz5pRTd7OL@4%FcRv&%#;C4+eT-n%kNM zJoB_5N<4uik`MXLsj=lm5)wNyeUStdH`CD)hH z1~DYpncegCK$Cxd zk5{^(&`$rTFF<6b@WJ9KGu8>hHs1wt0tpcxiJKQC~cg+}IV>ywYR zA3Wy9gQsvU^U#;U99=tcelW0=B; z^T$3?9w>tW$Z-1>OOm9AE_KoNsdpD9nbVq581L9FHE;x8s<+xu5sFLHRYc zbs2`r`<&((zKloX^i zp*YDpqfwvK`LkRH)pFQ#{)O^+gQ3?0iR(L6S6O4-$pixb7j<}k*sBE2ZdSPZ4@(KA zmbyjvej63D90$0aE{q-cCQk1-dxB6hO8Vim2Qp-FecxrA9^)b0`}%hb5~!k#Ed7OH z%Os%Q7s@`J>QWrOezRT$BRommni}x4+|>ycFr}nI=3<3kBq|yP$Fpvf*(x)1hh* zuDJ?*m3v=rc(!1DB4xJ5*!``bToro2E6N{WYZ75-Ngkwt>Y5md9A+((@pc(xwKuF} z{Cp%wA`rvpMah#6IIuAj+J=Ib7vxqb10SF27UGA!x_9v}+x26xXsb0?RmuQ`Ik%XB>dP!}& zUbCl&)>PA1E`It@`*xoKw{iNPXfsu_p8^(l&=+ZSH?TBb)o8DsQPGLaVw0PWq>4rl zjsW}mP%%I3O4p6W*d0*wJ#7wQc2SCx_H9$O+vVK7YwCPLcp5_IEXa(wT`{PX2<^z1 zqp8014e7;7-rD%^DVCj&f&NH*x_)dF5b*ex}?|p`eJK6 zUL>J|5zYl*>a^)&_Xcz+jTzTH6R9&ihl_B@{CTQUrYpRcD5lt9TOx=lZ|rUTb^SK}PSv<3l>g2ZV-w^pPq zws{XXOsY0138?Vf1(Yv42Iulza9BRG4fsIiPwbK`!}iF}IDgUuDIeUKxPaqTA?5|P0R=MC9@7{=wy*sJrk@+p#KdhbC6nf`Ir7kh$Dpl z?9U-53)vq+I?7Mi7)Opa&zlzth%r6kJT>r#nlr)0#re96`=S(oKKmP79B3Zji?%TK znR?csnqqKLF(9>|-6b%Elc?A%U4c){npF%A3YWIL3;)ywwwY0qKl8BH>Xz}=EU9;b znG@y89^!RMld}aY(RN5N4ef6&l)xlqgU5!kqyFKA{RVPs9V|(%W%?K$C1L`+gH4RC zSS(ZUN*5^|UFI%>3uuDpp~2WDMNigK-8h8FX)Fr^-wxD)RmxoAXw1lha8O6y@*Lia z&8p=%Gujz8tT+eb`gLZ?tr?;Jz(lbj*X_z-N}CuQD8Fcs8%Ugdjc#yUjN^S3;=BHC zqR#}Bm-3au!`lJAv8W}Gp0$^BAp2=qd?HG5?IPcoARS_K$!@w|%@ykxzu6n=QE!fr z=(IqraE$d;OB4BgJ5)cySLO^HW!4im2C1DtW3d9UAajSh9Y4Q4gYRyS+vV=gD?mYq zbf!(HT%X=En;Y5j*binaZo-^N;OkipHw_80C%`nE6{vdkw`5YYnvrX*Mj>OVD0R&t zPISF}5{c))In!n?mc6!z3eAvC@0)zrl#{-X-(eAn_NuP&$`V>|JQnux{tGuIfgad{Ks%8X|%k<<9h-|YfMerJ_z<_1ABz!!5$4*QRWm4&& z>*AOBmEuQqfjOm@ngs|h9#J-A$PjR3@VhZudi=Lj$RuyKp^Ck3#=X|adae}fR{YF% z4~-6`@rjmcK<(0dK%YCX?ljP`M*%`=O+fV5#*St6qX28)`!2e?wq2>Uop0^ltC?_G zqtR#6nIpnT#x2_aFQ;~Vb*jDBH3`VE!pEpsEp0GyYL@5Q&xf}*0pXQP`SZsn739gn z$(cO(Y6}h<9C!j1Z~j0nD(M6{p(CBM2`r)n)Ae%Fm3&fM!sT>f=&KLQJY++~AO#%C z(SlQX`{|-j7Pj~ZCC#1JOdjn=sy0UI%M77}>j544>I9aM{9I1g%^9=KyagBfbiDYbsNmYo2>0L>=nKmeouwrm(`tk5=OKb2rjZ~T zv(yykTo^)BUc00Br{?m<+rjArf;LXSQNAau^44* zOE`6G4TTHhV#XE*VG3DkRHoN8aPz~d>o%|rYAcbkH4%rHSXU@6o$2nKC6c(2D+;i#sR<<014FkNfRsw= z_emfx(HKW{oqtGhi#b#^^rPH<2WRA8X1Q0@49og6!U!YV%;u~Olq(l+9WnqwkEe*xyX(}MijsBR%U%Z=5K!TwRi8;)g1RhmV5`1sp!sa{QV*n@ zeJ}R+;V5!6LsBJFtTo3@a4(Av{~CmQiU~&0&KM`E%PhXlB|yWyBFc~x>iJ<{tgO&u z>pX0zy)RCBeDy4ztw%_uH1SKxx=tX(Kb!a!%p9v%y3Q4BGWj|ie33cIJ?xALZD>dD zqpVnhEim0Mt5nQ`m5AOWszCM+pl{yLBY(&yNf{KGq;b7947#boVODrMqnm`yEDTcJ zHYo{fC6nF_125M;T^iz1$pK(fzkhm=J{Pzc%DTg=8>mC6QBmPPobaHQ{$(E7R)>i- z;yjTWqPiMN6zp(wWipA%*$VTff3|FpM)NL)y=rkflUlN77!XK^Es9 zZf+LH%LxnuTlOom7{C_L@{7hn0FlCB<51Be%@-b&VGo1VTJX>cowUA!HVSS64r}AH zVJizs08v@y#le3WSct~tdTzEtMmQ^EwNU&HczvM(iA#pMQKtoj=(+&i2T^Q$v+FZX zZ#q6>e-a7)K)7$eVZ+}$O_k^JEMKTl;wZk&Y_xi^$8NgqEuQ?gCs~#h1L)?ZE7#yS z&)=-L(S^*er;+(f{CYu?&-9he8uI9ZLNBfd(dGOzTABM5@1o|&B*(w1Q9O!fD{|d4 zLw>&9jLPTP(sp3u4feE1dLf+MuJO%?wkG+J3F-ZDn990JQ*_#b+U1Xu(IFO(e<09Q z^yW`{QF2*@@I8nDHwom}mQLBB1 zLT%=N766A(_dH!W`^t|E7Q7mO?L+;qtUzgZz=2j`t2 zfV7hM65d6=i^3aTw90EIx2JmN<*ReGFmD-2zUpEj(`oQx{k9VU{wv*_p@(d#3wPN4 z_HH6V3u`vWg6uJ$I$oj*@9tuVH+fIpm!NN@5PLmLi+Bs{ycZ!}Hb+@mz1a$b&Ap8# z#q|-DDrB#2nQFQ$(H!9_m(`D=tlb4*t9@j0{#fsh(#sT`#il~Dv)8c&%0c3z$}O42VXH{O_@iu>Blphj=WWtNmG zJbl~!c6jkh|6@HOASjr%WP-WJ3b0IyVdnz_ZB1{gBW*-Q`yFXVDGYTIhu38dlfAn| zV8L-jR(WKtZhC!bO6b&J*2Yq!bIG7S5j5yP_LQc{P%PdmaQMcX!Dh%;GpX&_25@ zZB0|v#yRwMU6w?y_A4{(MArG{iUisRoYy?S2tIZ}=tzPBD?+$xd3?MNmmP&2zb%?# zhWX$+`WnwxO3Yt@X4i_g&&5J(4?WGOpX@9^kfPf}jKw%p z>1Hkr%2yOWi(9FDzn$Ec3=fSIV6>3vKV{8u3q1(f1r{yT6qSUrU40KOP2-Z|iditR zE;B?MxQ%ZIwSx$zb6Pd(d3;sLkjZII^CDR=IPj^JiBG58GGYntC*m)~v2itSHKcOT zg)l&4v)-W#dHXQK%98_WgMG&IPv%6fX@r`^w+(O|<&xa>!9>SJHBxQUo%?WQq1lzp zxi0%=<7ZQ*-QCidv;g3}B$ahGC?N0;a1bXb%mlXEdCXO;$WPd%@S0LO%ikZBDBZ9` zC%D0uhCDx1ulX=?x@*-WZqh6`MVWG3ZczkyL(Be~T~JYHB4SRHj924(MP9 zzHcAWD?He8n`EBsHYWTR`^<+O@h{Pu$R^|*X!*Q(aMq2OO{*u69xAh09GG|{2t)Yo z#ebejnrn@&n1=FS&;^>3m?Z@io|#D+Y{GPX4xX@Ep|WP4fL09_OXk-0Jp;^}mmQP_ z&y$&FoV^EfY$E@@p%sc~Gup>9BztRIvAc|SU)L9gZcK$6kq!t$J-?%5Wn;1W0c@rM zQ^Bsjx{TvNT~}r7rQeTZc;@b9%LU}uiZdejde){8!E-41lF7kS6kzUImq$vOLzl7XCJxjiqur?SKtACsy50g_cOHmK0z>yaSXj`^Xw*`mDLsjMu9)-_IPKL z_F%YWvJFpWYJbrIRb67m*`S4UH&w)Ddzg#C+n_?s_wvfu7z9q@7X}5}kfZnMl_Wp` z+^_g=vB(lZ@25^SR>xVt905SJC*Ey4%OY@JhO;J?=Rtnma0bb9^yh!8olB7#KH^5voLzNtP_Y== zFWfl0X=N0NDvFn)bYotHtSfKX04*|3vILYf9gQ_CkqyXAwH2c8GRby5pmBtte3@6+CxwDoedGHC7so2nv`5*E#%3Xp^de&87BAtq z7|h~eJV(IOUeFaTq^4)e@p!Xgkea+i<92e_bzd9lhemaMe3q?3U=dC)H6bFR`pm^q z$>;q-^>&hp^c~3@2K@`YyG}v%Z?itiyhN2^LT8liI;C6+yV(bj%x33S)nG`G=^7k!JSLt zy_EI>;A4$ie}-qZPOub%6v53jRC*6#>PBt(7#|Jd;N*%E?NOXMVp6_RaCfi3$B%9h zNR+^*Jos>%@e0_`D=2lF#%*>s3hL@X{90c*Tub{r$3&dulgtHEN&T5;*kwRfn=M%3 z;$V;6gr3x{=G7)}*V**Gs70ay zT-Iix#_{cHY%8?_^>_ZQvQ8f`RCmNL7qU}nY#&*yJ0Pfu_hr5<5V!gl>)=6NhNaLB z^G^HBjm3t)psSSvAlDj+lifFs4!x3r0d-qm8KKbyCL4&#iQI6hda)GFfifF1Y?h#@ z{hbR`U@@xVvlxP2(Y@9XEaPPwE^Dg<&&JoqN$REQDT)q>sF(9lA)mSr9UfGJ1;)*P zxx9ACoR?@Us`Vwd?OcPZvx~!W4h%aKtzpEo8qYNjm&n!R$$zQh>%{^8YrE*i8{keU zJBbXO#-Lks@W=)x;ih@QTp0g_JO<_f!6z7ou(H?y#CTQ9$`H0^^lF}wZ{htqR77fO zN954|CH2i#UORf6Q?H-HNiA0xP(c7&qqu{Ct1SthG+=MS|AH#Zbqc(lG_CVZjV3Kr z$y^{j`yS7;jcDbEmJ~drwqXp-KPz%BHVAtI8Ty&UZqtRc2KipxPzhx^l$2(kn+OVb zQZt4t->fUj9MJ;>(|#AKYCHDj(MnFP4YhWF+v)w}n{5BJ>a0sYqgza?l{y*QlyEt< zw2mw~Hd^n(OzP+s@o#D{`b^eRO1EfDCjOGpix1W$`zZNGMas-75GMzTuR3d?y)|7> z@%?$Zy`PuAUh+}c^f$0+PCPvIaIEbEl2-ZOzk9MlZVbKQA>(+65XA?S{CSMFhrw$~ zK26oLGFNQnDK*iq{V{pYIQw`5VtCD^lyyQKo!@lMdd%?mX0aO^B#~s)Tr`Ig2N;%A ziP`>Bo&5?A~>&yCQH&mk9nBdUC5Zx~HzFH@eKiLGX1r~>sV5_o@G z731(d4gk)xNn@i5*M-VQ)UN7mt76jc9MQKg7F07K6y>`FzCxCy+32{m*~VJSWv*xm zvL&Pe;#=8c1OCPFz2olkka8dsLB>WOMvrSVY_VpKS++}!(vzWdpciBf$*ycnh?|$F z8EIU8J#~T@uZ=KV#ASiiIJ^-lhe(E((sEG7#lA_1%PYqeB{mShc7ib!1wpeF0#ZPX z1f{-=2GkM05-=4x;{l9JdnKyd=MH;FM{DN2!O~ZCg%LH@SLTrEp#_lBLo0fnH=qOV zYhZ6bIp5)-u6p$E$O9X9$|kUsEd2CG=YS5wt*795B@Wg_9r+uP8BXaKI%dOhkxOKxqfKdF`%Kuc1;3hlV?#G)X>*Q|l|gp8MzkZ)TxW08 zOq`5U51}Nr`dW?0$2i=#v3{nprea9C^EbScO6J&pJH%!Lugqh1e^5M7ONylYA_C|M zPaGi^>e4Avy<=8{%G%PtaU7_7p^_~m=!Ci&WlrpaT~*coX&BaPA;1fE^ihIj}|m0mG+nsXSARAg}l9=Y8F3+KWICaD1ok$Bu6xy?DATspYsP~%Op&U#%ky%%& z)O!z@a%2$N?VFw3aNwb2x;R{X_Nu+?%WaG4kyB|*L78gX@~&hw(^4p|o9`!|T#KY9 zkR_B;?4lc1#Kh2c!=V1ieRT8sJ{>#0o>C!nWvC)Go3VmI@>`5!TSjJK+G7o}P4Xa# zp6%b)2Tk*B%ET+Ow=hh_ps?aISZ%9l@8`6z7nME6wLQ_&VU;d7dEd3SR_8uK^}MRVC%O`)AGK{g6f0U z25Ff0R?=$>00n)V2|XrdL4>|8d(@y=SYiBHENgy#CO3sHuHx{i)$2tdjpw+mV&2ZZ z)C?vvs&IbpJe$)NX3NTgPJ=Gc_DejjBE4Jnp_ASpa=}c94wx|dS_|g6KX=dRUQ5!* zaye3dD%sU){D~|k2C=?+6x|ne1qakDRM%!8v7D7iQBK;)gydLuj~^)*sSuMT~STy4$K;OW=O2= zD#6TK*RM&Ngk6j?W64gBj|nYi;%D!i0w=7TsUyx7WR1qj$DT~zb~H>x;`VjWdrm}< zcO6Ox#>`27@n`iKa#f}cqrbLvl}7a2R^6MY-qI%jmQg=u0tHIjGypLL`>UMypO(M6 z^28estc;Ccfotn^@#x#9N7=5PN7DV%z@WaC~ zALf=aLzkJXnH#fFY!{-`CnPR-juOweQj_9cPmg^ZTb1h88_lkiJG39#FF;u4!tuY- z!Ag%nPoffF?LYhMS>JuOetH4vXtkcxoxDY1btoN!7C1St@%<#H#`ITJ>|6mEk?#;o(M#~ zm~91??nO~b&?3sXNq6796}QU?u9QP3u^Q1olEwIKpYL$U&N>8Ond67c9p6PL*^&E? z__eU;_BVw1Tfqj{3GAB@W|oETfYM?E7fHwtD2MphfvUK%jaeZCKH{O6!*7IAP;Li4 zN9K}Mc=QG%0hU9TTx`G|q5Dg2#3rl7{c2A36uaUp8y75peQcFAIj@FSzsMFG3YiAn z$%Fs35KEE41V?5nmVAEo$z>GB{Y=bFmqk;WVi|I^!qUI*CMie5PUjw zPaLI=)xW?K{SwHp*%ilJdUnT41vAw$t=|-^_>oT-A>U{3Vivkr?EK1?%q@IMhDjA> z_wNv3)?JF;kTNU%yJaN!yBRP8FRdE*8ELKM`XRRO1rZ171{^aAT*9FM$Sj66w8KIH z^+5A<_Q;@#eA)(h%Pk@O&P3zI)?A$yVs}zGs8K;GJ!l*+NWZ4pGneU6Wd8M; zH(77d8XRY{27&S8RyN12^~-zhN3X23?uShTMPvhaOvR03`FPhxPJpU&WRGn0hsO!e z;Iql-T;u@gCiVz&oPAY6fEPzwC6+3Bgu-Sf)5G*mbxU=kN+7^ood~UvJI2Iz0NiXz{(= zh<5#IQZEO2oL9wWms-i;evthy08$hq8$mp=mumFn<_9YI8X8G!vn1~50d~HOtbMw0 zDqW$RF-ya)d2zhq#z@$?dRw03ZVJ6v5>KxciX|OFzVcPc;(&FAf#O(jb^kM2AuN8d z)y;JB)H5daGTee@o*d4XmtZaY#%6ihLDCLH^qltBo&0u$bPr&vq>1hxiQBKqI|W}n z3&tNNM!U-{%Vs#d{RMmTKlR{LoDG1J(n;+6XX>5KmWwR@gv1l3VPzH1E@?hCLQhM7 z=xqI?k;l(kFo-#f8-xAcdGA*k+x*12R<7yM6D2*c{j-I`DWfeh<%@ zf25i?509T~`rGgrSUH1Q7-~ZGsT472%tA9o@6ZJF9e|h*SYvxN3Jl@#7|t&M6O_(1 zwd?l~SqBe4$4RItY{)R?v}*iRP!nFld58R=cA0bAmg|Ap!mNdF8&5VHn8R}#Fj+QV z6m8Ghuy8nm>Uu3iHX*i~INB_Lg;+VsG}n~7C*43w+#S#eI?%^OCeg>3DZ>pU*y-=#aOI*)C>-o{i0Hl|2QLfJ?hAc?dc7 zy%+~`0PlK*tL7S~@kn#Jma(kzS0}N4mOeDAGAOw38(0XdEX}2rDe>?GCB0ty4L{4D z6x!_&8sGGtLib8m-45sO>V#zvgg*M7dq><3s|y(;5ZRpDc_?5^FtbNO>zelT(CY6T;6M z79HQy#G3tycV>6~p!^%`)fdbIA!!=4Be>L9fPod>8{QccV0$=>v0*XlZcMCd845^M z;zJsOCGg6?$rLapY;Sfawdv^*B)j@O8m6@6ln1v@(jI0aG$@7@EY*koabwadK@E2P zN^2tFit8WTg-x5p^|y(wMGL$3!MW}(QIUE8j|+$$3``q;Oix$H|4m=%wd`!U3{TVS?IP#k~XM02Ytwj-Y+Az`IDPOrXz2#L( z%TWGx_-1Cc%?QRnV~Bcx+B(;DaSjI z?1d`nOe%<&zL@SSd?YR(U?Dcml`FPao+=g-8ZvUgu}5Z{v1uyL1*HvHa7RFackkR} zgmhO~$!gc*Z^iwBCd`|NK!lwYLyF4Xrce?dX|z+@`e7KP>{W`a8RQHLQ})#~cwx6v zvmPXuYAhU4BT^^-2C>$p-SWnSc0V?JvfcXjdrE<#QoAM@ zb%|k?bkT*&m1mldv`I7Gp@+fEuE%EP(z95GrE_X?gcVNKk_TD@gKKO^E&(PNCA9uk z{mdrUKE2aIHurQX-4pFf>5O9LRIMZ5gLd*444;b3V=}7mhtvkER{r-gJ)CN;(qGpT zDfE7Y{^dEn=K4(Z@rwS8(}QAiZFp=Ege>3Ff7|4t8&16~b&WVhhM3^F{X@EnH_SZ^im^8{Aj7fiBBox6W`;KZ5n}TSd7y5}nbg%@GKHz= z#2B)4gNhTXCd)_O+NRurnYXAHUiD-)6M8x|EKkhK{!J6Pn2sS+?ioY) z?e}Ib`hIOcpTXv7&3Mzqe?oWUcJ(er`=Sc}^yK}_D{J_;=hLR-IU@7>r@E)!4=7A0 zAhul65u3yY|6bjw|c64S@@adaI}wtwMWJ zD7b@EcQ_VUB${uXwcC=>)*v(t3+5z zJelYS;f#&MU8^k*yC|`mAoj zS_FDV1i zu?D{Q@@6qbSMC|JURR&@bLmEP2JTnSS%#(mBt6v6?XxW!ozyJREW9kBi*ilLzHy!8 zAxDc(xi4l8b|Sy3Zl@?*vZo4+z^_V}+Pih*Uv+c@I2>zA5Z=pbbw;p0s__GVje~Fo zg;${Nx$r1c?v{*gj{anraOd(nm(W8rV4T<|p*kgJPIp?HOBotpfC?V5>b;q}102<> zmxPP(JdLQ{Hc_kr={@Q*<-TElwq0*~@Yee)z);VF{EV!BzAcI6B?I;c7+N4Gop;a$ z)j%zgN6|wFv!<0ArZ$z2e4-H7TZ{MEkMrEF#a+4k3zO8{s~1^~lr)3mSgcpm);SVjt`hW&eOvDV2gX3p z9t$c1zNdmP*v-?=LuLo`i`y8+kau8cYVn}>p`vb1r1Ao@hV&e`q8WN8n6B0EwJY*L z6fB;16{TLw_{r+^f+(fv!vwd>nxcG-b_kJoF`}*p-v`g<`)Ze-gm!IZYj-CESskG9 zQKKg8-94t*HgYgvx&Bb^b*k*%8*N(PfrpDh%N}Usiu0!>0(B@dO|m9c~+c4X!@~(18u;b6_)bou+isEFZqUTv!wRg7$*ku0Lce;l-Di_Kku;o}S zOOlopQOKHn<^Z${H#!C+(rKgZr%9MM9uREqgXX*20dC=qWBjF3^LgF&%LIAP%)^?` z3e&==PU_2XQ4P=@+qr<7C_6W;MKBe3gB^v=w}iXloD$@3M#w53dJy1ni>kw#>qukKJAoRS!fi{JQurwNjNi81 zB=jQPYhy8!w5Y@qDC4AE)C$&@sKHgdHJ77ds8EnUytz@i%u*=nFsvn|=FXDsDHl#Y zIO;IU#$mkYCco`FW4Z5(Xcff!7K)-%OCJan#P}rQx%;WrVBZuN{bk;XM~X@$OE2j3 zQKi=>y+)34-fPjzA4k+|)Q`T!%P9nKjQkrOo^X)e78zTxCx&w_Em05vhcS`9qi%E{ z)ScMBo2`Y{M7dr25$w@X`D*33yNpJ6<}?$E-iTAl!D+1E3`vfmZbh~Vje4GJbh!0>7!q6nOi3{yF`V0Y~r!7f}IMiU!yS=G^0=2l1TCZ}ml2><6FyYRSW5>11 z3;WhWk%-h4YGFvaX0{hiG)FZ~dbJahGk`Z^exR&FDt&jnH8hD8@YiD}30eNQi|(|JRdOwepJ0f8km!;$ zgsBNUG?IO0h7nL_T0l;|?3VG+?GPAp`=-?&E|!|9Jrf%JB?@Z#<{l89XHOlY7@D~- zLk!%osJSsy??8ue`K-|I09HwC3SVQIs5rD0S-Jd>L`N* zF{5r)hr(}7*5)P@8}cuoAqZAX==`hu!D;kWyFSqRay!ikdICIZ&H={atQF(ZWPmTJ z6bhB$H)hL6VhIRF0mJD2lxi~lPIgR#C3{D&msfZ)a#(bAivZ=zpf^u(u|kz^p+^V} zP9>`y9)RRR%;z4|uXj!Sd$zvWU~}Q2zUki;)zQjcG^vPdSdB1B@G=Zp=4xIE?u>!= zzHiJ3srb6}(Q;2edS(N1#Qpjf{8|;{|0bU2fk*G~wT6sAWGZxwj7yFE@TepCuQc;S z7_8!tu;aD88#KQeS!P9SO;Szm$-zOza00bsOP&na7{E ztlr$lJesTvv~(kiTv*A6lqtyH#nu6z<2aS&D}k*Cs}`TyVwT6dvjfjs2C+gj}G^Z1`hZ)2UVe%2m=`o4shX$FD{XF-*w|bx+hJf@2T@E!R)zc z^PKc6?fh0E+*s_-n{{MO1;piLlL%g(A$c=vF@_UL?+7l}6H2I8I;QY-sfrFWx#84A&iLR7DUM+Ft1>H=8fVC+wr!ffRFuQ+=_skqnQkL z!d=dil}Z%~VMprC%>qX$H!FmnHB1j-@}A(&8olqsuN5n--Xja#Fq>Am6&S^Gl$&(d z$p-nE2#o%7ml8sQ#G#v^s~*_(;J0D8aCug<@;YO_`QriadYd9c*a~NDxF4(QYl~TX8Fi&P_=8=B zmp2+D0Tgwhhg2-^`ueoak0SJnuIecw?gDQTh)udHnZNN9evI{_rM(Pkaaod9iCTMq zmvt1SmSxs}lH!3<|7=+j@lRqZ`zVV{LXb1EQs5gZ&>n=yBF9)&sWOjBZ`qUXbKr04 z5PZv_08}F-oY?SlHzd9t*bO1WInMHv)~do#{2vpv5&GYco;5?X_?ZldY2H$Fp93fF zuJ>T?#_0)4YX~29q_M8#E{ZF(lIP;wSc52Pdy}fhYB1H%#F(7>(=1iOu@u9r$ra60 zsSubwU;ROxL(&z@ZmA>cQv6IIeKxrJfR!D*sests4Vg)gO}4wl;cZz4UOH~iT^D5t zsQac~KKy<)f_C$Cl&d+T1%^;e^d3r&FS|kGDYWh;S3IjLXz;NapdeRXh$6-{w%3X6 z;8OcbA?x|F<{ULc;K7USW2Kv0ZqZtYw)pmLdewsO- z2(L4c2ewylt&(UpVpJN}6|K~wr}Dap>W8D?+`wnifi?TP^~_H-cwzrZgWuh3f;~+; zb17PKGzMdEboCsXe4HnVNw-p`bqI8*iSS48*X_nxc--tcYxn?9z_s>rtij)>XRH>V zY*5b*^Z|M`W_t zVBgfXPrh**5pJWCK!%(I|BOxder3`M^vP^o8Y(06A55*hj{R10FzS5%@*3^%tc5Vy z*@GmZ;df5xM8qw{GCaGNZK_38TsnkvJuECn$6BlYQ77lA=b*5G(&rpxahx=^e&^eI#DN$$2N?;CQ0UaF@ zk>lKaF|e*pO`1Jo>e_@L_zq(TwN0)7kJaeMWsK$->NA_su+NE#m(bcPpPEcNvpN6A zqR4Lc9F01OWJ-LKTz6uy%}G@4EqmQ}m~sr|3|W7H9}$5_AOh3?q69iWDQ=hb4wg2&+=7AeD}(o!C9msq7DBFIXUj6nYQhzJNXEUkvv*EMxI#!g`hP0wy-xauJpm!!Wmxs<#&tj z>{tQ=g5MW3j+mz`HBeTQg>GVLXx0L8Hx<_sXY5x}WRaAHq&{l&quFSy!O8-L$X{aW z6(N#yphX~BHSVZuIo=pyPFR8U;~g6U+&rVWs}Wkb0;7g%HGX3robbneWevm4MWo&q zK-TH~0e7~a_j`|Ly%v;pQARJm#W)Qto9ljjUc=r};u1E4oIgYFEuo%-YWXIi!iJ>u zAt#>pAweV{k=>S0$cb7NlQF!w@8HK}d@@d-09+pkj7Ok-ntei+{xw`*V==l$##S_m zp`$M+hyl|#z^D*$Ss?QMS%oI91c2DrR$3l=Bf}ol+dVz4tqH&&Mm<}egzSS6nat-% z{Q1!WOkk=0F^FEx`kQUq=w)yq(gA1kzjQowfPZF?zF9ME4tkK{=)+||8-QqB;r39= zu(hlS(rUn<@t_NS-?=4AevMjW@wkw6?l*^xNRVKSpd|2tO##LI6?emmVhvd>m|k}x zj79ixDlcYlUYyWGI&I?6o);xYRB}+LY_bj+iP7KkcdTNB7XuZ6qmBmn6=vbL`txCz zpFS7S{}r^EAR72@IL-^tVntLz5o0UFp_dQyh^>x}Br3-$OttCb6KcB3@u`1V!dOU_ z;vebQdG0^kjBtg&SP!Tt-Tyh;1p2tE$_PZ-hT-|z5Jg~71TxoUX>5O+?oO$iVDK4u z4&{E%Ux`3Tg}M)+N+x5PmzMw&Sp~gUZiR_=kqz?G4S*dn0gxP$dSH_9@K0NZ(T*=L z;kx^{xQrQm)Qh2pQ$KXZ13oXDR_FP?6V2nSelKhTZX6agJ87$R=5Ui?Kd(1=GEHFI zm+v<_A<$*Ct%i@Ev38sY7Cxb7lw_kCwW7TY^KOm`v^)EEt5he)9Xo_gvibg3v2*}9 z5!195I7?cu?TZjphj!hk?>_Cp2oDQXm9soEmPhZXH`2kzaj;Q)i(RoXhQ%6fj(;K! z%X#3y*aFdV_Kv(3E_3>w=@3}kp!i7r(XSF%TN?gnnZ5-u8ZG^rU+9f?N${83R!GC? z`sIi-b+l?6!+D%tN`W!NVDU0~#7zkwaJlz*j_eL~CA1PPlXuKusxWT~sV?cwJ{yxJ z8nRKoFOZFq?>t@aU=+-;-0{Qj;RjM$O_Ok!j{^4A?&@pMq9<$F-T?LvpD(1IH{iA@ zN1Zzn5IU}&4*4(cUm5lwMnTnWjSIV*hT__SH=?KS5itS`AwlV^HtrDQG+CZ#K9e08 z7IyAD4qQ%PUB`&a+Y+oYe9`V0+h|*QAcD5!6qwf)J-RWUbOS9GcCzE3<+|dUkm$wIzs#pVFhUc*+9>syaHc*?-qU9(Q&&Hr?(sPZm@4!z(f$6lzI7B@M z%{!ZUozx~LZ!IuGBKktv^3<~ri{L;0D4J$`Y>{jbGVQ;~vdK@cjG%eitO*~A1Q5WSkXETpxNA^wcLEc)`V zFp@WKonoJXcVAA6*XW^5txaB2^7xMg#m9&5l#TXPU&;nY)qu$aO&?W7aD#&vG(V6W zgDReC>c|b|lQJjjPwi)il=jacBh@4LWmegf10@$z#~YGd+>B&bs8QnK5I`0?7XCIa zx!p1%aly!giJ>PEp6S}av7G6r?8(|6_jvn9 zmO4g)#XSgEvgWn^s{!oM4e~E3{TS8Kn)x*sfNsWYxZp0(`{I!M%1W5^C(@T4or<9$vW_72ID|26@HF~S+v zz6|9mxxur>%WJ9mfdQq+gCGoos@MY@G4=+MdtJ?O&`-Bx&2YO}ID9-bW4#wR&!{(W zJw74$wIa1iNaUXad0no-4o3eNQjgvIpW<;S2bu#qn}vS1Tx(v7iV_W)&^Lorf8{kG zC2dJ%E*&fCyJ$R0QY#-xb#R7^Oduhf`-8e{$aXPU6jh3ch0@Fy`&&Ou1sS$rmK#i5 zS%oE496V3PCc`R^Q)|rk&lOLeUx1h4#Xft6LFs6<=W+>Oa{aO#(U5t03rDysN$!`Z zh6y91M#EN~D2lI5w|7JpV*iJ!hEzZ?EvHruar(H_RtFiMCpvhbUn(5IHF11nZ0m*a zp$NIVGTX67q*=@Bx!(hQDuQ++d-&C&lav$d29i6vzgD9yPRv5nFP5H?%nT*%01(Hx zdb-GCrgn~~;v$^}xBpqUa@n1p<5m z5}XAVdZDR4dS)?704MBcL3=UBJiK1NIQ8pvn2CfdIic2xXfZ>;TLL ztMKuIPJ0FGB>fN}$QX2VTwPspp+(Vf(YI700-^Wd1pELs@X-*qV2xnklxg?cgNe>u z^|{-q0dVMtj^V3d8~-WS`vd@p_WH8P@~VrV1>5f0__2MI$3CfG9uki8S7h~LV(`fa zKwnjT91z&YpxiHWx_UP);Dg(Rx__&z@#QQtbxG7ZIqxq731({WN!oj<;}CB6(r6$6 z5kP?a2M7rP;+O!A^g&O)QM5)EA)hjjK0%2dU!Pq9H~_8UNc_AASn-eGYg!|Nu^{~X zIs?4Af7$MDacJ@I`Y;WG0n`Gl2;{bW3yAdNrgM239__-w`yj%Qaq$4&E+2D~Ar&-N z=*t36`A&K>Co9Vei>gRQ-#hny5B{m0A74SY+#T-_ueeV-NM@cJx)9fN-beSu>|0K3LqFLHSh`YwaKaPr{rv4;4_cXiKl zPkvyDIwvCm1_gfGh#pTw+6I5@kpb^K{P%qQe3cE3p+rZ7zEm(9rg~p{@n8|gfQ^E= zK0!@LaII8vwjAUsgidF=IY{5rjTQOQ12;WUcP>0c!jk*s<5AmS_!7m@uLyP2Qcd}i zb3E-1yEoqesfs9M8s9fgOVy)R-b|QorpP9GV%s|zS-PLtU)!CFdOx<J4Tp~6w@^_ju*S08S_Gy;g0^P-6_@ssXpq^VW7Q zr}Ql2C(E;UpXs+#4pB^Wx4yi;y?IPcUqW0SqF+U5`7vg62HSmm`kBoc6I4rk4oA7v zuy!B~hV*klzSVOsY3Z|(drFUm{`F=s$iWv1DVzi_AO< zR-R?pyIP7E9$+Zk+eAIFc;L=^P)SA1pT>ESIYcZ=$tYApew#?b+5hJ78W~IX#JqCa zx89Y}FsLunP$d61@#X4B_l0P5q1j32yy&GIi))XP zD!8Y#Mdbn87|S*f{j`2%Uf=RQNqDK#&OWX4do-XHYM~E>C1(Gmb-CmOh}t{J|32kp z)?UTTDPWT;=z0tpn6`v@xvKUOM6{o+RJNV(bsy6KUSdu(o3iwLSZZ|$4*L?L4+XpnoGMsyNQzef~-y6nP0?oKfM5=#2XGbWCGUu}VhPKxbfW&w=*hq-2q#gaXPWp{V90SoS#xQ%TR%GikwYR6BfM zHj%T9?ju~t%lJr0udo%c$8xm+n`b=<&SCmYtx|JZxzc>nA$S!>!{qy~Sj2w09;ez|bJ| zuiwLRGc(LHc;ttkart=ZbQ9{xdQB;9Dq`~AmJi{drTnN4DD0+Bi{R{1RQO4OcHY|#k zQq->R6`n`7)j|^t;6$Au6+_P-pHPzdroS}>X)W7C2*EA1GtiRUiytutrRR;~ld-8< z_A)bwG%4+521*P*-3jmK2L&)$2~QjC(gRP;X4I|=9M}!zYTbY~CW}vxC@h zIX6f#s6CgYD$YlwYNrXW@ea=iqqqZL!-B4m7Q(irFhbh<v9g*IMus}Ej3B2;0Q6QrH5Iw$pF6wQ zYLXAfkS_dvgsnqZ%QqR4QFlAm&R2hEz-Q0ZuCGDg#Ho6O$Jo`}a<-^~H)>TYdWsYt zZDS6#$1B&t{!7W@R^W>ud^+!x;G$9SfczuFm$?gn*xYPD{ipDKv$_(oJ9Tm>0!v)JS+h%I87g>D6`-Uu&P+j_>x{|C0Ty-deY%q85a!u(FbQ(FGg={5t)y;3AH<}O(Ny75@3Jj&6h7?}lZV>uj9|!N)sI!sK^pe}fTkPeNGs}4BXMusO6Pb!nt3B$USf-Phfkp zVncR4twj-=-d=MIJ=zhw|zo)-TK-a!Oas9MO> z?mS_{ch~HUYpDNxTvlq9IuFhgC?Y%8LPifr$wxzD!%x%73piE29ExWe6|t|?RTV7{ zhgOE~`NgGOrC4Hi91t8B`@3od9dtQy-?8b## zK1?SLdH4zuws%Bgosjd#jVLeolz1Hu!25)0HEbjk(8{Cxo5h`Wos6Z7eGCS~v4tMp zfiV&u9(Xm`l}``kXR;(y~0~6_GfjMYOARwykSX{{P8XA zdmYW?WBSA5GZzt(-L2(O2Dudi5L4hQ;B&Qc4;6XQwA(vGo%lJ0q8O&}O%?3|rVOLz zrNxHH1}cBob{bPS0i=;9F-SBR#jkW*8yVbnNe0}aKK-1m0|QZ|>(8fPARjiIl1*XO ztIv#=!Ub1xrB;!>*I+iaeNQtMiA5i`Z!`w$`;-GEeLDzU7`AZs?2wcEH8$eNQEjBM zXMM&wdvAZN_*Xd1mBZJ>ME>ser}p*N5TSCtR}5Fb`IgZel@cjWr}eMH$?Z3ygb<{e zyHBpY`@7MI7(4CIZoIE+4N9Ra@vvjYX}x=ogPIA+dcy10@af&*l98cFkK-jW3yQ^o zy5*~eSMqt@=f+yhM5ITCi93M(N6ge>Xx6HVrYtw7(~u6xN2v8ZtoV_c_VhKW}Zcq@UVG1zRjcrNNJCq#3(0at%Xek1?6zm8*e3m5WpjMW!!p z<{`x@^Rp-8)?baPm*uNBn~`2!Ii`1t%w-*=2!X-JNSB-<0VgNLaHpx$BJ(imV}XVv z(`Qk9;A`GH}+st<8VBWv{s8*?Rs`42?9I$iodbRw!;Zd5pEq z@FY|o(x=gv8neu%)1Xj0GSj|-qDoV@Tt;;4;!sHcbYkbqnt zv@d4vrKA6sf)i#a<1?bl;wpdkipt@l=bBbW7_fW3?^ieE)<~HyUhfKTvv1fl*SJ`? zF)fE&WXZW`Hl%Vh@QJoiFY-A z0D!#a)GeQC?+51`1(k+Bvo1V4Ot{?=Pyv@cN8j#$UE*mt>y}oE7S0uRa5jHEnJl=* z@Sz|(Qtr_gO+DM)R;=lVTg+X9oRp?jULfOQhq+smYtoCN@lfzef+K2nH}0OOHAMCL z7ZCF|MiTn8=E9@99|!aU&SZ-k(tPC(+olbeDP+;fNW1H6a|GEc)Dk0Se<0SnIV`=- zNPm;Kkf%ky?BLAFaC;+`3^8!}fs>-^DpkBuG~0vr9&CO} zCfgEXEze+ZE%6f)*oZtUF*G53HP?c{!buMpMpc$y(9YOw=e{}*e-FTiC5?8QL1F6a z&jQBjj0c~n1Ijrel*YuGpP^u#+IJQjY@xgFXSyb)e375j5oT#d_Zj=@-ciM6cjVRA zZ!;oq1QcPYfQ(h-6-i8uS-;}i(H<&QqxJd5Kge22WqJ-+cz+0IwZ(dZjE00t-K6C2 zkaA2(hS=Erx~q(llhWzw#&qF#uM=o-@zyzPr*{qYZZw2t0PC5+p-J`IorI%`COd_z z7lL+Bf9v)Fvnq1iFhXnLydJb>y5WqC8`kP6BJUfsZYb z>e3CG8*`Wkkk!C2xBb*v=CoG_FQ6mux`Y?l)HSqY%5d9_z?yhrB52-Oc;YNpC=csw z5Xr*&z1n&(OJAlFR(Y@bMvN3Q5?i)=ySnOdu^j44tr1^=;JUgqpZ+A1)>DTD2PfSt z8ekq+8#Br>s$E!rFJO7?&nk%W3Ih1>NWCa}kt2AO+@LJXuAC+A8?J%LFgY8gvhc(- zM;u9=VG7q%S)uO6vkkfycyADG$GMqPWj3Z{#%9xw_s*1kghl2TuXgH^nzbUcGOdYx zh-In)RcbO|i<(gBN1x-kDR*00Ghjq5L!ScAG6cPP_jTVy;5aC$EM#ptkB*78 zemvKERR`&q`fS`NstJ*;Dj5Eh?{~(z9RM4ut~={6e+gtL355?O*tHnb_qv-pPT>hU48wdjl7_QM z9wn{OuKXd7h@6^X3Rm!cL!oPC%?<{Nd(3Mf9acsWL zXEK_poXT(iE8U{o5gGWF zcD_4Z#(wJ7(L4i$fCy5_P>9T0A}S%a!Wa!k3#wiXFPIOKSw;<(YE!oC=Y(hJH{i76 z95=-#qGd~gOii13_tSq%nApyi>aIv+XwETf- z6F;Bj(w!M&OSrfY^-^T^@L6!^I$`b_pCt^xFIl>I-cerQejLJ_;BR8_)+hjv`C7ek zbU4-)?``{8wYh~5vND!PQc$cO$J?&v1F*2pu?#ZU_hYjH(}`?=&&S?bqY!_ySaz$_ zkCYs7lLyp6q~MtC)dVl&#EDX(KV$KVh5^?1q<++eX}QLZZ9d_W{&T###7mK32tGX3 zyW8L8GRAzZ7r1>gHFQo#7HKXX^eSXFImtut_Tt=LcBq)9A3V3vEko9Z@Y)x7)fL+{ z!=ZbzriWq;m8ikVg<;53;5V3s`3e!66jRY+l+8MwG1+oYY@mYO8DRJO5Wk{KR@1O( z2LO7ShJ#?CvSBNb!#OyBj(H+Lfv1is_W5~G;H8dn)VG6_Q7$|8 zPd<4W#HDDpgkB2Gll0`!zwq82rg}`G?;m4W_|I3LfhTFIJXTdpEVnH?$HNX63r}v; zEbw}zs@R@6%Qzk>)J?J8U1UP^-I^Rcf|S)bq6`P`DNV1oYX!N0W2)?h${?1ruuyB{ z)5}XD_6k6GP5kP1TFDtk?9!emnHORb}avt1nB#~QI8?yEZcjP{Cm z6Ng-)pg)4#m5JB+CaaDW9IVsLq-Ai{hHuWi=;f8;wfi~G516eC#Ob<9e7Bi6H_ek7 zNM^RkOLXg~VW4wWu-papMG)K?-EnvkfpI8Wm93JG%tZgZmCu|QN&Gm;0#pT{1~Koo zZ{wgqfD^6#PI1(B-YK_?w9UaKB37^Y7!dOR2$4(2`pFkciBQ;R7r8PO8jPEeh8 zqL!Y^{MN+>8aJOH#5A}gV@y8fu6fb)56J8F=xok@Q92f#negewRWRKWelO=3EMO#< z>NqG2S6*8zejN0LMtKkO{;GL|dTGO!deHPY3+Z+S4AC zOch}#bIG!u2kjf%iU}N+cEDj>nIe9RtYtMROC)aAl7gflKe7JhRD@id3EhRqoI8^{=cc=4cq<#qxl#}MG1=LcG1J4>BEZfwYz^~#V(%6^5n z_n|#OiAXHmE2d@%>kVc&hCM`EjA{e-ZM^t7x1!?x0uwYrtnNa+linNHxLs2*`p9v?4J+RYEC?18}_dsX$ko|fuF^x%-_ zTNaGc_4I1&mgh_W)jj*w%2DnXh&Uh_=1?^`zaFrDU_%rEaQ7ol zGNrusJ_kWYilpzOIP~le6_A7?d=ku`z`Jfly{PZat&_p7^B-=jq|2vMtdJ@3?aCE( z*`Oe;^HCme}0(j=E68Q?ruy@JPHsYvc1lP)1^;=cC^Q|r*ttK|ogW%2)D5w*M) zD{;014CBv3_c-uEXSiZU&A_hTRzt<_dH09`MPu8^U85hMSehsFtbWoniHB$VJX3VM z`)MrL;Hu;=?};X626+sAzt~IKdH>=FjJslt7wpKh@fgo2o<#Kn3KFHIZ)~YX_RQ}m z|BBn_DoJD;1vt^sMW5g}NB6){zE`Z7NIQEP{g-aD4On`pe`6!~P6BON(yxtey60hm zvG<=8pgE}cM-0yjd24|jevV7){Lh?Ns8U$bsG$jC-c*1{8=3&1TJO&8Yb%f+)Vubyaeyy)-bu+Ra`&G0wS$ zjCZc6-@4O}cr0R2UV z@{F)hjv?u;7w?BAPGpClC{LIKx=qb&ghXG1sF0{L;gf4igvBo)kJR;(Q0aVvjp94+d=IVM;lMKkivMG}(>&t# z_NCk7h+5P``s1G>JZ(J+Tz9iiQgXh2QfFR*q2;)~z9bLETE7&<%`8a`lYo}5_WU__ z^pPobtJ!Ok0<~?jA-!xX+FECNIsIzM9wD&5&y+Ydq362m7r3vEH{(CJHxt8uac?&E z|I-o2h|j^!{-4~Nfq|a!e}V7+5ANOik9%LBvPzXYML-C#3H@WjV&ZW0Kuq*buAxri z;ZCVZO%f84r2?*jNV{houWmQrzs)_i(;8EquZ^GHFI>=Im^9jO=2&GYVt`QghkGYS zNPuG%mklwr$(CZQHhO_usZ{+cxIT zBr}p`j!z?NCeOkEl(dCkc+H83@V7@uwi@%r`KSg>x=Cj?JoyN zdW{Cq*1$mE6<`~9L6#76Z37uZzRkG_lB1tlQ;YMz{O}e1_^emI5PkF}Hzy}_U=SW2 z9uB%3ZH|J!T+ryQ{uFD|`1zoY;QieEZ2o%JAS|>w`~aN8Aw!_E^&p*J#Y;h(ZEiXP zLLlvZs8$F8?R|tBBpf6-pjr4i6;)7k&LBcRtg3I5K7=u(w)%!keO zg$?YBBWvh;2%#&WR(&xfekFmJ#p%fyJbmbfcN6pTGnkN1El>48Ji3}a2movw7^S!s zDDD3D_jXPdE8Nx9$;3H~>(?^Tof_s_{4o(*qdWx#($F;8rJ9eUKIRxUuZ!K@t(A*E zKMzr_Uye;b63(U`-C8>r=rfT%hFg5&)-Jj|+6qAq-WYt}?C>xdB`F+G2N1vR%1fVK z|8sYa06^eI&(i(-r*}r)%%83sJf3e29qf1D!KLL12zX2XhR|=<5A>JLz`+UBx^Kl6 zh$bEnGw_*$QyaeVTPk#y8}17H?|vXk98TZ!<>Tx)+zcHK<9f0)Zcd20S=KK}I z^c(ogS6+g$HvegdJEP{t{_l0U;11sZtFD6RtjAFjVwc(q@~vne=Je1G3QRBa zSC$H~A#~$wgC5@(*q;o}^gIR}VAwu{cy}CHR{%eD$sPpEFAKE&Ow4W74?OG@@-q#p z?rE3OJKnE*Ukk{&DJk!7z2S+<&{fE*NtGY%v(+$?M3--drTvL{ z(5h++%TbesJ+=(9I(SsqJ&%FD4Ek}Dpj;(!t^Vuv&?CwxX4M1P*3?_I^2uG>3xAQ1 zjodHNTj0$iabC@oODDv7rmfl?{)NgYwAtw?N{PDdkgaJpG<1g5`t*r|WUw9T(a4dI zslm~DOS4O{QHe^130v>xzHuTm?V&ydd-czW-l&3{ zqT`lW;Sa4?*9(~YW&$ixc?WjKbn8T!VHf2xhZCAawD19fwZ2VLSM@FZaC6B)2kD9k zl94LMAI!-NXoR*l3r>5=%(`^nWjvzFN7bng`AIH-)O4))Qa;j$!K-DS7|yhw@u|mO}13qA}T1^th{J2 zs9|qRjHZJ@m)(hG1hq00qZJh<(fjnD$#W)Buc%$IH39SHpqNDx3Z};kYLO5J(D*mZetK06Q3`|4jQ8F(Jy zA1eLF(6D0`W3L3m^aT!Z=k;)XsTaom(_o1-SVkq~eIvUlWXj%cSDgKz%*z0uQFJD_ z#L7#?3QG%7KQkUR7SyI@qd*O*z48^BUs<#E_GWu_x zI5z+8FIk`q3Kc(+R~8#$9nj&iVfORMSIVhU?aHcn38ULbuV@F-jDZuwv29J@g<=u1 z4Kqwso5V5Y_XRc!iaAv=Mvq>u$4xk{9ot2?XuFEpY|?3Qea1T3@-;G+A2~h@V6-Es z(^IwB+UgRr>8KfMcm+;##5={;mSc}-f0^LdK$xm{5SOVN$sZ{j?eh06{KJ6buj(qD zmpUW6X#K@}vL$4PKB`=rjctqd4tKg#!cfGf4ijmzbtpq7V(6=Tzi>5~AF`TDv= z8dQ%;UOoD3Z;O5>5#W`v$E?AkCKA3ANh{7apxfPIw&@H~d@@`BdGIOmNcq~j_n;nH z&wR_P!y&aKs3Of=;-{;?@ZL`21uL5X`504MA0cUOvEFPd+FU{hbb5u7ku<_^maok! zG?JQ<1f$1xK4E%8@w-33*z3OV@Zhh}x*6QJ&gA7dbfpRZ%+62EciTU;R+p9J(GOgX zmL)6qQi7XwDzD*VX>0XjTQw~Ctw8z(jk5{##G+*krs83{H`cSsv5ppI+{*ha8g@RU z4}}#7*G5c4O#-^4DVL$hPm0nQ*e7nWk0XsCFvnl(s7mFiL+Qg|kDVadOGzi@DyHlx;aEr-*%Qr&44e?4VZcEtAY$EH!kacIRGB= z>@=_5O^Y!rCF1XSY11Ur8$^)APW(zU7V=#|^b=TlWLn!$Zh33D?=QgFm-x_8Q4E;~ ztUeLH69vbedo#IQonFSW3HIlTyfXuRoS|e&)ki`f*T?$7!t~mZB^~5=T+z;LH$mas zz-GjdJcF8QoLHjHkO|s3@Tl>5jUpRt&vQ8)u$j=p)`lR_0lliXZbz;W3yP1gz;{e2Q``z_&ql=lkYn3tkAki3hyLApZSJ6P|K!nYis%Nyq4aPF_hlXJ z^Wn9u0O6YfGnjyZXkk*O>6vahN_kE>`?+ZA3vQpHIGMZb$TifJF5Wz8EcI3X(6r*f{-Ma-{Gi z`RcAGM3Wi{vrw8T%9`@Ik_Sz9OT$u*yEyWg)3abS#MzkAJ9*LVr!705h@YlU+;$MK z;R6u)Is^^*y=82?W9~(J%elu)FZr{Lt;LXYApoHJaf3EKAxFHgE!jbJlJm!^*kZqE zHKR7aV|2eG7m_nUFp!1?-pFN+boGeMk)~})445edTSRkdwP#dv_6kC5{@fTFYec*} zG1!(ka-mP}QE5~0b=K}WGR+=UNht|T5&ZVPgL%l=-0U#JnrIo9o5PbZH8o(GeIfMQ zx4+v^P4vpcVw&Ai)h(BGKHyM*dtVz7B5cwL?snpy8=O1z< zY(nDPOIag~n!8P4qm=W1!Hy$G+I{7l5q*`r!g9<1@?@VOh=_(31kDsRyvb)z`bd_u zJ$I5V$N#o{Nt*V27w%-2CjmO1NQOu+jbrYW{a$O|vD!c0tP)4MG_776Y}Xnf3mii; z0vy*hWr8bi_K9j71>rYJA#L@0X~;DjqY|7DHri9yK>@pD0;Ec$75M&S$UE7WmNw*xF0K7jWA7K|x0 z`($#Wg^pR@XFi{Rz10YH^shdqBW71vNPIr-3wSBfP)YWU(17a`4xSMoj{NBPd0(l`D~P@{eV#Z!|a?ls3?g zaFmu$wrJv;*gE{;szQ~^bA3;f%VpidN`laOjh?9MD@e*56MYNy0i0))2e`))0KEu) ztyF?%QPqPzso}Jt2`oBv0&6_&T=fsBj+R1f<`X8e=Lo;iJvxL>>ySciORekJt zXWcqrGou-)@`}MGVrL{nvHnkNRJH;3?;=!?++n6^{dHZlX|=WIV0W0o9xQBKN7JHr zLuF$h>vYi(?MGcB4LL|R1!9?KP*WjADL|N;35S$!o<<846a~bjHdS&%5)C<&CVt{G zc0SfLJ;m>qQ_;}5P;93%;!}O<9uaFX&0)>K#zs)ZqMDW=?;d3mr$=|@zwd&MO%bh; zSP@j}0qs7*uGL;oFm3 z{~*{gmgA&a6kcMC+tg*D-T}ErR$W4MX!100Cw9UK`%bIEx$NHDGQqsEVs3wkkd7U* zhQ%l=$12McL?*_dC{nxP8z=uWM*`{QD#hoT^^VM_6#P;}LT};KvU2hl+5_F9`)C-^ zYW@i%tq5-kd#`{gT&aqCl5P=MUf6xE&C<$^R(79f^W$!tID*|{_6p@%?9JG6d1g^+ z7gd+5esub|qgmEDV&4yXA1EfD=*`gNBNe0)e0Ol!s=>-Yq!DK*>qw>Hc7(>3g?SK( z^Ko;(?Uw)A&0w~7El@uWf`dhXriSt0@6`Qt3?~v)wxiDDe{E_7ywUeuu3N0n+>i2K zz696fSmI$It-f^&O2$q8$uU`saD-*Y^l^QV@kZTrp6DsoA&37y?9bqBsutsGEGu5X zJ%Mct0|M*#B6ehG3;K_ne$8ii)RHIz(Q}7HT^4W;Z&2rIh#JWt0+P?vT6C3lgLNUhAt4>^%n7(?pNwM>tEV;Qs zruC*a_=46!6#CPOVTl8H#JMTFFu#j^D70vogQZd0Z=3t?itH0+*R-xPu#+Ixy$g`% zow}z&I24-lji)@IDO0=mL9}2QhkByLo#5$7{XZ##<+y~EU|^tYuq|QDuNWSJLm)l? z2A*cvWe;LKhCV~N;-i!>2kG#NS4`quCcy3Q(J17;TGc5#mC_fTOQgZGXBBf^*Z>^J z{48`sEj2U38r+`?7a2+xw;Xqg#O7@4Lbo+&>UBkzAo4MX67d^3m+Fp8lm*Mk9 zNzuM~&;wrskNOe)|6JB3GYPmEbZI|3_8!V_qDC-d|5oTT>xc}l`tSQbuSG>=oAi9( zkCS5&BrbB~jL)|Q3fde%z7%+ll6f{Ly5M)NCiOysl0O|8%AQ!Pb`lg`lKhvOXrAf$&g^kE`%)TA zSB|PMh`+sHg+-4V5FINh_a9x}<`|0?!$Of;*1k1?M%RJ!6-$^d?_2++B!;wb|Js_d zQckYek{Ty6jVU4kG?l`$XY9Shlgl$;@d$T!%qAp30Au?ytM0mH-R7b#WYm;wwHh?U z$u1c1N4TJUJN|L8KN}suG(H<(U+`qK9#UdKqh!r1h?L(>dNgcI;;}>O#QL!n_Q%w9 z;R<^dlnkYITpPJx3x|oN zC*nc;Xh`e*V)%?Rb@@v3P)ehcY9Jth%0=>Gbnq`T1JTmTCf zl1;Rjw}PnjetZgQwRbN31iml zl~-F_Hufl)xi3#%3wrj)_ot`7!cEJibKpYrN6M{6=HQd`X>`v^vc0~%ALZ;q)7Lm6 zNopTXT+)m_hc4uIvr|%T1qU0RRlxdcVD|D>$CuWgJ!S)5mO-h{zWT+&wn4th!+M2QQiC zQ{p9P_1J(O?@lU7Gdn;vb-TzYi6%|gf;Q$uQ!eDFQtF+FjUe(hiwi&^sZG0Nf{<&w zTt#26*+D%SxQehZN}o>YxyxMFdO*1HHC#+Sv)-R6iiwV#M`j@mOMiV@tDqLvoT*8* zpl!z14n?56_XY=6o15_h#}IpWl(8d{45cR@p*4O^#&kVi)a|^J7bAHTC3e$u<%axx zZPkLobXae~tSD#di0`B$_1FlL!wROll4ReYDZqlDRW1P?8C1k82?iM>$@a^{?-zv{ z?d-MB9Pg#!lQQ=|vL+#NNvR(f@o$=tXf_fyV|u5DQG0xBWzyJ?YS#h1(M@?8 zvA{lXmi~$HXnVTd0Rla1YKzKfHqVy(uG5KHhOn@PsoL~gdEELd*w|K2b=wkp@gzgfBebhxOrg0BesbCW}sKW+vC z{wiP&(v+4%m`&JC)Xc|Gf#03!C(;wCKESf0Ap`f+8x83)+2s!s&27tzaPq=c^nSHAB$33OeN)mb263biq{$jAU-~eKvINV}8SD&bvfA2)sHD zb<#3^wNk$%SIcPYsbSYUXf=^;wE($Aa3I5-1K099UC_4g?TAKIeKUv=)6cr?$CB>2 z$meAi1ci~h$5%dxfY6#zH_jxQ4O7Ll&FKfWji~CNGY_Y=KY%Jl<0q?Gd#KiM+^ypx z`7%}E4Z~b{^#&)8WqZ&nxQKuO-FtVvqlUX@7d>-J1y(=Oufe%P+1-6N?m@C}OyiXv zY1f~=WK~DFaB;;DH*H0m90Nw83uuyE%R(eo6&9`@UlM%T0Z}YlGcYfTlKCKlLJim_r)Z`xbaj^B%YPGG9T%c#RQ$t zJ_lMdZnQdOAkkFv`}iFu)VsKr%&JWQRz|2*jzi8BHL^dZ$;xvn5gJXFsm)eMeVxJ+ow$Qf1*8^9BA;*Vv`;o{MNFAF2F(p?hWB z2c1Z0u^&8oMyRWLY>Pfi*!)FNY@6(7LNUaNSEP9Q#{x75(E>d_N|@O$87PP>3+viQ zVF1ux?BUzdvF1;bU0+U%Knl|ivCnjw_-Ui@c6EmX>l>OWT3S>`#yd(z=s2dj4U$@F z?VscD@EGu&3m@(2BF(N3oF{|dcB5J&rfa}JWKUA8kdtwRr(P2+%O0Np5lNCTx)Z5?_%@9 z;FiQ9U8F;j-U)>;`nuCtWmB`ME0X^jZGGJy9+ZinQlA@}GfiTMKeANpd`@~O)K{56 zn;W_W{dWNMui7M+yHff~7B;B^N$wtDkh_F&Cj2@PS1}j$FPLw7aboFD1w0PGi?rON+q!ERRzsJkxzL!i)uFhWq58T{~$wyz8)X!+rX|Y3&n_8cJc|%OD}C*Y*G8REu6- zE9p)r|MP;{je4tt_=<$Vp3N*8e3&@bP)t+u-su@P**4ss|G{a}tcXdJzhOoI-FXUZ zUc%5KVw7sP4Z0?kQWV!aViUdO_~ zyMY6C^v4)but8Whwvp42%Lc4R<`Tt{ybwakNj9@9W5MZ=x?9}>qR35{P(;79d%ly- z%^uKNAd@bu5DD(_jx+9@^RpUS-u9}ldV;%#&aG9Ir0=2R5<_AlCN>}lBBd; zlH!{Ww2=y|jXIT6CULd!m?=3`BGdkjU)fk+QG{O#pK6hw3F`GVO}*g$-7eBvINMxS z(b?1eRY|2R{^t@L4m5J$GJ9zdTOrD7H9nL7Wd`|{eDzm4uNige`V!Enm41qYh z5LsV%bCV6&$3 zSc{pm6pK4GaPVF>^7Qmi;t{UQ0k;>{#zXYDp^E1Wto?*C=0Yix7Rc1nHc6Q4H!Q7IKnpgNP0WWSq(0WCszc6 z-CQYaG$S44VSL0GqhGkq(vRlSfPzODg-`Wi!n$dRvBhiJ{kJz|3Kq%#+ByqIoS}n~ z^CRzZ>xoS^B27?m@1bAq104-}>puW_ilz#_6DwHgx2GNdW_nmYZD2cGJ*GnvOS z&wAF3B$udn8F3t2kxS?*n5cpiwV~({x&a8eTi?z`sy~aDMF^xbhP7kbT~S5lUnWRy zFH-k=e>s>#%q;Lc&%A^9vh4&bT?dgEL6+4!Ljri-XWWQ$-B-L<&rHxA^fCg>B*NPk2AU|`i~_5f=v_^EeSDZnU;<@x{{tv=+1|7(6{9^z|0~=2@SXZ|Bj4Fz7^k5w&ZsA3_pg{zrTSe}%V7SO3~;KmQcI-A zqi_VtQ$w?`RKY#2c2ktn@1{+JX@K22Elpc5=osSHtWR$moNX zQxz3reoYclavl^$A~{XVb5Za8vxdlBmm8fR7K=PJabc7_KzgBqR$aSmA94!K8J#_Q zD9`Z>UDuw57RQQmRj$hsd8jsYbA9~=-@Q445w{`-d@4DiL9E9|F3eyK6>}pY|FZCt zAHsUIoMNx$>QDmDc>71X;%T-UW)wH(m3)-u>>Tx~969yi5q{gN@YG3=%CejlPwd{1 zHr>d-x@U0zKniGqqVdRxjmo&dNzwYlB^V6)Y)ei{%F~*g2GP7EOzXAYz9pOdyoV{6irpDt3At=k4N93)@-FElGcZ7azn;IwU(uLP|`~jId)o5QbiWf1iU^UpxgT^mfID_OPdj33-LJ#J0Xqvmvf3|2uV>bv=+an>Eg9U*2CMD4(ig6|?M;}oiZ zx(wMkghgXNW?$LhzpTUcP7;LcNyb?^brL>n63w-)8%B)}ZsPF2OcTqK~819z8Xt>#8{g@Ff)o zXlAZC)8)u+1XgQ0aS0n3;ond2s_IRS>}itgpa1Sj65QBRH|!=T_%$+%rPrsuVrnoj zi<#f6YsnqYZ%ZsmSwG&p{Bp59B~sW*80!Ina}N+BFA4vu<2Ki`Ut8lpx^UVfWleDx zj^LG`;$SklrGnUejuI3vGl`2Uc)fkUF{?l^GJ%HrfRsU zG4eNN=TL9XzTI*BSs#0zWCyWrCW{SuiY4P}>!m75kMC#~YH$Pl5}-76hfXOa83gkg zXQm}M(g5k`NKB2`JY@Va)R(v5#DoYEP@XCDP`*{^29<>i2* z>r3#Ew^V;wtFoZCMnb7Oeja zR379A0f2_*Jp;*qG1W|;ntpvW5~Q@82RY}`tGwr0VG|~toAw(eOrwq*8ywZSP2{^U zw{4R+jBwF^D@QO;D+~vJECKYordp(s$PF|w3W+C1$nE>SR57H_g4lJ**^@Tc4Y2}6 z6cw&rMs9IKD>88kJ@V0yOX-1lg`OtqoCc?GLmCzP%vfxB`-|qriPNyg=^)Rc<;ctJ z_%ac5V(uwulce~Q#XO>Ju_&JbBBKl1gGqZVl05wzJxuc)4RprytcOW@x(WHEOT)`0 z8kR@)@fCDjT1OP4jGGiQO}&T3vPS%-w=R1Oo?>e4e1V3yS8#*&R8p;_zo1NLALb;GED zCC8HXrUYC1EW?p3UHjG?@+K*jqex~Ts-#=+25myy?5tTPk8t~D}h4Q=G zBhTMYl*Ex<$7oBX6Om4Z6=Ms^`a)XWno{~8sanZfqh%JRzd-4#&9ZdLbrCf4 zJ*hvHeR;vU-G>}IGo@N0cT%zpRbYo+F+x_pLNhhskTPO=+?}xa-KQ z+qM=WUPmRhIlQ~K0(xD{;k)fy5N@ytYQ{4Jc}ZeP(lhjuYOz*%nta+YH{ZBfdW=Gi z0)6WdtNzhc8nfBS8P-1?5>@qg#0xzNq#iwV)_Xpxe1mEfOP-hgG)B^&aLfHvveR!j zcJJ|LXq*>?Se^nSD-)cW2vESkHVzDU^dI+%5}B)|g&;y3EV2nmfCOG(L9P z2N$@iD`RcapSTqP1yA?hAsrvd+!Jpz^xL{HhKssJ&apL#{F+mi>0oy`$Tb+UXu3Fa znG31rLmYzu>-e_skmo1al{w@HwjUL{$bz^G2g>FC0j!!dIL027iwU&;SLC=f-z1G} z5}(&W!B6lsCwh2~c}{w38*12IoPpI21VxKojHLoAES`UA1+u_-C5&!ynQ0RX6lYaF z7u~X#d=j~NB{j8RF7>3FF2@`}{XzozO>F;PTHODrQiOJfmN4Ah|C=+#NXYz`<^N(( zF)_2S{h#6g4WVLUWn^agUlgkUzZf_A1zcX+Vih9tfW99O+szH?<_7E)0^4nM4{Q|- zu~s063(O4~p&vRIY;`ds!*1;BRW(ORne|iSg?DnNr(#@%HGP;CciMj;7QuGviq;wg z2%5}=7YGN30u~1c5}CDyd~6!wtqnCo6X)yz#?cw+O^9J1gvAAPl2m59&r~uN0m#FR z3y6!tKS#_zN6kM5zOR2|kSTdRkqboRIZR zo}ZqK8C%>;9Gn}FOU*#s1GlPyFZk8+qaf!%?znXP8!LG3>W0+g%Yidj2v-5a*s-a$ zxux{{KzHZa+v6 zj;~{DOWPasTjPs8c*lAW^}s8CAT$dRban=Ia{r2;VLKruE;X@wKt&kU*vt}~^&N(T zl7DkLb{}f?F5h}bW|x2Vf3fk}0A#?+-E; zS09M+4a8qi%>dkZ-NK+@{z(91`y)LegFi2h``sF_HQ@KhhY4&pHKZsg=QZkGZ`wo! z86`AXXPh&r}v4h#8U{$3G_~4ZaW7_wLsYRYhrzk9JMh`xuuN5BSS3 z30&>mFPP`&oOhcqN&xZAj@Cr%ZU_X}nE}+cZ)DmO;m6?jm;1!8?`y58~@T zhnH(x)2EcwtJe2#5o-(Ny2o!3c6ouAAu(66o<7U0kpMznpsFF*1JHWOpQyEdAoEkxkHQnkddcso zK9mva@4&tlCWdg(KI+fFf56p_4B@bS)W3m!N2t0;>DdRcAW2G|0{V^<3{X=d$05|| zQIR}z7a=qR>V+SHeSO$ZApOS6|E;Y4_;2O1yMTUUCIghT>LqxajJly~9G z|D5~AxDTp0?;)(;g|%_5FR9>g|M#0>A4rn1!4;5p|7!EWM}?8zR6*k&Dp1?XP|#Ou z$^eyJoDo&gL5K9!+T`q&;PgZD>t*w+;y=swi{TIyl)<$T5caam+~F&Ab^WUkn`^p) zp?HP6r%lVxkC9LFw(_e6L!T5vk{(n=bA~AQw=0db-)S1=3lYl|;m(5J3sy<(lFwNG zV(2r%(m!PeHv;v;OAYW3s4gZ489?`_o3qaFn|wXw6jc^Jj4 z|J7~97=w>J0qPz7nG3o+dmBK+oxSI?v==YKVEvbl@-{iN&&ND5{1f*CK$(E%h3$sk zV~FRI_V`H*!2MN6us6uL+WMtDxYhj!h#s^%LU8`Rl>AW}yC?pdO}_gr`S0cgem)Q+ zW@|G<{x(T)|C;|;&Hnzk*~k?D@;a{JjmL~(siR-Emfvg6Pc7lI4Sw!0F4rk2s67xs z_EQ7gu3YQ-yPmrn_2x+XMmK$7dJXbr1l?a_|LFWR2#h=UjR=L08plVNo^eXB3H0*v z0U9{y^$XlD^5j7T8G8ik{Qg<~+kH8;t<$ID_IarV)_wjv=;xyf5}?cPR9sRQdlFc{ z=2CFY&T1%}JJp3E*tFDTx3kFnN#EhzzFW{=wxDL#vu)pjEQNRD)6z*N;zrde{c`5D zv;agfpIN=)di$!MUC!IH8QT0WgzK+{JE`h#2v|b8hLZE_?fkkN*BW{!c%xJ<=j?h8 zq6{m+NY#(j`-J-2s!mIfB|i93*aOyydJSgKULwauoay@G8>+qS6e$#3`l;@j zQ<_>+dPmZ%@k2zk_|IrVwn(q%?!N=uQ=b)TRu1hh=yIs1JBfS-#?ev>?_tD+qkD93 zsVFw>k%dzSt`YWYrL}8>GjG?FWjpQOUzWmxT-1D$KC_UKR4yyG+HpQQk4Gp3ReNHk^}0jsy!CJ{{&489o^Mvb@TXZH%0lY&9bz)EQx*m zuYr<-WlFm*vL+X?ro+KD4Jhih`1%q9hBC96)s> z>59B}I_|*ZEK1vhSo@5rFEWWAF*WgDR03fjDRvz}pb(G-ttlxUSG>yx6Wz?{%iXUi zMhE^G95@C5$bqgc{D4}j<(@EzV=xfdpl?KZ$n#hgDQ6PvQY=8(??Vme_PQx-fTH6i zCqsyPJCk75#xp`;dV=7Q$Dpn3isP-lhOCzQVAQI@=dBxr9PKQi$0JQ@~4WFV%tdZ8?K7O((06uN;`<@ zrGHqv%svI|PB-Al4fteH4V#|a$V_NB;m6MC_=CrAd8Qny!u7k#kyq6FBibKCOQg$Y zOu9*-zUTg+Z2*I-JTE4Sdew!_M3PqbUeBvYcQ5DvRA{Nn?J`tr(vg593_T|7TS zon+4wbg!x@Bn#+LXd*%S;Jws1;H8nXiJT0!!Yki^Oxs@^uSprq6IS@ttf<*M5>V(K z_ww5AT4tLuE|gUG0FY&~_u6HLZmG4yJ-IekS2ET*qm-x37SDwU*}EQeh;ud?Y+ee8 z>4k;^;?BxC(M&S)jlDJ~6=s%b{^P=XjKt6D`ARMFKrv~IlR-XGXo#)tTEC}V_J->J zf_R>y7;>jJBHS}GF=jb9uIalkJvkCdR_pf)pI$@t zmhn`x;A3aF@A1LNOEI78xxzswl%?{IBTch>KZ5W9u_i!JS0|9pLXOMDV*m#pFc7#eoBy z3^n!&!GC?9X$j)fbs7|cWtRV0Rq|s~4`6}05F13rnCwWa4NO1%#{$u#9xe&xP>nzK zq-u5Tjmm_!Cm?5qvtZ86)!h*b89K=`#G=Q@u_2x&^kg5qa0lgxClM1V&I43VlH%aU zXe_;p*lMJc7(s{pP~H}_T%qWyDGa6o<+AWAg@dOZQuJKJrC&*blk(zc4|8^*S_Fo+s@eq>}B%gdoisZoaV!XRuzpT7+^>s?6 zne)VP@Q~-b-b??BhQdk2U)mVYVqglfZ^NIZafMe0-j#z)CANC%&_N~n%K5`G%X4Kz z+Iyp#PW5aAqke3i`}8EDP4r?_g=-K*{_>KPHaRa*MfqLYb6uCwF_MuX>Ss)(6)K_U z(bFLmbzOe;hI@ImQ7wc&c{qhjP#G-i75V&jFZJ~R0sgrMv{u{V(RF54Php28yRhzoD91ZrJeZK46*3!x(t*Z@K^b{DTxmy{~@_I#wZ9U<=q zP>zEg!k*U+y_CL!<;Hpa9TKOlSyI|k@fKZ0k0;{U6%`U8(Qv}~lydTB5pBRm9Nmhq^2PBgayN3_Bm1m^8kP6dtNb}nyr&`4Dqy|n&9m&Ly z2SS@PaH6Rf-riVymV$slzny``trM-vD>Znmr9&g0tLa;Z5RL6t!agc{_r~1Y-!xz4 zztT?t7WoXohXO$$>_g_E?$74jgHN^hl1fFCE5t?4qJlS zRv=L#`U3Os`{no6^*%IbJFAZ#RO_7AC)1oD(ox`>8u-{lWeG)5CX_~nO!}1r&4mER zXx$4-uT4jzP%#bk<~O$9rW9rS;%4UTa0nNhYtn3Op9B8a94Lcd!XxAGijVkKS8QTK zcWJcFi~9W2n6)q?LVP36Gtr^g*zpa}0}gW|wvcCwdNeqW6y)2R0>$N?T9>T~0T=}w zvZ_(-8yG@{H_7EiFn+=De2L({r(N$v>*tiOfvyeFfn6sNVH$$wTqm9uFS&7F#&O#u z`oGtG?$9(zv(0xViBxE27&LP;&k;>N*EP*sO{G_D?ivSwlSsp>;Nq%hmWmp6h%PkH z7kTW&L+;+nsqM(_wICl5;N7(B5MgdM&?E?o>&U8vo3(=nS8-5~3M_rgS@fi|!aB{e zG?(wEIczLUH`9(DALQGwDCGUl8C)+Z5H&t!FcXap9B!?niS8%a5r$ji5p-t!azqTP z1haN$T0T02=8U3+ug>e&k3V~KWU8T8fIEw;MMkJKWZCFOkaS_5TOqF13XS$KuCGo@ zxAR@;fjgms6@qN01$CI*S66kOJ*IaTK9aSBdx@xy5el;NeamXF7;TMb=86Lv(*EAr zZ;*CSo!VCa=zpc~BcL5-4C_dHpw_YHUM@Cgoec^kc!~bxM%;|x-pFr;uRWU1F@y#B zo=#8PyvZ>cnT2#GNvFKH$Zsl=g-vsR4OBECmUK7n2OFM0zTx$qM^W!ySIBuZ5N|XU zO@K?wR;p!=U%H}njHRk_1Uky$;qX)tzoQbU4w(UFBt7Mp3n=kvph+ZZ7=8Ac7=AVm zU-2U5`2Nr#!@H`T*#aQC9JXLbrT3E$_fac(K6cDsm(HeHqf^t_ZYdaAfCv$eE0Vv` z$!OS%ImMtOWllZ_H3zeUD3e(}v_o;>V?*?;s7c-gnVDe-Y*pw>CRc!HHx0E-ujmW` zx`g2f@B%e(meWAWoN`SAy_N$qny085;RIt)XMthgks&JLN15_T+XQug&gyc8C)1td zTwiI{jF1EDC=91vom#FS-{moUZ^j}382sUCw`G1%C;F;`ued^w%?Bh8b!@=L4a7ez zYjso3FuUwr4F1JC4hI589%LJQvO~K&m-kZ`QaX1ht5R1?FqEV-c%o#hwmY@p;#z%_ zS}9E=W75qx3VH$*0?`a$X{Fx0x*6KL?~TXMWz{}2#?oNn_bGjK}$_S^E)q7K1}7uI-Lv&LouR^SVM}Wf0dr&mZn>rDN`SK z6^u4Ti^nqHn=77OpyW?w$}jvOV(;JV7w25J`s2TpbflZ>_C2Qw81SFNg-pw8253K! zTHeew+P-;pr!3`M&9RLRYUhy@vCLEtLZKV{+F$!K<2B;fpRl?44MHLd%dKc@Q+s=z zgXwDgribD&wPM=bLwbcf@;?V11oQ`!$@@hO;rZOlKco^qp?^vQ!z4VW%f0MyuO3){ zGM}j@zh@SeC+OJ9@c1pn@Q;39)C9pFPK;z>ji-dtrwxVORY`53=|JVTJ=3swQbU%o zyOjT~V9QpFIp{YmbaUeSJX}Pr;^D1xl;iMipmboJs(Mtf`_Q=jd5%fm)qG#Qu~8ectZ=2Gxkt!qUJSk-QQusJQP&SO!YpulrJhNrv= zgL0Ge@m}X!8AKi~_4W;%-Z1eGjY;;C|EDAQ5L9qE<#zUz-1o5ohk1Zq8qmmia}{4P zq;6KR5>w^*cahI7VfT1S(JoBr|`%_2Pfb*yyLp5k{FRx&-#H94#se_e)l< z|I|oyEhh6e_jJUy^)#aVSUuIpDldlckPkW`!eUHeY&J>-4n26RMAeMQmcyhoBfRUw z@dTN)2*(N6-ui%*#bOX~=Ija)u^+tv&oOlc24>CN=9LD8L;3i`K9jR*D?t3=NZ7bK zgPzp{-kDpbR>y?>KLAfau)i8sao7h!7)8r>LQMRNXB-%9`&$r?XB9G0rx+hxTU{CH z?jfbBQis?X!GtG7A&slbcjkwk#0c#Zpd8$} z!YCvj7^Q@ZaqVe&0e>ybeZTn>5yL~WQ4uJ%oFOOwjyB$xSJkh zavRCvRg8wYzoQBkck^rv%=OESCdPcQXCCkp{RK6Vxj66U%GYEEcO}%ltwHYz-a#9= zCfJ3)mOW1Y6l}5zhoRw@dP!@FL(Z#z^;M51h(+8(fj@-HH(h5X{Kl z0U2^W;=dkzDL6i1pz+>LK}xi8gc=X-OQ9OY9Q@AuuM=u*$zNqrmG9zOGjYOa_FBA8 z$Rh>Wa7%1VSjxznQV;2F`Ri7<9xM>aOH$YbI?uHZc zVWzKmu4uF%xhb}KW9R1(grGQIhxlV#I$lb4Cet9mj+W>dZ6-8n6uV{f$JxYgg8Th8 zk5(D5_{&4!smv$wPKT!WUInGGsO$$7lKYqp;KjolY);T@aN<#)wurT(I=6SI$l3>w zy#8jrCsEplQ^sz4@Auq0qND;&IWst4&c7o#w`rMpk0Wt>L-_aP*>L-yq z_kFGaYhF_unddT3$ggSPg`)-YA8H=W_!j+mzxM?m92#S#V)jFd{T%$v;VLY8;<9KP zM?>YXJ2w$QuCyKLo1)q=7act=Ft=GaHYI3P%pQ#<<$qy0QI$76ZV5zkyu>Y{ic)o2yBen;3> zdsDMdyRIC&TWk_aVmN73Tz%d&uL|Y(4XGxmgO%ALESx+_Z3^##P@twgZ$*OMj%BOQ zmkJWe4fKcmJPfLw!pV%+1#z~x%qSc;?5y$CFDz8Es|(<4=3rtd#>EoHcheWc-7Phb zllVo%AEb3BDM>)a3J0|6j7@oZck8EG4op$b%|0n|ByVj~dmB9&J8+cd`f~Qq-(UDv z+_oo_-28-U%93(M_j0||-Q3hjexL5d0;F6;LV(C-I_ij9#>ivN!@=*8tHO+6m`M+F z;>DmuaYrX;rr@}gRr4owYb!KN>l=os5T*QBe7p)1U;Vt5X`>ju|H*T(i(AH3x>l6P zx<374uQLw#O^lCsg3i#h*4I8>LL>#M-hIK?-6pECO<)q!RR^PvRJFuk0OinZLsW@j))!u!en03j$TLtdgUIo{wCb?94dP^};B znE6v=|0W?U@kwlmt1xbK0I!~xvN+>m?vZfT1J$4tIUaNX_iOcrMaE54c?^^RmN>p& zhP$5H574;^n-T^Z_W00jKT~4_h|{YSm$GyR)31MN5iBa-#tEbQ^`7KYB-F14W37Bm zTZ;KX^$I3P+}de-u+_#s|E3rbLS@eST9bP@t96LbtN)^k_XqR(G|EXihOOXO{#++n zH3ugT??osc;o&*!uHIRclazuBb1>plF5eqh(}u93nC7WKIO4El620=ejQ#Ix4mAah zZ&ha0SAP_%VEZDs2C0K z{Rp@ld`yCQRxhp-B-GzTv2;6CrJX13Q0gM8VLpn4tz*6 zc#zfUVkzkm>=y!+*NSFJVpI-^#&+$?2cV!4M!&bcc3zL*!%2y&L^o-rD7IEQ`ci6| zGww(}W_X@%rJ)~v6B;Cz8`!$fw-h;MKp_oZdO&g+Gp};i0Ea@iIG#Lu%)oJ%f25Q?{ zxZ=_W{fBvABv15UWHS6|k6j3I4wkRVJ)}r}08Z$xOaJnY$S-vN_c0u^!(=Eyf_nr$ zZ{_eN`QRYFqs)+<27x$73-Y-W@)&uleVcO&Jk;uKYy9$ed8E>G;gOm?xJcYYqx0MAkJ~jUF)&I z-_i?!3$XD+DG_tYjHRMSrD&R$HuXc_>8qTKc-uX?{&0-O`?I(xCav6H(T9~nd;XJp zui~jZJ&N7?4AEg}DsFeJ%;!T)XPZ$jalVtKFsn%YpWk<$6k-*S^^O>E$*zr50u+=2 zve2zm1q)&Ds%Y36fQo4Mue33$jDiI+P7@5@Y}bSoARP$u^bmn2M)Kc>Xy^0pi&t9f z5w*FJYCdma)!a^c`D6w$@xY>)Prs{86wP-yb0a%c(!7@nlVMBeqf8)KNbU)jE?7?m@(5B!cSO}st_%jAg?8yGDGb%e4LMjvAng*@O*zqy&cu0FZgpz z&bTR$bKvbBTCOOmAmgr)>}=87l6=mT*xp^z53@cYxxD5Z5&1Gse{?YwW5R?I9V;OyPX0m)yPF$f;d0U9ODp+!MCiRa$oT=? z>}~z2ich_|Nf@&wwIKstjhqcm#o6}}86p!ui;(lg94kRJyMA}R_%I-#K{5kv{oRYBR8R8Aq%TL5rx@n@ z)vh02S9=8V_raC=HCxekzLD;bjDmx4(?g@K{;_r^@i?!I7)m~svcW1PeiR56@-3N+!b%LB@o?pdoebr5AAf39=M26weOx0t z`CO8;Wamy+MbM$vJI)w4$nxFF&GPv{th?491Jr01ZxBU+-m6Zo;)2 zVyoi}6N}7kzH20!{Pb8J*r{pTVcX|+PvKI!wNL{Y<2?o8##@nrkvw#4XS;*bsXkqc z7PGv@8vHIU7N!>>(M&jFKF~a2pYd21#W>%i>Ss zU(v$^V`n|STJ&FOvMCp8Fo9O4M}e(1`8-5oxxN0GU` zf7DipKogj&8TdAB6bpx5O=R`qEGp+g;oTTbtJhUd_!r_RXmakOd8ih)E+lbU%D(a` zwU#W|P&OC24>;|1%g^D<%8biXgD1KWck9RxBr7$eg*mprOCXEcT!fZKB)2)4862c&ZYXq|MHU%QafF6Z=>>nHTBdmp#Gl=Y=^kzg>^e zb0HTe-i=S9R<1D4u=RmYW)X_>-P+C-qjo)Iv3&cHd6oDuqs9;wKI)Tmpu~<9wMz@e z(7l6+@yM9jJrYRQdcP#=pm%j(xNbB?$&qV`?n_*VUBsU3kw}?ON7aBwpiO;f-h-sZ zcUAACa4pihYNd={@-A)t&aZ46yEkEGU0G#YVD}1c@0>yt=A%Omt))}N*T2+0;%hcI z;>ZBS2&kuobc{ZzZd+i8$xZtdwyM-6l9ufCwQJRC^RR2zGbTS-gWSbTJp`(v;~=c8vdgJ8F_&*ECys zf2dOG%HLP3_`3g4WNC(mln6ps03GVcZ6Q{trWm))y0e(M+o1J`#<@?Y9ufAl-Nbql z6r5`CBUy+7m(9^CYvmASyK-Y1^Dn(!^8tkEL48@P$ixmFotZ*G)%B7QDn@oHzl+?_ zy&Wk!+n80$jzP#QMrMM7jDb6ZRYjE96sPvpe)7A zzL_P9%qD=5(P4jY9tcmAJ=Ijv+MX-XbiA_fce4A}3bi zjJH|KYCbho;;9nl{l%CgB)J|B+2U)Jy9Sqebhpbx>s!lQBO||ghi%X?t$-ATR^FZ; z9GO=|CRKE}0N>C1F68PZicZ5^6hHQqa1{uVgW5x97{dLbp2NZ7vxYZSMOHB>pKrL6 z8c&oz>d4da*2F1n{#e57GRiczG7Lxm74uc0F;DQaF<{QSokD?d{)k9l0_lxx(VhUj z+H00Z&DTrZ?CeK7HlsaBiDjR&+oOjuvL^824o8ap-bX!9;12mM*%RoDCoh)9#I8-~ zt;S*JCS=Fc3+BN~G1vbb4ETtcd}d6twOvQ^P6;R0K(lle>BN*@QOA1BT_=z_?er{< z$OZW$Ir3+&?z)7*F6AQ2J~huywvBIEYhF_4?pZ>iVf76d`AmU#_sZ{1dt~yJdV`Ck ztLZ8f-6+xa)<^N)=WYq^Cu$Mumdl(>CZcD|8eVlDLkriD#xSJ!$-)gbxhCYr>BVIr z5H$setP|80T=LVs?S8`J=b2MrYmO6LwLHJ6^gZ+8?KENcqGr@8oQRMs;KI>jK|=$~ zm|T~h>E&y(pEpd|;QHZXP>f$1L!0)f);;<3axEaXD2p1K5u(N>a`eVTALqk~bqw^( z;U)(ZW6+=RZqj}XNM;Qe8sv{dS8X9F8Ml(_fy93jFU{|MS2|5m(FNJnR!W)Y(y~Wg z4O_-VMpQ)GbO@X1BlWeKD7bxBGTI8=mgwM}e%RKmc(?@p=;ColEWyuW0vvUrGr}@_ zjRpN+LNxk5DTp^q7sD$k(wQ<%HZudi#uTL+aceu|@20IA_WMWJNbp1-Li7=>%pj~X zs@DvQSoacd=1f+EO!16}bAkhnzxsFfGgY1!9efZ|m10eNb_Lm~AnC1tjC}B+>uLGw z(sD89?mlTAZCKXYuxq*-zx!@O+| z3RS;k&6&i!7QjMDEZ&&GKDYJ%PTmzWrxap)v!0`sSEJ31t~r8?B&Hs{64}csoED6O z=)gtuNUvl84AV0Ine%La{MkOez2=I7N-%K^eN3EvTpp4Hs52X5>i8B#VwJg)IJvV& zw?tOaIk6p;151FH#jjv(n071uj?i|D6s@RYnZHr%GOvMlA$0J3ox-cn|X z;O*45LqCA%urfvovI+FAzzv0!2<7yC+$<=RKkXVShBuRp5ygpsn|+V+A@eIG-c*yC&2*(} z{|BG>Z930k6J{M^pI%3|9JPmX<8EY?@0X%oZz34?>7aoGX z#9z0ZyDZO`QW93lbA`gM9Xk)y5}wjZb3eLqSDSQyIcIzGN=QenlBEMw;~Px3Lc}NT zF<5p0ALBEaw0KoHDUte`y!Yq)CHJRfYZhRlE0gLQ#Ocnnq6PWUhE;J!q7=KIGhtou zl(`O3k;ysr)S?B$sst5yK~bxe?k!f~V&FJl0nN)-nN0PkI0oo&=Cz?AfY1}%Rp-jf?fqo%OlIJ zZK#O>Fs zk`4I_W!%t7Po?iBht{7hErf0P)pFn;pR$g{#ERUe7VUAezAxDOJf(&gGkqhzaJeRH zc1To*%s`Vfiry$78ak}A#|ScipT-{@F|wx$nWT%8Xo$KK)3U3rArq&iPr8k3(qu-U zPGtICczDLesebQuzE}%L`#f+vrn&I{6>^G;FG?_=ttyp#m7R~Hd-OYs1>vP zcj`T-6Ef8YpNSEip>vLkUw?$vCV7;Th<7&wbsnsBYs!uvIcU96%*A;=k=wMWn*|!3 z6RZ~y5D&FsM2tBLdHKZ{3oTc9pt@^yT^JJHMsq3R@!d*Te*N-=E=4g+()Asn{Cjuy zjJj;%PIMykGwY?Bs_{+cBFdUV6xCL=U@U^>m95~rGUZQuKb4m;*AttqOC*}fgz0A7 z4cIh_MJEy;GqRcF4RHo!%a}CQb#qSxhx$YJn?hO@@`8<}95lC}%lva{MmSD2I(l-V z!ve3CQ+ZJJq6e#E)yEzM+FLaUf}tWzFu2d1FC9{d(o(RI#V`#Mv7Gv_3#+_uB<0+$ zx7(v%bF>l3UR=0o!R##Cb&qbW-+jj9GwVqc8w-+5^m%e4Zkz$6FaR&3e@Z=t?71{oAOow-U3ir*H zgqcx+pA7bzbN}S)v&$Uy)}Y%fZ?91ODmb_I^AG5t$}ZY2jj@ni&_XR4?D;y9^Tdzm zVAdPO`vWX>l&571^Kc(0*0X^$6o!BVw=>WL%}7uBb>^)#?GH4!bJBcVE?yJwSNJ!& z(!-OVLpTlwwTt-eMH}_LkB4z0`CQS?ci2X>ufBOj9tU%k46#LUXJ;3VtFzA{;)l2P z$qhrr==Ek;@9NPH`BDqd3rta!t*st%3Pe0h#t2Dkj=A)X94P$BE86DF*|yS9GF_l% zGj;!RoS%i}={ms&x%2Oc)(AV44e=+q?Zewn8Sab6%+eRq(k4A_%YDZ27f;qhAz@Sam-_j`4$@6Qh&K zJq-0%f@F9N6L}WB4Rar0v%8?t#X%4}kwFa~i3+)yv#nZfiYJupai3UNDSgJKXw+p_ zLw>=NE2x$K>E;Y&%GSm`ja_#NKY&g4gG_Dwsdp8yvn%&}OE%B6UUG+nxma2OU0A#-RYh|c^A=(_ z$l&dq+BM@B%dF5r+2b<3N-}-~z4m7$sw~^seXYf%w6Y%U+vJPqjEq&WwHa}k#F`v^ zqAlbzE?jIANz5I-4t(wVoT9O}p4 z`+`!uY4m}tR<_)C9)WEq!!Ybj9R7BW@g?-XWE9^uR^AA;-($WZajj_=DGvukDI1Oe zVDhr8OG8+p8$~cYy8NlHnl=REzweb<%^?quP%1myeEQx558qO>PDadrfi{zOtR3)cfAkKN!}iSHH9YF_{PxlSHDIxO}gNaSCzEJho}1!9;m>Yhp@A!X5EjO zJ&ejAf|2~NrguQnApSTubTE;*$WQFGdc`zLLrzRUBYBg8+ouV?fIImj%quxn$5-TM zG}V$?<$|53uE%Wy`L9e$$o+^T1EX~EYe^4>Pqx&Me+8wNb|}q!q461Cq+vp!n}0~r z8+*e|?>UJ5O?o{5DIB`AcC*s`y@F2}Mtf2(y%_&$+q**4YdwDd@|HU9x_E^#poOm- z{_g$;tz`|KyX;B-!Q>K7@S$NxMd)Im#JFVpx#E|1KAi@!IgNA)&*J$g0Oik12b4*# z*!Rr30eZF>ET`Iok{j|&!RS(gRzTIbCMn_eU*jB*jgcv5WR%lq>sX0V~(n0SJWClVAxOS1^ zQ<0`6NPX~b^28(JG^shCiMX(*v$86}cpH1w23m}LedL0PEoMb)@`h|H=*HTd;hN#Q zyys2@y1ybsF-Z9}Fg_z*%;i5naP|!9xDpn~64`oiP;UC-usd93=~`Dj=VF?fdm@(> zYY~q(zvGg?S6kBcp;JyukODN$xO--eBx_^D@o>K9)8hPwO1-G1BN z4?PsoSB@8^!suRxGI0Td?}ha&d5nURwyPe~veYN|4(^78j^2J*=)zfYg0+S-E#IWx z^(~pUO5;TtJK5UJMR-!$QywEY$z;f2<)5@3^)=__+tg4ezinuv9sO!v<}8ytP(wz5 zLdH*z97z>j7-+B+w^K2Mty*%OroJ^3OrMcJrgAVbxZ0yJV@=C(`DR#EN&z8J1TQ%n{KHC%q|D&q6h z6^PS6`YOzb-l@MCCc65`V#UllYyAb^=4-;-x1p0Kyr+enV(e|=eKKOgK($T|+R9R{ zrxOGVkNy3hABeTINRGqiPS2vB5dB7B*;D!KI?sMAN!Kjq1%7Jcb%}BMjx{(rY(FQS zdB1RCX60;QB9Rv^eQgRt zEINAv*NF3kt;!4#l*O`jaap9gHi$fs{iz}Qm5GLhxGMVCu!ss&)^#XGjp9?KFDy~p za0(Q%Rq5+;OQc;xvhmAxL6s0;<=UM9y6camVYf2h6%0clCEC5^?6ZtNkK+6sZJ)`D zG2*4^Exvr(>A8$vg*1q^`H&p+Be=C^vTl=W`debX%r^a0Ax`QnG(#tXM&?r7oMoIrzyXO7GA9D}%&pp5;G(@0y@C&HGCePhD=nQ=IQ z*iAl2XvlAWIzCWWCkSD2$VQyEBsZ_C5>=*ib}i0L(bGb4{Ify* zu>~Qyuk=6|mO~PeBV|*S?$WFp(czBjms8!s$0`iu21HbWzqsPOjH`BHAC!&WyBB6tf78R`U@uw#!t z!V+TLJ+br^CHGwk*_e1iJZCl=(X}(DkOZkh)T*%h#uqC0WT0_#B3p+iDt&t8T~Z1| zKe=4t6jHA^lA9IutMV!tmy04`P7vVfm{lzMryUlBSTedb~ogsSl9;tFxmt#IzEWENcS z^1q9n=)_hhPFBZ3Gt7lc$V+BS8I6+}DhcM@*>9fg7bHz#L-C$t(z)NYFH?!bS9;dp=cQ-yLe89olJ) zg3Qq5C~FFx9^rzZdv&k3FO{Fzj9cjh`{s?=Q#V`Nc2r~{c9ZOAdr>6O_(Rsf&vcnO z@dF|cyk))nTCq1!Mjv))9Bkg;l^B#px?dloD$JZZFn$2|CRAmsFL!aQ$5RECb+@Kn zZPb#c|Kev$hBTK~B;X`LDS6~wSq~{+?<9dx(n(-Bd+o;{ZB`FVrY=N=5UKi%U|&0u zIDC#Od>l95;Q;gPIGWF8=KR9@!2E|tspsXk8Y2ggl;X{#*}P#k`z4%_?sC_d(7568 zxCmWFgAcpICr^PJ2{%%CZqmj`s-pesV#t$o+=7o?$gL}pIUg%ajtRe9BA|u%;6VPU zl4QZ9F61j==hn`jhhED@r@trlYJj6Q;49+_6%L)yxeN1#xGsT1kF{cupPyiql@h2m zlICaFTIL$}dkP9pNbhl^LkOPQ>@Z@7$geQUu*{$^UVH1G%9e`6FQS46m^rDbkrWFx zaGLd+>g&xV!A<8NQTMa)bc>TmPZn05_!^TsXfE8-;Ej06@L=@wwy@54TRuw=A>mYz zm}Ssyvu$LpCg+JD-F1B7u40~Ab!xF_i>c@ezjq0sY1N*;LO7`#J_yL$;WWMSqtfGd zc4tbV>gBA^p%=VeX3-$O64!jt#wk$OShDW)D2a=O=S{(+Bx$cJ(mzeHX3DgEoQRoT zXj6G$e=Jft{fT!fQbWc+P|oxjK>muPTc|u!M6kplbVn^bDaiTINe_E)gw=4;aBrl0qPR3 zIpp!#$s;t^u$mvv#01qXpsi@)X(<*6MY{p#E%RgX0vZ_*&ee%>UqB~X{-qs2myhB~ z0c59eO<(nqp0vhvf)8h@mjXB^0nOc+OuEO8jbN%57UlGaZXvn>ZnwzRDzV}vxiN>> z6@8TlX(iNAOe4^I11qq!pzv$=StCAs8_Fa19=*MDD$%H5QRdWB93F^oa8r6hmcIbW z^2-QFb}BC*E4-IJ>v7I&J{2#|Lm#CkA?%+_sw*qEClSP0Vdr}SEoC5u|!LeI|28T{fEpWf-llv2(3d2x&C3xrX;Um(Hg!2XE@yq@^p}dckwA~vEd~U!9 z2FT1sQtrq$Q+x?m9wv|Yt(eSssVedj;y@?@Xzx1VO}E3@62mP_L)+WoGnFT&CSaYN ziaSw-y4>%xN94xM090N#QDWbli+6qcc`6qtWi%%M1TuKFQJ!e?EGp~;Mw_8On{NBz zpg#WXf|#$&uB4-UG0RSY8L*nAbg#hG^akIp;;lg|@aRTX2^Pv;DFnt8PT7QVhHRa0>`)jqy& zbWhR-;>^GQ_cB4>p&>5r9T}wjWw5(TuHR?Zy%*yhayDskacmgtWD5Z1YC5E5ij9JF zwRMY@o-yDrud%-$3a<-$f3{{i7yM9v{Jbr&B>AF);UksRD$yx6#-UN0ekKD<&F`ML ztZW$H#Cup=lNAt`KU43cl{+Vt*D>Jsrf$z>5yMI7whXW*ZjqGK_uVCpA)`8Y}WLAN*s&Wucs zCX?Inj_W12no{SPLH2D#8SXFBQ=yAonqg%T)8=a$4z8@N#D}-yefi>0U>ax+^M$OG!f_o6ki`A5f9xl6`rHYcfvSkxy4?v3)@YP}qfwZ3gNP|m9ct;pG; zJ-b>}r@o59r1a~pm?%)91HHaSUZ#x4QQI|p^&8cYj%+(B-O~U5qv5(T^qZ6ZR(I_+ z&O}7AZT@ZP^S4-N!!pLwCEl&_3C@Qh0Da}QqiPt&?oT5RaKa(pb&y^&3DCQB%tmj# zp*h@znGQ2d|Kg@Ccd!g=~Y%G0BI>K#>1kB@` zz|&q`t$%mzp5?gtcdnNF!CI~u$%c{71@me(;ui;`qDkaKN4%i7*5-yUNSpZwYJi9O zT`vPc8uv*v=IQ$aRCk$5l<6$L^zX525I2w&6d*5Satjt$6iYy>NpQZgVL+$@p>$;F z7}K=K*Uirr$mhzC_C!fvU0pPnG*Ake#Xdv0|GI}-Z|cYIiXSG>g4jQy+(8fHU%&>0 zQRd$~g9f-%yyY4{s0;9nH_8-cy45|>M3{Ow&$w?PdSFcC|+5%ZfV4 zdeJ3PDS%1~o$gIus}h~2Wo84u6%44S>yi%v6P%o`6qUv11g5|P#^ZLaVs?r)p`}iz z)yUcM-i=CMTDFpmCtP_cuV4|%K}Jk?Xxwao$u}@ykQK9@W78S_;5{17=0Hyd5b} zZcNkBj0h&sZF;~Ecf{m|AS7OCT>5R?`Ez6SmZ@-oyH@3jUt>NrEa_-uy=w;XpL*#6 zjVB(Skhi!BXDT1*45M5vL`HYSTOw&x=Ex<*w>80KwQw8c(dtXU8gBn-R4en_eS2 z;}|K$NOYB$>*j=N&31EVpO8p@^dF$AqiNH(VeKd(g96k|tN#1XOihcKKRwz9<`K(B zGqWzwz%;?QIgCXg$FbN@<_xF*S)Y8=;fpVhPnsq+p9^CFR7Nj{HJ(I~J*U2y^hmi0 z@Ed3SMm4zAb3m-s0NO}26zB*UxA&FFpKmgy%bmd6L}Y-bFT{IvaYmW$S@l>Jw5Q+o z5|p&g=-5v4prNyo%J0(=<8|U(m*`MVra3S!HodZAtiSLI#hYB%Q$un?*uP(Nd5@)*MX{ z7P}oo>5|)B1k|m?K0{%hz|c8K2+<^WiI$v=n@@x>KR>v=_feO0U5a``hZM4@^b7Tq zIcPu;AFNUt(JrThB*F1t&653bWWx5(Q zxbW=Pq1)lVTy}1d14wAad}7wXi)5R%zIn_u$bO#930V4h!zpM%e*St~^GX-Gi?|OM zH_$9Ng$fCq80DF{&Ell0CeL8A#|#<|1q^X^-%g}V>CU+o)Ruke#)EX>lHtO5U9DXK z$P;KloB$|)#*8*k0j0k8M~br(65xX9ilf_EuX9AW!NITflVegVbCiPlYbSJ-vqTr zcl!!D=mp5vOtdTUb1)j1pj|ASfZRnkL_dd~H+I7Q_+jC;$09X;Y!-D6Q|20Uz6{Q2 z|H6}_m;z8M;6ZD}-e&K;kG#D`1GjQP%4zguKM_%-T$e18>K`QAb>IE3Nv;f60WW19 zh>@(EA*3Fsf$dXEFhzbx8-$M7BsHqjFGk0 z#kj@GH$k!w4cBu68~V?pz!+RmuWpVF|cku@X9FJV!4{bQ!Q1d4kASt zPh+a;Ah$6lQkBlZ2_wC<(@Q_77huuQ)u>qyrf*+^9-~jpJ2;zuo{l!CC)7r6d8*g0 zg@I&I%Csuw3j*d8nCVK}LpTd)Rz=2s$;V`n(%>NNOe&H~k$Yi8HHx;bI~I<&N+*j3 z96h+KZ6@^pV000~YTd@K(z^T}lnARq_KtDwNs3@mtL_XY;bDcPrMKySJ@z;K>$Cog zTot3@PdbpyqrKtJ3319#L%`VM)t_EzSVr1$99MN_PUxF1P^0W27c8oL2Vv4&s&psA zgw#MB=!RW~&Hg!09~scbPZf)HMaKhLyy>6Uv>zY{Od7Vh1^+5z$=O1E2NoYC5Z8nl zgU`%6`#r^b<(Lh>k!$n!Tl>U_8%X;&iI=g6*krwq0J?SS4`KYX?Gc^D{5_my!tmky zmYB7b#Z+z56~82O$#M*oHkwa zPON)A<`J~xjBwT`%mm0=q46-J?p4hz3c&cXz$eoLh=MghGW?cfmx#Gsyh zm^+@MmV$Fw)p~U^|9_b6X*BnKG#DcE8Rd$k9qA+{ug| zuwUN6B)1=jc^fnYFO?tZ@l&%5yht295tBfzn*4A7UdqNOT}z~7<29rM-j3q-lIe;w z(}k(479Sys@cv+8YZN^h(izo_XWAcvvv%%%v+y)Y#XV&AI6P+1a}s$&F+L?v!=V5doWjBOMiwHkC%;4 zy`p<~Bm*ZL7qo#??7Dje=hxiz_Tfxm{ZzQ~3tn3V$dN@`bJsbPz;SI6abw{{;Vn^> zdHB8=R6*9Ch5`FoVMbXm)UZi(tE*XC(NKe8r&0~%H2Q4Zi&P%4hyYN*H>ej)Slk4v z$srxz{8fDYVxCcNM=@1h>i{6;X2nHVwt5$i1jU2HlLJKh{;!0ye*F{P`9G#~ISGPf z-!D7#^?%o2%Aa#*MQPDK#9&9F)r!=QdwBR@pTc6;Z(b5@WH$; zS3tAm&*C2J;QAW=viJP+CPCuLh&zK6BMlg^8LMH2Jre#*t<^vI|B?I)>4$;9`zw*| zbyo6HM|D=DMvEE|O^rMog$bpSH)zdVWQdkaFE)@0lA?Ecle3v*x+&(IX3>D>Ai9dH z(Tx)5Ru_vcm0%lXN^cbKw%3JWaG(q(k^jsVj!xQpEdbV^^}FHr|6e4? za@MuXg^}4s41{k{iZg8L&aLsx=Z9RcCDedR< zU|YAN{~b2FylmJh9rdaV-KG&)G6XYGwa9xg!FHk%XQUh_()Id@>Y0V9&eGtJx{l83` zU{Ts}2{JH6B2G==4+<&X!o>F|ANmwPWV~)lwuu46xnH+mDOY%#VxdlCm45@B^JPgj z<%f~$D4$k&e^LMZ`_T_Vsp4!Ys4)_P2Q~8Hdwqs+M-(g51M7+>>h?SkK5*axbhe8KXwu?WDV_H= zKmG?wROqq|s9_t2|96S4r+VPti>w70z`N5!I0sTTGf`ewY z*kZJtF26MDzl>H%U0(Cj(R2gcAn~a!erTvpyzA_%qRvi}*3%Nu&lB+Es)z@SdcoG z*FTI!JhNu(bQITf#seVG-@7rzkymX}utE zJ-z|Qfl&A~SLQeV3j)JsO*)IW0B2pjvNkanz+yD(Pb!dT2;0ZE91xzRx7nO+)YwSr z4Os$u%Qas23{|g7U;UC#uXgbcO^4r(>ci7JxkI2_oz#-TxU;V0NGGd1uUuZ{mn?bu zTs5!)+aV6O1a%F6Nhzo_s>Il~Jh`@7?%$3Yu6tBH;XxfTt7+ff!R$%s$+445-_5_N zsifuy*RAp(EZ5cSK}yx#{L=uW7w|@Xhaq`=!(y&_)t88B(V7q8-*-g%j>l z9Y2m%QLNx8vQ64cI}E`pub`)@QmP^_aispMYc(LKQOadm|8N8DF4?jEm?8S|>WQg! zN{^NER#qnVhWwI;9t=VihJ)um2ljP0Yv@7wg&>e483H_)y57@Q_E+n(%?>x7Yf75A zc=xK8XL=*{kH}W9dsa{(T0{WyKlUdNQoZ>e-(ZcD23G9}lDs-Is~b4W$;6h~O2U5` z*M5(yyMV)^R(X30?Q3~HOeQq=Se)gRJ3P*@jvs^f<87(F`K3Gl-C;$I8SSCAwwdBu z+SADeU{Jv0M@Ip1z1qIyucXVYOG=CD_~bdQE4~{KYz4Yn4n^a%2{`+(n$P2pF#l-s#(;+elg9vmm~SRapDo z4M3$l4{MZINOhBaDqn#5dZJeTvBu+~B^f7(Z5j8u9wh|^!>x?1*VkSBLG|Kt^ct9` zPTwaTOU|WqOGz*-B(+P^MeV;$-Yi<~%z&BY!XYxF{{ocv;ZJ+hdvcVR*t%N3HEn68 zxwRV?H}IZMI#`PQBSM``>R)d(pXql-sRIS*A4sXGAnC*o<#)~rt?$T%bv=8^O+i9K z-7-`dj}Ho@xl%Rs$&|Z>PaNB+ItX&r87U3qeCp7l2%ndt43yc8O(a>9?yO zem(6ix+u7iJ1qeWQg5^4rI0khFQkNTZ$sW z$c6gCiUF_ZGd9*X9>rl$q-(ZVn;35{9+^p0LFXXhXj2aYLMYRf*V#fY3Z?MYMib{C zdhlR|I$l?v32i;{(rRb2L)!H>qufdp^%J!8V3D$MDY_fP>Pv|_X1Ad6B-~>KeY?Y< ziBikaPEgpQ8xH=9z4(GWHC@tN{V-xNPrdR{cpHvZRPGMeJ}_M!(Mdgn(@OzDmy4^v$uEq`n-v^~(3n zN?&n6X7d*ZJM)qkFfLS3tS#2l;5aO3e)oc;3{9ZnIKO)@VDnSX{Bcd{#q2Ek7EH7pG#^`{6%eVsB>LM~3Q z^5)hhEAb2A>oMx36nhOx(V$_)15t0Vt95d_+c!Zslv;_62vNga;=&`|^RRUABQ$cI z-9Ph4dN08>ynvo^O|9WxxEXPKK>7g94VhF%qMI`JDCb5u|I(=Xn}+Na0lD4iRhDWJ z0#61bulFu}CyYxVJ0pkk0#?{AQrRR*lWiKvs-^-(f#Qkq-6tO2={KjJ@gJr=SLef)Dd)9$vcfnSU7+d#5Bb|oR^p~PSp@$T@I_?oN zDk2DMT%ww$`U$Fp>Y0_FsvHm>sc?V-c~2Iias8)kl|>sr&n|GyS|klUSlytP8th-K z?x*YLK1u~mVjXoX{}Wy{!$yoN<_}{+N7ehqhgCP2Yj8jFE7A5w2Y{kDZWXcj5|g+5 z*!t0+*eNqZkRa_OyX>kic^OUQ3&n+Yg7Z2VAWFWB$9!DS0Ty z8Bx%!uni)(|I0LyL>#%s7utLy22c8DcQXYs?VsMjh6KLWWu_u+fKEdoe(6rp29F-I zGd+`6wlMnUBvV^Yw@)XBW8c(s&7nZF5+^z`EOJ13qnT>Y9tD4!$YVJ<1bNK?#Eite z)Q-isN1w`p&`1n4#?eJp5Yc}R-W>Q$O`}R_wn7ZfhMZlq*TK_}8X6q)#mE&@q^AX; z$Q{5eI&sTJ%P&Taf)L}X@&L(9m22Hf!o9RO;po|!q2ar8KO*$GwUf~?LqM1RHbW~w zMYoAuYP(U9SZG;v7u@B}mZp(ph^q=dq=&4+b_*n=9TK`>nUG!i>hhZyb*{wHZpR$G zA)t7G+uPK%-Aa2!cqsh1L+Ci&{&0h;Y%Jz5hjW4BRJTG&qqs3Bq3o8NBx&PE#&IxH zw_aV@{ka$aO`#){)hnz(jJnA22KmE>KmH>UOW6(h(W9G(mcMa(TRFYHbxyi{O46^} z0IUf@S#`;*OoB$o1ggfo=Lp9OzcLzW3<&65`n@Y=-J>m@ML3}y#SX0#>=oebAU>32LYK4sN`@2(N|e`zXM|A(f6k(r(G z|41vC2v|9p*#6Jy|F%@Haj-M~zmf`q|8Gl0j4QZu(oQR_1Uvz5u?Sx=1cvarXfhno zqJk%+q`y3p)Oio3OrYb3KN@&=4d78fY-7aWJWgK7#-VSkf;#;uRS%#Srg;ga9;@ zxjrL>8$un@>c|+Zjal4~-BVp10KX6bLTYMi@V6{DO16TnIS3B0`GCVKh1qv3L_4y+ zzi7S!N1k8uep<`efwpmQaCdiizP*_n#p=v$Dgem6(9t!ZPcrx93~~sFFD#7tP>zBh zSx}%mps-i-7ydSYRn${pR{;Reey~_R!|gi^JPgta*giWr%<>%o7ahek{$mb52*mxH zHGo0+ec#m2%&!VW%tsE4I6?g^oqaSsmJ#@RVUE0i>?JP6EH*gcKE^RU(e?yx)LfX? z;DW3@HqU|EnZ1CDAiVz(_&0Yh_aN*|pi@|9QI2m6#d8(RZ?X!51Zi~>GgOch_|K&r z=1r*3e%y}u`P>YbVZAO!Umvs<3z)^16-04Z)VvPN<_d60?RQ#Wn84q_wLFIa4jC;W zAsJx4HefRQpzgVvhcG_+@?HKtJqEv^e;)KIX#EI$0F=O1;XOV9zgs&wRDXv@KG65C z+kPH(d_9A|2(i6C>?B+a;7=JBp4i5(#u5D<>+#v8ah&x!{Z11 z&)W}F1;$k+wx#wL^FyCeWTd)Xznln0I~^?<7(`TrBw*s=pg=!=)%oCpUzh(6xeBgP z6ln1uOB8>JAM5qU+waGpr!c^~8LbVCZZn1dA3qj*Si}&*JNv<(UCE#9M<3+3TFPJA z=wBD13Osq)p26?l!yhq>n;7@UH|aj>Rlv}d9(0r&;AvllSUG?0iV)!f-s~T)%GkgI zpM3xNL5sJJIt&!@S5VQ8%EB&1F&$P|{a;Z!|ND-ftdo$De5bnGbDcOeA2irk9mcLM zg!uQ-5H9`H9wEvu@87l>Xiz_q--fh^HjsZ;$AFIjLwBag@CYEkK{tK^#od3TEjS;8 z1}+b1-wX!8y1_PIZ!J;ZSEINqja;ps*ttudvS~9zlE_kak8Hc z&^|m^k1RLikm-`$*#X3IXL@Q|J-^S>cdszqOD3c#Q+ApRv=-?%S_OD%BO5VmSJn;l zM;f61FU z-jRpkQX`a*YU-GMz6q#&&FK`T*E5}el*Dr&#stAlx5b2xi0cQujPkcNuXag&KHcZq?6 zU6{5;G3&ah7C2%bYn)p0tSVm|1W6$G;8k3wSGLOwrMcf{wX3F1v9dwWQDm{nv?{!Wx`T+9vWh}Z|XUD-7L>U+jo zql?*DEoi&t1cUHR)r=4Q;?wu-rF+-a$+l1#Wh}-u+PLE`$SWIVhOQURJL%~%RQH{7 zF#ZhbPc|#ojS9^>rmF6YmvgyTb#7A%=Dn3pJsN$IO=zJoqazlxsPJG9mx9ATy(*sC zx;Iqyty9#`n1dqe7Ae=yP`ZAd6}@VVcWw)7=Sm3aVo;FNnH>{rz>uhR zEQuoTmzg*;e3wjWd(hokmkLq9xC=A&hVT;9pHs2 zR9VA+)ISR=K^QT-UXq_gkBPr_WD<*B)fIP6fdV`C+?=>kyCwtduza4CDzx9ePJ7m7 z(ShZ4{PY+(8g0HTxbPAsc#TB!<$Jw_7n*6M&FEG_;_Ruqi#FhQec6XuXxtkpj>MoX zV~2841w}1^q>uTk6F@t^XcZ6#udWr6+Z>09NtG{nw z6341`sbr_$ym-W%TS8UcS~}x{&sV<~@f=IFT-->ZCM3*b_h4DFz|AK9M<*)S56hdG znJ012k;LO-*EiW(ax%9O`UIZF?nU_mo(s~s9FT;q!6osp(lj+Xtr z8D53vW-N4*B7JF-`uL|kF7FvscQrFFWkU!>6FATE${*ccCkxJmA_C$t(2X@tggG z5j%m+@tAPZaSGlaM+Pcrg#8`a_SDCryTe_T{Fi|NOI=vXn^Cg^N>PZ@Ep=8sKDRq9 zzwL z=yqbZzy#=~7%*)5c{&WpIqTbsu5#$o;1s?Nf-hY7E|`l&W=?NmIksEvq1?gb;D)=W z7%U91N{+XbcslD&*JTqr%w1wi0iP~(@ROfDy5}DR1;NA~^d4w##N0ura$QiT41RdJ za&&ZQY&2OVYc>+PdWxK(mXo=JYfFyiO9!@GvUSGge^f=gITG_{QZ{3IigG84_@<$E zd|UF098u+nWU(PL%Xk;cXvLRX-hg{zKK|O`Bx04r6*8=uyk-+K4gY$|5>LBwFMdD@ z8@||&_pBA}s+)5A^&>q1tGf|0$X}EOc=EqkuWH(6MYX5DTD=pt(ZJ{>C{kp(9$8e@msl?tjxu2S_}62zE^S#ToE)L%A~;pZ{8 z4{H=vGmD$))exfKnozuFpiy)FaH4j6DabLijd*bv30H2ODY;-y&gBzeDE5}#%jkQQ z-fFo@<}_*-jZAEI=sWpG0Bv65u?%5ShK=Cyt^t>}$TE9Qq`y}G)g*Gx3TGf}f`U!R z3S{jTGB511YG(at+-`?AP-7rz$PF{R2O=zIcG`ph*S-!f@h|3xAQPWd-3yH{e;D)< znvCjI`n-Z}BmL&{Wlq!D?2z>CNrb}LZC7hofY9}_>h4|pYU}8|O%SIC{}BQB zsp(eDX$7HTs@CfH*y`faXW2M7nCM*0+z*?f<+Ox;%Fs+nC_|zqE6c&rSo<0uUggh8_L`|@QK8iG_)>ErNbFJn)B3!F z-GE^J{QT)^aQMm*K@>1Wk7fu6RERo8PaoyTi> zwWZ{wrbJRiJB%~a0QI|u-X3wiMp$Lb{wdr^hl-a3Bx~K|{qXph z()>_m#DcBuPeqK%8(+WQ6A|&2HJ$NW2-$M5QUl4r%cJx5+?DA>;lfFi~3 zfgDHUR$M3jC1SP&?r>$x)JZS2RFj+DC8YFYawl3=J0Cz7fdOa?+bcU{76Ku8=p2ai zg(nO5mp^$zi3?QF2v5|TAv*Zj)kYZVd6z-lPgfWlDTZ-suMbz(lWa(|zC$KmX^0f* zYW;2rl}L%Q)B^JvA~iqwIy4@* zqlA2&7eLJD<^+)846C!t=KX9f$YhT0D#e`#I8)Tz^M{%zPHAYrDXqwfe5V>pH>@Z3IR|E*VrPx<*Jrc(9%dt39_$leoc1le z@_!L=$`ax_O0=R`x}5v|`t)qPyWXa@rQ{|$RGh5HXeRI>4By#-4k?#j4@7zy*PaUy zLr4C}=zpu2<<8+6KP>J#Ne-1uR;~%UCZ~bF7#N85N zs!#e;Ju5w9I$T*}ehbMpb^CN3Q`8}dExuQ@l)&Ye1JF0I@hEV%r#$i^I<(9D@)b&l3HK8mnb<__D%OP z)rRu8S;_MlmU5apmu-3vv8}uJ4VfKhzB?I|21$-Yth;483o{DmZAY`me#UrFCl3z= z-ty{qn`g)D(%@t-S*}9o8oGP-Mb<;Jn1X&D8lxXjRjV$O@;v@%1-Yr{>s0EAb!(>G zrQHa|i>ca%eB+t|X4VQNpv;Iu3t~i3R{)C?l1~dFO%%N0s{8MGZ*)8#^Iod=3losf z>hnTLYq=z_*wM3`N&QjEuhfeTH)ZI8duxY{mY`F=CJ2~G9y_-;1Hr}^?YoO9dFn1_u4jnaHRo-W6EoQoA;YuJ+7EMvp|S z1N#9Uv6k-o622f_>XpHxYs2CNGjXLokqU0=v8Dx0{Vxyeve}rrnHxtCRoPDFqg4-9 z(HIBu4&CdTGgz?vyv!boRh7pY#Y%R z#N9kQ(MX(6yAF1r;{ghy)_SCvNaM_qCo72>|E5lRpaFXdD^TGL#t&!SJfscXgw70g zS`%8S%CnSV*p25+fT0AFT(+cTAXl>kpgR5RI{aqQodaIj7EZT5GYMn;R66l@gz*A& zX~`)y18H}Pk4P7@t_p;%YlIcz(mRg}2kV-dg3`sAiPnU!(qzY?nwj3yLTvGM(6#8h zxQ^zj*mCrxN44*2tf$Z8Tb3sgGLNL);=7+o4UESRrJ1rHUzH_IqlOc=g~7cDV&D`> zklYKnIvCrQchMP`E*4QIWo&ove51JE`%0rTaBxLSGgd$J8I2c#h|HR{Nu1IL8mS5W zS*yNnLcMyTSziGo5oh2T0uy7L%dE=>Uqf;tSJuRe+68L5M@l+)l;!&DCIq$`=^Dl| zxT09+`B&uf7V~u)mqW64&tXNL29u$;U-5_8W+wKcMiEZ(Hyut3q-8WS8p#>Mr4Pj% z?TPK_GRqI$fQ%{f0=n@UC1(l)Tx^%2n(!2p3P<%HGrP^1&={%V7U)F!weF`h_3-F* zN#iEr^}IQ%TCDV1yS`_N{Fa)BGI=)gy?_5E58CXr56|A-;MT<~w4J%iE|a!XQE@_^ zt+pBPoLg6KsBbjVCv|FVL6B}%$D~p1euBIGN$+e%<;GN}d#P@A#8YrUVRb47nf8!O zGy4#)qzZf+7o7%#_G}8ALl>bPO?jmHPx>|!D*BX0nUosA#1ooQQp$EHEcGnnGn#p+ zvQR&4KV=TN7p$UWi5IirB%N~`GI!sWb};xAA}y=TCblYlBKR9(YLnj3fsk7$Q& z3fD-n=-A0q6o36g6A8>4w=ZT?Ab*uU9b$)aie4*lH0z=%L)25A+avLv+eD6ntro+_ zyzh&WbHM3L`*Yd$Xap$uYrL;oxlr$`VFKrWK}GyTG7y(n86;2rD`yIzEvO#8m;o4S zqhtgnIe%Ejc-$4CcmCSgOqRdZ37J!~sw7wJUD><*#1Z{@Eb*SRy;yY$D;Z zi%TgDjzxnu&l(dFwK9i=+<2QcC(71=I1s+U3gEyUUuhKXDAcNv+KQGDD?Ra)9X4j& zmxG;UVS&NFUu z+%_f_Z7-birk=^LSL>~1K}V0|)V8@yo^o6~*5Kvn>A;Xxe*gFm(D9vn@W!pUGKnIK zLBiS#(Xc#HyC!O8cWtx80VWJL{l`gG3WWtk*!k$s?dgCJV@v?~)RA$mj#YYY&OPr(9nr7V0K=+g!{4*7Gr z_N~S+ib)x%%hB7bL=D912liIzn3gVrhSPVP-bphE?Tjj!I^Z=_rnx*TjF5=sn#zjeIXxFD3+P9d`1p9Ea#;jp-9V1(T=#f8jLt|Ao_7SpP4a#>U3@ zKc(;NYz&hvH*Bt=}1OfqMyu1)%@tbZ*P`Gn3gamj( z>~kqgN~{!kh2Qdj%8|Xh9>!g4v*_%mGb*o{p3_ZYYw1l-@5WXLt8gNq*h6H1KoUSl zEKjmR00apL2p~wLhK37ah1vK%eIhpDaBQSV|9`*q;GFCb7$F1yT`eq@cqjf&~5q5F`(6#Dg+O1n{r^n?Nl704g9jfh2}W!tMDx`LA&QePa0e0dd&0 z0{|f*8Fu##0X8y(V=sfjfSda(z#(9mieuL^3&0xyhvd)yNexim_zQJNJU)4OdIAkF zkRTkG{`p6t??Z}m0yq;&glB;dquoa_2q41*eH(z07y_Sj3ncj2^9JKiB42|6>I0aS z!-B*Pi?k2f5ZVGvp91iry7;F;gZz$Z{KNs%@7FZ}LI8mNO1`N**NMo#-|5%Kzyh5D zg%%aqd->xoV*<@9DuWkx%Xb4XY`>-vuVY5^4+rt~%bV4+jvlz3==&E|!vRDSzN7ON z$6zmmhJX+i%=S?{{z(OKnt-;~-~fRI^(#me>b*<|?+~!18;L*tT~s6E96-K(SQ&ta zY;FD!8C=~C+5v=hb_y#W|2Yl_i2R4s2r2v_B!rZe)nNb}Kn1$3ao+t(*2KF6e6c}& z2Qa{V`RE|f{c%GuLPzVg20&qU_}4_+@eWZT-PBV}QAc z{hjzPRC7ZW`N4viLhb+ESb}^oH(?=Ym2+SB)lg9|n8Fz!ykgKkK|%lv4*J7Fy?$>kN7iCY~y~w`zK)bMPZ{j zW%tGVrC1)_o`zoLvvXB4N}(}MvugY9j|^JCmMSqrFfWe5vgBr9o1f+DG3M$ zwz}@-On{M}KHwmah83H0UYbqrWH;8JSSre80KxWiInQn4b+}d2Xy(~__!_uoTOhrsBD*(h zz3uY^B%XXiX<`{=tFeo9t!zQs5d@eHze*qzVd;LgWz`!#<>9m>uWv93`2H;R5a9hB z{@5_8GM9K z0J(JKm#wEJ)cCU{sh*ukDrKx#!RhlWIFU?*U}=+0ckeG23&TNrBa2OTqJ& zM4Xg|1L>n^c#5)+s$PJ((VLIlTR$IB5XED$_jvqlpc1JQtMN`l+BHnQP05vn<#UP%cW&VeY++)}A^Obd!?ySa#eO-QS_5Sx)Gium_OKZd=&{p?0pVBtq zxv?d+t{xq_!xkBFf=&?Q)zgg? zrJi{(n8Lx{=J4!j1tryZVh5#Slg#RVf@+sSyOsf$K!bEhG!HJh@ok(Vi!L4zKVvFxmj3K%T6pK!VZlbOv)|I*<5-==V}e! zHq=Ry#FSL?U-b+vPG{V90%tMAjS;ax7ac56(#J&@D3$41;UFV}nmD#ow9}RIDQWl+d9W)CG z&y}3YK?rCc#IN*;yD>=Hdg;RrO|#^%lKUqt3`Y~0>S}M3r%?*HonW#0mUzF_{I-t>ueAQ|t=l-V-I;rdi<*twerZFB58md74#Z2zOEa4g zcY6XS!bCbX^)|7sK}PJK=qsFfm5mD&x-bz zr!j1ptgw_kB2m^#*Yow2N7(p&48z)WB%1}!5RUH(mbJikUqld)IN6RCj^}o8PGW|0 z8Gd3%v~QSdFw1mdo$$UbgKly?vmk5^vbhY=^joBU>~3UsT!Am!;v*$o8};7!^N0`Z zi?V-w3u!+h-9#%y?_DAA-#*|$7@nU=Ddl_>dgQgrk&|{FIvl(&a^;zk9WSiO)Cne` zUE=hZ;sU>6MsG_`rxPBEP11GZZRb_o5g^b?xA!n7j+)piBMjm*4Lp4vDgrMfAA)oh z{tUK%)6n?oIA8DB8>|WH>yQB|~ zN>aN(a|WQUTt3%n;VpQmDddvx)Y&Z0JBq>{GE-jFXXWOs#49) zL*E}6W?X!Q3ONG)bv*~NsZ?ImXRfOW_%QNRI@h*;-!CpEFOqQ+qet~e zyLdz3&!;xxSq4Dvrv%+lioO>P&5yBl=ZX)+dC}KXZVQSs&3pCyUlfUrP73lt0>Ivn zMAdShmRwAw?d0t$ZyMONBTa8n>aw?xjJwu>XkqbhEDH>^B$s6r>(Yp7_iVwMMrv(X zg-X!c*DQ5>r8eUFyalj2zVhAicJde^qFU_icG`Mi}Y~0bBs6=L6J1w zh&;4gc!>RO+$Cb@^_1D{1@431YiHo|!{Ge;z{CqWpGpW@t4gd6Kt1OyGvNbhyN zl6N6dgl=pnnJDGX4EY#YDba3zN4r_=)7jd&jEir^kL%PWjl98Xg)n}`(#(Q-6uEq= z8jLVP(%-J#r8y|VVryIz+rU?Z)2^`0U7+)Xq7K`x?KRh$no+?($bCYQX{RCDtBt+t z7D*V}o^eXiqlg^2qG_Cr*8}z(W{%3{%&}bWfv+r4&V0#CL-HBUaC&3lP}sJ0{LwmP z#8g6QsThi66Q> zX;$L~-Q%Qrmw-k5EP5iD{;8exP6(Zu_`YY0PPUtF6vVber>uesv~}cJy|^{p&SCeA zv8t#b88l07v^b?%+8Z3q*<2Q8>iU?_yIj?}n3n^uxq|iIVoN5Wszl0$x(PZwe;{aM zKFD?&1H(VGI1aRrQyd$^x!q}&6{&g-{PMM2JVu*t38sqy>k=>hP?C8p^f$t`PQ9IX zLC1n-)uQn(lvA~6OWotmcC(Q>F@w&8O3p`WxAU1v-Y1}VXbT!=<()m%HU*%}Wf&aY z6FTJ@OR)M-eE`QdxSY1#L*tu})cVJBM$n;_JymPtM&S z3U(F*`KzCj?6MK!)t-rFF<52OVreKinv0Kjz;Q&XF0x>a)^!DTe17-}#2p#n9tymU zwC}B2zOIvwvdl2!ul^b;{DhusuQCOCICGr2KLU@`=_SqMV9ThhBY*f1MGvmqx{Zmw z4i_4B9B1%xUDNWiCXdCThvNab!#0R!!A-BvnlB(Hzq9Uz=-qdDjP8Pm@{xsu7 zUBbZ`6md@$)VBBX%R|0xp$EsQW^~LV2^?AwwMRMgwq7&wW#+4Azll&jO$B8ZYGV%dLc>P}msGBU}1evW^f2Rvo;z+s*=oZB@P(jpVdSU9sUTX`z!S#6|x85oj(?{bH}m-E?%q4qy3?X z?TE>LW0Z8fzbr`<4(cK#czQk?qCW?g9eGCQAsG@NOJ^jBspuhlPr;pSjXj0z6ot}s zQ*uwZ%Gx4@UWnzMc%vbXy}hyK^9S$#Kw(O+=f~`9h+}L8s2t9y?VjSbocQLvg!=apXd2bcDe- zT%&4an^O1NAvWDWFRudybuS(ag-gkcC_Y4yJ}DD|;B<{Zt&!w;Ibk#rw)7=v?-e$e zih`dae$FMyDY~YydOk0^a*%zLo`&a-ncG~ zP+x}FKc{r;T-CkhylPc0K{dSmHK(W?{Cuy^DN>|P&XQLhIN@gz^OS23#ORGM+ zO2?-KIU7)X%sGej&ptzbCwVegsijgg;-;bHa@*F+7L5*rv@OaSe5qLD-2Sk(=018Z zgl4u1RVP3&tt0p+G+F#*lV%U6naFaGZ6?P~5_sXSBsU<0Y{fkJJ1sn_*S=O{k(=GD zRo)}y4GSDUtIU&ng7b2PQipTMl>F2K#?+iQYLX6$daRc)6R7T)FTMTR2L|PKybw=B z6|=dj=wDM33W&fMSq^)Ginq0LR6i02z^_9JCuDg`0ZUQw!}e5BolCAkdT3loPzn6| zKRwYP!KHHZqppZXu2OOi_vI9m`{sLdm{zHjdmgS?_pW1_N5J2}l=0#~2ye8wZ-$pzetLh>$h zE?#;4>O4FlwHN!GnJ$GEE;dQz>S^tvmAcE#?8@?Dkz)CPnY`^LCL3Lph;Amt&%WO7 zb*?fk2GdWWNWpfzLq{~d*bQk_a=~>0&)<=KH&Y`JXD?&mTtA>ORH4rs2gn=}-}`53 zYl3UD0X;8LAUUFM`{@rjP#iwnm~&U!yJ@yNLKiS_kH~uG&MubY7X?9jWf-KP8rPlm z^w}-ba&>&i%sf-fIZ>H7o8cY;Vxj1(WN94svfR^1KU+fPwD*4>()P_>vFV>H>`Baa zCy`4fQJ*uC&T?Jkdy6_u{s@5<()BpF`2pErVTX4xRRq9zkwiCcl1#qTC4EPQV%i{5 zT^jFkyPHW%-=cgF@m3Lcsw%X_c!A8Fd3@0qTQ<~pr2L6(^9~YX+doHL@`@QH2U5D8 zHm=?tkC5AiK%$bZH)Lo?_V563yTR8w?_hcRoo1(rgk4La(sh~f{nz;~|C@@{mYxAz zp-6&bLU$V);gB|EU3x+u5B*+9CfJml;N;jwN%1cR$ff-q{-{qg9)+HF%bZ-Q!y5SD zw}T?(MSpr@pGdHBrmq4N##@=P-l{x*VJ32#Nn zJ#}{l)y}-&s6WLTc@K`?me}PAlMyG@66fSii)Nkznnr^3vc&0D8QG+DLmhrqoK<&k49PHY)uJ($5L|i6-hUlAP;UjfMc{1` zCe#_ohU0VZ@3>Qf3Ja)YXe|sKT;ap(O#JPE`78I&w0?-; z7~{!1RSML)XWIQJga+H@jh zlQSdZSQ>BUGQs6P&C*5wF|qBp*0fdUjzvX2lzqIL?Db?nKVk#YTwkt7rLTX8Rl@%1 zR9`wcKGANy494LuR(F2qaD%a5iEHuKnb{&}dE9w>oL}xfTnuY!|38eqQ;;r9)Mi=6 zDciPf+qP}nIHzpewr$(CZP#0_`DP|MqA&i4?ufj|yv@tK*Lof|sjUcmcArjLJwnQ} zT$a?4M4KbUmltNQXRSBRr767>Af&8L`a4oQaPwNlt~a<6O=6uddJCVoW~7`M$fA&y zeKS?8%#1I-+t5()_)YCggzCZ_WR=yt=kIYcW~q-)Vf3tX+C4;n`_qylA0$%fb47Y@(x&<;yXUm^TKt6 zxtqz(h_kUpjgFO*YYF^ptsYMV$;i5KVaf*+TCMf-_Qa^8f!VEBemZ5N+G$4T;^xs2+q6Jn;443U(9d($mt6npcN#=XsJFo1uYj5^Fo8vN*6| zyl;|$r?MTdWVNP=%fzu;S)Er91%rwTcowIgwrNtI_8xqwW0iE$3FYUgyNP!1Z#Q6# zJFRI9*O9~kjH0mYreT`bO9{~U;=hym?-9OoC$~X^N|pKhjbJqs%w;k$Jn9S!pwC|! zdA2qhcjU&)ZtinK_-VPhvw>+St6GZ~<=6bCWEYfU?MX_xqU*LPen`9Lmf1ovzW?zi z{Qf6RcO?b1U~YfQhcEInz56&~VO06jl5^J1x#n2t3$|;h+B}8Vu$xWR=2zQZ59rlG zl?SWTj+&UN>x7t0rQtdh#*_9{^F;dWdueJc^wJLqbL3sJIt9C5f4zd{6~hGUv$QGe zj#16$LFjNKPPv><$r5dw+Z**38l2w8Snt!5Y~zEX|C<^Uct5C~yFv79wRFi5i_SP8 zrl@3jQ9bJAEf=$T)5#g7Q^iWfY9mh{lpfQ94*t`_klRI)JMvMR!0m|I?`DwV)d4&5 zJ5%VFc>)IrDf~Ae%k%>EQgCd8pc~?Bs80k537>NT`HXgqL?T~p?n>dD&y0YWQKxu; z?pu@tu$6}Ol7xmF>5Jm*${%ASunOtTE_e=Lz_IklNpO%hvZFU0f^cyw^u6K0)Qhz! zsF=}1r@o%CfaQ`Ck0vV?H(O$`9>>FF*HDEUw$1Zfej=y+@)?SMmNm`uG8#)N10o9d zsHD}r3Tj^5#ztEfl?+EcAPJNBH<~DYF3ZxMqW9i54Nk4((h&Vnoiv{jOg{zmQpN>3wi>dhjE{qH#4Uwp}*S|$WotR;6={R%{`8;%%BjJ0JY!W9M@L{50@^M zu!p#vIJ2c#jt|$=TBy@yn$gO;1>E${iCln1L`TzPe}DGRhw3%_8x!06ksE0zNSR$M zf~@+W^jRpL_-EbD&x8htCYl|l?OwLh7mBFh_K?~!{LZk1eIfq?!DU3whvDt!*Q6`` zm*d80o+M~=E+QYY*COwS?#*A|J%eVo|7l^&^*=3)+1R=MmvPBV$id3W_P<{LyMM{a z#>o7Cy)btB&%e}JqF)pRyCBR*^uFuyh$rs}HI@VkP83A`?-}ljR6;2!At;*ZnxJ1C znePgG(ete|_dXlY>$BGB(PMMs2Vj|--eq~3hQ~?jMan}4GlEo;=wI*^{`$8Fgr-LV zBNdpR57n2S&q#!m#RPi;@(n|7$`V4X#0aMQ5rCu`uZV~pRPk>fGnXC&e*V!B7%BoN zc(^2lv=|&5c<|pp zpo)WdF&O$`LfyeIg_RVGDNsS)QW*D%#?d|~Sp5I%3u+*NeSzc|ZF~8bapkT$@JOA$U zGq!{F5A4Tv6)X1s-{*Hreb@le zYhPlZXFGIyztJteqTEU!C1&_N!8C9rL^!l`L{yYCaQ-b&Imf!vzJ{j>0mr#R(L4iY z(trLX&LEs&oD>K)P*a$(ey~4fJOyf?xVIqa*H7EQ9*r;&5fB)JIOuggJR|3UzycHF z^3NRhk}v5r4iM_Fr2-V;+tvGA8k@L2BG~rG8NtWh&mYW8%nZ!Tr>}`O0d_O9V2=Jc z1yRI)3NmsCMC3$NP)SKiV2~d?aRRW#kU8Ck6Y94TR#EmLbZ$- zd3{ir3*Pxmp!re#(ZFAQ73T8-B2_RU{k*!rTa^(IMi4^Kw}D73dGVBe`R4?X?=2v({Eos25g*| z!0&7pgT{wIh{({7M5x2#QkY8)0z}h-!uh*>DX@t9VI=dI7(nD>K!JQ9Qg2l?gT_F> z@mV;?2XJnH{$?PPub8NC6Gu|y1GBJx)lUai)pG_^GFSBvXFvo zCb=Jq_;^C{UOcFG1yia(AlTRpHO$iAfS`Xsz#5p_pf3c1n4q5R`9}8izwyDrjFiY= z?=|@b`+b+7uY$x(fMEwLlSlyI15g4M;w>@|yo3T(FWbJ9bzho9P3FzedjkCR?m)*h zfv&e;Z23BY;UCM*(ZnXclR_XgdG~5|uFw;Un{i)u_T$BTZnu((^2qi*;KG`!y;k@L zZ=ip7;hzPX4E!(O1v7CxT#Ize-_|kj7zq(${9)MkkXX1-&$Pw3)q}A4NOpCF>UnHQho>-1l0)&MxnoTa0zTwC)Vr)|Gp}CAds(-jz!NrBZ zrL&7!^!2fYhk9g+gvyf2uO;32Q`y_H0{_f%rKo;AWh7Qrzl@A!sn<2e^fwap@-iJl zn$1^JBFNIkp4?V|U$IWZVo2Y$YywT4Kz~E` zoA}0hnp>wl)==j0Lc}kHCT5!buYhZrvynM3I;Z!6#ge(mwsWPTGY|bYHg39r>~{$C zu2Z?ub%_#Bi^F5hC(N+!tp&auxEA3FkRIElpAe%ZUY#PU+XKYJ8KqRO)`jSHIBSEU zR>sd=P+wHo*qVIXV*ZLT1-c`q?)(6k>msjUK)!k>oK5lR|GFcec7^`NK5DBqm6Av9 zo+32ExD<>sFJ!_}A3uswd_UyTZgT1Vmc&==a5CEZ38w=Ld|yrLG;|C-x0d!m3fh{R zPa_u99)e}G>z3p(;EA`wF9d%heJn<&ls);zg|N^Iz3zaIfrsV}6AR?q7j`CK>49sA zVq*H+v4y9Mjv9q=nNGV+#z6C~0@S7Z=J>qy3CZxP_ECA}V~1rEyLMqioEGK(7{GjS zGJqG15hGU5E0#nipGU7uW>jSt-v{A+-EVL@0FVvCYpE|0bqNQhCuwMM+*V#!Vddn| zGtnS*E`10rsFh`Ru6TIF+27O@K2_v8-D1hx=?tPNRVQH7)ukpx17iO>;bhg?FTHuH z-dN43wpV7C8?2BO(<+NuVhkFj<5yQlzCmi3tpE31=uzIlFxw>A>Qbx*C|pB$K55>P&P2bPQ#&U5XIwP1KZTS^v_sSa?3e18|rHyL7&9qTk6bA&@} zPaSDLr~5_O)cE-n+;si!_^w|OSBV+9#W^l`*Jd$YY1FSG>T;~WwWruIM5R}Jo!#lm zSzSGMQw5gK{X15%$5IoRNCEcO>)32*E6wk0TJCh&(d( z+gQ=RDinNhY_m)gLM-%fd@I$!Sc~5KgWb1lE}92E-L$CPue>Iu>~YsS4*-px#lm{f z-lW|Mo6UIo4*|+ND$)ifski5~`-PBGC!7bmiw>*97wd&Bo8%cMR<7x7I9_Yd&<6V* zy&)y!sy3uxP$qBGmK-h+GnkGc#8$=Ub>9B4^Su5R4)F}Q^*J9x&yKMFqY#Csoeio= zH;n!BRS23BaGEm>q0FeQKH-NkVja z)xSi@{FJ;j3wEacJBS8Hs~gm8|Gl~Yk}*{&&*r^wuAW7jc-j)0Fx?K`VH42GHN{jb z(eSt*n=bq-Thn4ruY*xXsZMzG=$?CFV$wK?^6^dECnz5bE={seL@>*)Id? zRK2z+l=PZa6-v)p;YE}K;f}O;R~&nXYnFZ20@@~LL5p#S~idm}geyPgAysAK#NtC4;`gV`HC_>18gw4<3pDn{3;Oza41#C`obM z5OmrO_q_|87cc_NkvNBKKxgRTVWYzw@1MMf_~ppM)2AZVuykD(c*5EjJ`W zk%P&`w!EF$zbolxrNWXXCqc%20@vFFhFZwQ#SML!5=;BfC#=X$L-&-y4UNWU zIalyLi&-2yt2jz^`{qUk9zOlxG7KZ@S-0UV2Koy8`U1*1)tuZIzHYp1%61K(+1V{V zl^(6c9ttViyEdEm#Kjcr%zvKw)10*$T^i&F)OcxT+>qzKgynn%vrlp~d>TYl_NC}; z`m5hU$Rm5x*IQ&3--6sdDQNgLCI>BjFwa)(qVRYbM(*(Fh-3TZla_BoPjzS$Y9J3J zL?_($tG$J5(aC>8K4V;M@+78-FA4mj$bbxJBWm?umW`SBIUCS3WvdQwY2Mmi{Nx_zrkgT*lNiD~g=;oQK^efVr`}HV zR5xaHQp$6UD=JO}TnPUOa1iSC66)byMcBZBN6HLa`gMcA8 zbJy+3u`D*E^vFbE&O%A=~ zB5%`5^UXeEmOTFTH+R+fNZ0RIq&5558;%$(=J`^KRm+KNG;);H z@|SaVMB$LlUtZVx0mYHnRU9-ck1QuR*2%%m(WG~M|ZYJ zzzmZnG25brbY86SB_|h*Y45yod@Ue5iKzB2l63Bqa<*dzPuPLb>Cfvn8Lhvpi=g4o zF@U~A*WE09{kL}r`zEyYoe{KfozB>Xxiz2K68HMkbu+Ge2sRIj@|$_NKAcL9=2x&D zXA6!t8Nt7F+p03gWb!$=zrEXUgshrn@bHF4Sn%{arkN%3ZPfeepA~&bQfbHdlDJK*ZlqZ&H{44 zj7Y?e56hVZlQ+ zkrC>DG$l@J)YKM)$(V5Zn)JfG7_MM1j>mgv;K%{5*f% z^=KI@KhchlKtzrU$x`R@1vhywtzvA>hzs7JX4{{JcK(gg=LMh?dKs}?Qa$zkcrBd9 z))&x`h#<(8ut@A;lk&qdrnCBP?NhA2x5dz-8PUr+Viz-RD0D&z&=cbkUdO*oQw z12rn@R01c>1?dfZ6{eXKk*W-!_qTe0`&vUb{Sk>MU$ zsnlLzawToA zhGLONvR2l8Mkmh-`$M?A%WTn~i*q3NmuB`cyix*`xYvI=3T`Zg)#_I;q)1l>(5@hM z8gj4LVX;Y3bPE$J9S{Rv5yQt)?W!6EzAz^YAG`3O0+wR0A`f}2hv_TN`?IMS zV1=r05>2R8va^|$ZaGvR0#DtJ>v?h9&XrnDjQz?3l`cU#v*KDa7@z7Jg!N&UBjToV z+PzEB$#LV%h&Y?aS%yFN^q+>GC&QcAWo{LDU(AIWYk!BV!xU8Pa2veZ=vfQEAFhvO z9kEyAr~FjBZ0d4Sv)HFkqOS4YD|_D?ROrc2(yEaV8Eq&an|=5xIg4S74@?S3&+xxD zvk5hXw>Y&AaMEU6EBbbs&JxQRk4U$-wI=N}Zep_WZH4k@C88yq*(7wgrpdLpn@lC3 zU;IMsjXCx5n~M%il+5XR3OpQwdz%gw)GqqxHa!8hz=s{&2lE%{52VPThrDKc`sz97 zYq!AI-6!R@xviP|r<*t3mf0mg{ymd#KL%ck;Z17`J z468vPnI%@Dg<3nY$=s@wDF&zWyuj|(luozpx!}^~sIz&A7~OH-gMO zt-9GnJ>7DI4!l=9lf=KxN1sCfhE760W1x&F*dULqsr4j8}R3XS5R4ecx__62m!dp+K=2x@dZGQ1HIQ!8n=cMI}+VcW; zs#qN*5!uDvGaWp9kg^CTHa}jvo8mApa-w>!rjtp#$vVxYhJw4hUsx6R?&+EvKNYCd zTBNZgxCTEQ+8PkO=Ga_nT7g!@{WJ~#XH=3K5vP2=L)7E^3@5;7FT6)tXY#obUf03H zaUzir)~Yi*x5EAXPBB~IVL$^3rG2np!JqIb@j2cIWsm4{+3#stpU<~BTwReE)0h!Z zK|RnWywJWsmDZI0zfP!*ZsAqe}(X0Wb&o2%j2M9uFwVoT9+40c*a&7y-B#_L|D8| zuxmU(Qm)wjh}q5>P#fO=zJFv)_-Wh}P8vWC-=*#0t)`NHqE@fO7!a;EZZ7hYN?g$R z*4}0su8a31rY}9I>e$zpTwH$f8OxWm7@R(6>VZ586}R;CA);e6R29`LQ9r7M)j!yg zZ`?HmT}Jp{NEPc&)ywKvnnlAwnuIzfi&7S2lEPw=N8%f0Q}Vz5h6Fsd3!FXYlyeZN zW+xT=Lo6Z4m(_vfIpM$Ckr`J;X1XxIExGLe8y-&3FrAw^E_o{gATgeGiQ^&#=twwR z3B&$&w%(=IV^IkcHuhoNP}c39u6e#wIe3deyxYpuS$+U?W{#z{G;#nX^n{N+*{d(B zGR|$+-!H-Yr!b^KkT6PRTAiw^z$2v1DemiJoKmTAM4wa|ZYez%o$+&;^LuHJ zO}vF1;R@ZV|Ii;>KC*lCagvvyuNO^FbfR2wqiu7}IkpcM5>F{|TlnQ8k3!2+Xhp;P ztL2c0P{x&eF}AV z^N5P@U8JhIJylm8cUP}nYN2X@a#LwIsBoBL{zh0aTMZOcEn(mKd5z_Q z8?kcKjDgy4=ke~}rV-0JwA>D8L|kN!pH00DGX88j&O^Vw*Sdte5UOFRR06T=et1q! zz!g|>co)9CO$DV}@br}0a=ea9Ln~0|*uIF~r@>Qz6F64!lfUV^-bWZ@52t|>oDB2v zP7S|1vF7vgw?~`^Ep=EJpZ7Wl8k6C_YYMFdSy+{VLTU_DX_k4O*M8=Sd%kCQ>Xtgg zO7Qyw-;;nvlLfJ?7Qxoe6+HF|l2=j0F=LSB#Hi_)fH`b}^&a2ZR!;D2^3n@GYWywI zTw63oXM0-b*XPZmbnjHX44-4)kg_qQGgLl?V>E>)s<^kwDSA9|yN#W{K(w#kS>f_g3p5rpW7pW2c>W42EUq(qAQh?iW zztLTV`FQefmwjHN1Pa#q+k@!%;~`8Tq;QC{jd?zatNE16lsmI$6%Lv8A&1KG*Vv3r z-Gs$t_D$mGM^xHk)bs0|KjpCs+O4>N6Dfl>ranG<_Ihe1tu86b?!A`N`Y7qr#4Au% zVg9qzdUdjwk@B+C@yl-|2r;MCRl|lQ%>Q{SB2%kW{5Yn0U^}*vI>9ox++>ggkhh`r z1P|bS6*xXG)`Kz2ha*_#Cj`|hsJejUI4Jq-p_8|jXD z21$OE&IC?=?t;#$S&Ay8;=ypkoh{9N*nq>YeIdeAZh|Yw4OdmEQLxAhlfo7*Ro+Y= zBy{mz+mX%ouMf7_QG`w*v-uWVAy2XPTZ!SPE0JBXPip(2Z?M86q_mLE{H42;|E z$k5&R2YK`Ih{Z4RL%Lxl5H(~yOAF^yHO8Xa5JFDPUBO2w1Uq5%oFoQhI~`cpsLB7C z>Qt_AtJruWo|0?l8XDrUo=y>?No|9)AVgjerrg{=(&-!EqyY{ET?Dal?%OgQ;F&L_ zO<`cVq=(*}JAoqSErzHi=QEJfDLo^^7 zLTZi1HlsJJsC3+YpilApEVOr5o^wBC0c4-)NZzbYmgRx+g*>^~X(9x|6-s_)tFEFg?!_)rKJmLFP?z&}@n%m(OCEhKm*-;$z?Pil%?-}Cj{ zpZrUf_>5IYO16o2@$#8F=8xq7cE4AC9}a;H)0lSw%9=~l?fSqruX3#XKAU-2Dg3&Q zM1TGo_Wa>0T zN_0b1^U{$#t~2ytSh8r3H%lk7GRS=?-tSLNB)UrM|BP+@>&!?}x2KfHeRorq-XE;@ z?^6o#URt1m%U6!nzoJ?AwsBBz;tae^^gfOl0w9Ag#!h5?>Ndb#Jm`y%eMBd3UQJ~i8iFFrGjW%#<17MRoQE;Pm+)r^vLTT=l)I6>4?=keBLD{b8 z2nNlLl)Wl9SN;^CeQ_+X+?u^41nWfr-2cF>5w}t7oU%`^J;8I-MUNtzzmq`9?j}v& z)p8d>UX_Vr8#JQ4bKBWw7KPl(HCXeT3^|AlGeOPd* zvBl3Y1I<7Lvg3@qN2#SJ-Df_5!8p6xA2OV?*zI_Qd|<9n=Xg0m)5ct`vuN*cMZn4VXKFv|GbY${!pwk!Gt@NsRck zSh)Q(xNCAr;~sWm0F4?_+Lr+HoeW(UwO&q9DlNNv`O~rz2njhswgqx`R82212iOzb zHZRuu&8^ti;rs8`?5i?Hv2*p+N4k8S&D#ptIevdmExnUy-j(7`vgSa-$Q{_6<%eV_ zwZXgYja6&^<8Fbx04c^O-phg7VqU-qCgrOa?=od2gic~0e@cUcz4rkmvyn!iSUb2= z?1I#Ae1ZZjW&;C>2uWN8TL0#3qk*x`D)g+=*B{KEbmvsA$w=FYiJL{pZ1!3()nVRV*ImnIkaSY!FC-eoxW?y+B!0Z5Y2ES zcSXsOBM_$?JoRLz|Rsd59fHPBfM(pX`@0%EP2oUR5p1h`O^DLD&c^H z#NT}6srueTyQ+;R3PaD0;H8?BHQ3DpPpIvk!*($Vt#=B-hmN0IE3XY#1=~rid`nm0 zrPCFfp0!qe?Kga5>zvzuS&5C8*Rm8z^db3K^#Vjfob7i;9-OuU~pDkZmKTGdi zi$4r&DB!-k`mQ~(J&3K=MY=;AuGTzBP^pfdj9EI^9Ff8u!3@(Dlnx%hZ0B(6@cS## z)gw-1o9C1W$nnF>BI!HJL`qc}&`XJI!H z!GTMpR;J#s89HOpG^!;%dGttZE{PlUe9osnNH2X65e|EZAOc&qUAaGCcy5jgK)acy zOggtUet0mK(goLTu+-}WaEmQq)hu2)JB03i@lj*+^NM-82A{*o(>>GZLKHuaQ;{_L zdW%adBNH#<&kbZPYh_pl0-^(clGE^fe?j*;617S2O{*x8f)s+MeI+|QdT{j;{FxN> zrG0e`O4Z%qjGSXnE6*ZEIzv(+BP)>Wt0xUQm(7f1k-dri&Pd#6};fbO}HU(x>}pXsw_#vmtw zgbA>ay{%a`pJBVd!2dT-v0SulupL2f6L@tgs2J|rvyvLe=uk6Gt#?4t!hcFIcs_kZ zH8L?+^UkubM0x97{JvYKS|k0a8vzgINCKq)qh`4l1F%_{cuPc)3omBZrm4Eo`=vW? zamK6XniL0D{l}hE525?0G3DDaO2h$zFCc*falqF&AtA6f54HYQhExwds#g(2E=vN) zryfQ8%f1VC_gMm?wv)P&(yVqjl*RJs^#>tKD{=aNpfy;T{s&rvgZY26`-fSofR8d8c0q^O^E#qlTTYpI@LeW4`i5c5=umd=FZIK+R)sF!sN!1DJ*qbIYeV(cj0ate;O^Q#m8(KuhWqyJLB{2{r&biJ!#Pdup) ziTGJydky;I{+EY#*ES#NZg-{jScE3QsGI6~;#d{dDERizs|}S?N{7MDYnSnXj!Ez? zTsn4YO#|+_-Eoi1>8N)+$O@{A`>t3{vI!SMBBx2Tkk}d!=b`-I=3!C}X9+!*bLuKb z^#!mS-C?$vR{MH!9(4#9qn7LC&bmOq*|(K4ch~U9qpk!R01-j!`QhL z*{`ObNFUM+Q~EHNXIb?&6mNXccqjyg-NBiIN^b_HAJky6s=$AXk9v*Z=QMr&##HW7;p3hC4*`e(z5YMAl23}BIf3XJ}^YUM_svs zX9`zSi~?d!i1ezd8ZW#05wRd+NkjJwHfDU6e#G{o3;VyUGRzC#x##Php2%U2%(zcC z1}kAg5Qc$vFO#LIMZ$K|tV_WG!@c)98DlADLHEnPKAPS0b|^yWyJjt?RkeF)nfQJb`q|)Ld$y7->-@n( z4t0eo4oFqYqJ%54q9U;K;?=b7LyzxS@M^JRfIIM7VG6r*^?9_D#h0{IgTzJuEJ@&K+TA7cZI5ARuR>bw*B$W_J($raUiFW%WPBi(Gm(#wjh@)_MS%FXhspMFdm#7 zk){_vjGnu%3%5hn)M?>$yw!qxY&obWC6#DFn=&Y~a9>sUf!gFB#++RK=MNzf-qwsU zKjN+K`L)hgtY5|!FpHp(Wb?v!<{Q-^?4FZNfZ%9%B?@#eBBiwF;pT5^=~-g*0F3Y* z{R@&{U_Qb(S}#Tmo!X31ns)?#8o`{<7F6wu4U#$9XY$K%!JsH&2?Fa8Qr93N=M%Dxr`3o4 z4RMDm81H#=Y%K2nGvOLY1!DQnLY@rY8sMd~IDo?F+KI-MS!wQjqSZ&}I!PYQfuzh3 z+yr#vV0cp+I5~9?0Gp9R|47%R=9d^g<4&5g?^X!|2QfG> ztsxsHYeuNGDX8G~yO*r-a2KzWMg5osGKTU;qvssuW?^+7H96F4@cCd`aSm*$Se0^; zXKo;#$ynuz{WZb`$UqjhDz)DmT8_2qstvwLXyDBSDJ0!d&NKPXjTu)G6XJvS4{F{x zC*fw5NdGGeH~>GPsl#XNu@djH150p)Z-u%Y?3f&6qRH4hmFnY_mPoAv2x5301*WT zRla3EiP`dnDd@(4-M`fZvbfn^HWUQ2mQ_lTiv@|+Xobl#;b(`0fP#n z07)fs&lg${vG5PviG{{pWnlwEMW3|LbJ>0g#&0~-kM`dPv}oP+x0THq@JE{;umk*0OaT4bPYF}ZuCr8c2$G)qW=GO(rZ*cT8jWuD{fY&L}Nz$Hid z3bmZ=V_e^O_X|a^RVyiQm(L9N;wi{$5US9XB_BcjY8VR+$hcvw@oTqQ2MtJKdsQ9M zIpm`P!&HdqbWAH~)7p**s4&hxAX}TDK6jIXr+kwWp9_%7m1qTSiFoGU$Pb4g2vkS4 z^AyP~8fExP|6f}6L`OerAa0>_!kX5I{l)#{)N*O~ZYDj$`crx3omPU8Cr2lgqeY2g zsSp5Wa_ovKK{+D5AzLpQ8$p`ina8&x%4jcw4|m{(<@Fgk%ZY1=eKN^8_yC5Kno6(z zHsDl)^tR;$4nyEUMlApprtO-`%42T5eC?W#$F&GC_UZ$7HRO`z?dk0dSK3a%Qm?I! zg>T(K$pS?rxgiq|PfBMHXfFcR%l>FhX^wXvmF?MIW6;a{{I3L#@}O1bW$qYa*MFrC zv>vaSJ634)8I_u=!^5bmDh9?`}nkDb?Lo*7um(kH3e zS%;tVndlF$elohx_b33n=5UH|n`4QG8_l4Bf0UB{2lX?dRCYZN^liPk8vO+j9VYhu zvk%uzNtm}*^L|UH%f*OfBz3S({QwjG4DH?QH>~I9RIPE|<+mhH8$k+Nm}s=mm!iU^ zrC~{%6B&xZuyK;~$zGx_?CEqfav54*QoI#kIm}brrl^_OerruloOI%BkYU`SS6M<^ zvL*JVdm47H<|=H&sk1=pd&HbLJ)ajLN*Y>O%+xjMv0WYpM-x`W>O*{>69qg?>>sn# zVhop!Q?27XvZtgBx(3eQ@^s4HR+_F{yCqL-bOgafbd3O!yW9}r_W|%;=&n3}CYk)k zsncrUsZh$cp)A>u-&E9GE@}rWX~AN`V0ahu{2@y%U1S$sUH|+TC78L*;Cn6V0oK}p z#i|gT3!p!3=2TLeX9t$gbV9&CpWhFf;eLx}q+mxAqx%!%sGXE(Z)wxiQ0@*B2o~9I zL722@lLhV_*GlUnzF3-bwze=O`@vBcoT9-J@Z5x*vBDF^B4d)Jnv>eSw(Yd<389L< z6PPOh>n5-S;I}>9X5sBT*myk^Ovz2aEd=jY5}_=bs6<_E!RmO^-zD=so6V(9_@_j5 zX!_y*lj17$k@Oy5IIPl<662Pec42+LsGk2K>Mo+jMi^ay#$JJY4mTtywTYO28?`8^ z+XpQP5vLF4L68}v6%D2LasjWTTI&2K_{Y{WFPp&)EO1zAHsI7n7u-qJ*B~_L_;@V* z3_>KHI$pm~9$j4GqMJFlRntF9_yzJtBMDaD8LNg1l$(XkFG?O3F(rD9+&)(m%u(iZ z$tZPEkGpRdYv=4F;&E8)p&@&t=GBcxrTM6EKQ&<0|HX3hpMHB07=@hg_Wt>@#wu!P za%flwsX1414j+QoZP1yRvKR2Qa6?*N0?4;h5!G)^`=LY~?H+q!S|Ta?i;*VPDOMHa zGTW}zW!^Iui(&3!qn7B!;#WeG0tg+1St_vcQtgpQTGn}Nt0R*1u;Dyn7L_lsQ>f=} za)YFWyWUUNaqcRfMa1ZZ3uEe6%QHeikyFb<2P{tNkKs<_l_CrB)``M>_sb{{=Hpmd zr1GA(#3}(B1pmHYk^?jPeuyIfP&aJjOAw4iXZQUZd}>LL8><|LveeLGjVTP#q*mR& zi9cxwia0_3J*9RRAsIx<_)+n6IbRS0if-PczR|jbR3oD>@zz;qy0@=9k%LAV%eX}@ zbMTc4KJ;qne!_Mc?dP#ru zVQGvjUzE(pdqlcgi?ONdB|cIF1)o%h9{rkdaBq-a9fM|1og6MkWxp-Y^$)>Ma4Zzb`E?NKZI=EL0BlXhMg5C7TOO^ zGQlVu1G8li;Z@6$6w8RsjD@cnbLRg#^3vc`p)bo*_^2&OXs zVQ^-f!jL4}`C!5U$Fp;@6rX2pZUtI2sQ(vO$Fk@k&8aEGy_Y5d( zp`~I#oxgbl89&_}^_c(9x8LoGc@JRCAn;qmg@p%VymAV@@9|rtcR98C>&ki)#WxPR%nZ>k45rJUMR@cAnhEnmw zr-q0LhN&+`5oOu4rGXW<^!p(urQ!B;Lo6fe=UH|?J+HmjIw++c-70HZvzhmUW%1;n zp8s=}z&7`-|I&KFL}uw2vx@YNJ{@0PFqu7>6R>fUhP6`+bXA@`0a%ZLH1)D1+SB4u z5eTyZpi#wRRpva%UqH^lIw0d0xJV>u52o?=L5Ck59~tdii6B$*ZK)7OY{~zw<0Y#+ z{-f@6!8+t$PGN ziXyXY_Z<>}Ab*QT$AgMt_HL9`w)7^A^vd4WgM3~v*X?_Gi*j=@jW834WVfj0a#9MT zZ<*VI`y2sfT)y>{SCow#6ZSu9yPLBFq(M4}zj030zZ zH7=8YhiQv!Mkl}AhSZTGoR6_DBzo=>anHke!f#Nu3LybQ!kRwT3Me}T35L&1M{N5x z8XonKCP}&TlAzww=341$9fux*aF7;u7U2w*NTRqw+greXi5|Ba4hAcD6Y=4PiwDWS zdpYfRLdC|nV{JNdGdPdR$_hi-ipv6F*PLfxX4wF# z*T?8fHBPA%pV+q6nBF>6g0qNb!zq7vBLG3XxnSiblSDndeeVTA-Y+AvsBABLX-4WI zAw?L-43_PT#|zYHLTimXv(Rf;@YG6weY)8wdb-x83f%#RszCd%cWEVJer+{P6aAU> zc(?ajk7Qba=Pk{&ZLZ~iE$eSx+;>^RRgLOXjQnknDq&4#UVSqsQ))I#*B*;b)QH!~ zDQ8a@_tkpB+W@O&b-57 z#r>oVtXG;9foP(HQDGNTM_JW)%Q=;>{AbaFVv<+;()FOVobvA8a%rR0COwyDg?_sf znLg^Ye!SdV&N41E-P>#h3k4WXn)y4X5TNm?IUw{iPd@!K@c62})BT&QXmjZ-WojnO zTDrvr?tXeV%Ex$mmW!k+6Yuq&gO9oOFvuB)K z6pDHK^;AkG6^jwyuul>g`mnNOeWKD5@Y_P!=kaRh75J%6%PyR=JKL5Q#<%zmU?OIeY%a<~pPR3#k|JX$dA>9E|@XMmebV z*WzyOKFx^36L}pYGw?nvVXS$sebBQ)%US#`ai=@CH`gP`lGWfSsoWe(1X9kC6pN zGH0!MdrWib6jsH7l`mg3WsF3}NWtmJ2=;GGE`BGR( zEVhSIXc1{d_j(Ji;(qr>(u@g)?wj1 zb=J8SA1p6aUEW0y5|>W-FXISMsuj>7KK?p~%Zc2ItmM7N$V56x3KtnkoF7qW(MMDv zj>eF;naPG8GK#P=eoDeqe3~dW#rPGR`h@S$6Uw+(H|1(y?v$YUh!3inc&p=^DqHAQwqN?jzjPK zlPZzxUYfUNy<8+|+wA@qVs3?QacR}CkzMv&O(GI?Dc6h3sFbS07Ewc9B*rMGo!8V( zRRyC@#8+QR)|fC%63|)Pn44mzRz(*(+u%sqZK}$!QiB)53WKt30d{igaU!M1{^{&r z79V}z`T_URr>tFqBuD)*ktH$jZ-T$={2ha8NB5{Ht}|?8H1%)jCQDoET`CA})S}C~ zX$bdIvg!k;$jamSk*VPWY$(~9YlW}K7gf<62UkYZ>mVBM`-Z4xNB5sc5?Ec|NXBA* zb(hv8iuPphsWq7B`qU>Y1oVdO>x--RX5y2nMplM`uCV83V~1t*K&(h%FIp4bQw#=8 zFf<}L6zmO~@Sp-z-Y7f&v;yIBKk#|7YItm#VQM}3yL`=4v6?$F9xixsyxjgFY4sAG zYRz(__d}A^S`A~^@tmX;P7hV$xav>prn~{M&c)w%(Xu9Pd0b@n@WXRtPi#Yo; z{dFkX)+mx1ds4i%So6btz<@(*^UvG=L2e%xcw32Rf##OnPfm7rWN#cMcF2K%Yc2nOITqC5#9#L- z3J&?1D$`?UVt1%F9Q3{aj3-hUb|5AuMsg>#d02}wMsGPCv5^uw^csjk9WF$^7>U)AulpT#P$!;2=H=zm5R zbL%Tu;&fgUXf2-c+DwS6kSu8?2i1Nb%r{t(kYKE z7rj*PzVk)?4Re&}uY9wW)fZ(4KXL>g-AQWUl)~+6r@jFg4_W`8#@+!)l%QJ^Y}>YN z+qP}nwr$?FZR@se-?nYr+yA^bvl}}bF&j}4l_&FLW@T2@$*NQJolk@ND}BNxdF#Ep6l13w@H31doM>s5&)Z*(?>?ql|e>>!czC6uVCx8yv zmr^jjh9o7bk_g6yGz|Vy&9CPT^Dor|VhlxAZyq|D%}sb6#Yx7z`X8+@sm=1|Nqwc| z(Bvik-jt5N1AewyBH><|NbegrRkE3Do1VQGrjz90wHV4)SJ2ekv%AocNQs=n5_vmI zS|hXU!0yQE$It>rLw`|PCYkO$Mh3MO|E4SJ*IRKrgU#aRXn%g|glBiXK!@v%PJqnB zp=P^Ey?FA~?Dr=fQ(F}1o=Zy7+$?aVpw}wIM)+n(aMWUT|I17JQr0s=1ZXKcCvDN> zsURl_V#1`#Xu66${de1Ya!IEc9Da!ir+A)z9gmYnSQVQRQB;+s!zSgpwUzzB)DTZ-U(r#cy>NzCcOjx0GS16Ks2{L3*jlE@0Q5!>PG%YzvNly#bgl#TV%W0VNT=U3F-3KV#mt&D2Olbz%}zy-@qHB^%~^Dn-z8cfOUy+aCV5AuU8#}uE+q}GYG9z1>%-yDxD zR1yul#GX`%N9Odk!?^Y_Hm2Tdo3e(BB9)L}pq7pbjIbY~5=f+>d&y6AsMY_W9LRH( z5x=6WxI>cEU#fyOb$-Aw9E8}S)Vqe3o9TrMl8Vb)Sj!d_x8PHj2?-iXTV48^4Zaap zeH=*In<+;)fMr7-8?X#Fc;aDi{(>%Id=v!^mnZjKes1qatwi1ZNa0uB9k_~De1?g4IT923IJ;LR;uL~b zUMqH0%OTujradoNQsJczWtE*?o?R8IM4G!YYKoBi3eS*FS;-2`Sy<8|o*Ncei=su! zt4<{M4l9*kb}oJH;R-h1@xo~ujJ184jxsfF$`du|AE>I9t?mYro@!fTvC}ol*l6x( z{M_o5HrJ$7)A1RmYf{?`+B!|%EkN{9Wg%Sh_GFHxiVNLCn+?L-4K{CGN0DUC@)5a= z^{P!TK+4BD8qhB{ha6HQXvSF*N*iBN|`of>I$iCCTMm- zb6^P2PX3Xe`wKne+843|@Z%Q4S53D5rC^4KNcMNS`hd2~n=)jixTK7!NQHAt2fC?f zMXgj-Rlg9koexM~R8aPOUbq;`pC?W#`bjl_`Eqd|5B4qs06k}_n}7iDSV03tt*6o& zCakAK?9U$^inT4Ej6rI{^3>X4k4;wf@Or7-U_Tp5vej5`8lzrgQ}&XI-ACm@3{QmG zn@3gzCG zFQ@#P^ARbznf9OM#zTcUI7#Jj(*+@hml1l{hfH=BMVd&VrSrPfX?c0u7lqOc4Oe(* zWRIvZmy&#eon0@s?*(hqZGU{ysqT@T5n9b z;?yQ>T2_34m2b%ob``bFp*RAh{l6(ye{6?Qu)u6Y(PQmPFM+pq?7=SoQQzdL_~ehg zhssHB{85mH6d95CktWzYp^4R_)%y23Tc<96JdB*Nm9DDv6bO|eHrzd`Y&lbreo|ui zcFL7TrPVW>NK6jpln+~-ONKmHh>K7z@$Ax)yCzAwNX@#nWS)Cj9eTx1RT5kn6CV~2 zlu{l(Z3PD|8!G}|_u8z~xBi_XXj4xajuu&yd;iyE6UmRamGWtT$_>b8AaLKNy5=@{ zSBhs0aFQx;^JtWj7R!Kyal(q1FO=D_G`{j0IIa;Ru}4px^iD zWtOZAY!LUtwmRsW05|-!rgzT=;-)hioUa>5`|pCG_c zUA5b6%u~BDVrTMh?+s9aO?Of_^{OH0uULQxi-&7jaI=)o*YiT@$KZ;rX80-;Cmy!S zkC>DYe6U0Jf)F+eX)A(Kqs;}&cm?e=&ZZs?*OFx|E}HJ83<#(<$eG1bkizYMF}?mF zb#g4iCuDWC+o0AQYD-4@&vsq+njfA$U_tRYC-WyMK(rKAi9y*0uhx#_3~W>R2wH-& z5QMLLu*8%vOU>uJ(McS;1W8mT>(vOUi&aW-VBmtlTQ$#Hl|kSPCfMopA=0+`-im12 ztb{$Zr^v~$mW~HI3A4%s$TH>sY+(J)3VEHg#=f75gl>8bXz@x1^bWck_yQ_Wqi=It869I#h&aS4o3z~46{2q&EU0bP4^>=EA)MQli31o4fWm@(#P z)8+6r?}0uMw1l>1LkGcPcyG$~S)lj<2s<8teo>-6J+lx@$xK@p0QSQQrdLUX@GoWC)K+?wl(AUH zT*TyMWJ~ztM+#mkljwR?=rIBR<8=$H92ZV#D1x*(Bmp^qox|gul79YGyqg0_l@lSG zNLsNea`Ux zF{lRE@3MjQk6j!-m{g(iw;oTdi@+~HELXdf zxl$I$=>~g;LGE2x1UAyBPOGJ%F$AotCj^2oX^Hd}z(nbzL^+pv8Mqy?^dWNb%os8Z zy*KL%kHFi?!V4s)HlA!#x?m`TBU*O9KeF3_s9A4%yNg)2lfQ1Q5vk^a?AiJ_Lb_obv3SOyO0O3#gpFsn!6vRtCFRZ13_raWo7jcV{ z##;0G#kh6S{%7SaCebyXe9cVVlrciu!vP)PD-!0-a$A~0X1+$uu7F)&6_5+k z#|4b@R5EbhY;7O8F%Gs6loA0Ja7u}a2-N`ir6sV$mdL!c{d^xpL44pomn0l@Pc={9 zgk@Y1BW|rZjvx&@4tv9vj_&wGb4;PldnNU%%LV7~7lJZ{fkkDx37OYprXh5@)e9*J z-@tYl{Mj7@xR){i9H{gB&V6EXQg|9?g#j-TMH8Qk28pdcI&_((l?P_VRl_6{Tiny| z+DSdMvW($L*)H452 zKD=_Cn6#im2vK+Jl_PizR&`F3v^+j6G{vf%)nP>@=#HQ_JYL>`VDBr3Q|~< zTUJqdQSsT+V@VYqssL>oiO#fay{is>WEqH}jwSvQG}`_P-)e@W&pMfW5kS;sV3#v0 z)@BT_p2*-_Kt4Q6c-eNb8FkpZ^BTb6?aooDq0@vAHg|yOP~t?QewQmS{<`e+_KzRU zYpWvCZ}1j5J1+C)Rc+51CC;{>_j%Dq+rj;;)`?(3uapM?#J4BD*JLKvw}}?^lt_%o zBCUJ?vwNici4JdCD7f+yqD!ORJ1yf;q!+-2}Mlc@-f1-JqntU1wz z^L-#vb*f4Qo@tnGAq~BWJxZ(FNsMx`3lfS8-@kn0&FNo-KEX>m%1VU5GjpU!51!{= zW!1F;3*e$!7;OKX-ucjt4GR=MPEh0B+`CuLuy7q?dZ4Y!zg1{BC^l)L2b+(p8umTc z)`LU;sOACE#i%3Y8a!grKAOEJyBler6dn|ZMK|A0>BwE8k9i(3%lsnbUM}DIcP|Bb z=IA`FVeEQoY`-dwWbQy@Y|C-gKNOKUSs_u_;Y}#aj8ysM|HlhKj!8^S;T?L9_O_BI? zpzhh4Ru}t6ejcTuVz7Rr3J3vr5JJ8ty7>?(ZT`9SAIey2Mb(XQ)eS3uO858F^>)*r z7YplI9-&^vHV)!Y5-0z-r=^O28xBi@@>#X?tifaaWjKJjg!P$Fx1FxdI5)?%3?xLW z#*Y!YeUK-A0;8yoz^ZBF59{~aN5{>Utq^(bz}%As#AT6k+&g>`W3fJh5bSa;2BG_> zQRa@5v%<}Lt`$mebhdYe>2+_eoqW#U1IY)pGP_GiSX7~2<^hL!;*4{&n?e2Z>S(N0 zm&uuUc`O8~_a35|ll<`&fyL;P}>BlHUaS`Fv3f2MnA6*C*nV#jXnJT_XS(!a}iEASC zH6hB5fH_EjK#^@ksLWl0OjA;4z#w}Zl{b$|ZM(HcRz}7AzD|#gjb0T}r>jV>%uv># zIk~!AQ3E?5o4o5J|032$RycU;GrVC_jJYT}q7HItT;*4h6zR2+%pw(%Ej6`Mimc z<312zPa+6h4b&#BAQkyLNo{?@H@9v7TlwG6fD2JWl&l*NKH>2vU?>J zqpeYmCXFjh1icTMYGAweG~>lo(tGT~=;mhnLk`uVg}L>Le}bQyjf%KKE3B#{Kl>gLXGG4(~fHIQCwEJ}T9dUfesSUm*t927SgKbAK2=59j~M;>a!!h?f|9^kUswyT*H% zY+Alr_!eJMowzQk<$Yy|2yDb>Vro5%yg^_3@txAapV{5YWRdhPv`%mmjas|SO2lx8O#V=mw#IL)j2zI-Ijj0!6ttJh4>jn5RIBjq7Lq3s;#0>sybZ;BP{y|N=>*8`dliy>^gPI&G?MSQ(=|E}{tTR9 zzj&MtRkHHb0Uv8^I#|iFV7wL;#EIq^m-M-A2L* z{iQY9Wtw!Z1Ah* z0_Kiv@29N9hWpwap}tkC)&^^zx>3iAs?O^Z`&hwMN_13sCwJrMG6X zhF_`fh>nx;Yl#CAR{N_dt+lB?8xsN8wve=KpePdUC1jQtbVeQwEL)nHnw4YupOFFr z_SYKWV5D}-Tut6KU_K&5_Gm{4XBeHDnGMwr+QCD#WoI53KS<&*hwz@K%&4|juPYni z&ChLwXJZDdV&OIZQOR1RMpgB7VLN2vjDC4!Bs?Zi#LA`PH&KSzk-8qJs!U*jjShv{ znj{I3GX2PxS7U=xHOto*-KRB<=!xK*o_kwQkufi^%2FBqpVeQXC|iLkm@FgVx+GP9 z_}evNutCzY3K|j41K*Td&ofYSGPS4d0^Fm5UxibMBjZ&J51gx26U=~>8lZ{GV{g`x z!&a@#844)wyDF@8d+^`OcKFU19Ck_n4u(SFnOxi@m*ldm;Dx~!hA&cN7M~l?1A*s4 zUf8aYP5<&2TsqdXNdVLcMQ$=7IXz}FimXoK^q4dP3rINRHP6JQczN#v9lUuU*ejkY z^pgFMks?p%uK_<$6TI9ncQ(+%ppTZn(aXq^KpaLEL z6{d&+)%kuIE`UBjU`X)_Ct#drtdpp{lYOEB>^Nytw{nz+;y7(=fuhCDyxuyFNHte_>U{bhN@tR`Z1F0#%yrLtn&}_916t(PSHf&A#}mWH0TSvWn4J(HPV@%S zE~n+ZAFFHcdS#Za*)t*#-gpbKdV_PH(46FLK(%(o&s2^h1ySq}Yr76bpQr`99I+G( z;;Cc7yVWFU#&?X29=nKpfL^Ji$t2kHxmt&Q^)-UXUq@s1pw}{J!pE?W*KQ5bwT|E( zVpEwD=5oR*nc|HsdH+QE(9&yqIy0 z?4BP)(F1L)9>v8jd4Z$gwB325>pmUJ>d8=#e=zvw$I!`9cXab=6xTiz?EDw~_rwh4oYV6Q)sF+XAE?G& zCwb5$!#vYTNvoRshb6?wlO)^2N!wza*&?&OmNOxzK+RUdYV)qd}@t_ zbn}WGYhf!|q#yFE+N3fNOnm>RFDSth_QmRVU2|iY-}vzIb^@%(MTfH4_=(@Uc7{m) zcVl0YTTqs-Q4WrssBDid#9?uTe4eMql&FZJ#sdUz4`&gH;Y3u>TUoB^yB&-{0Lue_ zlCN{GCrCZ+qK3(eM%|t0a6Px=cCv6%b>cB|lEa^FUywOT>{|Pa$1Lc+ z$Mig>kd&v=K3A?YVtjwI19(vHC5IWQY6z2 zA+-geoIlaKo|g2Bk$T)_QbOe62e$X`l&^>uD@8xB#c2;mxg{3zRo!yR7%Ib;5;WaI ztcBv%*qgDQ|9U(ze9oPl9KD7L-_+-A%kAP$t3mMa&_Ts2DW3VUnC}=@GV8Mz;kJg+ zzU*;8tt_J(8FX2Pwq2?4d@TLw0?sMeA$^(lq$>G^S8p|P^{TNGn1~JapgEZ zkJu%ZSjb|mb1Tg4fz#wuy*~LO@^dVIx@mCR=&gEhM8ByO#v?aF-^M}}JwNmzwPAhV z$r*m77PYtzux&T^9QO}hP&EoiUN#VelkycKU;s=IVS5#bTVP&2HaPD#;pHkgI%Pq% z02sCQDVPAl-}nZUcd{E>9^#JMiWL>O%bV2WAjQ-#1s2Tp#3b67eH9i@rB6L2+)s9l zJJxks)4%tVx~ZH?X;H>>FxEr!QEyhzBzXHvfydG?06zh{yz^A802iqg{*pzc_fzOH z%SVU(3oKQB2@%2D9wxq($g=xKx444^6T@6+C>YXNW;<=s%y+xqa;F4v z$lzykY7c+_wT3_G*lG_ah+aZVxX~NhiE2|(Lo)uCA}f3HI?N8B0>7WUovw=>vGhKe z!d8c{;P+wTpG}sf6A2nvSUNWf1lc@_6|gzoyn6-k8W<&l@^(Wmbz(0fPbck@{iZy%dqaN6 zCpU+}i1(%7l!UXtC-71gUB8C^TC34GPGZU6=+aRQu`uBXBXrC1oU_Phs znw?Jx>x$kSB@UL8r)0K=L%A!#EriP*$s!M@khW7=%fVLu_IuY4${|e}CgUX%;WKU& z?RZ5anTii?n19Fys*vGQR6Yuqw%GQuv~^sHl@#Q1m1E{43#_OJ;*h_NniNre_F&YW zW9=OD1;kkfdZdbNhGn{4Q6gLRpT?F!au3a(^>TB)n1kGlK#7P^QcURa_g|yb7PVqzkjP_p%u%-5Z}eGVvr17#eh!76f95+opTFL}jctSM z9qjHWs7{L2&01$Q_A)z5B}Z{#IpG!l@sHcv4SB^VL3*Sry0T}#RmdDZPBM6GT7d0- zyPyhINAz%2Imi;u1EgSd=_&G|GzgH4jD9Nupt-L~^nTDT)(U0ZTZwB24$aQhgB+mK z@PZI>kC9br^mq|qG+Kg))8+We47c=(^R?W8NFDZ?+ey9> zUo#W+_zT75hUH=S7GKa6c!l0)iGFsYzBq_6)m=nM83>MY5H8CcKV}D=P15d5N!2Yc zB{;SS16XuS-KYLNtt2ekv6z9c;zyq&OtMlvJaGgDZM~9q0UmxoaqTD}l}OBJk{zoq zdy_x--k-%x5HVdlMmj= zbhsXsX>zBITZ~dlfu$1afddXcTjpT!x4IfuOoym=znRQLG-Oe$9t9op)^b29zySg! zF*z7{d0KJEEw!;uO_mf?jC1dL`kZE{swf#*(4P8715Rt*1$ilNn8rlnnSmp z8b$wm3yeK~bLAIDf{=7ikIA`4GB*A5XNFeg0?tcy>SAv`>5ga95{_ArIo?!7QX+j6XK-y{A*d9) z2K|Z1H@E8Jk8*6ai>5$rfG1|OzqjTP)QTs3nseIi#>tILWqJb^P_;|2vtUo&Y>v#a zggIt2vB`?>BUJexWt5z10ej2Z5!H#^Fn4C1%E)m^%q2;OlA!U;_RLoWFTU$lQPH8L zP&E72;oVJgH}-M*-f>0hifAWJ0bIvjR|P~8>{#4t|8GvQ_A=6y+| zrNk&?Pp$ytJAX?VgSubm7$fYne|M^OA&kOsGg_6?HdxGB&KERZh|RJj4_Q6e#=lt0 z=+spnfZ<$U@Ne;ZrVcr=;1#i3f4%$gypiGkdXJ^$f>I_WbJjdmqV0;7jAU^xN=g(3 z5u-i8AkC5+a<ENiCCJo{Nh(S2jkIh3OsJ z0+|8Ny0^Q9I|knkdGiW_5w^AcUe~|&KeZVjah(sl6`{n0D%cUg*jcKbLixyM2@K|q zHZ4?oCGY7bsGx7WqkfAH4M~|I+Oph#muFwx0loxnUvWjI;|Pdspj?07JDaD^=|Q#M@0v99UF3SqSpf*%ed}x|JclIW6maLGhjc zEKa`q1CTso_5JSvd#3*fyk5oA!IXer-pESX#TJTQj)0MY;XlZECubJ|4ko7mNr*te z!pXw^|Ca@!TSwa&o4wI*r7nHc*=lm=ORc3v)y-y2s&F;&NSBF+(0+K9?_#e^DPzk)t#1r>4?2y(g# zrR8H{>Me{w5miY_b#+)7Xl^|isv#7#buea4F!@5iR_yP}#belkwrpKeVGz;ChJ%^k z1gQr2+0~XRteIVButi0p&Uq@2g$BJZQ9^CL2RYOyb>M>+8aIcJ7~paU%cBgyDe#$2 z1s}nIur=rr|HwcG&<##fD5VXoXiYozKt+p5(04NTMKoMw4u#>RQ z1WH2$x+(uYNoYn&l@f>!Y8MoZLuQY^zLj1`H~qqmE~0=I8=`0mbeU#*nk?<+Li7nT`|QY( zbmpQi+KO^Ujh@+XYdVH|ZuZkJ?s(;s0>;7LJ79{4{Q{3Dm=?U6nO6cVjIhK%LWUHS zs65A{rs0NoG)YZJCBcne3;Np(U*mismKY?wIjfcR)pxnGIFuCx|0BD|xI1+CPp*=d z>ltVXxGPV|WB!1$6umarQDEuKix2Q68^jSPSI+h%$O#m|U02FG5qq}Kx|a3B;vZ_Lrbp>o)aOxEee$lAzU z7Jg_uU+rYeVtrZOfJ5Qr=^pX=4M3;t0QfkozzX&k#5wz-`EbEJ2Fn{@yz-rMI^F-| z#q*IO%mL7?qE+J;PjGY3k#I!Z@XDZ63;H?e1P2$%D#SCC)fJ{Puqi?7JutYkK%D}$ zJF38OiiUO}({U~g6t&GI!OUP5;cM*LHf(hOZgXix!?5N~5!XvWNt)L!qp-r3oA3PME*VKXBB!qP^v zmLgL61>2I?06r1*>S+tr0((Isc!ca&QXu~&NuXM&IslA%dz4g6ANzHY!p|xG(Y z2id^KQrb=tE5&9Vof6i|hjGT@(G?BmQ>bvCH3%Qp8xaf@-VZJ_T)>c;oKfd6Nd=ok zD>En}B`a9@l$DQ;9B!hGm52>dHf55AUmlPSa3p(dM_?w7q#Ds~g5J~0ZybJ^WkYfK z9gM2WVIIt{Q6 z=WYW9u1F*00*bO@rX;wfeQI6P$+K3Of}x*I+|e6v@@lt^mVMRb&?=e|j3F_ZqB1tD z?{3nvon0&>;36Y8EyxFgLWL$x%#emDjs{qc_2Q>+)UQk}k>5-Bq!b^R?qctBBcZ;52MdaX%fp0G`Pzy zC;fjbB~AuAQz@>=7hDPub}i#IC2`%4lW5DLcpb%NP}mA?7v&^dDcv!sD;-m4LC^Ww zG^v4LC-Wo7L1!C~oh?27^+#t*oA60D28s9^+S1=!xkegoq#iJsI?r&7xk<2gy8%YZ5#Zw>A`+jD0moay`&P<*{fYNPi77P z;_U9tCERIS(r}4Ud`6Ly^&Zp8TbZuI1WHdaN0~UO6k=1V!1c+CMya^SX;U(n;4YcU z42aG+44thiwQo%#>KQ-TXRDKF?mZC(i>t`Uoj;v)Z;Z|e;w|3>F_UZ)7Zm%D0?d)U zaYe~7_2Pv_6a#7he4tgR+&?gS&*zTO`Jlf0L)6b?W#M@qsG=+G3TlC!|t z929--4xfn8*CW(vjz2E#501!D5W(C@*j~sScRfVr1hb-SJ>fpBlV-k z=uG8y{)1`73F_eDWI5f#o7X}9NT@rc4~?T`qdB)?#2ZH=YRycMv)D4)pjqZAG6Lwd zmKe3LlMIOywE(39&w#ithi3^F{~%0`E&O?vKeeVpFt!r{?pO)tfC_zkxn;ayjeDh(Shb%QR0t%Bv?xKV<#L^UEWf;(~0j+(u~+`6qv7ekpmDfhnVFy z6$076KZ&kI+&hkwcBx}?08CQ&eY z1ACA62)#hWHJp6J3}I3?kfC+paXz_DTHX(-1fkZkgHo^Du2#Fx5iM(mi*^_JTivXN zvPw%EZXrra&XCmHYq2WfuhxY}Sd34wa^j7+ZQ53k5E%OAV+%zbKnk+26j7O7i5^)8x!Jm}bJj zyB3~R)1KkY9(5A(m>1goL2@`rC{yfGCE3nt$l>EKSdYqMjPNJ$mWq;DS1=(9SIeeV z^eGK4Ta3GeeZUu9OER4gwsah&32bs$00mnxJCQOj+wPD?3ymqOOr3cMg^{&KR#U8JAE!;}JBPnArW z*a7HMNg7`npi|B)Kg&&W6OU!`lHx-4k>#BZ z;*!bw^!GnmP`EC{)gsw^i;R-Pk6pXe9v4Xr#VdD2ipRtW; zB*!zwX+2=rm59V>CqZTyiB5hkCnhgKY$*BC^}rvHuctkIIxWkfCu90IewliJ^Y-Rt zXZLXaY`~Y%^HD+K7VS-UHOkxt@uBcL_jr}w)ydz=!x2>d_>knz(%(5V+6aj6hwnYg zZf$N3SU-vbmG$?SLvhQa4Jtan`S>tbQXBmEDeinB^IPIY#(O5Tj2*af49a)?5a&jt z@0WOx#tmEFiDgIR4OMthZ$~oU>19XzN9_zN=tM|6lGbK=sm*3}ln=MG_t*`^wxhP~ zl(s!-uL>H@ zioLJ&cKsZk>|JMkT>u-xDVnHp%9Ps*b4j*F1$JHMdKQfmtz0y!z3J-tHPtbS}TGTdGl@x zBHkc??|RNX{?R?Ye;$rDrRB#pU0r{{xFmdO^QCl+b+Z+ud$~IDcH~8lw{Pd#RU^gv zuQW-jAB$h{;%|3z`TGVjec(acn2zvQeZfKNjN5pb`bm~PV9{LDYW8s}d`>i<)4vQN zmYPrJv0}_Z$e3;d2qgQZmll1z{rP7D%=}R9yZiX|aL{BtR6S}fn{_xrkO$JVi~p!O zV%K?M#sWFJ9L|3j@P=*LKREdzN*m_B>-ezuDg|@0TQvO%?_xg&@m-D%Vq44HUXJc? zn|jd3`M6{fIJ0ShKrrzh*I1S<(tvkSm$v)*=E(YHEfdLpw7s&De;oD{qxuK}f&X*~ z_s5MfQy2zQXyp&cmz@V^FsdtT(J0F~W?@eZqXnh@P}+xAT*g475cP)>zve#%<~s}h zblC2ib@lK-Pu~>=zK3^tjl-@tt)W`l(GXg-xAL0zrBQeC6aFC8o*!H9*C3M<%r98> z?@&hxQ8-94uT{PM_bVqZ>+ADcj`(%#S^b~K`!8*zGIAzO6!Lxjzl*bWxk5Nw)N&UH z2@=~;(R(qizk#wk&0t!aM7PCl`ONXR{W(4)?w>_bBZgeS6z2Cv8^{q>pD*k=a%RZ% zH3#-=*xoLTfRdDLEk7UsR9(EX99)=f()5^mTwjYvn{mA_A0O!!_x`aTCx2bZ~^jDI>icz^V$)|IV`I!pEae6)5)vTm~OVC=kru!q{)IxyGoMApdD zt(&FeF1#?hUzPjDe~I%V``?pinW@_!SkL>`h#aO@Czv6SLne0!BI(20Dh{5_R~CzmzB_|Eurc{eKt!rvAGl3K_%yH0y5Z zVnJZ>>t%FuGBu;5mp1iuw|6perl5rSFGWjxI}t;d-=i1dVq#!oWME`qV`Tmfn*IYj5&@Qc-a-bZ{^=A)psCv~f0tqE}E6)u0n|wXrcWw6puqAXO|Zoe6%o z{~9a}ftsn4^KaJ#%yf(_jI5kYY^=0QbZoT$V-lDc{>LN{$XL3W5->3^a?*>K8d)0J zQ4&}?7`j+En;H_h{daXXy59yUq4@azbB^qdte_ZKe#v7A{*&V2fujF^dsms*{-<-5 ziSd7hGbP|)XZ|nWD#8CbXlahxyxax@itnuYt0V5ZmHtK~F(FBQ3hJqV?R-=zuL(kf zgm(1$ZGG=fgKpGCas6}23~x`*$)@oNq~%CPf{emMh(U4Wo}?KV#A0^(E)A$qkSSIM zC3A+E5a3BRB7z`SVgx1epEa!tvkuvLPCtf%aZwM3UB%t;;y&S#kbbNJnDYeL8B9cQ z<_L*Q7Q}U`M%Qeb$vV=aDY~Vo#J$$akzmqg1xu$y96YkE@tv|H*N+Fy9GB5qert3s z1(K~~Bh7WpW!%SF@{`5j#XX07zsT<>P)k7oXCIXRq8OG9?<`o-(ZljQ#4 za`0!x=)0uR!zl2>OrV{Y)6eH)8z;W{P1;szD;B(G+Q$4F-e(^VpH2KHTKDKPrS5TA z!nVzv4;wG$be#ZipA|E&gDy(s`V9lycRXx9&fd$|I$Y1Ji`WA+yY}6F%Y(J+!=jD5 zD~t0nZ5#DZStmriHXrx<bSABOTTZ0-;dVK z*&$i`4LW37i*L*zeVtiGiu>c+BX&=wPxU4{TSCV#IhK3iSKuq;(z+AzzENd%SsG$~ zwN%~dv%YIQ-gQ9=7k0ds$E1f|#z!mr@{!r_-EUuIj=D7Ga1ZbNJO%6K z^M;lf_i)T8KoShtnEwnp;Q=89JZG*|pUNtU|GH`kC+8_>H=xUT|ws6H4#YrCBf3 zpq_ft$Es;zj~UaK{@4(yZWXQ8L8mSXeOdOM{HyrT_WfwPt`71ov@M=lirVr?f1VGp zEj8AZw;ZcJVX27TdlDbntEYcseA9e;1Iy2y&7ZQhVe0v%^HXc~OxNQ_Wj-1gSJRvE z4fuMc(fR*naykCD8(Txk)C`JV($2)xgFu^s;Mb1mLeVQ*dYS$w2}Q3?pv_3YOu+b? zsbp{O@|(%_+l118YM9yoO8>Fp|B*xpw0VTs8HB}{I7P)o*x7z9j<6_$sF)y|FdGv) zryx5cJ1ZZ-|5@d?9~o0S^Iv<*!t~#q)&D;%3h5%ZJgOo_=$`!*CZcFyQ3T#F_BNuT zphDNat^jCPAdyFOPUQR$0yQ@Sqsgd-vPOo6#w&Gp|harV4{4cWBpR zJj5R!t;I(Q;M4}B|Ac`*y8c2^Mg39h-J#Nem8}QMG^DK#rm7Byodd!)q_$CW>3LSv zHsEfi5(C?^4c4s}zN6W^3SnEVN&nip3iPd4zpL2R<-WO$=LEowdLyL245#BLfBjm} zC4cNAtl&DS#rE2(|HplB4S^G0wD79#KDvvNolt7EnRB@JjW{ci_jnzSE;p#j0e-TF zrxOtE0QqhR0Jg`Z6IjInGPn?~iO)s!^?BeTTX9yg=vvaFF2|mNN6)dP;>Eq|B7L@z zvREF~IxA;P_0G?=rFK_1dKMS;b|ZH{<=65X9$z!VAyZ*Z^@OFu={UM9vS1uW_IZv) z2oxiAs@z13l$k0+aXd!KOvOp{$Ypfje{cHZ75oxdDEoiE9GzVZom@PAmsBVwPIe9s NPAF1RQF$?_{|m26U)%ry literal 0 HcmV?d00001 diff --git a/Computergrafik - Cheatsheet.tex b/Computergrafik - Cheatsheet.tex new file mode 100644 index 0000000..135a4b9 --- /dev/null +++ b/Computergrafik - Cheatsheet.tex @@ -0,0 +1,1843 @@ +\documentclass[10pt,landscape]{article} +\usepackage[ngerman]{babel} +\usepackage{multicol} +\usepackage{calc} +\usepackage{ifthen} +\usepackage[landscape]{geometry} +\usepackage{amsmath,amsthm,amsfonts,amssymb} +\usepackage{color,graphicx,overpic} +\usepackage{hyperref} + +\pdfinfo{ + /Title (Computergrafik - Cheatsheet) + /Creator (TeX) + /Producer (pdfTeX 1.40.0) + /Author (Robert Jeutter) + /Subject () +} + +% This sets page margins to .5 inch if using letter paper, and to 1cm +% if using A4 paper. (This probably isn't strictly necessary.) +% If using another size paper, use default 1cm margins. +\ifthenelse{\lengthtest { \paperwidth = 11in}} + { \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} } + {\ifthenelse{ \lengthtest{ \paperwidth = 297mm}} + {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } + {\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} } + } + +% Turn off header and footer +\pagestyle{empty} + +% Redefine section commands to use less space +\makeatletter +\renewcommand{\section}{\@startsection{section}{1}{0mm}% + {-1ex plus -.5ex minus -.2ex}% + {0.5ex plus .2ex}%x + {\normalfont\large\bfseries}} +\renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}% + {-1explus -.5ex minus -.2ex}% + {0.5ex plus .2ex}% + {\normalfont\normalsize\bfseries}} +\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}% + {-1ex plus -.5ex minus -.2ex}% + {1ex plus .2ex}% + {\normalfont\small\bfseries}} +\makeatother + +% Define BibTeX command +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +% Don't print section numbers +\setcounter{secnumdepth}{0} + + +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt plus 0.5ex} + +%My Environments +\newtheorem{example}[section]{Example} +% ----------------------------------------------------------------------- + +\begin{document} +\raggedright +\footnotesize +\begin{multicols}{3} + + +% multicol parameters +% These lengths are set only within the two main columns +%\setlength{\columnseprule}{0.25pt} +\setlength{\premulticols}{1pt} +\setlength{\postmulticols}{1pt} +\setlength{\multicolsep}{1pt} +\setlength{\columnsep}{2pt} + +\section{Mathematik} + +Vektor $\vec{x}=(x_1,x_2,...,x_n)$ + +Multiplikation $\alpha * \vec{x} = (\alpha *x_1, \alpha *x_2,...)$ + +Addition $\vec{x}+\vec{r}=(x_1+r_1, x_2+r_2,...)$ + +Linearkombination $\vec{o} = (\alpha * \vec{p})+(\beta *\vec{q})+(\gamma * \vec{r})$ + +Länge: $\vec{p}=(x,y,z): |\vec{p}|=\sqrt{x^2+y^2+z^2}$ + +Skalarprodukt: $\vec{x}*\vec{r}=\sum_{i=0}^{n-1} x_i*r_i$ + +Winkel $\vec{a}*\vec{b}=|\vec{a}|*|\vec{b}|*cos(\phi)$ mit $cos(\phi)=\frac{\vec{a}*\vec{b}}{|\vec{a}|*|\vec{b}|}$ + +Vektorprodukt (Kreuzprodukt) $\vec{a}\times\vec{b} = \begin{pmatrix} a_y b_z - a_z b_y \\ a_z b_x - a_x b_z \\ a_x b_y - a_y b_x \end{pmatrix}$ + +Ebenen: $p=\vec{q}+\alpha*\vec{r}+\beta * \vec{s}$ + +Dreieck $\vec{A}+\alpha*(B-A)+\beta*(C-A)$ + +\paragraph*{2D Transformation} +\begin{description} + \item[Translation] um den Vektor $\vec{t}$ + \item[Skalierung] Stauchung oder Streckung + \item[Spiegelung] + \begin{itemize} + \item an der x-Achse $S=\begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}$ (Vorzeichenumkehr für y-Koordinaten) + \item an der y-Achse $S=\begin{pmatrix} -1 & 0 \\ 0 & 1 \end{pmatrix}$ (Vorzeichenumkehr für x-Koordinaten) + \item am Ursprung $S=\begin{pmatrix} -1 & 0 \\ 0 & -1 \end{pmatrix}$ (entspricht Spiegelung an x-und y-Achse) + \end{itemize} + \item[Scherung] $S=\begin{pmatrix} 1 & S_x \\ S_y & 1 \end{pmatrix}$ + \item[Rotation mit Polarkoordinaten] $P'=(r,\phi+\theta)$; $\binom{x'}{y'}=\begin{pmatrix} cos(\theta) & -sin(\theta) \\ sin(\theta) & cos(\theta)\end{pmatrix}*\binom{x}{y}$ + \item[Koordinatentransformation] $$P' =T*P = \begin{pmatrix} x_x & x_y\\ y_x & y_y \end{pmatrix} * \binom{P_x}{P_y}$$ +\end{description} +Viele zweidimensionale Transformationen lassen sich als 2x2 Matrizen darstellen (ausnahme Translation). + +\paragraph*{Homogene Vektorräume} +Vektorraum mit zusätzlicher Dimension w, als 3-Tupel $(x,y,w)$. +Entspricht dem kartesischen Vektor $(\frac{x}{w},\frac{y}{w})$. +oft $w=1$ gewählt (1="Punkt", 0="Richtung"; kartesische Zahlenebene). + +Skalierung, Projektion, Spiegelung: +$\begin{pmatrix} F_x & 0 & 0 \\ 0 & F_y & 0 \\ 0 & 0 & 1 \end{pmatrix} * \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} F_x*x \\ F_y*y \\ 1 \end{pmatrix}$ + +Für Skalierung gilt $F_x,F_y>0$, für uniforme Skalierung gilt zusätzlich $F_X=F_y$. + +Mit $F_x=0$ oder $F_y=0$ kann eine Projektion auf die y-, bzw x-Achse ausgedrückt werden. + +$F_x=-1$ oder $F_y=-1$ entspricht einer Spiegelung an der y- bzw x-Achse. Sind beide Faktoren $F_x=F_y=-1$, wird damit eine Spiegelung am Ursprung ausgedrückt. + +Scherung: +$\begin{pmatrix} 1 & a & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} * \begin{pmatrix} x \\ y \\ w \end{pmatrix} = \begin{pmatrix} x+a*y \\ y \\ w \end{pmatrix}$ + +Rotation: +$R_\theta *P= \begin{pmatrix}cos(\theta) & -sin(\theta) & 0 \\ sin(\theta) & cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} * \begin{pmatrix}x & y & 1 \end{pmatrix} = \begin{pmatrix} x cos(\theta) - y sind(\theta)\\ x sin(\theta)+y cos(\theta)\\ 1 \end{pmatrix}$ + + +\paragraph*{2D Transformation mit Fixpunkten} +Operation aus bekannten Operationen zusammengesetzt +\begin{itemize} + \item verschiebe von P in den Ursprung (Translation $T_{-P}$) + \item rotiere um Ursprung ($R_{90}$) + \item Translation zurück ($T_{+P}$) + \item In Matrixform sieht die Operation wie folgt aus: $T_{+P}*R_{90}*T_{+P}*{Objekt}$ +\end{itemize} + +\paragraph*{Invertierung} +\begin{itemize} + \item Transformation $T_{\Delta x, \Delta y}^{-1} = T_{-\Delta x, -\Delta y}$ + \item Skalierung $S_{F_x, F_y}^{-1}=S_{\frac{1}{F_x},\frac{1}{F_y}}=\begin{pmatrix} \frac{1}{F_x} &0&0\\ 0&\frac{1}{F_y}&0\\ 0&0&1 \end{pmatrix}$ + \item Rotation $R_{-\theta} = \begin{pmatrix} cos(\theta) & sin(\theta) & 0 \\ -sin(\theta) & cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} = R_{\theta}^{T}$ + \item Verknüpfungen $(A*B*C)^{-1}=C^{-1}*B^{-1}*A^{-1}$ +\end{itemize} + +\paragraph{Affine Abbildung} +$$\begin{pmatrix}a_1 & b_1 & c_1\\a_2 &b_2 & c_2\\ 0&0&1\end{pmatrix}*\begin{pmatrix} x_1\\y_1\\1\end{pmatrix}= \begin{pmatrix}x_1'\\y_1'\\1 \end{pmatrix}$$ +\begin{itemize} + \item die letzte Zeile der affinen Matrix bleibt immer 0,0,1 + \item paralleles bleibt bei affinen Abbildungen stets parallel +\end{itemize} + +\subsection{ Homogene Transformation in 3D} +werden durch eine 4-dimensionale homogeen Vektorraum repräsentiert + +\paragraph{Ebenen} +sinnvoll: (a,b,c,d) wobei (a,b,c)=(nx,ny,nz) und d der Abstand der Ebene zum Ursprung +\begin{itemize} + \item Ebene definiert durch 3 Punkte + $$\begin{pmatrix} + x_1 & x_2 & x_3 & 0\\ + y_1 & y_2 & y_3 & 0\\ + z_1 & z_2 & z_3 & 0\\ + 1 & 1 & 1 & 1 + \end{pmatrix}$$ + \item Translation um Vektor $(\Delta x, \Delta y,\Delta z)$ + $$\begin{pmatrix} + 1 & 0 & 0 & \Delta x\\ + 0 & 1 & 0 & \Delta y\\ + 0 & 0 & 1 & \Delta z\\ + 0 & 0 & 0 & 1 + \end{pmatrix}$$ + \item Skalierung um Faktor $F_x,F_y,F_z$ + $$\begin{pmatrix} + F_y & 0 & 0 & 0\\ + 0 & F_y & 0 & 0\\ + 0 & 0 & F_z & 0\\ + 0 & 0 & 0 & 1 + \end{pmatrix}$$ + \item Rotation um z-Achse + $$\begin{pmatrix} + cos(\theta) & -sin(\theta) & 0 & 0\\ + sin(\theta) & \cos(\theta) & 0 & 0\\ + 0 & 0 & 1 & 0\\ + 0 & 0 & 0 & 1 + \end{pmatrix}$$ + \item Rotation um die x-Achse + $$\begin{pmatrix} + 1 & 0 & 0 & 0\\ + 0 & cos(\theta) & -sin(\theta) & 0\\ + 0 & sin(\theta) & cos(\theta) & 0\\ + 0 & 0 & 0 & 1 + \end{pmatrix}$$ + \item Rotation um die y-Achse + $$\begin{pmatrix} + cos(\theta) & 0 & sin(\theta) & 0\\ + 0 & 1 & 0 & 0\\ + -sin(\theta) & 0 & cos(\theta) & 0\\ + 0 & 0 & 0 & 1 + \end{pmatrix}$$ + \end{itemize} + +\paragraph{Kameratransformation} +Kamera ist definiert durch +\begin{itemize} + \item Lage des Augpunktes E (in Weltkoordinaten) + \item Blickrichtung D + \item Oben-Vektor U ("view up vector", senkrecht zu D) +\end{itemize} + +\subsection{Projektion} +\paragraph{Orthogonale Projektion} +\begin{itemize} + \item Projektionsebene ist parallel zur XY Ebene + \item Projektionsrichtung stets parallel zur z-Achse (rechtwinklig zur Projektionsebene) + \item z Koordinaten werden auf gleichen Wert gesetzten +\end{itemize} + +\paragraph{Schiefwinklige Parallelprojektion} +\begin{itemize} + \item typische Parallelprojektion mit 2 Parametern + \item Projektionsebene ist parallel zur XY Ebene + \item Projektionsrichtung hat zwei Freiheitsgrade und ist typischerweise nicht orthogonal zur Projektionsebene + \item Projektionsrichtung (Schiefe) ist über 2 Winkel parametrisierbar + \item Herleitung $P=\begin{pmatrix} + 1 & 0 & -cos(\alpha)*f & 0 \\ + 0 & 1 & -sin(\alpha)*f & 0 \\ + 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 + \end{pmatrix}$ + \item es gilt: $x'=x-cos(\alpha)*f*z$ und $y'=y-sin(\alpha)*f*z$ +\end{itemize} + +\paragraph{Zentralperspektive} +\begin{itemize} + \item entspricht einer Lochkamera bzw etwa dem "einäugigen" Sehen + \item Augpunkt im Ursprung des Kamerakoordinatensystems + \item Projektionsfläche ist eine Ebene parallel zu XY Ebene + \item Eigenschaften + \begin{itemize} + \item perspektivische Verkürzung + \item parallele Linien des Objekts fluchten oft in einen Fluchtpunkt + \end{itemize} +\end{itemize} +$$\begin{pmatrix} d&0&0&0\\ 0&d&0&0 \\ 0&0&0&1 \\ 0&0&1&0 \end{pmatrix} * \begin{pmatrix}x\\y\\z\\1\end{pmatrix} = \begin{pmatrix} d*x\\ d*y\\ 1 \\ z \end{pmatrix} \rightarrow \begin{pmatrix} \frac{d*x}{z} \\ \frac{d*y}{z} \\ \frac{1}{z} \end{pmatrix}$$ + +\paragraph{Fluchtpunkte} +\begin{itemize} + \item hat ein Modell parallele Kanten oder parallele Striche in Texturen, dann ergibt sich für jede solche Richtung r in der Abbildung ein Fluchtpunkt, auf den diese parallelen Kanten/Striche hinzu zu laufen scheinen + \item es gibt jedoch Ausnahmen, bei denen Paralleles in der Abbildung Parallel bleibt (z.B. horizontale Kanten der Schwellen in der Abbildung) + \item Da es beliebig viele Richtungen geben kann, sind auch beliebig viele Fluchtpunkte in einem Bild möglich + \item Rotationen können Fluchtpunkte ändern, Translationen jedoch nichtbrechender + \item Ermittlung: aus Richtung r und Augpunkt eine Gerade, dann schneidet diese Gerade die Projektionsfläche im Fliuchtpunkt für die Richtung r. + \end{itemize} + +\section{Modellierung} +\subsection{Geometrische Modellierung} +computergestütze Beschreibung der Form geometrischer Objekte + +\paragraph{Boundary Representation (B-Rep)} +\begin{itemize} + \item Beschreibung durch die festlegung begrenzender Oberflächen + \item Darstellungsform eines Flächen- oder Volumenmodells + \item beschreibt Objekt durch begrenzende Oberflächen + \item sind schnell verarbeitbar + \item Definition eines Ojekts erfolgt über einen vef-Graph (vertex, edge, face) + \begin{itemize} + \item Knotenliste: beinhaltet Koordinatenpunkt + \item Kantenliste: für jede Kante werden zwei Punkte referenziert + \item Flächenliste: für jede Fläche wird Reihenfolge von Kanten angegeben + \end{itemize} +\end{itemize} + +\subsection{Szenengraph} +\begin{itemize} + \item Szene: dreidimensionale Beschreibung von Objekten, Lichtquellen und Materialeigenschaften mit virtuellen Betrachter + \item Szenegraph: hierarchische Gruppierung der Objekte in einer Szene +\end{itemize} + +\subsection{Rendering} +Render-Pipeline: Geometrisches Objekt-> Transformieren-> Vertex Shader-> Raster Konvertierung-> Fragment Shader-> Ausgabebild + +\paragraph{Vertex Shader} +\begin{itemize} + \item verarbeitet alle Eckpunkte (Vertices) mit Shader + \item ermöglicht eine Beeinflussung der Objektform + \item Transformation der 3D Position auf 2D Koordinaten für Bildschirm + \item Input + \begin{itemize} + \item Vertices relevanter Objekte der Szene + \item gewünschte Transformation + \end{itemize} + \item Output + \begin{itemize} + \item auf Bildschirm projizierte 2D Koordinaten + \item zugehörige Tiefeninformationen + \end{itemize} +\end{itemize} + +\paragraph{Model View Projection} +\begin{itemize} + \item Gegeben + \begin{itemize} + \item Modell als Vertices mit kartesischen 3D koordinaten und definierten Dreiecken + \item Kamera (3D Position, Ausrichtung) welche das Modell betrachtet + \end{itemize} + \item Umsetzung + \begin{itemize} + \item $M=T*R*S$ zuerst Transformation von Modellraum (gegebenen Koordinaten) in Weltkoordinaten (Model) + \item $V=T_V^{-1}*R_V^{-1}$ danach Transformation in Kameraraum, für einfachere Projektion (View) + \item abschließende projektion auf Kamerabildebene und Umrechnung in Bildraum (Projektion) + \end{itemize} + \item Ergebnis + \begin{itemize} + \item Model-View-Projektion-Matrix $P*V*M=MVP_{Matrix}$ + \item Anwendung der MVP ergibt Bildraumprojektion des Modells $p'_m=P*V*M*p_m$ + \item MVP-Matrix nur einmal berechnet + \end{itemize} +\end{itemize} + +\subsection{ Effiziente geometrische Algorithmen und Datenstrukturen} +\paragraph{Bintree} +- effizientes Suchen und Einfügen in eindimensionale Domänen +- logarithmische Komplexität pro Zugriff möglich +- Gefahr: lineare Komplexität, wenn nicht balanciert + +analog zu Quad- und Octrees: +- typisch ost Teilung in Mitte (bisektion) +- Bereiche mit homogenem Inhalt (gleiche Farbe/ keine Elemente) werden nicht weiter unterteilt +- Komprimierungseffekt + +%\paragraph{Quadtree +- eine (meist quadratische) Fläche kann bei Bedarf in vier gleichgroße Quadranten unterteilt werden +- Bedarf entsteht, wenn die Fläche keine homogenen Eigenschaften aufweist (z.B. bei unterschiedlich gefärbten Pixeln). D.h. Flächen (bzw Quadranten) werden solange unterteilt, bis sie homogen sind +- Anwendung + - Geometrische 2D Objekte können in hierarischische Struktur einsortiert werden, wodurch die räumliche Suche nach diesen Objekten beschleunigt wird + - Effiziente Speicherung von Rasterbildern wird möglich (Komprimierung, da nur strukturierte Bereiche unterteilt werden) + + +%\paragraph{Octree +Jeder Knoten hat 0 oder 8 Kindknoten. Damit wird bei Bedarf ein 3D Bereich in 8 Unterbereiche unterteilt. Geometrische Objekte (z.B. 3D Punkte) können in diese hierarchische Strukturen einsortiert werden, wodurch die räumliche Suche nach diesen Punkten beschleunigt wird. + +Beispiel Punktsuche:\\ +Suche einen Punkt mit Koordinaten (x,y,z) im Octree. Rekursive Suche von der Wurzel. In jedem Schritt wird einer von 8 möglichen Pfaden im Teilbaum ausgewählt -> Zeitaufwand Tiefe des Baumes O(log n) + +%\paragraph{KD Tree +- mehrdimensionaler binärer Baum (k-dimensional) +- unterteilt z.B. abwechselnd in x-,y-, und z-Richtung (deshalb binärer Baum) +- Teilung nicht zwangsläufig mittig (wie bei Octre) -> an Daten angepasst +- jeder neue Punkt teilt den Bereich in dem er einsortiert wird; pro Hierarchiestufe stets wechsel der Teilungsrichtung +- ein Octree lässt sich auf einen kd-Baum abbilden, beide Baumarten haben daher vergleichbare Eigenschaften + +KD-Baum mit der Median-Cut Strategie:\\ +Der Median-Cut teilt Daten in zwei gleich großen Hälften. Damit wird der Baum garantiert balanciert und die tiefe wird minimal. Damit wird das O(log n) Verhalten garantiert. Probleme können bei lokalen Häufungen (Cluster) auftreten. Die Mediancut Strategie bewirkt eine degenerierte globale Teilung des Gesamtraumes aufgrund von lokalen Situationen. Dies wirkt sich ungünstig bei der Suche weit weg vom Cluster aus +- vollständig balanciert +- unnötige Unterteilung weit weg vom Cluster (Artefakt) + +Vergleich Middlecut-Strategie: +- nicht balanciert +- keine Unterteilung weit weg vom Cluster + +Praxis: Kompromiss Strategie, Mischung zwischen Median und Mitte. Bei Situations-Analyse: Explizite Abkapselung des Clusters. Außerdem: In (2D, 3D) kann man natürlich das strikt zyklische Abwechseln der Achsen aufgeben und bei fast ebenen/linearen Strukturen lokal nur noch in zwei bzw 1 Richtung(en) unterteilen! + +%\paragraph{BSP Tree +Verallgemeinerung des kd-Baums. Trennebenen sind nicht nur achsenparallel. Unterteilung in beliebigen Richtungen, adaptiv an Modellflächen angepasst. + +Beachte: Trennebenen die an einer Objektebene anliegen können dennoch weiter wegliegende Objekte schneiden. + +BSP-Tree führt bei konvexen Polyedern zu entarteten Bäumen + +%\paragraph{Hüllkörper Hierarchie +%#%\paragraph{AABB (Axia-Aligned-Bounding-Box) +sehr einfache Abfrage (nur ein Vergleich < in jeder Koordinatenrichtung, wie bei kd-Baum) einfach zu erstellen (min, max), dafür nicht optimale Packungsdichte bei schräger Lage der Objekte. + +%#%\paragraph{OBB (Oriented Bounding Boxes) +passen sich besser der räumlichen Ausrichtungen an, lassen sich auch leicht transformieren (Rotation bei Animation). Jedoch schwieriger zu erstellen (Wahl der Richtung), komplexere Überlappungsberechnung (Transformation, Ebenengleichung). +D.h. OBB-trees werden typischerweise weniger tief, weniger räumliche Abfragen dafür wesentlich mehr Berechnungsaufwand pro Rekursionsstufe. + +%#%\paragraph{KDOP (k-dimensional Discretly Oriented Polytopes) +Polyeder mit festen vorgegebenen Richtungen (z.B. 45 Grad). Eigenschaften zwischen AABB und OBB. Bessere Raumausnützung als AABB, weniger Transformationene als OBB. + +%#%\paragraph{BS (Bounding Spheres) +Schnelle 3D Überlappungstest (Abstand der Mittelpunkte < Summe der Radien). Langgezogene Objekte können mit mehreren Hüllkugeln (Bounding Spheres) begrenz werden um besseren Füllgrad zu erreichen. BS sind bis auf die Lage der Kugelmittelpunkte invariant gegenüber Rotation (eignen sich für Kollisionserkennung bewegter Objekte/ Echtzeit-Computer-Animation). + +%#%\paragraph{weitere Anwendungsfälle +- Kollisionserkennung in Computeranmiation (Computerspiele). Reduktion der potenziellen Kollisionspaare durch räumliche Trennung +- Beschleunigung des Echtzeitrenderings großer Datenmengen. Reduktion des Aufwands durch Culling (Weglassen) + +%\paragraph{Ray Picking mit KD Baum +Raytracing/Strahlverfolgung, Ray picking mit KD-Baum: Vorverarbeitun, abspeicherung von Objekten (Dreiecken) im kd-Baum O(n log n) + +Strahl/Objektschnitt: (als rekursive Suche im kd-Baum) + +treeIntersect(p,d): Findet Schnittpunkt des Strahls (Punkt p, Richtung d) mit den im Baum gepseicherten Dreiecken und liefert die Beschreibung des nächsten Schnittpunktes bzw t=unendlich, falls kein Schnittpunkt existiert. + +triangleIntersect(node,p,d): Findet Schnittpunkt des Strahles (Punkt p, Richtung d) mit einer Menge von Dreiecken in node + +subdivide(node, p, d, tmin, tmax): Findet rekursiv den nächstgelegenen Schnittpunkt (kleinstes t) des Strahls (p,d) mit den Dreiecken in oder unterhalb von node im Parameterbereich tmin ...tmax + +%\paragraph{Aufwandsabschätzung bzgl Dreiecksanzahl +Komplexität Strahl Objektschnitt (Extremfälle + typischer Fall) +1. Extremfall (beinahe) kovexes Objekt (max 2 Schnitte möglich) + - hat ca die Komplexität einer räumlichen Punktsuche, also dem Aufwand zur Untersuchung einer Baumzelle (finden + dortige Dreiecke testen) O(log n) +2. Extremfall "Polygonnebel" (viele sehr kleine Dreiecke im Such-Volumen) + - Annahme: alle Zellen enthalten konstante kleine Anzahl von Dreiecken -> Aufwand proportional zur Anzahl durchlaufener Baumzellen + - Anzahl dieser Zellen ist proportional zur Länge des Strahls durchs Volumen, da der 1. Schnitt sehr wahrscheinlich mitten im Volumen oder gar nicht stattfindet -> Anzahl ist proportional zur Seitenlänge des Suchvolumens + - bei n Dreiecken im Suchvolumen ist die Anzahl t der zu untersuchenden Zellen also ca $t=O(\sqrt{n})$ -> Suchaufwand pro Strahl folglich $O(\sqrt{n} log (n))$ + +typische Szene: Suchaufwand fast immer wesentlich besser als O(n). Aufwand oft zwischen beiden extremen, bei mittlerer Dichte sogar eher O(log n). + +%\paragraph{Aufwandsabschätzung in fps +Effektiver Zeitauwand für Raytracing (RT): +- absoluter Gesamtaufwand zum Raytracing einer Szene (z.B. in ms) ist (auch) proportional zur Anzahl der Strahlen +- Annahme: 1 Strahl pro Pixel (keine Rekursion), typische Bildgröße sei 1 Mio Pixel, Szene haben mittlere Komplexität (1 Mio Polygone) +- Performancebeispiel: + - Stand 2006, PC mit 1 CPU ca 1 Mio Strahlen/Sek -> 1 fps + - Stand 2019, PC mit "RTX 2080 Sup23" ca 10 Giga Strahlen/Sek -> 10000 fps +- rekursives RT (Reflexion, Brechung, Schattenstrahlen etc) entsprechend mehr Strahlen, d.h. weniger Performance +- Parallelisierung einfach möglich (z.B. da Pixel voneinander unabhängig berechenbar) -> früher CPU-basiert, heute eher GPU +- 2019 mit entsprechender Hardware: rekursives Echtzeit Raytracing möglich + +%\paragraph{Heurisitk zur Unterteilung +Surface Area Heuristic (SAH): +- Annahme: Strahl i, trifft Zelle j mit Wahrscheinlichkeit P(i,j), zudem sei $n_j$ die Anzahl Dreiecke in Zelle j, +- Aufwand für Raytracing pro Zelle proportional zur Baumtiefe ( O(log n) für balancierte Bäume, wird nicht weiter betrachtet) sowie die Anzahl der dortigen Dreiecke $n_j$; beachte $n_j$ wird hier nicht als konstant angenommen -> Gesamtaufwand für Strahl i sei also $\sum(P(i,j)*n_j)$ + +Heuristik: große Zellen mit wenigen Dreiecken, senken Gesamtaufwand +- Schätzung: P(i,j) ist etwa proportional zur Oberfläche einer Zelle (auf großer Oberfläche treffen mehr Strahlen auf) +- die SAH optimiert auf jeder Teilstufe im Baum das Produkt der Zellgröße mal Anzahl Dreiecke im Teilbaum. Für den kD-Baum gilt bei der Unterteilung des Bereichs D in Richtung k: $D_k = D_{k_links} + D_{k_rechts}$ + +Bei ungleicher Verteilung der Dreiecke (z.B. Cluster) enthalten dann große Zellen wenige oder keine Dreiecke und Baum ist nicht balanciert -> implizite Abtrennung des Clusters vom Rest des Baums (vgl Middle-Cut-Strategie) + +%\paragraph{Behandlung ausgedehnter Objekte +Problematik: Abspeicherung ausgedehnter Objekte + +Punkte haben keine Ausdehnung und können an einem eindeutigen Ort im kD-Baum abgelegt sein. Ausgedehnte Objekte (Kreise, Kugeln, Rechtecke, Dreiecke, Hüllquader, etc) können räumlich mehrere Blatt-Zellen überlappen. Ein solches Objekt müsste dann in mehreren Blattzellen einsortiert sein. + +1. Ansatz: Auftrennung von Objekten, d.h. Objekte müssen an der Zellgrenze aufgeteilt werden. Einsortierung der Teilobjekte in passende Zellen. Geht gut für Dreiecke +2. Ansatz: Keine Unterscheidung zwischen Blattknoten und inneren Knoten. In diesem Ansatz werden Objekte soweit oben im Baum einsortiert, dass sie keine Zellgrenze schneiden. Nachteil: auch relativ kleine Objekte müssen in große Zellen einsortiert werden, wenn sie deren Unterteilungsgrenze schneiden +3. Ansatz: Loose Octree (überlappende Zellen): die Zellen des Octrees werden so vergrößert, dass sie mit ihren direkten Nachbarn in jeder Richtung um 50% überlappen. Objekte, die im einfachen Octree aufgrund ihrer Größe Grenzen schneiden würden, können im Loose Octree in den Zwischenknoten gespeichert werden. Ein Objekt mit Durchmesser bis zu $\frac{D}{2^L}$ kann auf der Ebene L abgelegt werden. Eine Suche im Loose Octree muss daher außer der direkt betroffenen Zelle auch die überlappenden direkten Nachbarn berücksichtigen. Dadurch vergrößert sich der Aufwand einer Suche um einen konstantne Faktor. Beachte: Die asymptotosche Komplexität (O-Notation) ist dadurch nicht beeinflusst. + +%\section{Rastergrafik +%\subsection{ Rasterkonversion grafischer Objekte +Algorithmus zum Zeichnen einer Strecke:\\ +Endpunktkoordinaten sind nach Projektion in die Bildebene passend auf die Fensterkoordinaten skaliert und auf ganzzahlige Werte (Pixelkoordinaten) gerundet. + +%\subsection{ Midpoint Algorithmus +- von J. Bresenham 1965 bei IBM entwickelt +- Grundidee: Effizient durch Verwendung von Ganzzahlen, Vermeiden von Multiplikation/Division sowie Nutzung einer inkrementellen Arbeitsweise + +Die Linie geht zwischen den Endpunkten nicht durch ganzzahlige Gitterpunkte. Da nur ganzzahlige Pixel-Koordinaten gesetzt werden können müssten auch zwischenpunkte zuerst genau berechnet werden und dann auf ganzzahlige Pixelwerte gerundet werden. Dies ist unzuverlässig und ineffizient. Zur Herleitung des effizienten Bresenham-Algorithmus führen wir den Mittelpunkt M als Referenzpunkt ein. Fernser seinen der jeweils aktuellen Punkt P, der rechts von im liegende E (east) und der rechts oben liegende NE north-east) benannt. +- die Linie wird als Funktion $y=f(x)$ repräsentiert: $y=\frac{\delta y}{\delta x}*x+B$ +- in implizierter Form: $d: F(x,y)=\delta y*x-\delta x*y+B*\delta x = 0$ +- für Punkte aud der Linie wird $F(x,y)=0$ +- für Punkte unterhalb der Linie wird $F(x,y)>0$ +- für Punkte oberhalb der Linie wird $F(x,y)<0$ + +Herleitung mit Einschränkung:\\ +Steigung der Linie m ($1 < m < 1$), Mittelpunkt M = Punkt vertikal zwischen zwei möglichen Pixeln E und NE. Ausgehend von bereits gesetzten Pixel P auf der Linie für den nächsten Mittelpunkt M. Für gefundenen Mittelpunkt, berechne die Distanzfunktion d. Daraus Kriterium zur Wahl des nächsten Pixels: Falls $F(x_p + 1, y_p+\frac{1}{2})>0$ wird das nächste Pixel NE, andernfalls E. + +Insgesamt acht verschiedene Fälle: +1. Oktant($\delta y < \delta x$) +2. Oktant($\delta y > \delta x$) +3. Oktant($\frac{\delta y}{\delta x}< 0$) +4. Oktant($\frac{\delta y}{\delta x}< -1$) +5. -8. Oktant($\delta x < 0$) + +%\subsection{ Anti Aliasing +Effekte der Rasterisierung: Aliasing +- Treffenstufeneffekt bei gerasterten Linien +- Regelmäßigkeiten werden verstärkt vom Auge wahrgenommen + +Das Auflösungsvermögen des Auges für Punkte sei e. Strukturen wie Linien (bestehend aus vielen Punkten) werden durch Mittelwertbildung (Fitting) vom auge viel genauer als e lokalisiert. Eine Stufe wird umso eher erkannt, jelänger die angrenzenden Segmente sind. + +%\paragraph{Grundlagen +Grundidee des Anti-Aliasing +1. Original der Linie +2. Statt der Linie wird ein Rechteck mit der Breite von einem Pixel betrachtet +3. Graustufen der darunter liegenden Pixelflächen entsprechen dem jeweiligen Überdekckungsgrad + +Praktische Umsetzung mit vereinfachtem/effizienterem Algorithmus +1. Rasterkonvertierung der Linie bei doppelter örtlicher Auflösung (Supersampling) +2. Replizieren der Linie (vertikal und/oder horizontal) um Linienbreite näherungsweise zu erhalten +3. Bestimmmung des Überdeckungsgrades pro Pixel in der ursprünglichen Auflösung (Downsampling) +4. Bestimmung des Farbwertes entsprechend des Überdeckungsgrades + +Problem: +- Ausgabe von Linien/Polygonen auf Rastergeräten muss auf vorgegebenem Raster erfolgen +- Farbvariation ist zwar möglich, Farbberechnung muss aber effizient erfolgen + +Ohne Antialiasing: +- es erfolgt ein einfacher Test über die Pixelkoordinate +- verwendet Farbe in der Pixelmitte + +Ideales Antialiasing: Hat wegen der beliebig komplexen Geometrie allgemein einen sehr/zu hohen Aufwand! + +Ansatz für eine "reale Lösung" +- eine ideale Berechnung von Farbwerten nach dem Überdeckungsgrad ist allgemein beliebig aufwendig und daher praktisch irrelevant +- Gesucht werden Ansätze mit gut abschätzbarem/konstanten Aufwand +- "reales" Antialiasing beruht in der Regel auf der Verwendung von mehreren Samples pro Pixel, d.h. Berechnung dieser n Samples statt nur einem (typisch: n-facher Aufwand) + +%\paragraph{Supersampling + Downsampling +Beim Supersampling-Ansatz wird die Graphik zunächst in höherer Auflösung gerendert (z.B. 4-fach), und dann aus den Samples ein Farbwert gemittelt (z.B. per arithmetischem Mittel). +Wie wirksam ist das Antialiasing bei 4x-Supersampling +- Ohne Anti-Aliasing kommt pro Pixel genau eine Sampleposition zum Zuge. Das Pixel wird demnach gefärbt oder nicht gefärbt: Das sind zwei mögliche Stufen. +- Bei vier Subpixeln können minimal 0 und maximal 4 Subpixel im (Makro-)Pixel gesetzt sein, d.h. es sind Intensitäten von 0%, 25%, 50%, 75% oder 100% möglich (nur 5 Abstufungen)! +- Der Zusammenhang ist einfach: Es gibt immer eine Abstufung mehr als Subpixel pro Pixel. +- Beim idealen Antialiasing entsprechend Flächenbedeckungsgrad gibt es "beliebig" viele Abstufungen (aus Aufwandsgründen aber praktisch nicht relevant). +- Gibt es eine Formabhängigkeit? Ja, z.B. bei 45° gibt es z.B. nur eine Zwischenstufe, und zwar je nach Phasenlage mit 25% oder 75% → Kante "pumpt" bei Objektbewegung. + +%\paragraph{Supersampling + Rotated Grids +Minderung der Formabhängigkeit → Supersampling mit Rotated Grids +- Kleine Winkel zu den Achsen führen zu langen "Stufen" der digitalen Polygonkante +- Bessere Verhältnisse der Grauabstufung ergeben sich für flache Winkel, wenn statt des "ordered grid" ein "rotated grid" für das Supersampling verwendet wird. +- Rotated grids sind dafür bei anderen Winkeln etwas schlechter als das ordered grid. Dies wird aber kaum wahrgenommen, da dort die Treppen der digitalen Geraden kürzer sind. + +Vorteile: +- Gute Grauabstufung bei sehr flachen Kanten zur Zeilen- oder Spaltenrichtung. +- Optimaler Winkel liegt bei ca. 20 ◦ − 30 ◦ (z.B. arctan(0.5) ≈ 26, 6 ◦ ). +- Sehr dünne Linien (dünner als 1 Pixel) bleiben auch bei Bewegung zusammenhängend bzw. sichtbar (Vermeidung von "Line Popping"). + + +%\paragraph{Supersampling + Multisampling +Realisierung der Subpixelberechnung durch einen Superbackbuffer (Supersampling in entsprechend großem Buffer) oder mehrere Multisamplebuffer (Multisampling in mehrere Buffer der ursprünglichen Größe): +1. Superbackpuffer + - Nachteil (bei rotated grid): Anpassung der Rasterkonvertierung an verschobene Positionen erforderlich + - Vorteil: Verwendung von mehr Texturinformation (Textur wird subpixelgerecht eingetragen) +2. Multisamplebuffer + - Mehrfachrendering in normaler Größe mit leicht versetzter Geometrie (Vertexverschiebung pro Sub-Bild) + - Vorteil: keine Veränderung im Rendering + - Nachteil: nur ein Texturwert pro Makro-/Sub-Pixel + +Gezielter Ressourceneinsatz: +1. Kantenglättung: + - Effizienzsteigerung durch Beschränkung auf reine Kantenglättung möglich! + - Kanten vs. Flächen: Anzahl der Kantenpixel oft wesentlich kleiner als Anzahl der Flächenpixel + - Aliasing bei Kanten/Mustern in Texturen schon beim Auslesen der Werte aus der Pixeltextur unterdrückbar + - Kantenpixel bekannt als: separate Linien oder Berandung von Polygonen/Dreiecken +2. adaptives Samplen: + - statt feste Anzahl von Samples kann die Anzahl nach dem Bedarf gesteuert werden + +%\paragraph{Quincunx Verfahren +Quincunx → Überfilterung + +Ausgangspunkt ist das 2x Multisampling mit rotated grid! Entsprechend dem Grundprinzip des Anti-Aliasings sollen Aliasingartefakte durch Erzeugung höher aufgelöster Information reduziert werden. Bei dem vorausgesetzten Muster ist der Informationszuwachs durch die doppelte Anzahl von Samples gekennzeichnet, egal wie ausgewertet wird! + +Quincunx-Verfahren: +- Information für die Kantenglättung beruht nach wie vor auf 2 Subpixeln +- Entspricht einer zusätzlichen Tiefpass-Überfilterung. Durch die Unschärfe sehen Polygonkanten glatter aus. +- Harte Kanten sind gar nicht mehr möglich, dadurch wird auch "Zappeln" an Polygonrändern reduziert. +- Aber Nachteil: Texturinformation, die nur zu 2 Subpixeln gehört, wird verschmiert ! + +%\paragraph{Pseudozufälliges Supersampling +Kombinationen und Pseudozufälliges Supersampling: +- Grundsätzlich ist die Kombination von Supersampling, Multisampling und Quincunx möglich und einige Graphikkarten unterstützen solche Überlegungen in jeweils festgelegten Grenzen (ordered oder rotated grid, gemischtes Sampling, Downsampling-Ansatz). Der Gewinn hält sich bisher in Grenzen, bei unqualifiziertem Mix ergeben sich eher Nachteile. +- Bei Überwindung der für Füllrate und Bandbreite gegebenen Grenzen überwiegen die Vorteile des Supersamplings. +- Ordered grid und rotated grid weisen bei bestimmten Strukturklassen Vor- und Nachteile auf. Die verbleibenden Artefakte wiederholen sich bei großen Flächen, so dass derartige Muster vom Menschen oft als störend empfunden werden. → aus diesen und ähnlichen Überlegungen → Ansätze für die Weiterentwicklung: + - pseudozufällige Auswahl von Abtastmustern für das Supersampling + - nachträgliche Abminderung regelmäßiger Strukturen durch vorsichtiges Verrauschen (Rauschfilter) + - entfernungsabhängiges Antialiasing + +pseudozufällig: +- Samples können nur an n vordefinierten Positionen stattfinden (Sample-Positionsmuster). +- Je nach Methode werden daraus m Positionen für das Samplen zufällig ausgewählt (beachte: m < n) +- Anzahl der Muster als kombinatorisches Problem: m aus n (ohne Wiederholungen) + +%\paragraph{abschließende Betrachtung zum Downsampling: +Beim Anti-Aliasing zur Glättung von Polygonkanten kommt für das Downsampling die Mittelwertbildung in Frage (lineare Filterung (2x – AA), bilineare Filterung (4x – AA)), gleichgültig ob ordered oder rotated grid. Beim pseudozufälligen Supersampling ist entsprechend der "frei gewählten" Positionen der "Subpixel" zu modifizieren (z.B. Gewichte nach Abstand der Abfragepositionen zur Makropixelposition). + + +%\subsection{ Polygonfüllalgorithmus +Ansatz: +- finde die Pixel innerhalb des Polygons +- weise ihnen Farbe zu +- dabei zeilenweises Vorgehen, pro Rasterlinie: +- für jede Polygonkante: + - schneide die Polygonkante mit der aktuellen Bildzeile (→ $x_s$ ) + - füge Schnittpunkt $x_s$ in eine Liste ein +- sortiere Schnittpunkte der aktuellen Bildzeile in x-Richtung +- Paritätsregel: fülle die Pixel jeweils zwischen ungeradem und nächstem geraden Schnittpunkt (Pixel zwischen geraden und ungeraden Schnittpunkten aber nicht!) + +Beachte: Die Schnittpunkte in floating point zu berechnen und zu runden ist ineffizient. Wir suchen, ähnlich wie beim Bresenham-Algorithmus, einen inkrementellen Ansatz mit Ganzzahl-Arithmetik. + +Allgemeinere Sicht auf die Füll- bzw. Auswahlstrategie: Ein Pixel wird mit der Farbe des Polygons gefüllt, das sich rechts von ihm befindet. Sollte dort eine Kante sein, so wird die Farbe des oberen Polygons verwendet. +Grundsätzlich könnten beliebige Richtungen als Referenzrichtung zur Farbbestimmung gewählt werden. Dann müssten die zuvor besprochenen Regeln oder der gesamte Algorithmus entsprechend angepasst werden. + +Effiziente Ermittlung der Schnittpunkte von Polygonkante und Rasterzeile: +- Vorbetrachtungen: + - Polygonkanten werden stets von unten nach oben bearbeitet + - horizontale Polygonkanten müssen nicht bearbeitet werden (geschieht in Scanline) → im Algorithmus stets m ungleich 0 + - $d_y = y_1 - y_0$ ist stets positiv (auch nie 0) + - $d_x = x_1 - x_0$ kann positiv und negativ sein + - damit können 4 Bereiche unterschieden werden +- Idee + - Berechnung von x bzw y: $y=y_0+m(x-x_0)$,$y=y_0+\frac{y_1-y_0}{x_1-x_0}(x-x_0)$,$x=x_0+\frac{1}{m}(y-y_0)$, $x=x_0+\frac{x_1-x_0}{y_1-y_0}(y-y_0)$ + - Zwar sind die x- bzw. y-Werte immer noch nicht ganzzahlig, jedoch können sie als rationale Zahlen explizit mit Zähler und Nenner repräsentiert werden. + - Die Rundung (nächstes x oder y erreicht?) kann inkrementell ermittelt werden. + - Die Rundungsregel für Bruchwerte hängt davon ab, ob es eine linke oder rechte Kante ist. Links wird z.B. aufgerundet (Pixel ist auf oder rechts v. der Kante). + + +Edge-Tabelle: +- Verkettete Liste (oder Array, siehe unten) für die nicht horizontalen Kanten. +- Sortierung nach der Scan-Line, wo die Kanten beginnen (unteres Ende, $y_0$ ). +- Innerhalb der Scan-Line wiederum Liste (nach $x_0$-Werten sortiert). Je nach Implementierung werden z.B. $x_0 , y_1$ , sowie Zähler und Nenner gespeichert. + +Active-Edge-Tabelle: +- Die AET speichert alle Kanten, die die gegenwärtige Scan-Linie schneiden. +- Die Liste hat die gleiche Struktur wie eine Zeile der ET. +- Die Kanten werden gelöscht, wenn das obere Ende der Kante erreicht ist. + +Bemerkung zu Scan Convert Polygon: +1. Es existiert immer eine gerade Anzahl Kanten. Bei konvexen Polygonen sind immer null oder zwei Kanten in der AET. Die Sortierung ist dadurch trivial bzw. entfällt bei konvexen Polygonen. Bei vielen Grafikbibliotheken (z.B. OpenGL) beschränkt man sich auf konvexe Polygone. Nichtkonvexe Polygone müssen daher vorher in konvexe Komponenten zerlegt werden. Dafür ist das Füllen dieser Polygone danach effizienter. +2. Dieser Teil entspricht einem Schleifendurchlauf der Prozedur EdgeScan. Die Unterscheidung zwischen linker und rechter Kante wird beim Auffüllen der Pixel gemacht. + +Bemerkungen zur Effizienz:\\ +Der Polygonfüllalgorithmus ist zentraler Bestandteil jeder Grafikbibliothek für Rastergrafik. Für Echtzeitanwendungen ist Effizienz essentiell. Ein Polygon belegt +meistens viel mehr Pixel als es Eckpunkte bzw. Kanten besitzt. Deshalb sind effiziente per-Pixel-Operationen besonders wichtig. Der Rechenaufwand sollte folglich möglichst vermieden werden (mit fallender Priorität): +- pro Pixel (Annahme: sehr häufig auszuführen, deshalb möglichst effizient) +- pro Rasterzeile +- pro Kante (hier sollte möglichst viel vorberechnet werden, um pro Rasterzeile bzw. Pixel Rechenzeit zu sparen) +Neben der reinen Rasterisierung des Polygons existieren Erweiterungen des inkrementellen Ansatzes für effiziente Berechnungen in der 3D-Grafik, z.B.: +- Füllen des Z-Buffers (Tiefenwertberechnung) +- lineare Interpolation beim Gouraud Shading (Farbwertberechnungen) + +%\paragraph{Füllmuster +Füllen eines Polygons mit einem Pattern statt mit einem konstanten Farbwert +- benutze dazu BITMAPs: + - 2-dimensionales Array + - besteht aus M Spalten und N Zeilen + - BITMAP = ARRAY [0 · · · M − 1, 0 · · · N − 1] + +Anwendung des Backsteinmusters bei einem Polygon: +```cpp +drawPoly(Polygon poly, Pattern pat){ + foreach pixelPosition x, y in poly + poly.set(x, y, pat[x mod pat.width, y mod pat.height]); +} +``` + +%\paragraph{Dithering +Grundidee: Ersetzen "genauer" Farbwerte durch grobe Quantisierung +- gegeben sei Tabelle (z.B. Lookup-Table) von im Output zulässigen Farben +- Durchlaufen aller Pixel (mit genauen Werten) beginnend links oben +- pro Pixel P die beste Ersetzung in Tabelle finden + setzen +- verursachten Fehler ∆ jeweils nach Schema auf unbearbeitete Nachbarpixel in der (noch) genauen Repräsentation verteilen + +bei kleinen Bildern mit hoher Auflösung ist Dithering kaum wahrnehmbar + +Dithering vs. Anti-Aliasing:\\ Anti-Aliasing und Dithering sind komplementär zueinander: +- Anti-Aliasing erhöht die empfundene räumlich Auflösung durch Anwendung von Zwischenwerten in der Grau-, bzw. Farbabstufung +- Dithering erhöht die Farbauflösung (verringert die empfundene Farbquantisierung) durch das Verteilen des Quantisierungsfehlers auf mehrere Pixel → Verringerung der räumlichen Auflösung. +- Beispiele zur Anwendung von Dithering: + - verlustbehaftete Bildkompression (z.B. GIF) + - Drucker (Halbtonverfahren) – benötigt eine feine Auflösung des Druckrasters + + +%\section{Farbräume +%\subsection{ Motivation +Wie (und wie gut) lässt sich der visuelle Eindruck der physischen Realität durch eine Bildanzeige technisch reproduzieren? Bzw durch Computergrafik simulieren? + +Ziel realistische Darstellung von Bildern: +- möglichst genaue Reproduktion von Farben und Helligkeitswerten (auf der Bildfläche) +- Ziel existiere schon bevor es Computergrafik gab (Photorealistische Malereien) + +Ziel der Computergrafik: +- die technische Realisierung eines digitalen Bildes mit Hilfe des Computers aufeinem Bildschirm oder Druck, +- dazu Herleitung einer systematischen Repräsentation des Bildes als mathematisches Modell, bzw in einer Datenstruktur sowie ihre physische Reproduktion + +%\subsection{ Farbwahrnehmung +Verschiedene Aspekte zum Verständnis des menschlichen visuellen Systems (Farbe, Helligkeit, Bild,...) +- Phänonmenologische Betrachtung: Hell- und Farbempfinden als Sinneseindruck beschreiben. Einiges kann dadurch bereits qualitativ erschlossen werden +- Phisiologie des menschlichen visuellen Systems: (Rezeptoren des Auges und neuronale Verschaltung) Dies hilft beim Verstehen der Wahrnehmung der physischen Realität und der Herleitung von exakten Farbraummodellen +- Physik: Licht als elektromagnetische Strahlung +- +%\paragraph{Phänomenologisch +- Tageslicht kann als weiß bzw grau mit unterschiedlichen Helligkeiten, jedoch unbunt (farblos) empfunden werden +- Abwesenheit von Licht wird als schwarz empfunden (zB Nachthimmel) +- Regenbogen wird als bunt mit verschiedenen Farbtönen empfunden: Rot, Orange, Gelb, Grün, Cyan, Blau, Violett,... + + +%\paragraph{Farbton +- Zwischen den grob unterscheidbaren Farbtönen des Regenbogens lassen sich zwischenstufen orten, welche eine praktisch stufenlose Farbpalette ergeben +- direkt nebeneinanderliegende Farben im Farbspektrum werden als ähnlich empfunden +- wieder andere Farben werden als sehr unterschiedlich empfunden +- mit dieser Beobachtung lassen sich Farbwerte ordnen (Dimensionen des Farbtons als eine der Dimensionen zur Beschreibung von Farbwerten) +- All diese Farben ist jedoch gemein, dass sie als sehr bunt empfunden werden (voll gesättigte Farben im Gegensatz zu Grautönen) + +%\paragraph{Farbsättigung +- Zwischen bunten Farben und Grau lassen sich Zwischenstufen finden +- Pastelltöne sind zwar weniger bunt aber nicht völlig farblos (Farbwerte sind noch unterscheidbar) +- Grauton (keine Farbwerte unterscheidbar) +- zu jedem einzelnen bunten Farbton können Abstufungen von Pastelltönen bis zum gänzlich unbunten Grau zugeordnet werden + - diese Abstufung nennen wir Sättigung der Farbe + - Links maximal gesättigte Farbe, rechts völlig ungesättigte Farbe (grau) +- In jeder Zeile wird der gesättigte Farbton als nicht prinzipiell anders als die zugehörige Pastellfarbe empfunden (aber weniger bunt) nur weniger gesättigt +- +%\paragraph{Helligkeitsstufen +- Zu jedem Farbton (gesättigt oder nicht) können unterschiedliche Helligkeitsabstufungen bis zum tiefen Schwarz zugeordnet werden + - links maximale Helligkeit, rechts dunkelster Wert (schwarz) + - in jeder Zeile werden die hellen Farbtöne als nicht prinzipiell anders als die zugehörigen dunkleren Farbtöne empfunden + - im schwarzen sind ebenfalls keine Farbtöne mehr unterscheidbar + +%\paragraph{Zusammenfassung +damit haben wir phänomenologisch drei unabhängige Richtungen identifiziert, die wir den Farbeindrücken zuordnen können: +- Farbton (Hue) +- Farbsättigung (Saturation) +- Helligkeit (Lightness) + +%\subsection{ Das Modell der Farben +> Definition DIN 5033: Farbe ist die Empfindung eines dem Auge strukturlos erscheinenden Teils eines Gesichtsfeldes, durch die sich dieser Teil bei einäugiger Beobachtung mit unbewegtem Auge von einem gleichzeitig gesehenem, ebenfalls strukturlos angrenzendem bezirk allein unterscheidet. +> Farbe (in unbunter Umgebung) ist durch Helligkeit, Buntton und Sättigung eindeutig bestimmt. Dieses oder ein ähnliches dreidimensionales (3D) Modell ist für das Verständnis der Farbe erforderlich + + +%\paragraph{HSL Farbraum +bzw HSB, HSV, HSI + +Mit den gewonnen Erkenntnissen wir der HSL Farbraum definiert: +- Farbton: **H**ue +- Sättigung: **S**aturation +- Helligkeit: **L**ightness/**B**rightness/**V**alue/**I**ntensity +Da sich die Dimension des Farbtons periodisch wiederholt wird das System oft als Winkelkoordinate eines Polarkooridnaten-Systems in der HS-Ebene, bzw dreidimensional als Zylinderkoordinaten HSl darstellt. + +Darstellungsformen: Die Darstellungsform des HSL Farbraums ist nicht fest vorgeschrieben. Eine Darstellung als (Doppel)-Kegel oder sechseitige (Doppel-) Pyramide ist ebenso möglich. + +Der HSl Farbraum entspricht zumindest grob unserer Farbwahrnehmung. Daher eignet er sich zur intuitiven und qualitativen Einstellung von Farben in Illustrationsgrafiken +- Relative Skala 0..255 +- Quantisierbarkeit der Farben und Helligkeit z.B. beruhend auf physiologischen Messungen +- Bezug zur Physik des Lichtes (Energie, Spektrum) + +%\paragraph{RGB Farbraum +> Hypothese, dass Farbsehen auf drei Arten von Sinneszellen beruht (rot, grün, blau) ~ T. Young, 1807 + +> ein und diesselbe Farbwahrnehmung kann durch unendlich viele unterschiedliche Farbreize erzeugt werden, Farbwahrnehmungen sind durch drei beliebige, linear unabhängige Größen darstellbar. ~ Graßmann, 1853 + +Im menschlichen Auge befinden sich Zäpfchen, welche mit unterschiedlicher Empfindlichkeit auf die verschiedenen Wellenlängen des Lichtes reagieren. Es gilt: gleicher Reiz heißt gleiche Farbwahrnehmung + +Beispiel für Reizung durch monochromatisches Licht (Laser) einer bestimmten Stärke: +- $r=0,2R(\lambda)4$ +- $y=0,5R(\lambda)+0,3G(\lambda)$ +- $g=0,2R(\lambda)+0,5G(\lambda)$ +- $b=0,02B(\lambda)$ + +Farberzeugung durch Mischung: +$$1,9r + 0,6g = 0,38R(\lambda)+0,12R(\lambda)+0,3G(\lambda)=0,5R(\lambda)+0,3G(\lambda) = y$$ + +geschichtliche/physikalische Aspekte: +- Sonnenlicht ist eine Mischung von einzelnen Farben +- Korpuskular- bzw Emissiontheorie +- Spektralfarben sind objektive Eigenschaften des Lichtes +- Prisma spaltet das weiße (Sonnen-) Licht in Spektralfarben +- durch Sammellinse lässt sich aus dem Spektrum wieder weißes Licht erzeugen +- kammartige Ausblendung führt zu bunten Mischfarben + +Additive Farbmischung in RGB:\\ +Mit den Grundfarben Rot, Grün und Blau können weitere bekannte Farben additiv gemischt werden (Rot+Blau=Magenta). Weitere Zwischenfarbtöne können durch kontinuierliches Variieren der Anteile der Grundfarben gemischt werden (alle Pastellfarben und Graustufen) + +Bestimmen der Anteile der Mischfarben:\\ +- zur Mischung beliebiger Farben verwenden wir die experimentiell bestimmten drei Empfindlichkeitskurven: R,G,B und zugehörige Lichtquellen r,g,b +- alle 3 Lichtquellen zusammen ergeben weiß wahrgenommenes Licht: r=g=b=1~weiß (muss gut abgestimmt werden -> Weißabgleich) +- wir können damit einen dreidimensionalen Farbraum (RGB-Farbraum) aufspannen +- die Lage einer monochromatischen Lichtwuelle $x(\lambda_0)$ in diesem RGB Farbraum lässt sich wie folgt berechnen: $x(\lambda_0)=p*r+\gamma*g+\beta*b$ +- Achtung: die Lösung hängt von den Wellenlängen der verwendeten Grundfarben r,g,b (Primärvalenzen) ab. Nimmt man andere Grundfarben, ergeben sich andere Werte für $p,\gamma,\beta$ +- RGB ist nicht gleich RGB! Man muss "eigentlich" immer die Wellenlängen der verwendeten Grundfarben r,g und b mit angeben! + +Innere Farbmischung: $F=p*r + \gamma*g + \beta*b$ + +Äußere Farbmischung:\\ +die gemischte Farbe Cyan wird zwar als derselbe Buntton wie die Referenzfarbe F wahrgenommen, jedoch weniger gesättigt. Um die beiden Farben gleich aussehen zu lassen wird der Referenzfarbe F etwas Rot beigemischt. Damit sind beide Farben gleich ungesättigt. Das Verfahren wird äußere Farbmischung genannt: $F=p*r + \gamma *g - \beta *b$. +Um die aus Blau und Grün gemischte Farbe Cyan voll gesättigt aussehend zu lassen, müsste Rot aus der Mischfarbe subtrahiert werden. Dies ist allerdings technisch nicht realisierbar. Durch die negative Farbvalenz wird das Modell jedoch theoretisch konsistent und es lassen sich alle Farben durch Mischen von Rot, Grün und Blau darstellen. Daraus wird ein vollstänfiges RGB-Farbmodell abgeleitet. + +Idee: +- es werden drei linear-unabhängige Größen benötigt + - zur beschreibung der Farbempfindung + - zur (technischen) Reproduktion der Farbempfindung +- zunächst werden folgende Werte gewertet + - die additive Mischung als Reproduktionsmethode + - drei Primärfarben Rot, Grün, Blau +- drei linear unabhängige Größen spannen stets einen 3D Raum auf + - die RGB Werte werden den drei ortogonalen Achsen dieses Raumes zugeordnet + +Darstellung des RGB Farbraums: +- alle mit drei Farblichtquellen technisch (additiv) erzeugbaren Farben liegen innerhalb eines Würfels +- Im Koordinatenursprung befindet sich Schwarz, diagonal gegenüber weiß. +- auf der Raumdiagonalen liegen dazwischen die Graustufen + +Bei entsprechender Normierung liegen die vom RGB Farbsynthesesystem erzeugbare Farben im Einheitswürfel. Zunächst wird der Begriff Intensität eingeführt: $I=\frac{R+G+B}{3}$. Der Ausschnitt aus der Ebene konstanter Intensität, der im Einheitswürfel liegt, wird im Interesse der einfachen Darstellung als Farbebene (Farbtafel) genutzt. Dabei bleibt die Ordnung der Farbvalenzen erhalten. Die Länge |F| der Farbvalenz bzw die Intensität geht verloren. +Die in der Ebene konstanter Intensität liegenden Werte definieren die Chrominanz durch welche die Farbwertanteile erfasst werden (zwei reichen aus da 2D). Es kann auch die Projektion der Ebene auf RG (grau überlagert) als Farbtafel genutzt werden, ohne die Ordnung der Farborte zu stören. Vorteil: orthonoales rg-System + +RGB Farbtafel:\\ +Alle Farben gleicher Buntheit (unterscheiden sich nur in der Länge von F) führen zum gleichen Farbort, der durch die Farbwertantwile r,g,b beschrieben wird: +$$r=\frac{R}{R+G+B}, g=\frac{G}{R+G+B}, b=\frac{B}{R+G+B} \leftrightarrow r+g+b=1$$ + +Aus dem rechten Teil der Gleichung folgt mit $b=1-r-g$, dass sich die Buntheit allein durch r und g darstellen lässt (entspricht $R^2$). +Die Farbwertanteile lassen sich bei bekanntem Farbort in der Farbtafel nach der angegebenen Konstruktionsvorschrift ermitteln oder direkt ablesen. + + +%\paragraph{CIE System +Um eine Relation zwischen der menschlichen Farbwahrnehmung und den physikalischen ursachen des Farbreizes herzustellen, wurde das CIE-Normvalenzsystem von der Internationalen Beleuchtungskommission (CIE) definiert. Es stellt die Gesammtheit der wahrnehmbaren Farben dar. + +Farbkörperunterschiede:\\ +Es finden sich Unterschiede welche Farbbereiche nach dem CIE Normalvalenzsystem von den jeweiligen Systemen dargestellt werden können: +- menschliche Farbwahrnehmung ca 2-6 Mio Farben +- Monitor: ca 1/3 davon. Bei Monitoren wird die additive Farbmischung verwendet, da die einzelnen Lichtquellen aufsummiert werden. +- Druckprozess: meist deutlich weniger Farben. Bei Druckernwerden einzelne Farbschichten auf Papier gedruckt und das resultierende Bild wird über die subtraktive Farbmischung bestimmt. + +Subtraktive Farbmischung:\\ +Je nachdem welche Farbe ein Material hat, werden entsprechende Farbanteile absorbiert oder reflektiert. Eine gelbe Oberfläche sieht gelb aus, das sie das Blau aus weißem Licht absorbiert, aber Rot und Grün reflektiert. + +Achtung: Dies gilt nur für die Bestrahlung mit weißem Licht. Wird beispielsweise ein gelbes Blatt mit blauem Licht bestrahlt, dann wirkt es schwarz, da das blaue Licht vom gelben Blatt absorbiert wird. + +%\section{Licht \& Reflexion +%\subsection{ Strahlung +Grundfrage: Was ist Licht? +- Teil der elektromagnetischen Strahlung +- ist für das menschliche Auge wahrnehmbar +- Lichtspektrum liegen zwischen 380 nm und 780 nm +- Farbe entspricht der Wellenlänge +- längere Wellenlängen = weniger Photonenenergie +- durch Überlagerungen vieler Frequenzen erscheint das Licht weiß + +Radiometrie: +- Wissenschaft von der Messung elektromagnetischer Strahlung +- Größen sind physikalische Einheiten (ohne Berücksichtigung des menschl. Sehens) + +Photometrie: +- Messverfahren im Wellenlängenbereich des sichtbaren Lichtes (Messung mithilfe eines Photometers) +- lassen sich aus den radiometrischen Größen, bei bekanntem Spektrum bestimmen +- berücksichtigen die wellenlängenabhängige Empfindlichkeit des Auges + +Photon: +- Elementarteilchen der elektromagnetischen Wechselwirkung +- besitzen keine Masse +- Energie und Impuls sind proportional zur Frequenz +- kürzere Wellenlänge = höhere Frequenz = höhere Energie + +Strahlungsenergie (radiant energy): +- durch Strahlung (elektromagnetische Wellen) übertragene Energie +- entspricht dem Produkt von Photonenanzahl und der Energie der Photonen +- Formelzeichen : Q +- Einheit: J (Joule) +- photometrisches Äquivalent: Lichtmenge (luminous energy) + +Strahlungsleistung (auch Strahlungsfluss, engl. radiant flux, radiant power): +- transportierte Strahlungsenergie in einer bestimmten Zeit +- Formelzeichen : $\phi$ +- Einheit: W (Watt) +- Berechnung: $\phi = \frac{Q}{t}$ +- photometrisches Äquivalent: Lichtstrom (luminous flux, luminous power) + +Zusammenhang zwischen Radiometrie und Photometrie:\\ +In der Radiometrie wird sich mit objektiven Messgrößen beschäftigt, in der Photometrie gibt es jeweils eine entsprechende Messgrößen, bei denen die spektrale Empfindlichkeit des menschlichen Auges mit einfließt. +- Beispiel: + - radiometrisch: Strahlungsleistung $\phi_e$ gemessen in Watt W + - photometrisch: Lichtstrom $\phi_v$ gemessen in Lumen lm +- Verknüpfung von Radiometrie und Photometrie erfolgt über das photometrische Strahlungsäquivalent: $K =\frac{\phi_v}{\phi_e}$ +- gibt die Empfindlichkeit des menschlichen Auges an +- radiometrische Größe: Index $_e$ für energetisch +- photometrische Größe: Index $_v$ für visuell +Die radiometrischen Größen gewichtet mit dem photometrischen Strahlungsäquivalent K sind somit die photometrischen Größen. + +Ausbreitung eines Strahls: +- geradlinig von einer Quelle zum Ziel, +- Richtung ändert sich durch Brechung +- an Oberflächen tritt Reflexion und Streuung auf +- eine Strahlungsquelle sendet dabei Strahlen in alle Raumrichtungen unter einem gewissen Raumwinkel aus + +%\paragraph{Raumwinkel +Der Steradiant ist eine Maßeinheit für den Raumwinkel, der von der Mitte M einer Kugel mit Radius r aus gesehen eine Fläche von $r^2$ auf der Kugeloberfläche einnimmt. $\Omega=\frac{Flaeche}{Radius^2}=\frac{A}{r^2}sr$ +Eine komplette Kugeloberfläche $A_k$ beträgt allg. $A_k = 4\pi r^2$, entspricht also einem Raumwinkel $\Omega$ von $\frac{A_k}{r^2}= 4\pi r\approx 12,5sr$. Ein Steradiant =1sr entspricht einem Öffnungswinkel $\alpha$ von ca. 65,54° + +%\paragraph{Strahlstärke +- auch Intensität, engl. radiant intensity +- Strahlungsleistung die in eine Raumrichtung mit Raumwinkel $\Omega$ emittiert wird +- Formelzeichen : I +- Berechnung: $I=\frac{\phi}{\Omega}$ +- photometrisches Äquivalent: Lichtstärke (luminous intensity) + +Beispiel: Berechnen Sie die Strahlstärke einer Lampe mit einem Öffnungswinkel von 180° und einer Strahlungsleistung von 20W. +$$\alpha=180°\rightarrow A=2\pi r^2; \phi =20W; \Omega=\frac{A}{r^2}=2\pi ; I_e=\frac{\phi_e}{\Omega}=\frac{20}{2\pi}\approx 3,2 \frac{W}{sr}$$ + +%\paragraph{Räumliche Ausbreitung +Energieübertragung zwischen zwei Flächen: +Eine Fläche $A_r$ strahlt Licht auf eine Fläche $A_i$ ab.\\ +Frage: Wie viel Lichtleistung von einer infinitesimalen abstrahlenden Fläche $A_r$ wird auf einer Fläche $A_i$ empfangen? +- der Abstand zwischen den beiden infinitesimalen Flächen beträgt r +- die Flächen stehen nicht notwendigerweise senkrecht zur Ausbreitungsrichtung des Lichts (gerade Verbindungslinie zwischen den Flächen) +- Wir projizieren daher die abstrahlende und die empfangende Fläche jeweils in Ausbreitungsrichtung. Die projizierten Flächen nennen wir $A'_r$ und $A'_i$. +- Wir betrachten Punktlichtquellen von der abstrahlenden Fläche $A_r$ , welche ihre Strahlungsleistung in den Raumwinkel $\Omega$ abgeben. +- $\Omega$ ist somit die in Abstrahlrichtung reduzierte Fläche $A'_i$ , projiziert auf die Einheitskugel: $\Omega=\frac{A'_i}{r^2}$ + - Die übertragene Energie nimmt quadratisch zu r ab + +%\paragraph{Strahldichte +- engl. radiance +- Strahlstärke welche von einer Sendefläche $A_r$ in eine bestimmte Richtung abgegeben wird +- Formelzeichen : L +- photometrisches Äquivalent: Leuchtdichte (auch Luminanz, engl. luminance) +- Berechnung: $L = \frac{I}{A'_r}=\frac{I}{\cos(\phi_r)*A_r} = \frac{\phi}{\cos(\phi_r)*A_r*\Omega}$ +- $\phi_r$ ist der Winkel zwischen der Normalen n und der Abstrahlrichtung (von der abstrahlenden Fläche $A_r$ zur empfangenden $A_i$) + +Leuchtdichte (Luminanz) als Vorstufe der Helligkeit: +- Strahlungsleistung bewertet mit der spektralen Empfindlichkeitsfunktion des menschlichen Auges für das Hellempfinden +- Das menschliche Auge hat seine maximale Empfindlichkeit, bei einer Wellenlänge von 555 nm (gelbgrün) +- 1 Lumen ist definiert als der Lichtstrom einer 1,464 mW starken 555-nm-Lichtquelle mit 100% Lichtausbeute. + + +%\paragraph{Bestrahlungsstärke +- auch Strahlungsflussdichte, engl. irradiance +- Strahlungsleistung durch die bestrahlte Fläche $A_i$ bzw. Strahlstärke die auf die Empfängerfläche trifft +- Formelzeichen : E +- Berechnung: $E =\frac{\Phi}{A_i}$ +- photometrisches Äquivalent: Beleuchtungsstärke (auch Lichtstromdichte, engl. illuminance) +- erweitert: $E=\frac{\Phi}{A_i}=\frac{L*\cos(\phi_i)*\cos(\phi_r)*A_r}{r^2}$ + +%\paragraph{Zusammenfassung +Radiometrische (physikalische) und Photometrische (unter Berücksichtigung des menschlichen Auges) Größen + +| Symbol | Radiometrie (energetisch $_e$) | Photometrie (visuell $_v$ ) | +| -- | -- | -- | +| $Q$ | Strahlungsenergie $Joule$ | Lichtmenge $lm*s$ | +| $\Phi$ | Strahlungsleistung Watt $W$ | Lichtstrom Lumen $lm$ | +| $I$ | Strahlstärke $\frac{w}{sr}$ | Lichtstärke Candela $cd$ | +| $E$ | Bestrahlungsstärke $\frac{W}{m^2}$ | Beleuchtungsstärke Lux $\frac{lm}{m^2}$ | +| $L$ | Strahldichte $\frac{w}{sr*m^2}$ | Leuchtdichte $\frac{cd}{m^2}$ | + + + +%\subsection{ Reflexion +Nach dem Auftreffen auf einer opaken Oberfläche wird die Strahlung spektral +unterschiedlich stark und geometrisch auf unterschiedliche Weise reflektiert. Es +können 2 Idealfälle der Reflexion unterschieden werden: +- ideal spiegelnde Reflexion (Einfallswinkel = Ausfallswinkel) +- ideal diffuse Reflexion + +Aus den zwei Idealfällen der reflexion werden weitere (gemischte) Fälle abgeleitet: +- spekuläre Reflexion (diffus und gerichtete Reflexion) +- gemischte Reflexion: ideal diffus, gerichtet diffus und ideal spiegelnd + +Bei der Betrachtung der Reflexion ist offensichtlich die Art der Bestrahlung und +insbesondere auch die Richtung der Einstrahlung zu beachten. + + + +%\paragraph{Diffuse Reflexion +%![Diffuse Reflexion; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Diffuse_Reflexion.png) + +Lichtquelle im Unendlichen; Irradiance $E=\frac{A'_i}{A_i}I_{in}=I_{in}\cos(\phi)$ + +Eingestrahlte Strahlstärke I in durch $A'_i$ verteilt sich durch die Projektion auf die größere Fläche $A_i$ Die Bestrahlungsstärke E (Irradiance) ist dadurch proportional zum Vergrößerungsfaktor der Fläche abgeschwächt. + +In Richtung Betrachter reflektierte Strahlstärke $I_{out}$ Aufgrund von Interferenz phasengleicher Lichtstrahlen → Projektion auf Normalenrichtung $\frac{I_{out}}{E_{refl}}=\cos(\phi)$ +- Senkrecht zur Oberfläche: Maximale Kohärenz (Addition) +- Parallel zur Oberfläche: n Keine Kohärenz (Auslöschung) + +%![Diffuse Reflexion Addition und Auslöschung; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Diffuse_Reflexion_2.png) + +Annahme kohärentes Licht: Parallel zur reflektierenden Oberfläche findet sich zu jeder Punktlichtquelle immer eine gleichphasige Punktlichtquelle im Abstand $\frac{\lambda}{2}$ +- Auslöschung parallel zur Fläche, + +%![Diffuse Reflexion Betrachter; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Diffuse_Reflexion_3.png) + +$$\frac{A_r}{A'_r}=\frac{1}{\cos(\phi)} \rightarrow L=\frac{I_{out}}{\cos(\phi)}=I_{refl}$$ +Ein Betrachter mit flachem Blickwinkel sieht Licht aus größerer Fläche $A_r$ durch Kombination dieser Effekte, kürzt sich der Einfluss des Betrachterwinkels $\cos(\phi)$ weg und es bleibt nur der Einfluss des Lichteinfallswinkels übrig: Strahldichte des reflektierten Lichtes: $L=I_{in}*k_d(\lambda)*\cos(\phi)$ + +%\paragraph{Spekuläre Reflexion +Spekuläre (gestreut spiegelnde) Reflexion: +- Speckles (Fleckchen), bzw. (Micro-) Facetten sind einzeln jeweils "ideal" +- spiegelnd: Einfallswinkel $\phi$ = neg. Ausfallswinkel = $-\phi$. +- Die Ausrichtung der Microfacetten weichen von der Gesamtflächennormalen ab. → Statistische Abweichung von der Flächennormalen (z. B. Gauß-Verteilung) +- dadurch Streuung des Lichts (Keule) um den Winkel $\theta$ der idealen Spiegelung herum +- Je größer der Winkel $\theta$ zwischen idealer Spiegelrichtung und Richtung zum Betrachter, desto schwächer ist die Reflexion +- Modellierung meist per $\cos^k(\theta)$ (Phong-Beleuchtungsmodell) - nicht physikalisch begründet. + +%![Spekuläre Reflexion; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Spekuläre_Reflexion.png) + +Gestreute Spiegelung im Phong Modell mit $L=I*k_s*\cos^k(\theta)$ +- glänzende Oberfläche: großer Exponent k (16,...,128); kleine Streuung $\epsilon$ +- matte Oberfläche: kleiner Exponent k (1,...,2); große Streuung $\epsilon$ + +Energieerhaltung $\rightarrow$ Verhinderung der Abnahme bei großen Exponenten $\rightarrow$ Für die Energieerhaltung wird ein zusätzlicher Normierungsfaktor benötigt: +- physikalisch nicht korrekt: $L=I*k_s*\cos^k(\theta)$ +- gebräuchliche Normierung $\frac{k+2}{2\pi}$ somit: $L=I*k_s*\frac{k+2}{2\pi}*cos^k(\theta)$ + +%\paragraph{Remittierende Flächen +- Wegen der spektralen Unterschiede bei der Reflexion bleiben wir bei den spektralen physikalischen (radiometrischen) Größen! +- Erst im Auge bzw. im Bildsensor erfolgt die Wandlung in die wellenlängenintegralen photometrischen (colorimetrischen) Größe! + +Zunächst ideal diffus remittierende weiße Flächen $(\beta(\lambda) = 1)$: +- Die von den Quellen in die Fläche $dA$ eingetragene Leistung führt zu einer Bestrahlungsstärke $E_{\lambda}$ +- Bei vollständiger Reflexion $\beta(\lambda) = 1$ ist $E_{\lambda} = R_{\lambda}$ (spektrale Radiosity, spezifische spektrale Ausstrahlung). +- Der zugehörige spektrale Strahlungsfluss $d\phi = R_{\lambda} * dA = E_{\lambda} * dA$ wird bei ideal diffusen streuenden Oberflächen gleichmäßig über den Halbraum verteilt, wobei die Strahldichte (Lambertsches Gesetz) konstant ist. + + +%\subsection{ BRDF: Bidirektionale Reflexionsverteilungsfunktion +%\paragraph{Bidirektionale Reflexion +- englisch Bidirectional Reflectance Distribution Function, BRDF +- eine Funktion für das Reflexionsverhalten von Oberflächen eines Materials unter beliebigen Einfallswinkeln +- Ziel: Oberfläche möglichst realistisch und physikalisch korrekt darstellen +- nach gewählter Genauigkeit sehr komplex +- in der Computergrafik wird meist eine vereinfachte Variante gewählt um Rechenzeit zu sparen +- erstmals 1965 definiert (Fred Nicodemus): $f_r(\omega_i, \omega_r)=\frac{dL_r(\omega_r)}{dE_i(\omega_i)}=\frac{dL_r(\omega_r)}{L_i(\omega_i)\cos(\theta_i)d\omega_i}$ +- Eine BRDF beschreibt wie eine gegebene Oberfläche Licht reflektiert. +- Das Verhältnis von reflektierter Strahldichte (radiance) $L_r$ in eine Richtung $\vec{ω}_r$ zur einfallenden Bestrahlungsstärke (irradiance) $E_i$ aus einer Richtung $\vec{ω}_i$ wird "bidirectional reflectance distribution function"(BRDF) genannt. + - $p(\lambda)=\frac{L_r}{E_i}=[\frac{1}{sr}]$ +- Die BRDF (für jeden Punkt x) ist eine 5-dimensionale skalare Funktion: $p(\lambda, \phi_e, \theta_e, \phi_i, \theta_i)$ +- Keine Energie-Einheiten, nur Verhältniszahl! +- Kann durch Messung für verschiedene Materialien bestimmt werden (Messkamera/Normbeleuchtung) +- Eigenschaften der BRDF: + - Reziprozität: $ρ(\lambda)$ ändert sich nicht, wenn Einfalls- und Ausfallsrichtung vertauscht werden (wichtig für Ray-Tracing). + - $ρ(\lambda)$ kann anisotrop sein, d.h. der Anteil des reflektierten Lichtes ändert sich, wenn bei gleicher Einfalls- undAusfallsrichtung die Fläche um die Normale gedreht wird (Textilien, gebürstete Metalle, Metalleffektlacke) + - Superposition gilt, d.h. mehrere Quellen überlagern sich linear. + +Es ist in der Computergrafik üblich, die bidirektionale Reflektivität als Gemisch von ambienten, diffusen und spekularen Komponenten $ρ_d, ρ_s$ aufzufassen und +einen ambienten Anteil $ρ_a$ zu addieren. Für eine Menge Q von Lichtquellen berechnen wir damit die gesamte reflektierte Strahlstärke: $L_r=p_a*E_a+\sum_{1\leq j \leq Q} E_j * (k_d*p_d + k_s*p_s)$ mit $k_d+k_s=1$ und Q= Anzahl der Lichtquellen + +%\paragraph{Rendering-Equation +Für ambiente und gerichtete Lichtquellen aus der Hemisphäre ergibt sich eine spezielle Form der BRDF, die Render-Gleichung (Jim Kajiya 1986): +- eine BRDF mit Integral über alle Lichtquellen (bzw. Hemisphären) +- $L_r=p_a + \int_{Omega} L*(k_d*p_d+k_s*p_s) \omega_i*n d\Omega$ + +%![Rendering Equation; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Rendering_Equation.png) + +%\paragraph{Strahlungsquellenarten +- Ambiente Strahlung: + - es ist keine "eigentliche" Quelle zuordenbar + - stark vereinfachtes Modell für die Streuung der Atmosphäre, für viele "durchmischte" Strahlungsquellen, für indirekte Reflexionen + - Strahlung kommt von allen Seiten "Die Quelle ist überall und nirgends" + - keine Abhängigkeit von Winkeln und Entfernungen + - Beschreibung nur indirekt durch konstante Bestrahlungsstärke (Irradiance) von Flächen möglich + - $E=\frac{\Phi}{A}=E_a$ +- Parallele Strahlung: + - Strahlung ist gerichtet und parallel (kollimiertes Licht, Strahlungsquelle im Unendlichen, Sonnenlicht) + - für derartige Quellen lässt sich kein Ort (aber uneigentlicher Ort, Richtung) angeben + - Wichtig sind die Richtung und die Strahlungsleistung, bezogen auf die senkrecht zur Ausbreitungsrichtung stehende Fläche (spezifische Ausstrahlung oder Radiosity $R_e$) $R=E_q=\frac{\Phi}{A_q}$ + - für die Schattierungsrechnung lässt sich die Bestrahlungsstärke $E_e$ der Oberfläche (Flächenelement dA) berechnen: $E=\frac{\Phi}{A}=\frac{E_q*A_q}{A}=E_q*\cos(\phi) = E_q*V_I^T*n$ +- Ideale Punktlichtquelle: + - für die Punktquelle ist der Ort bekannt und die Strahlstärke in alle Richtungen konstant: $I=\frac{\Phi}{\Omega}=konstant$ + - die Bestrahlungsstärke eines physikalischen vorliegenden, beliebig orientierten Flächenelementes A ergibt sich zu: + - $E=\frac{\Phi}{A}=\frac{I*\Omega}{A}, \Omega=\frac{A}{r^2}*\cos(\phi)*\omega_r \rightarrow E=\frac{I}{r^2}*\cos(\phi)*\omega_r$ + - zum Ausgleich der Adaptionsfähigkeit des menschlichen Auges wird in der Computergrafik oft der folgende Ansatz verwendet: + - $E=\frac{I}{c_1+c_2*|r|+c_3*r^2}*\cos(\phi)*\omega_r$ +- Remittierende Flächen (radiometrische Betrachtung): + - Zur Berechnung der von der reflektierenden Fläche weitergegebenen Strahldichte L sind die weiter oben berechneten Bestrahlungsstärken E für die unterschiedlichen Quellen mit dem Faktor $\frac{\beta(\lambda)}{\pi\omega_r}$ zu bewerten + +| Quelle | Reflexion | Spektale Strahldichte $L(\lambda)$ | +| -- | -- | -- | +| ambient | diffus | $L(\lambda)=\frac{E(\lambda)}{\pi\omega_r}*\beta(\lambda)$ | +| gerichtet | diffus | $L(\lambda)=\frac{E(\lambda)}{\pi\omega_r}*\cos(\phi)*\beta(\lambda)$ | +| punktförmig | diffus | $L(\lambda) = \frac{I(\lambda)}{\pi r^2 }*\cos(\phi)*\beta(\lambda)$ | +| gerichtet diffus | diffus | $L(\lambda)=\frac{I(\lambda)}{\pi r^2 }* \cos^m(\theta)*\cos(\phi)*\beta(\lambda)$ | + + +%\subsection{ Beleuchtungsmodelle +Ein Beleuchtungsmodell ist eine Verfahren in der Computergrafik welches das Verhalten von Licht simuliert. Die Simulation unterscheidet dabei zwischen lokaler und globaler Beleuchtung: +- Lokale Beleuchtungsmodelle: + - simulieren das Verhalten von Licht auf den einzelnen Materialoberflächen + - nur Beleuchtungseffekte welche direkt durch Lichtquellen auf einzelnen Objekt entstehen + - indirekte Beleuchtung bleibt zunächst unberücksichtigt +- Globale Beleuchtungsmodelle: + - simulieren die Ausbreitung von Licht innerhalb der Szene + - dabei wird die Wechselwirkung in der Szene beachtet (Schatttenwurf, Spiegelung, indirekte Beleuchtung) + +%\paragraph{Phong-Modell +- lokales Beleuchtungsmodell (lässt sich durch BRDF beschreiben) +- eignet sich zur Darstellung von glatten, plastikähnlichen Oberflächen +- baut nicht auf physikalischen Grundlagen auf +- widerspricht dem Energieerhaltungssatz +- Reflexion des Lichts = ambienter+ ideal diffuser + ideal spiegelnder Reflexion + +%![Phong Modell; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Phong_Modell.png) + +- Allgemein: $L=I_{out}=I_{ambient}+I_{diffus}+I_{specular}$ +- Ambiente: $I_{ambient}=I_a * k_a$ mit $I_a$ Intensität des Lichtes und $k_a$ Materialkonstante +- Diffus: $I_{diffus}=I_{in}*k_d*\cos(\phi)$ mit $I_{in}$ Lichtstärke der Punktlichtquelle; $k_d$ empirischem Reflexionsfaktor; $\phi$ Winkel zwischen Oberflächennormale und Richtung des einfallenden Lichtstrahls +- Spiegelnd: $I_{specular}=I_{in}*k_s*\frac{n+2}{2\pi}*\cos^n({\theta})$ mit + - $I_{in}$ Lichtstärle des eingallendes Lichtstrahls der Punktlichtquelle + - $k_s$ empirisch bestimmter Reflexionsfaktor + - $\theta$ Winkel zwischen idealer Reflexionsrichtung des Lichtstrahls und Blickrichtung + - $n$ konstante Exponent zur Beschreibung der Oberflächenbeschaffenheit + - $\frac{n+2}{2\pi}$ Normalisierungsfaktor zur Helligkeitsregulierung +- Vollständige Formel: $I_{out}=I_a*k_a+I_{in}*k_d*\cos(\phi)+I_{in}*k_s*\frac{n+2}{2\pi}*\cos^n(\theta)$ + +Unterschiedliche Definitionen sind möglich, z.B. mit mehrere Lichtquellen: +- jeweiligen Komponenten für jede Lichtquelle separat berechnet +- diese werden anschließend aufsummiert + +%\paragraph{Cook-Torrance +- Physik-basierte spekulare Reflexion: +- Microfacetten: Grundidee ähnlich Phong-Modell +- Statistische Abweichung der Microfacetten von der Flächennormalen (z. B. Beckmann-Verteilung) +- Streuung des Lichts (Keule) um den Winkel der idealen Spiegelung herum +- Berücksichtigt auch die gegenseitigen Abschattung (insbesondere bei flachen Lichtstrahlen) +- Vollständig physikbasiertes Modell, keine willkürlichen Reflexionskonstanten +- Aufwendige Berechnung (verschiedene Näherungsformeln existieren) +- Beckmann-Verteilung: $l_{spec}=\frac{exp(-\frac{tan^2(\alpha)}{m^2})}{\pi m^2 cos^4 (\alpha)}$, $\alpha=arccos(N*H)$ + +%\section{Schattierungsverfahren +%\subsection{ Direkte Schattierung +Bisher: +- Zerlegung gekrümmter Flächen in Polygone (meist Drei- oder Vierecke) +- Positionen der (Eck-)Punkte und Normalen im 3D sowie der Punkte im 2D-Bild sind bekannt (per Matrixmultiplikation für Transformationen und Projektion) +- Pixelpositionen für Polygone/Dreiecke im Bild per Scanline-Algorithmus +- lokale Beleuchtungsmodelle für 3D-Punkte (z.B. per Phong-Beleuchtungsmodell) + +Jetzt: Wie kommt Farbe (effizient) in die Pixel? +- Wie oft muss lokales Beleuchtungsmodell bei n Pixeln im Dreieck angewendet werden? + +| Verfahren | Anz. | Idee | +| -- | -- | -- | +| Flat-Shading | 1 | eine Berechnung, dann gleiche Farbe für alle Pixel des Dreiecks/Polygons verwenden | +| Gouraud-Shading | 3 | pro Eckpunkt eine Farbe berechnen, dann lineare Interpolation (pro Dreieck) für jedes Pixel | +| Phong-Shading | n | eine Berechnung pro Pixel, davor aber jeweils lineare Interpolation der Normalen pro Pixel | + +→ Phong-Beleuchtungsmodell in jedem der obigen Shading-Verfahren nutzbar +→ hier nur direkte Schattierung (nur lokal, wo sind die Lichtquellen), d.h. nicht global (wie bei Radiosity \& Raytracing) + +%\paragraph{Flat-Shading +Arbeitsweise des Flat-Shadings +- stets nur 1 Farbwert pro (ebener) Fläche, +- Stelle der Berechnung frei wählbar (möglichst repräsentativ), +- repräsentativ wäre z.B.: Punkt (Ort mit Normale) in der Mitte der Fläche +- $\rightarrow$ trivial für Drei- und Vierecke? → für Dreiecke und konvexe Vierecke! + +Auswirkungen +- "flaches" Aussehen und Helligkeitssprünge an den Kanten, das ist: + - schlecht für Fotorealismus, + - gut für abstraktere technische Darstellungen und + - u.U. wichtig für realistische Darstellung kantiger Körper (insbes. wenn pro Eckpunkt nur eine Normale modelliert ist). +- schneller als die anderen Verfahren, +- u.U. genauso gut wie z.B. Phong-Shading, wenn z.B.: + - das Objekt sehr fein modelliert wurde oder + - sehr weit entfernt ist +- $\rightarrow$ d.h. nur ca. 1 Pixel pro Polygon/Dreieck gerendert wird (n==1) + +%\paragraph{Gouraud-Shading +- Gouraud-Shading [H. Gouraud 1971] schattiert Dreiecke (bzw. aus Dreiecken zusammengesetzte Polygone) kontinuierlich, +- beseitigt damit die Diskontinuitäten des Flat-Shadings, +- meist gleiche Normalen pro Vertex, d.h. pro Dreieck wirken oft 3 verschiedene Richtungsvektoren statt nur eine Normale (Dreiecksmitte) wie beim Flat-Shading und +- lineare Interpolation der Schattierung (Intensitäten) im Inneren des Dreiecks aus den 3 Farbwerten der Eckpunkte. +- Es werden "Normalenvektoren" $n_i$ für jeden Eckpunkt $P_i$ des Polygons ermittelt bzw. ausgelesen. +- Die Herleitung der "Normalenvektoren" $n_i$ ist aus der Originaloberfläche (z.B. Zylinder, Kegel, Bèzier-Fläche) oder Nachbarpolygonen möglich. +- Für jeden Eckpunkt: Berechnung der Beleuchtungsintensität $I_i$ (z. B. nach dem Phong-Beleuchtungsmodell). +- Normalen $n_i$ der Eckpunkte werden entweder direkt aus den Flächen (z.B. Regelgeometrien, bei Kugel z.B. Richtung des Radiusvektors) oder aus den Flächennormalen der benachbarten Polygone durch flächengewichtete Mittelung berechnet. +- Die Schattierungsrechnung (RGB-Werte) erfolgt für die Eckpunkte und liefert die reflektierte Leuchtdichte $I_i$ . Zur Erinnerung, das Phong-Beleuchtungsmodell: + - $I_{out}=I_a*k_a+I_{in}*k_d*\cos(\phi)+I_{in}*k_s*\frac{n+2}{2\pi}*\cos^n(\theta)$ + - $\cos(\phi)=V^T_I*n_i$, $cos^n(\theta)=(V^T_r * V_e)^n$ +- Nach Anwendung des Beleuchtungsmodells an den Eckpunkten (auch Vertex-Shading genannt) +- Bei der Rasterkonvertierung wird zwischen den Eckwerte $I_i$ linear interpoliert und damit die Intensität jedes Pixels der Rasterlinie berechnet (Intensität I steht hier für die Leuchtdichte oder für Farbwerte usw.) +- Die Interpolation erfolgt nach dem gleichen arithmetischen Muster wie die Interpolation der x-Werte beim Polygonfüllalgorithmus, bzw. der $1/z$-Werte im z-Buffer-Verfahren (d. h. inkrementell, mit Ganzzahlarithmetik). +- Für farbige Oberflächen werden die Leuchtdichten an den Polygonecken durch RGB-Werte beschrieben und ebenso zwischen den Ecken linear interpoliert. +- Resultat: Kontinuierlich schattierte dreidimensionale Oberflächen + +%![Gourad Shading; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Gourad-Shading.png) + +Artefakte des Gouraud-Shading, bedingt durch die lineare Interpolation: +- Fehlen von gut ausgeprägten Glanzlichtern (verwischt oder verschwunden) +- Mach-Band-Effekt: ((helle) Bänder) Kontrastverstärkung durch das Auge an den Übergängen zwischen Polygonen +- Diese Artefakte werden im Folgenden genauer untersucht. + +%#%\paragraph{Fehlende Glanzlichter +Auf Grund der linearen Interpolation von Intensitäten können Glanzlichter, die auf spekulare Reflexion zurückzuführen sind, verloren gehen oder abgeschwächt/verschmiert werden. Das wird umso kritischer, je spitzer die spekulare Reflexion ist (großes n im $\cos^n$- Term). + +Feinere Unterteilung der Oberfläche verbessert Resultat + +%![fehlende Glanzlichter; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Gourad_Glanzlichter.png) + +%#%\paragraph{Mach-Band-Effekt +Die lineare Interpolation der Leuchtdichte zwischen den Polygonkanten entlang der Rasterlinie führt zu einem Verlauf, der durch plötzliche Änderungen im Anstieg der Intensität gekennzeichnet ist (nicht stetig differenzierbar). + +Der Mach-Band-Effekt: physiologisches Phänomen (Ernst Mach, 1865) +- Bei Sprüngen in der Helligkeitsänderung (c0-Stetigkeit, c1-Unstetigkeit, typisch für Approximation durch ebene Polygone beim Gouraud-Shading, z.B. Zylinder) stört dieser Effekt u. U. erheblich. +- Gleiche Information benachbarter Rezeptoren wirkt bei der weiteren visuellen Verarbeitung lateral hemmend auf die lokale Lichtempfindung. +- Modellhaft entstehen neben dem eigentlichen Helleindruck auch "Signale", die dem Helligkeitsgradienten (erste Ableitung) und dem Laplacefilter-Output (Laplacian of Gaussian / LoG, zweite Ableitung) entsprechen. +- Die Empfindung wird insgesamt nicht nur durch die Lichtintensität selbst, sondern auch durch die Überlagerung mit ihrer ersten und zweiten räumlichen Ableitung bestimmt. +- Das führt zu einer Verstärkung von Konturen an "Sprungkanten" (c0-Unstetigkeiten, Intensitätssprünge). In der dunklen Fläche zeigt sich eine dunklere, in den hellen Flächen eine hellere Kantenlinie. Dort, wo Konturen vorhanden sind, ist das vorteilhaft (evolutionäre Entwicklung der menschlichen visuellen Wahrnehmung), obwohl Täuschungen damit verbunden sind (photometrischer Eindruck). + +- zunächst Kanten: Liegen eine helle und eine dunkle Fläche nebeneinander, beobachtet man einen dunklen Streifen auf der dunkleren Seite und einen hellen Streifen auf der helleren Seite (Kontrastverstärkung). +- Bei einer Abfolge von Flächen unterschiedlicher Graufärbung, die in sich keine Farbgraduierung haben, beobachten wir entlang der Grenzen machsche Streifen (nach Ernst Mach 1865). Dabei handelt es sich um helle und dunkle Streifen, die den Kontrast zwischen den Flächen verstärken. [Quelle: Wikipedia] + +%\paragraph{Phong-Shading +Phong-Shading [Phong 1975]: +- Lineare Interpolation der Normalenvektoren zwischen den Polygonecken anstelle von Interpolation der Intensitätswerte (bei Grafikkarten/-software als Pixelshader bekannt). +- Exakte Berechnung der $\cos^n$-Funktion im Phong-Beleuchtungsmodell für jedes Pixel : Glanzlichter werden erhalten! +- Keine Diskontinuität der ersten Ableitung: Mach-Band-Effekt wird vermieden! + + +%\subsection{ 3D-Rendering +Soll nur ein konvexes Objekt gerendert werden, dann ist die Entscheidung, welche Flächen zu zeichnen sind, einfach anhand der jeweiligen Normalen möglich.\\ +Annahme: mehrere konvexe Objekte oder auch konkave Objekte sollen gerendert werden. Verdeckungen sind also möglich! +- Korrekte Behandlung von Verdeckungen bedarf spezieller Ansätze/Datenstrukturen (Lösung des Reihenfolgeproblems). +- Rein opake Szenen sind typischerweise wesentlich leichter zu implementieren als (teilweise) transparente (zusätzlich ein Berechnungsproblem). +- Zeichenreihenfolge ist teilweise wichtig (z.B. von hinten nach vorn), +- Algorithmen/Ansätze unterscheiden sich auch in der Granularität/Genauigkeit was auf einmal gezeichnet/sortiert wird: + - Objekte (ganze Objekte nach z-Position sortieren, dann jeweils zeichnen...) + - allg. (d.h. ggfs. überlappende) Polygone: Painters-Algorithmus, + - überlappungsfreie Dreiecke/Polygone: Depth-Sort-Algorithmus, + - Pixel: Z-Buffer-Verfahren (oft auch in Verbindung mit Obj.-Sort.) +- Beliebte Testszene sind sich zyklisch überlappende Dreicke, z.B. + +%\paragraph{Painter’s-Algorithmus +- Gegeben sei eine 3D-Szene, bestehend aus grauen Polygonen mit diffus reflektierender Oberfläche, sowie eine gerichtete Lichtquelle. +- Für jedes Polygon wird die reflektierte Strahldichte L auf Basis des eingestrahlten Lichts (Richtung \& Stärke) und der Flächennormale berechnet: + - $I_{out} = L = I_{in}* k_d * \cos(\phi)$ +- Die Polygone werden mittels perspektivischer Kameratransformation (4 x 4 Matrix) in das Kamera-Koordinatensystem (Bildraum) transformiert und nach absteigendem z-Wert (Distanz des Polygonschwerpunkts zum Betrachter) sortiert. +- Die sortierten Polygone werden der Reihe nach (entfernte zuerst) mit dem 2D-Polygonfüllalgorithmus in das Pixelraster der x/y-Bildebene konvertiert. +- Die Pixel für jedes Polygon werden per Overwrite-Modus mit dem Farbwert L (nach obiger Berechnung) im Bildspeicher gespeichert. +- Die Verdeckungsprobleme lösen sich durch die Reihenfolge quasi automatisch. + +Gleichnis: Der Algorithmus arbeitet wie ein Maler, der zuerst den Hintergrund und dann Schritt für Schritt das jeweils weiter vorn liegende Objekt (oder Polygon bzw. Dreieck) zeichnet - und dabei die dahinterliegenden verdeckt. ABER, potentielle Probleme des Painter’s-Algorithmus: selbst bei Dreiecken sind trotzdem falsche Verdeckungen möglich! + +%\paragraph{Depth-Sort-Algorithmus +- Unterteilung in sich nicht überlappende und vollständig überdeckende Teilpolygone +- Ist in der Projektionsebene durch gegenseitigen Schnitt aller Polygone möglich (allerdings blickabhängig – muss in jedem Bild neu berechnet werden!). +- Die sichtbaren Teilpolygone können nun ausgegeben werden: + - Zeichnen der nicht überlappenden Teilpolygone + - Von den sich vollständig überlappenden Teilpolygonen wird nur das vordere gezeichnet. + +%![Depth Sorth Algorithmus; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Depth-Sort-Algorithmus.png) + +- Eine einfache, nicht blickwinkelabhängige Unterteilung tut es in diesem Falle auch! +- Die Teilpolygone sollten dabei möglichst nicht größer sein als der Tiefenunterschied, damit sie in jeder Situation eindeutig sortiert werden können! +- Die 6 Teilpolygone können mittels Painter‘s Algorithmus korrekt sortiert und dargestellt werden + +Anwendungsbereiche des Painter ́s Algorithmus / Depth-Sort Algorithmus: +- Einfache Szenen, kleine Objekte, die sich in den z-Werten hinreichend unterscheiden. +- Dort, wo keine Hardware-Unterstützung für 3D-Rendering angeboten wird (begrenzter Speicher, keine Z-Buffer Unterstützung). +- Viele 2D-Grafiksystem bieten bereits Polygonfüllverfahren an. +- Ähnliche Vorgehensweise wird auch für das Schattieren von semi-transparenten Flächen notwendig (s. später)! + +Als Sortierverfahren für Echtzeitsysteme eignet sich z.B. "Insertion-Sort": +- Begründung: Von Bild zu Bild ändert sich die Tiefenwerte (und damit die Reihenfolge) der Polygone relativ wenig. Damit sind die Polygone beim nächsten Bild bereits mehr oder weniger vorsortiert (nur wenige Polygone) müssen neu einsortiert werden. Die Komplexität von Insertion-Sort wird bei bereits sortierten Listen linear (O-Notation / best case). +- Folglich tritt beim Painters-Algorithmus der best case sehr häufig ein (außer beim ersten Bild, wo man vom average case ausgehen kann– hier wird die Komplexität quadratisch). + +%\paragraph{Z-Buffer-Verfahren +- Einer der einfachsten "visible surface"-Algorithmen (CATMULL 1974) +- Probleme des Painters-Algorithmus werden überwunden durch zusätzliche Berechnung des z-Wertes für jeden Punkt jedes Polygons und Speicherung des zur Projektionsebene nächstliegenden Farb- und Z-Wertes. +- Dazu ist ein zusätzlicher Speicher (z-Buffer) für jedes Pixel notwendig. +- Es sind weder Vorsortieren von Objekten noch Polygonzerlegung erforderlich (wenn alle Objekte opak sind). + +Initialisierung: Für alle Pixel +- Setze Farbe auf Hintergrundfarbe (z.B. Weiß) +- Setze alle Z -Werte auf $\infty$ (max. ganzzahliger Wert) +- Setze Z min auf Wert der Near-Plane + +Für alle Polygone (im 3D-Kamerakoordinatensystem) +- Rasterumwandlung in der Projektionsebene ($x_p/y_p$ Koordinaten) durch modifizierten 2D-Polygonfüllalgorithmus. Modifiziert heißt: zusätzliche Berechnung des z-Wertes für jedes Pixel +- Anwendung einer Write Pixel ZB-Prozedur: + - Wenn der z-Wert des aktuellen Pixels (im abzuarbeitenden Polygon) kleiner als der bereits abgespeicherte z-Wert ($z_p$) an dieser Position ist, wird im z-Buffer bei $x_p , y_p$ die Farbe sowie $z_p$ ) überschrieben (mit den neuen Werten). + - Sonst: alte Werte im Speicher bleiben erhalten +- Die näher an der Kamera liegen Pixel überschreiben somit die weiter weg liegenden. +- Pixelgenaue Sichtbarkeitsbestimmung und -behandlung der Polygone + +Berechnen der z-Werte durch lineare Interpolation: +- Die Tiefenwerte sind auch nach der Ansichten-Transformation (View-Transformation) zunächst nur für die Eckpunkte gegeben. +- Zunächst erfolgt die lineare Interpolation der z-Werte entlang der Polygonkanten $P_i P_j$ für die y-Position der gerade aktuellen Scanline +- Danach wird mit dem Füllen der Bildzeile (z.B. durch einen konventionellen Polygonfüll-Algorithmus) die Interpolation der z-Werte entsprechend der x-Position in der Scanline (Bildzeile) fortgesetzt (pixelgenaues Befüllen des z-Buffers). + +Berechnung der z-Werte eines Pixels x/y: +- Die y-Koordinate reicht zur Interpolation von $z_A$ und $z_B$ (Strahlensatz). +- Pixel-z-Wert $z_p$ wird äquivalent ermittelt, allerdings die Interpolationskoordinate jetzt x (y = const für die Rasterlinie) +- Die Werte $z_A, z_B, x_A, x_B$, in $z_p$ werden gleichzeitig mit den $x_A$-Werten (Schnitte) von einer Rasterlinie zur nächsten inkrementiert (s. Polygonfüllalgorithmus) +- Die Brüche bleiben in allen Ausdrücken rational. +- Die Ausdrücke für die z-Werte haben identische Form wie die der x-Werte beim Polygonfüllalgorithmus. + +Immer Ganzzahlarithmetik! (ähnlich wie x-Werte im Polygonfüllagorithmus) + +Beispiel: Mögliche Berechnungen eines Tiefenwertes der Pixel\\ +- Als Beispiel dient hier eine Tischplatte (Rechteck, Größe 3m x 1m) in der Perspektive +- Achtung: Eine lineare Interpolation der z-Werte im Bildraum (links) ist nicht wirklich korrekt! (höchstens als Näherung, OK für kleine nahe Flächen) +- $\frac{1}{z}$ kann exakt linear in x- \& y-Richtung interpoliert werden (Abbildung rechts). +- Da $z_1$ abnimmt, wenn z zunimmt, muss aber der z-Test invertiert werden! +- positive Auswirkung: Tiefeninfos naher Obj. werden mit höherer z-Genauigkeit gespeichert als weiter von der Kamera entfernte. Statistisch gesehen gibt es damit weniger "z-Fighting“-Effekte (z.B. bei Bewegungen willkürliche Farbwechsel zwischen den Farben von Objekten mit nahezu der selben Tiefeninfo im z-Buffer). + +%![Z-Buffer-Beispiel; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Z-buffer-verfahren.png) + +- Das Ergebnis des Z-Buffer-Verfahrens ist vergleichbar mit dem Painters-Algorithmus. +- Es ist jedoch bei opaken Objekten keine vorgängige Sortierung der Polygone nötig. Sie können in beliebiger Reihenfolge gezeichnet werden. +- Die Interpolation der 1/z-Werte erfolgt im Polygonfüll-Algorithmus durch wenige Ganzzahl-Operationen (wie bei den x-Werten) +- Das Verfahren ist pixelgenau: Es werden auch zyklisch sich überlappende (und sogar räumlich sich durchdringende) Polygone korrekt dargestellt. +- Kaum Mehraufwand gegenüber dem 2D-Polygonfüllalgorithmus! +- Mögliches Problem: Korrekte Berücksichtigung von Transparenzen! + +%\paragraph{Transparenz +Alpha-Blending-Verfahren: +- Annahme: Verwendung eines Z-Buffers +- Mit dem Alpha-Blending-Verfahren kann die transparente Überlagerung zweier Objekte im Bildspeicher wie folgt gelöst werden + - $C_f$ Farbe des Objekts im Vordergrund (kleinster z-Wert), + - $\alpha$ Opazität der Vordergrundfarbe, Wert zwischen 0 und 1 (bzw. 100%), + - $C_b$ Hintergrundfarbe (die im Bildspeicher für das entsprechende Pixel zuletzt eingetragene Farbe) +- Die resultierende Farbe C ergibt sich zu: $C=\alpha*C_f+(1-\alpha)*C_b$ +- Für Alpha-Blending wird der Bildspeicher (mit z-Buffer) um den Opazitätswert $\alpha$ erweitert: + - Speicherbedarf pro Pixel typischerweise mindestens 48 Bit: R + G + B + Z + $\alpha$. + - Bei einer Auflösung des Bildschirms von 1.000.000 Pixel benötigen wir ca. 6MB Speicher. + - z-Wert und $\alpha$-Wert des Vordergrund Objektes werden nach dem Alpha-Blending in den Bildspeicher übernommen! + +%![Transparenz Probleme](Assets/Computergrafik_Transparenz-Fehler.png) + +- Reines Z-Buffering (ohne $\alpha$) ignoriert alle Objektepixel, die weiter entfernt sind als vorn liegende Objektpixel (siehe rechts, hier ist die Reihenfolge egal). +- Bei Berücksichtigung von $\alpha$-Werten (Transparenzen) ist die Renderreihenfolge für korrekte Ergebnisse aber sehr wichtig! (siehe Mitte bzw. links) + +- Erläuterung zum Transparenz-Problem: + - Die Formel für $\alpha$-Blending berücksichtigt nur die Überlagerung des aktuellen Objektes mit dem davor existierenden Bildschirminhalt. Wird ein dazwischenliegendes Objekt nachträglich gezeichnet, dann kann die Farbe nicht korrekt bestimmt werden. Dies passiert aber beim Z-Buffering, da die Zeichenreihenfolge der Polygone beliebig ist. +- **Im Beispiel** + - Die opake grüne Kreisscheibe liegt zwischen dem hinteren Objekt (blau) und dem transparenten vorderen Objekt (rot), wird aber als letztes gerendert. → Grün kann Blau nicht mehr verdecken, denn Blau wurde zuvor schon mit Rot verrechnet (ist nun mit "vorderer" z-Koordinate im Z-Buffer hinterlegt). Dort, wo die grüne Kreisscheibe hinter dem transparenten Rot (bzw. dem nun Rot-Blau) liegt wird ein nicht korrekter Blauanteil gezeigt. Auch der weiße Hintergrund kann hinter dem transparenten Rot (insgesamt ein transparentes Rosa) nicht mehr vom Grün verdeckt werden! +- algorithmische Lösung des Problems: + - Zuerst: Darstellung aller opaken Objekte ($\alpha$ = 1) nach dem Z-Buffering (reihenfolgeunabhängig) + - Dann Sortieren aller semitransparenten Polygone nach der Tiefe und Zeichnen nach dem Painters-Algorithmus unter Berücksichtigung des Z-Buffers mittels Alpha-Blending! + - Restfehler: sich zyklisch überlappende oder sich durchdringende semi-transparente Flächen → exakte Behandlung durch die vorn beschriebenen Maßnahmen (Unterteilung der Polygone notwendig!) + +%\section{Globale Beleuchtung +- BRDF: physikbasiertes, lokales Reflektionsmodell (Lichtquelle auf Material) → Funktion von Einfalls-, Betrachterwinkel, Wellenlänge (bzw. -breiche) +- Rendergleichung (Kajiya) = BRDF, Integral über alle Lichtquellen (bzw. Hemisphäre) +- Approximation durch lokales Phong-Beleuchtungsmodell → für "einfache" Materialien und Lichtquellen "korrekt genug" +- direkte (lokale) Schattierungsverfahren (Flat-, Gouraud- und Phong-Shading) +- Was noch fehlt: Interreflektionen zwischen Objekten... + - globale Beleuchtung, d.h. jede Fläche kann als Lichtquelle dienen + +%\subsection{ Ray-Tracing +einfaches Ray-Tracing: Strahlenverfolgung, nicht rekursiv +- Strahlen vom Augpunkt (Ursprung des Kamerakoordinatensystems) durch jedes Pixel des Rasters senden → keine Löcher +- Schnittpunktberechnung mit allen Objekten → Schnittpunkt mit dem größtem z-Wert stammt vom sichtbaren Objekt +- Strahlverfolgung (Anwendung des BRDF-Reziprozitätsprinzips) und Aufsummierung der (Lichtquellen-)Anteile aufgrund von material- und geometrieabhängigen Parametern (ggf. neben Relflektion auch Brechung) → Ergebnis: Helligkeits-/Farbwert pro Pixel +- Bestimmung der diffusen und spekularen Lichtreflexion nach dem Phong-Beleuchtungsmodell +- Bis hier nur einfache, lokale Beleuchtung (keine Spiegelung, Schatten, indirekte Beleuchtung)! → Vorzüge des RT kommen erst bei rekursivem Raytracing zum Tragen! + + +%\paragraph{Rekursiver Ansatz +- Berechnung von Sekundärstrahlen am Auftreffpunkt (Reflexions- und Schattenfühler) +- Annäherung der Interreflektionen (mehrfache Reflexion zwischen den Objekten) durch ideale Spiegelung, d.h. Spiegelung des primären Strahls an $\bar{n}$ im Auftreffpunkt und Erzeugung des sekundären Strahls +- beim Auftreffen des Strahls auf ein weiteres Objekt B Berechnung der diffusen und spekularen Reflexion der jeweiligen Lichtquelle (Schattenfühler, Phong-Modell) sowie Erzeugung eines weiteren Strahls durch ideale Spiegelung +- Addition der Sekundärstrahlen an Objekt B zum Farbwert des Pixel am Objekt A (Anteil bei jeder weiteren Rekursion meistens fallend, da reflektierter Anteil bei jeder Reflexion abgeschwächt wird) → Rekursion kann abgebrochen werden, wenn Beitrag vernachlässigbar! + + +%\paragraph{Brechungseffekte +Transparenz unter Berücksichtigung der Brechung beim Ray-Tracing: Richtung des gebrochenen Strahls berechnet sich aus dem Einfallswinkel zum Normalenvektor sowie den material- und wellenlängenabhängen Brechungsindices. +$$\eta_{e\lambda}*sin(\theta_e) = \eta_{t\lambda}*sin(\theta_t)$$ +Beispiel Luft-Glas: $\eta_{\text{Luft, rot}}*\sin(\theta_{\text{Luft}})=\eta_{\text{Glas,rot}}*sin(\theta_{\text{Glas}}) \Rightarrow 1.0*\sin(30°)=1.5*sin(\theta_{\text{Glas}})\rightarrow \theta_{\text{Glas}} \approx \arcsin(\frac{\sin(30°)}{1.5})\approx 20°$ + +%![Brechungseffekt; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Brechungseffekt.png) +Die Farbe im betrachteten Punkt wird nicht durch die Farbe von Hintergrundobjekt B1 (wie im Fall nichtbrechender Transparenz) sondern durch die Farbe von B2 beeinflusst! + +Berechnung des Einheitsvektors $\vec{V}_t(\vec{V}_e,n,\theta_t)$ in Richtung der Brechung: +- An Grenzflächen mit unterschiedlichen Brechungsindizes tritt neben der Transparenz ($\vec{V}_t$) auch Reflexion (Komponente mit der Richtung $\vec{V}_r$) auf. +- $\vec{M}$ ist ein Einheitsvektor (Länge=1) mit der Richtung von $\vec{n}*\cos(\theta_e)-\vec{V}_e$ und +- es gilt: $\vec{M}*sin(\theta_e)=\vec{n}*\cos(\theta_e)-\vec{V}_e \rightarrow \vec{M}=\frac{\vec{n}*\cos(\theta_e)-\vec{V}_e}{\sin(\theta_e)}$ +- Effekte an transparentem Material: + - Simulation brechungsbedingter Verzerrungen wird so möglich (z.B. bei optischen Linsen, Wasser). + - Transparentes und reflektierendes Material erzeugt 2 weiter zu verfolgende Sekundärstrahlen. + + + +%\paragraph{Erweiterungen +Unzulänglichkeiten des einfachen rekursiven Ansatzes: +- Reale Objekte sind eher diffus spekular, d.h. ein ganzes Set von Sekundärstrahlen wäre zu verfolgen. +- Die ideale Spiegelung zur Erzeugung von Sekundärstrahlen ist eine sehr starke Vereinfachung +- Aus der Umkehrbarkeit von Licht- und Beleuchtungsrichtung ließe sich eine Menge von Sekundarstrahlen aus dem Phong-Modell $(\cos^n(\theta)$-Term) ermitteln. +- Aus Aufwandsgründen (rein theoretisch wären unendlich viele Sekundärstrahlen zu berücksichtigen) muss vereinfacht werden, z.B. Monte-Carlo-Ray-Tracing + +**Monte Carlo Ray-Tracing**: +- Reflexion ist selten ideal spekular, meist entsteht ein Bündel von Strahlen +- Ansatz: Verfolgung mehrerer "zufälliger" Sekundärstrahlen, deren Beitrag zum Farbwert des Pixel statistisch gewichtet wird. +- Je gestreuter die Reflexion, um so mehr Sekundärstrahlen sind nötig. Sehr breite Remissionskeulen oder gar diffuse Interreflexionen sind wegen des Aufwandes nicht (bzw. nur schwer) behandelbar. + +Beleuchtungsphänomen Kaustik: +- Das Licht der Lichtquelle werde zuerst spekular, dann diffus reflektiert. Beispiel: Lichtstrahlen, die von Wasserwellen reflektiert auf eine diffuse Wand auftreffen. +- Vom Auge bzw. Pixel ausgehendes Ray Tracing versagt wegen des vorzeitigen Abbruchs der Rekursion am diffus remittierenden Objekt. +- Inverses Ray Tracing [Watt/Watt 1992] : Man erzeugt einen von der Lichtquelle ausgehenden Strahl und reflektiert diesen an glänzenden Oberflächen. Auch Photon Mapping kann hier helfen. +- Die reflektierten Lichtstrahlen wirken als zusätzliche Lichtquellen, die dann zu diffusen Reflexionen führen können. + +Optimierungsmöglichkeiten (einfache Hüllgeometrien, Raumzerlegung, ...): +- Berechnung von achsenparallelen Hüllquadern (Bounding Boxes) oder Hüllkugeln (Bounding Spheres) um Objekte aus mehreren Polygonen. + - Zunächst Test, ob der Strahl die Hülle schneidet und falls ja + - → Schnittpunktberechnung von Strahl mit allen Polygonen in der Hülle + - → zunächst Berechnung des Schnittpunktes mit der jeweiligen Polygonebene + - → danach effizienter Punkt-im-Polygon-Test +- Effiziente Zugriffsstruktur auf die Hüllquader: Bäume für rekursive Zerlegungen des 3D-Raumes (Octrees), Binary-Space-Partition-Trees +- Verwendung von direktem, hardware-unterstützten Rendering (z.B. Gouraud- oder Phong-Shading) anstelle von einfachem, nichtrekursivem Ray-Tracing, nur bei Bedarf Erzeugung von Sekundärstrahlen. +- Verwendung von Hardware mit RTX-Unterstützung + +%\paragraph{Zusammenfassung +Anwendung: +- Erzeugung realistischerer Bilder als bei lokalem Shading, da indirekte (spekuläre) Beleuchtungsphänomene physikalisch (geometr. und radiometr.) viel genauer als bei direkter Schattierung berechnet werden können. +- Ray-Tracing ist aufgrund der hohen Komplexität für interaktive Anwendungen (oft noch) wenig geeignet (hardware- und szenenabhängig), mögliche Lösung: Vorberechnung der Bildsequenzen im Stapel-Betrieb (batch mode) + - Fotorealistisches Visualisieren (Designstudien usw.) + - Computeranimation in Filmen +- Interaktive Programme (CAD, Spiele) verwenden noch eher direktes Rendering mit Texturen (shadow map, environment map) um Schatten, Spiegeleffekte oder Brechung zu simulieren. +- Aufwendige Teiloperation: Geometrischer Schnitt im Raum: + - für jedes Pixel: Berechnung des Schnittes eines Strahles mit potentiell allen Objekten der Szene (einfaches Ray-Tracing, ohne Rekursion) + - z.B. Bildschirm mit 1.000 x 1.000 Pixeln und 1.000 Objekten + - **Rekursives Ray-Tracing** für den ideal spiegelnden Fall: Anzahl der Operationen wächst zusätzlich, d.h. Multiplikation des Aufwandes mit der Anzahl der Reflexionen und Refraktionen und Lichtquellen (Schattenfühler) → für ca. 4 Rekursionsstufen bei 2 Lichtquellen haben wir etwa $4*(2 + 1) = 12$ Millionen Strahlen, was schon bei 1.000 Objekten 12 Milliarden Schnittoperationen bedeutet. + - **Monte-Carlo-Ray-Tracing** für die Approximation diffuser Anteile: Weiteres Anwachsen der Anzahl an erforderlichen Operationen durch zusätzliche Verfolgung sehr vieler Sekundärstrahlen (durchschnittlich 10 pro Reflexion) → Mehrere 100 Millionen bis Milliarden Strahlen (bzw. Billionen Schnittoperationen) + - Durch **effiziente räumliche Suchstrukturen** kann die Anzahl der tatsächlich auszuführenden Schnittoperationen wesentlich reduziert werden. Die Anzahl der Schnitte steigt nicht mehr linear (sondern etwa logarithmisch) mit der Anzahl der Objekte (siehe räumliche Datenstrukturen). Damit ist auch bei großen Szenen nur noch die Anzahl der Strahlen wesentlich → je nach Bildauflösung und Verfahren, mehrere Millionen bis Milliarden Strahlen! +- Eigenschaften des Ray-Tracing-Verfahrens: + - Implementierung ist konzeptionell einfach + einfach parallelisierbar. + - Hohe Komplexität durch Vielzahl der Strahlen, deshalb meistens Beschränkung auf wenige Rekursionen. + - Exponentielle Komplexität bei Monte-Carlo-Ray-Tracing bzw. wenn alle Objekte gleichzeitig transparent (Brechung) und reflektierend sind. +- Resultat: + - RT ist sehr gut geeignet, wenn die spiegelnde Reflexion zwischen Objekten (und/oder die Brechung bei transparenten Objekten) frei von Streuung ist. + - Die diffuse Reflexion zwischen Objekten wird beim Ray-Tracing durch ambiente Terme berücksichtigt. Eine bessere Beschreibung dieser Zusammenhänge ist mit Modellen der Thermodynamik möglich. +- Weitere Ansätze: + - Cone-Tracing - statt eines Strahles wird ein Kegel verwendet, der die Lichtverteilung annähert [Watt/Watt 1992]. + - Radiosity (siehe Abschnitt weiter unten) + - Photon Mapping (nächster Abschnitt) + +%\subsection{ Photon Mapping +- Verfahren von Henrik Wann Jensen 1995 veröffentlicht +- angelehnt an Teichencharakter des Lichts +- 2-stufiges Verfahren +- Quelle: Vorlesung von Zack Waters, Worcester Polytechnic Inst. + +%![Photonmapping; Quelle Vorlesung Computergrafik 2020](Assets/Computergrafik_Photonmapping.png) + +1. Phase: Erzeugung der Photon Map + 1. Photonenverteilung in der Szene: Von der Lichtquelle ausgestrahlte Photonen werden zufällig in der Szene gestreut. Wenn ein Photon eine Oberfläche trifft, kann ein Teil der Energie absorbiert, reflektiert oder gebrochen werden. + 2. Speichern der Photonen in der Photon Map Daten enthalten also u.a. Position und Richtung beim Auftreffen sowie Energie für die Farbkanäle R,G,B + - Photon wird in 3D-Suchstruktur (kd-Baum) gespeichert (Irradiance cache) + - Reflektionskoeffizienten als Maß für Reflektionswahrscheinlichkeit (analog Transmissionswahrscheinlichkeit) + - dafür: Energie bleibt nach Reflexion unverändert. Neue Richtung wird statistisch auf Basis der BRDF gewählt. +2. Phase: Aufsammeln der Photonen aus Betrachtersicht (gathering) + - Verwende Ray-Tracing um für den Primärstrahl von der Kamera durch einen Pixel den Schnittpunkt x mit der Szene zu bestimmen. Basierend auf den Informationen aus der Photon Map werden für x folgende Schritte ausgeführt: + 1. Sammle die nächsten N Photonen um x herum auf durch Nächste-Nachbar-Suche in der Photon Map (N = konst., z. B. 10) + 2. S sei die (kleinste) Kugel, welche die N Photonen enthält. + 3. Für alle Photonen: dividiere die Summe der Energie der gesammelten Photonen durch die Fläche von S (→ Irradiance) und multipliziere mit der BRDF angewendet auf das Photon. + 4. Dies ergibt die reflektierte Strahldichte, welche von der Oberfläche (an der Stelle x) in Richtung des Beobachters abgestrahlt wird. + +%\subsection{ Radiosity +Grundprinzip des Radiosity-Verfahrens: +- Ansatz: Erhaltung der Lichtenergie in einer geschlossenen Umgebung +- Die Energierate, die eine Oberfläche verlässt, wird Radiosity (spezifische Ausstrahlung) genannt. +- Die gesamte Energie, die von einer Oberfläche (Patch, Polygon) emittiert oder reflektiert wird, ergibt sich aus Reflexionen oder Absorptionen anderer Oberflächen (Patches, Polygone). +- Es erfolgt keine getrennte Behandlung von Lichtquellen und beleuchteten Flächen, d.h. alle Lichtquellen werden als emittierende Flächen modelliert. +- Da nur diffuse Strahler (Lambertstrahler) betrachtet werden, herrscht Unabhängigkeit der Strahldichte vom Blickwinkel vor. +- Die Lichtinteraktionen werden im 3D-Objektraum (ohne Berücksichtigung der Kamera) berechnet. +- Danach lassen sich beliebig viele Ansichten schnell ermitteln (Ansichtstransformation, perspektivische Projektion, Verdeckungsproblematik, Interpolation). + +Die gesamte von Patch $A_s$ stammende Strahldichte an der Stelle von $dA_r$ ist: $L_r=\beta_r(\lambda)*\int_{A_s}\frac{L_s}{\pi * r^2}*\cos(\theta_s)*\cos(\theta_r)*dA_s$ (s=Sender, r=Reveiver) +%![Radiosity; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Radiosity.png) + +Für das Polygon $A_r$ ist die mittlere Strahldichte zu ermitteln! +$$L_r=\beta_r(\lambda)*\frac{1}{A_r}*\int_{A_r}\int_{A_s}\frac{L_s}{\pi*r^2}*\cos(\theta_s)*\cos(\theta_r)*dA_s*dA_r$$ +Die Geometrieanteile aus dieser Gleichung werden als Formfaktoren bezeichnet (+Sichtbarkeitsfaktor $H_{sr}$). +$$F_{sr}=\frac{1}{A_R}\int_{A_r}\int_{A_s}\frac{\cos(\theta_s)*\cos(\theta_r)}{\pi*r^2}*H_{sr}*dA_s*dA_r, H_{sr}=\begin{cases}1\rightarrow A_s \text{ sichtbar}\\ 0\rightarrow A_s \text{ unsichtbar}\end{cases}$$ +Für Flächen, die klein im Verhältnis zu ihrem Abstand sind, ergibt sich eine Vereinfachung des Formfaktors. In diesem Fall können die Winkel $\theta_s,\theta_r$ und Radius r über den zu integrierenden Flächen als konstant (Mittelwerte) angenommen werden. +$$F_{sr}=A_S \frac{\cos(\theta_s)*cos(\theta_r)}{\pi*r^2}*H_{sr}$$ + +Bei dicht benachbarten Flächen gelten die obigen, vereinfachenden Annahmen u.U. nicht mehr. Es müsste exakt gerechnet oder in diesen Bereichen feiner untergliedert werden. +Wird statt $\beta8\lambdaβ$ vereinfachend ein konstanter Remissionsfaktor R (R diff im monochromatischen Fall oder $R_{diff R}, R_{diffG}, R_{diffB}$ für die drei typischen Farbkanäle) eingeführt, so ergibt sich zwischen der Strahldichte $L_r$ der bestrahlten Fläche und der Strahldichte $L_s$ der bestrahlenden Fläche der folgende Zusammenhang: $L_r=R_r*F_sr*L_s$ + +Jedes Patch wird nun als opaker Lambertscher (d.h. ideal diffuser) Emitter und Reflektor betrachtet (d.h. alle Lichtquellen werden genauso wie einfache remittierende Flächen behandelt, allerdings mit emittierendem Strahldichte-Term $L_{emr}$). $L_r=L_{emr}+R_r*\sum_S F_{sr}*L_s$ + +Es ergibt sich schließlich als Gleichungssystem: +$$ \begin{pmatrix} 1-R_1F_{11} & -R_1F_{12} &...& -R_1F_{1n}\\ 1-R_2F_{21} & -R_2F_{22} &...& -R_2F_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ 1-R_nF_{n1} & -R_nF_{n2} &...& -R_nF_{nn} \end{pmatrix} * \begin{pmatrix} L_1\\L_2\\\vdots\\L_n \end{pmatrix} = \begin{pmatrix} L_{em1}\\L_{em2}\\\vdots\\L_{emn} \end{pmatrix}$$ +Das Gleichungssystem ist für jedes Wellenlängenband, das im Beleuchtungsmodell betrachtet wird, zu lösen ($R_r, R_{rR}, R_{rG}, R_{rB}, L_{emr}$ sind im Allgemeinen wellenlängenabhängig). + +%\paragraph{Adaptives Refinement +Adaptives Radiosity-Verfahren: +- vereinfachte Formfaktor-Berechnung ist ungenau bei eng beieinander liegenden Flächenstücken (z. B. in der Nähe von Raumecken), oder bei kontrastreichen Übergängen) +- deshalb adaptive Unterteilung solcher Flächen in feinere Polygone + +Im adaptiven Radiosity-Verfahren werden deshalb große Flächen (insbesondere dort wo Flächen relativ hell sind im Vergleich zur Nachbarfläche → kontrastreiche Übergänge) unterteilt. Die Notwendigkeit wird durch erste Berechnung mit grober Unterteilung geschätzt. + +%\paragraph{Progressive Refinement +- das Radiosity-Verfahren ist sehr aufwendig (Bestimmung aller Formfaktoren, Anwendung des Gauß-Seidel-Verfahrens zum Lösen des Gleichungssystems) +- jedoch viel weniger Samples als Monte-Carlo-Raytracing (1 mal pro Kachel-Paar mal Anzahl Interationen)! +- beim progressive Refinement ist die inkrementelle Approximation des Ergebnisses des exakten Algorithmus durch ein vereinfachtes Verfahren wünschenswert +- ein entsprechender Algorithmus, der die Patches einzeln behandelt, stammt von Cohen, Chen, Wallace und Greenberg +- akkumuliert mehr Energie in jedem Schritt, verletzt Gleichgewicht der Strahlung → Korrektur notwendig: + $L_r^{k+1}=L_{emr} + R_r*\sum_s F_{sr}* L_s^k$ + + +%\paragraph{Radiosity Eigenschaften +- ausschließlich Berücksichtigung der diffusen Reflexion +- blickwinkelunabhängig, direkt im 3D-Raum arbeitend +- realistische Schattenbilder, insbesondere Halbschatten (viele, bzw. flächig ausgedehnte Lichtquellen) +- sehr rechenintensiv, deshalb meist Vorausberechnung einer Szene in 3D +- → Beleuchtungsphänomene wie z.B. indirektes Licht (besonders augenfällig in Innenräumen, Museen, Kirchen, Theaterbühnen usw.) sind mit Radiosity sehr gut/realistisch darstellbar. +- → die Kombination von Radiosity und Ray Tracing (und ggfs. anderen Verfahren/Filtern etc) ermöglicht computergenerierte Szenen mit sehr hohem Grad an Realismus. + +%\subsection{ Zusammenfassung +- BRDF für physikbasierte, lokale Berechnung der Reflexion von Lichtquellen als Funktion von Einfallswinkel und Betrachterwinkel (evtl. wellenlängenabhängig, oder einfach durch RGB) +- Rendergleichung (Kajiya) = BRDF, Integral über alle Lichtquellen (bzw. Hemisphäre) +- für indirekte Beleuchtung / Global Illumination: (verschiedene algorithmische Verfahren unter Verwendung der lokalen Beleuchtung (BRDF) + - (rekursives) Raytracing (einfache Spiegelung, Brechung, Schatten) + - Monte Carlo RT, (gestreute Spiegelung, diffuse Reflexion), Backward Ray Tracing (Kaustik), Photon Mapping → jedoch extrem rechenaufwendig!) + - Radiosity (indirekte diffuse Reflexion – sichtunabhängige Voraus-berechnung in 3D für statische Szenen) +- verschiedene Verfahren können kombiniert werden um die globale Beleuchtungsphänomene effizienter zu berechnen. – z. B. Radiosity + Ray Tracing: Indirekte diffuse Beleuchtung + Spiegelung und Schatten, etc. + +%\section{Texture Mapping +%\subsection{ Bildbasiertes Rendering +%\paragraph{Überblick +- typische Anwendung: Applizieren von 2D-Rasterbildern auf 3D-Modellen + - Beispiele: Hausfassade, Holz-, Marmor-, Steintexturen, Tapeten, Stoffe etc. +- 3D-Objekte mit relativ einfachen Polygonen modelliert. - Details als Texturen, (d.h. als Raster-Bilder) – gelegentlich "Impostor" genannt. +- Texture-Mapping als Erweiterung des einfachen Pattern-Filling (siehe. Polygonfüllalgorithmus) +- als Verallgemeinerung auch Image-based Rendering genannt +- Verwendung unterschiedlicher 3D-Transformationen und Beleuchtungsarten + - Spezielle Effekte! (Reflexionen, Schatten, ..) + +Erzeugung von Texturen: +- "reale" Texturen aus realen rasterisierten/digitalen Fotografien (aus Pixeln = "Picture-Elementen" werden Texel = "Texturelemente") vs. +- "berechnete" Texturen → synthetische Computergrafik-Bilder: + - vorberechnete reguläre Texturen (basieren auf Texeln) vs. + - nach Bedarf erzeugte statistische bzw. prozedurale Texturen (Absamplen von mathematischen Beschreibungen, ggf. beliebig genau) + +Anwendung von Texturen - Grundprinzipien: +- Transformation des Texturraums in den Bildraum der Darstellung: Verwendung unterschiedlicher geometrischer Transformationen (je nach Anwendungszweck) +- Resampling: transformiertes Texturraster wird aufs Bildraster "gerundet" +- Filtern: Verhindern/Abmildern von resampling-basierten Aliasing-Effekten +- Beleuchtung: RGB-Werte der Textur dienen als Materialattribute bei der Beleuchtungsrechnung + +Unterschiedliche Arten des Texturmappings (Transformationsfunktion): +- Parametrisches Mapping: Ein Rasterbild wird auf ein 3D-Polygon aufgebracht, indem man den Eckpunkten (x,y,z) des Polygons 2D-Texturkoordinaten (u,v) explizit zuordnet. + - affines Texturmapping: direkte affine Abbildung der Textur auf projizierte Polygone im Bildraum + - perspektivisches Texturmapping: Zwischenabbildung der Textur in den 3D-Objektraum und perspektivische Projektion in den Bildraum +- Projektives Texturmapping: Verwendung unterschiedlicher Projektionsarten (parallel, perspektivisch, eben, zylindrisch, sphärisch) +- Environment-Mapping: Spiegelung der Textur an der Oberfläche (bzw. Refraktion) mit entsprechender Verzerrung + - Transformation abhängig von Kameraposition! + +%\paragraph{Affines Texturemapping +Durch Zuordnung von 3 Punkten im Bildraster zu den entsprechenden 3 Punkten im Texturraster erhält man ein Gleichungssystem mit 6 Gleichungen und 6 Unbekannten $(a_u , b_u , c_u , a_v , b_v , c_v )$: +- $P_1: u_1=a_u*x_1+b_u*y_1+c_u; v_1=a_v*x_1+b_v*y_1+c_v$ +- $P_2: u_2=a_u*x_2+b_u*y_2+c_u; v_2=a_v*x_2+b_v*y_2+c_v$ +- $P_3: u_3=a_u*x_3+b_u*y_3+c_u; v_3=a_v*x_3+b_v*y_3+c_v$ + +Für jedes Pixel(x,y) im Polygon: Resampling der Textur(u,v) bei der Rasterkonvertierung (Polygonfüllalgorithmus) + +Für jedes Pixel(x,y) finde die Texturkoordinaten(u,v), d.h.: +- Rückwärtstransformation vom Ziel zum Original → keine Löcher im Bild! +- ABER: Texturkoordinaten können übersprungen oder wiederholt werden! +- Störsignale (Aliasing) → Filterung notwendig! + +Affines Mapping der Vertices x,y auf u,v → lineare Interpolation der u/v-Texturkoordinaten zwischen den Vertices für jedes Pixel (ähnlich wie RGB- bzw. Z-Werte im Polygonfüllalgorithmus, durch Ganzzahlarithmetik) + +%![Affines Texturmapping; Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Affines-Texturmapping.png) + +Problem: Durch affine 2D-Abbildungen können nur Transformationen wie Rotation, Skalierung, Translation, Scherung in der Bild-Ebene abgebildet werden, aber keine Perspektive! → Abbildungsfehler zwischen den Eckpunkten! (kleine Dreiecke → kleiner Fehler!) + +%\paragraph{Perspektivisches Texture-Mapping +Beispiel: affine 3D-Abbildung der Textur per 4x4-Matrix auf 3D-Modell: +Texturraum → Objektraum: Rotation, Translation, Skalierung (...) dann Objektraum → Bildraum: Projektion (selbe wie bei Geometrieprojektion) + +%![Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Perskeptivisches-Texture-Mapping.png) + +entspricht affinem Textur-Mapping mit einem zusätzlichen Zwischenschritt, der Bestimmung der Objektraumkoordinaten: +- Matrix $M_{to}$: Koordinatentransformation vom Texturraum in den 3D- Objektraum (affine Abb.: 3D-Translation, -Rotation, -Skalierung) +- Matrix $M_{oi}$ : Koordinatentransformation vom Objektraum in den Bildraum (Kameratransformation, perspektivische Abbildung) +- Matrix $M_{ti}$: gesamte Koordinatentransformation vom Texturraum direkt in den Bildraum: $M_{ti} = M_{to}*M_{oi}$ +- Matrix $M_{ti}^{−1}$: Inverse Koordinatentransformation vom Bildraum zurück in den Texturraum + +→ 4x4-Matrix für homogene Koordinaten. Perspektivische Abbildung im Bildraum durch Division durch z, für jedes Pixel (wesentlich aufwendiger als lineare Interpolation) + +Vergleich: Perspektivisches / Affines Texture Mapping: +- perspektivisches Textur-Mapping liefert auch bei perspektivischer Ansicht geometrisch korrekte Bilder +- etwas höherer Berechnungsaufwand pro Polygon, da für jedes Polygon zwei Transformationsmatrizen und eine inverse 4x4-Matrix bestimmt werden müssen +- wesentlich höherer Berechnungsaufwand pro Pixel: Matrixmultiplikation plus (floating-point) Division! +- bei affinem Textur-Mapping können hingegen einfach die Texturkoordinaten (u/v) zwischen den Polygonecken linear interpoliert werden: + - ähnlich wie bei anderen Attributen (z. B. x-Koordinate (s. Edge-Scan), r/g/b-Werte (s. Gouraud-Shading), Tiefenwerte (1/z) funktioniert dies inkrementell und mit Ganzzahlarithmetik (als Teil des Polygonfüllalgorithmus) + - je kleiner die Polygone im Bild, desto kleiner der Fehler beim affinen Texturemapping (Ansatz: feinere Unterteilung der Polygone in kleinere Dreiecke → dafür jedoch mehr Polygone!) + +%\paragraph{Textur-Mapping mit Polygon-Schattierung +Eingliederung in die Render Pipeline +- Bestimmung der zum Polygon gehörenden sichtbaren Pixel im Bildraum (Polygonfüllalgorithmus) +- Ermittlung der zur jeder Pixelkoordinate gehörenden Texturkoordinate mit Hilfe der inversen Transformationsmatrix $M_{ti}^{−1}$ +- Ermittlung der Farbe des zu setzenden Pixels aus dem Texturraster (und gegebenenfalls weitere Schattierung aus der Beleuchtungsrechnung) +- Beleuchtungsrechnung, z.B.: Multiplikation der Helligkeit einer beleuchteten diffusen weißen Oberfläche mit den r/g/b-Werten der Textur (Lambert Modell) + + +%\paragraph{Weitere Texturarten +- Texturen mit Transparenz: RGBA-Wert zu jedem Pixel gespeichert, d.h. beim Rendern wird Alpha Blending mit der Hintergrundfarbe angewendet +- Video Texture: zeitlich veränderliche Textur, d.h. dynamische Veränderungen wie z.B. Feuer, Rauch (mit Alpha-Blending über Hintergrund / Billboard) oder Fernseher in der Wohnung mit Programm“ (ohne Alpha-Blending) +- Solid Textures: + - Textur als 3D-Array (u/v/w-Koordinaten, bzw. Voxel) → gespeicherte RGB(A)-Werte pro Voxel + - Abbildung über affine 3D-Transformation xyz auf uvw + - beim Rendern entweder auf Vertices angewendet und dann für Pixel linear interpoliert oder für jedes Pixel einzeln angewendet (Pixelshader) + - Anwendungsbsp.: Schnitt durch Material (z.B. Massivholz, Marmor) oder Volume Rendering (Überlagerung von Schichten) mit Alpha Blending, z.B. Computertomoraphie (CT-Daten) + - ggfs. auch Videotextur als Spezialfall einer Solid Texture: Zeit als 3. Dim. + +%\paragraph{Projektives Textur-Mapping +Berechnung der Texturkoordinaten aus der aktuellen Position der einzelnen Polygone (Analogie: Projektion eines Diapositivs auf ein räumliches Objekt) + +Beispiel: Parallelprojektion mit fixer Position des Projektors zum Objekt +- 2D-Textur (Bsp. Gitter aus Millimeterskalen) +- Parallelprojektion der Textur auf einen Zylinder mit abgeschrägten Endflächen +- Projektion ist relativ zum Objekt definiert, d.h. die Textur bewegt sich mit dem Körper, sofern man diesen bewegt +- markierte Bereiche (1 bzw. 2) haben auf Zylinder stets identische Positionen +- keine explizite Zuordnung von uv-Koordinaten zu Polygoneckpunkten notwendig, weniger Modellieraufwand! + +Anwendungsbeispiele für projektives Textur-Mapping (Parallel- oder Zentralprojektion): +- Darstellung geometrischer Eigenschaften (geometrische Details, parallel, fixe Position des Projektors zum Objekt, senkrecht zur Fläche) +- einfache Darstellung von Parameterlinien (sofern die Textur senkrecht auf die Projektionsebene projiziert wird, parallel, fixiert bezgl. Objekt) +- Simulation eines Lichtkegels (Repräsentation der Leuchtdichteverteilung der Lichtquelle (Lichtfeld) als Rasterbild in einer Textur, zentral, fix in Weltkoordinaten) + +Zylindrisches Textur-Mapping: +- radiale Projektion der Textur-Koordinaten auf eine Zylinderoberfläche +- visueller Effekt für zylinderähnliche Objekte ähnlich zu parametrischem Textur-Mapping, z.B. Etikett auf Flasche, Dose, etc. + +Sphärisches Textur-Mapping: +- Zentralprojektion der Textur-Koordinaten auf eine Kugeloberfläche +- Vorteil des projektiven Texturmappings: Eine explizite Zuordnung der 3D-Punkte zu Texturkoordinaten mit stetiger Fortsetzung der Parametrisierung an den Polygongrenzen entfällt → weniger Modellieraufwand! + +%\paragraph{Environment Mapping +Spezialfall des projektiven Textur-Mapping: +- Simulation der Reflexion der Umgebung an einer reflektierenden Fläche +- Darstellung abhängig von der Position des Betrachters sowie von den Normalen der reflektierenden Fläche +- Textur entspricht der Lichtquelle für die Beleuchtung durch die Umgebung (Environment Map): Sphere Map bzw. Cube Map + +Mapping der Textur auf die spiegelnde Oberfläche: +- Aussenden eines Strahls vom Auge auf einen Punkt der spiegelnden Oberfläche +- Ermittlung der Reflexionsrichtung entsprechend dem Einfallswinkel des Strahl zur Flächennormale +- damit Bestimmung des zu reflektierenden Punktes in der Umgebung, d. h. des entsprechenden Textur-Pixels aus der Environment Map + +Grundannahme beim Environment Mapping: +- relativ große Entfernung der reflektierten Objekte von der spiegelnden Fläche + +Erzeugung einer Cube Map-Textur: +- Aufteilung der Environment Map in sechs Bereiche, die den sechs Flächen eines Würfels um die spiegelnde Fläche herum entsprechen +- Rendern der Umgebung sechs mal mit einem Kamera-Sichtfeld von jeweils 90 Grad aus dem Mittelpunkt des Würfels +- Alternativ: Digitale Aufnahme und Einpassen der sechs Flächen mittels Image Warping in die jeweiligen Zonen der Environment Map +- Strahlverfolgung: Sehstrahl wird an den Eckpunkten des Objekts (entsprechend den Normalen) gespiegelt und dreidimensional mit den 6 Wänden der Cube Map geschnitten. +- Daraus ergibt sich eine Zuordnung von Objektkoordinaten (x/y/z) und Texturkoordinaten (u/v). +- Die Transformation kann wie beim perspektivischen Texturmapping berechnet werden und beim Rasterisieren für die dazwischen liegenden Pixel angewendet werden. +- Effekt ähnlich wie bei Raytracing, jedoch geometrisch angenähert (gespiegelte Objekte sind nur als 2D-Raster-Bild repräsentiert) +- keine aufwändigen Strahl-Objektschnitte (wie beim Raytracing) notwendig (Sehstrahl wird von den dargestellten Dreiecksecken zurückgerechnet!) +- Näherung wird ungenau, wenn das spiegelnde Objekt weit weg ist von der Kameraposition, welche für die Generierung der Cube-Map verwendet wurde +- nur Einfachreflexion +- Cube Maps können dynamisch (durch Offline-Rendering in Texturbuffer) generiert werden. Dadurch auch bewegte gespiegelte Objekte in Echtzeit darstellbar +- Beachte: gespiegeltes Dreieck kann auf zwei oder mehrere Wände der Cube Map fallen. Dies kann durch mehrfaches Mapping und Clipping gelöst werden. + +Environment Mapping [Haeberli/Segal 1993] für Kugel und Torus: +- Unterschiedliche Ausrichtung der Objektoberfläche sorgt für korrekte Verzerrung der spiegelnden Objekte. Die Darstellung der spiegelnden Objekte (Geometrie und Material) steht beim Environment-Mapping im Vordergrund und nicht die korrekte geom. Darstellung gespiegelter Objekte! +- Alle Raumrichtungen werden auf der Kugeloberfläche abgebildet. Je nach Aufnahmegeometrie mehr oder weniger großer blinder Fleck“ hinter der Kugel. + +%![Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Environment-Map-Kugel.png) + +Erstellung einer Spherical-Environment-Map-Textur: +- spiegelnde Kugel in der Mitte einer Szene +- Fotografie der Kugel mit einer Kamera sehr großer (unendlicher) Brennweite aus großem (unendlichem) Abstand (parallele Projektionsstrahlen) +- Entstehung einer kreisförmigen Region in der Textur-Map mit den Tangenten jeweils an den Außenkanten +- Texturwerte außerhalb des Kreises werden nicht benötigt +- Wahl der Blickrichtung(-en) wichtig für spätere Anwendung! + +Anwendung einer Spherical Environment Map: +- Zur Bestimmung der Texturkoordinate eines dargestellten Punktes wird zuerst die Normale n an diesem Punkt bestimmt. +- Die Normale n wird auf die x/y- Ebene projiziert. Die Koordinaten des projizierten Normalenvektors entsprechen den Texturkoordinaten in der Sphere Map, welche die an dieser Stelle reflektierte Umgebung zeigt. +- Merke: Die Reflexion ist nicht von der Lage des reflektierenden Punktes abhängig (nur von der Normalenrichtung). + +Environment Map in latitude-/longitude-Koordinaten: +- Spiegelung wird aus Richtung des gespiegelten Strahls in Winkelkoordinaten (lat/long) berechnet +- entweder pro Pixel (Pixel-Shader) oder pro Vertex mit anschließender (linearer) Interpolation pro Pixel +- keine Berücksichtigung der Position des spiegelnden Objekts +- korrekt nur für unendlich entfernte gespiegelte Objekte → geeignet zur Spiegelung weit entfernter Objekte (Landschaften, große Räume auf relativ kleinen Objekten) + + +High-dynamic Range Imaging (HDRI) Env-Maps: +- enthalten "gesamte Dynamik" des Lichts (als Floating Point Farbwerte) + - Wesentlich realistischere Bilder! +- Tone Mapping: berechnete HDRI-Bilder werden anschließend auf die Dynamik des Monitors reduziert +- Refraktion / Brechung mit Environment Maps: + - wie Spiegelung, jedoch Sekundärstrahl aus Sehstrahl über Brechungsindex und Oberflächennormale, statt gespiegelt + - Beispiel: Glas als Polygonflächen mit Rückseite + Normalen (2-fache Brechung!) + Spiegelung als Multi-Pass (Überlagerung zweier Effekte) + - kann im Zusammenhang mit Cube-Maps, Spherical oder Lat/Long Environment Maps angewendet werden + + +%\subsection{ Mip-Mapping +Was? aus Originaltextur Bildung einer Menge jeweils kleinerer Texturen (halbe Kantenlänge) + +Wozu? Vermeidung/Abmilderung von Aliasing-Effekten durch "Vorfilterung" und Anwendung der passend aufgelösten Textur(-en) (1 Pixel ≈ 1 Texel) per bilinearer Filterung oder trilinearer Filterung + +%\paragraph{Sampling-Artefakte +Aliasing-Effekte durch Koordinatentransformation: +- Pixel der Textur und Pixel des dargestellten Bildes weisen (aufgrund der Bildtransformation) im Allgemeinen unterschiedliche Rastergrößen auf. +- simpler Ansatz: Berechnung der transformierten Texturkoordinaten als Floating-Point-Werte und Rundung auf ganze Zahlen +- bei inverser Transformation vom Zielbild zurück zur Textur dann keine Lücken im Bild, aber die Pixel der Textur können ausgelassen oder mehrfach verwendet werden (Bildpixel werden genau einmal angewendet) +- durch das Resampling der Textur auf das resultierende Bildraster entstehen oft Aliasing-Artefakte + +Zwei wesentlich unterschiedliche Situationen: +- Abbildung mehrerer Texturpixel auf ein Bildpixel (Unterabtastung) oder +- Abbildung eines Texturpixels auf mehrere Bildpixel ( Überabtastung) + - Filteroperationen zur Interpolation der Bildpixel-Färbung in jedem Fall notwendig, insbesondere bei der Unterabtastung wird ein vorheriges Tiefpassfiltern und Resampling notwendig! + - Ansonsten Verletzung des Abtasttheorems / Nyquistfrequenz! + +Beispiel perspektivische Verkürzung der Schachbretttextur: +- in Realität eigentlich starke Verkleinerung der Textur bei größerer Entfernung! +- → Moiré Muster - Originaltextur ist an diesen entfernten Stellen im Bild zur Laufzeit nicht mehr erkennbar (Unterabtastung, aus mehreren Texeln, welche "hinter einem Pixel liegen“, wird nur einer ausgwählt) + - Treppenstufen im Nahbereich resultieren aus Überabtastung (mehrere Pixel teilen selben Texel) +- Lösung: Textur muss vorher passend durch Tiefpassfilter in der Auflösung reduziert werden → Aufbau und Anwendung einer Mip-Map +- Ziel der Mip-Map: stets 1 Texel pro Pixel bereitstellen + + +%\paragraph{Aufbau +- In 3D-Szenen können Körper mit der selben Textur vom Betrachter unterschiedlich weit weg sein. → im Bild oft Unterabtastung (Minification) oder Überabtastung (Magnification) und entsprechende Aliasing-Effekte durchs Resampling! +- Ansatz: Vorberechnung derselben Textur für verschiedene Entfernungen + - Stufe 1: volle Auflösung + - Stufe 2: halbe Auflösung in jeder Richtung $(1/2)$ + - ... + - Stufe k: Auflösung $(1/2)^k$ + - Stufe n: niedrigste Auflösung (je 1 Pixel für z.B. R, G und B) +- Speicherbedarf: + - (hypothetische) Annahme: Anordnung im Array (getrennt f. RGB) → Alle niedrigen Auflösungen verbrauchen zusammen nur ein Viertel des Speicherplatzes + - Mip steht für lat. multum in parvo = viel (Information) auf wenig (Speicherplatz) + - niedrige Auflösungsstufen werden durch Filterung aus den höheren berechnet: + - einfach: z.B. Mittelwert aus 4 Pixeln (Box-Filter) oder + - aufwendiger: z.B.: Gaußfilter (siehe Kap. Bildverarb.) + +%\paragraph{Anwendung +- Beispiel: OpenGL-Filteroperationen im Bildraum (zur Laufzeit ausgeführt): + - GL\_NEAREST: Annahme des Wertes des nächstliegenden Textur-Pixels + - GL\_LINEAR: bilineare Interpolation: gewichteter linearer Durchschnitt aus einem 2x2-Feld der am nächsten liegenden Texturpixel +- Genauere Interpolationsverfahren (z.B. bikubisch) gelten als zu aufwendig für Echtzeitanwendung +- Beispiel für stark vergrößerte Textur: + - Aus der Nähe betrachtet, wird das Texturraster auf dem Bildraster entsprechend skaliert (vergrößert). + - durch Runden der Texturkoordinaten (d.h. ohne Filterung) + - mit bilinearem Filter gewichtete Texturfarbwerte proportional zum Abstand vom gerundeten Koordinatenwert + +%\paragraph{Zusammenfassung +Aufbau der Mip-Map (als Vorverarbeitungsschritt beim Rendering): +- Speicherung der Originaltextur +- rekursive Speicherung der geringer aufgelösten Texturen (je 1/2 Kantenlänge) bis hinunter zu einem einzelnen Pixel + +Vorteile: +- Filter-Operationen können bei Initialisierung der Textur vorausberechnet werden +- nur ein Drittel zusätzlicher Speicherplatzbedarf + +Darstellung mit Mip-Map Texturen (zur Laufzeit) +- Auswahl der passenden Auflösungsstufe k Skalierung berechnet aus der Entfernung zum Betrachter und der perspektivischen Verkürzung (siehe Kameratransf.): $d/z = (1/2)^k \rightarrow k = log_2(z)-log_2(d)$ +- Transformation der Pixel zwischen den Textur-Eckkoordinaten der gewählten Auflösung auf das Polygon im Bildraum +- typ. Verwendung der linearen Filter zur Vermeidung von Aliasing-Effekten durch Trilineare Filterung: zusätzlich zu bilinearem Filteren in einer Mip-Map-Stufe wird linear gewichtet zwischen zwei Mip-Map-Stufen (auf-, bzw. abgerundete Werte von k) interpoliert: z. B. wenn $k = 2.3 \rightarrow 30\% Anteil_{k=3}$ und $70\% Anteil_{k=2}$ + + +%\paragraph{Anti-Aliasing +Anti-Aliasing durch trilineare Filterung: +- Durch die perspektivische Verkürzung wird eine weiter hinten liegende Textur verkleinert und im Vordergrund vergrößert. Bei einer Skalierung kleiner als 1 überspringt die gerundete inverse Texturtransformation Pixel in der Textur (minification). Die im Bildraum gesampelten Texturpixel werden somit "willkürlich" ausgewählt. Dadurch können Treppenstufen und Moiré-Muster entstehen (Aliasing-Effekt: linkes Bild). Durch Mip-Mapping werden an diesen Stellen geringer aufgelöste (gefilterte) Texturen verwendet (Rechtes Bild: Mit Mip-Mapping und tri-linearer Filterung wird ein Anti- Aliasing-Effekt erreicht) +- Vergrößerte Darstellung: Trilinearen Filterung = lineare Filterung zwischen den zwei aufeinander-folgenden (am besten passenden) Mip-Map-Stufen + bilineare Filterung in jeder der beiden Stufen. → Kantenglättung, Tiefpassfilter (Mittelwert / hier Grauwerte) + +%![Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Mapping-Anti-Alising.png) + +%\paragraph{Rip-Maps +Anisotrope Filterung: +- z.B. bei flacher Aufsicht ist die Verkleinerung in y-Richtung viel stärker als in x-Richtung! +- Ohne spezielle Maßnahmen für diesen Fall müsste jeweils die Mip-Map-Stufe mit der kleinsten Auflösung verwendet werden, sonst treten wieder Aliasing-Artefakte auf! +- → Dies führt zur unscharfen Texturabbildung. +- Abhilfe: Anisotrope Mip-Maps (= Rip-Maps, Rectangular Mip-Maps) + +Anisotropic Mip-Map (Rip-Map): +- Verschiedene Auflösungsstufen in x- und y-Richtung werden erzeugt, sodass für jede Situation die richtige Auflösung gefunden werden kann ohne beim Resampling das Abtast-theorem zu verletzen. +- Aber: Vierfacher Speicherbedarf gegenüber höchster Auflösung (statt 1,33 - s. MipMap) + + +%\subsection{ Weitere Texturarten +%\paragraph{Bump-Map +- Reliefartige Texturen: Herkömmliche Texturen sehen aus der Distanz zwar akzeptabel aus, von Nahem betrachtet erscheinen sie flach. +- Grund: keine korrekte 3D-Beleuchtung, Abschattung, keine Verdeckung, etc. +- Idee: Verwendung zusätzlicher Texturen, welche Tiefeinformationen beinhalten + +- Bump Map: Offset zur Polygonebene in Richtung der Normale als Grauwert“ der Textur kodiert +- Polygon: als Schnitt mit Normalenrichtung +- Anwendung des Offsets auf Polygonfläche (Drehung): Die Normale wird als Gradient der Bumpmap berechnet. Die Beleuchtung wird daraus wie bei der Normalmap pro Pixel berechnet. +- Ein Offset“ wird nicht berücksichtigt! → Als Konturen nicht erkennbar! + +%![Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_Bumpmap.png) + +%\paragraph{Normal-Map +- Normal-Map: Normalen Vektor x/y/z als RGB-Wert kodiert +- Polygon: als Schnitt mit Normalenrichtung +- Anwendung der Normal-Map auf Polygonfläche: Die Normale der N-Map modifiziert die Flächennormale (räumliche Drehung). Bei der Beleuchtungsberechnung wird für jedes Pixel die modifizierte Normale verwendet. +- Ein "Offset" wird nicht berücksichtigt! → Als Konturen nicht erkennbar! + +%\paragraph{Parallax-Map +- Parallax Map Tomomichi Kaneko et al. 2001 +- Ausgangsdaten: Bump Map +- Die u/v-Koordinaten der angezeigten Textur werden Entsprechend der Blickrichtung beim Look-up um $\delta u = h * \tan(\phi)$ verschoben. Die daraus resultierende Verzerrung verstärkt den 3D-Effekt, allerding ohne korrekte Berücksichtigung der Verdeckung +- Anwendung des Offsets auf Polygonfläche (Drehung): Anwendung der Bump Map des Offests auf Polygonfläche (räuml. Drehung der Modellkoord.) Die Normale wird als Gradient der Bumpmap berechnet. Die Beleuchtung wird daraus wie bei der Normalmap pro Pixel berechnet. + +%\paragraph{Displacement-Map +- Ausgang: Wiederum Bump Map, jedoch Bestimmen des korrekten Schnitts eines Sehstrahls mit der Bump Map durch iterative Suche des Schnittpunktes +- Finde $u_0$ , sodass $u-u' = h(u') * \tan(\phi)$ mittels Bisektion entlang dem Sehstrahl +- Bei Mehrdeutigkeit: Finde $u_0$ am weitesten weg von $u$ → korrekte Verdeckung +- Silhouetten: Auch u/v-Koordinaten außerhalb der Polygongrenzen müssen berücksichtigt werden! + - aufwendige Shader Programme nötig + +%\paragraph{Zusammenfassung +- DECAL (Abziehbild) RGBA-Werte ohne Berücksichtigung der Beleuchtung (emmisiv, evtl. mit Alpha Wert (A) für transparente Anteile) +- DIFFUSE: RGB-Werte werden als diffuser Farbanteil mit Beleuchtung verrechnet +- Graustufen: Helligkeitsweit wird mit dem diffusen Materialfarben mutlipliziert. +- Specular Map: Wie bei Diffuse Texture Map, jedoch für spekulären Anteil +- Normal Map: Normalisierte Normalenrichtung (als 2farbiges Rasterbild). Dient zur Modulierung der Flächennormalen und wird bei der Beleuchtung berücksichtigt. Farbwerte kommen aus der Materialkonstante des Polygons, oder aus der Diffuse Map (bzw. Specular Map). Ergibt aus der Ferne eine dreidimensionalen (reliefartige) Struktur. +- Bump Map: Statt der Normalen wird eine Erhöhung (in Richtung der Normalen) kodiert (grauwertiges Rasterbild). Die Normalenrichtung wird daraus als Gradient (Differenz zweier benachbarter Pixel) bei der Darstellung abgeleitet. Danach Beleuchtung wie Normal Map. +- Parallax Map: zusätzlich Pixelverschiebung als Funktion der Höhe und Kamerarichtung + +%\subsection{ Shadow Mapping +1. Durchgang: + - Erzeugen der Shadow Map + - Darstellung (mit z-Werten) aus Sicht der Lichtquelle + - Kamera Koordinaten in der Lichtquelle zentriert (Matrix L) + - z-Puffer als Textur speichern +2. Durchgang: + - Kamera Ansicht: View Matrix: V (ebenfalls mit z-Puffer) + - → Um den Schatten zu erzeugen benötigen wir Shader mit Lookup in der Shadow Map-Textur: + - 4x4-Matrix: $M = V^{-1}*L$ + +%![Quelle Computergrafik Vorlesung 2020](Assets/Computergrafik_ShadowMap.png) + +Shadow map look-up: +- Transformiere jedes Pixel aus dem Kameraraum in den Lichtraum +- $p'=L*V^{-1}*p$ +- Vergleiche transformierte z-Werte $(p'_z)$ mit den z-Werten der Shadow Map $(z_s)$ + - $(p'_z>z_s)$: im Schatten – keine Beleuchtung von der Lichtquelle + - sonst: Punkt ist von der Lichtquelle her sichtbar, wende Beleuchtung in der Schattierung des Pixels an + +%\paragraph{Probleme +Z-fighting beim Schattentest: +- Schattentest $(p_z' <= z_s )$ sollte für beleuchtete Pixel korrekt $(p'_z = z_s)$ ergeben. +- Aufgrund der Rechenungenauigkeit der Fließkomma-Arithmetik wird Gleichheit selten erreicht! +- Beleuchtete Polygone schatten sich teilweise selbst ab. +- Lösung: kleiner Offset im Schattentest: $IF (p'_z <= z_s + Offset...)$ +- durch das Offset wird sichergestellt, dass keine falschen Schatten entstehen + +Uniform Shadow-Map +- Probleme: zu niedrige Auflösung der Shadow Map im Nahbereich, Großteil der Shadow Map ist irrelevant für Kameraansicht + +Perspektive Shadow-Map +- adaptive schiefsymtetrische Projektion; nicht uniforme perspektive Shadow Map + +%\subsection{ Zusammenfassung +- Transformation des Texturraums in den Bildraum der Darstellung: + - Verwendung unterschiedlicher geometrische Transformationen (z. B affin, perspektivisch, Env. Maps, etc.) + - Anwendung immer als inverse Transformation! +- Resampling + Rekonstruktion: Das transformierte Texturraster wird nach der Transformation durch das Bildraster neu abgetastet. +- Filter: Verhindern bzw. Abmildern von Aliasing-Effekten, verursacht durch Resampling. + - Lösung: Tiefpass-Filter vor der Transformation: Mipmapping, Anisotrope Filter. + - Beim Abtasten (Rekonstruktion):Trilineare Filterung in x, y, und k (Mip-Map-Stufe) +- Texturinhalt als Material, Beleuchtung, Geometrie interpretiert + + + +\end{multicols} +\end{document} \ No newline at end of file