From b4efd66a4de8e83c8359bb8bc6eaffb0c85002fc Mon Sep 17 00:00:00 2001 From: John Trujillo Date: Wed, 19 Aug 2026 15:09:47 -0500 Subject: [PATCH 1/4] feat(ai-agent-local): size n_ctx per model and device n_ctx was a fixed 4096. It is now chosen per load from the model's advertised context_length and free RAM (ContextSizePolicy, floor 4096, ceiling 16384), and the native prefill feeds the batch in slices so the larger context cannot overrun it. --- ai-agent-local/libs/v8/llama-v8-release.aar | Bin 2087013 -> 2088226 bytes .../llama-impl/src/main/cpp/llama-android.cpp | 184 +++++++++++++----- .../java/android/llama/cpp/LLamaAndroid.kt | 41 ++-- .../aiagentlocal/backend/LocalLlmBackend.kt | 33 +++- .../aiagentlocal/model/ContextSizePolicy.kt | 61 ++++++ .../aiagentlocal/model/GgufHeaderReader.kt | 9 + .../model/ModelContextResolver.kt | 43 ++++ .../model/ModelMemoryEstimator.kt | 42 ++-- .../settings/LocalLlmSettingsViewModel.kt | 13 +- .../model/ContextSizePolicyTest.kt | 139 +++++++++++++ .../model/ModelContextResolverTest.kt | 58 ++++++ 11 files changed, 537 insertions(+), 86 deletions(-) create mode 100644 ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt create mode 100644 ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt create mode 100644 ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt create mode 100644 ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt diff --git a/ai-agent-local/libs/v8/llama-v8-release.aar b/ai-agent-local/libs/v8/llama-v8-release.aar index 1fc6731852b49763c72f9fff88b21f8989613f7c..3dce8e6d8334d5c6b7c651bb98e77b0fb62f5e82 100644 GIT binary patch delta 139388 zcmV(lK=i-muz#Yuf3Tu2f4?iNNrrX+0GWRP01E&B0Ap-nb8}^LE^1+Nl)7_tW?#SM zn~I%^ZQEAGwrx94Y(BAV+qP{d6;*88ss5dQ&+XCg?R&fXtg+V^d+ag){LcNEYwoQm z0|pNA-xo17F(}CYv|#?(a$>4N^iuNTjEeuiGU$J{k-e$2gO%z3e@2D)KdEeOjqHs6 zH(HecMQh^d_&@Z}|6QMOR65281_HtY0RqDQ|EZUi{pU{TUysQ|9PAv8?5!N^$)xOE z)Qy}OOl*w+fD{!O2UHET@9UhqX^(v}RImXjs-Nen!xarl%72i^ktKt(iO8)~so}g# z;&v17qK|l`2&<~!f1x^s={#%=2Ovd5hd~QX*LGCVXYp}4&p}%fPr7g1`@CoG^8EXJ zp>}B)m{rA=FNYho5JVPGR>ZsXYStz)FMu*|PF3_I*b?M|(yO9lkS4d+QFclQVlHi7 z-Uoj3lD1gztLWGhhd9C9X9_jUSV<~2+@^+IOnXeGtzzxye@sk*P?%s^j)&!39hB%p zvS0ov9n-s82;Kdw(!{OSdbhCWXVcT-i4M2&@1mUv{e8ZI8H3c z3#i0209T|iMiG_?mqsGFQf0Y8;b@OM-h@H0`B77~w2PJ%aBp4^U%MnpFd~Mj-YMGX za7iyph$NE)fB6yd&jyDjfi9c~oMIA3i%`$8pp4zhxHXC+z`bnu9@M>~t?OVh&O3Gr zKZ=cVZ7*~?M@!%2VaRjpKun+YIaj;X#4AH5HH~~nkHPIg@bZg8w1b#OjSYXQNg*Tl z!0b6!2kgC8tJLan$x79<3jfa;xDgTBliPh??BpmXfBcxBf!zVTNUMLyYWb!Va4*=* zf&+CUCA1y;G$cBxq-IroUTYrWd{zimaMR$gKC3c@I*psUJE)@`G;M0 z7m9-`&VXD6z+_5Ci9}~0Q#CR2q>xHpRM-d2y1C4pC&{y?)ilG@!Z6`8wL2^MqQI?;N@DTkLrEi~*)fVQ{d3AY!QAo2w7i^XoRk+1CqcbfuBP zeZn#yC52%!zIVe{wc~F2J8CZSxFidKA-tpt<7NR+>a4 zgkZotj(IS5zV9AczOl?Vh(igdOhF~*REga&*EH7{{ahKrq=G$|grOKIXGCnV?F?oN z=4+S-o{-X4_LVD?(Kq=vC9clN3t!drnYAPa$%0Dp2CtLn%|#Roh}wrl1cEs`3kUP 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

XKaVjy3-X}>h5FHAS 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�*AHNI%Mb@sY2`Tn?rYnj|{q7mkD8sqXz$rl6DHW(x4j z$62ZBeCtwr_LLU(Hk9~_>)FB{%Rpb1>*GNc7&$^qcUc&WTP+)UL56Ve5lWEJUA-eNIlKQz|F^V<{@Qe(v`WRDulpu+ z!z6e!=gvhD^u&#dkG~A{R)iFyvLm?c8L9DPCmcO~ose-l*|r zga@gper)m%vMZf`0QC1dRTPRx%8WVSg3g5aIV!*nq)Xho9Eo%EpB60AO7X+kk~13Jq-UH_7IK7<+EQPp@$* zaoJJ4nE;SH+F0EtkHB>eiod%eby2#$5+UdGx?vD=^?%> zaOIxC*Judgy5EBt{&#Xm<|$u$;m8s#Oa}->AFSwVobs#1LAxH!amm>*EzC4DV|gkb zaw?1ACIlxV9aX#$z}{vWH77Y%K@_94dXpJ^27yDv2c!4wIGt6Jk7&?=dCLz6<#~?w zU3}fhjK07?IQG!J52E~Z4P)AUBf}VXLy}f14p##cvsS8ro*+_YgIKde$dG_R3>TZ@ z8!2ozGI%N2?vwazC9Crrgb*oHL=z3-bq@gv)Bg()O$z<$OM~WS!zC6e6asfqmZC%7;zmG1%<8NRV{{{c z$AY(+mt%bS;Jn~%mgOjOs0xe$p#=6}HTw$qQaP*iw34DhGN=bVPKCJog$hT0 zAn#y8jQ*01L}EXGAb~@zZXw99=Q7s3qn(L6VPLeIP+mnB1Nf-^`P z*RILoJn!!0d!kABm8GcuzED_nj09_-5xrz1U9pqG4e50;I)U~&Vs zc|Adxf4Wz>lQ{4VBwsgJ_rmI_>c4@AnTd|Pff4S@!b@i#*n+6CQLGPCKT%*81sDm! z-w{Q+5_!RdutCqY(*UDPq#X=s#>x>OCPZlo!#=6(*X>%cBtilQ?gVaR=3Bjf0Uuqv z7K5WxGkwn$%W@=A!0hVH9U)9B1c?uO`09)M-y;#4EM^jmSCJyF(qN98i4G@~ zWw=G5;tOl+9 zZuW}?@fQ6w+J_E3O;~oQ?=v(3?d}_hui$@_;9k5vE4}DB2zu=UK6(iFPcCfq5>cyr z6_CV#a!a9ypglF-9fXx2a;gh>`Xhv1}K>MFD;fhH`p=WC%o)rWoi73U(*Q9-x#w6BMuWga8wMp4wGxF~0ynbAJY7KR=_?$~ zS`?Z!S#B>ILZ%1!<|_-ARR)nDg8o~I7bP2WL4S*aGRu;oD+i1N z6!U`)xhxjqmV}BF9VMDQK5Wj)cXnVZ=7&e{Ft98bore$61p_*6=tux+biktM(GJFd z_I%(m!oP<}2}X)A|1T)H;Jg4B^$elk!=wOvis&bGQ2}9H0wmC|8ClYm&<#(vhsW?+ zQWOPRZP2iLrXHvw;+FInos<#gY%<@FF6g4>t`VH1Z3W`*!s!7b&}u6tL95NaN2v#Z zplx|eBFZL1cZ&j}FnakF=~uW+Vvy+0(ku^{Xx>m{@C<k?c$d_xOc&&Z_4@TyTg5iV4y9{?54v;k9-T?g)invC4c! z8}%4naUlcHMtzWhD>Rv&+)*LC9Z|&nNDC>H5{N`e6b)J19bmNfqroTwwBlqH7l9b0 z%72=3=^-Fxl7~?vAf)^XcRU9uwgf1^R?Dh9?tqlA8*`55F%4U+Ytwtt^_;ka z2|o^z1g)T~K4%8JnpT~!a<-T9J#7+`%cTV>Ds44HZ5CI$H7eS`@twVznoIC;{6gu* z8}-&P$&@UIisJhamXo>@vdaOVxM^O~ z-V`OW^~F4t76gVMR>^BzLaJTxX}*675gR7E4ZAGe7%Py=1@PyDddCD)4zk=;!P5lR zArw7g-{mAc`|fFg0t36*G`Sm3npUAdN9;PrI5e6Q#{*wKikxSudvqM@)@Zxzh^3tG z*wtmLUltF|O2^g}&=N!CDc zuYfDQefk&24CR|*+WF#y&eHR~E{0;T>zAt+$@EfT*{@yIRX)_k2>Frj+6?HM-h6tt zJ552a#@a1$#11(~=hECxIA@T^RTIUP2tBV?5LF1$#{45R5nU%lsPQ-RrGKT~pHZR9 zoyU##RazxfYXDkrr0qob;oeySiWEiWcAqs_Lv{6a65DyzK5Kmd7rJw4L%Y8?ku1OE26<3~$B*t@Ql3p96q8$5+( zNrQ{9gqMH}LSfU#_b>kn{NxHq+{ubm@Q;eP;2m#~oN}1O7A_ogm<+8u*O#74V`nG` zY&HBAb4>Dzd2Xo-C-UvHZBP83ta=@0No=8LAN{e}+z2R+SgW}}-A*pn=HXOQA3K{h zpz?t!t&uvt#Gc+-ns|{T%kB3gUh5sv`1>2FdG=(;N zQ8I$3?>-k>q`iR^W^RrV#D?wSCW03p=~XKToU|(=kJic$d6>}0PI-K~`QNtkTRJ7IhdI1j!nwlseeL8Wt*oD~l-qKp!|LQ9 z+AM)LfOzW%=26MKhVjmgi$eKwoAY9MxDf5+pI`BAvyU*}cH@k}2A1rZ$9`GS@2U^X z;wfpos*7P$NqjZmpRnZL{f7H{QcT`?&6)}{mMPOTbeEE=H$wQ+nqqp)jvRHklEezOKZLzOg88uE9jwhu3;;6ytB!N}p z4IOFXqM6`-)UNGvpvKvD6Ik8;hAHHw(7|NVQ{Bj`-JKamh7#}p{+Js}Ex`P|ZY$l( z>(4bjg1Wb z?Uj-39~$bYb0RRErkyye;d)H-6{rQHz45I! z(_`aT(gf|IBV)wFRViwT;y?jB`pU*CUL8!k9>n0Fv2Djt~w z@Iv$Ch}pJfcAlQ(zZmv>qO4@aiS7X>KNMs|N-r&z`=p2XEn1o4jsqdVwJxVIEY#%1 z)bm9X7}ivTKXm+UXbMEspt(@CGePfRa!!iiPLj+Uh7gi*QLE_Q{s8K$wlGu7U6NPg zl6I|YU`9tahBuG9Ed=lc(+~{hGQQ5S3bGdLFSZ#;=aPx48j0;fYO_Dsx#!)o1!{-J0CBC^ zN8McFIijy2SYFQ0ew#6<@0|L%M>zdU-=8ta3Vm|^^qko;b?;bn z7jByoPqaQQlS_h=!@0z$TE!#YCKN`mS@})yrx1sBl!Gd?Hkf>)bl?YU?upVa`Ofh4EYx^At(M9*%Y7U%#jiwcKsQiS@Gxj@^ zq{p`Y`OO%6*IyqsST)9V5iwu~?2r@$@lDc^AtM)VAIFLftmtE^If-g+u?f17>pkuYd72FR( zs{zp#L?EWu-_s}mbh;Ulbcj~~R=PnA=U?AI;)$$Ot11a4_8!=~a~MHU%IQpPjD3+9 zZH&mA_Mkc`fx)kkQsVGEUA7nt>C!$HtX&PK8T(DiYKa`3*rnBw(1tx6(qgKG2yE%^ zA#CyywzT6C)fx$h>q?&rthi8ptoK4+C(seizBKZ6 zqU+rgTLRm+ZxekUFHc*rV5zs0EfS8IGF+tld(nJSz2xjXC-@>`MGe|u7fo7V9SWB7 zg;-0M5-+k^%U#s%?$lRN4rEY2c_;AgI@x|Z*WqY~V!`oa1kypV1-C;?RC6nxDj=(1{^)5dc**|C ziEShkT&S&i&G|3zsuwmd0wD7}G!QM8kdK49!su|n$Zr?gx6s4|{hDs3c>kDW6Zp34?L zUOeNQuXCGBnK5g$pG;ANC4O_rY#OT8l+QKzX`<|7+9+Ojc;aDnt)8GX_)MXaR`A&q zuwHih>*q(TC0k+NjwKr3%!fJ$vr(J8`-s1iDyUhO)37*Z4T=tEDg3-8wfsDaCT3F> zFM@yV5WWeU3{Uhv3>#|MlM4R0%E+`aLUy7M%}}8Z?3RDRoSL#QP%P9J+V*$YR;uMZ zoXSj94k7w1Ut$G+`KUK<pe%nuXhr%u1*sHXd#J{hB}Q;m z_R<>O;i-B>a&v4E(d+SfBE+%Sys*H&$dXHV4-zviIp&;2Ie7(H;(5WEK$bYaD&UR4 z4{wD2@Odetn?X8h)r1!2q?-bLNrh8!bK(3S`r^qK0W*sdc#}r+`!kiE|OjEGgY$ud^?pnOjgH zZQ^}CbkGuj!%k`;+58QUaQ zDv;ZbPrEbx>P4f4+ZyO|W*p^d2oxj%u+XP-*`x?M|`Q>#Bk#1q}v+6Q=rw>$BEBIwp$Q zF1M{ZWcRsjZf7W}jL^AisfnKJt%n)}O|O5qEC%CdhRA8%0IMORohJ>C1ma{w5%)#?zwjk5zfq7;)7%_ygg^1r{^G z1+j;G`FXVM+0cp)K^4H+V2kMHw~{GiF;$XO=1=(&=$FiDi&`a#b#7d$x1Doei@v_DIbOUuc_xZGmsl1Q8l60Gx)$Z?GiN zn3aXbudLX(eu3oMtfcP+k_xz@Y#s9(Xn*0||4b1I3e^e~xpArVhO!H8k4oY>QjKr3hiHW@5v7+G#k?Ii_?4nv6qm29VDYI1gp{_@+T8}3m11oRgtn$7 zBB#Pyb`r$+MQbcOo*I83#FRn$>YDEgaPJw+c!VBth8k=^m*4Jo2-&Jp?eLTFt?wN0|fy48qEy@>!Ypb|J5MD59s24D6x`2OfVomM#(T3J& zvE#?ooY5mW8xK^{fth0oKUA#wH_~>&4K?k7bXRgNrVBCRtQW5K|jRI zQD=_5?T@;27hk-()V8dm!dhM_oyP6Jra5O*6X_z^*<;gA>Xs*>@=^w}*}QQh`w?|j zu9VC@dMhEbCd_+uIcI-^!l6Q=PePX7q&?C zT}|hGWXVyrG}fJu=KDFpb4g@&D|sl;iCpaE-7zDtewO6puo*9y`0Q+I=c(b3E-Gv& zx|mJNY{hF=TS@WCn8_N0Q+tegmzQ>;f|#DL!J2y(qXSZ{m`SIUVCCQt9iG^DN8iNb z=OqC}qM46&u(^M=(JF&^*xYJ5?!hor!@m+VbV1!SHIzzH1w*|w?GMA`B*#Lem(50PEARWEKp;Y3 zS`-X`fooV0eW`+{ioRGjOy*v0o9na9bD#aU}1rt5DEvNGfm^RQu#*G24gck9sJB9)sgb2sy`I_zQo=j6+f^^E zW7!?d?RI~hL-P=%FNUEtKy5(UF&4;1JpmuB&)Q(j^=GXI_J}#T;OvR>#h~=Mc9Fiq zLd?$27Bj&)49sV5j-?jJ=?POu9H#WqNwB-N21dIY`T``F`z|11WImmi9J0)_j1GRK zbnMHPy<>r{BoJ|dD4SYJ%XY^Y{v?MWp{eEQC`f;+JAvg#CMpo5jTG;uFM{zPADY%2 z>(jBW%Q`fS0?{Q2JjaUm=DE)EsTuXrspfylgJ6N=L}ZE5yN1Ie*!IYh=!8xAPV49r zY1}-Qnfd6*aja#z#O!^24%DF;J`3S%9()Rj6NcEuBy(N~VN*yVnPim-jLPb5boE+g zEL?w?o1-!qN)8<_5sdjcK2lF}1D(}8Y63^y%I)9{&livJe>w+%9?7O$u{A;Z@+_)f zd|fbRU)c29Gdl0i;(dxnjys)}%Sui5^o?d;Oq;3Eq1qgqrtr=z@*~S>CkE?eChK^i zSeuNhJ`aCBHvE+vbZ!Qg*9+FfCkA^6>KW1VI&S83Fl6YZd6;8M}4 zoU92K)cWarOr_IoS1nm*}=0c{ z5~kHlmiVDZlWo*OSbX&V3w?@J`lEjq46G)2r~ad>mos0w22oNJH4(H?Vty@i_O{vC zv8d}<)gaPotaLCFoWgKGr1o9KpO>$YMeO0N>@DR~5A05=`rz41!-Gg)MNi$z>Z7gc zNw0998@`MgqugAnTJn5k&05=vwWVvzrNT(-BZ`YWWDUJ8CtVVet`tZhd~9# z7J9MAOsI9Hv#z7hRALvEj^WVP(2JqcMUpb^3s+as2yu>rWf3I55I&3On~+z6Ib9=} zAF^_EM2lW9pV)O5ORXaQ7e^|U`f( z>o80mW;U@s>gZ2h;sV*_Xfne8qF1SDNbew^_hK5*@sSaB573!BUUZKw`RfkBtfO~* zqL-{e0F|kr(yK_>OGd#4+qidFQbu3imJ7nDjg5(;)EtXmLSLkqvq*m?A^N6muud*G z31ZMlinpmsNR|(oSoOpcObH8(7lMz{mz8ewhiS)FkFb!vcUJ2-tvj#H4ud3^2p?p{ z!{5BBj1)RnB%0E;K*(v66xkkXV6UXjVXv!3Z}+w;8rvHPY_+?=MkI2=(OwoS6I>9D zC%qEaL*H_qkbJZ3JobNz>V(duuOg3~snSl=Yp~H-cfy&Wg%~|+ELkzf&Qod1st{dt zk0571p_-wYfkEC6r3`JQ>n62TSb{uqKI_B@M9r5pAgHXcMO?8X+X75+!zwXCt{@Dl zl5(rb0OhiKrI%~R>%Aq~tzeo#Q&R6e7Nl*;V`G1>tn@_ukH~*1!hK|rWD2>$y}}0J z4w5SDC0CGDLZ$GI@R(pEe`}pO-TIT_2dk}MT*IgFeH2g|9^-4m3%;UkT=O6 zfEJU#lQ!}yd7q3xYC7RlvP}33=^|f}QaE!ZfNIQIAKQJ;<1jj#kV`Su22!HVQ$jHz?M@EX_I~f`oIeU0y zWS z_jwII^C7QYkdMouoR#qVUdZ>V&qqdXhJ5}O_+`L;4)yR9d|v={a_PTDMqE&ybD`X3 zI5!)@6;S5GP$xfuIuM~;4WEsS{A+MzL(CV93f;Wg!>@e z4q;<0AuSNLLbw~kP6)dooKZ(e4}=8}_CuIiPl$IVA?|Al$(jhVwiB`$!aWeSK-hjA z$b?X&n}tk*_z8z3x$uo1#a2zNs0gs^`dLN|mxAa};MAzv3m{=Nfc0KOl> zX82w9T__8LdvAww0Png3(g2sJzXfDKI0#`qgohxcw@asgj}T)q$hsHu2Vu{HkVoL| zc8Ck1{vk+fGNc1x5rmr{+yn9U{2cNLzYlak{vaHHuoJ>z2xpWKQurw32f`Kzdw_RC zco=`e!w{xV0iW#`gqR`B=mfbCWbq`_3>{KM!WqAT zdI#RR7xF+iZv7o0LlCAzXq*b=cnade@wR6`F5STOSweykHbS@u!cD)2Hd+Pce-82o zp>aRtopK0G>5x|l%OLE9&;HcYWrg_OUZ_j>J@gXPYbo%T!S;R|-DU=sv}e#x%O0 zGn4_2r@sxSK-dRi*EIUR5;(R7&VLu;t)cG&gSuTq_W_2wh2xtbG_3_){SfL6Lj8Zo zkWX-eiy+(szdJsMbKv)mFF^)`#;+kx8GVLUApNJ(cY+8cBLnJDClDuu!$|@uh2zFl zfwVx_I1b`LSag~|I^nqcbb$;&m^ob_=1U<>Fn~=EHbad*FBd*#a4Yu=E@O z&V_n`FbH8MgiR1SGeI7NJrHJ=L*9SR6UaV#K7`xhcV@OgdLXP^Adq3;J0Ubyz;QFg zKOM@I2l<0Ak}r_m5IPqLWDr7Qfk4FRP+kbjAnb#%9>U7S0%?PA7lfrC=MaQF@O#D* zfgFa=3t`p_C@+K&IG(puAYBj+77C;oc)>ErKYe!63i*d{)5VZq2!jwBD3_{ogVH1SC5Vk^i z0KyIkhao%wp{Wwe31Jq5M<6sqXgUMx8^QtzcR*MQ;Q9_g!UF8T^qy)p0yd|!S8>52%G3{yFl__QWb%46NG&b1|bxyAYYV2*a2ZLg#8d^ zI-nkALp}W;-rfa1s_NPw-{+h>&P)P?Wbz<{On6k2fCw5O(a;PbVtA;CQK?1|VgjPmk#efnJZ!=SA(Ize2t0khhjY8W{sI?U}JgR}y#y=I2LJ zTn*Uzw8TC^`C+Rimh^up_zidl>FxCV1LR)=y+nE$;1a;rb$CX4d%46K@SIwK{D7r^ z({Dll*eEe8;5NWUzzcwFfF+f{cPsb_I2~|U74#Qy3E&pMM!@}mU4TabXVN9Csc0|Y zh*bI>C+GzXc@BI6ECl=n@I2soz>I3>OB&ukkM;rX$KVz@6a9bT1?V51Gq<4q>ENpk z^#eB8Xcsuzw*z?bTngBL=i{%UKLTdgODvl%1lR2R;6A|occ4FjMZX6hA4j=nv>)&|;C{e@LlO(Q z4SGl)*C>SEx1fJt0jeK@|448C2yz8H4%iIX4tN4^)M1nx3A}&_fDM2az&5}Vlu!8+ z@&hgbYzN#ASb+B_e}=pO&-_JVwN$PZd;p9(ihcxW0&E9N1?&Q>1sH0t{Y z@&Q%@mH<|Lit>O*PT>6=7<)d$d*JQ-0`dXOK8gN-^y8xPlFSnJodF z7AdpyfQ5hkWHxgQ=!lZp9zeCf%$fmLN6X9!xEatimJY?sY%}mU<79RMurm?(iqH=S z$}Ai2X9CUyG!2s34#2WxnVkWA6EJcd_-Mv^Ul<^!(I zky$;U$s)5)04;zacheb7;6wQ(6Tu%mcLJ6HCQSlA07n5fES9?%Nd0{AB2%*UZu zfGM*;hXv&U^8rTz76O(6mH-ycmRT)eUXg#y_5;oYJOWq@*ao;7u#=wWpuH2ICxFud z_XExc`~Yw@;03@vfF<*xhq-76U@G8_AEO-LutjJ;;F70hb{w$&C(v8KeQRX4Zz5Q` z9?yUw<=}4~_)-o10j#Y7p8#7n11}=%_MghE2yovEXeVHT4dnn$FQVL}?r#rBYiEBj zsVrF<7-{BdbfTAYVBaMIZv`F))X_WnMqOA8pqmjO&Xj#yGUlpa%-LLHn zy1#KiX>>2{dA~HeOZCEn?mI3ijqY{LFYazLonV6-z@`^#chlzeon8<*$iit1`?>mZ z%3SzPr4>^=Ke5YKLHyygGlsb#vCr{ZpVbWwI{i36tktKAFjN@ySXGRX1?!{-^7Wqow9Z|1E zziKin)xe7P8rDz#!5c!Sy4!#08jls)9r&Jh^H$H-+Wh%vR6kvP(6XZY+b5JZj1Eq( z@a+rqx%Wn0KH}{(q*blczKa~7e{zvtJV((PRuMV(6NaTpOnvbdROZ1O|cDfR%)au)3RWzj7+TDL1;#m^iVQ1C8 zo9)B1>0X{uJMxe(>gDgRhg4=Y%B=o3$`CzoqD&jg5iqByX_C@WINId z>a@F@g&te@(CNW2k$@G5m*P&(~Nhmco(J3NK*deNIUXs zV1Cm53wYPChw&rT0k&1%tT(R40{xSwC!@m9=Ktuv8=QEXhqM!R?Y?1uoHO-EmUKU8 zw98ZS?7-pGbzhlj5_9S#Mm3PG9!I%?UupL=PxpVNr%Xoy^(Xq+Q1!2Z z^jS}Tn(5n}j3vI$)bI0vi8Gku1%;=nPj4dqK4yZbfa>_po9M(sPsLB>go4^p{IkCo(|0lkcBf^I885&Sx$^*Mi?DAH?0p^puq{!oRok;jGK=wDXfUrCPpkoUwtG`P16wf2B z58fB+^+Kfldysz#ob$q<`F+e2*Qew3!M48M{62sBBw?%F4w6d>;KAXfTbdQEpH&>Bu- zoWxp$F1AX={<_FDF*H9ebaF!Il*G`fNukq{L+?uoy?;pP1H+UOSZNgU3RSq6VN=4U zhE0D9yD#kium`mGr!V-CD0#mfOY~(Rt!1Dj?gfR-nRyfSk@v&&%=FbA>IbWVqclkp zcSw7DUrk1u_gn30wC4Vb{*Q8JP|n&dTP~Z>{IJl;s;otaq6FE|HssG3B>BdYyp~dL z7o&V?KlDlDD--rsm#@29l5UJbzBdPHvMqn`)h)ec}l9z%%R)$zx}4-qxz%Z6!Q=`qTX0{|*ny`aJN= z93%O}w)8Q{e56I{(rCTY;+HQKX`^&$q+{7gOF`PO0KJ{&qhs@F9TfTW^ChdbvPrtM z%}7i2tAo~16UJ!$tuS~WqOvW>mpOk%^2U5r_Jo#pv$E9xLSh78>RC^^B(L_-6HPAJ zDA$Z~wLO-j{_CS((HSdrYbE|>PM%bx_KY!38CiPlckS9G@|uBi64 zH_9|gXK|>K?uW7-AC~AJ3iS{2e4nS*o=Wl9cQb^Sn&TaJgUMmDzZ^);AJBjLc24g) zavu4jERy&8I$UpK!3#_8WmA#QihKoHS+eQbNNcwE`5A(bt95Pj89z#5#hPrO|3|9P zZQrTR9ms2%AbDeZ^0W6LEh<+M-v9})%}eywIKa<7kFxVoc5{%ja;dH;UMIvsPx2-4 zO|@Wgv9d+-i;SoFK8vxS2zY<2Qv$~VKL3SxtMM*yKF1p|`0$Tpv=3#rO_RhoL<0TI zA|H2?#L&ZxFX>wsaGe3J^F6k4pA@W38S$Xu{=hbok3oACw%jj?yWo5B)0O#BfTtcX z^CbNKdf;n+KoZ};>M=%Z?-d=j5)oHC{_okeJd`={c<(li z>{ki$s)auOyUu=1*V})uX?g=jw7rS4(+dAR+S+K3P2u;mw~+(U-wGw~cUMX0XfMw3 z!rsS+eB|rYl_h!$k(T zp8p=L*(fu8*7xIWG4htplDyxpBHorE%{lAlyygBc@+HicSgU`(4tv);s{Dqcnf_** zkNM|;ryh73gC=CGWI;Nx8s(BI5N}HX_4&A#K2~{2j}QM7E1IXbl}Vr@(u`POqr}$= z18vhZy=^j<`aJnea2n_PJmvd575opMTa6RDnB)RX_x|J{Dd{Xf)GyIo@Yd-VUxg8P4egW;FI8t6ySyXklr8RQ-H zza@AV@@ns6NiFgXdsXs&=bp+oAkFeU%C;h35%PJCqmi9HgS5h(lJEMQu+!7^{h6$W#_oL+k^49M5o$m-4in@1eHd0GVK-vyJnn!5)^l28PmFe0+>vRQ3 zYe8CGuz21(F25PzvlF#`NdbemZqQ0KNi5-Zi)uE6ozKfw2~wX)uoWMVyr z?i6nP56QCzdy{n?zEY%r?9rLy@(13kUr5|X_2_^2X8gC~7rpCvBl5lT3vI4k)14OD z8;i6ezkbJ8Gd*+m#7^D(J)ax>0py5at*d)KPB2@eycxuP&wYd@a>m3sNBuGEeFCzKGBi#`-ALE_CapYHsqlLcQd`_`Q z4my9QNb#=a7TAK{pwG%T=U+x3|9tj2Q4-m#Ex=dMB=PImd+IxUF!5c2R)<@y}fe= zMFDdLeEk=h}4@t*m2iSN1U zss48Y>M!nX)jgm(vM24RtLq=o_nzlBxO{vu1=7vO|1^w;p9YTcq=VD(&hn{u?I4Ix zkrC9Vs7ATfCxZJ8d+@I0#Lazp!f^!o=p*g^ILKzSN73JfmR9*{=|6u3 zjbt-Mq=SwxG0qAcB{yF-X24Stuxd?1G1 zFYY70oB^H@7lQk1Y&gcAAn%B0NqCopcdM1&c$TdM;~Ag-98TW`4a84ozTx_tOU1O-neaO(iIo9VG{@-*{}gp9!bQ zl$&g47VCe&X$8(~pW} z+kt$U@!d4=^)I9qAdT<8B^s!1{(mR!jgt8% zb9mmHjFifBZJ-o9(nduQKUCdGYXvfEku^NigYM!~3T0tYJScyN1=QvbQ2xvy*=Ilh zCrJCmFYP?ijvy^hOCud1quzxyzOPVj@MVscXBhG{C-BsXD zq*--oL`xOY%8+)!(;swJVTX|XYMrF{5bFt=Jt>6m2=EL`>24q2|BSQ(r0M5-I_aFC zE{$ZZjsYzxo-u#twm>VQ$(`n=GPJx_kGulu<*|e>#YVX?AZeO^O1^J`pqI`s77X!i z!+xYq8=~1?%{ClC+RULC3qx+Ik6sTwAy6exc;cmmu^5MMm05n|_rsML5gZrk&wSw8 za;IjqIH6^HjMdlL+Q2Au!n^7p}|)XKq7F)>$F1YGY-(v4Ro0h^|USA{l~=#gmt64A2< zINrS1<7YSv8I=oRk!FkZ)ug*EFeVFJ z3S8}%qV)^v6Z_^1o~aLb>+;Xp&hX`JY(vt_g+E`OSrp5%uruUj6A|jyNT7Pa1tC+%Ju6dLi(ZEQ8NR z^8PO`-jd*6Ya8_ppTkGgR{ALUw3QldFMDxpk$N^hXJoPhfvn@ay8wJitD)C~Z?S(D zUoWHJ%peOJ!j{mv&cb!#yr}wswP#)P%Jt2lwuEreXGC{Y&|DDN0Bi3$!s!ZB60%F5 z09VU1jL&zdSIdLyC0~Kpt;FT&pEQ1@&}Vp`rF)Zr=Y21p;C8^nF4_+1V+Di};OE+b z??N@>pW9Vm@Zz&7{*CmUkjf;zRlI*~JfX9_?*P~N8sH&W&hz5hBKs=X4o$%lNH1g$ z>vgs+1mjNr3*tPw`hXYD%|~f5rCA^B3>ew-nZQ}HRh-#YqFBYf*MoE#vFx z>NgvDEL-ANmfF&avI#GtzffELxS^ZBH*ZTT=W-8Y!7w=AsV_6W&qCeq#o2$_3x5jf zjD0ZvkY23@&g$)mPpFO01!<#q(!g(G$Cwu|cTf0QfG=-{xQ9TU>cv+dwA~&GH~qjR05zh!)1 zfoksN|4qmCuHb_>;oAm$+n^jD^rQa$eR&ntHyE!-p6$SQ;Y0K<@{vCE;@i@TKXXAP zn-N5w6#r)f9zUkd3*74M$b) ztAMZIQ_UZL!HX|w^ya^FoXXQZm(~;F47R%XX13%)fbAe3j^Bs*rRKxs1m`XFlM%=l z@)hG}($rhM`Ffazi}Zh4AN9^_14n7QW=jWl+vi^7kr&d#d1IP0{Qx)%F9{!0y|n&& z%7X=!2Te8oFH`xIErIER*Cl;nTdxQ`QfIFZ%4>eE9r>!i)AHRLJRixV8Tp({68_=s z-h5kv+OAqUq3mnB__;3Fm?cKBpG=JpUYF6kRax{cey)w~F^zu^XGYbIvY_QiKj$M~ zeLt}Vs~+>_+ZQ-P&NpD}lXTl)NoV%-qq|BaR!TbaOK zFIR-JnW++=Cs4oXu`I2o`q+G;ZwJa|r)l&Z4o)A*=!5<=_bZ8b@HgIk*1#C4TS&Sq zGydVxv&d-lw=9WO(-^tVi>Iv@+hj7*4NXDxjA)}fZa;sRD6t|gPcP1%=0}JR{?jAk zUIXAckteZYl0iQ&o*;3c7B}pde4{{J+|UVJ&PihLs`}O1-e^)r1evqp{XYh_JYSQ~ z@74yD579m!`L-cnBl&$hz4=;ur2Pc<)PmB!kM91xU*h*vsIRZ>mUZw!sEbGaem)=H z*9SbQkAQyxMAHjiJo|dUGa`iSk{=#E|6zjtoUQR-anC#`rZbzfHTgZX_J1Y6M&Qbu zBk?&Zb$IXcvj&kLzt;qKO!FkZj;~%{(`&y`c1VF8N3%Kkv9Me7H9q`tO;A4YbM16i z^T!gilJ5O_O|P`GAhZ*n{lLQ(i}UendGB~KdeDDi7KgEKiAMJW!Re-VsdR_)GR=;S z^X9v`k3qZgf;a+H@9H>l*DbGC30^Nh*NuE-o_rmvd(77oC+^1O`Hlt8$LIBtZ$6km zozF>m^If>fd{QaRX86x1@pavJy0={H-&KF-#nl|V4-qq({kss?!z%ii%d-+oBAUv* zc!Gb}2QN)~Bwq{hPmc|6rMs^;ORU5|aj+LxTQ9!CK9%mF=_&rFd$3=USQOpCHQbA{ zxBFo7LwmRnrikQEXEb+6{GKs2#)~ufDvO4&LH64zDBR5p{u>A>ndX~MppN-(NX*IC zEq-$II=p1>54s=Gs1yfHCw-%Pzmt9gJs^Mo?7zJA+1htK5V-an zl2{e#^}RR2rC|z@gWEc~_q^=`&DO;stL1li)XfhKBIDCNIuj z`cj#HkM+j)gM_ts))AK~_`Nq26+dChS>^BrrU0yF?b( z*Uz!qHpS##10lh4+|7=#~^X~AmtYWtFpl_EEj1 zVT3amxGk<5>)vnpBd@pnnd*No;@9(8vQ&wUNoCd4p$yOO-5HZHmE>?{;TY zyK}}G3`y4(d+kLMl2zyd=gv!!>1kJG0UenS+qeTsj!wE-v5*iL*0 zuc!_1pItAYeUwgeO1(EG%Fv(L_1APO@K(VXiBWD$t`4`;Cdr_HgUne;W(jAD@b~ zHN;t5or>gW4`;3x$g((;HGUXoaitM7T3lyCSfg8Eu0!BCbR^v%SzORv8|3F0!s=I~ z4Y0UUq@0iILs^DdWuphHtY92)Q=U_b+0pjf-Qu|w64EcYW!`YZN#p1Gtv&NIq zw}^1uTNcrX!tVS*iev86+X9^7|;hGvB|B5c2)N^v%# zLo!(GdRh{DphbUALkjdQ8Fanpc5fM+9c2R@t+^RFwou=+3%SQ{wKan_190lgpM*{Z zqm^XoN-4k$Y}F9&@p__gkw39<=chQraH=#kM}uvpH^Y58*Z??os-5c&Z*c`mjk@$ zM+I%r548`geMz=t!6s$Iv+XmS<@GaM?yBgQ6&V9SdkTl`vINbV@s^#HPQC^l_vo#)0VD3h(o0(Wf5+ z?sJNDMopL{YYF=OPV{@Sd8x>2@0%2zLv}`C1#6Knjq*yqdEdjkDN?L)aV+C_R}CM&y}Ic|t%Z-p3AzP5;mpKCZg2CCh(+cR6HxbnpHMJ7bR?6rBSbHdq$) z)lr?yk3QJ1ySUv%+rq6go~1S`iRrbnT0=Zsb;UiV4FE**;()V%kD9xht&3O zP$#wRYruBM_AKml2g)r%zd9dbIj~qNf4k3(3CGNkcm7XvU2~-8>vl_<6Wf#+2k9P_ zX<>hCYL=|z6EE-m(yZ)#2>q*A>szV2n9YtpXMcUXy*$zL|*xSM*0ya|7Y$R+I z*PYf7n;r-I&fR!Y8(Vn#!y?_2HU=~`$#KFqXJ*)T!H;?!c;;2d3OxTkf#)|fcCjA5 zjx~DcV|se(ue%HCsLhoM+HAC6eVoSINZ8&!u)VVFQM9{LksYLq?V66X!>)h7O1wlL zARVM}g~m(uja**WW#mO$E@)%MzFg}MIsZ??7h8vNZO={IOT25JO66lAV`=Zn%G|x} zLm7?FdpBvgukbc{@W(n-yTE@Xgf;2#U&x)G#>b@jS~<=~ODgY!9zM1qB%^mUKJqe5 zwRv!>St5_VJ)SX={5M@)t+{^}erV(T1^zuquL2&b`ySMN1w3fi_iKszXdLXoec&sN zi_@TIQ_wdQF7s^S1$aB-8D?@%3>E!%L4VkbXxNPy$iT$=@{hFfFEw89e|IEnOo_D4 zxU4AYB%4XpZqQ(kWXs8qSm=z7Qk$z2&8cj8`i(ED)8Kol2KHbC#)5w|JbT)szEzVr z8-7>9TbmMd0D1fB@3zJN=J`Y+uLSrH@#%e^A$u*`Mgbm_*>aU_oI(C})1m6b+j+ZL zx;ca`uR(hc%5jVDleiu1md}-hG&F~)yGM@}hu_+xwHP-k-(Yb2h;<2PiQPI61Y?=SJ&r*2D#R<{Xt z$EN=a_5Ks}XQ1EI%JDXoHRQ( zF_g>FM@O1dxlS}!>GbhTtdBl6hxq7YYi{RgTeQEfmBev8zp8)gS+DCAKRo$&*hrr} zdfby zd#Yo&^wim*@>72|)+zR`Wg!@ILm{g$$SfRvNwwd2ALGyahNF+6KV1jEeml={AU~dX zBRj4t;pj_Y>6ewzbf*#md#5;DNN-S*oEt#TXfv*P+}&dEjD-9jIIpoJLTx8d*R524 zJk2%e+L|VCp4zfg3WuFU+_7<%(%>(YNjbYA5Bt zqP_b#jP-ZJ7J7IyK;unZ54;(MJSIQh?9q7Rq4gB{@M+|Q&!h1{>gEISU?TBA*?TJ9 zIzE3CxY%`fhEF>`V7Bcj`&Z!9w_zt_XgM$1K=Saf?`PkmzO%?vetAPl3*- zVvLD^E>hpH15!*w{ezaa=)J1-7X#i6pHP$>MN3|W#mN%h%~Ok#bD_iYpwGFP^OA=e z7A6-VZA$Z;;>t`s)?kAPP-zoMm*k6rLR z7275Joj@$zzRcoUnagaG(GIm@ma`Z!h{3>w?afT%ws%OFb;iR+%~qxk02s&=}AI*5%4|hNjIf)d~ry(Al>RoA8`lI9~Gqi5lFkF zwZFut{V|RZzxFdcQ(G7Lwe^|-x`luA`F`!{H2Ajbg6Da@nU_0npmv$kAMDh;iQt5i~E$YL0uCsrYd0FZN z#5J$?u`i_Z+o8)SPj%l;dJG)9hA`VG{BD+I+Z}*3j@gw$;j4s-*brl#t@D9=jDPoH z9Gryl@E(kddGK2%+RqNn#dta4sju(+a0#C$)aY%|=zRwDDOxOgN$Vp?S|5s}_!M@k znz1HT`;Bsqo_M+)wrkZ!k@tTZ#%?`r6A*LVx{}qd-$-%ce}N_mw8?hw93Omwc!^zz z!yoxHS0BrBeGGnG!*5RCEfeg{-IC1(-(Xu`)%l}-k`pv=9>NE88H!V#Jnq4BEK_Tw zBJwd}9T!pGhtU*6S)&h5Vy=c4*@2J3EIfW+Xk@N5F2=l-sG8| zb78#opP!@ngoRsYTv0;O$=`D#F1e)0=@hFx4t&I?RU0f@f3ji2R-)IOKw~y@G1?KV zTE~Av*Bz8wwzh3hx4%Go4nBwQ`Ji}54LyfZ{&+_<{q8G%lYW0Te7pXbHJYAPM+KhC zF;-jSn2X|&b|ohLW7Ow_j~Ksx{V|HeRwGX}_Cb{pPWgs zxhuq6tKRROAd9&q*FcJY0mXcfelCe*=PCaU%InK|=6N224(zL-IGyC6*e?$yT?pkq zZ2|aSt;Oc2!kOz3Vj~M*7m*zkNuEZFYXZT(7FP~I^n>vm#asyDoksZH`&OdOMQHQk z3Ysqwx{$e1*zRT-F-D^00L{@)D5>4YoMdY~zPjM)y#YR7Q!l((lS z-Uc7Rb`rSu)7S=mqWM}2Y{gTk$J6Gw@tg25;EUg={YHFaBK^c~%0H(<$j%#EE5y@# zzz5RNiHNB^^C)IVm=1@c;b7mnn=Zf)(et|252uIM?&YlZVZ1v#^xdau9_SMMKbiw_ z63sLo0XDqy$_xpAz6!0ERA2nX3bDS0F-*EO`3mt+^D(ZHJW-$eR*cPn*xN|!AIL-N zE~$97;7=W#lKd3fV?a8^(Z2*8U+ZvuNjQ*);%ZuRNx|=b(Gla&K581%Bwd`on{~q4ItZUmg{QkA>xmIf{*|sZ>l06pdd!G1MwM`UrWl3yBJ^1TQzo$E9_Ag63 z06nHRD#Ut!rzfr@I``=6_QbG%aJl2%N(i58>sl6paUl}+pbv2N1+V+@Ikzw4rL=r) z&WCJ|M_;MGAx?F4B0jwW8C<6L6n*}4s~C^eIe9LFWXXD7V&mYCtRcPY?1wRN*CSaU zN^C6G!}sEBhEUi6iDe;=i{g2ML3<8mE`6EjzY8CKXMQkZ4aM7Oi=v}0BW}vMu~W?$ zoNK4G)}rsR*1FOv)>`5F>}#4E$7OG-3Uf9g{dW;UZ-ngQ9qL{ocj^O&jjX_hn4991 zyHK|6R(2qs<{m29QO*xboNYSkH1M%!!kjb))LVry>0@$_;m8J$#Zf)c?*9i+!h}b{x9qF4)iMNN~K3 zbhCxMm77KU!uVInE*=7(8rGU0aw$oU)OeP8Sz=8z|I^Ud^7b{-7tj$ON_IHju?gkd z;bVdyj+ZK#y&7ZZRh}o&!FhvN>?G=;InsWA;7QKnF`3qR%;vh)a=`Kz+2!GV6XZZ` zxzNZoFtW(R&K?R)b#qX?ApsWO=)xGAR>dWfS>=+dwl5 zXSO2J!w6=hHa05b?a1R4eVuq}aA+7pKzWkr+z!ok%V;n&<(WKntnRMazK>~ht(UoTVvlFTEpW4&wMjW z=W{b>;QRjz^?#1?2M=X*Ob*f3XT13$_*~V;rSA>iy_Ko+>ozYwy%I)*a;ZZvA z1@Ri!4VrJ`_%f2cbIRVbPx#Kojg^>xiQ2$*xHZzK9gOk0Q!zSdETHlp`_fu2_`6eP7d^bSM(1CDy9^l- z|4-okHaYe%{Iy0gZ;_C$z@J`g6|ur#@bd4-^IOQ>gY$Rg+BgqifMh%rd1)?QO|Tp= zt#2^)5%Y=NG7=HI`O1&pJ(^zBm2*EWeJ6a6SMI2;`%xd(NbT^n zL6H&;rz%Pft^I}?{!!;s->@)$O;-{eU!os9r18L0)=YgF_Tg^i31>ofPV`yNd*0W> zSV599pvEjEb(lu)s3TwV6_TZ5>bM5Hl^EMSICmPWJ4hBSvhb&BZnz65=17&)nt>P1 znV$5+UG9QI8!dZV@a{did3^hwv>qn!J=xDXz775IB>cY3sKa{Qow0y_)<)6)W~07C zDAxeH6T4>Zerne`x_wiI{d@RHD3z-f%bARNy1phTtmKZ|JCNsJ^i;?^6S5)KkT*t zPU=Zt#r*faD&U}Yytjd06XDy&T8Y0q4V|EU8T+ZNkY$+GR#n&5vm1i9^{WltZ9VC= zpK8x4C zHgNwsz4L(w;P2cIzvn*qKhxj`O%>~6idZxDFSje4$|X6{Lj!TXhrU-&b_MUq4>9A9 z_OT4o<}FhAm5K?rS2pk~*iGa^#Nm&&w$r?042`)MYbY71ZCH@w6XI z)Y*sXR0=cg$`ekS-|LKE2l$>6)Ca$$(Fi}=5zWSU@?VF~+_he#xjxQjmn~VeXV8c^ z{5H_)q4&+*7W+!j3x9is6#EkGO{x2XAI<*_LB5A z?eALn@Jrv4Emm(#+^VcMY_Fdu9ernmSgZM*%9m%M&56AH$9Nu$@`FKF{rl2U=%%Zy zA3JabvBfWSd~QX)#=oz{_#fL*6c4#5Kgx9cdX4=}lrd=ZSHt&U+IPTK+!b3}m!l+g3`g4I ziY2QZV=w7|DkUA3L)lw%F)p5jA6^6c*bUkPK{h?fL38PwHi-2d@;QrTc9_Q9DZukN z#w@cE(}6J&<8j>Ko#E`Q6#UlNF!+37+Inz*qGRTI@*6BJ(g%_~=>qBdaXC7w8sqw< zJFDvqsjR^5R_*Qwm{&J8qFe*o>EVe3GEDDD(Oc_gPlUgp$qHuAW*0XC zNB%nVLucQYYc7=~q`*iOkwF;hX5&M|p9RseoUnaY;ispKGoD@%e)uFEM-iuN%Gnd|$ zw0!1nqP(2v?U7=P{3LHHn#0Cw~t*wYypZyvP6zVh+LBiBgC zmA7FoZ$s8XO;-oUZmpxbuVcLZ__F)uE3n&Lh+{l`_8Par2@bYi^uKFme2mV2BAr6N z9ak>1HJ&=I;@zFJKM;MZ0WrA|JS`UWWR-_?>)6-2d^`?P9&^?st+DbkXMxNb8ruW@8R+~eo@1ieSZ;61#G2m)z*C5;>MIj9fAMbn>#!?goid59QFfG( zulSf4$AD*D8J~M-RUt!}_SeRL2syn0UdWY}y|i8^DZc(I`L5L0Pn2=nli|}p+l5cD zyiAN0k20~|-*8gMx!B0YdU!Oeb<2c9lpY~cB9UuL9_WmzWfBK)y`@usx@@t~> zbhLR2{Km;oFnhj%xmIyMB-RlH`hW7Q!skXFE)(OM(5)w&hB7h6s$Yh~2b$#!#q(_< z2H?EDr%c#9&hOoEHk2E85PBWL_oxc}J*d;)@nw7s&1*x{%fg0#j6nYUewMcr_}oT< z;~~-?g~oJ?i}pQSs|>gE{XU2R$j?BG;`palclqMG1ih&5vvufeX6V&Ki>qF?j&Crc z%uw0J=Li8WmvxV8iTK?WWlebxx6jxvs~A9(0FCp1bbU$OLjYGCclGhQxSNAzT#TggPg3n zvhDafvCo!#_v-IN|J5-i}s8vI4<}c-xDAGWei-w=04bjFb7ij__r* z^pi%|UbKCDkarTj!&o?07Ct-e?Hz@`+ch6L)X&d$tP}D>{LbYv3(r45o}u^~g1;pE z72uEWtA}l(vgD6dgWsg%siABf>2@)oKP|howNiNr*>3XH2RbLM)B47D;bRjuysGBs zhxyS~xlY)B1itoD6XZY9-^xwXIG*JFWw0at@hL8P{_JU|Qc>hP*Nqrj8 zcO`u6CrJB$y2toK%lF=6d~WUk)L`a_&4G3b5z8K2Jk?#J*KT89nTcnFkJCC+30YqJKL*bJiHcRI+K{PZrs&v_876ZOUxf9IA*S+x$VqM-?^SR@BGKXWVYf|_|C-kq0Dx&QmoIOM*a7%qy2Lh zJDm}rIXDU9aQ>e}c`A42b#Z=YCsRAq8m%KmX>_*0t`VJ)eso$9L&bA_eFyYO&?VW<_rKGB zc^Aa8oqP|5l-`0d#rz;!UI7|kGBR7fWSzmswOJOs!Bzeu?CnuEd@~N3p*65}nI(fAuZZmkNDC{$oarg;zl%`Cw@;RoA7{nVZ|##f89|Ic8JcOv(A% z*T9E(jJ>LX^{>8#WwwK#G=GyITVJGqvQGCm-?HoF$8tdbscYrO$Pb`3$HQbB(%D6E zZYS39mo;L%{W-?QYQzxLL=Swz=h5HP(D)ko|7*;lYz^(vzw&4<_&{rYA82cRCK{W- zpM#ty7l8ZH+V1Ci_&dyMwmrne-WFE`?UnG|+Y(3T2t&lVHImzEb_I*gyZG4 zJbu}yuF>}K$lZ2Vtb=#wXOKs^R`*ZW`qf*8daZe`bwTvuFK+kC2FN^rO=XR#u)!nt zKJ(WUX~Aoe3*P0354rSFu%%r-@e_-M-d$n7k1)X2r} zPWfn&WaQ6N@S9*HyCr#ND7y$>umJJI(Wz3zCh|?F4|O00n1}SKh7ao&+YQ_Mpw7K( z7CUbXLCi*T$$&czkSE1|Bq&SeB2|lPr=)hID0Iy#VmOQwks*|ZzKhsmvt-z`6R{Ef z?x)LNFNyp`l5hT<{)*Wt&dbF(Zd=Rea3gV{0-IQ*oL&hRe3IY=KIG6A#M$!Jq3I`OsDrLc=xYl7JUXW$vs=y0X5D#qf(Bo zNmW#%xq>a9%WCVyJf_J(SIr|%Ya&|g+FsHk(4(eU4oH$Ay+7AUW{aWv{O$ft&W;i9 zLisuvbQ?5XUn6{fN}=n_=Jt6uIsUjtTQAV+r~DtS@vW22=e@F8==J-4@5KJ77{^@; zS?!_kAR|TQGP*vHe2x&%7YaJVAg6FHCx4%V)<~-(Er>&;!#~2GQ=6YAUjt)t2gx-4 zy`6PA;p}3B)V&UWiuQqzwrFRU2JrJ2?l5-oFl?WDmRLW3CtGw@(R>kwWs#45y|3^k z-d)}8OI)pFbjD2cB@)ufUwC&7`4ZzYX{@JnXrw#m(C-&ZB0fw--E$D%>DN~%k5hLh zFMBnu@x}AKNFU3whra-Q!zKM*f>^Pi#oLZJzV^4XFZ1!0s1K#^G2ZOZr?(+*VvzJ* zvPVbmg&fF#W=?_}?tz|Y`^psIPxzl9j9TsImuTw^?-#S$0jqTZrWs(ra$vt2K*L92?5I;V zZlZW;H2&OjT!#}pC;M^E_;KCL&*HX|?>1%4YG-V3i8De=CS3tkG;~)lR~2%F|8y~x{EHBFlxQ-m z?4sJg`Je5IdN_4(OC1|kUB~CqR`c^@9ZegpbyW96*dd~&g||yRNBbrdr1(u9UbI|w zH?@N{W1k65lf+z`z?0N9nNB*pRjkn2f5d8`!s9xd)U#|@n`+j@U1JAt_cl<=` zJ3G5T_#gT^F?K<_luv`duxU-2(+J)ANM=p? zyEZ)canQa?`&o4^||40s$MhP=_z+siEvE$&fWAj>i)?M_sg`-mxe!! z)ZG{QfbR!2A8ji9tcB3WP;PsFjJ&SlhL7qNzG2+n7dH0DnuX2|w1sHiDM=kPpBrgm zHk$XP@nIQg^x&EfT;E7h9G6?ebpg2g{oc6UP3P<&=i7nv*Wl?l|3*2;yWk7RaU{z2 zh5z>#UD+wTtkI|J*C_kzcSTt%^%ayGzUFpb-heTGDfpcOyGK5zG@99e4Uzaw=ej1a zEIxnnzSzs`ZsAT`or?owE#_s)n zb0x9AuR4xp#-e}iTr`G!4SV}9Ep{_AbQH{CwhEblR+;bl^X&C|;c2ng@1>2*PVuS7 zj}!A8v5t83$6&Z%D+-L(*-mEtJlj|SUKO#Utm3t7iU-s=?5MeaEXQuPCc|GgI^Kg` zuR{5={V)!(*pA{E%uZ(@=)5x7OKO97$Gq=ojfvzz{kdF@?I3$bYfQyIo0VBjYfPxy zxk{`t(YQjkqjQy?FB#&Q2kG{0`QB~Kuhr*0srfjgm@kgOvcU0+F89m&^f{pKC8S-_ z{9x6uoX6Lxev;LHe!j}r4x8%fycpwaX>=xy>>uq>^VqyYtEkV?x|+d3v5f)zB%T;6 zW@S#%*4GXIC#@G=LHm90EfR5#)$P7Oan3Z*NPgDU2s&r4n_odZ70WCx&slqe6nnT_ zeZC_NJi7{g9wUi0oK>*JXqMP(iN0ko!-3OzU6*l^4c%9`RXZ{TMlF0B&hO={(MW0|3be27D`beNx?fZnb`zFLg6DU$FlNN4%}09oSpp^f{)CdZRc z(|V4nrkIa^D-*#B@?mpz^DHrr)!>tRqL|+dILE6<+(wXZPyF)4gVgW&9B#h}&N#9` zQrzKm^n2PfLHi}hADs=J41o?kO?!{SXg{^W_Z`r9&(MFbY3r!7l{m;d(P1&Lg2^v* zucPK@I!J=pEE z*97#Pde&m!`m{J_aTWEjA`L(CokX99d=JBZalY&OMsp-9Sg)-erx;1!;v62@hXS96 zZo)}_dC32z_M71sOW@CgC`*0jY2dwDD*Tkw&>fFn68|T|PM5=0+;w{Lp_bP7T28=t4J|^ZHWng z+LqN?Tm0{B^F2o*J7&+M{lyqNFg~g#mN^&WxBgtktW}~7<+&JBk?(1YkJPuDk?)VF zqs7SYNOEk|#z_D2_pc)Pm>kL1$=3Rwo5L8l1wQ;1+EWl??-w<=D9=UboO8;UJqJ2b zyD5+R^W#g!xi#7w)RY^?>r*fMVg{9evpjzzipn%BVh8FsK9ilYxhi{fso1;Syy-@i zi2Gw42ft%>#5b<=QgL>rjjtgfeS>Vz*(^DSmGU{FExQg$HcDrk^IT@69qg+(30KOC zH=+oK2cP~-UTi7NjsB;-YncSykf9?A+8<))XToS6=>71cbcTf5FaUMX{D%R5^vBXZ zvRJa0=5(sVbj=xc4LbF6j87jwsoH42;C}dMSrPZR&hk4sl)c%C#dSCQfu?8kTr|($ zH5IV|`dM}5Ea&5kQ=J>AuK>qj^vQDkww#u2KSeuMhOz#L9Y&+y6ts&oW$EiEFRjnO zM$lM5&ouTi);zwQ&hkfC$D6xm2z6hl;h4_7@OWO00?I7utqfTz^_A)Xp<qvP<|wwj{pFpBF~eFCJMXr*N)^`Bb|>0*r-=8STPgO$>DQbG zYx{PgQ#LwtcjeJM=-Whp=v^-KkNVsncwgU2XR`06yOCH^2loR_j+HBE9zND_8L?k= zt|jXwj1&3bxi#A2T7q|1wKI7ni&Tk??We7E4drp;1kagdE>BgHC*(M8peD!1H96*M za(q;iV*|=Wd)CeH+z#9%*9Y)E(sQO6vLXBHS(B&w_*@zA-m_AF@bed|h<=Q{kjs3g zoflMmeacJoSncGMJ)dW${+FQbBhKn~k1GLv>#`!JUx7^{JE#7_V!sRWUi-6%9?vqz z(^+PVh!K9jlJv(Kodz54o`f;)MRtJZhw5h0z7A%48#K3IEc?*Af9>aWl)hUYbjPnr z7a^Z&ZBE$gos&*~zGF$LScmE9%(6j?4XDj8trTaI8|MlCk?@xRw=`6&yRKg)<~(Y& ze2#g3KDWk?TH`$~qUHI%bT(VGo!ZUN)?(nO(9R_<#P6b0bS_zpEvr_N{qwsMR26<; zE&91<4nz3y-FEXYE5z9Frxijk|Mp#=UjAW)&`bY&Kr>f=1=dOTO2Q5;r?uhRFjmnS z3Vg~CE)MayW-^;!T_!XX4 zxRc=f6C^l^5U^Z;&9;C&vxg+1e`%?Dg(s}HENtB(tbkcvQ%VzwCdixOeW90ks z(olK+(hzz6$d%E{N7hC!SUN9i!N^}APf6~F*(_@L(zlTJji?n%2S+`*G&kzWkyTME zMy`lnFmh$?N7-R`7lpj@qLzC1DEWY35$9r;z%%B3u-6m_lyzCUGW;N58CsY1CoP=@MTg=eb!NxYj58dv20 zIeT6dl`UOL^exZ*OZG!rn{uO8Y4xr0)(3pIe+ByIfo_KSYNuHCMn$g#{^h()RiK^f z*^0ci$P515{vdu+9?DO3y?FnGy;NT=@(TQa%Q^l6tzOW!Y`IT8rAxO?$wfV-9JjtM z@aA^#X4%8|qq=NUChqmL$5ZE>8r@aAEb)C6Z<9xMUjZNSobuOB%G*n2NJb=^Tu$GU zOFixJ@W8h{_h{`Ad5JEfu|T6~xh6lxX(}B#5BXl4F=_9YoEFNvaw+kk3Ua#_`KT>_ zHvGMa-=sf(fG$KuuNt{E`CibrikA`jSBxY&J@~)XboUQj50-O1h>9k8P`(AIgW9xU zWNy{I`zxznzdxm_{{CH6|H0v$s@)v2{cqiGVz(q`$b8-Mz)o3R{1L@;j9u{b>wL*M zZZi7Te7xuV*D}gBN4wL^V-N2u^}R2Dxwo~{OBj20g<5A&Y#{dki1pNo)Q4d+G5)+Y z$B&MdzRq#C;{8V2r`w!vE74+&42r9I+z-z>GDchLcEXoG)sLU)b?ltgeV&xo@5X8C zcb@a4b@2Bs;mmeqIjhZ&puHi8^Sx_$@!DLN$x#41?Ov3TDb|3^j$HU%@ugya9k^4s z?ll8=z}JiXekZ>+rK-+x->%f!R1|KbGh4KWvH|gJ`VG1lmd<=s*BL|EQ8P30G5>N7 z{A1dejJ6pN&&G!^n}e?}u@!Mr{NW#=-Cv-+a}l?Gfws!1^Fy?i_M%bD{4m;!c4yIC z6SeoBT6?!>?Il@U(b_v$iLYsY)7B9a(B6ZK#`?7PQ{k^=UDmZXZaJ;1s23I4Pkzif z?suZCt+`cWY!%RT_bp$7u(T7=agmB;Ud{oLu(##D6=hHAZfKb?uPjwk$o4YQ;NS)Y*mPbtmgPs)~e=^XE1*qxnnTnF2{`~Jb(iu$tD zIel5uN&Kba_u#&58@Kft(&aAj>|J{pa*hQL8V<1s&1r0TG$h@wDEmTlH+0tzhlwo zY|v!s`8t}vruhrH7m92S`AnWOLbR_VCAPNiXUm1((*{}SZJh8~^v@=TdjPB5c7@`8 zG4Dz-u63-!?+V-l8uV>yke%Z$tq^Hv@pq2i+45XzFXg$WypreQHetj#+jD?l<;U9; zl;P!H&2tTt5F_A!FARSZz>6E}-fK9&g8akxH2bTa-P=n0Bm&Rw(Vf-^XfHVNcS%tl zS@HMqyND77-s8He@s8{<#RU`}T)P{7z9RhNvx`!lJVwLs%kbY%4iR@8?Jwz$3p{rm z!Opm-Y#Z`4;yu+#a{^h9=DAW4KhnLmstg~qvMRf+@|o;^_QmW#1)ay39%ZAxI7G3| zNJKxaSekpFnq;^!kIpBLru6`xZ{IkcZzFI-Q9iuifPDO&^#?XO&u64`ItRO7;G{dX zLXk#otX#qG$VeyI?OVaiwR-O9>bfHG{Ix{*vPC80{xGo~66@&1dukW03IDi+@9T3J z`q7==lqPt8H5svS8ntuigsijSd_8q++wF+|mqBMy_VE(24~OEGTGZcmNV3f;@w;o8 z&&53gS<*ap_cI^fMt3&Tea#KGX4@MkN;bOBx#8Bk?Yk=1@7-0IjlUo6Enh}Dy)W9#)Wy5Q_*mQj zigwn2^n+#Mu14CQL%eB0`|6)7+gtzK5BI*o=`m@0hs|_P!HZ`=lX(T%lDNh1h4Qg^ zIo(4``y^XvUt=80d<1b>A8k!8E>xUTaxCNV^xLa8GCSWN=yMlHtmE6|g1_a9#$=9L z=C@wO?-73#{3P9Z1iJGu^yVSh|FFP$T2B36Lv3?LV;ouT zx1J^k&A)G6Yq;$_`%;K&)kMpIhLckY5skd2D` z6XADEmSPW6n@pph7k(!ANIqt+Bz#Pg>v8y&#?TXHSBlNL%&F+gn)DJw3g56j6ecHrN&t2M;q&qaH z3H`64-?!2^Cdu~9a(?Hmh}Vy(wzjR3ts>GogYqx@`HO#T9}a(Lfn@ve|D)~Q*ZOJar@8IU=Sqsd|MCNwo9&IZ8dphFjji$L z0_~%n0r#u>>Jj~Urr$fhODA}L2jjbREbNiTp9Ow+_TI5voxPt@_io;ffmrKk&%D>W znsO)bQ%k?E8A%@ALBv#to!ySa*an83-2#69as|t3TOY7k3|Js5mjV{9%lfc&`POo^ zE>DH&2ZtB;z!PV{(`nfE`Cp-4;(Q~{kUuh@qpa544efh{XVLvVa1u6u!q|yArXSTb zo;~h0&XO0ZGsy5*-?X`y%ri;Q#dyHQvhpl>q%(L8|D#Sl|6>ha$^YSb1Nw1~xCL}F z3-mG*GK)pnuMM=rkAg&8ZFZ&9S(i=DgB3Ckwp9`}~bwXS8!G z{c^gNT^Q&89PoSo$FsWe`uAn@8B+Jl=kAa8_T@iA8O_W&l8L>4koG;M?8-O*Mg3J? zAX}8Ww?Adr^q&rCUb9>%qjV$_mmG|mCxy=j>&lOKf<~)>G5~?z4fy)r z^`Og9hMq$EmajqEKh&OR_z1e?$(MyU2>SnxMQn3f65Wj!tGmKNKlmiSAG9<~>c1&I zD|Au%(iisQUH-6t>>Zeo_GrfLNtQOP^m+Wva^*`;{nKoNzVw&LJMdJ0IcV!n%kZ|d zSWjQiaeDJ(#Otk~ospKrHg)$gRO+US4EcWTOHQvD>wxhsG$TF(%dT7Ad;I3O86RPu zWvv`D$NMVU_>J~t!^4&}4X1U+)k*ZP4und>`y)RuGVpnS8Zw`hb)YxgzKrzDyCmAr zskIv}YaN!c7^iu|eQ?g*Kc$x+PInHDx-k6{?Kzi)`Qt_K(XP9pyW>4|%n?!aAJY8` zDC+S)VWQs`#g-Be8c1!R)a5(2&2ab!AoxiuHV#k z|6cUVJ_x&iOHXv)h<+fik0UIR`$_nHj?~wUIEu8#+EhT=Ub0dg2%Bqm_CW=AGkleiORR zr6;%bX$uTG?dy4@j4$(Gog6rbJTUA0CsxV`UR{hg*A#6j%ymVZiVWz*6n)U&huL$2(|&HYDFJvM~2m zc9M|yMDNS|Zoe8ZNHk3jQg`^_QgxqGjk4?dnVU(t!)5ft%edAOBrk}>N&ggeXTtcW|DB*@xEGfxc+bu2@gr(7 zo}HN&ahH{>*4j29w(-7-bN&p+&jQ3^VZ^ormus03G9u@EHrHj=?$^GCgZ~}qlebUNZNmJx{$xWRS42Mpf$5xdYkTG2GI}!Xt-Pc^o}-o+5Cih$XwtDXe$cq);q%K zJ$piX<43nX)1_jnO@q1U=dc+7q^@D{V*PrFpVAEMnKFBG2eerW@`_gtuyW97NREQ~kP;tXbg@myh~ zab9AaD?lfIzhhECE_LrL;DI=hyy9ACaC;SK6y+x^RrU_NmtTo}SnSn2H<|mG>4R=j zI-;o`o?TpudFS~;Nw=OT^9Y(}2u6Dq%X`il*zVO!!_FD-e)zK9{g}LJDrocPRg}$` z^Ct#Y`3ys6uq-VTQdX20O{KB^@De3FzXl)L1blC`ToU*J@I4`+wt@K*n(HnJ98MC!+iYUnGxT}XMD-UFL`$>Y z*g*d7OBSUa6PzuK`GL8u-Y%buYVXJz?>0T9ZK$SnyDf=Iw_Bha@hIzm#KB#9ieJX0 zw4~+mZ25%48Km4_@e*Su+WaFJe-AilviwgTWBJ?WOJBZ;mDpEOB6NyhRrTl;+v;xg zqRqg3J;iP66cd2s$o5A<)@58$;`Zfb^uNC+hkKTatx*=Z25r`d>-obt-!p*g>A-n0 za6b)mP=xuO3i(v!1_}ay51sO?L>weetQcQbw4%RrS7_e)N3=Pcbn4=b4OT71zjv@G zePvXQH_MXJ#^-ZD@9ZlPIx+7ewhUHx5wv~eS;rZyed6m)U2NxgLQBSfXMF7&&=bF6 zVU_Zy!qxl==TF30owg(i7M`tPFXoQ`*W^eowBkT2k)&ut5ULZI^-O)K4oS4PcoJjZCrCL zL)$1LYbPi(pl`^3-siw;NZWnU^Yfjd(s0^1Y!#(Vz|H-~LmLU#k95V)P56#{8j|q6 z4Om>ChI+yGRv3ImVen;xPv=`w{NkUXZul}j50zfZGyaGebcdr<|6}4Wj8CT-?}`9h zkG*$WM-3*sf`>m@-#v_}&sF zJM^|EwEAi-;d+=R?=mSb*~8=|>T6n!)<|5A2hF{Sy`OiMzA%2WTQ~R#&tieg4UiXU z?-?2Mnem(=pHW|klzGN2QSyTSu1LQhtFNAZQ9?Wr4}Mq?3cYVVb)#nu*5wlD!^PD( zo`S*k4cu>kDicKx;rZ)Q^Xw_?j<=37LcI6fE4*V!#9opFn3B=YF!U2`KH^YDpYrtGSYT~XkD z4*R2tvka35qm4nNi;+eg1gyuCm14thhcGT_vfl-N`gjoiZ5R>f;oRRfR6TFSdb`!) zY+-%MYJ}sPuh@>f)5!kU(w=_%>hr``s?YlK%5Lv3=#&0Ha%?}fbdRkQo{FoF*C$u*tE}sQ1-(1dkTdDqkrh%gL&!7|1xeIXKzJ%vUDu*fWeokN= z$@-;9vOb?Z&NEgR+#@^$d~^g!hf#wR`lHg z8Sd_->O9Ins?f_bOtyKg(dK;JIOhWoU(CK2$~YSGe2nqg{t6n+x1>rRl4(4{!+tz} zrBa=TWroywR{{Q;<(S9yA;7X7wEP3w&EA&e`60f~yp%6#J9nrm*NQd7G4rm9cq>BR zITnSh>wu@YZd@fxTr~q%s(hl1gPmvK>DbGYE|7Vz!#lIwHS%|o{CyRE(?>boqVSSr z;N{pAh23q;@80K!hyj5{b6g%q=zAB;{@o1`ULZ% ztVX$$SU(%Ewxn$z*VYwkZB>S^t-3-Z&rP&iTXUVke^p=&p^b+sDK~2#>Qii+|GBn) zSQ*BbEImBysVssTg(7f-%Xs1^AeD#K8%J zM{(?LSMfhLTV~v~Z_>{ShpVy`SC+)oPo9py$XqZ}?{RtnGc_#Ue620U}|os3VW5reW`cePNTqW;8u z=1Yc3+mi_$=wJ4m9_JASs^7=iZ$D=+X~hqAa7{jd@lPWTq>XfvTnqo?+CW`-Cb6Tx ztjp&=L|w|7gcb67c3BnkFcpBli!S63SQAxW8spwJO6G`KjQ<^z3bCetrgfJuFv^#I z*?Z5K_ockIek$XwRGCle4#GWvK10yA0DA}Ul+XU_(ErOf^{lV3{->L5lxdUSq2++%L2+SdzXp_6y^FLEeJ^b}R1}fQKS}V?OHn4Llcp z88be?*iXJ%Z0sk-y~t;a)wqlJ|0>AHixn=d{C|Tp_>aYEZugP5Pvw0VX{0c>`7`{V z;|zX`{|hL?nly$z$)vH*zrdb^=jNVtcSRq2((QfhNftBrR;=28libeWp2ccUx&>`; zZOJ_e-~7)#sifk@VC;h!5a&{Pkgb4)>(7VSALsE%6vF zCUn<{R`|E}Q~0-94gBMqFpsI|y+_qr)gCqZ4i$rZjX5{Kb)q4EoHTM|vz-n+XMDcP zBj2IV`g1YkheV8jq512W@wTur>^rOG{Qkvi-(;EkvufU#81r6qR?Yi;#=Kkce?VAY z9LLv-dyk_%sNy+v!-IN70YxvR2EAAVie7G6tmf}nL>sMVLZx>uR`z2&dp~!-#oJeG z6W&G9wxJ^Y96sy}z7#q}{7|v2`C8sxJA4UIkO`w)B}v+Usy9Bz_j9qXl9^a{zrrU^ zQ!#yc$37~G=jG~7yjibruvb>**ef$~4qIY<`=xJlyuWaeC}mmRQG!8xSk{NK#VA`= ztyS;QOV4hBUd=K+?|zU|wq2`!7jjM6yIS>V$lzryTD8lD@BLc!=6=#=JD2BUSy9x7 z>Kg{ier>*gBUo2uYecm(24#OPs+(8`{b(T$C1-nsd75; zeu}ZgRD8@7AMs1vns}9SVpaBI&Di@0TjVnv@M6_}GE z=6#jD?>A{@NE^fOI56k#pVTWB%;x)e-)Y#SEgph$Ls32+w4EUB(YkGdW0YN|X@9o9 zQk`ReCyMws$`_yL`fH$|73k6XvNR zNZE!mPE(q+DQhWH&(A;jlGD3MxA}P|#=LNp>Gcd($(LwvhGA)=0lD zhtHb9Jg->4_};Et8-w^zmitu&ZLJf3{l5VY7)x=(h^T|x@nJdT6CUq-$tXiV;s=4F zhwc$x=2m=A-j~GtK3$~ji|G?f`&Z^R=e$V#-^Y6#UB*`qhqGA(Cb&#E^E6MHg0q)h z^I>_;ek%fQuUZ-sMIM0mJ%Q2EpH>1xZ16?H|L-%x|?T{lXcQy5YYLsy? zXK}dwv*ClgU`m9I7U<*t&q5n_FEY>DBhJ|&^WKWJ*KF_E2MP2r}M~2E0^&=Cyx_`&mysvv;DzPsS7#Yslrwqg-=1M&C-C zLB{4goa&mWC9H1SP8f%xnnk?hT zcsl`yd7pn6do1r1op(Id-yg@5qOvO4>syNKjLeHlsDvVWrE6woZy!Y@*C>15Y_h_& zH*xK2kBfV8xyZQOi;K&>KfgcDU*|kNpMTGJy%y^6?piZ!_I*-8ytqmNapbzV_{3t-nt7^}B%K_`pK&G~8Sr@Z0k&w_ zR9WH8V&xR7Xm^@g5*V_$gUir9zH8PH4icf4(us#`*8X{NdSjdzclwGE`O^o)oY~nQ zok+1&e{o`^xDRMT@ao%V2G+!r547*|#60a`v$6u`V@%aL${r3b%Xw<2a;=k7K7RWB z4jr@TDb!()V8*Ku7UVmrYX<}VUS+IP7aSfQw8PY8bXZD0z}P=?_)lP?Cd@lfbZ~WE z{qV(^??#ou&M$Ol+~1LYEAih|g2{?)qrXiAVtqE8dYs{sZ!JEfb!}VFOQR${aG6qX zpodpZaFz>wajr|d8lSN`X|b#mGI$?UYZb{}Q>KJE4;i{Z=p;_v=lot!~tehR? zcD155883(i?k@Xst^=TQl6W4oOvkY#td%oqX^4XdH)K-KW8m&8)%2_YV$?^>dzQ1K z``$u~$|ALimV{N7Bk=c={5mGD`0pxVcz2vgwL;qxFGTKW5L46vF_y}}vDnGzPI;b!M%(u-M zV4dq03;#jF_E$FJe*R~!>#4dsDEqlZRrwBbx1 z&KDM>$kz#>N6cfow|g^1cYfexJ}|gu=kwW&yvz0s9}L)J59C=r71&eQ-r_}?T13{S z-cW={eUN`mJ0fVDMr&P+`vfZuue*HuK^;&NOpq;*H*kHjX~oPzI``3PJ#gbxoqm9u zHG~%{)hS0PyI=C)IqCQ7*1%$@M&!)n3EAqX=s&!&mReN;j))*^IZ}r1@XRo`&utV^$9uY#z`S?b`$;{uz$Q` zZvI8A9!CS?cncw+woXx zj;nlXAsIV>+XG9qe$1G(+80g~&c-T4U(Na_Wh92XKj2soQXBze%Nc^L${M_?em=Gx z8OrPGrX)ecx@Hx0H?x;-;Z7)k2O)U!kuHer+jc%ndtm|v@YrXxC0cYceA;xPk{%!G z#cdW20xzTTh*yG=n>}^-SQ_og4?L8z>#r!f#o@(&5Y32JQ0B!RVH0jZYpbi9CGEdg zmTAB7oP1GfL&x{CUk?!+@ju(|1aRmtUGh`G`K$gQHX&YQfB33$pV*p}+hkCjI+{Px zO)P0D(kszoqwzBe!U~R<4_q0N>mj#ZV3Xgd{6YuStnG&SE-!w5k?N>FSXI6}3z344 zx>|uT+4UcD5+~4zZ(0Q46C(|325v0I?&LgcT%{TuQi<2kV-VkgKNPV^tCFoso(^4) zj5Fw=(*p-@w(*kw=p3-zxL)bVPh+BN>^Owrq2tG&40tYY{(6dPju&Kk%BKgq4o*^N zFKbG#nf(-~svVPrfBrg^&$MPa(g)M^CzVQ*AtaRSd5@w%uCG-OIs181j50n#2nu|(~b?T${J1>MbB~PU{ac9yZ?>;@`3+(j@ zlHT>;2vNNPqA-$9e!mp1ApLG!@w>Gedn1zlSz5>hf0vWRa%#=Xo?g3P=etQ=*RLE2*5`j)YDF@J z+@fPFCI1L&AhqcXATSMna`e!Hj~%DWbE8M?ntj;jDv3emm9KtrlT5iDiLr_b^ZLyT z26#IBgKduKz@+x@g^Yg^gjDy{oes&9h%~kgN?l`Mt|IE?9(nh{()wM{mVGbYdb{tdvU_m1ZG7+5;1ln^ zB)czIOXDXTtMj{z5j?Aw&b?7N%Bm;a2+52pVmaqM_An18IEoz+b^lfnpWlt`DP`1E z)xN`EKm9kr-`D6^G=!{m0~$avs6wZ%U)*0valy>n0sxu#nVzy%+oX1877Dk+E zlV7>Gyz0zf^v^mm9fVOV6V3Y0-&?mYU^6nsOwu0$j_8LYayw~W6?w0mgieQZ7e;!{ zJ&Mkq-nwcUv@hgZr1&ENv5^|{iEL&6Uuc#rBIZ155JcvJv6hQ}bZWwa(EeX{Hyb*u zb1^rD^LQv=OL+SubYPEvCt5;nrnYQw;v}#NTeW0%cBSDYPdYUgokbZ3X;ye>4=s@n zM}Y!M4KD9f!|B>dM>7SZ$j{9^>;#1oA+N8wXt9Ce$$oewiMN}O)ZxZ_^e^~UNDA%l z;{)W;yYU?o9ZoxujK*R7=WybKE+K9oM@gNN|E;%kZ#A9_n}`YO70|y^j-UWaTFC4m z*5MZGdnzsG*y@gOxrgu%I<2Yt6?yf3fc+C7_js_GgfSVBO;oBNR#-6|*O`}voc^&q zw0feja@U<|?aeL3!pL0j$tywzwb^TVz;Qdnzk?P&b};{0j7PIPyYQ-9fNMuhp4^?f zvhTOSn<4>zHc$UxzJFPwV<$uxyG_Al&x4i&R=l{qRZ6>X59ktO*3wQsgtegm0yQ=m zlbN8T_MZxt^JBc8X0=v1SJ7Prg|QE3QTOq%}f*{~r4iqUcaXzd}a$?6rDvXY7*6c(!?@3oOCk_I;O3 zO;(XdK&><#Lgew@y^iB%$q#3oz*3US3uPvkQC^)cDaA*3;m()^2Sm!y{ufCrC&(Pj zH5Y&j@wx$?DpNl^R@&~gzwr6U!X)=#SXn<^us)S?w;T3L(d*2;!A(eN8&S}oX(R!EsNB&t26YjyZ{mSCLKl$BKbLAXdwrV8+ zq0MK?@Ov+H%;{*jBJ!J-7IHYDatA*iq&`TuE{zcRO0mn;+&Q>13FIeV=2mV%W(G?OjLM{PImqIy5_F@Z?>f+D}}6-~$}rASmQV zU^nV(Z>E6NoKyA@=A@!1ay`I1a$Rk5`7|f^W4!%`rHjmhtIlQeWTj8i9yzrI+elKM z4%ln30zO`^rYx{ark<Nffa<0epE39*i?Pgm2bu#c@juDi5)N9pK_ zG)+UAJb!#Tl?9|E0>hI2%ynjec#wf5e|35G<7F`IxS`bTck z4l;^xy*gF36o2PD8~eF+P^wKBJ&(D)s3sj=bn@-Ni_FtllP~RYx93gV7`zrmT^!6p z%H>C@>Bg`yLIUHV#7$ag=6yyxwdpkS3BRrpZ>7RP!Gmd_e&mBwjboi`8lUT*0jBy! zSzybMU)4N~bxYMgiXbVlj-))KbG{6k)0Mvr;U8)^B82iW^SZHvMAp)_KA}06k`A7n zXWM7wKiy!!)N!ZX3F19Qoz=hWypdC{o&|-qIclW~rU#NYGfdlhgC_Vg?X^je!^8*$ zI(8yw`!k@K(m@t*Jg~7Ow&i)=bblE%67HlM_H>w+bb0>5TmNXv$^QNC+3q7x-6L8D&L&Squa9G)|;vXKO%_Cv!TRMue@e!iEN; zZ*Mw}M%E5rXQ`-^@#MCAb;{>6#vPd-yv^|IT$6Ds?#d1{WOej>ZCQaavZ;LfIgv9s z6`;U+c1gu?+>x$nm`4RhvE72CKKJ9lzC-SQQupA?NaBEx^E1j11x6)F!6Hey_^B@< z_ZgT7!S86u5c{V?YQ<3YL0NgelUYGOT{V=l_3v5t+qV9=5z3hg-9k)#K8)wIkk)rj z=&!|qy1N`>19j!RA=AQRCgypI4vW*PKtr^zy@}oP>}48mZf1gE zT=h+8luHn6?1YG*#kUE`WL(6=uh05N5(G7Jl{4+mXYI_}DS`~<kKENk-t>lkr+*-AK;6Ep zKTUL-5tW?aJ*>yAfjth#Gp@3iY@QUVSjHi-qX%i-rQk~Ja)5G6O5Kx^Hcz@cx^^eh zjJ2%&a*?LyLM>cMVMo`9Q5i3&U(zhRWc!-273P$8&#*kk?z(R-DW8fMPzUZfSG(@} z)9v!b*Owiv{#!e7ZD{o|qO-350S!iD#qSGP{l46$Af2$3y+{ksU-f2kz-(V zHieM`4GA0_LNlsaszdw#&gDFl0Hc*1{^HtmAY}cKr8rUv#dEMLm>u_)_`w}!z;RSw zC;Y?v#)rFfp_M@jn_Wj(H7J0Aj=J$@yV-HS?7M<2Vr!dc@IUQQ`R4%mwUxxJUme|q zc6*L2?*Rif!D)lR>>*6aieJCAcl{|Ukk~3H6p!)$q#<-d&I(-R`7y+T@P3gNPiE*I zs_qaY{CBIq`E7FW=!p8SxKY(h%&WH@&B}%5Y-k7mavp^nVz!H+juPP6%1ghp&p`22 zuEwLZWO^R*uF29>qPYX0T8#f=5`6uw4g$B=MlR?dul%x4;;8=>@)@?tB|>4kC3Z+u zFq;+^ayF?^C%k)BM6s=s_Kk7-_^F>&dC+KMs2p(oxR>;N{rdxI*usVMHfJ~$UmTf2 zKjy(No=L*vD<5gieS%=f9`2tv9*+Ikr*GiY`AnC2-opkd7w(1FA))2+YwsZzqd;Db{KQpwj3;YB`KrQvv_ zy8FBA6%z*Tatr0g9)k^#5p>1bM7m>c#nSR2g6&Zop+Y$jFRbZc!h%HJ!J%2#3}Z%X z(j(ttPgN`u2LWm7E(}t7)4YdQtez}jujQXEkABynRGIq*Cez;dus+D!#WDemup(!J=k5tej@P=6?t6V>& zSh~j_y)F8gnm2!eJ-Cp(rz~Ia9aPu1uIfnv*WAE=JDq2)W%q7D5Mrh;uq4vkTOtYG5SZ|H zt5mQ!^Y7v#1;4hGbmr{1S&-Q|-qpKK*t&Yv|E>6wbp1~cv>HM_F=0NguI&ZYG`a$= zu`^NmN^ zZSb>#g|hMP_NSr1JCm(!e?STMdfk~SnR;F~Ft)d{dwMP|ezufcfV~6kzdQ_PC#=>i zFfS3_i8Z zjZ=&Y*)503EYzjNX9Cw6s{TlRaYf08@DYV$__u!yy`YNMl z(LU4kB+GYzevzDKovo$r*5t;^nYx#JLXI6&=2e5s|K7+;_m@&E6j2!!Mq~n!B;@{x z>f+SO%__1$G)Qa1Rl@Vr`z|NDzE%Xs6pgCPzo?3}%^>C~FGHDn}!sJtiy zo)bL0c--+Az1|lud8xf$8RcFDjg$1qCbU9?sWx$ZLY4J2VUFT_tZbvbnf@I50r{ejKSDzc$xDOKnsLVtDo?%!pILgv{wvF2sV-s*2vRwbJG?n;+7l>wqH3BrUgVat_LFCazv#UxtbXpUXTr$$ zZig76sM()-UZH$w|D8$(+v);y@v{objU+vRu%J&toClwQYI>~5CmJyj_2rnJ8_gL3 zORPxP$78YW@wP+u4X`5WqL)B)Lt=X8%DLmOR?%?_I}Ogw*nqi$4in~8yxpG5hV6X% z_PtaE-Tp5JRfVeF&1*X?u})c?g;NzRSgL#S^xoBRGa#O=JK6H1$o0{+ftk>eOIBhV z6*mqZkP{_=nk8L+`zGE&bkoQ$xdG}AzQu|AocGov@V2W9eg0LZNsy`4czfbJhoHk9 z%y8pHIg7sCae%mIV{s$8{4hH(yG8~D-sVsUs63LzD1ggkrAIXH2hRtr+`T$r_l&oR z!()to zRJja5%l&S?I2HQ*z{U}ozDs#FA$2=;=K|!|4WpXkOgRJTCvant%3%X}QHlUeY``1} z!Fa3Ocb@|p4YxZpA^cKAp3s_Mh3D7z>ay0=3feR06P%KL{tk72S4a%7q)4^tOWKmX zj=KO5dtrG3^;))&dw@dk4xLQedic74wza)>MvZ}r*1weC9`$x(ZlC{L=hdham3imO zlN7q%WpiY!%P5<$z7L@{dI;Njw6QFTEG(Z0`*o=9nS^Q@7&WWM1ICt3aI7W!d_EN> zh!F}M*gra+PnL#n_m}3Q%SpWa)3k?CzJM1(cQ;4uw>+88^c+3*E)xgJ8H#~YOYtqy|u7+DMpE5nx3wvDJ`_s@do5VZL6Wh(2#gD|?b+Y~3DUN!jI{o_5h#dWgecz%no-MG zYhcl$HZl~S-?v#y-2k>Y{Bv*aEYdc1 z#Ta_aYWleDB(eRl9!>||HIv4<;9GSnyQPLCXugdPX{A|N68gEHo~v*A0evdMR!QCU zxQwnt`#l#Vo-vNK68e>~I+Ey-^iAmht*`-KFi>a=(JA zqw@KAY_Jsp>AbRpdkYu?FnK@a^CAwVq!9h%#GX(-q~5~xqOFo&yB~cElF7vF;LbWD zwj-G6o}JTU5KLo2*4~+;88Fx4W2VC2leW5niR1aIBFW=bdQkdK6?2oI!hZTRTCK)t zjGVG#n@3?9D`X1nl*F%*U!_>{_E}gX*o{`$4~!_4St!vBk0IctmckJhp845GvK{IW zMHZxjM%t%HpC?b!=7kIAV;^_QiC#_) zZ|=f3JfG!1Hv+0=KlNJ#_vrnxfxyzy0>ZMRU|$cNWAJRu?~e)`lz|BRl0BV|IW zR~8-2cvsIJ=V&q-^nTwFTF03nr2qB%?t=`=zw#d=fEt=KX%^B!Vq^Z{owO}Ti*~Pm zXGqg4qy&Rgw4#;YLw;*;_k0sOzCk?VVXHU?hD+d3wbZXXT+)7UvztMoaK!@|WLf~3 zy&fz;9XJ=#jip?}I$k+7mhakRF#hY6VfO=HXjgSo1CavMIobr3d97VdGqk&UrPYy# zM#c%i8bxQD0>8ArejW~YE26h`lm@fk!VU}D*}jrrD8*qF>^!DiTYW+GebVMg`SX2o z7OlomvZNA?f5^9{=C6JXTbqyTY?0zS?OJmhpm|>8!xOx`4az^*~5tD zS9acT_^Z9zTph?=B?ET2z^jW-Ii9UL;^1M6567;T-*Qc%8Op;AenY&6K4lW?6|_>X^Mo{qh;f& z#?tDwUmLZU_t3XJDBCGWjoUjia&kI#rrc0qduh;Yn^{GN`Kz&_hp!F}193<+0Hn+MD6Fq%> zfuuvex70M~bI*L7kxBLAZ=YjGFVv;QtQ%3O3Y3pC+TX@Lp&eGa5%AbC$$e8LOA}hr zaokPQHaA_;_`BS;!_y|vIohSV99Vx!`LPo`Dy=JKy|19(5TXe_cNEFm8V(`P$8&Xq z>kkwJ`7E#s3){kT@=2zp_iE;Rc*Ck zrvQKCMoup5>8XL(3vgf+B<-ueJ@h-xfwQv4T6Jv><61&w3|ZYtR|(4S1=2-gJTnSX zdw~w)!_QTx7wwGdr#S(QPe}JGZzz83g>wvQUihJ&^mY^Mb-ur9)3gzPAp$`q7#;6_ zTf66JjeK$99AZi}@cazgPvM79%H$}ZL(|fs&iD1t>S)SYFR^h4Mm$zqrnW6{itGmQ z8zzoCeor36rx#uKlv<+yFdPjnLkeHkmX_YD`lZYBDIeo$^J^ARyiKY7f`=V_Mj95? zfW&-x!EyCE&h_629HAmSh-0!TXx&$oTn~row0vLN z*0?nqKa0x!@%|t@xIEAMR{Uuf1_V{ozw_9YB)|vXAbrJ{s7{w-9T*C&puY z*>i6F4fGb5*!(IfHjX^{pc=YCGDYKW<%M_n)F1EER@&vd&Crs)F6!C{m zVWte(#CV`LM1T~1v}ak-ZxgV}cDqSaLdmrhT|It{w*hW##r6~}q*A<`0@6LdA1h0(G$$CRyy(`MmP z#6tHN;}993!)yZsHMh6+Hi`2-eW=R3W}kaDw1+3=EL{9dEH_9Vl7F}2sURWygLnhY zaHFxqP>)TJM73pl-Ke6}&fB2&Yw4!n5P2RzaJ5C9zniJpD(>~D4y{+jy&!4ajTu>J zEj970aW}{D9pfr;Rm%0zoj=6PMsW50*C_Uq!YyfC7+vai*Tlvv014sF8Sz zdJOd5=YW3PCrn#vaNGfJ!d~y$BL6M!*D-Nzz_&9?ZHk@+308W&Qg*r>;?{+H&)xVA z04b@FXo4QP;Vn10F;}1L-b%K1t*dmrsG-Lto(UVff@)UMXo3rP5CDzEhPYO)(#+4* zLWY@#C2`~Me=8mq>wQ^Eax|(?8?1%^Bvj*b zEPfb%JGt4<;Yg5VOLG`>hLY?9PQSqd_bo1QZ^~9BtUU*+5`rT!@A*EBD%E8U38g9D z!ld9|!;Mep_1(5&CCvPazQqjzIL-8&kUgtQ)w2PXDu_HKq&K#J;=MZS8lGGs*-oEWU5MrApk%c%pmEXW915 zXgyxJ$}{qGi0F%Y*=U$$(XZg803tmb>hADE-cnF_3e5!+M>HUE)aH6|{JC+jK@!)=gvf59{Z^y>X;fI+I=Gk6vT$Mb zX(L@EF!rgF+Sp#K2ARH2w9sudET~6WKk2a_`2_+%_r2mVgDMr zEC1$tt;WK=<COhaUy*r19gufWh$oJa(Gq`IqSK$^-V_bXr({> zfW+W~r)Tg47Oh$4w^O&AW7e6>o9{KGegazm#e;vzlUtrDF-Gqg+Yc4q!HW!hTd2RA zcbV3t{g;LHvmIoFT_0UO$t-5pvDs@&(pxZo$*D!VpFQ88cljXQ_o|;92Z?HDk~I{O zig}Obj$CEh2*Z0>!Lp*(ryshf@?ZLIB zpM!NTFWzJ<&L@Qa(IfDIW@kEA#A7zpdK+`jj^=(WY}ngzT$ZF`^+SmC zAml>-?)R@?A5}`}2s%f@2REZ`b!0NM5*Skhr`7cTM%3w5T?7+SeGAsfG45gIS4S4? z`j`#Nm`@WT2#VvU*D<@;Bt7pDJA74&7K@v>XB37fv}P#EO{7iYY77Hy+|8!I$!WMs zU$TGB;N_}lU!NYE6;_me4!2 zO{FmMuBdhcbdsh4+J*B*wA7H79^lIP4mwF&7yN)GiZKBdaDW?WvZ0)g1!M*SdlA!z zTd=3QxSSC$vFTPuTbkT$Lzh3z4cLx=N;|a-cL!#d8DlQ0N>XY$nL2PL+Jdz2+CS;r zT)pmY?xPSfR5h)!HIhr6+l%URe>Za0Lz|YDWjUXN_Ob=PzKF-HH}m=QMCy`7xAS1N?8w>Rz^=XmB!o-EWVvet%O}--)Cwl3uVSJ8L#1Z zjVqB&;~7zSaIeZrZEh@!cf~aJs>U>m$M`bH_ZQi8$mn#*0QF(%3jpTI-*SzO0h`{> zUEoF-F0H*B+M!BpmHPdtqq^rl%J|PaL=Kbb2!+1#co%2<;*R)+n z%s8?V38pZm)7t4ns}HWOoo#!(Sn$(L)M2tNaBvV<-&P+|x`89#@C4lqZo4t7Qg4jZ z_@>#CSz4vI*|9qf?9}yE#qpV2L1gPbBDV}2Ncg8ZIAXS=nd-k=W|+SIt0?b#Bg)s> z?LYf`A9Kt4(|{g7ZH#WEoko|cQ>E1P4pvyM4d3KkZF3+-Z{V~JmhXh}d6TF#E(X?n z_x~+kPHlhA7idM>x*4`eX*rDBBEBCXEgq3iRWFm*iUa8Yqu9CD z3fYZI`!$TmbKem%!_&uWBOJ7-d4B>`+d9FwmP~u>Dwa*TjVQ8+K!a^e%D7g1kyHe^ z%||?Fk1WR9aQ|$oxxBAV-w)zzo1JMLyG(=oxf8_8I&xkzoBX=I7f!d4#{(02Qor_V z#%r`VL{=?@XLtYoR`3dn%}Mwt#n=qW1H59Z=Ynrai4&)Tw#yfE z9k~W-lEAa|-%r`D9DVj}I_PQtBUu>L>HDG6*YGK@D|E$mA>JxQ&u;v~Oohb{mjC#a ze?{*s6A{b4Bw~&giWJ#yPY>EX%yR)g8WTPQ@y~C$()oR`qRTa~daEa1M>^h}Z5*xR z2zBB)Mg8^U?`Wm>wz8;_*}K2g#$h|nQ>ie?N0NoQm78&lH{&h}0+`0VW`+kK4dr93zerf*nPc(}!i33mSv=A!uC)E43> z)Vqq}ME8-_4f}M>P?{TpbF?N;bCIm&@64`-N*iuN8!sO!_MRRGwd} ziG~Kh;L-I=%6#Nupe(PsY2RX1)h4fyN)PaenZyH)uacJ+HT^VIcUFxAXv-((a5pWH zFBa@4Yh1IqgJiFQ+_JHY4W>jrcumC}l$>N_GlR10$o);~su-Ucu1>Y`ut=u4RDmzC zgxmn3wM(V!>kn^E>GVGR%`ycuFxQ<|v$)WzHv;16?h+2CM%LH;1&R$O_-1o9r+|aE z9u9A(IKmQnTAP}=1IDBiuNJf*&WUT-V7N#9|JU=xZVE#t9k!&TfIHIv+trG#iOi>@ z`&jUurxlWBcd!plubgB`83c2lyG5R6e8@ka(kJb6^qvF+dpvR?t-im3U84!wSpQG7 z;^)Kz2j){FL7V0~b#wPycFreT0JkqFl6us?3E7teD%DJVu}_U4!ri{{LSd9gNRu$i zw(4UGzlrNckS{`u_s)qPJn-6&1F=Aa>p_i-Et5^Gzr$>*bQ@#8WV`)=>b6-gDH{S$ z+;F0>o_V1ACUOM(xSJE}pXiDuteIS~DP4lxUJJ8;Tp;wC;SbZL5v(Hsn{d`+{7G6D zs!smz=68kP&NNHyv>pd`2aQ+x{9S)aKQK;}d(d}imz@EU(ag#?%iEg=%iL!uDl7J~ zkcL)QZzcK$-j1Wi7B6TB>l)+^6}<*k$n0I~+$j~st^VR^0B3Usva1ZAJkasAX3UCz zTouxOZ^Rg<#}5OqSG&S08rVZlFe-Uf{)FaJ39YhhD~Ao)TKypq5jKhMOxrUW*Hm(k+} zXyR15gw;lfQR0^*f&c+rKKk2{_F2#aDw^0aO{jB=2ueYrLHsKqxy&4tcZnKfz)Ia- z6)M8aH_vDOz%|h-Z*JQsMnyX8cginr1l;B7Jzp{66Uj+vPKLb#8%lu)DXMHKxURCI z#1j;`1A{X42e#Xft@p~Xl%mW_G4w6?pd0c|*4%}_L0()#*ZJGB9~%ym$FK6t%ZEgC zl!4*{ottsFt>(^-2Va7bfVnUef(%qjLnPw~Mq|xA5?MYMXBbv!h}bm= z>klsLLE;a*Xe4! zHq8f!QmAU=O}K*H058)fC~kDsqLRa?xG>zFMeW?}D6sHz%ladfWVS5ai@$e#46$Uj zd4p})2>`WN>d&?mgzpcnzfoZ!Bt;@vG@8>KLQWD%2bvc4IvC+OkD z?TZ~Hdtjza%&pM|yUp8ZGwu8!<*ZXk_W9yv<&OnUFAA->oI~#6 z{KezsyA_q`V|tf+ju9KCqw2{$i}lHstV?THg?T<09{L+-kB3W zo?$g=OM_c%S*A-2w7&Q7j<4Jn)+xrQzg=W(l?I7B_r7_1N`0_i91;6UnGOH`Y2twI z$m0PeGlXc>GRvqS@yFxP(i1G7zBp03xu`W`6|I_i%#(V8Eh_Zs zRML>`Q`u zhr0I)=4{c~4e9HE_y{wK^1$=ncA4gKiOmxYTW{W3VlGyr94?Nx0nKt2Ed{|!7DG+f zEcQl@$IQg@qrJ)_#cf_&C!VWd3zt}Jm3q!DFMB>&9Ih*Y)s^)UR@kfYG=h?)t2P1FbUIQKrZn#FZhnMxY= zy%sB4RbGE%b^i=Vx9#AY;v&;x5`gb*o`@egblw z7oM4`!OMUJ*>IHY2t4A}bIF}&T|PLpigy&@I@(>EiUW*ut0|6ABiLY`^(fDgI>Hzr zW&^@%n)Czdr&?%`FUe0U6V3aF;{&Ia z>rXzX6%#cl={OF_-vaJV=Ec2iV>POkXKX;Jgf=R(jF zOrRpt^suSe^(v%P$8joyS$&gxvNTQ~?A3b+*?)9wq7mbH&TWQ}kGn*Keu?9tJ=^O_E z`(?`2l)?R=qxwnddHcqa;KYnhC7Puso(50mnGQ+MhqogSWvStHkGRbkxQRH9ZoWU2 zcoX@NIdrkgsTobvtnFxz)M!sdw{RO+^0f3uUXkDv-61&s%7!EB(&>#u?!b4gm2VL4 z&&MW&%Yh`Gt@e*Ap{@bH|EcS`PhPzbDA$4+?SGYPv-7)%89LSpk2dEEmKi8ad$ih@ zK^Xeo#lHO#8ky=(V~Z8zrbTebo7_Bt$e+OC0(=X;Gid4a6OwPBXKL~p$FiX3M`^;U zB18oO^MrUXvsm07&8fLrAPB^&C;b`#rBwS(aRI47u{0{ zeq2pfRPa-L#`-M+GTm4(I?w38wD)h(zdRHyw=~<{vr@qHJ^3zZNYaDCFe*33Y8#=N z^es6!g$`?UBfwiSJa}7T%tPBh$IYaB}`U?A&`h|EJ;vn^9t#>~#lU^FkJn|AO@@yF(Z_ zeQbm{)Q^}Jh3J~}3v-m_Ae0m3rb!CNbV2x`o~@v!i2&Urq|BBdlGR|`=L?7eP?^co z4~Ob!FXN2X$})+*{@H4 z_ff^RJTh+feCX;=TknD67hU%-TzzL!bH4IsjNdY^9~D1kzVG@Gh8d!Mrj+iCVvx3{ z%^tHD15s{RORtMd`G@oTs{a z$LFR@>Ve5Hh72|A_%>j}$PBZcuFBJq{C7uvax6v>GBJ9K+9JO{O$%6gn<}SL`r=cO zm+7=@_}0JWt>0V-?~DeCSt%0Y<19m>Do_*IY@ z39h?uGl_fW|0pck;clPT4XCplD72=M)^jpEO$U}1SVQ^XW(MHVT!GbCxdvH$)6;(S z9Xr%=sW!%^F8mp*8;#A-=nFA9m@ty-cQ=u6yzt)_NI@Lh@-#sTeNhGK;MsEqnI(3~m85~tMaOp-w=Mfgn6vSbZ&t5M3} zc=GkdiLX_>>OjU@(}Bk|kFck=%RHZ&8D$(KIN3W>k9PfbK4p()?S1MDpf-0vIjwK~ zx1=qcqPVnSV*Q1D$oxYXW|{X*f2xtJEl^c=C1CF+>W6gU_tN`}f%~PV=9uAhu_GgJ z$eety0F6BrEn|6myMa^IvE^s!dJ9kOv)m`EyCjV)7eEVbQnr&(NSv;@k>6@8xu>kX zc5{}?nx7SXyqLQiz8Spb0PnERoJeB}b8p*5c@p6P2=Q0~&A@5iB2_BaN*dyv9cz6Z`?NQz zJcDi4=H;AqOa_}DR$?X)TCT+~Dv|6zQ0=rGBTMTNvm@0zkgVvwXJS#C6O_a=hgi;# zWZy}J4$)hIgBSNgVf#VLEpl8tvl@zK-x0ciB|>)kO@-7yO^%T2=}uYS)(2vv9kcdJ zV|<&}ClJ$Ph*^W`oRO-$kV^hYmAX1X8pc8fVV4Jp%ufLTH}&aEB#EQQd&*#isyDaT zm_-hr^T0^bsC-b5b=J6u$60D7JI4O@OZ-TE*uM7kMXNf*hbE38(H+iHOAW_|%)bSs zKb3WOA`2B|nYf$%|2(t+r*Zkcv57^@+&)WWfFDZ0anDQ8dLa&0!M;ycjCJW+^yo9U z2$PhlZfXe(0ROo2-}={+jl}k#pKc6T$fH-Yry}#c{4_yBPPQtldPPCx2Mb0IQNPVn z^D5q#=4lWWKZ+hd_wUrLt7CG>dgu&PL}le=c2*lS&B(sKGQWiyVXpP|&tg6vTB)@V z_%eZgef^GE;gtbHb$^$dJnAD+to9Tr{4G}W(Z)xV`o_P{AJmP?1)u$_NX7tpE%x3v z6b-g{8(v$8Z9?{HWXpYwyUQiUV`zw_IJK4dQYpQ+MMuiDuXT-~m5s;1cfT%xGk@Dp ziEJOSZmaLFQ=>bQ{?%KSd27e6teL|Yn5asQZZ(eMov05DH1D$Qa$0Zw$0EX^^dfug zXWh9mHHfyjOYyym1X8c}O9ZsfuVAbs_-BgMBV;=xNsIX?F)fZ|wdK34lv>WXbZE5X zG~&v$c?ylZH2>L|)y>vr+XWc#bk^6A+2wllT}SMfxU8I!h%Us}pD>h5YT!uoOf)l{kAL+?B0+5;QJeidY?EzB zIRIH6+3d3^3kV!ME`5szp7qIE?$`Q`jSTaedl%DhsD{5XAu~^l&8$;(^QloJHbK!=6n^dXYRZHG0c&ZpH zhmj&CGnx~PR`)!%Q#7#ucIFx`bt*Pf^6Nd{ZQd!}7hLxd!{AC*6mirN$S%1|gY0h2 zoj*5mNNFi*5U8k<;;-0G?LlD&W1YOHUAwI4XTdI^q$(unw9xRCQay^?XE^EBwtzGq zgDZ`QU_;bWcV_fq=bV(b@BR}a=-E%TDJgL`pE6;~xzB!(05ks&aeT3XoEs0HwK2@t zAF+xA7qSMp5r*}k{w~oFmeD-KSx$o{bk3mcAWfuF5YkSd0dG?CU<1Q^q{BT$2HiM+ z(Y^?b^=wKBes69Dzi=id{4v4@@mAp19RC6A*&Wu{NpGD1G5!l>cq%7M4D>lO58%z|wIY;j4O5I6}Ja zuq$UK;Ga-?Ulq6MA^I8p$Pz4l8bz!OLJI#}6xMjs@?D_{xl$gAI-c_C&HUzTbO}BD zK>sqzc_Ze**yjP~5sb~!m!`Z;dqSNgbiYmTSxyX)e{QOcy&Lad(uBGHtNhkRibp<& zR*p(F{d+#y7(d;;R%l?3i(ZsuWcsdf+NU21Eeg(z_MDy#(!{QdxX7$rowf3V=V?t@ z-*^6c#?dkaJO(plir(IzuZklm6ZZwcd~RJTWd9$tqc+W86`Bzs<$H;PG0x7NDxjY~rF$eGje^W}!Ol^Q0s!%hxC4;xh z57Vi?vs9_&8ipbVB+4C0p?t$=Kl4Sizx}7FYIbPso5{LW@%wApZHpT3i4zd6a!>S% z<=Xe`hT4}Tc|^gvD9&JKw<7`h;IqYJf0V^B>YZm^eaR8dzXAzeZ#50nUFt^yu#O4> zb8F>@INf#^?tc`WWn9x=8^-?@D5-R#A|Nf@pdw%a3ew#mF<^B41f)x)YosDMx*6Ru zx?$u-4;U~;Y>&^I^Eofit8?yi-`910%MA2a2j=72sna>yn|s**BU)(IP5djL>NUXy z(gCM?cVsHC2p3W^fqhA8ZhjO@-$mRgN7X&WidScAA->lU$M`v~dMaJA`^`5FwjSJm?g|=wL zIB~H4 zEDN~?uD&2^dJGV~0SbKY!M39n5;nPx!WUIqHR{8+i&mXlI?TjlN z+QJ@<1$_d%Xm-`Qq^ zF-KwX0SR#1DVf`&3#OYvs;mX3GoKRcO?g{%j^?Rf_ee(%pIw}NDIX!lD6Sl<*=_96 zrxkh+Q_ucYiv|s`*YqMDKyXTohP*`wGW~dyVO8K9mlPgl$q=GgG=et8g|ULiWr+xq zA_`aDSvXQ1w!wYwy86J%lTZIOv{goUISibvoW59v9ablWPZ>*W+~vG*&g}KKe&Bp4 z+7)}2@#1+$mfZ7kc{XcnM*$xMWV_juX`_o1mvQz+a$~*mRO3W~hJ+_WVkhIIj=osx zN(6{MzQ6WQAn!TRZ^;swGAkI&moP)$>h+{dmYn6>1FBojjP)HJDlhS)gV1A4f>AvM zN>24MqUAkOcq?6>;wzaxIUY3YWuUE};qWN@;q-`}lA|T{RgSUZM$M7`wa91VCjmE9 z0rRuvLTR`3%?bal4ZzNE#3!MxQT{SucfjZ??9bILxFdvKm~vm_dL^_eYpktLIXZ+_ zu<5Xx+^bG+oEuI|GLB*_+8{A4>e!IjQMxhuuqhq>`{4WO#@TW(c5`3?`KvBQh2<=I zUY;%4laT_UHtCI)m?CgzHELc76128+;gQjZ%49>oeY(Hkqw-Abz=X~%LUrC3;F{s* zD(`@4uC}dyD9U}}PvQfEfUZfc=`23QoAv1LbcWZ8`}xV;``OARB2QxE zpBUWD&Q;^zJh^npTcnurqk<~7nH=`L5mh;yL!&#-)Q^@c|l<+)&Cky%rzxI9$% zVqCSEd{4}pzOz=tk2A%24g{i~1~Nv@^Ncw~$5z7aqOI*nd53Z|AfFHM$;~}X&A*i9 zMp2SQvf=bxM$e%}CIy2d#H>B)XhV~M=es|3RT$)YM4wC$FIV*4Gs4`mL~7*}sed+x z7J)xqD%jj~o&~8n9##cRtEZjlCFIJ64t1wx+gG#RD4#uB-O}COySn+}5A+;~n6zU7 zc}fs0vQD|x)z!T?h_t;K+5j@ThEK5>`HN_;Ss=f|*55E*Y(vk98`U9W1?*v#6@MIW zJI@pw+JnILI>ryV-@k+QIbV8SvOJhm59azCB8@NSAw+xCe(ms-%OP$4ipmEjM?W9J z?ZPF#@DoP8wy|B$yG(L{3bT8&%72pGM)dOW=r$#Qz^G$-_~2jvHfwvzp`kaOw3b#w zzdKAUet&PQl?Z0@ma`_cM6%ZJMW88vh~g!H}V(|W4xF=&0m$lhwNE(o~<O7N|i->pRjgXNC03zgj3xp>Vf#P>^Al>m$a05tzGHwvGf_(w@h%|L+)2zys?=b0Lxu_?WxV~~wywvg zVK_>zN8Y*bGU=o=E>Jt{k2iSvxj$~T_a_<==qd#h3karxMg6n>>}RHm?KHci)`P0A z3f%}5&lC4)@71AyiK?ca8n4TQ2LeM+SCU|Mt@?mW^b1aR<-y^LF99RRgJyFDpV}{@R~iRZuHL0SZMMg&Er@2lkt>3j*F_8a zGQD=wZgfKQ)5|>efJbYpHdy8Ko_YYUJfXP81JelHg4Mr;>>SOHZ`=0KhdKuS>f78I zeG5TGj<$srezrZ(7zoH(>8L(Wp`$#xM9cND>zqrf@?2@6E->`uwTSJ-qkm|#Qp3RH zNR!Ar-8WdH`l?&Zo*jWRRWmQ>A5@AZ>)B>>lYf1=yhL9#$h`aSc~~imYyuQ5n(4!&M12dOS;M}{jyK{{ zcr|#8un!@)Kl5#2kB2qaut4Jo{#3VHW4}OdShR|K{dv|;hGHj=f?NzH`q3d zs^G}M#zkeoJsrxJ{I!~xe)vYn^^!D+qN1m%a$+ma@^sqjH0jPwCjdTOauv~-bt)ga z5wPy5=nxYQ$FeqfB7H|P8GCFP;XPxLOKqp5(~>`{293D8VPxN+OCMSW53&eC7mHBN zvL}Bg>Euuf^q8zSmuAX?1VxMMn?@@s1=mq)&OZTM(%rLWne_>N!Jxjk*Z9RbWQ$`o zant&(05TgCO-9@h(28X7Z~iXrRlC{lJ`x9Y@4qn^)moChba{fMVB8ZxzPU_NM(bAJ zl$=?y3(r5rJ-mT@SWw}}4v|iOUl1<|R@COwx4m$lo~8U~Y!?iZvv6vOIhW6Rid6g| zd?`(ZfI18EtX_?J3-?9PZ&6OC+|3@>YI3=0Rh~DZEO6%pB330l=$IQ*E;}S3t_=xO zY&VQ^570?JD2sg5ej=)E^A>u`guSgGJ5`1x!WFLF{sAe}2tqpN8zwfxAOve6Zk-+6AP9*K*IUJc~h zmI}dNHr4{bB8W@~gu2)JR{CaI)g$3tS*vOetJcCkkRntNAZDu5O?k4ln6ml-#A2t6 zgHgFY6FSD>>RxpU$g&8nF7fIu-WtPC^>LF9pi(bEIm?f$|G|r z;t5f-W?6M{w?xaCr`~8gfvyQLWx_<%CmpPe+C(57N__Xvlp6>`SeQDCae3HBu-SXBqC818fpH*k(ptN<<(Q$PJ z3-_FaK>XKh{AH`en3~|$S^Imj&+|b~W*`^md?)qwIRHQMqQ501Ge1?*H&4>t@d@@_ z_lTa}s2cU_4#aS>hRXn$|e7VT59TUhH>RM*wYgK#ZX znMsW}+}`MEm&wl-wDlACDUe3`yA^+k+q7-Qr{R9DUHEJ|7zQXGC8k`&WTznlg#%48 z0=os)U;GF*Ip8qwak)n&Zw?#xNKsm}ZY}zCG@KTW= zet@8##-ryCR2wOWsd6cxyBzx5m;IX_gE@}=lOQFw8U%0$ll8UHxG8-sfjgA<-;yYP&`xyz_nuvTamM?;>-ajy zD#(alCmS;j+A{*YO6zmh_&D#ihUvKQnk1w~)PAm04;g;+XN}d1?Lf(%*`N-fgarl6 z%)vghk+%%r_99QwmSyK1M__wUcq z4sWg4($Jsw(bJbcDI3OO-Z+SEh5AIzNGWdwS$&2ju{ z4tI!8h5>&X^b!g0yVA{rQti}p(Y1QBDW96<_WXWlqol14mZOKW8UPy1)pQR@bdCnp zNqzhcOtmYWqzYcQxW(G?Dv|xAk3chBhIkmqYG_v7gL7Mgm2kLJcP({GZUA-RFi7&x zFg723u94BXWby>%4f;zNphwnflsCO^&R$J<04Q96f7)53q4VNd77AYKa0QUizXRgN zlJXK1Sa10wqG0NUlzoTFHeEyq=i<-N`$F!b+mD`Dl%qnz$oe~#7LZ6U?vAi{`aTp; zRGa3f)2;XKxOyc&*`&bM4q<)$WZsM^cHX4LZF}PO`3omC6U!6+vV%qAqPI(I#3hM= z$6B<#-7ifQVAK}I1WH3umSJ%!z8PBZvQK>dw>@H6ZuG7_C(?23QvlR%*dmU@-%!NQ z4+Hv4F%%=njWW7!p+xK3{hGDSMI*8{4?em_UN6qouY&#wh9{58dfb-I+C5|0=&xK_ zNpGTxtHJ{ZrJCwlK4IA3+R*+g z6h>W#fs%@ic7~rc8M9R4>Z#ibUx)qGeXhF6u@!q#!*YGSTds*w{gs^-1o7TNy${r3 zSPwi&@agQA&B*?}wtnb-lmlwA3B2Fjz}n(rDgPcqWti!o1e>fd_a8{}J4U>gY8$CBi~88+#ZVykaBEtNmqrh&?Hg{7 zB~a25R*hp}?f}OjL?t7*PVjA-Z}2dse|K8DsG8bNndMldbwc@73UINu)b~y>w<)*AuS;SkC0tAOZiYnXYToHZ^50Xv0*)?6V#_>hv^3gn=;8_u1>S}=Cf`A>2Ki-hkQkiRpabbQBiC00{$}_( z*VoBR}uC*ExRaH#9CthM~jsTKWLD|@25rTK_rhQ~*U^*)?2m9YLr zo%!(5NJ^j&F)0P}D;`wF6U^ke3b)m=u>QxtCZ^>2Uaa{y{oc|RvVtMQLX*Lml~_f+ zAAj#*>Q|S=_hyM4j!e)W)=s9^fBKYp*VDC0cG0b3ff#bVV6+wEQrBb%?lf)TJ1XEg zH>z*#dZec86Wzwq;Ee7)j95yEMG&@I-2uPy-3=E|*}de6TBa2)oDF+HM?JM70sbXr zChA6*vX4;jbAMDE72&YJW0~h17TZ8px2`!CV_m^ocJVisH=6==mQW)~o+KG97w~Tw zy>$N=_}pAhr`B;#>4r37)(rTt*kBtph*9>Fbpw)c4f}hNbT1Ut6L5E4Cp37*-iocP zu-vdZ{HD<_B^?fgjx{wv7EGVQR1H19$_3=ngu(I6ssGR?8yLvq)hks6WT=7?4NYWX zyZRDJ-@^8n7p3LT>K8)lt*;Ir;3AXK6CN`G8csA^E0o6pTN;VH!kNW6pwVq-Q$6~7 z{Pi=+hW9btg8)7FFX{O>g9A%Shx%ZcpndqhIxPh|Cd>tzfgTd)Te#9b>Uu=0;dU~^ zJnmesMW1g<$MX@R#G9?O*-XsImSSgg4C)qS-xM9XvG~&H$xfRS4{P~`8~wsIHRcYS zNRG0!V}b%%|HXgw#dIQK=>W;NQG_o28;q{x6&D2x-Ebd&?sQ6bnja{u&Z()Gery3! z^mcd5U*OOSx?FT0p4RIEZ8G_81a-FSSv;8)%xTf?6Q*A_WBmO*|B23i^&UeN@fuCv z4)*|z{G+CH?L1W0!&LODM#G{JUE}O~jR#WBrM;%TuobA3yGMLIX!;J31U-lUnjugX7DVvH)FVE5_SpEBmE zG(vuguer&7K1!ShzKxFMoIxT3#T^mEwH`*Y+@|Ytyqk0ifU=Jo{TEp6(`_=h zt*YK7ScQ005tPa>-;O^)?y-=Oo+@?7^o;9XpRM|HkB9(i zm0tdJ2k2c5iU~N{wAN$(Vp;mtaBdrVaqLP$s5h8WBmV%ja~O11SxiXy8pcwE8ofJejm!Zm=s!HrIkN8H+F}_e39WXpU z+;s0ULvJmtSIS*m5mP;ZKcb1c;-S>8nAD?le`BH@SqJf8mv{pU59nJGv71eMx;U%f zb0PxQ7!M(7J78Er-zodRzopuIk!<6t4w=O(=Qy|NbQ`$T~?Y@j!m3DgqB_B>y- z4Pns;X|Zby+}4}W++P~+0y8W~lTv;FUV43NER8;o^x!+rc2J&peso1%0|G|KZ5U3` zl5(%smHSax9u{jPvtTg)7(_Pp8B;d%worW=YfDqI6y-j5O_0;3!qC?vS+m;6*`DW6 zl7k6L?Pg#_j&FzzmWy_1WrcBq-fJw#=@xlt^mU6kCx2(%4G4Ex!M!zj} zAfILTbBq?Ll8Zyjr>)tXqzhd~^9Wxy1EnVs7o&y$Bm^ zBPRcyV46l@OtSEcf1#Lv!HCXDx*@J|J<8gLe%+e+Y_Ck%@6`clv9iytB{M#yin+=8 zc^OcP>e>>XrAEJ;k5U@_G1fNRrW4h8MQeexG|Cv8eXz03VcmZnBbR|Pkka+`*No57 zlo62B8SqT*zU*U?diS<1{;RylsyxySg;zk2OHPw6R%V`qk&&U(v=}U(ZH9yufF}EFuR|?b7yS zDQ<2z$DJF??l(%zd7UP)j|2`+Bn5bl1s&VZ|DfoaVIIJH!M}TbY{%AWovBz*s^4O* zweCiLbNY71YnlG^U{SNoCY}@_YauBPF5T6UE_7FJQ_^+&5=98-n6Ww4w_I6UsRVdu zw|sVYwJW?nr5Ky?Sl@@wnigJcS6J8`T-T zL7&RC3XDWYZ=c&+7JP&YCRTR3splHY9Lp?d5YtV)MtTEU-$w>~suf>dQn2RAS3anc z)@F|~HsG)9(<}|t^11!{#%}9AOE7zsr~j=0iA}$yEB;H>W@o9uoY_v_B!ypqhTR^l zt4?TqhLcHz$c(~L(^Ez`UWnHOJtkr!&Ob4uI}sMGcjad?J|iGXLu7AQN(<`L`v^UY z_4*ESCd#(djv?LpwS{F67CG;FB>Qd#3@YswXTDs9o2yRHU5C__OR7u@Z^};5MprW4 zWF1TrMuXR^PtyKO3lh5S!@mH{JrM^w2h<#OP|0;i^w4bdX8VIsac{qMV|1dtT_!KdiYem z$9N24bKR$&_;0ReM%F$069)REXR0jpz}|Gl5_bYv7kFg{1>_sLG6CBkx}+HjD}BCW zqoM49pmfU@bY@-m5iP8W4710p_u+;59_JPUV8mO5EYXGc2c$sJyVtmy&-*e)kG8<0 zlwIl#sMig028xUDk;>vj+tMaU<2+~m-uoW$I(5ca+b103r}KVPJ$ijkoucb5^C*pJ zIUui1t@t^V2rj`m7%u!vsPV8cqxwlU$1x`{{5u!PTV3}Iw`H}F>o9~$Jr6Pbf_2FJ zU&C2u|2(=AcqaIfwcOBkIcl%C1SICyJ0rLq-il~GCJjAB$$G}#FAEl!QzSnhp1VVu zss3nJv0E;umb7Y@f(|*IbT=}IuD9vs)HH3=($h_;h~v6flF_?0X4CwSnuz`L0&Fo+ zsbmsu+Zq)ywmk+GW|rRGfE!G}T9AJa{~KnF!-ISPwaag0{TuRQk5-v|G-MOciH8=h z%lb3x)lQ@jZU+uw-`gPyCh&544CUi$bCtOY7J@;FHRPA=DaCy4LPtDC9Gi{$4Jx9# zI{-WMQf|emJJV|4YKyn5k{`#3v1xk-m!BBBZer7fk`#DjGNR5qe9UIm z{#;GkSMM0g(O&ypk{tKnk&HQ1()03Ka16A(;s6B;)IY*Zgj}k1ur@XCo%XCBfEv58 zhZ)ZXBL~*UmW&;h2#lp#kc+79&^+`3w~d4tvAL++uSeIpQo56@A~h}9NN~J_JOHOn zSO<3(;3Req+wHry2m*Enk+rMw+lXl2ZA1o>;0l|HyzVRDY{*yh>F&JnCph6C8zN(=G zXRW^-_jO%*5s~t^X~xdpSo|~_NNTX?S=LC7;FuIXpM_!P>eO=653#Xt2s&Af%2~$N zJ?s4)P3dvi=$_-*-R__3O?h!uGNF>Mh#l~yzFB8W8-f4mpSW}pe!I;hRECsnnAMl=0@c_BzpXLcdaA#g zm7E!H+pSk_84{YD$vHvq{Q@0}(pvYXweyrK9=%gtig|f>fQk8jO!iOv-Yyq(-14xE zQE5!M)I{he))=Pio)Uk2H%X&kFL=XY_c8bXH@!(B09`vLd}y0HQ(>k#TqNTbo0d+< zjL*|O%N8cr-1Xn+h@%htEcIRrmMF6i?+5|svxM1EdIu!MNGRSFPJg8tmMt{uYkz@T zm;Zb=kBa8`kzETuxY_!-LDPWD7fNYG<}1=~J;hC$RBLD)=24n15T%4t&iZvSLXXy1 zeq@LP+Ze0@jh~eX*PIe79zuO{4wW0jF}8PkW4iv z3*}uw9C2$#PS^a~&Z7%si}Y$vdY}O`F@tW@6gB5Vfz>7{Ade8g8Vs)mOSy@ck}7UG zxFJ9HFY{&#V8E&~^j)SE&i}Vv0b0v6KpChg#E-mIE#rPG_vZ7}+3U-m==ZMAuDyRU zmS2W?T;w8x3h2^-y7GjJSxT%i%IrAVCbV~9ww5a1xUb&#?;M2IcC3q|X+ z;MhU5gB9I9sXTCJWj}rh3VAJr-AL{4T56rkT*|m z&1-coe-U;^)+Q#U^5TI)8)Wq=`sXS%^dPDh<+@PnRADU3zbIZBf^HflrRuz<{tiK1 zSNlq!zKH>XNQh{v-zNYRaaJy;!49_WIw1(h?EDr<=8=A}TxA|@cJ zzA{PBE6`o^8>ldk7N%@1cIq+OJh4{BHL_)iPla9l^+6upue1JuI`Toj!Q zKi$*sav~D$GvIcp9U@49tTNV?_FrYJT{~KfmZnLtgalZ%tOLr6%T!Rkef#iMdjs#D zZWgvE-O>Z|xbN0{D!qKjB^Ra>938S;p?`d>fhOAjBuO3^cD zin<-(xlys&1HiWyN_!Z_xlWv#<|DDgwDVW8X0nD-EE^_LdwXXi(XBTS5bbLFB;etLT>-Ila# zM|<6tH#gB;=++>=X~MUqD(UJsBEkZWrAc>_Y5AOo=7BLmOxDNxBbiiYyLTSyKWYdZ zyB@JRpz>l#c>XGe%mfwXc2fnBDLs_Ylnu8*bq-(ZQUvVz+Jzg)5ErfzOtgd4{(9L){f<( zq@Kc#GeDw)a^Z$YEz;^{cI}F{cg#fZ8AhZztv;=B>zEb(lR-6;TBuj@BW>0&Hz6lR zgH67#DmL2Ntu8A62BD>mb7S%1HA-RG?oWB_MNWjB5WNXu5Zu9|Y>UzO*{L-dB)pox z)N?yEyW=oi{nAYP3(RI$$*`}*Y2fta(congpiKuilU3!}qkm-G>YSu4=J6NW`*N|S z=gAs_yh7_PG{T(y7s26AXT`u!fxnOJhdx<2%(4i9pfjT=KRbf?)$7ci8We z1-(G@$%a>l;&ifX@rDeFi>%gC9kW1g`kYwh=#`c~+^^d=Eq25H& zimR7bzlMHO9L}iKj|d2er$8=@ZZvcOXkCjVf3Zt#IfP;|9=sM`K=8N}3Z`Sm_8m9X z|JMR}nLhMV)HP#gvfJx@nHNBdzV^d#$^xxzb_^~uRW~3hT+mwCe%2eo=H``{>$kkieq8t<=BBE|Iytu}C_|mmn#3oQ&1Tin78HRYD3RwVG%KCNS_x-A0Z!)Ua2~H>{s($9Ln`N5XnWcS>{1D zV7N!d^7fOD17l$)=H2>*D7{D@iG9g;mXVjN3Z%Mo(X~PF&i@WOTK1`iaS>?NyiD7I zm{#d_7WgoxS-mGU$JA;R@n0VeEW6da3HnrLcoXtE6sZSPXUsiiZdv@0cQQAcCM_2) zu=muHXy^~2qWjkC`Qf6n*dHlrTOV0-Gdb0#6_e-`B}0THG@wkOg~TCiZoSK>wG5G? zFY_WYvkJco)#y8AYa%4(MDpT45tQh|u3QG?y~m7_f)&O*BFES4zu>#;OqUj?3bPnC zvMh}6T=cO3wjZiY?RyEPP2F(y7v&fKT`D8Lb5UH&(B{9A_LNv}4vY~JSZ^ls$G(og zjsx$7Q^~@A&H@LIkw*{NRdX%=?v4t_M;cJNur{wVh062I3ROmjZ>2(``c2iZiw|78 zhHP4mXL(JOSD!e3|EJRx4(6T(d+ye67_5!3td6Mag z35fd-;1X639?_r+-R_$nT{;uy^}1p9E;K&7+G|WD_OcYLxC)d%ZCfVz7gB?B1n%r? zys?$td>oqE^&ExB-;-&0zImxwJ4CIYjC3m#MCviu#~r^ZcL*K8%?r-%(25j_4s9qn zaogFobuJdU={8ualM&n5x4m|UdBhHqcM5j`OH6VhYnfUx4)cO)wGOsc%`f^2RLyu) z>js=D_iVCSPfPx>E}AxdD6mp5&;kt1jIpw`I1?b~ z%tYwaBwbF`eTYTG4fZ`SXEfKj;cPcZK4?~Tf|Q(&l8+P7(!dtS%&Pw{t5V`ZY^LXx&b1GcoRAtb6rmdvW+`sVz)UO^}z^=i40cxB`VI_^#1htKXU z4`21YpUVfkPkeK$?QnC*8w9o(JKtIZ7^WdzvFSmm?7QzaMzo=bhlP$u3H2+%3Jr__ zm1F@HTRidw>+-5!7nlDPY>)`M#euOh%t|*CL|Ww?G|Mv4uZV@RJEZc)XIs*r;dBAR zZpkGy`U!ma(Dd;brgb2X2jaRA7BxwsBQ;JzZ^iSf*N*zmuM>Bob0AJM$VT-y}R=8bQQLST5=}r4wT-xR>HyIW)y~??e?CE z;hvrNVkn(R8;EGOC?8$s#;%Q{{;M}YVtyC)b9Drs{&+Bi{i|PK!+WtmmL|SdJ(Jvr z6Erq(d&^(lo|_jk;dP2MP&cXRxa#$$Y$~_qW78kMnJn{w(^dofRlKOha`P#3Cx$KN zj)|xzgG1$~K^f?~kL40eiuYv`w+P!zp_9ri&5BB+Q7{t2AlFy53r!Y@n2;;_K~OiY z10?el_S46WkrXUFQ`8iNMb-{W{w`tIm*Yb-IBE55DSqvc+3IJo;K|Z^HZ)2?o_v!O zQAL@%-;@e0Y!QeF1C#_>6D01yZR=0{!z&&yB?D5p(fd75F^$)YU&(3?#4dgm4=zMh zdB zi+5*aJlne>-Munq5uW=*abf%sa61ZRP}U z8*fY7X$}5!6;HW3|4^)di~lPV$N^WhbBKWvoHkx${u6?!Y`pN-?47?a{pUaqS^JK& zBkVGYo)J^Q=s!5NR2?Pu$gUjQ((tClY1DX4+`4?9;WD)8W{Ns~%5Owj<&r<{0B#d8 z8qWkEzVa913XKIUVHi4NYWdO0YiV6dR+M6fVETz=PfKx0Yc4V7O@!-dz;PL)_L)Hk z|E2ghlgnN0PPV6Na$PkZv7(jExZm56VlXir%5EY&-i#!~0*>n*f~O$|-C%Dz!jQOkJVKnr;C z2W%93`jE2eTc?UQ>3q^BgmxBd8+2r?Q{&=?l?)?MqzWvMEn~R9H;ZYw{oytzV!)hxzLt?UT*1500P!qG3{D-vJTIEZDeSU&sUKP~Dyi!6KvJ!+!! zeSTNIhV3#Og+*`gR6AZeF5ur@lMeH(fRAwnWqnnYfBF7$*O2cB6#90`?u+c`zF6?P z)gsw$yUlviNaL_FzAM0m9_@o)30pbTc#%MV)r>5LcvT4AcO@@zGm9S%2Y#Nr&RY4X zLE@VQG3gE+(W(moQ6 z+AYLL2YZh5F4>k(tK~$dmQLMZjSF}85?~5!1g34tnW1Y?#)p=Z>)jg*P>0m=v_}T= zNLnYV*Oi{$x$VyznixMh;1PJFp`CZTb+$&>7#b8e`?AaM$DK=i{xuUS7*6^|qqe3T zdnydeC;J;*}8fG81j1iU(CKuOqIBV#bRv*Mq}+2hWdMr;mE|hWR#L%*KS9q<^!e zK2{gGoQZ|S+WVt)#@}Vl%Bp?e76t3AKh$`@#jT|i69<`ExJTK*z{i-OD&J+)^5hhY zMa;zQBT~;T7JGrtxVl(UnZJ@>llzGL=)T4l=9ZL42W2T9aA8#WvT@eE^j;7>Cd20I zIq{V-)Fgi6jfKU*NnLE4!1w*DbX_8i{iTcS&~9IEfN7KD@`YCy+DwvvcXU2&tja3D z;|HE9Ziw1YOwHX}aQlyK%l!jNQ`cbO{(d($y~j0BI^=JRqov!YUfVxiGmRDP zr&DSVY^GUxX*^8%hMQU7uEuv6ja!!hX8yd)*WnG$n7di&+;bb!6)&$|qXnLF9nb|4 zS|JPfD30N#@tX+8u?6ClCIL2`ATDA3wN(ujQ`TM&#mjjArDtwP;kraHB*vpN05v!0 z(|wxa%Kk1!zIA}53~Hl#nq*9g_1Z!^J~H^pm%fQUeuQ0q>h2&odm62l@^=|PzLB3m z!n3BRQUenjX_~UC{K!sLKrd`xzD`-HZc~$m9ksehS8hZf1^hchqCni~2wg7Rjr_mH z-$qs)_$RQ|#3bRBhZ{w41}76?$Ib`@Cj#4l?JmzuX#F&ynd(W3d&gps@yBv@$qGg) zQ!GruVEY(+`P$?cS0qJ3z8OSTox4=IcOq=KkrE%fC(= zXp%I)m8FZK9O|l9Y9pry@`JH>uctk=E86$-SIDAzrWRhc{fc`jo`N57@ZiHP0=P= zJnUPl7U?=&o`1MUOOEOgnm8ugX;4{+!d$NBM(5tK*^svG$OU+OJdFj1BYW~*)+2K! zD{fTM!|4Y7_gBV@3s~U^)sdAymOQ9xhP?O} znoEzlzw~rBLeYNpojY#E;Gobx&)$u~QgXu#q;}VMAO}t^qxBNRyI&@T>C9zlOfGEw zJ#(xTd=M7+j3dp#%((XkEjeLA<53$LL!kFK)3l9f0)%LMbJ$0F7d-Vovbn~O>f2J( z48&b#+FVGtKK5_j-WNWluy1B04_$Ls{f8cE1x5EhbS&v=^E6L}G1O zNk{)Yy+e3qN48Ysfr!wpgM7pe_;R_!i@0+;YU`Mvi;<1e9qAe7@XU|D(MPty`ymE3 zPB%$Qlh-v(MDc9h;``Se`;wQ@XD$B_N?!}o8-mz#;8#QL@QW<~=P9Y^}d zS;~2pHnF=a6mhKU(+6TCvi(;f<$b_MB&FHme-@#iO&OUp1^hLpB70?~02d5V0-UTr zxdp+;I?*XEw8!7!?_1YrzBrzsjj|nP z?>TSt4sDgR*;x$oS*0E;@p|31a!bDX_GKLlru~5H6q-)Fo_{L8=|9N+g7VFBA!zoG zVvHQ6i+{iq+ikfqBHZ66ko#7b1CIu)Q6Zs4c{}rbiKa`8+XekMG(ewZ%gJy=ogQbO z{0h2V#s`zY`Rd5%U3JSqax-QCjNFe5qi&^?SWz|aE>Fu*X(%lil1Kb&>e zx!2kIy7p&VEZNJ{%^h|81mV{vX&3E-$Xb?3c>u%eJwp>a%rkn<QS2e}lsREmm&BGd3UkCyCBs0N#XiN9$^2@o-uA=3a z(T0DTF2Y%%l`!3>(DD-VcwsbyV|^orZaZGQI8?N>MH0DXQXAr@r0#a}Y|{-V5RG`{ z0;sl(s$zs7{UnpaMkdR`=AGYUi2SjLFV4>wjo==VN){8Kux+V)Qby{?R=J$bohP)h zH3aW+BF+ukx>Tm-2{(>|K6jv0{3C1k()o$2auzgsL@V(F4ih5mUhVmYnEjgnL5Gy; zoFzO&o>@4*w7TcvRvWqy8SM0=5E$W21{^t{N3N}+%%HXcDWqUM>Td)w>`Iq2?^CJ( zA(%e#bKrQ#imsV>vF0+@PF-W29rQbh#o}{5GKxjjD5LX}b@{ro)cY2xPo?PIup{*) zbJLL%VptMyvgZu@&^y1_el<{uZLN0kWo$wAvZt1bb+Hc*HrC#^^{~Un38$>o!^=Q^uXtz>N8i@enK%b&3G!yEZ}%myyReLZMIlmTvM;df z!)}OsecOrv6N1^j<-Z`RVN&x~Q>0}$^I`8bglw>+?a*VF9cNW)Y=i9TB#v-4hk|#v z6#P-yyaSq}3J$TvBVF-Ra(?Q-;O`{m&ea*tG&f`EyPDOFBl7LON|8n<21nW<3!tk( zCUWNM!9sgPNWG~IijCc>J{sSFcF*l@$4QvhJYou-rm(yrMJUrGp_&8Vi_q?;l5zep z;S%}WS-90~%3&JS8J7rEBQbqq87F|2Cj5+@cg7oWsW{{F_}31DhyDkUzV8Xib~DeT zmcD$wY#^yK(9<@_5yZ*IHnk-cBIrAx@?B(^UQ&Sm^NmRNhOZpX?r(_Ij>4_;WMUAx zN0|l#QVKI^y4~A*RPA3F=N80x7S(g@vKtWRQaLELDkNJa6~umP84bT&7YL>__}PR! z%{_i-tob{?Nv+pRf+-6~5)3@azX}ixgC8QVw&|J>9+}4vn$BuO^3%k{l2by@LhkdR zLc*F?EAJCSL&8X-1#a*23@;ROT-AV7gqi-wh+tQ(${J*vJOL@GREjE3*FR|Jrt)+J zM|pnHpcG7--QyNU=Zq@OAdS~1b7+|R6Y^tAK~c$s=9?z(nf?HnTd9>#0ix1X#NfK) z949)7Jp8D0D9RCz&^Pj$mAQT!FXn8_5v_7MAlTUpnyHR+n1Q-@sx;F_`klvhu>4P=4I58w= zJ;97EDW5t}*11v^cinc|uZ;($RWK0low6@ykkLy(oa^fzM<_vor#AUDLVj{S)`s+u zoZaH4Kt=h02uU*~4&RFdl&~f#lCQ^+Z-Hk?VYvFIIQi8qi#F%OtwlF%85unxt_NPB zxvB%?6%V;J(*~V(&2fxY)i^MIx9yup;n}5uw}Oqya)-D!6MX5yrV)cW(MjpV`!~PU{!w~n z=1vV3k0dn}BGZ`zO7bVa{d}H^$S~0iUdZ{jD z;=5=~K6!M-C?^gjwlyoUQh$gd3)PKa$%tfSO zF((k0)T$jBE!OONDv5M`tIQ;UoSRH1&H(f=RADh}sgP|1E z@hRVq56Y%A)NMN@$C;!2od3hM-{pS21o&8xso8fYli5^aD;%0Ybn4!L|K!OXx2Q`a z2eEC?N~c8tZM?W;@huNr5<~pT?mhEvqq8iQ$pijQchBnsRKw#>i}!s5I*3LAx)3#3 z?=|mV&3t`#mj$s`q2gvESovJed6Oj7XXqMp&v>O`15{cgtx%&5_0a;Hvo6cKu2&d= z@U0&$ijx=8wuVoZN8TC|j=cYO`)I95Zemm@Ef)r;<3?92shs*3B}$_Lb1}hXYndwY z+9I}va;cNE(tH2w*1Yo_C+B*uo_jL`kxx@F;qKU6^(Su$9~<4;Ui$n z=S7saSpbifW@2ygQ!f*ByWd^@;C&nN#ZGI=3mjO7A80Azz;$dF#d4TL6STa+AmE`j z#cRN3?u}0|=%cM#yq-|a-@T6UX~Gf)3k#BiF&!A~kl9*Hn#H8Yc?qB7I#XgVMfTHB7Fi+KugfG2FJYd6 z3Z`8?#A#r!5dH#uZ0kFelYTj9YpEv{0?6|%8y0cgXD}#?Yv^tPvFPdJtzQZ}^#k;C zI8;B!}?ePYya)&omB`@yjuL_ZKX zxP^}9y}9~HO)GUlF<3khfDu=6rFTjo50rY`QF1zlfSLZsSMk(b;R%4h_HSYi(m5?? z(DF68E^)j*t!(f$G0H)TSViZsAGy2;*8F3=5hBi5F z7jYuDM}Kp1Cc5##n{&leC~$sJ1A)1GWE{yJs#Dk5)cO~DE`H+Ib_kBgDWhpOc4@+rYTAaRsK5(cDI~4m}#Bv0t zJ)hvG%S1Q#*TDWM;qMltmnOmC(6CXQt&eG#%{$7Iq8QHz05;M--YAP1U`=k;6M!Uf z&Yx7JY}F_k9te6&#{O^nAIjD+v)yEYpFORg`1C^9F|al?CE8o_54kys1<|sMJ#1&y zK-x4el=0hoQHtI9xD{``PXznv14q%^{SQXA4t%p01CVSZlW2DzL0!SUy$n&|nm>Z6 z68TCE>Mo}D0p`*W>uVL#0)6`8E6U`QNSC-DVSB^_u=d^D$9nYC{M&;rPrG%`Y$u`= z__MW05Z}3kUM{i)*3`ZHT#U!W74FPhI`3xjKfL=2plc3hUHUZj1Xk6|25Hoi$UGS> zKlJA9g(7}#c@jITIZ4X*TT{~^o94U<^RCS(Wa4);5ZYK@?Ua4g`{!=nUU@l%fkc)b zD~Cn}-+I*N%aAzz4rg+E8z;^tdR;xQZDw<)Pp3!A6DML#Cp4rNHD5GF@U*CoXU>89sPd{G+P$lP$=sDn;1!4Yo( z@+cg|nab33$4+JNbHU^v?%9LlaQ$Q@L$C6C0hHGkFVEC-wK@;81#~9xkY1NOaRQl3 z`Tr~&jDCC`v^T5S$WGN>m^_F+KQfbcmRbhV1$?wU>@H7^KoNH$$p6SXZW-!Nc5Mo2 z4l=oXcqFHMBYSg;dp`B$iSgyVGYl(OtK;~OmCdHcbCqRdJ5Zt5#^smU4-!tHRY@&` zJ!M14Rb97&SgXvHR{fc~RA@?)ckMO+Pru)d3`%Gtt{K=+B1-F=`Ej8u6i0OSivYMz z@ZZq*FsSlIL@%&Uo>&&uXjK2Zrn^+{jgkj2-1!l?JhPF7({-L z0aDTeR7DtTt)dW&TIst@egS6a>volgx83Jg+0@LxG+r^?$m}5QP{Im8(9!RDS__B( zPfz;mfyIu;76;1FBHVfZluKAy!1eWewLfF1{J;~vX&`b;W#NWsvrCvyyb3{jLVnq! zvuE5Z>r6}pUeap9FkvfBlB}2?trHgOlt1ub1>?z?+O$Q#xb7$gwkWFbdH;tekw<9G zEF?zljmzIuKlxdII^YH%4n?|Nn2blut_*8D56F=)nIX(j{UJNt6NpdcJwj${GS9uP zF39j0nTcnn#zf`QpRz|iuH^SAzRTz75&q(@sXsc%{Bf6`0qH;Lj{o<`;{n8HLww3M z=1_XjE$6|wdh$RV4PuuDA;EySQ+ZT_hF8xAl7eUuof;m|n#sV89|eZFVeoP#NlBYz z&^In&-SmXWEOi8DKS*4%UG3H$)IYT)ei%~KT}@%C{K|uQSVChcu(@%{1f-iRa=GTw zFLd>-Pt?VHjHjIh)$)3g*5L)%=))Ish^XQEb)`r%JNlMf=p*D(?stI3aWiA!#v)Su zd(Nw%uZ((?vu^?KL+J=qII z2Wl`Z_3=&RPMk-+S*;O)dV_hhAdXZs0ZAReO_3N>c?@XqIo9acsbSA7P48i#?J7=| z*A*vXlvZ{VUrbXy3Tx@$-6HZ^l{@nK81+(FwF@l(X}=5d-f>3r^;Y=_V+P`u6(+vN zzRbZ>$s>mw*Mq=~^G`kgA|JzPoKdYd6h!h}M|usu|Lb$)+KV?L>AL%V%FJT6okDrm@81ZB&B~(h1>z|ugY+;* z1yukz_Y$8Tpu#Cev1M;NY6vCXAS6wq-f7Y_a7aud6KK82>`!31m=2$eZARvb2!#1q z{XRX0ZCvtJElEHL1ulNq@2OIv0~n3s+6Zz1kt=irQc=!#FF1PNDY;qKcbmXCF{a*X zCA?lgL=;E00Spk=5T3$Tvfx%V{~OxM^9-*QwU~r@w8@~D%%Ls~2UiR>A+`4|x@am7 z{CITC!d-dX$7sfUd^pZ@_$*6!bW)D-Y|CDJWrVUkX85SPA0ml-k>lOnEs5cv z43azhBl0Ik>DyanafypEt zHqy`>_4|GmIWj57Ega5AD0$O9bPKqVUXa>Zg$5e zK_#G^7Y!cz-m1jvN9l?(MLU@SqS{-nm2vc$rtR=&0U1TV0;q{=dYYdFiR~NNA9`3e zY#_KMsfU4iu+UGukAK*p5GK|&j530U@yeOeDKcuktUpyPW^mv*cF0DG2k6}BtvQbU zu`;puoh#bErHlBv`r z>6Vdpv{w5!QAAF49fkEX7@BZm9j2&u z9VVh})eqmDPWatkHCg(FSp$0`4@2Fh=nQ0oYMAd{kY@M6om?By$cvEl+1D@?L4H_7sStYsl1He&zS~Q0Nq2^!#l%Oc zSh1jfi6(cuGd=N85tMETI%lq30`igv0@)fHO}h4hROp$ZtLFWq8+@BJHaCI z2MB+WxQv5TwE8aH;*3qLrANmulv}C_kHW$|b$n#>}v#o@pc?mns9BEdW zhWF?21oQnW;lJ5{aw1senw#y?M^2yYm4+lbi5Ir_*qxMx4sJA9I*lX;w-YY2gUJe( zU42mtFT!n#jz=5Wm$3PLnA`=ut=nsJUpTG9-GHxj_dI8vaZ4)vARP1;_X+<918Vm; z^Lk+6;|=uxMu0rEj-309><6Z#1SSkA#2y5bn8=363Z6IBs7GW4`t1bhb}T|@+%LLE zPYr3u9=He7quGK4H4aMPwx$)Q^fE;B7gSAX#zm}W@Q0H%2^4dt7UIVc6MPIXXDQ;FWd6#VjrX~V_q-ZBo|TcT zUG6rtUG5Ejdb*l&+UC1#TQSmZY<)KZ*ahLP`~S+GmFKh$4gN8ZP%~pW-*tvJ#v^J! zQnF)iQN#b}1jd2p{#iA&N@`E`J?3}w#uny*R_WR-LI3Sy`9*tCJuWf3zz<&QD#>$? z5|Pq{=zrK}fAv~$%$!7LKYTUzEN#9CZAL;pcLb;Tgu5NscjO}7j2w2~FM9|9>`RNu zthIy^sWNpa{Hmzs8`**SOZSx_WPs61M>YD0wE9FhBTtbMf`RwWtpV$JS9XhV}c@OfE9y@RR_ zZjk{V{T8Uw;L_ybaC#Zae|659B;dumZe`U}el=Wf<(cyAz5cV(PP9`M+FcI=<0^`U&%{N z;~v|p@NN1WsU11IGIV&@3Ma_m6kC-j1T`}#zz zlQ4wIqRD5N5HZ-4Syrou9yIEScTDH#g4esZw1WrZG+7r+M$OHHy3XRACO=5xEp!gS z#L@Zz_`|ce6I0Le+rZs!e6oZJaFl?}nWKr?pIX4aSz-~Ll~^JSx%|{0=Km_^vTvai@X{Ms^7&gmvGDm=3CGRfN4}2Ko8Vo8{qHD za)s9>lW(EI=HZ_H#%y49((e9NVt|feRfjWIsm4m3Q@KZUe~+9hETuZI&3id`_fMsJ zy>A4vw~D(5$k@Y@oUw1&5^esOODyV3*IeO&X-e3CXOJP4cpv@Mt4SeD4`R}#{e)2} z9xNK*duuTN0rx>-uc#Yq@L*X|;6?C}pW3!=$H(-?cm52>I|L_LPeY>XE&3^d!*|Ag$6G@7X{IU8TkAs=#=!%d z>ok2AvWIbZeG1;-q_%K-Cw4E9d5bN*I1xPufe2W=tamn|*D#i$iu!#-8CbB0Y$1GC zR~7zCHqQ0{auer=BGAg18ghvR@eH1u<6!t~e#ZQwm(#p)3BC`Re=k3cSg4tRBv(US zTIB#5saWB84`&(XTnq51C?ho4CZ6xOJFPZ`mLrvir25y>h2rv-8i<(7H|LnDTHQa5 z0l_ogz(E^f)s>UzGKfokOFS~x3H$O$_bQ6$Jz^lc!UblzEU;{`VV|Z8ioU)v_z^j3 z(j?;(QfYP0v-T|L@_|WD_9Wx+6{lZl+vllTFY%y zu6JX4j4`eNxKUIED<=~KV!jF<{9(**XzBKcaraUTIrW#|*RUP~+7$`5HgWZ<7hg73 z2;VFIN%#7(#%xm|2_)K$_J50pMeXiIV^4&YG*{Y>L2~)ggdo{KKKGn)Y6LSR4R{z; z+Q|c249GGa`{KE@;PZBy-i@#8)9`+|+CgLby^NG}m(oR zLtI-8To0iq&au1~WG>$^eXIK)$O;JG_}6@(f8Dxt8t6l|$0ifM6#Cw}aoWz}4_Y8t zi~!zDY8cLr^$}N`2`G<;b7nhFcLV$$e>7EmD(K+rF#=Bv_vTN?KkT(1qSet(hrjU> zZkt&=54Ju24YZ0`-w)VOf=tyLK%~n3A$iiuki&l}DFad2IfYaAU!`2LC~q9);sK-o&h%N% zmTATU)FzoN*e;yg``>@PN*n@fhoy30>g7MURP3cyw40N7+>&D); zMn|?1?JN8%AWsE|7Hq}swW;TYshZr7@Ui$f@S0f;k|{jh&#~~4*PS2I2ixj3I!Lxr%&3zB+b`uXJC63=tO`*fq`v0VOANfq zYseD3A=wrk6bc_Y%L%WZMl&G#vx9d~rThYPW)!m@wd*T@2u#=-fDNv{BH2cHSHUG( z@9rvej9w#|<~V=CEh!n{`%zFjT z^FTG!@8p;TehmrIMlj$NUR1)D*WRaSGgq_mbDl$~4p_H>-c-0yQa2F^lo6qHj3GG7 z$ztyIV(7YApbA`()N@gx(^)Vj4p(>>OFWS}r~4+M&2J_rJd63Zw1_Rb8PhlEBE=CR z#vCa_8=n(AiLL<95w7Z0yBJLNBPdnDlRirRnBg8AJqOfOMCr<<6U&?eB6wg+?`E)4 zfSLgi&owH!YcA40M4wSzG|x)R$iu_%j=Op4H|Ybgqt!F2<%7oQ-)Z|j;%Arib+T-t zBtd4^NAF$QxlM#+{U3=c9Q=6T}x%wJy@(Gdw zUez#ORiXn)=38JHOMc8*8Gu5Agw(7X5`rv-|Ffr3{O_d#XS~|~*vzzMY*P#x>(XD` z`!9jz=hJU41b4l^oK*g7-zqcg>Qf8J1HMwNaDU?dH+QjIOZV34MgB8Np|^r?yw8MR zl8{2-+8R~{j*(_YOAq@2DE(l3BOdApKzsM`N;}>%PT#NI&1c30JN@tMw3RcsdR9ju zbw_y9fpMhEg(EWPq-~);P5wM{3>}&TQ|`(>&em?gF+92Ih(2oWnkQpRcwLf*I_8^;;VEc${zbP17;RSzpN(NCruTvn!Tv(xe)?}5pw3sm1|*j)`5I!3mJr*6LCjR}%Y~famr&K^qQ}Pfb}49p*aC;Dr`B0< z+Beq4b>et0##57d-*V;*Jo2pV*YlSPOTGn=d-T^%EHV(S;6v0!jwW+zACzK3LtwDF zJ~vbAZY5QmjZ0}K2n8X++X=^Zyg-KOav!l+t@Ium^oT+K|ZqYK*ily=_t8kK?2qu4fB5#ZARhfV%ib%-P2x zc686$*&mSIPvhdfb;hZmX;7fNS6{8E|By27$};QgEGj|876Cr&t&*uXF$_YpNpIYA z-#G?m(~v*68t?W0?3VZRC}a@Jf4J%-L2B)@;mqz(1M5y$j*t8ubJ)0bt;{-BJ$!qm zwi}##*gY)5Xd&e$`W%(z2CC_}{egroxz(7vhocq$L^G=A$xeI8m^F+Ro%xNqOAStY zqbQQCHQCVT&w;pg4c}2l?aM2tMISV0w@(3lLEpP#aL-VorR@HioXsX0nGC&=Uh@@* z4G!d(2%|iqVM3WApSIG5t=I&>N|RPx40J9N`yTh`8i{>pqwv&imxkBY z%hM1MLOc zdEtLxBE2x`i4nw1osItL1J>(NODM22tU=N2l%?i!E3wPzYDhacA_jnma3Ch1;$EAM zw@!eCAM0*CkN*f6H%QHP_>iM>QWL^>f-1_}*)4Jlm-4KLQw6 z?J#NRW=iep9>_XRp#=U2rEKFcroahqM{KZ9Lsg3Pc4{ z+Z5-+s~?f!j>tyR67|kH-Bi|!WW^%RY=CUw#tY{hTByL0K!RhsJ5WHX1&(T?!5t}$ zL}^T?t*Fk=6ce$)^5`ns7iKQEH>h`9D5S5FdBOSORl$oR`_~`703bW{B)2t5cwhDT zgz3|gIs=8vcF(|Dvn+-cd}Vgo(%}BPE@a!)-c_2oHOAaUqid-R{C+IxUrj3z_6;B4 zQRRk%hVC>loOqxX)`U9JEG-3>HPMUr(_X^_~_DVtk9)+z#Z`4t} zSPH@Z*7&ALKFBT~tNsU}-}eSs>DT{R-{ojiE!jnk2z^6G9X;G|>~^nNGb`;gt?!M) z1gF^1vU1z1Txis>$t=&xpKPa5gYz}fP3GQlD-yR2=WK!6fyR_Li5G3 z1Fa1lHp{TZxE9%v_B<9Dr{=ggFh3Qt-JGP)u(z$7K^rpb zHE|RJH+2KzK+LJDqa(_Xr%lfG%>V`3tfUHc{+u~$aU0c7haSwtj_M_|QlKi2;@t*s zs3-FNN)Q7q6R+=VRA>EaBBP8RqjWyI$$DsvA7%)5?7|i)3kZtpj1`<8w5RPSvY4CY zjVzD{(nfU{&I zkG+Zs^ItXxJy`uheAgO$xE9Z-gR6~GG%!EN)4YDMk;DnXb1M9^)2ocaigV@gX_!AK zcrF%AF}Y?A#G=jaP&GyUF+oNtvxHUYoDK=JI~Zs-l>`LESbS{8v9IKtrNTR z+55hHG8}Q0^JKdI0eqsHxBU2esQ8o{a+DjO#d`-Yms_VqbnE}Z|MJ+G6)XdA9W55@E|eytkSu7DtloZ5bUNiOF=l|9P`0fEB*~Z@6b(pla{`)xJ*fz@f`^-Q{j=C(8za*$MI**p%wys<4WTg-}qK<90Xt8)}M(H4Pb3M#eg;p zZtCoTSOjLc@D1r5V9QAr-l}HmdFKQ}t@ZneVJ&4VbJ^=B zzX)3&5&4hy+{a65h##%gSp1c|-<{|6l%ufL1oG|4Q6TL#*Vz}m$Wx@)mItFq4>~8^ zrPbL?JsaQgV708dCC-b84-$y=A_Bm%SKD4hazTfC-94$o0frXVg8tg%beQh9V}q9z_&@ZQ?(XOV$9G7mpCoqQ}r{b zm+q#|tOytHw6+ERU>~ed>+vn(V{*|HugCL7$&qO3Yxb(+&7`M2 zXje{$S!n>^%@`zjL z#hbD4Gn;T<;d(Tm0#rd#tiE2figuz<^1p*`7H9?2oK2p&)I*Y>xlMH<^+t(zczY>E z$$9U=1JvE4$@X?`)GWm(U9h1#LjYCytq zA7SrUhFBbBJ4sE0os2ro-|wszHLE!M)a%qz)!*s3PeJcgMv>*jrj{e>Gi{P3;+Iz~ zdZoTnu-R#%@u7Y6A#fGG!e}Lt8KnK1NRDEH$|aMmDG-A*Xe;}I9iE?~>wGrI#GO^c zv&y(_Yw)?kX*F}Ccj6mZwOlk0A{8yd#GFfi0;64Cg-JM?suWOp50-y*`iXz%2|!BKNXWiR&d}CLk@d@7IO}-FzxV*~dD7 z-#iyr{l*&8%onuP3sblWnxTfO0o)QTz)44crMNThMklt}nm#W)y4CzSSdZNP0< zLSYT%7I^LWyWflD*2X2_QoaYcfRL{|06NLQem}u7n`}RjceLz#v${mZ;)hH8_;Mit-tV)>4rwsxx5pv3|V{-7%(PKPyL~J4|d7> zq89+G_ZvUanP5H-@NX3ewV1_|1fjHui_A{74FHjeHVo# z^Kp98ijtC5=nN8@@7?yS4ustOA)6`sK>$yCj%O21I`G`8ny)C!m(tvw-$a_3NQvxZ zV$p){MJi1@KUIt`R+~4CccF@WKMqLj*vq{`5S@`7i0-le!3TW2AV8*1tE4M3yZ!dO z7e078iK>dBuuzfO)vDa3wQ*|-TW3ISz#f$y>TC!9S!pfFIy?Ux+zSRf93G--hJf3n z_iq6RwDHqKUA|j&8-4moz-4~O!MArd4y+!g&qg~#t}8G*P{-`0w+1kN&QaOPTe+gI^xRhw_e3K`RTM*o$wgbuY;=Roa19z6=3z7BZYF*mI80mnMb6 z(@|~@8QP7Rxdzi6YW{un@n+iXkOQ_3hDsVseMvtVQ0d0@V}2GjBC2Xe2&@;p+|o&f zI^Bo*0}UxA^1`u*WlV@J0!R zmjm!Xa-aSYPqD$|z^W!zAYnf_+*wp*mp0kPePT_}Q5{WDtXrdR*idO*J<#mjH)}j7 zZJff?;o$wpYaz3F#=CmuQ%B`{QVs@X--qkFzgQou98AlZN6lAtdo8fWO%(fRb#5z? zESBKCVV8T8JH~Sb0-e@-fx)j)lT6eQ8wYVw zvqu}ZWKk2R{Fq1p7iVo;tX@&tY%vkce35@sn`NX2B)PQuEGr8xG&ujibVxZPv! zGgQj&=K49n@Eyl|_+W9rUGj&YkouciyOuWH3p=8v@kW69hRG+%D`QVLJ)L5o^cl%b zg<1ErUeqI4W9%y7=}qpYZJ11G-0gnKz01<%!24)d?xVR?QfvO!f#jX%K7?o8YhTAn z1$61^bP4xWqJ< zwkyVotjS&opUbBcC|#S~x<4#=d4X;j4G`pR)F+yMqHFv3@IqBbHs|J8iZtmk%e#bm z$shl1+g%&ZaKzm-M{M1yA_!ssg}#Q&g2Ti|Vu5&im7{1%Ozl!`B3mGFbl*5hOEhQ}TbCyKJvBDeq)#-=HH$a75^E zu72nLi-5{5USrUD_a@Rba|-5Grkr!BFgASnqWE=%Mg3;~u@8LsM&EFm22k_DrZ`ZKTU} zTSiRyls4*pYlRcA>JNwIc(LKcGvoJ*2cwh#+-zs1Gm2C04608 z``vp*we!r!fBLB2{DLvT+hWFdxmhWy3H#hbY>MUZw)13GWZp%ZSgOAfV*FM*V3mI$ zsAL0_=bI~Dn4G{(aIb*2vQ1iFn3`xy#3|L+qn^E;qRucCLd#j z%)fx?Cbx^iUyTZU@OYeuRmR^3f*AdOnH+GAMjgz#K-FMR5U)@BpmuF6$dTw%Q*HL6 z_hBUY3BitMm^s!+*U}anZvl^SzxloEl2}>RiKNm9eu0{I#@Kf?)$({}T2?G7hwZ_p zXyzuX>)nU-ah;S z>)B}Wlk8zpAS2bp#wD8X{gdlyve`EI(#rE+--Tt<-Jjlm&Z>T3I@Gkj%hTtoST8fF zJ->gUZj(D@7WCHq)|_&9C&s7IXP3LYgZc zIzIcvV?h#;X(x`WKQLsVfl{fFu*B?zDLBXTJON9S=w1fi&QF%xnE4hx7b8RK?!y$e zMQcr;u+vqLXjU^83TTG&v++fC~mt9 zGbnCHS$@W)&%fK|7c^xPN*cpil5n6&En{DypJn)2f|P)5J;AsHiQF-t;ijakJWCCB zG|Ezg4ShdjX80z3Y-LDV-C808In)(3Mr66Bu$^Y9leo*~L6Tu?IUiq6>DNaUPpi0X zE?8|T8c!>~?Jig}Y@}u_ok1d)G#vQL?*k#VUp2Un>X)dXizfKB*EM&Pu#c%^x6Aag zh0~3ZRU^RQV4s^)>>(@kMJ^0Y|LN8Z!aAajq=ZvZ{k-b})|9#A%ywFnKk`Y$#_h_; zK_fh$%@R<|5vV*Hm3s-d=vq~S5{zvaZ81+TmS6p=s?YcWcVH@Y8*Wd@awXi*I8&c* z!uMav{9R01=^(K<(j#4VM$TzSc)o1=hOb z8vdZ3gPN&v-m3jU*|8K_>xGO0cAxQkN!$^hn9=9+1900wxd+<=)3#5Q>^6Qn*X(WS zQc+&*Zc|NXXu!oBe75PL8m;w9q}aWtKep z$dcnkJlg!r`0&DIvt{FDB+>BK`ph%(szdk0r|cl_s@wa^+5BYlwe?~27*)Bydv5H1 zcNP6hJ^xDE*~?Ty{05s7sLEo_Y8c~D;n8sf&u&T7cUB+SaD!)brCrwdcL&hc(xkvM zDDOJ{zoQ`WZ|lg&05KNQ`Ek0a^L}Mo$9a8u#`AklUvhak-tbnD*$T?YfR;Q_CPZ84 z$L`oMNw;n0jjo)H52wqn!Rj*|0a9w9z}NVIOhC-x4T!)bUtrG99b?w9Ydkhg>npWh z`*A9l;){kM8%7sA({+TMT^HzI_Z44*I=^-3vMRS@bJKEU#Cx=ZA(v3XIWZK;nto zq4P}sglTl6X<@xZds>?-$e%N&D04Sxpt1^d!me{<`DX7R@@f>-8YacvJd0`3#(UId z4(2C(x%jv&aA5ZLa$jP^1>l?GY2D4$_=Ov@tRP5MafMs?pLt%%D*{`WTVxOj34G9iUjF=L~Z}L_MrXgU zTaN4{>>kg5Rw|7V7?TLGq{I?!sZF)%l5=8KL#GYuCKx^LE{(Is>lR7 zdJCD((;TH_&A2@sq}@noki$hBv%J-{Ukqh&wZ70=VW^+0=$>TEKzT!KYC{c0GA|hI}=!9rN z2ogObh+Z>#9liH9gE4bY{=4qF>#n>0d(C?0ET`z6Rj$sn& z!|aQ5y5QY?*M;~B)GdFU_n1w8`~01(*sAqyF&O)U)U=oR9zpD@McFr&rgi zbyCgjP#(F4HyZTsU-`B&fU|u-tXTcAurclWI9+lZK~CigSw0yX+`E zG;_=KUYXG!=p&`Lc=EmDPj%3fo;{hs>IV>mHoM3wBNIF*zJ726RvEmEw0gPL*!SWw zNi86yy6jvL-=&U#oGHYE*p6L^I5P6DxC9gIM$Z~~Z6P>{CC1lQ;l|teExPwPoVzsm z8Xr3WaY(afRM(Sx>3IFzdk5{Cqy_FH^%WWuJ%q^a!}#y}%(^$n#qjCM$bE>IvlTPw`1;C*0$#Nx zVzL;^JKZuB{~)I6_QF&DE&-7aY=?!f*7f$7&vAJ{(nZ9>fc>>TThcG`@Scca=-Ow> zBEKg$N1#|s4v~X?j_gwix5A)#)xPZVi}9B+^$&GmSaK1i+jiTH)bP`#vDzlhAJ-fG z0vn%SQcC^&`mpV(<5&F5iv&2C#yrlj?W6kshgkJ}s0^1WQC&fivDqBIB$7rdGbA-#pF;#hCm!!c=b zRG7+4_ypSGo@aK?xE<}_PF1NS=woHTg*IQ7DfITctEb#ArYcxqK9R_; z)E#*GIkK!(&ws* zXzxHw_>5ZYPfY6d>E~4BSbOrmm6J-Z6~)0VGRt>$vp8i;bKzA>sEM6A!{+A98rki- zSa8TGrG83rMXNE--Xf><*7TZNw^4Oc&DJw0$qwCnaq)_ZF^<5tqNm?qd>AIZo?>jz z~EL%nj<-<)i;ax`-{yQadr9BEd#U3rD%0=+0 zTh@oBG4L-Hxw6~7yBewLd{S7p9dYek``5CGEgJ*uM#-h@*(ene;zmvt&lYlk@FYJz^pdOss;_Bpg4dAqY;;1ySUfIm)@il}7vo&fPP!bieFh`;cOKV75qPPAq8mf(J$ktG*qqRl)C_*rZm)|Tln|f84mI%AeW?Izb1`0FJexj=_*2`%RM-8z3RK9wka;r ztq6k(S7*V>`W_7Nvae?4A-`|y;9(qX-nkR8$U>~O(BUJQ=uM^jms+gSXh)6BkdB%J z|1kf$ys|w`7YMG>Z{~IP#CL%3;Y2N8R4Jt0FM;%)^d(>3fUNfb!(~~dQ26>GBy0LQ zI& zT^wCN`c13XZLw(|w7u)3F0x=s%B-H>vh9gQUo#P zBwTB=*ikL9{s8U~lVdJB`fxJEOJl^+=~<731DA|@6aWPWyUKLOn2a8h5DjExmh4-;t(+r?geyQGoW75h|% zR_w@oc2bq7EEjXKQb7;5bB7D;n{~PHpM$q-4LnI08@(3C*YDiwPib{!@L7gSn7#Qu zk+C^ z&>e~wXz-4oNa16u>;B@I*E&NjDofI{hUN8a7I?VAl6U$}JLOGepul0hQtVb0@GRzA0b*&sJu}RjBs6c&qU^3y-rT&0qnJ#I%m?8~@$@03f*I2(^ zhBSSTGp3Hr_TdU; z5h&hQR_ke{{8IEV+}uYl(=F9%K2S?v==U2o7*=_*$mNfkyj^pdeVEg<$Inv`O4B? z@%#EGTN0NOz8k<=@D1i!Ci2STNZ!ildZSZ3tv~)5n9|v7x)SV0ID3S7Go^FdhJW;F zMyl;0bIwQ(#Od+AtV^xw`%T~LKV+v`M;R1ezj8} z8H;U>zA}vS*;~*=p+E*ySV2*byNO|8@DEkp1N-v*Tf( zI}%wgQ3A5pv_-Y)V$jgw;L(QVgnc#AQ6Ci{m#-tKav{%sz8x-RUIFstskj_cLS$q;FK zPJhH+GhP#Con2@Pjx!rIf?N1=cNRuUxX*RnRsTA968c14byT$_DN43gqU$kVkblc_ zrgeM!aWmD6l`t*TczZX7+3qA0k{tT@9h0kmD*U>4kFUG&)X@D3Pd)N7-BNccZk9Ld zsjZWl+#vn|jh8<3Ij@+2_sz}2&=YKS29@HPo6)DLrk7QBtND9&-timi zlo5k%w!|Z056w3kRWG*eD(QS4twKeYEQ}YbM`wMnc7cCR-y5-J?bt1adX8^lyuP4R zCf!IXbf^ms#j*2C)+|H)p`Ld+FuP8rX2xj8Rm|B4$19RWsOqQXzQ|z{mBrjq?p8uY z>&BI}(&C<99ot_9AB`Fe8Ru5|$-Q`Y($3jkd-}3_+&gb7hU=S(Z6{s#N%_NMe7AsI z6TZ4d;BeMGiAksSApdbJWZlU8PMy+PD*RJ@ms9gp%*I8j^vwN}^FMqov`SIm*rDv* z*`}?c_4IwhNlldp&6@24RaNOQmEY|2Tb`3xgcv@Y96#|zk8}R{fOQ(9*$aB3ycZ+# zf-BCYMl~xwDwm}LeUjom1$$*GR}dY(n4vpUu`xOeJ3QkG)?`x%!qYWJeS;JJvG&b1 zU7z|3qn@!-N;hQ2=4i#|1>w6md8^F0@$qw#tX(d1B<1Cw4hD<4#SZA>X%Np-#J>nXok&^oFfnP}77+ld(Z(j$yrLLV-dB)rD8O^g^3 ztghCc7Fu|Pw@67t`cfymWBe5^rg{^Zg@?|a#cB1Gx3w@Ze1TcdM6rB5jWASS=Ik5zx=JQ6@>gY$;tyx|uB$<=DH+YP}j&_{kE0Wq* z{VTHg(xY{g2E~MyXOG{%7_D45aMu5E#~#sD`cCCisQZS2-*w_S0r^r^%seFc!|DBe zrAD z-^@5+>s}F+Z|)dE;863|!Fv4HyJ1(6)$`+6?L*^Ah-I0^H^3{_KU3_p|I$CmBY_X= z6T097sro4D@XWeMfpodDHN2gsBV*C$FtCTYG(+_Fuhhhon^jiuhb|-VJXZ~9Y_F@X z&~{C@`g*L&Axm)QG1+q|oXh9HknWH#hxcekIbvz$-MK{sS5qB_jRHBhHf*bm$rJq# zo;A%B3b|n!@szo~eAXj&H0U6uDk%E6msoKZn<54`)f;8N_@z{beNH#eMcr2~s(r%O zC^_)x2>NNXugmjYB(H7qEF!m=kF&mCKXqCEv1)2vcNXKU{Y_}=?|nQ$=(9wz|4?6R zB}w&@+Zwt<|Jy5kk?zzR*E-4>fpY}7t!9rJ#3`@OS)el26p=QS@p61qwE@4p^P)!$ zoJ>ck$aYw7=EmsB74zY2`ry-}BZXP``CDW>mS$6SW3-Z^$BLI#?eYq4rf<~YT#!=y z)yl4VWHdU`g=3`ml@H$Ik~A*zhgl-j>c`&GN}sych@LCNlb=so&YuyRr`b z4n>Hjr%QTf2|f|I%=owBZzmgc28qDmvu5nC7~DSxH5!tTi7E;)CoqxI@%B`9VNAb? zgoNUOIybqZxp%S1IjW8<~WdjTD#i6q%6iPJ^!5*C^RGoWp;7le8&#zBVDrrKG>9bG6G2_l1Gq z0AbJNrEb2wt+dv-hcV(%AQji-x1)xewKEJkj7X<7uYET^YbEam)x=TbhZvvb=kqka zt9jIY&-|hIg~-XYf^vSJ#H8v2*9aS|#wC_^n@dT7_j4^`#D4L~jox-Q(I|!<#E6H_ z(~DGJykC4D|9;`d*6ZqT@m)&4Zk<*uB-?}wa#?G%+=!7*x6u~hV$o<3j*(8X(H7*Q zjR_CB-_jsF#~dRaZ!>UTEy6&u)lE7BccMh@TiX<{s?N4|X2l)b#UiBQBn#={- z^JwaNS^y?AHAI1?&iIS0^Mk;$ElxN`U?YkV*d{0;G&Sy$g%a#P z5V3@sOh6E&z#t7+@(@g50i=b&BsM^n8zjnE(%ByblWp-4aC;{>2xSXo%O4g>Q`dgDkLu5SYGoaGQtY%zK`NS`bHc;J8Qfz&^SKt6yS;Rg(&KpcBObT<(HT_7?i zu?9;9QssdEwYSBgD!>%O0<@w=Q{x!W)J8$L?0qsA^aDf%0m;9B5;Q;s5D*OT8Vl^t;(`hc3gwm4@&|^Ys5J5m>IM~QWJpbc8K_&@hMQ( zaFF*dK<5lFuM*hM1Ntg8z%u_h`1d&hfApC=4H<1)0(!l`q8n&c0Q>={0E7v&qJKQ7 zf~Z*q#XTbbzvTfp1#XO7uY-~}15yHP^AZSe4p0dN-Hw+@;_gvFp>lI+Lis*-;~}K6c|B@DEgoGC<$|l(8PrR zDJ@>HoeeCRIrPdKr3{zoRjIql>Zp@iB}L=J$Dy&=EAbEs5^&49mJ&&?pWvM>d|jgs zAMPz9*?84Eh!KyqG^RklzqX{!ZkPYd!XxKO zQj6j@2hYErs%zBtI@sEnS4E)1kiQ!hwAcrGG&;NZPe;^lld82^a=>LbCS@|$v%D;w?%W%U`Nxo{?7|)$XD_2ig8bFL14$Qr zCMTfa{jaVMn(xB5P`)JToc}bx0CCkw^IXOt(|}|m$&nyTmy6n8G}vz0VZ*MGB&202J1a<2_^~p=6{{zh%jmyYhTKjepUuR!R3- zb$KW^{F(@y!6iahyEHXKgVtuGwY4>0h?63Y=$ndceh|S$WcWVZz2agj;gKxc#U<379rEq#&oR$-&D7iEBqpGz9XRXm>B~z6ykY zb(A1+%CqP8ys#^iv5^>MFxdZ!X)ohPxAt70MwVEK7Tnvq1GgbI5hrPfaCF@n z^@Gn3_mEuEs_*NS191Gp#Bm&(3olN9d{wN!Edc+9{GIZQBjuv)5I%MD75>-w2%5-K zPi72xbpH>|126$F16%<38-N9X6@U$Z9e@LX6MzeV8-NFZ7l03dzw*(27*hm&y?Bwv z8!rlqBq+gg5T;3)n@}+bQ=rUC*dB!0fyQVECQX^25IO`?I+IV4aA6q6kuW&~lL6;% zF%QEu&J5E3>0?ir8G^C!nt-Dop4pTXiBnV*f)xM#m;K5tKjGsrOoxg|hcO}Zj}6)p a*cGbYM(zYD3^!+j-Uy7DCV3PFmiz}fht#|P delta 138184 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�Gl_RR-BHy9N=OJ^&;Je24)pMpODc*$h1l923% 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

?%ap>w%fXK)M3N!56!;o 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%0AI{j$=%6tRkC=AE8U}3 z$QRc?iy)j{=o+VRgVmJBHQFnV>4uleyqOUmHETWoz76yHKU81KWm}lH1B#R=@NjXA zZQ|5Sr}(DLznB1w{0LF=eXqVgMPiJvvJKG1eav53jXcPTa9Ip)*TZRh2GRmQfqUMN zjaoz>8uq$mJ{cNH=+U5Bx1m~}rCYCFd&k;qFss@V|A=bcR~;P5rhIqv5XC3}_rem6 zW<>EXfeJ8=SdCTgM9gF)t#Y5yk+V-|{(#Hd|MYxy*xDmMu1Uv1!hc=cQs%Y!RRM3n z8*QL4(5dDSv8Uezx3~x@nq!7~p9yBD^5q3wL}e9SCS1>YcK1S16@DcX>FaS^|HyA` zW?Srg=4*(ygKpWxdyfjqFiG6EzD_5{dLvr7Bb7wUcN>DC_UDh>8QtsY(V;D%RHIe( z>l_S9J^z*_;Dnm{!alYx^Zw%!0`mLv4JGFDT_{blV${$7P)%w)!7_0uXh}%RLrL20dVnz`i5&N+RQho7=TQE|S zmO9J!X6U_Mnp97`jmG(x`!HZpi61%SjomHbUi@p43(x4Jt=;d)%R416z>aaidpG{_ z*Lbe^$L*M|9Z7Eyw-wQ?G}Gr-l85u=hqq3a&k1DxEHM5je8IEUhIONMLS}hiRG-Ur z8*@!g&r9%WJM|+h5Z!1p5rBJZ5+`dE9yx;?EKa3U8zibn_~9)(Jz7+B zM@jdiNoYc`G0mPCuJ`(*A(4ak_U!YU75>wQnU~aHHCF+ytttKZnYbQ*^fUeH%Y|Cj z-s3DcO@08xy?L&jX5)@TMhMJ>Nu-^azU{ zl|d53YgpK9+==;4XYilTOGI<+CS(i$yWyQ|qxasJ;*BJH?ra#)yu6_p&q6ea`p}pn zBKrEXrt`=>@TOnEqhkF$vxArRLdp%?ZpVZ@Dooo9xTk5<0sJW%eqCNJ2}+I-Kh{h& z=OZvYyhv}S`197`et~z1n`LE?se$%}ki>sG4ybJ=EU?1rkldN7}MP3S24fe{f z4RHwhxaI1jKm2G==S%Qivr(;gO>S2<(GlbJN9-?=%dq++nj+q>qn=-uI|W)iLr(5; z`IZd)wtY9Cqzy?Avang^QyYmvxaPCdc7k90p}{Gm*NFfwQFXSsa+Bxi4wW9ksAug` z?vyl^U+(0DY=>Z5W`CK!7n^RBzn+SLi+AC}lZb)FERmj`k?HPat@Ox1ty>O=8YR?~mFmMmo8k^PIxT?)4-2QNyL;iH^ z7PA*R)8!I5)8$jtr?Za;31iM>=@S&Hs#c#ipXZ@B;c+LO`l@(eOF^{(yUyqvsWJsXI5i`w(h5Z+dqIf4_q1H{OqPOq)m zcZ@sD904LtTF7O>XWJu#g`=P~GU-r$i1T7zp*_h-=dJIq#NHC6)27a21kGRChRrBK zLDAsc<8DCANC=z>y}0jISZfRh4W%>F{QMV1(|AN35plPcEsN8r!MLn3lT|YO*_#+Wa3A@2 zQ9J6ATZF0?bNRlnjSUfYmFlLmZXOHyK}B09zkcK4;;-0$!_Do~QAyRLJ04N(mvi(% z?TB++@shJ~cTkP_r^|^tN%cR66ZWil;Lm0QME*xd4YeWO#i z3m_M#k#(SoJy@36S@{Ga15o%`rGe(`xxSRve*RMZ?OA-~0utYu-LPF3(DxwEV1=faZ1oVpB_ynCDMUb2;~jJZre(zMJkCsLGFN^|3`IU2$g_p0_cp z(S0Kn$1ItmDx0mwQQCUGmP`X1ulFK_o>ioo+Oa-hhbN`VX z{duzAhk}n1T8B>yKH8J`qmH&b>EBLWRGZ;>IPvi)B{*Sz7bUlwx#;_O)-xQH$S;p; zfF$|>PNx1YDbfARHuOIU-=fe{cfGvbN6hnz%j*uha5POrL;2X6lw<(F8>Z84Ly|6_ zAJl-+X!1P1StL%g1BK>JctP1LT@yghgxWb>IszrT5TkL0S!=hmO&YgopD=4>-J+Z6 zhW9wBq9cxCl2yCJB-6u;>e_bOa=+R{J8!0cOMI2yB_8zt{5V{7IfnZ@cl5<(*2>$( zB?!&MNEK3S9Q!Yx5R(5p-FNyDq7_!6ef#{IaLcD zEbd<8Y+R-4bq=&)g?9~^i_n!xDQ`>Kj|EZ$SIqyln141PP#Ona15kl{%xv5^8gsL0dgDLTfKZaTFk z?sB1gmqKLoYF{?mlJWo}(-1=+QB@ZMw8QHw#wCyLX6S%=D!?G;EYz}ESF7dc84Lfj zqN20bdGUVHJOJ&d<|I7j;}O}nPL+Pn`!Dv6gjk%XmY-)gyXKYtb^I9@^p(*eTsU3) zM=%0Pw1z0WD!)FHNFmL1^>@W}S273yBD#~@(aCs=TA=9p<-Ath6Lmqaq>`ws_%UhQ zDPh^ zBSYS^NSO4bNuxSR+bmrs42B)CaE*6PuB#=bdEO;5R`a$2Y=U|<(a>9TG~xc0Rm)K)q|@L4(a&eUD5lnzNXxppnxa=3k` ztF^^Ccn#`foQm%^omepq?V2ZXgW~8G6{P1^b1ujCCX9TR5i_5*Ef^zLT_*bzYcS1<2Sc7W#?-{an(&HB`#x#+|CzJtc@ zrxoyxxw~Zd1p4H5Qb1z`cWHy&Z zS4Sk}M-CSh&2H)`$lV8wcaVn1ey}bkM8UMAxDR7k`|E_=7TTVHLH1rqLHvj|p!@8x zPRjN?v2Q6Gyd1={r)N4X=^(hXzxm7e>-=DgBYTm0*=+Tgw9?uNV-d3dv$P?U8|F5l z?H%Biy4_jMIh?iT&EOO7T1VtMVbwpXIao|zge;~Lejjc8ovuf*?Csl^a^>bSOYA|> z^us3U!uQ9~e&Jmq9nr`VB>$lUpmrWHZNxipqn!NIDMRfskfXP~w?5G8Te1<-wf$!a z`&fLf86)Um?!Ke2z)8NQHea-sGeS1ZgGrXQilk@G+9~^ON7(M?v$!{FW5p0X*fL2i z*lR{;fT=So>1V~nWj2M_I!aNk@@Wn&FBP_{hLKzX;H;HJoO!P#$C3c+F2y6*GxhYpZm zTK$$_vaIz*z}|@N<|Vd1fgiXLT;VEGb!JZ6w%xFl?83=iIFdx+hE&cf2LchTL z2Xa0fMyCdE+iyc!dx9`J1QL{%Z?XuFp8PY=4pPe@OZi~~4WSXAM{}Ji`F4;geep@AwypcH2R$fc!o}|w4bf!K5 z`HFi{!$dw=ZBQob&Cg7NrY&a=2|mjCO=?XX;9%G(&0||pLV#ZerPh0;t_iaD;9tx? zD00h=YK}S?WEGIyHZ41s8W7`$9`RYc{t&4!^SHiNyL>O(Y_WsH|I-14L_Dg z1ip4{RX!V9{JlA;S!f4^@NB}pBbDkJS2m$(PEtA1yT}?Jm!kh2fVe`|-|%Q8-umYO z5?5@@a+O*YXkAYV7frs9uh)$8u__WTz-xB8U<=cwjVxL9nbu|oJJwUd_;dI@Ar^sk z8LXdVoIY6b@1>q`SPr~xc(KWc?7X$;@is`hy35@Y-=-eug#_u}Z|lAYl|ZZY+OA=G zbw>rg?vbtD=Avhmu6OtKQ(9|+`C7n;w4-rj>3w(%6@s7LzF6X4ThnEg^r$x;Y?>+$ zdQ|2EYO=o}TTeLS!(b>qXY_GTQzTT~v=7;boqUxa)0nt$SNK$l!Q?{aLrxqg>lZX| z)LPMRL7 ziFDoJM>6vrr^NqE4&&tb*^IMd99AxVgtt-6Ik1KGN>v;I)DyERy__k`?* zetSud0&;Y)NVlB0<>isytRaW~rw#n|`nLGG`$2!zO%(qfp?yAXfkOfpPv`=gZr1J1R%bGVDA*q`q9BQdF3knAw` ziC@j4hP0Q)39}8W3pko)%-gxbX}W>SXA$m}s4B{uEJJ@1U(+;8^An7}`G)?=TLbj# zs09h!`Kyth5ydr?X`!~CSQap)Xj_EH0(dA{b%za0#_fbuI5m)sxLimB|O{KDG|CXPNHrXhoUfv z_DyT?Jloterdb}JY+J-?_%1(W&~`t9UJkxa?TfHDC61B&FCACmAyd5buY<>oN?u>g zZMo~M;{Id(`2F3NcfXisXsAkw^UmK@1w4>%6!3%b+47v+V2k`RtNShz#h(q{br@Evp9ix)xQF3@6*d_I{Oys!7$)p%oSZ zL~-2Bcs!7wA-bgfvpQ3ZHoS32%tXf+`*)nJ;ji{Pq;u9k*-je`HRq^Tsvh2CGSDG< zDwQ&0ww_s1B|oVi$Aza({uL?N%fS%Qm{AOT6iKW5HN2As`rhL;?vhM#@!595@S7NR z7c;tBH`?J~@>MF*ZIdmx#_E>&`z2$b_t(6Wflk1YWb&2NBl~YvpZaZUF6HntHh|d<@&|&_sP>G^-`!Hxh9q_ zr{)x|@7qwv^6_Cfx=#$Y{XBy$7~}f}dndhEv&i=e5xs#5>ASEuDE|%OHAetcDCVT> z2hG1M7;=4dP>q5a+P#Hlh?*t>g}P*=EUe8(S0DDuhEK5T?Fq#n2EJ5f3#VOXC`|B7 zzP9wbd?_ub!EeTS(~r`&9imTJO18hq%b+DUD>y zwpa?bsT|MMcAoRTlcs%o**;!DJ74 zI`bN#$#1yPzhMh%Em^tkFV}8C=Hw_Gnq@=u!$XHwwwSd|O0wYk7(m}k4=bFQ?PM@s zkli?pa^?&;qqN!3(ZQ2Rjz-8d)m7h)&q+o_BnOEh_{Zzdc&k+}%$(FSlwdIBLC8vF zW6?LPFZjJ#NH&3~zVya+&EtRG=9N+)>n1SUA5kSg!S1^PgUZ?LK&MM8JD!5ppY266 z+1-~-B|z1Y#+t77da(iKqEOJy>JsSl#o zqz}q<%b$EaU6Ia z&zB2$KHWz8#ke9SpjTV|{elthuZ(PXdU^*2RwUn-M#F zL$o#UuoGg|*m?MzZY&A=9Z&u)RO69EX{5r+D^b#8w5P7~kw^UOk>1%wk}rO%lobsW zf5mzO=e1ua=mWreuG#V^jpYE8#ZPSOl8Mq3mbh$nTJaSR|0SaM?qz3uP82pa!g8(fG)}%2c!;s%B=nK*i(j2N2D2^Ml~Apae+bkcCscj z>Cjzbva?ojqO--#+!P|-bvxp1je8g1R;H4znIe0wLksogh~@na0ArlJzMjwS2!?ax z&oWlir|aDjRJxD4y@_>0(tM*%HnirPYS6`PL92J~f)Mjaq1v{jk2Ip))e7aDcGW;> z5chMgDi+-ftH-r%7xRGYS~;qj)bkVUBub^~lE?6hw@uTb(RU#Fwtjm2T%9+uYSE@> zw-P;vT#5=~ywIOYa1i~)z=Xr^PiUak4!O^4j}zTC%CzOe2ECDWHK6x(Whk9n!A#Pr z!8!kR_`G`SY+acrQ#17B4t73#2V9vsb*IhFmsB12)c}VQ>A$lw<*dB1he!6G6#}KG z*M7gzdDZo5T8x7Mvl$xe*mKZYFXg)NGc%T1@Sl+tmSl;#ETzj&NMYgICkbcPeenfL zvJbcVq%xF$T<9;rBP3hya^sJszw&+f z`Id5KapXx0qGvZ-HQHPZ2(N2bRhG%hIl04M8fPd{4bhO$;CS&Cq^>`%lFwMIYFo~< z%H~;8EL&RXKv9mpfJdN|Uhz&dNWk~uGMZxaev3wt+lZ4^p2Lq!m2c%2o~FcJ`naZ! zYRY<>G0ov$;Wi!<+$KePVF3YkvCAVP_;+`_VACmnKPt%KTO4!eWzL=KyzD(#@M`Cl z-;!b!YC|8}?oL1gM^_pAh3F5-l^a+$-rep~%#|;Z+b za+ap}^#}w`ncw28sh7-vRQ|<~Tk6m#*QJ#0v}sJ;-o)I6y6to(Fq&rspK~lQxbG2L z7o=Nf(^eiI{e})nIC*HwOosC_ASsBVQH-EhjJHT7EwWlMj&q^6>XKf|w@v*0aivYV zpIm&cX(mH>Lp_=uiugH%5>IY=Rh6N6zYqPe)svL+Hk&N%9>=@xx2TU*r7pdmC3j*J z?#kST$|ni^pD|Z}o&lL?Nm-e3jFsl_!X&dXHVPpcwERGF>WXJBq%2;Zk?Fa2LP>+b z>H40{J_)Jg57ic!OW z)G+M9n$-3gpaA*z&^LBkh3Pn4oD?>Qt{wfcWL+?y|21MJ5&vi4Ytjq|%!X{#i+k&E zp;R@$^s!|-abm;Qegycr_xs=1i6M5b8+$Q>7H^M{a4C{Et68p_#q(1f2WC{hrDjPr zUK%O+?t0BNHU{_v5)qJBoBi(@kbG0FX73%ljcOCG0pA)ukW=gnkExO`PQiY$HTUc{ ziZO5s+d)6~QKZUe7>^cmQLE@1@5$+qp7QTvRrV!wB~lbJ{K|gg&cpvYmjY%dUWu*w zxbpJHh1l2jb8URjm}6AMJ&vreVoUdS?R)UF^TNfor#NwbwW)|)N~h$);x@Ll+2GZ} z#ZuKOpiL*?gH^jvW3~Be3AL*3_@1y5$^5In%~R`AqpOWj5o-OomE7bQg|zy2m^!18CY-_23pM$5ip zJQ7v=7)UfCgJ9G-01w+dFWmb1INR5-t8@i88trO)cZ>>b%E8!}E9!HZt9sA~lV!G;SlLZptP= zStu^liW?qE@*6aRNv8fo^sOP{WXO`TF z8a#FCE|JRbeBp@dU&EC-C*@6~DJK}z2x_M9gGojD;PA^Nl$34RQoc;Q|JO%tpmSp) zWNm#^55p#v1`Sx(#Qeq|aF({}^bWRtmj3hT!d(aA%WphG6^5ClCm-^oiAs z1cTzP8S=jDk*ptxxM&-&6pA3jCSGG@JMoVUX+cW z!oG_%v9!GlwZb3n`Uy7aNK6`D_J;4InI!L(pTTHxmZIseWyKfC3>1ZaFS+2#tVPUR zP&-~-FWuqZ&_9MR&jfCXk{wNm3(~_-Iu}qAaB2$1K$i8=GEr+*#^RZaiK;ijwqY1V zxS9c)yVJJXNh|{(L9a*@4KK9K2FqZzCKqbd$6C!(8on?mWzWdHLnP{uzCSZ-smbKw zuFGkSm|e;oio4iZw4CAytt;?oe@$I|6VgZ2n3hMln_x9(*yg>^VkA>|x6!gybJ=25 zYj@i_<^l1qoO?EBOlxanGA&sPx$Ql@w3QQEqi@{Pg}jHD+NUz~F6)Yh~sOd$zg%M!mtVbQ)1>eqrR7>wo7ziCKD2*<;SY z+r$^G1mw1B4-{N{Eh6*>PDl_xemJKH24!Try<1*dUOct~!`9aQ^Knm{cSYP~di5D` zY7H~4UBdQ^79`9>{zwisn=R+}yUW{ljx2u=0 z`biB7N1Yr6LubPu>M&I$chA_q-OQf)*5Cw*x_|%lJv%yR5SSj;k9E>GX-!_675?cR z6F5SZw6H=epVP+wQ;($M4q?l5=~Wp8S|Vf~u&W?P^+|(Rp-*gAk6hUFVAU>(vEtRp z|L)#>y|nYhgVDMj`M5IvJM$egr#x7f$6V~;`Kc(s4Zm*GMzJFkcLyCrSjBoWAIMdK zfy8mS!C0Jw(Tvp3-{&6#%Z1HN3xqYFlGl!}ogD_W$E;yK*6CY&TSStd(KM~U zVj}k4d?A@6R=+}6FPnn-aL-e773pER1WqokQRZ{Cy0}w#I_xJ>wy(=F{XJqL=%Dtq&Ar9Dr)f1Sf)W%m#D%pGij1j7V#`|7E|R-!P&Gj<-`v?KfC>7L z1Dw)m;1Wu{7VVBiS`}8)gCAKcuZu6_YpK$){va24ZrmjA_bwYv^L0kW-AFlZOpF$( z$Qf0^2PSV%zNA4B=rRo_YNS>OmHrk*g!V0cX@^#xS5F9O}s$Q2Xw7r(u`)>@ZZ5N+RgFdv@?}?qgFn(kWZG<==B-r3c^HTJ?qd)G z4X|QI3gCZOP@@}KujJJ4USzW{j-+rwEfW>Xnsx1dzYYf|h9g^IzuI!rKwsdD&)iUUgL}vUd;0DQ%OLkTG*0tj`>Ubq zYpax)bkD>Sai=E?(R72?wmb0eOU#WCr31zZZ!$lN}wy`bvE{X!^|L`wj zE-u?yi>W|1zP2hUc1r{l)4W91f@V@B;m4%w90~Qjb;82d%R_)x-6gc5{MUljq|wQV zGasq*FQvN^Y%uPUfqEA1d45LGVqFgRUXPiFl(PKcS7gYBzX>EL!;oK4$7W?z5J?xv` zAt9!d>Rt~kVf1Dq1wp)=&a5t%d*_WZy27dzzZ+sC81IOj0l$q8n9`c#2b~1~K*@?M)sfscpiOYTPxbX#qeb*9Fyq$Y zzk`=xy40%JRM{EMP zmjL)l>ZnB}t6;P$ZmN=nbZ_fseneZ6i7vjJL5gRN(Iom@C+Q6`7k%DNO&aZac9x(v zr>k{Rr(Np4;%!Sd3gC!Fcr6Nf}04%7MTjCyA){ISA@;q^+K@9we z?f=0Xx|uz(WZt@ ztdvt=bL{4x8%;!vaLYb1wNcoFCrs7f2p!dl()?!3mDu}K%eOxH{|%JKfRE;I_0&u9@PMz8{?K9tgu{FWtD z7%RL+w~qc;JFakBnK^P~+6#Yh3>3dYFC2qtVFNmnPMiBXJ!ce>G0zY@Ou%!L6rI4? zS$A9dFP!~tif{DQS-76mx~qP+k6PGe(lyeIbZJLy{T%0b)*+aogkiS6!?XP!Jpk{F z7@v37uB%zNV*hBL`4%{3#~v+SK%1Xj-Fe3Lexdxg7-G}w$<4H$TKne*=?n`#of2Z z+0Zos8()_D>1~MeQQ2)gtCs2(my*?D);&13d}o>H--fk-H()^#_3X@OS(k)5J|;N= zGG8gMr)Z(UXqK$x?~opJ${md>48( zA+VHEe>HPBpv*f(OwFD3iAM1-52amI-J6uITNq#c8(cGk&ovW}De=rHGU+nFdz zmYMyCI&pml`u$`&B4Nq+AWUd!9v7Ak3+n%`@cBX`jSHJs9*BN2fT2dFtNF9!jh~&X zN^|9yQmZaz{x7`W$-YbKJCv-JEwZ`Z#LYGf7~-h4UZ7Jy`6O??RV!q*^v?0H zd9y5fc=NABT}S!|q2=Y739xm#^3Q-+556Jjaa%f!dvmvkx-442!4mbG5d< zt1C7ns=Rfm5!kjLvwXb!^8`~|FaX-vYUN)rM`X&O#ol_r^bAL89pNI~XCH#psxu63 zhhHcc18js8+tkX?VRzi(%}-hWN~S?2`%`LyoTdyJVJ*g{)issz!ba)Xr*_tQAq-<>V39p{VIk<<(E>`TSt7z(?ZGomp9FqxoIqy3o87N~65=4GbH>M$Y8;O@&z zXT@Evu|D;;dX>5jRiO9T^!!2!nVlR4J}RSZK=w}w@F$WSr|~g6o^J6u?p;5ke_<4R z`$XLUL)lGi(f0H{X^f6$791jGo%|9iYJ~yQ;WXy=S{QB#)ks1&4M{dbD zc^iAvO7b*m>d`&_JD%v~Btfj0++w8H@6)hMhC$&{W7s+U00&krKEKYeV_e{8^Cy3TC@Z#pB9u&~cDwha zjD5styDsiP=Zw(TYxsYnXZ4aJlIj}|!1?;R$(^Tz33n!sH$02FEi2qan~d#oik$I;@8<)P<1uSQEm<_YW13U-H?>ZE z^XG$a4lN*{6{MP4@>q_={(_jhV0LmSoQBEV+>T3CZe3|@(p^u@wAoB`7@sXupQGrs zm8^94PpsR2GEIyxjVR(6R(i7%KLKN1s@K*5?g^ycHtv7sV&z*bK3?zsNz`7Veg?GR za6{Ja_IKl71znuueH9n}djzxfPkv22PEl~TY(vn`2dZIp!{Cg;Z8u6Pr;P4t6VG-iatgGQY0Ys?X@V)2jd{(;Lr}g)09<4d%*Kej6Gdm zrMTMdJaadZjAj)~kzXljLX8uyYaG!5cLv`GvJZAn{^38%`!L2pCKuHJE)tDxZ01diN>Ol*0diGvs)Zrt z+h@Z<_!^=1)0qvp%+6Xb7-sbp01YlOd+c(wp*?JeKhb8#+KbFKH>7p_<4KYYoB15 ze47Pz_v*#K`j-LwVoZ(Mot3cV;^XGWPC2kE9P+Em;n%&lS9hz)MY0bC#~xtXVsWoL z8(yAB(Fn{0gq(MyQr-cvMVSiRYUHs+a?PBFGzwW`gqYnyyNRKXjZBsjAxYe7^l2&@ z^8q644gesfS8#}spIgc=JcL+Gg`8A3y;;8Q`oFR3fNG*`))W;{nxIHEq7*@jbPx<5 zpwdAFL8L@_lMd1(E7Cvg-Oao6k*R6zZ*3=(UctzN@_pgb%eL(}!;!Ark3BUW+=F^mt z@d0Yl9IvH^=ae!NfH>{8Sd@=@n&+D)Iq?ylwDJRIS*EqWKe)B(!jp5<3VI9z*CXC~ZbiE*W1CAT`2x6iclTD0l# z`#T12!oMMX`%%o_Ke2o+b9{2#R>S63&S67by|`Lg5&w5b{1Wu-(#k#I;IbUq?|HW8 zTg9=pJX zjHI)ZHJ`Mxb_?WdrT&xbN`v}ldq&FSCwQ2f5?-D;5;pJW^vPh+g|{v4s^4@bRp}e& z;;xGRvf4uCZBKz%F+%X?Z?BdbO53+5`Er)Cf=ctnUNl*+~p2NyH;IhoK2=rj(zuDEskim=rx7r1e>$%RW|Eh=)E~vpq`Fx zSNOSB{jTG6Mo!gPU*{dwxlUrAG3+8`W$)vrfNLDy^;aZ1@6c{kP`kIx$l&(9;C(~a zk96?h)lNmP-c+Tae!)V6n0yYdE}QZCjuWNm!tU-UZ+|nrX$$$-7^A=oIkCGjmWDr+ zBx3JgKfCr7DvHnCol=~bc{l&kdakodkyC%nQ*?|!u%ub{r(nP()O4H+}VXrd_9EqMJH=@E0g=I)vKkvgEf(%{h-du8GiiGXpcpfT>A6AP|3NL;fh%wStKk(|PH}1<~vy8V%0HXOdd} z?>UNm;#h26Fa1`4{bfOa6l!ufqj-9Elt{ADAM#_!L*Thbn@=>)B?$*hFwQ-RwF{bt zy062^nGPq|#P`NsWnkeK%pwWt^EIz{TiKmk#0@$9)#8Ih4D*cQ+Rt1Pe@N5dUy7?Z z=i3x;tM4?MZuY0Yf}Nnz7F?F4?N-K%{rG)1k@Ce`PPWLUqOrK6FR614dV}fkvGT;2 z{of(;g3ZgFMuBkyV_6gRyQY;&I&0TWMG_|QB}W@?Z;Kb@Q|r^e@SOYVNRICHu0(U3!f(W$+Ez}yqgTsM zvdc5`4Hzat$v8+OZGqzA^+4&+{@GZSx;kMzv31U}XLcts;IC7ot(|8+&U+jt3q)VCN$35ZxJNHmm!*f;&Q#s`F81+@QaF2JN`~)BSFN0?~6IC3V>O;}D{Kr=eC(XO$E+hWz+#RMqXeddjL*=!4LK z{WQL%7C!4t2{!NGk%w|fj1fy`stvYjkN0=a$X70r^{i6^Wdd81y7r}=V&GpY$|ap* zwJpK@LTg&RwoIHu&%R%82OZe1}+v{rQ3K=AS=I(4K$>qP{tO?UXD&a4NT<9q8vYJziU$wpx5n44hcQG*2uc z2MYcD#@_jxt;zY=9$VF%NXzl31SC!e--sF}1b-5US~bhc3q7oecrTtagZDqB!I#%) zwBJS;$BRi%boNdMyud=)e$1A&9ZIIrO3v7=1*IZPr~iJK>X>ZkwiNUe221&2xiIL* zoz2A2e&dNNh9v1#!G}yPYhsysT*ae%6mdt{XCi|{TdFZK;TEMG^~loR>QJ+c0dZ}> zg;;)Jn<-SnM9y<8QOEt>GJl}B%so*XcHeZ`u0$78o`fv3`t zYd3j@>1@0E%!Kk*h#@50)v>?v@=&S7;n`;YrC&Db$^Jr}3yOMAn16hjI3bYXanqpV z{@C4k>3E(2{;sa8mXZ%LqWjPX^FqiPQSxnkb8SO#{fhpJ&>0zI=^M+PIbW4Rw~4>T zvRroDy9yDNSZ%F9s@)IiE$cY9u6yGTzB`phNgwq@4Zge5IV}?kaXVyu*@>K;S;-5W zX2^r{Ps?65^rSdFf_lp5&p+xq-ASs;OfR2WxioOwq?7~M;&!25o;<4h;di*=<6ISd z(RstPsmBkHFz;6i*sM-)$H1NP61fLrKal5EcK@Q$Qp{-rCVU4^ z_AfiytQpn1yE*!W1~`+v2j5ekmd0^r_?5MMEtW0C#l4)^fOqO0bYJ@{^mgAJ!4)cu zJ|5s<@)&K5y0l(*VU2;kow_-wwz)>6qVS+JlKQ~J!_s7!0V>D%d>-1}xP5X|#}`4j z^W_dg!r-o2JbP(aX5*oZzU}3pw1cL@YK8B@^WHe)f%VZy-$z}8@58MzH&^N`>Ak-Y zi2aygGrxoz1FOfX>My*zVT-WUU2!@XF;RRWpy=04WC)ztb|_~#h+fhaHNY8sPUvwM zq$w|vxVa*veGQTl!ow#qLk55D*Kb8EsjLPg>&vU|LJi-;S4z=W%&$^#KD8;C#)$Ao zxVxLbBhOz^)-%bI-gUl8wCvm5s~9(Z8h?FY@AcP$g{{CadY7A_B#U!sZoLa1aX-dm ziupvbN+J6l$rmgN`Wqy0_G_#n4yZ-m=`+jXgApY$+fXtEwsj8MtGC_i@}|qI-=H|-%x03z9*va4F(`W7$6h){f3LIw>$-6xQ)Mms7peZ! z;fFr-e9*;G%41A_9%fN4?EH7VQh~L}yV7HL&x%TQp|K^VE^sHV;_8zMU*lAzub;1xxp*;{4fIcfOH76l^->G9!5CozuKnkM>LlnX!CE3XAHX0ffgfu|%O)n~s1 zaY5N`d#a(n17i_GzhH7da6#_s)73Cpeu*lKm6757Mh@dKw6(}u{6j{_$nQl6<3giu zyX#34O(EJvTmHAYxrQu@XLYZKSLV1$CRwugTut6Ob-AWN3v;sPYR?V(R7aGlDV4QRFV^t;ay4X8SaDNMb@RM8}=BrA-RbHel5ln;F*t9SzB z!9T@CZ$>Y#qmb#59+pH8OC)eK6!2#-9WAInr6mbu97od6KSMMm0TWLNI{qRg0cBn? zt2i~*mj!nMNskIeG@g($IyE*7 z0W2YoW5Xy^NO~9zM80?=4dy#WW<{PRv%;x?A{_uTk{$vIXd39b(Gjrz$7;bO%0mL^ z(vw+_xX7%vr;zmA_AC&TZFEFmprerN5gm4!eo%8ryVA5_BW#pELzna_tc3+GFy%uK z(wc*jSvzU4;7X#zloqfA2P~W;vt}{@0-mXuicr9qA{e71vwot&hOGlP=K=4#AYj=^ znDA=|FvCX@sOA8K0Mb-II2d3Kb{xWnrPr%y|1m(g4FabJiXbGiC{ShuVKI?e-DoL} zAIN~_3qURa>yoe-~o;nfDRj`0=5l8RBrt}fhkZn z1k9cX@dFPaMu0zTGFGrah5rv83jToyi+|wZ>i^~e`fnos=0X1-c<}!R9^7C3Qu%lF zK=I4n1jT^{F{=Os)k{EAI)M2>fcv1*Jg#myXwIQMs>0OiQJM;g9)(gptp zS5|$&r zzdwxvbPhlXaS!6v7NNO_c4lpeN$}9+&MFI0B04iWCvJNdBMFD%kK-=Jee+FQ19Vo5? zKVV?HpbqN2cm#pofdjh`nDl=hDW>G6(F#$a|JWY$+W)papv1qM&6UIDJbKdDWK=uiZYemk$Uw%gagWn zg+&FrB9M8>JNx<{TEtT>f^!DH$R}#b>}tv=h~6OM!)ZFaM0(nFmjN-Zt2T<;G0W+N zg($Hi%T_OTmTq)99^+`8d+hM?X2f31qSZ!X{+?nLa+^p}@=7T4Idela9sB;Fa=$2| z(+gj0UR~|P*_MhhDSu?@+ej{~3J6<6kRQddLj;lM#KQDKzLc`Z(Rk|Uy>F}+iXXE` zEEl2%JtN!R7>N~U%43ilhoKC!xnI9JAH5ja(@8H(D|BJ+7?g>y?FikD!H+*si9awI zzk_J=dNY{td^S$moaR>8b;<+%9m@F6ALh^D>m_}Y?nk0^HNsR7$3=I!{q&jITeY## ziqL5bOLR+jN0qYGb6PtKG~)NXe5RGPzA9>Pp4W#6kG(^5d!`{T$?17Nad2MPr?>OO zUab1UdKOkEu^JwqogU10M7GCM4nph;+LnnjRUf)~7gU;HQU&=*;+QUV#*~~${NN16 zJW1kr37k1EeN)+JjAhf^`T8Qc7`>kknb9mw)sar$3nTM07Qvx1;fu7#jhFkW$w4h5 zNceyVWVZLs9m8Q?EQe&d;^X6;`A9va%4`_);6txy3n=BWgm z)!^J}TD8UeV738zy>HI9=3WX!LS>#c&|y9${Tr+oI3>aKYH;4vjLBs)>(3Os&g(vV z1H|bM+j?R=)Z~ykd9{ss_tjk#=ClXwCxWxiy;dZ%-JQO7Lu^03*C&nRXHKg;-Ib5W zQc%O)-ru-!?Cv%Z34;&~g*%d2j}d?gfEj=V;0ypO02{zrfO7!s0OtWX05}1-0RHUD z1HcP#p@LZt#vFSpLe8c;!iS3LQZVYu2uzzg7X{WfP^8X76_3E|!N=KAm?U*R>h>s1 zi6);4)j0|~k4hVbNl~|>I!0kyG`*+(jIpD{$6#zc-Dr!>$}DQCM}xFfd{qB><%XE$ qqb$Z?dbIa68BvyFz{Za;m>4Z #include +#include #include #include #include @@ -12,7 +13,7 @@ #include "llama.h" #include "common.h" -#define TAG "llama-android.cpp" +#define TAG "AiAgentLocal.llama-android" #define LOGi(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__) #define LOGe(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__) @@ -37,6 +38,38 @@ static std::string g_generated_text; static std::atomic g_stop_requested(false); static std::mutex g_globals_mutex; +/** + * Raises a Java exception, tolerating a FindClass that cannot resolve the name, since ThrowNew on a + * null jclass is undefined behaviour. Callers still own their resources: release them first, because + * only Release/Delete/Exception calls are legal once an exception is pending. + * + * @param env the calling thread's JNI environment + * @param class_name JNI name of the exception to raise, e.g. "java/lang/IllegalStateException" + * @param message the exception message + */ +static void throw_java(JNIEnv *env, const char *class_name, const char *message) { + jclass exception_class = env->FindClass(class_name); + if (!exception_class) { + LOGe("jni: cannot raise %s (\"%s\"): class not found", class_name, message); + return; + } + env->ThrowNew(exception_class, message); + env->DeleteLocalRef(exception_class); +} + +/** + * The token capacity a batch was allocated with, recorded by new_batch(). llama_batch itself only + * carries n_tokens (how full it is), not how large it is, so the map is the only record. + * + * @param batch a batch created by new_batch() + * @return its capacity in tokens, or 0 if it was not created here + */ +static size_t batch_capacity_of(llama_batch *batch) { + std::lock_guard lock(g_globals_mutex); + auto it = g_batch_n_tokens.find(batch); + return it == g_batch_n_tokens.end() ? 0 : (size_t) std::max(0, it->second); +} + bool is_valid_utf8(const char *string) { if (!string) { return true; @@ -82,10 +115,26 @@ static std::atomic g_n_threads_batch(-1); static std::atomic g_temperature(0.7f); static std::atomic g_top_p(0.9f); static std::atomic g_top_k(40); -static std::atomic g_n_ctx(4096); +/** + * Context used when the caller passes a non-positive one; mirrors ContextSizePolicy's floor. Only a + * guard against a bad argument — the size is chosen in Kotlin and passed to new_context per load. + */ +static constexpr int DEFAULT_N_CTX = 4096; static std::atomic g_kv_cache_reuse(true); static std::vector g_cached_tokens; +/** + * Drops both the KV cache and the record of what it held, after a prefill that did not complete. + * Leaving either behind would have the next turn reuse a prefix the cache no longer matches. + * + * @param context the context whose memory to clear + */ +static void forget_cached_prefix(llama_context *context) { + llama_memory_clear(llama_get_memory(context), true); + std::lock_guard lock(g_globals_mutex); + g_cached_tokens.clear(); +} + // Converts standard UTF-8 to UTF-16. NewStringUTF() is unusable here because it // expects modified UTF-8 (CESU-8), so 4-byte sequences such as emoji would mangle. // Invalid bytes become '?' so a truncated sequence cannot corrupt the remainder. @@ -191,15 +240,6 @@ Java_android_llama_cpp_LLamaAndroid_native_1configureSampling(JNIEnv *, jclass, g_top_k.store(validated_top_k); } -extern "C" -JNIEXPORT void JNICALL -Java_android_llama_cpp_LLamaAndroid_native_1configureContext(JNIEnv *, jclass, jint n_ctx) { - if (n_ctx <= 0) { - return; - } - g_n_ctx.store(n_ctx); -} - extern "C" JNIEXPORT void JNICALL Java_android_llama_cpp_LLamaAndroid_native_1configureKvCacheReuse(JNIEnv *, jclass, jboolean enabled) { @@ -305,14 +345,14 @@ Java_android_llama_cpp_LLamaAndroid_load_1model(JNIEnv *env, jobject, jstring fi llama_model_params model_params = llama_model_default_params(); auto path_to_model = env->GetStringUTFChars(filename, 0); - LOGi("Loading model from %s", path_to_model); + LOGi("model: loading from %s", path_to_model); auto model = llama_model_load_from_file(path_to_model, model_params); env->ReleaseStringUTFChars(filename, path_to_model); if (!model) { - LOGe("load_model() failed"); - env->ThrowNew(env->FindClass("java/lang/IllegalStateException"), "load_model() failed"); + LOGe("model: load_model() failed"); + throw_java(env, "java/lang/IllegalStateException", "load_model() failed"); return 0; } @@ -327,12 +367,12 @@ Java_android_llama_cpp_LLamaAndroid_free_1model(JNIEnv *, jobject, jlong model) extern "C" JNIEXPORT jlong JNICALL -Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmodel) { +Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmodel, jint jn_ctx) { auto model = reinterpret_cast(jmodel); if (!model) { - LOGe("new_context(): model cannot be null"); - env->ThrowNew(env->FindClass("java/lang/IllegalArgumentException"), "Model cannot be null"); + LOGe("context: model cannot be null"); + throw_java(env, "java/lang/IllegalArgumentException", "Model cannot be null"); return 0; } @@ -345,24 +385,36 @@ Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmo if (n_threads_batch <= 0) { n_threads_batch = n_threads; } - LOGi("Using %d threads (batch=%d)", n_threads, n_threads_batch); + LOGi("context: using %d threads (batch=%d)", n_threads, n_threads_batch); llama_context_params ctx_params = llama_context_default_params(); - const int configured_ctx = g_n_ctx.load(); - ctx_params.n_ctx = configured_ctx > 0 ? configured_ctx : 4096; + int requested_ctx = jn_ctx > 0 ? jn_ctx : DEFAULT_N_CTX; + + // Backstop on Kotlin's number: a misparsed header must not exceed what the model was trained for. + const int trained_ctx = llama_model_n_ctx_train(model); + if (trained_ctx > 0 && requested_ctx > trained_ctx) { + LOGi("context: requested n_ctx %d exceeds the model's trained %d; clamping", requested_ctx, trained_ctx); + requested_ctx = trained_ctx; + } + + ctx_params.n_ctx = requested_ctx; ctx_params.n_threads = n_threads; ctx_params.n_threads_batch = n_threads_batch; llama_context *context = llama_init_from_model(model, ctx_params); if (!context) { - LOGe("llama_new_context_with_model() returned null)"); - env->ThrowNew(env->FindClass("java/lang/IllegalStateException"), - "llama_new_context_with_model() returned null)"); + LOGe("context: llama_new_context_with_model() returned null"); + throw_java(env, "java/lang/IllegalStateException", + "llama_new_context_with_model() returned null)"); return 0; } + // n_ctx now varies per model and device, so a wrong size is invisible in a report without this. + LOGi("context: created with n_ctx = %u (requested %d, model trained for %d), n_batch = %u", + llama_n_ctx(context), requested_ctx, trained_ctx, llama_n_batch(context)); + // A fresh context has an empty KV cache, so the prefix record must start empty too. { std::lock_guard lock(g_globals_mutex); @@ -419,12 +471,12 @@ Java_android_llama_cpp_LLamaAndroid_bench_1model( const int n_ctx = llama_n_ctx(context); - LOGi("n_ctx = %d", n_ctx); + LOGi("bench: n_ctx = %d", n_ctx); int i, j; int nri; for (nri = 0; nri < nr; nri++) { - LOGi("Benchmark prompt processing (pp)"); + LOGi("bench: prompt processing (pp)"); common_batch_clear(*batch); @@ -438,13 +490,13 @@ Java_android_llama_cpp_LLamaAndroid_bench_1model( const auto t_pp_start = ggml_time_us(); if (llama_decode(context, *batch) != 0) { - LOGi("llama_decode() failed during prompt processing"); + LOGi("bench: llama_decode() failed during prompt processing"); } const auto t_pp_end = ggml_time_us(); // bench text generation - LOGi("Benchmark text generation (tg)"); + LOGi("bench: text generation (tg)"); llama_memory_clear(llama_get_memory(context), false); const auto t_tg_start = ggml_time_us(); @@ -455,9 +507,9 @@ Java_android_llama_cpp_LLamaAndroid_bench_1model( common_batch_add(*batch, 0, i, {j}, true); } - LOGi("llama_decode() text generation: %d", i); + LOGi("bench: llama_decode() text generation: %d", i); if (llama_decode(context, *batch) != 0) { - LOGi("llama_decode() failed during text generation"); + LOGi("bench: llama_decode() failed during text generation"); } } @@ -477,7 +529,7 @@ Java_android_llama_cpp_LLamaAndroid_bench_1model( pp_std += speed_pp * speed_pp; tg_std += speed_tg * speed_tg; - LOGi("pp %f t/s, tg %f t/s", speed_pp, speed_tg); + LOGi("bench: pp %f t/s, tg %f t/s", speed_pp, speed_tg); } pp_avg /= double(nr); @@ -737,23 +789,23 @@ Java_android_llama_cpp_LLamaAndroid_completion_1init( int n_ctx = llama_n_ctx(context); size_t n_kv_req = tokens_list.size() + static_cast(n_len); - LOGi("n_len = %d, n_ctx = %d, n_kv_req = %zu", n_len, n_ctx, n_kv_req); + LOGi("prefill: n_len = %d, n_ctx = %d, n_kv_req = %zu", n_len, n_ctx, n_kv_req); if (n_kv_req > n_ctx) { - LOGe("error: n_kv_req > n_ctx, the required KV cache size is not big enough"); - env->ThrowNew(env->FindClass("java/lang/IllegalArgumentException"), - "Prompt is too long for the model's context size."); + LOGe("prefill: n_kv_req > n_ctx, the required KV cache size is not big enough"); + // Released before returning, as on every other exit from here: jtext is pinned until it is. + env->ReleaseStringUTFChars(jtext, text); + throw_java(env, "java/lang/IllegalArgumentException", + "Prompt is too long for the model's context size."); return 0; } g_prompt_tokens = static_cast(tokens_list.size()); for (auto id: tokens_list) { - LOGv("token: `%s`-> %d ", common_token_to_piece(context, id).c_str(), id); + LOGv("prefill: token `%s` -> %d", common_token_to_piece(context, id).c_str(), id); } - common_batch_clear(*batch); - // Reuse the longest common prefix with the cached sequence so the unchanged prefix (system prompt) isn't re-prefilled. size_t lcp = 0; { @@ -780,24 +832,54 @@ Java_android_llama_cpp_LLamaAndroid_completion_1init( llama_memory_seq_rm(mem, 0, (llama_pos) lcp, -1); } - { - std::lock_guard lock(g_globals_mutex); - g_cached_tokens.assign(tokens_list.begin(), tokens_list.end()); + // Sliced: the batch's fixed capacity can now sit far below n_ctx, and overrunning it wrecks the heap. + const size_t batch_capacity = batch_capacity_of(batch); + const size_t chunk_limit = std::min(batch_capacity, llama_n_batch(context)); + + if (chunk_limit == 0) { + // Not llama_n_batch(context): an untracked batch has an unknown allocation to overrun. + LOGe("prefill: batch was not created by new_batch(), so its capacity is unknown"); + forget_cached_prefix(context); + env->ReleaseStringUTFChars(jtext, text); + throw_java(env, "java/lang/IllegalStateException", + "Batch capacity is unknown."); + return 0; } - // Prefill only the divergent tail. - for (size_t i = lcp; i < tokens_list.size(); i++) { - common_batch_add(*batch, tokens_list[i], (llama_pos) i, {0}, false); - } + const size_t prefill_tokens = tokens_list.size() - lcp; + const size_t slices = (prefill_tokens + chunk_limit - 1) / chunk_limit; + // The only direct evidence the chunked path ran rather than the old single-batch prefill. + LOGi("prefill: %zu tokens (%zu reused from cache) in %zu slice(s) of at most %zu", + prefill_tokens, lcp, slices, chunk_limit); - if (batch->n_tokens > 0) { - // llama_decode will output logits only for the last token of the prompt - batch->logits[batch->n_tokens - 1] = true; - if (llama_decode(context, *batch) != 0) { - LOGe("llama_decode() failed"); + for (size_t start = lcp; start < tokens_list.size(); start += chunk_limit) { + const size_t end = std::min(start + chunk_limit, tokens_list.size()); + common_batch_clear(*batch); + for (size_t i = start; i < end; i++) { + common_batch_add(*batch, tokens_list[i], (llama_pos) i, {0}, false); + } + + // Only the last prompt token needs logits; earlier slices just populate the KV cache. + if (end == tokens_list.size() && batch->n_tokens > 0) { + batch->logits[batch->n_tokens - 1] = true; + } + + if (batch->n_tokens > 0 && llama_decode(context, *batch) != 0) { + LOGe("prefill: llama_decode() failed for tokens %zu..%zu", start, end); + forget_cached_prefix(context); + env->ReleaseStringUTFChars(jtext, text); + throw_java(env, "java/lang/IllegalStateException", + "Failed to process the prompt."); + return 0; } } + // Recorded only after every slice decoded, so the record matches what the KV cache holds. + { + std::lock_guard lock(g_globals_mutex); + g_cached_tokens.assign(tokens_list.begin(), tokens_list.end()); + } + env->ReleaseStringUTFChars(jtext, text); return g_prompt_tokens; @@ -871,7 +953,7 @@ Java_android_llama_cpp_LLamaAndroid_completion_1loop( if (!stop_str.empty() && generated_snapshot.length() >= stop_str.length()) { auto pos = generated_snapshot.find(stop_str); if (pos != std::string::npos) { - LOGi("Stop string matched: %s", stop_str.c_str()); + LOGi("generate: stop string matched: %s", stop_str.c_str()); size_t prefix_len = pos > prior_len ? pos - prior_len : 0; if (prefix_len > 0) { std::string prefix; @@ -928,7 +1010,7 @@ Java_android_llama_cpp_LLamaAndroid_completion_1loop( env->CallVoidMethod(intvar_ncur, la_int_var_inc); if (llama_decode(context, *batch) != 0) { - LOGe("llama_decode() returned null"); + LOGe("generate: llama_decode() returned null"); return nullptr; } diff --git a/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt b/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt index 10f73297..ecf304cf 100644 --- a/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt +++ b/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt @@ -12,12 +12,19 @@ import java.util.concurrent.Executors import java.util.concurrent.atomic.AtomicBoolean import kotlin.concurrent.thread +/** + * Prefix on every logger name this module creates. Duplicated from LOG_PREFIX in the plugin's + * logging/LogTags.kt, which this module cannot import, and kept in step with it by hand: llama-impl + * only ever ships inside ai-agent-local's AAR, so a name without it points at no plugin. + */ +private const val LOG_PREFIX = "AiAgentLocal" + /** * Static library loader - ensures native library is loaded before any static methods are called. * This object's init block runs when the object is first accessed. */ private object NativeLibraryLoader { - private val log = LoggerFactory.getLogger("llama.cpp.loader") + private val log = LoggerFactory.getLogger("$LOG_PREFIX.NativeLibraryLoader") @Volatile private var loaded = false @@ -49,7 +56,7 @@ private object NativeLibraryLoader { class LLamaAndroid : ILlamaController { - private val log = LoggerFactory.getLogger(LLamaAndroid::class.java) + private val log = LoggerFactory.getLogger("$LOG_PREFIX.LLamaAndroid") init { // Ensure native library is loaded when any instance is created @@ -158,7 +165,7 @@ class LLamaAndroid : ILlamaController { private external fun log_to_android() private external fun load_model(filename: String): Long private external fun free_model(model: Long) - private external fun new_context(model: Long): Long + private external fun new_context(model: Long, nCtx: Int): Long private external fun free_context(context: Long) private external fun backend_init(numa: Boolean) private external fun backend_free() @@ -231,14 +238,24 @@ class LLamaAndroid : ILlamaController { } } - override suspend fun load(pathToModel: String) { + override suspend fun load(pathToModel: String) = load(pathToModel, DEFAULT_N_CTX) + + /** + * Loads a model and gives its context [nCtx] tokens. The size is an argument rather than + * process-global state so that it cannot be overwritten between being chosen and being used: + * the context is created on the run loop, well after the caller picked the number. + * + * @param pathToModel filesystem path to the `.gguf` model + * @param nCtx context size in tokens; anything non-positive means [DEFAULT_N_CTX] + */ + suspend fun load(pathToModel: String, nCtx: Int) { withContext(runLoop()) { when (threadLocalState.get()) { is State.Idle -> { val model = load_model(pathToModel) if (model == 0L) throw IllegalStateException("load_model() failed") - val context = new_context(model) + val context = new_context(model, nCtx) if (context == 0L) throw IllegalStateException("new_context() failed") val batch = new_batch(2048, 0, 1) @@ -339,7 +356,10 @@ class LLamaAndroid : ILlamaController { } companion object { - private val nativeLog = LoggerFactory.getLogger("llama.cpp") + private val nativeLog = LoggerFactory.getLogger("$LOG_PREFIX.llama.cpp") + + /** Context a [load] gets when the caller does not pick one; matches DEFAULT_N_CTX natively. */ + const val DEFAULT_N_CTX = 4096 // External native methods @JvmStatic @@ -348,9 +368,6 @@ class LLamaAndroid : ILlamaController { @JvmStatic private external fun native_configureSampling(temperature: Float, topP: Float, topK: Int) - @JvmStatic - private external fun native_configureContext(nCtx: Int) - @JvmStatic private external fun native_configureKvCacheReuse(enabled: Boolean) @@ -367,12 +384,6 @@ class LLamaAndroid : ILlamaController { native_configureSampling(temperature, topP, topK) } - @JvmStatic - fun configureContext(nCtx: Int) { - NativeLibraryLoader.ensureLoaded() - native_configureContext(nCtx) - } - @JvmStatic fun configureKvCacheReuse(enabled: Boolean) { NativeLibraryLoader.ensureLoaded() diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt index cb11c9b2..f83a2616 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt @@ -12,6 +12,7 @@ import com.itsaky.androidide.plugins.aiagentlocal.feedback.ModelNotConfiguredExc import com.itsaky.androidide.plugins.aiagentlocal.feedback.UserActionableLlmException import com.itsaky.androidide.plugins.aiagentlocal.feedback.UserFeedback import com.itsaky.androidide.plugins.aiagentlocal.model.GgufModelInspector +import com.itsaky.androidide.plugins.aiagentlocal.model.ModelContextResolver import com.itsaky.androidide.plugins.aiagentlocal.model.ModelLoadDiagnostics import com.itsaky.androidide.plugins.aiagentlocal.model.ModelLoadMessages import com.itsaky.androidide.plugins.aiagentlocal.preferences.LocalLlmPreferences @@ -33,6 +34,7 @@ import kotlinx.coroutines.ensureActive import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext /** * Local LLM backend using llama-impl for on-device inference. @@ -307,13 +309,16 @@ class LocalLlmBackend( } // Measured after the unload: availMem excludes the context and batch it just released. - ModelLoadDiagnostics.refuseBeforeLoad(availableMemoryBytes())?.let { shortfall -> + val availableBytes = availableMemoryBytes() + ModelLoadDiagnostics.refuseBeforeLoad(availableBytes)?.let { shortfall -> throw ModelLoadException(loadMessages.describe(shortfall), shortfall) } + val contextTokens = resolveContextSize(resolvedPath, availableBytes) + context.logger.info("Loading model: $resolvedPath") try { - llama.load(resolvedPath) + llama.load(resolvedPath, contextTokens) } catch (e: CancellationException) { throw e } catch (e: Exception) { @@ -328,6 +333,30 @@ class LocalLlmBackend( context.logger.info("Model loaded successfully") } + /** + * Sizes the KV cache for this model on this device. Must run after any unload, so the freed + * context is counted as available, and the answer is passed to [LLamaAndroid.load] rather than + * stored anywhere. [ModelContextResolver] fails open, so this has no failure of its own. + * + * @param resolvedPath filesystem path to the model, already resolved from any content URI + * @param availableBytes free RAM as [availableMemoryBytes] reports it, negative if unknown + * @return the context size in tokens to load the model with + */ + private suspend fun resolveContextSize(resolvedPath: String, availableBytes: Long): Int { + val resolved = withContext(Dispatchers.IO) { + ModelContextResolver.resolve(availableBytes.takeIf { it >= 0L }) { + File(resolvedPath).takeIf { it.isFile }?.inputStream() + } + } + // Unconditional: a wrongly sized context otherwise just reads as the assistant forgetting. + context.logger.info( + "Context size for $resolvedPath: ${resolved.contextTokens} tokens" + + " (model advertises ${resolved.advertisedTokens ?: "unknown"}," + + " ${if (availableBytes >= 0L) "$availableBytes bytes free" else "free RAM unknown"})" + ) + return resolved.contextTokens + } + /** * @return free RAM the OS reports, or -1 if unreadable (diagnosis then skips the low-memory case) */ diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt new file mode 100644 index 00000000..28789162 --- /dev/null +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt @@ -0,0 +1,61 @@ +package com.itsaky.androidide.plugins.aiagentlocal.model + +/** + * Picks the context size (`n_ctx`) one model load gets, from what the model advertises and what the + * device can spare — the KV cache scales linearly with it and is the largest knob we control. Pure + * and Android-free, so every boundary is unit-testable off-device. See ADFA-5187. + */ +object ContextSizePolicy { + + /** + * The context every load got before this policy existed, and now both the fallback for any + * unreadable input and the floor. Below it the native prompt check starts rejecting + * conversations that fit today, so a smaller context costs working prompts rather than saving. + */ + const val DEFAULT_CONTEXT_TOKENS = 4096 + + /** + * Ceiling, whatever the model advertises and the device can afford. Four times the old fixed + * context and already past the point of diminishing returns, since prefill cost grows with the + * prompt. Models advertising 32k+ are capped here rather than taken at their word. + */ + const val MAX_CONTEXT_TOKENS = 16384 + + /** + * Contexts are rounded down to a multiple of this. Purely cosmetic — it keeps the chosen value + * and the llama.cpp context dump readable instead of reporting a number like 11417. + */ + private const val GRANULARITY_TOKENS = 256 + + /** + * The share of usable free RAM the KV cache may claim. The IDE and the app being edited draw on + * the same pool, and `availMem` is a snapshot taken before a load that then takes seconds, so + * half is left alone rather than sizing to the last free byte. + */ + private const val KV_BUDGET_DIVISOR = 2L + + /** + * @param header the model's GGUF metadata, or null when it could not be read + * @param availableBytes free RAM right now, or null when it could not be read + * @return the context to configure, always between [DEFAULT_CONTEXT_TOKENS] and + * [MAX_CONTEXT_TOKENS] inclusive + */ + fun choose(header: GgufHeader?, availableBytes: Long?): Int { + // Each null is a distinct "we don't know"; all of them mean the same fallback. + if (header == null || availableBytes == null) return DEFAULT_CONTEXT_TOKENS + val modelTokens = header.contextLength?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS + // Nothing to weigh below the floor, and no reason to price a cache we would not shrink. + if (modelTokens <= DEFAULT_CONTEXT_TOKENS) return DEFAULT_CONTEXT_TOKENS + + val perToken = ModelMemoryEstimator.kvBytesPerToken(header)?.takeIf { it > 0L } + ?: return DEFAULT_CONTEXT_TOKENS + + // Compute buffers come off the top; goes negative on a short device, which the floor absorbs. + val budgetBytes = (availableBytes - ModelMemory.RUN_BUFFER_BYTES) / KV_BUDGET_DIVISOR + val affordableTokens = budgetBytes / perToken + + val ceiling = minOf(modelTokens, affordableTokens, MAX_CONTEXT_TOKENS.toLong()) + val rounded = (ceiling / GRANULARITY_TOKENS) * GRANULARITY_TOKENS + return rounded.coerceIn(DEFAULT_CONTEXT_TOKENS.toLong(), MAX_CONTEXT_TOKENS.toLong()).toInt() + } +} diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt index 25693daa..985b5ee5 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt @@ -13,6 +13,8 @@ import java.io.InputStream * * @property architecture `general.architecture`; also the prefix every other key here is read under * @property blockCount transformer layers, `{arch}.block_count` + * @property contextLength the context the model was trained for, `{arch}.context_length`; the + * ceiling [ContextSizePolicy] sizes the KV cache against, and absent on files that omit it * @property embeddingLength model width, `{arch}.embedding_length` * @property headCount attention heads, `{arch}.attention.head_count` * @property headCountKv key/value heads under grouped-query attention, absent for plain MHA @@ -23,6 +25,7 @@ import java.io.InputStream data class GgufHeader( val architecture: String?, val blockCount: Long?, + val contextLength: Long? = null, val embeddingLength: Long?, val headCount: Long?, val headCountKv: Long?, @@ -59,6 +62,7 @@ internal object GgufHeaderReader { // Matched by suffix, then attributed to the "{arch}." prefix they carry — see [readHeader]. private const val SUFFIX_BLOCK_COUNT = ".block_count" + private const val SUFFIX_CONTEXT_LENGTH = ".context_length" private const val SUFFIX_EMBEDDING_LENGTH = ".embedding_length" private const val SUFFIX_HEAD_COUNT = ".attention.head_count" private const val SUFFIX_HEAD_COUNT_KV = ".attention.head_count_kv" @@ -138,6 +142,7 @@ internal object GgufHeaderReader { /** The shape values seen under one `{arch}.` prefix. A file may carry more than one. */ private class ArchShape { var blockCount: Long? = null + var contextLength: Long? = null var embeddingLength: Long? = null var headCount: Long? = null var headCountKv: Long? = null @@ -170,6 +175,9 @@ internal object GgufHeaderReader { key.endsWith(SUFFIX_BLOCK_COUNT) -> shapeFor(shapes, key, SUFFIX_BLOCK_COUNT).blockCount = readInteger(input, type, wide) + key.endsWith(SUFFIX_CONTEXT_LENGTH) -> + shapeFor(shapes, key, SUFFIX_CONTEXT_LENGTH).contextLength = readInteger(input, type, wide) + key.endsWith(SUFFIX_EMBEDDING_LENGTH) -> shapeFor(shapes, key, SUFFIX_EMBEDDING_LENGTH).embeddingLength = readInteger(input, type, wide) @@ -195,6 +203,7 @@ internal object GgufHeaderReader { return GgufHeader( architecture = architecture, blockCount = shape?.blockCount, + contextLength = shape?.contextLength, embeddingLength = shape?.embeddingLength, headCount = shape?.headCount, headCountKv = shape?.headCountKv, diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt new file mode 100644 index 00000000..b7ecfd0d --- /dev/null +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt @@ -0,0 +1,43 @@ +package com.itsaky.androidide.plugins.aiagentlocal.model + +import java.io.InputStream + +/** + * The context size one model load should get, and the header it was decided from. + * + * @property contextTokens the context to load with; always a value [ContextSizePolicy] returned + * @property header the model's parsed metadata, or null when it could not be read + */ +internal data class ModelContextSize( + val contextTokens: Int, + val header: GgufHeader?, +) { + + /** The context the model claims to support, or null when the header did not say. */ + val advertisedTokens: Long? get() = header?.contextLength +} + +/** + * Decides how large a context a given model gets on this device: reads the model's GGUF header and + * hands it to [ContextSizePolicy]. Owning both steps lets the load path and the pre-load memory + * warning derive their numbers the same way, and stays Android-free to test. See ADFA-5187. + */ +internal object ModelContextResolver { + + /** + * Fails open by construction, with no error path of its own: [GgufHeaderReader.read] turns + * anything thrown while opening or parsing into a null header, and [ContextSizePolicy.choose] + * answers its default for one. Blocking — the header sits at the front of the model file. + * + * @param availableBytes free RAM in bytes, or null when it could not be read + * @param openStream opens the model file, or returns null when there is nothing to open + * @return the context to load with, and the header behind it + */ + fun resolve(availableBytes: Long?, openStream: () -> InputStream?): ModelContextSize { + val header = GgufHeaderReader.read(openStream) + return ModelContextSize( + contextTokens = ContextSizePolicy.choose(header, availableBytes), + header = header, + ) + } +} diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt index 0f318c1e..a25e7c26 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt @@ -23,17 +23,11 @@ data class MemoryEstimate( /** * Estimates the memory a `.gguf` model needs, from its size and its declared shape. Pure and - * Android-free, so the arithmetic is unit-testable. The context and batch sizes below are ai-agent-local's, - * fixed on its native side: an estimate has to model the loader that will actually run. + * Android-free, so the arithmetic is unit-testable. The context it measures at is the caller's — + * pass [ContextSizePolicy.choose]'s answer, or it describes an allocation nothing makes (ADFA-5187). */ object ModelMemoryEstimator { - /** - * The context every load gets, hard-coded as `ctx_params.n_ctx` in ai-agent-local's `llama-android.cpp`. - * The KV cache is sized from it, so keep the two in step. - */ - const val RUNTIME_CONTEXT_TOKENS = 4096L - /** Two bytes per cached element: f16, the default KV type. */ private const val KV_BYTES_PER_ELEMENT = 2L @@ -55,11 +49,17 @@ object ModelMemoryEstimator { /** * @param fileSizeBytes the model file's size, or null when it is unknown * @param header the model's metadata, or null when it could not be read + * @param contextTokens the context the load will be given; required, because a default here + * would silently describe an allocation nobody makes. [ModelContextResolver] supplies it. * @return the estimate, or null when there is nothing to base one on */ - fun estimate(fileSizeBytes: Long?, header: GgufHeader?): MemoryEstimate? { + fun estimate( + fileSizeBytes: Long?, + header: GgufHeader?, + contextTokens: Int, + ): MemoryEstimate? { if (fileSizeBytes == null || fileSizeBytes <= 0L) return null - val kvCacheBytes = header?.let(::kvCacheBytes) + val kvCacheBytes = header?.let { kvCacheBytes(it, contextTokens) } return if (kvCacheBytes != null) { MemoryEstimate(fileSizeBytes, kvCacheBytes + COMPUTE_BUFFER_BYTES, fromHeader = true) } else { @@ -73,17 +73,31 @@ object ModelMemoryEstimator { } /** - * KV cache size for a full context: one key and one value entry per kv head, per layer, per - * position. Null unless every value it needs is present and within its ceiling. + * KV cache size for a full context of [contextTokens]. Null unless every value it needs is + * present and within its ceiling, or the context is not positive. + */ + private fun kvCacheBytes(header: GgufHeader, contextTokens: Int): Long? { + if (contextTokens <= 0) return null + val perToken = kvBytesPerToken(header) ?: return null + return perToken * contextTokens + } + + /** + * What one cached position costs: one key and one value entry per kv head, per layer. The + * factor [ContextSizePolicy] divides a RAM budget by, so sizing and estimate cannot drift apart. + * Stays under 2^44 within the ceilings below, so any context the policy returns fits a Long. + * + * @param header the model's metadata + * @return bytes of KV cache per token, or null if the header does not say enough */ - private fun kvCacheBytes(header: GgufHeader): Long? { + internal fun kvBytesPerToken(header: GgufHeader): Long? { val layers = header.blockCount?.within(MAX_LAYERS) ?: return null val heads = header.headCount?.within(MAX_HEADS) ?: return null // Grouped-query attention caches only the kv heads; absent means one per head (plain MHA). val kvHeads = (header.headCountKv ?: heads).within(MAX_HEADS) ?: return null val keyWidth = header.keyLength?.within(MAX_WIDTH) ?: defaultHeadWidth(header) ?: return null val valueWidth = header.valueLength?.within(MAX_WIDTH) ?: defaultHeadWidth(header) ?: return null - return KV_BYTES_PER_ELEMENT * layers * RUNTIME_CONTEXT_TOKENS * kvHeads * (keyWidth + valueWidth) + return KV_BYTES_PER_ELEMENT * layers * kvHeads * (keyWidth + valueWidth) } /** The value when it is positive and no larger than [ceiling]; null when it is neither. */ diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt index f5f5cf89..3e9b1dba 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt @@ -14,7 +14,7 @@ import com.itsaky.androidide.plugins.aiagentlocal.logging.LOG_PREFIX import com.itsaky.androidide.plugins.aiagentlocal.model.ContentModelFileSource import com.itsaky.androidide.plugins.aiagentlocal.model.DeviceMemory import com.itsaky.androidide.plugins.aiagentlocal.model.GgufFileInspector -import com.itsaky.androidide.plugins.aiagentlocal.model.GgufHeaderReader +import com.itsaky.androidide.plugins.aiagentlocal.model.ModelContextResolver import com.itsaky.androidide.plugins.aiagentlocal.model.ModelFileInfo import com.itsaky.androidide.plugins.aiagentlocal.model.ModelFileSource import com.itsaky.androidide.plugins.aiagentlocal.model.ModelMemoryEstimator @@ -276,12 +276,17 @@ class LocalLlmSettingsViewModel( context: Context ): Boolean { val modelName = fileInfo.displayName + // Never cached: the user may have just closed apps to make room. + val availableBytes = deviceMemory.availableBytes() + // Resolved the same way the load will resolve it, so the warning describes the real allocation. + val resolved = ModelContextResolver.resolve(availableBytes) { + modelFiles.openStream(context, uriString) + } val estimate = ModelMemoryEstimator.estimate( fileSizeBytes = fileInfo.sizeBytes, - header = GgufHeaderReader.read { modelFiles.openStream(context, uriString) }, + header = resolved.header, + contextTokens = resolved.contextTokens, ) - // Read last and never cached: the user may have just closed apps to make room. - val availableBytes = deviceMemory.availableBytes() return when (val verdict = ModelMemoryGate.evaluate(estimate, availableBytes)) { ModelMemoryGate.Verdict.Safe -> true diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt new file mode 100644 index 00000000..c1f2098c --- /dev/null +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt @@ -0,0 +1,139 @@ +package com.itsaky.androidide.plugins.aiagentlocal.model + +import com.itsaky.androidide.plugins.aiagentlocal.model.ContextSizePolicy.DEFAULT_CONTEXT_TOKENS +import com.itsaky.androidide.plugins.aiagentlocal.model.ContextSizePolicy.MAX_CONTEXT_TOKENS +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test + +class ContextSizePolicyTest { + + /** A small GQA model: 24 layers, 8 kv heads of 64, so 2 * 24 * 8 * 128 = 49_152 B/token. */ + private fun header( + contextLength: Long? = 32768L, + blockCount: Long? = 24L, + headCount: Long? = 16L, + headCountKv: Long? = 8L, + keyLength: Long? = 64L, + valueLength: Long? = 64L, + ) = GgufHeader( + architecture = "llama", + blockCount = blockCount, + contextLength = contextLength, + embeddingLength = 1024L, + headCount = headCount, + headCountKv = headCountKv, + keyLength = keyLength, + valueLength = valueLength, + ) + + private val bytesPerToken = 2L * 24L * 8L * (64L + 64L) + + /** Free RAM that affords exactly [tokens], undoing the reserve and the budget divisor. */ + private fun ramAffording(tokens: Long): Long = + tokens * bytesPerToken * 2L + ModelMemory.RUN_BUFFER_BYTES + + @Test + fun givenNoHeader_whenChoosing_thenFallsBackToDefault() { + assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(null, ramAffording(100_000L))) + } + + @Test + fun givenNoContextLengthInHeader_whenChoosing_thenFallsBackToDefault() { + val result = ContextSizePolicy.choose(header(contextLength = null), ramAffording(100_000L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenUnreadableMemory_whenChoosing_thenFallsBackToDefault() { + assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(header(), null)) + } + + @Test + fun givenHeaderMissingShapeValues_whenChoosing_thenFallsBackToDefault() { + // No block count and no way to derive one: the per-token cost is unknowable. + val result = ContextSizePolicy.choose(header(blockCount = null), ramAffording(100_000L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenLargeContextModelAndAmpleRam_whenChoosing_thenCapsAtMaximum() { + val result = ContextSizePolicy.choose(header(contextLength = 32768L), ramAffording(100_000L)) + assertEquals(MAX_CONTEXT_TOKENS, result) + } + + @Test + fun givenModelContextBelowFloor_whenChoosing_thenHoldsTheFloor() { + val result = ContextSizePolicy.choose(header(contextLength = 2048L), ramAffording(100_000L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenModelContextBetweenFloorAndMaximum_whenChoosing_thenUsesTheModelContext() { + val result = ContextSizePolicy.choose(header(contextLength = 8192L), ramAffording(100_000L)) + assertEquals(8192, result) + } + + @Test + fun givenRamBoundDevice_whenChoosing_thenReturnsRoundedAffordableContext() { + // Affords 10_000 tokens; expect it rounded down to a multiple of 256. + val result = ContextSizePolicy.choose(header(), ramAffording(10_000L)) + assertEquals(9984, result) + assertTrue("must stay under the model's own context", result < 32768) + } + + @Test + fun givenTightRam_whenChoosing_thenNeverGoesBelowTheFloor() { + val result = ContextSizePolicy.choose(header(), ramAffording(1_000L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenNoFreeMemory_whenChoosing_thenReturnsFloorRatherThanZero() { + assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(header(), 0L)) + } + + @Test + fun givenLessFreeRamThanTheComputeReserve_whenChoosing_thenReturnsFloor() { + // Budget goes negative here; the floor has to absorb it rather than a negative context. + val result = ContextSizePolicy.choose(header(), ModelMemory.RUN_BUFFER_BYTES / 2) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenAbsurdContextLength_whenChoosing_thenCapsAtMaximumWithoutOverflow() { + val result = ContextSizePolicy.choose(header(contextLength = Long.MAX_VALUE), ramAffording(100_000L)) + assertEquals(MAX_CONTEXT_TOKENS, result) + } + + @Test + fun givenNegativeContextLength_whenChoosing_thenFallsBackToDefault() { + val result = ContextSizePolicy.choose(header(contextLength = -1L), ramAffording(100_000L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenAbsurdShapeValues_whenChoosing_thenFallsBackToDefaultWithoutOverflow() { + val result = ContextSizePolicy.choose( + header(blockCount = Long.MAX_VALUE, keyLength = Long.MAX_VALUE), + ramAffording(100_000L), + ) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenAnyInputs_whenChoosing_thenResultStaysWithinTheDeclaredBounds() { + val contexts = listOf(null, -1L, 0L, 512L, 4096L, 8192L, 32768L, Long.MAX_VALUE) + val memories = listOf(null, 0L, 1L, ModelMemory.RUN_BUFFER_BYTES, ramAffording(50_000L), Long.MAX_VALUE) + for (context in contexts) { + for (memory in memories) { + val result = ContextSizePolicy.choose(header(contextLength = context), memory) + assertTrue( + "context=$context memory=$memory gave $result", + result in DEFAULT_CONTEXT_TOKENS..MAX_CONTEXT_TOKENS, + ) + assertEquals("must be a whole number of 256-token blocks", 0, result % 256) + } + } + } +} diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt new file mode 100644 index 00000000..69647436 --- /dev/null +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt @@ -0,0 +1,58 @@ +package com.itsaky.androidide.plugins.aiagentlocal.model + +import com.itsaky.androidide.plugins.aiagentlocal.model.ContextSizePolicy.DEFAULT_CONTEXT_TOKENS +import java.io.IOException +import java.io.InputStream +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +/** + * Pins the fail-open contract: no way of failing to read a header may propagate out of [resolve], + * because the caller is a model load that should proceed at the default context instead of aborting. + */ +class ModelContextResolverTest { + + @Test + fun givenAnOpenerThatThrows_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { + throw IOException("permission denied") + } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + assertNull(resolved.header) + } + + @Test + fun givenAnOpenerReturningNoStream_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { null } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + assertNull(resolved.header) + } + + @Test + fun givenAStreamThatIsNotGguf_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { + "not a model file".byteInputStream() + } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + assertNull(resolved.header) + } + + @Test + fun givenAStreamThatThrowsMidRead_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { ThrowingStream() } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + assertNull(resolved.header) + } + + @Test + fun givenUnknownFreeMemory_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(null) { "not a model file".byteInputStream() } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + } + + /** Opens fine and then fails, which is the case a null-check on the opener would not cover. */ + private class ThrowingStream : InputStream() { + override fun read(): Int = throw IOException("device is gone") + } +} From 1706b802d98e1ae7024dde0f87ed1458b7bd6814 Mon Sep 17 00:00:00 2001 From: John Trujillo Date: Thu, 27 Aug 2026 09:51:31 -0500 Subject: [PATCH 2/4] fix(ai-agent-local): charge model weights against the KV budget Floor the native trained-context clamp at 4096 and log the n_ctx actually created; price the pre-flight warning at the floor to break its circularity. --- ai-agent-local/libs/v8/llama-v8-release.aar | Bin 2088226 -> 2088252 bytes .../llama-impl/src/main/cpp/llama-android.cpp | 11 ++- .../aiagentlocal/backend/LocalLlmBackend.kt | 35 +++++++- .../aiagentlocal/model/ContextSizePolicy.kt | 15 ++-- .../model/ModelContextResolver.kt | 10 ++- .../model/ModelMemoryEstimator.kt | 9 +- .../settings/LocalLlmSettingsViewModel.kt | 16 ++-- .../model/ContextSizePolicyTest.kt | 85 +++++++++++++----- .../model/ModelContextResolverTest.kt | 28 ++++-- 9 files changed, 155 insertions(+), 54 deletions(-) diff --git a/ai-agent-local/libs/v8/llama-v8-release.aar b/ai-agent-local/libs/v8/llama-v8-release.aar index 3dce8e6d8334d5c6b7c651bb98e77b0fb62f5e82..eb7164be62bdb07e752f62b0a2747ebbc4a5a510 100644 GIT binary patch delta 108590 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

Sj#A{##+dJ&9tA7*E}>)n#1Ja1W;3_$J33n{<3b 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 P61+*5GA?-L%$ffJXa!H$ diff --git a/ai-agent-local/llama-impl/src/main/cpp/llama-android.cpp b/ai-agent-local/llama-impl/src/main/cpp/llama-android.cpp index 2698b07c..54697c0f 100644 --- a/ai-agent-local/llama-impl/src/main/cpp/llama-android.cpp +++ b/ai-agent-local/llama-impl/src/main/cpp/llama-android.cpp @@ -391,11 +391,14 @@ Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmo int requested_ctx = jn_ctx > 0 ? jn_ctx : DEFAULT_N_CTX; - // Backstop on Kotlin's number: a misparsed header must not exceed what the model was trained for. + // Backstop on Kotlin's number: a misparsed header must not exceed the trained context. Floored + // at DEFAULT_N_CTX, the context a 2048-trained model always got, so no prompt that fit regresses. const int trained_ctx = llama_model_n_ctx_train(model); - if (trained_ctx > 0 && requested_ctx > trained_ctx) { - LOGi("context: requested n_ctx %d exceeds the model's trained %d; clamping", requested_ctx, trained_ctx); - requested_ctx = trained_ctx; + const int clamp_ctx = std::max(trained_ctx, DEFAULT_N_CTX); + if (trained_ctx > 0 && requested_ctx > clamp_ctx) { + LOGi("context: requested n_ctx %d exceeds the model's trained %d; clamping to %d", + requested_ctx, trained_ctx, clamp_ctx); + requested_ctx = clamp_ctx; } ctx_params.n_ctx = requested_ctx; diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt index f83a2616..d28cfae3 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt @@ -331,6 +331,33 @@ class LocalLlmBackend( modelLoaded = true currentModelPath = resolvedPath context.logger.info("Model loaded successfully") + reportEffectiveContextSize(contextTokens) + } + + /** + * Logs the context the native side actually created. It can be smaller than what was asked for + * — `new_context` clamps a request above what the model was trained for — and without this the + * only visible number is the request, so a prompt rejected as too long looks like it fit. + * + * @param requestedTokens the context [resolveContextSize] asked for + */ + private suspend fun reportEffectiveContextSize(requestedTokens: Int) { + val actual = try { + llama.getContextSize() + } catch (e: CancellationException) { + throw e + } catch (e: Exception) { + context.logger.warn("Could not read the created context size: ${e.message}") + return + } + if (actual == requestedTokens) { + context.logger.info("Context size in effect: $actual tokens") + } else { + context.logger.warn( + "Context size in effect: $actual tokens, not the $requestedTokens requested;" + + " prompt-length limits follow the smaller number" + ) + } } /** @@ -344,9 +371,11 @@ class LocalLlmBackend( */ private suspend fun resolveContextSize(resolvedPath: String, availableBytes: Long): Int { val resolved = withContext(Dispatchers.IO) { - ModelContextResolver.resolve(availableBytes.takeIf { it >= 0L }) { - File(resolvedPath).takeIf { it.isFile }?.inputStream() - } + val file = File(resolvedPath).takeIf { it.isFile } + ModelContextResolver.resolve( + availableBytes = availableBytes.takeIf { it >= 0L }, + modelSizeBytes = file?.length()?.takeIf { it > 0L }, + ) { file?.inputStream() } } // Unconditional: a wrongly sized context otherwise just reads as the assistant forgetting. context.logger.info( diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt index 28789162..56e4e303 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt @@ -28,21 +28,23 @@ object ContextSizePolicy { private const val GRANULARITY_TOKENS = 256 /** - * The share of usable free RAM the KV cache may claim. The IDE and the app being edited draw on - * the same pool, and `availMem` is a snapshot taken before a load that then takes seconds, so - * half is left alone rather than sizing to the last free byte. + * The share of what the weights and compute buffers leave that the KV cache may claim. The IDE + * and the app being edited draw on the same pool, and `availMem` is a snapshot taken before a + * load that then takes seconds, so half is left alone rather than sized to the last free byte. */ private const val KV_BUDGET_DIVISOR = 2L /** * @param header the model's GGUF metadata, or null when it could not be read * @param availableBytes free RAM right now, or null when it could not be read + * @param modelSizeBytes the model file's size, or null when it could not be read * @return the context to configure, always between [DEFAULT_CONTEXT_TOKENS] and * [MAX_CONTEXT_TOKENS] inclusive */ - fun choose(header: GgufHeader?, availableBytes: Long?): Int { + fun choose(header: GgufHeader?, availableBytes: Long?, modelSizeBytes: Long?): Int { // Each null is a distinct "we don't know"; all of them mean the same fallback. if (header == null || availableBytes == null) return DEFAULT_CONTEXT_TOKENS + val weightBytes = modelSizeBytes?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS val modelTokens = header.contextLength?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS // Nothing to weigh below the floor, and no reason to price a cache we would not shrink. if (modelTokens <= DEFAULT_CONTEXT_TOKENS) return DEFAULT_CONTEXT_TOKENS @@ -50,8 +52,9 @@ object ContextSizePolicy { val perToken = ModelMemoryEstimator.kvBytesPerToken(header)?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS - // Compute buffers come off the top; goes negative on a short device, which the floor absorbs. - val budgetBytes = (availableBytes - ModelMemory.RUN_BUFFER_BYTES) / KV_BUDGET_DIVISOR + // Weights and compute buffers come off the top; negative on a short device, floor absorbs it. + val spareBytes = availableBytes - weightBytes - ModelMemory.RUN_BUFFER_BYTES + val budgetBytes = spareBytes / KV_BUDGET_DIVISOR val affordableTokens = budgetBytes / perToken val ceiling = minOf(modelTokens, affordableTokens, MAX_CONTEXT_TOKENS.toLong()) diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt index b7ecfd0d..6ba3bd1d 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt @@ -30,13 +30,19 @@ internal object ModelContextResolver { * answers its default for one. Blocking — the header sits at the front of the model file. * * @param availableBytes free RAM in bytes, or null when it could not be read + * @param modelSizeBytes the model file's size in bytes, or null when it could not be read; the + * weights are charged against free RAM before the KV cache gets a budget * @param openStream opens the model file, or returns null when there is nothing to open * @return the context to load with, and the header behind it */ - fun resolve(availableBytes: Long?, openStream: () -> InputStream?): ModelContextSize { + fun resolve( + availableBytes: Long?, + modelSizeBytes: Long?, + openStream: () -> InputStream?, + ): ModelContextSize { val header = GgufHeaderReader.read(openStream) return ModelContextSize( - contextTokens = ContextSizePolicy.choose(header, availableBytes), + contextTokens = ContextSizePolicy.choose(header, availableBytes, modelSizeBytes), header = header, ) } diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt index a25e7c26..97d77844 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt @@ -23,8 +23,9 @@ data class MemoryEstimate( /** * Estimates the memory a `.gguf` model needs, from its size and its declared shape. Pure and - * Android-free, so the arithmetic is unit-testable. The context it measures at is the caller's — - * pass [ContextSizePolicy.choose]'s answer, or it describes an allocation nothing makes (ADFA-5187). + * Android-free, so the arithmetic is unit-testable. The context it measures at is the caller's: the + * load path passes [ContextSizePolicy.choose]'s answer, the pre-flight warning the floor, since a + * figure derived from free RAM cannot then be judged against it (ADFA-5187). */ object ModelMemoryEstimator { @@ -49,8 +50,8 @@ object ModelMemoryEstimator { /** * @param fileSizeBytes the model file's size, or null when it is unknown * @param header the model's metadata, or null when it could not be read - * @param contextTokens the context the load will be given; required, because a default here - * would silently describe an allocation nobody makes. [ModelContextResolver] supplies it. + * @param contextTokens the context to price the cache at; required, because a default here + * would silently describe an allocation nobody makes * @return the estimate, or null when there is nothing to base one on */ fun estimate( diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt index 3e9b1dba..36b8cebe 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt @@ -12,9 +12,10 @@ import com.itsaky.androidide.plugins.aiagentlocal.R import com.itsaky.androidide.plugins.aiagentlocal.format.ByteSize import com.itsaky.androidide.plugins.aiagentlocal.logging.LOG_PREFIX import com.itsaky.androidide.plugins.aiagentlocal.model.ContentModelFileSource +import com.itsaky.androidide.plugins.aiagentlocal.model.ContextSizePolicy import com.itsaky.androidide.plugins.aiagentlocal.model.DeviceMemory import com.itsaky.androidide.plugins.aiagentlocal.model.GgufFileInspector -import com.itsaky.androidide.plugins.aiagentlocal.model.ModelContextResolver +import com.itsaky.androidide.plugins.aiagentlocal.model.GgufHeaderReader import com.itsaky.androidide.plugins.aiagentlocal.model.ModelFileInfo import com.itsaky.androidide.plugins.aiagentlocal.model.ModelFileSource import com.itsaky.androidide.plugins.aiagentlocal.model.ModelMemoryEstimator @@ -267,6 +268,9 @@ class LocalLlmSettingsViewModel( /** * Checks the model against free RAM and, when it looks too large, asks the user whether to go * ahead. Fails OPEN: an unreadable size or header means no warning rather than a wrong one. + * Prices the KV cache at the floor context, never at one derived from the free RAM it is then + * compared against — that would make a larger granted context the thing that trips the warning, + * and would move "needs X to run" between two selections of the same model. * * @return true to continue with this model */ @@ -278,14 +282,12 @@ class LocalLlmSettingsViewModel( val modelName = fileInfo.displayName // Never cached: the user may have just closed apps to make room. val availableBytes = deviceMemory.availableBytes() - // Resolved the same way the load will resolve it, so the warning describes the real allocation. - val resolved = ModelContextResolver.resolve(availableBytes) { - modelFiles.openStream(context, uriString) - } + // The floor is the least the load can use, so also the least this model can cost. + val header = GgufHeaderReader.read { modelFiles.openStream(context, uriString) } val estimate = ModelMemoryEstimator.estimate( fileSizeBytes = fileInfo.sizeBytes, - header = resolved.header, - contextTokens = resolved.contextTokens, + header = header, + contextTokens = ContextSizePolicy.DEFAULT_CONTEXT_TOKENS, ) return when (val verdict = ModelMemoryGate.evaluate(estimate, availableBytes)) { diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt index c1f2098c..784d0304 100644 --- a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt @@ -29,110 +29,149 @@ class ContextSizePolicyTest { private val bytesPerToken = 2L * 24L * 8L * (64L + 64L) - /** Free RAM that affords exactly [tokens], undoing the reserve and the budget divisor. */ - private fun ramAffording(tokens: Long): Long = - tokens * bytesPerToken * 2L + ModelMemory.RUN_BUFFER_BYTES + /** A model small enough that the weights term never decides these cases on its own. */ + private val modelSize = 64L * 1024 * 1024 + + /** + * Free RAM that affords exactly [tokens], undoing the weights, the reserve and the divisor. + * + * @param tokens the context the returned figure should just cover + * @param weightBytes the model size the caller will pass alongside it + */ + private fun ramAffording(tokens: Long, weightBytes: Long = modelSize): Long = + tokens * bytesPerToken * 2L + weightBytes + ModelMemory.RUN_BUFFER_BYTES + + /** [ContextSizePolicy.choose] with the model size defaulted, which most cases do not vary. */ + private fun choose( + header: GgufHeader?, + availableBytes: Long?, + modelSizeBytes: Long? = modelSize, + ): Int = ContextSizePolicy.choose(header, availableBytes, modelSizeBytes) @Test fun givenNoHeader_whenChoosing_thenFallsBackToDefault() { - assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(null, ramAffording(100_000L))) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(null, ramAffording(100_000L))) } @Test fun givenNoContextLengthInHeader_whenChoosing_thenFallsBackToDefault() { - val result = ContextSizePolicy.choose(header(contextLength = null), ramAffording(100_000L)) + val result = choose(header(contextLength = null), ramAffording(100_000L)) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenUnreadableMemory_whenChoosing_thenFallsBackToDefault() { - assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(header(), null)) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), null)) } @Test fun givenHeaderMissingShapeValues_whenChoosing_thenFallsBackToDefault() { // No block count and no way to derive one: the per-token cost is unknowable. - val result = ContextSizePolicy.choose(header(blockCount = null), ramAffording(100_000L)) + val result = choose(header(blockCount = null), ramAffording(100_000L)) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenLargeContextModelAndAmpleRam_whenChoosing_thenCapsAtMaximum() { - val result = ContextSizePolicy.choose(header(contextLength = 32768L), ramAffording(100_000L)) + val result = choose(header(contextLength = 32768L), ramAffording(100_000L)) assertEquals(MAX_CONTEXT_TOKENS, result) } @Test fun givenModelContextBelowFloor_whenChoosing_thenHoldsTheFloor() { - val result = ContextSizePolicy.choose(header(contextLength = 2048L), ramAffording(100_000L)) + val result = choose(header(contextLength = 2048L), ramAffording(100_000L)) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenModelContextBetweenFloorAndMaximum_whenChoosing_thenUsesTheModelContext() { - val result = ContextSizePolicy.choose(header(contextLength = 8192L), ramAffording(100_000L)) + val result = choose(header(contextLength = 8192L), ramAffording(100_000L)) assertEquals(8192, result) } @Test fun givenRamBoundDevice_whenChoosing_thenReturnsRoundedAffordableContext() { // Affords 10_000 tokens; expect it rounded down to a multiple of 256. - val result = ContextSizePolicy.choose(header(), ramAffording(10_000L)) + val result = choose(header(), ramAffording(10_000L)) assertEquals(9984, result) assertTrue("must stay under the model's own context", result < 32768) } @Test fun givenTightRam_whenChoosing_thenNeverGoesBelowTheFloor() { - val result = ContextSizePolicy.choose(header(), ramAffording(1_000L)) + val result = choose(header(), ramAffording(1_000L)) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenNoFreeMemory_whenChoosing_thenReturnsFloorRatherThanZero() { - assertEquals(DEFAULT_CONTEXT_TOKENS, ContextSizePolicy.choose(header(), 0L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), 0L)) } @Test fun givenLessFreeRamThanTheComputeReserve_whenChoosing_thenReturnsFloor() { // Budget goes negative here; the floor has to absorb it rather than a negative context. - val result = ContextSizePolicy.choose(header(), ModelMemory.RUN_BUFFER_BYTES / 2) + val result = choose(header(), ModelMemory.RUN_BUFFER_BYTES / 2) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenAbsurdContextLength_whenChoosing_thenCapsAtMaximumWithoutOverflow() { - val result = ContextSizePolicy.choose(header(contextLength = Long.MAX_VALUE), ramAffording(100_000L)) + val result = choose(header(contextLength = Long.MAX_VALUE), ramAffording(100_000L)) assertEquals(MAX_CONTEXT_TOKENS, result) } @Test fun givenNegativeContextLength_whenChoosing_thenFallsBackToDefault() { - val result = ContextSizePolicy.choose(header(contextLength = -1L), ramAffording(100_000L)) + val result = choose(header(contextLength = -1L), ramAffording(100_000L)) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } @Test fun givenAbsurdShapeValues_whenChoosing_thenFallsBackToDefaultWithoutOverflow() { - val result = ContextSizePolicy.choose( + val result = choose( header(blockCount = Long.MAX_VALUE, keyLength = Long.MAX_VALUE), ramAffording(100_000L), ) assertEquals(DEFAULT_CONTEXT_TOKENS, result) } + @Test + fun givenUnreadableModelSize_whenChoosing_thenFallsBackToDefault() { + val result = choose(header(), ramAffording(100_000L), modelSizeBytes = null) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenModelWeightsFillingMostOfFreeRam_whenChoosing_thenHoldsTheFloor() { + // 4.4 GB of weights in 3.5 GB free: nothing is left to spend, whatever the model advertises. + val result = choose(header(), availableBytes = 3_500L * 1024 * 1024, modelSizeBytes = 4_400L * 1024 * 1024) + assertEquals(DEFAULT_CONTEXT_TOKENS, result) + } + + @Test + fun givenTwoModelSizesAndTheSameFreeRam_whenChoosing_thenTheLargerModelGetsLessContext() { + val availableBytes = ramAffording(12_000L, weightBytes = 0L) + val small = choose(header(), availableBytes, modelSizeBytes = 128L * 1024 * 1024) + val large = choose(header(), availableBytes, modelSizeBytes = 1_024L * 1024 * 1024) + assertTrue("weights must reduce the KV budget, got $small then $large", large < small) + } + @Test fun givenAnyInputs_whenChoosing_thenResultStaysWithinTheDeclaredBounds() { val contexts = listOf(null, -1L, 0L, 512L, 4096L, 8192L, 32768L, Long.MAX_VALUE) val memories = listOf(null, 0L, 1L, ModelMemory.RUN_BUFFER_BYTES, ramAffording(50_000L), Long.MAX_VALUE) + val sizes = listOf(null, -1L, 0L, 1L, modelSize, Long.MAX_VALUE) for (context in contexts) { for (memory in memories) { - val result = ContextSizePolicy.choose(header(contextLength = context), memory) - assertTrue( - "context=$context memory=$memory gave $result", - result in DEFAULT_CONTEXT_TOKENS..MAX_CONTEXT_TOKENS, - ) - assertEquals("must be a whole number of 256-token blocks", 0, result % 256) + for (size in sizes) { + val result = choose(header(contextLength = context), memory, size) + assertTrue( + "context=$context memory=$memory size=$size gave $result", + result in DEFAULT_CONTEXT_TOKENS..MAX_CONTEXT_TOKENS, + ) + assertEquals("must be a whole number of 256-token blocks", 0, result % 256) + } } } } diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt index 69647436..9f122190 100644 --- a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt @@ -15,7 +15,7 @@ class ModelContextResolverTest { @Test fun givenAnOpenerThatThrows_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { + val resolved = resolve { throw IOException("permission denied") } assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) @@ -24,14 +24,14 @@ class ModelContextResolverTest { @Test fun givenAnOpenerReturningNoStream_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { null } + val resolved = resolve { null } assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) assertNull(resolved.header) } @Test fun givenAStreamThatIsNotGguf_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { + val resolved = resolve { "not a model file".byteInputStream() } assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) @@ -40,19 +40,37 @@ class ModelContextResolverTest { @Test fun givenAStreamThatThrowsMidRead_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(Long.MAX_VALUE) { ThrowingStream() } + val resolved = resolve { ThrowingStream() } assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) assertNull(resolved.header) } @Test fun givenUnknownFreeMemory_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(null) { "not a model file".byteInputStream() } + val resolved = ModelContextResolver.resolve(null, MODEL_SIZE) { + "not a model file".byteInputStream() + } assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) } + @Test + fun givenUnknownModelSize_whenResolving_thenReturnsTheDefaultContext() { + val resolved = ModelContextResolver.resolve(Long.MAX_VALUE, null) { + "not a model file".byteInputStream() + } + assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) + } + + /** [ModelContextResolver.resolve] with room to spare, so only the header decides the answer. */ + private fun resolve(openStream: () -> InputStream?) = + ModelContextResolver.resolve(Long.MAX_VALUE, MODEL_SIZE, openStream) + /** Opens fine and then fails, which is the case a null-check on the opener would not cover. */ private class ThrowingStream : InputStream() { override fun read(): Int = throw IOException("device is gone") } + + private companion object { + const val MODEL_SIZE = 64L * 1024 * 1024 + } } From 5d181b36b8d3b68e21110ca7502ffef9b751d585 Mon Sep 17 00:00:00 2001 From: John Trujillo Date: Thu, 27 Aug 2026 12:04:20 -0500 Subject: [PATCH 3/4] fix(ai-agent-local): parse the GGUF header once and fail safe on absurd sizes Clamp both KV-budget subtractions so an oversized model can no longer underflow into the 16384 ceiling, read the metadata block once for both the embedding guard and the sizing, take free RAM after the parse, and append GgufHeader.contextLength. --- .../aiagentlocal/backend/LocalLlmBackend.kt | 37 ++++-- .../aiagentlocal/model/ContextSizePolicy.kt | 14 +- .../aiagentlocal/model/GgufHeaderReader.kt | 17 ++- .../aiagentlocal/model/GgufModelInspector.kt | 125 ++---------------- .../model/ModelContextResolver.kt | 29 ++-- .../settings/LocalLlmSettingsViewModel.kt | 5 +- .../model/ContextSizePolicyTest.kt | 30 ++++- .../model/ModelContextResolverTest.kt | 29 ++-- 8 files changed, 122 insertions(+), 164 deletions(-) diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt index d28cfae3..dffa7161 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt @@ -11,6 +11,8 @@ import com.itsaky.androidide.plugins.aiagentlocal.feedback.ModelLoadException import com.itsaky.androidide.plugins.aiagentlocal.feedback.ModelNotConfiguredException import com.itsaky.androidide.plugins.aiagentlocal.feedback.UserActionableLlmException import com.itsaky.androidide.plugins.aiagentlocal.feedback.UserFeedback +import com.itsaky.androidide.plugins.aiagentlocal.model.GgufHeader +import com.itsaky.androidide.plugins.aiagentlocal.model.GgufHeaderReader import com.itsaky.androidide.plugins.aiagentlocal.model.GgufModelInspector import com.itsaky.androidide.plugins.aiagentlocal.model.ModelContextResolver import com.itsaky.androidide.plugins.aiagentlocal.model.ModelLoadDiagnostics @@ -289,11 +291,19 @@ class LocalLlmBackend( return // Already loaded } + // One parse of the metadata block per load, feeding both the guard below and the context + // sizing after the unload: it sits at the front of a multi-GB file, and a model switch + // used to walk it twice. + val modelFile = File(resolvedPath).takeIf { it.isFile } + val (header, modelSizeBytes) = withContext(Dispatchers.IO) { + GgufHeaderReader.read { modelFile?.inputStream() } to + modelFile?.length()?.takeIf { it > 0L } + } + // Guard the chat path against encoder-only embedding models. Running causal generation on // one aborts natively (SIGABRT) and takes the IDE down. Classify BEFORE unloading any // working chat model, so a wrong selection never tears down a good one. See ADFA-4388. - val kind = GgufModelInspector.classify(resolvedPath) - if (kind.isEmbeddingOnly) { + if (GgufModelInspector.classify(header).isEmbeddingOnly) { throw IncompatibleModelException( "The selected model is an embedding model and can't be used for chat. " + "Choose a chat model in AI Settings." @@ -314,7 +324,7 @@ class LocalLlmBackend( throw ModelLoadException(loadMessages.describe(shortfall), shortfall) } - val contextTokens = resolveContextSize(resolvedPath, availableBytes) + val contextTokens = resolveContextSize(resolvedPath, availableBytes, header, modelSizeBytes) context.logger.info("Loading model: $resolvedPath") try { @@ -367,16 +377,21 @@ class LocalLlmBackend( * * @param resolvedPath filesystem path to the model, already resolved from any content URI * @param availableBytes free RAM as [availableMemoryBytes] reports it, negative if unknown + * @param header the model's metadata as read once by [ensureModelLoaded], null if unreadable + * @param modelSizeBytes the model file's size, null if unreadable * @return the context size in tokens to load the model with */ - private suspend fun resolveContextSize(resolvedPath: String, availableBytes: Long): Int { - val resolved = withContext(Dispatchers.IO) { - val file = File(resolvedPath).takeIf { it.isFile } - ModelContextResolver.resolve( - availableBytes = availableBytes.takeIf { it >= 0L }, - modelSizeBytes = file?.length()?.takeIf { it > 0L }, - ) { file?.inputStream() } - } + private fun resolveContextSize( + resolvedPath: String, + availableBytes: Long, + header: GgufHeader?, + modelSizeBytes: Long?, + ): Int { + val resolved = ModelContextResolver.resolve( + header = header, + availableBytes = availableBytes.takeIf { it >= 0L }, + modelSizeBytes = modelSizeBytes, + ) // Unconditional: a wrongly sized context otherwise just reads as the assistant forgetting. context.logger.info( "Context size for $resolvedPath: ${resolved.contextTokens} tokens" + diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt index 56e4e303..b6a0d82a 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt @@ -36,14 +36,17 @@ object ContextSizePolicy { /** * @param header the model's GGUF metadata, or null when it could not be read - * @param availableBytes free RAM right now, or null when it could not be read + * @param availableBytes free RAM right now, or null when it could not be read; a negative + * reading is treated as unreadable too * @param modelSizeBytes the model file's size, or null when it could not be read * @return the context to configure, always between [DEFAULT_CONTEXT_TOKENS] and * [MAX_CONTEXT_TOKENS] inclusive */ fun choose(header: GgufHeader?, availableBytes: Long?, modelSizeBytes: Long?): Int { // Each null is a distinct "we don't know"; all of them mean the same fallback. - if (header == null || availableBytes == null) return DEFAULT_CONTEXT_TOKENS + if (header == null) return DEFAULT_CONTEXT_TOKENS + // A negative reading is not free RAM this can reason about, so treat it as unreadable. + val freeBytes = availableBytes?.takeIf { it >= 0L } ?: return DEFAULT_CONTEXT_TOKENS val weightBytes = modelSizeBytes?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS val modelTokens = header.contextLength?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS // Nothing to weigh below the floor, and no reason to price a cache we would not shrink. @@ -52,8 +55,11 @@ object ContextSizePolicy { val perToken = ModelMemoryEstimator.kvBytesPerToken(header)?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS - // Weights and compute buffers come off the top; negative on a short device, floor absorbs it. - val spareBytes = availableBytes - weightBytes - ModelMemory.RUN_BUFFER_BYTES + // Weights first, then the compute buffers, each clamped at zero rather than left to run + // negative: an unclamped Long would underflow on an absurd size and wrap to a huge + // positive budget, turning "no RAM at all" into the ceiling instead of the floor. + val afterWeights = (freeBytes - weightBytes).coerceAtLeast(0L) + val spareBytes = (afterWeights - ModelMemory.RUN_BUFFER_BYTES).coerceAtLeast(0L) val budgetBytes = spareBytes / KV_BUDGET_DIVISOR val affordableTokens = budgetBytes / perToken diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt index 985b5ee5..2860cd3e 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt @@ -11,33 +11,36 @@ import java.io.InputStream * The GGUF metadata the memory estimate needs. Every field is nullable because a file may omit any * key; the estimator then falls back to a heuristic instead of guessing. * + * New properties are appended rather than inserted: every one of them is `Long?`, so a positional + * construction that shifted would still compile and silently bind the wrong value to each name. + * * @property architecture `general.architecture`; also the prefix every other key here is read under * @property blockCount transformer layers, `{arch}.block_count` - * @property contextLength the context the model was trained for, `{arch}.context_length`; the - * ceiling [ContextSizePolicy] sizes the KV cache against, and absent on files that omit it * @property embeddingLength model width, `{arch}.embedding_length` * @property headCount attention heads, `{arch}.attention.head_count` * @property headCountKv key/value heads under grouped-query attention, absent for plain MHA * @property keyLength per-head key width, `{arch}.attention.key_length`; absent means it is the * model width divided by the head count, which is only the default and not always the truth * @property valueLength per-head value width, `{arch}.attention.value_length`; as [keyLength] + * @property contextLength the context the model was trained for, `{arch}.context_length`; the + * ceiling [ContextSizePolicy] sizes the KV cache against, and absent on files that omit it */ data class GgufHeader( val architecture: String?, val blockCount: Long?, - val contextLength: Long? = null, val embeddingLength: Long?, val headCount: Long?, val headCountKv: Long?, val keyLength: Long? = null, val valueLength: Long? = null, + val contextLength: Long? = null, ) /** * Reads the metadata block at the front of a `.gguf` file — the shape values the KV-cache estimate - * needs. Never reads the weights, and fails closed to null: an unreadable header must mean "no - * estimate", never a wrong one. Parses the same metadata block as [GgufModelInspector], which - * answers a different question — chat model or embedding model. + * needs, plus the architecture [GgufModelInspector] classifies. Never reads the weights, and fails + * closed to null: an unreadable header must mean "no estimate", never a wrong one. The one parser + * for this block, so a model load walks the front of the file once. */ internal object GgufHeaderReader { @@ -203,12 +206,12 @@ internal object GgufHeaderReader { return GgufHeader( architecture = architecture, blockCount = shape?.blockCount, - contextLength = shape?.contextLength, embeddingLength = shape?.embeddingLength, headCount = shape?.headCount, headCountKv = shape?.headCountKv, keyLength = shape?.keyLength, valueLength = shape?.valueLength, + contextLength = shape?.contextLength, ) } diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt index 0e830a73..405ba87e 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt @@ -6,38 +6,22 @@ import java.io.File import java.io.FileInputStream /** - * Minimal GGUF header reader, just enough to tell whether a `.gguf` file is a chat/generation - * model or an embedding (encoder-only) model. + * Tells whether a `.gguf` file is a chat/generation model or an embedding (encoder-only) model, + * from the architecture [GgufHeaderReader] parsed out of its metadata block. * * WHY: the native chat path runs a causal `llama_decode`. Handed an encoder-only model (BERT * family, e.g. all-MiniLM), llama.cpp hits a `GGML_ASSERT` and calls `abort()` — a SIGABRT that * no Kotlin `try/catch` can intercept, taking the whole IDE process down. We classify the file * up front so the backend can refuse chat gracefully instead of crashing. See ADFA-4388. * - * This reads only the GGUF metadata header (`general.architecture` is almost always the first - * key), skipping over values without loading the model, so it's cheap. It deliberately - * **fails open**: any parse error or missing architecture is reported as [ModelKind.UNKNOWN] and - * treated as chat-capable, so a genuine chat model is never wrongly blocked by a header quirk. + * It deliberately **fails open**: an unreadable header or a missing architecture is reported as + * [ModelKind.UNKNOWN] and treated as chat-capable, so a genuine chat model is never wrongly + * blocked by a header quirk. */ object GgufModelInspector { private const val GGUF_MAGIC = GgufFormat.MAGIC_LE_INT - // GGUF metadata value types. - private const val T_UINT8 = 0 - private const val T_INT8 = 1 - private const val T_UINT16 = 2 - private const val T_INT16 = 3 - private const val T_UINT32 = 4 - private const val T_INT32 = 5 - private const val T_FLOAT32 = 6 - private const val T_BOOL = 7 - private const val T_STRING = 8 - private const val T_ARRAY = 9 - private const val T_UINT64 = 10 - private const val T_INT64 = 11 - private const val T_FLOAT64 = 12 - /** * Architectures that are encoder-only embedding models and cannot do causal generation. * The `contains("bert")` catch below covers the whole BERT family (bert, nomic-bert, @@ -62,105 +46,22 @@ object GgufModelInspector { false } - /** Reads [modelPath]'s GGUF header and classifies it. Never throws. */ - fun classify(modelPath: String): Result { - val arch = try { - readArchitecture(File(modelPath)) - } catch (_: Exception) { - null - } ?: return Result(ModelKind.UNKNOWN, null) - + /** + * Classifies the header [GgufHeaderReader] read, so a caller that also needs the rest of it — + * the context sizing does — pays for one metadata parse rather than two. Never throws. + * + * @param header the model's metadata, or null when it could not be read + */ + fun classify(header: GgufHeader?): Result { + val arch = header?.architecture ?: return Result(ModelKind.UNKNOWN, null) val a = arch.lowercase() val isEmbedding = a.contains("bert") || a in EMBEDDING_ARCHS return Result(if (isEmbedding) ModelKind.EMBEDDING else ModelKind.CHAT, arch) } - private fun readArchitecture(file: File): String? { - DataInputStream(BufferedInputStream(FileInputStream(file), 1 shl 16)).use { input -> - val magic = readU32(input) - if (magic != GGUF_MAGIC) return null - - val version = readU32(input) - // v1 used 32-bit counts/lengths; v2+ use 64-bit. - val wide = version >= 2 - - // tensor_count, then metadata_kv_count. - readCount(input, wide) - val kvCount = readCount(input, wide) - - for (i in 0 until kvCount) { - val key = readString(input, wide) - val valueType = readU32(input) - if (key == "general.architecture" && valueType == T_STRING) { - return readRawString(input, wide) - } - skipValue(input, valueType, wide) - } - } - return null - } - - private fun skipValue(input: DataInputStream, type: Int, wide: Boolean) { - when (type) { - T_UINT8, T_INT8, T_BOOL -> skipFully(input, 1) - T_UINT16, T_INT16 -> skipFully(input, 2) - T_UINT32, T_INT32, T_FLOAT32 -> skipFully(input, 4) - T_UINT64, T_INT64, T_FLOAT64 -> skipFully(input, 8) - T_STRING -> skipFully(input, readCount(input, wide)) - T_ARRAY -> { - val elemType = readU32(input) - val n = readCount(input, wide) - // GGUF arrays are never nested, so elements are scalars or strings. - repeat(n.toInt().coerceAtLeast(0)) { skipValue(input, elemType, wide) } - } - else -> throw IllegalStateException("Unknown GGUF value type: $type") - } - } - - // --- little-endian primitives --- - private fun readU32(input: DataInputStream): Int { val b0 = input.read(); val b1 = input.read(); val b2 = input.read(); val b3 = input.read() if (b3 < 0) throw java.io.EOFException() return (b0 and 0xFF) or ((b1 and 0xFF) shl 8) or ((b2 and 0xFF) shl 16) or ((b3 and 0xFF) shl 24) } - - private fun readU64(input: DataInputStream): Long { - var v = 0L - for (i in 0 until 8) { - val b = input.read() - if (b < 0) throw java.io.EOFException() - v = v or ((b.toLong() and 0xFF) shl (8 * i)) - } - return v - } - - /** A length/count field: 64-bit on GGUF v2+, 32-bit on v1. */ - private fun readCount(input: DataInputStream, wide: Boolean): Long = - if (wide) readU64(input) else readU32(input).toLong() and 0xFFFFFFFFL - - private fun readString(input: DataInputStream, wide: Boolean): String = readRawString(input, wide) - - private fun readRawString(input: DataInputStream, wide: Boolean): String { - val len = readCount(input, wide) - // Keys/arch strings are tiny; guard against a corrupt huge length. - if (len < 0 || len > 1 shl 20) throw IllegalStateException("Unreasonable GGUF string length: $len") - val bytes = ByteArray(len.toInt()) - input.readFully(bytes) - return String(bytes, Charsets.UTF_8) - } - - private fun skipFully(input: DataInputStream, n: Long) { - var remaining = n - while (remaining > 0) { - val skipped = input.skip(remaining) - if (skipped > 0) { - remaining -= skipped - } else { - // skip() can return 0 near buffer boundaries; fall back to a read. - if (input.read() < 0) throw java.io.EOFException() - remaining -= 1 - } - } - } } diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt index 6ba3bd1d..b87704d1 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolver.kt @@ -1,7 +1,5 @@ package com.itsaky.androidide.plugins.aiagentlocal.model -import java.io.InputStream - /** * The context size one model load should get, and the header it was decided from. * @@ -18,32 +16,29 @@ internal data class ModelContextSize( } /** - * Decides how large a context a given model gets on this device: reads the model's GGUF header and - * hands it to [ContextSizePolicy]. Owning both steps lets the load path and the pre-load memory - * warning derive their numbers the same way, and stays Android-free to test. See ADFA-5187. + * Decides how large a context a given model gets on this device, from the header someone else + * already read. Pure, so the load path can take its free-RAM reading after an unload and still + * price the same header the embedding-model guard used. See ADFA-5187. */ internal object ModelContextResolver { /** - * Fails open by construction, with no error path of its own: [GgufHeaderReader.read] turns - * anything thrown while opening or parsing into a null header, and [ContextSizePolicy.choose] - * answers its default for one. Blocking — the header sits at the front of the model file. + * Fails open by construction, with no error path of its own: a null header is what + * [GgufHeaderReader.read] returns for anything it could not open or parse, and + * [ContextSizePolicy.choose] answers its default for one. * + * @param header the model's parsed metadata, or null when it could not be read * @param availableBytes free RAM in bytes, or null when it could not be read * @param modelSizeBytes the model file's size in bytes, or null when it could not be read; the * weights are charged against free RAM before the KV cache gets a budget - * @param openStream opens the model file, or returns null when there is nothing to open * @return the context to load with, and the header behind it */ fun resolve( + header: GgufHeader?, availableBytes: Long?, modelSizeBytes: Long?, - openStream: () -> InputStream?, - ): ModelContextSize { - val header = GgufHeaderReader.read(openStream) - return ModelContextSize( - contextTokens = ContextSizePolicy.choose(header, availableBytes, modelSizeBytes), - header = header, - ) - } + ): ModelContextSize = ModelContextSize( + contextTokens = ContextSizePolicy.choose(header, availableBytes, modelSizeBytes), + header = header, + ) } diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt index 36b8cebe..c91ed04d 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/settings/LocalLlmSettingsViewModel.kt @@ -280,8 +280,6 @@ class LocalLlmSettingsViewModel( context: Context ): Boolean { val modelName = fileInfo.displayName - // Never cached: the user may have just closed apps to make room. - val availableBytes = deviceMemory.availableBytes() // The floor is the least the load can use, so also the least this model can cost. val header = GgufHeaderReader.read { modelFiles.openStream(context, uriString) } val estimate = ModelMemoryEstimator.estimate( @@ -289,6 +287,9 @@ class LocalLlmSettingsViewModel( header = header, contextTokens = ContextSizePolicy.DEFAULT_CONTEXT_TOKENS, ) + // Read last and never cached: the header parse above is blocking I/O over the model file, + // and the user may have just closed apps to make room. + val availableBytes = deviceMemory.availableBytes() return when (val verdict = ModelMemoryGate.evaluate(estimate, availableBytes)) { ModelMemoryGate.Verdict.Safe -> true diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt index 784d0304..4616357a 100644 --- a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicyTest.kt @@ -149,6 +149,33 @@ class ContextSizePolicyTest { assertEquals(DEFAULT_CONTEXT_TOKENS, result) } + @Test + fun givenAModelLargerThanFreeRam_whenChoosing_thenHoldsTheFloorRatherThanWrapping() { + // Unclamped, both subtractions underflow here and the wrapped budget picks the ceiling. + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), 0L, Long.MAX_VALUE)) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), 1L, Long.MAX_VALUE)) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), ramAffording(100_000L), Long.MAX_VALUE)) + } + + @Test + fun givenNegativeFreeMemory_whenChoosing_thenFallsBackToDefault() { + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), -1L)) + assertEquals(DEFAULT_CONTEXT_TOKENS, choose(header(), Long.MIN_VALUE)) + } + + @Test + fun givenGrowingModelSizes_whenChoosing_thenTheContextNeverGrows() { + // Monotonicity is what a bounds-only assertion misses: a wrap reads as more RAM, not less. + val availableBytes = ramAffording(50_000L, weightBytes = 0L) + val sizes = listOf(1L, 1L shl 20, 1L shl 30, 4L shl 30, Long.MAX_VALUE / 2, Long.MAX_VALUE) + var previous = MAX_CONTEXT_TOKENS + for (size in sizes) { + val result = choose(header(), availableBytes, size) + assertTrue("size=$size gave $result, up from $previous", result <= previous) + previous = result + } + } + @Test fun givenTwoModelSizesAndTheSameFreeRam_whenChoosing_thenTheLargerModelGetsLessContext() { val availableBytes = ramAffording(12_000L, weightBytes = 0L) @@ -160,7 +187,8 @@ class ContextSizePolicyTest { @Test fun givenAnyInputs_whenChoosing_thenResultStaysWithinTheDeclaredBounds() { val contexts = listOf(null, -1L, 0L, 512L, 4096L, 8192L, 32768L, Long.MAX_VALUE) - val memories = listOf(null, 0L, 1L, ModelMemory.RUN_BUFFER_BYTES, ramAffording(50_000L), Long.MAX_VALUE) + val memories = + listOf(null, Long.MIN_VALUE, -1L, 0L, 1L, ModelMemory.RUN_BUFFER_BYTES, ramAffording(50_000L), Long.MAX_VALUE) val sizes = listOf(null, -1L, 0L, 1L, modelSize, Long.MAX_VALUE) for (context in contexts) { for (memory in memories) { diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt index 9f122190..b1ae2fd1 100644 --- a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelContextResolverTest.kt @@ -8,8 +8,9 @@ import org.junit.Assert.assertNull import org.junit.Test /** - * Pins the fail-open contract: no way of failing to read a header may propagate out of [resolve], - * because the caller is a model load that should proceed at the default context instead of aborting. + * Pins the fail-open contract of the read-then-resolve pair the load path runs: no way of failing + * to read a header may propagate out of it, because the caller is a model load that should proceed + * at the default context instead of aborting. */ class ModelContextResolverTest { @@ -47,23 +48,31 @@ class ModelContextResolverTest { @Test fun givenUnknownFreeMemory_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(null, MODEL_SIZE) { - "not a model file".byteInputStream() - } + val resolved = ModelContextResolver.resolve(header(), null, MODEL_SIZE) assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) } @Test fun givenUnknownModelSize_whenResolving_thenReturnsTheDefaultContext() { - val resolved = ModelContextResolver.resolve(Long.MAX_VALUE, null) { - "not a model file".byteInputStream() - } + val resolved = ModelContextResolver.resolve(header(), Long.MAX_VALUE, null) assertEquals(DEFAULT_CONTEXT_TOKENS, resolved.contextTokens) } - /** [ModelContextResolver.resolve] with room to spare, so only the header decides the answer. */ + /** Reads then resolves the way the load path does, with room to spare so only the header decides. */ private fun resolve(openStream: () -> InputStream?) = - ModelContextResolver.resolve(Long.MAX_VALUE, MODEL_SIZE, openStream) + ModelContextResolver.resolve(GgufHeaderReader.read(openStream), Long.MAX_VALUE, MODEL_SIZE) + + /** A header that would earn more than the floor, so a null one is what the assertions catch. */ + private fun header() = GgufHeader( + architecture = "llama", + blockCount = 24L, + embeddingLength = 1024L, + headCount = 16L, + headCountKv = 8L, + keyLength = 64L, + valueLength = 64L, + contextLength = 32768L, + ) /** Opens fine and then fails, which is the case a null-check on the opener would not cover. */ private class ThrowingStream : InputStream() { From 4e3cd86434f17306ade0f05250237e6c5006be75 Mon Sep 17 00:00:00 2001 From: John Trujillo Date: Fri, 28 Aug 2026 08:32:45 -0500 Subject: [PATCH 4/4] fix(ai-agent-local): keep the embedding guard closed and free a partial load Rescan for the architecture alone when the strict parse gives up, so an entry it rejects can no longer make an embedding model read as chat-capable. Free the context, batch, sampler and model when load() fails partway; they had no owner, so each retry leaked another. Reconcile the mmap comments with charging weights. --- ai-agent-local/libs/v8/llama-v8-release.aar | Bin 2088252 -> 2088453 bytes .../java/android/llama/cpp/LLamaAndroid.kt | 32 +++-- .../aiagentlocal/backend/LocalLlmBackend.kt | 10 +- .../aiagentlocal/model/ContextSizePolicy.kt | 8 +- .../aiagentlocal/model/GgufHeaderReader.kt | 43 ++++++- .../aiagentlocal/model/GgufModelInspector.kt | 19 ++- .../model/ModelLoadDiagnostics.kt | 6 +- .../model/ModelMemoryEstimator.kt | 5 +- .../model/GgufModelInspectorTest.kt | 113 ++++++++++++++++++ 9 files changed, 214 insertions(+), 22 deletions(-) create mode 100644 ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspectorTest.kt diff --git a/ai-agent-local/libs/v8/llama-v8-release.aar b/ai-agent-local/libs/v8/llama-v8-release.aar index eb7164be62bdb07e752f62b0a2747ebbc4a5a510..9a4088a28c5aa9c335b1c83f322e9faa6ccc9ce2 100644 GIT binary patch delta 31060 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

K)cK>A|*c+wlk}kx0-i=d?Sf% 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

=B2>&29AnD_7_uNUp zk|igV5?1%3*5fE-?B)KDkL^usYjg_Sujr)vc(;GO0}spFQ+_s_*YCDY2=H__tUm2E0g} z78nIf7y_3lS>rDWAB1>mh_E;WC5hiuQ(z3tn*FRqU^K1-rjHsm)QB#eK!fHDD7kz6 zFVxU_6fx)Tfra-D>n$Qre351lNw8GPzIPl|_l62bnrl5-wq%z95-NE z2^Og^F*!uE%w?mO1-?vy!@wQyA`%sBzx2?hPM!gWV7(31NqfR;|E>rU_EVc}HI*zt?V1q%F(Gc}-@9Ff*(QhSZLR_$>CN6DlzXtBP$E|%=&H^l* zB%a6HqJc{qV1|l5T9SHT@uFzVKSbiEw(jqDsONvdlBShkRFn~+Aa8emFzZfI=9qLC z=hW&bLv0a+&DdAS3BCZWb;lN}im}RIx_9uTKC4<|L?|nbCM8WCV0!E#EoT=WQepPr zHu$V`L?OK4g;S~`oz_cy$?+88A)%*6;h!yw?)$7-WiMm5u3ZJ_6Yh-{B-n%I$jX94&wEv$OE*f>r z^hfQ8?S=b=q`8~!1NIEk%`rizh%xIxHtajwrI2JrLL&VR5Z>zDC+k_8I5^HVtnzvJ ziw7Y?Cb5hhzDb&f6$vdXM6A!N(+P>rFsA~Y&kBAi?0RMnx6@vh$DM$>wOGLDoq_Y2@B`QjbYL;u$Irx&%{9z`Ti?YzW_iA>8&) zJPsgnUZIZFf#Z~hOUCW6M00kjP0sx@Mi^Elqb(I5-Qmg9nZ01S2Lf7NVmQWe#~<{r zLo07WQ~En5@3yR7|Nf3G3fF3!K&vch%zEGLS?4bgT^ENNK=&mK@ut2gn|3;8{1g!= z?Ad!beE&CSnVWtR-W*?%_jze(+ghOFw!7 zA^(YU! zE%Diw1AIG^D$1g=wFFK{kit<=dF;gd;90K__P1JNuBx$?tb1n#)|sy<$FutK5@I6L zKeOd(e`grZ)1B}VO)lxEH}UG;o+CCfRkXRLUl6?Mx)Z$7yYol=*VlN%Rb*^g;9G+G zFx6FaKgvuFXAui`(p z?0GC+T#Me1eT74p^=pc*9k4#lwDFd7tAD*@kV~%Y@piL#>C?`+W63m5z?m?$1fJz3B$QshU3BC2f@!vBCg)SR( z0>EfkElkwv{!sk@N|&8=k5GjdcvtfqsU;&}<0v56Ob;RQIpd!f1TsEvzSNQg1<|BO zRRve6w?v4C?#@5zg=YH0QnPC?$NtHWfTifYvO4%4^LbZQd_S@UR0g^X8!BW-5K|!f z%~)iSREOn1a^aUA-BqS4Yq~ku&pQYK8bC(FgHx%+xJ!tp{M;tBvQyn!VB&~3#UV1d zk6mSdNW=M{0Ccj!Efnmt@oiHor_oRGHwW8`g^5A}!e4eF0Xy*jj-1Q2mY)dcH5ZVCCYNm2nX2}CoNn*0Rkj!H* z1QbkOO?LWDN*x1I#JSa-vPLa%(Ft>?3MobeN$wy&uyG5${~3l1T@j=LrD8cYOB@ z#Y0V#N!XWz5y6VV6zooR#glgsI`lN2Fz@M!vf3(hD*gKca`$$_5BoRu+z~y69@+@{ ztoTB0we8qZ()v(zRL0i-DmZ+%x&{NeYkg_tcUpx?P0#AkH3~&w9yo;e|mBxJ}%kKe7|H3rAC1- ziecSoH29yU6y#O8{#(D?#mgA~p1^F$fqmxUeI}?Yl9)f)baScL%*vrZ_>0V?ZOS48 zys^Zwx{zcH2>)oV4Lh6RQtGQF7bdF^e{BGf#fJa5_T2*66^haE`4I8UdAX`(^2xB9M z4KVY$Dkc~Ti^pGznl9;~QhpKV;Y6Bwm!CXI<5ei;{PYz*szMPLIdY94Wu3(Y<%C6O zldM)n0O#{8^){gEYJCSL7h;bMC#vf9tKZ#&4EGCy`w{VlRBQt`w=&H{l}&a-S&YTi z7%+^OCo!whh|W+d$_a_Eu}_p~UdMz&GoOa2&5wq3I#07uJ!@;L$DgkiBnuRfWmS>Y zDx!X)fbP=$)tj2o=k&gXqZ94=J?Wk#fpKi*sI(=1$EolF=~EBbHj|0!hbq+DwiK}5 z*uG5AWR>i&CdtW;{ULBt{$%)aMU{Xo8^+po;!Bwh_?bZ4$?GH)WTMEXgfs)In9WAU zjht|6ED5W&8FYcyWY;W1F(5C7_e-K`zqmJ>@9I_wuGD3l>1D#Q7y`3&I)jkGAg=L4 zC{0_uX4gUX^MM4&AV0BuDkYHldy!^Rc)u*#8E~8N?+QnW=yKUE#`j|Kac^jDUR4l! z-RjYoSwi54?XjZt<9nxyC;G-RPShOF)EUjl>PCaJ=zsd2M8AW}V*T!(qH1njzWiV> zm?VDiPVeV1TQC>1YAy=}N3$TDZT*DSih9$IbJE9HiRX(0ez!hC6sf7>&|`Urhe_@P z_E)R5qt;~J?V^8~T|IfOORhF9_x(D8mUf5?$^X*^>%!6bv|1cvgZ3X;LI*o~k!rTb zRHEsNDR1Z8`ZnN!G*N=MT&6(u_iMqJS=tys=?3#M%<}veu(@Dap7K2 z42F}h9N7+LKz8e{=1=nOGF$2A1hpgA=h4khMxOzP4}7f<`FXe}m&aaGWo)X$peWz#_G@+Hk>K3yKVC4#-k8e>h1ZnauEECI^eg&9v)A1$%$fQ^c! zdnpfTYv>P#Pd(-})JMv-*SV&lE!i%F5i04*&!+z-fs>+vk8LL9r{Zu8*{r7h^GSkA zR?jq3s}z|9mj@lxn@6+r>Jc~_xy~CRMdks^rKFYMt_&0(DPjd1TWpTIx3CD)xE;Mq z%z}{!`KbwE%F*9HuhTy$&gEE9SnbwqpVZ+6`{rY|vH#xXVf4=`kYI|TM8{mjK6vhf zT2VN+0ZDN5C(W?_rgxMipLlSGS&MWoTh#D^O-$6>oK~eta(wJ{;iNGkeim6AF92d`jwhF%HS~49$nj{JqiE&X-;Hc&RU9_ zuG}@=%Mw5pRKbO_rAw@pUl<^5H#^7X-o)Prc>A$MPNWhBuj;1mg(+i%;~jKHvW?@~ z|58R$C(+|OPlXwA+ZZ@#$6^1P_)Q`X75tOk-D**6F!h8k_yRuN8^!JyBMpX0vKhn4 zF>%4sM3h2{-oVJ17~9Ti6hrPcTVOwLdd>Eksd=)O&W1C6@*d+6qtj7ibSf406rZ^% zFn*GxpE_P6eV#|%#|8CfK_)~bMpqr5tjKC7fU*2?N^1Xyn1Ym;#_tbJSKTNKN`Mp< z*W`xYiH3Q2>O_i9U7ers?H{5ia>BosyJrTj7YE+W9R^ueJmhuWHrYg_d?el6xV?3o ztg$FdNRRwB(Ri=4{l|fz&!Deq&&J5{fQm!G;MSW!pA0H03Mwi^I&;rvN@$Gy*vq;X zBeM(3HFkODV%Ch;liu#O6=5uvejIxIANEq4(ZLZd`-eqfBf0wHbef(6g2PLkk=HFZ zSg%vDa06n&~>R7#GN#o{(R-)7&B9hKct1ArO;-0)_cQ%>F zW@uLB7*-|7-(``u_Lt~ADbG(xffyPId+?r(Mh^61EOjU4ws0~2wlqei!I?Nr^@$zk_X&n#@8(I@cj_*fkwgefY-EQIuT_w z+UqI^1&6$w-o=F_=^~9)%z(KF@-p@mh@p6{c{UrXg`l z$k@Goyeu**Q^VDK< z#6+4F>NK^@Qap1q12aQ+&7MhC>21vU70M2z{5+_)lV!we)L&X5ma>D@;?S~t!7XhG)JD4YnG;$szYonwHMd6+GGFJ zz&UsJUpxc6m{_dSsi!PqWFT0L#k;(B6-VVAmr4iT?T>P8_Gdf7h^U9vW zzEGTUWvW;v&NOW)N%tQ|DI{;wY0$xEoGSi|K)}DZ3~N1e2Z%m`;H%tKVG`O8+%XCB z^mXo2R$yt54iUr5AN_-^K3>%M8!}`d_&2x%`n_tKhJs`oWj>A8HQ)`r`O2jN)kcVG zdfm%!-XWA3^4_i8S!dv>p2ndZc^rp->iK?DZozd%YsY|6$lNz49Al(-g8o?ZfleHu zNfPsgjkxIL1fEOsdr$e(j^RJ|?jhqWn-L}U^V8IriCiRSQTd14%WI?Sp=u`@!S1~7oNVenNhPJN&C#axT5ev-ovHMqCs6Dd98hy9=kM9_GrkWpDsJfW)t8$#+;EiN zueBxc+f9AGI(u5233Ik);c(JeD>DuU@-U%U&fgyhgq)zPQVR-H)+gZE$meQczqJsR z60BFq0OGHbKM@)m%D?=U4}y4Nhdp_zY!##$kSoHM93ssRLD;$G8!IGNJejGp1R^nY zWNi>t_!*R>Fc)CFGw}-gLHbiB{+2}+>{R;fhC-Bs_aDPKER=y)wpsP4MkV}WXRzyA z%o5;qJk<4`0QqM-2O*`?vUnjL|KEm+!;i9LS781>WZ|_a#>h^MmPCH~+osSV@rcug zviiqzZ^JcFPfFKFs>fkDf<|~O&@LT>x!n4aG!#mXjPuyPsxOYBpJ#N9G@Ee3&z(3) z*pX0yv1zv-nrq3_-8ge30!11Mz;%f^Bsk( z4&VTzi1b)Eirr{t#s0!G#0$x(+`nYMv(QwtQ7baUSic3P{<5V_GPjXgUf;_}GF0|o z_&=@B`ebhGnD%|+xz0;)oI0N^b3~Rj9+J(j*M2hG^@01Jcz{HJ#IR-s84ao;?_rrx z+z@S4lJ-1ww*gqYg@nsX|FSE|BE@cN2yhaKTcDmO$P&~Pz>Ib>pX2FvCZfYZolzUj zoA~C;c}W0Vt(1#F#t_R(;CD7&_cxu4N?D9RZz?b3my2Kwr>)<0Y{qT13QRqdNjK6z z(eRkBXg7BDL9RJtz1)?IH{*#%vIzx&ba@zaGoQfx#QeLQ{*LefnQq6$4l1_B10*VA zLW2vY=n)skKibUZTzyt92@i8L@oo2a$vcW>Q``F7K@nH%*MSuy35L>93mkOVyxH3P zPO@1FK7H-^nLT{g7ou>D2#f)-yQL8sIx3JJCM0=jBooEt)c5FlvZtZE;8kG!M0>0d zIMVHuHc65tFx@Ii>2F*UWGUzBKp3Q4%^AiLhYhREZG46PVghuZx{-6^f+N8*mO~8; zq>pirJDY_3nJ<4U|A?q3t%MJ)hZkvy1~;8Rf0YGFPNxvKo${%sLE1;5NqfW3CAR5G zLae+ym*6u$;qryHpk&ahN|hn?rLMr)6+pvmT^K2(i|R>$9ZgIUbEQZP7-z?NPwa2r zEV)N2){)=AijG~c7IMOzf@ELH?cWQB%KcBIknIVWwt69D-XAE2lijcqGC%Jhh_47; zXR--GHu{NatdGte(#TPBRjJc@<`Ndx1^vh?NMZW^S_-posGLWr=KWRO%znqZL#=BE zd6bckVs%taDqC;m_Fq^SK=tPf78kY`7AwyEO&BB87xT8GH2vM{^m!f>YgTv+a*X?H zJ_{oT2|fk~VFfRAU!rI~pmVw1jl^$2magPtAnSLC`zib)?=H`t`B$S6)>DCzJo%lZ zlKJ(;L(slc_I(Mzn>N`XOEC+}O(esds;imG@(#Wf8R>+(WWVz-z)?sAOhad`pL3S3 z$UUrD2<1P5#eOzCLUYW|pj4#)V5&qSA?*lrXI5Cg`;YSZH;aE1rB;43&vE84c{wA> zbJgqwcrC>9a>qlyMESq;kq7qpC$*}lm4c$<8_=lJF`;P|i#42IB`v?DZd^%?>jle= zqy8M}X@GEfIRDcW0wCP6VVRRJN^Ub)KBz(ZY7tD}HB+YrI+A!n55Q++qIA6OJCzsH zI|z_CVKQfJO=6rpV!Us#b$NrDA&w7H2)tAKn`6~+^r6?~ig{xmjymd;-D8eWorPk9 zD7;o~N3Vl*)uCsSSlCIih4>a$cOJm~EfomBroGy(lPS>22W~m^4)9m*SiH7;Lk%sk zB9(+%x$?`hAPtxwF(%pmGz5X{xK`WBZg8hi7Yh*PN!{Yr|4VrvF7+*T72=?vt1;rS z+MgH7Yh(|PW)ELyS&szv8h^yvThjE${6L@sz=S9kXgI8*#aaZyn-=P_kfS@~+dvx4 zmegJu(+OC_01+{aTh^*C3zqfb=R`A$ou-f?voeO23G&tY@OF$i4uXR5g746=CPlrN zXexnf$~xUgnVldF2);|Tu_YM}#UH6*2$?oJ-UtMHpFkw8um`f(1>Hm&N5rBIBeH%_ z>VfMEHb|$F^ydtOV$g>MS>x|79Qx>$!T}#9tCQ+|AY;zqMTJY-XSJna0y@whBOuBn17foj?79 zzxbT!QxErOePJ+mxu=WQwMVG@U&4F1v5C!iWtZ@HSs?$VIO)zjW^NsiDdi-b<%YxJRMuxAgw`k3{Q(uHI_LL7l5AQ#yxn z--&1bkZ`95xe^q#qJtT07W$`!)j8V0@&#5nzoydgf~ORF zH#cpX9fmHYO+iSX2huMtWTo$UbS3*Q*_&+=K>N-Q(~N7W(FJsBbIQc2lcEs%nZ)-P zsS}%%4(OchgGMmG>$7(Bp0t3XGgv38Bh22yjL3JP>3gSgEyGNp93#E)aSG)L68kZAl5VJ~R%0co5r?5_g6G zMN9YQjUV$tsO^ylQ=j~Q27jO*-nPTtsobF+!t+}Bd=Ccsp$3MbW+Y^$L}1^o9;*(&pYjq4C{`+U`>P!WlN#TJEwacg%BY)0LuS-RH z`w_@kmjmnHmrv8D4(PMt_-KF=KPx36Hm)>#=R(WMapLUmoXBKhe@A(T#=2+~Q?ZIn zT=X9^(%oUT>LpXpl19DXv5dyc>3xaW8!%l8gJTIo_xVGvthhf;uX;iav#IvQOVr=g zTvLs88=)uh1v7@s%_%-`kCilNs>DWdr9TDOyQf?gfYS>yv0blH>jJ>?`U-nPuVPmZ z44=~ulZ0)mz*5yVTfzJ^YVf{mBAALW*Q*AvRwb+rYb3W&!YreoUdE&o#2U^}=14DU z^_*TnJkW78`8La7!I;7N2WXD%eOO5bzc2xD6NU39jjQwdAxQhoL}AlUms(amyF+@A zbj+z7Edt}T>~>+5jKUaA+9d)Gi9u$8vbqt;DBKTEE38~)0LR)Hd{un=y&DyC z!SlD-s^q4LlRRIp)0?!GEp)FTwH)5g51EVKH2Ynz|;#W ziLaas;$k&>Y-!#WD8GCG2gE7DJ4_Kf$0$MvOrEW768pAig>Bp6y3 z`=i1$!tom2Aao=o+%~Dq4=VtRu?8f$kjp)By+b|`=VO;N$LlCm; z4Pi7|^>MMWLNN#D^)B`|oWDPgLe zR({S~!r?mg;}XPM!Y3GD``uS`jow{)EHCv&q`_PIpsV_>H0JntTvDG?uT|0dYf3=~ zMQ?9?;|j1~(J*0A!|6vNe1|w&U_I~%cvShpoqs@1o^je{kFAcWdS+~ZVyMH1&GVs+ z>xqftxZytLi0G#$jASWO(h#v-qseO$U5n74!+++cI3iC#FXB>JS#K{r0QOfiVJ|5l z5*ztl5H6!8&>i-oCABKe*gR!{VS z{=CgTEjzd2i+Jqy7R6>`RqaUM0eU#Hbu< zvaZ;!q3ct%p283Eu8d~;)&uxW6yqZ4~)jT`J1{}B2ZLJ?v0&H z+!I_9y)0ell^{hui#BA`+EZIi6}>DIihpxbAH#=?!Atq84~KC92*GAMpTK^7>0 zQ4XKz7#l|CXUmlHY^Lp3s+(N^%Xk>uDWzwE!Mo`?$4HJgMWrjGGTMoJXL39j+@X`g zkL?^&`~w&Mlq$-Lcj1B9s%hJH$83=9R)^klb;mBQc$H{u%q}Z2=ZsLCyN^uGpK>+2 zAnN=kWIU)~or(;?h;G>zZq{)Njs=+7A{YM1C?X++S4t9hBH1{i>+Rc((m^fzNTY5d zf7YGz!rRq_n0SrUXhN-8{w;p>~$+EFm zexj{uohL%mOq4I3^))}R&FxaNyYfX+NeN7O==NlLw4lK_Q*}-aWZj&|2s2_G!Nhe% z*%#uRK8|}IGQ<)sP5*7gy`~4xzHISO{o9P`m!N(|8dj@xOSF&fS?dF#+jsgKcE9gTHlyH7QHuF%IUh^?BhcbNIj zsioCq;DFovC}{RPrhg%}QDU;amye(@)t_9_(@e2lsSar;p^z#uXF1=lvmS<@WsrPS z*}w%lw+_JR{fU*#ssT#8oEjCk_(Ym|d0f(`{lE98%qtzJ7m6c1i>zyGY{M)*12@lK ze`(o=2+U%jGQw8H}k{=!zh6LpgH6}FV`t_2xvo6ue9P* zamThCEfdDb75jfMXCxhDgW2jBPhJdUOp*jI#5A#{ezlXjY>J_*Et9h%`UCnnUwxRN ztUSa4gWIu_5kOi+G;27NH^t2~DsgKct?MEY*kOy0v}KfuVxKchm{HO`ZpjG{$0}7$ zUIhwX4uywuSezP!_US2j}P> z7IMg26}h{%302MkL-kLml9=~46Ddup``CPY@cJ+2O`t}um+@j*d2$B?S!bB17UNm{ zL%(0HjqrzC3w0z`ls@wnioQ1Ou$H3(8Ja4Zu1NgmPZR-C7w3%S6Utt}^wj-8xZRHn1lx=5*5%Z696Y@A500qrDZEE4 zIpxBlB7lzipcuQ5imKQwx%iYW9)alU53q-ddmb;OYWD+Cm*IvfXZ#Ia z`+bTW3;0t%@(}^e_!;zB5BlhEyhZoraZwA9eQLRUL~)-z13Cd8VJ{Y9*IeeIcipPQ z@8CGl`wrWJDo0xdD<1}uh2gBRieE5&?`MDRmQ?=i5Nkp110a7yivNlfgMI`12L27= z8{{{rZ_wXhzQKNj`v(6F;Tz&Nq;JUIP`;slL;HsQ4dWZ;H>_{i-*CR+e#85Q|Bc`q z;WwgYkz(QpHn{)4+c-sdl~@W4p(G`0m6#jsr6fVNgf|6jjhGIsyEKJyjhGp9FU4Su zm=_GSEG2V|SPHyl3MwUQjTk%S>w6I_eldk*omdo%qAbN@omdX^Hf3O)SRAbGzZAp` OVp=HQRpRfPlm8D2%55D0 delta 30872 zcmV(lK=i+bynnp9f3Tu2f4?iNNrrX+0GWRP01E&B0Ap-nb8}^LE^1+Nl)7_tW?#SM zn~I%^ZQEAGwrx94Y(BAV+qP{d6;*88ss5dQ&+XCg?R&fXtg+V^d+ag){LcNEYwoQm z0|pNA-xo17F(}CYv|#?(a$>4N^iuNTjEeuiGU$J{k-e$2gO%z3e@2D)KdEeOjqHs6 zH(HecMQh^d_&@Z}|6QMOR65281_HtY0RqDQ|EZUi{pU{TUysQ|9PAv8?5!N^$)xOE z)Qy}OOl*w+fD{!O2UHET@9UhqX^(v}RImXjs-Nen!xarl%72i^ktKt(iO8)~so}g# z;&v17qK|l`2&<~!f1x^s={#%=2Ovd5hd~QX*LGCVXYp}4&p}%fPr7g1`@CoG^8EXJ zp>}B)m{rA=FNYho5JVPGR>ZsXYStz)FMu*|PF3_I*b?M|(yO9lkS4d+QFclQVlHi7 z-Uoj3lD1gztLWGhhd9C9X9_jUSV<~2+@^+IOnXeGtzzxye@sk*P?%s^j)&!39hB%p zvS0ov9n-s82;Kdw(!{OSdbhCWXVcT-i4M2&@1mUv{e8ZI8H3c z3#i0209T|iMiG_?mqsGFQf0Y8;b@OM-h@H0`B77~w2PJ%aBp4^U%MnpFd~Mj-YMGX za7iyph$NE)fB6yd&jyDjfi9c~oMIA3i%`$8pp4zhxHXC+z`bnu9@M>~t?OVh&O3Gr zKZ=cVZ7*~?M@!%2VaRjpKun+YIaj;X#4AH5HH~~nkHPIg@bZg8w1b#OjSYXQNg*Tl z!0b6!2kgC8tJLan$x79<3jfa;xDgTBliPh??BpmXfBcxBf!zVTNUMLyYWb!Va4*=* zf&+CUCA1y;G$cBxq-IroUTYrWd{zimaMR$gKC3c@I*psUJE)@`G;M0 z7m9-`&VXD6z+_5Ci9}~0Q#CR2q>xHpRM-d2y1C4pC&{y?)ilG@!Z6`8wL2^MqQI?;N@DTkLrEi~*)fVQ{d3AY!QAo2w7i^XoRk+1CqcbfuBP zeZn#yC52%!zIVe{wc~F2J8CZSxFidKA-tpt<7NR+>a4 zgkZotj(IS5zV9AczOl?Vh(igdOhF~*REga&*EH7{{ahKrq=G$|grOKIXGCnV?F?oN z=4+S-o{-X4_LVD?(Kq=vC9clN3t!drnYAPa$%0Dp2CtLn%|#Roh}wrl1cEs`3kUP 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 diff --git a/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt b/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt index ecf304cf..59b537b6 100644 --- a/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt +++ b/ai-agent-local/llama-impl/src/main/java/android/llama/cpp/LLamaAndroid.kt @@ -245,6 +245,10 @@ class LLamaAndroid : ILlamaController { * process-global state so that it cannot be overwritten between being chosen and being used: * the context is created on the run loop, well after the caller picked the number. * + * A partial load frees what it allocated before rethrowing: [threadLocalState] stays `Idle`, so + * nothing else can reach those handles, and a retry would otherwise mmap another model on top + * of the leaked one for the process lifetime. + * * @param pathToModel filesystem path to the `.gguf` model * @param nCtx context size in tokens; anything non-positive means [DEFAULT_N_CTX] */ @@ -255,14 +259,26 @@ class LLamaAndroid : ILlamaController { val model = load_model(pathToModel) if (model == 0L) throw IllegalStateException("load_model() failed") - val context = new_context(model, nCtx) - if (context == 0L) throw IllegalStateException("new_context() failed") - - val batch = new_batch(2048, 0, 1) - if (batch == 0L) throw IllegalStateException("new_batch() failed") - - val sampler = new_sampler() - if (sampler == 0L) throw IllegalStateException("new_sampler() failed") + var context = 0L + var batch = 0L + var sampler = 0L + try { + context = new_context(model, nCtx) + if (context == 0L) throw IllegalStateException("new_context() failed") + + batch = new_batch(2048, 0, 1) + if (batch == 0L) throw IllegalStateException("new_batch() failed") + + sampler = new_sampler() + if (sampler == 0L) throw IllegalStateException("new_sampler() failed") + } catch (failure: Throwable) { + // Reverse of the allocation order, and the model last: it owns the rest. + if (sampler != 0L) free_sampler(sampler) + if (batch != 0L) free_batch(batch) + if (context != 0L) free_context(context) + free_model(model) + throw failure + } log.info("Loaded model {}", pathToModel) threadLocalState.set(State.Loaded(model, context, batch, sampler)) diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt index dffa7161..0e007673 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/backend/LocalLlmBackend.kt @@ -295,15 +295,19 @@ class LocalLlmBackend( // sizing after the unload: it sits at the front of a multi-GB file, and a model switch // used to walk it twice. val modelFile = File(resolvedPath).takeIf { it.isFile } + val openModel = { modelFile?.inputStream() } val (header, modelSizeBytes) = withContext(Dispatchers.IO) { - GgufHeaderReader.read { modelFile?.inputStream() } to - modelFile?.length()?.takeIf { it > 0L } + GgufHeaderReader.read(openModel) to modelFile?.length()?.takeIf { it > 0L } } // Guard the chat path against encoder-only embedding models. Running causal generation on // one aborts natively (SIGABRT) and takes the IDE down. Classify BEFORE unloading any // working chat model, so a wrong selection never tears down a good one. See ADFA-4388. - if (GgufModelInspector.classify(header).isEmbeddingOnly) { + // The overload rescans for the architecture alone, and only if the parse above gave up. + val modelKind = withContext(Dispatchers.IO) { + GgufModelInspector.classify(header, openModel) + } + if (modelKind.isEmbeddingOnly) { throw IncompatibleModelException( "The selected model is an embedding model and can't be used for chat. " + "Choose a chat model in AI Settings." diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt index b6a0d82a..165f3c52 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ContextSizePolicy.kt @@ -35,6 +35,10 @@ object ContextSizePolicy { private const val KV_BUDGET_DIVISOR = 2L /** + * The weights are charged against free RAM even though they are mmap'd: this reading is taken + * before a load that then pages them in from the same pool. So a model whose file approaches + * free RAM gets the floor — deliberate, since the alternative is sizing a cache it must fight. + * * @param header the model's GGUF metadata, or null when it could not be read * @param availableBytes free RAM right now, or null when it could not be read; a negative * reading is treated as unreadable too @@ -55,9 +59,7 @@ object ContextSizePolicy { val perToken = ModelMemoryEstimator.kvBytesPerToken(header)?.takeIf { it > 0L } ?: return DEFAULT_CONTEXT_TOKENS - // Weights first, then the compute buffers, each clamped at zero rather than left to run - // negative: an unclamped Long would underflow on an absurd size and wrap to a huge - // positive budget, turning "no RAM at all" into the ceiling instead of the floor. + // Each clamped at zero: an unclamped Long underflows on an absurd size and wraps positive. val afterWeights = (freeBytes - weightBytes).coerceAtLeast(0L) val spareBytes = (afterWeights - ModelMemory.RUN_BUFFER_BYTES).coerceAtLeast(0L) val budgetBytes = spareBytes / KV_BUDGET_DIVISOR diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt index 2860cd3e..c23e0e07 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufHeaderReader.kt @@ -40,7 +40,7 @@ data class GgufHeader( * Reads the metadata block at the front of a `.gguf` file — the shape values the KV-cache estimate * needs, plus the architecture [GgufModelInspector] classifies. Never reads the weights, and fails * closed to null: an unreadable header must mean "no estimate", never a wrong one. The one parser - * for this block, so a model load walks the front of the file once. + * for this block — a well-formed file is walked once, [readArchitecture] retries only after a null. */ internal object GgufHeaderReader { @@ -108,6 +108,23 @@ internal object GgufHeaderReader { null } + /** + * The architecture and nothing else, for the crash guard when [read] already returned null. + * Stops at the first `general.architecture` — conventionally the first entry — so nothing later + * in the block can defeat it. Blocking I/O, bounded by [MAX_METADATA_BYTES]. + * + * @param openStream opens the candidate model, or returns null when it can't be opened + * @return the declared architecture, or null if the parse never reached it + */ + fun readArchitecture(openStream: () -> InputStream?): String? = try { + openStream()?.use { stream -> + val budgeted = BudgetedInputStream(stream, MAX_METADATA_BYTES) + readArchitectureOnly(DataInputStream(BufferedInputStream(budgeted, 1 shl 16))) + } + } catch (_: Throwable) { + null + } + /** * Aborts the parse once [limit] bytes have been consumed, so no declared count can make the * read run on past the metadata. Throwing is deliberate: [read] treats it like any other parse @@ -215,6 +232,30 @@ internal object GgufHeaderReader { ) } + /** + * Deliberately laxer than [readHeader]: no entry-count ceiling, and it returns before reading + * whatever follows the architecture, so the constructs that make a full parse fail cannot make + * an embedding model look chat-capable. See ADFA-4388. + */ + private fun readArchitectureOnly(input: DataInputStream): String? { + if (readU32(input) != GGUF_MAGIC) return null + + val wide = readU32(input) >= 2 + readCount(input, wide) // tensor count, unused here + val entryCount = readCount(input, wide) + if (entryCount < 0L) return null + + var index = 0L + while (index < entryCount) { + val key = readString(input, wide) + val type = readU32(input) + if (key == KEY_ARCHITECTURE && type == T_STRING) return readString(input, wide) + skipValue(input, type, wide) + index++ + } + return null + } + /** The shape values for the architecture [key] belongs to, created on first sight. */ private fun shapeFor(shapes: HashMap, key: String, suffix: String): ArchShape = shapes.getOrPut(key.dropLast(suffix.length)) { ArchShape() } diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt index 405ba87e..bd9f75c7 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspector.kt @@ -4,6 +4,7 @@ import java.io.BufferedInputStream import java.io.DataInputStream import java.io.File import java.io.FileInputStream +import java.io.InputStream /** * Tells whether a `.gguf` file is a chat/generation model or an embedding (encoder-only) model, @@ -52,8 +53,22 @@ object GgufModelInspector { * * @param header the model's metadata, or null when it could not be read */ - fun classify(header: GgufHeader?): Result { - val arch = header?.architecture ?: return Result(ModelKind.UNKNOWN, null) + fun classify(header: GgufHeader?): Result = classifyArchitecture(header?.architecture) + + /** + * As [classify], but a header with no architecture retries via + * [GgufHeaderReader.readArchitecture]. A full parse rejects far more files than an + * architecture-only scan, and each rejection is a model this guard would wave through (ADFA-4388). + * + * @param header the model's metadata, or null when it could not be read + * @param openStream reopens the same model for the fallback scan; blocking I/O + */ + fun classify(header: GgufHeader?, openStream: () -> InputStream?): Result = + header?.architecture?.let(::classifyArchitecture) + ?: classifyArchitecture(GgufHeaderReader.readArchitecture(openStream)) + + private fun classifyArchitecture(architecture: String?): Result { + val arch = architecture ?: return Result(ModelKind.UNKNOWN, null) val a = arch.lowercase() val isEmbedding = a.contains("bert") || a in EMBEDDING_ARCHS return Result(if (isEmbedding) ModelKind.EMBEDDING else ModelKind.CHAT, arch) diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelLoadDiagnostics.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelLoadDiagnostics.kt index e1edb83e..2e0c663b 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelLoadDiagnostics.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelLoadDiagnostics.kt @@ -38,9 +38,9 @@ object ModelLoadDiagnostics { } /** - * Weights are mmap'd, so the file need not fit in free RAM — only the KV cache and compute - * buffers must be resident. The memory check therefore tests a conservative headroom, because - * overestimating it would blame a corrupt model on memory and send users chasing smaller files. + * Diagnoses a load that already failed, so it tests a conservative headroom rather than the + * file size: overestimating would blame a corrupt model on memory. [ContextSizePolicy] charges + * the mmap'd weights instead, because it sizes the cache before the load pages them in. * * @param modelPath resolved filesystem path the native loader was handed * @param availableMemoryBytes free RAM reported by the OS, or negative if unknown diff --git a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt index 97d77844..0a3d31f0 100644 --- a/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt +++ b/ai-agent-local/src/main/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/ModelMemoryEstimator.kt @@ -5,8 +5,9 @@ import com.itsaky.androidide.plugins.aiagentlocal.model.GgufHeader /** * What a model will cost in memory, split the way it behaves at runtime. * - * @property loadBytes the weights. mmap'd, so they need not *fit*: when they don't, the device - * thrashes page cache instead of failing fast, which is the "ten minutes, then an error" report. + * @property loadBytes the weights. mmap'd, so a shortfall thrashes page cache instead of failing + * fast — the "ten minutes, then an error" report. Not a reason to treat them as free: + * [ContextSizePolicy] charges them, since it sizes the cache before the load pages them in. * @property runBytes KV cache and compute buffers. Ordinary allocations, so this part must fit. * @property fromHeader true when [runBytes] came from the model's own shape values rather than the * size-based fallback; diagnostics only. diff --git a/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspectorTest.kt b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspectorTest.kt new file mode 100644 index 00000000..2b1312aa --- /dev/null +++ b/ai-agent-local/src/test/kotlin/com/itsaky/androidide/plugins/aiagentlocal/model/GgufModelInspectorTest.kt @@ -0,0 +1,113 @@ +package com.itsaky.androidide.plugins.aiagentlocal.model + +import java.io.ByteArrayOutputStream +import java.io.InputStream +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +/** + * Pins the encoder-only guard against the files a full header parse gives up on. Classifying an + * embedding model as [GgufModelInspector.ModelKind.UNKNOWN] lets it reach a causal `llama_decode`, + * which aborts the whole IDE process — the crash ADFA-4388 added the guard to prevent. + */ +class GgufModelInspectorTest { + + @Test + fun givenAWellFormedEmbeddingModel_whenClassifying_thenReportsEmbedding() { + val bytes = gguf(architectureEntry(EMBEDDING_ARCH)) + + assertEquals(EMBEDDING_ARCH, GgufHeaderReader.read { bytes.inputStream() }?.architecture) + assertEquals(GgufModelInspector.ModelKind.EMBEDDING, classify(bytes).kind) + } + + @Test + fun givenAnUnknownValueTypeAfterTheArchitecture_whenClassifying_thenStillReportsEmbedding() { + val bytes = gguf(architectureEntry(EMBEDDING_ARCH), unknownTypeEntry("quirk")) + + assertNull(GgufHeaderReader.read { bytes.inputStream() }) + assertEquals(GgufModelInspector.ModelKind.EMBEDDING, classify(bytes).kind) + } + + @Test + fun givenMoreEntriesThanTheParserAccepts_whenClassifying_thenStillReportsEmbedding() { + val bytes = gguf(architectureEntry(EMBEDDING_ARCH), declaredEntryCount = 5000L) + + assertNull(GgufHeaderReader.read { bytes.inputStream() }) + assertEquals(GgufModelInspector.ModelKind.EMBEDDING, classify(bytes).kind) + } + + @Test + fun givenAnUnparseableChatModel_whenClassifying_thenReportsChat() { + val bytes = gguf(architectureEntry("llama"), unknownTypeEntry("quirk")) + + assertEquals(GgufModelInspector.ModelKind.CHAT, classify(bytes).kind) + } + + @Test + fun givenNoArchitectureAtAll_whenClassifying_thenFailsOpenAsUnknown() { + val bytes = gguf(unknownTypeEntry("quirk")) + + assertEquals(GgufModelInspector.ModelKind.UNKNOWN, classify(bytes).kind) + } + + @Test + fun givenAnOpenerThatReturnsNoStream_whenClassifying_thenFailsOpenAsUnknown() { + val result = GgufModelInspector.classify(null) { null } + + assertEquals(GgufModelInspector.ModelKind.UNKNOWN, result.kind) + } + + /** Classifies the way the load path does: one full parse, then the architecture-only retry. */ + private fun classify(bytes: ByteArray): GgufModelInspector.Result { + val openStream: () -> InputStream? = { bytes.inputStream() } + return GgufModelInspector.classify(GgufHeaderReader.read(openStream), openStream) + } +} + +private const val EMBEDDING_ARCH = "nomic-bert" +private const val T_STRING = 8 +private const val UNKNOWN_VALUE_TYPE = 99 +private const val GGUF_VERSION = 3 + +/** + * @param entries the metadata key/value pairs, already encoded, in order + * @param declaredEntryCount the count to write into the header, defaulting to the truth; a larger + * one is how a corrupt file trips the parser's entry ceiling + */ +private fun gguf(vararg entries: ByteArray, declaredEntryCount: Long? = null): ByteArray = + ByteArrayOutputStream().apply { + write("GGUF".toByteArray(Charsets.US_ASCII)) + writeU32(GGUF_VERSION) + writeU64(0L) // tensor count + writeU64(declaredEntryCount ?: entries.size.toLong()) + entries.forEach { write(it) } + }.toByteArray() + +private fun architectureEntry(value: String): ByteArray = + ByteArrayOutputStream().apply { + writeString("general.architecture") + writeU32(T_STRING) + writeString(value) + }.toByteArray() + +/** A value type no parser can skip past, so it ends any parse that reaches it. */ +private fun unknownTypeEntry(key: String): ByteArray = + ByteArrayOutputStream().apply { + writeString(key) + writeU32(UNKNOWN_VALUE_TYPE) + }.toByteArray() + +private fun ByteArrayOutputStream.writeU32(value: Int) { + for (shift in 0 until 32 step 8) write((value ushr shift) and 0xFF) +} + +private fun ByteArrayOutputStream.writeU64(value: Long) { + for (shift in 0 until 64 step 8) write(((value ushr shift) and 0xFF).toInt()) +} + +private fun ByteArrayOutputStream.writeString(value: String) { + val bytes = value.toByteArray(Charsets.UTF_8) + writeU64(bytes.size.toLong()) + write(bytes) +}