summaryrefslogtreecommitdiff
path: root/src/stdlib/imaxabs.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-04-28 18:05:29 -0400
committerRich Felker <dalias@aerifal.cx>2012-04-28 18:05:29 -0400
commit45b38550eec7de580d790440154791c67cae8475 (patch)
tree93005ff72589f5f0ea2989eb08b383d35198b695 /src/stdlib/imaxabs.c
parenta1b442335d6382b0dc0363fdd3a5604493b6a9c7 (diff)
downloadmusl-45b38550eec7de580d790440154791c67cae8475.tar.gz
new fnmatch implementation
unlike the old one, this one's algorithm does not suffer from potential stack overflow issues or pathologically bad performance on certain patterns. instead of backtracking, it uses a matching algorithm which I have not seen before (unsure whether I invented or re-invented it) that runs in O(1) space and O(nm) time. it may be possible to improve the time to O(n), but not without significantly greater complexity.
Diffstat (limited to 'src/stdlib/imaxabs.c')
0 files changed, 0 insertions, 0 deletions
wh咋 |`81~^xMŋ>N@l($4N҃S`龭u}RۛxxIqBbz}Γk);[F(XXV΍%ᅟQݧ2'TsX'z~e2 1n6 dg8:ae<#~)}RyxtJŶ<Ν0<;ݏpg[ɼ4y5:]`J0XNIo~7(5pE7X=/Ur#OM/"2\?Eqewh:M'+tgigz1 #`YqaLn^-7:k'ͿZuBt%qgeCi5l=xM|ڨALq>&؍ Ӥ @8pz#:őY? K)vgfdg(|Ņ-.-,$_QigU@>O!*ޡPu_g@xqTg̙׳L#"s89ūdy s2RӬGGaۺbeUOi(`4F2;K3}.PL*5Ag6]nޤMT_M^Gv83I{w[,>rFkN,.t(e\V> j>u{D}"d )GUcd60G!_4Jol-B .ޥ_&[ހF ~ ]NAN-i⫿PȊt0 /7lC_ME%1Al aݭы{>Eb#mx3߭u??OsHo `.a_c\O[Cl j{́߄8B#dHB:K2mJ];23 \WdCeE꓇jD=$F|ãLQNفy&ޑX7,-(ZDf.2$HFȆ( .} bIlɥ}K<c@u#:{1A%`;;;Εw`1Zb(.rޟ;E2}5XחWvchZݏɒON1BqƑ"'2m52ha*:`: FAgXbHnmm~Pq}"*5[O/P<"SORյtq:^[6!V#8xL&6f8vؓK(Aǽ>Ӵ<7b-,y>𖳿劺%t 0b#бmO탬3Vx@|_f_V;;7774&"0͟E3^2sx]<ϻzR)V񟪅O_S.L-Mh;%¸PK`Ȳv^/V×@sFI\Q&ITa˃UČ6˥UŮ7С%PO=aݗ?D؇Pnv Q)`H"̜ t*Q e+^ - 8h5r4 5&ˊ]~ <Eֳ|:2Mh<.wBfp+Qo}#'xj<|!`LQH;b5Ӝ`LCx+L*q@3kA˥d)Yuo|6G$Yum0F*j4id;p .!|#d]Щߥb,VGL;Ɛx7sdt4ICis2ޛS[$} 'iGY(i]Oz {'϶Cfho,v) \ \~6Æ* + ܉Nc&Q,y?b4/",2_x0%ƫvBNw|s.ltCt4W W sUEPc qhobN RrDٲ1Gą7l-vqح\xdWc# "X//)&|0eI=Z.rtA8ҙdShe jDb"((Gs F|p :s \GW7~sax|Mt=dp h-W#OmQf,kA齓0$2Fdi >̗ ӹ H#e*˅J bp%Ek^;\[c4Tg0L(. )Qܽj<3Id 9;abX%PAF( sܾXŰưtׁIjGú` VpSZ#,-_uLRX x$*ofDI )d0{ )HHy`ڽS_10b=Iɲ"t1OV9i}gHyž[tqAw#x y#*&bCGdh(nuwVnLo{v<]w)*( A^n[S}o+h(N '8>a,F1gB$q8o\ѤOApԴ'J 30IH.$F|ӜM ќY>NOsS:zx&2uB$t E`FKLǤࢻ SZ,o7oq)ر$u(IfKw6S' vڙ84##:}hWf(Ty5,nXu6`wS!{8^3e?-pؓ|pΡ86}P) "2c]} J8q,\E]2r|a.Ì7Z58U^%t4 $.u<}J!_V ؎(E@;)KM!MJ)R%_e)솝Ё!zpQv3fu$wIBJVXGF(|L09^\W!:당`r 3 }|de&-l'vJQb8rg t ]iR_ v].3>]MMo WI5DcXM$C2@OI)ԍ2I' 9x(G<N QY@ҧͥcZkaD'|AĿLУfB |R N &5KkdHPs,I#EɔyL^Ec5E k.a &RnH,l"+ȊR); zD$*&Cy*,_<+!_".,p6EAogqO^Euh0[qv@a,!Š~ am \ivBCub7-)4% Q0* #,0v j%Z姴Ffe6O.KSxrɡ,c2Ԅŵ">9_QqD'0 Li,]ʯyJzjjƅ[Q.J‘"('"@E [FD5Lk6@zӤPC" w[8. Д%-),:`d_--p"tni8tߒ3S)chq, KԔR,x'7 `r 4AF~bqC1jgM(b~f sAuċ.BEff@);"y~ 8D FY܉/^~d" R->Ɩ!Ҝ7Yp7 &:VEikN0m!%(0( <dzHRnI΀3. ^F7͂,Ժc[ `/;*,GRf3Ln ao3i3(S !(/=v+J] }! Pı,g[GYj׎hܝ6>9L 0NthN8H rqHAQӲ|O*"ݩj CZ_XJb]# GF!ҷc%6"=:«#,w~aLUg #atQ3mGAK7%-O"`@ed%EŭbmfIn*+89ZNppB4fքص>?tt9 NVK,Ew;YDBFعT@V\Bp9z**I0rSuh y]($Bºjr9h5*"\!X+1"u $,#5%jՊ0 }TN FYbli=Xh[5-Oб;Bq&qGJ}> 6\x^gD_ԺElCKaH-YwiаsQ>%KeŐ4VBY*^p v(JK0O Z}:aJj:k6I \2Qj:Տ}ޤxeKH;w9/h|a&ˑ$ Y,\|(_]2@X#*%pwmL[&|աI5ׄ?dy:̨7b ˕ >001'O Eۗ)v3Ke+I "C T4谬Yb&u^S+ jy&rJ@`&l Mnӥ2,A@0ZR~ͣENr{^1'ԭ`_^a7@x='WbSƟc(a}8:)F#hoqät.Lv'k"^Q#8ˍʷpEB=FDfg p~kb#'Y6#H)y]j[ b$ TY:.\; DXhKCfaaB+2-@ꃼ gmdg"tzޣӀw]AB%698 Шdd neR2Nٴ )dIV&Ae)7m[Y[G (=n_&|Zfh4"Z׀+٘,$G^ 9ˠiڂK@zؿۙg-W5_,#ke(Vh#-e!sqyhPiqvJz,q:Fltx$dYi,\s3!2!Ej1flJ_/j %u~T$4fwOQi $!2+2d( 19^+ }2wz <- ^X1;F'd4M-[1K]2 '4^J=*MwX aN1w\e$@lCpk6"o L"/7kqLb%nJ>%h>2Btȳ%g?GyB`:hhf (tq$t\OHeXD2G*Ge ժ,?ڈ7Ь9ڐuYD(I/&#^3bMCbn}*FNAbR1OA&2ޢ@[YFN7+) r~ 7;Yˈ 0oeAIYDJC\;uoє5 Wtِe p9/ u#=KH#I7$T6xw=ga(u1TU,clEX'/ зvG{QU!b|Ms8KF͈Xzpc)B~q=䰌ȭ" ; `6iؓB Y2&*ʓ=M\t؝CYzay8nՊ.E9c~FMvXjTNO`؊qW0>ޚ¶zՌ2yllWC9_Eb F%[DzS.Y?oq|'`D O汊DI҅v,ή0xEc*$:p0(Q̣7 M'r pj ^(RՓ= bv!c0Q=En*(QA!Huˣfζvenp);̖sZ= +#쯄G=8ei_]yԱt Q5[ovڪ}<Ş(bVjAV s2x_[')_ًHmC-v ^lEsOѢ0i=G- B3yq1Ā#K@;N^{}bBXxI"VԎVAqv]37*6>~S3$Ѳ\hcc|Z+fnDqH8!Y;lѭ1FK6aeDZbu2/M|rv>YEi,[K]zEI j/|PLx=RhE.2Q&)">s20El l<'W|2YQl]O*,$XZ xg&eV׎@5Rf\`T1uc'q]36+G؊s1Mxvl"dKD dVVLT0U`cݜe0uW~J :t2_D6V +5|7 \ۅhM8ZPDzn4d7`!$ _e#cоeJsn((8NGsD Եbֹ#NּfUۑZv50Xj4"Yv 0͜Jy CfYĆSpMW vͰv{RBhn&bxaጹʧ dV4 i .MZ`wXi5䵖WuiOdMCUc0-H8%dGpQg1z@8L-B$nˢ1\[z5=$z耲Vc`]13NQ营KFd#ًްULO0@e68J#2lz94wct..2qZ#w+^:BkCYԣ?1w9[Ḏt2VK40a1!C F'㘼WTBL*Ĉ\:ثV^k!)FR`fœ.Kh1V'X1/BѝxB+DŽ2KPm K@-R~z%@k&% MHXaKP`hEyu$E̷^ 9j-n4\-QT[5jojSŒjxl굮dg0RhdUP@ udٰY}kLj&C0 i,gcJ:aym_ әgTLq_q3LjH"*e'rLgVr-cj `4ze,l*r+W(jn0q/Vb7: bw璸,G~2?"b>^BXEx{c|FbШ5KȗOB(5Xp96ix+E$6~" S ib'] -[2'tkqm x_I9s0D,gw=^M~ cc2lY@F.tJst /5j $Mr¯TA t@ezUbP5&a4q5qxS@<,^H6Rh7NtpRm5OIx숈,+U )F" XF;úY0()Hl+gm1!-H5+ʲH6(ŎDDo!$r}AҜ8:JˈKw誩9/q\a8ӋHRsxHJEk, ;tCEu`,;cֈ*6XF3<b'l0dq=;gB\L&~PڭK::Lvf>jrnU4|XԉBIZ֤M1-c:;^*4bwM1!\2fu;60C&[ %V?"6 h!#_t݇XC!I ˒/"g3"/8ZtHܓe c8 5؎]D5[,䋻/-[u' m)NeVe>iu -oT}*70R1iz}`@-Dg&A;l|h͖w*:AQ V1&5@ %Nct0[= )QaWTC\k?|A[W[JX:'id<' aYdԼSXM`~3Rct!iw;*TKx.Lu_c'EKcy8Le,tE,q]#x#Akce0RCGLK]CjI)$ 0:}ӡ onoϕ%րȳ1L` ?,Nk=9 6SYC{Uh ނsCR>:}lqc*撊%nD,QJeAd9ϰc $2qtit֍H>&rI 'pHm6NR|IGٜ\gxfWz&l ,ꊂ鄵VK Py5IA<=OqOjghII0-o5!1)֌< gkڈ ;C* xhv>zg^B3Dn7ŖJ7lW^v`l_xtv85G^_)b%Deulm1dOO!kvdevT#9d 6{t@@!+ٞRN|ԡ0x.FLTș6|hlu_^tLE~#`]q!(!"#n(c-@ی'1f"漺]k4^ %C"~a!-OUvfbX(j6w'P^!Ebgzq*`j~Dl(@s5IVHG`|aP-ڥ~̵) * ?3!PYK\;ژЎf!M G!)c ,k2IoXkl=ûYU4T4`m;W,Vmͼڄ}Xv-"R8<ɇ+i-<&#ht  xDT "yXN'n uJrQP; ] IN@|ωWF:oߒ($XI8-q=X( W^wGu>d$Q 4f煇IS1]Jo,D}Va$!ŝֻ2t+؍fl #1< f<^W<q?%}i^o ^IDg*ҏ:WڎpzE-(աUlH-*c˙]_r,9#,`yu`;D2V:9N*.AbIyyBOa-aݢOxڹ{L#k.ZT@4JTB);nDMȖr` hMa}ۀG3އAb! K/[T&O86qIKtW}Jm 4_̮jJɒ2yI)Ң}A6w:PV|\D&Ć`p#M Cd:P8GЬZ=h8+uܕZM"E~j$߬n,"Nb>a+8+Q`٫/^_Δ$4dTaK#H6d)&*?8FnuX Wo mx-9(^hԱ*u%/>ZH|9`N4~u$ [7tXݧqoRji0ءe?1FZ xVx@ΫᆪmȤN̲Vp =xyF̉'=~N:8ewH_*74 PӅ8^섃]pjv A*%2)ı-3ŢKF z1mF"nUrhŹ5.X[o3[,FԎag:ur6ͳ}4aѐF;E GKAӣdmXByć) 7bB,#N|@`C1#_$ H*f>cs%W#i$HJ.n@$ g޲HPB1҄d&8濺7a>iÓz9 C]&3D+Dm1Rb) 61=NCAjG089=4 "Z.z2 oֻ9@=p7y½( %9ײ탯}|<}XG޹l=vXQEpBZ'n=kpc aY׀~.M1xWYa\mWήӄ%L j) ` NGk׬#Sx(!=%y9K-hn`n֝@'RK0γh[끵#<W l)qപ k[8XR1{m %c6~lAft~x5 *,/7h,O6a7ѭvjW #Ȑ6@,3DbmJtjEhǕv6ΘSh)QZXϹ}FI! ;کD FPlw,摷_|f(/![8/!G]("xaEHӘMybFPsPL{hc?T +5Sb+?$>!C , FpltUiTX3wa Rhh!YBV-l6$Į8 }?88<$PLHf\lC,u!q`*c(ϖ2MS|HƄx *=s(t?n>+Y`{9͹]R)ȶ@ u5vG= o_/>zt|kNzEb$m20`&.8 BUcW.IoQ-meR@0esB!b԰L.C;"J{'g9&cG\?>= [q4O߄JEq9bgOSl l^Y֭LʊC ~J\pca&%L.U0xH6++ )pXB30s`6:9Dp%S$cҸJHSK~X5$x:H#I@X^2V'+HV'qaUѶ 6^3$HEsD wf&y+m}&8&]*!?&X98a+~ (4uŧugHm6[yn5ȖNeP>\Bːkb4B$B.q4kGk~ >$ŝIM#\q8Ӣ7z!pm`gKEr+G (_" /n|ݨ_$kkG Vd$C$Bm+4&4FJQ9~"}!r,Y<3@ >]TUBo۟"G3vJ4㾣msVHHیr|/Y?LRLs a|4]'u9E-md3Cr@'M(NFB Vk'pHYV2!= 㹳DP80%:V+榩DU9UB>J,d #aQUuMnau"OF7; lQv@klyVtǬzZg )l*J04g;{]10voZ!`Ff„qD[!c RTU ryQxQO3z6a8ğ֘wqux#OK̽kĘ#nK2 `N&3R@ڌ A}iYȘ|u44#UNEl1ȃkOƥWK7d*bX}'n]H$zhCA& 3a;`J3<,hty+>K:J4be,w |F ;q򤆃a&>m@_O-ѤW{Ð$S@ţ[QH 2@ϫJL,$1B CERn!SW*3rAK!^bjp-e2\KC٪fFيPiM |[(ؕʨ}nEC:TUN2u.f%YJS'0::\*+W[l2&kOޑ #d׳5Ŏֿmґ@ ᭵rX\f'3a6GW6'hl0 6`69(~JH0*v HhZfxgY:S/}y9iWX7\3H}~"?++#: g!P7 p21~@ЧBQ;1`]l Bŋ(&I*A>m!zJ`6ƻ߫i&g$14o1hJ⛭kKb%_WvJیyX&!I*WA#T)nW4?3lC0 / a9s:Xѫ9Evޜ]YL9s2*&lR0U}U.h"'|ϴgt{_Ǣ{̍7]eMeaBF$ Ki5OB`٢@̊.[Aug/0 vCAG-!,/LFlȳS+U|=JM䱤b{E5b e>3Y:. 뵺Gn]g/gRlZI*DNkH(?tyd\DbpvgH s(4HV (J&!Q|>7D꾓Y1L@EcxєC_~]]S1'}e+UL6tb[5- >jmF)~H1NHʨ&mD^b8kk;C{fza#Q.0KA[̳J!5k k%1|}pxwrR8q12LGGdCqLW(X;vS듼yqbhhx4+cN ?o2IǼVUFe6a&1_NIkFbCقtag4~Zwߘli픰 ,W pf y#_Ξ&+U>d'>4м AGzv[9+!pL"<1^"Y^Ou3nlaBq[x8]p`W2&>Nqz^T|r+ v95y3g?@Ri=?;c@# *B1eO$oLb}`2B銌V_2fJeH&( jYG"|/Luv7,xi)=.BA+tN/8 8\!zU@Ci݄#</I9U3xͺ 3P7[|hOo5-Š JaɅj=ˠ7Q9lmGMؘ"d_$`m*}pJb$cv8G̊9QzPzCEY/Dm"PoNV㍡dcq0X~m< <9Mu$v*K9|֓4n:UJ1uP]$r/U.V۳A]vD,Wa؊i*gㇵXE$kc9#[N1gJVzg6a@CE䌓ԟBKBiD닶Jg`'ُzqલwDc\PWV4k2Sx^|?)*`*nl& VHfNIQyi+wJS:cp<ML@z~4N{a]BAtL92 .Iٲ!!kb;b99_:;l47։..ȉJƠ30cӆ8ܤCY[lfJ#K)*hh"`GZ9 Nil\iܚ,`dh-6VaJ&|=D+7cb"k:YH9c&0ˮs~)ZI@1'۹Was3Є.tgIN a X8@l8W(:=btS<4 dRMQR xJt-ZB6(<"Wv-P64%>Mf_!}L [u먃v@蒼Mޜh-*fD,SAK!Q,W /ӄwHHfy[䈍,,;;%o!UreAy{t# 7%TJJ;q:Nr9GןTӨ_q6+J?.4]ҳ|3c9I 7G(cx `.iTi PD[xB F )H{)(Fxp#&9̋2!'"dR`tD\PtjUǘތiE<θɝqmQqjEEo(\LqԷ$}R2wojۃgD#K($67"S7i+ff^ Eu x9HyM:e.pԣqpde;S&s"BGd>gHhuct,A{[qKEQֻ*;g)ܣ[&k4t&=/*^ϷzD!8^ ,9# q"W:.),ż0^KTnJt^P89b)pu@b8ڧ0ڟX9L*\c,[P$+j~K$3 j&iObG䳱^(#VyŒ߱>FCeDgRhkt[y64C3"G-?"|uˎިZ֚czg WOD3ҭvakLI]L% {G2&mEjliJҬјyy-?Tzz˺VzhtI!ʄzN!i]Ddz>)Vsԏl#Bpyh&?3QrZ(Kq_M; ,SI)C? ȷ|HpO/EQl[xv JnmT V$k2JSwsw TK.V)5D0bOR)D -/X),QQP- ݽ`y+;Z6r.s>z1trKTrnFtB<鵎V-j>. @rǝj?.הLtb\QF,P6|, ˁݳӰuG'l(fDQ$_|3?~(Q%"0f{P2u6)Yb [9D;ٴ8B%ZX+k< Š,qXH]wqN2;^q%b:B`]5|y5R̖X8*3:f/Z^_}x`$Gv9n k?5Ul5:'.Uǰb41~ٷAQD}׏BQ Z(#rLIĖ@k8rC_YppdlNes3ASp>$DPV2Qj&;94xsz6rP&H͛B-[Z+cb5w.X+P\\ބvFD6WLaxN*6۟-wWM[FFHTpxi9";Y-|Aĥ@6MV T%N`sWQH"2DִF5޷@@N#Ds/XlagdT{TADH;_V6}Y\ˡdEx,Cl`l!,$5JppفN=3xa }+Fp1g})CHWan6sWřp 0 4`_|xa)5 L|U4[Pwu(d㑹rD-ҝ{/(r̀V ͞QϨȐBQ>A3Hp0wif{*au(šrPtih-"LN9<0]|xa)jgO Eq#"\–E#1(R&Pؘ֔ב5p ̽q. ƁzC[E!PYsCOOttXkd8</9nXgɇSHkrs|"e<mF.XW˲4b$Y^9gkh)"qHo6NLE Z`4q(;[3_q̸/,gu\:* Uk6#~a~0+ V#sscD|U#JZ̬vP$yeCN9:­׮ 10ywyg aU6"W.WƄ mc4> QCܬYD=vlCLDծV0O&CX8/bq#SNH|0dv າ X^F.;y (~) _lw5Gc(0iCC$ 2q<ϗ Rz&NVTŸ]Ag/(y Kp>ɣ7'G"ɗ_L^.W!묘72Gj5Q/qO& r A`{ ,(rx!9mWuFSݤn],罺IVYnoNzڻF;*f$'q8"S* `,7mlCX0vEs E EbF6"!^5fɫUDSiܔo^cq Xc+zCc>BA]߯W&3n"6o +7ͮ}#CfCh׺iI-0;6C@C%fbР.Pd'd CF @2cSf3&&t.^Y,k'&5VsB2(!L1]5rv@:{c;+<7w墿Cg(dC0ЭB}oMK1#{.'H5䒣yDAn .m a)q]abvZ6zy#8@X*;dh{*pD%V3p 5ݰ)2}XKՀ 0lU+6HL`+2@!Ph0Q 1 y|SѺVk^9flk=}@cbAUHw66E]qoͷ|yd+L_2Utniw;74O">Ů>V^̽vtԩOo,ExZ2ЦC2zxd:\  e D1fv;%27{ƟbNvcO'RCoB6K#Il}بke #hcu\Jfp%p%!6TTId-T3nE [`_\AKr)jxrVF|2eC^&?*3ep ;h{M&٘a h5"8 Ob% 0yv k8NJНrLxo{5yC$Z*NU4B6}Gl)%2*Fa61pH66-.[t:hD (tPdhI.S"pL[M$ T+Xrq3I8QN[xLrtURD%匶T8Q^hƺ{l+6ݳD@ EVX!m bMhEņO{MI畓:6ȫPs qE9ƄD<τFS+FyduqҢ+o %aE%X6 -6P)Z&z Ȍ/ƗO v Q݇>n(@zAq}gAH[M?upYMqjsZh$zO 9xR&%ʠ|²D̔b&CmqR}G{Z{|!]Ӥ*WG0dm7Z١w d'"{9Z)=Q )5ΣՊГ!ۉ.gD׎6݅v,@<$l ybUBMPMz!ǁVseOaq\ZgYr<,|)+'@ ɪMp e,D0Nà620L%Ɣ%)(a2)ʘL7Mo< A! UDlW<:I,4x˩/6Wj1Aquz4\ LLQiA9ĘB9Ֆ j9l.DmW*lۅLj.F/xق9ʕMɐ|Uxbmƙ; ݢ K32s&ָ(^cѭϊ$ăPЏġ_ ;+ ]=H< s5 )ɣM,Ɨ} wqXO통^٭uN{B'{rLo$ʜNqRyaVgْ8++븵V^]QL & ݙ{ }=ݻD @jEM$=eߓҋL"kM0Ϛ7}7׎.$Ɔ15UAG~^ 0`3G-TԤx%Q\P&{椻/D ` +13 Gܦ1n'0ܰ-ωRÚOJo4u%A +ҲC2@cf+NI{"j+ 1r1A+ N.+Y de XH,Ddg.ٓv.a1l6{j"gIIS+GANš5Ǧoăgw dLr0 qSHM2Zd?J-=DU-fZeRj$-0ǒLEczogg;M- HaDn># )q KIw 8dęߡ:Y!Omdih| yM29XX,m? ="͘zX'l0:"${m_ağ1ZRq ]p-jN[5[Gp>q."NG5$,Z]CNunKa-wF?=ftQT9]F%gY4M(B_J4bWFd[Нg~6(fp$  'P1;~dbftSmEpQ \ _L*joH A)y8dus { pn 2Ě>-$!kvGX,F:6i.DXY`LTX?WD E̺yUX)Y^7q` {=× M3C4[*1f|nІA0.8&rrd>\MHA!'WqJsadPr:1ɓeIEMq_ =6ɼʩ$hA5)K|cT*v[O sN $f(3q za34;m C|9o<3a^Hza# (s,atoNv]zC_)Α\ω00qnva=nˉ`<`Ĥf1$5$AXPYq?;Nu" 2 j3U}=vokٜ aˡ-!NIsj:I '})֒\:aWiwHdT zW]^st j/Ch8*˃B<ՋB_*JjyԏvJ!sg] /}/ww*bB_aO>r9jX?2w|wwk|B};p=}_+WY~!$E $ppɷ\2oUf# : C`T+ݜ MaEq3xl^nfs/Y#ϪL}2dh:xf^A-TAݔ#[ `;sopVN~,2KgC$+Kj⿩Kk?^dvy8 X*GM6Y` Re6%쳿]w&ӻYL&Bط\e¥|篰t6ȉ{N=Py2;iCGM޳TXu5[p9n~Od":wKNWC~]GUaz(srna"y]WouZJ}ZΛnXp,5LSloKLѪ}VL8<:?;M*XEo=,*ZE].*y̔VPTq[`wVXT{nQiEnnMPOeL;8Aq7%W3F'vEB 8eͽiit{{_P .I%VWpu&TF&)J.Q^"2N0-(I( P?4[>( osAʓ?OK彽 }[?rAvKj+j.ob\Rᠼ[{{=vK>].O/i8{rq[ۅj ^}tz8(I>8CA_9((|?$D@ /VpgaS-U>rJołtIOqǣFyRN 8znTM>}_gb?smڢ_x:'xUueRVT)%UY+zY%Fk4zT~[aꋉժgEwz n]OW'~Rӵ5kugu]XYی=ne]XL,Z+HX4xnQX)jw ]k>HadSGM~b+FAK<9/J@Z CcNѶ?ZE)e3.;^Ck^+9Ŋ{@?&*VgonGq5g( OjouTآNP0g1Jv^fWVDHVمJYPY8X&x/24^`#ahjZ|#`˟J3"MvQG"H__O@ٙB|7slI,{MсTDin䖷u<| hdM?=? iqK3f+x= )Azy#K_^8o ^ Pݟ^[ѥ|m 9CayȘ??8cx<68YO=tY`?cH8n ~hG1y\pVK9e4u0`Ƨ%?e2R֍խn:<O{vM?=t3{N xwgE9Q7;^ Geyd-C]ݱfۧ=@lc;Q?@ҨEHGJ.m 8T4B8Pp}/ T ᜉ,QðcCu/:dul *_klK?(bvXAy3D] vݫu6aLog/(:3u{XXrfE}Ό;oh+}QKgFBgFz43N[:3z<}wɊM^v7#qƑT[Q_D,dQG忻W,0a*/ #ߠ@d&hk=r|%/yAL|4VTj<,;7tú>H[3=X@30M|8=B9E|GRH;B sZDXBNUN:Ykk}99]/,o;U>.tXhU,->ZU`|k^q巘⩩|+nHW|IWx=銢7y̬"5'V7U-R:o&N #fh|i;l.iFÒ͉suE%kW/j &l,ee;bL =CB\t?71b9U I3:K1&3Me.?&6({+04*xB o-$ 6T{XMz=8ѥM7z x6Q KX.7*fAW `j|8c{WJ3x3pnoLypp~*wS\ofX8Xz3#ڛ.% v^cVc-RM|7UZ > Ւà͔V+ɦ(Jbo l湠XOT?Hkyِbuy\p~jt-&Pa%{=1;RxAYr΢CXc3RkBc߿.~WS")k [5B{7 _ D?w>ZƘ#x+Iނr0\x8p< Gxlmo |@FyqnESo^ևP6'Qb1/|nUy+ S0XQ7poa8qN;P {i TcF@" :Ej-X A3`.U3E$Zk|80S)BΗRQ 좏Y݋>M%KnOrKO$6TFx0".&>4&wh'$ʫN_”vc8$>tB1rݟ@Ȧl */fȘJ#>r,uѧ4xc%yTMPci>)ǩ蓠\m(5i#JuYRn 1M>iGWI)SY7b@Żw ӨPINu& ߹?;t*ɬ$|*B*ZFܟOR ?;8 n_I.4W&*b*O.'gO_f̤Ex'J*ΧLKO# *TXIҵHv}9 (28>q;>+o4.nOb9Wt|9\<t>|"?w1 ȝD RP\`*L1EUhQ^s?,FJ >&DONK$D> t|:ʗk(O4AR>+> 49>cK(oW ^MW!t 9ԻTW^ۋ1,Eɧi',(-+(lJ>- o'pQY) Ws(qc4%]s`:߯n`>͊c 48NP-G~=PeQ8 K>M+}j)cQa~Nqͧ!$$V?7GUTƜt|qJt'$%,!,T,D8SHOb>`'}0;NYyuŸtRBv-G,fQCp| ]^8A`U6c‹;n☴xPOͰ8AI8sox=_ɧO"+ʧOlQB)!Ӭ%O}Fd%JfσO7ҰO\, 0:|\5ۗ^CSJ.0#j|Oa/mCjY-#Hra%YOP*i4@r6nPxXTJGXz5E@hHZLQ(DKJȁUo>ŋV3F!>OQ݄GZy5>bH2aJ|c^G`N/_ )at!nWejhHkA]{v4ƽӶzDŽkuʰQ߽|p@t?7J ls06`g3`M.lRZnqܖr+iY碫p|S.mq+QV?ud"%fn44 n-X]lq"q?U>.h ;| K69~ӖcV[mnN1(FeM :S1Q/6GA>p#<kua]#7_ mw9aJ%k|wߛkNY=X w_Ho_Y||_曰qzԬORvϏ]6^D Qb`SЦiz[7ǰy?48k):Vxrn5)fG%ѵ4M[g9ڽiãZizJk󓳰jmZUNzc[,uNG~3\knnuz5}wz>9.[14$16Q/^Wb g Eh:_mY?~࿘7? |}_cݏ:fd[nsڶynoo<B`3p롅a(MZa0̽JS_ nЅ+[e4dԈQQh^5*Zѹ0-~ƤLJF%j4/X#K!kkT M?cw?so^ըB||ƲW{vFh|3;6[nYM2OrM\Gdwnvu|iT: 0}nKtgt{I+ Jsv>?|zcB%% zpS.t_ .ϗ|:2?Ri/i,*ߍgz`jS!asB.E50ևDbV\Ln v ]!*c<-!?XGZ&[>ɲBfEm əfRѽZX? A'c{ШJ`F%.ׯ -aE&9_6Їv~4[Zjy EiK 0%ry\"EX'UhٕY;3ҕهlӋ`_)KK ^mU1H[+j7M'(Oߨi22ȾzC{<.ZLիD#]2;,-winb[ m4~F<.}+ӶTF^e2i0 }3_m7:*(Up 4F M AK gB?MKKzgf7އзD٨0>b~g x2unzM|'߿}JY]qOu7JY5>Zi5;ayҨV(ߵ>SҜad i*:%48qX Xff2gqXBH!G<" [7p7O+c ddzQ8wޠ1MUVJWjc*p+ota$q뵖;:05Gr)Ng>rҳk|jN vvPoiKBɩ;m{=eψ ^nuiGKV[2 VܺG'ui*xȯʔ:}z(srnzШ $&h BSe׵j7f!cqSCbםzoͪu3THNѪ}VJcEMEEE%U΢ȭZD-k?4ГXtœwEoTV̸l ,}!18v5*fNx4i< 1 ;̙B%}IֈU1YLV_^>?=i[Eh?~ኊ+N0 fExA,%?nO-Z&\E|_Giڴm~Uf\ LJ7VKw'0d""YxuzZVM(4t7G_?^'2S*$8NTjzUn`paRpTiC~\^Gs?R?\PWP1B n/&z_}ݴ_n.v7X8{ϟ_b)UEwߞkApPxa' 4Q2sAI]HCPt:?=|釨+} ,wb_W̊ťⲅ՚Ed썛I"oxgc [GɖZU~;UϜ| [a0 q_dh؃&U `1*eMyMFGy/\y|UYuz#᣼㨈Cq*x!P_ 4O7ݿBňu~dfyQt3BA-d/'smgd;WKwV-e8-7ǟ_,lߢ-rzTߪKo/-Qzcxձ,b|p ^SYт??&}5kߟ>a/8bDGel3$WQ޽[ZIJ@ }E=,UhH|2T,*`m5 :g_5{6ýiCۧ^M"u؁`7@k̰N )GFvN轭a墝|EC]dN3'E+e9W`V˛}MSw!Ͷ