From 121949f9c0da9e84156f4e67bebfc4e8d395f488 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sun, 26 Mar 2017 00:40:16 +0800 Subject: [PATCH] Add: NodeJs Support --- app/build.gradle | 5 +- app/libs/rhino-1.7.7.1.jar | Bin 1256582 -> 0 bytes app/src/main/AndroidManifest.xml | 3 + app/src/main/assets/nodejs_engine_init.js | 46 + app/src/main/assets/test.js | 3 - .../java/com/stardust/scriptdroid/App.java | 3 +- .../droid/script/NodeJsJavaScriptEngine.java | 71 ++ .../droid/script/RhinoJavaScriptEngine.java | 21 +- .../plugin/tasker/TaskerPlugin.java | 1000 +++++++++++++++++ .../stardust/scriptdroid/ExampleUnitTest.java | 1 - 10 files changed, 1139 insertions(+), 14 deletions(-) delete mode 100644 app/libs/rhino-1.7.7.1.jar create mode 100644 app/src/main/assets/nodejs_engine_init.js delete mode 100644 app/src/main/assets/test.js create mode 100644 app/src/main/java/com/stardust/scriptdroid/droid/script/NodeJsJavaScriptEngine.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/plugin/tasker/TaskerPlugin.java diff --git a/app/build.gradle b/app/build.gradle index 02cf62da..26b90bc4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 19 targetSdkVersion 23 - versionCode 109 - versionName "2.0.6 Alpha" + versionCode 110 + versionName "2.0.6 Alpha2" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true @@ -72,6 +72,7 @@ dependencies { compile 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1' compile 'com.github.0xFireball:Enlightened:v31' compile 'com.ashokvarma.android:bottom-navigation-bar:1.4.1' + compile 'com.github.hyb1996:node-android-lib:1.0.13' compile(name: 'libtermexec-release', ext: 'aar') compile(name: 'emulatorview-release', ext: 'aar') compile(name: 'term-debug', ext: 'aar') diff --git a/app/libs/rhino-1.7.7.1.jar b/app/libs/rhino-1.7.7.1.jar deleted file mode 100644 index a8b9417a39ff715f1b2205940c7b31f1b708950b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256582 zcmeFYV~{RE)F#-zZQI?qZQHiH-?nYrwr|^Z-?nYrwr%g7`DSD0n~m9-ANzAN>QqLZ zc(N)ovre6pd7e^`1_gr#0)m7D3RV)70Qy%z{>$lKf%+%1qAG&4l5%47pg;=$3CPTe z-QMsIKmZH`g!(@MWd-FV#YB}==w!ug;wGT`84yKZLcWE42`%PBLTFUM`fQ8Z5!luf zER+)G0`=?~Ux7?q-QdlRmxuf2#P+>#h}}!mk(p*JL1XD>2g}kC$mc$A2(ca504NB+ z5XgtTVo2Ok6!`8r)gQn%c6eA)C3Z%C#J+&w5H+XH$EKR`IDSU
f4L8C*J6IQgS|??}s7n{SLvg_9dLjmx(@ zGHrS7jIrS-;FZu5@M_2!aSwR4cF@EVFe>s2oFD0cpSHui+3j%N?9G=2WQ9d41~`|tt$6!V{g!!m6v zcqATKe<5(|BJf&OsN|PHhE)w&Rvj+Z_0Z2+2}7)l;T)?0CR?je$v47mD+(7_P0(ny zqGE4@)z)g*Vy%Izt#xp{wH|J?E=4839=2PTz%5wk4y>~a>pX~c9>zM4W7z?$(}Cer zSbh}CU&Qk7WBL17{sHFy6w5!x@MqQr=W60PkReYL(2PLUKZB*?a?lTE@|kjp;P45b z#b?W<_NTmDT`m2P&vDKS=0NHR$nx^@=tEX{! g5$_PPFnQ zq+>m*kF7BcV3)Cza?wFi ? 4p^FJo+Bb8}{CY-KM)Z*FsRVQzF#Z*Oca zV{Bn_bDdcYcvM%JesAXI&P;BSITr>9B$U5Gm=I`z4do{ZNgxskfszR=P)UZ#BpH~@ z#F!XES8ZLys O|xN?x9pmuKYVYx45-0G`F)2Jm L?{l*Cd;tG|Zw2rI zzU=}oUX+h~M~;3sfbZe^()@vJ{ZKCcBRS*8()>qh{zS)%KKxSvv+>XJ!GDn>FUe emn(<37R4bz;F z)>JN@>5azXV;(8iQ06?+k;^1feX`ppA?MHRi)UoND<577q_-_?x$xwB zUXvc$m6QR(t6`$k-5wo?H>P?b`v=vSk?*H7*L$7p)HJway?ZsxYfESP77e5iB$CPK zqL}2SH<64lQY^Kwbweh>5LaplZEU=;t25HlwYI%^)0)=yw{>;2ZeL5961l7uqvCyC zG~2IX#u&G|qc=yhu}oqxx2Q9b%597e(qA#>NjTPoIhUKTY1i&Zx^-ky87HaNv?bna zO$@TfBH!sU*ro7Wrk7?UJ!q}SMr*1kzRz+sqLek!T-2H;r6if7LUh~IP_(0oZdN5y ziCn#gaMcxZHh-%IcXPUjx-4r;q~h&E1H0mxNR%&)w6U(d5=>CLwLR)1B*2WXF?{ zw?LlWNrq>yT!+Z2b~Lrlr}EuBDh_YDw>KNlF`&M9PGPZrHH%mHl(byioTbqE%iEJlFG8D$zR4m=Y$!&>&MD8-HZ6^|f@@8|Hws=az1O|NR z)X4>=wpwAw_)9QevXSAFu6U}4R??cMlPRgt%PihOf^+F~Q=-r6p)2BX<)qX+vHoZ# zE0xnsc#NI!RN4BCj@y~;^qiNbOv3^T6kgJu;ykGoHP0_Cn@f$Oe%U=jvwYE3vD34> z_s1EVU#Y2G`H)H&NhS@;uLwe6P in@7*{QW9 N8%V6sIsndtsldT_tmt}fAM0VTI8HQEa-SxjVXvXE7c8K_+ VR^ zg3 n65&Pb0-&u>){RaDfqdjk%eP_YqeIkE1;q6>uCtKf!izC49 z@EK^~Cs4HQ3|yz-X4Au__cZj;rf; ~dr@ZY!&GxWt~L+g8uOi4X&yq0c^KD=mDnm)VTY(gkElmNG@zSv zCt0Ww#V$a#BzqcLG4$B6CHaXZ5BsyikE8Thb;VhTIyTE()fK!2&%#vq?z)Oo4ki`mtu%_Qe;L>43*f)#`5^{JO{cLx4lRs}HJWX|}5GJyREklOr9Y#n#SgIZ@JvO@R zBszrH36JQ)B+-qzB8tUgS00lM4vYruQTmgBk~W}^b3S=NV>sx)6p=3yzG@WFBnwe# zy@KMANF=~Yh7zhAg*2U!L-fHb`Y~A~Fi-5p0 1FezJ1_)^ZLP!y$ zOMy(=An&qYcXJ`u^vLY9m|PdGC`_F`mby`xQ~AmuGGs1G=5m-OhEOeT#xk)t4`Q 17D#anxh{ISS-i dQc{lyP{|q)9NdW?x$Ku39Ju$3&cmE &4^P$Y(ml85QI@f}F_=J;Z>#%5IEw<2RAbmIcNnsy#Dw34E8(9bDfJUv^q6g^GbPkNG6kX}tO zUR767bidXv-(G#Cd}n@lt^1_5&{gXWdn>*D-Ig$ewX!ysg*;@y9XaADqE$jA&RF5C zc2$;pUBj5^s?|d}nZ38%8`787`a-_DF*W3qyiRZ?hkQpPCovTAk>L|q>+}o!oR1m@ z4j+x=^&MuP_du}W;HBNF?_opyXJcFs?Yuq-U#cc5nR`hRjqj`??=XtCa-=bPxpi;hro5Xh!6W>Ex zd>@Cz5AZ(mL);^NgvZ2>@tpVxUJ@_jk9_VG@sj2iKh=uG&om)^q0JJ%)UFY~(rU%8 zwI=Z!ZG-r&wpqNaZ5O}Oy2bCcg!qF};UJ1x&s=yf-bW?HaHrCvk4L2AN{>1gYvp*q zQs#OVfDbV3y_%cHv=6G$iCT+FNf%~o%WN;y*ocDJvMNhJ+okG>mAXsdzd)U87kTvb z>G+V2J2d{&aVNEY9#z`wXg!B{l<;|!Yp-JYYfQEx`H5xMo)-v5%DYPy*!u7SUMbrG z`&rP4ge%9@(vbU-;;J^cpmEuQfwgD+iF?MMS+ZV%DPCoTeT`Xuj@kV>wutkJ&!rYD zCxg3i)Xv~8YG8=oygX(e!$-+j36G<9u_bHq$42s0yWS4%I1vS$JjJcm?bX4B! lX=Rl6Lnv4`(d_ybCl^5M>KjYUYI%|(w~O2Alg2Wq6F>YC5yxy{pdP#-7mE%K~v z@+F%^JfFHCOgGP{9$aO5G2hg&(DY%MS#-T)bS6R6wj0}=cw*c3#J26^iS3DP+qP}n zwrx&u^5UEiXT7~@_3A(UtGc@OzW1*Cic~4~H*EmBm{hc8pQs&yGpretW|iq2$@Jr% z8hb6}1b<0CLP(q1bg@-6k*yu}%|sjT+G`cQwfE{r`8Dzf+%)$TBw0b;HM1bmzvE6K zW83-hEFmP9oWWP?>2EqSR86e)>-bi@bem{wuey4)@`^`MH^$;Qc+wGh+`F5FJN-mu zd4cvH0AGW;^7s~89#8)367tb%>()>v!a!yi M+0EanUujdptE-NP0c{9Uk+ed9%$oqYMaE?fhp_E!l5AykSeOW@49JS5(a#y%v zK$;K1HTjj2_&?pG?|Ahd9%$S}du`c&lNt5r-`@?`Zm^Z_unpK0ljn-{<1^Y1T=ngl zmDRs1sK?H!>NUkwFUBlEHFRWDGe#|$HFO@5)xCQSo(7W|-Zes&h!CVs{#kEtV%TQ? z?L?o5I+uab+1|JdHW{LRS+_2`SMyrCFF{B>_IRCypS)$0W?_$SbuoP+Gkq`>nWSB{ zaA7DQp56;?#Z!FdEWC6SUo%VCKOl38p$ahJ5s?z&{V>c4n2Do!gSSJ;X{qqRI~hy! z$*0X`i%h3Cn0(1^qrDNHx}mvNGjnQt4R9NESsD&nA~;K=1`xoC@wXi9AQ)T+?p%&@ zM?>KH0*~nV5wz&ZS7h~L+RVT|`=X&qX_nkMv0R I@}xyF4A~9@O`24zQLeJeMW_TM{t;Q?Mjs z7~71(I>w)5hLpD{uHBR_*!Bu}2x16>yrD0P*PMDdEBJ_XHMoSlHG-)v+RcAREy+3{ zf!9;L 4Z~KL0H89W@yZrw znKH=~#{kI?G}c-`gq0z2BV|yO#u2F(O0G-~l0;{wjUT8cs`!>Eh5*6x`NarnBNF3x zXx_JtoUHSSJ;&tibc4G2m*8t(F4u Fm&s z4B|U55* EO*a(M_$kWkKUH{3uhUpIE4$twup7>S`&0)rin#}Kj(q^y1<{DZ(06fPoq@p zwr+a1&6Oj#cN?8DTe{%ope+<$_^Fk-AG)hsD(7I91aWmQsYzFriP)G0$6OIUbSw8S zdij+dG{*IDX`m-(`JN8~xiu%JDxgfOFL+BBAL@D+jMK8ujO8zB^I!T^=x)P=cY5EQ zKw4`|ADhO}H1td0I>|nKlnRVX 6qHVakDoEmgTI(6zWE;7I;bQocy50z-s zr_0aQy`Je+YOGhl;vZC661OV18}LRZ#|f8hM#iVtk{g;2>C|=G+FhnJOQ0L$kEZaY z*RrIW(wU_-rof_A4;u+DRJWW;wPtz_Xwlg!^Vzf736V-M*bpv``Qv$9!PZlF8{8cG zHsd!Xyo5-U3NsY5jT4NRNs+Xwm$&j+%^v)=;;BbgbT%3`;V@TX1!RSB@vsfe7jo+? z#4>tM?*gHWB!&4QT1RUI_9;vxY@TL?m2jkIb5M&2q=NdpC>2|~9 } zu%`#j2B7*yriR8MD=8Qc8iP1_qIB^E(YQ~;VCNvew(igkro5wSXj+lI7J(;OfUCy* z&1nLAX##_c`Rl6r*MgJpmD2=r^kjh_*~4F7pZ*gx4; b)cQaU4 z&>g0tCJ*AdR7k)j%8~VxRH8#_zB_&^BpvUWbjk>+q|7(-**o|eZ5#*|`!h=Wmst(e z8^@)Rm!#c~WP(jSPWJ~+f`-XRTrzGVm;`kU=M!`zV58GZk|%d@^A$(ru|@p!#(cr^ z*ZdA~k?-n`+uvmSXdfEEa+e=32{QB{_wZD&VRC+wif}a2Xvre_5Agr ^QHNVp@>|axBUTJ7`O%>U-$%zbC5Z>&ba)hAL)03 zzw)vj8^9{>teDzfHXUy`PhPlBHal+gyv|I3*!yDgKsWMRu{YdT`v%Yu7Z^7~vS_aM z_k8eOMrt8FjYxQNjr70}hml5vE4|c1&<7N)BlLq$KoCXot?~XjPr?LdNzU;R{k|tz z@tSx5N9#~To0SCgQ7wT9c?NX#6Z(_N((2iJjZksMtT{ BHl@oOX5 zGUFo{(hAj$o5aga 1n0lEgs7H zlvmQ8vTfFw^ms@JpNR9&Fn=uMtwiDsr5PVQtI7vU3ObNY%j06~)}Bqz7WFOZ7pA`9 z&+S`;petWDv|Cu>i!*60j9owcRML)khE04jCd`dI*Q*p++DJv4B%eW6zEdbb7{j9c z-ofnrfW8pDY=YWP*3f<5&66UZ^hNbECHrW(lQdLyg>Vi7Jby@Y%q?<*t|eY__}bZ$ za=4B7O%9}7IacOk#z7SFo>5XRqGDxbyqheB!BC@JxebO&fGz4(SFTNxi4iQWi4LBT zmM)rqF$I{A`>haJ_SzG|n1~Wi7k2v`p~Ci+0 ;f&K;H6qqPK{&eWwHjkYM!ZDK~3 zO({-^Z{13V>@l069zV1qlrnUmTb++{b#6_zUA`=g&dsA@ S;s9sfYt99Lx+%OjQw= zoRo@FO#fBJB gJQJ!Y)0+5>_^%w)1p3(@(tP6`D@3GiENk}= z*8z7V){YVCm@5vy{`@PlXJn2(4*vkNk6_kv3{H>avsNkOihR=Y=(#odFilx%@%g4W zirRCSDIj{bB!@a<2%$15DT@UDL@JLC=*jxfRYYV4+*~O21i3r3G}>9{F_YLzztm*z zG1uIqz}#aZ|MQRXjKbXXx6~Y<&rZIP52jBL@rRheScrp{N7D9&T7LN@h$SacTB&qK zR!VLXlrXc)7DkfC7r=_O{6x+@P%_6>cqdt6$(rmT#2qXy Ex{b_ZHhB~>>yzWDVS5p?MuDo0{^dc zy(O-YIqMjmgJuVcuqbXf8!!1Lh^R |j+``8jLmGV%$W%|;#o(1aW7vWNvnXC)JPU9Zggu(d}#Dqa)0$Tk1`YtP0 z@}_e9iUF!gX 2Z?Q@y46H;As`r9lF?IV4Mp6EF;<4we{%!-Kb~m8NWNnPz_yT^*WMxj&&^FZ z2~{Tw76?cS0|@8`H4kL#U`B6a>tSJSZ9s2iZQ$r=YGG|cuk3DTA^|Y9{qItm`j12N z5&E}WeFyVemP~TiTB?jdGX)DdaEv@kH4=(;6m&c|Sff)tH*`ftmNQ~oWszi+%~JES zW-n-YvvS6|idCq7pNHDj*^ xr|_l`7M1`-SZOG=vijrWb`i|39s{+sy@ z@Q<_Gx9sE)Yf$fOEb7WW7kRhe#hMLf$CYU#L3pd+U=#|#As>q0L8w1w%_b%=hoLxQ z?F!@18)d+I)+-jkq$NjcwEo2A(xn5{br+N9+NnRriUh9qM7P;MzF!A!johFou!HnN zu^$*3l5~@JPYvbTB>%>U=^FFSFBCGXv`^UjWB|p7b`KdkhUv17=mVlB>6V+^Cx*Xv zgMgH0I$JK(O;JQuz@XGI4TzAUcgt{4$$~apw`_=s>kSbKDF82Txu|Laiwdf?rOA~o z _-nv4^q5WsoV04(;CRZ04liH}=X!NTqxMtYf>Qg8eFyX%A=iT&W(hH#yu#VMm zVZR2)yRs_UJm);qZaK7FoT-j__qW@8k@I8GgSkf#rnY)Z(lc{LqISRdXLIeF(MRWt zvDjri;_#L&D66_8O{Q_X2y>~Lm|`%n^(bRo@0>bL> (A4jWa`UImLtF)Avk*o}agl|S zNHuxo=L-p4jjAeGnW?fE!>!9=TG|E$H8Y_t41dN|vKccM2RWF=3i0J!?R+?~OYn?~ z!jd&3>SUyzTC*4DJqEQ)IUMq+6J`^V(X5sfFYqxe_wt*hqY-Oj4>00R`dFn;)We$4 zq@7)I3PLP$1QhPz9wK9<#8TM67h!6-mhaq`VADl-hE5h2Xl{bjaL=<@lr;W8pG4Xu zrs?xkksoMIIsx7}hICkE^}+YE*pjym3O6F9dFI<0E6L{-h_?rg_=s|jll=0l&26=% z%;HJ%9f;0Txk0e0SA3q+8yn_J4$&%$&Mk-}a&!`rnz$&@nNUa=muP!^!4CGNSuo}j z5`(!VJpYO(_F*gX2$Gu*a~jg@7&r0`VM_|&HF)M1C-@O50kJFXGjW_=GBJ(SZetuZ z87%|%Rm3YuE=nJVMj|*V0*}3-e$g0#tB$LW0I)lF1I)_!M!2Mp7=&Pk4LxcwtYn`} z-%A@Ep9F+;cT#gLi{XI-R-FBU;wimkhacPoha=p=Ca;!>md9Z-DGP86u;>rynYzOx zN=r>X(0vo`TtAEwDNQRz-N3&S@2GT9@7g2TZ;SnmqT_!9A4#L<2m;e)E&oF~6KKia z&b_$vi)^{2$I=r_jYpc@j{_3cHL@85(HKpzyvgeu8@3)CO)Zg`)ZeQeVrIlX*_O`C z(pI3w*s2s;P9u-=L{k_h{LmWqwL{KQ$XQl2zJ;2&m*&B{T5yb@iT*ZW)BWSzo*dr5 zCeXXaR6V#vw4Hp1@FmvAdXdlgdtawnB+eIcX6|sGb^e#Wd5ND9|65~Wpsxqsyc^B| zQrQX-GVEj2%9l=K7(9j4BnoX6 t#I~F>$uJVX%_k8k2B5)ppT Z82h1g2n+JX12FC=} rqCmek %T58a1pHAPtybNDp z@3*xP_@g~=5gDqg5&S=r-{!Q_`A t0IHas#oDjdaK`A>3 zL@T {}L#S5}wKRuI&uh87rnsHLp zFcEsaVRu@Cs)wBF%u6b%jpo?ZXJ|3JmGFHUsh=dQntjB2y7VqjWHFe@E36 ^{7zEZ72UvJg%NAac >f?!ypvcrk_ht3hb?}K?c&exjwNuhK- z40i-1tBPP4?SP0u`C?e-K(L z)Rnm_1T84m(OkZ U6Y&1^ortOYCLs7FQdgR<$-svwqp5dnE4og58 z0w&>}apKE;^n}#3&8ciK^a#O)dO`%j9u=E0C&m&-bpbI59UuD}5Rgk`O{Rwe#%Ygt zmm|il-5OR-E)hF<9{3)>P9tc+SBW)f*#hK}m(5iZW;sWyyyx}TngW$f2@_CAl|hK6 z^lei}wJE&;I%u-q7-Y@lY%_MYF4V3*RQ>mb!Rv3W_$v}qk0+QQing$mejAwJAb6#e zh!^JzWGmtT{l3t %+)>J247un|z~zDuCvEaf_i2S<*N9N|c7|QWVPRu&f zm#5)p=}c%^7U4ih2+kQ`nxM#x)X-)Dj=Mf>1|Ewkswfj``pp9mi4 zN4NdY3-jmxzlZad1}+AUMh+HsPV}Jv7p|pFlxJoH2?)rJ@c%Dy{co=cI+!`zm;js{ z|KB{oQ(yTg>D&9EJz-2nTnK_m; kE#3SiT*uCoE~c53O^QnR9!^gZcdcMbl< z@;>7A;+f; 9UC$}>K3$YLU z0YpDKi5L_^An`E6 ED|B*q!|8juNf1U8A2H%Mx z02VVgy&`oB`_W ?e;A{-(md_moh-l{|OF0(=KC^LaA)CinoKRH%lP*LVG%HrgYYA0z-<&%Z+mP z^<^BN;?!D3Z6fnbzTo|)!?Z`Wo|FV#&rsH2a}gb_zEa$*{%;+xUofnx+y3O*k afn0r7N^CxP_SFQX^fn(pcej+%nX*q%|K>2X_VVJ?#X2*uh{b%cG8YyO z_G;QBApGW1F1!`1ehaTek)xTM_f3ZqCC9mYVx!($7<9~ukGvCZxZ$!pLR;sZnBB4C zTqX78TDk^Dk{pccn(g`L%n|6>_y{Vy(=a4!#CkeU@ICf;iT*R`!`0`VHXR1R@0X=0 znFEc8j8G~t9PaetfW-{S7ZO{=Qe50|*TRRiW}+w=i%Yi?WWl8lvC1Utd&>wHQVori zDL6C&MB{{j&pVO$(zyt@b`Z(>G5<;YG{V)xP}ersA?P=rcn{lO8O?EQTclE}TZN@| zV}sLC }?s1EK<`q@e zDZ`gy4Z5Ilj;ezgQ7xZd+pw`%Gvnk|b3CY& e?K3bPm0gGopYOt>YyQpve@);jNcP%G3+Z7DLo(61Y zbTegONt-_WTPC4(HXeO!I)O)r>vGrS&CcJ}>O#25#z#?d;}`2}1A8lUg67(ed@+p4 zSBwbXYoGt=mJ~#H@dCOdn>=Sz(ED9So!08Vj$w3PlHh4G1li6cye8tHBS~b|hKhYM z5k%%vj)J;jUle9l*ru9(Q5!Hfp$x2INu`v8Rlcd5pd3_2rIJ=w-s`y1ppc-_6lSw( zS^oQ7Mmwr1(zQ7KFSm?!+*w)fR0;=+j7mTN*_U#V^haDd>m9V${GiOL*{F?kxo-Eb zetcAdfsr;yU+aBg+;WT7glL 3F%(OJE0Py=u-#tC7 z Y;c- 67Q0 z-5yH%D@oK as~zEfOBU)jpp-fkj!pnAS1j(9ao#YNx|x;0~DVdsz8BlompAA~U;Hd297_ zw)-aSlQY}qCFDd#5 24G`eQ`V!xyRlthP04F`AJ)x!jaUe<3Fz$Ix!9%a1ni#6 zchax%YE~r vw&0I6ZKZk7n~XrFof0 z^$Hq)8szVX^W1y^(z^IZHW^^B7??Kh6`AHGPldxIPFc9z(>LB33uQPV>M8SfpmkF? zY?r5ijav7sj>Y0>U`m_H^+x$+b-;<-+D)Y6r;#3A4(_ZVCC-l6hN&ua4Dm9@kC*z6 z)y%*gI_20AG{$a42*vQDV{TVCM==D9LA>^ikJ{E6B!wuSk;?svU`{c+`-yyckC_Y) z0ev;tKB|48eV`YASr=E5l@v*Qn>Lx2G#3-_yy&vhddcUa>>b`s!p+>h9gi@ZVw*F| zCJEgk@e@-w?1VzV#2oN@F%OPCxaC|}Ds%Sa-5>3<$Zx-citu3_Tw5w^+vC=MnRQZ% z&DVN1zAbBd$&l}!QJ-DQU-h!Hddnam5bi6oB&*N2d0G?h^k%kDIe{>qa=oNcTG(=} zZ(yBM#JA4D#Ka8!aZ0x_xg?ujxc;aV@F73_dykZ< j4f;DL_FSN+A}dBQ(thEc%3| z`ru+$t$w@Hgqe<%)~G?|!vK-F2`vl_!(7A;pe@uoblXtEAsxDGz@at2#RvztfE|yx z G))Fob^0Cl*DT) W0q2-W3)8uYK4qo>vONl@iA8gQ^qu4 z+Wocas7d#{006eccqUeq2N5uWJ3T?@Ye+-BLLK@dDMM?W Uq8w|-S~9}1~TuaXZ0 zJOrSvzgKL#u&=ccqxr}^(G}{jqF>FG&teUvYG05gnp#FDj%9NhJ&)&0{jjVwdH6uQ zp;J8ljA7Nq-Wk<>ZPK2d=n%jd K1Z9^{E))UDL{#cHezJ%bhv|5wJS~XL_Bzx~{fZ90#Vcksj zD-)V?%l4BLN?!kL-V#=v!Cv+S8RvAU`LI3V3kQ+#Vq2|r+Hw~IwWn4jhPRG zT+-R9S#p;v!1Ax+Fll$B^|9_rJ(8wXhafpGU^u+pBBZVqkX~}akWRdhRh7*(^F+Iy zn*y5`OO8?)q8y`t4D7Zg_Tsq|*HGgT-41&@MQ)c1`#R>&A&L&j%kTDc<-uaxyQnMFD}{b$W4{M6uerP}@rCtfWs|+3D_C>XtmSp|CROgogf( zk%|gB6oOAw{BKW?8VF&IOY Qlct`qQKLt7zt{#scfnsZ&jjl7mZw*C1*eI>%uqdqmm? zpoOU}xQZ8a_kQkzIGczB_e+FLi-m|)=)NOvE;0fh?L DHX9{nH`C{lg*TUWUKk+eKnBsPbLgh{oMUyt|&0Q?e+Y-7_`uBLmIr)L`4 zTb#zE6UtBaI}5J}0bi|xg$XUo(x(n*jO5!#i!3z|>u({gt14XYKUxPivNv=kVvo42 zc*ADS{zv;p-}u$-;zMRPs7thec4@Gl&OW{ )A1FuiEIti<0 8>|g8eUa#1G5ezaMasSXzav`iw=0RK?8<#OG+;Z2MLkBn zo)LZbSNWNZ^Ls8uQ&o>JSl(Q3&mQz8TbW0Z8{yF{y+!b67z(o|_C2)2Tg|^BY#8$o z!WCv5{-rkJZ?%tleM-jkkC+(}n0|=9gTX-=-Pgv?#)f;_bZNwEI zIrIdfC03s|Yz-I&Ek(q3nXL+kh>Ad*@BJHWw%{|Pk+p zPk_IGFluUR@DOvfHH-czBCGeUqCI~e)heuumDN8V+p@5=@7VH-t?eIUz%XvDxNJC> zw_t!=eDx<^)6T98y?wtUKgUWtsUpLj)@hXd(QTQ8m$R~dc=;fUN|1Zxy@E>A5LIZB zB@A16*{Le)YPC>n^aZaamrEJM@c`CqYkHVmxdt2oe5=&dkl7*+u40s%2>xElf{CUPCO=p^YR@^>4g%dumN4 m~5A>6Fu;R7jaA2BaaE%a|$)uZnKyyoLD_=P^>fOCvU6fu;K>)Z3q0 zB4fA^v0BCB>>zrYo!A*~m LmRX&Q8JVl*w?0R f#EU)QV=*cB?uOosc6- zNY&CT^%9iFXp-hqK9WVc!bJf57Au W56@N$(WaicWi8DM4BT_ekN z1D`R)=lATJ#a)Ajne|fb`fpiGBvSW8tsEqY%)e;bdhfjdOF{V$a&0|pGDQG35YP-a z5D?}6te^-PIGX%%1{gV6*aH4b4Vlt}_EKJ2;y;;^-p&{!CP4*}?nilMkboj03KZ?f zhlj4GqT?W;H((eWOoRTbWwX?-axo9DnPiEMZW&-6swlcaRn-j8S=6-I(%R6}s?vmg z|D5rrw a2^Oi_9a#MQ!X>)Tj#WzcjB&9FuTpU+<-Jaq{CAZE(^Elrw#C zIDmB@I=b?7Uy5i4sx@!P(mJ*a4 Z9Yp5kyGZ_z%YxFYt*JP`ePBELBlD9Z?BOO zTUW@l9uy-p&!wfAaa1RI;&|v?%`?65_5q~Vt9M)Am^ZBlHw*nidZwKy)8 ke!;}AH?0OWM}2gMo>c=gi=AzHyLA6m-nRl~4y}i?d-3Xl^_DJPs&eYB zgW)BtnatBoxn(PPp~YnjFJFMPW_sHK{}oNs*|&=W-#xZ_#pSDZyiMZ>h+8(9uP=P+ z0@@jG88dJJdv)m+Zg<7*RD!yU-@C!_O6lW|y+a6aotWKnh~{N-kn_7alC`*6YMa>o z2jT?1L;vZ`^(}t_nd*S5%7bm8Ycqs8r+!g>4leD*v*7nuw=BXmpRSE(0ci1Bdg)eQ zw6}a!A# f0ShZumL~h3PR)Mq3s#PU32LD_2 z${&k4!M{(OCw-I1J4!;VhjrdiVg c3Mp=Cs9}5$! >IrlLn$ Lfwm$wLgE<b~405er%A1 zxN(W@PpAepV^1~mawid18NZ`Np$zn&6G#IL9HKBwlYK*sgMS0(BBMj0?N-*wB5QtF z>hRB6*lU|I4ef#w1=!^lffhx<6 SpF_&o_8?@68{wqVTxH?dV1;GaC! zX++ji1-XUoa`s@JlPbF2tHvw-0bzV(h;(IqUe%|=EfQqEr5WMR>KL{by-Amrm^c@q zpl9UTDh_BA(v*@FV3**xmXn)nR$N}fK6SxHkhyi1Z6x!FZNm&FN^+s)kz|zDZf`YG z{S9hU(;8ao`1JN9d)KX()Yw @Sda~+G&7iezpVkzk_79Q6TiIdcR^%Rz?mWZ z407u@=fRxcRz}vfa8#-ES~gVdv1V=pnDn`zp&H}2#7wZ0?owk@0wi=R{l(0mGSb3h zNHEOh{KWF=XrzB*3S1W~XmQ=Fyb=Bm!6h9M-1h~Q5783j?~Auj7P?DFPJULkTHEt4 zf@CXP^VDU(rj;_-YmJZGcm{G6_DAQ@*!;70pn`???Q3M}!ye3>_0Row`DFMrF3Bt* zbgYB~qQN#|Flo(fs7l0>8QYY1lEPw*C5_DsfATq|;ZpVDQhD~CUHz#px!Jq{e%kw> zJ6RoZmiKa^^V!@n03CB;bv0YOI)?SPV>b-%s(KQ95Q>0RCJjJ8{e(*a^R5ALLv$4M z7efCdAK!E2V)ZfXF5Hz3Y~?W2U ykm=Y%d~l=(uQLpCk`f zN1n<|t3Z3=&^f4$86r_+{eQ$bU%b$V=nUkFK4`v^@ywgyR z#W(u|-{~HG?B#g#^u;XjVQliM7#3-V1f_(4#+gI%R|%3dvXxolUM($7jpwM*!;)7E zhQn=0X`f(Ui}?bl-b1fFXXA0M@{EkCVsYmBmBJ=F$F3z)f-|)btAy-aa+zsjs9pAt z%CWY2s@*;^%zZ(*xdkqMv-^h+tpq@Um9tOZ;m%zIS 5stP=J#43W(lB~v{gN+A8I~0e>sJ^_3w9H@e;nLzXjN~H-?;i zRt{fYbI5w+Y#F1bj4k4a3)8TD_3uMI=o9$&eTl)xYAyXqLxMY{`NTu?H=2K-wqo%K zB-`m;q5R8ls0sMV0~gk*kI (oQh#ZZPUB&nz| zU^8rfsGh>4Lvzc9N((G8)$TG= Lx=}zN$RC87`VYF%NgW&?DaG_>^LJARS8}n$2Zt>p+E8#mNQm zEKS<9h^N+;g0wq}5Mjb^#8q|6w6t~4f!1n%2NnUy?!B07@R_!j!i{;gKYEBEYGv?# zVEhHH60Ai~vFac}#yW#dYjqSuQyjJkt0c}8+H~*Ho%uS$ZaPz