From 180d604fe6848e0e933a1f8bedde3376853686fe Mon Sep 17 00:00:00 2001 From: longwei Date: Thu, 28 Jul 2022 15:37:51 +0800 Subject: [PATCH] add error report for module verify Signed-off-by: longwei Change-Id: I2887d5e8ff5c419499fa09524fcfd4caa4a9577c --- adapter/ohos/HapVerify.java | 32 ++++++++++++++++++++++++++----- adapter/ohos/HapVerifyInfo.java | 2 +- adapter/ohos/ModuleJsonUtil.java | 11 ++++------- jar/app_packing_tool.jar | Bin 311421 -> 311656 bytes 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/adapter/ohos/HapVerify.java b/adapter/ohos/HapVerify.java index 0b559fd2..a4cded68 100644 --- a/adapter/ohos/HapVerify.java +++ b/adapter/ohos/HapVerify.java @@ -221,7 +221,9 @@ class HapVerify { if (!Collections.disjoint(hapVerifyInfos.get(i).abilityNames, hapVerifyInfos.get(j).abilityNames)) { if (!checkDuplicatedIsValid(hapVerifyInfos.get(i), hapVerifyInfos.get(j))) { LOG.error("HapVerify::checkAbilityNameIsValid " + hapVerifyInfos.get(i).moduleName + - " " + hapVerifyInfos.get(j).moduleName + " ability duplicated!"); + " " + hapVerifyInfos.get(j).moduleName + " ability duplicated, duplicated ability is " + + hapVerifyInfos.get(i).abilityNames.stream().filter(hapVerifyInfos.get(j). + abilityNames::contains).collect(Collectors.toList())); return false; } } @@ -283,13 +285,19 @@ class HapVerify { // check deviceType if (Collections.disjoint(hapVerifyInfoLeft.deviceType, hapVerifyInfoRight.deviceType)) { return true; + } else { + if (hapVerifyInfoLeft.distroFilter == null || hapVerifyInfoRight.distroFilter == null) { + LOG.error("HapVerify::checkDuplicatedIsValid deviceType joint!"); + return false; + } } // check distroFilter if (checkDistroFilterDisjoint(hapVerifyInfoLeft.distroFilter, hapVerifyInfoRight.distroFilter)) { return true; + } else { + LOG.error("HapVerify::checkDuplicatedIsValid distroFilter joint!"); + return false; } - - return false; } /** @@ -404,7 +412,7 @@ class HapVerify { // check deviceType and distroFilter for (String device : featureHap.deviceType) { if (!deviceHap.containsKey(device)) { - LOG.error("HapVerify::checkFeature " + device + " has no entry!"); + LOG.error("HapVerify::checkFeature failed, deviceType not covered " + device + " has no entry!"); return false; } List entryHaps = deviceHap.get(device); @@ -828,6 +836,20 @@ class HapVerify { return layerHapVerifyInfoList; } + private static boolean checkModuleDisJoint(HapVerifyInfo hapVerifyInfoLeft, HapVerifyInfo hapVerifyInfoRight) + throws BundleException { + // check deviceType + if (Collections.disjoint(hapVerifyInfoLeft.deviceType, hapVerifyInfoRight.deviceType)) { + return true; + } + // check distroFilter + if (checkDistroFilterDisjoint(hapVerifyInfoLeft.distroFilter, hapVerifyInfoRight.distroFilter)) { + return true; + } + + return false; + } + /** * check two module is joint * @@ -836,7 +858,7 @@ class HapVerify { * @return true if dependency list is valid */ private static boolean checkModuleJoint(HapVerifyInfo infoLeft, HapVerifyInfo infoRight) throws BundleException { - return !checkDuplicatedIsValid(infoLeft, infoRight); + return !checkModuleDisJoint(infoLeft, infoRight); } /** diff --git a/adapter/ohos/HapVerifyInfo.java b/adapter/ohos/HapVerifyInfo.java index eac626eb..f5daff2d 100644 --- a/adapter/ohos/HapVerifyInfo.java +++ b/adapter/ohos/HapVerifyInfo.java @@ -51,7 +51,7 @@ class HapVerifyInfo { /** * Indicates the distrofilter of module. */ - public DistroFilter distroFilter = new DistroFilter(); + public DistroFilter distroFilter = null; /** * Indicates the deviceType of module. */ diff --git a/adapter/ohos/ModuleJsonUtil.java b/adapter/ohos/ModuleJsonUtil.java index 5b5801a3..29437509 100644 --- a/adapter/ohos/ModuleJsonUtil.java +++ b/adapter/ohos/ModuleJsonUtil.java @@ -822,19 +822,17 @@ class ModuleJsonUtil { * @return DistroFilter is the result of parsed distroFilter */ public static DistroFilter parseStageDistroFilter(List moduleMetadataInfos) { - DistroFilter distroFilter = new DistroFilter(); for (ModuleMetadataInfo moduleMetadataInfo : moduleMetadataInfos) { if (moduleMetadataInfo.resource.isEmpty()) { continue; } JSONObject distroFilterObj = JSON.parseObject(moduleMetadataInfo.resource); if (distroFilterObj.containsKey(DISTROFILTER)) { - distroFilter = JSONObject.parseObject(getJsonString(distroFilterObj, + return JSONObject.parseObject(getJsonString(distroFilterObj, DISTROFILTER), DistroFilter.class); - return distroFilter; } } - return distroFilter; + return null; } /** @@ -901,16 +899,15 @@ class ModuleJsonUtil { * @throws BundleException Throws this exception if the json is not standard. */ public static DistroFilter parseFADistroFilter(String jsonString) { - DistroFilter distroFilter = new DistroFilter(); JSONObject jsonObj = JSON.parseObject(jsonString); if (jsonObj.containsKey(MODULE)) { JSONObject moduleObj = jsonObj.getJSONObject(MODULE); if (moduleObj.containsKey(DISTROFILTER)) { - distroFilter = JSONObject.parseObject(getJsonString(moduleObj, + return JSONObject.parseObject(getJsonString(moduleObj, DISTROFILTER), DistroFilter.class); } } - return distroFilter; + return null; } /** diff --git a/jar/app_packing_tool.jar b/jar/app_packing_tool.jar index 844d912a05953603bcfdb4d5f743ce6c487e4f72..b681d968b17e4e5367aea863d62a210f20116271 100644 GIT binary patch delta 21703 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�X=RZG6@)Q3++ijOAzbt zf9IbdNCulQFVHv{$l`;cTQX2q!BjdAq zru_T!O8gJyaQH46tX_#Jy&fp+ISX(&B}p7k><^`nmT*l9P~^s8kpg6qB3pPU1t@XB zRSYb#hXpA>og3Lfx8bMKXjEzFCGm%!ActR(y-fw;P?!n$u*V>jWuh*gI5H+3B%uux z2yp$nV=%u6hBARNH$F>E_B24#<0t`#ll{Z*NF8iu0yVDLIA*4Ohhf(sx6#%TkBH-V zZ+OFcc*e#^!UOg2744V%!FQ&qt|0)OR<-nAD$PwIdI14WeCL zfja#&te{r-G!+dCo$Om_XjJj{;fgdM&7Ep}3^dO!7mt8gtcja zglM&+Wo@X>0>V%w9mpVY9Vl4C_}IP-N~WVQ0)v$gxp3*jrSNe&YNg!;KW6|LMp)-E zsE~nzBQLlBdS-x)h}j^jO=QHp5Q85IP#4coRiyGQrlI}+C@ze{8`XG4crX*SZ{bxK z664}9pa!$aL~YK0hMzORJ|t2GuFD6CuwNQ40WW0%622FTWP??(FAHo!1{8VHh7!OJ zDcL{|aZ!bz^MNu<&PJmN*}xNbuE+oMEtP}%hMRfVwg@bTJ~e;{Lon=R!NYatcoD2A zVK{){UMn7!$OZby_x-%eWFg>#r!YeF;1RC_cu}6!TrO%=?aRY_zIZWSx194(oO0r) zeb6uMY7DD{^6;q;6fZ47o0iB&aqbxm??d>ad19AKzao2viPy(recgwYrSQZ-1;7BQ zVZyQkupfDoiV0UiokDb+_GI!jN;2@vc|n#Jq7HN`c^K`@X2i6LS3yU`3E9WuRXU1* zAtF%6tGL(ViM+m87o*nN^*qcS{Ht|%0hm^d&SytE504iEGlbKLMY9U-Dgnj_Yw|w> zBjoZFCLu#oDbPl45ujo0Q$Rph7 zUf%(Wp=LRnU0;)aDkdTFFtPmSGRrSVlvbXL}yps5gl2apIx=3FfexVZwI zaQt1=sSNd}q3&HE%a3gkrWZmbh|nel5D`lN-%^1jjK2GGKT1HA5dIyo`YzzU8WcXq zfT1n?`xlUIL_x>_sM82marYuu6cA+20B9A4hPSlwr>AsGFO&}NHUbsyMiZ&fuO*9a mAvx%UZoa>L;7z!w39R9IBR8SH0Op`Y6Ii=gIT_t;aQ_3@&$$x- delta 21640 zcmV)6K*+!7f)o9K6Ae&H0|XQR2nYxO+NAlB4LSqbr1_CbtOMGl`H}e`1JUjQAns3g-aWUT^FQUDd*92x z_VLrt647}6rk}pePWsr(e&Xz;pS{9f^|9AX_J0jO`zCu`{JdeZH%<1ID1Ivwo!%Cu zZ;R4*O!iJDdD(aU^cMS`kA2@y0rmrv{ZKUipUHk?vLBnQx5<8DvY(plXD0i(kNv_= z1KCNF{Zc%CWwKw3=Wk5*u6X{|WWO`n?@jgxll{?Te=^yhP4*X){nccDGuhuw_79W& z(|=_DGTFaPR%o*SnCv~1y>GG)O!i-seQ2_eOg6@3ADe8vADn$+a>A1{lXH_BCij@! zYw`?H=QFu!@=QN%=6;iBncOmYw#jq+ya&%Uc~2h?_-P?90o_ad^cJJ?vUoo4WAeV@ z88mr6llM3I0Fw_i`5+*}&oOy{=snovLw`(uuBaMn@?m~HoR7%jBY9yKFXAEbQ|#lV zS+t3d^6}Avi!tJ7tf(0$RvK^e2_~Ot@=0R4ppQ@XQw+%QDR}ZSlTQ^-%stJ=r~7Fa zkmob}d?ueI6!fae%S}GpWS=wHCNbR{lUJDRdQq%2*^}ZqS1>ovWLIVK`MgT34u829 zh?et2O|>Z1h*GU6)rrzVQCcKQi$$qklp4g(5G?3w^vf zlaBBflie*OYc=^+lRYT;>^`H~BV`Zx?d!F!@fQpK-y>$a)Xy*Dmz(?wLF|IZ@S#3_rJrBLhYHjGfscQVk+rmPaeY-??V34t z6_tzv)tkfH!lRnP%^OG6$J?UK8>ceLp3~ACi-()zOT$g=5tCo-8dh6gQ-5jlYZw{j z3l}oVET3IfUDZ%kSK228n#zXq zit>hX6c<<4*DYB*M~JgX#lc)1jvTUA@%P+naPsKNT;O3Z0g*Uf{t)h(M^Vxy{CgcW5>i#A8& zGtf4&aH&AMr7;5SR!5s7we4HhMcNv|>zX3M1Y6dJo0f*#qJq|yp7^F{j8UGNu%@N4 zy(zLF*3!Hr9&N(hJ%3xnZLvswJiIZoG}0D}wlp&uGP0{J7pn2Pk6aeSh(frv zwQk*JMg^)%J0^~e+7OP#H)EMm0wOd=*2gi(FRIjxz;m0uU{31fvY#3SCjxitFRTf- zN{O&_`S`WyQn_P&q&1HIkS<3`F*odp;Ma3Y#`+~>RPvX%Mt_~2q3(rE?F`0pw{)4H zPdA;h^`TKQR^D~p?65;fCVQtcSsUI0^$kzUUYbyosW_8!F$~OCY|UX>#hj6+GxF257p??cl7;&AEnC8EI~7x4!cAw%9_8AzGSO<6 zdnuMcRy8O1QZu?0AZB#as)yU+L=QKe>+Ycj0$10yR+2}xkFR>PU~u-Gp73Zb#SbNeZiHq=V-@LcF^i>>fxBKY>z1&x@pVRUqpTB zY!%Xz-G9zK{ZdBQvmikw|R{w=N9FH-U@wEzKLE8%2HxF*bx%3~7vPi>{XeD&}nef=a)| zrhl%KHhS4xzRXuN+j?fTxEYJvuzBKgt>DH;yu#sRZd=P1J1t@~_DtiETmHG9dQdl_ z3{2uICRlUjVRjNHtLBGWm&%Z>cC$X3g`{d}L)n{>d-hJ(5z#EvT%Ahj^b9MBbqe0pWRGDqsoO}G zZZmM(p1H-DB-1Vmw{C4~*$}mTz^6|!jCP#SLZ2>xo}m@=atWW1y!Q0LG#w7zYk$-f zVyomLein0|vFP1%&`X!xlAYSQ(}6cHos27;Q*pV|v8NWX6^E`!^ZKaZ%xX*`UD2UR zTwOIah2!d&Yft8?o!b@>Ck=$p1%Iw{{psWK8J^;d3nL=i+9vMKU}4kNH|cv2e|<}P z+xiGpC*VuI(sL+rM<<0bpz<~ zg;koi_+Gvb$CG#%>1y0ve}AW_&k46i7e|^R;h2mX7QajAYGw+{n&_J2ud!DpXU&(*y& zT_#Ht&0L0&xFl0+w#YpyeNasGfKNS5;#M?mi7gINtT_an{42d;UV9*m_uBm4^ zgV2Y?W(xpEpLz-nAAbfUBri)lBkB5jf8c(+m~kGA(GZAh3QvZXaHFq?Mfqth+^DTa%LB6+xvUvKey_`QtE(@v9m z+-x5(RSD$|aNLyP=TX9+u9Kg)pU^bY4$M#w>O-yU}9LvF9!R z9Dm-&zh?0l#DTQ3`+OzoR?u-P*QALZ$6}+!5qAu|W3h3fG+vZ)SPzT!W_cDH$Oc*L z_pHETLw`kUAzJy1Y>UPAvj;5pCAQaMce8se_5{1sVo$Oq7CR(LM?|SZl#a3E7XLcC z$YLi1`HX1zs;Jw;E;+9^My>$vg3?;cDWsb ziFb4FWbti6+MD@HUH6u<^w*9lSj!NABm)dS!haq;^(07~7~%euX}>P`?wft0%|IdSUlRhIsy z>C~Q+8%?=>viNKK8$SL`i@z?ClFzb;_AlUOe|zKOZzOF7&KD^|T=~%u7cF1`J?PZ; zUw@2pl5cPs4Ls$`Y1m|!8&ja1sH=jJhU4NpioV@VWPf>KvoOBGNo*7k4{%+nW*Rf<3%zkjlV2%cDUS40xv>|D%wdTdM^8*!P~*oeJE z!=RNo?o&Z-f0mGesSrLG1>J8#=Cm|5VO8--kKopfx7f(_9+~zs)s!!<>&2Z;&yns| z2&fWYDkfE+d(<(h{G{%-sZEvd9b>g{b#XT*AIVEQxMU|~T962^Nb|{Rg1}YcWq)hk z2BkP*1+n&ZF)d5}$f~OJ(qIa0P2&5rNHfqbIipXdbZ&w&PZuQ8t?x(o*)1*b&gSl3 z+$5@W$EkK~bXUUj)~S-Vksc}XQvrGD+eB1M{pdUN4l(*JC{Eu4{e2hx1JFNo(HWrs z&qcok`bRE06ZDT=v>)_OTy$^HKXuW=LI2D}p9A{mE_yKNU%2RVLI2W4kADRHD;He| z`qwVH2=s4UbYIZ#y6ArR@3$_xKj`1NXo1h~UGyr@e{j*`K>yK2Uk3V5E_w{;KfCBj zp#S2c*Mk15i=G4eZ!UT&=)b$@%R&Ex{^`*F0{w4S`^BLDFAM!bvVSV8gRGFO%kH3@ z0~8GODDxbq+@PnEdY+)bilFBx^?I%(&|8km4apKlM_&~lnfE79kC^jL-eE}#glp*9NBE?Q5Q zP$ON6nyYC8eV(Ecjei-y26M7pfa}3bt65JL01lT@uB;QEl;6U7p+s2oI&shee%W*t z%SS)X`k+3KGCrocKGxUAg7}x0_W}8Mfb~O@2b}`|xxWMQIt}upT|ox6FH;_b5A@N} z2l^<;`l7MS6ZGijpxqo4%|TC~pM-QcO8sSNKu8sZCPJ!RsDI~x8a}`tK0psw8tEBQ z#T1pez^|oV_>BXIc0jNVQEWRR$qq!(oro|O(OCH1B)~kAc2gA~T#Y!e3BI}w{4mJQKkA%IifW63p{X-gr-{PKq zd`ZaTP^yqew0|&AOB6Xl1A+XYGeZ6x2~BoLma;mjpd>KZsTwS+hLi-(b*fOx?xdkE z&?b`bvoAulFQK#-;_L(KcLKD#0NOnWo%bTV+z-p$PYdZmT0sxNRu4#UiWI{RIIGz? ztU!XZ+yQ5i0!Kp9lROfV!3vTjOdRni~> zBcrA38=MMB52;0w6s@ z^XRK^?dRay&(lVFfwm%&UQ92!ENQm`);0&Mtqxe5wIxlba(1p`NqxxsF%3z;_8|?x zqj&El@PCE^GzDHyZAj|^Ase@1w+-2`D^Q}qQa+h23)$7$2}|uxrJ@t!UX7?7W!H|< zaSzE8;!_O;l7M;(wQobjZ-e>{34!}#V;F{%r4*^kWTYmukd7=s3Q>c!qZX;gQluAa z=@$-ACe7BM^q{G1xCEsZac~41i8{!pVKiusxPQpO_Tm6F%*To}Q14UE**+FZwz6Ue zsO8$qF6{=W(YCas6;NZ6!`xWAd90383&IZk^zQaT8tWz^EeG zpHTZ3K=D_A@Hf=_9Wed_F#d~5kWGw522qBrp#qsfEwX{7$N<)2m*0e)`aR%P=R~ohG{tbBbL%o$x%uP!mtpiVn9&>C`tjvC_ph9P>cl>;{e43Krs3YDc&#am@<8O{#F< zn9jyJkv^A$~xH6Vfjd!FfIfYa#Nva9JOBp)pz%oA&su5DvhVWD7 zDG7Rx(F`3SX4;a?l#+?2Sv4?ckzEGL?Z$G^Sgg!>H1=ZKoW~+hCU!ok)sXZ8%3*7$ z4_iy;urL*}^)#Aoq;aefazr5C27j8%Ho1bpNH$3tZVnBBeue9g*Cs6T$@y%G#6y(I zBpwD;vZ*Mkd~%3Dq0m9$6PzXu<^Aacz%({p<1#`XO^KR{PLeN#ZCuDY8?qXY6$R!% z?=>O$s4Yf&iEgiu?aD5Ip?Z3Qo|9w-y}D1O>=X0^y~k+oK2!gq>e&owIRzL$Q=(jkS!YRm&=V|z422hp}^s0g{m=W|P zW~#P(iFAD;Myo<*o|%_MtW=#xs%|L`j>MitXnBtE+4E4@3sBjMP}kQ1(M#AKPSSboWf=S` zw1mAz7oe??y-v;S4Qgj^LS1js)$ChzGkcr9z`jHK&~_jDo_|!=D#VN_2+6fl4YO#F z%rU$O$Rac^09x&6T_{^Gc3L+$tw543VvD7!_p^GG7>$IHG_WN=e5t-hP&LbR*cw4* zPS1}h)5n&xk4OctqW380LwJ{)PIA5#P@!_ZCv@z37|xfc)R+@GX{%Bqx?CdKMTL_b z6)Lw%Rm6%kihp?7QR1Y~S&Z(Y#$P~%zXXuKf*OAVHNFcq{uXNd9qj)1NOt}J758-Sowl=oAQAj0UC;hSx3Yi3>)xY#(DoqvuS<<1*h=k9gT(7esm5tq zQQMu?OP$tDPAkx4tF#&)W~;Rtce4vp)F^6PYRu1c)PGoseSPoWcJJHd}rg9n-KSs!F}Z8CiUQ%6y#Y{z%3fev#FTp z&_td~GkH&%#{;y8_on5%FP+cxXcf<=M&5^-dC*B;3Xss0$PH(eD+_IvnW;!awz#tQ z0`h(+qJLG9IzaXlJ2zK=rP;Q_Y@J5$N0>(>YtQI?CqJ-K2wSXWEmruY*}sE<^V8k2 z6$e&z(rU4n%V%OU3I;AH%MkrD?EV?*_!RVZ(wb#OfwiK4Mo2xeJ&AEXF)mzYigBhr z&XnWi_Jwhsv@Ve(ZosBMd?=ZG7-jL{6yPJMKYuTzA-sqRd5FgFVw%89XgV*22F6ew z9}CYKM`1pmB76dE;S*^)pGU$+x|$|P zM}Nwon~|^zNAl@Z%`^i}ijgPxstEp}G+39CbiM&;qak(vGU||G(m{9rDwPX;c~ugY zftVy~d_kY8F#)+LQ?OuQeOabZNv5rmOsV=#YCI0MsVp;?c^rWTVQh{lZDjO3Z7TBz z{l_UP%A1WuF}JjnF6^YHvMl7u!7S0RMSnINqvivj952!O^(0Pue4+S1gn@qRsTXgc z0elG!<4dWOFQdtPIZfj$sDiJgTE2=}_-eX|UqJWqHS_>q>*#Ho)=Vb0|9}i#S=2&f zkVs!BlZ}H;ntV{F$)eQ6wm@56dO)YxSx8em$mUJGgyj!G?bCT1?V4yX<$12wrspP6;UzIU*s~sk{ir&UV z(?A-TDZEwectKxYrr7gf4C>A$D}R_J!>mYa_fk(7nZJ|TmU$+c2PpH(Oze0s<(d0v z)Cr1V>x~E6J82vGZVPP3Pbck2XNfwPWa?nz4`vDm{X(RjWm%$smfb%~F_~pdwDK&m zG?*+6`tvNoWOguHZp_7+x6EL+;w?+?W`Vai^0HERD|Yi{iM1?yElaF*$bSh|&(bI; ztr@|pg)H7mz4=xe#N#xax5JpX!I-zhn0LUKcfy!2LZG^s*78eeGv7^Zd=FjBFGHZZ zoNnM((Cz$6x`$sykMYmZ5q>p-)HU=p+Megv(@XpY`YFGO-sLyb-}o)`KEIVQejCf; zx3eDn4%UZ%kqzd1*-*ZZjep^HvNC=bo6qlN3;8{)p5M!sqJ9B{Vbf>RI4}--(;W1P*UeHQ954+Ur{QQ`TuaZ)ePy9rEINqKYuSWpGjPkgjQt;h_Gp7o^t>Ds!mdj4it`$W`>7u~J$LNx3MB&}8JF{S5PdZ=K z`KJiiV|2I{eJ@Sxr+?nSW$MTW_v{tS2wX0$IJ4v!T_IA=L{wFI%VEmlPa&cnp?F&WjUDp@Rq|(O0sktD@mX5RpMx=ejiUSo+QDC>-TWmdZ5#r%T_z2p zR+mI_eHo71BBth0j9npPYA>88u9Q1qKkO01_3d~Cy9z0yhkq)ON|s0kMyW53=a|Jw z8&$7m`VM`dxU?AWTv~iYAtaFU3UeSTyF|&Wp^s}EeGJmax7Ch5t~@J!TqP6upjTk+ zbz%LvWUS@o4u2C^zXhzn1+3o&*53x!-vQR|0PF7o>+b{WA5a7TA+6*;mblJ`(IjvM zyAGOl>{^ZH0)KX$MstpXW`TodUv|An(Ono8xG?NPJQ>4b62tW9-N0_tcYK#(IgykO z&`5|3+#7nbC~);Lx+Z`<{MzbJLil`fbH?9A#QQBG-tPdy9{|7~rGWWr9-Z8p)LSyn z9ClUBGM(<4#6F}PaZXTN-2|>~K0R00by7>7H`hqUr(m}WC;%yytyDr|*L0=Rl{O?Q0 zXm529Y<6D<-Km@J>Y%%I@tzL4SC#Io!SmkY<8(jHle%?(2R)#R4|dQ)y7+Jh9XRA* zB;S1-UVri%8PwY_=^P`IiVQzZFtTWtVbOU;Hq{$Bw9M#1Ym8iEcs;4z2+$=)FS^F) zO}83(bdQlwj~IO@JADXe^~&oihqxFkFzR%B?0Q=9rQ$3e4o_#s$5_; z<)T;sdzZ8T#G$0l1l$Z8-q9lCl&@nptJRO329r)yg%g5yHy)lJMql|_aQ>oaPMx%@w zG})L*vyEA_*qBWXMg{Dr(mDQ4hTrXzd-)I=%kE@%Nt;+SEt>At)iK*{j-`bB<5Kns zvVfzmF)<@AL!4%jLKXzQc^M*w^x;tBgJV9euW&MuH2%oFA;@?1#v<|>i^($TDc5MA zzQz)uw2VT=avE=}plQZRsxr<8N~>rs${UO|5+(61%3{i456WZ4Od28YUNVq}6@RgZ zWI+`fbpjBKsBp2?gg7!1+u~k^QQ=7$sOz2Yt0D@T^ny ztgJ#}|Gcc4imK;jRYx(5v9=`ewSPdUlU}IRnYcV4yr`1!+Tsw%uj521dMAJ{6Ne+C zi9E&@$}w6f-)Kcx+e(E-3~m<(=-a5$*iLoE4w&XnT5as2t;R(NX_q)A+CYWu%lcED zJ@T~@$&vy(9}o(&VF_~BJi8! zIICl-0Az@5v)Um8C8_@CgqlGj{WPwDD_%?4#&wYUdKzflK*Nn25zfEh$TkoegE9^* z>U`NSN;w^PFH%M%CCMW85lxWJ76jK%AiGi_=Es_A$!)cLeHzkSPYT&wUu|>k?7#>p!ypy|W%&SDIWks-uOr8J&BC2yhzQl$f0 zqXXI+2ef74uV|7$6E!wy1I3NT7|O6S%jNPn0#_({56Nf(zz!!PpQZuaDgjh@IhVI5 z?O=S;6^v_(11~EyWq;ue&@4%VW=U#nI0-agMo@kQLHSh#<<}6DzlpTxbsA^90Yu-# zw)_??GQLIU8*gJeY10;-)7)fo<|Q-SJHi7Lc%ux!#;S`?8;i*IJ<$u!7t zP*pX{^vmj?*xZ~T++PRbqW6Jlx_tc@JFcV1ZJ1mra&!V)@qay~4YD}JfbNBY@Hcge z@p>LJ5^w!f`1l#1`8mSoFDTFWB@Hrug&qCZFtpz}*j&nF1qd1lY;YOD!j#222;~`>eH~s;R{|S!&1&;p>j{if$jQ0@a-$#`A z$cYfcz;%f<_J2HtcANiM4*yeA`JW;9H^m=~DeINrM+yGRowG-pl;RcJieFKmKD=s& zxmVL2P-K|%_{j8_l#)?_)01Fz`~T@=32N#E?E zCQlxemrs_b59NCLLdqZw@${#VX8=v`400VECOIk@>v&H{DNIUX5qCVq{qDmQe_*Fs z|Cv@*!D{As3ku{Iq9`iW0i zPEzlpkYwKy&o?^hO|``;?nU}do~dMbrcn>ibZ|b?rGv2`OeX*UO<({3P)h>@6aWYa2msck`Ll#5r2zxhr1`TfDqaBt)};B9 z&c+s()tv+nf5lr1d{o8NKWBC~dv~*W0tq1y!b1qzgoiv$00|*LFa#xlAoAEG8?vz3 zjmd^eTi>Xy)@rprNPXKDTk%m15Tq)_7FyeWTD3k}AGNL3&uVS^X{*TN`_J6FckezD zV(G6%xp(fFnKLuz{O6oAXO?G~3vvM$I(eI$=JGs^ zzbM~d()i07UnGkc%XXJ&e5rh2CVO6<&R6hu`M6T!t2Dma&0pcKI{6wm)$=^r>{{9E zYZ_mt@z*uJUXE~se0)RW8)f}X^6^bcx!J|HfAFm?zKwUtN4KPXOVVz4@g0(O2Y1WQ zJ6(L2{Jcy5yxYb1$j^K9&wE{bpZvU!yEXo{lfR>}Lu0#~#dn>&(@pI>&&l`8_xI%E z`%Zp9zIUbbgZw>>AJX_?S^T~n{t=CTpz))!_?Ue3$j5H^*drf%HSX1TpT>`CykFxV ze`@@M9Op?XkEe2p_$RV-$jyiOr?T`j+36Yi__@Zv(D;`c|BuGcYW$p}{YpNbmkeIe z_(ds}Uu*o5B)%+(ugKD?8vjP)-^$9@cXmVL(TG4wbeBn7Sx=*Vlflf+OTm1Q%=>{XV=wMSFNaBR_8|GnG0?u6ILo(H?0He{?cs z>r+_lYhUH>2()a&M6#M%{Y_gysqMtP1IO7zurMFPP|b%D-E<%IK?GFzjaYC|ny z#Ver|Q(pYg+uEbUk4tDfJ7FG@W#wEYmWZ!u%Tiyv(a~LVVUxc-5`bixTn&LuAz!4c z0~HezC)o!}IrYJ6iB;|G3j_XOe{*MTXM?W|EHdI&gl4HYV4YjlS9LfT^f$?wFy-ql zS0z+b!c;l=ZP+M?LXEjJ+}suP*JC(Sy1W^G1K^<=oQ>7`HpRElYpNOp!9ZkNTun|W zyr8Q+7-;fE{LR(ju22NLmVmB$)Py1(+hSVu%g@CLN*mJRR{~6=yPEx5e*;aDEFl$> zEHnWT)W%b0C!>F0%9slYJ>cX&Ma2_aj5%#@Nvf`?Xi~E|aVo6yw?H7dakS-uO|2jn z=;L8(9pQz6V8q{n^5$?rN^pWPq_ws(1xXH=-E5)g;|)sD6f?6nG$t`rS9us~-ll9s zYz~V`PAb#NledsFbhj)1fBM{9Tjel%IbE+X=Hga0#>dzs^(74@H)r_dlT6w3U+X0o zlhG9Pb#_9P3foMhl1)<*SkrVUV~HlFJEfLl?H2nwTlKa}lc}c!?w#<5OcxB)HvQYS z6_ZC{YoXsTkK_Z0y1*Pj04lg0dP2l8OyPUTIX!te?Ls)Pd2)V_c;S; z*^hI`Gn_*JHJvcx)nV9sKP=H$gK?}X^?vi2_1N`ET@VHYLQTOg>8qXo3yo66NqP4( zW8FVAGp#~T`zd7a847QfKlygq+j5SaJLt-bU%9FF|XNp5DQ#>~iY7T$Foa4AS z#(HJSNqRahEle{Tf7gv^_5ir`GtUCcJQw&wop8A3M90UmHfmGOG^5kn#0(_jJI0XO zFT<1SUAg^^Z8G{x(z~TDwceXz4NSdTJH_Upic(y z3$ZZ~QDaaCx<*{-ya4N+*q4BgF^ zL7Gp&wGFJ5f0|J4CV!+ZelkppQ$ctjE;;#B=x#GlK~R=jb{r3V<&l4FzyX9-{T?{8 zE$6f)dMvI5%(H|m5IaH)Pk@H>DKut5QJtW1EHHoGZk9NXOu;jWG*KO!8o z&NSOiloR#P9@^{SclccoJxq^abDH%P6$uCQ;`oDje{rC**x%M3**40<|I6=r=rBFW zG{2wzEj~=4xvaP|+~zO#wYL{lMm$8&f=a+omy4nF<39N+t;f%aBGuv~s99Dz7c1!<0#y=M)ecWlo}7J<-K z-TYJ~e|D{EZ;$3i^c;lAp%0b9{-jJac=*r!J~nPLrak-t?eg$no0VJ}{RU7GA*q?qSIx`}4>kete=F?5kpjO18Y~XK@b3d>vK0ypcl0sa zxu2U)!bGY+4+G;A(wwxM&(9^5P|hAWm$m@r(bf*vh`LpMPwaEZ87yOGowwqlo7Lx#Rfj+5_jRglWr6_|X>wysr(G$GNK$4mC3ZaY2EB<8G|{uo?+OH)X2Zz#R(q2JRVoT5M)Qkzo@^Kh}W zm!nWk@6fv*cCp(j3OziC2Rp@Z4`*_gQ;hKNP%dzaBAl?2bd{VCELH~zE2N^fC^O#X zd&EeArROB2u@KoLg3cpG2?tz<7!5Y@;gLs-5o1+ic4*@4jPwi!$&6DEWP6N`e=`;L z)gh*sqGD?@)Zk)~Ex^qlcCzNdE5pM%oa^B{&SzTK2Xkw(C>8?5Sp(|`Op87bBTIH9 znNyOHIyomjEs@MB$)lc}m60_##RXc@0Lh%DC7aHK+!#Wf_O1xJh5W_((HHyUGyw}U zPK*ce=7+-(jOuG&>W{RBn>(}8e?&>P7@g%36S76AM|ee3*d_@uBr>HKSI+cG=^2v()+Wm|b&ZOWX{sb1CYm#zjl(Q}EMHcn#E%UAd+RW#0go#D_*m_etQ8D}z=HEu?%4W|+_l(pDGzDO8eJ0mU& zE>panHF~^mE0HH^hrgpkf3_Qv;!G>=Zf%HNWNqz)y2KIXc{vu*GNtJeCC1nqO)_Vi zw~t1K*<<}?O1H$2u`iw7(7s|i^HNh6OI!wfNXiQIz%pXYtThlrt-Nu(Ltc|pQsi(XWYaSq~Kbez<532WHe+VVmL+TaJ*;GZE z|AH=GurooEMzu=jbOydCwS;3d^u$!2O5;f+BmBbvS|qHK3}Ru=0LJ79L|9gNG#N!Fa7<+?jH zRfr&+=4);?f3Mrn+dnZ&SAy$v8-b92+d7N)sm44Uj<^1g9n^!YyzYC2RZa zmjVfHF-x40E-LtPb)()-jxG^F4j?&*g^rBFSxZ+)No3MOf1@DxPzyYRGJms5`fb|Z zaD_=#hWNuB67>-yIarhm^=3;snI`>%X>v(_EmMlx)!}c0_f^tP)5{X2QAZMx8!#)@ zuUg(oJ4K~O%og*Uq6(+DSY;rzHN3??sm|Bd*z806<7@HBfg#cKw%C_bRAZ>RaCl1> zqL8aIhQDGNJwc+fgwE>HG3WQZ$Snpk2iDp!_Wrh4B55<+}~v57Q$k52GK@ zqbB_^eD_$schd;G_t0KYdQqB$H%tDdp!`5J*@tJEedfB$YI-6+DmEOI>8wwXa>O*CAbYjdX(TX2pLgA zra{Px60!|Kjw0B1VG4FN?ei!P&r-@DFAbqG%E$VOXflnXDO5t!@HL%g(hNES|IMQc zT1=I+e}v}JIdmqi0c9;!QzI>)%~S)qFQ!har7xkyMO0@I#U=C<9l-lXag>92KaIa` z(lT7x>JR-`%?u`vexgKs2(^c!;uD|XZHE}2j}u+4TGW0Tv}P|2uJe}K_R$c5@$z~o ze>V+{BNXhWVR3}Q9vTi6C(?>`)5t_x@opLwe@7d=hsNxtv5BnsR`#LBLocoeylTqdBx5$lE}E z+DO~TN7n&+_fQk|Xfr)aE%YjFqPM7({tP^RN?VvI$TkXd2DS4Lx&Yg+lglZ>)2WMR z(uG_@+juE`k(bezc_UrKt#mPOrc3!kf4Yn>rOWwpx{`08tN1p$n!D+%d_P^okI=RJ zC|$=-)7SaubUpu)zQNDYjSB6>z~{4coPJ6_LkT!Fa9_xK=^6StaBc1YRTtd>#gsAV z7~SurUpVQPM`@yy{wKdMKYv($e*O^}b_Dw%)xLPvG%KyBlRpf7#x}bUD62pyf7*O6 zJyBX1!(e3$E3>0mnJuwWXx}(zxZder+8)=Xba-6<$vbF$tUgxROLMwu0XXlcx!8hd z=FZzgRS9EP<<6JH;R(cQJoeB61%vH^cb>R#JL5UWf`a-qLq3jMFBbKqU1+t)g;ZeMAYH)>y(mi5r0eYBV{zgqdg zNoW2joe1e)`OO_P&LYLLAe%A+pmi2G?L4v5)a$+Uh*i*w41d(WUKd%_u&9@ob`Mam zXAO8m)ty|g^)RUf%?yK1e|-4NL?&UIZT-I4@KtPyhi@4ESRh;G#qfC`!y2 zx{i_)hVV054byj&cp!Lq$qW*jP?rXt#rvrq(py$%yqD_us4qA0e=)H|s!g`B}fz>Y-Aa*X6fSS>MPrwb68 zON`ioz$+C-Y^(vJvR3ZvVgoH24+TOGK=0YW-zz8ydJk6We^p@Brm$41g2Q41OM3f* zX8VI?``@CyMA{jYah&p<^qTq~j(0p9?-9~~x?Bmnqv-h=ZPHP9j66Aufg}4UOG>G+oTd~N(p&tvBN2oM_|}uD&kR8 z%wv_n@^o(We>;eTROv00SS`X%B0I}6AGf@c(&xd~$y&VAaNKZu539pK53M~!6TRv+ zUVin^`TA>}SO3yq>w0N@bj};}9vk!?8+vG?{_=VCFa71S^k~$3H0nJXd#Fi&HGB0h z{nc#g;n#ck^&b8nYSCYty!w~^+GOd`s`qHsd$jgYe?Wh2_Ud2yYjd=RMb=A5{wty> zfXM0O=4mt(5n%-)!r5E_-%yFDaSnxe9zb42cXBn|%?s%vUPRAvEj`b5Foa84@G`dZ z@|b=&js8e)OZA}iCzN#kxX7vT6!|AkN$=3RhW}cqA8M%E3ni5w)?>6S(HL!ujL}MS z+f)=Vf2u4uqzXgJl|jOu_M#LP*z)H?CPr;uv>9p@^5(_rz(VIW)Ei|{?lo8x$Yy$N zX0(~KbTLaYm$EQp9|YG3kT%gU_EQ~0cTKZqwrNG>cU3ox70^JDQcPXfMf7AP*>AO15pu9&P7_Ht%$re32YB^)M za4Zi>+LC`k?T7SNV=K(iy#igipW0!2FQ|(@jZrA>G`2d?pw^iNwWGq}EpY6iPRLmm zA_u6eJnA(@fn@lbJ+$@Qqy{G**?Ho6?<1x_OEF2}iy_cUXf)0o)qEM%;oPx-w^JKm ze~B~6)i{rQg|6VQn!>9_O#C+p$^kpDK6=)G>3mr?lQ?_-9Y&lj!n;x#!f4$`1~SJ` z+A+#<(#J4r$7lp>pE80|ob-<)G~!bd($ML${3oXQ2|R%=%W)VG#tOkrR8poGJECIj zsF%q6f`GclSUlc^aAW1tpKY`FGuiTsf701?RoF`l?7j4*?zn*L%QDh2{NP1#0ok<{ zFQ$v~W*Wh_(0IO;YH(~@gkxI+e~ZrN+abz3=@Pyhn7qdnWdn|tM=-D*-l$OtRf=*u ze4TD+w=3@w6Q$n%phEC=dnS9_*@=ZP6*hiF(??1W>fU0RN+@|0Ee zrH9E?1`lz))VmA<*2%9MV!Cdj0+p!{`~uneMOdg`L%%Q4OnwF1>s9FYH?)jjqegz6 zTKEn4%(q~veh+j12kPcOf6~4D4jtfk=_P)TUgba2>-;`_#DAer_(RU(zwsdcJA%WH z%p=5T>M_H<@$x4%%A0ju2|QHm`#*E$mB?21J%k!GvLv^O6pEBJ3N4as$(G_LO(Nx% zEQ2=}L$+kelE~O5$(FKSp@=rRrABePt^V)KblvLn`On93&htFqXM5l0nfH7?@0oMa zpo;vDUUhMK_kH&vx8KekNb!~SU%ttIE^?Uk7s;G9c~fAbYkwJ76#xGGB1!qnSBFY( z$J8EWF~jSgzqQ^WO_41bPjpKn(EWGaQh7=J8o8x)XY9Cb#3Ec__@gndAT9jK?(`(! zd+o7aIj(o5mE_t#R>?W2^m$zk=+l|VF`p=qNZg^6XySCvieYxpwx+!x+-$YHNYs?- zn&`daVY7_(EAgg;2<4c-RH^$>EsIx+sC>ra&yUWFv+{@(h5PF~SpSrcC(e`+=(45b z)Wq3uOcmk_Q&yo7kr4m-iy|RjVAdcXk6+0XT8~*vGwp>~Rv=W3NU_K0{RFx<)_wGp z=OU)=l5s=g_*E>FM4%gD-L9uR6`1xstS;VA35=qTbt|9pT*JJcC(Jq+G)U#43}e

8RWW6i%2opjgm*XQ|aByZsmRw0F=u2R6u#>I-IeLqCueV#JX#-Zl6=0g3Rj@ zpa|GG3y-l!o%-*vr)du%&k(0T0tFH&P8j7O zfnJQ!iwX2HjPd~e;go&E&_*Gat1#;k#yUY9ujL#6sKyLl!VK162Fo)01z9JSjMpN* z=y+|NFiYV1>3ROp7y{)C4Gn@lW&{-nghWv27NjpI5njNeH?_b680~{g-fp)0cBQ zB&}U^B>Qg;wYyr;jAtF&5~!^6C^x5xp#}1w?*9KB<@9Oa0)v=BmtQvkH#j4dZ zX20r7k9?B8xXTtsjYC$%QT-ybC(hr_-KgIl_C#JrZR||USgzfS=Ur#DblhmKwxyy9nYhw>nsJINR^7Id+CEgFLy?}+7u~0?nwFY%VX(L zZ>kJmx}}@PkGNWX3s$1}um(i!oZQA#FBL|u&gqY{GG0M#6-_>-HvZ4P&b{poiK)S9 z45i;k@PfaEd)<GiYT+ANX;dimx!HC)M)WYVX zxr^6Q>(=DH?4;{qzju;5Up>x}F}&1Z8B$`Y8dLGG*g=x2d+fLPD4*chJB!X&8+#ot zx%%wry#afVw&x*tjdSQ7OT_8fazRr?E%SCaOjoUTap*fqvhEMDY}&lUaKE1(eJevS zJws~RA(iB$-QqGnmH+uz!WGvyVjE08pMSUOm}8pULxH}-y51Rn5<5rkXY*8BIv-5; z`}8)@A#cUX{GA%q`G`wNj-^Sm8Y4heE3PQie3MPp_i1_%j%1q)mlB zzKY6CzLV9P)JRT$-ejg7-83k2lHO$Zx5hVkXHAS&emS$0rpSRC2`IHI*HYl`EguoHIN4w3eUj`Ma(~ ztDWYHb061JwkE*YcCWSB#od1w zv-9CzMB4A>Zp260OI&~Nz;xo^s!I%o*cY_O7K!VN>-2CA*SO&fSE;QrgTtX6x<#To z_*#pah;3MM=8Q+=yVSE!h$18#g+>w6F$qnxRgQWyx2xp$2Mqfit6A~&ng6@Zn{#4~ zne!8mwa4mQR@wDE>&gs%+m#XQS>5#Q#5~{l8X>_)t(KyW>1(3((annNBAN1L+ID%D zMSnDR_{MQN$;ekMMn7NB?_|ha%a>ivo|01?o>t_RS@``+9BrP5q)|cXV*k8dDRG zZyukUUtgnznxaFV1hY{@fnb7z=$mg$)%`d(S> zHSgB?J=RJjd4xBXYfjLzw45s6)N9&M^D^yA9~cwD^B|A z(Z@Hf$ZWK^JGTGDq42nEosQosV?NEqUWlQ#Gid5&(-t0g9cDB&Mu~|xPWy%gHFqv{ znyKGp{zcU6blq+G3e(7I7V;_8(<*1vlZ2w}X`x@K!`_1jo=DSuPsOg6S{o>Nd*Jut z_~w=kj~?^{KegAM!Bo`D!(K{}r;FCQp{?iGw*xJkFZfOs*6NDJYkMEyf2vln)L_kR zZR%a^wnvn=L$>{nw8oq22MY$tdk)`d3Lmyld*9J35|OcSyl^YuCBkA}bv{{{rP_0IW3T@JZ`Xq% zo~m7*d!*+G<_C;>STlH>$CTJw+acGOrO%wHxL)iLRYvKBWBj>d$C7(@d(<6B)M2>K zdCY3hI_gH;T2ymxO8r3gg@@az9K=Vp{zXWGJ^HjBtPjX-PCdGlB zS1K-ScAk-TX+Oa0x%Jjc(`50$9-oN z`=OS|7A2hhx++?Js~YEgzm?2BSGFZ^=%hAPs9g${z^;3^Ow{Of&FD1YjWHWhgWha) zHh`mpIie=g1owMTKGv-j@dHTUijUq`STvZj6;aN=}ijl_1a zhRESr+JN7dae5a$T2qsG0GyTO@YPQO?jtvxw`kSSsemZK5#*(SJ>S0qkZTzTqZA`j&l)^0XRXz$_$__i2OP%Jm3T0W`N(=R-k4kkR{~6t(icLLkF^HOBk04loZ)2 zKYlrhVLyI~;k`_tvYZVX8!GOL1Q@nL62nA)#9-5wP=pSYIH<>ecAu3bU|23XBz{7b zSwmYoSiwONP2LMCBSaB80B2%fAqVSA?_ij}mwzxhh72I5xS6<2u6SWafemc*ppEV%lF50>Zz<4>^&gzhc$1Q76KDo;{can76J->*N00eUPY-_9_13$t4KomAD0+o6ZH{XVnY$~ zARo&mvWmcZd@GGjsKJnAlmp5hV-k$ zfwiTmFqCS!XbT3aAWme4*MJOR3!EuM?$O+c!}HgW)zMb2=I}LOj?dj?hw6@Zy;(4~ z7?ziTwRra1g(Q~1!aN`awaSs-VjS9D2NIA|U+(2V8=qGFfm2ovq&W55S&r&?P?IbA zS`Ns#pca=Pt;Uz5Uzngoj#eOphsa!ZK?Rywu!&22sQ{LEmKm4WTZtskk{7haV0$I< z`z4LbL6H~}1fk7!V6yzze*3w5_h-V2>tG9>#yKm%9$C~Qa#d*T9JARHd1zdZ8ZV*> zrN23c%kj*`mvM)EwhBdiw}s1odk5zXGFbWlwff2*`yNa0f@`V)38vjZGcfU;5V;8i zpu&BeA08@2!y#Uc9I)=OfroK&H&K%4mTHWALW5VfF9Js=V1+rPup>VYZlLxi@C zs0cZ$`b7Z5xv?rWAjc%}A7ncufC5)`jx8&e;mSm+(7?Agpo!N;)yKBPDQD?MH1RJ? z*c?~fVatMqA9gn)EZJg#1E7s1>PhyJ#93%IHlb>7v4ne?zOS8*N~H8zbdM8@?s1m= zR0#@J@NyGa&RJ+I%-@{;x)j4C*Z+#LvxXD@qCQmJXxfV^xpXat{k(w0yFn!;Q0CZL zci&f67A;y=(ed-rMvj2)%%FIu0Dq}cxfyIDtb -- Gitee