From 1a50d3f26bb3e3c7b66e2fd88cbc01c4eb9aa5cd Mon Sep 17 00:00:00 2001 From: Alex Mootz Date: Tue, 17 Oct 2023 15:43:00 -0400 Subject: [PATCH 1/2] feat: use WASM blobs to expose blend contract interfaces --- Cargo.lock | 12 ++++-------- README.md | 3 +-- backstop/Cargo.toml | 2 +- blend-interfaces/Cargo.toml | 8 ++------ blend-interfaces/README.md | 8 ++++++++ blend-interfaces/src/backstop.rs | 10 ++++++---- blend-interfaces/src/emitter.rs | 8 ++++---- blend-interfaces/src/pool.rs | 14 +++++++------- blend-interfaces/src/pool_factory.rs | 11 +++++------ blend-interfaces/wasm/backstop.wasm | Bin 0 -> 24430 bytes blend-interfaces/wasm/emitter.wasm | Bin 0 -> 8366 bytes blend-interfaces/wasm/pool.wasm | Bin 0 -> 46658 bytes blend-interfaces/wasm/pool_factory.wasm | Bin 0 -> 2457 bytes emitter/Cargo.toml | 2 +- pool-factory/Cargo.toml | 2 +- pool/Cargo.toml | 3 +-- 16 files changed, 41 insertions(+), 42 deletions(-) create mode 100644 blend-interfaces/README.md create mode 100644 blend-interfaces/wasm/backstop.wasm create mode 100644 blend-interfaces/wasm/emitter.wasm create mode 100644 blend-interfaces/wasm/pool.wasm create mode 100644 blend-interfaces/wasm/pool_factory.wasm diff --git a/Cargo.lock b/Cargo.lock index ee71073c..75a3b200 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,7 +49,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backstop" -version = "0.0.0" +version = "0.0.1" dependencies = [ "cast", "fixed-point-math", @@ -106,10 +106,6 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" name = "blend-interfaces" version = "0.0.1" dependencies = [ - "backstop", - "emitter", - "pool", - "pool-factory", "soroban-sdk", ] @@ -402,7 +398,7 @@ dependencies = [ [[package]] name = "emitter" -version = "0.0.0" +version = "0.0.1" dependencies = [ "backstop", "soroban-sdk", @@ -755,7 +751,7 @@ checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" [[package]] name = "pool" -version = "0.0.0" +version = "0.0.1" dependencies = [ "backstop", "cast", @@ -768,7 +764,7 @@ dependencies = [ [[package]] name = "pool-factory" -version = "0.0.0" +version = "0.0.1" dependencies = [ "rand 0.7.3", "soroban-sdk", diff --git a/README.md b/README.md index 9aa93d16..9a76f7b4 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ This repository contains the smart contacts for an implementation of the Blend P ## Documentation -To learn more about the Blend Protocol, visit the whitepaper or the docs: -* [Whitepaper](https://github.com/blend-capital/blend-whitepaper) +To learn more about the Blend Protocol, visit the docs: * [Blend Docs](https://docs.blend.capital/) ## Audits diff --git a/backstop/Cargo.toml b/backstop/Cargo.toml index ff604cf4..1a6e2671 100644 --- a/backstop/Cargo.toml +++ b/backstop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "backstop" -version = "0.0.0" +version = "0.0.1" authors = ["Blend Capital "] license = "AGPL-3.0" edition = "2021" diff --git a/blend-interfaces/Cargo.toml b/blend-interfaces/Cargo.toml index dc9a3b24..3545a558 100644 --- a/blend-interfaces/Cargo.toml +++ b/blend-interfaces/Cargo.toml @@ -4,18 +4,14 @@ version = "0.0.1" description = "Traits, clients, and types for the Blend Protocol" homepage = "https://github.com/blend-capital/blend-contracts" repository = "https://github.com/blend-capital/blend-contracts" -authors = ["Blend Capital "] license = "MIT" edition = "2021" readme = "README.md" +keywords = ["no_std", "wasm", "soroban"] [lib] crate-type = ["cdylib", "rlib"] doctest = false [dependencies] -soroban-sdk = { workspace = true } -pool = { path = "../pool" } -backstop = { path = "../backstop" } -pool-factory = { path = "../pool-factory" } -emitter = { path = "../emitter" } \ No newline at end of file +soroban-sdk = { workspace = true } \ No newline at end of file diff --git a/blend-interfaces/README.md b/blend-interfaces/README.md new file mode 100644 index 00000000..61a5187b --- /dev/null +++ b/blend-interfaces/README.md @@ -0,0 +1,8 @@ +# Blend Interfaces + +This repository contains interfaces, clients, and WASM blobs for the Blend Protocol as implemented in the [Blend Contracts](https://github.com/blend-capital/blend-contracts) repository. + +## Documentation + +To learn more about the Blend Protocol, visit the the docs: +* [Blend Docs](https://docs.blend.capital/) diff --git a/blend-interfaces/src/backstop.rs b/blend-interfaces/src/backstop.rs index b42f86a0..acb79e6e 100644 --- a/blend-interfaces/src/backstop.rs +++ b/blend-interfaces/src/backstop.rs @@ -1,6 +1,8 @@ -pub use backstop::{Backstop, BackstopClient, BackstopError, PoolBackstopData, UserBalance, Q4W}; - mod wasm { - soroban_sdk::contractimport!(file = "../target/wasm32-unknown-unknown/optimized/backstop.wasm"); + soroban_sdk::contractimport!(file = "./wasm/backstop.wasm"); } -pub use wasm::WASM as BackstopWASM; +pub use wasm::{ + BackstopDataKey, BackstopError, Client as BackstopClient, Contract as Backstop, + PoolBackstopData, PoolBalance, PoolUserKey, UserBalance, UserEmissionData, Q4W, + WASM as BackstopWASM, +}; diff --git a/blend-interfaces/src/emitter.rs b/blend-interfaces/src/emitter.rs index 141be253..7a76bcd9 100644 --- a/blend-interfaces/src/emitter.rs +++ b/blend-interfaces/src/emitter.rs @@ -1,6 +1,6 @@ -pub use emitter::{Emitter, EmitterClient, EmitterContract, EmitterError}; - mod wasm { - soroban_sdk::contractimport!(file = "../target/wasm32-unknown-unknown/optimized/emitter.wasm"); + soroban_sdk::contractimport!(file = "./wasm/emitter.wasm"); } -pub use wasm::WASM as EmitterWASM; +pub use wasm::{ + Client as EmitterClient, Contract as Emitter, EmitterDataKey, EmitterError, WASM as EmitterWASM, +}; diff --git a/blend-interfaces/src/pool.rs b/blend-interfaces/src/pool.rs index 77f716d9..a4c61664 100644 --- a/blend-interfaces/src/pool.rs +++ b/blend-interfaces/src/pool.rs @@ -1,9 +1,9 @@ -pub use pool::{ - Pool, PoolClient, PoolConfig, PoolDataKey, PoolError, Positions, Request, ReserveConfig, - ReserveData, ReserveEmissionMetadata, ReserveEmissionsConfig, ReserveEmissionsData, -}; - mod wasm { - soroban_sdk::contractimport!(file = "../target/wasm32-unknown-unknown/optimized/pool.wasm"); + soroban_sdk::contractimport!(file = "./wasm/pool.wasm"); } -pub use wasm::WASM as PoolWASM; +pub use wasm::{ + AuctionData, AuctionKey, Client as PoolClient, Contract as Pool, PoolConfig, PoolDataKey, + PoolError, Positions, Request, ReserveConfig, ReserveData, ReserveEmissionMetadata, + ReserveEmissionsConfig, ReserveEmissionsData, UserEmissionData, UserReserveKey, + WASM as PoolWASM, +}; diff --git a/blend-interfaces/src/pool_factory.rs b/blend-interfaces/src/pool_factory.rs index c9a5aada..f8ffc90f 100644 --- a/blend-interfaces/src/pool_factory.rs +++ b/blend-interfaces/src/pool_factory.rs @@ -1,8 +1,7 @@ -pub use pool_factory::{PoolFactory, PoolFactoryClient, PoolFactoryError, PoolInitMeta}; - mod wasm { - soroban_sdk::contractimport!( - file = "../target/wasm32-unknown-unknown/optimized/pool_factory.wasm" - ); + soroban_sdk::contractimport!(file = "./wasm/pool_factory.wasm"); } -pub use wasm::WASM as PoolFactoryWASM; +pub use wasm::{ + Client as PoolFactoryClient, Contract as PoolFactory, PoolFactoryDataKey, PoolFactoryError, + PoolInitMeta, WASM as PoolFactoryWASM, +}; diff --git a/blend-interfaces/wasm/backstop.wasm b/blend-interfaces/wasm/backstop.wasm new file mode 100644 index 0000000000000000000000000000000000000000..cf625bea8ef0b7de516b804ed3e4445a1437fa3e GIT binary patch literal 24430 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 literal 0 HcmV?d00001 diff --git a/blend-interfaces/wasm/pool.wasm b/blend-interfaces/wasm/pool.wasm new file mode 100644 index 0000000000000000000000000000000000000000..09be0311ce4f3d787f5c073471f4d23d6ca3b991 GIT binary patch literal 46658 zcmd753vgf8ecyRs|2F_$kd#D|vVH%5D>f8MHuwZ+r#9~2k}TP>O-Ym@yUvmz0g2!X zBmmM>$_E@#Hj^j~leh`9Nw-Ymt(cu?%5*$yZr3|O8z;j_+#MzBZZ*5!Debx~C-G#t zt-H&1-SK|DzjN;W{{cd(-OXkT61exCdmg{@JHPjN++cG4NEie`crm(vZ*=x-cy@27 zKLNj$b7%Pp_D1KnsgyDMs~Yx&2l;!1b_M4oke~9cZv&E3KpRp2D0xn)6j&Y{TD#`nb?NZX zTkGqa;ZQRO2H$qq+t*d^zB{Tm8eubAA4j#QwWfVfweybqs!^-esx=1hisRv0tyZm8 zhvT@K);93BanD;CX=CGC8k?f1R^9L;?}V(vfwf`8zj_b`Ve+m@630oBY^ufanvElI z+)OIrv9MmR#9=U8eM@{U%oi7zg4Vep|L!li>*6nRt$jIKUp+E?WOnX_C}_?comrTf zJUsK0)4{pciDOff3)6d!&CVVU7Q+F(+cP&kKRtJHI{0ijKfOTid8(K_ zIv>0kR_9ObJ2JBnoDb{!Ca3mHP48O>J{J!9g7XWL3n%7-&xg%<%K4`YVd`H`ADNk- zw~Br`T(2Bu!k+!JN1vN{KKPlivj6bp%#q+{!+VZSe`e3&nd2vB0GUF2CQt0wHF!C^ zXKMQJs;_=7Yzg2Z=idxls-$@Q`4F1;)v&o|4>eBinLaudhpjz(4opuT+p}+SemagC z>%$-qTeXYfuY|u8{+Hn;et$V^{@kn4*=CRh={vh&`mWY1Q6w&XN06t7I^lgmbT*n; z{x1tgA}TsGR12dxsZ?u0E5GzJOF`a9w`IZoaXsBWP;2GCp`=ekI|I?y9*R>XPrU&l}S}kyvh3PxG;S;R^?zsQ<3;gpzJ4%|)Aw+bX}m@ltt|dHF*4;4g~brP zt+gWz&w+N@ith_DDq>Vexmq)^IzclVvKX{OU7NYF`adMdp`7jqKmSrUc#<0pF+US$ zy5ILd!83EoS!GJ^rT^Xf=en))Ep;~NQhU(4n>q^6N{HUl`Us@Z$CBzRxw}z2&ck-Z zxJNc>;h}bv1?^ZURbP!YgoO|&J=K0>HB?%EsFdNcGUCs);H5PG>QAkT&|eKBgu^*U zcv%8wvm|dkGDs@Cz+fJHFbF!8{GSDn3+qxsqR`5s}``XrlO+CEb4!oaz4h zxlbh%Y1|&*cPOijM3jr+Cy-W5$`we)?Rs^kE?f2dQh>Ww};tH(ED)+~WQF|Eq;L6+zeVMEO?sWH@ zD|0(k8D+f{cADMA|K+QV)15V0bN8#K+Z#bl_eJ<1OW&^{t>ibTA)(RBKUejQ-XC9# zI%$edxX|82j+<6r`|fViZmQNBVS59~x1xh>inJ4>xg^`Pn@*-#Gp)2+cCEG>)GTIO z^90n?>V7|bvHOpMCy`h*OJ^JDk6C@uu7@oR0ZH{Yqt3dlN)I}XY(sXp^&H6lns7V* z@L-%ZD1JRqA3N(`;;E6XKa;If(TUDIyI(!i8GPx*ZtxUhbzOGPnNCCeKiCbP&IWgF zGFl&@>1+@&vNi()_s64Yt-V&bfSB&d)@N(7jmuh1)hhWmbg1S@@@3XI6+fLdT%Fk< zy&260T!nQi9B5_Wo}ctIXiK``X;T!|;H9Xu#^LuKhtwW2V^3cwiF<@l#?26_>oSDa z`w%LOtVF2NE-Nj6API z2RmW4P{CCp-wZccf%*?h{MAW$m%C9r9-YzjHBS25$xJ* z59Pmd9$}iK4?(e&dWI*7GzvUbiEcKf#%buYNRJgwnnrkG>VyZT}FGcr@h3XT;25OzAj#_W}#3G1>O(3+Jo6J`9&AU zUX+p9>hwgxAT3{}Ys=W@ipXLh|JR>oaO&wpS(@$uVaoE}bYSBfu~iPK6a*sl@|Zq0 zP;D`C#vI{6C--~fFwki6-@Wcgx*LhnT~A_m*Tp_~3=&O0DC}BI1L;SWk(bg}A+J{c zYa*`}T6ziM%_Te1#i&19hUql}|y zqci*xL;+cxQRbz%lV%M`nY$&qKMCoD+1=_;1##0jGe(ZgGX&<-<5biXIb^N$W2;jG z!}=z}UTfhJ!E{w|YgXG4-4gQe8Ut#sYsX@^Ocsj4pMG4zi^ud6B9&V)mI{Ur?~rEe zQ8B}r)6VE9lc;-5ncW{BD73{br>pwag{)~$^FvM)J`2eYt)?;pOm5_>F8cRRaoW#C zGEPRlNi3}u?ucX@W7l9X}QL{LGXD0%#cftFaZZJ@n3#&NaAo^L!8Dy5S{u;_! zHriL6&8f_g(~}zK4OHCALPFMoP$+{;0F?XVkxs>Dcw#UFa1Efqqdtu+7AX?w15paR zqcZ;LLE0wel~#?H>3thp$IUp-%;(L*SMu+N$2(E}2f>FKwJ2{Pc{4ehX5+gWvEe^Y z6EazY?u!=@I5IW6p%TJ$V;k=w-P8_UF${7+p&YGl04D~m-!8rF8+ds&48NNEs84gj z-hd`CGm(w8{2S)H$r;aTBhjY^!FGlz^i)>6KYp|m?;;BWEIP-sdMZnHZJLwERimd? zLnW)Ge=AhkQ6rYDdVUugv*x`(?&Jm5NyvHyeq9;N(F678UILg%`La%&)t!rjITG&L z^y=vjoQSd4iH)0Hl`~nBCn(_6^cPgq22+Qzsz{M+T!gqlxDblu{b{hk4`>pe4PiBr zJ)`xfku&OlFhos6{4-Qx`XX%LC{tD?nh-%xW!CLSJJEUdM(8}=!x~;g5A?!UHY{OQ zW5HRS)+?~$vN{BB5b4utk6`C0Tdy;EOQcjEKUOK-^Szqj)d*V0-so|`s?Xp2v z??lio;9;OYoy8!#6Q9BGsevF3cSzetCK6^9hyFIkeUMchI-O4~bixdxFGHu?YPcM2 zm%j+BrN0@r)(Y#4S(qO6qtLpcAVgKHe=$7NNg&V2sqs2Oy^3E(eAs6 z<6UVt?J6B!E2MdZ!x+(+LWKG)LUUNbtw&WP}g4wcb@0RxF4#7+{T+iJr6~a`+KW|4xij z5u;2TRM;rL{UWV2u*0el8tP|+XiX(2awn@t|+Mmy|m|rrg-uS9E^k?Z+RdZFzCU8w=MLwsJt+ED~REuNrD0f7kGA@WKj5e>T z6}fCUJwP=zcZc0zB8*{>Xp7NZp#G;57sI)VgsLz|L{6}G8K}aczO1N*EPj;HvNRO! z%X%j#5%GiHDFe(qrBpyAmHg$4dWZ`u zo)NU_LSNmZs_xUO4#FsYtU6~Us5*Lge{9IP;@md%{;PekKEShVwJcgzH_qxv^w4T` zk4qz2)gI4O@PJ1jq^rprI#K%0ObRl6kcy&>ScHpz`u6<)d_7A?C}A;R^l2^sMXyi)?)s?W zf_jUD;ZUB@g!>0s#EKr6n#r#v7EHvw+b5NBErB@+RU#pll7rB4`nMG$=kc`)B%JQ& z?zY`cDf{bHT!>lI@2T)$nBrpm9-2v1+Hqz~|Pnexs;C`)s$a$X=Ya^`3+0E=+f?S`ChZMMVGe0(z5!F=&PC+ z!2em&6|dndx>j~X*L20+yP_+h{j0jtzw6Zw-q9uhbgkOKNxR^mu2ehg$Ku;ECCGWH z+F64?<)1E8J8vP1;-79;IvWYE*i(KrQNQu<{L3p?NY|2RBHf*(2zC6c^|A+{k0jkK zNMuYU8mIozxMck!F`d?^8UzXPL$G|K(y6@KX+A4FSzDcfZt&yTz%Hm=MtP(A%|HA7 zWH-JoCMZd2N!~o}W%CU2ATAhlo`t$M$V+-xWUl*)+MdvvpMx`TTtQ@$lz@+pg= zlCQ}Krq-?q*Z>+t{!NiqF2u!piifn7#w zVF0Qp^-i!~i(UIStUj5eFj@@Q#)sD^*05nY1JX2Ht!G|6-3`kTyZn#dR&?c>K-0Kf zc3oLgw}^m9PJ-@R%g2aFJ}r}dgwg95AK$DT?BF0grf@I>Ku->KsvkA%Ty@Y9j=Vp< z5(~=w0vx2dO9jmjb-&FF z7%9I)1dTaL5b!&Z*aEgzSO@$$nuSI_Y4}{EXzF;S1j49%QB;nA&>VuwUr<9At+X)y zUBh^fMu{7RRzTU@G)AXkn2EsT8r5(sJl$zN^D1a1WcT7he>fQnpqdV2-D zORK@l9EOAU`ro_!BfItRlqM2NfRzlyEdsPQK3@_TGMb=@VsO6XOd$s6OQ9LR=oN#& z`E8fOc9TM~rs!#R@n4-^0~-)SfG%C%PI2qaqb49MCs1_@b?t;{VTCnBqnd94GuUU; zs-a^%vH>ykfCfXsJLD(A#Hpjqs{xs685y&U*@oq9?R6wVz>L5&a==8nkC{;zLd*u7 zy0EC(TWpGEUHTk(UpH$^9lbx^)lLcNH}Y@D)|bTrE6HlTQN`Gg@~~aO*slN`hW{bd zbHh&(V)mn`VDJ1U+>B)n50Ztr{2Gj9D!y681`ytEoBDLR=WyC=h#~D7u(5_X`z+yH}4c1U%an@8FT z$Xli&9~>0f9?pJPZazp(FV-xQ5YUsL^-p5Lj)OM&iwh$^GkRFj>k)!#1VD~;Drwq{ zp0vo6>aL`iY$F&Y1V?ZoW8*lBl!Pu=r_~Bf+G=_%miwSuCNNR)JAmB1J%)K0i<&!OL(vGjte@RIwMzi=De-(HIxOa~14@2jupt{4UBn#&G3nnotal!d~VFl81`j z(7P<>LndkD12Ti{BEoo7=>fI=a)=P(RfeuGmzUB3rRxRsvJVlHF;lFzhKLz5J!t|> z*H)3bq$e2pnyyVOIbG|;+bep4TQBR1hj~d?oY0H9;%8pa6)K{7tbdkq9WqP6B4~JBPNGT z-Y}z8wTV9b|EhbC|6h?yUDYff!90@;l2ug@W7C~7Q>mIvegdXq4zkP!E9c?{z3i>W zU2vmV=ptVa&5UdAz_F;l+-!UwR)-P!*or*I@j+GRi+|Y67r!->-p_k;ea6emY{^Ag z862j*MVcbeq8|LGcT&xI`A=5x%athZ#Tc8Af75xiF7#bVpNJ;-cQ$K6ExTktH+|3= zO{<{wAPExnHY3s05I#!^KE*C8NMRmvdzqPtYG^b47j3S+Qbp~!ly zKdWUL_L-RNF_8N_%z;7Bj?j|;N0MQ+5<6CGJ8LlgxsiB#RzGiQBSqB=5gJkq-ltI# zyN5Ic=Gvb4U(+Z4@i8=Jlu+H0g_1NM5I`GDcGCeTUQig$a-=J8>1i|=N`eAI$nL~6 z@?eOFZu-iwREnA;Hr0?xN@N%1Sqau6Y^FtSEyliOB1Kf#(nyYyz(|g88DRjqY&b}l z(WRTXplvt7MWBu)XuKoFfYMWn$}*;U1^+%;j8_ZF(TYIlz_&ydv#6 z)0&l#AMR&uU{sAKu_d=AEolAsCE;F1Zda+Onnybjo&@or#g{Q=NPz$#yoM2;O+_@Q zUxbMPqsa=t_?07( zCU|&y77nS>aor!#8wB$!?$x91Ca5y`RWS4jeJ6a4GOyl^g;B5=F5cgtobQGN3t;QGPr9Fm%s7E9IF&|XH9&Ybhq$9 zre}m6xhW5Dfh(|9<$$vmhi4bj0>2MnB2)#&22x$r3QAY)@D0hLcA?Qt)I`~U_bYf+ zN4F2j>Pg@n-jtlf@Jrdi8tKzSn-KJVO(bMkCqcj<^}Aua;S8ZbdQWf2imnS>9>q>A zPi!Uz+{l1AZGllwsO;Usg4XQWt77R~xl*-UyPCdzW9#8^TC_JQy5uKCt5iWlao0_L z+Pr7CenFmcm~L=u8;ylpe=Q1GEeNX@>x$D(Cn)AvU3CE^r70d63^xicDnRdBfc><= z;01*yq7qT(2#B&#N)QjGq!M8$G$DX>mYH>iScow#%qpAU!V41$o&b|&LZPSHsN4yN z)-P)YJoYo-K9DE#E5Jt&dyza^*0Z11+TdeIfy>&` zJ9oE+YmwEIj#%)h8JbU7`17W7TJIG?Z-ni)rjK^smSRg@ctx?(oX~<|r;1Kk?DPWH zhQtRFj%8i^t3I}=-SjDytO>ayG>7@c;g!kDT32T*c3M5^z$)ZTt00eClzCEt3IcaB zc$reBtTYeC64}c5u*xaHlhyKa!>(Lv4kUB2c!tC0afj0L%sxXyZ=+!U;wL1F%u^Zd zes;CRlqGboG{Z-f{&k*TcPKLN?6t7H4(pdGXabf`6UOur%O%PHJu5fw&gx=@duV+i z{WQg|xK~T^jjmf&ioM*9dVxFhqOQp27f2V$zs~uB80i)Zp+ePuE9|_T1Rt5nocDFn zl~XVaX{M%I-Xz(;`b|n*A_TGlt|Dd$SNTY$qKJz$bT{sN0jRtq-|(UuMgghew`abk z0|wxFL14}kfi2lS>$A7;kA{w&?!1L|hO+gvV-Zn#$wTe+S*tySFw~OSAbYEfksu=k zEmq#-=DP?_Yre}uZV$>lxDeOQL#P5EBUSI|AMv-YOW?mJsS4El_9TzB`@S{TW9ygCtz)u`e zoH4mu7;&h-$Bl^`d^|GJorCX2WH8&rKg!_ZZ?XXyTs|OlOwPN9uV{}!^a_>1a`j7@ z#@SuGaO!l>2I4M)I~!Gh{d8v|^$%uuQNNGzhS^}7WuNUqvsCcvtrkdZO317#}l(Lon6;KekuCYHVz z6%)gHrzik;b=$8ygaX)JFRE2I-cjaBm~}|ciiD_5+~f!R?61%D}stiX56GGt1Gg*z*#TKpgmfS-Io+>dfFmw7-w9W= zL)C0ng4(dzW-YkO3rArC!Z6?$yyDdWk^3HVi;X*~3i zhdu^olCg0Fy%~;?gZ@(gQoc~cXi+4{*s7DxplSvQqUV)wviohDMJgtfJ|GY_ydq20 z6~l89P>+&psPOe8Rw2f82n317t%s4P z@ks8K-@H-MI9SWS{&^~*XQ0DYAX?wlbBI^ndqubs@w&)>b{SX#VLPiQ@rw}2Baggv zB#T9eo_2lzzgeX(Yh|-&r4@7lxC-70-bl86?BNwxxIHk19J%vK_|z`!wyV`fKcip0qtH^t?TevElftF%4e$eGD#lz zOjZTr&f!LukJYc*8@^z(S8%*nkZOB?up`I-8R%u5=w+p4t%e*d+OQy|LNBfmGh;(6%5qL83)W&pcoTtN$&+;46*yXOM*3F!wq>xv>k13{ql%lZ}CA?*|qnqGBx zK?GKzIc&D$3sPp@p;+o7Yee21sitX=$?GP5@^4&NVlIj{Mh`M21+QB?6RI0^6nOyF7SNcpjDo$&;($Qbv`Cyw)L&ctS( zX<#nTNU&7TE*F_ol;}#G3yiuKP+$s-g{!5yWeULQcE(T&!PE+}PY=6zphcdT(bJw? z$wVwV#>|EVww0bCmnmsINU8&wiah5!jv-ap@)Q)2IRoJX9v5cbys3d;i|O89u6Hzp zNtTiK1M!a`Pbre-Cf>^wBza+UiK=89kYE(yo}mSAtJ$;cw7r_|2z9rM zNVmJ27>mc<-KeZ5dz+Q}r7;ZaF74D<%#<5dn%QeS05j1pvowdepqm)jugHh7Rp3kg z0__;I0U4YEFXZbWF1b@L`w1N59RwaQLRNoyhdJ-MiHF{3;dTLJGoI}p6-MP0*oXj;l_Yl)aQ*HR(l_{GmJ$+lKzv#miZ zbM(fJZgzl#Vs}rO(A(bQY}Ru1rPMG3B>|2+k`y-6M>^2W)%=ONXA%P+%f$mB4mtL? z-{DBK7&6CxObOJWXhN#RSB@zMVlJXrj(qZo1!WWRRk$r~>snurD6bE+OXe5>pOi;)eoZ%ga1e%8@r|}wX zPZmA0r~>cFSi~I@7gIQkutF=+ry{1HeLLn`J4e?-3Mms{PR9w2n%-0sieBt;CKKTi zVa;PI4?d1Xq%c6pW`TaD)f3qqn*xv`1VOsXVm7YAe;Y=Ln*{*wI(63N+t^4T=WQe! zy^$cQsFA4qkx2YVBrnlAa+sAFSyc-*YQ+dJHfJbMOXstOM};>azw(kyq5XMhQAQ-C^uS z^R!*APb%X=HeKs@MTGq1>V*7gqNtA}%!Yr47$94}!=3ugzj~CllJ;KUq8`m%XR_2H zXIyY$TBQq*Z`&vz5JAoI;oklz0Ghp4zFAKQp?p9dRm+C~6i)eo_HhBPU_frah06!z z_PaZ|{q9a~zq^y$@9yOGyF0o4?oMvMyOZ1R?&S8nJGuRKCwm@y6HWOSq2qm7;?A`3 zem}NrN-p{RGF`RwtUUBawjs~=6>Glsy61a~=V#q>Ry^-=&l`&8N8R)K;u)(+^?@-R zdL`@Jo`d2UvsLdwm3u$pp3B8*SzZ!cb`Y9d)!ua0`dAtBcD-fP6fISSuEWb0V!aC# zm__jmk;4;=Si3KfFfju1aZNW-U(bg=j5_|K;KRqWVzcCvnxb`^eet~6V2pw)O3wLt z11gc@1-)}OX9Zx1cATCvsgPIFhb&qPtrAWBC6@R;!?J=GktDC7DVawrvt>d0?)>{m z5}ly|o$0JB+retbHYDl00fk`8hy<7f2FxO9q0PtX-^e9(v{Dzf`EJ{%V-Hm;B}vhZ zyn-IJ;Pi`9(01?={yWkMc_M74Pk|kbl?_Z9NFHVFAU&1702$q-#c{S+bhi(4bLfrP za4=jaN+%IukR789Fy9a`9MyoH+u_BXWF3gnkrN?vbpojMx09&qOg-;?Nj5DToXA3i zJ~H(zqv1j!+B0sEDFZGPaFN(wv-dAEgb#WDo3M4nXoRx^FCc+}+(f7Cq$d){jL* zN%eMMEaJQ|tVR4w$W!J>gy>Gsup$TXrf`Z2mzt~TZyln|0WEG}TfL-fMar|es%ZKOctUF8rhU_dMN)_B7gyrF$91qTNv+nnDjtn^enJ(#F*$I za_(eSUq+!p>tB2EcG<;3Rv`{T4zyrl%LAS`q}228+(9033T+7QG%v%CSa%+M*i-UV zKVf6BI8`89i9gu7EFp+d0mYF2IyZjIzu<2f^q2iDqki7sGVI?AU9p=m?QMr1=9SYk z`M(iz*rsd92^ruyaZHM$~M33lkI|%TIngE5s!0uNk{R~%v~(KOmg;lrF-#_*-nrmcNS&9 z5@^)kwEO~V*aHrFiCvURQ`pxk2Z?_&r_NQL<}I!)peumtU6~NSOMB8{h34(N#1_ZY zu$mLxGg+y)F!TNFU#R%$A8vdzGt|M_ z4Q={kVN61(mFty?MU1(-nUppKkyQXvw2na9kb?Z>lWixvT4DD=Q=V>`&PNkwDZBzp zC6DAZF%n&4r`)E&z(8!|ksSgz)QGEbrPXZIYt&vDYJ`^+p z`(i(5u)sxM=4WPnRofb^{zX63YJvFD@&M zurViQ{)fG7E-O0_Icg1Oi#O~)wC0zD%Ij7nJ(;l;%siA9iy2tZaJsV|_k={;li`<$ z5Ii-g^(t)IV)e){HaH6aOXFR&UW*kbxXkG=!dtI4UfmR&Yp6#%?|hwp``r*4&gO{{ z%>mtn?(*B(&Z7O0hJj~Dfjariz_Q8Y@%*=?J*$4Z3PR>O6sT#VC0+4*uT^^l_K2PvGQH`x0M&J|HLg1SHy zgxwo;V=k~}!63t-*utXO=_hfi_OO=EpK8?&+UtlqYx#?K+oI2OaUEt1ygSHw7+MxK z$bl1mtO5#3&eL`-ah^^$5~9R)gdat?*1M|}rZ@(WJ59(&hY&e6P4syX-Xr?FPLXF7 zU9vu0PtqBx1bgXYNFUkY?RX`W2oVH}V1!$MF|=zHSW9+Z(-VtEzk+d~4@PLXWG-MN zI}mE?+`t>dC=>x3JGKg}=T|L-5h_yDlN*Fku4u$)6j6@2tXf>k2HdbkrWG=Pn5&9v z!?5_;xca&+R1)KZ9c@j44PCbD6?jU*qO;zJ^susA4YdVUd~?mMaAJWH%igjzPv|T^ zXo|AKFmWqeQ!I893R0E5tZgkU{mRzpG(IQ$oxqa(7~uSpmHheRs!;;mc=Nh=a~-@1 zurdIa@g{Rif4RJ=N#2q-FFDL$Y8j;BO@x7VF{xu0a2{^-cry>%^?`=Q<_-CicOn)c z)M{8N#58V-p-Q;#7rwV`YQ&MdCiHBLnsPEq>)j~b-5aI7tZEz5Ah{V8mb$f`mT2^Y zq`8LmEcFw!XhkA6S2;+#7^5LDj4IU_G4(KvXg|g+Hji={A5Acyuds$7fSi=2kp5-Q zK$4%zaPl7j0O1VekMKX!TM)ITVUHDpXc04n z)QglZb;X4~V{y?LiyW6A0(Bl`*KCYyCcE+_vl}|=-3ry4#rX=i`%XK!6`3Tvz1${) z^8OCOo07F(INoi@GQWuQzL@BCkj+7o|mFLHMD8tI`RqZP^Gd#2^P0*~=u&iV1 zN9ig=>Uds#`hl$9D?Kbhevt&Koq8bXg}FWrdwB)s5)rj)ZWV!{gG33LI@_U?+=|eY z%4sFFyFpw|#^iQH>{fo;;R&*yOFYYB)*%Y$*Wwrj4icW_f#uYw#A&_0#VpPC=u1_t zEBC9yTRQQi#a00yK3bBYPVBaSz$EqWR6hT!X#TIvJ-N|u0^QW!GPfB5bI%3{->M*O zos-%}+9rA8HytGEf>a#}SBwV7nFw>&SNN*JyJ7qy&Njs_x$|SzqziXou5j#};rL}? zZTPQBWiJAKsk1L6hP7Kr(^ar`d%08hhWNsH@qUc-VezjK;F5%CwySkptLo~S!?{JI zi@1*k56ajNp^L!IY<6)OMS&D_LD(o}i;gDZmUI=-Otk}0QPxhiNYUBHArV?aIFAx< zbZd3&_-9)Qq!^Od@}Vt^q)Qag%om$I`Dcql7P+xQJVGt5EAz|Ku!S^5in1TD7iSj&&-c{AqObNL8Fx= zEn8CBYt8|(W!l$67S6Cf!EjNWj_hhssGnJQRY3%e3RpwLdRn;rqoiJ@V&;3PoOAc` z#qx<+Q_UttW;qrID7Ty71?kE$)}dC_y%wQ@B2<5*BlRbG57I~A8`;EvAhjEhDg~we z(rnA3xB%QC5bRXu#GP;s4;D2zL0Og)6&Wd6tUwWLw)SdPp@_<>cXV+VzOr=?U)j25 z*IPc?c#Aa)EMq~Jb<0kvW(oy?;)y&Q=~@<_++Yt?P~L7kq>pfEc>!5rZ4{qpZd z&+x{17EA&LPlMaau1-w+i(&jbe|#x?2E4|0GL#m;t0Vz%=U3=qFAvViNk0tYXc2nr ze*bsAm8fF3zMh@SPiGwZN?#a2&_Hz%rW%a88^ z5Fb@mJSAxTo>th|>JrVD8n5{%tEK~NIw5g$9hwBtK|NaM@4C)-gHf#yB6;;&oPXsPiU=uBfs%4-KoMzHrO^E(RkE)-W7vB=A;SYO<1pkC4pSf~^kPD>(q7ILvl#UT_oZQh|eqlc}1e|!pj;#!?T<5Vm%J~ z-FBx>YyFQKuqub^Sq?a~noi}T`4VizH*q#0oH|T(*d7N)Q+G|WDv|;Fe>-Gbsq_+K zj)dlo7Ey8rsHuVU2|eFpH$KAK)xq=aNHx$UwmY#qoq|o;1RMi~dUYrP`z`st1~CFM z9#D*c>t17?MF+K_9Ar{veTXAaEQ35u$@qW=yd_@aHRmw7`%kgyiaZl7aLM$J$CF`* zXXvmKG94Z$@=;+vlC0y_St1d2JxiS5pe?-_!NFrSpWDc9NJK{axoHIHAG$L_M)KeI z?2-`@@+Z*ZC13Fdf#7S^N=r9jB~Od(TsyGoB{YeAYDq1Qj^c;dCt-M}1BiW=lrCPe z0H46MzFyOUdgdh|)BI;&1eBEHUj@o#h|D@g#5HvC@M15C6`*W{a2qZA)P}Q7{vhUb z$C^Zpn;Y&kM@%B5FCZadn>u{KNV~b8mU6j&a6~O@vGkZ8vZ}(*?I`pf@rsp^PBTig zdO1?6HLJzXr@N`0YX05xbW6LH?DUr>C1yu@OH80IEg|tsLY$$%Og4$*uoxE|@c|!{ zXCX7^(tE({FfNMn;89x!9WF5cr_~>?bS$RM2W7NjI@GyzRHnl?IGe?~{K_XtYnBTW z)82O&swV#-`U5gYilt{1XOAC77)vQRxvEpuk#h(u4tUNuOj<#1j#Lu`K-SL=M#Z?` zTlgsfH&I>6t_}p|MxWC@Y0}NAuPL^G{_hoL*X{5nO`yiktaKyPn^^QQaLoc{<<#Ju z%?D}%kV#sT1nC50tqAy_Y&jiXgfj$*vyY3basMgiln??4GESDVolNU^J;LlCl5#-p zGWb~5`kDzx>ak*-&&Kp5WVr^28K`bs=*LY_YoJ*{_r#+SaX3^?EocX+sCo$T7Mq1S zlukwGY{}0n9X@?>T)~G}p+*9-#6fKA z@vHO{Gu5lR$ONCqBheQm9Ak#~E&>2_S!i*V0h=#4#Ux~XXp=Oz$j=?x)wGbNge9A| znMLD74rbBH)o+{v=h%M$+&~$8m!aJhWk9s}ogBs^Yl!cU3?`hBQBa5(f`LA&(MW&N zKE^Vb|G9+0APSBHr}7&JQ%h4*u-==}kQtzJ=n48TRF;iJEPRYb6v9+PmUu=NE?rK(=OGA*03ktkkWB)=fDw0; z1qHVG?pbEab5wW(PHM@WLkz z=$K`a6ulUC*j7vRg)EUxDs`Dsa=bm#b9AEAnj=&v8%LfSFo^Y{kWN&-KO5VNh*YI;sIyVQ8)9zOFg6 zopL=9laX_gw#a+ILtz*L@eatnzSjsJff}`~^Ncfe!`RT`CTgW^|nS zc@I?+jxh66-wO+2)zE$1isOMWKlzds*DB{)xIIU#VrZf!{DMlY9lQZqt-}_l;TthV zH6jpLC_uu^xXo9>$S*NexX`Y&TxfL+*|!0C$tSe@D7c=b^o-Z4WCOV@tbn|s3r?Vc zSqU^nD2;6ORWF@7%c)(iXW|{}8CP5?PW9qD3}p{(qtjaJq0aeI51aixEDdZ`qaHT< zdgwRHLdVua9WmKj*2A9aRu9J&f^CW(mi2Jl_0S>$^87SAylM~i-7;FzhtLMp!$@-E z+kqCl&_!6>O9W7%ZzCDJMAAH~tLS1Z9ygI#Vaquw9I)KI@o)Zz3J!H)|3WMJM2XyO z__BNB>)$O12#>qiiatnWfR(5X&M|`(N{PTE8?FuC>Y-6-fSbA!b-xkk$UYBJoPIpN zEFpalLi!D|JK>#fm4#_pF8dlU`5G^Bl_X2Ia=n_^EVt>cTLXYrbvkTG_gPC8Y#Y#m)u=Z#1<|sEP9K4~>Ohx^f5YE#* zR`L`1m(}r&PCKy_(|mCF-xg_os9dBK5nynEx&*_tuuJSbOWCy8l7UPZq{>d@zEDu? zKlzIxjO;ZsvM;kF&)|nnin?Tgq0ZMt6aD{OWqi~vVm0AV6ofG$5zM5soGcNyoBR%! zs;H(Of_8OT$2zY`kD^xAs-xGC{f_4l5{knTbt6W^RXkUhp{75v<~nqYlvRvrLrK?-GUdm zwZRE8F2ZRlK!FFI(Rr}A>kp5_wZ-vvMueSI+@yPif1IGN+6pQ9%RlPYNyP)$cWl1F zzOx+$I(9X*^MlmjC=zB!ISC2XB38pYt!kF={8 zdJ5-WDtZg4Rjt2HNxA;A@B!pX7a?8h_8M&`Y0t(8v(*8?EPVMSq+CmQUb2oBvXB0b zM8~A!EPklMmi3gi&*B5R;c8P^horu;9LZxkk21x224@Lt>kd7@?RS>2e4@VHJ91~J z7mPR~f{a%Z?P>Fe+!Nw9$R=cU88ZtqBc(^xJBjH5Sqi`RKchvK0i^SMR0d5(t>vE0 zq9u)v4YE`k`5crRITN(r`quS%G-m3J zO9iNS(ix5=uO_Tc9(Jx(9S+o3-|}3^q^*`*IiAewij+W@=nz+vPW=kCcK7RwAuK7K z0GaM@m<`vxE)yfnzaH7)5+1o-wxb_KMjifm1wJ zrG#+Jp}i9GA2FD*>`R7V4pdZii7bG&8sS}X2e`vWuB(?dQ1~NMQ4k;7^;{SIVefF1 zYl4w-ZbJGI3f+RE-M&6jZ<_=GJZbc+pii3oimt@7OdsR9=a(V8kLQ0PwWg0KQlGLT z11Uj&w)Cq1G~shv)Z`i z@~d|sQ+~J_;bIGX*cHGQ0dNH{>kD84GE^3jrUCYbp!i@9h&sf62Q1+-Sa92Wu*4uV z<3vGXun1nDG9&@Wy$2r**sGvOiY8X<%?P)Kl6DnxYVex~Wgty}lf~IT5#Vx^>q3U5 zHJ}q2Lss->+-aowa(hnHU(K@bg4m469o_8E(5rA+Z5+L6wN=a7xU`Ee^(aqVKTU0h=JwbZOktgxfkI0ASR!hMVI$Lem%xUWQ0aimdMhO49NCkV^UsA%qE| zQ9G%UBR2bs4CfKEhF<-UC84Y1pn~FQTbgN9G#)+}WNe}^81nFaL8kX5D9s)ysF_2O zClCz;5y4I!zGowWfL-cjAhT^EdBl}nJoLO2^kjw6tbwdW%W$X;8iOCIhuT5Gt3cCH z-9vE@2HMHkj>srdrlIg8nBu~e>S4M5Gi0K(;vs4aFDRp|>haTc--8kmEpIyD_R4(b4zs2g{d5VI{?;3`Mm9ZDX%9Gxaut#3+y z4P?8JcUyCCRI9}&d~QND*wRst7gsNK1gVUidBFt=h=TF)G-g$-&KI+g{an~*I4ql9 zgnfh_eT0<{T%2ylKM% zR5~d4F-Sbl`EFgDfA1m!kf}Eg&a=B%a_BLWLqA4P+A6~eV1Ov)zJ_-aj}+l3J@_NFag{F_DZfla;d z?^xN&>P;A*{t&&&`5+rz$}j!A+Wg_Wgov`ftQ_3}i?>TG`o8?9kL0QyR`Ygj)$LX| zcn+OqMhJ7tsEc+jn$W*2>@=kCO;^=B!Caz5j7TXO_IEPV=&UG7R@9n;#VXYfG^2S) z6Ba?n9O5H`tUt?w2Lb}p?gW%j--kvtNj#ghelQ604<46L&fl&VVZKL<66e*0tU6~o zqatTSPFTFUFlYIXiBk~C`2Y#3GPaCyzIFlqdn-7e1rG*sS!ND~lTH2zR;ot%lecAPH?K z5mA$3MrG-iv#_NL-BaZt&E^x2YHGP+>I(-n*o1*D69>OQmEz}agOf~w}BaE?}f0Mw~vON`3I z$R{#Amq#Zd05UUlz#l_`RGZ{W($G~dpCEFg-s@PNXhCzt+Tl4dvC7bNOd~>U{n9L8BQlMd)9K%U_!J@J2747q(hSn%3%$ zPLK^c3m$?#MDN&C;i9MYlWg7pUhO#8wClnAvx~{$oXwLQu^wf0@Ts*&))(^=kopdK zRsfG26XOANVk0-^6VWP=tqogWrIs7A zGwLJ!O>O`d%-FR;<-Lf7)i5dIrnC`z|YTau@us*+n+RPQfF~iuu<&0qdf434< z&c=#HVAeH@6&@K&<-kw0E5n4@4K&OP@#l$6b7*LNp+-hsmb~yv7QOHa-=@jG9~@8r ztFRkpEu`VApCgK@59Y`$Wyu#7oqYj?g=4Z8ITeYIvAg{XI*$kLCGiYWI{uV!!b171 zqO*{>w83<>`@zp?mCJ?m$i@a&YUgOR3!L?>IE){<$UzLah)e{%77t+`WbvX*(6eW> z)WnQymXF9zRYYXXi?ZN8$5VFUJnaL)B4#AHNmT+kS5iW8YE#xk;Bt3CfH%7A^s%s> z%ZC_JP8m?DELzn3x>CA0{w@`4(k+&!TNlA`qTa>UJ0t=RtadT`-+TbcJ?N4}MkVHC zOd~*rG6BU$jDX0E7biQ4u6#G_g>o2B1*prg83~OHOAni3ba{D6{=qDM;gt?F#@~TM zE|xy<$R-vK^ba)g81IJIK&-QgWcp0($KhY zn2ZEw6)6@`E+dF3bw(Z4Ja`-e=4qjWS?)9(Sve&DO-q~6A*CX9(NuQe0XWU-CnY2B zQnF}aPELhFRS=0klp|2nA`q(`F)MQpN>rIQ$St!2sSm7tQ>`sQs6LxUq9_gcK6(ql z_Yv0zBcSz6$VY7^=)_XsR#91Sl4nFjCxPwgM|?<6u(sUp#_G&!JZ;F z$heo<&1gdZc)#4A?Kmcj?aNW(2iP4iGtuJGYOy;OM2I$-3x=#kxe}IYyv*ptB7JxH zQX!W$6tWD-J<41LxvAP!o3Zk#|9Qkh{mh0`-8wVG6^&)55mwReIaehgtG7{B?|SW8 zus{(7i6(99rpz;xfN?l5jlMRWAMa3=fqL`g<#8iHn=kP;tIQFq2^bH5psz8ReOZf$ z;@=9(N$or11C^EW0ZZr~BEVQa9xgWEVjLke3V}i0u`(Jcfm^W{f!;wgCB#ZCVg#+D zVU;z)ymb;E<|u@Jr+SttIZ55@LZ^O~lMM8Z`^H(mJA|}n7Rb>ZGeb-Vp{&l5g_9_y z3FP~qKYf~pIgVFC_Vj5{=T8*p_z_tQP2!LeeaK)IJ_`(?C=ZAGwq)|e0X{)+xv-Q3p2Av-}k-~M?W(+d2HnVz1i&1 zY%<&X@!6x(d$W_1hfho=s*sl=V&*X{y0&(Bu)Sjv7eGB>2 zk(r|(pFA?%o!ozDeqr`l_wkQEwENJ}r=NQ0LtJ*v&K~}dwfyAt{Npq83rcwS$jrR` zo;tQ~W@_Kz+5LwO&o1l?(;%ilKgL!4V#%dFpEx!JaC?qXaOUXD!k)S5`RTcn(>~ch z%}+1vnO~S(I6;>z`!sFL1Lyqy!;>>dj!u7O&*7QlCuVp@V$q4I>BG}hy~-OED0_N% z^636)ka~3fx#_v$y63sM*&_mK4|PuN^S$4*FnehFs3lJyn-`9!W{(Q|6Z2F1_Z>bu zb$r`r_8i;4VA_ql&Ue`{$;oW)}AEc@CnQotv^uQ$CZyH8Z#8$n4Z%pW*PNnwvQ?ePr^~o)Zf* zhv%W~$+;j{^6>qEZ~KqA3hw`j>l&`#^3Q+f-!q|W?{9Nezy5YZE^kWz~$d3siYuqiNAh@tLiWCTI8SHzklw;^i=Rw-Wxm~ z@1Dc<%uJnt@q*wRzWl%BD!LV$6!i5y(ljQ;yC$a`ix9-?Fwsm~#&TXUHHgDUq zZR@se+qQ4pv2ASI__m$fN4Ia@zGeH??c26*-@aq}*!J=5J9muk*t}!Qj;%Yk?byC! z$BwZb<2!bajgD;|+cLIwY}?rOu^nS$W8-5x$4AFEk8c^@I=*du`}mIWvGMWoojU<> zC(ZAq>YWtZNfMhqUPf8`ex*+tOhGnN)7ickvY(uun+0+Dx%2&UeX>#k9Gja#Ji&2L z?vZ0bun6IauwLS-!I+xfKXYXA@Vq$F@;;12pBs4~yFUnimpo#cFLRB!{&!rZSRTmU zQNH^+X(F8Boh$y1;1=m3l$B+R^p)ipcvPZ>Bc-HSfA@2=-|D50di(l401u4I8<@ZPV9pm?5eqXt7Xun7AJe@c>N?FlO@ze5b z>{vK3`q8@>g|EwZ__K~*!K9yxSpn|87}pr1fRsD(DpymczzkynuJj`u>8CO&d&J$V ze*GjzF;BP-+Y@+na^9YbJk6dKuyo;CKdn*?8r%l6(reP?h(z5Nb=0KJSET8^ep-E2 zjGhZztu5r(&Ah-4}3F85vAHCDvZ!&min1iwO?! z$*%nZ&&oKo+?-O<|LZoa68~oq-ok|Qvfd>YIH-AxMXBlo=>~VB)D13w@wbYJ3uoD5 z(T7CV7%2q~YEUI?i@NHiMGH>C7J2I4IGTsX{>-;od(s(9D)%3Qqh8p+F0YCNiPMoK z9G1wRL66_UxG2(vgQ5>gYxWFT%TnN|WhP~>bblFTOjnw{R@#koLCZ>7ulh^d*gFNJ z7wz1IwlClBIWoO4Ib}+iEG3Ta@$@8ZEouI-{#`Fj2`_6PtnMFrtdF?XTxQ23M=kVNu-$EUVT1Ms=yo zwqh`|=Vs@!$xLMTuKCQ5QdUq-=0wbi(zsNcZ$=lz_%}pf<~689Z;atZ=iKzARlK94 zd>WeqFM38c;77`i(NmAd2R}Z$AoV>vhh}iYTH>PFot)}p?-KuO^TU|%Q!hMLsuWkS zfO+WS)6Zi>pPbIkrLy)4Sk`&{E^t&npL^aYSo&E%cl-BGIx;V?YwrraZ1_BnK4-~h zoa=75ukNS3Q=;^O{@3{TPvdnwiRY$w((U?LQ!wWv*j6XxF2eiz!%vgS4o~lr)o9Oe zv%f*G*4OuV&r!BF9*se>cyDSM$J3W<`Sh;mUf+#i*xLY)9o;oI`#b~ecsnr7MA@P} zpG{Vf)p)?yTf7IJ-LtcgPtHB>-p{Q1{wYk{!}jK&f1jGUg;h-H;_V^ciOxszqY$JfBTIkHt4nBSMVZr1whlm{mW|@Hle<`D6}K zF=P*9c=QA}Y|`mEU1?bW7-ay9y`_YG@7 zZ>!O2eHFS~js7YY;c*QX_0@d9N2x^``H223&)4h)gX~3-H?h!=D=YlmEBwf`@_KeP zM6^8N7Cuzr<5d3=$~w~M~+%P=vfh?x^HZ8rB# zOiiEMn?3d%JUcU=@!y%WQx9Yw4~0szxKZ}8r=QxL5!IN@_DvUA-B{@F-7CwiLeDV~ zGUYAwaC2F>th5J%_o!bb)0BhuMqN>r_OpH^41ORBe(I;uLaw|KZjGNzP5tnIq(x{= z#`+2vYDLr!hzl52!X?O6tr*L>|NlJPgdBmMO8u5EB=-BG-MAK z%97kY9-?}l*YR86P?fbLx706Rk>WoE%ne}e8+uDu`Qp8FuSdxp@0udGzQQUaScb36BqZlB)1@40=OpBo?BvTy(N&YjcaJEwMT-m-JwmgyavgZ~Hqv4w~L literal 0 HcmV?d00001 diff --git a/blend-interfaces/wasm/pool_factory.wasm b/blend-interfaces/wasm/pool_factory.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d42950041bf31549e35b96a761b1173c21d91c7b GIT binary patch literal 2457 zcmZuy&2Jk;6n``O;k7qTCP_bBmzK4gLvm>3B&3POCA-i>RfT9PA#p*@I^MMYh@ILd zYLMzgYE)H1LIN)3)*Gi@ITvw32qgXhB+40yKL8<>-<#caKVVlo^X9!bZ|D8qZ)PYQ z>|V@^cLDHknh3Mg69f68`}S#Sk@6jL^}|-A=gDqx9f=0K^&g7 zM#7kyw1r`0gkxmwoFg)pA!yn@XB-Lt`1l#QN8~?$wa;A3*n81luYV{h*X%Zj&9Kw_ zETV$li1s_ZL%NV@4r=?oUWeYsQoLNP)(D4TE$TK5;nr$*qHw=f4+oJUbB}YA7sw-Z zDiFcRF`g%X8(Mh&#pkA?qPr>u@Vi95YL~?v`H!&@KdVlcq$fODGaPhs%^*+sQk_Ao zT65%nBcvS3Be`L0z;14t8=mQBH}lX2nC6+S%S2_%|D87TRP?N;2xs|~wx9bDu9p8j zwf$l&{sHma^}OZD;NANZ(nY^|e?oA-c;7`>(JGmq5!eq;N(S^UWanWpc{1gC^fd4u z2Ih$;5MfVtu?=VeRF6ShGYaT{twLu2>3D&U zjsZE=kmR71&qzr`HHxrQfPWy}FQo+j$-3nnp%8}eaUmp1E_!laQr_UveA!AI z_#eb7hnYkHaz}XpqG!cYp~XP34vQ9$CM=XS(2_ZpjIjiMBvvpamcSGZit8YZC)8=z zjfLqz+;lUL)lAX-hw;*N-e{GrIYN19oCT(R>%S0p%eFtc<=OsEv~@R69yp1-EaU~w zF=)uR&wAuj%E*ytrn8XdHix$){AnTV(%%?vBk{ zI3`e4<^jl}j~(|TeLlTjEp--)KUJ22Q0L8&4^l$1<5~!xwtO+fMiHCm%Q&<)L0Up; zY|_F&lCuXnnQTC>4N zZ|zPvxbx|tv4b)2C5MO>&}YzB&}Y$C_4o&KawiS6AMG6AVjvS=`Y8VWCVqnh|7ySA z>%$-ue*r4=^zn%#IXo9N7LxEDd5PRE0=GbA$p!q`i6b`RKg z*o!EgH*}O=z%gBOCSecHO?6qlUZ#?c_!>T$gk7=! z#p#qpQTKrBrFq1*Q~0Vh7?bQZqtzcAM9e5W_R`|o$|BP*ew_Yb&}hfzmF3DJ-pl=+ tubyPov2!k)~k)`(sH%F99>zWe*t1x%3S~e literal 0 HcmV?d00001 diff --git a/emitter/Cargo.toml b/emitter/Cargo.toml index 9efc6764..f4013fe2 100644 --- a/emitter/Cargo.toml +++ b/emitter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "emitter" -version = "0.0.0" +version = "0.0.1" authors = ["Blend Capital "] license = "AGPL-3.0" edition = "2021" diff --git a/pool-factory/Cargo.toml b/pool-factory/Cargo.toml index 0b5ed89c..963e52fe 100644 --- a/pool-factory/Cargo.toml +++ b/pool-factory/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pool-factory" -version = "0.0.0" +version = "0.0.1" authors = ["Blend Capital "] license = "AGPL-3.0" edition = "2021" diff --git a/pool/Cargo.toml b/pool/Cargo.toml index 3815b286..b968760e 100644 --- a/pool/Cargo.toml +++ b/pool/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "pool" -version = "0.0.0" -authors = ["Blend Capital "] +version = "0.0.1" license = "AGPL-3.0" edition = "2021" publish = false From d67d10bb46c0dad9f134b7c7140c0aac23aa6e93 Mon Sep 17 00:00:00 2001 From: Alex Mootz Date: Tue, 17 Oct 2023 17:05:33 -0400 Subject: [PATCH 2/2] ci: add PR action to build and execute tests --- .github/workflows/pull_request.yml | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/pull_request.yml diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 00000000..400fcda6 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,36 @@ +name: pull_request + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + + complete: + if: always() + needs: [fmt, build-and-test] + runs-on: ubuntu-latest + steps: + - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: exit 1 + + fmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: rustup update + - run: cargo fmt --all --check + + build-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: stellar/actions/rust-cache@main + - run: rustup update + - run: rustup target add wasm32-unknown-unknown + - run: cargo install --locked --version 20.0.0-rc4 soroban-cli --features opt + - run: make test \ No newline at end of file