summaryrefslogtreecommitdiff
path: root/fs/aio.c
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2010-07-01 07:55:01 +0200
committerJens Axboe <jaxboe@fusionio.com>2011-03-10 08:52:27 +0100
commit9f5b9425468c85a901d863d241ba5c5dff9b23b8 (patch)
tree0b24e591059698f1e9cb581038d112d5e3f2f4d2 /fs/aio.c
parent2ed1a6bcf97a7ed787e6799bf2e80b9e6f51dca7 (diff)
downloadlinux-9f5b9425468c85a901d863d241ba5c5dff9b23b8.tar.gz
linux-9f5b9425468c85a901d863d241ba5c5dff9b23b8.tar.bz2
linux-9f5b9425468c85a901d863d241ba5c5dff9b23b8.zip
fs: make aio plug
Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'fs/aio.c')
-rw-r--r--fs/aio.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/aio.c b/fs/aio.c
index c5ea494ea9e2..1476bed1c5fb 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1660,6 +1660,7 @@ long do_io_submit(aio_context_t ctx_id, long nr,
long ret = 0;
int i;
struct hlist_head batch_hash[AIO_BATCH_HASH_SIZE] = { { 0, }, };
+ struct blk_plug plug;
if (unlikely(nr < 0))
return -EINVAL;
@@ -1676,6 +1677,8 @@ long do_io_submit(aio_context_t ctx_id, long nr,
return -EINVAL;
}
+ blk_start_plug(&plug);
+
/*
* AKPM: should this return a partial result if some of the IOs were
* successfully submitted?
@@ -1698,6 +1701,7 @@ long do_io_submit(aio_context_t ctx_id, long nr,
if (ret)
break;
}
+ blk_finish_plug(&plug);
aio_batch_free(batch_hash);
put_ioctx(ctx);
y}  {R(2ڙO}* ȅ "F4wqLi r]_u 4G:.xΏ:K Fጯl خ]8 %U^eKtg1'mQ~ T/!nlEWHOhf&Rl ?ŶoX CG; Ip: 41ƲrHZvAqETscVkSilRꂪET. [@Ra7k*MJ͈J_&( */j9 q%’꿈f;~1wxsR`cEgaD:sp)ϵ]//.@:(AbXb.̌9ao3_bz|N}>ߏ w9 ھW_ ݊}x)MJ!f)}ptʝo^p/y;r1 xUW `vl{|)p9!C򾢨YGgk?x3}'o_=n}]oSgUgQI3d9?s,XA!'K;uXoSg"ƱREPTLTESD \+ Ԑ `.o5. Lrp$pp)Z.$0`Tب{AE 7B *(8?h)25A;>>较,0@H6gT*՗ɇ^݉i6gw]z#Xxŋ'$WUtL~fKQm`pAlg[G7"YֿWY3k,N! >a b& y(>|IMS|A2MS۷-aUwx&JVtyqS-.n3s4Ƭ`Z幡zn~?ӷ(>jt1 EZ>w{_XJhd[ܿ B+5auά;#xt%_q1C7]=29ůа xfzn> ܐ̾,z售k|ҏ1˝ɶw~.R~[gkkl ;=G<|_$Raءv0rO Bۨ谴eϮs#*\"E 4⮗kHwЍ*'Eҵ˞ Y]be_v߂ק+}]!B=iaOM|^N+UK]1'O5sc6(A0aozg곪o{ZJVJҎY pF @Ǻ}Wgs˫u(;2zo9|'#e I~n;eo,3u{(5ڲ~OʪRK걕Q!w_xEX[d^G6|xG.G~p/~7u."D-J*89J1}1zwu%xψǾƢ;㪍exbCͅ-=iҌ+cV sr WW_aP Y >j.}UV(1kb9[2rs ?:BLXSAAl3UXA>;OL1$&yǕQut_f-FvD\ ˁb"?l!q3ELE]ןN Qb%u~ RG{XtPE$z~ ʭE?{|e?Sk mEgrT*lxZO^R硅1pO::cVGըÎ]%}Bn[flY]2>^Fux}Gn0gL}"<_jykv]U4MӉfۺ~˔׆_'8a>uqjm|T_DF /Mɨc&˽ۭjmh-nX'yi3nYcyKPm<㵗(kr[ۛ رd8vWoDGw!ѺjW~ b7?Z6>x:V֯K`">2!n˧k/7O17eٜ~txVs>D4Q~>x63*T'}|oUդ,M1<٣@Q_j b 'V!THSGQQI*OV]i6UX*i~/e<#uBԉxwq١ X_J"#MEG=0`\s' nH%;WoWU>ϝH$,2JaZҟ檹m?6dLD7rBݻ*?`#| i~ ѭekI~)6!k.k* U5m.ۯ~g Uf[cYNOgg+W>l>~!vQN9e`Gtr9/t]0/C~~CԫמJ[#Zo :p#5M ECmUŦrM?%j \i=E-2].B CcKelٰ6]^"b@aH ԡB9bXIhCg叢 ^[\COw{D7wkoNv !趷[-^ 9G(V+ ^eAo-*tkdÇ&}'I]Y?Lu%QlQɾG.c\n^Kgw^Կ,J<{gt_@';aB$VY:bWx?#vQ+00I_|] sEr91#'iNbU]fN){r^qJ.5Rx<_L0g6~jaL7q .e G}ZiQ--/`'Sp'=Xa'".-"q^Nm:o{aIj8*"IW`hF1bix9A_!&ux: ijO(TehuQr1Fy"U%J^0| :Ưۘ>}[OJqU>n;J ]I90n;$1\=R19BDc5}/o㊼G\j8FN[;W[jV 'Mb0R߆+ {GgYo'Uscѳ W;B]̯\H{D=!O|{,zt熖X, .} P~7:0|}ָD6x*%g@gCa-N2 _V ess9 XٖF %/Y muxst y2XM֮++m|p 1VT׈::cqĴ8moakD DYjNp/ ,hPx\';<]|2Zϴq!$:T|$;$&y盏Yǀ8%W3[(Z2p#DNgӄ"'ZTc&;DSWМZ!4/N F?zݐ yV9ݣEۇv.( A1غ MmٲC*6O&U3wzC ĞAO,=:=>\۳Ƣj! "()xǜ/;OIjTIJW TȲ $(JĂIJM=\QE(I 4@ҐLIJT A$LZiJ@"д#AKE1='`f)je<ڪSWqY*"Bji %"bB d))j!)^X*& "Y(b i$D|h (a*Hfbhih"bF$)H"?.Ç]%UfZU@gkm ?(2@N5SJU1BU q%5hR be PR41#BP4̅r@ "@P_'9jqEg4"] 1)^>V6{eïm2U; $>o'q|Żgz>}vz".[wݰ[~+"@0AaW 4"Q4!L(D 2CS@%N(#@a 9H?W`'Q*@4 24%4)M!JP BDQI3@4<!&fJ jb#sE?~|8' z?((THRUCكܼ2&i/V~ZmhW{@m|o^I9n6gXІIʤC.~n-WBOfljUBܶdk|hWfY;XvS-~k/dh 9i>v]/'(+KZ NiNIOy /O BgؑapD 5=<ڕO@KH9fW102O99CaPEy rՀbJED슟G ץߦ`y}]VM~K/,>|ۇE T{Tg b7YM#e1$ 8BAR,Y1E/(_>ϐ؃&Y<*ПN?zIG.gnť>"!6_sq1NYqg]c3}KU"CvB!cvui9j6xuաubwd cIHz:5үf)ӌȾC81U %,Xsc|+Eٿ,\W{[P#XT-kpCI!9F;yr^6`*& AB#dw6Qc~y~+.y0xu/cPWpw;|ki:Y[ "=2=v_?p'!O;l| Q-&S5dMoo\Ff8 $ Qn*1omjbM7VmzA&#gM:\~ޏ-4 2p[I_BuGexE~eޱ`"6ߛemrC5vg[88j{V69tj-dl)/pחny?^^h`,]?ATDrT+7ߊf Ѽ$xo}/P!k8zbՉ> g|S?IcUbuA$I7{xp8G_vVΒ Vv\'DRK^[<,0@d DPoD]E Bh,$&tP4z)㲞k\M߇[x~_/m[aԡG{.>/wFΏo1B{mKa}4oåg{Ϲ·I?`ooEo}8zlƔki?faiHۡ^k7w ~wN_G>Dr*PPSH8實fVjk@"oG -w/>\6c^X~Z̠'X5!9v\ #9`Ep}&Ԥ *( !peL0%2w?7&MoҵH$-5E?JlX|㟙2a{fVYz0[rn **J~۷m vv;#<]WsEueJP<>^^[1x:G|_ :| y'>jS 6^<(wC C ~!z WO.z==&]׺sZ-,be\+3v s闥ӧoD4{~J ٧OXv|+㖪^8u;humݯoW|5T< œ1.˼[Bw xݬݴrӯ~N{z8KM˩0w[vl;(Oc+@ .0]/a%s>}{;W æd7j}+B< wgý\f??(9E-Tϑ7b:*'՛HݚܵwVҵw ò<#ߣO,Cyt7.mr.aÞ^!p'?"$0$bf!ۂMDZͽpn9nᔱw{\["Δ__vXi}\#n_GMFY. 0%3JJ DPK^_P(ҋ鷰ݣҫNfb}_7x}cQu@@[; mD)Q)KT0u 綪Fo^Uc * ]vsHLJw@9Q[q22Uח1znw.tC4#b."[7<Оp$~'QMg!E] CmggjƉc8%7ua4p3 ΁1 Ra݂CSE6WODz-Q|2"ޙ9f xSt|O nzxt?(Dmr$ȨUPfJ 3C$&[8-]CTn [x$#vA^f8yD3h j@RB,SƳf ?:z# 4:zt=U)@$mmNso\Wɀx#ٍl Σrv  p bF ^_l6XVcuas=*zі̴A>1]IJhۂx XQ]e b49r׌j']Ԧ~ T}2|qjb=?|G0~no#;Hn? ?&iOߏ-Ur>W8UrK*Z=J|pw)Dh{^ݭ t9mCQW(اqw|x6ڰګb"_XU4@~ոbk˫ȒV]`*01$[zYWcQWAez]}c9!JU@y8(Ok(t*)2 8|4I\l@ 9B:}0y7#NF+%X :?nS$+v흙@/ke|E hak**G'1!~Tb8wo(6yRzGo1 ŢmlL䇵S,OLGw]U厞I\B3VmLxqPO8o|]/ٜz(! Vٖ~ #bkphL,J؋e͸P&SY)"Z%yCvY㘔|0 :|v֎2;ya0J*ib>n I<{55~g2:23a8Wi%}}v^Ns]s״;o5{p >gb'/(W=y!ߒ\>|wԬ=@50j77B&_ti~'fǍy?u { +Gι3xs:HnC{7;FY?{H.J,2f޷vC )3Ms`|6I_Al~j;\߽$<_ܢS`/1hnqA;yrK!F@b~;5IlѨ0YTIOɱ_T4~ "}tɟ͘ 7L<ˊ`8ax~ -+!8mgag/; x\{b1`z{xgv~u{˼2tWsns8?8Im3{g)}|)B 3XAM5'u(gswMg`J m 5 A.ת;ЖHFkU&7IA?qFF<* ʝ {"ƖK8B(H UL68_=q{ tJ%E&,?(vnct{A^]HO>Ϫs'\v㕠N">esҲx$ҿP%>8 ΋Jj) U% 2xpqXS{,H]24Ɣs቙<N&Q΁%!V Ug:o*@Y9{c}7uO ܈Q qrs0b-P 0C9<7f-}~=)nXVx{l?7iOoKۯϢwc33Ȍ?1€@ VWuqeawRcvl5~cK44'sڡYtW2pB1ց0Uv%Fa)/NnmH '0KO|n}j .`DBVB/搤q|y_i,#'^󯕜Ld!5!7;+ILD~evEh(N;7R-6F?KPĊqc%% q;d+ 01l9Kp_(8q8˝&]J!I2oT- !84[㽸N;˟8i=2yY! I6!L1_ :H!kC,elPӲM5ć&D~[p\Vqzbq",Pzeb4@. ;*:קˇoA  $qt}w [7b ݧpc_?//.$p'p}>|OrSv"N>'*!IZY@:7-_RSG@ 8J`CQ!u9b+&G2٧˵]_4hn Xj"b^ZE$vQ{~sFqBQZ <b#@O+ۼ}j,vB4xM8kb7'Qݦ>O|dC.X6% ^A RGyT5lpBg}=!d_Ɍٶ~~L7]5*Db&k" g,1Pitl^ǩ>+9guD$R ]* 1ً->zr{tr.˼x?{۲xx|5hP'C> G_'}@|YGNֱqVeJ&MQ*"~V_Uz8?ۅBc@)5"`ɭ6Vw~6v.im},Qp! 09] Ss:wrCgAI@qjj:9A(J_GJ,Icr@W??xRhտ\5Ύ0np}"\ s釼̄uUB8n?Â@B;#fq%Ur_I}m;AX}dk ;g6w. /b'rp2: (%e/%d璮zFm<-8M%nX9`={DpNΉ :tgqsG(cٕ؇/=} \B=e54W>{ q\HŧMnױ5NlȰGqUgIUqpW`20z  a)>DE-X8~bJ^~=ƪ5=n*"OcWa)M|b)8Q7F8rWH |ܵzJ&ԃUEoXM՜.pFY侒.H?6At7]8*ŏg =[vSx:Jr~?Zi$"w6`;|yADǶe( A ]ȫ gt(ϨntL]nim7τF{(23M xyYϨ P;t$,2] ;E:> OhlZG ޚRiH+!MQM:N<\o[ߦ؜{|׎ [=:?$?_f]6BkHs?$~"ekͧX-ЊVœ 0O1:fj\!D,|1'L2A{ *4aiAe,U^d~?o2L0V*pjw#a{~ȋ*"DT0H̨$ PI4'9~^b&FF $hYD_ LTd !:W;²/c.ۚ En1gJKMN&1V38(]+Cxw B¹ Gc2c"v·q]b_ZcHs,dw4x&\\<,%rpT^]6d>*Tq\@A #117y oXxj@HMU)q4D&0B`DUW3 ~wLefYBrWWp4N2q0i4AIVu{JB9qF2C]H8|fFiFJL jGțQB8Z.zA_Y RrrU"I 8,(AHS2@FH)q1[)U! ipN:ID7@W(9{3\<`<6SFDgp.僇>@ _쀕7^oi龘j[x_q,,o#Ɲ[z@p'WP|bĹOP=&\YQ$rO&ҳA<;9H$"F¼ f'1zr3`4r8/2 dzˢ^H024%tOqquvU[U*>Զ$,rrf|zoo?<}g ~4L%ZZ&.jɚXZ!u_GFn=YGLunUܣai`Y cXx!*"ՙ - u;Q 0#{_G96`rnKE"Ys/K2<\. 6~)rs3~p S!/KC/5ݵNGzYJXtoe7Ǻ !rI2a;%\~y9t=9OwԂ^9{e| ,A#9V3y~|es/B1W>岎Whٺ}]/G/{̺)Mv@,c㳎"%(z>c˳>,(2w9dzڽNt8wčceD3ݞgǹMjÄFQisϴ #xHF𿟺rR7!u[=PV, ig7MWɌޜt`/>itԊ yGG MSr@/?nY۾8N&Tb̌|d C=7n,ѼSsU`0u/cC/XV a<侒՛`o 2lDJntx'|?jR8Trtk#1(qwBm $6t,MO1hâe_q!N.V媠$<#J+uhV*ɖ`=cy t9l<Y*_Yg4֌PT9꿜Yq/1!?  sE2oaު aZ9,`)SX Jpu6D}&Q\l~[9.Rp֡L82pl{2֚\Ň7Wרּ}:AÙh#3%ƏѠXVjIuTi/γ̤9=^aBЮOǝtXC{6Jto5|e#j@霶GF=qZS_ m[O}s:(}q ޅ ΪIfl1a@06>;Q>HF_lU`.Q:I *µړOvWuXN 2Jñ H$?uf|Kᙃ7}^cj.޴f9@v_g!a&tB#F?Ty r×5gAJ'޴9߁`,IAh 3˽I? C@C}HQ-y=ORΦQO8@s0DƆQsV!: ~? b:]ݖ~'nVPi [~6MΎfɪ] (UUe00R{(~α2EL<u%iFS. G-a.y$SdOy"K`C%ݭ8;^^6Jvk07,Xu-e% \}dz1χ})Uzbmr >R)ŗ'A~$-[R~J( nBmšC\UkG}s*MZ1PְDMCٿ1CV_Nuf+&)kǽ֣X7V:lx?8't[Q^7ۚ#FYa4ҁh 읡k:[<7Fsvۜߓsf~]FȕE}L^vj(0LtF8?U['@Of]f?)ubH~7[.+EIMX6/ۋJ`L''B ][)Ogeɯn'6f/trA9I9ØNb rtCv#? /(628, ;lk,a\\̄yMJ WYCa?޶ۖo>=& %ם:m*IQȁe8qr|b p5K?*5?Ѳwܻ8LWbݥA p!Q?Fր椹Cq\"5w9t; 'MlyKTOh޽11U[V&?&Hr4#{!} Gްeum2Y4(#sEKY0) S+aB Cڣ@~2~ݭhV_(\`׷9{Zbd&VcgN>ӑœ2Yc8f&Ib_l9uᐮ9\~y8?c֚4G,)A "B)o;.1ެ;2`˳!1 R`˘Kyu>L$31v1>6>x bApnQm!;CxTi3Xqt KCxTqi+d+\kJvm]rBM*RC$z+|ZvN| ǍYmU5&NL Ʌ>M"$\55s ԰ۘ'w9}8ppR9VFH fAoT )lXNkYJF#^J7Q[^ͲfvPS'ɒLjҩ Pt6n zܴ!d$$67k6ƚZT$ ,'O~0s=,Kt/uCÖl[ i٘+q"ԧtX\|@rɹ̆.ςL^;O,[cGrsxWS7_Av9/a|yev- moKlF0O[Lr_55ާծu QlE0-{|s +]䂋2蕮@SqGJ/*$A GL*h̔E:(^B3p4yk!bA:栁i =G- dwj^Fc:^Y\xO iK>/'zbTیuOw߿q#Oz'V}Dm9kq\@T.%zqj%c4(+Wo-n2^ ʏ!6WfKHhdCe'Ir>!vInӅLx:0!$BĠb+}oߚ%Œ}MbLf XdC,I%3btH{˭䁃j(ЈҟO͡ .BXsr4%W'4rpn.M/u;\$r"q@9_cSlPrerUxd%1U.yuYq$Ao?nuѰ3O, k.NIvW _"56JOewÊ]8Bj?!~KH]|qN?IP9c)z2GF&y(q(2Ԃ~ pg=y%1)Ff KՅuʟs#"1 Dx+oTrv|;`NÖf2_@-cPȼ)JBD.U* ㉜zMO7w=Sb.n@(ȍՆol \;~E:aj7u:} 4`\@GPzȠHg<*%1{"pj#K+l0;H@Bn{b 9M_9N~|TԹ:* RO.-Q.̗l4i) =W[*+^D3)>"+?sC)ٴ=^S|w?qYxsw@jh-Qp"qEu8XbO^8wd¼'.\MS<.,.PzKr?%:λZG#׽ tCA³4RDkfӋK!Z촫\;1P8gv}J@ ̹5,<v?R=?8m0\W}w g<,L}Uq䩍(9asP[ ;Pټ¸}-ps1'LìR\Y<0ͅΎ^0 xɇG!QJ}ɸksBFQ*cA44{ױ7))g:{cG߇@pǫn"(A##m*c8?smEڽ0x:0]rr.7WG. U}͙(A_ u,wHmQX8"a郃W;+ .R~VxѢ.3XBm̪)cM|Yȸ3f.`ȨkǹV5f,Z8ae˹C૑Q+} $I(wB4vϖ \Ƭ-(3({sҵ|OV.^(eH$AË]ÇX"R;!DOI2#PSos}ƛu:0@REĨ%vk{޸^$ * ^l}~/ ~4 PIArʕ}*jO2oqX(kQ^  lo t҆f*\s"v󻾤V=mF%£엔=Y\蠿9:QjHHU:kupKpWv >ukG #~'fsGHݗ?lL{U|/":r]9_jŠyN,y"2=֮PhEL?gFw| F7)u_[FMns RoNLn8dԃ+A2C}q*#,*tg;7|Md!uF#0\&Չp:EzO72DGz~X34L9ʲ˻Á泂ia[0z!"V\S]gT=J,!ݻϧl|~mzL~6qbhM;AgCI;M͝HI=RζK𖐩4=vU7ߛF9~ѓaO90tBq9 R+{i%q)t^XÈ΂sb@HhcBJSώ1>8/ۋ?0 =t9Zއz! Σ>4dV 0 D4#W#ALA vKRD^ 43a{uOqc&w->ϪeM}n n D&Te%29O'`QH%#ODǶ~j"3Ǿgf7v"ٷ%y澈$2 G{Y[E|""f{@;>W[S\))'omt0Abc5= K(xS0ί bpdyWVW{mj ˙=|uS'g+ޘ^"Y_;ӌHvsˠj5 RQ;kc7`#K٪QUsUN4uCg\)ùTwDUQà)ʧq>;gĉUQpzzkIn[H3c$㩅piXG qvr "҄Gf$V)OUHeq^clԪ>ȿ*A~]-yLy뇙\I(Y&{0pSw/AH4 f~F Iݕ,(kFbp,1)qxq/kᨍ&3Y PCPBo[U 6`b`\\Y>g3@r6SՄź:bd"ove}jbj6U>b7S'U?y{p.i~U1+#m)yȪ@z FudcUs_' 9e  8HF(L=Z8Ap$۲Wz>=U:stF,Lگ} ~@6u,/zH˃ (CmΔ_#W-c굤%ܼriu2Xͱ7EXN)Oqa?B(/uȥ-Va\萿:ϭ ^'ZT7>O07hhު:/"y u&-15ϔQovzC2G[XÊ?pM2xk*es0b/_qbu:ΑDcD| &%J[uQN#4:E.A=UiG C] ƋpWBf#]ܚ^KH!yb%@ߍLë@:pe(}>g#k^Ze͒'n[>g3{mZPDrgr.(`D.H(mmJ,8ge- YЯ;VO'K1ѶɧN=JLW^bpPV9;c)75JoWǎXS.Z/L, ;Rwt}$_8@8_XLw"O8ݳ8PS 6f ~uŎVIA4{|%Q/pG|\)|C2}F{U0!UT ӛST{t4Q=iw (BaYc,[磏ABX}KO+ֲq &ʢɩB:L̷̨~Wm0`)ŊRm2d@p(Hed Y3el]C>$!^q1gO2TdqU2ڨesHPٸ(L`S4^PsmQHux=\}w/̹T՞}8pk&I\r|)>2 78>sKu6.?]^|gG鏠c:Cdzv05LSkE ~MMQo vZcߑsf)IA8~1T>grEW LeF\ʰmUqV_`XN Vv3X9_!2 hU_V:uU CEUO'(VLy?ap"RBCxB- Dy"MSyŁ*`,f׏XXf5 wa8>hߋ$v7l0v{T-POc(i*V4>7_xBF\W v5­Jnsz(R$]ubK4Csp<<~"{P>65xO]I.ֽNhĆ^v݉K1L_e1HsG>8AN(_EA1#”OQd/*58<(r#tɘl5; >faj *)JɝfQd6CA™љsA -&c]  pLHF'q !3V2g5+FVе. CiUM'\)!}GSnM إYxv?蔌P54VP9p;9Y `j͚( b.yL}Tw)י%8Q`Jp!g i%1)pDzi=i<—£x+!_7\xX.S_;g}$y ۝|p (-U|!P:턠i7ܷh >gcވZQcGֈ{V`ijZycsnUSg3/2p<Ѭ`!)g3b/SU}:ls~p׊I(&A5Ŕb-ꏤ ~dѴKqZp 螋eo5Ƅ=\Ki sY#gDjE@;w!GqD7>]+\`,Wʖ~73.n}&jfTՂ+l&EhNse8,)J!cSFkx9G$-H S"QraSYat ,h}B!?#ɣ?q^Yj)OVaiJmc≯Ceaod~<i #?xo<\q?~42-W~ھd\+RPyW-FlK(P.ҨĒ߿n8 /y*YMC>874SЮ^Rc|od:􁘱ztZjv"<5p9>"TF] #Gq?jyvmtC<naV9QGlvLх%\X?9{5{(Z<~#ݦv{.uVT(""MF^\\{mXHo+ f Uq K"chb^DhZG1qn ƾB⯭;7}C>a )AL dfafQsi>]V-6m6ϫnjRĽ h=-"!{ab_B -z!j {=hfPM [&IwS&"p]Mp1kOLȓqT~n$u?.nϝIGvA9_u8źIRo x@zB|ζXB8ϡ4ч2J'A +BS)v! b>s ?.@@ un ҍ$MUnI׿%4:/ }1z v '97ۙ8^S v׈d5[h.Ux"g`=#zg1!y izVBfが,]8y=,zvK g0sSʰF8`|w B] m)(||V.8=VWX}j\%/?l sSp8c,^Xu_S[A []yZA#yÂ7ke|\8'gv3}skUܵ{OJjf=JľLrNj%*{GwUz$r.(?H2Hq$(4j4n?sCRg[E^˧ҟli`#y"ܞ_XèCERo.Nh)ӜR??_;k=a > `` )H9пWmw $azZIxߨo&x_:4c2'єE[0{QcCtŒQFeNDs_v ex0LU]wU:Mq%:^D\q>z=x^4]pzۿ}u!-sEA^Y!p>>P()ފzUb$/DRHmG80r >-p]?T$Ã/dq򏲁BEze BFY[i 2!Q͓p"Nb=O\MC:??KWØ.ses.D}']چE^ZZw3W[(8KASb8"I ~€/Όt(/@8*7gCkzSmf̪($Nl4qA_:wa+㤝t{q}7z)*9تj AI=] -3D uѼs*g&]3.^.ƕ -UWeG_Ƹ@ k)kҖ[Glp 88~ 8 }#3PA4kARwŬu8` $.@tLŘd^{~ g YѢc?yұeK(iwèרru$g1T)bǵ>?aH7qms3JhL9w!Pag VX9}6c,è̠|ʱtu$?N)spBͷ 8+abs.,^PEd6gN鹺CE׾͛۲ߖW"A NV@rrh:X<"l(Dp4W_416HWP,pa b~>ݼOb/iKWi< EL@D܀?'i}NvZz6ossWTsqo&P §i%5 ,4 =X{b)He'>{?儰G{\RexM!BH[l$z>-gK+5忲) z4[ߎt EW͋V>~s뫑oy]evVx8\4-H0s|hv3?KyCB%;10.x7w ¬e"=] $98#GQLN}88E)/G 1z\! ZWuƫXwv?wZPH "߲AڱLґU8] *BD'59!9t\ʄTdp\ NЁ zn&X)җr&_b\SB& 0?{g :=lԇ^5P99̆ZԎX{[ۖlA2axYɶE89dv,ܟ0|ĥ2_Ǧ @jct7QDD1ɶ(C+7~Ӕ%1`ڿ߲kEsR|P(τU ]^"64V`oo6;KCۈtE _e j]᥊2m'%zC_)X֣-MCK͓'^9~wo R?1%@A꧝W $PqxE#?j3exnyQוP&eqyPP% ՘Ghqk%vÞFLL(FJoB Gs\`U} zL%I#!jCf/(q?e=H e{/s|]}\O[’iǏ#أ(dba~hIǬr Y׉HnsuP4!?ʹĀ.ߐ'o+S #WJB@*9A7 V_7)ct5gyk`5跴OcF_͢Rg-HxF I '3huHk&[ [Ģ|1 yt{ﻩ˸a4#T0)s$f`@1 )((aTvD@Mao51# ƮCŵߣy 9|htgxbLԈ 0tVXm:`[\%r/Ǿ'M*Dq:Qz#QѬ%&zCh&CNa:k3#켭ݿC}@ xv*)*$R@ e=z^ny}p2oNsYjJz{fB0.?jxY7ʪAi 0!$CMwϵ׼s(x8}Op4oho DTK7Y,q"-@x]2b󨣊9 mmy2f`7*Z*9(tJ $̌0)|g$*1fp!Hc gDo!웜 o7"mljn \<8pBSY "%8w/IʴE|pTvdC!?ni1dEg)0 w·5`%bRMJxŻа&m@ԄR@$F"$= U=<Y*n(xqږ[b/w/,'4Dp^)%Kﺱ &W&b"\EU"xNIxpy"+2W6$"p톮!LV ,4XJ 7zRcXQc |6<טp9Jdq4&IbX#Fs;oSHJ&HPXe!a{G{CUUI:1WzT N V1Gcq[Ju:ǠeU쬆2{(W!4]9#053y n')U K\ԈckXGo}U,N^ΡK"*96 c߯N:ol}>g[*sm:+mK @#&3B64aN`vCȌS wɏYZuW G:(:s'"SSEĖo$$O5~fV4eı.vci㯳ǪcbD^ch|+Ĉ-uu@9FeKP/cHI8!頷uePՓ\SMPYɦ]~É=1Esw"d>( )tfIiӻWYD.QXz3Hki uKl-Ll9l][p]J Io3Gys/Wg8S7rQ2nCG" M(y3EUˆ¸-eF,sr|YN[\Kv1%6/( l|.X wI5%jiSH;_jso$ S9Z-H1u0!&(]jumLJ$4s\|saq-m*SS>S)|Eǡjp+N7hOi))KARCa!d w603"m^7:ؗ5sS&l.a೙4U~V&>擞mY(&D=]uڲ}v:=-eך2uZz2ۖ 1ꇎ9^G|hա{GNGuVZZ.-]p6{SUUyP"^y/=ɰLeul.}/CZ¿A0w/ox'VTWOc#܌Xq@t}[tU9#Y>\|~F?2@wZI]~My:FmzR,DD xhlxn]%Vfzd8~MXak~m %(5B#XĴr $IԨ۝=Q)g1%.[.w@N%@KRsrHyNg.E6tv-} t:"@ m,Wbr7I= Cb/t69rc($q}[4N]ӵVꍯA EC[ aa=Ž9Fwc{ݾ~KtGJ srl per+gQq2!f/Ɉbc tCNxpWP28>P&+*5=޴=FypV_qpun) FTBW\\y/nn&1.1IJ&ҩC9n%n :ˁO&1*7/Qꀁ+^QU5FG`xpz&\_ aeV`j$BPN];hс>1P$11P‰x9$tzP8OkJ m =.s>Bl M93PWO7gGl0@Y I LH"L&6_p~\B6rw|rH:9APpm$߯zcO1,tjaȌc>cu>wٴDx:r-FC%6`?9QV̟9.zF]5 /mm]L$C! \hZw,{/!YS|!YKzx:>0G@ΓEP_s4_PF'f(9_ ,48OOJڃX _Q.c+^y-j_q?^ _?jUEbj@kW5v+Th.LPU?\ 5_ceSyI.J=$e 6STC.\,1?]uCwBr 6/;pund\wc/8fi./Aa#0 gMgsӟI! XLOj척IyUa UpO 2HOT.k&% \*_ͨ0&PW.G{܏*͙Ʀ=oEx#vSn`%JyQpJlX.c5]BeA3;9~\ۂI+bMB^( C!kИwZqx(0G<). kg::GTj/}Ҫb8?3+?u>P~._?cnr}*HG2Lq7 UOD `\m9b7<9mt򵾆qdnY0LJ:8nqlg,L[E795Jl>dg8~9$\ֵqSAr!I)5)"i7SHt s갿'89W(DF2@+<}~ r׹(P(RnUQuzCҽڞO{(DbTs?c|Nԕ͆Oc {RS^K?|s7@P8U>GBܬks9ّ/P,X9gcNFk]+'W+.Cok: Rlab[% G?j\X /?EmPaXhpzzG8 O =r;^ 8aš?Miᚸb^f79~ 7c5>/4's:P1Y7dL1.n>jZ5IpI J @YV0 K(BdA*},z:)ɨ]͘PC2瓱sb(dgazupG+j[|HMW孾 ߢ8W'(;߆ %"-s/]/'vϝ6FuD^RwIw;l*?ѐGN?%?>ve]Mz#ri9uFO~y"<ȱpD# wzN [m7Zk,2I7NRJY:NGҥ|>] #Hwsbs*U7+F0򇩈@w,J H*>:]A6*hݾ,x dP:@(NCn+^J)wrל|?\@ B5D]{9E]F$ {Hp i[Ru31uׇl|O'*x$%#nxQg,4'nqPDmِQK|O)MfgLH?m+;X%컠0)LmrgՓ~Fx |x$#¬>9 r5yծ!ztP+؇+ b1(8qh %g?WFTƐ~V%U\2O*o鶿g8 9Ma?Ԙ"QNCy1H})(J#~oxC|pKuCafxd4RCh~эGY|d<}Ѩ!ᴠtDngLzʼn96?Jlnc9L ׅ[q;AIT':Sq^ڸiI(VMp jA[ܨ$YUpɜR-]H#f7(SVadJhx?}`efE6C=H\v2/cL0>e$?fW(gss I"q3ݿN Ʈَ_\9B(GS.#ֿlt]# .w'1&^DkΔdžo;rI9yIZV'<\dP瞊6qӷ|̀=)Gs\P]a iBox_ IK.Q"'*PKA?EӉ}cQ=fG7:$V4`y5-boͣUޝ:ÌVrq#G\K Å޶yľ)Bf+K:q}^\^A-ftSpl8b̈́YTKg1b=rTmNR>լD^+hX2r q =Ouo.5OXe+Vw<L;g㮫Zmk+Q8ۿ;q̇C_nf4"chL:u2jM DUZc9xҍk'c[U@[mgF35qdbgàw}<9–32Gj y㋙3& ԇO\CӅDOg)|@26\-K;wF0m';}Nߕ:^c̽=W;eF#3,*3'ށ@Yz|eXc@EqapXr?H?J dEgȷFE܋9x.YT^:|kzS-\ x5Ks9019ug B&!^Į ^P6ǵz1=Bgoauo|dwzZJVKH*DLE!۾!` y^3@UQTN;85g2G0/EۓGefQ?qۍqG0R_}Pl)Я| {|x֫>qQ$yqS0p%j88aF0W=cuN8-]>+駫?AK㇠-7$=gh,jgQ=^x#.7 :?58ԣa @XV}3PeNC!y 6ut4OS9a~ Pa"*9 ".y,?6X< $9]Ru㕽E{_oQV8qq0sa\W0*y"Dў.˹"/Æ?'OVGhƻ(V  Vo84 TRN_*  }q^%WV:z]K1U{As8 3z_Q;6]{μGbX-QG:YFdc7&Psq |ݎwW5@и2PBNimXq}hnX1Y0hUSom"j::G^.4(t>anwd:{7=W쯃uԘꀎ(j9h&1vUZ2Ws6y]5ow2oQ-k"V.6ҟdBjrVKVX5þ pq HwVL55)#>&d,\kZC6̡]/ԉƜC4"w E #ݲ0Ky!5, *Up$Nd(]"?i˜E%ҩ3?1HP#4ֿEYp7_oΠ'\`X<-%f|wo<}>K}ӪQTp|AH߫`[/odGXMZj .T$dMWZ׭ }ah0Q=Z"wIX.>4K'{t+5tUZFG KvW+9$'.3,}*PF0`*+/$H[ӣz?Y]_ U&OFE~N,%EPxqakﺃbk a%wJQWVpOY=9#%\'6e0{m`0pȍ Q$mJ.> kgN" n;S9,'hqu ͧL0 ?%.1져cL>nxKNo96m -p.8ͨlV~evKrTTZ$-ӯ(=)&+-An >;*<`j }HDGW#35(=&1+bvJ`v,]>xIDnX`f[r3йP- :t^dn `I2N PX VvN4(;iS+'*gUIa)COQDoL>ˆoĊ[e7,uw8Sn=˂`f~eҸrdg¨s [y8zqgD h𰝜$ P!^.a,!g[1T_AXu2IzACf"3(7xd/R"H{iHEI"|zybU=޸\ۍU:7h@FTi" n-R틯L {-l^'d2*ч;]齲_PNoi,څ& 5|ʞ'FDu#zZWG=r›Y/k'-}&_&D'8dQ_Z<!q?ɩS7Mb+4*9"<%W; "JP)+3'CnC}5kF}!*C8^#l1Jw~;UГ9 C qwjtT}'}?y>7-=Q;T罙o)i;i>2f C|չR{m)tJqP3N>/n89jwUXB2ߔys2r>ط]y=n5q=~/{ɝH D|EN+I,: ih/b'@0=`EʷTD`DDRlQi IeS Z|vCivFn÷CǜA=xv -!,Y ![WY7ÇBO Fuyo$J䯪P=u(A&i@~G^tZ[nr'vR>0chrE%J'\zHh+Kخ] 9+;f?$a^Z:Wjav4]1jA/ԔD;9LC(@,K8 9<jRè4@+S]L.-[MK)(%jϬ\1gX/oQ@=TLh%aqO5 32A xHqr}೰:Ơq5~OLOu3<`d?~K~}uOU%ӓ`]pN4”6utd/E6շ>ǷU8|bKu@}>3M_F/̄G#'%ԪON_YaQĜj;/ZbTϮ!b-ַZweb|汍 O7E9z%Zx'q8?~=޻Na\r_䌉û=?,e]y=ԟnbx:+:Fa&d!~-b\}$~: _*%g =R0aj80YZy# i,ös8?AɎ{Xx'T,q"i"2W7n}]Dw>#σ:H79O6Kgf6LMHZNPBG$d#|&׋ϧJ5ݪ򻺚05U"g!$7o&93XE"8pߒ>xl-^$&:$՝HgzԉR==dyո@sׄ~=X_ cɿPT ʟ GUH/ nM{$HzwI(r288kDM-Pq?/uug(:{45CɄ97|1q!z&bE;` b >eH:ZXRW[<=z$Bg}Ӥp魖s3xHC~Ai (hF9(V (*%E$Őݡ$:uz/_ߙ{ :1D̩P"|mduY~Lq¼3AI"/_U37?9+?F=ߗs125&Z9^ز)OIzN *gIXa߯;k~uKxp{^Pf>?Z]xl4٥́"|!H4v)vkDsG92,n>DE/:_ho.O~FqǍmq<y?aZ؅n{fk'?|>;w%qg('l>Qlc"3]s<# |!bů-`CiAP=Q{6`_~sףm֮n_,ѩ6򢂪xȗm6VﰤX\uQ7$qTUIhk  ,;DhȄ@D?^D##70k!&fl\pĴ'7(<[BE#5/N~Wz р6HϷ ͳGDnnOsȆ5P?S8 x .ƽ?jeǧ/_}r۸g`Dڢw7J^zf3:?w3I_?3oL‚,::BPPC<Ғ&fV[,Qh=/SQk ,_ˆ/m6$ӄ7?Ma?`G%7*X`$Dz]mH\%ix{ӞJR2*'u$/{A_=wߡ ~k麧B^KHހ|0㴧ZCM._&.OCìSQ3f ~}U {smxnG syx˽qn2DU C/Vd۪< 2NidM;wV' .(zG6%wOٺG;| 8<^%_͜O6‚3zεRZߣ Y˿⩿;sC6Ӗ,F}^?ȟP>EHؘ%nˍK/8lxzߨ?I*Os*MLfs[{/c&gvsW>va Ϗo8HD/B5?=\GyУe>TkA2%Dejx($MP@ -@ڸ7w%νjE;ssafI؇ؘf~@BByDշ6Ä j>fA@H͝4d$X(g};biE>a ռ=;7;m_<ׇÝdn? 5_\񹇪դx~}-~_%u!.c?gϪPs mhڣq H/E;F/?-yz/{NG/|1qQ_e{d!ÿܩwޘևE4ۮň8=uCuwF}v6[wOLz/.-B\'$C ]C i OmބqW~9t#9W ?{ȟ /8y47K C$r!t+8ߖ!ߖ0p't씁 ?o