knapsack-4.0.0/0000755000004100000410000000000014106361602013335 5ustar www-datawww-dataknapsack-4.0.0/docs/0000755000004100000410000000000014106361602014265 5ustar www-datawww-dataknapsack-4.0.0/docs/images/0000755000004100000410000000000014106361602015532 5ustar www-datawww-dataknapsack-4.0.0/docs/images/without_knapsack.png0000644000004100000410000006066214106361602021630 0ustar www-datawww-dataPNG  IHDR7UMiCCPICC ProfileX YgT.9%g9 *K *EQ@D@HAQ{}s<[]]TuOT-|$JTT @xD PS0  PFG[y Tf?h_{uQpP.EÓS!AWh8p!{ 8;HP0Cpo X##ఝo @oIKN0&76 $lbaؒViE$/GA qc07 5w?mc 8!G1>67P!ZG c,cWjohHD-m}@; ?8? !4$ b8WhUbĐ'Zj 1#ѡN44;}AF45֑Y'4 Ѻ}/e^Plp,bx_o>C~bT<1af4(ĕqNޏ:0n%mBΘQ1,k`0! k4P [gzOl@""Nq WJq#B{xp,/v3Vk [}x` 37x? Y C侮?pqgQ ׭t{p m(+*0b`VVbu!ˉX5VGc??z4QQ7 ?^OO0ZVI\<<4bnaL3ӉCÿ9G'# }tAiJiϯRƀ6pEF%Pb ./l᫰AXEIY ڞN^pv#?He}$|yKeK=`Ob@4&gp:@GA8@Up 4>x z3w#s`ABFD@D ٌ ֈ#x#HF#YH.r9T#Wz.E^ o)bPʎ "V3 Dwh*z-BыM.}Y 0`81"yc`$L&S4~Lcx,V+ק9݁MžVaob۱Oo3؟82'ۈq4\!,|vx<'^ M|~_o G%(B8"GxGX 2*DS'1B,$'6e:f: tvt~t ttt ttYuCߣEAA!!2C7 $V,ɈE%!#^dI>ٓC>B&G l ~{o21~fc`2`ƔTtiYوœ\\<<Ƣbr<#IV$ k*kkM͈͗m?[%=wxv)v ,K]3j;99prb8%9-889rp.q ppseppqsqssgrr?^1 3̋u={wOϗ/*?/ȿV@PL J@ ```f`|faE3""""EDED]DSDkEŴZfąmw_В8&@b^RJM-I)n) D Rz;˥e2Z222=lll*!,W*׻A{CĆ $y8 o8Rn)|VWTQ|SI])LR2rr7Y_b~U^:կjrjj'՞ۨToU_ԠjhLikzkhjkkz6ޫݨQccƫי$S1]Q]i›7<'G+{/V@ gC%C yF{Z1fƙ]&&.&'LFLEMM/Θ2k1Ǚ[ZXZT[XjZl"Y9Yzk-kMnAm,ml^JF޲vvyvR;o;;*;v|ӜsKiXVW&W/jy7c\QwE==x==< g=gl)K+k`֝[mv׼qnW(vrʬOό1ߏ~~~SySAzAAF'̇څ ] s '{GFFG F썒JݱqGl45.~}(ﶿ!U 59uف iiԴ:ұ]3~fevd)ef=qXp#G5O8:S˒;gw3_8?3GGje-.;.~A'זd̗?YS&PUt*foKV+*WV>8u,٬"΍V9VWkVW?}{aŞKƗjkNrf]c/}ekZjK\/v#&r3̭[uu : 7n+>(X|Nv}SjZsblKTc[_;wݳ>l|Q}VǭovwxFFn힆MM}z}w?o^O{u(nhe+ܫa2kG5F1~1߱+RߓNMTOL6NN|ǨiX>||w__׾#ss < UZܖ&W+E2 ?~Z _[P)آ|;M+Z׀ԁQ@>X'>^Ke%23MȳUqr%p72W |$*DEQci * wlCrgꨆVLl"jmпbʈhakzԬ|6 ͶnaY5{c7[f.oy_?G M!¡HhXsAQ;/1MqUy;=vYݣW;`U~ԘV_h8đOߎ/bqm8nv·xoIQiǧOVLU89Q%[mxBKWkzk^azz7o5ݭokh}Ɲڦ抖һmC9x`:>i.5#=}ZL}708X<~\_&sFtF^fve|] '''L)N1:=/7fg?"f)sp/[UX[[12QLb]<(Iсɗ9mSswA@UpPifїb BR2޲ ryw*L*aET6zŨgiTjk=~&.fe=0lF=ƟLf*&.V6;mpHsLwt>iEtޗ)>n t R &O6UGdGDQwxQc^Ki(K`7$sou\_`kAt J澬399{|lOӅ-g>]QrXԩw_|xl㹎OE.lXrE-e+pZpVq]_Z;674=zmO{JV<:qql.lP՞ސ>&&|c88e+aGȿ%}?6^n{ Dd>5-{9yk & =?-V_#VsdcݸD"~pDHHPF';20121`iafcȥ-;$P#X!T,\(/-&'A4Z)3 "O) *>TjP>R歮,r~To.^wdMl cCI#fc`dtyU v=&< gˈ%=D;ےy{)%>H~Cvj5'臂Ж}F؈{ v\zwvu]̏آMq#;vINLua=IIs{ےM>~KQy(rH0БٙGCsrYsmɛO,0(4<~x"xJ)ҕ"gxβf+I5j^^*}z[u% ;2Mf>-{lmj{ݾv_G:<\swJg,V|&~XYAXDaCPA Q? % b؍plg36<'[ 8%(9QF#йU-Пge"aI>69љf:9̀y8K7)6-898c\ܒu<<||ce>r B DDb/ůIdKIYIɐefdpR>IKQ[]iFy uK M5O#t:6m@K`p>G4'ZYحEllm"9]\=hbتunJJςSƠa};L1j;$nճ'r/@J~2?‘:IpZ O%:'_}R׷bi,*tay'[w?gPE䀘{=oҜbRrՊQk^s`|@ $*A=uUQD,X(U(BQ*zmC`1VݘZ89bpN w?"0<g߈<{:8.ܻ}uۧ>کU3W?^#o߉OONk~~v>lk9umGM`3p=\BkC6)BZ('jƠg! iL"3e2}afB9H$iӕң6ItlO~Ϙ$Y~vea:\pkQ%1nqW/RߥWe7{+$+*)?Uƫn٦MsYU D 9Mj<-X,{OFڻ88 xv{<൰m7By_H/>"&DݢFƶ&To e%=@Lc>џrhHQy:_Ol+/=WyN^EU/Ԙ_z:ƞ+u {4kL>(\x>}ϲ- ]|e7<:vtm8]:ϟM$̔~=-gmg_O-x-t/-^X"/E--/-]X)_Y^u^5de 567 216 =g@IDATx{*:RRTD!r"Ѩë/9+gM!; [@r [9IaC*J-]O<^Okyל;yyvغuG! @DZ%B_JIB" +UqF#]v͚5 W @E@VF >}I  W @E@VF.;~U5Ì7nܢElٲ뮻= NtFuܹcǎ… L| m۶GǏ7hhb#,541!5ݺua֯_߽{~ܹ'Nׯ߾0aƍvn:LZ޽۷o/`/^nOTAdjJ@1N;cV<+ҧO6m0`رc;uZj5id6$y9 Rl@C@V-S<V\iwfϞzݰaCii)@Lȑ#ۺuvծ]Ѩ @zbΫ҃(* sٴi\LQd j3f̘|bN8{O> dRh":ڸqc&D! -oFW0 ,Xo\{M6ܹK/|:Qq{yAN;vdRXr{7k֬ޛ/~Ӱ}W׆ ~ǿ4߲eɓDrr3VM4 SŇ9j(м<+Ȑ|Hrܔи鉿[֩S6lXp_|wկ_߾ irwwU n:we4REiӦMHڻf͚㏥eO?g}0?; k֬aI6V?c[z:_v ռyX`ҺtO Œ3端G}4uT YxɨnF&?Ø1cVZqe*ҞcW^9p|; 4/ 2$R744mJb~`ȑDӲeӧgΜdɒC=3a„ys.]gƎKa=( &{o+y-[4Tw}xK2ܼyw( (>|2cLJ b*0%M^?|g*O=T5u}ٳ'۾VZ9B{$1aم^"_&QU!|v`=`;zh~ uZ5k֬wL/ζwqK<#8)m62a~iO+&b8`}D!Z5΍7L#;pfc_W_i( ƚЄ\i%kԨdIc>C;7nܜ9s0]~:)Zv뇿|Ch}60Txp/:th>0ٵk̟?&vX߾}-_nw`BꒈwG[،!B-yG0} œchF쯿:ώ=묳}<#!q Ǹ#뎽ax"|&ׄ\htI-Z0|iӦ 7?R!Bswߑe9S(G!A,:"( y3@RG-))A-QLT觟~v@crڦ~sC)曍ٱcGu2Xr K+hXE։>+Tq|eH%wq߄j-DD[o "L /`>}H7cSykĘ.r6#"]y#1tMFD̘R?nf82?Pl=&̗x-h r)+"~Y(SCPLh+D_4ʋCun޽)rB rxljXz8w\H㦐:C&TC0! .(38cǧO#~@ E^8n+o|8O Gqy=fKYf^(=*WN7Tw4nTx<Æ clxl[ng'5 duBl+8~?sb'ٖ<10I1goeDġ쀃 *IظJ1Tca{ICHyA1QX>\*9cK2\R&o^tG+p\YYZ)**DٜY. ǤM6,0 KO3bX)1:.2+sIRd`ew3>r64icQr$4fm[RLÜI aztã|ރg]@x:<#1^ND(q{mMwe2Ӯ0TA,z fLX e& ,_s#9,7[d8RHGrbFR[\ 6XEp"0KG2ɫ2c+ECUE/DN:1Y~-滫 S^;Y[XjݫBң/ Lr>tFS0#b&" h`Ds|1B'@ΫH~<*7&$i,3%k7ـk$'r[B5ˊۋ=#4PL\" '0ԫ ͤ'~%)>L 7S٭Bv Ȉ<Y5׷R$ xFL,Sdi3.Mql ~TY)`F("BvaC =i!s-bYrWCqpCT; rJoO^WPpBPq#QEc8#@q ,9[vpYo%ab(p x@wXsDޠ^Wb8dh+e=<>vu.'!lͱf{r6b!)H6P6;5bʬrl M1a~ׅã©_t%, k#KN~pk+ts1ihmi|p/8pz))%fQɹrqIKqez.[Y{Йv҈]~(p[|5{ SL#lw0>.aڦ/Դʯ,R?V28KE"q BPӱ&߆kX~t>oLl83PZb+EjEE:}ή ɣ$HYd)|&q5'9X||IL5\nUdq#a!kpUPy z M8ڀ3*BCKe+ďDAs9L a}\E.d'kz6p9A䤏#wC}Yq'p{ɷU#dx“:ɱKY)#7DnJʈ@:Jir#p!8]r%M"~&E6QV5+n:cTM$h^n[0`TVQeg}낌CLL4]*NI# 8:UlU-WŖGB@lo2~}+E@@V ! (YS3! (REY]! @J ! @*B!  D@V@L! T@VB@!P RfB@!PdB@*85B@" +UՅB@BEX c1ЙB@!*-- :`wX\ ! ('0Q_RԷ ! _,D/B*'`V! 2@@V*B!  YrVlB jy_! @[w}ǯ>QɐQe! #￯Xbw UDo֭-B@! VnF>'RkB@C+xG! EC }RE_ ! @J ! @*H! F@V*o@! TѠVGB@!7RyCB@!P4d:B@25B@! +U4ՑB@@V߾;͛77|sĈ_~eꅀB@dfyٳgtI=܋/a{t '4F'9PoGXAC㦜ƵMO_uԡ͛YUV… )8*u֡֯_.w)oڴ C{׬Y^z~ꫯ~>Kƍ} !qk?G*CUdy͚5ѽ&b 40԰ W]u_|APe`7o>`{5j' 2)̘1o2e Fɤ&'gW^a(3dɏ?HhM>X_Q5O$s2ߎT C!qNCڦ$' z'xlxY}gyķ{,Yx K.Ź_v-V䦛nJ8XqM H, Qn_13xԸ)U-!p4ikVe)DVo:!Gs3T#GdXWDE>|>#f򩧞umԩ={9sfZr΅#Fe˖Ąe^x!S|W:V~+V(ZGW~RK{A셉bw8lӧc.bW0ХgyGc۶m Q|0~iOeii)>(Mn4 1ҥO_r6V(믿PP1mEaƎK>t>JDi5?>i־C.vFw7nΜ9O?W^{]v[zZb;&{GH|V0a%y֭zxիW_xСC(Cqϟ?&vX߾}-_nw`BwG-lFRO;s޽<ȼz$ sNJR`س: @3Ro=Y>a\ ?pe|ILSp&~ @>+#8 858S(G!,T^ Gi@;P/h|NO}ђŤL~lߡak͉iCo6JfǎNԵD7~o <)MgRr6?Ɓ:-ڰ[au饗}{W5\?OJ4@~$te=:5dO"-+ e˖`hBUGb&Q7?0b>Ôh"1o7P lw3aj/}͔cH#،tۼzwʑ&qj"fL)]?m46wxƑ9Bdd1ahDUlذqEDo?6i_`*WFr]v%M׽{w[\c=C 65Q5 ͝;TCC9mB%: Zjg)!B>1?~@ g縳+^AM\s VI&&>P1rQTy(+¢ B9쳁8a}l[- q|X?et:'Zp gE#׾}{R7b ;>8"*^`ĕ3ڙpoInH"Ԥ t`cWK܌p8+VH˨yatC5zGF3l0ƆGɶ[@qvxR@]!^$JJrcQ+-EO|Qdpj3B 3a@&M86Fhr}u^=Fr6Q1Q$I1/gJ26nIN| y[11+=VFn&]9+IaHqn5z(HFFgR4!jGsnTc;_z9jܐ4kuUPJ13T|18D6 .}"N),p X"z0xp=tQI9hECߙPS99% 1hIĚ<s6/s{#\ 8P`'lڵ*c;r{d5: c><* mA 3BrqVʗ$Ȃ"9r!R<$-PDH†{BP9<[ , Kᆒ90v46 TU󺒆Ƨ爄3T CniIecq 'w}7&GȈӟς b (pR/eCn@ph"0p@spzyǰ#65 v0~"V2`i4l2qr \6ƀ=9}EaDCgY#̚L ǶФw]X9<*J{EHww^'i\8x_rq ]?1X(A1~*q49Ұ1Q.Nr<7i6?Nl4ܼB P/\ek8 "'ym!_b*c2(RT.j%(; :&v`Դʯ,R?V28hK9G2b!(Ƨ Lı `byȜ hM X)Rh.(r{ pv=PH'@"&sNI38ɱtL,7[QgsʕHg6KʸWq0H5h!7]BCg$l1@a#lX_GP^ r5~_m jrՇ;s>A88[*qJ2&@K.Ino5oxLhSq]jV )Ѽnař~U&p&A'Q P/6. r/0WUxU-WJSB@l2~5=L^sB@ʅTZ/V!}! +}f+\JUhRzkB@ʅTZ/V!}! +}f+\JUhRzkB@ʅTZ/V!}! +}f+\JUhU~ 0+UXQ! @z0Q_Nt~_KWB@! 2AU+IOb"BDdTB@dT&0B@ R ! @&Je! @ P#Uw˜F! @ݺuwuW;~-GJ* ! }Ŋ;o"2~[nͼo1B@!@jvm7y>Y_,B8G@_k= ! (蓕*H! F@V*o@! TѠVGB@!7RyCB@!P4d:B@25B@! +U4ՑB@䍀TސB@ YAB oRow9o޼Q#F/T/BG 3+3̞=Nz^|E+{اN8O,Z6nܘ 71B@m@6Vj~ok%V;c.6luW\9gΜ>[~}J*V~7V[l4iRII.1Vč'_oG~r*W!Yqm65}3f]Yͯpݩ"$_pB-_شigΜtHfX:^- W\J/ 4o A/*LT `Yf5؍:![o2e oG&үd_yzQ3f 9I-eV@}ѱ ʋ5O$s2VZ C!qsOCڦ$' z'xbڵ':8VlQ_W3b.bcǎwhN?ިQ#^'"nСxBqƑ6t~Bkڵׯի~s 1٣>㳢Մ (֭[ߟ8^ŋLg%< YӾ}NЄL<wG[،!ν{>#iG"0gZQ;NO?ٱgug$?@9n27_`dݱ7 SP@q -`#X| /0t4or%E\g}]Æ O=ԃ:|("zB$d4 {wPh.] :u@c*s_6(Dқo(Q;vD8QH!C.-[~Hk7_|ܹR r#%A6?:cqmȘMD K/4ғ^GpV?lڴi>}fl*oEfDc$gkHV5P1cJiӦ3& s %Fˀ$bÆ +"~Yxt&`V}>/iݻ۲"'d̎=X)~Q tܹ3qhr!MD`B .(38cdz5R…|*xḭlVdǝs9-V>YYR63T~DEa\U&.+hP|>l"tض-Z8V>2:Ovoh8?@ೢr!i+ۀˌ, `&xOwLY! 3!i%~>+{fsGx?}*W/+N7Tw4nTx<\alxl[n?uxEY`$<"@$W^y% qqU~łUƍ}GyEcQ'S\뮳r3|$a*IXPEEsŏa.fؼxɼEPo4!& ˇKeN}뒌:ӧ*+m0ѫ̅:fYJeP,WN&ʦ^vex.8&mڴaQd]t 'M|{}JXօu4]d%J+-˦sӄq|h!Î|=%g܌51k=20gkn؁a|$!,5dHxYfabj"k;IP' ʭ?Wd>0[ʅy-3QndYJ17Ê,1.EՔIސh±[NH*]` ^ FK<$Hav}d[B72Jod-ʗU$ʌ= kPE/DN:Y{>?jL ;rGVx UB!DCV(D2Io\~"O Ä0A?&N[#> :#9]av"y$sm&p-DqK(Аβ ¦T4X#k˥^ FM*>l7.F0Q$[s-0 16{yxƙMQ 2N+Gs.!¾}7_V*Rtf<6!al S .qȲL)T0xp=tào9hECP"I(AO"!~sbhān?)/gk׮P!|{|5QYh }ȕk(̵׷R$ xFL,-ah²]1@b0*+8,"É)BrxZ*J$n3̒46b)D́I!xlp7J*#P1;;ALg?geX)znpsG@CLj@D`^z_sd88iji4lNnv.…x0$19lOΆ~_,gQX#*-nlֈ)&ȱ-4{Ĩ9]V /Bm0s²4da/9 HMeNp.ae]N1ٱ 3WMD?SRK jARɹrqIKqez.[Y8=An iD/rK-ǜ$SԴʯ,R?V28KE"q bc7>a&<O䤇ClFh"XJEqu]GI2<%!nF$ /{5*1 (5rƯW"`8=~&LmAGDʸWJ$R & 4lX_GS^ .J;~9lr+sq599q rq ^-G8%?NruR}wʕHu,l3d{ܧ$8]r%M&(1Qa7fMsL!v]6/TQe g} P/*. r/z0WUu̫eRijB@@_?C! Y.B@ Y)ɁB@T\d*hdB@! +%B@T]L! d$B@!Pqk ! d@! *.Rwm42!  ! @E@V⮍F&7SR:= ! (W0Q_Nt~_+סB@0EXp3! &Dd8ԩB@0RaLT#YB@ c! (Dw˜F! @ݺuwuW;~-GJ* ! }Ŋ;o"2~[nͼo1B@!@jvm7y>Y_,B8G@_k= ! (蓕*H! F@V*o@! TѠVGB@!7RyCB@!P4d:B@25B@! +U4ՑB@䍀TސB@ YAB oRow9o޼Q#F/T/BG 3+3̞=Nz^|E+{اN8O,Z6nܘ 71B@m@[o5o6mWA Q\p8  u֡֯_.w/PH†Yfz?ciii@:$d=`?W_}_7n (Y9R A᪫/LT ` RF vD&3fxSLѣ1¿+1cƐ 4a ԇ+jqdWۑ߶dH>~9nih\۔$C=Oo?~< =K,qU tRkbn馄p!0D{^uא+ 5jrԐM ;ne/DVoL:!Gs3T#GdjDE>|"f򩧞umԩ={9sfZr΅#Fe˖V$&, B[ұ+]9=פB:J? 8ϖ]أGtzODAY3gkL>[ug۵UjХgyG,ڶmkO?4jϧ>>`[j 裏"/ 7@Edۂ+RDQ_W_8i(; 8!>'Di5?>iԇ~ءC;7nܜ9s0]~: Zvz￟BCwL裏!h5aJ"֭[ߟ 9WNgСa4}۷K LH]_#hC| #dQH0ν{>#iG"0gZQ;Nώ=묳}<#!q Ǹ#G1kBy. A,e+9L Z\ Yw}ǩjG!= dzH0)68Jwyzҥ '2l9bHә OhC=6҆H7l͎;"ktȐ!ex!y#nαR~_@tWMƏqHYӰaQa&K/-kk4@~ğe=:~.2'bqui ?a UEIDѐJ!̇ߙӈHzFBdz(D6;0^xs>}nFxkĘ.6#"o6#9]Cr$IܨSGO6̈́qd7{L/4Z$,x6lp(`\ۏ#& ]3@_^WʎBk׮wnˊ1;c9`S?(f:w\Ryx*r!l*!\@g-ycFJỎB-ό |0";sqo?wUYlf^( PXm!^e.Йam%srKaVdiDPQY&&^vex.8&mڴ2.Y8]C+ BgqR(Dcu4]dvV`ɖeJ9ix8>pҤIaGs>|ȉ3nnFИ5A},skIDATi5 7@0}xTX>p VOg2Y`$<۬Y0155J^[t$d,ιKsSf X e&ʍ,_!fYq$kXTM ) /Č"[\ 6XEpf aT}#Cট5!D8Vgl>`cW@'4>|8kGAƴܑBJ(Xp-|QdpR3"E 0A?&N[#> :#9]av"y$sm&p-DqK(АfY)Jc4 H8p?2#NWI?T#JR|(nL"Bv Ȉ<I"f.%gipeKᆒ90v46 T"Ny]ICEsD* us )j;gG4hS 44rRt \IīT hI-{HX/s1l[LM;2ĂT6l `nv.…DB0$19lOΆ~_,gQX#*-nlֈ)&ȱ-4{Ĩ9]V /Bm0s‘4da/9 HMeq.q`dM8sf0sT@8=9%ſ̠$8Kai؉('9o'Q6n^p!K.ݰ5KμېFD/Gm8< A2dFi5_Y2e<KE"q BPӱ0_ 5DGS79!Ć9!%RF]tQz,<*N9qqS&k4Nr챰>䓘kݪँ<[SV[ncS"`8=~&LmAGDʸW#T &0vsę8f:VK\ 7 pϲ++Wv*$X$7 IGW# "g9\%rxT+0II O$* /,sRDr~/dNʕHu,l3dG>&@K.Ino5DѰ&*<ԪfM0jU+Τ*23 >q]Bk(ݗ U Kʼn=id~:YU2~Ux45! @ wOliB@!Pdd B@<, ! @*2N! @@V*D*EF@VȀ;! Y<B@Y"B dKB@!Pdd B@<, ! @*2N! b7"T (B<D~0;Q,~A @(陹9~ ~Kp艄3H@$ԉ;h7C_鯱r p7~cDxau652Vg0xS o#~u8< Yþ|= 7{Ćߞɠaײ-~E%F,LJ@jX#.c9@ =1CԠOhr7GZ?|-gaTWp&D['C-\<4anaL ӍCÿ9mD'ݜ6"}x^qZq__)PBc@ccQIԐXaC [FoVVTRtW#(h*@o, upYW&G-8Q~p0'Q }R@S` aԃAdRrP Ԁ ]p<}x ;̂y !#l"#2! x">H!)^$)@#Z2r BcGt0 NF1c0*& )Tb0p`03%,ˆiuawbӰDZ5,'q8\.+]ugns%ćw+V|?~?G x]=B%d.ZwE"QL4#z#9b3q8I\cӦKˣk{GBB/IKBJwM Z ! 0aX"dH$oR0,L&K ^Xar-M^, #o N>v>>?+|( .*n9Ashc3E͂BlBzB!BEB-B9 ÅK;gEE,DDNl)cSQzQM@"6Y1!1[btG/HHJK엸)1%-i),y^YJ_jTSittt *&,S&+ʪˆVomrIP.^yNy +TTS WV|ĪdԨMYFOL YLeJWUYlkSԧ54|45454j>iijZV׎վEGN'L-[nҥ;7/Oѯk jop`P0g#E#ucmTVII)qQMfAffwZ,--,,,k-g4R:IǭPmmQ[+BWvvv7큽}NێxG2NJN)Nٜw8sw1rsy*Vn^>ȓ3ijuknռInKp;wv0q9JTR|-}}g}7/ ( , * . 195"dB}ٰpbOĭHȰȎ(Ĩh豝;wRgbm1 ;N*n_ܛx,I2I&͒م巫-E$eOʛTiHoZnݙߥqbFAƏ{323;ŘEگd66;$ʁc~t*;uHPÁ{N<2_SR\0^h[xH(G%%';:VjSpLؑcǃ?+3*//?PP_1pDI'Oz~Jʒ*|U|jhS{Lgjj:j5jk;;?}BE uru9s/Kq>\hzVfGntu_zzύ^ކ>-w"ᕗprFGJFG+_KSM[/?NL|O~_2)4Y;<4m6aw?d}bTY/_g=f}~]v;?T9̍G̯,,,,i._v_\IX%I5j=b}=Bl| ``,dO7㯜kC~"#Pb7Dv`bqxI/N^F>xiE5}S+ϝZLǢ,bN$Ii@٣ҕϫf~ܯlwyiE݉N===\9V5] ,GL9 .^zUk1׏ܨpV{cM7׶TV-niOt~҃]w}S[o<@xi3APp}}hLg㛓o1Ko~2491oZazCO|>0k7ou4ܹ&1%4^ƥ=D9:IzIM$E6#sIfifNM. w65Q~B§EZ6gTI-|Y[~J$EK5V-WZc?um .|2# X([ZZD&ڥur5-=#d6 ;}.Q|: rV !̄5FEEeDSwzS bbVb]JM4MRL%“ʑƼ{>힮{3m˲oms'7wd!{lѧ♒G1*,?Ssbw_W~O󙦳]5ΉvzKvt]ͲFmզw5iijm{H{jGBg:(\gJ_nӧ}g?2<Ƚ%}?>Qn{IөB>%z6+[ s! L WM-y-}Z[% o̿,@hb{qx4b0}IRىQiK+k-[!{*G.4*@`PpHѦ<,xqTIY"rܴFsʥ*>jZx^bM-:[uz7 M$MwIA%VVc֥6v ]t\ɮnS<<9<_{lmw0!S} Z n I5a{"#Q wzwvm}쏸- w|9wOٛ&6=pOP^L} Y sR">|)/HXyk­3Eņ%FGMTP>uJZBT?9?5,xD5㛄ܩOviF{'(y!xNp@E j^}"990Ӵ^0sN`Fy4XYEXi1!v"(F?fy2FcI`D66[}cYÌ 6`E8BxN!ojmO/01Ԑ$_R;Y|х f:̀y''K/6MNq\xn ;)l>%qBE7E_]ϓ&K<\"cs*Tլ5845?ijtmлc0l8e4oLp#Z-H6"vvEMN\Ȯn<;&)nwۑSM] pjv,|)/j`)V5>A.r]}Q32m/:9`a GKkۜq*TYS.&ím-mBf*IRO^:ہ>KX\~(k-/,7<]V3z]cc@6jHZ>ްA5za` D+$V*a-E%QG/~5&S2'l.tqpqx}^C3ѐXH|OCWH7Co|̄d-)FDI&Of3V=Vc.6g.sqp>}Ǒ=o߀B _JQhDM!FbbH 2a%nXYJKS*C]jwjtiøEQQ/D?րjlalnejinn2}Y;>{S0N+r>RZvʽ㫗tw\ ^ S w<cw6~8969oT{2gvef>̗מQQl|TNNI{gީ=qaRJ7Sn=jbj6i阾oJROy_'OyC?NlbdFK3 K=+k?~.m? ~Xmz?SA ֆl*R"PNEϠ%&ӊYdl#vg {#=B%H">ӢGa- m.ف1IٛycHv2{ +$.A%F@y]P(}+מsZuzҞLt1yJv́gQ]Sr'5NݩԯjLWC.o]rzՆdNw޿0lDω>'򆬞_xe?2:nlm]$:ϟ;$V|=-^//L/z/./_&/G/|]\\]YsYudumcU`G׿K@(`-}}r}} &h M?Qky)L=hʚ@PiTXtXML:com.adobe.xmp 566 199 0@IDATxe$Ŗ>wC\`pgBa N3;NN .on'V:uΩwׇӑ;"v>wdW_FP@ @` 06F @ B (+~ PB`Ҹ?7ߔ*2@ 5XL0AqgQWP2ʁ@ @?QFRk;a @q'h"bˠ"Q@ :xK._ne @ )(3(@ F (ېE@  c@ n#mȢA @g 1J @6d @3Eu%@Euh@ :s@ mFQ=GK/թpws1oF@@ ECQW]uՓO>J+]{7pCqT>ӊ+x>sUԼ_[t@ 0thEk/?ywH!SuQM6o?|gy?PhKzg|_|~z꩷~z75~n7޶aFrXVﭷ~嗗_~M%9L_ݒ+7Oo+> V?~Gx/t+]~ِ }裏~w {S9ҡZj?Ś (^Vvb5H#-"7tg}if7N u]/v{SOOzxO7tc=-X`,[7^zi~s!/kyq0_8E]>wwd|'3|kq%ѼO#E'Q{ <~;8-o38wL 믯jk/Չ'bHaРAV,;$[s;nnU|N~T{@R"?!;oVtI[KI0]q#<2,VYe|GaC ;V\~)pg ]vٙgY=oꫯn-bwZzƸl:묳 Rf9@Q+dj+ h3coneyUYF}vmn&EBp$-g} /o],-lʆBuSmDk.TDM2M̍=/m2ӧ~{ォŷHɯ,>TqL.-;|? <[a{4ֆh/E(OCL/PFfIK@p>$l.B$smssQ#b-,=*oO.Lf^pEjyO^|X iUi]vSM5 om˦K GSǓ?\gaGC)'$Y(fˤ%5| Yt7-,:k%8蠃[n4><@O7ݞw/{m65@[o؅Lrn4^~6u=qE1cBmjsFCΈY.J$Y{̋r!tmBNr4$}ݓo,g 7tW1a3Yf8,+rU,d38))˛ ,EҔsv `=7;Z}NܰC֋*"EACgܺOђ7Vxdv!= h[mwnS!J yv 9[}bG4bƞM =RgS^% 1WIk fcjDJY\)+)Ma@+ Y 6( XS(’+QA9(3ԤOʇW@|n \bQ8bX63E4TTG5]f+`RM$ʧE*fK~c1T.RuҒRezo'oy<7sba`нճ6 ZlʥUT|y8 b CĊ$>BҶ!U#4l8bUU.'%*$˽0㬆zYv%-]9I'F+Xif72{I6'?g`S!}+ 馛&W،O' Wcƍ[m3E1obT܂&=c:SM1S1*?C:H́K^% Lf,/7WżZIvaRƥ&0);+e!#B:.T(q?/^R++xKU'_&Lߔ=|(Οp4BV|tO'ShOQ3hDup/?=#cJ5l8boUb g&II%E D5* w}I$}E=<#`q?C$!aZ^A;Cvm= N4wqF(.lGZYɲP-=t4&CdĹ/8<{j_W'0;ɋ`O^KdvzBȞH Oj?Ep3U~aJLq-/5; P 668,(v0aTim喼 싱pdI^ Ӱn1dxNƋpTacSN9墋.[@>͑2KQUV ;Żi-"?A -6IRÝw޹*ijS#'3Mz[ڍNb^I(JUb#ZQdlOMX{oeN RAgOdn>z9M,*9O4cI'L]y'Kybej?4;|Lo-⛀; vm76J[xw(|ɹ+'Dy?)%{.Mw8ͲG嶽/@b/.ӯX3\^ &(0X,h#4/q:2+^s u؊Ln['bF,I;$wۼP7hVuwY+HSÕls<\+Pk_Flqi G^{b"3?(8^uɕQ[R1,֟aq!$7̒MeiR@M,]WZh f!E;\@KU0٭>y]tP\يL ذaթ&mrQI5JX3E!`4FI%pxB2E(-& ˧su{jIAK Xr-Mm8\*+bZj"\PT8POXJq%X1Sa9K 9z}C @(%=&@ uE!@ C<1| @AQuD} PF (j(O@ @ P@PT2Q@ 0@ !UL@  e@ uE!@ C<1| @AQuD} @GU :fq@ 4xү/\6]@  J?VVz @ @}2@ ZA (B&@`( 5@!@ ZA (B&@`( 0rixH\@ tk &(Ϟ(1e@ #|嗣2JʉG@ @sFqĉ&H&(V(@ AwaX @ :@:|@ m Y4@  AQ9F @ 6AQ݆,@ t@ tnC @ :@PTgpQ@ @PT!@ A (38(@ FmC}/R w}1o D} @ PD=uUW=+ҵ^{ 7H?9^xs=WhKͻk_-E'@ CE@^{^8C|sq 'N[/wuQGM34oYguB$c=vhK᫯zg|_|qgc1Jݢ.zN830CVo.??_~c97޶aFrXVﭷ?裏nosٛ?~I&~\Ek/fi'?[6RN1|馛Ն=C-5b̀/e;?_liYdn/j_OWUqꩧB\O?=ܣ0;o=_~e(,y饗&R7lQ^ C袋2q.5\su?3N/?0V "AT{dM֛Gq'xogkF__}#DnQG￿?y77lwߍ;Y QN~cJ r:VXaI'4k7|sW<, rZeU|Ai{!c+.O?N w3;(+#: . ٥\y,V[m2˴NRtG6h2Rs Pnb2 o|@Q6{'=J,S~-= {qOkd9ԚZ u_}UhghItvj|G ,QN~ 6pL>|67dM" k8zRdz> W_}ֳB,-nʆBuSmDk.TDM2Me]LSO=p(gr_A)-{9bXuUSnIl;㯶ja+bb?0 .4hE(LZ23<IKd~'>8I2 -\\6b0}Ԉb 2 D&H$^Pq=KPI!*?.=ֵTSM5x1 æK< We)D0 U"RpiVR=֚ gq=;*8pS)o*VbjőE&c%:k2%\"$k %#])Bp} 'y)K }iW8R˧c° ]IIT$1?d]SL1vlx]'͡(gL_O,Wg6Ff$+Z wW:%X⠃Zn҄:R,x =HoDsPd{nGM?0[o4!XgR^Ӹ{[=Q ŘPږp\¶pgt$:A 7ܰ9V./E1Kc)niH!'gX,86Ceò+WrM?3-8',EҔsv `T:O7;Z}NܰCVW0_^u|})$[ufq->Ej[jȳS_ jѳ<SKj۷6srLwN8U(&%>;@)dꁱgBO} ̻j@%D!JpLha1|TJYNnNl2LnI'vL޳$DqlQTk3{キ2 眐p4o!Ԓ|.FQ!O߮gxiqV s*9() .|hGL> 攚Dc'eΊƽO&=TC~" INpԹ[!Yslu"-5LU蚏M35's \]'Mм\+ՙdud+?YnIJNF.V ɹNMoC@J[)+/QdOlOFX:!Eʲ86B# K22.gH.ynKrN2^:OFD"3 LUQæl\\bCzHpiA'+**eP;?I,N<Ģpdtol6uraU 4=#)GB=!`P >BҶ!U#4l8bUU.'%*4Dk+'\uVHQmvX)P>@:adnRi$=s[#|g?68CYOlUP@xN28]3Hǹa m($M,WL{YM䣜Hݦ©FsV'}J9>K^% Lf,/7ڼZIް$Sʸ1ege,Dao)ĩbKh.BGYuKWjoJd [Of'קQ? ZjP۪|e Oo5yICx]' H z#8@CsdatN?|/PpR#|UC>_y+Di8zE1[K-TOb\0POXJY.,02Ú^S.t֔l>UDW@ GkϷKt1b@ ~@ Eՙ @ 80@PT_;~@ Eՙ @ 80@PT_;~@ Eՙ @ 80/)ZG߸ @ ZG? cE]p gaҭ\~~a~s!otkmqu䰬[oG|~minosٛǏ ?~I&~\Ek/fi'?6>h;YIY=R , X`@Z>[̭FiE馛 OB뮛g=iV "ATVdM֛'q'xogk}ז'c}7 h2hРkM4Vgnb+^(QX9~rˏQwy+¤NڢA+y䑗Yf*<>z+mC&*1/o;<-mr}1;P0v`KYg\JF)遞W^y%˼V[i;x`,"wor7ߜ&}&mEQzs=iPb)Ϝ{n'a3]ZI0x??u%sk)htI2*믿wy#+":jzO<kA7CkVCat|W_}2y7hb5=}р=5." 7dHCB~W_x| %RٰU(n Y7ܙ\se*>׳IxQ>'U)yכ%Xc SY|(H#UW]5YsI]_jY= k .@b:J ơI&qY? G~t'Ifs k{@W Q[lA&JV4W>so=+u Z:^0!BZU~e]zhVSM5xXxk.X'o^-)0VVjETX .JZ?3nzB])rTԊ#)W%:e]|_veFK|:T㏣dq|\zG8@D{yR+Cvi,)X0BW7zRq'1?dSL1vlSOP3k/U§uxR3Ѵ3?zƔZ)KEdз:,Ar˥t$4x駟n{.^oDsye{nGM?i|3) kiܽmA{b(Ƅڰ挆<\P{̛qWҼ QT T1BV?|{rlᆜs !2aYy啫b&˟q}RBËU"i9; p0@*Λpewi'unءu\+M$Pd/ܺOҾ댔GfxEY-F:l͸{u"-5٩B礷Y)e[ߣ[ݰAII=>)Ng|jJ#&z`٤ShtXA& )JKG,NIdO/sY$ox}dP~B{i'.袼gIDEa,(;g${oe f8\x.V}Z/c,rHSzT뮻Y$^4l.aܧJNbeJ,,Ǒ%$7%W>.sV4MddT1S2!H''vk˥d Ț{d"->Ej[j*5=˛gjO8C><\N@y񹨗 A~$#'^rMRWr2 \3s#EWɎ$;&SY£XɞpCl'tBeql,GZyyȈXy)D9LRjkPN9*d|x JZ/Z:OFD"3LUQ!LTS75ɹĆip"h"#7oH KKғiKoT]C$-#;ba`нճ6 ZlʥUT|y8  C̊$>BҶ!U#4l8bUU.'%*d\K^o%$ !`ݦRԙ(V'y6\(H" c27n 9PED3j!NA,n\:'K.kH]Y6SK v6:TܺB=r:SM1HO:}s`}QfKfXmyn6&KM` SvVvBG.8u2\leP(NxJ-VI|2a~`yEOeU5Gt2l.P(ZjJO>\0POXJee@p=,\b}6p p)-J|Ŀp@ F (Àp@ "*R!@ a: x @ *AQ"r@ F (Àp@ "*R!@ a: x @ *AQ"r@ F (Àp@ "*R!@ a: x @ _Q_)5@ @~M~ʏŵq*@ hTI2EK@ @1D @ AQ2@ Cz @ AQ2@ CKc}%@2@35XL0AqoxEA/@ ?/eQ,UN_m8: @ #0#N4D2yE2EE9@  K*_ne @ c@ n#mȢA @g 1J @6d @3Eu%@Euh@ :s@ m Y4@  AQ9F @ 6mz裏~饗T97xN @ "'\in8@*iW {@[j}]m-: @ /ڼk/!cN8wz:jix:{"{챳@[ _}3cQus 'aJzs駟~s1Dѭ= [׭7òzo{oSN9L3Ƿ~{9G~s?$L?~]v}RO^ln5rf͈[|@`Fcw,Ф,Hzhgk,0xY-ib-H#"tM_|PS$p]w-~UkSO=zxO7tc=_~Y`,p^z饉DT= [Tbìz~q3g[97˓?# .x_wu?8Ky_Gl Du*L6dy(wq2[졵f&-fj_}W[~<7|3p@& kDcu}-"!IϏ<%0{PI?VcTw +0餓n+bP+FyeY9*>裏Jې  v w6B<9OK6wqh;묳DžJR=JyvYfeiuolVQ1gG}vmn&EBp$-g}򫯾 /o],-YmʆBuSmDk.TDM2M ym<m+ Ut*Oa,#UW]5Y6w_m,V~a\ ^%d'8Ȭ<̃od~䧟~j:$B Y̵]=+Gk- IثI-/oK!*?.=SIjc,AMx7?a!'|"MM,f%d }7ACSWo*Vbjő锫yĒX̲.k/2#^r%lvpQ8>ŁS.9?r"N&{SZNpdiO*5aѓH;A&Kk)Ўmz)uzf%J4NO ru&7~Lgy&՚$&NRneз:%X⠃ZnT:RE<@O=WrMd{nGM?0[o-'L&9L Ckcw/rEpО16l9!gDKKP cY?>Ҽ QT T1BV?|{rlᆜs !2aYy啫b&˟q֖@}RBËU"i9; p0@ I䞛pOewi'unءu\;x<= q>EK3R%=d1mp6 Z|ԶԐg &gy=2Զomf~nMwN*Iz:g}R̝ՔFL2UسI>J~f* 0I۷`%8VZJ>*eqrL l7'C6~zO|&y{v7$K;qE=KBw&* EeFY™{uY0t`[-{h6J!*!OQ߮gxiqVs*9() .|hG VH 0h]qo"#h": T'ϤLzD@s;Rn Jd=rJ Z|Զ0UVk>z75p}x<2Rsu4BsQVgKKTg&+9b.4|mC(Y%G2ipt^>]NJ:TH΁naELxjqzR IC'CCXiuf7OlO~$y ΄1TIFC("~|5B W`M7MU>*>K~f2pb)4rx4uz )t"ubYt.">.y͖20^ D\j%vmMJ80얅(\ qdRQA09ҕZ_[:<>2e&S(ΟpeU5Gt2l.;?L).ॲL.x' %`#i0v0"W ٖ[n !2,a-/xQ*,q~)\tEzkء\z'9RRx72Z+H例?p6$K wy窌棧[Lx4oik7:x]'M(;pbrTTTՊhE!>M4Ic9ĞE9fP DWE65}g/sS~*P[%f,i s+od)\W-'f{Ed|yaYnfiO>9wĚ(0EF} '"q>s?=+@bKWPrX.p_8@12 ?6rM3\s I" ȴrK6/ ڼU8@nenթl')A\$ C,*J#6WO:|h%uZYB2/8nzϥ[N}(\ژMFOǰ8N zgfI&24) ¢BitRth [C$ʽw R*Zi54!|dOZ'bD=ҰЊLnX'\W h^Vņ GN O}6m*Tl8bnĺzM>Rdԡ'_]}IG 9bxf?)3 ڄ`F'e^gmd˻S;kXReml|P4Кh)B Ӭ)L h=4UGY۹{!4#KZ5ÞU_gӈys|p0@~ !g#cZ_,Wh_J끬 z-~fԨ66>R( hnMHi 4/:6:YU?:k!o&kG 4'*xBUlț#3N^oVHjg#cS,R8c8-//UሑQbK_ 9Ho#ԷvCP}">pۡ"M1%XXIaίZ=+ . @[C/8*RbpgÕ[ ؄ήC#(T$H!7}Ͽ5?uTÇ_̅oɕ]H4T)X"cڏkA @U ,ԖRF'PCbb(:,W!b \8dhs^ZL^`{WK5mώ-}ˡB#캱_j_cQÊzԵcj ۹ ~]biEo-ܧ1hǻ\MړJ⒳j`UaOCFv+j*_Yg{=PZXSzL$Vبr$&Ș=!y?L/ 7{腞ruq|˭4Vy/W8=:Y<~dLWEN]-)Im~뇿9mU,N]+>(1 ,vUs)j2@?M|8R/ÊXJa/> @|r~GwvVkʄTдF''BX VhuKs}re!r؎?vUk{6]g@4:Y?6U~`N9R =zX16庝~MOuocX-K$0Ws| ?M2t3 ->^vxh/:YQZH~ǖq_vVkct N:>Don!N?u׶wmۺg["1U'Xާ/Wdן3Y+@z@,g}ޜ_ YkEO }¡{8YBoG[.ǿMV %qtgox+kUt$k* 䵎nJW+V 1vu%^N^4RP vk^5ڥ5 HDhxšsp7wyqܦ03Y1g볋ԵRDδAx`ˎD%s( B@@C,sheBDS=!Qb\ $/*J66|y/ H3#P1ܟ^xM:]٣U >LdmO^@PJzқB׶wC/yxn.cRkWnwEx y54Vqg#4c!>)tO\S9u-}JyMsL :0ۑͳN/U[? $\LJQY U凨g?+W~Hk8t򱐗Nt8o+OUW1p*#y'C|Xj2|dKz`wu>֊@Xi|iq9vS R%V8R]Iwdm"p%#4!K}|q{iaiթ}>> @Vjciq50ӏ^ޒk d\v-;fo ? ct8-W+'MN89{ؔp%G6d{1o œ|\"\yyKxui @CN繎8}=OO~e!zm{wx{W_LZ @uG~ZeB<qRHUJ>^V?V aӈYk4SMsܦpzAY5?u|@^O߷*?DRKՂ$TaT s|Oe؈["?zyKs u\v;$ԥjS7"d3~xN(-.'3>y=u՗N@痒V7;/oɵ~]θ ?ugtXgBn/OO*?m8Jqd:>z;y1HrBy}u\:xr-Pg*}''uL?\iCia9ZJ+mJZa#K ~sy/jOIl,Dfp|8R]eZÊWTl^pg%ߝV!D5o(S Rp%F,z;r+v_]XNO_g[x-[r2?\K ?U7:Yܛ-s1o*37 QUܞX O~=J^Rbp 1[«UTήgYhv@UUSsqxhsՂю4o/͓R___G8BOSqhq}v1|yATK:TEGkD Ff%TM5mvsO+m*W"K PJ3hCqUc r#TEgB<([f3PZXe} #4}9r>~>WmKY lU\ħ"bwDV~8uJI=2N^>b.\[J~b@bZ͐O Qvs?F!N*>boM3UK* $2>^~cXٞ$G6: Ьܟke w!wC8֓:UOcR~$TF2 >ω?l>Xm<X߾7[dqB&#y.Qʉ~8\EJm < 8䡴N~v*<`wk|Ty腞e- +Ȅ\|.+R=Ϳ^}\1zo:Vԟoruq])J!7ؕ_CݝhT@rc!C8*lJgLI+m*7 ; 8gsߎl=ll;[ye1@#~LiC*պʓSC$ oͭ+qtj!bxr|?UtRL%p:uĉ|Rj4zz' v8a1,y/l\ @ͮkoҟJĜ*QOING @0黹]Z\NO_G[K1q}Y\ ?Ϭ2yv"u{aEWj~pc>u<ޑ͹V5yj4kEj׸/W3'@wPg*0:! ?Dծ0=~>7 >zX9pؖXvD-+4wV3 ]nj>_ ,s𡑪|yO]-r8Bebr{ܿ?l(-,7y,A ¼Z~P &#u4Z!R=O{J;b) sR8yvDB^aF+Tё>Q@]~ڪÞ'ܐ33I?W~cՇ^pcb8uܒX9% U :PO8r>/? t&+NR[_Z\Ng~qOo:@G 3[;' H.@]~dLx==}98 >I E`Wn<}7\1ziNxmwV@~]nj>@XJH^ǧ}'v+g˓d}OO'I^ynSn0u'\vv!MŐS]c8,@Ngw>毊N_Ss5h;.~8\9|?I,<7޻Z gCi1Qǔ>:ʁ7jg`P+l;{T3@6_TqP5*O>:5bx MK^1J$x%#Oy⿛]LS!U `w{8>_+ĻFj~|W: oM~UUj8u|;wgn'Ns{rRU Z &|MeD9p4'׋STpcTS[a_֣XmD1q1k<&g:txhsAzgd!@>Cc刳%n1JU@g6R!&S{j>Q'( ^7qZij#}l/^v_9_(I?@'޶b!JU!HħѷDc'ݿuxhs]Egm" }Ja"ky#>A\am?\yB凳υKI{~^;<ݿ^C}*ԅx~-LdmO^0z}mi>YÅ)Jmߪ9zڡd3{_M)$\y(0=~>σ>>j&ꪒ~\̑xQuT|vB!>%LBiq9=BքW O2\\J=k*50qCB8uJI_ gvT [bx^d*4vUs?V~&Q >soV3Nz{ѝIδ_I1k[YXhBh!Cj~+1|m{}܂b7m`Wfdm*5_U&s1'D8a8Vn'ۺá{r~wTuPm噅GVe~#K@~V >LBs= tOWWf細xljO߭X5%=MʭF٬x+ڻIdq(|xu+zA5ԆW6[^V#'l.glRLia9Le߯hF}:>RrT&h@B8r>L&}u^h?@rXt*A5<.{vZo6aZ4Ja"k{Z9oo*x8>N^mj!Q۹4kE־v>ڿX>XF hux&B439+j v|C @Ċ '?]ğnUR[zk7.+e돿eYg ׍ЊNτ*oގ6=xB -!E۹XmSg1:[_˖e |8Wq2ϿUJ?vxhsxm{]޻ZJH᫯K agΗB -?͎ 4Jc~a Qwj@ ~PC|{|;Uݯ5Yo\`.ܘLIs]anq94OG { H6Xa#TԹy/P;'?z}Uw7\_37G g Pr^AMKX_[; v |.|\U= =EL/ۊ3 |A؀ 7muT P|xkgC U¶v%_OPOS?a(zP0Vi;? AM@CŽb"ܟ䙋|7ekTm}|0ʾ_!63>R(z4,:S>ԁζom|Hq!쵅kٿsPUK5auWѝN|0u'\1:u\)7 @5+X֎4&4B|ؓ:'_ ?lx{W_xMM=o-|R[zk7xИfw|0e(+n>cq<>b.Mys|p\Wy8 Yo%CTHގX6=?|M!X!8 g>)F$٬8k., X8W-b[qyf!\14LibX}=߿a+V9yv9LֆGL6Fh(<?@|yyCĉB;j+ 4f 1lSw)wO\q([<ʵ$ P) ?@U#ްo`?Dž*e&'5:+Z1İo-?v]4>R8`vvlF]ϖY ?@Nf_乎V>1@kz\7tM_,lj#6Du/UUnHh'Ty8Ty_AL|9N:.ܘϣ#FxVo[g*-륆X5`Ä g>:쭻mb-~ow][: J?v]4>R8`/~oK;߸\>ʖ L5?@F'lq)k;ZGr*-~0!h^mi>G|M]}?_qO;>R(e`sBK׾U b̟U hzJa"k{ZL"~\!Njk&: WZO׾nvYJ 5-yp;}0u'\1GHa*ca߶0Nxs!I4;5 >'*O@bCg[ؽG}1а->f:^$'_+3|_a,k7ƾCoI)I=z`rkj/f_ K#L1PO~=k2İQg҅z; *V:uGqR # -|ol*{:ʁ|Xbu-C'v[W9[v| ?@b3AT _{[=B ;LH=U_zff6O:uW5BCi;Wܟ-+-ށ O(kJpAY 5 ?@B#B 55(C{喃&0sXZ#nJ|(lz|/UO\j1_5AWqdv`vV@~DF'񩵂P#]ma@WG[kB 7=nf-G6r8uG'0s5[F|Gvt=Ui*?<:P AO1u:[mF'lS#q!*O=.lj#6]OT!R!V <)04sߕh=V\8bw94X}!Ua@ǺCݸJ H N,T~14˷<7;v ?4OWn9av02.*KU!?pWsarcA@ ~tNPb˦\׃w{ZkTN]-#FZC۹$<}+Urzң*?\Y,W{tfjФ5)L@=b`#$01h~PZ cFZzoTp`{JT*?[Dr8qe.ڼ#VWG ܰ@GHD~:5ltOR\1,.ah m0ߢV\zvm 4Hhtx [u#xBi09{G_W_B_ޝA 7??*?8uJŠp|p˛˕ KYav;|?+僅P@WGHkV6*R`wu+-,'> :_:qXmRW1AÉ= ?IU?ܻVh X3o\OG[X-1T+m L ? z[Շ 58>R0_o,j m,W{}t8/~7ƽ*d 0,eB#ގlj u=~#⣃Zn/ >^b} ,r=Q!wZ)ngH}Kj)A4bd_ag&VXio+!>qV\ql`S_QF'{D>! ]M31y[w{wT(/2I_o+xOg? ~1GX j;Whj67v~rqxMPX>Ti .fi$4:Y?vxz(-,Bi1g8&)C7;[UL?)C.B#&+^{ib0?[sGoU~84/X%%+0ɗ;11# <ğ|}S9plgw.pJDv\M%mIP *ph.b„su}v`PZL3Prps~)*8HVaπY0]Q.,]ppD@}~*)\ +@xjI v' @8Vx[ RL"(7SHvVW5z[YXM+Uhbz;Nt_۹TѪDnb/&2ǎHoG[9Cé쾐W4X߅߸WppbwO[U^zo[gm)AaS[UדF܇;wś 0'Px3uĉ&1S_W6'ps~IPJta0/zƲYC _kjO{s;a@﹩*Ld̃=++P_G gBr8m&٦r+͓v:Mnϲ؄6(cb ^ "nOܶc;kOL?؇'̕uH%üz6 vnC!( ?Z [aOJLm+KXه~y}G۹☳Ha, OÎf@k(9?YFH I륥4z5{?~e؛3{=?U=1iq C@%i^Sw tym{w$%U~ءCMŠ۩\n%Y;aDΧhbzcfoI& tulO۹~,C5!n/?a?Z[ L~SJG E# |p)[̤gF5w# lJOoJݥP'NT&9 >PiL7]®Ϧ{RNZ#1ĔS=j%\ljOg@ƿȷ ^o;Wr@ ?@ B'yݛDCr<.rL Pi&9=jepᬷ#JGm'=`H mtk-EЄ]V(wmbCsQ~ppƸKPB0Q٪fg?/t`?bv&+{ye 4tB_oF.Ro7<셨:./~$W@OU?l}լY5MjxBk,D ?9vuzg=13w53 Vu:[Qk ݧt(Bs/=$">)[)pp L 󗋩]ݷI퇍10̇N+qG:Mf-KRLafbr_Z5pnjlwA -;./r~&15T*g [Mc6up/FB84|V,<}} 6abI7]g3/(ێ[p06S/.<0Mw'z TyZB szv^OL 0`3 -5õ孶9I? b`_yY?Oqu\^t@ ?@*-/#Y{KkO\0oBjo 10hձZ*oFw~x< ?9c=|;Tv@ ?@y,=Bҭ5dG5Z\/ >4$ᴕ&N`(X*^+ k] z_=ϞllKe;qy~&T@fmXMk67t0hm`Į#|JKt]N+ f8@ }ٸV"}&^QG˿9Ӊ;#(qD}=44ҵoW HoWGx6W"mT .4+ -`jt!KlU ܽ8O>e2 ݷo(}P3 -m&?k+~ﴓAw}]6^{p<~Qz>UY*U]pCE 3 vT l":\Q7>[Ǯv#.u%-dj4\LU?l>;wf;y+;}>FVCm̥k:e3 L߬l!) ?_AȹV/_^븼\r@zbJJ+m| m1s+G{;)J_ɿ'0PPO_ o^[*j7BQk05q=U݉xnַ̖Mj Yٰ9pd&$ǮԿ :V߫mfS|v~xVq#u7l"!_M ,a⽥s(0-$V燁^.^ E6ȕ;i W;gwخf/fzT>.yyvD4qyE=XI!q֚.jκ mGe+Φ}]&4{4{a M ڽjNÛGZǕl{Y9o7 >w@ZxZ6dPCx Im1QU6:,f6dc&Zdߍ]U V6QA<_v\^q @:⦆Jײ7+Ց|,S}: DY_ᇘ.^(pW+-/cԚ.R)n] ";U ?@ )# t(ᇯZBT!ȮYOQ|0c&6/Tʖ#S}>mn!Zu\^t @&Jq3*[mۍHN2T6|%E|La M*n 4vQ8]҅,a"lm] 1?|(zO!ɛ3r~_6@:֬Ĩ5eq]ڥlx5%W2'm~WkO24:M,fgNA覒~?c&R8Ovhgu/t @|ІJ,a"l>;w&8y+;﯁>Ff)SoW ݧp$ c Mn:F{_Ӆnx܏u(p8vgq0'm~@.WuG5Cڤ5J[N=~ Mn&V/7W"ahOv8@Q1%멊߸ND=K&Ʉ.w##&t>z6835TffW+-CC(]ZͣnWD^"~6V2H0C9 Dܰh6 ?!x=OaD9le xXS `tVa_|5lUS.]L*CS|X?@D@@,duHxkA6dᇻIm":?þ ؍]8s&_3@+fb՚x]F7wčl7u\^4 PS4;% @9_8@]Ǻs.K 'li};tk-E=| -J":?̴Y`Fv$]YogGLce q?Q=1=PW"57xӄ|%lUS.](Q-Tpan?$˾odt~PBr:U phO 7LjXĻh7p\hU }-ז|*>9_1 4oi}ۤJ:?$|.І(w7[vCa7].;]A.e;JH0C9)}aR j^M>Υ[k L3 EV6@0X7֒;粑M ╎Fؑz"tXI!1w'zuZP69ZҳtB3K{m%^H;ٙϒ|o:3'7a7r~v,aDxoz=V5J-vnf.6[6@~.ƨ6FԾBe;+/: min?rE?25T5 &;ޮcB+3wo3Z-vҭTAr=΢t C p0f+B |(PУ A; Z=1=&+: 4phf~(XPogGw2o^KQJ~ߝ6LB{R9ɃZ$s/=WGtv{25TNUU~z_"!llut(XNY&oVR]vf ˪c`3K9F/fH\z ~ b {#Y=q&UGtB" %Vxhd>åkZ^l+1͖k+[鏓_uֺ>]1uT]7L &򗋩s)DOZ-=t "Vׇ@g;)J_fo(Qsy~}o\{Yl!\r?65T*g i ̎kbv!{|glNP+,1{pznZ#|(uwv'_m6{p]<1E=q=U{fD'28Zٯ!cz:Lt{-lVu~ƨ5}gwX 6el{}(5Hi$KTOXo{ ?ܸ- .,D0 wl85T6+=VW+~DH =Rm{ Pfnf6;q%YNj]&\w@4d -=HP 'Obu#8eBYMu/ O37?h&Vv~hk+[Y4י{}j B.p1.] zT ߝ?y>;oߠOuZ(ߣ:;fC}xcCB)uwd~ݛ" s/E!B5kO@tSCkw  ޜ@DO cngw#HM 3f`G(I2ɃdBT_q~'ݬ|$gq*fXڝcdB"&vՑ|,^B)x.f5= 'COaQ$lҸ`oܹdlDw!Be;`5{be4VJ=@\@2VuhpZBA'JVJ4r~ϴA`=MgfhT!yKXިf7ֲS~]Sߝ!ju4('$55T% @Mg?/I@4^kaH }LXω^9cv|1Flc(uw$p#OR/?9Y=lֽ〭L&~ Τ6ٿjV٬B"٥&"u}t~x>_&+)Jf`OtpBe;*~,07$C!;ϸӕpZc%@CL 6]LUvvvD?VxJsX :?9vuкɛZ*ld&Vgu(FgA6{w3I?Tt ~νdoXiޅhaJ,abquK"#|͆ImXt}g!Fg53 7ձtZ3KP?rk\ z6νձH>f\jpQ@fm*J"l\]~~w'Z-1"mQ֭ҭ  Xi!~9RGHz 93w7S~I:X| 낫 C80'd oWlߣW~olquˤ&kt\NV͗e+ (fn>5Pَr;(\[٪R>ޕ{'.mJu2Oc|,XU@|DvՑ|,^wMjB!k6Hs8SLBw+Si?Il7Gkn:WT>ƪcz775T_N|?~ V룯7LhB x{;?,ogn(=&T$fb2xVj폳RwGuw3|^v泵daTu4Rb~ ajt!KO?}] z;;tVt*8s(i߿6D|R4ce6Fu~[bUWfdB@2Є&`w}zg=q/f҉`$aS4a;Ig?^wyMX~νIju4DB*/Sտ/ ?o\`ӈdm﭅)JsV(@r3 -ARic)\I2yν\!qo3aNLgc|̸d?35T*g as@3G:=o6Ljdsj9d3idYBҫe=†GBׂ|+C.wDžVk4 ozp@~*tx@LW VuJ ?\s&J V(@(2{w?"m?շJ<Ȯ${|y wc=juTDzKPHSCI#Y{K vhxᇰ|i}ۤFX2th۷RcNUhqa_.~0I?'=օ߹Ykzut*3. h @a=XL!9ucWMjD:?cׇɛIPaehX܈z`#{me+{/Lp~L^zn~w3;+Jc;"I.ٌ,;'tѨlhnB)t~H߻Nƪ~7ƨã׃QF޿v_wG6#>Ǖla s|b›*]˾,|ņgx'j]N݋)s}aSW{ִ p`܃+۵ *;vdf~ݱ?n~=|^vB~]NWJ#%4zb4{ ߯#{Xğ﬛bΎP٬fo|thJ5fnnպ$PSV%?1F;6&4!^8g7*۵Nf|Ow/ L ՞,Q٪ @!t5w^B<54]Gi+fbyaBǕ$νܮF5zʝBn Xi$ :S'oVfd??.=40w/ަ̓}~| +([єa4X&ݑ]u;PÙ֒kTJ66%4R9Kxxo2uZvw};Er~OZ" cP,`8ɃJc! lbeSx%c Kڛд+? @tf{҇l=!ޮwSߋ<@c@l3i:bg=gsčfnaZj~>G`e@+z!19_1OhmHo :? xׇ]$u6e[T`ڳ:.\[^˃$N{gsx s/;Zl%WJG65T{H0C'|;Z0YZ66ߍ4oGZ;pqAzB~xfr -X_ӿ9L^?q%[ɏ_Iut$4+# .Z3u=vE7CKs6:\G_oԮ+ckwzF?XM:폿Cbٯ6Yiǫy+Cx*%4"lv&G?yݽխhZC莑kKL;aLT߳!|*x_<{_߹^ OWJ#d"~G7+6׽hog7X^l7+Ye+Ӵ6],| ?sw3;y.`utRvBh)D9{6z:w-])pE}Q 33V @S(z~^['L3;s-Tk+ ;_UJ&vLh9SCө'ɟDc?$ڨޒb#-7?j69dSb>&@PX?[cZިւ):/uwd~ݛG&nպ=\X~^Fq vKhISC YKm=/z;;ͩEbɛzJ`4xB5@s>77ɃdBTfnf|$hgq:V$~ZV=q1U֞2Ά?C w"u~8s(h D!3=SA]ͯ'd'v6jJ!BWXiމ`τ65T*g [ٹm~=LuW~XW@\IU? |mwHg@,~aYѮ|Y([yMmT_gQF޿~_wG Nmv泵"J>TJvQToL=j]nH]M835T{j8k |le#Mg9Uv9t[;U- HCh SCe$Kxoa ^>Vjm~xX/n%y1a4z;d?^*ׯVJ|,Xn@*@ۨ F=B;^~ >!tTJDc߀WZyjo f4 5L ՞F;% @ ]jVoBgt|э{I}&_\Zƴ)b9Q+3@?my$Kxsv_IwZw׷u8h%!@ urZҳ}bŠh)3 wd>~U+5FhKxx=vudW?Hd"7,Xm-iə| VjSXZn|Xwmc}]qs6k!g{9+ e͘}/ձD>MpЄW|1Ufj[o00yJ>V@K6;ɑXi$ ( (g aٹm~hȳ4sK֢@04U^pL|-?|ҵZtc+?V+t=ٶk1g4Wh]/Pwy[[tut*3N?Ь~@=1=&+Q_]?0ö] GBt@[w=&|>|3L 6NUU~z%U;dčHNj\٬ւA _^fXihz;P@IUQ"ln%/z;;Ru|åkl(~XXu4kN3Jvhj4\LUkj1;4Kzg=Eu<X!{*l$ SCr06Zb?n!ϲ)pPQ|%問qw1*!|:VȇF@~إzz!1y25p>٥mBŅkC(iWc|,8@~؛,a"t8H=jS!tA|ϏҜ5:N(z!|:V |mM` @$6W~ҝvvDuw}c'#u~,pׇf5wDŽ;?:VRûcƪc|,~g~HH9ƒ#Ö[; ><"YZ.ZKQz E+8SձҴi9Ff󕦛Z10+B:?ZJҭv^U9J]a"f`wmlbǺ 0B7VCѺ>\ݸZT _F`F zb4+#l*o= o%:?C\l~Mo3ձ`>fL/?4@#Yě @ ?|Fˬlyt:?L3zL0Dr:b @)# m6|#JM%(JF3_W .P+2j^e @M fO;l5[\*\vuD0ÖX#]*yZҳt]c ?D^|̘Iljt!KlUo+}#V燁#<7+)ʮn@ ձϳ | $$pfj!t~8;A̳K!VhѮ,n LЂ; ??u&f jjȿROO8( zg=J#MBׇQjOŏ4B'ߦ(=;5TqQ:.//cw<4^)88SC' @ ggKs08Zᣯ7j.xe@?J+(sHձb"p7멊 ~Н"Xf6BbA@.ZxLyjGM B뇑,a⽥@4sa!R``>۷R_+О bD"zXwZa}I-ogwɾ j)JNK 컍I'3Bϡf31x@.+V )*]˾,|ဘhs10pᇹ{;)J_ɯiwhoS@|i W~ҝvvD|dţ] ?f5T!TvW hj4Ng?_DoWG[w)pn' ka~(҅,aU-\╈!t$h1Ά{Xqzk`ڝ ~@Lެ&$:?9}Mst!hd燰n&+)J/cxDআJ,a"t8;w0B!8Ѱ㾸 t9_ˮ~&P@\IUQGKi6GC#>}oa>'Lө X])t&?ɛUMQzx*&U@S[}msn#JG @&8CDsx@*M/S~z@]-ao^v~XZ&+)J_+x&75T5 67+kAeZs7NߓB!V']N?zba?_mxx t~8iS ~S:?JvWg7m(}&_\N?R9KX\ox"v" s@og >.ZKQz^'\N ?zJa63 V+†"M!UJcFeW+멊߸Y(G:k#t[~8?pz\'pfjte @*-/#Y{Ka6?"XlE3HqZ= W)[-J^>VmXRt}V5vٰˮN`/ZPi!D[ IPAwb bw~nL'k`ׄZPZ8|!a8`ogzZr_]?]"&PmfjT Bs ^9Vha~bwK֢cZ[p@ct\^ǹ|\Ͽ?o%e> AE ІTfDߝV+ַ::?]>Oo^K1klڕsG'R"(/f3Ìu#*?ܳz\%&Jj_l闔?Nla @uJ8p4SwU,}0!F'o1;>]]ϟQW\[R-UwZlOƨ؞AV/իwgßLD#UȵIUI=v-94 [a1Cb  W4ٶ+U~ȱM31/s =j.`(3UW;,ƯŶ?a!`{˞z_ @lOnh ;o˶M?|~~6y1K?io_>`O\n=ϕ1W ū;,p9q  iPcw ~ٶ)궿*?.Co.6JdH1!`ġzzkigSgIӗg }!UX4E *٩Hc. F Pmm,i%8H ~[wz֮.Hۓ3PLd,Cڗ:UxnKf;40ׄ4Ա~i3;X!nDnhnuP ?qUoȶ-s|:lbZ!UXʘ؆]4b ;T%x A \75m^b9'/e"1gٰBzk*L;[C50w>@Jbm$^Y1N j,mpDqx]mgێ[ a\O0EU b ;B)\+W5 ,#VUQ?.|rUXHV_fwNL_ SYnZ"SNףá}E.^[ `(̭X=߾yvR( rH\~vbqYH [|HMisl1=Zw[y$1&O,:gۆf ?,v';nod [\ᙹ J@l#MUꞍm{+ÖUg?ġ bfT5 ܒG^Ǘ|նI<ŸL^{_SH?~ԡphrHKlBRСc[Z yt{n ;6$CtV\uݭ^͝օaaΎu[9z! leE B()1ws߻B5=ju$}T =>uj:U}x:~k:Ln%=j_bR;uӟ;1})Oe{? [&?gَk?>ut=>ۻ`r!Wb|OgyT!UzA<3;X׮(h>mڻ\}jc'.^oHAT)w~1~gS-ݣSy!^|T= 9'WzF^ȶ=o3 ^?P!Ms ,[. vy@6s CWiMA]sßW粼nOӗ ׫zUܻ$!S֪;HKѩKYև}1{E A̫?w@~ G^ wwW~{u?uq6WOܮn"b,U mG^: TzRÏ~1~wENȥWzkC#CbBugl} lj_-օk xn A@S @RO pD)0XU𗿹_M ;>]ߟ1OV`1;;Har&3ZWe۶ph"}=:;X> !@.dz7?Z5ӟ oZJlhTQOc8VwJ-<_aK+AOmj p=gebdžlȱ JG._ ae#VH2^"B/f~|Hl񭷦1 9c;V߫\gl}Y (Ŷ=sv/\Pl*?PwZ_W;o CW[}g.?l+q-93\Yq;>?Vup%~Yݡk;&gou}‚~n"nKE >L] ߝǰM6h]Clc_v >Ol ֆr,l!}{&[_Cwv,Kaյţ+76xM.P*?lyZ/cm{zӗT7;o< *W}IU$R5:ܻ<h;\nlذc01u) q>9v]_',J zt2Dۻ&Φ~?Uixޫgg?=Sazq3*վpW=^d@ U`em#Vc{|ąZuV׾Na8<9>}N囤sUᛙ*)1lhNJ-p<_!Ѐgl} Q}^XN^U(XbslB`u6T~`E^Taϱ Yzk®;jSbU=PVmX=#UcZh!nVTa*S`dH1*/Ǘmghm=>LFvM-|HR\R Q;]h^U:PBxP|y^=wL;ą:VLhi2;#;64e凉Kaaϱ Ͱ;)Y/p!&u |xFitF[Fvժ>, p<75]!N^:,-Kv h{įnj 4lƊN] ?cKY|ᇡ& =\m]lϖ*w Qa4RZYt:3>lpwW;y1́9`Z;R4#eO >4}Eژ4zHGR >$c_Tv+V$@ٻ< /nД&QizK d|ᇁ;r =fsYl=V"@C @3a2!д [krf6̇#m>qT>o8h_gg=j7\B=[ͯTVߺ[W Ĕ|w2[<])0yRٌ= 4@hÂ-c7gBlc'/: 4z<_Շ |H݇ _顧ZkP)qxR}']*MarZ#/nGe7;yĄoj|ᇁ; _)<Ó?9W [Ď a`S{N؞Y?4>#;m2 ;Bwt* x1c"L޿2̛dtz/0tgGj̇ v+ F%@Sٻ<_k]XuZx3̞c AT :~f >Ծ%}c[xualدŶT ?tO6ᮽmh9͸S)&Ƨ B+S!UH|w!BcovȡiTlCbq(Jn"Мy:_mݙWTT'˒')JE tڵ3캻sEt\R` w^ֱLdI"K{V_7pk/>ThIO;T~iV/{dwZDNvnjvymJ@˧H'KK:|pK |xΎCoXZtxL^zUQ"(c;RTG-E&@S @kx1Ǩ rt&߇|VqHҪ /jwU ~|wi:Qrؿ5Y&I˧á*ܪv;;m[ =sb_')ksguwg\' i ZQ#ۧ1+EZmpdl؆57⒍$4q< × g]/ C~#J+ lsF]q^O\*(ԣE_l}ݬzI rMRrRz,}h){SԡUG +Ldd4;6 {LJ 7ieZF6L҄C G 0YÕBwz}kkUZo,k/U Xnc69R\%˿Qe MZW A|p[ӵooD 2ӱ(z'/lZÕrU.Gƶ0 6!x`9?Вn+b 6p 9:94N AI__̓37Ͽh$ ǭkI 6/ zcBWA1*4vT APo3۬]UGk-NOZÝB Ε!il}-&B)(ɟkJY{,1HcQD0. *>/FȫՑh6幽ʻTfy[o\˿OZh{V{t 9v5]c6oK3a,}mW X^mOׯ 'hy{˞ތC ;,ߍK6^3 Շ7 ۊU "U3xT&X >tn|CQm"/Th7cjƱOT OJu&6?@x/qh7a(nCՑ&&rt2i86'6w=wbxp… Fߞ)`1tp*|໓ zc[ᶯ{Ur_{{!GW$?+UĦ!K&V&mqdwc[5] Ak!_ /ȱ Wo =ҩ'VÕz2UUuZ֮p!rl΅ c[%s*/ @;lX,CmCaLJ73P@ T"oc{CZy:WH9^M!T~,\a.12Q`&ru4^DB[jH~|'_ml}ɋ zHC׽.\!tC ApIQυ z|Ppi5P3s 2;ߏ?KS"{D̛C2 F2FτiC -yrXM ṁ /pBGJ}p W P|a# -ؗuJo~~CmvB3 v{ML] 2O&y2Bu"[8LC XXT^Bc.X2ܢ"&ammm| ?9W Aԩ3M}rc'V& =˹+"zgG,>^? V O+VLddҊiՇ7)\hNBXiWY;K3P-@H 1+T>~ @:; g}{iNž [Z"0/>N$xt~͇ c%7%UG<S5 @Z/A]sU!kQR*,z|Mՙ0[Ӆ4A%*H=i_oSkQgWlOֻCBd/G'g/rJ]v|pۗ&ҩ0tpjkÕZ13bA cXf;ף@)UޫH$E_~^ w? w'V]wwB׳sdq#[WUW;y1t6A:sG4 1iZ/0?cjSH*2pp-'Karf(M~ Hc9}RԥCsAuŘhobdž9Rg\@QT|[dK Aǝ 4&p4ok]-%"20| Σj:8U HGhN\lJ!ևWX>9 =,\Zá Fu*~gDN > ;mo >သ [Bne:r(rŕcž @#иrtJyi/vonYSЈCНeһ6T^w)>~h\9:wbW?YB ]aev9Q0P ΆZӽT9HDZÕR_Ol }^n/}SauWP$Crfgg@W_(b[=v ;;XQ+  h÷L ̄likNg]~*  OO'r}tv@WTkM/6Gb+ϵgvQr4G'c'.9B ?yA&_iɋ3/;VLAj1*?  >$=JY@*U_ 2/[_lkW7v([H@SщI[v|xU1z rݥJ'}u?4RV7{>㱥'OA[}c;%V~Duօ-ݫ })0Dvȡ9ZXVʺ:Jn|JG p&c۝`j*մ"z%G_HXO;]j ksguwg(:=>3UKX.fy|]ܷ6z\`]q&}K)U_frkݱ=ۄJА&ruol o~~Cmr:0MfO F]p$WduOOl k-g@k~XaJ--bk[M2ˑ0;X%ib/vonY6+VT}DuJRb S劫mc tdyM`*՞؞xliYbۜUML!g㶥Đ# PNƫ*?܊~3lW!m>*Aɧ'Sd*Nt:DzUخj-@k~XJ*M/'b{<|{b{ADNVbfQȡxl&&Go ? q>90zPn/U ?IRrl6.?[Ӏ"7XY4J MzA8K4ڹ3z|&<'V_30pG{η~ha*կv8۱$7B~8íSa-U:3,ۛs:}c[g57=t_U b v*ղ5 ?,AR؎ǖR>&"2#[e۞c ATtVJ_9O  8[4F[{ޤK'HJ*e&b{R*Ђ*c{>㱥֞msYGc;"n"K'S*?,֡Lᇎ=?υN*AA\[L:{dkע97A ?-T~9Jli=GLBrtrTaqR_nm:CgAC חC=z\`F[[X%2sSU6pAT7!ݱ DLp_X7V=|SkϿYJi"τ؜#srR=uR#%v @t*~g @k~Zz۱J< n3B&fParMZrd4I|k KwnX A 8JoWi3YT#캻~ƬdUh1@S*U_׌HattzٗFrrU@֤4;[v|xxx|&ҩ0tpeC9'833L1/tR(g)yZ4Jc6#F >Ƴt2)iI}U^ Ao =}"bϱ D6Pän/e'إcpoǑ]$KpORI:VTwZl3o˫}i}NSy}k;~wxx{k:t* qB}&/ӵ J=sΎ6u? Tռ.lliufjA`pwmM^tB$KT͠W_Xmo-R$;ϼyD+H \KӤOeB,9 wܼ~DC(Rzlv<\^6o5~~zMxabdžjZf `iƳuòѭ8֮ZH AԩAQ ?j(goe/{d"6T4h @!*/Vm*~?cHMGvlMĀ+fv\/9 ?̾y*?,OZ?U 7Z: 6 ԥAzP4ι@}kK0J^m&~p՚f1ܷ6MN=LLZ\UU_S"`bwd0QM5+c<>: ݵZbJjOl_pl޳Ol ="_z8T"~m0cCx*2+B Y9'7&线ԚZ"݃*Tg*-&ɟ>sg),2fbRT{}*4?`Y*c{>ˉ؞msV3UO Gvl v߻&C\+Ugfk64\{0t*ݏMQedK{}ՅW^^zK:w-sb@~T~ynTrlf [;wև]ww֥L|ŕ AZ ~L6ŤzUc}QZP x|&ҩ0tpϷ L >L.g#oPOG}*4?.Jc{-kyӃGֆr!P\@<]!ۑxAe\} ?\[r4ZfR.lU rsB-s IBB5oUΨtO \ϸRZ܄,JjOlv8bkk_mdkWr7a+*?\m>VLz4AdE#y 7X/4I?U)M!/ޔޚ/MoDPn8Jg<_}HԻ2K܄[VTDlǶ9}"pCs%=\MBPxY:QrBV C7vuv^ז&χ A_9qQEt=8[χrC~T~9ئJ12,t~= 1ahQc9:~~ؾq勦N~n/nb؅B9C,׫,u8_v%ϻ47Jc{-c#smN^=|!dz W *ݱ=vK4}x\orbTՇkI!>: 6 UCxTBkݣp(yw|(`% 2 м_QT{b{>ñ'mO[YۃJ.\''j)1JlBP:R}R!>JO ?BwaC*0x!xlӟXW~^`@~jJUb;.?<[F֥}/$\(jaڎF A8;hf\} ?xTJW tG{/U$I -}ͥ?Y㖹@~7W!==.?Q+OB[UsZ!xާĐ3&v4G'c'.+\*-dzI!|nm8cCC)PN=f4r70|R*ФE*/ǖf kH}Ά]0R27xakWjMlf|wBi\ry'겍;7]ww|]T|b4h=#Aať;8U+]l0r<2][b{T A&ru4.Q3v"caceMpݵ{RƗ͍wvJJ|:LVǫ7a>'V1=Afd@CȖU< I!onY: 6 ! RYzz ~HR^uq~|F08^{h}m|҃ x|tR˧]=!=pgǡ,b E+dy_hg>YD*񙺽OQmY.xTh."JjZa>lVpddžZ(s9WiK+%ZzX igCuf~5Pb$^*49u6>ۚv=o|j{!IpпL;y._4=Т˼C\u.ƥ;7vwc PC=֮τO҃׾rUV*0ģ|(hlG h9:YȌÕCiq/^wbxp![R%tQ =W/?@ (UKOѶ4>FkZf=uy`S{ ĖxVK^8kU̐gdkWܲ,C*?y&ȧ7Z!0/-nϭ-|bTOꬹεt(n4~=pvE\R-ǗlO <3[ ,mύ;=hK+7V.s>4/Єt${z"Qr 3/iÕC9M@rQzVKw&ّA2z|&[_CZi?WsoMV*ƻ`MAC@l-U_Q XhD}oWKN~!c _o+?iF[E4 MT+ݳ^&vl&VRiSVֶ5g yt/Cq Rz!\Vi2CC)aW6)*- Rn/9#a>u΂dH!N-8ѻvv -Jҕ'r{y /p#Og+~_CHU *naa~BC+U~ڕ!-+5$VXNp!B>7>& Ak`>qsbbm=YNZɸRZvu4>hBJ5d}oɋR) gbݝK#=LPq%LfFYzXomΕ,C֑cj_\U?\iΎ0cCBh`%'d&ZxE"r-\*Rpddž;W - 3^{S Sj[V`U yT-~7p+D  }JBƳtR}nD{^b%B[  IF?rVH ,RokNW@~&RTex޿R\J\zOl\sB{tcZa 80_c> '0قL ~l|XtGtԛ׫C >|`v-@徵Z~^k&6V!5v@>Z53fMU!I!k7! ߗJ{V7=kC ?@(UގzT9z![_ٱ,%S"=ma2C] /O΅C-8 ktNҢ ՌTDƅ&2O&\A [‡:Jڶ:+u[om ?48hE؈Ѿlcu[{`]|#*DT dT(w2|ṷk/ď|TBƳuB ϥC Nm\םSXMu]H[3)d4&!, Y]-MH`' $@&JAWATl^P/.y],jjgMHX=KbMr%C?~j=νXu3~3Y^w߫1D&5 1FHL#gNz4?*2)¶67' !;&ᶜ`O܌.w[MڰMj ?hW2, A|֠˽7w*L 1fWd(b4?~X!æ.S?>hFc\D./3+f-Z$"*@T?Sq״r1;W$2!U&_mc<*"FՇ^F_w¶M^o1Sӱ9B*ML^Z6ٳ7~N~l曉I 1C>&i~Wl .p4yA-C|-kh(5 x"_QpG`W<6dSm.K;4G2dyU.qm"QwxC28ڀhG/vǕDLc> v[|M/JaSno4#{^^׭ Y?@ ~b(5Ț=L&_U;j!\Tƾ~|ЌGluG1f/.Lӌܜj`ȭ *$7?yܾ.:{;c>8oq/-s-*q|-~"S(W}(nuԫ?n/˚U$27E~9NR_m>4xf/>8WeQCMqn Un8cnIw+f-McF%&C!Lj1lNh)7g[4Ү 7ogA|a9{ |c;Y# 4Leq 1uNg:!/27֠˽ױiE٨DgomB/ f?SL`D)˾U7ˎmqeޮ_KsɏU+s$\!8Q?TIGJݫ* J "=h|Huw#F>hY<U,p;[K=~e(lN]]U=..겧n~sW [W-#hU9vNpAMζv AHhHLL KY3Y$zæ?ʵtl͇oQ `]_g6u=L9{h^Z#PǰG$9ƿ7 HXg3QO&B4  Dj1n4,{E5{T#dA3nl"O2f ݦlZKir:3G5:Iju,'!goKA^W F?1Qz٧D® E9"'ǣ3u0EǶ潗ӦU[G'_;>[|Y\ FਚF'IZ+!s<E6ϘMh6C >!󾊛m̿be4;, C;=cu'vqY݇o.{3{\Ѡ+>圬,T ~ $ld.6{!MBPb;eǥfY~PsۻR]UaV݉>/|y`]_g_<=f-GBU9"յ:%,!7k::y>æ=/|H _MDUvUCSq|kl"cO2fƎlƂU͗Uc Vi qs"wsչ((_"ʿ9tR3apBϩivQAs}y—$02yiY}  t^NˍfAۣf?oe{AF2^HVj}Q!|̃M\\JDBˤfT ٙ5RXk7kQ.y 'Yd3MSpۜ}sR g:_0 AW\ĀWJ . ?|$uއMy3.R3}x0N+&"ʚ wæ?Z|U eiN~gS?>h~13 |JMfDU$Uy*yaC\|L7C :gLo>8iQpPj1n4,uAT{cPO,T^?&馁Ǟ}kWьgVk VGR2N?}hIx0RӰ!sUOZi2,Ȝwk/ RVQ\>C(d,i]T Yܼ?䂪KR`y;i V\m*bH4T&$>8o_xȍ觮N:$WA$tWmn{AH)- ^Ι4UdqJfvB\ʪ_:3M3qqɯC_g?6Ǭ=ћOE|U>bhNdTԪ@ՇT|"kXׂ!gz H ({)~⏓kdc C0W}JPA{U3Li|ȽPF0(d'?^,yl۳l_c'3ڀyK ;9ާ' h6Ba 7{kLL^ǦAquW2w~id >=ZH*}wi n8N~Y{ʏͯ_IⵗV} ^O1@ U5:IHw;&;Ͽ˽΍\ An(5 7~Q,@ת?ZdGC>yL_;}펿Ykns{O272!94 Su4+'DA 2|Ky|z|O{eԟ2g(Un"8 5ه>'JYTj/L3|9DˌymLWlCY7l2b8ڨdKrBjJ7S}q >O>~?ۈd]3j4D^w\ƹRM74;%J_Tp?z(5UOMWr3rTrS~20|O l /. ! rfYp bƸ}8g\,vKeY4M>hɢr 9C-ƛEhTOMsW&x}n"r{̅ϹsAS~"ixޮuy]% p+~Y4%Z4a>, ^Q\]8j N]r#ܔ$'|7$!ڛO&ٛrn7COVMg?C\5@&m0J QV邖,O^Z6n p'?^|7DtuU;F*~DӍ$*?&pSXhޟ}?Cb! $|4ԯv̑͋!DdcdRϱݾe2]\:e[U3] +é~ ,,rQ$'o8#GII>|q3u0m: AH@j3!Ux|湂-DGvϨvx/7E {xݏ^ē];4( 7;G6e߿:`A6>tU+WgTqg6CSZ#~ư v >Oj?{k^]!*(plwvUn!D 5ڇ}{ׯ(?l߼gvO{{}AF^y;#tUۨ p ed1'  5d6nH=yi e6wnO Y{6a~12cf^0?"C/kw40V+3Q ?h R34 W'o>=>lB*f6U9yc%T~BiÈfzX\ u[U3貇x8i{9m<֠~q7Ux C7 lȜ `|c2wwUB 9*p[+iv&7PaŇי2>iow^ف=SY\sϚó1٨RL#wHaRq$iJb;Fr}^yw_{6 AHDwyBH.Biۇ#}|aVHg1K?ɘ{>rՇV1$uZ}I!.jUD=*?D-չPw$#!90ޭ#7͸=;\ @dR3 @HR3 >5e pܰM1fA3ڀyv P# HN1֩Z-;wh|p|׽(~Wk٪T$"gҶ!] PɺR g:{/ͽ/0hg&qAwYFPuNڰH|!t}N_^1m ~$ U&5.(7R/h(u=ћO_*qAV} ^3PUN4wPSA6@4>go iB͵֗!9#kL/I4r\q=@8e4;,s ˢ/ledw^[avqM;> VdN)P]Ha#+U%{Mcwȵ+I!T!,5ڇw5|@uYOo t_d{LY|k̼6`^& POfD$XM8lPU i${+}ԽYx5|m~~W,떫dK;4GKmqR.{9mp3y,hQVQ3$0RooJn,l=`'?-Ϧ;kOw_~׼ ?\\aAsKVn;CMr{# KB-O>/~6a&Hj1nF4,JG,. 峋k~8}kuN $v!]W1;>wTU)F$$ Aѧ9h[ՀBiy¡L#*xu>D 8EΎd:Kt?,ZIy raѩI)c|n?~'YCrr@gQ ʇW )Rύ!/?m[ߐ\B6K~iÐf}ZC>Δ9.Wcy8B ;ڈo`aɵ*?f%QUimE6VdߪY"!qC"CPixaRϑ]~ ԗaٕ]4=0?~_{~%fGUmUjJ_2590n|⡴|ה&1q~Nf0>mU_,rҽ8(߷:^1 wp&ӊ V+363oۑvRk|aϹWaSnך`SA!8Re3݊?>]M?@$?d'f'^1Yp|s?xR`91c&r (ՌF wc=~pC$O̯^5߭o$m~0R]};/s%PY\kי2ǿez;/tsF9o`0,`'F'"nfa td3M3zssj[Aͪ]DA*8nվf9v*xuWi {,J>7 A盽8L@?:t~m!NeW3MSnH Zy14Iv>`?["ϑp~v)5(ڇ!>KҕU3|d*k c"i!dڬvWD*5DPԮa2|?4SӦD#bF؅֓Jn4ӗWJh|Pl2 hsuNY:dTċ=bN⡴-C?h@?S-BoJ/όP@N> T}F'2۰`״6IrͰ|(gcl3)?u2IJ'5O8RfY.#5;WnGf-|L5}5w)]Yeۀ )[QQ:riUq`أn|ve;o>=>b@x?;WdtEԏdkov# tdS*x5F}hjUk8~~|nl dc3!`R3}8H<0.0|Er֠~3RHFw29( W],_Q )*Pha"\y|BL?@8?;Sdu~ꀹW̕ _J}꯭ffmC2Uo5 7P2|I%:-G@Շ! fo*ʗ&GAئL#oFy :S&\9=f-ey{W}Bջz_,6Z T^P]0 ^QK*]?HаG*]Y%@BnOBZ8U D[2:^1~%לیߌ_\27!'%Y1ShlGS<j<|,2Y8 {o8jݗ1>iNڼBw,]? %ыt[فD٭QyY>xZG|6 NAnG]\#]_+'Aǭ@x?[+eb_{,ɏUbƇz"Ypr,@v}STi:o(5]vZScUF_~?,xԌ}QJU'hrx!{|H&Fe(+Єdc dg|'/&Kqڋ_ + Z?8  7Hs.i[M>~x,6Npe.A$ᇇC窕[N>$L?\5q q |}Otz̯_I{.3GRSRF] >(.7[̨t%gփC?e|{l#@DXunp*n >&OAI2'+VlInXaN 5˶E})=;/todX1# w4+Y7a1^f0b+;_n"G 1fDZ %m^ E:{?[o.ˡӕ2۽g^#A:G V~Cˍa^SD>$<*~IiNWq dόBVbm2A#e=Ы%qe rJ6 |j۔IVaFl{_ޯ}5&7pR1,r }lN982={&mӶs .o';egJ `+!cGݛ#fUQHMW<^a$?8Gze^YqRk|ZM99o"|΍ҕU?bi(Vw( -jcVm|RP$9-EߌVcU-G_|叶 ްme `Z/gFmsݸkҾ!U8+T(*1pڶ2o[#@ء"Jf…&o[V*S~BVV q!W^P]HIaY;'wmԎiٶa 2u˜wu'MkwLM3jχ9k+ Mۦzaܶ:G אEg/WsfdmÅY_|% mܜ_57C >c\ @Z՗Zbao>@+K~\-vҶ*z"(hea]өc[aAF xPj2nփT{ֈmļF'FKtA&$4yi=L_^CA>&ZOB%٬FP"Iٖ3eC'QRl)L2I8RX~+2FhAOeS0*j=G;V}_M/n{̥7ͩr%&D7l[#LjۇFi7퐅I @՘OkFX?DCnRPYnQtlg$"C  >}{LP+Rq5{=yM^mYB@{#UM? f}&T5 Y/#!NB;UD>8k̶O1Z9_Uw;6ᇰc\E9'+= y.vҶT[& xsKٽkr[T(/J!<|hꝯM{ UR 7|p=VE@An4UsM7%0}y%y&gJG*ySUU N]]5-,T\; T}*5]g$b!c۔=f1*4:9]?M?{ӟn9| 0"٩>Uo~aeJWV=Ʋ+߻zv5ىN& %Ft%kʌD =~IU47KvCr&.}mlrCYd*te~y+J~ݟ;3, #XUzcT(j2!l+E`T~g5/U 6j2*c={.\$RY%0n[# @DZhFm[ek-$S,VxU_8;Uٸa#{^dzn[6ҽ@*ljU~M5d~)d`+|\GOVwi&..זd.mY'.@6xKJ- d0fbsr{VmI/HDy̨АȿSD =%<`*,ji+%&lz$iJR&SdR*=L_^z7oDId[ @dǶs¬*A,8GMZ3ʻT>TXD$ֻRӕa$M@c=K-QP׭Gn_*?|?7˝܌&8m~g1*?im9t/%ҥ su1۴M^Zn4CpwkhOq#|hcϜ=9TUH6HR?~ٳ7Mm3f,RF浟nq~*xEpԶ{(c-)3WUت ̧%f*GƶSӕU =5щzAɩ@!B;zg[pÞ-+ڶ58~*xްm~nف_nmq0Ńi~RB} (a |ح'm5{ 3D?i;i$9q{̤҃;6ݟmU$P&a`dxY0eCUY\۪Tɗzٹorl hAFpv+o֫}IՏRӕ"C5j ҏ֍} =2*go!PmUrzDVYVdm籺Q+9.TeF"C SJu@}AZC/%d,r?Lw̾6@afc%suǂrڶ3 o[# &6@'xSWW[aS/e}݂ؕUȿC3b[ݞyWDRbʙ[0R!5D.7VqT#VD fZd6so,ƹAPQO4=]ecIحqm&5])1щfU\!CܫcDaKiKڛALؖm"snW~bUj ?Oܲze1bj]ڤT=N1+3v+5] F=Oj @ktRO e鞿iTz1R2gDIL@ ޤ}5C%ӲheBf\!QsGqiYFJŮ{~ CɨmzӶt^ (@e0T8uu /ƅם2cVTwL*aNwʌ*JMW<0H`޷N4:mxAk>HnH>|_%W6snP揧m{UmsqAHö͇ KsL،w~C*aMü=k*쐄f0CH]]V~ ?0bO82iK$$d[(pqCH٩6n:矾/_i8@ ivLjPg Gz"P6Qd7Һ<+|CN6?J2t9&ZOBeB8#$eF^n5N~~O]]5UKGBEy'2 @I!.el05]g(@P¸k8T830@Ը9- =?{Ӝv'mۨ @~UA@epp|!0\MDW=ժv!5]#%s0kuCR/2֭f *xaprcmςmͰWp BpЭI$5v. A\(;T75*x5;U:_Wvd7xs«NV&Zo֬W ;wzӗWwSwz@5hf$e(@BktӍnHrv >?2iKl-*xE*Fd/rϓQ< +aMkFX잼sa(1j DuNv2W94[CH'=3~q<}a*nfU$P&h6*x%p(ηX++NMXz 7L#jY1PitRzs V~ >z_miN_\mT6AvChS'9Nܲsɏņce;z+;ZO9 xft Hr}@$o+? w;J!OӶ[٠eԶ/ii ^޶*=vEhcRݶIY_D ,,f4-0͑LjEv|\QaDa QhaRuI>|d =|c Ai۲7n[?0ezPI(pᶙT eAu!{AE+,Co=ͪ ?<ðEA/OV =,_u {}ye>mXGo DyDPUvw ,|{W_Yv)TC}(2 @1 4: GÞ;K1}LL_^7aThl_nҕU'Ƣx(mu6", {(/ܗR(2 ۪ @5:޸j/>ˉA$GΥfٛӶ ^ζY>Rx4HlNG'?^@#.AuY,mkA?fU>4Y,C1 @U:<ּD)19Q*QAʻz*xU(?xV+ڇQ~w[7o'dQ[*"JeLsDF' ?Ԛ_Lg'&vN$={L\\'p&z~XIJ\k…ۑJL;ڧ,?YI#6+ݐU G8rJ"Ph+d4Omi_*%3әfa! [ L '#d1ζ`w' ~'U uY$>uu5l w\ǒwf=?ƶyQ` "Du'[paS!y[#sOlFJҘ XXR3 hۻa>T_b|?ɗzW&/- A[ԗEhvY,plkj 7yFm ēq]E{dNQ<ҕUSZy5NRGHZ-F\4&ƲYI/T}mh]_W^}}~"(rwψ'5q߯J>|H*ޚ qf=1wd @wW4w?h{9#7kUl›jКy8dM<(o9^apu04l,e_$ R=! 3y@?P/&܌3j)aScuۊɝgf}T  pQ56[Z#;K_s w2 Sfٛq >mԞ9D5-ϓFi{;N]]+2ȢrЊ ׫ p2WbڶlkjlRBYCQ6Y8JJ6К) 7ws_Q5N*"T\2)7n[K~UJ!g|-7=wKC9w㮿gc?oϧWsc+=HŅs# ADt fSR"*fu?!p,vaA漲goKz`|=P zBnXmy*?pYڬ}e&P#7ZSc9*=<Ԙ)U8t_sĬW \QJA>|E渊|z HM g[Q*ri*xaԬ/JvUf^3ԯJ/.xX+/b@TcnM{Xö|T%FH̋7FTC~OHa=o76n1@@6a?=s-SdE⡴zxAQTd=5?Sc]"gnKJattkYs3aO?8 BHv >.]Y5ٳ7̈́}l:LBӶe7Bu.Y¢m/;=^wʔSWWMUigàb2W J%/KLzrC <8gJ;]A2}vHDy7" 2hvnq eی٦Mvt,z+/BoX5oK+kؖL3 )NBP7/DpT7 ҅ K ^v-9"*x;7~,N\\2 j R!.6vsJyؙq w '9@:VArB;*W =VH$@2xUrU,H"'mlk5 D]wBv,LFMbV=lQ֎2WX{.ه O { h r{TiTL9Q^&sl/l@2~6qql2[#X4  MlPT 9] ŸωQN>)F"Le0! .mS7c$_bIC*%TB(;יu͚ٳ7I?"~0;0,_,;/{7ݙBj _1!=)%xYG}*vK7%K~ &  [3Ǵ^kfJ >D$C-FFbl6fp2 ?-J^ D*4Ⱦy׻Ui9.= ?@Ve2KxOݜ^YQ,אbXjz_5VEQqfAU .W1TuxEv'gof~@FLS[Vh{ gp'J=lxH~;]ɪ\C,\x =vO=\=4ZS 8J:ZVvpyoc+#n?zm\oho~`찺 @űRisGPN'~fA>Ls!Bg7v~o whC-_8Q+$s3~o/{: >$^-ƨ3]]x ?c3CprIi~'i >l>yۻ^Q"P^Ţolg'%RD,؞j`Qd7ƹ 7(g1snCu6Wyq!${'2o6rp  CE cjfL4;oUԩͶ$U]UO ?mVMƲᬝoO}z= + Co%}T/ת3qL@ˮ%Xp}f(k]+3`eڙ_!nl{TO_\yYW&YVgU f8aK+3>C[}F\[ٯr0,J|C{W*3@о1D}i\CM,}r8x\jX(#Y;}Y -xbu<ӻ!wbM-f3(6os6zp|8;'[ArULH01pWiIä_ @lj fm(rۏ@* y/~=/d7pM:c0h/gfM&( e؉ze>*C/b6C{sYkIXj2- l#obƿ.&@k>Bxe|fH79-N/PC|h샫aVL+|ʫjr,VcuEj5t@iy2kv 9|/ Q!~=˫ok]a`yrVMRg&PL۽QV;>\qr9.8[@vN6cM\+!V݌;-pdqϒzUIg:L*?]VMNf4{ç/c?r[xF ?3@ i6[n,CO: PD7Vޟ)zq_{8,k|8ٱ|ZA*q}bC}㦊d w依X!XbFuAԫp2>3j'e Ċf?<(7 'VM6ZEJj2-B fy>xc퉳V=ؿ5[羝;LjY]|op|8_D8V~hV!V|O8Q۟TWq =еjd>kٗobʇ1pk;-~?2v(Y]LJB %t2>  p|Q}WWBG߻_Ycv>+ԪɘP&@׫UcpTql|~Gx9ZL8뀒Zh}rrw$gfAXG*?4B >,\R33˫z!ࣵjCYK@?lU f{KaRG}7^ קE=<zpe|nQCO$+q{o휜X5kNȲVg{>Z0ćK7agO%ƙ>Zn6(6!{c>m `U- 73zxxˎ 'pYbS{fx=LC8 Jn7q 3 Bk7' >JoN㽗AP= {ƙB0V‰ʬ*?w 8>\jÙUz0)VM@8شY? ??>oAŝqpبX1 M'tFx*kkd0k!qff_VG6Lh'68K{óbFO1l~ꅦw|HH`V z߄.lCVcA1:^6.(LOht Щ6h Pzc]h3Vaoe|fa+|8^&u w1PߛU1@`j$<3z l#Wy1Xό`fuAnPGk$&$VM6}޸hCl8 VWmؠ](PY@7~A7ns @m=5z|8N؀]i'VM6;n&67Юl+3C[SPw(;FuoX\cT8ЮfpUhƵp Ɯ+&*3n.XWZ5z@jd2[ fLwоLJ6| ~h z{Uzk ?$Η.pmnwoe|fak5^s$pSY;?ZH~(XeY;EOL 8@m}uؚ&T#pˉU~h') t6QIéUg{,tX4FMqZtz$[LfZ5Im_gfš6jIGiBث'V*\ B}4v>i,k'WhT~hZ5RcSO0 mG+bnL=Z5ڤJ@ ԪBֆ/_gq̶>RI&]ӏOlp,;t ]gv8C9@~ZVM&Ł93_lLJgbTc`EbۉU#Yu'bj?tN4ۆ|ak\^QxN ?ĠxvתhGj$ZZ 9xÄ tv vqjLS1z4kj2qh'P"jdm w5ۦC3?5\ ]L͞G =L =4@ɬVuګ Y|]>>-δ 8M5 Pp$kd(B~(Z5a>nO:j@msxVaC?Fz"k$YuZKjd>kٗ%b#t6W*3Tc@_PU80kd4k @9?Z5CygV>szLTefm c~hj2-bl߄nЮuThI]Q]ads*kGk$&Kv$g", @h׻CMW*3hUlq'8P =82'ІV?U N`w&K̶6cnD%Vl&*ZM/vX8ޢ͟UAGXaMwv|xQlڹ&^_zpeT}R=~] SygttlUb8u"Vtړ@'q7Bɛ>Z;^ogF[mqjU`?O];o]}B㏇=C'TeN-IcY;):4N=ך]Z[lM&̥Ck@lczmZuYXkSY9WOGVu~҄ EЛNdɬj2ǁ{tUXcd.ϡ 6zJ9nUXB}=u0YUt9[ڙMԪGtZ59Y^y2;8TѯEz626*2 rV8sڰr! JOTI d紮V>d*?t}ick޳V߬UzlqBGTXSrXTvݜ_:.jK&N-<µs"+=tNozep,ŏZ5u|f>f;Q;>z >}o8S;><(+X : e3:P1TP1hnp:OTz(5t|&VҹOJFa(:Ċ a5ꡈYEPgͷwjz 3'p?Ŭ Ԏw\C\uԁ jT_:ؤhxFҡ1x5"u~M$>h-CO) OڗW'Kw/{a…3-5k{}C >tXfh,VoNIX[QG61;u0%P^L47~+!ٵ3ۃuĝAƒM9nD,(Ae|f4[:! bC#xtw!#6e1!V$-|tMt`־YZ53#c$£g[OOOye)b!XAamm[BHzBZo<Йp+&~n`ӡ;5;~&!hjO`*3<6VxسZݭ 74K7NVa:dV@h΍tɚo/gɻCVMt e?aS_^ŐC 7ĐC#tF0"Vh" :lG$o{@Bt͟U&?pY p |%<;i\C\4lr{p{bA?tt:tǷ!U_{!(֪t{ceCػ'sUb`3beስ_w1a 2ޤM1v@x lojkнL/;_J~+Fءj]^)BB ϛ^!;=n{_`3' *ɮOabja@h:[/뽎֪[ Î޸ylݲ>v+pa1G B4*E%aHtoh@H|~!?3zuIY =[m j1۫@iTXgjb`2,?aNCYBj[7RCC <@i"bep­:Pϲ-zVU^*[av+K7#;0D AtA^"X"u@9oRӳ9=AIU)C\q RD:U!N @;~w"@UYmd.cY۪}x(ֶ-`Dog\ DWUڊPt6[xN#sPVC#K7f ABLfmVUN(ύtfxUOPB3jrD7@wKB=0܊_¯/CkʣQêCU!&'eF(MvVMutt,[Z3\b².VX--fm6'& @ ?!N_'(Z5|#sPfn7¯.ѵn:.F(͝  0 f|_ J@L#si-ƲZ3{*`ۖ[AC A'<@nDh/GkdR7@K floVC<t CMhMt7[|z61^&c:G=\/.֫=ZP@o@[@z}L[ 7.zOժɐad. {'K*Xa=з힂 ~2Qm!+`?'?^w/ k$q&@KDzCC\F⫏j7 ~{1B!p +> KsϺVMRg4'6\v([U!ⲍBi@n<6d=CwT_glhW% >Dkd gd. {Fz=~&@jIOv BLdQatLP ߛto8v[Kp)}rqd֦W˹$ kd̑KlWY{y[]P Va,YڤjKƢ| km_yv[|~d >7 N}z=ԪGa5p:ks=$q"C@g@|~7˵ćKa詞06I>DC4dO^΀򿇜箄!,ԹV6dl1[aJivFR :@>7l\Q߿5̾sw>/?l[k~J%E_$9p~-a]_l"w>kkU&F#b:udQ%s&ԫAT ?v31-Zư' #L~wmz*k͕Et5UIGZcd.MY{̔yKkȻ ><׷XE$'(;Co=BC^t^Uz.,s#sjE)JN`s7ëE||`XEBw,xt10tba*{?3p\FYU!God.}=[Vm?8{VeK7بjfgm"kSQ(`7l"1B_8ç֍j `p1+jeJ?>y5M.֪I@s̥{DL뷂FJ1+/-ŬMfmb`l1,j0x#xBe֕D[q7)j Ѯw@~z=>}1MU 22/2Gn!T b".KV̉P1&?\ G߻\> ?N؄27þ?kkUVv~adqڶ!V]:!IGu`=*lCWݶCʳ|>rઓ`&^+4OYo!~?#ehޭEhCԷ5/'_ ;yGhf箄߄߅-t(ko̥ YuZC7 Y^6bpatN_ g4|p^':YcԷ{6~<9ryƉZ5uX#si >iϫQ".ObQC=91u0I0@> ?(魄/9mF߻.0Eyƀ M1tړ7c%zeo+E?Y /? [Z "Y Ʋ=&Pxtz6[nqq;1TkjqtyRj*ALa:}3[Z{++\*l۷V+-FZ5x̥VkHՇh!<ҙ7kf m ; d 6HCÑw/;5S;;絺õj232&f(U#Ch-}KA7BHzZMLLRGoӽ\(0s?.;o_v93qZxō(' rO~^:Z&^M ?#sl>.Un6g?cam>Y!Thu}1kA^BWVCVBo1OwŕE'pԷ >Dm^M w68Y(VSUN_MU`'_ [OjB z S690]-̥zp+PX2!&Q}r!g_ّLrNz=My>s9=U!*4^WƁe +C$=8o:^m ; z+M:tnQ׻pgמ{uz8+w/(4ÁmM >D;rrޮmAq *.\XCѧP^/WGjMBBOXQ*^<.x'-KgW;oӳ⹢A)6jŕBz~JȢC_<*!ٱ?=Uԫ <4 Yc:m 1`Ш߹+j1mzhokS7{"kcSGfm{wl /*}!Jka7s_wcdk[/>y7LגZZ5 fd.omqV_{eBJ1h M4Н.RN /E!JV1,pK+U.|xoKKߟ߹:r1jhf}O_/? 'A<-&!SۼwwMdudJ|,} >-}9z:Q&^i`Fҁlqn34) ұD $=اեz5WS *Aڱɼ9 T? XA+Y+BX?ն듢BQWxd8Y(>4ѧ`G 9ƂYq@gЂJ\:ttr";Г=mOs_PxcWɏۦ/F߻\haJiW)`1?6d3 ;Y<)]na!3[ AMx-k #s:]V }=0,j10ZPՄfKkab{+aŝ'>\*l1 {w#;pżVwVMƍ̥UbAWn8>2.dmHD:̚CaɄ||~Gᱯ=0r8{T7h^[=ؿ5UyK5tF ~tM ?Y /?.ݪjBpobU#؄bqv5D@:ϻ|hU-7(6Jz)B?VC$-7Łq!wҘ]i]HN}[X{xnu*G<TӳZ ̾+2魄/J!?pbaBreF n6 U瓥N_3MNJͶo{)ViVL'# 鑹*@;~|x7IAa2رe%QJ"mp+XGZC8{86p0I[X+c_Li 5Bz"mޕ/İ>_ ~h813@LӡC~0 >4 = YϮ49{ ><׷%wG[\2 ><@3ćKa쵦=|b(1p{O1>dO^؏mb:zEnf=hcWFb? #UtoC4#bX4^7nqq ?Y[ m>PT൹QbB?@L/gX6z~ê0C iS펾wmy|s<υ`65pV@1LӿTAĊ A$=!^]D}9V(ײ6N(-h3t(k?ξϢϚzu8@> \[ @%N|XH|v;r0m]iDXMT}hsW-l y^;CKB ?B˱"#sʪRE>z"kgzt}}p5Qw<-ű] oZqf} >DZkukdo \:o!6ؿ^zz[=tѱ xvZ-T֎LLR |fo;hX>druXԧ YwU7&?\ G߻\ܹo1MjqGkd+\z,[`Z/VjE"pz5; D%" f6Pd.>6BIo% קL{:E0kŝgcDzKgš>.?wEA ?|/=5oXoo=BR$SMb=eww ]C7VT-61L2Ү>ٌOçOxx}p5j:U&C^FVm~giv%xc&Vn r*ԫ@zh%(ź >X( =UnZ YQE2^<ι\/}. ]CyokZ= RpY;6u0I4LP֋tfxUO4ϣ$b` kŝ_+>:=r תɘ*\}ܥvo{}C@}^L3Y;2u0Y@?@/Ђwǖ0hy}[BT J!߿u%qE3D#^ 32LwK'k}ܯ/_ڶ>}!vz,.+ŝ|xyOoW'{ZՠV o江,Nt~=1!~VĴ\u6y_ȝ_kQ| mAtx̢yS@|q S^f ?@ UӳAyu`[ݣspfC0w!r1פּ$o=r=q.B@^EV " QJpfCwP~q1ZOzkhեz@.zt4We:}3[j'v?/rmͧ7VpJN}zApm ￴KGJz+?k|?Y @TՇ8bܕӟP! /}>u 1zX0'1&z,hë܇vX~X;gz]{B)~ q{9=7`% a>֥Y7wC y:>3 noh\{cpc6 &z htrhq!rh&-@DU%U%2yD۷V¿Nq)07 oA[ύg^o{?N_n'BVjQ= lTV3 փSVˡ'{십~[ !8ٔEhWػ L~w9uժIEЭ̾}\x?,VfĬv²>U rtB((b[C[ ?o>]ĥw}OHbcz3|x9wżVwVM*hd.mq箄EJ q fR@}xs{z[Ro~r @ң 8tox+$-.Vm4}ݲ+$+I4JY*d|[x*U}tMDZ>:C+@|}G뎡gOݗ[║t~`2w~>[  tX_OoN IϤ^to\I= @KxIc:XB Vvb$ur(00`(th|x`hk "* @9g']Hmic+pi91c'½ ~~;mgc |$p+BQǏsOn|8ׯ[v?N'["tz(ꍭ oϲK5TBDNul(0~b0Lvouʺ7Eb-vM]-@I"vi D @ g)n'M|xȟ'7;>l'Z~~AVZ}aaf⍸KdtFw8!&U,lb0 ._0\l96CWQ?#mr,Jqk7(^uᗻzˌf3j* @CLH DN#Uo,lƴu1s}#M&]YfEa[ bpg)LME'ɪqpVol JIyM8u`n.d[OQ?#N?16xOMoX m68N]͹ZL\WQ:ĉ<; ? ^Z:RDv c MCaYywöT/?km|6Jh&A-]T\g ZK[!Tb~u( ޸Bgi&;x_Y(K4-l.R]oInyvV2ulp @۫Ők3Ss%wLbѢc]wo'Ǻ\Zcq3`^x-Sm(#q$@;0U"YԷ `յd~15װt( ]go]w|&Gk7J|ئ]o_Pu'$@3 $ @k(t3 CTgs)5no.|KaŠ7o)UQjjQϳb;H -PV&Md)k7í E;gru :?kzt++tzt} @lu-Cg'U:`]g3Ct!xOuov"Cp#cg'?[׼V&>'@Z6;@[k#ISs1!;:x6o|b0|7cV!(2H~eLJGrx͛CM5yv~ @9$ccIzZ5s? >gQ?#k 'c ?4)^Y{c]ԱBΥvӛ5{RjB5F=~q%lm@WBBӇy&{=6]gqb߆=t! F{ӼgyxC|cXf.s3Mt0{aL]E\7](DN@@tiykk驹Ƙj@ ?-LvTt~q1m~o(<{dC*_2/]yv~Lb6BH({CVShͪ$Tq>&u`b3|ϭN'ET**$@\]l"cϧEI/N U5hr,RV_fY.gPcacc,9xݛ}:?P)y'}w!g=p_sk[vZ~T Ip%M!۫{kN5TIur(pJ8‚Ruao7 > ?&o}]Y7BN+P!'$@\Zw ? '6:@4a4fUWjt[:~'', ྫ|?i1he}c7TPSs\8mIom 1aKMe_̞S'UGuסC;>D!KstYPdaö‰Dm_f/Z/zt}j@/6: "yv~͈}T- ݵR:BיD(8C|ؖ_:uz8˿J|6ȡǎ0~"eҤ+ 2ۼ{v䱓Tysx bD:PTޭÅP`ṇ©c-;xOpW\ܘ̶W7~x_Oa?c1?4nvH~sPr<;5A:Ӹ󝢎c''c>Iq2B >6fJ~C"lRSsx~q"x 4'Ɵ0ԭM cS'@% >-Ma[ ٝvaeY䃽|6XM|VSw=~d:@ioyvNۥ>j9FbWx_ms@ ?P9]g/ U!/] >'L+~"}bݕuZ ɤT=N>Љ~JȡSG[eV܄[:~ >Ď,495uJ8q?v|8_~y3nG:M ? ? ?PVa:?ЉJo\mUGb ?@ ?P]g >DC;SEbwv>l;ul M}uX[oofj1s<Ͼt8Dnx({auKM?SΪ"ulO|bpsvr5FcA0:Ƙ}Zv(ztq&㡭6Pbޭë3baᾶE U'Aqb{ԚyP88aJGީ{oO-@ $@[۟?fuJ3 ?Pj]gËG"Lʎ8IC ea۩cɏwWk7:wX%wc5(ۭ0NuWBz=۫L0%@͇=WDO?`us~Q@|{CubI-v3j~P2:[~?~X Z:Ĭ*@?PZ]g3?cE?N?1XIT-89;r,:Xcُ:wPF,[ (^ Y̿}[tfA(%)GK|zMȞoT'ܕJ|+Et5,c["tI(z)K[tX `iC4DQ.ca[Uϣb?Z_x򍙓=Iv3^X_@tu@7ɪl:eSԁdS(_Y/>,؉ |>]I{+ZNu~P"<; ?GM٩Fv'?.oN/$2!e鷮|8:tO8R=aǍXT4&~cK;tC~>VJSu~~\9_?8}?L },/kV\kp~P_t}` I?L"܅&y)c]&7~(:~b01gQ`vp<]7-exʳ-V9v~W 3Ss1U'w)NSH_o]+40ǝĉ|P1pGuh7 ޮ|㵶VUK7j~n{<Ͼ:?Za[ *O2[h~ڍo,w۲ Dd*K^|*ޮ0hVCkmRhW>>iC @@>{ƴ*@{~[^zz[vHa%?`u(J >J^ ,m?sqC?yǝ.*M @;g'؟fV~-YljY% - ?ys-@u e:Z_?ȱرcx+:~jB"'zt}|~Dô?R?tj~ĉ˛/_;%oFV8q>v|(2pt螎>l;`o81ޓR:MֺXYzn[W8ZwI'cG 0 D\"ъ?C _`$.xa4K)&ҌzڀȤQ@;'l if4ۦUڏۻ@T]i;_W'=o]TRm֊yɚy ?]?̨ ʬQ@<셕y`w }]î>֟rrc꠻&@u7˻Z}! uNL5N"l/ﮄ_}^x=ɎK+7..p UrǜͮFﵓxkfn<; ?@~_`o]h3f@ĕﷻ@5 ݭ c]έ.;9jx?^ސ]:ul v%=kH*cLnF&qi9~C!<Ч~7t6b/NZpx衖f] Ru8C ><_`WóGz]w)ifO~*tHe%Z2hSs|~qu)C?u-l=4> lMꎫÓ-jR ? ?~f9N$=f ^X)}m @Ԍ4ڄ>P&?N5Uڃܦ>.?=~hflw8R.MTOM0ϽH/_@yŠPj?w%\V%veq )坬%b7&L c\}^x-p6 'dFbbXHM >Azǝ.GjLem?NWRR?ž;~h*qbjQSEh=:n  D ͥ@vDc8(y|C1 41QZl6J vieyvdU  'ev ~H}pbe'OC >Ď_QX ݳ̓4bԱ0EL)FZjjQϳÕ9~nJܻO ev~Pmp?]-9qy3$py!T~>/D >\+&&q>{ahzgu",e.}/ W?ۥܻN5UZG ݾ^b6ַ7߼5À1P݁\k^c h 3 G35I֏.x>ە,0KC- cxtK4:ad*qBW~ ɚy߾I~[v':P= ;_W_Sݵv6(u&P 36Wz q_}g0!U5C|'χ's6׍tViF-:9Z!WׇOV{Cϣ++l|*fd\ +$v+ko9m@@ 8`fkk+owix&1[ C >^{lO8VCBF-'peJ1> ?Ԁj_ vRS@afbjQ7(5 "~OvsW|Yt~uB|hSYSw@y-3y[$hzt~y<ԯvD vaT}j4~ h :'VǕ:^<ںe5߿v#a/@7a~aU_3m}4uHx ?*'XW88]Ϸ_wn>Pk]CNgFSSs1($ ~@/@ה ~aV1ヮyP81vbP ^X)M jFmj+|qP!VGd/FՕʭk> Ӿ+:h4( ?PZ72v_cqVÿ[] Nj-?Eds?ݕpZ9fTN% ?7hŭ,NW҇9].^P-OZV!O6r>m@~0XxxW֓]"pt>bţ闔~Z)οKיF݈oyvj++Upq5g~\fP~'?u] R:w vFa!.xjC131Q3w~Vk=UWΛ1!^Gj@u Aq3zC~b0yi @ 4R.Є/>۫~5R#EuCqtGz˴AǬA4ngoweċt~?X-4>$P"q|=1d' 4viI\ᇫk z#d_.c[ݕՀeW]qOIB["?p_Hx,yʗNHW7=bҲ}?y`%oN]޶<9ڝpFgOVZÕ|=ЧvQ\C+@5n>rti9Ss ~Wdz 3V.ُ >Dvǜ}w][t-'}@6; Mwx+^P?hᣱ/Հje71䴼XS&>f1(`?Pv*{7@$ k7 {HAuA+Qc=߾ϛO-qԀO v Uc79i@~6WÓab=oso,nNB/J >Q $hkܕ<߄ᇚ)@:@6j2?PN[rwhsqjNd.P13he۵X u٩pjyCHG]n~'u?@E w;?lTa0v~]r~ %'U۹ DjG Zf9jIk7셕;ZkLfP\埨P6Þu z4AHqG=C%.x^Q1ȓ] h5I#L5Ʋ&_lzC䝨@6ɕՀjW,\)]Z?Rj(cݕ;.G%?[\vj~H<;5E.,G]?^C:cOWTИfizt ?@vt9N p@Å6 ;@ $ lzz8Z]eP-+NWŇ+iec=Y^(FtjvZ^ipolI䗞 '{JlRO=vS7vh0%QϳSޕb䝨 }g 0<YjT.-utj!2WjsO_@*돯O >t&, V'ǒ&e٩pNSCS|vekex(;a-.Tbk?@0JG D >^o`:`K] ͥ0uQ7bHmjQRq2 vaG]Sm5aaukRaxT vXi.-utj!~~/\~z$<` ^ >fiK/lS%2iP\ƺA;ʻJCj[w{Z] ayQ({Y^ZPanP@1z 3n] bIl:D0Jhl;(B=Nq2~veI?{5O|B%Oj~p޶W|vlLڟZ}_|=ЧvMH dA &T (,.~ĭNk@B9%o +~JKCN ?ԌR>Iho]60rec=tF];ZYܺ+Õ|[tĄͼ/lk AJ~llJ=]7@n>mÜthҽQ;Y~F`7K կ6( -`.^a@`GׯfPs9at\3je7P5e`8>Egs~z]gc#* 5 Atޮp@N'~>A3I#rO)A QlT}j%o:i`@:Ёb B3|7I>f/ӞG \6 ^kȸɂ0l1o@ztRn'yN?1F ^zupЎv:PϳPy'iФa/}0Zt8bCs 3G%?;-9Dh^PyWm5z@@쬢yk?@?ʜDg}?L }l}z8uǤF-gt5DL*`xT vPZhyn`@&WYcf~Z_ ɏ9qP&ǒ&-A7I+{{կ)}!^>T (?AUCJ]u~D(?; {cLJ ?W!ꪏNm ͼ|`琰C:Ө4s[\-o^6bC(tߴX(щNT\v|Sh\6Wq &ZjF<"I("}vE (Q5IE? hT[ > twHab+ e+>_urPN:8'tZ(?{S5FvM' hTTJco 83J b|^X9ןL5j?^vPF7]ڽ״o}[ aˋ@ NV{mt='gq$'r|ʶot :6]Qd28{5FGK 5ܺ{ vM+<& hTLwr1^P}/Abţsaf_Xhvg'Z?au?A (`'*5ᤁ~ /pv#w APׯu3ȡg'z.o}[ 'GoHQr:?l]P709pF_\k}w|vSwXYJu@sxDҊ+T2ԽѤq5Ϯ60B7,/U>twbja1 (3Zdl?? %@,8H7m%B/`S =셕B_w5k{辟- 7@5?au§j@ܧ_TK[[Nu[יF=l\ʶ_ds?gʶlK'@w >,ވ̛ >NTNgc(a'M/wN0t>ZeA ?ط{i:ȰwX뻉h' h/;Lgl0mǿ_f۫1~ppb鷮|8:tO8B-Ajٸ9z(qgY.5%')WA(?WlWz4bHaG+=9nuw8mqLԣFĎ \>.xs'7_Y.^/֮3I#}I(!,q;> 7?augWy-.TԚ?ۥËv<я9\M8WWPRE0 Al̤6f(;ޓp5>E7>C}j O UC 6\78x ;Gt)oi~~Z֭V'~@sv3̼\=>ڝP:?pW6lsu~hq5K ۰m>P ?@{a;KɶuHKJ&^)p} >\A ޮnjڹ+鿤u<w)W`AU䝠9֣vI?{Yj&qGsz|jQ38y]g6{p0V2h*{mkx ݃6Pq"qxn' {d5<wg':6BXt~HhxT P~C?|beO-[y>Nw[wӷ;m? a?kz.@sF[8v|x{Cm.&m;RBԱ|z$?{O>("b!n6+B<bd\ n˨vw؏.ٹ>wG*ɝ^h!&p;!v/= k7t밖vNz\#~nAKjU˽j}jϮCN=plZ]5Ȟ}T~|;svFhc Kj}+O Au' _Yg?^Kv&CԼAIUu 5P~CcjuM;l{#?{~677W/J >`ej&ޮp@μء"PȽA @da[풰*ޖ[C -/VP78$a?b# eۄr΄ ձCCT*p;!{7{a%ɱjƦ+>CO Pf:?|SŻ|t=u*!_ٲD]jv6PIૄC'Y%.xtޏejz뛝Y59lѮ3wn;K- 3}o%3:{Y~b~u݊RtwHWl{&>jrl'XwFvB+vW9z(qgYnIOջ R8zC᠊t~h#!tn*B<bܾX.W*{z񹹉ptw(\b󅬶k E›';BiWéכ:XoWUNF{P]qR?;OkhL vW$i:İk|kšP78(Z"UӬ6t2ܕ~Zx 1pGrZf]ҌZW.<;]]S82}jPnNߴ,@ݡg/j@\. ĎEMᛄ :G}'IE><{ !ׯxcQ"ޮ0hU'G]g?afK U74֣vIާY]ڠ̆bcuCͶ7{m@ ?@EQCB5ȡpb<팭ؙcB/S250k*͡DF`/K 5tww0Âk{y){ APU Kj}_ QM ?{k7r{<]|]-NMX H#קӗ?Y~5^9?4=7 wÖ=ߋGq 6 Ћ+*~q~F >b'"Q-B;x=ORK7]~˳҆A';AsGU]oH jkj]74W7@HVw;̃6.===_\ Y[lG1Ll,*5nnv|(2'v >C:fOx-5H; s=zpu-~]R~G vA [d+V+Mt uL [΄pCOߙG}e.Q*'bO]~~?$P@'\]S8$yW!,45~@K;f?I3k;ml;lpЮ̔`CW >1!]{+vZKr'|pIVo@%7zf[ 8ö45L=15ר$զí=ṇ6CWh{9q?'8(;v)Q!ڑْP|xk?^PxHbD+SZXfYvr,YѮ3$`Ӿlh){9ȸfqA (Q5u]PS 6l]7@Ew/S77 SXoW?7r;%w.aCٸ=J?@b"|(!![(`9vZl{ @</l邃/C]bB),4hFw;!c*xyvpЉ^:?`>5PnC_RSY)<×Za/qTbH(S=E%^lzZInhi >ڦ$^~|U!6\eS' ޿v#^tᇚ 0-^:?[j֝VmK;>5pC(KwCngT;EͶC٬m/ٸǿ&򈡉CBj}!;ul 1߻._SOB \ϴ *@%72Y\Po`H u@ii#&>*$Gw/cwݜt]8ma_ A$|~Aݳ"VBF/M۶8~~ڞMm(٣qW@QvAs.Ƚjt~ twՕʟb,l&tw;?r_?duOݽ\wCAL$n]ׇ)$_ȸ:\{5:cX%7<Y^TmH+R7@ZCw/nw2;>ڽBhA<O4/캹m6HЄ{?V$:63,ovxc411 ڈk vsҭ1զ]l {51vӾfzz3&@r>.n|Hu FWyڍ0{a AΕXW8dyP:?-.7_w×we =//߫2{gۥ*ל<d6%|P=]AhAZ0Kǘ-pSBܧ;YYToؼ/ti6$titwwq|0wwM >,҉{bHƮdi㋉OkDbF%V >Oχؑf=3,OCбr{uM=po%grD,M !&:Ф[Np)tpw}Rw>UîX2A60~Lv-e~;K1[ ;~ g=ބ Ns0Rͩ׿ߓGLh# y6wOV?9sGW@Mpp04ÖES"۬κkϭŎ';iib;ؽu]mp=@p@9w{mcE`E-HzLL4=@}=AIkʷcϸ=Q-J2)?i[ćOO5=jSOȪ۪;L/*;s$HS&móL% Ap~U ?Ц'7ɢ >!ސL;sMϕ\6\6=Z~@޲O ᇗynNVw؉<]zK7mkMOȱ~{H>uL&Xip.J`+:E6 5qBV>7@7x?{:+6h83\6j6wג]}.IYTwBukÔ}s' HaCKbp.,ߧ`?Ն% M >EtDtdyN60pѺ/6h8[t*JnjT~@P%~[C{'L8$1NV}v2Z7|$8ǿ ҃Due3`"ADԦ3Ʒ|U{H0TEKghu6@ lNKc͉vNETwBu=|0\W'Ht^95q,X,oӛo4HDzn0Q!aֹo7~3xaeS~799P۠tMxmD6OlQp?FJk ;lCf mTaB5#< ,#j<ې ľh0 >|hl!s2[ZfĘgn&!n>tg<v$nzb9n*~QG~;'L8<١! ~~`R!@DcnS*L][i.,Q3E-6h8OiHd۱m$iQAu-1|v2Gu$ [L°;CH7@~92J%{F_莴pd nHogtVfZST1k]$1@zێs9gitQqآyr`kfۧ;Hi!!0`F\dCyp6\K#z;?f#uNt#0aB&'L;wcUلx@(T۠( > ĹoW_>Rӷ%i" F^?h̝ZX4kɷ(hE`;ԝ柳]dry>L3K,T>xmp])j~qHuN}' >k.0qC|V#v7s\ou'qokDXVO AH?,\@u<_Lwpfvg92XI?pT^ӭ69(%e*XfE)`q-d2ROh\?POIÜYybABr>YP̩`MpG ?`4@⹶8nl#f59kU}t ׈ט 3:9>ҿ`H*?l9]t:ReüڪrF/dU䵪;~;$]U[?7zhu H|›`Gj#hZ#8EPCN]]_nD S  5p9:6ַL3M?|aw"%ÿwG;ΖgRArH&T V~8LnKw6={Gg] `i<>Xox"/ޫ4Jr#Ok+i|3'm<4< *tNx9}Je!T@hQTwp 3k0 agZq'm*n:Ma[5$`wcH?D(ǘ,/,Ks}*^\mUw,.VoS􆜫9Y qFp7@ C?;YGc/Z",kqz!$_;|AzҴ]d 5*? )j?Kw]w;`;< [%Y'!Ѽճ( E]?) >7 K!ybӬ5R 5_NwVj*?DHHgrC;,]_HƳp.WIB >3Nr*XJK͒@?5MZ_je?ֿFOnԔEl= BZ!O]n z$_ ~w_7}aVUn\ Iipn'#RpbWJi|x: T$L&e0yfT ׃ϛ%9R}L_j1?tj-(d7GI ATw.-_o1z$\eE؛ Է_|J[׃ O;]IJq'vJxӜ0;쫽dv} Ϗ^mo{yf Եcߟ4K|>%S2|8^˷!E,;O^O }s!Kwe/!9tro̎ҳ 9&|@N; ^oh nW_Sj#7 pn|~̮ޯkpH?nڬ,܆d1[?za4Kޏ8ji Id^ Ͱ=8~P 7_g1o@y͍AD%I!êþTkyz$BAg `d`ثnuYG; ކrC.B: ߶ R6P7-鷰R *?GT,y?(D I?5Fۂ2<^ȶn{`h/V6ev@ T~ Nؚeh1. G*tJNf㛢{%_r5Uo?AD0ƓWGڂ20og^1 BCwfj?DL*?(LҘJ̼5q&z 'Ўq^3K>FGRCg[m}V57FSM|90`Ʊ`*&͒@ P@5KtcRek{ϲH[=Q>}- R!UKEj4}ciI|#9՚;-飜(S*a߸st|n3q aa#7 8CϨs4Ҏd\ݐNT~@LBR^3z% x%`TqM#?fH_POIhbl@nW|TnnCc)xCBc2J4LJ&2m!k`cTXҬ$ ?hj/T,ps5pܱ ٻ c"OB(3 uCPm7q<+LIq~'q)z(p Yxv]=Um8 =,z'mA =[FQDgB>0Af~c`NX ?h$E.jo*Օ4T2HO!+Aۙ1lfNI!,J@~*(yY \B 4K^폕}˃N 2Bk/|e>/כI}*@ Mε*u_tOZB~I;V5GVjӝ]t) ?$_n ʨi2qLQöOJ!CH.4Ufɛ~ %ye*q`@4B~c:+l-݁z k GrKA'vN)USxF/-罰޿l=2{ -/21 =9nUwvA{T0%/ ?fɫnʾ ׵Ŷ.[bG+@&<اT:T} F e?8tM?n[MmH V ޕDZG#f ͉#^`]MH]g *:kno0e}v$55nEL* f9=$ %OVjvud?Az^<- X@@htgk'VrCdBKJA3 \`R=|ʞ#6ZíĶ.߽ ANgwGIKfnhST~؁,nC!x?rڎ,WSeV4K z<Hf陇l}췇" @_3"MSYiA0r_A q<#*U 'Ud0 J6 ޕ~ml3cY^CZ1yf3\0' AkR"ǂzJLd3$͒,E_POIhblף.'c4Nǟsi45P^$GpƺS;V~\#UƻHu2#3KU YAc PG?dp=;&v,5Ãe&^uԲ*?S @~,yGfw['Um8 Gsēh 䜯ZmvѽLք"(5Ϲ;Zaq'Ϲؗ)rN1~x~g.*g0ԵJ5zDaI'~Vp_8VQa[M\1,ǿC:Uu!WW@b5K^폕}T>Qu!XFh]$^ 5~`5ۧ|ѓAA$Pæ;.>8Q̛^f}AS4-/\kU L3 ʘ| D6} A5ˢL,yY~ ǚ%Ae*N%41JR*i8^S^c ?C9uYrLjlC+0ʮ.\QZ2x=1P=")G2Hp9VPei,?خVMSEd,yEl U%Z^Z;͒Cr9_QYu+GoW꯯B`c$ w;T`odg's}o4[w/zdM"&oK?X%O >!ЯsuڊtbNTd;^OgL1FrYQG%OnUjvuRe^iah8J@ltV"4t:0.to< ԠGZPTZ8 2X^#!߿T0yw=YDR n7M!>m!H Rcz6Z@RR!Ѓ$ o<V8,WSe%W*` kښ)*4:30wz=N`LAg%¢D25iz@?% T@B egڠN)U196 AnZ5xW˷:s4@eDG2qx0y'ʦu!^ud(D! f+TȐz_ ~iX?#͒Wice*RA"nseT7:Ɯc:+PfQodrAN׉έ.BSR5!w *us0. !{3w#kj$ЃqRw*FbiB&*? ~N4Ke'@~@%o폕}vz-QZk~nNto3[ Z^R  z凚Uơ߳Y ''yf %fƛ/mDg0ԵrdV o0EESd$&g$P$Ry_ LzM[OOB ~}NW0R]5UTd2ͼ6k Br?H3K @~@=.ZiIb_Ru>Mm7MMεB~>ZlvSD=$/v DYw5vW'`XpJU?`g0%wCo#c@xG =HHĠ(9Co>QpͲ;oxz!poce*χ"Kߧ'@,pS#%9i ز+hğˡ&+?{ؚnJ .YeYxJkP 0&μa*+j,?C!?jq=<#f#! j!Kw a!5.%o폕}Ph?v'X&}9GbAkDI7`zO5p9Xŋ.N)&6rGڵ`.!` ,!y_2x40`n Џ v!}ùc[竗r&2uF(3'7V{Vg3͒rQ`XUV}췇"Dq][{[(@ltVmp{!C+Fͧ\Ng.*$rNP?015ns {uYz 5kp'}]|t"돱qpUmDBdmr0XTٗSLLK5MZ/apCZ ?,?s~EiWh};_痏H/zKA v@27zQ 4}x,Re@;Y+f˗Ķ BYe1̒ͷmǧzꀵJ.ūFϴBR64"X,y71,=0B@buU\k:@A„d {!=N)2MU_ +,AX ¦^:s4LœsaЃGoK&=~͹b`;UTޒ_9*n Bs ^ws񘊧wd4Z[ CYwݱЇ?޷ȉ8jb#2MT\TԵ7@f5mK3. >/|'[3 >S!VS9#vI۩_ @;tNL?H:iUHcVkNn] ]pʼ,9B(mn+!ep;!P|l.\MEcbS!gTޮ`KM!ANEt5z($-ABMN"\DR1[g&Z9RNBBh?CK󡇐*: tV"z6HP6hbi$]ܪ1N)US2ZA=?J;tVϳv=@Ömo*?t~shmU-73 _[i '{ cA2M9gfLB`19?)LU5TB3'm;Ceb/!`NW^ѽx蝡m h$GnUq5s~p6c a&aB*AġFmޕl=\8Bao 1 #2 ~,ߥ~_Y^I,֖i$G:C8ZpJF:H? A8 eU B/LDz{s\B_$,ca`*_#`J4Idž$ˁ[DŽ8QTlde3֍>m!+֟ ΦHa4ۑAbz/A4*?s?IX& Aׇ|s `JT~K3_zf-T4⥋c,$dP~qs Azzb]$  \6X´Ѓ. J/I!!^U}jľ>5,SeB>?%k` [k8ny߱{qN7!38wc55&8b6Yzb9P=Ѓ&.i& U>faB(OϾ8O)tN݁Ҵ]R'IguvqN͒?ͦ l[TӇkN $dhGCր鷇=@awJvd!oT|*?7> اAKT}k3ܕ-?(Z CY7{m٩ݭo*;6trpԁ%pړ f6nܩڿy-oeG)E$DcBuIߓ>haB|*` z41E&z:m㣼}]O$Yǵ;VaQ|' #Ϩ lI&L82nzxڊZ4C7LUpK{QJzʝ?J=#`J @zjKgU.*8QTMląC} (A2?! >, . ZCAH{yB=0fKP3AmgBn\LEB$uV~B2ZÀ%t6K ]<`p:{lU- A.ʃkn֎\K>ZlB̙o@ybf͹~xvA C~"$`.=!`J @Vym*?l!$q5X.c$Sm~{̯fK&5;B ەCTX>`t$N'Rn[!a#J8 $wN!vm θ߫5v~w'ĞqXo }'k 5ԛ>TSVbwfcI\Bҿd8; ;\ $#BCAs~Agm?tWiLP6X^ GiCLcTR1%n.g0-qN8wc56)G! CѲ>庱\=g; Cy{JG= :+-6h8QלpcGoe?Pjimٹ]s' \y! g0WzԪr lAHT a4?Ъm ؊Ѓ md CGE|'L[OQAH}J3ncA.*8QTmheF 6 $T f6vg=T!.XLoel A Gx#`J5&G: ?A֣ V @ A3 `/%bj[^[C3)oq =̜66*n&B݅!^m+} O(謴ؠ5AڮQ I=$`b#3(޿bMBKgÿd3x 9G\sO!I}f `NWtfZ4F mPipN\{F6ݽ_h`p:{lU- A.Jg:{B67Wkhg_? 'o LTdN},= A~ `J4ML\-/՚SE9I8jb#W^W8 0UBSVzpRcz u'Z1v!CEiq:+՘P @̤C^a|Hta9I8e؆ D݇ҝzӇ= AMNBW4tV;d#>)v(D t?;{CYm>dpZ%XW}U- Ab-e? 3|bXzH8Sǖ맹k=F :+ &Tn=7 k# "8纉̲` {5^5U 1CzJSG)Y1L@i|Q[~ ?a3]Oe?~@3nv1$S5%n6DA`zBK/01##ۜw5;ƺ`W| ?_Y[$cT~Pjm6@r fh,̛H#%ć3*?}I⇿Xm f cVa>B \CUX=F"i8v mSܝ)>N?@rؿF=#Z9h}Lk XXXT_[i f5B 1 >H᳓9U B`Bs !kOi}@uV[̴h;2WX^ YTH.*?zs64O'©e%QW[]HhBL-|X"ۅT٧b1C :+~` *?P6d!&s>4K޼m1xd̉auĕݫ{ A-@/3'n5}4Q ^?_Agu=tfRPH\6w0-&623B?_ylp~YK(6%~h̄n|tQGx!J\ihu1e~Py~ ԗ* .ݩ7?}mb]0 iS ΰh`wr kFRe01§{>e@RS~`K1˴@&*?@Fv%U h~ -eK*?zf fZ+,bK|/I4̤Cd| CVsq,DȠ^UV# psM>}Xc =+/dkuB"SO~`u5ǓK{CYH}[k@PQLM . AVL=D]15/3{>ȶ5*~*Dm}]ϥ3w5%`[1UUMm dпM!^j=+pj>Y j#&TUC3`)2y*|Pܩs7tɶױ+PLng4{^?I4.V~Qa9A'UMlCr!g Am`2ʂ2y4̉mT٧#s~Qg=f|`;ҡe?e0C8:` Du˻z`J+ceB!蝱ݩ܍"!רwvx7qhX@tVbT 'CYwH>֜ek6olCTH01ޫѴUMP{uYzu> ;Ś|/Re9&~: nT~J$>ثfK&5~p *ŷO.qD5v?v҅kl$r\"* (D[ԜD f? i2kEIt8A'@!NA•xӇj !DzpT}ɒ ?tQT1xpYt$S ?7%SP'-?h+ܯhG凘h )VsqK &6"3maOC>kHCu5B0f3s•맜Q;Y wVCFRe jX@M=4.8C̸8X:Z#Y\沺qߛM8jlCT@`n _F>8 NXy:V%ioc3~轂J] =C凘ʺbyemp]T+z{%bj[ *b ~CT3W9@/m$wL*0~p:d GM C*?:~g1c<&繷57#4| gʦzJ!hx2TaOnAKT;5HQsTY3z`R۠ăN}2qwߩ$Jgh DO8jd#T~#} AQ CR OPyWn$ a؅@i <L @qXƵ@j͹C\̌*&6Bqw.b^s콆֣H}[CF~gv!{㝮l@膵@I4CYᄣ͛ӑ~ `7V%L][dۧsod[c52llXh8+{PR,ѩ ?I:Q 3ϭm9w?9A'UMmh~˒4{ ak7!d3sb!A}o45{%$0sb6'0Y=?VAgu@|P!f\)4Yϭ~`kySbۮ'0rNI,S0W5 1s7V#̾5Vm#4569X@ouV1"C̸\aαnPi$u1*Uߚ&(|Pb~p2OЯfDΕ(\֐˛!$̛ TʾǙ?C13pHqV9{S gUMld~2|9VFUOP*h 7ANxT}™iu#{n;~1i8GOrO^X#y f5ob#ՕMZQ*?xV3w- ALpgo)Ak+s4&L=8B$"[l@ LsǺ\,]'5*?(M8H:@XŴ{X ¶ʦzJ!wmgu9 >sbXd'Rt(<3ᇸ^;%s)T|0.ٍ Ln3#;c:+1 @|>N>ʺ4 pwYs ? YMm+γC t }:s4mU;\ ݫ˄ c*R J`C?Q{"gc$)TcbEC 8 ^B 9VɥȹCpA|_Q3'[!fglDzFŃ')4#_Ga4H)QQ+~蝂J @V~@dGXiýS'ପ0{Lq}'>;Z?J5ԛ>TSVA$\P8 _iK 6W3ʧ>@uVJ}θ C¸VaS 4ପ09W y]֭Yt Aښ-ɳ׊%^?k~NLg&"C>#;?#raG J4TLldSݐ >>1FѭGCu5B cj)sXdgWoۄ33 lWuqQT~L6"빵Tأ"M8jjC]arv`ņiU=uR.\{@2x)3ac)^3h~@M=x\"*|??Ubk> ~@%jj[U?8_8P05]xF#ؾf5f'_V5Mwv˃FyP>"?3 n}s<5ܚ]?8튉Tk\aX~ y!MB1W0X]T*QUF۰Gp"@~  t\UqO:.s,Ur9w5'V5nT~јlےaVe(^]OJ(H iUr\k$U֫ G7P@^è'6h[l:6od#KܨpEZ$L.LqvzYAMLsVj?ːÃk$k8{49iYFK|_>b<}p+q]0!mynRv%<;Y+׃ @owUĝn+;@k ? at>Fܼ Q!1?A؟7,㱼_dzdҝz+q5X53Ζ콆֣HL_tz=0tV_ěn4w5='Pt16rpRlr|  Ƞ^UV#v}psMAX`,Xp[DAusj$mts!5\ f(KIZɱ .C3~_C l~hZUO.!01#:%LV01y~f,NΣ|4xޏzU>+Ā&I@qC#y\ 3.s۪&6B!}37?26c~T$! >*I 69[~d2J V6VZ!{̒Oㆪ uJB4݊o |MD#2I?\1θq-̴9\cuzmu偙/q<=R&n96R5b+Lڊ ۾X%`&sxb\ '7s`Q L͍"s dtc7GD1d"'@XQ)lӭ2%z mǩb[{p1C'ەȗĉ7M)CvKWvSCw<%trFnv[L "vw1vsa""DL:?p o(C扌>il0}74 s|/"!)sS^D"a ?HKjmCȵV_<6"ࣱ'e=fr^gziq-ṉGZaF'EhWER2zevKbԲ.s-HSصt|CpjX(?VQ~&nU?9V946d :'Rap3Eэ$Q8g^wBgÚ thq|°Isg }I:?S;x @~WJ *O!@}xw gG ĵ 2VHg/G{*v A [ĕr F]h˵,]prŒKHB6@{~"~ּk#k,lOQmC4)R4?tL~싻̫Sf(eW.,!hYgk9ƲYt}t^k'\gVk[)m@'c3Nz&N'@dĭRvwySgE!R GO '% l AH.!i5 ;?.lT/~xj'@~OJ̐ jhB;ߕ2@0@46"iCn`glǰ1qҲBq Axc..y o2:].p@E=~NwV>DU~/†r^VbWQ㵣..0ɾ1qRW…0˄sB(K0ᔹjaBB./\\ 05G5'$0C7br_kSAc|F??Mouu0vk;̀ F9ϊZx:TiuR,/!7_ܥY\BBOvی_*b7=Z_laJYso[)wj_i'Kskz7ıGĩo :6OdfEt4u^CR;bQ( oŶks"!m:~Z\ym:xv(Z}J_|OEE23@ ŵn+˱;7*VKsap]ȬC(@ׇ ,$"!nWhv%RJ1m<<*aPǔC~OEE^gGy,D4S|N#݌`+Eh#Xcnvǩx߼z8eUbamE {ah|4|X: r|Bus\-f{$ĵ:ѓHg_K^a6Z)h_vzG2t~h[CiCט͠QWԮSoUv\~GJDCMyĴDQ1[讔bO%pW{7'օ ^T" ԩ 篯U)~s0ױ[N,SN+~GJ aww1ncfGu%Vf6D"'N2ġ!ҝ{!xy 2mg=~uM8U"*ϝ ~Lj LjhQG<% dZr8>~^'2Em~7bv>訇 f_eNOX$%s8 )dhV喺F>yzY`= 0x7ӈNfb>Cd=F?VfoQA Y8kĕ Cy u[Ook|ϡ]Ek,pqrx 2<͢6Dfs]Yx6Thдq l7~U!)^Xl"WNZ1B%(?zY z@48}1picI$㳯@lUChVfG'!~GsC bZjv:yؽSOc':cYmrٽWpq%!܀g|=U:LNV1T>?(qFD^`:܄P1'f]\*XnpQ 3;|Xm1㼧ʦvTm AL\(*W3﬚\_9K`?n1pk惓HsW[*w8dVmCt gG!׏ \Xv;Sb$EEcI_/W/i  @;(!̆F!@1-dX؃ '2Y/7BX1|xv>+CgU EFЃse_\GlD@WJ c:ɾxze'V#\RYNm؞zb^3tLB fJt"N }pM{5or(:?zY`x= mF]*!9J*G!Ԥx߼z8eUbamӼvV[+'|yͦ(f9CPǔC!*rB}}ݠ{ 4 iA˨L'w?S`zbf}3h |ڝ b{}hnu8R!nv[kx~襞V)3̼CB* 7u*PabHe$͇(9u8dҪ^Tv)asGVpNj}<# @?Զ?,>WV98b0@lEu:$ vX] o2]fP^&t( ӗO$r^Nf%r z uL9E| ГqrNW1 }]{ x0zG+Bׇh 7''znsK&.A 2uh$Iu?"zYB`x]A8[q¬B<(ltehONY~/Ľ'7`gea ܠ~ExjY/f@`f6Dk.|5d0cxpʪ{ﮚE3q{bĒkAfj|(9F?(֪qE $O0զɍDLAk[UPAԍO~B W. AņtdHE{ %e%McT/3Eke=fNv֚fN 46RI(eA)-7ޯ8dҤ-@VQ~]nN6ɻ(Lj C!@=} DP'3hѬFʃx\dt`+V JwKJ! ;?H)N6 ~3xC@!3@Xݨ0*0hu䐂vx{C/?nWWz"wqn~M~8|ou>A1sc! t伬D؞]A1qC.΃t\>`0S=~srª6}sݼpqI%15Op-DcDhY/+Q 6_ ֹ3~̬D1>W= Z%a:os;L4E#LNUCvYw]H"Ʋ5 cx`7'V@?4:]@LZc ]1 ?9ФYmy-"?4(AFB53h~r}h/t #z3tgDh8#^֫P۶'/}^v8@U?G562&y8Yh!}V ^TCZ16Vf{S~'|ӊsXKǔCDu/+ݨ0pi:(FOck+`q@8# ~hMJ8U8,JDPgfm^Yx7E4 >,('!>DIÜrv3lxjG@?3NU;fqr462G!pZ]`{!ምBB'ocaTx4)&e%F1@1Ew9Z*\g44|5A16$!wWi؝~2i{8!|r('d?4>81palfLQk[E?J+|Bn|:1:LJr0C&O50ΈhZPo4}  2 -LklD3NA!-bfc2<֤]FAeVe# Aw2LWGtCB_h_y#{U?QGc3Nz!@=}%=%n%'6ЬF?0~ i Aܟ95ΈpxYxG!@;bZA51pa RiwAP)x2LQ6BNS檅!?drT$2R+r2*F/+1#+s@`:elaVmCt*;]7<B7 )H2ψ`zYY;:?(~8d_|ux@m tAc[v9 7>pϼ. ^ AP~_QwY/+19xG!@q ?lв ĖJ x8p6F|C4Lİe繄 F^m& .)'è5ލ4U@C=9b`T؞¼΋~@Ib])3namӼvd/, @hn`kK7­5 D V25k+lᇰ81'8ߟ0c -k AL^?L،2@K2;@%Lf ؖFpX"N7uʌ@HByr/}RŔϛ# ?xh#LۑcleD-ic$C9kq`νC׵qDcʡ[ MJG= %\Ъ9B]4ǚۃ9..G~jl7#^V0!dO1TOoYE>]Em:? vLWS{!/&~#MJ7* ԭm2̯B(&!OiF?)OIX$k=78;HwL9 oF]"_x[kBbe1562}nZm9t'XBˁ ߧ!Lj~46x@/A"*y.MQmCnvaCm[#>x!|h$5m3q\ F};~hވ78@!0@td "~c2A6OdW *9jdu k敷&{aDeS;̰^)gQ=x?kee'Ѥ1Ow9I.klD0:czi1hخYmQTYs;LD FԲMB.,qw_N Ɇ;, 89/-3!ٓ` bu;7>Z^siM;q4F`UCuPMF4l AVphiܒ^yFckfϺ_wqFy=,?2@heD>-fg"R8 OL02nM=w$s Ewnu# |A"7H)A77}2!̩V̜E$Q}^wS[ϸJサ9 ?aTq'@ACᘻ4Xe]G:CBgJFnTHnjQ5sS(dnhQQobGD5ar̂] C,*fJٚ+o͙wW Ax t\Q:G; ~[flrw{fiw9.Ew w0Y/+UmJ8;(DI8t~(u~Nw2v[È)7tOآyv5&ބR# ;@M[i Aq, tAfwc,Q/I$㵿kŦ|xܑ,'>6U*JF? B N?*!)^T2 )?Ç ^vߙ$VivkX7xK3@$nIbd&U<)jmX=&91 d@ZQ >eܿ7q(y/azB:Aj{8`91dU@~`lρ9iA͚Ơ,o06X+*.;dZc#e>:? AԂ! ;/c/O$9Fgw︋ ӾV!HD@y1¬ra]r|8V׬J ? 7ҝHeS;ᔕ!i^ATݥâx]^w_S;i { ˏù#bUiI> Mc9Fi1ā fR}q ? fS2j AcJ.QЗZ`:У|df9(+hldbXUJ.|.yS=ֆ井`!*BᔰȸoUb@|bclwy] Ga+r.Yh*2'n+>5 >ܑy:6խ fG2t~@x+ߟ~{/ '*:?4t}@|hġ!ҥR,C[?bBk|CS0!گ;9/m2v(^fFuƴ0ʢi@M/>nؓ0sdpIQc#Z'ZE#N֟nˏFc[s9KusqBMi ALK!iz2isiƯz{-yM2|aamŽbH6~DE8Tzߜl?o.."M0z)3 v?zc3ΐ\7rr$ee&2Gcu*@t):ۘwz^0!?0W ɀZ|ugQ>4éj.[=cKw{Nk%qCV/Pt/ˇ2^V"ۻW^]S vnvwsC^rt6OdaAc[_BkvQ^7 tD A׼~Ϻ]\X( TC'y!kxhz,mG;H~ϥT,1Z3(J(ݖ9c$`J >H8/}V K[+Yی̘KdX;1ńwx!8vwj<ۨN%e ܨ  ØyzWOe'*8ȂR!HC!W1JURwWM¢RL"4 V? HI7qw`d 2P+ܨ0hЌ,oz@lC"Qй3^'$Ac>m.3o.ӫv2 ~BzDy(9\@~@x ALǨ. { aD2;kRnyc`K~c^|̽E*%'G ?6TeN׌MQ:{|X A~2YWآ11y-;5%SN|fq7eD0ǺWh_%dDhjۑ?޽*6Ic2>9m?skc#@LAk[@Df'`q921~tD~o8[qO>Pw_Mm|^<ٴft0awTg$X4 &% <͖*3Zt׃tVU7SJZjG9<il0Oԋ :dqR..e: ^~ۮ!%`X%47~@l~z;͗= U6B燦iIA4$@Bg1WWhdڽ7pq)T! )v81x fϺT|]{?xhU:.H !^IL>5IԺ@, K MY1GwBu~$~hE#~hެv GБMI$!5lRAXkL^w8 H}sg2UC5}=ŭ5?U+ NYqܑL+@y # cf}4ec~_zoVm@ĵS}<ѫHr့oELdvnhh.#HOBޗ&Zuj.sZEmsriqf)ꁇǺZ 0 )M7zaBBLWlAqͮ=+!۪/m̲8դssi:= 6ע9>6TcmQftf۠D!Zr;c-!So $YN?4v[w>H燴tZr2'2|a4>=`Kc3ΐr$vYvɬZ | S0g2{m Hbk?>6+Ƿ>g~ѨcĹ#z3@e}Jӻ9S_zB+@DHlL"Do5Z?;k@]:.ínMbP~V|"!j A3V6_TġdyI%q156| >HOe|`-U4C BbtBY/+Q( "Q)}K/>f [@:c8OpϗNVN5-~qF;6iu~`Tfar|-~Oo&>XF 'd9G:H'{.) 4#xpD꛿zgE2ح/.o_ Aŏ% uj[ AᄩufHd+- @Knپgk o/39m|=bx Tzb?{{|o&vkV^CZ? 8sG2'>E*t~ضiCyhSA:>^ĩ g{ N\ s e~y:@T vxx]do&B :4vx2 ~)/z\2NC{N $2^V^ڟ}=O&'x63tY|?5@HA岴#%cf?gp(+jmhD[h$C8w|@W=Sf/竜Zv+W7n:?"(7@8>&gvwxvwIk)/VW USڰrzb}t3>Rͮl>c}3w )E7oKGخgvn?_ Gsg-'2S:_Kw(\~Юs$Q AHK%6! g7 H qH#:͙" <˛"?`L=vzLX|R?Vu7_hRyDBE:ALK+@~BПfn'! dp6b0=}tBI>H_ۃvWv9>Y/S0SzW[I?cWm6)>>N;)r6e=)4. BHw{txkK|]\hJ  QȬ-od/S5F*4K:1-\7Z1-z],LS} uzEmsr3 Et~ux1 >HpKgwem|ZZR_]48PA\uIwrn4 Xrx˘lsOu܀1O7D@KxͿ7ggeE~x8}* 0O*=Wo,|@KwWjleh&61w^uLMBna]J^4?Y۬v|z>|/ߟ0cօ $SAyg՗g sXJ嘻Dm^ G$BtʐtS=2=_1?j읪\B'8yH]@xPzՕrd`;0xo hi}Ų$MZ 7osk7ޜPTP:] 46z3m0C=p..R9/ μkWfگWiPR-Uݮ-3E،3dj?>F2 FwFlJ)Pn_l=u?͕Ek, BS)Dاe̡|,@Ɓ!y7 9] kdD1lH0J8|LWG5`p`u!tҥR6 ljGӅRa5:+՜E(KrfHʛo-WQlѪR>ѿ|}rAFu)K; ev>t\ژ4sfc6^cvwq+ /B~ZNK]r 56U-Q|$Cz> (. W- ALe׮=C4mJ+j4grBׄ+t4_=2İ^_EB_^ֳ6 B:j]!e̱:CH=RR =j:E a*eEPHn`' `ljG5拻̨e7 A8{b\Xl:߫HS  <|]wF惤 xdwkbiúďM/|4iR֞.jPm,Da6~w bs>0geZrU*0H~C%xh/fW(DΏvta3 r] xAh Cmօ!hT*5s89Z6OdaAc[Z]dZ)"3q9ug(v)y^X|dBA:(91o ЂoMw}-."b@üU 8.Y8@?1.WW% nce̱?l̋>cܷ&m|?+ШPXH6섑ZӮ s=! AC{V?4?Za$+/o6] w{A \)!Lx]$!@X6 G) =ZB:EHwoxu߯$yc. _&9N~T |PAB} A~2i]%zP"[H`$`j>{z_2m >|bc~5|\&|건IY8qHȕ[Z+8A@T ge E%O|uMVYYטśy|#r N~ʊ!~Zӝ&ErxCQ CIs`9Ϊ9j5|`ҝjbJzj_,I k(=8u)w):<gW7޺mBk`RCDġ~/ AH'ЊJ޺n٘YEIZGc2?ؘ3}_atlk!q@ФA <KQT0]DM=1g Apqܥ~)H ESk3н $!]d[v?4ķ>g. dƓ@b ğVo{@ӻ8`>~iVmCt6r|@eS;cօ o A(w! :?Y* ě/2v~)!ォ:@$~46 ߻-tiW}a(/e{v|jh>GI=!aLT!sb 7* ׷{Zx +!+ ?cK b@Qy1le9R:?ЦXbv`*@?|xR׿1잓`OŶtǔCz@l4Zt/:ۨx<_ )̗u~ Huv`zicCq_+ Bay=S9Ճ)}|<1.b'Dz1Z4۵u5v<:<6FfHWSCxvQνgCCHV~p@I}GwpOB yˌIT e |6񁿽Z~NHh+.9'%A Av97!F_>\_Z4W՞O3@;Ov?t W1IEq ?u AȹeqBG/! ^V (!0= HNwM@f"ЄfsG2"%E~qxutR6gU¶ CS >‰'>HdG#՗򜼐u! MVK269&]Pd<aޛNB+e^R},Y ʤT5DS y?z;rk:Uwd>? '~yk|TAB vX^oPv\gtzbB YOjIAl;Dkg8>,x|Wsc!,]z{<{-r2U @IQc#7g#:?$dwk&8z0"BelɺMHtyn~ ?HVIxKٞ>R 3Kׄou<>0:7-ԻH'C2 07v0m Dm'aL^T;AX? @`@L$ yj3vVWX"%dŻ. nٔ7v~ɵ'>g5huΐ:6e#X# ;  >ˌs r56!TWV>]KO~OTꘪN@ @~`kׇ_T;&EZ}ٔ /clWj,)#AumC=1Q1e=:?@ܨ0k+Kܭ>pRP4b)~Mh>uDé'6 / l?HQxhEK uk]E] > TzUA5&mA^Jt~襖w-}ny#P~y6$(McC%l[ƽ?OJ AXt tlP<|^LW,xR>O %L"EAjeΗZwv/~,isQGC~@Dl(}{XPlZK!ĴyyA?@& DimլN.ijGKO]f{iĪmL.!QRj/&]b Lb0^pc%YI~x{c~ >HCCD})Ԡ{GZ\yW~0IѧAjX^5 NxeRZV{,ՐKvk21~x x+ʳx̥Ӯs[mf:H򱂄v@&˿]-WaȚnTYV< :L 3'ܝ Dǒ!ť֣?lx2rYH{{(c.N2\i8^Çr3̬&!9&ǐB3X˝d8x[:Hv&K<̇&۾C;E׊S.d:j^=-1 v1(>su.gFg2nķlp.9pEjNZc6g{uyƲI_ixgw $IE' 6h%Gj+BA3KMz S["KV֌\ODiO?Lpg|նzI#@=˝Pl_k.̧̦wsi齜J DW[sIFB(_Q;ߊ[pi;p]i9fl#P 5ǩc`(,$Tߴ҄Sv=0d>9Vat6cs/RaJe~qUL3@qþEvaL~/Gs?ZRBAtx2e+7Lϗt9 P;7W?~ј_?PI)4S B! ?h\ϓ0߹?L7JA\fIN>vഇZ!5㗰ɺsj0R{2Tq?9,b8TWż[JJSr[-#e^/>~[pGh~ RFչɘW?1o8tCBfnPvBۦ~ᏗfSjjH73){"nQwl79=x،Z7)@T l7>[$'}F<֢<vAF rI74?׏ѓ 6M19r=@׌ @EdK; &p|?=nYwNi_"n͐'1Ym5WzZDpLڿ9O6Mt>T=a͡xNLZVQ n1o_5[c84p*})`K'0:14R=?8VC?|81=~k(mufWs|{ş-mU1@\Waö8P*[pT_-wZZ4p8^3 |41lE —v/6wv~n72^Z ~o{";HxǍ|x(GpV>>dL>< ~4w!Ԛ}Um)$I};:^&6XT$MAAxdUbCLKÔRÁf$rqwcٕKv VzB şC! ?q#!}* <#8hx2irU7%kPMWſwYb:h{"ͦ7̎P#DǞD+.! Ós?z>p9̻~v@O{rś+@7?{`~vxZDzHKx(GpVM{?ྎ]xacX}^ɘ|kwMrcZdx?WBnV%u#П1p`'LFZZFg3f1W*'*@~^1d>kOZjÔRӘE& 3)s;o[ Eۗdu̖ SA}$Ȓ ~,l&awv|4ǗW}x_ ('YRky~})B5D/f~0dzTF8nʿ\4=l5Bf|41/lsmd{BiDA8aK.\IJw꽃xZX;?e6 D9wZ,mߋvo3ZNhFs/i>3x>#S%joʤ7Aj~ 4> Ȓc\Ό\O?$0*d }xn>mn}(*~Qn5&|y_oQ}%ra&e@HB"2!4G!f~rsPPhi2vBlS Z'VPk33H+`_|љ4XR0-Q 8ʩև{UF/p.ğH*]acdlzaq10 52땶\z Nn4?X$DycDu-P ={]Hl>ZuS|j'a8iy*O~@8NsD^>f.N=JqN?Ó ɾc@̦^#D=dNY;?u<.|X$:?8P"A ,h?\6g{)řyNdsr!ėW`3kvFB^ }ԫCb $1oMsևKiibcU;f߭&(Q)4_HsvZI73)$_9HLPO|sC]IDB/g6Z K-߯~m*_0SrfN{])2KXD1L﷦9r'7KoO0;-o{ʹ㖝;M~ܹERAk~4ԩ0dM7]y~|=[Zõ~ۗ"Ճ|wiy*OpgA'Flo{5h?H[/nj]a>n/@$D{ٔͅZ+G-$ J#YO7׵Q .ZiAJ <ʒ1CP}Prx;UB`+{sGOvs0sx[]lTSK2lElzƚ8;C:7N$L XȮY`ssfڛ3$8 rܥ@||44 1@t 8!&F2%T}?@!Y^^gCJ V}xtz-؋ׁT}C؀zsQ"[;tzA=w>>p9@S)OhqThgJ5}�Zl`{5!Y%~(]Q0>â#4t=ګ sةFFa~u]/x a <0Έˆ`v7͊ M<ȇ? k)KpId"E+?C*b!?aE8Z.yc9uP! \ [Շ&/?Lgw= H & 7V^cIE,`vnMnޑ ?Lqr@> gG{Z_hnIJs~`nu ^@_oTymL9uPk_BRJ1M/'ݖغmƇe2m 32ХS]jӿC3 j3(\]cqfr "uQZ+F[,kga Rn'7"mF2G*d k܆vB/cUcMKʰ7^OCp_^u&^=ӣbm~ XYKɍX%jLɄeJJ1ɪM:L!~ЃZ i D cL;s4xϸH@iq@}3A= U,̆{ 2?_ :jUJ*W4bB8zK}ʳ0 W}h{_NI7WD}ۑy>>L zn^=v}Wnc̼ m` 0 .[ws@Q[Es\^Pz>8Nh}gA.GEn$ uejj U#A4[sq7l쯇{ū>4頂,H hHUa=!ϾzZUBռlՇ4G FT~ l}TPbBLroP⑾8 kkpE%Kne631.~bOX|@/hNTyZnz+? Фg|hFe 7>?2z] ggި});;T#\D;UoO954q`v# MHZs>Fm +Ր`R` 2ȃ ]z0fi{I' [ $U/]A{~b.6ګho{oVY.SDjl(UF(xX@(QЩu-$pǝc|fňA(ӴGUxiqTh{_WveV}vi+kXU$mSeX0=gALBҿ9l=;" nՇq6Ф?trQ߮W41/8ri|34/\1 x1) !Lh%5]%Q֊(GǭABV)+\#86xV~tfZ`Ҝx1'9ƨE几uj]s5R;y,M'<["$$Cj e7}lg72CpD=Ǎ>|K}B<Ux{rKvS>h,>G n:~ $z=n~A&@tx u*Cff^-}t>AW-z7xt69A? =uVYt4[x DZ޿'YA`8%Ϟaz%ҁs깇z.r@KqO%v]A*,r'ɛ_0I;AsqB& #}>:JCT/n` Hf]Ҡ}#G!8~2uRYCjyUA=dz  %%٘UtZڒըIWN=^jƇ/nkAi 7Oyԫ>x5(qThbD Mi 5XbQ M;? RAFHK5>JWѡ9sLT}Ң1ūVZ>-֞R[a^huC=CQQG:DzRۢ m \TCC"5؄EzjͨSPC@qW$$ C)!~Ѓ\-72/4=*̓ңD=١XNq߮M͙1]Ԭ3DunG%W=Ž~lT~9_~5ա{:syG6) zDkhךG"\ պKXuerˎy7-LPҷ+jj F-UV,[ݪ#R텩C<?dnv~ZnT8̼@'Ns*.VEx ?7 =?&?}uwoh7谴k3c sHczH"HVx+@bsUJY,l屜,@t6^RC^^Skr#qw}gSf@WrE193c<Dq9S+?ȞG oqXh`׎7z뉶2ІI w 0MiV>-Uzd쮺~9/5@|8lzк=o?Q9>g9| c<*(Z154qmNWwq0ʎ@@V oʆx̆̃q"N9/TRӷ)9Bp"%X>4z]6^iZArux8NN'ا?R3uoX&İJqH˸F~Ѓ%0`mDF07j܆1׮2UD~mSՇ&jYmQsZu"/oS7gƬ< N+?H]֠ĝ#֊ai8@@VփO ss酼}> ҷ+jj F<-UV,[x#ЮdcaJWjrQ=]A>tPA_ڒy0ٞH|:07P܋Ve}TayA[-L N>dbaԚ4]P?z[=={у%$:$ ʁTOY?zy_پ'!lUWP'Ā*H9o L5}ܫ@1Jκx+^SCِh'l=.8zH-mcJΩC8.]aP1]*OVۋz9cSs5Vt; !?8AAT}«~tVacqzuܷVha @xn@J z*!!)zۨ2Uk,pU^lӴ-]Aʳ]a#xh5”с^״ρދRQ糣#Z}Xh:iM8, $#8yb=> Lҷ+ChQNC8W}htw>Tc*?D=١Xc̘WPr43rpHG:|/8g"`.לUz+cWDf_ Ya!/>C q;G!ˍ!,;/!Aa ?<1:=_#x}S\bJrQW~ ?UA`{c-0҃\;ᨮ,U բ"OrOC?gqnQl=FG=wzxFC3"8)쁇L/03f~k4+xNRɌh̾&1 OZ oL(% 4~kKta1K>/gz ?ÃGϞ G!ꁇ.&ԵK'< < tuA-\x~VQYece"@eF{_C3anܸn/_%ѕ_RK%5'T ep?|B՝Rnku5YUo#xjl&#90 B_A _cccl r*C!($׃|H?ѐ7z ?y`/Sz =~z}ŽzYg1jl3懂߁KW, f,@YAj nվSޯt!W7au pЫMDwJ^)Ƣ\U:3zSV΅FҁAs4 {-K)5>&@x{ %zR1pEC\2.Ua$ѩcЃ]OP78]U@޷ =g<[D)>8+ ̭U|ix[4}Qkα x f,?N>W\A'_b|Ref(U'epJ xTǣ򮷓]R q8 fP5bҸE{OZi@dcqФ?z۷NF=ա!pbN'<>&|̐t!RU%f(sQi^2 96,zE`{ >d$U8"Nta1V%UD4P=FЁ??$:3GT~X/7Wˑ ~zࡳCPdYz0秺~XuB9uR}+mKz=*-'3m*Abꭼ53fE.˸F;f'p_TZWS>dH!> =p}Ђ;&MI6uƶ3_r@zsDjl#?J6GӃp|ϟs20:\ݭΝ_0V DZ۫NqB@Wp;'Ѓ\XPB+_y(3:afW6] z(T&L'4[pJAr+=?t}pNmE<+CFYlV̘@Fu!އ F ?0MP-n#}>:?p'+шT/ f(aD'3:0}ۘ2M>iq-p@JW}hzB[x2<_ُL?#ed+ң@mV;|mg/߹l \֜?:$2ь!A&pNQSoo{:k>7@!Z* cNCp<1>x'Ѩ;%:NC{_`^Xt$s1C~U~Db~a<"T$Ve1`~ȿ!1 y2z~2$cێ>tB'fK߮4BeJ6~ RQ~OZi< ,r;{j,;73f-Ы@Uaˬ]V;OBp>i;Ana?R\# /SFCN}zȳ t'x@ͭW$GLy,'4T~^{fw7qp{$;όYz zﯲ>^,ղLgvn j}"PTEDOӣ@U[R?_r[>}#}>:j/z "ᇅI>h !k\EM߮sO ]1Dr1ߑC89|\ "fƬz0hWN*VaCpEQzKYF ?,P|at岚0:=dz?O)ƾ{+3͇ie:ސ7ܨ"C%*qâ;O'>/*S+eO0r`YB`3% T#^o ֡\Gx@c'<73f-ЫQN>WK5_cCO᷁RUw2]o[QpI&qHfy![~b8` >ǒ0Z5%0g/fk[kJaqS>x2O ,'ÀdsT~ IWhr*Y٢wDZ"kIQfҹmLiț2԰H6%%Xܪ>D=ioʋ.u VM=q F|ȯ{f ?2H_Cr22_yg>Ě0\VsƔT}ʲ((bku5YUskUkpo tE2d|(H^6` G: z_OBOM;wqĉ=J4Ǡ]QMX݂LJy@8~ >REC3L  ̠F1OTr{kq⢺8XC}LtzR>ďJYzNN[%>>-=\kW8>gQ 6}9=_cVqV|OZ7d{~X?juf~v>Ą>tժ)9{I4[ ?)ƢTAֳv <Ƌ{byi+*LtNpZ tog^w=WfYUC\*?\{(V-~/ >,cotos^t~8>|Q3 <(:<^j쟗fï=By* <:@Mn,([ V #NetD~׃_ثR~,(r󀋠i{I' $ҥFV}r)52I{;.mc_/3Fü~RS9u.5&=.÷6-{B+~:mSK%xT)uP!0U%XaS3B$~Z|Ս'OGwř1f e9PާYoL;L.EU$F=ڞѤ]aj U#F[U6_rzQaV@PtOГ<łG(kb {zfJ5+4HWWX UZѭ@!fqQavjJa^I+D> J5qG@Zcp  ͪdAN'7dSzt!.(>DKfҹTM{%\D "(Ujn=xS*Ag[ |~S483feٛcYN>G@* {inj "p"E{ⶑ0ë|]aj6y4m/$uɪ:grׁm>~^J3 r+U(`v?ea.G(cMx 3UᇂÓ@pa]Q?]){7u1TReJTzȳQܯƆ|!.~{f =be^v 3cF 7zg ="ezhr_a\KG-.ҹm M{OrmgѪC'w/x3g{t_4WYڊtB@[0ie;ސ8g TI"*U>tanØwH?WoʐsHwU߻~]4_jTltc~*CaSj h߼t7gƬ< r!?$Q@H? ljOJ{\qdwRGͿ"`|fW*TRd 2*="@tpՇ'N]* <'mWNrs >KuŤnV%~bEϰz~`瓜{\*CF()b!;̠CSe5RV3fRɩ޳pDݪ/K)Q!ʁN>jYݥZM6EZ{%|(zeq1 iԗz"t{cr凅8>L7 |pJ7W);m/a8?`0T}쩹'CDw~9~cHɇ;<#(C?T@+ʠ_qa#{N_))O_ MC2D^H߮t6+0e0_JV}z!աC=w;%v zߓ8v"X^Z~WfdK? LvHt0g-;ސ f]VWb$&gp>9ZUؾ1zҋ}l#0UxPWncq;FKҁgĢɆqMnΌѰO0pL}8fD7g xDZ)xP qC9ӁsmlоG D#nRƇC!+=\5ഽVi0הdcCs0|J]Lto>ܯƆz[L`dG}s9}LGy밖"#C~D.U!l p`&Z7v;q~`,!CЂD#z^,3S & ?"J*b `rT}ʲF`|K%ý_N.~{o,?>yJ%;8BfS- SGtAT}r!?f"@@ayo?5Qeهv08頎 @+E|>B {OZ7d`~ȬXwtajVʍrCŠHE xhqrBmv{uuc+'dzy_v^f,@\ºnT~`.Q>+frH0C;!WwSu"耍0}ۘ:O0@>vv+Vz)yB ԛevj6u@_h@Ξ+vG?E@R'-=^ Zd@ALoGfCCت>׃_Wt\2m/i]Y LA3LE4xO=v^Я>تI΂GFb]$Dͯe?4(p08(u]F*<} Տ{~Wo3cVPF LNA-~O'bcL*jN((㱂:x/O 0z++Itw&D^]X)x. ?蠏w*̌Q G1Ԁ| "2Y Z} J}n@ A&'qxmײ D P_(@~ FajrE#Ѓpo>iq1c1{PbK]ttu^WSmW2 ^r?vͭ!Di\Ce \T4?<SY*<ˬ@1q52N3Pc6rCSQl3͇P[G:fXϞa >Bccɼl)ƕ1+8FpyE?Z1 S/8U2oV7 Uat0w,3}(hNTy="!73fj< mCx\4۪';̏?Q)((Mw^ϱ<)L P@,$C#'j⭷[=ե6>\Q;%:)\V~7FtEot6dDžb: /`Z8] xe &uCwo>ү&51\t_fwEՃ_SR/%OɆZp_cn]L=@K ق9=S¶MH.(%,={EYN~sCJw @ 9Bp)ǩ>12v[,q3XP ZVl1˧]26ј&|dsi0 Z{y `gZw<}T  zտ}4v 9NNf-}c  ~ӿqnQ >F!֖zݢ f/*05{6+<yJ%;djKNr;{*$R͌Qgj = T%9[J;ұòx.Q{Ѓy{A Bu8>^-W'ߩt&*qC!Y~!Sx0p_z eهzdnn]t,= D[ѰT0Y/~@, 83GI1URE0;Ip!+Ր7<"CfC&D?A;vJ-mcfS byNvw+'Dm8^yjcl=t2|5//QV~TSa\#$y.v,n@0VQzSIk R=~}+T";@h:آCsT)s@uB۵z_#MDEU1$}?ר<"/¸RT}e]3mjpZ;~[b[Xe=8EFA/MN'M> ˥upfe0_q~Nca'ȏyy^2;0.:%,{i¢yuR~ :}ع磯?&`(Wo,`D@>պZ.[[Y,4g/K>ij/Yy30˄LWﶨagUSo`$ۼy(MW =8ѯΝwlοdW(9b IU~^__ܾR#\1D+IKRpn2NngOr͌Q( ^U.ń5S'S:w56RR;-ĎEGE+jcE=}FuNNe6 B&|?u?y{>4& =L߮?ً;d8~,{7@KN^athۢp̍_V:}V#P0 Tȇ9F)1᳻jF>|+;C[ڵOpo _Ox 熔u`7z$Gv 7R t f򶺳^׉0=jԡ c#e>ɄM@;̌Y)WeO}|j1 ]ڪ5*@ k*fo"/ƕ ?0vGW|8,~oF.r[l +Da;k_VEY\ܣ~X}JKCd7]p+}Fz O咽_#2ZPplKjd@TQL5t`p#g?yDHNT痟[A8#1Q(< F`{9F;_ ?de$:U2ͰZ.[[wjM=~OZJx!Vx^z0/T0G{cHzXy٪QSRtD8=Wan?݃*0?p#+HJR 9+uJ~rпԡWꓖ=%ϡ CE MW~~vu$#~Hӣ@]p9NiMKG urB%:۽\TZo}0iestu W:,1zD=*֖zݢW@NLJW~וos8g/:C"* !~'xF:prB]RpYz(P,3"jKhM`ҩD#Â`m(tu ݞ'5AbBWP/Z_)5B9-g4iz vP1jV3H_F2+%UaT,bPQSMeOx;ApAruL8CvE%Rmn}KO(S{T U @2a*GjOrQfly VFZt f۫~vk'=. HU*?:ZARzxݢCcSQIU{rBU pDw~9!ޮ_ 㧻c}̲UJ>'G['ꓖNLF01еw>dvP2!h/=Lݷb*8 ]ڪ7WyͭW!\GpV~La2h@Pr @lj7sHgkag7R:psۛh]=CKomU!Dq'Q{Is8G ~5'C.lcECp K4m]O:A?0Ja ?,V[j3:00}iG|WM=y“355z7x=L˥5a/#U 9_oWcHX~lu Vtȓ qUKm6}Om~Haeg_deFh3~O'M|kK=}25uzf/Y<T⃭$@#]!.Ɇ|yiuJɇˠa0_N z.=.*?$=.dô2C한31oRKF{s#9u0\>i=f#>',U ~ev73Gً_o K.&v#S9k+qNi]U b}}>8U2aZ?7--Wm^CɄâb#:0e/y|VH͠ղoTG*!"6x FY v&Yi @lY}[$\XVdbxL >,{-ӕ*U +? t0pN>ѫG~`.d r]\G=.dò"ǩ'|l| KIk"lA!43fԓ*>nO)MT} 41- ߇;ܟrc!LVb|w)ەF/}|^[[FL^Skp8@ 蒟rm飰M>@v?u@jpe Rj=Z')>X1\ ?p#8nubC޾qK-bH%YR BxT/]:!ޮX)GHF|hk8CR0̖ c{@Lm>j>\~F6 +11|~2uRY=ǟ*[W= E{y>iÔ>mT^v³GN#ߏܺz+h3~`==vzN^ $6*@n?G9N'L~|X(k:]zkKt пkm=j/iz ?Ǩ?MD@EB,1;,'z&rAÄvri' S3Ňß#8z+?Apa1?>T-٨SDM6"=m/DXB.E* @prB^]X)14/;>'ѫ@,Y\)AÄ'hLg@坟F=.dU}SAK-jn#ה}k p^xDTj~^Qݖ,3g{_,Bʜ4T}!cd;@*0Gq|ظC?s1EBCj]JЃ^\q?0g/?пI+Ea ׮ʧˈ+Ý& VQuCnnd+ksBYMr Y5N} 柔R~3Bhabžz]Oރ⾚Z.73fXf7pFq3cVFiP렫P;:TrrB]^\-Fj6YP.ʦl +a&`Dz$0Osee/2Fy1H3!%s,< ˈEoMEvZUM[w].O;QX@wS:u2S|>CkuU0\j՗Td+Q1p:N|g+دlx? ?8Õf ? !˛?_mjN.:)}k{_xɷ;tSWRnNncpe;4iOrP0Y<MR2PJ:?. Q䵥k[|yX*١b9j!4.Ƕ}FwGTٿZI}4v N.oSvn^SʙVAp>"p_^.Ե7孰zxX&]@@َjvU<8N8^uFH, :zI U%ԣe|b>T S+w1^@љbL |W;ɩI[oԬуqS0n0*+ 5Kjݛj2@G~~1ي[ >0>wk[o%rXX=\śW rq֊k{28GTjC=s,y7n܍"]joQ*͵{vyJ Mt3cdp_O ;ׅv=_,/*.I 5%r3_>$W2@0dg'IyE(5+hٺT3_׬ hT;67١u줃)-byjpb9REh{@i>.? ɴ.uzt떵]+˻rs@) ^"Cٮh-ƗkV#T(cpe 慺Q,ohQ;@] %V7tHǷonKx^w ZS-}CF Fq~rܩmue /e''Cn^ alZ hL:R*7zpXhG4ʱǷ.mC=ɷ{lmi%vHa5Lb|2+5:T`-~krZwyR A]U7G%o LW> O%n ??۵uM~hSW6~:A@T5s[$<>\wdTzUJʡzP,^xmI-v H9&ϥt#n  :T k v Z%U\>8t،vi#sτ?ז?>lسks!VJ~qR yXZ=\yXȂ-] Ca7(fRԩ+>y.GPo_ۘmG6an&ynXO=;-Ok׎#cFX2$@Nўz_=3ܐ35ۺiO]~ َA@+ $8Y<]kdmCH}1:>׸RVWa}?*7uȎr3)nַWڐsm8L}f5N,kC7pP]j ?BQw~h s@[xXT0S~CA;U,o  w@[ ĩV<~:`n6ڞsk1Mѭ] ' m[ RrPr[4@[7e|md =VGu~ʡzP]?mvC?ZԺ8] 66ۍAgM|yґc'T_lGh\c:i޶Oߧm0uTzXZ=\yXN*n51^y;vU  3|(ڭdӬO 6Vf+  ~(Y.Ocq |]}^:eq"etpbT] ?mmb2 D{xmZ"@>zmSW2~YrNHh{X.oG˭ZX/ϹmIgn:ݩ~,.-_L;wp[*AJ~XSoʱb&h{@G=?Ԑ??fV;vnM}vuŔ;%ˁ0 4MٰrXSnUZΫo|ܝt4_ ?KVFQz8!tcǶ5^욧 ?9qVisUʬd)V)>6PmEm.vyM+¯>O6EPQ 6z@ÕC1:qt+o ޗ||v+gդ#SQ w6c:JZEy5槳ۥ \ WWזsu8ENFx D _h>t\]ZuR /=:^x?vru!|bGl7T ?*EBy anVHmq.!, fԠ.ϴ\ tJY=\9a'z8z8!t+kLWN?ƊV /_qCَ m0mg p/պVK\B\eB{Mǀpsk !0ʡzpJn'tJX^-y8rC}=Cɷ;uPq-]y)4z0kYӯ,8W@tk04F~yRv,6z@MP;ʫ4+MW @dGß<:|q}1{* j%J9k:@ @LU :E0l~Z h1p7ފÕ׋e)2kvnM j5(mᄳ2+5C*N0\鶕Kx`׀ _Cw[^RZ籗TC*7VW*rX@z@P_O8P.f;NER:C >'2U~̟0,~S}l7 a:L5Vn @=rIƉbÕ׋SP>% Dh>.v&H8( tEq||φo|]NֹL|TU F*g- r+{_vmq^ 4}];U?;?.^ֺFs!E?ގᵿ?P.?h>āO7 D=ɷ;?{ƍPy*P=,;uZz;_ >HφxMՀ,;z@Z+b9&C.fϗCZ#Yc.vE_;HGo.m]uid!qP=w!!ֺBM^ Z^3Fvة@o݇ |ه΋[.du 皌\Y(ھ#JM~SrxpeXN(?@Z01^9Y$u`8 $sm"ٗڌaDϻIw FMu6ht*9!*}z5()v{li8sNtuPMzwÕCbb~$] ѭ[:@vJx >L93@S_z 3ŗNmîGvܴ HaoÕwa=T8Ih,<<5|s{_~٭4LXFuju~-w.]k݄ç󙨷O @=~x{1V=L*1@s? D}z( $g<[+ɷLLtR[Xi}"4[~zymfV;Q Q&#>z@Y+/?R|3FJ+4@thGnY @??ە>L{pwj%,hS~Vtڦ~癌<3@1.|Pz /PuOÕR@r7L7dVV{%iȷ96vդSl`m2OFծvin׿0Q-~Wfqaa>k8 .? ~>=yסW d:ybyv\R'T؄J;[o ]9uM(뵰O®G*aoߺ B̅!4::Eׁտ.~-X~V,U _,㕏+~VÝ. <#}kǒEUfi3fV%)8f8W\{m+5:?`d|^][L2RqnʿgHjp@آ31^9Vvi7LV: ; S͘M32I̤;( mpO{[Xt~ ϪAYW5_\|~r @K[ڇ;] RwLhحCɷ"v& w ` @5n[tqON`nF |'ա)6MV2tO@ηLݩlZZM~xOUMyFF^fqKd%恆+!^M D: RԺGBlIύ.@zKSp@OϫCɅsP@ C k] :Y}ò@ 2!i5v70-Tsj@~h\@Ot3{a-k;?ضۍ޽8dbxBhj]уr+}N ~R6R)$r@@-v SrUڠv[7qgo7[])EjU h&P9]ma>kաMҟ^R=%d*bъ}h.G C=ɷ{ZJH-xr o9.᳻韻]ZA@6-P6~tuL@F&+o@ѭ[k{oڭ 1"ʑՃek^h?)]9t~>ˊpV ڕ0mSANW^x?vru!@,.|B]yޫ@ *eVjV-oyV3[kz:?enZ #k o/^~RvGޞ=~nvA'&?pofMnql vEH@~Ș. GJ%,[;ZWo?3hkrw do_'ա@~S=$tؼ@~bm)!khJW| O9* 39}Dٺv)iڊnW9$&rɹ0mbl[ع5[jnA7K@OeCUL<̧Հ4RQ)!>m&.|v+|~~3BC}=Cɷ;k/?vQ\'<:vT⪓ 4O֕ 301syR 5 {u|4zG phQkV~2mom <5vqsi-~Q")wA.y__tr)!^9u}({\>ea^ \+@2u(@~hc8|Xo>=a_)momY=O]M:4{+@5n[9ʾb& ΪC;X&u?JX^ @|P_O8!>~~e Ws0qvp#=YR惯,qt 6f!ܼh.ӕ}(Ѕ:.;?|w` gG/ܜPj]aqU2SryVՀ͋ԁ78-vN;@w~ @k{B|nY;u5t@S]_l;4ɮtp&i:ىOϩC6W+V Әt W?z{odf[+)C7n_caE H q uenF ukC]:._;?8w/7XϓN+vtu,jm.[ݷrk6Pn᳻,KPų-Ϋm A...O7S+o אkfFtxSWN+cJ\h'osPr\i5v !\T 2~2]./T+avy5ٙ] >=Ԑr-ajfymI0-2ڟn[W]_b~ʺv)96oϮckSO<Z3ۆ US9"E&+'h?h>-kbَft}hЩKs pYׅjYFŸ>ۿomyŵDK^2P5!]v7Cwx%hUxڇiGס2+k`{m+뮁?~^!\Tm0<^}}k!TkA]ۻ@?z{oن:RX{pJ(9%=u+@)& ?eeI !?rxou::፩@y.] zѧr<WKC9uu!US=&l~Vl|{oN*ΪA2gl;+Fc砎:?t Wߚ|>V_=o{ )@y)Z9u};W]_æmUOpyR>Fqr2RY?[@g0ܚm[+m{=L,k>,uq1ܛn[Ŭh[f`3n+LuȵKYvU5-|mqtՍK?%9u8uu5>=|w9}ĵ3 h6ʡ]Yp5Й% GiOWN"Ϊ_~1߻9X]?t ".۹7L7·L=!vH4og]ϓN{³ Fm+@َuh3o{Zl暺vQZa>+߆sʵ$ֵcxXƊժ}ͥ3_>ym`WvCZ"G6m|k'S5gHͳy.*@VY닮 J]|TQ\*nly~v~?=湜 6"&+NJ.3x⇓s qtPC{l[SWRn= Ќ )>({Xu}(e5H:gKkA?03ׂLok&u6T=<6+~VÝ.K+oM{׺5;)ƟmksIGhJo,ul%ɩ{mN({zwlµ!ܣ27-<~mt\Q=5.1X3|v+f^3/Pk:u;4@[DŽ2-7æ~ apD]6" Ѓ^u~,h/GŷZw@PAjG C=ɷ{l]Z{;nM6>I{-@*GNWYoqUmldy) gաY6OxSP @i" bbGwM)7w³h͢tpog[=ofm{lī/yS̔ttuL:u.<5H}Յd~ݯDIS ؜5'eׇs;܎6һBF>=ܴ:4ЭƔ ?D.] /_DӸ?z{savi5saP{y5n[u-W'Y7Y5h$ڜhFdq1?>=|cP,A)NxF*3p_}U_18>0}광<\mj:^@~ ] Oj~tq>I_[RASWJsk3˫ٟd( gFn-3Rv~ױUZnNׇMLW{BؾS6ryʵ9>kEE : 11^,C?ڼ Cw[+}4|@)@;ܧ{mB>VEդ_Cz{PΪ304x] zѧWpl飴\yM,@r*-HU 6kd~/=^:6}C h%< ] /KnC b$r&oW=j]ױqСF*!|ϓmy:<3'˧NBOtJhvڞнzk%| W: v Vn[nrf߼~CiƐßՓahemy ql˞ĎН$YM] zC'v]8~~u}IZ燄sc?ݶ:C -.(u$ ?G]']_Lȩ on~`@=%2j cJӁӹE"gb |I+ y_m$'7aoφs`ߓa/:]kz-̫A C4 L.] ɹ0k{B0TGc}:tjֺ⪢ݭpLsnw [/m&},;{vΆ*GKvy^ʺ4.c~n Ca'~ٙM0Rz 4ЎZWh@wRZ$}i]j[GhϥC-b! (oMldabR-W-qʦ@D#݋͛1gb'W2@>vG:&mFk3Pzz_߳ԦE[Ysjt421^Btx=p_On /oUsPtқ78R6xbSvQ5py*y7\Qh3d@}z( "?7Wvyϕ 4ʑ1UMʮQn2Ǘ[,,t;}g^w~尐cx]N~Z)cMlCGnY @϶˩:SIW,@ceV2f)OG˭75جm鶵@ g߫_L|=?e32] ^xmIז6p• фoOM _ ZUZWK}6|v~23ҕkafn>,.-+׫Ϟ?nBvb^j2Dc,ܻ@?z{?s \d+ /Rr EW,?lZCmdD'?OÏ~x&>u$eɥMS>IG ?FN] % O%wggfWyqu#vFH9h0@`Gn!3~mGosb٭:Si5@Ӫ}Յt3|oGHx7ֺNm_і\@,̲)eׇS5W!>O<ݘ`E'~9s:m{]@t ?_.VCgg֖;] ^3vnM6 ꭕO 2+ ?*e!n eZֽ" fII0O.<آl]X :mmbr2VCp P_O8PLjAfs+1*K[h ݇Ykp`{Fk @`!t!N:mv7C&] Ɔz+oM"#>df`KcsPr;,LPjFW;CؽOfIux5 0t@|k{_7ܛ|?8V 3gK-4P|7ؤһC<~nAl& ?Qr1Ӑ??[Gc]q@u|rb͕2c``ukŠk+  [OwgQ̤t>:R] ~~c)7 ;?pr%ȚЭRry},$]{8} @y]!#hKt@,6f|vk-BB%xy_Qn!,$m#&kuC' e}c|t@4j,qe3 Jq_n!,OA-`;CؽO!̹רlUUtZ+⌊ER5ᩘxH`@[k;>,Ңc!|_8zVԠf#; S%;?K?Ubb] R҄f;X ` ?T3G[f0dxlc=s ɧA:vt]]ibr`fZh(d5O*tܺ%  y}uq_fʯM+}!=D:?Kv~L@w~{q_7?MwtP9uqyZ+eׇfCy|UO; v!³X31'T3, SjS=Ꮸ>j2Rw߶wD$!³X3-Pzt!."41^.J-0e=Q7]UN}gg +̋!ͨm/ޗ sNWN @~ua08J~({|9vŠTHM+?~nQ7(IgN@w1u@?9]}yXvt(UheVjߩN6P=鶕c`@!i5TO<ru`p=s),?lS^ @w] V+5Jh &R;.E닮QZlnLh;i=3/{L!r 3uN@w~:.rF@ܚv{AׇX^RZ]}}uC9Y-v ]G.S1 ?l`f9v ؓpj~-b~1dw ?\HmjP9BGLWtH.o! =j lfINd #lky!$@s ؤ'^'ߟCF*>߼venF j%:ӜTAO jZph.Sž,llq5ݶ*bT6 3?_:1t]e`0Bxyfh.J:ᄳd`+q&ww R71;{tx15m lI;%] c!ꦊؼfL:SnҭQՠۆ;xb70}!tGf:?4āV]@)cR .;h|UCЊX#3sDX gPCz<7po]xSxKiA7nof9ϰh]#Z(~(-CNMWSIƟZXiLB3&E]vtu!]j7\Q:MSE6"XYSa\{JNeu9ᇚmV 8xJR̍o`KzD3߱Z5va7Ԡ'|MnMc* f?$.f6Ј./v}(;;[Mf^hxqG=umʤJ pq>̨ d^r ?)9~{kGZ^Z_6/:0\>xxJY ?yb!;vIXXX׫.0ZМ5[_ش$UZ?4@tZO]muSׇ24SUZ Pw>㕓* @- ζވqANk`}I)vH8k#;7ԠV#;1]aN|z]%@4CgYU_BW s\_tljcͼ91^Ѫ ?4Hu=M'?U_1;vv&&=V99P,/C/Z*l}ˋ7951^9!@kv+}!vv\&ИU e1L&PeBwQ,$e ?4P7BxjC'79N`qu=& ?D&Ď1]7'+ @Y@n99vw@;jDׇFsef7ԠVۆ`1 xjP gwAqǁnr]zٴjۈ)^WM%`= ․@xAs?Z\aՠA/b:W'+zԭO /vh,wT&Vrkq]b*G1Z|A`{/I >y&+'U @yƮOn-ޥ[homELWTMRps_ŎO]YX_rGCRhߞKՍbyU5Hɟda%M7q {rCq0a#bCI6xeREHI΄P]jĿhC.^Q.e>D9t|Wx= 5 gxP?ќljc].$heʊ.w t\Yp@tU&+o( lb+ @Y\ֈD(jn{e9t|t*WUF~h~.5F 6~%Lx_ggBXX [WshՉJUUh Ͼ?~x/yߏ+}7!hkuCxcUٻ;{O;nŁ>ο ແM$c6hI6Q4++WĬnlĆHGl&m 6ˀ =Ku>4mοz>T͟|)9ϗ9c#~/Nxŝ>\5"WO-|ppɪh͊Gu,Slp;Ǟ`(W}O}M㇏ENh2o7* ~zwT|o״ El(\Vۧ>t&)eÍppު,zŦ ^<1yyecn q_{ N}X$yqΪLs㹉;*X_KӋS=ALTi>ʦk7Cs ᠰ,h^m{G4b 4#~X[?'_|_uj=|ùpeeX6Zz߾}~S ^XyEӀ}Ο:|neX9oڏ⣯V5;l! 1!beJ.\y^c.X%t tN&yAZiJ=yYV_=^xz]1Ç,$~F_wcCp$T@eYC}=SbRk]t-W0Cl`Z{lLMq{yr_/?|Q}MJ5yf,s=xdJg>s?6G}üŴeݞi}3 n_W~5XdrSͿG~f#h%v[G}ؐUD\F.]wQ^\NĦ˦wLę>h&wg]7$Smn[?'y;&57T/?#|_@MީC[^碎 /mr&/8Qq-Y>Ov>ktC\i|Zomgg*6Gq>l;G1WD?S,`Cu+_!"O=ਯS4J@L~:iwk_Rz;O7ĝ#ԈM}Um]մP|W^wީuʜxqA@.@kGyĆ8D:]mI,.ʇQPL9X$&0%b×Ii}m6‡s  Qa*"xT|+7 Xp^<ڟ흔Vo:8^xjV@@bSMF[SzӔ~5k ǫ;DLE>$Uĺ5b ߵ57peȍVw Cbկޮ6vǑzD:7'U20-"xo9[ٱ @&ő'Flbr>эGQ>SeO=' ZS Npp*;\,m*_Twjb}-'6}:"oRO19‡6N=(+!œͿo5KL|X2] ~rq=1~8nѦE$p~@D1ؽ }U>"{"x̓qUibmlީ~>= v<^V?Gyؠ{6bZ?G!"qs"G|?GD6a-mDL1B׊&4cG_y@:&5 Z&>V?ht҈Pu{uQ|C!1眂Z‡5TSu`qBppJUk;;;VhRl~疍_[mNd35bCpbrܩ>6G1=M "ʄk\G]:Ϗ3q&5QՂ=k  @\)bSuluË |Vmz [M7>wAAD!D;q i"r>wQVd?bÂ_Cx8xj'k;;;VhR\/Og~]ܐ,qRzdw̿ ;"b@%>wQl#8סC_7qڔ?t}S{`v^i\*?bAlJE|G_Uo`ZEԑD~~Z?7(ݛQol'i >*|(8}dѤ8]}c;YY&A Qo*a&054O&>L?>]?MSk78}&~3&)}x΃>ϫ ]S~fKI!uZœ EjL{شqKdRj?vGy5 |)_nݯ]tӍqM.)1!b`Ѥ*O7yظ|5~ +bcקrL}h;gRz|=.Zusz;ƝZW?6iuv :$w>~f>@?gK nY@fbClhfqbDlB"yjAD4{_SLK{=pp[ c?󫧪ζ\ Gl~R sW$=^٨^.opiL~6Wm@is*& b"b"_/DıjC^\7x8(><hR.OcLjϬņ8t7]x{ߥ*~7wRzS H.)-_us+#~7ӟfG3 U!ubgM@uhץKV@'&fyzm!Xxܓ)=`DSaL}Iip|iҴqKtUM?@lՉMq8V=q ,L}l4~zJg%z<.͙thR+O91]uoCS6Tbʯmk@^+yInjæGf#~:e4)(O>@Sܥ76=<V~ך)ٶߊxô9Iq<~֏"iEDܹ~pz}ۋm~gRzGm_DMF=\(caΗfyĝac6;|#ʼn*>ژQgF* !~Ͻx" I= 0&?4Siuc֏U|[<6~٭ a?~F~?>|x:q+[qa<ly$`1@g&K1sw:띔nݷA 6±u}g=?gvYqp<ΏM,y}US{re* `ˣ#~zaD܁ݻ)ٶ] "6<;DP~gc7}lT_E/fy X> b3p=&Amu!{U!a9S[QMUoxc<\h^w>w"mC9DC5wXJim"#^LzXqxTGVKhR+OWcc^36qG`GlҋMD>#C-ZWO7&ܼP /\kq~<lyD@/&Ki31}_!;HqCc8&h< WH{N[/<|ZќLUQv?@\*3@0zzD$jSZ_{>A 9?{t0P38V,q#%~H .?H㯭1rGM.bO48ޚ/)|b4).~J|Yf۟Ͷ4Ҽu"xa}5_:DIzyTGAD&^٨66U|)`-8/N=@c4)N*xm'Q]>wζpZ:!4o_MޫB8=ү}wVhqZ:!G0/j ęE~8SOfvD?~C˦<eL" oSz۵:q,gHœ) K=@Z j!5‡Y65R`sOVCLyhI0ѤP(E:?lZ>GVNCRojÖG K0Iq<],/sF"yq݈~Nq{eǕ$zvh4)^OU>F8/N1"z諈{bww_O_G `4)(OccY6Unyeڰ:5?}Rq^_kz<5p&Tm2?^q;nC\T֫qć;!sOV2 µT<"Z-D"6Qqgcw~eN?DC-YֹRu&Hڍ Χ*x~_ϽiBI酧y8ql/vsn2 * MԂ"!`vW~qb>On֫k~L0X)@&FTMx-_.6FpGxvFǦ;nbfMR5 h׸T*=)|?nD?uС!Kpݣ ݴvn4aie5@&E "85OB8? Fuy>,ީ:չcJUp# ݷvL-? ֬&~iwŷ{S!“ĴO2ߏSNζ5"r'"T0)=-q#[u'lFbAku }db/\-+D?czm9Ry\[f#~^hR RA=oGF[lvU2yL~߸[q%UC,a6huM"&Kio*ęCA<Ŧ|ڶl5:pzfyl*v,a6huMN8&CR,ȡ~#С v:irY^afe5}3RB=4R|_7)ٶ5ÜԱ?peI>?F-S"#ذ:NJb0<8n]f$vHY5
|?~EPԈA_<,l8q,mr7}?tش$#~Zx]?]Է DzRb:\P&6dT?F-.MӅxg:#zbD=Am:Xxs3FiIVK0&~`4)NjDVp0b: 6w^Gehl>-`<MAq%!- ?FmMsi/8ܡ Ff&DNՄx{j#~p?g[OLOE8@A hRKUGGjdy^?s8@̓hRN{QDF$L`YힷvP?g ?x8J{`4)cx 7R5!l6l>MzѤ8fFԑD8D]qmx^aV h Bhd<lojD8{X"aenڛMhkM0v0d`vu)҅Zx2ӦHdNr)=MO\x߿^ytIL~x2Ŧ%70OS%jd,;n >dLrt2sm |Ț?+'|Ț?+%|Ț?+#|Ț?+!|Ț?K'|Ț?Kv8>`i.t% r$|`eRqjdGJ>dMʉ>dM@+>dM@k>dM@>dM@>dM@+>dM@k>dM@y9>z`fkKV"; ~f"|ȖlƄ>Ј![#~L-Y?G"|ȖlC>dK@%| {ౄ> .!G:C<|yȎN? b%#|s%|%|>dK@>dK@CzN-!~>dK@.!GzG=vx<]>Ka<6FVzD-&~>dK@>@?@ %|]0C0E%|Ȗ?@ %|c.!GxtbP$Cna@CȈ![2!|Ȗf$~|\L‡`ťG+̉ZN%̑ZL%̙ZJ%,ZH%,ZF%,ZD%,ZB%,Z@%,Vlrq! r#|%? ].Η?Y`"_DVXC"X2CBX"CbXCXCX0C"X C2XŹ$|ȍZH vx<]Y>@K`vÇذ>@`Y>@ˉ`NY>@0‡,  !KȈf |Ȓ2#~Y>@Ѐ!KȔhrq: r#|.t% r"|̉vÇ8c5'~C>d)‡'~>dI"~G>dI#~>dI$~$|?>‡, 0E%tv $|?IgF /3 LTpJRĮ BW`%@hIoyf0Ǎ/?@և="~y‡pM>#|h!4J@a#|G?C8@@;[ |G?Pr. ">l^~'>?P>|hO!|$~J‡p!S"|G|Xu+{#p>?!0 !>?P#|F >g%~ऄ?p2‡p@҇$|BCI̖=(>"|#~਄"8C(XB( B>?0)C( >"|?0 C( -7! ̖7{"G{"B>ؙ!B>U?b‡P@5!P>"|#~ৄ*rH‡(@"|!~!‡X@s>"|$~h!,C4[nIh1{I‡IД>|Xu{x‡P#B>l?TN ⇊ B>R‡P?!~!3>"|xCE^HPI`J̖=Q<>!|؃!8C=>!|8!(C>!|!Cb!|C^vŁM}>e>O~7~`]n.sus8:N7ne1t{\L^9vҹrc us'xL GwoIu6 ϯOˆh}?no\&=hϽ>?sw yn:9ػ}~3+P9?/ϓ90OuAuyI2Rluк^5d?tU..C|g{{G.nn*:_|0/vq{ܜ @YbkލzԼNnqwkz&Vqܚϯ8FO|#x|=Kp*&~5d?>/,|~M@1r4^S;"j4n6py7oocD)h]T6~ISr8n}ȏexFs07S8.{epf=?IkL?>y};퍽rSf(pn%Nŗ :kA aͯч7;ǫ8[ u2~?X͚P&~̤! ?nW'/2,$7i4]`a;~tcj<WsqcwY'=^ %jR}Jۜ!䞕=qM0CnQ$.&?bX|vC-0X=\MkzXvsU8~wͿScEEAe߆sl:u^;̋Q2Uο7D$~5d&a$x8ᆞkcTs<{Oߣ9"88oxO!]2B6BHDWb|ÞP&~! t;v^#gm4n {eB@{<}ÕsI36e!|pR8OK)-\@?Nl P{ϽyMx !;Ac"]rqP=UBXUPo8ɜxB@qۖXÞP&~! =~CH f1L;9MAϱq{Ue>vۼ?ΟU#07ܹS̡8bA[[젇BsUШV !p r Ug #|x‡ ڞ'J=fZHn,oo1/l$jsoBmc;=odXUr #w2<0͜8+sb[޺ !\;İSe|a}p#h0FC~?vm ͿtXo"O'qq;&!ÇO>\9|X>5?_ttw؆UtxMنoY R wcꝃBΟxm +_OsawǛxoWcC3}efݟ3xdv PɼDC {`ޯHEauG_D`&k"E`"@$pl"@[DE>]4#e.ϳV/kuwu{?ln LM@]9aن(FWcw"q4 j?\ǫ]6't3Cy!{8iOD ۛCS"b_ ]](2ΏƚF.7,|? q)|ȃzrsZ7NΫnT8 ٦KFXl.q㰑2NmKX{65Aqw>_ Ԙ q͇:Ͼnua\65rg>!P0ǥ!k. Y<JC}¢v#S+ ٦K-vȿ 2M>mn72=MhυP@'mCOjυ0V16$'\t?[p‡>,M=:l'C- |^)Tl%< ݓ_~2fLjxXK*K@ƙOtj\x am 濵ʥg+~RPه@9yˎ?{mFm'}}!| Ѻq8 i aAe @{o[N^ٔ  ]'L{)ecA.:ݟKCP/d~",$q}?3kre%^P6IZ\yބM[ \8w8 0f\6 rl~\ *H&P$q@@(' Yy WGtm.˧m1ͽu9i=]mAZnP \mgACͥc6zٟKCIⰀ} bm6]^7Gನ cHf-} kaRxẍ́\AZȳ[CAE@0d\6 rي WƤu>ZX/w)7 }^4 'Av߀{h#cav9;6R(M\5_ؐ# <8cEsA}e!n&}?tq)|ȃ2p@XK;O6?/P`@w%F_7rfH4<,k/MmP#mLG]6 r } ?tqm tNӦ<NI>WNGm> ԔCQNy-& 毛|üpW =ZHI:](3-/E&:.4 ;k@l.ƶy8})p{K v8 GK\ V(~ mL1έb _B6 [|0/Cc#RgsU0y'`D^:08MZr <8\!>:S摀6.ށ[X5&ɧ faJ8h(}6>1ro æIÁ@W90k|K1xC)|(s;kEZ^A.[&gă" @s[8knOD ޫx/Kq9u(|s‡@%SPV65YDj@Pi6`X&wa*n"!NbP̳>q; >n&P@>׹}-$kD،&T.?l6Ud4asxHW( vpvP(A80Mel`‡@%RPN6,|Թ%=aes{4׎S@w{hPp:^2nӶb*$ntJol!m]^]6 ‡@QPNv`bs9 JmQK;n%Z^4N'ѡ߸ j#9`;H 7h&n{Ns벱!>(r: șJme*a%J _y۾@&Uc1DjQK=Nb ;u*.9H!P@)>ӱ `BbR.C 714ѠRϝK1v8eEP@/@w5+>/‡@%PPN6oFĦY h/TK`6ԆId7.Qq9i᝼6NbqB \56Pvc(TE:˯K,|j,|?;tlC{V$(̹2nûZ$K`q? q No7#{i-#͟tP7@o.@u(|ArJ4>rkS/!rq)aqDB G~E}ϯ!o[I?PRc 9qSLOD~`%ȍKB0Km ~s6^_"{\%3F{6 t>Ka/ݫFJO])"ެN]ec$Y>ȍr\R2R sLx tE xi)$$L]!߾ m ߼wQ]ec$>ȉ`K„0 jnOK1׍K<j P t؏7>k^r‡eU(~  RnFxtWt<k2rjh>ÄyVOΛOۦL>.,|h2+|?@iہީ00&i`nly0n.d$Mm_x^<#mH@?cK {+|?5@v7Ơ:g% 0ޥ0(@MdN `P_ g*0J[66d@9vlڛmΡ/;GxBLs ā͛7 `vP`|$j16!䢸يqi|ẗ́nO=,m0+GPzs5gCH߳f+~  nO}Z &uR}E$f vۻW1O@ΆLg-|XS>y;P ]p3|عߌ  {.]7 (?߭2@[ƤG⩥ v!n_')Knmg[n!ِ l͊.|?0 tgCOg WXSh]iD|6PrކLg!PXfmT"me}eZ;pN1:2@‡@c KWb4{ۙtq<ޔ[E,."@ΆLg!PBx- wZ[1b[\gC&ȳ>T(~`lT0O t٘tZST\= *uf*ڹV"@}묍<[P09T7W@ Ν2p;m_"E-ܘvmo.7Qwx! Z;@ᖍ טr%&o[ƿR?8ÝbHݥ0To ,'"Xy!P@Jm i?aMj57NC?ƹ!sR^r‡s%ЗWXyP)~ 5tz-lWEX$׊ΫKq? !(} Juk^ƓƜY>P@5uܚ [m_yx)ЙY 5TX|ʼn"oE:ϱ Q l[Hݵ&)SaWR&QR x!лC}ocj̫Y:ڄ|e 湥<WyPAhh AS`(66$>[珛bzڬR$(4υ[E:ͯ ?X PxqeQy=g-i)f"#W}SpOGy{)dK|G>;.:bqv.W |n 19@=Lk/K8O;I3n <"{9z36ǵHGv>\k@MUC>Ay6Pmq:>aOB  O1u_tI # כަ9Xtw;iߍݳ&cqDJNVilwOz\(z(M{.4Cl~}~qS;+fr?H-)􎵑ϐ9!>]SO9ZpWquac0]D560=/]^{+L [)>#mS^]a6<oz~-1;rh]es[.pг-8}lçPtY5&H4o.<@mD>伏~Wn2_"љ7Mka I7m c!~3U},ȶ!˕uS6<2|{(*P\{6N=,ʡ vp]{=mnoɘQ{Ya~ [(ҶẶ(qX^?$#yS|waLU! }"hat̍J}]A|~MYܟeE*`=1)ІOd,*PHG0ru/ 158O܀=7NV$ײMr!,k'^|޸mq6U2PĒ}6vY۶nCwmk(WG-b׸7OPk ͙eM廏1]B̍g‡<(|}w0$:rhy>4+]5}WO-L?breqٕ w=tUr^'$lH-nZ6u/+z~6ȕw^64w~wpjxy߻[oM}j}VaJC6>t g!տLÝUMdzs 6s‡_un0{ܞ @¸ELDM87漳8%_K!ȊGmbm>1̚ۓkǜ<]E𡄾w_@ϫvS-PAy9nC{'"@yu(|H Q@)¤ul¤3E6:D#ALr)Y=؀&C_ )Paa2 fr^֎۱[3?{bl,,;m(z1ew^;ίFh(˽_*u>! Jr8u {ܞD!w).88;6"^oD<)z6ǬlH7CCr&?Hz6`׋Syj{gcSXfB81q!YQrʹ}ވ@ݸ%F. yvlLMT9ޠs;zv[`4M-* 6 NĠݙ(d;?E"Y9 |#{ M!6&+KBcfcQAjS/>K~;{}KHR>uTέGP~.>+=^430eP 4B$i{r&7=M7EE#9NJRAz8֜):gpͶN4`T! Cr^žZ(w[ ^9NT>#Q@M.cBN < Mؔ3 }!Y9WQwn8W>|l]( '+6OB3*\8Fy7N5>Mj!߾<ŢËk!/E")g#S޸;ȣ ҧaDIHxr v*-Be8{6ue!yߘ(~)XT+&bsip5Ӂz^1~ǭzvbΡ-S0gn^|~O#PQC>LQPNezb1ʩHHև$Nϕ{oD_X[dzTt, ߖ*;>=iɭi 򟊗ahڸ1 ÏE"/T#D͡ 3*|j6^ @Q^:>]qH>BB'H|wsa(6mO+ nHCxc·akуMeí }*X}}5'bCB9ƭGPC՘1y,PNREcroO mq1ۭi3'/ @|ĥ"/b|PG(4T#K[Ҡ𡒾s<ہMГMm"L^[ E9/g"%*|#NӠl\6 CB$z5NZU C|Gc d6qjc|iaqMGpĶa-<\ 0wC"L^9S q?>3'2&D+U?Doi'?5@7olJBFME|vګ=wM,5_tʍF;ABS .$U܌@^ǓBz!m Z9|GE9oX۹ {~FN=D8(c| .6ԛ¡MD/6yts\΃r‡)|HPYqCo}-`a#( r޼Q1@m䲹]0*zKW06=Q}&䅐l[46okcBS0p+L.^ @6.]+ :ڄ[Eb46 |GE9o(C7"=,*yo(C[J$a"1{Yc̛ ҧ!q?*0$s۹^g,NL4ͅ`46\EXIFn3 u՞:oq6fыAD$FFr4wExj!yr5o1c?.c =M3!HN ^ Qx@8oxG@;??}aq/&ݷw[(X7nPwa,`̘`Vmqr2@zBP8^$:II]y%|GNxlp%uU߆ֶ*0x. }SX3? kƭc35jLP?_*|#΅!nOb n}(jw$鰘=01Ey|Gc8w !q;:̩bBp߾&ï-`p6gW B1r+P?$_ @2BPP`Ta1{xaRiG<Լ1wla/D_;} طQ?~B[Lz{ \!} 2~-e1`|_P8bѩ{S!qrEƶ< |7xdλlx44s̤0 ]CΫ+ ;)(|fh){dd0k% AGd- +eCp9MRɤR?p?!]uI'NL,fC<} Oɤ> Qz 7)\KAAo܁:Uy?XFoX+{SgZʠ0&'fɯݲIa|s!L8Ti4l@p7ge }(O6a(dAC?‡B8M$oӪADFc1{Nc0|gø1C)B HF)fPqOӯ\z)|ȁ‡)~ϝ;. ׵ͅQPB)#"ѻ&Z\ |G.U;ųȍ@0wB@M SόIP>)|(⇑:ͯ  M: ;lT $=n."ΌȢ Q,ߋDMCk% ;ÌwoD̅@a'z_‡‡)~o v: R9;6#bv.Lj} PcYE~eӷ/ yL%9m8^sАHPY>Tp&Að]Qpꑉ58eN+!茍"ѫNh Ƃ6ЯmKCVBЋmwpPcgrmO@ypx!@C>TFÀf‡: 0yMtf%U2!g[c `.$"?|<a{|}I/'e~ 706)|H‡ )~ƃ v: !mKW>tb%U2!g $!.h |GB.e/D"wC\m>ƛ%t' %Δ# ERP){tÎYXIWHrb"YN}- Q9;ބ1BH\ؼEjce@>̈́w V69 ~ȭ_X96}R:fY(‡4)|~uY=mk(H][ A\ Ú A.G-g]zgDܟ#'8ba}^y3!G{ PןEW{`l;D AC?‡G,\m +!ZLz&-.D-ЦP:[ nm9(D|'ۅE⍋PR. $C>O>MC׬}#;osaJ24\:T t-R8A_@"A+S? }Ph/`q3/۽k>^7prM{k`/_tPNL`m_/H$ [HBm S׫Jx8pCvL;R8L}~_>[ ~? c& 㳰':^פּz)ppfB> \ µN7'U.^ 9 A/@N6j&rcK9Ec3I:@ x,@Cw'/\|- jLz4yA.wZCPX1E=|l=~@Н̅@>? @ čD"yW0B@^|ArB@Nn&U׽j% EݎW6]gMf}ѓl#[1' qؗ~JC9E>L̄&Q80{7Cn{rpy* g+Iq2y2rv*t96oyG RPy5p'>kSQ>]?B@něw؇>0J(hx>d%;,cϙ e D@i^?PZ:1ul2f#3Q ,A̅ŵ'"a ~!>̅QPxAHj3 h-dX:g!} >8-s3!Jk׊ Ȑb6}N~.>po OJ}!;j8k-@.cr@[An&Y$:u蠜^pkK2."M,|#d|Qvr퇬etn)۱\/ D"yW `rBfB9ٔ l" /|iQN;©/zH{K!{ &|s6)|`ov>!ynp ݳ2|؏B\ 1#8o6+*$X:A9(fBЩO)|A?,.6N[[ !uS!TX̶H)ˀ6ӭΆe#l0*YDHu>}gM?HQ>{"Z JCuc$ᤢ0Z ($I~ݲMI>+EY Alβy>{pYZcA;݆ t}ܷ|Y#/RPDBJdI~X  hN'us6Y?>D(45F`[7;ð|зPCC%bcJ56~utb6%h(^ `;8E#Pp[ ⇊ KH$/% %sݲ@VBh c̑?jV̈́3֮)_DԴ}is{8'ݰ@BwP(, ;iJgL:9n8P:sdl|ȷE<5}g𞓻tS;NvR ?T.vO9xn`t瀶a1˘#;pǡCe[iE.#!w9 Ag@>04,VdD_;j ub};9܎@I>08v"0~mr(YĠT A'MMVB` nn0np? T:c(!5GBP(?y|,Ka  65tw@Y Agc0ySK"?2 "3~1(~yc?'aR]cRwVB@El~P7mwFl۵nąpTk*}G.#Z x#0 N?3"W+ g&wPםCLStF8muHfmͦJS!}g*c~̄  3)N,\F̄3k!2N 0y|}*f7B> <&Pܗw"E"YI$d4ְGmBU鶴TF{fSEaf&;}gx BE.8j00E|)reȉ۶aQ}NC㡦B0XL$@w,00L|P'W004)GNJ_ 369ЍP!AN+!@΃<ݜMN(jlpSi-$H:*IA)~u< qk!qu(ty美 >ܼqs:oaMŘ Ag?P\X!)~^n&a a0 qLNml:T:jgX# Jr>Ka`w>or1oe +QRk!ʼn'3k#<6BAVB@'Z_/6saO5Ϥ/\%t) 6N||)`PW3*l@W7L= [}pY[[]P17? @5ll,J.y~ݬQACj}82t>@?(7gݹpMk!rws6 7#/jjpP(Q3P`- pルͥ05t}> CUB2Nzq gh0xp lOmf4=w%]SBHƴ*gA*?6!/D5n:_8n߻<ژ3D@?Щɢ^$&O`0k!* PIh0-s3+!{;n c)~"o.m2y* d-T`#9lgY|nx{pnp4`c)~sab-00!n2BXa- ` Rg(r+|*siP@/n&wظwBf AZI7m?W nE9\?^DD^>7g, uX lJka!?ЫeHdI@Z @n&[ y6O}2xcvBPIN:sz-w9lk?@¡sa`]oI/S8 0:n``O@ڳ>?0ɺ- }aM&z4Ts ğ۳F{) @Vr_LO8Emw~pqphJ ll,9ws6lLk(q"{V l2o\ᜋpЅ0@n&Wc~5 =saW?0Y\nɩ0܋MO?>k`*|03E8- K^̡ЉɲJ46`Rhn&SHߓLägy'"@C@?žՕ0p*ZF$p>Tj-g#Xan&}>S0n\m?0Ec>ǒ `A2~lE+t'@\ W/$lin F6d& 0ɲ}"RPBn {p[%R@2U Ƶj:/ =w |G;hܫ߬?09x%$dlvOPWF.|Btö́s>nD9,E"dr- @B C BpM5ͅ0M'aqLn-}$@*+¾!X a羳8č(zgP/<ȚB 1*a ղ  W|mO)q}p C?Ibo.xߘ ;*`$ljY,lu@WII9\?^D6>BP$lw"v@}R{Uö́ j-ïsZ: s~p(~ q$ Ytɺ}"~m)P FT^;.$LqL~mj$?LT _wAXaa;_ÿj N!_7fB>_WBmy ͅ(!mjZL62"MjA🋃= )eOydx&x:!HLA]MN`% fY4 OLp) )Ց@@:ksP@vn&e:! `P QC!l 'pHgQڹ߅Ӳ;3S{?N aBʦ,ū?D\'b%  T.cbl%Yᐪ [Eu['{k!C -63a(r'+!\'z&pxpʾ({-}>Hupam, 9) q&Ka2NNuLA܂IFDB(VT88QM@jc@} ~&x&0Z A7DBU﨑n0C% gaBȹȐSa<\mfЙP [ +3׍RB(~8m󃫍$"@w,]j0#B`/*|1of|)~X1ar<tkU@םCůΉ@-{>B@( ֧9rqz[#W]گ'Mas\$q0 /ä ̄8-""; ag  hF,h{}Z o{ٻa+e¤د)M׍rrrp a3@vD}(Y |lnз>kHJOLvwI=ap+!̑y b=a]? eR~Յ0EU'Ix&0Z AgfB@ᎅ>~"v5m!/$njAIB[]3xij^?P I#+Nv8 bP09x6Ohw!/3h#ɹַ^'ߍ{޴د4X'zd m+!EJ5`lj qqo-Bj9>6F&(q^V^AU GF^ E ?ǻ T0^?|[ ^4JIS7g(@'R3J5gB\&-!M=iHdPV ݳ@).(]>w-СusŴ¿o^ep2ވDRmHUsD" YĻ F;A)0tJ5t?vUMZq8j[[}y. .ELsrvs6 }}KaHM;QH(VBЩJO ;rN Y݋M8DW~L\ܥt3S_.F$P'Xtk6BWQlDMBlAΚG"щPѶwwۤj>:c)8 H@yPbn70qP+vC D8Eoj ρJ^ڢ}g>F`)ݴv <)P,i7LqkI@O\܍:\(M@0([:ַ=trb7N=w[kpSȅI! t"0O Kކ~)~'EQ$0X'stg!*\4 '/y^bw2wFn>ٓQh*HtV(cVs* i2.*҇& C??ڠR"JHEUP/u{ 2ǫ+a?iuxOMKݱMBtEoJy(0@9Xhv;nN[k*Y #Ƀ蟉 bP|R୚W"QנI*gt?\' ]zJѼ";K!|}Htj% OP(sc(~=[1Qšt|F*9<J.Jc7?fɩ-59mR9ͯLZЃMAk>+\۬NOzd|}4,S/De8s>@Y^&vRD?"L$H?-)\}xaoT$;xu?$!8,[l$a3K!cdJ|8 S$8HTm>M61uoaAS^У8 h) ^q|N'A{gpWBv$ ald"fJš:u(]΀rsvgE8nh/q,"QN͠ 2v`nKϨP{ވDqQ&yY$ GNZfA{OE_i[&ĉ'€|7*K! :'ƎQ7r @k_GOyX 糯"!1H@5y{c-ѥyv(~U%"AhRo{-x|7>"};oU6=x# ^S-,S_O>gJ;L$:a-Q-8RGFpL"51Gg$-^ ;1/aߵy"{ ioB{I9}H0aK!E~= }WXq;a8&quh~<-@ mھDDqQ,rÇk 8l8)j/*'gѷ(`.r2)|s}ezfa?@w#:EL,7 -?M\bqHfi|)zH'޿N?Ǣ(Tޟ^s i.Ƕ]W#*^,[{UOt8b!HT7xy8'(|^Ă͠yNNr_!>d-9,w͎phW8 f?x{syF+G CQ^)~ӼGUbHPzO{ˋH"[+9 m 뷧>EC|=ͼTd-~MZ?;M䳯"aWދ¦"1F7T~߃'qI."uQ="؏"ѫIxg+'qOЯK!Wyb? N 'p'NWR8 rZ>(n|_۷ѿ}%y(~GF$K*!BлKa8IlQ. pq.zX~ED~3{$[ 1S{eR8 1o̭a3gF$q?@c!qT烤[%W?͉~%/D'͓)_)Oߝ(zX Qk*ٳ }%= Cm漥4o/P=ޑ8Tn-w!iV~GzFli]ߙm_zHEf w"˛9KfI00 ˤǯk 創0N 8J>}~`9 Q[I; Gñ ˬy-zk:!taQmg󸰿67mGq"Q'<.qDGHT9 LL] |axG?<=yU]k߉;;gh'(`|g}Y.i _ƭM1(Uyf#p~ߺ$€}`@`V9.VDC>N:  E? C[~\.7n^T}F0{rѰ@L`B@L;ٸU Qpd-JnpHpE 47ӌU;;Hyġr.MR9`~*)zRLi;1ohI!~'G1i睙B+wc"'\;O?C9;asڟrw;ߞ!E8)~2ʹ:=Y^@MH.Z^%|ț}FSP=lj[1V"QDy. '3PNN{) |< 79)~rʹEH ?9V1ry#URLkM"͒‡|η1w" uó3oA΅p½,6N9A/k {k>hyVqa(N?@Y|KT9BWys<#'VFP;͛wo*'L<G'ItlC.qCl;"RHV2.d H4{Q6Xg[4(/y̓Iڼp.Go|TmL(%wlzt"wq kևa Y;E?x) b^;`o !(Fluc qvMN5cMQ_b dmP\$Ϝ(,WBP OӗeBv,9bJߨ ϟe.z" ;I. f?s!h=8QLNn>o/Gi dce; hksoD81YN=:9Ak/]6&P/mBQu[wErC?߁܆=&^pkljG+Phm{lSjF(Eyf\ۍ.rzS?Dq&({0.1iviBNBowڂwnX?$b?/ni{7`e|sѴ9[~%n6Z+Uۮ+4Ov,Ѥ=Q'Vاgu ٫d!>,xו!]*>trh޵*nM,H/vJ1Y5mzqmi0f׊Da1BݹsN>LP~ wuyBPkl; ُDࠜIr^n| 6}O9"6۱qVBpn(3*hmI0kŊ1bԙ/sEF>sz;B'1" U`&W.9B6@{^4ϕWT;·k'9t?o#Gv@آU-X3==n{r(Yv^תug;={ދDqbrjҊW͓j/4Er@Ww) f9߽ 1!]oҧnlmbQ$Wyaqd@y-ƷoDW5E&k#y=BX`.Ϲb2?@]¹HTB~*5Ϻd!kO9ςw.6n Mn{Ǧ?F1U$:wܓc+ѪOBК/'^ǍEx~^lt(Ոؔdn=N6Y6E\/v };6Z&'An'wA>hĥjMJCѺ; UWIa_MsB+sBɁP@yHg2u+~:0Tĉe=g1n_!5tkn\.EwQmbtsعH μgW. o4ړuv߿j>ވDrnoi\w6>Nj!D^̎ qyoqڸhp'W7i-6*}E4!ڤ1Wt.*ҡP*x3HF㘃y/ʼn cs-BLxT(X yr:l]lDɘysTód'=χ&'|j>W9G9*?n[t9m}~<Χ?̓I)U>}=I&Ǥ>kGP<){߇nod{i;~/_8f}nޅ0z[{̫hvֱ9u}~*7BWC;lcmqHYڻm3}_0$HFU^wo)2@yIH1!Jד~༱lqk{ܷ. FޛOyoz+|"UI[zsn7BxΓMFC[ A0L'?J'˻}gs]>=;TpAD:Iⱱ5ja-ϋws5}n~hDJpϓkw J.~8111~=8I6M[l ]MNl?d}:5qNq9i '\UFӨ_r.d}O<-նoc̲F$j7ca]\iImΝmy͟ž涳܏4y1І]yzս޹yTa`|v',#hѷ[1iäd>/H'k A~`j99\wW~v{[n߷QvoBп4Om{};{v>3gnʛ$/Dø"?/qƯۿ.~n\اƙ<"٤g]H,3ݻ4~f߻xF"DQ1Y,ն[{=N`0S#e~eh}ǃafD%Y(~fs a(S' 0H02xs P8>]l5 (~ 7G5e! :}:wCkqc"|,sm\4_DŒ>`,u'k?GR$tַMD:&ϭR9i'WP0*UrI>]lj?Dzx/yWkb:5O&KI&orۦ>"oo(fY$ O,vGa+罓̫M0k Xs<ƒׯMJb3UKs2HM%S BPJ$i߁P0x/Ept9UKq*&8׭ ?p((6Vx<7+n}X Cc&tlƖ↣YRc/b.6ǥ`cL|hYKe[. [w7SU7nȩ\qnqEz<H0]1(T=W_bO>H^9żPl~] CUcjd cqq0L$tztY*~i'y*z:'FwP|[[Ш Yƒ_D]lWPNtQ_YޯS w7:sc!";Pl>ދ#qQ^G^j>D]lf%`@X%s5*_D?$n#B\t[ro#c 91ǭ"c/PˣIi?@\inn| (|qX(?n.=DˤƐpvw;Lw#YyEz !?J t8H]jsavu ۜ27Z5oDsaL;k5Yqs۔y (~nAgyt9b;K)^Y$f- j'Is |4n-ֳ`{P?%թ"' bܰ }sdn70LF"4'u[2=̆?Ve0^DNSk}DWa·L] ۍKn ߵsm/`f?զP_U @y]I$bLO^hT':FnLC[l @e^i;/_UIcRe8512>؜wxuy<& pL&P1vb%gu~Zmc>)nk/pVIq4Ԙm!݊$8 HTyJד&`K'dc+6)|F\SϛKajDs(R/t+~@Uz$0 %`qHF'M]EK\{SY̭>ͷu亸<rx^$tw:&Rb\XgG07 @'xp'lZËdch]jw DŽ%tk^ T()&EHO.6CG,2 I.3a~Nj~ ~ /\ ݵscO[{wQt@M΍Ubs?Xp*'s$3a~NjkQ4Nët]U4qH0R OEFy})Ӳ=6Ȫx%y˱P͛7"+Sq \{|'@ˤQ~*t"]ir42Vuk:٣h+Kjthw\FD}_q^#ƛb/EϢqjbMQ<:, ]Aϴ0ɜh>H6T@ղ>؜R@T`I.~wm}KM%U.DΘSm&6w@P8ywϵB' sHT@%@z (bsv?Dɀ/Ye}o8;ܦKΈs|z4.yn&1€~*t" { (5EUrc=LJC?]%e>-Lj>Nh0=cp,?M O%F-{)Th(ɧU$+\h>>D6A.LVr& 1^4D,dYF:|9؆]jkk7yCG`v4\j: Zz={q1cAxzwt9@͇$`M>AKJ O-d#ë:r\v|< jGwjj7aR@w)yokN3 Ƥzv0<'I!"e`7.1ֶ6nwo;F7A6c]em,PYRXGG;?};O6y+ntL3(tfr`VH)9m9W)w* ^* c4@bܰ}ESUb3Q0TT'T.Em6 r?NץO_`&Ƽ,Іi s۹Mq&ź'E t!s< 9=l`o=A@lE=1~ۆ&Гϓ"ֶ bjй5b`y2[bsvo*~JH QAw.UzrB*6y>R8:9p8 Pxm^Ҟݜ{KEb[mƖ;vʁ%޳Wsn] 0ֺHVGݿ(%rz!7 lݢptcs,)hIr4Sh EETF$*tWuwnQ&(VhXͳl}kZ#n NAS= E$5S]Iic7;'n!>Wl_U03;%l_[96EXG/?y;_ e9y\qvO^ 9mLF@?㜤bb̪oGW;}U$Ek&1ʃoyC~J{(ӳM(~K :s>c\NmOw2 P^y m~/m$A"Wتm =@}՗;}Յ*Ojg&O @e 2ad.6g%@ d4PFuN]̅\|/s|}ȥӅȿV/ir6>Ģe`P\}w6PL[l>"<|J(OlNn2M۹ݸr<)2}& $]oŒ͘Eh9hii_j=s{'V%6mBmNknYrC=miy"ŷܮY`}Lj |]1Kד6vC\i3xʧX֋퉹dc.L=I !՞ U) E9>P;ߢMIC02o?yl,kofzӾƧb5;sA{==ם6R8ˇ'q%1ϳ9t%$p d>.M4Ǖ6 ~n CȽ@{mn*ܧU!t{>01n^7i_Ǹ'Q Oo)]N006Mޟ⇻k'ǍeS7f9J_ӏ'j[79!hWI39I;y=`dI~ơ+ku|mSpx"zl]缻yf\8}߸{Ueۮn6M[zlSX"5U06G_O;nܤk=b_C4ȾYb:}piYJw$}P{K|O?Ƣ7PA{s\SZug,N6e;}֛iWs}1z s=#7 ۟P= ¿/x?L_}ۯhS?ܟ톲vomqWv[D?vs066vm]ٿo춱6cnWoWOۺۖe](1?nɇ')Wk*A@ m?LP2@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESMP4@?ESM};o=Zu` IENDB`knapsack-4.0.0/docs/images/logos/knapsack-big.png0000644000004100000410000057061414106361602021732 0ustar www-datawww-dataPNG  IHDRG pHYs.#.#x?vtEXtSoftwareAdobe ImageReadyqe<IDATxl'ERNbz:!6ݳԍ.ыz%Ľ@a{Eaq-u?4J 8@eto+(2B ]ޡ"Dbhd2%;<3`$~f<3t-,,dtu(طvۗȷE_ Z6o'mjbR%|tO-M,oe8'qXB4,{wlS(@7@[kZhG@|7@)MWb{I.somb_Ö .hZʸeGXEOE)mhj)N:B4;ysu[p6NVNY 6!D h儥X=(P~o?η/51Z9(!|@r7t!u{m_JOV;t_d7Plh>9[_zGԲwfqi^{dY% Ff*ZY⌜=_T=N&|@7;lkDSYB4mjwx)t*R9 pwhFd_4\^!p<NԵ`jlz,o%V- ٰsL71G 4~ @T7,GB/e~kT9xt7D36]=_|JЦV \^Q[%p=/̷0(@(ƦQ+ǎݟySwW6ԿMͦ]R1ק{w+|Kܓ@VoS$-k%xsoC4m#ZRowfFoY$fkl}=դ| gڙ k>\: xӪjԮ/dGԢw[~Lr>7_o !nt=NHfS%)G6o?/LV9@`ƦcewhoZ!DZG>Eo7 <%ip3ea\+#g.h~31Zw4vԵ`XFf*nT+ фQ;Np޿}ldkwU'e'WZ| ;Uctط˞{ ~+ٛ\i]:oa Uh'7tu88 x0> F `Oc}6:Ϋ;y(Xᛗt6W7~}9ٱ\{6>1Z9 uVY7AF\ A?o!in  ?R=Lb={'\| c7}fF 'ᇗ:oR,$Q_!|2 Vb*+@&8aO;ycr}QEWt/& KG5&^\1DGǦ!oXƇ;r{o8M@a wZJ[24x|Nh3}ͼeѪPJ77}` BJElNѯ.EUT3XoMzL2o?mwJC%5>?Z8!A̎Է[u[JhqE ١/7#[U+Qw |MWftp͑3z%p#}kGqE'XVU=_f5<PUsƦc)[{GO4폲y0z^jc|)RhSwTfXf%ηvfL47S6:B{ƿؠqz7%zh&݃=F*!|bMczl6Z|;87 u<=Socly+i7G>?n* ApSygj xW.gy+? ;E |X}cw]0F7߄M9nnzB+~RX~zCHh'$;KSc]4j7jlz,؟j!XsmoNϵw&ŸPߚzbsfC/>Sp|_ݹ%鈱 qgto:PMhnp[R'zcrvrj>cu[r[agwfٽ&X¨mq8qqSmUGWZԢqchh}u疤.!@r7mn} D/{#bov=uL&){p5D^ٜmK :RpG lZUB_8l:Zw8HL5#x`OQeba0&!0ST!7%MLG>e *ةq^bO[+ @j||,Ky鱵:vDj){M ĸ[}/mSC/>.M^|agm*?'{eRhCTLua|K>@5z*뙍4,MqNM#kz e3;rW aLݫOnIvp.(OѤ#RH7?RS\Bcώ Lp>yMX}'?_h4 @hos|MF $S!,-۸[ʑDorᚒndً7*CPqJX+606]=%޼A.S͑3 #|<'㮻V4!ڍ )86Wovd>%1_B7Cwy%VKƦŏS^GMsLNY7?N3nG]<6sZaڒasͫ;$?,2j @5>,>:f|B ж'WGJ?nnq6%=N_,[z9SZ}`oJ1&%y&iX7e0v޶|Fx<3)Fp߇"{M~L/?˷W`oJJy2zsBqS><S1ޙ1seo6vj?z~xcgP "|P27o᛹boBMPJB鄏:9{eB݄џ>mg4η%|P"&YMTB[ǶH6߄F Q9i}#}<pSy-?F~zrmZ)^ybs3_8φq>D#x3oCb|PMhTIq^z aT`RԶ" <[ p߃VXٙ:‡7 D=UNBƯ/Gkۦ -I/?)NtFA5S >4TN5CGon -]/6kvk 97gSH E (}zk->(qkM9*-:tbS̥+{'ӄ%L~^eۄo ٟj-^#VMoBk3M=7jKP=І (!sL4st[)o< HM6jo 1>g[&r+Q{ϓdЀL\^HZUൣy9Z}@ ?N"oxֵ߄~|㦖|.O$8'g&Űi}g>6s"R>Po@\7Myuca7Am ߄qS)FKaci/=֟Z~L[Z)ǐ-!4M @(,q&|(k%|qS!ң( W*zl9O-ķ ;m&?yo 퉔QM05N&yx+zF!*xS޿Xo7*Noz٭qEևI<=SM+|4UGMףLǯB╄'xX&6q0ip?Z}7-66]dM޼Xc 9zW$z̸Oύ9)8?եURøIkFohlz0K &SEn 5[DHwW}WxBX?RZ3/$<^lmZp**Vڃ @MWM)&~GԢg Q$T9?WR9?3;t8ZoZo`Oc"U(k ;-pvY}(?&hon`?}9ɕ46n*\Iv5ar\jbp-[emk^sPM{> @bc=YM<І\0&(V(f&sLz|S R4#K;-̵ȷuH1RD"hgF06TB]CTEF|=N]w $^}rK~^PN747S٭f$Bp݃7AM0S}ͨ1 z~Ox)qs3Wߏa7)?8o"|tu8Ky:Ȝ"YkHhy+_5nB)娡ꏝF rqˏoj̷S&P75Z ¨)B(%V0􅵅o|Ԏ`T+#mE:%8[+"D]m*-ko"jo[IJ'o>q7!|s+l/Ynj*n–ڍ^jdALx[#%7'הVO ,q&stմ߄vG_=җ z[^cѡ?"z-&tbS~H&ބ;ֈ᛹o՛KbgzL8./&l# ag.X+!MUolU__N5Yth&m+m 7kWu//=jTQIxg@WT7Bs/'Q ]VOghlz8K cp|f%c~B8Wߗo?WoXB"刡Y܀C<Іy[C6P,>Xx~TҸed N&YnGiM=HZaЎ#8S4_X4<@#x3o;S]ǎ݂7+M"Z,z|kT UO2olU_]@G37!H7Y5)4.j9QqS!XFN~BbGAFiVll^Zawx_vY}HOg7l֊B#o||S}ܔFsho! ]!@Z706]=_Ol8=w~'W0h[vMn4mcZ[ȷgVSZ%4%xZsv#;r&͸0jVMn4SO4j6^.j&VM5AcTL7:H$<cٯݷF}f^-8 "є6 D02]>Pw;Sm^lAgchibk| ]V4#x>d銺!t>P3쩷)}ni٪qWvZB3oά8Rv>p8uM`xB%y:^x \3{)׷[&p(sMv [8oLe>L"|/x_h)R{lFSF-MB6؄cSMB} 51ZH|2tfo쩇2/]9~˞{ظ)xedsvNr4M',#|tj%8%ބ (RL8Hx/k *i=‚U:N#x3o;S]SmNZ߶±~p&F+-B4? @;隬Yo"J Ao]gqh:N37Cg/=BM+7kx>x {j7]3)i+%AfoXo}*цp8xf#$w+7r_kB4yg翖rheReh YnG|pXNdlz,؟jze?xr0F?Ņ\w>fe;r3{5Y] DJ @Yf 6V )RohuK'18xsK6ػB8lvcOegk7,&F+S(pv+p3f5aoN06]/ڿMknY7flbͽ28;1Z @uM߻mwn6 RoW"xB'gf5*nd#jKwhh@<1Z9l"hqri`kov֌͋g{,v BӮOت #.]o|-o^2 T~ZZnKm v56]ݕ tu_~O&"!hhFx<4Pƻo;?EoLe  ~O% 7|E#㛮ܼ/[hj8۳mxt07@iFڝ<|ңmB4[~$&lC|W3m8MW+ũ,C-vD&[2o@71Z9aڼft7@ho xSPa$Tv#~|[칇~ s翖eٵ4odYܬ䔮 maQfgN;Tf#iFOUwת!LᬱqsǗ}9e;ߒ sƿoSR͌R&{V6ۿɷ?K@ű,q救k `P0fly4sߴk,jC4u+Oj["o܌gnܬe6H¾)PoV-PnccY߲)gh[.Cu];e3{[rCG^JLVxk&saJ Pf7뻲Wh)ƈho~r@+Cf5yBsa.7jii/-(7@YMWj7ͳT泯]o|-o.Pn=뺲ۥb=9w{ߝqMeѬVh=:MV<―ꚬnnۀi *i) = PFch ެ th~oKw6+e6X%7E&m¹c)0Wg8Z P67g{:vO_ٟgofWnkozPBi 㦀"rS W6}_-|tCMyڻn۲+{N [-X7J'<}C6uz6w?ՆPﱅoho[M}|SmKw7B4Йӕg!J8nVXJdu8:ښ ˎjve+p P<=ؓXpM52s_K0~h7]qQMvs%7he4Ye~_|kmv3;|fцnl^?$x#DS͗}awghm뾰NGӈNu4-gSV~AM5>ԓlfM6VJ/9PhTM_Ɏ| .ߔQbhVpZ w0Ks^[/x_Jr3+;ho=tCU-D {G_o%n olvpovZ n뺲oݝMe, 7f.Ckտ+ ?yM5ZnƳ[M7|ؽ NKQݴp?o"; @[I3osL-Hq kqx?܄́z-7K9UMp}L@27@!MWe%ȇNճ+].8=߾!Պ5fhdoʸ) š|ms΁-7K8{9'ͷ'<^Ma8҆C4=뻲}w~t;=lXn`tȀo(:Za ]Ѭge}ꡛ]or5i%F]͕L@~b tuW&xQKe ;UFM^ k:_ǬM7[nB𦲡kE啕#Йz&V$ P(adtdf|lCwB3!\KB4E5)|w]eAK&ḩk^VnSΟa۹A PDvn^=[vkV Go\NV:Cd5(m_x7YqRb5߄5ܿnɯM^o9[v6eS[p&F+So(E!/߅hXJBv~>·yÛ*#R6!?&_vٳ-H㟖j^[roz-6Ѐ}Ÿ$( -r:!7r+MAG9oxb-cb :MZqdZW@Kt:?joSB)B4ݕ=І٫Qw ߰*D k)7jozb5߄_]6Š<5YZW9k)NXYוu724=뻲}w~!FͻFO 1_9M51Z9f#}oLaLӁ_^p¨fߜI&|m)N'@MWw;D ޖo1 mmc*:9{5=Ųo4^wg[7$p~|}۽>*UΩmqvώ}?y-{M]v{N("7K[ߕݎtbf-B+߰~ wd'F+U+ hEQ&lpfGu}.m7aV|& K(j%}g޲+{!$rn^=۵BX&f&4[wwYXla7wh皻qS'0t}jd퐩p| ʆ; v(;agcZ?-6o<[NhBf 7T<¨jkayԊb[;Y p8kaa*36]pBk+Olav/.D[u:ODhłT7g_L>nۺ&3PYoepɾTE}f8o^gp2 t41Z9_|?k7C_ 3SƁ-*t6R`q%7u6Xa.SepW=}S?!L1eo=qGOO:om;ho6.# 51Z9_jiN3|OYP\4j]Q74ىv#兟ײ_e~y>.i涵0[[->+g[2( f}ׯɪ>,s /m!|FQg!bzkZ~MYa` mwnWɂoe?*dvG $۷5%<>o{=UN#|^#^ΑjwwEm9W-*3x:h,7blw g1Wn w{!ϛ1e'K >D`1|SGښ{}V4!.MrłR_kkvpG_ol#}pW\ɪ .P "d 8^ޘl\h)>x?9jzS4!x(|gM2+;lꛛx?F5(4nf?o: Px%ܼ0E~C3j_o1 ĸ)UN5$+=Se k]uor}D ωzh)7T\l]onΎ}?DjYJMpaЊֹŵC(EdB'Ц-7-VM00~ `Nсz_kkG{B*p߿zM`̽feV/j7@)5>|!uW~NlєbBH˂@qSi0BSv4{=_~rcVWѯguVZ]gXв.1zWB3j: PZcYN+r8mꩇqxxLÐ֛ᇗRJ-쫏;c_w,JO6цl4V{s7;Q3拲7@GJ~Z^_mfw]n#>7}fqSZD=5wm!;5h`Q1w݆=tq́_^ׂ蚬{N(ƸS?|~E63|OYPb ki:6n XX;:wNm8{`QcO@c:W^'|x0>Li?҆}]BH]r#6 mi#gjMޜu6ƾN,3m8?_bˆV s k}h }*Z @j!eFL[j5㦀nԃ+Q60'g_ ٞMkFj9[Yޜmah߫-mLVŞ,a٫7"oBv$b5FoZ*ḩMU*j6g/֒6=?9~k:) +, Mu!oy[FtZoa#Z*Ѹ̸) h;]{xT)pX酡ػ<) +48{[r&FjD:#4ߴNqSר+ IJd}f)p+9PP~ _횬VR|%ܸ) }9z~|ޞ±!(g.no71Z9% n,d޿(SrO=?<<:L-1i}+)vm S1v܍zmi7zqNYj)JePaTԸ,no$C'* `ﺨ7\tN5qS@ɝsgꄿ67>Xx-7!ڊ"5YQcLVhM8tN S\uov4]qSMM2mGכ_o6={bKri LVƳ&p(o|iCֿ>Nٻ8%VxcȩD_sNXaU|Jpv =iE'sWaDسqywMV=Jv!|tЀ^rY~êa\ FN5Oh*3n h#SQN`Ss7z× Sviù_%_gDo9i L3xO0UFMh13}H9itT Mm٣f.옃t6Vo~/,u'ܾQߧwMV+@;:ҢT8?bK&4l694tsq> c{}֔cvz6n h}S٭5k +݆{[ iVhf zOuΥ7?jK&v l曑#>nqS@[ fbb;(657xCQoAO[mb{pJ~7ofoZ6ktPSMO4n hh;:tw~?PT@vm ^iTZͨhk(=58)#pb}8OzaЦx!7-/EMsWqS7@Љk>E7! 2ٯm88oUoS]:"@ dN⅔q8%{0oj>jo"o ߤp@,쫷oc_el^bR֤@Rm5Ye&|01Z9% n,HM8{:[4rjS7t(7gk7Ss߿❗ |d mk֜bJM`FT# [wWCOM|&0-ѸSV(hfӷ ,Wc #j(+LVƳЀrE٧,hYŠ&ZaHUNs1u\/kq^GW6pw yϡ%48oFOLuNۉ9Nl_&z؍$G㦀~sh{9U-hNh = G PZ76oy>Qi~N_3#4ߤBooME4uz)p67mچE%r@du(#{hpޙ*Spm_!`X{|#xqS@;mG6<+SIi6[-C3Qw$@) Ǣ\[ڝm9?hi'Dj 3K8njqS@-쫟|3)9ކ?h>_]oFo=#blo7f.g'gZFS=6b FobK8n)+ @٩nd&R Іs셟ײ_e~yy`|'M< 24>hݓ% v&SPlۼ! 0;Ӣ}9oTL M@ID=55lކ3wm!JN$Jγ]aOaLoOyorcw]6)^8BM{|[]4~x)ոq ¾{(Ҽw^wm8Yv7g1P&7+01Z ABQvm^ Ga&tHMTo>)߄`F̠m)YJX;tkZB`&F+Dz&p&**0|&XyWRڸ)ɝ{-6񡨣퀧0P7༞j!06.0詇6D۟r;YedkșqSw"ڎ.詩8tJNCQ( Ug 883|OY\4& ha__c_En/Ǐ8; 1nk: 48'S?p~% ]aT8F+SZovh"ḩMm JZX+KfSfj "7{ e |v{HQFP oȩ8|ŽlSp+v 'ܯ=q}vwMVxE'|F:=Y;Wp b{WclđSFNYhI4n`~~@-쫏ΛأU)sײJ=nu.z|3(:Ѐ3:BPsBSɶxootĠǐ͚ ԛ$7u m$JMP{s7:@ կeL FCž,a獙٫žqɿw7bM&9ojvma*ls}΁ٱo6]Պ3P$7MhVؓ% 3{Uv'3>b mI[Ht^3n 8 G-JMhu)굅l\O2!x#pm8yFE'MT' &")~o*VȀ֛0n ;9[YoxYSs7ݙor^X?fm8]du3P7M6wqyN8t\v3!f@!0 xLhu:Ӊ;ip`fW:>Iؓnt0H7y~prk' s[`'aDVgg_[.3!$ߪ_U^O[֯*e{2'd pb^NX=5筬RMѷf.SƺQuS@Kw & Sȡ.я|ɩŦk_^@H+Gb'yST[{u0gkjMdd.}vTDH8SorLY8g;y_(g 4RLUh,oٛ>SM ;6TK,|SM3bN3ˑ|D{Ïl L)4^@Y4Y=s KXB>)7qڇTL%z>v |{V޺vf"B3+ں!0yr0|J4 o(f41C[z7g0p5Y~S_ MU+SkMd ,~k3N9~l -)εISpjB$+#!c'NR+icᛲH9h[uS@%y_<:w%Lr\[fy,áo:}9z_s-{  |P"\A*Azo}?2XcgF6vl5n ZhoR5U;5[7e 21xSJY =ZIR^k%|P>C!c':2v[70hͭeڣn ˪õ`s):fMXߜ[{>[c i75}J;P7%S!Pymbxq{>Ojšx7;7w̛X7uxO=bnj""+|syR8lFP x^9YSWze"|PBHH709sf'lM1OMiTSр774p54{~; pKIj{bcSk@w=8lbT؊S?@ ތxe#|PRi C!c8ޖ7'?4to͍M &R-ꩉ4!JOWC7*eJcxR]Ɗ_9^:U0tq<&x @]&pRN w ʣ8JӐluyM,Cu2U6z@_c7&~dSDC F+4Z^O VX{gpdkԂ mp:ԡavn 4Zh9obQ =a߽Ms󵊩ӥ1*әJOE8rw$[+@/e7_n s):˯֗*|?'3eׇCk裋a3ṓ{ܥb h57-^2kxYC[p&g.Jxa2MMX$,cjѹǐО7υK?tՂ7s*VL}g>c\5@urhE7-fl22p4voېlɏo-LLuS7G.%!l5LBߘo&4^?[x^15*ִ8Z<pF5o֧VxK6RU} z8&SʔXT ݪz*e0'ԘX4Q #wmhʓ|Bb*c[[ H of.&T6)iI5e7nJETk$+1fG_oiRb7]~ez.,VLڅ @&3>bEp{>cj>]oj?ҙHHjzlr7iϛ粬&gOUBbpe)zgOXt/Z3m*tF86sח]n*UuMs8B7~3hJʩTIph͛ȦUY_ ڴNcezŔ-nlr$,Nyļ޶!Z{a:SoMpe"ÿq#UfW_cXe2Seֳ_6Ka3P1)+^e@;hΞ8\٫ts0pզfRMi'|n L$Y&!#>Xa'컷7cSC Ka1t_ o`漏.WuL[C;N@yS9Mͧwww^fQ7E$q|m~wEáoe}48WdܳBbpe)ʡ13y*|k{xɩѱt?ڹs7^*TW1l/}Zpbpeϛ3tՂ76C] ^,ԞULU+ 3"|fr8F&V|ѓl W2N4&崣VKȨ>hbS.}ih*o |]bj;eOK*: @ "?9vVgC[pL'Nz_\2uSR&R,C-L90"|ƌG߻7ܵ!q?c`W?+ԊS#g Hh@۽-a `fjmS :ؙ<0uS78 PkSoRaW΄N"'WvX$|Oeow%Y+DpҋT:qM=A@s)֚WSoZcϛYkGoOa׫BsJ1u2ƊC^-GYBk3pV eEX CVz;-uSmc""N92{,o]?)TzcHhgk^%0YV+TL| @&3>bG?`{'I#3(|ӉSFM4\8HOB<}9ˆ=k:3VL~Tu"VL / ΞBF~ &,C elM8OUOtwf;Ӆo^,\2Ωg =WgM2&Iѹ+a6a@ʾ;orL *jsS^,t czԔ tJAޜ{gpna[ZT*6B7=\7U ToR_VtZ(տ~{C7%1T+1X946X92pTp·&[KWS4{:\9j?O8e%a'Gy>'}ްg{?o_ C o+KKq[cŔ`o:T=3k/Wm <|GON/\tZXu:Q}سX7 MK)Ǘ~:e[7Ċ8W΄ӗ S{TL @yYDmIɩk5|n cLX\ς11?iEG+gs'Ky-VL=]R1 @p^ʵR/۽mC2M S 7;6&cuSrOzϛܥP T+]i YN)--N[ߕdYcg?ܷ+2Mq5Gh,3ʌNjưCq;W?+KdX)!W oIC!c絙87zjcVx6,\:>Zw%Ri|UK٪kCwoWwO,*F?*X1:\R1 5prG |jf_{_NX95S1xnjĕPZe9[=Ŋ8m&ׇo&vYxΗb깰X1u% kDũ&\cǦakoo}zjRUNE<&玟Rn ĪÕLUqu)G西+FM?SWkgѹ+eئX1uwS187|AC!c8ؽmCLZDob-(Mr,n 5TljnJR15]),@c %HxI~Z;ӅoƠ˗jM;WNxe8_0wB {|y3N_ ޿PűLS: 746X\?Y¶uT&?6Uhj8(ԮS(2qdJxgY{p_bgkS;ljDbj)+s1%omMJ囚Oцo2MMhfÎ/~sRɡ+~d+VLʙ0yr\^|@@i='ZqfXjMo2MTO!-@{IĊÕ*Z k26X-ݽ֟R ϼw8zׅ6 tL~|хzcs 7[;|3KhCa5])oXz\/pbHSsC:L'S?Ņp:tX77K`b(@u2 ~oHblr͵~-ss8ߑz*+:뫤|Sob˧r,n M؂XbŔhO7$36X 81@)MIEKYZ sʓo9V7,8Who7$ULZ?p?9{to䒋k( ߨ`Ai;qS1tbjv?rSGs-$&vC[zB$kI/8bR i7FMt 78b栭7$Wz12p^w,MiMƺ8a+ cL؂/~ S#a@ zg$,"p=P{[M|x7;7w:n 5tV?-cH@ ʑ8'[mU֧]=r*zz->]X1uȥلoN61C{򩅎UNE}U;njw;4ѡ;VL=XS1@$|@vޜC)eЖdk=S9RMӈZ?r>_R;n sMt㍁zO?Koh8l*x潳mֻ.ܷ9];:Jt}ZSq2TP:X=2!@q*a<a_ zv ֚M.N'3i}K=nuSd4⸻:\ٯb +\8/骧b%UR+I[iMƺ=($2}:\SSfnEX=nNꩩd;ZdMƺw3BMU+1`9ohzhcgt|[[M(Tok73 WsMOPblbŔgBk3s-=o}Wb LgM9(|*ST75 zT<+FTL74`7B΋m4g骧:itʩzBuMp#-zޱbpe)BpF?Av{[jG\gS7;JuS?Kõ`tv(g4B '"[{}csiĽ[/M$-r`bj@ 75lbX*dkuJf:䛲WNb{ou2TPy?x\>w-=֊{kYJ]ǙnjR0Qs;+yARP$['<ٖڣ@ⴔv65Q7─L|zdN+ŹW1@N7N=\c@MDiUܐl>ӱt5Le|'d_+Le.zŔNR+nFszjxٖ <|GOҽ8'Q [Y)N?EލX&+vU+=4 56X 81ЪMb^G*:9U7U+Gԙfx),nTLp7]s411:u%7-߼ݦS3 Wk5c)qMJ.)VİcS4 66X塐1ۛ]I֊ə~NloMPR't?qJ@qLvIһ& p^l 8LW=ՎoRM!mI%6>b-i P 7zgOX d򩅖{[j[]7&/ԛuS#XpcHqmB16X9'd pb8;6[NdiT}K2MT{ ?Wvoh)Ξ8djM7QY&D\Mpb! @Y rk7}<ٖ <'Z1,\m$7P7?Ņp:3Rv5W7qxXk)N46Xl+Ֆ l]ۜn2˧I5&V{uwdznMcűĿ SCq6 ohYs֏Oת~n'JQ7||MEu2]Fq Kq)Z -ml͵~|̱<|GO[f:K5J55YbuVzM<hE1Sۋ7CxouUU@{CS֏C|Jq2k36?e?~$k=>P9xQgw7oA;@8gWq:R#8/No6$[+o/WKKSm) |@ǪB '\RNq)st7 znjR@c +M{)ߔ:|hwd N76X9\͵~ Y<٦pғl$c vwg=8&SZh,Ρ\/pbPm]4S7o6 ҏnW2@ @]=0kj[[\*s7=rjSʩOXV@ 5+#!c'N>yنp'J酫pRM9&MeR7D7pzg2151uwX k)%|78Z }@' 7ͨϺcg.'[+uSKn`l2[ f.64'lM%@4֧~)rmM%RƺuS'|7Q 8s#p^>аǔzML% 䨜X7Rq}*h>d109s!g ֊ᛙM'J]9kY@W 8/o$8%儗fO9(xO/.yI#L ,C=/}<bVS[7s3)k/]()2Չ(XʡfoT3yhKO6"0t3&i@}]iZ*uS%$|+Pb#GQ|7͗WO;xZ+2M*2LY]™(g 8#1>bg2dVO鄕Sk`1|)H$N)}q8^q4j)3SϟzZ $06X9'd pb>yg ֊ᛙ TSZ&ǜ)tn ֨k|vImV"~A/ǟxZ $rM'Iرi}HQoM[}]\mFmɟNYy'x6Z $Ty1v)X72=r*cuSP}_7ߍ!x7 Hq序\VOz*UTmAuS5q+v!OTq۝b_{iq#| Tr22p^81η&;%>So2M+VgM)UY!&M &ش>y~j͎=8&S:jn2B87m@>7ޜϭ*{ۆd簖 KY䛸w?)0ݦjq^fOOy}Mg1+ݏbaq|X<B8i@ V7?p5|oOG{2 jLkկoZ~$9-_-`+LY67s7u+3SW;a2nW+LO8/X~η& ɥ0p5l]7cU*;o~K75>;6۬a>nws[i&f˵I8% Sס @I8?u13зuL1(DO1=+꾣X릞S7u.M;fhkwٱamn%eTij.p{>Rd)3Y>UL{{ّ懹[~N kRڻ.ܼ?1\r(k w:qt>x 2+r'N9$e{^ B8a-r*nZJ5<ٛNU-J^I6jvnҺ7 \qMq,_?,gCot~apMa D+RoSo?F_W+>, t2Sb7fw'=uSJarbMw^N LX7s+1ݦ9mnLSC8{' aRi O_܎V+t|S:|cPqTcԍ810BJ_??\yV*xll2JZqMX q͵({ԭλ!%q|p:3 FpbPzOs 9)_TU~ ǿ>+۔ĺ}PL)t9Ű4h+beV#ξwχя.q{gbwݭrbhŧ]a%r22+ۼ%N)1UlMn{z=>_ ĪoV8e7‡oO{]27 -^**0ZϓoobN㷷mpo0TouǙ侾7ě?cMtt8tOVa0yrdqT+h7ݶZ`e7f*Űw]z[wn[?p5o}z)v̌xRC77 tg::qtk7t_ʩfox0qrBB8(pIuw]@&32p~ am><'|j!ړ_efj>]u@©=׈_]6C>w] t[iʩ[Rg߻ѹ+e:9Z&ۧÕi6@v Zۓo 8W ,\ ?Ity|mZi=z`别}nŽua0vێڱrV}t6 gzjYO1~Tpu2Zh}O180>ևg*~w`cׇg灱~W@kfqDqlԉ,Ita'ۻÏlj']*φb*j:\9 h+o=L.Dғ1R(n[mk8&_MyKof5x @kfh6w*ʮa˵I8% S'ʻj_s|7f+!c'?{?uwəe;ɱʐ+ 5uyUttvY8:w%ZT9u+13|ZS?z8W]@3@7C1Ws}@>wlnv TqʩTS8e|-<пl.g'chhsbؙe;NZ~qSwml >_woZRVN+K=^94RSW:Д$j3<쮰XA_s>SSR7g?-n*e;8fNjWS1$Γobf ax7:FÕs C:Ǔo)nz~m or,'2uelmbϞ_v䔲a_I/'vZ8ts pWyA+e=o"uSf@ ~dS8JY9ՎobfZ@M7цx6N*}^@N7a+-ź) >7篆_pAP@I\.&N_CmbR^ @jC=);%nj`l2k+Gl]n }~G67S_C7^j@'c:\  C VFQ;%#7me:8ed׫lN*ҤNJC7=z` t'ߘ(nvۉ+{l@/8Me=a߽R3iŐѹ+IdSKpb֡鋝C׊peve &GmCnj6~T ޿^9S INJ!V )^W{ߙvc@8*X p n Mc'$pʩkC7W]_m)35>X)`)'uĺî6*'K! J$eiϯYn%!`%ժ]j|cvWXA;Lh]- [n C[=++~Lb2iR5<\MO"oÕoύ V Nn sdφ2dڽr*nPts [W;Zlűϫ  Ns:T+| I.# ,CVNJ&NldSz|skGUbg8\Oʡfo?(GA~tάᤣsW+0&>}o=LҾQexk|p-!~wOo8|R.dkű:M4&_il2RLQ7َXZoj2&*yx#C 4rj0O}om* _'CۺTq~}c^dvLz"|,מMn *OT҆pvY-ITd_5rj)tXqLZMZoRI{{k!?]㳗psR3Z7{gIܕZo-o~㶰du?Zg upG'p󒪎(:rNiM܃nYKfZ쵦y~DX}C8dB8>oބoepFcO_DEnx|([';B8S)erj y-nIYC8X =y[Jq<+Z`E|cvWXE~]͇)٣T^}],>ĀBPE r&䛿]득[ ?~!C7U:UW9:7%Y:\:R ~^c;27j8ztl3$7r:J ߔsI ĉ!+|$k[WB+nrM'u+}I' ,!hjU)nxdE}u"N?V[w/Ffq MXʡP΁zH5bLӈ!wk\ߚT ޿yUNX14cê\ 0=\˄njzSM^.pcQXvN@֤9PSuS=CTEV!ZM ĩ-$NBItጕNiY Ľ{8W)B ,H9:>K‰#vOE@֬r-ixf%C8'?1gYS[Z)ӬʩV ʥG65-t$UJNz~㶲<5>{8[5 H(OiuSTgf诅p]g8sktTz-SbJBE|3hw[YC8zOe@uUU$1@Oarl2Vgg7}&;xÅpj,9bX!N)X9૟%Y+V0Mt3Z@e}b&Y:\IznKS;PƧ4_(APN& &\P7$856%sowOo(YU'y.^FTN;|3|8I7e D&^sW[x߇oO5fWv~Z}@I Vo p?Y`oRmx/@ҩKJ !rUB71,C#T͒LU_})AUoa1Qq|8 \=3'4J2JH͒?(c'Qb(%Ve B,gbԮHCmM ;Q8hbrLq~8^=! |d16XI<Q7J%|3w=xCK!_ZɅ0ʙpRWN-nbV*V ,$SkԵ' p !mGȦӀR7JIP7׊!Zl!B:C8r*UMOW߸eC7K nR(.5>?xkL7{3ޅ)V:\JM2lCK!DSDR6s(s]Sʩ(Z)-nw[ˆn lZo6Ԟp6/P@sٍ V<Ò=vUJ2fI™}?6.,{ߙIY9UFׇn*%{W+Uxhg׋!#sT_<Ohzˎ]V)IY8_<[/p^?&9*8MC7Kbh,&W&>G*Q5>z{fl)NJx8o߽TwخI7M,!v=aCɾ& 5ZZ1t5tsT!\׆pkCN{{jl2n9Z7c8`q aqj\#v5JPB)[~c)3* ݌#ݮi^wCsaC8k|-Z|Mx ,N_ZΟSƀ`g|gޞN'p#ᕿ\81doe+\ٻظ<$>SbX{̒ԖQV:rnd7pBTL0 oNvS &@=~ы"e n`&+E!+(O,ڴLI|{ϽJj/U9;I397$t#=)$|uT=vg_䵆TOyAڇGJ7w MhtpZ~M^%C37dz0Ho4DUYPu>Yzi>:7J%нHi7ҍ/J8w+[1ew4=U5%hJ7.VH >cjL^wG3f| ~ܤ=7 T$YI ^& $q^%g6T4kgnsI(ЍppU\{6ҩ׶ *E^b?6K$s)U&J-z5F7p7ݘۭx !|HցT_K?\gž#秽bOݯz#->9aIe$_h?E$V-Q ߔ'y'O7&Ǿ9Nܔɍ6v8|)m36~ySQ gEG3A(i=nHqDRl5}%m^GZ{M}^)B7kU(j| }oq(WYJ* ZlX:l ug*oވU;?Us oSi=7#m^У %MŞZݬCWfq&"8Etc)l>|iyfs2^贯Ѝ?4ϥU5{n*̧@)|Fh|uZNnK/{AB7'Yvfۡ7 ބKZOe8!M¹[Lq4tD I5% .>57pP7qn;u/dtM8) ^uq7S8H7$#ᕷn6MA IWf:_M9d7)id7A4̻;[o_Iv‘oKLFvqo&{NS HoQe;޷3@T$fNBCZ[$?\6}秝mY- jrMG3f7$U8 /po};4o-bUe6ZE.(O3u3t^ZL=A˞R1ʕyw3U<t[$ + =;̃7ێ+{׎ gX8HeJ*wPo~\8Notzte>u}Q$d&ՔG|@(buu5PN;pRxpAh;uo]鍦|pMn}E19_3fJ,p'=7G6T&wb/UaGv2fǛvlUvBHd7`.RN=!;\,iU ;,ьҗcM&ݨ>a}od'v\c6 !}\"q鯨B͍Wwj THiB8>T+͉+s[@^Q@@,N;ޱ=}B8DJY@!菟l6v&Ǿ0bb*߈0N{/hjjS(#|TߎfBc#G"!"TäƱU7k/n1juIm(o•o&}tiKaoVm RRvN2fǛvlui/ 0m*o¨nFo|u G:vuZOhƷvWMfI+6s^4"|p^;_?|))Q#ǕI*B?wsWhUP^ WSv6ӵL S 9bNr!hKCB88q7k#; `l?s .7AH?~ٱmopR~;*5%v?&{T*LbG8$!왛fY*e7Dk+AIu>@@hzdu,ؚS#˝@jͪ/KpVId[7~TgJ7Lao}} |TX}ǎ vۿ~`'OsS @8jL>Lj\%|sb-Sz ZmDsfڼ?պpRjqَtLv4pv!@TPf Nab+sW νItNy _}&gJHzaNZO @h5׊oڱCggunC04R36ѱUT‰[HV?*NIܔ/[4nj5VYX?7b ;JvLۿ[93*$Sv U42JbU4C)}pykGir[/́&g!o.8w~ Pij?W)q~o*VC FmG+gi;Q!*j͊iU,@îfhW+isݠ f-pGhoN |3%cX9%KeS/OuC%!gnzU~iP;Z:Y_^Tfݶ`z'Cp_bu,{g, s:P7quZ Vh"!n2n6s\qꝯC8ڕ[BRZ4LrzMZL٤`}#UaGɎi1;qV%!쵒dTTB))V+_S>|&NMQB8](o&}mx_ |;v\C`Gq~29=D)g["r8I5%YrKc$!qY<ܔr\HCZ%1&Y$]}R*NZO7Pbӎfc q~RU)KʡSۦ=I !tT4qUF~VӾHB87^M{Cnp2wqhRX{Qλdrm֪1uDHTߎ7*(ίNh{|r++,ur)+hKf@hh2ZV7'_#秽J8qhSJUnF9\JzRjO#ֆ Ĝ0a;_BXOdٳ۱kiSzi;g2C{KpXZ>I s͢?~|Jڼt!mJAZ[{N7>Ji7ZO7Cb;.1o]v5K?O4V_K{Yٱ zfv/mZ)W|s?AƲV/#]#ݎe+F0WG3fܧ*UV?SoX#7bӎf,ٱÎ8n- n6Cm];=:zJ˄Wp&@U4B۩p+ KHries݀TkKu%뷚ysʜ/[i-GC5[OJ(YXzӎ7LXeѣ|p5)*odHgsB8;X~qNݟVnf۽Cmڼ~;?{M:LuɹC϶FՓ4[OUo B ;.!1P4,f>-mJ/m&ZAtciGQ9`Y*q*$+?Y;7_UdvͩwOZiEZ!dGk p%U$W8N43U֬|c&o1bӎfٱÎ$~ TI)OHk~l}KB8CvdxGϔEiF#!K?*6?Vq 4 ^:%ZA;^ ?|kc^=\ISp췣hfaG՛vls1a'{2CZ;Q&V[r/{r 5RRf9+i ˏ6+!oB8FwC8&ڴ6/%LAj>FDB*V߰c !g~A ][!)SܽŹFi;B8dS~SgrT&7ˑPfط/YHp6IhE치aqwt`u@R;v\cY3kHD_mhH?6=vjYJ>9Sj>{Nn춳07Iśql˄TH~bgX #|>o5;$q̎v4pvV mM5A]k)p; Q8XV"-X t=n;Tj!vwMZݟT r>>X97,UXo'UM;rfGzSbmvy. NotrH礽 u ZOu>띏7Zӿ6ɡ{~!iRuVf$Upս? [=˧+G+Nj>1җυ*)ZQ7{v(4p1Wg*ZǢԷiwpwH/{!~;?}FxF9 ATq>Sh=*u~pَCvReٍW*W*MvTuD!Î@jdin^ GF+G{-$ьGkn1H$"?Z,mS{+ uHۇ IwhWڹ\+ّ.HE ZrB6YiZ bc ^{_՜2U papr,9$xXS QX}>SDxd,asV1b-t!!@5B۩%'TqR*,ܯlaMnH8J6IG,A\;zqƗ֎fӻѹ{JΝ⦽ݩb5'Fؑ4?7umb_Rϵ*i{f+Tl[ꐍV7^M{!f^IEB8w_Si6 +@ U( 3$I)+Up4/Z&=# ځجt\k^앴yfB8;r~ iݎ^[Y{}٤z8>x076ǣe^PCvghZ! awʍ^Rx2l)鈄p>IB8(3U0qrS&-ExuTuuypQaoy$F)EVN4C:*Ϸg[WC|p[;4wΜɝO4z c"Sad[ u V!7AUuf`#HClb~a~XsOTnq1X%ޔ[:FyOGV!UJT;Eq_WUB1ƐpȄOEY]  ˩wZ0Zj.׼P^`T7ҭSˑ5_‘pl[_auoi6Er0po`uz#%Dl>|iA!sjAZN-O>0z4/ZԚ@=*!|wdMD~X Hd337B8.vͅ1Jd}XqSdvXze<`|7ٮ0CZW]ՏSˑH ы3Ԋ+h-L\nKC8nCWQ*odؚAдZ4$-|0 oxv]KU$xŠr)po`~=vt vSkJF3y`MmF:{kE;4'~^/ HJh He) \K!e%1ڠ'HHMC/͚:B8v rٖz#|@P ՜Yh(\J@Za!f4JWg-نJv6TZ{wɢ!i?_O!@jL>Lh\MnFsV&7^M{\ j[ËV9\K S772A U֎f/Q}-U]Ee4[NvEmʍݾo0Fkb4C8JwX"@*Ir͵WlzΟl1͎}^B8wVilB\z Ӭړ*V~=O(r;%n*:ЮV_KWZz݆jd^&Q‘͹_ZLA*Jm"y*toͽ[gO7;‘GO{r+fFgSh=@0) *Om$t`wگ}wIJB`r,#je>!hdTRhPdݝ^ۛ{~ɟS/Օ :|kllxw<7pb>Vi;|J,#-::*6TwZ&K}]?Q&(C8|O'@H*jJ` hUc=B囕οj50?׭Bh9N fQF6?{G/#|`'0] a9B>?Z,9yO(@jLIXI hZׯ_lB8?]K6-w~[}e(ۑ]FrROmmG3,x%p]фAJדzJ5K@"k!?MÐDFNPdkx_I0nh=*Vf!| hTmmN\JjrF{{nuGzwUi=]w $ȱ4u: v\\" cII?7ۚHZ>3dGE@I~SB/‘J8o?l R^};ӘkͶm>"|K C>t|4 6HZN]76Tq ,i'{nS:V%"`4hvrwV+؇pMژ)no .=7Ql9u bH-XF$u~Nj|ߧ qy{59o7T k{kGvy-x 7P*VeҨ~#-jHT 9*V6o?137͞ٸ|bBV8HRN2V]*MB8~|r#6!'UoFHUsӘ*VCX@؇!F„^fχL#ц4 He&szMW*ZIJ)u.NF%sf7!(YKמ\ռw ~w[fX͐kXe6Tڋirsܔy9r~ jMXa'$+T7 |SӒ[Bo'l6)R90 }}#X@@KckSz" (B\K buei^1#3|j\k( ^#4xkry9,ʕ_"LJS 1`ϷbZ&-rjQG3&{s4]q˝>.3ec%!|3zC=.6' Hd.{S7.UvهÚNE~ryfطP&koI:bZO@@ A>tksY2i zUoz,Ә5v A H-N^1#Ub7TT2M囕AQ[J2VlQI5aQB86ܽ(o HdLaWl9\4I+m޻h(_Wkj 6YΆpF{p1jT{s#| qgU[toid%7-ǡKmFyh{Nw7ֱeYo*b×6U‘} S*oF@d@ntU$-Qm9kq UI|ikfTu_K{75Qg\5qTxfvwv^r%r8U;v(.KT7&kfl,C8JS | 1/YpXR9%۶R72<]&#orjGe'r^~L6y-FkL+pJFyVUC7J)o"jߧ:{Kss"| Qs;̓IV f)i'7ކJlm`6ʡki"WP0vU|=T(o{R '!n[7* DH9Эy^f$oY3了ձ[WryOZyۥ7) Z>Sa׭\YFl_eD!xbG*n|!/Ūb;D )4&VMNF'z}M|ɮsS&sz)w0YƔ`>xfvRԻ[N 0pJJ%U9dKo[\w`N}$"| RŪ[ YfSݖSq*+ XrdIoWʈn'I;)`4Mf)ɼ~E# 4V*MN+ZNEaYM!zS]/ Tǔ! TWiETcjC)K5q2{v<پi0|e]mVCD-) AѬ!k 7S|XGB86`&(M[l=*|»$ }j;j%fT&"-d'myʘwl4?{Qjh UoѢRFwl1RT4o"U}Ojvέl֎foMlT\_7CIB)Uzӯy;њkxi]Qؑ!dr-sS&szoZ7/ތppshYLQ,T !eŤM˩^7Qk?{%mNm34p9qed4zkRn=;4oę$Ӫժv,v;sgm&=.ϙC'͑f|{Gom@&3z[`xۃ)$- J6oO{h{;.cOs=mNԯʤ/@4f,*DSu72\iG΅pdSyTN(oNXهnch&l~pkՓtlh{II\ =}B͘ 7wvD+ j*SZ$hA&dMO*]m龻\I59wC8rJ[Ou @RGCɆת(} 5tyte:=M6G&ڲ;c?d_O{vx1RAVU/@DU7ZoDCP{ֵn)6ɡ[{]tת~H 7b%Uهݚ 2+oz֯ ?K"LG3^Yv8%/Nr)k7nr7|ħ 4QhUmir\'tH/_d^N$#, '$Q/a9yLH5{b oz}1|m9=ieN\ʪ&QKL܏ &4ն) eFW7.bf)Y=׽ vʒTMtG* 6hz oI "ModBrJ&ΐ]ve}R>]8H+h|㮨o7{mN9we=UB8REສ: !zz_҂)I~ozZN9uy9r~ۥQn95Zg*U@ĩonͭ;6R6+i>޽'Uijgng (WH$q1dGZZaVYJUdLdы3O>ZN*q7TqT[f)7^M϶֍npٯC8~R~RoD^XڇÚ|kGɶVն6Μ4{v^LD$J4ع:D5⭷ & Ewh2$끣7gH%RIӗ;7iKC8&zZOS*@C Jh H;);Q2yxJ7$"|o?hS9n+ JlTDߖU&'PWk$xsʧǢO4.{L}XQb{sD6CEB8YRr)7أv#HK9Уy͡^~.oM;DLJ׿B7Ij#eyukf ߙp',N |bd܎=H媪@֑v-Ao {ۜ|&ZO7?YSOB8YR֔%,Ϡ#zO | 4ٶ?. wxk^n|a?vKH;gb8͎ -r\{ü;Ac7| F*b۩Fn7NIzflOu{l<0vx?z*; g /}2<^\nd;6zh)M6R_^}ɫt2yg3zjUvO x<  VXn1KZ:bl~S+*̓{i5̋ It܃7S^^h7sf7$h* ngD֖rgoVpni07_Uv\gnzrTz koDRX2복ey3d~L6}91k}\Vz3Zg*U@̔NIz3o'm ެ^i9i_ϣ)bgYS]eHN{Ov.a"| r/jSB.9.AUͽa29t0^0i3&ĤaXĬ(pFq$JrU繦Sj+\cN8oꟽB874kk(W]+~E2WT::٣̓5vD|xLb:YQUmM6i0gSL}U&:Xdi_TQq6 g[LFB8YikZO2|3 RRj>yLi|LZ{5v3ߛ1n6;91>Tp-rV1U8f+'+UTx ޔ^d2؟OyMc9zq ḃSYq8"| j4&l]iA[[67M^;Ӧݼh#T2#`Sixhr7Vs'󛰟3r%sU~%7"#UC1ZJ&|ʥ=qѾ{Ek/wN*Uo&,qV12H\RX `H_|rNܔɍ^6Pשxo0Dɀ$5oAfNO$7 B*z#[a2ygsEsM˩ bqc‘5[Mi=#7"2g5)=w]I)a2vqֺ1ez5m2o㴓rEyKv* jLEXQh=%kM~?׽|hϏ!9$kh=j8_ i#Un'LڲH9nj՛QH6j6y-pEʗZvruEPdM՚p?)96bPh25zsv qf8/U؇Ncj HЦt 1*} x}Ǐ7FN9KSE< )Sq|MpLZ )ݘ2 ެp>{%U$:73ΆpL-rqApЯyn;LPonFع;6cϴF m&q7U7Qs}R7R&K5j2߳fX%KWon@l,mIK]i'%BGt+8uc'l?Hܤ{Xpd$HY  3/(^( .6sRŪݭyL鍻I,HFیO~fo4tYh-pV 2{ 7MbԹ^_1竑\N|7#|ECm'}O4=Ԅ| $ܰngPeHB*3gZpֆ5ZN_ 67_l Wc3c~;WK vSRj}<Ю{NDeBw~dNO)s\7bҬ?yO(d HZ>S:kk5x28YfGKghsZz  o8#UfÀ14|k,THKsSӓisJ7lyr.$dvk3U* &4"՚]|| sӺ1!i=ŕD.7iJى3:{l?s8cFt/ (H r ֜%:n7*nƔx|rdB8}\5@T5 p-3xig4MܑUo&4kQ*s㸶Jrj~p{N_:7\1}@i4„6ٱ LgGd2yg77i;%A ]7E+!!_|r㴞DTa'J؏6v6kDôkUdǚrXU@'|ȑMf% PS"`5m;΅Weo`SpoҍwkfTҦۋX֎fO)nAZfTlJFkMCZgb$xs_'Ĕuo6ɥN7Wef Tb_!e̎ -|\{ü,\hj(rQ2 )|mB n*+UZ6"ζп2lJ*"| lCS+|B͘?0lY1$Ǥĕ9ՒQ&(n Wj&NkeLQEwTi(k,A x?Hӗ;6c6p5QE@hRj}L9LF3MfppyuS׳Q4j՛Z>S5 m47gjdmۛ!y*~T{v|u ϴhS|c٣n#VRQgsq/͚Y7|Y[*ZSahUm__aeta**7*Vwه, m4dHUSNQr11teNp(VgʩNfNfT}]+7ty ɺ[k quQS Emm&3zڔ^ZfLʻıL}`6/Y`Y*sjx5u# ^;ꕭ&U$ʞi\ |^g*\%@T.@Wsx-v<پ[,3-ͽ^(MS62Qer =ɜyzUyf-J_S$$q?C7&9Y ؓ_Z(#| h[?4S|c٣杝-xϵxeDgd&G QlGzRѭ`Xu(W͆;bYo ЍVg uF nLhHy¾9{KRTh⮎=a{Ҏa*T8x *tok!xja9e賂m+\9@[.>weF'l?JMtS͘mL#hSժ7õ|YG}Ȯ_֎9{XBCb=BeT)|#|sOoGB7-pӎj sh@[.X2|}=`~Ll(d6Xxvn#G2>Ϲ?^q8!vHH\rxE3TQ׿0ZO+teh97X|k+%&BlKFvswl4?{Ѽ%mmcJC&xRѠ\fNKUQəbK~F]e1#X"kf!oQv7%Ռ`5$t3ty ]l-').َf6mo&3fxS慇6?zټx"֎fsN4Iʡ&PG/p5,58"Fe%W9Q;S*FEwR-eJu~Tfdܔ{ Cd+ͩw%t8Dovl niJ7?f1Tn?%]+T iG,(-p53 Έ=}yciG*mDTWSwm_+S^x7&;tJO(P1$| hҎ )SoD[B2y5RMؗz_r+ 58&;3b  -%; odѸRS*x#o=EWScFCxk$7]tUYd3eA”ūcz5;wJHͱI6{ -58gt'%ԇq0$Tց FPAQԤyN ^$&kxRi|"JWk0YJ{)"| rПAfIYͶmHE(m337U'2*Wh^ŝ,xMWmIqj{ !nJbU+Sz7|C&Y[2H$KX| pq3Al)uvHZl?MBN;gSժ7d4 1`v K%Nפpv )pRY ^yv!xeIN*?tz[[@fԎ|-oRهˠL^^1禼IDaǑL$~S"jMrOrn޲=gz[.C'|'iq!Uo`Qo?sӜz' OjL*bp7B#pg#BTI)k CғPz#g@R#96T@* *|#y"]BdlV#x!%ur~Vy^gX]=%#W&9$ NmxEқ8x<gnw KBK^ܞӂYN @hT*ȚVkY֒ZF-}LI{y7n͠GOQ7JfЎl=tS*po8^h@2M,nOw |r_O(+ W.DgCa;>`Sk}U!UYdX9k/7pGjLƎY*2o82/5rve-3ty.^OiI=.Q#tH}`v7 6}hw@p_dl< g(FXMIEp٘I3xiזcJF(tS zo8r_Cv^&Ik$ }h?5`'ImaTidNr&mMMkWZqrMrIsSf;Qxʧ8Pgrv:,)k)RC xt*TΚIvK=xs3!,W*N7"Hr7oIc5e%|ώW#|i_ H3;QΟ#IG)p&-Oz}o"!OM$7mvMMMsZ(IFg롛 W=o8Ozakx(^ )*Up^p~kGqbZoR~ZyW67Βk"!;2)Ad㘟*No4T".?YxD-I*36/\Ev7Rg4ى@9{˛T%_rVb<0r՛ ,sh"x kǩСFT톎?B&D~I3xiVջ_d=o?soD´#gcN&URnuHCZՏ{ʜjMT y8>h9DCڎq:TLhtݟuU#  dHl?~0zf)M߯Svut;h#@@$)iՐ%)DcfMڢ~** F;M-ujR#R$g"rvT,UT1SGb}!  nv]HYl3}Y8݉g25xrL;O+Wz@9n`):Y mRHZQs*֬q7^8W!x?+j37QxKFg롛 Wpiv2QC'2z+{ Kr]'!{VT]Uhį`ZWV!x7WfYo~GjLF:9Wp ޵Y;FRGJ4υ;cD();WiҾ UR#9P5!.k;@+*Uȇ֦\L7obF6 N_\ֿ|&˚n!| 6UprG'̙bYŏS;ƃ(Il3lq֛<|趜P"m"i7or}?L Q`ET֮Ut7RmX6g[#lJ~mS4i ;>G@,ىHَ$| ,!eJWf[yDt)WgzՃxP`%*Ѯ|SHlm myK5Z,=sӻW.ci-oG5؇fa@dLuʏɿU Ӑ+"=Nse T6hW ĩMPKLF{{Clpn Q*o^g֎TvɟzAǡ ,XU ,)/"?Q&{@tq*;8v4" HgnKF8PD .7Gy!0~:{ ߓ,YRSk# %t')q @CjpPcmA\թ|UAGB%QF}(Ugnzjfa=ZZKSq!| g>O|%;0d7F!OW8TZ)R΅ {7q N;.І S8km\FeG3 7xLJڸdH-̀U"D@zSAl ȮsS"CZՏ{ʜj(% dAgzG3 1*-g47UU+7rbkuƔNf T~WY|Q;C7 G@nk7 =w5rmޫIFc6Ou;{KhgS Hd^GYmO+76YuͩhTM{jLΎW7<!i#_e䀝DFRaop}>g3Vx tz@K+؆{$QE@U1L։. 2xӕ]%etMe'H&7UdW0~LIN#~JECXdaM0gz[NL`N{ww1rg&?$w#iG#ClFΚ2#i f`'͚6rf|@\d"\1Ps74clVnF|1i ِ`CߕԇؤH?Ω:N[fWUTթ`\T^a.) _(|rPٶmZj63P=7}PGBB*rX"zy}_{Ww\6yPyĺI G˶C \nd'B$4Ţ7W"tskUxȧh^̶GM|϶^wL߸fi~O߯ԽrJ j%cFyJvN `q#;iU`pT˹2rb~-E6:A,w-Mq:-$bFEzmS%྄o6SDKUp^@^!E9f|?U'-ISFɤ! gs# ˋV3~놶>*ST7xsW=PǼ^T>>m!ۢl9flQ+B vNq(gSo_~j\zPR 0p:_k;"W2WzefC^<[WZ~iᕆr1B7ӫ7Al/q5& Fƾt$ɖh?h[̷7@o(ʑl;im0hrY+N>^j/7=<1_(-}5Wrx't.U,WFS7Z=ϾcSDo-K1)j@ t(+&vڕoZMo|UsT>ζzm2V;%|Cgr;V߸ZM(*k3~e[{-SzWyGƲ6c(go|cz#xSg|.*Jn/gf6 ;'Dl;XO9ފXMUpVJ7O:[ N)4ʹ7@ =0@r ļV-)Rƪ77ňsl+7/]Qڬf-D |[b> [ёo7F+_I.m}b"79^ș7ZpN`Vc+ay3L>^7Q= BXT!ts!N6ݜ^j,VNDDž~|*8k%v~j@>sn9 K!^YX^4 @uBTS>Z&/e|FxH/<7~8?<1=G_\saXQbay5a+7>g]ִbUOp dج~36:mʚ~UW&U9V)%'/ 7[Y|x?+mԫM՞&*OG뮣}\tٶ%%eb$Zp(sV!S|$7;'@/>lsUCY#EkhqߣbTT LT%R @lpf?SN僷b+}|cIas%#Uo"1\**V(|#x3x/Lz@:Up&S{UFϫD>[=}nL b`Grn9l57AJFJ^or <ֿ`W?jm&Ăd"be#|*#MJJ1G_8zj_ٯ>E߳_&U0a(.q# 8H[NEn-HҚ,zrr:ǂ<jyc#}'FyO?m:>w0rnEN}s~y"3h8h ҈*x;?@S1\ L6禔`-F6Q&MDd"X4(h~գR̙. T @e gGQd10X~1pў4}vQyn[ [Nz1y7Vz# Ɖm2"TI\'>My0&j|ӫʷՔcZWEB7QqT @ DԑF|mS﨨RRnTUokUt*2O[|ELEH*G<z&&[_/o|z!8D$qPG~ՁW~BёooY <_E˶XT.CP.QB;}V^/>P;VYAd7ʼnR hsnjֲ-7v2yNPe碙UɫM9Ă?iU$x g 0(oJ(йmY/}}ԡuOU]L܏gP!|+g[TOB8#]. 7ɫu,*KܶNOOu`X!t>M},>OqޕW>'&4=vh=[N- 6Al(CsS up2U&L>^|&OonjQ:B71.{xnb^ yS(Nt;*ćo\*Szr4ۭrxg߿Mz5DkY͹J8kepʥ*&JEPKilt8Q9B7QtYET5<A&|P4ʱf?SV/UJ2Qf,I@yŪެZΟE$`<-*jPu-QbaBoxx}UU8ï~^B#LǛڄ(`TH5|DXaSOŤD{%Stsnj-6}- ZĎ,,/D{͉䵸**lW}j^KvYMfۊ10lo*Sg2{%\Y NO )/xޢ| ر@\K[QZ^JsnA[OEZ{ZbܹP$j.vf&<a%|PQ+9M=u3 rꝫv~(9W]KMŵ UWpVe|Sy.*-o"sWo^- UokB77 ULf˽y駟o\jMe4}?ޅ|nWY-[Jؗ;sz7]KMv uˋ# 3(\YM~T c&檢bsT"熓z-B7B*@ @uPͦ>\_~zklWS;Mg=K zTLOfiυorjcMP)x!Q:޵*nx^ȶEOOߕ^ O>ͭ ΩoqF"Ze)S=4h+#zbh#N[p& G+y |j;g%撢0obZg|+%>nk':s܇ T/ rϫ <&rb2dS%n?MyVJ|:?`|7 q\GҊG]v|M^|s!1t!P"~oxTk>Qs/f6ca 蹜ˢ ,9i+;oKGrISFq׺2v97ujh#IA瑅嚡z~Mcࡻ|<, ޼4ޞb~ty/E~'|0b&0J[xJkeUfh?+"Sl_GM-&p(+p.Y 4 D ;ja716V+VfEpR%O+4; L>'C?ih#&fr.;|͊C)l[4 @q#ݶS+9;\N j&7Q:޵*nx^T=`o@z%P}DC>m DCv~*7c~ޙ \t7\CtM,, ˍtvI˩A Ģg[n* 79Cr |0$dld?ֳm vVYFGrL1!o-ؒk1_lz'lkGg C+y˷}~'^A \NEg8:ݚјv^2ه볩]\;&{b[WQxS?O]o"tqC'g@T{C;sHWF' #U׿1|ͶS1SM!żVdǟPyYȶOU8f)r[elo&ڌ"OE%C-TlʕoVM^7MEj %35< V7U ,f7o\J69OGq=-mk3ڐ >GxcZfcJ7 +ǶE9m'ZnnE{>Gԇ/Q>N޹w?h~KjY a^!Ԝ@[E)}NnbTT){&ڞGkB7q}<;&#tYPN7WTRɶXr?~ڪs6T~jSo_i~Eg,P+}ܪmLjfG_N\fk 2E* ޜ}zk)ڞl;m܄oBlw<ድDc^濱/d͊OBJG͹);F"01;C>%NDo:an*.-tvdafܯMق7Fh$ЅbgES@~齹OO]@Uidaya`nj%۽l$W@yN}z_71GsA~zʽh*D&EkXt<7X'_.}Gkh1r&zoEUI,:b0j>yuvYޫG[@Vuoޜ_Yxob'gj%'Z-e[i 0oEL zj(-/1 TDqS'hљZDS3F"I @e'-b%Z<XxV|c&ZGڐ:F粭ެע͢S`8fv6ۍDCOK^͍4h?O4VL}/h큊9JőءU||Oς7QEPQӝ%7CDuLf?ԏ*5?VzxO.,SEgPr*xU)|~}{Z qEٶlN7YvGS}FsBQ8V{ٺT@Ukƒ,s} G˧7q`k%Z܆%ln֜MBʬl/4{vb&J~jљT kvF"M,,`qEog$Fӟ^jn.^UcUO6Zk @ =Ѭ˦㩽2bUW`-: Zfldaya+ \`y 5ݕG7[Vh''粭ެע͢S 3ٶl4Bl5]jT)|h?@\U7I-xz*fۉǓ X4@t Z9Q絟iDWEp^,&/:%z%UxB'mO[n"tm͚!`o蛘ȶshlrT2 @T>?7_l$"]̶zm^.&6Ԟ P1[;|a+\k=n?5cA.hZok m7BvT9m4i=kZ^rґ+Fr0[fv,枎7Is-E҈S;ۢ!*jbW^MJ*A.g{,P:UGQ̢!*jb3e*;& Ik`K"tmЍ7RLDǗF@UT1~Ӌ87m k(͊*'e|T[6$IRkkіh]aXt&}ZKk/4K$MYEE@Pz/=#ZO=:m$Zfw&ωkQEzJJ6XO~bYid`T1k=;e,N`nnk3ٶbH*zi<ۖO^tԁR<载]fHL,,O {fs8 ݬ9%7*S'* κR@n+Ԅ3pUxa gzm*P&7TV^/&€20@V*gM'B'mrvjN)|.ێgwTYtPF7TZ^;mQ`U,:b%T0# 5<0T9mGd8 ! gzmMBY`T1@ro8m00s~97s#T  *,VTMS6 kbjfm!Jo( /gR띪=J6CTg"3^ζzm&;t Bgb'P\hoz p+%|*Gk٨P0oQ9&{멼)`Tqe TM^J"tsYEf"  Ci<Ε]PzvE>yGʢpV,;q R dK<`HTqYXqzJNh}lԬr]}:ێo,dz97|v#f(@).5"b~Ypy]X#}'sSbΕlnwϞT7>p]GOq/`௕Wwy1Žtͅo`Rc2+2z# rT^EԸ;c}cC{ۗwǿyitΰ̽s8#&e^j{]?7E6^5գ\ok5# kDqoizts1ZqnYK>gV x]7 ~Ѝpxе Mr1UUp^nkFمԛUEPfF78D?wQ.Uu6VYK;x](btjR6s].|x\jv"W5 kr_0o6kڂP lT`x~ڕ#tfd` 77̥|+য7뵽F귞/'ƛsS1 l܏9Sv圕~5z`eGv޹ڡ`;77ͥg5.0n=sSeL=Թξj9f?zlڢ^ 8eIy!f^uJUfz1n}3 sث@i7ׂF7z1bӵ l tq"b^7PVT8ݜ#dE^7vv1-;uv;lvζO;S}^Frm.5Ƴmlo5F` ZO͹+aLk&ڴjrV9ZZ =Yo}qՑRSmCϚ L@u[=s=v9D u?K_lj Ѕx]|wzsnfjnl{A K95R?bsnj^jcc&ZG[~ɶԮ5rda9?e975?ژLMl;@rLz˵ģw~vGgq?޸ҵ[__])=wkʻ;s̱y?Nf*s wuMit|tkl P' QBf-xZa/SV+|Ý6aVQư=q.8M ބo|@YX^v/ٓz'~v 6n{7rm[ ` |"-IG4 65 tUs-rB0Ԅor}HYX^va 4n46߮rAWb{mvYI@Κ! P) n.Mj`!ݐ:AkW `/ K&lA8klNog='K_;@n@9Dƪﶷ.;9k"'Rc!چ]l6ӬFֵJ{~;ۭpjX%G0 T TILHf=mzPd?lklgay&۽mv+=]s"1 sI@E@@lKl4yDHxnk3r|{+Vzv&6mr6VQ-3ZU#|yעi̶gECllaT{^*7n vl g͕t2Κ5NAfat-m?'\K̡ģ?t6 @r># <1E /7뵆t]rw~DśXWWac28@oҢ{z`3Wq8{Vݵkdf;h+6@D'90ΐUɹ X$ O-(ֹf6i^mU@ɶTpvT7p0HUran8gDljqV v ˁ^jD@柦vx淲-62Ϛ p/|P-TYqA!䬧UqjQl0R}ެjب^j>^,vRMnr6DIZT |3xN{HPzM hnfS Km rbah]5ΥA:%|3W9ެV  FnSC77ڻv+xC9lkjD;m"l7mQmV9{Xm"|3u7zm0p^mLv/ר)R;xsPQn"t8+4 >A;Kg J\^4 0Wn/b;JE\XTETq"spw $`` ֛Z0W__knb"|2q Κ# AfPR;_ *fJ?Tj76ի*7| VU8Q.t3 @ AloďF 8ެySf1zqvk?00NqZwdZo~of6o`pڍRπq.vgQAoq(۽mp9t`W϶&sFq;Fog77/nk3" djAXxDkf}g'w@T THs/!ltwf;߻VM8׬& P}ӫSŢGt8_ޏV MM_+$3~3׿釳_O7.f,6iPa6S+qTPGGSzەq*$8={Xm͑A[j1MwWh55'izGuzfJ~ػv'9jQu! Mo٢iP4xz#2ژvunu!7TƩsv(@oT`-5~&XܢiP471xڼ1Xv/qqn~v8P^8s:C8@orv-OkEӠMT~qYpW^A?Ur;xs햱:Uq"[7/94A O:P%QMج-(N&/~qJ^7T]C8PdzTjWYs 7e?@Kl2?ƱёU)ޜFg^qW lu=S nS;ߔ,5ďeGv8Qy~yr:޵n?Vx^[q\:nEi޷n~ҥh;sxJ=}R ߔT(x5h:AO=Gu'uL:ey@ N"{K0/ml.CP>#KC_ o[W>8B7q"tc-՛p<:Sƍo~ߦnW=#1mkٵbMH;xV/>^xzo:~3]X/sӉ'GY|Z:l;wj+kk ߆y?.Q# -N*N _@E&ZC->{jl:X|큢7ac&L릭_Sh3W ،kRzӔ^qT/MRlLQdlwZé ݬ|p#E[^s{|<ڬ[54ژv$B7%"}%s.-:R |SMשw~Z7#*쐿~oB#Gok+(jc<,}qkoخqb ZREg͑`X ߔ ,5~ lKBsKib ۟fh5DžolO+u?u zmQ^m֋啔.49-g۩3,`,5[G&BcoITQ^7 ?=v>Vᙃ;x >ݝnk3,j]?70ίtc[up ݥyXm^K*M?"}Q6,0֕<\^ttWߊ$-͵΍Uqblͣ8%ђ !|ӯ_jfy[8sƥBˑqw j3Hm.w-|r.۬פW.M7hEU7ElWC NINTM?}lw&gnrh9/dg1{\l̛[tMnmM@/L6jͶoTqwiJ^w`jpv0Z9:GhI0Hoz=%txRZ~z)0*[fùC7뵳4oz#U*NT؜!!EGA |^jv7/>P:͝n\o>N/*1ۏNM8O?-̶30}-n#sЬm(jc1۽0HTƹvq͈TyM(#s*5j!NT`&:4xj#sXAˠ&_߻VM?DŽ =qs=:0r54쉔hĽ>EpSߤSto%˾mkӫNLoz1ȷ7,>{ ی7/xlOZN>}L; ބspY;PF߾;,o-89OmXXO+9*T5F*0xsdlw.o6V"FɧΌ{8~/(x&j;@O"lMrzJV޽\-3;a(=o;n?7QA6ZX7VgB>E&{\ߛtU.J_(uY8k֖t= q`󾲯`}꡾>6e&|S9t`W:G ބfB!cc?_z9hZz`x^7R^;U1ژOU[߶8wNwPNKnW# wC8_;|!JK]j|?}uh%!G_U" t~)̱*zm+cz1B7ٌnUVKh!w?Mxnp("u7]]K'߼\mO=9XJ 3pkyԹf67ژvlwWf3ihpbӖ /#[P7yRgR}[(ǰ}}_ƾ;g&^MTrۧ޹^yz^yM6V[TٌAت[ G[*ZȶSg"|`.5ďE+H3Oۊ""KL's0Sؿ{$GZ{ausu Oӫlv~GIjpz?mp.t^}?O{{vN%!D&M6I~֯V?T=x=z^7wYx5L6K{0qv[Tu8eAMnk3^U ӫx_}e;Nڭr]|aavלwp/pmg @vMCW=fЂ7aܪLxU\/E%o‡Smb<}))}`zp[Tzo>iW#J;E囝 RlE~/57[O.Skߟcgct M?۰Vf6|v~FXA*Nd/\Ԓ >/vT=lrjj8 ɚmYj'z^;Uvfzm"KZ'A1 x{Z b͜9V[17[4~*0xd=PI?澾ێV?іk˅o9|;4ڪ$wh;;{U)CXN|'1uH+kNN6S[ |ۏMTx]ƾ4h!}kikDś%7zj+ v~WW- I7_Rqb5opy>vz1m5G0ջI#K9 UtE՞# '߼jTEo:R7!vܫ v~i!}x=e_5F8w;qkpj`o6adl_y<{P+mVZpK*2xH:GJNr;w%`:_mWgo/}FJ8B8y|Ҿf)XK,eTg`+o@'xs&~,>"x3ށEVNeȊ[H:t`WyϹI<mZ=LV|w[*!03Upf<!|#K?Lo澾o7]'M/>P!e"RFo])4x'bق7a<3_Sm~uE-ϋjߛ^mD\$|s#K(37/<7coO?ێb!dzvqD<KX{n˩(*#!nh!#ZTՌ>"|s[ٶMQsŅEfi:~goNXS=9 g[UoY"t]]pRWh='/v+I#݄o|*0xsdlPoBmtͿf:ƥAYFw_7!S7=ZN({6|&7>aق+łLedN+soVPiTDTExV+/QynۓMr[==ǽԇ׍VǬ"V%U7{ F\xPV`vN晢nPfޛ^|Bn7Z-z-7ҪS|h5$v*{E-rǮjW /b}2>RD&B8;.ݮVW UpMRc)Kjj7]QHϼ[贼*2x] ބ8zjҫlS}.^%_i/[RNjhC!s,+Q~.*8߄6،Dś'U0VPi˭j4EMTWE;7^`s*hE!!G?/c]qUQhny#0>| | "!DQͅC>0؞nj³6M˩7_;sf)o>+*8]FT10dv:vd1m?Lo^y]bN?Dz:G> =m{[YELyjt iϜU zm4jc-UC۩u'..{=9B8z{̱)# 0&|3Ԙv s:T7?)lVpkCfNq)-=:׬&LM6Ƴݻ_:ӸѮ~uc]Q'ޏ.P a ߬m | !S\M/Bng>kRd(:ߺe)f6emz1ߋChʪ!_nW¹vhC0"|3UâҙXQV7/]+䶿ٯnyiO iG ܹshfj0F|asdN]Z_|yk 3jF`0 Klý3cZ\i\o/od'd 7;vV:Gyfw^mԲݶU9_"U" Ğ>s6co7#KlC;C:ݰ m)2kOP&^8]\7dciПwyKzgiz1^5n*v肔q_^1Up 6yʿU6ᛑwr:toL/j!ydlw:G]y' Cun.^D'ZRv׌9tEkvT9ucE P=Yj|' p߻߻ٿ{$?|xhƸ[(Z]WiR n(浿m+J|_4pswdzFzn 9 '߼w63ϧ+n9ooGZmDmwqg,v~I/?hqX4Z]EQc]3 ^-jcT@qh"c#?;/&jOv&Fa ބhzm mӫV)TQ&ZQb'VǗ࣏BM9VkeDRP{% ްIכoD ބHڦW[lwUl?j/XǗQG*U~M5JvW37S[ٶ!d;O om7(v~))ŶzboJx{i!m"607Pr^QR7a=yԸ3 >sb;n# 8 hlprK 88%VR$xC|w|o}桡񃹽qVg&KZN n*DF*SOrn(JOv7㾟lO:2"x Df"G\ 7ژL/^$B X󗀟S[)=:j+wkȸ\ʮ g.@Yj>oʷ~~fjdc;߸vamED)eTrZ !VǗRIv'* WA?+sj#9V[4QR~>nnƠ'ionkop zo?b աr M^˩[@WTA~o?=Q 'B8@7*Eï8%SM'x~?n1|YC:{t"ijcZ/7 =ؕWfh0̦Wlwd; Rd-^vv~xߍɜH7#KoHEh!NUD W[_ gaq6[~z.O v)g~}pHb f.b@{61vS: 0Ws{5w tdkÑ1Sh+9Ta_'.$!eZ^SS*Covrg8oјCz͓ @Dd=G0c%xsA#thj!124B7o3]+!)LwLimndzUQott7zdT|?Iwg\h7K7rUt+ᛨo}ONb K1=QFMY/{/>ܻ17BUiTzw_]w`Z[/ޢm ~B̘ާp Dd<0G}vd#ȩu񞏹x4Whs᭜9;+פ賏})WF~O86*A7@rD:9I7/>]kQ^ 4#.xM㊝m͢S8ؑ'ޕxl<4u(١v\ h&GE/ \yBH瓃o,H5)UYDAK0ж -lL?]>/J`]u -67 -^GB:wz{fgݽ1z*,ԝ'tՠ.S% H>Eo\ИIϷg{ ߬oN~=xS\ө/]F!տ OB z"ʷ{ljv'~J7O.@S+QUp+̐7`o*)ӡoݙ%S S H)f\ 6K,_$OU7!᎗FMio$5yQIי4xkܙF6C5)RY)4cEA8rr+QUp#JmHOK]1 @&h\Q\x R;%Ef4St@ϵJr+PUZ&3udoi]5x#IM086Mt Zꛣ+WF&?$s핇*;a* B ߬oFͮnC7w(|޹yWO"y| & J6LDH$#?cO;(|SzTt5=|Bmݕ}eF ĂoNDxݙ%Sjf,/F3V{%AȤ xGr룢'767]c#Oܐ`t3aBC@5)`u1S (}3S +WM d1WKfVOh7WAiʔI)!0~6e-SQ@R\YKQ!f7ƴPW] j&hǗ! 0xә4ja3`IѝXoE386Ǔ7HE VYDQ#18pL7\*TkG!qx&x_J|GFx]vε}F[,# Nct oIVYDQyxx\JTqY ޜtzh) HǛ):ݕUݶ?x3oVYDQyuy0f~ɘ+UαUF|@N7!o8 ވs.k,DtqiߔoRs~|ތL0+PM@lAip5@L?]$?+T9 dcO\OwԺQ̫~PsahE7oQemN ^&RM@BlAhpoh ~=x3?oV7䟮oN΋FĖUc+M*Ꮑ7,5 2:a7u@E TYDqS;!$Qd=aJ;777 /QS.72{ۜGweU)#?,uۙ@T*VΕCԂ7B+|swf)5 oe|Mw JWqǙ!K: .V.Rt٬}@Z~  wW"Ӓ]==q9+io΍ϛo:۾o.|z0YܚF&M(+if]o炎NDY~N%xb4k QHĵgۯoƦ&lT9jzwnTt@l~ۙ-f*H; ߼jc[@@R:H'!M[Ln2JbE%!`H;} պđV$o1]vz' 4xkܙYJbhE"~`4M s\xVR2A1&_<o$aS[ԏ4*BmTgfoY\J6$x3Dpϧ7R7ryb/=6cs)LQqP\HhH:޸ tZbh3ٌ3|!/BEݑ]tAf#c7t駊ҪY7$z.8 y:|$x3Ll/ĺ{FZ* 7{>5b-;A#S|qzwÉ[zz[7u}jMpv+":~/soU*Hn㛳QTQhN+.72jor~s\lǗ5X3oWzu*~JW M HP?ZǡK#գ H璸 6cΏZoFf:vloWBQIuzyYDg[pF~#Pwo(t)QEit)\|dF&uUAG,He&$=xSW9Ц8ed\"UPUf+dSR?`PAityT-.1ᛑh#W$xs\*7?tQjDifxiDUH6*H'k9{[z M"HtU DoN\qzl. ݥ'%vb07H*Wf-o|ϛ 7v]p̈́CMT7rrזMtfT)6-Jǚ!|fq-ؑMk 5@hJRA>Rz$dP ~1@QI 8Yh5`lT?~ǁP57+,)`7M d·Wk!0+Hu+MTH졎don1=0Wet6Qu xiDTfo;Ӗ Hg 5f a?ij]p΍7fSb0Mw d[sRbjT{9 y%:@1v h279ZKˁVK]OA&KXĵZǖfzwnVN:HFwa$x3vHT!I㧊݁ u()W= t6Nv/Q?'k=-蓼Ҡ%wĢ)^zlr{ZzAfmm3Q?/$FZA7cYo)mFk ߴPC$ǰ+AtH~(]?>ISsc|4xӾ)cV5'yk&S|"oA~{ @|3htt{񑩌: q8auD}uZ7o3]|5t=}]jd57ȝl=\p@PAjϰ_Aϧ媗L-)qlwV}N#>9[E"ܢq?o6E3BkrՎaBCZN:[lLn@|=hy?d6;nʆ`dҡKtV22o$niV:M}2~*4n7l= 3&sFOH4ILxZg3fPpjE+$9qm%xs\S9Ц~XE^C;hauN)e~i 7} o,՜WlR/{ lWu6N.jL?~67oQ; ~* ҒFT/fzC,PBH&J9\#$X:x#!$7dž`G.;ee"{ d%up6|#yy8,nrT@5u7#N>.8Zo\jF;R PA[Ci2:z(0@ȬܐcbnSϻUD$U;3K N?gOZO: H:|ԃ77&&9bS.=V9ժIY$?a0@7p+2*w ԯa˘|OVƴoHYc7a5?7fy8KX3N IB "3rd3N;Enĵs|-BQ;t EȈ!Mw@%ٷNuo1gn߲ͩoq7rl(oS"7;2*&|S=uo6$BZ.S$KB0N%*|#供 w\.6cH Iyd䎌5SZj HB"vO)+7BX#|m;}o.BSBa5r!;ɳ`5O%HS@D"Q!].;ǿkz`KG_=oZVHhDaܖoΏZf x5.=Q͎6a N7ⓃoB$!&DP l媗4N&Eh{|c14.5|ZȸSƦCHHwPIGfdbQ7|5NB櫜ahSe\lj "ζ ,?M{tA0zjm2vTm{u;Yڹ\o9b(̒yT{HRG<%2 ޜ=Q.OUn>I1F[XE5 AAFOJS Sk{_z8r> q3Jw9sk6JFNIXuFF i]}(.㧊yMgf6lyh&SijG: cmtA0zjm#Vsoed+ĚZM] N -5#xӝk1#Gr4Dt锾Ώ7u),# oWYDl;;߬7HFOS/4t->̏NKʁ6{F@e7VHf Q+JMf)WYА6ߧnsrYOrjh{J66O0Ȉ SoQ?+ Sk{49~vq.8x؜Ē>=A&ÓvL+ ߏ ifȣ Y9ovaT;G]=@Q3],S)w>Yi=uL i'-Upد9w}=jSI7UXFeQHi|0i=vF"g YT7J{B}Rgh赜SUplͯ0=VFMڟ~hw IF3 gHJRcw7_)ӊr[ƙfO ߪweB{2VOV=V}%Ef SKr pi囂>]cw-i>\-LCSR˃q_ [lq 3GfZ|H#ATܱnOe cZOj=^M Y*8fx5xc-4vꅽCcՙμFpHҰɃ|.2v_fs1ϼ'/l%,2yiU a>.߬ z67M=T<. Z"{+N-p JۢͭmtT^53`p,:S͎h=z^Vz ߬o&Y;z !H|݊L2;[l=UdvlJ& o:Di=\}O5@h]ҁMz9ZO1,tԆƦ"n,7-M__~ ̋}*ߓ|.~[G )T҅Mzj*ryƠy?[Oɹp :8M #B8~+di?%o6[Ot.Y@"n[^qӟNh= 2,yb,. Ư.zE_'lhL\ik)X|ϔ"c o:SI)ـ4fڿc L."| 7otg{݄pD7+b)QdF|,sLwE{`bl**<7@:Ih$8WVzz9NOC}?d ꙟŨ~CN\-0O $xs+ AA;$~JH/2w9uRSD멝z i'r4ON!$6d>&%8ﲷ?[ `qd NEcQ9*cPBKQ F#$IJ5xZ8Bz2w&]fF.r4(wH' ϙtX-t+7h=38H,᛺}ie~TĄ E2娨Sz;7` ֑dF|oojM^ثYԵJ$Y@+ƦzAL| ݺ y`L9:7I9۷Go^e͖uuJw]UK.-~ʶ[+jFρ3"iw9RSF OY겷//9r[j\`Ge7zkuXoz;(H3뉍( "y5.w_ڗs)sSnvqz^)SF|GyH;7Fdqz7-{b Ȕ&6W9nT/~I 1zRC,i"a!xdpvObZi걖[μا=kJX?O为hEAOco,c ^}OT4یoUކ-'VRиڋA$G77:zҽu=pR$~J$QhwnsEG:4HGZO57G)x7O[Z9rթnڬnO?6}; -jW^x5xs-J=k!ġulfnboJ=obzw-Uoޡb`1hf!b ~yBv?2lD)І6%coXpݞP_TH2xߕQWxpЊ$ߜHK|*vc8t%-ivB)o[iǘс6/ے~w ߌ_]T oesAB8 (sHm7T$qjxh=YCUh=y/GKt& [59qMopH Hbr-$xsAMB8ww~b)9-_܈qb3G'.oVcGYbҌ6:cS $xoMR~?M-B8a:bd>+0b%ZN2jET_qh7Ay멿2R^br҆6ѧszg ͻTH2xߕQs. B8a)di?%l=ܰNwЀQfa|fRF.Κ,c<`_ǨYbr\GuHE Do`WO/_dФ9}~esP:6m9=͕XaMwAk 3BX|sTA6\e_^VXBuߟz{7)7EfҖ~sƲQho,0 ]e;Y۷9-0~yR92FirTM*e I($ö&ɿY7 M.&Lvܐ.jMU>Z}\i=Ӏ]"v |1h7AŸa9]G?F*}w $}xA|pSV ͭm'gyw6>|4hw{ZK ޿DZO:6m>z-_˫d+BP%Il9wT%syJ7oS1K]FZ$E|7"?LԞtwC;uW2p@h;b47O^TWEljTF: sUk#`G93o'JU=CA'NrrdӵuurK)Rw Ʀy+ @PLwcgMWRTi7H~HT3ҵd\%,`Y]&! l ߌ_]L4xߕQ9fDIMRSCZOxWՏ9QiSQ1*잴%&6dDnʯd[nEF-~v? X\ Lm=ht LQn'_A:X4Rd1$lo- }۪>B{9;qhwg9IB&F q>|tq@cgUo涺X3)rR7OZZ%J*1A ,RF8 ?MJuY2=m5@SF~Y:s}ڐ-RU鶞?Ona=Z v@B7tgQ ']UMTXuL v*c  Ү?TG|sTDZ *@.]eTL*Qd }< ^sҏ6Yݦ--m#_TsyEo $' ވ?8O&KN8S;wY})i< -0E{;먌QTX"oN.FU҇6uMj(cwytm=S_ Hu7o{թ{y=@Mn&x~m,*@J&0p@LpO}1PnUki1&m6Rݦ[N5"c' [uNY}#7\f;ͻ/ !$~JD;,س xEͮ1p@WYN%``1h7oTScSCu\nӌ-p>z-gn[~W9BLFԓḣOS).@Ʀ";,H?]K=UR/8Գ0 ryƠj9@]s@uMWi$M- vrpeQ@:9q4oGpvO倊0qm63Ngo`0p.R&OdP)͓o'k Um6 M#il9a+#!!OvM7W6HD(>j_7[ͯnNgIZwۚUwOQU2yPBfz 8YGƖi='z @mU9IYݦnsJcG4SMC=^bWv['B8@zl?X?PĕD7]7 ArR9l7S9frU4yp1 ~ O J@ǖ MEE& $c[uYގ66?|ce*kQT3V7y[?lOumL`vu8Hoe?2!RFsZQ3p}Xi=gMS T]K /g ڧWjʵIu*s4nc2|k9Ռzq߭]D:VCK7D5x32nH!k96x[do`܃|aA`V&O_{j_?|P@Z$`6\ݦ_[N5}1rz_\qӑ{7W ǜ(!8_)uX/u=R9^0v~Ҏpc678צ 6Bn7S o~s2#з>:+*G-mOdU}ϗ;)ۅ/eמEp$OIh[m>q)@p.Ϯ1p2v)՗c R:G3[WoAOpuT>1W1jZJv!)<7i_c31`I8A$'Qfm T3Gz^@B8^eӶzBE.Opu?vr7Ƀ|@,mwSd |OeGاcTQ1N-%hvYbEqi3grr$xKxGa!$,cipd:h <-4wa$d Julzmj ^&h m6ɺmZwΪ:a‘yefp[^5_hD?{\s_Io$YHI"c>v\ڮs=16*N= z^.,G~S2cy-1I6 *k9R&!)1 F|*xa @wd 21H~n{$[cz/Pzm$Au.ޅUrxPqcMo2ˁvDHś$7]78B8L>fz'=h/2 F8|޾ >"G[iZOm6Qݦ}l r;m?oɒ~ؕHf֊t/{pIu3G_V96h"at̿\MSH;uPFĨ8YbH ZOU2ci;iT:mMl9r𦖬UIpLB8)%yN{~n*"1%xi$?w.@Ʀh9汁7 5M}TrT TM^(\AuǨn-N|M- \|%>z-gs-r}]bᆵ"|kXA@c&j@멄NXog on4nsخAǘ51J^.1TxcԦp`6n/ZN}# o~w xrpon~uwT"g/W/I6 ߙIVNU _f*xd *hƴ-S&v >V/|z)!xð*"ׂ[ :RuC*HB~-%!(%fIwn.6z;1Zx>% BpTcp8h).&ZXg4?Fm8N%HZtQ)\7+$|!xh6nZNv{jRnsFOy>)2;0 -#)qethdq@6$YTyBvHsT?Лz{GoC!T*kmE:T( $JY7|-W s {zwp&|#_ٯHu?LC ; kĸ ZO%(9`%7oval*fuEo/6TA-Iqώ;x'>Eei,`p9Tr.L/r n.R&ATyc\ps*E& L9MjH6hS&ϲo;~Nc]B \RV9>]_!(sꅽ.v}%`gAlc޾ v MPsJ\*Sٶ,S;dߞysΟ0wkvҏӥjރ6=-n‘C_J<#AwW8+2v#cVF/1Ql-uJus_Y3x۠ZNGB8R {☿])O܍B'|[jсzE BQ5s>ur%dewo818NAJ6TIXOZR-#MH~*TH.98o0W| .$ kfNqb3 =:t&n W^`nR?[R>K/f,@82J:/"RFnX?BrgΗ+Y8S/f-LN 7TpX{?ķ}bK$?MUN϶8i#fmn -$ `SV$fgV JX^r"; L9zM~Z~ ssI'h:Y3IkpvkDg5yi VX:ŷvTҫR ^&ף z$*gB}sJ=K]37@8^NLu$SaEMA\w iDBEv7VXI)?G+,$ȧ/~xj^?WFᛅu@njlc\Aٟ21H7á$c⹹ SnvhP/4tF")Gdjm~4!|aިqjC9RY;`‡Gѻ$3 `t}v17dI%#}?.3ml**ʗV'w~?;ͭUrV_#Pեү2HTޏgV ⥾v@=[\`)G??:~#7G:Rݝtz{?\Ri<4"/7pM&3ئpMV1[EܐJ8EN,6gcyYc⸓cPK*eE%\\?vHof׌7\}ƲR ȵxh9@C7UL9:h7pirn>_<׵uª^" IS'ߡ@f@F83m+Pz6eƢji^rYZZr ˌKL5sui݃T1CTn÷3?׍Q*IzVBO4k?(vJVgB@՛Gã77nFMòy7OLֈ OBuRi=Ey>cw6kw.VA;ze -a}*A=}yF^7» :QZo8Q+7| ԆrNYx, !ۋ #Ak 3rg{$h2Sơ*j𜴕0Y IF2nl*e*pz_p\S)|ݴB"L9-!Aɨ'"O< k؆j8[ay ZӕSS[ =͓_ao|8$ oX;olL9r/W*mJB7<K*!Sw'*F>Ъjvk8C9|8Y&SARll**<7 |(iO#Msp7 (@Pfᛪj5qS)8YP7Wĭ5'ea¹-aH) ]s\o;=|V&Aܨֱ NVX5pjE ˲xί Z|ޯji^ ^j|eRo:l'\'SrWZB7C[ǟV3IB8HҮ4zLOR/)Ke< WM+ Nm+b~v 5#A}|d&@*M78TA$h2Sơj c^ f5wNS^ p-ܓЍ㎄N\YHk+,9hJRB8zcp$Wٶ<.GĩrwC5 ks$iUPEVpJHɃ| 7BƓ_žᴝ \a ̤\Y?ux/!-;BB7?Yu>t#}m]<>9hϔ#yoMmk!'tq旣z]\}Y+fUgȪ' R0qo7îQKZsҼ>ZOϙ(2Q(O7UN譫T&h9MJB7'viI99a>)G1Zx A_E5sr_pۉ`G[[?@zoX`]knz*㗨l1Ђ=<&[ʭc幹 ˤ!ABҢ,F,4mL\\vy JV'S#}rlKeo`cf4Z'o 6ʿߤ߇] (M S4ym`%N*dB:*  cG2mI$r}k*[B ᠂S{Jz\_L9p QRo mlL |{oY_eEa?vK`^jTT ; kEjgSN܅volT(j, VsJ*@1TH@‘㨭6i۵L9w6F whw EE+, )ER -$a-0x h y`ռL>cyŇj#!\7zy_ͩ[ǐh[0LB83oTUp~EoϓpNkN>(@ 3HUT$|&c\#SDHD%OHK9e>cwVRT6BrMYX֟ $Vp86j> p͖S2gp<:=ӭވLɝ} .ǡK~1pTq  E8ެ mҟ%|S%@5 _߿O8y*ar-R .-dܭuߑ ֟/mpڴprzHV\yJ;C76HҾO*‘J8zNcha#PߠZҤ߇]o]T8h5=ǔ\o  BHE+u}9q*VME _.̰AKV^n,"[W+G+A!-ٝM*|8)G1ZF!|Ա ‚Hh $ȱ7lҞVW?zi!+ EeqALNV7U!S/9x,WԱ߸p- $t#;:cå{/N>G5ScoHB8猴ן9?>5d|[+FrZa2pT4b8w@c GmnT}~V<{I!o\RZ,W~d!~jE˩Ňyq)W{&fr!z)GϿ1Zulkn},m,jV2 BA9<ɝwWeod$T u,H#|SdG2,o&-,V+8T+Ḵx,K:|oe?CiE˩]ض)V) h]%!rHZIh!~#|X3=S{'~sBv @L{Ңf |oR1R-2z@Pf<^.j (F}yMCJ o6akDq&}v,#k3rdNRj+ h;iUW _d_wr|ٯ=ξLt'IbaE%P,qxo%` T}i ݤ%fsߗvk; &-XvXf/3_nG-RB'}1h~.GK~1 HɃh; waB*`~퇇s \&+ 3HB2ITys }ƲB1VI4VX6u:ZTIƇ6C8rr(#oXwopS@=ʿߤ߇ݧ|!Th3S$ovI_ c?tuon끞-+50˕ANr lha&Ss7p(ZAB8|;x\™8ecng+t1TNc HG[ldF@FVX~cfml*2j9EI2 zvo*1GrXŨ~C%eB{*HBC[+Np޺X :7!ΡT:B7LjTdIsu!i97Ӧ^-L9ٍGt"|XVX~/’ט E)Y;Z&a p|jZO=&B U"; ;|3E@o?FGbUC8_ޗH+.4z) uj*B7j)tYy^-Ǩʱ%+"y˔~sc'҅O>mNp)=jw5t|4yU@rL ߴITI[ M#(@Pfl[ Qr*-JeUZm3sEɔ').7?&k$#~lT4Mo#Գ?eCZ-DaA\i=e96.|E<%7sfќ5u'+IuW+8HUwX.F5qkZ( !n7 ]OB8'!|krqTp*ߴQ-jjQφڥ\@VI(@PTq GGzr,"9HwJ=xrJ^̓od{}j́7V;{彔>wmX5YQ-o໢Ƀhc 6A)?P]`obT,AS.,K0($L! B8\qTZB7U~%d親`)1@9‘L9Z#֛h NhYz5<~<ˍaG2cI\ TU+8~5q5#p ZwkVIGwŇKHU).uP_Kiwc!wuϓ7AB8Kz;Q& v0=PBnQSS7HCS/Uw*8¹Puu {[Nu&|#qQ߽ЍTZ)ɵ}uOqsh'ݫv$w˔YB8Cl v0=>!E)/z! Vyc$@86F 7KlUpp\R H%{;rk-v6tá+B7}_W w%3=fi{Z}=L|FڴZg!sfTTdGrƓL,]j ҂7B8l9u %t#_ib8oEڎBB82?$u̽92?͔z{oୱd:taM"}Z|Nni>#T_dG2cIRT^MB8=xI&v˩m!A*y/fe_4kDYRa]ΔQfl8b&v2Y<øUƟU3zN9‘Iv;SLoZ>+P^φ X k6d:Z~ k+8yJG%i[oG) H@I軷VR)ת'8#+X=$ +K}e:xgl**@*N@ܕupQFGj.M| -z.wqݪpNmTq!HuvK5ZI!I M:Gd_ձδcۼ O ZN4Ӗ{2өVy; K6dfݒ~*8<==Ttmlnݤm}-wr#9ӓ)G'xME%r @zf^TQK I`o36SVpCn׭pN\Yh{U#-\=tSka[")Qpb+1q}3y7T0ӖnƮh;Ţ=B۩ Ĩ|sΌ'm1YJvkWWn9 }vg_シ!* |MD)f0bJO<0>~Ǧ; IOrMl\ j%s+trJB t/[)F;ƟﭴKzΔF{d NH+7zeNiيN~cYL2ch=eG5Ӧ -U:s}9/-jC7F]>쌣TjqF{*8 ~,$3{{b Œb. mʮͭm7plJ{)B7)ع@1A',TQO1ڛ7C>S\arMMڦo>zbo|璍'X))B7h\![}8qeAm uPЭ8Rv&"|5 T"|1!|`fl< ?߫fp.#wntq:b~Dǵ[DờɃh;5 T[OGݟj!G-Rfn "!#! B?ә UC7ctD+O\z |1b *pi(0ص]6O&jVzT[I[EM.M\ ᴓT"t$/ɒj%W`/&"|o:?7K %STIԻcI&tXmn H-B7HBiNi^Z58]P'8} rí>S\D q: IL.~oA Xy*7OοO5 M ૮-$ -Lz.7'!7WZ7 swyW?8tSCت~3qWHf. x!$4u^GZOB{Eͮ1pdz=ҍehEmoB7ZtƓLһMIB8y { EK!5Rg/'+Jrh/7oV@).MئYzTТO2=GTC89‘o]]TFcq5uF2*=ls Rml**{Ȃ#}~hah=$]1Lu*>\T mjq"߱46]-qnY?VZp}e&۷V6쓈ڀR[ᛳVDןyl0*SEW$] Q&A\o;@k5JBR@.i,ĵب!&{m!WfyB8V)NI9.pto9q{[mIL7Hfgf;${M z M ߬ݾऊBh.yp*h۷SVM7r Jf.cq^EPm7>O56d%I\EtܘY|uk}oxI*. TF3V}.y5S<7O|Ӝ-K5Ͼk M0bXpЕSok03r @P&aTRõS±SVC:8KT=}v1™3nSƅs#:< Uht &'ZO@DI@囄qRF9?0SI:$%B8hYQZ[ɺI՛(ߗ1URn=E.Lo$oJ37EFpBEkYHJYo B8ꇓb&dƽl.wSzB/rzox w>NIM"L71qbtq1|q] )T ߸.! |a5{αs#T"'9Sh&CItF^"s @B P&&=}&Y鴻tS* !$7P UPzC(ܩWZI\Ӫѧ4 , -Mtt{D[^doC8 ΛK~/t ?7ac8)@xsɲ˘qo o[OM{)7Hj)|$!R&&CR/#M*k,d HŎ SR;8v6w ;7h=}ok03r @ P&&nwV* e\|Zsnp]PTZމ2%!y3qFPRoI`-sT9bZrT&|^zTIL1" ,ؾcǜƲf\YY31#^FPڭjOCxԇ+V#YZ)mh|yf&nH+|N-/..k=uTh= Zn1q0k*#zm 3m3y7>s#<-Go=ݭ>sTo3p af"| In|kmj>)bfym,f$lRC/NC8R Ǧy_ VTjPDʠ7D[O,3 DaIO^[`#}h%jW'|7RjLplpNZ!MϟξKf; qƦJS@y8H&FYG8TAu9Yͷg!RFV#x wPa seߗj/yS&B8)(UeJsrM-|omنʭJi af"| |0.H^ <МQ9z_:+l&' H!Tc8gc̯}͵Tz@u;]~CI 7$Qضpbҗww m\ 9x C>N盺mXAJi,kJ5Z܎mW B8vsf!hUI_J(1-i)ZO=$m1$uwW m'҂[[_qns} 7 q7a*O<#}VpN_Ў-z7(t\uo7nۖgCi B= [=tn Wr8|C +B8K%|C)H6o%pμWбp! m$r؉Վ$xYM㺭Ӷs+I4 5A,z]5;"e|S[`o_!;phQ|?Th=0TF͛sVpBkp.Za$T9{mռQ4U%_'T,-ʭJi QƦ0TTINSOˋlpLÉXN-S( [i>t 9loccUBkߵrۥZ2'tǺ~zJ17q&ܽ~[q+I9771-TAefLm*1֏Z"|㎲Rሪ]LZ™W/.IbN,s;~L^&XǽoFӴ@ҔDIV%Ӑ,n7כ5H#*8@H ѬiUwF%Pv]!҅ گT-eTQe/jy=2K~NIIVqo L1Ң׭]=EiPƍZU0J{Sz̕~s|]S7/,I(𘍭:*4\O0ےS[#|]Z$簄swlkaz͹MyലB8(Dxōp궘iY‘>GɡYŶ.a-Gl9N.FItFn׹`aaOt1vر1ҢJViwk1дBᄙN|WZ۞f)n3ûUܼN2hCZǕ꺿jUj4Cp6}JS)-8$M ¶γ{ {mtq|Ʀ%FpVEmAROM)#}VpՏpH5hl:w~w)6XM;rN}gBc žǨ|NG߬7R&C围#f+53 z(ΖSp<393ъ)7kp,պ©C=CO"|D] {ߐ71RU--ppNZ@_YXi]}S.#^v? t$6"YqcvʭmV 3: ¶dbvs+l{OCWbഊB|nn;+k!f5[д13ylgu#GYdكNMHZO= f&*pڪSHqba7[Z Zo_MZ™1NB!8Ë>5[9ՐRԔ[O@JaxeOmlY[8&*nS \Mw;O[B8zڮr)]XPmi)+xkѤ%x=/񭧸 $lv*VfBPNh-S)AUP~uhW6H9/cgyǼ|aNZo|-Gl )Wi Lhj7Kz -&oBtr,|X+~0,ZOf*i0JmW(ጾ1fZsSuZI^'q$|n2pҡ~.TRõ7k=i!wIc!3URi] H|Ϝ&B8>hy3~qN i' F:{MGM f&dю$Ùߤ:9P* T:iU-Ҋ.Agв@u?3qPk :Rϝ_LETiGCiB멏@Rji|DcWP5iRgyMc8MtzP_ڝk YWv7̀e>"!HiMq QXH)ŠJX@b["}.6=n7QW1;v+CലBfiu:*!6ߗ1~B8s svheᛨR|i7 :ԓ"O8@R4}cTɭpv2vq U3l  yo^N 7IG*|6k="!olL^>MZm4Hf.̲}1]/>E)AֻW=|D71@ZTɊU(2֏*Z˪P&U*H5#Le='fJ8p:իklTT&7'[Vkovl6 U/ Bخ@ʄi?>VYtp?#-rpΛXHeMhoI9/cgαwMժ,ٷ5[5ErLeih5{& 03չw1Mopղ[VXC*q\R rױ]fp\0#P^@^BD6~q)i  !dafN;f)CEd\zm.,S*CXZ!aHAGoW s}g1J9i7:S v&6$A)L mVzM  noͭ7-[ }zvzoL\_|Ϝ&B8spbڷ5xoYrfNi77ov6ak߱WK& :iW 3Z }M:hma7[FU(L\hyZc=m7>Zd]_ ݨd5>&niTWó/}K{T_IZwnaf |}Z5HNN5ZmtJDEc!oOup^`JzG"L}rJ՛(~7nپnʭS lW 3UOt1nr1C m3 $ڔRjڤz᜹2o]G q7%?m[/zѧV^5;\7y8 Iސ-{ :{ }6ߞ"CmXANsj[ӬbՎp}epm?zK *p=wx_ $d_+pFTR֛ lov[  {p ><=Ҧ1H1NhJfP NQ&2#}79}nw.RieߩW̏EsX*p~L^Ǚj"p ̷ȋb ^OO/c yVkl_Yc!JTF*P5#ZB89Kgfr@IE;?9~gˑ6Y\l=E6+ 4k|7,(c%𭧻[+l__7`3PFt: M5*r`*$Vbx7-lpf^eﳫp^`Jޔ~UNZM5|9ueҠ^pLu%|+MWa#|Ad[gfc9j m:ϻ73(BWF ~prvZo:wJFviH#} 4{ۼo`mx [{2Ī>Nh,d&$ = (Wj +P$/}ی_\JdxOu\|z^ՖYi7jQו 3S/3u@nHp~݆ih?1]q[Q~'ɶuܼ©&VX<{mռA4cO>Xm\i=E.3ӭU@}8ˋd\e e\bEf ֏7J TH _!v6Nܼ_% !^KSHQ,@ʭ~C `<u:fm p%TZo\%p*#9B8D/IhVqE:vS^CT 3.^g 'z%|DU4E T4B۩d@%mEdy?a 3m3y Z-I#S'Cŀ`Ǚ fga4<ړmF) ^B "; {TZOv*![!P7ip@9l֪άwNy_ NQ)UFBUTj.ٸo`jS hc *@}H:DD(MzHu!!Si<-Gv*n|@qב lT 3S o@ d vOCǖМւh=e?m4L&Ε~s|]eh%S&B8s6IsJ"h=e[NvD%xtso+lwO''Ӵ4 3ZˢB I!)oB8qsJ{}}^kAISo`uip:c8< ݪ[ի9[@K rfTS>T | sHuՎ$ܼK/s=""|l+L<G{1*H2Z@*olhlm"ۻ|!Rl;l HY# ozՄz lt6^œ^Hűo4,SVӪL$m!3/ ͛˵p-2#ԡvgsXelO盝*c-kq߯7ȁAYc!o63 $P7oY‘j}Pk[dž5X7"|Pid12{p:hVEkAהҶ2~z4, }L^GD7⢧\dӺmaf"|5h7ց`k ezNgVp׫J8Qp(QNL՚7o`b 1a7NGo@pNn{s 0"Tބ"m&fplpf-ζSq(Uo>im=EDM\m;U'|-Ԟ?b4h,Sv.`Qe'\+ܚy‚)y1WM }c͔[Ov]f[ \3^(vJ3s:oQ%Ua&QB˦nC8,tΒKmd\㬺*il=Ş 7;Uo`b bɺˋlw h^Yc!ޥhZDǬR( %!rHmW%_[5͛KC8>&tv4ATɆu"|kMWCU!|UaSI9f]ohr1H*= f4Mh+%B;w>+C8Ή};u)XoMTGrbR]2iXR:lJ&ۃ7hUyp X:鍏VLܼ\v]io%/ރz3MB@ c{XeIV[` 7%nzDmJl22o]gnuݼA~qU jb-^*$TJ@vbB)㩄oh;eFU%7@9l֯bՇ-3،bgS"So`Rl 6|n@|:Nkz͙U%@QEc!o!bN&PS!٥ՋK D݊M*Nik=6$T[ 4u%d\eP%&*o$Q#;6b* Udη!҅Ormξˎa!JD&'| 6;C8S#ZOmFmATBM( sKZ)JhBcNcY3U76 AQqP9[ieAgHiUM `[6Wx4q&s n5׀af^gYNX)kPR7v N‘*0a_[5o|L I-Mh\A 3mL7cR!k9[(k,D7Mo? Y2p7>m< |[tkரz/iYD[^d{?C` L$u m@$y8 RFNZOX77v M#|.7+lw x !UDXis1;˘HjB8?:XZO-af"|uX\cв~PZxi lpN>5V9˜8@ؤ}Kuqqآ2Q)*s BV  X;q򍿳R).TΌBnm*U!XSuuDX1|.V8}`C|ͨ*@YEkA폰}Z'ZN!-$S>g{m!WfyB8 vT/8Smk l0f&nByN@Œֲx~eŊC=o.( B8Uv B8k~U$r)7pN1LN%R7k l{Oou]TT5pIc!3U*ߴv i%!Wv7@ή }P3EB8Sj zAVv*F=}ne^!v\:P[™[]9 rrTn=Ujg'|XMWCEذwv*h;~ZmzHG*|6k$-!ɫi3mo njZe@Ab,/2HL;0w+D囶5J'7pT/9qs~9{6}* n03qCZd1USBeA q z}ވ-^+]X:4(!c,SxG$5Z8~ n*pC>F+;+֏fE| \c{;e±/\\;>3-TuG+>$j1l̪f5/x)hBhZw[/.%M^‘O1~Il=Eq+. V.VA H/ 8xB>Z-zHpzA>spbAbԟ 6 1UO/cz2crHTTƒඐ͜R* i4uz\3U}Ǣ[9,7oj7CъA zJMf 2eiŖ9T  HjxnN@FuqQ^7S:V8h_hJ)ɛi"֞N2 ZOE|Cgr;)@5xӨ13y"s`ԭ8 N03-1p312,ǘtٷ^*L2fX,ZOEO Uov␄p^֙NR]\  xUhɧ $Zm!D1 v0"ᛨ]"|/QwF].3uh}Ii=Eqhv5obz& R(񼼘ͼ1O捷^*9lJfnuT=FRzp>H)P7#p}e,&!/}oUY R-Ojly*y\sR{ט=-/f֛&14aFmATVn#)-Uo6 fh{ޛl HK (7Fz U6#|IKT5K*# `֏9eT<$UzP>T öM# !] }L\QEIh=EƦ_?I.Hܛ e} Jaf3JΥJVįvS h7 ,=BQ(4D)F©W.'Uk̩V͉̉-doX^;4M>M#HPo≘dZE.ېB=tc]~z˘#O,[/NI%|C۩hoX(oI 4ߗ''[/6h :Flr+H*Iƛx|{_wnozӛ*T`D 1TV^@]YD7|;LGŌ2ZPXhh+AoIE*|6l!!y? }^|Ǚoz7b16]h!pIқNB8$03թ [ o7b v-X&&;p s֛Jl17r|#wyCHߣѷ^+UBx(Qڽvr Rf*!*7}}SodS7>M\& (H{%̫oVK # @ye&f-`{V)D)$FA̋~*HxnL\1USo4- B8P?h8}ahM'o}Ez0@EmATQrJ :y׃7FvHypΪl>¹g|_FuqZ "|`[ƦMzOVNś03}OfH>wyʏ%/ogDaX,7:7QI!w lAylp޾m&֝w[ODCm ٨R&!h9A*)#]y^.6>7{am$ٚ]?3;"+Cj,D34ⲲR  7}ԡDNC8'Z‘6y^\+‘S;T "|n9M P C΋\HavRLOt3ke*1"RQYoTh ]iݤ(3q0{?c #pBI!-47!W7-w7[r!PS 3:"ᛰiՑ`;VkV|fySFFBfѭ1ZmwJ{x /\7-[7ٞ/{U+!m0n`6}=̖t-ʶGzR+_M,yp zJ6U/DdFc!ߴ!ǐ7h[GC8S7᤽2omk=Ep5p&öMP![ <Ε٘ zyOJTMǦC>TDǯ3~+DF_9 ﶫꕄp7R±@ʍMW/!pEB8ǽ !fE#cIP6}~N@Bc~oƟIGY?VZVګDME Uo`+7PܽӔY9}~?SMaiѧT7-'|PCH YeE; lϿ-6?c-/J7RMmBQ-n@{o yW ͛˵Tpdz G;T[zNHn>ȴM){SGlv K*ߴRFH~Z236S[)5DNUسu/4VH~?dSgnuݼA~'M㭹Vf&|$tOCCt<{f:Փ)n}mլҲdG;("|&x7=ͨX13p}03QskSBxk|2no-S<1_)跙 wW/Joo,ӮVpfW$!|cK)7@B<$pӑș}/mNB8gVqd 4O7E!p Up.ZL&Es K }~&,|' cG %vth-SX} ]C8Ҧ&AtaA_;) fƦM=p;=Ԗe7 @:a\iC5kTQ[psڍlۿpm1ĖmXaFkYo'fZvr v xc7 H+#8dDp;,Y_߻Ou&ݝSSc78& kŵZ΍*8򀴗;]oDWFH%f AȔB* nf`7(v(!U[ZR}g)&r7@=$p@oc7|(-{:-Iu&7o8$*a9_u)H{1_8iyEGSFT(^["PXHR[ĩ|CgmrMI싽>3ۮG?jC]pb)q*-2 &cկxS9́o{̟?o~phc7̛Nfm!ΰHdhې5ɃR Hgzc4^c GIh3aF_geGB]9޲Z\~Ѐh# x|ǛF'm' Hk=-Ҫ|sv|׳{ͿZ55ssʋ sON{NRQ e߃o@pT$!/2smv@ $p=o]ot/a.սݑm"tf^ŽrUy>߿| };~;Džvb${\I;2G!)% 9Jy8*SLSǭRqw/+QJZ]7E-O ֢v+ozv#x.9qoEG+| 39[?c\bn^97zo pcRyϸ :Or 4p~rmEHcg fuo vT2C C{AHe β i; B%iW]]z0kDJ9u~Emn1/_X0ûw‘V][_RfN46]SoЛ{i)n~kO|^țoE;5aHGϟby'+4Q  o'1e/Ҕڑy"$9\q7*l!mFc!sމ͔bHi@o ޠTy<3WFM쳕oGśRM#+Y?ް?΄hG5 USn2h.҆-c>5KS@|{czu_U3Dd[޹{}QfT)C^2Js<ңobі]T]~MHGBSzP*LYԂPt|_Ư#1M:3Be;1&cIi6/?"|TJ{FH4ni|{Nw!\[핒[/ʜ9D>Luڔu,U FeW\TA2ɽ #r.h$?3ݡf-д~P8SxG[Ѫ|" }g "9޲9}՞7$s|Vϳ]x:}GG~QDjk)uƛyl$zҺo7wڟܔ2B9op 78`TIEF^@oOnb6r\J[8wD@$b7UR[. &x#(MαȾpeߗMݼc^9Z L*}@66]kƁMww/+F.4Зΰ! kb#$|3k|?s䉍pN/0 ]:y~;$t#$t?ϭՍZ%nlEꍐv& x{7H8ip-p/.^}877}XZ[7ׇK槿Z5|:gr;UZOںI)nAG@S M!Kޟz0Y03]3p]RGZERCohQ@E;TY뷚_W&ۺtKp/@S[]᛭Th;- ތ[V#|ƒI*H;*ۥzqo*TFL\믣ZtGGB8<3|=Vȑoz\ś9۝!HlnQT7 ЍT97 @YEc!6=4VAZ@ F9M$ܼ6 Kv> `zӇrn3+8pl(\{ (-70p"|o`3 ̼rvEJ^fMpz nI~~כFf{}( $MIG/>5Nkw S o*phB1L خd8RlLDۿeH?%%t}fX,7Y1)ZCI!Oeߺ B8Wc^ZO)"|us_0UYN (^a_ϚxNޛNʵ !M(*i1\IgT}i1#f1|ʘ/dVUM[tCtI <.OIohXH(|VH"T9ly)!W/.=2S>QNQ-،MWߛ%p\[1}ﶙMݎM48Җ+ 6pvw[{)rx=fgHW`~Q3-cƃjž& HFB8A*pMC7ߔ(QY7WxCg7h%3u3ڋן!xub8+‘fAծSEC[Ilmצ :HZ3 $O‘iFF B8'[/*y8W4 ~wL._ 3^5g偮['y |a 4zUo 7r .H ޴pn$@I\_ l+ޱ>I% B݈&|/ܨUL|.QGUoި7{]'Z veN*77L%*<@H hV7s 6ڢoWF}϶spJ$$048s7wo:C$<W¯sߎ*I>o}׹;A!VN!G=P7 qA ` l i:74UD)q*P#x4 B8ᄇ˯8c |1_͒?/~gn6ngvOpimUe/$lJJ_3p{2!i߿3)!aC@<{ʲwz˘rX2 B@%T쏃R囁u ]o" )!9oԖgicyLV6 nK:G q?Z%#Upͧs~(V.P+ޟV&HebF֏pf?'z0pv|h/jxkg7]oO DofYtmVsUiՅvJw]o: TFͤwL\Uc+WL |mi7}:mU:7 ~HE*ڊv͛|X5đsoy\tōZ|#OzIU h 1usI)|C)l ƽ}U&9.NlVSvܛN5 % TnݓT|-7&rsE{F[*;֐SfzH z$p[/}i-u CœUqү1ˋCCB6\V2|O.QFP < ^140H 2>\1>ZICgL~P ꟚVj7RF܎)Tx̝] MH LmpwͤϿjoTޘ+nbߎJ7?=EHo ^cH<S*HۉYs@wZB8 ol: oJ:L঑Q4-KGK~vJ?RkonYbSv*OptқNR#g*@m(>jc\&B6-XU_;-}[a7x 7!񁌙\M[ lv/xs{l՞iom:Tt $SL $7t(6+|XG˟׽~Ǭ0 PT 6eԭR ɋDMyp ,j;5 N1LApTa5wYp66/< ZN":7=?p)UmsXrdq'rlȶ{!isfq[2yޟp U*0{uѼrT*)%6CqXX$ԈZ hkBOr Tf(g7Z_9Kwڙ ZpՉTԤMWf#x34`glTC6T?Uv@E/\[qTpmPg;4YndK@Gz'U i]*_%?*ny ZƙRaQЪcJǙʲ\m=ծDڠ x3ݳ97eԇ+fZ_Hś& ?7jwfκZ()26?凔 E1~GP)ɂWNśr@lKnc*-.X7,1KIRBii pXjcI'tpN>8^՛a>n ɡ]~K87喝-"$fc/ *nU z U\%T9J@GlNՀD Zߔ=T*ii_J)A 8PC88SLA6nM\\6Ӫz#Ӯ=e\cxs_0UY J;TieC8NkKR_= S[HjUÿE* q1|Uf0I,p(m7<5p9em"cc\[1F“] !9!1 3h$]2XKg* rDPn8"7݊fpΆN[&K塼T3G6p7Kk:__TW{g?B_]({GM}ٟϷ~#]T]"` ,.$f1`ۿ27 r @ZoHhvI9@iNBU Aw< yF7#]FKo#ҊQj9%=>߿١]-jf~zk|ZJcL Dp |uoQ7pmoEi*9u dXGZȟh HPhBLu|˚n7 j"%!w# +@պ9ZYo1юD*$1pH+c 8$*4C/>|'wJbQHlN֢c c''@b&lfp|1;dU$@A.4}qt.lX b\ B -{Wt(9V7M6٧&j|z_8Xzhi6'T?(3"r r oZrO}\aP$:}\]&A#-"I7Rr~x{B7uoR ̪7ڋ_ >%a(i ͕oȘZXUz>;|}(BHi$" ጻYiki)Aze0دceH%|SZoN1j*C ޜ=ŀI) IB*JBV%-R_k޺T BD@˗?5N,Қ ^RuI~WTyŒ99˚W JResY^R yŠ :Qtx~|Cfнܼtj?ύ1'dǁd]ޢkX623ezk}Zl3?~VGe7*K^lHf&mC eDo !V{)~pbi)gQ oB}IH-3q=7?EhQѤ;e5dȑ#Q/k/ZѬqrڍFHŢs*U6*8Ҷjd|oNjU$$p(ZB +^GG݉ L$)%#o.M>F=.IƢӄ;WǶII% RH%419dP-t!â^H|hy-i=jT$n>ۤx ^seceėa()ͨn2}[*$ Z97~u)oJf% x<ȑLٸ,HM)RDQ$ɉ}NT-^Q/mv,i7vtq@Ixr љQ/֚+IQ ֢퍒ʼѪ|sM!se3~mhX4wB7M9z$̙L I\ڶzI\R|'$VHTQTC˗?mCU2} toRio?%߻qUtܸ5cn}Rbp͉3KS;R.~L:LRږ r*g=tSAn1' $\șUƷwǶ;J-F+8ЋT9wR nMB?jaPm[M{|Rr ݨQh}4uoCN׏7$VZ5v7]A F!|3UN}qyPw!|Do+MЍsvV{H՛-#& 4޸$\GTlm=52 VKo/imI_-ZN ёj7wo=A @xa`D%B%vܴJKoǣ3;kKf9~7GBlVy)rmP*hod=wG9$soK/ٞyF7]K(P!B7CT :_y`GZPW^OaD%|s9oJ:kd]${EN x~koMngfxu)h͔MrV9 Wyxx.)odVa|ן>ϼvcVM% Zj5-њEf[,ASvB̗Xٟ Y%"7f$FLCUoE/[ opKgJ%SZ ݨߌAT&WHR[cR pM# <50D*XyRY}Hh6Y)i ӭ~ 7ĝmHn]lgҠM;ȠH%-g.2OQ cT: T7Jm6.iV&lc*r*7;+vn4!| UoNTѬ~3QX0?X j'Ri~sZ=miwMu9 Q?o_l]7A F#|SND&BI1{eQX&Fk0(VFHawЌ7 izs7vm4 +Ȑͥ-y؝߹'9~=SWנVBVS5<<}ty]3v!IUF)FMIhqNձh^'|c HI%7R!1Z;o>Pw{-\%ja!Si 6Q/"|DxJPg6Wۅv/Do;XOQr;L.'.\!x((Tk$xcIFnJQ.FVF*l>I7`\DS7\NGlIz覼b3fT.. DjRr 7y.ӫ3QV@%v pGVXrJ ?yk9сk%ݪ79~}@dF|(moԹ{w6Wۅv9w\{#iKIi=r>cSIfws:̅' ! L\_e')q[0"jl7uL.b d ?"A j'Or)zdÜZQkMn$d1K-*ϋL V]gN?7vGdc8~9?&.hr1|C)Zi3)'>TIo,\!o F‹+fR1 )u X(7fF֤ fIRƢy]q" ڇ%=pfN8X}h9$J7~ uZJPg6W[v|#~^4/>jUY9JX( P Օhz6*-OI|H9u0p;dˇ؝Q.n|6WAo.h=%M9F1FyM֬u) L|b]V;gVMʢYe'F覐'|c̤rK+Uobv~y,vFdEZORF~yo-ja!eJ6[ml;qh-MM,vflnA\m}cRKYtOz 8a(*ZΤ`y)7-O7Rr9؛`%i+%KZ Jt\;):7~Fs^ϟj%RF. QP>P"Y εJe7IܴPO{C4Rn9&-ȍzPAI\nA\mܣ|>#ݵ%xzf{]=X/>NUP*]]+as4+xӇy~ZJ7nN覔u3.UfHA2^4b˩a^OW cI%kЍTKr{̳q#7h9pu5l6Wۅvvkh7s3/g.Fϟrl|*hM^ʈ3oC ޜ=ƋPY,td6Ei:䒾nx` 3 FKLZ6W+H5i?AyRIZZQcyq r HUPquwP\5u|@LĚLx9n%:?7 C7Z€]vꘓc%޲3 Mz47pFXhRqNR&:]#m4[UW{9to6Muao㭔oٮzV6 nj0xdayy zW4NA)[IGT7Z?>P gH@Iwš- Ж$-pSG) F|(Vu? A+-zvkylݭ\m`6ʺU!7#7l…+ЍE )G&3ў|vk撯z픆GsOƤQ1OPیy|3qF -Eת|CPcPF}W1Xۛ۵*g%@:Gm h=T<AH[ESXQҹN؄nQ%\,5Uo*MH;o,o RJ)HrX#=ocyKػt hUl jU3-h[ٮUoOаWZxJEQ,-pSYjbJCnfZ^ jܦw ljH9{ K<#QP3Uһ9C۩hAwUH)KB7f#pcyC&f6 k/7ZW j|{z6V/O%=p#%ĕM#J) >.#^>vETiuHB vkyE+Jf#LV)D'w}ӵ@DA*H{)9֞nWLjUoI_^Oߜj)8^X=n.mnZ)*?E; F|u(MxNUi amwXQ{Y ([øfTY7XJo^xߐF2uRE;ilTÄ27՜YUoM[74ת{wVNLnXzċoTuiy!wЮ (E*3Km!-BٍH;o$F4lao_KK1N€Rfڒ)Xܳh6#KL$Ms^wevJ7{Bطk ;x~ ZoX#ST3-C;XKoHW74Lir+HFˈC˩0ۯ*VxZvqQڋd-(\W5|#A\R[TvUͭe9ZZ^5v(rC{x7,/g?Cf$x^0jŊwLY_o`{B'UnƯ-V4E>.7ڬz^ oFl;ʁ6s~7PIi1eIfҝr?ڋnFK7Z3c՛: iFj i9$]ˇ¬|Y݃C"nAfZ^ ѭKy<5owٝNTi<}8F*P&$  7W~ff5%48w)7IK՛:~nEyus|˝gcRY'M*UslRIpS@e|(̗h9蹻nvkyځy |Sa((M9 ^# 7^jrƚ9^NjIPF3AV[JzF(J <]TR!CaVƠ΍]Z^Xau黾gM^!.. ˵RŊ}4n6*ݔX{vU0v顮Zeird[N%=p#lz6J e0Z5ELeVfj|X[ufZ^ ̕5\x7,ϟ _#3b FAR܌_[ tUTt;] tc0H]՛:~#0B2ⵏ͋IH`FGoO'oF=p=]c=mA/xf0;_-UrS$m[@nfZ^ h!`~gPКT[@E" 7N^r#-, LS:X{"|V7ZQIdZ-n*$A=p#+. FgDPM o;-۪Uchqc95oPs moH(İV7čse3qݚ)48L2SzkJU7?hViC#Y$9p#va>&1rjg3Pܲ0+h> &|C>.n-^ iqxQ;'x涕+R3,;e%amQB7^Xy^lp.nJa̤ꍭUZ8Y[+:`ǰ%mJAZHDn;TMh9`'aYdS~/n?'p̗ߖf(($f:ϑ} ޜ=ŀcP܌_[ \ tloBYyyZq\xjogp3L(1@l}om$Trl?s4zg V=B  j*7׭)U.s1'K7j7uq~1+knN8GC%َSvfN!/I5`ʳA^KI6X/ $$tMkzmO v)Ñ&T^{bYaŁnd)&u{7E) UF㾀6U#?I~5UZEXeJ11zgmoe+.&_yu^:q GVsfIzS'~˼=+Qoio3*p3jCA/CF>H-9uh-1 Rߙbz*?w3SA܅+Rqk ݌$!H` Uo>q<2ϡZ5+n.%6psoΑs`=m*!|4ZN0 r M;H5Ja#R5[S'= T7SxVQ:å$?ᶣ[>3|}gTmTihT zR4i6Й FVsfizHFZ =q539\rf@(,I |zQپSVD{:.{4f29[IѪ1zG$oA*VMkʉOS:F:8(R歛KK$`[)i7tg-HvpZ@A~h9 ,W h]0z|*ͨn2}?7ЬC囝/ : x(W\4ׂx% =h"|/9U{.k~\6Uojo3'#}vSY2':N0[j FwƖ _C%yE)ܔv=巅&^x7Nm/sps^XYnF{kA੻"ydy؝*;uK n |F=Ҟ,Mh9|0hU!|#o<p[A3v[ꝓ5iF; I~zՌ \-T=7 3xt1 "i-5~mI=\Crc!hЕ՜SSYNGAVvK}mWn\iG) <u֍[ˬla͋VԦ : `guI$.wAO8cg.FΟrA>BQ5Jml ukn>L*7<{Bh(Ѯz#gzL%8!mޞf'&n{csǜ:HSZV!g T'WkI'<^Ko7 ϬhUx z77J7o\e'dS|=JsfRFT *|3ZM8Ah9hS`L&g¯,/D2+ޠ%W\d?AltWRQGF|_Tn%m~c37Q(ЊZhoJt-`NYoV=kj)S'h99R v=wY 7WjknF{kQ#|#93|TQnoc-*z͓tgq+_09L) b}xP)ʮ@XBWK7Rsy-l Pc}o,&i-5~mɔxh6X{<>Q&xRFIXL'p#v8ZNi|bbM?/chRt X. 3*S}_>Z6F.j민fF7hb\x7'Un&[ӁdlTbY͙QfkHzRjAUV-CP(v Cx)o d?|S<ThxxEڐIfrƚ9yT Pj79c#.閃`} h>^^gEKToxa S]3)T»Iֹ$A`+˵Rk6,ny\HKX{3֊kfrzLZNnwngPZ*.5S@zIs/ +Ȣ8bC-ͯ1đwF=>Mi䲅o%w;%n+gG^MxD՛KzNƾh9cTd|((čpSAkF#dg`zg;g E*79lEƻ̞'Uojo3'\MH.Nr˩7ϟ" X,]JW7*cHqi6%{'9SmoB!~A) ;#N:C!oPf,֔4nvM:X{H7.yH>gO"_Q 01C09WQU+rZ0֌TPUe##N:7oRCE3q}ٖE4TfP@[^y4z(%x`_ B$t99yovD՛2kWM#:͏r=U[RG) `/Oo[fR,VG@ZCuӌ#3JR#q+$o&[Bc]&pH&{e1HZI&FfwF;b[=C7],~ſy@',׷AAZNuDR&0tjU" dkK3K#O9S j3@g%yNX}ZB 3 LXs3rl\ᛝ/j2rќ3+1Jf{R͛<@j)`V?V~xx lZ/F =̕J<Iu)Q*%(Ѫ|\qA&9rzd. )X{@s,9TJR$$pB)~^ hoZ^HN M463$绍ѦDHb)7 8TMlƯ-ZYhnxhm$nW2{q=f0z|R9Pio$z7*&{e1hln=?7[MeZ $9psoΑs_4ezͫտ+c)y.}|E)?7.VYFE+|sk \Qjg]"dg8ScIu)Q~%47ҞXѹy4zǝao_۫V(ndim+;k/jLRJ7C={̳uBOf̈́;O ]+)-eˇ耩U9]M`1I#i3Q1X)7o zlD dcNd \,7ez}C667ڕ\`vU=9yBI -ao^a}`/'= .hC뫌&~BTC*hl:|C&$(&֔Ξ4g<H_|u?,@Y-V?Cա.̯K랧m=³y1. 5UO\,9O.gLNJ!x37Em>f#tS` |iiyJۣV$=ptܫ1C DH8FZD#ݛs~]<ϏC)zڥtJAK,r%MQAmFuwSF+0zGon$tST;bG掬̚z#]Anf7Qnf(S2?YwuAb>Iq_D) 9b[Q:-)@b x'-:ki{Cx2WFK-7޴R%*oLUo܄OOO?.Gw(%;ܿ'ߑ71hҥx]^g%WNuq`7FO~Lӫ*VF73{4AdMDew99?o6d5gU՛n |Hyh_6z[~j{Ř4~w lwK pb)eӪzkh*of=>B2Vv&ao]օn&[scpҝRWoYfziDč]7w 5O6o\R{ܵɣثZ-r(#^>FY$yi1I7,&Z Z3@V՛щЄMt$%$xcIhnJA>i|eZ=p#=D}7N=G5NjC: GIn- \ބo͡-\ɘц1:LL_ZOy {^`{)7ѐm)o;k[joX:k9IM2^Qo?%:i?3̯V;F.ǷDJ`(N v2,/2~,3('yLJkí_gtnĜyF $t3qݚ̓9y i~.7F^i7SSݥyTtO|~Ѽj-h9`NAf˖uV2p%%h1c*iNxlv*΁07“oF+{eLXs9a6B7vG@2|Yf8+y.H4R‚|uk7s^0-"Džjrk |ZK 3zi=a5RmahzCEρ3KS)D^@x>o.sbv+hVJB7Ŋ &t$WZٴ}a7[j?RʬMn.'tGw0Ȉ=ZNEˁ0*tQ a ɵvR&HI/ᒼbe8V| 3xsXW*7^ci-%KB7Es'tCpH%Vj79ckƋ/~Λ_|u?XYKΛ<= ol1T,3Ԩ!|֌T+!=6כYoh+럅nvN1'.H4& 7;cvZnc${No 3#3i%(UtFi@7ח2/=Jޒ*7nrN1'.VҔxɝ~e¶ c=nBўZ(aF9hNjp!ZΉL7ЄL 7$kҎ{#0f=X2dC6W-nyn;5# ՌBgJBLބ=ޗȍO\q91T4N,5ܙ% .n19cNdHԏߟSV?yt= ][N]vF VڵݭSz Cў)#o * s/BWGy4Ǐ^5˫zY4UǜB:AfZOI[!vB}I;p#&g970{ HUI󧜗\,e#;o,η^MKga)ZNhV?F57kA.}seceJqtN5TpsӤƾ0 b"7oɹc&Xs/.̸h/E)A-Ic?#i?%oj:HZM|I@+& Zj6od;E.,AIk&ujXM I nP]Ѡ1`NBN JRݷ?"f/2 3r|R~SlC(?s;׾ck+Mao.Xʢq~]OҦEwz21'8P&^*8{pwMTۇr hz:|{Z-dk9BQz7 z?Y i2o:&ik) +ѾT^yVWYOZ(Nm*ߌ rI;&RMy%&#aHg 7^|u𺣍d}yVmOW]_il.V yr HʷCȒj=^(!(v:c/?d{?_%^5˫$ʬDc6|#o+'߹-ࣥ3<*hdTJ Ϭ\qL\-7i:p\˹?D‰7^|/**cd#ݷ%sZ~9 }{R_aZNhM& 6EXn~1@t78wȽo8sAVRƭsR-縿OQt>e=>TJ(;PUF8V!xsDž+f꒙t;I[?iQJe۩󧜗: ZHxC&iHh*#&遁;F9|C) [@D|fo,fwm;}_f(tmpP)mOYF* Ikȥvu9K@?U+9&&2ԪlqHO3DvSn95I)[ oج3A]f}vPho zswHH Yc)ӌc$U^T*hUtYƧ?8q HŢE\ +F% q6 О/S  b{8wǘ#r @+\,z\dzvJUoY\0sw ܃z@xZν0z|(dF^z@0-$x3Z۬5x#컕ZW>\ t L 1GB79B7⨝! ydyp|̮n.1q ?-%j2T`= ZO-טZGb*MP!O+{f9Y3q}ن͛3*~&g)ZG:Rݕ[N)K( 2q\(*.,gyU斿iA3lg=#~4f2yW7bTT7nԾ7IB7p1iw3`7w ZQk?@@~ zstFH7l7ԥ38o~[fMOލ[B;±N3q'|ڌLt.\$Ē{Mr;N1;y -ĩ yL/RbL*|h|T|Kh9 A|@h~RON ‚Ɋy>sTI)TG槏B @, CQ@Xl=R@:t:lJH 4tjIٙ 8{ Vg.F7_&/ F!W|Wlo4zTy xf5ojNU Hq4ɽpr'JT@x7RGҺyzdnr 8.P|| 2Kg7V"#|)amjn}RlMN8@Vq?3* HF*\.{A2how;Yp1i7MΟrnd=>Li̤pѪ|sb`q| +xc](NR/[Qk(l0XsκS"|Upi ַGZ%YVBBlG<s,SI]| "I)J2I ^Y,tS;Nꘓu'^xo| rG+YZ vzMAuό랯N3z9SZzvM-2z[$o X}b]6|h#cҝmJB79B7҄OTW:'+ *TYy;] Ggc2YE8u}ub)AE޽i/o]O~n wFuu'^JoPw{O;R]'UO9Q%Al>!BERihvq@0{ZO1)K$orחkؿ]61;H37R?ˬycXGͼ`|%h`lKTݯU U2^>`Z]ty@BDK{Q%7Pi=EOleZidcFBCvּ~əWדЍ< ln |M 67} #E{j>zmưST 8`AŎ܃u<t2'oyI =|3 C%|3Toto$tYX}g;PswʺS A& O9wuF4#{&D뙣=`OM+-Ƣ_haփ*+@4\oQ$n1.]r1~0#N-$x3q=r2 tẽ.W>\4jܷ )60VsM lMΟr7/zRA:wGqR-UE<=z=d.;6 e0#3hB*Mqy3ϛ㿝 |L7mcԝxV |b6/#h9@cw}S1q{%3eG7ёKx}(8,p_ӖM]͙oSЭsL 9g)C&DTI2f8Sgs%;r ߔ :Ԣu tq卺9 Jb XuQB4S&Jvּ.Lyŝ2?h CFt{@{@) :ԢК*8:XNJ EtqF8,/Mgb%oS֝J 7 N:I?3r᫅8h93Kސ\\Z9$U9C蠍Fa!F+H%Be uټ)}?y>9VsMM#|UVY)!xus|0ˍ0ui9@CWr+j皠7mO_'4 Ra =>U6Nl ioϬ?ov6P wFuu'"71*8O oLVQ ӿ'MtB uǖ }c`VzREu)D '/i߾dS,7͛$$ts]g)DC1QujpPw{NN_Gr_ӥ %ʓx e5N)0oa1@|?i=(VUo 俶8;,Tk˒lmy&gbSL7NMC&f6MdͨAQ'xO;j\]oDʡiSg><ֿ i%Dl?3@P%>T|EG7^Y,tS}S֝Jl<71tSr Up?=O)?_fr HXޠlcf.cb t0J|T#|BMBeݜu.H*}"RƈQ1"6 DZJSFf {eooz@ˇ[i(So^V~7/+K+gKcr-t3^ т\z&3r 7[c;Qe.ᕲ7ԅYzz5i> C晋+ͩ9j|/ȈM ҂o\ZmD5V~ѸH;6츫o\E~s<|ushᛚ[k_^e-8i؎2~}T) 7ja9ˆ ɞ ߹JYo~4ꃚ;]].K;)_,V^>zs,@4Z ?>]h|}-)р3on.S@bޘ Uf} ^Ӛo"i47bNU2zϑI|uIZVRR/t/NjHAV^ iigZICN?FNh9Qm~V5ߔW5 go+_~Yo,nE! Pc7 9??v?#gͺ>e|<-{oNs}:wB7G-@34hImeiKC}e~.iƋ{ U?ڴ ]ڗ~;Ei[' XctZ=,Aru5mE1f +Zp:_^8rG;A_/;2^sCl@tCj? VӚo%<4ts֠XnoJ~?smSŎm[V__)}wŹMh>ONZ=3 ˇ[4ߌZp ?RGsTogiֵۤr@;69@<&L'cA 5'>S| ObG3ly}}99^1Zт9^Mſku7J",goK~;\5xQ+ Mv{7 ek@D NFahͭCm=rmPH7:;:!|3bsLiۡJ:#&VD!A*fŚdia"o۹4ߔ E^+Ǫ%m*;Y¸VokíCڂFƋ|ЂS6?=FjOݷ5ܐK,s\r1 ԔjP{[P!Afc;+í:u@-8u侉Q @ݷO{GNvk>^z@Nu~s<|uss7R.-8t?V`N/4zK4+a+FN; QQv @RLK)'ZCO'oU9w8wrğ}.z@fFz^t@|vۊΗG_|}s3A|}هQn+kګ\.qw#,UfЌrS`0juZ4MFilY uf;XN}I룝-/i2D#?7JJJOFމ4c]S:m5'f/Z'Ї6Dˇ[E%|Cbþsj_ |,ڀ?KrFNr'fҲTœo!|ة[\( Еmܘ&:Ssss h}[ZiIwO7o}SY]c#O8rrU~oN}#DYRYkp'vZ |^ؿzs<|\xM @Uo|<⳻臿yehG)`Jۮ %yM$-;ڔcΟ1FlԹ>>u}xzA=dLiǿ3~Q*9uԪTƐ*')| Z+a7mӫl7~ QLZ=uyts|cp+B7/w ԂKMlO~-sٝ|A1 `#NdئNWP2F4N, S5\p,RO/nG\ I҂ޚ-33?m-_w|H-X6~_\v7!z-BcNi\!ef)_gKkj"MVwV(i&ZxxpP8f`o -8?eo5-8^'c,|PZT0rJH6_F[;.d}/(Y!./Yp3V(epk&~X {s<|usN҂3X1~=#zߟ?RͮSMv*eºT1~`M}nQ!LŋyA)#ۓV(}^ˇ[:1@]0pZpk#ovխ*|^O`R5w\w7(ߵ9 zTQ,.A|WxWRysXqFт38>u%NsTkJzoQi)_a|sYkPxwvl2 8U}sL.n(t@ 0T9F<`{%㧚4H7FNkxIj;HKj4տ;a./Y~5ޜۘ?'|㫉DVn^~P{7d׆u/޸:h{mweiکAҏkd̉X`N%'z^3>n܅LjGPW(mpv|xs<9IoZ s«H_]ؕזo[9[K~1飻6#R_1^7@-;WNᛲ7\Bs6S1v#[9ˇ[s{'B7wN{s4 ٙZyxeX!oڂ#ۋ7%?ߦ#!B;QL9hu ѯ[pg)!dEvoz@?8￴r4٘% Gk:FsbXo½65bmrWgo+ۗoQ^_ s|K~z 1=zB N)ZO5&zr_*d|ƈP>Z&#|CLOԂS+9Wi>wG2zS8e{ ߤfzt 78{J vdd͓V7_߷5Fw[ƨau9a0e>ixYZnuiNqouxJm) oh,-8>$1i O N͛o_.._]v\:TDU2Lxu L+ab;z%/?6{IOZ:Z|ӵc`z FBN-8_}[ZiI-F,}B[*#ȩSFNRu+C{@ͤϔh79@;usMo׶CGWaЂ05bҷᣕEΞy`K]w@cWO͔h+{'ʝN͍` S!D,|0rZpu1D'^ozn>wp: 0+vnэ ΎΫ݀Wp;?U+ܟ9ޞz?FTb2ނ"Z4命U0rMh^O IebnV_^y`Q0;$kV'|Hjh/;r.)795L|@ր;{A0F!B Ν<S}9de ԑS_޼uc亳u5>~z?Xֶm*3;=~W|9d^OPMUl)_6Tx}m ΅E1BCl|:)YIhv<%Fx凿23}P)격j*{-O@)O?3(jr?؀=okgK?m>`l z=rj*{'~o~нituV6{xm҂o\*~yiG`G'??s:nC#9>XtUo uJ4]#_sj/Sϩg贘Ыb~:hiP}hOZ= -8(Ԃl~4O}}M?9TsFNh9MUluDhbnlS{'A=m5>z:h?7ХbS ?eo ه+'S5|׾YG|9ȩf=e,@}mCk  `z_p1-8^]oS@&-@Z s ^70r~?#ً^b=&W?1% @oV,F'+6-:=7o4Y#~M9Q Dh[iTeߛ-Bn'_,tW/>ct|]qϑI @IZpݕU,hz#eo:iة+]|Cڝ_O[\,D+ ZnQ}MZ=(O4-8?W߾<ԱZ)%9us҅obT^miti!ECܤ7A?Y=(OUZ=(Oʩ'ۊS_w<^7I|$GR4N0P0c4D5? n5Vkp5t: "ȩwt>~wzP $K ηOέjy@OUqyof@p=^@o) ;kWxҒΨ*~o"72x@Zpm*d{ʫ\) S/q7 P)틎̦ ܼ mk/;bcNb.8o.|4; 'P#ۓV ӝ0.CWՂ侉?gS@zD 6V7az(3VrWvV[elFNdAM>~r;vk~_^ ]hAܐߋY=(G (*~+ه? }oK/(ȩ׍B0@R>WZ1v*Z2ΌMo6{AsNwx{@o #k-8/vT81A'mS7oJ~YɹRonf2'*-@lm\S`S7Ύ֭.62~Sպܓm;N24=zs4'o'W='ьh7ɼ֛d,[;SO[iؐv:,XZpy`K]+#Kx # {'ҝWNb1rj|SCt4Ou)㑀?[Vz'|kR T3~ۿoT z%]r~2ɂu;f:Y^Llq@o&ЂsߖV8U\W߹\{y\#F2cn%J`S7|^lu/m*N=[_Տ}hP{= V`ԕ r^1e}lf}4_كw7vo4!m@oZ3Pq"x^Zpݷس%P\naK3 Zo*e&֛#r&F}o6slƃ{qmk勺`oAZ/w(ZT9~]ڿ}sy1>œ @Fʶl$6r  C69mϣ]5'[0oaւ]cm2“#9nYޥlɭ1u|sgCLo?nt:077Pujy+4dF PeNde2u|S˭xx}!*[?HWsfzVf/Zz"| Vl:dq ٱ #r LU.|#۶#?ٹW_wԙ$f("xr70Ђ7U-~ئn9&j;݅%O.ҽck緁w]8{˿?w]❙|;FO?~׫YkЋX` ȩ'0.cgw􇿽RoW1Zo22|[hl ب^ʰL+?ůVqbn~auԅv,~SE :z$|#&?|a G7oy~2rsU;XDK]9s͸nonb7[w=ŏ|ޏM>:^MKtC bH-8\/[ho]+ 8U|n3~*7 ʜ&+0Rބ7eo"yIk^?Y;ZvuMe'k-8/Cli-0`z` 8LҲ :gbN+y:UAs X9(G(-8vfhd(e&QMeo܂ +|<9q-1Y@i7@iZpb@x`E|J'7[l(QdtoLJ9rvkߧg/j\&3%X=(GRZ7Y?)[oBn!ŶOzӛ>m\Op[ΩܷZsZ$ -8=1r #ۭ2[ZӨ"efZQ,^o%>)5%|#xs Zozsˤkz-ջًրFn[p`1G:0RބB+eW76$|ӛ;󿌻?UZ-U5Ox=)`s0֌onulFǃ[ҝܵ#'FN%6׶KMu\_g\7#L|@|1Lo FNdj⮴79VZ%74dfێ\ѴxhjkapξycVVTMjM9U:9kЋmئGe-UcZM)vZ漦1 h;|s\l[9WMbF#nxm>,1ibk^h,-X2I{1+ւ!rNtӌ[ OnIw^9f\mSXn͈UM|}j&FbjEᛞmzӠ3?z? KV:fQnQ ^O0Mץ4SvMe[an̕cf70۶hp,`_l16=z S@zTcua)ZFӾ%9Vʄo"yq]#yRñxj= #$n=f7@jނcLx tl+̭2qZonCCFo0&B0UpYk+mLY#L|jz- h9r-2G;ǗkrjTfD0-/ 5NEkЋlN;-u߃nrAk+۬GNy QRtg|1@3l g4Pm;5>HQ쾿-TS $u+f'75!bta_½c[LO FЛ4 vw*ȩX=HǶP{k-8E~o@"|BKE1)XzS#z?#swrsI3FN@lK0=jw|׊ƙa9^ 0hOot>7wv6܀=PNM>ވl# }o`ةLlylG^\{ HHh!x 7ׁxx[{w9ρgҼM&Z~1jo0R6.)4G<7Y KEqa)Y&|uɆ֛mi *go1#2{/q]FFN5]c 91=z*@zFN9ޞ=4#qpG0@b7ȨWRqLӃ[?rAv@bOW*jؒFZ;sGw8I~OؓT"c3XzT9l~@iVkZ-"N#mzuXmy6l nzT,^z ]KHNf\ Gw^7>Q:7ȋ7: ?>9N' j_Mw^FO7 Ngňv8zfUlkPf)o{(>ﳉqSǬ&A ҏՍI v`?*}[˝ȩ.iDNy:ol77;1QkM27FN`^gFNt%7M@fo KEqnݫ@TzA*sQvT'Ks֠Wt76~QaAԾ(GU7'3^9kOv]5v-kp ' Khm!Fm}^*Zo̕ˎ5L_$Df9=zӊ@|`4h曪78p oO]oFCWkuN^?p{qS%9{pKӝ^pAM~ϯMOVC`4+~2෥#|! azcWfTo=x($|hz5cU^lP{Z-VhokSޔwgT/qS7*ԏ [$6\&<|Ÿz"|TƠ`gJyezuԪ@= Do O/ESwn VQZo\X>7MO^P_F(\hމ}*OR(Zc՝ro);rJ T'qD 3rE/,p!|@4uhĨUKyA*@<>U xshzնPotV'k0Cf*iTT똕'F ~-88Zn8m9Pݧ k 7G,4Ә%=jZ0dvj8cb"`ӜQ/U᥌9*!5Sw'AN[j5bnME΢xlj.GU݃}~nK:@"x#bF`trAn=r Abڟl&Bmu Y@yo4pKITi_]I4^(D@8*$q R<(2ϻKFN@D+_"|0:f,1OlKnbqTB8YpRkB}֩l0(+Z'+}@F )s_Ek|5qT‰ h uo0_pUKb0r ʉ(|$|0:eNc %sEW|oe 9n#Cq\E$SnZ"eocVP딯ܛTVFϦe0"o= *69s2̶: _ou\'x@w37_DTM+ I h7|.,ac]|R7K˫1aH'N 2D(-)ua2>Нݕ%x#N`_DWlE\G1*60Ha"#vߏ+cTZ kĘNo` M6&8Pw6EB\\^PY̖,LEƛUoFL'MN`Afa D"qKE*qߊ\#bd\fe? ($bFX!|0ZuDFV]P,#iŦ}ظB7kX6|V*3^j=g 2'Q߄pRu 1t"xSKesqrp]*39=z*7۴lFȑ_vlpulA6u'NcW ~zazu*|0z^_Q>vrnu;>Q#Fߜq'hTCuބG;]<>oEK^GTM+ ܊ 7{ D0#^n>lf ND0 zG+Nsđh=xϧQ/fWF+z=~X ޴4p;7'6S>)Zp"o?y/61z_V!Uo6 vXM`[ @1XaSk)oFOMl l,(?Ƚ57Տ88 :MI<> ֛a"^oNO^@6-//[sx;>yO/vwLQT(8>SؠM|m#cUwP!o>pk9TVts^N#Rb^/f?EUf"z8-9=z[?ʌ8Eo A~[oa«$"6أ"6aTDVg#1m-G Ę7@U4#ۭΗqOӟR?`SӄCEMKN5z،[>74n0b*:^j@oFܑ;_Q7ЇeE1z ڋͿ)h5`4_&(VLXyj7#TeUb-)aa&QRiD8׳/MO^:_skiЏO  o.sW+׭hynzIGu|WG0ԏMIEbV[oFI<6ˎz@^F̀9^j>0hc5/t=q򩻋- D!:Hvs:jbL\<>ohhj *VnY}`X4{G_|~ya=ѡ aHN/|x5עn,od?!3\ihÉ͏փ7zp$o_i%(F@E;Z0cԀh=9u{ʞA>b#Yp,^_]8b$6Cg!բ89籾.>_qSQO9 ;o#u~'6m(#RE0*ZqqG_YqqJQ5^+fm7@oБ/A'A>s(.,YcOrVGw@~E4^GKS@o#ov<MۉPHnq#?޽)CCu0֌[٘%6uLMV86-&qQnۺ$2a8K&C7ݏSG @hඎo|99WG EC80(;RMn\81?6~.  1t^+V7mP7ёC/WZZ^ D "Y"D gTr2͉b5ts-ԍ ]9r\Nq^y?#m"!pS^A}U CĈZ/%k)87WC84zg!ǘ|D#6#︩_̮0lC#F'814@4QpZcq FKEf0-~Ms]0eyXm9@DPWGl8ĉMXo0M7Wo#k 5Xn Io(%u'b$h0Nq[r"h!جno0|GG0'_sA@jq 4#!0 PNWljUUտtrf?ԚD nNk 8rDkgm9VAlrMC ֫i0M JH1V*nl9tF`.Q=>\:7pbQr'rBEt%59X3{]e0Zňߏok񺲷5wV`nQqi|O5p0jrqfN5i6<3h9ϿMûhZrN*C7 *opTlbϭXm/NߦdMhǿ,Ke檳j3aw~_sxh,R4̶qS4ʦیMnm gXE7n8*|C)} yqC3<׫ @]"hhYhT:;*Qzc\b խh/o-- TИᨸ1Tx~&D|^pzkgʰMKFKekGI74j8*;"pi5"|!#ntjJhq\Jy֒R!B7t  ӯS+c^݅FzD/#'[nb<<1T[RP87_)鯮=<`ᆣ&_C8_J7sr}T7㵸& K1۩lhu"s~9 (֫=_^.x94Q1~ߗ7ƅpyn~(TDZnοʷx] K`kʟz&B71^Ke͡0?Zc8*\k j& <[JwOPgnbpT&tZe8*6Sقsy!Ͼ)GRh* ||(;Uc'VRP?Zi8*vRy`}Q7c}C_֬',qRpZӻB7b0>4*MQW&|i?VM4ME&FK:k!|@-zUc" ~p ߕՐ7qvpn:NkhVpT줲 b[ޓTprtFSmH]v`e G3^} f~r"x='Ieͮ` Gf*pvkM?!n9jM5uaJ\ ^WX1loGqܶsZyӬI}#aAvTm)7c3axlLC1b ˝4 ۤrv:KVpTli' m C7hV)ӴЖ7↣b;=1ͭ)~8.`Mlr&2J |@}5B6s#ڞc bUp><>ޞ[;pMs |,LSN<ޞ/8yiƁU M4ۜ{DNAXJ[NTvY9S|W`O/lx$a zQ1ٜ`? NP@l&#tC'6!|B='lO9qҝ:tܲS9^-x׏1m O7;Õ|fĪ>Onmiφlsp>0̴#n-zvRC8'B8!'7_ŪX;lx6PS3Z!ZmҴfߖTQ?rƪC4v&Yk^xLV!d 54 ]N-6m'|@ GE\JqMhOéL4 @sni&%`&d(gr{:XE7014 l&VOn9]{[CS7 PdmW|*$D&ڟ5 a8*6Ӵ%gP9^;,1B5Ez2`#X hpTlOΆs6kq<*OB5-#|KTi4Sf{iIiP5"|197'+3_y\ж \eU jάzYejV EȍIENDB`knapsack-4.0.0/docs/images/logos/knapsack-@2.png0000644000004100000410000011370714106361602021426 0ustar www-datawww-dataPNG  IHDRqq-8 pHYsgRtEXtSoftwareAdobe ImageReadyqe<TIDATx tuY AhJ,@bI~d9X2!%lcﱵg7쉳;uX3BəcIf u3hyFJYl두(Kl@~FX]ջ;Bկ]+x 8@@$$8$8@@$$8$8@8@$$8$8@8@@$8$8@8@@$$8@8@@$$8@8@@$$8$8@@$$8$8@8@$$8$8@8@@$8$8@8@@$8$8uə[̗w{nm?{ @{ѵȻPllz_Jx̶Ո4vrid,+wS@:E.6͞o_mʿW^F8VO+!/dЪ7f<ܪu6^Q_m@ tWvUɘx]"^[܇H@g L"2l}9otlqx}Uwsa"$|4`xӔÕZP7'F#U]uk3玝q~k^ϝv3w6$uNM#b_тum/9[78qȽ|ׯU}ѓQ9 Zng,(j8E>| o9|iz>cq)׭&ءȼW%$') મ%NiK[y ;XE/_;72J׾@*e\6]^@*p9B"ks8 5z_ޚfIaKMBnJ q8U^~UiܙkEZ8c}⭽ '8 8z ܤ{Zԟ-섭DE3h}\Ҋ8PSmd|кjO|SQz%EӲ؛ϟ8H@^^yosWܠ)5$P螿\^ aBa'{'&pXYLIT\`GINP/(RG%.ob<~yoa>#=r448G@t@n|e^<ԴH$"ި-swֱ5)1\yzׯV&Ӟ**MkCP79$:@RCMRh<"^YƲ=;]{f͗/+7lvq{i7@y7b߹s$zߺn+|5?/lՒ$DJ;@bfS. Swo.֬pQc}Oͻ? ﺦיc]݈UѪTkG@bܔ9E%r[7ܶ\L7a=iT֗DXu΁ז$<"ao6Ib$@5 ~?vfjBUQ&!iQҨDܢW:{;VJӺOpy~\Z%qk%&puPמqH@"4_}5\$Ee@:aXR{|nLc{܅=+̍sW}˅v qIEn"L-PX_o80[*u~KֵTJ׆vk:`橢s\G޳>>Ư-Df$mӚ,[$^ܴ6ݤTf#[QC=#qzϩF> {|Abk*T>hėPn@A@R9oL7Lԧk\I\4xiԤԼW!>[$.ڹ 3Ѹ@ҊX5g[TmZ"J~G ֧IJMJ5hrŒ)KSs+j"}0o# qIUkȹcߌk:#AFlѸVs1 8Wݻ jgd9xFLu(. ok4*{bzlF44H;d+km0ܵgfO"r㹾T\ _Ԡ\@QjIp![JڢirCsjtiūS?@1?=+iq\_'2gc9kk{6^.Zڹ,E>ڍ qyR 1\p9F45rv/gk12!\UejkYypeMO8szhɹ޸ѹO qyD=wL]c3SsđFm V#JzElF]UQk"77v>tqb@Gl '2աYctbZhDMLok59RZgC=䢪Zw}A2r֌*U[QCBҨQƤV#A*d^n_{1".m덼ٞ#@DfRyOuhui`@uRHLEE&^>eM*:qc*PÖ jf<ҧH@ChxF{ދɤQu"A }U _i!"uzٶy@%r6 so%L%ZllF2ԝ0ɻ NS5˚JM,g4jqCtRH@[g wNRH@"r\i:RYpeđFm)&8ô$CEN''\5!F%Z,* ~TO4X -$;-=8(o uwq26 y͓|$iN╅DBlFҎJJc}%lX[R1m8M89RZK3MjTTV#~AKܽA"J5.[$.ɯ9Q[{~v='rOi;֕T|VĄ%H^\ t&o]=`D d86EI!rQLooypemDy dUmTMjP?fɛ*Vճnx`UwX (Udnaw:Ts) =mF'y砐'=35'2}vzsi޲0E~JM8f,ecC=5Csh< "q S? gM\~MūהHZ{LǬ K7Ma!R$oY7qcU$mMUi~/fMf{ˆs$uENSߩq-(857xDS,ܚpS4K=Ȝ-FޢF|=RŔk hm E5*MVJؠ󹷭vz#<9 W4m"bֵI:M"o^Ac[ܞ{ވ\8IUl?1äQE#7.G3T!9LQ5RQ($&q3!6')yS%؍ 6RId)T5A"BW_?[0M},vq*"dUSrHJ*H UXx؛FT$2wi 絅hK\l*ށدQ-Ul͉+f޳I&HTʔMz"ɒ =ssQ(+G%ChHRCNMCQ[:n9i-ۚVJ=$AͶ26eTt 'Υ3Wz@d9*lI(~Iٜlgsck5-JAZqٞ1.\Jj#qd!8-^*Q`MpH08)THT7 F6Z{ɍ+Ivl:}l Tlt@)RnྕQ$ b0,qcsZUV~* q*m ?d*3sF$Y@2X)s\9t8MH^,BB66E5 N@)3upsbu|f$[f朥+6%9ܵzEOP8W攎 2^|%5C4.h=\s ze.ǜqĶN3\dSЀ/8@@v/Yw}㷮_Z9`JTk:\la9Mcǐmf{ɼ dH Sʜ8y#NZqg38@Z\N]jOiM&Z+|VVDk:Rp\T dnGE3`:_;4?WVr>NwW{ũq9l\S8.( 7hbo|t]՞ǵ]džzDKPUN)'=╹)>n'[yDl|}Α &mV0c&)U@ڍJqW؁eeQ/~Dno%ElktJI*4] & ,n/M. 3I\*•a<|P _Uĵ&?|m9- SUx!2bݨ5.ΗvZW ؘ9`LV9UtQ{]~J(o{H\Qiñ#t0wu!XoQuU"Ң6\oC'9C:>@3"yyE(skG?(\Z,iAzoP`UJ8v/sȭ2VJU¨H l7_ce>v&BնCdY܆_y a$Sez qMkk]k"is ISAUUg_- 'xͧО6gzEl|U 7D{zlAR$ YhMܵq{PEҧur*z16YΧ{~O݁i>zo9mZz8|Ue}Nq!AdBRnH\1cjIDl84VRJo:̶i`s6#gk^~BѸcNI =e)%{0XYr#1Ԝz9hn9-yٹi5.RE9!W*MnwoWhh ĹtUoK+p/7լqn&9Cd[QH%. !M(y?,-Y9Sb$;(aWkal'XlLūkJ<,h?&k$.RcRA'&2H597:?H(#VJQMc_ZDEtk}f% '57$Ԭ,=둵Q=\SWZ^fFW8/}N >kN4rJ `@LPc_oK\qK:Eiҫ׬p7h W}ÉxYԠL[<ov/;z|`@+pƾ*TZ]f%>spˤvEə *jqV8/G_y>_?:D>ā k⚃R jҤVPi1:ƴqG6`p=EF|d嫜6FS)m@jv2cH&:J}?]&p;5:6 >u}= KZoS|RݾbU;M.83 DR^%p5 }odR <ւęOQX:@vS{{,y7T$n u\WDs?dɮH\Elp>rI/l>gȋVށz?ܿoYMքzJd9k#Pj*T%4~I#RNUElFO9FkOiA?حk2]uw(W3REB Mo6,l[}_^Ht{y+)[P_: 6nN5q烎oEM|EtI$8)$ofU1.mx߄ٶB$.(E zJ&o]Sj}p-Fֻݯ.)X$DNQg5* I#hAiUE Gz%8I&=.cԙ1-I\(\3NGkm&Fzq2MuPК EђD4:6FYm2z%fɏwFJ3y${*G q))*X5m:H%j# #Nj OgWqm2Y&(jlQHTpRp}5-:Y h HB=8BU>!ߗTXWQH$z6۾Qу\qҫɵr@a!u+/KHA]h&ݼy@3*?-*C2 MJT^3jxyMoQH]ۦBDqYE79 f#in,@W1p6^p6Z7(DZWTjUzҪQ\}޷I6c6xރ EnR2m) /[\s-En8[收TT'pA#M2+ }kdI&4 U-j|  AEn3Պ^.6fI*Oqz$~ EȜ>DnJ\r $.HW7  A+ɜRg*z"pW8#l H9ԍF2E*ȩ( $`w~V+V 0{kx)V$ZYܓtUIj@o >HD8+"M0 8tv7 %pcW71Ki61'+({6EB,g_]@hqa=zM &i2LeMݽf"r%>JIdw=\\X8hWӉz ;닕V`w=Su(捉ZFNrQ$NK>b$DΝKR[䠈uH\sNh>  |=,'(V@:M-qBç =ѸF]岦$1I#kKڏTD.+ Buw@{k(V@:U䦢=h'x TҨ:=LdM@ Be*h=[.WNQAemN.=I*TGVa:X̅_pMI9!VᣅҶʡXsޟW'x2Syg;XZ3+~_W^1_.9R$=ꄯu0P.= &瑵giƒmzN_+۔;W씞u/p$.?A|C1땛XM#qb?w=9 VQWՓH[\s\'[IU@ C˧[>o$vagi0q{i~I@zХةdE$.v;ܸ+#,T8!s.anGy77_6-`e3)gty9zUu WN5-xbIܶP.=/t "uJN t- '-Q!lVu9[Wm),3Q_NEs1;%p~F-E4^MyUؠ&ݚ$hÞYIH0"UoK5TzeZ;#فݍ~@#p{nlh- UTun'B7{:[8lVb+fCj-nE@C'v5}/쮥ҌWx6:9ͥ1%$.=Ma)Fe2L9S%oG?N$YVj5ujF7ȵZ(@а†y[26NES1K_EכI/8-ZA9XDNP 4dM\eïؾncn~D%pBWϸQ>xSpA6sԉ e|=$.Ti_(8qZ6v:| چ'I*zS]7"rwf{+mq[;ʶ]Ö77(|rb$aݰ1'B ܲ9 ǖݰϵkoE@÷lfY)56ޫV/i%^qLJ$rbH{eE q$poUsH܁%nțmy; YdKѸ-Kҩ[ ۂV8W[8N: $e*LJ#Cm GT%pqBVw~EV+ĵz C iJu5tQ kJu&P$pA1vimA)ހ*õbEՆ$`'笞>)r` %S.9!4wG:a^8EbKS Mw[ n'W q(qa\क8zFoٸa3lj++%nL뿠OA{a$Ёgv KSܠElwIoy*raRdY‹4/5+*VGuq*q sd-npi4[<5Ud&n3bkrד墔!I]Pq?zyq)qV$<۟:Qř|!l_ZkmٴvK[9kծ=iQFi(ZQxΊƱ6ƍ q˨aތlӑA1qP8XZ3/Åc|;=}jYIw?Zua}@a8w=3F6Q8 aPDlŤq7#s$Nq6\Hx55KG^M+/%+-&F& qZ8WJmiU:oFZ&:>.v%EíF0Y88}طq~H)Ө~7!8gT:LҢwsϗg&{7MS0~ +>)'.8mQ[3hmWThL+y264(Vhj 딢z{g]\kH)JKE8=*݇N>5q- ψ?Nй*T;= JTО7ǝ($p72gU`=( NG5I(|Jx$ΫR7uq8hX)5rY*)f+ψ4u]tzQC= ղRu֔򹟅t,` WV@j.lFu(uYTSs 䆖\J$k/i-ڶÜwy㣃kʙ$@7Z)KpN̍xlSb \4O8;-27~mohCme,QeO z]inOY˺B[6KrVldžzjΩS~v+2|-$qa$p](-sf' Y,6K"vK:U..h -8|4FmDۦ6ɕm:mam/+m:Ɣ1"5Nhc>t|?TNn+u+nК7b$N.NS+Ξ9Waﯛ)ڶSERMmKT JѶ#n\T J Z2'iq84 .ĩ38fSoMrph[x!,uE+D*mhNe5hRh[Hɜy/%9zIp?8v9EvYzǩJa8H&5]5!OmsuYŭѶ0J:2uC $qZeV;ʜ _E)q ~/ _ Z1WJT~zr Vh[ĥHFɜ=n2GfJ4IWⷙ]xGjy`e,h\7 ɬK,nJ\Tjjhap%.uVȜvm1h̎ATZ) :onkD#p<qm /) 8\jW*EEAsգN?Gң5IRΛfg8Y{U[R snS"p}͎9@`V iGU'77Ca:hdE"ʜ"aJU/Yqr1e|9#u-..{{f>jʕ57Cl7͛sS6CNrl<>Xϸ91_Pu|$ZpI^^^cnͥN͹/~7nhyƹ %onv-}1o̗E[6-'0xoRc]ޛ-"q"CuOzrc/q{?t貙A̩T JUOk򕴥pQ1_jr~kKkzO;k*~Eh#@r8irC չѸI$-;?;SC'΅YՆڊdJ)'a0+zTo0NH\{@ld|f̏u;JTBv+Ky !q1wsK-Xܞ=>(uB֔dcrCnHPf?r΋W99Fg[κ.0C"qÝW تv(>gv[0q6 9I+5՚$򦆻ig,+sz!s_BZԂJ\ g[m80{h\[A 4\:bH\RΤVkyl35OD)dW_OOמQ$$tjUu|<ZuM\g撡Wܩ@%&%m'7GʓdLe.("U͐7يʜf#NMrq~kÚ+qki3be憔P7>:<`7L'ySYb{ܬTg*\$vA. ZF j+GrB 8-fJ޶9%Q9[*5Ln0ۚG>u"u2k(0TԹ?` [tj |#qی,n/M6R\܆w]a9re:7, -1C 3SІNV? n0eƗy@!m*Vܐ$+:i+-LJe"q%nU$H\ $mEmU~c2賱SR:T*^H-Ȝla͸&\ED▘Hg܆b4 NG!FngK,QNZJUv (^DF֔Nf( t M#oྈލI7\,,cݳirJ@(\>'Wr:559c6~+O0gE n`INV}u^q]{f#q?N$ȣBUE.k8vRf\Z#qyHd'x jܔ+lKaup~߾N .rM/p@<\1n+Tfyαp&QĖv{5 n6b$#n?87[So)8$aĵyTF-z:IS՞D %s/7oMD :ܢT8j"qJG#qYS| Pf$c_.tC3*TR:,ifɜ!{upLUJ5]KSSHPuuG:uȬΎfgK\#q*L[ߵ ]S[g6:8٣q#H@A%> F˸d}A*^afaFIh1E$NV=?zֵgiWHrrxxUW0k4[W0l(qp["$ ]S@=%Aw]kFc{д*P'X 75kVd|'fr4A-FZapuКz7 EӪv@$Rƒ0S([mFζ&F; 0bB ~pMūCllK^U6 RH@$l=>QڪⲾ|[g[RCm"O]~'7G'G8]g!ֵg)8$ C!,:?`_7-[r6#'2=g3{25ׄtj^Q8:rF6 782=X-$7&!׾yd&S5$A=0765am=WV۫mΫVgzcCYx.ˎ!mF˰i墎T#qͨP5l^0Xaג_1)GiPʊؒRlFJ#q!mF:578QFoUCS̼#q~L ︨;aN$1g8 DNUAϩӁ()U$|O|pO#6YDF&B:5fJԀ*=7޷01Dl=ۂ=|cP$raOHӀ†\ldY ;ϰ6H mhp~z|jdmqzE츢'[jT2X+C]{H@c`};ɓ V4ϒ-{T 3jL؜}0} 82*i lx#NJ7 Y9^,p U5:G _Ps#)S!CR)ՆCQe8jzXd;Oj=X^Rz{I@%mu}1\TbEZkvJז|Ljȍ-d<h\#R( [s w<ڰDv3XmE=-;u\ҩ%)U[QȆV%i|2׷.~pqX_4 O+ZN0!2dTZÕVJ0xlu_4ܵg!H3SFSZRєtuRÆֹȉ0x@n \+<&T8_{$.?Z2کN踑WJު_[FxGSP:4 ЪeH#1n*T%X3u UOm~<|wZ$ s&T81B:zizk4E~/c|yha@p?Tf=mRD4j^L<@WjH^Ҥ}+ɜap^38$^Ŗ q1~u.Nkncth58Eq0xMwy.n[מR=$ َ);Ӕbڋ@K3È"pW֎ћK|Wtm=]%p.UaK0xR/ xC' 43fӥ}fd :m|olü[ "L5O"pf'eq{iQ.6IໟU暑RE#n|YZ{aB{:_g8P.O9?5@cD=hY+S[l=\G>2a+sYےLo؆ĵ%պR%˴??*bpͣ7(hg&+hH f8RezC9%cN-\,-#nm23ᝮ^$^uxؼUqaxfSLp$}Mþ j/sq=$si{llsOmk\q_DO82W#DR;W}q7[]&z*o ?p. ˻BJ$O,V༸ X2wco&176uqH\6q+ q{W8AgȲ0h}+sc|"^(\ZI~[ E>aI(j\d3]okբ0|e8/׭[Y'޿ƹxu}&mRWJHq2_w_ʹlea*Α眯h9z\mUkuћK|R>۪~p[J8](*'I4Ã!qV{?+$.)s2m3>C7T&pumz˅w:_~唳y''Cenk˭Lv^:(ࡓy"qfZIN_7_teQ{nucܰCe|̇&26F~p. _fmde^>m +otj)W{2q{̅5 f"q7g)]]d>W A;≾I=wL923qdn|0nbQ5ocĽzrӿ.nf&a,Ht0E󺃢o^Q7ŞGTZRAGA༔lf΃O|VC'Fg u٢hlϹ#q[":?iMGʟfĹ}];XK].ҹ%sj<XIHt/)2dJDGJ\Ժ*TR +y6 ^ap@Xϵ#%3\q#̝IӚ8?a6I#DbA&wyӚO]ԫLk.=g# KU7PJd5hE8/j fR;*_vܳo*Da /h(˜ # #p7۽H$q9I*(S*0t'.car4dk1˩᯵oTeU%m``mREδf& jiZ\lѸ(ne+J)}#KBG$zUN~}2J8Rj|lk qJOhtj+ _0x*f&Nv{@q`hDeEKjSxe,sqr6Sj2W:@Y IO?u,Bϣ4*" *T!k4[ .H Z)c.N࠷!VթI~G>n*Jp  I[y"Pu;[kqou>|~`Fl2ǻ}_^ipi4O}רۼ/D3,<ܹLc[W&a5"s_iWk 1csמi$Z Mܼ?^V*Ш$7fU>9KR?LD)Ԭ?OG4ΟEqCZ埡BQ85TN8IS(lĝ'0 '0E`mg`AklK=/xdpU$]I3Lܴ&huv;8%mk[[:&˯:{`)ξ qKʶe,M1ifQNo]$oaF Ho-~3#n*EʽP~lw6AL[ܐAܼt 䝛N˜^}y9\ܦ’<#8 4!Lv]'ٖ?{ { ɼKGjp}>iLE/1P_'jC}eSTV!*Ѳ^Im]F̪(isYQyW(H$0~+>:w홙#& :6gSΟ¹Bg['qjnఱ]ezi\R RO.-Kr-f ԚKX$M\Y8Ye-d[}гQ`N &@X%ÖSEmRͿ֭-=4N"pqĭj;)8s `;66KvbVpDU(y8MۼH(E{n//RHDՖ**#2]c8;t;07<;>3;H;ݛk< 5 OW/!|PE(|P'OOtF;$t\ SJZTI ն5+  \ݛNkrE"T8ګ,p5ݾfe[VF੡J퐸nQ>>2tGcsC&t\uE:rp |nNzQu~:3烈HRu*nms~w~ILURULt˘wL)g 6+ =4;|"D_V TW|8Wf. X~aKvHAU8^+$.Ĺ47#q"3$ pܬ0PP D8I)fCtA*W.!qe$;$`AElf;R`SC70a CH(\+jݽ~ zMdIᴦ]錮7IlnpCU&hݞN2 'f̷1r/<Џ;gIdWTѬ0 ; ګ?ۼ/$K*>'\$Trw74sPRMzb6_\%NכR.{Q,Ѭd[ަSHdQ^MF FRvlQzfN /.ehVO"o5fd׾hwD^hGQ-57lYG*Fד!uu:_y`IvbEoԡjJf4w_*N[f =0 K-oqko;k}iUwq N FNf%#zAob!@ˤ p2<8LlQ8 ^k{-$wiF䖉P(u?},k5[,űEL=65Q9SѸ:H[␸6cg[$Nr"p4+ ٢pE[l]mLŦm!I:41am~pan`c <2zIqD\}ŋf$.b2T(c`+-T <[7[̐0u8x"qn8њrj<+Q.b>RUk.-.k{lܶ5zx֛3'=t^ot;cFKra Upk=vG2!86[?eԵW6Ƃߝ_hM UK*u?.bƠ]֦/r4wMk(ګ3o'Oܹ𗼹Bz7mnH9bQ j4C,\&q:M iwk ե*E^ _rsZ;bBC ;ВJ=SF xU^r{v4;oS}fs9R9E'gtԡjن8o%n>^wCHڻ"b3tfY(孫g Lhhp8Y[Dv6w1:K6K셹7knWG'&:T]w*pF"={蛚7a\*3b$ɽfh .m|fߔVMPUm|elT* c¶b{p= hKRmNi|A~s=za1xƆ3k kWܶfE0xI  R33=^fLTNݪkVvFȴb ) g5R'iF$dK.;5:utzʰ_uJ8aD:NߜI_% xv.)M fτ6!q6 ?'FQ<pT͒J7RfmPˏ)0ޗެ i^~u#7ξSɁW}KUchJ*58Ӭ6)g¯s6UPmĹ\er91CTiU8墱&TjC Bĩiٷy=~b#wBg HMW5.p4+ qɠQ۹j/ Rݱ56>ƋfG7y8G3cK[4+ qxT8\!;ؐNO֛?.e̶7*3^Rl*xNy>+0u]{Ix1ʛ:R y;!qen6}ͮRߨ#U$Jc|0KtQ,#AL.)7Ez0f$+ ?|u74+ qmVt滃TML#~B=>‘JƸ"qiM:U(7G" z>$kN)qjD0 mc+3?4Ҭ' H\dnS/_V}jw( 2,LVRgD aaUڸuc### ].-^=F2W 6/Ҥ H\E/Q9 Uj ԦKl R=DJ'l$RX ]΃2^EZ,7۷S뷜9i6+6NW5+=*iU5V&TARhI\ղ7/=彉ԉԦ΋_8H\UEԨҪ;!\tN_T'TdĹ' gY,92Vڸ(}o kݢf23H\md׾"qe#$҄'Lʟ~l,JjJ=j3'K=ěѬ0 /N%N=4Xq2lH&ʩMѼv/SR4M27*h+R j$gGcC~åݳܸiCpRs- Hq[ҏg ׷Ξ[[\d=&߲#۝AOpbvTfrSCgNn!R-lTOuŔv1ּ;BlP:;i qQHI۩3KƱ~ˊFQ'KAZ%mSD}q*Q)Ӵoi \괣u~d\-/Ǻn`$.&sO)Q9E!OTNiُ|H_w;dHv2\K:;(fZi2zeȇ}6t}+"qB9y`%-rQ9ui)!7GJKW@S=K32^̶zgh.-5ȬHz?ĥoD:9TqE1E\祱*hj0(wSh@|רfΩ>=4v$+QEcƋ`#$."q+RTC)N[o$Y梨Omq)$BfI:aih jU`'Tlr8QK󲑑`維^8$΋)*/3ew]cs&P㦕\K#myKG<ԁJ] PO?ܷsGs#l& 5 ^QHOj;6}kd[ZUqY%ΒJ=Ĺs$. !y| tJ6NJlsۭ}On^QHoSTNWF~6`}|5\lH~=gȯI8^$}$po/46PVp=dn*!*hc+/O.u|oA*5Iaū y//r=}-w^eUS}sq,ʑ8Θ$0)*#&\Rf 撆NF*9o iWdZjsG7Nm_!w8}ev2|t(*V_M*孫ѷIP3DRX;ԹCKSZǿN_e&9Mm{]SuGpڲP[jnӱn^q'"qD.WTNRgJ*gjn q$kx*Yzݵo+u \ܰ..i2U{2y qC!sSAZ\k\)SSCp[*gM\\BeYdoX)c)TDZw=`I UAQ#ģrB9dnUFަydmNwZ|^~_$b27^yvEҕc;S4ֹgESQ53#K$ש[uțTw=19[uaᅭRi$nxen2p_` 57̅"ڒVuTjEӒ$c. Dؙ*1Ћ/i^zfZK>}G"WI Nʽq`АROTG.45Ŀ˦{g:6/Ʈn[5ͫ M)Q qr#"t٨\St.͏|aV[5H7"TJ-BbҺ35? &zRuz!qH\een2CoHĒsWHSCamwSkAp׃zo{iϥěS$Hf'0M? Z!VrHi;v$ot5w=\IM )^]H\]dn2hEf G0;:'+F_]<筩x,US4meJ jɛRjZgx!q9` PDN26ЬK68|l8uo7cra!Ao;u"j?&T!mZZ+GKcH72?9ف;8bzCt#E2RE,1pI<ҥFfm}+k`od)x}a jtx?vx9g00a1E\RIV'|ۙS\)59@SԴ+}xy#T8~af!z8;+ T$ 'ŪM>ٮ 0E=:ȱδjeHT߅y @O- 1JDLbkR/ `ob\z8pFXR~! j;TU|M]5,cqv !"}UOoV82H@Ϙ$/Æ(r"c4k#m.= 82HLs-8C 9ZX=>#H\(`?N- E%EpIUU}z854+i԰񎦘^ ѹNiS4IZk*j!p2Mrt8"Ig[3+;KJE o=$fJRYP5 40#ydS@1SYsjU:YIx)**fr%PuT=o PsCc@#:9ĥ胢T^ KwNl'8:.0Hﻡj` 3GޡJ{JE[Z6S}`UYR ?PI\޽)D-Y9F -9S}X$3Ͳ*ki;uTƗm#} 'H@l#z: sQ̴_h\JpD(2 EWβ ѫg2)$h[)GHB:ˌE5x6 HRmP W_T !TmݧՀt* e"U"dL$Q''MI]F׷$JRպ%3uB؜}{,-@$f ZqחZBR${f4)P*jY}:]yxг)oH@Dn"6#d&Өj0d>cqH q}ᇟ$WIU$čL8"n]ӒIƆ qU9cj5WQb|b?iji$o) gvT]te^6 2 jE=^m4{?IT#_3"LJJ萹FQƐaE 07]ҶM8=A+*IX5e(9P\\ @i!? Z=$`DN1 18DnfRʹߨTSRN9Y5wsɕZ\P4TmGlA$`Xdn"hEvVQ9E|7[(+1v꣢o̴߈AtSľeW+B'U"E4a_Q.va-nDAm˜Fl=$vQ.hSmmmVZDBCѷMeS>Ќ`[ܦ7@*(t&Er:Dx(WK[\,- َs$j= ,G8rіeC]NѷaU%K1kLBڦ9TC >V-=}> *]r֯Pzp@ 8Ix["k$)vڽ4hEMIY+fO) q)wI۟7oQB1QZSڽҳz4Jw(g&T66l2DF&h5xl`εE-La$ ZWw P2ZN#k@.Fc#vs#iP@`.Jt]U4g318\@ /b$8$8@8@@$8$8@8@@$$8@8@@$$8$8@@_RdOQIENDB`knapsack-4.0.0/docs/images/logos/knapsack-logo.png0000644000004100000410000003553214106361602022124 0ustar www-datawww-dataPNG  IHDRcf pHYs  tEXtSoftwareAdobe ImageReadyqe<:IDATx T՝OUt@Z1 m4Nfdf@y0g_^d&U⑃]$;&boS-ABTO/5Tʢ| ]uJq%5Sa}l̬vGz> ՁGEgcx pL gWsk-!*@@HvY,OtHb^X*ȃgQ@t'Wh<~C>2R~&)q!ub7 sSyDo1< Pʵx<yۊm p]Q74t34iJܧTã&8=Xȣ,weV pK7?ߙY@о4L#9Tj+NúXy|- d)n[&Ʃi'|2!a8jK"4*ӺWl?Or=Rz~8XqON dBUx\>GƦ8ƒm'p4xK{Ddžbnz1qoH{[ <ؔ8KkDէY'~߿N)]Rm q_p:O S)˧_Xo\~BR-./lKkaxMR2"pI qus(S2q21pGc65OVrax%w*J*DR+ssYvO *i!xȾ|=#qᮺ X+7r?^[qTեvwE`mUD_՗bՙebrYD$FG*zi .˹0<ؒ:UCQDF.s2EhW}dg3wݕ!^툵k[wNjn- 6et}#=g-%庐,Duʖ<,f.GB6 _ʟ>^#R "n) 6P \99Ay Cu霔wɠ벓v ñSljuI>Z%B+=rWៃܒ< a͜y)cPݸҨ83 $aWAuH4Z"O+'OWc\KD>)qkbxF`&(G-pHRswCD*`0X>0 ;(;IɈXe\cnhsaP%ml}+ouyO^X;\ D I`CۥܪXy6\Z; We|iD|cElrY^"۝ t0o5ucXyU@1u#XؚxcMrPpQ*`35 04h&XIE9v6R/3i{TܲXy&a#qn!6q.N/u%UȲڟY{Vy2`xHe$\CtPT| jiJ9|T3֟ǽU 0x> 9B03Jg1$P* wOn KiL[j7v%mqĢE|rf;u6R#/2P<)4t2\wAu`̄#PtY5 F)$6g2DrBH؟պ/U_& 恩 7í:&d3-%s+TqI#`>\h5Xϵuf8D#-HvǓn;nj̴:Rq=5pPdTŢn/cԊ/qH-p*{Oib(  $~ʂѣ($aq] 50<d33+^ow=CSf <1^"r5V?B6j&8T1- T<ұ z$7 IA6NfRu(PﮍY:Rb-8P ``ڡP@f/8y=D_  Xy6j0ߤQѸ}@fVv ͇N8i 곅n;(`pjK##l;t @:uh_JA^O+$ i!4uIJ\S8>(hl<^ᑋêXͺjTT2mJ̲4Y@f3dyApʲ>kdUU3җ;3#bvj\{\.6~kkwέq'3"ߛdǥ^=@ J*M,e`?/kj0A:N빖g cx"kL}wE0sVy}Ip"tmvYIozQv@c tuo1 y2APGX`깸q:e uVa~7  X"cTX2X|.2aqE!'%k!;8- 7 3,&wZ]L*O/jQUQz1+vBIw4&#A2z-N:O)Wg=80aL̻ c0((]80բxN2HL%\ L] ə8B_F6ÝHOMOSA5⶗;%lU\3ਧov ]ɗ뒎"9֐b_ c.0*>yH 6FaևPW∿xBlGxKYDŠ?n.=CJM!/ovp 8'Xov9BĊF,$RKRIno[c v~iwbuGac%@Z&?@k4anJb @Ee^z&珱\(0D`?@|Bvc ӊ י@\#+5 !0):8;8UK3PU&@-a?'>D  Ɣ`R:eDb7Ly82G o?7-Lw5 Ҹ蠗N:xh"oU!H;r#PpD-pD6֪95A֯/7n0Z}8T qB Ltr& ߸;2<G7 8PΒ8!]X;7T˺`Nj-;PI <*c sw]q\רt4#۾(GDgQq@7"0cZC؁⌋TB:(C]Xu&EO%AX XSžб TtEM Pc_{P)% p3c 0Ձhñm-#{.o) Lp+P dZeU`uQQs XC^AC 20pp[REwwNq5eN)SKA}Tuf]erkoneҷ!z)9 3N<nv~Yj]Oa&[Dggc0J~Gi[]v5sʇ,iz6a rU\w?:z6!gDl\Pf]"ci[I3ͱxQSObx\/ǫ &D0$13+IRCA*fE}|<ԉ&e.YmqK[1*t {uDF6(ޢ^N.XT%vPax̲sT: t3!r@-M|v2NL}v9 rȾv<My37 #0&b0g iOzCT"sezBcd<{| Ҡ;z A]I*?C}ggL30." d6_Ti*S˧ʕ{ZkDޥRGH8@TH"z_ߗt.돋3s,5;'Rҫ6Nq#hf z.h+uqK m#>f:f *ڑdڞ#"# buQ.Dk:s3#A͌Lq.U.nF{qXJO]lG8)b ~.C]~jTPڅo{A(1 2SAUhՈB0JQn7>I ^Do%>`/8~S t's:xH^^'⳶훢f1;/$º")sur& ױ fM:Lr7 Da,PQA N@B xPe4T@ ɺs*_엝Znav߁*n&P{.5"EMJ}훅ǢM7mm_}AYz.jJS*D%FVım,3*~HZZ+Ų3Zg54(cvƬ4pUjUhvÃ-+%HEzJg"T,DA 2.*앝ٖ9|XqbC4Dh@ Tnu]#BQOg#uF#eܣ_j5-+< x1K.EggL.i.T4 e})PAcHb#Ӣ <%~ qh=[8;zA6}ϡ #⽫NJ{~ta4Db^ПA٥ P c u)AK :z.ԇxpPÏjk կN/G?9V:[D[ 'u`#TBe eT28Eż|W\(+2f&ѵ]<"X)S5"}YSmJ=ۣދ# 6ߦ[ j(MʉҵLb \6 vpZH݄YheA (31D -}@C0!ã>&_JepNWr[Y4ӅfL їq=5tVaggӷ9SPXhr[.XB="Xx #5DEe^*ӮKس. pYm>:=ï@ xJh>,5k,vv[KMȭƼLS!7\J}qy7_cn<'eg@{u/u`)jD vjDBt 3d?h/Eߤ{|T9)PΞy\1N1Erm^غ2uۂ^GtUFOY!=stjʬb=ܗo -RcT";e[fO]5ڗUpj/=`aBq0  +5.Q SOZ&֝[# cND\ W1wV6!^:IZ.ħ'ZZ>ZpqmIu( 6L?qWk\F|Mܮ^\H)\ǔ$cLK0V)Hz+S(}n:뀛 J*QO_^86[KVD޶~tJyw谂*C՛dP9: WU4׮2*n狀ԩ9N<YxH5ViBT0BMA܈RS0HBQTЕjN7ړaW~uI^ۦB2nK6-JÒIu yEX5 (/%z/5G@#VxIuh1nG'}*Dcjei % "$Zy@]7X#Jɻ>F:X4sV~QAѦT:i̡/mc<pCu 5z+iCGysǍbCAe\v4:eYR4FJt4" :TMHi9 DE*Py沨HTnL4A,;[V>k1U׎g6Y>{p;<# 訇MGBb AEOGhȓtgp4{#ϋc$aPCxjv@cmh 2+JV"qT bԝ"ZV¥qR-)`TU: )T=| z$"?pQ q0 mL[5:MҴnvzk.]Ο+w ؊Pطx\ e0<|v 2(\eY.2褿8a@h@AiP+A\~+k((p_%C  fOG ҟiXr|,AwH]_Ci]딥Pq0ܝjدM>?죁5D6E*^pK{Z-1ovzCfOw@e S}Oydʱ]n[k{(7KgUNd&Pخ 6tW4f:,j0%Mw;TY jǪf @צSˢPs;7咋kaԗֈ(8 hXUצs,bxeqݤ9r= 3@J4xȯŲZA@$LpNg2|V%$*6xG:2>%U}8њG.8}~}]Ź~=%<`V82# 6ՔfY5DX<֟Ef6/di6GPvB9SxFO{ 鵘eh:kzHMbdXZn Jɪ-I`˔;=ox'+ Ulyq҅OѪM z[oY xEj޲urF1|bV7sZ$[/i]a֠:iql;N8IYH ۵ld XQaUX106dFAaDv-ޟ\р:׵;H)_,o]^<6#yr-?[}xрvrݬP}ٜ7uW qp{܅4r-R,x_ .ոT+ D/TT vqyv>TC . U)p-r|s< {zC]_:U5|*]V ;820=8pqS^2CG@- =~Rk05YӺ~mD)+ Մl6`R ܁];&tVb\yC F[fۯj~frS9%>m.k^$0߮?!ށg)ST~i>dg!KnVǔ?^\C+T$}k;W`y{^@讅nz<:/Hq<оD* OqY:|m~SZ(}kVjHl2睼Ç[»xs:;}7 ؒ }x-Ԙ; 74a;20q{,Ne;] ILl1]2)|Ok"ؙrՎ@Fi?u4ieИnJ)қf_皛ymSZwi }[j\'$}/rzɂe7)kct=:q^|;tm1 llZOÃ`cccx1<lll 666Ã`cccx1+ G7U/4<Ef(@fT>R_l_Obol)?^cT0?@ZO<Ef(@f8:|׎kGF=zU@Xg 62("PTA2p ء󏯟aMkl; AX;װTgU:oL퐿q49i3Msa n拓Zҁn%5F߿h)U2ix)"PT@(1&73_ݽdpg{ Vd*BڷLQaZdr@ƒRrjGVH 4%:4Vz (0CQ-2w] ./^r,)Ծ /k__Ef(* 3OnQ/n!۷uCݽ^nu|ˌL.O20$jQqlSd`XYKuD-µbf}V7պ8VV;t^Dϋ}FחW Ef(* 3ȨpR hR-YPk]^2^_.'*AȀ*/m'K||Z.k|^`3ë3$ҭ j00BzGl7(1C,\t %KݫGX]E@|_$Ԍ _ TLQxhSGJ|;?rLIZM\ҹsM*7l6'cwfS 0yQŒGZCQj`2j#EK"@kDە[%_[ k iVd&S1#&lv1PZCQj( r٢[$LkbKb)w_G-eP//V|{|^u_Lj:kKqoJKrXlWŃO/P.ck(*b uu1,1LvPɆۏXyuD2kDٽ4} 26tΊ/:~5H( Ešv9_ .\W7KɕӋ+~㚮U@% & /H0N7G gOϭd,`[{aK3$Ȁ2zdvZ  X4hi':؝( A_;zV zTL1_ES̆֬ <9_szl͆}CsS(b`*ӒqI>{5e_iT-=tXK)1U`_@0^d,O bb>yWvdiJ~ WEf(*z.'Q *c^7Ž44lQNï7tWwNi޼F_gX_,6v`xTЁ㎕w)Ef(*٭QZOPWyꝥ`FVr/Znl7*$ub׊mR:k|];=cX`*0Ձף(0CQq桊5²ONG 4upØF2 TU`hZQn]JL+mˉ?ɹo,/ i~׭oNQabQ'9Q!ׯu q1eнRKͩO[I/@E(8«37L@捉=PJ 0QWU_8)6u*zgNiSa4 *|bhQ Y@Ԕl(eŽI+=ڒ#jʨ2_wz>WEf(@#Tҕ} Ajɨ -B%U2,3z5!{ w#N|:##(0CQ[௔΄+jobBLPT9hx|t@F}oބ~yXܵ."PT#fBD}kDaQ-3~24`wSeֽs2%UѺm[{Tu&Vp,"PT3&Q7@jUcgK#mcꔢӛF6jXqmQKFփ,/uGr5;hSa4VD }d2!NFs/{IUzg}TZ] t@.%,&"PT3f hՋɄ:6^-3!h-rӣGVQƊK 2ji (0CQ[UloP%UzwaİVT]\PgRAGٟpKUCQJ "dۃ.V'2BX]POFuCaA\̃oB]JEJi{0 *zU ˣ{Jˉy{FQ{vj0s^ 0#t)Qa4#BqSHT o/ޏ:9Zҽ"_x F%MKILt[QETMaTq.V娕Km7tڥ`p@"PTځfD} @^joxj-^RU~\J( Eeh0+n|L&2{)~{X]JE,̈́smoP[2^5c~(aOz/\JfQa24@BM-kK%mn5f\K}R-TEVgۃ T̍.V|{Y(0CQ-4Gۃ wѽ]X|x O [6=CQjeBP W՗qp1}(Kf\(0CQ-/Jkz ~ѽDQaP@S[YMj/lTj}#t/QE(* xj{#&ƭ .&?Y(0CQT`ql{Iʿ%Xx("P<"yz{oPi{K-}yrY2Cf( 4EQ"=s9ʿt/Q&2.e<"VAkl0CQTp+C^{bypGѽԲ˨\&+ryH.@M/q/R^/8oXazVjA/K- 0KX_e\J.Y"Pͨpi{f5u+Me歾&^"Y_>3CP d-5j( EQufLu/nWT\Ln0)<-ˁ罬ZQC3EͨǷO3N&z?f.^0 4 ]ZX 1ȌjF E( h&V%As,=`|xZ.&Xl>Yb^LjQ5ujj( EQ64ct/eB%k>!҅MN.& b`q 1yX VQu -F 1jvh/?-A};lD'3Үg._82 .lСg1 JAh\P:<Č*'sשQoM5SPTBdV 6&5mE1qdCr/Oͮĺ*A?'V{_Y4eg `t\T:bPYbV .iPQM#L5fJ84`So Uo.B\t)?f;yLz+gTq'ar*P)e&LU9S5|rG$0W:j5+@z?9g"P TTx55FK;ی8 cILz.Ţk3\HrAx^.crqQ) S+SIsrSN)o/{.Mxl'UW.k6( ղs\!S[`ޅpQ)V)XԽk*F.ݚN37\ZުQb0C AX.ϘGјq(AJ1С[Lj mVЯ*/#g2E1a O|CRi_ˌ3JJ7pzT cjԽЌ[! k2CLf,YQ6"]kPCQ00Z[Pt4j5qA>dY+:USG@`0C`ſ8ʪkA҂fjfʬJQIVt @li^#w_𞮂bn ЃB|7aJ- sJx ::z(StP.O(j4 :H*G3z7CM^98[C"P)cPcۮU ?Μ}д}P3Lljt-`[xPc]oh8G\]jnkx) *%W_`/S@aF`aĨ;Xj]I%*)3ԀzRgB$ޟUU PnC.dtsZwmP*uwza SZ<52 k 5A4hnaNf<Œ?K,8޳jի 7'jE.) nauk1)4;)63Z'_ cF`#bjGJJ } Sk: ]Av5:CfhBcS)5. 0Tˬ 93K փl _t;חPQIi݂2oSQV #}=ڵK3TevOoeV\\NcIlrް43NK*$0lx02녳Un]UVzPГ3aJv %9Pc eNfk pY/s]F # -Zwg@;_ޞ+pQI~Nzh:UJ.qM{=5֍ ]MaĴX;aQFθݹ:0Z/pՋkVدhxfAzvI TyhEcqĭ]޳j8Afy%P*UFZh UEsߘ3_0_k\A lV9y+G3Td+d_..{[r<5LնRTRa*h:Y0^/Ȩ[=nd ãN%(O2 !Ku+ӳjSVҠ" d>VKR ݱ~"PI_yyS߼m頳-9^2TaͤBp !QꄼoX 3Kvg'1"PTdwM/{xb/׻NX~vݔ8_^?ˠ^"PILU3U $oO&7V%gP/Ej[^^^q2EICu:m{goޏ؆oپkd}|$Q/yL2ʢeJ`Xl-f1a;^|8̆Ǡ^reJj΄m>YnOx’e4|_Yz5N[W^].Ҷt^85/.$wvuJE7G-g, EfD|AX_@fuv@LA(g;Lhe ?n sJ STV 3A/ǣ@ S^ޞ ZÁf+.}5e|L+xx1Âqj!fhTEf#_+Ӣ'Rp0nH{1B[~sWwt8‹Y*ÍAV\qE 7S.@}mǵbUϋ?|"oш\6Eӫ%7Xs"Ep! % IQTVJZf22 p[Z9~#Wb|zڧK[{L_ޞQFr2 J iˋ+ [EQ-37b=W ' xZfUz2s\F\'\;>wUҼ:.ķ.[of\`R>g2XyA.kp+!.& ^8+vr>]N=bFS42>"ޘ`0bI@>tNǀDXkzWJhI10sc-iZBʨfm2[z۫rm+EQ뉚8K po &kƲF:>F׏oUK(Efp 2&KhKI sWUwjD"#i hM{v&?]fiA(0CQ۾B/g,s4z|}Y 0#O@{U#X72'HX􌛚,6ցeA֨P+: z] i(0Cy75NV7XV+ݶnEfZ ȼKkknf!̄ר:U 7IjnN_,A. 4SŽDQ C'L׃Y2j_N]qS"n@Om疷Bs"!(&dGvN,qaR a="P {׮/ZxT?!}{f{ݿjStgA=sLU5j@3CQL XS`uA9ؠ -7t5W'^ƋT7T'LȌ/Xϰ?5wf;QT]4AuӤbſxi TPu ?(4Efv>{Rò Hyo~KN֙٥--4W= R'a6 .Ì(L5kOz }e2{ud ] G'-Onėdu&~j֎qPa&k*p$V/A'ڦ#꺴\c  %R/Mv+֝(Lafەv؀ȲXzAb Ro- b}lm7 Pa&˚W쓋 ۲T+ W/mo.a+ڭ :!yvdp^ӳų~\GVBFySTcF 2J3,!L"i[q;ff/qjS׃LnoԧP5:YUF+q<o2?$*N–7J!3?)CWuJjDžx툿\sp磋ew{44ySTcDLe FcZ0p-wS׶mQKjݑv$l r5ܿeufoQ\"df,VYcT==ަ nZRFAJl'PE WWakNJOQ#v'ssr6Qk0xLjR]Mf3ff~Ͼ,3%ģԳ8)dшr} /&w#mlմqϼf~t WS}\M"̴,+w?ghYTׯ6dF7F$[e,Y&WXA8ຉMAIsu߂((05MЗK̅j`9)! $6MT ݤy]xmܴ& h>]6V (0j-oS\LPea=m,3u`&Ln0xMACQ;:CQP:)xZJ,PSe:H9#Wf`Q30̤ԗ+[C=G)R^&jD.ߒKQ.Lf"Tk*m =6(^#Je$o=u56Gltfd'H%hˤ\0r# 8)yvㄚz(UW<]_'iq3~iH`e\.%ˀlsy{΄r{0C('@ ↚ZCLϮ4TuVE. 5cI}[ jj5\M+z 3bq cadlS:֞A#J|v(J8XLLeIBΠߔgcof܌=4X#ܷ q@0C ,2*\M(ƭC[ەΓ\lta/ ` d[ b}!14=(A=07rJ5m MupĮi@"3TE'"R@ \ﳠf9scȭns\4U NuV *I@p5rYu=˖-3) <*QS-`:V7KMfBC-A},W1 J.o*Zf(7:Ȩw~icɨ&)m T8ms습#@uf67դgRKJ.#qϼF.Q0CjnƩ&̊x=`mw.6hq3K8Κ%l nnVa]n.&/{p kf(Rcd꾍(FoDVM2]LEwUL4w5OMT7s1 :@UPCa<( cUmBS#J7DCAZ-3Pm|&"ArrU.?e0.K-yu1Hh7e8E.K\>̡,]bpa⿜3cSFXA@a VUFċI&3>f< ֊=BcwRt*'n=xp= 5 _ڱN@{5j3 4ʇg@~rsZ|.z-T |,3 df7-ft?o,P%@M> 0.&@L-w b;~>Px5jv#PuGO^H9Zk7R6Pb&mm i%A /kޏK @}OIS%`??0..ج%\7X .&?S9ϵe|r+59sfS9j`bA}n?rOz3ͬ5!+xL@0mAq.$LݷV<{BMAsV)ܧ m NrVZ7jV!IsCQPC ?n{uV]&ʖ=تd2bbҭ aV`!6qlV2r)+Jگ=5{Ryu 9yS 3vso5ģzb/"uJ<~`jr |ZLC9>ޱq9-7*gBj`GF)h:`m\}ϥ׉]42TԲcƏ9KN. r;V|GܢJ35 +ST4*WdG:Î~j ACkQcT pR!Eu1aX׃O/T 231/Xe+*ͥ.fn;v8P栄è0CQiQ^sa~Bt~-BaF O-L7;j_׈.mx@"u2&'fR bS 1*@U߁lsn| @%J dd) `xWy M~Rw6 );?{?[ٖ5j?9/ OO.ZPcVb<]j&Ogkҹ0Ik8k0iL3{4-3"SVnIe[W] F5 n#Uj]77S-Bwp4t/r$PTbef2]*̄ &?` 'Se1+-K(4`xۄ]Ԡ#`Iw1鰱綞!ƒjRr hI$+SLN%|7p?V$E\ O051t4}RkK5!quVkBAr-4 RJ6d%IЖ>kc;s#ݳL`@_\5?Sj\mBҌߊ4jMUS,3J*w[Yr3'MJgh3>ST(k*zm*N_6\[~W YS6fn~տk%adeЖȏB7zOjC씝 0&' ˗SV=?5jBݙhP'Yxj#DWa 3Yr1U,3Pҳl@EZ*ɫ>%j5qB3cmT{ g@k!0CQRz2R-M3}>+Ͷɾ(Lz42_+ދBdiG0d+5qBz;.ĸ E%NCNVZhLL((mMu8_@QS(ׂ=N34WӶ}9Af(*AʻygB*.:,XöfrWfT(QZ>vὨKnu"Nߩ }:CdLj80OXCzfKed=AJEU~v|kJP[n/N aaƣVXy%3|Q X@V4{O׊T(t!U\V֫H:ChP`dMM49kLᔞ3N|$0X?NTZLTՏʩ[L\& E%Oj,֘uYRT֫[GrƩ|D.^e{q6WZF"Wyh_-4Wa0CQPgeL\h.֌G〙x;{E_G5x-`Hzѥ~3Zf"M3s!EH\b-t(`Ifr_FH}cW{*b=!ݪ'W#YXAf(ɪY1cIuDM%o ֠e"QeC괟{zj* Pv0FWa!}Ϣ"umoXFv]ޞ7<,h@PxP NYZV@۾!Af(0 Bǐ5&N5m=2 !Ic\04j˪aU-d;N fAhC)a)#5'2M}͌鋽]!D)J2|}u Ad{؞EWa#5x0S]>bQ]kƫZ2Sq5c^޻z:<}~Y :6Qh34Un۳\WW$fVudo,+ 97Px_^Xx!qȡ@Մa*f5f(*I-^m)c- "LiJ6 YoF4*$s+gCւaC*a$iٱLMKKLwHh ӣIFjF0PUl7J~^._ "LzZHd1CBVMOIie d#nՄ RS ;n &P1aY|׸Kˎ fZP+ "nu&ĽZ*A E!8e=A5a{Vx"MM"a`E_cBMI.crɵnjlKl(МkF^v-m&|.&*y`"j@z0n c{RxoU{^OjQ 9|\.e8i@.0 ԴRZ%5.sg~Mj=\K{^%>| 8i,3Ā5X[_YqE'!i|@cK bg,7 ,5)/#z\y*֫5m֘c23 5QV'A0o摪Px7XhAUP(Xf.anp3h,փE*ωߴ>_L-K'n\fr3{լ20IU&g`ePswN_슂FrSqN)8\WnJf| FP.c%GA0opQOI i3-0r\NUmbiA_^_xi^,w; =,nC 2Z`^-}Vo-O'q,AvMٿ3k}溞J4b:XjPLlOxZfB \1"DHeZel3 p`^5*+q3F7Ӂ& dܠo/V M,[enq^O=k@%͟aJXp_S+M!f.8R+Ի:1;n^['f3/'N(w R5ֵvkfi73fUAl`ƫI89̰$%#酳N !fZ*,(G;ǯP`A|^}3[Q@rӺRx%0>(Vwϣǟ*7f~Y!Ґ@IiqӠd=Ѥ؋2c3ygowˌ>'ƏsdTGiZ.o3ϟ\B4K0r/Y(}f|DZb;ZYXNU,/u}<,ɪ,vn ye ;s#\qmWGlb2j3'"FO%բ>~Җ.{bK~e 6瞍6lXV}\L,39JmNlaTAQcZfb5P:h&j#T2Du à^ UW:RuĴXpؖ^zPocЀ%Mz~i[J ʻWqsk9APu[8BvmVl&j/2A*FLt:s| S=`KWZ)8RbLLX58N]˽L}؟ MQuFu@aP/ajUFJ*jlorWWׯMXI&̨{tauƂZ,3._ fF)-ѧl@A V:`>`{q,p1^`M 0n=[bK ilSLYhI\H9`ۍ&77LxXAuaK|hLԳX; 2uFO=5):f4dMpLBԘìlӍƒT9v}2e{zYz}ݎyY (-/!`&nAP/,1__1 %P>'Ν§U2!PF7:ÆN׮ZTltˌD (Ԋ>9}F{;;sUlgVѤLbyq !3A* oScTQDw1=vWtˌ+nt]жEs.eԌ&ǨMj3k cm=ӺK2vqxdh,0a* .ݻ2.-g$S3cך3ΡMh*=dF 610C5HUf7w?Ye4tDU7KHaO&NY~X=Y?=6l'uGC,_(h|ω7%ɝ>yP 8͓h fvGa$Al)q&"PUe}.^F퇄}SG`0o\}305Liğxߥf;y )aqWu{+Վ_y _^u\Ìe&B6:W0ZBr-3cyȹ !wFf82NUU+ [WF )u1A9ǐLjK*=j4JpaߚLf4)yP à^ Vݜ-*gif TpK`v#!n byD[u vҨX, 7\mdcA?9*χ;8gLLiSL$7 2>zCbiL3N`AEIA`bpP։,&4O݊vS/T|ӡou1c.xMф`]/򂂌^EbItG0:x|rs2,?umd_ p]Lj<}b-3YI:v.$'z8OݩO} CT1ϵ}67I֏a2cP' dvUdKbȬ-/l_\kt2hk 8 fֆ\cZ٢rQ=C7W•nYMiVIX2;$Čr&7 f\bvd3TU_쩺3yTnyQ-3Y* x`;{e8Xa_)+g='0ӡ T}3h_W*22( -<-Kv A /1f'f&INEp\U_G&^7*!P3t^E)b9d2Lq@hĩvZ<ۘ={'4շǟlƥLQN93.z x@L'd'u 1I3T2fV.j׼ӰY6~G'C[ijN,}hk)mNJEˌԨ@O_'.o4 f?xEbcRΫ`vu @V7 Ƃ$nS`vEI.;4HQXivmVju7*،R 3"79Z&ʘxXzu xؿ)ʓ,fԸ_j64T֙3 9;m 3KfZh\4h[𹟜la5vwՌҏf| TuR9sKfr]&nbT>+n3V*:R|_P5flNZ]L}Yf|ˠCB/$ĭTc3y6yGg:YbKf(GqҠC+ _`Q?r?}b7q't0f5^;ZU8.hQ4ܪGp~R~*I0"PfL4:^4Hվq݊ ^3ZYp1T3zP| -`aiI̛wƅ)שhI\> Aa4`~X yҠތrLmeReTsb',Hԫ;Vg__{C* ˈCW8s:q9QZ[\% /we\rd3TP7|Yi`mjFy[3Byˢib\7RҲCO)Xܵ20MQ)J0 ~ 3\)(X2M>QfyBJ+/=[fBQ#cKj?|F_,lW+Y(FQjj|[iPLOu795]Umpp1MX( D2ե^L4M(!Uwr-#5( 9ԵҨwCm(fŤ[ WM2uԜXW&΀0s6ͧ/ j8Sfզ.8(0CQjܭ4Ϟe/((kat44 *sӋYnXݷk-Ť{:ܷ\uǓKy Tʬf9bQarG+ %@eA3 J w%5*c.&hU V3]oA2sU/ 0Aq?oWu&i*dS_S*׀.?JEfFA@bYifU7tnzL7}:2Zf1.6F5vω͛Wwö"UGR,@]}h( 04ۅU(QA|6g20_2[o Bn3nlUo]ݡYFj e[ Xl=SNPEҪkG&}_,խ1G]C  3N[X_1D!{.&!Zf(*I]wHb~o` `ʈŋ޻N+A3XlIt[ 2Dj@=Zf 3ƫ3BNrl]mǶ07ˌjq:7iAbfZńp(,/PrU /'{,6/IE\V b D_@FXYos/=]"/;"PTCej6bL~0mƶۋߟ.54@I_'V;W(*fzTuE\7$ Ra P[Po((" z0g(0CQO@n^..Xd]+Ӊ-XcW.; 2EF(x0n z,Q5j7z s-AUV,k̜ 1Cږ(84[xŪQ <0ɩ[!PUL0iy[#{nuD<'V @cYF%&.10*_83k̘q!WP=phvT>FY^rr3&b?B 2z`A _J%%"PTbPNKP*`IVU.ha;ս!<  O.3mBL{3T)ȇI'rYB-+@npAL 1p1c ( Ehְ,"j$U]yo1dYa0..@B Ef(*P3*ٯB ,4baeȰS98S#I-"PTځ&'va^ P"EB}-0^b؆3YfMKq-"N`bdZdבyN`a^*># ]ޞkKo#PT`Amm4ħ4 0qd@鄎XI`h3jYɛPtzծɄqĬ Z 2 ߇Y /0C(ePk@XG*Lܫs!^ PH%GUji5سjI E!PnÐ 7F|/0p+cub^44h-3 89vBoH͚pZk ` N,kwJȄjmaIJ7G#*}L֘(jEгfcY@JժVT!e\l)@Q-jPTefX&BѺ/SPT , 6V<HfE4kŠ.%v(*H~׽ "T R1o!tkfͼ5&̙/X7,E3YA <(0dr"Pd2EQEID@(( A(( A(3 EQEf2EQEf2EQE4d((0C!PEQaI"PEQa&j7;A((LAfA(3 EQEf2EQEf2EQEef2EQEf" EQEf 2sr!PEQa& O("d(("Q EQEQdd((Jd((J-d((J-d((J-d((J-d((J-d((J-d((J-d((J-H"PEQVM"A&[>1n\p=jY^3٘L#]?s"ʛ$ Ѓr&3CL.R # uy'j0euJ[|*tO0S'e?U?syͤș7oiX'r$d0A& k2}Zo)%h@&} PI~7Dɿ{Ȝc EL:QՀM;LJ~ d 3Q rBlkH'/o!cSδ<Ԅ&fXb\k'1 1Y(}+Ȥ f2+'`'D ̻g&a&Zd*(g59r)gI䋱N54 A&nD{v& tNEQ顸,PfBL4 |x. `~,LL`F&hPRhbLm3zD}^%e:k&Ծ#Ȥd3)I,Fϰ]cF0HL2^3͝|1H7@)OyLMN`jՠ7Q<ML"VE|O%sn\w*,05d ui;~"[AͨXَ/1DiH Lcn< i}v\ޅQ.Lg;x^K>]DUcr8/^Ne><S&^3A?e~;0"녖F)NV,W3;LNr`vbTDg5fLB~ 7'zZMh7ϫ}W Ή{;(49dqd;^:ګ m,c<p͢\y4G v f4P3"dںYEqwXEݘPv5>J5^X?N߼3Cܽ+`P.žO16ϣ|Zn2i mDqwC]#"3oLd#opo ;9 1fBG0cn]3G 2هMهe!0YT~ш8vެM)MCXoy̛֍b׌IP6ǚ|cU364MA&0 %Xco2;6yo\68?i$*&L&웝Ii5xFqohBa0 ,'#Z)̓)DvjHy4iw- #"\`bmkgI$L3`UîF J)[m5ri$D+Qg`0ǠH^%r^3'㑐q#_$XX> 33Dػ4U-vc.?8ƚ!0x0f*A`^3 a ELV_T 35flw~4 -bm(5f"Ԭe"L.lI!8Kpx4flrCE-0@04!4zF( f]$a,j0*wilwc#c&DC!, sM^*7qd3]V7hrϪJ14Ldϥ&^󥐓Z>NE<^3U ʤYL"`h_ a& 3ŔScLLc1.yل}PUL@&10cR/~pT4`@!4y`n,s}J6t01+5Og2FK j@&10\dQXOf0)0pRe0j qn Ȳx4};t1N9'IG:')} hL0*,5[>k>ovrAfT Ag65(rVӲi:\SMi;I<ђ0c*pwJ J(=Bֈb*<%<<բ2ClҠF8{ۡv6kQ"\ 26xSI9M+v]߸Zz(Ř bv=ɿpch1w6lb`75iys܉jm15C5S'כcF3' %VH+w3Py<%[IdŖӞ_oޙpgNJٸSK͔\xbjxpi! K=(U@8v&HA!u0)f y6CV.5jfLMPçuL3I(ܯEbM (u!CpJ6eEʓ`a]Y#Ԍ8)2ǣ<d# x<-Ҧb- 0@R5G4I83"(a6(*ZGڞi?3 nLLM -*R֪X^hyĪ4^+ 4&D=X$)ݩ¨L* 3, iK?}ΐTv=G *gMq"<EbN$ ͛Ldv|70@bLlg6ěiBC1Z/ɐǭw &Xgvp)ŤLk l07ʹΘբxG*5͖a ]pjG'քv1Ye9I~LbǦoLboyƣsG@GNdeU3g8C-'2^Ƃee;NI5c c9 &d}&JS3Ų?»U*iD$&7k݀:܂!`ߩV'U&6ؓ͜LE^3 nzs~oLN)$dG9 #xu pqVy4¤L9 ۴9a`qj:7d.'4gF8 7pt\!T B*8H@PALgw@:p*p2M 3?^XŠ7nu0,h_bD`P5Mc6s:GܥrAz~n,cuom̋YA۶qCpq0๶hV]2qĻ;UY>wiQsijlPgZ-z#P|ntUca7/V,UUmUz' hŻI[<_t\yճʷ7OF^Ȼ*g= C2ප|jVG'oPq_+zK\g.6m}f&Y|8׆z!xRH!#<| י(dl.7Ŗ>3ӴrɩKL'5Yz{$~D88GåjM|jdusgR XvV\0xS&m5}_ zAyrg s|J袾yCBփY.ӥ&Z{&ݻt(+}hnSY36GEmsa;  ȼb>98AnL{ 5W=5mǺ^gZ:n(gic{r]\ab9xSsVM}=Ny\1|E|χט1G9Ǫd߈+fvv,g~1{Ԋ 3'KIU4 3j:O tYi~I-tV$4cg"ߺqi~ӱ>y+O{Kfן6[g χ J|r {fMci{]!LOoLPt+}f~v*;"\F=KX@e3p&2Ġs'dCl3 ͚a^.vDy$TJ~r6SUcWO"C[a`&J3 03 0 0 30 30 3 3 03 0 0 [ת,gfa@OO)_V& IENDB`knapsack-4.0.0/docs/images/logos/knapsack.png0000644000004100000410000004234014106361602021161 0ustar www-datawww-dataPNG  IHDR,,y}u pHYs  tEXtSoftwareAdobe ImageReadyqe<DmIDATx \uyhޚ$ef{ۉWPIEڻq"ʩ55ITF$UȮDILS@ B3 Fhf4/F}}c{wU-,,(H$*U.D,H$`D"H$ D"H%X"H$D"H$`D"K$X"H%D,H$`D"H$ D"H%X"H$D"H$`D"K$X"H%D,H$`D"H$ D"K$X"H$D,H$`D"K$ D"H%D,H$D"H$ D"K$X"H$D,H$`D"K$ D"H%D,H$D"H$ D"K$Z嫻~Vo;wz{`cDqP‚BClewumMo ~ IH% v}S$qhh ʷ `j kTsmhIݗhQMIY㣳Nڮ/߆\%9.ժ{eZPV֧>nM~% /Os z9gΫ;648Z}uX"7wW ?7h̞K;6͏4d_̉9avo_nv?2C2nKZ5,"}:Q܀OIAs[7nip`kk>π SE"ȂU/ چfչlIq  ~ۘy䦸<,VBð]MX+1@PnPp'X'|t[oLeoX)iutWqZX8x2в Pwqxe-|mrfAhx!}͉X+XweP49$䥐JA$Jޗ 0#HK^K$,X bn.rY"D7WoA?m}\'f<%rwWUjʍ5mNئݸy35PqUCuybܤCB|N !Q9B ^\ߊ`}s`9M)5c Bk(aWNV T߱)նJݽNd85<}^~q^%nq]V翄ϼX#֡sYKM <UТQ7Z0GJ+K&Mժ{iOkg9/^oS `U_vs<^A/O1NH)h#@r^Js5X4`2#LD; Ӽ'Km@O(e!á}:0\Ա+^`z}E(_fk.a #Dvɑ)yC+5'Sux-,P+k_W{ ja,#5 |Kab PMV{E'PB!trXe`ڴFXf_ߣ!#KZ4GPBFz@ξ4=sjLEY7*_81@ `VKޘr 3UWe z,T%` ~`  㖼Hu48l>Xaq (` -)<䲼d$m+-,;K DŅVdΰKhBAIӠO%Zh*)٣B 1 X۠֌ vrU|-٩3?xhE1@1|k-'pŚZܠxJ?@Z*ZU*>5`F&Ҋ7dgMB9AOvXU\=hN=&h.;|KOd >}?/WSH(, :k-uny@ok8 f]9HU033|&O4\ }'g(D{ӧ} ? 4ݜ`U 0ʂz>ǩ#Ρ6K1+CNMN$4 R :M❞BuIXc`/=S@Wo3ʺ!0a[*wXA ڪmKS"Frz=Jh#%qQm΢+nP o`א$1ȏ 0 *X'C:ړNjPCk[S<YKؘD0- {+L;Mbp0z-;\U9 09HJg:ߔC'>2KqXcCeyz糭jϦ&'dW[G;Lo.VL5W6Xͮp-/j9Ӟ_H~+.XQpך:SÅ*33;qq)ZNV":#4%p!6B[?`v7uVq(jӎW_Zv]HQܘbZh̹],tඥYIq)qcrX^.xPe/>%˜cs^;أL(Xt\(無b:95a* |Fv3b~,KN/h,a Ff5\ߙ +eJ+L E8o:v&3wZ{;,=Z߾y:/w/@N`rrX(zu!u(skjSy*>p}X *cwZIK:&^sC#|!aZգ3JoܢXiat#us8^I[Z@.49[Vj]x.#.K^Gaٚ#N9168&to"j܊O1eǖ/hU[ڔXR8y+Ɂq:{>3IJ_jf'Xs%+.*>yuS4FmԽt``RD *䣜2LmlQOSXppiG""W͝Wh…5\MmhϯRXXa9:eKG?[M$Q0VЀJN݈\ڪO蛄Pjz"0KQ A F`Yԗ(ٝ]^U>z_ok{:\lqIׂ[ruаި^iH%LXMs#x['YQC¸|`Z+1X.CȜuEsYy*s4v6xpUdA .㢶rz{ӧ7iH",!!Â'GV8Ƞ VvUaUvǏ]GvV@&J//+PE M(5Ede\܀ heh(cq#u\{MIUN.k6*W!aŅ2khXqU(XQ~ _gq6nuuXm!s?-seVA+_AU;$$8p+24_^%S8mҙ yLU;}W6(z?$¢T{Y00Q汔0u>3^ +\ yPE)xvɄ hz UW.i;6- r*d(}=!]`t $I"]e8TB&*#4=+=gҿ~^ieh>>pC+DNN`9An  Fp6#_.vu@Ze$C)3s.y<J=ƕV}¨jaa!d!dT>ϖg@UB%)ĻRUm7,b'Zş/-V_ר~w .M q dA/7plsxhp|iPҡx``reɬYHInJBBFc׽`pЭ'*w)丟p`%tVQGֈN0~)v`DkQ5\vHʹLas&DzCJa*pbToL.j9GkQλ뱅מ:=y=A576d uuf{1*m}\+J"]q}s>03#q]] c?ސـ 5}sLG(whpEkVPZV-ˎPtRStMeWj{U+^{sMJ m!&`%0Ww'ӲJ.s?Ҡ +.@DZL-Il٥yqbJ, S6PB*5yQ՞*=2{gsKA [U2kذE[f}:ur-Lqm44X)SPДRoNGR~KF^ V͵Uэb]f*+n EUj:YޠrӚ4l} ^/U:, :В%O/<Vauo/ZQ4^݁'v]**R?9S'>|G]zKi+Pz|0Zofg~+u[\Luh:dUn7a/$q!wqs\u6OEqXUk'e +u{쬠W[:ѱ8p: (N6*y.~;N鏒΋.@%+X}Iךz =ֱ*ѭ0gѦj-NV{BBr?$"u|.+AМ,Gi}mtV{t紺:}I?_ˆn{k]jq?tv'\m$8:.hR}MهHV0g\FX]G-f&js\_]ʓ؏"o~!ࡩTx[3n_NmB?>qV8ǎ+ x:4-9[:o \ _鱜ZrzKH +8+܀$=o[7Naa&emҞXDʔGB^N6ǿrVf!I.hZ wloOWΤ?A}%oXmh '-o@E긞NCwp8 wX݂rP/JBƾ4ZVIxX_*  oSeح&:]婜 Vbtcu"Bxl+3A]VBܠ55{e-B+{K>2\9$75rђT. ,D=p͉!0A9+aI?}+D܀g+\{pYn0*B50*: rY g,*X_v1kp%)7K:JOiX ؅no?b >e)5E1VJ-ݪCx½T Z,R = ,8XVD3@Em[ކ]rw+{`! $XyM)&GǬ_XJ% Eۃ{qXSEjòزwY. \1!s<)UfG\ G9L)Y2߯'*E*w,hJ%y)Hkf* pc֢.8N4X;M+>8L|2&_p'G?62Ǜ%R.~a J<ޗ]zR\fVAkYUqnr?,rTs.L֭ZQpQ R)\ĺr/!j9E A vugS]Q_pX q%ѣlV=_CP B3ca3vTm-\ʅpn=9\UPX9nx? MRzgOZXSD=?(qE]v$L8"R{89T{9#("7.9_Y+G X 㰠PQHpD4nZC2|pmhL#sV P@'_@&8"PGuyL|NOmH` OQZppU2T >W䗑zTAUu!! |(P$JSi+VF?]ݽNU  xS,`CQP {j"V(4AeM<6ҩM 갖䒊Ue)[תw>۪lj*0]Z[e3b½ `e5ZVI5`XQ 氊| T^J*qKh5uok[_t^D97bR)+@;%*rX~N)) VRQ2eJrsqXv;/at+8uW;WS<C(HBA--)XX(0 +m8_$<ޗK Šjt5Pb{u)pQ >XSٟwn)TX(*6BwX#ErXյ9/),ui}CcQe:j:@w9HS{2œtj**(m­@c/{3 Z|7;OíQ'yzXe$2e`T*R-VaVIDa,p]xMW#jޛCnXI IvQI鲊BViO"*qa{-|)` m?Q8Wop=׳ԪŧS7p%Hzo6W#װPUB`r?_ XKJ)aζȰPV|cbLw`/zr JqwՇ-+Z#,}Y{َU؊v*>: Vny+GU>N'-HD L,HrqX#%r;H>ëy)g'S9$ŧ'~Mmh=S)\P_2hf. ͑#aCBB š&WYӠX:3}0X5~Pe}{nN;RaBBr8m5E@=8Bv6>}:P)B* `H7Zo}eȷ;PiAvA0V_;Ϊj*,hpXA FsꭐaZ'GXZϜ(Wװz* [oj 1ETţ!iP+:mo HR8X2.C-MA6m7;_̈)ε …JO_DUv% p8NO+:"WI`#氬~ +.Bv)5xXur"B wk>E`[qpOP#"*+E_G{s: 2B/JL_cJ^l<g%rABBXCp `>r+>zcаz@uMj"ۉF + $h}xF}ДOǿ+0R'd~^^HN&\I~줕 C=Ewpu׶$FΜu};X#>_~vXaMDŧm;Nma+V9@+[Zk{Q_ʿִ-  ];ʇg۾sGΪ$m{nnx &l'HY C,\lڢa !, (,tsO<*6Rᅎ ަ3Ɛլ»?^2`!B aux!gy \pZ+#i&!f"a$rсWkVI57裵{ UO*.QR(Mh>D`qCB㣙Q&ׂ CjUC:uץ V<]vwxt.oV|uA?4؟zC:B|+|n)Lv.l-t(벗rWHCpUm ~yMDm2n `}uB)khY+.Qꁃ -P.p;uz2vQri3vUKABSTڵ2<'ƞ5nUAG?2gMͱiĸ|^2N*3G)Jzz}|>XpQwRgΧݮL^ΐ,_0aq U"e&Hnn)~>XGV} J: ~嚰炓ByqSaq7&-֮(H8 'Ɂ9uU.uTƞ;q-A7ݏ< p$H)):v`ҡ\(XHr4j];G3 WՆ9&ϩwϩj|aUpv1BdaƝtVD"*w$S#68-I'TS/ H/ruW~,.I!OeꪫT>~zaic?ZHAʍ8R]8Ae,e-"xG8mo3h`EtT1^`+'mQ>UK]xZBrh5 ch=X KzVptpTO~p Ty'K|XN+4VxV).0X%q%`"LE;}VĻu"#|aF\}O-pq'E|QR obf.lW>ޥ'Խ X>&UL#Aj3s ?D.޳,R Wd*^|Eswi(t½ϑ*uA;)ZAa=±Rl&(-HAN Ү&xO'ޑzb hBpwrXV^N, vX'2.ي0e`!!oGluJH+ wrRE>WXGEL7/esrA`DK+YYM/Hمy Wh)44>82Yp8`w-QLDA-T민\/mVo%f~ݔ>`D(& X:ɹ ˭'ᯬWs0N -h pZȴzU{+cmf2\atť~,%"n c2 VQuXn\>KV[B~~^w޳&@az3B3+x `#j4zVv-ډa`k tT[i>x w@Š~H8n9Q*i(7p8&"gLFX//5:"QFDVOg2ae HᲟ[kQ?v=jHm¨ߢBCua n !R>O̤{DA;F3/ 9[aQ>XcLF`fH<`ܔTmG@Q/u#%h_\IwΣ Bv*!_&IG  |N"]~$,D'~Hj@կb-,0A!Fr<Zw<VŻ4ԱsTƯkVP׮OeK'w` _uU{Y~HoԐ_Ɂ綬<\׮lNsz]ng.rϱ§RnFŠ:r:9:6 `9-+G({dcSpXpZaap83Gw7+ 岘RZKn``$#,21ujA\w6ǘJ;|JD-s[R)PyE4?{%^= bH ֣ܖBh (EIwb|TCB78zy~ib49g z"b滛%# ,]ABC Yk^8++v$CB #u(<~jZ\5C,? VUҸ%# n v(hH#qQV"^by  EO0rIufgEpT P@eQqWeq{vX3S бrUJ n a%[-' 䔯R"k2vQ@G\K{Pȝ U[~U#-+Dh'HX`8bD(9,{G ܺ<넩9g vA+B,0jhFBPSx%J oL*fT5eh44ΐüŬ![Dp+ʸޞ$>:h|ݕS8 Sirպ/-4tȝeujj` ZczۢJn aϴӺ1:Ί\8)8|=$$N>&P%IVëGC"L vLzaMȹ+NE❀XGa4mX];4rԹ́BC;k_X>(`<pm()ÂCa7<~^2w,- Vl+ă(~QvہE p;YePauV +oJ滼rOřy 1_P ] ܢaDž?ǂR\.z`y9²Q:@ IvlX+h6,<."qX./b֖ڪSi`E= :1; ᠗Sr,*:aumc &ammBWnj+H`ݔ]QXjW ~5&xFa@h!JK{b; ZlwP_o ڸC!xh!NR XGfASI -nniO5,ܧ/JH(N]-n ew4z^?@7@=^9Ja"P ~iYaA)WV,Dތyr *M;Ϗ N 'N1CD77/O8?yUѰCWUq~ Zh!N/LD,,d2PT!|V8=t6ɧe_JrX׸prWp26.M<(lC GؖKJohN~Crz+*]0a@qVN yA0zu2>[&R$$d/N:- t< \8HwB2F%J h."r(8\ N*󪫢pϋc0Y|Dj壪 Eώ݉.KGQfw@WrpU%%rV/BC!T,& @\V$KᲺLxhRA(plpbi9p4a*i\"V)neCA|U*pQ ǧNCqJ%\Dj#p Z V^eQ\!%ҡ!~9X¹fK]ɷ*h؄Ij\.R MpST(DWWF` x5d*x-eB{oK2b  C's'8H'*p½9jXN_,tem<`^(% zXoi>|]\@WDpN'rc%A  |[sY0 4(p DAcߠ\~& &D,HT~"H%D,H$D"H$ D"K$X"H$D,H$`D"K$ D"H%D,H$D"H$ D"K$X"H/n`jIENDB`knapsack-4.0.0/spec_engine_examples/0000755000004100000410000000000014106361602017512 5ustar www-datawww-dataknapsack-4.0.0/spec_engine_examples/1_spec.rb0000644000004100000410000000004314106361602021206 0ustar www-datawww-datadescribe 'Engine 1' do it {} end knapsack-4.0.0/.rspec0000644000004100000410000000011414106361602014446 0ustar www-datawww-data--color #--warnings --require spec_helper --format documentation #--profile knapsack-4.0.0/README.md0000644000004100000410000000535514106361602014624 0ustar www-datawww-data# knapsack gem Knapsack splits tests evenly across parallel CI nodes to run fast CI build and save you time. | | knapsack gem | knapsack_pro gem | | -------------------------------------------- | ------------ | ---------------- | | __Is free__ | ✓ Yes | ✓ Yes, [free plan](https://knapsackpro.com?utm_source=github&utm_medium=readme&utm_campaign=knapsack_gem&utm_content=free_plan) | | __Regular Mode - a static tests split__ | ✓ Yes | ✓ Yes | | __Queue Mode - a dynamic tests split__
([ensures all CI nodes finish work at the same time](https://docs.knapsackpro.com/2020/how-to-speed-up-ruby-and-javascript-tests-with-ci-parallelisation)) | No | ✓ Yes | | __Auto [split slow RSpec test file](https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it) between parallel CI nodes__
(a single test file can be auto split by test examples between parallel jobs) | No | ✓ Yes | | Tracking tests timing per commit, branch | No | ✓ Yes | | Support for other programming languages | No | ✓ Yes | | Support for CI providers | limited | ✓ Yes | | __Installation README__ | [Install README](http://docs.knapsackpro.com/ruby/knapsack) | [Install README](https://docs.knapsackpro.com/integration/) | [Features of knapsack vs knapsack_pro Ruby gem](https://knapsackpro.com/features/ruby_knapsack_pro_vs_knapsack?utm_source=github&utm_medium=readme&utm_campaign=knapsack_gem&utm_content=ruby_knapsack_pro_vs_knapsack) # Do you use Heroku? Do you know Knapsack Pro Ruby gem is available as Heroku add-on that's currently in beta and it's free to all beta users? It works with your current CI server. https://elements.heroku.com/addons/knapsack-pro Knapsack Pro has Queue Mode that will split Ruby & JS tests in a dynamic way across parallel CI nodes to ensure each parallel job takes a similar time. Thanks to that there is no bottleneck in your CI pipelines. __See introduction how the Knapsack Pro add-on works__ https://youtu.be/rmXES2N0_QU You may also find useful article how to run parallel dynos on Heroku CI to complete tests faster https://docs.knapsackpro.com/2019/how-to-run-tests-faster-on-heroku-ci-with-parallel-dynos ## Do you know * Knapsack Pro is risk-free integration! Knapsack Pro runs tests in Fallback Mode if your CI servers can't reach our API for any reason. * We don't need access to your repository. Knapsack Pro is just wrapper around test runner like RSpec, Cucumber, Minitest etc. * Hundreds of developers use Knapsack Pro every day to run fast CI builds. * It works with other programming languages. knapsack-4.0.0/knapsack.gemspec0000644000004100000410000000271214106361602016477 0ustar www-datawww-data# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'knapsack/version' Gem::Specification.new do |spec| spec.name = "knapsack" spec.version = Knapsack::VERSION spec.authors = ["ArturT"] spec.email = ["arturtrzop@gmail.com"] spec.summary = %q{Knapsack splits tests across CI nodes and makes sure that tests will run comparable time on each node.} spec.description = %q{Parallel tests across CI server nodes based on each test file's time execution. It generates a test time execution report and uses it for future test runs.} spec.homepage = "https://github.com/KnapsackPro/knapsack" spec.license = "MIT" spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] spec.required_ruby_version = '>= 2.2' spec.add_dependency 'rake', '>= 0' spec.add_development_dependency 'bundler', '>= 1.6' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'rspec-its', '~> 1.3' spec.add_development_dependency 'cucumber', '>= 0' spec.add_development_dependency 'spinach', '>= 0.8' spec.add_development_dependency 'minitest', '>= 5.0.0' spec.add_development_dependency 'pry', '~> 0' spec.add_development_dependency 'timecop', '>= 0.9.4' end knapsack-4.0.0/bin/0000755000004100000410000000000014106361602014105 5ustar www-datawww-dataknapsack-4.0.0/bin/knapsack0000755000004100000410000000100114106361602015616 0ustar www-datawww-data#!/usr/bin/env ruby require_relative '../lib/knapsack' runner = ARGV[0] arguments = ARGV[1] MAP = { 'rspec' => Knapsack::Runners::RSpecRunner, 'cucumber' => Knapsack::Runners::CucumberRunner, 'minitest' => Knapsack::Runners::MinitestRunner, 'spinach' => Knapsack::Runners::SpinachRunner, } runner_class = MAP[runner] if runner_class runner_class.run(arguments) else raise 'Undefined runner. Please provide runner name and optional arguments, for instance: knapsack rspec "--color --profile"' end knapsack-4.0.0/spec/0000755000004100000410000000000014106361602014267 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack_spec.rb0000644000004100000410000000265014106361602017424 0ustar www-datawww-datadescribe Knapsack do describe '.tracker' do subject { described_class.tracker } it { should be_a Knapsack::Tracker } it { expect(subject.object_id).to eql described_class.tracker.object_id } end describe '.report' do subject { described_class.report } it { should be_a Knapsack::Report } it { expect(subject.object_id).to eql described_class.report.object_id } end describe '.root' do subject { described_class.root } it { expect(subject).to match 'knapsack' } end describe '.load_tasks' do let(:task_loader) { instance_double(Knapsack::TaskLoader) } it do expect(Knapsack::TaskLoader).to receive(:new).and_return(task_loader) expect(task_loader).to receive(:load_tasks) described_class.load_tasks end end describe '.logger' do subject { described_class.logger } before { described_class.logger = nil } after { described_class.logger = nil } context 'when default logger' do let(:logger) { instance_double(Knapsack::Logger) } before do expect(Knapsack::Logger).to receive(:new).and_return(logger) expect(logger).to receive(:level=).with(Knapsack::Logger::INFO) end it { should eql logger } end context 'when custom logger' do let(:logger) { double('custom logger') } before do described_class.logger = logger end it { should eql logger } end end end knapsack-4.0.0/spec/spec_helper.rb0000644000004100000410000000127014106361602017105 0ustar www-datawww-datarequire 'rspec/its' require 'spinach' require 'timecop' Timecop.safe_mode = true require 'knapsack' Dir["#{Knapsack.root}/spec/support/**/*.rb"].each { |f| require f } RSpec.configure do |config| config.order = :random config.mock_with :rspec do |mocks| mocks.syntax = :expect mocks.verify_partial_doubles = true end config.expect_with :rspec do |c| c.syntax = :expect end config.before(:each) do if RSpec.current_example.metadata[:clear_tmp] FileUtils.mkdir_p(File.join(Knapsack.root, 'tmp')) end end config.after(:each) do if RSpec.current_example.metadata[:clear_tmp] FileUtils.rm_r(File.join(Knapsack.root, 'tmp')) end end end knapsack-4.0.0/spec/knapsack/0000755000004100000410000000000014106361602016062 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack/task_loader_spec.rb0000644000004100000410000000135714106361602021717 0ustar www-datawww-datadescribe Knapsack::TaskLoader do describe '#load_tasks' do let(:rspec_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_rspec.rake" } let(:cucumber_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_cucumber.rake" } let(:spinach_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_spinach.rake" } let(:minitest_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_minitest.rake" } it do expect(subject).to receive(:import).with(rspec_rake_task_path) expect(subject).to receive(:import).with(cucumber_rake_task_path) expect(subject).to receive(:import).with(spinach_rake_task_path) expect(subject).to receive(:import).with(minitest_rake_task_path) subject.load_tasks end end end knapsack-4.0.0/spec/knapsack/adapters/0000755000004100000410000000000014106361602017665 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack/adapters/rspec_adapter_spec.rb0000644000004100000410000001033114106361602024036 0ustar www-datawww-datadescribe Knapsack::Adapters::RSpecAdapter do context do before { expect(::RSpec).to receive(:configure) } it_behaves_like 'adapter' end describe 'bind methods' do let(:config) { double } let(:logger) { instance_double(Knapsack::Logger) } before do expect(Knapsack).to receive(:logger).and_return(logger) end describe '#bind_time_tracker' do let(:tracker) { instance_double(Knapsack::Tracker) } let(:test_path) { 'spec/a_spec.rb' } let(:global_time) { 'Global time: 01m 05s' } let(:current_example) { double } it do expect(config).to receive(:prepend_before).with(:context).and_yield expect(config).to receive(:prepend_before).with(:each).and_yield(current_example) expect(config).to receive(:append_after).with(:context).and_yield expect(config).to receive(:after).with(:suite).and_yield expect(::RSpec).to receive(:configure).and_yield(config) expect(described_class).to receive(:test_path).with(current_example).and_return(test_path) allow(Knapsack).to receive(:tracker).and_return(tracker) expect(tracker).to receive(:start_timer).ordered expect(tracker).to receive(:test_path=).with(test_path).ordered expect(tracker).to receive(:stop_timer).ordered expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time) expect(logger).to receive(:info).with(global_time) subject.bind_time_tracker end end describe '#bind_report_generator' do let(:report) { instance_double(Knapsack::Report) } let(:report_details) { 'Report details' } it do expect(config).to receive(:after).with(:suite).and_yield expect(::RSpec).to receive(:configure).and_yield(config) expect(Knapsack).to receive(:report).and_return(report) expect(report).to receive(:save) expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details) expect(logger).to receive(:info).with(report_details) subject.bind_report_generator end end describe '#bind_time_offset_warning' do let(:time_offset_warning) { 'Time offset warning' } let(:log_level) { :info } it 'creates a post-suite callback to log the time offset message at the specified log level' do expect(config).to receive(:after).with(:suite).and_yield expect(::RSpec).to receive(:configure).and_yield(config) expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning) expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level) expect(logger).to receive(:log).with(log_level, time_offset_warning) subject.bind_time_offset_warning end end end describe '.test_path' do let(:example_group) do { file_path: '1_shared_example.rb', parent_example_group: { file_path: '2_shared_example.rb', parent_example_group: { file_path: 'a_spec.rb' } } } end let(:current_example) do OpenStruct.new(metadata: { example_group: example_group }) end subject { described_class.test_path(current_example) } it { should eql 'a_spec.rb' } context 'with turnip features' do describe 'when the turnip version is less than 2' do let(:example_group) do { file_path: "./spec/features/logging_in.feature", turnip: true, parent_example_group: { file_path: "gems/turnip-1.2.4/lib/turnip/rspec.rb" } } end before { stub_const("Turnip::VERSION", '1.2.4') } it { should eql './spec/features/logging_in.feature' } end describe 'when turnip is version 2 or greater' do let(:example_group) do { file_path: "gems/turnip-2.0.0/lib/turnip/rspec.rb", turnip: true, parent_example_group: { file_path: "./spec/features/logging_in.feature", } } end before { stub_const("Turnip::VERSION", '2.0.0') } it { should eql './spec/features/logging_in.feature' } end end end end knapsack-4.0.0/spec/knapsack/adapters/base_adapter_spec.rb0000644000004100000410000000434414106361602023643 0ustar www-datawww-datadescribe Knapsack::Adapters::BaseAdapter do describe '.bind' do let(:adapter) { instance_double(described_class) } subject { described_class.bind } before do expect(described_class).to receive(:new).and_return(adapter) expect(adapter).to receive(:bind) end it { should eql adapter } end describe '#bind' do let(:tracker) { instance_double(Knapsack::Tracker) } before do allow(subject).to receive(:tracker).and_return(tracker) end context 'when generate report' do before do expect(tracker).to receive(:config).and_return({ generate_report: true }) end it do expect(subject).to receive(:bind_time_tracker) expect(subject).to receive(:bind_report_generator) expect(subject).not_to receive(:bind_time_offset_warning) subject.bind end end context 'when enable time offset warning' do before do expect(tracker).to receive(:config).twice.and_return({ generate_report: false, enable_time_offset_warning: true }) end it do expect(subject).to receive(:bind_time_tracker) expect(subject).to receive(:bind_time_offset_warning) expect(subject).not_to receive(:bind_report_generator) subject.bind end end context 'when adapter is off' do before do expect(tracker).to receive(:config).twice.and_return({ generate_report: false, enable_time_offset_warning: false }) end it do expect(subject).not_to receive(:bind_time_tracker) expect(subject).not_to receive(:bind_report_generator) expect(subject).not_to receive(:bind_time_offset_warning) subject.bind end end end describe '#bind_time_tracker' do it do expect { subject.bind_time_tracker }.to raise_error(NotImplementedError) end end describe '#bind_report_generator' do it do expect { subject.bind_report_generator }.to raise_error(NotImplementedError) end end describe '#bind_time_offset_warning' do it do expect { subject.bind_time_offset_warning }.to raise_error(NotImplementedError) end end end knapsack-4.0.0/spec/knapsack/adapters/minitest_adapter_spec.rb0000644000004100000410000001026014106361602024557 0ustar www-datawww-datamodule FakeMinitest class Test < ::Minitest::Test include Knapsack::Adapters::MinitestAdapter::BindTimeTrackerMinitestPlugin end end describe Knapsack::Adapters::MinitestAdapter do describe 'BindTimeTrackerMinitestPlugin' do let(:tracker) { instance_double(Knapsack::Tracker) } subject { ::FakeMinitest::Test.new } before do allow(Knapsack).to receive(:tracker).and_return(tracker) end describe '#before_setup' do let(:file) { 'test/models/user_test.rb' } it do expect(described_class).to receive(:test_path).with(subject).and_return(file) expect(tracker).to receive(:test_path=).with(file) expect(tracker).to receive(:start_timer) subject.before_setup end end describe '#after_teardown' do it do expect(tracker).to receive(:stop_timer) subject.after_teardown end end end describe 'bind methods' do let(:logger) { instance_double(Knapsack::Logger) } let(:global_time) { 'Global time: 01m 05s' } before do expect(Knapsack).to receive(:logger).and_return(logger) end describe '#bind_time_tracker' do it do expect(::Minitest::Test).to receive(:send).with(:include, Knapsack::Adapters::MinitestAdapter::BindTimeTrackerMinitestPlugin) expect(::Minitest).to receive(:after_run).and_yield expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time) expect(logger).to receive(:info).with(global_time) subject.bind_time_tracker end end describe '#bind_report_generator' do let(:report) { instance_double(Knapsack::Report) } let(:report_details) { 'Report details' } it do expect(::Minitest).to receive(:after_run).and_yield expect(Knapsack).to receive(:report).and_return(report) expect(report).to receive(:save) expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details) expect(logger).to receive(:info).with(report_details) subject.bind_report_generator end end describe '#bind_time_offset_warning' do let(:time_offset_warning) { 'Time offset warning' } let(:log_level) { :info } it 'creates a post-run callback to log the time offset message at the specified log level' do expect(::Minitest).to receive(:after_run).and_yield expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning) expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level) expect(logger).to receive(:log).with(log_level, time_offset_warning) subject.bind_time_offset_warning end end end describe '#set_test_helper_path' do let(:adapter) { described_class.new } let(:test_helper_path) { '/code/project/test/test_helper.rb' } subject { adapter.set_test_helper_path(test_helper_path) } after do expect(described_class.class_variable_get(:@@parent_of_test_dir)).to eq '/code/project' end it { should eql '/code/project' } end describe '.test_path' do subject { described_class.test_path(obj) } before do parent_of_test_dir = File.expand_path('../../../', File.dirname(__FILE__)) parent_of_test_dir_regexp = Regexp.new("^#{parent_of_test_dir}") described_class.class_variable_set(:@@parent_of_test_dir, parent_of_test_dir_regexp) end context 'when regular test' do class FakeUserTest def test_user_age; end # method provided by Minitest # it returns test method name def name :test_user_age end end let(:obj) { FakeUserTest.new } it { should eq './spec/knapsack/adapters/minitest_adapter_spec.rb' } end context 'when shared examples test' do module FakeSharedExamples def test_from_shared_example; end end class FakeSharedExamplesUserTest include FakeSharedExamples def location "test that use FakeSharedExamples#test_from_shared_example" end end let(:obj) { FakeSharedExamplesUserTest.new } it { should eq './spec/knapsack/adapters/minitest_adapter_spec.rb' } end end end knapsack-4.0.0/spec/knapsack/adapters/cucumber_adapter_spec.rb0000644000004100000410000001330014106361602024526 0ustar www-datawww-datadescribe Knapsack::Adapters::CucumberAdapter do context do context 'when Cucumber version 1' do before do stub_const('Cucumber::VERSION', '1.3.20') allow(::Cucumber::RbSupport::RbDsl).to receive(:register_rb_hook) allow(Kernel).to receive(:at_exit) end it_behaves_like 'adapter' end context 'when Cucumber version 2' do before do stub_const('Cucumber::VERSION', '2') allow(::Cucumber::RbSupport::RbDsl).to receive(:register_rb_hook) allow(Kernel).to receive(:at_exit) end it_behaves_like 'adapter' end context 'when Cucumber version 3' do before do stub_const('Cucumber::VERSION', '3.0.0') allow(::Cucumber::Glue::Dsl).to receive(:register_rb_hook) allow(Kernel).to receive(:at_exit) end it_behaves_like 'adapter' end end describe 'bind methods' do let(:logger) { instance_double(Knapsack::Logger) } before do allow(Knapsack).to receive(:logger).and_return(logger) end describe '#bind_time_tracker' do let(:file) { 'features/a.feature' } let(:block) { double } let(:global_time) { 'Global time: 01m 05s' } let(:tracker) { instance_double(Knapsack::Tracker) } context 'when Cucumber version 1' do let(:scenario) { double(file: file) } before { stub_const('Cucumber::VERSION', '1.3.20') } it do expect(subject).to receive(:Around).and_yield(scenario, block) allow(Knapsack).to receive(:tracker).and_return(tracker) expect(tracker).to receive(:test_path=).with(file) expect(tracker).to receive(:start_timer) expect(block).to receive(:call) expect(tracker).to receive(:stop_timer) expect(::Kernel).to receive(:at_exit).and_yield expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time) expect(logger).to receive(:info).with(global_time) subject.bind_time_tracker end end context 'when Cucumber version 2' do let(:test_case) { double(location: double(file: file)) } # complex version name to ensure we can catch that too before { stub_const('Cucumber::VERSION', '2.0.0.rc.5') } it do expect(subject).to receive(:Around).and_yield(test_case, block) allow(Knapsack).to receive(:tracker).and_return(tracker) expect(tracker).to receive(:test_path=).with(file) expect(tracker).to receive(:start_timer) expect(block).to receive(:call) expect(tracker).to receive(:stop_timer) expect(::Kernel).to receive(:at_exit).and_yield expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time) expect(logger).to receive(:info).with(global_time) subject.bind_time_tracker end end end describe '#bind_report_generator' do let(:report) { instance_double(Knapsack::Report) } let(:report_details) { 'Report details' } it do expect(::Kernel).to receive(:at_exit).and_yield expect(Knapsack).to receive(:report).and_return(report) expect(report).to receive(:save) expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details) expect(logger).to receive(:info).with(report_details) subject.bind_report_generator end end describe '#bind_time_offset_warning' do let(:time_offset_warning) { 'Time offset warning' } let(:log_level) { :info } it 'creates an at-exit callback to log the time offset message at the specified log level' do expect(::Kernel).to receive(:at_exit).and_yield expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning) expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level) expect(logger).to receive(:log).with(log_level, time_offset_warning) subject.bind_time_offset_warning end end end describe '.test_path' do context 'when Cucumber version 1' do subject { described_class.test_path(scenario_or_outline_table) } before { stub_const('Cucumber::VERSION', '1') } context 'when cucumber >= 1.3' do context 'when scenario' do let(:scenario_file) { 'features/scenario.feature' } let(:scenario_or_outline_table) { double(file: scenario_file) } it { should eql scenario_file } end context 'when scenario outline' do let(:scenario_outline_file) { 'features/scenario_outline.feature' } let(:scenario_or_outline_table) do double(scenario_outline: double(file: scenario_outline_file)) end it { should eql scenario_outline_file } end end context 'when cucumber < 1.3' do context 'when scenario' do let(:scenario_file) { 'features/scenario.feature' } let(:scenario_or_outline_table) { double(feature: double(file: scenario_file)) } it { should eql scenario_file } end context 'when scenario outline' do let(:scenario_outline_file) { 'features/scenario_outline.feature' } let(:scenario_or_outline_table) do double(scenario_outline: double(feature: double(file: scenario_outline_file))) end it { should eql scenario_outline_file } end end end context 'when Cucumber version 2' do let(:file) { 'features/a.feature' } let(:test_case) { double(location: double(file: file)) } # Cucumber 2 subject { described_class.test_path(test_case) } before { stub_const('Cucumber::VERSION', '2') } it { should eql file } end end end knapsack-4.0.0/spec/knapsack/adapters/spinach_adapter_spec.rb0000644000004100000410000000512514106361602024354 0ustar www-datawww-datadescribe Knapsack::Adapters::SpinachAdapter do context do it_behaves_like 'adapter' end describe 'bind methods' do let(:config) { double } let(:logger) { instance_double(Knapsack::Logger) } before do expect(Knapsack).to receive(:logger).and_return(logger) end describe '#bind_time_tracker' do let(:tracker) { instance_double(Knapsack::Tracker) } let(:global_time) { 'Global time: 01m 05s' } let(:test_path) { 'features/a.feature' } let(:scenario_data) do double(feature: double(filename: test_path)) end it do allow(Knapsack).to receive(:tracker).and_return(tracker) expect(Spinach.hooks).to receive(:before_scenario).and_yield(scenario_data, nil) expect(described_class).to receive(:test_path).with(scenario_data).and_return(test_path) expect(tracker).to receive(:test_path=).with(test_path) expect(tracker).to receive(:start_timer) expect(Spinach.hooks).to receive(:after_scenario).and_yield expect(tracker).to receive(:stop_timer) expect(Spinach.hooks).to receive(:after_run).and_yield expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time) expect(logger).to receive(:info).with(global_time) subject.bind_time_tracker end end describe '#bind_report_generator' do let(:report) { instance_double(Knapsack::Report) } let(:report_details) { 'Report details' } it do expect(Spinach.hooks).to receive(:after_run).and_yield expect(Knapsack).to receive(:report).and_return(report) expect(report).to receive(:save) expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details) expect(logger).to receive(:info).with(report_details) subject.bind_report_generator end end describe '#bind_time_offset_warning' do let(:time_offset_warning) { 'Time offset warning' } let(:log_level) { :info } it do expect(Spinach.hooks).to receive(:after_run).and_yield expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning) expect(Knapsack::Presenter).to receive(:time_offset_log_level).and_return(log_level) expect(logger).to receive(:log).with(log_level, time_offset_warning) subject.bind_time_offset_warning end end end describe '.test_path' do let(:scenario_data) do double(feature: double(filename: 'a.feature')) end subject { described_class.test_path(scenario_data) } it { should eql 'a.feature' } end end knapsack-4.0.0/spec/knapsack/distributors/0000755000004100000410000000000014106361602020617 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack/distributors/report_distributor_spec.rb0000644000004100000410000001351414106361602026127 0ustar www-datawww-datadescribe Knapsack::Distributors::ReportDistributor do let(:report) { { 'a_spec.rb' => 1.0 } } let(:default_args) do { report: report, test_file_pattern: 'spec/**{,/*/**}/*_spec.rb', ci_node_total: '1', ci_node_index: '0' } end let(:args) { default_args.merge(custom_args) } let(:custom_args) { {} } let(:distributor) { described_class.new(args) } describe '#sorted_report' do subject { distributor.sorted_report } let(:report) do { 'e_spec.rb' => 3.0, 'f_spec.rb' => 3.5, 'c_spec.rb' => 2.0, 'd_spec.rb' => 2.5, 'a_spec.rb' => 1.0, 'b_spec.rb' => 1.5, } end it do should eql([ ['f_spec.rb', 3.5], ['e_spec.rb', 3.0], ['d_spec.rb', 2.5], ['c_spec.rb', 2.0], ['b_spec.rb', 1.5], ['a_spec.rb', 1.0], ]) end end describe '#sorted_report_with_existing_tests' do subject { distributor.sorted_report_with_existing_tests } let(:report) do { 'e_spec.rb' => 3.0, 'f_spec.rb' => 3.5, 'c_spec.rb' => 2.0, 'd_spec.rb' => 2.5, 'a_spec.rb' => 1.0, 'b_spec.rb' => 1.5, } end before do expect(distributor).to receive(:all_tests).exactly(6).times.and_return([ 'b_spec.rb', 'd_spec.rb', 'f_spec.rb', ]) end it do should eql([ ['f_spec.rb', 3.5], ['d_spec.rb', 2.5], ['b_spec.rb', 1.5], ]) end end context do let(:report) do { 'a_spec.rb' => 3.0, 'b_spec.rb' => 1.0, 'c_spec.rb' => 1.5, } end before do allow(distributor).to receive(:all_tests).and_return(report.keys) end describe '#total_time_execution' do subject { distributor.total_time_execution } context 'when time is float' do it { should eql 5.5 } end context 'when time is not float' do let(:report) do { 'a_spec.rb' => 3, 'b_spec.rb' => 1, } end it { should eql 4.0 } end end describe '#node_time_execution' do subject { distributor.node_time_execution } let(:custom_args) { { ci_node_total: 4 } } it { should eql 1.375 } end end context do let(:report) do { 'g_spec.rb' => 9.0, 'h_spec.rb' => 3.0, 'i_spec.rb' => 3.0, 'f_spec.rb' => 3.5, 'c_spec.rb' => 2.0, 'd_spec.rb' => 2.5, 'a_spec.rb' => 1.0, 'b_spec.rb' => 1.5 } end let(:custom_args) { { ci_node_total: 3 } } before do allow(distributor).to receive(:all_tests).and_return(report.keys) end describe '#assign_test_files_to_node' do before { distributor.assign_test_files_to_node } it do expect(distributor.node_tests[0]).to eql({ :node_index => 0, :time_left => -0.5, :weight => 9.0, :test_files_with_time => [ ["g_spec.rb", 9.0] ] }) end it do expect(distributor.node_tests[1]).to eql({ :node_index => 1, :time_left => 0.5, :weight => 8.0, :test_files_with_time => [ ["f_spec.rb", 3.5], ["d_spec.rb", 2.5], ["c_spec.rb", 2.0] ] }) end it do expect(distributor.node_tests[2]).to eql({ :node_index => 2, :time_left => 0.0, :weight => 8.5, :test_files_with_time => [ ["h_spec.rb", 3.0], ["i_spec.rb", 3.0], ["b_spec.rb", 1.5], ["a_spec.rb", 1.0] ] }) end end describe '#tests_for_node' do context 'when node exists' do it do expect(distributor.tests_for_node(1)).to eql([ "f_spec.rb", "d_spec.rb", "c_spec.rb" ]) end end context "when node doesn't exist" do it { expect(distributor.tests_for_node(42)).to be_nil } end end end describe 'algorithmic efficiency' do subject(:node_weights) do distro = distributor distro.assign_test_files_to_node distro.node_tests.map { |node| node[:weight] } end before do allow(distributor).to receive(:all_tests).and_return(report.keys) end let(:custom_args) { { ci_node_total: 3 } } context 'with the most simple example' do let(:report) do { 'a_spec.rb' => 1.0, 'b_spec.rb' => 1.0, 'c_spec.rb' => 1.0, 'd_spec.rb' => 1.0, 'e_spec.rb' => 1.0, 'f_spec.rb' => 1.0, 'g_spec.rb' => 1.0, 'h_spec.rb' => 1.0, 'i_spec.rb' => 1.0 } end it 'assigns all nodes equally' do expect(node_weights.uniq).to contain_exactly 3.0 end end context 'with a medium difficulty example' do let(:report) do { 'a_spec.rb' => 1.0, 'b_spec.rb' => 2.0, 'c_spec.rb' => 3.0, 'd_spec.rb' => 1.0, 'e_spec.rb' => 2.0, 'f_spec.rb' => 3.0, 'g_spec.rb' => 1.0, 'h_spec.rb' => 2.0, 'i_spec.rb' => 3.0 } end it 'assigns all nodes equally' do expect(node_weights.uniq).to contain_exactly 6.0 end end context 'with a difficult example' do let(:report) do { 'a_spec.rb' => 2.0, 'b_spec.rb' => 2.0, 'c_spec.rb' => 3.0, 'd_spec.rb' => 1.0, 'e_spec.rb' => 1.0, 'f_spec.rb' => 1.0, 'g_spec.rb' => 9.0, 'h_spec.rb' => 1.0, 'i_spec.rb' => 10.0 } end it 'assigns all nodes equally' do expect(node_weights.uniq).to contain_exactly 10.0 end end end end knapsack-4.0.0/spec/knapsack/distributors/leftover_distributor_spec.rb0000644000004100000410000000634514106361602026446 0ustar www-datawww-datadescribe Knapsack::Distributors::LeftoverDistributor do let(:report) do { 'a_spec.rb' => 1.0, 'b_spec.rb' => 1.5, 'c_spec.rb' => 2.0, 'd_spec.rb' => 2.5, } end let(:test_file_pattern) { 'spec/**{,/*/**}/*_spec.rb' } let(:default_args) do { report: report, test_file_pattern: test_file_pattern, ci_node_total: '1', ci_node_index: '0' } end let(:args) { default_args.merge(custom_args) } let(:custom_args) { {} } let(:distributor) { described_class.new(args) } describe '#report_tests' do subject { distributor.report_tests } it { should eql ['a_spec.rb', 'b_spec.rb', 'c_spec.rb', 'd_spec.rb'] } end describe '#all_tests' do subject { distributor.all_tests } context 'when given test_file_pattern' do context 'spec/**{,/*/**}/*_spec.rb' do it { should_not be_empty } it { should include 'spec/knapsack/tracker_spec.rb' } it { should include 'spec/knapsack/adapters/rspec_adapter_spec.rb' } it 'has no duplicated test file paths' do expect(subject.size).to eq subject.uniq.size end end context 'spec_examples/**{,/*/**}/*_spec.rb' do let(:test_file_pattern) { 'spec_examples/**{,/*/**}/*_spec.rb' } it { should_not be_empty } it { should include 'spec_examples/fast/1_spec.rb' } it { should include 'spec_examples/leftover/a_spec.rb' } it 'has no duplicated test file paths' do expect(subject.size).to eq subject.uniq.size end end end context 'when fake test_file_pattern' do let(:test_file_pattern) { 'fake_pattern' } it { should be_empty } end context 'when missing test_file_pattern' do let(:test_file_pattern) { nil } it { expect { subject }.to raise_error('Missing test_file_pattern') } end end describe '#leftover_tests' do subject { distributor.leftover_tests } before do expect(distributor).to receive(:all_tests).and_return([ 'a_spec.rb', 'b_spec.rb', 'c_spec.rb', 'd_spec.rb', 'e_spec.rb', 'f_spec.rb', ]) end it { should eql ['e_spec.rb', 'f_spec.rb'] } end context do let(:custom_args) { { ci_node_total: 3 } } let(:leftover_tests) {[ 'a_spec.rb', 'b_spec.rb', 'c_spec.rb', 'd_spec.rb', 'e_spec.rb', 'f_spec.rb', 'g_spec.rb', ]} before do expect(distributor).to receive(:leftover_tests).and_return(leftover_tests) end describe '#assign_test_files_to_node' do before do distributor.assign_test_files_to_node end it do expect(distributor.node_tests[0]).to eql([ 'a_spec.rb', 'd_spec.rb', 'g_spec.rb', ]) end it do expect(distributor.node_tests[1]).to eql([ 'b_spec.rb', 'e_spec.rb', ]) end it do expect(distributor.node_tests[2]).to eql([ 'c_spec.rb', 'f_spec.rb', ]) end end describe '#tests_for_node' do it do expect(distributor.tests_for_node(1)).to eql([ 'b_spec.rb', 'e_spec.rb', ]) end end end end knapsack-4.0.0/spec/knapsack/distributors/base_distributor_spec.rb0000644000004100000410000000461714106361602025532 0ustar www-datawww-datadescribe Knapsack::Distributors::BaseDistributor do let(:report) { { 'a_spec.rb' => 1.0 } } let(:default_args) do { report: report, test_file_pattern: 'spec/**{,/*/**}/*_spec.rb', ci_node_total: '1', ci_node_index: '0' } end let(:args) { default_args.merge(custom_args) } let(:custom_args) { {} } let(:distributor) { described_class.new(args) } describe '#report' do subject { distributor.report } context 'when report is given' do it { should eql(report) } end context 'when report is not given' do let(:custom_args) { { report: nil } } it { expect { subject }.to raise_error('Missing report') } end end describe '#ci_node_total' do subject { distributor.ci_node_total } context 'when ci_node_total is given' do it { should eql 1 } end context 'when ci_node_total is not given' do let(:custom_args) { { ci_node_total: nil } } it { expect { subject }.to raise_error('Missing ci_node_total') } end end describe '#ci_node_index' do subject { distributor.ci_node_index } context 'when ci_node_index is given' do it { should eql 0 } end context 'when ci_node_index is not given' do let(:custom_args) { { ci_node_index: nil } } it { expect { subject }.to raise_error('Missing ci_node_index') } end context 'when ci_node_index has not allowed value' do let(:expected_exception_message) do "Node indexes are 0-based. Can't be higher or equal to the total number of nodes." end context 'when ci_node_index is equal to ci_node_total' do let(:custom_args) { { ci_node_index: 1, ci_node_total: 1 } } it { expect { subject }.to raise_error(expected_exception_message) } end context 'when ci_node_index is higher than ci_node_total' do let(:custom_args) { { ci_node_index: 2, ci_node_total: 1 } } it { expect { subject }.to raise_error(expected_exception_message) } end end end describe '#tests_for_current_node' do let(:custom_args) do { ci_node_total: 3, ci_node_index: ci_node_index } end let(:ci_node_index) { 2 } let(:tests) { double } subject { distributor.tests_for_current_node } before do expect(distributor).to receive(:tests_for_node).with(ci_node_index).and_return(tests) end it { should eql tests } end end knapsack-4.0.0/spec/knapsack/allocator_spec.rb0000644000004100000410000000414614106361602021406 0ustar www-datawww-datadescribe Knapsack::Allocator do let(:test_file_pattern) { nil } let(:args) do { ci_node_total: nil, ci_node_index: nil, test_file_pattern: test_file_pattern, report: nil } end let(:report_distributor) { instance_double(Knapsack::Distributors::ReportDistributor) } let(:leftover_distributor) { instance_double(Knapsack::Distributors::LeftoverDistributor) } let(:report_tests) { ['a_spec.rb', 'b_spec.rb'] } let(:leftover_tests) { ['c_spec.rb', 'd_spec.rb'] } let(:node_tests) { report_tests + leftover_tests } let(:allocator) { described_class.new(args) } before do expect(Knapsack::Distributors::ReportDistributor).to receive(:new).with(args).and_return(report_distributor) expect(Knapsack::Distributors::LeftoverDistributor).to receive(:new).with(args).and_return(leftover_distributor) allow(report_distributor).to receive(:tests_for_current_node).and_return(report_tests) allow(leftover_distributor).to receive(:tests_for_current_node).and_return(leftover_tests) end describe '#report_node_tests' do subject { allocator.report_node_tests } it { should eql report_tests } end describe '#leftover_node_tests' do subject { allocator.leftover_node_tests } it { should eql leftover_tests } end describe '#node_tests' do subject { allocator.node_tests } it { should eql node_tests } end describe '#stringify_node_tests' do subject { allocator.stringify_node_tests } it { should eql %{"a_spec.rb" "b_spec.rb" "c_spec.rb" "d_spec.rb"} } end describe '#test_dir' do subject { allocator.test_dir } context 'when ENV test_dir has value' do let(:test_dir) { "custom_dir" } before do expect(Knapsack::Config::Env).to receive(:test_dir).and_return(test_dir) end it { should eql 'custom_dir' } end context 'when ENV test_dir has no value' do let(:test_file_pattern) { "test_dir/**{,/*/**}/*_spec.rb" } before do expect(report_distributor).to receive(:test_file_pattern).and_return(test_file_pattern) end it { should eql 'test_dir' } end end end knapsack-4.0.0/spec/knapsack/allocator_builder_spec.rb0000644000004100000410000000766714106361602023127 0ustar www-datawww-datadescribe Knapsack::AllocatorBuilder do let(:allocator_builder) { described_class.new(adapter_class) } let(:allocator) { double } let(:report) { double } let(:knapsack_report) { instance_double(Knapsack::Report) } let(:adapter_report_path) { adapter_class::REPORT_PATH } let(:adapter_test_file_pattern) { adapter_class::TEST_DIR_PATTERN } let(:env_ci_node_total) { double } let(:env_ci_node_index) { double } let(:env_report_path) { nil } let(:env_test_file_pattern) { nil } describe '#allocator' do subject { allocator_builder.allocator } before do expect(Knapsack::Config::Env).to receive(:report_path).and_return(env_report_path) expect(Knapsack::Config::Env).to receive(:test_file_pattern).and_return(env_test_file_pattern) expect(Knapsack::Config::Env).to receive(:ci_node_total).and_return(env_ci_node_total) expect(Knapsack::Config::Env).to receive(:ci_node_index).and_return(env_ci_node_index) expect(Knapsack).to receive(:report).twice.and_return(knapsack_report) expect(knapsack_report).to receive(:open).and_return(report) expect(knapsack_report).to receive(:config).with(report_config) expect(Knapsack::Allocator).to receive(:new).with(allocator_args).and_return(allocator) end shared_examples 'allocator builder' do context 'when ENVs are nil' do let(:report_config) { { report_path: adapter_report_path } } let(:allocator_args) do { report: report, test_file_pattern: adapter_test_file_pattern, ci_node_total: env_ci_node_total, ci_node_index: env_ci_node_index } end it { should eql allocator } end context 'when ENV report_path has value' do let(:env_report_path) { 'knapsack_custom_report.json' } let(:report_config) { { report_path: env_report_path } } let(:allocator_args) do { report: report, test_file_pattern: adapter_test_file_pattern, ci_node_total: env_ci_node_total, ci_node_index: env_ci_node_index } end it { should eql allocator } end context 'when ENV test_file_pattern has value' do let(:env_test_file_pattern) { 'custom_spec/**{,/*/**}/*_spec.rb' } let(:report_config) { { report_path: adapter_report_path } } let(:allocator_args) do { report: report, test_file_pattern: env_test_file_pattern, ci_node_total: env_ci_node_total, ci_node_index: env_ci_node_index } end it { should eql allocator } end end context 'when RSpecAdapter' do let(:adapter_class) { Knapsack::Adapters::RSpecAdapter } it_behaves_like 'allocator builder' end # To make sure we do not break backwards compatibility context 'when RspecAdapter' do let(:adapter_class) { Knapsack::Adapters::RspecAdapter } it_behaves_like 'allocator builder' end context 'when CucumberAdapter' do let(:adapter_class) { Knapsack::Adapters::CucumberAdapter } it_behaves_like 'allocator builder' end end describe '#test_dir' do let(:adapter_class) { Knapsack::Adapters::RSpecAdapter } subject { allocator_builder.test_dir } context 'when ENV test_dir has value' do before do expect(Knapsack::Config::Env).to receive(:test_dir).and_return("custom_spec") end it { should eq 'custom_spec' } end context 'when ENV test_dir has no value' do before do expect(Knapsack::Config::Env).to receive(:test_file_pattern).and_return(env_test_file_pattern) end context 'when ENV test_file_pattern has value' do let(:env_test_file_pattern) { 'custom_spec/**{,/*/**}/*_spec.rb' } it { should eq 'custom_spec' } end context 'when ENV test_file_pattern has no value' do it { should eq 'spec' } end end end end knapsack-4.0.0/spec/knapsack/config/0000755000004100000410000000000014106361602017327 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack/config/tracker_spec.rb0000644000004100000410000000263614106361602022330 0ustar www-datawww-datadescribe Knapsack::Config::Tracker do describe '.enable_time_offset_warning' do subject { described_class.enable_time_offset_warning } it { should be true } end describe '.time_offset_in_seconds' do subject { described_class.time_offset_in_seconds } it { should eql 30 } end describe '.generate_report' do subject { described_class.generate_report } context 'when ENV exists' do it 'should be true when KNAPSACK_GENERATE_REPORT=true' do with_env 'KNAPSACK_GENERATE_REPORT' => 'true' do expect(subject).to eq(true) end end it 'should be true when KNAPSACK_GENERATE_REPORT=0' do with_env 'KNAPSACK_GENERATE_REPORT' => '0' do expect(subject).to eq(true) end end it 'should be false when KNAPSACK_GENERATE_REPORT is ""' do with_env 'KNAPSACK_GENERATE_REPORT' => '' do expect(subject).to eq(false) end end it 'should be false when KNAPSACK_GENERATE_REPORT is "false"' do with_env 'KNAPSACK_GENERATE_REPORT' => 'false' do expect(subject).to eq(false) end end it 'should be false when KNAPSACK_GENERATE_REPORT is not "true" or "0"' do with_env 'KNAPSACK_GENERATE_REPORT' => '1' do expect(subject).to eq(false) end end end context "when ENV doesn't exist" do it { should be false } end end end knapsack-4.0.0/spec/knapsack/config/env_spec.rb0000644000004100000410000001046614106361602021465 0ustar www-datawww-datadescribe Knapsack::Config::Env do describe '.report_path' do subject { described_class.report_path } context 'when ENV exists' do let(:report_path) { 'knapsack_custom_report.json' } before { stub_const("ENV", { 'KNAPSACK_REPORT_PATH' => report_path }) } it { should eql report_path } end context "when ENV doesn't exist" do it { should be_nil } end end describe '.ci_node_total' do subject { described_class.ci_node_total } context 'when ENV exists' do context 'when CI_NODE_TOTAL has value' do before { stub_const("ENV", { 'CI_NODE_TOTAL' => 5 }) } it { should eql 5 } end context 'when CIRCLE_NODE_TOTAL has value' do before { stub_const("ENV", { 'CIRCLE_NODE_TOTAL' => 4 }) } it { should eql 4 } end context 'when SEMAPHORE_JOB_COUNT has value' do before { stub_const("ENV", { 'SEMAPHORE_JOB_COUNT' => 3 }) } it { should eql 3 } end context 'when SEMAPHORE_THREAD_COUNT has value' do before { stub_const("ENV", { 'SEMAPHORE_THREAD_COUNT' => 3 }) } it { should eql 3 } end context 'when BUILDKITE_PARALLEL_JOB_COUNT has value' do before { stub_const("ENV", { 'BUILDKITE_PARALLEL_JOB_COUNT' => 4 }) } it { should eql 4 } end context 'when SNAP_WORKER_TOTAL has value' do before { stub_const("ENV", { 'SNAP_WORKER_TOTAL' => 6 }) } it { should eql 6 } end context 'when BITBUCKET_PARALLEL_STEP_COUNT has value' do before { stub_const("ENV", { 'BITBUCKET_PARALLEL_STEP_COUNT' => 8 }) } it { should eql 8 } end end context "when ENV doesn't exist" do it { should eql 1 } end end describe '.ci_node_index' do subject { described_class.ci_node_index } context 'when ENV exists' do context 'when CI_NODE_INDEX has value' do before { stub_const("ENV", { 'CI_NODE_INDEX' => 3 }) } it { should eql 3 } end context 'when CI_NODE_INDEX has value and is in GitLab CI' do before { stub_const("ENV", { 'CI_NODE_INDEX' => 3, 'GITLAB_CI' => 'true' }) } it { should eql 2 } end context 'when CIRCLE_NODE_INDEX has value' do before { stub_const("ENV", { 'CIRCLE_NODE_INDEX' => 2 }) } it { should eql 2 } end context 'when SEMAPHORE_JOB_INDEX has value' do before { stub_const("ENV", { 'SEMAPHORE_JOB_INDEX' => 3 }) } it { should eql 2 } end context 'when SEMAPHORE_CURRENT_THREAD has value' do before { stub_const("ENV", { 'SEMAPHORE_CURRENT_THREAD' => 1 }) } it { should eql 0 } end context 'when BUILDKITE_PARALLEL_JOB has value' do before { stub_const("ENV", { 'BUILDKITE_PARALLEL_JOB' => 2 }) } it { should eql 2 } end context 'when SNAP_WORKER_INDEX has value' do before { stub_const("ENV", { 'SNAP_WORKER_INDEX' => 4 }) } it { should eql 3 } end context 'when BITBUCKET_PARALLEL_STEP has value' do before { stub_const("ENV", { 'BITBUCKET_PARALLEL_STEP' => 7 }) } it { should eql 7 } end end context "when ENV doesn't exist" do it { should eql 0 } end end describe '.test_file_pattern' do subject { described_class.test_file_pattern } context 'when ENV exists' do let(:test_file_pattern) { 'custom_spec/**{,/*/**}/*_spec.rb' } before { stub_const("ENV", { 'KNAPSACK_TEST_FILE_PATTERN' => test_file_pattern }) } it { should eql test_file_pattern } end context "when ENV doesn't exist" do it { should be_nil } end end describe '.test_dir' do subject { described_class.test_dir } context 'when ENV exists' do let(:test_dir) { 'spec' } before { stub_const("ENV", { 'KNAPSACK_TEST_DIR' => test_dir }) } it { should eql test_dir } end context "when ENV doesn't exist" do it { should be_nil } end end describe '.log_level' do subject { described_class.log_level } context 'when ENV exists' do let(:log_level) { 'debug' } before { stub_const("ENV", { 'KNAPSACK_LOG_LEVEL' => log_level }) } it { should eql Knapsack::Logger::DEBUG } end context "when ENV doesn't exist" do it { should eql Knapsack::Logger::INFO } end end end knapsack-4.0.0/spec/knapsack/report_spec.rb0000644000004100000410000000304014106361602020731 0ustar www-datawww-datadescribe Knapsack::Report do let(:report) { described_class.send(:new) } let(:report_path) { 'tmp/fake_report.json' } let(:report_json) do %Q[{"a_spec.rb": #{rand(Math::E..Math::PI)}}] end describe '#config' do context 'when passed options' do let(:args) do { report_path: 'knapsack_new_report.json', fake: true } end it do expect(report.config(args)).to eql({ report_path: 'knapsack_new_report.json', fake: true }) end end context "when didn't pass options" do it { expect(report.config).to eql({}) } end end describe '#save', :clear_tmp do before do expect(report).to receive(:report_json).and_return(report_json) report.config({ report_path: report_path }) report.save end it { expect(File.read(report_path)).to eql report_json } end describe '.open' do let(:subject) { report.open } before do report.config({ report_path: report_path }) end context 'when report file exists' do before do expect(File).to receive(:read).with(report_path).and_return(report_json) end it { should eql(JSON.parse(report_json)) } end context "when report file doesn't exist" do let(:report_path) { 'tmp/non_existing_report.json' } it do expect { subject }.to raise_error("Knapsack report file #{report_path} doesn't exist. Please generate report first!") end end end end knapsack-4.0.0/spec/knapsack/presenter_spec.rb0000644000004100000410000001005614106361602021432 0ustar www-datawww-datadescribe Knapsack::Presenter do let(:tracker) { instance_double(Knapsack::Tracker) } let(:test_files_with_time) do { 'a_spec.rb' => 1.0, 'b_spec.rb' => 0.4 } end describe 'report methods' do before do expect(Knapsack).to receive(:tracker) { tracker } expect(tracker).to receive(:test_files_with_time).and_return(test_files_with_time) end describe '.report_yml' do subject { described_class.report_yml } it { should eql test_files_with_time.to_yaml } end describe '.report_json' do subject { described_class.report_json } it { should eql JSON.pretty_generate(test_files_with_time) } end end describe '.global_time' do subject { described_class.global_time } before do expect(Knapsack).to receive(:tracker) { tracker } expect(tracker).to receive(:global_time).and_return(60*62+3) end it { should eql "\nKnapsack global time execution for tests: 01h 02m 03s" } end describe '.report_details' do subject { described_class.report_details } before do expect(described_class).to receive(:report_json).and_return('{}') end it { should eql "Knapsack report was generated. Preview:\n{}" } end describe '.time_offset_log_level' do before do allow(Knapsack).to receive(:tracker) { tracker } allow(tracker).to receive(:time_exceeded?).and_return(time_exceeded) end context 'when the time offset is exceeded' do let(:time_exceeded) { true } it 'returns a WARN log level' do expect(described_class.time_offset_log_level).to eq(Knapsack::Logger::WARN) end end context 'when the time offset is not exceeded' do let(:time_exceeded) { false } it 'returns an INFO log level' do expect(described_class.time_offset_log_level).to eq(Knapsack::Logger::INFO) end end end describe '.time_offset_warning' do let(:time_offset_in_seconds) { 30 } let(:max_node_time_execution) { 60 } let(:exceeded_time) { 3 } subject { described_class.time_offset_warning } before do allow(Knapsack).to receive(:tracker) { tracker } expect(tracker).to receive(:config).and_return({time_offset_in_seconds: time_offset_in_seconds}) expect(tracker).to receive(:max_node_time_execution).and_return(max_node_time_execution) expect(tracker).to receive(:exceeded_time).and_return(exceeded_time) expect(tracker).to receive(:time_exceeded?).and_return(time_exceeded?) end shared_examples 'knapsack time offset warning' do it { should include 'Time offset: 30s' } it { should include 'Max allowed node time execution: 01m' } it { should include 'Exceeded time: 03s' } end context 'when time exceeded' do let(:time_exceeded?) { true } it_behaves_like 'knapsack time offset warning' it { should include 'Please regenerate your knapsack report.' } end context "when time did not exceed" do let(:time_exceeded?) { false } it_behaves_like 'knapsack time offset warning' it { should include 'Global time execution for this CI node is fine.' } end end describe '.pretty_seconds' do subject { described_class.pretty_seconds(seconds) } context 'when less then one second' do let(:seconds) { 0.987 } it { should eql '0.987s' } end context 'when one second' do let(:seconds) { 1 } it { should eql '01s' } end context 'when only seconds' do let(:seconds) { 5 } it { should eql '05s' } end context 'when only minutes' do let(:seconds) { 120 } it { should eql '02m' } end context 'when only hours' do let(:seconds) { 60*60*3 } it { should eql '03h' } end context 'when minutes and seconds' do let(:seconds) { 180+9 } it { should eql '03m 09s' } end context 'when all' do let(:seconds) { 60*60*4+120+7 } it { should eql '04h 02m 07s' } end context 'when negative seconds' do let(:seconds) { -67 } it { should eql '-01m 07s' } end end end knapsack-4.0.0/spec/knapsack/tracker_spec.rb0000644000004100000410000001210014106361602021046 0ustar www-datawww-datashared_examples 'default trakcer attributes' do it { expect(tracker.global_time).to eql 0 } it { expect(tracker.test_files_with_time).to eql({}) } end describe Knapsack::Tracker do let(:tracker) { described_class.send(:new) } it_behaves_like 'default trakcer attributes' describe '#config' do context 'when passed options' do let(:generate_report) { 'true' } let(:opts) do { enable_time_offset_warning: false, fake: true } end it do with_env 'KNAPSACK_GENERATE_REPORT' => generate_report do expect(tracker.config(opts)).to eql({ enable_time_offset_warning: false, time_offset_in_seconds: 30, generate_report: true, fake: true }) end end end context "when didn't pass options" do let(:generate_report) { nil } it do expect(tracker.config).to eql({ enable_time_offset_warning: true, time_offset_in_seconds: 30, generate_report: false }) end end end describe '#test_path' do subject { tracker.test_path } context 'when test_path not set' do it do expect(subject).to be_nil end end context 'when test_path set' do context 'when test_path has prefix ./' do before { tracker.test_path = './spec/models/user_spec.rb' } it { should eql 'spec/models/user_spec.rb' } end context 'when test_path has not prefix ./' do before { tracker.test_path = 'spec/models/user_spec.rb' } it { should eql 'spec/models/user_spec.rb' } end end end describe '#time_exceeded?' do subject { tracker.time_exceeded? } before do expect(tracker).to receive(:global_time).and_return(global_time) expect(tracker).to receive(:max_node_time_execution).and_return(max_node_time_execution) end context 'when true' do let(:global_time) { 2 } let(:max_node_time_execution) { 1 } it { should be true } end context 'when false' do let(:global_time) { 1 } let(:max_node_time_execution) { 1 } it { should be false } end end describe '#max_node_time_execution' do let(:report_distributor) { instance_double(Knapsack::Distributors::ReportDistributor) } let(:node_time_execution) { 3.5 } let(:max_node_time_execution) { node_time_execution + tracker.config[:time_offset_in_seconds] } subject { tracker.max_node_time_execution } before do expect(tracker).to receive(:report_distributor).and_return(report_distributor) expect(report_distributor).to receive(:node_time_execution).and_return(node_time_execution) end it { should eql max_node_time_execution } end describe '#exceeded_time' do let(:global_time) { 5 } let(:max_node_time_execution) { 2 } subject { tracker.exceeded_time } before do expect(tracker).to receive(:global_time).and_return(global_time) expect(tracker).to receive(:max_node_time_execution).and_return(max_node_time_execution) end it { should eql 3 } end describe 'track time execution' do let(:test_paths) { ['a_spec.rb', 'b_spec.rb'] } let(:delta) { 0.02 } context 'without Timecop' do before do test_paths.each_with_index do |test_path, index| tracker.test_path = test_path tracker.start_timer sleep index.to_f / 10 + 0.1 tracker.stop_timer end end it { expect(tracker.global_time).to be_within(delta).of(0.3) } it { expect(tracker.test_files_with_time.keys.size).to eql 2 } it { expect(tracker.test_files_with_time['a_spec.rb']).to be_within(delta).of(0.1) } it { expect(tracker.test_files_with_time['b_spec.rb']).to be_within(delta).of(0.2) } it 'resets test_path after time is measured' do expect(tracker.test_path).to be_nil end end context "with Timecop - Timecop shouldn't have impact on measured test time" do let(:now) { Time.now } before do test_paths.each_with_index do |test_path, index| Timecop.freeze(now) do tracker.test_path = test_path tracker.start_timer end delay = index + 1 Timecop.freeze(now+delay) do tracker.stop_timer end end end it { expect(tracker.global_time).to be > 0 } it { expect(tracker.global_time).to be_within(delta).of(0) } it { expect(tracker.test_files_with_time.keys.size).to eql 2 } it { expect(tracker.test_files_with_time['a_spec.rb']).to be_within(delta).of(0) } it { expect(tracker.test_files_with_time['b_spec.rb']).to be_within(delta).of(0) } it 'resets test_path after time is measured' do expect(tracker.test_path).to be_nil end end end describe '#reset!' do before do tracker.test_path = 'a_spec.rb' tracker.start_timer sleep 0.1 tracker.stop_timer expect(tracker.global_time).not_to eql 0 tracker.reset! end it_behaves_like 'default trakcer attributes' end end knapsack-4.0.0/spec/knapsack/logger_spec.rb0000644000004100000410000000433414106361602020704 0ustar www-datawww-datadescribe Knapsack::Logger do let(:text) { 'Text' } describe '#debug' do before { subject.level = level } context 'when level is DEBUG' do let(:level) { described_class::DEBUG } it { expect { subject.debug(text) }.to output(/#{text}/).to_stdout } end context 'when level is INFO' do let(:level) { described_class::INFO } it { expect { subject.debug(text) }.to output('').to_stdout } end context 'when level is WARN' do let(:level) { described_class::WARN } it { expect { subject.debug(text) }.to output('').to_stdout } end end describe '#info' do before { subject.level = level } context 'when level is DEBUG' do let(:level) { described_class::DEBUG } it { expect { subject.info(text) }.to output(/#{text}/).to_stdout } end context 'when level is INFO' do let(:level) { described_class::INFO } it { expect { subject.info(text) }.to output(/#{text}/).to_stdout } end context 'when level is WARN' do let(:level) { described_class::WARN } it { expect { subject.info(text) }.to output('').to_stdout } end end describe '#warn' do before { subject.level = level } context 'when level is DEBUG' do let(:level) { described_class::DEBUG } it { expect { subject.warn(text) }.to output(/#{text}/).to_stdout } end context 'when level is INFO' do let(:level) { described_class::INFO } it { expect { subject.warn(text) }.to output(/#{text}/).to_stdout } end context 'when level is WARN' do let(:level) { described_class::WARN } it { expect { subject.warn(text) }.to output(/#{text}/).to_stdout } end end describe '#log' do let(:log_level) { Knapsack::Logger::INFO } let(:log_message) { 'log-message' } it 'delegates to the method matching the specified log level' do expect(subject).to receive(:info).with(log_message) subject.log(log_level, log_message) end context 'when the log level is unknown' do let(:log_level) { 5 } it 'raises an UnknownLogLevel error' do expect { subject.log(log_level, log_message) }.to raise_error Knapsack::Logger::UnknownLogLevel end end end end knapsack-4.0.0/spec/knapsack/extensions/0000755000004100000410000000000014106361602020261 5ustar www-datawww-dataknapsack-4.0.0/spec/knapsack/extensions/time_spec.rb0000644000004100000410000000015414106361602022556 0ustar www-datawww-datadescribe Time do it 'responds to :raw_now' do expect(Time.respond_to?(:raw_now)).to be true end end knapsack-4.0.0/spec/support/0000755000004100000410000000000014106361602016003 5ustar www-datawww-dataknapsack-4.0.0/spec/support/shared_examples/0000755000004100000410000000000014106361602021147 5ustar www-datawww-dataknapsack-4.0.0/spec/support/shared_examples/adapter.rb0000644000004100000410000000071614106361602023120 0ustar www-datawww-datashared_examples 'adapter' do describe '#bind_time_tracker' do it do expect { subject.bind_time_tracker }.not_to raise_error end end describe '#bind_report_generator' do it do expect { subject.bind_report_generator }.not_to raise_error end end describe '#bind_time_offset_warning' do it do expect { subject.bind_time_offset_warning }.not_to raise_error end end end knapsack-4.0.0/spec/support/env_helper.rb0000644000004100000410000000033314106361602020456 0ustar www-datawww-datamodule EnvHelper def with_env(vars) original = ENV.to_hash vars.each { |k, v| ENV[k] = v } begin yield ensure ENV.replace(original) end end end RSpec.configuration.include EnvHelper knapsack-4.0.0/spec/support/fakes/0000755000004100000410000000000014106361602017074 5ustar www-datawww-dataknapsack-4.0.0/spec/support/fakes/minitest.rb0000644000004100000410000000043714106361602021261 0ustar www-datawww-data# https://github.com/seattlerb/minitest/blob/master/lib/minitest/test.rb module Minitest class Test def before_setup; end def after_teardown; end end # https://github.com/seattlerb/minitest/blob/master/lib/minitest.rb def self.after_run(&block) block.call end end knapsack-4.0.0/spec/support/fakes/cucumber.rb0000644000004100000410000000105214106361602021224 0ustar www-datawww-datamodule Cucumber # Cucumber 1 and 2 # https://github.com/cucumber/cucumber-ruby/blob/v2.99.0/lib/cucumber/rb_support/rb_dsl.rb module RbSupport class RbDsl class << self def register_rb_hook(phase, tag_names, proc) proc.call end end end end # Cucumber 3 # https://github.com/cucumber/cucumber-ruby/blob/v3.0.0/lib/cucumber/glue/dsl.rb module Glue class Dsl class << self def register_rb_hook(phase, tag_names, proc) proc.call end end end end end knapsack-4.0.0/CHANGELOG.md0000644000004100000410000002512014106361602015146 0ustar www-datawww-data### unreleased * TODO ### 4.0.0 * __(breaking change)__ Remove support for RSpec 2.x. This change was already done by accident in [the pull request](https://github.com/KnapsackPro/knapsack/pull/107) when we added the RSpec `context` hook, which is available only since RSpec 3.x. * Use RSpec `example` block argument instead of the global `RSpec.current_example`. This allows to run tests with the `async-rspec` gem. https://github.com/KnapsackPro/knapsack/pull/117 https://github.com/KnapsackPro/knapsack/compare/v3.1.0...v4.0.0 ### 3.1.0 * Sorting Algorithm: round robin to least connections https://github.com/KnapsackPro/knapsack/pull/99 https://github.com/KnapsackPro/knapsack/compare/v3.0.0...v3.1.0 ### 3.0.0 * __(breaking change)__ Require minimum Ruby 2.2 version https://github.com/KnapsackPro/knapsack/pull/115 * __(breaking change)__ Drop support for Minitest 4.x. Force to use minitest 5.x even on CI. https://github.com/KnapsackPro/knapsack/pull/114 * Replace Travis CI with GitHub Actions https://github.com/KnapsackPro/knapsack/pull/112 https://github.com/KnapsackPro/knapsack/compare/v2.0.0...v3.0.0 ### 2.0.0 * __(breaking change)__ Ruby 2.1 is a minimum required version https://github.com/KnapsackPro/knapsack/pull/113 * Use Ruby 3 and add small development adjustments in codebase https://github.com/KnapsackPro/knapsack/pull/110 https://github.com/KnapsackPro/knapsack/compare/v1.22.0...v2.0.0 ### 1.22.0 * Update time offset warning https://github.com/KnapsackPro/knapsack/pull/105 https://github.com/KnapsackPro/knapsack/compare/v1.21.1...v1.22.0 ### 1.21.1 * Fix a bug with tracking time for pending specs in RSpec https://github.com/KnapsackPro/knapsack/pull/109 https://github.com/KnapsackPro/knapsack/compare/v1.21.0...v1.21.1 ### 1.21.0 * Track time in before and after `:context` hooks https://github.com/KnapsackPro/knapsack/pull/107 https://github.com/KnapsackPro/knapsack/compare/v1.20.0...v1.21.0 ### 1.20.0 * Use `Process.clock_gettime` to measure track execution time https://github.com/KnapsackPro/knapsack/pull/100 https://github.com/KnapsackPro/knapsack/compare/v1.19.0...v1.20.0 ### 1.19.0 * Add support for Bitbucket Pipelines https://github.com/KnapsackPro/knapsack/pull/97 https://github.com/KnapsackPro/knapsack/compare/v1.18.0...v1.19.0 ### 1.18.0 * Add support for Semaphore 2.0 https://github.com/KnapsackPro/knapsack/pull/92 https://github.com/KnapsackPro/knapsack/compare/v1.17.2...v1.18.0 ### 1.17.2 * Allow for new `bundler` in development * Test Ruby 2.6 on CI * Add info about Knapsack Pro Queue Mode in knapsack output * Update URL to FAQ in knapsack output https://github.com/KnapsackPro/knapsack/pull/90 https://github.com/KnapsackPro/knapsack/compare/v1.17.1...v1.17.2 ### 1.17.1 * Fix RSpec signal handling by replacing process https://github.com/KnapsackPro/knapsack/pull/86 https://github.com/KnapsackPro/knapsack/compare/v1.17.0...v1.17.1 ### 1.17.0 * Add support for GitLab CI ENV variable `CI_NODE_INDEX` starting from 1. https://github.com/KnapsackPro/knapsack/pull/83 https://github.com/KnapsackPro/knapsack/compare/v1.16.0...v1.17.0 ### 1.16.0 * Add support for Ruby >= 1.9.3. https://github.com/KnapsackPro/knapsack/pull/77 https://github.com/KnapsackPro/knapsack/compare/v1.15.0...v1.16.0 ### 1.15.0 * Add support for Cucumber 3. https://github.com/KnapsackPro/knapsack/pull/68 https://github.com/KnapsackPro/knapsack/compare/v1.14.1...v1.15.0 ### 1.14.1 * Update RSpec timing adapter to be more resilient. https://github.com/KnapsackPro/knapsack/pull/64 https://github.com/KnapsackPro/knapsack/compare/v1.14.0...v1.14.1 ### 1.14.0 * Moves Timecop to development dependency. https://github.com/KnapsackPro/knapsack/pull/61 https://github.com/KnapsackPro/knapsack/compare/v1.13.3...v1.14.0 ### 1.13.3 * Fix: Trailing slash should be removed from allocator test_dir. https://github.com/KnapsackPro/knapsack/issues/57 https://github.com/KnapsackPro/knapsack/compare/v1.13.2...v1.13.3 ### 1.13.2 * Add support for test files in directory with spaces. Related: https://github.com/KnapsackPro/knapsack_pro-ruby/issues/27 https://github.com/KnapsackPro/knapsack/compare/v1.13.1...v1.13.2 ### 1.13.1 * Fix: Get rid of call #zero? method on $?.exitstatus in test runners tasks https://github.com/KnapsackPro/knapsack/pull/52 https://github.com/KnapsackPro/knapsack/compare/v1.13.0...v1.13.1 ### 1.13.0 * Add KNAPSACK_LOG_LEVEL option https://github.com/KnapsackPro/knapsack/pull/49 https://github.com/KnapsackPro/knapsack/compare/v1.12.2...v1.13.0 ### 1.12.2 * Fix support for turnip >= 2.x https://github.com/KnapsackPro/knapsack/pull/47 https://github.com/KnapsackPro/knapsack/compare/v1.12.1...v1.12.2 ### 1.12.1 * Cucumber and Spinach should load files from proper folder in case when you use custom test directory. https://github.com/KnapsackPro/knapsack/compare/v1.12.0...v1.12.1 ### 1.12.0 * Add support for Minitest::SharedExamples https://github.com/KnapsackPro/knapsack/pull/46 https://github.com/KnapsackPro/knapsack/compare/v1.11.1...v1.12.0 ### 1.11.1 * Require spinach in spec helper so tests will pass but don't require it in spinach adapter because it breaks for users who don't use spinach and they don't want to add it to their Gemfile Related PR: https://github.com/KnapsackPro/knapsack/pull/41 https://github.com/KnapsackPro/knapsack/compare/v1.11.0...v1.11.1 ### 1.11.0 * Add support for Spinach https://github.com/KnapsackPro/knapsack/pull/41 https://github.com/KnapsackPro/knapsack/compare/v1.10.0...v1.11.0 ### 1.10.0 * Log the time offset warning at INFO if time not exceeded https://github.com/KnapsackPro/knapsack/pull/40 https://github.com/KnapsackPro/knapsack/compare/v1.9.0...v1.10.0 ### 1.9.0 * Use Knapsack.logger for runner output https://github.com/KnapsackPro/knapsack/pull/39 https://github.com/KnapsackPro/knapsack/compare/v1.8.0...v1.9.0 ### 1.8.0 * Add support for older cucumber versions than 1.3 https://github.com/KnapsackPro/knapsack_pro-ruby/issues/5 https://github.com/KnapsackPro/knapsack/compare/v1.7.0...v1.8.0 ### 1.7.0 * Add ability to run tests from multiple directories https://github.com/KnapsackPro/knapsack/pull/35 https://github.com/KnapsackPro/knapsack/compare/v1.6.1...v1.7.0 ### 1.6.1 * Changed rake task in minitest_runner.rb to have no warnings output https://github.com/KnapsackPro/knapsack_pro-ruby/pull/4 https://github.com/KnapsackPro/knapsack/compare/v1.6.0...v1.6.1 ### 1.6.0 * Add support for Cucumber 2 https://github.com/KnapsackPro/knapsack/issues/30 https://github.com/KnapsackPro/knapsack/compare/v1.5.1...v1.6.0 ### 1.5.1 * Add link to FAQ at the end of time offset warning https://github.com/KnapsackPro/knapsack/compare/v1.5.0...v1.5.1 ### 1.5.0 * Add support for snap-ci.com https://github.com/KnapsackPro/knapsack/compare/v1.4.1...v1.5.0 ### 1.4.1 * Update test file pattern in tests also. Related PR https://github.com/KnapsackPro/knapsack/pull/27 * Ensure there are no duplicates in leftover tests because of new test file pattern https://github.com/KnapsackPro/knapsack/compare/v1.4.0...v1.4.1 ### 1.4.0 * Rename RspecAdapter to RSpecAdapter so that it is consistent https://github.com/KnapsackPro/knapsack/pull/28 * Change file path patterns to support 1-level symlinks by default https://github.com/KnapsackPro/knapsack/pull/27 https://github.com/KnapsackPro/knapsack/compare/v1.3.4...v1.4.0 ### 1.3.4 * Make knapsack backwards compatible with earlier version of minitest https://github.com/KnapsackPro/knapsack/pull/26 https://github.com/KnapsackPro/knapsack/compare/v1.3.3...v1.3.4 ### 1.3.3 * Fix wrong dependency for timecop https://github.com/KnapsackPro/knapsack/compare/v1.3.2...v1.3.3 ### 1.3.2 * Use Timecop as dependency and always use Time.now_without_mock_time to avoid problem when someone did stub on Time without using Timecop. * Don't exit on successful RSpec and Cucumber runs https://github.com/KnapsackPro/knapsack/pull/25 https://github.com/KnapsackPro/knapsack/compare/v1.3.1...v1.3.2 ### 1.3.1 * Treat KNAPSACK_GENERATE_REPORT=false as generate_report -> false https://github.com/KnapsackPro/knapsack/pull/22 https://github.com/KnapsackPro/knapsack/compare/v1.3.0...v1.3.1 ### 1.3.0 * Add knapsack binary https://github.com/KnapsackPro/knapsack/pull/21 https://github.com/KnapsackPro/knapsack/compare/v1.2.1...v1.3.0 ### 1.2.1 * Add support for Turnip features https://github.com/KnapsackPro/knapsack/pull/19 https://github.com/KnapsackPro/knapsack/compare/v1.2.0...v1.2.1 ### 1.2.0 * Add minitest adapter. * Fix bug with missing global time execution when tests took less than second. https://github.com/KnapsackPro/knapsack/compare/v1.1.1...v1.2.0 ### 1.1.1 * Use `system` instead of `exec` in rake tasks so we can return exit code from command. https://github.com/KnapsackPro/knapsack/compare/v1.1.0...v1.1.1 ### 1.1.0 * Add support for Buildkite.com ENV variables `BUILDKITE_PARALLEL_JOB_COUNT` and `BUILDKITE_PARALLEL_JOB`. ### 1.0.4 * Pull request #12 - Raise error when CI_NODE_INDEX >= CI_NODE_TOTAL https://github.com/KnapsackPro/knapsack/pull/12 ### 1.0.3 * Fix bug #11 - Track properly time when using Timecop gem in tests. https://github.com/KnapsackPro/knapsack/issues/11 https://github.com/KnapsackPro/knapsack/issues/9 ### 1.0.2 * Fix bug #8 - Sort all tests just in case to avoid wrong order of files when running tests on machines where `Dir.glob` has different implementation. ### 1.0.1 * Fix bug - Add support for Cucumber Scenario Outline. ### 1.0.0 * Add cucumber support. * Rename environment variable KNAPSACK_SPEC_PATTERN to KNAPSACK_TEST_FILE_PATTERN. * Default name of knapsack report json file is based on adapter name so for RSpec the default report name is `knapsack_rspec_report.json` and for Cucumber the report name is `knapsack_cucumber_report.json`. ### 0.5.0 * Allow passing arguments to rspec via knapsack:rspec task. ### 0.4.0 * Add support for RSpec 2. ### 0.3.0 * Add support for semaphoreapp.com thread ENV variables. ### 0.2.0 * Add knapsack logger. Allow to use custom logger. ### 0.1.4 * Fix wrong time presentation for negative seconds. ### 0.1.3 * Better time presentation instead of seconds. ### 0.1.2 * Fix case when someone removes spec file which exists in knapsack report. * Extract config to separate class and fix wrong node time execution on CI. ### 0.1.1 * Fix assigning time execution to right spec file when call RSpec shared example. ### 0.1.0 * Gem ready to use it! ### 0.0.3 * Test release. Not ready to use it. knapsack-4.0.0/test_examples/0000755000004100000410000000000014106361602016212 5ustar www-datawww-dataknapsack-4.0.0/test_examples/fast/0000755000004100000410000000000014106361602017147 5ustar www-datawww-dataknapsack-4.0.0/test_examples/fast/unit_test.rb0000644000004100000410000000045614106361602021517 0ustar www-datawww-datarequire 'test_helper' class UnitTest < Minitest::Test def setup sleep 0.1 end def test_mal sleep 0.1 assert_equal 4, 2 * 2 end def test_no_way sleep 0.2 refute_match(/^no/i, 'yes') end def test_that_will_be_skipped sleep 1 skip 'test this later' end end knapsack-4.0.0/test_examples/fast/shared_examples_test.rb0000644000004100000410000000071514106361602023702 0ustar www-datawww-datarequire 'test_helper' class Minitest::SharedExamples < Module include Minitest::Spec::DSL end SharedExampleSpec = Minitest::SharedExamples.new do def setup sleep 0.1 end def test_mal sleep 0.1 assert_equal 4, 2 * 2 end def test_no_way sleep 0.2 refute_match(/^no/i, 'yes') end def test_that_will_be_skipped skip 'test this later' end end describe "test that use SharedExamples" do include SharedExampleSpec end knapsack-4.0.0/test_examples/fast/spec_test.rb0000644000004100000410000000076214106361602021472 0ustar www-datawww-datarequire 'test_helper' class FakeCalculator def add(x, y) x + y end def mal(x, y) x * y end end describe FakeCalculator do before do @calc = FakeCalculator.new end it '#add' do result = @calc.add(2, 3) if self.respond_to?(:_) _(result).must_equal 5 else result.must_equal 5 end end it '#mal' do result = @calc.mal(2, 3) if self.respond_to?(:_) _(result).must_equal 6 else result.must_equal 6 end end end knapsack-4.0.0/test_examples/slow/0000755000004100000410000000000014106361602017176 5ustar www-datawww-dataknapsack-4.0.0/test_examples/slow/slow_test.rb0000644000004100000410000000023714106361602021550 0ustar www-datawww-datarequire 'test_helper' class SlowTest < Minitest::Test def setup sleep 0.5 end def test_a sleep 0.5 end def test_b sleep 1.0 end end knapsack-4.0.0/test_examples/test_helper.rb0000644000004100000410000000070314106361602021055 0ustar www-datawww-datarequire 'minitest/autorun' require 'knapsack' Knapsack.tracker.config({ enable_time_offset_warning: true, time_offset_in_seconds: 3 }) Knapsack.report.config({ report_path: 'knapsack_minitest_report.json' }) if ENV['CUSTOM_LOGGER'] require 'logger' Knapsack.logger = Logger.new(STDOUT) Knapsack.logger.level = Logger::INFO end knapsack_adapter = Knapsack::Adapters::MinitestAdapter.bind knapsack_adapter.set_test_helper_path(__FILE__) knapsack-4.0.0/.gitignore0000644000004100000410000000030014106361602015316 0ustar www-datawww-data*.gem *.rbc .bundle .config .yardoc Gemfile.lock InstalledFiles _yardoc coverage doc/ lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp *.bundle *.so *.o *.a mkmf.log .idea/ knapsack-4.0.0/knapsack_minitest_report.json0000644000004100000410000000036414106361602021335 0ustar www-datawww-data{ "test_examples/slow/slow_test.rb": 2.5080618858337402, "test_examples/fast/spec_test.rb": 0.00015115737915039062, "test_examples/fast/shared_examples_test.rb": 0.616192102432251, "test_examples/fast/unit_test.rb": 1.6202473640441895 }knapsack-4.0.0/Rakefile0000644000004100000410000000032114106361602014776 0ustar www-datawww-datarequire 'bundler/gem_tasks' require 'rake/testtask' require 'knapsack' Knapsack.load_tasks Rake::TestTask.new(:test) do |t| t.libs << 'test_examples' t.pattern = 'test_examples/**{,/*/**}/*_test.rb' end knapsack-4.0.0/lib/0000755000004100000410000000000014106361602014103 5ustar www-datawww-dataknapsack-4.0.0/lib/tasks/0000755000004100000410000000000014106361602015230 5ustar www-datawww-dataknapsack-4.0.0/lib/tasks/knapsack_cucumber.rake0000644000004100000410000000024514106361602021555 0ustar www-datawww-datarequire 'knapsack' namespace :knapsack do task :cucumber, [:cucumber_args] do |_, args| Knapsack::Runners::CucumberRunner.run(args[:cucumber_args]) end end knapsack-4.0.0/lib/tasks/knapsack_spinach.rake0000644000004100000410000000024114106361602021371 0ustar www-datawww-datarequire 'knapsack' namespace :knapsack do task :spinach, [:spinach_args] do |_, args| Knapsack::Runners::SpinachRunner.run(args[:spinach_args]) end end knapsack-4.0.0/lib/tasks/knapsack_rspec.rake0000644000004100000410000000023114106361602021057 0ustar www-datawww-datarequire 'knapsack' namespace :knapsack do task :rspec, [:rspec_args] do |_, args| Knapsack::Runners::RSpecRunner.run(args[:rspec_args]) end end knapsack-4.0.0/lib/tasks/knapsack_minitest.rake0000644000004100000410000000024514106361602021604 0ustar www-datawww-datarequire 'knapsack' namespace :knapsack do task :minitest, [:minitest_args] do |_, args| Knapsack::Runners::MinitestRunner.run(args[:minitest_args]) end end knapsack-4.0.0/lib/knapsack.rb0000644000004100000410000000321714106361602016226 0ustar www-datawww-datarequire 'singleton' require 'rake/testtask' require_relative 'knapsack/version' require_relative 'knapsack/extensions/time' require_relative 'knapsack/config/env' require_relative 'knapsack/config/tracker' require_relative 'knapsack/logger' require_relative 'knapsack/tracker' require_relative 'knapsack/presenter' require_relative 'knapsack/report' require_relative 'knapsack/allocator' require_relative 'knapsack/allocator_builder' require_relative 'knapsack/task_loader' require_relative 'knapsack/distributors/base_distributor' require_relative 'knapsack/distributors/report_distributor' require_relative 'knapsack/distributors/leftover_distributor' require_relative 'knapsack/adapters/base_adapter' require_relative 'knapsack/adapters/rspec_adapter' require_relative 'knapsack/adapters/cucumber_adapter' require_relative 'knapsack/adapters/minitest_adapter' require_relative 'knapsack/adapters/spinach_adapter' require_relative 'knapsack/runners/rspec_runner' require_relative 'knapsack/runners/cucumber_runner' require_relative 'knapsack/runners/minitest_runner' require_relative 'knapsack/runners/spinach_runner' module Knapsack class << self @@logger = nil def tracker Knapsack::Tracker.instance end def report Knapsack::Report.instance end def root File.expand_path('../..', __FILE__) end def load_tasks task_loader = Knapsack::TaskLoader.new task_loader.load_tasks end def logger return @@logger if @@logger log = Knapsack::Logger.new log.level = Knapsack::Config::Env.log_level @@logger = log end def logger=(value) @@logger = value end end end knapsack-4.0.0/lib/knapsack/0000755000004100000410000000000014106361602015676 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/version.rb0000644000004100000410000000005014106361602017703 0ustar www-datawww-datamodule Knapsack VERSION = '4.0.0' end knapsack-4.0.0/lib/knapsack/adapters/0000755000004100000410000000000014106361602017501 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/adapters/base_adapter.rb0000644000004100000410000000310214106361602022434 0ustar www-datawww-datamodule Knapsack module Adapters class BaseAdapter # Just examples, please overwrite constants in subclasses TEST_DIR_PATTERN = 'test/**{,/*/**}/*_test.rb' REPORT_PATH = 'knapsack_base_report.json' def self.bind adapter = new adapter.bind adapter end def bind update_report_config if tracker.config[:generate_report] Knapsack.logger.info 'Knapsack report generator started!' bind_time_tracker bind_report_generator elsif tracker.config[:enable_time_offset_warning] Knapsack.logger.info 'Knapsack time offset warning enabled!' bind_time_tracker bind_time_offset_warning else Knapsack.logger.warn 'Knapsack adapter is off!' end end def bind_time_tracker raise NotImplementedError end def bind_report_generator raise NotImplementedError end def bind_time_offset_warning raise NotImplementedError end private def tracker Knapsack.tracker end def update_report_config current_test_file_pattern = Knapsack.report.config[:test_file_pattern] current_report_path = Knapsack.report.config[:report_path] Knapsack.report.config({ test_file_pattern: Knapsack::Config::Env.test_file_pattern || current_test_file_pattern || self.class::TEST_DIR_PATTERN, report_path: Knapsack::Config::Env.report_path || current_report_path || self.class::REPORT_PATH }) end end end end knapsack-4.0.0/lib/knapsack/adapters/cucumber_adapter.rb0000644000004100000410000000363414106361602023341 0ustar www-datawww-datamodule Knapsack module Adapters class CucumberAdapter < BaseAdapter TEST_DIR_PATTERN = 'features/**{,/*/**}/*.feature' REPORT_PATH = 'knapsack_cucumber_report.json' def bind_time_tracker Around do |object, block| Knapsack.tracker.test_path = CucumberAdapter.test_path(object) Knapsack.tracker.start_timer block.call Knapsack.tracker.stop_timer end ::Kernel.at_exit do Knapsack.logger.info(Presenter.global_time) end end def bind_report_generator ::Kernel.at_exit do Knapsack.report.save Knapsack.logger.info(Presenter.report_details) end end def bind_time_offset_warning ::Kernel.at_exit do Knapsack.logger.log( Presenter.time_offset_log_level, Presenter.time_offset_warning ) end end def self.test_path(object) if ::Cucumber::VERSION.to_i >= 2 test_case = object test_case.location.file else if object.respond_to?(:scenario_outline) if object.scenario_outline.respond_to?(:feature) # Cucumber < 1.3 object.scenario_outline.feature.file else # Cucumber >= 1.3 object.scenario_outline.file end else if object.respond_to?(:feature) # Cucumber < 1.3 object.feature.file else # Cucumber >= 1.3 object.file end end end end private def Around(*tag_expressions, &proc) if ::Cucumber::VERSION.to_i >= 3 ::Cucumber::Glue::Dsl.register_rb_hook('around', tag_expressions, proc) else ::Cucumber::RbSupport::RbDsl.register_rb_hook('around', tag_expressions, proc) end end end end end knapsack-4.0.0/lib/knapsack/adapters/rspec_adapter.rb0000644000004100000410000000361614106361602022650 0ustar www-datawww-datamodule Knapsack module Adapters class RSpecAdapter < BaseAdapter TEST_DIR_PATTERN = 'spec/**{,/*/**}/*_spec.rb' REPORT_PATH = 'knapsack_rspec_report.json' def bind_time_tracker ::RSpec.configure do |config| config.prepend_before(:context) do Knapsack.tracker.start_timer end config.prepend_before(:each) do |example| Knapsack.tracker.test_path = RSpecAdapter.test_path(example) end config.append_after(:context) do Knapsack.tracker.stop_timer end config.after(:suite) do Knapsack.logger.info(Presenter.global_time) end end end def bind_report_generator ::RSpec.configure do |config| config.after(:suite) do Knapsack.report.save Knapsack.logger.info(Presenter.report_details) end end end def bind_time_offset_warning ::RSpec.configure do |config| config.after(:suite) do Knapsack.logger.log( Presenter.time_offset_log_level, Presenter.time_offset_warning ) end end end def self.test_path(example) example_group = example.metadata[:example_group] if defined?(::Turnip) && Gem::Version.new(::Turnip::VERSION) < Gem::Version.new('2.0.0') unless example_group[:turnip] until example_group[:parent_example_group].nil? example_group = example_group[:parent_example_group] end end else until example_group[:parent_example_group].nil? example_group = example_group[:parent_example_group] end end example_group[:file_path] end end # This is added to provide backwards compatibility class RspecAdapter < RSpecAdapter end end end knapsack-4.0.0/lib/knapsack/adapters/minitest_adapter.rb0000644000004100000410000000415314106361602023365 0ustar www-datawww-datamodule Knapsack module Adapters class MinitestAdapter < BaseAdapter TEST_DIR_PATTERN = 'test/**{,/*/**}/*_test.rb' REPORT_PATH = 'knapsack_minitest_report.json' @@parent_of_test_dir = nil # See how to write hooks and plugins # https://github.com/seattlerb/minitest/blob/master/lib/minitest/test.rb module BindTimeTrackerMinitestPlugin def before_setup super Knapsack.tracker.test_path = MinitestAdapter.test_path(self) Knapsack.tracker.start_timer end def after_teardown Knapsack.tracker.stop_timer super end end def bind_time_tracker ::Minitest::Test.send(:include, BindTimeTrackerMinitestPlugin) Minitest.after_run do Knapsack.logger.info(Presenter.global_time) end end def bind_report_generator Minitest.after_run do Knapsack.report.save Knapsack.logger.info(Presenter.report_details) end end def bind_time_offset_warning Minitest.after_run do Knapsack.logger.log( Presenter.time_offset_log_level, Presenter.time_offset_warning ) end end def set_test_helper_path(file_path) test_dir_path = File.dirname(file_path) @@parent_of_test_dir = File.expand_path('../', test_dir_path) end def self.test_path(obj) # Pick the first public method in the class itself, that starts with "test_" test_method_name = obj.public_methods(false).select{|m| m =~ /^test_/ }.first if test_method_name.nil? # case for shared examples method_object = obj.method(obj.location.sub(/.*?test_/, 'test_')) else method_object = obj.method(test_method_name) end full_test_path = method_object.source_location.first parent_of_test_dir_regexp = Regexp.new("^#{@@parent_of_test_dir}") test_path = full_test_path.gsub(parent_of_test_dir_regexp, '.') # test_path will look like ./test/dir/unit_test.rb test_path end end end end knapsack-4.0.0/lib/knapsack/adapters/spinach_adapter.rb0000644000004100000410000000214714106361602023157 0ustar www-datawww-datamodule Knapsack module Adapters class SpinachAdapter < BaseAdapter TEST_DIR_PATTERN = 'features/**{,/*/**}/*.feature' REPORT_PATH = 'knapsack_spinach_report.json' def bind_time_tracker ::Spinach.hooks.before_scenario do |scenario_data, step_definitions| Knapsack.tracker.test_path = SpinachAdapter.test_path(scenario_data) Knapsack.tracker.start_timer end ::Spinach.hooks.after_scenario do Knapsack.tracker.stop_timer end ::Spinach.hooks.after_run do Knapsack.logger.info(Presenter.global_time) end end def bind_report_generator ::Spinach.hooks.after_run do Knapsack.report.save Knapsack.logger.info(Presenter.report_details) end end def bind_time_offset_warning ::Spinach.hooks.after_run do Knapsack.logger.log( Presenter.time_offset_log_level, Presenter.time_offset_warning ) end end def self.test_path(scenario) scenario.feature.filename end end end end knapsack-4.0.0/lib/knapsack/report.rb0000644000004100000410000000131614106361602017537 0ustar www-datawww-datamodule Knapsack class Report include Singleton def config(args={}) @config ||= args @config.merge!(args) end def report_path config[:report_path] || raise('Missing report_path') end def test_file_pattern config[:test_file_pattern] || raise('Missing test_file_pattern') end def save File.open(report_path, 'w+') do |f| f.write(report_json) end end def open report = File.read(report_path) JSON.parse(report) rescue Errno::ENOENT raise "Knapsack report file #{report_path} doesn't exist. Please generate report first!" end private def report_json Presenter.report_json end end end knapsack-4.0.0/lib/knapsack/distributors/0000755000004100000410000000000014106361602020433 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/distributors/base_distributor.rb0000644000004100000410000000264714106361602024335 0ustar www-datawww-datamodule Knapsack module Distributors class BaseDistributor attr_reader :report, :node_tests, :test_file_pattern def initialize(args={}) @report = args[:report] || raise('Missing report') @test_file_pattern = args[:test_file_pattern] || raise('Missing test_file_pattern') @ci_node_total = args[:ci_node_total] || raise('Missing ci_node_total') @ci_node_index = args[:ci_node_index] || raise('Missing ci_node_index') if ci_node_index >= ci_node_total raise("Node indexes are 0-based. Can't be higher or equal to the total number of nodes.") end end def ci_node_total @ci_node_total.to_i end def ci_node_index @ci_node_index.to_i end def tests_for_current_node tests_for_node(ci_node_index) end def tests_for_node(node_index) assign_test_files_to_node post_tests_for_node(node_index) end def assign_test_files_to_node default_node_tests post_assign_test_files_to_node end def all_tests @all_tests ||= Dir.glob(test_file_pattern).uniq.sort end protected def post_tests_for_node(node_index) raise NotImplementedError end def post_assign_test_files_to_node raise NotImplementedError end def default_node_tests raise NotImplementedError end end end end knapsack-4.0.0/lib/knapsack/distributors/report_distributor.rb0000644000004100000410000000417714106361602024736 0ustar www-datawww-datamodule Knapsack module Distributors class ReportDistributor < BaseDistributor def sorted_report @sorted_report ||= report.sort_by { |_test_path, time| -time } end def sorted_report_with_existing_tests @sorted_report_with_existing_tests ||= sorted_report.select { |test_path, time| all_tests.include?(test_path) } end def total_time_execution @total_time_execution ||= sorted_report_with_existing_tests.map { |_test_path, time| time }.reduce(0, :+).to_f end def node_time_execution @node_time_execution ||= total_time_execution / ci_node_total end private def post_assign_test_files_to_node assign_test_files sort_assigned_test_files end def sort_assigned_test_files node_tests.map do |node| node[:test_files_with_time] .sort_by! { |file_name, _time| file_name } .reverse! .sort_by! { |_file_name, time| time } .reverse! end end def post_tests_for_node(node_index) node_test = node_tests[node_index] return unless node_test node_test[:test_files_with_time].map { |file_name, _time| file_name } end def default_node_tests @node_tests = Array.new(ci_node_total) do |index| { node_index: index, time_left: node_time_execution, test_files_with_time: [], weight: 0 } end end def assign_test_files sorted_report_with_existing_tests.map do |test_file_with_time| test_execution_time = test_file_with_time.last current_lightest_node = node_tests.min_by { |node| node[:weight] } updated_node_data = { time_left: current_lightest_node[:time_left] - test_execution_time, weight: current_lightest_node[:weight] + test_execution_time, test_files_with_time: current_lightest_node[:test_files_with_time] << test_file_with_time } current_lightest_node.merge!(updated_node_data) end end end end end knapsack-4.0.0/lib/knapsack/distributors/leftover_distributor.rb0000644000004100000410000000146214106361602025243 0ustar www-datawww-datamodule Knapsack module Distributors class LeftoverDistributor < BaseDistributor def report_tests @report_tests ||= report.keys end def leftover_tests @leftover_tests ||= all_tests - report_tests end private def post_assign_test_files_to_node node_index = 0 leftover_tests.each do |test_file| node_tests[node_index] << test_file node_index += 1 node_index %= ci_node_total end end def post_tests_for_node(node_index) test_files = node_tests[node_index] return unless test_files test_files end def default_node_tests @node_tests = [] ci_node_total.times do |index| @node_tests[index] = [] end end end end end knapsack-4.0.0/lib/knapsack/tracker.rb0000644000004100000410000000410714106361602017660 0ustar www-datawww-datamodule Knapsack class Tracker include Singleton attr_reader :global_time, :test_files_with_time attr_writer :test_path def initialize set_defaults end def config(opts={}) @config ||= default_config @config.merge!(opts) end def reset! set_defaults end def start_timer @start_time = now_without_mock_time.to_f end def stop_timer execution_time = now_without_mock_time.to_f - @start_time if test_path update_global_time(execution_time) update_test_file_time(execution_time) @test_path = nil end execution_time end def test_path @test_path.sub(/^\.\//, '') if @test_path end def time_exceeded? global_time > max_node_time_execution end def max_node_time_execution report_distributor.node_time_execution + config[:time_offset_in_seconds] end def exceeded_time global_time - max_node_time_execution end private def default_config { enable_time_offset_warning: Config::Tracker.enable_time_offset_warning, time_offset_in_seconds: Config::Tracker.time_offset_in_seconds, generate_report: Config::Tracker.generate_report } end def set_defaults @global_time = 0 @test_files_with_time = {} @test_path = nil end def update_global_time(execution_time) @global_time += execution_time end def update_test_file_time(execution_time) @test_files_with_time[test_path] ||= 0 @test_files_with_time[test_path] += execution_time end def report_distributor @report_distributor ||= Knapsack::Distributors::ReportDistributor.new({ report: Knapsack.report.open, test_file_pattern: Knapsack::Config::Env.test_file_pattern || Knapsack.report.config[:test_file_pattern], ci_node_total: Knapsack::Config::Env.ci_node_total, ci_node_index: Knapsack::Config::Env.ci_node_index }) end def now_without_mock_time Process.clock_gettime(Process::CLOCK_MONOTONIC) end end end knapsack-4.0.0/lib/knapsack/task_loader.rb0000644000004100000410000000027314106361602020515 0ustar www-datawww-datarequire 'rake' module Knapsack class TaskLoader include ::Rake::DSL def load_tasks Dir.glob("#{Knapsack.root}/lib/tasks/*.rake").each { |r| import r } end end end knapsack-4.0.0/lib/knapsack/allocator.rb0000644000004100000410000000144214106361602020204 0ustar www-datawww-datamodule Knapsack class Allocator def initialize(args={}) @report_distributor = Knapsack::Distributors::ReportDistributor.new(args) @leftover_distributor = Knapsack::Distributors::LeftoverDistributor.new(args) end def report_node_tests @report_node_tests ||= @report_distributor.tests_for_current_node end def leftover_node_tests @leftover_node_tests ||= @leftover_distributor.tests_for_current_node end def node_tests @node_tests ||= report_node_tests + leftover_node_tests end def stringify_node_tests node_tests .map do |test_file| %{"#{test_file}"} end.join(' ') end def test_dir Knapsack::Config::Env.test_dir || @report_distributor.test_file_pattern.split('/').first end end end knapsack-4.0.0/lib/knapsack/config/0000755000004100000410000000000014106361602017143 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/config/tracker.rb0000644000004100000410000000051114106361602021120 0ustar www-datawww-datamodule Knapsack module Config class Tracker class << self def enable_time_offset_warning true end def time_offset_in_seconds 30 end def generate_report !!(ENV['KNAPSACK_GENERATE_REPORT'] =~ /\Atrue|0\z/i) end end end end end knapsack-4.0.0/lib/knapsack/config/env.rb0000644000004100000410000000324514106361602020264 0ustar www-datawww-datamodule Knapsack module Config class Env class << self def report_path ENV['KNAPSACK_REPORT_PATH'] end def ci_node_total ENV['CI_NODE_TOTAL'] || ENV['CIRCLE_NODE_TOTAL'] || ENV['SEMAPHORE_JOB_COUNT'] || ENV['SEMAPHORE_THREAD_COUNT'] || ENV['BUILDKITE_PARALLEL_JOB_COUNT'] || ENV['SNAP_WORKER_TOTAL'] || ENV['BITBUCKET_PARALLEL_STEP_COUNT'] || 1 end def ci_node_index gitlab_ci_node_index || ENV['CI_NODE_INDEX'] || ENV['CIRCLE_NODE_INDEX'] || semaphore_job_index || semaphore_current_thread || ENV['BUILDKITE_PARALLEL_JOB'] || snap_ci_worker_index || ENV['BITBUCKET_PARALLEL_STEP'] || 0 end def test_file_pattern ENV['KNAPSACK_TEST_FILE_PATTERN'] end def test_dir ENV['KNAPSACK_TEST_DIR'] end def log_level { "debug" => Knapsack::Logger::DEBUG, "info" => Knapsack::Logger::INFO, "warn" => Knapsack::Logger::WARN, }[ENV['KNAPSACK_LOG_LEVEL']] || Knapsack::Logger::INFO end private def index_starting_from_one(index) index.to_i - 1 if index end def semaphore_job_index index_starting_from_one(ENV['SEMAPHORE_JOB_INDEX']) end def semaphore_current_thread index_starting_from_one(ENV['SEMAPHORE_CURRENT_THREAD']) end def snap_ci_worker_index index_starting_from_one(ENV['SNAP_WORKER_INDEX']) end def gitlab_ci_node_index return unless ENV['GITLAB_CI'] index_starting_from_one(ENV['CI_NODE_INDEX']) end end end end end knapsack-4.0.0/lib/knapsack/allocator_builder.rb0000644000004100000410000000153414106361602021714 0ustar www-datawww-datamodule Knapsack class AllocatorBuilder def initialize(adapter_class) @adapter_class = adapter_class set_report_path end def allocator Knapsack::Allocator.new({ report: Knapsack.report.open, test_file_pattern: test_file_pattern, ci_node_total: Knapsack::Config::Env.ci_node_total, ci_node_index: Knapsack::Config::Env.ci_node_index }) end def test_dir Knapsack::Config::Env.test_dir || test_file_pattern.split('/').first end private def set_report_path Knapsack.report.config({ report_path: report_path }) end def report_path Knapsack::Config::Env.report_path || @adapter_class::REPORT_PATH end def test_file_pattern Knapsack::Config::Env.test_file_pattern || @adapter_class::TEST_DIR_PATTERN end end end knapsack-4.0.0/lib/knapsack/presenter.rb0000644000004100000410000000576214106361602020244 0ustar www-datawww-datarequire 'yaml' require 'json' module Knapsack class Presenter class << self def report_yml Knapsack.tracker.test_files_with_time.to_yaml end def report_json JSON.pretty_generate(Knapsack.tracker.test_files_with_time) end def report_details "Knapsack report was generated. Preview:\n" + Presenter.report_json end def global_time global_time = pretty_seconds(Knapsack.tracker.global_time) "\nKnapsack global time execution for tests: #{global_time}" end def time_offset "Time offset: #{Knapsack.tracker.config[:time_offset_in_seconds]}s" end def max_allowed_node_time_execution max_node_time_execution = pretty_seconds(Knapsack.tracker.max_node_time_execution) "Max allowed node time execution: #{max_node_time_execution}" end def exceeded_time exceeded_time = pretty_seconds(Knapsack.tracker.exceeded_time) "Exceeded time: #{exceeded_time}" end def time_offset_log_level if Knapsack.tracker.time_exceeded? Knapsack::Logger::WARN else Knapsack::Logger::INFO end end def time_offset_warning str = %{\n========= Knapsack Time Offset Warning ========== #{Presenter.time_offset} #{Presenter.max_allowed_node_time_execution} #{Presenter.exceeded_time} } if Knapsack.tracker.time_exceeded? str << %{ Test on this CI node ran for longer than the max allowed node time execution. Please regenerate your knapsack report. If that doesn't help, you can split your slowest test files into smaller files, or bump up the time_offset_in_seconds setting. You can also allow the knapsack_pro gem to automatically divide your slow test files across parallel CI nodes. https://knapsackpro.com/faq/question/how-to-auto-split-test-files-by-test-cases-on-parallel-jobs-ci-nodes?utm_source=knapsack_gem&utm_medium=knapsack_gem_output&utm_campaign=knapsack_gem_time_offset_warning } else str << %{ Global time execution for this CI node is fine. Happy testing!} end str << "\n\nNeed explanation? See FAQ:" str << "\nhttps://docs.knapsackpro.com/ruby/knapsack#faq" str << "\n=================================================\n" str << %{Read up on the benefits of a dynamic test split with Knapsack Pro Queue Mode: https://docs.knapsackpro.com/2020/how-to-speed-up-ruby-and-javascript-tests-with-ci-parallelisation Sign up for Knapsack Pro here: https://knapsackpro.com} str << "\n=================================================\n" str end def pretty_seconds(seconds) sign = '' if seconds < 0 seconds = seconds*-1 sign = '-' end return "#{sign}#{seconds}s" if seconds.abs < 1 time = Time.at(seconds).gmtime.strftime('%Hh %Mm %Ss') time_without_zeros = time.gsub(/00(h|m|s)/, '').strip sign + time_without_zeros end end end end knapsack-4.0.0/lib/knapsack/logger.rb0000644000004100000410000000120214106361602017475 0ustar www-datawww-datamodule Knapsack class Logger attr_accessor :level DEBUG = 0 INFO = 1 WARN = 2 UnknownLogLevel = Class.new(StandardError) def log(level, text=nil) level_method = case level when DEBUG then :debug when INFO then :info when WARN then :warn else raise UnknownLogLevel end public_send(level_method, text) end def debug(text=nil) return if level != DEBUG puts text end def info(text=nil) return if level > INFO puts text end def warn(text=nil) return if level > WARN puts text end end end knapsack-4.0.0/lib/knapsack/runners/0000755000004100000410000000000014106361602017372 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/runners/rspec_runner.rb0000644000004100000410000000117514106361602022430 0ustar www-datawww-datamodule Knapsack module Runners class RSpecRunner def self.run(args) allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::RSpecAdapter).allocator Knapsack.logger.info Knapsack.logger.info 'Report specs:' Knapsack.logger.info allocator.report_node_tests Knapsack.logger.info Knapsack.logger.info 'Leftover specs:' Knapsack.logger.info allocator.leftover_node_tests Knapsack.logger.info cmd = %Q[bundle exec rspec #{args} --default-path #{allocator.test_dir} -- #{allocator.stringify_node_tests}] exec(cmd) end end end end knapsack-4.0.0/lib/knapsack/runners/spinach_runner.rb0000644000004100000410000000130214106361602022731 0ustar www-datawww-datamodule Knapsack module Runners class SpinachRunner def self.run(args) allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::SpinachAdapter).allocator Knapsack.logger.info Knapsack.logger.info 'Report features:' Knapsack.logger.info allocator.report_node_tests Knapsack.logger.info Knapsack.logger.info 'Leftover features:' Knapsack.logger.info allocator.leftover_node_tests Knapsack.logger.info cmd = %Q[bundle exec spinach #{args} --features_path #{allocator.test_dir} -- #{allocator.stringify_node_tests}] system(cmd) exit($?.exitstatus) unless $?.exitstatus == 0 end end end end knapsack-4.0.0/lib/knapsack/runners/cucumber_runner.rb0000644000004100000410000000127714106361602023124 0ustar www-datawww-datamodule Knapsack module Runners class CucumberRunner def self.run(args) allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::CucumberAdapter).allocator Knapsack.logger.info Knapsack.logger.info 'Report features:' Knapsack.logger.info allocator.report_node_tests Knapsack.logger.info Knapsack.logger.info 'Leftover features:' Knapsack.logger.info allocator.leftover_node_tests Knapsack.logger.info cmd = %Q[bundle exec cucumber #{args} --require #{allocator.test_dir} -- #{allocator.stringify_node_tests}] system(cmd) exit($?.exitstatus) unless $?.exitstatus == 0 end end end end knapsack-4.0.0/lib/knapsack/runners/minitest_runner.rb0000644000004100000410000000156414106361602023152 0ustar www-datawww-datamodule Knapsack module Runners class MinitestRunner def self.run(args) allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::MinitestAdapter).allocator Knapsack.logger.info Knapsack.logger.info 'Report tests:' Knapsack.logger.info allocator.report_node_tests Knapsack.logger.info Knapsack.logger.info 'Leftover tests:' Knapsack.logger.info allocator.leftover_node_tests Knapsack.logger.info task_name = 'knapsack:minitest_run' if Rake::Task.task_defined?(task_name) Rake::Task[task_name].clear end Rake::TestTask.new(task_name) do |t| t.warning = false t.libs << allocator.test_dir t.test_files = allocator.node_tests t.options = args end Rake::Task[task_name].invoke end end end end knapsack-4.0.0/lib/knapsack/extensions/0000755000004100000410000000000014106361602020075 5ustar www-datawww-dataknapsack-4.0.0/lib/knapsack/extensions/time.rb0000644000004100000410000000012514106361602021356 0ustar www-datawww-datarequire 'time' class Time class << self alias_method :raw_now, :now end end knapsack-4.0.0/knapsack_spinach_report.json0000644000004100000410000000017714106361602021130 0ustar www-datawww-data{ "spinach_examples/scenario1.feature": 0.0017168521881103516, "spinach_examples/scenario2.feature": 0.002157926559448242 }knapsack-4.0.0/Gemfile0000644000004100000410000000013514106361602014627 0ustar www-datawww-datasource 'https://rubygems.org' # Specify your gem's dependencies in knapsack.gemspec gemspec knapsack-4.0.0/knapsack_rspec_report.json0000644000004100000410000000110314106361602020605 0ustar www-datawww-data{ "spec_examples/fast/3_spec.rb": 7.82012939453125e-05, "spec_examples/fast/1_spec.rb": 1.5974044799804688e-05, "spec_examples/slow/c_spec.rb": 1.002314567565918, "spec_examples/slow/a_spec.rb": 1.6023659706115723, "spec_examples/fast/2_spec.rb": 6.985664367675781e-05, "spec_examples/slow/b_spec.rb": 0.9009926319122314, "spec_examples/fast/6_spec.rb": 0.00015687942504882812, "spec_examples/fast/4_spec.rb": 9.894371032714844e-05, "spec_examples/fast/use_shared_example_spec.rb": 0.10031008720397949, "spec_examples/fast/5_spec.rb": 0.00011754035949707031 }knapsack-4.0.0/.github/0000755000004100000410000000000014106361602014675 5ustar www-datawww-dataknapsack-4.0.0/.github/workflows/0000755000004100000410000000000014106361602016732 5ustar www-datawww-dataknapsack-4.0.0/.github/workflows/ruby.yml0000644000004100000410000001351414106361602020442 0ustar www-datawww-dataname: Ruby on: push: branches: [master] pull_request: branches: [master] jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0' ruby: [2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', truffleruby-head] steps: - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true # runs 'bundle install' and caches installed gems automatically # Test for knapsack gem - name: Run specs for Knapsack gem run: bundle exec rspec spec # Tests for example rspec test suite - name: Generate knapsack report run: KNAPSACK_GENERATE_REPORT=true bundle exec rspec --default-path spec_examples --tag focus - name: Run specs with enabled time offset warning run: bundle exec rspec --default-path spec_examples - name: Run rake task for the first CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec - name: Run rake task for the second CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec - name: Check passing arguments to rspec. Run only specs with custom_focus tag (1/2) run: KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake "knapsack:rspec[--tag custom_focus]" - name: Check passing arguments to rspec. Run only specs with custom_focus tag (2/2) run: KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bin/knapsack rspec "--tag custom_focus --profile" - name: Run specs with custom knapsack logger run: CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec - name: Run specs for custom knapsack report path run: | cp knapsack_rspec_report.json knapsack_custom_rspec_report.json KNAPSACK_REPORT_PATH="knapsack_custom_rspec_report.json" KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec - name: Run specs when spec file was removed and still exists in knapsack report json run: | rm spec_examples/fast/1_spec.rb KNAPSACK_TEST_FILE_PATTERN="spec_examples/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec - name: Run specs from multiple directories with manually specified test_dir run: KNAPSACK_TEST_DIR=spec_examples KNAPSACK_TEST_FILE_PATTERN="{spec_examples,spec_engine_examples}/**{,/*/**}/*_spec.rb" bundle exec rake knapsack:rspec # Tests for example minitest test suite - name: Generate knapsack report run: KNAPSACK_GENERATE_REPORT=true bundle exec rake test - name: Run tests with enabled time offset warning run: bundle exec rake test - name: Run rake task for the first CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake knapsack:minitest - name: Run rake task for the second CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake knapsack:minitest - name: Check passing arguments to minitest. Run verbose tests run: | KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake "knapsack:minitest[--verbose]" KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bin/knapsack minitest "--verbose --pride" - name: Run tests with custom knapsack logger run: CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake knapsack:minitest - name: Run tests for custom knapsack report path run: | cp knapsack_minitest_report.json knapsack_custom_minitest_report.json KNAPSACK_REPORT_PATH="knapsack_custom_minitest_report.json" KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake knapsack:minitest - name: Run tests when test file was removed and still exists in knapsack report json run: | rm test_examples/fast/unit_test.rb KNAPSACK_TEST_FILE_PATTERN="test_examples/**{,/*/**}/*_test.rb" bundle exec rake knapsack:minitest # Tests for example spinach test suite - name: Generate knapsack report run: KNAPSACK_GENERATE_REPORT=true bundle exec spinach -f spinach_examples - name: Run tests with enabled time offset warning run: bundle exec spinach -f spinach_examples - name: Run rake task for the first CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="spinach_examples/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_examples]" - name: Run rake task for the second CI node run: CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="spinach_examples/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_examples]" - name: Run tests with custom knapsack logger run: CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="spinach_examples/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_examples]" - name: Run tests for custom knapsack report path run: | cp knapsack_spinach_report.json knapsack_custom_spinach_report.json KNAPSACK_REPORT_PATH="knapsack_custom_spinach_report.json" KNAPSACK_TEST_FILE_PATTERN="spinach_examples/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_examples]" - name: Run tests when test file was removed and still exists in knapsack report json run: | rm spinach_examples/scenario1.feature KNAPSACK_TEST_FILE_PATTERN="spinach_examples/**{,/*/**}/*.feature" bundle exec rake "knapsack:spinach[-f spinach_examples]" knapsack-4.0.0/LICENSE.txt0000644000004100000410000000205414106361602015161 0ustar www-datawww-dataCopyright (c) 2014 Artur Trzop MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. knapsack-4.0.0/spec_examples/0000755000004100000410000000000014106361602016165 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/fast/0000755000004100000410000000000014106361602017122 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/fast/6_spec.rb0000644000004100000410000000012114106361602020620 0ustar www-datawww-datadescribe 'Fast 6', :focus do it {} it {} it {} it {} it {} it {} end knapsack-4.0.0/spec_examples/fast/4_spec.rb0000644000004100000410000000010114106361602020614 0ustar www-datawww-datadescribe 'Fast 4', :focus do it {} it {} it {} it {} end knapsack-4.0.0/spec_examples/fast/1_spec.rb0000644000004100000410000000007014106361602020616 0ustar www-datawww-datadescribe 'Fast 1', :focus, :custom_focus do it {} end knapsack-4.0.0/spec_examples/fast/use_shared_example_spec.rb0000644000004100000410000000012014106361602024307 0ustar www-datawww-datadescribe 'Use Shared Example', :focus do it_behaves_like 'common exmaple' end knapsack-4.0.0/spec_examples/fast/3_spec.rb0000644000004100000410000000007114106361602020621 0ustar www-datawww-datadescribe 'Fast 3', :focus do it {} it {} it {} end knapsack-4.0.0/spec_examples/fast/5_spec.rb0000644000004100000410000000011114106361602020616 0ustar www-datawww-datadescribe 'Fast 5', :focus do it {} it {} it {} it {} it {} end knapsack-4.0.0/spec_examples/fast/2_spec.rb0000644000004100000410000000006114106361602020617 0ustar www-datawww-datadescribe 'Fast 2', :focus do it {} it {} end knapsack-4.0.0/spec_examples/slow/0000755000004100000410000000000014106361602017151 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/slow/a_spec.rb0000644000004100000410000000013014106361602020722 0ustar www-datawww-datadescribe 'Slow A', :focus do it { sleep 1 } it { sleep 0.1 } it { sleep 0.5 } end knapsack-4.0.0/spec_examples/slow/c_spec.rb0000644000004100000410000000013214106361602020726 0ustar www-datawww-datadescribe 'Slow C', :focus do it { sleep 0.8 } it { sleep 0.1 } it { sleep 0.1 } end knapsack-4.0.0/spec_examples/slow/b_spec.rb0000644000004100000410000000013214106361602020725 0ustar www-datawww-datadescribe 'Slow B', :focus do it { sleep 0.3 } it { sleep 0.2 } it { sleep 0.4 } end knapsack-4.0.0/spec_examples/spec_helper.rb0000644000004100000410000000106714106361602021007 0ustar www-datawww-datarequire 'knapsack' require 'support/shared_examples/common_example' Knapsack.tracker.config({ enable_time_offset_warning: true, time_offset_in_seconds: 3 }) Knapsack.report.config({ report_path: 'knapsack_rspec_report.json' }) if ENV['CUSTOM_LOGGER'] require 'logger' Knapsack.logger = Logger.new(STDOUT) Knapsack.logger.level = Logger::INFO end Knapsack::Adapters::RSpecAdapter.bind RSpec.configure do |config| config.order = :random config.mock_with :rspec do |mocks| mocks.syntax = :expect mocks.verify_partial_doubles = true end end knapsack-4.0.0/spec_examples/support/0000755000004100000410000000000014106361602017701 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/support/shared_examples/0000755000004100000410000000000014106361602023045 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/support/shared_examples/common_example.rb0000644000004100000410000000007314106361602026375 0ustar www-datawww-datashared_examples 'common exmaple' do it { sleep 0.1 } end knapsack-4.0.0/spec_examples/leftover/0000755000004100000410000000000014106361602020013 5ustar www-datawww-dataknapsack-4.0.0/spec_examples/leftover/a_spec.rb0000644000004100000410000000027414106361602021575 0ustar www-datawww-data# this file should not be included in knapsack_rspec_report.json describe 'Leftover Slow A' do it { sleep 1 } it { sleep 0.1 } it { sleep 0.5 } it { sleep 3 } it { sleep 1 } end knapsack-4.0.0/spec_examples/leftover/1_spec.rb0000644000004100000410000000017214106361602021512 0ustar www-datawww-data# this file should not be included in knapsack_rspec_report.json describe 'Leftover Fast 1', :custom_focus do it {} end knapsack-4.0.0/spinach_examples/0000755000004100000410000000000014106361602016660 5ustar www-datawww-dataknapsack-4.0.0/spinach_examples/scenario2.feature0000644000004100000410000000037114106361602022123 0ustar www-datawww-dataFeature: Test how spinach works for second test Scenario: Informal greeting Given I have an empty array And I append only my first name to it When I pass it to my super-duper method Then the output should contain a casual greeting knapsack-4.0.0/spinach_examples/scenario1.feature0000644000004100000410000000040214106361602022115 0ustar www-datawww-dataFeature: Test how spinach works for first test Scenario: Format greeting Given I have an empty array And I append my first name and my last name to it When I pass it to my super-duper method Then the output should contain a formal greeting knapsack-4.0.0/spinach_examples/steps/0000755000004100000410000000000014106361602020016 5ustar www-datawww-dataknapsack-4.0.0/spinach_examples/steps/test_how_spinach_works_for_first_test.rb0000644000004100000410000000046314106361602030250 0ustar www-datawww-dataclass Spinach::Features::TestHowSpinachWorksForFirstTest < Spinach::FeatureSteps step 'I have an empty array' do end step 'I append my first name and my last name to it' do end step 'I pass it to my super-duper method' do end step 'the output should contain a formal greeting' do end end knapsack-4.0.0/spinach_examples/steps/test_how_spinach_works_for_second_test.rb0000644000004100000410000000045014106361602030370 0ustar www-datawww-dataclass Spinach::Features::TestHowSpinachWorksForSecondTest < Spinach::FeatureSteps step 'I have an empty array' do end step 'I append only my first name to it' do end step 'I pass it to my super-duper method' do end step 'the output should contain a casual greeting' do end end knapsack-4.0.0/spinach_examples/support/0000755000004100000410000000000014106361602020374 5ustar www-datawww-dataknapsack-4.0.0/spinach_examples/support/env.rb0000644000004100000410000000011414106361602021505 0ustar www-datawww-datarequire 'rspec' require 'knapsack' Knapsack::Adapters::SpinachAdapter.bind