#!/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=4c48b7babfab6017038114cbe427e52a # 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 \mwH+z<9Ř7c', A2!5 1pٙnIHBijw/UTf.>?Sçnw.뭶Ƨy\o}WoZv]^;׾c?c;qPuսg_]-F^?hu:_[خSeł>Ͻ[nUDc-<{p,9kef;w殷+\3:kskUqn~F?d \1u,& BӖN:ڝ;c6GCMa$\Oպz220uO 2weL$Eeg ZLSJwB2m~u@د6R*~B' $WB): XzT3؞t\P6=&d:Qpה[h?ԄҦB:XD3 ﳩ 2OGu8(cA;ೃ=6 0BC{}L*4h;IÊP$I z ;US6UXUBp.pFu6VNJ̇aP]ux Ţ혋5"oz*m9sܾ*tUs? ƸE;VG-j@Qg?z6Uˆȴ9QLI>TJ_~lVrh^ oC^ /v`x쐜c?JvQ9'wߓ:|j\;>>څmwd*?C<ӯ07ڍ7& dv*f0km,ؙ;o@&w|^e5'zDK \4 wY. YH9Ċ= X ]^=qR2EFR?)SB*HsKlqSi8I!`QI /fE"@=)zX_ 謨ѿfgb91E* bar,'CzQaIdީ$Ti -ja7hQXsckv\a(5+ YGf; JdPyT"YeuVP~nR|ERHʡ_Q,dZ|]ƪ'(A+fyf)A諫v~ BOS7 drzYEg ?(vX,/Eap~:@&swK]w`ܾ4_ƚW Ic+?UoY/&g@# YV;M(aZJOho03 bJףxIb1a=AxR#XK63YSVWs?aZ_@ɦTiQ*:!ʸ6*ĆeyI*g7NFime.R~Kр[oBJƂ*5re]2F`&6H7V˟Bb0$I:eZ7kK{ouշE:ovdOsXSBʝIT,i!E.{ ^d'p~{dhRhӖFk4<R>|-iI+7/=UKa8AiE1œ~ :I-p+ dr^#3$ʓᤵ6\>b-?ǭKÿ͚ڗ H'4lf=J:YsK׳6%kHٽ_IQ/Y߭\ $!(akܽc'7S#i++~[^S9Y;ɕ6緒ܘx521{&wQZwZÂ<%Js_m2>JXx6HٻQc^/3 (-:{|zAY~Ne8;6g'O;l&Kߩx̵|mj|hY<%N(OM+wa;)Zb涜'aPiY,7*<1L9O9g'T@o='y4lj>6ovo~vw˴5kٖumxΪhkf0G:7CՠkD7F/0 ՛a*RCsWY+NU3՜3l^ :sʖv”yKHKN'35Bcraׁ1˟w\{ȝZ%8}g|b{|d@YzeP&5zWƺA5|t&zwI L@faҋIfYN<<$'2hPg P;.}GmhZ*%4H(*#b!*J! k#Y4Cʀ}z,S|Y?˪b΀鼩*}-g@W>3CxP QxZ\[r.L]Wq7zڭMt\6(9zDn6w>] Rl!fpJ qdea,j}YMKȈUy4 >xNw僿gDI>nm?|p_wdCY0~M/^u~- .}=NBqi JL\@_;i-ylDYf:]h[pgWʝwu sVZdgQܽl&X\Fg ZGcmgHEI/kfT{pePgbߙ5b,^f u̖|@f@ ykǡeH8qd HJ7ʵ2 8]l M P2C)Ms4yV:g8l+͵:x\69Ažnd a!Uu,7UJ4`Dk//p+~JxqL~.6ҡaUýݪ7mYv`AhxdT^:̑6?C*P%C-D@mi7j셜#৐U6 KP:jWT1I&:lLڣJ! s汉v;xZWK=IQ yǷ ɋ+O,_Y*a^=T$wUD_M#IO9 wYsTPWq鼋>E61ڿ)5񛄌FA"mo>6~{j%ѵ?7`Vi?ypkcK1c}e4={^*ȫFv䵣z6;6iO|:h?'UoZ_FA$zz|ޘ5G_HI$Ĭ==?"AdD_ " |`[}tGZIw dDwa:] g }eP'F ,Xw2[M˗DFo)X:'@0lo`{῝=I՚\ Ed ꎦjz38y&D{&d{&{ȾEF 25l^`\UM+J|#:Ъc?靧R \W z45$3С:Rdj?iJYƖGKӉQja*4\R8]nb0h2l m2 Kj~h%)i-G BT?b}o 1s5Vu&mh3bƔ0$%v. Fhne2Kdb}ސOV[ [@Ax 2jw^pc`/=ZUNtǪG0dk=ڧ9[UF;o-}+Ԝb#l@?tK9H)f@MY4ŔH\R-W.* wMO2iQ 'DxD19Ỹbpፐ3GBe29Q̣! qBM=>H <~ދ+wӧTTx8+0"fHٸ[v2P&meȞpXUz O(Y 8{gv1e1("du$vE+BAĮ,H0Ľ(}i8e+ڤ7k-Fǃ~sxQD(rM9g/póP±F>/ I:E"2 F.mS@FX3RYEIQbv3@c1;pCμV\sh I鶔/JҤ3cSp2HQakK![FC DCz9Z_`niq U3B H)m4c}inb́wyg\<,oqSt$d+o9ɛeC#0q^nEoR bi8PyY¿5?s22i:ݑ9xp3&~?|'C).zmm\I_SqB$ b`nmS\,u+̴ktV3Gtۧ"IJ|%Q"$,PMbj.=(Hm!($AGKcH{YLҀslC,itlVvNqDZ{UkWP9-pƃ`p@n8> S7cӴJb #=$ ͶnUv,)|lU%ߓ}cW[gg{gA}g[4n߰& ·;[cS*>OrkhS!W& H!Ia#$] 0 {?'{IdQG PEP? 86*H&Bl8st%r7l'oI}ٓ!2lI~8s8fB<j`ƛS%ÚԷh3@ѯH6gHh`"ڭ*!gT=xۇ;f~|PNj+jaro~#ϑs$DCa^14Р^}DC|8vLY*i;Nou a3 q3֐|_^LS_ 6k Ug~y|R{OOE)kEPUr>MF!L{87:U[ܽT/?!Lnyn"dCp=͓MD~m~zwM^?} Y]u\mhm4Ehiȳ{؞< ~ҦCZo׼l ɜ1{Lɏbă~[{%>5@\t>+ DZ.0K`;yI@UKlDֳhL⢈7g0{>SHF?Ԗ mhgݱAr:%ҕ,Ge&@j8j@[Bq:iTsHM qqSKv(jk :l\}㝈 ~"#f܆T8GBқba ' [*VDit=&(BYlGɒ~ӟ7Zdr~1M͝2,\7 ARҢJAviv(Ed;>ѳe<.i0`"HNя9d[125IT+ϞEeZ=J8F>%fB;43HIzb NnGdRX,))V)$]˾љfY  ~6iEEcO(hfePMS~͊W;^١qYD-ѢTuGJ\YTr$Gt)8;XLeI;RXϺZ/s,oQG֝*eU ⚩Z&5}8# eצW dywy'#G ;Tߦ6Ȍeտ5o^fC)?apOuw3J ڋikNv+/&@^˼ ;ކ|J+_yuPXœV\%vwQjU:ߑ''(߶WnQ)])1aWHW]zf4z5BRb_c<_q`޶[\X4]tbtbiEJ4]X/ضq%y\@*7ʚWP]OSp҄FNRUQ1v Dc@+ eeCr$v.[G]_bR^q|'M;Eh1" p бFF]E!^d|b]s*kBzDq頤I ,n]I(úؾnW3nf&,YFF 9{mU™ah{p2:$mS|dۉ(dc-4PD'hQХ/Z`F`YDS!$i8sվ00ɹ8|5X6BHxbc `xIˋs2#4LkISW+idfXJP)ca5Y|M>m26qMYv'V?}?=Z>k|3 ׀P3 7CP3ߟyv㭓}E2pчApD_'(-Gy'#6)c\o+:FZY\QZjn[;;)t5XRWȆ"ׂE *qNhH`RN$/29ݦcv_omo׏׼M?|7¾vJHv/U3NH` R")zay}Z*S]Қޫ-|^z̹_:}Tz$>xPJwG/(3݃u怂J?xx=KJhS[-VƸ[ӻjAzhrqw3 ב.1(>^\?:1M{<`O_ K8 4݆ a?Ik}.Zx2m>y?\ =yC]|}Vu&kVӽ'1PT#͸؃yd%ZŪE;Z2( 㞈7ŏ}9N<OH_9-V'O(5N,+8FAYҊ*T;r3~ z>]l@ֲɷ{Фdz=؂*!Lаy9)7x7Ⱥ@L-P߹{I[9Tf)¤q2HJ!Q?1EOCJEZm}i ò e-K1GJ8 Sf#U QXȲ%oOPR%(d?יk|֘U@!Y]K{CIhDZv?zȷD_Q^_]Y/Z_.E'5x@^cc;e#.SI/N(I[VN|v'ج^.}SzUFKېKFT [5sY$ɶ{|1d| {Igct7GZQ!|,Zڂ-2ZjFsEɨ] AW" I}왓z,;a7ZG @{Zc~b5ڨ;EF~m?c|aW_ ?Z;2S3/3ML<43M/ HB[رJAtarL!ZRo2JdV̐v՝m\?& I#OMNn0O`m[?"K=9oTyd@ XXUenXĔbx-e񓛀H EQHWVL2~Czx5:նTf! )%rQ#V !yz(ӕ[1ׯLiasx-#/?ܹ4H/Ei~U+\*CwIY896̧T)&`/ر3dE$)\߆iT7Fi0Wޡi[Zh*1) m&8K*4,RKF7&ߍ$? y}nXp*SݨT08؍se+55i(d+F[NmžP0 1Q$Vѯ]6Rhzc6tXpq?`NŸ覜lgI=ό p/O/AlLTvkO,LijnqxtA:֪Mql8}vԶԣ.gI^n`aҌ/.{y!:J&7A^Rs혦Vo^pPGk3unkJ={aۣDIK|j0ayA͌{K4(]ER{ܨL/j✨8v]Irblo+žd@70 . '_o1PB@]nS3{kNy٭U#%NDA r>LM>oS綳sv)O]!kВM햫[ |cC@;.0aQ((KpZ(p,2]"i/:D14tIiJSZOP%"RxRd*ΐ!Uq\/sc/UB`q!?#cq:91fņ Vz gEyLXw_b,UV~2+.rVք">XGS1,RsvZ$RM z};JvQhQ;sHi:@bB72ŭotPah v(H('Pfc-6I6$nc-%$-CxSVw=8b*~CZ0RZ1FǕ*{VunKv/!mUڑ^~耼3ɼOd^&oZ5@@+*OՁfS D>h.ݣ]8u$>6Lp:|@-{f Kdy+!u/I.WmE\ow`;Q]_gDxUrn|丷*\:QvӢ0Ա]#oZ,cS4 u p<ucp4gѰj)^l&Iyi\F &iwua|70GT)˫b("ym J5 ö0hW21j9A _$Dӑ9.`5`1bKG9)A"Ч>5 `-v{C`|_Ғu &~%kͼ)1Ӑ,n}sgQ;" }YOü!sjWszV݃Z[qFxr(P=qzQ\v@hWҪێ^(yC4ZKK8/y uSw̔lƃC `p|yb&bdqK<˽ipsHUOjjkv^ǰBQ^i@oVWXBvPw#ϮS-Z`uVիӬH KkE(=o%1 c5]!3σR;%s 1h S\; 0s^s#߅ 4|q2gǁvzŝ}%A8>i~ɘhgXו5>o))M+gU".&0n0\Q$.4>& 0T"n2G1=Q^ Yұ=`j.+dHȓ,R,52ѥ5 ɐʠ"_l hwI Aoƺb)ˢYoڝ`OL7jvB5 %P 61-(_\7]UOO2'nnpMK9Eι^;onШY De&/ꡗ{mi-jrjRC}P* 1edQ izl3'c;5OړCg3{f=g_v]($`J:Р 'oi+o`M#$; 0fI}f$2JRF`ZPhNnɃlb˚NxOeiqIRIH{%veRS?J%eSj &)]Uq|=q9NYcKp%XW(nkD>n-eMËҠ&[+y]rSvǭd#v|Jc!DO__W"&1atT6iK梸!ktAw|'{7`g;`Gn*Bb GZ.4s R~,v[:_k^*[8A]YZq_~\~^/qbݴԄad^f-O}K~c˵wq?6; XP[*Pt{/G5PlMVt'6[ޞ:FDH[S4( 7QE-T$,+8mAmYjG]>lv]SmTڭ~>VfY& ٜ hez յ*i] rM*Z<%{J`5/U'n^} ɓѼ\sʜ ;6N1d34q[Kg. o}IH fnRU#PИ8{۟ gBo\AI'(oqt܏wP =PkaP-Jna(K}l?g{$?<^gggr tK~[W/ Wݘ]S>>##4}n0CVL.{n7Z"nR?EaMv]Ւ#jxʑP+?,riVτ"$+Q 89.'S1L)OSrY#%W'D“tľɁh\ODq:hm | "jcc,(Q*qٛ.=;9x%3ZYL/:Н޸/{HaK3Y }g~%j` <3E2,etštȳ6R;MԼhX CXM{ԬtձZ!?=P&PPՎ]%RΤDz 20V?&@%,4w+CՉj!(Ò oˋ:a8ٴt4b6wL S+jJ-ۓ#ts3z==CyJaK# {LCy}7[cX3;=mQdD(~{S5 Cmd}hoߣTe3Ȳ1@בQ.&3t:o| [4wBoGȜvRT|7L'P.*;yJ7lISfPӖqvh, )t{K+ epQ!Q,U'׮<)oy* r퀝]SAPuۉބ㼗\4`y6H1',MNl;x{"hz rHFׅ6&԰L2]nLǚ#!ٓRv  rрξe~3U"JpъdrNڽt+N_bٝ~CKOC'>SYu -jvR6n''RL>w82208F^> tH^ЁAɊi\X|Wӷ[FWQYObٗc''KE (v~g au=_+w#hȨ׍TYl_F-Vd} t9jN{0VX"µ|g^QPWwj/bDitFnNgE騳LJ /]`H9l?3V4NTMxM)b@^2eP{I)JV2gb)wGK~9e .v/X1^@Na3+i1Ɛ]Ԣ};kvې49?ॷSkVs凖q&[܊lD+2}-73UN2V@*W:͚ 2t aQ}c8QYx#,(! J#xzf470`rb~Bdǿ D +ZRnAF2 Lwg9Ct  ǡG̡3k8eAf~7]JxHOݤ᮰p2)ׯܸ!񗡿 RPG@&>=~ ?/qCsG; GS KK_Ƈ4|xzLhDGoߏ {m|f{g{g{+{_x|(O]i6`B'{5)Md/qqu)A$?WJ^*uJ#W:bj ׵aR{߿d/WOoɺZGmgu(Ԣ3 Z$. R+e.FZ\xv%`FmKZ粢A7+E#q^}%70XڇdĚ/,|e ~i%4F PZ $u;8ăŭ}w}hpF`.#eQ{#% 0EI:峁L9w)*E?!@Ut M( \J!Fw:#K ȁ̌.ڭ95P=ҨnC_lŸ<84* 2TvՄR;yHmRb雚Fg:@SHMv2͏қ>4$X> A]rSGeFoW"P#%~e#E( db Wl"*vNiBh^RE*9)@∋[;Ǯ-\>OLSB=!nV6|힜?ַv$mH7;lsh~W͎ wt9JMkeŏуEn0 ͆*~y0M70b>5Ta ޺B-e!c>oF\<%Idp:cgu#jVrB 0T=} ZWg4Ap'H _;3z- :$AI ,D6zys _O-<.Fq!tJPx&qՔw"zς[smHD S9u6D;#iG֣N, $sޤ$$+5/Ew ׬"@]lyw#WV,YnL0;J\Yůj8ow#p1Etwe(ڀ`IbV?X ѲTgrZ v}fMn-"БG1q<ѭ[g$.쀎ކ4g62EU,+! 6YGPkK2TL=E %"% )yPHlp= _1>;KI'u#bj[iW~ǂU7\vF+ 80Y>s$C`QdJ ڨ{pL?5%o6:8MCK*N)_OE7.W t(ZW~\NV}󬬾ރ(`zP(6 d+~yt|Q~PnRt̾o:hl>'q' lybg:Am?+#1T# P"ywIoi\xᬬԞ]:d`PCX_m,cSDdKQ:==֘xn&pƙ$x+OoVGwOqŽ~ѷ^쾌I䑚sT\'RySVdžcO(zFoڔ1%&Yӆ3o% _Ч{iq 䀎Us#$y,BI~ `@Vnly hX# ܾLHEv/9.|>9&R1lN#`>izįg=('gQ6QD#-UΜ;΀ ;dp(|mRkQI?M*Q~X1oIwB8z"m_eYsbK _#Chrz q&i5!Si3W'"jN" %!y%GNS(*]^d4dhNô D(f Nm7QveG}1ZFf^NL]ޢcGi}~@'&>Cm .i^"|rQ!ߡpR2 pEo6xQDSJt6}ڝ1GiPv#R4Gb>@s,us %29SFŏ<I[ gp3iqY`3Aw-U=# Ph8TuFJ e6ns[ by/;Gvk8SMouCoµ+-3*tW7l6#J9]mZ3D2fX+K rrDdL)vvO'D}E8 )W>?ŰE]$0{EVj*3Ӽyl:,a opl$cE s uprtd8б:ǣ%[;(W`s/"~gM XN-e'{t ^qϱ6Xòv| y/qeWcI;1,3걖v1Zd)Ĭ31&ꖁlL͛03p8VT_$<:*QEYD.fy![NWƐ"qN&O ]\j, l4Ig)6C,զ> A<ј"dY@vL֝&uΖ8֚XIm%y`UN`\G7|ƣ7,kشI*@Ep ?r0zS#m7OӥwZ1Ȑ";!_>%I:pZ~V'|}̄.-RՏwOd9ܐ{cIGuQV :*KKZvi߲>j5 :r!7qeWQTeY*n۩T4VO(Mt5D"VD.5"Y({iiqE9x+3GI!h@{$3F ۳RfɌ 0ߦʡ^SKt#L(3сMu 6nã݃vaJw1"p%!h_M-nϽЬᚩ}R:<9Z74!!JQװBLnۋ['5O ^L—‹)Z(-%kBxB0mB^KjX]v4r\LjH>=UE{v3Oqln""i *Pbd~XFWLx%FC7Bi?Blfu6bu.3h0Qz$Fȗ?Xmֻ, =XF$kvO' =_d`Ϡ_8*Sϴ^A &;`L Ea}N4f߀7WsH%LPKnk"I9⃍<{V&\4$Z8P= ryJz[ޕxHݚ5^ߗ3&2Pq2f5DUL-@[$N ۽yQ׹]P(5n>3\U]3r0[-ށ?`r[% 3aGOJt&.vsgtlB6sO@gZ+FD1"^ Є` ^m !|8)$lG>Vk"F@2% \f2GDŽ,YmplDZ٣PVYg O};u/ys~nV/@.R_5Xި>h:_k_MZ{QVBmAF"D; 1+:LZK^HtK'/ON_oJH-_/Q=TmZ3mM!yH{ 6&5NN@^3;p<r;?"P(i&jCk<$-6Iv tr/>{O -Hk9z+;N'\=lo/ .Jz(>|}pjQrvT䶖/#|ޯW߉#],K  '<9HzUIA'f`l"r1{a\q iotW&t glj̓nf.yJLkbmx2 ;LT#2& { B7L' (rtM7jٶpE MPN%ec0)u0 N4\uiGB &!SǁT 1Z@b7'Ft(6%+1&,Ǩ,=#ae>t>$ZX0+֐mC "Lg-xVS{Q tv1jtFGj-}_W^EݧnZpJ(Ʋtgb?QcxYΰջh'e:iԮjM:l'!p{ڤq `Vr'4IyKWJ=V| ldu~J{W9k߻&98n-TqHot)`5o h)T਀&.GgTЎ6oPXmČlPOBLeΗu8nPVa#/n *5/^Cة"N`vVTZhBU,30Qa{"jmb/)jׂ淔*{(TqNt$@: EՎ|ƽN}P-#~j4w@VUf&Nԛ]0{?JffS;)]%ÖXwbۂ70it]ܧ8v# txlxY[m,`bo% h=! yi+P Z6Ckjx9_a 'W戮 Hи `S+xi R"N/lΟZ*%ONBFc_$gsvFBl7.ӦsSġ lsAR5 8{!!ښ4h&j=4'>l ?`'aYu>~!uHi<]$8z/:oSN{nٻplL9 M8Nd*U>g뎼[׬-sp*8_YmZZM i`<~qF4Xl0'.+.Rn?ng7b8q+&D'/>Aϥs G}RR.a ;BnGrĔT[.<-_<3 ԦR'RF,O2)qaK5XΧ/l}Dt-p^Qhaxe&<G$me65-F`IԼtmKϘGaߢB^—HEZP&wpnӈ%^[O>Ov*L24((Z8Zhyc9toȺgAavp@*L  #aNF!Ɗct/TiF %Y.h&Tw*H Ҽjsx8 kd Ýh=:9psJlou%{Q=Óe$ʪ^o)3&F`]^Fh'd Q67֓3s@H)iXgLC?,@JnzK(;R(i۽oAl2àV=GH:*D>IYϝ-/EPb9Qb :)㹀xn.JCWT5k.$X=[? YeX /wA|Mg #? =;,zx85V  Vԟ:5]Tp9Gv0m.B8斂ie{yu<2nd/XYHyvu6W3q]3MDwXm tCZ )y}- [ɓHD9"Ph=t GDջmA/k֡OfJ i6 ]şmalFڭ]~:V>~ͷydef5>3gf3f?3/jIxIպlDOSY; `s> {ص[2 =gQ$a1[L3@GwwPV.'q ^ux{눇pidZu^Տ[-5b٠&E`轎~`q ~/X3o8C1'~$?O UtZ?Okx 5?hosNMm{~RϺ䦾#Iiho9Q{o~È=HLT b4V3TPV}Qn'fM Zz4 M𢐭ق,{HMgJGR2U1БaުTjJ0}˫Yӯj$p).ٞ.(BRӖmsB]TAXQq; ln,4NU|'J6ߒ4W,"0$t~-)*,mݜۺ1NWe50F] ||CL>Qq9iI?qFLwGb~o820ouW NzϦ׫к.}v[~y۽UQE ǠxU Osz{k{֟-OtKցZt+?\_/(/(N- _}ɚ7k?z4}{t|-'謑^FT&j@mu:%M Dʸw7l(;߁#ܐ۫:>-=Usܿ-;PrĹ ;pܿ#oܿ#nܿ#;mܿ;lܿ,2ppC_Jrdx4ji}2W-˖&Gil{ryxhMHL׷W87KW/ロGvd˂o+^?`O]:FٔڳVrw:,oNo[Eɨ GҸiz.cZ(<[Br0FܴGùG8Ţz4 b\?PrB%m~x< Ϡѝn7pZVNk Dչ /e?{XNQy~$U:qZqI'^oQm|.ҿeFՏn}RFk&SwN`_ٓa)"en20M+w|00 6}?a /4) ֭cDeuh/* 1w;D)V2PSSy[I?K"bY^n^·TO`S2 CbKKz n<=F\ TI=}qV!QғM'ѡD4o-wT~9'2'1lpl~G1v^{Ysj ǰ*ju 09G*JV8۶2Mg-ry30?0?=֊}Si=c`0t y'T; E6:R2dW"}N!OVd?£8̐@V|>h$i|:G"2 MV96ܱ:^Zؽ9YÖ¾)ݥc&+Ja޵G&xf$#QqKC*^mzSw,x7g Ӟl*(㵗w-{\Nzk`<5<-0['wra'oԝ h ekDswڻ\Y=K9JL7tr cOfy>{%]Lj?DowWOR; ;P㵙k|dAۦ͹\t9(iۄ}8w>\j@orFRXR$v }fg |?my u0