Skip to content

Commit 49c9890

Browse files
committed
make contract commit to a close method
1 parent 7a66a9b commit 49c9890

File tree

10 files changed

+337
-327
lines changed

10 files changed

+337
-327
lines changed

examples/rgb20.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fn main() {
1717
let beneficiary = Outpoint::new(beneficiary_txid, 1);
1818

1919
#[allow(clippy::inconsistent_digit_grouping)]
20-
let contract = NonInflatableAsset::testnet("ssi:anonymous","TEST", "Test asset", None, Precision::CentiMicro, [(Method::TapretFirst, beneficiary, 1_000_000_000_00u64)])
20+
let contract = NonInflatableAsset::testnet(Method::TapretFirst, "ssi:anonymous","TEST", "Test asset", None, Precision::CentiMicro, [(beneficiary, 1_000_000_000_00u64)])
2121
.expect("invalid contract data");
2222

2323
let contract_id = contract.contract_id();

examples/rgb21.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::fs;
33
use amplify::confinement::SmallBlob;
44
use amplify::hex::FromHex;
55
use amplify::{Bytes, Wrapper};
6+
use bp::dbc::Method;
67
use bp::Txid;
78
use ifaces::rgb21::{EmbeddedMedia, TokenData};
89
use ifaces::{IssuerWrapper, Rgb21};
@@ -20,7 +21,7 @@ fn main() {
2021
let spec = AssetSpec::new("TEST", "Test uda", Precision::Indivisible);
2122
let beneficiary_txid =
2223
Txid::from_hex("14295d5bb1a191cdb6286dc0944df938421e3dfcbf0811353ccac4100c2068c5").unwrap();
23-
let beneficiary = XChain::Bitcoin(GenesisSeal::tapret_first_rand(beneficiary_txid, 1));
24+
let beneficiary = XChain::Bitcoin(GenesisSeal::rand(beneficiary_txid, 1));
2425

2526
let index = TokenIndex::from_inner(2);
2627

@@ -48,7 +49,9 @@ fn main() {
4849
let mut stock = Stock::in_memory();
4950
stock.import_kit(kit).expect("invalid issuer kit");
5051

51-
let contract = stock.contract_builder("ssi:anonymous",
52+
let contract = stock.contract_builder(
53+
Method::OpretFirst,
54+
"ssi:anonymous",
5255
UniqueDigitalAsset::schema().schema_id(),
5356
"RGB21Unique",
5457
).expect("schema fails to implement RGB21 interface")

examples/rgb25.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ fn main() {
2323
stock.import_kit(kit).expect("invalid issuer kit");
2424

2525
#[allow(clippy::inconsistent_digit_grouping)]
26-
let contract = Rgb25Wrapper::<MemContract>::testnet::<CollectibleFungibleAsset>("ssi:anonymous", "Test asset", Precision::CentiMicro)
26+
let contract = Rgb25Wrapper::<MemContract>::testnet::<CollectibleFungibleAsset>(Method::TapretFirst, "ssi:anonymous", "Test asset", Precision::CentiMicro)
2727
.expect("invalid contract data")
28-
.allocate(Method::TapretFirst, beneficiary, 1_000_000_000_00u64.into())
28+
.allocate(beneficiary, 1_000_000_000_00u64.into())
2929
.expect("invalid allocations")
3030
.issue_contract()
3131
.expect("invalid contract data");

src/nia.rs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use aluvm::isa::opcodes::INSTR_PUTA;
2626
use aluvm::isa::Instr;
2727
use aluvm::library::{Lib, LibSite};
2828
use amplify::confinement::Confined;
29-
use bp::dbc::Method;
29+
use bp::seals::txout::CloseMethod;
3030
use ifaces::{IssuerWrapper, Rgb20, Rgb20Wrapper, LNPBP_IDENTITY};
3131
use rgbstd::containers::ValidContract;
3232
use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, TxOutpoint, VerNo};
@@ -188,18 +188,25 @@ impl IssuerWrapper for NonInflatableAsset {
188188

189189
impl NonInflatableAsset {
190190
pub fn testnet(
191+
close_method: CloseMethod,
191192
issuer: &str,
192193
ticker: &str,
193194
name: &str,
194195
details: Option<&str>,
195196
precision: Precision,
196-
allocations: impl IntoIterator<Item = (Method, impl TxOutpoint, impl Into<Amount>)>,
197+
allocations: impl IntoIterator<Item = (impl TxOutpoint, impl Into<Amount>)>,
197198
) -> Result<ValidContract, InvalidRString> {
198-
let mut issuer =
199-
Rgb20Wrapper::<MemContract>::testnet::<Self>(issuer, ticker, name, details, precision)?;
200-
for (method, beneficiary, amount) in allocations {
199+
let mut issuer = Rgb20Wrapper::<MemContract>::testnet::<Self>(
200+
close_method,
201+
issuer,
202+
ticker,
203+
name,
204+
details,
205+
precision,
206+
)?;
207+
for (beneficiary, amount) in allocations {
201208
issuer = issuer
202-
.allocate(method, beneficiary, amount)
209+
.allocate(beneficiary, amount)
203210
.expect("invalid contract data");
204211
}
205212
Ok(issuer.issue_contract().expect("invalid contract data"))
@@ -249,7 +256,6 @@ mod test {
249256
let seal: XChain<BlindSeal<Txid>> = XChain::with(
250257
Layer1::Bitcoin,
251258
GenesisSeal::from(BlindSeal::with_blinding(
252-
CloseMethod::OpretFirst,
253259
Txid::from_str("8d54c98d4c29a1ec4fd90635f543f0f7a871a78eb6a6e706342f831d92e3ba19")
254260
.unwrap(),
255261
0,
@@ -264,6 +270,7 @@ mod test {
264270
);
265271

266272
let builder = ContractBuilder::deterministic(
273+
CloseMethod::OpretFirst,
267274
Identity::default(),
268275
NonInflatableAsset::FEATURES.iface(),
269276
NonInflatableAsset::schema(),
@@ -294,7 +301,7 @@ mod test {
294301

295302
assert_eq!(
296303
contract.contract_id().to_string(),
297-
s!("rgb:pOIzGFyQ-mA!yQq2-QH8vB5!-5fAplY!-x2lW!vz-JHDbYPg")
304+
s!("rgb:XO8d$U!l-i2N5GHH-Rh6TONM-95aiue5-qpA3GQZ-97brf7o")
298305
);
299306
}
300307
}

test/rgb20-example.rgb

-1 Bytes
Binary file not shown.

test/rgb20-example.rgba

Lines changed: 92 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,100 @@
11
-----BEGIN RGB CONSIGNMENT-----
2-
Id: rgb:csg:wMbFwx2l-Pm15MRg-qftkJhj-QyXWdTq-2Qgh$Jn-wCR$$fI#drama-volume-parody
2+
Id: rgb:csg:1mxhWweO-JFkxLtq-EMqNTXf-q7oUKQV-onociUv-X4xf9N0#hope-lucky-modern
33
Version: 2
44
Type: contract
5-
Contract: rgb:oeC0oRIm-8CzpSBD-qBPnW$T-qdsuMEO-Sgoet4i-PP!fAJE
5+
Contract: rgb:lyBlsvJ4-5oG5qmq-H$rn6uV-OL91cPS-Yx6hO00-Yqwlq$0
66
Schema: rgb:sch:RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana
77
Interface: RGB20Fixed
8-
Check-SHA256: e913606632047498ba3e7da93152655cf807fc2039fffade97d1f75688a38177
8+
Check-SHA256: c0276d7495db72163c648ea9e902c29e25f65d1077058e16c0a1086bf1a11bf7
99

10-
0ssI2002ZbAu%+5_6z)DVT-@j4Fp29h04O2(!&-{P<NN-JIMfFlG$be0000D0CRI`I$>^aZh38Qb#nm#
11-
0iX|$=+dvi?V$kiHY>>R)POH2QN*q5;^`{kJ}FC#v%;(Z1JDNn01^NMR7F!%3RGotbRc1Kb7gb@2+;=t
12-
00RI3007zt0RRX90O)o|7XSbN0iX{70RRI40mWz_3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL
13-
0Ju9*6#|~9QwRX)c1RZh004e|etv#_etv#_etv#_etv#_etv#_etv#_etv#_etwVW(yzenp#bqVE6DKF
14-
fG;Rf#I5V%=_=tqDNBsA!mI!Q00000000000000001{4bZb@!tY+-a^Vr*qWb8}^Mkc}T^00000GyrpR
15-
X*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7iEjUU=H+KL7&<6n5{J!HJ@Tgs1
16-
mpj@U3yhwA`^&{wC3iS1tkb=;A&LP3007Yk09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L^
17-
+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwm0004?4*>`O00Ynm0RRC2(FXwl0RY+u0RRC2
18-
0iX{70RR600juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&lb}4dCJ6ul0T3qu00E#60RaF10iX{70RR60
19-
0juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&lb}4dCIA2c00000000010SZz_LNYK$X?SI11XfR6<MVPB
20-
{R!&WDGXgX2u=0cfR=^v4L0bS8HU8WU)OVbJscBHuRauJB?krea%!Hk0(I6sCqhFtSs;lPKAoX!0r&<f
21-
`@aL{H!tSG|BE#(Vo+CtFZ->o;2qj;#=~;t^vidEtAC%IlVX)dgF*wOtts}w(E1kon`A59t%UgjW&i*H
22-
0009FX>)URWn@!zaBysS0f>xPWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-PgaH5qb8uy20oVM#;~wy+
23-
U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0RaF7bY*gFa{*h6$5c2n1xg(vzLX+s=TnOlIwpu5x<(TMczEDk
24-
Z1({G0SaMrb7gc-cWz~J0ssL4000033~6(7b!B8zb#QQOc>w?c00eVzWn%#V0RRPbWpZtE0RRC20SaMr
25-
b7gc-cWz~J0RaF1009nZb8~fNWKC&vZDDj{XaNXxa$#<BW@T~!000013So0|Wpqz>Ze?--0RR613So0|
26-
Wpqz>Ze?--0RR600S|6(Zbfl*VQfKdZ*^{Ta{&rrb8}^MPj_x*asUAcbaG*Cb7p070uE_&b9H58O=)v&
27-
VRU0?WOH?JaBO)Xb8uy2X=Z6<WFTR4AYmY9Y;R&=Y#?x9a$#*{bY*fNWN&42ZYOjgZDDj{XdrZGWguyD
28-
b9H58AaiwaaBO)XVQg$~V_|e<WFT~JAarPDAYpTJWpp5KcWz~Ja}REBZbfl*VQfKdZ*^{Tb47G$Wgv5P
29-
Z6I%EAaihKZge1Fb8}^Mb0B1IWpi#PbRcDMbzy8EbZ;PZXk{RCb!{MTW*}j6b7gdMAZczOZ*_EVb#!wy
30-
0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cL78;Au%+5_6z)D
31-
VT-@j4Fp29h04O2(!&-{P<NN-JIVefCp*@T*BEM1-nAxfQs?Xp-gq0!k(CoEP-QR-U^$SDA7%gm00003
32-
&<6x_aAjiv0002d2L*Ixa&2<}0002m2MlR*b9H58Q+04~Y<U0x0004?4+>#(b7gc-cWz~J00000009su
33-
2y}8`ZgXa3asU7T000624{mR6MR9duY(Z^rb#8QX000000S;+%b9H58O=)v&VRU0?00000GyrpRX*x_=
34-
Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7iEjUU=H+KLd000X1U)Cjo-i6E2P9x&m
35-
nv%Qki+Oba;k67*blZ=H=TQh>UMA(m1w0!?L{VGDpk+OvDhHAKF%fNXr25$w;Zs!r000000000700000
36-
0000O%am^tlg}6qop{{FTg974FaQ3n`}K{nn9PGH_DcZ;0agu`_oR6wvcum54rF6FkJew+k!36?Lqfl$
37-
`8gF)R2-|n!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI6M<uyu|U!T^j90F36+)E=H0H{s0>nH0sE
38-
ektM3d!V}o0nEa3l8<>f1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkSbfMtWb&n35^vCNG$%?ywDnvz}K{0
39-
G9hl&cB^sg-3J`2zr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU}5;FWB;W7bg;sK59Oe@c3K=fV3eR
40-
7p&1RS^QDdq`TfM1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj
41-
3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td370(4qMgjGn~{4aFkgwNr28QlFe*-S#jFZ=4d$x=UULI21Z8+*
42-
Y#{__VRL9B24rt+Y+-UF17U4&CIoP7b#p5OWMOk?Edyk4bS?yXWpZyY18;6+F#~jWZ!!gRXmVv`GX!RD
43-
b#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7VRB`3UIuJ$WMOk?UjboZ0b*hSV`BkiWC3Mm
44-
0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX5r
45-
D{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4
46-
N<*rD#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5
47-
$#DguerIN224rbxWpi{YTdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn
48-
;XgI|zJmp*01;Q@0XT>R0ssVVZ*FDSKfd5E4dt|K_z&S8_x<o;$Bma=F|FzDqP#$vGoEY#1aog~Wy=4L
49-
uCs~&piVX+Q;&{e*II?7Wy=Z<NW)n^eyVI=$4I^-7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxC37W
50-
b8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^G
51-
WhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N
52-
1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(<bT|ZVX>MgX1!He)
53-
Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^z
54-
L_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}<N=gD>OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8
55-
R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!d
56-
a%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>
57-
0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5d<kPha$#d@Wpq+~
58-
1$1d_WMzI<4VL$$c_gyK-vkb1V>yr3U)7OiEGa`mzoq#(6;V_O`>9xR8a*>q2D50xZ(4$R31H0PIsUw_
59-
;fcDKIn~;D0000000000|Nj6000000TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1p!`O$dXTU
60-
&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S>WJ$5c2n1xg(vzLX+s=TnOlIwpu5x<(TMczEDkZ1)BN1axJ1
61-
bQsH&ZxWNw7!I9y+{RnQn@2DI{;m7<jj@=_gDCb(0R?SkWNBgGhp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=
62-
xPa<PwCjOfp-EU><uvY*v*VyJx9`-=x0=4G6)zAUH(9jDAr2n^2welj7mcZoem^?%L*to!bRZoO^d~aU
63-
zM`;8jz95VA_Ef(X>Md`c4>2IVr*pq1Y~7nX#oXeWo~q70tIbpY;0)*31nqsX-#QtY-t1vV`Xl1X-#Qt
64-
Y-t4rZE0h2Zw3iuWn*bgX=8G42MS|lZggo)X=8G42n23nZf^+)WMyM%PGN3u3JGInZggo*VQy~=1aN6%
65-
Zwv@zWn*bjX=85<31ek$bZJm&V{Z-xW@T-3Zx0D%Wn*bZWo>kC5DH^uZggozWo>kC5d>j$bZ-(~UdWP9
66-
bIo$ZB3zcMM|oyg?;CQQqXyz&yre57i5(9G0)iue^mXv<w6)w(d6C|8kgcNIvvn*?253>L0b>G|!V30Z
67-
)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQD0sr<;4X&8%0D>TgISeJ)kNFk^3<bZE>Xf*%skbRRcZ*
68-
dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi<nHX?QjTb7gjAZZ`#GX=iA3I0SBKZe=+FUqL|v
69-
UqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*<UrI^>UrS2@UrbB_UrkK{UrtT}Ur$d0Ur<m2Ur|v4
70-
Us6&6UsF>8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!
71-
Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdSj|16zH)>$g+grvznd|
72-
(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRr~000000093000000
73-
004kq#k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hf(#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3J<sl
74-
6abXef+K+Rb@1)9wcJs8k=}EVt)knrbu3H<Xi=&GV*-}K12h6(K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(
75-
M@Ir*NJs)-Nl5}<N=gD>OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOE
76-
S62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}
77-
aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQh>TceV><CWmAB0rjf(Qx!Q2!JmvT|r)Y|jMQ5=qh1p!>4
78-
NmyOwH13hJ<Df9N@6^q=n!c$OFAyI$S+vI?4j-^^(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td36}){
79-
9I$nc6v6<E4*-nj($pTF88_k051ACjntmza&U>J{u?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN2
80-
1_K0id2nSMuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!V}qb9G{Ld2nSf*z$T8ClZi8YCe|m_*?{l
81-
v>_T7tkE!8{87}TyWT7ZV`yP=b7gcd*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT9nkIU)BIae{J
82-
w9R4r0N>}O)+shqImKG);D@8R3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000
83-
KL7v#00000#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3J<sl6abXe1p-LEBNr;@ghiU?gEXK9KMDE{F?;HZ
84-
BRuDVqlk6qmbmq;7a>H<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr
85-
4oJgUK7OifU&jRjKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SE<Vn}$%))Y#k9jx)*&ki4jZw^)YeO<P
86-
50WJJ$H7rec8<G{1p@gO2n5}(1bO(?uXL+B(gNn{L2}utxi<$D8ry%w457b|%jv~AS23ov&0+fh-{+;)
87-
DK=9%#aim%hoiX)sz%rRzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9@$26Sm-Yh`j<cPx&vU)M(f
88-
$C5$z50Bb6=QgwbMk=ru&P_#5`hlthZeeX@fL_JCQxeEQkVIXfYN5c23F83hGCI$$Y9m4lDXjoK2V`Y*
89-
VQFl0MYn(@h5^MUvO8NyVMYp&P~kr{`@Vw(r~naH<N-K{32<^{V`+0~Z*E-!#21aJj($Hn^F!mAeRLol
90-
5%ecA&%UCtOO8MBUn1B)zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@XB+#WAdR)2C|*D$SwhJOvD
91-
$-0{Gfin@`<nKN_N?|2P1pz~<f5rCoWKZRyu3j3ckV4Jthm=C&OmaW<f`73y-iqLds5F){hncU$ijom%
92-
IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B
93-
+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`<nKN_N?|2P^{p2nM9k9NV(jNn@cR^G9g}K+!Jx@Lzn5}xgo%8-
94-
2uQvo7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE0000004D$d000000QnaP1l_I#dHB_@bgMhk
95-
0_N&La@nc5HwP6O+keCip#vHLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^
96-
0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdi$wZavD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szj
97-
cmV+b0|P-!RR}^*L`g?QQ&a;|M?xV03jhEB(4Y?i2MYiJ01F5J01E*E0La=00XZ-L(V!0j2Lu2B0RR91
98-
0000
10+
0ssI2002ZbAu%+5_6z)DVT-@j4Fp29h04O2(!&-{P<NN-JIMeGM1^Mn0000D0CRI`I$>^aZh38Qb#nm$
11+
0iX}3{HrB?Kgji}NDdZ<!4tXKN636W?mAJ1sPS9-P8;C>1JDNn01^NMR7F!%3RGotbRc1Kb7gb@2+;=t
12+
00RI3007zt0RRX90O)o|7XSbN0iX{70RRI4#b_W55X8znH4zBE{5>8*IQdPKz-=hD&5@z8TU{v>0RR91
13+
NS28eeh`qp2mt7INEZMA0DgXcetv#_etv#_etv#_etv#_etv#_etv#_etv#_ey9AaC4N81^{Pk?7KgzT
14+
x!Om_d_L|vQHH4TTl-EM;Q#;t0000000000000005>9V!Np5CrVRT_)Y-K@nb7gdpjUQ$J0000q0CRI`
15+
I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`#>2LRXnzT+P7s9j%|
16+
JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRBn
17+
2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK00E#60SEv91JDNn0098e2LS*90NMuu00962
18+
pbr56|Nj61tMHl9i|tU~UItecGJiUoGM{&Ru(|&K_B6qhpgguF2><{A5GMct0iX{70RR61pbr56|Nj61
19+
tMHl9i|tU~UItecGJiUoGM{&Ru(|&K_B6qhpgguF0000000000000323Q|WxGB8GIcx7Y+R!>~x^Kusb
20+
3F_D>3|%=0P4(J<mWA;RHt3oehQzyH*K>M391~BkJ``pp2L<+WYM!zJb=Ey6LPIrKAc+<}ouO+1_y#Ha
21+
zXRttFXqDki#07`P*;L4`>n3v9olck!*b;G%XfgQf1jL_VwFaNLIb3&DfYq8`WE_|WGmgRg!utx00000
22+
00RtZb8~fNWK(r;aBO)2h>TceV><CWmAB0rjf(Qx!Q2!JmvT|r)Y|jMQ5=qh0RRMZaAjiw*ZjWY9`LAL
23+
Uza=D8w-q{e*4SCS0#5iEUeSLv>}QC0RRPbWpZtE0b7g5R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y
24+
_W=L_3So0|Wpqz>Ze?-;009920009FX>)URWn@!zaBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|
25+
Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3
26+
bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-cWz~J009Vea$#<BW@T~$4rz09b!B8tX>)C1
27+
bYo~_b9HcVY<VDaaAjj@W@%+)AYpSLVIXI0Z(?C=AaG%FVQpn}WpW^7Z)J0CCv+ffVRU0?AarPDAZc@R
28+
b!B8Ab9HcVY<VDIY;131VRU6=AarjabZBKDVRLh3bRchcZe?<F4{mR6MR9duY(Z^rb#8QXMRaIoAaiwX
29+
Aa7<Mb8uyDbRc1Kb7gdMAY^Z4b8aVeAZ2lNVQe6DZy<DNWgv5PZ6I%EAYpTJWpr~OX>K5Ib#!obbaONS
30+
b8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0Yo+-F*JVm3;bhY
31+
i@((k1VXii%EFn_!xm3acbDfo$^IoLJJycZ7-~`8wI*&-=j;sLcpJ-+l@lpYWiSk2IgpJXW&i*H000Bf
32+
2Ly9)Wn%yU007Yk1$1R{ZF2ws007zt3~6(7b!B8zb#QQOc>n+a00E#63So0|Wpqz>Ze?-+000000T3q$
33+
baG*Cb7p070000000ICHZf|ZyadlyAL2Yk!Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szq
34+
F?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK{;*01EbB)+K@7h0D=SBjVed
35+
lDqGVd368bwG2#j+mD9lQ3zjNCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000
36+
000=vly4G~&lnD!c-+QY#hXVj|NgD}^^LKZ%!4TQO92G|Rt=W-q<JK=!`}oBWMesx)?d|;Wh^N}LcgW?
37+
ITcY<9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;
38+
DdEn0pt}VD%))Y#k9jx)*&ki4jZw^)YeO<P50WJJ$H7rec8<G{DqE_oP>KHujTH+>EdJQM&>E4z*R)+S
39+
A#T-nt8wey2OO)v!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7
40+
tkE!8{87}TyWT7W0ssVVZ*FDSKfd5E4dt|K_z&S8_x<o;$Bma=F|FzDqP#$vGoEY#1aog~Ww3D5kM`0G
41+
TIJXW70NMG9a>Vm-pkWcojB&*wsIf|mpsv;oy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3
42+
Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_
43+
ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+Y
44+
W@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)A
45+
a<{~<8e<H$)BgyIuQd>p?nYaleMc%`0D|O6*W?8OW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I
46+
L#ltp_Vr{><)W@$8mW*%&FhDhLgP$wKlOrtu`}L^1_A_hd2nU14c`8MAg$P-$_ObTP^+;#QB8K<QE0)*
47+
aRs7&XJ%jqWNBw*b95?Os;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)l1SfF*_j#U`>lTS#F>3Xo9Y
48+
KQ;Tlg9WGn5m)2^IEVxS00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9
49+
vx)$qPBtM^kB(v2T7{%#%L)!i!&yFls%&4!NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178Jm
50+
aA9L*AOvN2V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3
51+
CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IF
52+
dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi<nHX?QjTb7gjAZZ`#GX=iA3I0SBKZe=+IV{dG4
53+
ZaN8bWo>CgZ)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!
54+
L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9
55+
R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_*S<LULhaYh`pyTM1%eV{21vVRL9)3UhHna$#d@Wpq+q1!G}y
56+
WprK!Y;R;?b7)@(Vqs%zbZKL2U;$xa0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&q
57+
Z*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX4~V?uIaV{2t}OnU@yX>etH31dQXVPk7$bW(i<
58+
bZKm4Wqwu-miMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB(-~saSFvJu_4WvuML_T7r2AV9eq<{=Bc@
59+
iMp6M)!KLf0000000030{{R3000016cPx&vU)M(f$C5$z50Bb6=QgwbMk=ru&P_#5`hlti0bX9nl23EZ
60+
a>OEBma9j3W?1hVa-5?E;$Xa_D<z2?4_k}JR5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_XYw4bY*yS
61+
7|WDz5|hsu4xM=1##_akM=$^Wt^4(jv6#$*DE3PM1#M+yX<^`ps5F){hncU$ijom%IzoLb(>^Yz>$s@6
62+
fa*%L>w#RMNmyOwH13hJ<Df9N@6^q=n!c$OFAyI$S+vI?4j%vrT?51yjj4`)KRWY6<C%SQARQ6(Co<2z
63+
qOePjKk;880}~5rZe(e8X>(~}Y-IohWMyM%0R>}aZggn^1#M|;Y-s}tWMyM%O=)awX#@&mWo~q7O=)aw
64+
X$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxwWn*bhVQy~<31ek$bZJguZf^?&aA{+2
65+
3<zXpV`)%nV{Z)!V`Xl1X;5inZw>`!Wo>kC4+&&tV`)ZZZFFxC3S(t%bZJIqZFFxD1YvY^ZxUW!$dXTU
66+
&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8k=}EVt)knrbu3H<Xi=&GV*-}K3ie;t
67+
C4t_B%h66F;@g^%yYGv6bpPSC3`}&}kA~+_UtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>13m<L
68+
WpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO+0K|umv
69+
LP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}<N=gD>OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4
70+
Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#
71+
0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8R
72+
oT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV(a000000RI3000000
73+
0DxY_yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJp}>8I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v
74+
0F=~%BY^aE@a?p<+);Uv-gA(xqT91|EKCMyQK|uB0+zx9Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)
75+
M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsF
76+
R{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~
77+
0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;
78+
SY72b?vb<OpfI=Z)Xle=zNr;25Fa;Lw8tS1AFy!KkM`0GTIJXW70NMG9a>Vm-pkWcojB&*wsIf|mjwYF
79+
uyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8MAg$P-$_ObTP^+;#QB8K<QE0)*aRs7&XJ%jq
80+
0|az=aAh2@b&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}cibz*dRaAhyp@_H915|BP>K9=zKTm*o$
81+
AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Ymb5%jv~AS23ov
82+
&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000#
83+
000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiL
84+
Jm-R=h;`?dxb>|UAw<m5-D2$LPw@K`WF3=gfWe^2KEIc8afFF{yvqNNuCs~&piVX+Q;&{e*II?7Wy=Z<
85+
NW)n^eyVI=#{~gDD{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R4e!g7+2c{l^vA6>1DQOuZYLozrI
86+
k|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$F{ZT5Vfz5z=cU#u
87+
Hd8spTI%43qqz#IM%Vnl;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X*GB-y
88+
l0o(lkJ>lqHnaUkDzF#MO+`-nfvN;<VQpoAUd6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg-WMy<=
89+
X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO
90+
^d~aUzM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1!e+{I`
91+
x|;BTGZEk9?>;<AVI@cf0Yj>P#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(ir|N+G?p`mnXkl(k`ZV+
92+
LVYXKJ}#&0xTv^*>Pochfdm2o1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67V
93+
9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;<AVI@fQtrsCg%+lRr?B`GL`xImylWKs$pvgYJmvV80iF~{W
94+
NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd00000`4<QT-L3?A_|>m;t2@#H
95+
=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>s
96+
aBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D
97+
0RaF513^qx2trUqNk>IfR0C2+LLmSP0002cpbr5D3jhHC3kU!J3jqQE$l3=1IWPdxpbr5D1ONa500000
98+
000
9999

100100
-----END RGB CONSIGNMENT-----

test/rgb21-example.rgb

-1 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)