From 0b9eb07de51707c09bfb4ede27a8aa4d0c558e1d Mon Sep 17 00:00:00 2001 From: zjubfd <296179868@qq.com> Date: Mon, 20 Feb 2023 14:50:22 +0800 Subject: [PATCH] docs: add the overview of architecture && cross chain (#67) --- .github/workflows/e2e-test.yml | 2 + docs/architecture/01-framework.md | 1 - docs/architecture/01-overview.md | 110 +++++++++++ docs/architecture/07-cross-chain.md | 175 ++++++++++++++++++ docs/architecture/readme.md | 2 +- docs/asset/01-All Players of Greenfield.jpg | Bin 0 -> 140768 bytes .../02-Greenfield Blockchain Network.jpg | Bin 0 -> 117654 bytes docs/asset/03-Cross-chain Architecture.jpg | Bin 0 -> 104537 bytes 8 files changed, 288 insertions(+), 2 deletions(-) delete mode 100644 docs/architecture/01-framework.md create mode 100644 docs/architecture/01-overview.md create mode 100644 docs/asset/01-All Players of Greenfield.jpg create mode 100644 docs/asset/02-Greenfield Blockchain Network.jpg create mode 100644 docs/asset/03-Cross-chain Architecture.jpg diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index a6c005e21..3b633e24e 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -54,6 +54,8 @@ jobs: cat ./deployment/localup/.env - name: run local chain run: bash ./deployment/localup/localup.sh all 1 1 + - name: check sp + run: bash ./deployment/localup/localup.sh sp_check 1 1 - name: run e2e test run: | make e2e_test diff --git a/docs/architecture/01-framework.md b/docs/architecture/01-framework.md deleted file mode 100644 index db4b8eafa..000000000 --- a/docs/architecture/01-framework.md +++ /dev/null @@ -1 +0,0 @@ -# Framework \ No newline at end of file diff --git a/docs/architecture/01-overview.md b/docs/architecture/01-overview.md new file mode 100644 index 000000000..c4a1fad63 --- /dev/null +++ b/docs/architecture/01-overview.md @@ -0,0 +1,110 @@ +# Overview + +BNB Greenfield blockchain uses Proof-of-Stake based on Tendermint-consensus for its own network security. Blocks are +created every 2 seconds on the Greenfield chain by a group of validators. + +BNB will be the gas and governance token on this blockchain. There is a native cross-chain bridge between the Greenfield +blockchain and BSC. The initial BNB will be locked on BSC and re-minted on Greenfield. BNB and data operation primitives +can flow between Greenfield and BSC. + +Total circulation of BNB will stay unchanged as it is now but flow among BNB Beacon Chain, BSC, and Greenfield. + +The validator election and governance are based on a proposal-vote mechanism, which is revised based on Cosmos SDK's +governance module: anyone can create and propose to become a validator, and the election into the active set will be +based on the stake ranking (initially new validators may request the existing validator set's votes to be qualified for +election). As validators will host all the critical metadata and respond to all data operation transactions, they should +run professionally in terms of performance and stability. + +To facilitate cross-chain operation and convenient asset management, the address format of the Greenfield blockchain +will be fully compatible with BSC (and Ethereum). It also accepts EIP712 transaction signing and verification. These +enable the existing wallet infrastructure to interact with Greenfield at the beginning naturally. + +## Ecosystem Players +There are several player roles for the whole Greenfield ecosystem. + +
+D7= zWzi7gQ>>8}QYeI^B`>pIb;MFc4VRgOH54T2_^u)HUA9wB&e#vfH`I8Ihi5*Ao}$ z^cXIWHsX=@$KE#l!jA6Q1z=Okv4i<11KRE2=8PkNuA@rV-E8+UsLtBq=JnbW#mzuyi5N`?uvDM0~ z=@0a}Dxf}Qh`L^rw-H{! c|Ja@A~1AgXJApA>iscJF2qPM1qK^L#({ 0K poFTrn|HT{T!QI|YX}P`h z3IXSmIsf<~ttzKUs&mE3&>9OJsR6zWCPw_pYdd2Bd*Loa8pR)eRu!fx)s5n>h>^lf zw?wb3_V4)1iCpK}_}Of|(O+~oCC+hu Oy?zyRUxdFGc%=+WE<}~Yt79H#Q zP+RSYsRET0Cg`*I&Y7vcLbpJ-p}w>Jhk^>7Hl>{wiPzpY q?Ql{Q;7?rlycaZ=>xV z)-mcHAy694FOg~>y OJSHBE=C`4@s%jeRNIX*I z^ Fb4_>fqC zqg9~YhV(+>C@jecG$`}aml zO6Ct<*}fOyTt4OxvP}?9>wWG*v8wZ()mI9tb$!MqQd)j(A*1GFMYFlBX8nzxceo{0 z#>iADOtRP*^XDaH@zR%uJXSRfCH&u(cF>^j-?E_fsiGhc#O71-gEeS_xsuDzriKwF zjU794S3B-!&8xe!S;$hP9bNNA>a{Rr1^cc1m)=KTlU*d$;;H) +>ZMXG-Z9z)ro3pbWpq!Gb#CHo;zqBQL z3m1^z)N+d1u}6RQGl+Rw+S~`k Ea$v#nRiv zN^D<{P>}rZv~Y8*wXwDEf&F*^4}mE@^$YKP@ghz}j)Lu>)HjKR8n12dTQctsfnFK= zE@D8tLy4z;JE67zc|ZPBj+;c#Qy_UikQv?q^6LNrG0~Mn 7N^7}1j zOD^VcgZw0~)KqsbR^@>;m|xkw0(%>+xRawCO~S=Nfxq2*zJB %?p7DVO(dF%EM*3(t|x5wwVSBH#O{T{>rji0z0I zk|PWq{4xD!r@+dw*sUJ0a}WgP50hrwm290NGo 0oKcQV8)Ek?Xwjt|^@ zjo8ixZKpDOkQ!x4c|v+rKD^N>R8v*OacLS{E7r`62Jj@@;y}9d=cx)Y-{HyI#*jb7 zFh9ja`!2?ku9Lz9(lS$D%#k_41U7VZzLoe2keRViv+?o6c^Nk8lfTv^q-N9Go4_f0 zkU$J`RY$D*Vm9fI=}G)x>NNp@9+P3Z6u<8=jclH(Zdhz17F(%_sE)v}1Bsb6{m~Lc zP$QAQk(lkbbfe*)8v9>_fAzrsyFG9X@@ng_?6wWiGgiQB=7G^}Q!q_!yYilH@T_sx zgXI*XUxkgs%|_I@COQ0-{j3yVzrx)VN%w9GGryf1+l!6kAzN~< ?t1_w8mZ(fER-<@}G|e+1k vGs$!zfFkY_UQ&QK)2n_fAmLzDM@+^oz={& #7Q0U#N2bQC2f)x0ki02I?BY)A#SbE*U7_L9TfX z_AW_$E=;=*r=)n#*;Slv=Ary`e5)`N`o}+xvlxDs-}_el_Ac>V<;{8OtUg*_>r#LG zj&vpT1M|$P`&p^$rNp6EllXL(Qy6T%^u~#_d0+%3`upQ#pUwVjaQrI}{C5m`eL>3W zaysH!E2FVcnFt<)3WVbqjduWfTVm^~GNQ@!1w*i#s3dw;Kg*?Y3KT|9UBgCU{rFo! zL+x&Vtjdwe%wFYy+vQk!aPwnaV||6|@_EiK<~z;NKMtRNe&yQhG0Qgf`kdtplCpa} zhfl8u|0C~}NB*}?GyD&JTTWe&fP$}B{_&4I|NM#yi~i|Sv)^yalghI=IEmr+OV 8IusO^$7bUglYb&&lBF5ww=>=dqmF_Z#T18n$E_a1Pe*mX z+$$N ?OzUdfbO!FMh&D4Pp<~hq~VuIkkG7S504XROHwOhP`>Ho1Itd(_|4W z!UEJ^tJsKLyyOTxWnTi_Kgryu$!{Im-Tt_mUSS^M?DHoFaq8jY?_s0FPbikn)SQ@` z;4%NTQ=5iM4olgd<9pX+i)9oYw>(?U9HlN*wj{7%E;)`5lzV(1?@RvVQw}I3E E@mDo)I`2j9V=8{6GTC}|obOVZM$YmIm+ca!({8X{p1O`Fp z`|T=Vl|wE_di+J`XlI`^rTjESoi?M+pVtY*JTKuE6Im&62~1VbVY>9;U@y_J(L}n6 zr>WLt*t5PzNJ-+=N=$Do=r})T%n40BYKQW`qfvF?5ixmUaX*Hgyd<}Y{U*z`Is#~G zv1|ssT=C4%mbTWv^M!x2xZ%J2 #E*g&^4p0GDE=Vp&9{>1eX8J$NGXEhb{l}#9uMqy k`;!70t+u4ya z0T1v338KiMLqvq9XIi>}LmkvOXA8iTQ^4Ad &bnN<7Z{~p zce2KIlbQ^G;rHly?>Newxe4fJZsf-{EDB2Qc+jOqTG-U_LE^S3g)QuPA+eLFBDofY z_3nrNE|S5`|C%O=lK+R~-QKO?UpA2FeL4B=$@?G1yIAWE-^V0Z2{BlwH5L{JdBaFO zt{p9>7+cFLKzcQ`80=EaXe~hSRM4>>ivX8>QrbrPxWg${p-Bon!1uQvj~N=dX9G#} zk_%Fr`}W~S*W 2uNLvaW=p`oMrR2x%cm&h-CR+u?;-)|EKu^(|vv&7bCOrwm5>T z8oG2fJqSSvNb2Q=hq0TbspHh{lC>M=Kda%48n=nR#^0ZOeKAx5zACx1n+ghfHF+d0 zYgXUOAO!6+;1WMA4$63VbEQA!*oJe%F>-ut&czga+ L!Tf05B&GS{BHmd z+VtND0kWIoemChb)=%ApdC9gJ4EGf^D(iR^9Hq0{!rm}jTgQxo-%QcC3WgQRfk zpF0|tX5ESWzB@MIGe0~m1+xVba8P#>@$8vAzZYJ4tvj!xY-{m2sM79A1S0m&r1fFX zQBa_OqV#;nyyb#K=-en+x$zIaUzaKCHt9FzX~IPP&hMe)#b0D+qyvX4A)YId7bK+V zA(H;g-8CD=?Vt;iaJbYQ+Wu_#)TxxM`qO{Nb(d>eZ~LE~PM&)HzPTTCEVvXK_NCn} zZYX4zBI?VWUGYl$W^y0hM7C?wi_>Be!y{(gasRg!(Hy6NW8&G1wDI#Y@s&7&zBWzr zvwx6GuRbw1iy;*Mk}KQl_2KZ8y?e?Z9B@H`@U);f6_69XAn`1J+1Bzws_d}Wd-tq; z-|Cokg{0#1KL{e>xcB@a+|^>P|5T0`_nGh4J@J{x=eTsfGYZJr@((!U(B<>({(g*I z3m(hZRo*E56xsLj?^4LEeu!^26^Fz!Enbkg-OXijky~CoOFpk$E7|8ehW>uE)xX)) z&>qWp2@>4yT9D`T_Z|zJ+P06@FV`QXXi=#4{P7oAfUu8qO+T}KOSs0Je-?Y^)o?+Q z8n F2_42}hsv&!WD _=0H*1dO3oQ>WNOEr^ zer?BgU8 D6mvTX}Qpzu?q4KBH|3^klxTzm}EI1pI`Wq?7KK=PG@Bi0c|6t#Q ztr3nx9L~0nt_NRPVfwW8fc@oOS?M_T97ij`X<0^bz%jPQrlH-TphRs}s?Oor^XBQ( z-ECI~XQPS))ea!|d;8NC;UPf@V%q4qE3#j07hT +1N!zSEy)# 5d>DHP0rvd3zz<+Q)P^Z91_?7 zQi;wvhNba^-6b-Qc;F>1rs1&?&0M@jF$-*du8^$bo%tmqCCj|`c$UNXZ6U{^8tv5c z0q!TYi8Qy~4cLkT1>UTQi^ G!0NQziUwY?& zJwbDuk`g%8?y?zjb-e?;-d7Iwez76W%{WMB1Js-Bp+K#V? zZj6m!Exyq__}UoTD`!&OgUg>YX6F+%vw_Jv;dw>yIODcqr(@CZx?RXzXr?rL0YTWB zirJfjIu>*vq~lNB4U?44bRo0W%`m2IEul6iB8}KC)b6w0NJOda?$r;_3>^lVRmzq} z@KQ!gLxs%A@jk|)k)DlK)-Z|Ow~gI|R9Q|$iuN|vbflzLJpn#a@+e0rj8j4!X(FsS znr>1b1=hsTq-)gIY6^oaQc9+G09d6!Uh`m&<*lG`FcJMboklmjQ&@b3-bmG~<}G zi_fj{eBrb;aO7lIn^p-ql2M6>WZdeBwyI1mVH#jwwR*M)aXvFKreP21y=KZeSRUUM zQGn%P$!}a*4K=_m7s4QsSRL#7`Bs51z&^G!v3iQ#{v6xR&J9pD;fC5c3}76o0rf?# zy4+5~v+b%6U6T9eARF`9n#tUaGgsW+4zAOmzlEyPJ2moW1EGbH&>Prx)zTNaf$m9# zv$NrkOTbBbRV&W!`n_AUx?p3eL{nCsM<*uTJ|e5|A8AKr#wcr7N|8A(iKwl8>qHEC z#m@sd #g!?(7aOV z)34X< ~eLF!Z2ik` AVY#x*VD4-J~F)NWbwlT}F?c+^X zR(mZk;9jPxL)<-m@}O8t?_DFE!@F%br58&o(Oyo8X4Pcf_nugle<-oySe10-aN(I7 zh)D26Ndtx#YCO8hUiBvMiAHYtA&P0$bX)<4Is%Rv@Z~ ReEF=apL!@O{s3*9g z6wN7Ij!MR#%m#H($H1=+9(0*8?zbk#sB=gYX!9kvN7~p8O-I^*bWwPFP!o1(zSi~7 z8&-e#yTpAQq*N-TvWWRoiv?S7xl*^d4h?h=m-%C+%^UKWj0I&vTymV*GJ+pp=Q0)+ zdRe9(jID%p5_5%BX^kZl^?osQ$T$|MrQN)fvADCWF>)Jh$ysK?kjWT5@G^>m54+e- zA$z-ScoC-7b-V!rKo#&dK}C=jg`GK1-zp3HdVD68w1OR)&lF?Zsfc1WbtO>Nn$}qd zcyDHI@I6>x18NJX+uNSMGOAHq?HV@}PAmuX9v@>EkcF&IrVX;rcL%<(>8(~0bGYg6 zKUcKsmavLr7WG1jGL#ubjtkT(c!bB~*I*BIO>o*N$>AtT12$>)-kACelDP|#=Bkmn zTAzwn-iK8zURvm !nBM|Mm0;s?$8F0z|9qz9kZ@Yl>V~5w&wc`P9&6iP z 9f=|bu zjm>5YRTsyd+37u$_EedIA7MRS1Y6((QaR0XheCnOMbh?MY?6k4Qy-ElY|~SN@anuO zpz=-#`f0e75!fwC{!Lp+@iCS%m7}n+Z>{dsqArX#Q@jvh>}wk +_hAsBIL5 z-Y(7FF~mYz(Z0FMezaAH60#oUWY*=#TVW2#^4^3tf<4LYjweOK~|OkX?U9wTRxh{<&(% zvY+m;&)g*vF`hnXx5dNMdwGsJS8(uU&7RJN4DBHR+1IJ6`2*X)198ba4)>2+gKj2v z76>zt!Yx7Fx#U}X#X9UW>;*MS n zFUPg)q|o4&d+E|AT v!d8NA8@^-GS_k zKw1o)GfNy>xl*#Hb{1v@#ZC_qIqg+{rZbUQKJ>B9u)l`D1qqQhy?drE4Y3Qo@OxHMSS}{{6rJS zt(MCe%`(N9bliLAP>jhcT@j`3J|aY=?yiIbvNS7bIn1>96 (jnx1zl@u3qbVh~ZqqrpnBb_ $qctymK*{n@B(rn`tj9(r`e77XcLzB= zx%Vn;wO08c<|c|@ZZysAQrxWRFyI`<3|$>4^V1w$h_7L?icS+&$_Q92a95@t7ZQ!! zk~Z*#!HT%VQ1$`h8^q;GC2$(MM(e84LU?VbX&7t;N+p^BlkQYd7_vWaZalkFa~D|i zq!BfBuXZ{UDq$WyplkC;s=mf_TocK_X7JwKcSf1o^1c?Z-cTJ7@JvsgY(<*m+^L^k zGcL$B8ad`3Q+r(ISb&3S*q ?{ag`)u$)1 y_szYi8ZvxwxlfKVZIrd8HK%8a;0McLsh}i5fsBU9! zGc4sx;zNpU+Ni v{3FCs>H`A @qMGU4|Daq&} zK7eZET x^DWB0x(Gy8{Rys*jm;Xz z)PSR@A}fcvH2yT1sMJ6^ysAg4o4~Mq5Yh4V%3@P+-zNU(b$Pjeqd;E@Yju1#+5Vkm zY0)lQ1X}Ib%2$5Jgc>O+KSRANf-cKG_!4Q4M!H+~s!dQ&Kr)o1EPRjhh6g3`eF;HF zxye=dv7vxh7@*0xI3^+94BqFPS6jQiMa8`6yAWkq@9WStGig!&?Lox4tUG5mNJbBE zAQ?m$uu`8EJJn#g7taP5E7kDm;iCtYgf__+zDq1v{utkoA0o!3I#RoiQH~twr{{gk zrGgyiL$6q88uO~QU}jX%d9a~W9zw9`R`1=Xwk--Hd}tIvlW!5ZR12e|jsj~GabJ@C z2tkwPH51gC<=ss_@i@ArsjnaKUDCAahW8>hez_N{A9?DUWg(?DjnZ-%>~rCgYV}J) zx3hXIJVZO$ZS-^kDO60Ni5Rt`7;{&(BdmoG1hKOQObi`vpP8zgn>#7Q7;Q6tYGsdm zcmoFj_@=e!Y`4pa-^)p=7I*hvh=$oV?4LIURYt;&-chI7_O!~Q1Wtv&6jNot>*X-E zUD43}>_EPsm-fV#S OH=@3&m@kx2+A>NK00FUuPzi7 zB<3KkXq&1(Xn3K^FMZC*4ZJ~_GKz9#Nu;E$b%(V(D-F9$MQjk7;I&Bg8svZiS|BZP z|F!i1UooArS)XPDhMP!awy#d|Eps>VIUEwd7NJ|zksX-%>iKn=F#7pWklWaJ?WjG< zn$M_in6i&eEOrPuqXE@WGBIGQT{a3|kK+=%L~ SCDV(u^|$rL{t3uVUpN2_abu7$A* z$ZFAvWmfssYO2OG2z0c1#~pg_&be+5?stHVgndiUH3p}cXapYOh=lcTZ7lDHAf>qt zPRSGVvs_#nTq7g9n;L6v8}!O8q0f7QUzNC!N%cF-FI;z4vhko}U^=tgjRmT+X2?eb zB_)Jfx85;xAM4yN5 {yW2sk|7t9OUs4xqc=@{OyFrt_MU$bk*P>Wl zE${^jBOLDh{!~%iueNQ%=hV3YG#%MC)tZ5zio-THX1NDfTcoqUDc+xoc|(wFn6*M@ zHm)$awAK7f8L7}xYfw(gSKFyx2W!aeoxDa Y{Jmwg06WXk~+h=5`mC9iOHE%KN zwBQ;;j@$dfsHgw{%0p~tCky~=QMc4OphJo$-04T~?T4Fnn5N$iYAjjxdhGE<2oaz) z#`lnEY*88e2wC^;E#1l}7xCc}0G*%Ayo)WcfKNQX(uGKP)vH>xZC o{WObXy8X^J7T@L5l<=T#=} ztDD+c@wbC%R$B4n@q78x);6+w(S^?68UtjEVMY&}%GG(kPwRFY7r{!*Qp$)To3~9g zlvbm>&6)gd+dz{$mq?}8WV^F7=pdq%k2dmr*O;&wb1eMhbmXAO%#WMd-2%N35eY{X z2{?6{R2^bHVv1qMuCqZw=j%aDA*3g5XQ>`a#J^Q!@3y~f>(?3xnc+(ks^Ivam4yFZ zVEpUJ|9XXZ&ivG8M5+ExP`pU&R)Xp$$=g+Hp`4VXGlhw2W!P}#{rGBz08)L~+^^!d z25P9xOo>7T^$I!KAKa@B!z|nuS>0pAAm6h}C= r}W#R2JOnBL&SS=fk z>_GD(UP|BDL`i^xX^n5h0#T+V-!D!?dSEw5R5c|URVOKvpVU;;2z->DHj92YX%HRS zZQ(~jCR-fwjBm0aCHTi)VrZ&73*IgIdlLxN=&!uPILfAHETKeR6JV2mxjSZAu?QV` z00TnsRjhh2>D^henRiyb;&rljE6f{?iuh= dw%NLK36jvlM!2+-ihA^YE KmQFmuguU9nMjA#b4elt2+E`Oe;i~zamuV`TdSWlX%v|%G z5@t4aNRTDBdEue#K(`8W3jHVyqj|^Wq8ooSWQ&ddHD;V=5krMf?j;8Ue>Apatr #2I@DET67MAZbNx1J3f&czO!|ih&AK1YWaCEl{D)S 1sxu2Ig=o^WTG3!d >7z0x@Bz5`%^Dsb92R2rUTsv9(?BFEVqB-gKzH9O#@l!;FWM>LqgN`+ z_0s$Yy`&0?ObMegl4_RPXyqY4ofpD}R5ReNhX5SS7L_BOkBU;PwM=bGCcX<2o_4yz z?nlTbuop>N)Bw;>s#^Rwim&B-+8YsZy689?GE+B=IA_~{%P*jVu6WDLS}K%yTf61e zmmxKw&FVa_b#1j2lrtAobT3GL8s4p~DO3Ma%<1vmjrT25>#bgd>+tS#+Jq;NL6NDI zDPHQ!eK|B`UFHV_{{fq*%VJtCEfGMB*}WWq=r#H?q -tjGEeDaYL0CCG_IzKp z$)s=6amtBvVGYnlMriTWFDXe;c)l-U^RxAZ2le?tbyLW!H20}@RU0|Fm?f`8`qKIK z+9u|zr^T|0>+5T(9lT{$i=9Pp5G;Joxn>?#r)9ljqT>7Xq%d>scNe#PV%NOBr~J$F zM^!~@Yl3|E^5>b&($|@s?LQ}WaFDV8ur_01 XRNm-m3rd zB+hVyM15_(OxKvdSohxKVtVo*S-4V+n5095?~;GAWXf}+C3{~w43|S3Gcj9Ydq~m_ z!<^=}weJujH}l()jU|1IRn2oy rn=yF4rUrRjP!O1&Y&R zjcL{PmeSHb4FJhK`mYXkw(Me<8!@rIi`mata6`Rud^PnsGG`YgBMzHHrVyotTc1hj zJHENjcxhgcFpFb;e`k`Hnhxp59P^!8P3ZnK+?hCgK9@S< QVsykm^J>tkz!#R+!KFW%fs5w}aj1+1}D^Sxn9$%1~rJfbhR=|oE> zR1UrQg~_bhz1(i&OOXeB#V33qz=aHQ3HD)Z(#O1#{U{(L$)#ajKWMU6ff^Us%XCv+ zD-;ZocTxXQy{rn`3_StMMy#aeMAb)aH~TRM3x)ii2AKvtIBNE-VCWBvdmD5?GJ{54 zkThIQIT>cu>o?SY>=nF|%C4Ng%$cwF2Ccx|YhB~9L!B(h?GW~aI&BE#W_;Z}t#S7p zu{gwjO?9!V8S1JdP000MnPEW9Le4wjP5D~)qWlu)ZMz DbMyggLyy&f~}zKHs@(lU@Y zna9QMJC8u;wH&*)D9@bN#k!LdtL8WXkvo2zZxsNQ_QOAHb9Y#-_8wm|yxme*7~^qt z_Civ+{06#vJE56dWuSjI-d?=sSN+;`gnbqu6Mo&AYb;9ZuDvxE!L@@5(6Yfybc{KO zo$b^QuN~*|wZ_q8z}kk}CGjmpr(L|gIPsiW_-&Ta?oS sna&s(~s4 t>Mr%d%{f Zt03WZ(;#gk zVKcxNCFEGxVrOm7M$oXg8LFFZZ~rYzgmJsO8WdWKlnwJ5%*7j3sAXy2 Z>5 zeAKcdDyD1`>PPcsa=sTapDN+!i^<`-l|ysy?(NKYV2L+Ob92EMBaUWm l3B{IA9XEUD$Z*3f2zMNc;EXttjPBq6)50?pTr{IwD zrPDl%_r0=wOeyRZiNJe&*Hw}pl*rl_f<`0NJNJ$e21?v|s=aX?(Jeb#JR{&msyjoh z_r&HA3vp*2TIO$0hy8VbOSn{=w{KOUe;Muy|5p3Gg8O1=DZX5MT=VVeOud$z)bU~7 zq4Am9NX2Q$x3{YEmMhk0Ddz)1?}OVO_J{21(=rzQW%K2gcdh>(&MCk6K39z)wjYNn ze&4Fb?OGnHE#Fz|B`s|aOm&s(zaTMq7{B?7?CcW4U46Dkc__BOan@e*+xP5hJIT)T zeCouu-ruqNkc#bPh_*_(IZY*BIKHctT ykalW9&q9@clZ~^&%&{y|g#7bLe*?W*>fBtt8{MC6m-|s&x>{P=8oAoj*Ax z(hL**Fx%iHU_jV-*RQyhWmCr2M?tLMO!by(4S12Y%H`cq5d56ptZGO4@rTZJT6%)| z?zKp!#4`iyh$(e8#aJ~Jw`aP7%&qKPV52iHVf;j4Uba|D6c*drjk}x+L?E(?#OC5t zX|)~(B1#rZ62@BvsJD|4Em*7;Z+QAZkpL^Wo3NX$>LXYCP-oBhqX(*|X*rfIXr^U! zAdA1laa|vToo4@F9{;j$r!YPbW0pK{-G>%Ax!_?~(4+IaLZl!>SHJ`N# QTyz_j5+V;YKZfQNw_wL$vn<5KpHT}F|*cS~3WC0#`#VpgOD#L^-U zup6}=?}3|Y2I)G( vCYo$$9yT 9#^NBmygv)&=-Gpnp!J4ai zW5sZ!dxo8+3KLT&lb5=H#9RBMgS*NcGZYjyTHIkP8yJ?#@xC}mFNf-=D0Lt2sk!q{ zm0nVJbbDFTGe0r#T^Sp_(PxhaR~R*nHIZe7N=yn%;5^IaPMUI|>s?=3i8t)-GJMZv z0QE+3ZZG3-VvOIr%<5Vcx>d4yk+{e}*cJ!?q-s%60K2xkOfB{X`iblhgf_TOaNyaY zo!ejyd)%Us-#iivCL{%&o)4anb*0NSP@O-h)?9Dfm{hlpJ<(6qgMtzT 1*DCU*04W@8PED11AyrI^_lTj z|2aLTlzgA274xB&5>FQ|YvPkp%ulPVBGV;MsHEEjDDOxzqQyQgTn15v9&WqMEi&}U zUhSoj`a`oNC;jWGDgGA1Kl0yf%d%^kH#h`80c(^^?U%K)+*tccCAJU);uDu?0Y>UZF`@nKu KhU@u%$s9#*%xJ*aZM+ zsYAkNWFWz5$m}~XiRujyuy!D?1;E@sQ~T@qAgh^ERa$at0H)D!&flZw%*p!VO2Bo# zdU&AJ K6nNb^JV%I22>Pb61$-6 zU2`FH)PzvNcGrS^GmJnv2qn}z^Fg+kwxt@r_jY}uS+A#~HsONS&6%)65GTV_>zzGU zzD3qRq^%}cM%P(qhu<5n3`}~TNl7@xfMY(3F`1V4=z=tP+HT8EwmPEiv_>S(f|5>V z@G_Q@juLT*Y5ZtEgCd9g$@fxq*Fb+WgqyB-6vhOMiOI0(RjnPOabH3zfQP6x%7*;X zvKp-Tw>4$Nz(&xVw=7WLnK4>ehcHB~%W2JK?^`BTA%|+|9_(z&5fwM^?%4B%NF?ul zO=vDK75bV!F_ZYI)4JOURV>w!WRVv?6{Gd(mAZBJP`2b(Nyd|v#}7DX6+_+YLi46^ zwv$>((P{3`Es<=#L75{ypfTD*VU`cj)lLor4*J2<2pNn@W{Caz%hLDRL!BDY3`4Gi zNUXbSEj+7exL)R9eObz(YILPUv)OGT=2MQyI6=mKOR3MSQjFK1o1>aAo>`k4FaK$b zhAof@4zE6^lJ*a^Zve4K;}Y3o;hOPfZ<#5u({P(MlT{CE Li zrTC|%KkC9nG?f4<4>UNU^Z}q((Yw{oe&CodSJ8K)d>=!2Q`tdZ0lcb`MB2Jb08k$h zv(e(pigGi&z< z{hShR#fLeY_$gGW;X8ISzc{dOB+`(RCyloXLMH0`;3|W#S%CUacv>p8db}U!g4v`8 zK`S5SZkralJj<4n7R#T}IV5O`k(jHKJm4IN64*OYiS|j0V`?$@lNb+Z`L#1EIT2JJ z>r$IMo$BSXM$q!!D}1^v6yvTroRpo_P1KHnvz0lumCqn_@uuV(loFrzYD?p(@^?z! zfd_$(ZfRevGzXVI*}3XXFXao8ndUie1r^60_KPAAC=^vkESGq!Kt5z6ycXjs5kOOz zuTju? =lku+Ol0l7Cp+0|t!KUO^FEK~_3 A)ch1{1#PKibRTq7#I4Wo62h2Q!oc<7*AWtKk~s`%X;?yRA_L$0&j_VDiz%XfED zaAFY_v4jma)y!i>3n6v3pPala_9kuX2GJb|^J;wTZ9g(jG!@PRVIFCi={DP6;_5Pp z27$pd&Zzq;DuaX0Jrgt4!-EgQ1L#8nV{Z!E7di+gp>4%F4?fLqi{6kiD +@K=f7)N0EwAqG6sS%5WNOGGxi^Zt!!I`k5$h3%g zFsp6j;fEv}wA8~)7oli5DZ28`N4FZ_vCUXk+ngP2UW#@UowL_1pIu`JZ;W+`yQ$IO z*$LQz(SXU$*92mV^N^TzT;s?5()vK7i&2@3RT}tI1li@#_zIvZhDtUGyQZ!D(yLPy zNba)9p$(9asT7S|j@ol}5?tjKu0!32tjde%)`40;Z|l@!Is(O()3QaX?hu=gpADm& z${B(jeDWjRYd<9e=9hL}0q?c3Q~T!yOnZKrd8j{YG7u)+iDpMSpXCx6vNI2j93pz; zP0K)8uVfBbEVr17*`JKubLm|==mONI?SeKCf^E7j{_b^XFe6uc8ypVRU7yCYHP33s zM{sfKLWOx8!6|KjYs`?t1qLKx&Ygx*j!sUhk2fwJY@Y8M_t8q Q>jzR)SD9^A+35j-#)mFR&RD z=`X^G!1gvckG5Ivpf^Kz#o64)J3hV>qEB^Uv+{83VcB1bVp%C zg;eo4QRFW;QSNBQ8<%=k&ATe&WB}K#hZu7`pJ(k^kfw9lk#I2~xjQda=YnOjfv=Oc z2NgY<%SyNL9N$)bSu-KkGwHoWl`JU^!Y)>67)ZG6f{$Cl_y{dP%`4VhYm?GrR*kp6 z7PJ{53thgKh7Sp*D6T_>*%WPR3 ~S;tx(C?`Dv2dSc4@ sM;W80 z$OoN%H6*=d&39)9i|iB?Nk=ka>pQw9FbRHD+~V*&@2_T*|0pFCh~Qdg95z_0Ut{rv zr( WT;yS#Wb_Rta0Fa ztPi9uNMR?i!}E5idfnVs2ZQIB44>daMbac|NJW}01oF)W$=pYkh-rK8lh_5IKa4 zrERT5zC_m6brehH`gZ@k^*9IMLD3mCjJnmB>81~*o`(p}GeMdMyLa&kUNqF#6p4@J zo$sm0I1inp8!J5B;8h~fX=p&Jl6Je1AWhsbOBl+#t~_ZK5huubgG!18mt?7W%%QuB z lvwJ#G} zXh>InlRv>#gBZ6vn4=crCb?KUe^U0Keiy5IQHkC2LjE|{6)H@TQRG I}o_Hf(1csTTs;hU<2S?S)5>9ASKx$kcg$x;6(B zVW{q6VX5sxcz9;OTt;_Gt4luCw(QI!&xSoV>oRZR*vnlTjIOBThKGWO+}kQ03e{n; z;Q$TV587|6JeV~=hulMn-kExjnSJgpc>vnqeyeXq4^XTPz@(|9X!Yci7>F518 1k$5q0JS$|JOQJ4Ioch&4c@1j;T?=PfC| zesgci6DYEL%K%)+!g^j-xD&0K$ic5LvRpCG +!KaXFOg9bpXD*ak! VFC-m*ud*# z=9z3`8}%!d*2ipd=nE^L!qP$@0A8xBP9bxAIgGTK$I)dd3wwpVE2wK(+obwD(*KiA z7qgbpr@eVmSB8#kCxuBN46ET{(FHTATCe<7>hD^~^iB%&s0zHfXm3CA?TfVcaT9&D zo!gbfVrN&LK5ExPYXt?u)2#|7L&Af~I}VJ?8@cjp6YmRmfb7as!Q(MP0{|^4Ii*2o zS+BEfNWP;+qXos}m-4_i%XXBFJ0q;@)U=6n+_=7oSLdPk;>I?oCsszc>SGxogWrr3 z)-q`#M53S7FL|5yb%u% liZM2M)kTf(g9b15$@b;+DiAzVMWTvEJ6KbYb;iU zSNVBK>vjme8oWoq84C_tcB^UdeSahGdG2}L4v~Gt5ZIi_&*8AW9JBzk6YA6fZE055 z^Sx%Da$~j ^95JEF)P+Zbe zC3V2h5>Ex1fbYO((4=jiGESrn?s9Xnfq!YK+ZE1G2QJv0=P?G&koGg}h6ml(_^+40 z?km@RlS8;kuqnnGUMj#@W|iLOKL z_j7$!xS7>>B*{ajdvZKaXL+aR?(}lqN+qXv%?yd%(qhb`XgSWA3Gig(S?fy0?kXx} z0J25fGf7v3i)yMdqykwiRss^7C{w{K-g#aT^EmNcoAnuqeD6NR)B-!5ld~7 Eec22U|erzRiOHw$`AEk|<85up(s-hzo7tkFC1E~k- z$(cEZNv>}^wJ9EQF?z7%0sTc?BeCTf$>7$4_`;+5=37O{;;!h5`-NY52wn9+(~MMJ zOxSc LJ!{jM1}g2Ldh$aI zE)ee|R`Y&Ck&GXlkHQHlT8wtSb{VFPv`Dh244L%4ev&}(Ida4BrmGI)S@Zj0%F21N z3d}9WBYaV v<+Kcp=ye}c-1*@2RTysT$g;5!wOq|G|3#d@zBy4 w$m1HAhD |bu8@V}Q?2W3bc6{_=*3QQ7T0ixK%q+)Lj4|fXokT4RH50v&Fs_5=rdeU}os_oj z(ak*>XRMQy9>wu46&z}aS>}ji0c7(d7h|;3zO*+rd~f7=MA~KBHmCx!&c@lMtsH5* z&~#RHFMdK%Z%-B7W&T{(G?&>tOn!!OxWYIywLBoXRakyHG1uOqUy;MzFOmBxkwCZQ z(ssqRVpozVD%NV(0am{&jxO?q!{IYEOg`)4GBQCnu|=Snc~_IkdW1LzU(q^~DdQxu zZW9sPSuj9${9sphL;crcODDdhzM}_E=@=Zq^PMsnZUy)+q~@$)UUYfRNnC8L&qvQ$ z IE^n z<&+Hfb!x6us@@~5R+iSCrC@&f^wQW}lmj(ppTZ)yb13~0_(qYPpPv%UXbu+1V_~uH znCZD#_THWs#@EIaUunv8tEiwTWROL|i}Ni0CG%~|f#}nnZF2$L_cJ}20=>=jKPwW= zWE=bYvC_{T-G)dz8`0%I=0|FCX=>%pj@jn^oXy51xVRcWNLX_MG-rdBG^ W$P(J5f&arlsbA(`&!dd_)<7s?C{1FA3o*e^Q@FckHl5Z`?z8# zW#W}AyJ4X_%BtSHzuHSdGyNHOjf?q rDITf4g!JEOlC#!psS6U7+*p5qYXxf76@lm45aMUTzY Tp?wDZw9Ra~`>5EXXttu#%G5=x7 zq9zkXG4sU;5EWC6d}W00l1R#dN*u)9p&YvHf|9`Xn5g+&tGHIkOT(XBr0=TTQz0Aq zi%Hw;7Pyp!y}FB1zerlbM<7OfNy9tmi-FmfDOmVzmz>8ID-T92OA| |{hqDBA*C`v`M9vR0 Ha9QMU?E8 z07@lLyJrHy;_Vd?vEP`p( vBYe03A3 zu3N|_5II)Ge?yP$sVH-H-N@ddRa(W;UN`bKmFdaz!R^|C`=aXrpJj&aYvlw4*YY*r z6Ag}}*VD+#J=OSHAO}=aJT1_Qqqd0p(3}zG!zvBH4;CaGnfI6R!u~OBnfo{NZz!1y zSOZl)t(3; aYpUp2gt1qv1bXk=J}&Lf!$}9%bcIy&klbIEdXDO4DCpB- zWV+cq8XwCW=yj`DNzszbG$&imdgvA<^x5({b*jPY+A=CD+rSzF!%NcNSvj<&w3M?; zEYeBWa*-6Wj@OuG(Fm7ti|n=pi&`o+9rQ>nnfWj00Pv;;_`%5ehV~7IMFfqE)x(MR z)$}$*8eMV#Mz%Ve2O{~;mlGq@zevRE`omM%d6g3k(sjXR>n`gDy$3(n8?B{<@igSG zYEtO@1J|oL{4b9=R2k|J7`hq (?zwPnlUu*;&Q7faYuC=y-i}BcpXQ-N<=K>Gh;{ z8s|DT4pxg4P!!P T^>-@ zJ#eVjha>VB+sLWnTKo~~)0f$c199{cb#*5G4!VrvX_dnU^Wqkb0moUVdcO&XoMU1% z3)OP2Yq56ceL^LY!oDaf51^MbacZUji=JD)>f(dT=;a(?^!{%GCs^P04DJ78ot`^% zFkywPr4g2 B i;$PD4dr z#c%7@PMbLH@#yHUH?>=SofFQh1Xcb(VD|(Aoa{btKkm9eFa1NwU+#N*!f* jf*F4qSlv7jt01g7YTY?(*d&~}3x~L+YTdZbB$YvA+04fO?#>cuw z2aj85sVJ}wWz`?|`om;JDvC`(^jX#I&>(tf=0&{{pT)Geb32LBYsMl!WaZIORb}#r z_Ms`8I?wj1ttdX8W7}zuQ$ -)+E5rs{0dZJ_Ke!%1cU1DAm8PDiWJNy7BcsRye*2nn62WBbR#+ak?E4`gT= zG;Q7T^}i`biE%IOLFKZPHJ mO>D7D7US1(8bo!#F`OWo0^ga?3EykxOK;8Z zsl2h8p^^@cUc8P5we58MXXS7|C1y^iAvF?0!>PG(MiN_de3|J{VkzGvAFEuTfr-xE zR?&CHqDkZ6mQFJr|9##}EH6i!wsuP9@H4%m #Z$Mu?G}kf+NVJWB{KSS Y~ pvP QnYrL+`F+v7> z%N?BhTZYJLWO;j$P{Z+3))J#d^07|?)(42Kvzbgt*V)kGQUc3br(0Q46vXT^&pu$~ z?2`rz3@|2B86e$;B=!vozk}&j_E6azrA^O1PMVd!M+ceze5k+EQ6qtnppi9`pJRT$ z;tF^^z>@!Lhj(4~&WSD=<_c*`Yx0fb(8n#&?H7igcYu8lC(l4J8N|-POLf(%(%r3o z@*!n$2`UAwJjZhIl9SGe<3Gemw@Cc_FeV9s4RanF^{iCWIMT&;TFdIgJo1nadx+^x zs*A*i?*)H(f^(Q-(0xAXQSj`2r6jeJ$>GZP_RoD3U*_ao3GFAqR`~i%i{M%n_o`bQ z{7A`Kp}L{r_9|O=wnigc725~6tL!iHl 9IuRZAdO zNif3oDzrN;UxZ1aUATaAUJIe7lqU%k-7}N(W!f9;RM1FUhWi}EWrg80YJWJsxP7+! zOyK`q0e0&)2U7HLnLrznpc*smYX}ifw$JBUl4bh)gKeVg+0I>@%_w@G^*$86>Gp%B z|GK){N0uv%RsGAz3G%tzN#fuJfqmjKjK*2z=dm$ivjzcavm#w{t0cK|ic6E^PutYP zAs=~Jc*biqm|ZGK5gs77_tYH-w6e$cqs38d)2`BLgMP*&&mH1wq$iYtmOL&Hn035g zjMqSzdfQ2IPfjAGQrR-H&az$voM2+ao61Ump(TE7m>e)WyDWP|CS#S<{G-4*V<)82 zui@IQDh^ePS$irch$3^ $jSiE5Hnh9XEz2@|WZGDY-g)XD0 ztbMyZ2s_+y-VFidXYUV{8CDsCa;^4G$GBNV0upsqxHXglbgJEr8ePTY*!N(!*V!)F zF^(9PSW0uj!BvXS&Dvb|UUz+P4rUr6QGzQ1NuDoADR)nR>!Ve{7ZimeYr nR-cHuTL&v`Dk@0xQF2Eb%}h7CB%eZah-9t!F73hMLgsO7LYcc@qvvo2rF1aG zsk42c7PlR>(*sSapB7W VKO(rp-En?0AHM!&>G2c1ZVys#GDtNff1 zk8=qu9=z=I7#F{AUSK$X2f4fDf)`w5SgG0xH&!n-9Wce+2{iQ>M_xF8+dY40w`X}} zqTc5;^X#gyldH44#@kg*_Pu(RtsQgZykqqQ-P@Ar=?RPWKJb`y GzqD8W -z?QG4}N4oDe=RX?_Bi_|K zP25IAwEG|xvbAnE{j|#$E^8$uYjzRbZttkb=`sYrSt=NqXgi=!Vs^LJE`1qVrGj96 z%z^^=>{}F!)B^Y&B@xh6>^TI9Ur}`L40vPx=Uw6Znn_A3&giCw^oetjg(KU160f-2 zO!w{;;FZ?|cbfi$Y`IPEmH|*5RwI!(hnt#1x^