From c9b133e46ee63f2ee086dee57a12a313337f2731 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Thu, 17 Oct 2024 22:03:06 +0200 Subject: [PATCH 1/3] epic on state unification and new API --- Cargo.lock | 256 +++++++------- Cargo.toml | 23 +- examples/rgb20.rs | 12 +- examples/rgb21.rs | 19 +- examples/rgb25.rs | 12 +- schemata/CollectibleFungibleAsset.rgb | Bin 12645 -> 12839 bytes schemata/CollectibleFungibleAsset.rgba | 399 ++++++++++----------- schemata/NonInflatableAssets.rgb | Bin 12371 -> 12565 bytes schemata/NonInflatableAssets.rgba | 395 ++++++++++----------- schemata/UniqueDigitalAsset.rgb | Bin 14593 -> 14730 bytes schemata/UniqueDigitalAsset.rgba | 457 +++++++++++++------------ src/cfa.rs | 18 +- src/nia.rs | 66 ++-- src/uda.rs | 20 +- 14 files changed, 833 insertions(+), 844 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f63eca0..459b16e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,8 @@ version = 3 [[package]] name = "aluvm" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04c1d697d7f5b86d935bfe06cfd0310fd8a6c491b043118bec228597dcede9" +version = "0.11.0-beta.9" +source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#7adf61dbe4a3b39834bc3d665800024d66658e9c" dependencies = [ "amplify", "ascii-armor", @@ -34,7 +33,6 @@ dependencies = [ "amplify_num", "amplify_syn", "ascii", - "rand", "serde", "stringly_conversions", "wasm-bindgen", @@ -101,9 +99,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -135,9 +133,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "baid64" @@ -173,10 +171,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] -name = "bitcoin-private" -version = "0.1.0" +name = "bitcoin-io" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] [[package]] name = "bitflags" @@ -214,8 +222,8 @@ dependencies = [ [[package]] name = "bp-consensus" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "chrono", @@ -228,8 +236,8 @@ dependencies = [ [[package]] name = "bp-core" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "bp-consensus", @@ -246,8 +254,8 @@ dependencies = [ [[package]] name = "bp-dbc" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "base85", @@ -260,9 +268,8 @@ dependencies = [ [[package]] name = "bp-invoice" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29c4f672b4b82ce7a218b2900254ac8e4b15b0022ed13abffa722571e73d375" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-std?branch=develop#b83739dc1ee3299a85f4cb040e061597dd9be2db" dependencies = [ "amplify", "bech32", @@ -272,8 +279,8 @@ dependencies = [ [[package]] name = "bp-seals" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "baid64", @@ -300,9 +307,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.1.16" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" dependencies = [ "shlex", ] @@ -330,9 +337,8 @@ dependencies = [ [[package]] name = "commit_encoding_derive" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea07c5ad73a637276dc4f8a957f8285764018d45bdefef35eb9137f32d0e3c81" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify", "amplify_syn", @@ -343,9 +349,8 @@ dependencies = [ [[package]] name = "commit_verify" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a1982dc6c54d2dcfa2bf4398d97e4e80a93f24d2537e58d6110b2b272cff0c" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify", "commit_encoding_derive", @@ -372,9 +377,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -411,12 +416,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "fast32" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ea9bdb2356e5a92403cf23ac493f9b43bd71e4ffd0f800862b841dd723994c" - [[package]] name = "fluent-uri" version = "0.1.4" @@ -461,9 +460,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -471,11 +470,20 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -496,12 +504,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", "hashbrown", + "serde", ] [[package]] @@ -512,18 +521,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.158" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "log" @@ -537,12 +546,6 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "mnemonic" version = "1.1.1" @@ -551,9 +554,9 @@ checksum = "f2b8f3a258db515d5e91a904ce4ae3f73e091149b90cadbdb93d210bee07f63b" [[package]] name = "nonasync" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a84b7c873630913f738950f17412b9d5b24cad6866b98b802253f8cbbefabb" +checksum = "4b1005555d351f593bf72ffc3a89a0d42e243df004d2c4ded17699f10b562b98" dependencies = [ "amplify", ] @@ -569,9 +572,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "paste" @@ -596,9 +599,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -644,18 +647,17 @@ dependencies = [ [[package]] name = "rgb-core" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-core?branch=develop#0450760dbae554de0d7623691aed7630f1b60a60" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/fungible-nonconf#78ee97123665b5da312336f52d56485153af1673" dependencies = [ "aluvm", "amplify", "baid64", + "base64", "bp-core", "chrono", "commit_verify", "getrandom", - "mime", - "secp256k1-zkp", "serde", "single_use_seals", "strict_encoding", @@ -666,14 +668,16 @@ dependencies = [ [[package]] name = "rgb-interfaces" version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=develop#673e970f5655ac5f7bd577a410ef4ad02bf3f62e" +source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=feat/fungible-nonconf#844736271f2bdc7789278f4b4517ab9cbdb8aae7" dependencies = [ "aluvm", "amplify", "bp-core", "chrono", "getrandom", + "rand", "rgb-std", + "serde", "serde_json", "sha2", "strict_encoding", @@ -683,14 +687,13 @@ dependencies = [ [[package]] name = "rgb-invoice" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-std?branch=develop#796312c89122607ff77dd41c5cffeb34db472d34" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#50a76079864c35fc8229bb861f17ad8c6e45f566" dependencies = [ "amplify", "baid64", "bp-core", "bp-invoice", - "fast32", "fluent-uri", "indexmap", "percent-encoding", @@ -698,7 +701,6 @@ dependencies = [ "rgb-core", "serde", "strict_encoding", - "strict_types", ] [[package]] @@ -721,8 +723,8 @@ dependencies = [ [[package]] name = "rgb-std" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-std?branch=develop#796312c89122607ff77dd41c5cffeb34db472d34" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#50a76079864c35fc8229bb861f17ad8c6e45f566" dependencies = [ "aluvm", "amplify", @@ -761,10 +763,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "secp256k1" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ + "bitcoin_hashes", "rand", "secp256k1-sys", "serde", @@ -772,61 +775,38 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-zkp" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a44aed3002b5ae975f8624c5df3a949cfbf00479e18778b6058fcd213b76e3" -dependencies = [ - "bitcoin-private", - "rand", - "secp256k1", - "secp256k1-zkp-sys", - "serde", -] - -[[package]] -name = "secp256k1-zkp-sys" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6eea7919e0cab992510edfbf40bd9342c0a3c2bb910f2c51355c2cb2d69839" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", - "secp256k1-sys", ] [[package]] name = "serde" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "6dbcf9b78a125ee667ae19388837dd12294b858d101fdd393cb9d5501ef09eb2" dependencies = [ "itoa", "memchr", @@ -836,9 +816,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -885,9 +865,8 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "single_use_seals" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a4c51f21507cf63984c367507f281215073e85b08711ed7da4fc63dbd709e0" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify_derive", ] @@ -920,9 +899,8 @@ dependencies = [ [[package]] name = "strict_types" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f16e8855a575633815f01482ac927ebaca3d2485aec8e17226c6826de29154e" +version = "2.7.1" +source = "git+https://github.com/strict-types/strict-types?branch=develop#729a4f86d25dfcea15ed15bbeb1e027473401c58" dependencies = [ "amplify", "ascii-armor", @@ -962,9 +940,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -973,22 +951,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1014,9 +992,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", @@ -1033,9 +1011,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unsafe-libyaml" @@ -1067,9 +1045,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -1078,24 +1056,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1103,22 +1081,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "windows-core" @@ -1195,9 +1173,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -1220,5 +1198,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index 18c216c..f6ad1b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,11 +22,11 @@ name = "schemata" [dependencies] amplify = "4.7.0" strict_encoding = "2.7.0" -strict_types = "2.7.0" -aluvm = "0.11.0-beta.8" -bp-core = "0.11.0-beta.8" -rgb-std = { version = "0.11.0-beta.8", features = ["serde", "fs"] } -rgb-interfaces = "0.11.0-beta.8" +strict_types = "2.7.1" +aluvm = "0.11.0-beta.9" +bp-core = "0.11.0-beta.9" +rgb-std = { version = "0.11.0-beta.9", features = ["serde", "fs"] } +rgb-interfaces = { version = "0.11.0-beta.8", features = ["serde", "rand", "fs"] } chrono = "0.4.38" serde = "1.0" serde_json = "1.0" @@ -43,11 +43,16 @@ log = ["aluvm/log"] fs = ["rgb-std/fs"] [patch.crates-io] +commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "develop" } +single_use_seals = { git = "https://github.com/LNP-BP/client_side_validation", branch = "develop" } +strict_types = { git = "https://github.com/strict-types/strict-types", branch = "develop" } +aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "develop" } bp-consensus = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-dbc = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-seals = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } -rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "develop" } -rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "develop" } -rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "develop" } -rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces", branch = "develop" } +bp-invoice = { git = "https://github.com/BP-WG/bp-std", branch = "develop" } +rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "feat/fungible-nonconf" } +rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } +rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } +rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces", branch = "feat/fungible-nonconf" } diff --git a/examples/rgb20.rs b/examples/rgb20.rs index d2777b9..4292e0c 100644 --- a/examples/rgb20.rs +++ b/examples/rgb20.rs @@ -2,13 +2,13 @@ use amplify::hex::FromHex; use bp::dbc::Method; use bp::{Outpoint, Txid}; use ifaces::Rgb20; +use ifaces::stl::Precision; +use rgbstd::XWitnessId; use rgbstd::containers::{ConsignmentExt, FileContent}; -use rgbstd::interface::{FilterIncludeAll, FungibleAllocation}; -use rgbstd::invoice::Precision; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::Stock; -use rgbstd::XWitnessId; -use schemata::dumb::NoResolver; use schemata::NonInflatableAsset; +use schemata::dumb::NoResolver; #[rustfmt::skip] fn main() { @@ -36,9 +36,9 @@ fn main() { eprintln!("\nThe issued contract data:"); eprintln!("{}", serde_json::to_string(&contract.spec()).unwrap()); - for FungibleAllocation { seal, state, witness, .. } in allocations { + for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount={state}, owner={seal}, witness={witness}"); + eprintln!("amount {state}, owner {seal}, witness {witness}"); } eprintln!("totalSupply={}", contract.total_supply()); } diff --git a/examples/rgb21.rs b/examples/rgb21.rs index 11212c3..4aa7fc8 100644 --- a/examples/rgb21.rs +++ b/examples/rgb21.rs @@ -4,15 +4,14 @@ use amplify::confinement::SmallBlob; use amplify::hex::FromHex; use amplify::{Bytes, Wrapper}; use bp::Txid; -use ifaces::rgb21::{EmbeddedMedia, TokenData}; +use ifaces::rgb21::{EmbeddedMedia, NftAllocation, TokenData, TokenIndex}; +use ifaces::stl::*; use ifaces::{IssuerWrapper, Rgb21}; use rgbstd::containers::{ConsignmentExt, FileContent, Kit}; -use rgbstd::invoice::Precision; use rgbstd::persistence::Stock; -use rgbstd::stl::{AssetSpec, Attachment, ContractTerms, MediaType, RicardianContract}; -use rgbstd::{Allocation, GenesisSeal, TokenIndex, XChain}; -use schemata::dumb::NoResolver; +use rgbstd::{GenesisSeal, XChain}; use schemata::UniqueDigitalAsset; +use schemata::dumb::NoResolver; use sha2::{Digest, Sha256}; #[rustfmt::skip] @@ -41,7 +40,7 @@ fn main() { }; let token_data = TokenData { index, preview: Some(preview), ..Default::default() }; - let allocation = Allocation::with(index, 1); + let allocation = NftAllocation::with(index, 1); // Let's create some stock - an in-memory stash and inventory around it: let kit = Kit::load_file("schemata/UniqueDigitalAsset.rgb").unwrap().validate().unwrap(); @@ -53,16 +52,16 @@ fn main() { "RGB21Unique", ).expect("schema fails to implement RGB21 interface") - .add_global_state("tokens", token_data) + .serialize_global_state("tokens", &token_data) .expect("invalid token data") - .add_global_state("spec", spec) + .serialize_global_state("spec", &spec) .expect("invalid nominal") - .add_global_state("terms", terms) + .serialize_global_state("terms", &terms) .expect("invalid contract text") - .add_data("assetOwner", beneficiary, allocation) + .serialize_owned_state("assetOwner", beneficiary, &allocation, None) .expect("invalid asset blob") .issue_contract() diff --git a/examples/rgb25.rs b/examples/rgb25.rs index 3925cd1..ba08159 100644 --- a/examples/rgb25.rs +++ b/examples/rgb25.rs @@ -1,14 +1,14 @@ use amplify::hex::FromHex; use bp::dbc::Method; use bp::{Outpoint, Txid}; +use ifaces::stl::Precision; use ifaces::{Rgb25, Rgb25Wrapper}; +use rgbstd::XWitnessId; use rgbstd::containers::{ConsignmentExt, FileContent, Kit}; -use rgbstd::interface::{FilterIncludeAll, FungibleAllocation}; -use rgbstd::invoice::Precision; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::{MemContract, Stock}; -use rgbstd::XWitnessId; -use schemata::dumb::NoResolver; use schemata::CollectibleFungibleAsset; +use schemata::dumb::NoResolver; #[rustfmt::skip] fn main() { @@ -44,9 +44,9 @@ fn main() { eprintln!("\nThe issued contract data:"); eprintln!("{}", contract.name()); - for FungibleAllocation { seal, state, witness, .. } in allocations { + for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount={state}, owner={seal}, witness={witness}"); + eprintln!("amount {state}, owner {seal}, witness {witness}"); } eprintln!("totalSupply={}", contract.total_issued_supply()); } diff --git a/schemata/CollectibleFungibleAsset.rgb b/schemata/CollectibleFungibleAsset.rgb index fcc0299ad9bfffc250a9984b240f0ca309ce5d6e..69378a6583af42d84aa5227a149e457382338131 100644 GIT binary patch delta 469 zcmaEwv^-^ksY2_tDd*eVXMDAFzsB)y;lAfZHa{*;;dZ({$4TzW={e3bH-?HaPTZ%+ z$gnwwk&Bs;Vd8#;$rUUH_5W8~w90m$v@tH7wfE0wMb(4Tzesy8-WuF#@#@p{qt$$D z3=E6{>Of)vKO@8c|4@p7k&r$HIACPl)W6*|&(iqyH0D(>N zs+D!f>7pYVnryFA6>|TY`Oi94*&viW_t|&b?^D~hik+yks}ob3?8Ex79&X^kFgRe= zZq{Mj$TZnVLSb_}=SD%L#A#-y(wZ7s&+>UTaXSccE?BH`bi>hpmSATN1*28m?^u~8 xCrT?!mg7{|EFi5VrYg%_l z7c&zh$K)L>2KB2y%)He7HsF37TezrEz13`^`QQ~JPuR5Znocxw?ZV5Bi{qvte_N2KGi>k%6i23=f zmlhdR&vu=1W9^o$cXB^$U#F*dqR8e5>xGreHg?DvxlQh2eaIZiz%V(6Lt(Q7doPn> z!Q0bsQrM?#W--k<8Z%*D{a@RMK{tGgKefh%H}Ae1$;vcYQ$}I(4rztS((mYB9812@oN7l58&=VoAJ;O1ap;AUiEIB|=e(b9n7B1oJC=vk2C0cUA_L;wH) diff --git a/schemata/CollectibleFungibleAsset.rgba b/schemata/CollectibleFungibleAsset.rgba index 63bb96d..f83a44b 100644 --- a/schemata/CollectibleFungibleAsset.rgba +++ b/schemata/CollectibleFungibleAsset.rgba @@ -1,217 +1,220 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:KD9m3Bvw-xSwmLRp-np1dZCs-nykPCCf-zaSAmZG-guvbqL8 +Id: rgb:kit:9MjsRLx8-ZsEU0o5-EmeSB3F-JjShSzg-MYxsXUy-lYD!O6E Version: 2 Schema: CollectibleFungibleAsset; - id=cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence; + id=so!3RW45M!uWA6pEYoKHn21cYqsINcbBEub7OjtUy3I#biology-temple-garbo; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB25Base; - id=BdKiMHub-RZTYrbS-13G3wt6-4uIchyP-MQF0Kmm-sYgeMkY#prism-cobalt-airport; + id=xCgpButl-IG39Nk!-aynmAEm-Od5vc99-5WGtRbI-ej5!FiY#edison-secret-elvis; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: b$VleYX0-Sun70zM-PFtyB!L-lb3gyqi-l9MarXo-HZioH6U#hippie-private-optimal; - interface=BdKiMHub-RZTYrbS-13G3wt6-4uIchyP-MQF0Kmm-sYgeMkY#prism-cobalt-airport; - schema=cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence; +Implementation: 0VoxuFqG-QOkPe43-qm5Eh3g-f4XVqEw-R3T8fQA-YOls71I#concert-juice-hilton; + interface=xCgpButl-IG39Nk!-aynmAEm-Od5vc99-5WGtRbI-ej5!FiY#edison-secret-elvis; + schema=so!3RW45M!uWA6pEYoKHn21cYqsINcbBEub7OjtUy3I#biology-temple-garbo; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Type-System: sts:X6MVH82h-MpI0B4a-XkYvSlO-6ex93XI-7jqe9pk-wx8znCg#slang-love-detail -Alu-Lib: alu:q$CZ0ovt-UN9eBlc-VMn86mz-Kfd3ywu-f7$9jTB-k6A8tiY#japan-nylon-center -Check-SHA256: 334fc7130c24478e8d5ecc1730d73f03fc548d3abd553cdd27b6b4917fea3e96 +Type-System: sts:!sszu938-NL3ZW9T-DBsfmGE-cQLyhXS-53N8TEP-Ju$dT8o#marvin-silence-school +Alu-Lib: alu:$6jROmtH-krFeZwW-N$PMhJc-GX9BtLo-7VTiTjq-8tfFew4#morning-shrink-igloo +Check-SHA256: b1e06d874b9f5c6327427d00c937707a53ac8576034d8fdd0bc019739f97e2f3 -0s#RDQb$5EH9}!?WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=8%{dOaKyPp>`{W+ev&_Ht^T -vI2G1Jtsm#HCZ5u7Cwae0cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H +0s#RDQb$5EH9}!?WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=5=Yl+T7onDsqJ)(GyQzUOj0 +_|udNLf4!^9@NX6Lz#s60cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H WMy<=X>4-=KPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SETceV>000312V`Y*VQFl000031 -3~6(7b!B8zb#QQOc>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC21$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j -|Nj614rz09b!B8tX>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU -{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQO -c_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQO -c_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_E -AYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~ -cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z=0000OLvL(sWn*+{Vr*qbb#7;A -Vr*qWb8}^Mkc}T^00000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7i -EjUU=H+KLA(FXuqi^o(rG6hNWEqzLQbX$v{o}M{Qm$Q$u|-NIF?wSZw1n#FngOtl-RAbwcKs+x2`TB$Z|Zy1<00000xeEktVQpmq +zLX+s=TnOlIwpu5x<(TMczEDkZ1({G0SaMrb7gc-cWz~J0f>xPWn((=JC(Q18jXtb+QHlu3zu?H+0@$e +$59-Pga7~l0RR911_NPobN~PW00(4cbYW?1a{vGV01Rn!b9H58Q+04~Y)0BZUF!R00neqa&2<~009623So0|Wpqz>Ze?-+0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~WpV%j +0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-cWz~J +009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UM +XmdGNHD)b1N<}w!0RR917(;JtY-M9~X<}?;Ms;pyX<}?;L349ubdZf7W&i*H05kw|b7?wET2nD~cr9mY +L^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z<2GIuqTZ_k3I5GuF9U{JzB5UVUixWB~ +h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK0JsYPcK`4_D#7Gw +X~6yKc4{fCnyi?lPLTMGtH94V>wGO=0RRBG3jly##k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hT! +0K5wTKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEy`tmL}G%6pKV-Xs|Yp5!4l^CIy+R$a>OVp2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R +dOm&@CXkIEW&i*H000Kj2L*Ixa&2<}0002m2MlR*b9H58Q+04~Y00000xeEktVQpmq 0002I3kPInbYW?1a{vGU0KE$daB^j1X>)0BZU6uP00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p07 0000000ICHZf|ZyadlyAL2Yk!Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_ -Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK}%c009|og(=AP+C)tiPK}(5y`B$^i2_%Xzy^d7vHg1k5 -H90tF4%ya@=dSJu9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0000002eXhT -bJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2nrdH*HiKem1Z9kJM|+?(>Td5ZgsqT;~+(zt2h~^9t!qf)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHiJR3zs -QCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000is8ao+<`1M~J|HmdBRUd1sOY#QI#7OY62ZUYgq2{$1_f|(Z*OMux+H)Wo_#t<{Qxj6 -AK!qv;}MSmqFbhQEq%{{?+7>(hMvn1>teUKtq)w3djjO=VIO}{ZUl?%h%j{$al(PgiY{guVo`3y4;ZoR4bMl2=SA)CVSp@=R0aiogNR0FM -6f^;O*CpsE^1w^{LCiZR_61McH**~s>*k#ka7f`30f1DQOuZYLozrIk|g)X!BI_ij=PW`wtZb#W)+fmD4=t_vsg|0>!+0*ge47SbQGZx1W$+q -KmuPd00Lhz0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{> -G!6q_F*OeZUokci179&W5d&W_I1&S2F*y?hUotQh179*R6$4)~G8O}0GBXzgUotcp179*V83SK3HW~w8 -GB+CoUotox179*Z9Rpu8FdhS6Gcg|nUo$cw179;UAp>7CG$I3EGc_XvUo$o&179;YB?DhGI3@#MGdU*% -UoTDFa_LGAaXKG&3s$UoXEdyUPHZB8SG&e5;UobF#}&UFfs#QH8C>-Uo|o` -179^WH3MHYG&TcYH8nQ_Uo|#3179^aIRjrcI64DgH90#2Up6p2179{VJp*4hGCl)eHZwmV<32;hs$B9Z -CsU(1!DsC|W1LOd&b_IRG-(&Q$wPGo0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*CF=5_dDaL -dt&GbF`L!K1nFKt0{aJ@L|V|mt8Tf>F%PuK$$b1 -YykvwZ*650hMRP8oyjwdxaIA{*p){f_{?k9xNjB5_YJg;9E|1`d*r&;qSS3+uh -`0YNLave-Im;)LDUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{ -UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_r!TdJ&3iT??W6$?l# -{@A?G8j--)v|TbGZq;_HaqHa&9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pbAOI|^*z*)x7;xa( -tX?xs7r@Kg%_4VyXL*^e2SZaPaSj6l0$(ry0$(u!F8L$l9*O2>K7sxkdlq2ufW04X5gsKGR|FM8lquF* -1AqcwFaQEyF#!T!G6Di$GXnx&Gz0=)H3b4+HUSC<9+KF)0IIG%_j!UoWECXLOH7x^QG&U{+UoaFauvSIWYrYH83&*Uo|l^179^V -Gy`8XGc^NWH8eH@Uo|y1179^ZI0IibH#q}eH8?s0Uo|;9179{UJOf`gF+BrcHZnc~Up6y8179{YKm%Vk -H9-SkHa0>7Up6;G179{cL<3(oIYk3sH!wy6UpFyF179~XNCRItGf4wqH#ABEUpF;N179~bOaosxH%$Xy -H#klMUpF~V17A2WPy=5$F;N3wI5JWLUpO;U17A2aR0Cf)HB|#&I5t)TUpO~c17A2eSOZ@;Iavc=IWSrS -UpX;b17A5ZTmxS@GhG8;IW%4aUpX~j17A5dU;|${H(>)`IXGeiUpYBr1Ya>QFk}Q@F)%S@1Ya>QGG+u{ -F)%Y{1Ya>QG-w20F)%f01Ya>QHfjW4F)%l41Ya>QIBW!8F)%r81Ya>RFm422F)=Z31Ya>RGH?W6F)=f7 -1Ya>RG;#!AF)=lB1Ya>RHgp7EF)=rF1Ya>RICcbIF)=xJ1Ya>SFn9!CF)}fE1Ya>SGI|7GF)}lI1Ya>S -G<*bKF)}rM1Ya>SHhu(OF)}xQFWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM1OfmAZf|a7*gwAD -FAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td -370XB%Aj(G3)xaIsZm;LsuY+jte!uyUZPTtus~8Lr=bP`3SxC~ZcuV>Z)S5xvr`~b_&>p|I=+ZSHXzGn -eTL3nwYeMx0j1CTGIbLNeor6CU~-az -M4%p_jBMKVnA!_hHLM3-*En?qu}gdoMr}u)7e{?0bR>WH17z$yORD!eAooFZYXt!%tM$1O6c@UqIn-Z! -6?La^OW}HT7+ugYHG0&^E$N0l(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zgEd*tFV{9P=Xkl|` -BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV= -Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQJ=g3U`2=>B -EOVuo?yi;C-IS|dY*_VV1lmKM$SNfJhg}MqW}N^00000 -0RR90{{R3006!~ox5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ipxYy=<4kft^@4w~Gv0~@0t9q@L|V|mt8Tf>F%PuK$$b1 -YykvwZ*67D|BtS-iU6QaHX&1wj$zkYg`{Q63JyraSw4QMY+uJld#r&uvGo)EH?tmeMV*EUvi5K@+M3jI -=Gr|U^NM>00SIzsb7gXNWphWfQy^3LKf$d!zKBIOAj@QZhR$B(b98cVaA;*G2x4+!V{2t}OehFqa$#d@Wpq+02w`({ -WpZhAYbpeAY;|)h1!He*ZDA}0ZE0?Gb1eg8Z*(pNb8KOAXfFhMWpZyY18;6+F#~jWZ!!gRXmVv`GX!RD -b#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7Z)|UFItg=SZD~VqY;SHm1Z-tay|%gb!BsOX>V>n0%3GO0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l> -0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM -3UhHna$#d@Wpqqi31VSmYg24tb7))&b8$j)VPk7$bW&XfV_|Y-bY2E*Z)9O}XkQ3oVPk7_X=7_(0byYQ -VqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@G -cL8{K0eN`=dU^?CLULhaYh`pydjxQ4aAkZ6V?uIaV{2t}Qhfz4R=en`QSWqM5o5hmSFWPZ$<(8bMF ->h<^zx3zarVM*##!3G2eVRCe7V{Bz1_P_T#MJ -mc=|AqG3>FHibBhS)2n10$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(==Rt=W-qYp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmMzZ000000RR6000000 -09$t~jeJj&GE~o3bsJMXYO0?^NT%k!=UF9_Hk+b8VFt_j2 -&9|DqsTD5}A2(UF#~}_M00>4q10|{hhV`)ukY;0)+3S(t%bZJd#Y;0)-1#M|#a&HC+WMyM%O=)9tZwCrv -Wo~q7O=)9tZwLf#VQy~;2xMhrX-;8oZwd)xWo~q7PGN3u3j}a!V{Z%yWMyM%P-$at4GCjqZggo-X=85= -1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7MrCbuZxIAxbaZbLUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O& -C5asm1puYQ&j^#1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2 +Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`qY000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000003D4009|og(=AP+C)tiPK}(5 +y`B$^i2_%Xz +y^d7vHg1k5H90tF4%ya@=dSJu9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0 +000002eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2nrdH*HiKem1Z9kJM|+?(>Td5ZgsqT;~+(zt2h~^9t!qf)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjN +CgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000is8ao+<`1M~J|HmdBRUd1s +OY#QI#7OY62ZUYgq2{$1_f|(Z*OMux+H)W +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 +dQuo71P5VqbZKL3Wg+&z +_dDaLdt&GbF`L!K1nFKt0{aJ2Bz={du0O&G0&#r1CLJBFZ +06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mGT?51yjj4`)KRWY6 +OEBma9j3W?1hVa-5?E;$Xa_D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~}Y-IohWMyM%0R>}aZggn^1#M|;Y-s}tWMyM% +O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxwWn*bhVQy~< +31ek$bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC3S(t%bZJIq +ZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8k=}EVt)knr +bu3H13mOG^S@OiTh_O-%w{ +PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzl +WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ +VTK~nd#>}f`J9i4oQLwKoSX{ +qa?+!#g7D2LkJ);stfJ~0%ZYKL*z(|^Y;`q0eROY=qU2QOZ-91J16!9Pue$g9U1H9ofB|K;aP9N=jl+d +3S_}{Un%4gB&#he^ygq)cVns}6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$> +f_VvG%;GuzyszPjx|liD+IRr~000000093000000003nHRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;H +a~%Z%rO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#W-{7jyY;+0$@L;dFH?7@I0Vhjl>lqRXQ4Sv +!J@Q}07Pb3aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9->y0X3z7pM0$(ry0$(u!0$(x$0$(!&0$(%)0$()+ +0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7HT;&p7LREnfuzip)Flw(%El5GL~%R*K7_!!LEI$d#tw{C^XqS1c9F +cxiZMvTM3tQ2*(p5s~Z{6V3QiK&W#-F~+s6raGiL13v_0VRL9L1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2 W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c* 0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G 0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8w -a&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU|1oBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Dur<1!iGv -b7cSobaHiN0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG%;Guz -yszPjx|liD+IRr~000000093000000003nHRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~%Z%rO*2^ -brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#W-{7jyY;+0$@L;dFH?7@I0Vhjl>lqRXQ4Sv!J@Q}07Pb3 -aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9->y0X3z7pM0$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(== -0$(@?0$(`^179&P3Iks;F$)7HT;&p7LREnfuzip)Flw(%El5GL~%R*K7_!!LEI$d#tw{C^XqS1c9FcxiZMvTM3t -Q2*(p5s~Z{6V3QiK&W#-F~+s6raGiL13v_0VRL9L1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8 -c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i< -0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K -0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X8 -0d;i&c6I@GcL8{K0eN`=dU|?ChNTZrwV~w-1E;$H-a1RJ5%B|vt^+e;7P&d4QEUSw1bSt1Z!iOIZe=k8 -ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T# -0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A -0$){C0$)~E0$*2G0$*5I0$*8K0$*BMfL_JCQxeEQkVIXfYN5c23F83hGCI$$Y9m4lDXjoK1p&l5eV)0q -0(o=Ek6qT`tOWJT(?USNzPt(#xCj&gl+=PFfb@0n?X0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*4 -0$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLg -YH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU}H!%M3Dx2=n>P7GpdX -sOF_A!yI|05JJA4hD*uxp!Wkc0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@ -0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+ -VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X8 -0d;i&c6I@GcL8{K0eN`=dU}YASY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VmPT%k!=UF9_Hk+b8V -Ft_j2&9|DqsTD5}A2(UF#~}_Mip)Flw(%El5GL~%R*K7_!!LEI$d#tw{C^XqS1c9F1p+ej~gaa -D&)?_rinzLQ&_n0fy*YdyZ9}hJM#tt1$JR}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v| -P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_W)yWMOk?UjboZ0b*hS -V`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7J -cma8N0eX6u_16YMt|~K?(>Td5ZgsqT;~+(zt2h~^9t8nC*X$hm1a_7zbETK=u9eu`l&fBB -SoLHC+C!en&kq5f6wKzah0LUPxz%0|H+( -1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{>G!6q_F*OgPf5CnQcV%pLWn&0*XlZhEWo2$;2xf0}a&%>7Ze<5%X=Zd~Wo~Aue8zcXXXRJdMCHk1I^Yb;mDw5%F9Y9n -z;zN&zQ>*g0cJAVWV`jeJjwMUMK4o#s5k`8&6NOa#Al&7Ou?eGkFXNpQ!`6G?!Ho2{+j3`z?yGA&iMs7 -h0FMkOYwAlAOnB{Zgp$`19NX^0RwY%cme}uba(>;Wp8u@17&V;1p{GYYX$>iWo!omVsi)rXmkkzY-S1q -c618@W@ZcmV{#1wb8ij;b7>C)WNc*+17u?{5d&mnG71&2WMecG1a4ttYZU`?d2SX1WprW}17l%s -7y@N&83S{5Vj2Twb7LCZ)|K~ -awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T -1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8 -c4ajKb7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m> -bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@ -OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxo -V{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qU -WMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MM -c>#KQ31dQXVPk7$bWD2$aA|O5dWMyoBuyE6l_RFpca|tEc|RrSB7Cz4ZX^fET;C?Pugo?TPqd@iwKZAWN>+ej~gaaD&)?_rinzLQ&_n0fy*Yd -yZ9}hJM#bl0000000960|Nj60006mze&;~0k`vnNG-Q(frCuPoqJv316u7g@bjO{C`L6>T0$)Kv0$)Nx +a&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU|?ChNTZrwV~w-1E;$H-a1RJ5%B|vt^+e;7P&d4QEUSw1bSt1 +Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx 0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);6 -0$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+VRL9-yeN^e#%jg&<`7wAOx^Y=h@bX)}iC9Czh5)>D@qdC-Hdlhx3aZBNPbr@aH -F*SPB$t~%IzmLo5#W`0ornJpr`vBkPrPe7nQ#r+2>fnc?xeBUA2t3iEoy@J9k$WaEUx}!s`ym)GDo%67 -tO|Gy=Bof+a{vGU0000006zc#000000K__dp1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)CB@az9SbZ -=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#tjtrsCg%+lRr?B`GL`xImylWKs$pvgYJmvV80iF~}oa%+!| -DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BY0R-k)e=PQRzk^xih<3e>RP8oyjwdxaIA{*p){f_{?!|i{ -n!oosZgNI|twmNZeC(lYZa*g7-2eQ3Yy;-pLV?*e8zcXXXRJdMCHk1I^Yb;mDw5%F9Y9n -z;zN&zQ>*hX>M?JbaMx@kSBB1e&`i(d1FY^)J0gqR@5msD^SqOKF=c%C58uYb#!obbaS$Tt)Lc}<}Cbd -N>_$qQw_b!lPsq8*H7AOVOuK}28#%6Z)0mzX>DaS+8q@+Aa1+e+@!-jhcW8%o2S}z-#y5JARJB>wYeP1 -|BtS-iU6QaHX&1wj$zkYg`{Q63JyraSw4QMY+uI(0Y58px5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip -f1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r -#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoYJq*Jt8?Abrta^#~Iw-!oZ%zqO(A&rh^vGm~ -tg_w%8wPA|WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~ -0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7Z{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|z -V{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIb -u4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1N -sg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12a -ef}sT&vZN~;BKL%dw1uayIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G> -00000000009{>OV00000;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3i -Z1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nI_ -!lFWr>>#WOli~|dBypgSgz~Xa6?rHQsbOQ%PR|1b0$(ry0$(u!0$(x$0$(!&=xRXCTqXIv;)MTcr4cfx -K`S9uy$)6q!N22#m0-mN1_A_hcxhy#f%$n -#j0HLDJN5-IKgM_J7b(p+0MPGk2Gl)y2(Rz?%u=estEf54=2x#JO! -0is)`buE3*f$s=72pp@w!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI3~&000000RR60000000QIdG -Awf_VvG%;GuzyszPjx|liD+IRs000RR-OjQU%P((>bMN?D*Qb$4|01E&B0MMWh0S5~J -0RRgK000XC0szR`2LU-S0MVci0S5#C00961000 +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 -----END RGB KIT----- diff --git a/schemata/NonInflatableAssets.rgb b/schemata/NonInflatableAssets.rgb index 3f095a87027a6139d07084b9c5cdad97395b20a9..3ac22302dd1ed3be16ff809d802795d740e3f706 100644 GIT binary patch delta 520 zcmcbdFg0m{SwicyDd*eVXMDAFzsB)y;lAfZHa{*;;dZ({$4TzW={e3b*WQ^e|Ks99 z?MpM>?bN*cS8aF1l^mPhwWqryS5La_aL@WsP5i_8XKw3GJ^Smd>y>~P>i69q@8r1P zxBM8>Lkq*sV-u%MpSV_$kzunQV*wK*!^Cw8lNT_{DgIw^(JI@0(#E)S*4{s#6;%&T z|03G?DwmyB34~@D%^F^vE698Q%-Je&ja7PS)pGh^vb7!jbpyR z&Qe^En#{m3xs+vDJ=}_cVQ|2#-7Lkrk!iAmxWZ;%j*Ws!iPOwZr8PCOp5^mw;&u?? zT(DT>=!T>HEWyqk3P!8A-?1`H_Lowa%)KS IFoMhm0D-rm8vp1Tg^6_UtY6e=fD5o zOb$+7V6#n)bFw^(cs(Ii3~<26=wha5Xj1o$`%iLW_x`KAEKXZnPaT?h>9Cl8K>76N z)+hg|s#{;{yDpIxcyFs(UeNP5JohT3PfwgGtQnAMz>{D(p;tZ)Y#j3ic9!CT)MN&R z$y-^LF-HPvFLs5^Y;3(uiUn^^ze!=AvYEv+=V;7?dG&v79|qmAyDJ?N=MFwu5*%ub@GqQ6tFfwp+Ffed4GBKRE#m;DH Oz;F>H&cXnc00IEtnx6mw diff --git a/schemata/NonInflatableAssets.rgba b/schemata/NonInflatableAssets.rgba index c1857d0..3d125cc 100644 --- a/schemata/NonInflatableAssets.rgba +++ b/schemata/NonInflatableAssets.rgba @@ -1,213 +1,216 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:$Rniyeda-KT4Rnce-aN9gKgA-xkhhVMC-y4SEO8L-KQd9DYI +Id: rgb:kit:sstMiKFc-sQtkR41-rlNSnXt-TlnJjhh-kk8iZjS-3LjfVis Version: 2 Schema: NonInflatableAsset; - id=RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana; + id=3UhXmwkss!wkBXlmYktxLMooF!B8Exbo8zYCg31RAjk#moses-monica-cello; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB20Fixed; - id=$iUnO9aO-1xhqUd6-1Jm5S5!-wM3ngby-5GVEylQ-ZTAMYDk#tornado-pioneer-bucket; + id=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: 2$SQla8Q-YZzjUiY-zzMFd!b-mBm95Os-tMpPHji-GFGp$xE#oberon-joker-bernard; - interface=$iUnO9aO-1xhqUd6-1Jm5S5!-wM3ngby-5GVEylQ-ZTAMYDk#tornado-pioneer-bucket; - schema=RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana; +Implementation: KsGa69z0-d7gBO!k-dYlkhBd-DKZu8Sv-fx1m!a8-JJP8IWM#radius-private-elastic; + interface=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; + schema=3UhXmwkss!wkBXlmYktxLMooF!B8Exbo8zYCg31RAjk#moses-monica-cello; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Type-System: sts:X6MVH82h-MpI0B4a-XkYvSlO-6ex93XI-7jqe9pk-wx8znCg#slang-love-detail -Alu-Lib: alu:q$CZ0ovt-UN9eBlc-VMn86mz-Kfd3ywu-f7$9jTB-k6A8tiY#japan-nylon-center -Check-SHA256: 4464a9c061ee8a2a5aa35dff7bf0266a6d5e50112e36a929e4fc527f1c1ea667 +Type-System: sts:!sszu938-NL3ZW9T-DBsfmGE-cQLyhXS-53N8TEP-Ju$dT8o#marvin-silence-school +Alu-Lib: alu:$6jROmtH-krFeZwW-N$PMhJc-GX9BtLo-7VTiTjq-8tfFew4#morning-shrink-igloo +Check-SHA256: 3a9eca0b66a5acaded1efb659bc1dace623ec718ec4fba50ee2c1457e868ef1a -0s#REQb$5EFh*&3Wn=_aPh8{kau)pw>ewj^T{#F%_1b`zh4BqG=$aXZ#JgYDb9y}-6Hl)`6lNs{1@>}k -p0WaU);%XeLp50-i55Pcp=$y71}Xc$1Lrp{=EDDrH7#OLSAsA5t*+o5+Hc0ga^&>OcYv#ZpPZ9ol}3X? -1Ej4f_QBBl7W$iHE8VSx`2l7C000000}N?%b9H58Q+04~Yewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyG +JowX;3qseNLLSu1oI{zd+?yZx(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr +-$vuP2+&Ta#sc9uF^R^6`2l7C000000}N?%b9H58Q+04~Y)C1bYo}%2y}8`ZgXa3asU7T -009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+ -0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2 -av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5 -Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwX -Aa7Rb7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h; -b2(QvW-T~MMK^Z=0000IPH%2WZf0y@bYWs_WkGXuWpt2@A7%gm001-qb8~4rOj=Vhb$BgjYD771SWreS -Ph(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00Ynm0N4D!;~wy+U0;_w+8Yauo__nw#aAVFI4rEw -y|f{U0RaF2(FXuqi^o(rG6hNxG{{R82@R`z!?NHxd -23Hj_e>$5opLcw)x&Ht5G{KXgJhmnY0003HCjbBepbr56|NjA?4*>xG{{R82@R`z!?NHxd23Hj_e>$5o -pLcw)x&Ht5G{KXgJhmnP00000000000099+HX$)Ie)bFeV_}QG)eQtfwS~&UnbN}+Pf&N4=R3*%B_})9 -j@KA!QQoyCZc^v$4BmJf%aN56DNtoF3}88sjUQ$J000001JDNqb8uy200000(FX-|WpZtE00000+6N42 +9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRCCVRLh3bWe9~WpV+Cj96u3I`KP|x6K-jit^gQ+!PC!a#7jT ++VjUz9FBwl009920009FX>)URWn@!zaBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?-- +0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k +|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-cWz~J009Vea$#)C1bYo~_b9HcV +YK5Ib#!obbaONSb8~4rOj=Vh +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 -bWD2$aA|O5dQuo71P5Vq -bZKL3Wg+&z_dDaLdt&GbF`L!K1nFKt0{aJ2Bz={du0O&G0 -&#r1CLJBFZ06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mGT?51y -jj4`)KRWY6OEBma9j3W?1hVa-5?E;$Xa_D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~}Y-IohWMyM%0R>}aZggn^1#M|; -Y-s}tWMyM%O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxw -Wn*bhVQy~<31ek$bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC -3S(t%bZJIqZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8 -k=}EVt)knrbu3H13mZeT05|jA;vvYupWm6 +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 +Z)S5xvr`~b_&>p|I=+ZSHXzGneTL3n +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 +0RR9100000{{R3000000WdT-0|38j$F|Rkm*bp +SUudIqf?xwGO=1p$i8JMp&h7jF7x;m>=zTw +_)OG^S@ OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d 0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+ -cz6MMc>#KQVTK~nd#>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RR9100000 -{{R3000000WdT-0|38j$F|Rkm*bpSUudIqf?x< -LRg@~V42^pIs*%m10VulFaQEyF#!T!G6Di$GXnx&Gz0=)H3b4+HUwGO=1p$i8JMp&h7jF7x;m>=zTw_)OG^S@OiTh_O-%w{ -PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -dPjz(4^OqB|1Bk8zGh-IHIi*o-10)1`WpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQW -W@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO+0K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)- -Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsI -Sy=*KT3Uc!#k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hf(#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad -3JOG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9C -R#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>s -aBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQgB!~XGKL8A`OOw%JQk?tr7FW5d8QCTzMY0k$@HN2 -12qC)K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40 -P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QBdZ)9O}XkP(gVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -h>TceV>4NmyOwH13hJd4!J}CQ~Zp&c>#RM4(exxbT6?CbPTv -EuK5`1_A|kVQh6}m-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le%!q<(40B_0X>fEt4!A4H=_ds@ZT$RJU$xQ-a`EhCyJoZT~T}~sIjxz)>1UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCe -X=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdYARr212eXGm<4c -s7@Wu#FOK{KGSirhjWHCPRxjcYXt#Zp-EU>QYw=f#{&=oUoZdyUoim!Uorv$Uo!&&Uo->)Uo`~+Up58;UpEH=UpNQ? -UpWZ_UokKW179&Q3j<#F*6MVUokWe179&U52J!Y^UK%K(4i9Ajp1M~R@C@!4#dQE#lUD;OiKi1 -Rs{hnTdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHcs&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I) -2VU0z1g0)HN)u6p7(1P&xp`{_=!|v7fH67UIT1+e1e)X5;R6r^dS!BNFavLHWibPEcW*KUbZByAWite3 -Z*_7s1ZHV=Wi7 -Ze$2%Z*_8XWo2$<2WDwzbY*33W~h9|d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo&^DBGTLOj^}IaE -^&&+tQ+KF11kKHr0Bgi&p*c*!qO^~&65vxaOFr(tQdj<(=p(?IZ$HlY1v!Pw_>N2QbbTNLfCFxIYybmu -Z)gDnb98tD17&o00|RAmbOZxsZgB+zVPk6s17c-t2LfVq2m)wy2?A_p3IcX?3j$_l3<6_v4FYp-4gzy& -4+CUuWe@{oV=)l}WMeWC17u?}69Z&pG!z7GVPk6*19N$976WB;ViyBrVQv@#Wo;P)b9G`G17&k#8vb98cVaA;*G2x4+!V{2t}OehFqa$#d@Wpq+02w`({WpZhAYbpeAY;|)h1!He*ZDA}0ZE0?G -b1eg8Z*(pNb8KOAXfFhMWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&B -XJ~Xd1a4_=WjO_7Z)|UFItg=SZD~VqY;SHm1Z-tay|%gb!BsOX>V>n0%3GO -0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&2 -0$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM3UhHna$#d@Wpqqi31VSmYg24tb7))& -b8$j)VPk7$bW&XfV_|Y-bY2E*Z)9O}XkQ3oVPk7_X=7_(0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLg -YH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU^?CLULhaYh`pydjxQ4 -aAkZ6V?uIaV{2t}Qhfz4R=egkA>Y=5wD(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td36}){9I$nc -6v6J{u?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN21_K0i -d2nSMuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!V}qb9G{Ld2nSf*z$T8ClZi8YCe|m_*?{lv>_T7 -tkE!8{87}TyWT7ZV`yP=b7gcd*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT9af~}wyndU6~Y)V&# -VN(sg%9AXn_Sa9^Yhha}76yw5kUL~>d4!J}CQ~Zp&c>#RM4(exxbT6?CbPTvEuK5`0000000000|NsC0 -00000xr2V^K(3M#+UqoAlKrJ#Ah@D~Njwy|v&?kIorn3a0~-QgK|umvLP7#xLqh^zL_`8#MMVN%Mn(c( +cz6MMc>#KQdPjz(4^OqB|1Bk8zGh-IHIi*o-10)1`WpZyY18;6+F#~jWZ!!gRXmVv` +GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO+0K|umvLP7#xLqh^zL_`8#MMVN%Mn(c( M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOE -S62dGSXcsISy=*KT3QBdZ)9O}XkWZ2k+H^V#r5V8S)(9#+NdKlp+j5KMhLSD1N;Gfl|=&z1bSt1Z!iOI -Ze=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgXzWg5iW~CYZWKwE6 -6Nf4v|L%jv~AS23ov -&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000# -000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiL -Jm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);?_c?BIMu4qFRxf<)p=@qH -Cf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo(5@daCLNZ2eXhT -bJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~BhGA0;y~>j;ruNrQ+G}B3 -D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQXuCs~&piVX+Q;&{e*II?7 -Wy=Z1DQOuZY -LozrIk|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$F{ZT5Vfz5z -=cU#uHd8spTI%43qqz#IM$tVC!zvrCdYr6!iTFAwzPoQu2~p77$P4tyWQVM>-UAy3Y;R;?b7)@yVPOGc -VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H -0eE-;d3gbPde{8E;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X*GB-yl0o(l -kJ>lqHnaUkDzF#MO+`-nfvN;j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;v -w}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aU -zM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1!e+{I`x|;BT -GZEk9?>;P#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(irjtvC?n5wJSpIAp{09w=bpP+ -&ZWGMAfo&23(WIz3J70bCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}000000018V00000007{J -s5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNf -yg->Vo@@aGb8l^B+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`S+XYD&<_B@7FdvLwh?!jlXKMox1bSt1Z!iOIZe=k8ba!tu1$1a~ -Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX19W9>K?Y@PWp-t5LI!kqWo&k3LkM(e -X>xRBWo|?WW^Z+JbY*33MF(bSW^`p`ZbtIDB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK2sj8FtG~n8 -CcwYZ>30ftrsCg%+lRr?B`GL`xImylWKs$ -pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dk -Y-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0P -IsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LLmSP0002cpbr5D3jhHC3kU!J3jqQE$l3=1IWPdx -pbr5D1ONa500000 +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 +W~CYZWKwE66Nf4v|L +%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd +000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q +3HlB(d+LiLJm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);?_c?BIMu4qF +Rxf<)p=@qHCf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo(5@d +aCLNZ2eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~BhGA0;y~>j; +ruNrQ+G}B3D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQXuCs~&piVX+ +Q;&{e*II?7Wy=Z1DQOuZYLozrIk|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$ +F{ZT5Vfz5z=cU#uHd8spTI%43qqz#IM$tVC!zvrCdYr6!iTFAwzPoQu2~p77$P4tyWQVM>-UAy3Y;R;? +b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$ +b#(!Db^&*H0eE-;d3gbPde{8E;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X +*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN;j>;{fO~I?t|ZBSH!(tpGg- +WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to! +bRZoO^d~aUzM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1! +e+{I`x|;BTGZEk9?>;P#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(irjtvC?n5wJSpIA +p{09w=bpP+&ZWGMAfo&23(WIz3J70bCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}000000018V +00000007{Js5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMO +jh9_9t?BNfyg->Vo@@aGb8l^B+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`S+ +XYD&<_B@7FdvLwh?!jlXKMox1bSt1Z!iOIZe=k8 +ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX19W9>K?Y@PWp-t5LI!kq +Wo&k3LkM(eX>xRBWo|?WW^Z+JbY*33MF(bSW^`p`ZbtIDB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK +2sj8FtG~n8CcwYZ>30ftrsCg%+lRr?B`GL +`xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd +00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMax +X#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50x +Z(4$R31H0PIsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LK^@J000012MYiJ01F5J01E*E0La=0 +0XZ-L0S5#C00961000 -----END RGB KIT----- diff --git a/schemata/UniqueDigitalAsset.rgb b/schemata/UniqueDigitalAsset.rgb index 05ed0a0a201ef57bd9a6a9355d85b02da82fa173..35c9080515004e9bd7ace3642020c9a50b192fd2 100644 GIT binary patch delta 458 zcmZoH>MEXKo|bgW=*HPn#hG#HzxFQW~b7c8d=Zsc{Xu72yrf0ta5b2(SDX-XAT9U zRow3wHrFsNWL9J#q;9euYlnmFgKtOu=C>`EdG_~x`u|Tl-re`j7p2Emonqd=W5lOz zFj=$7B1y_DY5k#@U&~kLGfv;JPcvTV=hI!x_c!~P*?*tR#&)WnVPF9V%=*pe+2WZu cPvB}4QX=GeR;I}cW(t$@xfC`F%6^ar0CV4phX4Qo delta 331 zcmeAwZY-K$o>sK1Inm~Zr`(EV{6@^I*KU`vKV#pwXOY(@pHIgY&V0mlW?Q9vki6n^ z-(21&=cFX8W6R3S!gv(#$px}M(72Fru4(#N-u*!ImM8PgaTCO0sOPTaIokyWDL?ddlu>{B+gnC2XfnJ};ZukFL28$QLKTI0f- zci)ZNT+6tSS&@m5vdQ+W9S;A$9hmtnc=1fGyF%`bPqi~x^Kusb3F_D>3|%=0P4(JGV2&KejyU3PXhRtzED9#IG2D9~Wef|tz=zf!5xgaTwtA7>rorb(ioCo~x^Kusb3F_D>3|%=0P4(JXvjR(~i7`}+dRIMW)E%}WETGtn8n`Mj)aOlxt9k`1fWGHk& +XuYsNdeesKzmFE-OS8`Og!utx0000000a+VbaY{3Xl-R~bX0k8Wpe>>rorb(ioCoP%2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#Y -uvhEM?N$K*0SaMrb7gc-cWz~J1sHJc%j{$al(PgiY{guVo`3y4;ZoR4bMl2=SA)CVSpWe6000044`Fn4 -VPj}*Wo~p-d2nTO0RRC21aoj@V*vmG00neqa&2<~00967bZ={AZgT+u0RRCCVRLh3bWe9~WpV)k|Nj63 -5N2{=V{~b6Zclb)a%OCAcNJ-Fc42I3WI=RvVPj}*Wo~p-d2nS6b#7~JZ+C7~Z);_40SI(*VQzC~Wpe)j -0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj645N2{=V{~b6Zclb)a%OCAcMfiEZbfl*VQf}m -Y;|RG5^is9Msi_ebZKvHVQf@yYh`W>b#7~JZ+C7~Z);_40SaMrb7gc-cWz~J009Vea$#K5Ib#!obbaNnOcw=Q{WOE=f -6=`mEVQgt+L3DIsV`yzK5Ib#!obbaN7JZ*E3%VPkY@ -Z*F01RBvl#Za86dbY*RDbRcwZAartJZgXa3av)(KW^!R;bZKvHAa7;+#adl-xX=iD4VQfKjb7gdpjUQ$J -0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`&?2LRXn -zT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6 -;9P9?0RR9t2mt>g2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K*05}K$ai+oNNQ%6?MXfTR|H~O& -PAZ+M?%c4|uH0003t7IAgSMAMD6vu_L?ALP&UnspJQz9j^e@~P-Jgw&-A0003H -CjbBepbr560RRD@4*>uH0003t7IAgSMAMD6vu_L?ALP&UnspJQz9j^e@~P-Jgw&+~0000000000009C2 -_Q09uQ=^#*-4aKEZozNW5i` -jUQ$J000001keWrb8uy200000(FX-|WpZtE00000HV6iEZ);_4a{vGU05}K_VRUq1V`yzV>}Y*cS+Wo`ff001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGN -HD)b1N<}w!0BQgL0U2$DDaiKPL`@Y=jhu|Vo)3+Q0$Mw;ks-!CQm`I}1p%ec`!aPC2Yyc<$zXDlf<&Mm -p^R+W^_bcVS2e5$Ue^TXSbr?`c)x>LmNtG~n8CcwYZ>30fY62ZUYgq2{$1_^U% -XH#QxX>fEnbp)|Xd=5r!N1hi)eI#@wfA|Ar>^)1W_c|c=L3C>fb7gULWo~0-0U2$DDaiKPL`@Y=jhu|V -o)3+Q0$Mw;ks-!CQm`I}2X|?7Ze??GomG>py7|rEn>a@Jg9&ldILR+=b-aAzAVr?5I2ooM3ie;tC4t_B -%h66F;@g^%yYGv6bpPSC3`}&}kA~+_2wz?%<;4X&8%0D>TgISeJ)kNFk^3Xf*%skbRR91000000 -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 -4dt|K_z&S8_xVm-pkWcojB&*wsIf| -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 +8ao+<`1M~J|HmdBRUd1sOY#QI#7OY62ZUY +gq2{$1_f|(Z*OMux+H)Wo_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>(hMvn1>teUKtq)w3djjO=VIO}{ZUla_p9aHqZo=6EBn^k>+112vb +!fdCpXogaPTR)1jIt2lx&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU10%am^tlg}6qop{{FTg974 +FaQ3n`}K{nn9PGH_DcZ;0agu`_oR6wvcum54rF6FkJew+k!36?Lqfl$`8gF)R2l2$ofB|K;aP9N=jl+d +3S_}{Un%4gB&#he^ygq)cLf1lp-EU>30f< +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 +dQuo71P5VqbZKL3Wg+&z +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 +H13hJ +d4!J}CQ~Zp&c>#RM4(exxbT6?CbPTvEuK5`1_A|kVQh6}m-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le +%!q<(40B_0X>fEt4!A4H=_ds@ZT$RJU$xQ-a`EhCyJoZT~ +T}~sIjxz)>1UrS2@UrbB_ +UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)@y +VPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!D +b^&*H0eE-;d3gbPdYARr212eXGm<4cs7@Wu#FOK{KGSirhjWHCPRxjcYXt#Zp-EU>QYw=f#{&=oUoZdyUoim!Uorv$ +Uo!&&Uo->)Uo`~+Up58;UpEH=UpNQ?UpWZ_UokKW179&Q3j<#F*6MVUokWe179&U524z8Yt#1J +p*e72xXvv~_Ej0eK<_)d?1f|rB(T3THv|Fz1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1 +YykvwZ*67ysX>`mg)dX=J|!5D^^Svj0r2RU9jkooO*jNSYm*|P)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT +0s&1fiR-lpNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720RR91000006aWAK00000qk=;7%h%D+ +p%U7S;b1RT)c9`>#Kd;Rz-U=aO9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC +2Yyc<$zXDlf<&Mmp^R+W^_bcVS2e5$Ue^EwrY<;26H$a1JDsMvd20sfjCICqGWM}19*F@#XVmjaq%az$0 +4KD-Vbij2IPrk>V1p#I<+GM-+ygbSEB1JD#cc?f7&CQhnYs6=vIZVN#w2!b7;8Qb8KJLC!SN@vlBfy$( +KhF6DIfcvkj!W@$eINsX18#L}00VPxXaNIrba(;-WpsE017&Y?1OsJmaRmcmV`~NjVr6Ux0%CIr0%&vz +0&Hdq0(Nu@0%m3m0%LLw0&{N;0&{5(17vJv5CddmF%bh~V=@v0WMeZE17u?~6a;QzV`~)yb9rtS17&n# +7XxEqZWsb(Z5ab|bz&L=WpiU20%mg@0%vm_0&;U60(EmA1#@s=V`U%&Wq4z3AqH`EZ**mIA_Qn*b7&(5 WN&P2VR9q~aAk61Wo~pO31Mw;WpZ<2Ze%73VQ_DAbaHQSXk{k|Vsc?)Yh`pyCN6MEdyk4bS?#RY+-X~F9dpJa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^HY;SHl33Fv_X+v*pZ*DsTY-MwEJOyQObzy8h @@ -111,137 +191,60 @@ ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^HY;SHl33Fv_X+v*pZ*DsTY-MwEJOyQObzy8h UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rU b8$j)VPk7$bWB?bVqs%zQ*2>#Xj}?&aYAxoV{2t}Qe6dOVRB`3UIuJ$WMOk?UkGAhV{3G2V{2dmVPOGc VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H -0eE-;d3gbPdI@7fa$#d@Wpqq?1aN6^Wqb)^LULhaYh`p&eFb!BY-DAANWqh3dQAlpCf!eDe$1KB#m!af -_4p3AwRccqN$OO=1_TFTa&&29Y-J(#zxO-isC#1Q2{D`1#sukJKmz**nMbiOl^d7FnDhj0VQpoAUd6mq -639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@ -0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aUzM`;8jz95VB2KY!nA*;6t215lmk3S~(t;6Y -7Z=sJCn}C_bsn*7Z3O|M)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-mhkl#>Xz_E$1J(MWfObsk* -Zz%0|H+(1Oi_*1p;3-1_EC<2UZQ1_oR6wvcum54rF6F -kJew+k!36?Lqfl$`8gF)R0#X2SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRo}000000096000000 -003KeERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN=oUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O& -C5asmTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?1_A_hWq5QL%am^tlg}6qop{{FTg974FaQ3n -`}K{nn9PGH_DcZ;ZDnL>Vc>_TG?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfn1?USY72b?vbnl1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eX6ANi>WNCJ3b7^91 -WdH4q11PWtiZggo)X>4q11qE$sV{&f>31nqsX-#Qka&HF; -V`Xl1X-#Qka&HI(Zeeb32?%6mV`)xdZf^<+V`Xl1X-;8oZwmx)X=85;2xMhrX;5inZw(1!Wo~q7P-$at -4h3dqZFFxB31nqsX+~vjbZ-y}V`Xl1X+~vjbZ-#^VRUqF5?)@&l23EZa>OEBma9j3W?1hVa-5?E;$Xa_ -DA7(M}`c+nSQQ?~8eK|KYU^ -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 -83S{5Vj2Twb7LCZ)|K~awG?E -WpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1 -b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajK -b7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr -2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_ -O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t} -Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -31dQXVPk7$bWD2$aA|O5dWMyoBuyE6l_RFpca|tEc|RrSB7Cz4ZX^fET;C?Pugo?TPqd@iwKZAWN>+ej~gaaD&)?_rinzLQ&_n0fy*YdyZ9}h -JM#bl0000000960|Nj60006mze&;~0k`vnNG-Q(frCuPoqJv316u7g@bjO{C`L6>T0$)Kv0$)Nx0$)Qz -0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>8 -0$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+VRL9-yeN^e#%jg&<`7w((XWj*%F+L -cX5LIzWg5iW~CYZWKwE66Nf4v|L%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I* -cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4 -MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);? -_c?BIMu4qFRxf<)p=@qHCf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur -5>LLzo(5@daCLNZ2eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~B -hGA0;y~>j;ruNrQ+G}B3D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQX -uCs~&piVX+Q;&{e*II?7Wy=Z -L#ltp_Vr{><)W@$8mW*%&FhDhLgP$wKlOrtu`}L^00000000006aWAK00000%))Y#k9jx)*&ki4jZw^) -YeOVo@@XB+#WAdR)2C|*D$SwhJOvD$-0{G -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 +Dq#SEf +1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)B +Iae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoYJq*Jt8?Abrta^#~Iw-!oZ%zqO(A&rh^vGm~tg_w%8wPA| +WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7 +bOCjB0d{r)cXt7Jcma8N0eX7Z{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|zV{2t{TX!su +v0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7s +JqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0 +nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12aef}sT&vZN~ +;BKL%dw1uayIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>0000000000 +9{>OV00000;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3iZ1@l19{2t5 +VaJV^T`{fc?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nI_!lFWr>>#WO +li~|dBypgSgz~Xa6?rHQsbOQ%PR|1b0$(ry0$(u!0$(x$0$(!&=xRXCTqXIv;)MTcr4cfxK`S9uy$)6q +!N22#m0-mN1_A_hcxhy#f%$n#j0HLDJN5- +IKgM_J7b(p+0MPGk2Gl)y2(Rz?%u=estEf54=2x#JO!0is)`buE3* +f$s=72pp@w!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI3~&000000RR60000000Q5>mLXsI@I+tTU +LlQ%sL5k02Ezz=_P=jl$Y(b$cWd#9ScPx&vU)M(f$C5$z50Bb6=QgwbMk=ru&P_#5`hlwTtrsCg%+lRr +?B`GL`xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000 +CjbBd00000_a0@Ar%XRJPMp5hAm1HCAXPK8_f^k{C(h>;^JG;71OfmAZf|a7*gwADFAe3iZ1@l19{2t5 +VaJV^T`{fc?xMUvnKPbj0R(ezZDqWF1eezR=2|E&(B`3obNIY-wd=RBvSgRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;H +a~%g`Z*FvDZgdW+t{Qo#1aqv%riM}dFTwu+9@o9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0skTg +sgaOng~Kd?Ty~ukG9B1lo)d2ky33BRSL@8}Rt5+KX>Md?cx3@rL*z(|^Y;`q0eROY=qU2QOZ-91J16!9 +Pue$g9R_r1V{2t{E8n8bYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzD?TWp-(0 +clRD;j;BmNHBOwq)*#;C068E43kd)K#h?!nIUxZV0YL!^00ICD5d#1@F(3;I1ppZVVF3*Q000UE0096100000 +0000 -----END RGB KIT----- diff --git a/src/cfa.rs b/src/cfa.rs index 6845432..96f203c 100644 --- a/src/cfa.rs +++ b/src/cfa.rs @@ -25,17 +25,15 @@ use aluvm::library::LibSite; use amplify::confinement::Confined; use ifaces::rgb25::Rgb25; +use ifaces::stl::StandardTypes; use ifaces::{IssuerWrapper, LNPBP_IDENTITY}; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, VerNo}; -use rgbstd::schema::{ - FungibleType, GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema, -}; -use rgbstd::stl::StandardTypes; +use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, VerNo}; +use rgbstd::schema::{GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema}; use rgbstd::validation::Scripts; use rgbstd::{GlobalStateType, Identity, OwnedStateSchema}; use strict_types::TypeSystem; -use crate::nia::{nia_lib, FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET}; +use crate::nia::{FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET, nia_lib}; use crate::{ ERRNO_ISSUED_MISMATCH, ERRNO_NON_EQUAL_IN_OUT, GS_ISSUED_SUPPLY, GS_TERMS, OS_ASSET, TS_TRANSFER, @@ -67,7 +65,7 @@ pub fn cfa_schema() -> Schema { GS_ISSUED_SUPPLY => GlobalStateSchema::once(types.get("RGBContract.Amount")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Fungible(FungibleType::Unsigned64Bit), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.Amount")), }, valency_types: none!(), genesis: GenesisSchema { @@ -135,6 +133,12 @@ pub fn cfa_rgb25() -> IfaceImpl { NamedVariant::with(ERRNO_ISSUED_MISMATCH, vname!("issuedMismatch")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], + state_abi: StateAbi { + reg_input: Default::default(), + reg_output: Default::default(), + calc_output: Default::default(), + calc_change: Default::default(), + }, } } diff --git a/src/nia.rs b/src/nia.rs index b40a0e0..d80f58d 100644 --- a/src/nia.rs +++ b/src/nia.rs @@ -22,24 +22,24 @@ //! Non-Inflatable Assets (NIA) schema implementing RGB20 fungible assets //! interface. -use aluvm::isa::opcodes::INSTR_PUTA; use aluvm::isa::Instr; +use aluvm::isa::opcodes::{INSTR_PUTA, INSTR_TEST}; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; use bp::dbc::Method; -use ifaces::{IssuerWrapper, Rgb20, Rgb20Wrapper, LNPBP_IDENTITY}; +use ifaces::stl::{Amount, Precision, StandardTypes}; +use ifaces::{IssuerWrapper, LNPBP_IDENTITY, Rgb20, Rgb20Wrapper}; use rgbstd::containers::ValidContract; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, TxOutpoint, VerNo}; +use rgbstd::interface::{ + IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, TxOutpoint, VerNo, +}; use rgbstd::persistence::MemContract; use rgbstd::schema::{ - FungibleType, GenesisSchema, GlobalStateSchema, Occurrences, OwnedStateSchema, Schema, - TransitionSchema, + GenesisSchema, GlobalStateSchema, Occurrences, OwnedStateSchema, Schema, TransitionSchema, }; -use rgbstd::stl::StandardTypes; use rgbstd::validation::Scripts; -use rgbstd::vm::opcodes::INSTR_PCVS; use rgbstd::vm::RgbIsa; -use rgbstd::{rgbasm, Amount, Identity, Precision}; +use rgbstd::{Identity, rgbasm}; use strict_encoding::InvalidRString; use strict_types::TypeSystem; @@ -54,7 +54,7 @@ pub(crate) fn nia_lib() -> Lib { // Set errno put a8[0],ERRNO_NON_EQUAL_IN_OUT; // Checking that the sum of pedersen commitments in inputs is equal to the sum in outputs. - pcvs OS_ASSET; + // .................. test; ret; @@ -70,13 +70,13 @@ pub(crate) fn nia_lib() -> Lib { // NB: if the global state is invalid, we will fail here and fail the validation extr s16[0],a64[0],a16[0]; // verify sum of pedersen commitments for assignments against a64[0] value - pcas OS_ASSET; + // .................. test; ret; }; Lib::assemble::>>(&code).expect("wrong non-inflatable asset script") } -pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 4 + 3 + 2; +pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 4 + 3 + 2 - 3; pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0; fn nia_schema() -> Schema { @@ -84,7 +84,7 @@ fn nia_schema() -> Schema { let alu_lib = nia_lib(); let alu_id = alu_lib.id(); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_TRANSFER_OFFSET as usize + 4], INSTR_PCVS); + assert_eq!(alu_lib.code.as_ref()[FN_NIA_TRANSFER_OFFSET as usize + 4], INSTR_TEST); assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize], INSTR_PUTA); assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 4], INSTR_PUTA); assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 8], INSTR_PUTA); @@ -102,7 +102,7 @@ fn nia_schema() -> Schema { GS_ISSUED_SUPPLY => GlobalStateSchema::once(types.get("RGBContract.Amount")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Fungible(FungibleType::Unsigned64Bit), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.Amount")), }, valency_types: none!(), genesis: GenesisSchema { @@ -165,6 +165,12 @@ fn nia_rgb20() -> IfaceImpl { NamedVariant::with(ERRNO_ISSUED_MISMATCH, vname!("issuedMismatch")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], + state_abi: StateAbi { + reg_input: Default::default(), + reg_output: Default::default(), + calc_output: Default::default(), + calc_change: Default::default(), + }, } } @@ -210,13 +216,11 @@ impl NonInflatableAsset { mod test { use std::str::FromStr; - use bp::seals::txout::{BlindSeal, CloseMethod}; use bp::Txid; - use chrono::DateTime; + use bp::seals::txout::{BlindSeal, CloseMethod}; + use ifaces::stl::*; use rgbstd::containers::{BuilderSeal, ConsignmentExt}; use rgbstd::interface::*; - use rgbstd::invoice::Precision; - use rgbstd::stl::*; use rgbstd::*; use super::*; @@ -245,7 +249,7 @@ mod test { details: None, precision: Precision::try_from(2).unwrap(), }; - let issued_supply = 999u64; + let issued_supply = Amount::from(999u64); let seal: XChain> = XChain::with( Layer1::Bitcoin, GenesisSeal::from(BlindSeal::with_blinding( @@ -256,14 +260,8 @@ mod test { 654321, )), ); - let asset_tag = AssetTag::new_deterministic( - "contract_domain", - AssignmentType::with(0), - DateTime::from_timestamp(created_at, 0).unwrap(), - 123456, - ); - let builder = ContractBuilder::deterministic( + let builder = ContractBuilder::with( Identity::default(), NonInflatableAsset::FEATURES.iface(), NonInflatableAsset::schema(), @@ -271,23 +269,13 @@ mod test { NonInflatableAsset::types(), NonInflatableAsset::scripts(), ) - .add_global_state("spec", spec) - .unwrap() - .add_global_state("terms", terms) + .serialize_global_state("spec", &spec) .unwrap() - .add_global_state("issuedSupply", Amount::from(issued_supply)) + .serialize_global_state("terms", &terms) .unwrap() - .add_asset_tag("assetOwner", asset_tag) + .serialize_global_state("issuedSupply", &issued_supply) .unwrap() - .add_fungible_state_det( - "assetOwner", - BuilderSeal::from(seal), - issued_supply, - BlindingFactor::from_str( - "a3401bcceb26201b55978ff705fecf7d8a0a03598ebeccf2a947030b91a0ff53", - ) - .unwrap(), - ) + .serialize_owned_state("assetOwner", BuilderSeal::from(seal), &issued_supply, None) .unwrap(); let contract = builder.issue_contract_det(created_at).unwrap(); diff --git a/src/uda.rs b/src/uda.rs index 91edada..0600abd 100644 --- a/src/uda.rs +++ b/src/uda.rs @@ -21,19 +21,19 @@ //! Unique digital asset (UDA) schema implementing RGB21 NFT interface. -use aluvm::isa::opcodes::{INSTR_EXTR, INSTR_PUTA}; use aluvm::isa::Instr; +use aluvm::isa::opcodes::{INSTR_EXTR, INSTR_PUTA}; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; -use ifaces::{IssuerWrapper, Rgb21, LNPBP_IDENTITY}; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, VerNo}; +use ifaces::stl::StandardTypes; +use ifaces::{IssuerWrapper, LNPBP_IDENTITY, Rgb21}; +use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, VerNo}; use rgbstd::persistence::MemContract; use rgbstd::schema::{GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema}; -use rgbstd::stl::StandardTypes; use rgbstd::validation::Scripts; -use rgbstd::vm::opcodes::INSTR_LDG; use rgbstd::vm::RgbIsa; -use rgbstd::{rgbasm, Identity, OwnedStateSchema}; +use rgbstd::vm::opcodes::INSTR_LDG; +use rgbstd::{Identity, OwnedStateSchema, rgbasm}; use strict_types::TypeSystem; use crate::{ @@ -120,7 +120,7 @@ fn uda_schema() -> Schema { GS_ATTACH => GlobalStateSchema::once(types.get("RGB21.AttachmentType")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Structured(types.get("RGBContract.Allocation")), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.NftAllocation")), }, valency_types: none!(), genesis: GenesisSchema { @@ -184,6 +184,12 @@ fn uda_rgb21() -> IfaceImpl { NamedVariant::with(ERRNO_NON_FRACTIONAL, vname!("nonFractionalToken")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("unknownToken")), }, + state_abi: StateAbi { + reg_input: Default::default(), + reg_output: Default::default(), + calc_output: Default::default(), + calc_change: Default::default(), + }, } } From 49213f2f37da8ba5718581a945b3f0eff435e9c7 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Fri, 18 Oct 2024 20:51:54 +0200 Subject: [PATCH 2/3] update schemata scripts --- Cargo.lock | 10 +- Cargo.toml | 2 +- schemata/CollectibleFungibleAsset.rgb | Bin 12839 -> 12900 bytes schemata/CollectibleFungibleAsset.rgba | 23 +-- schemata/NonInflatableAssets.rgb | Bin 12565 -> 12725 bytes schemata/NonInflatableAssets.rgba | 25 ++-- schemata/UniqueDigitalAsset.rgb | Bin 14730 -> 14735 bytes schemata/UniqueDigitalAsset.rgba | 24 ++-- src/nia.rs | 115 ++++++++++----- src/temp.rs | 133 ++++++++++++++++++ src/uda.rs | 76 ++++------ test/rgb20-example.rgb | Bin 5642 -> 5739 bytes test/rgb20-example.rgba | 187 +++++++++++++------------ 13 files changed, 376 insertions(+), 219 deletions(-) create mode 100644 src/temp.rs diff --git a/Cargo.lock b/Cargo.lock index 459b16e..db91e89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ version = 3 [[package]] name = "aluvm" version = "0.11.0-beta.9" -source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#7adf61dbe4a3b39834bc3d665800024d66658e9c" +source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#9a99445dcb5a6dac98f6650ff0015062cea010ce" dependencies = [ "amplify", "ascii-armor", @@ -648,7 +648,7 @@ dependencies = [ [[package]] name = "rgb-core" version = "0.11.0-beta.9" -source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/fungible-nonconf#78ee97123665b5da312336f52d56485153af1673" +source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/asm#d6bba7a7660b4b616aec8f7dfccc152a4a5a01b3" dependencies = [ "aluvm", "amplify", @@ -804,9 +804,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.129" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbcf9b78a125ee667ae19388837dd12294b858d101fdd393cb9d5501ef09eb2" +checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" dependencies = [ "itoa", "memchr", @@ -900,7 +900,7 @@ dependencies = [ [[package]] name = "strict_types" version = "2.7.1" -source = "git+https://github.com/strict-types/strict-types?branch=develop#729a4f86d25dfcea15ed15bbeb1e027473401c58" +source = "git+https://github.com/strict-types/strict-types?branch=develop#9a2041a9b1988b17608564725d47b39f442e5062" dependencies = [ "amplify", "ascii-armor", diff --git a/Cargo.toml b/Cargo.toml index f6ad1b0..e8f9c1e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,7 @@ bp-dbc = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-seals = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-invoice = { git = "https://github.com/BP-WG/bp-std", branch = "develop" } -rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "feat/fungible-nonconf" } +rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "feat/asm" } rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces", branch = "feat/fungible-nonconf" } diff --git a/schemata/CollectibleFungibleAsset.rgb b/schemata/CollectibleFungibleAsset.rgb index 69378a6583af42d84aa5227a149e457382338131..2ca613b60d2ab92b6b99101ad3236d5b9c1d04a0 100644 GIT binary patch delta 245 zcmZ3U@+4)$3zquO422B=;tCbcn>b&rv2=g^S5Bnj=lpXUfAK_|RE@jD%ErLJD4-4` z7VtAN{QnQ77#IoZV}Juj#+alh+Rf{Vt3Ew>^FQrg|EAmRkBjCudS1`qzsjntV7x(V za}Mh?og`BRZbk-%gS;%H5)XJ~jphMgeso zv4EeE;s1Xq#lT2N9|IgPGH&YM?wV(5{CXPmDwm|D_W8LnNvk;K=mRmV)&;+=Xmp=5=Yl+T7onDsqJ)(GyQzUOj0 _|udNLf4!^9@NX6Lz#s60cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H @@ -34,9 +34,9 @@ h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK0JsYPcK`4_D#7Gw X~6yKc4{fCnyi?lPLTMGtH94V>wGO=0RRBG3jly##k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hT! 0K5wTKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEy`tmL}G%6pKV-Xs|Yp5!4l^CIy+R$a>OVp2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R +xC;OP0RXuR0RRC2ybAyT0RX)V0RRC20iX{70RR600aa)quuvBuctf%Y=&U(M>-`=Sc=?~svHA>H$t7OW +1qJ{B0T3qu00E#60RaF10iX{70RR600aa)quuvBuctf%Y=&U(M>-`=Sc=?~svHA>H$t7OW1poj500000 +000010bF9_D}%0cdh+D#|7PBgvfGE_a-D%m*JuybBOo)dD#R!$2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R dOm&@CXkIEW&i*H000Kj2L*Ixa&2<}0002m2MlR*b9H58Q+04~Y00000xeEktVQpmq 0002I3kPInbYW?1a{vGU0KE$daB^j1X>)0BZU6uP00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p07 0000000ICHZf|ZyadlyAL2Yk!Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_ @@ -214,7 +214,8 @@ Eg#>2x#JO!0is)`buE3*f$s=72pp@w!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI3~&000000RR60 000000QIdGAwf_VvG%;GuzyszPjx|liD+IRs000RR-OjQU%P((>bMN?D*Qb$4?01E&B -009RJ0096C2mk;J0RjNX+6MtSFaQAu1ONa500000 +0eN`=dV2e*SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRs000RR-OjQU%P((>bMN?D*Qb$5H01E*C +0Kp9e3sC|9IWw;T3xNax1poj53jhWH8F_I52Md7&00jU500kic01E&D02zUC0S5;F+6Mptpbr57KdW~? +GO^3};mOgvH7UGe8wQe4n%)7JK7QsxT5dF(00 -----END RGB KIT----- diff --git a/schemata/NonInflatableAssets.rgb b/schemata/NonInflatableAssets.rgb index 3ac22302dd1ed3be16ff809d802795d740e3f706..000583329730a13636b0db581c1eb6311362e816 100644 GIT binary patch delta 345 zcmbQ5v^9CdKW2r{422B=;tCbcn>b&rv2=g^S5Bnj=lpXUfAK_|RE@jDI$4fI!iSI| z1~_13?CAQby5HRGJD<+m&UQn`n>$Y4`0~l`(6qghc?X*(>n_~f#1f@b&&0sY?C2B9 z;S}KF>FydF!W`u8R2&`p3hQ7k8U#?n#nnn-nnX9^(wVx@S&N Ic_yH5)XzR7Yd59%wrX_h7>YUOLe^4VV_TsY{Q*&(~ljY_nmM9%dMh0ePN1sp* wrvMjEch}$$<{)<`X$EefIgISw42%ri91INHj7$tCZm~038UO`ZfHELk0NS8Do&W#< diff --git a/schemata/NonInflatableAssets.rgba b/schemata/NonInflatableAssets.rgba index 3d125cc..e956ea2 100644 --- a/schemata/NonInflatableAssets.rgba +++ b/schemata/NonInflatableAssets.rgba @@ -1,19 +1,20 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:sstMiKFc-sQtkR41-rlNSnXt-TlnJjhh-kk8iZjS-3LjfVis +Id: rgb:kit:DwsdhjXJ-5dkQHm7-ESuqDHr-i5tWzS4-hQ6UzWS-hHJkhUE Version: 2 Schema: NonInflatableAsset; - id=3UhXmwkss!wkBXlmYktxLMooF!B8Exbo8zYCg31RAjk#moses-monica-cello; + id=iIr5Jb83RvcOLO2JhzFB2bjJ2PTyTsKWvRluwYOTLaE#numeric-omega-ground; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB20Fixed; id=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: KsGa69z0-d7gBO!k-dYlkhBd-DKZu8Sv-fx1m!a8-JJP8IWM#radius-private-elastic; +Implementation: LeLkKJ3x-6Ch9GOz-x4ur5!6-b7MK5rS-MaLkrRe-X8H6YKI#next-coral-battery; interface=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; - schema=3UhXmwkss!wkBXlmYktxLMooF!B8Exbo8zYCg31RAjk#moses-monica-cello; + schema=iIr5Jb83RvcOLO2JhzFB2bjJ2PTyTsKWvRluwYOTLaE#numeric-omega-ground; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Type-System: sts:!sszu938-NL3ZW9T-DBsfmGE-cQLyhXS-53N8TEP-Ju$dT8o#marvin-silence-school -Alu-Lib: alu:$6jROmtH-krFeZwW-N$PMhJc-GX9BtLo-7VTiTjq-8tfFew4#morning-shrink-igloo -Check-SHA256: 3a9eca0b66a5acaded1efb659bc1dace623ec718ec4fba50ee2c1457e868ef1a +Alu-Lib: alu:P6t3PzKx-y$jhydG-7NSm8Yh-sGklCa3-gGYPn7m-QlpuNJs#service-user-flash +Alu-Lib: alu:VWggsFAX-IHhDsgn-orDlH6$-0eFHj5n-86x!gxY-ySVe0gU#bless-prime-zero +Check-SHA256: 3fad329df8695b4678aa814a123017338bbff4701cc1082f34f43756d83aa217 0s#REQb$5EFh*&3Wn=_aPh8{kau)pw>ewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyG JowX;3qseNLLSu1oI{zd+?yZx(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr @@ -30,9 +31,9 @@ b$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0RR915>9V!Np5CrVRT_)Y-K@n b7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~ cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~ h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK00E#60EmoOWn((= -JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@4*>xG{{R91sL?uWN0PB# -X9bP?^C2a{m-HJ;qqS3sIO_7(#d{700003HCjbBepbr56|NjA?4*>xG{{R91sL?uWN0PB#X9bP?^C2a{ -m-HJ;qqS3sIO_7(#d{6_0000000000009BrNLQN)EVJw+1$ky-OK~j9C>P*-6Bg+6HUfivQ35$St*e#w +JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@4*>xG{{R71Xdtjq7a({; +vI*#{IY;aL9u#=_pU$!R3|Pq}UeW~y0003HCjbBepbr56|NjA?4*>xG{{R71Xdtjq7a({;vI*#{IY;aL +9u#=_pU$!R3|Pq}UeW~s0000000000009AriuonKH%9jkEbWPhF+th5$=LMrPQsSG8E(OYlP#e-t*e#w Mw{=edRVI0LUFp$L5DJzLTqh)jNnb(YE|@*jUQ$J000001JDNqb8uy200000(FX-|WpZtE00000+6N42 b8~fNWK(r;aBO)100001pbrXRb8}^MPj_x*asU7T0003HCkS+MVQzC~WpV%j0000201s|&Zbfl*VQfKd Z*^{Ta{vGU009nZb8~fNWKC&vZDDj{XaE2J05kw|b7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{ @@ -210,7 +211,9 @@ Wo&k3LkM(eX>xRBWo|?WW^Z+JbY*33MF(bSW^`p`ZbtIDB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK `xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd 00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMax X#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50x -Z(4$R31H0PIsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LK^@J000012MYiJ01F5J01E*E0La=0 -0XZ-L0S5#C00961000 +Z(4$R31H0PIsUw_;fcDKIn~;D0RjL613^qx2trUqNk>IfR0C2+LP7uwQ2+o7g8~4+7l0%I|G@$TIW(XF +Ab?;2Bmw^e0018c3sC?73yS~%z#o7l0sp}R1UWRI0U(HA0VDzc0{{RY2MPcH000000000000096K}=N$ +LQq6WM@3Uq15!sqH2@0%006-a1Pf6D068F$%rAed;bvf96i^2e z3-}osfDl44FcQ+o00)eWm(QPF_-2Zx^p{OrGN&a8h5bGGR^tHkEFr<$C9Hn!RcoJa ze$E2gCwIPkY;1x7G!6z aG*sZ`<^&2QG718v7Vw*KaIpa03IhOHe?fx) delta 230 zcmeA#?ke7p%vx_IR#Nme_xy-Y_@6-Q(((&%TZ@wr!w(1n~238&;K5c`| z&shVEgB=*S85tOkEZ}Eg5(hK6IT#pDm~k)y-N0a}z`)JPz;JW{zo4Zeqa>pvP?U** cTacN-(olh$o0UP5F_DoMsE~^V=u8*@07qUw;s5{u diff --git a/schemata/UniqueDigitalAsset.rgba b/schemata/UniqueDigitalAsset.rgba index a4c29f5..1ce4312 100644 --- a/schemata/UniqueDigitalAsset.rgba +++ b/schemata/UniqueDigitalAsset.rgba @@ -1,19 +1,19 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:Teg5X4ru-4k1slWX-ev3ME3G-CSmuNEe-Oswr7MJ-aH8oTyc +Id: rgb:kit:teE3x7vZ-v$9YKUp-HaF0BTC-g3lzVY1-9FVaT5e-4YYlCg4 Version: 2 Schema: UniqueDigitalAsset; - id=PeD2xU6fhqcc5v3vZ$$yLEuL3zeiZ116ygOwDDIOKzA#margo-flex-fiber; + id=08$NoeyUKRv0srRplmISVv3J7SjAA5oSEdt0Tod6reU#arcade-hobby-igloo; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB21Unique; id=kymCOGIa-NmKvwpn-1d6tvAZ-e4vilfE-vnlugPf-s0w2P$c#speed-color-cipher; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: FrdOYWg1-z8e$dWH-vW7jyts-gzoENCb-kTAHkwI-vynzh3U#broken-bicycle-ladder; +Implementation: yCk$9blq-neYaWQA-PPzZqJk-2V6p70r-3UW6rmi-I8Ez978#pencil-java-patrol; interface=kymCOGIa-NmKvwpn-1d6tvAZ-e4vilfE-vnlugPf-s0w2P$c#speed-color-cipher; - schema=PeD2xU6fhqcc5v3vZ$$yLEuL3zeiZ116ygOwDDIOKzA#margo-flex-fiber; + schema=08$NoeyUKRv0srRplmISVv3J7SjAA5oSEdt0Tod6reU#arcade-hobby-igloo; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Type-System: sts:kpZfoOkQ-QBnpq7x-EJj84tu-U$4kkhC-rBTh4YL-iXu5rnw#atomic-enigma-image -Alu-Lib: alu:NhZxdclE-0421s28-MHR$kz$-SadRGjv-iUElfKp-6DiE1KU#metal-coral-charter -Check-SHA256: df9b4111649e843ae7dd123d32703457b082fa2c6a0ae33f39d008854996ba0f +Alu-Lib: alu:sEUjL73M-75sHyss-EEUjrYd-PS6Csi4-AJj5gxb-JDfT9nw#kevin-century-granite +Check-SHA256: 4f09257f2e62698994517b1a1cb755b08a5ad6970c24608bf73ab91f1fea69ec 0s#RFQb$5EF;#A9adl+`R!>~x^Kusb3F_D>3|%=0P4(JXvjR(~i7`}+dRIMW)E%}WETGtn8n`Mj)aOlxt9k`1fWGHk& @@ -36,9 +36,9 @@ Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cL4wZ01{PhX>oOBL}_PfbYW~kb8}^Mkc}T^ {J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP3007Yk09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;f c;H-Y_W=L^HV6R!A_u9FkY$C#EP-5hof9%0*j%0yZwUs_xvd)#O5wx83d4mPM?OS9OnJ+XaDjnON-w(qGw%t$^)8bYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzD?TWp-(0 clRD;j;BmNHBOwq)*#;C068E43kd)K#h?!nIUxZV0YL!^00ICD5d#1@F(3;I1ppZVVF3*Q000UE0096100000 -0000 +9SqA<&i^g*B+1lO!K~_XGCIw-T+RZwy_cg^0RRI7K}=N$LQq6WM@3Uq15!sqK>!N@000Yt0sz4R1OgWT +3jqKC3wZ4>kx21ONd5 +0000000000 -----END RGB KIT----- diff --git a/src/nia.rs b/src/nia.rs index d80f58d..ad0e1d8 100644 --- a/src/nia.rs +++ b/src/nia.rs @@ -22,8 +22,6 @@ //! Non-Inflatable Assets (NIA) schema implementing RGB20 fungible assets //! interface. -use aluvm::isa::Instr; -use aluvm::isa::opcodes::{INSTR_PUTA, INSTR_TEST}; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; use bp::dbc::Method; @@ -38,7 +36,6 @@ use rgbstd::schema::{ GenesisSchema, GlobalStateSchema, Occurrences, OwnedStateSchema, Schema, TransitionSchema, }; use rgbstd::validation::Scripts; -use rgbstd::vm::RgbIsa; use rgbstd::{Identity, rgbasm}; use strict_encoding::InvalidRString; use strict_types::TypeSystem; @@ -48,33 +45,78 @@ use crate::{ OS_ASSET, TS_TRANSFER, }; -pub(crate) fn nia_lib() -> Lib { - let code = rgbasm! { - // SUBROUTINE Transfer validation - // Set errno - put a8[0],ERRNO_NON_EQUAL_IN_OUT; - // Checking that the sum of pedersen commitments in inputs is equal to the sum in outputs. - // .................. - test; - ret; +pub(crate) fn util_lib() -> Lib { + rgbasm! { + // SUBROUTINE Compute sum of inputs + // Input: a16[16] - state to compute + // Output: a64[16] - sum + // Uses: a16[0] - counter, a16[10] - zero constant, a64[0] - extracted amounts + // Fails: on sum overflow or invalid state (should not happen) + // St0: unmodified if not fails + put a16[10],0; // zero constant + put a64[16],0; // init sum with 0 + cn.i a16[0],a16[16]; // count state + dec a16[0]; // counter = len - 1 + /**/ld.i s16[0],a16[16],a16[0]; // load state + extr s16[4],a64[0],a16[10]; // extract 64 bits + test; // fail if state is absent or invalid + add.uc a64[16],a64[0]; // add amount to the sum + test; // fail on sum overflow + dec a16[0]; // dec counter + jif 0/**/; // repeat for all assignments + inv st0; // reset status flag + ret; // finish + // SUBROUTINE Compute sum of outputs + // Input: a16[16] - state to compute + // Output: a64[17] - sum + // Uses: a16[0] - counter, a16[10] - zero constant, a64[0] - extracted amounts + // Fails: on sum overflow or invalid state (should not happen) + // St0: unmodified if not fails + put a16[10],0; // zero constant + put a64[17],0; // init sum with 0 + cn.o a16[0],a16[16]; // count state + dec a16[0]; // counter = len - 1 + /**/ld.o s16[0],a16[16],a16[0]; // load state + extr s16[4],a64[0],a16[10]; // extract 64 bits + test; // fail if state is absent or invalid + add.uc a64[17],a64[0]; // add amount to the sum + test; // fail on sum overflow + dec a16[0]; // dec counter + jif 0/**/; // repeat for all assignments + inv st0; // reset status flag + ret; // finish + } +} + +pub(crate) fn nia_lib() -> Lib { + let util = util_lib().id(); + const ISSUED: u16 = GS_ISSUED_SUPPLY.to_u16(); + const DISTRIBUTED: u16 = OS_ASSET.to_u16(); + rgbasm! { // SUBROUTINE Genesis validation - // Checking pedersen commitments against reported amount of issued assets present in the - // global state. - put a8[0],ERRNO_ISSUED_MISMATCH; - put a8[1],0; - put a16[0],0; - // Read global state into s16[0] - ldg GS_ISSUED_SUPPLY,a8[1],s16[0]; - // Extract 64 bits from the beginning of s16[0] into a64[1] - // NB: if the global state is invalid, we will fail here and fail the validation - extr s16[0],a64[0],a16[0]; - // verify sum of pedersen commitments for assignments against a64[0] value - // .................. - test; - ret; - }; - Lib::assemble::>>(&code).expect("wrong non-inflatable asset script") + put a16[0],ISSUED; // global state to load + ld.g s16[3],a16[16],a16[0]; // load reported issued amount + put a16[10],0; // zero offset + extr s16[3],a64[15],a16[10]; // a64[15] <- GS_ISSUED_SUPPLY + test; // fail if state is absent or invalid + + put a16[16],DISTRIBUTED; // owned state to load + call 0x00 @ util; // a64[17] <- sum of OS_ASSET allocations + put a8[0],ERRNO_ISSUED_MISMATCH; // set errno to return if we fail + eq.n a64[15],a64[17]; // check if ISSUED =? sum(DISTRIBUTED) + test; // fail if not + ret; // complete + + // SUBROUTINE Transfer validation + put a16[16],DISTRIBUTED; // owned state to load + call 0x00 @ util; // a64[16] <- sum of inputs + call 0x21 @ util; // a64[17] <- sum of outputs + put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set errno to return if we fail + eq.n a64[16],a64[17]; // check if sum(inputs) =? sum(outputs) + test; // fail if not + ret; // complete + } } pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 4 + 3 + 2 - 3; pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0; @@ -84,10 +126,6 @@ fn nia_schema() -> Schema { let alu_lib = nia_lib(); let alu_id = alu_lib.id(); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_TRANSFER_OFFSET as usize + 4], INSTR_TEST); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize], INSTR_PUTA); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 4], INSTR_PUTA); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 8], INSTR_PUTA); Schema { ffv: zero!(), @@ -187,8 +225,9 @@ impl IssuerWrapper for NonInflatableAsset { fn types() -> TypeSystem { StandardTypes::with(Self::FEATURES.stl()).type_system() } fn scripts() -> Scripts { + let util = util_lib(); let lib = nia_lib(); - Confined::from_checked(bmap! { lib.id() => lib }) + Confined::from_checked(bmap! { lib.id() => lib, util.id() => util }) } } @@ -221,10 +260,16 @@ mod test { use ifaces::stl::*; use rgbstd::containers::{BuilderSeal, ConsignmentExt}; use rgbstd::interface::*; - use rgbstd::*; + use rgbstd::{disassemble, *}; use super::*; + #[test] + fn lib_check() { + let util = util_lib(); + println!("{}", disassemble(&util)); + } + #[test] fn iimpl_check() { let iface = NonInflatableAsset::FEATURES.iface(); @@ -282,7 +327,7 @@ mod test { assert_eq!( contract.contract_id().to_string(), - s!("rgb:pOIzGFyQ-mA!yQq2-QH8vB5!-5fAplY!-x2lW!vz-JHDbYPg") + s!("rgb:vGAyeGF9-bPAAV8T-w1V46jM-Iz7TW7K-QzZBzcf-RMuzznw") ); } } diff --git a/src/temp.rs b/src/temp.rs new file mode 100644 index 0000000..678f25c --- /dev/null +++ b/src/temp.rs @@ -0,0 +1,133 @@ +fn main() { + // 2. Prepare transition + let mut main_inputs = Vec::::new(); + let mut sum_inputs = Amount::ZERO; + let mut sum_alt = Amount::ZERO; + let mut data_inputs = vec![]; + let mut data_main = true; + let lookup_state = + if let InvoiceState::Data(NonFungible::RGB21(allocation)) = &invoice.owned_state { + Some(DataState::from(*allocation)) + } else { + None + }; + + for (output, list) in + self.contract_assignments_for(contract_id, prev_outputs.iter().copied())? + { + if output.method() == method { + main_inputs.push(output) + } else { + alt_inputs.push(output) + }; + for (opout, mut state) in list { + if output.method() == method { + main_builder = main_builder.add_input(opout, state.clone())?; + } else { + alt_builder = alt_builder.add_input(opout, state.clone())?; + } + if opout.ty != assignment_id { + let seal = output_for_assignment(contract_id, opout.ty)?; + state.update_blinding(pedersen_blinder(contract_id, assignment_id)); + if output.method() == method { + main_builder = main_builder.add_owned_state_raw(opout.ty, seal, state)?; + } else { + alt_builder = alt_builder.add_owned_state_raw(opout.ty, seal, state)?; + } + } else if let PersistedState::Amount(value, _, _) = state { + sum_inputs += value; + if output.method() != method { + sum_alt += value; + } + } else if let PersistedState::Data(value, _) = state { + if lookup_state.as_ref() == Some(&value) && output.method() != method { + data_main = false; + } + data_inputs.push(value); + } + } + } + // Add payments to beneficiary and change + match invoice.owned_state.clone() { + InvoiceState::Amount(amt) => { + // Pay beneficiary + if sum_inputs < amt { + return Err(ComposeError::InsufficientState.into()); + } + + let sum_main = sum_inputs - sum_alt; + let (paid_main, paid_alt) = + if sum_main < amt { (sum_main, amt - sum_main) } else { (amt, Amount::ZERO) }; + let blinding_beneficiary = pedersen_blinder(contract_id, assignment_id); + + if paid_main > Amount::ZERO { + main_builder = main_builder.add_fungible_state_raw( + assignment_id, + beneficiary, + paid_main, + blinding_beneficiary, + )?; + } + if paid_alt > Amount::ZERO { + alt_builder = alt_builder.add_fungible_state_raw( + assignment_id, + beneficiary, + paid_alt, + blinding_beneficiary, + )?; + } + + let blinding_change = pedersen_blinder(contract_id, assignment_id); + let change_seal = output_for_assignment(contract_id, assignment_id)?; + + // Pay change + if sum_main > paid_main { + main_builder = main_builder.add_fungible_state_raw( + assignment_id, + change_seal, + sum_main - paid_main, + blinding_change, + )?; + } + if sum_alt > paid_alt { + alt_builder = alt_builder.add_fungible_state_raw( + assignment_id, + change_seal, + sum_alt - paid_alt, + blinding_change, + )?; + } + } + InvoiceState::Data(data) => match data { + NonFungible::RGB21(allocation) => { + let lookup_state = DataState::from(allocation); + if !data_inputs.into_iter().any(|x| x == lookup_state) { + return Err(ComposeError::InsufficientState.into()); + } + + let seal = seal_blinder(contract_id, assignment_id); + if data_main { + main_builder = main_builder.add_data_raw( + assignment_id, + beneficiary, + allocation, + seal, + )?; + } else { + alt_builder = alt_builder.add_data_raw( + assignment_id, + beneficiary, + allocation, + seal, + )?; + } + } + }, + _ => { + todo!( + "only PersistedState::Amount and PersistedState::Allocation are currently \ + supported" + ) + } + } +} \ No newline at end of file diff --git a/src/uda.rs b/src/uda.rs index 0600abd..b1d07fd 100644 --- a/src/uda.rs +++ b/src/uda.rs @@ -21,18 +21,13 @@ //! Unique digital asset (UDA) schema implementing RGB21 NFT interface. -use aluvm::isa::Instr; -use aluvm::isa::opcodes::{INSTR_EXTR, INSTR_PUTA}; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; use ifaces::stl::StandardTypes; use ifaces::{IssuerWrapper, LNPBP_IDENTITY, Rgb21}; use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, VerNo}; -use rgbstd::persistence::MemContract; use rgbstd::schema::{GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema}; use rgbstd::validation::Scripts; -use rgbstd::vm::RgbIsa; -use rgbstd::vm::opcodes::INSTR_LDG; use rgbstd::{Identity, OwnedStateSchema, rgbasm}; use strict_types::TypeSystem; @@ -46,52 +41,37 @@ pub const FN_TRANSFER_OFFSET: u16 = 0; pub const FN_SHARED_OFFSET: u16 = FN_GENESIS_OFFSET + 4 + 4 + 4; fn uda_lib() -> Lib { - let code = rgbasm! { + const TOKEN: u16 = OS_ASSET.to_u16(); + const ISSUE: u16 = GS_TOKENS.to_u16(); + + rgbasm! { // SUBROUTINE 2: Transfer validation - // Put 0 to a16[0] - put a16[0],0; - // Read previous state into s16[0] - ldp OS_ASSET,a16[0],s16[0]; - // jump into SUBROUTINE 3 to reuse the code - jmp FN_SHARED_OFFSET; + put a16[0],0; // zero constant + put a16[16],TOKEN; // owned state type + ld.i s16[0],a16[16],a16[0]; // load spent token + jmp FN_SHARED_OFFSET; // jump into SUBROUTINE 3 to reuse the code // SUBROUTINE 1: Genesis validation - // Set offset to read state from strings - put a16[0],0x00; - // Set which state index to read - put a8[1],0x00; - // Read global state into s16[0] - ldg GS_TOKENS,a8[1],s16[0]; + put a16[0],0; // zero constant + put a16[15],ISSUE; // global state type + ld.g s16[0],a16[15],a16[0]; // load token declaration // SUBROUTINE 3: Shared code - // Set errno - put a8[0],ERRNO_NON_EQUAL_IN_OUT; - // Extract 128 bits from the beginning of s16[0] into a32[0] - extr s16[0],a32[0],a16[0]; - // Set which state index to read - put a16[1],0x00; - // Read owned state into s16[1] - lds OS_ASSET,a16[1],s16[1]; - // Extract 128 bits from the beginning of s16[1] into a32[1] - extr s16[1],a32[1],a16[0]; - // Check that token indexes match - eq.n a32[0],a32[1]; - // Fail if they don't - test; - - // Set errno - put a8[0],ERRNO_NON_FRACTIONAL; - // Put offset for the data into a16[2] - put a16[2],4; - // Extract 128 bits starting from the fifth byte of s16[1] into a64[0] - extr s16[1],a64[0],a16[2]; - // Check that owned fraction == 1 + extr s16[0],a32[0],a16[0]; // 32 bits from the beginning of s16[0] to a32[0] + put a16[16],TOKEN; // owned state type + ld.o s16[1],a16[1],a16[0]; // read allocation into s16[1] + extr s16[1],a32[1],a16[0]; // 32 bits from the beginning of s16[0] to a32[1] + put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set failure code + eq.n a32[0],a32[1]; // check that token indexes match + test; // fail if they don't + + put a8[0],ERRNO_NON_FRACTIONAL; // set failure code + put a16[2],4; // offset for the token fractions into a16[2] + extr s16[1],a64[0],a16[2]; // 64 bit from the fifth byte of s16[1] to a64[0] put a64[1],1; - eq.n a64[0],a64[1]; - // Fail if not - test; - }; - Lib::assemble::>>(&code).expect("wrong unique digital asset script") + eq.n a64[0],a64[1]; // check that owned fraction == 1 + test; // fail if not + } } fn uda_schema() -> Schema { @@ -99,12 +79,6 @@ fn uda_schema() -> Schema { let alu_lib = uda_lib(); let alu_id = alu_lib.id(); - let code = alu_lib.code.as_ref(); - assert_eq!(code[FN_GENESIS_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_GENESIS_OFFSET as usize + 8], INSTR_LDG); - assert_eq!(code[FN_TRANSFER_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_SHARED_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_SHARED_OFFSET as usize + 4], INSTR_EXTR); Schema { ffv: zero!(), diff --git a/test/rgb20-example.rgb b/test/rgb20-example.rgb index ffc286a1ea0e7613383bf13b9bcf6722ff7c1e1b..89f9616acf63ba0c8528cd42613b37b80cc42f03 100644 GIT binary patch delta 583 zcmeCud9C9fwW=zesflQVR zJo5$9K?->piigCXylc%{wl{^f3bm1H+3l4{?z4 z$&!rMC!b_gv}a&ozQE4Nz{qeBOx^;Mj0^Y~8UFugVEn)0qE)v0q>XXuti69eE2$Hj%(mu9@%sd@LW+U|%eIX1g%Pj^SIo^;#cp7o)c_=oe) z+}53X_Sae0D*-Rm@4G$T$#KDN`7x%47KWY2CNWQEWSo48QGtW@KVG0gN(B1E3%aPzItH0Av%bKmY&$ delta 537 zcmaE@)1^}%}4GhT`H(tHiwgyvp4C(qcvi#s&QSFD|V=@OB}?M>FjcAFed$YXlxy`})yK zt%r7+-aVTStzlrkz|P1Z#K02b8XUqEl3HA%kXSr1MuC};fq7z`THp@rKvAZ7D}p%~ zUX*!=11+f|00>z)amRHgMvloF808dKf0%ix`)$DeIJR(6qk5~^M)S*SHthWO|C`Cd z$qQ_@sc}wz&nT`yNY!LDCX0mY#Z|U4!v5>+MAB5*S-%x!&D+FOdd*hd$=Nhgp;OFm z?!s)wA8eYx_cK2?*MD~Cf48Y_Qb2f<{_nNx9?0IxKX$n2$(PgR4Xf+t&zYPw)veiy zdC6MMZwD{@68kkfMf>jB$@`e5Gcs*1XI{$aKqx-`sj6FF>$@(I6?ku}T3*oeH$3+$ zq)$(rDy$ihYQU3VIXQ-P=jOR=%lUN`8MuKVdSL-SBRe+(BLg=F0|PfB6T^vH?2MKM O3>QJ-EDS&iFaQ9~DBr&T diff --git a/test/rgb20-example.rgba b/test/rgb20-example.rgba index 40126fc..57d8410 100644 --- a/test/rgb20-example.rgba +++ b/test/rgb20-example.rgba @@ -1,100 +1,101 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:wMbFwx2l-Pm15MRg-qftkJhj-QyXWdTq-2Qgh$Jn-wCR$$fI#drama-volume-parody +Id: rgb:csg:gFkJXDJr-PQB3TJe-PEvnT1p-TbvhuWT-zsUg9x3-KevlrZI#bambino-sponsor-jessica Version: 2 Type: contract -Contract: rgb:oeC0oRIm-8CzpSBD-qBPnW$T-qdsuMEO-Sgoet4i-PP!fAJE -Schema: rgb:sch:RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana +Contract: rgb:ccZD4bc2-eJZy3kA-aSHPpRN-bzFWt56-JSV0sfj-d2AGgko +Schema: rgb:sch:3UhXmwkss!wkBXlmYktxLMooF!B8Exbo8zYCg31RAjk#moses-monica-cello Interface: RGB20Fixed -Check-SHA256: e913606632047498ba3e7da93152655cf807fc2039fffade97d1f75688a38177 +Check-SHA256: 262b30253860c639229aef4e5bd0f7b6a35ecaed129c213d60bad6a8ef045917 -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%0D>TgISeJ)kNFk^3Xf*%skbRRcZ* -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 +0}N?%b9H58Q+04~Y)URWn@!z +aBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0?0SI(* +VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMr +b7gc-cWz~J009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9 +byGuAHZ5UMXmdGNHD)b1N<}w!0o_Pfn+Ytl>?8$wW@1ZmEXpVs;CvGn=<_xLgMCo~IXbPYmGwrO@2h%P +s@Fnsy3s+0GM7SZZGDX3P2Fl$^pK4oW&i*H000Bf2Ly9)Wn%yU007Yk1$1R{ZF2ws007zt3~6(7b!B8z +b#QQOc>n+a00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICHZf|ZyadlyAL2Yk!Zgg`1 +000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJO +QD}2HS2boWI7&q~cK`qY000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000001KZ01EbB)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHi +JR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000=vly4G~&lnD!c-+QY#hXVj|NgD} +^^LKZ%!4TQO92G|Rt=W-q*e1Zg(dl;zh@Se)i)R+C +0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4jZw^) +YeOKHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi +%!_9htpQ3t>=3qD6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7W0ssVVZ*FDSKfd5E +4dt|K_z&S8_xVm-pkWcojB&*wsIf| +mpsv;oy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1 +b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYx +XmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~vo +Zf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)Aa<{~<8ep?nYaleMc%` +0D|O6*W?8OW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@IL#ltp_Vr{><)W@$8mW*%&FhDhLgP$w +KlOrtu`}L^1_A_hd2nU14c`8MAg$P-$_ObTP^+;#QB8K)l1SfF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEVxS00eGtZe`d% +zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i!&yFl +s%&4!NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~Xkl|` +BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6 +bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByAWite3 +Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ceWpQ<3 +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 +?>;Wd>h +=Ype%b?2720000000000CjbBd00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d +0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+ +cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LK^@J +000012MYiJ01F5J01E*E0La=00XZ-L0S5#C0096100000 -----END RGB CONSIGNMENT----- From 133b3b787f0b175a8d53b5221cdcc7dcc93f1c1b Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 19 Oct 2024 02:46:44 +0200 Subject: [PATCH 3/3] debug --- Cargo.lock | 18 +- Cargo.toml | 14 +- examples/rgb20.rs | 7 +- examples/rgb21.rs | 11 +- examples/rgb25.rs | 13 +- schemata/CollectibleFungibleAsset.rgb | Bin 12900 -> 13020 bytes schemata/CollectibleFungibleAsset.rgba | 215 ++++++++++---------- schemata/NonInflatableAssets.rgb | Bin 12725 -> 12746 bytes schemata/NonInflatableAssets.rgba | 217 ++++++++++---------- schemata/UniqueDigitalAsset.rgb | Bin 14735 -> 14750 bytes schemata/UniqueDigitalAsset.rgba | 270 ++++++++++++------------- src/cfa.rs | 14 +- src/main.rs | 24 ++- src/nia.rs | 50 +++-- src/uda.rs | 29 +-- test/rgb20-example.rgb | Bin 5739 -> 5909 bytes test/rgb20-example.rgba | 191 ++++++++--------- test/rgb21-example.rgb | Bin 8285 -> 8430 bytes test/rgb21-example.rgba | 266 ++++++++++++------------ test/rgb25-example.rgb | Bin 5548 -> 5816 bytes test/rgb25-example.rgba | 186 ++++++++--------- 21 files changed, 790 insertions(+), 735 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db91e89..b514653 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ version = 3 [[package]] name = "aluvm" version = "0.11.0-beta.9" -source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#9a99445dcb5a6dac98f6650ff0015062cea010ce" +source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#bedd86c160bab2398c07901728fd06b6bab13ddc" dependencies = [ "amplify", "ascii-armor", @@ -307,9 +307,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.1.30" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "shlex", ] @@ -648,7 +648,7 @@ dependencies = [ [[package]] name = "rgb-core" version = "0.11.0-beta.9" -source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/asm#d6bba7a7660b4b616aec8f7dfccc152a4a5a01b3" +source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/asm#ba885579fae1c1c4966c9bb4f68fa7b48db5da91" dependencies = [ "aluvm", "amplify", @@ -668,7 +668,7 @@ dependencies = [ [[package]] name = "rgb-interfaces" version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=feat/fungible-nonconf#844736271f2bdc7789278f4b4517ab9cbdb8aae7" +source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=feat/fungible-nonconf#f44cb123bb48a6e0a79f1a23d7e1dd6c038a66d0" dependencies = [ "aluvm", "amplify", @@ -688,7 +688,7 @@ dependencies = [ [[package]] name = "rgb-invoice" version = "0.11.0-beta.9" -source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#50a76079864c35fc8229bb861f17ad8c6e45f566" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#355b9516c3c3bfe69208d33ecea7fed0acb20d17" dependencies = [ "amplify", "baid64", @@ -724,7 +724,7 @@ dependencies = [ [[package]] name = "rgb-std" version = "0.11.0-beta.9" -source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#50a76079864c35fc8229bb861f17ad8c6e45f566" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#355b9516c3c3bfe69208d33ecea7fed0acb20d17" dependencies = [ "aluvm", "amplify", @@ -804,9 +804,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.130" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610f75ff4a8e3cb29b85da56eabdd1bff5b06739059a4b8e2967fef32e5d9944" +checksum = "67d42a0bd4ac281beff598909bb56a86acaf979b84483e1c79c10dcaf98f8cf3" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index e8f9c1e..a21f630 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,19 @@ readme = "README.md" [[bin]] name = "rgb-schemata" -required-features = ["fs"] +required-features = ["fs", "log"] + +[[example]] +name = "rgb20" +required-features = ["fs", "log"] + +[[example]] +name = "rgb21" +required-features = ["fs", "log"] + +[[example]] +name = "rgb25" +required-features = ["fs", "log"] [lib] name = "schemata" diff --git a/examples/rgb20.rs b/examples/rgb20.rs index 4292e0c..3a55daf 100644 --- a/examples/rgb20.rs +++ b/examples/rgb20.rs @@ -33,12 +33,11 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); let allocations = contract.allocations(&FilterIncludeAll); - eprintln!("\nThe issued contract data:"); - eprintln!("{}", serde_json::to_string(&contract.spec()).unwrap()); + eprintln!("{}", contract.spec()); for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount {state}, owner {seal}, witness {witness}"); + eprintln!("state {state}, owner {seal}, witness {witness}"); } - eprintln!("totalSupply={}", contract.total_supply()); + eprintln!("totalSupply {}", contract.total_supply()); } diff --git a/examples/rgb21.rs b/examples/rgb21.rs index 4aa7fc8..a319f04 100644 --- a/examples/rgb21.rs +++ b/examples/rgb21.rs @@ -8,8 +8,9 @@ use ifaces::rgb21::{EmbeddedMedia, NftAllocation, TokenData, TokenIndex}; use ifaces::stl::*; use ifaces::{IssuerWrapper, Rgb21}; use rgbstd::containers::{ConsignmentExt, FileContent, Kit}; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::Stock; -use rgbstd::{GenesisSeal, XChain}; +use rgbstd::{GenesisSeal, XChain, XWitnessId}; use schemata::UniqueDigitalAsset; use schemata::dumb::NoResolver; use sha2::{Digest, Sha256}; @@ -77,5 +78,11 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); - eprintln!("{}", serde_json::to_string(&contract.spec()).unwrap()); + let allocations = contract.allocations(&FilterIncludeAll); + + eprintln!("{}", contract.spec()); + for Output { seal, state, witness, .. } in allocations { + let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); + eprintln!("state ({state}), owner {seal}, witness {witness}"); + } } diff --git a/examples/rgb25.rs b/examples/rgb25.rs index ba08159..eb301a5 100644 --- a/examples/rgb25.rs +++ b/examples/rgb25.rs @@ -41,12 +41,17 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); let allocations = contract.allocations(&FilterIncludeAll); - eprintln!("\nThe issued contract data:"); - eprintln!("{}", contract.name()); + eprint!("name {}, details ", contract.name()); + if let Some(details) = contract.details() { + eprint!("{details}"); + } else { + eprint!("~"); + } + eprintln!(", precision {}", contract.precision()); for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount {state}, owner {seal}, witness {witness}"); + eprintln!("state {state}, owner {seal}, witness {witness}"); } - eprintln!("totalSupply={}", contract.total_issued_supply()); + eprintln!("totalSupply {}", contract.total_issued_supply()); } diff --git a/schemata/CollectibleFungibleAsset.rgb b/schemata/CollectibleFungibleAsset.rgb index 2ca613b60d2ab92b6b99101ad3236d5b9c1d04a0..39f23402f6e7b9f6f8d31da870eb5904210fab60 100644 GIT binary patch delta 594 zcmaEoawm1e3zqtayLT#fX7srGr5A5?&HCjba{XBCj^J(2wOChayok4zVPIfj6i^2e z3-}os{{M$k42*>IsQ@)X03&0PP1%ci4q5j+joKz;Ur&F#*4vU{D#sbeH@weSz2-8+ z6fMqSWhBBSgzRKspg;vL!o!ga43lFx6gEq+$BAsdA)U*pk;ksLn^Q?hy zt|f;V$8qm-nwb+|vufgLGcGnJ){^|})V#@>G76j=X+??2C7JnolXplfO#aWTusKz> zQ>31WftlISCzQh}z{S(uH8_Mh$lb|>fjf|afxDTB;edF93gdsqgF-BpCJPu98WI?R zTxLE7d3LahZU%+}@(>l`ES9D~6&(;2nm`p?(2xdGn3h;Fa5FM6Byd+UF&sS03^LBr zcs(O`BMSqo63}u6HU`PcLPmD50MH1CAOnMBBT$eXC~%7%8260X^4@F03ofhwU;qHb&rv2=g^S5Bnj=lpXUfAK_|RE@jD%ErLJD4-4` z7VtAN{QnQ77#IoZV}Juj#+alh+Rf{Vt3Ew>^FQrg|EAmRkBjCudS1`qzsjntV7x(V zaSkhEJzT@UFnAHxMlvu=j^R+)EWsWpqLetz>{MD)BkNf{&n9jMAZAJ!WW=Ee;4yOPYPj}bg z5au9vCsPJ)Mh1q1ye!;-ObnLB>lwKlSr}LuCQmdHF;`?@;AUWAkZdeuWM^l%#m>M0 q40cBQ)#dg^8&Cguc=F;K=mRmV)&;+=Xmp=5=Yl+T7onDsqJ)(GyQzUOj0 _|udNLf4!^9@NX6Lz#s60cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H @@ -34,15 +35,15 @@ h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK0JsYPcK`4_D#7Gw X~6yKc4{fCnyi?lPLTMGtH94V>wGO=0RRBG3jly##k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hT! 0K5wTKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SE-`=Sc=?~svHA>H$t7OW -1qJ{B0T3qu00E#60RaF10iX{70RR600aa)quuvBuctf%Y=&U(M>-`=Sc=?~svHA>H$t7OW1poj500000 -000010bF9_D}%0cdh+D#|7PBgvfGE_a-D%m*JuybBOo)dD#R!$2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R +xC;OP0RXuR0RRC2ybAyT0RX)V0RRC20iX{70RR600pYv3A&F>=M^0yRwMA=M^0yRwMAOVp2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R dOm&@CXkIEW&i*H000Kj2L*Ixa&2<}0002m2MlR*b9H58Q+04~Y00000xeEktVQpmq 0002I3kPInbYW?1a{vGU0KE$daB^j1X>)0BZU6uP00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p07 0000000ICHZf|ZyadlyAL2Yk!Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_ -Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`qY000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000003D4009|og(=AP+C)tiPK}(5 +Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cj3FaA&F>=M^0yRwMA=M^0yRwMA%Xz y^d7vHg1k5H90tF4%ya@=dSJu9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0 000002eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2nrdH*HiKem1Z9kJM|+OG^S@OiTh_O-%w{ PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzl WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -VTK~nd#>}f`J9i4oQLwKoSX{ -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 -GO^3};mOgvH7UGe8wQe4n%)7JK7QsxT5dF(00 +VTK~nd#>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RR9100000{{R3000000 +WdT-0|38j$F|Rkm*bpSUudIqf?x3%){`Y*0L^k;^s;1_A|i +Z);_4WdT-0vn1>teUKtq)w3djjO=VIO}{ZUj+e*%scV6@fU9pCi53oip!$I +FLkNNm8RePe-orvEEUUmX?SL`Yr0-g|LLOUrS2@UrbB_UrkK{UrtT}Ur$d0Ur8 +UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdU{8Or4LWFq2&q#r@H{&I!mq*@dJpi +12bb5xjCg#Yy%_&dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiUrS2@UrbB_UrkK{UrtT} +Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_s#Ud6mq639W2L|vh3p}>j> +;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@ +UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGc +VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H +0eE-;d3gbPdV?Fw3^IlY^ZCsdV>}k9=A|mb9C@Y?LcX1bOUd-0_X9NoUqL|vUqV6xUqeFzUqnO#UqwX% +Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8C +UshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdWeizWn((=JC(Q18jXtb+QHlu3zu?H ++0@$e$59-PgarXyp-EU>L0b>G|!rXoSC?n5wJSpIAp{09w=bpP+ +&ZWGMAfo&23(WIz3XnTwaCwA}8zxgKAOx^Y=h@ +bX=9gy~#}iVEJ)s5j^%uEnQ9{n2s|9Fa^ps+HG#`XS4%91bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+J +Gz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f- +0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I +0$*8K0$*BM25fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{ +0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU}`j*9JnaDl?KLJE%?_&cu`BzdqA(v4?YpHBQWkf@=i< +T%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_MomG>py7|rEn>a@Jg9&ldILR+=b-aAzAVr?5I2ooM +1pz(R>>T+7c9tx2rI+rmmDt^st6pqa^<)IvL!Qac4*{MO%;vF$%%pd^L}N?(ELd@=ehf0VuEF1Glu{~_ +8OH+<0$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7KHujTH+>EdJQM&>E4z +*R)+SA#T-nt8weyrO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#00gEkI7$;ygcv)Wrnz}*2I!1+ +#(*(7-8m6R>I9nO*Wm*Y1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bG +Woc(MgX19W9>VFqPvWp-t5Vg__~Wo&k3V+eF;X>xRBWo~2$W^Z+JbY*33Wd~+yW^`p`Zf2-_ +#(89ClqRXQ4Sv!J@Q} +uoB=?GfO`1zEW5In&>0Inr}bO`2{(J%lM8<@pOG41Aqf=b!-3wb8lz?19NnE0t01qcmo4vZ*&9$Wo~f= +17Txp1_NScYzG2ja|i-xbO{1%W(op!bPEDzW()#jat#7=Zw>-;X%7QrY-JDwWMeTA17u?|5(8voGZO=3 +V>A>5Zee3<6$5j5ZWaS&bYd3+V_|L>0%dI(19Np^8Utl>V;cfya~uL^a~%S5a~=Y9a~}nBaA9L*AOvN2 +V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$ +bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLH +WibPEcW*KUbZByAWite3Z*_7s1ZHV=WiCg +Z)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+& +Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjD +RsvsFR{~#HSOQ;JSpr{LS_*SetH31dQXVPk7$bW(i +Wo&=2aMO?W(hOSV*asELF;pE|QoG*E(^8!{=H0e(APJWR0UWS(jugTGj1K^e=F-$2o*6gc%@3Ir#hQL8 +;m&)YyRi-4{(vB@*r3V?DIrj+u{=>tcHU8F!O3w2qJC#)UJ{2Xl2|ba`-PFWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM2V-bqa&u*LFWB;W +7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfMvVyIk7MbQO{A@~BhGA0;y~>j;ruNrQ+G}B3D;5Te2#`Bu +aCwA}8zxgKUrS2@UrbB_ +UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)_@ +D3P(oYQ^>D5Lu%jciN~UGoeFU(?$rh3j_QCeU(K63Iuv(a&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^H +X?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IllZJ{AQ&Y{bW*VIunOL=kX9N3%>t4!A4H=_ds@ZTm=Co +tM$1O6c@UqIn-Z!6?La^OW}HT7+ugYHG0&^E$N28kIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUm3 +Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000#5#SRxw8U!bIFfg*5RxK +^~=*jK)}Ad3JH<(%oY0=TGqa +6l5KfYJkC@$v(fAa&d%-e7wYRYmbj8(R#s`$Q_Oip_^hvoaWGEUH-@Ecs#X-@uLL+1m;+OEcST6gIVN= +cD;^N?KWkFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&jRjKPz&##IG7- +47St%2#c>Z5R>jkTb_MKDq#SEVo@@XB+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`SsKFP7nY +4g;Flf93~qr!XIkUWl1p1!rpm5CnQ7Zbb)XX=Zd~ +Wo}0Dx+H)Wo_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>u9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5Vlzr +Fd~pb0000000000|Nj6000000^{p2nM9k9NV(jNn@cR^G9g}K+!Jx@Lzn5}xgo%8-2uQvo7b@t4MVjY> +G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE0000004D$d000000QnaP1l_I#dHB_@bgMhk0_N&La@nc5HwP6O ++keCip#vHLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL5 +0d#Z$b#(!Db^&*H0eE-;d3gbPdi$wZavD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmVbMN?D*Qb$5L01E*C01J5n0Kv@z3sC?7 +IWw;T3xNax1tI_d3jhWH8F_I52Md7&00jU500kld01E&B02zUC0S5;F007ztpbr57YadIjS8&rO`3XoP +G-}KqH*A8JoeC}jD~=rQuD8eN00 -----END RGB KIT----- diff --git a/schemata/NonInflatableAssets.rgb b/schemata/NonInflatableAssets.rgb index 000583329730a13636b0db581c1eb6311362e816..e8abd72fade22a5c41826a3befd63318d82cdaa5 100644 GIT binary patch delta 511 zcmdm*d@6avKW4>;yLT#fX7srGr5A5?&HCjba{XBCj^J(2wOChayok4zVVEq>BJM*- zl?nq4FftndVSE1Ob%(Zvi1nOFQ=hHp`|^3({Yi0wUUSM~mlnUBHMxo9Mm-?|85n4) zf*tC+%@0^xL^dCj%4O8ZW7pfw6CPw$y8Fa=*1$K{lEaMSxc52D%n7hrHSx3=7aJ36 zNq%-}-ehrU1x}8%qQvBq%>2B`%cK-G8_Vn!adu(g4rE~9Zf0UQAl{(D_@D8h5R0YB z0!D>~1V$j2nU6u99jv08f#HBWM1?qur72KF2SkPDWJ5!xG)o32taCn6&$3-mTky`~?F5Z6mqk delta 493 zcmX?=yft~lKW4?y422B=;tCbcn>b&rv2=g^S5Bnj=lpXUfAK_|RE@jD$~IY^Mcjvw zDh4=UWbEkrsk-0X?K_{&+s<}F$D2D&-uUv#@6fcpl6eQ4C+jYp+{ALD9?E^S#L|4>T-Ldji-M+Jb7`qspg&}X|_oLv+gm@u&aCK6qRQ( Gn*jiVIdyRW diff --git a/schemata/NonInflatableAssets.rgba b/schemata/NonInflatableAssets.rgba index e956ea2..019a5c3 100644 --- a/schemata/NonInflatableAssets.rgba +++ b/schemata/NonInflatableAssets.rgba @@ -1,20 +1,20 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:DwsdhjXJ-5dkQHm7-ESuqDHr-i5tWzS4-hQ6UzWS-hHJkhUE +Id: rgb:kit:zME$NvMw-qn9HLZQ-wnp4nH7-aS4Krra-cYvNVjz-d3Ik4ZA Version: 2 Schema: NonInflatableAsset; - id=iIr5Jb83RvcOLO2JhzFB2bjJ2PTyTsKWvRluwYOTLaE#numeric-omega-ground; + id=M$wG5!zriCs4FDuckpXmrw7085bfkl5RSpx2XaVz7Zo#water-blitz-lava; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB20Fixed; id=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: LeLkKJ3x-6Ch9GOz-x4ur5!6-b7MK5rS-MaLkrRe-X8H6YKI#next-coral-battery; +Implementation: szshf43t-4TmwNlZ-cm$SBdi-EQdzLqC-DmG!v8h-Qmo$D9Y#brigade-eric-transit; interface=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; - schema=iIr5Jb83RvcOLO2JhzFB2bjJ2PTyTsKWvRluwYOTLaE#numeric-omega-ground; + schema=M$wG5!zriCs4FDuckpXmrw7085bfkl5RSpx2XaVz7Zo#water-blitz-lava; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Type-System: sts:!sszu938-NL3ZW9T-DBsfmGE-cQLyhXS-53N8TEP-Ju$dT8o#marvin-silence-school -Alu-Lib: alu:P6t3PzKx-y$jhydG-7NSm8Yh-sGklCa3-gGYPn7m-QlpuNJs#service-user-flash -Alu-Lib: alu:VWggsFAX-IHhDsgn-orDlH6$-0eFHj5n-86x!gxY-ySVe0gU#bless-prime-zero -Check-SHA256: 3fad329df8695b4678aa814a123017338bbff4701cc1082f34f43756d83aa217 +Type-System: sts:hQ3sGk1s-$D8bwJB-5bkN6SH-hnmsRlT-NVfos6W-lYK!RrM#kermit-infant-nova +Alu-Lib: alu:ax9LrFdw-0yf5CUg-jNGrMHj-dsgpedC-i4CK44c-7q63x!g#cycle-bruce-bison +Alu-Lib: alu:4bu5IYlo-jEdOZ3O-1RWr6SB-TXxn24U-7bnKgWq-KOhfPRw#zoom-crimson-jargon +Check-SHA256: 13ec8063d882f1667994d6482b84988f718fdea6ade8aa85e70a34d32f3116cf 0s#REQb$5EFh*&3Wn=_aPh8{kau)pw>ewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyG JowX;3qseNLLSu1oI{zd+?yZx(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr @@ -31,15 +31,15 @@ b$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0RR915>9V!Np5CrVRT_)Y-K@n b7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~ cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~ h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK00E#60EmoOWn((= -JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@4*>xG{{R71Xdtjq7a({; -vI*#{IY;aL9u#=_pU$!R3|Pq}UeW~y0003HCjbBepbr56|NjA?4*>xG{{R71Xdtjq7a({;vI*#{IY;aL -9u#=_pU$!R3|Pq}UeW~s0000000000009AriuonKH%9jkEbWPhF+th5$=LMrPQsSG8E(OYlP#e-t*e#w +JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@4*>xG{{R8uySX8WXpBcr +XLGehYWheN*T#LgQ?}xG{{R8uySX8WXpBcrXLGehYWheN +*T#LgQ?}xe5j6g!-fmFBMw^z)YAl3r0toOWHMbM2Zst*e#w Mw{=edRVI0LUFp$L5DJzLTqh)jNnb(YE|@*jUQ$J000001JDNqb8uy200000(FX-|WpZtE00000+6N42 b8~fNWK(r;aBO)100001pbrXRb8}^MPj_x*asU7T0003HCkS+MVQzC~WpV%j0000201s|&Zbfl*VQfKd Z*^{Ta{vGU009nZb8~fNWKC&vZDDj{XaE2J05kw|b7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{ -Q$tfWEn!h;b2(QvW-T~MMK^Z<0000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000SpWb58Eu6r$oASqO%+a!oQ%Dm4~>ZeT05|jA;vvYupWm6 +Q$tfWEn!h;b2(QvW-T~MMK^chySX8WXpBcrXLGehYWheN*T#LgQ?}=M^0yR +wMA= +M^0yRwMAZeT05|jA;vvYupWm6 0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*97KRe=PQRzk^xih<3e>RP8oyjwdxaIA{*p){f_{ ?g$*Kzr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU{_e0000000960|Nj60000NGkSBB1e&`i(d1FY^ )J0gqR@5msD^SqOKF=c%C58wJ8Iadg@(Pt^9}_$EBT6NY{!7T+2`8i*MgX0$)Kv0$)Nx 0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);6 0$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&% YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU|1oBGG%U@MZ$v=XJ?|;InIP -y66cFfOYp#JM2r7_Dur<1!iGvb7cSobaHiN0b!Ol%4ULr1*k#ka7f`9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D -0RR9100000{{R3000000WdT-0|38j$F|Rkm*bp -SUudIqf?xwGO=1p$i8JMp&h7jF7x;m>=zTw -_)OG^S@ -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 -W~CYZWKwE66Nf4v|L -%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd -000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q -3HlB(d+LiLJm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);?_c?BIMu4qF -Rxf<)p=@qHCf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo(5@d -aCLNZ2eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~BhGA0;y~>j; -ruNrQ+G}B3D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQXuCs~&piVX+ -Q;&{e*II?7Wy=Z1DQOuZYLozrIk|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$ -F{ZT5Vfz5z=cU#uHd8spTI%43qqz#IM$tVC!zvrCdYr6!iTFAwzPoQu2~p77$P4tyWQVM>-UAy3Y;R;? -b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$ -b#(!Db^&*H0eE-;d3gbPde{8E;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X -*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN;j>;{fO~I?t|ZBSH!(tpGg- -WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to! -bRZoO^d~aUzM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1! -e+{I`x|;BTGZEk9?>;P#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(irjtvC?n5wJSpIA -p{09w=bpP+&ZWGMAfo&23(WIz3J70bCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}000000018V -00000007{Js5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMO -jh9_9t?BNfyg->Vo@@aGb8l^B+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`S+ -XYD&<_B@7FdvLwh?!jlXKMox1bSt1Z!iOIZe=k8 -ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX19W9>K?Y@PWp-t5LI!kq -Wo&k3LkM(eX>xRBWo|?WW^Z+JbY*33MF(bSW^`p`ZbtIDB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK -2sj8FtG~n8CcwYZ>30ftrsCg%+lRr?B`GL -`xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd -00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMax -X#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50x -Z(4$R31H0PIsUw_;fcDKIn~;D0RjL613^qx2trUqNk>IfR0C2+LP7uwQ2+o7g8~4+7l0%I|G@$TIW(XF -Ab?;2Bmw^e0018c3sC?73yS~%z#o7l0sp}R1UWRI0U(HA0VDzc0{{RY2MPcH000000000000096K}=N$ -LQq6WM@3Uq15!sqH2@0%006-a1Pf6D068$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@ +SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRr~000000093000000003nHRzu`SjPv&tGy!?nCFm&f +z)So=%sVIc1y9;Ha~%Z%rO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#W-{7jyY;+0$@L;dFH?7@ +I0Vhjl>lqRXQ4Sv!J@Q}07Pb3aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9->y0X3z7pM0$(ry0$(u!0$(x$ +0$(!&0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7V>B>*k#ka7f`}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+ +NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#H +SOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHy +b8`W7bOCjB0d{r)cXt7Jcma8N0eX6RM~0;jPqm@t3InIR0Ny%Ft`YGAh^_-OV-~qNrBQ4HBm{b8a&IsL +Z*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IRalnK>}YwLIPhy +Ljqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7 +QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LT7X`~yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJp}>8 +I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(xqT91|EKCMyQK|uB0+zx9 +Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1 +Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-Lu +XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6a8_Ntbh6wZd +%@$)k7O3W>D#ILkrVv8DorX)v^q}_xH3DBjK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL= +N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{L +S_W)yWMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHy +b8`W7bOCjB0d{r)cXt7Jcma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;SY72b +?vbOG^S@OiTh_ +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 +1_TClX=7_;a$9#Sj2Bz={du +0O&G0&#r1CLJBFZ06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mG +T?51yjj4`)KRWY6<)W@$8mW*%&FhDhLgP$wKlOrt +u`}L^+TgISeJ)kNFk^3Xf +*%skbRR9100000003QGV000000N{tHG?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfdm2o1a5C`W!OKy +;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67V9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;d(oW9<1Oi_$00Lhz0Rmq#0s>z%1L$f%&0HnY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=aO9W+B1a@zA +bRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb?)B7>#7L*0S_;h;d%}On%IBl2XUt`AB7ZbS%XZ*_8XWo2$f2WDwzbY*33M)JBOfEJ#8I!OHhFfAY7 +fVtxlj{%}vrgbfS&w=jH<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca +=a#qt000000000d000000002_7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`Bki +WC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N +0eX7-saSFvJu_4WvuML_T7r2AV9eq<{=Bc@iMp6M)!KLg0ssR8K}=N$LQq6WM@3Uq15!sqL;wp>000Yv +0sz1lfFuF`0l^XkIW(XFAb?;2Bmw^e4genq3sC?73yS~%z#o7l0sjHP7X&#qpaCF=U;!in{{txi9|sBm +00000000000000313^qx2trUqNk>IfR0C2+LOB2n0RR9Cc>(~z%>xTj0022NuK^2z1ONph000XB1^^j( +aRCPlfdl{r00005A^-pj0000PfpGx`2LJ#7+6SNy0Rd|tORQIL(x4Dgt8pg%U1XWG8XH}_>3C~>Ke1pA?_tnvTr>aWR&$FIhqZIJDL33HywE{;;6$S&Jo1Fu6K3~2(nVsz<5iTXnf}Bw z^w-z9z3f-TCH8e34_T`$uluu?CF;6(=IqoSo`M$_6J>XF%cf|QIA-kK;81nB?dAS{ zv4`H9&wXk6$(Y8#Fu8$IbmFE}3W?LqPNg+9vYzGhY~pqh;#{y;<>-c^{Vc)G912FO zxZiEAVO-2iP}O96R+ahkgD?MOJe#R56Vt)Bs4L1V= zqkuY)SisN70E7^Vfsv3t1~_13ynO!b!Z%YirN3<2k~u9&DD3aaw;BhSX9)@3E>ZPs zuUh+bvSyP-l9XA}`a?6nmaoodoW5h9X1vhPr@NT%Z}u^>|2~4>*h0QhWdqkB8#RV(V~x^Kusb3F_D>3|%=0P4(JXvjR(~i7`}+dRIMW)E%}WETGtn8n`Mj)aOlxt9k`1fWGHk& -XuYsNdeesKzmFE-OS8`Og!utx0000000a+VbaY{3Xl-R~bX0k8Wpe>>rorb(ioCo~x^Kusb3F_D>3|%=0P4(J>rorb(ioCoP%2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#Y -uvhEM?N$K*0SaMrb7gc-cWz~J0b!Ol%4ULr1Ze?--0RR60 0}y6%VPkY@Z*EU^WpZY0Z+8`GZgyd8X=FikbYWv?ZDnqBRC#b^40Ud6Zf|#PRBvl#ZUG2%a$#Ze?--0RR613So0|Wpqz>Ze?--0RR601Q2F&VPkY@Z*EU^WpZY0Z+8xEZ*E0#bzy8) @@ -35,16 +35,16 @@ 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 -H13hJ -d4!J}CQ~Zp&c>#RM4(exxbT6?CbPTvEuK5`1_A|kVQh6}m-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le -%!q<(40B_0X>fEt4!A4H=_ds@ZT$RJU$xQ-a`EhCyJoZT~ -T}~sIjxz)>1UrS2@UrbB_ -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 -Dq#SEf -1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)B -Iae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoYJq*Jt8?Abrta^#~Iw-!oZ%zqO(A&rh^vGm~tg_w%8wPA| -WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7 -bOCjB0d{r)cXt7Jcma8N0eX7Z{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|zV{2t{TX!su -v0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7s -JqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0 -nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12aef}sT&vZN~ -;BKL%dw1uayIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>0000000000 -9{>OV00000;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3iZ1@l19{2t5 -VaJV^T`{fc?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nI_!lFWr>>#WO -li~|dBypgSgz~Xa6?rHQsbOQ%PR|1b0$(ry0$(u!0$(x$0$(!&=xRXCTqXIv;)MTcr4cfxK`S9uy$)6q -!N22#m0-mN1_A_hcxhy#f%$n#j0HLDJN5- -IKgM_J7b(p+0MPGk2Gl)y2(Rz?%u=estEf54=2x#JO!0is)`buE3* -f$s=72pp@w!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI3~&000000RR60000000Q5>mLXsI@I+tTU -LlQ%sL5k02Ezz=_P=jl$Y(b$cWd#9ScPx&vU)M(f$C5$z50Bb6=QgwbMk=ru&P_#5`hlwTtrsCg%+lRr -?B`GL`xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000 -CjbBd00000_a0@Ar%XRJPMp5hAm1HCAXPK8_f^k{C(h>;^JG;71OfmAZf|a7*gwADFAe3iZ1@l19{2t5 -VaJV^T`{fc?xMUvnKPbj0R(ezZDqWF1eezR=2|E&(B`3obNIY-wd=RBvSgRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;H -a~%g`Z*FvDZgdW+t{Qo#1aqv%riM}dFTwu+9@o9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0skTg -sgaOng~Kd?Ty~ukG9B1lo)d2ky33BRSL@8}Rt5+KX>Md?cx3@rL*z(|^Y;`q0eROY=qU2QOZ-91J16!9 -Pue$g9R_r1V{2t{E8n8bYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzD?TWp-(0 -clRD;j;BmNHBOwq)*#;!N@000Yt0sz4R1OgWT -3jqKC3wZ4>kx21ONd5 -0000000000 +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 +6aWAK00000%))Y#k9jx)*&ki4jZw^)YeOV +o@@XB+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`SsKFP7nY4g;Flf93~qr!XIkUWl1p +1!rpm5CnQ7Zbb)XX=Zd~Wo}0Dx+H)Wo_#t<{Qxj6 +AK!qv;}MSmqFbhQEq%{{?+7>u9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|Nj60 +00000^h!oTk{Mq*mt#Id5<{IqiqB>((XyRTgKMj7L7^;V1p!-kERL~X*GB-yl0o(lkJ>lqHnaUkDzF#M +O+`-nfvWYb7a>H<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Ve +f}@Ca=a#qt000000000d000000002@9%YWFOg}YFoW9l|-yK9CRWr2rRnLhh&gT{LWK{$N0ssVVZ*FDS +Kfd5E4dt|K_z&S8_xmm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdikkAnO21_Q|vw^7?JgkgL(n*=$IX= +eC$m)1U+k$A_W0}Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGjysaSFvJu_4WvuML_T7r2AV9eq< +{=Bc@iMp6M)!KLg{~`yek&tDD!z_VZcAXP49oSr+6K@T=%Z{*D>&)#|1_%XdZe(S6WdT-0oEfg=7gNu)i}m2V`Y*VQFl0MYn(@h5^MUvO8NyVMYp&P~kr{`@Vw( +r~naH;^JG;71#M+yX<^`ps5F){hncU$ +ijom%IzoLb(>^Yz>$s@6fa*%L>wyblbaY{3Xl-R~baTv)=eb|?NQ$9$(>OX7sslQ%bEkMULcZCvo*Z;M +ne7O2Wpib6c4c#Jbj+U}49ir`|1I+*$<$TBtm<+yI?cCS&H}f+m!nky00RR-OjQU%P((>bMN?D*Qb$5T +01E*C01J5n0Kvfn0vP}c0RR9Cfdl}-0t7iA01JTx0Ko?YIUxZH0000P0YL!^00saH5eEP{F(3;I2>=-Z +VF3{U001@!pbrWJ00961000000000 -----END RGB KIT----- diff --git a/src/cfa.rs b/src/cfa.rs index 96f203c..ba645ba 100644 --- a/src/cfa.rs +++ b/src/cfa.rs @@ -33,7 +33,7 @@ use rgbstd::validation::Scripts; use rgbstd::{GlobalStateType, Identity, OwnedStateSchema}; use strict_types::TypeSystem; -use crate::nia::{FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET, nia_lib}; +use crate::nia::{FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET, nia_lib, util_lib}; use crate::{ ERRNO_ISSUED_MISMATCH, ERRNO_NON_EQUAL_IN_OUT, GS_ISSUED_SUPPLY, GS_TERMS, OS_ASSET, TS_TRANSFER, @@ -105,6 +105,7 @@ pub fn cfa_schema() -> Schema { pub fn cfa_rgb25() -> IfaceImpl { let schema = cfa_schema(); + let lib_id = nia_lib().id(); IfaceImpl { version: VerNo::V1, @@ -134,10 +135,10 @@ pub fn cfa_rgb25() -> IfaceImpl { NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], state_abi: StateAbi { - reg_input: Default::default(), - reg_output: Default::default(), - calc_output: Default::default(), - calc_change: Default::default(), + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), }, } } @@ -155,8 +156,9 @@ impl IssuerWrapper for CollectibleFungibleAsset { fn types() -> TypeSystem { StandardTypes::with(Rgb25::NONE.stl()).type_system() } fn scripts() -> Scripts { + let util = util_lib(); let lib = nia_lib(); - Confined::from_checked(bmap! { lib.id() => lib }) + Confined::from_checked(bmap! { lib.id() => lib, util.id() => util }) } } diff --git a/src/main.rs b/src/main.rs index 7168b74..70be28a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,14 +41,14 @@ fn main() -> io::Result<()> { fn nia() -> io::Result<()> { let schema = NonInflatableAsset::schema(); let iimpl = NonInflatableAsset::issue_impl(); - let lib = NonInflatableAsset::scripts(); + let libs = NonInflatableAsset::scripts(); let types = NonInflatableAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb20::FIXED.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/NonInflatableAssets.rgb")?; @@ -61,14 +61,14 @@ fn nia() -> io::Result<()> { fn uda() -> io::Result<()> { let schema = UniqueDigitalAsset::schema(); let iimpl = UniqueDigitalAsset::issue_impl(); - let lib = UniqueDigitalAsset::scripts(); + let libs = UniqueDigitalAsset::scripts(); let types = UniqueDigitalAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb21::NONE.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/UniqueDigitalAsset.rgb")?; @@ -81,14 +81,14 @@ fn uda() -> io::Result<()> { fn cfa() -> io::Result<()> { let schema = CollectibleFungibleAsset::schema(); let iimpl = CollectibleFungibleAsset::issue_impl(); - let lib = CollectibleFungibleAsset::scripts(); + let libs = CollectibleFungibleAsset::scripts(); let types = CollectibleFungibleAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb25::NONE.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/CollectibleFungibleAsset.rgb")?; @@ -99,9 +99,11 @@ fn cfa() -> io::Result<()> { } fn print_lib(kit: &Kit) { - let alu_lib = kit.scripts.first().unwrap(); - eprintln!("{alu_lib}"); - alu_lib - .print_disassemble::>(stdout()) - .unwrap(); + for alu_lib in &kit.scripts { + eprintln!("------------------------------------"); + eprintln!("{alu_lib}"); + alu_lib + .print_disassemble::>(stdout()) + .unwrap(); + } } diff --git a/src/nia.rs b/src/nia.rs index ad0e1d8..5b6f83d 100644 --- a/src/nia.rs +++ b/src/nia.rs @@ -50,44 +50,56 @@ pub(crate) fn util_lib() -> Lib { // SUBROUTINE Compute sum of inputs // Input: a16[16] - state to compute // Output: a64[16] - sum - // Uses: a16[0] - counter, a16[10] - zero constant, a64[0] - extracted amounts + // Uses: + // - a16[0]: counter, + // - a16[10]: zero constant, + // - a64[0]: extracted amounts + // - s16[4]: extracted state // Fails: on sum overflow or invalid state (should not happen) // St0: unmodified if not fails put a16[10],0; // zero constant put a64[16],0; // init sum with 0 cn.i a16[0],a16[16]; // count state dec a16[0]; // counter = len - 1 - /**/ld.i s16[0],a16[16],a16[0]; // load state + test; // fail if there is no state to load + /**/ld.i s16[4],a16[16],a16[0]; // load state extr s16[4],a64[0],a16[10]; // extract 64 bits test; // fail if state is absent or invalid add.uc a64[16],a64[0]; // add amount to the sum test; // fail on sum overflow dec a16[0]; // dec counter - jif 0/**/; // repeat for all assignments + jif 0x0E; // repeat for all assignments inv st0; // reset status flag ret; // finish // SUBROUTINE Compute sum of outputs // Input: a16[16] - state to compute // Output: a64[17] - sum - // Uses: a16[0] - counter, a16[10] - zero constant, a64[0] - extracted amounts + // Uses: + // - a16[0]: counter, + // - a16[10]: zero constant, + // - a64[0]: extracted amounts + // - s16[5]: extracted state // Fails: on sum overflow or invalid state (should not happen) // St0: unmodified if not fails put a16[10],0; // zero constant put a64[17],0; // init sum with 0 cn.o a16[0],a16[16]; // count state dec a16[0]; // counter = len - 1 - /**/ld.o s16[0],a16[16],a16[0]; // load state - extr s16[4],a64[0],a16[10]; // extract 64 bits + test; // fail if there is no state to load + /**/ld.o s16[5],a16[16],a16[0]; // load state + extr s16[5],a64[0],a16[10]; // extract 64 bits test; // fail if state is absent or invalid add.uc a64[17],a64[0]; // add amount to the sum test; // fail on sum overflow dec a16[0]; // dec counter - jif 0/**/; // repeat for all assignments + jif 0x29; // repeat for all assignments inv st0; // reset status flag ret; // finish } } +pub(crate) const FN_UTIL_SUM_INPUTS: u16 = 0; +pub(crate) const FN_UTIL_SUM_OUTPUTS: u16 = 0x22; pub(crate) fn nia_lib() -> Lib { let util = util_lib().id(); @@ -95,14 +107,15 @@ pub(crate) fn nia_lib() -> Lib { const DISTRIBUTED: u16 = OS_ASSET.to_u16(); rgbasm! { // SUBROUTINE Genesis validation - put a16[0],ISSUED; // global state to load - ld.g s16[3],a16[16],a16[0]; // load reported issued amount + put a16[0],0; // zero constant + put a16[15],ISSUED; // global state to load + ld.g s16[3],a16[15],a16[0]; // load reported issued amount put a16[10],0; // zero offset extr s16[3],a64[15],a16[10]; // a64[15] <- GS_ISSUED_SUPPLY test; // fail if state is absent or invalid put a16[16],DISTRIBUTED; // owned state to load - call 0x00 @ util; // a64[17] <- sum of OS_ASSET allocations + call FN_UTIL_SUM_OUTPUTS @ util; // a64[17] <- sum of OS_ASSET allocations put a8[0],ERRNO_ISSUED_MISMATCH; // set errno to return if we fail eq.n a64[15],a64[17]; // check if ISSUED =? sum(DISTRIBUTED) test; // fail if not @@ -110,16 +123,16 @@ pub(crate) fn nia_lib() -> Lib { // SUBROUTINE Transfer validation put a16[16],DISTRIBUTED; // owned state to load - call 0x00 @ util; // a64[16] <- sum of inputs - call 0x21 @ util; // a64[17] <- sum of outputs + call FN_UTIL_SUM_INPUTS @ util; // a64[16] <- sum of inputs + call FN_UTIL_SUM_OUTPUTS @ util; // a64[17] <- sum of outputs put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set errno to return if we fail eq.n a64[16],a64[17]; // check if sum(inputs) =? sum(outputs) test; // fail if not ret; // complete } } -pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 4 + 3 + 2 - 3; -pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0; +pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 0; +pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0x24; fn nia_schema() -> Schema { let types = StandardTypes::with(Rgb20::FIXED.stl()); @@ -178,6 +191,7 @@ fn nia_schema() -> Schema { fn nia_rgb20() -> IfaceImpl { let schema = nia_schema(); let iface = Rgb20::FIXED; + let lib_id = nia_lib().id(); IfaceImpl { version: VerNo::V1, @@ -204,10 +218,10 @@ fn nia_rgb20() -> IfaceImpl { NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], state_abi: StateAbi { - reg_input: Default::default(), - reg_output: Default::default(), - calc_output: Default::default(), - calc_change: Default::default(), + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), }, } } diff --git a/src/uda.rs b/src/uda.rs index b1d07fd..24275a2 100644 --- a/src/uda.rs +++ b/src/uda.rs @@ -36,30 +36,30 @@ use crate::{ OS_ASSET, TS_TRANSFER, }; -pub const FN_GENESIS_OFFSET: u16 = 4 + 4 + 3; -pub const FN_TRANSFER_OFFSET: u16 = 0; -pub const FN_SHARED_OFFSET: u16 = FN_GENESIS_OFFSET + 4 + 4 + 4; +pub const FN_GENESIS_OFFSET: u16 = 0x00; +pub const FN_TRANSFER_OFFSET: u16 = 0x0E; +pub const FN_SHARED_OFFSET: u16 = 0x19; fn uda_lib() -> Lib { const TOKEN: u16 = OS_ASSET.to_u16(); const ISSUE: u16 = GS_TOKENS.to_u16(); rgbasm! { - // SUBROUTINE 2: Transfer validation - put a16[0],0; // zero constant - put a16[16],TOKEN; // owned state type - ld.i s16[0],a16[16],a16[0]; // load spent token - jmp FN_SHARED_OFFSET; // jump into SUBROUTINE 3 to reuse the code - // SUBROUTINE 1: Genesis validation put a16[0],0; // zero constant put a16[15],ISSUE; // global state type ld.g s16[0],a16[15],a16[0]; // load token declaration + jmp FN_SHARED_OFFSET; // jump into SUBROUTINE 3 to reuse the code + + // SUBROUTINE 2: Transfer validation + put a16[0],0; // zero constant + put a16[16],TOKEN; // owned state type + ld.i s16[0],a16[16],a16[0]; // load spent token // SUBROUTINE 3: Shared code extr s16[0],a32[0],a16[0]; // 32 bits from the beginning of s16[0] to a32[0] put a16[16],TOKEN; // owned state type - ld.o s16[1],a16[1],a16[0]; // read allocation into s16[1] + ld.o s16[1],a16[16],a16[0]; // read allocation into s16[1] extr s16[1],a32[1],a16[0]; // 32 bits from the beginning of s16[0] to a32[1] put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set failure code eq.n a32[0],a32[1]; // check that token indexes match @@ -132,6 +132,7 @@ fn uda_schema() -> Schema { fn uda_rgb21() -> IfaceImpl { let schema = uda_schema(); + let lib_id = uda_lib().id(); IfaceImpl { version: VerNo::V1, @@ -159,10 +160,10 @@ fn uda_rgb21() -> IfaceImpl { NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("unknownToken")), }, state_abi: StateAbi { - reg_input: Default::default(), - reg_output: Default::default(), - calc_output: Default::default(), - calc_change: Default::default(), + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), }, } } diff --git a/test/rgb20-example.rgb b/test/rgb20-example.rgb index 89f9616acf63ba0c8528cd42613b37b80cc42f03..7535d9ab745ce7777f905981d3160dbf81b19d95 100644 GIT binary patch delta 541 zcmaE@GgZ$p$lZy-+24mnHUa;H>fcFXFMpxVrjB~QK2D$5y)lcV~}SDtLSE6 zI3N#EAC&9rCQh$q`abkfvM~2up@3;`t#~U{&F-HDhanUNx98Li)p6;%}A^aZh38Qb#nm# -00Ynm0RR#J1XM*+R0>pOb95kKb8}^M00_|s0RRI40002m2LS*G008KANEZMA00E#60RRC20mWz_3=qW1 -JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL0B9EWOI}np;{XT%0O)o|7XSbN00000000000000000000 -5>9V!Np5CrVRT_)Y-K@nb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r# -Q#LJOQD}2HS2boWI7&q~cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3 -I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yf -j)VaK00E#60EmoOWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@ -4*>xG{{R91sL?uWN0PB#X9bP?^C2a{m-HJ;qqS3sIO_7(#d{700003HCjbBepbr56|NjA?4*>xG{{R91 -sL?uWN0PB#X9bP?^C2a{m-HJ;qqS3sIO_7(#d{6_00000000000099CQb$5EFh*&3Wn=_aPh8{kau)pw ->ewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyGJowX;3qseNLLSu1oI{zd+?yZx(V;8S -nC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr-$vuP2+&Ta#sc9uF^R^6`2l7C00000 -0}N?%b9H58Q+04~Y)URWn@!z -aBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0?0SI(* -VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMr -b7gc-cWz~J009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9 -byGuAHZ5UMXmdGNHD)b1N<}w!0o_Pfn+Ytl>?8$wW@1ZmEXpVs;CvGn=<_xLgMCo~IXbPYmGwrO@2h%P -s@Fnsy3s+0GM7SZZGDX3P2Fl$^pK4oW&i*H000Bf2Ly9)Wn%yU007Yk1$1R{ZF2ws007zt3~6(7b!B8z -b#QQOc>n+a00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICHZf|ZyadlyAL2Yk!Zgg`1 -000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJO -QD}2HS2boWI7&q~cK`qY000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000001KZ01EbB)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHi -JR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000=vly4G~&lnD!c-+QY#hXVj|NgD} -^^LKZ%!4TQO92G|Rt=W-q*e1Zg(dl;zh@Se)i)R+C -0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4jZw^) -YeOKHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi -%!_9htpQ3t>=3qD6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7W0ssVVZ*FDSKfd5E -4dt|K_z&S8_xVm-pkWcojB&*wsIf| -mpsv;oy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1 -b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYx -XmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~vo -Zf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)Aa<{~<8ep?nYaleMc%` -0D|O6*W?8OW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@IL#ltp_Vr{><)W@$8mW*%&FhDhLgP$w -KlOrtu`}L^1_A_hd2nU14c`8MAg$P-$_ObTP^+;#QB8K)l1SfF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEVxS00eGtZe`d% -zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i!&yFl -s%&4!NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~Xkl|` -BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6 -bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByAWite3 -Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ceWpQ<3 -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 -?>;Wd>h -=Ype%b?2720000000000CjbBd00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d -0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+ -cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LK^@J -000012MYiJ01F5J01E*E0La=00XZ-L0S5#C0096100000 +0ssI2001-m2IuVSh$}c0JDif0=C2O)^OoO|UQtS%c3q`&?V11(coSy;0000D0CRI`I$>^aZh38Qb#nm# +00Ynm0RR9J00dM;Q&b96Wpi{OVRLh3bN~p^2LS*80{{R30NMuu000O80O)o|7XSbN0iX{700962#b_W5 +5X8znH4zBE{5>8*IQdPKz-=hD&5@z8TU{v>0RR91ON~ioV&|Hp000O80O)o|7XSbN000000000000000 +000005>9V!Np5CrVRT_)Y-K@nb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSj +Gj&r#Q#LJOQD}2HS2boWI7&q~cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2k +TZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em +^T$yfj)VaK00E#60EmoOWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu +0RRD@4*>xG{{R8uySX8WXpBcrXLGehYWheN*T#LgQ?}xG +{{R8uySX8WXpBcrXLGehYWheN*T#LgQ?}ewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyGJowX;3qseNLLSu1oI{zd+?yZx +(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr-$vuP2+&Ta#sc9uF^R^6`2l7C +000000}N?%b9H58Q+04~Y)UR +Wn@!zaBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0? +0SI(*VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX +0SaMrb7gc-cWz~J009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+O +EjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0WxK8oRXF1uMYI{mfwn+a00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICHZf|ZyadlyAL2Yk! +Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r# +Q#LJOQD}2HS2boWI7&q~cj3FaA&F>=M^0yRwMA=M^0yRwMAuYQ&j)}00000000L700000000=vly4G~&lnD!c-+QY#hXVj +|NgD}^^LKZ%!4TQO92G|Rt=W-q*e1Zg(dl;zh@Se) +i)R+C0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4 +jZw^)YeOKHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP; +3W%Qi%!_9htpQ3t>=3qD6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7W0ssVVZ*FDS +Kfd5E4dt|K_z&S8_xVm-pkWcojB&* +wsIf|mpsv;oy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G +1aNG1b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli +1!ZYxXmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL* +0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)Aa<{~<8ep?nYal +eMc%`0D|O6*W?8OW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@IL#ltp_Vr{><)W@$8mW*%&FhDh +LgP$wKlOrtu`}L^1_A_hd2nU14c`8MAg$P-$_ObTP^+;#QB8K)l1SfF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEVxS00eGt +Ze`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i +!&yFls%&4!NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~ +Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p& +DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByA +Wite3Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ce +WpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC; +NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;J +Spr{LS_*SetH31dQXVPk7$bW(iOEBma9j3W?1hVa-5?E;$Xa_ +D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~} +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 +3N8XGjvVf;x5wxJ000 -----END RGB CONSIGNMENT----- diff --git a/test/rgb21-example.rgb b/test/rgb21-example.rgb index a082ec767add2a215db13e6ab9cc94f41d1a4af9..d011d24ed881fec2865679b7a63e70c9b1a97502 100644 GIT binary patch delta 797 zcmccX@XpaU$lZy-+24_C|i2Ogx!RJfd?!JGy(!9G5%F#$Ya;r%@ZDERl57cdDg%;*OJ4G zV?E2 zcYWwgW(@tb^7ZLSQJu@m3qAi??&UdsJGPzk=Z720+k{n{RPvJKcOMGwi~Z8G_h2Z8 z-c!4qcLgQ68O=Rr&WO};T~avNnE8kjBO#A6Y?ffzz~n$EVrKrE^ho`MXZE8*^4%$) z4_?>bx$VResULfcH#-ODe7<~nG6(y~dP4qYV4$fAPI$CzzR0f6xH*Y)E0;QfcxGc_ zEy>SL&6}*qsldsRR+N}rl9``3*^yIWvzW*y?kGnFZeYUUu4H03c#xS%62fa_VK~Ud zVyVEu4PvpgSSm7d1Ji;eqa%=JW8fBKXRtI>;O6E83MDcM0;SA27VvYiFu>CwPzV4A CcpEtY delta 668 zcmaFoc-O%<$lZy-+24A^gJL5!O@rkJh3gQe9;}{rOGjkKuQyJj= z1^i5m49pX^s;NESKRce|-^r6aU^$QhAh3er>aywuvzF#vSb6sHj2+7+e)+4&BvJ78 z^qUm+DVteLbB@MLm{QspW;ugapBFo??z4*Vp54T6Duq|>2kSu>*jnOS@|dD zzsxEXT)a<}W$LGuFDzQFEahfkU=&aX5)1el8GsN%F)$L+$1u5{$s(<2S#zSz4Ntih z%lM6$S+CtLVSmQHZ_gsHPd=ZHEu8s?>CCoD`5<}4=f1hTPtHk6SjU!?nT7Ev-jfSt zf1q(8;at=7v%LF*R$gggO7W3Td;YsDU~B(@GdT_(SKUg36vd5Oelh~Xb+Q19=wv76 zm5Qu{yu6v0WdoA~q3AlhVoH17(VNG_YLC0t>`P@mJ*BF6*NZkuVTZqxPd)aePX5bw za3f$bR43dnAjJ!aF KTr9v?K>z^0@B7sN diff --git a/test/rgb21-example.rgba b/test/rgb21-example.rgba index 7ed5ed9..b8db7ff 100644 --- a/test/rgb21-example.rgba +++ b/test/rgb21-example.rgba @@ -1,141 +1,143 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:v02lwmVK-wAvaPE7-8CTK2Jx-hRbmsMI-JbpO3Ha-4HqCbOU#boris-diamond-arizona +Id: rgb:csg:sfuavyeO-naK4F90-GknJIIZ-CoXCWti-6jtQGkN-lzd!6s8#logic-critic-meteor Version: 2 Type: contract -Contract: rgb:wNVRTazN-!u26vjK-pTrjlpu-!ufzpEo-sxpbdde-p2qPXYU -Schema: rgb:sch:$$bAmeZTo5kK3RJHgeUr06qG86vQ0ozgtug7Yi9zdZo#korea-trumpet-dexter +Contract: rgb:Y!o2vnih-ssdFcQA-Iac1KMU-y1lYA5T-$cufjXg-0bnb!xE +Schema: rgb:sch:K!oMAhTrSfRw0zYYgXZahEUTxVSgribR1eW!1oVGgho#april-vitamin-horse Interface: RGB21Unique -Check-SHA256: a7bb892e37257fd73e04e585ba5888e248844bc88c7451efc2cfa9a0ab83c731 +Check-SHA256: 2e30c81252d22f1e026dad9c3ded0f7077a0a3ea2535f1a16513025f14c8970b -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 -q4 -NmyOwH13hJJ{1p&;$a*~gEI0M-qU9F8#%$RFKGB^*CB=^U`QB8J^ -yO1H{K10Q-T=FR=Q=>S+XYD&KHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD -6)+-@LLdMu-?&gcOB(fowFxn4+u4A192x5Uog%HF!~38*kwLu#0ssVVZ*FDSKfd5E4dt|K_z&S8_x@L|V|mt8Tf>F%PuK$$b1Yykvw -Z*66;aMO?W(hOSV*asELF;pE|QoG*E(^8!{=H0e(APJW|(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O -0A6zgEd*tFV{9P=Xkl|`BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KU -bZByAWite3Z*_7s1ZHV=Wi^aZh38Qb#nm# +00Ynm0RR9H00dM;Q&b34Wpi{Ob!1@x0MQ2l001fg00035bY*yS003?iI@F0+=j{p&q1c_BR29nIb=NkN +U-L_MbF*BsN*Fc>0RR9O00IC2000000R?GoVP|Ck00IC2000000iX{700962#b_W55X8znH4zBE{5>8* +IQdPKz-=hD&5@z8TU{v>0RR91w2>Wk#54yq000aC0ssI20RR9100000000000000000000000005>;+# +adl-xX=iD4VQfKjb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJO +QD}2HS2boWI7&q~cK`&?2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF +9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RR9t2mt>g2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K* +05}K$ai+oNNQ%6?MXfTR|H~O&PAZ+M?%c4|uH00048S81n%*avczgwdUa>d +1uH00048S81n%*avczgwdUa>d1~x^Kusb3F_D>3|%=0P4(J>rorb( +ioCoP%2dR;eWrf2m +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 -VQ_DAbaHQSXk{k|Vsc?)Yh`pyCN6MEdyk4 -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 -aisd$7U5G>13mOG^S@OiTh_O-%w{PEG<} -Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp -0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQW2z$* -=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV(a -000000RI30000000A&GIL*z(|^Y;`q0eROY=qU2QOZ-91J16!9Pue$g9R&fU&-*fU69;}zAIV^Hl7d8_ -9-)kE+Vz;)3s*I)2VU21bj+U}49ir`|1I+*$<$TBtm<+yI?cCS&H}f+m!nk#0ssVVZ*FDSKfd5E4dt|K -_z&S8_xUs_xvd)#O5wx83S{pf*v6^ -k7ERGVQpnjv2mE%&TgwSUGkR*P7%_A5oQ+`)ww4sj&F4yv21O3@X&qCv%6BHgWizA=u(cLP6P}D7lKnk -9D*JpH;-cg0exjom+h7od^|i!6IVh}C$_-w2%^n!R2Osl8!b($Bn1Hu(i%G%h4}Sf8vn;89aSG|t4s0* -&BRFk%a^yrND0k=Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFEd2`8+UDn~O1og|) -LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|vUqV6xUqeFzUqnO# -UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~A -UsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ= -ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdZF5UYt#1Jp*e72xXvv~_Ej0eK<_)d?1f|r -B(T3THv|Fz1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67ysX>`mg)dX=J|!5D -^^Svj0r2RU9jkooO*jNSYm*|P)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-lpNWLQ%D(Hkon&*Qw -pawq)`VKLB>Wd>h=Ype%b?2720RR91000006aWAK00000qk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=a -O9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC2Yyc<$zXDlf<&Mmp^R+W^_bcV -S2e5$Ue^EwuyE6l_R}O)+shqImKG);D@8R -3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000#5#SRxw8U!bIFfg -*5RxK^~=*jK)}Ad3JH<(%oY0 -=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&jRjKPz&##IG7- -47St%2#c>Z5R>jkTb_MKDq#SEf1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZ -skt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoe{J!HJ@Tgs1mpj@U3yhwA`^&{w -C3iS1tkb=;A&LP81O{|zV{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$ -L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XW -hzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12ehp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=xPaY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=a -O9W+B1a@zAbRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb@I9-fEJ#8I!OHhFfAY7fVtxlj{%}v -rgbfS&w=jG@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE -0000004D$d000000QVkcj;BmNHBOwq)*#;@L|V|mt8Tf>F%PuK$$b1YykvwZ*66~e*~A-{pMOIF3{$ogLC-FQ5ynWwEO**XV}S~GTU1D7YGF1 -t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{) -YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7*sX>`mg)dX=J|!5D^^Svj0r2RU -9jkooO*jNSYm*`c0f1h`yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJ^QIxavD7|R0gwX!*5!Gc?n?5 -;yM1jui=Thm^szjcme++2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$Z|1!-<%Wq4%)Rzu`SjPv&t -Gy!?nCFm&fz)So=%sVIc1y9;Ha~%eBX=7_;ax34sP(4c;^?|hsF=^Y`fOQ-h>iwM}t)avFpgNI3y##Jy -ZDpa_d~4J8+@U#eVYtpMO7>M5!a(mkyX=Kz2_&$;GdBlhWprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tl -g9WGn5m)2^IEV*ua%FaDWq0=;WsavzKQ&IAzSbb$9Yi2iGqm?r&xt3_=N0p0RRjfXWn^h#;D@L*mNSQ$ -uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N3t@D0VPj}*Wo~qH%#Y`}U-d|ep?1?aIu@z}I<9l4cr`-4*|VM; -bUc~u2y$g}WpZ|9b8d9ZpB)U#RL=h`^CZdCRl%(4axyy2w_MHwx4oC6RRI7413^qx2trUqNk>IfR0C2+ -LO=iu0RRBRpbr277XS+Z000XJ0077~2muQK0022401F8K0L7pW5ji0N839273jhKD3lReVIWZs$3k3if -0bv0R0000A1ONd50000000000000 +Us6&6UsF>8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp! +Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdZF5UYt#1Jp*e72xXvv~ +_Ej0eK<_)d?1f|rB(T3THv|Fz1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67y +sX>`mg)dX=J|!5D^^Svj0r2RU9jkooO*jNSYm*|P)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-lp +NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720RR91000006aWAK00000qk=;7%h%D+p%U7S;b1RT +)c9`>#Kd;Rz-U=aO9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC2Yyc<$zXDl +f<&Mmp^R+W^_bcVS2e5$Ue^EwuyE6l_R}O +)+shqImKG);D@8R3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000 +#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3JH<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7Oif +U&jRjKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEf1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b +)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoe{J!HJ@Tgs1 +mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|zV{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW +1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2 +HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K +_z&S8_xxYy=<4kft^@4w~Gv12ehp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=xPaY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT +)c9`>#Kd;Rz-U=aO9W+B1a@zAbRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb@I9-fEJ#8I!OHh +FfAY7fVtxlj{%}vrgbfS&w=jG@u4Q3HlB(d+LiL +Jm-R=h;`?dxBvhE0000004D$d000000QVkcj;BmNHBOwq)*#;@L|V|mt8Tf>F%PuK$$b1YykvwZ*66~e*~A-{pMOIF3{$ogLC-FQ5ynWwEO** +XV}S~GTU1D7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-Lu +XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7*sX>`mg)dX= +J|!5D^^Svj0r2RU9jkooO*jNSYm*`c0f1h`yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJ^QIxavD7| +R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcme++2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$Z|1!-<% +Wq4%)Rzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~%eBX=7_;ax34sP(4c;^?|hsF=^Y`fOQ-h>iwM} +t)avFpgNI3y##JyZDpa_d~4J8+@U#eVYtpMO7>M5!a(mkyX=Kz2_&$;GdBlhWprU_Y;#4ofF*_j#U`>l +TS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV*ua%FaDWq0=;WsavzKQ&IAzSbb$9Yi2iGqm?r&xt3_=N0p0RRjfX +Wn^h#;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N3t@D0VPj}*Wo~qH%#Y`}U-d|ep?1?aIu@z} +I<9l4cr`-4*|VM;bUc~u2y$g}WpZ|9b8d9ZpB)U#RL=h`^CZdCRl%(4axyy2w_MHwx4oC6RRI7413^qx +2trUqNk>IfR0C2+LO}ov0RR9Cc>(~z!2<#r01E*C01JTx0KozTIUoQFfdl}-2Lw4G0Sf>C02u*60Sf>I +01FWZ068%r3kwMV83ADd5dZ)HHVB{(3IqTF00000000000000 -----END RGB CONSIGNMENT----- diff --git a/test/rgb25-example.rgb b/test/rgb25-example.rgb index c43ca7b3674221d33c4df7a7e60bcc5705a13dc0..7a04ae08ee3b51badd4d21f9754fb25805a69b11 100644 GIT binary patch delta 758 zcmZ3Zy+gM?$lZy-+249T%nVNEWwMuyFjjQ)(1S28M2&SEl% ze7Jk3VrNE=yI*?oR@baw9wOI|)$R!1_FRi~mBx#BTN$8Li~{OFVgWxR!~g$Kih+@k zK9$LznamVgr%gHE=04-At@|~OcMJDDFS7Y@c?!4F^*K&*S5D7yp1IkRS&Wg9aq=og z1xAL=2`tAM9SDWi5e-eY*QpA*f6e@7ovLgQN}l`dyY2U>ZCk}oRN2*usZCC2dr(iv zbqowNRlx}lyv^?HDtz@!49v`qKA{{=0WO~IuE8P9!1Uq5z#RyT!Dc3g1L6%TjQ<%A z3b9z4EMQbfSegP=bU;*S0#$GU;|C5fEwN+(C5j~O zN+yPbXPH69SsJfr%9T@G5+4A0N k!V4~||K#*gHpx08XP(nEeJ+}4GhT`H(tHiwgyvp4C(qcvi#s&PM>^FsG{g1k}Q*VEU`oW0C;)1u&R%J47 zUf!vHW3#Bt1_qXk?2HV|Anmt+3=Rf{7iAvG;y~_BZbk-f2Ck6Q;u3|#;^Nejy+8q= z3ZS8kKphjC)B>07*dtc#G;bLPNE1j;9RWbdH5>Q(Gcqx9Ox9&GP+a|C=B4hp0r%tB z!bOeht!5j|FR$6K^WXn(CI=@ku-T@@Ik}EWoS-U($=jIB6s{Ln*~$p}ueTFPQ)OrU zR+Kew6I1CmTXiRA(@2F*F}uw?%wmj;Oq*R;jx#zC3UAg+iwvq~yH2^WcFWc~xgWN# z(^EWAWOIb|!pdbEJLHVqCVR6z*u0rth0hTfOw5ixp&U*DE}rhL!6D4RcvS=jDg(m> hU?8${1A~(r7~Juxa1kWV!T^*20|1gFy=?#h diff --git a/test/rgb25-example.rgba b/test/rgb25-example.rgba index 64669ff..8f4bda3 100644 --- a/test/rgb25-example.rgba +++ b/test/rgb25-example.rgba @@ -1,98 +1,102 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:Q$TnuoI0-j6aIixI-C93gAXT-wRqXQPV-N$jbYo5-kwjxBR8#mental-violin-banana +Id: rgb:csg:TQsYXUFG-iaS1RKt-gwoqPo$-FLc3P6j-MGiZa4p-P5T2sNY#indigo-jazz-ravioli Version: 2 Type: contract -Contract: rgb:8B4SxOzc-TJPdXbc-kCQwq$E-mDGbAET-uBJv4cw-eTfBu5U -Schema: rgb:sch:cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence +Contract: rgb:ZtLiXsjN-Bux!tC9-GtYFN7g-qze3yGJ-SyAcgFn-Aj9Of6g +Schema: rgb:sch:Yjx26J5Aat5JMoaQa9dn7a1LOQCVCMxB7A3mSp0AXHI#sheriff-impact-native Interface: RGB25Base -Check-SHA256: 374daaad407ad6b79ccea8d29d7c65c13a53b34231d97eed520ddc30fc3cd8ea +Check-SHA256: 5c3a0c97fa88615f9c7d3b00cfb57918e7cdeedef4b0475249c9f363df48db54 -0ssI2003~9&t>%~km`t98bVH{3A9!-E&Trg9mzKm1UQyhpKkzflG$be0000D0CRI`I$>^aZh38Qb#nm# -0iX{R2iX#u|61C)F286e!B~NFaP8)*X#umRi7(i*6&$bt1kncp00RI3007zt0RRX90O)o|7XSbNxeEaR -3jhjKWpi{OVRLh3biE4!009690iX{70RRI40mWz_3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL -0H(OS7IQ+LrU(G&c1RZh004e|etv#_etv#_etv#_etv#_etv#_etv#_etv#_ets1P*%F%nTH3iTzi21H -Sb=kJ?dGa!0kfxxFW9pc9IyZY00000000000000002o7WY;0v?bZKI2Wkz*wXK7+=WkGXuWpt2@A7%gm -001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00z+q09%X4 -R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L^+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz -9FBwm006iP0CxZIJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjYCBxeEY*Ud6mq639W2L|vh3p}>j> -;{fO~I?t|ZBSH!(tpGg%006uT06!~ox5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip1N -sg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eV0004?4*>`O00z+q0RRC2+6Msu0RXrQ00031xeEaR0RX%U -00031y$b;V0RRD@4*>xG{{R82@R`z!?NHxd23Hj_e>$5opLcw)x&Ht5G{KXgJhmnY0003HCjbBepbr56 -|NjA?4*>xG{{R82@R`z!?NHxd23Hj_e>$5opLcw)x&Ht5G{KXgJhmnP00000000000099BQb$5EH9}!? -WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=8%{dOaKyPp>`{W+ev&_Ht^TvI2G1Jtsm#HCZ5u -7Cwae0cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6HWMy<=X>4-=KPz&# -#IG7-47St%2#c>Z5R>jkTb_MKDq#SETceV>000312V`Y*VQFl0000313~6(7b!B8zb#QQO -c>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC21$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j|Nj614rz09b!B8t -X>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyA -L2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*} -VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9 -bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42 -ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~cr9mYL^*C)P)03J -V`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z=aG1|!^(m0*h*}y#PNoU8Rx>U9{{S7yHxdLmmRO%} -1=6B0dz(d+*sZj++->l;t}Y?Say-NZ(5a@eh#oRVkc}T^0000000z+q1$1R{ZF2ws007zt3~6(7b!B8z -b#QQOc>n+a0JsYSVRCc;0002F3j}UqZDjxe006uT2V`Y*VQFl000000y$cC&a%E#_b7^mG000000iX{G -VRLh3bWe9~WpV%j000015GM$9a$#)URWn@ih -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 +0ssI2003e^aZh38Qb#nm# +00hwo0RR9400000+6Msu00;m8=ypgK0002F3jqKC3jhjKWpi{OVRLh3biE4!000312mzoE0RRC20mWz_ +3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL0Kw@*ueEV}Z2$lW008KANEZMA000000000000000 +0000002o7WY;0v?bZKI2Wkz*wXK7+=WkGXuWpt2@A7%gm001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|t +RaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00z+q09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y +_W=L^+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwm006iP0CxZIJu1QEX=%Xy>vn1>teUKt +q)w3djjO=VIO}{ZUjYCBxeEY*Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg%006uT06!~ox5Td+ +V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eV +0004?4*-aaSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VXJ2GIur0098n2LS*90JsYP0098G3jqKD +0K5wT0098K3jqKD00E#60RaF100H5xG{{f&60RaF100H5wGO=000MMWprU_Y;yrW +D{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R2601Rn!b9H58Q+04~Yj>;{fO~I?t|ZBSH!(tpGg%010q%Wn*b` +X>V=;T?51yjj4`)KRWY6Ze?--h>TceV>000312V`Y*VQFl0000313~6(7b!B8zb#QQOc>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC2 +1$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j|Nj614rz09b!B8tX>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^M +Pj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~ +WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#P +bRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyA +L2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~M +MK^Z=Vmx-}o<#8hod8^N#3(5S>t!Hq{WedU%6WhiW1Z&rJ@=J{wHC;F +K7JM^kc}T^0000000z+q1$1R{ZF2ws007zt3~6(7b!B8zb#QQOc>n+a0JsYSVRCc;0002F3j}UqZDjxe +006uT2V`Y*VQFl000000y$cC&a%E#_b7^mG000000iX{GVRLh3bWe9~WpV%j000015GM$9a$#)URWn@ihb8TUCV`u;X001-qb8~4rOj=Vhb$BgjYD771 +SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!;k&sZiD-;RPG@tqMQZv;6xYUmxKp<0Dg~-2 +=wCe?007~;xgm*Yj7LsqbG1ck`bZSl#(lU`w&yAZswn7RJsbc4;k&sZiD-;RPG@tqMQZv;6xYUmxKp<0 +Dg~-2=wCe?007~;xgm*Yj7LsqbG1ck`bZSl#(lU`w&yAZswn7RJsbc403ZMW7|WDz5|hsu4xM=1##_ak +M=$^Wt^4(jv6#$*DE3PM1p!tKmiMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB)kOzr)xjz`xPycM6D} +`pk=G7OeqFKI{;-SrsrMkU{`J9I$nc6v6J{1p&;$a*~gEI0M-q +U9F8#%$RFKGB^*CB=^U`QB8J^yO1hds;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)i(&tG~n8CcwYZ +>30f@L|V|mt8Tf>F%PuK$$b1YykvwZ*66;aMO?W(hOSV*asELF;pE|QoG*E(^8!{ +=H0e(APJW|(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zgEd*tFV{9P=Xkl|`BL-w|Y;0k2Bm-e> +a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQKPz&##IG7-47St%2#c>Z5R>jk +Tb_MKDq#SEtcHU8F!O3w2qJC#)UKHujTH+>EdJQM&>E4z*R)+SA#T-nt8weyNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178Jm +aA9L*AOvN2V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3 +CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IF +dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq! +L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9 +R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_*SetH31dQXVPk7$bW(i< +bZKm4Wqwu-miMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB(-~saSFvJu_4WvuML_T7r2AV9eq<{=Bc@ +iMp6M)!KLf0000000030{{R3000016i^o(rG6hNeJj&GE~o3bsJMXY +O0?^NT%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_M00>4q10|{hhV`)ukY;0)+3S(t%bZJd#Y;0)- +1#M|#a&HC+WMyM%O=)9tZwCrvWo~q7O=)9tZwLf#VQy~;2xMhrX-;8oZwd)xWo~q7PGN3u3j}a!V{Z%y +WMyM%P-$at4GCjqZggo-X=85=1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7MrCbuZxIAxbaZbLUtT8V#RWVY +MMP0s#-L?ApehHE`!Nx1aisd$7U5G>13m +OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{N +VF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE +0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5 +;yM1jui=Thm^szjcmV(a000000RI30000000CxZIJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUj+e* +%scV6@fU9pCi53oip!$IFLkNNm8RePe-orvEEUUuUd6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg* +0mM3ep1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G| +!UHq{UqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0 +Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks +0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdWeizWn((= +JC(Q18jXtb+QHlu3zu?H+0@$e$59-PgarXyp-EU>L0b>G|!rXoS +C?n5wJSpIAp{09w=bpP+&ZWGMAfo&23(WIz3b1g~kM`0GTIJXW70NMG9a>Vm-pkWcojB&*wsIf|mjwYF +uyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8MAg$P-$_ObTP^+;#QB8KK9=zKTm*o$ +AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Ymb5%jv~AS23ov +&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000# +000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiL +Jm-R=h;`?dxb>|UAwf1KA&4t&LI4m}^5aI1iE} +_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shq +ImKG);D@8R3aUofKfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12aef}sT&vZN~;BKL%dw1ua +yIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>00000000009{>OV00000 +;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc +?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nzH7a>H<(%oY0=TGqa6l5Kf +YJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#qt000000000d000000002_ +7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUi +Yij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7-saSFvJu_4WvuML_T7r2A +V9eq<{=Bc@iMp6M)!KLg0ssR8K}=N$LQq6WM@3Uq15!sqL;wp>000Yv0sz1lfFuF`0l^XkIW(XFAb?;2 +Bmw^e4genq3sC?73yS~%z#o7l0sjHP7X&#qpaCF=U;!in{{txi9|sBm00000000000000313^qx2trUq +Nk>IfR0C2+LOB2n0RR9Cc>(~z%>xTj0022NuK^2z1ONph000XB1^^j(aRCPlfdl{r00005A^-pj0000P +fpGx`2LJ#7+6SNy0Rd|tORQIL(