#!/usr/bin/env bash # # Copyright (C) 2011-2021 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=a4a83382737fdddc8743475ab3e0e574 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 vgOl͛w{E';_';o=a?)YD2$v]G?ϫYnCjZvwv6www|aV^f3FC#iVƐ;n2s"X/BS˥Y-V 5`!]a75^{{'  X?]LQA /Odcv ۧuw'ZXpؠ5nkAэvi&`21i06D# lu5\HC=Bom` mcu <рSCB5?a: X3 P;Cā1G#⸡ ?mgݾAL;74Dhq<Љ{zo 烑A;~ &OyArhS ڇYX Yaڣ0XTvO^[>¹ b Ҡ 9PPy%nX~Z:"/"Tb]T2Bzl2C7-׃3s6kؽVǴ ˞ZWj`df9Z{h@Fu4c R؂*ȅ)ٟrדï^:|l-fpnT%}m:,Y'8d̘"[w]BT)]{)+tނCϒ HsO3$5_cv(7<gk n]% xUbš#u2^is/M.&9-"0cns.,}E Xƶ~EggȞ$N0emI"U@Uh͑qyJecS0rpM >+xsYBw9靳5X\Y+HcVpl&[qC=ax:LF+?"$,o\81<^ F" }tpk8 P<[ahy-Ѕ%&X)$r@,j&ĎAOaYt3ÚN]~jhF->7ɏh' 8vF[Ɏ6~G87{`fZD _wbd ʏ+P@HYPYBʒ%% zx @&d@3 G| &n&A?v9?qZ}nN ح X97'K]vHY0A *h}І=klg:Kmb5> ĸ 0&<`e2ύW1r<3q(5# 7cX9fWmAf8 a",ZߗD\  "4S`Q\:x ,!huvKrȲIeL송 dk 8ÔRmCQo4EKy"TKRGSXnstRB 5|z{eA^]%[} Y(0ɾߥ $ O0CDRAiJ.)K  bPLbɣ gWwx"N|QpvK9t c65Q4Ϭ떠\rՍw,smٱwBz k*UlSpXU8,g|2t[ɀ`! Y~>8FnI)u6aw昶|dR@ؓRhkeTkb 9Txl\1?GRŒ|}.'3dN.}.e5*>HFybPG{vm/ )PLтYQ /m%UzE EydY@lGCgy;3?153K8+(hƭĻʫ"g%B-Lse=U }\ty4`3Z:(Z%=O/RJ:%;ҚUH,oQL^*zIĔDr§5B=d75%p4S\I\MT`}Z< "R"Zf!VV`)3 B,ZK2]aeR`I?9oO2Lb,NUϹĻ# 4szWW)7\Q_ظ_+忠rt8 PPKC9~}6֞<0x3ݕr]dW;X_W Sj[?lW{;_y+>ߏߏߏߏߏߏߏߏߏq7e_) E˺p gCQo[0.\US ڔ4̎bv㌋%7`og?*;o+nSթ%,Ĕ,lM=5䇙3&rӎ?+P?(=#D})EI9bնSr) f,Dk&IZ*YXK&Zb+&i) n1c,SN$P3/Z{} No,7'AP+eIv/= +u}QU?xpk>Uk 7k]g=2Qg"dSg"Y"MBZ LGͧIG:hh牂qy%ualm2^h-,K00^uɥ]EO$wDm^bda1]!|sҙ7׆\p" -ݢ֪Cl퇀cn<&|h+RB$BC@:$DlGpѨ Dzv0q<M:mbUٵK괪9Kk.*J8<]]/[A0,҄an[N/bԇ'klX`+j)#nQȟ!5gtzmy  "bO&G%mab_oJ%l|S-KcÝ_L. ODP ?g"q'A>FXF:WV°\t"gx=0=J?`Ll CX}x!$`y] $WeN{$_~ *+7I;IHFLC>@ԗá(]g%lHO4)\+~X3,U)j#6J}k{ٷ5g C H̔KwzI1Nh0|`@^_Rٸ"RYj}@2BMO \LVZ]8ds0ЙBFŲc1|y Q B _$! +I}Z;&taAZ#'xfds0k 1lcz!pe/qm-1}V+#bao;Eϵ«g\iY6U k9p\6L[wh 4N}2vk0AmYE<$Ah8hu@$o&䗃!/+}[Yp4fmb= 0A8|¥Ԑ'l 2ߕ]!7xz$MЀ_I&cSLc1o C$ G*L>b %~1W0,g0@+㓣ʑN?,v+,F=. JqiVZRNlR%bSk SoO M1I3L=4~/p,3Yʈt8'ҬHgVjB(ulO@]t3\P)v g$ˤCȫlHe3gd{J +{hwQ҃ Ǻ`?cjEJdY0_0jw=(/͚kn.eP »|- D-{LT.4l꧈ mVe-0]<'蓅 k*t F%؆x%zU,Y*TQЅ3; /~94¼911ϥ$CB(1@Q3؂v0T{p\5\8c crkè7ʧUgJ{ΐ/J0OWwm<7U2`6 |`j\iDz[znr_fyZ9MNÒtÕ^m_8CC QrZ-ۃT]I_DB{jd󆭼lߕ}Հ]NKrIY/W#NnFZkٕa*.~26papuK0!PM: jF-tCxy} 0S ELm&*S ̿wT>{e-‹W[Q@}(D.lIC\^ViJo=yKWUW?)6l\_k_3s{=>xt;dP^]H\:E,ⳳrZ=#]c&S|ZJ$|+o_p.;z.]!a+h( s93`fmH%Y!KS94j$&)Wýʋ}QKiH8:٫ln88 3%43xUkfr-_O^UTzi-:?:dFN6ҳ8neYeCdyaU,*amnFo¿KZCzG1O#v\|̪ӛְkU4wOTUJVU{he'XOѠ|^T54O}F8 Պ1,+^{\xK('l>7jM*w_dj"s~ճ$XZ1EeVLHK(ں 057Kal|C e: (vτ+g XЀ [^r)lr< m̧*ldX)`ߣRV||͚1{{Odxj٪ĹU:\&IʾeNYOW=8RGKJ4cB>=ی}碫$gςy';><%7$fJeSY@H,r6aon$6zE*HY^9qj5wwkЭ5xN '{gxtNG؟|6?*+Y5]'MgOJ{'=>n$#ݸzy+?S.1yjv?53a1:Kszx.S31EQ3 9N$w,p-w)C7Rf_("J.SʠvKAf%δ;Eh;F8*fMzu+IN=ŋŻOiBw=탾 cD X(BVY UÃ2܆_V$R'MOS,T"HeO<rTvQ2+f?sN2Sjn+jA! 1Nu @lFIr? Y/R^;a( =1PչgŧtwuQRL?q#+I㶭 )%WgSׅ ][m+wPgΎ774wk7z)-esCT'Dq z߬CYڛRpĨbzEp %;!@Wt\v6:?+i Qx|`gwq$RNa)Jlg O f &7;!Atj%jB?J O~ &<>x@z|^1W*ǯˇln R8:1GQ2)S|@ũG1p Qtz+7 "# i8/<{; 8m;?xۢ+bxلą6XJFlsᜇAyssӪ\nn($ ,_0c\%b{M9H.&称I'^]ixf@dxeף `\v%TjwBqаŋW_) jmszXzVRk\ Y97V=zZ=7ͻQ"?7?*ן?c䦹zX{ϭ,wNǥH '&iP>l(<9=#3&4ç8}P#Wo K߉j0a:ivx$/ҩWSӿ@'1;TW)O"&`!yC ƸvO/5-}d2ԵE"unzj 2Z i xS-g>ֿp)糖0hA+)%hΦe=ix9BQ\9pr1ioJ\45F\R8͹\<&cCS5n@P 8pBn5of Z֞4XWh8UoC[1vB+q0ښB6^zhucpl[.:Cc1s8!)~\R"𳶶C7 hN,(J=V6o2K\ %A V0vHDm_h>k( R^@3N(G, 9'iSGzƽSq' P+#籊$QT-d) $<0 h&ys,!Z F !sg2ۧ &Ë't/0DNW#dT#g 7<3ϰ>3XW!r!Tl#%M [k,nUT/D=]ayYAػ\&H/NW_B hYqP<6\,SoQqG# =m"[)l .GAv1ЭnPbu?H{򎭆tѶFwpӸYl3!P[ mUx4֕}  D"6c8Pnty:3XܓI,Gg4w.<.@)0T0Nn$ P<ȵP#Χux')rbfj5UjD=TSL`m<ӌVjj)MD5dtiGL)qE-"PYMl)|FF녉`NJg]"qq2vʻ Ub0B!Qw*k}^m C{x:.; v`31spz<~I *@ 3$&S K 1 >&tk#`H= Ypyt 3ӜuO4IX@:[؆ı X2ꔯU;蘬 _fsƮ2XM[tᖁ,ݘq-6vxmƸh1K,#A.hw+AF7l=.'1I]na02E2Ն|LqQᅫ)_{|sᅦ{n=[}ϭV6 /p6V $0O$l1;,dzSް Lu%ܭV0g3MN̨/.9|j=-I)-TJҋEI}J%oxM/jJ?['<4ؾb^!ԚU*psKx/rw)iw)P$,yqM'xW#(A)Ak1X,4 hY&Y[v{~y&SPygֽoUgbdl$8(ă"ylc {P/,B“J&YŻlX\v8m+6kn{e$^hSu9<; 'M_a=hKyLqI+aх26<* = HIN׈)MnD [m8W֓,tne2ݮN[yֈx6Quaܡ룲X6cN>ͬs^QA!؇R P2]taQ+\8QJ& ;EmDr@I4HŋkDڂ=nQŐ XV;Q $=$Z)Ikw|M"]3cH>Ż(U,r IP\RyL!Ma3D[YSL9‹ gGR2? 5d 5lv`%t.B1P>RhN8| \pl*0G TSDD_hspOt)H!l 1ޱU]qU)|6M3 ~o0Z+1g4RMFG Ս&$pxىA.M<2<"j8 5FΦ܂$G:[9l~9y!LmM4paO&4DMՊRpjf0}-] f8e-pȰ$6`_u[>vC&NQ dqtd"&r`"/̙cj.ڵ$]$馼C7}IEúH.X~4&NSs*Yslm J^4;cfNxeg(9V,ĵ_־i2sg1T؎ث 9ؑפ1%cHWZC]zOKrfI= e gEC/"ş'6}HC{,$EA 8ѭ~.LX%f}Z(Daے;F1/ǪAL4=|w![l)ٌqգĢ,[!eVIT 6\1sJ`CĞ)<&q̨#^3%(i;/Ol:Ht)as\kq5҇DC4ZN<m6w?Y>g'RIx08`[qЂ&d pRyYsA⢞VZ7jFhaܶ \6B1N&0 jI~j]N}|/㹀2:\"<]zR=,.ٍC-f|^t0pS ,jF!~s%UR(,1Wmg{,Y`ٌ_ 2~e^9(F = ⲙ5'_V͍j]W۔z Sl<=dXeBKqЧ_.6H"xBZvNPVh+TݫiQxZ?#{V%k)+Xys†I>z{b~$3KA/Z E޹Bwf(4W>(|cZOv!cIʹ`Km,=c )E’Y_B3diȚ'֫)`P FdRHI 2:< >$(Yp9`ɀGXk=,ծ}Z̲Zwېу2ao[d&ŲGG+1}JQ ucެL@ӝH":3jc솨St\o2ZB%Քb k[*1a44uL&TOٰޡ2MBm}+2E<(Gc\?,  ,}I|fWy:ƀꢥZNmٻ{-ai9UPuv:DVP( OU3$9^( aK%۫'Hj=^H$aPeA?FT'w, b/LvnMMd۰>ʹ "t52䖉v*pC;t+yi7)jŢH5p*m,fO]&"14G!.aV;cZ/0X{z-6E ѐG. ¥ϵi'iZ"D%Px6IPo2;) h\ʽiV=[ic _Q$r 5z kg>(<>t-*Be3H[Abܖ *ġBvCT6^ kԌmߨ6U&J +t麶cac|v9)"_6sZ,TN$D-}?i4$vwsroߜT_y#-eQkR&q0P)rSuEAG^r0 _,`$1@+"τC2a00JXlf[V\}D Y mnh3m :Ž@=%5LcU|7ٌlP(J;%s<̋umI%뉗a/5/ZKQW' Ka2[ xMØS [,hm{AТx G$9ДŹ$#_NĪ*LZ9i 5{~..TD_^:E QgLWU^\u kK1 l!mN&Xk 󪼻Sׁ#9/W~=V4Sm}QlM+(G3E2Y6Ƅ!JѼNHu Ι TC#&2$FG)ܫK Ix8VojT +WX)ћ0,. Dd7 poAhϖ6iyE4\F&ts܄Ƕ O+գ3"G7DS_ JM|RYujxW7 !9WZOT%B^XVU\n*e& ҄B.l,|RM}_y\)SurvVҔ !>JQ_װV m{y|V[D_Y[-bEà6mJ^$5.Yr ٟ!OLU=x07m!"JmRFVL)lES0ctut؁JOIp8L}XkoHB -<[WX}Ng =Wdƞ^9&X&r{Q;x%\nof!jPZd}ufsP抈B^VI+ ]F6gd;GX2沙 #nԢchnSݰ3/}aGbl]z(έY׫r4Zd }p% P vg^L4v/[Y([H1~&) yVyYN(5 0|EP%Hm8' g*tL"Wїk؋⋪m6b{NJznj hBv [#d)@ c&+`֠j w), is4|K -VVI#+)>Okw^(4^~ܜ~V@DU|]!ÝI5 Z+VKpUjJ-Hhn!>+-%Ͳg5~ piO.mZ-X6Bji^hX5D Dwd ![|Ć`D;ݙHGCR 񐴶4+v L_=^2rDg_zމ>psC,ar\nDwXf]f74D~AmgeJJᩄ*uhX6'4<)ňHEPMv\"UԝQA^jh D=־ 0ތ^sv J?in&.iJLcbm;2 eo"Xv.=a" EyABvc 9ʙNZϚBSSzɻzYv44f`):bHMeN4Q\qi\DBZu31*KiA e!Ѱ'FmPl4W\m k Cy]L2+sM\?JQWeWL5YavžLU{2b *ZXWN G*OdhgvY5q!"3}&(6N'3000000000`Ɨ˰lBC:/ю/|1  P7SAhʗh S%훕t0+ #e (LwtKc +Y5<(p+/^U~|P2Rse07~BQ7 %Be /]O HZe5-6t^L`Qo5?9:{[/q2)M+f*pU+!tT>%A0Χw R|&}}[ =XTa=ʱ(kB+̓eThjӖ2K@S< m}&uOI-^i(,4dbm`mY65@} uJXdIP2Vٟ&=-cv;ҸZ(&s`<{ZJBH^O.0p}jEX٩ m$V'tERUɫPZh+[;LT\k6,'5v0FhSO~Ն$#} 1Y0Q X #kOO>s,Hj)j(Pj떡`BZ*촓Qxz#Vo3o Z pqXއրǾ·F&7PnFAjl[l lmo*<{CZ8%F")Ԃ~L:P໪hTp(:Csìn4gpQ3׉#a( <<|P&b@W&lV͏߂*_"LU:q2"7{>|9\aV`6SY,V0S|Դb1FጥBY m =ʴR1bidھĜriPi1Dp.e\_/j?!pdld{o:2 w؎ Q9nc'Gs]:#~}%Z\}X oy &yD,75nzL)QS`+9 Pf\F[Mpۚe͖$)}ʚ mu)! C L1(Dbb_~J[DSl Ʊ~ϼjȾpqM8[d7:'Q]lxP<Չ0|yIڏ̤f\hȺ|WRhY@6p7>c@b{U>t y6PQM@[B$-sbm͹on7s7:ܻlGUN-xV'BC=*`7jaU=Y~nϰP)ޮSsˠ옂\"ˌ7% <~=!g-=>Ӓvxa~9k˜\߫<VF0 Ahߠy^ [Yéԑĵzft/S"Po?D, ^opT?tqwq'])ʦL3iǛRʵtRNq_EwNjѕRJ1\e{ߌMbuOmBf]ɜȟQ' ђtNK|rx|x6Q0[_=y <,3,3{0a6zp $Z6wC[TDLptn*m Qj/-psaA4>KD Pga5>"%{OT*͑1)eS܊`m2nBns^R0({}dI؅CHG>'m=ud4 o(!Ll@$m. INE&&`CZ ,:~B_!ߎxb# !0`8- i^c$  &HPc8'xy:e玽膚ɉ}SF[>z~&8eH'*1gK& f & *E|I KCP'-5aH]1.6EMqׇv!ʲTr ,ZX˯n{ { s9=AW¤wa3?GrxrxH s95YՃ#!0]7&,Gg_D2&=+/'$Ңlsxx Б1TN΃UJs$ ø2 hXи$/1y^\xDBzJفoK1up5#v/$CP:xȦbl=;=ԎdB M?O3^ڡr %Ov_,P=0GLGO)*P> b2d< k;<>)}5= :+2?(W_c[%q3iɘ^swg)OO<O6-A`p$'M6P-B#ؠvm,6!mm1?uhH߆Ͳ wJu@N0'Aз̀NN?oSRט6{3_pxp/拋}x1Ϥi''cqٵL#y`ǟM_Sݶ]I*d帟f^ZEϩ&% yZW|/pu­^h:gĪg8VPܤ2ޢ)f=wLh|q!xѾ(n9VYٞ "e9tEZ0fME'3qg9WvRL%=J˿\=Uˎ]s15ؖ-+q[ =EH<RW+!?Bޗĝxoe2!`bVww^>:rXC,s,rvG<:+Ùw8ٮJ{vB'h-pz?)u%\ʇ %[yM&>܃نwm|{Y5SRG`ԯBy`;hlw!)Teχ1gOǮ{|?sןg3{̽~^?1P*HWCس>^~/4wqn!4ȓ\l]?LIj-x_ªV- MH~c]U5~N!v*SqՖUH  &!(U!=+J c'X'Ce{[[a|>*AGrdNh?N?tJ -d ID(mE}Z4tNP݌ˊh!Ȟ SFBBԤṷ[9 V+峊ly[x3`GҢ<|.V63wRi ɷnIf E5 rњߞ"߁UcމkD k'fka54J` &ᰡi*U ;އBQP7 D+@2Ft< [0nݜ`SD=٪g4os@ڐ`{4Z 2W/lͮ2P07rhѿrj)ʤjSZ*P{9jV <:Y& ,xQ|d5y8dlSe .;%`ktJyrLxuz' fvwAwvT<)?ZI B[]^WRRn#-t-q'"44(B64a~18 'MAS͞F8e>arWG&>=ԙO/L:=Yƾ^v!ؒ]p-W[{#Kgml\[" -Gd}L%Qg:w9WA26Aւ|f:W ~8sGA(U҅-! ۧ66h!ˣ@M{A F8^L>Mc^bu'Ond&ruVQ 61 O/ nG9~+c(D! jp+Cmne]L3ق.J\2Go; 5&B9 a߲Eq+!5\.ڛ}t@g9r$Cr9B"wK N Oxq$v69۪T il.GM^|nҋ>)C=BanZ+kҽTH)H" \iC ת?rζ԰.Z%r9;{410KA됼i>ъ 8K5Bv^*t]2䗞U]G=//pcK@U0*U/%U=nspt񩛖01%Y)Mξf4`qR`|\JdBKJm/EXi(*hmHtukD)m6=3;J{p材e ÿ3pݞD%Γ|'lmD^afF*>fM{@+22Nx"u3%;Gz VR'N 5 ݒi[SBBc$k4ϴcT):aǦɻA#+L_g.l )>D*6XujbKqMɕhCQHE'mP}!PgiDp}ľAz7j?&FFaO4YhUW2"4A'<2)J_x`-Bm9h(ʘ'}N1Nkfx!#>!!Om )Dzݳ+35䓎mAT+Kp #d[aWU By\*B^raϚ#$lxw@ ;Sd ,LD d{ʵZ}5`DNH߮niKEFᷱpI"6Dza@#fDxDO|wf\4ip=ʲdL??֢ Sk]~@ɥ\Jzf4տަNV{czɡc|l^{ªT?=3_l%5 OH)~VĊEHK,y*.a'yAA5Dv+eW[)?#j"ߢkŵ$c çE9֬ 2 mmCHVk }vFqىDFPQk;/7!jj*hR(< V]+` j4j~hHD!U<n^f-Aw`z K?DB|67x x qPXȡ11jqp ꘂ3_sk5"Va(|t3D/هrYamظJ:i To/n4dk{ӪqDDOyag0X>EIE+r(”հAg5 G, GCLő%*/TPP(|Sn'&13 53ـ^ߒS4=d {VGl#.@fg_&Ik| ()& EުdkJj,}KYݯj$;X)m;K!5mi[6mZنi{Ndw;*>u'J6T q5K3$t~-sYDŽag, #9=۪1Stv+Xx>u\^{,䴙 {Z7NN‰:(ޞAm!j/.'Ni~ϸɯ׾u]~(nx:b{eoz.)oc0yUUgZ ۵<9Kέ Y~>qcoYjyj[zA_efjf%fqV*zA (k 8^'q χ|՝ج{Pv>]!wWu~}[Pk=z·_|x/Z·ĉs*·|xO ·|xO͇_|xO͇|x/͇|x?MX YG`% ܭf{HK|ᇵ|Vl?|oY&3 ]8gEu¯.lϫ¾q! k`-a[ 3(='ȗ޸@-fOv@6nPi2.g+~Yhr>|w;nڣ`}!X̴#Xl Vz@dhj;Op\iVz m܏{g,ԆTNó'?}܇Ũ;8hVNRQa!jgq|ԣbl!"KtC{O:v,۾4aa%wa5x{!9X@P0'wXמm `CB/4ek[rDA ;O';erC5*՝,LB>/pl ̔9 6%ݰf !k{bzcp1!O: 4{ae-M^zb@OE`X$8ケ|p䀎g!lpD^?cj;l?*,gJaU 븏~$!P9ei>l㞾&ϞUN^fa~N8Gl3ȵ灱0Ld:Yœ ۝蒸aq^XGʆLsH {RuN!OBrv{@V|>'ԢۄDdASր9ܱ<.Td`L};%Tqزӳ70KfhM4Q hcw{͌4LH8\ʐJ$ϋ&=u)y@G-肸}D@|rxU[-8b=v2ٜ lvk`v[`_y,c¾e w 9 5b9CpIn?]~~𾷐b?%ؙnVq cOf@m;^I>ӼZkgcf>~0