From 8b60d797e15dccb7aee74cc8148e4fb79a1453f1 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Mon, 2 Oct 2023 14:14:30 -0700 Subject: [PATCH] fixing optional param mapping --- litellm/__pycache__/main.cpython-311.pyc | Bin 52814 -> 53167 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 138660 -> 139254 bytes litellm/main.py | 11 ++++---- litellm/tests/test_async_fn.py | 4 +-- litellm/tests/test_completion.py | 7 ++--- litellm/utils.py | 31 +++++++++++++++------- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index fda9a8790cae32cc9748b1bcaf5595c9d732b144..6ebbe2ec9899d6b453a336e2d01d6e0387abca44 100644 GIT binary patch delta 11134 zcmd5iX>=4vdQ~%{ku?!cK!89JhtbJpFyavAvMf|WmOvxXYJ-idJz%i8 zgb@^L6I-n1jUW5oqBU_Q*$v(tR`Trk^1N#U_DdXscOSbO$9Yb6huw9sWA8du)zdxG zJrW=`KQd2LSJ(Gd)pynRef2f(jTtY!Vod#RN{R*0pJ$G@=ehVdQafEqKdk}aNc)RG zgn-l--6qK@8p+3(^9w~I!<2u>fYV+E=M5Ji02k>$`A28`IwONzcDc!KGMo++hs+lY z6oLMee^NR_aG>}YfSmzMC;^#CquVY|PmIBG%F`_i#_X1@94wQ1}(?Op;oP&M)sZ@@)A8p?W zk@Ii@P8&Cpt{3x()04hbBWxGWeHkG4d81z3I9;%diHdXqzyL!WkJBeINTbJImMP_7 zy74ZqI3Za~ieRGieE?fugU`eDKujii-*cFSYOHkk0wGTxwO}jqETZ$|R~rT%brA`O zHf|#UDIZg@hW9byR0*I=$s^iTR7RO+!mAa^Hfk3Vpm@$GJP)={WNGoF0$dN9+W$lhI1KfQlS{37GN8;V;6Sg4D7*SOUl!0 zP-Zg|dvVr8{sk(qi>lD5&ho}n$mv?w8k~X)v2UW_f{7x~fASAf9#Q5lZtbH`u!`9V z1OQa1)!h)J5-P&Zp-j5tPrUAeXxt(#uH?iHj@O>!EK1d^TCBr#VEa%pUD222Tu4`r z?BAcR^oO)7l;~ElQzq@?)f{)gu9@#p=3@tTqS7(rMA-#uR~J>M0D(A5!2zJ(rS$t{ z9nn{Gp4sO#tJ*Q;5*MNJv3Oj_lvgJeqgl9+nIbMkvm%N_6|#s0r$}9u^25a#AgZB> zO43#7H0F(a7!wQan2JNep=8CfQKeVnsMBwfPeP6(uon#5s8*}xEr*k6-xu!3q1hPh z1ys|ks2;O4+oUO54r#5RMk{S<1#={)W~Nt}DY)o(wekk~Re)Ho4uVc~bXvt{DcCy2 z&()G5-CglcG;hohtM{(g@nPYMWO0m{8scUO?RILF!qdDx)RW?Tr zW2RVZ);O_z1vlD>JxaY;=`>qWFNPM5#mOG*J{;I0ode^{>Ri}e*wrwrnu2CjD}vag zQj8WW?w0f|N=-)(D6ceNm*Fy;PdXRTG;V2R7&Wpa0T+{787?bo5|=5GqxM)pUR~%S zUlrJFO&kf}eAFC451uubLJLR8mx@Pi{#Q^dKMfA*eOtrcH&u6f3Y86Mz&Jq< zdO0=VT8);96pW!V%{VE~vIMdsBTDYqp`pC@Da;#%dMiiai* z*e$M$8Y!m=Uw*;TLL(_p#2HA+pOItAryJ#=)`=A~@Oj#;{;zeCQNsn5%yB9etU^Y_Mk&XiG~GLKe;4~-{a^&=hg zY5=9q)J)Ci!SE{kW&ajM`fR07Q?2M^Y_(R~LrEIri3p-X><%bP%vcf?Gm*r!f{1%i zl|-8VpLCL#qYy{U;B3s{n5#hP;fUsbjgEV*Y#!1eb|HnvOw|zp(5b4%ze%&h0w!RtJ;5CdV8CgX znWr(E4LZZnn$1QXR5cs6KDC-W_N2e5x8fI+o8|666h9GDo9NJn5_&C(c3f&!AQWjL z{S2=wXw#T6phS6pvxfJFwcJTn8t7&nv>I0(FrY0`6|Sbwty1;9k%gSa{`pmPk5X!&4Hll)y}W?)+X zI9q&NS!$*(0MEW>_m~H!xgN5^{-|=;ohg2Hlj{n5(qGHLV2WFFmO`>F1=ykGK5}{5 zWsfz$>5ksLUYt-jzaXJVUg@uA_ao9(Wrxu>BJb811^?e&d!nz^GrsL4`(0GtJz;tO z5cSadjeTgN=4dWdWxZnROk`ZGBa*K&l1tG}trG5(zywgQ4q5MW!kbGq;*$y;F=pz- zcT4ALFs++K&0ieuuK*K|U7&!ADsbjW9_mrdH<0AtOvTw37Uu@kM~i4u)V8`Dl-_`J zStv5=^3c4A{%M10Of2Q6LRWra=c`X8(Bl7w61Ynya5x?9=J~rmXMaE;ndj`gxJ_tt z_N5Aj&if4Lw5g3Re)8oU+cf#=9PyB{W{iICrrkMHx}ia}NHrLBAF7x>U)`mM$!YO# zqhcBg>+vW(63mST=H0=K&J~}%Z~Es>NxxiVTc|0rr9|9lwS3!~t-b9C(_sg8wva(IXa0IwbmllYtHB@Wmlb#f1FItvy*G}E>Asf znAodNE7a1&K3bY6EJaVCC;OnZP{&dfyMhbPA74%D$Hiv96EEQ1GPs77{LRv0yf9q- zU)7LXs;U0($AwdUY6;hAopVc(89jvyY0)dDA{)L(R%>)iRZG4#zsOmm@J%nK?DXQW z)*R#)^L;$7I6ZW2To#))(E3}=f^72WB6qIVEZC(z=I-yw*4_KXKaFfHt|RSDt08Oi zAg?Q=YL_JKb+vAZCOOeHfq4HgPg~B{d0{fST$k;=i>26>pr?0l9O#gm1~y5}v{GM7 zuGYI&Y7AkeLX~DzHIFGwAgpuM6av%~ihSCPbG@=Eb#gA;#MNFD-$G5GS?N)2j20hFEnTP}TWO!~ZjN_UP3a=kL*-n=MgN8$kzoXwViewkjBRiu<|f z8SUBEr>A7`Vs}6nF7?4u7b;ut;6?B4Qw2M12bp^0QZnhSvMVyY+W8o_*P2zvthy?5&!1?3CHmh&t0%gSq`ew zyRh(n`3A9u_#P;WdsZdL=)X+~Iub@$D^A`&LDNd|4tiE^m|?eiL?LX2(f=wX?5Io_ zEh_jmenu??OkX^}PN_}xHOC?qaW4x2$8p)qV@n$w&r(8YBJvDYSmMVkDO$a%X-|@u7gn2lPA! z?29;c^t?JeU6deiHB|)k9>n0Upt3zB(>-jRTC!*~%-1+NHHAk(ilI#BQM4D3esucI zzC~G1S|z@#^k;mUS#fhYx!GJ_JCl#0%)^{g49^bzd#P~FgoVSiaPm}(r}GTGHhgg3 zluhAhaJ+i^zK^u=j6(2s=x3kONmyH-@-(ntdT?s34jJhuFi5R*HC|2s69T^^(pv9o zG!mYlCjN7TNpzOH(P}p;-<7__A~rF!m9nFd#gaJPIeB3$4!uY}d!8d(+ZMw=Azh1H z2J{kpn5DIN?F_8EQI`c_`fiFzo`JY{J>VDq&Skzb4=%yhi81vnBxf!5 z+h*CfgWp~DnI(OH{JZrg@m@vYc9u6Q+ZK5BCHXVh3LCPO)@ILr*b-&qOa3G(|#Cmq+#y9c|wb`M{V8xs2b zqQEK%xwCh4`+{dT(M-+zpJL44^25& zOgSIfJ!Dni7lx3Dtm${9t}%rGa49Vj`m4NrV)K=%rB^J?^50cc%ZH|xE2fs^r zjPA=IxkvJYv+wEuyxgaJN`Z!Kicf2nBo zvggkdn)vLSxlJkT{TEeDdF=U#b$Ka!{;Iyw#hxK+)=(t~Rlvpod#kkUDKLf>l0@c{{EtpFO`Um6!i&K41Oo3=_@G*L7e-KO<`9~u>7`%2W6~f!Wo1<0 zVoHF;^MmLmvzSi_It0ovOj@WDfD z@GxswjYN2kHuUgwf5V)T>~xN@QG>u;zzH^bku|J(CY)x?8QLgt?!zY7==a&EnK_bl zS|w*A(eB~F*E5~ELB8Qh^3?0Amwe37lUc)e(b2=5$i{Jp|WhW&Ha z+#u#l3*c?CPhPlGL1+BKr5d;;`1z%AGkibz z!Ve&X$Aag6=!Vsd!|Uri6VGy#CGxQ(&7FT0(%eA0?%RjQrIM((Ivl-c0~j zM<|hZEx_RpCGl=DNY6Z1bk-M2;jgJ6*)iHW@<1q!zgj_pb<}uR3fcH;I!JMjZWvh; zvh!CLuzAio&!&ak>=lJFfZKQO@w0;=4+m$0jNI|Kvw@J8zh(iOGnCD{Ie-%ARW0!ZMZ0#ngioIrCNgUb5dbjM|)Mg!zw;baQwMqW>db(%2 zM!vS#F}b^p4|Q% z!fE8-t8Oy&RJu`0XD=@DTc?xsyy`TVcq1urWzf3A%p0%8A#@%7A=C*E{>lKtxqr$%#qB_1A{o1AHw#r*sUAf_ z0c&+6;^0sINqM;7YBCvL?eyamT#WN(^0b=eKqTII zgn@606VkUhLDZRiqynHqYg^X$YxC!x`Al7f%~zO0EH( zt}{&0MK~mSl*JGlR82MLR9g8f6s0k!+Q3K|xP&jAw%}rF&IYNJFT=$Yg1DG33nPv% zmz6F!#43d}Y=BaX_-tG-<00GY?M9HoElYv53W=6usot(rcJD9g76=m`R98QWMy+7? zWikt+Nl?!Y)lGZ_Mn@4~VGCF~N1pGOiA0!M3zX$r^#f2UCA((nEQJlhIe)uYu8csa zTOA!j!UJmGpau$RGa6I@r9(!QmNn__$guM(rsJYFa zVnbMnVk9(5Ws1=aHnEBPzA`I^U#U@*{QN)+%a_Aum>IE{+9r^ z(6Uir%kW|y*p?`A0oW4wRTNaCCcY*Fu8;X_jm7hn(K6^lfTN9z108SFkWEv`F6dH} zQLvhfqa)CAHy~+@q9S&2_~vV`=93e($=h~!T{UFa&j}@ z?&s^LjnTN(__G23lB+c(j(o9s38)=!iPZ_*OB_O=)o^?=wVgv@D1b&mUnfxIo zY|ts8QsEGMtr-y25sEP$jf$w$m;)j*_2`6L6RoE&kVax`1n#`~yH-irO(Nm0s8}k@9cR$*Vx89-cGauE zc=G)1UXJe!J9N-lw>l-($*m!zo)wEbX0c63!M5>B=-LLZ%`?P}SJn4R2Z-lRiWJy{f zjw;LD#Z?^8pRNe6_`05yIno1)Qy66DO0xG;*!$lIogJS=ogM0#s7nN>epDAubZa#c zc?FBc>O9+&spnp=U;IIK&FTpUt=`6{TUJHXEh~Fp6fkhvX%3>T|MRO=lJ_exM{md+ zukpQ*MzZ;KX*PA(lXT1<-&|EOMh0I^DLbS!$wE<)pVy6z1>|b+n7W8QO0?sJ<3xn3 zG34kX=F=FN{Wi_?T}y`O5&q=g;-g2tR{^*jI3;Cn z6*0+y8q1zHbca@p!YjmXX}Z4FaNks%ur2}a#Jq8+O{(?Ui)hNTQRxTmjF71`XC(~q z4Ydz%km`mvO7+8=qy}9W(Vtp39qOuRsS%-W;kS^&U{z+Imv6HNA*viqe zATwr~gJO;RZp|{+qYy+zrY0=jZmM{a*O<*ElBUMo?7Kk54v;xHv}?FaY8l=wwZex5 zYV01DeX|A@DsD8bDp=-0MF<8eIxwK440y_Gbdm>Fn>Y%9QZv}UmD%4DVecZ2*>#yQ zI?jk`(N#^+7L`I4b&-jtod3^OHF>u)t2V98OgP2P3doa?18ZH5m|2lL|HAH){9vui zznGj5!tL|<#>J+D_*2v?XE^Sbq#}jIv9XxZkk$)0zn9twK-?lT(=)a)z<>ZCte)`?Mqb#~Fq`^46X$RuZ zN*#Dp8#<6DZN?pVbId&RIdZe!Nlvz;e4VqPR5=Uy^B6q}_JjBPXb2taL?DB$6&-q? zALp$ARZq%djHb`8X#PS-%&YvQ>Op?ix{wEX>MkCnxy`j|aUNs~V5FU#Z)>bw%*R!F zI8Q3*A}Q?@_7_9a>f`Fe$|iugx|hEQH-z_;mc{SS=xrhI&U{J|{-?r%$Mbxl;Kc|j zEPnb8e=1~^e`TTFpmhKI*7F(Q0~-h6+={pI#*pl0sGkkZPZR$+EGPf8)^evg2p!>* zRd@ugkr9`LdxmZ-GP9waZjNj?v$fG3Po_=$CHSuTEHQ0dJN!oxaed_HndjzjmpXB0 zY$fsc5G<7|8w9>3C|_vcLxR_)5%)6AC7*80<{C)CraX@um*L!*Z)v}EM&|@P-wtfw z^lypefgQi*(gW*vnmO)gWW%nyz;|{*^*H(SuAgvEkQ2Kbmz)7*2|N^Y))8T#f56)_ z)GhRl`bNB?eZpDt?(Rb?o}fb>hQebJHq!bgTBxmTws4-d^|20e=%FIR9G6cDx*N#% zAL`_8khDE5dEp6ktjEM?&6$0|$gocoo*=$Ge_T373DCQnK(Rg--{(Cv!Vh@+7ZAu+x` z14ul(zadMeNeNSpFdl>#Xl*j^tNj-_t}bxw8-*N)$(8O6j__d0YiJz#kM6t}J)VQ- zI9K2=4ld`oGvpUNvmRkB%$qY0jU4J38l5u@h<(GO!cIzyej=W;3_;7#(6Dfvyw}T{ znffqUduWO~A9&}GJ~Ia2@>h8XeKm%H zB8Ti*q<`?Mq)(EpXB#FP#@d2$r00k;)o%bQPNgJ|AE^wybEMyDabC8cJ9Xw189!4P z7?EBvCp)LabNCDnCZoLNq*KZx2POuTQGr_%kD2^Gs?KQcsYO3FZCpa1Zx^?^==0q* z<=acp&0>ze+$>3au-tI7s^-BW!%vG$Q2%Lp8SQv4y}g(|->+@Yrq5f}7B>4MPfH4Y z|3!UE0eyawxv88!|2?kRNuQr(=8V*#&uY15KYgo9^i_aFWxg^)u*^j36^#7n_SQT) z{EM3AO#1vXwWW|gzp8FA(C2^FGU|6+#*;bdPB!E9PLB2Da>JeF?MZaR?0t=`4Xo0( z(%9Tqk7nEI*s$5QdTVogyum-)9^bl-jp(qnuV9sJ4b3I2(z!%lcXoS2vxBwlNNq`D zm0e4!*|RIXok=#kud%t7wH&BwGqFlfZDMn;%P`xsKBKwUW|-}@ndti=u(bL!1#X=` z$8mwcz=gjzaASd0Pp5L+7lD>%TpY)dy<`pd0eOym$c+*4(s}N!SDrP-b4A4Td_Olw zhM(`{%z<~G|JV{2$C1DM?p4kc*nRCs@%|G)UU-BSY@g6X&Q5_fo~Dg7pCL@p;&CWo z?=nw9-Hq%{o}{gD0^7moXzO)aU|LMk;%O+9e&(HKXzTZAtC{)%8CP; zSq?@p+{hN3Bp<%Cb=`-Q08Q=5tLXS)ByK_PTtfSBZy(Rx(?@jl&uQ@i>3_MN`;xry z@)GVg`Too9f=_6(1qx5P?3dWej0{`!1iAfk1qkTf}2)K8!(}g#ea<>DozuCosY17`?&D{y~zjeiw@GCmsA*|!b$ltg~!4LnD zGX-w{@WVLsr_do_@-IK`<~|5C{w;9%NucTPb{hSA(z(PSqUHNZsX+sKHKVkQpoLZA zQMx^tz^aMJ?g}QcYBI8AT`swl7ffNVsVLb#)jqjCn8seyQGEK8VL}R8*{cnuIHq<^ zZVP6xS0}P&UUpnc3%cm5Kj=oTyvyIbG!o2Y-C4+;f7Nu!AIxU2Imqe==CbM%1Ptb} zYAG^j1j|^Ju`UbnIY2n>3k1dI1{4=R;S9#JA;U< z0h0UrhSVC>CKvccPEzt$2(p(vXdguWus4&8-)D8Sh=DQ&cq#!XVt~Safb^VUPctGz z2@EwnfqGUh+HC!qpcI=0hA(FLTyk-L7OB{0lUfisMc&^x#6=llM1pWc9vLT$V(=0U zM=6=NCykV}rRS7!2dZAtt9sQTr^MYM&?G0v8RHU+Aw+Gn=|?d{8e?XW!)?~VPmspQ zKa7(~AGsOL-Q*gWaRZ~4$6e{zla4)o$1xeyo{ur{;KmYv`)G_Ki}$-(LA%;Ztrdwx zDw*Z+46`_~JAu5gztlQ0v75(sCnc(phiBL-lVlxOuX|Q?kV#h@EQI-jcXFibz+Gdi zSEu|GtR)H;D_IH1AK#ul=Akz9P}^%<=986Rt-n{QsVf=j)hqF>ICTVXX@Vaa^1C&n zIMNc?c4&!Ya#uv-lUzKSL2QwszS0BdP%SV>Dt zo2lFGC7#aF#s$$Kd@@J|`FE$0ggYnaKMB1Xvu3nTiCVMRjKv9$IaS|}ceXmC*1>G{ z$Ft5Jo#gmF`;o4rsb-vwbpPp;5w^%{CuJQLM(%$^MAS#Ne_9SyM?N_%reJgA%wKZS zP!Rdg)$DZqf;tUIaw4B*x$%Vo5sGZw1Kyzza*zj5nwN`JB0i$q@^J%*(M?{w1pJL! z3-OH(|Dxt%yrYMWo+!fzJu2weV^HV8&*_pXxXkd;rdk|x;VU{Sj1CDm=;!MZ)Wb<< zyo8k^%4z3jL_}0-D__ACJg?2$f+j4`KHh>4P(`OpfhgZn%U5{?LZbi-HJ0JcGEq((G9#o1AFmz7>;mABPWfaJNDr|49B?U5ZC0> zu6E22afT)x#K*uF^n3@V@a!_*M4H5+9`QEjNun{CZumXka==Z8eTW_lj%qlI^LUQN z&f+&Bj?v&bd<~qSat|uaxUL<#fUl5DcU{Cn5$EWQOZe1?VtV`v>_$fGzKSGK%#+B( ze22EC7!FYtv@f?~pr(#PiYW|P2#X;-xxUtA)YS=LDP$x|YaQCef5J91tXBnD=VC8( z-v}H2|9J&e$kOBeW(ErzxvoM`MOo-OfGtqk`dKYf_08GMdnuqX`iOCzClA3~~)DUETZA#4hPR7Eo_ zfmy0a)v+tFl6W?{$gjOAl2Y0)lnhl;O^?I(>$z(sUDavTb`0cr?b{nLYnRU>om_e` zB}38i0#pe6v_BlOSv8UMchXr@9jqQ52n*zRMS8ZJTqmf)LC8AQRELAu3RdX;JPSE; z*;Od`b=;C7sbZ}NVLmIwE7lw#fDLOqt{cuu?yiv-qM^NVI?uc~j=h(@7Fw@7Hjc^UJQ_+NXP2=W_X#UIk-uc0-F3nR z$sDzeKfIg?HoK(>J<^1zG$H2rfi`{n^wy?sM?sIHVBIY3C$~_RHtTR<&(QJR_VMc~ zV4%|YnwZQDWE->-(lxtF+_UBvpEYI$Yrq4J&g$Xvh?K6AqGo$vIF;`jZ z)Tpbht)7V%!v*coZFq)V;NanH z7TpR5J#q){LBE6*2=iCG*yR!eqW%WdU;T(j=w5O72luB;JvomwTj{k zgc2C#$9$(o+h!8WaF?Dmi3=qCMy4yL*;a8E&_Lg_iMdko;|Ssz#`Eb*pBs3eo0gUZ ygR2!Uf8MC2rip{Fj~1ti3k(^43GQpc6S9iF?h?y%DWl-HCOi@W?aNH@#Qy*W>l4-h delta 2157 zcmZWpYfw~27QSEKx$}Y<9`lf4P*A|)p@@JBF+kKpOUqJXxd~!od~lH<2FP`clzYb_ zv9{0@F;rS|i4sB(l})UaIwoDonz(rw*XSn1n1p2?akHsi-Q>rlvKz!?WxFr4vX48r zzUe;a>+hV?efxZW&OZ1{yZgAy<&^kS9SGLX>^$W@ddOvUNK%KZ!{0HjBgHU2{yBn? z-yJ#*tf6~*TM(e%^>*V!y8rpZXs6kIdp(u9Tg_=ALPg6^lhot}LUANW3ttF&yGU~i zcjw031r3s#M<)iRb7xU@emP&#h32m~V@`}wuFl=>dQ8%C91@rEn^IL)PCDHnan;l` zJ{;iuf*8M7ooDieav@jF#(cV_*F#tL`+Y?*{cUQz$tj6((&@2&w^FQoRS)ORq@(?= zL@ryTmYB3Tccd1?r0jv82q|6G6kX=a{w*x+chTri{dS)33cje+j9*4iy;zF7=#3YH zSV)zDV%OcVTm`3GaOk#yvKXU+p5u(l7-KeP+`}0wv4~?DZ8-9{yjb^AjCtwA5d}*k z%HX(-CY-3s9JOt!SGAV9rcul0#-jPT7A*vR0FMeN6i1;U(s`nlkgJZ!?N=VM*wS)` zN{55RH0g9XJss(>%`6zwhttcc{%Q)H`*b99Wh;#UQKv>J-%Vr4F3M7M@TOx@>br)0_ z)sbI+Knc{ygTE;Q?vHeTND|N<>G?yZ2kDWs(OG^x#=fv3&W9Q7>mc~>C3a~R{t299 z7qc)Mc!fo?v5nwY?13D72Yke;^UwkOo_(H=A7p&RKADHt6)5bf1t?Td!roel#tdjI z=K%y9c#thoaW;T2*+dveE%+Nd`UF}O#53PMJWMc;?RgRrf<;ErQ@Dz%GLG?9)Mf0DQ*!k721u|1ZbkvGBBRy^J*$ayyQ#I*B1KlG*p~;i?lS zj7uNkGu*=lhViV>x$6`B9e9Hke2NtgTsPYOh_4|t^$V;cxX9l86E52@n>~30i8j9M za1?RG`GhPFG3Q315O@7l|(01O@bQkEB-MrtZa+9gao$GaL6>kC?7KCjMDWt?=@ju-bvKrr3 zA|O}kHlsBRf0}AhrDMF&ylgfbLFLgb=GB~J7`X{Zc5|a*8kMju6lYX^gH$)9=2f~) zC*rE=vMEQ0Y7#A4@l7?IDPyOhlzocN zeBVkO_AQNCvWy!y@mu5iI5K?KJi(sO6;I}{Cvzm2*;OrmQKRG*wqddH!Y$02doQGT zZ+rEQbe_W7`Af2wI>>uTB^=K?oXdjBc~8YMzw*9c;o~~lIMoj?lYhXQP&V)cd)fIP zu@=f^J|1GzZ(|0mH6r_U#^MP~!zQD40=3SK!X)6dadv{=oto|;lH;rsRsrvHkCKB< zbDe+-tPSK0P-D!MNw;&Ipb5CdF3Uu>qSjd9Bnvl*_?if;iAA~b+S9xOZL5GC!WuGx zckEH`Bb(bchFY5Hn|Ey7+M;cIq(!aYuGI?vy_`PkuG^_;_06FeM_VsEn~Xm@NeRAT zDRHF6qU`0id=^R|hrk