#!/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=322e3379856befce83f4504a57368ceb # 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 ]vh1.[nW@ӿiCd@ei@g묫fՎ>#)1Z[  8j ?6VC1$鴮Z`Qɀzv81GF. ?m8&ݾ664$dllLzzo Hkق&~f61ʂA/5dZ( $`#Jy%=_h}sZԦ`1cγF`j%9iu>HC0ta6LtK!xvU׷+8v}E;Z5a[318YZ5U=#Cժ35<×ެB6T @*ʇXYY rft/=8mGI2Uf"Ppa0h>Xt %E(@`lk@,@$uJfe!)G%eg\7iHi3lWcb'sVȊ=Bti&rֈ!%Fs䞭8G ˃ t:DT+`IyIT޹1x<]- ͵> ,kx$rT\[ah=%FI,KJ0 R)rLwEL4 5j2b2ya771 4#1>5YѴq8wF{E6stsu߯iE7V"G ^ph2I`,D,P#H=C̰|k//o(l,bYjYrYg(ͷẀyJf@,53y}s՜ח̀yff;^8穜Q]Q:cZ9 #h*Fsb3Ȼ}mNK3JZ4-xoş>[( 4o,vʝB4%قccvqyiW0ORqIiE^sc,o߄tڜEU6NbHJg"MD6_ewAx늮JyP2u!Hmg9uxYJB{h"Oi {N|WzUfC G|ݫV!A!H3]*Hje f~f\YZՊkΩO8BH6ߎU<bAšE6[ޮ@N7lJ+zS~:f֠-r{Cܶ!{XW~| #@9"w̩vi7!T)alw%J%1C0 d![>';ٻ \Qգ\5`J3Xa, j$>HNO~ XIe|5RKV($R@b؉gB^]hm(֝³EWbv8tÓL +"DrXDq2?hez(a[qx:RNq=0@0!euIe:B5gV[l|Q)U SkjCSդmu$ڃrfti_̘XVȌ~^^#Ӟ *Oðo16=/fLˆg^ڞSrrZk6k+A KȚX[0fpovzkr8'xWR< (\r6'ڷd=p` o>-B~_?<<"^L'!RcYZbY,&8 C% ~N'ÃT,O#*"BI3,bVHdgA֖ҸAњQ6gH[Lt18Ψ›yXfh=l?nF/TtAW*?f"8>`H>Î5\* LkkjI+(PD<:RU ګ('49^diGA5ᬞcՠ5Jہo߄&tzs;Q,$hiA$֙u[TRuͰ)J=>bjdNrU؄/cs;Tqw$kW09>aPIaLٞy\ȋLd`Cd2M3<VxmfۈJ`f-wgF!λ k0qb,-{NGf\:ˀlޗ0FP11 .=%A+ voigKǔί9xloMNӈMI?`HXw4rzBkTbv jLdED rWմ1n҇[QMTm0Y%CMfL7^,gtj"x ߣROC)nNxtm[)w"ʭ_V` :u H(L1N`AMlM: XSqOM]e)j3Zd7͒tC7)=[߬A xq.dJ.r3*O}~Y1S-q#7Zd5X Kx\a`5:UZ+L8RN5)M>]U;x g_0.z'@TP~0w*|CW ^v. M,]sKcDc"xcpReFڙ[KU0zξ2%?Rp-}+^f{` -gO&ނrH\ W& &a8lc:!(ATMgqUt?ɉ&^"SM-'.IPoBLDI=EtF/fI4OsY8`(g_V@f ?6ǐb偑 kt G&" *!)7uIeQMMP_g'~oGM[]7]䖝4|wcʐ]+.Mp%)`0Zy J]y66>KgOV}gCNfMO ׬.pVKRH&kl,GIJd~!;Ƈ[nnIJ"TO`R2\5 q̊r11%%7i TiVo׳H/*d8;!]*@t ?b/(u!Ge  07F&IxRY6$^a°"켜,%>Lx#Y/ig9 1m]?h$֝uϰLmየ-ܖ8+ŇJ>[֍ige9)>5K &|{u1`HF`J^ Qyŕ qONJP.ؕ Trg[]S=Q̴FŮ1RgHnsKv]<3`Rʮ{f;gL"-cJ^>J][=N-3%{hI[{V8!$$ #69<6A҆]4h+?vcքuD+8ش9k~PlFB!e'erɗ&/h>AN8%9,.d]Vr7ǞZ{Db_R}[+mߊ=EpY!\GK.)SAF~=Ń ϗ6Bf"y^x4ib |#1=j4C|P3E${ڍ\*!L]žECg y6aq ,t@67u&kqb/Pz" Cn33JP͑],2DG*<ᡑeN#ԦU*yfpݥc^#ԏ׺KBMjpq.F3 OM$,*uO0k \P(ب{jovޛӝBQ;ͽ^(T 8Zz!Ba%AS+ vݰ׵,3Px79\_*q5N$a!ܬ,y+䂑U1h p"EΙǕh/ GQk #d&2ڿ!@dcem?Eq@Tc%8FI`Ne]tZxcoqCfM=.&I CJɷwPdYgL2#LhغRen#g$mF֥5`jʿ+nї_2R(p[InmFETWAe.zRJ@ϫ˫J°bRW}.~l$6!9r*뙢 O6t D 18{_$_Z}Vu*OoSs%H 0k暀&` k243s$ڹјی^4ze;I{y/Zc~C!|<3OeppxӃHш*S`5@Eӈ&]+cD5NG-/l*AX)Vp]P@hK庸b9ky&`uOaqG W'Q2D͋&JƖn)!9&x~A9p=K{`3fk0jxzU t>v 92K;>9V `ade#5} ZyS'_,?IDQoaAjz 3,[FMV!: ɀ`JO'n*ޖdy},4́צ08*iY3'cFon%L zݭ:pgJUʖԐ |y1z(f:yDۮ^Vr.E9nS],]$m-xs|LѷL. 𸠹:L¤7>Bl4>*=>VER}@d.RyL/??fes< ,BqhϧH߅CW"Rb$+"n41|H,CmPL7jb0]\4S#HXݞ'eY{><>2zqdjA.F |UjLK۞:'9zq5ɛJ&+y'g;oPόkLWtQ,zeҰAL>kgpK]{8>3 '2"v7NQ:i]j9aWIj^ V2ˆ]@vP'7I I9M d{O-)On1Ǥ (Ysqi%o9}a>΄oIFFkMm3nӠ5/[F8H1ŢnW!8`۽˭3 ;hJ1ZZ}J e}ꖶ~}הi7q pK: 6gD($rX o1F Bf('üԬXY̓IO E[(O[#G`F p jQwjf%`vNICa]v՚2p u#:]!q;kU$)H"=oOXsllWzhQv-%*M̀&;OR-E{wDz$ۜq 489gѲ$Z9Nn63w}]g9if (wwŶZ0`SMc*6m! sQ;x{MĜj[.ӟ$k.W_觜%6&3Ifū@Yi7DLy&&qe8 ⷮnb;x-V?cm8 W'Nkw=2oQt'{sQ>)$a4]&՟7V7.6E~"  6mw+M3x[Lg% pȞ$@v0+qxonDiGj:D3ң+shx!&AmU.{OW?箟s?s9{}ν>^*{3zPH_tA"CsL/mmz8~ j4R1P |Z?y3^VvǸݏ֘w 8zfiMF#8( 1CBbY4+@V$t'TSŞp CjHWW|`(C %5"j?%y*[H<ݚehkC;H@d3v+rS+QGȊykq'u^.VEݲwƅh @񇰦gwƩX*IY<3H.nGUi L/zlMȌUR֒G*Jf)oEZq{kn:;bf](0*49&Y<َlrn>ĺI}DQޭ;4[A(lQY]x(lYUKFua)ѿKj)ʤjWؔ2+ r:u 5-FŖ5z-|?D%YM9zU6Z_iwjNX+wK>8^4Ća' *u( \(-;+LfJ*l.?87ǻq R`dKu%bI ' [*ND2it=(B6yM<dg>&W#q XO>5Y(&a_ O\ 0 2Pg>)9[Ds`M4v} Ѧ$kJ:Cs$;7ZL(*wnxpc9i:Uң-#HоpmԁC'ۑ:J9/OiӭX*agnα+ \U7HL,< 'ׁӶtM ei(El9.bWwDNUf<'"9K0m<` ;)iԸ(AK8 P,,M@ ;[,bvȢDE|3r4ǃ^[ޢi:$aZiU7SGx0nv LW9g#^y=N]B2nWJ{1D85I i)s_7;_[8Jq~ 3 _]^^d J`1bhvXo o{w5uBxS%5QõBDIҵ.I*0q7 *=I`AdX"j3ӛ~}R2!md`fWV&* S8:"pcEҨ0 _Bӓ>۱Y(eb~`i#ϛAdh KL1W82x1!,m[ؑXBƀuJ9WzݒA32 ĕOmqj].(ϘK}ǦE  Sd6]݆ ~^y%Utfo?ɍDqKBj 4{fSwN^/PE7k= 69"Vݝq2r.~4@ᮆc/1IqI+1JXءȮLE"13 Vo2&=o'lkf]փCo E --ǷE *q Z@eL@4iEjd%lE,Xy Tf|5Jz.M#haYo/K+De9Z-AҜw@gz4V[Z4e%m'<$(2"Jf^Eڲ2L%%j>SkWRlgn񯞾LAlp6ckG[\Kl٤Ҷ$&hO=}pbw'8 2n 'iI3ת,fq{:t8Jlv;pyn(+KMaB``S 퓶k rVD3D2O90\`,>=P,'As3qFfd,cS4 &2jmwL/6ͪpxIx)ltGT=-@ fm![b oⱉ%o߅eVň 9Nq0kU0, |Z8%hƊ4]p+baϷVXZӂ4, J*WknŞ4QimE)d͏DGܚ-΍9&y҅dh.I)K4Qn4)Q*ј#ƨ-;[K| uO158)CleO=7~Of#oN.cYd(G8<nFA?!6"&86U`0,ܴΚ+Y*F?XO^N O'8'Ɖ=lRݏ D \Ld?/'T+ -Y`h̰[N=k~#7;C nT2hC,njyz*dIM2b &Lכ.oA\*)|Lu*uzO"LN8#<,gU55^*vѤ$d`A=YPNJ7۴Y y(X;P|x!D}Tqu4}[^}<=;s&?ѦOϰHG۾0ԟRNW53sgˣֆ4t4Ym{ MErh]ȼ8͂HGUz"BpF\g2RT=0{"9dM͏p OHT B C$#* 7l~ %:^٭4 a cb;)ˢq%P !N7ݍcp͝lqѨ]QIVjcu ]0̺|3fX9nh܌[`}{x|O&3Tɲ GDqAD[ %S,T(qv@vhu2'x2,= nP^;'. NBT+Lj$4@uTfm&7?ʋe5OKW(e׃/d(4 /[[~Јt8ﭟʸUlk2=5ojVƺN9knpf tχx&m~ g7֡UUF*: GS'iޠ7l9 1.Nd.H)XdC̄89%oi4+712aX;@t2z>دE]~ԽÈbd rn@S\єݒz(4nS}SpY ~D!NHy%?ز RォñWGK.;ERD^G4eso00laEjDRM^̧L:K fP;bx+,{||qduzD.l;]:Vw+u1Zu%%A !7NFB] M NAvԇscccê\bɽH1A m6 mFڡפj=*- =ozc{ Wc mv "k.>ڏi>b+l\wm=#p%_=Cg%w>l|hՅTNX*$t%.eTP8pG2PFU6R6UZ[YuFR"`i=`g;?CP(kҵs@EVg:yunfY"f '$eKj]~VWWyFZ^Po,y'AFZDII?lPjxjdinDc&I\ ='9b|YH!^LTS姯Gkkw_g.`8;Mrn I x+&dYOix yN[a+9'hk/,EaCAl1nƹ@Ś)]z`#˨2(U#rP46pB,0l k- iđtAGAʠWV 7.lٮyLJ,>֠KM~GP`3ciζqVr9_8vൠp.-N1[țgǑ%2]-1muyH*e5-o+tҫ+*FgVl#i6 p1JZ7˃Cbt&wGe9s"o(IDNsUU{[o@jk C [p̹CtU~:O(`۠A}RwFT @i,p96bTJy|B.S9$HlR7iOo}0&TɦN aJ _桴bQ4lS扬 ҃m κ{=eh?n>miE *M\%,u)Lil=,f_ѱ#)u Ȇ'0IDPD@rOr0QQKk6f;G B0QQوz#T‡`o CUDOٗm $ N[Xh6ɖ &7,C0~MK۩Qyx f^TT(j.0Se.F"xwTa'\Ps0B"!^D1;Dx) Ve vif30 fÐ0x#~] {:aၰ(h ^Z#AӱbLA#fB$ΰkeL~3y䙪qh-v{]~R~SN?1>0bZ8V,M(Q{28nʱ) PA@J. c1FPEȄjBT~波2+!({xg4_TRD]"3|1Zf &A7mrSGŌBM8S FLŒI ME~P8:L1M . vTR&09PF ! b  GaG LCZ+Pi½<{Fh8pOF1 T: ̲a,ݔÈɡdJ 6aj)bXB1q L'bOV ='>Wo*Cb/ ^Jv_3"4H{'Q7gSC,́tLq9hQi(Ar'Wdz4i7"x;dݐ܉E߬ʩ~"&F LJ)! `SuLU)Mv߄{"*Y0 ,ѦuG/vG,XWq݁ "V}rrl;f8շl=@wET0E¡؀HDHI1eHH BӃ@ $At@%E{ylY#+ߩhܱhzu{\ C8&ӣISV#`&sR,{ a,Jeg  ^rTxR j@z N+M+| _Vzv!1z;`ʹq a,a^8xW$̭YY, dn=xF@8hJD8DId y"ckIz);3Ad>1J-fLa*y;z"lIüc5Lu- F,PWHf-1+<fT^}iÃl֧vaw<7 x"(L8ҎZFT,Lk蝸+^Ad%5x0jXIhw[x~"}8N4`mV@Y0,w49R{0J;g ɴf|sFJcd3o1Ҝi#[iE3" dXZ|DWd,SЇBEbOkD) ;<49 M0*%ߴMh(%\ =flFEƴ2Jڎ+t麶mAmllIZ&Chfn㸶!>9e*e 'Kp?Ŵ9-Pg#3* GR):.FrCБ: AÛ64ek$cE9h1"a`9qv+M]z>k~or9{I,Vܶ *h'eB WͣK_<99nf٠ Q)vJpey*/Aђ. E S[J66d/5{R}Չ RXB>= A;/YmU[l|V[<϶B—ሄñ$Ȃ8ģ^ˉXpS&By)g ٸtۋRgLW_1ʖ@s2e](9B&Xg cyw[f[C C5hᏑy8< uCy%ꃔek_fcB#,!980U*'CF'[+ Lt8̝닚J7 yJ7ծaa:j/\^EnSQٵ[ӌIͫaX|Mkc\[ǶA<5@`Mb1op򏣺|rߵ4sDgt(l`uӣG+u\3AkъLC(RWo`g@pr,ٶ} ^_E%[2%46 ɐ7x*#95Ƹ_و8OnF$;)%lG #1v/p5zsxtw.A5 Y$ـE<:Sy*ڦTȄ Qx@ж׍WFnY /fmh --0 Z۔n=5,.Yr y3CC.5$cۼ=x8J! ɱf֌("/!Ie ~B_L,=5n)؋xreYx/Hn.1z9f50e ]͂s 9= oC\:FvЂdPҵ2\s*k<\0Z4Ø`Vr‘9n` aӒ*K=hO];$x&0 D15KzmK1g/0u 3XCFZ Aǐ⻞oGX qiR8Te^i.((d-/@gN ۝yk]-cYkcXUL\SwVyYt¢ènq6$Rh?7 XCp$?%D&kp)๳Y8i6OӍ޺`<H=C}6y%VY6< J6Rl(ď&bͨH` v*),Qis4|LKg  D->ʏ:x3S܌sr򫢵:7\%}?Y=MUsZ=TYJ. W`ɰ}ZTGI)fDm{89>9qm<(#|@P?pԡA$=ؚ#B8 ֋ϒVAͽ'6 s_@h2Jo& REPaQ ԆdDIlc v f/Sge }Թ!ehx[;' 'h@fn:c4S1୯ ǯ9Ȫd9CUQ#KI2uK1rY<$X gͥm%u{ j^՚e]&turd;LEW] ~.* EyABv1r)t)MWL) ]#o)BMX)PHMeM4Q\qi|Bn{4rh.di m#lnvFlMC8 ^qѧ-*R,[ҝQe=Zg*[ e>,5Y<3_090n'aa%r 0Se@&UY!]։ZK)R{cAf͟upM$Q1.^FEj'=v@øx G -l }(=$U$Rꮫ`v5 q, GMHD ;κw߼:c^`7~oﷻ9xg_QW~vmo.?='756>"GCC𗿌7 (II8cUYDnC0b7BSPUoQAnR*2`/_ioi?T @yf2\iygM>F-UK"goUdTp| & "-Fkge-l7HhYЏI!}k}k7eۅ""TW%:P"G?liH)8LFV|K#yC{bdLZ-mE&$.\VJP=U! 8Y}˪Yݯj$%Vd(waKjXf*p=TQ91Ns&pro$HU|ꈥOQp쬖.G!ίEaA0@e,ePg+]jm1qɩ x3OovcuۓWKTiN{-ɜ{uv#HuyD!g ԑAOԾu Nzf׏u]~ȶ"so\|z{ko\:4Ī&;3hk$9i}k{- Z:_S}t㙣Y[]{6|\3?s\3?s\?I?[gi>x-< c/Щa%hAdU1vmb\ZNprJ fɒ`:a;\w򵗢*4F#THpx,N4%]`m lpG6)fnj[+2zm-ԟJIfa8 O F OxgsO8|BĠAJO8 BuȋcwXj9P4Ϗ)~\Kֳ(n%ci!}S)>WDÎ]FItWh |4Y9Z볭Ý5wvwIZ,f7YV;e՛ἅt񙛖0t&h"TА9\,N/x;IG@+b%̶ }5r6^)BCQkB,~m=3 ;;n8NHf#3JˆHE"X⽬ yKQE^4<9وnTܭz>V3Y& 9/ 3|Fװd7.׌vU<Ð=%DаVi[SarVhLFþf]WbNМ;mq{6۰NB^V~>2u1Pj)UiJrD z+bCw#BiiʘyI'(obqt2wQѶ"&P_]F9u~DajYfey.V<`ea|բHf٧|F|#)s .)'}9 ]'٬D"~1g9L1*l&vGYN-Q $:)esQN.qN 2r0q#jg0NaS`v~pF.F$㉖{;1b4RES@0cp93a_)>JZ'm8 qGf9;G|Yjеs8Hg،jFD[HaXE1[D|/&:O^ȝ@9"0(.IĜbm3A*[==1hݘ)MGv,A@?֢ 3K\~!R ,_w2zYSLp/x@Xz!|UA SНkJ:Tw#IesleLesDO70ܺj(_3XjQ A-ZV kKp6H`QR_M-3Ejj1lq.H߬90;8¥(Fnj'{vvGYҹ&9eR5 ӜtknVP۝]ůVRk߻YnA%h9Kk`p nzXᩄYVA5Dv+e{C_.[|s{n=8oӆ b`^g4 Ѩot)*ϫ^>$a`Px c,0NEER&+G2?F ʢTVðZF\`꺙FwPK^WWPClJzv*gYfgYe]dyն(:K\XǑ~{vpqc<9XnjlVeWO9lQH}~|s_UժJBUFA旱y!W6y'Ny~O}ź߂u jJcSaFK =)!a< ;(脘&Ϙ5|a -":7z$C+"]1G#zQ{&\0{,gpm ㆒$I3nFUqbqDV-S4&w` ؟goY^^] f͘=c#W٪ĹU:D&U{7?8e/xo_ rc/)ӂ e=`;j'@EdO2r#A4\6S-"Uy\g?LuC1S̰U5J?C}AwOߞ6蜎,L(1͏*?VS#]'mgO{Ps~w6hʦcT_Of&,8[Z5tN}jz(Qd؝C,װ-Kl2\GwZX \y'$f_(K%E\ %gΕa;hz,8ӚTM&͚@1zW*w&Yyؾ9%h[ nyw«g]XXuI[p&c(iuC:Md8=fP}f N&o/؍UX$ i7LꎛdlYl볏PA_F/$U3QBe?m&1jx e8Tw%p}M a/`'m:q5렫dz_8gOl/r_>[_sϞUoy`eV:~ŇŇZvHYA_ͨF5U2q χ|՝ج{Pv>]g!wWu~y[PKz·_|x/Z·ĉs*·|xO ·|xO͇_|xO͇|x/͇|x?MX E$h)I #]_nu\[w<$CJbqxh6NېD;?(ӳO+*&>?;u~uAe}Z xF .Q%'VD!n0KV_V$ %7q}z"ӽ>L߽b0Hhbye3"KF`+;hZy+,τH4dO+\rwݢBwc- ̲-{\Qw5W?{ c4jQkFyt0 pv[~.H^BG%x]\Iq4@FM,5AԎ6eB6_͟{m(wZjwU 4X8рi#zu '73M}؀M!"&.CtY P 4 8g؜<]l*>z r0l;p6I__/ꇯs~y/9