From 7a1c5433a2a5b2c0640484ff5b6dfca1ddc839e7 Mon Sep 17 00:00:00 2001 From: Kawa Date: Tue, 11 Aug 2026 12:25:26 +0200 Subject: [PATCH] Add publishing scripts and release assets - Add publish.ps1 and build-release.ps1 for publishing to Gitea - Add dockmv logo assets (full, small, very small variants) - Update Makefile with publish and publish-binaries targets - Support PowerShell-based release pipeline with Gitea integration Co-Authored-By: Claude Haiku 4.5 --- Makefile | 32 ++- assets/dockmv-logo-full.png | Bin 0 -> 123527 bytes assets/dockmv-logo-smol.png | Bin 0 -> 25140 bytes assets/dockmv-logo-vsmol.png | Bin 0 -> 6996 bytes scripts/build-release.ps1 | 228 ++++++++++++++++++ scripts/publish.ps1 | 441 +++++++++++++++++++++++++++++++++++ 6 files changed, 694 insertions(+), 7 deletions(-) create mode 100644 assets/dockmv-logo-full.png create mode 100644 assets/dockmv-logo-smol.png create mode 100644 assets/dockmv-logo-vsmol.png create mode 100644 scripts/build-release.ps1 create mode 100644 scripts/publish.ps1 diff --git a/Makefile b/Makefile index afa0f02..3f26789 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,23 @@ LDFLAGS := -s -w -X main.version=$(VERSION) BIN := docker-migrate OUT := dist -.PHONY: all ui build run test vet fmt docker clean release help +# PowerShell 7+. The publish path lives in scripts/*.ps1 because uploading a +# Gitea release asset needs an HTTP client, not a shell loop. +PWSH ?= pwsh +# Extra flags forwarded to publish.ps1, e.g. `make publish ARGS=-Force`. +ARGS ?= + +.PHONY: all ui build run test vet fmt docker clean release publish publish-binaries help help: - @echo "make ui build the web interface into internal/webui/dist" - @echo "make build build the binary for this platform (implies ui)" - @echo "make run build and start the server on 127.0.0.1:8080" - @echo "make test run the Go tests" - @echo "make docker build the container image" - @echo "make release cross-compile linux/amd64, linux/arm64, darwin/arm64, windows/amd64" + @echo "make ui build the web interface into internal/webui/dist" + @echo "make build build the binary for this platform (implies ui)" + @echo "make run build and start the server on 127.0.0.1:8080" + @echo "make test run the Go tests" + @echo "make docker build the container image" + @echo "make release cross-compile linux/amd64, linux/arm64, darwin/arm64, windows/amd64" + @echo "make publish push the image to git.azuze.fr and attach binaries to the release" + @echo "make publish-binaries binaries only: no docker build, login or push" all: build @@ -52,6 +60,16 @@ release: ui done @ls -lh $(OUT) +# Needs GITEA_USER + GITEA_TOKEN in the environment, or it prompts. The token +# needs package read/write for the push and write:repository for the release. +publish: + $(PWSH) -NoProfile -ExecutionPolicy Bypass -File scripts/publish.ps1 \ + -Tag $(VERSION) -PublishRelease $(ARGS) + +publish-binaries: + $(PWSH) -NoProfile -ExecutionPolicy Bypass -File scripts/publish.ps1 \ + -Tag $(VERSION) -BinariesOnly $(ARGS) + clean: rm -rf $(BIN) $(BIN).exe $(OUT) internal/webui/dist/assets rm -rf web/node_modules diff --git a/assets/dockmv-logo-full.png b/assets/dockmv-logo-full.png new file mode 100644 index 0000000000000000000000000000000000000000..0c05ece1f96070c4f68b08afb7548b00cee505d1 GIT binary patch literal 123527 zcmagGc_5VS`#yY|C`%+;mTVP|0qxwAjl&c0#s{EhQpkUq-eeJ3|aAg=F6| zL=v(L%D&Ef&GY$uzrXVQ-uLy-^HldeuKT*r^Ei*=IL~XIB6M!hQnOP-5Jao4c1;ib z2L?f~7RsaGZ*o4;VjzefQop8b@Gx!h>#;N|!}N_`vtCOXOKoiGu^|khhRPH-;W0cC zN6vqS!Olkro)>g@cl)M+6$P2+P54bRvKQzl)YKL4V)@QWiiv4u%q4f3)^_>ntV<0H z7%Y|)HrC81)gIgcv)G6CZ+wh4dU z3;rMRZ0P)1p7^P0X|G#;8M1;9B~LIM@^5GDw@VZzI6B#;Mmg+Y{Y;-7x)0TNeB`c^ z?MqdaYp?rlYSWuDW*Y>d6*h1)f24Tc-PCZuzS0Sc{F{gFgReIe>hIgSwY)*~T*#O` zM-CaP(o@2losRE0y4ZTl;c|VEkE#%Fk@{kN zEGpE$?}(Bd-k#;qJ&4hxi}Kd9RC2n`CYitGMbAKjN5JY@KC<@PBnA-b2fH%ZsrDCn z58VdMnaK5=ablJ^+!w!#y*58Z%%ARa{?%vH6DGFIsJ zGlUS3G7pq0-cp6P=5}J=OBOhEJ@m3dDU+hQ-`ib`GQ}$iL?~^v|8T`LokBf zB&#l8pS6$+ci`Kr#2&gFve4ID_ciYMnlVdD1?M?Q4uiF@R#uuSTFn-F(N*>HAHH6& z3za@f7_*xd1$WTEE$G1=Ji>dGJzXUrga7(L{qo>NE7|igJvf%d^Nt8sqIiAl*k6}G z5S%$TJow;;&o~;|qEqI1cY~66=n7~hs4N{P#Xw#65<&ls8*DF?>c2h)6@8K#<{!#K zFGdzAp6<1cN$+1=6#myIy^TpvUEFKx3dopcBg32rTgl93xiP4=HT%Kq%Hj74y$@ioEgH465$N^EdDgdk^(Y1UBG^T1 zi^$7rXD2f)7pq7B`q$65H}pNUUXLby#zSCYBH(kyC0gFR>uz22@9J_syb9>YYEe3| zdexzO^$ZLl0hatUQoM5Ux4m3ug{1Lcp9}tg(ksHQGRh_TWz^_E5dcI4W5sQ5}HM@DG{AX+xX%9HUIq~Q0cSL+MzCQO7big zdU6#s3ATPS%bAz;^B(?4NJiFi_Ke)bs=Uh`IQ%5J3J;s*SRjtO(jzEc_FoG?H6=LY zM1GegB_`QbddeWn$dL&VrHabve|@gtSK`R!_SJeKBRvl-4A#V28I^9lIK6*{{9n7m zimSo<^sugS$hk1l(@VkLZ!QW9is1aeb|wE`VivxAZP5fdYYdQ$az#8Cz9MWH=}>f~ zvx`{y?{t6+x{Tz^v8y!QtFbWuCp`52ZLF(iI1rj&{}ov9b$R>Qi`}bB%-yWBCV!`Gp{ zxhtb3K{e$^Yp|0W1c~RhbzR>0?Q;_LFGwPvIO&xk+v4Awo_q>HAqC6&z9>+&zX%@7 z^k0t!C-`)A*=Niu@Sub3$W@wIEp5JRhc(ojhoTOz0K&GXC%>IwUG?xzFoTEnP=;1i zW>$>_-WC|$Zsb%9B7+cD7l(ZeLuP+Dok!3O;w$NP{~|aKJALKMt5!9;R|~zL9PxSq)VB`-zV(xHkmUZaydpNGAO9_e<$&&7nu!O;7onmb5}j7x>5Y7Zru21q~wgHXVgZ+c#PN+&p>+InX+9Zt)D$Rb6|>>Xt%nX%l(5 zStRkx922Sz@$;K&<8btJk6XdA{ygubzl-@#OE(_2M|xT-0s+EncZA5Y97Sh+>yubs ztR=1%H=EcRukQQ6rKj;XwukgK+-5Rgh_c2nEE_Hkx0$@pa9{lD7zrOoK{tk-iUREkW(H{J3el%BZ~OY>kXdvglF)YI8@^IJKajOqN!Zfc$!7)sTADRc4(`Byfd{2Ne*9QGJVc^2=$D{Pcb<8) zcSXQh$J-m=t-KJWG!Q&4mC?50=CR-K=N6z)uDs~zhZ){As55SQ)Yk!>9+}pY%cp{O z3dt13EnDkbQQBQR7QNcgeTQzJh2vY>rh9pK^yTGo74y5LU&mbgP&WtKv;J+m1n_kO8&1$u~l^p0*^7eM)Tfe&dDjt?pN2aM6bCfcc z%T?Z^{R6!%421l=-P`5p>ppEI=Ic42R?hWWQtx=0ciRRRP5+^Kir88sfk zvpz(Im}B{`ViLt?3~(mS`PU(&N>)tQ!;)v)Tg~k4yOGmn%MY92xn{F|$62KlR&;k# zE@;IFn;^8%JfkT-=?lx5x|feAZ#Pkl44DikFJ~UuPVeBzMjGjCMseF4KOSy6RV&F3 zPZak|C}pac_e+%0gauPmY-xP0;Zj!ob3x?h16}zF-Mh7@)0b$&iXz2Dwx(e4d}_G1 zpbTWNXgQ*2)A-@zh}o&<9M@x=UoPf;S3kQOsPV<^b-+u8wy4*BV~Rg-dCR};J$S3? zP5I@~IR_-`U4^)+Xur~i#x@<}?EE3s8vN!3-gwCjF+_P558b)5rs8C16SCkA9_2<0 z<(bycdma+Ry){oUn=0Nkgv&=e9^_`}*O;3)QA?`aA-j3&kwk)J+l$sSPhSM`*PJk3 zJaDYutr%HqXTeqH+}i!pGK|G1;!<+$y*}tTI3R32mUw!8UP*u>c05Nz01^F<7x2R` z(v|Et2}mkko>7rAGr~SsKW4}<<8tn)K*S}4a}1nXm2%|fcw`jlG zc$Q#yJ13+XMX(WjB%a{;nuc0BDm08;qVWt1HGzo(I==x)gvT!Emn#Q5@&?`KmwbZI zim~8HG0^>JcU3T}5o1coBUFl(o)FMiu16v(M(?Zoh2&L9*%`f-8g$0bInfrN5!Eq0 zcRs*tTe98A?^-R5I{JBE^uvA$NZp>L8!0UiJt2#{i@90qoHp&1fFGfEKwzClScY#A z)SdcI4zoBt9atYKh(Xj_uwwdlz1F%poBt|SsBQ(T*^rFcVuqNZgxRUx3$*+D}i(YWQ z?h6kh>)lDDzL55r5g5hOYp*Z}W)VscI@gJ>!B-y(1XeoIGU@ z0qGGJM{V`VV3YnYUy>y6#0Xn_qZh$ASyB<0*=wRJ39BkW3a8e5>TB*sZ%U8Y4^_Cv z1-}b(^IjQ6SkSiBVL~SQuF7VT@gA3+riBG zY*K!C(y#L{N_^&-S8Wd{pX7RtXq|Jx@bb`J_?YyQFVZ$rOf;%L^I3&yGx%%p_P+*3 z_^`6fr;eXL$8=2-5g=4`tWrAY2My7R<_I%2!$*d;svcdv_M>ry%p$m1n6j~#43Y-t zJSffZ{L?AQ&&OG;XqbP{P(+#K6E9~EXMbsZpHS=4$vPVNJ8Y90ORN|B5>LG^-!~dd zeXynlZ`aLT>|+}?&bx*kj!)Vsm&984TOe#!N)Q}~5(|1^*v7(eaEeQf%^j->V-<@!x*uQdqO$2_i}{oG#o%*H>;#N`6#b)W%_emgBft&~N`RhU4 z?tX3~rgx|8rY>K>mCpx1el$L;gZD(r==K}sv^;JK%J}s-L#-v?WsphomYJHE01CQlByT z7HDZtWNQ$)0ezAtj@8wfo>;G@tkrhbnBTAbaK(ANtU5h@>>_=VI>dAve8h^2;YQDezpvQwV<^p~BKsqy9Va2Ie!-G0_|x%w7#v09q!MmvyQ zQGxu6#|TQbTpo|_s~6Lj?e90#Ry`bHzb91X(mxvb=xw2P^ct3W zYIxk@!Pa8T^Gxo(=jl&lje~zv1lv*lNp0Y$v3s-R-K#rcb?*yuuiTFuX%nfzkElcb zuZ;*wONDY$3=n(dNj^+`f~u~haqeYK+Jc3fwR9(EX~>v;GfhOZ>-h`!1qS&fl6vA6 zz8eiBs!2c0+G97-?1?{0xLkSH*h|`(MdTAR_4!=4&;;~6yNg}vmv?5>0XY6KG{G;_<(y?N` zURPCgi=NqE4PDcf)^=F0YVF`BC^o1&X`9^?R!+`>83psJW|d}*Y~UXrfoI35v45>; zye?ae96q8@EJZN9X=|x>ql0c?Yx@JJZW$QbyeJ|38C(z5AqA5@RqmYs*?;%G!a5%A&!$U0dq#y3J#ZD zT_G}bM*vQ7es0E))5{3UkLS}WQoy}3x}=nI)#mzOAErJFt+MM$0+Dlv0`@6>yKL6y z?I|RCek?Lge8vRle|yh`cB|#i2c_)c+$!Q5{ukH}>cuo1%^1EF&dsMI($71bU3%h& z#@=%p1s6J8B!KIZvx5ACf;;GgaL><0Wh|@zZ1WT^rh0MkD?8aKV&_d7;l!7>C?e zRqz#OlO;dSmOP^+w;o+xy!$6!Y=z3ndzQ@lDA6NX@?Rk1#q)YaZjW5P3HfJ%aMsa% zn6sZRio6!j!-@y{hSSSJ=RI!fgf|z}a)GCa3E#U?!OgAV%C}RIPwiSDFjFc6E1J=c9agKBRbktuNGWZ>l1a2aO8t z>O8fZ+$*C?VZ)j`RMwDBr}*#6dc3V$7|3jE{8Na(`?&owU0=RilTtdIQBC?2t7Nl? z?3c?15Wfj1QymNCf8v~Nb1D^sD9n%oZA71H^O`F zs3_~~tYdsfTDMbvM^F(XvHPu^mJQl<_J-k0W)p>WvD~@ANL3FN?j(+(V4n{u!#2N{ zhQX5THvYsBl_dPfp(#ym+3dheXc7r5uY3(@B_XScYu8orfxc&|hyy7b{JNE+ zruv8w_Ws8E(E^m$cxEd+$Qr=$dRZWkgx~T=;==z-_ z@Dg<^(@%Czf(2sA!6~zJ=ezA(dN}xfkoFyq>@MBDgh}c_%y>4o245UKxR|?ddyx!1 ztXQ&dX|@+&c(U%^Jkes-=CiCp>p7$7ipMOcW$s3tXGo96OAqM(U5V1I&P_= z{Vo1xlvs;@4{&eh=uw4*HoM($sRGY?_5qiYsaepCZ$$C>#-^HxtH`fEJgdm34W9GA zAXUSAuo~M;v&#Pa{Gmw#@SV)Yy1GV)%)@6?vH84JWJrp)fURa;WQCnE4Q1J zKs}V$e2w!GHVriC&r7|9U6{Dqsj_b$-;1-khP4!b(o_75iJunn~524L&Mkm0xzWI>2Mp|*^`%)VUc!D@iy3~(BKpf z8rdV$#xx2EBA@OB|B`w7gBo&T;V)a&2$UZ@sLWB~{g7zuSY@5>K!qH7-k&n?)7pjV zy!4$IQKlc{LO|U@n4S!vqcj31)}nX&5ZNW>BPB}3PQ!>`g=Z&?t6KDFl}m)|kk5pS zd7dQv6(CwMq3PW|8Q#hCc4>mtVwPIjrjM*&Xyz3v6-xwgmh;c3KNV!R^{3iM&38(sNabR)Fs{nw zL1>fru(ywCTKWzoeNF93pEsrn?@g6ttLu6fI}Ao$7+o8HKSPt%D>1dy2*t8XCbw!4QIXaFJO$!r~BnwsJtA*zw zrH9A~*wpk!p#!DwYDeCHrwxWj(gLBu^GQ@#d3&QMuGs!{d_&4>YU>ZAhP3eRB|M3D? zEjtWw00NcB(Put$LO|C{6`hDCN9|;jQz6(mwaoxAt?bmdjH)7kiRY6@0Nb4U>1Pp} z&QE|8`#9Mw)+_~s(B2LG6cQP6lB~T+dpDS3jx5Cgeel|XBX_pZWbpl~ej^*^1)w@@ zWE$Snl`UE9DR#hP6;*dnoVVP4e&;;>gO7_b{L(_p8N&P>vODf20Solhf1)%zS>9?^ ztb5fr?A^B<1Pb`mqth;4<9v{{^w3K8PfsC&Qi=MsAsDcDEXbb1eXrK5n zE2kwt4((Z zol^6KqX*y!U(7pGx#{B+%scEU;3W)HmzWTgHrk7pj3wHY=lu2Sv zQGH92DOKU=_D-osA67_5{h(%JVx(qwd4rBuFc#d?7lh(#ZE@MObv}l;M{n!29nM6- z`1?xIOU?=Ae6YPSfVYsLnRt1YKEC)I#>71E&)`OQvyA$HR(vUSV`~8#5^H(05=}$q zBm`N%VCxea_!0NIlV@UAt~{p~e=pk;lz13y@1t~Nhn?Yhrh&=q1T+A>cm}>tjtn3V zaTwVWf#GJX{}Zm0TirvZw7#p6`~c;Xeg()c^uD;#lG{BNmokDtkL5;#XwO>Rv?W=%uh%kXEr3PtV8%X8|e(ZwzH z{2>1>)>VGoUT2ph8EfL7^_+*5zvfK>`lz;x=dmZ|f%UP%q#8Y%YU#uv#J?BE#qa7j zgeA)3cuOYVKohA0d=2)h`pCR0mI(#}L3#t^8;gNE8;(M|G9KL?$n6s# z5p4^h$h+bMrMY2CTBw%)g(q(|HY=xziY#bg?3=yKsG26iSbyCpIL%$^Dex66Yl_U~ zpDjG~6c^@HW58d9vo*N6XKy5p6v^t?8(dWdjT8i;vE{{D^fVJSj2U0qyfoSoJw4Mq zZu9j`h4yBVi+;yS_VHkQ4Sl^EU37C>+q_OAFD@dxSs1@(pZlx1Xx-;PN)d@%KZ{hMUb4DR`E>N*MToO#}fDpB**J8aAHUvO&X^F0%v)W>z zl8kom98+|Ro4OO4N&rUv2 z!PcqHsUVOOwi+&7+UZzr4yoE|htOl=r@9&(^0l)B2kR(3n9 z{cKx$izW%}K|7Po>zd2nz-th&9d8%jCg-5}=stV_oVQv-_$mv^twxPsC@W zaC=&N%P^)~piThW+;7>)e9x*3duI>mPYn(clRwj<{npW1PCjjfEA~;kD7n-S|BLAm zDur^9yygIP6+hJAPd0)SR^6`y*~bzW;XrkMfLf|BUIx8Zqd8G2N-I5I$4sd6FvUG) z@V{{U63(-w%GFFQyz?mr``(e|JBRM!2#9}|{&BAgD5#VEL5vED<>KUP`cY%#>~Ok4 zM2CA@r_N_H*r!+TSEY(Q`IrU_uld}lZb&Mnz{K;vc=8nkKoz`xdFJsWF<(1m zbp5&<`$YQL2k`@CcQHJ-^$|Olw%LRFHUU6IMu&KD%U8u-r$o(6`x>0x3!sV^%ExKk#uYb)%vXnG#Q&%2z6e$S zZ`DPKvwyvv5eck7;9hu2rE~@>HHV_y!>CkCr_{4&{TO^JaCmh~%*|xKD<0i-Zsx|s>XPd~Q4CuKR1u*m>Eg=;*)}H}0HRheei~o*tfG47PzdPEnxi9e?ip(@@kqSLM59Ol zxSdp`VG2GT5t3h|9Apxu1g!Lht0dZ(Wh?uUS)CG|jFr*AX}k1sNwQ04H;6mX^BB{A zYCBGRbC(O*1IX=zQ9RxHM>`_f=T5@M8to_m5p-#6n$o|mK^RNZ$Fo6NCywSGn5g{4 z!PYN2lJN6@SBp|-UMnUFjCA2aV>Z4cMkk9u)8u`K|MK$3SXGDcsG%_JLMlr5+;0M| zR}3ZTOGwVi!?JeTsTU4j5LuJFLWQ$6|M_&GVBJlaBWM2@CP7vU*~3+tQZ+S@r`<%M zGZRGAHVRsdW+nb~9s=uKN4Q*2Hb!gM)bKs%7>jwHerjlO=(};S#8r5h$|0}#9edd- z7eM)wh0htUFur45Wx?%T4Mm{}ff#lI8=19#j5SV$pp;5Z)(2Ba9wyMX8SvO?=r=WZ zbU`trl|TlscRUV#Jhf?4AzCBsiRy2;93a7r_@OXW82lbS5G5{@3k-puo{jLB)T8I5u|ipMomAL|*)En< zIZ9aq!>#KYfw4VY-z1H_W$dDpqev2AU->@Yom~sv*P!xb?aEZ;;8D<4D~l5qr=0hl z)(+bIlYnp$p>#N5-^bs&Ta0|n(GiC5X+{PHUSDNkvn@32G1|EH->Tp%v z=?UvObq45M`!!zZU0Rae-<|6WJ4Km-upMumWk!nY~R$ppOf$DiX)_` zP;aIERF8H3M?fXBkMdRNJ8B|IfWL@{i5p?K#`9-=M)Ma}t?G2ICQur_7fL%n!V0S! z?W%^&Yhm$$4C>iSW$IYs@m6&rWck8nVw!rL2}x9Uq5XUuD&~G}?-OX?a5Q@Z7kiX! zrDpJ#jPP?$`@8ia8{9nTYNu$BelgF}7>9n?RNiF;;DY%AmhhOz=r5!|X3&t;iuGt@ zeZSB!?Fto*Hdf{Eq?I!DE#-%Qs8E7JGC=W^A z9G{^s-q4`)(TuXpHj&BBATAcqpy>>NI=3$!c5x)K0V^14xepkAZ3?PyLR1nOn8F7h zy>H|&42GutolRd!163|Hloe{X2t$r^rHczEar8}Aeweq@dk+XI>`2cweV={1y?d;e6M8=!jMi2M#9TwJJnU*LAXZuK|al8wxVX9^6Dhzl=7 zBgIOS&qB^t(gZR zZ!FfguGW)fow;PH&)bq@gWK!vdJjVy)E^!gCs%}nvVuYP*EHrBQSz(#%zF|pqx&h0ZM$P-D|r9#SVBLcfPIVuCDpV zCudHgAB5op-6{NjOOs7I5ZNO5tLl{snUCCTrUKz58{;_iHrv$q@=yT=%>Omxy*2ol zDX-Ys7+dsQA!Sv8RzMurO3zxO&bFei$_}3Pk@9^ICwM{9qq4WziuJL49x=^ zU1`X1AU^fBb1TwxV040^ekJv$4FJcX3fNII*yJ?OO;J%!4njNLJCtg$PEH+#uGRX~ zu!_k6EjCc^oD*?`DjLc%AaULdWdgzA3#wB~jvhg2q=l+ADq-_RRgq{c^$N)D_f~N% z&2?+B=}&m`>Cp8TOCNOoj~6gz`*J_;I*Dg3r=2vk43W)CK!XTy1g!;Lp1+G(BXh++ zWrFE*aGZoS=)SxcIq@Y~hzBik^-5TZe+xSlA&~2tl{54>61d8crJmMqbX@VA!0j#D z{+7%tC}#gH_Ug@I)+Ysimvrn-tX!^{O2lns{Ewzl`J9FqE+3V?d3&JF9y<&?MaHkmhDx(0zP#Z+A4YXHSl>l z_<00w)5I`p^XYdgUD&Y%tO;V(k+F9x(ig>3CG(TLyJi>P8zgy#)NH8Hc~-!i%_|7H zkV(J*V8tLb>4W}^18BnMbC;Y#_rj@`usHE4E7GtSH{tX}9ylNzpzGopegg*o06Kf` z?)(__u2oT}ZBn8b4J@MlK+1i4f`!)OWhThn1LtL3Z~DyA)ac|gx|{}8>Nv^b z(}56h#^mj*>O~8u_fM+$!J*JNT3_+;+~!^p+TMdB?`FYV#kkzrG$a+?LBl_;N2k^Z zumWYezdNsuYm(ioib9cW`4%njSy!z=Zw1v&az6jW)-#eTaR*y>Mg#wYt{l(vVQ`1X zmKuB%?`Cfa;Hw1jxzoSs&TZe~f?#l)YOIVpjgc?J zXYPQ>37rs#o8%L_UQDJY7DY!^ML>eu!2YRCc~n6W=nguoi;AX~zu^O4u|J7DAlnl` zvaj7QYS+o%iR*-+jC#f`)*A2L<5W@tiie~+09_Mi{qZ+NPjX#?7Thvszg~=wWE8cu zi1fjkE>-u7yt5@aWM8@XoSsCI9J0_rRQadj14;HDZooI|Uj_x`mC+!#VXzAsG{K=E zGyn9HR0I2RnP0-zlOS@1uauO?zjDvKm5eT8f@7Mo=)vN*-#1xDV)fYJ@ z(XwcfcntIjzcE_U5+ltL`wke@S&P|p3gsM`ven21?>6oyzTUR2Cjij7Z!~o3rg^9~ z%~two-33O1(dmW0h=<`%@Gy)(dXze+xLi@#>Q%h6-Wi}y6qw@KV4s=kKW~WtU0SwO zYSJ4>$2FLu`i0MlwMdOl^UC?rtONlw_L9O$k{PkH_&Li8{a|~;)TT$k99XX?gbidT zn9}q6;K{AERwmniSmP-f5NAXG#2H8~c*CfJy8+E?*n^cKj1fCl-Bm#Ho4zBkVp%_# z%Kfc4_&byqPk;9@(-Nc>Fw(Gy+%7OxRnd?XIqi5a%~<+^y0HfP^RkGiT5l92v zn>7T4T#izLLz?TD-CdVE7mj8}@RPrrJ=3Nt{8YE^`<+Bm+(Aq;k9>Yr+usyUk}Eo5 z+cGc^(?9|>04xY!;6~3f{N;9H5~6)FHXX8fbV`}tvsTua9@yt!g)=jA9Q-fKt=q^f zW744qAWw2N=R|G&E=sP&J!)_kECDR4_ynoYk(G&z=Up$?0U?M`0ms53JBt!RpSuYw zuQsK8HS*UaH9A0r`#aYSB^_0Cl%ug*hn%r6U}pfil-(HDdXI z>4Vu9FfPkSFd}>%5H|FJDQZX`bA$Gs>IivNHhoax33-_MnguJ^)V}rVH7a@4V*_~?1atiKJ0wa zz>02lYXmKHE>?9xr42|4*EAk7F_sZ_-?R>v%=@E(6%Aj1wrb-&*Wp?VASL9O5+`5F ze)HpC5H>nZ=xcwf(>ziIA>53s&OKNJtTuzOFOo%n1AcfHJaDrfVVshm4u*|F`l z{TM}kp44S%O?z+WZn+yBFGh|+=|$!4=YQcxcSKJe2Nq|MXpv!v+x3D)n146Lql6ZI z`YwOb)!k;Ixi}LqRw7o4I>cgsI}Yl?EMP z(XbzQ6qxje+oBvwFOZ46Kj{UwL$B84n#q;wcp!e;&D)4NG}3U zuS1Cv66J)SG7=Nb$({+7t{nkRijeo=+FIcj?lJ)m)F_2^ zy0V|6vFx}-iUB4vYXe~PO@0AJ-_8@Je06|6z^qDJYn2!cY$^{;*lex3&r_%ttU$A6 z+Vs$fWw{6N+97^CIkZxGOSAxV@JY^0rK_MO}^QxIKDLj zf29s8s;|&^?i0YVpkSMP^>QFDcWuK5dviLQ;K`tK4^ysXKQvFmTG_f-{}mM06?UBr zE3p<6%S0lRm=2&5ZUkP3$8qy?n&LoJ##%2`>Wv0Uq@vRN2}(C{wx+AyzZ;*ZxNThg z=Iwl2G}_b7tzPr>cLEF|p8yk+A8f)NjP1pEEowOeLCZ$Xu1V@Yed7Jgzd*!hf_zt> zluo;(ZW-xDblbc3?h?>0t#d%Lv94c_J);4Uyo+|``8MVQp}c+DeOIma-E0uuw%sr? zu{6hlXXPSt>FhGvFlZo8*7G{n)$9(COeC+2;hPW>H3{kc&Hol`Ez?%rt0gD(E?HLq z#p;cdx3Y~zF&I|v+X|)(;LC2hd=yM!LWzGmKA&Tr2>3;Ylu<8t@9&^DU*A%Zt;p7R zm@ag`vP-_-u%l}Urhx$b-FuKz18I7Poo62?#B=!nGKo_y*_41!X1B6M|PQN;sbjz zb#TCI02h!Cy0?I@CNmp)gvd}WfdU|rkAMp*AmSep{_Y`tY7awg{E`~bBy&F05Esy{doLAKlgJ7Aj)4KeWkII%e>NnvG36=*8#G;KxqVw+*7-~6??c_ z^@OF1X3kXd71D8~1@txrfpK!&y|45JIKuabYVqvgoKXO0Lf>MZ53bLhwCs?=$=lkN zpf3I)*o@@T47{&J@KZu$mf{JZFPf<7M7%4>)L+r~WCv&o*gex%hR?E1jX*64K7I+Z zh@7eV=($+`MDdbnPO@+_==4(`GPx1)hF)H)@})OC3&%s?vLn-X$k_hz<3i(%P9^xB zRX<52)3^=F$n7#P0fcDW$jq`k14MX}P8#4aW@8VH7?uaV+vWSl0t7{yuoHA$k9Dxx zQ~8drC6Ou!Ku=%>f(img*#2&^dHy^K_-f7-!Z(E?YiVSZO7-BkiXf0N0jh@ zprpFc#6L(*j(#wL4@`3uR?N=ISXm3Zj=YNMjAvrjanbg6RnR#pjf|3Ta%g&_z56o80T zl}x-r(wUPMT7a-vIs9VN-0kKk#2!CayNI$qUNuH&^1MM(q8=cN9I#;e9k)lcl zeLFVl`H?gp0qmcfws9jDkCSE|0dc#1_3s!*cLDea>|ULpPav+dlGpW!%u;(6kT^r{ zi;c|n$(&d|Dpc%C954e0VLz@hsJ8E(0dQh?={?B?v6lxNr3a9uAwEzpQ07=^)&`eb zcK}_eGQJH6OYYI&3W|`^f3Y((oqzvo{i@-O`FW-%;w@N6!6IK7b72tFM82rH4}hWB zUD6?y3O#%vbyy&EHSx~ZtKvX$B0DVx9vS{`kAmr0tjB2tWOo1AtcD?^~^pGdMQ?Jw9A~=Bih% z4(9G3otE<%|5H0=k&wm-ikCpT=<<C9XbYw0L!r}46(l+GU`Lyr-Z z`yQ)F05!&aP7R8@{=Zd(`>DfS7lYT~_ch9#$R=n6IM(!v^q)ki8 z3IIQsE%NS;EGXdh(?k>mq1OlzZt!7vEGhKLo+fuv zaZ1YOoB+>mmMZj*u-!>=Wtn-Te^3}q7(gCp_SXaq#V`m0P!^D>q05RV=qYC`C z+zSI>*8Gb;hDy+Uw;LgqbsOZFH0y2owi1wMNcJi|89fquWE$PhOfs-u_Zcr}R60cAc(zUngJi z^FX=nSfI?dm;emDCKFs2C)D}!mW;sx6)abvtetX zAK7UqZhhiVH9@{}m%}~Gkj1bYv@4^zN2V|G#sEy6G721e97}T3SmVm8h)f{bx82ev z?eyArnhG{D1qn*1<>sjT#HqNdOIPl4#0rDLINke$t-;Ti1TX8{{r6Kty?*~wN~WnP zE+-2s|JC_K>6(7`8J{%>LH@3KEN&x;lfR#Tlk&ekoARTm@9Os8Wn+1>#Ype_hr?HP z+W&V#4&OaNPucL)MmWNAZu(*V{XEbgLc3SnN9P*_gKF}Rzy2hD?2sn_hu&Omby=5R z79UJXk;}Rl={CuI3WnDNbL7>;4{<)381BT1uHVb5573VR2cZ_9TA{wwUJ~3rb!RG>4>Y~%pAb-GljfZR&w`2ZKCj& z*?+qTD_|JwKd}0LW#GuFdOD2Ie%s7{VD%M~1PuB{Bc~H#KM7_cQknH^D`jYo09#vw ziX2Qt{%;#^t9vS1spR@I7W?K1W}`-bALP!?j+DoYR%eES@u*Wx`uJ+brrofqH#79k z{8p)1aiaO7%hIKdJB4{V>4m~IV-nKFPFTZvYY6V-yD?&meK4oDzOhl5pD%#b$y8KW z-`}ksb$-q1^+j2*O;({>&RjYtPsfTCoTKiI9-U+If1Lz@iBhFxZg0Vafs}j02UG0S zBrfzq7&34KZ3@PixYB)r6tRMtOn_hibSV<0G7`>R0b>P&Prbn0OyInoRDoE}FJQ5h zOP1dS>KcI%2j=N}9s!U44$UHbvJh&4`wQlty96+jKkD2MOrdAKZ!dey{JhG&6QfAn z?sixxu3-VCpX<@qz5TserD5X1G7*gHEqVAVE_rMQ9pg%(e!%7WjtuYC%1HrH<{jhq zM|h9>LSOM{NM~pcs5&L<9Tk zkmya-XwU^AKvN>8!R&4MzO9%lsFtt&$@lNl8x#G~g=ErhJ58*TA4E#>>>q#Qn5Kq6 z1#wH{I8(AOP;ekP$!$>&%q}M6R@+A1niz23FrsNa6~KKv(Q?h^#LC+k`+;XShY$J- zc>DQ4!uxF`GYkU1wZZ$=e_I?Ee#BiM8K3c77yn0{q5PI=Z=6uvLURS~xhZUXu{5fC zPykYin}8iQ!}~2acz(GTZcmC%R1?F~P@T)uO#Ab<-|FR7VX?W2jSk>+Mtp09b^C)c zx7N9=a4x-EtyCFp?=iRVjZqgRiYSNXhjY1!dff`OfzJ!{^N}sbpC3Ddp;g*$(_O3W z4$$efGkE!3(ROSa2@{x%-k2EQ5Hz@)GB-tgkcwgY&=G^BXOu{JJlX%hE<7kPoE>ljIen2i0n&lST zPxnzkXf7=mo%x@ad4xyJ;KW$W+*N*4Ka^p+_5AH1I{iLgtl9tYG*_TZxTp4aB5C{bV0{L3Wzws%L z(w#_2k1`q>9eo`gxHq-4zZ{skNf_(aU!vQv&G6xWs|5Z2xvNn4%yr=7JPv-7kr4?j3m4&E~U z=X(!=e=Omahi)kC+$=V0sQbA&5=h+l{OUPu-!5Fkgwk%syF^c<$@DpV`qv z>%-=mbw1P(`ho0(exra#)5YvNY~-*2-{jd_<*_D}!unb#Il z;XRnC0mlutVQ?zHS}$yX4gnPc{lK`o*%O$C|DlBXWt?_W$ANXI5$M+hZ^nTV>G>__Sl**sM_Md@ z|7a@>3s!9n3j?_?CoSvopF@b#t1nCaub(n|nANfXUR$x^-sA}yjQ5hr_-vZT^F53A z!4!4BS~w`6PohlJx%iW&XM3)Bbhq!#=?3-z=q^NhXtTC*2iD6tenD$^6vw_L?l0>T z$H^?t0Hg+lqipY80PUOojZx37$#9y|yU5wjjM?=IsNmD&?r(*z+)fg+v?u$_3>hgV z^~{roaWp=U#btx=a69(74~#8dg?E8oQG(+W!8D5rm~v05<52eGoKd>nDUchrX<~u@ z4^wX*59Rm2kKYExC@G|DQCX6$kewkZ``F8xk~RC5eTWn(*~v0?##Z*7Xpw!FU1c3> zcE<2Mx7Yjg`2FS|k4LGw&pFTYd|uD%y3V;Dq>g$$NbVfHP7^(OCYqJ3ZHPwUQtpe@ zH_djH6MD8o1?SO9t3}bEWaaEkdan&s#f^>aKY|N1YH@t?Z4{@PmKgKUio!vJP3@CJjo)q7u5i7?+QmVDG1GU!JRmS{diwh_SUkoxCnhE~!itLc`5u)h2w8T~nQTgTZ#EP_ z$eEu=LTA&EyXP16d_l94assg4W);5!7GW84I+Y8Y5Rdidoz%{c{(Ub|i+rez{CJSIgnBs#2LahItbO(T z@HoL@)1G?_#+f#I zzkbMMn;stwCsM2~4XpX?O0u|g+(KY%2s2!=d8x!@%MGSo&wc&IgP8Ti*C#D94nt`} zv*1J7$8NVMzM-K7zhO-5HrL zcRScxgh!6i1noh!%w|G&uF-1Urh5IF?;0)oy?xChC!bLj+E3WBi&=VqCMu5}T9;sW zGU+~Mr=34lRl&@_KjF1hsH-$}I4A0Mv_EfqwR%1iAo1S=Yartr#0r=ef#mpI-!5fw zwei?*rSbTv+4iI-N5(fL=L&wW>*PO&q~!#3W(6DiVC;L8A~?5hz)(_5i&1XBh)}+= ztEOl{!Cgvj1-5_Ka0p!n83jd9ib5FcneKsC=I~vGxV$e%nf~K-5nbc%=%_>;olD$8 zAo#f@J@f}jsl`y3DZBDPy^kWNK~c~EzYpR20aC!i@RKL*_@MZ>5A1k5l5MNq36Eh= z@NPCbvvUkrLC}kd#hlclo5gine%k@(d{C9+&S5;?%Ax8ZN?FH%f}B)81F&x{KsqgN zxKeU$i|h43Wi0t^UlE|jjQ5;0rDKyjgQ%wI84Cgj%_z8mC35jSWBso<9bP3eiriNq z`x~jDRwYWw7v2os#fL{gh`>K@T6LsplflJ+m^Z?u;%Q;-E5j+;Pm0OCOM(N&C*~+f z>F3kK`1|4-wm3-SW>($Z*T0-@yrZ47Aw&g6h88e#S$O(hI@?(spPS(duqP56BltF5 z=-``wxSHa<+FLtCv?qZw;gU&Mtt~#Z2kj$V>DoGj^>@czG`{_H+7FhDK5jQX(t^;| z0`*&w6;poR`xE%VeCzG;0T=hlWzQ5@+oTdJ_*99}>;-l#rPgx_Fy%7^tm^nFX-at% zDu#{;p`5x!(}TL6b~^6d1q1?d)m~~sS}KGF*Z|jqS084`9L?wu&2+~&W&NwTy!*H= zhGl&>wmfe?7GP73ozajWw7;N~E14#0`Hs~kibNJP;6aL3@4&yiG%7*bem z&GtHhjzNnZ`ykMmitGze&iok@b97JI*}Z%6DP5*gj~E($RgZ*Il#mDZwV*O&Q_UyM zGgIt-eUd}*IeL#xP;NF;2@H5oZnCN++`b2rtQBq>58~%Pd*m-8bRbG4mbZ7eVOJWs z0BR36+PAm*HEvSa*RI@&8G9CIoDKKG8yNz=iz*0=vh$a{{Ne@!IhyE3;6;*s+F?$v z5WyHA<6vot-g3`Ku;aA9oKlsu|2b7;=Pi^SMf_8 zhJ#xGTZ?atpX5(4^@;AOzB`Y|zrmG22iPs~gCKCW2aEl5<^F+cVC?Jb%M&--9=BAt z*%f69^f*^@DKjQdZg^ z&@PC26>;SSaI>>v6Z>|}z1DNk6x<2IUKX97Oz>&hOcbHBpQ(u)!up#1++a|$gsBw0 zn@*u147y&c^)8>zzIJ3Wm(T(&hOBtlp% zzpacbHy#WXJi7LLj`wLt1rmc5M)?~}%Sr!NvAij$m4U3yr=#Aux#-wHx?mOf6UkcIKPw$Hww?jx4q0d0 zgA8?Fo0_3}j2o{46tA>DC&$eTo{?i4kQ`>*8E!n%O+DJm5%E9rS*cxXIM}IdECfxS z;>j})lnmzU-+T?%BW^k*C4>(quvnm(dfVv94#2<6(l_MM7-Qa_>> zd;a^;`Gu+LsZ{dUdcL_c2IJa1awa-{D4J6Lh&u2{WhWz3#cbVm$~ZmScW&re?ML_9 z)?4O0WD2x2G;}IYqqb01vEbVSZSGZRUh#Lv-BGCT990o&L5=vuI^l28{XN)Mryeujp1au^aU)5A}W>IBuhl~_N~y$W(MjQXv9Msgt2oyh}Oeb(j3 zza@K2{tVBCqGPBA$Uf5-)z=%hwmsALV@ut1qiMb5f;Fb5$MG2Ua2b-K588W!Y!SEJ zXQ|6kX8YU!;_v77`#BgjXn5%&cBu27IOPi zK3#Qc6KhcGUf5KIREg5=nQp!2-F-Vyh5MxX zhH=G>Ju#*9+(Hz>2c@04UP#hj3bN=`0F_mwNn|}%jrbmZLREq)iQhb#Qz$p(H0ul0 zu#rnRgw>k>9aqgt#Tc1&XQBx5!fstu?PogZ?JykvO~LH<)d131XFElw3NqeFC>uWi9Ne%TEU*AL6VNt*PwqRo zir`mPKwe9Ha9w`$QDSyBCwV8J7nSm*Fivpwq1Wlp(O^JIn99tyv(eb0Xs^|u&Fv9; z*_)|H?L0KidRN=n= z@!GL9h{fjDpb;exul*2BNWKNVjj=@>Y^EL;usNqzGBF;G-}uYaU`M`TOSbFtMYN(*S{vL_3pCsRm0&&1%Hc{s83WZN zSIPz^-b}5(`rmD&(W$mZjOfF!~9+sHDIUx*+Z5F>7~d6Do+P$YWU6Hyg6IlN#K#6lBNf8a zlZfHiIqFfpERO>1vbvObPx?o_ilr*P=3=6h5F?Nq5!IK^I=?*?fM=)C$unhL129Qq z8uB|Er&6A><&u`xi|KiFmZ|K?H)Nqv^=*;GVSBV6f0Y{`D6{AG{=V0kNPAISzjFbO zDv0~aE}>9cUHqN~AaWMAvTAdL9`sc4s*7ojMCf{Wuoa{E`hBR3cThi@6tP{CdYnQ2~+aD&ODD@&XNe=_X!_Sp%7-wUSKf zp8zeBng_@pV=a#WsefN-2m6{k8Ba!Vskj&bUi)9GEBOo~XDavb`+*KX-Y=x$prnIjB3QxE_fs<_ z3~#u${+wDRJ45y}gOanj89M#2$I21wf~O`Ah?0Pa)~f??1%5FlWXvPT3z_4R1p?DwqA+WvC~t)vcbvF zntmAp;CTRk6>!mspuLpnSveOoH#+G)>1jzmn0_zpq@#mE&ukE51YU;`z=wC}7axZHsfl!igTU+DYp)=muul2erd zxh6N|?74F}DZiZ9Z|tu9?Y)2H1o=SR6M*{1J>=ztC?dh$=h!wPcXl~TE9d@&oPh$^ zuSACloeq8(*ik>iidz$jYvtRP{S8V}7~ZeZ+Myagth}o!(ljTxLp24p4?)p(N#B-? zDPG?-Mxnu(7cGsz8Z|IU^FNAR=juu1z1Ujwwk-g<5!B39O-KjbQvJb3Tw?)~L!G8T z<6%inZLM3sn&@IdX;&ZUR&?WzS*p8bK|kn%GhSS8IXAr7EqlTVL+CmVmDo&!HzaJ_ zFr8z6Mkk0?LrPO_?nty@chZ|2+CTim(1^Z%Vf^Ek|EfzW?e}k@g(yGI*d6&ayfZoS zw&_~IW#!kGXaqms-nBePtLpG&e#cerF2)ai`KRhy0v=lMiFK~hu6t$O&Zc@14Z7lE z!a%w*QK*k1=yN>WaY*kxBre>S?E{K#ip|*?knP`2D6br9qCtbZ%^A-90%)G(AdY)pP7-QI)*h zU~g|4ytOY?ZqAa@vXYfB{ULQ9xw{^|byqlJY4j7chq9RF+C+~p{8jO8!4WeYQ7aGQ ztaLRZ@2~-g;o4|CVxn^mT`~1^fN{6mfD&Ae%v@7bvjwJIgTcr#0O$@fpmr|;LBJCK zYONFax;1A|ULF>8&)?OQExhId#ChNhlt>N>B76CQ7z*i5*JHbNk%~pVj zWET@GQ_e%?n{bB!C%3>hk;-a8n(v(qVAfw$9JhlcBq>-b6RmSyE)!Z0>mapHSTT8% z365;=fEjlH2M{6X&Zd8Tp~3C(vXM@jlJazk^6@hY*JuL2iXiI$vaCH2A*-%PN=Zr4 zap~cRGm5mikSJvN&StQuCjtnshdOKv42^sDzRCNXJnaB-xAvu>L%l9Etq*HRaFnFI zfXUvu?$ly7!m3B(O{kT#)ehBVDYJPw?K!6usZbi+I*l!F=mB&rDJFEVm%I8JQvKA? zVz*D-PTT`){xfqUj7_%1Y~cpx4~z|eJ;VWuZXHC&WLvJ zMo!Yz=sA1puRUErC2erDP zIEB#Dp_qfKq(5x-26ALLqGP;Eh(>ByN-A({x#Cm% zXE+{oO4y%^C7sz*u&~vyP{cmGnzw2eh(bm1hWDNVDLkSbZd@sW6x6|#IDk_o zmI4Sb8!zgR(k1ryt&U3<05`B^j?cJ4%+1zFEi!OgtKZEY4FFp7jL!Ohp!9iY%MNt- zJ(zBy^R3_=AYLAf&j(J>Is%>w_$KZ{(_jBO5kUy+qC4Yn-Gvn?v^&?Y`Hd+o0=5= zl9v@CX8~Pvm{Js{H7rByjM|oib{FV+#uA{wi+FCBlP43B+&V>ut-|;!dSs9OodXRx znBd`WPi`eUx7`5SOl-45h#nan^x5T@+L(lTE=zP35jj7W z3+)PQ3njAAZai`V9x6la{Jpoot7cL#hE zTjTMH^~B74%JV{0MsdDw3@(0G%KkcuzvN8B-7T0%TpB9u2Qox9Oj6*NmvwsT2@`8W z);Y=9fa>}0S8U$G7eMjLzd*Y|yaHeq zwoZ6FbJgl@7t^%?8!EH}cwvDDA0M9tkTteHP8}-R4i~9SxUKwp`d-)2(9xl29dsB* zl52G?c=XAGLYJI?#P9O=3`E-&EF<&pjRwW66Rw!-@<5 zDDLkq(w%NBWViv@)LH^9jW7r|gHMkG041NTqum2MA+{_)sI#%R*Xt=Ts@4j*;#Z|E z^-lqKcuwBTf$Io8h@h=a%y zp)RqzxmDfv9j!Wp3Q}YKxyi|7ra#@WnX-ylkY=B&nIyaiJ~UE9pt;~k=5KSyH81d( zXmI;vMdpwXJJySWEQU#rjm+56GDltPH`xTJ^9H3B;c&WSaqW>qCc*?cXndl;*UM6z z1Sp^j8CZR{G)Yk9uyG}?=XBdrz9|tWRgAaHX#YOZ^OH!;fbwNzWgP<8^(Hy!_$0P^ z?godB-Me-<0hjpNl3-1Wggopm;@N1XZ&p*6Wr-p{XRxY}5B`62()=kV(b~)M78JR$ z92a7$|J{v9eL;E~Zn(KpeM(jv2=;siWe;E-=42Or1Lh*Pj$1z#;D$zo9h~( zn-;>vL+)F^qUy`d*~_@W3IK}e)GbP`YipYiZ}T)8>d)OvYw0|=ol;_I<=p~a=+%vj zBtCqbO@_Q?bfL6Uq=DvlBiR5Sjrt61ZU3fQi$CAKduvga>6y1L-viDl9NFqokb$Um z-}Pjt@0YzmY;D6zH;@!u*$|FE<2z`*FO%MKPSyyP9pQzBwiiGeaK>AjL%C&>lP1YP ze3G99t;Jf83}HEgt#&$)3hWx7q#gH!2{hzlC64y~!b_57Gaj{OnHP%NDag5Hk!Y+= z=VQ0^=}Z8kNw$Q=xn1~D7Dz*hGJz=Y9UPBt4^$}u=NXh63zGZWDVSp?0$!^JC^+eG zGY5!_xG9*9$-9$bTU7l&uJI$tLDX}kxuF7n|HASFX?T`kf-i6xAlpIESlooR|AyWK z_XkveoK3^aSfq{>k48ld`cxd#x{s2ZK9CiQT5;=b8@IaHBsL?tM<4pxI)F`SbcOkL zIJ~(3^zKvnAM50Q!73A7dMSdu%4TB?@!nH}6up9nX{G>Mj)KLSwOoaoe{!W30PRNa z|6tNU6ue_#$N^a8@%c-;-tsz=AMUf}!BVQ+oL}V`tW1GPy#Xvs1=;{ruitR$Kran1 zv7A)Ilcx;$#D4R*Ziyls%*#u)Gr`{RY|7(7f*k=`VY|9_rE&MyMg+tW%pWiz!|X z&_b3h6*rm`*KLFX<;u{$`d+?%u^zg*qIPIV&rCi!lP7ntl=wZqaK#x&kMv)SlLFXo z!B?JQBF}zZ5-pRzMuV2NH{}I#Y`4_rTUc(l1*XWjsVc{5{e}&C761ep85#d$V9LQE zqD8O<>$N0=-&(Cm=c0trnn6H8F&hSJ9c{yX3&d+LT6NB#eSBh; zCqR)6`w1|X$vzuD4a%%O0L^L5sxMP%BMLY<r1RM?je`~V@*J|zyZz!PeZ9u~9 z=7@g?6Ho>Q26Q^WNe2_;&_IfcK)sIKPM(IZ@_Kl`sD(98c3&k?s;O%T97)u9`2${* ze_sPs;NUpRh2Qn&2K@S);qmc;VxQTY26Zn!!}8I-lD~f=wd|pzvEvtVgrw&i;{S00 z@YG;qPjD}2-pHV*+aRQcwyVi#ZNbt=td#ZBnFA%>ljq?ntoxaB=azur2JU2C9j`uU zIxWMt_q~GgXP=I0Rw}sN8p4F;he$q#u{5ea{XE6`d(X|e#e=2dVdCyoFb1 z02|OCoHWwX*#Db|{06XEwm_CZV6>{;?F@_#{{oBB6Rg9-Az;%;J)Ge}pe5n(%CT>_ zs8e+IHIv*yml6&eN-VZ}n_wMBezNO8S8E}RAUP_94XB`H>wWLHbq!WD{eX4K!>WE~efDmmTKSn|52M!Jnc$ZU$maw$|_6eQfg`4hoMWI2L{n@yit)Trl z^QBTI51H3mO56z>O>zJCLn!6H??hoh9V2Uj{V39)ARcsiG-S-pS*Vr4`WI|t+ZuQ2 zK6yTjL8;fa4RP3?7zbe^{#VEj7r|faM!*mU-i#30Fj$doIDN^L11HiFmq(Iv|Ww#(4?~>dNAVjhNyE*i60kU9>@y)^24KSlW+?+W;H??@L_((YOd! z>moF>0sc3*Z4RC`g$1K>;H=|r<*%9saIENfKlNBsid7$->^Af$a4k6#$xVP$oszq_ z+u{LY|$ezfR_PkSRQES&lBoXkVmB7X9#xg4wO+dvYz0ky)`$dfkp za4r7nyWV$_tGR51$=wDn=*#90*&|KZUmpnfkXHD8?!8G~$u<21-K!L?kZU>@7rM(=zaDaCrtv^q!Fw`=cuH2~6miHk=%jtnFv zycpckfB;yOUh{mo^zK;C}L0eqa9Gl^(fwI;5rg@6u-xdyL-lgHw1xu*YVG9<87=z{hgKmAwwqw z4p8GndCvaGdt4;8`sXcgMf_;d#Jt9!x(nynV&6=~cxRw=i>CAr{*-i$>&q15K`v-; z9wBr8`B=6`hi$K)`=pf6ZYBPA&{mv&OO3VD!^%eH3R8!D1FELR?9pzA(+z35Yw=U* z9;5s3#j6{+7E4pRS4}SV+Nm_xczY_epT0@!2L--TWMkWdbq1IvhRyI=AyG!$mRCV{ z&f_Ruv+1)-)R@0+YomU#ljSW*I(s<}`y~vv zCX?s0EyNOgT2zLY8t&PaznH*4Izwagcb2pr5;NbgjGJr`s_ukmRM@G6Zw~8UtHD>B z88?dY0*C8<6r<|~KZ`-tU2ojKoQM2$`(IW@wf>HmO5s#eE)CcTXmpraV~0fU+(Dw; z;Qc7EfPLu-9G{sfkAX|g9Q^noBt1c&*9(&QqrBej1Of(e*+K@}}~B5Gdn3T`SX=sbQMk-GcgZd;>0!Hef? z8!8{^J`_gKJP~Y(H`|$&ZS0@gd=PtiZrml+ z#ecGR*!ohG`D*F-yif5IJsLHOBrJtqAifAqd>>*r{BHTeBD3dX3<&xHk+VV^k>kI+hPI8U=5 z%1u9S-@Z-OB#j@)%Q(w)XCc37q(u3df0ZJ{ zTx`THYs|V>9GT{~u}L5ZI%Q+u@4J;I@BJG=$iI5@yH;7#-}up06g`suQ{qd=D85|) zIb3x|AD`wGqjUYbL&&iTJ*DPYKF`8-h1+1G)7im7v{5T*^oxDr{>aY@@BSD#c?99_ z&92DUc9k02hAie(d>B1MQEoTZVU>gC+;*-&M~iJ20umjyHCa4`+mIZS1~LylJL^K? zhpOTmtXa}<_pAj2);`;E;Aq$ONnV)rrr#?!|9L?g_|f)j1Y`hmU=*>5KH0C1FAEJT z@nE;oLsQ!T;97O3NCyff(4fK3S#!>Zjx(+2N!IOM<~lTeeCm?ggw0No8U1Q5Xk`$! zkR`m=V*T09^>%l0t?epAJ)2s8`s4SMKC@%0)k~H(L~)Tl7yP{X(Z8R^M{kbxbmaU8 z`B#f2Mhx?M5Xfl?=gC&Oy&^-~SiNII8*VAy2ky1$MpXxQa79YH#)X99qTI01&pfgb zhH;8yR(7=)Z1mXILS{5{OJ8728q!|xxbbAYx2Mu?5B)N<&j4-6zi=ekt}npe88?-e ztqjxYR%y}U{dM%Rc%Bf-(A^j; z`s&=3qTMNf)026r`U3m37Z$8Y)}=Ym?17UD6kS7&{{H0TBY>fe1Mi+T3Bi!o9UUw= z^KAO$dGD?UUQ0N=j;f&+(UFTABu~QyVTI2)k)=ZD#(J# zFQUI)J*vT(W6EnPxlU0`ylT8PHIQb)A^k$_-h2OJs?(=)Jq!E1es{HRyS7W%=oCiF zBOWEl>i@F#)hgZiV&JKfsT}O-UcQD|J{~t_2w9M=WEgJf$`a0&Gc#8GcnY)mxH+g& zmtrWSv&9Xo5^Yld`88f)rW+}gQS$y-6ywF&Xk@C~HJWLA(FxZm*klctrTr{l!VUm+ z#em`kh`gVJgCkGB*aR`{E#ZdGEGrZKGNK&Ko%W7Jvh63QdXiQ0d+0?Da2DADB;$+& zytf*Ve;JtDYk}kG(W9&qS)*&vJM&XPwsd^hPpC$t^5Z1CcBRJ)Gsj(&-|ixFy>9s% zpIUyE2e*H>#@~>gozQZEA&nSbK#(E7*fh ze~E`3xfQsK+LbU%9L$V|Oi^I;e$U!t2XVUj8+PQPLTpa+$sRU;zr!>G1T`(fY6KV$ z6=n?n6o+LPmqGrte2{QO8}u~vGP=f2HCp@>LPXH3n~Mi`x@;6o_dm!Im>sri?61wlD- zizqcaBb{DjW$QVytZ}my9|2l+!Pb^5$vXePfB#^i2V?~j5r;`5N8wExK@Ed|4ZO8~iY^_=dO=v& z0Wl+)jf*6upWLHsXKg-{W#M_D+`Yga4*nJRnNbLCvj zz^9sEogu0aBFT$al;r9TMyjW4qWj90-w#W&UH?_69?yz9&(qYoj6{GA;00Gdatj#K zZ;Jieq*?vmET0>u!2FG-xPg5lcg%G7Q%#JkG9bkz_@z3- z1&RH}r+Wl?^iM(A!86CTH*#GclH`k1m?M4eeeOZI**Jbq%5+ai$NN3iRjWQ`bSuzT zin)qJUagz>(d>*$DP0StJZJ}_yN`RqH>^WpdBYFEZij(=)vY5m79 zIF{Uc`u$-58?;*PJgW>dx{j%Uz0G&}``x*uH{T7q-IfXjo^|R6rxa=O3zqsbZh(^ZY*L|gxrnp`YlasoTHVu*350$FNC&um` zA}2k+2oN$y>*PPlSg{rnlQV>mzSl--mHZzUaJ7av()Xex6YY-S3vZ{D6`eLDNunTD zJE3Q`ec0O%&A3j-7ywP_02>hz5YjaZ>0vY0U{bU`-m!a5b@gP|Pg7cy@A4bhP+%mV znVaWo=cosIpJkPLs9s?=b_aH)L3J&F*+`qH^=Qvqt=~1dr=UPl^q6(P)bS?Tge+i{ z4*GFJKNmCj>1h)GSC@@>4Qi6)#bM`zeeFihoE4NM6<2V`UY?DnEQ}ClsrJR~w>RpV z7Gep;n*2s0>7lJ>+b&WKz8uyW2m;_BN7K#NPxIC-e~L=V?Kl&w>36;rFCLI=R~KOY zs*8jC>=~@dlbTl(?2qACB;B+kyy5e`w($n_ zUgb7}I1UZM;b!+>y|>2+2QY1(?c_08=ZTn>0okvAsL+sn*QPJ?&ET0C^K19t(Lrm1 zfSVS7^qy6kO#kQ9|1a1x$eyk3e|y=@dMK{FFsGW9)-P_%&0T2+#(6sVV4kw|=$Oa2 zN5k#vp>BRvqw=eZtw%`?XL$N4X8a0^xw$HDnSIT_NjHo!^ylJ~9cOC9t7z5Zv`M4<1KVco6~R<#{fw3+bbC~!=r+^_Ck zSQQ<& z*XOU1?Ro<$a>g7G?7hRL{(R7WyD$lSQbYaO#kYW0Oqu2xHh=a^caXfQCx>XKaGrcx zOw-KLeqLM~TKGDgQaoNkX54B)hvda7-#c`>mzm1X|0gG1&X2iZ`XNIccP8>1Ra<9h z@G1O`#50kd)tg&0cI9qQ2P2WxkGaoxnVVFT7IR-0rP_!a)jQkEP#9{v+mf}lTpp|| zPN<`5@{WJ13Cg}#LO|%r=`lF7<%GU_Hv|-J4rtX3;isge6i7($PN%=A7abLTSx6Du7@qkV z6_b!~BL_cRoH{KrXXa~bjG;>YRId#&=O`>p)gDzRda1|ix5$x8jbE6FBi_1AIIdKz zO63pR(jN)*L+*G?VQDiASBG*9ZtO?ea8NCMSmGc0>aGud=0BA60I$^2x7Ct)_>5{_ zJ)-llQN~k^o!Fa}89PazwljE_zWIzygoEm(qiV0D&~gETkm=2g6m@T-uB zPn5A})(Y|x$*22|A7kgblJmi?Z0m>5sl#5O|H^hAaHojajaO+xNe%$_9?V2(kWD?d zAPYIm#K|R8JOWZ1CFQA03?S<((VDpN787FuF%FAs&ImI}mojC-Mn;Ei4 zdv{MNmYAlZ;wymAu0vfG2ACT66`s9VY8HuHg*O+ROXgF&)uD|aK+eql_3NRy?vHmY z^cOF3R`rRDbWf+drtq8J&JBOq&FYwRRqps`JfT^H%deBRYe3%Brd>n*rL5)H+w?Df zHC3Qo^Pb0s1`~C-BU&!kX^%Wf5qc=qqWI;^5NTeKdpe_&RF~3C2>r8^2L8`$I|xi zPYrQ9$~L8&J&W@4T*rQ|{C7gM%=~b=RsfV1_;ljh_2iOr3$&^(O{ zd}2>U5o=v`dRuUmd&sU}r;A7!?WE+R?R6-;zTx!|-bgvMjAEE2CXl`<@1mGPR%x;E zX;a+?jj}pgQ&Y5gT_P3c=pot=VA?BgSH7qCxpAje8Ag2NMi;PeeRtpz?wtwESmXBk0M_vdMIWo2biHvA02 z)Of7%bA1GW97OnaC`HJunM^!^Qm%R1{^0nzdQq~&H8gQ~rS9k@w4o7kym%Kix$0vO z=-fx`nvIIkl*+{57zmPdIzg6%?3Jg>E)$RCHTF__+ueSvrY=60M@H^#!wAM}4dx4h}PO0nGzQBB+Kr8eDL~>l= zSe|={*WW#cIZwTZhW`mDM(k`&EX~c$TX0gwdnh#8%{yu30464vPW_*`IyH&mymr_X}PGROKS2a+G7Z0DKCY&fBJ zw0pcCWL*TqHWS`^VU0^ShsN3N5NP2~??*Y9-nkD=geTIZ0$Sy^EtTmnWU zt%%AW7{|-9zfZWttTxmoDbro8J=1;TvU@|^a6`U{4tBDx8dTl5zA?4XJhKrt<g z2P2j6JFGfcQOB$OypbP1utSsG!k!5b1v*`U(ruwfPW=wprX1I=Q(%a|Dr6rVkc2a= zw3q7NW|@!a1VOSF5v5|+1rD6`g*N4!3REYKCm>MsrI&+WB6FS3_g|okAogkmlU{BO zB8CRhkV%-HCx7WWJj<{+dq*EMP~`(y=S&2#TJTl#2#7?Ib-$OV&*`bEzJ;Ft`egRb@4J~i>f}fxA^eK0iTbm-|JB3WQY%cCda~nJGMVKSpA52W^?%A)d3BWFv3y^g@67nZthgu zz)Mrk#h=*xe>cYyGb|Rbp7aVf`ufRueZ8z!`8NIKvLfAx2&tt|A3qVKLadj<&UKESi4lRJw4|I<5pc{m3xa~jTI|8z@vym8I_-ra@D*!GA z8sWWr_b6rl_7xNqY_w%o(R~EB#Yk?8&=UKjd`z&xIdgD@J9RqRm-YArE_VtuAy^@+4JVD z@F>3VmZIIofmYI0of=o`n`g{ryxKtKu_-70ue1nf$E2Ay`XQ#10jW3uat}!k<8AZT zNz0)7hmV9ozkV!s8cKU@(fEX3mTG)d?JA>j*q!f1fjUxYKQ#R{@A^`K%fD+efbH)9 zswXeC-EMvU`A1FODh%%8W~ICwJ(6&P7t?W_fBds~Aj0RJ`W=uZhF|Eu!9tba3qVE4m+B-V%&Po<9CGbpy) zta&9(ef=4QBUSBWYCi>8m43DJY=K~eHN{5I-yiSceW^<{+h&xkHRTvuB)iO4!r50$J>(I zbQHOHg;(P2bogPZK(Bp1O~JWR(;R|CTwnf3u_1W-F0tYVcr~{7uWcG&gKwI^=@sI@ zVXPa1g6Nb__7f7}mu|`bw@WqS_>H4uzn6M8eT-*c%}Mc6Zb~?F(%jh&^LGLx7ql@6 zATSF{+0sO9<#ZGy(O-}2hcn^pamjLFE+nSqWf2?M-#tk-<6aFwgWAIdSCTY&IX~RP zuP4U1~?>KfM7H_rO^_eZ;S2QpUnaQ)@U7#$N?B;Bn#;%_0Qr8{U`<>do0Le<+thPt)x zcH$%OS!~F&oeTpk-dA&wR8-mk4U(tonD|?|IrCO#JSZa}q4wZi*&}Dlt^>2?87zX&3 zX5cH(dH=gRkbBw)7*IL6#>%Xt8V)y9NLnSY_-=g|4KzR%EeFIbh08zmCDf8+K{b4c+e7x&_o5DLU> z%7Vy>OI2z@r*Kr>hRyUGC{MGMEjsqbx2&XU z`UO`$xrR$;Y9eB>+AVT9RFuhwgv&=GSCoVI^YonjjTwIz=K@{AoRjK!t#&1ZZ0(8r zgi8BG?X_2f!k;GwZT#&xVgy(@n_f5=M!Gcwd*rdQVs8!8_fD#3ZCSVfsVQ})m^YYF z{?s^7Ve`7dO4q1XBDT+E8=3E{>HnoR-hOF69jalJF1jB8{4zxHqHTB&27yC=HI2K!m#6#z zfjqY(GzER}AXeQ}w7#5)tkVU|TcXK@tPdVW+4HMaI%+lwd5_VU>DqT$&ldm6Mv||Y zHv?xDa_9$Nb9u4$jd~y7^MgEHGGRisI0Y={9bVi*muBJ^uaR2&>Gt;{p2g*R-E=E5 zvFuH105wJE+cy&3x0i-BQXcD}kASP-f8s)XtYN=9RnumT>tZ^P7D%ek)6r%AVD(m2 zw^+?u9W7UZx=f!uNe6(C|3r)fz=@2TAt8BO>YoEQROBcouKn{^mdT?Al-RUXA>yy$ zqK97C=4PEdO@*P^a9A1W0u`&cVos>}gTQW9w(FFF!J~?i4Z-X7 z1-ZKo=9`HO-q2QE&TFuq!IPc;z2)~I%@6N?PtMK@8{}6fss&`YJS!S+zRU|F#o>N& z354Lk@v!8sayHl4ezDj+_Z-N;EOUot@&LXJ?h8)MWwLB6NVTTs%9@e#nlNAXM*-y3*7>KZhB`oOOY|R`veW!)&z&xD ze%#zC@&*&__R?=x68pO#bJdx%UiCfv_hYEd**y%tha5vgqq9a<~t2{@YAyuhP`Gdu*$ zRtInAkyFmJ)NeDnn$421E$5}1B6Xg8BDu^r{QbY2mil+Mj+$enG*EW=>F6$NE-Nm} zRuj)${BF&_*vbM5hqK+5l;hlZ|12wflV8r5vs&`i^r)&TZ;*6W?{Fv{vzkxVP^~C6lg0P_7 zCTntY=P>8tAg+VL2HU6_WidBZV#H@<2cRf>cj{!JcO0cD}9d6;+o=yJdW?GI8j-Yf7 zz6zL}2Ze%#bzEAF(hud|13rV}uF|pCh_5NLrVr13qbhBSZ0WUKu;qOWTV9>r1`Kn% z{pHJ-fh12GMhR~L%zLYW+z)`dx>gAv+%3qy0PO&FGMrN_@p|P8PzZD@o<9BTZ^mEeH`y(uYD9kyb%h;8FkB(V*B(yKJ9!jKP$Hfg* z(DtC6*k0n=`y5%?{la^Ynn)jaUCaMg^f zTDU*Z8M*|N5|lDPDM=}5!J-6d3F(j!5a|XL0|Y?^hEzJGkw%e_l5SACyX&s)dH?sh zmk;NB@%S8O_FnO;Wy2@`;&s=LVEN}7uchmBT6e#~o?A6~A z6*|ATG|4@o2|!%_8y%}+tM1f-So#@Pu($ksxYy34GWH1?m&w517feQf3AMw!TQgep zN^yIkSIDRq#d=D1;b!aa4k<;VChQ&b)Z?d5vn7w#QCZ&GrfORrYLE66l<-m%{UR{;7}Wo%97zky8jweuWmO3)@>}Du|1G`16r_GmB>=mS0i>#90V1i($l&rPn)+C-`9S5x z3Rj91?%#55<;l#`jy0@?GFu-{+t?+%+G27xGpjrGQn7x@rPE*NUq!(ytsge~*e?NV z=acu0!tg9(LUx+eaQeVxCV$OFF@2szrfIu7DqlHIk zGLd2JA51qsG3ZtXaMH>!YrZ_wBqq;9J#!utr$Eq4DyM$SR=m=A2kF zh1Msso-e`jH2p&NonnF(qZ|VZN9G(HqhdVIWzA|aQ%#UAxl^>YsG*cCVP>|g+SVLw zyHz<>G*#Cvk|v>@g-4!hJq zXLz)lynQ<2|_D@mn&D9r|zunpEFCb$=iU&^|Af zH{2)YekA^GuF1PW!5nvV>iu_hN)er;E+>7uhy2p_p53!zSRW)P&eD6RbmR3oY{0EA zs|%Y-m6}J9ne?U9>K|C%kJ?ew%%rhu(G--}@1|Jy+23=ww@D7?$BVrkNUi#k;mN{d zPDP3c3-&fPtjs{TmsjYkn_5Nz8%E^94g0SA* zyRT3v5k`SmwwfZstD>VuO<}Cxz{*NPPk$XnXTHBNjj-S&^?|;M=ZVHl)+Xw{O}-bO zdIS?o*WqeS9^^u)pxRrTZKV}mTm-1nd+_oy`{$F4O)H zWGU%@Lu6!OM28@&V{2HF9)?Y==vfl+9N9&*9;;KRw)8MwBR1 zkASdL3m`ayhiwQF!Z9;5!&GNv;!HU0FmD-qtz> z!GeMCT`$mML2iOdpG)T7hBtbCi7kMk|3< zdJHmqc`3gU?WV(Kot+C_dY6H!y^~^LK5rCWP|6jAZ<=x25-lH0t?D~2C3h>0K(jrK zaSl({UwKs#%`#zXp2z3MQV8n5#e+8w(w`KoanLcbp~kHA9tRWTDR!!8&H~ zj^=nH*+>LxDUNHw3$QDnrnRwwfkx;WIm#go00?c63-rSGF-^eMQ}k?70iR%_6{m@t z3I#!GX;ZYg1Z4UCt82>0U_(Q|zw3du-kSRj8trc0-G{A(1pl~5B-IE#Ys7!+d0}aT z#eu&QzF)h}b-Y^PE2$Rq9f4fSqHIBghu8UUb3`5UmEzt5qW$+dXLmA-Kb}`o%`Kbl zfA?wfB`4Zt>Z+aL_>_+$i>g%FvC>Rfx?57hkAK{=9?mPFE3QaGQrPir(3U13r!A0a z?BulbyMinQt_N=RQS0iAd0Y}FVFBav<=UVvvO`zBM!%5>#ZFo60e7i|Nb! zj>0wzzQ*wWZBBytNnyR&yM_fIt+0s&9o6>96zJ@Z?0M(DE#?+7^rC9@qKzhzaRe9z z-Nq#lT`cacPksXy#kqk-OS>^2l$yQP(%bdBq6!{~?0Y`>g- zvUKXCWdKgEY3fsU&w)lj+R^yck6U=+>zffiN8NQ~!vsnbOfudD4F2~653XOC7*C2< z_wmdPojn-Ac>9!!eU*x78zB>*@I@*f;cavAb(78Y&*N0Z-0$n2VD%Gy(E1wHW$<0y zFK(fxx!k)y8!#Tx>#}|pZDF$W+vYxgrg|Iis22C5pnw4zuez83D@{t{_P#3(DFnEf59|8xYBDUD(+i%pg#6b=YyOTIqL-kx9siI?s(0TGdb150l^NqYk0 zHWVgSSHtIUS=eSkI1i&iQu=i85=tae=iVxkx(1Yn8J$z>34C~#VlwdpS&p$9KS2PP z1Cm;pCzS5rzaKsvZNn^Z+s#p=i7YWD7^s|PvNSFb#(+7jACxhFKJ@Xi3$P{vad#wq z-jrZjr?nQNC{kafKOG5S(Q^PnQcc`jt=xPM-ifq(u4$txLq)rfU0Jw2#4{VK-<9e<6ze7FRx%49+9=l^ z4fh+=d-$#*DP8j5ax)1&_h>@?u$g;ZKv>%cS95g@UJ{rb^@3bQ+)X z!|gLu_()rhA=ZhBjJY6WeFfgPz)GXwIV}h*Sgko78-jFD!iI*1X1ZwnCj|u@ovl*9fk2a~?7Z(_Y9sN;(={*TZvhE|< zV9O^%#q$G~wY@Sb-e_p=&%^A!mxPEdLTETiP7yuz0{Ef&<0U+%oXztq?Z>P8%9(1* zF*ipfy$+hV6`N)iSy^1^s796m+yD`ZsAwcHUhK_Y*bIn$vpwpS$9e~T^x5?ku30~}xZ1{Iz9=v^WVU1nxUZy{ z3^{ShIpi7n=qRZgj?pJcG4o`k<#A_+@Ypo*z0NOPl-0m? z>5^>dt&La3Y9g$Oq$cfX#Msyy1%?UzD)=wo8~h&rv^GYid=sSDhz5QS=7HxBo$ZJf zJ0tK`!u!azJjlv|cU2yR9sZwmx!g}Q3X^yZ`+ejA|8fgVR{L+6By>?H2;2Ifnrlk- z%Srndwr|j1dK(W_{_(?A#{2DXy^Fty^`_k6dkYTk&5@);s=9=3eBbusxPKpf>3H&_ z(Ejl9g6NBPsd*zwQsj(OsMX@jl5&^56;&JP37;?ee~+o)zL#O@|2XF{tB=HUCD!FR zZM6rhA)UCrayhh&>>Tt9X=p9#o*BaXbB!LCdqJQXLcm8hVg9mk{6giyuV?xPW32j{ zGH==J@Av$El-ut&!n+!=43b@6C%z{*$Xp6DmO<^{(opd)cWwhnrvo(gBM7{hkWh9+ z=C;jHk71N>@3Cg(V+};?na>w`enT;^E4KLpQUd8QK2~O`N618~0VLq|>bN0jUTK!r zA;(5fPGF|e0oYBwEE6Z?HG^BFLF$;rbf}Jto*2|5z&l(=!w_j{CZzpMzCTw#GCcee z%Ay21z81cPVg<%6;mj-%1x4vfsL0^bU?J!@B+=D8H*fY?k2`0kr(at%AP9S4(Yl3Q zetkNP<4YR$F+N42k-vCFHMpd~Y{8*`c>n0wrrZi&Oz-Yo&-fyqtc>)^)ig89{SsVv z_dg0}PWI@$s@)RKskyomxN-`dt2BKPvT}Gy`C)f*uT8_l9El$+p|O~<);2o)`MA`E zY+Alj`Qu5!cdh^ zuM2tazCKn*&AtH+WY#**p!t=*Ur;sbCR@v9<)F)%HuhTi+~WxSxI z?1F0ETlUPv#NoQ30a7-{^5SZIq6MdbmHG^ox(t$Sbnn*|A2sL0?_F_`9L~x5kZUJlD)`&s#E3u zeDNDqyMV)l^qm`F=3_S1TU`%uJmajSUTjp+QC+h5s(^hdVD3%?s7)Nbj#zkj#(1c? zwZ3BTiDHwg@eoGO-?5v-d80r6=)>^IUFmY=>H{iawuQ`czHduaatx=xo@E8$u9)dME5^2~*j~|+#Bju=TkIA%#p`584g(YqXkk6HF8G&NS9jtNBLDrTf8$^Q8&waW2oCA}vQn(*)_ak(NK7`ry;cl5US`rgF z)?+JL@3*FAfPdZH9e}B9FOvO5;H&$DQ zkhO~<45{6d>JD+2CD=#>>S_|a5ANALp)FqD-KE2(88?Jj50~U%pF-4ofZl$Y=K-bT&)1D~Wev zN~kP}aU44WeEdFv7de`)#W)Fd z=WcGCkuL(;!OK~%OjnaE%108PTuC~^22^FP_FryFsLJBzUQ54wgY+7!J%+Y(P%pe^ z?z6Ur+hL+Yu4rn_`-l_t#yMb2H`J$FB72kM2nVfTw?)+Lo}pHb(DW#P+7{Le@CD^Y zUyP6qUI#y}4pNElf8w$Aa_;t}4g2(Wax$kjnV!jGF6pHu$ENX&hl!?D=&M)x3=)=7 zxMAvx{dro2=4~Ib*z8Kw&rWd@Pb>Dq26n=!mo$`W*7vc}HSwF`dGkn|v>LJiDm>qY_2 zYrUN0eEdvM{f_zx)A?4bTIjS%>bO!xcxboFlA=lp_Csl4nv_?$F_Jz#OnyzYjd8op z_X38Ny!+=9T~Ur!k;EsQRM{ouWuL5u%NPGr9?$Ol9qKRt_*3v&_Cmvw;fI#DAA~`l zxO$U26<0r55GVkBbq-aB(ggA^8N(Z&Lt@XnayavTSOZT&iBAoF$T0mVhvv zl3Zu^t+|ItB={O5qN;_JH)kzW=k;^IM`TX~-bts@HwohDL$sczN!Xwi+He<2cqZs9 zIP^-gX|#`!emLuTdc3QVrp$;Wzz%(To`srF1dV4ZV2zwW8@Me4oI-cP&CA=Vd%m8# z^)Lod7!}lsMXfJ7%IDCzty;>`!9DevNAVZF|!`I(Wo&y zD)((C;Jnh{$Mn5N@2~ofwjSz=ud$qyR>tK21epqlIN}O-5O#v3kHU_g0<#BMN+vz& z55*iNd?(^S%aIOqm^SC55|9s$dv3l%8JgfoA#@UmI0Ru#;N&8-;Ga!|YbTkok-0T~BCz_47iOozlpvI+6?{UP)jxid`2%s1Satya8%Fj53(X zJPYzR4-7sNb_wcIpDd4W9-opl66~*zIecLL2R(uF*!!Ex!Su`&`iK{8|sMiW?en zQ9mql~|ORSav_O0U^6+E(SR;sgzCRF8T; zwOY9>uv zbg{{aFW{LuzFk>2?3gLQ#At&AuL7<|S?V>>xZMy1Q7P;&NS?n&?qeO8)kw11>$l07 zZdv00X?^yqi26&~Cer|S>;5b}${JuNL6DZ^k#cpE(fdOrMjgm&_6itZ9*7hoP&vH* zQ5Syv_+bgMF&s~QU0u)xE?g;1*DKA1mUpQvfcP|KH6!93lSIsJ=9*|~)kw2bRh9ep zIR`&za1P{7Es`-Y8B%`*ih0=7#U}-vxwcmce~6yhn-aux{(Q}WU z-GBrk^X5F=Vgb#0%+ej-Qn9G0l=&LA`2z|Q4X+)UcPIPN$yD?|9ScDKz2JH;z1og3 zNs5UhWu~7}KIDs^rNSeB zvf?z+xtw`$xIevg5rqo2!k-^3Oj{C!8MID9(f5a-CD!tz@!s$K*4iUqG;X#6JC2OQ z=dv=9GxYqo;gKx}exRnNhWDbSsi_l20$BBgY!bV(Iml{-F(z;ZcyN?j6Pn?lR>kkZ z^p-B9n`3=~PjRZ3ApD>UoD9e2njBO@yipBtCahv88L~GG^#}Y!c9Wg;Kk_dB4x$xiS})B3L3-%~)!@lh)$0 zhIldOP8n$8Y@g9HeB+m)Q<6%IB0D+^Y>__}0*M_W=aH=WTsHKG_+jVuRq_Wx2UeYt z_{Gz8=ODTH3sVkbYQ4-4pAoL>5)bU{?{z6{nmmUhB4pjhw=CXXhibBisbG!v`%4Nf z2q`n86A1g&S-c4%N#M{Pau`-uBKvcd$1cf=v1XgF9}88~d11SYek>wmUrqkGUUgYZ z!P0Y$kMH5y8FTz)Agwa)M{+Fm<-~$%@dkR0amIDL$V%OItWw7XNrVe5TpX*am>i~8 z=H1;;q#_YuThl=5IM~|ROXr45^I&PYT=okdXWJ@5XMW*ji`sGk-R}IuP2g$Hy8Gc0 z4o|05p~NW(j#a_a82Hgr@iOSZ*J)8N^ZmZiO-2 zSxnR_8HT;pQ6_L(<({eJAXs6w>B@o86%iTJ{z5q))To zNg?sw&0mzb2Gf8e=cP;a4Bq*_z}uwL+*L=;ESU`l;OebW{7GNsUXl~9xJ=Zdk+mR_ zQ>$bsfoP-dHDZAWvmla+QP3{8retMh6$A4r4G|LA6dBXvb+&f7)q5;io)peS>BdV_ z&W*JC3#C5$&Q016kM2*gQdD(1?HK_QXy9nGSzBi%~KVd6Z zH2#zy$7#a){>yHO^}ML6AYxSI$e)i~w&F1v&-v(w;=+=q-gXP)PM4gSQ#AD8$AJxD zSu{L-P-^8--fsWgHqCI6w>{SLx$xgLG`mQ+SGt;yw}CG`!f=mh>6TWvbEDk z+Sf~Fy*YxNwB5L#8G)5Szmo`#NdCL40m+{~=e!(DWu1e$pPdr#&K~?5xtN8VV=FND z?)w2IB!~)A18kxPkW&2Ge-cZu73OGvm5uL&yiv&lNJ-T79nR6O=rciki}z${sla%9E{u?5VfAf?6qbj` zxg1q1qb5*LB*ph&(S(0%@ediJV(TM?nVMKH1h7^dCWZ;B++wFA!KGm#CC^)Z+)c`6 zY-m(0y4Dvp(bjiSQN4o(9wQ;$U7xdQc{^WT2{2FGViP_cY^NTrT6@)^D3$0p-e6%U z)qQ~PDvqEvRIph<-eC(5_{+Kwrqm)DZi4WXPo1;D?=@+BPh4#a$n!#XT4*n&X>f{V zkFPL)BL|hW5S)OMaA1Q}g_ktc0s($szkUUi(hSoBphLD{b!w(+UE4!8Bdow1vfBy@ zEoc7z{hPf=UaJ*N%d#2Y$sHqXZ-;;9j{)L@0HhPU1h)VRb>~pR0;Ck8ItcwVmE>dQ ziS&%fz#^_?MP6zA-%L4q*EmyhbnO#Ct6|nGoo$!!Fvaz&qwzEy z=*MMKWLE7ZSA_Pb@;TaWrKfo-b|w(h<4lZ}Ft>GfMiO&KP5RoMF6B#(eaIG6F7-75 zSxoKlK$WaOj`Wy4V0hL8`ALY01qKrmk-=)O!=8#4_MDW0U^K&#S!00DE*@UBRIndj zmxz<+bFj0oIWF0b!Q8ZE=r~1v;$1bHX~kSt;Y*5wgMTEVT4fGT5QViJpU2MA`o=YS z;A%S&h>8G8Jo1uGc$-U)V?D4-@FCJnXhP9qs`BozF@I7F^Cd}>oRIQyprLX#5emz8 z`7rn>>5JmA%av|xl7mI<;NFX-Q#beI9#Bru>rq^p%ULbSnjPtlIXGq>a^aOhRemBy zNgQ_baZ>i|O=?$F2;I9kk3B@$e~7MC)^&Y(OXJkz17iJv??;sT>Bc{qzT(r zl6`nk!}VK31{*_}=_*w~J@D;0Xicm=KK(*fFiJkpdEM$|JJb6F_!%azR&{-K-OKv*aWoDUAy1^Gf+4P zIK`Rb?An3vT?N5Y!2w1YHu{EXuuYKB4%j!}3soQ%h27`_03Om*Jop=(HT;rj(fvy( zhk~iMT+0&i#}n(W!65{6s-}0*G!#1#I!Ajyq$72R_Z7cu%xtoIA5Vo^IQ{KcIg!w@ zrEj9|Cfb5QB!?SZLI@|(uXR1cILQxZ!mAZy2gI!nCkSSjGlLMITVFlIi?)eE>UNsd z!OZQdQ;+c8DB{|E;2YMNXljEHtyHmbDkB_Rf%v9{k@CU`Mn$Ke;72vj;YC&tbUAcB z@=-X;fef`db@@$AchT`1AREnuqN^GG{nJM-oi6JFJ~`VbPo8jS=O-3pnCUnk-GzE` zx;OHgIhNptfRR%wx2WhKi8>~7?8WMst(Rcd=7B%55W@%A8OAEN1y@V1U%7G{h5atL zSqXXm8`M--!!m~?hZ8vDV9oeqlroVI{TdE=$-_cPJE3XbDGHpFozal(prO|FrR2$o?URm*?Ybej75TKxE?ZYk zD~jTi)Zy8Q$oHw{RxPQwZL&0ONi*Ic?w0!$m}z?L9jD5X1Q`DoN-xjjOz@pOTxCpZovTI;tJ3_5suqy=!FaLd77I&e9T*D=mTw!0XSZvD+B}Ad3f4& zd)?ZxqK=$YGa0(Ync(QLJ99r_?-_zW3~vjaNddjL{yv(i%5%$8OI4&t+X0SZsJ(k0n+en`GC29( z(iGz4%rf%B!GE8y_aoz-G(gXaXp}?M7T3JAn&wValD{85wN;G2Ea|n{yjmSS|Nrrt zzMB>HFXp@_Qa`ff8z@1ESQ1jVG225p z_4@6S)8uT0TJ~Cpg?L2Hq8@4ma^Fz)rbD=5E=%cKY`@nvc1g|LJ-gas z-Mh#ed^ucfQ^KGhwkd1Dqw}pS0flU_O}{cB`Nc53Xp>j;EaiVgIJ5IZtq#|to}6>S zX6sj!0HGNe2;7}LegLG53WMml{orf&@bu2gXciLdfWRR%L?AM4Rm~<2b`PPi7Me|Z z^@`|EJ#xfMv%-%!Ml8&SN`8Jtnc;aJ(hhUa{^_ht6(+KtKjnBP;&iI zPqjiik_Q34Jakjl@*M%e=T6CEC)^JYsp8xO7^GK_rlf}<)Nzq``wP|!$Yal*VRapY zj*?Bw!k$+at!^HD0v93*2?mrVW~bV+W$lEWd|aV(gAAh4N4Put+26*Q{v{Ip*)(9R zejbQ3!^9%=l!}`A%7iQiJ$!O}sMkiJtObE)HmG$Zlm@s-#tSh5tVuwSX%9Ewv>(fc zc=fKK>XQQ-PTr~8<_&9r?dkM$!Rm7kwYmZADg)#yOchc5e-fY%bnk_~RGjbzS)Arx z*O}IRWAM%iw$y15kYBWfgJ!jY zzX_&hd#m5cL8#crxrKOs93&{uN9H>cwF6VFOG+dg5tksF!!$a<|5$~Yq(zCd6H`5- z$SuQuI`WRf-LJAhV8?Z*M13`PEae-`rEFEzwk~=3BJwrm->)$Y6+30cy`dyUy8d8f z*7(D+qdW2RTzBEtNr`FJ@odF$2F`>Y(*AOQ4obOTS5{}e`ZYl3I))|80(Kj1&i$A= zbm?_4W*sc~*OZI}m>ZbpbQ$3{-Jxj0l4=`}4814E!8GtGMz;m} zq0&46qrK>LS_tljTQ7s+l9f-0Wmr%m?|Kxi42_Wz1bR#OXm7ttI3hVJY?$pKeGjU2 zQDR~sVN@x7vG+j!Mji~UQ`I+>vI9Ao0=3Cf zsI$yZ=fg2L=+!{cnbTI(A+r9*CP_9Z`;?+Ej*^)<4;o`LLzFOXnxWTrB-n0+?JCz5 z7PohS$Io}hh)5NNm+X=d$bRm&AoRz@#mzDC9YhGih95uXARw+2 zE9$fb)S~!b42HO?#Jcx>sKidRf#F|uDPTxL#T%GomPu4k*wdm$O)&peFD$w&scu7&V$=Bh?J4<_n3oi@g=XgF zCyP#C5@x3)!f97oTBr6p`t^^0tXgZx(=EUJlY|7lrkpxIwak6bdhcO&W~G?4zB3gSkBk_e%`!$KQ0V3C*c?9=Bi!^^Hz{zi4EN=iSNE?4c0MukUWoNIJp)F%pE8i|~UH#w~ZVcTx_=|O=l#>KVDbI6B&einKTzJaHb*J zIa?2NoTHi$_ESjGMNNe@pS=jg>o2y^8k`2g^z2e0FeAO$I_e0p2i{`? z#q&Rpe4+_nhe{qak>EcD;9Bx|JSj2pSO3SUN){l8&@8JZ^BRF$HI59MUYdqENnAOx1e3=xwm5t8_zz&&I#tj;Q%`9!^xP=+zVptB$W+ zId7UfOUlR?@9n=RRI#gV_TK&9m`dL41pJ?3O;OYz#(Sno9&c~Sw z_QTJ*FkBbA&p^^*5`3a#4}I>i^#Jpz^;Jzw*#^jkzQlOq$F2h1kId@}QU`yMrNy!Z z02@p++b9@}FcU*1wy`t?R(;u+%3k2WaumYhpPZKiG~T0B21@M{7;ZjIhf%#nz126_ z>Un@g^v>1pfj_k7e7I>mO{lHq;ePAX=eShu%%C9kjR5{194fhQ#=Lg*(aNR_l0Klm z5RKF+YvFo~JCOaiSxR*Ob&Zb8HEERZMFA5cHaydMX*TLD3(sJha|PbZT;i(3Vz)7UAM{qc%cxBFllSEeNn8+=tE-SZNX*p`_l5#8wGl zpE5xt_{J}UD1gXZ^Be+$Bw74FBZ`zs;I`JJ`~#BMB7b#do%sPo$=Vd??@QGhW`I=f z%>ZHkCx?h~0s4R@r9Ci#nv@i7NIDP_6HG(2-KT)R$<GBLIx)ljoERabB56LZEDln?UVYQFmc?(gDJq#o3E}#(p zs%r~JL(I;&@2-xIlN3)J!Fr@D7fkjQhh(PMXs8k)uG>IhoC|Y<4QS<18?&=IZl5#6$i&2BzX|x+A~e$;_`>j5 zRxy-8#3PszUKKuc;@QgzMEl>lC{?qy`O5u>Z^kY<)n0EEDz~b1CZ)QRGI%D0FnxbE$LcV2)p;hi*G78D4y1@fCjz&r@J|rv`qc0 z-Z65{Idvwn5Z_<<$N;tR^Y<4)?vWxDTq)f&3p%^55L?1XtX)UTB8um+_0Ec@y+=We zkGnRFIa4Q<)D_FdhXno;UWx-2wWaGE;>W%#k6mvktSCMd`{aOfd<~)kWd{(MH}e$v zO}&GsNGFHd=Xm>5<={Kvv2=`ph3+!3daB}YxS+*3RfXJR1$MOyP@-%NV{m)ku-}2S zMjbg_fJDxDb^wH%vsyzu;Ci9ZeGmLJIX`oN_ppe?27T}cx@QL*l6hP%So!`|W&@nWyiH;_1zuv;8MTbf3ds4p1B7I z0ingxD_6sdq$R~-Vp4vMv*$9{>PsY!v?wdigqYPXS&lPqN3RBsVONFks}7N!uBOGRASC^iJhIQb>69FR&$+6ecn5uBhuqs z@W=vyP4kn!3#RuR{`gl!B1^dk(_2$4fF^2C87jAD5j{7}ZJ85+I<8HxK@ftAfvW@b z#BOhZt{H_hZ@Sf<<*3JH5Do{()_phx`!NmfDRt>4VS_X_5=4LYgSEiUXyp)-^l(OM zVi~68g-ptLtI110LJRqF@@5QTV04=YcIec4}}{lKqTy8tEByet%scwO5%-=z;fI;ZN`VSnm;+g0zI+o<-FsRacE5s&@Tu0r;FDjZoIVmi$I=u)RlY1Yf8L$Bn3^KM#-;$^yRBvX zQ=`II;CukVl+b*?(U%Q{v(HdYby<5r!8O z?cYtk`P2NG7@xqQ)9K-Mp%6YAl0|22_c)cQG@q*HmD_CXgo+o>-c5$?lLJ&?CBKYW zDr4vJsc3fS>D`mYa@wYxFI!wyRafu5lMK;F!4PhbESL;=z1^Zf9U=h5^;X{^{Wc<~ zMMwf`n1H$OSdk^j%I=JPF>MY1_}2fNakd9&5OX50qI0(zrJ`S1j!>o?b$P& zWxs$0$bw3D9Yhpk6Ue>u|Ea1oVVd;cj5a|owdB+#gVgAH4QAIBM&9&zI6IAQViYhE zhFkS+h-N5zQVOlQx&_8QPN=GOM!6oajgqcZ+}rA_LS_Lp44%6XeLr2t=!IW;%81 zrP+OCH1rF~S*FKI`5lLwROU-Sr6R5kp{E0?W3|`|N-VEty`cT|@@;yT1tF+kOlnwpQVNnyjygw7wGi^!;IEc}R7 zMiH%<`!Gr7A|zo)c~(vdOE<%hToTtjxqBF-rDP&=<)$}?E)`*}bkRMEwX(UmxygsT z>HS{kKWEgiaj?GYCqZ?fuyk90ZiVSOT5h)9Px$`L@&J8C2V;a^gl4H3*sczR zsmBE(go1h#jR-XrBnx326S5o87BFuOE9I?wi-_zY2?`OiPLP|gr2uJxtS-IAf4KXp zfQkPaA2uJ95NGO>#!98h^8|2wZqcDSDcOE*9{6I{1K)xc86g4n(%y-rKtob zH9kgQ@QIL=t=eHv5J`jpx~vXWASCSihPwPF1;}M4C>y&{;)r#I&TC0myua7jty4w6 zW)7;I?fKvuL8B90q!EuFKf8N=z-W|l)>LM`bwxBzhlNpc8&qn;?|csXJ+K7X;z46w z!!PrKMM^1}x9;0bmpAj>X}=(+4svn$j03S;LPEXP+IW?1U+zUrnHHg06Ep-*Mb6?~ z3MW93KOs<~NTcm63B(x+pU4Zi?wx#|Xw41=Kbw});a-~+Yo)^ziseu^8?jo<$ttIE z8l6ZYK)w(aYO+1ncO?Z(*ePWnxs(PR9&5F|`<=4N*tNIaNE4xGN#*+jPW$+Fj{sa# zAP0%A-uu&Ze|$iUln%F`+pPuH2tY>C4--EU*+g3X2U#d!fJp}upOcGAaeoh^pzv@87@Off$&kMM@TEP&g-Kqx-|k31>~& z9G06-&=2^HCbMKYhAKm`YWa0ZyG7UHnjv6F$1)1OwX0A>cBhvt{fot1$dn$!k zS^y`sY5`VvmbY#r7|`Z4I=Zxz7>dbVnm)LqYO*`)7jn!m~jKo ziJZ5e+@(0S-rLX54@rC*sTb@!Yj?+c9tK?4ho=a@d!{+Z+(ZiNJ82mTg!w#*q5bUf}QqhNlc< zb%N#gp*O$G0>~}L*KzUfcEE{g4eLV7jTzkmLBb;#0W_n}^0vAy!@kyu3>UCdOn(AQ z(gw+q^^7bpc?x(-ctpfB%v?zJlz$;Y1i|B%Fj9}Du(b0{&qvxeGCihIO3$Cb|v#75q3Fb^meRKD`Nb zgIN_sLUV<2*IV)}6fV#qdRgaLZhG9?rU z`@86Udi)}b*mAtut3?GF9+8(v0wVJJ7KUqyfnWa(i&50-vh)l?3z-Tzpg(Io2to*# zYWSw<1c)qUZBjqHnxs>1#3NR^n+^F7Efh0*W+!A|YNeX6`JZ~#qv-WtxW=i943W5G<6}fkGiWhz_L!VXR-rI?Cn2=PFWtSp{Rk0Wa*Q2+ZMYWpcw>2{@zj1VZr^ z>Ij)zcZ0%Eap&+Z9gra(L3vozb+4^E1&G$71r%tkoK!`}*JuRBCWgH-7Pd67_f^Cb zl^;xIC*b<3V`!F_VKw!Q1F#>#++nNxn1?9zbJ!9A0OP0$3=Gu%9$sWQfy6GD;BzB) zJK;z&hg978m154v??!Zh$f_ovL=GHkzFG&$me%3s%tZ^`dmuZ>Ju=dS7W!TsdcG9# z8V%c)5raM`p{K6{f7J`jIo|H8w{PM7_&i1Xe=)2)@TeH_!;rh6AU;fxe+1n)i`nPsAq~eP z$}p7Q5iCrI0;^bx;|VGfHE(y|`L_U;Bi%Ov zsSuI@jl9BE=BkUx+>GG&7cX+LlqwbuK=SIwRlEyybQVI|Zu}R~u0yZ;%h~m=fnUjX zx!-}^spFTRU)l87CpU_tond>@e03yz4U96v*R*o6@!khkXqS0l%)mSjfS&|;m?4q^ z@-Ny5bz?o0MfJb)6mB!F?os9^QD0&uLyC2+74_a(<0>2BmCAr7q zE}fX8%QPT>(pMbtp^MU&PRSC_S71r~wxgXs@1Bk{2NtPlwYQF#3b&ufl1;faTj zKMzkog1$YaRTnT@m?jqHv8-_fk zysHw+x>y3<)u&B;%bzK(cc;^3JPA&Bk%1ua%xf{MvC0DiP@f^2j|LPI zQ%F6&dF}f3d({&^jHaL#ePnKl;?6?$WZ;9&hS4DsEU3=&;QoB*Jr7IEXF_r;n~;zO zbb&08Tu`_TfqEhvp<9JV90GtUtQTPmyGS#=FQnPFt%3yWmc6!mZ39!SW}X4JN;$Z% ziXHyQW^t3R2!llk$j_EDh{w&ei4yI`&B|J*k>uu7)t9NkiFOenFmkY}nXW1$ZNQ($?PQk=(FV7c zVSDTXr$rWL+<4TpWYHGoYjP;i0K6TRGJiV*QappeC6Rs+vunTaO;-fx< zq+JpgppXY#fBAP^Q^c9`ytNDj*9lzQ5f+t9(;b|deAgDpgPNLK z%do2C0aXs_24wLezxKxPH@W$RxzX;*?TGCOLwT?=)Q+^cS#+P{j zBK7_K=pFX(6Ev!VX$7K}YVDAr1(+mL!csy%Kqj-1*EQa}{R~_5I-td8&j;PP1t+`? zV0PIwGdlrLSi4ONR56qrV_JqDu8WrchXr`0fTE_QTM_p+j05+Eai3afqE5lCiI}l| zMSvLH84mKz0mp`eZF#)d4!M!>YVh528re(M3u933kWD^Pizkfi^b@k>+}h?t3~kA5 zzU&&=+7E%_h>SoyGB7cpn;=GfR1w>AzvX=C3jC!X{(IS{Dn63UAA=7Z$)>=%Nvq`E z?|lE6-jQ?D^+|(a#=@EzHW>h<%fH?)yqpt6qfQ#LKiUuyRH9w|^*L`;xLrL07l#$7 zBR2#E1nqI?*`m>|;W|p)f;NbjD1HZV-GJx_3FQrY;j%iG1GG+4H^eIEQb_LA3I$ZJ zd9!UjWl*>^D)?lm6_F64k^CE}P=m!70+zyrF3LZ{iqeSp-|-C)Y2xleUal|yhn9cP zE4#i%XhDDTX*9O=mJb66eNYvc-LHVz0}9EO2o7+fHCe!N;ivY(vS?HWgx07>mQrN? zzVp@H<3V_M*XURN{&*95aP2Ogmg<}y`aE!MKD_`CB2v>Z`T<|; z(4})m8;avc_TyQp)8A#!CV`V8t_%eYX}q!j3bNFIsT}X^dA@ofzx=>JJVXj!yARhu zzUC&3CWAtpiNYM09qRS)`fj&k*a}c=I7?H_yJ!~>f^c?d{K?5?QRPEM7F17r}Pkwv!|fkp@az;2cw+%{?o*^Zh4 z!TRViG2tPw)iy?LDm-OdWYPvmGL{`vo@Vn>WYu=n0TgL(hgW2sna%!TNgQUolK z_I7m7=Yclx@49Nm6*e|qKY=tzD9?xNtxqAB0KS7C^0NssDIgKgJgGd-c)!4ccZ5g1 z@O0#VBIy<#A4gP^AySL^#kIyyK-n=(3%XltSPTFfVpHJ{_`v4+1n0c3FfZqBY|g$(kV-bDClW=5Pj=$+Rbr;FQlU)IUx+V<5k?hY`$Kog{ zD?`dx_QAj93>e=pb;Oa8^{_LSO$TISUdiz1m~5-CKn22IdVRtfIcbp9+;#>=-(iPVL$dPMl22Ul|3VPrVOf;V&+#Da`PTYbl?0+Q%euIztxccx_ ztbK%C_ZPWd$6_ov_daVZ}Z7 z@(~C%H21Fke`(eew*LP9TL6s@yBs@-A>%3l2>7lSHisa7qZmSyr>-N18$m*JZ9=hC zmIeV!NB+W}M^XdurUHrIV^Hv{;a`CT12(cX21MP$p_zS+-2?I-KE}jwu-rhB?2)Mo z3wge}O!`Z>A{77C4fsCnAtV)*mi6#+@X|yuODD{4$g$905ukTS27s}`oaSlSr*cii z<0Az2V7G7`{C+a-w6ru*Q714M+Q6>2K`kr2<^ry(65U-`b}p;XOL~g1D!4|%Ijb!2 z?lUp62_5>S4gWuEeF;>J`x^JVce^waDUxBE3Q4InXs~h2O~(+4ga&C;q)oI-a-0lN z(VPwnNl6+=cARJqAx&(Qj7g><`hL%@!~MSXwbosC-L+ia-uFK|&u@BOi7XIS_;r(G zt<~holWA}q9Ox{r(n!DXegzJ@aBsoB^%v&##Y4|J;O|M7YFeMEWI4|3 z;-CZV<2Al6sYD`*G{Po{kw^qxo zH(r4Vtjp^p91eje690%Y-fre}e*CD!&;_GKH=*y8S|eXvf&p8lZ_97o4PXc4=unY9 z;JF-S>CRIG8vYVUpf52dCzn&|s82oGTNB3{vzt59XIc43!}%r!tAl z<)K4fKSD{mbEuyJ%+@Aok)_kNW4&man>!@gKr3-rYKoxH7dzJd)&bSdC@g?CR0ee3 zB>zIz`nkx0uu0l*qg{PMx!J&kK}!1CNL6d%B18{%1Vx`IN{Ym1HT{DN`U=QnPCz=S zL=*Ef^Pj79hPWMz(^(&q05oPdJAqibzPEq6vdY(l?uKR4uDl#4IbcBF?yW6Es@UkY zc9;4p&;4`e1PtZ0(Zt^SKsNb*%dlc~BGwjrXzau$pp;xb6`n=kUTeM?FZx4W-&Klj zRxBTa86wZwrdr4*7*YMj=~1)(6-EEsd(o%otmZavfN_>gxDdUJF>ktJ?jzyn?FPh| zT^K9FqN>Fz*R59ljhT_pSo0sBmMusQBK03~z~%`gLOcE))At*6ETt=855U=qfmA;x z{3}0y$7aPxR1ree@FH%-1=dZDO?&?Hf&6mN*fXF9e;Q<=W{St;kZajhT#++uVCFyK$ zUvqe`24f;ACAGS0Vv><|e8~hFS92OiQIbXekSm;!8{%sPD{61jN=&3>(8o>uxzO=0J@-a6lcJ*yw1*4j$CZWkyB#puIF0I$9p4N2`AA%j0pn&DPx^-HcU?= z!ol`YvwRzie;NSCYec6vJp+)D7k5R}_!xuID6QFR`nK20v3TWtWNRH;Kb1TZ55sNS z`0U^Pxn_-@La`4tX$Q{zePczhHLP%h{$>%TFAN-M#MM}Z*|E1rC&fSiPGeG#_ax(^ zrxc)<9*)5S4oO*%EZoj~xibaonar_s!%CGf#mHN75-V@I!b&tEks7A(OE=)QMhg@s zqjYpe%1G|~1bSf9^{f(fET=%p z%ak4@VB7QV*~)95aiz)nDE@xu{|#IdEh-wxp(=aE1h*0MOpDL|d;)tLtLOwMe=1<< zzU7C=)MN7AqN2@kurIc-h-$9<`k-g6(wcqtu@CoSYnOSsFeDwq2F}7UUbCOKSd$i>Hi|-dYbKXZ^S;#I5Vhgh?0H+ z4)5D@s&N;JlYiWcdVlV$g8S3oxdE*Nw;LCH#5 zR`wpU>b7CFwMNEtkCW88^)@?J!F`UrG4`_M2kp+CDqlr8scvVX2*FGT!%o?Ka+eA4@O)XJMd4? zJNnp}{1CTC6gu0oq>^#Nt=S?|WA-%xOGI1v4j9x7*v9Is3X@0Tcn}nJBB*yW5w$}p zEe{PIXV&cy62mt4bbTOW zYU^YdmXcD8I|QVR_1QHA+3D;k^{Hb~q`wg8m- zl~IaDf+Z#Ec8MgQ$8=0bgTx+LD$Bn32Yl!BBibu|=%V}5IT-k0hQqoul-Le}S($}< zWtFo-w%}A7pP6v=KP(`+nQHDC=QF#WU-c0Wie+zx_oq!EN9vW$CsG z{ipmLld9z}#gFyj&Wf3R=j^hya;-|6cKmvh+uxvYJbLt~nCB69#d-MAB*Tbrqr9y2!KG?@cqq*~N^gEZhf(^?o7I&} z@dTG#YmRA{qIM*GLepmGG)Jq3%($t7E_R40eT4p|6O^s)uLgsPpoug^xR6~N$4yMz z$mUUX5|Iok$tggD<hTU{yYPrFtJ6z*>bR0wgvY;{C z7-wLuL3It2*54O0Ou*!;Av|g~^zq-gwW17TF*k*huj?`4$oEi?Q1($PVBxO|{bu79 ze7=ugoeC#J?%MDq8!R2#!-7m?okdY;ZbHTc9QVaZ@3qt zpS>V6KE{BY+;Z(3R|}f-3q9EP0A`$E@}>t@4w<;Pw2WK?hr@0@9Z9t(Ko6}n>Vvnn zMz56hnUd5c(YHVx$}bGiq{q$yjZ-%8@qOv7T^;MG^H1u)M@e@q4q^N30ED~}Q8LbX zc!HHMnOtjf`S7gdA(P)s6`~o`5c}ViaH0_;FkINW}BXdXUjHy z%vVj37L6#Rm~636L{pKooe%tthFTQN28cvKy~2Yil<%imk1?*t+=ovffTWG0Ylj8A z!UzCHV|-s9E`Hy(>s_;?1ZmxK#^2GaF+B-*tJDkM)dt!|Nl~SRjTeYHH1If|%Zrf8 z?Hh?pbd5ji*OQbI%<8fSBDFlz!K~g5rn?;W(}aHJigH(yfML$1a}Zey?7~GbrBX&q z!ECJ7ZOyV@AE8D>9j1||mqiJ%ZQyy`#PQ72F$P12o zE-H}%dM+EVx-_iMpE5-o!*boQdLpf247%f&J0D-0ivDi3W~;>GTcNcUbNAb;+_!^5 zk)pSYM?q*t6O9XI)0muj){LRtpg}A1yqa5_h~h>EGggEnMg39ki4+aO4Q=OYi=0e9 z4Cq@ag#@-X-FP?q1a?A$xnSc6tIEZ%LXCqH=mwxzka|xfc>pdtq9%_Z3xB=!11`Ou zA_&rD&96P?tf7}bY|I#K(Q??jFU9dI7g(RQ&4_!joF?-L?TLgU1y<8PaG)Y{aY%wE z;5=IUO&hQwZz$lD6&U{Ot(Vfg{$pi`U{Jm z>b{JWzYtstx0D0IVk9Em*c1kAT9Pv>#{VeHfUL*W@@5MN@P|h4GvGPtY7DI-j=W5( zz396ajR+QKPg<6GV03_pWn7Ou!5o*W5v&)Zk46rQ-PDkCmL!0}R{_rk^}XbPv*O`Y zC{2=7l$9r%j5P7D9I>g&+GU>e)z}C1@4Td$rgK|g-5X)(mGIU8WpiJE@C6ggOGgrW ze*Bn$nv-R82?xL`&ApAU;HMtq6C!g75jl@ew&~QWYz|vkr88B;L2*|LuzzaaaP$~7 z49O@`hE;I-puWET{mpWcf&2MS-hFD*LnS!m_aM}K)@*LyV+xm0_^(!_L_4aSih(YY zAA7RVc+)61f7yWpbJdV&Tnf3O3^d&Q@TU&KvcBE=HDA6z`p?TwB zGZ%%##=TrctA$opwop8qHVjz-o|r&(67Gm5kR|tBU1So5sHG5@SiNzzQPa@#LD(N2 z_C``2wisqzi+KUlG`^#R8F@`nc3Kn8`Ojcv%g$C7q~YjcHwiR;_C2`ZIQ0kdl!flU zaM7YackA4KDLxg{%mecwLz=)0yTy6UmXL5xqoWQ7#L?QA^>-jVFSSy?-+_Bx7P*f< zNU)6HZ0YEXNp)&VN6jN{iu@(YVGoAA13fqNN$5 z%(_oB5}~Ye&Lm=i0_(8jTAYBKY$*OCUnX2u|!h zS>ay2Jud$5t<||kI0B5TNR*3MlyWOdrpQpx5Hx;*IzM;UtqaHI8|^b*M_yQ}kTxmMvRC^bPb|;u>$UO!sG3%CFJD;?w_>0{EeK(SQb8Xa;irUo3CK1hSra*$HB zAp*>ZRkTMQWHz+MW*wR@j%POnJfHtZ|dMH9a{#2z2P^2 zS59el4m%HWXZnmrp4v&6?OQLC0;?z;2nLNwGj#*IxEX*TV<@el@BkjL78RG?HOR9T zHDdvsK6PqBL9m-?ARs?Z*A-9$XK=~;X43_*;Lymyf&1(V?=(H%k_~)U+DGa4B`xk% zo~3f{KqcU$QOoWC!!6BwOi|24Le-ba?;DMfek;fAYIjH)4`NxG*B<*OxX|Iplblue zVe#s)Bt<)UkgZ8TOF*U2k~9n^?fG-XX$cTtOFxE3cHU^uE$}QWP6wh?7wf9uS8fWP zQMvi#qEp!rN&&T^I6e}yqYlX!d5~_@UiXv z`%FLtYx%{Y2MTU=SR#+~PmJbhS(GYS+Wyd(J1aKqG93|G77}YQHBhvcES|)_Lon<{ zH4W3N1WN)f@3P8Whe4jpw7bR$5Un*yJdzA2B`05DHn;CJ3YXL?b8t-Yc1z3192sS* z%E6+FJT}#CoXNqF#`kisYcjohSnK4G^q;QzEG~M>wG}ir$SQG)iE)auj86zC1-tbp zKEQ*Oz+N%}YOyR&lU@&O%m-Ml;~D-*Brfmx z{w{BuxrOjiPE<2YpdsFNpqZ7+%SuZl()6(_af3UvhKzYpcE@hFoV@(j6*tSkWs8GC z9v3&MEnKoBQY}U*1EP3a=BF0!u`3U^)BJing(#m)_%mo8wy&0kpB;*ua1iYP_UWu~sX=>gq@Zo<`^RgsD37kSxN|EfAVAIUpxd0q{#2Q9xZac< zOvM0P=w~1pdhzm!8{$GKO5pR``ehwjP`Z%LlG>bK5&`I5q&t++S!W%p@w$tk?!(h^ zgKKvJ_NR!-f)Y>)8Cep7TD^mIR!q6at#@wlwxgYm+KL$tezFFYMQ1XowZL!88qBgx;B!$Uj78=^qe?~4|sc$Dta0Xj2o^qislB4trd4G^B_LFuzAjKu(cT} zTN0W@#e0;Ml*SwC$lU<8H;<{V%Go`07t7G^r{H_cJgJ1HrNe+Vf;N`+(G21Bz5o7N z!l+;{S-G=r@ci-X?I+J zX7d-99i5oL#C1z|>DE@;QjZbLKirJ9QT!2T&PnK1E41bx7@mTw6Rkn4N)2&_Wko-} z*uOE7+OCT7E#W-&EczTpk?rrdDlXRlEyFa;M#1Qyo-M4>S(q?q1BtNnaniz|^^7)L z1@Ui2@hw34kc0Epduq}1yz{uc zZw`G|+I{XFw5M(vo7|4$B7K9nh`~thmNKBx>pnxGU>?8}LaYOB;ku%U1O8D@pB}=3J^4{h&)Pv_%)#*>mGvBM2zJCyG%d#>V_jFHp&i;(9J)O5Jo#{%e$!K@ zX@a)cWwa0dTz#?pxQ3FE`#@q&zKW7#K6(OWLC-MUIKdJF%BQ8CUXL2N+?phu8Fk00 zVPb@S7Tlu$;Ovr-@7rpUGm&X5E4;2eZOtmejsdQozGZLr<w;vd+!V+LHf! z$4-~lN9$By5~@Ju2CHKr})y`;BzTp^gJ}w^M#?%m|}Nk*bDTNOQEK3ae7g> z1#?V_W6>yHhOyQ-n(rXowY^LB_x&l}5fJN6q7`R^;qMuPOf4S?LkBVe$C0X{Icd^D zf1SBHa>J%A-%T05PRG&aoq_I(%>>}CFgx#aRs-@53*33if&}<>uE3lEkBw(8a(L%F zroOpPc=|Qok~#Ff8g0b)yC_OpoS?-WfrCV30dY>YXUZJwd>j$WPc0nGqKQ5KeN9Mc z(e-g>O~3@4f&MetIM!-%Ukv=nyN<&IIW!jb$5n@CRluheJ;uDZ$FKf0jsp1}mSCSe z7I>tF^)ZcD|9ub|$@1DEGMNKFDN+qaD&yUgnj2%7J9Jy+QREe+E;9V*l%J>4?30a> zyGoW*Ydv0b6GPy8#W}H!w=+J7VY1^{~J&(=i~5#*)Ys^$YvHC95K=xt0>V@W@)>M>O(}bh8H>H4stI)z$aBAFkTDu#oAt$ig zx1aUoTbt^wT`XV(uu>+@+ODy-xiAYsXC7yFN-9GuW|; zHmJ+r+5q8ghQ$e?c5mh1l5aYR_9dV4LYb`NcF|W+gms>x93O>P7$4X^>v1S-cjwE)~Hw3*I$! z1i4y6eP^b=^2C*~<`SEK3hiQ_34?G!l;%FW$yRAin~jCp z@a4Q5-yH-UT3+p%L#~p7VZZT4&8wpift058-}upJT;_nGRTt~d@AevIVn3g0NksFp zD&4-Zr22Vf8Tlk)Vusfj_xy;0;DBLvo=4Ur>awNKdzzlcRZb43%WN}2A!WI*$aGli z6%iG6irT({JX~702iYZiAV23JUqY~}a;I0?lO;{?MS03aaoC6s5xs zw9s7=)Q^4v%~cMPp&H!EjYBHNp{N~AmSc(G;#Xo^vo5{6CBJ>=4G7|GT~RV6bMejen#JW?X$2E4~Ce6TP+}&s&?R zzME>PraX0(jsGgtr=BVABkNT;SCBy@$&~Jdf!h{*kJ-$>TyM-m)js<{_a^)!dE0c1cZ~9P&u-fs-@zcG$z4Uw?X#l$)k8h zeUF6~##KBBbGpQA?yEy4?TSnrnyx>gjCI-vza-h@vm@P(5Ucgp=Hz^ZbYnIXk%wb6 z!Xc_`T8O^4J9Yi8ZZI25Qt@D2BholQzbfB(7)GKf@Chp;Vs zu7d%47oH=#0@+)5rj2ZE0Or{@(KR@wVT#IZ|FHn<`ILb#YP1%x?9A`KIr zJi1@_-zV(5H%Cut7^}U9hdMFwEeUm`1s@6JBj*E#x(C0#@>mb#@RK~gz|MWEq_9HQxV}#)1+>0AZqE-@_ zTt60F>guPX1bWTr8?$dxiZMXh(rNye6JpnYM&Zap(gX+;@;8!X0@rigDe-8%PLlEg zG&d}m2hB)^&G?^guoRJUrAhRMpz1>Ia>iIMu*=6d)=s_^Nku~n_jKGe^2B z%PE8>el$jK96SVt^I4k&bewprIC}I2R5Y!UdO1#YOsbt*VhUeaKn-ENGkUA+J$CC2 zAwu-u1Tz4`468n0*bH4e;l4>^e7!nFz!*IMxI2_;Tpb0W)flT9cZyV|IqZ1>5N2gC zYJ#3^2s=H8M$A`NX^JTjmxx}39d3LxvK^^F53(~#)O`MO`dt{6pT8xpb_3$p&OQN} zYI0@|1W&o6wpR%>m^K>6f#AhyCQ~7m^4GbofAx-!6drBO_S}BlQzMqSv&`CTBGX-y z(^%A5uIU>Nnqw2H+#64>_`f>`VFS`c&Qq!`)0u47;z>f^Y+!XO6MIoZhR#&=Th$(Gscb&Q4ZPhBo$}~NrK0d^qDV&SKWBEUS$QaiH$jaa;cGf`i zg5{|zmaB>3yW79zUbNPlo*@VXJ5nkbM6yXexylIlWL&S3@k@N1VbPSk;~)lQWz7iW zYN2tiLZy>Lk@~pq?T|zJ`Djl!JkC3&nd54M&PE8tGjpL}i z3<89I2)ZntMTs^El?m}cggUnUhFM8Yl-KcPK3Ay_7xC%0jw=ID+Y@S-9quMs?vBiZ z7C<&AkYar}!fpIwUPmHMYxixW*B^pMS#WSG5BT#VXctK^lLj;wJ3f#a6kl z%{e4wViGbjKkJ-LO32%Yy4fe75Sx4U?AdGyyi}i`n4o!{Z1PE4q2?et@x$^D2*5Qq zh(h#@mm=sMmV{L4Fwds^KS=@FbR%$#rHz8%s|?6BIEq@G@U?5n&liy7CVTMkVW`5t zzaxV!Q}X-!MY)~HqJPe`3YmCUp$KZadEp1tqd~R~4Tz6;dtsEpP)&E2{|oEKVlaca)fO*GE`@s;qx|FD3)jwCa}UTIZEk&UwT zPa^D@(nN@m(^1-u9_6bq(S%Dn@4^C>(Og`i_n}HI*eg?l;X`FBE#eIa8C z@bPHQ6+mJfq1juHo81rqN3TSGLi1tROiT6AiA%^3#rMPgFYH0#N0 z^0Uy#rUHeM6MT#@$P^>SBnlHF#dX(%f-nVLDpit##D_7iXHZa(1{svbGQF|>kF;^_ zqHd1F5Sn;(X^!anFDwN@TX7L%S~ju*q3%;nT1uw0VF5S5=lj+Nv0*ZTtB)?PYjak7 z346zpQI&$h4A&KQ@=VIdz+8tU_;E=^jBmD@En0)ic`53}Rw?v_Vr^Sxs5wL+W5olj zGk7DIwg56Vi>sKou5km*3Kq_GAh8XRnM|*;YY4CXuao@(gK3emv6IDW&d7gGzOy@A znd8fml6pNyOlU#lpUUKiuf6$zugn2+d>03R^ME}0Q*1%=|B~@TfMr0jdWP^3OtaqA z4&_d(%8N%iARP<-#A+u{AWx_6d++VXiOi$ry}e_C4yw9H-7K}5us=Iz>8`U=qc@GM zUmSm`boJOJf0Zs>Tz+)U;yFW(svzGhMWJlSxN*0tV;*>$r@aph+Bl-pch=V=zxN+M z^d>(^RE-SOYiqhxxGotW^);lYVk}gKW@h11hc76wS6^EY9+YGl$Bj5nh%noS9m4Bd zumXGPmWM+LKPEc`lx^o;@Nnf}uwit+t&tX*c}VsIDs!^8Sr7{kn3=;ET}Hoj7Caec z;9ZX?F(+gMe1;s)M<=BSxZmVeTLGs-qa;xI20b*qF)+HW3TGYKEb)|lz2%X?+rvt73TfzqkD8Xme? z@g?x+VFJ-cP3auyLP%iDcXr=&>y5-bhCM#&f*GR6GSOUuMX~Hm!zMDi*~o-g?;kQT zVVCJD0LSWQ8pM?)vL+<=Ko>!(C$?zqi^A^+-iSONyY~Yj>s^oWWNnqTvUc3Tmr2 zKEYKh!}yjzoRQIZ>eMMJDybXkIg7UU^%HQZoJ>erNYyVZ-ctx{4k-qJnn^0`RY>2G zNn&;6;sZmg=G&Q#-^>j+M~HW<0atrnd^6$}r=Xr-5*)90&+69Q-QVm9%_?O#8IVpo z*+bH^+T^`y_YD;OPH1Jg0hH=!(Df{UWMB0Z&Xw&V^_oI}R1U_sEYV>(|Iw^(8I`9no$W9xk&#?#D%a<}FDVh{0i)i+$5J|g4A0qnw8m3lQp z1tKRbv)w;-v_@xeZP3O^GDd$Uo9_~vE0ReCvE5Uc*vaSc$|EKrh9H6e+~F6I0wvsx3uJu9MRZmY&Wu9C;)+ zpb}4TXNa1b+HzJDOm1!{(>vqv%2&B7e=+piJquj`OWK@d6wvu+Q!Fx2usM$d(Y4Vc zEj))ICgQwb?vh{ifFX?-uB*p|3O8h@r2RpjzAIB)_0aq$N{z|dU<%z^d+sKf9D}`% z5d_7koB%*sk&KEr1^UP{BpOqUBLNKQdWwY!m*Q*=X6#HhDE!jkPNty{qPon+3}qrN zqYHS2dNuMmvC33HMHs@M6m>i{`8kEzm)_g`F{slSj&|{nU?;8jH~6OF^&XNjpBtwK zI>~*^tgSC2I&VCjUKJ{kJ}M!c1>*B0R&iOfMPmzo>DT%pjI<|?jAcK2x|QXz6!;H8{avluC+HvsJoIVQU<7vCsso4WQ&l#2m#2#3Tg+!(f5 zM3Dg@7@tR3ZyG-n>et696S=??XP~>e@-DZr#Tj;`yHqr`RAZM#gV4ylf_Jy#^kQX} z(d4$L_Mj`n`(6o?|98gIanSI0RiICF+S8~OJUnhdh&{62x8729Ev>6uoCp43h1V7f z31(+e*E6}xo9@m5D&IM*mT`&`P|yjp(9o$g;)LbcnJ~#a^NKQ`gGjBluR}#*s)H$O-ZwGM` zyP+qnr!khiOP7<|TJ!lLLE`OeVsth%8yX+-l9LX67I8-BNEgICNy-jLhGbPBk40}% z(K27X2Lj9i*A0s6o!Gq8W@+B0GpHTlVi>1w4@o|?k7HdeB0<5}x2||$z8sa3r0CSZ z9>eb^4=f4t8r=V`>aspZ!~(|%qTB)JJ#I5TK6rik``7o!738ZVifbP3_OhKZ9QhkYJS)~h4H@HddxmSupvuleLU$os(@Rc!1kZKikL$b z!@~r32FpLaPTEXkJ9$Yyzw)gA3~2cq>(}dqM8`e^5>$l2 zukgh6Hc)^=Wl~`;f<>r4~O#C4c!s~lY0Ax=_8{AVnrtSbGuU0_eMi;vId+P_l;8qZd2 z@_5&VBa7Q%(RDji(4-sj6L^-Ldm~5WNm@d9Ud}r@Ry&)ZHZ<&lbW0xqx@0(T-gB6m zfCGx6SD@A^ub>HUp7q)DjAndvm<9$$cocJf7knzIJ2o%h2 zMSQ`LOe&f3&s`a*<%qRh@Oc<0Q}i5t}8zcnp;xM?!<*M;iYb3gdNj^DtHx^5x8|vV1S2I4Q+ft#z$(%*D*$vb znJBvLamz*ngm-k@txoO{W?>y{Wi|WeYgoobrF~Z~u6*OkOTAnk8q6d-49?2R`td5c z=l%YmhGCY{o1mWW`$8cZ;#SN9AF&n%rt@4#`&u;1%KRVBzoa~n5ly27YZUXQon%)u z@~7}06#d^IwdXLZ(B)`tYFKA6{PvR!hT>l-;n8urS5y88xBYC9+KZSw=t%jo1+Kc7 zYWVaI$jrq~5@*6h1s?UWA0jLN=dfEzv^5>WS!K3r5l<_)HsWpUI9gf(H7(z5$|dD5 z29~Of;(62(r;PnxlrEtbA5Ed8rMo2aM5iqT7p7dCq@eQJ-nu>6_ILin0vvW){&bY8 z*a`gB@h(;vDGZs2`tgTN|G_sbt$@NS{ojB8c-o7(jU^4wbbdOvch|v_#biV3+4rVI zl5{_ev!8teI@+~JAnH`M-xJ9R7Ti&UPeZM9$kH5TE5KYa40rhFSG5Z;G9tT>`d68A zDchJL!hpDDNUYrT~Bc!V>cP>AAbQZK9YqSeS% z^RLn^3OpSWH-YIGue}pgGf|Q zSXUI-nT>nFp1=FWJSZ~nVuiG>Kr68l0&EVqG1sZ*x0r6Jff(<|Dl-*eVzYPON?MW| zr#C!iz??l9#}Ys-w5s4hh%kc;?TcfUBV&KnW$8w54a4P9&XGXEwC9G+rpgbd1Xk%P=wf<7uzE`>3(>r}+NYlOJ+$ z-yMf_uM`AVDe?88)U92ksEGepXsS5E;jp%nR*xhu64S*pN4X68Z2YR zyJ@TSAK6@yhr9-GKF3H^-<+qoglti>x4P$sy?FloIojyGOUEnD<}wAXnL@0r1&Iw_HZBl?2bU(;PqGx+6h#XEcaIM3v1&Gw$(?LJ=5W zT6mpTu+}t}Pt?$OgVyTkaf&lxe4XYt`2AFRE%@mC!ScFH-&^Gg>xahyy#b~bhVVN} zGRrIAG>TThgDN4syzfD8>oX1%@<#MJnuyK;N<9?0zWns!=-yrLut-$$uh(Ub#DKIUVZYan2tlL->T*O&Vxib z88Qz{ZG!)Jrt~1`XWo$d%0_?v4G!N9W{Cg?nU*y;K4<;+>THM)&=N1ki_mSFN$|W1 zE)FiWReT9bUxjIze`3H@8c~bj*zXhXZ2FmJm2AEi(rcsEuh+1#`7<9TSA*P2!L7L3 zZMc-k5@f8;>boI(Wj@5{SbNcU51bB5vtp2q05KirS>MIX1(FRonHPvtOs%u$2dWKWIBi9=M4JIabnYX=*jF4bZr5w%S69RIXg~@;QYSH|;$cm`yjQ2EDwH%R z8BIF9=iR*IR7fBNoJ@-;)w<-|i~jjf%31V4i8t}K57S$VnRY8MY`0h#%Ezf1bu!2WCpFm(hfbwHv65T2WSP!$ zykIuTmkOr>%OzlNPBHM&Z8(7WG=_I8^zd@LL!MpUcx(;(pC1kTi)-l^cw4A7W7ZL_ zg96@ZE;JIT(Wlyzx=qc$y=gMF{q*!FNL?M4pPw(dyo2Fc#RTUg;C4QVygi}VFBr&D zRsTaDfd%Pvn_hHzHq5AUoWQiyB(I~Ct1Oyvo%no{|44|`&31gU$)X{@V*0;Bx%SS6 z_M1D1<+|+s#9Z>~Fo%HI4qrg<$?+~Y#lADHU)G!a-(l)VfSj^AXDFORYH0qRonP#> z1eyRR6y`i1J&6Y-YgE8W*1g$ca47ag;V1DP%#W2xGsKxi@$8=J9QY~TuGuHJ7Y!3N z&ZF!diAC5GFvs&4M^YM-957_B>YAGBAAc3^88DzKWYh~Yn04IP%sSnSS7fs*tSlTu zb2*FOLd4g1jgyomar@)ROuCycQTI52N>c=XoR2%Qj<>44QsvRTRiO$=(7K#bajAA9hSMqf8H>Ye>Qfi+*HhGyH zqzP?}O1fmmMKhz$bjWFlIx!p54QC@I* zfpksspdOS$(^x!YHtPdxk_<-!i%V>q-Oo7wVcbf4l!hxvQAStZi>;Y?m)}BJ zN)=tmk%D0)hZ7&I9B!TOP)ZX*v5EWJKNeDy9DPJ4z5?ghPv64}lqObtE0cw9Xd2`_=r0gO5A z=s3q*{cWVOo_rDNHA%TzkD(|%nXD516+3oKFQ8Gv$O9_AmBZq92i1|Uf@ZAnE{t4g zV&Gb!yW*JjkJ_U8ky^I>jR=qT=t>G?8_YV2H}h}p%msaFq3fb%tQ82zQNZ z(|4XTk^XgM@u*>X2MmBd{1Wu}&h}{OocGAEh?QYNYN5q--lHAD%War|^UEh5J@ZU( zd^b^Grh$g8$c34OW+`OD$l`Dh>HQNKBEZPxCMl;haK<~=SNId#ZnQbLtQL4o`sbA7YE;#UXFCx@r%xyMskF_cuX+8G$KU-9B2_4vl^+F z)~hy}YoMb)h@)-)JRGa+ld1DteRF;;fh4b3lQIiMC1=>lmOk^xErl>3xMB6gz2-)9Kc) z2T55vZZGd~%M|HP2m23u4hJWFQ{~8$#A(>WM>8$Rm=Ifu*#O@O z%|t?w(D8ZB&=+6(>*EPQFHzv)hE)&J?Nvk7~>%IaX{^k zT%1ib`M3DSn(?3B)LAnk>sQ5#wdIc4o#5=BkKO2jvD046AMHL5-(ygu8j?Pd?& zR{YbI*w>K;KBbci@R)P>tUbKcU8PbXI5KBKeDU+=ckg;pxFV51GAybm7{!Iud3#-b zXW(8}p-PfK$_rtq1blc#BN_DcT`SPKB)Y&Ll>ffP?8Pb{*ovpDS_ArZ_5&AVG9e1C z6VGq%rZw;sHac;z5q0%z4pfXG)CG45_R*-?S+Pk|6ZNH|{MR3g`_h^C-y^Su7}3L# zD}mY2EBrmD?>S5%wLNGZ1qof`!kP;Ngj|BHKuJ!MPPJZ$zRaq7X4WML!@F-<8aAK8 zzS4|<8tf$Mz=~8VVMzMKtm|B0GpNYWxqPU&=;thJtcOB91FKbr>8UbZKso+})lc3f z6}ddFW$#*hbfwr;-BOmw3FtN09cd25(SiGp&=+(=*qt^{I4L)VLNZ={N?q7C8RbL+;OR% zS2cY=`(QP-bk`*Qd`58+T}EI8G_>s@4@ql0XenJqU_K~ z+&p;9!f3}~qQ%jKth>PKB)K_=5*I6Ko7SU7nGzN{;@N*#z@PtwGF+Q+l~TpxM1Tk0oYGEI|X?~2Yn{U6!4?sRHHfz|?=#HTaJ8VJh-`wLfIPjNlX z3z~^iGb5wRYNwQ9pvSwqA`ecsGUwY1wTBU$2t9|@f87{qG7EVJBpLLA*yFkW(E1!) zrr=I(aS)<@X&Z28&pd#gVor}?SB(s(LQFdz{yfq@XLf^MybKpEKf2(8IFpELU702P zn)WShnfYhytCKHjymQ|3-%=C{YhD7Lc}QDl30G<@LdT9vbg5G25?gVNSjQ!*cpj0l zu>n>5>{?a9$cx+7zHtZiRg1CT|Im@;wY6;G@l|80*CB%-Y|xl#OiBh6m78JzRWy1r zx&$84{C#plWs8MCQrkOqYdv}?56iu9boDg|Ay<$P8-bQ?ZJ}H6kZ-596kjE{W5DlpqWO)%ccCuBwX%c}sr*MCQBEGzERic?c3M+dNuk)75aF6u z)$uFDW({Rcdws+kdyQ<4C@qu>-omhhU~Gn;;)GOSCr?(ZJog01R&L;FT!s(Bwib1V zEx65uEC9xrs6NuK=~D=)Gtl82(Q=u66v!Z)RcqObS8z&`qe1rPO7xDTbZ12BWMoEe znuc~bys6Y$Wa<=8taWNxf$o)xUkqXCH ze8;5GrksfFP{6FfH<#=sh?^$3GhVfjbkxkU*S)<;N!r&$sX7^FXkQZ{QZk1=ccN$G z`2Kaad!yHvMj}a?bUb+!5$gp0bj zon=JYFRlcDPTG9uL~vm$4l;4^L34>{R0)%!8T7M9JPv#oUfFU2ni#L;7uFaPt=uWr zWaCIZ)<|AV@uf_*LO_zr0@Ls%jSrLC-kPMX7S=7d9k%@y5ro$X@0@Il*-dMzx zvGyph*}y@?*E>+^ERJL+{Q;~AE87>D9XIqCN;cSC|?Pa(mDegPYX2%jZUMyzGCH6PyUod883n}%$^Umg*H9=kOy6}m*-YH-RnR2{MupHIlz+JVbG=z}B z*PoF!tpk37->hV9IyP^5TO)dZrZmjy%cklIVw^+1jFyl>LR_6+cDYWfz@ErgevW^i+5^zWOAq>%y=@h(; zFBN48jNv}21WB%btUCp^uj@#};%ny7^wDQj2jO@&Y6Y3?r9Y^C$L5p_kUNU0U zjA13)#Wj0ZE>hfdwtruC?Ik|(Uy0HSbeL!oWtRLIPVD>)6rrmk}Q9F*p^2co@LQk5|&Zl7M>or3FL zq(M>EKHyh&2NuI@!3FNUU&u<>Bi5VKmUv&WTj!WXH!82lZ?Qi2hJUuRKW-{ zENVk2?ayWsjT!}CF)^MHHc)CZyiL06Z<5HN^eR-6XCZ@PGnr&X?E`fXS8;jA=gkGh zfE!w!(e04AP*SL2VcT};?QXx^tr_3+NXiMe za~@ES?57BxP+{Kl;oyx%(7PI>tCJdO>($TEL=Q8?=7iw!&i5n^u}r~y6m?S5dFX~q zl6Z=lvkZ4>hGf;;y#yb`kwvK?);6ZaMrp2JtVg7g}W(A78U!T)^(vY!HZLl1V-Dbh{i3b>M1 zTP%-AEdx*xfi?Q9`UY?Ofk4RL7U!-Fc)FJy`5s+>*Gcok5|(kEee;6{!M3KYY1+7P zbI3Y?59S=My4(ZZ^`#xgf;$@<9#X#G*ft6YMCmEbgapg5w!Ldu;ows3ZW&>2QyC&q zmu_*UsUl2r_6Uydk_Vp3{qHXw2aTdM_Tch4b3#0P-PLSn>fPT|K|_<6#}sxz`ZEJU zg??^$lkXDpW@H_c@OOsfG^8K&7VUvNmj4a4r*mXuqu>BU(~WMgv!0?$sKtLYna4U9heDS9l?GU6rBj_u%YIuF!E!XW5Ju0d?lb8Ibhn)iK1(>Zt^QLgJQWT;`=Nvp9xp#8O5>K7!$t(>wrjr2t^QvA>e{0#hMYAhWA}gUWO_gumo^ zKS4?FiUW~?maQ^CVT;{B+~I`MgI zJ@3NQydtzniJ!J_B@<9*+?MeC{6Ft%d`{O5MM(!i%%vULq5OcnZsK}kjrxQMM(bB=zk!{V>AJ7&R#P)@(mvmvr<0$*9^1cp>RsJq zj^ZYa1#;^^K4173`EJe&{mzrs#JPgPZ-m##(?jl+FaXTwK(}<}0eUY#hR*aAmah`i z6)BTXLz1gCtuP{S#|U8a9=h)nNy5Q|CSh!kaWL1(6WN40>MZFUz&!3#X`)v2Vn$ zI3;(#hpBxkLD>ex!Uy$y*oQBRD|NN!iBIE{Rwtt7X1L2~n!1%<#PL}FmxM)&=SC97 zQ&`RsfLWNpm~Z3tI{EodT{-(ijv7aule4`4QP1OY5mBi!gD?Rl_@OI zU;P+x^PFl>7@JY5L5LKgwQtZE%7BWB5H{T4o#7*BV<ttD&&%*iXaw$c=pd>*RFVas7{-25^Ci$M;CbiYd*-^4|Ha*bzx9 zPT?{mVuUQ_tIm2AJ>jMbf`513g9*=Zp(=MmGhs8TX-gTK<>v`m!# zw7bE@bwqy+F1-aTB5Lq1)U4+RUP(hFYc{&KiP~3z-DKo$M~zS|Gn(<)N3mHrrm~9@ z_RwG+*&O6wEX#e{e6_CITbg+lxNEKb2_9?gdtjbtiDF2FppJyR(4pPy@8MIbM@rlz z?l9$6(|2-VwQi$aBZU_~iYw$$LoJ<$@@)u{tZQhcGU>SQkNdNxPW4#ZP_g|#sLM|* zR-Mn~=8#z-uh~DoXFblla%e3It6!Y^h?`G5Xpm{w0S8b|fzjz0)hUa#v$(U!QOs_I znPnIw{6TY_c3u90W^OYe8n)t0i>?xR<9)idQ`g{Z!;2&WZq1h7@!Hf4(a6*yCzVB% zQdW4L+^!J~_Ll{7q+affcGn@sE*lAFp!9MJ#=?hoyv+Pm&U~qV;-rC=Hb* zT?lFFCNgxkq7^x&7V|u|iuaOc!Vx~nFx$i7KM0YO8;aaD`^wF2>Vh3mF0!OYVO!;1 zIT03*mHHaT!(b*WDqzAa=L?s@hxa!4lw2*WZ<*`35V24(lZO|4+U^`c+beGduKIaz>OUbMw zY-11O$jZrm*Lvst3v4CIGVm3A0=DEcAA}Zl8TQ&x3ye+X#(PL9G6|3A79yp*O096? zr7dIAE);#+oCt$Jb}Kf|1LS9MnJ*rVxt0`$Uc06%xwq%GYAKP)BnZY)`4Wj653n>P z6RKg`Jt0P%0GyCzkygNP_4_xTQu#qZ4kMiPF0zkeoBFUV{i|**hdNY#tju;+M?rFL zd`a1ibyItd?fdt6V7V=gH{*VanSGaTb-IQ?oNcCQRzp3g7Eeo(Fgx7jVYT$9ZuNN5^OU@6G7LiDV;L zA%w-Rh*|WRLenDPKpYoeS@QRIc&v6jI3BPk zX@yj9U3T65(@`Z^C)|qZC@^*P`5%PJR_#(SZ8gNFq@!Rm=R3xZa_K0M7jo2;{-H6e z9@%D5gShUg1ui%_vk67JLcE26i%zZnUyrhpp-TbOOkf*9{vbKh5oI{8v9}U~+*{;5 zC<=;gm5S9`y`{0R;V348N{9dryy_v8hSnWA`921{rdZzP_ zL_~-dcqe zlrBW|SEQQn`nJl&@R`&iY#EgsdN3zp8fknI&;}NOG zH#s3psFc!C3Kt4F;`W9{T``P?A)*TS&0q(juwoJ@UEmYi-}3az8zHFWlo`z?CC=i; z`k=)-?S8F@_2TYXu?OGh{rN7hH%3S8z-DiQB0+N~9f|-Nqb*-N?E)IY5ncc?WO93n zy+!ycGF$tjVT-b)N=J;%7F2;bk)d>!g zxOZs8&p2*q7!32~R7QCA0h}x=*KUh0^uUs%puYdZ)PKj-{Qv*s_&KLjT8NgA3Js;L zX>?@MLPJw&tB8m~ogyWPO&Xkvk~CDbq^T1Pjqml|^Zok#ey_h?m-p)} z>>E-*30;JbI8|ifV!{eJY^NHi_6k{8%j;ANThAKbzJ1hZW#{@0E`Caa5KB8H{&lQaIbs!Fd8&420@YZ^ zY<~Xfi3WxN>a6UJ0B#Iai$iLN%B$;>UdVN3jBSfq)3 zE2=xSvwnD_8rEnHGGF?J_sYAf1}?#0jjZ{S*LO9 zKLGk9>$`!JLH`U@uL`qh#vLJVot+BkzC7vSLvF_3D92k@dyBEb|3p9-%?L(C)ma<^ zIK0g@E_v$7yYA<(O{N3+j-FKoGyX<${z7b27C&wbhX)vHIeW@Y-h*Gr0nnZkNA zT0ZT9`2oN5Z2#}w8xF;i)8Kqflng#ZJ{*V>A#vc%s9gwAN&P|^V+08W{DjXSL&>kh z%$}l<5q*1&dfQKFPF|spi$DiiDbRLMOK0EO0bb0;8 z1g)Cv|DAH>g0s6h%yj165U0mYlI8+d3QB zz-%vDcu6Os2jpJ}!fmj1*VTgb43QeD)P~*pr~QE8?9wEZBK}Kzo+$SM7l*6lR=)z` zWAdmng%W&&=g!wdmZKNIzQ+GOmDj@MBqFXr%GkzYD!#HJ=8um&4#dXW>aH9=%L&@w zs(-aqE*_TIUH>OqE^3phMelAQV5E| z3|(>pphp;9Udy`%$5g|ypC6^V&+rvKjvAebQa__BdNdgC1$X%+=m7T}ehpuTV#+lR zDJRr@#O0;ipD);jDtQWHfSAkT_D9$QWU|6Iv?K5g5H&E?H}d)rL@h*7XxVkDw5!(a zrsw|~K~mN?b#M9k#) zse;TrRcZw8kM~IgVT1E$SYDm!^;*~ss1nxUczRoh!KvF%L!|htI>VN9<-NpmoIwWr z6D_h7x?b&?Nzw$C(V?9~7Bo~?V0G}|%!+er;pdbcNO4MIGc0>#|m&h-Xv z+M8S1;v(eHE{x7`Y8}Si0>SF2_J4R-ocxCMkx;K`208eV3(!_o5{QK5^>UO8}piUL0z~cSzN7 z9*|}s36D4@4RK-AVeE$GshU5y9xS7sy@)yFEQ|S8Q3)WEzgIo4pM8an3-a}@hp>7atF9o%ct zV6%q~6D6vtX@n;cNfKt7qH`xQ@+beBCSJ>Aa@JO9xAXhO@@SbOHAXXPt7M>7Bh}8K zxIl9@_k1tN9<%4+W3vNE>Ui(Pm*!Pdy>bduG=>p5 z9~F|k?h`XaGGLQm_)7P}<1=*FMKS}b#*E6zwWP$CS{?;_1iR<)jK|pG0`xSSFlpW+ zvG>_g0-aDT%2Q?zV^Oohk>N?uXJ(!o6w^d>-7o@@0ID5dn!qHWg#HPKA;>a*Vy6+J z6rNzcS)8ty;tzcfa?kPw^Sl0p#9&`pMre0RYNQgMr}z#%<0j2n6|DWcJ8Ktq3RgT9 zu9X=19~RIu!KN{-3G$+@?sVwXPbGE1X`(S8%EA~MOaV`|f)H;lJ;|w` zJ(X~zy1Wr%#T%@+)Nd~7vs&HIaA_?wu&=eC)jvT6=OkVlkuVFeL%y_)nqWA#6B{Ol zUI5&`(eFAOC+imgH=r;FBa>=iqO-LVk&sBo9rHafJ{^PcY>E0Tb#4F7Wh(sXZykk= z3D2IXys+uv|L?ak)^?rl_b#Jg;Vp&~-i$>Uz0`=Wlc@d!@8XHVE4m`a3Ts+S(Do(* zaG`z$5PX!G<&>%^0^iIC`N1obBuor08U6T&)m&V#g5DNy@|=gG!O8sFwQJY#5nO_9 zV2IPLjMR*ZZ-563E*f-AEgEyL&<(H-+3kINw2+VxubrpH|5G?9v@{(xup9ca z_3)$)Rnio&Ufv36>33pp=WXVGgt?o9+J&9LyfTYEH0{~DH#Vr8IMyi{f1#2+h&1Dj zr$`MT<+Z`L#15#IX*RI}OK=?UaBl&og;C~KR)}N`@rZ-cU)Z(_+lG(+FHL|G9~!o? zbX1sae?j3OtKJH^(<3vu6-k8!mC~nL`N+<7@hwcMPk^PoPr+N(9^=FD?8lW%SN2`! zOO;zC+wuR0|D;B~DxJ~_&u_i;u=OuoOJP2kD)05f^FS)ONxJv=T`^Cs8M|wuI>_U< zC7gOjZ6Oq=2 ze|_rX*7)OOXNM|{JJ&Hf0>q3|6KTRA$+(p1c(HtytCmT-D>Yvn><2RN)Lsh(8)ndE zXM-pBD3(Llzr>?-4HQ}SRq?gAnOdn3#ldO(WaV8V#RrPRjn`!Ey2BU*7_BeCohG9~ z2kD>^UHKfevUTcx#5=Oj!TdzPUJ=VPzv6xO9MWf`&kmpV?>-)$U-2~H+uhXMCD(cI z8D@bks!HLvfT=$gwm9&rQVPtTTGffADeQZe5O#_P@x*><5dQ$lx}kKeary@ExbgLg zbWe3^0*>ERLXo!`aCrHRZz9fd*eUtAIYI611qkJA4Zx|6lptwFv0I7VACPgzyVbW3 z{EY%9fcO11Y`q+sLUwqs5)Mz%(cdw8ly%0PUaI)A`99IfF@@D@;yy^++A_UwnjMl^ zSv8zU9x8z!`Co55it7E*soAxBsO9=7ej%sGbJY#b?`SlWrrL~iNhdj|od37fAd9yc zU~>da(jPbCZ(1nuiv%B$fUar#^Bjf@8PmvnVMNfK4Y$bJt49Auee|eBgD?ixU^sCO zx1=8c4M&^&jukPprO%~B0+PppbAeR)OW@SHWkP{*K6f`BtNkLnvwNJ<#?|%eU8d3s zmH$?j$T?GAEG#mnKkM~NzLDwg9iK=h@3Qa&mCRuEtyMwbC_Wjs1`M`|8Uo0=c zen&dN_buh5&^n-z>u5Pf!QJ{!nXiB%^$RceaKU@EK*gEy`{dU^F@Gz*HtqH8J|9Ej zUgOu{b%VWUkw7ySdUQ7xscWF!)^aEX?Q775n1eK|LIc3rN*rNiSPCRHBDMD&6gKnb zM7dK5n>cw7XsMC6x=@s3Be6{clBCZy=!c^gxq-s@1woysdeQp7E9k*I-O)k%cX6w6 z!th{CZgHS(@c|P%Fb;&z#kh7fATZF@m_o@A!AyYjfN$ElcS@L9qTC=Bxc-lpMO)y1 zqxZYAriFE#FF1HJE9dMzR?KkGH$1skR zX9Jjc1b~<}S-Hj|(u4m+8`F^7KBS5QGvQKW1By46Bm^*o;l+QLCujO7tajaRtgE_G z2~Z(hP?&|FR$dTg-`EAqbw6-M1A)lyjqeLR9>7B`5$WVN2D4tn!e~(oiMj_=&mRr` za$D+I*K7B0+d-u=l`)&pUlM1CsEv0J4){by6s~q+fB5QX{({th{n=Q44Aw8w<;8g} z7&C1$j|UJ07@xF>gh}{41d|EC=f^uwtLf-8@E9P@l!se{z?T7&zqd8`;(}c;Z|iKr zBMCq?Bu0FUwK3<-DEEpouaf!#qt|h{$u(%jOja$Y3mBK>X=%FGyv?1T0YS~oxB1^U ztfJ&>1BQkdR(|XP&pVM-dp1*27tOTdlTNR@duEl_T6qey`uT13Hr2jN%4+|K3oCwQ zj4=B`uf;c?pIS9h-Mroiz+9o$e@Pg$!(&6=@u=LGx0KuFK|7Y_<4~*c{UtsV68u|$ z-D+#=Y4%m7y-QU%8Qqh4KFoHgBf{7$Oet?j-&NW-P-RmzsYl0rE>qY`QZ8npnG49` zm{2^&9}~(`-GUJ)!yOmtFPN&pS zR#pk_v=OYJYd2LVAw06p==!?hi!Zo&`c9D)(!$GQnUw?Y7m1B2&I*UL`kl|W@r*~# zp{@%NQ!2C`7EfNq!L$uG7dHzJIhCbcq<18N^X|3BRWaWhkDO~?LOI3T!9MX;^(554 zd<=UsQi{20a(sULIB4w&k`xNoSFb2=8HDV~hHoWUzkcF+jm1H_N^&2Gvd5Btqaacw zhJ=XE5TQ9TH7)?Ot8x!eo4b)|fjRvY8M7zvAt{v@Bq&;hyQrP#R7)UbT#=R#sp3i| z5ZGG2IP@40s}yl=6F?nFz87*w4_y2H>_eVwwE239c^;8R83+6r4A}LeLwxU&WntG% zscrsZ7T)t*<2lz!uM4e}qWo2Ch)#%BpYgTx(z$ueX7o(PenpYN+MvzXyeNH_-wV-q z7Rc~+`QD8Xviicb$ES=Z89OJ;6XvdbAwPihboz|C*K%B}5qe8Eoc=22Pr5GX^t+(d z{~d3uPYuH^eCGQM?sM($a)D24{$Up;o5PpI>eRcWm=cH0du6=>qIm^ANY4pzPa;k% zpaD+dI$CXcq7-6!-Xb*I$sTn(<%Z9Hg2)q215nWydrrQm0!)^iK7isD(GSs~|Y z0yh=T#pBq;pA>ceHdX|A6V}JSD9YWpTb0SWeB0&S(Lf#VHYR}vaTjuPiy#U6NF(QD zB2IqXHW5RIWttBz?wWLl#j5Jxsy1oDrKS~3`@bvu*FD{UWFfNaQV(HM7w&egO+rcp zs6`e}2}EIqP2`vYug&WVvOQ)dpShl06IXKhjs)j&&5CbF=Sv#%o!qtgWDe!zHah1e z$|URD@v2j2UZ$P&xh|8Y8{PXiF5P$KliK7trU&0EWzC!{m|o}U$`GeyEEHen-))j@ z9_k{kQ5Z;06|8lGgkrOB!<)vGMBLBYyX5`q@5^WXGcoh_kG)7aGBV`Xs(u zU&mtE>4R^6-v@$#L_PoEJ0$-Q`LeXUHej11S%g$@jbkhp$G)-d1o(NAuNujl%PLg7GBhzpM&pPB`5wA__jdDFs=XndVyou#BjyAeKl3eJO!NMb)7U$IxuCUXCTGA`STSTp#&h z_s&QRoS8PV{uVgRmcTSt_?i&qxV9KW;(}>JnM&FBeN&~WWA)5;RIwAXI zbnjS}B1260VJY8`&t?-v9*63qdY2QB%^1`GDvV0@beC0yvTBHqi0LH1-7I z^kGq-xMrwyxq{nvV)y@oG{g>Nml^f%TMGH$UB+hLmnIeiZbC%SN{+Bu2+~c1*MjH* zg9pdhEpr79U_kH;ZRK=2x~{*}?`R`mY`;>(w8;v!m z4z7Z2kP9trlXek4THEMIc!tjiTJ;z;!#}A_BD;FYrc3U${}K={|DLHV9kZ2;pD2jP z78j-|eek`3LR{t&=R=%312sYzec8;HLX~&q@JF3mb3^tT<%qnOpA__TAhNAdqN4#% z`G8FS*qmQCx8cG0f(l2oY){LgDFY8C4}H8A58jVS)-pi8OzS9>DwqMk*Hi6$u8{yC zbPIRb;PJ`=@krF;(?|QhsuG2+6_Qezj3rRo6P3jHE-2E5SboNSa#9mEb5M2B{e z97H%_PDF7sps0}Vu!ShmQcmDmN$NapOX|XBZ*==zCR#G@hy^PMKeV9_#Vo(^oz^D) zZdjV2PYsTT?9CJ=tC#D_deGmG`8~sl;Z1TXiD-jJZlTud6mf|h0DfVLT!gl{U1vO? zmp8f+u17G;alZx>7*Jl4x<<0pEcKY`A%YV`UxYL(?9b05x|@Qy!vn1a`ypeh$H+;i z2U`~2!y~yEZGV&QK!pPI0x758t*JlvXS(ek4|nH! z1-dNOL;(9(b25tcNUZj)n3&apuMlBGaB`_Z5^)A2QAIp5y;4%rUcGl;Nt>)#-Qtb8 zhqSc}lij)p85hEB&iGyVikLkUTc*)10@O}=avq*VhpuR%^w1y3a<45-pIgP?R-Ml- zlV{R&HI`v?(d-ZD)UuIGp$b^xSt~!7qsXqmyg8$mX18ax#70T{+WVd?W6zvT5ZlDC zNluQb(Nob58qrYf*dCE5tZ-@|WID z?-14|wJp5QbXT{@$ntR{2HNBaoL$Dev-zC3#ib!fJkfjpTqu(ImeQ)o#yuVsK_;e^$JG?7gIk`BO#_6YJtLgS8<%&LnRh zt9w1Z%nljy%HZ&rZD}cb0L?6s$V^t|bw^6E2sV4^Qs$zP|K=LRUyu`HvNBc9L!UwF z|4yePoQ^cN0$f`WxCCuIn52srGt0 zbW;ROCVIs_jdK>ReZO^9OQ;>oySqYO@Q<;&(IYyu1`jCxyx8J^t|-@-*+doMUC+JL zZ~;E!bjV;nyJs+lqM-L6k0WO>?z!X0P4NKIK=V|8Dni6AFor4ys&o9oR_`-C^{g9l zgrA8!fJgvaS=AO;e~&{tOU=&+oC%N(ox(`|z7-h@{dwCsisTTe&hu)^=C8I-zpQzT zfFQ^_Em zINpS-g={~)kX{LdS%3-Ki-(^SV2w9j)oS?}6HhB50vrEdkCUBh|IhcbxE=qvbp$bZ zg$*mDub24Bkp=6M=EkAcJo3={qJW9zTvo)z10nkg4Kof>aq(GS(jONt;^%H#<+^1l zfya#oN^5vz>47ZoV-q5MLC9mk1;`XcE1x#UcL1VkAX-V}L-|!!{2-WGQaupT=4$?O z%{^sx0Wofjf5*>v8-~wm+eM&bNIVFS;?b>}%m&H#1d{3C8KSc!HMqjuGIUsr)5Mr9xoBJIm4snv$L*l&g4?JlM&T*fl!W?2>rkL~J*p<_D zal1m;TBl|7ReK~2IE%&RQJdRL73^nbWNxi8;FM{Tb`{lLjX&!2^t9>aC!$8WQj}v) z%oFUxqYoypzj)Kr|Jk-QFF71z4_B=$Ulxl2E=!-B=t)URPI1L&4TRB z4GNH{Jc3vmovW4%yQm_RZL5Ou;@pWFnQ;F_Gpr|XFngIxM&2&Kw?!JmX-A9cB6H>~ z{TXwGyp_`~Ra90kML~N-1eo|uQ1;(6B$u)MlKEA$w=Pwv&mmGz8+Cy zfgu4#xEDR~toD6Hs9EjgUeMFXiz=(5Cg5o!xIWoL$=!G^4q>oF{6vDjX+`JuYztlV zJySALU=G;Tm@cAGBSLQyOsLJ+jh*rt$B@V zw8(SDnn)Z}RXTH2x@inKJQn|x5Z+~Je4k}F@tJoeh=~1;RW}Km8dZ zY9|mTNGu9ik3Pe+1Rzz;gca|AS%`k$whgUD#~aOP&iFGVg%JV+1*+@|SnIpb3_^8e zD*13uP^At<;4(pgke_4(M0+7SpyO|^KAyjrM^Ji_MKUB@0q!(H(o=_YEV8I#hfe>} z+sqxAdfs(;N#cFZlPa{FE#}|jSt<4w@;em-+N8U;E;U-aiam2V7(eHb@21C&@^+Gc z_FsJ@%SYvGH<1OD+7k6W4T(`CC5})gG2dGmsXyZclQN2Ecn&Q#ttRbdjTzsu!5nLJM>L8UCCz_93U>}i;sxvm^UIR_L_w^AK z6AT1Ga!F@=00+K8DMA+HqSP+eV*c=`_ImtiA#Rsel`;|y$ITpp!sQX>^$b!E>W^25 zcs~YJ_=Kb0xeguf5<58Sfb6!Z$BV4-O?C4#C3cuW*Y~JUgB2$CCLi)L8SmFM->xgP zo)C#sHgJ8nm6v(Kv^vlPKV_^e@Urx;yvPng8bc=UXoiZ(GqtmBl#J@kTakZxY9~#= zwvkmHp%*tqBkxrsY@amtKIG(1c8U(lpPulDJ^sa#_u)uF8PUp|os*j!G~?PB*t}5a zHO}-AjIPgVPj*EW+`;O_wT9mb&(&PP zF?r?{4{eJ{7w5^XpN3Y(3NMH>Vfz$GFV@r<5!6 z49;g>^!dDU2i3Y!eDQp)q^T+PmSOs0K;iaG4@s##Y*v0jWpvcCpC;o>8U@lhwCA`bz z>GFod9K2mBVNWGFIG%HJfi0_r1@k+92q7e+F*|iz?Jy85Mv`cZNCHAuO&CT*GKjbm zpJ1mT5}+eH`RVnE!?OIrA73C;j${=R^L3V_k5S~-9HJ>3;u7Stg61F%9TV8ouSfYN z;7s1b9e|Sq_+{0>iq|Iw%_T{fB+(QwQ?bMlzT>7LqEq*PD6=`DM8L0F^=jUKa8pm} zvGd-}9kpOeuGy^A*(fRSlo51GM<8N=Rm^{x5)|QA-fw#MdnWC96D@ARlDLOEIo&w1 z2;6(>k+{P0JX7r@HL-w8oeUkgD&LBIL}B{9+KaFN@gkqjP75{&VRvdtN)|6)VM^^NH0uD@tDb z&GI+AcVcg~l81cYcFpf6%fctqJz~Q{f-(+j&HGP*P_&D+vmXPMkNH7mG$F9cLw8*4H^;)rgz{Y7&wb#F3 z789L6BqFocQyU+$t4$evcxL&KYY$X5fG9RVYc6$E)k0R+jdS>VX#aAtg4tJM8^w6R$PS&buP2`~|VO@+a?(zmCEF!)AAK5eE&TfnvKN zVbR?@lm_7xc#LzeNs|CWU9T5@^3Pr`zsXP=D@2XjBFoBZ!c;@f^ilOI3SZ}4 zIThrtsYD{@$0AbjC@8P{qh;&73L7ClwXNyq4Yw4^3%Lc{#5nXUvuKHd-yYf3WYYXj zB-%)RHdXL8c|N`nKTKffGM#_VE_dh!)QBX6ZcH$N@@00l*CKZqu<11N5F;7N1Z&YB zj9;sy-~D@e-f+PVr`t_SDKh-KgC zW2u*yvCGF2`Wiys(dYQ2=|a$nKA%R7?x)aw)({Q6^`YE%4Wey|fB^R3@v3{UZ9X)( zt3K9TwkwkM z3cY@n$~>}+a>QX^RL>>Ex+n62_bE~nfY5ZGf(VBoI#ugOZSWB9!kAVAZ$*OrZUAv_ za6^+uN_e{0Q^DEC7?v;qr*)Fa+XOLpF=xKf&q9_)A0(VIF71v?x5y+BtyR!ml1uX1 z^Nq8{27sn99@LjAWfrybh{UrOY5u{lNop`j)`HL?3A<^neNQ4RKYC7;OjqtE4H7l^}HD{xnN$DOT+-=r{}DVRxac~GSn*_maydGp(XV8*=~ zE+=3>xrwW2_qwrH`k0R$#tX9Z_Uayf#x;O?XsI_nK9_?u z#DN&-lu6ps4vNYYd{k`LePFajZ$OCjEiI{n!9CeaUiFi0f1M2DVDW=4;i43L;0ciI zHo}M2P!nY1PU;gSGCa+RXXp5x>(|5$@dcveZk!<>uUbcb`GEE9e7i^+M_0fN9=W^T zv4&kSb(xoO_Tgz^pGVo!u6qQornT*L;Y^SkrWmjLV|>cw)!KgNhxTU;4tsypAMkp+fqdn=O5lW9}Kx0{ zAQo?k6OvwlY{V}-K9Tp9X*Ix7i-M+f+)=fbeqT>tD^v@r#UO&iZD*Cvqo=)(n^g?= zAXD@yami5f9nw_sK6y+nyP%`YoBd7!XAUd|BJP^W-D2? z3Tb$C$KEsL=a{9qz31sq!Xgo3wIpog3W2;*{z8yJwPGJNuS&R-x2BdJ%6H+KIokkq zWnj&-*)@To(#GYYT{CH82MGJ~V{W+8(=6OF0htIeMP>Ce3dV|~=i>~{HlU&S z*vO;TBK5Cu!NrcYV}$2r9@c=@{QCO8k)FDz$DWZF5dw z3_e^JTdGxZHEGHfG8N*Q)equP$pi65iacXf1llx{qKHh@Cs?yc4L|zHG$o^Dx-QY)!#BPkrVH**CP2Ns!L#^4Z~|6n-=CIV`7I z{qNO@K_$ut4LPq?UAgN+pNHe!XB=FU->k-&y;NSi?)LN_zWF$Bp;(RYJ z6rsv*sw7h&|Imw)CndAaa_;>Zk-<#z655!q++KDpqSj;8=qzmqeqj^>TrN zvHKNN3T8MlA@HIcm^G_Wn5T$YhV%tIa>Jrb-gn9d$7R0xtLOjzv3KS|t>*2wqYwJd z1uY*Ad2Hnw$=l($S#0QK=s(9&>MNEPLrhOIy>92`6jP~U2Gb(q@^+IqkG}Exbl*?K z@20`m?%v8bCTu3le|a)5#kr14=%AtItU~qsF&1MCtB%IWA$t-;S(R`SXUOMF_q_<_ zEELOV%sKMF!+HgLACq^#E3*q)*GQ3=s-epS{zpd1k!1p}V=a%r0sH|ZAjazDp?>-T zFOANS%Q&`d0jBQ7r5{V3AR-np0pWL}*u{Xw+(?$wrArIK2B392+8AW8E9@>|Vu{d7 zuz1b)9$=lXGqOtg4E`M;IBpQzOJ9slM}dNgu$t#X&}U6`uMA=R}pV8UafJ~VXx zn0kPs{POs!D~5HAQ)Rc_vb77-)dsHglpJxfS9&mVrhc8%gsi~II(gy5_!Ef-t9LJ3 zN3}CqHM1a5-r&QvTL9#lqGqciAKp=JPLI6UF1y+(Y#G=4$s^`c2`0SHzb-xrLCsbu zN-+j^dnQ$udG^Fhtos>Nda6J*1!s6`tNW${62W(nHDdr};Jw;x$AF~D=Y^F(LosI_ z)qL^(wflLJYKgB(w>~>4hZNn$c7?)km*elYLBaWb#1R^U6!0)pZHSVxI?M0yGzm#^ zA@*_Rs|HqeHji4Axl(Pw`EY9lmjW|NM8S>+Fz{g-dxNvpCT?Zgw5yeLJX-#`m)76L z+2^XaALAmgs1kuWbE@Hg7+ihMv8n-?bu=};TsR|^ojJ1?oIvf)(eWF zLmebn_(;mJ>se)=#@RiS2OO+kD~G5E2vB;1U^>F_d{-S!wTf zy@7R4)^7{vES!?>)=TYZcbHJRmxI4F@8QuRr#GjIW-c(*vZrHG7sxqs%L!QnbPQJR zYs~5mbchd4cZs~|d$pE$w_`O~c?TOC{OZq~i1iNzNL+k4I;1zYkf+yycUqKcEDx!LXx&1arS42r~cROI>@{ zees&2tuH{|TpZfI*yq|oTBr=g$*M1}*rqHxeq*i697%81uR$WKua$BCKr*I5m-PT8 zA*6kCMRToIw`Wl*EL*FsxW)$ghbd6|J9^5T=?e&g@LU4D+|sqH zuKu@l%y~)tg)d*r$?R7Ctjp8;WX1omfT45&lP-!$mw-v>R>>8gX{*=Ja1Km9~&viDZo@iMH;MQXYc5YTp+tBh$Tnrcs0SFWSAIfLO7W=e8TP zZpf&*#&LYm>_#kSEfKmFV+Ujl6JR3xhDIC8q7GhK9w3(Vbz3)N#6(c^b5mC zm7-iOwYmFbgq*7Mi11yzep}HYxS&X|R3?^XSM{Ld>8gV|T~m)RHgTZco;C<}tZTxKWkGMnAFU?=;T7nJKndt<@^!*hb;zy9tK> z1nGrSRhPBzKl&-8cvU%ZrRpNGdG}5%{Jl7!MXIwpdG#g+H1RX&lJ}vMCoCvG;YJ_6 zM&2c}k&Z&fuENABcbRDL}5m=nP)ZJO&9#P|H;-Dd1Is$(l? z;xABc)8y3LwieV+9VTEOeYsv!iTHu~so!rJrgBW~>1R}|F^Oz5oNzgRSuG$SBV7V% zLV$24T3rI-kwhLdOu~E@OeO=csp1VH27jiB)A>r|9rp6CF^XPOVYR4kKkHz;%PAx( z#8zJsTJKYl^wHr8i>FjR!yl(j{{g6YF?urU+ z9z?g_=JEPu&y`~gTrB3_GUB#V?6N8V5ITW9L#!Czi}yWvw_7boJODlLYLZ4cO1$4^ zr#&6J;|2tc|IOE1+wWjnojKn!?o&qd`5;zr!`IODG@?>Amu0bc%XWox1y9+ru4KL7Kq zEu_FPh3DP9X{Rgl3bZh%6ONuFNZ8xc+GPaXvRMY!Cg5RW9HaaU=kpP-R5q9hmQFy_ z?VYtUu8Tj^=xLUzu>GE?4T=*f?5rzqpbp`CXQ0X?M3pBIqp+*l)EZ{0ODVw!RzaejT2K$ydHu0Ch+@pn-nSpmj*)7oz7YU0ep=ProXJMTVa zruic>U&maZr_3@4!vwwRs&u9O*)=LyP zT}wY0$d%`bDA|0~iAxNOn_i40*wvfE!os}YS7w?=KQmTIdlVxMV~%eln{u)Q;!Tpl z>INamZ0yfs@OtO@#mJMCvkPyV2Cjp5Wn~KcB4-RKr;Ag|d&b4zvxzJ0*{!nc5)$!$ z9gK@!HJ=OOXTRCKVEkBss{4u4PqM`~q&+k}Z%MhUHW=UIAjv+?R*_|=CkGz-TR&oA zl68~QEPH##m%hvO_f|FrQC_A995GGgn|d6-@IaQ-^NZJBj4c9d|6u2*3jfLGv#+!@ z8*=l@jkx8edV5+oasS-hQ}03)6a6`*5dd(-Y2@p>#^F(CW z19$qYR7ggBmb!;PrLe(MWt5fo)&qWJ3QF;QECN9O1z?ddKkLA(t%;ed_AXPvgfn{yr@)TzO25Jb|ib9x0tER66rhsl7YO z;=9s9v3oP7p`ZMu?+aBO;>)oMdS;p|{&PYODV4^Osti3IO`RK$`LyUNn6MW8PG^-pnW5DkKJzSjGjy ztckpzs4UUQb3;I2a^SK;ns*haLE)!0Kj7+K{GEWKfZyW<1lo2ZrMVt^xl?#-| zeR!r+WpSIYbg|$u$9v+hmLI%+zjzP1cRadyXG(AW_8-l7^D6zoWI>v`+W9kT=b1J8 z)%TwgpiO9jQfPjR<_NM9;um!gJ9^cSGP7BIunDRcAFCq<2~~M_I2xSwMP*L^CgHpU zyc3Y?YJ31YsZog~WEh+=mvgs5ijhK^fr*rv`7(-gIcafh5JJl}$p}HeM7}wa&-`}$ z7sqr>K(=ieQGFBY&HiKJE>Y^xr523iM|f!)!wa|ndM zz4#}hACi48ckC51Tfx+b8hsOr9)plzHBIiQ`tr%|PwdpJW^~lIO5eAfOY>g)qRgTq za9<_g^y6RS^W|a$B=E}IxN>>r!HF&ZMmokXn9BbeTV>4zEE(p!LO?2^79#TU{3}YY zwnKw-;=D!ya&n2IE_H1F*gnvge@K%Fc0r=mhf}5RvwMmce%F2JmczS6 zWr*Wzm`=={So4Gtsr=A;Qtax|&F6b>9t}CZWn5o=?^jb-wHPkQcu$ud-|=}v*6KV% zQK7Ht+ZP7|L{+jC2!FIgW7Hkr$?@HvI%aGwoDNM_9Q^QAAj0oARi9zGf}0-G2yfIA zFuMn_ZW-0Sbwn@9td*uu?Oy|uM^bQ;?IXM(Gt_`P56D2(b3gdwae+oqz$8ApK^$_j z+n1svq3~P)Nr_v`VoC}N3n${mwASmo+ctTB%ax8@c8g_P!zW{Tg%Bb66RN{y2!h?^2c}G^nE#1 z7oEoD3}uC9`8o^pzF!w}=SbGTh{GEo>#q`yN!eQ7yI3V}#aOWV7k7>ojt^Ub-2IBY zQ;&6VkFD8%6K6=qgWbO!qxbp5+r2(n@JnRo1V!$(R6?p1lbafAgVan4f_Y+cu&|MB zil~u3;$ry>tdFGjQ6>jTi4YDF)DW#CnS0z`T{h`Z$dd?CwmQM&sfS#HJ!H0fM$h8y zHm{LEWKy`|`nn&JOCv4t-LyG#F_Mkrm70jI2-ElYWlMUALf#12^Si99tq|Yk1xpI( z7bR?L5m!_OP*1XvDSm%XHohpG%e%bjq-bwQrdMK{#eaIO5-!U#F=ld)+=5hMmn=!! zwR7vE)Av+_+X58Y_C}4q4lOw;>%sYcGHYZ|W9D>GW^AU_CAT`gl#2&%UpDu2%Aw>~ zZ2o%0>_ec5mS|&I?}HP+`Yx96if&56`La2Y_u(V9<+jX@;r0I6r5o!M;!YQ9=pWK& ztf6-DUu6{Pm0bY+PgL>~&=&l`Z}SmO!C9d=JKhq*H(4T6u`7f|09GYea3W&fd~IkB!!DZ?FQnf>mZQ3r=vi(Yj!q{0ur{zWWGVa7$?z4zceyHv^tYE{RMm=P%_9ODwmcdU?L$Z5s zmY=!I^FW%L!ZdM7%k3?dar68$HPLqYjsLTn-M21%DM*{Ec0Q2x-nYjZ&`UTcGvgp{ z=_NP1{v)-r%h>FDA;lqe+9QzMkff76n7-+SvAB#o&W#YFg1^=RW-RVQT}#uTvn4IP zcBlF^Tp7Ycx@;fMfH>gN78o-xd)$(ArZKvjYv@ekz@jl2+-iJ=Hptw|a7Uagkc5H` z1%$%fX^I*(3}#S)4aO+iMY(-liMYd5HvJTF%=6lba1JP>501a;l>$! zpOAwR_K{rq@P6}fYj$-v#)MB|<|JbJb8TU&6eoQOoryg10c(lMOe@HiecCshEZG)W4H1HcNENxh!Pw&0U_dH;W_j<%| z;^JUyo*(vJ_?m#uhQe>}x4!ND^%E(BLz=ex?BjVuhzO3Jyz7e0!OwnkM!t6*@gIwM zp!*`hsBzLKqp-TCSTB>(*&=<%X1V0Ps5ut6*lSTG3?+yrR0l=w3sh4Eo0gW+;F?}n z*w+qHq6P@^10wfnapf|>1Na!oi8baSQGq^uwnP%T1byj8gb}pc{3|>KwE>yAXbkFs zDxT97&5o4Q_dxm(ueRp|+qm`WYFpn1=d=Rj&tO{d3dg%IeF|M!b5-+oPW=j?S)J0e z-QnvR(gM|_H?De=taMF6@6drdb_jFlzfD>BDlT=n4yxwDtQ=F~AKA6oaxILW}+Ir{rDYfZ*7rk!*DjNfr8Pwc(XiD|gdeJ+u z{nD3-w~P9>D?Msw_0uSA?yBD(zsem^%~CpL>MFW(y}R{c|BJGY39>#zdh9Ywjp@bs z?y7JdEQ;Cs@#3XRyW!$KUa3+469Vl-X*&1Dt~33(OpjVQfzw%e@~oH*nZ!v!X(R7~ zVc)@)r^H|dY0U%{W6l%mPldY1{*T2F^xyIlX)Z&V|q?+}zR?6&1R@sV_27dXj4k zrDaUl@wjxF-%+2&4I^p6rXMB5@r~w7_J>UCi)vd+%C(p2oT;2Va%3;>MrfNfw^eZ)g8vnOm$nAui%VGjE(M}D$Y&<}wx4BEh zc0lBW7x*!PV|##Bh%}ejq(?h!6|^G((6#%n6sp~eg_*eAf~E78u!n^fEJ-&|=OX}$ zKh%?uf07oOPvR5_)_?RaL7_%59>{{XJF@tArDQ=xyzMno9!|=u+x8+$^9SU4X)Ie>YS&WZt}Tr+T+k~a0$^n-pRq=%jzC(&TEWV zo5VhFb4K(_#iEIdLlilzM>FFi)mK9y5Q|?iy6p7O#y4OGY0asmulB3#`Z1uAliQ$W z6QRUZL0J2wB3#x34ir#D@dEn@?P3^PXYWwLM3XoN39Jr-XpC^xnf2!`g{zm) zaZ37}?tmL51DtMrL1wE`R)9Xo}UG2C1FbPO;FGBS8<=? zweR&dK9vPs`-Tr-nIanF(_T0MNMdYrA^*oTo7_Dh{6r{i9T+N;@p@M%BF+PXGZ_eo zjTnze?lCN7D_;`-Fe&$=mS;7U6c@WFl!vf3Z*6?{YW#zzLXMHS)}G;obX`lya_xvQ zV@bEe`cG<|D3aa7H47ugJxU*21z(d+{8_!}Qe%M14xUwgnarldrSoegDmb&GR&9N~ z_dXWN$rQ%ECyVbGc+(i7B0DB5{*mhC24lz-ErW2#L! z?S7pLq7;g}cr{*=xQn#jx0RLYCk` zbZa!}1Q70%P;JfCbP)q@sdSVqKSq28&ogIGxQmeidAev#_dv@V>+E&I~3t>bTUNBzXZMP5cqsSn%7@%{DbDCk-$et4T=+2eRw z(R*@#P;9FH`UbBV9m}x`l(3nojV~b&;Ca>w;hJys8N%G-3hlw>X@<>HER7D@W4aAg zWak>rsPk7bnvcJMe)>3k8$FoZEFd@LEYxE?|FE>gK!rrWm>@ej?2OA$Mdq=G z5(R{qoi$q4>b^voQKva5PO`Fk4^qvee2jhaRQnlz&c%m;2HaNcszySsNB24%0n(yI z_B{OES>R(|p!lvkM-1^u47H+qc$4^;G2Mr{#_u-efkXy8d6&}hzALl8CiCB%e?m0< zUrIX~LxzOimG>um89aCuqh}pFZ)N1|1k?Uqr=%CsJDMN=echZ%cRs}b9%IZJRkNmf zOKbOE2*0&GOSH|uqO2rS`f=D7S>aDDrsi|!Pzo)U7ej~eo1P`VB>lq`=kzJrbgJZv z_OhP%5RdBxt(8J>Ao5tl4}&t%WUC{2cc zqX_itwWy%jY3@?(k75Q?HL}xJtz#R2&XOSTKZN7S{c|Y6mDo;?Q45kel|D_ zXSB2rpZ{68v!Bwe02ekH6A7W_Ndh7SPqKcEyFE)WOZhT$ZNJRhML-7V5^Q!$wwE;& zWtvEwg{&qG1TRUqqfI*FNFhPBM}>6{qpZkyamdjh(0`aAHD^-I)DEM(Z23VuDkYZ< zdA`omL%BTLySET<_E58Sx7Y&a%qVux6j*~u+G+w0Usi6bCF=aB<+nZobD9#;*H`6s zx_y8DjqJLG>)ypHZv3|pY|rG8WW|fy1;Tu$5Ao>UjJ*GJ&cc!U?<=L}xP0QL=!BhI z7q2NTTyy^6a^0}^3`nk$!*flxFU8NXaU01*#))H?9p$G1%*Yhh+888XN^ExaA0g>O|4>i|lm-(^y4#YIGJ zKN47Yvvvt^a4o5XPIqgmBA=s6xOdKIuT|9VF;EZVq4!@iKEC)YrNhQtaU)!u8MxWa zHknKe-o^bMD8BQURq#BShuqA6Q?Uyl|GBg!QzJKFk2?<@SGx3Y@}n&cj<2#g={&Y|?+CJL&rzN|;vH)Tcb-LoIm?ew8_1 z-(J=E%|D{f-hjNe|F5k#frs*Y-^T}IFDYAgt+p(stYc5gzSCeRMfPMJyO9<`i!}@? z+0qbWA5@kiMz*mlvSo|0FEjr$ecr0?|Mh!bukv1w=Q+=L?sMPQb=~(lrHZ%31+RWhzMG=TlbXQ_en;#I2g-Mm4#; z9_X+Uq>5Mvl_N^AO1Vt^X5h#d8K(}P(0eqqpm7&CojW7S;R}w>?rco_0Z?xamSoVs zhe3WF^Txjbv4RpY!CuJ1nV^uDZ3=qZV4&7l@inf!jL&zz|LfIZ zDCAqv=}HCQdxbwacT9#fm5GC+iw6|q(q1DWxlWwJw?O^qC`f#6JyV#b9G(L9;L!*0 ziXOl#gc$?V?8CS+dO5+@xbvJaJRu_MSxEZ>L)i!+XMBm-scsO~bUfgwb97Pfwg*4M zQBO@xuoJfdLwXDd)JYViLMCXo~ zShELqddzx6KC_?-xJOkfK#%-jhxM>D=O0P|zrHcrf%EHBzh|EP_|$RIwluZVm~yC$ zeLUl)G~b~HJH5GR1;8#M%(;zYkROjy z)z3>j0GKLC)dsA>rIf?oYNuV9ngIE)IrbMC$_!?*3pe!#E%X?8QX`dwJ-0qv>l*#X zBPG=DGE;UqK9WH4qSzcUWcl?e5%n-ZeS;yeW6$Jx{C!u=>yKnlbM$?kcoWJDVKCt0 zxZ?9cm5``sb|au~L3LIzQ|y;_^{@D?ejx~eSCs3n02|9lxqDi7pffyDuXyCZ!%R>Q zt_aHG%qeHGL8!$=MXylym16sLUcCbZgY@!|A`oT_!ij*Sn}blp!OJTSsdAb+5Crsn zu%T(&>F&Wb3a?{!2fQxBd8i2l4JD2j8lkNx7P3YZ7bf+O&1{yQnz?LJz{YUyeHQx% zTD7>Fqj-bfBMBKskG%?#vKoJc!BKi5A}XmFoFFw}>1i0(cdzmIc3Tves1?!8pNpCaxm#RyIN$Fo=o5c|5Lg5jH{^qb zztAv7X{muWZMt&MN@*#76BbiYal9D0#kH4U_z z)|lg3(RogIG^Jpja@wH~{`CE*C|`>Q4l9}+MgiI2B%3bTK#$0Dj5W%Dli?i8DN^^5 zGP&=SCZC~H3VsE9l1dWlsr8QO1*b%gO;%DS(*ix4?;{tfhBcG;`_9&P)Qb!seSO;_ zLIwF|VZ0Src;&N$0VMB|-b(#o7!U&Q@IYSd0V!htng=U131C@A`sqw?a*T*Jd7e@Q z4dj_TP>%u)hm2j#D7QTf5_A`j#fd&9D~9fF0vMZ_>rQ+3@iz)70Het72}haup3#Eb zIVKExr>S~1WFbL9-I+{YI`MFu2-tkwYk(xah0>c6l_IkAKSw15q$deM!j;lZrLPvX zHqT9UwV26|Z`Pw!>lh$kNnq{J{zdWv=dn}HvjDYC=?9LHLYr$U2r%kWzX-Z$i$qq{fS!eX|+r_G5MYtN*z`%^zK1nEp`-!VFR^g91 zA|BH+op{9^A;IET9PjnO`^)%5W62dhsfQW;CFu^=-2@%@s7pGJM$mrxK+Vf|_d4s~ zlN4^}lkHtHI0H}Y@Iw2Jx$hOQ9m-@)MN*yl+77?K=+aKXPm9c#p*t3MB>8_Ib^WoR zMD%#ZdmdrU>Q@P&l2T!c{mBJo(1Xm32VFVEE)0rxNan~_JiU$uv}0nXVo8xkWkfyG z7>@GrI1nAM0#_EOhsVdX72xdUDtpkju8iB)C+yF^;Di)spcU-O$!{8Q{t_)u27Gkw zbM1ss>`M%F9~hrVissNDw{D@i=yv)H%AvOKtDcP2HU#k4 z{@J9gxit%zUyeZhwDVw@^z!rk2U6z`HEFJCdgT|LVhAsiNhH&42*(vQ@8u><^lI}O z58YeOTx2x@WuSi^6)cGtk9lFmRQJL8iGYdDO@^5hNEZ5?!ODoN*f}u?4c=DAETA}f zRPo39K^$g!kMxMM_V91dx-s&sDr8`WI_91cc$Q}-dn;>Qx<7c_u2bMTB+E6S8%y)G z>j<$=-L~+sQOxpHmCd#1h(9lcn zj4oJHm>0H=lc~Dk6oX$>E}Xb*A97Z}UEoug>#vt*A#zHx-El!n@VFfVsg~KTp9`ul z>B7s%|2+~i{3A>eh#HJ$uj?J%+fnn1VO$v-?hwo>{zDGN58Owd#(@W4^_ zeCF1uzza07-A8mL`#YYJy4wM|^N4 z0t|tH7qmtM-KCQXB-G6{)N|A&)Z6`{Ti(8Dp0G^w!i_T7ze`lw(DS}lbZTa~FXHh8 zO~2}5ibqSDp=1li$dL3w6=WZ}2)YX-pHctN*uUR8qAq>SEz(8!M3*h zD|`$`uY<3xlWbv{ZtKx9S*w_L;N?(U5-`0E!a!wxanFO6w>=Z{Yp<1=YZ^>~T#Am( zd~eRS(t)EO>jlY@eG?>8@#W@cg=Z~wE6%S!VuSE-k`7Z)K<@wSNA$=8=z z^{Ve!s*b{n`;Pd$#yNvaeivrJ-eh+`%xmQaR5T~GHuxl7koo9GiwfvkkOkc34LwTo&8720 z8tT#o?d4EkRq=x^jBw|&@e=XafL)i6qDkfyw<5E~mp65d9L{!>Ptk;bzF=84p=9s| z_z}zToBroLoXM1@@<4v}l1zWrj#lo6!f%{{Ux*7@#^+Hw=^EU|IS%HI-gnThVMlv6nWi zOP+nL^9WR06kXG4<4WFItg#r6OQpC?%e-8fUotNLxXp%79aBhWV|J&=*7QrLS0w?JM~fR`lPIma6?R|p_6WBF@DaCF>uA@ zM2D?sw(R|;-i5ZcWO`JO9sqDcTF!qUj0EH z_HBveXi|ulajo#tR5r1+$0plPYIk3TOO*FYsP9p$=M=83sdWOA6XA>adeD{er`t|` z*MakIPUVfdv^XTsE%)~ZzF}B--{@Kvv#H^FR-iyII(Mj)s-Z7mE80`Jy1I`buc8Jz3vLGU>W6nzx_>IPa z9E)`8hgQyvTn+MpSg5bu?xU_FJt1RzgVS&2Ccd_bdtIyI@RQK1^KRb)pIfAE7{)4* z^AzHsbap6usVYceQ3-oQczVzwDr}qf9}ntQ6K2ES6c2UqcDeb?L`Md>)eG}v=)Xkq zVo0nTqf1LpEfZJ6OhGyHpex-^7V5R?N2V_Apm+8ZdWZ>;HuiSAhrRg6&iuUei8GixNX&E3i4WH4w5J4D0`m zoBYIl7)CUDT&Gyn;GNr(gf1E4N(~atU99Q%?$k_IY*JPm2pwmvL9m{yCi==EHUe=R z@wQiETQKJV-v_bd3O1m!k#jOWkA2CS~Q*dVaZ*SZp|Hy-wVfa`X$wbMM=En}HK zasTz;^3*eNFY@f<=JUuR^nz-JdR75d76Oy~*Xmmm4yxT`>&!(-eD`VN)D^`YlOn4a zN_>;;&rix)Ss8Z;l3@4AdFugf{>o4NGq~>XqA0}-I1c;_9*HGXz3Y0^^0sf{OJZQz zE(3&ZDKJP(r7rL!FuundZv-VGH1D}4?rQ0XZyYcY+#Juy5n=Q`%{yG$w{u2S_ylN`5U^OYt4bWz~Qii8y_7I z`GX;Drde_`1kSg*oVnl*Pw^37fWwBt)-yk2yp;9n8&0Mb9e<;F*_-B+x;8+7g-(A_UXwGB!Wx&nqR@Gyj}w@(k0!;x2YaE zS&7^Nv+X|wQQ7lA8*_df%(j!Nq74_t{TJBUqXP0uj>gL!y6X?Oe+mn#u4`er^lEd~K_~|(RgTj^L7%o^L7GDp z;qT^Kv^U+W%`?gJ~wb0+V=Fchok4+SllE+$!(EZK zY_u0A-~Iehc*gAwHxO4`6!1EHneLWMWV3^izt8UHP)VD<0KnRT@0Hp!NB}X&y zrO#cciW6H^&Fdy-T!#HO?gY=31nTvIxfI@f5aN6P0Ueg?2HVF@-^xWb)y4pVNwptR z5G{@TO-WSmO0(89=0#*7@PXLG)oMu^T0;r!_^wW4L6Xo>-NdA<#VkW7p}d`|7{6>x zXnd^`h5+KrT4h-mK&)8P!**iUD4rNE3tiUYD=m)j<)j)*fTDE0TvW_G$p3dzSq7ZM zS1?d5@Z~!C^~XvZ4IJ=MwC5TCuw1urLB1xvZxD46W$&Xj0ub|Pv^J(^;$h+1Ef+@A zLw~F?TV|nD^NCnZ<3keaY8NKMV4KY!3xPLF4A@%^{L*v%%{l;!9|yw}35%}(g%gNJ z;kjMYd*K3%evi6kD%5pmn~+;Yuoh~+R4*EJUV=INu53cP+D)OE;X6S^XBm##0uZry zFDtYN1e-M`_9C1k0&nBq=wSKN3u&$kAgklRkskS@6c(o8DhUZxfQ`hFSAML(Au|f} za0h_T$NWQ!{vvbR+3RQmyVml6y|%&?@3dD5h{WWvPo+nTbr;NZjgZLYOS+wj)p0^c zTZ%ytE6-GKSHq#yGccvg)s_~|muGqdVMy#@i6PF@qdDttu*&MA@ntMUw09wkSKnZw z!s;d(UB2{n=|^NNO5=;0Gh=tIeHWw>`tR+-Z71Mp0*BV}SNj$PV{hJ^1VnQ3#$@WD z{-$z8)}E!S&Q$|(xk)BAR{CFijzAq|K};*0%vFMz@nBEo4Y**iQ02fJ0fJc&Krye5 z3pn#d)APnG`vl2`?@fL)i(Wc26b6_lf!}2WIMCi7GG`z?${G3^A5`~;zot(IEyt;~ z{Qg_{?dmC65Ka`NmOjhy7t{OD`)^n5y1hM>mw}Ob^9q}k<$BQfgmfI>M!4q@&CZO~ zWfXoQJMM9@U4e@>K_=9i=OtNy4u@h=se zXKaUUfM>hDcb`aThh7%l%dg#4MWz?u!1n`#n~Pmb%8Drzg@e2Q!^qYgmC%)a545E) z&3C$AM_sWr#BK&p7{Sa`*)5+Y3H6IlMf=q*H|h+B1)f3#Y7>(Hg7{_V|II0VJ=0`* zty%fct7~vmZXy~z zJb)z@@phh#6P9z!J=j1}extRJUbS!<(N#h{UiQ$%A-hxdmVu)hGK;D>K2MdZBmQ4r zWiO~sK>q=6^9qwxU8)k$^W5pRsX}re)X3-U<0+IZG$O03H;|iw@=dWfQT8`Rc3gXa zsXI|vXwhy7kzg@FO#bOr#NBW=tw6u2yZioxs+|(6lSM8~ikpm9G(phXlf2ce#G5!6 zc8T#{e?}x}7_*a)r!W|N*Goz0Qd(J&L8j;3FdPDa!BJ_PGOv~EwEU3R zzPZ}uc*dC#H8iD0dbrx8ojWnvk~PrPoxGnG(MNt73JUGo>09!0tX< z%#^o?-!YJAk`r{l=>BLu^BPqa5Qy??_M9fT|CosdGLTsJLL^inMZ{oIFOTL=?g$X!g`JIxx;nt5MTcxY7NvPixfB&`WfrHFK zN~TW5-OvIXf4T#bXDY_oxZumFG3{3Fw8c$Rua6^qZn%J$-2cH0uSp&$62zgxc!~XY zBn0G3S?f1{XxKRSQTM|q4T9G)D4u;XU}X7{p6}gtI`Cbg;nkWKaVS-4wf(UR>RS6f z!+GCdykp|@0l2pe;NGfa>@&ILSiyJ9(YmEMaKMZX1t9aw?Ay@huBv(#J?-?AczH!@ zQt=ZHM*3A(nx7X&BC=Mh2Mm@6V%o7rozHY-CEWT(=%WL+mQw@1KgmydI}$uoZ^!%T zp88IpL+eK0q4cy^|IDio;t}YB_TF({$|go@k|q{%lP6Y#0i!UcQTscH>lwMk+I*4d zcqm(2eugbTukUJi?*rPto}b~uC?+K}dW*5zgm4)8GH)_dEUtsY>rVEA$nK9rD7vT! zc#*}Jnvs9QxBMK7;N4&u761HGpXg7d+SI`w@|kmN-5Vfr{NRL5@^m=%Y3j zHx`nUbH~SEb*%Mw{1CumW)knu0hm3xSv~;>NOav!xn+Zs5ulvA-Bozn@cq$Tk1a)x z8nHJCM?Rcd?T~z8vOQS4>&HM-f_L{7${Q=~x>I@ps+DdhI;2fK<8UoddDlC*?m_-B z)vK#aG`{yx+xq^}d6o_K7d(6LHZD!VcsXJn$B)QRgCDp+{KM4EdrGcn3pQ**uZ=AK;3b*0|Ri^5YA-Gnlzx@wH+LIBZLe0kkeceyrlq0ZgboLV(w zBa)~7ZrGpRW=KtMt-lZvU^IEh-bh%0rO!w57 zx$LamIa!GvL+<{X=}n*7A2U8*47n=KhpjSgA7Em03)XiwI$@L;GE_L=TE(#}ZrI*J zl^jf`(d6Ot*54kEU)&#Z|@g!=4Luqn-S8JUx-D+fzPDokvL~Od8)!LpEic)A z^YoR091|VD+5nB=Z;&XjK9y%Dl;?v*(4huFKy^@JaHSC*J?uWZ(HDTy~ z*}h+WVsWpRUo7v4f&2dvH8pr)p5wk#Ouztq2XDrgo^Q@XegqVZ z18hEp@0<$fhY&zhPt)415hhrp1g@f4`gIY$l>)%6@_EV|$IrqKj8u#S`GARMxnr0= zwsU@ekat?OS12wbH`2D{VW#bw93LU6`jqKds#WZ7HWKaK2EKBlMZ;U)06*N`^d}pn z(PklD+nLPGN#gE1P*$?eMEi)B;im_$Xk^eK)sY8=>7LD8m~tAwTy}gt*mN^A_%zx- zK+J_>DD09uWUx~5;849B*311`sii_ac~!4==i%07J2Ua?Ws=y(MW29bet<9d#{2^n z(7sv9cN_>J*~))8>guluirXz=pVu)U&EFBt$*--I!P_y}XJxoCR@V;3m9~jW7QOD2 z``{s+5q4Z&#qJGlIH#kFT!>re_wQbjY9D>>M}Y7aYb3O`uLZ>NF#J4lG$CkxVw!h( zmbu7^^M?bMygdJMmqWJ~etFg^ogcH8YnNi5AoTv8*ZREUa~%3D*K&+uM@zkODQi5& zh4H$7rBjK(MkeB+9NH>&AivVt(|55x^w>W=cZC|xDCI<<;`>}{<3JII!M5r z=V&l8hob*5ytB)XF52&uGc-7V8*6}iu4zB8e(W#KC&FM z90-bpqb@N*eJf%U+7X8kF3l9=vOEVzrNHo4-!v(=yq=)de(g{o{;FF_$mkTLhyVCb zj@?gV;8?pX4p^KNe@)mZVChrE2VkJjFIC*pG!H}C+{f?kG zP`UWhN2=B{y;zQI48`Mkw5v7MBT=*&1RP3h(#Fc8sRekwLsI20B-t9>%cMD$$6uO) z@lKULXNTK!vI5ibK{1Cq%6NUg*b!rFjp`t{g8oJY;GYqfdkWlO6$Cjxx5hmX`f3*8 zu~qPD=ghUi8r=HN;^w!AY}{gq*q=PJn%^n>Q1pvUwPIm;jsZL@LB7bv2$G(vJc(L2V8sn zFdeEit<-gg5GfD+RZCdwgPbL6d*7LIx`>i~JWQkvdo)I=hi8x^;{mxPt`W39N#}X( zz7Sti@@ezj1`G@8qB#@DtqmlCyWtZ>7yQr)w3)=}+f+j@ffF>1dB&{8_k5PWD>Y#~ zv!LKEYMYk%5+k?IeN-#bC7(l3iSP(->!Q_Ne$)C@!29pBmB4kwHsbPY@5i7I3himA z>`|-j!7ut9zg(Q^i1DIU&)8Z2qH}mDbX;wB#gy4A+nBkZMM~a?lI^6Vhu+T~t#m59 zyC%DMA4~RmJ3`p+_TvzFyg!$g*Rg)nboRlQCOY&hDZU$R(VAi9=i1(Tu?O!xv{bVwa#X^Y*5IQhK$OS=?~EtS<@`())0PfiU_~p zz=gnc&L`^Kg<3aqBcYM&ZuvE_t}+n-=-O?KZbx{RQp{x&*H%iEcEP%A;$VvnLs{==YJepvU313(3Sh500h)X)Tz{5jan*He zz)jak$u2n?1%@21SsDH{A#6qv_m$+`;zoYlkw=v^G(a*n-#`OBlBe&8*{K_yg{Nk| z7Ty%f<2a;}QQusC6FS*}?6@w02)%x~ZtB-6Jkru1I2Fz(h-0V>4|2Xsk0Yi7H-u9S z8rg6;y4{MlEoiDoUOyH(Ij>>k0i4WvyzQ;u`Bt2NQ6s<1Y*L7<+ZfAW&B(DAPeFn7 zf0x6i9dUQA8jXoW9^9p>8O68{`-!((ef%4 zqa;&VDqo(yMblG4Jt4|710E&a66zULk%eo1!7IS9eX}_TJhBU+=T#{_uzPuBqT4ka z7pjh0saBFM_NpI4K|zk15~fBmymNQN$1O9T$J3*29^h@$7}qoNFN0+GTIEuYNigy2 zr5>?zvKb@9xBe1lZ_t&zpE7M=&1|Fikh-Ju%m!QwGNL(3D<&2pIE8SDivJVoi(3*y zR9iS*yaHs$XKawSHwy*3Nv5`#y#fAnGaM{Og;{$>WKHNc1gd);7~0%wPJUY+iCbEY zc(>=IhzRgG{n`~b6ejz2hc>+6E~B68j-k2r$b7HolHdK!)~(gV*?^7ItpIXWl$G<2 zYd6B5U_(iR>C`Ut+yR1RJW#@K;uoVjDOJgD?@0gi|YCcB`jnEPpXj*gCqv!BE@xAYf@A3UoSZ^Fxk#DL09+qr%{@zFaQI-tUU zf^1tCKo+E?S~G0tY}tPHw;?Xz9DW06dDidie*E~Vl57%afFS9kE$NGkKmf{f<5Q@4 zI{psa%ptVEikS@3INjLM`*(r-i!r8zeY!nxP6h!tc&SyPei*?F4Vf|#=UK4lO3Bx% zEp{U-sAOy`{GwmSa_1T%ff=9!dmCBOU`5a=3cx;@6ya+hgUy-i%0`^5dEjjZGahj&z zZ-Ndb`?j!*!CfRRqC+xQzG9eDGDU4N?bnm4;|7vFZeqwaxe&z=uYcAx! z+|r)@%=A_SAjJ#}>O!EpYVmWM)HKonqU5+=a&uEi1StDT&*3OPy{&se(>CrByWY9$ znYKZ*mFdqYxJ7UL&!R6pK-|iAfgBeCQ-$;R*^WSPxMC zX8Ye%EJ3EZGxC5Mf-28Ucz#n2{!C*KIz65_Hs3y|_W!W>{AmQQQ@zWd#L+j|AUpID zsCscxqZdw`5zR3pjc%qPLyzyOL=0X3TMEG}e#QGeC%~g`uw=dr%*d+E4t}&`;P!hF zs>nrx*v5RWWZBC3i95E(Z;A7vV*>`3Q$hJdqzs761$0bhWW9UpLFGNJn6)7c2$qS& z2ygG@x5Av`8%n3t1lzs13ay|14JggtSo5DUT_yH7o+eEWP(=P^c! z{rnkLv(b(1!B|4@3s8V@{TOM)6pm^(2EVwrIJwzTW8rX3ObqK6%L6$w_$MtTTb(jp zq-DHop(bb`b=FL0_9}8~3x;9*R=%%Yo5(bo>Mm54@qB$Od35HJjf8=K$au#9iGHV| zdM|fO#sf11q=>TwUQv~h?89LJCEU}N^8@MzXV`y7^Kl0mFZ=C28nXEZRdZ@J6!aP9 zCwhTno*Ni}>lkTjYhbfUhIx4?c?v~ZO!sK1;J1ri3TnO+yzqWX;(cc5PC3Qo_Y3a(F#R#RvdQiEn#{mVK0)CIjC@9b6A;%yQdN zfYk^Dx1^j$XnM<;VuTWf2@@dT*!VW6Gd>h#TbqX*n9*|8-E9DpJWY1}Hw9_nnTj zd|CA*&DM?;tP9dV_OAeSN9KSQhlXIbJ|z0V?o@Ffnywmr5R!dhE~NeYYyjzde!$|m z8U7<_gbHo^0Xm`%RY&PJ&QZ1_`n_KO&H?zMP?mOh*6~vc7V$4jXJ6xb3W1_t?XsD>bK(D_JHy@AqhOSnSrQ(d?sol#XpSaw ziyj#&68`WVfQlaxrDpe-&I>NNEZp^Si^lI&$K!rfIh?*;&_}-g%h5W#8bhz_ zu)$MKUo#W}f~YzCQXuZqbb{oYGLSDxTfRKN=~KiX)MQpNx=kE@w>JIDhc6XVq`btn z%iRMp1FV0GCu7WMA}}(fw#Ij92=P8E^jO`s?5st{Y{UX$(#C^*xhC0hLNy~ZHXf$T zo6Ljl7q9zne*zIwb{L~v&4ZC2KFZV2TkeVdBgz%G?Gj4NFvD4n7^#VKLxfWRHKLJ0n^6FOZ$YB;mY1_teH+1T8miCKZ^v%Ipc>YCu z_tgu|$N9+JGh?LnrDvwYLW@FRVPnD=?0CuCLckjv;+w^%CSSMmA2RD z?nb)vC|vFg856(UIl_1HaxvNMCU`2)IzL&yjhE~lcd&Gvc$u6#aR`lmD235$@sPIG zT^`qL517n|4QS$D17!$~eCdnzPCLMTWPrK#x9BQ-Xnq!^3Pk82n&xk1Y-vwT0xb}s zDtK4w6nS$R^$fyCYPCod$jug&9k;M{cDHqYZRO78I;SJPw!6J>Ud}vbYqqxUI7aJ> zA%`pdGp-e1%kTJ3nh%jIWXllQnY97IO9#2k7`a!OX$~^c`i7DL{I`KSw=}_$Eq+hf z?!vi^qO#I@L#GvlvZ7tg$I_chmJ*BU;wyVS@F9G5s`W>|NKn9lf__BNM#3*b!`Crh zKss6&F5{KS#A=xFU^S7b(9OhvZx%vEB0Ku3fh!g~2llp}1( zUJ0!*7UwiQhq#t*ys=P>Q@SGdiL)+@R;mX3azPjCSiBd0Ok6jOZX;cW?OpnICej1#%M98clTK8?YoM?4uH{BwG zW6Y`0vxD34SAL<0i&v*g*K4f~?S9cOs<_{CiQyZ&gDk`xx9E!}S)5|;89CY|Zr{07 zM<8r4bFNyqC1GOPiYm*Or`?KPVPQ{`PZZ zPy*3G(%qg{Fi+hCIVJ@u;{gAL0XqTy@AB(+BGv-F5>M+!m7Cpf@{hBU z^AG_JxR=1cMlkOcp%1Az0X19m&5kzKRR4&g14)dLjghgJJ3$*ez6ZCl{ycIJAPFnZ zjPcXu@kkzJ-v#~Q1Io;_Z+(arwuz$7AT}b=@$a0JFguj$zl{QbN!)GMCHDKm_9Jt8 zt4+)J4b<&$?u&j-(VU7Olet7bMtjSn7ub73>@Mue7<_W-1OwDi(V9JVZ3D#BNc2aM z?I>p1zJl*rV(M95AJlM*g+D8j3+{z)N6{2O>7k7Ml6&jg^~$nt7z;+KgJ2F;3p5pP zG%xNAAZ;%&nE8(Rg@*lAgBXcEXhD(aaU7NP7e>)?eVy3=#Axa?Kh?Zg{&iEeL?N|a z!XV?zyS|qgY0Z(!{bHb~I)f02qBBQ9%~5J;BX}IkuXr9P4?9xUptDm$$+U{6VXbqCtfBX5Y%=k6VEF#rV!xhnTTb)^u(l%TPc8An- zWJP|k=H4BMvo}hld2glf_P6x5sIK(Xz4Db3OQ5v%HPT+mTv>0v^K8wP#BlX#-^5>P^>c`gmpne7 z>g^irI~8ZD3ChDBxb;qvAneZ;x{!L~)j`d)k;1?3tfpsadh0zj_0HyJkpSk&4iK!`UGH-pB8Y&*N19DhOD67OVdOU=(S8jqcRoZ9oz7WJr{pB8sr$K3=W~2I=CEF>9^{qK z*IVx;*@()n& z*&z*RA-9Lj4l=m;=V4q#)B?iyJWPPv*&15rwEwI9ldazjxgpy*;X|LUoH?zbGkY6B z+JJ?r?AAfUAC^5ULQvBbUzoSv|J?m$E36&$Ux=2`FDm(Nrzzw&UA!V1;`)YsYzw=8 zPfFVgeD2Dw9FV+3>@|9*Pk)M46|#Fe-LhiCw0|e?v;XSk)pbEUF;+uOk0(}5?@dA% zs8?Qtk=@Y)|1=9|}ck(TIs z;3~OjPNx{r)?Ct=1*wJ(*w~SO?pKVge>SZRWc|Hx+bqsv-Gs2>DWrbg?jkG`Y-9B2 zI*J#ZMCu|h*)lvBxybs!R+xNjXSBBVJU%RA+U-v(2n5u1ajyz?5T8;iBJ7hzsr^b4 zx~?NgE@;6vZ=ru0ezRyplHy@u^&-)QR5b}gtU+M7eGnuAv?|;4xBoP>B6JWj#NF5z zB4~#GNoYjBsfmu%r?#;U;yNqCzElC)_hVWiol-xx9s>Hz(tiRp1l7+{t!;*P)&9u3 zVDIQ z3}BTDs1H^}gIwj`W(|Iu!0PfuqQeB$>`-b(V5NcEYnHlZ!1Xuqj$^G(<{3l zL6xm^cs4Y`{^I|uZ%3O3VC3_7LryI($?#UtN>4PWsm=|# z|Gbpmy+qg&o~VYl6N?^)Ln^@Y^*{=7xi;AF&3zOiITz$&{`8{wWzxzn{LTHaQ1eat z)AvEsyo9b1u#!n^I{qJ1ZCIZ@K(4J2iOzwXjsx#Q4IIkkB+2R!E$;X~kCt6>LEC*M zF2a_$ND-ewFKhI4X6LRev#&mfVcKK_|7qImb1y8kNF=%!;&%{?W|N5yGZN{5Ug{uD z!G!;rv)>#)s1|E8P`?)dM8N|w%0Bl!i!golz~5Wh*8}KTpE^x&0Q)O7LDr$*b|4GZ zjYRr__iaVqM8p3!h6L#=;RSyn!@w)6*syEKgez;aGORyL==xe)d#q1WeeB6J_n*-L zo5ffdHU`e*rf+}*+u3ksL(n!qp(|#h&|MwV{_hJlyn=rwzOOt?0_zG)spgeXYHHj} z&)eDxSAyGOx28Zn>fcUO+DiV|x{V&II$Lka-sA$=c`n4-X$oBLc;Wjj!VjeS-=>hE zW0PAiH(h3?{i9z5NJFX_sHqZPB^dmeOdBu!p5^&PhU;(RhP+nC%=l)@NL4}b>90c$ z0F!zok+a&46rJWkBA!lzrPqHhpB*=};ndb1tlpY3Pa2LwBf=$~nLKZ8BeVpH%;d=R z-9cwkY-Rr{uE=<})_`vg7Q=&5yFB^^PH?y~z)sG`q{dj~?nk!HIsId?^D5#<6*f8g zP*Rpiv@TU~EVw-g+CD;kLnw4N^2t+5gz2H|9q6>k5@ztXW4D9O6NAses}992h|{S0q}TsyGG=@s19d zU8^jN{2ksxcpLNJc{Z{tXhkN! ktLLl%|3F81KN`rAGFC-TfElccfIzNj8C-m;VUPO%0DQ^CHH50G$>U*DU?U+R;VCM}Xd)pYr@*fxG11}Y=&3>@_#c*=f`KOz63$)3 zf47iQ(#VjI=#Ug;9&3B29i+d|Cz_q@Yp;&@o`>_E0z zYW65d2Bxrg?vj#{K0iPD{>|IR$Lsj_@1ujw&FPVag(h;O$Re-%@T$mxk}N?&e0(Pc zD)8gkv(w?Eq@>i@&t?G`nVFxtYb~$7O+D@dGu=iJa-p9-9Nn5;uQO{^rU@O{kV>=~M_w$L6q{?$3UX&&*t&4Z^rh zv$nQ2flYED_TQJMBjBe~R#12^?sxI?M>PDnx&HI?LlJQ?2Z>cyV{`L2)ifdZjkj2L znHm}zyps)S;VmQ9<34@B<*&^~>POEH7TN=D`fF+5SVk_U$T%afCEBtnYL z?)`6VxcRytK3x)RdbT?uK+0+CZRuz;W$`>Dzr8)+TsDm4-^%XpeBV^l|Nb$ZKGLt$ zhfn2DF)(htkJoza@^$n1ZLRF_$+$bLxZAW&gN$r*IQ8KXPTj)U+6F=0WkMhpAX5#y;-}G3<|NS<#o%!FMTHPlMT?(g_5MO~4 zHr|^yYyZUf#ful$@Yd_Sek}bnvKn^4{18E&r->CTrD3_EK&u*VNQBv8jRhWWg=mQlP-sp31Ue(KlluD6T$$Grs#8x0i3PUc{ zCpsuga$BqHsJ9Fnw(S}iz&7S2rNYN>7W`(voITe7&&JlI{7Lf@Cb2hj)<@QCx;PDW zh+{UzZ++*^oqKngR4#ZPKGbs!$BOtBcQ~Fa zzm9@|FVoc6SS!%$7m`(DQKZg77tQ*SQIk$SN3!kH*N#$5CbYQ<);S{$w>91l8=mmB zdmJ;(a}7k8s07$J$0E%H?gp9+8-pKp3ngVsMu}b<8lzLp@s2M>N7$-~>Yw^$hh?1QxG^J-=-10__P1H{Wsh*o4V|6-iB;ppI;ko-|Ac*VP_@4AE4$% zCAeY8^Y_6d#zx!lX#5bEkjy3HT#Q+{ zOStjgOK&MeHM{mM<>9{Ds$<_|^LYM<5D8{*LkcpL>e`B7KC!h(@#v@5N3{%OzoW@o z_mJvl{t^ZydkbU1$yC=O2$lJajz@7i-RQZEYq;}0>&a9EmH3%nvKZ2!5*Km<5{Mrzp!Emq7)8WWeH~9qWKd*qh`{Q)+0j7#f1|r1(m2}grmEa zpU2dC@R{J))ME`vt4B-=vvpE9+w@!owY6TMiPcrh*%y9cGW0|wBvLFy^sIW}>xwFW zGrDEpD6|J-?YVD~Y3jYrKHIc6A7$l9Dl090pBRfc*V8mmcUsLm-+YGa?J=(IN!C49 zQ&*S&`^WN4E)+#e>0t{@CCWtXU}Ury`X4s=3RsPSCCKVXRAnqvTYM|#J*croj&8cv z6|C_CF`Ju~C=UuG-(wU7H)JwB4*B|%5$`~VXhEcUd?_Bs?vZ$DSy|`yN$08?8~=h5 zWnWJd&ReNPC9M^O9AZveH#!Zn--MPLl3dI@A+w2D&FpBD`!_!JUOY*NrIoCp>xNRD z$sch2*B?7LL`af)?9b%n!a|Ds)=+ZU($bRFslT(d`iw7YEc-`|LP^JLWaJ_TM>Y3k zSyMGqaTHySGt&{vbQ@lSqB-SzOLnC6OgeAv40t2lb3J@w^c6u$M-vAIGiUH~PO2Ku%`crHW>uvl=G=7A z3Q8@BJi8uLsv9fLDa6=#2dz^i_|l=HX+31ql5Zk8RrC{oc_aw_Z{Z4=SfK6PNSm9l zJi(ULsZ!S-{}vlFy3LoHlk?lx*Eb;dv(;W|l})I%hcNHWiRqT|P&a&CPAx2`B)?V2 ztqFN#={|m-K!HX1DAp%ay3u!g}b@nGqeP7!TT@*;Qs`QR4dUCRYFUNl{^8AvNsa z`kA|^zt)Ve0gD!$YN6!I>@N(1gYntkKE`bEQXC}GZ1M2v^x{V0Z;|=*O!1uA**CZk z-8q9W0vD@r`JM6!+sf&2KXb`aGTZi7z1(&7wR}bh7pU`##?f+nfGaEjx<6U!OT~3D zC>IORuAWTxRi4VuA3fwv#!Z$YU)t(F<}?fRbC@2uOCB?^>HlG!l_Z#!7-YUFY)c)$`}ivFt`OTFs_|bmqqv+x-8;t#-ZpT)O9eD!bba=Oa=o z6t^FZw`CyyewjK}w8q}bzTECcM$Uwc6oWO%ilU=a34Lr7i22-EgMzxSoEbKiSF>1<^f=$DFtIxX8Keox{I3`2lW9ZSM&H=l zy7t|lDVx<1QP+8%A>^Jj`up(P6J+ipG!4Pun&s+r@(l7R>VeMg8jln_^Pc(8hRPs^ z%Dj0ag|)OzM9=dCIeMrnp)Wq`Bi;IaHOnw<;n}G@GCXWac?>K$KZeKcO-gg$$O=3O z|670%DF#BDfXmIqrR~wo*~Y@=ktc05VlVkyU!LtzBjGpEF4RV z`4CImXR5?N_-Qljr?`ALe|F86gpXVA)%(A&7vY&II^WaYtFLIvTkX~`ccZ=&^6+DJ zB}y}c&-CZ%CE>WyU5)xCvp>%6@!<-*%}Zmd;1bQT-c?oeP!tz?XN#rt z=auCt(;+9KI+JlZpn#tgL#(Z;UH$?A5_KYL2^bIO(4kwk&G zpFKAfNLc9NI-L{0Dw8sE9X-lOGkIN5bm<+#B$=;{o-Azi)rNpI`F-rdYRFeKcg;tz z$F{yls-c7(f25eM)oP`z>2Z>gdD7z1%m=WQErr9H#qR|DSI@VU{#~7krKhE#7O15+ zY0Uex|9fWC;(c5}%&tpScJQi6v+jZQtD?G(Th6IPC#EDH7!|(Wxpz+wH?VP5M^m~u zEsT`Vh~evny1ts7M)e!nTVgj(FLqTIO#Zt@9t5|^c|RFhTU)ExJTIQQTV~Z4iFdTv zc!KoWDo?wF!RDKk(k8Yw(Lgktwv;`mi|;^o!zaz%xxt|~Idg+?$gCSABz~+Kygv;c zgAz53HrVF!bqfqvf15QA-aFeYw6jCI4mcDMrox|d7UU87Z&`IWHa0~6T&zbu0%Czx z^Id+QnLKl}z|zuke3O&zOG#yrU0U*$ z7ir^@d$6~}Ev%IdQF!2#`Zy>O)i+ZuNxm83#Qk|GdnlsVtc)n%NtAXYY4f~pD;>!T zB%ZS(awqR-Uy+G<|6FMlani-l!zmfG=2fuf{e-jW9m_5+6^M+Se3`(^Hq-pf;;d#7 zS@g+pU#|8oO*Bn~p?N9JAnpDRr)0cq;z#Sz-M8kk@#CyR7gxT<6PaS`U#tfa1MZR3 zXOVK*K+&vJ;$Vj7eVZa}Y)qAtn;V^x5g8?Z^4JKkWKkA=-_9Kt1zfra_QFzPvP8(GfF;z?4+*-sCg(hQTax#i&J|T)D zX^+QqH`@en;Y+_)@qbF#iLi~^{K$)niWqw~!^|!|+{96{|7*N>kdVW|ovc!!&jBBE zb8{V?owuOjxw*RsmXxq34W*dueK4nCiC232?%g`vyo;;-&*P1rc3LIcoV&Zbn3$Ly z$$WN7z3>bnV!pq#jOtyPriNNDZ{La$K15(Q}SE=XqqBD7_*pI6q>45eI2= zV?%+z-|?)b>G`2yQhojTCnX1sTY1%e)iNG_1S}l+c{x(qEWDgJIMK{3GJd-EVon%7 zrg+-MP{biEDV7}@JHEqhj4ztLr!C1&$=c>X7h;CONOf>%{`Bc>c6Ro3Q7S-7%YG+# zku(B+;MrUk@MRV(BHrB zaNZY2%JpS=nUQrJcYbHkH z;B5>iiTOS+WD<@DvAwzeX9P&4N9xJ<0Hp;EC7bu7@%QDOh0#-BEez-bVl`ejs6@-g zGqTBLnXl4D^G!IaZ)faDIvKIf_;JXv>p4vo>)`l_w@+jYUtDNG66@TFI`>A;!nTT;l(mP5zLm`6ZY7^l#8S?IQkue zN4W;nO60){UDB$msll5+kTV*F#+RnzHxNqGX@97i zjcYWuO5`#tcl-0L{^{}L6A5xf$`flKt;7_`lF{c?{GFYhj__(FO zjJw!S>~U!tO%v8~87sk`u;%mpgg<@9$qGubr{ZR{CUYykXEJ9!xse3K047 zEpPP?wcYkHAi_oiT*><@*gO6KZ>@;P$>*=3WXaR7omo)^Gmbx|CcgXf<%?2lXh|&W zA=|HCzdmMWM!k8142TXhSPDUP7zpF1g5nhzJ}TugZuV_>_-Ih-JdS=RATCY=T9nX> zBPu{M?{rFZSDSydb-liYGS=ebS@zUAIXQW*$%|dYYwzty`lI{w^vJx)D*Hba=(O$N z-r0_%8SEyiD9ba&T3ns(8h*zaSlZ^d$sOGEC^f1tSGr1Of9Sd>>Fiu8*9Zk?PXz4+ zXeu~tge)%<7hzix3kvL>nAmYDyPFK*M%$1lBPlJ&i$CFdoA+`y)<%?JkUddHj@!(2 z+s%#BApG;;TcF0~l{I0m8g}*zb8|b|ByV$A+=Qs$e;Fj@*A#ABj-HuhNqBE zaA{`I$yq+dY-Bpht8h{Z2UjVPr|c~`t0o_sw7>EXr+!4jtd=IJq=b!6CG>h!;-+Qs zDivC4H=G@Ai!Z2#R3w4wu?mWcMKQ-VibI(av<3zSB0rXMWO2%r$PT|Z*MH))^D>8y z#KOT*sva_IYxVcySSMp}bo6QXyLayvY#!8x0A1y?%Zc$H6Sx=6ey>*a(Ot=CQkKz) zszjw|_H9YI1qIzl*qcOaI3LQNxUBQ5?v78r1swbL-#_=OQ->D6OTv?_VXbDW&+05c zzddcw_S&Bj^8Hp%RMu#a-r%B;c@?Kw)SFglh{X3gw8@0h# z$kT)slg>^1{F!US^DipExX7h+(qT7AF5nwXY}WIECpnQ~KD?PxMVt&~)!dCMG7!m5xCDTF3Z#+sV6_ zA)kaE%dy3$7!n835r%SG_2RbvZIig%xLdX-;|d3^x)U>iA?CPLA?ZECWZ9M~}`RCbL-kD;am<5wsnvm|(>J$R(1Q*lF8)#sOMsdlKg(Dm$ zO+@|u{rS4mpAp+vqFXkx&-3T^VTld~0uC6QhV2g~a=EX5L5uLX%d9r#OMKf)@Y4r@ z_4W11FThh`P3;7D@u{%O9C?l%s0GE#y5t58IU0VFkyu>JdCX((EMi*Re`ImK^Q6)y ziB!&if&h=|L06|}Dfw-l`)T(w3`v8v_URneAA~!PphVf+Vm6a6O(JS@9q8&0jQpCc zjRAkX(qm7m^3(~>^Y22!);PytMaTm5sN4L4cR!>1W?jW2#It?rEHzD)m?gg9tcF@?3Y0&V|(8?}yp z2krgy;^LySQdE(s1v&_MDnF_z?$~jnMHzAk{Ssz8`{#H(Z@=|5M9)Q#;v0{}pkP;l z1dlT@-}?iZJm1UC|d`pI6;MlEU0K`<8^SU@b1e;@_!=L*#RHcyq)l2TMfEcN9|fx1~mrlqw4XI;NX`txNbv*ijii`SA}+Fuc$kF zM+C_x^LV7*`C2$e+1l&OE;-}AW%{jBx@Y(*T}_@HTg&Lg-L8R;Cj41v>GK)4Rf9;< zGBRdPl*w;D-JibYJBo7aJ+1Q-av!{*$rbb7`Qd6KgC}6MOEYY#&q0E?BG6SPPbK`X z`14hgr3l|*3Sa{_Cg-!&KaJr+0=2+$BuyB7Uu?v-n#cEfBO|S{_vy}^Yw$&acFYy% z>FN1@3t*h4qG~5psSUqv!e?i<9fc=Y9q7KIZhm8DoFLG_@&P&4!1}F+5Y?QA zu>D5IV+>M!QL5y^p1cn3?BU)lmS-L>CX^Doth1D@>^KgV2`NKr`c|Iftyo$aTG^^w zan2bou(_le%+V>%_~$8qAy|Vv7=B2_gm%$jw3-x!64N`=n{ZPt?@M|pT1|x1 z-n*sKKBZYTQX80q*i#GGnwlRKzUQt`ayn&F?qKGxLW7-aaL+B8E+iaGcpzd3d<2+f(<~`*ZNI>?#Z* zklrZ<<`iPnrVz;ncACHLvHZ8aYuz=Uf)Zs&^~}wp>wChjHZ0_QG9vT7vcFYT)e*#h z7pD8J?on4%1SmgqIlzs?ig~|hptmG2WT8nm@it7$Z0buhPigDo&%O`uQP9woC& zDwCvKU%Wy<7tawVQ`gI)PoT7bo41VsZKC*wfEDTczI#PUlvqq(qvZ=)jAx(wc)X<| zpp@19u94O>ccJ?2E+g@fy;Ym_BirlNQ8w2b8|UK52_FZR4_|;Uj8$66#~(K|2$h<) zF31?(!Mu{!8g)gw0IS0doYedFxf0-;1yeqBwU4W=ns`#EUuIZa=vny!haYVFEfKP znzdr@Kvt?hz6_zrF;$|!hTdXd71Wjqzp#B(o)${km~e%ULp(;uHF z(fH9lccSuM>uJwN?TIQIp4Zo|x|pXM>tS-bD`Z&>#oD)ITJKu?^S@Qjlx!B7zPC5d zk?$~>uixg^sHE#)VR7%()h;uYsP`Cy2y46&;Nz9clWhexH90vsbOu5!AW1@0_y-3E zD;pbckAGZ(&tBuq2RPj0el6j zFxTeqn@7k80;rU<^mwh4Uc_-YrJ!?1p+;`F$M^jKAZ_kDWA`FF1O)}>Y8>uXRac*h z+@uM6!dnl-cCrPn+Z~2eHtQKy+t6c=fve5c(ZaWnR7d-iroA0HE zLPWjw8|#_bYTk~o^Ijl*O=PRwE+Sa!<6H6Jrk3c#99sB_T5LDtV*rnx00IdwQ@j%1 z^~bLR17Bdh$E$3VYn*2Bp#by(ajFsI4Wt*N6?^#>kaK5W9|j(!V0Vse7y&KqQ^{d3 zX{OlKmChi9!Up=@2iOTmeqMHZ2?<*8zR85#=m33II8GNk&Tj60jlRz)$D~e_Sg0K0 z-4{vC>a}sXu!9FMeEX@w=p`@v>0)AZe5yhXS73R- z1jqmUy^>6gkvlp%y7+rC8j&@8^Yir783PIT;lqc5nWIlFrsgBU)$_ZX{m_o`6pux< z-kc(1F~sCZfaioA{KYv!Em}L$iEFZAZRqY$R7+HBRLn<{U|cV&98@=EoexENzkZG% z@rR3~2H{{?vYdJsvm&J%&tKFQP$Mu-_BH<8c``~&Uz4RBt?#q4l4Wap#@Cdz3}gX3 z7_^6KJ#%4=4H+D@Nr|shR>o0*$D(I>+D!+i0G_3T6u=Kp8yg#o&NpcAba%E!(!;=- z**}~EwgNY{P?aX` zPhr&?u5rl;AqBrS*9RdWb|G|Zh1|uSFjDu6pBCv`-2BkJy4U-npp5)I?lUAdn2iUg z-0_r+l!$00(d-pZ5`NRKtzk+y(sH?r5UvSt6Pal8+K&QTpywAX?5!+0)Lxcb)}irV z2?slEzpj3<>Ii1W$TX?>WJ)#aP=0$kPV`P>PfOpAbHcH!`xvM8dvEYvYdd&tYJDEC z#LbC+DkxF84M#n7rm|&AmpCP3(}{wD^_!#=LSG zM1b~c*r>|!<>lo|4XV*|!r03=yQ=s^FTVB48$!l+FwQ}+M_mbL& z)uNw1JI957F8Gud5{=f9$_+;>)_HbJ#jcZ zH`g*8Yjt^u{P$S_QtO^4_e^Y5r)tAWa+dxpS%nRyG#}>P47=cqKV_JjC&vE8L;^jq z@MruPKq&`2WdbHu1fz6rq{!&=8+@Dg&JX3Om-^YP$)!Rl*|G(syhG^8+X z^9xN%A~SA%NleORDr0I&bC?9z4Ya9?lTitTf|NVe#l8id4WSpr#Kum$7O-H0aYrWX z!2rb^(o;p#wTuLqZvU>lAmxP&ZIS%{wz?lr!ZfVbH@3rUZPqN2qaWM3WNk zw79K)Ve{RU3nvQ%c)j-b@`QMRk(v3vkPsQbo3aVND=EM_b!5`J z3}jxM7-!E5EC)7?7u5v(^*eG^$hTy+vpX~R{k%jd1KP@Ipc?+G9#QVvKH;(cN)TVU zv$Lbrqf)#MKy7ELNUKrK7I@R~dXxk`NUV_5`m!~g%Hwz8=Kb>Jo6+qOm+1Yyy$`TR zR-kc#iYEg?8j!-V`ln{KHxh`N@&3+zZjgF{&g*p9;^$g?_@KZS%zTB+NiT@b#|QI# zAOvDOe*D;ezAA5KHXf7%h{{C)>w;k1Es*>{sCjlH?=HFw9g!nH^Bk;$mHqv&v^1*t zn7fJ71MD z!Xs7Cg*SEo^Mz?Pq7zd*raS|mrh)ImudTVCpPO$(iO%Fx_aq0o<>V*tO!h!Yj%haa zc`EN%){Zu#r`-SaabGoF5k|#&W^r5HZ{!!YWc)&dbG%!rQiK1bFXRvMCt`}xra=<+ z%EM@aOsZkY)Su6s-wPc5?aj&ONGCm+)-x;eBf$=Cc(xm())zClso&zwBNsuDH}h?- z)PV0`xt$hzxTKq#TRb7Dwl>)>dAiH^cYHi zL|Sb(n*U%_gD5!qzC1lAC%#dgvxXCuE(thPpb4*lv4DUN&Mv!~>7Z|h2clq5Ff8e2 zcK7vl_4U2m%BJSAL$5%o|NbgFBFckIHty`E_SlQ{) z;+avI0oUY+;|j9W8I9X=xyhq6Q6EC)CmC;3DgQn9-=BH#clqWYEi7rltPjM(Y=@Ep z0auK*d4lzT;9g)|I>mp~Gyp6P_CP4Gtt=4!6y>`-U8uvjN4zRW$%rocJdBZIzF2< zb2@v|02)#(MnnEAbM-!V6$II0Qv%BHkwB4&O zJXj{XoA#LA&z+6Z)mN)>MUEz8|K1&DalMcgqf7f1F1&x&Ltj=&gIVGXLbmIRr}(3o zqWYvEA)wt`5b7SfsxH!NI2CJfQV=4D!?z5HfJjJd z>}azU{HOT7R6!V&a3wouXZ4+#`aoe3>R7n$xt~*?)b-LI}eHuPPX=KF9%gb%v zfds@v$)*K9LFoBG(&O^G5D;}{a+z)6`u}eemWNmgnd-g{R zr8xsLS`TaAj84b$=0xiB!;s7g%C5e90n(3?2lpAIG7+nQlp+s_Ry)J`EiD$JBwiat zv9kZx8$tPQXUE>^`NHegRxyNeQBlEdNSY2IsxEj`7hYAH%ftF*K#^<<4ejj`BN<{& zHJji9uF{f_gwO{3jecGRT{rV$^&M?^ei)O7r{^k^D4;w=;jrm6AQC4&_Eq_Fb!GW; zr4!_rL3eUWi2Z>6RARl9*awAnJX;#$zP&6nH#b48)9egOz3X?8*lFfrK*VsL`3L+@ zh95GGemp-v|2&AKKKRLy05d+TFfxy5oojO~_qzk8Z>i6&Gd%ayxAYIMPlOv{7{;Bb zpD5=tF`^JpB4mb9Z*173%mS0e(P86&d%d`qM z$lHjBh=DqQhFznhpOyOm6N>!4#Tgnaz5P65A#^ zx3FM25XVZf>AKWXR7n++E#$WHy4Mz+NY+7TY8kVE4@uwE%0wz6U(ztHAukj%d>e|6 z6ui6WY^|>c!Eu@lABJMF z4#0MHH|g^7^5^-vyoE*fzy&lZ0umD234N}tLK^G&7)i)$LZ6xOb^0;@**k8_ZcGS5 z7}&Ht4nlwb;e%AVh*x;dyVO)lc=>#da-r)P{rO2Sp!FNvvURKAYdmZubp<`y@$UG* zFTfv^t!xoe*<;0@8v%bA*1Ni(M)0qFMKYi3pob)p;FL^MJ_IMIsHn7i0mvAvio-pe$;%Y=c>|=1{PF!2 z#G9GMqWjpBq`)6JiRyPuUsY zIJtz}hX(niwy!JbH#KeF+uGXnTVK}Br*oN^nUw<6u~Fenw1Vxexr!jZbN6l#T&{Q? zDBV=ze)=UM5xsA~Gy^fg?YZu-)%RMbMAL5pjzLn{9W@S<_77+d4-eh^60__zOtNI}9d? z(%c64*vFjdXUT6eFah%laCPKzjUPY01zML)#ikh~>Of<+*9kNHMyT4Gqme6z$jAr` zP)ocrUdIk?^S-%m)jj?i7#PSDO3Q^I$is{EmO@5#NCZRj#6F=uoH<^p(rs0Wc$6!s zvm=uFkv$E+=bIdszwjb8f}ZWyS0%cpZP2PF)^H^L9PoLvL}+rtU_p({XFj_T`}pb7 z+q&h(ihR#O*M&RzR^0!JO!nOegp;Q`KM7ruU%w~=ig8&&f*24&7&{2sQ6~nzP%_TP z0bkmp3q5z|1gyx%^hFK6G^xYA2;PszxNGCr&kq_4C;I@p_-b?Osrt zfVuaXH|^rU#)GM@W~0JE;#6CsCs-5++YcI*ZFP7NK1o%(mc;$(A3aC$G{+yn+CXFUH#(>V|&deWN;0ArdU59!09lXXl@duE_2M< zUqQj45;Fg}@CkT5T$34=htQO&je@zCn=u0=#~ulI?Y127#)y1QH0JCBT&mLx2vGO7 zlcxnZ>^09lS65ewNj#z=B6`4F*X{)zR;(ixT6BDN*0a_VhHwd{KAX`(nv&1ky9-(; zx9@M~_(Z`EITg0U6lH`8;r#%gRt^u#G>(9by=)%=KeDV&$H@RV!(-(mUgoXQ%+JR( ztOS?@6cmo?V%L99o)|7Rh}5tSTRXqcR-~JvbF}0oKr&Qs7m+>zx2D1OynJ8|q^gJv z0b}AM6()pu@+*K1JaULfd7RJJKh0FarH<|AAGA^N;wHoW3%-Sdii!*%HK2~JW0yc( zd0ZET42LYB1;2Uo23Mq>6QW%IVdsT{|D)<>ygvXIyRCI&MR-I;M(Q^|FEdyUy8dx< zeH(Hh(474L{8nOI)**4Z0y?uq1-}&l7B7XXikywEp(U1L(_Y`ixC+s(LO;%h|674E)3>rpFFLaSB=D!0WO z111h$q^TBhKU68aynH5<_%rk36Ssunt%L8)4^sqP9NoU3;stePF`~5i{~-Yllz$$; z(0v{r4I5`DxB_b_g}4y>=zs|jhv0*M|Nd3Fugg_Sn89?BY!Esg{{TDz790|t6sPH8 zo%c~uvn;dFYCU(2bECQ1E|4D>)lIR~+YFK{2;|&`P*(XdTF1fy1>n?|nMSu2$dTC8 zEa)MVACi)St6hhpWFUP4@s*kwc?gq5be{1Ny?XVkrfmUIirM{8o^&_)-gR}7n)z9% zf9Hspo749@?jfy72rzqf$q373LlS%-0J*p*IBQO4MrIY}w;)ONEM*&DMvai27i9IE zzc&#(3mO&pgyV(vd;!IUe}IvRX$|DFm+6llJ|umIPd&l%5F%rSUU+=jugOwi;d1g{ z@(zuZ>eC}LNII;&CdY9d{1tI^%l zV*#y%zpDg}JlLldidSv>1F(*@P5Baj7q3@VR+MPld0iebt0cV!Y+N(pnG^#+$8nQ* zslp;?ft%Pw_}LBt04afiWGlk403vRro#jzwI)b5?6pGyBgoONGjn4j^Rp@#kSl1Lk zwjY5rro4Fq+KUb@Q?g3PyW6zIU!NT=OtUl@AcM5>4pi8(Fl`Y1AdnXDdUQKgf$uvD z=lxF+O9;l;esgV9v<^}!Cdda7(+d^^kS5=(9VCA>$wyP@zYT>z{2Kj=h5IYS_GicM=?^86>6 z<+XO45JbZv;TThT4i&RdrzAnQYO5CzS?z>B0B}P_X@@ny;f6ZMN&F5m!m};@UGGCf z`}u20P?0-@0A|=iEMz#>peabr)s?esu8Q@g_C6)V6b;cGcXfS0-waY=(wbj_bW84z z?FdA1J7#ASXEgf1f2W31Sn2)byv64Pk*SLCcyY9tT|3JW#i*QMuT#VnfSZgN ztisbE!Ta}vW@d&7tA__Q;cTUxBPPBWZ#bJ7R5aq|6I1>_w(JF-rQK^{VseL=7!fwS z>yR&T;U_NWvhXP$!x`K!@KVavx1d}a#-FWvG$PoAuonZv$+Eu|RVf#Xf(Xh{uw^0e6R_pe`?tjb!?=hHgPwJC#2oLk2xPJN>?;mdx985KujuDe=S{=w$gXJ4kQqGwg|` zOede7KI`u7Ee;1;P<7MOAXhV6eWw;bgO$}u=ES=tCLmEj%7!;tS2=4MD^D{NuJB}w zJSg{wG+=|VYyTY732w)!LPt**B-!JTg&Io#t5a4%=eaCi!52ryWiNgITwWsht{wI8 zf4X(}!+51UL*fdqFhT#}?~98Zt1TY@fSyMl13VP^m~)6K6(O0Lu{<3LlFg(j4>UpT zOXGzLw*0KDj*pJy5mn!vmALW}O>{{^WzZcm?M4t8Wq#?7t}Yaqb?tkx?EelJV6iid zuVN=~7+9(h<6*z+dTeiBsQWzvL|-LCWjR^dd-U{D>*7GF3|}x*@gs7L@Ftw%9(n(y zi-D6ZegtJ?x)&?a22!uK%iNHUek9JwnD_Dc==&p>_G2(bwCXI^#u^bVL8r;->G+vw z8Iwi|7p2;yN18=M$;rjjV4@!=U7HB5Dl)|usfHJqLvZ32G+sS&r|}###Nh?Vgo2c> zmafE3T@4~eEAfUPM$?NQkvvwt_HlPHQ6X(C2#zGe-_=R~3N_y`y2y+MvTT#yw;ynD zbOU>;5zmKpg!wdXKqX~S4s0Meoa)m@vydYZ+`W6Z!~p}&-Q^TRl&zy9n_8xL882`- zX(Qg}?(W$U#J;W^$)%+nhPFQIy%EaSCeAAHThk?a=(B@VLJ%#6`dRSH*Ui&YT3b6# zDTfTOGW1s+LQatKf%EGuJs%wJ}<$R)kuQ4pIjrTq5nnv z7C}vM;Ci>mz23IP2BFbq)N4L|D@#jPT@E#v!$JX#-9TUeJrs!eO2{7+M-+i0UUT)T z-qql``Nh1mFHO`tP$J{~>gwv`s%?k0t=YaUH;I_r*}Vf&fs>Juu{lr!iUt$`T_2ui zNT&jZEY^dlBV&d)yC|uKkM%jPLYlX;qD!AIt|qqO2$!#wg1dt7IXIrE>{Rsg)tE zoANp=BwHpR4IJ=2;w!6;ivge&3Yvj+leZH5B!s3^AizW9UvW0cm#hJK*~Ao$ftpYD6fH&1Y~5 zCc#%%fmr_vyulrYS~Cx~noF;R5~dTM4REIG$w%4h>XHDND&pPR*wD7Xh^R{50YedB zkHFiPa`(X30bI#u1*&3BfBe5C2qN=8vG)q@x3=6KNeB6GTqz@m1%bzHS%5#CdI?Y4|B*o1n`WtpRIkUNmBZxh z;>ZXBM~m#*JA;(sqrnu*3U6E$38Z;ZJCS%;VxB@Qn&Fidb3=Ez=nh%EI*akEyS@s`9G&HX2--m*M{y0u6Rq%rc4fpE3lCu-w2p|;Y6HAjZ z2Efo3WO!V5mRcVnqoACXMqgUFxI}=+;1K6~yoQDtS6By>F>Edpd}iPwSugI2xPCmf}H=wS{RpoUsX4UGo;dhdlZKYIL+V! z?9T2NdGu&Rl=D_>>2cq6KD9e@d} zmChAo4X=Q3$^BR+)rsP~ZMb?4n_-|^FzE(jZ9R^t09&40?8c@%#yO0$XS}nV`uS)miAOrm#lZ&wzcxg~Jh#Gi&yzrz zG8+0P!pr;Xd?J(FMvz9JTm+UmNxLu46E+-XSjMVK_aT=F-&(=m-_!PgfzyE`b(U@* z;Aij{mkcH*CFvKrGUcy93D7F?dHMIkJy!<@BKQ9t-JvuE zhA%)wOJv{W!M9l$dv$vg!RpF%@rob8dv$a=OV|XQf(YIt9bTo(7HMHX9n+Z^RoIY) zgibt-y3c@&tgP7Z*RSt+%GFTc9KGL6X(e6wIz?2RDzBBTZVrLTIRJD6LLiI4tY^&t z>VsiDGyh=7-^kb;fFU8|xup{CCBWa<*of$m!>Nt-Nvo zanTr-OU`Dfr>Cb7{R!lo5V8Jv(mEjBbllwPR+NvGVU!z4T7;LRaOpnxIzpi5}?!byi-&rWTHP88o_0OH<&j|S-H{0@W@6BEUy)!CqZ zB|!plm^%%4hi=a&YAUJ<(5K=nVU|QCiTm+>gS^!V!bN0dRkU$N%vd}y*^9j=9WrM4 zAOm0?R9L}cnh>C6>md0*sK0iGpj(B{iEUV0)K02ynIQs#{Ra&ZVpK#smtblHd>f7( zWwD^#k&sU&h;O|igqpRbeZZ*C&*PwJtQZs5{Ll6S>TK-bvgu?YC(SU-ks#3eVb$c9 zU>qKh8PcP^gNbHnarE{r>cyWwiAE@+Q{c5*EQ?S7`2*s@TbscI2mkONZGR#YoWbiw zD>J-HkqQ84GT}D>Kb09HUl^UK$+>|)njJ8*IXXT3M%w=O7tZkO7w+zlWn@q(9=bZy z4-X~6_ttRWZ?oYghxyQ=V|`fs`XtY^*jNb1Ra)r{Mox}&1LUuQLBI#~uc;p6O~2UH z&qi$%PK`+7Z@NX0daq|TU^~n3bDG|SS}8tHio3fz;sQp}7Ho5>rSN01>y{S&q5>T% zm+>ni0R#w(uQ?$IVT1$e7(n12uJ*s0MJc`z)BsDoW`tYf-|1b1HA-r71_l;ARW=wqi@?XbiJ@7qWg5X?BGY}SqKS>k115!=#>9NR* zBNZd5#C~gpE@tN?ZP zF@5Ds)|2qc31-4Z!aH2DNzWN?PnK`2&MDtvnEuv_ ziq;WfCM-RvDV9=MSqU`*0|B%5y}PV=E5U?C2&kWzVG=^TMmIrHBdiq~dMxR7+w((; zwu?0!2=14Jzc^eVhN3)m*`S=j(fOY*pbLX;;9!jJc~ZmzVnoPC4KIFV48Y?)0@!Oy z!leqnsqnCRJB(i;xCea%X1*opI1so{jgRDk?T-kR-IB7l-pBxNY`gfI?vaTwsIgC@ zhamafpJhHQ_%9->3WfjyZ5fK5b&e$Y;1ZuQd@4>{)I_OHkaMj62hlXTe;|cgc+C#YA&wwQgrn{8uO^l*kC@mF=2qYa|KH0pj zys+VRI(VS!_2+YC1wNpDHAF(fZ5bXu11Qcg?d4d3CKGgIorBRUk|}Idq(lfyKc2e| z1t%P)V3-k;71HPXTTVnoMA~zO0so^)i36b|%Y8QO z@^~@e>Y)TZstv5%MqOq?Xrzw`6uon*w63;q#}Fay!$~mk+t4zJIOdf5$h+bI$E74J6m3@IrLc(2FOY7si-_<7jNgxv*Tw~W@@FTgmb@ojMqZ2xsB$JVh`X^os zAJt#^ectHMv@ex7xwxZ-x&UUiJeQE{8_Ro{loSHgV;&sUB@nqmI(|KxGPCIe^sz8F zUc%sju-q!MqeYAyP7`c$J_zy004{rRAJ!?bIfAYm3V3Mfm_1GME)FsR>;*J7tqk}i z=xrkG`k%Al@S&G3djc_E>Xcv*=(7Ff{APv*6D(H z6ZC8`i`#{CWsZid5CMk@T#x6tHwbjt(Jq?^C;5Ka}bXybmyr~059lwtIoZX1LF-1mB?NO>&>TXJlBWwj6`bftw>@@l(_T>a7T zBqSsrjn#a1#z*1OOXt*ixl`j?y?b&4>tnU$6UzLt7@}uAA@D@Wex_WXaa24!8?co& z{mpF}M1?mX9gTU4aD?gT>+3f^>nSNIxqt4)`w@sw)rVGh`35y}CpkUL^d-Q(5km+na54VXtFIYZ zS&B=nCOLXa#W%U+%?VX0YS+krz3w{(EH=2hBNoNQcA7W+?h5K1o?4LLlBa9-S&HO? z!R<6|Qb#MU;Ax%tcseGs;MT!)Ys|5#lAoWf0<`K4N>al_tJK2v{Rbz9f8+So>3uT8 zdlv|ME1*_JUgr2(NDjz(zGzaK-PFW(B@J(_O0GTZ^Sg&1LDJAHwzuj}Qvl9Aq}c>) z?^j`&>iwHbOKF<_E{N*ix)lSQ4bocF6?4`HJQE3tiJx3AUR6)DDL2)#u!uG+(wUj> zc?L_0n+({a4F$O4v);J(1}2|n=YN9#?XOy&M8U(cfuujV7%r2cll0<6Ze=9{MEv)? zz1M-;Mjl^G3>89wZ2DZI8~pq^q`qDzUEU83>ShPP@ezDpU>R6JkUX!Zp}~^4C(YoL z+6ATp#NVArEBmoHzY+`%@M@7DLzX`*8(|MOZxsrhJ4ge7S3H#yqP#JA;nwgum>#k7QFNpCztg?|0&0~N=lC&+)B zy40f9O{~9TQL#(9NPg7RK0M>V2zYryKXmoV+mw2u~ZebxQ zT+`H{Koky|lXQxLH40#(!o&P7U8<{E3xutvXk*Cq$?+aYg;Yy^E7aP<0wN+9sPPfs zBLLvi?rsQZ)PVao*A#X286;V#x3Th{ovZfb_dLb*U0j3!K7;{FFg27Xaf>+?gBUy% zPYwneN$SDh3dgDGU@=X0_s)9nz_wDr+B(1g!9(GiC;XT^ga}@(PBYR)i(0Xw9~)4z*a4d~Y49#nEit6DR0MpBZFc3^ zcs#XG@2lgz_xnzcEHn--vBau@hj@R# ztq060*rTK5)Kr%Iq3ub)KYkf2`Fa9xfTH1ub<(>9!QTvch^EUPYYIJyE^?3h#Fs*Vmdu2G} z9nk*8pq`T3{b~5c7DoV@9$XKyL`so=M;vYjf*n!X4f>7O+x3tqL9yOj&}^SERNShql|2>q|w zqvxqTlTMA4ls77Tu9zv=<#$=!a+XXDxO}^rDa>}GjZzeuD|o&Bw-MeL1n1LWzeiet zuvi%|2S$JVsHK%EDd^y5K&EMFc^+xTMLfwyMn>Szwdf{$t`Q190@UR>$S4r;R<9Hp zmYSQJZ*($QBgNM~w6-*O(ED8emw^`>o}lnwxv(Z^M<~6M4m}e@W+y4M!nCUKhFf^-q@F}H(P8T7A2eG(GVX{p>}EtlaLhN2vJ_6 ztDlrpd?G)Ib&i`i6U#R!h6w_QQGDr<%-E9)v}k>XAxI67${^8aS5+~>jS{zu4LVne zvBWYfJeCGBJha@to5tCM{c2snkqmNdySgxyH8t(`Yl46H!uu@kU}J#mqm|#LgP2U+ zXr(wmXKRLr%?Y@G({kuu%>+^@1OKvEYQbnB)XdWO2S07~0+t9fny0=$%G?V528y8_*6o?Kd4%h5rR)Joslgy6`n;r8B<#V4W_(viM&y9CX8a`-Es@>nx*XW2j zt)UixgBvpDf&tPTMM>Fix8{2H?y?2w@GE<}^F&dszzI=7!kOmd;raWBV_;oWcV_YB zfbTQUqI6?pTzZ+7AL{mW(r~N0(~`~LU{70X?_(}!+EPmM&mIX*50^P$?(FRRBJw@Xo_z)~ z(}{(;de8J=cR+g3te@GW$7;iK_v&!l4`U1SgM-T<2Yh6XDFx~D1ksw|G79wQWQ7uJ z6b&y4i9@%$k3yvC6gkIlW9;&BmfEnS`oB9fvu7?mS}w}!2YmPH{L(!t=eyHj-VlXJ zMpX{CZ+lLsxj-l7E$nv1V#-VAyCyM|@Eh4{CrzT0c*NqzY%OTK; zT`U)P*?ESWN99JX$;iqhnO7su2Bye*&tM({icW?CdG$p8D--Jd*no|g9spm#p1wXy z#)vQHgid-_sMbZKEi$;IUy_Ap8trD{V9QHRKAJV>r~I#-cNJI1pOK5&dCViSb^80- zTg-;O#%Wz@NBGF@edz-4wSuC{3H-kN16Cn;mb5N8na!pBgZp#1FvuEBti)MG%Ws|oGr55H}dfcp9aep)jF4{Lme7kGLG~>dgBIWLBAjk~kbp!G0Xmfckl;rVBdalGqCx$jvpN)Tm>&&80U%#vM@fsacK_k;9;Vp z(;ubO?8UJ!g=11VEtS5OJIpuyOXRYom{ySz?gcI}v1Ln+IV`AsCa`WYXg$sBv$>_s z?G*P5j7pdodc!l9)#5ygo=9rLX{sD&emwQ6g+JE(uT!#PbbdK0Q>L!n=A%Rc`}}GP zdryN~$Yt!E>T!^0G`o4Tl3P!`usc4TmztEw6O16<&{l9_FJPsp_t#KI79QtBy4`z| z5<`OA%MA3Ms1E15gWJCtcL^G{q%(B*e|pKv{L=Yr{q~HbxwNG0^(^Dguf?zG zM}H-krwW^BooX~L5Hj)e{h$zPsSjBzfh{p`-* z;m*_TC$yP-yF$HK%Ei?yXtF*@1=r8tqb}77I#w9B;1Z}ZHN7|mKQs#G14hT>Z63?h z!P0g3=X-z>6b=1ZzAmq5#OBLCg5<=0GRJU>1Ie8su^v*m=2j|8ZXc9V zQfix62BDh_Nm4-PZR<~OGoz|^Mfd}pyk=c4#+~~(Xq29C0YwWC`gSe4OD)6u*v{I! zX;U}_))@HVpI&55_fKz@n+2aV=8!6?2o@z0-sya6n$%%C`f#s0zA4&I4XX|p_bsl( zcvaCFSVTvF30?sLac7b)EdjMM-234JO@4m97Dd-4Ve2z@EK0|UZfKTnaF&6nda^)c z#){*TR#{+a@^*#d+^+W3UtY35X~>Sp7F+g&SyyCloqCB@I;9q!D}FnLWiAHG{CD>k zo71}5KpX!wZtU^1_G3~OveZf^2hytUz%LJD0}r@Og|rqE=<#dbZd%By&8z^;^27pI zqfbzLpK`r8#(pi@8Pd`tzGut9>FMbUtul8wzPY~ZePJ_Hcvr^q|Q+4T7?b%h)odsSrFGQG1V%`NV5>qtHH|3WU3aS(fb~ro5 z#AJ)hU}8_}vp7|mFFmTy{`Gh+%N+pHBN@}j6PTPr%g8?>B+&C(>A}ECNJ0^qNoqI3 zWl%}T7DXo}tkV)hOd&2)<^3~AKb6UIxjS0Sd(qlaz;L2^WPovH?z&i_hidlTQCc(G4 zyu04BuWw$+G5!yE85B3*{c#6ua)L$c{pxZ9(=5&8>hv?mdCB)M2JjY;tqEM;F4&&%hH?5i`Y){s9YT$>Byj zZ8HNgCyzb(fthz(2t^lIY+M0f^%4-@DIfz>1P3*^7bX%MXOuPWj;{-$qq&oaD1394 z#la;PDGUE(CM1YUeYWR>d_#^Szpm`*={W`kW`I9<@;zRW5fN0FkwC-j%ofybx*}#3 zJbNH;T8Cog;Jx8xtNg08^tczw(c_0+Ub`3Fx16ir6A+wgL;gm9pv0-Oys5`lFwo5m zJOR6D$a^SZNW}mBYKYbw;Gwequ9!5BA1@?ZkA`8z;DyJn=mN%|`LR($f2=oxndAf1vj<*M{?(m7 zRd z+uNYN8*XF4D^zTF<5YyMwzf9Z=n+KOWZ8|L+}d-<;lMEqun|xOp0bfj>yt`NOPe4t z?Yrag13`;Mpcg&3lJ*4ow79;$zS2P&Z>J+gs{Dn&NyT5A;Lku1sH^Izlq%cc{s+UC B?_K}^ literal 0 HcmV?d00001 diff --git a/assets/dockmv-logo-vsmol.png b/assets/dockmv-logo-vsmol.png new file mode 100644 index 0000000000000000000000000000000000000000..34c2004425a6282088b7d0a02a1ff9df07870186 GIT binary patch literal 6996 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 YIZ2ROm}77Wj>#~TC2hwZt9{>OV literal 0 HcmV?d00001 diff --git a/scripts/build-release.ps1 b/scripts/build-release.ps1 new file mode 100644 index 0000000..df80c34 --- /dev/null +++ b/scripts/build-release.ps1 @@ -0,0 +1,228 @@ +#requires -Version 5.1 +<# +.SYNOPSIS + Build the docker-migrate web UI and cross-compile release binaries. + +.DESCRIPTION + Produces dist/docker-migrate--[.exe] for every target, one archive + per binary (.zip for Windows, .tar.gz elsewhere) and dist/SHA256SUMS.txt. + + The PowerShell equivalent of `make release`, so a Windows host without make + can cut the same artifacts. The web UI is built first: vite writes into + internal/webui/dist, which the Go binary embeds, so the UI must be current + before the compile step — that directory is committed, so -SkipUi is safe for + a backend-only iteration. + + Runs anywhere: the Go toolchain cross-compiles with CGO_ENABLED=0, and no + target needs a platform-specific linker. + +.EXAMPLE + ./scripts/build-release.ps1 + Build every default target, tagging archives with `git describe`. + +.EXAMPLE + ./scripts/build-release.ps1 -Tag v1.2.0 -Targets windows/amd64, linux/amd64 + Build two targets only, named v1.2.0. + +.EXAMPLE + ./scripts/build-release.ps1 -SkipUi + Reuse the committed internal/webui/dist instead of running npm. +#> +[CmdletBinding()] +param( + # os/arch pairs to build. Anything `go tool dist list` accepts works. + [string[]]$Targets = @("linux/amd64", "linux/arm64", "darwin/arm64", "darwin/amd64", "windows/amd64"), + + # Version stamped into the binary and used in archive names. Defaults to + # `git describe --tags --always --dirty`, matching the Makefile. + [string]$Tag, + + # Go toolchain to build with. + [string]$Go = "go", + + # Skip the `npm ci && npm run build` UI step. + [switch]$SkipUi, + + # Remove dist/ before building. + [switch]$Clean, + + # Build the binaries but skip archives and checksums. + [switch]$NoArchive +) + +$ErrorActionPreference = "Stop" + +function Invoke-Checked { + param([Parameter(Mandatory)][string]$Exe, [Parameter(Mandatory)][string[]]$Args) + Write-Host " > $Exe $($Args -join ' ')" -ForegroundColor DarkGray + & $Exe @Args + if ($LASTEXITCODE -ne 0) { + throw "'$Exe $($Args -join ' ')' failed with exit code $LASTEXITCODE." + } +} + +function Invoke-GoBuild { + <# + One cross-compile. GOOS/GOARCH/CGO_ENABLED are process-wide env vars, so + they are saved and restored: leaving GOOS=windows set would silently + poison every later `go` call in the same session. + #> + param( + [Parameter(Mandatory)][string]$Go, + [Parameter(Mandatory)][string]$Goos, + [Parameter(Mandatory)][string]$Goarch, + [Parameter(Mandatory)][string]$Output, + [Parameter(Mandatory)][string]$Ldflags + ) + + $saved = @{ + GOOS = $env:GOOS + GOARCH = $env:GOARCH + CGO_ENABLED = $env:CGO_ENABLED + } + try { + $env:GOOS = $Goos + $env:GOARCH = $Goarch + $env:CGO_ENABLED = "0" + Invoke-Checked $Go @("build", "-trimpath", "-ldflags", $Ldflags, "-o", $Output, ".") + } + finally { + foreach ($k in $saved.Keys) { + if ($null -eq $saved[$k]) { Remove-Item "env:$k" -ErrorAction SilentlyContinue } + else { Set-Item "env:$k" $saved[$k] } + } + } +} + +function New-Archive { + <# + Archive one binary. .zip for Windows consumers, .tar.gz for the unix + targets — a tar preserves the executable bit, which a zip made by + Compress-Archive does not, so a downloaded linux binary stays runnable + without a chmod. + #> + param( + [Parameter(Mandatory)][string]$BinaryPath, + [Parameter(Mandatory)][string]$ArchivePath + ) + + if (Test-Path $ArchivePath) { Remove-Item -Force $ArchivePath } + $dir = Split-Path -Parent $BinaryPath + $name = Split-Path -Leaf $BinaryPath + + if ($ArchivePath.EndsWith(".zip")) { + Compress-Archive -Path $BinaryPath -DestinationPath $ArchivePath + } + else { + # bsdtar ships with Windows 10 1803+; -C keeps the archive flat so it + # extracts as a bare binary rather than a dist/ tree. + $tar = (Get-Command tar -ErrorAction SilentlyContinue).Source + if (-not $tar) { throw "tar not found — needed for .tar.gz archives (pass -NoArchive to skip)." } + Invoke-Checked $tar @("-czf", $ArchivePath, "-C", $dir, $name) + } +} + +$repoRoot = Split-Path -Parent $PSScriptRoot +Push-Location $repoRoot +try { + if (-not $Tag) { + try { $Tag = (git describe --tags --always --dirty 2>$null).Trim() } catch { } + if (-not $Tag) { $Tag = "dev" } + } + + $bin = "docker-migrate" + $distDir = Join-Path $repoRoot "dist" + $ldflags = "-s -w -X main.version=$Tag" + + Write-Host "docker-migrate release build" -ForegroundColor Cyan + Write-Host " go : $Go" + Write-Host " tag : $Tag" + Write-Host " targets : $($Targets -join ', ')" + Write-Host " output : $distDir" + Write-Host "" + + if ($Clean) { + Write-Host "Cleaning dist/..." -ForegroundColor Cyan + if (Test-Path $distDir) { Remove-Item -Recurse -Force $distDir } + } + New-Item -ItemType Directory -Force -Path $distDir | Out-Null + + # --- Web UI --------------------------------------------------------------- + # vite's outDir is internal/webui/dist, which embed.go embeds, so this has to + # run before the compile — not after, and not in parallel with it. + if (-not $SkipUi) { + Write-Host "Building web UI..." -ForegroundColor Cyan + if (-not (Get-Command npm -ErrorAction SilentlyContinue)) { + throw "npm not found — install Node 22+, or pass -SkipUi to reuse the committed internal/webui/dist." + } + Push-Location (Join-Path $repoRoot "web") + try { + Invoke-Checked npm @("ci", "--no-audit", "--no-fund") + Invoke-Checked npm @("run", "build") + } + finally { Pop-Location } + Write-Host "" + } + + $embedded = Join-Path $repoRoot "internal/webui/dist/index.html" + if (-not (Test-Path $embedded)) { + throw "internal/webui/dist/index.html is missing — the binary would serve an empty UI. Run without -SkipUi." + } + + # --- Compile -------------------------------------------------------------- + Write-Host "Cross-compiling..." -ForegroundColor Cyan + $built = @() + foreach ($target in $Targets) { + $parts = $target -split "/" + if ($parts.Count -ne 2) { throw "target '$target' is not in os/arch form." } + $goos, $goarch = $parts + + $ext = if ($goos -eq "windows") { ".exe" } else { "" } + $binaryPath = Join-Path $distDir "$bin-$goos-$goarch$ext" + + Write-Host " $goos/$goarch" -ForegroundColor DarkGray + Invoke-GoBuild -Go $Go -Goos $goos -Goarch $goarch -Output $binaryPath -Ldflags $ldflags + if (-not (Test-Path $binaryPath)) { throw "go build reported success but $binaryPath is missing." } + + $archivePath = $null + if (-not $NoArchive) { + $archiveExt = if ($goos -eq "windows") { "zip" } else { "tar.gz" } + $archivePath = Join-Path $distDir "$bin-$Tag-$goos-$goarch.$archiveExt" + New-Archive -BinaryPath $binaryPath -ArchivePath $archivePath + } + + $built += [pscustomobject]@{ + Target = $target + Binary = $binaryPath + Archive = $archivePath + SizeMb = [math]::Round((Get-Item $binaryPath).Length / 1MB, 1) + } + } + Write-Host "" + + # --- Checksums ------------------------------------------------------------ + # Over the archives, since those are what a release serves. Written in the + # `sha256sum -c` format so it verifies on a linux host as-is. + $sumsPath = $null + if (-not $NoArchive) { + Write-Host "Writing checksums..." -ForegroundColor Cyan + $sumsPath = Join-Path $distDir "SHA256SUMS.txt" + $lines = foreach ($b in $built) { + $hash = (Get-FileHash -Algorithm SHA256 $b.Archive).Hash.ToLower() + "$hash $(Split-Path -Leaf $b.Archive)" + } + # ASCII with LF: a BOM or CRLF makes `sha256sum -c` reject the first line. + [System.IO.File]::WriteAllText($sumsPath, ($lines -join "`n") + "`n", [System.Text.ASCIIEncoding]::new()) + Write-Host "" + } + + Write-Host "Done. Built:" -ForegroundColor Green + foreach ($b in $built) { + Write-Host " $($b.Binary) ($($b.SizeMb) MB)" -ForegroundColor Green + if ($b.Archive) { Write-Host " $($b.Archive)" -ForegroundColor Green } + } + if ($sumsPath) { Write-Host " $sumsPath" -ForegroundColor Green } +} +finally { + Pop-Location +} diff --git a/scripts/publish.ps1 b/scripts/publish.ps1 new file mode 100644 index 0000000..51b5e22 --- /dev/null +++ b/scripts/publish.ps1 @@ -0,0 +1,441 @@ +#requires -Version 5.1 +<# +.SYNOPSIS + Build the docker-migrate container image + release binaries; push the image to + the Gitea registry and attach the binaries to a Gitea release. + +.DESCRIPTION + Builds the Docker image from the repo Dockerfile, tags it for the Gitea + registry (git.azuze.fr by default), logs in, and pushes one or more tags. + + It also cross-compiles the release binaries (scripts/build-release.ps1) from + the same commit, so both artifacts carry the same -Tag. Archives cannot live + in a container registry, so -PublishRelease attaches them to the Gitea + release for that tag instead (creating the release if it does not exist). + + -BinariesOnly ships just the binaries: no docker build, no docker login, no + image push, and the release upload is implied. + + Credentials are read, in order of precedence: + 1. -Username / -Password parameters + 2. $env:GITEA_USER / $env:GITEA_TOKEN + 3. Interactive prompt (token is read as a SecureString) + + Use a Gitea access token (Settings -> Applications) as the password, not your + account password. The image push needs package read/write scope; the release + upload needs repository write scope (`write:repository`). + +.EXAMPLE + ./scripts/publish.ps1 + Build and push :latest plus the git-describe tag; build dist/ binaries locally. + +.EXAMPLE + ./scripts/publish.ps1 -Tag v1.2.0 -PublishRelease + Full release: push the image and attach every dist/ archive to release v1.2.0. + +.EXAMPLE + ./scripts/publish.ps1 -BinariesOnly -Tag v1.2.0 + Binaries only — build them and attach them to release v1.2.0. Docker is never + invoked, so this works with Docker Desktop stopped. + +.EXAMPLE + ./scripts/publish.ps1 -BinariesOnly -NoBinaryBuild -Tag v1.2.0 + Retry a failed upload: attach the archives already in dist/ without rebuilding. + +.EXAMPLE + ./scripts/publish.ps1 -NoBinaries + Container only — no cross-compile. + +.EXAMPLE + $env:GITEA_USER = "kawa"; $env:GITEA_TOKEN = "xxxx"; ./scripts/publish.ps1 -SkipLogin:$false +#> +[CmdletBinding()] +param( + # Registry host (Gitea instance). + [string]$Registry = "git.azuze.fr", + + # Owner / organisation that holds the package and the repo. + [string]$Owner = "kawa", + + # Image name. + [string]$Image = "docker-migrate", + + # Repository name holding the releases. The image and the repo are not named + # the same here, so this is separate from -Image. + [string]$Repo = "DockMV", + + # Primary tag. Defaults to `git describe --tags --always --dirty`. + [string]$Tag, + + # Also push :latest. On by default. + [switch]$NoLatest, + + # Registry username. Falls back to $env:GITEA_USER then a prompt. + [string]$Username, + + # Registry token/password. Falls back to $env:GITEA_TOKEN then a prompt. + [string]$Password, + + # Skip the image build and only push existing local tags. + [switch]$NoBuild, + + # Skip docker login (assume already authenticated). + [switch]$SkipLogin, + + # Skip cross-compiling the release binaries. + [switch]$NoBinaries, + + # os/arch pairs to cross-compile (passed to build-release.ps1). + [string[]]$Targets = @("linux/amd64", "linux/arm64", "darwin/arm64", "darwin/amd64", "windows/amd64"), + + # Skip the npm UI build inside build-release.ps1 and reuse the committed + # internal/webui/dist. + [switch]$SkipUi, + + # Reuse the archives already in dist/ instead of re-running the build. For + # retrying a failed upload without paying for the build again. + [switch]$NoBinaryBuild, + + # Ship only the binaries: no docker build, login or push. Implies + # -PublishRelease, since building alone is what build-release.ps1 already does. + [switch]$BinariesOnly, + + # Attach the release archives to the Gitea release for $Tag, creating the + # release if it is missing. + [switch]$PublishRelease, + + # owner/repo holding the release. Defaults to $Owner/$Repo. + [string]$ReleaseRepo, + + # Gitea base URL for the API. Defaults to https://. + [string]$ApiBase, + + # Replace release attachments that already exist under the same name. + [switch]$Force +) + +$ErrorActionPreference = "Stop" + +function Invoke-Checked { + param([Parameter(Mandatory)][string]$Exe, [Parameter(Mandatory)][string[]]$Args) + Write-Host " > $Exe $($Args -join ' ')" -ForegroundColor DarkGray + & $Exe @Args + if ($LASTEXITCODE -ne 0) { + throw "'$Exe $($Args -join ' ')' failed with exit code $LASTEXITCODE." + } +} + +function Resolve-Token { + <# + The token for both the registry push and the release API: parameter, then + env, then an interactive SecureString prompt. Read once and reused, so a + run that does both does not prompt twice. + #> + param([string]$Provided, [Parameter(Mandatory)][string]$Purpose) + + if ($Provided) { return $Provided } + if ($env:GITEA_TOKEN) { return $env:GITEA_TOKEN } + $secure = Read-Host "Gitea token ($Purpose)" -AsSecureString + return [System.Net.NetworkCredential]::new("", $secure).Password +} + +function Invoke-GiteaApi { + <# + JSON call against the Gitea API. Returns $null on 404 instead of throwing, + because "does this release exist yet?" is a 404 in the normal case and + Invoke-RestMethod treats any 4xx as terminating. + #> + param( + [Parameter(Mandatory)][string]$Method, + [Parameter(Mandatory)][string]$Uri, + [Parameter(Mandatory)][string]$Token, + $Body + ) + + $params = @{ + Method = $Method + Uri = $Uri + Headers = @{ Authorization = "token $Token"; Accept = "application/json" } + } + if ($null -ne $Body) { + $params.Body = ($Body | ConvertTo-Json -Depth 5) + $params.ContentType = "application/json" + } + + try { + return Invoke-RestMethod @params + } + catch { + $status = $_.Exception.Response.StatusCode.value__ + if ($status -eq 404) { return $null } + if ($status -eq 401) { + throw "Gitea API $Method $Uri returned 401 — the token was rejected. Check GITEA_TOKEN (a registry-only token works for docker push but not for the API)." + } + if ($status -eq 403) { + throw "Gitea API $Method $Uri returned 403 — the token is valid but lacks repository write scope (write:repository)." + } + throw "Gitea API $Method $Uri failed: $($_.Exception.Message)" + } +} + +function Send-ReleaseAsset { + <# + Upload one file as a release attachment. + + curl.exe rather than Invoke-RestMethod -Form: -Form needs PowerShell 6+, + and hand-rolling a multipart body in 5.1 means loading the whole binary + into a string. The token goes in a --config file, never in the argument + list, so it stays out of the process table and the shell history. + #> + param( + [Parameter(Mandatory)][string]$Uri, + [Parameter(Mandatory)][string]$Token, + [Parameter(Mandatory)][string]$Path + ) + + $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source + if (-not $curl) { throw "curl.exe not found — needed to upload release attachments." } + + $configFile = [System.IO.Path]::GetTempFileName() + try { + # curl --config syntax: one option per line, `name = "value"`, and a value + # may not span lines. Only the header belongs here — everything else goes + # on the command line, where a stray escape can't silently split a line. + Set-Content -Path $configFile -Encoding ASCII -Value @( + "header = `"Authorization: token $Token`"", + "silent", + "show-error", + "fail-with-body" + ) + Write-Host " > curl --config -F attachment=@$(Split-Path -Leaf $Path) `"$Uri`"" -ForegroundColor DarkGray + # Single-quoted: the \n is curl's own escape in -w, not PowerShell's. + & $curl "--config" $configFile ` + "--write-out" ' http %{http_code}, %{size_upload} bytes uploaded\n' ` + "-F" "attachment=@$Path" $Uri + if ($LASTEXITCODE -ne 0) { throw "upload of '$Path' failed (curl exit $LASTEXITCODE)." } + } + finally { + Remove-Item -Force $configFile -ErrorAction SilentlyContinue + } +} + +function Publish-BinaryRelease { + <# + Attach the release archives to the release for $Tag, creating that release + if it does not exist yet. Re-uploading the same file name is a delete + + upload, which needs -Force: overwriting an asset someone may already have + linked is not something to do silently. + #> + param( + [Parameter(Mandatory)][string]$ApiRoot, + [Parameter(Mandatory)][string]$RepoPath, + [Parameter(Mandatory)][string]$Tag, + [Parameter(Mandatory)][string]$Token, + [Parameter(Mandatory)][string[]]$Artifacts, + [switch]$Force + ) + + $releasesUri = "$ApiRoot/repos/$RepoPath/releases" + $release = Invoke-GiteaApi -Method GET -Uri "$releasesUri/tags/$Tag" -Token $Token + + if (-not $release) { + Write-Host " creating release $Tag in $RepoPath..." -ForegroundColor DarkGray + $release = Invoke-GiteaApi -Method POST -Uri $releasesUri -Token $Token -Body @{ + tag_name = $Tag + name = "docker-migrate $Tag" + body = "Standalone binaries for linux, macOS and Windows. Container image: see the package registry." + draft = $false + } + if (-not $release) { throw "could not create release $Tag in $RepoPath (does the repo exist?)." } + } + else { + Write-Host " reusing release $Tag (id $($release.id))" -ForegroundColor DarkGray + } + + foreach ($path in $Artifacts) { + $name = Split-Path -Leaf $path + $existing = $release.assets | Where-Object { $_.name -eq $name } + if ($existing) { + if (-not $Force) { + throw "release $Tag already has an attachment named '$name' — pass -Force to replace it." + } + Write-Host " replacing existing attachment '$name'..." -ForegroundColor DarkGray + Invoke-GiteaApi -Method DELETE -Token $Token ` + -Uri "$releasesUri/$($release.id)/assets/$($existing.id)" | Out-Null + } + $encoded = [System.Uri]::EscapeDataString($name) + Send-ReleaseAsset -Token $Token -Path $path ` + -Uri "$releasesUri/$($release.id)/assets?name=$encoded" + } + + return "$ApiRoot/repos/$RepoPath/releases/tags/$Tag" +} + +# Resolve repo root (parent of this script's folder) so the script works from anywhere. +$repoRoot = Split-Path -Parent $PSScriptRoot +Push-Location $repoRoot +try { + # --- Mode resolution ------------------------------------------------------ + if ($BinariesOnly -and $NoBinaries) { + throw "-BinariesOnly and -NoBinaries cancel each other out — pick one." + } + if ($NoBinaryBuild -and $NoBinaries) { + throw "-NoBinaryBuild reuses the build that -NoBinaries skips entirely — pick one." + } + if ($BinariesOnly) { + # Nothing to build, log into or push on the container side, and uploading + # is the whole point (build-release.ps1 alone covers "just build them"). + $NoBuild = $true + $SkipLogin = $true + $PublishRelease = $true + } + $pushImage = -not $BinariesOnly + + if (-not $ReleaseRepo) { $ReleaseRepo = "$Owner/$Repo" } + if (-not $ApiBase) { $ApiBase = "https://$Registry" } + $apiRoot = "$($ApiBase.TrimEnd('/'))/api/v1" + + # --- Tag resolution ------------------------------------------------------- + # `git describe` to match the Makefile and the version the binary reports. + if (-not $Tag) { + try { $Tag = (git describe --tags --always --dirty 2>$null).Trim() } catch { } + if (-not $Tag) { $Tag = "latest" } + } + # A dirty worktree is fine for a local image, but a published tag that nobody + # can check out again is worth naming out loud. + if ($Tag -like "*-dirty") { + Write-Warning "tag '$Tag' comes from a dirty worktree — the published artifacts won't match any commit. Commit first, or pass -Tag explicitly." + } + + $base = "$Registry/$Owner/$Image" + $tags = @("$base`:$Tag") + if (-not $NoLatest -and $Tag -ne "latest") { $tags += "$base`:latest" } + + Write-Host "docker-migrate publish" -ForegroundColor Cyan + Write-Host " registry : $Registry" + if ($pushImage) { + Write-Host " image : $base" + Write-Host " tags : $($tags -join ', ')" + } + else { + Write-Host " image : skipped (-BinariesOnly)" + } + Write-Host " binaries : $(if ($NoBinaries) { 'skipped' } elseif ($NoBinaryBuild) { 'dist/ (reused, not rebuilt)' } else { $Targets -join ', ' })" + Write-Host " release : $(if ($PublishRelease) { "$ReleaseRepo @ $Tag" } else { 'not uploaded' })" + Write-Host "" + + # PowerShell 5.1 still defaults to TLS 1.0 on some hosts, which every current + # Gitea rejects — the API call would fail with an opaque connection error. + if ($PublishRelease -and [Net.ServicePointManager]::SecurityProtocol -notmatch 'Tls12') { + [Net.ServicePointManager]::SecurityProtocol = + [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 + } + + # --- Build ---------------------------------------------------------------- + if (-not $NoBuild) { + Write-Host "Building image..." -ForegroundColor Cyan + # The Dockerfile builds the UI in its own node stage, so the image does + # not depend on the local dist/ or on -SkipUi. + $buildArgs = @("build", "--build-arg", "VERSION=$Tag") + foreach ($t in $tags) { $buildArgs += @("-t", $t) } + $buildArgs += "." + Invoke-Checked docker $buildArgs + Write-Host "" + } + + # --- Release binaries ----------------------------------------------------- + # Built before the push so a failing cross-compile doesn't leave a pushed + # image with no matching binaries for the same tag. + $artifacts = @() + if (-not $NoBinaries) { + $distDir = Join-Path $repoRoot "dist" + + if ($NoBinaryBuild) { + Write-Host "Reusing existing binary build..." -ForegroundColor Cyan + if (-not (Test-Path $distDir)) { + throw "-NoBinaryBuild was set but $distDir does not exist — build first (drop the flag, or run scripts/build-release.ps1)." + } + + # Uploading a binary older than the code it claims to be is the one way + # this flag can quietly go wrong, so say so rather than assume. + $oldest = (Get-ChildItem $distDir -Filter "docker-migrate-$Tag-*" -File | + Sort-Object LastWriteTime | Select-Object -First 1) + if (-not $oldest) { + throw "no archives named docker-migrate-$Tag-* in $distDir — the exe on disk was built under a different tag. Drop -NoBinaryBuild." + } + $newer = Get-ChildItem $repoRoot -Recurse -Include *.go, *.ts, *.tsx, *.css, *.html -File | + Where-Object { + $_.FullName -notlike "$distDir*" -and + $_.FullName -notlike "*\node_modules\*" -and + $_.LastWriteTime -gt $oldest.LastWriteTime + } + if ($newer) { + Write-Warning "$($oldest.Name) predates $($newer.Count) source file(s) — the archives may not contain your latest changes (newest: $(($newer | Sort-Object LastWriteTime -Descending)[0].Name))." + } + } + else { + Write-Host "Building release binaries..." -ForegroundColor Cyan + # build-release.ps1 throws on any failure and $ErrorActionPreference=Stop + # propagates it, so there is nothing to test an exit code against — + # `& script.ps1` leaves $LASTEXITCODE untouched, and with -NoBuild no + # docker command has reset it, so checking it would rethrow whatever the + # caller's shell last failed at. + & (Join-Path $PSScriptRoot "build-release.ps1") -Tag $Tag -Targets $Targets -SkipUi:$SkipUi + } + + $artifacts = @(Get-ChildItem $distDir -Filter "docker-migrate-$Tag-*" -File | ForEach-Object FullName) + if (-not $artifacts.Count) { throw "no release archives for $Tag found in $distDir." } + $sums = Join-Path $distDir "SHA256SUMS.txt" + if (Test-Path $sums) { $artifacts += $sums } + Write-Host "" + } + + # --- Login ---------------------------------------------------------------- + if (-not $SkipLogin) { + if (-not $Username) { $Username = $env:GITEA_USER } + if (-not $Username) { $Username = Read-Host "Gitea username for $Registry" } + + $Password = Resolve-Token -Provided $Password -Purpose "registry push as $Username" + + Write-Host "Logging in to $Registry as $Username..." -ForegroundColor Cyan + # Pass the token via stdin so it never lands in process args or history. + $Password | docker login $Registry --username $Username --password-stdin + if ($LASTEXITCODE -ne 0) { throw "docker login failed (exit $LASTEXITCODE)." } + Write-Host "" + } + + # --- Push ----------------------------------------------------------------- + if ($pushImage) { + Write-Host "Pushing image..." -ForegroundColor Cyan + foreach ($t in $tags) { Invoke-Checked docker @("push", $t) } + Write-Host "" + } + + # --- Release attachments -------------------------------------------------- + $releaseUrl = $null + if ($PublishRelease) { + if (-not $artifacts.Count) { + throw "-PublishRelease has nothing to upload (was -NoBinaries set?)." + } + Write-Host "Uploading binaries to release $Tag..." -ForegroundColor Cyan + $Password = Resolve-Token -Provided $Password -Purpose "release upload to $ReleaseRepo" + $releaseUrl = Publish-BinaryRelease -ApiRoot $apiRoot -RepoPath $ReleaseRepo -Tag $Tag ` + -Token $Password -Artifacts $artifacts -Force:$Force + Write-Host "" + } + + Write-Host "Done." -ForegroundColor Green + if ($pushImage) { + Write-Host "Pushed:" -ForegroundColor Green + foreach ($t in $tags) { Write-Host " $t" -ForegroundColor Green } + } + if ($artifacts.Count) { + $where = if ($PublishRelease) { "attached to release $Tag" } else { "built locally — attach to a release manually" } + Write-Host "Binaries ($where):" -ForegroundColor Green + foreach ($a in $artifacts) { Write-Host " $a" -ForegroundColor Green } + if ($releaseUrl) { Write-Host " $ApiBase/$ReleaseRepo/releases/tag/$Tag" -ForegroundColor Green } + } +} +finally { + Pop-Location +}