From c758e19f726ebc2272875d0ac14c0e1adf82502d Mon Sep 17 00:00:00 2001 From: qfyin Date: Thu, 28 Feb 2019 13:54:33 +0800 Subject: [PATCH] add installation guide for VS code extension (#2223) * add installation guide for VS code extension --- README.md | 2 +- contrib/pai_vscode/VSCodeExt.md | 21 ++++++++++++++++++++ contrib/pai_vscode/assets/ext-install-1.png | Bin 0 -> 17705 bytes 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 contrib/pai_vscode/VSCodeExt.md create mode 100644 contrib/pai_vscode/assets/ext-install-1.png diff --git a/README.md b/README.md index 2cdcc119ec..11554d4e20 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ If you only have one mahince, and want to deploy pai on it. Please choose ```Sin - How to submit OpenPAI jobs - [Submit a job in Web Portal](./docs/submit_from_webportal.md) - [Submit a job in Visual Studio](https://github.com/Microsoft/vs-tools-for-ai/blob/master/docs/pai.md) - - [OpenPAI VS Code Extension](./contrib/pai_vscode) + - [OpenPAI VS Code Extension](./contrib/pai_vscode/VSCodeExt.md) - How to run AutoML jobs on OpenPAI - [Submit a job in Neural Network Intelligence](https://github.com/Microsoft/nni/blob/master/docs/PAIMode.md) - How to request on-demand resource for in place training diff --git a/contrib/pai_vscode/VSCodeExt.md b/contrib/pai_vscode/VSCodeExt.md new file mode 100644 index 0000000000..acbf99be33 --- /dev/null +++ b/contrib/pai_vscode/VSCodeExt.md @@ -0,0 +1,21 @@ +# OpenPAI VS Code Client + +## Installation + +Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. + +More information please refer to the [Visual Studio Code Official Site](https://code.visualstudio.com/). + +OpenPAI Client is a VS Code extension to connect PAI clusters, submit AI jobs, and manage files on HDFS, etc. You need to install the extension in VS code before using it. + +To install the OpenPAI Client: +1. Launch VS Code. +2. Click the "Extensions" icon in Activity Bar or press **Ctrl+Shift+X** to bring up the Extensions view. +3. Input **openpai** in the text box, the OpenPAI VS Code Client will appear in the result list. +4. Click the **Install** button. The extension will be installed. +5. After a successful installation, you will see an introduction page. Follow the instructions there and try the PAI client. + +![Extension](./assets/ext-install-1.png) + +## Next steps +Learn how to [use OpenPAI VS Code Client](./README.md) diff --git a/contrib/pai_vscode/assets/ext-install-1.png b/contrib/pai_vscode/assets/ext-install-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0e0949dfe20b1acd13e15a516f51f61716553568 GIT binary patch literal 17705 zcmcJ%by$^M_bzJFAqc3HD2;%kG=hMDv~(;&Iu|KjDjm`x-QD%jAR!1yH;Y=7bcghw zyx)u8`~A*upM9=<_Wpy5i)XE8#+Y-CagTf46W@1IB3S4T(XU;*h9&y;jqJ5+*L%QE zAnFb9#FdP^9Q?X&Eh{2$t)QD^8T@g}fM1gT+O^^!j8m=K;BPdGw<^}xu3PK_}IUiL_eZRie{~W1kM5iEZbErHCrJMh(?PGP5uxt5HD1){9Mql38&pD>&Apb4yw~`tY6jV zV>kVI>y^QMFRf}>DTJ%evM&ak^KrTjxnPZ*R9t>KXjH-%BIU9TCDVHhv6h8v-S?vV z4oxQ_>>ItNolTJE{D(Y`s9xzHGBPrP_|EO;TEB3di&D!@!5SrakC&cAOLJ6cNK`>o zRGq$ea=BfO_io}W5eK!0ZJmwT$#%eqHW_MbRAI3FT4!G)#Af%jmSUa#z7gHiLU^M6 zELyENFV^Eb%g+(osF-Ow2BG`6QK!4mmfPV%72-@I&|W0m`iuWr8}EDeqUx8Ugu8uF zl=#uH8Vq(R6@s6bu~tS;O6}a0Bs0keG4)J=(gZ7xexUNclyow_5u#Stl#7^H8BaBQ}eB3T!^vu z4T+knn+$WB^|>3J{KD11z@TC?ax~;_Gvaz%kwOLYhk`=`<~z*V56_E!Mrc6mK7DqY ziifQYDkpvUawdg24!5blZ!^l7FvF}!+REU=#tSS&8vEKK_nly}+OS)@cI>*Jm_=~X zlxh?AZNHg$xZxQ{Iv#WhAZ)`z6jCp04}uN%av7#_?z2DetkXvHqME(pV4BmE-l>(` z78`xd$jGSJwW$As-xS*ZT)eXvY}0PQmi`f5tnjG+jdb-Qi5ctXn{i^EMGV5qjhAZj_5sm9Zlu1b7}%1n^?0I>wP0t^%>lD~xB~hBX0})0m*c+da)OQ#L z8dn;>Quek-h{qSH1*W^w@td;+r@cdH9Q{tf7;&@eiWAN{2+$fiwd(aydG#J<8une| zqXoI%t5LIB^E6z#PS^I_0v)@$EEa}n-&>xvAtT(ElXILP#%Sa(pt7rBM8-8&avDq; z`$r_Hay%atVYt^}wDvyXE8}8-P6aM8*T@Z-&sNc)d-w@rh*5s)4=FV2%wKNh1~N4~ zB@WHS5C6ebWusM`6;z0-5nn_RXo*Jp7-9^4frwdt!zRh5sST#L%G2}m+0a(LUSVNe z3I*Y;lwLX{Op=;wQMo01KQ@Ax%Jx}7J!7?OFx)(@{D49F{KJfgw}qO+NM#}Os)s~F z*+wCA&IK-tkv$}o%tZUv_r!DL{!LHw8@Do%>t8&EnyMBYWyH}Gbyqt|=glf^FCb5P zW*1E}cg~x$!^QLPN6=9?Y$9|hCzOAxC{ixlenMio$7FdGDr(G5u(-QDf8d+Xb&Sog z`{9*ugj$WC*@D71-0JfJpG;hYux~_Ck6KK#61!H7yrXHil^@#s9IoYpAIi$i8OE^> z>hpXMVOuXvm-IJ|Tc}7&RyPgI!bdIV9(%flZV3qoknMh<()3}ag0M6jN?NAE9TU)` zocbUin^=SPNi*?;9gA*T`c1w#v8om>%Y2KEa!Q=Sy6OCV4_8JzmhgpJ*U?^%DQb<8BGXK|X`m=M zwo1LJvZz+QM5RhbyX}jAOEDvh_TJ><3ICDPomLer*-?L}oc&#fm_ul}w1a1p3Uc(k z1izb+he^j&(Kdr}-!zgQ78p_-EmmHP?UsY==mitOoEu=WGPZt?-);LmBu_e1~Dc4oXhrDq& z+RLGr6;ry|>#Hq?bccnG%0J281tKce@I9-Xe%K&yk2GJhM`^bDD0NInD0+q&C+_# zG*xB1Cp*FwqmChJ;=HAFw@oot42`z(U&zv0+jgR{Q$DpD0-IyCsO3HHeR*iaO5fr3 zQ`|OWi^aordeEznBwC}gsw%Z;dx3FK^qU$i%||f0`V@*&y{INe^cta~X!!aH+gg`8 z{qvNI6zuGd7ZV}_J zdam+S=?lmXGgCUy z*O$!N-A2OetUMCUsG1#BVlu)MFA^w`;Jk?9)GtEpM25a#RT7Z9?tVjOQm zDY~Y-ssG)Npc*R0zpzH+jo&^!gD|ZN3;Q*Xj@rX*IwxuHfdzsVr%D`y@ z@%=>}AD*8pPgJ&;2_@+0+%K`qS2Mx?6|C`q^zM5t`~C|Hg<#xCG^tw7aP`2oDzK1L zGK2}BisITZ!o^W3d{YY2;b;_;GK1x1j1(S}e$|l>l}GR!nUQ|T12>d*MRhz9R{&2) zT^xZY@HQpO#OU(nd;f1Q@1fgGSc&g8%iY=AWX_ahV2G5ibo%x&)^2Uoa%(1;76HLa zpx)s+TWc~4@YvzPTUgR@N(2S3eXood^IyvCQgTJWkyd)1k_d1zKO2goPjV(sfDw9@jUH*Eo2c ze;4gN!1m*93nZnH{5XVDQ_iKxl!{vEF_qV3Qds_$f&CM1^fhghd%b9_=$Y4hlXHF1 zS#IG4;xS$Ktn?VLC`JujU0vNzV<`D%(GIqn`rF~L8xK^EL!w1~%@9gCh8RT%UL^iX zyoWf~9-BBn+j}vwi)jO2hDceB!^g`${*32VijBan2pyd%aK9BFF~1m&P!1HVL2}fp zTcVSXDO`thb8|Nv-xn|?w#6oVs{AN5wFTXB2GiuA@i|knbzZ=Ni&+D`hwq~qCzCBaI9u@B!Vk=Vm8=>7yPJqYQ` ze|CEF+SwzA#n+BePTtt(4eZP(bHfq-xgwn+=rlyUFOx1lzH&NPp(!`;P6P;Ud#x#3BI+X4l5)6uX^ z4ebP2Httq(5Gu^w+F8Td-i(I5$ml)SoTJUf4=@Z6?ALZGMsByxJ=| z-d_v<4)L8LNliuyCLuWD>vNrS-QJ`|Vm8xnHN`o`W#RJjn3HA8(Ot3ZN{WHOp?ESQ z2j3b(yAt^{)nnU3o``HzuQJsUGMG^nw_B5IuUaOGnA^O)?rCV4nOu5n8~fqxVpR7w z!A(&HHFR?I+eVL3`mnp6u#g-#lC&7omWifNI+x(b4SviU&lYPfH&SMmFY3$B7z$Ce z#dOzUu_aKZQPi&V_2f3nZyNHP!J|)#iTz0GJs*8@*=8}Iplpu6V#+Ub()H|EI)O*8 zBRpGXqv{t~E=lY{r;<+%4k;HUmGrA}DKQO~eFeI)+9MI!5}h_|I=Z_ya2^CUI5!7t zW4YCxEx!2a=P|4%gXPg{lQniry~$Q|!V_ZJ?kBkHrOt8Q9_)M@797u?-hFiYCBGo| zQ0o}4M|p?7cag%9nu#_F1vRN09@o8_<5bzcR;cVN6S$=~cS5I{@Q5d=aX`4B6S=Lz zj3=egk?u<%2Fnic*nj@P-dOx5ZItW83MM#*A9cb#NFRbtb^Pd80zA=agOk8uYUa7^ zV3tf44tK*=6NYMxsE$tR2ZATS(2Xu%SF=$LUoi3eY~*nMkm|ZCY>)6K>J>GFU588h z58u*EB~`V~q$Dxezq^uZAdiiK1uHKvH-kTXtLM% z4nfAt*>VhudBHn>4KVL8+2>A0nf$l-r)@U^7p9K*K4siZN7M@JpsPo( zOtOD@7qhF@kOl4mW}M5r>sSlQ859U@&l^&DkFs?ZI07T*?s+b$RQGenpUITRDt|C~ zecaa?ov&OphgoZa*+5R92_`pREZQ~kv;XSGXrsQ`TFH^ z*!)bR`xD`S;9OY&1YUnz^m84r6FpRiCI1E*iUj!Gfn07zw!ebYJy$b?q&C8Ke`Ux@ zK?+3LV-A0!kt$8?SnvAZCvc47d~pMVUnS&j76WqT>Sf1!m(b;XbEf9_@8yxN5 z15I|DXhnJs&>U{4KIr{D?Drn5#|5)_@di3mN7dDHQN)2?m1K8*)oV%kfck_ODg|X% zmI;129GOFaey;$AM&Xh6zy@vw)tRlZ&VU_f$lWVkBZ~G zc7NV2f!CtIk`ZmNtM7T3I*olk>rQU1?Y`J+b303HIBRaGw7Ll|k0P;TpzsKOnOY$E z1FGT`{=L9=dN=26jqk#m3}Jhs_4%rQ0Vsl8>&NZ5*fz*8w{G6&-_LDs*vwZj_G(zQ z^auQbEv-fCU|+OA0PojW&5IMe&fR+0B#nnk;euiV$3#4KI@};YE{dIN1_Vz- zr%EgWKaM=A*%IKnIXRI}RZ=d39H5E4L0ES(#Sy%7^V$=SIO!~txiJVaf3fU!3N1*p z;|g@s43?vf5hA5GfJxqsP#YlZ`DzjC?u@gF0;m*5!s@Yc@Q|{z*6%WaHChPVmAGdE zPl1HciOfFb2u+Bg|H|gKI~}lbJ3lIqa&hfiNYr#M^uU#+9ML$KE<9N@sW?;`$!LRq z*vLgKTwoF@VH{m+oK=*4Y}V4dU&(Ye0I;WgB3n?>$)ussiAVxkv7hj2 z3WORj7DV%IwZ7yOn~^Ne;i)q=O8VX#foJkLcd6^vmzn$dZ%VY9r~%WM#`w3bTqdB$ zZM`2+rG#u{h*i;?9TzuG`CB^slX-rM?PLu^c)0XKm|^38j9v^UrXRxVflzhf(k%`# zfWKV*+hPkeXclosQrc89h;b_XlyI0|Nxr&O-GWimGl{~st9A11+)^`g_0U=`RV6`a zuB_kFv|Lkd`~io2 zS7u|AzT{(5{`-%Cdx6QwJhxdHJlg%mtXW?RK?lj+WYs4dHT$YYmJD>b75rc)ZqMq@ z%Hs>E$9lkNB)%5G5fJdcav>yKA5eEl*-XDGej%s`ygN-Gh^%v6FUF8Y#7yEI)xN=35>6%ycs zJ~>PIACTSWl|S$SEcIvrDQCa#W2(On(?ZF5GY;QVY@r0#<7GcT^g3L$r_S>~?q)jx z*u}$Y{XIYJ^|{i>olCy~sa$#uP1H0ZQw$w4kd59NA05p~ueymG$KTjl=qxXrsf@Vy z_GDiPL3UT*t?y|~Y&`-4ihtz6T~hl4SL z^q~^H&i`zHxo$7izI2NmhnPk8EpQcOF<|PEg#Q@Duq(TOxVS%|O_T_k!<(2m9*2^W z5?OH!|Eo}=V#=-m^J{mvRIvd?P(`yB7PrOB$3b)8&H6vj{q62ygowwnY;ZiM1P)8> zCJ!{#m?u3vy8-gTDGgG|h(8nRgjR?1Isf2L`rOSFt=D!FDR-?`Z%w z>$bfApWd`#ODxCoHP*kRc>2A1ikR#d)hjKuOotx-d2e*sm8bE>P)CI|7CA48*!P=j zxrOzPvn{^tQ}#MN39qvF+|Ez$J`sMqJ9-tbzrbOKiL;NseEIU+mDN4~bSA5zn5VqW z?zYRG=z2^?Ml_Lb4~&RcS9fuKqSG1>&$;`l;W)Q}UguX@fCRDSdR$HYCc3zYI&lw# zg@u(fS}>Ch8C(u~PtW3TmaH|O;nS1%=t`LZl}O5WqRN@T^>hd^DJF<(>60sw53x)d zx~wXGrZzN;5Hx)xUaY|Ywuz$uQ~I*}d<+IFxM<<-Mt`9TbResw%ykL1zvS2gt5cn4 zE(n36)1!Tu??0gVpxqeO^5%h}#Y#`=v*+2l%wC@rh!|B#NMA<5;L-?xzRSwxAwQHSNhQ>Q-_84Xa^4a-?FEXR)4!Kct9 zl{(_%P>7p6n8=C|WOE(as8r6*ovB4jRC0KZ!MqE~1%3@F5P`{)Sys9?)~nF#9SK$< zHe?aOqQ!5E+@FLC$UL!If=Pmi12uUC1&}Gs$J@CcFUFcPDHnZHzfHTgwB)0)0%_qq zd;hHqa48ocFc$rk<~^Fvub7GfkU00r53@%HPz!HcB~j$G)BZ1J^=r`2$|iNZH7u`t zQ;hFM2=x$K4UXY}(nt^AWbz@Z2(9-WhU5G zMR9CusXxE$yV9~s1_kRb?Ng-+mI5p-sLKylQ$z2uS}ugfhTahy8#^hlryiO&P?V6G zd$V7Sns5?@fxqb1ksM{7ero5rM;L$an`7S+^Jx=Ag?U>eNGab-a||;1N(Yg0dlkwg zE*g#Mm`a!kd7qUhVy*)r*sHBI* zL~hV*R!2FUE^YRN-Wbe6e4-M?CeFnN`hnhLUD^DBoI=1?^YE< zSJwk~cnC}vnPkVttCM(41ZmWApWtINqm_tT4Xq1)FdVy;dq?GM)vf(>c8nEood;nw z(w}Iz3EFxWKHWqq!tM7p z_S@PFwPy$9Qou)c$8oj=B^sKWlXF-EhwJRFk10}`P|05B);CYf!#qJ^HK=VX{8HJ% ziDjy`Te4B?(javrKo?Pmt^I;t7<5lm+nA`UtD9#NUM}S*26KhBy{Oq*Z>(aQYOb_tdhS*$MAnq_c~wpSaW{)+a@B8v74D`*Svg_M)vtrWOA0WV;qyt|rqJW#JIlix z?G`z*T~uo*qx0|q5@e)Tyf*{7JAbqBQX{|nYh^pYod@7xbViQ==db@ zP3wi7x!o!s7yBcBbVjj94^r8Y7km3_#%MNtWk~@a!BGZ3ltg?V!|-LXY#i;;4dYV6BhslNpBdV`itX z-U##hWw%;;EklHxBU1e4@saTzu5hB1*MJv>lNB`RjAF4*Z=iQJePN$o6!ZJOA^gH; zGT5iKZl1crN!Co}*5+I8!1}xC5q0kA86UI--%J}nF3bz*kRq2!yYcwYw+d&!8EN`x zM7q*hiJbLr6=i-NOa1Id#9erM$xT%HPK&P*Yg$Zs7e&+>L?1kP(*>9LCQuGDb$k#^ zu|X5^q z&W-8z$Su~lET;>rd!mS>nHr-r=c(=Paw8^*g&&GBs72Vp?R9FLri!dgsNO2Eqzs6J zTZko#=-y!J&nzd9&|q4kSmOzhpdOK$H6G?IWuh>lDWO0{R=fB>9jaZ6%-rTmcO|5$ zac>8uZ@@4ntaHP%U$qJoi+Ls>4-jrXx7patZZjwqv^3o%nb}*;WS_L|@hD-#DW$Pf>^8|cq300xhqU=1sX;W-^I(%t(;o)>GSpo~{vxl=+I2(rw5UHOxt?}h5JZYu%s#+b0E zE`;M5X|qe$<0>S?-N5ZS95Jw3@U^&14eFA%533RPh{ON+^*O%zd&-d@wmAIDia}dB zflhtN{5PT;1!ThU@#o1AoIy8&FO4`GS(V52Z8IvLAgZ+2)Oxe%J&a(puM@=`<=OsJ ziX`LdEEPV>HXmGjb9*`mcD&zU_I5}i%tYd{P~w6Pa@*X!)r+%`um;t`Iq{Vz39KvA zr^lZcO}rBKDO_C5*4#Q-pKMeauQa{;^9F-+gVpQ^;rc%LBi%WMPHZ>xy$>Ti4D3@@ zCx@-w!8pdG0D1_#eR#QyGu8YGn(BKorN(6SwQE1@He(#*8m<>41{0gr>~bIStWlcu zLLPghmt(%1B4i<5kAs^s*l-k)?p^=F>_GDDxMqrFufcU@E0?C*#tSPMj<(F5WpYvp zFMPn8Y&e9zZ|>@Fw5lYPQ&)V^rRB|jz`fgyp(Lp?v$vA;_jgO+Jv>9a+hP=nL;9KL zUE)gRZcgJJ#3$2_NoQZX+Ba6QqQk}CPV=iH4B$>@q!F5Kr|BHh`!1Lc2p zlG)$z&)BG%Z|}zQL@+=R(;*ZMCG%>TY7my2IcmSohQ-|DgX)%2#)%P~gxidbg?;p- zPdO*9UuR}IpjZ{hoLAaX4oh$*)iWf`uF=$fKx_jiht}i#H^y9qE9ErmDzT+2Eidw) zPC|@Ds=nct_da|skdWSZiL+yp*u?o-8EujWyTX}dR02J^A@>Om^!+?CTb4F;LT`uM z^>^|rZsCpLulwZ|tLw;-K1s|}n&*+#(59;yZ2O1MP)#=~(d)``c(JEABGU3+CYfCf z#spcVXbS$fuCS%B5L|UvVNHV%az9ShmhFw zwFI5oKYo~+mIqi7B{I`pTeqI$u|bFN}FYuej?EzH^r@+V*6mORU#07%Zg>j6u%9(a$~y7M}D zl2VJ6!uf@Yg)m3&aC^&>U>s9f`QkFd6*jE+ zuC4qBRBM#hI>*Ll;kas{D9R){j{@)##FPwu7Flw)l%>{Nuc@Gfwi}R=zDFHHA0Y@n zN~#*VYl@u}XQCrGk@v3gPD#Oh=-tQ~F0=3#2$usd7}`TG1}iK*#f?Gg2im07I!d#) zPsA#5*-6G{2Q!S5V(Q2p7i>P@3*tZ?EZ~@xLUmR@+*M35sOzk@bwrp{5eEH zr=BBY+v}DsKmNKwH28r%=h3E2ez?Q8b{oD*8G)vRZAD?yDypV}t)Zz|q~+er)z>OC z%pOr{N{S_hecFS4LbgK2i({j>(Gd_PS7EcU?nhB4~E)Kq6sDCoTBVO068) zczLT3^|SkFbJe8J<3dw=`pM5~@aGH$h^2$iTcNP>h!!VOnfvwadg-$H0l?uEz)_l^ z#$OP{A)Dsu?~ta8zO{)G`0%0J=$mgY+S0hgzVfA0nCyNxCsPz8yXJoT#jtqWtPYRK zv5EEaIFh{j&OiLAiI|%*Z?n1tuSz`CuGBhD@>KQq(+mkhCi7B$@rv z30|*-%fJX*Y?&`C%-Bh2amuNRE8Z1AUn9l{M`8= zMUUblE|Qvp*ZOn@i|9rkHw2`!ql*tF zsVI8#bl)vwVdcAx$-=T8fTM(Ni`D!pji6k;Q|u^N|<8Ve7**M(85u{7TaRyPgt zz$ceptG3_5wNv=ZZ;iC11!9ttb+QRh-@F_jzcrIBmkH#efD+2h&D~d}#HW@} zZg6!0`b!a!wy8R&C?<8T4@>Xr6rCr;W-W)3ma9yi+AE3bSwEbAIUq;wt-1|)wAI(< z4T%mX!F$jQ5g+heB73A0OVIdoyJOyMNjH@(gL_yQr>wZ=2dktr6$7c=Pi;aa(Ilu0sMM1AY!N*kw+D%aoRsSb+>tw!gPGDdO)g?A?Y9 zU|9$Lnd8B(XASI*txAyw4o&HQ4SCnSUJv2t=Lcv)!6=Y#52r|MRr)oFkh{qDyvWYZ z=BHp$Ib!8KAl}i^1~e zmwey-%AMY1LC2{GD)Go9=dKu5pob%SFXJQbI7RSMcBG>-!ddJqZc4H1*Rna2J7ecFKI>Th6t&8AMtLGR4<(zJuu3lY zVgO46D(KWy!CE?p<@BhWoSZ$Y;7c{cM3o$a-VMo-;o+5qSy1Q>+MM8A?$mL;^^0&v z1TrRoV*B^` zx(>yJtUQC7TU$|XThCb|+}&{$0;+}$qK4n!mj^OeSBaZ;#>a&=>kh5e1U%2rP~PWm zj|8IOZ(yxbqTjhxZzP_r8L*((MFitn)~~AnHHFIuy?CJXd9(S{#r#c@8HT`Saj#ey(_p#FDD;a>8^J#9yqn2) zwk(MA>ZvE#yPh!VI1UP^yyKNGkJ{$MQD__}b6;?8)>;E?LGJ6fbR5%YBCZZEqj0UY zSh|FA;Fp98C>t;trArth`tKq(rs_`W4yQ~^C+Ix^7wSE}Rs9v7%o+aLfrIRY{+dZ) z-NE_E=A1F8EqkCHHu*k#LgwA)i)z^&R|V=sLW|fb+-mteCVt0YVrV6s&EV zqn#HG&(M1EX+2hDe0UGn5lRZIs`^xol|bh z3m#|8d>A8CDK}PVP1MxwOA&Hp#E)C?EXY%g3y zo5%j1N{z1N5OBWLjI$edE0ng|PQVamkI&+=7IE7uK%7Gu4ZDe&TJEE`mCcB>Z7N#5 z7eT)^?2W6()1Uq6;tP1#WmybaK+Ek5#?%r{pExwTjQ4qUZOsF>bexdd^Hy?G5&law z3>*@UM-dByZ#WHmXEHK~WOm(gq?(KDaa*UAX7uFfiwX>3fA`IU@MHS);KhgBntL~x zFHSCgZw{Eibb&uJ9w_)$YVS1^RuC>!?gP4`l&6>X|0Qwvna|8Obr!^w-Sj*- zTlhARIp3-^q8AE!b#OoL3sG);{dG5uSEYI3pJq~oABJb7e9!wG9K zq6e<&ye&kMdTXH@nqBDb4qGbCShS?0q+|mNPyrD%1>KX#&_Z%0=YJnSnxOiFo0+A7F+j#t6?nr~7bI3sh3caq;np ze{mJlN3hXScJ3XtRT1aRO z3u;<9A4NBYNy+N!_FBVP|Q06a$Xn#pbS0)H#gTT(QU6FBLCOtt|<4fK7YJp@Bd$9 zC7}FVq}9Cj9x*ZDeEQq+e4dHIqH^|JicVnjK*A%HafCEi zqx6V#yOi%R%2rw&AzA=uO|>$f2KQHEw^2DaM{OPw;C=n4uzK(jPPIjMLG)JOE%_UD zgbu{0b5(l$UyFPHe<_3iw_gTFJRg9F?Ci06mlJ?(LAc=N;u=RFEQ`#i>+@k1v;A2z zsb$9PS9MCpNoXKL5>aLSD|^FgXI@lZP!Fysa5YWw;`RCVuu{hZAZ!H6JI)VF!3l|^ zFRM1|Ps;q2uiE$mM}V4e8bC2vjw^$p&K$+8dEP6C^M#aK(FBu>$8_}BeTVi?sv5h^ zVaMnshlt26%<770JtQzi5{5Vs|PB|m-@igOesc;EoiQm66##-R%))$&&^3!xtD1lt3kxvgD~<73BsnXmAWca=+u z|0t0op?IKl_)!dEd`=EJRc91)6kdx5ED0W>)$Enbkj>+;qsz$n=&J7Qi5MmmYTl&s zL1!-mR?&mQ*8w;N;U5Cn(xP8k@NfB59LXEfn z)qgYzpP&f0$M_T*x>S&?B=<2UqjAbCzLL?@|!WT14|DU5#&A1-Z(*IuT*0?H}%uN z^?*xvas%!(^X+;u<@v0poZJh$4Yj)9qalAQ(f#pVkgktl?|Lg=rg9vkRp!j!ZD1RB&+A7?q_Yx?A zvw~OAi1;gZcJUT%iC_`PeVUYt8AHV@!8L@)rX_RK z&OgVr3C?Xf`{wyvCv!udka~7r9x(G*4m0uTKNheU?4j8Xey&@0J1BZHdL6==E3gth+6y#q=W{t`-#6aq5h zvX>(7+Wu;j-+M`sndpz=1vmkT1RfRF``4pi7z9S@W6*<}o*qp?N{5qni5j$jgrncb z2|o!cL}p6C$IC?PLl}NO3F0YX*sZyj0_6kmBp&LCLA2rtGS+_y9*LWww?N=?ih}h6 z2&I7Dhwz+QxR?=-w?a`-k?rM6Wd@RaJ4o~4D|Je1DI*KG0lPIa0##I)Pt|fBhv|np z>@JR>)V~GJy&&e#^w}VINDWZYgG5xp-8MZn^`mn$ zmLs)c?ZB3WZm|+UY4x^o;=RSNkiSekbkpa0Qm<7fe$WjOP5c1`R-<#Fpd1j z2VEb%QPkXezHyhoj2=ASA|#gb|2I%0MkE|n9$?zxJj@aj%~(y<;ssZRy2%I2Z}TEn z9Gd7XIR5sPS67OFeg;riCN-ULoYrY9*k!bKy~#i`)vWjBN_Sq{gXaqN$cNp`7ibuPbgj|Ki@(*`^pv;rRl2D0WO2%TDhhcF!n)- zE(a>&lrYFNq@#!LqBb1hZb30hplk0v0G!RdGf*0&z_n!S-bq}+KSD$x9Y;SJxGZ&9 zJnPhhz3L$b?e(Jo`mXl!GD20u#Yw}+ zI3ns9b1!_cqgb!PK;2HEZWSIWlgU-AyMkbRqL2Q%hP9*F4$#5>^m^8~)fn_GiRE&1 za$t1Yh?L8okMFIFGINFk=koE+_Nj=u0*92BD92p~)hE`uxw({;Tn{;V^ae z{0m8kji1pkMCj*U`&*%qis?~usr@;o|ND98rKbIIUr>!h)zyxU&!agkQ=q4SQu&wipK9Fp z?07%Zuf0IMrc4j*%7=j?03xJnx$#i4p!fTJfapjJx{7t$F0u4GIk{9u@js4Ig|}j| z&WYWWTe}7IRnR=pdIDGJC~I|P;IN`~a5w>gB;aiYmj#1)0jr3H;01RxIMl1G(&NB? zSfEJjNhttA<^Q-z2xhc++^&9kh7A6ad3JSm1)BmOSdchz$!i1bvY$5p$Df-a0P+Xi z?&3x9?IQ{w6f*nQJ>q}-^YZ20y^o@Q(V^jAgn)nXZ$kjk-o89h zWi4Y35T})@*q;G0v=$ya$2*0d=X>^$>TtytnRr0 zaAy|zd4NjopE+v7Q12Z)WwY1-taJH)WFR1#=J5LW00DhLU5nqrcF7Wi`_L{wD-@!53&A4#rSX9!PUtjit3H z|MZREvcqDuL0Q}5D}^hF@8CkkN@qXb2@UDhtaL^%6R4HWQ2fp2TUR*vJ_KZ@NMiHa z&^LjV8( literal 0 HcmV?d00001