#!/usr/bin/env bash # # Copyright (C) 2011-2019 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try sudo apt-get install dkms." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=cfaf613946876896c24ef08dc8cb9830 # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 %][rHST'`0 @6d bibl3Kntgcc]Ϥl;kטL}rX>"L6.dԄYױ]7l+M$lG\Qiitnxk \H4K'Gae#C5;%Kße?" [7ƈ:%KC݅T'k?:O5@4aMȶt7y@-"xO4XZP@V$ 'lˆbپ1 ̖/SoW(`:25cA+ÄEbA@Q=~,4+t{,kx 3.Yh>u gɈ@RXEl7Eɾ#P`(]dX!@lB-F) ȴ}JBcA4 ,cDe ӡy<{/1$(#CGds10ZHQ0ӕQ8dJo54˶56&PeWG͵ rGjJ<8IV mAaETT#v| Javc{[??0~k׎|GӱP7H+SIdgxÚCR.ٗ?~b{^m?rbAW,^?A ?RbzpX37ǹ]gxx$F@*=LRR*|xQˣiBr@M[cdm 6ైrcz@ie@f`A4iRGG9%Zϴm&@.4/&HB~Y'F:0  訐35KjԢ.X A-U#t`@J O6p[9u*Sۡa?R. (!Z)HNR B _4LhHX8_s]נއ`|SBh(FaN}.cfg]OCC21\6Qܰ@_fl EaVJ3ًpSU2+jI2ɜTta5? Se3DێDc 2Ptȡh#3*$"Al#2'GvH#*GdWr;t@e >2zO e޳η@}f;5i]7BKgc 8bLZig?tz$A$`5.`giDd6&72 <1Q4B?e{?at9"Z:W=V'5Z1i)ܯb6, -FS"ZPtaN(ڊ1^CaTJ((+ƦeJ՚1~OIx#v9R]UaG"kN}x>M$KEznJэ( hAA! /xFc:u蘺ѭ1-=çݚyB/ ,wHe20ufy)B&KՇ3H?()Z^F=|Spc $L!!o »պc=Og*Bo;Ш-(QjP;, ߷.8!Ie{`#\2r0Qx7X0ۆYM$ӸJ'<4pb%HLA GsLsvE0 #a@ѩ"KoDΚl M sPaLB@kr#f:$J($OG7[;ap@kC, -ɖ*(xQW+ LfT^43 3DGn{'rJSxS;7>;PaJCfsŢxBl4%`ѸqkE4& G Єْ'\q 1ūLfΤhI\9a؄{A7A&Syڍh"[kaTOvF@Þ!>(RMFSq46oƯQISi.NV!cI!p,'PKM@cA?t0j"flo/q1r<3fZ|'LÆm{6UHBckψ%ҨAa a끗8L_5@o︱7D_._`\ms9/S$~|i2N4T{J qf +CÛ$xEn8C>ˬRC*ث1NoB>ͪf\6_*]8*6 :',1%:VP NpLX0稶kO~~r,5aGK`$[*5$"&hT X]%0/YaL(w,%}#lN/,;ж'\CH61680&y%B7Ξ^B¦y>NK/KZ˛J]9 `(lpْU+fji\ SO9«v≡tB)v)xqO[`BmڤCG<^M{%ЂǛaC2BcY FVHiZzS-7 Wq{WSE4jڦX,w=4Ek+芎7 ۆi#tt L =-'kMhb_o'1c2Y)dg{\?||}|}|}/l7JMhz[bJ<~)Y>Hù|@;ZUI$ON+{+_?߆7S2갨O|*̕jzkܻէuaJ^%}U{ptݝֲUa7ڲiNs\a>(6Q_ޮuks\pqqrfnsRtΕDsS~z.5Lbu{rLnu~qV֪~&+p=k|3_lJQߟ7,ϛJY;RZqR.vǒey-8̾-Q[޼"LĊ`KI}2_hYO;U߿{ f6Lž% λLg'K˗rvԮ˳񹽬VGYVBv#uW%7Ӛ۩~rݘdGqZ<7lsΠ1sOr(ιn-sn,QB:ά.tps3% qo?g'|t9[.W.z'WIi5빻\m5fxŁv)Vgv\o. 㛓ckRV Fvޯ&sY/˵m,)~#4eY\r\پmzP+]g`4zޖGz~,\Fpjv܍jZe=[Ocէ|[' 87pˋ9T ezkum' 簾ִҧ˛{Oڝ:|_}:$7/& [XC/xo*I&9gCT*J%UNJ+zijtћTB0mW̔h˖t~j+ƴj%3Epx\.泖obiySάݸGj1Y lW:*FQ(6T{CeZzLjH5#UQ# bKޮ㼨ݕ/` h ,;OU?}S6 uj\-`kσ}j<rzX]9ϾF/ꩵ9Ӆ,Hgyy$v˳P/sJ:,Ě#Rz\$wZ$X/Չ7Y\Zk9ދ=,nf^ɔzٻΣPz_;KX*R*rv^Xk8NaAtZ>^SBȥft\B*"R0޸+'B'Zɖ,Kz%5.g>%JIQ ˰L=."j!ʹk4 C)ʿp1ғQ$|h5U&Ԫ ,IIWb0ӟFj0`BdPo;ٚF|F緽Y/D?x;׫zncs‚0hs޾4[wϱ3=wǘ\\Ńh~^Oqku/̞a\f!egbO/E7bnTVȝ(c62[>#/:7ĀgxyYLɣXGR: ƴ3}9;5a<[5%?7oOG򼼖MQ,2*Ff'Hx|P0Tեae"zIƏ%Ξ4YaxX?pԹ):kNQY6) MjtMXY;>] d|{~;oZٳdl^>5ΆOQr*{e&8iE6_,mG?{?{??8&c5 7<}:I%m$q0n?NYm N0'kAhP NvT0c \ tav|*z] Cn+H2}l`֭CXI{D&X=GC.T):mz.]_YW1uL=/K>\-t?eS`PǕJ`N 1IFȜ;yv̱0vwx쑢ۡpWhj,'׊riWZ(<,]sx%.Ȋ=r\B·ʏy0bHT2w/׺ _g<@T^0>ڀ=d6)1=U%@5`k%sa!:,t@s)@TVo-Q4[&2<sL5iH~`Å@^MAb0Vۦ,1'ėkoYP|Tq= < De=&dS"m='4\l4V]A Hh+mq61` 2͖ IMF^Zaꘒ'i"Fhy:SIF1C^7EMKHE3%MC[ F { P(b\y-!1g5'96Ԇ\l;UGD;Ŀ[9c^#:O|"W,4xly!YWUGfBX -Ǔ"@ZDLZuujb G`j"|&T3kTn`U(Q85M, ufsn )" bU=v@h,  L|F} ڊ',r7ԆǬ%;8 pcf1w[&^,)>b^vf??LcW #HMS?}>c?<ㇱ .P'cWM0\HG`I<&c9c7F[9sSq':œ8IyvpDTsF'3\?( U/:: t`4`! Oh` QUCwpť>!>~7c5x0x'u)ɵ<*LKϰHѕCN3\6&N;Ãl+xN\C4ov9D e`Ŋ:x2[(]&y`^QZOWR„!@^z$VAP/aIё6- {Iv94f1a {!.!p!4j |;d9vI7 `2psC(JLoD.lf 7Xcf ;._uڏ6)Эn "z(`R6AVa?Bt޻^ԃkqn /k0v TO-'3ȘiS'@ :M`_ܭꚨ/ɼ`̕j֊MmqA{5ەiqF(t 3 tW3:*zʖߊQR9v3"M,6"N9PVqs8`uYQ/EAˍ^sOa'0NGqKyiHK^ӐmSq& &K/zZ5gP~̌kfʅBේMen삂L #j'k& 30-rL l j7~ܻőn10.Sl{]4}N30aE Jq;scjwv{Eq65J=9qkس⃩KZ2TY>ӮWu2pC-Y#Ѡ/-B[gt W"9deFlۢӦ.y ݣ4gC[gdlzv4tŰ([z6B ҮV-079yeq:#wf>bG!(qlÈmwP R4%XC|dRĐƕܫ$wTSw*i OfZ9WaEGN1e%,πhj:]htirޘ3"/eI"B)NG\^=% "l5;}ho]g6V lH 3^Y4]B#Ĕf|L0zX4uo >x" Ec)O[Ҿ5i ID.!xw5))3)))8Mf'?A >@Qr9v)ܡ@Q);Px `) 'Ro 'RϦ00K` RSפ/I8_>A?&Sפt}E  ;S SLgx4|US<Vػ:x|Ϙe.3g+P еn]F Һ*`И/P`Gd$ +meIoC53t  Q/Bxb9ǷEXm16+@ pSk3XH3-3OP7z{6n%Qx#%:LIDmZۈR$cnftϳg*h0$BP(TQKK[Fkp|pFV85!c;3Khrii'@ ܺ M6RuhX룠Ij~ \7IJxGRMrIv1X*Vb~%j[S˳7S(bZ e@CvMmFvί?rɚhDUS<\U~b]/١rZ;A۪SiiBk6\E TPĶEOĮ|Oa}mߤ}/VKrl ?.?./G9u|;-yIݬ/[@'03[°Rj&grh | |ُ(`!q.B#S?Z ׼R^89;W+,oPvg+?/oЛ;d~Uvc[FNE /UҋX#(RH)Wt h<V)~S\(J+GQ)"ROC=Wz/*I *\kravBOKwHS1WGI@G_6~a2gk53֔ 02=TYyHrP86 t#}YunDIFU#nP^`lWtjz , Qc'*OzUŀAJ%cC]t&[.嘳:&/Hޟ/@^ӵ1%5>zQ`fpՒUPoG_qXG6i;}]b"\OTO5Sfr_"œZ7KfK"ز%.KH&;=bű)Ґ*Jُ/ N^9Am#΁J.1O0D$|W)k h3!}ﮄh`݌-bÿ t*aIw%cD҉ DV}fHY|Sy0RF;}<`rT z;cI\le%cH(5\e ]x;eeN_q6s G .x'XEעqZ3}U(XLňKqpG%}]{ 5ov> jEKjSWu7Fl Z'ӰN~D2hb0ÎB}C8\Eb[.hC(FE4pzm=w$8 #9D\HF/4{AxbB. Z`//L#I_;ğ|^ژUJ*wn}KO9K5-yGoyCnv6֢G^9~X +9UJ5#gu?)voJ`'gg9s?g'8b)K/c9-L7aĖl?U~p~8%\{:T8UqI >O`Wt$Z>̟@ R'8XŌdYиFϭ6X~|yrvv(9{rv0'z^oANjkޓt@hgsPdQYypt<ז#+E[4܉A fI\ݱؽ,[C$eOj(*}Lp =E:{Y+yVG<;u$KO(_N{\(L9Q]n~DӺŇ$,ꄭٵѫ\,%= ?\,]l8,J. T{(>Xt4G&_R1>yv"wa#/{@ņ/si(PpGA&+v L>*A d]&1}Sf׽^/0Ps>ǛUMJTōGZRhZ+RPC( Ӊ[~N ф7>:klva01Ln5Y%6NLZ|6vR&f'x?vRvHJ&Tw* ҨGJh$Uvu|韞!\п8DWD6( 6Roh$=|܃;CZ;XL2Tabuԅtid uTo=>{o@3P{;â$9!|p1gp15 t¨+g!_@J8 6n(1f+9.ȏ)R5ԗ ƒy4ʋKJf_K ֡1$Fs:RF/xzYZ)ب0a8G,eF V0zD4ˠ?Y% syQ #!f֧+>.M/j)4ByNNBkT" gφ9Idף)"NSj2=mmR"ho }& e5AxAi܅4u;R{V̿drii6׍ vz}32,7$Xg:$9*_ krm_79$0իc5(/RfIXϞf_oQU֊\2 {p됄Դ{/MuO_k6oa+ǂ/eeeNkgF:/_GV{C.}YD4y 2Tєv}O(XUs/[ִU AK9ԥ vgj]*SMCfyz[j,^-#V_מ|g4;[<85_'FJ%_<,@T!̛u4~䡀KCQ1Ѱk` { Fp27;67(e|M.@aA( `@ emeMki MHn`:=nN2|?h^zq7c ҩHij*,+˾&%KCT6&PS^[gR^u^x/?x>t<`UxXv[ykټ6dؚ([TnHIWFuV7=P^ ɠz(68^RPj&dN7Q5!> Uaj~?8:D$}xQ+x+lܪ+s74ZqyZ*8Bф%<y-Kp/ :, z}0sy侔\fӳ U#*-!* Ӣ4.!u svoҿL{,&(`6=Q B=?;{KY: ?nkӷw7vy[5{=.|t4PY H%(-F; ([o LYYc{]4 ^81:tҞoB/ho3 `$ۃ9@u-E"R$Lfl4 əjD.g'DU5:'<~YΌSeI5$Q νHdXp6(]ThqPIoE8hJFʱB ƾmTH:u6^xqPL8)Jqs` ?n4/AJًi┕6(BP$Id{SE;'D0UMO %HF~2I @P1%gs&'vp8:b^U0ϬgLhZ=%d?F<4ae++_1xR0 8kegU̞v#Tܘe>4oZ $믮^礶l3ޡ.aaUU.įa'jBe  tN}\(©Bmvq~ NHҖsvB+V9 veqR24 b\E9"ϴ%00uCɦGb-k'nM2&:aTgVSP;V ks,Պ1ژg2L[H*9nZڡT_4t04vps+;%ڎNZ66mY9w/RpfxdR);6E1㚅ɕ$3%E1mVV.'z~CXZ/ER6Fhޫ|MQr`).5:(C6?oql||W'3dEi*^D q;tM;װ  {ulL>$K;RĜ<SZQmco;wZVKwΩyGըo9>nWc{1Qݒ0}-~=CoMێcCOYaMDzSD+hd-UgfTyeuzH=LMa{HQA{| 1;fA{WfPaa'W|*Ve.6 fwNp6<ס3XK@YMG"Pgc<5bLXvq1;g`|.yz ]N Kq6Wx=n[j_N!Vգ-7l- p 6Cu؁S$G%oktAH,06xlcgx7.{.@?RNg~~L!|P$X;-L^&<˖q~x9R2c֒;]I$Ik^wL9vf]RO]2#;qEKfI Z;@0udMٓߨKy~~Mk yBfVH͒fie[U"A3[nBbˋ*Hù<{S?h#!!8a!У >V"!-6ECFxd;Ac* 'd2t(eP+/mK&I϶bQ .;1zURj>z;M ei l ͹F`5 *m7svNoAc3˟7NEDq}#ϩLHd.a "+eqb"wm#/%~'S4 -Ev vi Ga8\!fqlԥ̢c w6%粛Zm/B dF[$N]'w?s%dI68;m^.–׺M2(}ynעG ߅}_vpL #@쳑YSyYcy6{ΐ&Gɶ&( m 0hەw+<pBS \ dqM\L.?.?._)s,2W-h b) eƖN-_2x瀅<6yGؾa-\zWz\-x:#B@e1 :`6ldz&s0AUB ﳽf'b}'ðOgEV 8v;0 :8QWu>bs<;G@2="O֬p@<Q¯5'Xج lčEo$tPDBM<{4v8П<.'JhPϞ<, /r쇋ڎ\ղH8oUtCCʄ¡{w޿=VKKL:`M>AEf<9cK Xhu58*MUs!gq*gܢgԠr.)1 |]E>Lgm#}S B61YIS5"{iܬ%C ?J$-(k|ZrrKQGOc<ޏ_,C<&xw<74vg|x2{8s ~^/Yq>~Pnǧ> }P;C0T#*~&NP~5Gtwk7㫦TY\)m Gjufx2qZQnFH`xG hSO9#?_j6^9{dԒi3%=t{8OVe%QA)'KNhlG޽xhdlz(X(o8E*"v}!y/ƾ|ߘfF"!. U H?tr6r)}}V+i$13gfaΦ,?5LŢPA3Kp#Gv^^1`ZBuc݄}XTas3.:ԡ|bLfB82Nٰ ovVW'??ig+3XOݫ6^M^YX@la:LKz?²{z"^,Z dVu\r~y׎_/qXvwbjYzʔl6D"/˨}hĉ?mՍbL0$ɶy|˹D>ks$ O޽{!<z-O3\NkoBSZI>g"7\l>ڌ  D] o+iu7`1x86 876XUcP7jO8) ZM0VyRAg>nρI{5eo }6Ngc)6eitxϙ91YT!U)J9Cmii'em?UV*x;->;_;__ȵqy?j}!;3c mfi0}P{?L8[`m dcV6c&X~1 G  ?6:hf]yNr."x,YRsFqNN(R8/SYt|97vN1wnоMdz =PB1ζ"4d̊nעhb&?$v2/9P̚B?F3?E)U[|,/WjORe?Cjun7:LϏK욇>퓳t)4!vvN6O3g,%1ړ4 z ncPᶳh{e?Szr-w|/Vtn<{t[7/Q ¿ӰZnuS)5z,FzN/M_ٕ3^ڹTkа{s]7IF"igx#?gS?.lB8֎'Æb+EY=?Gq7Ɓ=ÊB\DƛD#m8\?XN0.c^_sn)T=XS#LMME:" R]l7$e #=*V}-O*q]tPFҙM8DiB=5{ 5f-N/^=;x$j<~]bϽ{*~{O)S^ =COyV*{=MD,ocXE ؉_jԈy ʰ'Y/5Iqq_FF$kNT oϦ|XR-s޾'h(j@V_'[9$˳z)&*--wyEl0ت( f7gC@}39WhC'orgi+wb'<!^__y <+;Z+_,Yy]'p<E9'p<ߎ+uX+uENbEm,ֻ:7%%o}v-'@Pχ2A4YcM~L4kuzuDЙLEid:C/G6RV2"D;#f¿|c~af\F8{CT'`zD\&X{u#%w=$Vf)^;)2Kg#}fYN .qyQ= ;TX^ouC[6x&]o ccm=ms. (q] 5#ZA2b6h#Ę3)kF&\a $9$;3R5,( Ꚇ|8Gk/h K:9&dS]@A~ F020e:\3Gr@!1_Dyψ Ut2|۸߉{?-&Зί@9u$NuZYԽ&7淚iVir_eZ@ ,y4R,`̩٪^xuP6-4Oġ{-~7>m}3kזZ+XO>o? ]oqow۝vow۝v20Ǎ/y8C ٝ\~r3ƿon\, H:rmַ- C";voU)N `R٣#ʭP^H9Ej-P WA:bZAR^nW)Ȱj_v2p{Vm;}{D_!*hrZG0:u[ޥH!ݡu}׫RC@آ%¦Nev_lJkq@摡~pجmG]IEM#zHw[4e<Ɓjo3ޠ] kJըCEME+@WT.ՠ|q!#=+mƦ?k}Rܣm̵b1V;=]՝jfmB+12%z HQAܩbq|^w3qtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDqk Wv. ͟Lßmn;b"D+t B H5b kc6Ƅ, NJ%)k"zȺDO'`-mv:OڑVŠE*d(mc׺;y5Q,U2%Y :lw jm!B"- oE# zHcr\;?Ҡ=[mBoWZ$LA1I} YD\Ob,UqT٤#n6E+̱fIN8A8]$rFlfr: Zu m4ALUIl^eIR.\24AEG9Cwnny[k"uO([,vom2TH8 tpTt@B1b=]kF(v⦷iW5թ?4|蘮uEz`A/͕($lV@CR$ }+t ̔<"=ۉGw.REBǔUX^F.b:)RՐ&nouDK.v4ʮT [ބhJ&:>Bޙ V) %V9rMr϶ N`\Û9c"ˆuޚJ" ǀx6icԮ +#] {6L)qR9^Nr#Hm 5VGq1[[R%C!lY]8AJl}ٚo+aEAogbw4b AWpdp^YD7yK?E}<:'9UöH8칋jr {!mTn~CP3 ZЊJi*W`ɱ!XxS{JdM%!knj{ԡX)ZT9Fh%f.nP"浩}[G5N9ӽR+ b+^Ⱥdq=*eVD@$bo:-$7Z|RB`SM-5Mq-k$l5s$H&Rzw8&@-? sڋ i ؖ|ϟf+ԮKm)b:t֧ZgWfX0ٴ}*G&j?55[0u\ZO6PR|NE5I%å2F.H Y5bTm{M{P&ͨV bX ۲t`y O|cTiCckAv hm31,c]SvtMvʢS\6*+Ġrڼh(8)\H4n&uZI=0F,,d;Dgt">"VI)ܮj8|6h*vmoi1օpK`ȮwfXՄ|$ä,;oYt$ݲH CK, jSEY42w-u"4ԢݒL &$c+m*]r䖺QVL IF.%OE۲tj?9tdmBcϖܿvB%tn)Q)HD存(VK̂6}{& 6R0:4kШA[)`\hRkWUb?$eVL6Oi YAۿ i_eM_ W:1: cv! r~DJtiipԼja:v6XI#x&.YhUX@~eGYBX9ec'Xɂ6`Oi ۨbj ]^,uhE ;Von-}Wn^veyR+lJ{Fز*1Q}ݖF ImZXF^ .^lorRx[b핫ʾn%+7m:el^1Shuia SOދ5/=1`݄2CfDJUz8|gLމ2J6nVU"$vȰBUM5ZΧx2-E6u eѷDu/EbNr1R{(UHƯx4wd3[hjX&`|;/r\kVX*ȁL:"^[PaP4-ifL"&3i}[c̞!m)q4˥ Hڧo / cPcΚm?CWSWi @"Q9MLg+E[vbeۤ1~3[0QU?^29܆Y5`fn*WV\MԽ@7S%P: /qxBI0vj:U3sDmLpAJf'71 (zjd ml=q[6i/16I3ѭTƓe'o S ݾsmo8g>绂c>#MiHObqOt$o\'O5q~ﵲ*JOt\M-.Ê1\b[Ğr[\1l,zb(6j3?\@0sšX)hr5 #!HfS7BģR.*#Ri;1Q[Q v ^.&^QBrԀJ)vq;O9ĸ4BL/J餾ޮ˞- Or?+m @&.-ڥ/gWfl49F*@gڕDs RnL[bZnBaBbԤ2D1-tZpT[T 7i gZFub,!(.ECUD5O)Q,K_0Ƭ Ku(YIݥ @mmKVߡ@X"CXj;%ޢ8(uA(e½Q[Fd08"xJ_DAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAt qwOkuϿDAtDAtAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAtDAt<_3>rq\p3p:擵Q[*+?V,oRJX7o0E`y]-w_gZagڏJՍ,0A޸yD8j%mVl y'\[xkޯ^?HoJjMza;oz+ŽwFpWMo;uB/{pR;y'; 1KsPi|7]Lf+_?ռW8{4~߻RwFSء÷ǽv8Fw{dϫG߄륍hxa'x /$rO$Ž@-/yrn߻ͼApG7BҋC+5ʦs"sV(\mh .Dc0 )['A=$N1@s׹ /Гpx Z 0O$Ǝ'_9Mqz!.-YKQ< b4'4UZp 7>PzWľ$ebF QYfݯ}/*HĞ^W-Ӛm~@̦L܈ ?\O3(Mc Ft bXxN-ep_༘ Kӵq ~W->1cg2H/:3X`^57_*ylzQvpf!l^X^gv&WE hㆭ׼:9]s &oA;!s2MH H+5 r^i2 v4&;ӛjv"HA+'0+&ZtKYcbtìrq59Bs;`#8d*`EXgQ؝M /셟B۠L&pn }R8^5qԸ<75vq8:]xWg2ց(4vtN8eiPAk(oO0a5~z'L T%VbqQ:}U+z~FSRn>ә bգhQlxMtȏfvH) yf9F| %_ 8Sf"K A8aPh{5T4M9^m @JT!BZO! y`llDM}4Va F*ФF 3k6ЪE:lHȈ 0`PP&:O@#y "%JШvM"l[RCd@k0 |эt!HHG)8'iCͯ&eՏ<; SOȬ{g\4^xxv|Xh<:D_EE'"桼=@Qqr~xʙWy`xgqҸgyj:YqMj ل;l4kz꧗^]si>ewWu)qQ?no@D@8|ԡS69f?dzkc~ \]Ow IUqyuY^ٛ@5&Y'd  JWWqz 9:zs0?>$Zb.~AHuH@jH&PR/M1ciquύf=hb)_+; wKc<8j?5^C;S_L i( Z`v"-X7vz#I^L Atf,.D3 5ԟNYyrG.{f 8fp83KKWXa!tQ{ (ᣴ_JܱBcp QXZ%\50`Ph<'QI>AU$¾t(3 ]{V?t@,qOR֋Z`. ;YXCu8/Ye,ex2+\I'Q>|OTN)|̒îDWq #YXа8\w̬b%ϛ*ŸcZ!&Sc?LZeװ :S"3m7,E 6G៝LkaA %EmLSXŸ6֮b]۰anHKX9͙m[X@cZ#ZiaA,b+]˘Zv(vJ(ma:1&NISD|ˢإ[US6U$ ;bZbJD e1F u@'1ݶV!"^´mER`"P%.E(CP iD- VHk?v"ۖ]fBD#iOV[ !1$T4) "~" \AEJ(cI%`]L+VYU8m6(4< !J;$ȷ$۵QZX tâZpJ%'\AeHd' m/j"J][L#H2dh?*xED)5=DĠ :C[prtx0!֌haSfCO.!8 ^-Y҅*R=DiҊLMIrJ) N l5Ɏm?RS!aBd֮`TP=$:1n( /j!œI(.7B$< ߖc]U,ef CoWt@ؓz@b**Rxj!c pI2Q, v ;6Hڃ?+5 AE:cƚVMH'Ӂ8RHbAr$RK.fZI,eZHM6 G.g8 Z:E#O8фs[q$q"=hU$="RФU.`"5<ĠTG,RJI7[9&'I>*ET I /Gm9F[4ڂLdQeG}#5DIUHwq0oۦUپ#Qmp':Ͷ=j N;RsG%kP NI\F/ei_\kZ5pE~e{.bz8I})hQ2e2Zha\%1]UnNoK:R$Xe)$B\fBPE&-tWBM$JJsƈ5cddIIW !EM VhI ( pfu" 8LK#s#z@XUy9MBke]A͒ylˀ%e/3C1Ug o'HD 4Fҁ+Y-\O MN+Ml .d 0ё|ҭӑ,M%9GHgŤ?lx)?c+[qoqg;w_F0:D?o̜@ {6`{/zZF #4Aa s|?:n$/X:>ZQߛt@,}VŲg!hZMv,܋;Yht~k냒Z/5^˱tu:2tAdsr(~}Y Kzk;sCR;|O<`xvXilؾZZbUcԃ?N%x8,I :ѸGJ1.'W6@uxp8!7m'zrIjG=U)!j[8$Q!7FH_@lk4 d1r{XIhPR;ncYBWZL_8GQNW',|뒚Lڔ\zo3fђcbMO8S14иo2E%Z⧬ CȀPOO5E7$y=4bM^7(lPXu}55ӫe?fi5{ +ΪYBUj9U{uXS9QjR{q?{Ban7µ۔U,~⠮mgDo,ΌӦ &_1Sm;k74=(o=c`4cѵ!A{훰7G>=Yfi`QٛËkyn6%q~` dKKKF|r V>`>6]؀A ce؈,>I{k#Ȅ?tYmi q~ ~{%? {-Z{Ggzu8zCXURqm(@QR^/z?)%soy֬[ٷn?33 _'g5`ӯAք^B4O!-1,sV>Г8>䜳J2xS)gg^7v޿@U1OTcȼ/q`(da{I bzՇb =]I V!BgG0jrLd,6ϯ^xD@5la,AoY8UZw!xwi'%r)f`ʿ~1+#M/l?a( tT17;VOa]3 {@>nÄߧ”ǓZmG-!Ҏm2Ld' W`V|ACe=WghOT6D}*~meA9Ӎ<전ض1#Cp-&G7cٜXD, kYG;OwDK!]9?'}9#>51vfH1jtALTd$ `$xh`{oѩhzBv5 b$b۞LFjĀƈ%2FTCL336b3p#Zʉ6.{uT `y a&Ut3-aGJ8]JDe{XA=x*jQ4Ddz v~CIP($ }8n p"8^Q :DEl6awa.*a4@y|}C۠lOo& uس {Kl՘8$l.Nt.}g?dRLb$Wy|+zUӁ6YC7چRmS,GO}Yk8LFw8gRx^fԒb{86"*@Hsx9&_< >tKb^*hA[,wDj4kmj{{X9Z.ȳHT (5q_悔e~b䊳0S?KNƺ\?E51>L̶´ ľiĭO+Px^y㊧V%UXY4ӻ&ОP avKx paxݼ:ѿra="j=z#@j=I~Ҭ9h~*nluI46 Lc1Dфgj/ =vGlV &tfؠg4k*(6lB.]Yy$~q/56^כqn1ȪvF:Ne+i5~YG]aX5kCn=Ryφl^1"}2~oG7>?|HNBL'.{}XL}GRh/osBLOBg8dA"%J|,&&ɤR. @n+l},ɍB)eT0JeKgVoXj Fܣ{, F'ĒRH˯cQ>wL2b::  I@#c"d>t"M!>) Y chOcR0UkĎyQ%>{ f}$GSF?|ضsrɨq A(Eq( X56SyN]F`NCh ٬ VN!:S@\{^h-T!R tH%)zy %xnRbqڸ<{S?}SEvM\WWM L| ,nK:>gSة&&8fcqyB(`s~?cq 㶯\m*w~`WMtSEGK姞M˄,~̈́$srP;JZCK -^b͡&c{2?'֟:qt/Oi+[ju}Ir$H6_&%yŦǃ(ky˔BJe/Xeu,*9HY'=ƈ~eCp+i4ŷ6Wo8]~q|Ӯm8%#Dܒ[{V_ =&}M7^a[/{SJ gQ<֙I;ۣ\}T [el\tXFb,EiE,M#BP/``$ԇ1yoŗ;(mՅ1K_p?;4% v?K|т_!Foښ®wh^zBa xN)+ UX/՛W|Xo2T=X _{7MCPzkw"å÷@M)M$^gxQ6͍C1te.Je _u¢ֿ# TDPޢ^8LILՇf"eS`YgYo8OK`%9LtQ8/h?Ҏȯ_aJNALX&pC~ |:slM=Xס2NB}o>mٲlQ?vw׋<5BfNv ,h Ew)쾱q5\ hc[Y=çٷSvآ``<{ꚵ)Cast" }|Em~v0(_NMYFFՂZLV`.Z0oCê%V7V̰PYC)=DRK `PvI6")A`1Lq/m$2hH*Ru}1hPV[*9ċf-&F=xw-,z:`HM?x2fÙc w?@czLIO[}gYo36TNfio, LD'~G]F]Q_Ürׇļ&;xC*4%LpFSp0drO\Ci_0I,/U``;]/t``xt4kFG{@35 훐'͟o3hQAo8U+ɄWX~:XIEaf YlZ] ؓopΈ9)>~Kdxg -CS#YKqcU;W>Fb^T}֖FKX9nD5j 0}ThI|ł\Y/έvnyx N_,hCPEc:Q"Dۋo4RHrJZӇP6$5pR!R'<\ٔ1`oaoGrz}Db]5'%D80BhP4 <1$ϓaȻ&ƞ v ِcWm xǾk\S)NlS[Wa }hJjD|Je!,N+D)$f23I$B܉نsً `?^ф١CgfyC [V|u+6g!cg&EKHfSR(b0BѴ8/ҵl6hHL21XU8 M$BWd ]ʖºB3͛v۟qF&1)yCsƟ &߅9@HȞ~0qQu\VI5KۥV ڊ)ҥ>5 wG +IWCHjG0n/X TDzq&~oqhB:sbV)L] {3W!IMI4ƁBz:Ef^c:o2J|⊺ƺKfхFpP' Ͻ1309ic _țNymHwB'a؇%O;cAYWny+s i'` nJ=/eAʦE^KRKYA&ؘT1^(% vN,EQsjۭ sbD<1qB.mp Bh, rU"&ݢIm83/' kĢ.b ŏ5'VRJ09ةrMr|>7n9'nXBdm̿W,T+ry}Og6~GWew3({ם<ћ+OW='z}I^s_yW-w %Z2ojک7.ѵf^ 63ȾR.1.'qO'ЈRI?)Hw,և#;LEzQpNu S& {^o|~m;2acC18MSPmrrNըv󡄓]cܯ~k J576n/ ;i`κ@bsbv&Ydc 1T?勹 EH[~BYUC jǍW#[g2702Fw|©t:o<0qN1Kl08J(~YS?]F\J Sx+P$DŇ B}u<zZc٣cb"9 VsRVg/4M&yf 2J!`9gҍ^g :y^ ɨ1:@%$tovefÅ惯5l}@['_l\[?:b&k}BAT#slbAM*%SJqL -H=> l7\B8y8gXkĠld{D5LAMLL~1"S{ʵ5MAƐc`Xc Ҕ!XI:$nyЄPȜ A4,r6b;4-`{%x?Mtkcm h[uZ17}J1|67׷D6 Y?<#T/ wk|@xo @1 ?Ju 2tױ8x1p 2Ԟ9HPLA'#!|}y˪'p 8 Гx Ӹ У}1|=xB4Bpi!]W-`?<gQfH (X҆1mG"X^vX4R1TdmfTίrRd!AF4^"!Դ IXZ#PHN,VgA5LmGYfuJu+W'ukΎj ,lWX!a4Ҋ@׼S7؃+- wXm DjAS{oۛDS!<^yܺ^ynhգgAbyy@ZѨ޺<湁5KY6"0mfn7K?LHKU~oz+,`弝؈ɢ-(A|%nvXU[z{۬T5nPٝnѹN2&`Ӕ--6hea)?sԘmtIyJ$\i[шUZDiI;z F)E{"2 U-Jwf{x=$Bzk98b_=?E;+XNgu <>9z[C!2 guM!h4}XH"x9wh k ./kV utS s?g9x6F͑B'ͳ\AWZ"s }GC8̂NaF{h~^OjP.AoͺZX!*gB5Qf)ۉgXšaDxި=Uh:`Gǫ ,ꆰOI{WJv?g9s쿿>эu:7<+NC @F?n@Z XG0M($l| (L@0^d4"p㷍r-!` ^Jnv>m@і~D7S|EΚ زT `jˌߍyeK皡 Ͳk$4UR6b  6z4ՕQ?Kč8BiW\|令xmx/OU7]a\fid0j?LGKzTez#E/MoB|B(M|)kYLNj<vQ]!`Z%}U,~ ';ېh*O9~p[G0&l0—M{Onfb}N{PxLhx65M$$QȈ/0fWo&u찎ok_֏Erv+_A9٥DwY~#-ԡ"!+0yE/YE"-ġ佴L_z@W %wW~15G{ UMkhO LYx,u yՠYiĘzʋz_!ծ/ӳsXqPk'U!uy KRQn17K,FKnbe0jC T jrXD`hs|sKV|6ب0FA t!!F2 0.'J#gԎ q A 8Ӱ+Q˲Zz}q#[:$J  iy/vXp% Ţg*BN$p>uaZ<_Zt}j?C i 1$2AXZ[ IOAڔ hKuu\H';|/'DH-`"gPNZ;ّA:O+ h_ *]6KC3$KS&Y aU[[؅x)0.U`qi`4-eks4y#Cem* kŘi@_dh! 8M|Dޡh{нn/Ġ`l%Gll170@ GWjsC`<~AdL|[/.*|[+#`% ǔ2rr0F{ަć1Imd)~uMd\kE&bnIdmV,/݋u3%b_XYw exgBkQwwJCmsjC6|m題~N|.-b2^Vf射|_fo"oi/WJxvwn';@[A,0#7vQ0%DG'l)QL+@d)P!O/㳟ɂnzRPj: 2*b4>H|s0,yXu\k\B\ـҟcn?0=Ǘ&>ʐkʎL3{kqBa~Y0Z`o&a&{)K >Uj)]HY2HB(Gw_׷W'SE%ޅAUrB I~Vo$tړh MB.Š torU(mwu{4Ǩ٢M@ HF=킺yEt%"$*uDW8 .`yP72b/QmԲOEVɥ>; Yvl\&Q!)`U<1Q)KO'},^n YQ]-Y䬚3-A8 ~E>)t?k ii&C)`<1$+ I=Aڳg >ǞQX\`7Tb-!|GG82AY/lCxL{f 9d>C `mж"ۈ(Np uGi+!Aaң߉p7'v=$4.0&tEK9]Dqwmi"qMMԴR@׶Gcq>Ol1ɓ#bSq1H$|5vc<^'jfONHӂpW8 1Ϟ}.}aS~SP/NyL C9is+01xr\o)0#dm6˚9^ICYJ4b(&a(jOV)i"7<u@(餩o s4E>?V9 Źqo8d@Į !;xC ^@xqCPWbu>)b@ bh_M8Q{3F2W *1 Og`lq;Ks\p[M0:=jȊfޡua$>%AW4cy xbј_ m-v5<i}O.lZ !Z,kzLOJW-c*;xzȐBx-%l thZh&kwv#FuQ-]E qIͰXM Y/sHb&)[U'jq2~vӸ①ߙᝣq0{8Gv,yvdz3& ~K>^!'&[8H]̼t(r_( CQ(z1yv;PuY.zd27B+`Ѕ*F.4 .N9%eiII.}w󼾮qw,raլS쫤mbȑD0SޜPLԭ{v wkt!)*m_`eKfyM<ڜfIJ;Wnjzҳ}C!H؞ϊ.b3/{|ȱ DAc3>l:"Ǐ94bs4qqCg2F_#Iڐ:orCLnٓN"Ym/s_q¼z^ cpU0g>;<A$='Do0;=RvG2%".x=?R{bd_&f*/`mKؕ3 Q sRێaVT5c|D/O@\e?{JOE|V#o_L_%~{+Osw!~m͝ߕ\]y+iI^ekV}ѯ>S]Q|'7|oܢ mȖf?]ޯU9HfP3vUbܙ w>l o7@Kcfڄmﳠ2#>mf~'s󡇅Es'Q VQ}tu|OUGp z9WWCFAy"{g& ~,nǠ ]ED N+ Mss]#aܢN[/{X*xv AÞ @kZ{^?A4`xSfNH,{X?gS2ݗcjYM.u2ȩ.=%"xs9F=UuF~1q_^H8x i`A[F46 fFۘ>7#ocm/x:n 3ڤ`} ߽ϸX)9߷...' -O"<{J臛=EYvFDyCXPONPHAD6fN\Q,X4&#?7.4Ero; ծ@.?}5\y.jg6gEϣɇpdtּa[Z?gfՊ}˥jEv])ܖ!\ /Qɷ 5mU+3ѨOvu$RmCs˵ﰆzDk ѵ-_ @,WRO¢ I3+g0폺dϟwr ߨK~ RFG)Zv}8!@j%By;|CFFPյrY0~lPM~0oČbVm8j#(U,̣.C@\}$ckPZZ.Tѽ윆wT`:B WmՌ xRQ2WEajjjmsހP[OcQfPIπpSGĝPle=t aV_y w댼*nl$V66wroل'(G5 6? `t sPhbF&ոL:i7"g1.;\2;Xc'=~أl#t|]_魼 _ϮK֬vM)Pʃ<]D r `dq3SQ&%0Ws04N 1gm z O& ' V>F4h'=\1&EkӻqHÆe1LN=5|ݞx1(m |b:8PLBq=/Gx, aj ~Lyo1"݆m݂5Ohav*aP;cVbl>]/zdʞEV\zY>f\F|d+fÖEŚe)UEyI:zl[%]NL{{g:x[B ]A= SF>ٵ=ð cY(GX6\MM1ijCp)0& TN>u8='$ :WV$R4j w{֠T[qQRwvWx F ?=qsHhgsT{~ЁvaV.(Nk5-=w&MD60H/\?zˏ揅<#VS )\K.&HWKYɍ,YT%KTeU4}> ѣA?}#Mц}򠥘/sT1ѤNմt[>_NDjNFEO,|b|G[f癒5sҒR>_NrsL뀶LT Dޤj89v)(I$(Ao`5u k^> YKMGҊYV1p3yũ/\s$4hr>LbY">[;/3 e`uEڂ޿cps`%ϾO? <'1oP&V[QI-ĽN/rKA޿Wޔg5aQd76&թ]]5NwaToC7z>w~a3k2154yM/NB=鍧}>_b֟/b#t۸/K/W NE. ˙+lQs 6FPl,l_-=qOiVh~s,m`-cKR+섟6~ߓceH t{6Kz mX L0yY,CITtv۠(\"8@h;xuƥP2w73>IڵxL XfrZE;*X;)«tio6΀fPXz[Lk&mkܨ%W3xO<-*_̗gůg05f@ǫVq({~W sr 0?gn)TDYI'C"Лk2)Fr4>(6_ i#UOd6/7 8xt g[>ȵPٽ3A "g9D2tb={g9o}[0j}[e cu&8M`XfP!-f=R6l zl˓Wc)H\-/=#E 5v}P/:+?rg IzDAG$B*/`t&h 2}*L̢L[u\@gR =JüGMʤ|!ѸPX|/5Z _7~.g87m) q6)16XlpnQԝ[&N#xćm>>>s>?b@V0