#!/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=4a3035b829b7aa449e6417eebfa65e63 # 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 BBaf>wXmZ8$8lA׌,BSyę4 `V8k db;e @X>DKsZP`!0 `\q?4cPiz\}Z܋%>hDn e!>, z@P4$`!6M ǧ b,SM"2-FC-4>y^ Qu{$%gS"HTוF iWGXV`j?p$) |5ɀ}U ޸+/*P@=JVPTفdpNQngrOV?eFM*wƽ ǣ@2וN-_If%{%y44BDVətzNX#"OU$*GJ.A&p}X۾j_'%GPg*cU"AI\F厤@aB+mm69 \IOh4_e_t6 210i0QLr})A%$FQ( * H*|!;ϵHeP ̦SYnjqTP:Oq}/#8"fD׹ ϖBh|3\k{ 1s>8Ԛ`t> Oq솘SCOhF%+&9čbb!"L͓@ə[Iz$ |L<u>w^!0;>:ڔ/G4^mRw_MT @b ʆ\srt/u2N= 2"WpVȃb@J`r @0 ƎyĢ+ N)LiAR;)Sxp3s26u)SF"y@< ƜY!@aHx=16uAZ"==ijF$;y`#Α %PQb:MT+ΒbA t5D4ײzOX4JrTb90]W G3KX榕` PR2erMAiI TkloݽsY6_ 1# g+qns,9;8:nU[pM=(L˾9([U"yK HJd 52`dN3 HBJ9@r!Y+l~Gj9@}r૞`4_1)ѳ̀yf@UsJ:^6穛| hrFu=G̗E{BGMLYԻ%e:yۃɁ6$7Ûo`-~ pp5$ŗr)Ѵ6, Ӕڥ_B C{Dk8݋0\:=5Yy]ć*GyW^ǽmEWdjAʛN7WY$)BpۄX+n[#y%/2Zg0z5'Ih3 .+{uŸ߆Z=+eFUݓw˶rY-bT ql*Ty xj@-j@= m58/ČpZ,B䆠IPAtihK(,Bi;R?-XL5[*ng8@~tyZXj@tF m:g΄J2hmup%w o!UKr p<++AI`jK!軼)>7$)Js͊_`BBo>"obMmj0uկP A  Tvڜ7oHKv,Q\U`B.!g:BƜ.#7_%4e*&3gc@],o | )dĔ1vdI80/$M(u:!\D,dWAo=v&l@U{*48O/<i-4M?LcxPM ~e,&]RުN+* (hęVW:_rդHE TIM)cqDnD5|3D]Qӌ[k幀`ƝжЂ"nf',ݼ4f"Li)٤yNtf1,e=}b!;3S)5m4m4V/ u—Kp`r'M%~x}[&[tvbGWQWcw!ոr:uWöc7R>'cߚ[l?? P2 a:-XofXlC=m}!bjdNr7i۲!2ߴE &h'TL?Y&+Ls }zyMڍ0p!ii$ -㋖MBDRJ,ϥRݢmwe_ue|[)̔YYB#}e~C=/ w ;* nѰ0$yIbq8ض5uC`Sx_j[_۝۝۝۝۝۝۝۝۝۝;,fKSer7vVP^N_‗HRP;g5?pZKxZ[zc2F&d@qO'MZUf;)W 0hK>cjL R f LLUNUOL aGB0؋ySk[z![-qE3KA3 q4'O0{v1>a'@*!]'ikVYq@^̱'!Խsx(4a%tz򦙗ک6dŦY sTm|'lORqx*,k,C]w3OŶϟ ˟D]J=+52{Z18VtmLYwǎ}Jyϫa )$-ƝZk<':}jUt㏻޷yO#!!$Ti!IE~=aB2I9g (,4H<}?[::܈%K!uj90^94A"G+zЛfU  ~: X c*:h"ۼvSOD5+3zjK椙G1q|IQ+?5կ'"bI"L7yq!rs#kjjZچ)CJIxnf_:Yri?oz^F[Yxtk`# u]Ұﰧzb[3gHjvp `53xAqA^8p3#>} {19ޠC{3v}׸8X6]t|:)夞;y'@~Att=K?< #( q'?=0X(Q`O{ރE37qL R`zoLO?ٟ=Tދxj͔7&$v{ ;W%,~U״ LLICHΨ+>N_A˸&)ȔM P _̛*fJ6Z6hRaf K~goi%ȲriӼ_&[:r8g)owօc.RdxT+b%AGHΆ= qr`<fO_v?ng{o{_Ƒ~6NA,q3d`;ԀbmbL<;[]6v2{'ZNU:uZAPڹg {T{ҭVk8(˾5-%d*jmPʓW;a(!QeO1,H9ڭG϶Wz\y*Z-M$[*@C {4tvre2%a [ج 2k4,^~B|3nK//^p/A`+{Q*u:J+vc<QY#iw ( _ҞNQ‡P`ܦɛmٗ 6V] e ei?[j.0$ twEN잌Leg\~P-<륾KthޟRm9(Jo`(j2b,,*vVڬU'$`(p@9T;|PZ*k;<ƒm-%MdF(eF[BmJ({UʦT?d-=cL$].GxlمA8{dQ tKE &pCͅt}56A# fm2HwD,S&:+ji .Q#& #cyHcA56iL:|* '2GR_YQT"Řt,i*Krnv"ʨP|Kӂ10 $ {']4GmcG7DS '73rghF`_ ? y佋 R|q!7T}tUã:"V5 ;=oJ 5_k͠f̡]U7;hs /pO1L|MkZ|?5`aiTCX~`o(rZw}MmrDd./f(3U@/{g$nl7nAa~iyZn[yBԚr _s(X@=Ƣof&)ԃWrt* b/;4lbsNŶWS6XQ@6n]fNUugvǖ=&G0s--;Rb'Z?c>OUa#%]H P)y/̀/)h[5{Pi9n۲x}I~?GWsx'wO9/Ŝ`N:zBk6 =E,*C Rq^HL@[kf`i3KxnxArbKy09QaZ|6L;&)KԪH8D9=X"rD}.)T ۀ|%&B=%)jQE#EJ?JHڍޫܰH)}3՜ӼRSrƷGͳz1ZYn'pjK"KUm3 a>z$V.ٴXX Rgɏ{/BT@+N9 :GP~Fs— BV2r)ȑDDIam؞Ńxo혢2+}jpV)rj #4(D Qo@Kܪ~saBhQ+icupÀwT'550( БK. ԝ8NsfP1-oh*bd$sާږ 8\ u?{nuN:siA|x$d-jBKb=p/HRJ3ULq7c&7Vd; MdbȿkIk[ AZn9.-䗓 08)>;U'QF^.b; wx;}UfLZ1,ϢQ/MaR( K1T.+Ӽylծ6aBGuXΈ64l$cE 9Z`%:;s ,4^Er͂x̽C{oᆽ }Ovtk#]as,n%աU*)%\U~ 0(c M *1\02KUe>\$+VM5smg&$$nAfṎK1p8VT_$<#_NdWm(eK}ql]^;b]C3I]Mp:PFRc|Hai)i.IƐe^5ثG[|@Di m|覺$gش5cLu3d}hG$,Ӽe}ITzr5-8c-FYMT7i"SʥK6M욮 %Ϟ=O\'ǖc+tiN> dِp/Aφqey C$\(LO|dڔ/0jN*۶LU:&K˴Z~e߲>j}k:~o)yT[2RPҘIѲzL*V/V()]-es7ERQ52϶,(4Y#T5L4V`!WU&^Pv}^D$4~۾Q8wqTQ77;KC "g$xrZ#Z52uV't{P*dŽ(E~^8}{q|~Ii{zx9EeqZExo: c~ٵOӑO):r9#9|zdxSvM[TD9lN&EYk ڪ|;#p8L8+^syiGu6\Ffk5ɺhi6*c+._0h(5{pH-~$ ihw~@sK ǣkiBWgPc/zU_gFxf/~`LsCKW"``< o(e5Tp*c[":iP V8"bGLsPvw j1±Zo%7ˋEPӣ06nCv֬}9SmmrYJ>Nl߳舄܅r. Fu.ʮoMvq5%.c &w-Sf%Lđi]J탌#b^;ֈV1^{|j}Gs4SPSSޱaD .]6-aKc;91V-YFmDUl;L^hL3YɕcRlq;68lGyYe9Ֆ O52/>{O\ %2rD{<5C*Qg.T+,3+s⿩ⶕ/{+!11EȊTBQ:,ZFjA^h o! OwoS4=㰠vkf2gĴ֦a"R >lƃkA "0lX^$G?X@r*x'>b1?Uvk] - ;&ҐA8RuiGBzu3T1jOiA ;強"~}GbO>VסtUlj(6陝QVDk'J%WW@W] Y2a~OLZtv5jlFZ-}+J #S,91ů'Ha $(pLY300000000E?La{JVI4'~y vvO6 q `'!;?>|Ehu%/T7~A`]Y=}6Rq(ot)0j n *L0ΔOpT܂ ģӋeօ _PbӠ-[ǔlĂ~ ~Η 8ȹZHj;J w MhQH\zMI[S ڢ  tٍQB6Lzّ-U2DZ0W>8/t@IJp»uʷD|v]P##Aj8tw[ѿ+ҪZ8V#qH ?ډώv6UqGB*]sJg\m rkT9x?lu'-ﻙ|&;ˏTcq>\.=\tبٽxyr60~8O`R`1zf|lU<55ѵ `_a []%ST`p3^`O7>tK#R/H09BOu-ϔSPЧEr336N -~wb7 LM5TCA`sAR]8y#Ro2_ h`f@>l1e`PAv:,'sg Dltӟ[.͒ cߍ|S(FTt,H,ZP†|cǴ5Tq1a2J dʤF=tYIϭv>F,j܋T|ӽ_ϕQsb G]:7 rN _<ޤ IKRkrn3@,d'xaR:I0fNg;}a1Hŏ4\xzރ|ja=DcEXl0:p3N6yKGİ-}@6h=%\r}}Jd2]` BU*^0 tP<ˢ}Mˈ;U*S 990RzHt͢/1R; ~NQ.N"7銇Kʑ@U ga9@yZRp?=3&KK'ض;w6.|!-H|IT^D0dLԃ2=8H;=,#4{2>O &K)(#Z8ڝ*hys#;9NtȶgAa ep;M]HQ8SCHXQ(%2Uh~ddy? v1jCqǶ?vkt ݳh=>5ÍɅ- 6s]^br)Wq%PYv62pC֪mKrJ@.Yd䯲c^Tx5wʞ kfQE/#v!,2$à|6V7g؎mAohȱoB|#^i;V ]l[q\?e:^VϿO"^wYǚ{g!B@n"\n%^dz°6~#mG`'\\Se"}d&C'" ʸ_gFEk&75 YdtqS5WCZjZ=GڻVn%ɐCE˗ke:XO|`,Eٟ n#sQjY%p&ŢWYk⥭WpM/xdN6cwgyN ԷJX$sxSEȏ#GB2h f۸¥8XRR11^"]\s.㦹Jk` o<gɲ2UOv4URa!X-py?5KFVb%/rD2y.C }tCoy7-Ua˔:i6L)!qYc>;k_=gm}ѺYf?Y,g3|O:Nǃtxͫ$z:?k!=〦0ei XnXf{wڲھQ}S,آNn.o}K6u|5-L!>w.e3y61-\pGr,V4f_@-;Vvlhܽzdmː76h~^ ^5MLK-&9c阘s˭w8O >M L*4΋x@Q <$@\W U^ ͦ3е_#ڈpé9!M7OaΨ_D)J_2&F&)+#=Fl:mMŬӂy>+3"0'7}а抟BTk|g^& Pr]u" 3C4h-l&cTT -a@d:iWll}HT|#vZ>2fh b qM(UhOnCt'ɼF޸&;IQc ;ۓz*l  ͽߎWfD|a9y :`^j 6UoQ߸gOWyQ!ĸ9Nlx#{!!-!;i`۠_R)äC;Qrg,_ժD@}:B^vh^9]\<YRo >O;i3K_nNqti9L`=Wާ]5 ]z%ٴD|6u-w IP4’?bV-Dq(l]٣N> ;>c{:iϐUI捬ޠa„ ˃OYőZ0Bۻ.=Z"rիmBvs_^F;1ɺm!<D] @5 6Wr/Y-HVȊ< G}P4I[RndœM(-|񔷓a= ^dj3eFR2 `3yz!pzeQ7D]~Y^2Dg-H`l=]u9˭q HnruSkd /}$EGS\{l+l-ՠU)MzqeJG6:TWWpXl"sX+- jawb5(qkт:^oԏs(9&*Gor&ve}0beVPW+[xBu]SY";6-qZh_Oই-VLuoaR-Kaxl/ϗQ'?^{?g38Xj0FIj41a^w{7^SM=yOwNhCEs|P`]9~GskwQuxpzm?\_Է❳}]DLh_{J VUz#]\;8}_Y]T_P{R3u(yb.u=psF彈*?y=֪&ã G z*O~k[vdjxhəLj$}s Ϸ_F;Xoẍ́.Ԓz`cꖶ}p7֧NΒEN .Pdݟv⃽ãl/r-T) yD`N㊵;I I__62{G | \l>Y>Xl3G< #꾗1J-6DQ hV_s CE)ɤC*p]O+1 8~W>qed}tړ'IŀBoco>lޮ5?\?|-xU4]|Xy?CO \ UA`G6iOQ?b >:>%=EoOJzmYr=:oSo@cQ#]Q͕J*Ǝ&=jP2yf $p>{+7+гV K(*B::a,/=8 w.sCTj?tFa F ۋ A YI'VVVx`V  9,FsL5rGZnRKP!kCL'N:+ryw= LYNf,G 4M垗O!s*Fc LrQBeW}&n:x~Uᤎ{p+LjApfG|D:xXֹq9}xׇϏ^mxqR*C̐Ռ:ƫWʇY`ح[ƻ&%ȉCn~'/.QHz]]U ._hH:2qFaTgWju>W >X&cf`C8J{T62h'Ȥ Q"&^|OhsJr eF1siAzTʎ t[ӿi\]*]$UZ؂?%"lߵi+}\ D*dDd7p7:y0Eʓ"ug4 Cy(]$2``u{u H%`CK{* hSxWs9YTlq?) j#7YIh(n`x "qA+uzkpUK4ܑbj>p4{)SJ([=zngd]XLʹD_ze9(Þj;)@Nf:%;*{/8s<ۭ=OKX47?~e Wv@B_䷏ wuk]*.5AirDI} B7ly+ _IET( K&TKZC-5 >&tH0d"H8Js  3˜mOkFuYvm[3ŬxWP+9댖-!@n~|@Ssbqwcմ*b :`n f{IVUv-'S$ß6n>^}~dkg3{=g_ ]A 'psQ;LӔ2P_q KZEb"IJ5)̨֤v*}[M`?(%p!"ns*{cUި7J:F+.GΫYDJpIzmn ]F;(>Nx4|g'Y u)mJ_'"r #Fm }7+Q ^ki!t<᳊NS psX"5Eӭ(Tm{2>'/IkeF*5T6ڇ)dV0GfBR)yk7Mvy2ҐfV=[l( ^@6_ k()l /oxjҝn6bӗՀ5ů;ݦOv7yA4i>? 0 )cUM+/螦u`yGpEv!maά&AQ[u2es}*1*>{'K[L5+LaSNxH.HTM\LCN 2+dnX,O8MEg/vX[ "r,(5NsO8y/w/ނ-:T1?ޙLF[RDoŽb[TIJ?օ5V==V=9u8+Mqduf@Uʼsl Ѵ'uYL9+I&݃ @-o=;Ѵ[p]f!6- |*BO3䙳[ :SWG*j (-Y*]1fPf@uwmW?tԒd/N~OĩL-w7X#y{KN@]}L節It7ʽ Z2K{^j-ɳr)]9Dy5MDjJv|ydH=f2 ;>_kɏ&Ve~__cqif#MࡤT``U{U<حygDq=\[]YDswbىN`[Ɖl[uAg}.^I b"r=D~/0z1mnuDT$qj ><1D:"{+!i7D職dv++桤[~1y~ 3o-1r97]5lTu=%ᐶ9]!W6~h'e] ;ȿf}uDހjGE5AB:ih}\m08ز~2Z(Џ$!RxRf?VvUmu6J'ygaՑʠuLm>V*ndfbCǿm.v޵&3%⓮[ JV5r0CSp+.Zea|+#RD^ R^; ͓"c@R4Y u+p<5,+q€fD/ QOK3ͱ<.)Ms)+j(o ? K|Q_Lō@BǔAb fk\ifO=ʹH >}DmEkۛe]܀~6ܲd JpνM4{@]%{75f:fo笮0FlORmWs3tFIMLp 0WuwYj(EzN+? ٓgGV~"CG,/+ڧz"ybZāI;.1+7rj7+0./nZL"7c. o^5 j4WsۊwoQMIqyeql);I93Hd-|߸qwT' tkR%l(aa+v4ꢗ-SDIsYzA}A#.v8K NWܪ-=wfc슭rvƍQGE$™tĉw T,L$LGk1:$0og[#~XmO , rn3w OR4sɜ>ES_s*8ݏ=NG&|Z(a?I,rVf`D}cvM^a[;n4H%)M+gM".&n0\U$)ahZpLJˌBu0Td9.AFIޣ1=Qn@8#.yQ(B;`j9W ($=(,QlhtbKpRD:Wgtؘڇ:LqB ʻB@Gu-:^>ǝ() }NF-z^`^;ɀP"%zBk?o$OwfxF2v*_h,b"DW-rv1UmJz9Ձ33u_*aNX2Ž%bX)MnX)⩁r0a־۫6P_L֩hdL~qbL.+Xͭ~z}rvir>tx~e>Xxt@n8.buNꄐ&<`&?+ΠB7.H!d4`^@pJ"iؒcXnpGmr\s61#;.0ÝǗJ/60j,e}O>o]Yŗbԧ[ȥ6Y ȠGNnmXp`2|ժkK}mlb3=`*!H,5,TܿV_ƻGoOYDWAb2Uoz^g-mRݲ!1Ӻ*1u|AG2#j'ѻ++5^ܟ:1]\(^]{?z8?߳Y_#{=E}ϢgQ߳?!{٤b_oۧtSCЏ:8.9懡jJV ^az}MR.d4&{5J=` Y0Zt{ɩr-X%Zd9ThI9&N_wϩ68)s*lܦB+{NuMx_E 9e}Y nv/RƧ{/c?wJ` _*_mSå#7|(;_b P?x/ 搒J{x3՜cI}@Z_u)f;>݇G;;kR;?~FN$ŪK.qJg'?׏v~u_}v~XBgx'7WPvXx$CSrb|& {ȃj0M͒0"R,EU{|o>s5]>.2qv̒q$VE[ /VCòHCF(F 0h#ر jdآlp0T0zΩfO3!ROu!`(YGMi d5Pd>U*晠8-=Sٟ-ɧ6 =eʨd#밟(B@AAl9so!8;i.`}mbe%Wְh5~WNrnsCF`i΢0iY W'')MZAݓ?g#GlB/;מAKx^ ^ yAXM1xk>#g2K. Z6Ġ0c r ]PBw&j% gLr%^Cw+C`cB퐸0I Πq:eh,JBS@TkQdȦc4l bed+h@.PWM rxxsf\>& $"騌p{qP2l;P[p$4=%f&Qxiä喉W|"w" cxCL34 jHcYFj1E%$rUFwox;rV޵G(9\ÒBZ`O[ǽ5Ց?NC\kԂk?[WKa [ZuaWVn3U{OD~zL0',ξAAmPH5=ަU5TXYDaD< ~+XkD dxRʲmo}|4Ej e=N9 Q:+gn }θbI=ѩmTJ<ɚ=hMAjuc3#cG0] ˥ƅe-w5|e!D+ |GXB %dKE (O40FxF(w#tvрhr64hf'A'Q m>tp+ius#"F_S%)V B\{QgCJ XaI%kRgErrhieCu_/ŀщe2QC]2z )J+0tQua`X"-|B/A.уg^ecĐ]֢p49ZTįSKh\ى[Ȇ.J}`pKm2V@*(HVM}L{|iTߘ,ICh? . 6Tc$gAsK >a!`(jȂyU$-DjEk̀qޝ4rCt) ǡ#[Y5 u]BհI{TK 㩓&Q +Vr8EVe/ݹ El|Dy Mg)^:Q<xlo_{˓ߏ{py}ϼg^3{] ;˝TpnmPJo!,o'Ոн'3yЉ"O -r]v?J-A%@Po]8C YFՄ`jH,]$!ШmF?j$3 wU6S4^*5UOhEz\ r\A>u^F#`V)>."$"u%]?5HB! _e}5%_o=L`6j3Vn̝)CgVE)HaGu*huhp:$"ä]C!Lk0'ت;a ,ÉeXQ7g#ʵ0LrߟO,omG׽A d&޳ٵp>b[?" dWi}d@3bl* ^QrVEBIUf(`fO0VW*ԥ:n䅗-JX&̢"}Q fpȬ;II;p J{Br\K†,qD[U痰l`3ťqwr.T)aS:dak ]v<͵wX]}a@Jo?TH}+l$\4n[ɦV4H  I>} Md`~2o `fBY|V.BxguF3A sRܱ'6z(sdǮ;Zsц"9*"I,NpD%gI7ê.]#&o|۾jK%S[ F. %^{ŧ7)۵iT紭h{8*7G=+M-s5ޣdEA@4找׭\*O2GsPȴ-Q)Ȗ`W\-Sv S^O,^p.4\-Qc nƢ zcm*|Ptlc_G$RԱ~6?VVWkOf_uM*TXA :"p yCtuVR Ե2J_1S!^k\[!]t!wYnΗ;=j8\2JA %uiP]> f\n&6ʥo*ۯp ܁"Xs5:U#\Fވ;>B>ֻ$2{.UER}L,Zچ*Zj`(ZNG 5r7QNW=3\, !tph"Zj/IAH ?t|]kDQ0-jMHogϰ1hG/2's?xN_Ϳ0 ˟Շ+3Osx8X>ou<^C.nKk+k?hocQX:]x7oح;p{~f>o\gq3޸wZ> ]8ݿ_wvn<ߑsGnn8ݿ#w[\.)`)ӝ3}SiY~/S棒4vz݋e{wO0%yL>./)ve9n>N^9]LqYp% ~47A-=[nv{3YR+n-w5k3ðA#WSʳ% 35~7Qp.1.;`;+Ur'y6wM*rbJ!4 U)\[]{n9;WY12>OX}-46pyLjE[=sWKryyswoh]hZF͠³[/8mHf-Wxp3USغc%Kp܇bBWv$NE?w/Pt0P"fy%X*4Kv{[m; S߁ }Kg/Rq7 5Z ZCaz |RPݾi> 0q\OG/3){&eϤ왔=gRlDHM-uS4#9NBV;eЖA@mhZh!Nx)>v £x~0@֐a~NS!*9G"T@W~s+sѯꎪzn3o9H$yFp!ɲZptP{#:kFb)HyRҀjW{mFSB{@G3BD@-ezxgļE"c+IOqY*,+eF+,r)^(|VίH, Jn\&@tIK\\Y=K-5JBtr c O1D\۰px/Vf%?2wGGk3V#q![ss<)PӶ~ j=ՀbMr?bPؙzfe3~?OP0