From cb81ef879f75ceb9ebc049a25812a2d3e6d6b8f9 Mon Sep 17 00:00:00 2001 From: Diego Carpintero <6709785+dcarpintero@users.noreply.github.com> Date: Mon, 19 Aug 2024 19:07:16 +0200 Subject: [PATCH 1/5] add knowledge-graphs intro and diagram --- README.md | 12 +++++++++++- static/knowledge-graphs.png | Bin 0 -> 193885 bytes 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 static/knowledge-graphs.png diff --git a/README.md b/README.md index c9402dd..877b5b9 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,17 @@ Tags: `[RAG]` `[Chunking]` `[FAISS]` `[Hugging Face Transformers]` `[LangChain]` ## 05. Knowledge Graphs -In Progress +[](https://colab.research.google.com/github/dcarpintero/generative-ai-101/blob/main/05_knowledge_graphs.ipynb) + +Knowledge Graphs, a form of graph-based knowledge representation, provide a method for modeling and storing interlinked information in a human - and machine - understandable format. In practice, such a graph data structure consists of *nodes* and *edges*, representing entities and their relationships. Unlike traditional databases, the inherent expressiveness of graphs allows for richer semantic understanding, while providing the flexibility to accommodate new entity types and relationships without being constrained by a fixed schema. + +By combining knowledge graphs with embeddings (vector search), we can leverage *multi-hop connectivity* and *contextual understanding of information* to enhance querying, reasoning, and explainability in LLMs. This notebook explores the practical implementation of this approach, demonstrating how to (i) build a knowledge graph from academic literature, and (ii) extract actionable insights from it. + +
+
+
ELU%x{+ZsWsC{880mFDitzAG} z>v70zxs!#9f@%e{BMe*_>;g_gkupEqxzzYXq9B!lXa;}6<52%HA{afi6>1QGRnPdaa(F zOT1f4EaMVa2l$Derd!pD&7S+X8x`6xXanXVvK7bGK)!4DK+aRh95xf5fW`X`TBYhs zfBFQ>>YswZzd>)Rbgubq(bdgZG)06H7Zzt7Po=4^uk1?v;G(?QB
ZrfTlvH6}l&>4@Jb<%ZW8Qb+WD%F~{fc`e zTWXk|x(3oM#rP(EQs`YI!#ZBNP*!+z!(xCnK})0^*0Xdm-`t9C;fu|tpEb6S0lv*f zdzwwrBOx snRLaR39PbWUycj>f#R!#G z)j?&~d{dP1(ahmCIsvO899uv#!_q$hG8VvCVWm!6a%EqZfGtU*)n-^@h1Peu)8ylo zZxZaLZ2nRFmZNHw5-9*S!&93rt3O85|3R6lbNg{vF8Kb|Y_bTcTK!gIXIat5uNm|0 zVNH50lS88og;nFT28an5{3*8df+kHLE(cz|d_au+=LGn?*pW(s715$quF~2h49c2= zGgy^UB}nlI%zh-H*Vqd(paG5{xk@*LF^gBTy?C4w0 g4gqIn^*j&C;EoGO+}*=OLJeSr_> zr2Bn2VI6nVW%oTVSWar~2c7vKBU%NA!t~KYBqQ_@gGGrqSZpr7%nsbSM>tZya#k;L z=_?U`bIj`#9BxNYKrP>h0uCM)9VdHJf51;oZ4v5VB% Z1p+y>^ArQQA&?MIu;4)@pmdFqISyvYIxNsU?GSEy>q3?)2+^yV>v=ZXajNs z#W|kQu5dcDMe89;pGgS!9E0o>&eZ5(Prkyc>hLD*IGT9fTbh7d_!W9u4}HLE(PeeU zE`k+II+~>dGq2*z5{(H}SxDIL#x9G%9icMMlH(6L@Jfy58w0g}(uiBh lk&MI*2y!&FJNXUYmDmFQH+R1vs=rci&h2(XezI7_ zbTO46St65U0gVXTlf~z !)%Qx7jt(gcFD)n(=&}S5&hZDF7GjO>uisF z!^Oct*7E|M%8aU+o2PF&P0%G6NUdjPW{K c^Q!DIh={$x&CT4+ zt*zl+Gh@pIOYRfUS{BC;Lmo1V`43E-pIvVak6AcB2ja{Y?ZlzPg@#5#Sf3-~pae-> z^P?&%DyDZ0QP(`;3KYZVk91+X6QCii5Pg2_A0QTF#AE{3gNBOC$szi>S&z$Mp}*Db zN1Y{I`be|yQ}sK5#cc;7VoiJX2c%YtjlkAv2Gl6#M8n-B$m-z#^qw)R-+G&i(P%OQ zX&-*j7n9LsgylLjNdN*6<>lRj {EIEio6NVNI%#hwhCDVN6{6|ZAcjx>nJaU(;L`;O@f38{&fG^0OqPCXdJOP=E( zETyENfw_9;XVq01*^)|Q8k|zSPZKi1Bdp|8!$w9&j bgdgnZ|YRMyUQ6r9J zjndwfRT%ruBvnZvNJOv(B8Tf!4U|F&_w$Q{I+ISy!i_XU!-B1i2s#NPrvQNidF>aW z0u5z^`TX)US&qDeBSPa*D6Ix@PL5)0#P$xThf4s)Q-1^&mQNC$8s mQ!- zIYSC?Sg80;f(2g{1Z6-e`~5Zd(w}*`xz$5O8>qi@A|fG$w6(QWORjfn4h^|Kj||s7 zLsWY*5fg(v-5z3zh%;E-bx;LG(|-~ mHa^&&2 z;WfcOd?gO-Wq&kfD1|8pIk* )vsolTp4vK> z@jON<&fx#u?thAw>QtaNwU9t0FMi8F=RQdbiMI}EzVU-$p+cLqR`lloYE*w~@ltT0 zBbdwIm0ez|ofDwHHzxK0wK0G3Pj=fo;`nQIvr62x1b=nyUrVgc r8^L#R8H1f2c@Io@AHxWC8Y>x`Dl@5T8!TQK0>@{7ipaJf>o*Fph~ z_gW_k Q7P!`4K7pF(C_FE91 z8<6OUG$X9Xzq}^yfB_I?^4%+1ml}-lGPCM_6S0?}TB%j(45r$n+5O&&yAxzuBm9>E zM U5&UJx?_rns%pYIEQKq0RA_8x3np{a?8X>I;}(D`3J5tl)G zK6D+pzIQxMwI~mkvwmEyQiW+ut2@}a=xF<8aNGKS)TDK<3;AxP9JBTIUfQ`DKgaHU z`S;X_>!8_fXF-8p?EYN8H`cOG0dML_`glV2tRnsaHQw_x|M!ff?m7?O_l`R}0w6u4 zn1&WtK%{6B_Fqe5y70?oYtQT`oRMVI&{3t5_2v(V)uCylxY$_Vq)!LMyv&UM#koaj zQlU`4J3++6Q+2rtai7A$Ti^<8GuCkblR&>n(y3ApB4CcnVCHd`?FU@`Y6EQ#r`1nt zZXO=P<=z$vq*%Crd)s`kA#|a>E>spi#*Kg4HQD_;BI(P4e6&(VWN2u};(YUyo@?<0 zBBL&WEV)*H^ad^j0T9A&P8j}9gm%|V79+Y_P}|BZ7ULGxe@{os7Hr-9UX&e bLVFEzf_kK16aATC-h5W5QFpo@Kyq~ z*&Z=8jJ38ptRFTR!t*9wJuKpXXmem-z*hq&fZy0@NBv= dMpe^B(-J 9Gn|}W12@vN4n8R!d%>NHPVGx9yA9VRSYvQwa9uPq&@P-f49vYh=|6ac| zabJKx1r-|A9iC69NQC^%j(ap}b#-;3(fB+HB?=@{j=ZR-sA4_<*c9p{+fMFphl8;+ z6gkHX;HA_-{9b%Ot8$9RV|z_}&st^|J}jF4*Ju{I{D=F}Yw3`yt SP5kg|07#N?hn~!-N4hsG3cfWKVhkqeL( n!-xk-`*RIcZGyrI7NH79k zxQNjED;oefEwDG9f%T9m&qomB^Ztg__5Pa=fJ})7zE*5Bx`qyjZ?crH2w9F0ySJ$I zrM7VSs$-xy)OXo1QlN%i|I?sG?(aduqy9OVegimQ3PcRiZB9f~w8r(?FcP0fX)24~ zjkVR~60rJ6)~N+)O9`q8J8WbF@w%K2e8BGunEaa6x12$)M)Z6>NJB{ydl1S|O1ap| z0hK_v(2`W_L^=(6uc+;Xzox{P8R%Ov1#9H&k=PCe5G_f??E8Wdu$lFRgWU@+HoIb& zI)8~k*Aw}?Dwdm%hKj;A0>0nwX;l~Io12@PUoY#^p9}i{BNhx=^W&>!%-Qpx*Y1Nr z_XOf4I+N9lzH8vWZ>7)n=fK=(E2OIdXA&uk*I7hZ*caIfaCTg8_N0Sh8<&>U*E&4Z zpi4-_SsCG_VH-W4Zh8g>CGQSTPa^;qEYHp$J2B18&5?srzYd~uvlW~R%Pf&vv)goV z2>ict EC1_5 c74qP@}!<1l`WoY1FNZB+Pb;*o#|!gORvs$G^I1(2&5^ zG9Ri&0pzlKgaR(IBHm^DPHs@8a%o=j75t8~t<-fyMBQ(8Lj$A}50&_YD1Q_=u_KJ 4<`jjoTQ2h`t!p%o$f>i z7ZT9hw=zjh6S}6dIyYfDmP)cv4AjAs@KXSD(2eXT^xi@zNc-|_+F0CBkAnEMi~DC# zD&^c90*~uTPeloMrbF#uRF&AjYLPh#(9^T7=ATyc0QD}O{KW`KD|zQ|LKVU=&o2~t z+;n0(4#fKE> }#|NkxGGSw7()+3Pp_Sk8(fHsi(K2RpiC zbbI|${w2nL|DYQGkICc5qF++_Ao&RaNUSly&X;Q_pT#7jK*2Re=8jmW%WTcF5g!E| zFck&_Y9Z !KAlq{ZiarDC@^Qu!)EHXZ zX6^v`)p-|l!Fnwcm^y7RvYgvOtN&G-HXb#<^5O0-O$fl8@IN~G3S_Ex2gbDwp*Ou| z2`^QvEUf!#zItc?dca-1x)7cbfG#2O{`H;O>GhYrtA|I1H1ECzfZPi~$7KQL=iyVt zI5#(Latm>T3C{13I)#EYZU<(t9oOu2iSoL0)4d<075s3hIYnsGuTgK3@9Smuw- <=97Iy^IjS6@GY9WG%Ykltb zV;3JF@nX}YK@1zZq8|vkU7 PgOLb*DWmW-&ztF|?EuZ0 zjiH5Z)%Es}A@yW?HeDc%HkH#!MuC(8^vz2| uxt;)&XK85(qI23_(%@}KJh%jEAuE^ecg%j9iLr)kH7SRRWL zUT#41@fePp+I8L98vm>P6*6TEQAFEiD`j92Lp@f09*gsVRlNlUSda)w;BvO-845g} zyCp+hW9yr$%9ow)oRBLZQ%E96f&$E)yWU(&vb;_h;I2-$E!n;xZ2|pdkzV`a+`PON zeBu?AWtEkFB8sIaO$7xIaLMJ}TYliF)#gFD4_GV)vxH@uYMNvQWQCHnpt%(c+Rexj zm<%%y4)e|_j5;C!+**UpA^>uI1}Il=?|Zm4R)bkwiB5${=$|=IH>~NK=BtFh#Xh$$ z+l1*cAj5Z9St_{$%yF^zlv3owZ@eCgAG)!V6JXH~Xx~*;7YL{4(d=%)Ji&MtXRtkb zjK0QzxJ@Qks)NG@;Jc2F-{Z;zMz{01z~jM6Qc1pczRNeav>3jf>_fv@tCq=WXz&0z zMk;=70S_lp0O3DgSt-b@M0pTVz0CneGbk{W)9vZW)%w}0pr|;as; 56nsw$eWFizWY89}cI6qM46)fUc@+zJvBQc7BS8W+XK$7f1NZXs2Myq|Y) zV8B8Ekw!K+B*c xh*CpW5FWwuI^Ne!$(V%QN@FqwR~b;HAoil= zm! &n8JtbQ~NAYzOqngk@Ng3qqlkGX=Ufq0di836oa~ZA6BvMb1al6=mw*){ U+4NOoOna@3AJhv#gxZxVJMctE=YIiTohk9FOwq1P# z&UC7QiUcoYk}(D|^-^OQ0^mq%9! pBW$uF1lCjA58Vw`or8^!(G)}L)VK4IlVGS1K`xs6& z3m>_!l7+}H8OO-ExR(7`KV(@!QHe=NP({@Z(S@@)bfShdr92Rq=P|fCb>E?p(^lHO zsLrgcSq#>WG{Ivf%@*2&{D;=vUaT9uB}ifp8MVL0mrQ}Oxm9r5EJp+Q^l ^vv#>VJn(^&9kDdnf6zJ1MR&pCb34e9Q- zthv*2IqL=R?600%ldc|az=Av~0lY>o-A$wzekY*~&qJ>QGh_C!0KspJBrMX%Yfp7% zz`cUXweVs#NPwY6<4o&5Zoxt06aXJt=LiFFTNvsql6Q0f<-LPEi%Q@voGjIn(<{2F zl-|M_8O8KL9BQL1r?RZ#o>aoLT9cZDj>W2IZf+(t-~*sdzEo|7E-qG<940+Kv=Lp; zbG<90q_ryNA@?O&a%~-L4vPI=VUrh#-VpHUUHF2NCkr)MWxEkwf9FJ!7pJE{%x{B! zKU-y+quFA!!l-tG*=V`in0+XJ^I70^>rL~}CyvW{dL~I^$@*Y!*v_uxvVuy)jJ_8W z&jm6fxuSRHsqS9FuAzTnrOK$6(lMkWu9|@F8@z4DeKNgRGNVp-ZmwmxoD=E8b_h{; zr$i*SA{}9dnB>7^4wGf3V!p)o0G_Q%gGnzXoP^CBJOm>l_{gX9>5t%YeY~LP;RB|g z5VVdK3Qn2^uYU6qPM6k5P `vXv*x_pC1B^!U8|oT@5f zp+qJLgZN6u*3w}aqX}1QRGa2b+X@=#!1ETfZ1nG$ayT7kUXOi($eiRuN=-r*@-) ;M1F~+W^%sS~e4RXZYfpP~7H#bK$y#nv|heV@iJ+9+Y zQhP6#U4u+rul{&8%^#^hMiUC)wtYMArK@VsOCQ40^Yp7R8XQSqn$DM;?)36d)#8Qm zxEZGEU(E4(&|nA}OijgJ^K^XsX<+@qdpC;f>L`B^)ibTyJOEcOp9x~*lV60-X<5_C zn}S!PoyiJBMjQ%tRE3B}dt9Ofu6l+boJ9&I=rmO>*EKq=&~#@fcTSv3ScqjQv{W`D z>R8FACEOdrxb&S9=PI~7i6@nlCyNvA_#Y&t4B7l%A3VBVC8#+Wb(tkY{id1+e+z)# z;5uI}h(pK6`jdwRjA=EaCs0MsuAosy(d_?ZNat$P9okB(JFK=lhAr2qK_}p=w{&VV zx6$*uCE&DPB?(>fdW2u3Rv~q}^9KVzH82Z(2{ZmJ^uBZYp(8yQyRPtV7+~RNt^ANE zi((2&$`O$Q<>Jrxdxij{o48)0dYO&Wj;KtWL%H+mLW4ysi$OvFX;WN;@JCGK$DFl= zs3u2yC|(`g)XtX00TgQfQeV=^W (GKUKh`fM(({6pzk_`2FU7ME=$l$&P5 zYcOCvkh!*$Ng JxVe~b4nCbFNE%y?WcvCEk!oJZF) zW}Rt!@XKY37RG>vi?$IO=Z%GT WOTl-R|GAnN77nX0W}a_WGJB^eVeC3-Yl zBmlw7-|vd?`7*`B7$RLHmu2Q7DL&nos=<|{PpX7;VXkrPK6~{v_lfv4iLn+9PcKjN zqfewUS;)8=UAPr}B8r-tux4f{nt`Fvvp1@zfmeeCYJ<>|m`Q}(K<{p=%PH*$47+iV zxOl37Z4EKo%-WnNo*JXhT&_A4N`FKOqrsxqWq7Ma+-z|u>jxmzH-+texPT(Emoir7 zYKY8XGe`i% h5@43rfi$0%c;7kL!ErB6=`54<7f2mXUCtm2!W7SPd?Lh8w=~dEAv>s&*G=DD{@( zjtjBr8>sko&_?t#M*1r7+2iWBhf2%0nRF)I@PTLsJhAbnQZ}>v=l6~PBRw~m3jctQ z28oAE+CRT{MQ@4BQA|&UQ@}xNC(6 0J?;9Qn)VO9r;eBe>3rx!38wL^i@x4B2l3GayB z=~_$O!nymyS=iglW8dUtl`bBom1f@%)(I%6=$w8+(LM%9{c&Z8v;!6|iExW$VxK9Z z1dmnX=mI`lVmQq>O&;DB!BXb3y_STq3q--QvAp1eQ~)Va!5TJE4z&mZS#RIzzLTOg z>&=&SPGe>f|0)_yOSX)>JVV9Fa|c=c)^8Vqj5@sYH^$O=)K8F4atArmyC}=yt>{rB z;W8wqN?dx;&-`{*O!hn|%&2lCwm78%7V#Iw3ZuQfA`riz=3d;4&gT|$a`cF$=utS+ z6N-4)gUHZ0tuLtE76Er8Bttb=%+%DBl$KV;QmnVH@8dhWhEY%*4J8nSo+r=)SVF=D zQRL32xM-XeO%Y6UXkdpiAW8e~C$bfIjM)`FvJJ=6EBsbwzvpszjdfl{RzUsIiJn%3 z#}}EwYLRnedjK5huuN7`ZA751TPM05*&5HJf%Y{o4*lCwt8*%C@i_8ss!@*E)NdYd z5e^Qexv`-kW26jF&Ip(cS%r$}K1wv$sPU1}Q5Lrwm _ASc+c0Cn3hxkY; z!h9>+foHiJ{X_Nenhp@akn`RES71nFuV#?2OqD3g_5QnPh?pKY6k>THxmX^V$Kyp3 z$3!fNs0GH6>AxPEEQH}_P;qx&wAwnTl}7`X5K|lJx^%3pFS)FeWp&-AQM2ksP nut{ng+jQyxs`esl^umXbGNx%4zNw~ z=Raejae}Y2uURKRXC}KeDpqZNA@KFBrVQDIgAWw;Hed-iqT7zoZ;`6>3$9qK_{7J@ zEgAb>?v|Vbqs_C}F38^S?G}RfZr-PBjSL`<87xwG7P>m5!aR~)m*rtTth%YGFMIuR z_>V7FPhoXtz_yWnCAHuu>?p0JfY&|Vg^dn%I4xD9dMZ5X`6Vt(%{OxmEHN=D44-)t z7wMOAD(6B>yXBtAY>48v6>V;XyipIzpTOrIcI4uL$u2qdeR6K#2nI}HZ^8IdpQ+L> zH#-mq-DnynngRyoDcn#wDe;erEWM%uTc`a$$bwr-S!*5R64XL#9ZUo$)PVkqmKI|6 zAw5qWAe t#R{Dh)@81{ny++aRr9^Y2w2A^B zq>W>>rMEGSgPs~?=^(c>B40s92W{4gK$Y-x;B~lxMaIPU1!0&=smBSa0##zGg_O=u zmuzfov~#o%?yACS7dTb(sgx>{xDKLC=ssAOM~v bVv?r-cn&XHtFcb0Hv?x zFU}9uk8|=Dn(OuvaK3w=?vaq|vxu-97cpr%qfx$MgSuDVlHhNWjEnmM`VAtjngbDk z_}S;zcF0a1kkp-vzfXZ_888L3TNve|2_kfCN>sbGP36SVTw_By4TcKHvWc(+OspDW zqAKXVTK-$+8HgEQ_aF}RH^^5V5Vf~L`Qh}c$|#2$xVRL(z`S@=6;;)~=^jvBLK|qr zE58n}TTJC-^{AQA0hlPKV|}Q@g=d7I@`%DbRH+EaT4iTZo_4q`v~n%H&UE0IEXeFA zXb@VSg7A5IxFqWSkra_XlA@-q9Z8krsib|kY?jkAKF%D!EW2d9(Y-cSjv_TV^3g&9 zk$-)Cim}}fTLyuySqbDP21sdtD??QU)zkzWG^>$fSi3)|@%~ Q~1{@wGP*5Uho+>GPD(DpQCP zVmlf}6pF(AuV|R%EVc`=zKSiVygv==2>*CXYo92s 5ucFpa=^IMu$;cm{<>6fK(XV*8=|q?sO??z+xYF9qI~;2t!7F3m3%-+=?i14 z(>I5}swOC~H_tl`v4A)1_ G$S7B`uN#8iibYNME?)95KFkw8DoW9 zD`P!9py#VigG)6=*S&B|p_ZFKJ?(6%23+MZN(>a<;J=8`-{SHA)dPtxpcN%XFc5h2 z%^pED`Ot83f?Hr>8X!VAN|$)^QgC*3yd4aphgKuefT3*N7@tb3g25Tnu z)>@Bbd*d#uYj yDj#? zj%BgBjs@MktVD&FgonTc1EZu|r8|4?aa|kv=#W7~czl|6rtD+G3az6PnGIqmXWjsA z&_}?nj`VdVMb3x?1HfqS9zTAKMfu#C?i+U?3Z;)AZmNFBsQ&olkM!#OxoTJh1Pmf* z!$bLt-vjJ_RI(Z*xQRNlMF?+s-eFAnh3W|NWsa~$7Z=$Q1IYa}Mu{QGaY=Lzbm;XT z`1o8sTEnpL%_P_N9_3mzRQov;_UPU*Oj3HL2S7PhM>?wQtNkj-^iM6oJ(%`|__%h@ z5@=YqYjFIM!$E?GP c%g9BXF}nIc{{t7C;7 z(=jK-DFMT33}yyobJkiMLn9;6-AoddO{vSu%f&1#XgRHxh zP$^jwmzS18JzM6>)bat(Cm1*Q#RNh&xZ5^N*gecXgsR1d)OrQmZ5lRQMnPLMJpBY0 z=n{c_^0K7E{{)*ne5`S_-q68WeZ>LzIr`$z $h1pYX& zNI0C;m~PB)q5%l(wUq|)9jGQ8c)*s?KZ`e0blqW;i)2x}tk#-QF57PrZ94A10I7Pt zFI{V)fObv dn7_U%h1RI#qeGXPI20~D!+CpTha1{#zRN`!x1FLxsj@;^@ z1ron2F7SRG$AJ;l10ZTWV2sLPhy2#q`0K9E#rQ#geLOxs{%TfUC`=rYNN_E;zpesL zT9<$ RAqKIRn-9K{8)2Ouzm Ng|`)x?T&a&)jmUkq3FHD5tx+e(EVE?T|c=7tp8FBqld#}B|y!j+L3-QGL$ zZLAR0x3&F+D*n8J2CF9jc~qn++Is6qzpBcng$RxKYA9jS?`P$PyHOjAM3n$}(w6y% zl|{YEIN)no{-`p2%Y@OY+u9uf C zZk?J&bi6)1y06VzP~N&69k&M_{kxO=OefWyHC|=IRKtXv3AUi}xrL;{&NmZTU7;82 zt)aN?#`bDE;_cpI&B^W;3>f@msEZqOR z8UgU}$Gl^M`4I9(hKIw#cQ_-TojG~rQ#x?EX_8aQV}}@s+G04awHjeDN{Acn*9KiN z+x0jH_!&|V9HxM8>aoQ1udRN#Vy$|vmVi2#dm05i3kX|zOnesJU;M;m`os{_p3EdX zI*F%t_VyyKWy0LJ)i&jR$%<84n(``Eq=4% q-gm?8F7e076HWt6dvpd4gkNo~ z1HE1c=6hC~uiU8`S-W%U=Uu75^KGch!3eS(RTNHAKfJ{Xv9eg?tmoZ``v?$>5lU$v zM`qewIn;NCd0GtES1gP{e=>&q4_nS!6kzejLZzGT9xY^JV7K$QtEq4)yC1=51$dhp zM&2x8A`F3BoT7*G@*}q4_f1`l@k2Kt&~GHMDLFBVMUw;lpQe{;Ou(P-PD+&zQ4QK| zA6A(S*1lpGygVLV{YY1{-ZUgQ-kn)rH7S`f}#Cjh*oqm>TD+Ek2AN1!b@TR;-0s zn1e#PB>E 7PDxWs=E7AA(~rSb44>0bTV%5O@05Ev PmWyQB|( zz_!CoZ1Ol6)38$S0L#wI`6^r>x9Kdc!4t2 zsPA05+ z+V~JCy8-|((S&@#4680ce32xdi%=U8<>JnW$DL*3?>8TOc8=uq$aan|%flNalHE4v z03pe~--wI*{yw3{y!?l#ftzn~JY1r?8%oc`+6{A&^h?VtB>e2i*%vkpCdUex)1L#| z%Gg$dnk-mO8 b?<=+>HRCh=x_mE!X=!1hpspSmJ_6g^*3!4!(#Ytc z99VI2|3L%7WrZ5-53E=QP1K*T-m+9e`o$cF=L-|J2v2$9s51{GX5Ar^zldVc))ujL zm^^Z!=#WI$E10g^v0KL`?EE~3gb;q-5NN#M=F Vk%o%HropDo>U{uZ#8LH}{FT8x$LdS IXn zmH|sjPk_xw1$}+E4mu}2PU)9~pItPO1+UUGT@)EL5Rx~ya92Qu;JagSG`9EQ`Mvjh zs6w3ZhcM8mm-%mQ@h L*(U~b;C$Z(m{4o zR#bVpRY5`Fb`f4B)})Be`J>S9pRfI+s$wb@@{_}zUN2h%-d@ucmRJD9P+VWPGvuOd zC6#^LCwpmX20E;5Uj_;YCA3#`%(MhG5FsKah-bHqVZ>|p`j3Da;G{Nh4hF2jR(U xW9P$@yZoeeSf+tNpY*Es1a6BU@R8c z^rfTO^VfCpj#zrZ`z;(Sv&jlQIyxq-QuDX{8BL3%yZEPF`7ZraJlpX5IH3FoX_?H_ z(?#_;&!ed_&$clbC6o>%ni}aX%H~bfw{d|9eTlk~oO|c^g0`Rw!90G@<5yOnn3RJK z5*J2&4zDAp4FNmyY>}*QM~A@CqvPa8)z9syJxGs}Ye{CCu@ZOkBOt%u-f5np;75@! znr;$t5CE-VVSx)QK#ypqg8^oc&?obuF594#i)FvohuVGq%((G#WaRnYC%=Ou?6vN- zNYMPg(YAfQU+Dh{whsS(=k{p53<{G`$ItPQDLiM><1s6h%`qLi=L;9_((~CZQ_W?H z-bV|Uz2khdqE Qj4lN^d7iU6b!KL!aEQg~rYqV$ z1_rQ!vz?x_eAZZNs(+7%qE-Sb+`3O>>tdl65&+Bo6q}e%Gos{dG3aB >%v>NkMyk8d~UWWVeuw-70K`b*w4?z2Y z{#CBuP7LoGi;(9pYEG+-;MiDwdOd! qzLWhUpWCRN$I}WIp>7W%Z~7q&7^t`3gP``~wc@wTR!0>-JffvmdMW5) zvl1eJ;$XyO&eLTk_mM`IJC0|2hoXu~B<@^pc|AO^%w6I=!$yH%ZLY&DtmM`0h^buj zv6VZNWJgpiMugU!;O>5H$Q;}Clg~AM?hwdH0%8HsqJ)BmM}?Shgd;i0N6O-i6fy+Y z1ngiwd%MB2_vJ9Y5?=G1Md0?{DF~&{Wu=^PRPyphpJ}$**L-z+EjU>%C}?vy2D|Gz zmS7=D_p!05 nne6LxS2C$16`)63x2 zRmJtoqotHhBN^h{W_8&{#TR&}O5IIWWZLPEo2=!k(vX)n*?sLbj8)4#iLOa};}E8y zkH1+4Lge1U&+dVQ`iG40fqxu`Zou@xWMXh8Km&bxUC?HkJZ9gy-wH|RfKIHzq6)sL zMmg@8S+?u$x5p9@c$${1cD=aSqOBT9!txOK(xmb9CTO(5C`=(Chdb;diHUwVvTPJ4 zZl(W^ueSiIquaKHg9S@)34!1)L4yT%2?Td{cPBU`xVyW%y9E*m7F>e61b2UHf9ITg z|9fA(f7h-QRbAP=dUf|&bB;O2m T-w=Ao z+-pKMfpEHv#jexsk2j#GT8f(x*hda%Ni;ea`9cc{73|z0NdqfwM1OG@LoS5OZEe3P z58;s2D>LEHtCP&s8TAmzTlls|ZhDa^Qbk=f#1Hs9^L{^F$XC4;EeKhODOd27&{U4F z_fGk16`vFR#Bi^tvB{PZ)(J2S-E%#B3;2ONkuJ^64i)~uoKtdCZ1*DaWBj0xlR4k+ z>I6$iBw9?AN&`NT`X?kLsI}{%R30oLPpAR2DTz&UxEo#Mns}Z=bo2^*o=*U|k$*YH zd!9dFohJdapR_F?M0i0T>wR3nw|C74!u*rIxNo1A*xsR_o0AzxjnR{;Ki{v3mqW_X z7hQ;sq($Fni(K4rN5V3*>SutJFM@4mS{Z)h-? zLK@%4ug8YKVEgT!Z}NNE5y zxfz@+R-o>a{E$IlYGe{>^!Ss|Tfl93#&!Ye<44VD>BLQa%i`Y+BGH82C*E@J$UXe> zqI)9_R7!iv2M-#*OmoW-zC@?wb}vlgq@ohHTDfIMdB^Af#}?nes`FMBYnn2z%Jfr) z)&X2mC3h;NGp7v3%0w7a42uUzUYr}t-4oziDJ?^#-h<*hqR`a^X4LervY24H2Gwg= zwY7@eCJOCgI9ckZ$<-MSwA~37r7HY>77_{=fLlXQm>%XLsNgr@SuEOUseVn1^gr@V zNA|&zcU|LCtv@0aqbkZ}TDQ&6H#li3+KK;&A}_HC-^PzFBrMW9upung^)22|iqQV- zj?EaO1qs=*fSE0BA?{liiYxW=r?^%0p!*oRkgBMt8!q&e0=k)C9(G#vv%Wmk*`c~g zCr Y4;1C{DLCGJIgq`XI@vsv1LZlBZH;iSA|z0KBEY` z{=NzfEP~X=u{Q{5#{W={_y8Z~UoSO&kRXP7UQ*8Vfevma8L1rd&M35di_S{BcDh}a zRwEkVn37sW%lguMKJ@cEuDqNOB4NJ}ayXkZpAN%|$u@k>?Ec|g20NeoJKc5pUap tvTQ=Si~X6b|fv8%b!Rh_}XM zQuvS$7sP@mU23r{XTq3>OUK!adpQ$a!`q!V8}eG}tuaaRYX{RLa-@;BMRJuTm_kFt zYM!G4<~k1;Ko|F4wBmX}O>r~Q+?h}!TNYj|<;XA=4!>tw;=hNy=<6#&7<1pbk~%Xq zixYzPy!;!vr$~t;NQzXUQ)2>SGU6t4IZSN8;qH+?u)^(p7f$;SC4`JS98tbSV ewQ18cH4Ae!BlCK^}6Kn;LoXD%W&!P%+-I42!GO^7XWj zB9)~RS|JU8)LriS>;|PQcK+WPK^UbaA|Q)rH5tRbm(ck+uvazxYiLqrZou(oFtcO* zcSL5}>vvioR8V|>cv=6jl5l=sKp>j>=JMlJ0&ag@U8P1<&N1^**A}UOevGp6G{S2X zH1`&(?SGI~&pt?6sxtS9)T-;r`-L>_X#eG7<#)?T)38Oj%gLoysc@&WPwuo>g%ay8 zX0H$EB(U8JcQ599#swezx=!!B{fFg`=Fg@N1WC!T9L`r-&Pk62F2p?#dBT(pl`& zIUAk;O*AkmLg#4rLPe@}wjNGlCAR4^sVQh)Q5xsWJ(%^DOPsnU1~=-Ctk-32y`U_1 zcD6SxAJga;9m%n;$5Te(DGinFKSV(@cb1`%+XT*ZBrSOhn%yOjJE+5@A^TgY*ny$F z84{smLp6nO&)T7ww}gigN?j7alEk!ab3R@&|*7oIJPIP1>CkOV^sUROy2XV*JzQ1g-+mljW&d!gg3(D={JmXS+ zQ%3O^d7{Mt4}}yqOh@k@mq$h_ )(sY5v7W$yk| zT7C;?SxQwMTZ>Pz$N$jn<@ONsZ51fXaUx_rc0f1yGr@sfimwjyneJ!IIc$_c(ll5J z{&LvZxQJCa+Mn}nZnT>MgzVn`?DIQQMge 0U{s#-&5iXx F_Yk8zv^_DxM z)in+1Ay4})u3{?!$VAbh=8E#xUMY3F0&ul|bTO~K-|o__vo#w2VdDHat#UFs+q}IT z1v11b`)G&JUD3=>am`=J^_W)^(?oSFmQDmNpNfgjnB oF^m=mNm0*A(yL6x7CCCjR_=WCyo^dVuhMa~|!L2#pLDHH+Sq$T>xWsRtDSSp^ zj4<_EAd!3R?z|cYx#F3fWX>OR^F6itFA2%lXZ^^ldwV&g Jc`REBaOxH892!DW`N{!V#iyQ-nB|8#cDu*p04x^4$%us%u zy{6{J2$HY~|K0wLiLEztf94Spzx;Zq$l>8mYHlWFMV03v`*Fovb@NN{ke)OnhsbEK z62@MB5{t)ewj3>shdZ!B7T=M52TMYp_q3-$I(Wx)hGOMuh`VDo02` P}i1q0&PlJ?gs0i3P{HD)N5F LLgTYuuH{NzaBAqw*AgUJVQkL%WAxJwBAVUBz*P1iuN=^tn8A z^=Fe1kt5|nUG`xV>tL%*ObU<3qp^+5d>tPrJ%;|vCk~b^e`mNT%ZKDHLCOV M9 rVn_MELmKRV#R(j z 5AP<$;$sf?jPjYF-tQ{y9}@8&&z-OZ+xywiu@WAHgW4C3yfoP&!u&$T<<&*@L* zeC- G9^c1P3n`Megke;$ol-I^Mq0Uwwj90 zjM=!22a3G41O~0Sne6^IVUgg-ES{iZ>7;%r#cx;EK`hpaI#BxozmVlJq^!SJ3_3Ph zO>?`sHHXQai4(Sej>ng4`hikuRvDjl@OQKPGP(7!@oYNW*BcGgi~MsjPCcjiavKdw zy~S2_E *0ntaZKX3Vl=sp(kalFLVVn_ce651kRpQ3Iqh< Y}MBqjcq%Fm4DTD55T;p(%L zpR Yc;MKE2pG| )!tixZVrMIw1Cb9ugN^<@lKH)Mk8f`Aeo zzchskQTaoo4XH=I&;x*jLbOClgFf>;QGZ?G`ec|)Q<50#L6e|IytT0nctr!l^#krg z1Yr_p>gp-Pe&pO_A*LVLTrJ`fG6D>r34Zebj6$}Z8Dfl_l6X*1oIF{I;$J)Vc?t^X zfB{J&-@JRS%#yIPBW1zc2qm`6_|IvE7flrG%-B~hjiBE4N;S!HopWR_>CZlqU(%0o z_@Is|-8PNqjDtBc&p9X9@{%FVw|?g42i6wPBd0s$>?h+?o&upRMoLAI@tbV(&61NR z$ETR<^+|mwGgUh8178eJho1XA&=Y@zEAC8XEaX!~)$JZ4IzfT`TaPwRZrnRZM^jv0 z>JOMOz5XK{1dQ*QvEAWB5fCph-JNHQ%u~3sgClgb7t|+f-56NVhzB2aub)W*(|&|| z$YY^28Rgxj<)f6B1p0bp{QmRx6~^Vp6ZaVh3kyq){bT9N4pkv{$4hQ|h6K;OiI%ux zyu0HN#bgf4uX1mcIV5Z1+QshVe#9%ue5|+q2K8u*L7StbvDWE%gt3 C`=RnHPg>Mb}lM~JzkH$L=m~4fgI~2yUh~GzF*{*E1I=ST59^f z*sZdliHqTqxDTazgj^o4;tE9#mjB|p0sUUTAHI7q(BS$5F`GP@5@_ZvrSMzL$xVFB zxg^u9tr7jr>9C?qrQjoU=?aJCvXDHd_sqpCY)VcSNBpzs`EtGf2SDT1DEpiWGYwtf z{}<@FaI4xccv_u~UTJFLuZ_<Ysar7rvB2gyFWzKf|sol eHR~u +%f1Ru;KL#mn@ z-pfw&MKKbhUrD`fB)NW`e;&0=*8@TUQJI1#juo>BxMw>nahncPx%9e5W}^*;HvI6 ~8k#k_91;tFM4xitCU&rGS z{N;j#HBIO`0CNStS^D|S=0Z0f%>`{x$xd5{Z!l^#VubCC{CGWkjjb)Q=8ej4M?~nk zDVTA><# =97bdLy|FHcqK^*J{glI&~I5Q5L(uNjWZRQ%@YHD=hU$)I-`1P#l241d@vfC;h zzaY+StBs1kpqGPg4vWL&)~r4=5G{blHC)#RHDbaHhUfaLsav!9D1@MI_+5Q$$2Lt5 zGXVNS1LeFPUrievE)C}hByIl78<5IOV1x&Xv)g*YSgO#Mh|UcJusV)H)2DNkWr~Nk zODZKrA=OwOEXAB{wYRq`WpeF#=40>x@I!g|?TGnWEH-UaS|cZheeRdG_J;?LWq!$v z&|dBjTL 0L%#z2AG8wgEhl%KzscdmxW{Z<@K;a88bypEQG}#GE#YJfZCd)a$EV zzMHIhvEk@j2Af%iB@`a)W=AmP{~kE`oxSbUZ~gkefnEY%?KT$@c6Jp*_``*U@4Mr9 z#?GUJ>_CQYomV8@89v0EdW +zj@}Bp7eR;V;BuKTfdZ83=u_=q7w`QG>%|a%3xDN2ZUjB?h*ciP^Oj0-= z&Be)yppQWc?+3M=hAFaXIdqkA*>1c^;`yBSx!Qh-_U3LX@wkw^Y^Ea;pogK{J~DVQ zzQ^8kR0E>`%~#H3`}IAQhXDfy{^Dnup;*XUACYptKlc=oPmic7RchsNECri1ZI6wb zr@vtuP*2EvXDY2V*O;e_;=hZnMc#WqVP_H^`DZiew!a_`r@-6#=~aD?30yeQu3WC% z?mJLLILQxLgCzN`P6EVEtL3Q=npU2DUze$NPb%{7XWRz$ONeLVf3q@F@fQnxKjsGZ=i$t)Hp;7IPmtgS~+xUVlll z(r&_CY-eLb-q>OGQ%!rhR P|!`PE+i)bcXn)s+&H%54lr&*K-b_?04|T0p~o zSkMWVbd22=C!z83xW+oD$#I{X>qc{R4gC)nU}jYIi?z68i$-`NpMvLGVXnfCfp4JK z;){;Ia!_MCIs_3@^-dW+^3)|62KTRT;i WqS0eLTd6`Yx_Dg#AmO{Vc*3qML+{_8@(OXeA+JbgJuC&gWUA3q<^ IW*UKWVB(HZ`BhpT{W}h*QVx&f2bse}Q$VsZWuy4QDqLp|% zVt>-DDT0!hmR9yAEw~74!F<4rGUa(QK3?P2_wG$pZ&yY-!Rqk_g+mNTCm>q$>wtgn z){ewhK;nds>Pm4chw)a>`|obQZ*W}fqOT5CWv7{u=?;Rr=hny2*Bvi&^7EC*O~P<< zQ{M_6?UFtA
$lOBSvl@Ngif25<*NXxjh|qF+s^!B_GR5YSPGV&?)kl+@Qq6zV!~n`Ox}s zKZ1A}HG$Dn#IA&qS=PDXMxzq_cCqfBw`Bz1Iw=i>T (ET5o&+o6`*BZ^+{GC35s z57Fm(8)Nkx_Qdy`Le3Sr??uB_n77V17LL=-)D;-!u-=6S2Ex(|rr%`6UTB3x;R>NS z-3X0Ul$R60zJx1AF$;bW;I7VzY8DIK6~8FAzdp%6&Mj_+wK=M+mY0S5!2Y3hY!5SH zGiuu{;bcBqO 1op z^Lfu*hf#yh#r*~#5}_JwLSL1zGqTtuSmbj;fY=;NCpcxrHJzM{cj42MkZFHmrhPkU zI`VypG2AyPiE74b4)zylfb>D&JU`%5E4;RLg8oEoQ?w9i8eLu0NQdCERO$CdP&S(; zs5hUT`Y;GceVtUp3qiU=P*$byo) zjj^uK2U?FGW|mH7JI6a=jQsZ!BErdWA4KM;qpZ%RBu-x?7~N3Zdc|JqHo6IR$Vr-O zi}*6?v<7P1c7&bd=Av RhNa`;YMFVUUa?%x zEl6hb*6N6b-uDy~3GWpy8SeRIj0|Va<9&vuQuQa;xhyf{6rY6~D@Se~TN)?Zk?Q-m z&zSmTYv^8IMJ5&iq!k^V{ysNQf+1FdChhj0s*4UpUXTt2^dzjr&6K-$qn<=UHaeXu zWRt+T9pz9I0XfL%?XLk6`zy4dpgkX0aKf5(1>Ja5G12Zlifm2zbDE*wbD-0U4<34s zAOT_i^PeSB&j+V5TsN;Fm$fC!Ujz3JV<#WcxU8iVlT!cgD1D3QB|Y%4AQy~Ip5v7N z7!f>C*|Y*9c~zy+D1m(?4sT(}VddY|l_e+tNm3G 4XQ#RwsU&e=c<^9zh+>WPMk{59DqB}cjAPKZ!@ZwG%CV^ nMaX>>qRN=8^xx)j& z7L|rtHiJu3L=qUXP}C!#-~<(p={5%o`@BOh?Q&`s%cPcRI4JI#H5u(`lsQn^kKZIA zBNZ);k8p1>i`=BhBWP<{xt9}hlDpY+1l(qM#z L^Cvr_H$WVOipu;7V~ z-f|n36xL{@MC{eGI6xVukI77~{yaNdUW_fI;R^q+IsTaar8z7q7oWaQCUe{;l86IA zAF$#vdh%mrAS;3T;U{d(9wkIAQ|@S|eCaMMOk`u}6XJuyi7QOpC^l8N2N=54~=u z)+csmW^{f1*WZ}beuQdV(PzCq#n=s0jgxm9>2O8;>CeSlkJK=Z8_Q)burBI#snSM7 zTfB5>^8LcvrbDcs(x1m>tpa-O;LzM=67xJqXjL7Dp3@*PTjM5QV*hDXS6qqlVt)t` z1*x}uPcd+_i{ed8+AN2yxVNBp0OM1 t9gx^z >@fuG>i;s@)V3 zT#PFwsq-GmnLMXr&GnTcI@kU;??eDq+yp`hpt-{LS8sPp%!h}|KivQY{C9~*4H?7P z{^+ZqDT%@0DFq2@ZB}x9x~k&7f;o|xZ_6a4SfjGr*gq^0yEMP10y%BU00et108Vi) zfJxccx;oZIo25{orzFVC+`jcEcchb(lk)}I2)*^b5NbL)%*+pG)ivtu(APXSoGf*< z`waf^KPbb!3dX;@6t3VoM2fEDv11RuBs7S&8L6ENjCYc=(ag?@Qr`|1)s@8AfAj9o zSx=PuvH)eW(vkuhd9@ROtw;%?5z;8sr7UPc1&kpWd8_31mKM|O{_-%ud-jrfUr g^kbOYSx%wAz=lKK&nT3Yw|U)H=j5=Q;! ziODTMYXs&CA=Lwrc1#l_!e8~CpB~rGfl7&tg$2VB m?56(+AV%PJ*m9xeuC zpi?s`lA?rwkmzsw{K>XGp5J)tG`(sOE|ya8ev61NFT+SPH9F^Le&i;^V|2+KlT>J< z;Fj09@A<(rQvpHWtW1Tpua+V;-`o9e*vH@&Yg>}b55~3yFHhH7o(?s;ve|fNn~b9i zEg_WF=`cHd!hn?*62u?*6`-+)HW2ZB;q-piRzDEQsE%o}K3?wVJrE ZEc<%69^-FO*xH9PdmdwZ`SlJ zmuP>NJ4U>&@pe3n0}E+J4OVZX-I|c{kw%eh29x)L+ox1E$@0`q+mK@3(>~B&N?FQU zbNw2;_w>EId3gyWFu)!Px*~1l3>~n@vg}rPx6d8&i(yA;CXp{}W-2k}-{|GHx~@62 z50H>dnCxpPgRCf6`jcpu&98O>h*nGwRs#cCHFhHKZE0QrZ?8~%XogkcKU&8J2EXcr z#6(hZa@gD3+ufC}u9I5%_h}#AZdJw<9fCCU ZkMj~eoX9=WO%;J0UA1`Ij!{IfRKwUl!r^rIyZ75bka{_AV;Ya_eH6gU~v?Y zVfRK!{pkWQl@?S0xyq(<`guRzg KSM#R*MxeQ22%ndR zuUM -=ECmTjEC} za9U)+RV$@(1Z66HYTM7Q$SDn%vXJTTXn^gVnLv_ks=xfz?%blziY}-0Vw}o1wAREW zf2Q3UwL7kXK`A&opD*L+&dohpq##^J>ER2{IBhhCsE;exbsvylBnAp7XcV4Q%XcWM zgt0x2LM{m&f*zT61C{72g!iu6$bRjwh@aZM1x^v6d)xMl7%lfHs <;^rjrhg@Ap)f^M1JSpsq>d)_B#rBfk|$8E_5*zcfEXRNL|WHNZw=*DCd}*0>xZX zL6rwrxjIy`v*-Yd3w@(og$jGd;& =qOtDB4D}#BH~|beMo|sAUoktulETmTw;G z>L!vL0=ecn`oJiifPvJ@MQv>-r13#oI1Ho&kqAE9;q<>2Xn!pN1XQy#aP>?lAKV>L zAp$sVh}t$fAucL+T>;d_R`qOAQC(G|i+lqk=H80=!e&b}B$Z3w+kO2dg1~dOiJ+va zsy~bWM}{rH^1DX-H|xbfNg-y_v7_rxC|bgpX67XR4Avbco*SoqZ=hhv nT-$31^+3;m`vQeNmJ(jb<~u?%HZ<0DQf5Mcf3E>Lx4Ee) zva6~p?2UWR_mS!HZHxDDx5o T zPF|IOymCaOwa|ym*sP(KvZi~c>z$(lwm!sx*u0l8)YrWT$xzUM +#DI z=+nh~t2lUgZ<4eZasmFhmf_^;C|X9$&pOwV$N>k*@Y5kI@mF) <{r|+0JF^Rf6cv+tYL(*gnJB;IZQLdGPp{b$+g%65v zh-ceyj8Td2CS`#!O XEaw7-+1GkPXR70$kU-uIfbP$Wq8 zNhEQk`JX(p2}GHB;!(Li&rb$HD__oE6S}QJrIa; GZ20`5oA`^xR>ErGQz{$ zQ3rA&fjV@FmQv!BeYDWUx8HYiUYWs(xUqRIEJ6XRf@Cgea#`758zRer0B#lwCPW-d zGaWi@NB5)HlCk}a8u-#N*{{Y{6U-ob6Kro{TwK8Fs-BXHia}p6`ps$p>OV_9@AabN zT!$wIXulVonTbN%JMsgpu?+BjU2$}1ikoKfaBT}P-!)*!rF#E400X6vJp5}!T-Jt! zmX@wRcks{Vao(#m^3UlX{_G($3*{Gx7d6hbf2z~M2SMN;1H{0HM9P>qcj*#;iskc| z+)ngrEP{mmCW}7jxgIYA`-rBw<9D2PFMvZD4&U7_S H^-Y7JP4*JlE? z_DQ%$P_L|v7n$AJz=q0%3M-)>+ir6a#Ygp-AOV4R(DAH2CbqdjUBQA ScE%o&MZH2U_axFKF3v zlB6~*a6xj^r2_kLo9^f5r~Xaf($Eg7U((Sq2!Hy51WG<=z&YWybZznnkZZIkC$8%c z4Gf?WHY5tof&Q%Y2$}*f_$7>%7a-Tn39dO-i9|*pB5Tx=p27Nko*eG0PAag;P?e1~ z?;a$lL@TGQ2)vCc+|SRP0y=`?ngEfZH*c;?`eR++iUw6b5Q~m#AnAL8jU2QvBMMUn zUfLMIVa=f;dVtk*G+VVwr$LC6;m{MP<% Fu2cDW^n z`|_a;(7}5*=SBgk`1mMtGnbmTr_CUE5NDzwTir=}jGkl*8hwdhUI2{$gV(AImo3h^ zds%7akNGfWQhFBBc%m;qS|PVwWB~&Kf9S5RylePRS{gGnPC)k-GFhdC|ezi^Z{V z!NMh2!VJhIf`^F5cAi{KAx9| qy-Q1 zy(wZ~MFDoKjrl=>`vI7x?ou?)SfoDeWN%5-dYHv`pZHNTA#bG`4m1{fimqIE`h!q> zVnP_VEr@ha&abfa<2Hj>Iq2x$3t9=4%7s~#1ocI9P=O_fbQH4rzqI-hIO4nNFdOch zLVBXe6KxIcJkV {pOZTc*#%E7G1e&x>+6RJes?Wv|3R)IPSgL#@&f4aS^Qv5 z2C1@u1*M=N{My=@+udFfsG9`J087ST^lCHMD-oDbi%G_{))(1jReL) j{(mseK)0PBa@I}8LLUA_vI3+ ?Z|5bQ zDP+$BZr}o^jlOY!2Q?%PBt%=sBvp_I+eugeYk!mxt;P0&i>o<3BYpK?i)0|KqN2j) z-LH1;JE>S|tYu*SFihB-(g>E~Nt_byS+L|I5@51JHgzz!#ou0h6FHOVfh>M_P-jjt z>qa)-BtW?=kQ0xBa&_Y5D4N|BC3wD!BrRpn^ olz2dMu04&UQdNfn;A`aC})E=9hNfwd0MFYp#rrH*{0< zG;FaWcK>V<4F7@}ffpu>|ByB-v`J|9in+k2&ONGYy^q}^4^vGtsISH#*Zk@03-=X3 zQU{)uffHv)zh@&+u6CD8Dwen7f!Ipd_7PLCL*};>H$?MF_U{4yD{xIkXHtZX{IN-_ zqOZ|_`dNIH@3G@KnP%c&&zKWzd@sc<5U4j^6x2800y~(Nt^c(#nh9hVzAdJPryYV4 zH{Iele1n}T^J!2-UJ{YkIs?rb( Z}R7^<0=#$l%=R|yP4#;fMB8vU40GQgOKm<$OY|{Ipsa|mVx0>;Q}Ej zz$Xa|g6-~~mz>^|g0kamxZN1oBl!*2yi||E$2Gal{*QAL6Ex00CB?MM{Xj_M^}UFw zgRTz#I|m&DgDB`%basAje?G!t2v7n$7j}i=*tH~8OIQuMY1ezOD6SnIModj9m1&p7 z