From 1fb46ddd628959fead00d3cefa65ffef869b68e0 Mon Sep 17 00:00:00 2001 From: Hongsheng Liu Date: Mon, 24 Nov 2025 14:28:25 +0800 Subject: [PATCH] update readme for v0.11.0rc1 release (#69) Signed-off-by: hsliu Signed-off-by: Hongsheng Liu Co-authored-by: Roger Wang --- README.md | 92 +++-- .../omni-modality model architecture.png | Bin 0 -> 52691 bytes .../source/logos/vllm-omni-logo-text-dark.png | Bin 0 -> 40732 bytes .../logos/vllm-omni-logo-text-light.png | Bin 0 -> 36064 bytes scripts/README.md | 108 ------ scripts/test_serving.sh | 363 ------------------ 6 files changed, 61 insertions(+), 502 deletions(-) create mode 100644 docs/source/architecture/omni-modality model architecture.png create mode 100644 docs/source/logos/vllm-omni-logo-text-dark.png create mode 100644 docs/source/logos/vllm-omni-logo-text-light.png delete mode 100644 scripts/README.md delete mode 100755 scripts/test_serving.sh diff --git a/README.md b/README.md index 45f23d42c..52001e60e 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,65 @@ -# vLLM-omni: Multi-modal Extension for vLLM +

+ + + vllm-omni + +

+

+Easy, fast, and cheap omni-modality model serving for everyone +

-vLLM-omni is designed to extend vLLM capabilities to support multi-modality model inference and serving, particularly focusing on non-autoregressive structures and non-textual outputs. +

+| Documentation | Weekly Meeting | +

-## 🎯 Overview +--- -Traditional vLLM systems are limited to text-based, autoregressive generation. vLLM-omni addresses this limitation by enabling support for: +*Latest News* 🔥 -- **Multi-modal Models**: Text, image, video, audio, and sensor data processing -- **Non-autoregressive Architectures**: Diffusion Transformers (DiT) and other parallel generation models -- **Heterogeneous Outputs**: Beyond traditional text generation to multimodal outputs +- [2025/11] vLLM community officially released [vllm-project/vllm-omni](https://github.com/vllm-project/vllm-omni) in order to support omni-modality models serving. -## 🏗️ Architecture +--- -vLLM-omni is built on a modular architecture that extends vLLM's core functionality: +## About +[vLLM](https://github.com/vllm-project/vllm) was originally designed to support large language models for text-based autoregressive generation tasks. vLLM-Omni extends its support for omni-modality model inference and serving: -## 🚀 Key Features +- **Omni-modality**: Text, image, video, and audio data processing +- **Non-autoregressive Architectures**: extend the AR support of vLLM to Diffusion Transformers (DiT) and other parallel generation models +- **Heterogeneous outputs**: from traditional text generation to multimodal outputs -### Multi-Engine Support +

+ + vllm-omni + +

-- **Autoregressive Engine**: Traditional text generation with enhanced KV-caching -- **Diffusion Engine**: Support for DiT models and iterative generation -- **Hybrid Engine**: Combined AR+DiT processing pipelines +vLLM-omni is fast with: -### Modality Processing +- Seamless AR support for efficient KV Cache management with vLLM +- Pipelined stage execution overlapping +- Fully disaggregation based on omniConnector and dynamic resource allocation across stages -- **Text**: Advanced tokenization and embedding generation -- **Image**: Vision encoder integration (CLIP, etc.) -- **Audio**: Speech processing and audio embedding +vLLM-omni is flexible and easy to use with: -## 📋 Supported Models +- Seamless integration with popular Hugging Face models +- High-throughput serving with various decoding algorithms, including *parallel sampling*, *beam search*, and more +- Tensor, pipeline, data and expert parallelism support for distributed inference +- Streaming outputs +- OpenAI-compatible API server -### AR + Diffusion Transformer (DiT) Models -- Qwen-omni (Thinker-Talker-Codec structure) -- HunyunaImage 3.0 (Ongoing) -- Qwen-Image (Ongoing) +vLLM seamlessly supports most popular open-source models on HuggingFace, including: + +- Multi-modality generation models (e.g. Qwen-image) +- Omni-modality models (e.g. Qwen-omni) + +## Getting Started + +Install vLLM with `pip` or [from source](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/index.html#build-wheel-from-source): + +```bash +pip install vllm +``` ## 🛠️ Installation @@ -84,12 +109,6 @@ uv pip install -r requirements/build.txt uv pip install --no-build-isolation --editable . ``` -### Verification for successful installation of vLLM -Just run the command below. If no error, it demonstrates that the installation is successful. -```bash -python -c "import vllm._C" -``` - ### Installation of vLLM-omni Install additional requirements for vllm-omni ```bash @@ -98,10 +117,21 @@ cd vllm_omni uv pip install -e . ``` + ## Run examples (Qwen2.5-omni) Please check the folder of [examples](examples) -## Further details +## Contributing -For detailed architecture design, see [vllm_omni_design.md](docs/architecture/vllm_omni_design.md) and [high_level_arch_design.md](docs/architecture/high_level_arch_design.md). +We welcome and value any contributions and collaborations. +Please check out [Contributing to vLLM-omni](https://docs.vllm.ai/en/latest/contributing/index.html) for how to get involved. + +## Weekly Meeting + +- vLLM Omni Weekly Meeting: https://tinyurl.com/vllm-omni-meeting +- Wednesday, 11:30 - 12:30 (UTC+8, [Convert to your timezone](https://dateful.com/convert/gmt8?t=15)) + +## License + +Apache License 2.0, as found in the [LICENSE](./LICENSE) file. diff --git a/docs/source/architecture/omni-modality model architecture.png b/docs/source/architecture/omni-modality model architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..eb281184b5c32518fb4abebba32cf1a37b137db5 GIT binary patch literal 52691 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

U(U?Hyw z3kVY(XMNMDaijVH^W9V=zvfFydOG#s<4jU~;uD!55)~2EL(K&1bQ<{#XG5UWlDFm` z`{qMPy6fHOdEVlocmAGx!}f;F1)dH=m6R@zL`Ck*?~e4SZ0rH$X5~3-W*qDFs~mX? z2N`Yc0C$HzBPvEYNFNLPVXkc(H16CJPxJH;A2)wS^>5*MJ{mk(1YQWxSy5_Bc8J84 z8$!C9HTMB5=IwK;Y@|Ul9iUxi^vNPDMg;c4rt8mGU}5EpL?LB|H<#z1Y1_{9W;QNY zJ#10T{R?+@lklNbR2$dAhRH-nQ*)Klx1?@RDeZ<$NHb6n2p}P2jtgl1(5zz!7Fco5 zEk^y=Y#pXYXpGK}oFvw5|Jv}$PPK+ny z`#TzRMsORIqDe3E@ORlpd;eqnPbW@`hagcN^Og{f_lS{)9^DMoB*k>p|92)940GfeA9xAa8{eLR`exYPkj8fGg*`g`NXKir)Pb{@-N$(3=bm<Elj9SEnB%zJbPG^b2>t@XiPxbkLZOj_gT4Ns^W+OKi@_0VNst+i6%%^*V0U<1w zy17voWnI`P?wmE8UYF(=;APA|dX3_8L`@_ce1Vh&iXR8<8U z#VS9{i)3kp`gEvS*V>cdpZ+unOkKywPeVI@N()`k4 zWP?Xuuwl=6R6-OWzl#8=?F;wQ|#ch_u}$QBd;J z=ZTt#Yh8u@M|9j(TbGH<+HJIvb&T~><0gxWtNx$A#10$Gujre+qj!y1jKF~hGu@02 zExb{$Hx{SeRO5?Q!o7SF6oyOQWdX(1I_R&fpSzy~6&pHz1z*k$YNiVdTSzrR?uKpN zxua@7vD~JMV||JP#INpwRboW^Fznh{x`J+bdoyaU_0NwiZjRrp7L)FAO|SZ?lt+~_ zPgiKCoB5dY@JilF?|FdK?E^++i#z-q$oP2Df3IezXqykFJ}a3OY@EM!PnL28zqD&u z|L||t=9TskHmsBT$ujEwB6cI-XX7@>L2>U|;1;lhR|$d4EiDh0*fgjOh($w1u8yW> zfwV3s$C&CCzmq?F8>>HPv|p^-d~y|8wkqXpj>%@sNjp4gGf#Vvb>-29U=5>{#ypMe z4OOB6PS&ngy)0hczqvNcUXNE4K{ptH^pJ@=;;vGPMy9?ozcvQ^I`pTagN!-kBgRv@ z5t_hLlQ^-4lAM)&>lWlrx5wUvs|xI~eAEXW{BO_iUsnBPm^*P38=H3H?>d$5NWv|w z>#28SsKBuLeu#E9A)?k9CPI6?#pHLHNlsS0ooti1z_tizI zypGK46g!CY%i$&NSX^+#v7p}U9#cHpih`e@Ay*KumuixKp z&0SV~{`Fl`*eUBEjd(bMgP_D_trdN;yR}7AA&7B9jt@7m4N>}1o$$>5)=StuZkJ;^ zlLxJG@%p{+JBKoCr)%dW0rMQ_udXJbS*KVWaI?p#`R388-%(eyIgNnQ!}tuRF_D1N z@BAM7UMo=|wlqdlIouBs#hYVa=~LP*L?<8kuVm8#3qNi+O-CscmvaS2*`=)LvfGT_ z853IW9*WeN_H;J>DfaFDxox4zyzC!xmo4H||IW6>rUqR3()+BYAjM<-c7_T^ z66`#e%*frb->LM!HEQ`=3GH);V(t*(b#{AX7SGvA!|i*d6ai(Zf;-puq)Ymyo&>|) zv~@M5!pNSwtNT@Tx+fZ1+R!*(26Sc;ZNBLO{r5`OdjLgBe@o|pB#6Gta6=f~;3qMy zA*3$Shzc^L|4hHhk_k7%1rhE`az662hFiFP0vE^)@|8HOQF?zBah8JkwCwGZ#ddw0 zMQi)k;t;|m!&1rw^k%%o+cAfLuo^F(_q7V8PP7c^?a=IYNv}dl>U+BHzm1LA84XW?~L=^kT<*5#dn9P!!7x( zFLwc1s}$xVD^VtL5}`K&_DfYBr(Sr4-kUBS4p8c^@kCX2K$TV6XV-s4FK5R)aya9q z1&vx!w5*nFw=9mBJKncP_UsIlC&uIZ!dP6j$~eFGEW;bJZVT6i|JMS50JeuP)+*Co z*3qXqWcN7Cf8yNZM#vj_Zu`Lni>5)J0?+L~$J9{nd6BfugCp(wL>L15)&uaIO+I2& z$O5z;ys;pN+*+Qi$|56nZfpG}Q_RBWGvy?&wr6gtU10Q6fyjQgg;bVx;5%HUT;x)F zmrUUBLpSPorpCOaXY%0@u#7dpEmVGcF32Y<{$xT9dj~ZSiF#mUK2?RPx8z2+yd>p) zqq;9r#+!B`7lzHj5*Wq=Ol&g9$L-B?^Li)9(>-Tf0BE0sQTOjPf$zw&9f(ss;+AVM zUXVN$CW_c7;;T+Z0k$88(p7hgwZ;$NO_YT%O^6Md73Pnr zk1(0Ejhn7k)toQ$(&P&n z#(S7KI?2f$*sGwS8#49DU^FabMS*q)&)EC?hGL;;4q?Hd>uY8mk>QBIdyeZ z3Lue#Te30D9C#&cfz!!Xam|cuIt;|&eZ6C?WUqX_Ho&J9(SVQ)|9tWbos_8jNRmSY5-rsTp z(7*1luaqeX2fvUDqaHW1LZ-g1+iVhW%!&V-g^#H9os;vs(8^okGurrV=BGt;l2oWL zloS$$m$iEj)y@S6OU2rGN<7acLc~(392Cc96VVysT(Pr=_g8KwsmoGqkLxHTZmp$F zvJZI3f#hwstp`rH*V&)hq+r$?pV*3r&zs9eVw;u-O06_+?-*5Fr|v>%tK+vn0!S}Z z9I)|NeBiZRKK+=)E+)OofZY>pruIxWIo3P#KR*Cumn%O$VKH7hPrm*UKn&Jwf;q#w zQyq2^vOO zhVO8R1men4{t|h`NH1@f77t_;E}COME}MG86t(P+#7i3C&f}^mXda*KbLq*Sb*G-s zVY0bthgmMpl0Qx44$)9B7Fi-OQC}djbSss4J!GY;pUqyCZZrR#JHzaRK$(x00|GLv z>1#%e`t5vvJm0oCMNlbZjsAO5m4{97z~~BMFx$K}h4Yk~lttdFS)7O4g23$4KR&e! ztY}y7pi#Si`W#Tm9&akJ4l{&hGYUqtB zmgaJ=I@W{R^?kfmIOogLak?#WF>SYb-jW1)u7yw?KjO<51dhv%Yua;w+L~}^Q z9`o4dt*RD0x4;Jr;B$K-^gBe}oBIvLjRuo#xO5aJK05ULdT3k`^4!qYHQBcRP&yX6 zEiJA3C*JU3C8wQR1scEb%oZy)(%_(%wlf+)k7{&=Z4b5aE`R!@eVnn^@F1$#rGCmv z&T^#*tI(!Yj6I3q!UPtb)~%j6UCuG^;BXD3C}jXKVIt)EC>!W<*?#=8QoqyPV_%Wi zm#+4xHrm{BlxD8-%)Y>{>#9$C!8jL`@}r^H#KL+?2=I%;NzzD4;=a1K!LzU9dJ4K% zk)*Iy_2U*fj~s%ox4n`ZPxAbpUG`<)8Lg3so4qbE_e^7kkZU`|U@uip|M9radF}6y zeJga=GMYRXe>LnpTHvWNs(m+M2EU&A?$Prgwn$-!a_YLqQDa*DuH=IWW)Qo@6z`j@ zf{+V}3-4_U)fE|QLEq>7V1+xI*242=HKj{$#`A)Jr>Ur4pPVXCl?_!y5Nau|7q{rL zJh~*Z;D~z55)FwSf-gtr$9DTW&v(mOO3>V3fzW< zgYfRf6+gZN4p;l=JnmF;B23|JDwFV6C!w8#w2M(}f>#kNjdZoVK0PX)m!y)djIJjx zjRQ@`EXro*2^zS?hC}ENXn0_gQC3;h(FzD(-_5_y&d%m!c=MU?g}Y$S7%h;TwkP=@ z)w7@_k;40cCFfChNAuBldA#@LZgUj(q%S*Bt3g>c?rfBGq$Y%{be6Z)YUzFa$nE(K z)_sjG$jH^Hb_@C#C7Cy9Si;CAOjgQu+2E||I;{|`A=&ahVyMJ?L>PVCaiq7|ao7Dh zSfk49NN~}h!=v5pH30y#GO^BJNfIkYXq9#U15BemOdkzhhdYjYh~94zVcdP!@Qv4b zs1~ewSgdKhy$xiChWz0S>o_)Zq1Ns-TP&2EJRtGg{BG|7r()H}fC{JIXwh}y;)zxQ z_Xm8J-eFD#)-~h4EsXYROH7f!9XvkQ(bWt(3=z8v@r=u(!pTn!dbc}JfTx4k8-M`tU!o+}X~9V^BB%O0C=^O{Necni z%*$jHFn6UCF%07)O#22{YJyarsjn<1p)z_e)9Z5JijC*uxk0b(RailG?2nY$|eCr0%QjjoGNd79>zjr3pIp*d`%h>n4{dZbk^xt z(e2faF0whC33_489Mj<5L=Q+R#V|#)6pEqchbA~U3OSeu@knbcrc9{R)}QmsDgpL4=c-#-mh+PJl$w;o|W_g+Ou}%?Argt zra&0)1~W|SMRy6O%_&_w8u{beE-;_>Zf9)oQN}u-PevfhX9Y5&cNLXQ70AE*=M!)y zbr!rPd*LHBWP_6Qrq;@QMYXPu9lrUHSfE|SP5>0uQ~O#?qy!_O^|2_cwpILPFl(!| z-oMH28fUIk>P5!|V<$0Wow=fJS{tFYy>yyDiY|vg;X(xC zoV-whF0OgtrPg>e6!cwLB<}mcA%)FhrkL4r%EJf>(-&VK^kt?=M8WQP6c8!r48}VupuMwqK91(+R0wzfs`1MaUE6+0QgECsI}hNGlUspm#!R(R%QA_ zNc97Tan@D8P5Do)M=Bg2zm5bm#pG;xA9n~)ru{kGGAva4@zf(YrE~Iz z*prUHT_x1=HxyKb(RP?EXE`r9br&A>n>wS$u(C5CZZZg1;%EubH5L68v>RbDY@~tU ze$>}_cDf{OF_jzBCZVFpL?}-wCmGx;Tr3=MJvRV-NhM?c*)=Id={{32x8N~Jla84I$LJv$To8G=RHwkI{=2YOqibMmOyC`({e~T9 zZp(pyd|a&!xx04?ySs}+qpxh=;^^*96UM4F;NyTj^=xRIAIa>_Hm*re41b4mE12B# z`oZpVZES6*2CY}b$alAbFPllYs-{K~UW{W0#4Vlt-&!4}b zjSp1Wu=9YG*LD3XFA?qD4Krf(bcUmE{LA2}J*VygOoPfX@{)3~&z6p3Z;nm7Qy|C< zhRdbmYM<`#>`RF%<{h8a&$TghQ*-228|5bR*S@rf25f?IZbabDbWEPl&bmm;LaSpM zZz7;Skj1#^Q1p)JISrUMgH>9SmWs!(Sc_$Oh z1_f^783=APe@0eS2%7o4i?O}yhsC9-bKUpDlTJ4P_#*{_`z}jVX8ZHfo-bTH^g}0> zS^FX`-=V7SqGzs%=`>z#jF65<9l>gsubLBa;#KI`;??ICJ4duUQ~Zi&nt?7!6K^W# z5nF~t%1T2$eS0#vlb_te>i@NXz}Ix*yHxuCChJ=OtR-{eQm)_mIe_B0)BGhz=M9g@ z>pV!dXTb9vCQWULSLScFCw}inpWjab2_pnD#fl3wo==(`H`hcR?lpN{Ciz@rdviKR z%>OHYUr_tp5QehY(#rg%)Awa;erS!|C2OZjElL^|&vrzRxJdl)CgR4F z^yZOOW+2CR%b$S8J2OUfZP34@jgJ%wovcRT;!@BPJqsNz=+IE2AUz2}7b|jGv-Cw#6XfC_Thk3eO{TF0{s_Gu!v;Os6(^x{zzKkP9p{BH49Ji+lm|5hlK#J|9u~0`Ru*AMELQ7DJz25ixJQyx>GLUo2nFA#Wl&$vWJ_oSbuo zGuf!(vI{Or#*$Kzn0L^-3QHwpvGD;F$aukAkmvpR?;rx_@8rET;P4PW<{4 zZ!n*Hj(uD^eou_LXz~kR*HBU0ci4JfG{u+B#{C)X^6X5r zGFkH#X3S@u^t`DkF_}xL>P8OTi3hO)A`>FxdD7#QJquzm(aohz9Sx>yb@v*_I7W)m zJ(ezhUs7HP9Z~z<*zwQOAVN^o5&Ml&F{KS`;A2yNrcX2k{;gd)GHv?>am{Eg9H9k^Zlb*>b8g=iK%dpWu;Roa=3ZA(37LukxaNR?8t%ZrGK#V z(!E;)ZVoD+uFhm$>Kmn#mScNN{{_f2nX^DKSk9>UBa&t9nBh_4U1D8 zER{?4%U4SXUGz~LcPLadcHV~2g0npOqquGTgDp$`Bo`>k9KBXqce?`<@qn;X{E=)hH-DuCYwsF3$0{gmsY>vho6!I4G;ve5Zeo*TJ=Sb z{!Z^%>HgVhmbW<+AIGaVZR5Z2)%h$mYk2Rm2R@!vjx;KRm_1Q3W(mVRIm;3UvDX)> zt6sy<-TwZXv5;w&uLW$Q$3OWPG7&e)?TK^~=jSZ{S=e;^ec+ivf4*B86|cn9VHZPD zKa}vPFRjRIzsUlb=(0(utL!F~ZN4(Y)Fn1So#WM9!mX(Z%3LC*TUG5Pi1cNUKo)wo zIbLDGyg8iFHi4Wsi~)suW$t!YF_@J1>e!S;s({9+hJBF~ORdhqybaGd*Hxp(rMhtZ zw7X(3P4|Bkz1IJ3Ilv(awI8p?kvBPqesvVR z;e>6O#3wGpiS17?#W~s@qu$u3k)^7FsgUUW*@}4e)e>;jp`TT`vjgS{uJMd$e(ih9 zW(0%lbV||VxqDtRA-J+9m_#9Kp?u1UKwnvy(pqP%@z&u7Ug+ldmBu}}-KhlyrmhG- z+&oS_!an@I+~i~G2dGJ>A@u&)Vjl<3yw;+z^Mfa5^DMLlp;ltSFYQ4G3_*)x0JYDR|mU z7?k>*B0~@yHImt>XGSYzDB`->>iIBMmF9kD056+P7(`JdpX-Jl|29SJJ?SLHTu%37+Bx@xKb>%}V%SyQaqj z6b`7{hBmugECsCpq%-KWF-@dfLRN4_&-jKA;OWcZnu>DX;CBI5L)MguVg6ADoL_`m z3L}wim_6{!{|yx{%5Hf!DT7|7lN$a5Y^s}EB0`LSwzZBx$VHz7(T-}EMzzu zZX@;Vh4W=tVy(-CM;p$;`(Ow`0+Ji;=ALvfTf*kJ1x^wf=(bx+%swJLI1GQ+=LFuh zhr|l5t^zq)Y*5Xrd9-n?)V6jsL6NX$mwG_i*J;pS5 zp?mW=FXyE_>x4S4who_vjA_U0&Rf?W&KDu4n>?*?r+DPCm*9>U>D11JR6-;`nm|9~&j_oP-%q4WvdwVB z*sE2-zQ88;Axiu=&w>rCfA$H4Yd}ft75`Gd5Mh93c~e|l>;ma`6hX(YET@-D!IHyKQZ zKP-$Y?Rwgi)TIR^YBA~Def}K-%RYqrFEdPse3K!>-(VYcF(vN9j*wT)o=fjT0-7dKbBtLl8{h4>r{1JEST8~|g|)OgaU2R&A3pKn zG*_(*M3VYlg&HQ^Oue#)`-FWylvX+hgT5`J=9)Z|I}<(bbVIk=vH^*K4zr0`c>Pd3 zM1U=F<#fZ=WBy=M<7!ows=Zk|rUF@GYr?X-I%9auAfb9$`a$wjXT12XN3w0W@`#w= z68(+uJ(Lzr8;R` zx9Yier$5@3P9LEEwvgQ}twuax;l_YH*)gv=N6omRZMl;$->);<%zX>LOT`2o34(bj zuBC$p_1VUMM3|-PRK<`JLPp;T^vR#iYB!|r+H`O=wJ%TFEybp__r-AsY+lEPTUm}F zPYh8R@h<^lH)i>mRK}<#uT3SGHj>SlZ&7{6RdVre{u&p4#ogTS$8q`1(i0Z)I6fH9 zXFH!-A&JIt(r3m#7oAeDx!0*s)jjfTo1ejkE&ibal79IkSvNjE%Xstx%c)oO-m2CD zXH21~Kz5Tu&ViyS+J5f2$z4uYK{0JbraGXzf{ymNn zA^0@*2UdZSm`jX0{5gR48NHaP|PP zfcFITMvwv_e@O*GNsEFIy%s@`A&?;-kb+`-{~*l6Pv0lGC_0TW%k28Y<{;ib!ZXD_ zFNl6n-y2oik8M#7`IX)|;%`p;bj`+gHtQH@1Hr@;hzCfqG7Zb|e+#ICy^9TeIiopXbtOi1{{J zzcZ1dV0SPaE28{9=+Ezq+EGv{9naahA$af$v##~Y&GdGB=Z6R=n{k_d6Uj5~^b7i* zj=<)hSdr^t;Zk}d^_IU)sW?k%NZ@Zf!U~5lp}$REa--UKCC#7PZtU6O)bF$s5ZJn! zFL8Cd#5`@tQc^12CjC6wQtOCAe^tU@%=zy3NX}h)de#;8!6-Qw?2*@2-8xHxk<5@Ql|Ev*HGHX1*+|Uk*Jd zI_`BI817RTjybW#SuQ^G3Sy`-IUSsx`hE7^W8)>e`gUMhhG^M)wvVHd&&G{jReAqa z*ZcAVBXPuTX=cIF4kcKD^V`Y;z(K4nMdk$4P4aQ#BkB}}r|F2zxA(Wpt_~M|QEgnW zoeXTJaB8Ph@z`;J4s{JDlE}bw%7ez<4ll{#|Gt(iIe#kUv1O@TKQp6Se8^MGYwgXw zDVcM`b88IQFwaR4*z0w*nx%x>KM8oTxLsyjI1M9HYa(jjz7;phiU?kH&Lbk`LCKt1+fT*+tb#T0U-V>pUeZ|%M!weHXY=&opPm2L0%F#b zY4CuG_??^#65Mt4ar2!nD{L+Qw8q2m;Hma;nt$SQ5spMa!T@E+_vjr6{C|?NJ5;|s z`2(W5< z<3{zm8GkJVS8y-qoCTa)Xgwl`PC|Dzo* z6O2H^rx%y$c$Z~XJyC7-NEO=q{PHKPetv#QyVMXVxrTpAyi;j{ZT6UrnrTXt`#$a_ zJU(kPuF40as_RDIOs?k*qcw`}4xWEBL3zx@?$VBO0`R>t&Cw>OC)oQ#AcnWIS2Y$& z(`swc^U{LFMDcm3FEXD{&om93H*#X=>ZF8!RCG+Emc(J`c z^($4+&Jq}}R}OI|=uD+73V@yOXl6UlXdNG?LbIE3*1K>q{pIH1%IiZm z+Xl(`03p?I*VPM2J?a^4Tq@%bA#v3-wp4#m%NO`bv#$T5Lx<)`0~g^{Q0x`XxD};X z3lDSCl{?XW`hs>nd@v8ucv@&^pYfkDPGD^u6mII|E*KaEZXx!@cGaRi`5-xT4%dgXkLi-+6twMepaJq=E2_o9_261Eh>%I|sU%}=mfX?T&R2${MgUT>hYkwv#+1_8<^Wr}x`vXeM;1w}3S- zZ9v&4y*K;0HF80n1B=MOq!ZRko9#+7J{JFbQ8rKHJ*aJpjO5Cx=>my+75@4(o0MAn zu@&*iooe0G8(z@nllley;GPsqVXT*#WLQNk68F4TXZ;Ldv4jrr>9tDtd1wH;c@SOP zlNs$~=22=N%~sQO)L8o$cpE(+Ht#Mnp!`U$%5h1v+|GGV4j1}wO&Fi@J|c~vrv@_i zJo-ACmQ9(>%VROMEYX(?Osoy+wekCn(l1uicsz06^0oU410q8-vJ5wcfc>%z+VCQ@ zdJ{3@jY$K?lCUe=>m&ck)yJ5Rtx+J%ujs;VekuA*NeSn}5q^g4(D^EUdz0VC+tXZL z#|s)vC4J1oD7d`8ly`8>+}1}+Z+?#viJwJSW8D}~;KAm$aMh7Iuc%RF>$!npr^SF0 zFlb7y2J3(AoI)gjE-raplM|#W9U^Cl3hfTO%Q}&l&_sFZA2U(1)%o~ULcdO3bnhq~ zNO*7D@7CMAB#?TP;oxgXd7USmfLlshf-Eo<)mr5Xq9*Fq?i}$7`+8Mo?N(ETs)@Bv zTRsPccK0B-8S`^hMC1O7OYG4gC+PvBljK_-C%t%uo^@KtK{3=&bdv;UfI`#fNlIBk z4Mu!YKAulUxdf6k<{x;Cx$Q!s`j_p@8!03hCPF#0v5@}ulQDIx_;$`s;ac;fyV#rF z3`DGB!@}k&Ms3G0%SnUr_hC~B4pYfE-v-~Zl5}7fuS|bF;ulH8sIN>P&;z!x$5gIB z0H44!sRhTI!wQd$BAjYm6BPpm=>{=txb{uW~4cIw2IHeZ4^!TRS z3{Hy}YgWEqxy<2b_FJ0~AKhbq(FnqL|9X%3*!J$Nv}X7dbEfX{?lm|+>hUqvG8s9H zd+s%w!*-LUWm&y>AR*rS>ie3$4nD3%Th)`x?&)URa!#|Vd%=3RWqvh~#YO4LS;EiB zY(tejHk-laXBZi5qH<31lexV&l34&*=GU)xKlbDww5mQP{bpij$%`H@NWxFMKH;CY zaS^{1|3f4D6yk0Tq4}x)W3oor?f$#pRz$9KkMQx(abi9C1949hD`1U7Q`U}}dPLZV z;y9dM<7&r|UUi7FL(^vhx7ESf-5L_`qMgpjxWD zTGhy6l*uWJFbG-H=##m))W=6gbbGv!Xs0Ch6T#P=2Fz;vI@GJ|iE2Ab5VH6Btyf{F zS*=*PohTV+&?`j^+Mx$E0X6k5rcCdz+|H4Vs?yq70HhH?xX#BVdqNa0a+fVlICXQ) zSbSK7YI>$sFWPdk$L7Rq=dJDR8BUrdUF?Cwbu^k$q>>~29(fYje7C~oKz1KKc8l}2 z-(_gW!1uoqPbUo0PqH;KLslP5Q_VkyMJG`i38iJ@n05h3T4EjSyY02q%>e)z80K4Q zeiJ7qKc7ZM?<{U@EbSfpQ7Z&MnRjz7xwF{~)-R_}5k{+8#@O}8I~b+^NDR5Q7bv{? z1fE~NBtYeo$4S&FEAERNE!+@xQe6ryt85czYta)1*7sm&wEpV1zA(w_`2#!c+YeE$ z?lV%BK$D24za%yePUB@HT)=VC3}N)zqAa~+!2p^;oITq|m9A1lXS5t7$&;AJw!&&D z)n;fDG^^v%(&#P~;z(5Pi(NAF3Ne{kMyWj!SnQf+lQ$6yk3GR{7EvBiCjPzj$Uj%; z@KVYeFPL|5Koxr4R^A{8Wg3~LV;Pubg>!xE>JfprRF=8j%HFm)9;MWfO>o>+#(yHC z0ahw&W7%5$iKofWhV#Hx6iy9M22C!>%iecU0*;5KA&UctRpP2u1H1`1Tc25s339wI zczSYnCewCt3-K-}H)t^P<}_Z)@YBGYd$-&)>OMf;p6+^XjeOu8TFy&fI&^QLD&dYR zGbxozmiQD|orWvr8iOw3^uq!oR|ALEsW06oI~>Ck0l5hdLg?uPs$50K`F54cQO7CVtTW3Lk<`e`)UZr${4`;lxL zZhASJHFdB0=7E5asfT)M^X<^%ZV9n@cEqF5iW6mujy#*P1h&ic5=cCFMZ#tkMAOrJ znv%wFmtSQ(N31`CZ41IgfQ8=IgTIh_(SXd&4W`obRMx*tD7$>|_PZbGiSaB@hT1K4 z{g5C0LJ$YqH|}|~A09V_D#7ly7IKkW3ubcJ7?%5sI~LvH+O6fkmQk1jj}-Y3Rq^KT z{2qR<_TqM?e@dHn?0E7qRUXhXOfPvrtuW|YVSfJGPS=f!Y7x(NpniGa zTy<=T#3$91ShDSR1fA3-Q!Pyj4(S0kgcmxz_tAe8{}wz&h9w&;seN8`3nZp?9iS>B zVeF=KWH{Zjl`>$DVP`zVrPM=>__=yD`=5e(iNZtv43Y)=x;UhCYfF$k2RGLi{&_u% zy7+$m#a=0IzJtH9n}G4HAydc91EL+8H(E7ahasXW8w@~^ZhG=Ejz;ehXCB9oQ%qAC z{?AtnAv2|LMF(NucX4)8@^NprX$>3vLrp+`+}X@K?w>Yk*coqqnq*muAiDhSyvBBmmK1?IJp)hezQEva@4gI@;qbzgOQHAVE&|JN>oBL4 zR!xWF&Ip6rk&G)}cO2j|#PR_WqgfY4*xGj2joK+B*P8uuE`R0PURk3-H)$qXgXe*9 zYtoS|dPl#d)PKF+A0AB}F_9e3XsBSIPngZl1IS8ZtZ-VY)>;j!ZT}~&`faY$|Kv`a z2moUwp!L#g-HukH$d~T3q|a)I3t0_H@gQzN1zM9b zs^2-Wn;jNV_q?bScpB$m5n|@+nz9q-VS_gLRxycdx)sUM6R)U;@_f}-5FW=cv2V6x z>djAoNt2MP=u)?|Fg*|+zi-8#6hTi56uynb&0IS7f7R0&9fEl~T)un;VK_Y{OzPCH zhxkh_pTy65+$^4KZMfaRG3l8+L_pc-T5J2wN7r!uJ9;N^*LHYkK=- zkY6t3`awC@zq-ZE;i1*jGxE3q*4wLg+aUw(1JitL(yr(bO_O|e=hY^%|J1Vze`_xt`ds@T+c+AF)nTOLOXle=B zUi%&n#9f)z^nKSAXS$;{yK6OB!8oJg&aS)S;p5!NkFhVbdo>{Cz_3wLi_kvBNaaE5 zGMTsLf8AsKS9 z9v&W6aQWZr?Sk}#je{BQpA>f(410JBT7E0i5ZSV>Xt_Jww$EL0dm()jV_J6XUzDq| zwU|~wiaY~#0pj0^T>0SJgSJ;?k#`5uBs?Cv#43XSd#TEN|AG2;e0D{0#k583clzm7 z4NPi?qxoqm9i=~w0+x3Tpai>Q5fu>fsdd{NE}5mB{y(vgqXll<1!6wT9#31N)^WdzUAE_}hh4k5kA9Oju*%%j~tFzUa}R ze<^|6Zuibd+CD+i|)gbm+im^0m8)Uyh0ivNOf_jIh`hY3gEv-~`-Zem&%Uw*TgPRufnW3`8%uB^js zc#E&(4e9S0VlZ9+oqpHNSxvxwAR6$2Y3j;ZJEO^9&Nv^}v&6g{V3 z-nSHQa7KUjxQE?|&3?3G0 z!_+$&si6t!m6U{gSMe^X5ErpO3#UpBb%iB+r0EetLY?bVQ4vh~E1o{uc#?C7>i<9|uSYhzz($yg*e1=@S8(vks6xpEIuUyeDT(R$4(UUF6ZdCm#H43#IXEN&+vUqsKZsHlh9y5-&fC+C1AOF{Lg=OtTkIi zD~eU3pT7I4ph^|@+3-BH>N$G&u$5j*rqLDl>;!vub3gNZQigVQmw9h)N5QW}moro9 zI&iVs!jvigA_siH`ffAwA)Dyj0lml=8~J*zRbbd79kx*6PQ%EDJnOHb9YhqFEC}(d z#38nQu>U~hj;*1}gU%~6LySY1$Y!tPytckXUeWJYZgOVB3!hbJarMnM&+bd~EpJi$ zg;ln&PVoC+?k8GEFspcG=2hh zK3j3tnhjm(#Bjna@(IvS~uko1g0=fi?q3NFwd6Y%O2CfR)HSP|N zWaetOIUn3+V~lyHmD*V$`oCFhO?{eV`gtMj+FJHrby3EAmPu{X6`>MS8*Z7Rx3Mx} z66BX@47vS|Di`OI02**D@9i_@r};s3LoUV#`uHIf)nT*!Fv&mRxaP9ma`%1Z(ug|> z3k30M-m-)X-S$rk$gXm-{#haQy&YmL6rM;5QXv!jSEJYThXU{$ z%a?dUuaDk_E%?REoZ+fRO%=G@RI*YZVtD0Qg-iE_(zoXb~8Q)`?a*^FtP{TBC0N9C`W2isx8frX^>CqktB9IusP6T#SQ^hZISj`}P z0)aqCw>Pl1;@WDXNfe6bBQ3#VN5Sd(FNL+fSifg=^B}(T*+bRNM0M!Sdp6n+=f6wr z5v>>MB~+g~^6gWM?e}16i$n;KPf4}0Jy*d#;nw?_^aVN$qHpy?u=g^%vzXu`WP@f! zk)yg*+~i7&^oTc$JJ)kN1Jf;O(rm~PiyGwYp?WlRm}~0;*YRXsSA+YG7lF*1O1Qlv z3J89mYpg=*1J4t3I`Rd^aN%dGt}#o7ABfj5XGwy&lwK&R_1f>sL9YEi9Wg}SAke}O zvOf3OTgC0RvDK8Exoid15YnDdP;neDzea_19uCz**}s;hFY^leeEy>+;R=gpGS!8aLj8jkB4FB&K5j++80e!!F+NY1LqVSh{$%e$QcN7vDev( zQF+#^mE^QpB($oj-+nQ>8y$=;s$g^AZ1;rtIi!wc85YR`S+WDV9T!88KH0Cw0qt|x z?&4rNE+_V7*OwZ{BDVz&JsIm9n?69>5umB-R-=15@YZOo{U<4jpw!|OF~bbHKt^f2 zl1bM)1%4aCINc4=wJE$%aJ{0>;5$xOL1gJ+g{qf~^X@$6N2s)$&0RG)OnRWo`Iz~u z?qOr!V*TS;*tg1~YN2y;hR`iXwi*wLk#$>1PIQygq%oSg zzBZQxI$VuQs4P#@RoUce*2?*#)x^t8gZiSh^UA2A5A9%10-c!Pqu_)}NqJ|0SP5uC zAvb}}GbR<1S+{FIgHI0p_x!kgySA0xOQq*EoV6RRdN)0LwB6*f3Z6UZFg(u_*f})u zTDjPXc}aH%U>uyMlntXUuOwoRwnctU=d>*KzTQ{vB~xX=Gys^mRbkN5_+193TV7<5 zC6MI7ocW*S-4edMzuv+MGpk_R~ z)TL1K4!zWRNxt*d7b{30Fz4(rS+5t983TlQSkrC0`0Z<*PYxcOmT4)$fEi0t+<#}~ zRYJ(OVjiZkPoM24KWMJ*+VX1MH`-C;c207{lN{9wl(mRQkTgwPS*d35n>RAGcSO~X z_zVZ%9r(ZF)uYS8v7r>z=6q?Q5V!sjAq(LS-R-a!?tCGdvr7&eZHLBN4_S1IGrh@sHd?Wh z{QKl^f?fzS$AJXsRse2XwoEsiEn=iXFCrd0!+^=%ft>S=iZKw_?UKbN76w48a$bMV z^_lVrMEcm^eKoMlt?~7cESyA~{UHUS6)%@vxwW$+TS;~3(6f)Dct!n3@BI}| z(o|@SpPJ^1U*qFtrd=+0tCP0Yj_>&T$E;<9TJi#i)(1+Ay}{7~x(DYmNB|L%ExQ;+ zZl(|ulcKdwG93w*rbg|dUQ6o}v=-JJ{;kxK)&8*fvX#FhC8@=4b64zrQ^u&b&IXw; z(Yy=3G6K)qoOdVX4u`090o;VHBlux`xpP<#Z*sQ*>HLe< zNESV{psJdc4yBYeYE-F!?y5RGA{zkwc`ZWah*aA0#>@dR`HaWl5BxH9O26HAGvJYUaK@S>JD)EFUpZKoW zw*Bzg#F*1h@wl$kV0GJ9(E%Fo^>?aUxnu^5y1t`S7;mcHvowZY=mNY~Yx%n>mzGkF z2}8N*Al*@@h8lXL<#6RExUH;lx;w_|D|yYJypi69HGx|jr7Gi8A8w-CnF(lLc4k=8 zdbg8?PHPVuia~~p79s_~7-@~M<`Ea1idvZuYo~7vNbhBdc#hMaY&dGyyC9Nqm?Aka zbW;jib{IHFM~Ln2wc}2nEwa%2;YFwI$Fm(L(*J4!vyTtCk9RkOcN0^N1uV~wk7KN! zOWp(=J9HYIjz06Xb|~4VleY&xO*(#wXL!!9HLCHh{;sOz^tzWsyG|YIdI>(G&N~`? zLKeRsq4QVSz$Mu;vnkmtm*}-=_gd)iFc~+d@Y%oV0`D5_;!SH$TWq_nO6Yp-V9~2p zM$=CfoTzV_Zf;+4lE5wdHhD?K;oBewpN+sI%erl2Qi9*CJvx@|_JQZ~Qcl~&x+kE! zCVmFgF*_<1D`HVqjr#*MZ?{z=MeIS7%++Ipt`x#BvM)z^x6@M}W)p?{a%fh)PcsyT zcb|E^{veU9ZF7-!^aXd{Hg&S!W$Mnz4<|48-~QE+y$4zD>41mcx8Q-X^#rNRwEbd1 zvBmD)9ZcYzn9e3f@#7jrlNO2-RXemBR%3UVfNiLWOp%q)NdD_k(6p^{^J~A}ap9dB zVZJ=^;t^@m!_aHN)eWs(kr$-M`apUXSPlkR4<%c*DUp z23_l{);$UR>wJykcYcfykmmkvth!6X?`Rc$`f z(i_pLw+A5P?W?AeAs@wP=Ibe`oTdNNA1$Wao7nB1{=7m6Dm#qAwR0b0>pPrE*;{_a z36}>!b#4zn-fdm*(B2R93D&0)y6#LQXjjN4z z?Q>Z8Op#CF9%&z0ELtR;BjcTLKjpcAJso9XEClHafp>+tj$WEcK}9BT4QDDhOFE=S z&bSb8;qNHOyI`c?W_I4$CWkO-S=Z#>UF2S?0yli$UthyOTrX{BtQNPzo4d6p7qlKt zgF5c8-%g9;iUK-PiAM5DQF%liOd$8dz5+9)umbSpS0gGPtCr(ROy!S0-pd3)OCMj=-{ zNU&hhAM`ITIuu`KZ?E&SvPh(CEAP1;RvpEAVNt5o!I2`K%stztDVdo>H$yGypHi8p z++oJPwV|o(v6MvwH4a~|p2s)&QQlWqW1PHehNCQ7Vyg)5RhO+leIJZcWQh120-XI; zZg?Z&kT33IfXYmsBKut6q%U@)jOcDeG(oGmq}92cA??V;6jHM*T7<;PI$2Mlx;$2{ z2xN(6~XPQu+KrqCg?2H0J;h`tsxOyf?dkxN$WmR_5|PuIWA&uR8w zjdJNV%B%4PZ1%NE-@5kE#BBE-PX*CIhe%XsA5C$*4xRk9p(g(9PVAGk6D{m^H@}cn z7OILJj<)Yh5ab4*ji}R%q0ZXjY>NlVRn0N_f_G;JW6`)7Lw|{~0}8O-!OeeidL)!^ zt{uX>vewwT5{Z^qS-B3g|ii->2=(-2$_T>DfdcYy^4CA&)BE4h4v{2 zvmDBk&+2FS93!mNH@&b;8WwFeSsxK*`1*eG!J1|8{PN^cOy(Jwe8J*}^o^Axu54Xy z$S?Oa;~*W`6T`>s`+8vUQCt!*?1p9CxZzWFzTM))vTH+aDkPH6J9OuUX7;TS6_LkF$3-H5tzw=5n_rs-;VicNh z#2>ztD`Cs3=9fF+q<3U3KU4vC%Tt82@qD_E@@N8;7UW-(cW-wpwm}KVMYdDO=QJ=d zlXL`D!jZC*J8-e>iS9A^!cftEq&3je6hL=26Yoj+CRmFR=oyrEAQL3fe7Euy(zi0T>>4-4r?-4!9#O7 zoRHZ+(C?Z{EB&`uSVVBMBY{d~sfXkZ!D5jwzfZcD{pjsi#jcY!$Ly#dGtU!F!niS7@;rB+s6)K?8o&Bw;e``_~exO}b~{H1Wyn zN5G4@yv^Fxt|ka3L@5G4?Mg$Q+^o3^tFFizR9l@dg)jw|>foPet%#IkFcBYa*PDi; znNHZL36#;3*1F1dcBfoZuKlvM;#NQeTn-}S$CE@KhSwEZiL?$}-8#(Vwk!|B%d^ueXl1P}Dr@OiVVa<|o4AO@@eUV+l6BqvzirJhDgNVCYJz#Jti}!T#i;|eW zQ#+S}IcQJja~;dZQ=&?28?f0+UKN!RnYZn9OwV{=4EEwTrI6|4g`19EwZ{k9AAhm} z%iW+PpWMGt&t-dI%kUv_j=}aQ%U)9l9sA4l9DJ1dX7CFvIl(uzrG)Km!33yI1_4eo z+%7FHty}_=`Iz4-$XC03MI(gN$F~fXL>`+XkR4z^?4!v8iCo&!3O%qjRy(+9$`4x* z<+6PT#;=r<>;KqB=yz(O^Y-Y&E{%K}Omg^M*Jx2>RleIVfE$RG$3nLdJ3({VhX5Aw zg>amidpUS~Hg~NZOHFVpKk++P&QGEZn_UD?L-t4plKSzUCs$#*eL63ds+7hb>@Am) zdFZ?K9bLj+|LR?st~95{pcmG)I%+4 zds5UW>&x)NEwZizQahIfFPN~xHi#5mCXlbov5BAObUmB=;Cw*L@d_IVD*np%Erw#s zFOzeqO|OGSvE#0^{TdW?{+Eeut4l!;`*ZzB*zt+i7dhQR@oz{l`7E?kVTI_TvA+2R z#puG@wxrl`5;8cXGqy^*`ovBX&!okFCk6c4@y$R;8HO$1a(Le*xna7M2zAdK1T1zW z{9tmCD8Mnt->DB_HIY>cc|4o5+zf5Yf{xq-^@|7a=lZbB&3`uf=&h5-O;bvK`8@PB(Cm0T0S#_#w&xiD?^(=2m&iCE)Ky<^c9L+&yF}?0^ofC4{}T4 z3x&r~B#B**{QJ=mbWEXxn;I0qYk`Hev`EIBhVLt$m#8OPotwAK_8vAa&?Y;s!F5c4 znuS{yCBda#Cq(%MXjW#Sr3quB zpwI$`FUhMj#+mm|C%tEmv=|$P4dveK&H59Ld+RS{E^|$Sz9j`KuFL&5A8*FGkZCvA zmH!l;lwhLrY|Xa}dd3!~{aRk}6IuuWf;}2itd}J8IIy)T_V*YlM6rrO@}+9|%5aT3 z`n!k1+n4P*GPn3_hKHlQxUYn050NA??8Eq(P29~G%HfQK_3M~)pt2jZRHoca#+xRO zX=3D?r8WUL=Es^#waqH+yvXEL$jweL;?3U<)*>(ljd?iVb*BXRqPTPWqp!!mMY`?A zD8AuD96xLtBF;*#$`1a={fH8^%1g>9%@a#%FQkM!jvUs9Nup`(G^pY68(*{Zgmoi$z*f z%guUT^jD{a>#uYhNRa;p$6+i2jFAKi>BKNz z*SEmrlM4+?mA!iVe7nULAwrVp^SjF1HE_8Q|k(XA;KC%b+sHP1G&zWAY->qw* z$X}?w*7R;)7$-HWjnGVfJW(&CD`c~#d@^+jqbni(mWa!LdFo)jf*jpvG!l#|0fGql=<14|%@;`r7j~Kl+?U(UQxN)21Ru$dbwFTj3 zd3rL7XNMki)(hZC(Ng91R!}8X5oBRb2CNK7+E=+j-+J0_8w)w-3~ay17An)Ra9a(c z-@5&s=_wQ9h@&v8L?b72A^CM{flrrpJs`KkQo0q%c-Ew3<&)fG`G*s}il8(qN=#F^ z;vgC4dQ=h(vy(RjJEe_ZwR~t%dbZ^}7js{9Jj)|=n?}u|W*Q+#wPq=fw4)t|4JAwf zLN9GA(%QpZ7h4>@yBFR2D*l&!F52f#zHivpKn3zpIg1wrf3WJOrP=Tar>#7X{E7E;Pw@p|Rz z+F$pvVL`?S^q*V)9;3%f4qZ!i$`dey1Ub$5!R@+#jJ43(2& zi|r{F2l5%w+vB@wL=L$C$|WOqaOgUo;G7ScDatiFuB_QT|&XbRtFlj|Lh1}8c))yJk5^FnXB(= z7hG_dUHw2iXVm#8nN8NIadh71e>}HZE0t;s72jU;*C()=oyF1SfYbImxjs|!^mY|} z@yRfJw2R%(Wjg61^4<{_0%Xb5X89?}@!01EMUy4P>WbyC`T`D~wdjNxPoD(fduJF< zsQR9E=FII*p@K#?+LedL#vnSd8WVDGkWJn@B!V3zAG4wAZy(&GP*;L5BLG=LB~CZR zAs@PF1~Du>w^p_g2PunWQ{%m$xt5WyP$rKvm(?$%*qF{19xFfY3`H%{LEmkda(7C8 ze#)4~A|)spY1eaoEJZ>9*D=L#{m3HlS;iS8@+$`>uBg-3-8SKH8*Bsnzo4-A=I@%f z{M(;{=zZEkuhI6n(BI?gcI#XDnp5nx+TqsjN_02F-?G_b(5okYc)tV;Xnm!H!U7rk zA6f7O$*C!{btlW^pO4ix1vaWJ2Na+ZM5^$;N)#y7AHhI0i>7g)5X0->fGl=>Ntoca!}isH4PF>33U zlYF|0Fa(RAkBd6|w##qtz%g7l^Vhir(OvRk^6J_`&) zTn{UN$(QsT)wHAu zzRyo|NoEI}Fxo+_@%0IgUpo4G7KpHu_l(9|hIg*~sSmT9{t3gw+R$N$pw{E^llWbj zUNN%k9PLD#HMCKs+QRqn3ZXrINC9ufV98l8UqcO+cmGxwb!Dop9u}FCQuVHf47)X$ zS5MN9JR?L#b;!P>;QH^E<%j45vYlYgGXH8)4KKT-6PUe7mOInXi_{VFYjaz^=a<~w zvKtEv4)|oFV}oNQ8(?lrQ9*6LQ#$xK zEKl)_cX+V8s4({uFL~I8G>xEI@!)Ja6nCLR<2|bYOj3YhL^00V~s|dm+Mkjm_i4FHEuJ5j;f`BIkWRW-wI_&^;r6{OZcx zpj>9nsIQog)cEmC+xA|MO3XC~$_=?jkI zVMfS4%ORVEI>oB5z=qNZb2SaoHk z>UQM&?b_+-UvDm{$)8Gb!ZZI;3Vxqxf2a@ta5u_zlJtk84CEW8GUiW8Q-VA%Vq~`^w?u|l6&r*?`-ysYU-jDM@CjGT9ILhT9Dza4_l zE)pnA@dk+<%iEvkrIgwR)*aV65kMReJN7-lr;8E?A~Kgqha0Gq-)8FPA4>Pm-YTQ~ zoh?XWD_uD}v-A47(B_c4&!@3+eChSpEw8y&`h?ShJ)Tn=e|o&u^_f)YOYCvniJU{_2m6GHb1Yrn}Goza<6WQ~chZAlcN{fUE@-RN81@?`u zt*vm1j4;xApb%|WkPiD`8z!`6lYrX++4#2cK=G58p>$y+K9wu9gS1Pyy1;g&Joe|Z z(@lK;b*Z|l`{~--ZirKlMi>|@z?5<^#?Sv9psj1&Z`XF?^V)7mY6_AXMRwn`K8HE# zrMci9NR@O*?{8&zj@#!IPh{Ly3v9Y(SrCw~=V9toqi$-N#oC38vE#3w?c%LTr1I}| zT;eRx7oY4v|IFxycRjF;jmN5rG=l2h&8&J)kg(nrX*hx`)Y6(Gw;4dnD^R3w^W+un zFb01IgG$Pej?RQ*(skO+N|WK?H7UX5CQ=eunYzpTu}X+p{Q4%-J)Z8SwrzXLY=96; z0YCp)<;3ot!N&FP+Fa+hZJzY&ef}w_d!DPAmdWh_vp!NGsZQ&JG-)SZgrW~8d*Z8e zuDZH8W1BiH4k45yfZx}(=`VTb>A|0w)S4{GiGNGFKHrm3qxtdnXGGf9lTdSJ`^dOL z=RD9E$ovEc*@HM=YH}5S(o@%)8Lo2_?M~-8_*CRADd6PDR!&-jz z$I9rOc!G{)FtQX(5zZCcXw7=w(AnIH;+fa5lY0|G&A|D!FBzRb%$h$5au|plJz7OeZf6BEnu^$BRVn3AlD8YXU*a&&! zl|bUaE7mep(?D}8ux}XYc|umB<<1SQBMY$i z!xeatDyBk=^Dq7k_glhW;C-G-S$Pi(mJwga=>VNT9%$xbFbHR$i`b1d7Awm-50sfCN2s z%S+{)B*|p6yzIjXZbbI7F_zjxeHB+?w!<7gEUWN4>=gPayM05c8&xYRxT!E8p2M<} z+F5iB%tnf-#S0t|#HN4A@_42@kv4T^?UpLY6#g{|!NB-JxZ#8kLwXAm(u!f(r1*3j6v83Si_p&jrX@mSgmtmpwSL5Hbs zNxf90KiOO0VWAQ<8kQbN#N>NR94nhjp}z~!5qpnHVL562MV|ePq0}iOwFU9lZ^?go zKEs1#QSuqB+%V)WmmEg*h2;r>#^h1?o@v9f(%j5Pnqf8^`%l7r{<6Bf?gQ*e&Zn>HJ^&xJ6cT8 z9T%1V`{R@G(47o-SL-db3Cn~SPSC>QT<8wRp>igQ3*@^erIM^(hAe+wBBETzrhk-1tiLr zql!Id8ANs6{3x^JdG-z^4WUIO*P8HMvO5(1u6Lm&m7m~+1c+IU5x@P!;;?8`bZAT{ zwVabD2zcX!`$z>qnQ+P7IBFdV53r=0jO{M`-IXEu$&!to1GXx>-W~H8_BRE+?Wi#o zDwxu0%npJ(89_0$Nl$nY4Wr^aQdFcB<8!?qy{R;?D(&)4Yd!XmsndCSXjXRI=AvW1 z48>%yBQS*rGR)MEi1_#SQ07UwqE*OcMN)qMgfY&M-L6qTuX&_@t~r^36VOYcKgZAj zn@)MJydfZs)nN}tqcbQ0kCb}iqtDlJ=3`@-=FX7b*_|RLdx{+p&JLsMdqY@WY3N}f z%G}%YQe!kYMl4)ZfeoYg@O}mj{>PBdv+t!ID(C0!Y_sm`@B$)yFQT1e^?OES_N;ZG zs<5*|M2!B&H?mco)eDd1T;q~&A&K?Vrq9yc4VK{thbcyhJC0%@;_o5q&WC~S7ZK5~ zf;srVS^#?+^4pE9R7|S^Ow4NI1+1M{DMGTx^Oac)(U>U9`wqE$c{cTWT^CA|IF4_Y zOpBVe7~@H7i6Pea2Pz6q_q)GJugI&>sqOUviVisZNY?q?f9CZt5uLdMs^23&0i?Sb zphdsVLS&H#J}YtK+i?k9wHZ`1+Ef0e9uUv42oC*?Z0I@_rAClR(#x?5JCi6CtS9%FPJPLwPQLga$;+)#PGl1~1vmOfq5Uaw+uiS6d;1)9 zSeBwGLx};bt;ZrdR88YyB5x=53rTFT7ilk@as8e|k-wQ*G~XiAbqImSG$$~mzZV^i zi~H+hb(u*qiq+euaV5`HQMEjrLbA6HnEGK*&7v;0#h_pc{S$(Vk`Zib0~{-fe!_s> z3?y9m94)u}PXg~7N-X*j0@7sI#)VTE9cZIZ_g51Q!nL?-JXmK?=T7i9Lmt->5%Vgg zvHp;7@`bZjG1`l5M{oh$pN%TQI)8*BRLQV$uB(6?;U{gztml5F{!L3*RQNvJiSWjo)t z4_Eeb#pFPx>6QY6%fdC!&_OgG1{lH3O#NzW|58VPII58UD8mLhr3IDiHPl)*IP@fvGM^T=S*ca%pBXn3&lN?1?rBjzI0gWzGipG>4AIBEW zz@Emdpbf%g?wef|x-s2~iv-tP*^9A}CH!vW0T8qO{toL&MkUKu#oXh)^D@DrmZ)S( zz5Ub@u;-r`>+hqyzDP`0Hlc4wT7D~|+NNnYA^A&uf;1-_cO;Ek;;wuL7QIeOTqlil&L=Ts7J=@IBSEeS zfB2hVYd40?wzj`gW0A!Rg%n5P7X~ai6#(zv-%#pB#lZOCj}3qkMkznR+F3$t**l59 zCZ|W7UuDQJrKXQDFOtB0`%rB%_k-aB;S#PLN77v7tTr*sldnx|+7fT%oI4(5CmK?& zsSRhl_`}A@fI`8-qkg1O#3;kyorV2!gT^NX_Si)>)L*;`=UNisweX0rlvWI+0B7^` zJ?sOVp13rD4{@-+(7`w`oA8y*pO85r(gRi;Udm#~`qr6WvU0z>H`H!X#4CcADkG#r z`7ibJ&-%ODw@~@}In=e-%x$)`|B-fNo|Vgbl9fuH zEs$#`U%&Xwu|ze11B1U)SoEX7vE9tgzK{Dyt-0db_isns)X6S^UVH~1{CKHv-LPY5 z(|taZ_{?y!5d~nSFAE&$@M7BAG4^m}8()HLf*Mn}>E3Pk&Jf6_5pkAMv=A7BM|KV? zsU)LPIkk>5DMm2-1_G!v-Nz-_S&fI{g*ivq$)y7juReLftD~1ABa5HfO%9X{Z+H67 zUz7KRqn1n-E$bUpA=9;cKsb@OQr$O$&KTsItDPzeTdEOpC(ap0 znKCUISt|qt$E{s9GdD7f#|P0cc2F{j!fC7`o;3ov#f0lZ_@~AmM$0Jx2CjZYuG)Lf zK@oK`48?Vdi>{uS`l$MenDS{sesO#MOsYL79^^!x{L^rfNfiiPs)3r5S_P7*HNJC2 zOzXkCwFjFd5Os)gQ68BpT%r)^nE;>o}4XsTHJUo zq*EkyuLLUKi~Y#C)a?8~A$keE{wtL_{qyg}k0tGTaQWNtIugDEDrK0>d*&J$k1{gT zJWp3{)PCV_xR`m_I;NB~L(yLopbV#+K{edT_uee>P_3=)kYOy&Z!%8m=8<-yr`Y&h zoj>z?6gZm|aJh@$%4R8ZVXx^F_yV(sSOxrAAPxR9ZKC2}IFIw1jRo1smjTpqsRS~mNBM?p_b{%%+vl>5d+gm}k@tv11!1?O`6)(-M+Ao}w=^#s*{4i9 z%bA#+oB5SXr-=mDEoSj6joq5(3~yUE^|&2`c^rU{X*h3+VsJeDl}hlj&gbK9sHPNW z)eL`^x7wG0>Q+%0@O(kN@2l0*-Tuk6tTq3Wuyt2C_&$so&y=dkg=PwM0RP+>nlKlY zxNDrB^W6GXBb0g5&8x4~M5o!|_qCXAkPJ%~eG}Osy)8GcpS|wB92^2tCaJ{fW#A}e##d)_Fsc|#T@MZDYh}DUYcrX2 zxhPovz9@Qc24Y+M-c+?8NAgxKd4fTUEm~h0Me88`*-Z`*oL*ONV;tJ%N>Y=6u*yi~ zLeiUoh-6EbMh)fsN7dU}vf8uF$|0|}$F^DR^Yh#~;j<W&MmEtgE`8+FrV!ctd_I6ih z^0Zz{qBfj)mq_YwsNo#e0SJfFlgs+4k51IuXSV3u!5~d^^>3=gq8EIz)00o<(X#}g zNdue%Te0YLK514v4EqS=4=siHpsV+aY?2U{;cBRKI8&~DWvf{ISUh{=P zG95~Wi-c_bmOVCmLV29*h;3UB;#}98O_a8GB@uhpc8Hf~GbUc@+yKH#pUj9~&?pCL z`x3EnzK^Lf21KP+xnq$Pk|!3HyJM9`oh1HZDVg9yO7q82jQAKS8*=^~QRLIdlTSt% zKiNf7KAhx-e|Yy6Gf4~sGa@pu>UQ4GYgKiXxs8wQA!Fr9?ab!J`R3C5>A-ZSt7G+8 zMA)e0ljt}nPPp&y|U z_t}mE0}d9>aHA0%r4h3I`s`x$!Dgwo&S;OhbMC@Zv&+opSyoMEsgjBYZeoBTbHyu(64#HPVa8(Y7?YnN=NX zB~ep7R|AC#B7hE>kyCo{=0NuPRa>JQ@NV{QN1Z zwjJbbUQQo_d;_|eZ~q91h4B(gv7m0A3fdK1_B(x)*FRcZ?qz57z|dqr*yx1|U=C6T zJ7dn`g}o7HU(ud-D!ka;O;BUs6xp2v08EIc$~sRn@8B5>~r7DewqbVvg!D(B#4wQ{CD6TPiN}XI82#Vyx*Gfx|#i$ zv&E8&_?Q4Lry4%}7wEkN2k6hg*ZS+wLs@YqhY(l_#;fbQs1NOqtU?0iw)YvBc?@#8JIDgT@k+K}52YGS5>)3bowj zI{UMF?SwWa*5&vWoV>WZsge0x;J`>)|6<2DToU6%G{RKJdfo(Wk_Xxs^yZlj>QsDT z?zKx-sM8^`xM`RJFRkwe=kTScV_@v3wv@ut{fLAH@vR9PTBcd6?*{Xz_N_mQ=%bb1 zZEV~QN64Gdyo%KK3TM%%i>XJ3lH@f|MlxUg`QP371W__x+k+Ugz1hzy`qtJXrbzC~#TP*U|1BfI{{D5Q@V>D1wZ63tpnH%xBAVFAvqP$cI ziK)VjP!Dcp-t=nP%V|6_be4@KU>x2Z?)97d;@{-httcv;$$S}Jue|XHXC*}X959~G zGs4-Z8*I^zw6@H_Kb;xcc_2v;1266WddNn+5tL~NVGFJmyt(uUKg%b!;L$p$HDRr< z`SHA*02LzMVVD}vUziD)w1e^F8HUBW-XQjrb0IE$ug{_X??G-mM;PRjso~s7!GzzoEqWD_)<_*fNjJU|pm$i3nTOTim zf!+BUKN_ku3KkOOz!a{7&-gN8Y~*Pw{F@(?9I?S~6aF)Y@xmYB+&>hTe*C#~EbT7& zl}xUqt^O~3lVy{EhHI!98MTRBoHb0xX7 zWe=D8DI-89+In+WBwQmm*0EHd0)2ByQ(bEjIM~Ia{_Y8XsHn+NB_xKoJ5j0LrWy;| zG+AT_K<6OYWPXfYxg2six;3KrYAT>dBHQ?v`bJqFn+iLxw$rIGAw^Q(n{cW`4~TI2 zCicBW96u%E^3w*GsbQFFx!y*LRdTUOq_`J<8dz>_dKmk%e?FkQryyd7^=wv?{J-BC z@C|3YK0d`{Y%H3C0Toj2vl#xE@1w)rd0Ew(FJ9(TA2#bQh;Dl<3XcxlrgHe)&>4r_ zHhhueyNGzWBSn@1oT~!DM06urQzf-Z_hhbVpabNMY`^*W&*PfPJ7d7sV0Akxa z6f;J&;t4Li4_r1o6h;42nd&sg{r6Lxjcuyd&M1dRyT02!P`MZ}m@&4hYYQvgyB~-3 zy8XgfZui@1WuGm}{`9l`%Ms-4P*0GAUo1Wa{^Iev2{_S5Tfi{5-TtJb z_H# z(D^YSF<(8-`id#m}D%klkHvR z<>u6Wvf>3+`5Oifjsma_UgUZV6aw10X)<5~e4q&-F~!?xbQE&Dmj2J3A`Ewo&Ar*Y zIYN$c?ytBhG~c2ux$2rp-{vs=`FAb6{pzr651JiJW?W24iJy*%wC-bURyr8lcNZ=u z$%AsFr_n{KaVNFAy3c*Em9+g&3@t$_$43<-z`uEyXLB&>I$)qx%%^ukYSW%eOdauK zo12qVWb39yV7UMRY-ZnpHgY3P<^&^$4TtzsUMDwF!GDe}APc)2cp3X|YA{%REy|;S zR)O^{DV9ePK*(7RzPdl|>f%wYK}m=Sw9W3t(HkZ5eY&D8hhrHkz~&n(eE~a-QDA!4 zpr;3UUL{J|buI*JGTPauHttQCoSqF9FjzcLyCyqSJ8utf0Y5rK3z`aEr#)IsP!bRK zlaeVI$m?ZcL86yIwm9p{`mO?}*8jIuVUfcKoWlS5gQJ)@0Tj+~dF6;rX|52C$qp^G zbcC9yP%r0DSz_055$;cYLN9CkWf0)StlgqU>gqfSl%()^5Cqf%ghxpZ)>XEBBR@`X z>uH^gZW&a^=S8{)AOUu%T@grVqHFk&5Fe%fJDb#NC~x~vU;Z@C-bRsZ%ofv5=$I(a z-{rUUgb~~O(-ZvE`8t!`)f27vSNQV>@k8vURlqxRA??`xImJruUE(R%i$qGKLM9NcRW0g<;1RkULLNYa4gH7n=$7d&rc9MgqKFc5TtEkv#W-N zKoZN_7$db2`U#ZM=;gN|=BjM=`t{fzxJdE-Z1Dd+BgG3FAoXo8+(VH8@r_=`3A@D# zavu$tB66pvhlVxkqRAzfb-j-1qi7Wp`y+JL(l-Y{`Qokm8+`zW@vgR0QIF1+g{&Zm zTpvKslGv>s(|i%o}oq;`gi4}pJV2;4F?Mm zw5Y8AzcC5Jol#<_vzI}mmw#Z%%lv2GBu$R`RyE~)0Bo-VHq0vG9b&$~(_{xSu*XLI z_h}5fZ3D6N(~Q0=o!R2;RM8;dLTqeo&PZLjPv$fJ|Np6_eKYYM+)Cy8-5ySv%=7a! z$GfPV?;W)che-8JO@k{^ys$@7e8igr*!M-XnytHRmStB-dzp%tVC^{>r_?;pIV3T z?E7l89-%_a&CQ2~D5}k8-IUcoRYwcdiIgKTOA5?RVgJ9WKYzgu)&Oi2_4f9jlzL~T z9%wO@389v3c8@|U*y}fwhcWA&1OmV2YmFO(kc5mat6VG)#j@$=UDf@qV zKCe}|c&0q~<%CUrumD&P!*QdDd-wD>$1pva7)kYK?4OtXOZwN;lD42W;bKpDkindm z@?e7}nRx;SYHoJB?7tz&{{AI1H1>dP?OPnn{ymQ5PGq~h$!ST&Id{_^QtYRn)Qj}p zN{7t(!}k#N8+7aHrDbrwP$DPonxyFzxq@~4$^90qIBSsk=lhz zmz3fj@)U-d7A+CX639;EecrZl!{6I)A7;y(`F2u&eph>Z^pu6RK{LA2b%I~q1U6(i zSGNK?AJvWz9#w=lbzgqu%h1jGU-Hpg)xEH$Upc3Pg>%orH-QfNu7#%8?^Ir#{$5d*Y*I0w)YQQYAiZ zbDv>-W?}3x8(?`O&GJGONLjNeoZHj(Jb&F8v8J6ToL`9FTJ%GmQIgVE4?1~I)Co{FK3Q$uQ@2&wsRxz=jNSQ4K@FUaP|7R<;yaoMx*Wu;|Z`!Wu4+_>|`CgOIRWuWu!guR6#(Baw5;q71&%4Q~lh(Wsl8!;7gQlRy!i_b&3=IGO+b}VO0uN1N d1NDKJ8H58YBU>DAx&lQQJYD@<);T3K0RWZ3W03#= literal 0 HcmV?d00001 diff --git a/docs/source/logos/vllm-omni-logo-text-dark.png b/docs/source/logos/vllm-omni-logo-text-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..45611c3193975dec29c80286dafa1e3815cd543f GIT binary patch literal 40732 zcmb@ubzD_j*9N+Qjihu)H>fm7H%JKxN=qYby1ToSMmj~LySuv)X{5WmMPf2q|8!UxHPUDZ~Dv1#r z2}Y#p_Rr9l#8)q;Pw=NmdSBl4l!e(`K0N(x$bn) zYxvG?xQ_jD0mgfwEB?)?f*k0C2EM#D5;U3hMF}qtK>K^Bc!t^aNb7f(#r4b>iT?CCJv)1AG~B#e&9QjY1R{e5T3t7w_)2 zMT7B0%~33tQtZDA@~zUR7Pgo`LXA(Z)v45Q2XrYAKCS=Yf7p9uCwXjG+k6qYS?Z%K zpn*r26H2hLZ*y>FO`{TYRYXnol2G3Qq@c+_T&b!Lsiu7O&M;yYc}+8cz1812lb<<_ ztFs5`+GiPqNF?P&-{()y%3loQAkbUrK8(JxfnkQx_Xsu1~D zBX-B$Y(9$c{lQ4wl2Y<}go)8-XR(_E#dnUPY@JHMa422U?=Z}SiD^c{(8H9Y% zp3e2+*z~J0P{f5$Q^36RD5O-xBjz$_q1O>4=5u7z82n7wu8LfaEvj7CPKt8n_t2qM zDj4M-!(B)fE&u6RxcGBq)c0NCG2+pk&bSe~GAOVsN*`_9Otc3h1xU&JQQns|Y;CJ%oh&(#-( ztXCKh1Ez-p;{5tVHv+7^DuQ`MLWvm}5sLC`57$Su*Nd?0CC@QpPCc*h;8(%#Zp43r%N^mV$` z-Mghph4H88tsWV?O5KUI6xN+u%lyRi=)-$Y)DI#T`wL4YOdc71OVUOoNxBk!-=95y zz?mDP;@IPumr(jr_rNRkQiomQWQb&&KtSlSU=Kx)NN^VG7LPADwd1WGeyK_!QfVo+ z8vA58iQ-BW?xnMJ*V7R^t}S_{p9D>iW`1=;+V$b{VS!;XWe@mFb@=|F-c+VkMri9wti%)u(0*O= zO>4`pk_;|^u)A}RMKUzZrp%ZDcc9Z?+Px5`pw+bWNg=%8W`P?1j;6OK(Y6*JPY#=M!5u2I4g+@jc$DowNaN%$h8 zS!xTjeR7Mh7g+livpH2{tSo`>eghaRcUccV2yCscvT?Hl(u9*Mco z*|3{1xlpmt@7+Y9@Qzq^cI^4pg}G$9lwE6|y5T9IREuYe*NG>Kr+?2g%v#qRa2?Poe6C_%U|w*p zvRSyGHm63X!CYlo?g{y3)lu=HJg=tCOs3+zB2`c0quWrpaZmL?)trIT3~7~9#YlBY zb<3JJZ!KRi2`7(zI8Ep|F+G6>`$hJ*da9nX(XxeOAMEiL?RnFAecN5!12%c9DiM5K z2Ne~`c4?=Mn|!NPJwaj2q>F41^7wA}J~CAURY;XcZP<9S#%V`CCfbzO>Sxa5h&mX5 zSmbFW&(S%dJ0-gLxkUthm#puRh)6akaYS|FxoxCtV{f(dF)G;PV|FTmErHYaa^`d0 zbUi%r+q9TDn?`}+w$8?i%iNg#*nlxaZ2%Lv^*>> za<)@hHZdD=^$Ge3ly6Pm(tM}=ejv4*$ zRopH%16ZpxDDnI^v}?&XSYcS|eM8?DWNO?$d(l5sf1L3*B#QH3!i{@S+R#*acVSbf zdo8~h_E>z<;Deh;&#O{jGT->A_D%Utw`t2nm09H^PLWF`r>(_Do`S~8yAp@-Nv&M# zqUrLqdhN320=CR@7r*sDWg zIeRa=c;m~)FqNL^f*6da=rL@v8lz>#NY+qw!(#&#C+O7q&|y>m{h#`*#E9 zCDjiJ54Ri`+OG-c84*GLia4ERNEid=^Er2(>sI~NqWhiMV=Vmwdug1 zK9Ar`1l`qPgFYaGP@OHa-m0XcBcNpRj-yc?rI+rY@~F+j7<)gSl{Fn5ZqR~mtKoE? zo^P9gI!8fLN8l}gBr1n11}^6VB|J)gBKP#;7gR!UcgdN&F`ny}TX@fvwc55WbbNgL zz=qyeRsg?_9Tco-}Y9B>2!`~$%dg5du;27%td5dG))J&e+QS%i+^;-~^Jjl)4=VghvDYhLL_xeFOr*PMavH*{jLP@_w|kVA3HXiM^QsrJ9@qxtNu$Avq@# z3lj^aATl{QIlrv|g!lbxi9g+e-vlU)?d`33nVFrOoS2;0nXGJ$m|1yvc$it(nAzAE zffkH*E|&Is&Wx6JRKIWX_kCU)+I_S&v9>p{vLuJzS5M!{!Crup68fP3eEoh;LuZr! zKFQMV&#-_2GDEL0vof(T|6kqgO(6dt-Jn-~cl&ExzaPgBy&129iL;@(+G`UFz|_F2 z39`Oof5rdTbN*kK{`;oCyDHlm+KO3O06pym|2tWKI{)+H|L*wLGu8k5Og0YAe?Iab zSN_oxItJeNhIUrw4p18^TbkGlvhg$jU#I_fFZKU+1I7mo@2^h(Jo~?UsQsTk{(1I) z_mHRg@kT6L4 zwTO~4%w8%&iqgc)V|r?0(cX{S_V-!ApU5dc1xvldVVFMczLe88%N*nC=3*_mHWLh? zr8Uj$j?S0(7D7Y&3E5W(hL1B#I({L3IPS&cX#;O9g9gO$z-}{caZC?#IDeaB*StB% z*m9b(xkfFEMTH~3#ZY?Q)Zd8pj^6aKA{l(#7REeI*{Up~ST;ODQ5{38%z{-qHJNx>LG_U}gO z4F&~lgdQF1{+lJqfzj{5{rlJn05hgw3X;nHtFeW@CVKpMT3lRQtS||hC@D4gu%6W*GQqRyA-W%{UP$0ta4OLe1lV%11@3psIaq*FYxvn6Z9$HkSV zZr8}Crebb7oT-p}Nl%Y%cAB&&^-cRv|r%QwM2jdtu!ZDJ@_k+UDMIr-* zn>=nW#8xP_V}zqYjc>=e@(T)zZ|oOm2R|oZ`I**k4IV_@2z;YvtqI&BS<-_ zPrl6|4WJzk}0qgwSMt4XpSN+ z!Eo{z)@*c`4~;moz1c9#k()gcggL9p@>Z=loVYVLVx%Z#i4xWVN8e*CPE0)R%&Nqb zG}P?R*C|2<6DX!M?ZSR#o5+WN+Dm1VIfn>qt<9!m%+HNz)?Uf{!(m{6U{N~>y(J*H zO>!C8r7QbMrDxE0T9SuFOlP&*ke#VCi4mgT>iEE@S*sv;y@owCys})i7?c{W{NL5( z1H#A{CH{REZ}j8^OQEBC-WJIDDG)hxw46_BlsoKBk}FM(JNVPF z^C!84o!hgQAN|vcOw__(X9B|7DWm>&)XtwljRu&!t4)^+rz&l5DjzDx&$h?mS(6g~ zSKQd60lI3ZRZ75CV`bFD7IB*thJdHhlM%y%X5O^!-(zTBO-xLj^wXC}xwzC7Ipnb3 zA{MGwNGy0gdiWslV*gLS=iLNEjJbiBNvT#9*sqbNLhoum^HjrTmwiDh)yWF|#P<^O zNR%7*i_QJbIh)ZiF%9yo{l59xXY;ig#3!C|urIJ%eeEiY zMyf?$Ww~QGDbbX=oI>cckUp{(=x5vfV-5It1Dlli2(5MJPmuM-M|3thg3;gjgiCMm zaCfaOOcc!4p6oK7E$5R@!5~-QtfOk2rv*H(P3}ghQXsMhCJ93;~zRfndMJzZU(1t38BG_x1~gSRi8KZbAy3 zg0eCVbIV=%1fKSe&~S`?ICX|R$dAr!syH?P1^+_{G)!O!31}dtjR7XA(B>Eb$!~s) z5Ksx{*?7itP`kR8`z<_L%0FU=gW#C`&-(u<>8(0=(`(K5-~C`949e{P@m&U9zdu97 zkFB&*EcwmS{pDi(`anF_xizUIEOjIW3}PRmR)uaGta_z!)ZR=5o!IA_ppJo?A+E(r z?cSo?T&XAMqzs4w{yrUej32h}eR=-i5#gt>2x!ESWDiF{9M#jO$6td;%RN|PMJog> z#OSFrL_w4RF^Wd1!}9QiVY6?&wY{sUzPHh0Sf6N4`>#y6A@Xl5IIlh(;6p1DO-!Kz zSwTIP`oiGwdVdOF!~TH*#wf?hLiKXzV|~d(LyoQ0WzXRh02bgNtEUa;q`BsY67#&D ztuo7rqOpkn?R8r9z$^pLDy;Y35>~{&cs2LyO{F9(CzkaGHJ=QrcVpd8vhrxLg%^!< z%-IArxA%&IVz)l4%u#-BuJv8X6il*E8d~C0~?6_$PjyJ`Oa$;e}5U;OM5Z+D3l6VMz?@*@}l?SZg>W z=M<2q*kSW+F>b;2)oR40vqj@O_h22s7vLcdr;sd%aejQ!Bo5MU0@hg}IU4UF_Uns- zUuKN_pWtv-0k?M{tog!TXUV_5H}P_GJ#qLmW<46>T9>iuC^51z&!r|G_z zUb2QgDim+jMIH*W8@n;<|MJ2&?+z!i3US;L18GSc)P7<&B4G411wKmTqr(#_e~dPi zO*h10HQ~t3%^fMf z*1DG^S`8`-uDgtj-N6pw)OM6UB}l^D9yi-L@D=b0@2N_GmE5*F{V^hTx42>0ReoRU zK>UxxT7U+c28*6(1aD!^MzZIY2pJ#CK2a};zi8 zAs|&kJ4Lfn25N=R-emrhj!pog2)e|G18x475 zHB;X8DJX1uP!^a^IXdrv`=vHiJsgw;RznHURB@f%X8(k$4r7GiO>UKxIRww;)!z?` z0kFMOHHwTlEFKIZy|hgi5_K)oMS1Wlm})}=*x@A5;VrwPl|UHqy0XMT6zrT<3xj5f zXxbm1BKiO~lqznz_~5dWmy?yB|B}4QF+1s*wfpw>c!sv?RHp?STEz{~KNdv80w#&v z93l?8jb;7b;BAfhd^&W2r%*4&pHlE!EPCErh!E@1x*-9ML^Atr>PrmU1mOA)It6WQ zrk1;P=JiPptJw41sT?bB$t+pjxoQjB9ulWsEvH{JOT(}KJjRm(m?&n(KG&;gkU*%% zOktrCGWd@2WwwIy0hTZK5^S0Mlqq}5v$p zkKZfA;P6{+4kl71b6Wfuq*bWCJX~asp_Rkxj6IiG@lMwH@Z;BcYu$MlzRnl2`z^`x zk3DEk_>(!`=NgV1-yl;!`AN9}rn))94!pDx^qnTA%rO&F!g@^c&H_ zqek&7RR1yE{!kDeeTThQ(ez+&!LND;v+c>E#^r^yT+esD>!oo@ zx7xsBuv#@9OE6t+a$o;s<99yFzW!lM4nT%BUvou^HjK1o0Be|PZ;|lYM*^NnHO=e6 zrHbFYU4$LjqCO$mbp2Ej{3|9f>;RcVMn=vmEgg03F=~ut>40JGG%V}72*D0|nCjGj@Bp_jFyB;>fHMXsgK~DBG~DkN2sAR!aP55S*!QIJ z#z2JzuqxrW4PTEdISRbZpLvSwpXiH^h$JL;DvZY{T`qq)F;Yl>ybynmQ{I@^;B+`F zUQcZD4w5Mi@}u#(9?*GJQ99%(Egf=p@JoZ&>A-z!B2SU7tspn|`MNvHGx#zB6cWps za`EP?6%>(aj7IB+3FNvMTNt95<1ns;NWdI@Bc2!RCeUeiJ2m_B-o1hVj+wE7i}MCU zL29O166Gkoo)D`2X+!2oaQb|)79SKqHJ<&DF{L0-P!A@yYC4ZgaawTs(dc5Q`g2hx zz#9>6MEq$K0r98LpVtd3hEK4t;$p!&)JJPE^8M^1{EC}SmebSC9&S(|ljZgJFv<7C zY41wwV<{r*z-k3eX3D?M zed;;+gG7L^|NIqMpr6<8-wl$zNzmhFis4Rc(uFy1;PpA=(*=K>1Xi?2=zQ?6A;I%X z67p&eCFFQRPoy&&U_@DK^7O4p1|h4yzc7@&mteIXu10v>eY@M$d9>BSJ(?5U%3vSn z7Q-m--S)>Irc1H*Jr`Yof}hJpuf-4K$IwXq;8-tvzFy;cZhAcy;rY6(PEdIM?Qcjx z2ql=~I1GqL#L~jM%h$arwE^IHF>)f`OgGb!=vp7)a&*Vt$ssIZZI5$hjuOZke8~n7 zg=dhbqC(kso}gJW!GUjh>^7hTC}}h_@AhL)xWJln;vT-`MtgabupDe{g!@q&g5i%W zX$~%&JV6wxZ_E0I6dvs}ui>XZaj! z;BP@k5(AN>EPx0KS%44uXYi5kphz48C#XUY@E7o%zKXLZ*C*>I7jsr-Myo`(b2V1+ z0CmdiQhgfK!KT{^GRya<&N${zU_5!~yR2!sFEV=#@$aeyLNSm4*N_ zv%EwEDI+@nkvIRt)he4_JJ<)oz8V|SDr~+`VI*Jux&7|X#?E*Pr8%ALVgF^DrjFx`VK}NFr&4z;y=uR_=Lt5G z!Yl^0CjgWI6GZ|9IjJHrjUYyN6`YcmEhGPVnu?_e?cs|KgHZrD4Js#o^V;K7oHG5tv8eh*oL3R0AX$C??dV?FLdg-=XRR^2}1; zi`o3xq1LNV0(Jv{-kGLF=?Zz?IlHnOjY{ypas!hKFSs2xsbiBj*l$x#>3B5>8()}- zx~~yg*0%A=-#uKm#G?z{vCu1b4Tb}7ShTqLW~Xp%ME3XOrBHd_j+>PJ>aijWx8;h`Gs+Cc*S! zILHAE7d>QNcbFR$>&jlQMQVM(I~1jc19;cl@?J@?k;rONhk*Z#{LI|UU69s%p7Cxb zG?MV>Wg3@N+TDRuO9dXCa$hdYHz?%Q_2~l8LW57!74Bbw(|Za@H*S4BUgsdhl*K-f zE-55{8o<~-x|pL_C%)oiUR6Vo7U2|#zoIurUaW!;V%{S#@QRJFTxG6?yQ7J!k@rfJPDM~4>q3p`1-;Q zd}IK2kuo^Y`=*aBy%(^}p4zX*=y&4c0kWyQ%9V}%6la&)<2{55)^ONq2){;=7oNl2 z^fP;1%cwWGR(*r-Hjkh$X?*W_n!G60;J8mbG-r`Wk@BRm&#Gac)5obM<^^F`|1YOS z#@ma1J2s7tzfrUUfB`k>@GPMw`olyzkWfka)qoJb9;|x0))xc60y91Z#$!;^MLPNb z%aBbSPQs^BiSKz=FLC!8_5#Bh0GDfkE>zK@_DO};aql_Q5#Tb3*=0+9>arQK{3aO@ z7ewZ%hEXuvR|%*Vb&n6Xse{oje~125DDw#kAo@@2_kEKgNP!KzmizA8Py7(EyJaY< z1t1IVPg?HGg`=~;D{U<;k4`5?i|6$81G7J!8g_*F+NetPI-by*2gGoY@!IF!0Sl=d zPuhV^r(`W)dMJYbBzP5tQs1U^O51ISK0)p6@8PCHA@F#hVU<)y9(V^^Ey*;ZCrTI~ zLkQzEc%kTXeGJ(~AkSzd@Sj9|)FTFO3yCczSc4@@%GvSwU)? zz;TBxu+O~fE*IQLwC=3h{gF;i(;rh>Vmm&p^a?@aCw|LSfTndDyrgGd?K-;Gm7n`@ z7yc)n(Z9j}D_KDN?{L3jL^6o=o`iEyq3;?Lko3MEwUg_HrN?^y;ziWyFrU0f8@>Nf z0_(@XRaRBpF^-v6{Ee8&1S<^^?c@@N3r&VsN6Sx>oCb6y{Q}nFeJGDsJ~Q`cihm}~ zW50PkpVDFGT5$emdPOeza#ev=*Ku5qOMO|Kxc>*Cy)fd_g$5q+l8Auc-1AgBu`8S(TNQJ_2ly$go|2npJ3xnW%AE9RTP#eZV|F$4KFLPmLAD`mtMT zce03MaGVw?7elSVv55bAE#_sl8PU+lNDW?n!_~@XGq0`|MRIR=?3UYKhuNh$0u8!H zJ`}I^^rY#32Z(Jz%t{etCl!HhrV&0wSmZ3qdD-o`mA8Rxpf^`(@{y4c!RI~ua?KF{ zslf{cE*E<<Sf$CJCt4V6-}3YOEypFN{d%EDp#ELNBNf_O zU59ad{;Vu5&ssCA@Evd65s z8Jy;Ag3b;XTQ(q`mXtnLz{Z7bn+d73S`>5v!c1!KCzt;l4nfZX0gKmRhngj=fQX2}pmKh`TtD+iQSD`YA^K zZp2Z@s#}ba%=~`7eIbwN_N&wE%U&9R$Gg+-0Q}h59D-s|fLXu=xdN^R%HJlY2aVD_ z9Q%)}U9^!k@$C%*0Kduui22^GGeCqfokDBRRn=zo%ko|<(Glv>Z05WN2!Ec=x8~un z^gnS=*k6?04F-u=f}DcrlG@;SqjrtBI`t1ijBH&7*E{Z;b}@FH*$(-aVj_}ZRyrr2 zZjQt=YEt0L--ZpW%>zhh>?yT9$`YW|ugufX0rG*pGB+8K(xU+I2r z>tn?Jw*<`%jJiTGD>0%0>6!e3#Vyv!Nv8k206o({^^>vmnO}09KcFtmn+PezVN(6Q zl2Xl5_aB8?j4b}2B;KERow5(FYiW)usz^-2ic8$f=1^?N%wZzLLJm6yNoa{OTo zNK)(dyTvjOeNHs6YW_IKB~=J7-`%x5oR^r|9K;@tGW?EfK|o^k!g{rA>jGoCOo(a3 zlb9X0qSr1xz+lS9AN6@vPxVxxF|+A92PuP1^|EM4&+5wwMkb~>o7L{Tp6TJNBdB;f;?-k0UD}p3lc8R5 zcjtb69O1PWe3hq;UNQ}&Vpic%z@~I(spQNr3x?t^etT{-I^nO^)}(jz&%vPxr)i)3 z8=I+_oa7?<3etn*dQqc{9c15p#{N;}GVLCY%%5MWQjd;oI{BBtdnZedgWR_@_U(H{ zhHz67;5K5=1+Rn!(#?%P%zuH2GoaQ8b4yf{LZSMCUR8Ngu zY$S-!5qe7C!$Uoxtc(?*qQ22k9V)&4V2h1n7qkZmNrvCu_;$V;Qjy3D7O{<5mLip+ z0~D}H?Kb8uuXMP;h1&Tp{1ZV;K{&q*&$k%kLXUTLu`gHdU`vLMS9=PkbKYT%l0)^t zL;<(zz-=+kWi2-V^^x2plci92&#)X(O3p)uDghE8%=EIL?@RS>bM8RBuO-v`ju>pW zy81?O_&|wK&sqeTzrnU66-zR=Q;74=e8x<+o*^;!o?a%NTCa$uLTo$H4p3HEnu z;~8&~x3P4EWaFP*j?ls&g7LMTzY4RA?lqJ)0V1pmAeEM@YfUu9EDS0`Kx$MJq&q+a zE%bqTdRr+CO9)N_HtB>N%F5uP>u%AGpCO_7oo)q?lRF`MJSN*wzTOmi%$tq)N#FXn zX+;3jLebWszp(Nviqk2&wJAtci%@fXq~TnLgl=(krz+{7^xX05aGdq-?;e0ITbLW| zhk*V@TbtCXKF0g%H@{L~_JM(W(hCSB69{w^t<4v+W|JKG3+>KVD9&umA1b97IoU;1 zQd~9?cNY8{U-@ig1dyzMduoKJ>-cNF&Q6)VVXu533$SLs%cye)7|^L~w@1H8f=NZU-0+F_gHOH+N?&82oNS!MZy4vxPi3PR>%Nw;yUAC|FbzGUJ zV#{W!>P`mnyf0(sagK2LPeUb<5H&03w~a_W&K@Q3-(z8Ki~`v z+kD~Qn?MGPvjHF62PC)(yY^n4+RSo_`auC50EIK6If|`<2SQAYG-+XFNu53s2!8#!vs#89=8oczn2@L>bmfu<*Zq&eD#8aUSb0a@%Bb=;p;v0D+G(_}b&=J4qA6WwVAWIm`LlcR*}4 zwdtg6+MOzi2Yhfge=q7Ws=i&$+te(8T1^%>9WML;;){&tDT*+Qh>lD%ixgm@i!VIO z57~eQG>KApbGH4lsUCnaYrC~N)AdcH#zynwMOqCPqkMuN!=jW9BaZn10V<4R9BzNH z$<1kZqQ*++FYy8s-0ZG22D=FF4sO-FQaubEIE&?Bvx-$8WyWJIup>g>@W%{S%!P1& zi7bzPgOr$xnNC1yhaow(C6^>>w9J$bCf`sPeJ3uv`Ubq@0Y`z2uKa;D@SQzkS?~nZ zM-#9a1i!aP;kv!qEzwA0{Lu0UB(2ns6H`kF?5KURF|W?X4cT-k5dt5CCmAhRYgytiBeadR4 zLZkLV#F>=expdtjJW_M^^J~)n`9SpALzr|xtx%)*z_t#SR}GGJo{&9q7rfc}27rgR zW!i>@h8!&$n+zD9`|Qf`)#`Nnk&AheiR~F(SWH<&%RW79dZqs^c+%4CfQXR6=(IY$WaeG^XvJ z`1{^wykL$_h1VEt^7a*VXmW?~L*SRKTJ(eK$MqAB12F{}&y*04A)U z8D3p5o3FL`0jxYK^rJ1jBY*r-lI@?0@>Se3dh{mW8XGmU<&q&G18N##?462iBWrvR z+@*lg_qBB0p`wE)9WJdS3&XXSJ#}pd_5h*KsJPy*l=(XIHmP!*#mC=#hMuj%zt`E$ zLGwaMlKO)Mc*FUojI|6yHz?E8L|K6`B&F2G_Nnd& zGOMT4b;~tBe!5OL5PLd3(=6j_!-Qik-M#X_t!`qaw3>$W}r2m#01Co!ul(^Ay4BcTI;LBgjOfN*am8L0xm!i^l-P z`$V#g$@W5K|KsvI6f2M5imf?l{R*QWdete?$|8mxD+}0%AhTEl`=%8TUQL=Xf*#5T zm@4>F_wnBS`rySCOJ6&XTAzoj7WV~duSB-DQ{1M`O+`~%?OEK=?dwd4fh1ONe8~ z1Q`irSffOEj?KIr6HE2f(!EnWlHMQ)Q6w z5gjX)>8g%m`@cXOT)dgAS<`vEiQlfjbC;jHEHDYP)=gDw6qdjvS}wyGG6|UcefNPru(YD#lARJMD3O(Q-3UQV4_4 z`SkLK-Ru2&=VL46A#L+2P@IdGvM8iTs#l9$|KzScvT)9DMNw2Y+=!M1&T!Cw$T*cO z7A>HgewKkK_ytm^Dt_zR?w3%;=uM$J)!GjL4rq>IN0$EO%fe?adBrP5+8M9dTVdH^ z=;T#U*kPIRI`>cQ2Af|+**T$Oc*hH^#F^2^b{x)D6~wvBR{697SS(8}nUhm3e-2zs zkn~l3XLv$OV>!_U00ip#)Ocy9Z+vwFr)vQ{qsTNkmKr@J!V-{r>Ht*`tf$%-%|ZqC zL*)8pA7fD#-t^vyuRr9rLXyl?MbddT+RRWvMOH0<%Nc5+`gI;*yJOzN@*w6+is+B1r#B_XI1<@;wx&A|E9~kmG zO9`r%zf%C&Es$i&xI{OcrWA-?Ki&R^bafAZftIrKM`%K~nlV>tuK8l|2%=p93H!i_ zaa$&Z0c?d3?+XTa|7bm1E*SpL_2T@x5A*rTGFg_q2Y zN4{^^S3HUJTA{@8ddUx6>BPGIIlnDMoM?*Cn=p`QWGfXh>(8d0UWJBiMDep;ca=wrP0Tcc+ZYf;pZ@UVwXmuVl0t#hC8*k&bp5LQQk{2@bEw;0+fXf3*A zsoCo7vq%^un6zT2v-6cdzI);9cz3mV-p(z~x}tmUo$Ya`!tikw;~RH@BYTKSwL(JXF2uL4!izu}hMrTlK+F1gr!4WNbMU!+ujsEpX z(yXU-e`6?_kz#m2d(eTkgM*kgd3mVVX7QbBn)a*;kaZTiTShPHB5hJS$o}H6{p0(j zcT6%qr}>+vd3)3V2v?Ov>%hr&U@bp4*UQW1#K_C3#AkzXt(t~-H-3v{Z$Bkp4Km8P zZ#ariL}Q1mQMFxPU-Kr8y#yqcey}rK0^7@jT;bN?2ZV^q=xD5oAj07Eqc_O_?1X(v z5~GF=^Eq`{i%Mi(2++X56ta7=ju%h)2E;WUD7+CC0Vb2L9Q@Vb=V<=3$qPZR+x;5l z{(a7GfQw4GyW14H3~;jaFgF@XGGxR`=yNdbi>6VL{aEr;bE+q+c>f6E1tBX+7h;GIxJcOXE+N|a#716y0C1F;%j|iKQl&28_;bLL zC|D@0>x*9sa5JhpK%XtTEz7VKu1y4j)l@!3fp2e|s2zreK(YfT{vD&+%E_g?*vUX5 ztBZxYl%wi1^bJ%0UhB8IPhi1oy%C+?-J}Dac|k&wV`N1{L^!u=DXm-;>M{w`5COrO z43qo(ry?V>=+k#qw6vXbuT#3ih`1)__v%NEAb|_GNyY9bk)(x)5Ie7aP` zLB$u+xY)hZeVF_fWK+cvL)OKqsYB|#?Qtz^A~?19t(a@}S{FIImG4i_f;q8J$Prr4vb|apC!bC0Tf|JA&Ko1w=Ec0Y~+X9yf(v1qQh&WNm%jutaz;@h?`= zS_6K9M*JMe1{L0rBWHs|jU}Ev<)ZD3l#o>@^7#n}H0od9V3hlZfEy)ryFTHXig)Wz z0oALD74jXfU}ymxuX7*_nkL^}G&u_(UwK{1I3#IC$O~S-E)~}GK-x^^JE)~nSZ3SN zKL%=4;a~c91H@sidd^aj=&0m#nQAqldCFq6B)_l&{64#p6v{cqv?@XTc6!fRJbUKJ zR76L)evc}wT^xUc89uv#(m@&{%P0IAe@JJcADz-@%w&hxXkGaO;58N~GL{9NMjs5F0CBp+I=gGDKSpulTX6 zsSzlf8v^RWRLFk%8+~{`>VQpAXe?+k`>N_ieL}1~0KWOKGCPrq`O$erW&~U^npBH5 z^Hj)Fyb>B^gd6TzVi$HzE)RaC+-MhI)>thv9ZeS{Vi1B*9)avb!N!KLS0G)%hG?Os z&+XQ?h<>2fb^blEY8+e(y0w0Ps4#U!2T=CqE|)RenR%saA)1|NH&tH5^PXggb@#ST zQuCoci;}hCKzFYFrAaIq$HHLUq$*C**Scg*c644@>PR`*vy}l_kBuT}(C43FK>Y)Y zR#kpKs{PCFwZI?qeg4!06b0AMY$eUcx-xToA&uD=$E?%GBedFm}#_2;Kb5~%=$cweLvs(uS5hv(zqxMx6 zntiaCt&9R1Z-bge8#W>Sbdo_%r7P5i6-=bjruxkGeYpnu|LBsC7X-1CZ5$mRKK&7 z{v=$b8@!CB5HGH>v)K4Q3#TtxpMi|rHHiqb3$i1g zZH;vhk*oFdA_)&NFfvxXuH$v;wf;6004bDXaXOeseL?Kv3`ltfKpt?MffG$1m_9jIKUKWsb=Zv@h594*6F?42EoZ+XOrxmQtr zHU*wc5XoQ=m66??9Rub!c5>GJMxx_&@6aP)1(m5qG|hm-BqIFryxj=NiuopjKN$%i zHK7u54w^m!8CMQdQoXfNtD{@s4`wRDWk|s=H&7M8<#a>6;uMXPKjE%_>=IfjK600riG&sId6yzrkTPsRrkxttI8KF_>7*$+U8> z1EgK!dQsmEhWm??FgNV6)d59MjBS^BIce{o#w%6~9vK99y8=jkc7qi)!tf_Ndlfn1 zY}9PE1wB+ZKlfFA@r>f2S`i6u#Svp_1-Tdt0!aK#5@>J zr7QDirK(-Wy~i2!{2J(F-8b-D-fhn|irR|mVW;z0&UKZwg$e-wRgieZt1ly;`#iT! zpP)IPFB$R!8ApeRY#<5faz3HTC|{_=A6l6N|9QA|4s}W+42;g^%x+W>PI#U<1XMtr z85i%X6EKuNB+dnMI3y*Uwka$wGJUDz}UptLDJ49q}1IP^ex3v zyBi4?Us?)q->;hbKw6koVTAyckVDI**I^!lgznnn%BMEo-Dr3>*90%Nosf&ePlxPDsscU`mcAw{&aCtKBeqA!O z(6%Om=uHmE!|Mw4dLJDzL+_en=-+8U3mEcy{~xB#GOEh%Y2y+iNP~ccv>@G`(k;>@ zl85e)5CkMdK}zb-NJw|LbR4?7k#3OEcOQKIYrS7w_yz9R_sr~>>-uej3XCK2metQp z%xtFgC<-84>2uvwinZHZ0Uc^INbmzBt&>j@V}c~fEmGX#c+fFEKA6qR%%tAERGM|O z&G#7~lY9{h(pm1;PXj#tp*I^KF6rRBCHu&&@|+nb)R9%`-*~&?0Yy|~=ogcdE@shdKB zYNSV*Q*LwV_Nn2BZcr;ssAKlyBl5-qo}JH+&PTq>Hc(@o6wZ@H%0n-4krC{vR9P?LK4zA^QsM({yQ@bUtR!qAKB2RP8OR!l;zUYTnk_+JOR z5RHav*X>bhN<1*?jYl(zVuxkzqZR17&;EfvFtL-g98pl|7N5wM&39k1L`K-}7W?Bg zDQy@?<(K<|)YQy0B?PobI`k@8G^}Gypjcz!o?~gjl)iDiZ@By{fm<8c9jr#%7jH-QL&yUN-gqUy?hfS@AueVh- zo_D3qoRnJIo-ePLz5j3Ygdl{r+|>kPsWmlo-{(h29t5UTlpV{ioW`xcfc;Lrp9nhz z2-Pc|3hJ@}y^cHna4J+EY{K6~S+OZ1b2mY&2yJ0_`6v}Z@tZ)VY=LHpdGKpF{v!%z zxr7yeg86q{AJ9XHgF8A_L~rg#*W( zO7vUM?cMRgr}{Nn^7c>$xtKL(ix4U7;8qHcKnO#_!>}t%<0;=@mCSE$@@j!;$RFMU zSOPuMX~4Ujsw1VJ!j?W)#C?JnSEES;tVKtIcYRe8UVLdVH0C-OrlH#p?H{F0QuSZ? zr27qHie?$`FgHkY=;$iq130ICqsb_ry0hecgVb@L1<`cHFz@xq>4Z}s0mbvZ8AJye ze7k!(Pmh4GOH2O+HnH)}63A%GI&BNv)9#;!3Z2-3LSQN>g1TQuONF9<2+Z;^OeZAE zyg$xRw&Uc3bUN_kOkNov$*BfHJc1>~cgJ!gP`biwskt9cYU)%#lx5sGMV?OSFn4I9}+dmF2t* zU4MuUEa7GMH$nfsytushm-b zcD336mqmXXy97Fyo-8qZ$EmyIdoFO}ARxezH?T_;HCje3Lk3ge3=>;QjkFwhd`Fa8 z>1dRmQJAGb4Oynb>#dT4>|6C)5ez>RTI&M#lyZ6TQyHqHbCX3{RU!l>1o-6bTYP-d zZo%LckvlF8u^~({7{iIS_?d5a1q2oie5T`?`(ZUJFHtk=^hNAAizzXYKl?#`VZc<; z{jF)^HMCBXYh1QeY*0R@5y{Igux~7eQ*+fnEw%&O_mt;Zkc$2{o*S{nAPy?&fgTWC zRd~Cj-J)P$e(tmKGpKs@^fSjV>Y4@jq_C$PKbfSf$*`7v?tY@P{fND{#1PVG^tXlt zix3DRsX5wjm8lW*6NPFjRMsn)j9BjyM99Fr#|xE-_&D4KB-~_hsth+>s?g3=HSabG zMjI)-G&{4Xukt_jwSAt}W_#~GwCl&9NKJ3cVh~>>szcl#HB{rfA(C1oVV2-9A4c;; zYE@0omXPCi$C!M~uabO^ies$ zDGr}`S!3+8has%^-d)ca=gafrOrobw*uMhZvS?sZEO_E_zB9q-zF_+ViYlDgM9WF< zX<{VBRfuztR&`(z<90OHkQ)eT9b#aNb=t64s{hpAZ2p@vtr$d1^$EmktbZoiF50+*>=8F1iVOm>h=_6 zxu^#tgPRp574R$~qW7%jLK1brLr0=fZa?rQ1ioYFR4Uf>EgS_~qyuP@?F~jm(!IL> z?3ZzpG9Sr_P1-w}UE6qhE>{#0XvISP#b(L&NLaLW5Orz1#8_cCh1g>KBJaMXMMOQQ zPE%k<1@m78cV1ipy=7W#;~4D8RFA{^HPUVJxY0lS^oMgbY}r0{<@k*OP4%^$gcpq~ z!KCBRRbV3w(19uC;UA?A+p4@+!J>IiZbjpXJ47IM9+y{TG0>r{#Jc)X+9z2h%^|eE z&2rjo_e}=zKq;z`(_;K_Vp%?$ih{jLt)Jjsx_kr+-z91sFmSd;AYWhXGu`jgugDjl ze!8m#5)I9;qfhOO3nYsawK7$fBR@6K`SX5e9gE|D$_b>e64ophZW~M-NCN>7=@&9e z&Ae$bZVyH?krzs2Kf;XA+9%d>pF~S`e3c#*us#vy@9pu>TOh?_H8darrUw^W>*e@Z zO~okK{m|8p;?0$#EyV91E@FA}T9@jnvXd||+on04s0;NRngS)G4n*O8^#~O(A zG^()d*$=iv4^f)!89(L>4-6CATW=5aXNowMS`4KQpl?f{!^MD|ay&(-4rPy2D z(A{9y@JiJP(Ua#lGO2ijnf5hhq08TE%@;qvqurPbMVliSt%cbf6-3+^-^x}KD%HMF+)MzG<| zxH9`VW9AFm4;WY|j>E5ws~MkB#Q` zl|#w%*PdDmX1 zWF~pfetdqf-DW{NqJ4QQ_X%}&%Lllw|6K1fYPR*w123^^9+C-{sdd(raIuE?*bfI( zamz_1J?sUjdCqjAPLhfd&j1FXz4=64=9!VFt7;V zY>=v}<0-f*Z&R0Hh0iV*tb#$Rdfm&3iiGVRFy<3oR*~g4{g~)oj9mP2blTRo_4sS9 zOWV&RZ``lG26hxudum(Cyx&Y^VJxh|;8-9evfqE?d0A<)^L$0pb*Hd4mlXla{ zc`%yUt^x1^g1We%+q&xzoo@gqXkQ7Zgos%ueH9kQ3pXQJDo0htAlXHU3nFv3L(<6- zp0};DAwtPvy1LkMWuC0H%ZSpu*EuOTy|UpX8@djgX6Qy7LJcuXLDKWuR$biH4I*k) zQ!O7p;2Tc;IkJ8lIHt2MIN{}KC+5IZx!H|tEvAsUq7_ZVp+Ft8k9?ugVZI$#+mYY$ z4Qe;kitv%+dqmAZxI!)@HUNi&W6kPe#tb@xzDWqtbZHof0BzKfWbcn|Je}5iqDHF< zbkB4IG_|$+E3L*liW6LpOj5b6qFak)e!AT>o(`((8mWG71UuzCyx|KF#geTRJuJjv zTThEzJa~UqJ1i}Z@OP8Axk^}eDN&Wshd&IsBb3Q;C#7&1;1~r?#n~j0zkCv{-(q8D z46%hnj5f*Dt&tm9xRV5f75ivMHeJ!$&0~Ar5qIBh$$6SjcUW8$50gb~$>pIXjc|%V z8WUQ`7EUDIL%1PoI%Q49R`;F(VVTxLM3-^__B$7#eb_OCE!Wx2@g@p;I&AHtUuQYzDE*Lq`vOS5BvrpyWkuwzxYS53)rn#>Y z&reCPDXJ6G)piRH@BZs-G zV#Hx8XXx$-kptAL=_czT6-s_y3blw$MNZR;pEO7Wck=vH#BZfw+kR&LVcA< z$YDlRAO8BbP**e=Hb+7vJI(QS*hf38c~fhuX&x896khhN?hS;Ar$ZugYPWGbR|1bM zi{r@F&ap~fC{dZcheYtc_;Rn|MxY$d*JL6VaxbL$$=C>`!n258?rj8Oz}RWGT0;t- zvl0I@$RxRCPZrFx&@}sr&FZiTTT_RbdN$eW zJ-+4vh?`eQPVI50eJp7VR*)uSM?+`XE!(rKIw@vMz4KVL|B-%!e$)k2!tbt>Vca7u z4Yjo&_4s*J3DS{uDvwPZfy{S?TgO{?uZ^$8<(mL;g2w$ zs(Qzi{5crUi&5}-!JYecf=|Ll<#l49P(*B_!IB2Uxt7MP%lX%Yy<+w*{6zxj%IaeA z4+RC#vLVAyBc|eNbZy^1lgt^rVsLu{)udcDTT1UK9QNbh7C=m3_3mTH{V~)Un$)%q zl3TyfVdEIB%-i?JK?5m5+MP+n4}U70w1;3jsLgobzjjF2q%M*mE~a!MUg6Mt(r5If-#0 zuhKB~oWzgHX$;5PH7sW%>;iDOAfT+tiT8G{K;1xiHaN|alKD<_j7Kr z@!}SLklLt+ozQDbrL)}Sxig+O`b}EJk<4V$3YDVPFwJF90IV35YV4)ESK^=w^o?&k zJbz0u`b6k<^erf_c9Vjq>al+GUpItIG>uNHt zJ&uKzP+@))tlN-z?GQ!#Kna(elrlyr&F*C|?WSG0?un$+_DJK;z>hs;jYaI%1;^~k z3=ZV45bfzA!ynSF_FvSYb(?2 zK_Dkp*CG&S?DOsudnYffBlGE{Q(sZisfykPQJVMm4YQo;XEsmoZF9}K-fyT9abTDQ=YbF^?D^Y3wIEC zYUV)n#8SrF+v-`4?Zr?!DvV@B!$U;5Y3o|WvP+(8+&8O(rfA@&-;*Tu!^a_qbzbqu z5MINT&9Xm7Y{F+mdM)~=3I$lT;*w^Ya=9TSk@e(ee*p4g(>Sk9oMhClrN1r4f8|MQ*%bvV76(Lh#t$43s)<`_2IQ33(y|HmL^Y zSp>$$Jlk7VQ0>ZpTn4BU zi=dg|qrKKEl!Bo4FG-=u0pdVliK92OC}{l{HhVW>i07uy#KKZ^gKjS(l@652A)+@M zAA>0miFkQ-ai2s$!XxuYY@)|)NyU6FvhmOl8^D$m53`2XgiGXjbiY*pg3fIJAP_Cd z`0uLdc3gJe4UMf#!L7BGoeB3=;Lk}3KN9++oH(|LwO{g3Muvl2DEP|5v)SHBO;O-c?X!jgW$hnGNkqfNj5`SW9@uN9MLFNJTZHBj-< zkb}fQ9M&kvXHdu|Ozzr!?zr6Q@72g~Yh#y8MivSi}4o$ldl z6R4IkoP5pJ{(;dpygo#+Tiy-JSLw{U*gtzEBD9uy1}|P`zF`1IQ;_dlWHE%Q^;4eA zG(dERk%z}9x3gcd0L_Xz+L6Q}m{$*$AhYWT!UyNl2yNJl13(Q|)tF>+dJAO1<}fG^ zBRbdWip9}#8+bugryEPO%i4%wN~}>tV#-~x>Nd}ha^=21n;lmIW>6lsYL@nm-oM*i znvV6HBW95+OZciz`!|=yeaq#S0=Wk5FY4=Pv|O^z$QXJ~-FWPRYHK)UwT!7+Yu|y6 zQ^M~7SQx#Fu6*|PiomA7fVDE;rYnhl!{hLKuZ#m)ty{Y3aQe&9hIbC<{^}j+`lUwx z@4=)sq>7_4aS0$~Mow}*=E8m-uT3;nV;5+UeBfVTOCDsyd@?^FgE;#$b@FgR2AMk+ z#sB2Q`7}9)Z}-WTF&jN|ash|=V!zT3qY&|gbm!l>09tMvOR+{a#XG)LmxsKv63=Ax z%b=&uO}iOMUM`U4Eie2e&qokbhQ(Gh!@gh^acT$cr#vOr_@7>wh(y{H3eGw*03#l} z`{=iT9N_yggyF&>*(sPG_wnP*6TrU8-VFGFns*Eg?D?O_j)dV7Z8A_nxxXWwr9sff zAND<3s;Zyh%XoT$_J^irS+d8x)r&2*}THJ#3?00_xx!n2I zUhS)E!#V(FO8iR#TzK9xmzf@zqUAMgs{P@bSwzqmkDI@JAGRzi4mLVwcLu3CF$o3|+3-?6h`wTdYiRls-3US3$Z5JN+E5}2#r z0e1abYED0}jv&=H8NVZ)(tKLmMS~z|Jd6dBh@w=jE@SbSp&`hhU`$$t`~!13-xIOP zg>{^*3qfpn3if z^dq8H+C%2F_&gG=f@%ShpuuhQs3JbL%4_>B>tdaJTTS%n>Fs3Z zK~cnE5F{O&ZtA*S_PN=h=f=g4AQyQ98<6z+6r>;g)Fn!ZFA-sCMtzqz-7ro69r|M?dk3nx2>9?RnV$VWhe9DB+PF~?IEjn>UPjWbwoM!WTV&94FHzI= zaFGzk?o;^1i1Up5b5IZa5zacd^SYdV!BU-z#Z0O3$0FXCu3sa`v?~$sVE#z_Ta_Tb zjioo<&Tr9r)L@wj_ELWGbn>J6RFs+`cq8g6gJ)BFW)LbfD{tSic2M8@n4!^OCO%SG z#!{st^YLT~2Qd$cr`79h?jf$?T>+|op{f4kLV`xgS4tte0RyK2ACY}knz&KmW^!gR-hnHi zKt9ar+de16=QLKXb9#W46rzRAhWyDmkQ~PJoR8jK#1HgT_{%NTyh;}u_&Nw`(3uai zyQA+ThzoKsAdvyuhvRy36X@8%{n!eII@3o0PLau1;qoR#pe_=W%|yJP6~9#a-g#9; zzXYb1%;CLrLbEF#;Gvt$Qk>&KLzZ#lxlUZKq@bF}(26F_(RP8U_zj^US%&JOvXk&c zK}9}4`to2iWL3@jCnOyYM~RBtTbDm5mk1vX5Gmq6NX|gIZ{-0$3E3a`O!+wz^0#%p zfpb&;e0Wu=fp+;JVs>`6btkZO*AO0S^!o)rqw#Y&1~S`;lQFU*RVG)K_9svqgq1W} z)sKKKLc;$0b*y;0Mxmnr3&PKhHp^16gs$Oqe`0QHIbMHH`ip#SX1Be!rMOK^i zKnS;{;nXQDxi!N|>qO(q*Xz!~z&+lKMEp>XcA@&)IV>47`&7~xN7^Yb$Bn-HZJwt= z$!8u;4kCzTN5iIy{eP&2f#ic&^nI+yQ|w z4UpaZbT&Xx(bx>$DJwPU{Or}d0%5}i5yKm}-=CAY#l;T!x|yuVz|G>0-^7>4weah- zB~rQ-nMc)5s14&Z_jl<(+1*}U)OO%6?qlUVR(l$%$X9`rjyBB9fscrcU3NCCT#`2Y zgWNw*e~Q0;(Ojw{}oVj*8EVn@K!d9)3M?F@Eo2JGq(kTrO3ew0o_1#!;jE3w@QJ zOm029!7tws|4O^Mh?!*UiU8C@u_|<~G6oWHa;iEy9#U`WGMo_Mn-AQ}d((dnPOIcO zaNBn%P6>Y_UK{{|9Q(E&=ScBM_!P}%vaoEDwb$#pu3s1`_&@ZH?YqM1f9TyIT-2;l z;Jb0$_Q=Dk;x#60+?v36Juz76^v=M24;$!h7Y$KM3$xUq8=bWDPvUBEVRxlCl+tg7 zyanw%gC5*8!C|Vd=>EWq)fY;i`YTii_S@&(_Gl*_bm3>j1|k)8hcNQ1}2{ z73k!yk%2{59rWn2>b#A4E+qLYy)P6xcQFV`H;eF^vX?Xs~S_CmQdh&cBlf zc%eyFgIZaq(0fY4G?+(Y4|86=GLvYJRy=H9<%M1f#%*!A_9O;A|*Q2y8F zfmIT^K--)hgHROhCyPdz9F`N)@iPcrL?O5n#UIczhWQ`P?Ad7`v4}uzT9;+vZw3zE zMb@%JshVfqQqcTShfDjBiC4SJ*=$3FgCqRh-hgu_gMlpU=@^WfgMp=(lg~(o`!bZz z<*}yrjPxm;R(31*KWqdgnB_*VeH9vs_aKiJH*vm>v<7+CgfRbWEGCl>({SKeS3K);;^fD{j-Sgmwv(nsr=I+v85Ah z_uV?O)G3@qA@{vs?9Ut^TiMbKP4d$|*`h0f_~Vby!Ah1he@+O4oRAt^}nPzABIYR`);w)>;jU+7#=VBw9UORMK1QT(sa%}~z;)Sm3p;NE; zgKZ4_>-R$rkXi;^Kq93NGN=rEIg>^D{kj$@<}A~@T_LzwWsnOFAXwQIin`&y`5i+3$e4z#YI}vjC=8T zd}63y55^mwJN8Lv8x6ym1&v$#$YM0cjp1E<8^52S-qKM%0G!pI5Hv|_tw);o_X^Cjjc*l zgF;9LuVF0%Yv>P9K8HPb&hj)=667hU7OpML=Ot7-?srvh8E+4#7mMp{LS~m9FH--z zpcwv~#-9xhU|wW^?|p}n?6-)da1y(5KtW%uy>YTA+c7!i0^!M@Kb9`ahiZ>ui+eOs z2`&@_9@CHBG5m`Ecn*(!=TxBx1eOWu`^D#_ozIZU?oz5o7|RZiv69 zp0Cs6Ib!>(zY@_bVh5n$Z$Oa+XEEHM0Y{)R&$@h?s83dH?ew33|8QsGMj$iuDmx@U z3e!HVQ+s9)27DzbQF1NVY;z`Mu5P=188-x# zf4|J_g{d#4e+laFmxwq1$ec6}Ue^HIXK^C&aHcf6e=ZLpl9@uvgOcvNij%Qa$q+2f zXD__&&Zq7I`!C%RdF`MbYhEfZbCaDv9}<@b{FBTN0yxMm!J%VCG2RZh%*iQYK*y*4 zeqbNa`8jtk{eH826Y|iGhTrtHI4bN(9;Z;~Q5!FpuP_uadO{uyDhrEccU6O-Mx1s9 zDde}29xow7;1n7DJ-%W2O+K+G(ob_uP0h83E9AQLem08$8m8IL0lsj}8}5HrXdGe0 zMJ-}G`x3{H*II>}^A9|D4oe23FmIfZouExn_Ua{SKE{+U1xg|kla?QhjWe_h+MWNy zR`}T=2Lt*eFd@ONmzg^315f;x2LO^Uk_18d*kLGD1Yj^5#~=S}DpxQX$&@Y!@RTY} z(Bqc}kb?2O|2`IRb~LE~-Tiu-XRNF-mUAn3i?{h2vLc18lW&^ZtL+z(A~74JSId4G z&o!ONGN;mHcTT89lX8*6jA?l3vw*N(QPa^}cN_Ph4}xZpF^!EhwH~gO;FI}UDrA2c z0M71-i`nsp(U#oaQ`h*fgkPgzlDO*3{0^x>gKwss!5i{!z$1<`^gib9u=)e+Jh_CN z#(;~(X+8b}gW<^04pBWv=`~EkMO?CK`M<|@kATLuNhJ$)6?m0j(_|&=;GUS&(B6DD zL?IIy)MG%*2cx(=7#ENlJ1{h$GR7CB36p-HYzyi7FwmIfZ0)s)VMXNv(07SkSwTkl ze(cz2Ozs0v*u%MFLBO ze%ZVxXZlDO8kw+%Do`QDl%)h?s9M^8!fN?9KCom&7&I-EW*sj~3Y?Ajc5CoA^JQ%q z!G?@!_0ECvklnW?cD(rF=doG?D#EHnzqxHuntof~$zA2HA-}j5{F+Q0?Z<*liGoGU zNy`Mj2Sy|(NR^0~9fC9s?Xm2!(n7_f;PO?QPtC91ajZ} zEq(j{2;crW_(vtsSt&Z1l5dXN{Grl%a;dLOc_<21dRCP=LbZ}2@yV4@lSZ0L^=1h) z^^Lhof5^Xl=`U;3Zt}kchvkpXS}R`4pFV~pQwNC~0mJD)8~R_BOhwme4}MxyT8>B* zWdb|KV4v-ys>fG7jsR{1x60@9jFR=Jvhauh`$e^>pd1#2zA%`7BT@7!${@{)$6K+`^1=I~G zgH-cVRETiG??QuevSfDPE`kIT$A7RQKNLXJJ6DA5?iT$F!^DIV;K}*n(T!-0lT&?b}VIM><5oM8{WRXIAKt8G67eDi|y;? z@^Vf%B~U+q$T`x_0u9KQCBF(C@K>F5n{dE6qaa#1ULzZNZV+fXK)#`VspS0M!y<$~ ztjJCzyV@_u)>yG}{Ohc*dCC7e6SsJMUR>Th`Di?2DPcj&Svq2bg7qFvY>)ThYb$d@ zJkHdaoTB9sc)0pU6>y|Q2yA)TXhtug^t>rCiO0s>>?MHi$x+%N#v6KB&30$Gv;xM0 z*+yUNHrY>~Sk%3_npX=+@Zp~`uvIZm_(A@oOSSg62C9nrt5$HLy%W?wIlcX8bv{_T zH|-DzS)19Lc)|z#gHGrj_PHzyRZ}c$Rd~lc`yqK63}4J3kI!?|~TJ zx#?rN8}sBnVw;R^nc|@)0vUON#ItTW;n6+{D(->s^>RC>Je36LQ=DJZ-_fu(7Ze$l zA7Ey&H6`MHjQ(FW1gDql+-`&UZiR%h73Paoy|74P(00#jz?lctVxx+}xkWcszI0Ek#)7()Sj4H1d1=lKAc41nm zt1(A`8O$cCa6l7O^$dvf;PvYH@6nrTz|kz2u&SKbGZB|0wxAgb?rT2`koEIn_ploz z5t1}&^+SNSonF4c3?B!aNrBzM3T`EUfh#krWA&AJBf4&n0hxM3$`Mt?sSa!V{9yxMO4hdt z!^E#EJW{pQ$C*v0XP6PEImH-5lOuTmX-cAEY#-UbB=4?&yPQ+(FP;&_nZsN;Wahc5 zfdMnnV5y<;Jv=6<=E?nS5l`+y@4tuJsz*!o#x=?s0YLWGn{N(GQ86|9+(<)uS^)f^ zzNONNDK#F4_v8OwL?tL(RQw%lvvNT*!MM}wFmxILh-^T%lYbr+Y@jciX>pvpkkedOMR4*>RuW8vs1%`heE=q$cOd<>*=5E&9#`N$ znI^vkSVZ{=Um6raUyz|^NVGhsgAJ5QL8QvlVLP?B5cQ(UhKnzWrNk^JCZid;Rk}#* zvjCkel@yBRiz4>fWgrRdpnu@2u-Av;dP)h9S>B(Ek zs{F6|j}&)AHF{kJP)Rd*1;nW%@Gw9w;)VQ((nbMMmpU>ji3x60A9n$KkeYeloBeVy zxj%0VfVKgs=nF6pP%H5T9O88_`Oq8+A^zVljRq-?HuT9N&GQB6*%a2O(#yb2%{lz? z+&+y_xO|HByNy%OlR$h(pF;;8^o~4@7>P{9`{|esdr-{FR(GfRSNscGNR!EhtY|vO zDnk3*R#U|(JT_ewTj&oh`~(rB6aQUomXcq=kL<9W{%17VYuV2I zN@yYOiUV93U-8Q=6_re)Z5UrCLc$j+yqj?o`W3?T>|Or^UV)j!`_ifwpWj9{V(NNI z5f6N)_CmHf))r|aSrL?4fEDF*1FR=2=SB#sDqNBWfaPopdv#){l>fJd9>xJV2y-NF ztsxn*Ks)O6Es$6F+Z_SjqSLdRT08Y|u=%P%9~?jxU4fZRa(*Mc;@BQ9RKOE3-t8jE z;DVz@&d^lPCM*WXNa$OAr}@9TUbebgtK_M~L%D9gw^R%Xwa|U!0Y%e z$b(FOt}mM}MLxrbN5K-PDeC;2e1zAXE`ox}&ffOFq^5$m980e}y9s5dmsJn z|9CMC5i_4>t`LD-i9qWJKz3-Whk{X*mNYr+B}2-&A^>-fzzy|Bq-Y`3|#^z=NL7he|%@*jK9n>C3H zkubJFpkWs8_}^`SzX}M*{sdUXzl${Yi?CO}xA#xyaRa;x97QnR?#8c4L4OLLzu&GB zwczARZGt&vKhKoGni)YN(SKosjC#3J&Fh6J+Xug2iKc`PZ~yKuc!wF7FSH&n4G2^; zRK&Y`&m6ed%&DP%(|T!AS^4;EL#^(U9~vIoYw91zYTPn-)GuTZUYZ=mJ(a$R_#JFy zcyiK=r-aMS^KxY(f$~Vrr|v?6ZO+|$X`wFJGi{0Cl|ag%tHqY{W^&@8e2&Ft@|N(H zr|8hk{-8tZRf?^%JF`7Tt!ImTQbzdXEk1`q<;0t>^xu8dGiStHd8I*k!SI%d!4-di zfSk!H?#Q-7BXxr#-uf6$cg*B_gkf`!C;`a>oyCYmtA)ff75Gr}fcGU;6~-M>`c<0K^t{mFgvi6wZe`(*1A@YyF{WPZDX~{?bVmxO zXKb}bw_Rgth)UXj-hMVo*!n#6Vt5vUinC`E>{U6G*Yf?h2*Ex_rrSBevR6roMZx4n zY{`4+;E)i>-9-Rvrm0!*R2;~LIL0pyz?h@?qN=19@TkdmJiq&v^DVs}8%nvGYWc%6p5yNB z4$pJ)ePOB-0>t+(i~#`=maPFPWfAbm@KE`{t#0{5c&4&H#=vk3x!Yw#gSd&|6-t9L z7EXmFC3ma>uI1M)$I+dH$43ZKN{_xm?k}M-yp>+;N?y0hTJy)?=Th|FvYxH;VcMWE(pj9=u&Kgdi5z$i#uTkR?a+^N#j_dsj#f_PY#3>6}6ly<=K0Ew!%rum!&oLtNI$?BuDg{uwuCNPnmo&Zw;cXoGwJR4CH z6)igaZ9PDIjY~Of5EA7GNulfYM^`G|%(67%X6zSxx49vw6~eDj1Wo*EbHc^8-JhUA z>}4Q9)_qLDRS-1#?*i_xqO!Slc{v?UgR+_pulNgiNIl>*73P+^eFt-E>wNPzo<|jn zIPepQqI=1dkBQtZWMyP-u?e}wxc>h|{4RX}s?s(S^F^XqWa6CVlN zjr<@SKJsv2WTSz|RA|d7EM`4e!OrW7AY?!%aTp-Jf4=Z}f^+d~WMB81ewoi4eGI!o|ie z00!D&cF7&=C{K|F;UHcE@BJ!gU{?H+bNOj5^FzGw<-E(uuq1Xb9C?|;_jU<;0g(JT zg@xzOs)rx^TV0<)G$Q(T?Eem;huj5$swWhrCF#dg# zUT8R$#qn8r-P_M%ZyV8R>()4;P*9+`X-;~PeBIKVs|jL^E_4-6w{a3wR3MQk-sCFH zh6U7a7JS%t6+HP6+4buBH{q@}^Y=fpe~(!<3H~kKB8Jw#-9-Y$#+N&QhKYv&9prj^N*>KQ7bmT&9En+i5ORW6G=nqvBN5B>8oEECCN<^<9BEk20>RqN-1u{LpGzN-!hxOhKGj^I!<;E4@Xi6`z+loZj}(R8t7=$JF#H{ zE;yh9X2Qv|k?{70Ay^t8;T@n=hLVd%YJ=Q`H(~g8yB;8AzH_o-b|}JT ztZzQ_8pjmW5&JJn62CH>SqY7|@h$!Z?69wvN1DUV5|a?>?fbF@9p#f=v(R-@!2`>` z@4BiL{)hmzH>TmRSwANyhuRz{kFZ9%0l;LtM$tkj4RBq{f%)feM%^dyO=p#qlUW&akW zx8z|m%-Wqj3uUSd?7QmkZ+1_W=xFfq@iSj;EbHx(Qcy%}ED@5}wg8mBnXBs=GB)r1 zBca5R2FV5UX{^-c4_YEa#)HWZeEyr)LyW1c%hx-p0cMY(yfmqNh};}>Vq&L14+hFg zhVU)zTZ8m66%gM)SDn7k*YGD?`Kk3}qkjXKEX&~Apg((y{BH0A!7?MBw%uYu6ndNF5 z2@S;oOfI5#$Tphm%NqZ>1(uaC>Wg4xnAN|aoFL=pK&*_^aR5bjjVsJCs|6bs`B&O8 zW6*etVZ=bIv+p{Bm*eO>=zayg}tB-hj@%=HTbf z=TP%!m&YBn%KJeBh0SGiz^djzwzvg2Kw{GV-flUA7O-rw9XIN~Sf%h#0>fWxHj9vP zN`(4gIA}ES@s}BV*ibTC!uZ@VESc&}Z)4bnxs-#s&XMq6844Cx&0&IntNH$xsc9Ss z1-9-1I9J0VqE8ZetJEdW{s_TOmq`=SAA^?ux0EdWOR3YHc=PM`|0sQnicnZgVS1K# zojd%(ep-W-Dhd17p5y}lketh+Vvo@~6%?=X913|cF&A+Dvy=ARj#~nk&=u5P|BW8O zJKjCra{|7w0K4Znn}v^NUbcY#4Vd5b}yO>;Bt~ob*nSbtyfu3qo=_dG}Bt!7V#-2%3d| ztnW%!y=g9LKAF`EWB!wSEtsU+qSA$z`k(@(z2a+sVlCY&r&`g13S_e8;`e9+{=+lq z)KZJV4gG9sb{QhH3?2tXiC>y`uQCJ@EwWEI$5W2EK6tEK z6pL~4+*k4cUaP8qEAadq3xJ%x0Ys=VOShYR&cB8;9)Hc06Yz(l7nS)IXrcH?5C1(l zEdt76veBM;I_=Z(L9x$kVM*hJ=h(;=$|*_J-qHO*;~6N)U0lqk4dtV0eW7bPx5UEx zsl4Bbx#SZCCj7o6G2U;o;Kk3=$CiuB;QR@#$>KLm@KRv|Xfq?+pv@4BHuwRlpgr&n z9Q47vc9x9)?{BMuq9LRs<(DDtK@Y*It*6e{1hT$!ES`vGoOxUW;SV~$IQT-8Bg=kF zty`!N+=^GAB+iL|tKIP2<0hH5mvOw&LGt*wQG+K9907!;m&+_Q^VDg-JLuP=WXYp2 zNqObyOq+vx)U=j?*fJiTpUZ*XTy6QArpcrGKvMu}11u{kw>V3aWr^OyY0A7?`(CqM zQfptIh@O>3d0T_wx$RDe*O+{|k)1xo@=*I9+Oo2;b6XY=cc~fK*SVVQy zvQUxn%2E0@!@(f#JUTN&y!y+L5fo6LA8_q{=ftZ-`uB`S5nZ+hV~2bWT;RjHelWwM zf~P?+_hiXNuW6fXZWgV(J?V#^-GztQRq<~T4Htv@Lz3LnVq_xvnfK(n^`hxX(!|z! zOkJSuqD46*A!)1AZG;p7>)n=_y&!#%lmZzSskjAq%?;kgo=A#7cHM6s9Ls7@b5_Vw zdTn9fTpFJtTjIjsk%<4|qG8=Z{qF5I61JwZXbQ*0TBq+y%89)+EX}``7~ur64Imag z9y4W^&*^-Wd~jb8XwZsFx|SUNKm@i z#$j~8hMfx4D-rerTYT-*w{H#Mw ztp1#!ZOTU9%zm45=afuceZbt8h!L-kZnLM;RU(tktX0+Bb2fdc-#xtZOfAZlclWoq zaZ^ShyQ#g$-=yK0(~~J=X9V~EsM&ZoifHvep(wfeyjyN=o6>n>CsJSSHphA4 zRvN~VyN`Cj#%kI>Q-4;)+BVhMO~FD1HWv4%FMwl(m+Yah1=0@wQeg<7X2N;@(sI`i>fzsrsr;XYx}<5jj7$DY?>iO^waJOkX?p%VJzQm z=Hk`drq}lC4ZLkds*~T$RRb5TUi0rxw&06>d~d@!tVz_$dcV8GtyzcjDEp>A+mE84 zG7=OqF)=6LWF_T4fDqUZc0KfuuzoG{uT}jD$8p;{0Tz}GB#Pe;+BQ5eDT?mj5vndo zWj)JY^=4i=(UKIn7X6ZR!@{S!J#DT2XxcsckCgm64!cJ_Bn@XnRTBByHXf!B6U$jB zi{bhDZXO&QKzG)ccaYC!!O;~t0|HS($ekA!lG5K}( z59so;(%{HI`7B>?`;kmKbXPS3?S`ZYFHj z55?GA1XJk5T)0p^x^&6-`RUsR=bMvSBf$*5un2Xy!uOr1(neq&lNqs`$(8nQZ<-2z zkmB*N(+mLG{T<%A9`+Xa;}VFxeElsm4!~8*^rO zc)0AFcH8MG*?l-iK+Y!upK;S0m~0N=8wPcuR9>#jiv;4{3C+v;-l61oYMV@(>JWEb zH#hFn7qH%WQwS&aWn&XV3de zZ0frdfyBAk(=mXhKpBN-yys9Y#e8_SWvEVwvu@Mg7NHYgheE?k$^GcRd-(TfEXzTf zgJ8G*RP0p5l+(7}lysU_Li{5Z!`t3(6SwBUN&-6Uw*z^NXu#y>Gr^MDl=q>aeb8U; zFS)8I4YF-%9j==?J!0%*u(#Lv?2M|x);gqn?oRe^3w>V@G`9|XPg1{TwNrSZ&Q{CA3GIi&1LT|G4uR{HEvzy+N3b%h7gFv>ZO7&9 z*!UTr_5$B({$4A+w+;q>3|Tx$!l*pB7}JOB(ItA)CZ+a~uta42VvB^0?7-!fJUs_Z zud{jq=blILqygEpdEpOM=zIHx2?HZb?suKJUhqQ$_{`>nJn_*l8uwSe46W&3axVaV z!#n-KHT=``eg^_-5h7-p(G|oV?0RI>dmYbyD=fPlk=p=7qZ&m3bX6SNFp6R5Bv}`* zV?FzF1lyH3-y-ZdLptRrUnq-~f;5WbuZg?LT`&ZNH_o6etoFL>?ExUcYr_pyq|KMh zi#f}2|XAM(9?k6a%lMNv04(P8A|0V&#D|)wPbT@pBL2YbK_`?l*^;AXn0gDC# zuwf%<$pg@H5dtrW3O%^LH<;&F87hy&yF{yfe@%M#%>vzJtl<9fVJpaEoFR zz}venAgOyLnzcl302m1~QPU}*YRVpW^w^`bI1<8N&?^kl)i+%wwfIjv<3f1s82lSbQ&Jl@LJrR7GuV|f{#5AUk?N#F(v^po8erU4um7(hGbR}aRf zkEuB;yM7Q)nmewqmmYLXA({D6#(Sa64?8=Bn(OF@3MA)s`I;~xkaRe|oVi4}IPLUmt8T#lzkE6n7S?zkBz#9M3BU1+u}mM_T!>eFInh#4 zs0|5AFVG~M@1S!@jc24e+`}vK9x>O>^dtE_9vX3m`czYJl zmDYSorBr*lM^relX(yz>veX$hBhLfP&Uv|4(=VOkxPnm*{1NTp`wV4L%$2lyI^5ju zyEJS?_qA|_QK}?~;C(WyZ{!`mJdl+~DD*~prI*AcWy2qdebW`27qQtnE!Ro#anDjt znugARK_OBzL;&UiE2BO3w3~(EyP9$~fjTqLj@3u(B*8pgDz|P7a*EU5c0gUmI9SZ4NsuA!-%&(qlgTd9O)p9TsBzrFFtK& zs(Gu9Rbf7O^s>KC7Y&{`OY&Yv55fnpFGAAOrwHlOulyD|FTVFl&c@|wc@S>}I>IUl z=M9qBp|1Y5&J)oKou&G0?V)EdjVr&V(zL^W>>&?NS9UuN1eoD&hZW_=!{Tf=mTUNz z9eWwFmcbig+Ek3acSuy5DO)G8AM+-`yUbA6eTljm7vrba9l6_<5k}9pnACISk<0Sj zJz^i`g9a-ro%|K;8LiOXC-D5KAmrmFxnmZ>Py0D;0GO0(a@-ArMwe_YLTHNfbxSva zx#XJlC#zDG?JRKmFnhIC=aox~%j~g}%~NYgomHJxX9n4{`Z}Bsy3cKRYSWCFs824Q z-5h^zvk>m2W`EwVJ_>PG3Y~cA-WdC)g9{_5e$>BfIb?Vxx|B&=Sy_1v9J>+T zNnu^0G_x+1Q&W@-idQRD#hk@bc^b)6&6H+ZR8KVGJu^8TQ|J*5x~xmCQd31|4`WIb z#sca`i=*3yre1j~UxL+iku#Xsu>gh z4XWq&Q6CUfMOBMQ1Lpy~VfwcnqS(z<>bpkUvud-B*&D1jVBJcsSXk8(0SX3z#oF7_ zQOD!9mOffqTFSyjs_QRGbUak5q_WO4lq#D>SpJCD4=J;gDYlr0L-}nCmhF0=Q(+^x zI#sv3>Q`)2Q3*C=9y5>g(;tv@D>f*4J@;E>zQGYm$tC9OFcaoq)Fc4>{oCJJ;%3NF z!&(JWjOydY2yn8lK4e(E?v0x**c{E<@c35dc&Qgf4UU~3^D~@k-dGMTrXbwhvTv!9 zD_m!`SEW9)xH^+=!LZ4D6aZVOXZ!0b*zafxBoLFda2!Tkr`tb83` zq>7H}O7i{a&nEmU(gJB|TZs2bJs! z4hX*74_1|?^I=Y07v2V1JGsq{q*0Czz+Vs4`t62^9Z$0}7@zBMTFC#8*yonry8LVk z1Y%XZhruay-HTuDI^?Iqz$7#J8dX(=%k7#R3;7#LU>Bm`&;FU7ZB z7#LJ}OHolJX;D$2l9RoerHv^Jj8u5i2SkncLwMQRD&zp9U<&F>nlLG3AayXFrzB=l z8~};BKRDM&690okMHo`@D_wZyL;o-|*O?^o>el4Gz~SMRCMLHnd8FKtj`Q}rj^>M1 zzp+Q>v1az060YWSL_IGEYOPpWvOh)OW8cVS^ty#sWH!^6Y<2~ZpT zn5*nz#1`~iRjrR(ODgNifU+g5mS~qvzeBAjO zpeCS=M_3Z|di%)n_|kz|J@mGMit;U?ku8jp4g+!B2P3lv3Jzt{*u|HdI;rek!5;bi z%-LMM1ITv)>zG8snQw+7BM55VjNu~E+ZsGi$T-3>!y5U7S&N_N-jZh|*6cZcyI2|g zwDq>>iiz|lOxA{izR zI7dMwMDVE|>u0LhXFz2Bk5RW|q-Tb&x(Ln<)UJPd`KCVgH~?{2d+9!!n@ol>h70$C zjObWXEkcPlI-0mhVXL0MwyfFwaORF-z7D1hR_GD!aTUQ|zvghPw)vD2pNq1Oh_OZc z^Wbr9R%sdyqsu3kSG7N_iQJ)Acb%X32gcYTg647D>Tvm23CmxMfmPWPaU^|dfhw1D z&$vsIl$?j0KO|H?H9zwTz13%zIERqzy%rFh74vgWijHI zo8o`vK8++dI-`Ossb;`8$LE6iv`RK}aHMv)<_>Sz;J1$V>!tsActAivfqv6h9GJr! z|Ege0eQxb{k9D769iGELB9Sp_B~Kw4aNelVh#5eO9znB?dpJ7nQeDUd>Jse z_975S75tF}^F=RiwFogLesJ_Hg|HL=JG2nECxu5Lj60}f!m9GIT=+{|g%n8*8BbuQ z2oo@C&~_7cD(Er1O_EiWWJWkz+1iD8Sc1obJKbMFxOU>T1y&0{H$Xj~bJwm8OCUr~ ztg1kF*SU`DMJi!`?jLUB zTmoG}zRP>cs#9hp=ni&os@4SS$W;PQD9C8_$%Ux>axGNK>GVEXM8vUW)FjkoO^Gy% z?G=0HS}EIp7W@vdLU+ZgPgn#A$hOP+6crbnRc@E!mC>kce^xJTP&{f|d{OVdzqo(B zuXDxW8gl>gDr=v1#=fjGf6`)>!%ypNg?~e!x+I@`tD;v~_k_dLnk5n^o`tG4hn3Ex zhj7V6#V+x^swY-^pl_US_)3}dWZmqh)j8*mwYoLwWLxP%Ro?_*)vJo6s(Kyklv(%+ z^F=CK>m#6T-Zl1-?P5ti87s?2_@EI?7CiO__A#~=*D&69y!=_jS!`JXyd=CnEsHIc zEz&KuE@iHO18t8cQ0q+RXKKHNIvA_TOsX)RZX%I17f9>fYsVX^ z8ag-qd7JpcNZ#?d#85|F5!1icX1^{jXrUaao~T|q3&5Fv(^EQMI<(ivJ>ppUQ$3cC z>$tWy!#VrHZHMn?{Xl3mGwCYZvm(A1et>NKNIh~LayJg1oJIEO)J(V9X3N4=GSN52 zDce%*j3ruk4EHpzAg|caBFUBkiP#Jq5;s&Yo`*KtZuTzc0Q0gPK4$kSxT+U=eja?D zJDw-!zV9Z@@+~&5!(+WieQpJ{eOkOVJN7zOAKdQJ?#`a99!c-DZ&9AyZ-utz9i6ya zd6?lcUzos#zF2W+Z@OrreNo*N*EQ7@13b#@&Ha-5(7oNQ*?raRLvBazETZrcTjZPQ zhtQSH*B5{`UOoL($@#Xg?CbmMXX|R~7?g*UCRmK|7A6{-i-WDo>dFb9i!CrAk$OZv z%>6WG5~GtEMmBObu7`2kES~rep&zCRyt5T zS#nlFB1cfZlZhzoy;@kh&0FQ@~%&@CRQ1jId%T@U}KPNIPat`-b zJvZ2K1p6m7N(%oy&1S|ub~Lu;5Ts~Dw$VG%kN&yAcp=!7DA|YURr0gywvM{;wPUlv zo#JZrugde*fLCesyy`7gKiVRiWNP;NtvYAwt?OoSE5LQ{oNSGG%G&B4t6ZmNbw4{) z%-3YM=v8-=vE|o*gSI}Z5ecfBe$cH#|Gd&VY4Nir+Ws9fm+r!0XR~4CS#k~INhiLa zpSAViY(L>adW3DSZOBr#jpCy3G2%6bD<7)+r=#1t_cgU;?<%k5vLtnvnF@624<uHuEhh&5br>^Cj~)OV5{2ToitE7kU~txt?ZKjtMJm~q_q5f>|$~K zGLOLCWj%YfIq%rV9D!fPr?DmDj$>KeC(a#Lfpa00Le+j&ExW$e)yox6r{i`)WXBFC z7Hyl3rFS(uTghYLSp!wKx;(C&r~9#U9&=23u`MfL%Cr883`?$7J7jx-)-3mjE#{C; z@21*QrgghL0f^VDo9N@YN2{BI6{ed?V+=U5I-w{(kDd6n$%}#W0kYN<{yc$F53BpS z+{)q3C6+n(#bJfX*57AG0s=bluqoz}*;s!;Wg9!IXK z8lF?1AF3|&{XE{^&#u`X@m;q%pCqmdJ+WL+?ip{>2~j4>jwk` z0ZjdG?V<5SvZ;o&nY=vATWA>x1|Ak0<^{9_3;n{t62id$DZ{|Xz!LqltO85-cON(y zm{3a?z~6nepwHi*IOq=w{rB@l!bccH=s#@eFE|(OAHCtzb6@EhXBQ&9=y=Fc$;6CTMNHyvaOgh)3JVt(2VQ1ocXxLtcXlRwCv#?29v&WM7B*%! zHb!U|I?1C@6kU^v};>T`m=J{Vu|HAYyP&H>$CsBJ_D5Q(vzZUCn;D2xYpMZbn)cn_+Y@F}@eae4p z`8UYlH1MjJI@{a0{^p^You!K)8$a`Zs{Wr)n*RcW(g!8)5758Y{!a*v{|NE#wf_@B z(a93Z2gBc}39|k@!@t-4-JhTN_uBuPEc_*Ce`=wUCis${`JYlN_%d;_F$V?)1S2gb ztm*-K*nXEtw2-{&{xYQKdSlVVy_Rg@FvNt}emk1ur8G`nwIusVd;BxPFYq-+jM5;v zBzF(`L#U$#F}gKJq?z8y$U*dS`P`QjdOL|1omkufmX!KHk@09bNxqKy~iM1 zz9&P@JNMa909Ygt3>>CE3;+o8zlsEjAj{FGd9?ql{WlaQ7RaKQ^8X&gze@~&nNHg? zF!p~;@_P{f2|2R=jKZJVfN&%rhhlJS7Wx0i@t^;;b8+{}=Ir z3I@jiFBpHX!~X|@VTuXm<{j=gE~wpN5{+h^N){@MK|W58<@Lptt&e*M}zuD*B8EXM{aE=t_2@y zW=>?7))<+X<`1emB|7O9@CjR~_uVVh`FO`m$@+0f+n?9?OKzmzx>TPOIuL}rKNpM) z#$$f&q{gI&B<0)Z_y}P}BO2xSkv-9zoi^Wc&3||p2a}AxO{!sJ_}*`a&sQu7dXkuf z7_NWtp+08zxuV`18s}Ac%;<;|k|id6)?OXhxH8cHr8}p$DmnL~+uZNwSN^Z7<=V%~ zkcKy4{i(Z)mG;(#y1G}T5C=~B9cC(CfLlocYgr`mE3&$4?_8}2gx0O| zw$6vH8TbT`Q~tvED7EFjKJlgHWoOvd$Tcp!?v2Aj!Cc>0SA6*Iw`KS3vDJoQ@0Sy1 z4iJ@}AZT8K#_NwHbHD# zUhz>Os@mgG&M@kHZslHYXJMTK6Zt3a=)(1N!*Yku!H&FZ%PEhd5-J411Kwu@*{U53$f!2Q_lmER_ zFsKFaNYi$>(w7t>L-jV4!Q0YusJ((0=?yvg4wXIHBh@`q%NniXO`PG(^qfbofY5tF$w8f-8{wZ_v|{@W9UX!_q&94faQmX6p`mUE zv-GoPC9E<D@Rcm}`WhNv+uOG+dbs6~H(v(WV21UXki>fS`3>Yd4Qlmo)K*e| zV?JgTQK7Z}gK{c0RQJ`I*e+^G!Fm2rcanNU0uM^`zX*&ojdK@7>ScAB-gOUx-DS7$ z@?OhJ4nXQP3LX>R_tKPpxl`THvajfUxVX4Tm`I_?I{M~{o0~hVm->oa0P9mxFXubi z*<2=R?68N1u_ezUa=IKfza$cU*^iC!6XnP*;p1lyrzhV3FhB+zP(%tGjp&g~lKsWZ zsG3I8OS)ba%)Od#O0(0#^U4;(1+U0v#_ckUtEyZh4JsfaqP2QnMb!ULph5xxQDKpr zJ>i(Lqq2*?@>`+&#HJG%lNXL33BPUaMr_11Z;0@nJz6XL>qBZ%9xDHL|h39 z37x8sCP;c;ODR(#>12bTJ5FyTWt?2wtM@40pb{5lOba*T!mGhX-1fKG!A?FD&Q=uM-CnvzqZ^YWTV>Z%T z62Ns4pxf!ocwRRuR`eMFa8dy6m}ET|oor=t?flpufb%Syi4ZeK9`lUC(&7)Z)SOPP~m$4s&A3J+xbAXWQ%7r+@ndaR8`&r=m+h1QbgdtgVN-@8Qa` zB#KKu+0ke#6qHDVf^N&brrmjMwRLr?vzFUO=UmepHYJf@r zxazKQW9b}eW}LWFrta4g%(d%8e{BKA-&?@cUQ1gH?)A+nJ%!UE$LZUno7A;jX1O3x z!$VdtLdE8fBe(JyE5#R>rs!A`y}c_d9TnvalG&l6LT6ZTm`(ovVy3;*D8Q^+u*Ro> zZ+8IV=iuMwBp?my5c1=g6~~Lyu$&&hk23qsy8t7cINB#5jZec;=_#r#)4P+SBh%J= zb|t>>Cv4y3WIS-W55l25P9k}(mn?W2JsV+g)#_$QDU~5bqws@Nbh%JCyQb^{(O+)U zDFu{8e=j(QtLi@Xw%4PrE82xcP2J{ZD_D+?X?n|&dl?RL!&xoU}mOF5BVtn+)RtxJHMyU+8Z^;(SQZ^uUf;`uOxsBn~+6V-VaxQ1*J{+#PHMvP;@)2WzL zt$*BNP%$#pfG_f^qQl|i0B!pFqUPb?FzFCr(WWk(#@_2vznimCs~@EJF>S0M{YT21p=m1}wb>b*Kf7UwNV9OCvvW&~~<0x&8Q zBh%vZ^YiJPH@XyPlsdPfqJsPsaZ_&gjvDBg7$>;!RsV2Vj-btEK1l12v)Z-!J6jTG8qE?Eg3*INabh-c`P#xM+dG}{{IjmMZgj9Ba&F-%U>^~&VQpo! zXo`3xeckcBNDPwHD3yumH7ZT3g;SIg;X*AM=O4raMsPqD9sKOq{-6dVv2>I`{e~!& z$3>QAWp5($+7Q9M_}YQCg8MPZ0)-x=)TK0AvF%+t#DZLc|J{3G1#%v8Al7>$n(W#I z4h>=%QF3{yzr4!;e(11cwO60{0AfJ%d=v?KgaA4d6rU=B{!wN6a~ie*3u@x>@^Z24 zU=Pj#)t)vkT@$9}uljG3Fu(TzY37KrCwQdR+0H%DqvOZ#sw+}r?Ay0@cKm$%R`+iB zY31Xv8hOU?3XlKHri1_s0LIzFots`S9eZ;HF7712@H#U=k{@I+dKxy%UY`R$b-ic$ zP_8HRmHxx*#f*REclFFyC|=8V8?RDv3X~yh02hYMzE(dCu^6F&lN9(@ieU%3J0I8Q zOfO`-yudkSD^Qumo}FgOIsaQhCt^aQw_wr-5g-ac$8xOTGy&e_yP-E6Axu0l?p*-? z4KK2Q^?`LmeZ6T}8GSsy-r{3~UbfNr*mz30dW8fzT*QjrB4R)!(r#PgmNb6&VD$&5 z!+3Ay42dUQ@Ig@_+sDLghWOL+n{q+Ze9t%E!#5xUM+9~+a{i7uHL0PSPi;hr87WE% z6iCLEOW9*oyNR?WmP0J-M409OX`8qV@^Vk9Z1!+1*YJReH!*=S*V?dP^6M*o57v<$ zEhk1ATBJ-xU>QX%V9TkQxV_l*7h&X5k_>eq9ma-+%h;4yORq!k_QeBFr^xRh6m*S* zS-|78lp2{)h{%`qk^MYcXUnq3rxL!4HM`YP=eoTn${xT1p;jIOqJBtRJ%sc;jC zuGq45I+~Po{7a~jQw8;(IeAGRy%UqD95wSR@x*6jb4sY$a{9%38hcb37#YP+Xa#Z= zmuM?ajH-EL;XJf#ONjrd_(57&{`3n=E-SQv9e~c!&+Q8ybipD~f58-Va~W_vXoa$2 zx9LsFPJwtiVYC^p$j?5!^SLGfZU%S=zPusyB~aKP8Cl9CIn)j>0iYc|tch*Myn*ed zExYz=fPtSJD-ses*)-_+i2g^rX#)Kvo$<;+BtRBeSU@N8TJ^y^VAtKaz<2-|NlfpO z=R?L7!R7F9#0&;{K0zMNn!%hoASM>k(c;wup}kp49|KMtT{?Wcrcnid3U$=Bvg?ff$M;qc~Q z>jPrJiV|9vvB(29nf3*QKUVEr7Ff086}KoMZiUm z;t%DZYUIr`LhUH?^oZpu3lhK>HA^(n4`=$`Sa#tqO7qk*X7)*S!ZZ>%%gZJyox{4L zhZ8bMxPoW&cwQ#la*xCD7qK&=U~m2&Y|nH^@qm&pDmEKPWb7xIUrl?vPuti4JC;`w z2t;wgF-Go~8pV(9pU5KnK0pUexG9jz>1nG?{k$&% z5>%Ua4K7$2X&FWIZXIQj;4?3E^Y`;ICCvVyubkdffDo~2&$fHpULRZy9_Sd!PWgyZ zB=9eBy?aNA#rHk<+m<$j6w^cD_x!yQeGJJTPRhyftvWZ94>-~ArqfM4R$kowonG@u zgXU~TSSM*S|7qZC%DRi(!;ZqsaxfBqbqRpy#sJi2pf8GZfV}MV)(! zY&n3OoSGgYel|tz<7jzqm3&%R0-Ta-!Oysci?eJ_JrCy(AkgwYZ#dCFT1;M*v>#+`h#bCiWw&C`QS zYWP8-VO`jf`Qix6OxQCBZ=&DCP-sUrP)mb$V(Q@gxmCp$jjR%Wh-_0cVP}YDCXSUg zj;a0A<<=yJYSdS?Vsf)Uhy!Y}7S+04|BagyRYL zvBZq&{vay0pWZyM!fqsy(D+GqCm5gku#lkZ;o(Y(Bdn9C?0Dy}a3DJ+8LvI_$+=;J z7Ap>h!QL3m-l#R?vz`_QEfXmOEvD%73k5MUal3o{q`}u_TA!HttCDSKH%3xsKCrU?JRT~v# z$@6T1>l+U7!tZFQpa5v_Jo#f^q$0VA%h^Uh92}7)9|+C)6uxE?-RV$LbTWyy{(Nt- z@mAj6L08CQk>L~P5dI&%BmuRa{BPeh1c4-w9YoWVzbP?7!%s)JcxGo_-ivY9lr;t{ z4LwMn7=BXT!1^l@V{`MHotnE-ih#k4h4$#V+1Wsk<2P~qw<*7!S4z?ZvN#kD zl!5VVvWng*SR2Xr7&k6O_O2@!GfKK4>Tw=rUEk#2_reat&HX! zJ~ko$LEk{}A_ zDWB)M*}^wr+3LRWor(Trp*zUS3T^44I5d8L=;QuPAK2v<4UPwx8xZ6^Rh!J^k2>viYm>wHa`h34E4a;5eQifPVQ?sFEzzTh9hPb|Jl^xu11m-E+0bE~S z>ze4HQe+QiL(JH*?-T`BvOm&Ywk3H7c8vh0P8DW0HPa(!+kXr%+)C`=WUWq1S;{FC zPNEP0$vg)(2~y zAPo4_yIq?vtlwNi3hqp|jI3?ot=K5=qs8do+S-zWIdW?)IML{0obg5O-oO&!h@YQ6 zeVkMOFrGUAe~rrGO_B;CbadmK>;cFch-Sz85bABVD9V1Le2$_y=lm1Ij?zILaQVo@i;6u5W&4y1EXb+A&*qY5F`6Gj3A^DJYPDT@n(vBH1|--~Cc` zhQq`xoOuVCCBm|$t(;&OQP`MsAhy0NQ&TP!$_rKv;sn7}y77VnN@#Aplwp)J^11-> z69GMq=z=+5>Q)l!Gl6Ek7yB5jB;swA-WUYC8`9hJWly_#79rnb|^HUZefCCwo zhI@+P?678Y=5ccf2cw|ccR8iu@6f{WEr}_fVVfXwz_U{>g0|W; zbbSttvy?In(;*s_5>P0pz`Z>ks&2!95=990%gWhxdf9UAcj5Z zeFgfkCLe9@Hzc*O8JcsmSxt!*-}_9HsobI&-Uc2&Xuej8&H6mBs~2FzYP}IPHV6uG z4c=y7liRaipzP%|Y2v}Ioj%PbWnv%CaeYdX-$;4R<`BOb%N~~w(3+!?_wBEe9+CF) zV~wDdrP;z|S0Pd$#bG6Dr{piO-AWlrtoWXiSmUD;crIY+^@N8q<|qX6hzU2nAj#v& zaLZHYA)na0F6S3oM&g)+7YNA6$pn_9Ym)zVu}2~}&5B8RS51d<)`yem8>*{cfr$>x z_;|@^ZK8kvG>)BVv*P39YpAJVV-KPSvsZa~%{&(-ie*)lC?0)TiUkCeV@>1=n24C5 zOS`wV8Lw}0IGVN*>#xw$i_|W9s95+kHx&33gwGfD(Ktqg)J|Hl-l=corDPkacztJT zuVE-2j$tjqyb&x>R!ci$rFh3$QuxqiXC@{XkB<6qSSDg_P+?UYf3L=!^T&{ID1@pvv*Jg$r(UvWrSSrn=FFCBs$Z+dpFEP9+J^yFa0UaOob>BTi%6q zj>l(;>fM*bO0?2t<4onfCZ;d3izQxBREr)Gjw#PtS5wxDnN+-1lP2xoOI#nrKCC3( z8!!|qEG8=-J4!H8W+O>|u`5XST5;n|*?n~bdlke$LccTf#MZf|@t!DAA@2mf*sDl7 z9q&#U$P&=t#qz6eu713+vfx=oiVO*eYzKPX-P}b^p2BC|@@T@1-|N<-B@jXL z#0IvueeKaVhyBsk;b`a|$)yOU(6;v%zZ{*+*;+bQV+NJ3zsr7XYi-?GSsD@Ya?g77 zN$BLnjCa4?AKs^0_{t2;ham}s6^*d>Vf9|kiae@Wa5 znBadcbe)X_SD`Te4x{Bd31!sp!e?A?`CL3$i~50#6rFTI<#F(q253vwBAtF+?zCuI z+_s04yDGnmP^%H-@~~`C>wZpxqd%zXZ6yfPm=Ttv>EjRB zGhXd>xG`cc4yh6=rwOAhPCJ^owQS4~%B8jZ+n6YFpI@`F-a-ZWyv;NxE->bN_A2-y zT^uJ(^K_J?Xl^&XsJi%Ga#7^Vm~;zM*{X>^pHV@ugd;_?BFIO<4FfDl*y(0|QtC;+ znI3agE`a9XRuOrJBI3+?BvXb>G2s|+H}DjLGAi&ekmGsX8qMS7sZo9B)c5wt_MtB+ z+voXi=X$|BXMyZ#l5C-@sv})#C}n7SAw)Q?)cPpjjT=huvLg%XlJ3-!Z|qN2W@m+%i`%GIAmQSCUSR+p9{#cYC;!_hI^&_N)P z7=)p`1RAYN3eyz-G37jQfpEt>va~U#^=>%lAY_QcfY#^h5x16i!>v3nVK7;-RP!NC zc%d6OJM{6a+r2!@#cYeMhooLru?>>%8mH=2$6oR(P;pOVOf}+&INy)HVMPSA_&P0q zaX*ZN#5_UV1s*mn`xQzh3i8V=9ysu+O)5{p#9Aqq#&y#Wwv?+gDb#a8OWzb&K60ZNFD@$D0CPsJPCAav z&dpI)Q%eU~#gTu^QsBa_k%SNld#b9~aJ>nb2pnUGj7(glfjpVgBIo5L+%J@0!#mEn z(u_;rtYS}4Wrx%lXSbz}*O)SJL?qHUNa5qq1uiQ#sO<0wpkbbS@MzNbVIVntpTq&O zh=K5_kw;f;+>h)#?U#fE-z?1<&fFJ){Y<1{GtkUBAKE*PyzjWK$%LLTX06)Tmav8`72GK0KU!{WpS4oR^<)m{9!+z)VICi|jWcAY z(067@!sOlY^FF>~2e|w^t6OmkXg2oyB|0a#lG%82?ZX-XzA;Mf;`hD~`cUKBYB@ke zrrE08sA4+lyC+g>HvCsMmn8$RY52o}V_EwPjzB)X5r{qj1m|2ZNtgMd76ImbYO2t7 ziqsrx79YjNX~U_%Cj#Td;mF5cJMvNMjU{{~Xyl7Msd@jI*4T)&C3!R=rDXB#nW~ZT zqzXSzQt&*3U<*PhKZbl{r2Z1w#J9%c%KJX70`o}Jat_9Lx4(G%?BvRTWD(DNN@ zFRf#MOV5IJ!;vaXjin5P1i(O8Vl?nAhXOq9{*uyfg=kZnEVkruvH&+>`x;bIIj zL2pa;j=!CC?51)$N<#xzH9g3K+tq%OL9C#)L22s5+Y%`~2qI$i?zVmqX?ubkwkkS0 zy3M3$?AlBkmFBrj1nAH-UDcQNBJGv(nMv!#edA$~Al6$*#6-EYY) zpPKXOFr)p;l?)S`mj~1pP1U!W&Ws%GY+PAyNc!>fZn56_x}V6ttxio#pNgMUv25|v z3#jE=n*xZ0#idmC^6(9of!*C#d6_V!KBKc*Om`U=8nR+5Y=z`!Y_-vblS0g0^ z1Qt_Gyi5?mY}N*6!;lQUF4=w6{xEuH7N><%B62q zTj}~U?DOJ>8|>ORs&@y-v@|OSkw*I+7V3$MOyg$vB2A?J6T~r$Jm#Oey7RnPPF#*o zIs_UzR~<06Jt5vtruYDb;6d(!XC`)S^8-qK+^?q2TYXX{9llTZueC#eE&6ok|LRE* zL;jt(Y9E{Hr-FtYq5zHwZOzvVs2)fAGr(+B>?*#jo$B;RAP1SpV7wDp5c``^RRMW9 zj?Z_XNOkSjlWwKM5+9bF8@dFr@DyLG4i&-lBl~QbFrvkS>&VUbuP1r2gZb%{OJ zlDk$$KbEq&v`I`_seSLjhsWje_JcOI5ejD;`+E^NicvoIABIf{)(FTPv3%Fx?B;xL zZs(s5e)2qcHd@&_W0>8z?B6IL$2(dP{SdA2vB-ib>X>BQpr{S4fOoPiBo4nr?y%wD zsaZ}7B`ujggDqzP0NfWEhJ>Fu!sZMF_X@l70A`HYv{e<3ZK(;B(@l5bu^zhZHOG2t zLxLOS-6o|R_NR0BX!g-@KP^zN8XFd{94^r}UPB zb2)0IleU2-3*@XCvq2es93yT*kd=KD@t30RT0|vRBqA4egYWIE0O(L*^DQyXv2{Bn z^UbVPY#es`Ue(-mNX{mKmztyYA;0@rad!D>_8a@SWYB|T?22p!Bku2Xp+PaS#UV!z zj8%HnW*Si>gr1&WxGjA~FdP!3MB;TlOn--loEL(&lOr(vHjhX8!Yb*`?1F_*Y;A@I zQV>`(PKh~e&B>J5L6$f;=Vj4ay1GZKSxA-VI?JCHdQ>7!k8F-Fut&8tUL#q?z2%eO zJAYi@JKNiFAG)YWh>3|pf`XkPJ@h+OluX-f8rG#;W-N5va8y9HbnSlJ{rJ!xG1Gc( zKq_hwv$VD0WPb4efb2w4q*lbN?P6@{tZEuO*B6M=?=nB`RJyXmbe)oF3aS$Tz%FAJ zy9e?6VtlxbijIz!azO7E23zGe)z#TV_e`hAy&1r=cHmafC$udAxyu&8SB1)hup*NXPD)>2wZHD6-XX`d7Vea`3IzE%gR@njSn>^gqNe^Dg2MBoQ@}N7eFghgxqr2 zTD?_|D-3OZOxD^BWLY4oZhLjHPm`8A*0KxCs=wma3fm$v1x1hIN@y%Wpp}*qWJnE< z(a#G#3WeH@p$OUw=hmESX&>R8C5lW8Me9|L4pED21lM6yk=*6Ig~aw`pYxybUMv|t z9on_aKSMs3ccAnNx(jJGKU>)UvKVh!(igiMoL>8eAv8LOZ0SATI+XjB>-YKkC6d&o z?2!$Zp|G{J_4RZj8uWGm8iEvDL+~~PQsFF+8mMN_6LoWQ<8#)V1QhWe$^r4Z*l%ZW zT@b08h_oGM~+KRi5%y4!jp=;28D{CDP`J7BP^S>3t% zV$fd4TDUiGp0Z;5PPVQ+xd0RE{7Zt8p0flrs>FWy_N~~9{R0@6P5SF*5;rW`vnz3^ z3>Y6v)Nx3*Bk$+~;7oc$Y0y~8hx*#(lfb40$K%wA$w=W0ta$Pzait`ww`fog(lY+?N_F`w#N_8KcepKCPN&g>^}{Ve`0CG} zR3@v$l{?@ZHN^G^!7~TaASyr6KUvx$84&Gf$WyXU`$A2p-;df@0kQs{o{;TrdSC1V ztyRVHq2dlNc0bD}^<~b(h~;*#IlI-4EE_E2O+5X&f%zm|Aj`V|hi@CzWxX-%AfWwD zYkj@i(hpB7*^!Qx<^eyHc#c#Z$ExiT#hmT8>duD{;vQ{9k&EkVh05R?OrIeBT18-8 z7dFOatzsZywgd<++J@juPVn$eT|@9K)2A?+*Hl9}lwS#@;KrM0cIa zMe;L-J?o0aFK%!Bt|ps~b{2S6%u-_;Vh`RbShA@sysi4Yk-wN+x7;W9rlHfO^n=Y( zca{0CvZJv@bvGrliHEx5n@A`t8cY*@!RPUSi#G{U{T2B6qGNp8XR14&X7L}E-Y&#O ziyu4~*F5nEvAQPWrOp6z!jEoc`iYMT^m=uFJ*Zo362gBRdcY`X^*&)v^GdS5h%Ty^ew$;o5-De9EvYpl)Prj`G6Z zTQ=q#X}#Wt5OoKep(P|I|0n}LSaKN1IKdF)qgb4Y^d+OS&d&l(?d?~^59!T4A;A_n zU=agiIP#c)CQ|HRsXN+SXRWEgeU?{O-I^!#Mhs^hc+DU0sO~iHtW`ANw2-h)O?0Vk zXzOot?gtIdy@7yi2Kv%YV~PC>qfh-lIo$DMw7Cy5B$Sp}^s32v)0mlRX1mVacXg3x z^w8+;P~%qpkW=gWNMY{zxYhWfBs$_rsY+vjUrd4pV;e_mN9MQPY`G#6;E-IX8=TIt z?*JQ7J_mQ%V4dFKV*^xZa_~FFZI`z<$6RVXsmYjTnx|<)on0)z zLxkdH$uP#X$7426`A{y1yWzDUW|Tt^(qvCqS$mx4VxQn9L{KTJE;NF`D=~$gs^~OP zP0?C7iLp^Lv-+J@B**LLdBlCpgpTS6UZE~xsO^K{fT)R-!L|5v$HEnS(rA0?)x0nB z!a&iOXfckw`325FBSwX4>7Vd5{C0F_CT;bv13V%C2TyZr>rX?*9x$hDovxNvgb`;| zWu@6HQGuS&sc_`1%IQH3g>bgi!JZs^H&S6Ol-^rIoLebKx z_|~kq^v8&n0?4^4Gh{A`(u6tC!-(6%d3IpHw(?TP^7ZWqDaFr%Xr2d`GAqWi=BDzQ z=4qT%M0r*3ZA$!fA(g`I-H)4D?kmwu-mqA4f2EyqgS&b}7_oh+5v(1EjJl|*sF$M- z`Ze<2)a=fbyK!a6xB5P5U2>ZwY%@OO>fTv{pttbiOlCLX1AqV#6z^&5(7>+rbvakP zIeJyUwC_JTV~gWG(&0~LGzOFAGwZ1YHNk9jm6BmzC8-Y#q==47iXGP2Vxz7rLn>2G z6)|ZX*#ISds4*SAM}j1t8J`3r6F2Z)2LZOpwErZ8KD55FzMi@<@Xgcg7&LG{@xsVD zt1lZ3Qgao0JPpEsm$pylgfucAV(^8Zj{gz9B&?AOw7$`wFBsLq#HEm2kbso5dL~@Ah6F z4NNR$lYMnje8}`*&e=!du{-qo3jY3^Njvlv1UBEpEX)A)Rva*kU&Cbeuj~24+M@_g zUM3c==cf+DUB%n8#SvAnvA(UbS@T(IyVfzCbNG*yi+m?-&S?zucz=%doFst@U(unL zA!}QAvI!~-RxAmF`+{aA3SNg-YIaw4uTM_qd9mv&>R7~zx!nlvxwK4*$VxZxEa=6V zKnCegelMC_(`I`pf0dt99$1~9$CaNBRTM8oEZplncQlZZYS*lL=>dG=_blzo$Ip+t zyY3$@V(_*!a?LL>z+zVRQ{7yHqMy~m zs`qMb)%BMKufsEkABOUVY>%tq=Za=K*`biz`TJ#K`XuY?*(H1N7h5Lh+59OCnCWe= zHh;fJvStKl$q4wI9(~-R=`R<1H{BaS{LFVmQL~`#x?-(MG1HmV zJozH3E^aoXIS{b_c>=bITV+r0CH;Fl5s@80n60rZwG4e!?T#N*fR-%fP z#hD0bRXbUvRb0Gw7rNv}a30DgrN^6i>!xISy%`a_|nIGWc-k*oG;RcwT-Fxq)7tgeUaa&laglLalRMEPo>;1Q1#248f(j5N+b-M6*@Y<%&2Q zdV|GyaFpm!%=@v4nP5vQt}7EUUhV3;j~J2y`8jdOQ(faw#&7xygN~m>78q4K9G@be zq1w;|#k}07rPQ~^%jRYL+1bYh$qed;>SIU$$Bo642NA#aI{f=qm^c(jdl1^e@h^iS zFk{450}N9BF5`VTo5#Oirh(p3)yRdO%pjs^>+7RzCrzuAo8jx;_$YUo;y0EEbR~1u zGMk!S2!iBz(TflWmq;_fU@-MyJx^WNg%k67h9)_tibeJ{s}TJ=xw5RhaZ&OIBdw^h zw~{?3$?Yys>z&8-sqxr>hgRsoo4lHp`3){D38H6+;7U!eCc}l3cV@r*jep*66%sc; zdUeThj_(&b;mu0fAm#6m{{4?9_uG9L!+-G7s;>A}b2Zw!rZe|V#e;a8fd(I*SFyA1 zd9pIcWca!10n^R3wXvrVs4-?@q8BIK13@E zJ@KNlqt)&Id{^pob?>VhTG*cEdQsKz_WSJl`P64MBR(XPKv0;mklj23GPPqyZJdkut{&^Sbi9Gf*&qc+ z>_BuoldysH$$W?BVzr+KG?2|sK77#C=X6`azn@2@#M^ z=|&_)2>}5?=@6t-L1GwM5CQ3u97^dNI#oJ`9%=}sd#IVA`QL!<-}AiB{{H%Dj=c}o zz3#QHJg@V*?tYF0WIxbl;3-Ato$4!7FkKemEm75cTx{EnNUH9jWy})St^y*el#@Uc z|NOMF0&o%y*mDV{1}pg{vP@CoHtQ7`dhpUx=wr!cP5;#s9ER&?TiSwy9Edl;7QC=6 zLg?-=$L4T|vFDpNKm9REbAQQBD9ENZG#CG!hDA6*A-@rBr^Sbp(RTC5?)yWPpGyH- z5q ze=heKhBjQ>dh7jr-6^qHr>+|Q6A0<-XU>8m^#QuOT4R>n*+y*PKhD-&C1Mz75DH3HO1tfMj-Jl&dTCsy)&H8^)$r9;U~noa0Vd@J41jYA zXCHo~z3;IYr@c{By%ogau;J-~!>qbDelY%41?PQf`F;ccP8p&GS3*zOH?n3?jQ#WAR*po&v0mRNwpFoV#`N95C>S{3jTGiOU#a=uZ?yswA_hFfO;~0*Zi-F zs*a9M>*gIpDg1y6>y@+5B5#8uK{v18c2>&TT2lkvp?-Nz-0@^EJg`RXR&&o5!}zU) zD6}Oj?GUT?TaZcid1%iwmrx@|V&xZX;op`2fJM8thNuiW zlXYdc<2bcXP9Hq4qGA@Nex_*^sYK5k|AbS;;(~I-${aab3;tnaVTzHsk&DAV$hDf| zt4hThdwr$LN%oBUk<{vVLzz5T`OI*iII^R|`h+-1ElXe;X(4OnuyJa3+Bhr6W|vw~ ziD#&m3B55uayzSEBLbC*cuhYg2l*Ri(L{eN+8^*NH9$z+gW|9@l%% z%TqnexQWNCO5a+R=FZXua8bzeq}Ps!mEI{8JkI_#_-VkiPB`=(SIVd?4fR9$kk9X? z0zRidhp=-%BTrwk1}r($naNq;|>J?f5V z)8X?vL+owN+wX^IG;IDX*+1v*Po{y_k2dVQv60==rtYXh=)Jk~OKXJisTP0YF<4rs zdZ(4HF)2c#oL0hJ)GTV@*5$1V%F7tBP;Cg4*^amU%$9UEP1&_E($y8_?oIdrkSOgW zC*GmD;jN8{!jbCYtwl-m2hnBr?m;qmI5$HctF!b=5VQOHQXL(@U4(A&i@)>1huwd7 zniJ)7J3Inf!yp8avv@e$A286+aF$O4cbG86oL3g#fbimd-w9AXk)jc2*0TY5_vtMb zZ*C&T`}&GIj5%`ZCL3B0c&m>_%k>-rEnK4ehIu8VoLiLQu7USpqMJ*wM+1u^jKR9OpY}>Q2bVW=wEew4E`E<=jfh*oPX7g<)k8?xBlL{8jE3B?!%%E z1`r8ol+)b@44*3QQ(v%L@Sb2jw-+jvBOa0s{RYAugo9;2zGhqn$JZ3=f_OtV)#fRW zYQ&0En#7a8so=rlCd*$UPe!SXPhylI$D>Lv}7>cDd(4Ucu^vWKas_H{8i)imEID7p(FXqL)ySCtRN1-X`f?({I zfKRsbLCpwu%Xo?>n=Kyq=a(-mwzZL7?(X{n;{i>1oP}+k6UfJ0gJ7cRv5ygV)W~=N zF!POwA7d!KWp$EqJBxbky3KRk7Zdyo{03yI43uGDE^|t?zEz`&j*r1eI9Jvq+u6{p;-uB22$bt(%_+TBha8^QoW^p^d^$Vz;fPg z6iKT9?Q+{{FcHUnxve#xY^}a&hiEz$+>)As zLW~yY;eZxNBIlM%VI@O!6F&vTVsl-c06q>nP=*zc*~`-`^Z5%L98Ff=j~->%Av_{R zDz99t*@t%CCXo-1HmDZ-H7m)+rzz{a%Jgm*m}!x7F$=)Oq$|JVyjIx5_DpB_COfQu zGi8#kNZ`Dd7x#hU4%ntm%_tHqXp8*~J(`m?mL4JDvCl^U;Rh{UW-x%7JxKjFG-oPQ zo7Z+EdkdGv0p<04;ma2}j7>4bD2l)N<;+{1P`;Vo_iyMjCvBZg`V9nGKN&{ zww0`*_m z+?R1WkXtMIMzzHvcB!cPywL^Iv{y>WVk}c;hipFgE|2WInkLZB7CBT2rV=dx{%yfM ziQhRv;Wi4P2--t`ucMR~(VbijPu|8Z@~4_bi|&1Y^nSeesVsnB0Q{3{jOxtTFD>w0 zh%|&$udV%fluVK@eXVH!Zeoy?W#`i-{-n>zh8C(;#oUGCbE(a5N|s(?Z2H1doiqn| z)9&d)n}3=J?%o&buT^k%TPIzo+o~Cma4czX8s3`q;T%30{=}4IO$>BE0WBD^xY_1v zuLbl%QLC)FYS#mIr3P<7jW}!_eRvs6El@{(L6thsJPq;QM$#95-tvnIY;rO4uiW<~XmX~{v4b@x|^ETf*DA19I~1-hf+f@lj4wa>bO zi0*^rzc^0rD{s`+oJ?5Eda!U0#k7=C&d?oASGkBtyJR#hdS#gb71nZ>h~%fgLGA$7 zbZRs1Z0(XUrv9Jmi*jX2+VNQrU{AU3ayeQUV#r4sKLPEK&boww?>!kJANmcvH<2jS z5VhXMDO)}KXep;C4*7A|{6PwtV*IdKH3qArLuj?%VnXn~khYC-)%KC&Mmkisa0&O= zYd+U}b|XPjp*Cb$-Ac=IY2Ity&Sw#Yd5VWg^FTIY{0Y&dt!i4ATxWGGoKV^Vpc!NC zUJw;oyMNo<57UKUiThQjr(XJKxxXK`TF~PCI%S{g$VQo6@mbvyWpZs{JuHF8U-9hm z6f7eJKgp8zIh;Wmg@!wz!`CeVnEec;EnS)wCmqh^r|m32zeyX-tZa1gDj{;dwykaGfWfv;A$8ZPc=OGnh~h-@ zB+g1XefRmX(S03QoWPD?^h)Neg#E-L?Z04V6xd3c4p|Es4?ay7^-mYnZq4+X*SoC8 zH=Z5YW^HtfT%Hh?Un?HFr+m(Em_+hpP{tD@nD?<}(F>;M;HhpT_;Z9gku5`%7&?|# zwB*<6hy%!#)3_}rP0RF+2={IqkLbH*rClAaDwf^hx=4{*({#h>_tx|h<)?=^vhZA0 zLtjR9f8UZTxA2}6fXYHuDwfKUsBh36u>k-{yWv2Elb<@~^YKK8Oxw28QwoxEYqJYTyp0 z=dP#q5+M1XIWGOG+NH#KN`fc3t+wl~Qa-&POzSs*zBx_TVT)P;FE*ZKRmXBOyaD0d zqf4-Cr;Q=~Y@MNdP~3nH8Z|hI>)*DHcXUdJCbi6`K0e+_H>JT0%U(?>Nyow^gVg91T=2RFqTDd=C{{^+P1>UkTIMVW<0V`nH4`DE0c1a(N1q$S%ly_pI#{w8$7=`lAi}W#rDvt z@WGto&V(>eLdrhpfS9+(Tqa&*NO|G9m?#cBlc=8&sx0Mm%SK#b zbmyS=?RW%c)<=5RMzx90>8caBm$b8!NtM95tW-S|_Z5h+C-lJ+jl#u?Qr65&_$X_Q zl{zEQ5>UXKu6fI}^RO#MpFu2MQod3mIVY9Jlz;Q+%gZJ^+Whk`@DERWo;U0>OK!lc zW$`~|?54&t97ib7S4i%8r}cnOJJ!iJu3h-Pdfcx**CE&<@X2WI=|g1E&W*lVw>efx_5~2NsVOJy8Zr=5Ao0D} zoMJDJE=`aN%2UnMKFdDlPIoNihxYw|4tRlfPFUJ*5MFKsGYz9T`>}!Nr--O*4r+~i z>x(=1E!p4h@Ie3>ouC-zQ@A|nOAdS_t6w5f>g^Vzdei__XmbdTFloLRz#%)HPkoJW zcxhmzDk48`^+l~Ij>xtMdK`vI(r+SsCAK?I2Si>Alreu@QoLne$>Qv0##%ZOcztp$m7KGmNjSoWWBR}oI$im? z$J*0^A`y0Nw{OXkR%(7=NkVE5z?5H)l^D~JV3JmzM(){D2wB z)Md=-wH45sqqXa<6(=1)1IDLTOO@pB<~_Du~m~tv?h` zNI`XOr2xv@`P!7V`P<+=weqd2qDus>O{EQ4NzH`B&9&8nNOF?Ob<}%JIkQ03NKxpV z7#mHAHf?Wry;X8i>@4c z8i4cuIHds4=YvpV{jB;mT1j_dq71RUdG9QHW4qdcsh*6^jiRBjrzK_9)0-vJ$+a7Q zO(jh?pKI-(CWb9tzv9jVZPWlH!dS8t0wxJkB8k49*4?NHT##$& zb_Nc|lM+(ty=8oy2sizzw<{)so^O(R7D5SKAl}xESu}fCFxSO3@_I0aqSlTe?&|c- z@Sb3>G^7P%Z7TK1M&}L=9^?WH{Wuo%7IMtkrcokQTT5#yxpr^JF~*bOt^TG4mrbK0 z@#kwe8In&ey>{9&_cI1a|IRozdA=bdetG_{-d!{Z=yVm-x-N@W%^IQo466Q4WXn$q zmcEGORY6^nNzUv-^&bZ?a$ygt&&k@X)Aq&_9B1k~lrV`axN%RAp@ca%H)E)KQ8Y zeRd~>Ub;lVGfxPY-+=4QiR&>ej~p&NdL#v~y&Ro2z_C><%}Iy;U^DB@SdE=jMRK+| zomjO5z1qT0=@43;={?OdG{)Q3ENN0EIJ25OMmE!pXmUlQpwh*fPt*Kq!bkVBRH3h}&yuSk5CYg9WzBJ?qTb4=86pw1|^YbR5c#fENmIc{IvS@-IA57~GUS zzP!qxcEDL#me%gB9glA7z;;W&7aYD*G?oyn@~EZ?ggo#H{p7Q*+M8Mgpo5c`K&<7> z$}uCTxZ_lp`UC`+0^4W}QMy(l8gxG$Ba^h&y#QSYm z@8OXAy#V(du);Nbpau}5T<+1(fOW4AE@uONo`YO``}6Rw1uLM0_$%&&z^U})2yY7L{l>+eYlPT&L8S0jiLjqpvCYh;n z;Ki17*B;hd!R5sh>Y{Eti;s~;X#U_47PX8$=36O?iZ&js0t{NKcRXN_au;2mcHN0 zf4KxbzPou1rntXsRN`ptfGQM4$~ylj=x5U#6cp6-w4h6I^dz$%MD|bUJ2skgp1J>l zE+Vhv?Bc~M>X(SBK=z`UQ`kkI4Q1NeTJJxcDf$Q7&M{xm5GSEz8DhDI{^qok4tTKd zDhllvFJW^KCdblsj%eX{`x5Pxyz+lV4 zXVr8so~T#(x#yBX1Z~&=>G;(nE&O~NboPFBai}c?wq3IoN!D`V{UyQN<|*~SYP>wO zS7m$YyXgr3EgXhM<*eXT11Z1He;?Y#XRt}j62LMVSD;Vh^e%$~nTy^^1!gZ4%2@C9 zD&$r}lJn9*(mT(Re$ntvD~G`rwN@h-lWcFRg+SVD18Dq{_j2cwr^xx%bUk{lpjz;` zILB2R@C1G2^$gu?El>VNfIg|w4h5<>M^7cJEA`w3Ewhp}Lq8GY-4`kd_Sp4{rNhbC zjLUhWd{{;$e9<+4<@XurDOZ{E$FOVdQ8$;ppGkVzEvA{oYlSfPj<-5pjY;E8*G5h6 zQiwd}u{m{Zd8iLL+6_Nlc|K1hbuf_svNGs*V|XV8cAI#y7H3q#8>=!K4T1dirVb0O z&YJ<@Pp!*+qVTLpSQmDv^=i1HxyuLQ2hao)W98o>9s=@s>B;DYjQ!8yh=`5!qYPw* z&c}rDGMQu%LIfJ-J)!-m?>-h$@}RAqo*VKQs1@J{ng|k%JhCRZcmYagVEW9R!2Zs1 zcY20rF>rf~g^?kwf398^Ljw7}Wi-wjl;Sy9MxochRcNB&@Hy>By(UKesfpmn{(B)j zhnFKNeDM}66L)Wp7u1!SRgRq(ZTcL}+L<>wq&fhp5Zl6mS&2D<8z1(|!I!mg?ppov z>w5879psx1$MSAq2p2baK1`fqqow~+H?jOSNCvX=jIM`$;O5~n(@>8Vb)Ifaq@bX9 z@8MuErgT`G7?7vybHus-M0MqaMJR|2x;Nbd)jS>mSck{Du8JC@SH}DfV9b@Ho6$#f zlMxZ;omvPVmoCZBvO`fdgzLC|SKh#e(fDaN0H=to(;^H&T>v)!YOL6h^TS)KYnK+L zm&*?h2hxj)DtKHRJE7Cix}XY<$S#3v#FAEl{RNcG%!y7V!ET^$c^}bY8K8&DgN|)W z7H;5XyU!4NI{%P=f;i^q)$}ac+w||+S-M8=Xxr^f#yjvf>pdtG0&1oR(LzdHqrbbSp$eJfZKB$vusu9U7-pbKyO0K{?v7@dlSMCvX3 z#-B5zM;9rFDjTsL?#)eZut&jx>kAyfuoLhLt)Ua9!|}6vNM3_4&*W|pU^DKH6wi3i zhHIUfljVToO)+pHarB{<^vbP)yGwVyC@7M^s1ATv)lMPEr4V}iBEGDk|GAP_%5r%q zWU0PEf~eS%O1u*iOHR&$!A#$bw*0pnKI3*Cr@N%dpcIjEB3xFM^w**b<{m zFHQ_}e2JX5+NP$DMvgjARt(?P$4U^X;;oj1zDZmc4wB4Q=ByZ5sV7X52Xs9ax~Ib| zm^?gkH5g3wu?cS`5r3Ak;xApi;S^o2Kp*zhcfgAi{37qlf2h0%&f@dPn4@IH`$@Wk z8ITS!U*h-O1buGXeqPWsUn^wF}3;y7O?x{HXiri9G>#=rZquK zi6tq++ZKeY+z{T$kt+g?EP#>F#yC_~S%o$qC?o8PbU=SMB!PK`ymwoJ^qlvKiLU^m;Ac)fxx zN~5t;*GsOAaaLm@HV}I?AyGtTW&wOnC|@R#xRV>3MtawdFflwL z;<1I=3=>JD8)!wHHG_>u-i{;r(yM#}j6L|e;9tZgO-C!bg-f+RJcQQ)m?EsnMM+q@ zXm928=T4${(CDD7FW}k4z~_w^rjjMfl}uo0%%xZUs4x2FwQ zguo5z_m-<>`-}>g#*;xqxwJ)E9ZeH4k!fS_IYTRlEj@tbs=V0wc;WkdxA))>mGR2) zD|>Un`HhPsU$6Pdz`(S5E#1`70%XR+!}V$UZ`XitT%_us_69nN8?5m&_#2Jlaak+dpFC6O*ge_821UfEdH9>U!%g+dxK%3JkgRY15vwDu_WhLf1 z!CFnt%Nf8F6Cfl3yh$cWWM=^o#&Z;po&;x;X~KG9L{XEIHX&a$$Z$gx=x;?u5>pMY zidug>Ny;4vxb{1uh-AHZrq$S;c>BTE!pN$zBE7^Bp9g*fEGcb7;`Ru8_|$wx@|(W< z=Az3c(jwAT-u1s|VJzTN)L3wT3W-O^1v4g64M%U9KA4>FE5akNf5jC%_~flse`n2? zT??s)4@1(ZGzzVN@)n;IHa;vP!cf)Vjf^80d`;%Jjk`; zsKk?R`Np=Sz9&ycVNO!m9G7<)ymIEmKghDr#M7c$uG!fxHEdQ)f$03#dDC8>c-6P8 z2F*=vvWrnh^vAfnyh6(RapU#P#%i#FXFonPi79 zm$`w+#^^K{fFB*Tl07ovd3#$T)6X&unUlaA4z@n@6F zqG4*TM4R;CM|(C@L5g?g~VifaAQNE-+iUl>f%R%o1d3CAMv(9^_ufIK-6R z1`Be^3jx=y_(7&p?-^^Bvs197JsYKHN{pnm74wR`wHOvUXgSFk2|MHWeaYGeOB z9(g+I8lf$?2$u-nI$ex;ZM(lmEz&ZbFJaf-VKH3=c8=SC9b=xE3jP))K2F>U_SwO~ zGT8BgEqlKOeov|@+wMmLBcmkpiV9MkJYsdlBq3HuGV#xC*e#zcrX3WPJNasxKig7~ zlJdrP8vmB$WgxtSKou8;;RqriQEq4SjPSheOA{{H(H_=?&2TDGHhBJTlS?zs9HCudI{o@pLVHXojuuS}7a@|Qci zH7|QDG@NjU%<}Q^Q}?c>xn^Hz z5`;#l8c;;uyLVyI?&F_8!?%urdNyw&e)4a(w5xUjY*6vwDhDV|7U&+LJPgIr2ffP5 zZMzn#NiWa9B;23xVAIrFb8oRC^;?(BxVWRl!rIQ~Cg))H{sb*w<>+$=<|^KVX>G+J zh$OZ4=#JW*Ytc3{zj6z# z8vx}o_bSuN(ju{9Jn-~#37@{rNn518^I?RfNGVwO{KVc{YGr9iSu`1E!zJb%z-dwZLYzoa@JJOC$}N}hOZ zK};cZUpa~hw~v)R0xlFG3{3K{e>=)+8gEf^6V3#~{|KFgVXkBe8;}RW5u!{Tn48b0 z5lmYmP4A3PH2fhDwh>-ivP6#*dIKEf^-byUfTgxTIq>#RUNTl6Df^)|R6ku9KWi?{|CJ2)g{B1J1CP*bu|<{`w_R6l3)T5<4oS&I}$ z3h%2NXCE)yEhyS3SwM3Lu1{20dB%38m`Bu-`F&g{f0T~1eOFDq1AXe<)}p$=Z}&mh zr`RkN7Ev^Y)`|6I@;*k}*ZZ8G3Ec!d@P&_ve2g<(?+_GNS*i{NHS^HYRkGg6&m8aF zf;Fh?%Pip8iZ}&*Q^p-azk&~kdr)O2bg!qH!V|$h@LU+Enth+d`z`33`Bg(dx6hxLq zy-04%cwuPt_4Q$D%NbvPt1K2Svl7tJ>C?Owx-fIsR^VZA{H~2ivQ#3N^DG1yQcTZ+ z^YDx;Mw_<6nk6`oB$>tTD`gW?5jspiywwfFul6`V!Hjmy=J%AP47{I%_d+(Ho@2(K zjwI#tA0AG&eNTs;EhtFWeUm5weLNWvZx&FcKsk8p^vmYG5(!4AA<$32^f9?X1f$cY%$!@ZL8d7#QN1#pca?H)2mindQwYl`^2K zUlr)n9w^oS9fIIOS~T{XMwfE=f%N?ACAxPwAZ=+1$(KMD&=ufJAX4XaOanNR67pQ# zb4w{NsEgfkY7)ws@;wZ@US`JYD6synP?oNDn?=*xdHJPU%}19m*%wIl_d6Q{OoRL8 zn--qwzAbwXgq$h~zO5F|?tV!Hh8ShM^k3%!iEM2j^Iw#Wkurg4nqh30Fs|WlT7hgY7ZJ+kseFrF67B^NpC9 zd5ewmRNqS=?qVQp`;M7Zt=cb!K^eRSU*B-$VA!zIj;xMC(^aGV$As(?^o{S-S^+9T5t-f7j0%T-%+cJCDartS9tc?9S&L z@=&p@{G9-t3oz=DZ81+I_7(_Gi=f?>65~*UPE42-<#c zorp0DJr1|GTksush;^b@Az;xt$mcdmZ#eBDW??IEay)6wwe)J_Se;O>; zaclIxSTVHO813l55Jd%AMcKjL?=TCzqKHvW-X#$!=jP3bb$hQl=-FRQ1j!j~A-}`Y zt49G91(M{-pO$x`0}!e?q}+FNOQ{G-27AW+=Ue8SM%V6w1#EY;{ydBbcj$%q-Zv(9 znvxk0#H99lSceU*1P*z_w_L14HRFxP)2rx>dA7z*((!5Hp*%hRFTEgx)tNJ*QN%Hi z&Eqc`RYcM!eBVhr2`&?Z-wtttjb0(tI%x30)79*BPBqKmfg>qc_U?iS_uw($AwoD) z<*@HXiNTB>>0VtVnV*veWmLZvE?EHxMd4#ne}16tT3PPk1eJu0Q|N0wes(3!tc{&Wu))72#zDbj;drX(`JMkDdp!h zxRTS#LgwAP(wMuzdgiNM2f|O&tTzf=dAYcVd6;gE$6i5Y!57`YWXo2GMY9c#vqdMI z`qC$}C-O@Cz48d&eJx}Ad-{#_D>I{FWJxq;&C8+%$+VE#v8tgHe@V}S0l=s{e$8~n z@wm(u0DwE%w-wRW)~0Buif}#KO}u*%VDK^FGTR-90Hv{W6xyd^>pQ8V>_mKgJV0!o={DEQ6}ocHSDF^hOdJa1;z(eI zo9$^B*a!Ev%uII0%lygdw*gIS5tOP7aH=)!X+F4ta5S#eV<{bykVPkhxe*VzELlHw zg}Fa7g%A%(M#5aGCB4;+jzec7NkZ zdc|u99)#I09#R=EL`1~wb!?t zXTlI6<&3ZZ!%+!`!&gTFH7-p3KT7=^$Gy*@gRd;7_Kw5FaDfYX4v_)!{17eRTYh`V z=Y3TXE$ue6E4`Kluv4SiCeJlaf&Q_nEHR%O*nL1+b2b?6lIBed5=>Z9MsL*J@o=Osb2O<|7xFlFSo&Bj!kTs^N8Fl9NhxCfjb6{=Z|dLa;7iCbDYU z>KCU5r*#@}z2g|58~9z-9nU-oH3!eUQ3K_y|F2LCF{hW_ z+AU=9e5|uZvPT}ITe!na)RQ!IdB(uZ!>?I(swItyT!-C7$D>V0IioI?a~kZ`OU`;{ zixxeE%kg{ng?et(JMVKz?WIRW&`O3l{Oq$9kp6uWzwJ>!Uh9pauHkrf!Y;Q^onGyl zo4@T}dM6-tg0H5XYHe)Y&U?`hwTmPm-hom_Ws3yW4jurY{kre5`95KFVLhe@n=gUw?YaN0aff)?Mq9lt^-^PCI4oFsc`dQLe+GgO`KA> z(jFz1^T@7ab+}!81g ze|$~A%gudw5D-a}HO_kHb8w3U0e97v9x(!jvM=%_@Et$PRNM3R#?WO0p=UX!5c_u< zxy!V$_{SL&hRw&DUvI!5Pf8b{r!!!rT&P|4;|Pu4_j0vmI~=xama;Ytc8+bY;xPg^ zdp&l*?8%G&XAvr+h^D#{AdP#^&rTX0C%q&^+ej6uZn|~=q{~9%d=K}f;m5Wq zRmK(<)XR&ODLWr)=RNq!(iRZhF{Bw-+)j<9LH0|-Bb~=$p3gCU~zEqT5$?+EkQfo$!_t{xaRmhB%gJK z-o|sO>0e1Y8E|b`>Pl~uFC@|NOdJ8Usw;^Vg1jf~Cu07>5Nx?<+L<`Xp}+tzddOxh z^Bl!H(Fk_*@LaO(B9{SRjtj%~TXVl9;(m}DV+5lJtDWz(p#;UTq<@<$RpQS@tIMQe z{cDhQ(b)=Q$r<%J?TG@Xbz{BEbMB@o8~vPjKw#FJF|c7GxZyrKFX*#IIKhIkN`nIB zt?f=dEpcJg@67dLNp>!5kXR2?4DGOWbdWi`BUgXg=rcMWNBK1at!NN#d~{J^yE@V~ z;7EBbVvp|ZdB;?_V*2edbZ2z+&!W*h?@1Dnq3-%vBvu~U6IX?}Cvi$XbdIzljN&u%!rocdGEAr>PX3OX9;eqCDsan&P zl4tv7qtalLbnKL~VZz2rUZ!CE%-4P@w6<|43Z>^V%otMAd{zgv zeDTUWGP`PE`Ev`Olw~qEOW$y2=w|M9jny0)yEfNIQGHv72AE64^D0MO1>0CSIe^8M zO6?hGj&rX&YWJ}`Ry!xE*PAJy4?z7a5sk2~HWbG2e)iDkHN>V!Tz&}DD^6MsnO~ge zOS*5<>qX8Ffy#cfn|{Z#kyL);U>zLfn~-Z(jSx?3aW9ITU;Rf8I_#s%!$u@=LDivq zbHAZeEWZW74YG9z?4)QF&z7BX`q-o%`D`aMP8)=2KdC?jmzp*om)SQSl0#L05TM;( zHcT1u2w?~zdO$x*@*cH(B@)Qu5~dy)0b`JV<1v>aNH2)Xi~}Kq2x^LP;QYCMMO+CP z-unf(OUr;hB{!E%_dP4niWYoXFkLl^tiAr-Ky{gtSqSOnINeU_GXnyD=t175fw?i8E`~d`Re8QS4W~j+AL`_S;EUq>n#mFY}WTN9-jPuZ`AQ zZ{tSv2b!sq%1X#t1W$P{hzr_7 z?R*z9K|PGDDuV8m`Ij9UJEKSS9Veng?*SiL&@0lac+&$+0I$$!mG(@G<)gv|9n;d% zAYjyEUT=HHSz$-Q>_JJuSGPQZH1_SiUBuxv(glp6PEGy;Xg-nB_#rC zSODLORX`u51B)0tZ>>X}v+Sy*J+T@6L22yZQfRDK>75hveiV|M8A{c7^ufioY5Snp zyx;`~5S}1OAcweL)qPwIH!eP=5*N2v_WDCmKB910Kd%>Y<~NAWMm`zHnh7^bbYKOJXJ0l?r;QOnX~DtJ3A_1w zKJ5Jm+R6(Es2`xp9!hMj`D>bqXeU+ApefMj)ozZBZ(nL-`HrPfMj+po=8-|Z+N$R4kpZfa$cyJu_7~!Gf0-?c<%iWHQ(1?I94|Vq;9ZyqU7BXL z58b?bl82G4_?90UYMOabFj+U7?)OmD{+(#2_4fcs~Vrj0@rW;Y~mz;sGl&qS>4ah`qk9S zYZ_5`J?GefX|v(Y&iO`xPcg!MfahAfB(L}$f+Zw~$ne$F*z^GQ^zSEKJ@Pekq*8n_ z2i}4aEGYb(vC5W{U#tvM;pKk#d@3yQMQ+j0E$Ea;mW$}5HXX(?{DIq6%3rzprM_*7 z|Fz7;EAWltfJ=13g_XtFM8WPXlQ*P;wQ>?%g^^#?R>$hqW{(@lD?J1&VYxHmOH&+K z)m~zC)l$zKvv`k!{8J^tRViI0mhDO+1$<;SrhJ)6Lw6U_G_A&5t_dHdv~p7jq>ynk8oJqNI2S#LjY zvBGg%b!JSG(3tCU-oEQ1ryIC@ zZ365D7Z>$ko5aSMXS-N4Q=?C zRGkN1mKGsx({o=wTS?UW$lKW8t42zOs3GCQ?LRH0n^Kr7M?~gND+&%>o9)|&hBWSp zyB4NogoIql>3_cdH|&cgt$ySzCuBkQEh_ew7A!}?_iFtT94qICiagdF4H~C=#pD`C zwCh|JJ&)*7*iT8NyicA?!X+Th3ygnc|3B7z1-V9+gb~9AH+s#$C45e_t+n@TgsAh1 zS}}wpp+v-R$DJD9{4^(H^*-E_V>3vkg(`e$d~#CBD+lu2gm=*lSMGo0 zROZzQE?E+1%5YvSg=Wc;an7@*%8`P@dbS~tk&qjZ>MSj_BEhuh(PvxF(MZn97gk#a z=X}6`sBBoToQj%SN3FB|F-4>}>3?kZ&oj0IzF}h7Anqw@O6=;&r}38B#u3*^*ZC(r zJvhMAs-C-tsDow8)D^9A`}V%#Mf9Ru)>s|Hm7n7DF;)bv;e8YNfG1aLeTtDe^WmoW zkNfLq+umPW*z+n;h?7YdgWhdigeVkfN>s)@5hYJTQUuL;doiFaw_@q%3_nDs{Y2>z z9bL!%Di2%bYGLe45hIO>ff*7m{Q6(f#l^d+ERzA!DQBV*r7+4d_GY35`r4mJp^yk| z4k1w^37WPAyCbD*L^vvY>q}?7)l#a4f=>L6A7L=qi#Oig2F;RgkbgT3K7fO{6van` zVU2N?{&>{msKAD@IkPye98*@n{d(38W71zmQn%bPRm@tJ^}w{V4K})QKl^g~Mi5a4 z@F}>+EeoB0(KK8%WBNb?MP;;?8c%y)!~U>UzeC##LAnFXB7FS`zsmzEWj0QC+@F2- zJgg~Pm%G7(w$h5?Nz`R^byPh)JrR~GYX7#X5(QS1LXJAMMFZ($C_1a zZIYk&Hj}kYMU4n&`JW~-Rdy(zCh8~jV-OZ*Ioie`VU%UsJ={e8|1k-`N#Bk1mEH5D z$9R1n5zMMRX|Z|+3AbRv@T%GiYGhP3xpUaS4)?9k8uYZcx~8U^?rkR1q4a%KR8+Fx zV~Ort7Hd(-DgTkJf3)Nc&_j{b!QK_NWH$*vL0Dm^!~wWbZQhgk)x$@;uyT*Ur77b& z=hM>_$(pz&&4`vf>Alrq>esRSnhgIe^3M-GS{wq{d{hUoWt5xnIlJjjvPhkPH!bqR#HiI7Vnz9WnM~k*O$`Gg!jQKvc%d_Li>QSL*DtmD4}>^x50;dmQ`Im zVe(l>p#=nGQ#Ov+If!Nf#TU|3M;+*Nh}?0Xc6pd3cAdVYUeAUcbznKe7qEM<=?XSG zkN?1b{WYN$JzZVOn1{ntkzUSOrjq98r}yZV3_d;kbB1sD0JGA;hpY^Qtu$`WTNMN6 z%x0+>R~45=eGAhym`-Uc$2952BWHOGtw^q&k;ZznzA^D=)`F|uR!HM5KP($j^z#PL zaqZ`%l8M+vjma1hW!0?Z(GNXE#+Po%XBf_a_xB*)ji1)!zI9w%GQgu9jSKZWG!zP? z5DAhq$a}k|Hx9b(cwn;Zl8QvZGx}PZzli^zFS(lw$cv1avVe}4fQ9NQ!&e^H%;y!E z$Lv67l`BePwZeJx{Rrexl`Jp45)fx#2qJlMo7E5COGld&a=WUzCjsLweAk?|DDK=D zS|AF;{n;8k|2&(bw6H$vO#+$~G|kP;gLX3sXY9;Uh}but>cqgVw-U~Gi!1F37w!bz zhVloo@kvWl2nr4}9qJ~G%|tQv5WrfLbE5G7Z1MwF`hbMl&r__G-Tz=^6?>e0W~!>zqE9-amtq_T5U^c!)q1RcRHHS?{CdahZ}j=dYKpNt+gcP_lC8r{^FuYQrN*Q5s<=R z`A6XY`Jv7TEJecddLToHS}sKr%sS&ak9y#9mO4@ZS|&V<;Ghu_6c?vpQ%j=~irD#g z^_Jl#zsFetbCH2cy=s}N0SQ(ir$DBoFO|TJGarHP4vg>)uQRGK53>D>*;NAUm_hWD zn}VOtIPuASB!BJvQfYZ7Ao3qJ|DV4Cla|W8b99J1Dt?z{B=x*Rga1bS|LPx>-x?kn z9RFqZKY#aMKh))c7Z$LPQ~9s|`sX}y0bAu97|rtH->f5E>~oon+E2Q-N&jtkxExn8 z8h+fr>S rEMU9HmEzU^kXTyGSN{JGh20+6 literal 0 HcmV?d00001 diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index ec097a9ed..000000000 --- a/scripts/README.md +++ /dev/null @@ -1,108 +0,0 @@ -# vLLM-omni Testing Scripts - -This directory contains automated testing scripts for vLLM-omni serving functionality. - -## Scripts Overview - -### 1. `test_serving.sh` - Comprehensive Test Suite -Full-featured testing script that performs complete validation of the vLLM-omni serving functionality. - -**Features:** -- Model existence validation -- Environment setup verification -- Import functionality testing -- Server startup and health checks -- Text generation testing -- Performance benchmarking -- API client integration testing -- Comprehensive logging and error handling - -**Usage:** -```bash -# Use default model and port -./scripts/test_serving.sh - -# Use specific model and port -./scripts/test_serving.sh ./models/Qwen3-0.6B 8000 - -# Use HuggingFace model -./scripts/test_serving.sh Qwen/Qwen3-0.6B 8001 - -# Show help -./scripts/test_serving.sh --help -``` - -**Test Coverage:** -- ✅ Model loading and server startup -- ✅ Health and info endpoints -- ✅ Text generation functionality -- ✅ Performance metrics -- ✅ API client integration -- ✅ All imports working correctly - -### 2. `quick_test.sh` - Fast Validation -Lightweight script for quick validation after making changes. - -**Features:** -- Fast import testing -- Basic server startup -- Health endpoint validation -- Simple text generation test -- Retry mechanism for reliability - -**Usage:** -```bash -# Use default port (8000) -./scripts/quick_test.sh - -# Use specific port -./scripts/quick_test.sh 8001 -``` - -**Test Coverage:** -- ✅ Import functionality -- ✅ Server startup -- ✅ Health endpoint -- ✅ Basic text generation - -## Prerequisites - -1. **Conda Environment**: Ensure `vllm_omni` environment is activated -2. **Model Available**: Qwen3-0.6B model should be available in `./models/Qwen3-0.6B/` -3. **Dependencies**: All vLLM-omni dependencies should be installed - -## Environment Setup - -```bash -# Activate conda environment -conda activate vllm_omni - -# Verify installation -python -c "import vllm_omni; print('vLLM-omni ready')" -``` - -## Model Setup - -The scripts expect the Qwen3-0.6B model to be available. You can: - -1. **Use local model**: Place model in `./models/Qwen3-0.6B/` -2. **Use HuggingFace model**: Pass `Qwen/Qwen3-0.6B` as model path -3. **Download model**: Use the `download_models.py` script - -```bash -# Download model using the provided script -python scripts/download_models.py -``` - -## Output and Logging - -### Test Results -- **Success**: Green `[SUCCESS]` messages -- **Info**: Blue `[INFO]` messages -- **Warnings**: Yellow `[WARNING]` messages -- **Errors**: Red `[ERROR]` messages - -### Log Files -- `server.log`: Server startup and runtime logs -- `api_client_test.log`: API client test results -- `simple_usage_test.log`: Simple usage test results diff --git a/scripts/test_serving.sh b/scripts/test_serving.sh deleted file mode 100755 index a9f1803cc..000000000 --- a/scripts/test_serving.sh +++ /dev/null @@ -1,363 +0,0 @@ -#!/bin/bash - -# vLLM-omni Serving Functionality Test Script -# This script tests the complete serving functionality of vLLM-omni -# Usage: ./scripts/test_serving.sh [model_path] [port] - -set -e # Exit on any error - -# Configuration -MODEL_PATH=${1:-"./models/Qwen3-0.6B"} -PORT=${2:-8000} -HOST="localhost" -TIMEOUT=30 -SERVER_STARTUP_WAIT=15 - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Logging functions -log_info() { - echo -e "${BLUE}[INFO]${NC} $1" -} - -log_success() { - echo -e "${GREEN}[SUCCESS]${NC} $1" -} - -log_warning() { - echo -e "${YELLOW}[WARNING]${NC} $1" -} - -log_error() { - echo -e "${RED}[ERROR]${NC} $1" -} - -# Cleanup function -cleanup() { - log_info "Cleaning up..." - if [ ! -z "$SERVER_PID" ]; then - log_info "Stopping server (PID: $SERVER_PID)..." - kill $SERVER_PID 2>/dev/null || true - wait $SERVER_PID 2>/dev/null || true - fi - # Kill any remaining vllm processes - pkill -f "vllm serve" 2>/dev/null || true - log_info "Cleanup completed" -} - -# Set up trap for cleanup on exit -trap cleanup EXIT - -# Check if model exists -check_model() { - log_info "Checking if model exists at: $MODEL_PATH" - if [ ! -d "$MODEL_PATH" ]; then - log_error "Model directory not found: $MODEL_PATH" - log_info "Available models:" - ls -la models/ 2>/dev/null || log_warning "No models directory found" - exit 1 - fi - log_success "Model found: $MODEL_PATH" -} - -# Check if conda environment is activated -check_environment() { - log_info "Checking conda environment..." - if [[ "$CONDA_DEFAULT_ENV" != "vllm_omni" ]]; then - log_warning "vllm_omni conda environment not activated" - log_info "Attempting to activate vllm_omni environment..." - source $(conda info --base)/etc/profile.d/conda.sh - conda activate vllm_omni - if [[ "$CONDA_DEFAULT_ENV" != "vllm_omni" ]]; then - log_error "Failed to activate vllm_omni environment" - exit 1 - fi - fi - log_success "Environment check passed: $CONDA_DEFAULT_ENV" -} - -# Test import functionality -test_imports() { - log_info "Testing imports..." - python -c " -import vllm_omni -from vllm_omni.entrypoints.omni_llm import OmniLLM, AsyncOmniLLM -print('✅ All imports successful') -" || { - log_error "Import test failed" - exit 1 - } - log_success "Import test passed" -} - -# Start the server -start_server() { - log_info "Starting vLLM-omni server on port $PORT..." - log_info "Command: vllm serve $MODEL_PATH --omni --port $PORT" - - # Start server in background - vllm serve "$MODEL_PATH" --omni --port "$PORT" > server.log 2>&1 & - SERVER_PID=$! - - log_info "Server started with PID: $SERVER_PID" - log_info "Waiting $SERVER_STARTUP_WAIT seconds for server to initialize..." - sleep $SERVER_STARTUP_WAIT - - # Check if server is still running - if ! kill -0 $SERVER_PID 2>/dev/null; then - log_error "Server failed to start" - log_info "Server logs:" - cat server.log - exit 1 - fi - - log_success "Server appears to be running" -} - -# Test health endpoint -test_health() { - log_info "Testing health endpoint..." - for attempt in {1..10}; do - local response=$(curl -s -w "%{http_code}" http://$HOST:$PORT/health 2>/dev/null || echo "000") - local http_code="${response: -3}" - local body="${response%???}" - - if [ "$http_code" = "200" ]; then - log_success "Health check passed: $body" - return 0 - fi - - log_warning "Health check attempt $attempt failed (HTTP $http_code). Retrying in 3s..." - sleep 3 - done - - log_error "Health check failed after multiple attempts" - return 1 -} - -# Test info endpoint -test_info() { - log_info "Testing info endpoint..." - local response=$(curl -s -w "%{http_code}" http://$HOST:$PORT/info 2>/dev/null || echo "000") - local http_code="${response: -3}" - local body="${response%???}" - - if [ "$http_code" = "200" ]; then - log_success "Info endpoint working" - echo "$body" | python -m json.tool 2>/dev/null || log_warning "Info response not valid JSON" - else - log_error "Info endpoint failed (HTTP $http_code): $body" - return 1 - fi -} - -# Test text generation -test_generation() { - log_info "Testing text generation..." - - # Test 1: Simple generation - local response=$(curl -s -X POST http://$HOST:$PORT/generate \ - -H "Content-Type: application/json" \ - -d '{"prompts": ["Test the server functionality"], "max_tokens": 20, "temperature": 0.7}' \ - 2>/dev/null || echo "{}") - - if echo "$response" | python -c "import sys, json; data=json.load(sys.stdin); exit(0 if 'outputs' in data and len(data['outputs']) > 0 else 1)" 2>/dev/null; then - log_success "Text generation test passed" - echo "$response" | python -c "import sys, json; data=json.load(sys.stdin); print('Generated text:', data['outputs'][0]['text'][:100] + '...' if len(data['outputs'][0]['text']) > 100 else data['outputs'][0]['text'])" 2>/dev/null - else - log_error "Text generation test failed" - echo "Response: $response" - return 1 - fi -} - -# Test API client example -test_api_client() { - log_info "Testing API client example..." - if [ -f "examples/basic/api_client.py" ]; then - python examples/basic/api_client.py > api_client_test.log 2>&1 || { - log_error "API client test failed" - log_info "API client logs:" - cat api_client_test.log - return 1 - } - log_success "API client test passed" - else - log_warning "API client example not found, skipping" - fi -} - -# Test AR → DiT pipeline example -test_ar_dit_pipeline() { - log_info "Testing AR → DiT diffusers pipeline example..." - - if ! python - 2>/dev/null <<'PY' -import importlib -for pkg in ("torch", "diffusers"): - if importlib.util.find_spec(pkg) is None: - raise ImportError(pkg) -PY - then - log_warning "Required packages for diffusers pipeline not found, skipping AR → DiT test" - return 0 - fi - - if [ ! -f "examples/omni/ar_dit_diffusers.py" ]; then - log_warning "AR → DiT example not found, skipping" - return 0 - fi - - local output_path="logs/ar_dit_pipeline.png" - local log_path="logs/ar_dit_pipeline.log" - rm -f "$output_path" - - local cmd=(python examples/omni/ar_dit_diffusers.py - --prompt "Smoke test prompt of a lighthouse" - --seed 0 - --output "$output_path") - - local env_prefix=() - if [ -n "$AR_MODEL" ]; then - env_prefix+=("AR_MODEL=$AR_MODEL") - fi - if [ -n "$DIT_MODEL" ]; then - env_prefix+=("DIT_MODEL=$DIT_MODEL") - fi - - if ! env "${env_prefix[@]}" "${cmd[@]}" >"$log_path" 2>&1; then - log_error "AR → DiT pipeline test failed" - log_info "AR → DiT logs:" - cat "$log_path" - return 1 - fi - - if [ ! -f "$output_path" ]; then - log_error "AR → DiT pipeline did not produce an image" - log_info "AR → DiT logs:" - cat "$log_path" - return 1 - fi - - log_success "AR → DiT pipeline test passed (output: $output_path)" -} - -# Test simple usage example -test_simple_usage() { - log_info "Testing simple usage example..." - if [ -f "examples/basic/simple_usage.py" ]; then - # Run with timeout to avoid hanging - timeout 60 python examples/basic/simple_usage.py > simple_usage_test.log 2>&1 || { - local exit_code=$? - if [ $exit_code -eq 124 ]; then - log_warning "Simple usage test timed out (60s), but this might be normal for model loading" - else - log_error "Simple usage test failed (exit code: $exit_code)" - log_info "Simple usage logs:" - cat simple_usage_test.log - return 1 - fi - } - log_success "Simple usage test passed" - else - log_warning "Simple usage example not found, skipping" - fi -} - -# Performance test -test_performance() { - log_info "Running performance test..." - - local start_time=$(date +%s) - local response=$(curl -s -X POST http://$HOST:$PORT/generate \ - -H "Content-Type: application/json" \ - -d '{"prompts": ["Performance test prompt"], "max_tokens": 50, "temperature": 0.7}' \ - 2>/dev/null) - local end_time=$(date +%s) - local duration=$((end_time - start_time)) - - if echo "$response" | python -c "import sys, json; data=json.load(sys.stdin); exit(0 if 'outputs' in data else 1)" 2>/dev/null; then - log_success "Performance test passed (${duration}s response time)" - else - log_error "Performance test failed" - return 1 - fi -} - -# Main test function -run_tests() { - log_info "Starting vLLM-omni serving functionality tests..." - log_info "Model: $MODEL_PATH" - log_info "Port: $PORT" - log_info "Host: $HOST" - echo "==========================================" - - # Run all tests - check_model - check_environment - test_imports - start_server - - # Wait a bit more for server to be fully ready - sleep 5 - - test_health - test_info - test_generation - test_performance - test_api_client - test_ar_dit_pipeline - - # Note: Simple usage test is commented out as it starts its own server - # test_simple_usage - - log_success "All tests completed successfully!" - echo "==========================================" - log_info "Test Summary:" - log_info "✅ Model loading and server startup" - log_info "✅ Health and info endpoints" - log_info "✅ Text generation functionality" - log_info "✅ Performance metrics" - log_info "✅ API client integration" - log_info "✅ AR → DiT diffusers pipeline" - log_info "✅ All imports working correctly" -} - -# Show usage -show_usage() { - echo "Usage: $0 [model_path] [port]" - echo "" - echo "Arguments:" - echo " model_path Path to the model directory (default: ./models/Qwen3-0.6B)" - echo " port Port to run the server on (default: 8000)" - echo "" - echo "Examples:" - echo " $0 # Use default model and port" - echo " $0 ./models/Qwen3-0.6B 8001 # Use specific model and port" - echo " $0 Qwen/Qwen3-0.6B 8000 # Use HuggingFace model" -} - -# Main execution -main() { - # Check for help flag - if [[ "$1" == "-h" || "$1" == "--help" ]]; then - show_usage - exit 0 - fi - - # Change to script directory - cd "$(dirname "$0")/.." - - # Create logs directory if it doesn't exist - mkdir -p logs - - # Run tests - run_tests -} - -# Run main function with all arguments -main "$@"