#!/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 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=540544d31698e777a52f5f69576b841d # 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 v][sȒ__1ټ_ٱw1ȶn1pիRzd_wό7޽PO\ZS>r=ݟمϻw?߽w`{{><=B"Z/f`I̪ۆ~=x΃Њo1"X#rQAQ7 $dEę(X6'7olx‚6UgVٜ37ap:%X1ǁw?fv;.6 6bl ZĂ Ȋl_I vm^ 7bC6i4PЩY@(A`sdN%p{1~lIہMfVCT4aR2F ]j}kQR 7$S`n8 (`w)GfA̙PX‚1J.#x-MBZF#._ C"12 fΆ́{6;/5? !u`nvjmW'}4`/A;5nsֻu,X7RW Y]jl}z<Ӈ]7>Mozՠ34kF/v$^Aqtc66dN5yѰ3j[h!):1ZK F|KW@/Yy<V LOj]ë{6ifN ]n90|?2tҞjU5kلmRs&zOuAPg<fIcMTk d#(Gu~u[!kj0m:u ^q@2iZ~ƚ: / ] u!OKRq}[НюCVqb-a7c=_woⳳU6Di s3xobsNys~]O9-"DA| …b[g$%VTN 04./7IR)Myi4EӨ`4КF! <"l  d3!0bV@3¬.}oλW<m70,CcV|0fo d(z@/k0L9)HyBy (͵>@x OG \rgsEo0.l]D \ +4 ΕRhReDz;yQ#iI3#!>w+NfXөE|ሆN301=mv~_V`uni<H`,9@ \^ G.I,D{4|mB'/ fʒWʒC>WdYlYtYHgeRf`"93y}u\Od;_8ɜq^"uˢuF<s+ YMr֚@=n>i6Y1lÃ4yP oqȱm}{~4GlRy7&ߧS7="PcrRzy >"43?݁yk/ô !*LpWL&l cwqPll0@k; z r>n lsYHȲے֭eF 8*AM-Вb%̄S#~n,DF,kLcVuq^f=;fݫNgUQs)m֌2x ZO@5oaEIX6p!m߸myUU_!wE3pf8J@4BVZh:H֍G;.|aBqکS=T_Uh]MҼ@m71 ?=%*Dc Ho#3U,!kaRoՎ ta~+K Tw/u'ް-fij8:lJ&c6LT#3FEo ZG *}4RղO"SU1xPw;MɎ8dͪI; /),|x$FVAl4:dr 5b+\:>4[6|\6bC2fM=fxZ.a~1K$^`9+Fn@I1iy4 L*'+|ż`G|j.\s(I}Ss3CFQ;r`;7ƍ츳l2ApsKuH aR9Y*v!I91SA,"%┢!"gPӜ=JA"5P"9cq.k, \j&h D9<4yV3\o!\w_ǯ4eA0pݫ&$1d4f1O=PgvMog#XA_#\fnu?뒋H}2%0Ydt-{,Ւ6{uᓼaXDM^Sz GYIHF,ʌ,2,y+Ǵ͛Bqc*>%&Ʌ~6$*1hJTKbT}1d+ԗӓQ8Z9Hڥ6+[o ,sYOKӘS(X΢&/au-k7%֩,/Ѥ!LbC??2X'i1* ? |+&0!Ut5j~mܸԛ XR[*LL0E"% a:CÂϳ)4pcBK``h|2e$b VVk 1!A%J5pTh_[ZZˆAOns:!F\jb@"u1n~bI߽{mv#T$/CP"I}GP2:"QꃋHP3pT&ОRqTra|n9# [G)vwH=>UXK~)VڞPZVngsмT4H%=6'vYH!Sһg=s8/eJ=>I]crTfA7PJ[68 *s&nywO]XM}a P^뗳NHKR^>K^6"{iu4CLBe8 w+d*MeW&\tNg"k,6w'S'ZĂoCU[GrpV[Y_ۓ18OZC6#~"wq(I-tFKjEVts 9MڋCӃoNC4ƒE*%iPgTOSWeFzx,Fs<&V\>e#  yGr6LD|SaPͿ]z΃ :ֺ=H`Y _ k)] +rD3rg~52!Na"-bBЍdm :@}HtHUg)2P6P&:LQb dO; !Q$v#:ѵ6ة;P BdZSQ98UP, %U deIrV}@@}97 9 Kz9wz n^%s]òoSSZ oF7 Q{l.̕r QX~bEO8?\mV|MSS婩회vE>vW-瘙ؐVTy{V]+ eRC~3tmT}nWp0퀵st\l,{ΪHXeRJa$@%. VEF9J4iڥbmkfPi+k Ūٚ`ỵU@w=vdl[e{;g3+e]Oߜh[%Gx-|v|Ϸ?|Ϸ?|CX<0uGqӈAn=(&!`>+ 7հsagKMl٫i<]e 7qtsoO,cBW%V"!ǧއML- E:7 X[e^xb$4iSwdJl 9{|XI"> ( +fm檅)6Am:_Mmc3?4 @6)F'T}-4B_:[4N<G @huS௯4r_q2'3V4<-3n8r[QLl*/QꬼesI5RmD]ϭjسYv+a|Ş]sxn#贏Ga q.nM%XܗIJ=6iKq3(I|nxhQ;yQ,5kR6Ӟ)o)n7CBi#/hFpR6_RʥcGbR']>hTvٍyU],Qsf m!\>3ཱིO\oS.3KO6ā;1Jq / MKι% ˽!Mr X kX4.9GƆwƲ"N (ssÀ @r~Ypt[f`Y:CA9ኊUh*b儶r8'􋇀|\R'h5yS9HՐEY [nknk1'uq]'4 R+/4T^bɠիԾQ+nCAQ}ӫɪ]uMW+/YD6l)8HX,xAu  ڬX&|wڻ%lk,uUW:UuYy~4"|k,Gf6Rºe잻>c.{xsP(MmEhi=V0K2j%- 3Lē7E+$ap"*M 3in"ˤmI1 o,AmnXfL:~IOk6A#F^Wf]*XaΖxK4BPY hہZ8hg؋܂%^|=@ՆD mXeKb I c3%u)ș[G#S妢oᇈic\M0^: Iux Q]Uݣ]rb^]$㫰9%elݫ2-R24V@Ydư-viÍZZAq Т1 lUT?a;.I!:i~7/gEn^HsJ$!c˵rWσ6,B[p3D r 1c7mM5/>KLWe_|N2W\ _߷rDRrx&5&Դ+\{&IdF+Bo3vX8!DcT1Qh&^ >^"e<#2MZX_\bL.ӯ0ҡS/E#N.IL)Nƞ-خG-*[MqQi"hC{Ѻ@Y?yqQDx 6e`"zeI>d0h\CԸ3y ib-( )+}BA7dE4Vq]^`F6Ks 8!xێ l^ǝ(j Fw$z?QڽK qnB^[1{-bm)mD6irl}՜74m=]<'l'+쩒ewowɠ`T5X!"="4FAΜm_BX?c6l^coV^KqPc9F̚J+uR> 8c2 ppYjè7*eD8=\ #1_4ԍ:OWwQ8yl2 jMǦ9X nj"a{Ѯevj j Gң An4h;)lq >5&"@_C@iD3 􂢜tI )BUcs)w @B{6i-}2C(/cT_̊.uKfeZ0C՝[ܕy8 J+Ð2i0 %M<}ъ.&}{w'JTS;PTU?S0Q']7Nޚ{KR$Xx??ΣRo6`%^`+ zEE飷>[rcw[-WJ{~Ͽo9\s7ͽ~s_Kn=gG>]Pr"%\TG(նQ' nc~{I&q}o<~_Ra{^4n9 ɍ-JimuLkERyD%Yzs":Z '< l_zoO7ORZmX{[zClCkY?J_! 9k92 5.PtHY*$(78 Zf{̝ Em@6O )z`k{{r K7' ˶)ٺAQ(ʎv-hw*1৴lBKgoG-T :t]]t{Իd*nn66݃6.q eϡwuܧotw\࿅pBO ҏۻ(̟׬Q`+p AIVA@=0~)67L~zWj{|r.?\s*g#.tЈGЊ:Fu€q&kWDv^x#]!.Qǻ:3ϿX9-HgK 7[ )yAK_H '':2.2zC" AC@CRduSDbO؊S~8s8nC?9èQ2!yhvq&"=]1\6-OLK6grk2FhZtG~b羨T+87-p*z߈ # ْ> o@G4ﶢal{H"ԓ;Fe<͋bhF rF3.b{uQ<ĂW*5^c0T\:Ȼ}c8}[~ڎTvQdI|}uP͇bji7C!~l~<Y7BLk8Dbvٓ7 KnڤnW8tZjP{% jUn'ĘnkWJbAIvS^˯hLƌK4xl}2(t# uEKX"z NQuM@X vd!+_7;[) U"ws2p]}XrFECxL(J ~'C~JvO(~2f(Z>ŧ 3 7}dr)Gyz3C_f֚o{(sd?@P K.ڙ`U"wF"R ;@zJU!P#a|L"X%q>'o\bHklKgR3q11&J$1ے1/@<AԲiI)mW޹Ӈ.3V}\շrIy&D0ދ8s'$MhGpB@иE"@*'2<{_LGvb 01׃m2:pS9l 'ǻ>(mSXU^0Ϳ_)f%򚬴qqiuF!0H8v|XYTV XӘVVtB@i=;0X;hBnYAŶ {xIl!61>P4%#lXMCJYL t2xmo-X~oÀBi iܢ1pe"l A)eJ,\/. uHJj253[B0(˘y\Y` $"@ɚw+ 1-%Bpk$δr w|K΍s' H",,I]8ӄ'ӫ T_ q"֖ bS1! 4u=??)f£B<7䊃ls۝4(߉4O.79h$Q>HwUZUX f\kp3cf8M`ֈalwFxF#xC@LɁɯMpu^ѱ"X&^ wT s- h/UI ^H;*vٰ,z+g#YO~9xW҉U!,|,Jss 8=jޑXk6Ug[[Y3j}bق~F1']z;7`MdT/Zh#<n>TθA,ႤJqQ"Oh@3v6S9ڤ-_2Y4h{5Yّg,2 2uf U J<)IX _拡0vFٖE$CˆMM߀${:50Qy ױ$!f~+ XaʫɓO@̢"lׁq8ȼT#sO35}3zPTPaR5CF7<\ްyk/*8.ۘ֊CX#we+ BM>š2ɿXEEy wVSt;W% }K"P7sPst2*!t-͆sLH\C][;k^]+RZVO v#rC(Q" nXbFq8l`jnHVB8Q=<Q¿g,U6w ԥxS' ;મS?6j#^ǪRh19vT6TQBÐ֭ ?)Oc&ke:( E=.gFJi1" 2`^i%w*5B`ky dx¥G)KhfX8lS扬 kē kI`$"D.V4 Ġ `21]SPwLG+qw ҫ`ml:BT8Bg-7]\5hAixV4zMprHcE6~E!j@ $KؤA?3PmW!) "8C}*2gCononon5mXqP'fa#L}16(VY_#`% R 0o<(hcD_Vn. #aؼJX@3v"b🳃S7(߫׏DNd%wfoEV&Mҽ00 Uhѷ+z㮑Tp'7sax:T"#/*D[uZ8*ŝ($QPNe(Ex 6_:j kpDD~x8F"3Sш:hr%O$;KQi"uƐ@I^\P(+e@Rv/CǬ Ta @-lmm1VS(Djd֖zy)y loH7o^Ix,CR9)B,S(62|%ʈ-3RN&* Q]p޵gJd%]O5w4r8 T)TG8l^;zuƳ2vcYDŽprݖw"3K'3A"aܸ0ѵXƺ>>şו^l}2@~CDzM;k)V۔dgپjͫS- ҀǾ_h׻ihohݺXcQވt TP&rD{(zH̖5.uعQԉn[NW.0 e:#Ӏ*US ݏ ¯K4 ݀`^NeJL^C<7wN°lI\R=mEKkNfd9]XufI?]XufQ9]PsFCkf5|mk(I wZQʏ@XDelP8IN"5ݺD .bU )^Q,*i\8Lgm Z_-dһ*C]q1DiV; ՇpΘA3To;!7qvԆ وЂqP"'\pWku.96[nX=ozHdan݅ ԕhڐ3g 6:al{p20`v:lY1rjۉS)jl4ۚߢ9=bgenRf'Rs0͗Señ/]#HT!3rbczCllȗdG.3j.3עeR,|WR2wdf9'c@ז -1uVKh~صހg0me'τf\2!&Y3a`)qNA'ٛ6 xS6xvԣO%hqoǡSh)Y'L4{ Kwig?wo0Z#2pO4(đ xT_fr?~ _/^_Wn_Wn_ OTٵX-൵ѡV9hWQdnF&KbGӚc $<1W2Ո7 B VzQ00VG]i~$>?VFeh%=9O%Zr4.)%%@GQ_Rs˽2e]}`501Q eU0-E$:ߓ"LmcG1Uxmm+fˡo-)i3 5Ҥ4k)4Fj6xY$_'$) [ fI!$MKcIz>)ӕ, N І1ganTs#BPKyڶ+qJ`H^N'@?=DIhXMEu1*֔ ͠ش;]2r{ 4=&K:lQn[td"1jfa7rPAP'EDwo Rd 1j7I18][2QQD[?)p\wcW~+j_Yd[R彿YxMзJ +NWEX Pc Dd| ͓yF1 ;(8PeF4QtkLEByy^r.U {U*F32`ac'[Ś%hyn#R\CnJyW-V&\q9GT9Wʣ. J]lZmǻ髜o$2*=(ī%t@71_mn˯- 3{Ƥlbs(n Pn72|'6Mltwpcs~$1UO`]l :W Z>Z_l%'$\%Β (pĒ*Gnz٩ ZTCdlC{`m6U<~++wmV's;s;60f樜'K)gSfx<9wOS(T_Ŕ IVu @Y6EL&%[[r@+ez"&嵴>=3(UOOuP5V1 __Y~{ef%~[f1كbrT5{sЌq;UVזӫԸR-*ˢ˥e+(نn{oA ~/հ܎Q'b;x2әYU?TGC!򣧫ZՕhdClc)R 8u/ڗև|^]X?h>oz~_?4G`YB`!0"V0Sxe!IbKƣ@O|j3rψA"`֏DwOZ%pK]|ti=%?X\t/5G XTH6"%2n(IeʘT??[m $/ KF$Z%OLN~ f,e^C1̰U7JPˋm4N'xLeuv"Gt`hQC:8ED~ 5|G~^?S<95k;_U|iK59d<dXDa"fmI\?&Șlp5Oݠ=Ô7g xOT+N]+=Fѝ9w|)I';CD^EVs+/sMɍhê:Kމ ^=s®Zzw,2åRDut 4t>%U1inykr]YEĐ~ebw^F#MhH_~j_x O(V+QBf?;}*2.ye8pEpyI :XRv\GokRbB.\so7\ tqDJF.Y9,qwmR%% 0[vкbb .^mN#Gm.O^_l6ʞE+1׊ã\,࣒xPN #AG3SQS 'wO9iׯib9Vg c"!N|ak/~qFK拄+)1"DV Iuk (s#<ط0j4BzlkiV!F ͽV8nb.adDmfNk^J@ Ȯ¬ċlaY: dy1dHY7V9{"J;%_T>~=||eh-QƌlKۓ~'TfED*wb=Ρ\%R6\&fMxC5AغJt+FiONũ"Y$FKТVkca*sI1RuE"pe3{7T9k I|I ^nxQe`jA,i5/@Jۭq$Wܲ=А([+H6FdQ AP{[gR>&]I>(71:f}#95L]dQaOԲ+ L)h[!g1Z%#B._{ׅrP࿂`5p%G{t \jSD8ieXyq&ZrКE 1;nqLq3gcDuYKІ (ƞx,08Yk QM]K;"[IOSqsGEs*WaB6\>|VH֥Q( qL<|@59FA ۹/nmwOɘAEp^m#FR{onCӠ<1BࠌD#5oD[zŒ:TpĆI9BJx5`;x k5UMo= Viizt`dgtc!BSmHLN axNyÝkmDXh>QYg={Xl"Ѐa&=r5Ũn֘"n4GmT R.̢a^GjTݝcKN<9F_OHG zqͫv)??_3!" s*.)}K+H$XP' $ss!ڢCޘm :|gd"tP&rYup@"dG鉛%mٷR!1@fc͊4)h.vLZ"Q0ԉǰpX'}}Ɔ!qjk!WsŽ]/?,F 㞇SEt)S!Q53٧@%7 |fq.W'QV? Ksw'>ٌKْWhVR3i>J]Ā%d7B0*Q !|s!oy*_ ?M,Q|^F^^<HݨfqTHgUտ EF(N$rx~+ʲ|p*:T0mBlO%xP+Y ݃SV_G; df/NhU0DA(XFM9r O?y_[gХVKH`fxgO̳}o|3Lj¬9gn?!$?mb~2RN'?r#?r#?!9S72B8>Lzik3UWNhk7`~Q6?hj5nwPv@p"74(_URzIo N9 Vltѧ>ͬ_Q;3&]**vх8+6+gB{c;EmY/kKM}# ؍^SEw0}4b#lR{ i8uiE4QEnDcV4HW!4m -vϜj@Pv@U8t<+4ס-5rklQYF bɑcF'T^F=Ld QH`E"sb:lN(Cqr`B5>t]EƁnE%tXw5 ~6Dg[8eD`<#*TB*QQ5h**>+lt@ŊDa^ g,IUM c "NpHVh洪 QyXI&~šULˇDjS՛0\(t-`OMjB(C;po4%*A0ʔo}MΆk7FHVD+qPHzE"IG&^15V&iJ^ SN#'w]6%Qس4Ed*оsV*>ЦJwxTׂ6z;HΨ‡g95U{ *N']ͼ4ͰPaEw( +Hzσ67^? ]9hYj m@xZTݔ&a =&,_Y:6 !|i>O#1|" Ǣv9|s "EIN_4T)S+)26F '-:͉FU\Kx٫mMKڔ~%2ok_U+Î76ҷ->æim7K$mC;abˋbH n quZ4Y7/4%jjW+4mU+zz,#\THcޟΐ4?Ф6nhR40_{f$ӭ5b$K47YLWSth)mz泬af® dwK|~6C?\Q:7nљo(3:uM\u=$!D^?W΀PV\S e;QYIrcUByqHrpQDO!ņvzn oT=P^D Y{#AgwTǫEuJbn]xP=<<BpMCBa<Fk M'H0M9 xF՛N34S锰DaegL{^Za#*MYK2y,U1C`P/$4'3CGpcjt(ؾF*(ԤRzcje1j2YR59B;Q7NiMr%Du.Ri&n!W8Fݩ^1k=~أ/ ]P(^ŬyR[I0 kӀtT. l`{wo,˕Zo?9PN,93.=7sh 6jE/.$RJۘ=v"T;u[tUFWa 6ǘ?8Ohׄ#- Y[vj {Pən^Ek7[2'dz}7: 6R*-sQ*{"alJuoQ d3c*kM蝁)Mj/Mj|+_rz㖌嘻1o鈻Ͳ`K a,aVW$%[eq/d uiMT r'y"}rs\nḽ*_)MO8~QoaIiXF 0ᶼ,k8 )~fxC3;lA1+6 4]7 ѧj8&ڳB]`]O4/LaX0|ȸFğFU|Y*j}i1$(Gˏ\nw"0Dӱt0)=9P[>[zACy]miORs*yT8kBPk1lg$'Х%LI*8,W/7TQ?5!Ej.KIs&Wпp Qզ m؟fڅ94_-P\ /U"WWFXlTkFw\Ad%5?lI;cF)6Wq{Lͪ>E *'C? ?(y,Hn|srI*1G&s"p/@s*TC>-B혌7qeG*5J3Z }LAr{ʰ@RQifQCAb K F 0BdX-~uo"^*BTĬ^^3NZ+t麶nĨaccK|F6)BS5S㍭_zFEKbZ nNvzĘ<0̄FaKI#1, Ujeg'.Frj!Bò{0цF|{<6u:BC-=I\<'數+y\8OcE-U8gڑd[Ocŝj9,/;tA{ܣK_<92U'N7>*DKj>m5 la`FN/2sV9cA+&sNӟ#`U[K,Mym/ cI\VX+L0ANYBQmFl\^:ф}/[7g;-ML*e.,y(9BK8e_Bƺ]sq,GiXinz3%4'[;31*W+a_an(PclK7v'aTFGUGlk/xŘDѠ\_/0@I֤5Z"pE/ik^M9b>@ۺ6ɘԼ )ySi7ermc O~{BZ [oy?&NI~=˷-a)]K3ghK]=+}Ee] u)Od詵;) WO` ZPd (NXn21="RL#/d!e_N(GI{h!9FHUujlĊ?ƫ2iK[@-Ꮭ;) )ZV\Awj{dH/p[ovNwR`"y% +< A6`A{䂚 ߪ >ܜM|ljL MSvSFɰm8? -3J֖jga .3¬0e3_ S^V//V2fÙ,t I?˧e)2\0Z4zX`+$v‘{9nAa%U{zvq*m u#}h[1g/0q SXCE cnhm]O7m#Lp,@ iS8Tehk].`8d?%P vg]dAw/ҬK1ʪ~lMѫ,'tbn0mH̥`%q8pZBO:\h.š=x#ZMeSlb%87ƽkSk~iXm,g)gP{-x@ xmPE`= &`͠3#&D^c+Ѥ1~.KlqӟoS5(G%m8y3TP~L/< Û|tI͉pmQOz]C%Q]av@Ky RwI\w. 1Ԃ:LJǑm!$ kA sz~%M?'ā`OeNQEF/ /`p<Jw:ͣ kF5rAp;k0_v@q`M=G{yGwVI3Wg ;]h@Vn:c47[!SЙ'[fD}U܉Af L$՝# zx3qid`2޼PnMPL\&tuZsd:Uw]G$RN0TnQY &O, #GQNc:ɦkuOhBLP-}KTDj4(lbK3Dw[u¤'_O -]0ESdth6E+ͦ)X#tgLΨr-|g-{Q} .k*d90nE~a' &ѵlF`RDmiRxS.^QMHi?Uw3#_}K?%,,'y<?_0DqO&Ps)<.v|C^$ o=k$}Qw%4>aqv FqN6qcQQ*mo6bI]u7}L@Њ'a6Ma  W qrvse1D/07~ュ3PBYWyA77 ~Ģs`;ۡ[cp눻 6|D/3?8l͈@)NI%VP"?pJ0˃ _̿p׼Xh+VͨgxPmq WUn˕(28s"58F786ҦYDj]W(Z f3$,G!g9}k·&}k7eۙBB\N`݃ot3^.f`I D4Y/ZGd!3.hS%0]ex%-˶"``:Y7.;B&U}5E'N洱u dVkI",)+]XeHkLj*!,d^؄u'SGl}tHZ痷C k+@)",lؚ4TlVoVXA%r d,տ9 &HEOk:I=Ӂ8'MC 1?ÃQM& %W&6}.~oϧ$po_߿qVWֳn5fJ}>h‰U5Lv [s shgߚ?'nۃQ-@-O?H@9" | _O{|>YÅvo!T+7&i7Gѝhxw<OA᪎5OVԣxjxJ\8xx8xڍxHxH؀PNnsQP,l0?Z!mgEAR],9~}Y,n­Sg}^wQNx_,;9<;ެ3lo)^?f] Au;C$0s/ g  ѨҸkPu,?l4uwXV`2 \6"KPf1%r"Hh!PlʞB}.Y1~n3 Ѱu ܢL{ s ̶]8~c4h;K3Fv 20\‘m}1>wԼׯŅg {s}/h@eng'\+I+k&HyvEr; R tG62W+x~7  up"OM/* o$#sr er} 㞾^9991=Rq9E^f~3M]=04nᐘjvVG*uNm6Eިxb tnrA#-hx7@_6> LgTɌY[| ,!ǣ؀Td} U'@gC07j;HԅN#(2h_W/nzfةdS\b 7?q)ܖ{EL.zZg:&!{DnLޯyL-bXRWKvn+fLD|1<9\,f+?YƜ?̖/-X#+>S_)nAu8_B(=GԬ/#6n?DsO?'O?'O?N+0