From e2e8d2ed4224b683e7177bd792515407206abe7a Mon Sep 17 00:00:00 2001
From: root
- I've come to get my crazy idea smashed apart. Or open an innovative discussion! Whatever it is, I don't wanna waste your time so I'll be brief. Let me know if anything needs clarification, since I'm shrinking a couple notebooks into one article.
-
- I want to write software for the whole internet! That can mean a lot of things, though:
- m7y9D7msi^i1winVzi;F3sCo*R`6S
z$sU*15stP`h3pGeNo4hM^S7=$as`8q5}=kSli{fcxgRbq2=_0qZ+C=$ve{$dvAl%V
z=wD-bP@%iM#mAa4vs$%u<m7y9D7msi^i1winVzi;F3sCo*R`6S
z$sU*15stP`h3pGeNo4hM^S7=$as`8q5}=kSli{fcxgRbq2=_0qZ+C=$ve{$dvAl%V
z=wD-bP@%iM#mAa4vs$%u<
+
+
Beyond Operating Systems - Abstracting Over Networks
-
- Introduction
- Programs running on the internet itself
-
-
-
- Operating systems mean we can write software for any computer but I want to write software for every computer at once! A globally distributed operating system. -
-- It's gonna take a lot of layers of abstraction. Bear with me, I'll get there eventually! -
-- If you're going to write a distributed operating system, it better not matter where data comes from. So unify every resource, from memory to files to HTTP calls, into a resource graph. That said, you can't make assumptions about your surroundings either: implicit dependencies have got to go. -
-- We still need to know what data is, which can be pretty tough when you don't know where it's coming from. The solution is an extremely strong type system. The type system tells software what data actually is. That said, different resources have different properties, so this has to be expressed in the type system as well. -
-- This is where the resource graph comes in. A graph is just a general way to structure data. It's basically a generalized filesystem. The important difference is that there is no root. We get data around by building, rebuilding, and passing resource graphs, rather than ACL on a general filesystem or whatever. We pass around references. -
-- Today's languages are not well-suited to this model of data. Neither are computers: you can't have a pointer to an HTTP resource. Also, it needs to be enforced, so RIP native binaries. Not that you could have them anyway, since the internet runs on a loot of architectures. Instead, you'd need a bytecode interpreter that can actually handle it all natively. -
-- Also, I swear I am not a Lisp shill and I had no intention of it, but Lisp happens to be really good at dealing with linked data structures. It'd probably be really convenient for dealing with this sort of thing. Though this system is strongly typed, unlike Lisp. -
-- There needs to be an actual way to implement all these fancy types of nodes. And how can we not care about the source of something being HTTP if we need to make a query? The solution is simple: make every node a computation. And by computation I mean closure. -
-- I mean, how did you think the nodes were implemented? Most nodes are actually a procedure to fetch the requested content. But you can also make nodes with inputs and outputs, such as an HTTP query. Of course, we need to know where we're getting the data from, so that must have been put in earlier. The resources with that information have been enclosed in the node. -
-- Nodes are functions. They're partially applied with a portion of the graph they require to make closures. In fact, functions are nodes too. So are all processes. You pass in a parameter graph and get back data. -
-- Now I hope it makes sense how we can have all the features of a kernel without syscalls. Your malloc or whatever is inclosed with the relevant information, including any syncronization references. -
-- So what if we assign an expense to a function? We can count instructions, give them different expenses, and sum them up to get a final price. We can calculate the range of potential prices by calculating branches as lumps and adding them each time a branch is taken. From here, we can extend it to the cost of data (e.g. memory) by calculating quantity of data over computational time. Bandwidth costs are obvious too. This is how you can implement schedulers, when you expose the interpreter as a resource. -
-- Totality proofs (manual or automatic), and relating expense to the input. Where it cannot be proven, the maximum expense can be considered infinite. In many of those cases, it would make sense to put an upper bound on the amount you're willing to pay to run a function. -
-- Servers can also assign an expense to queries if you modified e.g. HTTP to do it. HTTP is just a kind of RPC anyway, and it now behaves exactly like one in our resource graph. Now you can pay them for your access to their resource graph! -
- We've now turned computational expense into a currency! -- How cryptocurrencies are implemented is out of the scope of this article, but we can now turn this into one, and trade our currency for computation. -
- -But to continue, if accessing someone else's resources has a cost, we should probably be paying for it, right? Paying for goods and services. Seems familiar. Maybe our "money" really is just that-- a currency. Are y'all familiar with cryptocurrencies? Because we're well on our way to making one. Explaining how blockchains like bitcoin work is waay out of the scope of this post (or perhaps not-- but at any rate, it's too long to explain in this one), but to SUPER summarize it, we can use cryptographic mAgIc to sell portions of transactions and stuff with cryptographic proof, tl;dr a distributed currency. I'll have to explain how it works, and how you can make contracts to prevent scams and stuff, and how to deal with redundant computation in a different post, because you have no idea just how much further I can push this (i.e. I don't have time for that sort of digression). - -The end result is that your pair of computers can trade resources and do all sorts of crazy stuff all beneath the nose of the program itself. This can be generalized to a more sensible system by decoupling the e.g. local per-instruction expense and currency to allow competition between suppliers, but that's pretty complicated too, and I want to stick to the realm of abstractions, rather than defining the economic system. Anyway, from there you can just extend this abstraction over an entire network of computers, and buy/sell resources as needed. You're probably seeing a lot of issues at this point (e.g. what if the other computers lie, what if they drop my data, what about latency, what about network partitions, what if they steal my data, how do I deal with all of these transactions in a performant matter), but don't worry, I'll get to them later. Actually, there are going to be a /lot/ of places coming up where I'll have to get to it later, so I'm going to stop giving this notice, but I will cover them. Also, if you're thinking, "this keeps sounding less and less like osdev", you're right. I'm no longer strictly discussing operating systems-- I've generalized the concept of an operating system, which abstracts over hardware and other such things, to an entire network. - -Now that's a pretty big claim, but none of what I've said so far is all that impressive. Most of us have enough power on our computers not to need to buy it, and just doing these tasks the old-fashioned way is a heck of a lot easier for these benefits so far (though before I got so far out, the ideas still in the realm of typical operating systems is more justification than a lot of hobby OSes). The thing is, I'm claiming to abstract over the internet, but really all I've talked about is loaning resources and paying for data. Applications haven't changed that much, only their execution platform, and a couple of conveniences. For example, your HTTP server still holds all your data, you're just getting paid for holding it (though you can pay other people to act like a CDN). The issue is that while the computation is distributed and that space can be loaned, data is still fundamentally centralized. Sure, it's over a bunch of computers, but there's no concept of shared data. Your applications can run all over the internet, but not on it. - -=QzOdUU?T4}~f)MutN1j#47!;9PjI2q1~r7sUN(@5t#yd!6j|%|G1}nE{{A zh~Sf;4&y~<@-Do5T?sFv!W!xs;+(U-ahg5>G!=vKFhpG_#)B9*#`!NKXfc432fad6|>1axCHB-BwlPl{U%UXK!;Jb2FD=7r2itSp1 zYyG m0oZ)WS`XOj)|-`2qe9BfgcZq^*!HT z4>2r6l2-%ta|=?oQ{M82crbT8N;y l661uo5rxNh^;|3hL+1+BJmmt;_puzxP%=|JT_bc#ZtU=V4}4 zt>U&KUe=ON3z$qN5$t>#4WYr9NyOkM_b_y&l7B!}CYFCdR(2NF|JL)k!q!b*WV`+J z6D?)nP$qt)!!DibdyMXB>1O9E !fKN38sARMFj_le{aW& z$h1JLDn`~%eY(yvju6D&WjHY<$pAeEJc&mo2^Uz201L4qO_XVH5_2qg*6ScwG`2}P zfheMkZ^_RmNl _WkQBU#;#a%lUNlAs_20ld4j$jOZnZuxj zrD*a)6W<)*ME%cYOeeM}UMF;(&yWV-9Et6Jg!Fu%@way?NsN7Wf92hJC6V}O>&cUj z-L_@-w5Vqt=+&isNWqMb;#?^RVM25AMudb*>av8qylAbOB{lpC5uJA}#jpI~0~3Jh zJ7fVG=V{&9^8lsW1h1fN9|gOS<=W@|c`AFF3Tg|+%S^JCEYN7 Sr zS+L;w<@-(Bh4xvxrfYj0j1U _}LRflYv1tn3auTR@b3(*7U`G!ytI!Lr23V{;J< zkGqOsQ{g#I?>#+@L~E7pjo{C_Wr$s)?$&N!+Yhz1B?kAWxo|F6)TB=^Z&xYj6hYqD zid|bNm@!U~OXvHjMjkq_;fVT-uuup>7#Z+7mnk)SyuZ%ZHF<=W?W8)@m%zAzPWCMR zneDk(AF7KJx49KuK;!RUKkK}kAgrAuILgc*D{;SVsXJR-_fUg2EZkKE@KbXX5Qpg% z#Tt?`$C0O>fUQNla~;s=p=8#- tBgtBd3#x zXXcS2jYiGxVI!#P7o(JiM6f{mQ54I^zz#0w`5uXQ{q4C4-=vdbVRE#AoS1{%>*3Tg z@yypb5fi2%Pz3rr;vq2T7lnTlQX$b|K=oG<*x$Y%+hC$bb zqv6I2c(PozO2a2+O6MPh2`)~y!#?@K2}gq2k6oHJ#va0~H*;W8CG~( zMOgVOF7d{FQ(xIEnPGeb{typ~^AWPZ6TzR^A6N1tGO?)eJghet-2Glo^=;X7M 40tDn+(NTyrpK+ZL*eL v+c_oEBO3_6>wDAU *HsabW6a!XUlO^Aa+xyYiwywT67*dbFEk_gP*-8a*)mLf%anl+>JD{E& zJjf-NXNdn!1(_Gq>uR=6l-2Qf4oP0)9M4w5S}{b4^R!snq?@}AhzQ(HJ?k7(4*G1N zy7F=fjin1_2>HbY6s&--;xR_Kv{_74_3k&j!H1oQmuWSE_|~)dxzwlaqKU4_ >GuY(M$HZ-5&Bg@kt1Q(-YAqs5b2%Tz%H*4Yt0i6BhpuK|KHV~k zUgZ7>u8Kd%_)oOR{tvXs$;$lS(&Dg|r2U2%TF<*WRCkJ1&G@A>2%1DxvqJ(w6xJyb zw1QS4Z7JGWgo@3{>dQ2-l2TYow#N7{4t%)%_FK28pQGpVAtJSS2!I3(Uw6hZG7-av z6kI%|YW~RPk?ob`J0 L-U-&^hvR+0AF7ZU+i-DI3KMZ_Ngi zs-)Q}wPtZ%qk}MZrx46g$r@67v@UQq>@E*p1?}B3&|(U)@Si&w691rxD^%10tcA>Y zaus4YxQ?P5#*sa#p3wpmBjMW}EJ5#(R(B90l!Gk*nHJaV2rBWi7=`yCSYa{Q3u~n& zDcVN1#}} sCpg7wZYL0NP*|SKE6z`P{76z-E@l&+0;%AVJz+8|K1$GGQ45wh zw8U`uUQzrejg){eY!rcskpQEqyq@&nP^g }m+*q##;H0GVYZYcVNs zlre4!EEN^ay{TTQtX`_)cQA}(aFcu=;+o+LYFYin10`}0hjqNj0~l>8DgSn>ekne6 z{^LTYqVKQzvGBkClCw66LC%!6PB_CEoJ!`@J-Pc6`Q_C8+h9jF*TygQhjsow3!XhV z3e3QnrA1BCr`YLQN!1yv?-AQ=S`g1( Rk>3+UY4k)OOONBZmuR^pfZ-pY2KGHo!6$$Gw%;&_2inc;?aT|xP1oi@RpB& z84H(drP<+t+{DLUnKkNbAF7DC >Sw)chv~92QI1M zxmULr`nRu|G-`ld%~sEgc{LNG>1pHyJfPyHkFJw5NomSbS;lCyUUQcIvOJ s%UlPML%q z=IfFet%r` (oNy^DJJ_Zx++!W6>oP5#*ofacrWy06O#BXFb|*y58~} zrnJ2cHXIe_-qn^l9?ew);giQ9N&~C9kxWE1O%!Z82vZ=Lk*=0cTRpUb7Kj$0_+>S5 z{a^cE{5$zahIU9MN 1GINzDKoeTZ<5(!D+)F^8S+i9Do)X)DwDS zT>qkQ+#cpOD&ew3#; OabFv-E>R9H0f$H)-8L{CF>iIU*y $(1wISG zpZl!FF@t=b9GFk>>e>(6;5%_0Fo6UWxYxF`nniR!gO7CCcNT}_cD7{IUM75?48NAI zF)h>k%^hsyVD%O^1cZ1?f2;R J7tvY))CGiZZvl2vakURoxJEX*XC@osr~y3>jPJ~vLi z>Ola&;UmI<^ruvw>uT)hF&J$ZK+6Q3IF%#d;79=jHzJZx0q)`7j}jNsxf{eE$pjl> zH^Z!yL{v&gpweLx3bk+J YSSa4eM HL)-p91kG=@uKxM2s=nN0h@Ojrp+=8{6d@Dnq;WuLW0Ja5;?{k;;dG9)&)KYO z6xt`k+2G`JKF+>*KaOFrC%3OFmw^)e>lSWq4v>jy-HO1(QL2wmGruOxG<9g0Ts$qh zjFe09ql{#!DsFIRT#r;geq$U_XJN|rJjQ2H@pyOS%@~Yz4-+@d5|onqdQeYrf7e$B zb>6o+`P(;^mQS!-yqz6~gHf cq;Vv87#qQ`K&+8{CNJxUxZ&nRu z!Ku?3Oxu_T8p)aIkQ8u)5Fta@&)k!Y{KjQjWLJwo?s0x`WhIxevj(;kQi(yd>PJ#@ zGJg`ELR67fT6PwxSw4Kv8rMe!iFXuQPl6dlLMGR=At&V9GlBLOGD2qIdcBlkk3@-( ze&6PL^}Js^WDY_UMoz@ZHY9ESeZ-nl>shW-@N?rVrWm%ozQ&L>FSDI=8o*&RWPPaY zVu^(1HxyR5= #7`GwLWjaeypkZZK}8))D5JmY}ExD!yXsvRJTn&*T~w< z$ClQMB @O~rR_o9zGm01?Zd@!9wT z*=L?tHw9zaZm0I^yKRPTuab(5GlU{U%3t#c(Nk?SVGv9#su_IR=m&dWa9W=Ja2HZk zy`}82W2{l*mU#3!4PKK{yrqP8!W)@M+U A*utIi$PRg|(#K!xYn(B_N_GEe~30sskg z+eZ&QTD3P=CAY{yzw_&Me1{fxGC;ty40vVVvb**=$_w=d!M nByJWo} zf-863pG}(r*1 NhL-Xy1zRhQ)P%q!qF^VCByj;wQQd zbAmq%iT8Hry(6nkmyI_gNteOAtvbv8Aw7c0ve~I_3e%id8`2j## CQT09;n2;TIKXONbGZR6>eLK-Qfi{9li^ zaL0$?xfM609|GR?J=gCbn#7QmM7%wDWO1AsPKpGEieJrlWsho`l*tLfc6Ma0J<|ax zs6HJlm$5E SKa`HHpv!y5}B!I22A?tvXK8k^1xmW|y%<7P-N%3W>y`!OC2z|tOwX#zB!A@&C) zj$X&uX92Z}r{&FPkgl<)AuW96*3T?(q}f9JveRcBZkIr!U=a{Zdh>d4_2yip9XEm$ z_1`}#3B;)adtwOUMRKF?olrc6Xl{*eyZ4I^&IxowR^kHOva6%78BI6F^WFO=Xo@b# zAE;bX6sc@*2YM>E%q}`^cbLjDM|u&dMSz>$U9LsnD}8d{q8EEYkl-QRcTa%RV1wcK zB%BIKli0vw6AN4%ys#6qiPoQn%YHCS5Nw|Iu5@N+AMB}sqV>kV=Z|C$gW;HhWbgkV z@D1u|tiRlA0`=0n;j4DfgV@W4+#(Y&A_ps1zAbPo{{tCP9#{EKh|l&9h|kQ#{@)IE z-5S!)2W)VE2fI^Bc^Z1j+h4pc`<5^DZF0^VHf37Ua;(PE+WeW1JD6yunn{*x+Z>$G zq(n#{e12f8oq0ZghD?UA8kFu&{Q`-}#G)i5Wo=yYMD_O}rOqBNK2H$y`rK510Fx7+ zr}|m4il_^t&>!j@tR}!qxBmde^$pLCb;EQC4P`SDC|C2Y=@oXn?L=F}7v8j#_3O?1 zU@_#7C0Tj(5Ni&z=*jeXl`4Y6 Uh(sswK9JESY&QeLOjgAD 5aAARJeTM$9C zHQkmTfcks*5mtsDN@$PENfOKM0VRaMD7|Iw9jmb UF;Y@v+vhtUA^7(gZ{jxc} J0P*>qwjvX;2>G z)fm#h?>=UNU8Zz50<$VnSg{}AS_P#EIW;z%ED?MeqfsoPaD^UBPc(ZV>o8NKc0fPY zGzOls)&|hR5-gZ(NGhUy 7NRh=AKouoy`ki}Zv?dY3$f zJVwvxLeh2v)5cOEN#H}YqF~VHlpzCAMsc7>p%F^$o`zPv@f9k-9A@MbETDsJGn7=o z%RAZgZ0*1~8CBm@Jbs!>Cep$M5mGp6Ft0tnO5Wv`Rljket~**q)&et&-1R|oD=&EB zxU6Smp212h9?0&_jyGU$k7XUfe=F~lY!(Z2i5omL#dB+d5Q0bLsFp+>hRQ$1fd=v| zmwBz2V4WnSL^XAU`mj)T4FAEa8a@JaBy1cI{OGZjdUCC){yS(w&huK#vgsq`OFJcA z&o4j8Z25YF`Q^YDc269?JfHX-3ud*aTjAYf93Tiye1vFN(7VBek!=j@Y{yR!w8A6~ zf8~gAh!|Jz5iH$}7$j0~;1O#y97G0fT>!M+T;X;<;GS-m-+=p=yzHLGMX_3g!{^%; zIxx~^Nm(+j6enxZW2Z;=ut)y8uGQP+Qsue?fCA)ej!(=FAHsr>O2ybr z{*&O@Y_A$>!_^9p_E@Msou2^9?3*MqfNiRbr5_@LW2C49DBi*Po(qjky#;k23~)7ece$!{5P He2q4^g?nu&RvedPE)p~N|E9Bg7EgwYDhc3J5FV7h_rOT!_@>6|TJ~_N!-sq5h zt ux*R9I?E*_UWFx0r3geZ-qH)FxJIZn3X{g*6Ss(yeq@A;BWm1&VX2ymctGj1 zJBHMu0QdOOBL+kC*rDQn>gfcKii=EQ1{RyqHQ&tqP1zRwPW4Dp-%WgV$e_8i(1VLV z=HkgbK`a+T;p+~NKwoo+kqAR0qlhTx6#>EV!lPRBwLEF9Z%e;@^=+W%u|U|<&6h~U z$hu;6W^8P2*FUj08c`ZRVzS-rjmHs;eRc0*0viR$ahxMhfTIlc36R*Hy7E~n1zqCu zO-r1|+<23F)X{%T?)I;63(HcK^r4#+UtrOT+##GBFx%7= zJErdNSj$pUK7- zW BryB=OV}xcVQ{A~vEpHCB&@;;J$Em?uk)j# z-u0GT=H~h0Bi%TRRlFZ>@hH8ly^M&Ye36w^4pywOXwF>`K^-Wpm6 Ym+`jttbQ6RDi_h(_ zkK^ycyA0dIBu}ic3K!9l;%)|X)>O|(j5_{ fi?{ zc@$q!YT1G)gA$iUk?)X+6XZE%n=IJMw!=_W?XMvxMDjs^Vz{=9IA1A4B(}cvPFEkS zV!jVQC8FhA7_Rbnr&%yi1m#Y#KYPjtIvTXTBq{5cDa$9TgE0hcsm%qk>o_}XcE3j= zmv(!v8}zTiY+sZ;as|p;NSC5l-Y;u2`#BuV8R}QSFlk|jB*@K!>K6Gu!OO1{wUy3^ z#cikFQz#b;QM2?}$_(H_00j|Na^&U2cAbM%2oU;D27!QJ*W4M}!r!8d^~hLad`b!{ zlHtnbyqw=Vk|%+3IaT>M-pKjN;4)+M`#k!XS%ukoq8zM7aDT4g2IM8ezF#DdNlm2! zb)c6|=1a+KXndFTzQ!I;f3-pfNHN)0ifPk2qg5^CFYQB&9}J_JG?a?GyG}s4e8LIe zb(Kq UD!x#6n7RjQ_l3By#=X5QGJ#r+I0_y70-DtQ*ll0duMdT zrB!|{(j5+{n471wc}lO7H>$g&$)K8Clc+qC2Z4Py2%4|}%c-nx1zdrc6kA#*N$e*) zfiy1sKY={!f688te{VAYfd3ujoniJC+*z2F8CjQ_SbzLbf|3MfhJU1$kwu%5k$sGj znL-y*LM!|srSu^6$Z9Oyg$74Q`zQlPhwdUfE%O*dCj+<-g8)d $LAa7))>|zVUAO~P#Wc*i&PR=d>c8 pQ>VhR+28$fhOLsWAsx53m+bjq4=q?HoiJ?0YQt#)i=lL6%=V{2;}&S5M~ zDMYfl)ujS*%BAJw2F)h7dm P3l;vMLL zlh9bn{*?a^ %XWd)i9^a`wt{mCr=?7<3f*$M-j0};^12UT)}BGcm p5?YurAnLs!ci~_s8L_SZ%&oz#0Wg3K36)2|Il%uQ7>5Ny(dC8u$_u*h zL5a1<&qbXwBDeNm_CaZiXw_@5YWN7Gir6_A@q#dV(ApXJL7|M)BVJ6PD-iAl54lHN zMm4ceGgN#OylyJI=ITvXIcl>jo9ZoQu@6_pN3X4#>2+_@jCOCH^j4XvwLGP7$Ble{ z{IJGY%)(E`@ZX%)u5tLPv9mkrG+iB9C0BT$SY}^tuG#p`)iAf*Gv(Hf*%-EAEs&3v z{9!Q6jk-g(Za0GpyH?`j{O&p*cesDsa+%}K&hD!Htv%mq_GZd-b&Z%YgS)u1`XF4& zVEgUKWO-4S?8U=10@0>Co}9L6sWIc H zVaeO4urvGa(D`^j4sH0#8f#YM$da@A(3%<7#@i)yzw#J45#7<9hHY*x`uf^ihn`9( z?yo8eEyUQABRw8upy*e5JZ;2Qdz>`iNyD$s{&Z^l5L+uk3MeTs(!o?<9F$Q>)VuWI zvduq{f(fPd)UBpl-J+jpo4zc~bj_S{eKme9@ChdzGg)nXY%igyLgq>8&Q=#ZH(-OY zWbg -Bj9j8<(Z@>*uy^fb2>t-U0_N&m23 zYWIZCN;BgHI$7QE6Q7x(mb6`xvoz^DGh+U=O=0aq5e-+4wd@s99jzyMr=Q#n^hTPZ z3-A~3EQT3o>p0?MW>9*($6E=###@|>Z!+`I1ZGrt{R*0xU2bzjeT0uwJZ0yYdE FhtE<`*DN@IncN<@I1bAb7YXSu{_r{$ sI^?n43ySIvWO?dltQo2HJ>{FF!1*(S0kl=ml~lDV zm$%E4;*q%0%Lv5DS3}whcW~B|>z*nKBQiK0JgOToFANeMxy_xzpYEE^9yh+h_+@yK zn~YZ6&wC*+cKqC*9`|nhk>RAd;n!t*86M$`8WISfw~U%U>w9s?t$h2w9P;%ZRVTy= zM1B{L@*e)t7>L;-o=PWyX7TAWZX)jzTER{g!U0*)^I1{g0p@eWCG@A|+Y1QT#(?0X zs;sB_$Tsle ) =&Z(8W~m&p%ZV>H)8o`ZAihzrt280xBWl z3jW%D{uRGPV|>yf+&tE=_@zGGevo9b@j~~OSa*F$aDG!)Y?AtsIA&$4U&dW)HfHr= z{(`~=TyylI^zzAj_YoL(;!{_hSfstz@rO{{!1nMz8JLOn$A5?fCIHh94)*_HTxI|# z2NU!Ey#6K!|L6Lbp*h&t{;!AjziWxuHgJV3Tht$Lbi+}L`zY1JTQ%)yZ9;cQAR!>Y zD0orciTl^rN}B}|RC12)?vz@8PK$2dzrLqlWX+P^FLSr7-RqiOWKPRferOEI7LXfY zm&0d=2B+#G0V;|~XZxWI%ukF=%}+$iiWWoqYWn;)=FheRuMCmOV|V=-Nw4|^{uIf= zK>3qW3)%wN<5vUW=>Q?<2_o W!`xsrgB+F}} zd51PZzC31j;(@%7Km&vY0^(oe9Rk{a{3ZYaSqDl9aDc6UI*0`1qYHq-1O@ETf2RiN z{RTm3LpL#Yc5*TT*BaC)cs?$Kn*ySM+62i*2n)Qz?=KD5p#x0`T-oi_G8QcZwa^kU z@aJO9H*=uK=f%3Us1FM0W2+xUg2Yv>=iR+?2?*;V78u5`d7#j|lLukht=j|Q(BS-% zd{KYA5kbo04+;bzEv;i%9Dp=1L8c2<_W_|}i>kG=WMcz0GkwZ}Y4zvF-wB8VhF~o2 zCH@q-00hKz;DLNDZ|lAc0NxRFcq1^u8lTsRSMHgkOwt?aQbIK~{cH|cZ#QqnfM Yzh>(ZM})uLnBLju58}{1fq@eP8bnv&sEM12P3{YV_X= z-|a?h=;)4gs`#b7T3@47M8K{P?F|l&KpGsLzk%^Cv%7$LMj_+BXNq7#K2#y!dmHZA z%;rWT_%D3%mUez{f02RwEj$GHc4s`LAbtTH^z>V`gO3}L`}8jQ;9K*?Kjh +pr - z1my0>U3+P%!3qBoyn%5`-~gd8P&}_U&{Y2OX)i 5Feein8kKjK9iTnH! zd8mD*Ukv+@^=BW^U_drE-+~}MKy16cr-_#L3|=NdUxGZn^9O$4lgFMW8+?`ER&Vi< z!O8f2#~*|Vpnb>pgtra!tNgqE@DPUv_TL=8_|ZN&T6*sYZzvgmW5WsMWrPHUe9%^X zWY$p+N# DE{Y2` 9NA!>wK2v=g{Mf z)Dmoe!r`5$z%&2V)@x7jLgOi3{-Q0O7i+u@#8KO 8O8m$-UY#CBLj1{%gN8quVi0Zd$V+^gR$W}916!{C@dH!7jKSaM4e?yy z0f}9C4; i7W7To<7@{(-16ond?b5dGi~rmEee3VW`E%1$Bo++v A4ahQ0M^8UzKdW@ackc+b#XBGdpPp+`UUBbO8HR$}rzhCE z?{F8KAVwqJBNyaP(1e~uEI@yi%%kBx=v{5grBle+{CVx(Kk$8(dVK6T7K`G8o+gRP z`{+J%BXll()~yDkt%~z%^?Zz-ju8l*>LlxhsJ!?|!qsAzr4n|0T@rT^jc3O @>)b)lR1nToDvW?Z(g}+*aQeupr`di zgSn2dRDVcDkNElI2C-_tFGS~%@Vt5y$SF?`pK 5^ zymnzYZvWbiw`b$=y*`QfGm0{fc86W|lYR4IJV1Yb2m?^vQ5PpsWCqD^Dl8$WMN8yD zl8gFrtwW#!K{#v_D&izDwb$B0y|29JM9OAV#=1DeIgG|QEyaDZ&qGGY?Si(%@MDkr zV>q_cFK<5b_I{2o8D;8EWoibHB6_;{w1$rEFw-90{Ra-oRDp9Ac1OM1CYX@rG+jwn z>2(`56mn!|T>r*srFN52aYN76y~p9NJCe}|Em)Qh{=5T4X4SS%oY48FrY6lt`vlkR z8SP4ce?j~xR9Lr@az*vM O9N^4uX`g+OS;8+ z=s!SO84IGkHar&4GF$RXQZ07btW)8<-|wwqzXdI#zH1_p=_~&7HZ&FD|C4a9jkwKn zjWX`ajO&hmzI(DVc+>ixTvg0yHteriy7hRIuVj#GqEC7<4a+Lu<~e)p$6@K^AEQ3; zh=%@4Yl#5kId$8{(647g7YJ3s(r`jzl!kBB0BsYY#F%n96`w>#51}F<=BvZ})h7aM z`k)j`EXk&u`()aMTd)@*7G!Xr%tidFs;J$En#y=CFJ5@@R#eg0Y$`l*iof1hK-KOj zQF&S0oN%dCHXu1Q-@~>%o{N|9E^~>{HOW;y+XKN*8h44t@KsFR8eqhfw8LC2pqjX9 zriHYgk>60vtKw_^0w7TMF@%m4D^KYf@P?nnZ{|qxgnFT|{2nrjK_sAHai{HY5s|xa z0R$=Jv0kt(8u(hMxy^G(B`(mX?-z;H}F3lUhk_?F|P+lVkuhGZ9pD-F#+-^;+-1 zV=Jv@vCse#;qmhAup7!wp<7K(^gbh036Z4v#fM&%x5QarQ(lHK*;zU>V#qmhJ;#3I z2HWhSK(KANB98Z`*8gGb9D;>mqUL;U+qP}n#(Qnswr$(CZQHhOD_<6WRjQIjmb04W z%sJitba7$%urOfGa1BbG$7T0ySZOhCl=i5YY`9eX$@B2{S#({+q<%r=3K7pBh&)J9 zL8X7;xoGJ4@eq1e8b0iOrd8cZ<9DlS>{^*gyIa%+mfTZ(U21&pMmXizDXQM(8k)JY z#&c_+zZ16ONEfb^_bFeWoM$x9E4vl$1IO`d6{~y^ZQ_g#6Q1R3Qz+KN1==?sg>d@V zH~+r Z6r~ExY;M2!|-8bazQM5VB3Lf^S{-k2j#_oE^!d z#xLv9V4=tI?_7xc4%iP^-znhxEIU&MUghm?3x_d@&|wGWZre9#ZqdrwupDy3>M+Z$ zlih)xHn}#~*{*TGlDyj;xfN)+dYv^RkVS2=y3Vo= _HzlqSIT2i$us?D0Mc@l%mop3zqPVRs-g2C@;eeFfjn$zH< zElI{ep6+2GW6UblR;MeDX!OW*9;b3v8)qG1j|KXWxwJPLlOsG7RFtY(+_|$|uV7de zuawDcDP(xLUO)Z-*Vh-^CT`<%U!UzVb*EI~p(v1YP)C{qAFlmtFXJ}M5l?*?4MP0Y zk`(){i@2q58T^u?sxqsztKL$I^fl}ig-p%AP1-qmW)?BsgGfBB5l$%P@oaUH4Zs*o z59%+|QL8;o*&Ll}Gu3Gk<$&fvss@Lpzb|8hYut({(B@4X#rt-Z&+$N?Mnes(|GW(S z-D7VtR9oc<1<^jEma7SxQOw^TbbF6I5%h3ZA^T&@U}&UEa$i|B63=i?-wjLTNuhNd zmh6tj_c{=$c4HY3Le_Flm !d%vSbyNwFoWXO?Rb0zDZ&N_ zscz>lN64@TZnK$KuwA(jr#JAlh`h)pIiXix=t}QoZcv;&7g5bdkQVtsug5lq3(!%~ z t-#>yWN?bcD|>mJPU$~$jW#1jtqh- z0)rR_Lx>jNp@(d*!v`l^r`1@OBk_Q`?(xMd1Y9r0;udUqgTuB+1f2eSigts{eDSV| z)Qkcrv=5-CB%r2!L%;N9@1@juFx%gYUCd8DF)$rauMU(v8k);0_8z{Bmrn4+kr|$1 z)%RLTy4o3qjg^^6Sy`0X@ 7QmJ ~IBWH%q>MV(#bk!U_Qz`JKt2*SD)?5BV zgx5sDY=K (~`&@FFjVeexq z1f1SGKU9QOyYiCrY+NbQ&mjs d*)*OSa)Q%h_ZTnXq$H(1M ziy4N}T1sx!RrNGVj7+pxI00`uJt1}&DRG2&E~0qa&iesh=*&U7B?6i1Ya)v*9;4r> zbzJE36wXaTK6~YTf1yd={aK$rS*1kZ$7gU)kXh!j*C?d}q;&Eo3Pte`>y6N{e7hn2 zt@ 7@;Pj$EGH#KY0&Br^_efrz3&S-IlO0y&Qc;)92{nsK~ z`EU>e&pHS^2`4Wl3fS7cZkBoTr#NG)sDgE1U8F%uXwZ$1I(Kv{DOQaSG|_tR1f5A@ zw2pjz-h~+H%Feat#X?fY%er@Y-X>MNskdg@G583lV|H;t9|OQ6>7pIy+fvWA3@m9Z zj~i$MGTOx>*Jo|l9h1UTlqoyF@`xAF2;M(^yJPv2#y;BJ&Dp=*2JX>CGVYy#6r~JZ z4w_Br(FZa |EJn z7g+Rai!WQo5oe_YB|AOS*XLijVw#ikeWx?{G*&-OHYilbl16W^%~b )A4F? bS~kmleF?|7on 36AD58{z)ulfbFWL~rGy}3H?M@NL*m=o ieH&|=W8M9-K$?FvE*=c2i_hqbTQ!@lV%Zk+C4f!D?fEEM4m$;HE z_mW zgpsdZPc5K{&m*^H9R>q$9r%nAGwvRPOliM3m8iUqVqWuPB_6NFRLud6pN^)ixOS*H zltWCeg+>Ro195Tkm4jiA!EAzvV1^cta6Rh2X@>)U0wz5In{eHht&|9^MF*U&8sh3_ zm3Dz0K~SM@XJ^qZ)XZ#fmY`NzqI|T)t7t{jZ-~LqHLla|Y*ta^6gvHA;cr%+IN$ zP+T9SBBr7i9u*1daN}53zDTyWxey*zZPXRYl83+foeg%)TXG@rxlMm~JTD!cApTHt zTkp6u!UsPiLjoxcV&T5RXy}6pkMv_l`Jn@_%%NBCs3EmW6{A<-1WN8Xq0{(HsP8)L zC%L68Jx#9pr?R}4gwGLCsPe&xQF9m4QuzK*%A1N-etst`p4elz=0p$!aiNccCR0iP zOT18(&m1Z#E~Bzy3Z_xE-&5^LOWVk#i)p>QiKkAHnNFLru1wY79+c+9B71R~$P8th ziAZF zWP5Vsku)*+WdlJ}xKM01 ?7?5b@5_@0FM*)AUG0 z2|;Ehzyq!jcIt5ewk1)xE=R}9theSqmOQI64#~(&)1IupT+h;7ER$CmrLZ+Adn6{s zc`-6%`jwt^uc-%AS-@lYrSK%&<+d~LgICO&VZ$WWwBnNn?&4>kvMCUFAxc{S^0=%9 zCU_PdN{>+c%CSJaHA7n>M)*L6RX624n6AmK7wddU+zRma#&gIdIbH7pT3k)f&={@! zEOgdlJxa0F$eUJ!tqeq`z(-uft8bv@9< |dsi-!<51Fc`k!;LB^LzhW<0wKx+`TSVyTTdXYC9QCBPHVZsGHm?cI)+d`*c^+ zouDV@uv_uGqQo`Onnt5*iCXSS*ogBYOT&Gn=Y%^ZYQcQlf|jQf(RAU7q(=>s6;37J zLE7HD5%IzbU5R8Dw>XFCetAu=c`?Ycfa|Sw#j~DG>Lzw*=G_oM;V5URiCk{L5kDrR zGcAc+|E$$UEJirYfhk1Ii4eVNaH3=V3zw>ON3P`S>9WWP3wn }&wD6f* z1&6oUG2^abXPQJK^ghGO5Z(G$Lc z#UHFAWZsR7+JJ2K%TiZCe uUqZCArFu1vt$sI`GH8Ioi3?2+_QGe!;XXLI>&(B`P z2ftM&=>Wl*<<*=3RR27%Bh^DGl*nWF7s~pIkaHj4S!x*AgN!*QFI>tr0y!oW@yko{ zv3y YA8%OX0KVNLQ*GI6C|IA`mJp zVr%%Q!?MSlUK-1ury2jondl3|-n(v`?$7h|CQ6X^URGL;%ZEBqB2&dx46|Fo0#sL+ zSU~Z{6Cvk-hW!n-b#+OjGd^&$^(*(vG-cv3IF(NsDrx4)`8h9+h>mPKtph*mmmHUA za2Z>znrOc!$`qLI%CavegUt!&F}C8mmkoISxTz)y=%Elw61rV@fAeW8KB66*6nc%m zswrU=XPqEAYQx9DrFq1qtxc$($Y6|GF!uYY>lAiPpJp3!=&gjBGlDuF_nESuw!J|Q zopt*0fX*YNLMj*afZJV{!;eS6+!(!ysS}Wu0F;6h>V&Ec3wAglvkST7SBiG8eai4Z zLWGsZ2t|+yo8 kodB;dwuh^fyF6>m!B{(EPQ{FU+a(!D*yxEVNWX-D+ zA1f@TN5R71OXlectLV-5fa!-luk1mDKV4a)GZ8 MUqo4|h9M6ZWx0S`yYMv8L?kWa3K=~oF>K$L#vys3Z2T#1`sbsZgbnN~ z*aj6vVOy#coY1APDNL_SWeLSkZn|_!2a$Dio!7z5UR&uMqcODu`K+vr`;W+gpI5)X zD)w~F>L9tXCUxFirAHQsN}ZUNP?T?K_A;N1i!Vjpqr!A`yercUnPTVSMteZ(Fh)Dy zZ_ +R@HA3xh4D9&|lmmN&i;VMBV}9H*X$kD`~;PX65^?a7lyd}texKFhEdKY;LL zeJ{7Gri(!2sOo7eEpSs;%RQF&-w6H%m-&%#4rX=2S2SC910agfG#xiU_dk&*bKG&h zRB2^rm2M`@vUc-GEElo}TE4Jee@$2LsLF^7D0}ayH>nW7hfXE_FH|Dz64E&Zk$~}; ziB0yp9{R3=T~gy=)L2FasALfEP|{44ytW+4cVP7Bbggdf%R3jil{03Qn^s9ro3Sq1 zFxHjUky)(*R(ej1ju<&1$ixTx7BGY!`(6F&<@1IMUe;_O((T{Wf3714Ijo*4dDlta z3Qev0-h`B$jTV29A&qJBJG?`(oI9&KNYHWjveJ!6B%@xry5650#iE%id^4B*j~Y6^ zvAUdE{{o-LTXN^0EdJsYQ(_qLe9y83`Qb|DzI??X$HBQe(y@_*oy?(0v9LPaj?DR5 zq~@DDh$C}(dH=yK_Hma~TZ>mDe=|O&_C-kCc=c>-M8&I$IY5WEkZ^sXUb=N7gvF8$ z9!jR3wAHfatWTFoSuMIQiR+y7h`r$l8Pa4YO6Lapo%)PGgfU0@gF&c~(!?L3?U0py zS2>=`d35Wc_dCW*Wv*)3$lkP4TJ5aU73cmF&BXlC);I-~Ph%8k9CS%C(!=qNm~B=P zg-eMgDQT-;S-FrE%dY$&BUEB&7kG=h%vkkFDw;t2k?|(57@Iq|F=!~te7)Ld)(s|S ziw*4wKzeh#f~u_6-kNK}fXkI&+w+n78U9slB0Y1=zY@QT(bdrz@?m0(_1@c!`>gB^ z5Hm}*syl*>lZ_MRytL#5U=bXPQwv{jy+#XNjunf4W{DnPAwD`?jO8sQiWIQ{Y+Kek zXeo8-YeQm>X&LpAOt0r(@m1QPdk!E+-D1~1d(wR>@UN_F*KSK&dU4_{mI(=@y;u(j zYg}+lbq;n_Q{A)@b@AaC+qC>w8L%Q#u3mVFXXxwi;$u_ISRq!RvVXXgGSvOc-I3l= z1S|FQ-9?k^pjy1?BhCf-RH-UNZk?=%8M@LBy4Ml3UIkw_hh3BT;TZaPjJUw^=GjXD z79N=>rar0xX5Otj<2Ln8Q)dum_2pe$Fpd}m7M71%#23$$*nch# x8c6Z6A%B0watXS?i8WU z1uT$my8L-dZ>15(=O*%JYbWQ&1e(MI-)!@hqBg|UeD!r#o`g6X!nZ)ZkFL+zB}euB z_f&V`mbSA+aHe$4M+;BZgaR?c=ZImmIP(3wmBQ0e`4@~Li3%@!8aAKYax<`$$)YP> z4Sy+K9_@V6=0%%n*vI#mQ6$CF=E_wn7n@ eNbin%7^mVFwn71}?|he%-;Z;J}5pdcdw zntw`_;BU+<7TYzisTp$Bs3?rR#~^ZAjel72*B)w*gRS(yp(AjXj if3VA1~x zJ +!?b;~6%g-aAtXi}|}v5lE8k zQ&juuZqNm}Cbp!fbgjjVTtLR1m3U%E)->aHlSnb?NvzXCE6TKt`Io$;OdU&F*vBj` zcBj_8L?&5LMiN_K6LL&mXI$TB4cD(68|6#`BZM5L{w*dDccjHU@BPTt(xqXAkK+yh zz=?3KFB@mEk)EMRE+#~b#>Iyop4^NU&w-u4lVQ=s{E?FC^i8K7JbwX?HKK=3ddUfb zkB4zH=RIraMptX%>~^b*LC%eqB9%u`5l@ons)6l_IGfUBp*>h-o7LE6!O7%L<|*&( z?~m%D-B` mu9Hf=~(}ymF;tU)g6JE zpavjwo?mvQB}c9sitjyck)b%&doxEY{M*drQ^j)INyQow( zE0s+;4NslkVwj8NzxnrYj;_5aEk2cN{h^ff#q#UL+~Lql^+CNyp$RFw=UA7p?cII= z?;Onn{;0r9X_KoRGi8<>;Mw_V2}Zs`0V@V4yWzy7eKaERcA^|TQWv>xc&H6d7LTEa zuKqZm1+_$o7Uq6&-)B(BC3Ngm{j@q7cUWc4I4Vhx(o3nsmalLtw92IQ_ 0y~Q zn9ZE_bI(Tu$1_Y=@5hHQQtrf?zCy30v77Dvsjx2o8r!deRbhbhua%Dbzps#z$!SAD zaGjpkS^P)SS|OZ|PMouN8C4%z21!d| KXF1h%~x!4o1iYTQyBI} zT3fU=*oNaRYO=)5#FYa{D{Z0yqc`og+xsOwf6@Lilw4h3D|4-VNicg%Sk>zzDp?z! zdF6xh8JNhJtzs5z6_ljvv4e>DY~0+w*3ePnji!(u1;Sq^ZaNu~r@o6Yig``%hiAXG zusN%~wrs>0l4WBON!LIe9HXHl6qK|PlVS>s(^`~9PXg0E>?w ZY(s+S(D__c?QsQMZYVHUdUudBb?h0X$Zbiyjv#drPT4go&Z zx3}0~KBmJUz)5i@GQkD!;=^YOaqj`=s{1|CxiF6@#=eF{u#cKUhnpLZ=nFOCJ!*_d zdG?ZWrVPAHyr18Z)03I8*T2!rW=aUu87hmk_%zAI(+x!OMq0aX3CWU4urJ(3z2tXM zxj1$^odLqV29YEkB@^ f>+Hq_cIv0o!vY(QMPR~|Q9_t`$kprnc zE3&}A(pFEJEuWWe&KIb&Tpm_*s|n(8=MZ^Xbdw(1#bKdR#!j6Oxacz!z!VPY}ex z*tl&QF7)lfeLd5VdC(&bJh~0ET4AxXLOYoxMOYi2y(Ujq|Ff?YL10~K7D>R`{HdW~ zL0_@m7IIX%x;)rXhj|x&mWyajCgh3`AaYo{Mwr|y9l(NEdQLqwylXvagg`j!H~4cg zZKcx}=|_@8t}Ae_i@vP((&*{lQ!pJQrq}M&r<}gmsJ)$3h6aj6Nc#svs(fM{bi7qR z)~EyZAx+rz*xGlse7obNTkTaDz|jxK6bWQXTR90`Nvr&vrxrKB2P{zop1Q0PWJZfW zugDB+QhrKRezXovK=p*Uj`2@ccMZfDc|P?qiVIw}C@t&^1)$T2?<;pATktZ!kmk9M z1J1ge&d5=*`#SgDi4FKH@5QeK%LBk(nDA`UaQ$I-1uJ XP5nh%&;1F{Pd!7R zfx8)D@6>|liTIqI0F`8-4`Ib&gvl_n)|D`{IOL z2{=Y`{R5K>@(HpT&Z=!m@q%eH`lBH_YA@6 2C!AU#E7X>B zt(kM{`EqaZs<`I~{8R7zZeot4KAUl?Nim8sH&B`CO~DUf!cxN6C4nxUJUD_xgr@q6 z*PC%HbT^>cW{dkH6AesH9v|S694{-)vS?(E#AbyDtxeSeKen)`;GSqlRkq3UJdNn) zY{@O_+zs}mu L<;LaIXF-dpfeDFmIUZhaJ(Yg`AKvDCug4B;P)5we*Fn3Sdd_%t8WHS zs#XDI8ZR2)Ja9oyVJ$2CRiC3D!va32(C6 GAay4W!Exf=Ds;vD*!B zm!TQCAL0^F)I*TaUk?=cxxaRvKLrxW5lALmAJ5O;s2F$?J30`^7Jy?KFY>;<;a)@_ zpQ2yZ-oK#~PGAo<^1Z0~N&J9rzit;G7&PSX=$8IUFIGQ%Z&csQtGEgq;{aNi0|-ao zo L4y>FK6R4jZ^j9@Ej2G%O^cCUR zf50z=;(2ODHcb@~!KAo~8YSSB;5#J`3I?>L&!VetK5wFvAbuC(uMZB60c7|<9T7pE zolqHMdI!0(;xTO!R^%Q26hahuI6xquL;?oD1zf=AIw#n-gZ;rJ=oby@FVKz(;@M5O z6A;JtzsYP6C!ZZ($Pd0A9mQYFLkRfiuWf&iT*$xx0K_y7Y+Vr70AkRud#_(1jQ=d_ zph%w&fO;SHEf}z0Z_e+x+U^`wkZ8a6ulz5!F1|FRHlP>lFE8?sxXTUx0{9*s0Tmb` zJRBNWKuHNe(t&{Beoq&szrL>#;Mb@!!d?JKz%Q}qVsQ`B>xb1Zx6d^Q{oYQ`a~yk7 z2$1K`{u@vM$K3A;>G#j{(=O=`d%(}*!_VQn4_WCcc*rlx!*}Wro^c%&?CnSTAhap> z9Q*f*$gUOOVXyLZo}ar4I;5XR=TECL0&MR(0BI2MH;-+QXIY<5Asi6K=I%L+#?O99 zPZ}(YFds|;e!Wf$lz;#R E7eqlTA z{St3K%`j*e>{AMwSwL4AN`xTdiQ65YOJ3;j 59}TIm|Z>z2>1^2U(*1@2*|PqR4PjR&LO4 zVl3uYu%UC{)ZeaLC)!Q5pT-20CCd@7?Am(g6|%uQT-;u2?tdtb+xfCl{eL z)y$Yf)eRP9ZHYCdyJ3f3TC Ufx(^hl)8AlpiRXv3V*^wFbti!by-pENsmRt4AZe+dw$|>$$8x^x5_V0I zSr19`31=>aY5FED=yqXy+gH|&y>5&LsBanJA*g#|PqWOHmMV1QY`!*oqZ0X!j ;~@@eev5Uq-3S)QLm_=N}R;= z6VLa{%W&8YL~7zc6)XC+(bY5xA-2?_=Gc!QYd9P0zI>WrpDYBpGyo{5)o(An<54!? zeM6R* 6!kb*gmbz_ag1VHudexA@t?=o3=4dyBo?Qu*w{zsb>P ze$bia%ZASBdiEInp|*+M-TKbkipY>h=eqw3-Cc8B-v`-=Y*GvsCHB){Z##ZX5ak$N zuSR2La8UU4c$4CMhX8WE%zA-`N^}|VqCf26&&=~hl*B!t;Jb(5X7M=(2)gHqjzBEN zyF|fxGxz>8&s0}ib`QLD1vyp)O;w{Gg{gsy;@&$-QqPV?#BSW(9t6cB6le3K(jA#` z@G#~Ky!43~4VS~83ZkD=GXE}Z^n*CX;+I?DH9d*ZPR6y3_&R)9(x0SE*HQbIr1N)> zI`-HU+e_HOEIzln8{>o3#d;>{%c6VycD0;5SjYcgst!x#{?lI1n#3_e;(e==bDASz zbUrsmFY#b($ljL=kLgM+n*V%$sE&t-)3`#JVTvlN_$6by)!( tUpTtT0H2*y!q7)f8L19}re&liF^JV6Yz63_H^*Y8 z%j};8PNTJt9ea-DW9y)Pq!HzM+lRn~$4~H#sdNXe?jdA2nY6Y&dg>@X+M5#eT3P77 z&N6o|i|>8k{Dm=xu>sooqD;50bDj1J&=!2H4pui5se>?}Jm9O#H~-?dGGrdn%CSpc z;5rls?(hjjx{bJR*ZeQ&hM$qovd123Y)uabSgDV054$`y5seqbeHRra6UMC3=gFVp z7vAtPWc~tIug8`ZioNIR7i`isg8HVOXeP>JZXJEvFVP+plT8rKC(Vg4yXJJG9Gi)R z6^JZ3;&qIm3Zc>RF&LvgXWI8BAnb3C?pyDZ;BexS-`PR})nLgyW2zm|rZ;y>ggPN? z*NDfOl|W}^ZYs$vc)AS_dbws}svA4xOBenF?oM9(y4mHQ?~P4w0oO@qdg >x=XuY{;bP@fkXqD$@o&qeu5S`FwJBEmrK4*2d$}M0Io+lKHKet=n ckB?f5$R{v(-`CJDT!p~RUV^$ z_<|THJWr~`f%_&v8B`~YNlEV?6-A|Ji3hBp&m;_aDCM$zoKy6Ej4GSmV&pchlVh+x z`OLL+QGMf{!6QY-7feM*RMU%Sg{;%z(!q*v624lt2H`f&W$?WBDHjI{Hfh1a7-Wmq zsKbJXp@m>tHIw!j*j@8|p(cNBi3T4-RL>rv{C{f>FF1Yqqy(#4>}V;L@}Qcm`KKGx zNiGSO{dEbF)M+@&2vW4Rh*J!j^Z8c@ej2Q((d M@l1(RP$HbU0a!OlZ@c zCuqV#=%r>d-?Nc1RZwY65f)W>#1#8K8Pw#d-I8nV(l?(qI>}}tH$I{|BGyr7T25MW zpkPYEl&3~^E{fu(`_vh7L=up?S4iF >@l#z^sHoK}(g45gu?(rToUuG?L=zc{x*0-p z@D7n55BIRV9o|>3N>DaG8Rr p#hhLR+^A71Iet${zD@3i@Mx~{UsVt}K7VpP z-=SRDo)>wi@ztQ2(Dt h?B=*`Pzc=p5rmBo~T0$V=4Tnirr02>jzd(?++6{Eh~^ z#H$teGKfo=#P@}6^^`FsAR@Xe I0*Umo^h3l> z%(Hbj8ukE!>$Ntud1HoHumh54+mNat9%&0}&Yk*NUR7)~m`j}8UPD0*7d#u0m)Hd| zs{VxOlKkhQ7Ant`0{e$aJLsur4l+I2D21_ljoVK~7U2_$me)hexf=S%LEBDeJd{tF z18vE`bakklN0t&)y!x+7B0WAaUt1}4r%R ^hZnNW*q@5?VUQH0_Th?6N!eS@*W0moM@Uh!Lle&t_a~Ib(ZHs zMIS8HOj5TOt$Wh;HL3Hpv55mw*y@Ch;DfaU&(FMbv~{0;3=rZ^GLN?DRuC?C&GqI? zO&YyV&1xj)lm?Bp_Zd3MStvH}K8`Xnw7s|i40H(@)ddR_zwpep_01YbHyGL)L_ y>Q-`;&- z2JV77zIIKi?#EsvdHy$Bspfh$G(>tvVc3%-$_~Wfz)CHlL9X?jZi-jInGbT?U3U19 z(+oW@%RTz)1G~WK@vZf`bly~qe1J+#xcob~pW?#evzp)>L*XER&uUmz<&Q&%$FpdL z3a>+T?=9d1Og^h{I?+|U75slxU~7*zpbBtQ|3T8{*lNN*Y#A1Q96c`YLPY7VtyXrS zcx`*GV%Cf*did8CWII@ eGpW7{3b|)IZTdhFN+V^t$sUBk8A&(h${89 zB7=1B&(h7GH(9(;-wbh-c4^-Uqq$;gSm86ksF2dy^im_OcBpGH$_>=EXvA$iw|t#f zzSXB}#H6B0@Pg$Jx?3R@hzjOb(^^y%If83vyI$AVP->4BGu%Yqp5Ub>q8&yoO)Jw+ z>-CQfVOS)F;|>?Zd3tKGMfcVJf?lHB^Nx|*&2k>cXgeDz$bz4*r0Uh3O0#930nbo4 zmUr$_L-Vqiq&qY6D8pNEV~!ciq`Cv*Uc@<=2`#5UuN2uP?{_?F6)$4n1^di`=Xqmq zHp`AOU&(PFE2)l5!Yi7$k{1zYe8`Dbcc(L^Q&MWs>vMC=1t=?*T(w00MSLL33J8Ow ziR*1^9a=&{xAKX*f*A8mQmtfpGxLB9Aj4(Ij|<2VYs^XEi+TG7q7ZJx>)cY1_ea(m zVRi2aM~)z!6lE2EOorB9wNFL@7aBfJIEG$lyEm?N)S1w-prYl|zbm31+n7bK+%EXR z@6lWMkXe-{)KE$fKTxkWWk^#+Fg3P}Fmii)Ei13K+C@#A!VHoKO1Y^aqKOuT4a%nD z8X|@tBiNkc`IrD=@s^-pITC1!J9PLsVdpg{;%Vo_kM>@L@T?G|ZsvkEqtI&P>;67O zn+8rwyeB1>G1gHvO8wJo2q9U3HLBSM+iQRuwpJ_hT-nRvsk0QKWIDD4Ng{Rs#Uh0& z1%$hOX=>o`mcZN|xCv*SJzy$(WjD$mC?D1GcK7MZHm<2_mZTtF+RkM-eoeK%%y#d! zYg7R)LU8zk$<_E0lf8KGw$Qq3i=WqK;=^tc08?`XH3S~L30~C)?4Ak|zksRjiOcTe zn~>}%IUO-(1JI9I_~j!1kJ{q@<-2epFxX&XZp~-H<0SJe)6WJP4$WUym1jHxNGjR6 zi(|e10kJ>?Fpn6=SiHW8-WWM@X;|1K1q-{%{urFPs5@y_@fL%e@@}BL%z@oq(Q#${ z%XkbKvmn$`W?b}jGl#pEqjM0P(4bNHVJ)q9Ay}S#&l~EFF+i75W0r@a)x!ZU9K TJjq{UDQ9qw5axYhwyQ~P8h01Oj2}l)~12GrFVE_I4Db>pi9bc^z<=-eT(7v zIq~9 *M;iV!Al2s?p95~f{EI-47+?7+ zN9IcgDTqr$ VPPn9$9n{8d>iyC330B65~%MjiLIRNzb3 z@8v?vw-|JhHu}&HP>E}j2Y6hCl&-5?-&&Y^xYW*DS!M>u>XS8fW qN=FERq4KbTky*!-`-VK;_c!^BvV=w3j4XKh#ve--tu12)eQaB1qi$?M0Ga)viT| z+5UP|3i!D<`MxES!HK1a?D(X}D7g|HUYr+$KVl=k6nR%$11;;LmpAbNF{R51Bl;jNoUl0DgAgq z1L4B-I2c=HC1ew?T~-`@^K;}w&*8uL`4_?%j>3~!2|{l{$`4Ugt}Nh%$;?}H?I0^_ zI&> PkwPr5x$s%xqMJAq*V{C-vBzl*4Jf7tg5NBUN?AN&r!tTHnBQ7cpZ~T z#YuwT zZ4L@rwKnlK$~ylSiW$J&p}QS5!4FoiNgK`1;`e@qn|x667qjWm8px(E^ONHx2OD&R zg?XyzSb~B={+Qcd!*;b#?ubCV{j@K7z1Nb_uZ1)IZU(vS^ef}dm}cC7;mcO<0(|ZQ zmEY1J#XjtT=8fx0%z^Rn1_g#sNZt#8_=W0R*MeQ5?PLn*2v-RTspi|JKY7_P`G#2B zY?MwNsqr9EB}6w2-@Q`hnzpSq=Db7VD)&DpvdbdjK%}i!w)1_s94WeYd??D}FtbPE z)vSNOS*S($v2DwC+DE+{Ol60k|3;&xe1Bcp+S#aWPr>~NX~*mn$Jwq8PNTd!e04d% zTV+-!yMk6 xJE#14SGHyw zekIQ-^p)1m3q||cVjXHi-$SB@TW>`L{Cw+ a!mQz=AGwgr&+X>o?#)X1Fv#AtE29r`MDdcm?V@Bje(4jS5yr@IrxwyZ4P)(c7 z4~SPvo0AG68A>I*^hI>S)%UXsxLV|}5`VC`pIk7Cp599!CDL#E30hE8mw5cFZII^K z4 R1Mo3g(HtH@U;o UKEcFBo% z;9Z@!qT$?8RLBQyS}9C8{|rfl=+nh8zMBQ7hhc>TT1i5w0v22xY*SA4^emu?p2n`@ zZ{%7~976@KSMpx@rJ(2g_@|I9?)4MsDV2-Q&lIg!J@nRNi1`9#YdhHGb=UWA$IRx& z+fhhif=1s<5-$zyiR8ncCZncUg bAeH`yb?)%`#iL-C_0g^n%9tQ zFZ0)0B9vIYJ0hW5_{D%_tvdoSOKdWabVGH+xmL7v1i@#dJ;6#9*Q!HPPVkl|eg(rG ze@h|S#av4xbrXq;?=1waqr;^D>A<2t*o)eHlw}L>NOt2DMXn_jnJjD(Oxue)FQvHQ zXt`cYWxs|ASRM|wHM6%hAyVHeR1MpaKv3QPUF2?J;jo?qc0OiHnw9JFYHmAvn|hkJ z`?T{`d=sU__YJu>t5~5PKIZ8cCP7cmgu$0Mv)yJ~IS1?W_PPGGqG$yXF0Xqd-qH6S z^f8(2 Gf3$TKwR^v7|ErH=+pcruu+w^JNq zX@A6QcvdwkbY?=HrwXh(8$A!1P`c?*EybG$;$_H~s1Ku@UO>Vy}o*q5Prg^q(UR&8&N$EoFQ?ltA`v=`79x*9?&%FdF_YNC(+GmHPSS0?z zP$jWcJMf|2ld<6b;$zJbz6Q>6n$`1RPV(JTMr!a$9wqlplA1}v=ibvRs>a(d?$=yY zT4xR;)HE7?hG{Nq93bpX4Q3T^H?R7(c}dxfSu@j$gjdgS+nZnkG83OC6S`+_fqzfY zw&ov8cb9qzO@W29L`mcerraR16TjBD?&bc8kk4?^8Y@|K9C&OJ|If4LuQ^i;{qo_% zV3y|S(aSWS;yA!8QGcGiI(@DQSRQI~zAQ4QoXz)l1=pKCS$O1rhUj&v4YYf9`VnXd z;7!kBe15}zwv~9CYLA ^lV`&eL$NfrC#iF;2PO! z?X bN9Z?0;Jxw4T&z)G83 zPw~`YIL-2AD)NJo2OC@Vd(#IEayW6D($+9?qTgZJ4@Um@8m@UE6msgQrmfyneb1L< zvaF9iFGaU$WVutuG@ryw{Kbq+ES*>BK4U+;4~Eq1;d`~AIVjN>#XKr3*OU*gYsXnY zCOdd)rM^>`;(}v~w2+}pGl7upI0b5@@=rHTJ=WIQ(R6-XIk|kg$mu8!NIvmPsHXkg zm|lgXzQ48d#}Tc;f5ycRLQh_iM0gwuH+;V=#NXiqr#g~mgC_`MVx(k%)X^+(VpN#? z6jQ9Zk7bE%Nv|;DePkTU=D2#_Q4t0ctF vFQre4JLoa->kv>dgWmdAvW)P{kXL6jS>-c~M&rND2~cVe^uAaO zrcSv{-C^|VxVDYAuGFbl)3}1)S(!_YXM!vFLDt>$wKwQjHZS}!f1vI$@Ab%C?csy4 z2g){{5hwck{FSOatmw`1La~#>npT!J@+ajz_KQ>}J83Upal=1aNqh&?3!5|KdTC)D zu@s$_w@+1%O<_^(u})!4qY@-;9u+f r%Mt@1CaL89MXgFHm>vlsOOePV2Nz?&ej zD*Y_b!IH{Hn}k@C?+~rH>?Spd#fvHIB7FO(NU>oaXNPHgsIahd$ktM?*&c9`_``0N z?NT*{4LoufSLI%7cU$xS#tuE};-N7H`fUA|#}Ay5)UDn@sDw{1W$`*U2R9Wn>NI8P z0*eURy*Q)p_N}ZBgq^zP|H@dS;R5euBy?{hB G`l1^@l048Wi=Psfy?8T*bMXxJS`DQZa~UHD zv?o-CAh3d7(Rh{eZP9HURQpta6j!0PpwMXbo8+z{HDRem6iP!mDE}8_=k%Oe*y!2V zX2 >Dcxg+qP}nHaoVHj&0kv?c`)?>YF-Mb1r5s_O5#NAFwZ;`mMFrvjDQ?=1}Mf z8u2VFN4dEz{cMW?X|VS&P2GBST<$KEfKxNO38~6LWLqY7+1 6Yu)!yBu&}`E59y z;l6jjRhv&^OT2mp?DYbu0_ ( z5+a<`mKUnvA&ZS-wGsaynCqXl4d2!~fR3K$#1160lQQpV%;P z-I(_3=}d$okA?+*)~KMLmds|yw$npvjS!|~{4;irc$FF%kV%M|p;vphx=SPrAz`Bw zTd@$~-H0gs(~mv&(Twt#IB%{&Iv)|+Z*cAlgjh&L`9DoB{_m7CBOwzD3+sQz7EFYU zOdK5l=lI{Z7mO?{4FB8I|Nmeadj^+FihPHF3rtFKTAth7+$7w@gQaQeq1z;)j3y>Z zAjX3cmy&cPp(VqcyRAOX+Md1t?n-~o&enhaxBu_m9m2yx2G7M@v-Xc1@CA(V@zD+n z@JRXjiQPR=YpWZ_&ogs!>MS5 nr z0)zE{O%dYcQG*@rom#*?0QD4rIwdUvVcYO8cSkRNvFd?-%;N&FK|XgoeY<@VgS34e zS{WOHy4W{3Jc75afnM-W@%x1YU_&lIjzQEqG<_PI9l` jF58sNnx &ZTtAvywj!muJQcxWmdRx za`}>)erW0aj@=pqKe%|01-G*2$*(1mgY1{>ef-YA2Kw&Oa?Yb2nLqrtNX}QOHH>p< za{X$FCkz7_fi$at4p?LV=%n`@fArDLU>-p)g%0ua;n4)T*wE7Y7K7xX$01+22L;g_ z>sI1ldHi7e+ff0(^0b_Odjktp$<1BqHQTD!KF~jncyk=GSx7r`T=NIQ&Y?9Rp8*r7 zvV-3bZw2&nSsMHWIBTw3*p~ztsAR&H6ly2wGdc(;%b`1-!B6o^mvjVtN9iTH6*w!R z8yV40@sw>3+>Yv7)C)*9c^e8t`;sj{MD-gJx|i7OOO!$OavN%>>>j6=-PxDqS7fg( z*!bFsE-Bo+`e)>eUX}{d%7Fk<$+mIdNM&9(j~-9$SG1lL>o@U=y#1PAwtnD8YW#KT zz~G^4lrHK~<0ohzC-}!CP{sH4 dBOs^GevsdwpTPR&oL|8D+D>nveQP@(kU@_lhinHS zi{F{)1V?8un)iGUwIP1K 4AF)T>1~xWn!vrKd zA yqXpfvB>PPLGf mz+<2wyi5uUx?q2Z;&9~ zeynEq%z8MpP{V6sDHRsxOtw#x`UlBP&1s~CIc7c-{Z`f8f!LD8dqM3{Mb_ZAdjF2J zBo1Drfw0DR7sF!B#avGAEQ?&_*k5zt(+!_GzRnvEJPC_v(-wS`7 9gmXpGl{}GJbS!dPWi1e&_mk zLyD^EwhvztxD>kz#fN00P1hk3f x3JI~D+s4q zynOcaX(o3x50UpIdN3y?kgdZazcl|Ax;2TxmBs*Gqr7cOpX4o^#+P5Dco^C)&X0b} zdp3vEVbDvJ(35+en4r5PF62MiEPP5u29{_Gx-SGEqyN4e*CQD|$+yb^Q`mBu%>` zn=R>#)q%rV|9bDr&i3amJ|o-ZrGx47i1?f6Q!q*gP9tSD7Tu;}Y?+b$M_rD $?TeTy%k@N8+^S<5{H~Cel{jLpyLzwlWt3L5YDzDDOKET~5 zS7zn5=N_7yryy39v<=mocA`1b*lSOYT2qPb!pVWeM^8f(6@B})cjj)+5TmI!1?_~h zMrFo248w!@AO9YLx437U^~}Ee*r5wSU6fP-8`t!qFWzbc?T6d>#t#2HnKzg3aPPTd z&e%OPsPP-~0^C1;k=-0c<+hjmW*k(BUE+C!U>=opbAzz{in=2+Zuh1^)b@tyNUNOv ztFA16)!&%cGV!pCbY;kk)B4G68lO>nX@uj&EMWc^1w)^%r`a%PP)aohuul7obDj)v zv)Zvk_ J{Y8*OXN5hXzhg%1Wb?C}$npQFx_uq@C}(4c#j|sbVdD3u*Dh%&1r} z*SEya)KKwRW2!Mj&n|(`#PRR=f3IfHK;2u?61GC@QSML<>tFYT$-j0_@4M*Vog8;D zg#eKh_;+M3z{lkx7_lMkDY`!~@~hv)LW?bI)i1O{gxP^a?+`1$o+T}IdGnv96)nQ2 zhVA{B{11gD@Fwg+X6TE@F(xlY8xi=_ww-VYCI$`WigdWS9QiNLH!W{xyMg`KB3!E!J%Fu)Pi7wvD> z1`OD7a27|dYeTT)vVvM&482$D+;#Hyq(a1O`6V1wrtEKb;z}ZxT-sVZ ;i4{QH{4Zi5Cy3mg$CsitSq$i1Q7zj9UjO(l2Y4AqG^oJkI3i zuiRD_q~{rb5v*RMD+Hc>`u$x=IuMAoyWLx)`{VjIKX)XJGD{iG7JjRvo%%pC>?N&I z7Fl6mRnF*Q>0?mceU#V^dN&_if?0!}k-jJlc$@1ey0=u`D{ujUE8wTcJu606Gz @83!A$WwGcn7bZZeSa$v0qCPeG@6~+GJV1#4+%~0R@JF!s%j#=6`NAcPlJrc zt%lwp{?{5w;I99lgCc70asrY^joGm!>yOE{l<5sGZs71iIm$$-vaYu{ zr{p{PhCT!aQH!;Z<+0*HR+vyyL)qjJ-3Hx4Xl|#9eC9!ugCit?U;oJDfvd>JCs3iA zWWn(L0I1m~u0`(uequ}~Z|SSEU4FRJA@bXOKKw}c7K*1ApMaz3lvJcKlw5cpoj)A{ zvMgAWxiue$5Du5hE-$?yF;35JS5T(~=}Ouw61wjTp1+0uDuqtt19hfiKRZ^Taox4s zdJ@PfmhA++JiX^UO=uS8agA&DV~WA!5e?O2mCtm{I4StztIWqdM?uJKKgT1;RJjM$ z3iec}2siW+Td{k5+*5+9;*;b@q5s^XB^w)dy?ogUWlown*AoxnJ&dUJZm3U8 z*lPKnq=p@B(%B$q^DNT6Jk4c)f=H%af`EBeTcW=6{LzmpZXi&oiBaWr@|u@gGQ9GT zB6d=g#_c=9S}aWoyY5{7xHL#!-1rhO@}ct!_38pQRLiStA554t*LWX3Zt^KZM$TxE zm2s$BxB!p?x97MFx4{5@->Ltk0;gdcDoor~;WwA2#HDD7Ndh;k7%=*~g|NwI92pIX zO>a?i@Cb!7I*Y@V7OQ p|3!6t{4V-J_@*;h791P4$asvy?2>%hya3)C ztIxLe_wreJ+MF*V9PL`R71 Z{O9C|q@;8{-oIPmT5-Vc`lR39yqwCf zYls>Zzn6VJuz|P15E7u+^l%#!CH~N+
| +60NyU2e}kBp(8rz_p!31>@+99D1Fhu>BG*zU8TIkA?|eSmyj`F zFc}?l)DFInP5qtZc7-Q8&{Q^ciKe38pa^OKbt+i;S4)cFZ4J%1K_tKahOp7BQTuCe zRpG{x+Z^12)mnfc>Ozq?&OvD0D SJ|LCcRZ6EAp<2b=8Gbz%JGr}Y>{@|v`l$;TY&HS 8y|n61Uk$Asi{J`lXtiwu{h@hZcd0t X%PzCRd-Jq`7bBflo(Z5f)U$=7@2ZD#DuGugN;g-(RW68JtMmGjcIqfQ z5;SG{1kx4vcKUCS#Dm!mR0=pqn8v51-~PzNhLh2_<6I*N-KAz_D~q=NgITkQD))Zk zdCk@#h!sr^y~x&1D=1;-Ia^BzMUZ0CY ETl?*f*TuK;dc-{4!PMDJLof4+ zba2<#8Q`{XB1!Vb)5r?%6*07Mk|`%iA|_T_GE<8C4KMZRJ^0t)M|RPmX0B-rMK=KX zT%~@^l{&msUVzn!w3Zcw4!KoloGJxdS@##wpyIUr(EQ7|%IM(ATq+s->z8qa&!u^X zYlV}+trl`AlRsJ@^!7DamrYD1(eE;gLaBdi@9BTF{x&t&zM7D(gY%rrS+dl?X?f;* zRF8*0lu1T>5VxMUTgqRt0n65*USsQ~KIae A^?X|@ef?io-xcfT#hLnLW)E|wCbhJlAFcmp~W;o0j1iIV|pw=f+` zaxhkCQ=tXpBaH-e7H+)Cx)5L@Cw4@vce3Gajs~str9C`T6AIUlksGd{IpIUT$H{40 znh%py#tYG(Pl5-t7gh7z?U#;q4J^4AQLnb*RB&51$|gKj{FzA;e}25YhQLCP<|7Af zFY8X$FC^E^KO(t)GMMDkva;aF)1fkiFh}^Q3A{$d9xfbf0Sx~qP@c0`w }xn2FN=i`_#wyxz*z7fpO`#{yG)ms)vUu4b`Y+Z+R9zPq#U5cC6V?lucrb=@j=iNLL%Tq&7__AH{j!_5>o0 z5JlGon+RPH&Eq_sw%|gx769)8@s{~pI8@f@1*LiXXc}O18ICuQ@tcHy$f9%R7&WVl z(>*y0wz`70kBWcOSfM1^No10SE9gllT`!J4H^N8cE0_<<+1Qbj79F>wA_hM;p3Dk; zYcQh{6Y6jhXM@DkT#yX3+?F~(*f7tw_{b6-i22HU;$f)&+%=LuIhUFvqu;IFQ2r~i zb({X=$ogB2MB6lr T7gI~T`A5;q)2_eey@i{vXqc>HNQ0qna7F38^K9*67nkzsUM z-vFlDA4II!hTCpmW1rW E!I6Szj{DdR<$oP^91~aC;)59}-xdD61hOcei(4&>Lje)R=Sme&zSD#Ea zI3K$Lkx(*sAn1nasqrLLiN|a0If b{w0t7P|;r&?w5g54|bEK ~9*r!28@AL9 z0TxC*A8J(q#Gi5HPUk1G#d4e@j?$xI#1>cuK)13k33rk5gyihE@n-V|jxgDbBIwF7 zi%J~7UOu)eD837KUsrI&0Sk!Nwk$s?ifNWSDY@~7J4IOBHK635EcwfmZnG_*PJ30K z@7vrmdwz;gKFTu62Xd9?De4*Ouj$-|J^@?MkiY3gHq1M8A)g}5!`WsYM;NetOcaZ2 zQ_E_V>gtx}#61gaLaOS%L})!nrJudA+Jx?4cJj5Wtxdot26with+ &F;g9S{MbQam_s9BHgyI zJSKFeixv&L<+~Jw3rw2l$#Rnn->Ab{E)SC`4O*|W1lvZ?d1>lR?9z5GPUUwUrHA#f za2M)he*}3aR!zhtQ?C;zYu_DY!$j)EaroB{%g!Yn<^>4Lj=mG906?dkY#-3+>Rr6t z110MwV2n{?!5^@4BT>2tkG=k#JLg`zR{wEw`Uz58WvE})a@!EiD(l9Y<8X`#Bjgm# zXd}(~;kG+iG#q(YFlz48qrWBo+25<)>q%bLR+BaWihj*`u*cH5 GB&8P6&aY N$RcdJP$k22g=$#EH4$HZbFV4>9boj9l#? zku}jdU-{HiUF $CGiE+A;Zh|nMWt?JGdCXp{6A{!sYcA=k$j*y`<{qVT z+NXc~Ax l=AcoFNp5X@^}oro-gGh$*PQI}TUADP4*B6@}zW zcUT|e@29%KgkT~qQEtajzQy!wFX1cWu0EmL{?7Zv9Jqa9Q2-rbznP9iu6rAoO 8t(V^>&hEUNs=PL0W(#z=M@466{L(Aicf@M7(PS96!AiDuu+d$@@MP33%7v2JZ+2 z(QmL(W&a9slEGXHP2{#kVqFEK$Y$UMUsJi-R7_UzkA$qmkJfihLu_PA5c!w1ypHJO zSm!1vces&Q-Ris5;*w2Ph|tOHMQJZ>RQUDL+|rCF#nWLML`|1(OO5UXs{_YXMuJ_| z;GV?}&xYjbMrQaN!MR;gKt+uoIrDfhTHx8h%6-c_4wZ+mMN>tt>rV+9`md9B1Aeu- zOkgUSoS4 JdX{soH|_+7)>MRoHgMmAfD?8{uh4XI=q=i!VR if(`={upO( z^!%+1My8vdJ!Co}z VYmb4lkyJhv_xGHV%NW0|`NS!6MZ>?bx{EGl z8K9lRsS-!z?_Sn^HT#Z^n^kEMN-T|_o!P!bGL5helZkL;N0oLXa7a`ZWk*KTH!^b3 zro%vq71lkE5CCpAtrQ`~QU~4##p&}*R S)2D|w3|D45F}A`FLHye#9=RykRSWFM`E4w##ngy9l2pjL{_0C zb@V7LBnL_b-h9=W`tUSm?jRO7ipBJ~rQ(sod&W ?y`th^Y{fXmKX~{X#xvwVL22 zyl)0SZI03B-T7E_%31x{E;J?fuN!pxWjD_xP+)V2NV!Nb&3pQrz8ek|OtPni)zq6b zI*3AWWDZJn)QaBf->CEHXU%uWx_qN|ZJ4)1j*sG*iYfJ5 zjIpp4^)+C%K*WAei>MhGiwg*IL3Pj3*Qal+xxa_!#Ujv{MIB;JSzQS5Q*> zai0g0t<7fmHhjJC^J%T>g+{GF4PSrn%9#Yq+V~7-pz6q25fN71(@*^9oI&mu6G_j7 z>~;fBV+-ePhbeA1AQCM}&1Vp>0<)EmV&$Xc^GsAz_D7%r$DZ2PrZl(heBeTwVA1~| zv%{)lMJD&`CVGxSDIpFi@^XPGVlJEM9yZCMOASweM-UY@U@J#{R)L7a+R(r7*^O6y z8b&*T3*Um@_aceckfEqG?rv8)@n;u(0DIbU3R8_A*mniJ^SPuF-NnA7fkHVg&emv* z!Cn3}FAn2qBl|f1tb*oUb-7mv2p^o99(C|jVF<{t;o;(M9LNFul4llAoLfrm8xn$g zkRq2Nsu2j+9`+nLLK(UH#}>CTTW$ystHE+Rg>d)c5x#Qnp|-f3e3B8RAvE9RTcMk| zMvdicG5@44n3zuS;6)>Yl0DB~ydn4357P>{?L3UfojpR22F-Tbt+;8Hl!auc3^~FG zFZnUJFEwF+oHPUmPo&(TJP;k*hliatmv~v0;zeQCQUj0H3A(s~7cfbV=Jrm=1c({H zn{uh5I4(Wno*8DbN|@bXbMqja>2qkt$E9B6HC@aNO8!XG)Vs4U=0$~u!fu0!*9Sqm z48r5O3d9PA7BlTbXYa3>&K$M08J?m8Q)!%lpM6QM2;VMHf86m(080(TKaOx;TOZn_KpYCNyjidh(&jBOAjJxWy90;XkPlA{O1O6eJ-2UbQs zCfg?v!_915(BGWG0q{ NU&`1xs)nK?53x| zXOntp=RdTNCO$7Pm%RovRu5)Mtz>(K }oN~;zl=#T60*kDU zL$%SkbZFpZ5=Gc;pqtnL)@Bq#iB~7-L`%yeN0qN>rnw1RP;w(xx+39|<#5sCc;mSh zGkT^DvphdZ`Z;z3_N&1~KGe0>+FQtY%0$`L{;qE1b~EgZUi{N*KvjG&{bS)h7*jl+ z>6tH_Krw2Wmx}gahb%Of_a42uNmbp?xtJgrf{ NkhW1=S>S#swDoI#Me{Fv=Q6nN$eTCkG8lc;))e~!T$($Tk4pP<+x^rGVGvB% z(gSkZJJHX0{B1+FOyak2R`00jhe`n^e1i>K=9gHt{iTC1FqaL`2zZx=WP7s}A5AH_ z2J1eFm{l3>*5$x&YtA&gyEYvS(nKVAOpMfn#WLIFf2G y6tk1@J!_D^lNUenk@_U#8 zGgHs%A%i3auB_$qMgUc;__AsS(x3=<&D%tFtV`H`KI4?_E|xh!axYBnbXuaoS)d~$ zjXRLhKc&ECsoms{jI{UDuJRQ?TVwPxY9fVc5zm(2Bu$hd{VIgNrfWSn@w1#_Hw~h; zpmKf2Axe#LXIftVZH@fdL(K9q`>9b5t_FR;bN1M@)mW(C!Tr*c4wCGj1qoG)l7k3# zeAWp}<>C9%o<>pB+aO!B2Nw3fe(_ppDm2XHgl+|j2uu4|iZevHodNC0)q!Su<5CDQ z6KdmBJnsiLHgq5S{Vr>2w9pp{I#l`_p_acdf+3QY@eXk%27|9NvwRSUIYfW Kh+zX3w*$UL2<})E|LaJ$CFU!}kTii1YXI1?;{?_S)s}Wgd9W;10O;urH+OxgH zK4E(ed<(UQM@c2wou}MtnM596NWSNdTf<=8gQj1fVAbTIFB(nmn#TxaF;M0~0|ybxyNVIFE)?tFTRzhiPYEZ06$nPYJE5eAo02`Jw< zqrmV+%c&gn^=5qDbHDmbkSVkQRb*a#O}vjGnD_GFo@+fg(qflPh&r)u!K*6~y5ZH3 z@d#7AfBRT2!l$}pLbjz`Yr)AV_Y6J2dAMETn@D&u1P7rjycop7qS}&r!@b x)Q8*i8US>fKF3#{Deo1mOZ*#f zfbX%iWiK0l2?)ZJ^&(jqo>g4`cC<8Hl>TENdJIC~H9(Jnp;pV3^qKquXAGIm;gR@a z$o(a^EVQ$-(6X^9AGEsn@@vwV59^rZx}Y%7_ O6w`l?-$a!i(10JvWGuoN35o*LvFF>yZFSV7hGaJRQ^iOt%$X8^()s8-!f@wBjV zXZd5a^O;YX)ZozXIW$)$af#$F&aIrRw7?lDJRSMcy`Weu?Di!t{2sTx&zk`&0aM;n zdkx|}D#P?H_dx92TaekW1+JLY)DUqRgbBEeOFct4S!5CpdI4pt-`LvBa~KJyQcJ^{ z*N@h@sU=aw3{atOF^QzL6W1k)=&;+ INkH_2#;%a;F@X~ugY>r z0*wRN#x~DY4(w_@)4Q+9n{Ru5Nw-CMCRZnp)1cab?2i@_F_vo d_ _MFmx9W^15 z_Z%wKs0|35?AbOm-ofKOxB!ur^<`|HPTyK4yI)A`9{p@kb6QQVTqQ^Y(@HX6!@Cur z99YsQZ*414qtWWGEy?-`iN`7Qn@zCK`b$*drGG1Od7naA?Y3cyKqO<+kdqQOA^lTj zXee;mA;J^S>(q`3YFE6bzdMo#E@9?~E#^ixeQpXTo_=|yUQP){J=U+?(+gfu?Vm30 z-& ea7fSdT4SJXBmd{%raSb<7d*d`lR7UwTGw0rXel_z^Yv- zuCXkf`F3H!!`t6y&sa3&sFtnWH<|KII;7Z|#xkfYisQk#1Y&TKZO-=YBlphuh5cR% z@H#pdV|e55gWY)5PW(?n1O|?v?PeZEIRY7M+=wqfOB~C9Xa+oF>rMSq+Mx{OK($)u zby|bP-+FXREphV$dzH8X4d9R;?))zS 4=Aj2WZXiyP6J|L&&g2vcyL^?p~Nl z<2cF6*Q;Y8SP(4FUJb_mbJy%$0A{nl)Iws@Ak|6CyReY>U}%L6bRy1enY;=IiKK zSd#O(zK2w-_@j=wwVwAnD_R||0b5SEJ8alTEGvztSgyB|^}KvKE8+Pjl4*2v*fu7N zT2mD9Bq~YzmsTc3JX<{cYR(N# !2pgI&3I%yXX00ausgy}UMVX<`{yvtGeXgxTR zwWHdsEwnv_e2X0(>ttS>N& BvJ{3z&jJhO$Azg1DFPzVznk+!pu${h@Jh z(L5`=;9K^}Z!fJ)2rELJ*yv3SMRN7EihI4MSma(v_)|7PU=(2f$J)2fl9SFdKKalz z8Z7bmhX=qWjBmf)N`}Rltgu-%=`to Xy383Ru z>_Raqvs6kyZld1T`ej2pVE(i}J@Ak-I)q!tbXlq-@y{GpPt2Yn{}mJ601)j@%rEJ( zQ!4|s z!{3jQfb>x0iM(c>p?|x;28kA+Ru+Eb@WL*!+M>l6M2@O(9CkVCg@#JkeuuWpJ5i&6 zjdjldN@tjNiT(&{`~o#4ig96aMQ8yd?OmfWK6mlJi)&ttwbk nMFeb-2C%J?RpG31nLCgw7cW!rI#B!qQY<$fxXWCZ4}!Smoy{0> zFY-f7eme@}Xd1%vS46l8E?{IARJ7-1bbQ@juQnSF&15*hI1AatXQxc2G1=W4 6b`VGKh;%-CQYV4YUd=06wR LAOD*K#U)Ds=U3ut<8EG zV1wiXx0TsSpzyE~`B^u!f>o$`%k%YT`~m|w`v;z=>Y%Y?1E)X(8s(NE2o~j8(xH^i zslZeK6|28 w`+A+qN+pNz19)x!7 zGo1ckzts4dBlA!|`8+0%iqi2f`4);26!6r>E1hQCwR6Z)vfb;0^%@?eXMm!;k{BGi z+t+kIzy;i0cJaCQcLAL8?IM7P-(H_Te#E`T)R|%+O4ShJESzk?`t8RQuT`$#z-r8~ z20JI!#G~>pLrV?d<=`@fi_1pgBWu&SYMAs1beIxS7$;T$nrsE#IiIdLYD^pNzx{nD zk7;#Y?k@B23dH6v9B;(%Y&6Sm-;kk{*r^upA@|@oA>dqzxsr+gU%y;A_q=lWiJmC2 zt?LGFHmymfx(?(w^<1W2GT;iAykFdDHJldZ?V$B{2QSRY?&gw?H2uA>nY 2ge V?g~dggv6n)`AwWvDzA$lAyn<7R`OzN+(n-c;i+kB6MOzmWJf;|;Dq%R zdM7eljMO?oGi5mz?in7)W*@jQ9v{KSb|dXI#1GxRp@(3@${%+LZtC~Och(y9DLUyw z`n>o9hPbrc$=YsqD!MA4J8t0R-VSltiT^B2<9R?US?s$c*qAomz%r_f54FtjQ0@Z) zD%sNIJjN>Sh3AZyKtOTIqlk_29ovyFJyfC>QV(N_lR;Z@ZN}~II9-~1CEMZVjuS90 zM7*-8FA-CMo2A!baTAV;Dgc?>OCFr%dt3hVcWZH)!`ZzO(*k=;IBfEw$M33wgS!+w zt(ZZ$pt%K<^H?&$p-V#3i1Z9%o?LEl?EwzlHRMGR-I?A9%Ldi*)g4~pk*et2nuDYG zKXBOQ5l%;LQO OAU?vBI@dr*AYA~Njy;`nK%l*%vYDfs zq%;^w_2Nnm ;XacAv%P!m(qW)vQSjlq3l2@pA#Z-1aVn?q_IR(SafvrL%*jqov$xGN(d2lp0l# z<$ 51zU*W@m5{~+w8eO@<%3JYakdQ%A`Pg;IZVN%btt6YR=Uc%sEC|`0 zW{L*JmNo6CmMJ^ea4lPco$PHA>(kx_XG_7(YhPsPV}h@utylhCu^S!D!W;#= PP3Kl4{5Cz&$hi0ZjLv2MxHuvdrda5Fau0HAgDY{b|q#}2m- z?Q_{?;XeVIvbkqPK^J`hF&a<@OA+~^9U$DaKcL#@tmEh+O>lJa qD}2BQMcJ zMt^G(ftTem`t0r~qVV{990 dm<5E17*x{<^`vyjg2i|EQ29yMeYD z?PRac&`ag&E#Sq5((>jtLVdJgYKuhj#Oqe+2G-KR&YX+P`|QPpd^@Eyh`_|?+;i+5 z;LJy-Gd}hEPD7)rRkK{?5`g~ZbW_8r>hv( v2hE(=$)+#@O}!TS2p%Hd@mfj9?p{?%E-zHW(yiIl=wNf^eJ5VOm@s?!fYX?tti&Fc6O654mKdt+IdPg z_P6 Mp{1;o{G1VJ47U&4M^dKA>%* z#hrb@1iLbilRpOcl)#<*hbHG_#&aOKd&z{7g^oQwzF(R#v!S#uRI$kT5hlxvYHdMX1z&gpshk zrU~q23szVeJZn)l@!=Po7qa@i6!3k@7wQb>SRxu?MiWf!{?vKp_o|Fwil(#Q z#7Wq^ >KeOUZGJRT0CmxZo)00;-LF-2erhdpMu!ok z6IQho1kG;JhU1YY%-mJe@OF~z5>dAAww6xlVI9t4LlVgm6@