summaryrefslogtreecommitdiff
path: root/Documentation/kernel-hacking
diff options
context:
space:
mode:
authorChangbin Du <changbin.du@gmail.com>2021-08-14 09:48:31 +0800
committerJonathan Corbet <corbet@lwn.net>2021-08-24 13:28:23 -0600
commitfe450eeb4e6f1c19d088c99d2206ecabb8d0892b (patch)
tree44149f1686658a16877d4191b9f43954ee35b229 /Documentation/kernel-hacking
parentf08fe9d29366c0204c3d571fa0088b1f0efd1a17 (diff)
downloadlinux-fe450eeb4e6f1c19d088c99d2206ecabb8d0892b.tar.gz
linux-fe450eeb4e6f1c19d088c99d2206ecabb8d0892b.tar.bz2
linux-fe450eeb4e6f1c19d088c99d2206ecabb8d0892b.zip
Documentation: in_irq() cleanup
Replace the obsolete and ambiguos macro in_irq() with new macro in_hardirq(). Signed-off-by: Changbin Du <changbin.du@gmail.com> Link: https://lore.kernel.org/r/20210814014831.53083-1-changbin.du@gmail.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/kernel-hacking')
-rw-r--r--Documentation/kernel-hacking/hacking.rst4
-rw-r--r--Documentation/kernel-hacking/locking.rst4
2 files changed, 4 insertions, 4 deletions
diff --git a/Documentation/kernel-hacking/hacking.rst b/Documentation/kernel-hacking/hacking.rst
index df65c19aa7df..55bd37a2efb0 100644
--- a/Documentation/kernel-hacking/hacking.rst
+++ b/Documentation/kernel-hacking/hacking.rst
@@ -76,8 +76,8 @@ handler is never re-entered: if the same interrupt arrives, it is queued
fast: frequently it simply acknowledges the interrupt, marks a 'software
interrupt' for execution and exits.
-You can tell you are in a hardware interrupt, because
-:c:func:`in_irq()` returns true.
+You can tell you are in a hardware interrupt, because in_hardirq() returns
+true.
.. warning::
diff --git a/Documentation/kernel-hacking/locking.rst b/Documentation/kernel-hacking/locking.rst
index ed1284c6f078..94232ed1d592 100644
--- a/Documentation/kernel-hacking/locking.rst
+++ b/Documentation/kernel-hacking/locking.rst
@@ -1406,7 +1406,7 @@ bh
half will be running at any time.
Hardware Interrupt / Hardware IRQ
- Hardware interrupt request. in_irq() returns true in a
+ Hardware interrupt request. in_hardirq() returns true in a
hardware interrupt handler.
Interrupt Context
@@ -1418,7 +1418,7 @@ SMP
(``CONFIG_SMP=y``).
Software Interrupt / softirq
- Software interrupt handler. in_irq() returns false;
+ Software interrupt handler. in_hardirq() returns false;
in_softirq() returns true. Tasklets and softirqs both
fall into the category of 'software interrupts'.
_6pݙbm(QaSfbcQ$V㔴/@`87sg8Wpnnxu44 ~*O6s|+jIJ"1okR-\Bt"B 8FE_S;&"p|{Q<3|mXW<;1)}c<3爢W#-oQ=D7gd}'/calEA>KxW6yxJ*t{ mPA-ٝ\G/.u! |GV6P;^Gg9b-o xGfw ҕc`h;'Mps_1qǮ˧JvD6R\Y$*ة!֔4rM8S4_;mCX|ko^﮼14<>|+דn*D&[$u,ə=O0mj5|uKMKfEmS,"Eeg.b),ٰJ$ϥy|)|JgMIU|;恷x-J޲mKmt+)}Ha0.GQikٺzwο쳜i9lrqO~p6~NZ9s*ro;y/۵eH; ]80`Sk9I(Wg̽0'`MZ(5)=\]awn p#\yzU fmۇYNl _˭iþ8℺ӕO*繱'n xcsjE/Zan5wMy4l1f! 0hpP!A6($,蚚,!RXf\=NkUϷ"C6$Jgn7kFGjEZ8Tvs ( 5|YUc/ѷ +s!]Y;ilb2˥Je:U\~\eS"zbC_ ZUd$0=4mp6[q6jףգɋK s^_1n}u/ϑqw|z%0'@ip2ǣeoG{tޫialukE&9xZ^oߎsAFNbf}L 7x" F~K|@)Fe;wN e2"2 y`_oxSՍѤ_c COy^=z?磤s/*}G\8ו2t| c)D*?pD紽H ЛHq%W5|s Žcx_GԸw`NnmSIáltvk:ZQ .z|OE>(?I[I`Eٝfg䬯L/h[\SPD^A>|*i:n5C*1q_)Nb7! 'Wya_M"d ޫ?f=__w:<[@#^Ɂ -dM>LrB옊^+kq#?n1 u7'یSA<(]@tW/ìg<֋Z%f9߳(ͳ+Zmt:XP;~_ܰ?w&qL,/n(xO™؎sz۾:*k'/ʮvU-E^b~Z5}"˛ؼ q*79-xsju>ފRɻ6hjUowi⵽ia}[ |/z-΋j!`F:zGβOU cGm%C=|׃~]+F槺޸/|^Os_V ~Miu-/>3D:n?'S`_v/*]mvs>e>W9۬*>asy^;xoz3Y}m~QGtMD+^j?=绘ھ>*0:riUш'o;?sʵ|)<=$ljc7+]O}'mAhPSJcw|š.?N9 m_ k>x|}GY_]2{?uӋlOow5X0> 8ڣ fȍ4,?'} 'ȥz ܏L-c[>ϣ \T ~/fnUmaHkv,g ҽ)GvZOmx~E(+o~d>wwXc{}_!'6'ѧoM_u+}gUf;&5n׀4Cēnb7_y:ZK1_*zNctɉHc&@U澼#+*zs_ѧj>GMYxaa1[_]{ Hg2Aߌ(t5(Iۛ?KYu~}}ٶ2q ! 1yfDEiťvrl@C(G!AYX;sBS' )!FбP$v4c?q/1mcԾ<UڒmS$2B}_hEЅ262)\BNf*!8L2? 9 CDTw'@x5*lւvZ7O4kLbX" (4R6:|0A8y]4G3GhIe%RYBӓ!{͟&g(rhc|K ,,1 P{FiC?pkA;DN9 !N! RO 62ĖxQ B:A>F8DXP\^rݕ9}q N?KwpmPq)t>;ݠWX[>T J~|iu+Λ Oxa>K'oӀ{(Ml $ " X_hnT HeD X% ml"d#Km`8ͮ`זP=}-!m\UM H^x=_hmB//w0>eVK@Գ@z/Q8:>3B!ی. aH(bQ dJb((?R lÑ`0:\\uH/v~dZ( m<;/=jqU$[Q.VRX-0&lX*aS 5&6іu Y}Sg^@D(( @;@[bDHфQ϶:(K`+=ʾĉ$0E(` ѬyumOaL>YBqSxt{qs %L;ou)5l!MHydr 4eU_~r*]'= `0((iDJLM,HA+#IF?=D Iϖ8}WϣūB!S`U49K,c !Li"OTnTwNڌCEesF Vi6kkUwj7Z&GlmO#C c_!ʹիoZ@fAKgL*Dxa0/_pƏ$̴Up.xi,c LbEy_U1-4"OmrhJ t09ʊtTGgҞIOɺ? u s,tꉞA𪱃 ~o$qE#Mhn5X*#:}L!6YN1 pӍO:0_U8jڂݧ}? $^?7lSKB:a_7qxX& )#Í/0 5Go>VE 6r7Q QTx:S5j|hJ`2lJ1 µ{݄:-dDڔ 2%!d1v ]|xˢ,b&:k5z vAcE%TvD}Po5H¦yv)Hjd[D\F6 KM Sky/YAO]ߧOEm:>7,#Ǟlv[UDցZ8Xb,i`DG+:w_)'?^~ɵ_v|S@é* %kE$J4bDTBm(3"\ qfAF7oOe?}>Q^/ujl\JCqgRi^?Tu(-VڌBY"; 5SCuBLY |,Jg3c&>)o8O6Iތl zt 싻U|M(0uΊy../|:kHR܈BjHӒS)˟>\=@rysح:Z07_TԴ7❸tdNo* &i]W]+|os {~Ƿ`>sתg"hb N(D b}~kMa ~hq:,`yj'S&}< Y<Vp\`BFV $׌cx?v/QO {v}szWGptDS,1**ab<'"'v$޿ÎذݴOo㨞uOS:+*X7p/ ŴD>(g6#+˴7&]  C+ zWֶTf#˥v:g#1B5| # eR:&Ԋ!I&VUq#š[[S8l8CiPU x ^:tfh.P<TtQy*_N%e0Uص$.;Blxu_K3q$gZk  DQZo%//I V &TԤnZ3̓>z6)A4I)EUubwyks]Y1A)D uAVZ`z^T2mq+^FN~)nhEH#˹nX' GhەʜۋE凜OZ|tu˺* qI[H:Qb@l0Ӂ ! 9uLF&:3(L;ǛfSd~pW[%F I_gOގ?=kd\Qt703~jm 7Q5bEZ5pl&ʼ;&}=)ǫ!`aK1J`WEOPlb0( ֙* 2M{֙ʹSNW=Vq >>8RTZ=qB5`]U.^Tli.MEd~*z ݬ;*g~woT[D*JTdBZ$0ki UL8(W]>=,zG.=bLTuڝ[h32aO.)JPQ*%%,RvDI1t y5|;Yܗ+ׅ^[e7$=hKuSHјMX!T LQ8U)jΠTFگr=kn:i1fg᭳?OW b+pJ:YGQF\T҈j+y`EM"e/:II Mt7`䳟[&[vv^|;מnt.-ܳ֔ZiqaE,N4is5I*ᡂq3H #B{z G jDPaBFz~^+XgF@0g*go*U qgDp<,2QB#P;#f|mi<䳭yLڭRY$CY!7Ayݧ a"CM9aӆ3.ʩ-vjÜ:d[&YHDQibz@#֖1N 4빁MI㱤Fp-l:7+*H&#$'KvPoX_z(N-1 tP78D?{(#t s{/l"ͯd>mDޭ{kCXIzcmXT6q^`,=ӆ#IAWڠ])ˑ `4 ~ 4ݦD22&""oЄKqh[Rʦ Z_{?' y~?kՔ="M.\+1%-Aȅ{Kdw~ismήصйR"Vz\ͬK3Wdbx0a_Q]U>?toTAί_faX/ݼ⁤(*3EUʐ^H&!m:glw~wf?JJqTmWφ /Q AYYA''Aactڤ`!( UT2ȿ[ȭٗbsF @ J"j[vn'5KjII^*X "@%E;,Xf!& ذjbdis2+͛TG 9PS<2cjAa@PJ9$:O6?.p^ܱ[47(4Q?Zo>;k^FT~nG9nׂjSd'մ&a.u ^W,4fƼ勣{(yS3O`.#)j]-9|9Ú{<[7WN?ͺ?ge=fU6$9MYLʒ{4Rd\f$sR!?\٣6~-n?'f_ZնGs~O_'ո 'aE\>!˦׶V==TTLݹ:.)UajdZ jh~ӟ{>=,;v|^HP?{|S$tzcCT NGY%4ZrӮgyn<Ի_q0;|\H5C<}|~rO<<~PɁ>Jq,#ҋs&_DG^CjM -LElPl@0zD +LBCѻXEJ1 $hQE6w#W.$!} WoŅٜGZ+Lj\ Q:xEx9ɓ4F99B:8peB2Jmm{R&AR4&ǩ""05p~ϏY%3E;Bpk 땚I3MW5*)۹4xprHAGu#=u-nM"أ]0Q4n5;qfwmJb' I?1n[; wp0B"_H>QbzUkqm'[ w=CGx"9 -[C=v?rwlj.gEp?M_FGX]qO7Z=o=]}28[ϸqq_۳~O%M?ON__?S³/>Fƽ[_o=`m!@)d.4-Ya| k}V!QA H=_p8r^4ls_غUqTto_þ$o 0z:?tBA(!6^ $y~py!:z[rERv |(7H8T&>QKD4 &]EM 0 DQɻeQSȓ _~> = x'o'>~&pQuASS|@N{BPy}_ 9w`okUIνP &Ke;zz$Aݿ_vDa݈ӇDL!UPDzH9~_@Z!~O߯-fjS;~ v7vF|io_ZZK#E`Iv%!Of]4W`?2JRjzUcSͨD*Ρ.g=2= nxf9`?YtD*D'`2`r)p4R?scx'f}DrߕUz*k)>CjJ)q;ٿfEqf3o׫ IR $' Q[J _q-bLx$/PKpAP;{rY{qO3^3@ab;ꤐPX%.}hp8q?s#4=v}y}J~cVOFsbQQEzӧ^u-aGY%)(gdǞsT5ETL4'^-e,D`HrYGc*"? ou&Mn.4Â[xvTx`^-duoF?3,_Ub##EUUUb,bEYjG^ECմ¼|ecZw.Ŝ>龦z4b۷yCm.?q7؇LyIdDAŕoQ0ɚ(ռ2\sEŽHT" %ᴻkFoc,}g沜a2OF?2wg2kvTT^G;G9sGA*k6H@8\/:jZz瀱ghFX緵uADAJo Nq ڭqV }e#'Oq/1"6FnҚ0H:,@3`?W}|iQe5wFŇ>冪+0nKaS *)FCՋ(@QWcA>WO *ti~vTj&l@EKP"R"McI _mlj0tc)(nA߶hOwjHe(;hBs!:߳Vӽў3c 954ҁ0r07NC#?e“B/N5=sT.s~9kw7FkxxRIFyrOcAY~?Gaċu %h/,!Ēm%]uZ2/zֽvfUE$ $OS+ӋEP| Bw Jt/g @Ъ!$->R ԒHORR0l1oM2:MJ| %,xڌ#(L#z(@z@fP"v{THs'@ BerV-n &`wB,0"Sn8N ۟@O=knoIÉ4zԇHj =5P&=re(KUPwpC8yfE,I[Paowo}>aGAȷha3#w^>U(4!4~~r/!q,o)c'σG "mTi/ q`@&*ƾjd<֡kI)1RKC"ĻrɡuHmMB3S [@Abd!TKC6 b@OҭdV9F`(&2(D#qT2DNc1Re$XrC5EKڮ3$&&F D,PQ*ۉ4?mqv{@ qvZ4?2QTʒjn%F7~&/4*A g1>H)y{fA {HyrzOOW^~kF$P+EwNŸH;_W ~q|!{ wEk'/\[ӡ̅UL&ݥybSQsQ$]9JKԕRTT;4Fb;Φ},Mm3tn_K#OL t5N}po= m_ueW$NWO jv3DCRwFaTym>^׫ejFѽiܗM]_ód~븃-+ߠjޗd& 'JחyH>}uաgǕĪkqƝGlm%a9v~?*|ᢼ՝aF@:3ASP),ieJy@Ō 5!Ii.\UKVСFti9HRV&w<룸jiF Aھ: ^~l,|3+q >#7go2>amo}b*QYzDexBs.2Qd=h *0)-8aɔCJ*MZ"*%99^)w $T}s%$I9ECT?v Rx45Z3yG^UK+C"pWF-k串R) *ֱgvװҟZ YgPtgdJ:9FޭHanmU>.qd,!> Գ7Verh1|#""#jP?QS颹hť0MF>J~t˧C'e>ǫxB@ >\BSBo|(UV5=Cgw~OyXpz (xqgcW[.K33C(%z-̿zsSLpܜ>Q$@~E[Ǿx'7|W@wY[S\ <>X8rCEIqGSrPL8!&d**Yԑ ) X! 1-'̷c ^jIbq&{U>?i.Cȼ~+ ~0k-i3*rCOn}V=Jg#5${Ш10,RQ4bN>`x Gidˠ##ETRl'Pʰ4[U/c0㶶uxh0ԂjM΀LM1,e F$PjURtH+sa xQ-A1hd( i`p(w ^KA3s Fu3JGBy*p#A Gֱhϒ灲~t!,篗=7یcؼCm!JP/j%X—K~)jE/J6Neo9XcyW.UXS K i{uE,F*[CKV!IJ X[jEEt5fiڶ2#:02F֡Am+Wլe6+7֡ HĥLf) ̹wWKk˳4PFſr/7|ɊyED늲.Yp f2z")ڴXVJu6Y 9LhǓ+=8G=+? W|kyw%{#ՃKֳnp^]7ЪC;%J _*+q(fPQJd¦Q+T^oK<XEM ||iw*eԷ/) 83WOhqԍW_P_`DP $!$4ņ[>^in `[nR4ޟM.liN ɌC ?  ޲u"P~ {uߣ {)_FU.5.T(F=-riK?^ 3!|[VzR˹/*"< ~6'b)|Qdj^sB/xwj;#8tˤe(A~eTSÈ/Š{(o$^FEJp$ע g*^ 9DE" !$j2 eVisԻ@h.4.&Т)hjMU2U2(!pX$hԑ ]-[,*% GD݅<[I߁d U#)ye7UshJo*~kC3瑂$Že;#|`]D;…!uq[h?_9͓b}!`WmE˨Q|#oDjl!o@alOQ1Չ}_bӖΎɧEGd C7#2Ab׫F^U,`AȸP8M  q 'eqNqNقjǗu]y4 0_ӆ?# Y(!=A? "(g/@Ϧv ﲌa7繤REC0揊V(Dbhy|])֚bAVC3-`2(K><3KޛhO9ZJ--)׃?sQpA.{9Ձ,B+@% VN߆b#?R::{9R*.|ۅNž?^0dCyݳ/\ 8,q@J6Bx_sEmY+ tvJI$%v5;tKLFx=Qs)--G"Jf5|ˣ3Gs߃]wǨܼ1ؾ,;y(pym+H\񔽒 D7Z~u0"p=%g'Tآbse%#!h5v+X\aJL8NcC\l//GLdEN՚=| u= ּۡjju1e(Up*Z-q@Ɏ1|ңT_ZE֛M1_x>R5w!OCBGm1ďZ9h^?uAO}i} WZP>Ң&_;(w ;tVђ1)ceZhO-ZiXmDhsZR4-9^x^ |Kfl!<9'vW<+- oXV"AtPÎk đԭw~}3:*` 29Goh`y?8㪈GJ;an*=n{Y}GGG]GCCÊ(#-k>^dЀHܱYV(;h OXK=t]awl*͎ŝ,U,Q_wTʈco4;bij &j嘉fiuu|vMJ42uY ŒwGcq]efg1afospf>B>'5Bٛpn=K5LfsxٲaL;̑qz(!+klg?-fS&U"u^pY,o!\!okFWɶ_'o_zھ nYfQ98Rn,<2T}[tNVFwQYW|:ڿw3q1 6\}큳wE̦ 0hzԄxVNe&cҪSrmzc*35 |Uh}U7z7#a_fo]nďu[D Q@Zơja6Paa;.9rv~|G)ަ~XؿNYx{e<:s^|OiӴVHeB@ؕ30N{Ol$v"FKNUǷv[cNvpNnN)BthD t"!֌b}ƝLfS _w<:aS培X0RX/j=T';'-ڃ'Z|_R}7.+GCնۣ'4%TMJMXD*НkInD:2@Rc4ӹFՅpqr7輦UM&Fao|&;XBD#{ H 3p}l״0F@-zvkVJأ  Y^Ouxpwyag3g ;]ٶV&F+ N nzY̋EU^>x|^~)Ɗ)4>: JzsΟ[#.>~lc0_Zȵ`*GO $ B[E\A1L|WZ^WK`Wv~O7*7\X7c~qιظ=v⵨n|0N[>˲D&եDڂreҒZ.ӥ3EӼ/v\i,@TWb=fdI`^G(Evn^Wť=zψ#^}?sq{igbPv.ڮ&>8l8Cޟlya|F<6zyҁTreȝPMp{x^/"ʁTq_bPjv5%y]< 2;NQSʏSB0{'z5:3c#yutc%<4חNQGN)w5h:%Ӿ\Szۭu}PZFN>LkV.}kJHWQj<= 'bHyr֭N66ᣇف\BmSN6n7d `tqlEw[K1hW uݘ VFH_"$ G+n`SC 0Or%E_4oZGgH#$&|yMxG=\Ë/y|p+QA ӠP:{*XAG=iqS xl˱‹% DD ],{yl}٩8 .gDu٫Pܕоq5G@b|kr)8[=X$\PJSaƴ+z'nP%u|QYC02 ?節B~.%UGQݧ}>g:Kv G.*Q*eBݿ͍wS2T8v>BOYOˈUݺK$;> \| cӧ[g 4/!ppEATIE~5sm3!!oܳ›#^8)j_ϟ<UYt>LXϓ1u5_"sxm1qrj }ټ(<&xDPƅ!@T-cGgr?[ErA;m9m,ߍ:fRu{eOp4v/vXh6 ǢfQK90֊vf=:ʀ>J 7?B$2AbGp)_a@Рq}x%Ue* ݶBw!"t`&(b&/O^Q1s;jUNJaIyAdhZ3h]qe7aKܼEM6>T.D"djT"4]Q rkӈj;,Oi؀#@jw=+.[(~?fo>=XCU@Oy`8zhzmW+dO yE^9Lnk>iΒhlhthQ '( 4oPQNj.G-",|TWieHWo5IAjJST~_<הrQlYaЧNRQPms(AAz f1V F )"H*Fˆչ\5A@!ؑAB܆!VqR L7vlݛ59!@"PPhW}/^ycL vWFfhV0i{Aa`05[soJFWR$wUZ4TxZnqc5iԐ[Ͳt-e?wTp;i#_:?f76{&MrHewRxOY8\bη:wRI~}_ɪUXrg֜Dh@ 2(w!ڊo2CBH^v4:k:cc{}!tcrtFa+'$jI,I(Hxq@k/[X@,9>:}}ޅXSw}7ͭzpzv1V٥v0_eDz:|95{f( s1`~s)׽>Ϟ34ic|D2wY-YaC>LPU~׻S4QA(iQA3o_g,Wv245 2e}كA@ѩjjFߧߟ_Gڂ3Ƞ%rֺk|)G%(b>L\`_K_J/AI/mʀƮ}X1-p=tHR9|" zAtnh6=Gv;*b1A!c|1iSFʨb/v{}fx:RUG|;>U1f[5ȇu[JH6Zh]1|ϡ/젊#ǹ$) {LiT4!ԁ~iD#.5fmEmHbnj7L`+Qq6d[eu0;ѿiq D͓-gAeCB,T#F!1y}+AD ??hA+$h3[%O3=;'B&paLR )F!02+&h9YQQaTƊ)A7q"O6fӥi}IZV֪@y ^u_f2P}Q|4g .uC~D%lb ٛȺ=7QϥkNb#s+F[rǽ\5(r(e=ACv)@uf=Bh>7g&O/6*-M:ZOzUaC0 i&X]oEz^ߥl9TJ1qc9 UTvc!g8D˿ܣ b-WuوP w #o3aj1;Y0Ms(,S5\ښQ<5DZLVYdAyu>O8/Msy6sa$\~էsmn*˒}a GA DaVd}ߤ( !l5J_J[JjaL A|7pw?bBg)ljDEE"BUUsNm-p4]{T${ &G P=#)Dx6]F |K-Af2nQw7\/XT@clu^Ӕ&αıE쾔Z.)_±aB0ƵDy.{y ~QS?khkڎ25>Aqyt:6Ek_cKNF؁JuZ  @A1t80qu+<{lhgWbQ`!3M!B-m~ՅXy2gޕ+StDʪ!;t]RŋgKkofHhֈEKMf!ke]`l_a?=(߂m^h0@X{7UOKJQ5v hOT}Cʻ}'ppZs1x8}\? ӅY?_!;Ssd=Qm4eABG>~ȏQ~S4f컠EC,;Eoζ8Z?sjli+THDZ Qփ74"Vh*>n;T8:u8_4g 7Kݬ KՕ!n}63wsNoJ])a4UN<5 OEU7Cvz1辟'Pw[gwq#g >d:Wywu(Ew5[aQgFt{$Iw%. ( [RQO\zϠQ(*=}2ӎQ򗋐e(A@ImL#ɪxyh~zR? *9X R!$4eRߌG)u!Oٳg i8jx!M۝Ç ɣ|WQ꥞tpX g΁6͸VEdנ&nUS5YVB=E '4mJ}T\YG,GAoTs~R*>DN2USNpä$*hH\2njpŒxniOKvlRiaS>Ȁ 4D.c1ћFmhrL!@:@# Eeŏk0) ;ߝ^^]t}NC|1vS1Dz83˹zVtb"ߜkPkF7eݻٷ]#6;#C[9K?g~rt^Un\=j _zEȃ v|Sݪzn#l.%xf^l lx/[T", 좾ȼg\T7a9V!rCN )ܪv>GԅV43J}j uTp U7v0!Pq)?@'Վ@h؎rb%lZg}f_4|[$8(jݿ+<¥,exVw-j5~<|!(%ArUrO" ܸlF==m>Ž2uƀ^* QDd-Ba0]MEvA39EjdV[G }LW!yn1PO>K)bjeS _׫;G7dQH/", +Kx9z8/QGf)i8tPSSo"ȍ`))e6_X^u`P§|Y;`.zl ]Dn\ *MsG$6! l)~(9VjQǃ"sH֜!ɫk{Wj'EA UUb <&ע.m=uSwu/ l ]]FLMa/+`x-EO n-z [p7\in!ݽ\bP."lv%kU"m|ՏT?^<0? ?.l2 O`;"*8d.XL$LkYTE ܿϷA+BBVXy[D9"JWdՌLA zw4rّsEWW!g|V@0$*KT{pӖ~b:pyݪ(_#b/w?sC,G5b+j`P5dRA]>g SGQ?c=G^+ Cu۝VSha4mcȢ 'j52}%7{j $+nTAB D UpyьjxO|)Pi>ϑB"8d ];'ab|}QVW&<}Ξ$cJ-?*}MOBz]~:-D2 !G~cn_v>vVtcW4)R GlS1䯻&V?Zxt)OKzjNi>K~,g8jEչTG}6rڷ+y}L sJ0'JFSŘ(dl[}-C~aM(|͏ } 7Xl"|xpZ FkS:V}&ފCՉ 7v~Yp!0^Gz/ H(-> xϢRB9FڏTѱ@vE@|3Aۚ޴Ҿk6 JvѠzSHN3-&(@YN-j=0Yƽzj5w*xi1nޕ%A;tPP( )`{?t"H2h% }{`ƛ7-kΑ K1?#u0x. dה|^ƍ:x\*~Yz~?z^8JC+Ĺ&BW"9Uc,:<B{ѝ^]\=")_ٲrP֙64;ϴ+mdWUNC Q<4ڶZz5t\E1\]t^KwD=+QM= QbPNw1 /TiwTQvSEQP=m NVki?AA$oA`tY6:M$ #}t^|ԚS%o2"T6~4u[lf"wo(uT䴁ϺáWD! F^ݕFTVc:ǧz Ǘ}=c߰tK$dXU4Xzr}i{kviXÍH|ԩZp+ @Oʤ|:9b꾊ѮYKBS[2{f)G6JdcJF:gl 6+̒8(pUpo-)N  iEPin\lu]{©pduϜ+ĺWI M ):qQŸG|URFV=//7 ). /zrnq)H! @QUQ0Fgm5l6n82xoOGiΡx8N0R;}+wYFJ7!T*(T'RQڶ})8]Eip}L2K Fv"5FҌQnNNĥ>{pY6 A#Ǘ.W :Ci½DzHGVRH$j8"6 ʪh|={ӭk-_W_9,@Hc7zԝGUT7qiG6#\R}D_ҫizNĭҪEݵ Z>L+-[Wֽ>4_=Zx 4!ԈIēe"s;mCk: #͐QXIJ|B.eXjSjgv-F 739XwPQa6i}P|> Zwi(IUzNJҷχրJ=ߴ A8*EǗ+`un{uVUV j[6rDQ ?զݦHx/ ^ReЎW)EP~g8"qa#?9Q<sJGȠz;S/}<^yk}$.aT3KýhgE)wC*[|!A\>?тkr&42r 8S=%-GJsn+^[`U[p؊޴r-ါ?>]dRWԾ<\p?Rș.`f()*KP3fd0P6-\By+Ɣ{RBj[خ\x;*55kۈh`?}*xHؼnxr)Q y#.E;k݉Uٛ}5k =WQBq5g r\65(a44A$^ A =X ՂdRlՄDA bdz(턠6="Ă,߹)S*cm*uw_q) rV-ތx Y,YۛxEWZ*P*XH9E/MaCk+z@H#BcG+3WOI!>jTs t}'ҰPz&#Lb0WQ!ِBq] ??Aڦ3׺k ps_:kbsU$5#zlr38X/3 Ӱ章T_F (-QӍoǫTه P0)k(F18`T$ g`lx,X3(Z**ql@+]5466P0I)'PX\(^ܱxY+5gz.mvef{f5)}><Ҫ LRB KVHFko5yOruh}>Lр9; V|D>u.o~8fΩ}rRo4١+GuDu*ڎ62AsxޙGjmg4 *<[# W8|+d?tol %fK;(g"RVA`WhY~X#gjSG['O!H#ε_QWgYqZȺ,dRI V;6\}g)UŬo0y7> 'zZ7ʊK{,@ "̪+jf`ͪ䴮J,iFBi,]tL9͞b$!}95 _>'rj A**+#_r⡢=D9K;h$ = (2U*ˉ+hGٜ.i2hf$HŨ UhI'+i Fhm&lĭz^,Re2ŻZGvc.]^ e5xx\V$ K+^*[6Em'pM3fpo*z?z[n^9A`>GVehfQ|Z"ˋ.)J$Abq,+l.`y]gV_fZI`JՀwI☩ 1 iUo6s,[ rA 4-jzSi"fv;Ph"\ʞ^= Mga\ou6a3׍aeopeRR7>नْvRȳaJyьs]V$\0,XVF[+V&2z7!8+w5Ky3T#zz8iH#g\&!RHcOC+3%j@PY$zӉ;ߢR ߖ+#DC4{?Mu0Em?x[.#0*[L0-5W.=h4Q\EY"!uc={e f$V:TGF[`7cyLPO ̝F*ؚ#M<]phΩ/,WdQ(; x?awk^Bު}p f25yjHqd*[y?-ɾϟ3̞.SJ\btvnA .Gqfj7yt. \|c1n+>o@ Y}f'OMMC-61/(`N"DXTX.1> {?86xoXIP%G׆A>fd,ۋ#ี7:+R}'+/-ޣC%$5+sY5 > ^Qtʈz1!µˎ7zWij+68ceF`x] a eR}j9]hE2i>'t:tnaw!CޡA’2&WJ~®{J)r U>:r#ۛ0ɄBhNӣl7?{Ha7ȥ55][a5"Eb5"F bۮtjZGՇCߞp[Q &gzC8kaXLT(jAh>;䤃Q ȸ9 KTQYtu._ ~+TsFB^X$) BЈYN2wnmU[0w ۆIV-Y-@QGҿKb Wq*5F#>|4H{rY {Rv0&6LX0K>o=Aus~+ܧ!e'p]Wn>[ʧPkkߏw/*GuV,Cьk-6@QR*%Z hGS]W Ýl?4R12G{?v\zyOWyn{՛!Πo>PW睥PΥފޖx+ =7. o^]qXC)] GDީq;u5@F@lTlQ*Qz vvalø=kkzށ[lw]x/@.om.e_tx@܀$RߋʊF#(Z q_Fݑ> C$5`@q)} H-0uAŎ~E.EV@mƙ$f-ҡ# (͝}Q-^ė ~Z#Tm)ʼ|yˌD^b3;Kl@ 7Q}HEq݃> ըO\;-YC<*P@}|E۳=^$4(?Z ȚGS. !U\t'"+e@tMu0}sdvKHސS\pQtDj9CX&|=A]׏d[n(,'~%@) 5 "A_//h xDz]_,ڢl!e:t(KY{! [3X}A pKH2+0i,xCPF5ZmNϘss7(h"f^@d'h34:v: M"R}GcMw_]͕.k.](5PޣȢv!U;,G5= Z͆m3'_cGw' o}fYV'\juҟMϾ~\~_Q[q W43J""=p. [ A^'Čr`þbAv ~V3E4 p '[wsײo(UHwPR:LI}_^MʨZ0DeT3*`*,t1 [-PzR>'WCEh',CQ!th[yq[ho tBߒ|vNVl2M~ʆ6@tֲ{Jy9wK\8^7{E=b|};klo~ٝ"-O%Э|\kgÏh0(v^ z}ӣDd"*(*U|p}|m(oJ(OC{‘:!/@ۛ ^" i{_ެ8*2OaL<P,]nkskzM(UQ䝳ՅR vب.*EmPL4zPO2 jEkT^a+C Xpl֘(aG5XOQ JhFդY~GoJ1\> 4ٻ$'נB9.hbƚ{c4]/30vq2爌eeǤ,"ʖ{5PTJm=)RY5V 2cJmFٳ=EJtw!7 `_ MNY*?!Bp>j?.:;O]½i=G'NN,&\f/ɸQc7!_~`^ ''FmKd/a"7:[?D((;{~JNHPJ hxkbwШ0 FKZ>8ppI'Ei_[g65/ٝScnő(E>amAϜol?E~8A忺Ͼ!#)}}Z?5`:<{1uZʹasڜkP)N߃QǸ/}/`*P0P̂8TGiH$mwx۔_T)tt(KK&%`nzBwL_qkjק/C-v@!b_Y&5j0h's Ү}#]mB 0#eWl.=DޗrswA$lT@ik1}-T:tjӊ E:[M;ucfC2 &E8#jӣs9z؉6!mCH*J՟rƔp궍#BJ# QTD,°F]A391*HqE&aTC*,jJTruZ$d씋)qⳢ!һR^zs eUU)\-Ev1}$zɅ7lᷥjĸR5TڡWYM-;ʺ> A#k"[ЫAf@r(ĸwLK?[\}u\{CYHpj&Mŷ[qQL]<MnBƶ# &iMjvG-1xTMszڑ/D|bS)jqhckRm[\PAE&۫j_~3p-\%3, Ľf=M#qD֭agYHӀMvqd%iEA[ aQM,”ښʶqUUKF+/lu 2fRq8nir*$v`,NNXwGN (zf5N0\QJY R!e c z3kCv0xh)Z[Q`F!KФW`gvX[\ lIMEi,6N%_w49٣)tɨ)un;Ru&l _71 `"jS,gJnຊ.CY`.g2ΗcӒ TqaVcpEJmm-WJjP`R sjd2py#\a=E)w 5Ԃ|=g{cHXK]UmO P\*וY֣ Q\/WNf׮؂߆jE%@"!M$H2ya S4[-`- o7̘V 7YR -둮,t,F Z9e}v3[/eyx-L,mez:hY,SL7 e3˸-IS'IIT 7il%ZKj@RH[,"֮kՊjֈ*3X73zx O:Vlv,Ä-7œ^@AMBb4w F(kỶ}oz-R :ùRH.C k^TZ 8S'cV<6f$V*P(HݠVΩ޾>>,g.4YvbIƽy ;vvk.lb(=]U"\-'j*݊+NNH!(ƖTv[5vδ[/~AⲔ^ќZxzkV"tU[ &*j>Svƻt:2 HVV޳xjkR QM({$!f8L$k5/9.HM6D Q2,7vQ\Խ")aTАfZPYA\A/1MG Y9qwnE3Ƅpʥ& p(F3Ef-ʹcWhXr.M* 7Rԗ&kH ,!(l"1֫Fu]1JFFS&¸Μf p fXaGC, ѫ2vqKFرI ۅ+7-M(ZZ † P;cH){ nyrځFNེ~;5|l.uЙN+Rk$ o^x\٘FPyt!R:v ke4aJ2v5NTqGb[u|j=~N˧R; VdgvNʴQFh<-{x?jgȑ۔#ڵ(r2QD_Ohh(ԋ_/\̫LG yt8N '@g㎎(?ۆ3/W=VO5@+-+jƁvu*'6>աu:pYEU'+J`fwOF寱V]&YʙXʁX㙤@f2Tr -fENYdH W0 JظzQݢ+Uχ YX89d 2ZL wU>G,+.6UPs-J3Z|~!V]e0,kU(_[SH4Mq1zB8EY ,6JV wXdYYJL "hP _:BϢ k;f4*:2h,g`kMeDZ&1*0)`cdE% ):wy5RpiFSFܫ*!]!~UZJ;Xa͚8@h8{;Do\9:z12~ B]҈˻I?..;ʿSЁȣ}.qP(o0 Z{=!m`Hd(HXȆ,_j̷8[EkX[ٌuVVm*fnܢ0i @}4ktՂޓ!P2*XB(hњ]L9b@  jjf(CB-e,}{~vC/4eYGFN:(g|r`ZWf_|?{,1Ԋ!?=nXu;SȆ}i;HO05߶~?jW,X7t|tuiPBUkiiI\E460tA/ERp]mYxYuBڛN tUu:kPO+W%PoTm 9]_B?NI#xSxq /ங|Q%`YfԬxMh:YC ;@lݺ3bǯ憯(Pu0ToR:t }ĭx' h|=:JL\KyaPOi Rf:4 + RZJY!_NQTka4"[&lyfuÅ|?7!;uNIDͷqE|>6zZ:v(z܂,s" ֶ=z]TA %woF`LiVq:/,(_~ a*VxڣݕqEX3 be1 b&.opkRxfɐ/ĆդRQh|˓BvpxG#J'xؗK+jƘ`(x "r@/ؽ[rfULE,vBueEJf$+0d!|ChAAEGب)F7ǟ~L?nWXNBTL3|oQ$vZ*:4?=o>w޴o=r Q;39+F@>6Q5(+ rüi`;*(\T6z.X_P->Y`8?=$cUP3m}T7 WVUN[ jе~&=csH}|@{.x̃d?MZe6սE⽜bNoH G6[K-٠JQ"] mQ5ڰlhk='ΖPw~S?9oV@)O};nՓCr#ƪ2h{M3DoPQJ/V˹0ѝ)YTYFϪ_Wtn6k;2XDTaac@86߽띧wr9 Vo-cL_]t8X U=\Oc&bYCI`PwӢ좍7e=p<Vt*DאR* q3Zμ3*Eh |.:rಆ^2ngPh@5$3^%xe&Sa÷f>ѽGg jo#4E;(ˮO`2"O#J^j`[[JIlǮA>Z8Mqީ['J VgnPpf؍Z1|=κ*9 ]>23$.w="vЌ{j_ˌ]Vt\|MlEc4Q.(Ugj_t̫:dD(,uK 1Qe5Ux:fcnfŕqx-b,R{Z$NTPV"N,W<[]: V ymЍw1Ryݧ#o\Mw"濸ާlq{M\COe~.ϟ>`h#XH|u; 4cA.TZ(XM?ھ5ة*@$"zH2^߹-GVOozcuf&GO b6ylJ}[oǧ!E[@1cu,V`ҩ0UL8䤈` H.&@fK:)eoŎ5䩊4!`+DpT+quATHRIVf}yŪ;S3a2pBޑY Oꦕd\ 4ZDEuKP5v|6\^ BH5lhk:9hSMTF $k@5k o*AJ3r`鱎[ DFI|QY[F԰ţGA364HB9|[F-M} LxiS`ѿ5ٙ6poŅ5V-UgwO 8j*J\˙@,MXFq-aWoxExۚp<:U u# ۅj;~Gf`$$P!$@.ڸ`o@I`8 ]K`0v}5KS%4f'Tzq_Ds\ÑBɶ4DU0w= nFTuH*<&38(*4rPRiDWp/5$rDJ%RK^g+h<8)VcQQE4y-d7-fntq&T9o $C E-ZBGA?ͪ U E'?Nw(.ͷ%"b0!&j%0 H@`)Xڽϩ$:aX%,Jdr@.0 V},oj6SϚ QF0ρP(iC QU.y  .W2m3JYlg$I2\`ܝGz>_/?~0a;[*?)5PbT ?y' Ka0*2 Mla%ppA#>Yź3sG <ao߫Bu\w/˛-QV M3 0dV-PtU .za@BGU`;O+7q:A71Lm(XrHb __S^enh ?X}@ 7)xSuDrԈ8IIhvd }p}sXqe:@)ć$$OQ8kdQ@yrX%:bJ9RA03}L e_oVv4Ѡ,/=urBT(6 (s] Iqo/?OB|/w>־h67ƧG^foGT_ %SR ^یn@;.K1Zϲ vN.-re2I50[#Σ.[nֻYD1.6EyV@㚀kf<,ⱷ \wbTMl0(Xd {0菐PI2.ˎxY2LuHuB:H/EfDr@]hq%D(\4xݢŸ]#dЇ'<N6`F Zm @U"X6U8;m'^9kgSDoN~,p](Πxd) >T͇vIlC>r08B>?mXaQbUm֍92;th0sɮ JY!vƩ?(YUdRHDGIr% O?{aä<̹zj~3](@!VY|jl;#=9 O Ips--'zO [[OZᴨCEF 5: !Fz߬9"h\ k5G>z>s@08QzLGkOKmLY&}4~?nkݶS?go#k=qVGof9 f-Jh\2Wޅ 31ua*Z 8[;[}G|n?M@bCM\=+-4VYPBea&}4Е'T Rhbi1f' 7YdnT+| 6FZ6kNWxh(2 aUtz9YU"9ǜlI=A$`|s,Jt \LҴMEhkO`[~OB#*.8nBy"hD& 3"QJ̄DUa@&ٿIc'#Rfu&"a QRb@䥉e.-q Z ƎWΙMTK]kkc7*;7Ql==`Kj;hm&ѷ0Bvmˑ@:"GqOb⩔ªA`#j;GYqFE# $ߦJ* &GBKϸ >*QXdcH@(mV;Wcp$$1 ^4<̃gDMάs t)jN6n?D$w3#PҘi)Dui"Y$l=T Ha'57^ud"GД®n2 XtPփ;s_qOflޭzx/ "=ZO$Olox8J-[j?f>M˕)ُoG3ʩV#UEZN-om`xW>MR|o_8㟄!m: gw 4#F٠0 e@V^A `Azb/O{w!O{ϫA9yz(v*⣠Qcn<ڭsey\W9W4 pKQ 7pm7UȎPU|>]]_;.C;yP{W9}|5k|gsVFߖ,gJ  H}4}o֎u!Tqx~^^on,|ʈA!hlQNkV0h #0=}kb(#Ox&O/lO"~n-qIfE ڰk?z0ƒzoCa(bb--0?Ƣ鮾Bk Jg֠d!33vzWYUΝikȾ Jhp4ӝ*KN%:=RY$t`BP #UvfWclDk8N.2G<2Xɡ&Dΰ}NϏPWmP|>aZ[+/YY3k?XX0@ÌώB-۫ o/.,6s5 *–qv{WahaӯcookVc];6=pYzyN_oxa⦅4?NgPe1_g͘Atio 2l ОN$qƔ ҕ@0~[s3obl?cͿI6Ёi!Q6န1 ȑz j 1J1Vv[HUy$ GFTëBtN̺[r3Xk,E-34 ղVփa-4 *Z͐l5.muhE `Ro {un5SQmѾjXM{G˧nW2$8 j5쫘.QƏc3QG$~v돍uF͒ms)?ljL'[CW$g؆ye Ξ1egkh~6kBp= *e0UvqEMq5f,MˢêRfA HUzTұ,4AVS-%RڹHN~ ,R_xECՍ$( Brcl_I G&lPU0b^ki"V2D9*T禩]tG2 n{ 5uNӈTGCX &bldɖW,{Ѻ|7g*9~KY`O@Mg҇6^cq@7P;GbObAC'6to\+Iv鬨W86.I6b]0&!ǡp2 :=,c/JQ+fe|0WoGpGxr¶ED+&#mHӹVyny<Ȱcز.%`~ne_ jw1^2oU~ \V=}荡6FwigoF yx;f'A.O; Dw N`<{UtTm%~u#ipWǃRBH9.?k>^jk9{~-]*`ixw›PuχGӄYUz%nq_@1zbM6y?adyynhU"ޗ-gʢkPvD5yQT*F=@yߐJS8IPHΆ~e>D)B~DZހof Gͯ161Re%*nY8l,Ь+^YkEe}լ<vFX%\Q3q8W)eP Q *!RPaM  zK~!Z4MFV+UJSVOKUh9iYpM_,+W A $7m1?[4H7G((]*@5V3A#2v;-V0. ]t6!zBn QZBZF {L}OKv|wcn^g%\ bw ?\hP:/UO [|GP.w\oIJh9To4t/@#YIWVfԿW}V5_'g.|ٍ9J?(aM^mϹ¸Y-N~lQZc 4|՜Cz|PlB (}dy  eƼ]CM2O9=GUOmyo= >C7^?ʋ£@1uE`ýJ L?MÒ=+ߟO>ױ+oKݓn`aѽCd d`S#V`T@l?I~p(&D3OT݅m1CJ[v6Ti"?XNo ٶhSQ)'yʣaq(WEh[h$ɑcy# MQq|wdr`<aNxscZ/?(̼\Bm _DOB/V&B d]a:ԁpdd<{gUT&+_ z Dk#SL3lEqR FR"]C.j/_ˊUn-׍ӏu3/H`#;~稄