From 9af0aadbd4d18b45010fbff861bb2728f69490e4 Mon Sep 17 00:00:00 2001 From: Ravinda Date: Tue, 12 Jul 2022 14:45:48 +0530 Subject: [PATCH 1/4] Update: README of exmaples/dao --- examples/dao/DAO-Flow.png | Bin 0 -> 34476 bytes examples/dao/README.md | 30 +++++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 examples/dao/DAO-Flow.png diff --git a/examples/dao/DAO-Flow.png b/examples/dao/DAO-Flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc0d136a479b2a23db9dd48b5254a6f81ea47ec GIT binary patch literal 34476 zcmeFYbySt%*ER@;E&)*xsRM`z2uMpGT1gdCxOy1P3M-8J_S z-}n2?%v!VNk6APGt@XJU%dl>5QSI)LHDX^M_-J)TW2@(Q3SH z4-_KyF#MS~vIN0v9~ytJeX$Veq3Bmp5` zrW!8vx@3LvK3O-S-! zF+HVGk)G~$vGFbG>UbhmZ0S<2@9s{MJtu8lc;@-&E0b>S$_ajq$PM-EPKcY%Y_hPE znRXnSvG|u@+=J-@PrL3L?cYuBJU0n^nJk_Scj@V07vlSgI%-(zsz2zJJRKjiJbl?;L?Mi#GZiFOf^_4v-@ zrP_Rd{c4~9nJioRccJYhHsu41{HP6eJQX#bZTk&OE z;&h)+)yFKxKk}jHdQm@vTtbQSJ#=|6kt2*tlA*QbVtS z&uLBJuXCTsLqERpIa*7#)9dbdHvC}{j#sdIBXjK8HAmGyw$ju&Pw2#5L#cf^OS?|D z9(nU(eD_HBs>Cp7mdcatdi|{2qsh~0mdcX(ru&P)S96$Tn>%qH-Y%#l{ptg5 zy^tF}>TaA=sA1aK{iS>Nkj5&^%7P0D?!-A_HcuSz1i29)4Lc+4c6tu}u7`X;o4L3g z@f;Mdncwz9PId_(mkF9o`N2*3{xm|@%kd$`9GWPMJTV0F3ON>r{{RI?7bo6}fA@19 z{^wEN`^_H>Lb2Il+|SYFz3zTMkH;9EyIX-C3&VMjf!{#XhlAe0JZ#Z*V-@WG%C81sH5wnqDuP~JbmA1Z#2hA=GndB79N2wE1JhlJby z^!~`r4;E^N%vPo=aaXM7ef$$3A=OI(ZV zy?S&{SQ=fs(ddcsJ<|KW6Mh{ck;&PwgEHlZY=@qkQXb*R`K?IG{NUC(p7lJ`fjrDYV73}J~>`6eufuEqw^fi2a^g>P3HXjqaksvd2^(DG){Om%rjK= z7)gNz4YR*b=IHmBP#^m|5Q&=;$E5ywHvlUN>jaDTQvoL@rw``_=P~EK*elK!PL=nR z{a*(!f6@&|4?G-j>2DpNOv_8DmAME%W}=`-c#=SwfT4vu{krO5m8)Hhw2(p_8{+;iL++%LGkxOljNxFuhmBwtI4N$Rw^e@*+!L#p$Pg*_~K zDaJhJcZ^N6X-rkLk-uunlm6&61zGw;`WagJ(9lQJ;nZJb`C!@5X?i(!{pgnH?ijJ? zk{DJtVf{p7>f$Fw6@`xqBZ{Z=NcAO(1BzoyJ{PSNYwJ@OXc;Z)4I1Ovj~B8-oDm_F$H+o<4BmM9NuF{V^jB6>x74wgwLed^^q%Ut)B?`L-yMxJE<&KAnfP}0d{%NfsF&J=tjl|z=9ky)O3 zGxVz8zrP}#ErTJIG+Ql)Hq+d1y?uCjhQZBnbbJ<<7I`307ha1B9f zLC;$0S`&AyD}t-Q^CY|_+)Q*H+&VJT2XL+$vrnAtTpjE#MzWj^+$?OAT!frh>{%Q! zJj&d1?6qc}xl1@ZIb8L6^yRq=*pkX$m5!P9o4hnzf3NoLY(#n>z|_9;p`L}F`;<$w zWb@3@jFVkarf-7V;iNDLh(DfO+4bxehqp*x{lyM19x6`e&R)_?vqFpRE8mQ>j0 z+WO&q42+Tq>U3109d#RJE2pq@oldN3ws7wC#22 zwGP{ExNL}lZYM8_?0mHUi1X2y;d8{@4pD!#_L$I}A7ww3e{AaI>mAKkd`Q}jBW(8X z^Y59isU~tbk&u=!5)YOz5l`@s%}{^Cl=@>Wp}(80YgfkIG1qCUacu8-Ld8G@)gH?p z9+oT?A=b3(qZ0#oj6CPdn$SA%P)%~ZDcs7IK|j? z31jvtIj^#IWeI;gDSMwgmR)i7bN7!vy^4&F47xO)^rnJ!Qis6N)vufNYxdgWPGhGY zgCsQ}8D4(7opJXeb!2i>dc1jDF3jU{J;!=bpNKn#dx*z}f2VfWg^hbjnDc;rYx(zw zsojp8E84ZN+|jQEI8v2TowF}$vZxeEt2rz=XRb!}wsWxdo7)`wciz$uW~`-SXPl** z8Qn8dpNXs4xtcrE+t*)eiyZ%|Ae$ubPJH9$E^n3ZI%DBs<6TvFO}EO_HkxfEJnp|W)h5Hy<@Lx@cI_3-?=w&H(iJ6d)vmC1z|J>F4OJ~ViBNy5zYO*MPr__ z^=@iG;O=Gk1_uXK+q!Y(pMxl6fwSawK`QcKmkcN~kw3n7p1?PSTD%ej=2Y<-g-FTF9?$U*U0uf{K<`b|#Uq14Xa?$CuL5bngu zT7Et@T{C~#0!b%g_a&C_Zo!cM9y#@NTlffmxInt47Hk{7tiEc&bji}JM48K&o1b5) zc2Qw@y5J`xylJg6mLH%qXz`(*(w??t&rZ?ZcCtHPL$KUcBXMf|eeJ|s7oIeC6~9)& zh1#s1xDzv~c$es_CqFuOiq43}EzjZO87D~z8(+4#)@YC94s~1;&!euq+M%YqSAp;! z=TT=(Yz3N5jZdzvw{Uosq_^Kf(X#=jn7gB}@D)?BEotxxuW_Y~?w81#r4Wt(xD z^NOH}V391{v033~L6^)^vs@-~v#t8)BhRBM>TG)VWcPx1j}B%@Di~B5BACe^zoTPh z_)KyEouPY88$%}%Ru&N!mi8@SvY*~jtL_E0T3D_@fq8ODGGnr&l7`AnE?dfY+Hj^; z{YkAVqKzKO$JS9 zG^!4R;xsfWsUEL9B@0?o7X9}`u^zg{-%b67{Y~RoKCN$SRVMP~ppfo2xZ^XS#r7W^ zO%^dtYO}V{Ay3FldxM@kJSt$h>ECli+w_f>=xA}E7n8a3J&||Vt*YF7rK`ZUYx(YK zDbp59D3gB99c7ZHRZYj~DY^y27MC`r*DAIJ!(4XSRF!*aSc6^Giu>PNEdq(l`MvYl zEEpUWC-LpbYohv{*RJO=)bMR7Dc1S+PusuIPV*|1BpDu)Z^-S)Y|mZ@zzZ_Hr$2_V zzWW@mO-U|vo$dB>{^($MR;ZM#uece2OcB9vsHAp68hYafew)2L;aEz7?!d z^>rEsI>ncX`>FG*huA0CP3j{BJ=>>bw1;8*p-Hc|*Tf!3nb|gv?`H(!HPMRjD zKq6nzq1aY8IbpnLyqMmleBZUQ~h4# zUfiB1@e_g}0&>C$rY_bg#s%hLM)jxZk4Bg&p>>Sbns20wm;WiZFQgsEn@F*MHZdZe_rFxN8E0r^|rayCSJlcEgxZ?b@_|ueN)|b7PKmJ_1I>K#b ztS5FtO_Pi~8>pw(lU-YT#E|{OI8saA6yvWhQ8DnVf17mL($?0wUfb)Xf8~2uLc66+ zeuhQ%%~+-Leh-FHgyve7sIu8`^XSN^d(9(f-k){H9aCJ9pRY!%$#`Rb z$MRe4P0O1&Pnr&o46w{v7b$LB5Bs5qe5RteI}qI7<{el))U-pw^&ofQxt!;6qGhi$ zOL4#!{B}y{mK{y+Ijr^OV!cMahVUlu29*a}63vUq4{7W)sqF{4S9~Cn|2DE0UXS4R z8q$Y17?{Y4NX!mM?V=aGSICWD=#fK_@Iz5e8*qDAo95z+F^4{~JVPFVI=mpY`IPd5 z=oQD|!=AIBge?9_;)3t){qf?2wbHUuXUskA#!(J%K{I|Qw1%^$@Zi2I;|l3_46V_ zkJ$YRb=6o3AC|}$Q5Z$N+gbLXUz#&t-d|0huWMaw3|y*hUd1v-b%#{?l!?lU_WA~j z3rL`eXEd_}NXfi^AsVjr#(5xdcOyP(d$ylOg(0b+P$4X3DKq!S?+om$;H=V2lJ}q9 zo0|2T1-&0#YhK&fm_Ix}B*V=o<0hSEx8$lco-iEI7kbZT%4<=oTl+4sM8A~8{*~=7 z8ybH4>U-5?RozaZ0!Otpj^ADJPYK+PuEN{9uV+z)eZqYv#V~*L=-rU# zob`KGi~ZEwZ%^wVw}xYtzN|GlJ2|A%?xMV^(a(2p+>%-4@ofoDTc$b|W_`+YPi#7QRh~LLO|BO3e${C#b^0=>!dfy*PS}-s*5aEHgTW-FX}A7w=l}v$C}^ z(8=7{x`x8-;tUV<8AJgM$Jfo*&{svGN}{tlr8$VM;!)iTq3?XG2{elgIhA6f!CI88 z_1Vudp8q%$JuB+47!EY0+wkMej7?PkJQ2?Kl`pWW$tCan2weq_>}%{-tGHh=4zYsV zJEcx~XRW3aE{#SlcZ_>CpevbhgYB)I;?dIP?evSnw%DjSd7PbSEn|0=OK5R`r#MV* zPO0z--J>PbHJb_(@p*X66XuPXwK7$ucxAWOzm-y42KtxQ-CG%kvkpyM@5nZ-zTD9Z z?D88o;+>YFuxZzVFU{>fuTYAtH+(}A~{>XcT)_ipCTWrRKYt6Y`Vj%7_JfVj+9=vCadt3)= zrED2{!(TRDo|t@&$;bCIW)|k?sa1V`!DaAznSVj5*JjTG+c!s;?={tq(vdh zb9Oj=U1+j=^iSTGIa2(hQR2M{vn>R@PyRe_wEMg!6%KVb_Go|88r!_`C%=ul)ZuQMC|B!u{5oGPG5EJQ9_DB--eHSti5b!Cx zTD{Jt{&C6oY6st*_{6en!jC+X0j=YY7md_ce2H~(w{ls>2PS;Sg&iX7IvlR&Oy}Qj zdY}As5GuaY9f`-7Q)RUVKTV(>*eIk@FPi*~TF!dUsLemGf; zg7TZ}H@pME>8W=f8@ustg*kJX3AU}j817%z4|a|UA;Nw_PkHa<{nhw*CVN5q4B10j zO1I;Sq@B8CH8tgKrEjYI_WgTrWNOzUr*dTQW=5$vJ2)xK66*~;FZL-!&2%-)_={-g zv=`lnP^$gXLLO7f2>h^95u(_c-zweVAM?CAn?(MdJcZ*&z0sN4#8m(f!mUYssO40` zcc->RUUx?CapThdP{w+HOvX-}aD=CT0NLK3^O7NQ2Y9#Jf#?cJNWop5dN(sQSq=8{ z;Io-C+U1OuUf*RLCd!;o!>wHVtW`RrBhx$!R1}$+h0gAUWr1|>xwfE6+G z|5%CJW&ZnHu+Bo*0<8bNXF}ND0s}UXkYGqJ#YL2ykhi9>YLo|WZuS&DN)w(x788|D z3!OLf7k%_Y^y7k&bWELS#E;#y0=5!NYEllO*Q6Zyk$teRg7pE|x@5}yWv{Ed=jvsz zV1g@L@FYYBG&<#w#@x?P$hkrG%0^+JMRLcL(RXxSKL2KR80Q3+s3 z$f)s1jfujjx1S*_utIz%G(~}16Z7~I@3s}e2V@`j2Bzo*>c2066|P!=rl7sI7Y@M| zigx2Y{M*<02zsJ`PC!qnnqIn8yV&VYwYbM0S)sQxj;9-@Aegq ziS_@c^?xxH?^tA3surFQ8FcEGNJy?*_= zFK{hpUoL@fn8TTx7W0z?n9}#y^!R0Lf=?ZE*#mbrMCMbnr9Y8>g{7fY80(nu-4Xvg zsRk-Ade0%E%3Cve08CkW&>DI>v1wq__F<*95&{9!I7x!fyBLk{VWcA|)6mb89j(!wL&H zDKKdMuGJhqvQMq>#uv?7^OXtM(X{pF1h?zuiAk_^^;%)+?qAbe8tf{QT$}gp-kpkh z>F$KM&_vyuO6p*V{&T8aS7CBCU%cv3>rNMNTug}?UL_t^erq6hb>ounffn{!IHk+dbI&NCl)H8JJ{f?jNRc| zgDNI_UhcJ7Y>gGMlYcjHk@}MvSGa4r z<+P@{de-6bl&wNFylPW+wc>muXIi3zsi0;dc%BNCV7DG=`t-U$OnMH*Tg!2Jc%>^w zpXqJxhejP_&Ae?Ce1Sgu9R+ZLiJz+KGO6VM5^_Hu>zAV1mM(SJRv*2q0=oud-9B9m zDd(AW8@#Gpi8V9-{Rt~yIWZWv+Q*i_XJ3p#<<=+vd>%DWoQ4}*6#kWHea*t1iBhwy zM?pC^`hN1{HAbb(BeBj&i)J+U<8d`cov1&sLKry^v8fUvG@$nQchU z8pT`VAO(+MOhR$NZ~cQ1NyHDYSll|_EGXx*-%uS)m+OpprC#NpJaTo=D{N&PZ~Zxo zL`3-fvWufPTK(vu?1SotzLvIc3PL7YRdx&pjPXs2744(m9K z8@|m`=NdgKI4YlZh;z`e;@v82(yZdsK3N#%PZn{emHg_TFGK@K2q=L zX*Qf4$=};6d}9t)tg<>&l~wO87!)g7wuA-+q0UOYENv(qvY^9TC8Z_xYBlNNDTAT3 zeAi=_NAg;iRT;u&BTsomwUPOp85kI>Mfe=_k}16s9B0Ojx}x>SEPlP-hew|0U#^7- z9tkz~C}w@?c%DhnV`$(zjQL64>%03}c09yY1cuB<{B!t?ib{?8)%nZPp#mM@I(2XD z)a_x$kTk+sRbTunIs!7DSH1?%?;)cKJOQ^&H!U>n1J;v<&9JHf7BcffZ?k?CJI`Z8 z)Oe8G_WyFs_o?m^|HE{HQM80lrteH<##6 z%=Qxd)~mB(6KvJ0GA&`AUcIw-HPG9(2sL=xsaEt*Hh~W5RDgZ=>^W3YbY?sc7P@*$zyhz-Ywi zK}TLBAYy6f-rxUp8^DNxsn-06;WlE`Aol%TUMT&oSq#ixn#V71LC2f~2w)^;z5=&q zC@}xmQ~?6}zqhN&1Q3}h7UpIXUU~@TDF8V;sU0*qn1?&Fv+AX$hKlL3MZ-BNlbNqm zbL}@rxLpq4e*pXE%?`XoicE~gIKU8zccTSe%k0+&THfZW>Xn*}I@D|YdauV}-1BQ= zxYFT7$uNu*Rp3#>4TXRbsR5ezKB~ivv+?G5Nk(Ku#8^0;Os;$aAGi6~Gl;wM2XiUt z5;#+#H^{HtZm@7ce2?X}*kGT@RpZ#4t}eg976~SVK?}emH8!^FsM##ZBkmv==4#iv zaNDiDQa@6rr$a-9u)gBhrTgiH89|GDZk@vH>y+5ch01myRe`4O6KZ&4Y8H0Lcw>JbC zAU=%by9|(9a~+_#b-S_8w|4*uSjd^;0skN^AL!)&+b#h>eu5$aYp{i|)}5v>>(ou1 zA8nRv&!j6PSt1|=%AM!XI_BXjS9oPx-36S#Tw$>_C{HScvTXRRMoY+_Houcu&)IC1 z0?P|{wUv;38!tfpQjlL;wx}}2^Y>NDEfera*_(U#HlJRAC_4J_bib3;0sxn^kqq^d zwbT&x5~J>|J~8~#SH!c=2nYz047f(rs6S1V$U?A4JB}6U@8vz;(_WBiC}e z>i7?Rl4_EWyXJ~wo(#({*QlmG9vL^M{XvrRO3d4O5BE53i&z;R;ywUC?ML^8uTK}X zl9TxCvzb*38>SiiD((7zBz|tby0;`1Om5QB(sB%jI9}s?V7|A|lFoU4ylqCG=#(-k z%q#3Bg@o)0y#1A$)zU;NWW!RW6M<5g zr411nh~=?@yP(B#nk;ZzRm^{eU)QpbtCyLZXjoRJY3QU%;$6)9QJKeCloe4pj5X#B zmXT;X>D69wCe9UivXqSEX;f2sky%zWM(|vXsColfJmYe_6%$WUN9*OKfVS3pV$u?3 zVTCPlb9vy82YMkiY>M-l>IO_5?U!Me$H9{99U5>)}oP~I;v=$&9OP=Xo z6&!7SRL(gofXZ0<5U8&VAh%Jxo9*)1iE99xXFL!PVUz9EE0x|R=JKg`j#Jit2v$(K zb|6Ubta1u0iT4(EUvY0feU`5#OzQxEr4L%iDQm#n;86)p*;j80T>xBTQsr4dTw2xf zZItdnIp;02v-0J|<2dsLc-{_Jwe+{O>KjE@rSj!?J;FC`qx++Rr_EPG3!ZB~{HA={ zt?I9gqO@JI^3+Q^uCI1HCkGXTw=GHDdnLExG!J}DipB@ zau!BL8|J;IkE^xcn0ns;tXX!p64zFqrcN@e+KB(~S4M+&iILnOv>Ji$jk;r(6H)un zM9g1Kv6jK>Z>|b9x%!IKe}%Z**%-<~VE@7(o|)%mW|5w&os}J=bjYZXC$LT-uSn^z z8iwT6VIq`Tn;28A^vcoX+Od?kP5{(uH3ZwAw3X4pNi;ItiK3d_i%HjrdK-;V3EJzC zPPPuLdPoV|W4s`4Th{gQ37N*t9XKi`_| zvcPr6khs#`Qe%FAEOxTL;@+B}F|h6~2V*N#A0`k~$fth4W=AE!ECn!TXjoyM2rVEW z;BLLk`2n~-7H9j*BgrBt3aj6`sJ*;+P(ic|P{3kwRa>2Zy_Ja8Xm4IrY zBV+CF80SG$@Jmf(_^She?=X+4^W6f15o<(_i z%Fg5&wkQJ#UB=)x#P^3kgN&1`&DPhKnhtlQ%f`F|!K4guQZ=AfSO8UET$q%B2B>w2 zBPF9NEhYj~u!gPik~{$8%HFkL=V(=zT}%T?8^>##u3XSl>e`T#v_K7Xo$H-f2z3T} z1L5DPDLL92AC#7sHvbb&_clYGf{fezfw$0&aw93>ZX~!9D#H>+gwM#He@N!Cm>7D^ zX*Sa3astQ00cSAuEx07#{em!^6kvH5Ab_dWx*VCW_5Jv@QL7@cgo)gXHFT&M+)e;- zCVs-g(sMwX<56{WJlVU_n`CvqU4F@9IaRTN^b_1MQmkh%R$3N^J1Jg1hCo*%2weHY zj?mSYqXjE_tD?mxy72ON^s2u|fc#$pCmIrnuq!L1*eK`@pQ?e_b(rW(R?1ciV4$5_(A zLc|@3=Ko_XvEZtkMLfEtC|*3^Ue4r_*xV8r*a&b}YN?N?Z(UFg1Mo;jwV_P6W--F) zJfy?=$5`ZmU*XyG)%?d;xWEA(dGZqT)(u)A$e9}J(k)l>&IO+CKc||U&Ql_hPq6#B z0Z0KRH)p+`nntE0xh4STlmQSNBV=sLz`{~iKI<`wi2Q*htYyq)V>F4ELs^R30DqO| zYgJd-n~mfa5z%u?0VeIW{2^D%T2MoubKJ6MpsR{>N3=tm#2#JOjj^sDE5a27TJViSxLaNc+E z*5(I=CHBWa&1yc8I}#y*@cDV<*B-0$uO)w+S`Ff!$Q*)WH!P1KI%R4`vk5ha0}M@%i>y~Bj%&!ecv(3NHAj7DEq~fU-6qJ z%s;`VgTdi97JY@isk>PW5R52Xw~9u}EHtW*Ml`0YK-B)j=dkr2s5aKjE~P6O;70Py zIHgYBG=DtHxH@^jj+gj@SB|R=VRzCa2%#YnrHMG{k3j87J6(XL1C%ZwoBJ zF90%ILzp)|4)AScrfxM8Dg0U=%%~QKDrMayge7l4#m=>1xT4*6_b|LmG*+J$GSrVYfSj}_PhfD`0SAaBbjG$<5PlJ3oT%0@KcuKoYMkUgf}n*80(+l;B-V+J_wbi? z)z$e?iTla)sQm>~9zrZE?E$Ki+bG#9#{N&NwkuslDmw1NLYKQ@ahxXM)ld4-BwoJ! z0@!4?mS*PE&G~5k2-AUr@Rb2rr;2ItqI`0|#6|#s{WNrQBc(;~M}&lDgSRh5gILFH z&-dc&#?@%&n~RJcwat`un<4A#H=+%|ce*AiKNx4O@$zZoo;247@B4)Vcbsv~zzM+C zRp+x?)5UwpSx6iF{P)muzAHRL___kXxb7o@8bC%I*3+V@0wMPOIyQgkmWi_!l7!%I ze|uw4uBmSTEG`>k`IH(B4n*Ld(sm#auljhJYh=$B)E>uDI4_04wd-BT>~6FhuZ!9! zOC*CHss$1=PwB099z&wh6FZ<~`kh=Sa7DEFKfwY{CL*?Vn zV)t^86-=Ri=-%1krv|VUmItf7j*SXhOI542gYx|271oQIo3CS(n4H1>l!DQZ^*mq1 zC21czA4cM|SIgN{&pQALb62Sm*DgFOBT-sI=m=>Iq7U4%rLH!(;)>}PKya`}J!y{Kfz2Ks>$}wg`nPDtv zr`&jys2+tN(Qk9Nu7cvmtEBt0bBq_DR4$C&_G!2jd+7F#AQqFBxZOzaXqDNZpdax!iyM9 z#(q2pEhqnYEXAvU#Z2p7Gx7ADzLY?(W{HapVVShoGvSO{c$tCrUv2<>&94?XBdjeR z0RAJZ8twInL!JVQZIwGwd7ACp*l~||HV4b$5SBNsAyiZvEmo+a^Z=3DDa(78FeD@0 z$2pWPw_a>5YeXlDz&=zjus?sP8UE4DTw~v(=qSr0Lz)LLACb6XmIc#I1@L0?xYd$V2CUBmo5kKy=lufLoG41p=!_F4z7)l7J4T zfLl0r|28@bBiO5|*%Ikr(;F8=T~gg5rrYrCac|E3Z_{`pL=G?hr%VbMIP3>_p>IBN z&km_~N(xQyQd-T|T&?Pn@2onOz$ZMhQYk|WQnGM01bPSo?7S>XG2^^LZ~nJ0x6`gJ z8OSvh?8_MeSNjYyRl@p}-}rVGP%AL9+cib395yYi@PEQDlixsG?(YBwd0)8f=g($z z+y}Y<9DFHQL;-6W`V>~EKs?V6p(H*9+5QdCHvB436je(8R%dzg*H1pmV&YA4{ zA!acs$78?ze&SaaBC9uQNOJ)CcLgT{9>j|RQM->IgDWGDrB)4tlS1e$U2Hk*^y&T*!_Gx1Fe^g6m0ws_Ryi_NINM6^AYw}kefsVIx;TP2rdAbE%<;~W6{Z6Zr7-D zvR7@l9`1yhgt#tX)T{W&$RRjDxSYtZTzPl_vX3DoAp4WD3!mJ=DZv{b{ z=fE0YQbXrnBjYubalQ|wuxY1;J35a~nU{2L0hm_^LU|>!8}1a7!q;ugPf~zPCRU~Y z6uSF@+fJ!QsdEpimS|!kPjrmj2d#0aha$*w9cb+cHMw ztqW4aAGPWudZZvHE^jU>rr!l(AKSnkkQ{oYP7#J=9H zF#$!wkVXK(F-o)AnabS8L*_zsVm}o#Oow-7 z3^-^7=QQO)cb^=B23h|mH%EoYMJlQ+4M{F?&?73{=Nf2jW>&RF-!HDgb&Q3aeAlov z0Zh4gGrzh=+j;rEMvYUETnu|!m)jG$qbEx?Ceu}=n?=za#=)JohP}f;lX09+j@om( zIvRBV;_n1PZN(S9EJO&oS6vDGqd-?Q1n{#Aq}eAC?8p-&oedTKSOe|lJ}59T_JYx& zF>(;>c%j@W1d{J`!XB6cSNG2hul!{&xDrHWedv5tV|^(6ZRZVwa486#HKY9oDszagwMM~K%!azT#jRYlE?WUgvyH0 z?hr%-q@3?iXv4$vyj|VT4~t^C%wjuiHuK73tM=`2mb!Unf61^^HZOym^{m60qLmaV zXvnRosF=De0?s@Flzp&HerCpuV0bm|?F5pC)_D&0-J6uBX;Io6kix2MfTXMtRTb3~ zeVMOmLBU0m*^%Y1e#vx7)NNr92}z*FUD5OE2UKpm-Yu;dnMXM|pW7&1yY58;Mx>7@ zw=km)q2M0@)eeg+oCr3DfSlW@Awo7LaG(Ple&-neY>qoMXb}Pu2O7PJf^sB+v+gGe z)vrhauB@);_w}ke2CT;vAnkmMq88$;;@^BA36l(JU3^|`eTK;QW4s!rPzSIK*a=v*_^_)0(XkhJ!KAubJrY&=QOxmN*?StcL3lm1L{ef3k(sP5lTK&lKS~mOz10T;2@W`pRps~BFY;s$_F0Y1Bz01=*Wd_PN znmIFM_2asHA@(FQ?~Xgoop0*~&|DJ4L`rj!^5M>CF3b;?R7N~3{hnTa3-WeVYe#6R~hp~1AamJk-FSowr0UF=9$QxC-9ipcL`qHZ6D4tv7glpsWs`><;Ck7 z6x=aqt-5g^)ALgUX}`RUf$5O97M} z9ss7$0&k8;VqM?!2NRdIdPtolfL+I!Ht^&WIF?w-kilHXhtV00w&U92#&b-pSDIZ7 zD&yX+%gd45U?X`E8#(oy(F^j0W5I-PRP(8ePK|mU$V3!&vQ&2^Iz>>7*{WqdNWQdm$7Wc>vat^TD*nT<%MeYUkz|TqXCB3)!2vhq*ZJuOdjPU4 z`1*N@D@UmJ?6{0;CBxf{eri}{JS`XlS&1pK<-;yl^D0%jgd7t~E~*+zW5v)>sED9X zdW}h0CGd=Wh!Q2E0Yq`n!e9qu@}{*wZ74lA$}Gt6ZAvcCXWS&+T+$1nB&Bx_FY#5X zbAC`LIbVlJ8xGU@o@pLhB5U0%f)W^k8Ah8W6}O=s-i@89bzNod+iZ4uD*tWbkvvHb zaXIC;L7P4i47KfvQaR)+AT`+c_H6PxPk-DQNDGW3(&?>WYBy6KN9aj_V{Zn_UD7L` zyPU}{;JQ`f9(M$y!`CZ4wd~$Q65Lp@4{t74g%6yidwjiCLA*}Pxy!DEiCh|QAEF(S zv8)e^NlY5$J(}_W)9x0}h#C^O*eVI03uLYPVCAZaqeBGGl*m4{+k12Id!z-OA>YO9k_WRF*e~j5FrJAKPu-zP#hzfc>FYs8Cs^ zk)5!w_7F(7h5|&Ik5~KZHWEjtjzHOE)Hav{{5Q?8UD1Tf${ah%*Vmv5VnQ$%eN2KHEWZRELZb936ggNiJFa#= z9&d9`Cas!Zet)v5xiTh+fAj-x}`m}9!yB&&-2FMePfd@>Vb3a>-s#XLr ztaVzxkK<$_zkHox&di3q`={f{v}3hb!J_cl64A-$T2RNuJ2}pQ*X#=1!}Qgen;cvG zk!UCsLQSaarTv02_MMReR0rkcP*R|D|kv(vEBvK?(5^8em0P`v}qL9fZ#TF{-smG;H;dLtjHqYZEySP8hd65_+9$h{;jf1k6 z&Dg$&c~9O;Y6si6HwNWVvTn}Bs0-dUsG$2k9G+#Sja+BcedsuS=%Uf>uQKBi`6nKI z!Q?4S2vk4DxY^)BFn@yT+6)IhW(X+`s(q`VQFG_1f;S4mZanNf-DkB}<}<-=J`6C9 z$5H(+&J^W&TdHI7U_B4~RgfP!h&0dxsoVX{YlA^y$XTp4YZOhFf0T^YfFww+C{vYw zyAiOJL=|909F|HJ0hB!(X4!MhB^{8?xbEiF_eZti{lH4{6|AQ(qY2F`C*U0CH@(PF zH5*t_PB;m65QvEue)Lrsq+3v>ypUZQvt*C$i{JZ*ScPZ zirtx~I7G|Ck`IQ#LFw%3Of(0yFcJ0x1I|WZRm-S{2Jr@qgi+O<%Y#qsKwL-WECm^qQ>J+=|i=-O}}sw?3N=jyLygNRpLj3wVwfAA`cYGDzi|4 z9hZFp7DE(pRDaW-1R{6aM;Zjt7tq!Ve2Ss3xPS{$?hZ*MY_EbTBZkkqsVwS)d8+O8 zy>=%j6oRUp%#L#Mz@KEO9=*dCHVi5SRk(zMB|*+D<_@Cwo@}2_guAt%_gNKcG|Z1M z=f97Cu7`B^!5Lv$X0(GD9)!$y1OCLTbh1A{C^-5&T36k}D4RxN=e*HR3%eI^A z7(jlqf^@t^9aKZfJ@^D$dgblf6oQt2^itA@6hVhttz*K zz@Zoh^4_;e_5c5V=_ES`6xlKWDxM|gy!`ffd^O3F@}>s^R5@mVMMyf5%qMLB(ts$o zsC7Ll0~EFDaMop$IZoKqL%v4>XnCQ+;Hq5b@)AK3Nix++((M711~SRU8)vOD^Oyus z8#_{LD1*>Cu0T=ut!PpMc+ZK$RVY8|KFf!3!>Dmkdtm|aYe3QkNY?!7=AP_A)J7w& z2nfAwbwP+)40oVjo^1M)(}b#cSJ`jIRvq*T9LQ>v7zOc{!>192KtuZoXi^I*GMu}K z=*5t{vw>I3S!wIXM17MCXh>Pp9saRsHhs-AK=#P$9fkE~kBU6>UgiW-j!3^*|2;QIkn6jk!~&EfGXv=ek(&jPiR1Ai(m$CPh-oJ(?qM4L zWMbeLjAdJqZ%^QVs~oqc0Z0wNW$`;ObluklGsQwZfoV{SiwTq zZv;-=s>Y#3U|sat@BD2DYtR8m-E)|v@}J(S4>rHmfEoy7tkbGhJhJA|2 z1W~x{HqLZ$f*i58512NNHktvFcK}YVMtKjYBeRNQ)0ezV7Ws%i4w&`riG@Mcyeuyb z2WO1v9z?)ZMi}$*Y(pAW`qk1&y0%8fmK-LWT-tT7jJ0V zzAI+(Jn?IylwBR=mV!Q|SCrkRWi4(fx4v&W=aivbdB8OrGBLM?7_m>h$|y zj$u;p^CUmIHS^IKnAjl+_@nw5-vR-BxqQAc0*?F3f#{QK%NC> z{XxWvmv93`5A@Tb`WP;fJI$wpdE@h-3tYONuagt7vkNvqcqTgYlZ$rj9*0id$b);m z>)G)u_QQ3N7tCsD?79k4md0AYfHW~3`r#QZCBx}bbc6qh-+nH?Y7dlw6QO7d)?MW3 z@)^V(lLO#vd#VaM>nwr>uKi=!K-58Ux1DhL+-LSFXzn;u_%^0dbsB|LXho^2Lpq8$ns_B#Pm?@+i1=VDiKNW4SX$45FWowJj za|(_|%TU1ERUu9OC7NvA{1gB2ZA_CxFBHI@btTD%+#s#$!@CUQr-+$VlLhtJ(6Y|; z^quXmafJ?^0nE7*2Y@jt2J?nTsf)z{3d(stbwNg>dH2h(`s<)%I?T)iP0#V7?3C}} z_)%gvPH(}tW87m>RnR-9HEG@+noM(3e24g|m8v9I{em=3JQIOY6k?=qQ#y02SNW{p z+6z5-8IIASx1hxBwBh?(r2cCxXmBY1JKc2X2EXWVV1;gDLxk|@AJ$krzFg-SC{Tw5 zz-6mP3&3j9!&o4j&QtKp6MMf=f_Its+rSZ@wJC9=$!ia1Mel~#vf>o9tjgr}S^+1% z1elTm&8FRn?2=$+7!9?sk7!x(XgQz14{&!Pynu}hq%5_Xd0WRNuru~Rg_l69^<&2` zcLinudM#?bOIs5d7c0zWhUw2wZO>2~aKCw`pZ~gVd$SCr%aO~GqC4v3GnjU+L|)R~ zfp;Fk%)*-aZrdOSpGrgK$lPDxzcrVjgzt4ujJi~x2-!!|Jh?^*6pn!&X*GoPPdteMM*tVUvgNA!3hfMe8qhv}b*hIFP zf`x60Ky?=IpY z`U~eRG)f^|;vCQ#qR!} zJ(y+}681I*?Lt)|B~2#&>lxG?Tap_PC!jT2f#okntBI2e25bTK!d{t93Xs%zn+cw7 zK!VIz6Fqb90K3-5lxVpPmAzxu%`?R!um}hYk?+^?55mcXt1G^0H>DR(;+Lu1ig~4u zt>I}h;u=Rjj1w#AlolXZ?>keyMxG4<3U z_$!wX{EuqQ9?A+npf7|wVT7NGN5od|m>93g{4ZOky+>7m`9zj+vcund!96rflsHL_ zs0Mb)+?HrJa8yRaq;DSS)i|ynzw)>=hFsT^0F6nYO*sg(*JL!5682hi#ZNbZ-t*HH zmY?NT;{vxH2GGlP0{$gX4%R~lP|IECzwzn}oh8FH;z!$Du;m!u-209VL_NNLL_K@N za8d5V7uQ5thrDp^UoYsBYjRDLM!2z0pvU|E`i}5L6Aw4;1B_Cz*J)6KKydu}kKl-~ zgStzKHeRO?JtKzY#Xo`~W1=Nz_Ub!PSw`r_+O?*J#zCXT{hP$@<@pca6=8`FYh!7h zlNP7YA?D-N(E|8=rZX+Nq5aH`(6@&s?P-lh5e;TM@5!%$xq(;btn^}RrHX?>{&+WHh} z67z_)?NeA?p5Y8GKDyxA=)&s(JIdX%Lgs#PN=2!}z_?ici}2MX)=Lqi ze>dh92!H46BSzvqg*IeNIFoj>al>NFc*ccZdKPT~qJPjNbj%`P>DK2E9u|1Fs-)`< z`|_IH=8BpHv`Ir3Cpv`ZVK;K4A8Skho&6ZWo8Wcc88CPSHZfZ!_a&mv;M$mOPDnAC zTghOh6qKG`tEqQOP%?zPcO*&914LIk2;A$yybCyn%gqOa<>h!%d7A?0B)?8gJd#xV z&YN&wz_d&yzU?3yjcSRRHRK9$-FwYvbKOntEhu>6w=^}GZgL4MGRBFWbq3J_Z+}Lw zpq47vdfC0NFvXP9VZ6*QGtpxx;u>E14W?Z$0`yAmdC+?lkfNzX6{{EG@BMyFrU1&P zYp~Qh0m7&1)k_zNj8pjVs|nRXH{vA47zv>owyab`;Ik{oC@E8T!w$@GRe}tu@FXOJ zo0jEFP=dw?^x+b?5xK11&CEZ45z42*y5w~WwtC-zN-w%xaOl>|RJ?si#iAZPD>3rM zeDlv2xn9v?7)k~1zT-5n+O|+>t^y}Zx}B4mMtx3VRo&_(oh;Yj=g-K zw*FX`T%|;agA0)VlAZtB0+inAfU29L(FerwP`9 zGA8mC%{Y|t;h^Y@I9BRuoBn>7Asls#-BTR$YN*K|5R}IU4u(lJCXoh(UKx3erMLnZ zVzB5_4Ait}tC_a-rmmf2aiQ_q_s|X~r9DV^b3M6NZgn)d^Uktoh+uIZqMRo!w~-zN z=?}*?pMHUT#owf%CNnJLs&tZLJ*gjOoa8#y9phoqR{u7HR^n>;GD-fXbG>X-A2cg| z%^#eqEE)Co?ARS)_<3kyP6mytAzZoijp6hgzYgjFOa7aqSWi&wy}X+B-)nKUl%fRL zbk6#2{Qat>V>Dc8=PkOcylG{X_k!OnAe&FE)o*7Gzjmq&c0z8?7TRb{m^6eujvovz zZmaLDH2d@<=(8w~P}Rn27CZa%QX#U$Il^##^p^#ep2nGe+Oq-1enP#cm3~ppi*Xz0 zDrX*9c5%|dbqOwJIVT4Y&qx-K2)|2w)>l~w40ny%r+P}nW$0LsHAmZp-5UF%-w5+N zUy({e;_KZaV@%wf0MX4xEoO5;=O~GT|o}KhUeNSYqluWCY zU_4#>^nnDwlC&P~duiHQAAU3_Ofq~#up5s_Nak)I-0B2mfW;!A`%w{%1y6r8_Q4Tm zete-0^>ha2&EZikIx2S@)#|9Z0~uUqcj^o?){~Dlu@F+!Gt4DU|1)7W7Wi@Q8L(99 zN63}mWejWAW|Dgz?maZ`Yzz3iD=jUG8PH>$tHIt3r>~%Ksl?6Rr8oHL<9pm&2=gM1 z7e6xn;Z=)2I+UbcYF}v8RE#jVV~#JD3kHs2XzNbJd4(^PMvHq*Y$WTu|GurIX@1c`6ZN{_3?=`L30;dLj>|yNsuKa zwT|Gi0g~vZp^3}tO+yF@o63bdw+BC!=$$OWf?uKBSe+0C{i*}X3Xc2XKgM)r2GXp4 ziS2C!?y0xB7Qq#gG{*5?=0tUG3OBWsGba_Ubpbsb<1B||8#D%RkV)*}%csTzV>fN6I`|5x(0@ZwRX zZ_}T|@ifi#m}wZ2m)}&9r`j@JyzWv>Ft1nSjT`cKnxrutD?8!OC25J1Qi~Qcx^ZZn zM=0a>iR-VWo~@Q&F%6Mj&;_?-Bc;zsoW4H?<00*>6=$+ z9Gi*6dS=W=;V__JyOEY-i&SM~Y;)`o)udm+Xs*S5%!t-lgkUgpB z?CtpGYJN-UQ#cSPWk~uS9r|7d!nljfUw2`a+I!nPA zLh@c3eLZ^vYf$*Zh8kTokEt>eLDeBxi>uL}SS>Z9#eExW7SXmWQZgdAUAUO(HoHXH zz)pgfOd+SYdzfdVvBC@ zg2jOuAJdj3voFG$)j8t>FK6_hRgGblkiNvIKRw=jBMFzAN_AAp&Un4TQTdTdHFvrO z=jcCCSBUpqR6R;?cWPRDCeQ1MDjN?ZmGJSa2-aO&WYHM7Bg@UeYI-Z~tnsg#zxUCm zdukVcmETMo#}5mvewHlCV-t6r{4Lnwccy63Wk$O&+Q#&?!d*KHjOcYd(TTV6rAIVptO%39~V z^l`NGf%G5Vz3?hf3w*W4dYK(BPgOZ;j9V6pn z+2a>{;56Pyu6Pk`U*#hv;Y~e#GGz7`#SAPc2^y?JwO3Hg0Luy0+m=nN4+PJMh7$@z zi4zLUqhg)P;no?~e)Tw2iIMiG`Uqz9QAYn|BSK!qM}n1+43&qA05QqsMYwX2iB|i$ zyIX1vdKy^(7oN0CKrTdKqk|d;DxOT?w2O^BW5+Sc`e{*w_=fg+>*vd@_@R#U@nS4> z+c98nrnRxuG~<7R-LEgL5<4f<>e-7p>)qsiJu&^pnH=FyqWDbK#$*;+O4hViT-X|L zA=g+a-=P0a%W%R%gwfkV=tq_B=5-g>!U}7iN=MCrN&WZMzo-oXcX3K-Oei(6zcOH_ zS){r)T9l=ql>DAFqq)h$nYNJX8E2a*%8zeU-o2~}WXAQyfm8Fqr;cP-Fk=);62`CL zmU6}!z1dB9B>B{|Ui|vwN7Gy|l0=V9_ro`camSy!{B7jv1GYR?&qn>6yG8GbL|l~b zz;pOO0y*?p7N(n*+)Z>54pNj=#mNyx2Fr9SLGcpZnk-JCR*@#)D#z zqows{F0}!_$`Ykb6*K`)@_t-qpgqebR~xC;vdNoh6(`1435I0H%Z!Ev!ii-hF^5U$ zQ~va?tT@@7>85ru{o!jze1?r_a=dcKA^Mmzz+q*VpVjCmPO*?=Z=P)zSq2uVh~(Pi zkZR)~R^=a`SvsDX)hjgxdw+-2dWgY8>GGG;rzhOqjh{Z1CjzY z&^e~-YMR2QT9U2sB@NGwu(-*_|YQrO3 zd-wk zPz~=>0?oTn`&?TTgL|c^9(jrMg9)kMzrfM_DleC_a9#`gYn@QO0cUKc_5$tX`&Ly) zI;xb6kZT9RT1}N2BofQ$hZ0ZT!}oML99F?)X;-me#(0HS%iEG8As5OtTrilGe>JwqH?JT@g-6yh6hA1PfS%>`qPSDNvFtYF4~Rk5qMo?V2S2@W}R^_C97r*7Y3w@DAp zVz9GU)OH)^7LA47sf#lHDe?<_CQ!vAfdQpk&oQ(fq_dssT%z<*J|x)K(J zj(DTtYpk4XPnQNlgz+^d`*>o<)YJ~86QdtI?MqMf!o0#7J9UZl36wz0!uU0l zOf!$rDF|mW1CtHj(_Y}5N#x3#iwlWD3c3)F#13svr?%Z?v+3x88+X}swYubu3d<)8 zLSENtFI&7|CADfPtIwS42(lIQFxC%$Y-3Sk{3dyd?OI~T57n6SpNjqxZB>sNFi0uX z7>B!!T_niKNGgWg5$xhT7+l``P>na2lQ4<#YHI%;5cB4RH&_{v3-gIYzD^L8Xth#6 zvZ%G1;6mM*e2KYwN$ngU>Mk9dpbHBnYwJ|TXN5WFl$6KEwRfUO<)KDLtvx3X6D-x- z!zwvCM6aut9BeC36rZ-Kev@jx4$X;z3p$n517l@(NgJn!f;le=F@B7kYi+ml@;L1Pe5kNfADIM%E2isHNjQ z*_U(5s%71ia6%{N9_CwC3P)Uf2Z>ExpY2BaCB1xeu%%A*m8Q*6crZ`b1|K5vE$uJq zQ%#GQ^QcglVf7eN9vi!GB~^IfxPm1Fe&;@#fJ8aFP=c%UxgQwZy|q}GzC7{^5pPcMT-V;`Pw zc7|ZO_K>Td94A)eZG(%cxm)~>{(RTea`5Ne%<3~~9iNO)o64(c!J$_@=})v=`}|{) zIZOqpVS*>_(qeu|(1t=1t3kx5-Ba$CbBCtyFG{RlcflJ59wf{@IqK4UDFPOaXXe`t zoXRjQN9Iqo_)Yt`+^`Q;Z9f!DUWA5?wWG;;yN{%-hXLPIe!l3RP(RB3)KGpHa!C&A z@kq8P@^sfV{q29p&2%Q2G^J?Q>PrmqSd{ZxZ<3P~_RR2$-}pLdzYa^D-g}pp4B|jf;Ak&g}KDnKE0EhK>q+4;G+xU20{P-KhU&juQFTt3VxGi3NWL%KU z%W2m7TS2(7*Hn=t)Y3}tA+0(?+dRci@XLTc#q?oP9iLsx6dQp@QB8L=;`@y-K>?Na zK!~a14D(2RDZ$WOO|Wk&jSjHCBc>?a5EM=H*E)W#p?($&4P{KC3MVc+%Ar<7S-dVqfi(` zEc=#WlmI~PZWUG15191FTXPvtGFS6Ey-llJdS3WjsCm~lnMa8>cb5*QupEf07)=W4 zWuIeuCMJ*jUDSbAnv#MDn~=);eTzd6h2X|DCX_=dR6c0FIeJrZiNof63V4^yUo4M! zKA?IfBwm40`&M{5QHVI2C?kF)7Jnz;y|puEq)PH1f&2Bxud|HRC5iWC2*|m&JbKO% zr`($w{OmnXqf1(Fgy_v%&J#v!HvaEi3V)|aX@4mMXBT8QLTFI0OREaYv4_L@W|tml z<=&~)NbDFij?D`MMdL4GYPKRo*wNEk0~qxRxmho>MqnQx=BjWs8I+s^8D(%|?zJ%g zOt`FJ%VoScCv>M)z(wBTt`A|vj|y7=k!R5-KYCDRo=$9OA4hd?$r2hG=|iT41)5^3 zOk@saOmnWiJ$n1QIkYBw>tB4(b*(e3gbbefPyhgx_QJy_MjuLCaGN$Phi08Xq=GE{ zzQHV;!eN7$4yH88Q^bj<8iZKgnTws!B`2l(ELG=msY3_3Qu=r?w>lNpp1@zSPcOas zEreU#=bl1fdxc(|>)DH{k?tz@GR@`=X!=g-b#GpNXV&l?1RmXm_dvp9*BSDH8xRUff@ z{iPN+k7D zePSw8b#Z4@Wffk`@KiPG*2v5eYr)YRIF0pdmWB)6s&nHzvXdYkM3i#?dJgKO(P>yZ7Iwi@KH-@kGL}6C+7CQlR9-z z?pPu^{_tp#5SainFQo@I?;UfZH#gyC+iF};UGpxV^kEqL5x87vz5H(-_E1l8Gx_kcqT!Gieye7MSicP{c4bbCJ-*% zyKN#Vi)Cm$)^mUDg8T4uZ_0VD>RkkBuKW8aGZCJQ09DT`omOq;=)r?DSojYH&GYj6 zqY(ZLt~@75;JSBc_`TClS=~qPL_tx5W8$qXp|~IWmqr@w+^LDaK=q&HHum`{L5r${ z5%y;X@!Ic?{E1Os&@jtnH&{*fWzahN`{5{!flNTGB#2#ncnzA1`3P#OW64$cuiR9cA$0#!k;Xg`$ms<7 zLWh3|LE8yYB`~O8aO$hL)$<30+7*a_9r^i2Jz8Yb`uTTb+=Q$zw0B*<9uIuLlV-6S zI}7*lM}y^;MsLVti4lf|x8bDS*ohT{##5Evnl)+g@H*c8>`~ z#f;dc4}cpQCRvkauXj=_KT?!);0_scMY6$$6yd6kPn0--x_yYNIWXrlA1)eLE#ur{ z^E=^SEO3bR&^&v$CF%+wu9lsro{4X779c)d)CsUbAo6y0G)tM>=|e<6#89fq+z;+e$fH)(Js_Ksbqd%C_zMW0vMoxPb0Mx zq*Mn;(Y<-omZ!%oIf!Of?zii;hW$!9}J6epLXbj_JB${g-GHE%>!VO z-k29?XGBD*o9HgeQZ|P{0l}Wip%4NitVhZZqe`zbB>(h6@7<5LCSFukz;X*FdR!S1 ziSa@raiH9H5VO0pDYphzs1M|yzP>#W9Q(Ym#tl$IKLB{?HBoxAfz^9?-$6XFIs$RszD zEf3u=FZBwNc%~{fC5ixEM)y83vjktA1j9)ld8(%eWaKIR@e?hdK0q37ui8`VCYfay zPOGN)DId9o?;?n*ULF!+9xl@kB&i*YZdu;YgUsc<4L(evXL6viw&xm2Ehp1P49VxL zAUY}4UqqAg`8#*5L^*R1LOsUjb3=AV>WrO?H`sIPw>M%t%+e9oDMmU^39&OUMjXdZ zE|0jU--Uce`@Iz)!nFhNamxsy79L~_K{Bz26cRpyxQ5}Fbjt#Kx(114NFotJpmhx6 zOjjUD&Hx7G!5X=!uMk0DizFUTIO>%A0q=r+bK)h}c0H>uAoTA*6s=ncoy*&|v~-xY zpKylAzy;%JBj62wE>YM1Xmz5(q$IO!yi|5&|#|97RLtl`}c4>NVLlkx9@Cr5#9tO zqr{e&S;n#o_B?hu1)~uVyyKQ2zXc{O$OQ2k-1Hs=z>k@kxeIEnUirsi9fAQvgDy@c ztcM`+!cAtMk{au&jK-Xb4)FFN#(6i|WWd`}r3;Z+6Uo7IBs~+M-a+Wgv1;m67J()UW{>T*F_v~9ewE9MF1|M@->jyYY5`4?+b{$996-aNZ~%-r!8P) zGyp?s2_k2<4Rj<$E%(<1kO*F(@jA46g8fKl0639#DXIaKSc%%OtU<5yQ zlSE@0qdaR$-}$o0q`FMYKeNAF0W|1_rq>W8v=Dl}%E6V*2eEpWt{zky4*JgZ%!-2a zQCp`3|6QP9w6X}_$-MsstIT;YFnqWbp12MN*Kx6uOdMSY=KB<96uBI~fuTjSGUQtV zpgHIAvXbMYvd>lFVkbRNh|+rKgGUrG)3u8)>5Yz#n!T$ysWCGD!(0l|;tgT`{*=>s zh=Ml{vM(d~-cC;qSv6p8GZ>sduqdg@%KVL$C3uV{l~YPh-X~2`=v;F&ywUqZ3lXL9 zK%VvsVwaqbdIfN4NhNhfL|l zSBAE;_p$s?rDV~3{j~$383Ba0#CF1Wds7nh@{KJh!cm0IWL*MU?o zxa0HNdHiT**wmsNy1P@o2&uPD9O3b$8Bzwu`JzeMfHZtLv@!gV`|xiIW0uqW{PWIa zrC|psBake3I~Ytdmb?%s@YY_0@7843g?H}zU#qGa(v9aLFeN;Nwx^5+vjyN)NPW|b z5P5@2nL7tV0S-n?CKvbiCiq%R6WDcb?WB~5z`3+2Oo98Y=E&qcp+3{a@Zy z_d`fPU0>s;V5sd9;CT49vzO6jpf@+xbAX7uU|Gk6#H1r5k$#Dz1E{og88n|10G_8o z&dZa@ud?88eSqyMv@!rW)*d0(A^&T+96Xd4?*G1#WgKU>{Go$E0$mNX+s~Sx+iFUBq>HSONIcE739K|g^|~Qb8SKj4Eeoa%oVO6)c$5#vz%M0 zPbrzsggkk2Uh;9AfbdyB73w&@N5H=E0WKVAHkil-&wg+=$THL%ZjWv|c%8ReX3a&? ze)~S+f`?YD?b19UzwK+_g3w9XIJ%zgi-X1wwsu8cKe)Yl9hhvjw2v3IPd^GOd3yB8 zTRRWp_yNdc>sa1St-cG+_ipuICg2z0f3Ys`A^*)EDYjdk`iUR9h6<)7WaXL<=3!mH zF&#RL+={>$_3z=okqgUEi}iHon;S_2BL5yqO+X%=0N9X1WNRZ2HiG+F_aj#0SKp3L zhU`LdFaV5+RpO%EU@3(OTtyCvKLAdy)N~V2xK1Rv3gV`}EB*5M^J|YMxFU0)^h2s5 z*1HfH_9^>aoZ<-xdaAQ|p=*PiG*c%l;_(jfqDp zH6$|tV%XB-Kt@KwC5#d>igm8iTsb1{_y!5k5DEt~K#*m?PZ;{I zz%5QM5PHV*nknS>l7UOZo3htO;%6a|Vy08a6Usq{!iEcl68C>^Evp3QkqidRC*)xc zfSx(Pjo|t_#tK3Gr-~uitBef0^0~D+@QBErPJqk?{mb!-#20xmj%s9WLJfS~J^rL} zR3}0g0vHzK0GWT&Cz6s@T0Yf6R)sm7wkjjy1i2@vpRmp@_b3HSOW;s7|Lda=gXdr7O~2@b*)kf$m9^Vo;U$-<^$m}c?X z52PbT10708?O~8i!a9o-zMrYAJ#of_NzTnbfhm&V#cq?GEiTiLveyl=cARt7&|hmL z;kR!|v(|(AB@0+s{va8UO&;7G90$`i(!vl!&jqj=cSvr+bvETsE0lNOLMK=J6-<5; z=$ep@V7S~%G}9JefdbchtD5-Q0il^4nF$x~B`rbfLvg2B$OE?3JTQ2b*Z3fga^)1< zB|rUJan~k@km+#W2~GmvvT|d%{t^-hSbp|4I(~4FlhOVF`-I7$1nfutMy~cDDtB#*GQ6l4(K$P>8APm~8wg=6D{Yz3K5V-piS*o#)FL zI_XN6qlV$g>GacIoU5fDFCUxNylj>@tQ}`duyq?4cabFa9HFE+quxKZ^tx^V zHR4c5>7$aE8>80xK67G3?g%EJ*Mne8Oc1s0yfN!IszsjDTZR?&3_KQ~^qANqR#*b3%h z!6(M;FLeNw+a=Bwvb~{5VVTett+KUqY?Lp(cNfrXef%>fb+V#&*VZ>kyoCP$|L|XZ cl(4L-#3N75j;To@4_;H0SG}5h+0_5v01$%#>Hq)$ literal 0 HcmV?d00001 diff --git a/examples/dao/README.md b/examples/dao/README.md index c41200306..742252ba0 100644 --- a/examples/dao/README.md +++ b/examples/dao/README.md @@ -10,6 +10,8 @@ A DAO is usually implemented using blockchain smart contracts: In this template, We are going to implement a DAO, where the members are defined by ASA holding (1 ASA = 1 voting power): each token holder is a DAO member and can participate equally in the governance. +## DAO parameters: + Every DAO has the following parameters: - `deposit` — a deposit amount in `gov_tokens` required to make a proposal. @@ -68,6 +70,12 @@ We use functional notation to describe use cases we will implement. - `withdraw_from_proposal()` - Withdraw the assets from the proposalLsig back to the owner. Receiver must be the owner of the proposalLsig. Transaction composition: - _tx0_: Withdraw _gov_tokens_ from _proposalLsig_ back to _proposer_ (owner) (ASA transfer). +## DAO flow + +Below diagram describes the flow of DAO application. + + + ## Setup Sigma Dao Setup the sigma_daos table. Indexer should be running before executing below script. @@ -86,25 +94,25 @@ Run below script to delete the sigma dao user, sigma dao user should be present: ## Spec document -Algo Builder DAO [specification](https://paper.dropbox.com/doc/Algo-Builder-DAO--BRlh~FwufNzIzk4wNUuAjLTuAg-ncLdytuFa7EJrRerIASSl). +Please read the Algo Builder DAO [specification](https://paper.dropbox.com/doc/Algo-Builder-DAO--BRlh~FwufNzIzk4wNUuAjLTuAg-ncLdytuFa7EJrRerIASSl) for more details about each use case. -## Deploy script +## Scripts -We created a deploy script in `scripts/deploy`, This script deploys initial Gov token, deploys DAO app, fund lsig's, saves deposit_lsig address to DAO app, and does initial distribution of ASA (Gov token). + The scripts provide only a sample code to show how to use the template. For your own needs, you will have to modify the scripts directory to adjust the parameters (eg voting time, execution time etc...) and the proposals. -## Scripts +To deploy the DAO. We created a deploy script in `scripts/deploy`, this script deploys initial Gov token, deploys DAO app, fund lsig's, saves deposit_lsig address to DAO app, and does initial distribution of ASA (Gov token). -Please read the spec document (linked above) for more details about each use case. The scripts provide only a sample code to show how to use the template. For you private needs, you will have to modify the scripts directory to adjust the parameters (eg voting time, execution time etc...) and the proposals. + yarn run algob deploy -To add proposal (`{voting_start, voting_end}` is set as `{now + 1min, now + 3min}`): +To add proposal (`{voting_start, voting_end}` is set as `{now + 1min, now + 3min}`). This records proposal in lsig (local state).: yarn run algob run scripts/run/add_proposal.js -To deposit votes: +To deposit votes. User can only vote with the deposited tokens (to avoid double voting by sending tokens to someone else).: yarn run algob run scripts/run/deposit_vote_token.js -To vote for a proposal (using deposited tokens): +To vote for a proposal (using deposited tokens). Records vote by voterAcc in proposal (vote can be one of `yes`, `no`, `abstain`): yarn run algob run scripts/run/vote.js @@ -112,15 +120,15 @@ To execute a proposal (`execute_before` is set as 7min from the time of proposal yarn run algob run scripts/run/vote.js -To withdraw deposited votes (withdrawn from depositLsig to voter account): +To withdraw deposited votes. This is used to unlock the deposit and withdraw tokens back to the user. To protect against double vote, user can only withdraw the deposit after the latest voting he participated in ended.: yarn run algob run scripts/run/withdraw_vote_deposit.js -To clear vote record (from voter's account), fails if the proposal is still in progress: +To clear vote record (from voter's account), fails if the proposal is still in progress. This clears sender's local state by removing a record of vote cast from a non-active proposal.: yarn run algob run scripts/run/clear_vote_record.js -To close proposal record (from proposal_lsig as a sender), fails if the proposal is still in progress: +To close proposal record (from proposal_lsig as a sender), fails if the proposal is still in progress. This closes proposal record and returns back the deposit. Sender must be an account with a recorded proposal.: yarn run algob run scripts/run/close_proposal.js From 0f873e5f44879d38eb480b63f0f5ef168f14a448 Mon Sep 17 00:00:00 2001 From: Ravinda Date: Wed, 13 Jul 2022 20:27:26 +0530 Subject: [PATCH 2/4] DAO flow svg --- examples/dao/DAO-Flow.png | Bin 34476 -> 0 bytes examples/dao/README.md | 2 +- examples/dao/docs/DAO-Flow.svg | 4 ++++ 3 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 examples/dao/DAO-Flow.png create mode 100644 examples/dao/docs/DAO-Flow.svg diff --git a/examples/dao/DAO-Flow.png b/examples/dao/DAO-Flow.png deleted file mode 100644 index cdc0d136a479b2a23db9dd48b5254a6f81ea47ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34476 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 diff --git a/examples/dao/README.md b/examples/dao/README.md index 742252ba0..703e18693 100644 --- a/examples/dao/README.md +++ b/examples/dao/README.md @@ -74,7 +74,7 @@ We use functional notation to describe use cases we will implement. Below diagram describes the flow of DAO application. - + ## Setup Sigma Dao diff --git a/examples/dao/docs/DAO-Flow.svg b/examples/dao/docs/DAO-Flow.svg new file mode 100644 index 000000000..95194e641 --- /dev/null +++ b/examples/dao/docs/DAO-Flow.svg @@ -0,0 +1,4 @@ + + + +
Proposal still
in progress 
Proposal still...
Close Proposal
Close Proposal
Clear Vote Record
Clear Vote Record
Yes
Yes
No
No
Fails, if tried to clear vote record and close the proposal
Fails, if tried...
Add Proposal
Add Proposal
Use try to add proposal
Use try to add p...
Input: Proposal Config
like url, proposal name etc
Input: Proposal Config...
Verify deposit
Verify deposit
Validate Proposal config params like voting start, etc.
Validate Proposal co...
Is voting_end > voting_start > current time,
and min_duration <= voting_end - voting_start <= max_duration?
Is voting_end > voting_start > current time,...
Is there an active proposal in account?
Is there an active pro...
Put proposal config in local state
Put proposal config...
Assign proposal id equal to txn id.
Assign proposal id e...
Proposal added
Proposal added
Yes
Yes
No
No
Use try to vote
Use try to vote
Vote
Vote
Deposit Vote Token
Deposit Vote Token
Withdraw
Deposited
Token
Withdraw...
Yes
Yes
No
No
Is voting_start <= now <= voting_end
and has deposit > 0?
Is voting_start <= now <= voting_end...
Record vote (yes, no, abstain) in local state and increase the counter
Record vote (yes, no,...
Fails
Fails
Yes
Yes
No
No
Proposal passed?
Proposal passed?
End
End
Withdraw deposit
Withdraw deposit
Withdraw deposit and execute
Withdraw deposit and...
Text is not SVG - cannot display
\ No newline at end of file From c2bf95add285d1a1e58c5ac877807b1880609b99 Mon Sep 17 00:00:00 2001 From: Ravinda Date: Thu, 14 Jul 2022 16:08:50 +0530 Subject: [PATCH 3/4] comments --- examples/dao/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/dao/README.md b/examples/dao/README.md index 703e18693..1b9074670 100644 --- a/examples/dao/README.md +++ b/examples/dao/README.md @@ -108,7 +108,7 @@ To add proposal (`{voting_start, voting_end}` is set as `{now + 1min, now + 3min yarn run algob run scripts/run/add_proposal.js -To deposit votes. User can only vote with the deposited tokens (to avoid double voting by sending tokens to someone else).: +To deposit votes. Deposit is used to enable voting for all proposals. User can only vote with deposited tokens. Deposited tokens can be used for all proposals simultaneously.: yarn run algob run scripts/run/deposit_vote_token.js @@ -120,7 +120,7 @@ To execute a proposal (`execute_before` is set as 7min from the time of proposal yarn run algob run scripts/run/vote.js -To withdraw deposited votes. This is used to unlock the deposit and withdraw tokens back to the user. To protect against double vote, user can only withdraw the deposit after the latest voting he participated in ended.: +To withdraw deposited votes. User can only withdraw the deposit after the latest voting he participated in ended.: yarn run algob run scripts/run/withdraw_vote_deposit.js From afbd6d902ccb6816ff4e8394bdc05b16094a66b4 Mon Sep 17 00:00:00 2001 From: Ravindra Meena Date: Fri, 15 Jul 2022 09:25:13 +0530 Subject: [PATCH 4/4] Update examples/dao/README.md Co-authored-by: Ratik Jindal --- examples/dao/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/dao/README.md b/examples/dao/README.md index 1b9074670..b629d8b01 100644 --- a/examples/dao/README.md +++ b/examples/dao/README.md @@ -100,7 +100,7 @@ Please read the Algo Builder DAO [specification](https://paper.dropbox.com/doc/A The scripts provide only a sample code to show how to use the template. For your own needs, you will have to modify the scripts directory to adjust the parameters (eg voting time, execution time etc...) and the proposals. -To deploy the DAO. We created a deploy script in `scripts/deploy`, this script deploys initial Gov token, deploys DAO app, fund lsig's, saves deposit_lsig address to DAO app, and does initial distribution of ASA (Gov token). +To deploy the DAO, we created a deploy script in `scripts/deploy`. This script deploys initial Gov token, deploys DAO app, fund lsig's, saves deposit_lsig address to DAO app, and does initial distribution of ASA (Gov token). yarn run algob deploy