summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2021-07-27 15:44:57 +0200
committerDavid S. Miller <davem@davemloft.net>2021-07-27 20:11:43 +0100
commit32d05468c46267db1c0128057d4fcf80332fecf8 (patch)
tree20f8690ddc78b76d11b56f5e4ca3f45e5b43e1cd /drivers/net
parent99b78a37a3717e5879dda70dec5ef6d23073b379 (diff)
downloadlinux-32d05468c46267db1c0128057d4fcf80332fecf8.tar.gz
linux-32d05468c46267db1c0128057d4fcf80332fecf8.tar.bz2
linux-32d05468c46267db1c0128057d4fcf80332fecf8.zip
tehuti: use ndo_siocdevprivate
Tehuti only implements private ioctl commands, and implements them by overriding the ifreq layout, which is broken in compat mode. Move it to the ndo_siocdevprivate callback in order to fix this. Cc: Andy Gospodarek <andy@greyhouse.net> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/tehuti/tehuti.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index d054c6e83b1c..8f6abaec41d1 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -637,7 +637,8 @@ static int bdx_range_check(struct bdx_priv *priv, u32 offset)
-EINVAL : 0;
}
-static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
+static int bdx_siocdevprivate(struct net_device *ndev, struct ifreq *ifr,
+ void __user *udata, int cmd)
{
struct bdx_priv *priv = netdev_priv(ndev);
u32 data[3];
@@ -647,7 +648,7 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
DBG("jiffies=%ld cmd=%d\n", jiffies, cmd);
if (cmd != SIOCDEVPRIVATE) {
- error = copy_from_user(data, ifr->ifr_data, sizeof(data));
+ error = copy_from_user(data, udata, sizeof(data));
if (error) {
pr_err("can't copy from user\n");
RET(-EFAULT);
@@ -669,7 +670,7 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
data[2] = READ_REG(priv, data[1]);
DBG("read_reg(0x%x)=0x%x (dec %d)\n", data[1], data[2],
data[2]);
- error = copy_to_user(ifr->ifr_data, data, sizeof(data));
+ error = copy_to_user(udata, data, sizeof(data));
if (error)
RET(-EFAULT);
break;
@@ -688,15 +689,6 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
return 0;
}
-static int bdx_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
-{
- ENTER;
- if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15))
- RET(bdx_ioctl_priv(ndev, ifr, cmd));
- else
- RET(-EOPNOTSUPP);
-}
-
/**
* __bdx_vlan_rx_vid - private helper for adding/killing VLAN vid
* @ndev: network device
@@ -1860,7 +1852,7 @@ static const struct net_device_ops bdx_netdev_ops = {
.ndo_stop = bdx_close,
.ndo_start_xmit = bdx_tx_transmit,
.ndo_validate_addr = eth_validate_addr,
- .ndo_do_ioctl = bdx_ioctl,
+ .ndo_siocdevprivate = bdx_siocdevprivate,
.ndo_set_rx_mode = bdx_setmulti,
.ndo_change_mtu = bdx_change_mtu,
.ndo_set_mac_address = bdx_set_mac,
cn#W6=3mRc8a7N)Y+J=y,+kP&I KFN1%+w2'3nt\jPu=j 43cRs޺r/79Nn~1Bi+pl`ttϮqv$7]lEБ5AUMpUql\!MtخxS5΄Qi=;q#{h߆H*c;)o3G3Vr~SekG~yaI; ZlN.h>2W967ܪEa'*whO_~>jKli9{kߕpXCJkG&.Xt$b.ZV1vPDtLy`q?y}|xm( yQx? 1!"q5wD (:'^x=#>ا9։@BB'!!i=5aoMW,+{YzF?CGJC~01xD2Jv3Dj!"*Vt[|w,7&o_?wnü{Ns1R˶3Ӱ`֦0#HǚXI(p{;A:N&}úḻ ᖶb|}pg1#&!1q&)7BPu-ƭ0M_/m;P0(yU乧Xۮq7)#m".A#um@ҢNuZuŵeSqDkۆ5n[wjar㓣HӶ~R2av{2ꇳ n}x}zѭwssR;ruSQju/F&{}u.S]? 﫬vv[+>x jX_|z=kU]ղ|hAV{p|CEc\HOl[ 㢯{sqyQngj~oLg_l/]~5J `nAfė}}8&E-n´w:TK9 T)z)ae|Mc DRB|4qCsQsBzjκDX =:GyՏ SzUp̒Cd v͑E^4c⬑]mkmcVX#y+8bm5`U,jÃU gWmUUmjcm;VT@7]E%o7l'wtyyé]VڶUm;wwm[MUyhګlUEI Vc\ۅ*$&dJ#:ewl^6LF1Ʈ6VHsf ̖ej*+9hϛWAĈr0Frn˶e\ ҍ?ƩMElt*ɜݒ}\gO.oo_IT@ Le^466q;y$I$IRvWC[e|@dAK _C_~ " ߲̿F/մ62k@WO LBa,/UgE[d1- LĐN( 'Eሣ=tL?DnT*xb=v  qR)"hNq4EG4?U2]A'9OzP]0DA0q@lǶ;%޾0t-{da8ˬ(,{yhc(5Pse]M|b8@C\{5Z*SV5PP1NjBYJڈzܟgwنF- OZ #enz =p+m3FN]hS T?2wN?((O-o_ ā8r$Nu3p^x9!mT:]He% "}(L3pzؗaA'#I_M6p%89~+:G(0`iLWXу'fƯ@pIi@r.8,OT%}QbjQpڀ f*P.NTƹDDvޔjȰq!H_! G*\}:elN-eX>LGսOgFK'̜’t(Ⱡ-Hc Vՙj'E$The00y~(90IX@-z}^phQ "_( #!k0Z037-z R& nH{*|#\EݽA=|%7_]mQ*o76J}-v߫ok.__QuRש]^4{\y/IQ!O93- `~i#EP>nuU,B0?Z [Rg\sޥQ bF⍘a]vn/ %O^z[Ĕ}\,O7 $?}$oTGהt5đs<)Sa[S{4~6t}/*=_Ѻ=k~@G?N$# 芐ɱ}|:PlQZ;>{߈2̞%Px*0,p=KlnA"DAV{n)4${ m8\ ]?5dQκ+n 2`J=^l=-#nG` =chCGj{7Xd꼣F$Quw:UZ_'Q@mq!U|Db#5WaQlw~ n/|.mcz}t=gZH!_8c%{1ˬH2sGP7P#_Nx1=$~]f\L.v*'o7%b^ k/Mo3~^5FJnylcwwÖT.&! vwqlj0پ^ lwH9e1#vF 5SkaaF09ɲ kͤ:u~<ɰi =ҪRn5A= zCH;(B]5|FćC͈G:;z~M¤:?c`@'L*5tEAK F >}81 !>KZ4֚$@DY7m?I:ftlTIÕ\&ե?qGC{R".A%wQ{=vRq˾R[<ΰHine#bMS Ahqs&?8l83i]FQ7_EM1pݴ0!pT9lposjJ^6Bpw0ðM  Q9 bK@2tsߛOS˃BFȞzCP/z]1I^ǫoavÂa`bw1NfL$sԟhxqW tlQ<߱vEeCN]>H[WύiM]oO1Cs_q]7]y/yGC>geB nc  (9xZ峯nRFdkà\rXɇ&ݳ}Zy%])*ӧWR']D+D96DK-_NwmMTZ]vh1ƝvCu7¢7o0s%** nCamC'7 ߮6kvu0LudkmS-]NJNLٗ,ˇ-kp^ _i$\aL[ϧN݋v NtRsaM<o'[c4u@ssIN_ݷl3 O[L<:_wX HBYpu sF ٟԨ)-DIĊ?-:xrw/lMuy:t2NN~L]{x_vZh.mkuFɃ4A8ObƟYܾ!ګ!s髨6g^LksJOVR\վgvNkj |! S&v-\PLnL˨@$:{(O]u\o[đc s n~r7 JWo WYR~:٨&%?@î]K):m֢mWLf:{ mpY>e~PJ&NbI_kJ&dא~5_N JY,xesˢGf(G>u_3v@]KNΗJ,ؘu4??MuF_7$Æ.Wy T;Wʰйg^߮L/阓 pޚEII 3yjG{*pXdK>-`hݰW=9鉎GC?b:}tW (kߪ {=T˻Csc1RX}Yŷ2D3ӒiUCpgᣵ:s&иE8q L:<_qXێ<.Yy[FIz6m/ @/.ȌdroGtZ#0|N} ~ *a&?l\[9˘V3Dis;:Y,& b!cǼ\?2"AVrBlC4wxw` K h/xJ ,FB:^spT:˹l%:n/ 5QvycӍrqk#c?+Y8{AgȖ<υY N ;w( Mg=YJfL 2{x+|{.3Y{yo}c Ξ{LT빫8)Wf^JaٷOdTrc `$>SZOGUTL)~xr(ۦͭHkZ'*ש<[ =^nJ>CIJ(?ՇnU{,,}у}7G3w}E^]K lm9c|P/ ]6{zD鏑cN&"a Ine H?-fݒ~Qh\4?u1l*8Yn;av}\:޾G:"'?͉NǢ[ֽ3O,+(Պ{z!9 _rp&B{À@knNJHN@8 eџA.*2l'xWM-xR˫KA(ȉyAPCfZ4 V<cEp!Bqz˸f{ScwaBLWc>[9QQ 1OB҆RF^Nz=4ߎOj2 1aD!Qqta/4=9gþhy|滗P7 /I{3K Cȥ1xa$Ze*&$=,35Χ\qv<_&<@܀#y:R1|9{yquE#!7#ܙ:Çp<ź <]0UYulن]o1Hot wCZڟ &N qxkmsb/a@<* D ׿0!|$ U,0;v)waٲ!H%y4to`3Ta,2,Ngj|t0 N.!Q1 "` _=G&( xDLL;Cy֬N 5 =#ܭVSUarғǩzqvnlKUڂ9uNMg@o% +](85\=R7GiJxLҐ+it] =L<%@rჷ?`psf]gz~*y snٗ_Wwfxtz|GVP=g ='!A;Bq F4}U'D8w>UH߾s=q 0+8C}#Q. .߾? Y[9_0[t➜ V.Ь[w<th(+b XnH7'Yz^hnG E.ɬ]k(iOSnjdn&/g;4}iO|:QhKw|#8VegK'9)H`EyKLNۃjƊ48&Qru"yj{=2;fC؜zm6 ,DcɓN=NY̔.Ž~~"~HQ;s(Wkt>o-:@ې(z`[ƈ0qe w2^Tꬓ'>L _; *55_8;Ѵo#"/%pU2gҿAї{ :{sTDSI^z z?_-MV$h_' Gĸnn GEZHgA CZ1gfz_o-BPTUD437-ewwK˒ZX/K"`@nnyQ D!'g݁-aء8|䡮ߗ[ǎɆ|7;٫ zDpmg_rJLw:%aE||e@:} 9`Zxl XɻtC(^k(=;4sONn}nuKsB rrfՄylP֚K-W^N4EqtF`AK[,}| QG ۫|buE`D,`g+9a! ;gmj$ sAb|-mzb>j2I&!!ᶺ!Ar;?T>"GSyTrWåA 80<%)\[-4dN@}Zm;]}Lvm)mݭ2l_j#gX}j{* `JԐgQ3=Cs oOG |^+ ףOj1"I<ŪðͳKd[s_ME* Ԉi.AװH??g=+__x̢~NHngiE8jAyFu  9$:aъ22T/GC<6qc<ݐuDH}H0V$<W0P%ztͼ>!N>v[SP@uQ 2F/@w /x9%X&#.A_V_#EwIÂ]<֐i21 'e^1_]4șp.ӫX~Moa}..0Wo#P=~&!]j,:1^W  ATtmnէ 7dxQ Ԕe 2D]kJrM GP>Ӭ2wGVw eo"{7G6Iه<0@n}ЉѺ~zt6D*0M!P *[v -"<8.LF؋GrF:xnOڀ<5Јs~#G hWb 8eub5)lljCP # <@௢3iIG׍;ϯKg 5ueѨONlGv%c!T&'xР oh+dzH|߹XE9IU>5ut}&EW6w _zG.4k$PE*"1(t:1,lLh :ù)H!XAѩqNiQV&]Fakՠ޷ ﹭&] 'c =?=]NJ(yTf &v?P\lbB8irQ6'R${.wOac/9;ӻo8B@^@v{3신R urvb h-Se ?Dj#S*^}UθԒ8!=^@%vC^nX.b5 mמq 4Nw3!k? "G UǮ>c=:|1=A-o G Dw#{Wxp)]̈́|&j$8mr|m_O||uc^o(Hsa_>͠<b O_{zr8gtc=3]X[Z7Tb|` ݼ=awǫ gPz-eX:Pë1D0dP1Q0dAޣ#۹6@ rP,bzxlmsJ}:.M UnnFUA/b}[]bY|r w#tm,1R æ-&(Vp #]5N}#wܴ0\'C <(潯GJ޼֫D&;c*:̾c7V(=Kc$>M4utKi2\kFFi.o}dc) HF&=wh90dTlI'h*!w- A`(atp ͢J_08(31 =e訚O:bT+%Pdkm~adga( #;Y(M˪s$11{&nJ 3!pz'g!.]܍Tۺ^Vku/[;-5ukッN˰~28",@HBALТZA;OI ojGE#=dQ apڤ(R:c[VPo>e46f5W72of * dE "b?d$&hMSQ_W~kκ]u3v-9ijD$vHc豧hy:+4o6q )C.Vs9'ZO3#Kz3ulґ]~1_p:$xNli$3lg{G$@E8c&F1`{Mu ~KNiG8ԕG'ӽ?v}ia,K;pWv~nQC  QؽZJVب-]O>p葋1H(`BJ$er4Cz\#m׼6K1v XV3P;4TȌTWuF29b|7Ulkc'm1:D7Έ&|:Ԇ|I-hrY$%> v`RPT&YA04!WTݶ@hp_3*ݸI k<dIJb>9Q;c#7`\ l}3:Id"(č|;H'sۋ̃XD.i_>qWqZBiB`1Q2x4aT Ct%!l@#=%vP`Y{gPvUƑ曏kN*w'O#]vqbʏ _u~sk`XL xnu}CUG[\nTѧxڬ SJ6/nf5EDiBAdP(1ɕ27,#]9 C:Oš+oi:?ʛ2ߦ{H A )}\V~Q7>xX50-QR+>9Ӿ忮tqX-k0`1r]/0In LúD9OnR~gUUMb5yo€SCbGQj%.C`^D$NH-U =i/>Ah9k]~Uj?q0`OoSJVhd brQ'&6R`R} 6cAܠY5DM"\?.O-(C5^T5z 0)rT$Ps&Dh|E0ZAFT1"K,^wov[#͑ JL\G1#Gh}oGfDH򃫓͸đLLHkjp .5ķC 르i H :h\~y_H.U}BHzVr鿏6ڌlZ {ej;@%l~ߐ@sqYxG>>Afx^˄6<{9K1] u Uޖx@LU63̙f%t7gu,w%3pת:6&iTJfUx3A 68S{@#).nM KTMu jdP-a` kM 4}͗j]AWP-"ZY}IXX?6@k"p{ww|DԻ\"!gNz4_Rf3 SP.3)Jĕt9_L_3;Pt ̝Ow{)z3tlXk/S;sj@-Wv|K?`>H{feΜ֠N~XfZ$DX*neP(zTP*^Y$H bD5yxBCp݄cCUv.zϹ"HaU`P2cMn@~ҳ}a^7/Sĕp!S2 !W{ xc)~aԭ^/@ ,v9'M~ 5^Jyy8qх9(Y=Z& ڰ  >s/dG,]Qv.& VH/Na%hȢPgHQF &+uJu0.!J#V$uJh?vQ|=?*Dt:p评o )&4 Ww\\?7pwʳ~;rs2kc#Rn`\Bz@ieo#ja\^Zb5냑"_YG'W&:p5 ԡ1f6<\,' m&bw ay'^JE-b%B#DByBrwl% ޾YC¢_,6hٽ'Sc@eW,w8gT{jV٩Xdu m3݋J%3[MUn]ܓPHS% IZD2}0nljkF&p7Fq?k nc`Y5={ wsRۅ jȌ' )3VZ%,-v8=޳v|q~h{u4fJCj~nLI,ty[=c~TdD(+_`(/Q/" z bظt ~w KbWu=DnGܥx䣮z2G~ ×=*H0Ù؍4V{"U϶] a@|uq>N{#-|q+[5s;|Y_/:[<!cc|2CnK^#}8b2Yؗk_<7DO¦ °}b7aw9{`&p-M(BZ=,|qÜd$ds=dAGՈ^Qտbq~FݥG5JQV }vjhg:lH$`G^oPZ-r0 Q( %\HR/a"?0a![Yִ}?fPJoFuJ ޘz-G+=&`o%SzL µ0|-ov=7G9m_𖥆n;UwNžV'=x/-lx;f|XRk񩸇S^n٪[:B"5T&ԎJr7Z?a]\~2 >&w?Y5Կ&\$:w ^tcͬ `{#\Hr0$OPǓ;C35\3{t$D:mz7޲˵?AC7t+,-Bm!B<R`UTTv%Ch|Yhqkt]W `C!2Oc% )ĞǼor UE'{0 y+K]Lqh !Z+%HCZ9g AKq~En%c?[a9_(<λʮ(Ls!ݿ0>E~UL!E(`\kMؼ>\dp|[s8%ӑ^|RJ1Uڬ uC86$H|F4tx)KٰVkuBݺw8HS&/.qk?ϓ=xlٯibލ}*;Hl/cȿAkKKrUyigqz5<>%r8c%7 2" W:i-vIVKkOQ[+ O1Z?1I rmb2Ys!uF>Ō; &6kj<~-,f&D,(["ʁ R F4{^"gfV1;1'$>y &bMQ@;pMל4T`u9?^KiiHt0)]+DDڽ ߚȩ$!&3DeݽG Dž- wR@=L99~dRN d؇œs閻ᡵDn'AL}:F=>8n9. & +zhG5ьE/|+z½nEoexWA3Bx&:xX4;rQ"%ҜGk,itE(cL1qۮWusK8 W*1f=Mr-.nGk$&2= M]#P|5߾!| U^" 'Q-q $c-XT*ثNA $=qMP]qiUץHM\w}$}Yf(0p{{ x TT;9 *}$8 S ㊬.!~5+tu JP!oj$򺺞PR`M^$b/Ђ< iθFk<]lFn[_(gu6Kbt;R5ً`y+/~0٘xsV!(B18SSH*NQ:+BYǏ&@;:PW0,\Te O.5%sBǾ"Os bBm<مW|Ϛ rJ?"&QTg5z@_?;.z*Bj͜՜+K1:D:CD˿{|=a\ARhNn?0Q tQ@ave ;Ÿ &g]1VC\J>Rj}0[z._ C3g7I~-%23ɒ1UV94A !}`.yd  MS?؂߂~3g/ͪIY@WB=vdE:^𨀵;𺑦撸EP_n]`IHC DޡZƒ.Ϯ1)O6k,H-4y=xcg0L D\Ê+<z|6 's)H~4xáb?o:tؓx$hk2~ZN&=2=\ ,HpTDCMAeʆ]o˳>~;X@l>xE4o[(厌f827sRXl]vׁGnLXgeeթG}G](ɴ6@d2;TY$dt6b2I3.M.;T_618nlC¡(r= &r EC2(m"?$g(a=|$G{wmq**!]{g;<3YbjtF.Dy1 ?ktM >plM_h Np`Q bhscwT3]1$⢿>Q|V>1Sh '/H:'kF#ӶYB q#pe:g{iك*/a 0f<>n ̺E1J A#22>4.,`S0 -B*EA{60lh*mLFQU\'#1NxiVeB.)ۦdIEGUᬣ _ÚDE퍶$9l# LܧQ8l7xX%SQhjKegEQq|EiQԷM_7oG_!YE\(V%qRI堔\s;Ղt2L GKD*gªGd MBމ?)X[Iܸ򱲬N(w"*bn >b:_/mlb?Oor|'XltR$[-XRt* Mӌna98s#x'Y2 Oyc]H{tqB\Q v7^hgCvksS#LTf.2qGP8ow~Z?ՍKmmIfr3g}\@>Ag?ÕG!̳c2_-coRtb{0L$eNjP0'd @=lʲ *qg;;ݸk8oEgr}msM!BFT]u{1M0QiVp%|n2&.0pU^d_ֵ e=UN~w&=U^"%Gon>H铩g^ܼD=TM\꺚KPs @leM:ɜܩyH/PdU/ujI"l( BP"|6dĦihWbॽ6j&BF2O 0o=ѱo~ύV;gHਹ=4Z5.Am 3%g{Ch@CN"QO5. EuߟNT yk_e1XʫVE3xH2hO]:9?c ̈́Dϝ@^a}|z,.ds3B 8$w!(w%ʇ>BӑRV#X8dPOqh>P0w+_G#Jj3`q` 2 (@O+@Y~/27AK;k&ϕ]y'<=zـőR0n|ztb`5'Ț3^T gq#^ X mÁ'sE9RcXwӭhるp_sQαc$cKw{bzHO(>{b\sU&\'ɒ.V?E3@rd@L /gFb]p.᮷,|`:G"۹y2sk`4,|ߒʓ)~gD{Cүd8ICPb&e4Q:70DR*:2aQ[7.wQ[%FGPOp  ݟFgrUTxTG7D*߄\8z0PYzA#rOԵ8L36WjO #D͘&L٥])ʍ,4 M몑j]<(3@kk 9|~kᲤmum%S" :0xԡ 5 7JXVZL~_P4 !OPprX EW(b4mCr Ch+X۟ߨU{U|5kU{vLZ~n L] bA$Mlyʀ`2zbD,d ~X_j6"(PDԭ7z 2u>k5҂7)vzYSj77Xy^jT9TctbcYs+KԺ Mφr&&4Af@ OԨ=βz7CJ4f.|FH1p[[d^$Qur%^S]?DN pPgz>*?IN"$E)NP'Nen5;tKfFJ(DĊN/Ɖ|ZӁE:UG[Ů`T`zf3eWj[ ktc-QaH۱h56EIXftsr>d!{cٸE=0~pG_]QW%v=G܃8S3qP _~ّW~Ts.BG/ hִ`aĩ^ewsӼ)R$sObmQi p~M6 FkFR٢_OY5 <ޮdPaÝYPD f:L/ܩ,!;' Q+N D  ΐIAsXq,%iqxB_| VÉ4qU/KX~-YJwpLݳxܾ4FnMNH~ 7՗$A<X3x^ Ag}j;b7fdgڊv޲co#)oƬy0aF]"\隊x ZSэV7DRe؎'HGcsd%3"ָc=NH%PA:pvL"Tf3peOQS+ c&zkQNELSјs\s H4 DWwsPHׁIĜe3q1yVgg=u_#lL>:G!6i\˒ ӯb㘠[Çi17ijE<&RMAU.9*0V_`^[hY’(Gд!qʂk zHJS8[ 8 h`vQ2pq &,Fp]Nj3eBJ "%,`lKI#͐^uyy ؔ+|,'!ZW#kV< ~y MgE9b@bJΙ/+}qonˡgq-r&cCS)5N&dZ> H`|5MEK]4%_6N1czީ=|n\4Wq= 815f~*HAި1W*b, ]pN/j.+,v&ޭ||%|XF. [<* +vh?BU;p$ 2. #WHLȓDTj1<)pEKCG,rBǓ3~Ӗ=; xa{Aƫ˃Tvv"]?2}U)Hڤڧ+uE8ƫ&CݟJ[T/3WdvPPsX;1">%M\ 96"SF2 FY@>@mXIp*ZJрinD/034I,d:~ɿ#l#FOVՈpv قC2u63z]) U#0mRUKwTsQ@Ӟ>X-C2wyosܱn](x_Jֲ|N;y}[rr ~gu Etx%>ٯ0!ݣڒqO$:i%9pD9ڼZsk[ƊIg[M(|@CM_oZk1H5N#K-'@@ n[G^ *ыz9~Ąbr*H<4"e!ugq03\2.{YBk**6z˒ !o. _y3}i=*O-,,?P\CL'(Bz:<}I1 |N]YĕV$H𒻊lq}RΓ^ M#fl'ߤz9rLA=R( 5򇕓kro5'ΗE]mw\]&)QbfX);b! :wּ1U-3rqcZKJdKYI-,zcϝo$H*nf_Fs)`h&QfH0*uȭ3$\;u8bDq!N[̔sUǶp|qm*,\C~6G|#Ŝs{a҄6X'ʮkxpݼ%⚅B~90Q畊|!'!L58mp%BxJzqyoԃRewdU0C*;? !sX~+u;QIHNX @kki!곜џB Al@H `t"y*L^ވGf'd#rout|ׄF_8=]Q܆VL{o&\nD}dTFX1Bp zϪ " ٨O]2g߫^pN '$=wb(:[w6 49 ်v!@jI}r~jŤ7GgxI>NܣR%6nAM~6|R@SPBʏ"8?`t#AdK;DJ`}!cK9n}Tv ʆ  bˢ>34rA hFe@ _VP?tQD~%h:\ךohi4@7;:d$D%X>:K X+|9/d@w\Aw? N@xzႝ]M"Z_2ՖEc4.9YCd・=[f(J>2&| DQ"oO|'ڏZ#!GG|&zJCO.K7arPM`hp8:T_hnVtފYe= qnԺ.E]1((Mc}H2&sܒz-zQ[ 9\}O'qKgB0#Z's t&3+%ѝëwٳXT f&q0gJTSʀIb2|g!xG9Y #h\|/ʚkЊ2d _mOW״ϫu2оBq&1jjliz\aNޢ L&!BQOJ@}:ihctrWmn_<ռ@Qo]B*sQN;B( +^ D,"W8yˉi@ԵnrƬ뼮FAwxw}̵oV艹#eFrVc&V??m$lj?2iH)GBu׺[E?%ç΃`ˎDzߠ\pAxUGnR %Xc7| Qa.0 nU$ FUpqlz-5.#EV 66V/"P "nj}Xpmje5qKu8F |zhI*F6Bɋk@v,bxE+g |}*|j`D72s%'ߘ?Z#e*!RI m-Rmש',0*NcE<[UlȈ(k@F9Ƚ3p@;zDE f;9BŞvOq?„t YYHQs&IPk|h"^ @tXfyPt*¨%6IfU!aq phN(zrq:{Ѯ[*waeWAC.9 nWɅَ>⫖+wPf%ؐ2|!QG`_W~XSĆPud߾nsF~f=kKZ>6;4J&Ȫj)&Ph^a7j:CzXB,=-k"Ɇ'iLmGH0!~ HqZ' ~WIӯX;Lٵp'[6u``U%'MT2E.PB@.r8/w{ kQ8{w89W&H:lؗ,zqSI8.tq /.vy\G 8,w>"C7ʐ>, o{Ox/e~MeP/޺"TAy󋄚7B4L㇭kTT:hWxÓ/7cƪ 淋MyaʛXI%poc׋;vqz F\pL5Džە,.KJ*8k${\u"g3_Oez k!g>W)Eppx:6760 OGN'aKIiK&D4{rtW YSJUmQ"WZJ\Rٖ`δqH;*\#FL[sc9 n/u'3σ,X񧃔P+!Y\}mY9η@LN3o䄲hgC9ٴZ(`y[]kyݝFzna<$w$oFP"4.yt PS~|sa+".8ǃZ׈lg٭kM9m'2>iBQ\VatVrcQ2vDV&:#kY \(&ufeQϺ LۜZSb]Օhr<7FwCX` Ty HkP%"M1nP11Ae+N7ks/y6Ƴi7 ,ci6'rkF\# Q $%^'p$9ilI]vGi19euչtw2TYzH<>_>Wg{cV|_P=q}9g`PT8gx՟V˵dcyGL%j9ڕo,ĊcSȘ':j`+|ɗї|iٻ ]dh}E!dYƛᚺ s^uuޡ3 s1i0k[-PiYl' &0Vӹ˹D ~74jO] O͓7$4tVcWgW-,'^I_9{DW"w=贴:VsF( yo%#8luqvk@QDH#$ OG9 fLp~n#ɊY-}GgIfVIgdi'~ D{U?/ nO*p努}V~edqy?gf3&gF1](P+rPP8 {ӏ[n Qb)GR:m ?>y>&ՕzZG޽&CWҧGʤ"'o:W-C9g #2UJX?j|>}v1wϻ@ДmC8l+igeX`mSCw¨; C:UփdDd)Z#z S!5!v(y*CQoy vx4PO 55a.:(Ї!/UT}d!B2AktQpV Bm_Dt)zogά4Sd gxQht9TEVHK?(ϛz̷~*cXp7SLoU`F[aOIZyxOlMsmHcYrhS~u"4.cHs)Xr;>c(^ 1C(t{MUufQryQ꜎ﳲN kܧ!Љq_i4Z\spwQcğFkT*t=/% }b\pSXy־o{th` E:ZL , UyGUB'֌(uV͑h.+J fbc "R)J1HVE*(aC2S6tj>6EF8.p>~!  .MZ@G|PspLR0(qaƒH|TDԦ09Φt.NлAk[βΰ<^ci]uojr@R@?j.WKfDk%'Ji>"Dn` 1Sa''Lk+갋dN^.78%tޕEkirG?sgfb;ڣqſ͞z>|@|W\Aj.q&!"MK?9AZ;k D^2\mU\̡+(2Lb@E;k,ِoPN T`QDU306U_륅r'"> 08;^a[$vS"MQ-H?\N[4v1 $BF_/k?5OBn7Ȍ^[K-g艈H(X.q"בAB7y߃m,/՘ΟTv(CC:xj̔v)&GqTE\ (SMN=)h8lHO r0m8bGP/9(߈.7 i{>6jk<:C-`W" [$Uze1uB#­Mk#JN}%t0uyd?JᅊXkh͐ދAPѸvܵBo|'nWH0J yaDxlwsIz6Eα#UezKFLšAſC}%m>Qoτͪ?㑱@UK"gC$.[ÌOU"L"> o%z=vR7~ p_ʠELI4C1{jSEsEZս ČdG5ȼieEۡ iF>a`9f+)^ ÅXkNC R"CCչq,e]breW"ZEv㘒L7Pt{#G4 j=(^:_&}os1S,|Sz>n[of¹ٵve*sL s^>ͫZ7ޡ,u3xfb HM$r3)EρLu?L7*!᭧iAH v*T>'4߾׶ȑ|8j{Z2Ő3W2zS2T)c'ל UD+3ik8/*˄~po]>~5Y%ZI` }#[Ӓ{77ޜe{_~!tϳLrҀfsjA׸pWA.NwCYwaMeh־NA:؍'v/Gw+9~/m͵nUTē?p$ےEU8d$Zux7 O(ߐÖ6pclSAg/NuПVy!3 K #" F񺁻Dyw\ޣkCs9_ÕUqY:II?)Lnoq: G%2p!^Ī A0%#4D)ti(#$@N& jR?sHN8g?Cٟ~QSM[[j8 tm}wt׭DwQSOywߋ??pQ&kE#5Y_7ܺl`P"}f.F%?ҘI62)l2^F`µHou]h!Ȍ'̰AJ$L촂o+G `6y߸dY#*{/)/l3Pf#ؗ%_<#.]ӬT/6UU0Qq]PlFy#G-'oZq^*oV`;5ŻŇ|6z> q\" RB37(Pr!ŎBt;'mkx}IH2)S>%H SXHe@ u6 Pʧݮ o~D"=JW:'(W~~?f8d,!d3tcM濓}4k#q"Q4@>xz*Js{a?\~ޝs*Dzy۝{.c6{VJY"+.r9fU2 o?!IG!R R @`D "Yv_ @PRd Z<E|Sԡ^o (@?`p O!0`Pҽ?XiWW}gdۃ<.eF+q|Zqd \aէ[.r\Fk5?S'Fca`ÌsܱY +;m(orzܶ9u}nv|Oh֪i 2.M4~j+Gf F3;y)?s)`>&78R9rAl|YK "U!7?X^;5G:>?ļ^cjGnχ;|{~7sُ?׎2qXƞ{,~C tn)>KǦ=mtdz㭺EHrx_cc<=u l9/D٫CWI^#,FYcw26'I;.{~C W^-}vH÷-cv)C<^G$%sp/ w^zG2iq/S<-虜)`y 99X+1V$+x nvu>_{jw[׳F߫óV0w7BAQ`8L0)C(~ٚZ?NksI߿-jHxH`tA?15 6~"fTgs! HV+X$PvQN`=HihlZ"_Gs'75~A!_??Ö{C e"&"_/+ٵzTjO%"wOcA p〈`~!םHmꊸCGYB#Q(iD9KϮu*WgfkS * ' ) ̩ -^:-~/=Yq| =8'yuY:`]}z?B3 G?hJyG C$) -UEfi(Tb'lMjrMHjNmVKp~|{m?u~c:ח^X]|3GV۳}}o돑nQ^/3mFғ.ŃשZ׈e.]n>ˮQ-y;op|1nڞ:F+^gVӻ-Px;ϐނñۆy%vl^_` M!zxa}Ф&;wgJF DDwu[b7fl23os6H埁 ,e#6=GW"UpXZ_G۵ZJQu~kEVK]dU!˺sxu|k_U6-/J$F7q! zT* at)WI_7j0gɦᬉ<..AG; 3F3v{\u`EnˈcX̫ۀV>Ĝ^SFB@qYvc+dp +{bT}0T50xKĴsَ{vjΪ?,dAQ /2pFī_gofM~%ׯk쓝xPK)Zv"q]'w*>QjXH9(b/paQX7 3gˋl=r c6q#~;am_d|}i|6{#U(:DF]~t^4#͘d=b=ɜ4uu])̢6 ~OrzƘtOWFnH`zF%=.( ЋLdC8b PFG!t wa" Nޯ=`f9;ކ_.xXeDx߂o8z E|8ij"$ Yvjp@M'gQdX lW8]SրlDK 9oMk_2S}|?up$2"Yg6}\?3`Y?SmaF0ڨUyK`Gx#X5gW/?fSXz rZ#yJ\KFrx//Ab2d/PEunc 4f]:9g@"T `nb\р)iCeʑR_iE^UPѭ= OV7fpc_;V_k~x+^hODŽaC$ M^uT<)K}qs!G^^ͨ;oGףaӮ ڥ6z#įd{A׬X,(Rq/_|,4#D@8A(׫1&7C&J!*;+Iޜe{ȭşO֟KE)SB9(W?YZ%v2zr :mAPohxPQ_1}~Uz!p NG?j!="t'\Ѓaiד ^3^6k=.@* ,d,vE6Z.ob+|ck8áY+Wmi">%;90/WKuߩtgA8,5+IY:C=@GP0w:[^2I+[F>p&r8[B=1䢣{]p^Nl3k'Ƌ|VhRvfa:#:}]>;wF (T.nce5B-2^3[ơ&af"]ӐB Z}sD`s+Vp8f30sUJOJy0X$ {Ů.>YiRmZʕLqڱ?PErUWn#tմU=|V;n$JvsEiK]E ,]2=J-M(d` eyjCpiE& 3y'3:=+HL7J6CWJ?F=іMYWf.!$v@?7mƋ=L4Ꜫ(ũ]mK_c;b[8A܋s<(t˝;gZ{l&*K@A`q5MJ.%Ccj@UX~MM*.H+syCwxuhZ2хZM<6-S$bSPjPԣSyX6/[f *PDGbk`a1*zٶm}mʸb~lVTIk B]C?B?@J)RI-g Evhnُn,*Y ۢ C.tȱk7\]R}u#9Q"nXf~_d|TNCT+z9d_$jΥN[^ 4ZfqSW48WNꞬinr$97d~\% 7c esEc/~'׽A-E=OQD2{xm$ҬOGFMfmr&,b()jel+C"M=WWRz[25+W: (߈sfZ-.nZfpBDI`E"H9r@_mqXQ<-D{"BA9.wǂ*dx'PxMQ/soyG0nܹDn@1w@z8җOÝ@a XcFC,1riz(wyP˿ !{sgf}gt v{,0Ur`\ ~4D6E'/"3,*>/y Ώ[q 04|ZWxz%3 O AQhRɘ 8_84Rp\𘫺||k詩)go.sWJwO킉M΃_'k7IH0W_WK?@C*/gÐJB#$6A"A~zt .q⇞p$zMc9}й^Ϻn i zL/T5 )i4%E!$i: .ێ6W QN f `?`2m[Yb4mր8LH|R4 [(9ќN 4~,1,^8, "M0|coy:q֒8E$J#zASʐ]t^S2{|C4'{$$H*>|}}U'y}>|o|ttao-:[~n>TrP ug?AQM(?ݏ0i Dx7A#}k)-2˟VBb/'C v61ªnh60iaD}H\=\0`uM~L|} 8;n<]9@8C j~Ĕ$RgzI$̽B_}ɄN6TjK{osV/W:I}[!oxV.a'(0 aoG>|xs= l# 5hxg>TEM4RӏY/q ޵Z$󨎚5?ZЦNuMc|*ӔYdgj3|Tf$`a8ݭBe;]*Hׁ #뭌A Hl(Sev;W=a~9G+HؗOLƋH&ЊZ9 9D Yf , `. LOЌ"˻\,zGXn;w̑\upcnj7mN'KkۼRd' ,*蛌sԨ|fU#B4r"N`5U4Y7Racvv^~|uW;UŲt' &nB݉A-O/(bm85?/*F\)}.C}xƽ7mkCzpӍ}h/\U1r;\z cT2+ jǤū#]^o ǫG"s15 ]e۳#~p^_O̧1׺3N;D&3;)SK #has4ڑt]ddN!W#WǸ p(/Ԫnqy=VHQ]NÔn u(.`bnvwϯםU;q"ugtD_'%'iLՓQ+])svv]̿jh2z^J32d"#sQЏ[szsqX:|@[0vǟ=*y4a ApQL5?CMAx@1A+v`Bla$}+Q#9`o|X8bxT.`JIUٖSDCL9dE?}6 `A:Saq kgzwW a u- [')1(A<]\UF5^\~u8 >5O뺟 Ǵz|>8Tkw[=_~g>f:0 uɉHQǮ%,ƾ |qeg\.p!E*bB m!,V\.n3ԍn2ݾ1{VX AB)T/.05,@oض0V$A #L4C ߦߎok3ϋ#=.;_Iʔlx5t '#}qnb5 xc~ItWIeom Ο >j6"wՀA XDNӓmSl^ق/F,C.VR:C-ƶtnfC[33d&N9Eb]*,6u{+UL+kj&7HnLRLe A!tYjx/@kb>uύaa.wϢ=0!}-&3^Ɇ^sF4 \ ]XLBiT|ܽw }tc !4usn% #?t[8l<΂\wh¦<SQ _:#vI S7-ӳì8c#]|/Ն "S^2[M4Y&Y9zl}N1žĥaq$8(ǃ'oGxEcy;ch伈ű(ƱzQnHd~1MpMDa nx΃4DA+8\CšqzӾT{4E2'c1s}Y/ܬ4AnUrr2t{"ԃ$"jzj?A֖7fݩѶ6y8HQgˍG2p$nQɤmG!~5S4;w 5C̀hC*z<$?0?_"an6L}zX?-"'矪/~NT ~spl !bl z65Bk5c?W~(|3$ $)z,cm!رbŶj˓2`$r A􂦨y]MSrygNu65)DM:4H #랎ukOisvh=- KN 5 s4]Cn"x0uG>e??taypn;Tu#":GO%LQ B}%wS~sٙcAٸ۴legf MZ.Xꑘ䠆}vG3 0 oǔ^>ry\(^H/o.}| W?`4M? wVQ@N! Vkluß_ۀaTI&õMz'BLp!%ϛ]Id94!kҠwo{{C;:bkU3뷟I!n)P@<=ڥc7ncrg;he( ky&) xGgզG9-xW #\Tj,syc2xGgP‰]=d*lЫDU'-Nm6RNI''УҝonL;ry'^a61lAS}lA[nWʌ  @Lg J$rE-Hm OuFRԚ$`PDwVPQ6HP, ǀa ]P˦!\W-CF]M3<ǕéӌBHj~>Z;I>@C|;G;љ>:wf>Q`)=3lW0k:t Q \ Hؒaîd_A8\rvs2$_~= ύ`pGaDuG@:vo%L|.[RIi ~eN~boa MXCxN $ I_aqȁ$wm:d?VF~|IIvhg8,uφڿ#4}s"'f',nhv6=8mLji%Hlݬ;x@ޡFhPgΖ:^~|OP*P R@@4PPB%3PhC y R(ЪR#GY%"UiUP=H* T/%bij^Lxx/`vPIA~yZA[dR,D]Ž[F# 7~Ç=rWLUҩw+T`!NЗnb'pP' ADrD?iǶD?{!IN=<, !͋z "Ŋ=h~Xsn㻽ۗUeG='k; Jd1z;r=%n;xqƸ8BP>ߞΌqLWl ,J8QB{yQh a X$W43C" B69цݣ C2Ai|늖/Rj-$Ldo&PJ(d_ 8qkc&f<ePz.v'OҾqxm6pt㋝( c% x-#b@ՓغOjCE2~P X<$B\[;3DnWAաC*;NEHusR>o턤tA)WQ%r)u іQHEByb~lĖOꁡѶyi(GDA|먦d"ݩ7HN1C!E02|Jm: L0OgLɅZ?sO!@/8 #? ĄDJ/IXQZ@ھ 4 uO5X-zrvyމfN=lHEn{ըaB]߸Z$fefh ،4%ҕahMt')DI0-@CVnȡ׀1sG.Q_-W #eqm+*c`$r᣶:$ NC0gwf_=;,UA5*@1qJ*Jh4qoq_Q/C.c b;x\j @]C2@d'?56lqv!.c;bj;Sq_ ~T;7{zB`dC%^Mqx7bLVj:oݜ g7-%]`\w#(u<~q *۝OzO(ԻSKШiD#e|st:돫ll|a]u×NÓ;c,^kφ&οOOM`Dz)(ģ(6hr0B\wi=waP^b>yd|aQtZsUjPL:_. KºO${~ 3c*(06ҝ.LL>|=oުO1TW\ԼLJL]A{~3Fz?y;2#2Qۂ*Zp嗻Sxr5UCE D`F֮ܛ2σ-4 L>4}:VA(*Q)$nOaIJG\Jd)N2P;gL V\̯=etKO洳@U".0s.D [//ۺ:ۄHqYkXmPn(R%R܂/IS9P>PX'Fa_`>D6!u/E* 9s. P q Ⱦ^F#kx@h,r\^ߎmo c8 ]ͨ$:PG{$`}`[UZ2>]AqzrP!o1pr050eLC5} "ƚ:LPZSQo+ۭLt('l_[a]e)?~;o6#| $IG-I13mg0Xs+`H};q+h4)̾\ޮg`~|m[CpE5ur>v~]q`yl8?qrk"d6K|J1d5n.}tF1؛Q{ï>qҜ|BL(eP!5׆ƸۊxO*z'xظml$]J"C C\ben D-n ńܝ:;䱊74ͺ?IG]4dj[8t 7ii[eG|c!et|~3&DdNPF@ hn-ܣSp0b& HC亳Ps"_R(>d r&l32TLA HR]{4RD O=<O{ 9w0={=b~芅s% ^؍b;bW 5:_[g;Y `^Tt ~o:~` bD>dPqvle3Cl `D@Es_ÿ8Kth*H0` "϶j7MaUf{ nћ:Dt{rErhc6C&gpgDiu"PKX5 t۷~S߳hu\VWlh,~TGQ /xnTs/xGX\__o-$Oj `?QZbxD/ːQAo8ڂ$ eBG寁pD,]fs€@s~9HpKn|7)7&atŅM u$6cG.\嘱K E2kB 9Rq?_gVXkbwˮÖo'ٕ7FDD$4p猿ƶ-hcnfܱj+-{_OSINH!H vn ġnPGA) iU bI!l/gn֞Q\$&;,^/cs W]1n we"b$5΢*WSxÝݻ[:^5 fĄ++ޮp %mNQ`huBo rF*t~P=wS=N ӸDizgD}BfJDLA(ģ:/3Sgt.b\=q>}$)D8, s-Sؙѹns&ra0zE{6NLG&Y(;tu4G%ӽx 1Dq Qo{!uƹڃw_y_ "G Y> ZϰCC< Pʬ@DQCguq5[p4sVLf=ŗ &hz.Eەtnx0Bb7n[BY& m(Am A|+`Sȴ1+krU2ĈSD۲Fip9ر9ߛfXN2% Lg8NOZKP Īޓ]FbP ꐎ./8jC=i#G-[$ݧx l |}xM=L6}(*Η\XUVXR6, }.;]q~WaMI,ue 8jBF#F[2?%]Ĩ1alLb."8Uc!ë#PJ҈AP(,"