diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 689ae3c30..d229ad434 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,9 @@ on: - main pull_request_target: types: [ opened, synchronize ] +# pull_request: +# branches: +# - main concurrency: group: ci-${{ github.head_ref || github.ref_name }} @@ -14,7 +17,6 @@ concurrency: env: CARGO_TERM_COLOR: always FOUNDRY_PROFILE: ci - BNB_RPC: ${{ secrets.BNB_RPC }} BSC_URL: ${{ secrets.BSC_URL }} OP_URL: ${{ secrets.OP_URL }} SEPOLIA_URL: ${{ secrets.SEPOLIA_URL }} @@ -255,6 +257,15 @@ jobs: - uses: Swatinem/rust-cache@v2 + - name: Run Simnet Tests + run: | + # build hyperbridge binary + cargo build -p hyperbridge --release + ./target/release/hyperbridge simnode --chain=gargantua-2000 --name=alice --tmp --state-pruning=archive --blocks-pruning=archive --rpc-port=9990 --port 40337 --log="mmr=trace" --rpc-cors=all --unsafe-rpc-external --rpc-methods=unsafe & + ./scripts/wait_for_tcp_port_opening.sh localhost 9990 + cargo test -p simtests -- --nocapture --ignored --test-threads=1 + kill -9 $! + - name: Run Parachain Devnet run: | # install polkadot binary @@ -268,12 +279,8 @@ jobs: sudo chmod +x ./polkadot-execute-worker sudo chmod +x ./polkadot-prepare-worker - cd ../../../ - ls -la polkadot-sdk/target/release - - # build hyperbridge binary - cd hyperbridge - cargo build -p hyperbridge --release + # get back in to hyperbridge + cd ../../../hyperbridge # install zombienet wget -O ./zombienet -q --show-progress https://github.com/paritytech/zombienet/releases/download/v1.3.89/zombienet-linux-x64 @@ -312,14 +319,6 @@ jobs: run: | cargo test -p bsc-prover -- --nocapture --ignored - - name: Mmr gadget tests - run: | - cargo build -p hyperbridge --release --features simnode - ./target/release/hyperbridge simnode --chain gargantua-2000 --name=alice --tmp --state-pruning=archive --blocks-pruning=archive --rpc-port=9990 --port 40337 --log="mmr=trace" --unsafe-rpc-external --rpc-methods=unsafe & - sleep 20; - cargo test -p simnode-tests -- --nocapture --ignored - kill -9 $! - check-solidity: name: Check ismp-solidity runs-on: ubuntu-latest @@ -350,7 +349,7 @@ jobs: hyperclient-tests: name: Hyperclient Integration Tests runs-on: ubuntu-latest - if: false # disabled for now + if: github.event.pull_request.draft == false steps: - name: Get User Permission id: checkAccess @@ -383,6 +382,6 @@ jobs: - name: Run WASM tests run: | - wasm-pack test --headless --chrome --no-default-features --features=wasm - working-directory: modules/client + wasm-pack test --headless --chrome --no-default-features --features=wasm,testing + working-directory: modules/hyperclient diff --git a/.gitignore b/.gitignore index b3a6b30ee..5b58b89ef 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,7 @@ evm/integration-tests/target/ .uuid* -modules/client/pkg +modules/hyperclient/pkg evm/subgraph/build evm/subgraph/generated diff --git a/Cargo.lock b/Cargo.lock index e80d64a61..0d555cc35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,9 +48,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher 0.4.4", @@ -77,30 +77,41 @@ version = "0.1.2" source = "git+https://github.com/polytope-labs/again?branch=develop#39dc8f18462ff6f2da6205076bd34a967ee1f010" dependencies = [ "fluvio-wasm-timer", - "getrandom 0.2.12", + "getrandom 0.2.14", "log", "rand 0.8.5", ] +[[package]] +name = "again" +version = "0.1.2" +source = "git+https://github.com/softprops/again?branch=develop#6db8c5e56bf93b1177ed35a926f8ff7d4adbf93b" +dependencies = [ + "getrandom 0.2.14", + "log", + "rand 0.8.5", + "wasm-timer", +] + [[package]] name = "ahash" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.12", + "getrandom 0.2.14", "once_cell", "version_check", "zerocopy", @@ -108,24 +119,24 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-primitives" -version = "0.6.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3729132072f369bc4e8e6e070f9cf4deb3490fc9b9eea6f71f75ec19406df811" +checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" dependencies = [ "alloy-rlp", "bytes", @@ -161,7 +172,7 @@ checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -196,9 +207,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" dependencies = [ "anstyle", "anstyle-parse", @@ -244,9 +255,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" [[package]] name = "approx" @@ -268,7 +279,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -609,28 +620,27 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.1.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" dependencies = [ "concurrent-queue", - "event-listener 4.0.3", - "event-listener-strategy", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", "futures-core", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] name = "async-executor" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand 2.0.2", + "futures-lite 2.3.0", "slab", ] @@ -668,18 +678,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.0" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" dependencies = [ "async-lock 3.3.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "parking", - "polling 3.3.2", - "rustix 0.38.30", + "polling 3.7.0", + "rustix 0.38.34", "slab", "tracing", "windows-sys 0.52.0", @@ -701,8 +711,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" dependencies = [ "event-listener 4.0.3", - "event-listener-strategy", - "pin-project-lite 0.2.13", + "event-listener-strategy 0.4.0", + "pin-project-lite 0.2.14", ] [[package]] @@ -729,26 +739,26 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.30", + "rustix 0.38.34", "windows-sys 0.48.0", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" dependencies = [ - "async-io 2.3.0", - "async-lock 2.8.0", + "async-io 2.3.2", + "async-lock 3.3.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.30", + "rustix 0.38.34", "signal-hook-registry", "slab", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -759,7 +769,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -770,7 +780,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -781,13 +791,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -811,7 +821,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -843,27 +853,26 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.60", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line 0.21.0", "cc", @@ -913,6 +922,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + [[package]] name = "base64ct" version = "1.6.0" @@ -1003,13 +1018,13 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.16", + "prettyplease 0.2.19", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -1054,9 +1069,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bitvec" @@ -1126,9 +1141,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec 0.7.4", @@ -1182,12 +1197,12 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel 2.1.1", + "async-channel 2.2.1", "async-lock 3.3.0", "async-task", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "piper", "tracing", ] @@ -1250,9 +1265,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bs58" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ "sha2 0.10.8", "tinyvec", @@ -1300,9 +1315,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "serde", @@ -1325,9 +1340,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-slice-cast" @@ -1343,9 +1358,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" [[package]] name = "byteorder" @@ -1355,9 +1370,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] @@ -1404,9 +1419,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceed8ef69d8518a5dda55c07425450b58a4e1946f4951eab6d7191ee86c2443d" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] @@ -1419,7 +1434,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -1433,7 +1448,7 @@ checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" dependencies = [ "camino", "cargo-platform", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -1441,12 +1456,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1460,9 +1476,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.6" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", ] @@ -1515,16 +1531,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.32" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1582,9 +1598,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -1592,14 +1608,14 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.11.1", "terminal_size", "unicase", "unicode-width", @@ -1607,31 +1623,30 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "coarsetime" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71367d3385c716342014ad17e3d19f7788ae514885a1f4c24f500260fb365e1a" +checksum = "13b3839cf01bb7960114be3ccf2340f541b6d0c81f8690b007b2b39f750f7e5d" dependencies = [ "libc", - "once_cell", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasix", "wasm-bindgen", ] @@ -1651,7 +1666,7 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ - "bs58 0.5.0", + "bs58 0.5.1", "coins-core", "digest 0.10.7", "hmac 0.12.1", @@ -1685,7 +1700,7 @@ checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ "base64 0.21.7", "bech32", - "bs58 0.5.0", + "bs58 0.5.1", "digest 0.10.7", "generic-array 0.14.7", "hex", @@ -1717,12 +1732,12 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.1.0" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ - "strum 0.25.0", - "strum_macros 0.25.3", + "strum 0.26.2", + "strum_macros 0.26.2", "unicode-width", ] @@ -1734,9 +1749,9 @@ checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -1766,9 +1781,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.10.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5104de16b218eddf8e34ffe2f86f74bfa4e61e95a1b89732fccf6325efd0557" +checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" dependencies = [ "cfg-if", "cpufeatures", @@ -1785,9 +1800,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-random" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" dependencies = [ "const-random-macro", ] @@ -1798,7 +1813,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", "once_cell", "tiny-keccak", ] @@ -1980,9 +1995,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -2031,7 +2046,7 @@ dependencies = [ "crossterm_winapi", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "signal-hook", "signal-hook-mio", "winapi", @@ -2143,7 +2158,7 @@ dependencies = [ "cumulus-primitives-core", "futures", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", @@ -2256,7 +2271,7 @@ dependencies = [ "futures", "futures-timer", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-node-primitives", "polkadot-parachain-primitives", "polkadot-primitives", @@ -2438,7 +2453,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -2650,7 +2665,7 @@ dependencies = [ "cumulus-relay-chain-interface", "cumulus-relay-chain-rpc-interface", "futures", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-availability-recovery", "polkadot-collator-protocol", "polkadot-core-primitives", @@ -2763,9 +2778,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.1" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ "cfg-if", "cpufeatures", @@ -2786,7 +2801,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -2804,9 +2819,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.115" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de00f15a6fa069c99b88c5c78c4541d0e7899a33b86f7480e23df2431fce0bc" +checksum = "21db378d04296a84d8b7d047c36bb3954f0b46529db725d7e62fb02f9ba53ccc" dependencies = [ "cc", "cxxbridge-flags", @@ -2816,9 +2831,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.115" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a71e1e631fa2f2f5f92e8b0d860a00c198c6771623a6cefcc863e3554f0d8d6" +checksum = "3e5262a7fa3f0bae2a55b767c223ba98032d7c328f5c13fa5cdc980b77fc0658" dependencies = [ "cc", "codespan-reporting", @@ -2826,24 +2841,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "cxxbridge-flags" -version = "1.0.115" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3fed61d56ba497c4efef9144dfdbaa25aa58f2f6b3a7cf441d4591c583745c" +checksum = "be8dcadd2e2fb4a501e1d9e93d6e88e6ea494306d8272069c92d5a9edf8855c0" [[package]] name = "cxxbridge-macro" -version = "1.0.115" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8908e380a8efd42150c017b0cfa31509fc49b6d47f7cb6b33e93ffb8f4e3661e" +checksum = "ad08a837629ad949b73d032c637653d069e909cffe4ee7870b02301939ce39cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -2858,12 +2873,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.8", + "darling_macro 0.20.8", ] [[package]] @@ -2876,22 +2891,22 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.10.0", "syn 1.0.109", ] [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", - "syn 2.0.57", + "strsim 0.10.0", + "syn 2.0.60", ] [[package]] @@ -2907,13 +2922,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.3", + "darling_core 0.20.8", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -2944,9 +2959,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "zeroize", @@ -2997,6 +3012,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-syn-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -3010,12 +3036,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - [[package]] name = "difflib" version = "0.4.0" @@ -3121,33 +3141,33 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "docify" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc4fd38aaa9fb98ac70794c82a00360d1e165a87fbf96a8a91f9dfc602aaee2" +checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63fa215f3a0d40fb2a221b3aa90d8e1fbb8379785a990cb60d62ac71ebdc6460" +checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" dependencies = [ "common-path", - "derive-syn-parse", + "derive-syn-parse 0.2.0", "once_cell", "proc-macro2", "quote", "regex", - "syn 2.0.57", + "syn 2.0.60", "termcolor", - "toml 0.8.2", + "toml 0.8.12", "walkdir", ] @@ -3165,9 +3185,9 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dtoa" @@ -3204,9 +3224,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ecdsa" @@ -3255,11 +3275,11 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "ed25519 2.2.3", "rand_core 0.6.4", "serde", @@ -3288,7 +3308,7 @@ version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "ed25519 2.2.3", "hashbrown 0.14.3", "hex", @@ -3299,9 +3319,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "elliptic-curve" @@ -3339,9 +3359,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -3370,7 +3390,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "syn 1.0.109", @@ -3378,22 +3398,22 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -3404,7 +3424,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -3564,7 +3584,7 @@ dependencies = [ [[package]] name = "ethers" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -3579,7 +3599,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "ethers-core", "once_cell", @@ -3590,7 +3610,7 @@ dependencies = [ [[package]] name = "ethers-contract" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -3609,7 +3629,7 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "Inflector", "dunce", @@ -3617,14 +3637,14 @@ dependencies = [ "ethers-etherscan", "eyre", "hex", - "prettyplease 0.2.16", + "prettyplease 0.2.19", "proc-macro2", "quote", "regex", "reqwest", "serde", "serde_json", - "syn 2.0.57", + "syn 2.0.60", "toml 0.7.8", "walkdir", ] @@ -3632,7 +3652,7 @@ dependencies = [ [[package]] name = "ethers-contract-derive" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "Inflector", "ethers-contract-abigen", @@ -3641,13 +3661,13 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "ethers-core" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "arrayvec 0.7.4", "bytes", @@ -3666,7 +3686,7 @@ dependencies = [ "serde", "serde_json", "strum 0.25.0", - "syn 2.0.57", + "syn 2.0.60", "tempfile", "thiserror", "tiny-keccak", @@ -3676,12 +3696,12 @@ dependencies = [ [[package]] name = "ethers-etherscan" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "ethers-core", "ethers-solc", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -3691,7 +3711,7 @@ dependencies = [ [[package]] name = "ethers-middleware" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "async-trait", "auto_impl", @@ -3717,8 +3737,9 @@ dependencies = [ [[package]] name = "ethers-providers" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ + "anyhow", "async-trait", "auto_impl", "base64 0.21.7", @@ -3736,6 +3757,8 @@ dependencies = [ "once_cell", "pin-project", "reqwest", + "reqwest-chain", + "reqwest-middleware", "serde", "serde_json", "thiserror", @@ -3753,7 +3776,7 @@ dependencies = [ [[package]] name = "ethers-signers" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "async-trait", "coins-bip32", @@ -3771,7 +3794,7 @@ dependencies = [ [[package]] name = "ethers-solc" version = "2.0.8" -source = "git+https://github.com/polytope-labs/ethers-rs?rev=f8ab49e1ca2d68e8bf1113e705ade38e5f30b850#f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" +source = "git+https://github.com/polytope-labs/ethers-rs?rev=a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4#a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" dependencies = [ "cfg-if", "dirs", @@ -3787,7 +3810,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "sha2 0.10.8", @@ -3816,7 +3839,7 @@ checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" dependencies = [ "concurrent-queue", "parking", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -3827,7 +3850,18 @@ checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" dependencies = [ "concurrent-queue", "parking", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", +] + +[[package]] +name = "event-listener" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite 0.2.14", ] [[package]] @@ -3837,7 +3871,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ "event-listener 4.0.3", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +dependencies = [ + "event-listener 5.3.0", + "pin-project-lite 0.2.14", ] [[package]] @@ -3848,7 +3892,7 @@ checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" dependencies = [ "futures-core", "nom", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -3893,22 +3937,23 @@ dependencies = [ [[package]] name = "expander" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7" +checksum = "00e83c02035136f1592a47964ea60c05a50e4ed8b5892cfac197063850898d4d" dependencies = [ "blake2 0.10.6", "fs-err", + "prettier-please", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "eyre" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -3937,9 +3982,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" [[package]] name = "fastrlp" @@ -3999,20 +4044,20 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" [[package]] name = "figment" -version = "0.10.14" +version = "0.10.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b6e5bc7bd59d60d0d45a6ccab6cf0f4ce28698fb4e81e750ddf229c9b824026" +checksum = "d032832d74006f99547004d49410a4b4218e4c33382d56ca3ff89df74f86b953" dependencies = [ "atomic 0.6.0", "pear", "serde", - "toml 0.8.2", + "toml 0.8.12", "uncased", "version_check", ] @@ -4051,7 +4096,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "scale-info", ] @@ -4075,9 +4120,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" dependencies = [ "crc32fast", "libz-sys", @@ -4132,7 +4177,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "forge" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "comfy-table 6.2.0", "ethers", @@ -4144,12 +4189,12 @@ dependencies = [ "glob", "hex", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "proptest", "rayon", "regex", "rlp", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "tokio", @@ -4161,13 +4206,13 @@ dependencies = [ [[package]] name = "forge-fmt" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "ariadne", "ethers-core", "foundry-config", "itertools 0.10.5", - "semver 1.0.21", + "semver 1.0.22", "solang-parser", "thiserror", "tracing", @@ -4176,7 +4221,7 @@ dependencies = [ [[package]] name = "forge-testsuite" version = "0.1.0" -source = "git+https://github.com/polytope-labs/forge-testsuite?rev=50c6686ddfe61c697013bd067ac5fae7a0d5723e#50c6686ddfe61c697013bd067ac5fae7a0d5723e" +source = "git+https://github.com/polytope-labs/forge-testsuite?rev=faa97adf1b969f64cf77259f8f018a2aafefb70a#faa97adf1b969f64cf77259f8f018a2aafefb70a" dependencies = [ "ethers", "ethers-solc", @@ -4219,7 +4264,7 @@ dependencies = [ [[package]] name = "foundry-abi" version = "0.1.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "ethers-contract", "ethers-contract-abigen", @@ -4227,13 +4272,13 @@ dependencies = [ "ethers-providers", "eyre", "foundry-macros", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "foundry-common" version = "0.1.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "auto_impl", "clap", @@ -4251,7 +4296,7 @@ dependencies = [ "once_cell", "regex", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "tempfile", @@ -4264,7 +4309,7 @@ dependencies = [ [[package]] name = "foundry-config" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "Inflector", "dirs-next", @@ -4280,7 +4325,7 @@ dependencies = [ "path-slash", "regex", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "serde_regex", @@ -4294,7 +4339,7 @@ dependencies = [ [[package]] name = "foundry-evm" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "auto_impl", "bytes", @@ -4312,10 +4357,10 @@ dependencies = [ "jsonpath_lib", "once_cell", "ordered-float 3.9.2", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "proptest", "revm", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -4329,7 +4374,7 @@ dependencies = [ [[package]] name = "foundry-macros" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "ethers-core", "foundry-macros-impl", @@ -4340,17 +4385,17 @@ dependencies = [ [[package]] name = "foundry-macros-impl" version = "0.0.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "foundry-utils" version = "0.2.0" -source = "git+https://github.com/polytope-labs/foundry?rev=068ef4d82e8421f9f96fdc33b061dc4848b7019a#068ef4d82e8421f9f96fdc33b061dc4848b7019a" +source = "git+https://github.com/polytope-labs/foundry?rev=1ffcca7485e84a9a356c5adb619ee1f038295739#1ffcca7485e84a9a356c5adb619ee1f038295739" dependencies = [ "dunce", "ethers-addressbook", @@ -4417,7 +4462,7 @@ dependencies = [ "array-bytes 6.2.2", "chrono", "clap", - "comfy-table 7.1.0", + "comfy-table 7.1.1", "frame-benchmarking", "frame-support", "frame-system", @@ -4465,7 +4510,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -4600,8 +4645,8 @@ checksum = "0be717139a0da9b31b559356db73f6ce48876d331e833ebdc32de3a9ad581e15" dependencies = [ "Inflector", "cfg-expr", - "derive-syn-parse", - "expander 2.0.0", + "derive-syn-parse 0.1.5", + "expander 2.1.0", "frame-support-procedural-tools", "itertools 0.10.5", "macro_magic", @@ -4609,7 +4654,7 @@ dependencies = [ "proc-macro2", "quote", "sp-core-hashing 15.0.0", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -4622,7 +4667,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -4633,7 +4678,7 @@ checksum = "68672b9ec6fe72d259d3879dc212c5e42e977588cdac830c76f54d9f492aeb58" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -4721,7 +4766,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" dependencies = [ - "rustix 0.38.30", + "rustix 0.38.34", "windows-sys 0.48.0", ] @@ -4791,21 +4836,21 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "waker-fn", ] [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-core", "futures-io", "parking", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -4826,7 +4871,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -4854,9 +4899,9 @@ checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ "gloo-timers", "send_wrapper 0.4.0", @@ -4875,7 +4920,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "pin-utils", "slab", ] @@ -4913,6 +4958,8 @@ dependencies = [ "hex-literal 0.4.1", "ismp", "ismp-bsc", + "ismp-parachain", + "ismp-parachain-runtime-api", "ismp-sync-committee", "log", "orml-traits", @@ -5024,9 +5071,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -5047,11 +5094,11 @@ dependencies = [ [[package]] name = "ghash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", "polyval", ] @@ -5087,8 +5134,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.4", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -5183,9 +5230,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -5193,7 +5240,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.2.5", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -5244,7 +5291,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "serde", ] @@ -5254,7 +5301,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "allocator-api2", "serde", ] @@ -5283,11 +5330,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -5381,9 +5434,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -5398,7 +5451,7 @@ checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", ] [[package]] @@ -5441,8 +5494,8 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.13", - "socket2 0.5.5", + "pin-project-lite 0.2.14", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -5459,11 +5512,11 @@ dependencies = [ "http", "hyper", "log", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-native-certs 0.6.3", "tokio", "tokio-rustls 0.24.1", - "webpki-roots 0.25.3", + "webpki-roots 0.25.4", ] [[package]] @@ -5567,7 +5620,7 @@ dependencies = [ "evm-common", "fluvio-wasm-timer", "futures", - "getrandom 0.2.12", + "getrandom 0.2.14", "hashbrown 0.14.3", "hex", "hex-literal 0.4.1", @@ -5577,7 +5630,7 @@ dependencies = [ "pallet-ismp", "parity-scale-codec", "primitive-types", - "reconnecting-jsonrpsee-ws-client", + "reconnecting-jsonrpsee-ws-client 0.3.0 (git+https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client?rev=84fd8400cac12babd1be7c337dc1a8d14ce0c101)", "serde", "serde-wasm-bindgen", "serde_json", @@ -5585,19 +5638,20 @@ dependencies = [ "subxt-utils", "tokio", "tracing", + "tracing-subscriber 0.3.18", "tracing-wasm", "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test", - "wasm-streams 0.4.0", + "wasm-streams", "web-sys", ] [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -5659,7 +5713,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-io 2.3.0", + "async-io 2.3.2", "core-foundation", "fnv", "futures", @@ -5748,9 +5802,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -5764,9 +5818,9 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -5855,7 +5909,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.5", + "socket2 0.5.6", "widestring", "windows-sys 0.48.0", "winreg", @@ -5869,12 +5923,12 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi", - "rustix 0.38.30", + "libc", "windows-sys 0.52.0", ] @@ -6080,24 +6134,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -6131,14 +6185,14 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3ae45a64cfc0882934f963be9431b2a165d667f53140358181f262aca0702" +checksum = "c4b0e68d9af1f066c06d6e2397583795b912d78537d7d907c561e82c13d69fa1" dependencies = [ - "jsonrpsee-client-transport 0.22.2", - "jsonrpsee-core 0.22.2", - "jsonrpsee-types 0.22.2", - "jsonrpsee-ws-client 0.22.2", + "jsonrpsee-client-transport 0.22.4", + "jsonrpsee-core 0.22.4", + "jsonrpsee-types 0.22.4", + "jsonrpsee-ws-client 0.22.4", ] [[package]] @@ -6163,20 +6217,20 @@ dependencies = [ "tokio-rustls 0.24.1", "tokio-util", "tracing", - "webpki-roots 0.25.3", + "webpki-roots 0.25.4", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455fc882e56f58228df2aee36b88a1340eafd707c76af2fa68cf94b37d461131" +checksum = "92f254f56af1ae84815b9b1325094743dcf05b92abb5e94da2e81a35cff0cada" dependencies = [ "futures-channel", "futures-util", "gloo-net 0.5.0", "http", - "jsonrpsee-core 0.22.2", + "jsonrpsee-core 0.22.4", "pin-project", "rustls-native-certs 0.7.0", "rustls-pki-types", @@ -6206,7 +6260,7 @@ dependencies = [ "globset", "hyper", "jsonrpsee-types 0.16.3", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "rustc-hash", "serde", @@ -6220,17 +6274,16 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75568f4f9696e3a47426e1985b548e1a9fcb13372a5e320372acaf04aca30d1" +checksum = "274d68152c24aa78977243bb56f28d7946e6aa309945b37d33174a3f92d89a3a" dependencies = [ "anyhow", - "async-lock 3.3.0", "async-trait", "beef", "futures-timer", "futures-util", - "jsonrpsee-types 0.22.2", + "jsonrpsee-types 0.22.4", "pin-project", "rustc-hash", "serde", @@ -6267,7 +6320,7 @@ version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44e8ab85614a08792b9bff6c8feee23be78c98d0182d4c622c05256ab553892a" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-crate 1.3.1", "proc-macro2", "quote", @@ -6312,9 +6365,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467fd35feeee179f71ab294516bdf3a81139e7aeebdd860e46897c12e1a3368" +checksum = "3dc828e537868d6b12bbb07ec20324909a22ced6efca0057c825c3e1126b2c6d" dependencies = [ "anyhow", "beef", @@ -6337,14 +6390,14 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca71e74983f624c0cb67828e480a981586074da8ad3a2f214c6a3f884edab9" +checksum = "32f00abe918bf34b785f87459b9205790e5361a3f7437adb50e928dc243f27eb" dependencies = [ "http", - "jsonrpsee-client-transport 0.22.2", - "jsonrpsee-core 0.22.2", - "jsonrpsee-types 0.22.2", + "jsonrpsee-client-transport 0.22.4", + "jsonrpsee-core 0.22.4", + "jsonrpsee-types 0.22.4", "url", ] @@ -6403,7 +6456,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7a85fe66f9ff9cd74e169fdd2c94c6e1e74c412c99a73b4df3200b5d3760b2" dependencies = [ "kvdb", - "parking_lot 0.12.1", + "parking_lot 0.12.2", ] [[package]] @@ -6414,7 +6467,7 @@ checksum = "b644c70b92285f66bfc2032922a79000ea30af7bc2ab31902992a5dcb9b434f6" dependencies = [ "kvdb", "num_cpus", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "regex", "rocksdb", "smallvec", @@ -6422,37 +6475,39 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", "bit-set", - "diff", "ena", - "is-terminal", - "itertools 0.10.5", + "itertools 0.11.0", "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.7.5", + "regex-syntax 0.8.3", "string_cache", "term", "tiny-keccak", "unicode-xid", + "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.6", +] [[package]] name = "landlock" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1530c5b973eeed4ac216af7e24baf5737645a6272e361f1fb95710678b67d9cc" +checksum = "9baa9eeb6e315942429397e617a190f4fdc696ef1ee0342939d641029cbb4ea7" dependencies = [ "enumflags2", "libc", @@ -6476,9 +6531,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libfuzzer-sys" @@ -6493,12 +6548,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.5", ] [[package]] @@ -6516,7 +6571,7 @@ dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.12", + "getrandom 0.2.14", "instant", "libp2p-allow-block-list", "libp2p-connection-limits", @@ -6581,7 +6636,7 @@ dependencies = [ "multihash 0.17.0", "multistream-select", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "pin-project", "quick-protobuf", "rand 0.8.5", @@ -6601,7 +6656,7 @@ dependencies = [ "futures", "libp2p-core", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "smallvec", "trust-dns-resolver", ] @@ -6635,7 +6690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ "bs58 0.4.0", - "ed25519-dalek 2.1.0", + "ed25519-dalek 2.1.1", "log", "multiaddr", "multihash 0.17.0", @@ -6763,7 +6818,7 @@ dependencies = [ "libp2p-identity", "libp2p-tls", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "quinn-proto", "rand 0.8.5", "rustls 0.20.9", @@ -6814,7 +6869,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f" dependencies = [ - "heck", + "heck 0.4.1", "quote", "syn 1.0.109", ] @@ -6879,7 +6934,7 @@ dependencies = [ "futures-rustls", "libp2p-core", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "quicksink", "rw-stream-sink", "soketto", @@ -6902,13 +6957,12 @@ dependencies = [ [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -6976,9 +7030,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.14" +version = "1.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "295c17e837573c8c821dbaeb3cceb3d745ad082f7572191409e69cbc1b3fd050" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" dependencies = [ "cc", "pkg-config", @@ -7050,9 +7104,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -7126,7 +7180,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -7136,11 +7190,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "468155613a44cfd825f1fb0ffa532b018253920d404e6fca1e8d43155198a46d" dependencies = [ "const-random", - "derive-syn-parse", + "derive-syn-parse 0.1.5", "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -7151,7 +7205,7 @@ checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -7162,7 +7216,7 @@ checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -7186,6 +7240,15 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matches" version = "0.1.10" @@ -7214,9 +7277,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memfd" @@ -7224,7 +7287,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.30", + "rustix 0.38.34", ] [[package]] @@ -7405,9 +7468,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", @@ -7426,12 +7489,12 @@ dependencies = [ "bitflags 1.3.2", "blake2 0.10.6", "c2-chacha", - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "either", "hashlink", "lioness", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "rand_chacha 0.3.1", "rand_distr", @@ -7687,9 +7750,9 @@ dependencies = [ [[package]] name = "nalgebra" -version = "0.32.3" +version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caa" +checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef" dependencies = [ "approx", "matrixmultiply", @@ -7800,9 +7863,9 @@ dependencies = [ [[package]] name = "netlink-sys" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" +checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" dependencies = [ "bytes", "futures", @@ -7813,9 +7876,9 @@ dependencies = [ [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nexus-runtime" @@ -7951,9 +8014,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" dependencies = [ "num-bigint", "num-complex", @@ -7976,13 +8039,19 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-format" version = "0.4.4" @@ -7995,19 +8064,18 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -8028,9 +8096,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", "libm", @@ -8064,7 +8132,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -8134,9 +8202,9 @@ checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open-fastrlp" @@ -8165,11 +8233,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.63" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -8186,7 +8254,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -8197,9 +8265,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.99" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -8215,9 +8283,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchestra" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5edee0c1917703f8a28cd229cf6a5c91a7ee34be139ced16509ac5b53b9d0c51" +checksum = "2356622ffdfe72362a45a1e5e87bb113b8327e596e39b91f11f0ef4395c8da79" dependencies = [ "async-trait", "dyn-clonable", @@ -8232,12 +8300,12 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f60e64a3808b5bb2786b9da09fc70714952aabcdd0eeba6f1718e3dbc34ad5b" +checksum = "eedb646674596266dc9bb2b5c7eea7c36b32ecc7777eba0d510196972d72c4fd" dependencies = [ - "expander 2.0.0", - "indexmap 2.2.5", + "expander 2.1.0", + "indexmap 2.2.6", "itertools 0.11.0", "petgraph", "proc-macro-crate 1.3.1", @@ -8633,15 +8701,16 @@ dependencies = [ [[package]] name = "pallet-collator-selection" -version = "9.0.0" +version = "9.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4199122c135e161d2e2f4cbc9339c54a11ac4b11e0beb67e53b49a3c90d566b" +checksum = "05cc67e8233b748a0c0b1ecc2cbecfc6deb08be633fedba9c3d6b1ade6c2a036" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "pallet-authorship", + "pallet-balances", "pallet-session", "parity-scale-codec", "rand 0.8.5", @@ -8986,6 +9055,7 @@ version = "0.1.0" dependencies = [ "frame-system", "hash-db", + "hex", "hex-literal 0.3.4", "ismp", "jsonrpsee 0.16.3", @@ -9214,9 +9284,9 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" -version = "25.0.0" +version = "25.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4eca0c1399f1c48b3051b33d6624021ae2b3791139461427cfc99a1e64f0cb8" +checksum = "d5989ca1100694371c9951118d58e84e93b60c1919006e9d4ad0f7537952c388" dependencies = [ "frame-support", "frame-system", @@ -9494,9 +9564,9 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "28.0.0" +version = "28.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8883bbca2bd6ee41f81382418372ce44fd771ac53591ce9be4018ea43f8c5eda" +checksum = "a83fe4c845d10988b78022f1b0e197ceefc0b68c148efb6370d9e9b53a53baf4" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -9525,7 +9595,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -9853,7 +9923,7 @@ dependencies = [ "log", "lz4", "memmap2", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "siphasher", "snap", @@ -9918,12 +9988,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -9942,15 +10012,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -10015,25 +10085,25 @@ dependencies = [ [[package]] name = "pear" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ccca0f6c17acc81df8e242ed473ec144cbf5c98037e69aa6d144780aad103c8" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" dependencies = [ "inlinable_string", "pear_codegen", - "yansi 1.0.0-rc.1", + "yansi 1.0.1", ] [[package]] name = "pear_codegen" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e22670e8eb757cff11d6c199ca7b987f352f0346e0be4dd23869ec72cb53c77" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -10059,9 +10129,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.6" +version = "2.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" dependencies = [ "memchr", "thiserror", @@ -10070,9 +10140,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.6" +version = "2.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcd6ab1236bbdb3a49027e920e693192ebfe8913f6d60e294de57463a493cfde" +checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" dependencies = [ "pest", "pest_generator", @@ -10080,22 +10150,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.6" +version = "2.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a31940305ffc96863a735bef7c7994a00b325a7138fdbc5bda0f1a0476d3275" +checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "pest_meta" -version = "2.7.6" +version = "2.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ff62f5259e53b78d1af898941cdcdccfae7385cf7d793a6e55de5d05bb4b7d" +checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" dependencies = [ "once_cell", "pest", @@ -10109,7 +10179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.2.5", + "indexmap 2.2.6", ] [[package]] @@ -10152,7 +10222,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -10175,22 +10245,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -10201,9 +10271,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -10218,7 +10288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", ] @@ -10234,15 +10304,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platforms" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" [[package]] name = "polkadot-approval-distribution" @@ -10470,7 +10540,7 @@ dependencies = [ "fatality", "futures", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-subsystem", @@ -10826,7 +10896,7 @@ dependencies = [ "log", "mick-jaeger", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-node-primitives", "polkadot-primitives", "sc-network", @@ -10841,7 +10911,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2b5b00a9646875f22ab45e61ede04f623a3fbbc03bae52263b3d558c964bc32" dependencies = [ - "bs58 0.5.0", + "bs58 0.5.1", "futures", "futures-timer", "log", @@ -10959,7 +11029,7 @@ dependencies = [ "kvdb", "parity-db", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "pin-project", "polkadot-node-jaeger", "polkadot-node-metrics", @@ -10990,7 +11060,7 @@ dependencies = [ "futures", "futures-timer", "orchestra", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-node-metrics", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -11141,7 +11211,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac3c6ee03f38556274b26049c51c5c7095abfd4ebfd11cd492918a4344f2851" dependencies = [ - "bs58 0.5.0", + "bs58 0.5.1", "frame-benchmarking", "parity-scale-codec", "polkadot-primitives", @@ -11225,7 +11295,7 @@ dependencies = [ "pallet-transaction-payment-rpc-runtime-api", "parity-db", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "polkadot-approval-distribution", "polkadot-availability-bitfield-distribution", "polkadot-availability-distribution", @@ -11364,20 +11434,21 @@ dependencies = [ "concurrent-queue", "libc", "log", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "windows-sys 0.48.0", ] [[package]] name = "polling" -version = "3.3.2" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" dependencies = [ "cfg-if", "concurrent-queue", - "pin-project-lite 0.2.13", - "rustix 0.38.30", + "hermit-abi", + "pin-project-lite 0.2.14", + "rustix 0.38.34", "tracing", "windows-sys 0.52.0", ] @@ -11389,19 +11460,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", "universal-hash", ] [[package]] name = "polyval" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", "universal-hash", ] @@ -11459,11 +11530,21 @@ dependencies = [ "termtree", ] +[[package]] +name = "prettier-please" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22020dfcf177fcc7bf5deaf7440af371400c67c0de14c399938d8ed4fb4645d3" +dependencies = [ + "proc-macro2", + "syn 2.0.60", +] + [[package]] name = "prettyplease" -version = "0.1.25" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +checksum = "f28f53e8b192565862cf99343194579a022eb9c7dd3a8d03134734803c7b3125" dependencies = [ "proc-macro2", "syn 1.0.109", @@ -11471,12 +11552,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -11541,7 +11622,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_edit 0.20.2", + "toml_edit 0.20.7", ] [[package]] @@ -11585,14 +11666,14 @@ checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -11605,9 +11686,9 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", "version_check", - "yansi 1.0.0-rc.1", + "yansi 1.0.1", ] [[package]] @@ -11620,7 +11701,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "thiserror", ] @@ -11632,7 +11713,7 @@ checksum = "5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721e" dependencies = [ "dtoa", "itoa", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "prometheus-client-derive-encode", ] @@ -11644,7 +11725,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -11655,13 +11736,13 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.2", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", "rusty-fork", "tempfile", "unarray", @@ -11684,13 +11765,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", - "heck", + "heck 0.4.1", "itertools 0.10.5", "lazy_static", "log", "multimap", "petgraph", - "prettyplease 0.1.25", + "prettyplease 0.1.11", "prost", "prost-types", "regex", @@ -11789,9 +11870,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -11861,7 +11942,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", ] [[package]] @@ -11909,9 +11990,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -11939,15 +12020,32 @@ dependencies = [ "yasna", ] +[[package]] +name = "reconnecting-jsonrpsee-ws-client" +version = "0.3.0" +source = "git+https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client?rev=7c0817478c2741cc0889e7c75c645aad9f3cbb55#7c0817478c2741cc0889e7c75c645aad9f3cbb55" +dependencies = [ + "again 0.1.2 (git+https://github.com/softprops/again?branch=develop)", + "futures", + "getrandom 0.2.14", + "jsonrpsee 0.22.4", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "wasm-bindgen-futures", +] + [[package]] name = "reconnecting-jsonrpsee-ws-client" version = "0.3.0" source = "git+https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client?rev=84fd8400cac12babd1be7c337dc1a8d14ce0c101#84fd8400cac12babd1be7c337dc1a8d14ce0c101" dependencies = [ - "again", + "again 0.1.2 (git+https://github.com/polytope-labs/again?branch=develop)", "futures", - "getrandom 0.2.12", - "jsonrpsee 0.22.2", + "getrandom 0.2.14", + "jsonrpsee 0.22.4", "serde_json", "thiserror", "tokio", @@ -11974,13 +12072,22 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", "libredox", "thiserror", ] @@ -12015,7 +12122,7 @@ checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -12032,14 +12139,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.4", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -12053,13 +12160,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -12070,21 +12177,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes", @@ -12105,12 +12206,13 @@ dependencies = [ "native-tls", "once_cell", "percent-encoding", - "pin-project-lite 0.2.13", - "rustls 0.21.10", + "pin-project-lite 0.2.14", + "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -12120,9 +12222,9 @@ dependencies = [ "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams 0.3.0", + "wasm-streams", "web-sys", - "webpki-roots 0.25.3", + "webpki-roots 0.25.4", "winreg", ] @@ -12150,16 +12252,16 @@ dependencies = [ "futures-timer", "mime", "nom", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "reqwest", "thiserror", ] [[package]] name = "reqwest-middleware" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690" +checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" dependencies = [ "anyhow", "async-trait", @@ -12268,16 +12370,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "getrandom 0.2.12", + "cfg-if", + "getrandom 0.2.14", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -12482,9 +12585,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608a5726529f2f0ef81b8fde9873c4bb829d6b5b5ca6be4d97345ddf0749c825" +checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -12506,9 +12609,9 @@ dependencies = [ [[package]] name = "ruint-macro" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" +checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" [[package]] name = "rustc-demangle" @@ -12543,7 +12646,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.21", + "semver 1.0.22", ] [[package]] @@ -12585,11 +12688,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys 0.4.13", @@ -12610,26 +12713,26 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.7", + "ring 0.17.8", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", - "ring 0.17.7", + "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki 0.102.3", "subtle 2.5.0", "zeroize", ] @@ -12653,7 +12756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.1", + "rustls-pemfile 2.1.2", "rustls-pki-types", "schannel", "security-framework", @@ -12670,19 +12773,19 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.21.7", + "base64 0.22.0", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" +checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" [[package]] name = "rustls-webpki" @@ -12700,26 +12803,26 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.102.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "rusty-fork" @@ -12768,9 +12871,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "safe_arch" @@ -12915,7 +13018,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -12970,7 +13073,7 @@ dependencies = [ "futures", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-executor", "sc-transaction-pool-api", "sc-utils", @@ -13002,7 +13105,7 @@ dependencies = [ "log", "parity-db", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-state-db", "schnellru", @@ -13027,7 +13130,7 @@ dependencies = [ "libp2p-identity", "log", "mockall", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-utils", "serde", @@ -13085,7 +13188,7 @@ dependencies = [ "num-rational", "num-traits", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-consensus", "sc-consensus-epochs", @@ -13143,7 +13246,7 @@ dependencies = [ "futures", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-consensus", "sc-network", @@ -13176,7 +13279,7 @@ dependencies = [ "jsonrpsee 0.16.3", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-consensus-beefy", "sc-rpc", "serde", @@ -13206,7 +13309,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a824457a3384e7bc19d7ee587dffa5b646deb81a2351be0dd075c2110a3d677a" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "array-bytes 6.2.2", "async-trait", "dyn-clone", @@ -13216,7 +13319,7 @@ dependencies = [ "futures-timer", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "sc-block-builder", "sc-chain-spec", @@ -13331,7 +13434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3129f8af1f8aa5b05829ffec942feff61163054a536704ba48fdcc2276f6042a" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-executor-common", "sc-executor-wasmtime", "schnellru", @@ -13370,7 +13473,7 @@ dependencies = [ "cfg-if", "libc", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rustix 0.36.17", "sc-allocator", "sc-executor-common", @@ -13404,7 +13507,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93acb7f7c6e5e4be067e78b782a35d1a6d34dafcd955975a1aec05cab9dbf8fe" dependencies = [ "array-bytes 6.2.2", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "serde_json", "sp-application-crypto 30.0.0", "sp-core 28.0.0", @@ -13429,7 +13532,7 @@ dependencies = [ "mixnet", "multiaddr", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-network", "sc-transaction-pool-api", @@ -13463,7 +13566,7 @@ dependencies = [ "log", "mockall", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "partial_sort", "pin-project", "rand 0.8.5", @@ -13531,7 +13634,7 @@ version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd92792f3a04fcb1f21018c9f8a5d6d438d705a2548ffcdc7730280c667b8386" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "futures", "futures-timer", "libp2p", @@ -13642,7 +13745,7 @@ dependencies = [ "num_cpus", "once_cell", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "sc-client-api", "sc-network", @@ -13679,7 +13782,7 @@ dependencies = [ "jsonrpsee 0.16.3", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -13752,7 +13855,7 @@ dependencies = [ "jsonrpsee 0.16.3", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-chain-spec", "sc-client-api", "sc-transaction-pool-api", @@ -13783,7 +13886,7 @@ dependencies = [ "jsonrpsee 0.16.3", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "pin-project", "rand 0.8.5", "sc-chain-spec", @@ -13907,7 +14010,7 @@ checksum = "fac20128b09ac6305aaf482a72c918b35400f3955d7032971df499b0661a5e76" dependencies = [ "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sp-core 28.0.0", ] @@ -13976,7 +14079,7 @@ dependencies = [ "futures", "libp2p", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "pin-project", "rand 0.8.5", "sc-utils", @@ -13999,7 +14102,7 @@ dependencies = [ "libc", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "regex", "rustc-hash", "sc-client-api", @@ -14026,7 +14129,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -14041,7 +14144,7 @@ dependencies = [ "linked-hash-map", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sc-client-api", "sc-transaction-pool-api", "sc-utils", @@ -14084,7 +14187,7 @@ dependencies = [ "futures-timer", "lazy_static", "log", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "prometheus", "sp-arithmetic 23.0.0", ] @@ -14217,7 +14320,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774d" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "cfg-if", "hashbrown 0.13.2", ] @@ -14265,7 +14368,7 @@ dependencies = [ "aead", "arrayref", "arrayvec 0.7.4", - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "getrandom_or_panic", "merlin 3.0.0", "rand_core 0.6.4", @@ -14311,7 +14414,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -14358,9 +14461,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ "secp256k1-sys 0.9.2", ] @@ -14403,9 +14506,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.2" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -14416,9 +14519,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" dependencies = [ "core-foundation-sys", "libc", @@ -14444,9 +14547,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" dependencies = [ "serde", ] @@ -14480,9 +14583,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] @@ -14509,22 +14612,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -14571,7 +14674,7 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", ] [[package]] @@ -14607,7 +14710,7 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", ] [[package]] @@ -14679,9 +14782,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -14727,13 +14830,22 @@ dependencies = [ ] [[package]] -name = "simnode-tests" +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "simtests" version = "0.1.0" dependencies = [ "anyhow", "ckb-merkle-mountain-range", "futures", + "hash-db", + "indicatif", "ismp", + "jsonrpsee-core 0.22.4", "mmr-primitives", "pallet-ismp", "pallet-ismp-rpc", @@ -14744,17 +14856,13 @@ dependencies = [ "sp-keyring", "sp-mmr-primitives", "sp-runtime 31.0.1", + "sp-trie 29.0.0", "subxt", "subxt-utils", "tokio", + "trie-db 0.28.0", ] -[[package]] -name = "simple-mermaid" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" - [[package]] name = "siphasher" version = "0.3.11" @@ -14800,9 +14908,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smol" @@ -14833,7 +14941,7 @@ dependencies = [ "base64 0.21.7", "bip39", "blake2-rfc", - "bs58 0.5.0", + "bs58 0.5.1", "crossbeam-queue", "derive_more", "ed25519-zebra 3.1.0", @@ -14885,7 +14993,7 @@ dependencies = [ "base64 0.21.7", "bip39", "blake2-rfc", - "bs58 0.5.0", + "bs58 0.5.1", "chacha20", "crossbeam-queue", "derive_more", @@ -14922,8 +15030,8 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.1", - "x25519-dalek 2.0.0", + "wasmi 0.31.2", + "x25519-dalek 2.0.1", "zeroize", ] @@ -14946,7 +15054,7 @@ dependencies = [ "itertools 0.10.5", "log", "lru 0.10.1", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "serde", "serde_json", @@ -14979,7 +15087,7 @@ dependencies = [ "log", "lru 0.11.1", "no-std-net", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "pin-project", "rand 0.8.5", "rand_chacha 0.3.1", @@ -15000,16 +15108,16 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "snow" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58021967fd0a5eeeb23b08df6cc244a4d4a5b4aec1d27c9e02fad1a58b4cd74e" +checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" dependencies = [ "aes-gcm", "blake2 0.10.6", "chacha20poly1305", - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "rand_core 0.6.4", - "ring 0.17.7", + "ring 0.17.8", "rustc_version 0.4.0", "sha2 0.10.8", "subtle 2.5.0", @@ -15027,12 +15135,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -15096,11 +15204,11 @@ checksum = "0694be2891593450916d6b53a274d234bccbc86bcbada36ba23fc356989070c7" dependencies = [ "Inflector", "blake2 0.10.6", - "expander 2.0.0", + "expander 2.1.0", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15196,7 +15304,7 @@ dependencies = [ "futures", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "schnellru", "sp-api", "sp-consensus", @@ -15334,7 +15442,7 @@ dependencies = [ "log", "merlin 2.0.1", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "paste", "primitive-types", "rand 0.8.5", @@ -15368,7 +15476,7 @@ dependencies = [ "bitflags 1.3.2", "blake2 0.10.6", "bounded-collections", - "bs58 0.5.0", + "bs58 0.5.1", "dyn-clonable", "ed25519-zebra 3.1.0", "futures", @@ -15380,13 +15488,13 @@ dependencies = [ "log", "merlin 2.0.1", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "paste", "primitive-types", "rand 0.8.5", "scale-info", "schnorrkel 0.9.1", - "secp256k1 0.28.1", + "secp256k1 0.28.2", "secrecy", "serde", "sp-core-hashing 14.0.0", @@ -15414,7 +15522,7 @@ dependencies = [ "bitflags 1.3.2", "blake2 0.10.6", "bounded-collections", - "bs58 0.5.0", + "bs58 0.5.1", "dyn-clonable", "ed25519-zebra 3.1.0", "futures", @@ -15426,13 +15534,13 @@ dependencies = [ "log", "merlin 3.0.0", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "paste", "primitive-types", "rand 0.8.5", "scale-info", "schnorrkel 0.11.4", - "secp256k1 0.28.1", + "secp256k1 0.28.2", "secrecy", "serde", "sp-core-hashing 15.0.0", @@ -15500,7 +15608,7 @@ checksum = "7527f8dda7667c41009b2cd0efaddcb81709b9741bd5ee6d17b11bad835cc698" dependencies = [ "quote", "sp-core-hashing 15.0.0", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15510,7 +15618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "722cbecdbf5b94578137dbd07feb51e95f7de221be0c1ff4dcfe0bb4cd986929" dependencies = [ "kvdb", - "parking_lot 0.12.1", + "parking_lot 0.12.2", ] [[package]] @@ -15521,7 +15629,7 @@ checksum = "c7f531814d2f16995144c74428830ccf7d94ff4a7749632b83ad8199b181140c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15532,7 +15640,7 @@ checksum = "90fd2c660c3e940df93f4920b183cc103443d66503f68189fa7e4b3f09996a18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15543,7 +15651,7 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15643,12 +15751,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c55f26d89feedaf0faf81688b6e1e1e81329cd8b4c6a4fd6c5b97ed9dd068b8a" dependencies = [ "bytes", - "ed25519-dalek 2.1.0", + "ed25519-dalek 2.1.1", "libsecp256k1", "log", "parity-scale-codec", "rustversion", - "secp256k1 0.28.1", + "secp256k1 0.28.2", "sp-core 28.0.0", "sp-externalities 0.25.0", "sp-keystore 0.34.0", @@ -15680,7 +15788,7 @@ checksum = "9be3cdd67cc1d9c1db17c5cbc4ec4924054a8437009d167f21f6590797e4aa45" dependencies = [ "futures", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sp-core 21.0.0", "sp-externalities 0.19.0", "thiserror", @@ -15693,7 +15801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96806a28a62ed9ddecd0b28857b1344d029390f7c5c42a2ff9199cbf5638635c" dependencies = [ "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "sp-core 28.0.0", "sp-externalities 0.25.0", "thiserror", @@ -15927,7 +16035,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15937,11 +16045,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ebdb4aff8286f5095871b2f950037d690edb0fed0590af5f6735352533a53b6" dependencies = [ "Inflector", - "expander 2.0.0", + "expander 2.1.0", "proc-macro-crate 2.0.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15951,11 +16059,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfaf6e85b2ec12a4b99cd6d8d57d083e30c94b7f1b0d8f93547121495aae6f0c" dependencies = [ "Inflector", - "expander 2.0.0", + "expander 2.1.0", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -15998,7 +16106,7 @@ dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "smallvec", "sp-core 21.0.0", @@ -16019,7 +16127,7 @@ dependencies = [ "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "smallvec", "sp-core 28.0.0", @@ -16039,8 +16147,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fee6d4ceb2513f180e6e017fd6d6f3c9a1a122dcedee5fc8e4254d8a7ecf793d" dependencies = [ "aes-gcm", - "curve25519-dalek 4.1.1", - "ed25519-dalek 2.1.0", + "curve25519-dalek 4.1.2", + "ed25519-dalek 2.1.1", "hkdf", "parity-scale-codec", "rand 0.8.5", @@ -16054,7 +16162,7 @@ dependencies = [ "sp-runtime-interface 24.0.0", "sp-std 14.0.0", "thiserror", - "x25519-dalek 2.0.0", + "x25519-dalek 2.0.1", ] [[package]] @@ -16202,14 +16310,14 @@ version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4eeb7ef23f79eba8609db79ef9cef242f994f1f87a3c0387b4b5f177fda74" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "hash-db", "hashbrown 0.13.2", "lazy_static", "memory-db", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "scale-info", "schnellru", "sp-core 21.0.0", @@ -16226,13 +16334,13 @@ version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e4d24d84a0beb44a71dcac1b41980e1edf7fb722c7f3046710136a283cd479b" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "hash-db", "lazy_static", "memory-db", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "scale-info", "schnellru", @@ -16272,7 +16380,7 @@ dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -16384,9 +16492,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.46.0" +version = "1.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1114ee5900b8569bbc8b1a014a942f937b752af4b44f4607430b5f86cedaac0" +checksum = "4743ce898933fbff7bbf414f497c459a782d496269644b3d650a398ae6a487ba" dependencies = [ "Inflector", "num-format", @@ -16550,7 +16658,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "phf_shared 0.10.0", "precomputed-hash", ] @@ -16574,6 +16682,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.24.1" @@ -16592,13 +16706,19 @@ dependencies = [ "strum_macros 0.25.3", ] +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" + [[package]] name = "strum_macros" version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -16611,22 +16731,35 @@ version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ - "heck", + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.60", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", "proc-macro2", "quote", "rustversion", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "substrate-bip39" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e620c7098893ba667438b47169c00aacdd9e7c10e042250ce2b60b087ec97328" +checksum = "6a7590dc041b9bc2825e52ce5af8416c73dbe9d0654402bfd4b4941938b94d8f" dependencies = [ "hmac 0.11.0", "pbkdf2 0.8.0", - "schnorrkel 0.9.1", + "schnorrkel 0.11.4", "sha2 0.9.9", "zeroize", ] @@ -16748,7 +16881,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", - "toml 0.8.2", + "toml 0.8.12", "walkdir", "wasm-opt", ] @@ -16783,7 +16916,7 @@ dependencies = [ "either", "frame-metadata 16.0.0", "futures", - "getrandom 0.2.12", + "getrandom 0.2.14", "hex", "impl-serde", "jsonrpsee 0.16.3", @@ -16813,7 +16946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3213eb04567e710aa253b94de74337c7b663eea52114805b8723129763282779" dependencies = [ "frame-metadata 16.0.0", - "heck", + "heck 0.4.1", "hex", "jsonrpsee 0.16.3", "parity-scale-codec", @@ -16821,7 +16954,7 @@ dependencies = [ "quote", "scale-info", "subxt-metadata", - "syn 2.0.57", + "syn 2.0.60", "thiserror", "tokio", ] @@ -16835,7 +16968,7 @@ dependencies = [ "futures", "futures-timer", "futures-util", - "getrandom 0.2.12", + "getrandom 0.2.14", "instant", "js-sys", "send_wrapper 0.6.0", @@ -16858,10 +16991,10 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfda460cc5f701785973382c589e9bb12c23bb8d825bfc3ac547b7c672aba1c0" dependencies = [ - "darling 0.20.3", + "darling 0.20.8", "proc-macro-error", "subxt-codegen", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -16881,24 +17014,27 @@ dependencies = [ name = "subxt-utils" version = "0.1.0" dependencies = [ + "anyhow", + "futures", "ismp", "parity-scale-codec", + "reconnecting-jsonrpsee-ws-client 0.3.0 (git+https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client?rev=7c0817478c2741cc0889e7c75c645aad9f3cbb55)", "sp-core-hashing 15.0.0", "subxt", ] [[package]] name = "svm-rs" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20689c7d03b6461b502d0b95d6c24874c7d24dea2688af80486a130a06af3b07" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" dependencies = [ "dirs", "fs2", "hex", "once_cell", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "sha2 0.10.8", @@ -16915,7 +17051,7 @@ checksum = "aa64b5e8eecd3a8af7cfc311e29db31a268a62d5953233d3e8243ec77a71c4e3" dependencies = [ "build_const", "hex", - "semver 1.0.21", + "semver 1.0.22", "serde_json", "svm-rs", ] @@ -16933,9 +17069,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.57" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -17004,6 +17140,12 @@ dependencies = [ "sync-committee-primitives", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "synstructure" version = "0.12.6" @@ -17045,9 +17187,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "task-local-extensions" @@ -17060,14 +17202,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.9.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "redox_syscall 0.4.1", - "rustix 0.38.30", + "fastrand 2.0.2", + "rustix 0.38.34", "windows-sys 0.52.0", ] @@ -17097,7 +17238,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.30", + "rustix 0.38.34", "windows-sys 0.48.0", ] @@ -17109,9 +17250,9 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] @@ -17133,18 +17274,18 @@ checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -17155,9 +17296,9 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -17208,12 +17349,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", @@ -17228,10 +17370,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] @@ -17289,10 +17432,10 @@ dependencies = [ "libc", "mio", "num_cpus", - "parking_lot 0.12.1", - "pin-project-lite 0.2.13", + "parking_lot 0.12.2", + "pin-project-lite 0.2.14", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.6", "tokio-macros", "windows-sys 0.48.0", ] @@ -17305,7 +17448,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -17335,7 +17478,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.10", + "rustls 0.21.12", "tokio", ] @@ -17345,19 +17488,19 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ - "rustls 0.22.2", + "rustls 0.22.4", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "tokio", "tokio-util", ] @@ -17370,7 +17513,7 @@ checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" dependencies = [ "futures-util", "log", - "rustls 0.21.10", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", "tungstenite", @@ -17387,7 +17530,7 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "tokio", "tracing", ] @@ -17407,7 +17550,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", @@ -17416,14 +17559,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.2" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.22.12", ] [[package]] @@ -17441,24 +17584,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.2.5", - "serde", - "serde_spanned", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -17467,9 +17608,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.7", ] [[package]] @@ -17489,14 +17643,14 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "bytes", "futures-core", "futures-util", "http", "http-body", "http-range-header", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "tower-layer", "tower-service", ] @@ -17520,7 +17674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", - "pin-project-lite 0.2.13", + "pin-project-lite 0.2.14", "tracing-attributes", "tracing-core", ] @@ -17533,7 +17687,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -17574,11 +17728,11 @@ version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f074568687ffdfd0adb6005aa8d1d96840197f2c159f80471285f08694cf0ce" dependencies = [ - "expander 2.0.0", + "expander 2.1.0", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -17622,7 +17776,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "parking_lot 0.11.2", "regex", "serde", @@ -17642,10 +17796,14 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "matchers 0.1.0", "nu-ansi-term", + "once_cell", + "regex", "sharded-slab", "smallvec", "thread_local", + "tracing", "tracing-core", "tracing-log 0.2.0", ] @@ -17733,7 +17891,7 @@ dependencies = [ "ipconfig", "lazy_static", "lru-cache", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "resolv-conf", "smallvec", "thiserror", @@ -17804,7 +17962,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.21.10", + "rustls 0.21.12", "sha1", "thiserror", "url", @@ -17895,9 +18053,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -17968,7 +18126,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", "serde", ] @@ -18037,9 +18195,9 @@ checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -18066,11 +18224,20 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasix" +version = "0.12.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d" +dependencies = [ + "wasi 0.11.0+wasi-snapshot-preview1", +] + [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -18078,24 +18245,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -18105,9 +18272,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -18115,28 +18282,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-bindgen-test" -version = "0.3.41" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143ddeb4f833e2ed0d252e618986e18bfc7b0e52f2d28d77d05b2f045dd8eb61" +checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" dependencies = [ "console_error_panic_hook", "js-sys", @@ -18148,13 +18315,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.41" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5211b7550606857312bba1d978a8ec75692eae187becc5e680444fffc5e6f89" +checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -18168,9 +18335,9 @@ dependencies = [ [[package]] name = "wasm-opt" -version = "0.116.0" +version = "0.116.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc942673e7684671f0c5708fc18993569d184265fd5223bb51fc8e5b9b6cfd52" +checksum = "2fd87a4c135535ffed86123b6fb0f0a5a0bc89e50416c942c5f0662c645f679c" dependencies = [ "anyhow", "libc", @@ -18206,19 +18373,6 @@ dependencies = [ "cxx-build", ] -[[package]] -name = "wasm-streams" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "wasm-streams" version = "0.4.0" @@ -18263,9 +18417,9 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acfc1e384a36ca532d070a315925887247f3c7e23567e23e0ac9b1c5d6b8bf76" +checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7" dependencies = [ "smallvec", "spin 0.9.8", @@ -18276,9 +18430,9 @@ dependencies = [ [[package]] name = "wasmi_arena" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" +checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" [[package]] name = "wasmi_core" @@ -18316,9 +18470,9 @@ dependencies = [ [[package]] name = "wasmparser-nostd" -version = "0.100.1" +version = "0.100.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157cab83003221bfd385833ab587a039f5d6fa7304854042ba358a3b09e0724" +checksum = "d5a015fe95f3504a94bb1462c717aae75253e39b9dd6c3fb1062c934535c64aa" dependencies = [ "indexmap-nostd", ] @@ -18520,9 +18674,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -18534,7 +18688,7 @@ version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -18558,9 +18712,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.3" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "westend-runtime" @@ -18695,14 +18849,14 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.30", + "rustix 0.38.34", ] [[package]] name = "wide" -version = "0.7.14" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b31891d644eba1789fb6715f27fbc322e4bdf2ecdc412ede1993246159271613" +checksum = "81a1851a719f11d1d2fea40e15c72f6c00de8c142d7ac47c1441cc7e4d0d5bc6" dependencies = [ "bytemuck", "safe_arch", @@ -18710,9 +18864,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi" @@ -18732,11 +18886,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -18770,7 +18924,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -18797,7 +18951,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -18832,17 +18986,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -18859,9 +19014,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -18877,9 +19032,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -18895,9 +19050,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -18913,9 +19074,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -18931,9 +19092,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -18949,9 +19110,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -18967,15 +19128,24 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.5.34" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" dependencies = [ "memchr", ] @@ -19031,11 +19201,11 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "rand_core 0.6.4", "serde", "zeroize", @@ -19068,7 +19238,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -19128,7 +19298,7 @@ dependencies = [ "futures", "log", "nohash-hasher", - "parking_lot 0.12.1", + "parking_lot 0.12.2", "rand 0.8.5", "static_assertions", ] @@ -19141,9 +19311,9 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "yansi" -version = "1.0.0-rc.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yap" @@ -19177,7 +19347,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] @@ -19197,7 +19367,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.60", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 87b5b1b95..bcb582cc5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,12 +53,12 @@ members = [ "evm/abi", # hyperclient - "modules/client", + "modules/hyperclient", # simnode - "modules/trees/mmr/simnode-tests", + "parachain/simtests", # subxt subxt-utils - "modules/subxt/subxt-utils" + "modules/subxt/utils" ] # Config for 'cargo dist' @@ -120,12 +120,12 @@ sp-std = { version = "14.0.0", default-features = false } sp-transaction-pool = { version = "26.0.0", default-features = false } sp-version = { version = "29.0.0", default-features = false } sp-genesis-builder = { version = "0.7.0", default-features = false } -pallet-xcm = { version = "7.0.0", default-features = false } -polkadot-parachain-primitives = { version = "6.0.0", default-features = false } -polkadot-runtime-common = { version = "7.0.0", default-features = false } -staging-xcm = { version = "7.0.0", default-features = false } -staging-xcm-builder = { version = "7.0.0", default-features = false } -staging-xcm-executor = { version = "7.0.0", default-features = false } +pallet-xcm = { version = "=7.0.0", default-features = false } +polkadot-parachain-primitives = { version = "=6.0.0", default-features = false } +polkadot-runtime-common = { version = "=7.0.0", default-features = false } +staging-xcm = { version = "=7.0.0", default-features = false } +staging-xcm-builder = { version = "=7.0.0", default-features = false } +staging-xcm-executor = { version = "=7.0.0", default-features = false } cumulus-primitives-aura = { version = "0.7.0", default-features = false } cumulus-pallet-session-benchmarking = { version = "9.0.0", default-features = false } cumulus-pallet-aura-ext = { version = "0.7.0", default-features = false } @@ -133,7 +133,7 @@ cumulus-pallet-dmp-queue = { version = "0.7.0", default-features = false } cumulus-pallet-parachain-system = { version = "0.7.0", default-features = false, features = [ "parameterized-consensus-hook", ] } -cumulus-pallet-xcm = { version = "0.7.0", default-features = false } +cumulus-pallet-xcm = { version = "=0.7.0", default-features = false } cumulus-pallet-xcmp-queue = { version = "0.7.0", default-features = false } cumulus-primitives-core = { version = "0.7.0", default-features = false } cumulus-primitives-timestamp = { version = "0.7.0", default-features = false } @@ -193,12 +193,13 @@ xcm-simulator-example = "7.0.0" xcm-simulator = "7.0.0" polkadot-runtime-parachains = "7.0.0" -ethers = { git = "https://github.com/polytope-labs/ethers-rs", rev = "f8ab49e1ca2d68e8bf1113e705ade38e5f30b850", features = [ +ethers = { git = "https://github.com/polytope-labs/ethers-rs", rev = "a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4", features = [ "ethers-solc", ], default-features = false } -ethers-contract-abigen = { git = "https://github.com/polytope-labs/ethers-rs", rev = "f8ab49e1ca2d68e8bf1113e705ade38e5f30b850" } +ethers-contract-abigen = { git = "https://github.com/polytope-labs/ethers-rs", rev = "a61f4fd78cd9a417c74a1609e5007e17f0f0ebb4" } -forge-testsuite = { git = "https://github.com/polytope-labs/forge-testsuite", rev = "50c6686ddfe61c697013bd067ac5fae7a0d5723e" } +forge-testsuite = { git = "https://github.com/polytope-labs/forge-testsuite", rev = "faa97adf1b969f64cf77259f8f018a2aafefb70a" } +foundry-evm = { git = "https://github.com/polytope-labs/foundry", rev = "1ffcca7485e84a9a356c5adb619ee1f038295739" } merkle-mountain-range = { package = "ckb-merkle-mountain-range", version = "0.5.2", default-features = false } trie-db = { version = "0.28.0", default-features = false } @@ -209,7 +210,7 @@ scale-info = { version = "2.1.1", default-features = false, features = [ "derive", ] } log = { version = "0.4.21", default-features = false } - +anyhow = {version = "1.0.71", default-features = false } alloy-rlp = { version = "0.3.2", default-features = false } alloy-rlp-derive = "0.3.2" alloy-primitives = { version = "0.6.0", default-features = false, features = [ @@ -225,7 +226,7 @@ ismp = { path = "./modules/ismp/core", default-features = false } ismp-testsuite = { path = "./modules/ismp/testsuite" } ismp-solidity-abi = { path = "./evm/abi", default-features = false } -hyperclient = { path = "./modules/client", default-features = false } +hyperclient = { path = "modules/hyperclient", default-features = false } # consensus provers & verifiers beefy-verifier-primitives = { path = "./modules/consensus/beefy/primitives", default-features = false } @@ -279,8 +280,8 @@ nexus-runtime = { path = "./parachain/runtimes/nexus", default-features = false # Simnode sc-simnode = { version = "1.6.1" } simnode-runtime-api = { version = "1.6.0", default-features = false } -simnode-tests = { path = "modules/trees/mmr/simnode-tests" } +simnode-tests = { path = "parachain/simtests" } # Subxt subxt = { version = "0.30.1", default-features = false } -subxt-utils = { path = "modules/subxt/subxt-utils", default-features = false } +subxt-utils = { path = "modules/subxt/utils", default-features = false } diff --git a/evm/abi/Cargo.toml b/evm/abi/Cargo.toml index 92a87f96f..89fe75aab 100644 --- a/evm/abi/Cargo.toml +++ b/evm/abi/Cargo.toml @@ -6,13 +6,13 @@ authors = ["Polytope Labs "] description = "Generated rust types for the ISMP solidity ABI" [build-dependencies] -anyhow = "1.0.75" +anyhow.workspace = true ethers-contract-abigen = { workspace = true } forge-testsuite = { workspace = true } [dependencies] primitive-types = "0.12.2" -anyhow = "1.0.79" +anyhow.workspace = true ethers = { workspace = true } ismp = { workspace = true } diff --git a/evm/abi/src/generated/beefy.rs b/evm/abi/src/generated/beefy.rs index 7e3c2be90..b34c463de 100644 --- a/evm/abi/src/generated/beefy.rs +++ b/evm/abi/src/generated/beefy.rs @@ -371,16 +371,6 @@ pub mod beefy { ///The parsed JSON ABI of the contract. pub static BEEFY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0I\x9B8\x03\x80b\0I\x9B\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0=V[`\0Ub\0\0WV[`\0` \x82\x84\x03\x12\x15b\0\0PW`\0\x80\xFD[PQ\x91\x90PV[aI4\x80b\0\0g`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cN\x9F\xDB\xEC\x14a\0gW\x80c^9\x9A\xEA\x14a\0\x93W\x80c}uU\x98\x14a\0\xB4W\x80c\x90\\\x05\x11\x14a\0\xD5W\x80c\xAF\x8B\x91\xD6\x14a\0\xECW\x80c\xBA\xBB1\x18\x14a\x01\x11W[`\0\x80\xFD[a\0ucaura`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA6a\0\xA16`\x04a8\xA5V[a\x01\x1FV[`@Qa\0\x8A\x92\x91\x90a:aV[a\0\xC7a\0\xC26`\x04a:\xA9V[a\x01dV[`@Qa\0\x8A\x92\x91\x90a;\\V[a\0\xDEa.\xE0\x81V[`@Q\x90\x81R` \x01a\0\x8AV[a\0\xF8a\r\xAD`\xF3\x1B\x81V[`@Q`\x01`\x01`\xF0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\0\x8AV[a\0uc\x04\x954\xD5`\xE4\x1B\x81V[a\x01'a1\x14V[a\x01/a1wV[`\0\x80a\x01@\x86\x86`\0\x01Qa\x02[V[\x91P\x91P`\0a\x01T\x82\x87` \x01Qa\x07QV[\x92\x94P\x91\x92PPP[\x92P\x92\x90PV[``a\x01na1wV[`\0\x84\x80` \x01\x90Q\x81\x01\x90a\x01\x84\x91\x90a<5V[\x90P`\0\x80\x85\x80` \x01\x90Q\x81\x01\x90a\x01\x9D\x91\x90aA\x0EV[\x91P\x91P`\0\x800`\x01`\x01`\xA0\x1B\x03\x16c^9\x9A\xEA\x86`@Q\x80`@\x01`@R\x80\x88\x81R` \x01\x87\x81RP`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xE6\x92\x91\x90aC\xCFV[a\x01\xA0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02(\x91\x90aE/V[\x91P\x91P\x81`@Q` \x01a\x02=\x91\x90aE\xCAV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x99\x90\x98P\x96PPPPPPPV[a\x02ca1\x14V[\x81Q` \x80\x82\x01QQ\x91Q\x01Q\x84Q`\0\x92\x91\x90\x81\x11a\x02\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7Fconsensus clients only accept pr`D\x82\x01Rsoofs for new headers``\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xF9\x82\x87`@\x01Q` \x01Qa\x0B_V[\x80a\x03\x11WPa\x03\x11\x82\x87``\x01Q` \x01Qa\x0B_V[a\x03iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FSuper majority threshold not rea`D\x82\x01Rc\x18\xDA\x19Y`\xE2\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[\x84QQ`@\x80\x88\x01QQ\x90\x82\x01Q\x14\x80a\x03\x8BWP``\x87\x01QQ`@\x82\x01Q\x14[a\x03\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x15[\x9A\xDB\x9B\xDD\xDB\x88\x18]]\x1A\x1B\xDC\x9A]\x1EH\x1C\xD9]`Z\x1B`D\x82\x01R`d\x01a\x02\xDEV[`@\x80\x88\x01QQ\x90\x82\x01Q\x82QQ\x91\x14\x90`\0\x80[\x82\x81\x10\x15a\x04\x8FW\x84Q\x80Qa\r\xAD`\xF3\x1B\x91\x90\x83\x90\x81\x10a\x04\x08Wa\x04\x08aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xF0\x1B\x03\x19\x16\x14\x80\x15a\x04KWP\x84Q\x80Q\x82\x90\x81\x10a\x04:Wa\x04:aE\xD9V[` \x02` \x01\x01Q` \x01QQ` \x14[\x15a\x04}Wa\x04z\x85`\0\x01Q\x82\x81Q\x81\x10a\x04iWa\x04iaE\xD9V[` \x02` \x01\x01Q` \x01Qa\x0B\x8DV[\x91P[\x80a\x04\x87\x81aF\x05V[\x91PPa\x03\xE4V[P\x80a\x04\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FMmr root hash not found\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[`\0a\x04\xE8\x85a\x0B\xF5V[\x80Q\x90` \x01 \x90P`\0\x87`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\x0BWa\x05\x0Ba2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05PW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x05)W\x90P[P\x90P`\0[\x88\x81\x10\x15a\x06\x1FW`\0\x8C`\0\x01Q` \x01Q\x82\x81Q\x81\x10a\x05zWa\x05zaE\xD9V[` \x02` \x01\x01Q\x90P`\0a\x05\x94\x85\x83`\0\x01Qa\r\x95V[\x90P`@Q\x80`@\x01`@R\x80\x83` \x01Q\x81R` \x01\x82`@Q` \x01a\x05\xD4\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81RP\x84\x84\x81Q\x81\x10a\x05\xFFWa\x05\xFFaE\xD9V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x06\x17\x90aF\x05V[\x91PPa\x05VV[P\x84\x15a\x06\x98Wa\x06=\x8C`@\x01Q`@\x01Q\x8C``\x01Q\x83a\r\xB9V[a\x06\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FInvalid current authorities proo`D\x82\x01R`3`\xF9\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[a\x06\xFBV[a\x06\xAF\x8C``\x01Q`@\x01Q\x8C``\x01Q\x83a\r\xB9V[a\x06\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7FInvalid next authorities proof\0\0`D\x82\x01R`d\x01a\x02\xDEV[a\x07\x06\x8C\x8C\x85a\r\xD1V[``\x80\x8D\x01QQ` \x8D\x01Q\x90\x91\x01QQ\x11\x15a\x075W``\x80\x8D\x01\x80Q`@\x8F\x01R` \x8D\x01Q\x90\x91\x01Q\x90R[PPP\x92\x88RPPPP` \x92\x90\x92\x01Q`\x80\x01Q\x92\x93\x91PPV[a\x07Ya1wV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07pWPP\x83Q`\0T` \x82\x01Q\x92\x93P\x90\x91\x14a\x07\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x15[\x9A\xDB\x9B\xDD\xDB\x88\x1C\x18\\\x98RY`\x92\x1B`D\x82\x01R`d\x01a\x02\xDEV[`\0a\x07\xF2\x82`@\x01Qa\x0E\xF7V[\x90P\x80` \x01Q`\0\x03a\x08TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FGenesis block should not be incl`D\x82\x01Rc\x1DY\x19Y`\xE2\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[`\0\x80`\0[\x83`\x80\x01QQ\x81\x10\x15a\t\xD0W\x83`\x80\x01Q\x81\x81Q\x81\x10a\x08}Wa\x08}aE\xD9V[` \x02` \x01\x01Q`@\x01Q\x80\x15a\x08\xD4WPc\x04\x954\xD5`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x84`\x80\x01Q\x82\x81Q\x81\x10a\x08\xB8Wa\x08\xB8aE\xD9V[` \x02` \x01\x01Q``\x01Q`\0\x01Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x15a\t\nWa\t\x07\x84`\x80\x01Q\x82\x81Q\x81\x10a\x08\xF2Wa\x08\xF2aE\xD9V[` \x02` \x01\x01Q``\x01Q` \x01Qa\x0B\x8DV[\x92P[\x83`\x80\x01Q\x81\x81Q\x81\x10a\t Wa\t aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x80\x15a\twWPcaura`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x84`\x80\x01Q\x82\x81Q\x81\x10a\t[Wa\t[aE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x01Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x15a\t\xBEW`\0a\t\xAC\x85`\x80\x01Q\x83\x81Q\x81\x10a\t\x97Wa\t\x97aE\xD9V[` \x02` \x01\x01Q` \x01Q` \x01Qa\x10\xF9V[\x90Pa\t\xBAa.\xE0\x82aF\x1EV[\x92PP[\x80a\t\xC8\x81aF\x05V[\x91PPa\x08ZV[P\x80`\0\x03a\n\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rstimestamp not found!``\x1B`D\x82\x01R`d\x01a\x02\xDEV[`@Q\x80`@\x01`@R\x80\x85`\0\x01Q\x81R` \x01a\n\\\x86` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[a\ni\x87`@\x01Qa\x11{V[`@Q` \x01a\nz\x92\x91\x90aF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81RP\x85`\0\x81Q\x81\x10a\n\xA6Wa\n\xA6aE\xD9V[` \x02` \x01\x01\x81\x90RP`\0`@Q\x80``\x01`@R\x80\x86` \x01Q\x81R` \x01\x85` \x01Q\x81R` \x01`@Q\x80``\x01`@R\x80\x85\x81R` \x01\x86\x81R` \x01\x87`@\x01Q\x81RP\x81RP\x90Pa\x0B\x05\x89\x89` \x01Q\x88a\r\xB9V[a\x0BQW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7FInvalid parachains heads proof\0\0`D\x82\x01R`d\x01a\x02\xDEV[\x95PPPPPP[\x92\x91PPV[`\0`\x03a\x0Bn\x83`\x02aF\x1EV[a\x0Bx\x91\x90aF|V[a\x0B\x83\x90`\x01aF\x90V[\x90\x92\x10\x15\x92\x91PPV[`\0` \x82Q\x10\x15a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FBytes:: toBytes32: data is to sh`D\x82\x01Rc7\xB9:\x17`\xE1\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[P` \x01Q\x90V[\x80QQ`@\x80Q` \x81\x01\x90\x91R`\0\x80\x82R``\x92\x91\x90[\x82\x81\x10\x15a\x0C\xC4W\x84Q\x80Q\x82\x90\x81\x10a\x0C*Wa\x0C*aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`@Q` \x01a\x0CV\x91\x90`\x01`\x01`\xF0\x1B\x03\x19\x91\x90\x91\x16\x81R`\x02\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0C\x8F\x86`\0\x01Q\x83\x81Q\x81\x10a\x0C~Wa\x0C~aE\xD9V[` \x02` \x01\x01Q` \x01Qa\x11{V[`@Q` \x01a\x0C\xA0\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P\x80\x80a\x0C\xBC\x90aF\x05V[\x91PPa\x0C\x0EV[P`\0a\x0C\xD0\x83a\x11\xAFV[\x82`@Q` \x01a\x0C\xE2\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\r$\x86` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[a\r1\x87`@\x01Qa\x14RV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x92\x16` \x83\x01R`\x01`\x01`\xC0\x1B\x03\x19\x16`$\x82\x01R`,\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x81\x81`@Q` \x01a\r{\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x94PPPPP\x91\x90PV[`\0\x80`\0a\r\xA4\x85\x85a\x14\xBCV[\x91P\x91Pa\r\xB1\x81a\x14\xFEV[P\x93\x92PPPV[`\0a\r\xC5\x83\x83a\x16KV[\x84\x14\x90P[\x93\x92PPPV[`\0a\r\xE0\x83` \x01Qa\x19~V[\x80Q\x90` \x01 \x90P`\0a\x0E\x01\x85` \x01Q\x85` \x01Q` \x01Qa\x1BFV[a\x0E\x0C\x90`\x01aF\x90V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x0E'W\x90PP\x90P`@Q\x80``\x01`@R\x80\x86` \x01Q`\xA0\x01Q\x81R` \x01\x86` \x01Q`\xC0\x01Q\x81R` \x01\x84\x81RP\x81`\0\x81Q\x81\x10a\x0E\x94Wa\x0E\x94aE\xD9V[` \x02` \x01\x01\x81\x90RPa\x0E\xAF\x84\x86`@\x01Q\x83\x85a\x1BhV[a\x0E\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x11`$\x82\x01Rp$\xB7;0\xB64\xB2\x10&\xB6\xB9\x10(97\xB7\xB3`y\x1B`D\x82\x01R`d\x01a\x02\xDEV[PPPPPPV[`@\x80Q`\xA0\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R``\x80\x84\x01\x83\x90R`\x80\x84\x01R\x83Q\x80\x85\x01\x90\x94R\x84\x84R\x83\x81\x01\x82\x90R\x91\x92\x91a\x0FI\x90a\x0FD\x90\x84\x90a\x1B\x80V[a\x0B\x8DV[\x90P`\0a\x0FV\x83a\x1C\x01V[\x90P`\0a\x0Fha\x0FD\x85` a\x1B\x80V[\x90P`\0a\x0Fza\x0FD\x86` a\x1B\x80V[\x90P`\0a\x0F\x87\x86a\x1C\x01V[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xA3Wa\x0F\xA3a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDCW\x81` \x01[a\x0F\xC9a1\xAAV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x0F\xC1W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x10\xCAW`\0a\x0F\xF5\x89a\x1D\xE6V[\x90Pa\x0F\xFFa1\xAAV[`\xFF\x82\x16a\x10\x13W`\x01`\xC0\x82\x01Ra\x10\x97V[`\x03\x19`\xFF\x83\x16\x01a\x109W`\x01`@\x82\x01Ra\x10/\x8Aa\x1E\x82V[``\x82\x01Ra\x10\x97V[`\x04\x19`\xFF\x83\x16\x01a\x10_W`\x01`\x80\x82\x01Ra\x10U\x8Aa\x1E\x82V[`\xA0\x82\x01Ra\x10\x97V[`\x05\x19`\xFF\x83\x16\x01a\x10\x82W`\x01\x81Ra\x10x\x8Aa\x1E\x82V[` \x82\x01Ra\x10\x97V[`\x07\x19`\xFF\x83\x16\x01a\x10\x97W`\x01a\x01\0\x82\x01R[\x80\x84\x84\x81Q\x81\x10a\x10\xAAWa\x10\xAAaE\xD9V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x10\xC2\x90aF\x05V[\x91PPa\x0F\xE2V[P`@\x80Q`\xA0\x81\x01\x82R\x96\x87R` \x87\x01\x95\x90\x95R\x93\x85\x01\x92\x90\x92R``\x84\x01RP`\x80\x82\x01R\x93\x92PPPV[\x80Q`\0\x90\x81\x90[\x80\x15a\x11tWa\x11\x12`\x01\x82aF\xD2V[a\x11\x1D\x90`\x08aF\x1EV[a\x11(\x90`\x02aG\xC9V[\x84a\x114`\x01\x84aF\xD2V[\x81Q\x81\x10a\x11DWa\x11DaE\xD9V[\x01` \x01Qa\x11V\x91\x90`\xF8\x1CaF\x1EV[a\x11`\x90\x83aF\x90V[\x91P\x80a\x11l\x81aG\xD5V[\x91PPa\x11\x01V[P\x92\x91PPV[``a\x11\x87\x82Qa\x11\xAFV[\x82`@Q` \x01a\x11\x99\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```@\x82\x10\x15a\x11\xD9W`@Q`\x01`\x01`\xF8\x1B\x03\x19`\xFA\x84\x90\x1B\x16` \x82\x01R`!\x01a\x11\x99V[a@\0\x82\x10\x15a\x12,Wa\x12\ta\x11\xF5`\x02\x84\x90\x1B`\x01aF\x90V[`\x08\x81\x81\x1Bb\xFF\xFF\0\x16\x91\x90\x1C`\xFF\x16\x17\x90V[`@Q` \x01a\x11\x99\x91\x90`\xF0\x91\x90\x91\x1B`\x01`\x01`\xF0\x1B\x03\x19\x16\x81R`\x02\x01\x90V[c@\0\0\0\x82\x10\x15a\x12\x90Wa\x12ma\x12I`\x02\x84\x81\x1B\x90aF\x90V[`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17\x90V[`@Q` \x01a\x11\x99\x91\x90`\xE0\x91\x90\x91\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x04\x01\x90V[`\0a\x14\x04a\x13\xDE\x84`\0\x81\x90P`\x08\x81~\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\x16\x90\x1B`\x08\x82\x7F\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\x16\x90\x1C\x17\x90P`\x10\x81}\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\x16\x90\x1B`\x10\x82\x7F\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\x16\x90\x1C\x17\x90P` \x81{\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\x16\x90\x1B` \x82\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\x16\x90\x1C\x17\x90P`@\x81w\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B`@\x82w\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x1C\x17\x90P`\x80\x81\x90\x1B`\x80\x82\x90\x1C\x17\x90P\x91\x90PV[`@Q` \x01a\x13\xF0\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1E\xEFV[\x80Q\x90\x91P`\0`\x02a\x14\x18`\x04\x84aF\xD2V[a\x14$\x91\x1B`\x03aF\x90V[\x90P\x80\x83`@Q` \x01a\x149\x92\x91\x90aG\xECV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x93PPPP\x91\x90PV[`\0e\xFF\0\0\0\xFF\0`\x08\x83\x81\x1B\x91\x82\x16d\xFF\0\0\0\xFF\x91\x85\x90\x1C\x91\x82\x16\x17`\x10\x90\x81\x1Bg\xFF\0\0\0\xFF\0\0\0\x93\x90\x93\x16f\xFF\0\0\0\xFF\0\0\x92\x90\x92\x16\x91\x90\x91\x17\x90\x1C\x17` \x81\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\x16\x91\x90\x1Cc\xFF\xFF\xFF\xFF\x16\x17`\xC0\x1B\x92\x91PPV[`\0\x80\x82Q`A\x03a\x14\xF2W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x14\xE6\x87\x82\x85\x85a\x1F\\V[\x94P\x94PPPPa\x01]V[P`\0\x90P`\x02a\x01]V[`\0\x81`\x04\x81\x11\x15a\x15\x12Wa\x15\x12aH\x1BV[\x03a\x15\x1AWPV[`\x01\x81`\x04\x81\x11\x15a\x15.Wa\x15.aH\x1BV[\x03a\x15{W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[`\x02\x81`\x04\x81\x11\x15a\x15\x8FWa\x15\x8FaH\x1BV[\x03a\x15\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02\xDEV[`\x03\x81`\x04\x81\x11\x15a\x15\xF0Wa\x15\xF0aH\x1BV[\x03a\x16HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[PV[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81a\x16\x8AV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x16cW\x90P[P\x90Pa\x16\xB1\x83\x85`\0\x81Q\x81\x10a\x16\xA4Wa\x16\xA4aE\xD9V[` \x02` \x01\x01Qa V[\x84`\0\x81Q\x81\x10a\x16\xC4Wa\x16\xC4aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x83Q`\0[\x81\x81\x10\x15a\x19FW`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81a\x17\x19V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x16\xF2W\x90P[P\x90P\x83Q`\0\x03a\x17FW\x86\x82\x81Q\x81\x10a\x177Wa\x177aE\xD9V[` \x02` \x01\x01Q\x90Pa\x17lV[a\x17i\x87\x83\x81Q\x81\x10a\x17[Wa\x17[aE\xD9V[` \x02` \x01\x01Q\x85a V[\x90P[a\x17x\x81Q`\x02a\",V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x8FWa\x17\x8Fa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xD4W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x17\xADW\x90P[P\x81Q\x90\x94P`\0\x90\x81[\x81\x81\x10\x15a\x19/W\x81a\x17\xF3\x82`\x01aF\x90V[\x10a\x18gW`\0\x84\x82\x81Q\x81\x10a\x18\x0CWa\x18\x0CaE\xD9V[` \x02` \x01\x01Q\x90Pa\x18>\x85\x83\x81Q\x81\x10a\x18+Wa\x18+aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x02a\"TV[\x81R\x87Q\x81\x90\x89\x90\x86\x90\x81\x10a\x18VWa\x18VaE\xD9V[` \x02` \x01\x01\x81\x90RPPa\x19\x1DV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x18\x90\x85\x83\x81Q\x81\x10a\x18+Wa\x18+aE\xD9V[\x81R\x84Qa\x18\xEF\x90\x86\x90\x84\x90\x81\x10a\x18\xAAWa\x18\xAAaE\xD9V[` \x02` \x01\x01Q` \x01Q\x86\x84`\x01a\x18\xC4\x91\x90aF\x90V[\x81Q\x81\x10a\x18\xD4Wa\x18\xD4aE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x91\x82R` R`@\x90 \x90V[` \x82\x01R\x87Q\x81\x90\x89\x90\x86\x90\x81\x10a\x19\nWa\x19\naE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x90\x92\x01\x91[a\x19(`\x02\x82aF\x90V[\x90Pa\x17\xDFV[PPPP\x80\x80a\x19>\x90aF\x05V[\x91PPa\x16\xD4V[P\x81Q`\x01\x14a\x19UW`\0\x80\xFD[\x81`\0\x81Q\x81\x10a\x19hWa\x19haE\xD9V[` \x02` \x01\x01Q` \x01Q\x92PPP\x92\x91PPV[```\0\x82`\0\x01Q`@Q` \x01a\x19\xAA\x91\x90`\xF8\x91\x90\x91\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x81R`\x01\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x19\xE8\x84` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[`@Q` \x01a\x19\xF9\x92\x91\x90aH1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x85\x82\x01Q` \x84\x01R\x92P`\0\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1A8\x85``\x01Q`\0\x01Qa\x14RV[`@Q` \x01a\x1AI\x92\x91\x90aH`V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x1A\x8F\x85``\x01Q` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[\x85``\x01Q`@\x01Q`@Q` \x01a\x1A\xAA\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1A\xC8\x92\x91` \x01aF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x82\x82`@Q` \x01a\x1A\xEC\x92\x91\x90aF\xA3V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x80\x88\x01Q` \x84\x01R\x91\x83\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1B(\x92\x91` \x01aF\xA3V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x149\x92\x91` \x01aF\xA3V[`\0\x82`\0\x03a\x1BWWP\x80a\x0BYV[a\x1Ba\x83\x83aF\xD2V[\x90Pa\x0BYV[`\0a\x1Bu\x84\x84\x84a\"`V[\x90\x94\x14\x94\x93PPPPV[``\x82`\0\x01QQ\x82\x84` \x01Qa\x1B\x98\x91\x90aF\x90V[\x11\x15a\x1B\xA3W`\0\x80\xFD[\x81`\0\x03a\x1B\xC0WP`@\x80Q` \x81\x01\x90\x91R`\0\x81Ra\x0BYV[\x82Q` \x80\x85\x01Q\x91\x01\x90`\0\x90a\x1B\xE2\x90a\x1B\xDC\x90\x84aF\x90V[\x85a%-V[\x90P\x83\x85` \x01\x81\x81Qa\x1B\xF6\x91\x90aF\x90V[\x90RP\x94\x93PPPPV[`\0\x80a\x1C\r\x83a\x1D\xE6V[\x90P`\0a\x1C\x1C`\x04\x83aH\x8FV[\x90P`\0\x81`\xFF\x16`\0\x03a\x1C9WP`?`\x02\x83\x90\x1C\x16a\x1D\xDEV[\x81`\xFF\x16`\x01\x03a\x1C~W`\0a\x1CO\x86a\x1D\xE6V[\x90Pa?\xC0`\x06\x82\x90\x1B\x16a\x1Ck`?`\x02\x87\x90\x1C\x16\x82aH\xB1V[`\x01`\x01`@\x1B\x03\x16\x92Pa\x1D\xDE\x91PPV[\x81`\xFF\x16`\x02\x03a\x1C\xF1W`\0a\x1C\x94\x86a\x1D\xE6V[\x90P`\0a\x1C\xA1\x87a\x1D\xE6V[\x90P`\0a\x1C\xAE\x88a\x1D\xE6V[c\xFF\xFF\xFF\xFF`\x08\x94\x90\x94\x1Ba\xFF\0\x16`\xFF\x88\x16\x17`\x10\x93\x90\x93\x1Bb\xFF\0\0\x16\x92\x90\x92\x17`\x18\x92\x90\x92\x1Bc\xFF\0\0\0\x16\x91\x90\x91\x17`\x02\x1C\x91\x90\x91\x16\x91Pa\x1D\xDE\x90PV[\x81`\xFF\x16`\x03\x03a\x1D\x96W`\0a\x1D\x10`?`\x02\x86\x90\x1C\x16`\x04aH\xD1V[\x90P`\x08\x81`\xFF\x16\x11\x15a\x1DwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7Funexpected prefix decoding Compa`D\x82\x01Rg1\xBA\x1E*\xB4\xB7:\x1F`\xC1\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[a\x1D\x8Ca\x1D\x87\x87\x83`\xFF\x16a\x1B\x80V[a\x10\xF9V[\x96\x95PPPPPPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FCode should be unreachable\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[\x94\x93PPPPV[\x80QQ` \x82\x01Q`\0\x91\x90a\x1D\xFD\x90`\x01aF\x90V[\x11\x15a\x1E:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkOut of range`\xA0\x1B`D\x82\x01R`d\x01a\x02\xDEV[`\0\x82`\0\x01Q\x83` \x01Q\x81Q\x81\x10a\x1EVWa\x1EVaE\xD9V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\x01\x83` \x01\x81\x81Qa\x1Ey\x91\x90aF\x90V[\x90RP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R`\0a\x1E\xAEa\x1E\xA7\x84`\x04a\x1B\x80V[`\0a%\x83V[\x90P`\0a\x1E\xBB\x84a\x1C\x01V[\x90P`\0a\x1E\xC9\x85\x83a\x1B\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x84R` \x84\x01RP\x90\x93\x92PPPV[\x80Q``\x90`\0\x80a\x1F\x02`\x01\x84aF\xD2V[\x90P[\x84\x81\x81Q\x81\x10a\x1F\x17Wa\x1F\x17aE\xD9V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x15a\x1F3W\x80\x91Pa\x1FEV[\x80a\x1F=\x81aG\xD5V[\x91PPa\x1F\x05V[Pa\x1D\xDE\x84`\0a\x1FW\x84`\x01aF\x90V[a%\xE0V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1F\x93WP`\0\x90P`\x03a \x17V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1F\xE7W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a \x10W`\0`\x01\x92P\x92PPa \x17V[\x91P`\0\x90P[\x94P\x94\x92PPPV[\x81Q\x81Q``\x91`\0\x91\x82\x91\x82\x91\x82a 9\x82\x84aF\x90V[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a UWa Ua2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x9AW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a sW\x90P[P\x90P[\x83\x87\x10\x80\x15a \xACWP\x82\x86\x10[\x15a!\x81W\x88\x86\x81Q\x81\x10a \xC3Wa \xC3aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x8A\x88\x81Q\x81\x10a \xE1Wa \xE1aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x10\x15a!:W\x89\x87\x81Q\x81\x10a!\x05Wa!\x05aE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!\x1FWa!\x1FaE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x96\x87\x01\x96\x94\x90\x94\x01\x93a \x9EV[\x88\x86\x81Q\x81\x10a!LWa!LaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!fWa!faE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x95\x86\x01\x95\x94\x90\x94\x01\x93a \x9EV[\x83\x87\x10\x15a!\xD0W\x89\x87\x81Q\x81\x10a!\x9BWa!\x9BaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!\xB5Wa!\xB5aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x96\x87\x01\x96\x94\x90\x94\x01\x93a!\x81V[\x82\x86\x10\x15a\"\x1FW\x88\x86\x81Q\x81\x10a!\xEAWa!\xEAaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a\"\x04Wa\"\x04aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x95\x86\x01\x95\x94\x90\x94\x01\x93a!\xD0V[\x99\x98PPPPPPPPPV[`\0\x80a\"9\x83\x85aF|V[\x90Pa\"E\x83\x85aH\xEAV[\x15a\r\xCAW`\x01\x01\x93\x92PPPV[`\0a\r\xCA\x82\x84aF|V[`\0\x81`\x01\x14\x80\x15a\"sWP\x82Q`\x01\x14[\x80\x15a\"\x9DWP\x82`\0\x81Q\x81\x10a\"\x8DWa\"\x8DaE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x14[\x15a\"\xC8W\x82`\0\x81Q\x81\x10a\"\xB5Wa\"\xB5aE\xD9V[` \x02` \x01\x01Q`@\x01Q\x90Pa\r\xCAV[`\0a\"\xD3\x83a&7V[\x90P`\0\x81Q\x90P`\0`@Q\x80`@\x01`@R\x80`\0\x81R` \x01\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x07Wa#\x07a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90R`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x8A\x90R\x91\x92P\x90\x80[\x84\x81\x10\x15a$vW`\0\x86\x82\x81Q\x81\x10a#kWa#kaE\xD9V[` \x02` \x01\x01Q\x90P\x80`\x02a#\x82\x91\x90aG\xC9V[a#\x8C\x90\x84aF\x90V[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x91\x94P\x90\x81a#\xD3V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a#\xA6W\x90P[P\x8BQ\x90\x91P\x15a#\xEDWa#\xE8\x8B\x85a&\xDAV[\x9BP\x90P[\x80Q`\0\x03a$!W\x84Q` \x86\x01QQ\x03a$\nWPPa$vV[a$\x1C\x86a$\x17\x87a(\xD7V[a)\x0EV[a$lV[\x80Q`\x01\x14\x80\x15a$0WP\x81\x15[\x15a$]Wa$\x1C\x86\x82`\0\x81Q\x81\x10a$LWa$LaE\xD9V[` \x02` \x01\x01Q`@\x01Qa)\x0EV[a$l\x86a$\x17\x83\x88\x86a)>V[PP`\x01\x01a#OV[P\x82Q`\0\x19\x01\x83R[\x82Q\x15a%\0W`\0a$\x92\x84a+\x1BV[\x90P`\0a$\x9F\x85a+\x1BV[\x85Q`\x01\x01\x86R`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x82\x90R\x90\x91P``\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x85` \x01Q\x86`\0\x01Q\x81Q\x81\x10a$\xEDWa$\xEDaE\xD9V[` \x02` \x01\x01\x81\x81RPPPPa$\x80V[\x82` \x01Q`\0\x81Q\x81\x10a%\x17Wa%\x17aE\xD9V[` \x02` \x01\x01Q\x95PPPPPP\x93\x92PPPV[``\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a%GWa%Ga2CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%qW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P` \x81\x01a\x11t\x84\x82\x85a+SV[`\0\x80`\0[`\x04\x81\x10\x15a\r\xB1Wa%\x9D\x81`\x08aF\x1EV[\x85a%\xA8\x83\x87aF\x90V[\x81Q\x81\x10a%\xB8Wa%\xB8aE\xD9V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x91\x90\x91\x17\x90\x80a%\xD8\x81aF\x05V[\x91PPa%\x89V[\x82Q``\x90a%\xEF\x83\x85aF\x90V[\x11\x15a%\xFAW`\0\x80\xFD[\x81`\0\x03a&\x17WP`@\x80Q` \x81\x01\x90\x91R`\0\x81Ra\r\xCAV[` \x84\x01a&.a&(\x85\x83aF\x90V[\x84a%-V[\x95\x94PPPPPV[`@\x80Q\x81\x81Ra\x08 \x81\x01\x82R``\x91\x90`\0\x90\x82` \x82\x01a\x08\0\x806\x837\x01\x90PP\x90P`\0\x84[\x83\x82\x10\x15a&\xBEW\x80\x15a&\xBEW`\0a&{\x82a+\xD3V[\x90P\x80\x84\x84\x81Q\x81\x10a&\x90Wa&\x90aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra&\xA6\x81`\x02aG\xC9V[a&\xB0\x90\x83aF\xD2V[\x91P\x82`\x01\x01\x92PPa&bV[`\0a&\xCA\x83\x86aF\xD2V[\x84Q\x03\x84RP\x91\x95\x94PPPPPV[``\x80`\0\x80\x85Q\x90P[\x80\x82\x10\x15a'$W\x85\x82\x81Q\x81\x10a&\xFFWa&\xFFaE\xD9V[` \x02` \x01\x01Q` \x01Q\x85\x11\x15a'$W\x81a'\x1C\x81aF\x05V[\x92PPa&\xE5V[`\0\x82\x15a'2W\x82a'5V[`\0[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a'QWa'Qa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x9CW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a'oW\x90P[P\x90P`\0a'\xAB\x83\x85aF\xD2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xC2Wa'\xC2a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\rW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a'\xE0W\x90P[P\x82Q\x90\x91P`\0\x90[\x80\x82\x10\x15a(gW\x8A\x82\x81Q\x81\x10a(1Wa(1aE\xD9V[` \x02` \x01\x01Q\x84\x83\x81Q\x81\x10a(KWa(KaE\xD9V[` \x02` \x01\x01\x81\x90RP\x81a(`\x90aF\x05V[\x91Pa(\x17V[`\0[\x86\x83\x10\x15a(\xC5W\x8B\x83\x81Q\x81\x10a(\x84Wa(\x84aE\xD9V[` \x02` \x01\x01Q\x84\x82\x81Q\x81\x10a(\x9EWa(\x9EaE\xD9V[` \x02` \x01\x01\x81\x90RP\x82a(\xB3\x90aF\x05V[\x92Pa(\xBE\x81aF\x05V[\x90Pa(jV[P\x92\x9A\x91\x99P\x90\x97PPPPPPPPV[`\0\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a(\xF4Wa(\xF4aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Q\x83Q`\x01\x01\x90\x93RP\x90\x91\x90PV[\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a))Wa))aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80Q`\x01\x01\x90RV[`\0``\x80a)L\x86a,gV[\x92P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a)jWa)ja2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)\x9DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a)\x88W\x90P[P\x90P`\0[\x85\x81\x10\x15a+\x05W`\0a)\xB7\x82\x88aF\xD2V[a)\xC2\x90`\x02aG\xC9V[\x90P\x80\x85Q\x03a)\xD2WPa+\x05V[`\0a)\xDD\x86a-\xE5V[\x90P`\0a)\xEB\x82\x88a.\xDFV[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x08Wa*\x08a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a*MW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a*&W\x90P[P\x86\x86\x81Q\x81\x10a*`Wa*`aE\xD9V[` \x02` \x01\x01\x81\x90RP`\0[\x81\x81\x10\x15a*\xEAW`@Q\x80`@\x01`@R\x80\x84\x83\x81Q\x81\x10a*\x93Wa*\x93aE\xD9V[` \x02` \x01\x01Q\x81R` \x01a*\xA9\x8Ea(\xD7V[\x81RP\x87\x87\x81Q\x81\x10a*\xBEWa*\xBEaE\xD9V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a*\xD7Wa*\xD7aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*nV[Pa*\xF4\x83a0\x01V[\x97P\x84`\x01\x01\x94PPPPPa)\xA3V[Pa+\x10\x81\x83a\x16KV[\x97\x96PPPPPPPV[`\0\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a+8Wa+8aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Q\x83Q`\0\x19\x01\x90\x93RP\x90\x91\x90PV[` \x81\x10a+\x8BW\x82Q\x82Ra+j` \x83aF\x90V[\x91Pa+w` \x84aF\x90V[\x92Pa+\x84` \x82aF\xD2V[\x90Pa+SV[`\0\x81\x15a+\xBBW`\x01a+\xA0\x83` aF\xD2V[a+\xAC\x90a\x01\0aG\xC9V[a+\xB6\x91\x90aF\xD2V[a+\xBFV[`\0\x19[\x93Q\x83Q\x85\x16\x94\x19\x16\x93\x90\x93\x17\x90\x91RPPV[`\0\x80`\x80\x83\x90\x1C\x15a+\xE8W`\x80\x92\x83\x1C\x92\x01[`@\x83\x90\x1C\x15a+\xFAW`@\x92\x83\x1C\x92\x01[` \x83\x90\x1C\x15a,\x0CW` \x92\x83\x1C\x92\x01[`\x10\x83\x90\x1C\x15a,\x1EW`\x10\x92\x83\x1C\x92\x01[`\x08\x83\x90\x1C\x15a,0W`\x08\x92\x83\x1C\x92\x01[`\x04\x83\x90\x1C\x15a,BW`\x04\x92\x83\x1C\x92\x01[`\x02\x83\x90\x1C\x15a,TW`\x02\x92\x83\x1C\x92\x01[`\x01\x83\x90\x1C\x15a\x0BYW`\x01\x01\x92\x91PPV[``\x80`\0\x80\x84Q\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x8BWa,\x8Ba2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a,\xD0W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a,\xA9W\x90P[P\x90P`\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xEDWa,\xEDa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a-\x16W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P[\x82\x84\x10\x15a-\xD9W`@Q\x80`@\x01`@R\x80\x88\x86\x81Q\x81\x10a-?Wa-?aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x81R` \x01\x88\x86\x81Q\x81\x10a-bWa-baE\xD9V[` \x02` \x01\x01Q`@\x01Q\x81RP\x82\x85\x81Q\x81\x10a-\x83Wa-\x83aE\xD9V[` \x02` \x01\x01\x81\x90RP\x86\x84\x81Q\x81\x10a-\xA0Wa-\xA0aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x81\x85\x81Q\x81\x10a-\xBEWa-\xBEaE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra-\xD2\x84aF\x05V[\x93Pa-\x1AV[\x90\x96\x90\x95P\x93PPPPV[\x80Q``\x90`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x04Wa.\x04a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a.-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xB1W`\0\x85\x82\x81Q\x81\x10a.OWa.OaE\xD9V[` \x02` \x01\x01Q\x90P\x80`\0\x03a.\x8FWa.l\x81`\x01aF\x90V[\x83\x83\x81Q\x81\x10a.~Wa.~aE\xD9V[` \x02` \x01\x01\x81\x81RPPa.\xD6V[a.\x9A`\x02\x82aH\xEAV[`\0\x03a.\xACWa.l\x81`\x01aF\x90V[a.\xB7`\x01\x82aF\xD2V[\x83\x83\x81Q\x81\x10a.\xC9Wa.\xC9aE\xD9V[` \x02` \x01\x01\x81\x81RPP[P`\x01\x01a.3V[\x81Q\x81Q``\x91\x90`\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x01Wa/\x01a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a/*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84\x81\x10\x15a/\xE3W`\0\x80[\x85\x81\x10\x15a/\x8FW\x88\x81\x81Q\x81\x10a/WWa/WaE\xD9V[` \x02` \x01\x01Q\x8A\x84\x81Q\x81\x10a/qWa/qaE\xD9V[` \x02` \x01\x01Q\x03a/\x87W`\x01\x91Pa/\x8FV[`\x01\x01a/=V[P\x80a/\xDAW\x88\x82\x81Q\x81\x10a/\xA7Wa/\xA7aE\xD9V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a/\xC1Wa/\xC1aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x82a/\xD6\x81aF\x05V[\x93PP[P`\x01\x01a/1V[P`\0a/\xF0\x82\x86aF\xD2V[\x83Q\x03\x83RP\x90\x96\x95PPPPPPV[\x80Q``\x90`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a0 Wa0 a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a0IW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x83\x81\x10\x15a0\xF8W`\0`\x02\x87\x83\x81Q\x81\x10a0nWa0naE\xD9V[` \x02` \x01\x01Qa0\x80\x91\x90aF|V[\x90P`\0\x83\x11\x80\x15a0\xB4WP\x80\x84a0\x9A`\x01\x86aF\xD2V[\x81Q\x81\x10a0\xAAWa0\xAAaE\xD9V[` \x02` \x01\x01Q\x14[\x15a0\xBFWPa0\xE6V[\x80\x84\x84\x81Q\x81\x10a0\xD2Wa0\xD2aE\xD9V[` \x02` \x01\x01\x81\x81RPP\x82`\x01\x01\x92PP[\x80a0\xF0\x81aF\x05V[\x91PPa0PV[P`\0a1\x05\x82\x85aF\xD2V[\x83Q\x03\x83RP\x90\x94\x93PPPPV[`@Q\x80`\x80\x01`@R\x80`\0\x81R` \x01`\0\x81R` \x01a1T`@Q\x80``\x01`@R\x80`\0\x81R` \x01`\0\x81R` \x01`\0\x80\x19\x16\x81RP\x90V[\x81R`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x81\x01\x82\x90R\x92\x82\x01R\x91\x01R\x90V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x84Q\x92\x83\x01\x85R\x81\x83R\x82\x01\x81\x90R\x81\x84\x01R\x90\x91\x82\x01R\x90V[`@Q\x80a\x01 \x01`@R\x80`\0\x15\x15\x81R` \x01a1\xDA`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01R`@\x01a2\x01`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01R`@\x01a2(`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01\x81\x90R```@\x83\x01\x81\x90R\x90\x91\x01R\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a3\x0FWa3\x0Fa2CV[`@R\x91\x90PV[`\0``\x82\x84\x03\x12\x15a3)W`\0\x80\xFD[a31a2YV[\x90P\x815\x81R` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a3jWa3ja2CV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xF0\x1B\x03\x19\x81\x16\x81\x14a\x16HW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a3\xA3Wa3\xA3a2CV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a3\xC2W`\0\x80\xFD[\x815a3\xD5a3\xD0\x82a3\x8AV[a2\xE7V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a3\xEAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a4\x18W`\0\x80\xFD[\x815` a4(a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a4GW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a4kW`\0\x80\x81\xFD[\x90\x88\x01\x90`@\x82\x8B\x03`\x1F\x19\x01\x81\x13\x15a4\x85W`\0\x80\x81\xFD[a4\x8Da2\x81V[\x87\x84\x015\x83\x81\x11\x15a4\x9FW`\0\x80\x81\xFD[a4\xAD\x8D\x8A\x83\x88\x01\x01a3\xB1V[\x82RP\x92\x015\x86\x83\x01RP\x83R\x91\x83\x01\x91\x83\x01a4KV[P\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a4\xE2W`\0\x80\xFD[a4\xEAa2\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a5\x03W`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a5\x17W`\0\x80\xFD[a5\x1Fa2YV[\x825\x82\x81\x11\x15a5.W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x87\x13a5?W`\0\x80\xFD[\x805` a5Oa3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a5nW`\0\x80\xFD[\x82\x85\x01[\x84\x81\x10\x15a5\xECW\x805\x88\x81\x11\x15a5\x8AW`\0\x80\x81\xFD[\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a5\xA1W`\0\x80\x81\xFD[a5\xA9a2\x81V[\x85\x82\x015a5\xB6\x81a3tV[\x81R`@\x82\x015\x8A\x81\x11\x15a5\xCBW`\0\x80\x81\xFD[a5\xD9\x8F\x88\x83\x86\x01\x01a3\xB1V[\x82\x88\x01RP\x84RP\x91\x83\x01\x91\x83\x01a5rV[P\x80\x86RPP\x80\x86\x015\x81\x85\x01R`@\x86\x015`@\x85\x01R\x83\x87R\x80\x88\x015\x95P\x84\x86\x11\x15a6\x1AW`\0\x80\xFD[a6&\x89\x87\x8A\x01a4\x07V[\x81\x88\x01RPPPPPP\x92\x91PPV[`\0a\x01 \x82\x84\x03\x12\x15a6IW`\0\x80\xFD[a6Qa2\xA3V[\x90P\x815\x81R` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01Ra6x\x83``\x84\x01a3\x17V[``\x82\x01R`\xC0\x82\x015`\x80\x82\x01R`\xE0\x82\x015`\xA0\x82\x01Ra\x01\0\x82\x015`\xC0\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a6\xB3W`\0\x80\xFD[\x815` a6\xC3a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\xE2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805\x83R\x91\x83\x01\x91\x83\x01a6\xE6V[`\0\x82`\x1F\x83\x01\x12a7\x0EW`\0\x80\xFD[\x815` a7\x1Ea3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a7=W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a7`W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a7rW`\0\x80\x81\xFD[\x84\x81\x015`@a7\x84a3\xD0\x83a3QV[\x82\x81R`\x06\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x87\x81\x01\x90\x8C\x84\x11\x15a7\xA4W`\0\x80\x81\xFD[\x93\x82\x01\x93[\x83\x85\x10\x15a7\xE4W\x82\x85\x8E\x03\x12\x15a7\xC1W`\0\x80\x81\xFD[a7\xC9a2\x81V[\x855\x81R\x89\x86\x015\x8A\x82\x01R\x82R\x93\x82\x01\x93\x90\x88\x01\x90a7\xA9V[\x87RPPP\x92\x84\x01\x92P\x83\x01a7AV[`\0`@\x82\x84\x03\x12\x15a8\x07W`\0\x80\xFD[a8\x0Fa2\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a8(W`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a8qW\x80Q\x88\x81\x11\x15a>\x0FW`\0\x80\x81\xFD[\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a>&W`\0\x80\x81\xFD[a>.a2\x81V[\x85\x82\x01Qa>;\x81a3tV[\x81R`@\x82\x01Q\x8A\x81\x11\x15a>PW`\0\x80\x81\xFD[a>^\x8F\x88\x83\x86\x01\x01a\x9FW`\0\x80\xFD[a6&\x89\x87\x8A\x01a<\x97V[`\0a\x01 \x82\x84\x03\x12\x15a>\xBEW`\0\x80\xFD[a>\xC6a2\xA3V[\x90P\x81Q\x81R` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01Ra>\xED\x83``\x84\x01a;\xA6V[``\x82\x01R`\xC0\x82\x01Q`\x80\x82\x01R`\xE0\x82\x01Q`\xA0\x82\x01Ra\x01\0\x82\x01Q`\xC0\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a?(W`\0\x80\xFD[\x81Q` a?8a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?WW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x80Q\x83R\x91\x83\x01\x91\x83\x01a?[V[`\0\x82`\x1F\x83\x01\x12a?\x83W`\0\x80\xFD[\x81Q` a?\x93a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xB2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a?\xD5W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a?\xE7W`\0\x80\x81\xFD[\x84\x81\x01Q`@a?\xF9a3\xD0\x83a3QV[\x82\x81R`\x06\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x87\x81\x01\x90\x8C\x84\x11\x15a@\x19W`\0\x80\x81\xFD[\x93\x82\x01\x93[\x83\x85\x10\x15a@YW\x82\x85\x8E\x03\x12\x15a@6W`\0\x80\x81\xFD[a@>a2\x81V[\x85Q\x81R\x89\x86\x01Q\x8A\x82\x01R\x82R\x93\x82\x01\x93\x90\x88\x01\x90a@\x1EV[\x87RPPP\x92\x84\x01\x92P\x83\x01a?\xB6V[`\0`@\x82\x84\x03\x12\x15a@|W`\0\x80\xFD[a@\x84a2\x81V[\x90P\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@\x9DW`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a@\xB1W`\0\x80\xFD[a@\xB9a2YV[\x82Q\x81R` \x83\x01Q` \x82\x01R`@\x83\x01Q\x82\x81\x11\x15a@\xD9W`\0\x80\xFD[a@\xE5\x87\x82\x86\x01a\xABV[` \x82\x01Ra\x01@\x83\x01Q\x82\x81\x11\x15aA\x98W`\0\x80\xFD[aA\xA4\x88\x82\x86\x01a?\x17V[`@\x83\x01RPa\x01`\x83\x01Q\x82\x81\x11\x15aA\xBDW`\0\x80\xFD[aA\xC9\x88\x82\x86\x01a?rV[``\x83\x01RP` \x86\x01Q\x90\x94P\x91P\x80\x82\x11\x15aA\xE6W`\0\x80\xFD[Pa;\x02\x85\x82\x86\x01a@jV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aBQW\x82\x84\x03\x89R\x81Q`@\x81Q\x81\x87RaB3\x82\x88\x01\x82a;0V[\x92\x88\x01Q\x96\x88\x01\x96\x90\x96RP\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aB\x11V[P\x91\x97\x96PPPPPPPV[\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q`@\x83\x01R``\x81\x01QaB\x9C``\x84\x01\x82\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`\x80\x81\x01Q`\xC0\x83\x01R`\xA0\x81\x01Q`\xE0\x83\x01R`\xC0\x81\x01Qa\x01\0\x83\x01RPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aB\xF0W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aB\xD4V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15aCtW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15aC_W\x83Q\x80Q\x84R\x8A\x01Q\x8A\x84\x01R\x92\x89\x01\x92`@\x90\x92\x01\x91`\x01\x01aC8V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01aC\x1AV[P\x92\x98\x97PPPPPPPPV[`\0\x81Q`@\x84R\x80Q`@\x85\x01R` \x81\x01Q``\x85\x01R`@\x81\x01Q\x90P```\x80\x85\x01RaC\xB6`\xA0\x85\x01\x82a;0V[\x90P` \x83\x01Q\x84\x82\x03` \x86\x01Ra&.\x82\x82aB\xFBV[`\0a\x01 aC\xDE\x83\x86a:\x14V[\x80a\x01\0\x84\x01R\x83Q`@\x80\x83\x86\x01R\x81Q\x92Pa\x01\x80\x80a\x01`\x87\x01R\x83Q\x82a\x02\xE0\x88\x01Ra\x03\x80\x87\x01\x81Q``a\x03 \x8A\x01R\x81\x81Q\x80\x84Ra\x03\xA0\x93P\x83\x8B\x01\x91P\x83\x81`\x05\x1B\x8C\x01\x01\x93P` \x80\x84\x01\x93P`\0[\x82\x81\x10\x15aD\x82W\x8C\x86\x03a\x03\x9F\x19\x01\x84R\x84Q\x80Q`\x01`\x01`\xF0\x1B\x03\x19\x16\x87R\x82\x01Q\x82\x87\x01\x8A\x90RaDo\x8A\x88\x01\x82a;0V[\x96PP\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01aD8V[P\x85\x81\x01Qa\x03@\x8D\x01R\x87\x86\x01Qa\x03`\x8D\x01R\x98\x89\x01Q\x8B\x85\x03a\x02\xDF\x19\x01a\x03\0\x8D\x01R\x98aD\xB4\x85\x8BaA\xF3V[\x99P\x80\x89\x01Q\x95PaD\xC8\x87\x8D\x01\x87aB^V[\x87\x89\x01Q\x97Pa\x01_\x19\x96P\x86\x8C\x8B\x03\x01a\x02\xA0\x8D\x01RaD\xE9\x8A\x89aB\xC0V[\x99P``\x89\x01Q\x98P\x86\x8C\x8B\x03\x01a\x02\xC0\x8D\x01RaE\x07\x8A\x8AaB\xFBV[\x99P\x80\x8D\x01Q\x98PPPPPPPPPa\x01\x1F\x19\x84\x83\x03\x01a\x01@\x85\x01Ra\x1D\x8C\x82\x82aC\x82V[`\0\x80\x82\x84\x03a\x01\xA0\x81\x12\x15aEDW`\0\x80\xFD[aEN\x85\x85a;\xE0V[\x92P`\xA0`\xFF\x19\x82\x01\x12\x15aEbW`\0\x80\xFD[aEja2YV[a\x01\0\x85\x01Q\x81Ra\x01 \x85\x01Q` \x82\x01R``a\x01?\x19\x83\x01\x12\x15aE\x90W`\0\x80\xFD[aE\x98a2YV[\x91Pa\x01@\x85\x01Q\x82Ra\x01`\x85\x01Q` \x83\x01Ra\x01\x80\x85\x01Q`@\x83\x01R\x81`@\x82\x01R\x80\x92PPP\x92P\x92\x90PV[a\x01\0\x81\x01a\x0BY\x82\x84a:\x14V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01aF\x17WaF\x17aE\xEFV[P`\x01\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BYWa\x0BYaE\xEFV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90aFX\x81`\x04\x85\x01` \x87\x01a;\x0CV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aF\x8BWaF\x8BaFfV[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0BYWa\x0BYaE\xEFV[`\0\x83QaF\xB5\x81\x84` \x88\x01a;\x0CV[\x83Q\x90\x83\x01\x90aF\xC9\x81\x83` \x88\x01a;\x0CV[\x01\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x0BYWa\x0BYaE\xEFV[`\x01\x81\x81[\x80\x85\x11\x15aG W\x81`\0\x19\x04\x82\x11\x15aG\x06WaG\x06aE\xEFV[\x80\x85\x16\x15aG\x13W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90aF\xEAV[P\x92P\x92\x90PV[`\0\x82aG7WP`\x01a\x0BYV[\x81aGDWP`\0a\x0BYV[\x81`\x01\x81\x14aGZW`\x02\x81\x14aGdWaG\x80V[`\x01\x91PPa\x0BYV[`\xFF\x84\x11\x15aGuWaGuaE\xEFV[PP`\x01\x82\x1Ba\x0BYV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aG\xA3WP\x81\x81\na\x0BYV[aG\xAD\x83\x83aF\xE5V[\x80`\0\x19\x04\x82\x11\x15aG\xC1WaG\xC1aE\xEFV[\x02\x93\x92PPPV[`\0a\r\xCA\x83\x83aG(V[`\0\x81aG\xE4WaG\xE4aE\xEFV[P`\0\x19\x01\x90V[`\xFF`\xF8\x1B\x83`\xF8\x1B\x16\x81R`\0\x82QaH\r\x81`\x01\x85\x01` \x87\x01a;\x0CV[\x91\x90\x91\x01`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x83QaHC\x81\x84` \x88\x01a;\x0CV[`\x01`\x01`\xE0\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x04\x01\x92\x91PPV[`\0\x83QaHr\x81\x84` \x88\x01a;\x0CV[`\x01`\x01`\xC0\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x08\x01\x92\x91PPV[`\0`\xFF\x83\x16\x80aH\xA2WaH\xA2aFfV[\x80`\xFF\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a\x11tWa\x11taE\xEFV[`\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BYWa\x0BYaE\xEFV[`\0\x82aH\xF9WaH\xF9aFfV[P\x06\x90V\xFE\xA2dipfsX\"\x12 \xED\x0C\tzv\x06\x97\xB6\x85=\x86\xE9C8dJz\xBBit\xA4U!(\xA7\xD7\x03\xF1\xEC\xF5|\xFFdsolcC\0\x08\x11\x003"; - /// The bytecode of the contract. - pub static BEEFY_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cN\x9F\xDB\xEC\x14a\0gW\x80c^9\x9A\xEA\x14a\0\x93W\x80c}uU\x98\x14a\0\xB4W\x80c\x90\\\x05\x11\x14a\0\xD5W\x80c\xAF\x8B\x91\xD6\x14a\0\xECW\x80c\xBA\xBB1\x18\x14a\x01\x11W[`\0\x80\xFD[a\0ucaura`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA6a\0\xA16`\x04a8\xA5V[a\x01\x1FV[`@Qa\0\x8A\x92\x91\x90a:aV[a\0\xC7a\0\xC26`\x04a:\xA9V[a\x01dV[`@Qa\0\x8A\x92\x91\x90a;\\V[a\0\xDEa.\xE0\x81V[`@Q\x90\x81R` \x01a\0\x8AV[a\0\xF8a\r\xAD`\xF3\x1B\x81V[`@Q`\x01`\x01`\xF0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\0\x8AV[a\0uc\x04\x954\xD5`\xE4\x1B\x81V[a\x01'a1\x14V[a\x01/a1wV[`\0\x80a\x01@\x86\x86`\0\x01Qa\x02[V[\x91P\x91P`\0a\x01T\x82\x87` \x01Qa\x07QV[\x92\x94P\x91\x92PPP[\x92P\x92\x90PV[``a\x01na1wV[`\0\x84\x80` \x01\x90Q\x81\x01\x90a\x01\x84\x91\x90a<5V[\x90P`\0\x80\x85\x80` \x01\x90Q\x81\x01\x90a\x01\x9D\x91\x90aA\x0EV[\x91P\x91P`\0\x800`\x01`\x01`\xA0\x1B\x03\x16c^9\x9A\xEA\x86`@Q\x80`@\x01`@R\x80\x88\x81R` \x01\x87\x81RP`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xE6\x92\x91\x90aC\xCFV[a\x01\xA0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02(\x91\x90aE/V[\x91P\x91P\x81`@Q` \x01a\x02=\x91\x90aE\xCAV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x99\x90\x98P\x96PPPPPPPV[a\x02ca1\x14V[\x81Q` \x80\x82\x01QQ\x91Q\x01Q\x84Q`\0\x92\x91\x90\x81\x11a\x02\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`4`$\x82\x01R\x7Fconsensus clients only accept pr`D\x82\x01Rsoofs for new headers``\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xF9\x82\x87`@\x01Q` \x01Qa\x0B_V[\x80a\x03\x11WPa\x03\x11\x82\x87``\x01Q` \x01Qa\x0B_V[a\x03iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FSuper majority threshold not rea`D\x82\x01Rc\x18\xDA\x19Y`\xE2\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[\x84QQ`@\x80\x88\x01QQ\x90\x82\x01Q\x14\x80a\x03\x8BWP``\x87\x01QQ`@\x82\x01Q\x14[a\x03\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x15[\x9A\xDB\x9B\xDD\xDB\x88\x18]]\x1A\x1B\xDC\x9A]\x1EH\x1C\xD9]`Z\x1B`D\x82\x01R`d\x01a\x02\xDEV[`@\x80\x88\x01QQ\x90\x82\x01Q\x82QQ\x91\x14\x90`\0\x80[\x82\x81\x10\x15a\x04\x8FW\x84Q\x80Qa\r\xAD`\xF3\x1B\x91\x90\x83\x90\x81\x10a\x04\x08Wa\x04\x08aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xF0\x1B\x03\x19\x16\x14\x80\x15a\x04KWP\x84Q\x80Q\x82\x90\x81\x10a\x04:Wa\x04:aE\xD9V[` \x02` \x01\x01Q` \x01QQ` \x14[\x15a\x04}Wa\x04z\x85`\0\x01Q\x82\x81Q\x81\x10a\x04iWa\x04iaE\xD9V[` \x02` \x01\x01Q` \x01Qa\x0B\x8DV[\x91P[\x80a\x04\x87\x81aF\x05V[\x91PPa\x03\xE4V[P\x80a\x04\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FMmr root hash not found\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[`\0a\x04\xE8\x85a\x0B\xF5V[\x80Q\x90` \x01 \x90P`\0\x87`\x01`\x01`@\x1B\x03\x81\x11\x15a\x05\x0BWa\x05\x0Ba2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05PW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x05)W\x90P[P\x90P`\0[\x88\x81\x10\x15a\x06\x1FW`\0\x8C`\0\x01Q` \x01Q\x82\x81Q\x81\x10a\x05zWa\x05zaE\xD9V[` \x02` \x01\x01Q\x90P`\0a\x05\x94\x85\x83`\0\x01Qa\r\x95V[\x90P`@Q\x80`@\x01`@R\x80\x83` \x01Q\x81R` \x01\x82`@Q` \x01a\x05\xD4\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81RP\x84\x84\x81Q\x81\x10a\x05\xFFWa\x05\xFFaE\xD9V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x06\x17\x90aF\x05V[\x91PPa\x05VV[P\x84\x15a\x06\x98Wa\x06=\x8C`@\x01Q`@\x01Q\x8C``\x01Q\x83a\r\xB9V[a\x06\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FInvalid current authorities proo`D\x82\x01R`3`\xF9\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[a\x06\xFBV[a\x06\xAF\x8C``\x01Q`@\x01Q\x8C``\x01Q\x83a\r\xB9V[a\x06\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7FInvalid next authorities proof\0\0`D\x82\x01R`d\x01a\x02\xDEV[a\x07\x06\x8C\x8C\x85a\r\xD1V[``\x80\x8D\x01QQ` \x8D\x01Q\x90\x91\x01QQ\x11\x15a\x075W``\x80\x8D\x01\x80Q`@\x8F\x01R` \x8D\x01Q\x90\x91\x01Q\x90R[PPP\x92\x88RPPPP` \x92\x90\x92\x01Q`\x80\x01Q\x92\x93\x91PPV[a\x07Ya1wV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x07pWPP\x83Q`\0T` \x82\x01Q\x92\x93P\x90\x91\x14a\x07\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x15[\x9A\xDB\x9B\xDD\xDB\x88\x1C\x18\\\x98RY`\x92\x1B`D\x82\x01R`d\x01a\x02\xDEV[`\0a\x07\xF2\x82`@\x01Qa\x0E\xF7V[\x90P\x80` \x01Q`\0\x03a\x08TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FGenesis block should not be incl`D\x82\x01Rc\x1DY\x19Y`\xE2\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[`\0\x80`\0[\x83`\x80\x01QQ\x81\x10\x15a\t\xD0W\x83`\x80\x01Q\x81\x81Q\x81\x10a\x08}Wa\x08}aE\xD9V[` \x02` \x01\x01Q`@\x01Q\x80\x15a\x08\xD4WPc\x04\x954\xD5`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x84`\x80\x01Q\x82\x81Q\x81\x10a\x08\xB8Wa\x08\xB8aE\xD9V[` \x02` \x01\x01Q``\x01Q`\0\x01Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x15a\t\nWa\t\x07\x84`\x80\x01Q\x82\x81Q\x81\x10a\x08\xF2Wa\x08\xF2aE\xD9V[` \x02` \x01\x01Q``\x01Q` \x01Qa\x0B\x8DV[\x92P[\x83`\x80\x01Q\x81\x81Q\x81\x10a\t Wa\t aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x80\x15a\twWPcaura`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x84`\x80\x01Q\x82\x81Q\x81\x10a\t[Wa\t[aE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x01Q`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x15a\t\xBEW`\0a\t\xAC\x85`\x80\x01Q\x83\x81Q\x81\x10a\t\x97Wa\t\x97aE\xD9V[` \x02` \x01\x01Q` \x01Q` \x01Qa\x10\xF9V[\x90Pa\t\xBAa.\xE0\x82aF\x1EV[\x92PP[\x80a\t\xC8\x81aF\x05V[\x91PPa\x08ZV[P\x80`\0\x03a\n\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rstimestamp not found!``\x1B`D\x82\x01R`d\x01a\x02\xDEV[`@Q\x80`@\x01`@R\x80\x85`\0\x01Q\x81R` \x01a\n\\\x86` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[a\ni\x87`@\x01Qa\x11{V[`@Q` \x01a\nz\x92\x91\x90aF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81RP\x85`\0\x81Q\x81\x10a\n\xA6Wa\n\xA6aE\xD9V[` \x02` \x01\x01\x81\x90RP`\0`@Q\x80``\x01`@R\x80\x86` \x01Q\x81R` \x01\x85` \x01Q\x81R` \x01`@Q\x80``\x01`@R\x80\x85\x81R` \x01\x86\x81R` \x01\x87`@\x01Q\x81RP\x81RP\x90Pa\x0B\x05\x89\x89` \x01Q\x88a\r\xB9V[a\x0BQW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7FInvalid parachains heads proof\0\0`D\x82\x01R`d\x01a\x02\xDEV[\x95PPPPPP[\x92\x91PPV[`\0`\x03a\x0Bn\x83`\x02aF\x1EV[a\x0Bx\x91\x90aF|V[a\x0B\x83\x90`\x01aF\x90V[\x90\x92\x10\x15\x92\x91PPV[`\0` \x82Q\x10\x15a\x0B\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FBytes:: toBytes32: data is to sh`D\x82\x01Rc7\xB9:\x17`\xE1\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[P` \x01Q\x90V[\x80QQ`@\x80Q` \x81\x01\x90\x91R`\0\x80\x82R``\x92\x91\x90[\x82\x81\x10\x15a\x0C\xC4W\x84Q\x80Q\x82\x90\x81\x10a\x0C*Wa\x0C*aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`@Q` \x01a\x0CV\x91\x90`\x01`\x01`\xF0\x1B\x03\x19\x91\x90\x91\x16\x81R`\x02\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0C\x8F\x86`\0\x01Q\x83\x81Q\x81\x10a\x0C~Wa\x0C~aE\xD9V[` \x02` \x01\x01Q` \x01Qa\x11{V[`@Q` \x01a\x0C\xA0\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91P\x80\x80a\x0C\xBC\x90aF\x05V[\x91PPa\x0C\x0EV[P`\0a\x0C\xD0\x83a\x11\xAFV[\x82`@Q` \x01a\x0C\xE2\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\r$\x86` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[a\r1\x87`@\x01Qa\x14RV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x92\x16` \x83\x01R`\x01`\x01`\xC0\x1B\x03\x19\x16`$\x82\x01R`,\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x81\x81`@Q` \x01a\r{\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x94PPPPP\x91\x90PV[`\0\x80`\0a\r\xA4\x85\x85a\x14\xBCV[\x91P\x91Pa\r\xB1\x81a\x14\xFEV[P\x93\x92PPPV[`\0a\r\xC5\x83\x83a\x16KV[\x84\x14\x90P[\x93\x92PPPV[`\0a\r\xE0\x83` \x01Qa\x19~V[\x80Q\x90` \x01 \x90P`\0a\x0E\x01\x85` \x01Q\x85` \x01Q` \x01Qa\x1BFV[a\x0E\x0C\x90`\x01aF\x90V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x0E'W\x90PP\x90P`@Q\x80``\x01`@R\x80\x86` \x01Q`\xA0\x01Q\x81R` \x01\x86` \x01Q`\xC0\x01Q\x81R` \x01\x84\x81RP\x81`\0\x81Q\x81\x10a\x0E\x94Wa\x0E\x94aE\xD9V[` \x02` \x01\x01\x81\x90RPa\x0E\xAF\x84\x86`@\x01Q\x83\x85a\x1BhV[a\x0E\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x11`$\x82\x01Rp$\xB7;0\xB64\xB2\x10&\xB6\xB9\x10(97\xB7\xB3`y\x1B`D\x82\x01R`d\x01a\x02\xDEV[PPPPPPV[`@\x80Q`\xA0\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R``\x80\x84\x01\x83\x90R`\x80\x84\x01R\x83Q\x80\x85\x01\x90\x94R\x84\x84R\x83\x81\x01\x82\x90R\x91\x92\x91a\x0FI\x90a\x0FD\x90\x84\x90a\x1B\x80V[a\x0B\x8DV[\x90P`\0a\x0FV\x83a\x1C\x01V[\x90P`\0a\x0Fha\x0FD\x85` a\x1B\x80V[\x90P`\0a\x0Fza\x0FD\x86` a\x1B\x80V[\x90P`\0a\x0F\x87\x86a\x1C\x01V[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xA3Wa\x0F\xA3a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDCW\x81` \x01[a\x0F\xC9a1\xAAV[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x0F\xC1W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x10\xCAW`\0a\x0F\xF5\x89a\x1D\xE6V[\x90Pa\x0F\xFFa1\xAAV[`\xFF\x82\x16a\x10\x13W`\x01`\xC0\x82\x01Ra\x10\x97V[`\x03\x19`\xFF\x83\x16\x01a\x109W`\x01`@\x82\x01Ra\x10/\x8Aa\x1E\x82V[``\x82\x01Ra\x10\x97V[`\x04\x19`\xFF\x83\x16\x01a\x10_W`\x01`\x80\x82\x01Ra\x10U\x8Aa\x1E\x82V[`\xA0\x82\x01Ra\x10\x97V[`\x05\x19`\xFF\x83\x16\x01a\x10\x82W`\x01\x81Ra\x10x\x8Aa\x1E\x82V[` \x82\x01Ra\x10\x97V[`\x07\x19`\xFF\x83\x16\x01a\x10\x97W`\x01a\x01\0\x82\x01R[\x80\x84\x84\x81Q\x81\x10a\x10\xAAWa\x10\xAAaE\xD9V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x10\xC2\x90aF\x05V[\x91PPa\x0F\xE2V[P`@\x80Q`\xA0\x81\x01\x82R\x96\x87R` \x87\x01\x95\x90\x95R\x93\x85\x01\x92\x90\x92R``\x84\x01RP`\x80\x82\x01R\x93\x92PPPV[\x80Q`\0\x90\x81\x90[\x80\x15a\x11tWa\x11\x12`\x01\x82aF\xD2V[a\x11\x1D\x90`\x08aF\x1EV[a\x11(\x90`\x02aG\xC9V[\x84a\x114`\x01\x84aF\xD2V[\x81Q\x81\x10a\x11DWa\x11DaE\xD9V[\x01` \x01Qa\x11V\x91\x90`\xF8\x1CaF\x1EV[a\x11`\x90\x83aF\x90V[\x91P\x80a\x11l\x81aG\xD5V[\x91PPa\x11\x01V[P\x92\x91PPV[``a\x11\x87\x82Qa\x11\xAFV[\x82`@Q` \x01a\x11\x99\x92\x91\x90aF\xA3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```@\x82\x10\x15a\x11\xD9W`@Q`\x01`\x01`\xF8\x1B\x03\x19`\xFA\x84\x90\x1B\x16` \x82\x01R`!\x01a\x11\x99V[a@\0\x82\x10\x15a\x12,Wa\x12\ta\x11\xF5`\x02\x84\x90\x1B`\x01aF\x90V[`\x08\x81\x81\x1Bb\xFF\xFF\0\x16\x91\x90\x1C`\xFF\x16\x17\x90V[`@Q` \x01a\x11\x99\x91\x90`\xF0\x91\x90\x91\x1B`\x01`\x01`\xF0\x1B\x03\x19\x16\x81R`\x02\x01\x90V[c@\0\0\0\x82\x10\x15a\x12\x90Wa\x12ma\x12I`\x02\x84\x81\x1B\x90aF\x90V[`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17\x90V[`@Q` \x01a\x11\x99\x91\x90`\xE0\x91\x90\x91\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x04\x01\x90V[`\0a\x14\x04a\x13\xDE\x84`\0\x81\x90P`\x08\x81~\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\x16\x90\x1B`\x08\x82\x7F\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\x16\x90\x1C\x17\x90P`\x10\x81}\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\x16\x90\x1B`\x10\x82\x7F\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\x16\x90\x1C\x17\x90P` \x81{\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\x16\x90\x1B` \x82\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\x16\x90\x1C\x17\x90P`@\x81w\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x1B`@\x82w\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90\x1C\x17\x90P`\x80\x81\x90\x1B`\x80\x82\x90\x1C\x17\x90P\x91\x90PV[`@Q` \x01a\x13\xF0\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1E\xEFV[\x80Q\x90\x91P`\0`\x02a\x14\x18`\x04\x84aF\xD2V[a\x14$\x91\x1B`\x03aF\x90V[\x90P\x80\x83`@Q` \x01a\x149\x92\x91\x90aG\xECV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x93PPPP\x91\x90PV[`\0e\xFF\0\0\0\xFF\0`\x08\x83\x81\x1B\x91\x82\x16d\xFF\0\0\0\xFF\x91\x85\x90\x1C\x91\x82\x16\x17`\x10\x90\x81\x1Bg\xFF\0\0\0\xFF\0\0\0\x93\x90\x93\x16f\xFF\0\0\0\xFF\0\0\x92\x90\x92\x16\x91\x90\x91\x17\x90\x1C\x17` \x81\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\x16\x91\x90\x1Cc\xFF\xFF\xFF\xFF\x16\x17`\xC0\x1B\x92\x91PPV[`\0\x80\x82Q`A\x03a\x14\xF2W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x14\xE6\x87\x82\x85\x85a\x1F\\V[\x94P\x94PPPPa\x01]V[P`\0\x90P`\x02a\x01]V[`\0\x81`\x04\x81\x11\x15a\x15\x12Wa\x15\x12aH\x1BV[\x03a\x15\x1AWPV[`\x01\x81`\x04\x81\x11\x15a\x15.Wa\x15.aH\x1BV[\x03a\x15{W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[`\x02\x81`\x04\x81\x11\x15a\x15\x8FWa\x15\x8FaH\x1BV[\x03a\x15\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x02\xDEV[`\x03\x81`\x04\x81\x11\x15a\x15\xF0Wa\x15\xF0aH\x1BV[\x03a\x16HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[PV[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81a\x16\x8AV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x16cW\x90P[P\x90Pa\x16\xB1\x83\x85`\0\x81Q\x81\x10a\x16\xA4Wa\x16\xA4aE\xD9V[` \x02` \x01\x01Qa V[\x84`\0\x81Q\x81\x10a\x16\xC4Wa\x16\xC4aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x83Q`\0[\x81\x81\x10\x15a\x19FW`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81a\x17\x19V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x16\xF2W\x90P[P\x90P\x83Q`\0\x03a\x17FW\x86\x82\x81Q\x81\x10a\x177Wa\x177aE\xD9V[` \x02` \x01\x01Q\x90Pa\x17lV[a\x17i\x87\x83\x81Q\x81\x10a\x17[Wa\x17[aE\xD9V[` \x02` \x01\x01Q\x85a V[\x90P[a\x17x\x81Q`\x02a\",V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x8FWa\x17\x8Fa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xD4W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x17\xADW\x90P[P\x81Q\x90\x94P`\0\x90\x81[\x81\x81\x10\x15a\x19/W\x81a\x17\xF3\x82`\x01aF\x90V[\x10a\x18gW`\0\x84\x82\x81Q\x81\x10a\x18\x0CWa\x18\x0CaE\xD9V[` \x02` \x01\x01Q\x90Pa\x18>\x85\x83\x81Q\x81\x10a\x18+Wa\x18+aE\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x02a\"TV[\x81R\x87Q\x81\x90\x89\x90\x86\x90\x81\x10a\x18VWa\x18VaE\xD9V[` \x02` \x01\x01\x81\x90RPPa\x19\x1DV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x18\x90\x85\x83\x81Q\x81\x10a\x18+Wa\x18+aE\xD9V[\x81R\x84Qa\x18\xEF\x90\x86\x90\x84\x90\x81\x10a\x18\xAAWa\x18\xAAaE\xD9V[` \x02` \x01\x01Q` \x01Q\x86\x84`\x01a\x18\xC4\x91\x90aF\x90V[\x81Q\x81\x10a\x18\xD4Wa\x18\xD4aE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x91\x82R` R`@\x90 \x90V[` \x82\x01R\x87Q\x81\x90\x89\x90\x86\x90\x81\x10a\x19\nWa\x19\naE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x90\x92\x01\x91[a\x19(`\x02\x82aF\x90V[\x90Pa\x17\xDFV[PPPP\x80\x80a\x19>\x90aF\x05V[\x91PPa\x16\xD4V[P\x81Q`\x01\x14a\x19UW`\0\x80\xFD[\x81`\0\x81Q\x81\x10a\x19hWa\x19haE\xD9V[` \x02` \x01\x01Q` \x01Q\x92PPP\x92\x91PPV[```\0\x82`\0\x01Q`@Q` \x01a\x19\xAA\x91\x90`\xF8\x91\x90\x91\x1B`\x01`\x01`\xF8\x1B\x03\x19\x16\x81R`\x01\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x19\xE8\x84` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[`@Q` \x01a\x19\xF9\x92\x91\x90aH1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x85\x82\x01Q` \x84\x01R\x92P`\0\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x1A8\x85``\x01Q`\0\x01Qa\x14RV[`@Q` \x01a\x1AI\x92\x91\x90aH`V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x1A\x8F\x85``\x01Q` \x01Q`\x08\x81\x81\x1Cb\xFF\0\xFF\x16c\xFF\0\xFF\0\x92\x90\x91\x1B\x91\x90\x91\x16\x17`\x10\x81\x81\x1C\x91\x90\x1B\x17`\xE0\x1B\x90V[\x85``\x01Q`@\x01Q`@Q` \x01a\x1A\xAA\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1A\xC8\x92\x91` \x01aF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x82\x82`@Q` \x01a\x1A\xEC\x92\x91\x90aF\xA3V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\x80\x88\x01Q` \x84\x01R\x91\x83\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1B(\x92\x91` \x01aF\xA3V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x149\x92\x91` \x01aF\xA3V[`\0\x82`\0\x03a\x1BWWP\x80a\x0BYV[a\x1Ba\x83\x83aF\xD2V[\x90Pa\x0BYV[`\0a\x1Bu\x84\x84\x84a\"`V[\x90\x94\x14\x94\x93PPPPV[``\x82`\0\x01QQ\x82\x84` \x01Qa\x1B\x98\x91\x90aF\x90V[\x11\x15a\x1B\xA3W`\0\x80\xFD[\x81`\0\x03a\x1B\xC0WP`@\x80Q` \x81\x01\x90\x91R`\0\x81Ra\x0BYV[\x82Q` \x80\x85\x01Q\x91\x01\x90`\0\x90a\x1B\xE2\x90a\x1B\xDC\x90\x84aF\x90V[\x85a%-V[\x90P\x83\x85` \x01\x81\x81Qa\x1B\xF6\x91\x90aF\x90V[\x90RP\x94\x93PPPPV[`\0\x80a\x1C\r\x83a\x1D\xE6V[\x90P`\0a\x1C\x1C`\x04\x83aH\x8FV[\x90P`\0\x81`\xFF\x16`\0\x03a\x1C9WP`?`\x02\x83\x90\x1C\x16a\x1D\xDEV[\x81`\xFF\x16`\x01\x03a\x1C~W`\0a\x1CO\x86a\x1D\xE6V[\x90Pa?\xC0`\x06\x82\x90\x1B\x16a\x1Ck`?`\x02\x87\x90\x1C\x16\x82aH\xB1V[`\x01`\x01`@\x1B\x03\x16\x92Pa\x1D\xDE\x91PPV[\x81`\xFF\x16`\x02\x03a\x1C\xF1W`\0a\x1C\x94\x86a\x1D\xE6V[\x90P`\0a\x1C\xA1\x87a\x1D\xE6V[\x90P`\0a\x1C\xAE\x88a\x1D\xE6V[c\xFF\xFF\xFF\xFF`\x08\x94\x90\x94\x1Ba\xFF\0\x16`\xFF\x88\x16\x17`\x10\x93\x90\x93\x1Bb\xFF\0\0\x16\x92\x90\x92\x17`\x18\x92\x90\x92\x1Bc\xFF\0\0\0\x16\x91\x90\x91\x17`\x02\x1C\x91\x90\x91\x16\x91Pa\x1D\xDE\x90PV[\x81`\xFF\x16`\x03\x03a\x1D\x96W`\0a\x1D\x10`?`\x02\x86\x90\x1C\x16`\x04aH\xD1V[\x90P`\x08\x81`\xFF\x16\x11\x15a\x1DwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7Funexpected prefix decoding Compa`D\x82\x01Rg1\xBA\x1E*\xB4\xB7:\x1F`\xC1\x1B`d\x82\x01R`\x84\x01a\x02\xDEV[a\x1D\x8Ca\x1D\x87\x87\x83`\xFF\x16a\x1B\x80V[a\x10\xF9V[\x96\x95PPPPPPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FCode should be unreachable\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\xDEV[\x94\x93PPPPV[\x80QQ` \x82\x01Q`\0\x91\x90a\x1D\xFD\x90`\x01aF\x90V[\x11\x15a\x1E:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkOut of range`\xA0\x1B`D\x82\x01R`d\x01a\x02\xDEV[`\0\x82`\0\x01Q\x83` \x01Q\x81Q\x81\x10a\x1EVWa\x1EVaE\xD9V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\x01\x83` \x01\x81\x81Qa\x1Ey\x91\x90aF\x90V[\x90RP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R`\0a\x1E\xAEa\x1E\xA7\x84`\x04a\x1B\x80V[`\0a%\x83V[\x90P`\0a\x1E\xBB\x84a\x1C\x01V[\x90P`\0a\x1E\xC9\x85\x83a\x1B\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x84R` \x84\x01RP\x90\x93\x92PPPV[\x80Q``\x90`\0\x80a\x1F\x02`\x01\x84aF\xD2V[\x90P[\x84\x81\x81Q\x81\x10a\x1F\x17Wa\x1F\x17aE\xD9V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x15a\x1F3W\x80\x91Pa\x1FEV[\x80a\x1F=\x81aG\xD5V[\x91PPa\x1F\x05V[Pa\x1D\xDE\x84`\0a\x1FW\x84`\x01aF\x90V[a%\xE0V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1F\x93WP`\0\x90P`\x03a \x17V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1F\xE7W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a \x10W`\0`\x01\x92P\x92PPa \x17V[\x91P`\0\x90P[\x94P\x94\x92PPPV[\x81Q\x81Q``\x91`\0\x91\x82\x91\x82\x91\x82a 9\x82\x84aF\x90V[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a UWa Ua2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x9AW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a sW\x90P[P\x90P[\x83\x87\x10\x80\x15a \xACWP\x82\x86\x10[\x15a!\x81W\x88\x86\x81Q\x81\x10a \xC3Wa \xC3aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x8A\x88\x81Q\x81\x10a \xE1Wa \xE1aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x10\x15a!:W\x89\x87\x81Q\x81\x10a!\x05Wa!\x05aE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!\x1FWa!\x1FaE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x96\x87\x01\x96\x94\x90\x94\x01\x93a \x9EV[\x88\x86\x81Q\x81\x10a!LWa!LaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!fWa!faE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x95\x86\x01\x95\x94\x90\x94\x01\x93a \x9EV[\x83\x87\x10\x15a!\xD0W\x89\x87\x81Q\x81\x10a!\x9BWa!\x9BaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a!\xB5Wa!\xB5aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x96\x87\x01\x96\x94\x90\x94\x01\x93a!\x81V[\x82\x86\x10\x15a\"\x1FW\x88\x86\x81Q\x81\x10a!\xEAWa!\xEAaE\xD9V[` \x02` \x01\x01Q\x81\x86\x81Q\x81\x10a\"\x04Wa\"\x04aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x95\x86\x01\x95\x94\x90\x94\x01\x93a!\xD0V[\x99\x98PPPPPPPPPV[`\0\x80a\"9\x83\x85aF|V[\x90Pa\"E\x83\x85aH\xEAV[\x15a\r\xCAW`\x01\x01\x93\x92PPPV[`\0a\r\xCA\x82\x84aF|V[`\0\x81`\x01\x14\x80\x15a\"sWP\x82Q`\x01\x14[\x80\x15a\"\x9DWP\x82`\0\x81Q\x81\x10a\"\x8DWa\"\x8DaE\xD9V[` \x02` \x01\x01Q` \x01Q`\0\x14[\x15a\"\xC8W\x82`\0\x81Q\x81\x10a\"\xB5Wa\"\xB5aE\xD9V[` \x02` \x01\x01Q`@\x01Q\x90Pa\r\xCAV[`\0a\"\xD3\x83a&7V[\x90P`\0\x81Q\x90P`\0`@Q\x80`@\x01`@R\x80`\0\x81R` \x01\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x07Wa#\x07a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90R`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x8A\x90R\x91\x92P\x90\x80[\x84\x81\x10\x15a$vW`\0\x86\x82\x81Q\x81\x10a#kWa#kaE\xD9V[` \x02` \x01\x01Q\x90P\x80`\x02a#\x82\x91\x90aG\xC9V[a#\x8C\x90\x84aF\x90V[`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x91\x94P\x90\x81a#\xD3V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a#\xA6W\x90P[P\x8BQ\x90\x91P\x15a#\xEDWa#\xE8\x8B\x85a&\xDAV[\x9BP\x90P[\x80Q`\0\x03a$!W\x84Q` \x86\x01QQ\x03a$\nWPPa$vV[a$\x1C\x86a$\x17\x87a(\xD7V[a)\x0EV[a$lV[\x80Q`\x01\x14\x80\x15a$0WP\x81\x15[\x15a$]Wa$\x1C\x86\x82`\0\x81Q\x81\x10a$LWa$LaE\xD9V[` \x02` \x01\x01Q`@\x01Qa)\x0EV[a$l\x86a$\x17\x83\x88\x86a)>V[PP`\x01\x01a#OV[P\x82Q`\0\x19\x01\x83R[\x82Q\x15a%\0W`\0a$\x92\x84a+\x1BV[\x90P`\0a$\x9F\x85a+\x1BV[\x85Q`\x01\x01\x86R`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x82\x90R\x90\x91P``\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x85` \x01Q\x86`\0\x01Q\x81Q\x81\x10a$\xEDWa$\xEDaE\xD9V[` \x02` \x01\x01\x81\x81RPPPPa$\x80V[\x82` \x01Q`\0\x81Q\x81\x10a%\x17Wa%\x17aE\xD9V[` \x02` \x01\x01Q\x95PPPPPP\x93\x92PPPV[``\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a%GWa%Ga2CV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a%qW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P` \x81\x01a\x11t\x84\x82\x85a+SV[`\0\x80`\0[`\x04\x81\x10\x15a\r\xB1Wa%\x9D\x81`\x08aF\x1EV[\x85a%\xA8\x83\x87aF\x90V[\x81Q\x81\x10a%\xB8Wa%\xB8aE\xD9V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x1C\x91\x90\x91\x17\x90\x80a%\xD8\x81aF\x05V[\x91PPa%\x89V[\x82Q``\x90a%\xEF\x83\x85aF\x90V[\x11\x15a%\xFAW`\0\x80\xFD[\x81`\0\x03a&\x17WP`@\x80Q` \x81\x01\x90\x91R`\0\x81Ra\r\xCAV[` \x84\x01a&.a&(\x85\x83aF\x90V[\x84a%-V[\x95\x94PPPPPV[`@\x80Q\x81\x81Ra\x08 \x81\x01\x82R``\x91\x90`\0\x90\x82` \x82\x01a\x08\0\x806\x837\x01\x90PP\x90P`\0\x84[\x83\x82\x10\x15a&\xBEW\x80\x15a&\xBEW`\0a&{\x82a+\xD3V[\x90P\x80\x84\x84\x81Q\x81\x10a&\x90Wa&\x90aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra&\xA6\x81`\x02aG\xC9V[a&\xB0\x90\x83aF\xD2V[\x91P\x82`\x01\x01\x92PPa&bV[`\0a&\xCA\x83\x86aF\xD2V[\x84Q\x03\x84RP\x91\x95\x94PPPPPV[``\x80`\0\x80\x85Q\x90P[\x80\x82\x10\x15a'$W\x85\x82\x81Q\x81\x10a&\xFFWa&\xFFaE\xD9V[` \x02` \x01\x01Q` \x01Q\x85\x11\x15a'$W\x81a'\x1C\x81aF\x05V[\x92PPa&\xE5V[`\0\x82\x15a'2W\x82a'5V[`\0[\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a'QWa'Qa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x9CW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a'oW\x90P[P\x90P`\0a'\xAB\x83\x85aF\xD2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xC2Wa'\xC2a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\rW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a'\xE0W\x90P[P\x82Q\x90\x91P`\0\x90[\x80\x82\x10\x15a(gW\x8A\x82\x81Q\x81\x10a(1Wa(1aE\xD9V[` \x02` \x01\x01Q\x84\x83\x81Q\x81\x10a(KWa(KaE\xD9V[` \x02` \x01\x01\x81\x90RP\x81a(`\x90aF\x05V[\x91Pa(\x17V[`\0[\x86\x83\x10\x15a(\xC5W\x8B\x83\x81Q\x81\x10a(\x84Wa(\x84aE\xD9V[` \x02` \x01\x01Q\x84\x82\x81Q\x81\x10a(\x9EWa(\x9EaE\xD9V[` \x02` \x01\x01\x81\x90RP\x82a(\xB3\x90aF\x05V[\x92Pa(\xBE\x81aF\x05V[\x90Pa(jV[P\x92\x9A\x91\x99P\x90\x97PPPPPPPPV[`\0\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a(\xF4Wa(\xF4aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Q\x83Q`\x01\x01\x90\x93RP\x90\x91\x90PV[\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a))Wa))aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80Q`\x01\x01\x90RV[`\0``\x80a)L\x86a,gV[\x92P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a)jWa)ja2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)\x9DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a)\x88W\x90P[P\x90P`\0[\x85\x81\x10\x15a+\x05W`\0a)\xB7\x82\x88aF\xD2V[a)\xC2\x90`\x02aG\xC9V[\x90P\x80\x85Q\x03a)\xD2WPa+\x05V[`\0a)\xDD\x86a-\xE5V[\x90P`\0a)\xEB\x82\x88a.\xDFV[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x08Wa*\x08a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a*MW\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a*&W\x90P[P\x86\x86\x81Q\x81\x10a*`Wa*`aE\xD9V[` \x02` \x01\x01\x81\x90RP`\0[\x81\x81\x10\x15a*\xEAW`@Q\x80`@\x01`@R\x80\x84\x83\x81Q\x81\x10a*\x93Wa*\x93aE\xD9V[` \x02` \x01\x01Q\x81R` \x01a*\xA9\x8Ea(\xD7V[\x81RP\x87\x87\x81Q\x81\x10a*\xBEWa*\xBEaE\xD9V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a*\xD7Wa*\xD7aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*nV[Pa*\xF4\x83a0\x01V[\x97P\x84`\x01\x01\x94PPPPPa)\xA3V[Pa+\x10\x81\x83a\x16KV[\x97\x96PPPPPPPV[`\0\x80\x82` \x01Q\x83`\0\x01Q\x81Q\x81\x10a+8Wa+8aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Q\x83Q`\0\x19\x01\x90\x93RP\x90\x91\x90PV[` \x81\x10a+\x8BW\x82Q\x82Ra+j` \x83aF\x90V[\x91Pa+w` \x84aF\x90V[\x92Pa+\x84` \x82aF\xD2V[\x90Pa+SV[`\0\x81\x15a+\xBBW`\x01a+\xA0\x83` aF\xD2V[a+\xAC\x90a\x01\0aG\xC9V[a+\xB6\x91\x90aF\xD2V[a+\xBFV[`\0\x19[\x93Q\x83Q\x85\x16\x94\x19\x16\x93\x90\x93\x17\x90\x91RPPV[`\0\x80`\x80\x83\x90\x1C\x15a+\xE8W`\x80\x92\x83\x1C\x92\x01[`@\x83\x90\x1C\x15a+\xFAW`@\x92\x83\x1C\x92\x01[` \x83\x90\x1C\x15a,\x0CW` \x92\x83\x1C\x92\x01[`\x10\x83\x90\x1C\x15a,\x1EW`\x10\x92\x83\x1C\x92\x01[`\x08\x83\x90\x1C\x15a,0W`\x08\x92\x83\x1C\x92\x01[`\x04\x83\x90\x1C\x15a,BW`\x04\x92\x83\x1C\x92\x01[`\x02\x83\x90\x1C\x15a,TW`\x02\x92\x83\x1C\x92\x01[`\x01\x83\x90\x1C\x15a\x0BYW`\x01\x01\x92\x91PPV[``\x80`\0\x80\x84Q\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x8BWa,\x8Ba2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a,\xD0W\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81a,\xA9W\x90P[P\x90P`\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xEDWa,\xEDa2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a-\x16W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P[\x82\x84\x10\x15a-\xD9W`@Q\x80`@\x01`@R\x80\x88\x86\x81Q\x81\x10a-?Wa-?aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x81R` \x01\x88\x86\x81Q\x81\x10a-bWa-baE\xD9V[` \x02` \x01\x01Q`@\x01Q\x81RP\x82\x85\x81Q\x81\x10a-\x83Wa-\x83aE\xD9V[` \x02` \x01\x01\x81\x90RP\x86\x84\x81Q\x81\x10a-\xA0Wa-\xA0aE\xD9V[` \x02` \x01\x01Q`\0\x01Q\x81\x85\x81Q\x81\x10a-\xBEWa-\xBEaE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra-\xD2\x84aF\x05V[\x93Pa-\x1AV[\x90\x96\x90\x95P\x93PPPPV[\x80Q``\x90`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x04Wa.\x04a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a.-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xB1W`\0\x85\x82\x81Q\x81\x10a.OWa.OaE\xD9V[` \x02` \x01\x01Q\x90P\x80`\0\x03a.\x8FWa.l\x81`\x01aF\x90V[\x83\x83\x81Q\x81\x10a.~Wa.~aE\xD9V[` \x02` \x01\x01\x81\x81RPPa.\xD6V[a.\x9A`\x02\x82aH\xEAV[`\0\x03a.\xACWa.l\x81`\x01aF\x90V[a.\xB7`\x01\x82aF\xD2V[\x83\x83\x81Q\x81\x10a.\xC9Wa.\xC9aE\xD9V[` \x02` \x01\x01\x81\x81RPP[P`\x01\x01a.3V[\x81Q\x81Q``\x91\x90`\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x01Wa/\x01a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a/*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84\x81\x10\x15a/\xE3W`\0\x80[\x85\x81\x10\x15a/\x8FW\x88\x81\x81Q\x81\x10a/WWa/WaE\xD9V[` \x02` \x01\x01Q\x8A\x84\x81Q\x81\x10a/qWa/qaE\xD9V[` \x02` \x01\x01Q\x03a/\x87W`\x01\x91Pa/\x8FV[`\x01\x01a/=V[P\x80a/\xDAW\x88\x82\x81Q\x81\x10a/\xA7Wa/\xA7aE\xD9V[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a/\xC1Wa/\xC1aE\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x82a/\xD6\x81aF\x05V[\x93PP[P`\x01\x01a/1V[P`\0a/\xF0\x82\x86aF\xD2V[\x83Q\x03\x83RP\x90\x96\x95PPPPPPV[\x80Q``\x90`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a0 Wa0 a2CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a0IW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x83\x81\x10\x15a0\xF8W`\0`\x02\x87\x83\x81Q\x81\x10a0nWa0naE\xD9V[` \x02` \x01\x01Qa0\x80\x91\x90aF|V[\x90P`\0\x83\x11\x80\x15a0\xB4WP\x80\x84a0\x9A`\x01\x86aF\xD2V[\x81Q\x81\x10a0\xAAWa0\xAAaE\xD9V[` \x02` \x01\x01Q\x14[\x15a0\xBFWPa0\xE6V[\x80\x84\x84\x81Q\x81\x10a0\xD2Wa0\xD2aE\xD9V[` \x02` \x01\x01\x81\x81RPP\x82`\x01\x01\x92PP[\x80a0\xF0\x81aF\x05V[\x91PPa0PV[P`\0a1\x05\x82\x85aF\xD2V[\x83Q\x03\x83RP\x90\x94\x93PPPPV[`@Q\x80`\x80\x01`@R\x80`\0\x81R` \x01`\0\x81R` \x01a1T`@Q\x80``\x01`@R\x80`\0\x81R` \x01`\0\x81R` \x01`\0\x80\x19\x16\x81RP\x90V[\x81R`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x81\x01\x82\x90R\x92\x82\x01R\x91\x01R\x90V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x84Q\x92\x83\x01\x85R\x81\x83R\x82\x01\x81\x90R\x81\x84\x01R\x90\x91\x82\x01R\x90V[`@Q\x80a\x01 \x01`@R\x80`\0\x15\x15\x81R` \x01a1\xDA`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01R`@\x01a2\x01`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01R`@\x01a2(`@\x80Q\x80\x82\x01\x90\x91R`\0\x81R``` \x82\x01R\x90V[\x81R`\0` \x82\x01\x81\x90R```@\x83\x01\x81\x90R\x90\x91\x01R\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2{Wa2{a2CV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a3\x0FWa3\x0Fa2CV[`@R\x91\x90PV[`\0``\x82\x84\x03\x12\x15a3)W`\0\x80\xFD[a31a2YV[\x90P\x815\x81R` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a3jWa3ja2CV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xF0\x1B\x03\x19\x81\x16\x81\x14a\x16HW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a3\xA3Wa3\xA3a2CV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a3\xC2W`\0\x80\xFD[\x815a3\xD5a3\xD0\x82a3\x8AV[a2\xE7V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a3\xEAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a4\x18W`\0\x80\xFD[\x815` a4(a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a4GW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a4kW`\0\x80\x81\xFD[\x90\x88\x01\x90`@\x82\x8B\x03`\x1F\x19\x01\x81\x13\x15a4\x85W`\0\x80\x81\xFD[a4\x8Da2\x81V[\x87\x84\x015\x83\x81\x11\x15a4\x9FW`\0\x80\x81\xFD[a4\xAD\x8D\x8A\x83\x88\x01\x01a3\xB1V[\x82RP\x92\x015\x86\x83\x01RP\x83R\x91\x83\x01\x91\x83\x01a4KV[P\x96\x95PPPPPPV[`\0`@\x82\x84\x03\x12\x15a4\xE2W`\0\x80\xFD[a4\xEAa2\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a5\x03W`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a5\x17W`\0\x80\xFD[a5\x1Fa2YV[\x825\x82\x81\x11\x15a5.W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x87\x13a5?W`\0\x80\xFD[\x805` a5Oa3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a5nW`\0\x80\xFD[\x82\x85\x01[\x84\x81\x10\x15a5\xECW\x805\x88\x81\x11\x15a5\x8AW`\0\x80\x81\xFD[\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a5\xA1W`\0\x80\x81\xFD[a5\xA9a2\x81V[\x85\x82\x015a5\xB6\x81a3tV[\x81R`@\x82\x015\x8A\x81\x11\x15a5\xCBW`\0\x80\x81\xFD[a5\xD9\x8F\x88\x83\x86\x01\x01a3\xB1V[\x82\x88\x01RP\x84RP\x91\x83\x01\x91\x83\x01a5rV[P\x80\x86RPP\x80\x86\x015\x81\x85\x01R`@\x86\x015`@\x85\x01R\x83\x87R\x80\x88\x015\x95P\x84\x86\x11\x15a6\x1AW`\0\x80\xFD[a6&\x89\x87\x8A\x01a4\x07V[\x81\x88\x01RPPPPPP\x92\x91PPV[`\0a\x01 \x82\x84\x03\x12\x15a6IW`\0\x80\xFD[a6Qa2\xA3V[\x90P\x815\x81R` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01Ra6x\x83``\x84\x01a3\x17V[``\x82\x01R`\xC0\x82\x015`\x80\x82\x01R`\xE0\x82\x015`\xA0\x82\x01Ra\x01\0\x82\x015`\xC0\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a6\xB3W`\0\x80\xFD[\x815` a6\xC3a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\xE2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805\x83R\x91\x83\x01\x91\x83\x01a6\xE6V[`\0\x82`\x1F\x83\x01\x12a7\x0EW`\0\x80\xFD[\x815` a7\x1Ea3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a7=W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a7`W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a7rW`\0\x80\x81\xFD[\x84\x81\x015`@a7\x84a3\xD0\x83a3QV[\x82\x81R`\x06\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x87\x81\x01\x90\x8C\x84\x11\x15a7\xA4W`\0\x80\x81\xFD[\x93\x82\x01\x93[\x83\x85\x10\x15a7\xE4W\x82\x85\x8E\x03\x12\x15a7\xC1W`\0\x80\x81\xFD[a7\xC9a2\x81V[\x855\x81R\x89\x86\x015\x8A\x82\x01R\x82R\x93\x82\x01\x93\x90\x88\x01\x90a7\xA9V[\x87RPPP\x92\x84\x01\x92P\x83\x01a7AV[`\0`@\x82\x84\x03\x12\x15a8\x07W`\0\x80\xFD[a8\x0Fa2\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a8(W`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a8qW\x80Q\x88\x81\x11\x15a>\x0FW`\0\x80\x81\xFD[\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a>&W`\0\x80\x81\xFD[a>.a2\x81V[\x85\x82\x01Qa>;\x81a3tV[\x81R`@\x82\x01Q\x8A\x81\x11\x15a>PW`\0\x80\x81\xFD[a>^\x8F\x88\x83\x86\x01\x01a\x9FW`\0\x80\xFD[a6&\x89\x87\x8A\x01a<\x97V[`\0a\x01 \x82\x84\x03\x12\x15a>\xBEW`\0\x80\xFD[a>\xC6a2\xA3V[\x90P\x81Q\x81R` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01Ra>\xED\x83``\x84\x01a;\xA6V[``\x82\x01R`\xC0\x82\x01Q`\x80\x82\x01R`\xE0\x82\x01Q`\xA0\x82\x01Ra\x01\0\x82\x01Q`\xC0\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a?(W`\0\x80\xFD[\x81Q` a?8a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?WW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x80Q\x83R\x91\x83\x01\x91\x83\x01a?[V[`\0\x82`\x1F\x83\x01\x12a?\x83W`\0\x80\xFD[\x81Q` a?\x93a3\xD0\x83a3QV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a?\xB2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a4\xC5W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a?\xD5W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a?\xE7W`\0\x80\x81\xFD[\x84\x81\x01Q`@a?\xF9a3\xD0\x83a3QV[\x82\x81R`\x06\x92\x90\x92\x1B\x83\x01\x81\x01\x91\x87\x81\x01\x90\x8C\x84\x11\x15a@\x19W`\0\x80\x81\xFD[\x93\x82\x01\x93[\x83\x85\x10\x15a@YW\x82\x85\x8E\x03\x12\x15a@6W`\0\x80\x81\xFD[a@>a2\x81V[\x85Q\x81R\x89\x86\x01Q\x8A\x82\x01R\x82R\x93\x82\x01\x93\x90\x88\x01\x90a@\x1EV[\x87RPPP\x92\x84\x01\x92P\x83\x01a?\xB6V[`\0`@\x82\x84\x03\x12\x15a@|W`\0\x80\xFD[a@\x84a2\x81V[\x90P\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a@\x9DW`\0\x80\xFD[\x90\x83\x01\x90``\x82\x86\x03\x12\x15a@\xB1W`\0\x80\xFD[a@\xB9a2YV[\x82Q\x81R` \x83\x01Q` \x82\x01R`@\x83\x01Q\x82\x81\x11\x15a@\xD9W`\0\x80\xFD[a@\xE5\x87\x82\x86\x01a\xABV[` \x82\x01Ra\x01@\x83\x01Q\x82\x81\x11\x15aA\x98W`\0\x80\xFD[aA\xA4\x88\x82\x86\x01a?\x17V[`@\x83\x01RPa\x01`\x83\x01Q\x82\x81\x11\x15aA\xBDW`\0\x80\xFD[aA\xC9\x88\x82\x86\x01a?rV[``\x83\x01RP` \x86\x01Q\x90\x94P\x91P\x80\x82\x11\x15aA\xE6W`\0\x80\xFD[Pa;\x02\x85\x82\x86\x01a@jV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0[\x85\x81\x10\x15aBQW\x82\x84\x03\x89R\x81Q`@\x81Q\x81\x87RaB3\x82\x88\x01\x82a;0V[\x92\x88\x01Q\x96\x88\x01\x96\x90\x96RP\x98\x85\x01\x98\x93P\x90\x84\x01\x90`\x01\x01aB\x11V[P\x91\x97\x96PPPPPPPV[\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q`@\x83\x01R``\x81\x01QaB\x9C``\x84\x01\x82\x80Q\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`\x80\x81\x01Q`\xC0\x83\x01R`\xA0\x81\x01Q`\xE0\x83\x01R`\xC0\x81\x01Qa\x01\0\x83\x01RPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aB\xF0W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aB\xD4V[P\x94\x95\x94PPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15aCtW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15aC_W\x83Q\x80Q\x84R\x8A\x01Q\x8A\x84\x01R\x92\x89\x01\x92`@\x90\x92\x01\x91`\x01\x01aC8V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01aC\x1AV[P\x92\x98\x97PPPPPPPPV[`\0\x81Q`@\x84R\x80Q`@\x85\x01R` \x81\x01Q``\x85\x01R`@\x81\x01Q\x90P```\x80\x85\x01RaC\xB6`\xA0\x85\x01\x82a;0V[\x90P` \x83\x01Q\x84\x82\x03` \x86\x01Ra&.\x82\x82aB\xFBV[`\0a\x01 aC\xDE\x83\x86a:\x14V[\x80a\x01\0\x84\x01R\x83Q`@\x80\x83\x86\x01R\x81Q\x92Pa\x01\x80\x80a\x01`\x87\x01R\x83Q\x82a\x02\xE0\x88\x01Ra\x03\x80\x87\x01\x81Q``a\x03 \x8A\x01R\x81\x81Q\x80\x84Ra\x03\xA0\x93P\x83\x8B\x01\x91P\x83\x81`\x05\x1B\x8C\x01\x01\x93P` \x80\x84\x01\x93P`\0[\x82\x81\x10\x15aD\x82W\x8C\x86\x03a\x03\x9F\x19\x01\x84R\x84Q\x80Q`\x01`\x01`\xF0\x1B\x03\x19\x16\x87R\x82\x01Q\x82\x87\x01\x8A\x90RaDo\x8A\x88\x01\x82a;0V[\x96PP\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01aD8V[P\x85\x81\x01Qa\x03@\x8D\x01R\x87\x86\x01Qa\x03`\x8D\x01R\x98\x89\x01Q\x8B\x85\x03a\x02\xDF\x19\x01a\x03\0\x8D\x01R\x98aD\xB4\x85\x8BaA\xF3V[\x99P\x80\x89\x01Q\x95PaD\xC8\x87\x8D\x01\x87aB^V[\x87\x89\x01Q\x97Pa\x01_\x19\x96P\x86\x8C\x8B\x03\x01a\x02\xA0\x8D\x01RaD\xE9\x8A\x89aB\xC0V[\x99P``\x89\x01Q\x98P\x86\x8C\x8B\x03\x01a\x02\xC0\x8D\x01RaE\x07\x8A\x8AaB\xFBV[\x99P\x80\x8D\x01Q\x98PPPPPPPPPa\x01\x1F\x19\x84\x83\x03\x01a\x01@\x85\x01Ra\x1D\x8C\x82\x82aC\x82V[`\0\x80\x82\x84\x03a\x01\xA0\x81\x12\x15aEDW`\0\x80\xFD[aEN\x85\x85a;\xE0V[\x92P`\xA0`\xFF\x19\x82\x01\x12\x15aEbW`\0\x80\xFD[aEja2YV[a\x01\0\x85\x01Q\x81Ra\x01 \x85\x01Q` \x82\x01R``a\x01?\x19\x83\x01\x12\x15aE\x90W`\0\x80\xFD[aE\x98a2YV[\x91Pa\x01@\x85\x01Q\x82Ra\x01`\x85\x01Q` \x83\x01Ra\x01\x80\x85\x01Q`@\x83\x01R\x81`@\x82\x01R\x80\x92PPP\x92P\x92\x90PV[a\x01\0\x81\x01a\x0BY\x82\x84a:\x14V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01aF\x17WaF\x17aE\xEFV[P`\x01\x01\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BYWa\x0BYaE\xEFV[`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x81R\x81Q`\0\x90aFX\x81`\x04\x85\x01` \x87\x01a;\x0CV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aF\x8BWaF\x8BaFfV[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0BYWa\x0BYaE\xEFV[`\0\x83QaF\xB5\x81\x84` \x88\x01a;\x0CV[\x83Q\x90\x83\x01\x90aF\xC9\x81\x83` \x88\x01a;\x0CV[\x01\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x0BYWa\x0BYaE\xEFV[`\x01\x81\x81[\x80\x85\x11\x15aG W\x81`\0\x19\x04\x82\x11\x15aG\x06WaG\x06aE\xEFV[\x80\x85\x16\x15aG\x13W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90aF\xEAV[P\x92P\x92\x90PV[`\0\x82aG7WP`\x01a\x0BYV[\x81aGDWP`\0a\x0BYV[\x81`\x01\x81\x14aGZW`\x02\x81\x14aGdWaG\x80V[`\x01\x91PPa\x0BYV[`\xFF\x84\x11\x15aGuWaGuaE\xEFV[PP`\x01\x82\x1Ba\x0BYV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aG\xA3WP\x81\x81\na\x0BYV[aG\xAD\x83\x83aF\xE5V[\x80`\0\x19\x04\x82\x11\x15aG\xC1WaG\xC1aE\xEFV[\x02\x93\x92PPPV[`\0a\r\xCA\x83\x83aG(V[`\0\x81aG\xE4WaG\xE4aE\xEFV[P`\0\x19\x01\x90V[`\xFF`\xF8\x1B\x83`\xF8\x1B\x16\x81R`\0\x82QaH\r\x81`\x01\x85\x01` \x87\x01a;\x0CV[\x91\x90\x91\x01`\x01\x01\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x83QaHC\x81\x84` \x88\x01a;\x0CV[`\x01`\x01`\xE0\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x04\x01\x92\x91PPV[`\0\x83QaHr\x81\x84` \x88\x01a;\x0CV[`\x01`\x01`\xC0\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x08\x01\x92\x91PPV[`\0`\xFF\x83\x16\x80aH\xA2WaH\xA2aFfV[\x80`\xFF\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a\x11tWa\x11taE\xEFV[`\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BYWa\x0BYaE\xEFV[`\0\x82aH\xF9WaH\xF9aFfV[P\x06\x90V\xFE\xA2dipfsX\"\x12 \xED\x0C\tzv\x06\x97\xB6\x85=\x86\xE9C8dJz\xBBit\xA4U!(\xA7\xD7\x03\xF1\xEC\xF5|\xFFdsolcC\0\x08\x11\x003"; - /// The deployed bytecode of the contract. - pub static BEEFY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); pub struct Beefy(::ethers::contract::Contract); impl ::core::clone::Clone for Beefy { fn clone(&self) -> Self { @@ -412,46 +402,6 @@ pub mod beefy { ) -> Self { Self(::ethers::contract::Contract::new(address.into(), BEEFY_ABI.clone(), client)) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor - /// arguments and sends it. Returns a new instance of a deployer that returns an - /// instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - BEEFY_ABI.clone(), - BEEFY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } ///Calls the contract's `AURA_CONSENSUS_ID` (0x4e9fdbec) function pub fn aura_consensus_id(&self) -> ::ethers::contract::builders::ContractCall { self.0 diff --git a/evm/abi/src/generated/ping_module.rs b/evm/abi/src/generated/ping_module.rs index 0a59c5c66..662ebd33c 100644 --- a/evm/abi/src/generated/ping_module.rs +++ b/evm/abi/src/generated/ping_module.rs @@ -461,12 +461,12 @@ pub mod ping_module { pub static PINGMODULE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x19\xF28\x03\x80a\x19\xF2\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x19_\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x0F\x06V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x0F]V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x0FzV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x0F\xFDV[a\x02\xF6V[a\x015a\x0106`\x04a\x0F\x06V[a\x04\xAAV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x10\xA7V[a\x05ZV[a\0\xE7a\x01i6`\x04a\x10\xDBV[a\x07\x9AV[a\0\xE7a\x01|6`\x04a\x10\xF4V[a\x08\xB4V[a\0\xE7a\x01\x8F6`\x04a\x12\xECV[a\t\x0BV[a\0\xE7a\x01\xA26`\x04a\x10\xA7V[a\tbV[a\0\xE7a\x01\xB56`\x04a\x14\x94V[a\t\xB9V[a\x015a\x01\xC86`\x04a\x14\x94V[a\n\x10V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 DC\0\xBEY\xFFtWl\xC6D\xC7X\xD7\x0C\x8A\x0B\x9C\x90\xA7j\xD5\x17\xD0\xF1(;O\xF2\xAA\xC0\x88dsolcC\0\x08\x11\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x1D*8\x03\x80a\x1D*\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x1C\x97\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x12#V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x12\x82V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x12\x9FV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x13\"V[a\x02\xF6V[a\x015a\x0106`\x04a\x12#V[a\x07TV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x13\xCCV[a\x08\x04V[a\0\xE7a\x01i6`\x04a\x14\0V[a\n\xB7V[a\0\xE7a\x01|6`\x04a\x14\x19V[a\x0B\xD1V[a\0\xE7a\x01\x8F6`\x04a\x16\x11V[a\x0C(V[a\0\xE7a\x01\xA26`\x04a\x13\xCCV[a\x0C\x7FV[a\0\xE7a\x01\xB56`\x04a\x17\xB9V[a\x0C\xD6V[a\x015a\x01\xC86`\x04a\x17\xB9V[a\r-V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x18=V[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03r\x91\x90\x81\x01\x90a\x18PV[`@Q` \x01a\x03\x82\x91\x90a\x18\xC6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\0\x80Tcd\x1Dr\x9D`\xE0\x1B\x85R\x92Q\x91\x94P\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x03\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\0\x91\x90a\x18\xF9V[\x90P`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04z\x91\x90a\x19\x12V[\x90P`\0\x84``\x01Q\x84Q\x84a\x04\x90\x91\x90a\x19EV[\x86`\x80\x01Qa\x04\x9F\x91\x90a\x19\\V[a\x04\xA9\x91\x90a\x19EV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05#\x91\x90a\x19oV[P`\0T`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05wW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9B\x91\x90a\x19oV[P`\0[\x85``\x01Q\x81\x10\x15a\x07LW`\0`@Q\x80`\xC0\x01`@R\x80\x88`\0\x01Q\x81R` \x01\x88` \x01Q`@Q` \x01a\x05\xEF\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06TW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06|\x91\x90\x81\x01\x90a\x18PV[`@Q` \x01a\x06\x8C\x91\x90a\x18\xC6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x89\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x8A\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x06\xF4\x90\x84\x90`\x04\x01a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x077\x91\x90a\x18\xF9V[PP\x80\x80a\x07D\x90a\x1A%V[\x91PPa\x05\x9FV[PPPPPPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x07\xBA\x90\x84\x90`\x04\x01a\x1A>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xFD\x91\x90a\x18\xF9V[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08NW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08r\x91\x90a\x18\xF9V[\x90P`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEC\x91\x90a\x19\x12V[\x90P`\0\x84`\xC0\x01QQ\x83a\t\x01\x91\x90a\x19EV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\tWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x19oV[P`\0T`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF3\x91\x90a\x19oV[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x89\x01Q\x83R`\x80\x80\x8A\x01Q\x91\x84\x01\x91\x90\x91R\x90\x88\x01Q\x82\x84\x01R`\xA0\x80\x89\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\nj\x90\x84\x90`\x04\x01a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAD\x91\x90a\x18\xF9V[\x96\x95PPPPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\n\xCD\x84a\r\xA2V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x89\x91\x90a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0B\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCC\x91\x90a\x18\xF9V[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\xFCW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CSW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xAAW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\r\x01W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x07\xBA\x90\x84\x90`\x04\x01a\x1BoV[``a\r\xAD\x82a\r\xD3V[`@Q` \x01a\r\xBD\x91\x90a\x1C2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\r\xE0\x83a\x0EfV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa\x0F?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E)W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0E3W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0E\xA5Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0E\xD1Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0E\xEFWf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0F\x07Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0F\x1BWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0F-W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0F9W`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0F\xE9Wa\x0F\xE9a\x0F?V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x10\nWa\x10\na\x0F?V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10)W`\0\x80\xFD[\x815a\x10\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 DC\0\xBEY\xFFtWl\xC6D\xC7X\xD7\x0C\x8A\x0B\x9C\x90\xA7j\xD5\x17\xD0\xF1(;O\xF2\xAA\xC0\x88dsolcC\0\x08\x11\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x12#V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x12\x82V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x12\x9FV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x13\"V[a\x02\xF6V[a\x015a\x0106`\x04a\x12#V[a\x07TV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x13\xCCV[a\x08\x04V[a\0\xE7a\x01i6`\x04a\x14\0V[a\n\xB7V[a\0\xE7a\x01|6`\x04a\x14\x19V[a\x0B\xD1V[a\0\xE7a\x01\x8F6`\x04a\x16\x11V[a\x0C(V[a\0\xE7a\x01\xA26`\x04a\x13\xCCV[a\x0C\x7FV[a\0\xE7a\x01\xB56`\x04a\x17\xB9V[a\x0C\xD6V[a\x015a\x01\xC86`\x04a\x17\xB9V[a\r-V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x18=V[`@Q\x80\x91\x03\x90\xA1PV[`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03r\x91\x90\x81\x01\x90a\x18PV[`@Q` \x01a\x03\x82\x91\x90a\x18\xC6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R`\0\x80Tcd\x1Dr\x9D`\xE0\x1B\x85R\x92Q\x91\x94P\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x03\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\0\x91\x90a\x18\xF9V[\x90P`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04z\x91\x90a\x19\x12V[\x90P`\0\x84``\x01Q\x84Q\x84a\x04\x90\x91\x90a\x19EV[\x86`\x80\x01Qa\x04\x9F\x91\x90a\x19\\V[a\x04\xA9\x91\x90a\x19EV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xFFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05#\x91\x90a\x19oV[P`\0T`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05wW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9B\x91\x90a\x19oV[P`\0[\x85``\x01Q\x81\x10\x15a\x07LW`\0`@Q\x80`\xC0\x01`@R\x80\x88`\0\x01Q\x81R` \x01\x88` \x01Q`@Q` \x01a\x05\xEF\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06TW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x06|\x91\x90\x81\x01\x90a\x18PV[`@Q` \x01a\x06\x8C\x91\x90a\x18\xC6V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x89\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x8A\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x06\xF4\x90\x84\x90`\x04\x01a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\x13W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x077\x91\x90a\x18\xF9V[PP\x80\x80a\x07D\x90a\x1A%V[\x91PPa\x05\x9FV[PPPPPPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x07\xBA\x90\x84\x90`\x04\x01a\x1A>V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xFD\x91\x90a\x18\xF9V[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08NW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08r\x91\x90a\x18\xF9V[\x90P`\0\x80`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xC8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xEC\x91\x90a\x19\x12V[\x90P`\0\x84`\xC0\x01QQ\x83a\t\x01\x91\x90a\x19EV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R3`\x04\x82\x01R0`$\x82\x01R`D\x81\x01\x82\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\tWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x19oV[P`\0T`@Qc\t^\xA7\xB3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R\x90\x83\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF3\x91\x90a\x19oV[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x89\x01Q\x83R`\x80\x80\x8A\x01Q\x91\x84\x01\x91\x90\x91R\x90\x88\x01Q\x82\x84\x01R`\xA0\x80\x89\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\nj\x90\x84\x90`\x04\x01a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\n\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xAD\x91\x90a\x18\xF9V[\x96\x95PPPPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\n\xCD\x84a\r\xA2V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x89\x91\x90a\x19\x91V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0B\xA8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCC\x91\x90a\x18\xF9V[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\xFCW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CSW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xAAW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\r\x01W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x07\xBA\x90\x84\x90`\x04\x01a\x1BoV[``a\r\xAD\x82a\r\xD3V[`@Q` \x01a\r\xBD\x91\x90a\x1C2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\r\xE0\x83a\x0EfV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa\x0F?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0E)W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0E3W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0E\xA5Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0E\xD1Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0E\xEFWf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0F\x07Wc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0F\x1BWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0F-W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0F9W`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0FwWa\x0Fwa\x0F?V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0F\xE9Wa\x0F\xE9a\x0F?V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x10\nWa\x10\na\x0F?V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10)W`\0\x80\xFD[\x815a\x10"] [dependencies] bsc-verifier = { workspace = true, default-features = true } -anyhow = "1.0.68" +anyhow.workspace = true primitive-types = { version = "0.12.1", features = ["serde", "impl-codec"] } ethers = { workspace = true, features = ["ws", "default"] } ismp = { workspace = true, default-features = true } diff --git a/modules/consensus/bsc/prover/src/test.rs b/modules/consensus/bsc/prover/src/test.rs index a80fc99ce..1cbf66a98 100644 --- a/modules/consensus/bsc/prover/src/test.rs +++ b/modules/consensus/bsc/prover/src/test.rs @@ -25,7 +25,7 @@ impl Keccak256 for Host { async fn setup_prover() -> BscPosProver { dotenv::dotenv().ok(); - let consensus_url = std::env::var("BNB_RPC").unwrap(); + let consensus_url = std::env::var("BSC_URL").unwrap(); let mut provider = Provider::::connect(&consensus_url).await; // Bsc block time is 3s we don't want to deal with missing authority set changes while polling // for blocks in our tests @@ -55,16 +55,23 @@ async fn verify_bsc_pos_headers() { let block_epoch = compute_epoch(header.number.low_u64()); if let Some(mut update) = prover - .fetch_bsc_update::(header.clone(), validators.len() as u64, current_epoch, false) + .fetch_bsc_update::( + header.clone(), + validators.len() as u64, + current_epoch + 1, + block_epoch > current_epoch, + ) .await .unwrap() { dbg!(block_epoch); dbg!(current_epoch); dbg!(header.number); + if next_validators.is_some() { update.epoch_header_ancestry = Default::default(); } + if next_validators.is_some() && update.attested_header.number.low_u64() % EPOCH_LENGTH >= (validators.len() as u64 / 2) @@ -76,9 +83,12 @@ async fn verify_bsc_pos_headers() { if result.is_ok() { println!("VALIDATOR SET ROTATED SUCCESSFULLY"); return; + } else { + println!("VALIDATOR SET NOT YET ROTATED"); + continue; } } - let result = verify_bsc_header::(&validators, update).unwrap(); + let result = verify_bsc_header::(&validators, update.clone()).unwrap(); dbg!(&result.hash); dbg!(result.next_validators.is_some()); if let Some(validators) = result.next_validators { diff --git a/modules/consensus/bsc/verifier/Cargo.toml b/modules/consensus/bsc/verifier/Cargo.toml index a1fe3bfc2..2775e3512 100644 --- a/modules/consensus/bsc/verifier/Cargo.toml +++ b/modules/consensus/bsc/verifier/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Polytope Labs "] [dependencies] log = { version = "0.4.17", default-features = false } -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true, default-features = false } sp-core = {version = "27.0.0", default-features = false } alloy-rlp = { version = "0.3.2", default-features = false } alloy-primitives = { version = "0.6.0", default-features = false, features = ["rlp"] } diff --git a/modules/consensus/geth-primitives/Cargo.toml b/modules/consensus/geth-primitives/Cargo.toml index ef975bd7c..0ac6375d1 100644 --- a/modules/consensus/geth-primitives/Cargo.toml +++ b/modules/consensus/geth-primitives/Cargo.toml @@ -6,7 +6,7 @@ description = "Primitives for geth client" authors = ["Polytope Labs "] [dependencies] -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true, default-features = false } alloy-rlp = { workspace = true } alloy-primitives = { workspace = true } alloy-rlp-derive.workspace = true diff --git a/modules/consensus/grandpa/prover/Cargo.toml b/modules/consensus/grandpa/prover/Cargo.toml index eaceb1362..7284958d3 100644 --- a/modules/consensus/grandpa/prover/Cargo.toml +++ b/modules/consensus/grandpa/prover/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Polytope Labs "] [dependencies] hex = "0.4.3" -anyhow = "1.0.64" +anyhow.workspace = true serde = "1.0.144" subxt = { workspace = true, default-features = true } codec = { package = "parity-scale-codec", version = "3.2.2", features = ["derive"] } diff --git a/modules/consensus/polygon-pos/prover/Cargo.toml b/modules/consensus/polygon-pos/prover/Cargo.toml index 34ad26aca..31a4a547c 100644 --- a/modules/consensus/polygon-pos/prover/Cargo.toml +++ b/modules/consensus/polygon-pos/prover/Cargo.toml @@ -9,7 +9,7 @@ authors = ["Polytope Labs "] [dependencies] polygon-pos-verifier = { path= "../verifier" } -anyhow = "1.0.68" +anyhow.workspace = true primitive-types = { version = "0.12.1", features = ["serde_no_std", "impl-codec"] } ethers = { workspace = true, features = ["ws", "default"] } geth-primitives = { path = "../../geth-primitives", default-features = false } diff --git a/modules/consensus/polygon-pos/verifier/Cargo.toml b/modules/consensus/polygon-pos/verifier/Cargo.toml index 061afcd6a..b3124c4cd 100644 --- a/modules/consensus/polygon-pos/verifier/Cargo.toml +++ b/modules/consensus/polygon-pos/verifier/Cargo.toml @@ -6,7 +6,7 @@ description = "Verifier for the Polygon POS Network's Consensus Proofs" authors = ["Polytope Labs "] [dependencies] -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true, default-features = false } sp-core = { workspace = true } alloy-rlp = { version = "0.3.2", default-features = false } alloy-primitives = { version = "0.6.0", default-features = false, features = ["rlp"] } diff --git a/modules/consensus/sync-committee/primitives/Cargo.toml b/modules/consensus/sync-committee/primitives/Cargo.toml index d26d5b6b8..f74c200d7 100644 --- a/modules/consensus/sync-committee/primitives/Cargo.toml +++ b/modules/consensus/sync-committee/primitives/Cargo.toml @@ -14,7 +14,7 @@ codec = { package = "parity-scale-codec", version = "3.2.2", default-features = primitive-types = { version = "0.12.1", default-features = false, features = ["serde_no_std", "impl-codec"] } serde = { version = "1.0.185", optional = true, features = ["derive"] } hex = { version = "0.4.3", default-features = false, features = ["alloc"] } -anyhow = {version = "1.0.75", default-features = false} +anyhow = {workspace = true, default-features = false} ark-ec = { version = "0.4.2", default-features = false } ark-bls12-381 = { version = "0.4.0", default-features = false } bls_on_arkworks = { version = "0.2.2", default-features = false } diff --git a/modules/consensus/sync-committee/prover/Cargo.toml b/modules/consensus/sync-committee/prover/Cargo.toml index 743a5bef6..22794c0b3 100644 --- a/modules/consensus/sync-committee/prover/Cargo.toml +++ b/modules/consensus/sync-committee/prover/Cargo.toml @@ -14,7 +14,7 @@ reqwest-middleware = "0.2.4" reqwest-chain = "0.1.0" serde = { version = "1.0.185", features = ["derive"] } serde_json = { version = "1.0.81"} -anyhow = "1.0.68" +anyhow.workspace = true tokio = { version = "1.32.0", features = ["sync"]} tokio-stream = { version = "0.1.8" } async-stream = { version = "0.3.3"} diff --git a/modules/consensus/sync-committee/verifier/Cargo.toml b/modules/consensus/sync-committee/verifier/Cargo.toml index 44330c60c..8e8623727 100644 --- a/modules/consensus/sync-committee/verifier/Cargo.toml +++ b/modules/consensus/sync-committee/verifier/Cargo.toml @@ -8,7 +8,7 @@ authors = ["Polytope Labs"] sync-committee-primitives = { path= "../primitives", default-features = false } ssz-rs = { git = "https://github.com/polytope-labs/ssz-rs", branch = "main", default-features = false } log = { version = "0.4.17", default-features = false } -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true, default-features = false } ark-ec = { version = "0.4.2", default-features = false } ark-bls12-381 = { version = "0.4.0", default-features = false, features = ["curve"] } bls = { package = "bls_on_arkworks", version = "0.2.2", default-features = false } diff --git a/modules/client/Cargo.toml b/modules/hyperclient/Cargo.toml similarity index 84% rename from modules/client/Cargo.toml rename to modules/hyperclient/Cargo.toml index e562d2c1f..6467be765 100644 --- a/modules/client/Cargo.toml +++ b/modules/hyperclient/Cargo.toml @@ -13,7 +13,7 @@ crate-type = ["cdylib", "rlib"] wasm-bindgen = { version = "0.2.90" } subxt = { workspace = true } getrandom = { version = "0.2", default-features = false, features = ["js"] } -anyhow = "1.0.75" +anyhow.workspace = true hex-literal = { version = "0.4.1" } serde-wasm-bindgen = { version = "0.6.3", default-features = false } serde = { version = "1.0.196", features = ["derive"], default-features = false } @@ -22,7 +22,6 @@ codec = { package = "parity-scale-codec", version = "3.1.3", default-features = futures = "0.3.30" wasm-streams = "0.4.0" tokio = { version = "1.35.1", features = ["macros"] } -wasm-bindgen-test = "0.3.41" js-sys = "0.3.68" web-sys = "0.3.68" wasm-timer = { package = "fluvio-wasm-timer", version = "0.2.5" } @@ -41,6 +40,7 @@ evm-common = { workspace = true } ismp-solidity-abi = { workspace = true } ethereum-trie = { workspace = true } subxt-utils = { workspace = true } +hex = "0.4.3" [dependencies.reconnecting-jsonrpsee-ws-client] git = "https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client" @@ -51,8 +51,15 @@ default-features = false default = ["std"] wasm = ["subxt/web", "subxt/jsonrpsee", "reconnecting-jsonrpsee-ws-client/web", "subxt-utils/wasm"] std = ["subxt/native", "subxt/jsonrpsee", "reconnecting-jsonrpsee-ws-client/native", "subxt-utils/std"] +testing = [] [dev-dependencies] json = { package = "serde_json", version = "1.0.114", default-features = false } wasm-bindgen-test = "0.3.24" hex = { version = "0.4.3", default-features = false } + +[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] +ethers = { workspace = true, features = ["ws"], default-features = true } +pallet-ismp = { workspace = true, default-features = true } +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } +tokio = { version = "1.35.1", features = ["macros", "rt-multi-thread"] } diff --git a/modules/client/README.md b/modules/hyperclient/README.md similarity index 100% rename from modules/client/README.md rename to modules/hyperclient/README.md diff --git a/modules/client/build.sh b/modules/hyperclient/build.sh similarity index 100% rename from modules/client/build.sh rename to modules/hyperclient/build.sh diff --git a/modules/client/src/interfaces.rs b/modules/hyperclient/src/interfaces.rs similarity index 100% rename from modules/client/src/interfaces.rs rename to modules/hyperclient/src/interfaces.rs diff --git a/modules/client/src/internals.rs b/modules/hyperclient/src/internals.rs similarity index 100% rename from modules/client/src/internals.rs rename to modules/hyperclient/src/internals.rs diff --git a/modules/client/src/lib.rs b/modules/hyperclient/src/lib.rs similarity index 99% rename from modules/client/src/lib.rs rename to modules/hyperclient/src/lib.rs index b8b87c341..d0e1e2a30 100644 --- a/modules/client/src/lib.rs +++ b/modules/hyperclient/src/lib.rs @@ -25,6 +25,12 @@ use subxt_utils::Hyperbridge; use wasm_bindgen::prelude::*; use wasm_streams::ReadableStream; +#[cfg(any(feature = "testing", test))] +pub mod testing; + +#[cfg(test)] +mod tests; + #[wasm_bindgen(typescript_custom_section)] const ICONFIG: &'static str = r#" interface IConfig { diff --git a/modules/client/src/providers/evm.rs b/modules/hyperclient/src/providers/evm.rs similarity index 99% rename from modules/client/src/providers/evm.rs rename to modules/hyperclient/src/providers/evm.rs index e24ad6572..3463ca73f 100644 --- a/modules/client/src/providers/evm.rs +++ b/modules/hyperclient/src/providers/evm.rs @@ -311,7 +311,7 @@ impl Client for EvmClient { let contract = EvmHost::new(client.host_address, client.client.clone()); let results = match contract .events() - .address(client.ismp_handler.into()) + .address(client.host_address.into()) .from_block(latest_height) .to_block(block_number) .query_with_meta() diff --git a/modules/client/src/providers/interface.rs b/modules/hyperclient/src/providers/interface.rs similarity index 100% rename from modules/client/src/providers/interface.rs rename to modules/hyperclient/src/providers/interface.rs diff --git a/modules/client/src/providers/mod.rs b/modules/hyperclient/src/providers/mod.rs similarity index 100% rename from modules/client/src/providers/mod.rs rename to modules/hyperclient/src/providers/mod.rs diff --git a/modules/client/src/providers/substrate.rs b/modules/hyperclient/src/providers/substrate.rs similarity index 96% rename from modules/client/src/providers/substrate.rs rename to modules/hyperclient/src/providers/substrate.rs index 4490183b8..7cfc02530 100644 --- a/modules/client/src/providers/substrate.rs +++ b/modules/hyperclient/src/providers/substrate.rs @@ -133,14 +133,16 @@ impl Client for SubstrateClient { async fn query_request_receipt(&self, request_hash: H256) -> Result { let child_storage_key = ChildInfo::new_default(CHILD_TRIE_PREFIX).prefixed_storage_key(); let storage_key = StorageKey(self.request_receipt_full_key(request_hash)); - let params = rpc_params![child_storage_key, storage_key, Option::::None]; + let params = rpc_params![child_storage_key, storage_key]; let response: Option = self.client.rpc().request("childstate_getStorage", params).await?; - let data = response.ok_or_else(|| anyhow!("Request fee metadata query returned None"))?; - let relayer = Vec::decode(&mut &*data.0)?; - - Ok(H160::from_slice(&relayer[..20])) + if let Some(data) = response { + let relayer = Vec::decode(&mut &*data.0)?; + Ok(H160::from_slice(&relayer[..20])) + } else { + Ok(Default::default()) + } } async fn query_state_proof(&self, at: u64, keys: Vec>) -> Result, Error> { @@ -166,14 +168,16 @@ impl Client for SubstrateClient { let key = self.response_receipt_full_key(request_commitment); let child_storage_key = ChildInfo::new_default(CHILD_TRIE_PREFIX).prefixed_storage_key(); let storage_key = StorageKey(key); - let params = rpc_params![child_storage_key, storage_key, Option::::None]; + let params = rpc_params![child_storage_key, storage_key]; let response: Option = self.client.rpc().request("childstate_getStorage", params).await?; - let data = response.ok_or_else(|| anyhow!("Response fee metadata query returned None"))?; - let receipt = ResponseReceipt::decode(&mut &*data.0)?; - - Ok(H160::from_slice(&receipt.relayer[..20])) + if let Some(data) = response { + let receipt = ResponseReceipt::decode(&mut &*data.0)?; + Ok(H160::from_slice(&receipt.relayer[..20])) + } else { + Ok(Default::default()) + } } async fn ismp_events_stream( diff --git a/modules/client/tests/streams.rs b/modules/hyperclient/src/testing.rs similarity index 83% rename from modules/client/tests/streams.rs rename to modules/hyperclient/src/testing.rs index a2b996816..52d9b7367 100644 --- a/modules/client/tests/streams.rs +++ b/modules/hyperclient/src/testing.rs @@ -1,6 +1,3 @@ -#![cfg(target_arch = "wasm32")] -use wasm_bindgen_test::*; - use anyhow::Context; use ethers::{ contract::parse_log, @@ -14,9 +11,7 @@ use ethers::{ utils::hex, }; -use futures::StreamExt; -use hex_literal::hex; -use hyperclient::{ +use crate::{ internals, internals::{request_status_stream, timeout_request_stream}, providers::interface::Client, @@ -26,6 +21,8 @@ use hyperclient::{ }, HyperClient, }; +use futures::StreamExt; +use hex_literal::hex; use ismp::{ consensus::StateMachineId, host::{Ethereum, StateMachine}, @@ -38,30 +35,18 @@ use ismp_solidity_abi::{ }; use std::sync::Arc; -const OP_HOST: H160 = H160(hex!("39f3D7a7783653a04e2970e35e5f32F0e720daeB")); -const OP_HANDLER: H160 = H160(hex!("8738b27E29Af7c92ba2AF72B2fcF01C8934e3Db0")); - -const SEPOLIA_HOST: H160 = H160(hex!("e4226c474A6f4BF285eA80c2f01c0942B04323e5")); -const SEPOLIA_HANDLER: H160 = H160(hex!("F763D969aDC8281b1A8459Bde4CE86BA811b0Aaf")); +const OP_HOST: H160 = H160(hex!("72f7B1310D7dF9fb859f1a216133598f486b8994")); +const OP_HANDLER: H160 = H160(hex!("B437ffC066F43F45853FF38b6D2e01e0198E308a")); -const BSC_HOST: H160 = H160(hex!("4e5bbdd9fE89F54157DDb64b21eD4D1CA1CDf9a6")); -const BSC_HANDLER: H160 = H160(hex!("3aBA86C71C86353e5a96E98e1E08411063B5e2DB")); +const SEPOLIA_HOST: H160 = H160(hex!("cD90465E75479a15f85faCB17B0342e609ef3f5f")); +const SEPOLIA_HANDLER: H160 = H160(hex!("5a78143bf18411273be0b7fc8F5e08efe2F301E9")); -const PING_MODULE: H160 = H160(hex!("d4812d6A3b9fB46feA314260Cbb61D57EBc71D7F")); +const BSC_HOST: H160 = H160(hex!("338B01874A01D7593F85e2e3c1681A46f2f5Df4a")); +const BSC_HANDLER: H160 = H160(hex!("BF95b5EE6Ac91Dc17821846125D2bc11019c23f9")); -wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); - -/// Run the tests by `$ wasm-pack test --firefox --headless` - -fn init_tracing() { - console_error_panic_hook::set_once(); - let _ = tracing_wasm::try_set_as_global_default(); -} - -#[wasm_bindgen_test] -async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { - init_tracing(); +const PING_MODULE: H160 = H160(hex!("Ac60c7c10eD4CD11851A9348867Eba198Fef3baA")); +pub async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { tracing::info!("\n\n\n\nStarting request status subscription\n\n\n\n"); let signing_key = env!("SIGNING_KEY").to_string(); @@ -85,8 +70,8 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { }; let hyperbrige_config = SubstrateConfig { - rpc_url: "wss://hyperbridge-gargantua-rpc.blockops.network:443".to_string(), - // rpc_url: "ws://127.0.0.1:9944".to_string(), + rpc_url: "wss://hyperbridge-paseo-rpc.blockops.network:443".to_string(), + // rpc_url: "ws://127.0.0.1:9901".to_string(), consensus_state_id: *b"PARA", hash_algo: HashAlgorithm::Keccak, }; @@ -103,14 +88,13 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { let signer = LocalWallet::from(SecretKey::from_slice(signer.as_slice())?) .with_chain_id(provider.get_chainid().await?.low_u64()); let client = Arc::new(provider.with_signer(signer)); - let ping_addr = H160(hex!("d4812d6A3b9fB46feA314260Cbb61D57EBc71D7F")); let ping = PingModule::new(PING_MODULE, client.clone()); let chain = StateMachine::Bsc; let host_addr = ping.host().await.context(format!("Error in {chain:?}"))?; let host = EvmHost::new(host_addr, client.clone()); let erc_20 = ERC20::new(host.fee_token().await.context(format!("Error in {chain:?}"))?, client.clone()); - let call = erc_20.approve(host_addr, U256::max_value()); + let call = erc_20.approve(PING_MODULE, U256::max_value()); let gas = call.estimate_gas().await.context(format!("Error in {chain:?}"))?; call.gas(gas) @@ -121,7 +105,7 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { .context(format!("Error in {chain:?}"))?; let call = ping.ping(PingMessage { dest: dest_chain.state_machine.to_string().as_bytes().to_vec().into(), - module: ping_addr.clone().into(), + module: PING_MODULE.clone().into(), timeout: 10 * 60 * 60, fee: U256::from(90_000_000_000_000_000_000u128), count: U256::from(1), @@ -142,7 +126,7 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { .find_map(|log| parse_log::(log).ok()) .expect("Tx should emit post request") .try_into()?; - tracing::info!("Got PostRequest {post:#?}"); + tracing::info!("Got PostRequest {post}"); let block = receipt.block_number.unwrap(); tracing::info!("\n\nTx block: {block}\n\n"); @@ -151,10 +135,10 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { while let Some(res) = stream.next().await { match res { Ok(status) => { - tracing::info!("Got Status {:?}", status); + tracing::info!("Got Status {:#?}", status); }, Err(e) => { - tracing::info!("Error: {e:?}"); + tracing::info!("Error: {e:#?}"); Err(e)? }, } @@ -162,10 +146,7 @@ async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { Ok(()) } -#[wasm_bindgen_test] -async fn test_timeout_request() -> Result<(), anyhow::Error> { - init_tracing(); - +pub async fn test_timeout_request() -> Result<(), anyhow::Error> { tracing::info!("\n\n\n\nStarting timeout request test\n\n\n\n"); let signing_key = env!("SIGNING_KEY").to_string(); @@ -188,8 +169,8 @@ async fn test_timeout_request() -> Result<(), anyhow::Error> { }; let hyperbrige_config = SubstrateConfig { - rpc_url: "wss://hyperbridge-gargantua-rpc.blockops.network:443".to_string(), - // rpc_url: "ws://127.0.0.1:9944".to_string(), + rpc_url: "wss://hyperbridge-paseo-rpc.blockops.network:443".to_string(), + // rpc_url: "ws://127.0.0.1:9901".to_string(), consensus_state_id: *b"PARA", hash_algo: HashAlgorithm::Keccak, }; @@ -214,7 +195,7 @@ async fn test_timeout_request() -> Result<(), anyhow::Error> { let erc_20 = ERC20::new(host.fee_token().await.context(format!("Error in {chain:?}"))?, client.clone()); - let call = erc_20.approve(host_addr, U256::max_value()); + let call = erc_20.approve(PING_MODULE, U256::max_value()); let gas = call.estimate_gas().await.context(format!("Error in {chain:?}"))?; call.gas(gas) @@ -268,7 +249,7 @@ async fn test_timeout_request() -> Result<(), anyhow::Error> { .find_map(|log| parse_log::(log).ok()) .expect("Tx should emit post request") .try_into()?; - tracing::info!("PostRequest {post:#?}"); + tracing::info!("PostRequest {post}"); let block = receipt.block_number.unwrap(); tracing::info!("\n\nTx block: {block}\n\n"); @@ -284,14 +265,14 @@ async fn test_timeout_request() -> Result<(), anyhow::Error> { while let Some(item) = stream.next().await { match item { Ok(status) => { - tracing::info!("Got Status {status:?}"); + tracing::info!("\nGot Status {status:#?}\n"); match status { MessageStatusWithMetadata::Timeout => break, _ => {}, }; }, Err(err) => { - tracing::error!("Got error in request_status_stream: {err:?}") + tracing::error!("Got error in request_status_stream: {err:#?}") }, } } @@ -301,7 +282,7 @@ async fn test_timeout_request() -> Result<(), anyhow::Error> { while let Some(res) = stream.next().await { match res { Ok(status) => { - tracing::info!("Got Status {:?}", status); + tracing::info!("\nGot Status {:#?}\n", status); match status { TimeoutStatus::TimeoutMessage { calldata } => { let gas_price = client.get_gas_price().await?; diff --git a/modules/hyperclient/src/tests.rs b/modules/hyperclient/src/tests.rs new file mode 100644 index 000000000..b332b620e --- /dev/null +++ b/modules/hyperclient/src/tests.rs @@ -0,0 +1,18 @@ +#![cfg(not(target_arch = "wasm32"))] +use crate::testing::{subscribe_to_request_status, test_timeout_request}; + +pub fn setup_logging() { + use tracing_subscriber::{filter::LevelFilter, util::SubscriberInitExt}; + let filter = + tracing_subscriber::EnvFilter::from_default_env().add_directive(LevelFilter::INFO.into()); + let _ = tracing_subscriber::fmt().with_env_filter(filter).finish().try_init(); +} + +#[tokio::test] +#[ignore] +async fn hyperclient_integration_tests() -> Result<(), anyhow::Error> { + setup_logging(); + test_timeout_request().await?; + subscribe_to_request_status().await?; + Ok(()) +} diff --git a/modules/client/src/types.rs b/modules/hyperclient/src/types.rs similarity index 100% rename from modules/client/src/types.rs rename to modules/hyperclient/src/types.rs diff --git a/modules/hyperclient/tests/streams.rs b/modules/hyperclient/tests/streams.rs new file mode 100644 index 000000000..7ca068895 --- /dev/null +++ b/modules/hyperclient/tests/streams.rs @@ -0,0 +1,24 @@ +#![cfg(target_arch = "wasm32")] +use wasm_bindgen_test::*; + +wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); + +/// Run the tests by `$ wasm-pack test --firefox --headless` + +fn init_tracing() { + console_error_panic_hook::set_once(); + let _ = tracing_wasm::try_set_as_global_default(); +} + +#[wasm_bindgen_test] +async fn subscribe_to_request_status() -> Result<(), anyhow::Error> { + init_tracing(); + hyperclient::testing::subscribe_to_request_status().await +} + +#[wasm_bindgen_test] +async fn test_timeout_request() -> Result<(), anyhow::Error> { + init_tracing(); + + hyperclient::testing::test_timeout_request().await +} diff --git a/modules/ismp/clients/bsc/Cargo.toml b/modules/ismp/clients/bsc/Cargo.toml index 1ba1202fd..0221a98b2 100644 --- a/modules/ismp/clients/bsc/Cargo.toml +++ b/modules/ismp/clients/bsc/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Polytope Labs "] [dependencies] log = { version = "0.4.17", default-features = false } -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true } sp-core = {version = "27.0.0", default-features = false } codec = { package = "parity-scale-codec", version = "3.1.3", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } diff --git a/modules/ismp/clients/parachain/inherent/Cargo.toml b/modules/ismp/clients/parachain/inherent/Cargo.toml index ae35d4243..fe3125b4d 100644 --- a/modules/ismp/clients/parachain/inherent/Cargo.toml +++ b/modules/ismp/clients/parachain/inherent/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Polytope Labs "] [dependencies] async-trait = { version = "0.1.63" } codec = { package = "parity-scale-codec", version = "3.0.0", features = [ "derive" ] } -anyhow = "1.0.57" +anyhow.workspace = true # Substrate sp-inherents = { workspace = true, default-features = true } diff --git a/modules/ismp/clients/parachain/src/consensus.rs b/modules/ismp/clients/parachain/src/consensus.rs index 83eb6cdaf..ccd56e5de 100644 --- a/modules/ismp/clients/parachain/src/consensus.rs +++ b/modules/ismp/clients/parachain/src/consensus.rs @@ -17,7 +17,7 @@ use core::{marker::PhantomData, time::Duration}; -use alloc::{boxed::Box, collections::BTreeMap, format, vec::Vec}; +use alloc::{boxed::Box, collections::BTreeMap, format, string::ToString, vec::Vec}; use codec::{Decode, Encode}; use core::fmt::Debug; use cumulus_pallet_parachain_system::{RelaychainDataProvider, RelaychainStateProvider}; @@ -209,13 +209,17 @@ where Ok(()) } + fn consensus_client_id(&self) -> [u8; 4] { + PARACHAIN_CONSENSUS_ID + } + fn state_machine(&self, id: StateMachine) -> Result, Error> { let para_id = match id { StateMachine::Polkadot(id) => id, StateMachine::Kusama(id) => id, - _ => Err(Error::ImplementationSpecific(format!( - "State Machine is not supported by this consensus client" - )))?, + _ => Err(Error::ImplementationSpecific( + "State Machine is not supported by this consensus client".to_string(), + ))?, }; if !Parachains::::contains_key(¶_id) { @@ -225,10 +229,6 @@ where } Ok(Box::new(SubstrateStateMachine::::default())) } - - fn consensus_client_id(&self) -> [u8; 4] { - PARACHAIN_CONSENSUS_ID - } } /// This returns the storage key for a parachain header on the relay chain. pub fn parachain_header_storage_key(para_id: u32) -> StorageKey { diff --git a/modules/ismp/clients/parachain/src/lib.rs b/modules/ismp/clients/parachain/src/lib.rs index 3853a590e..5b2044602 100644 --- a/modules/ismp/clients/parachain/src/lib.rs +++ b/modules/ismp/clients/parachain/src/lib.rs @@ -134,13 +134,6 @@ pub mod pallet { let state = RelaychainDataProvider::::current_relay_chain_state(); if !RelayChainState::::contains_key(state.number) { RelayChainState::::insert(state.number, state.state_root); - - let digest = sp_runtime::generic::DigestItem::Consensus( - consensus::PARACHAIN_CONSENSUS_ID, - state.number.encode(), - ); - - >::deposit_log(digest); } } diff --git a/modules/ismp/clients/polygon-pos/Cargo.toml b/modules/ismp/clients/polygon-pos/Cargo.toml index 4f57c65f1..0637b0f7a 100644 --- a/modules/ismp/clients/polygon-pos/Cargo.toml +++ b/modules/ismp/clients/polygon-pos/Cargo.toml @@ -6,7 +6,7 @@ description = "ISMP Consensus Client for the Polygon POS Network's Consensus Pro authors = ["Polytope Labs "] [dependencies] -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true } codec = { package = "parity-scale-codec", version = "3.1.3", default-features = false } scale-info = { version = "2.1.1", default-features = false, features = ["derive"] } log = { version = "0.4.17", default-features = false } diff --git a/modules/ismp/pallet/host-executive/Cargo.toml b/modules/ismp/pallet/host-executive/Cargo.toml index 2a6b68302..018ce9ead 100644 --- a/modules/ismp/pallet/host-executive/Cargo.toml +++ b/modules/ismp/pallet/host-executive/Cargo.toml @@ -25,7 +25,7 @@ codec = { package = "parity-scale-codec", version = "3.1.3", default-features = scale-info = { version = "2.1.1", default-features = false, features = [ "derive", ] } -anyhow = { version = "1.0.75", default-features = false } +anyhow = { workspace = true } [features] default = ["std"] diff --git a/modules/ismp/pallet/rpc/Cargo.toml b/modules/ismp/pallet/rpc/Cargo.toml index afa37c6f7..2c3dfc6ef 100644 --- a/modules/ismp/pallet/rpc/Cargo.toml +++ b/modules/ismp/pallet/rpc/Cargo.toml @@ -9,6 +9,7 @@ authors = ["Polytope Labs "] targets = ["x86_64-unknown-linux-gnu"] [dependencies] +hex = "0.4.3" codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"] } hex-literal = { version = "0.3.3" } jsonrpsee = { version = "0.16.2", features = ["client-core", "server", "macros"] } diff --git a/modules/ismp/pallet/rpc/src/lib.rs b/modules/ismp/pallet/rpc/src/lib.rs index b154014d0..dfeb740b4 100644 --- a/modules/ismp/pallet/rpc/src/lib.rs +++ b/modules/ismp/pallet/rpc/src/lib.rs @@ -23,7 +23,7 @@ use jsonrpsee::{ types::{error::CallError, ErrorObject}, }; -use codec::{Decode, Encode}; +use codec::Encode; use ismp::{ consensus::{ConsensusClientId, StateMachineId}, events::{Event, StateMachineUpdated}, @@ -571,11 +571,16 @@ where // using swap remove should be fine unless the node is in an inconsistent // state .swap_remove(index as usize); - + let ext_bytes = serde_json::to_string(&extrinsic).map_err(|err| { + runtime_error_into_rpc_error(format!( + "Failed to serialize extrinsic: {err:?}" + )) + })?; + let len = ext_bytes.as_bytes().len() - 1; let extrinsic = - Vec::::decode(&mut extrinsic.encode().as_slice()).map_err(|err| { + hex::decode(ext_bytes.as_bytes()[3..len].to_vec()).map_err(|err| { runtime_error_into_rpc_error(format!( - "Could not decode extrinsic with index {index:?}: {err:?}" + "Failed to decode extrinsic: {err:?}" )) })?; let extrinsic_hash = diff --git a/modules/ismp/pallet/testsuite/Cargo.toml b/modules/ismp/pallet/testsuite/Cargo.toml index 092d8680f..0a47e5be1 100644 --- a/modules/ismp/pallet/testsuite/Cargo.toml +++ b/modules/ismp/pallet/testsuite/Cargo.toml @@ -69,7 +69,7 @@ env_logger = "0.10.0" hex = "0.4.3" zstd-safe = { version = "7.1.0" } ruzstd = "0.6.0" -anyhow = "1.0.75" +anyhow.workspace = true tokio = { version = "1.32.0" } dotenv = "0.15.0" futures = "0.3.28" diff --git a/modules/subxt/subxt-utils/Cargo.toml b/modules/subxt/subxt-utils/Cargo.toml deleted file mode 100644 index ce9ed69dd..000000000 --- a/modules/subxt/subxt-utils/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "subxt-utils" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -subxt = { workspace = true } -ismp = { workspace = true } -sp-core-hashing = { workspace = true } -codec = { workspace = true } - -[features] -default = ["std"] -wasm = ["subxt/web", "subxt/jsonrpsee"] -std = ["subxt/native", "subxt/jsonrpsee", "ismp/std", "sp-core-hashing/std", "codec/std"] - diff --git a/modules/subxt/subxt-utils/src/lib.rs b/modules/subxt/subxt-utils/src/lib.rs deleted file mode 100644 index c0bb77f93..000000000 --- a/modules/subxt/subxt-utils/src/lib.rs +++ /dev/null @@ -1,172 +0,0 @@ -use codec::Encode; -use sp_core_hashing::keccak_256; -use subxt::{ - config::{polkadot::PolkadotExtrinsicParams, substrate::SubstrateHeader, Hasher}, - utils::{AccountId32, MultiAddress, MultiSignature, H256}, -}; - -pub mod gargantua; - -mod gargantua_conversion { - use ismp::{ - consensus::{StateCommitment, StateMachineHeight, StateMachineId}, - host::{Ethereum, StateMachine}, - }; - - impl From - for StateCommitment - { - fn from( - commitment: crate::gargantua::api::runtime_types::ismp::consensus::StateCommitment, - ) -> Self { - StateCommitment { - timestamp: commitment.timestamp, - overlay_root: commitment.overlay_root, - state_root: commitment.state_root, - } - } - } - - impl From - for StateMachineHeight - { - fn from( - state_machine_height: crate::gargantua::api::runtime_types::ismp::consensus::StateMachineHeight, - ) -> Self { - StateMachineHeight { - id: state_machine_height.id.into(), - height: state_machine_height.height, - } - } - } - - impl From - for StateMachineId - { - fn from( - state_machine_id: crate::gargantua::api::runtime_types::ismp::consensus::StateMachineId, - ) -> Self { - StateMachineId { - state_id: state_machine_id.state_id.into(), - consensus_state_id: state_machine_id.consensus_state_id, - } - } - } - - impl From for StateMachine { - fn from( - state_machine_id: crate::gargantua::api::runtime_types::ismp::host::StateMachine, - ) -> Self { - match state_machine_id { - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Ethereum( - ethereum, - ) => match ethereum { - crate::gargantua::api::runtime_types::ismp::host::Ethereum::ExecutionLayer => - StateMachine::Ethereum(Ethereum::ExecutionLayer), - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Optimism => - StateMachine::Ethereum(Ethereum::Optimism), - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Arbitrum => - StateMachine::Ethereum(Ethereum::Arbitrum), - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Base => - StateMachine::Ethereum(Ethereum::Base), - }, - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Polkadot(id) => - StateMachine::Polkadot(id), - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Kusama(id) => - StateMachine::Kusama(id), - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Grandpa( - consensus_state_id, - ) => StateMachine::Grandpa(consensus_state_id), - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Beefy( - consensus_state_id, - ) => StateMachine::Beefy(consensus_state_id), - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Polygon => - StateMachine::Polygon, - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Bsc => - StateMachine::Bsc, - } - } - } - - impl From - for crate::gargantua::api::runtime_types::ismp::consensus::StateMachineHeight - { - fn from(state_machine_height: StateMachineHeight) -> Self { - crate::gargantua::api::runtime_types::ismp::consensus::StateMachineHeight { - id: state_machine_height.id.into(), - height: state_machine_height.height, - } - } - } - - impl From - for crate::gargantua::api::runtime_types::ismp::consensus::StateMachineId - { - fn from(state_machine_id: StateMachineId) -> Self { - Self { - state_id: state_machine_id.state_id.into(), - consensus_state_id: state_machine_id.consensus_state_id, - } - } - } - - impl From for crate::gargantua::api::runtime_types::ismp::host::StateMachine { - fn from(state_machine_id: StateMachine) -> Self { - match state_machine_id { - StateMachine::Ethereum(ethereum) => match ethereum { - Ethereum::ExecutionLayer => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Ethereum( - crate::gargantua::api::runtime_types::ismp::host::Ethereum::ExecutionLayer, - ), - Ethereum::Optimism => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Ethereum( - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Optimism, - ), - Ethereum::Arbitrum => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Ethereum( - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Arbitrum, - ), - Ethereum::Base => crate::gargantua::api::runtime_types::ismp::host::StateMachine::Ethereum( - crate::gargantua::api::runtime_types::ismp::host::Ethereum::Base, - ), - }, - StateMachine::Polkadot(id) => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Polkadot(id), - StateMachine::Kusama(id) => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Kusama(id), - StateMachine::Grandpa(consensus_state_id) => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Grandpa(consensus_state_id), - StateMachine::Beefy(consensus_state_id) => - crate::gargantua::api::runtime_types::ismp::host::StateMachine::Beefy(consensus_state_id), - - StateMachine::Polygon => crate::gargantua::api::runtime_types::ismp::host::StateMachine::Polygon, - StateMachine::Bsc => crate::gargantua::api::runtime_types::ismp::host::StateMachine::Bsc, - } - } - } -} - -/// Implements [`subxt::Config`] for substrate chains with keccak as their hashing algorithm -#[derive(Clone)] -pub struct Hyperbridge; - -/// A type that can hash values using the keccak_256 algorithm. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Encode)] -pub struct RuntimeHasher; - -impl Hasher for RuntimeHasher { - type Output = H256; - fn hash(s: &[u8]) -> Self::Output { - keccak_256(s).into() - } -} - -impl subxt::Config for Hyperbridge { - type Hash = H256; - type AccountId = AccountId32; - type Address = MultiAddress; - type Signature = MultiSignature; - type Hasher = RuntimeHasher; - type Header = SubstrateHeader; - type ExtrinsicParams = PolkadotExtrinsicParams; -} diff --git a/modules/subxt/utils/Cargo.toml b/modules/subxt/utils/Cargo.toml new file mode 100644 index 000000000..dc42c1f03 --- /dev/null +++ b/modules/subxt/utils/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "subxt-utils" +version = "0.1.0" +edition = "2021" + +[dependencies] +subxt = { workspace = true } +ismp = { workspace = true } +sp-core-hashing = { workspace = true } +codec = { workspace = true } +anyhow = "1.0.79" +futures = "0.3.30" + +[dependencies.reconnecting-jsonrpsee-ws-client] +git = "https://github.com/niklasad1/reconnecting-jsonrpsee-ws-client" +rev = "7c0817478c2741cc0889e7c75c645aad9f3cbb55" +default-features = false + +[features] +default = ["std"] +wasm = ["subxt/web", "subxt/jsonrpsee", "reconnecting-jsonrpsee-ws-client/web"] +std = ["subxt/native", "subxt/jsonrpsee", "ismp/std", "sp-core-hashing/std", "codec/std", "reconnecting-jsonrpsee-ws-client/native"] diff --git a/modules/subxt/utils/src/client.rs b/modules/subxt/utils/src/client.rs new file mode 100644 index 000000000..be0b1fc2c --- /dev/null +++ b/modules/subxt/utils/src/client.rs @@ -0,0 +1,88 @@ +use anyhow::Context; +use futures::{StreamExt, TryStreamExt}; +use reconnecting_jsonrpsee_ws_client::{Client, PingConfig, RetryPolicy, SubscriptionId}; +use std::{ops::Deref, sync::Arc, time::Duration}; +use subxt::{ + error::RpcError, + rpc::{RawValue, RpcClientT, RpcFuture, RpcSubscription}, + OnlineClient, +}; + +/// Create a reconnecting jsonrpsee client +pub async fn ws_client( + rpc_ws: &str, + max_rpc_payload_size: u32, +) -> Result, anyhow::Error> { + let rpc_ws = rpc_ws.to_owned(); + // retry every second + let retry_policy = RetryPolicy::fixed(Duration::from_secs(1)) + .with_max_retries(usize::MAX) + .with_max_delay(Duration::from_secs(10)); + let raw_client = Client::builder() + .retry_policy(retry_policy) + .max_request_size(max_rpc_payload_size) + .max_response_size(max_rpc_payload_size) + .enable_ws_ping( + PingConfig::new() + .ping_interval(Duration::from_secs(6)) + .inactive_limit(Duration::from_secs(30)), + ) + .build(rpc_ws.clone()) + .await + .context(format!("Failed to connect to substrate rpc {rpc_ws}"))?; + let client = OnlineClient::::from_rpc_client(Arc::new(ClientWrapper(raw_client))) + .await + .context("Failed to query from substrate rpc: {rpc_ws}")?; + + Ok(client) +} + +pub struct ClientWrapper(pub Client); + +impl Deref for ClientWrapper { + type Target = Client; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl RpcClientT for ClientWrapper { + fn request_raw<'a>( + &'a self, + method: &'a str, + params: Option>, + ) -> RpcFuture<'a, Box> { + Box::pin(async move { + let res = self + .0 + .request_raw(method.to_string(), params) + .await + .map_err(|e| RpcError::ClientError(Box::new(e)))?; + Ok(res) + }) + } + + fn subscribe_raw<'a>( + &'a self, + sub: &'a str, + params: Option>, + unsub: &'a str, + ) -> RpcFuture<'a, RpcSubscription> { + Box::pin(async move { + let stream = self + .0 + .subscribe_raw(sub.to_string(), params, unsub.to_string()) + .await + .map_err(|e| RpcError::ClientError(Box::new(e)))?; + + let id = match stream.id() { + SubscriptionId::Str(id) => Some(id.clone().into_owned()), + SubscriptionId::Num(id) => Some(id.to_string()), + }; + + let stream = stream.map_err(|e| RpcError::ClientError(Box::new(e))).boxed(); + Ok(RpcSubscription { stream, id }) + }) + } +} diff --git a/modules/subxt/subxt-utils/src/gargantua.rs b/modules/subxt/utils/src/gargantua.rs similarity index 94% rename from modules/subxt/subxt-utils/src/gargantua.rs rename to modules/subxt/utils/src/gargantua.rs index 63a02b352..831723e62 100644 --- a/modules/subxt/subxt-utils/src/gargantua.rs +++ b/modules/subxt/utils/src/gargantua.rs @@ -1,4 +1,4 @@ -#[allow(dead_code, missing_docs, unused_imports, non_camel_case_types)] +#[allow(dead_code, unused_imports, non_camel_case_types)] #[allow(clippy::all)] #[allow(rustdoc::broken_intra_doc_links)] pub mod api { @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 25usize] = [ + pub static PALLETS: [&str; 26usize] = [ "System", "Timestamp", "ParachainSystem", @@ -25,6 +25,7 @@ pub mod api { "Mmr", "Ismp", "MessageQueue", + "IsmpParachain", "IsmpSyncCommittee", "IsmpDemo", "Relayer", @@ -33,7 +34,7 @@ pub mod api { "Gateway", "Assets", ]; - pub static RUNTIME_APIS: [&str; 15usize] = [ + pub static RUNTIME_APIS: [&str; 17usize] = [ "AuraApi", "AuraUnincludedSegmentApi", "Core", @@ -47,8 +48,10 @@ pub mod api { "TransactionPaymentCallApi", "MmrRuntimeApi", "IsmpRuntimeApi", + "IsmpParachainApi", "CollectCollationInfo", "GenesisBuilder", + "CreateTransactionApi", ]; #[doc = r" The error type returned when there is a runtime issue."] pub type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -122,12 +125,18 @@ pub mod api { pub fn ismp_runtime_api(&self) -> ismp_runtime_api::IsmpRuntimeApi { ismp_runtime_api::IsmpRuntimeApi } + pub fn ismp_parachain_api(&self) -> ismp_parachain_api::IsmpParachainApi { + ismp_parachain_api::IsmpParachainApi + } pub fn collect_collation_info(&self) -> collect_collation_info::CollectCollationInfo { collect_collation_info::CollectCollationInfo } pub fn genesis_builder(&self) -> genesis_builder::GenesisBuilder { genesis_builder::GenesisBuilder } + pub fn create_transaction_api(&self) -> create_transaction_api::CreateTransactionApi { + create_transaction_api::CreateTransactionApi + } } pub mod aura_api { use super::{root_mod, runtime_types}; @@ -181,7 +190,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -192,7 +204,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -250,7 +265,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -327,7 +345,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -338,7 +359,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -349,7 +373,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -435,7 +462,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -446,7 +476,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -459,7 +492,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -557,7 +593,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -568,7 +607,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -579,7 +621,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -592,7 +637,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -645,7 +693,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -684,7 +735,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -760,7 +814,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -773,7 +830,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -814,7 +874,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -913,7 +976,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -924,7 +990,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -935,7 +1004,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -948,7 +1020,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -979,10 +1054,9 @@ pub mod api { "query_call_info", types::QueryCallInfo { call, len }, [ - 106u8, 159u8, 247u8, 33u8, 50u8, 230u8, 133u8, 231u8, 168u8, 213u8, - 35u8, 53u8, 52u8, 153u8, 128u8, 186u8, 200u8, 212u8, 153u8, 252u8, - 62u8, 18u8, 181u8, 246u8, 245u8, 251u8, 155u8, 68u8, 33u8, 132u8, - 232u8, 97u8, + 150u8, 87u8, 254u8, 64u8, 166u8, 81u8, 197u8, 103u8, 50u8, 114u8, 67u8, + 117u8, 175u8, 58u8, 203u8, 159u8, 250u8, 252u8, 133u8, 27u8, 251u8, + 165u8, 192u8, 46u8, 1u8, 30u8, 20u8, 245u8, 48u8, 4u8, 59u8, 120u8, ], ) } @@ -1002,9 +1076,9 @@ pub mod api { "query_call_fee_details", types::QueryCallFeeDetails { call, len }, [ - 92u8, 2u8, 42u8, 165u8, 132u8, 80u8, 219u8, 246u8, 173u8, 253u8, 132u8, - 84u8, 139u8, 172u8, 40u8, 64u8, 75u8, 34u8, 156u8, 186u8, 87u8, 192u8, - 47u8, 236u8, 64u8, 241u8, 37u8, 158u8, 28u8, 50u8, 184u8, 4u8, + 155u8, 15u8, 62u8, 95u8, 82u8, 197u8, 61u8, 244u8, 157u8, 197u8, 66u8, + 177u8, 170u8, 69u8, 34u8, 43u8, 20u8, 135u8, 243u8, 94u8, 252u8, 144u8, + 169u8, 222u8, 80u8, 171u8, 181u8, 50u8, 57u8, 160u8, 136u8, 162u8, ], ) } @@ -1050,7 +1124,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1064,7 +1141,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1078,7 +1158,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1091,7 +1174,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1178,7 +1264,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1189,7 +1278,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1200,7 +1292,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1403,7 +1498,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1416,7 +1514,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1427,7 +1528,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1438,7 +1542,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1451,7 +1558,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1464,7 +1574,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1477,7 +1590,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1490,7 +1606,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1503,7 +1622,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1513,6 +1635,48 @@ pub mod api { } } } + pub mod ismp_parachain_api { + use super::{root_mod, runtime_types}; + #[doc = " Ismp Parachain Runtime Apis"] + pub struct IsmpParachainApi; + impl IsmpParachainApi { + #[doc = " Return all the para_ids this runtime is interested in. Used by the inherent provider"] + pub fn para_ids( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ParaIds, + ::std::vec::Vec<::core::primitive::u32>, + > { + ::subxt::runtime_api::Payload::new_static( + "IsmpParachainApi", + "para_ids", + types::ParaIds {}, + [ + 227u8, 236u8, 2u8, 42u8, 16u8, 132u8, 78u8, 252u8, 213u8, 139u8, 173u8, + 152u8, 215u8, 94u8, 246u8, 41u8, 72u8, 191u8, 86u8, 118u8, 155u8, + 205u8, 217u8, 98u8, 187u8, 142u8, 230u8, 38u8, 18u8, 3u8, 193u8, 181u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParaIds {} + } + } pub mod collect_collation_info { use super::{root_mod, runtime_types}; #[doc = " Runtime api to collect information about a collation."] @@ -1550,7 +1714,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1621,7 +1788,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1632,7 +1802,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1642,6 +1815,57 @@ pub mod api { } } } + pub mod create_transaction_api { + use super::{root_mod, runtime_types}; + #[doc = " Create transaction."] + #[doc = " This trait is meant to be implemented by the runtime and is responsible for constructing"] + #[doc = " a transaction to be included in the block."] + pub struct CreateTransactionApi; + impl CreateTransactionApi { + #[doc = " Attempt to create signed transaction"] + #[doc = " Runtime implementation is free to construct the payload to sign in any way it wants."] + #[doc = " Returns a scale encoded extrinsic Should panic if signed transaction cannot be created."] + pub fn create_transaction( + &self, + account: ::subxt::utils::AccountId32, + call: runtime_types::gargantua_runtime::RuntimeCall, + ) -> ::subxt::runtime_api::Payload< + types::CreateTransaction, + ::std::vec::Vec<::core::primitive::u8>, + > { + ::subxt::runtime_api::Payload::new_static( + "CreateTransactionApi", + "create_transaction", + types::CreateTransaction { account, call }, + [ + 90u8, 112u8, 15u8, 179u8, 49u8, 254u8, 114u8, 37u8, 84u8, 70u8, 236u8, + 225u8, 142u8, 177u8, 0u8, 152u8, 114u8, 130u8, 199u8, 94u8, 19u8, + 124u8, 40u8, 98u8, 239u8, 50u8, 67u8, 149u8, 70u8, 143u8, 110u8, 60u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CreateTransaction { + pub account: ::subxt::utils::AccountId32, + pub call: runtime_types::gargantua_runtime::RuntimeCall, + } + } + } } pub struct ConstantsApi; impl ConstantsApi { @@ -1723,6 +1947,9 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } + pub fn ismp_parachain(&self) -> ismp_parachain::storage::StorageApi { + ismp_parachain::storage::StorageApi + } pub fn relayer(&self) -> relayer::storage::StorageApi { relayer::storage::StorageApi } @@ -1774,6 +2001,9 @@ pub mod api { pub fn message_queue(&self) -> message_queue::calls::TransactionApi { message_queue::calls::TransactionApi } + pub fn ismp_parachain(&self) -> ismp_parachain::calls::TransactionApi { + ismp_parachain::calls::TransactionApi + } pub fn ismp_sync_committee(&self) -> ismp_sync_committee::calls::TransactionApi { ismp_sync_committee::calls::TransactionApi } @@ -1805,9 +2035,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 170u8, 171u8, 126u8, 165u8, 59u8, 45u8, 85u8, 235u8, 10u8, 169u8, 176u8, 184u8, - 172u8, 23u8, 227u8, 44u8, 201u8, 107u8, 147u8, 21u8, 135u8, 143u8, 165u8, 69u8, - 62u8, 220u8, 117u8, 220u8, 38u8, 223u8, 241u8, 174u8, + 54u8, 202u8, 111u8, 85u8, 41u8, 31u8, 95u8, 107u8, 67u8, 1u8, 6u8, 41u8, 37u8, + 205u8, 138u8, 159u8, 80u8, 52u8, 223u8, 131u8, 209u8, 174u8, 30u8, 23u8, 85u8, + 108u8, 160u8, 112u8, 233u8, 160u8, 200u8, 42u8, ] } pub mod system { @@ -1826,7 +2056,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1844,7 +2077,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1861,7 +2097,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1878,7 +2117,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1895,7 +2137,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1915,7 +2160,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1932,7 +2180,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1950,7 +2201,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1967,7 +2221,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -1984,7 +2241,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2001,7 +2261,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2215,7 +2478,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2233,7 +2499,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2252,7 +2521,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2268,7 +2540,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2286,7 +2561,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2304,7 +2582,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2323,7 +2604,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -2635,9 +2919,9 @@ pub mod api { "Events", vec![], [ - 230u8, 75u8, 76u8, 40u8, 46u8, 117u8, 162u8, 81u8, 219u8, 21u8, 244u8, - 255u8, 2u8, 75u8, 55u8, 37u8, 246u8, 167u8, 25u8, 225u8, 202u8, 253u8, - 22u8, 84u8, 143u8, 232u8, 66u8, 254u8, 212u8, 243u8, 229u8, 55u8, + 113u8, 140u8, 255u8, 233u8, 182u8, 134u8, 74u8, 25u8, 233u8, 183u8, + 15u8, 249u8, 58u8, 144u8, 9u8, 29u8, 3u8, 59u8, 0u8, 177u8, 95u8, 58u8, + 87u8, 123u8, 154u8, 120u8, 230u8, 239u8, 75u8, 151u8, 230u8, 242u8, ], ) } @@ -2947,7 +3231,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3073,7 +3360,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3091,7 +3381,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3108,7 +3401,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3126,7 +3422,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3219,7 +3518,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3236,7 +3538,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3254,7 +3559,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3271,7 +3579,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3289,7 +3600,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3308,7 +3622,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3949,7 +4266,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3968,7 +4288,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -3988,7 +4311,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4007,7 +4333,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4025,7 +4354,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4043,7 +4375,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4060,7 +4395,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4209,7 +4547,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4228,7 +4569,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4248,7 +4592,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4268,7 +4615,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4287,7 +4637,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4306,7 +4659,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4325,7 +4681,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4348,7 +4707,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4367,7 +4729,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4386,7 +4751,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4405,7 +4773,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4424,7 +4795,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4443,7 +4817,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4462,7 +4839,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4481,7 +4861,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4500,7 +4883,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4519,7 +4905,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4537,7 +4926,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4556,7 +4948,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4575,7 +4970,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -4594,7 +4992,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5047,7 +5448,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5201,7 +5605,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5219,7 +5626,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5237,7 +5647,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5254,7 +5667,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5269,7 +5685,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5284,7 +5703,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5301,7 +5723,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5319,7 +5744,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5336,7 +5764,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5506,7 +5937,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5524,7 +5958,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5542,7 +5979,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5561,7 +6001,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5580,7 +6023,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5598,7 +6044,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5617,7 +6066,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5636,7 +6088,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5654,7 +6109,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5674,7 +6132,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5857,7 +6318,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5875,7 +6339,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -5932,7 +6399,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6295,7 +6765,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6312,7 +6785,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6330,7 +6806,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6347,7 +6826,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6365,7 +6847,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6388,9 +6873,9 @@ pub mod api { "sudo", types::Sudo { call: ::std::boxed::Box::new(call) }, [ - 149u8, 6u8, 58u8, 189u8, 108u8, 251u8, 51u8, 214u8, 14u8, 165u8, 188u8, - 202u8, 78u8, 82u8, 158u8, 13u8, 234u8, 67u8, 108u8, 236u8, 112u8, - 189u8, 110u8, 72u8, 16u8, 20u8, 254u8, 240u8, 78u8, 206u8, 13u8, 52u8, + 63u8, 125u8, 177u8, 113u8, 56u8, 210u8, 209u8, 83u8, 196u8, 77u8, + 209u8, 16u8, 5u8, 94u8, 65u8, 101u8, 168u8, 138u8, 96u8, 90u8, 57u8, + 8u8, 26u8, 128u8, 68u8, 23u8, 76u8, 122u8, 106u8, 238u8, 130u8, 144u8, ], ) } @@ -6405,10 +6890,9 @@ pub mod api { "sudo_unchecked_weight", types::SudoUncheckedWeight { call: ::std::boxed::Box::new(call), weight }, [ - 120u8, 200u8, 111u8, 75u8, 21u8, 183u8, 165u8, 58u8, 168u8, 210u8, - 96u8, 105u8, 246u8, 182u8, 130u8, 108u8, 58u8, 61u8, 21u8, 58u8, 152u8, - 105u8, 230u8, 245u8, 4u8, 93u8, 236u8, 189u8, 65u8, 128u8, 132u8, - 108u8, + 1u8, 185u8, 105u8, 40u8, 47u8, 41u8, 87u8, 115u8, 217u8, 164u8, 186u8, + 187u8, 120u8, 98u8, 233u8, 46u8, 24u8, 33u8, 193u8, 207u8, 221u8, + 239u8, 177u8, 132u8, 159u8, 249u8, 32u8, 30u8, 14u8, 34u8, 185u8, 76u8, ], ) } @@ -6439,10 +6923,10 @@ pub mod api { "sudo_as", types::SudoAs { who, call: ::std::boxed::Box::new(call) }, [ - 38u8, 113u8, 42u8, 201u8, 79u8, 60u8, 221u8, 105u8, 93u8, 146u8, 170u8, - 229u8, 158u8, 13u8, 109u8, 66u8, 224u8, 127u8, 21u8, 235u8, 198u8, - 101u8, 176u8, 201u8, 144u8, 171u8, 78u8, 160u8, 42u8, 251u8, 227u8, - 24u8, + 176u8, 198u8, 166u8, 202u8, 4u8, 141u8, 34u8, 198u8, 19u8, 201u8, + 185u8, 229u8, 82u8, 168u8, 171u8, 124u8, 138u8, 105u8, 110u8, 136u8, + 25u8, 104u8, 99u8, 124u8, 94u8, 109u8, 108u8, 21u8, 86u8, 52u8, 212u8, + 137u8, ], ) } @@ -6471,7 +6955,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6490,7 +6977,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6509,7 +6999,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6525,7 +7018,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6584,7 +7080,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6599,7 +7098,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6615,7 +7117,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6633,7 +7138,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6651,7 +7159,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -6755,7 +7266,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7059,7 +7573,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7077,7 +7594,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7097,7 +7617,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7117,7 +7640,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7135,7 +7661,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7155,7 +7684,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7172,7 +7704,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7189,7 +7724,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7206,7 +7744,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7227,7 +7768,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7248,7 +7792,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7265,7 +7812,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7552,7 +8102,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7570,7 +8123,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7591,7 +8147,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7612,7 +8171,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7632,7 +8194,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7653,7 +8218,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7677,7 +8245,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7698,7 +8269,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7720,7 +8294,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7744,7 +8321,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7770,7 +8350,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7788,7 +8371,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7808,7 +8394,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7831,7 +8420,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7851,7 +8443,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7872,7 +8467,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7892,7 +8490,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7917,7 +8518,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7942,7 +8546,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7963,7 +8570,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -7983,7 +8593,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8004,7 +8617,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8023,7 +8639,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8516,7 +9135,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8533,7 +9155,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8550,7 +9175,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8791,7 +9419,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8808,7 +9439,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8825,7 +9459,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8842,7 +9479,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8936,7 +9576,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8955,7 +9598,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8976,7 +9622,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -8994,7 +9643,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9012,7 +9664,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9033,7 +9688,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9054,7 +9712,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9072,7 +9733,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9088,7 +9752,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9104,7 +9771,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9120,7 +9790,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9136,7 +9809,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9152,7 +9828,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9721,7 +10400,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9740,7 +10422,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9807,7 +10492,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9827,7 +10515,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9848,7 +10539,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -9869,7 +10563,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10071,6 +10768,252 @@ pub mod api { } } } + pub mod ismp_parachain { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::ismp_parachain::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UpdateParachainConsensus { + pub data: runtime_types::ismp::messaging::ConsensusMessage, + } + impl ::subxt::blocks::StaticExtrinsic for UpdateParachainConsensus { + const PALLET: &'static str = "IsmpParachain"; + const CALL: &'static str = "update_parachain_consensus"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddParachain { + pub para_ids: ::std::vec::Vec<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for AddParachain { + const PALLET: &'static str = "IsmpParachain"; + const CALL: &'static str = "add_parachain"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveParachain { + pub para_ids: ::std::vec::Vec<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveParachain { + const PALLET: &'static str = "IsmpParachain"; + const CALL: &'static str = "remove_parachain"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::update_parachain_consensus`]."] + pub fn update_parachain_consensus( + &self, + data: runtime_types::ismp::messaging::ConsensusMessage, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IsmpParachain", + "update_parachain_consensus", + types::UpdateParachainConsensus { data }, + [ + 189u8, 35u8, 112u8, 253u8, 157u8, 106u8, 129u8, 183u8, 196u8, 21u8, + 182u8, 18u8, 179u8, 158u8, 51u8, 86u8, 226u8, 154u8, 88u8, 154u8, + 144u8, 119u8, 40u8, 167u8, 72u8, 138u8, 96u8, 160u8, 201u8, 122u8, + 106u8, 161u8, + ], + ) + } + #[doc = "See [`Pallet::add_parachain`]."] + pub fn add_parachain( + &self, + para_ids: ::std::vec::Vec<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IsmpParachain", + "add_parachain", + types::AddParachain { para_ids }, + [ + 138u8, 89u8, 43u8, 47u8, 113u8, 236u8, 188u8, 11u8, 118u8, 63u8, 161u8, + 75u8, 39u8, 49u8, 0u8, 96u8, 30u8, 56u8, 146u8, 40u8, 251u8, 22u8, + 253u8, 42u8, 62u8, 230u8, 228u8, 6u8, 8u8, 235u8, 46u8, 215u8, + ], + ) + } + #[doc = "See [`Pallet::remove_parachain`]."] + pub fn remove_parachain( + &self, + para_ids: ::std::vec::Vec<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IsmpParachain", + "remove_parachain", + types::RemoveParachain { para_ids }, + [ + 232u8, 67u8, 140u8, 13u8, 186u8, 43u8, 235u8, 5u8, 68u8, 177u8, 119u8, + 5u8, 237u8, 165u8, 167u8, 143u8, 185u8, 62u8, 111u8, 125u8, 12u8, 34u8, + 113u8, 239u8, 99u8, 108u8, 173u8, 120u8, 170u8, 33u8, 138u8, 88u8, + ], + ) + } + } + } + #[doc = "Events emitted by this pallet"] + pub type Event = runtime_types::ismp_parachain::pallet::Event; + pub mod events { + use super::runtime_types; + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Mapping of relay chain heights to it's state root. Gotten from parachain-system."] + pub fn relay_chain_state( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "IsmpParachain", + "RelayChainState", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 221u8, 208u8, 73u8, 18u8, 202u8, 173u8, 8u8, 126u8, 66u8, 219u8, 22u8, + 147u8, 194u8, 0u8, 59u8, 209u8, 175u8, 12u8, 201u8, 141u8, 248u8, 31u8, + 138u8, 28u8, 215u8, 1u8, 115u8, 239u8, 55u8, 165u8, 208u8, 39u8, + ], + ) + } + #[doc = " Mapping of relay chain heights to it's state root. Gotten from parachain-system."] + pub fn relay_chain_state_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "IsmpParachain", + "RelayChainState", + Vec::new(), + [ + 221u8, 208u8, 73u8, 18u8, 202u8, 173u8, 8u8, 126u8, 66u8, 219u8, 22u8, + 147u8, 194u8, 0u8, 59u8, 209u8, 175u8, 12u8, 201u8, 141u8, 248u8, 31u8, + 138u8, 28u8, 215u8, 1u8, 115u8, 239u8, 55u8, 165u8, 208u8, 39u8, + ], + ) + } + #[doc = " Tracks whether we've already seen the `update_parachain_consensus` inherent"] + pub fn consensus_updated( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "IsmpParachain", + "ConsensusUpdated", + vec![], + [ + 81u8, 206u8, 228u8, 179u8, 185u8, 62u8, 232u8, 189u8, 100u8, 115u8, + 38u8, 154u8, 240u8, 31u8, 155u8, 196u8, 27u8, 47u8, 16u8, 151u8, 31u8, + 201u8, 248u8, 145u8, 118u8, 233u8, 157u8, 98u8, 6u8, 140u8, 21u8, 84u8, + ], + ) + } + #[doc = " List of parachains who's headers will be inserted in the `update_parachain_consensus`"] + #[doc = " inherent"] + pub fn parachains( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "IsmpParachain", + "Parachains", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 53u8, 29u8, 23u8, 130u8, 150u8, 8u8, 242u8, 167u8, 185u8, 60u8, 240u8, + 250u8, 119u8, 120u8, 227u8, 171u8, 191u8, 238u8, 224u8, 74u8, 66u8, + 20u8, 54u8, 213u8, 185u8, 108u8, 106u8, 194u8, 50u8, 195u8, 189u8, + 83u8, + ], + ) + } + #[doc = " List of parachains who's headers will be inserted in the `update_parachain_consensus`"] + #[doc = " inherent"] + pub fn parachains_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "IsmpParachain", + "Parachains", + Vec::new(), + [ + 53u8, 29u8, 23u8, 130u8, 150u8, 8u8, 242u8, 167u8, 185u8, 60u8, 240u8, + 250u8, 119u8, 120u8, 227u8, 171u8, 191u8, 238u8, 224u8, 74u8, 66u8, + 20u8, 54u8, 213u8, 185u8, 108u8, 106u8, 194u8, 50u8, 195u8, 189u8, + 83u8, + ], + ) + } + } + } + } pub mod ismp_sync_committee { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] @@ -10087,7 +11030,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10105,7 +11051,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10175,7 +11124,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10195,7 +11147,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10212,7 +11167,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10291,7 +11249,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10312,7 +11273,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10333,7 +11297,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10352,7 +11319,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10383,7 +11353,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10401,7 +11374,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10460,7 +11436,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10482,7 +11461,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10619,7 +11601,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10639,7 +11624,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10759,7 +11747,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10811,7 +11802,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10855,7 +11849,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10876,7 +11873,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -10897,7 +11897,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11010,7 +12013,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11029,7 +12035,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11050,7 +12059,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11067,7 +12079,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11084,7 +12099,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11101,7 +12119,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11118,7 +12139,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11138,7 +12162,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11158,7 +12185,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11178,7 +12208,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11198,7 +12231,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11219,7 +12255,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11237,7 +12276,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11255,7 +12297,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11272,7 +12317,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11289,7 +12337,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11307,7 +12358,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11327,7 +12381,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11347,7 +12404,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11364,7 +12424,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11385,7 +12448,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11402,7 +12468,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11427,7 +12496,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11447,7 +12519,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11465,7 +12540,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11484,7 +12562,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11505,7 +12586,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11522,7 +12606,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11540,7 +12627,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11558,7 +12648,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11576,7 +12669,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -11594,7 +12690,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12205,7 +13304,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12225,7 +13327,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12245,7 +13350,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12266,7 +13374,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12286,7 +13397,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12307,7 +13421,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12326,7 +13443,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12345,7 +13465,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12364,7 +13487,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12382,7 +13508,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12400,7 +13529,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12420,7 +13552,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12440,7 +13575,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12458,7 +13596,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12476,7 +13617,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12495,7 +13639,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12517,7 +13664,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12535,7 +13685,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12556,7 +13709,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12576,7 +13732,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12599,7 +13758,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12617,7 +13779,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12636,7 +13801,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -12656,7 +13824,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13029,7 +14200,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13043,7 +14217,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13057,7 +14234,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13074,7 +14254,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13087,7 +14270,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13125,7 +14311,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13164,7 +14353,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13175,7 +14367,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13192,7 +14387,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13203,7 +14401,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13217,7 +14418,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13228,7 +14432,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13245,7 +14452,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13279,7 +14489,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13307,7 +14520,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13329,7 +14545,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13346,7 +14565,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13363,7 +14585,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13379,7 +14604,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13397,7 +14625,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13415,7 +14646,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13442,7 +14676,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13453,7 +14690,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13489,7 +14729,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13507,7 +14750,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13522,7 +14768,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13538,7 +14787,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13558,7 +14810,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13585,7 +14840,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13604,7 +14862,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13622,7 +14883,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13636,7 +14900,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13650,7 +14917,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13664,7 +14934,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13678,7 +14951,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13692,7 +14968,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13706,7 +14985,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13721,7 +15003,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13736,7 +15021,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13753,7 +15041,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13775,7 +15066,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13829,7 +15123,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13870,7 +15167,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13913,7 +15213,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13930,7 +15233,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13944,7 +15250,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13959,7 +15268,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13974,7 +15286,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -13995,7 +15310,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14006,7 +15324,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14036,6 +15357,8 @@ pub mod api { Ismp(runtime_types::pallet_ismp::pallet::Call), #[codec(index = 42)] MessageQueue(runtime_types::pallet_message_queue::pallet::Call), + #[codec(index = 50)] + IsmpParachain(runtime_types::ismp_parachain::pallet::Call), #[codec(index = 51)] IsmpSyncCommittee(runtime_types::ismp_sync_committee::pallet::pallet::Call), #[codec(index = 52)] @@ -14056,7 +15379,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14102,7 +15428,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14132,6 +15461,8 @@ pub mod api { Ismp(runtime_types::pallet_ismp::pallet::Event), #[codec(index = 42)] MessageQueue(runtime_types::pallet_message_queue::pallet::Event), + #[codec(index = 50)] + IsmpParachain(runtime_types::ismp_parachain::pallet::Event), #[codec(index = 52)] IsmpDemo(runtime_types::pallet_ismp_demo::pallet::Event), #[codec(index = 53)] @@ -14146,7 +15477,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14157,7 +15491,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14175,7 +15512,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14190,7 +15530,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14204,7 +15547,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14221,7 +15567,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14236,7 +15585,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14250,7 +15602,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14266,7 +15621,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14286,7 +15644,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14315,7 +15676,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14330,7 +15694,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14351,7 +15718,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14366,7 +15736,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14388,7 +15761,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14402,7 +15778,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14417,7 +15796,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14432,7 +15814,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14446,7 +15831,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14473,7 +15861,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14492,7 +15883,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14509,7 +15903,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14528,7 +15925,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14543,7 +15943,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14559,7 +15962,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14575,7 +15981,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14588,6 +15997,54 @@ pub mod api { } } } + pub mod ismp_parachain { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::update_parachain_consensus`]."] + update_parachain_consensus { + data: runtime_types::ismp::messaging::ConsensusMessage, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::add_parachain`]."] + add_parachain { para_ids: ::std::vec::Vec<::core::primitive::u32> }, + #[codec(index = 2)] + #[doc = "See [`Pallet::remove_parachain`]."] + remove_parachain { para_ids: ::std::vec::Vec<::core::primitive::u32> }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, + Debug, + Eq, + PartialEq, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Events emitted by this pallet"] + pub enum Event {} + } + } pub mod ismp_sync_committee { use super::runtime_types; pub mod pallet { @@ -14599,7 +16056,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14624,7 +16084,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14653,7 +16116,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14677,7 +16143,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14696,7 +16165,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14712,7 +16184,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14749,7 +16224,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14764,7 +16242,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -14786,7 +16267,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15013,7 +16497,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15089,7 +16576,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15263,7 +16753,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15281,7 +16774,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15295,7 +16791,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15313,7 +16812,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15337,7 +16839,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15354,7 +16859,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15372,7 +16880,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15400,7 +16911,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15457,7 +16971,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15500,7 +17017,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15597,7 +17117,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15613,7 +17136,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15629,7 +17155,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15640,7 +17169,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15654,7 +17186,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15672,7 +17207,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15692,7 +17230,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15711,7 +17252,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15745,7 +17289,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15788,7 +17335,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15802,7 +17352,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15866,7 +17419,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -15926,7 +17482,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16032,7 +17591,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16078,7 +17640,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16094,7 +17659,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16113,7 +17681,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16144,7 +17715,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16169,7 +17743,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16241,7 +17818,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16259,7 +17839,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16273,7 +17856,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16289,7 +17875,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16309,7 +17898,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16336,7 +17928,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16355,7 +17950,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16397,7 +17995,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16413,7 +18014,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16429,7 +18033,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16451,7 +18058,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16478,7 +18088,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16500,7 +18113,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16536,7 +18152,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16584,7 +18203,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16609,7 +18231,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16649,7 +18274,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16683,7 +18311,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16702,7 +18333,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16729,7 +18363,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16744,7 +18381,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16766,7 +18406,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16795,7 +18438,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16841,7 +18487,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16884,7 +18533,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16903,7 +18555,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16917,7 +18572,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16942,7 +18600,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16964,7 +18625,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -16992,7 +18656,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17015,7 +18682,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17049,7 +18719,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17065,7 +18738,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17105,7 +18781,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17130,7 +18809,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17154,7 +18836,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17170,7 +18855,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17185,7 +18873,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17201,7 +18892,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17212,7 +18906,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17233,7 +18930,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17327,7 +19027,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17418,7 +19121,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17619,7 +19325,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17647,7 +19356,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17666,7 +19378,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17692,7 +19407,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17706,7 +19424,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17720,7 +19441,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17739,7 +19463,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17751,7 +19478,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17762,7 +19492,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17781,7 +19514,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17796,7 +19532,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17819,7 +19558,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17837,7 +19579,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17854,7 +19599,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17870,7 +19618,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17888,7 +19639,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17905,7 +19659,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17920,7 +19677,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17932,7 +19692,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17957,7 +19720,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17974,7 +19740,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -17986,7 +19755,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18002,7 +19774,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18016,7 +19791,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18030,7 +19808,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18044,7 +19825,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18055,7 +19839,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18067,7 +19854,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18081,7 +19871,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18096,7 +19889,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18115,7 +19911,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18154,7 +19953,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18171,7 +19973,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18185,7 +19990,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18219,7 +20027,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18746,7 +20557,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18768,7 +20582,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18802,7 +20619,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18820,7 +20640,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18836,7 +20659,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18854,7 +20680,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18872,7 +20701,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18912,7 +20744,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18926,7 +20761,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18944,7 +20782,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18976,7 +20817,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -18997,7 +20841,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19014,7 +20861,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19040,7 +20890,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19057,7 +20910,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19076,7 +20932,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19096,7 +20955,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19117,7 +20979,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19130,7 +20995,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19148,7 +21016,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19198,7 +21069,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19214,7 +21088,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19240,7 +21117,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19256,7 +21136,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19270,7 +21153,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19286,7 +21172,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19299,7 +21188,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19315,7 +21207,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19337,7 +21232,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19409,7 +21307,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19426,7 +21327,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19491,7 +21395,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19527,7 +21434,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19567,7 +21477,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19716,7 +21629,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19865,7 +21781,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19889,7 +21808,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19909,7 +21831,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19934,7 +21859,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19950,7 +21878,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19961,7 +21892,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -19977,7 +21911,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20009,7 +21946,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20049,7 +21989,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20100,7 +22043,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20143,7 +22089,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20218,7 +22167,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20234,7 +22186,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20258,7 +22213,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20274,7 +22232,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20288,7 +22249,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20304,7 +22268,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20317,7 +22284,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20333,7 +22303,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20364,7 +22337,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20456,7 +22432,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20478,7 +22457,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20696,7 +22678,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20914,7 +22899,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20940,7 +22928,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20966,7 +22957,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -20982,7 +22976,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21015,7 +23012,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21031,7 +23031,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21042,7 +23045,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21054,7 +23060,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21068,7 +23077,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21084,7 +23096,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21100,7 +23115,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21116,7 +23134,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] @@ -21132,7 +23153,10 @@ pub mod api { :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, :: subxt :: ext :: scale_encode :: EncodeAsType, + Clone, Debug, + Eq, + PartialEq, )] # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] diff --git a/modules/subxt/utils/src/lib.rs b/modules/subxt/utils/src/lib.rs new file mode 100644 index 000000000..5382dd43a --- /dev/null +++ b/modules/subxt/utils/src/lib.rs @@ -0,0 +1,157 @@ +use codec::Encode; +use sp_core_hashing::keccak_256; +use subxt::{ + config::{polkadot::PolkadotExtrinsicParams, substrate::SubstrateHeader, Hasher}, + utils::{AccountId32, MultiAddress, MultiSignature, H256}, +}; + +pub mod client; +pub mod gargantua; + +mod gargantua_conversion { + use super::gargantua::api::runtime_types; + use ismp::{ + consensus::{StateCommitment, StateMachineHeight, StateMachineId}, + host::{Ethereum, StateMachine}, + }; + + impl From for StateCommitment { + fn from(commitment: runtime_types::ismp::consensus::StateCommitment) -> Self { + StateCommitment { + timestamp: commitment.timestamp, + overlay_root: commitment.overlay_root, + state_root: commitment.state_root, + } + } + } + + impl From for StateMachineHeight { + fn from(state_machine_height: runtime_types::ismp::consensus::StateMachineHeight) -> Self { + StateMachineHeight { + id: state_machine_height.id.into(), + height: state_machine_height.height, + } + } + } + + impl From for StateMachineId { + fn from(state_machine_id: runtime_types::ismp::consensus::StateMachineId) -> Self { + StateMachineId { + state_id: state_machine_id.state_id.into(), + consensus_state_id: state_machine_id.consensus_state_id, + } + } + } + + impl From for StateMachine { + fn from(state_machine_id: runtime_types::ismp::host::StateMachine) -> Self { + match state_machine_id { + runtime_types::ismp::host::StateMachine::Ethereum(ethereum) => match ethereum { + runtime_types::ismp::host::Ethereum::ExecutionLayer => + StateMachine::Ethereum(Ethereum::ExecutionLayer), + runtime_types::ismp::host::Ethereum::Optimism => + StateMachine::Ethereum(Ethereum::Optimism), + runtime_types::ismp::host::Ethereum::Arbitrum => + StateMachine::Ethereum(Ethereum::Arbitrum), + runtime_types::ismp::host::Ethereum::Base => + StateMachine::Ethereum(Ethereum::Base), + }, + runtime_types::ismp::host::StateMachine::Polkadot(id) => StateMachine::Polkadot(id), + runtime_types::ismp::host::StateMachine::Kusama(id) => StateMachine::Kusama(id), + runtime_types::ismp::host::StateMachine::Grandpa(consensus_state_id) => + StateMachine::Grandpa(consensus_state_id), + runtime_types::ismp::host::StateMachine::Beefy(consensus_state_id) => + StateMachine::Beefy(consensus_state_id), + runtime_types::ismp::host::StateMachine::Polygon => StateMachine::Polygon, + runtime_types::ismp::host::StateMachine::Bsc => StateMachine::Bsc, + } + } + } + + impl From for runtime_types::ismp::consensus::StateMachineHeight { + fn from(state_machine_height: StateMachineHeight) -> Self { + runtime_types::ismp::consensus::StateMachineHeight { + id: state_machine_height.id.into(), + height: state_machine_height.height, + } + } + } + + impl From for runtime_types::ismp::consensus::StateMachineId { + fn from(state_machine_id: StateMachineId) -> Self { + Self { + state_id: state_machine_id.state_id.into(), + consensus_state_id: state_machine_id.consensus_state_id, + } + } + } + + impl From for runtime_types::ismp::host::StateMachine { + fn from(state_machine_id: StateMachine) -> Self { + match state_machine_id { + StateMachine::Ethereum(ethereum) => match ethereum { + Ethereum::ExecutionLayer => runtime_types::ismp::host::StateMachine::Ethereum( + runtime_types::ismp::host::Ethereum::ExecutionLayer, + ), + Ethereum::Optimism => runtime_types::ismp::host::StateMachine::Ethereum( + runtime_types::ismp::host::Ethereum::Optimism, + ), + Ethereum::Arbitrum => runtime_types::ismp::host::StateMachine::Ethereum( + runtime_types::ismp::host::Ethereum::Arbitrum, + ), + Ethereum::Base => runtime_types::ismp::host::StateMachine::Ethereum( + runtime_types::ismp::host::Ethereum::Base, + ), + }, + StateMachine::Polkadot(id) => runtime_types::ismp::host::StateMachine::Polkadot(id), + StateMachine::Kusama(id) => runtime_types::ismp::host::StateMachine::Kusama(id), + StateMachine::Grandpa(consensus_state_id) => + runtime_types::ismp::host::StateMachine::Grandpa(consensus_state_id), + StateMachine::Beefy(consensus_state_id) => + runtime_types::ismp::host::StateMachine::Beefy(consensus_state_id), + + StateMachine::Polygon => runtime_types::ismp::host::StateMachine::Polygon, + StateMachine::Bsc => runtime_types::ismp::host::StateMachine::Bsc, + } + } + } + + impl From for runtime_types::ismp::router::Post { + fn from(post: ismp::router::Post) -> Self { + Self { + source: post.source.into(), + dest: post.dest.into(), + nonce: post.nonce, + from: post.from, + to: post.to, + timeout_timestamp: post.timeout_timestamp, + data: post.data, + } + } + } +} + +/// Implements [`subxt::Config`] for substrate chains with keccak as their hashing algorithm +#[derive(Clone)] +pub struct Hyperbridge; + +/// A type that can hash values using the keccak_256 algorithm. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Encode)] +pub struct RuntimeHasher; + +impl Hasher for RuntimeHasher { + type Output = H256; + fn hash(s: &[u8]) -> Self::Output { + keccak_256(s).into() + } +} + +impl subxt::Config for Hyperbridge { + type Hash = H256; + type AccountId = AccountId32; + type Address = MultiAddress; + type Signature = MultiSignature; + type Hasher = RuntimeHasher; + type Header = SubstrateHeader; + type ExtrinsicParams = PolkadotExtrinsicParams; +} diff --git a/modules/trees/mmr/pallet/src/lib.rs b/modules/trees/mmr/pallet/src/lib.rs index 837d75bec..a515103e1 100644 --- a/modules/trees/mmr/pallet/src/lib.rs +++ b/modules/trees/mmr/pallet/src/lib.rs @@ -132,7 +132,7 @@ pub mod pallet { /// Current size of the MMR (number of leaves). #[pallet::storage] - #[pallet::getter(fn mmr_leaves)] + #[pallet::getter(fn leaf_count)] pub type NumberOfLeaves, I: 'static = ()> = StorageValue<_, LeafIndex, ValueQuery>; /// Height at which the pallet started inserting leaves into offchain storage. diff --git a/modules/trees/mmr/primitives/src/lib.rs b/modules/trees/mmr/primitives/src/lib.rs index ca6ddfa69..03a36781e 100644 --- a/modules/trees/mmr/primitives/src/lib.rs +++ b/modules/trees/mmr/primitives/src/lib.rs @@ -167,7 +167,7 @@ impl DataOrHash { } /// Converts a node's mmr position, to it's k-index. The k-index is the node's index within a layer -/// of the subtree. +/// of the subtree. Refer to https://research.polytope.technology/merkle-mountain-range-multi-proofs pub fn mmr_position_to_k_index(mut leaves: Vec, mmr_size: u64) -> Vec<(u64, usize)> { let peaks = get_peaks(mmr_size); let mut leaves_with_k_indices = vec![]; diff --git a/parachain/node/Cargo.toml b/parachain/node/Cargo.toml index da2de10f8..650919899 100644 --- a/parachain/node/Cargo.toml +++ b/parachain/node/Cargo.toml @@ -85,10 +85,10 @@ cumulus-client-consensus-proposer = { workspace = true } cumulus-client-collator = { workspace = true } # Simnode -sc-simnode = { workspace = true, optional = true } -frame-system = { workspace = true, optional = true } -pallet-transaction-payment = { workspace = true, optional = true } -simnode-runtime-api = { workspace = true, optional = true } +sc-simnode = { workspace = true, features = ["parachain"] } +frame-system = { workspace = true } +pallet-transaction-payment = { workspace = true } +simnode-runtime-api = { workspace = true } [build-dependencies] substrate-build-script-utils = { version = "11.0.0" } @@ -99,9 +99,9 @@ runtime-benchmarks = [ "try-runtime-cli/try-runtime", "gargantua-runtime/runtime-benchmarks", "messier-runtime/runtime-benchmarks", + "nexus-runtime/runtime-benchmarks", "polkadot-cli/runtime-benchmarks", ] - try-runtime = [ "try-runtime-cli/try-runtime", "gargantua-runtime/try-runtime", @@ -111,13 +111,3 @@ async-backing = [ "gargantua-runtime/async-backing", "messier-runtime/async-backing" ] - -simnode = [ - "sc-simnode/parachain", - "frame-system", - "pallet-transaction-payment", - "simnode-runtime-api", - "gargantua-runtime/simnode", - "nexus-runtime/simnode", - "messier-runtime/simnode" -] diff --git a/parachain/node/src/cli.rs b/parachain/node/src/cli.rs index ef35352e3..f7a86aade 100644 --- a/parachain/node/src/cli.rs +++ b/parachain/node/src/cli.rs @@ -59,7 +59,6 @@ pub enum Subcommand { TryRuntime, /// Runs the node with signature verification override and manual seal. - #[cfg(feature = "simnode")] Simnode(sc_simnode::cli::SimnodeCli), } diff --git a/parachain/node/src/command.rs b/parachain/node/src/command.rs index 530217f74..860c3622a 100644 --- a/parachain/node/src/command.rs +++ b/parachain/node/src/command.rs @@ -31,7 +31,7 @@ use std::net::SocketAddr; use crate::{ chain_spec, cli::{Cli, RelayChainCli, Subcommand}, - service::{new_partial, GargantuanExecutor, MessierExecutor, NexusExecutor}, + service::new_partial, }; fn load_spec(id: &str) -> std::result::Result, String> { @@ -115,19 +115,6 @@ impl SubstrateCli for Cli { } impl SubstrateCli for RelayChainCli { - fn load_spec(&self, id: &str) -> std::result::Result, String> { - match id { - "paseo" => { - let chain_spec = Box::new(service::GenericChainSpec::from_json_bytes(Cow::Owned( - include_bytes!("../../chainspec/paseo.raw.json").to_vec(), - ))?) as Box; - Ok(chain_spec) - }, - id => polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()) - .load_spec(id), - } - } - fn impl_name() -> String { "Hyperbridge".into() } @@ -157,32 +144,48 @@ impl SubstrateCli for RelayChainCli { fn copyright_start_year() -> i32 { 2020 } + + fn load_spec(&self, id: &str) -> std::result::Result, String> { + match id { + "paseo" => { + let chain_spec = Box::new(service::GenericChainSpec::from_json_bytes(Cow::Owned( + include_bytes!("../../chainspec/paseo.raw.json").to_vec(), + ))?) as Box; + Ok(chain_spec) + }, + id => polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()) + .load_spec(id), + } + } } macro_rules! construct_async_run { (|$components:ident, $cli:ident, $cmd:ident, $config:ident| $( $code:tt )* ) => {{ let runner = $cli.create_runner($cmd)?; - match runner.config().chain_spec.id() { - chain if chain.contains("gargantua") || chain.contains("dev") => { - runner.async_run(|$config| { - let $components = new_partial::(&$config)?; - Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) - }) - } - chain if chain.contains("messier") => { - runner.async_run(|$config| { - let $components = new_partial::(&$config)?; - Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) - }) - } - chain if chain.contains("nexus") => { - runner.async_run(|$config| { - let $components = new_partial::(&$config)?; - Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) - }) - } - chain => panic!("Unknown chain with id: {}", chain), + match runner.config().chain_spec.id() { + chain if chain.contains("gargantua") || chain.contains("dev") => { + runner.async_run(|$config| { + let executor = sc_service::new_wasm_executor::(&$config); + let $components = new_partial::(&$config, executor)?; + Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) + }) + } + chain if chain.contains("messier") => { + runner.async_run(|$config| { + let executor = sc_service::new_wasm_executor::(&$config); + let $components = new_partial::(&$config, executor)?; + Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) + }) } + chain if chain.contains("nexus") => { + runner.async_run(|$config| { + let executor = sc_service::new_wasm_executor::(&$config); + let $components = new_partial::(&$config, executor)?; + Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) + }) + } + chain => panic!("Unknown chain with id: {}", chain), + } }} } @@ -245,26 +248,32 @@ pub fn run() -> Result<()> { }, Some(Subcommand::ExportGenesisState(cmd)) => { let runner = cli.create_runner(cmd)?; - runner.sync_run(|config| match config.chain_spec.id() { - chain if chain.contains("gargantua") || chain.contains("dev") => { - let components = - new_partial::(&config)?; - cmd.run(components.client.clone()) - }, - chain if chain.contains("messier") => { - let components = - new_partial::(&config)?; + runner.sync_run(|config| { + let executor = + sc_service::new_wasm_executor::(&config); - cmd.run(components.client.clone()) - }, - chain if chain.contains("nexus") => { - let components = - new_partial::(&config)?; + match config.chain_spec.id() { + chain if chain.contains("gargantua") || chain.contains("dev") => { + let components = + new_partial::(&config, executor)?; - cmd.run(components.client.clone()) - }, - chain => panic!("Unknown chain with id: {}", chain), + cmd.run(components.client.clone()) + }, + chain if chain.contains("messier") => { + let components = + new_partial::(&config, executor)?; + + cmd.run(components.client.clone()) + }, + chain if chain.contains("nexus") => { + let components = + new_partial::(&config, executor)?; + + cmd.run(components.client.clone()) + }, + chain => panic!("Unknown chain with id: {}", chain), + } }) }, Some(Subcommand::ExportGenesisWasm(cmd)) => { @@ -286,29 +295,29 @@ pub fn run() -> Result<()> { You can enable it with `--features runtime-benchmarks`." .into()) }, - BenchmarkCmd::Block(cmd) => - runner.sync_run(|config| match config.chain_spec.id() { + BenchmarkCmd::Block(cmd) => runner.sync_run(|config| { + let executor = + sc_service::new_wasm_executor::(&config); + + match config.chain_spec.id() { chain if chain.contains("gargantua") || chain.contains("dev") => { - let components = new_partial::< - gargantua_runtime::RuntimeApi, - GargantuanExecutor, - >(&config)?; + let components = + new_partial::(&config, executor)?; cmd.run(components.client) }, chain if chain.contains("messier") => { - let components = new_partial::< - messier_runtime::RuntimeApi, - MessierExecutor, - >(&config)?; + let components = + new_partial::(&config, executor)?; cmd.run(components.client) }, chain if chain.contains("nexus") => { let components = - new_partial::(&config)?; + new_partial::(&config, executor)?; cmd.run(components.client) }, chain => panic!("Unknown chain with id: {}", chain), - }), + } + }), #[cfg(not(feature = "runtime-benchmarks"))] BenchmarkCmd::Storage(_) => return Err(sc_cli::Error::Input( @@ -318,28 +327,34 @@ pub fn run() -> Result<()> { ) .into()), #[cfg(feature = "runtime-benchmarks")] - BenchmarkCmd::Storage(cmd) => - runner.sync_run(|config| match config.chain_spec.id() { + BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| { + let executor = + sc_service::new_wasm_executor::(&config); + match config.chain_spec.id() { chain if chain.contains("gargantua") || chain.contains("dev") => { - let components = new_partial::< - gargantua_runtime::RuntimeApi, - GargantuanExecutor, - >(&config)?; + let components = + new_partial::(&config, executor)?; let db = components.backend.expose_db(); let storage = components.backend.expose_storage(); cmd.run(config, components.client.clone(), db, storage) }, chain if chain.contains("messier") => { - let components = new_partial::< - messier_runtime::RuntimeApi, - MessierExecutor, - >(&config)?; + let components = + new_partial::(&config, executor)?; + let db = components.backend.expose_db(); + let storage = components.backend.expose_storage(); + cmd.run(config, components.client.clone(), db, storage) + }, + chain if chain.contains("nexus") => { + let components = + new_partial::(&config, executor)?; let db = components.backend.expose_db(); let storage = components.backend.expose_storage(); cmd.run(config, components.client.clone(), db, storage) }, chain => panic!("Unknown chain with id: {}", chain), - }), + } + }), BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())), // NOTE: this allows the Client to leniently implement @@ -352,12 +367,6 @@ pub fn run() -> Result<()> { Some(Subcommand::TryRuntime(cmd)) => { let runner = cli.create_runner(cmd)?; - use sc_executor::{sp_wasm_interface::ExtendedHostFunctions, NativeExecutionDispatch}; - type HostFunctionsOf = ExtendedHostFunctions< - sp_io::SubstrateHostFunctions, - ::ExtendHostFunctions, - >; - // grab the task manager. let registry = &runner.config().prometheus_config.as_ref().map(|cfg| &cfg.registry); let task_manager = @@ -365,16 +374,16 @@ pub fn run() -> Result<()> { .map_err(|e| format!("Error: {:?}", e))?; runner.async_run(|_| { - Ok((cmd.run::>(), task_manager)) + Ok((cmd.run::(), task_manager)) }) }, #[cfg(not(feature = "try-runtime"))] Some(Subcommand::TryRuntime) => Err("Try-runtime was not enabled when building the node. \ You can enable it with `--features try-runtime`." .into()), - #[cfg(feature = "simnode")] + Some(Subcommand::Simnode(cmd)) => { - use crate::{rpc, simnode::new_partial_with_executor}; + use crate::rpc; let mut runner = cli.create_runner(&cmd.run.normalize())?; let config = runner.config_mut(); config.offchain_worker.indexing_enabled = true; @@ -382,9 +391,8 @@ pub fn run() -> Result<()> { match config.chain_spec.id() { chain if chain.contains("gargantua") || chain.contains("dev") => { let executor = sc_simnode::new_wasm_executor(config); - let components = new_partial_with_executor::( - &config, executor, - )?; + let components = + new_partial::(&config, executor)?; runner.run_node_until_exit(move |config| async move { let client = components.client.clone(); let pool = components.transaction_pool.clone(); diff --git a/parachain/node/src/main.rs b/parachain/node/src/main.rs index 06a8a8573..33866b156 100644 --- a/parachain/node/src/main.rs +++ b/parachain/node/src/main.rs @@ -26,7 +26,6 @@ mod command; mod rpc; mod runtime_api; -#[cfg(feature = "simnode")] mod simnode; fn main() -> sc_cli::Result<()> { diff --git a/parachain/node/src/runtime_api.rs b/parachain/node/src/runtime_api.rs index 2f594238c..0c518dc1e 100644 --- a/parachain/node/src/runtime_api.rs +++ b/parachain/node/src/runtime_api.rs @@ -68,53 +68,6 @@ pub mod opaque { pub type Address = MultiAddress; } -#[cfg(not(feature = "simnode"))] -pub trait BaseHostRuntimeApis: - TaggedTransactionQueue - + ApiExt - + BlockBuilder - + AccountNonceApi - + Metadata - + AuraApi - + OffchainWorkerApi - + SessionKeys - + CollectCollationInfo - + TransactionPaymentRuntimeApi - + pallet_ismp_runtime_api::IsmpRuntimeApi - + cumulus_primitives_aura::AuraUnincludedSegmentApi - + pallet_mmr_runtime_api::MmrRuntimeApi< - opaque::Block, - H256, - opaque::BlockNumber, - pallet_ismp::mmr::Leaf, - > -{ -} - -#[cfg(not(feature = "simnode"))] -impl BaseHostRuntimeApis for Api where - Api: TaggedTransactionQueue - + ApiExt - + BlockBuilder - + AccountNonceApi - + Metadata - + AuraApi - + OffchainWorkerApi - + SessionKeys - + CollectCollationInfo - + TransactionPaymentRuntimeApi - + pallet_ismp_runtime_api::IsmpRuntimeApi - + cumulus_primitives_aura::AuraUnincludedSegmentApi - + pallet_mmr_runtime_api::MmrRuntimeApi< - opaque::Block, - H256, - opaque::BlockNumber, - pallet_ismp::mmr::Leaf, - > -{ -} - -#[cfg(feature = "simnode")] pub trait BaseHostRuntimeApis: TaggedTransactionQueue + ApiExt @@ -141,7 +94,6 @@ pub trait BaseHostRuntimeApis: { } -#[cfg(feature = "simnode")] impl BaseHostRuntimeApis for Api where Api: TaggedTransactionQueue + ApiExt diff --git a/parachain/node/src/service.rs b/parachain/node/src/service.rs index d442be70c..498b4905a 100644 --- a/parachain/node/src/service.rs +++ b/parachain/node/src/service.rs @@ -38,68 +38,25 @@ use polkadot_primitives::ValidationCode; use frame_benchmarking_cli::SUBSTRATE_REFERENCE_HARDWARE; use sc_client_api::Backend; use sc_consensus::ImportQueue; -use sc_executor::{ - HeapAllocStrategy, NativeElseWasmExecutor, WasmExecutor, DEFAULT_HEAP_ALLOC_STRATEGY, -}; +use sc_executor::{RuntimeVersionOf, WasmExecutor}; use sc_network::NetworkBlock; use sc_network_sync::SyncingService; use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; +use sc_simnode::parachain::ParachainSelectChain; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_api::ConstructRuntimeApi; +use sp_core::traits::CodeExecutor; use sp_keystore::KeystorePtr; use sp_runtime::traits::Keccak256; use substrate_prometheus_endpoint::Registry; -/// Native executor type. -pub struct GargantuanExecutor; - -impl sc_executor::NativeExecutionDispatch for GargantuanExecutor { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - gargantua_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - gargantua_runtime::native_version() - } -} - -pub struct MessierExecutor; - -impl sc_executor::NativeExecutionDispatch for MessierExecutor { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - messier_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - messier_runtime::native_version() - } -} - -pub struct NexusExecutor; - -impl sc_executor::NativeExecutionDispatch for crate::service::NexusExecutor { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - nexus_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - nexus_runtime::native_version() - } -} - -pub type FullClient = - TFullClient>; +pub type FullClient> = + TFullClient; pub type FullBackend = TFullBackend; -type ParachainBlockImport = +type ParachainBlockImport> = TParachainBlockImport>, FullBackend>; /// Starts a `ServiceBuilder` for a full service. @@ -108,11 +65,12 @@ type ParachainBlockImport = /// be able to perform chain operations. pub fn new_partial( config: &Configuration, + executor: Executor, ) -> Result< PartialComponents< FullClient, FullBackend, - (), + ParachainSelectChain>, sc_consensus::DefaultImportQueue, sc_transaction_pool::FullPool>, (ParachainBlockImport, Option, Option), @@ -125,7 +83,7 @@ where Runtime::RuntimeApi: BaseHostRuntimeApis, sc_client_api::StateBackendFor: sc_client_api::StateBackend, - Executor: sc_executor::NativeExecutionDispatch + 'static, + Executor: CodeExecutor + RuntimeVersionOf + 'static, { let telemetry = config .telemetry_endpoints @@ -138,20 +96,6 @@ where }) .transpose()?; - let heap_pages = config - .default_heap_pages - .map_or(DEFAULT_HEAP_ALLOC_STRATEGY, |h| HeapAllocStrategy::Static { extra_pages: h as _ }); - - let wasm = WasmExecutor::builder() - .with_execution_method(config.wasm_method) - .with_onchain_heap_alloc_strategy(heap_pages) - .with_offchain_heap_alloc_strategy(heap_pages) - .with_max_runtime_instances(config.max_runtime_instances) - .with_runtime_cache_size(config.runtime_cache_size) - .build(); - - let executor = NativeElseWasmExecutor::::new_with_wasm_executor(wasm); - let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( config, @@ -166,6 +110,7 @@ where task_manager.spawn_handle().spawn("telemetry", None, worker.run()); telemetry }); + let select_chain = ParachainSelectChain::new(client.clone()); // Spawn mmr canonicalizing task task_manager.spawn_handle().spawn( @@ -204,7 +149,7 @@ where keystore_container, task_manager, transaction_pool, - select_chain: (), + select_chain, other: (block_import, telemetry, telemetry_worker_handle), }) } @@ -213,7 +158,7 @@ where /// /// This is the actual implementation that is abstract over the executor and the runtime api. #[sc_tracing::logging::prefix_logs_with("Parachain")] -async fn start_node_impl( +async fn start_node_impl( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, @@ -221,16 +166,15 @@ async fn start_node_impl( hwbench: Option, ) -> sc_service::error::Result where - Runtime: - ConstructRuntimeApi> + Send + Sync + 'static, + Runtime: ConstructRuntimeApi> + Send + Sync + 'static, Runtime::RuntimeApi: BaseHostRuntimeApis, sc_client_api::StateBackendFor: sc_client_api::StateBackend, - Executor: sc_executor::NativeExecutionDispatch + 'static, { let parachain_config = prepare_node_config(parachain_config); - - let params = new_partial::(¶chain_config)?; + let executor = + sc_service::new_wasm_executor::(¶chain_config); + let params = new_partial::(¶chain_config, executor)?; let (block_import, mut telemetry, telemetry_worker_handle) = params.other; let net_config = sc_network::config::FullNetworkConfiguration::new(¶chain_config.network); @@ -388,7 +332,7 @@ where })?; if validator { - start_consensus::( + start_consensus::( client.clone(), backend, block_import, @@ -426,7 +370,7 @@ where Runtime::RuntimeApi: BaseHostRuntimeApis, sc_client_api::StateBackendFor: sc_client_api::StateBackend, - Executor: sc_executor::NativeExecutionDispatch + 'static, + Executor: CodeExecutor + RuntimeVersionOf + 'static, { let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; @@ -450,17 +394,15 @@ where )) } -fn start_consensus( - client: Arc>, +fn start_consensus( + client: Arc>, backend: Arc, - block_import: ParachainBlockImport, + block_import: ParachainBlockImport, prometheus_registry: Option<&Registry>, telemetry: Option, task_manager: &TaskManager, relay_chain_interface: Arc, - transaction_pool: Arc< - sc_transaction_pool::FullPool>, - >, + transaction_pool: Arc>>, sync_oracle: Arc>, keystore: KeystorePtr, relay_chain_slot_duration: Duration, @@ -470,12 +412,10 @@ fn start_consensus( announce_block: Arc>) + Send + Sync>, ) -> Result<(), sc_service::Error> where - Runtime: - ConstructRuntimeApi> + Send + Sync + 'static, + Runtime: ConstructRuntimeApi> + Send + Sync + 'static, Runtime::RuntimeApi: BaseHostRuntimeApis, sc_client_api::StateBackendFor: sc_client_api::StateBackend, - Executor: sc_executor::NativeExecutionDispatch + 'static, { // NOTE: because we use Aura here explicitly, we can use `CollatorSybilResistance::Resistant` // when starting the network. @@ -549,7 +489,7 @@ pub async fn start_parachain_node( ) -> sc_service::error::Result { match parachain_config.chain_spec.id() { chain if chain.contains("gargantua") => - start_node_impl::( + start_node_impl::( parachain_config, polkadot_config, collator_options, @@ -558,7 +498,7 @@ pub async fn start_parachain_node( ) .await, chain if chain.contains("messier") => - start_node_impl::( + start_node_impl::( parachain_config, polkadot_config, collator_options, @@ -567,7 +507,7 @@ pub async fn start_parachain_node( ) .await, chain if chain.contains("nexus") => - start_node_impl::( + start_node_impl::( parachain_config, polkadot_config, collator_options, diff --git a/parachain/node/src/simnode.rs b/parachain/node/src/simnode.rs index 46d9c17ef..b89948242 100644 --- a/parachain/node/src/simnode.rs +++ b/parachain/node/src/simnode.rs @@ -1,24 +1,24 @@ -use crate::runtime_api::{opaque, BaseHostRuntimeApis}; -use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport; -use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; -use sc_simnode::{parachain::ParachainSelectChain, Executor}; -use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorkerHandle}; -use sp_api::ConstructRuntimeApi; -use sp_runtime::traits::Keccak256; -use std::sync::Arc; - -type FullClient = TFullClient; - -type FullBackend = TFullBackend; - -type ParachainBlockImport = - TParachainBlockImport>, FullBackend>; +// Copyright (C) Polytope Labs Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! [`sc_simnode::ChainInfo`] implementations for the hyperbridge runtimes pub struct GargantuaRuntimeInfo; impl sc_simnode::ChainInfo for GargantuaRuntimeInfo { // make sure you pass the opaque::Block here - type Block = gargantua_runtime::opaque::Block; // the runtime type type Runtime = gargantua_runtime::Runtime; @@ -47,105 +47,3 @@ impl sc_simnode::ChainInfo for GargantuaRuntimeInfo { ) } } - -/// Build the import queue for the parachain runtime. -pub(crate) fn build_import_queue( - client: Arc>, - block_import: ParachainBlockImport, - config: &Configuration, - telemetry: Option, - task_manager: &TaskManager, -) -> Result, sc_service::Error> -where - Runtime: ConstructRuntimeApi> + Send + Sync + 'static, - Runtime::RuntimeApi: BaseHostRuntimeApis, - sc_client_api::StateBackendFor: - sc_client_api::StateBackend, -{ - let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; - - Ok(cumulus_client_consensus_aura::equivocation_import_queue::fully_verifying_import_queue::< - sp_consensus_aura::sr25519::AuthorityPair, - _, - _, - _, - _, - >( - client, - block_import, - move |_, _| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - Ok(timestamp) - }, - slot_duration, - &task_manager.spawn_essential_handle(), - config.prometheus_registry(), - telemetry, - )) -} - -/// Starts a `ServiceBuilder` for a full service. -/// -/// Use this macro if you don't actually need the full service, but just the builder in order to -/// be able to perform chain operations. -pub fn new_partial_with_executor( - config: &Configuration, - executor: Executor, -) -> Result< - PartialComponents< - FullClient, - FullBackend, - ParachainSelectChain>, - sc_consensus::DefaultImportQueue, - sc_transaction_pool::FullPool>, - (ParachainBlockImport, Option, Option), - >, - sc_service::Error, -> -where - Runtime: ConstructRuntimeApi> + Send + Sync + 'static, - Runtime::RuntimeApi: BaseHostRuntimeApis, - sc_client_api::StateBackendFor: - sc_client_api::StateBackend, -{ - let (client, backend, keystore_container, task_manager) = - sc_service::new_full_parts::(config, None, executor)?; - let client = Arc::new(client); - - // Spawn mmr canonicalizing task - task_manager.spawn_handle().spawn( - "mmr-canonicalizing-gadget", - "mmr-gadget", - mmr_gadget::MmrGadget::start( - client.clone(), - backend.clone(), - sp_mmr_primitives::INDEXING_PREFIX.to_vec(), - ), - ); - - let transaction_pool = sc_transaction_pool::BasicPool::new_full( - config.transaction_pool.clone(), - config.role.is_authority().into(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - ); - - let block_import = ParachainBlockImport::::new(client.clone(), backend.clone()); - - let import_queue = - build_import_queue(client.clone(), block_import.clone(), config, None, &task_manager)?; - - let select_chain = ParachainSelectChain::new(client.clone()); - - Ok(PartialComponents { - backend, - client, - import_queue, - keystore_container, - task_manager, - transaction_pool, - select_chain, - other: (block_import, None, None), - }) -} diff --git a/parachain/runtimes/gargantua/Cargo.toml b/parachain/runtimes/gargantua/Cargo.toml index e4196eced..5e90f0ad1 100644 --- a/parachain/runtimes/gargantua/Cargo.toml +++ b/parachain/runtimes/gargantua/Cargo.toml @@ -83,6 +83,8 @@ pallet-ismp-demo = { workspace = true } pallet-ismp-runtime-api = { workspace = true } ismp-sync-committee = { workspace = true } ismp-bsc = { workspace = true } +ismp-parachain = { workspace = true } +ismp-parachain-runtime-api = { workspace = true } pallet-ismp-relayer = { workspace = true } pallet-ismp-host-executive = { workspace = true } pallet-call-decompressor = { workspace = true } @@ -91,7 +93,7 @@ pallet-asset-gateway = { workspace = true } pallet-mmr = { workspace = true } pallet-mmr-runtime-api = { workspace = true } sp-mmr-primitives = { workspace = true } -simnode-runtime-api = { workspace = true, optional = true } +simnode-runtime-api = { workspace = true } [features] default = [ @@ -151,6 +153,8 @@ std = [ "parachains-common/std", "sp-genesis-builder/std", "ismp-bsc/std", + "ismp-parachain/std", + "ismp-parachain-runtime-api/std", "pallet-ismp-relayer/std", "pallet-ismp-host-executive/std", "pallet-call-decompressor/std", @@ -160,7 +164,8 @@ std = [ "orml-xcm-support/std", "orml-traits/std", "pallet-mmr-runtime-api/std", - "sp-mmr-primitives/std" + "sp-mmr-primitives/std", + "simnode-runtime-api/std" ] runtime-benchmarks = [ @@ -213,6 +218,3 @@ async-backing = [ "pallet-aura/experimental" ] -simnode = [ - "simnode-runtime-api" -] diff --git a/parachain/runtimes/gargantua/src/ismp.rs b/parachain/runtimes/gargantua/src/ismp.rs index 66293bf9d..00042d098 100644 --- a/parachain/runtimes/gargantua/src/ismp.rs +++ b/parachain/runtimes/gargantua/src/ismp.rs @@ -15,8 +15,8 @@ use crate::{ alloc::{boxed::Box, string::ToString}, - AccountId, Assets, Balance, Balances, Gateway, Ismp, Mmr, ParachainInfo, Runtime, RuntimeEvent, - Timestamp, EXISTENTIAL_DEPOSIT, + AccountId, Assets, Balance, Balances, Gateway, Ismp, IsmpParachain, Mmr, ParachainInfo, + Runtime, RuntimeEvent, Timestamp, EXISTENTIAL_DEPOSIT, }; use frame_support::{ pallet_prelude::{ConstU32, Get}, @@ -76,6 +76,7 @@ impl pallet_ismp::Config for Runtime { type ConsensusClients = ( ismp_bsc::BscClient>, ismp_sync_committee::SyncCommitteeConsensusClient, Sepolia>, + ismp_parachain::ParachainConsensusClient, ); type Mmr = Mmr; type WeightProvider = (); @@ -98,6 +99,10 @@ impl pallet_call_decompressor::Config for Runtime { type MaxCallSize = ConstU32<2>; } +impl ismp_parachain::Config for Runtime { + type RuntimeEvent = RuntimeEvent; +} + // todo: set corrrect parameters parameter_types! { pub const AssetPalletId: PalletId = PalletId(*b"asset-tx"); diff --git a/parachain/runtimes/gargantua/src/lib.rs b/parachain/runtimes/gargantua/src/lib.rs index 75cee567f..ec09440e7 100644 --- a/parachain/runtimes/gargantua/src/lib.rs +++ b/parachain/runtimes/gargantua/src/lib.rs @@ -27,6 +27,7 @@ mod ismp; mod weights; pub mod xcm; +use alloc::vec::Vec; use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; use cumulus_primitives_core::AggregateMessageOrigin; use frame_support::traits::TransformOrigin; @@ -574,6 +575,8 @@ construct_runtime!( Ismp: pallet_ismp = 41, MessageQueue: pallet_message_queue = 42, + // supporting ismp pallets + IsmpParachain: ismp_parachain = 50, IsmpSyncCommittee: ismp_sync_committee::pallet = 51, IsmpDemo: pallet_ismp_demo = 52, Relayer: pallet_ismp_relayer = 53, @@ -755,7 +758,7 @@ impl_runtime_apis! { /// Return the number of MMR leaves. fn mmr_leaf_count() -> Result { - Ok(Mmr::mmr_leaves()) + Ok(Mmr::leaf_count()) } /// Return the on-chain MMR root hash. @@ -840,11 +843,11 @@ impl_runtime_apis! { } } - // impl ismp_parachain_runtime_api::IsmpParachainApi for Runtime { - // fn para_ids() -> Vec { - // IsmpParachain::para_ids() - // } - // } + impl ismp_parachain_runtime_api::IsmpParachainApi for Runtime { + fn para_ids() -> Vec { + IsmpParachain::para_ids() + } + } impl cumulus_primitives_core::CollectCollationInfo for Runtime { fn collect_collation_info(header: &::Header) -> cumulus_primitives_core::CollationInfo { @@ -933,7 +936,6 @@ impl_runtime_apis! { } } - #[cfg(feature = "simnode")] impl simnode_runtime_api::CreateTransactionApi for Runtime where RuntimeCall: codec::Codec, @@ -951,15 +953,15 @@ impl_runtime_apis! { use sp_core::sr25519; let nonce = frame_system::Pallet::::account_nonce(account.clone()); let extra = ( - frame_system::CheckNonZeroSender::::new(), - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(Era::Immortal), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(0), - ); + frame_system::CheckNonZeroSender::::new(), + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(Era::Immortal), + frame_system::CheckNonce::::from(nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(0), + ); let signature = MultiSignature::from(sr25519::Signature([0_u8;64])); let address = sp_runtime::traits::AccountIdLookup::unlookup(account.into()); let ext = generic::UncheckedExtrinsic::::new_signed( diff --git a/parachain/runtimes/messier/Cargo.toml b/parachain/runtimes/messier/Cargo.toml index 26a260528..3d0188d82 100644 --- a/parachain/runtimes/messier/Cargo.toml +++ b/parachain/runtimes/messier/Cargo.toml @@ -92,7 +92,7 @@ pallet-asset-gateway = { workspace = true } pallet-mmr = { workspace = true } pallet-mmr-runtime-api = { workspace = true } sp-mmr-primitives = { workspace = true } -simnode-runtime-api = { workspace = true, optional = true } +simnode-runtime-api = { workspace = true } [features] default = [ @@ -161,7 +161,8 @@ std = [ "orml-xcm-support/std", "orml-traits/std", "pallet-mmr-runtime-api/std", - "sp-mmr-primitives/std" + "sp-mmr-primitives/std", + "simnode-runtime-api/std" ] runtime-benchmarks = [ @@ -211,7 +212,3 @@ try-runtime = [ async-backing = [ "pallet-aura/experimental" ] - -simnode = [ - "simnode-runtime-api" -] \ No newline at end of file diff --git a/parachain/runtimes/messier/src/lib.rs b/parachain/runtimes/messier/src/lib.rs index 6a4511273..5fec633fc 100644 --- a/parachain/runtimes/messier/src/lib.rs +++ b/parachain/runtimes/messier/src/lib.rs @@ -780,7 +780,7 @@ impl_runtime_apis! { /// Return the number of MMR leaves. fn mmr_leaf_count() -> Result { - Ok(Mmr::mmr_leaves()) + Ok(Mmr::leaf_count()) } /// Return the on-chain MMR root hash. @@ -945,7 +945,6 @@ impl_runtime_apis! { } } - #[cfg(feature = "simnode")] impl simnode_runtime_api::CreateTransactionApi for Runtime where RuntimeCall: codec::Codec, @@ -963,15 +962,15 @@ impl_runtime_apis! { use sp_core::sr25519; let nonce = frame_system::Pallet::::account_nonce(account.clone()); let extra = ( - frame_system::CheckNonZeroSender::::new(), - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(Era::Immortal), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(0), - ); + frame_system::CheckNonZeroSender::::new(), + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(Era::Immortal), + frame_system::CheckNonce::::from(nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(0), + ); let signature = MultiSignature::from(sr25519::Signature([0_u8;64])); let address = sp_runtime::traits::AccountIdLookup::unlookup(account.into()); let ext = generic::UncheckedExtrinsic::::new_signed( diff --git a/parachain/runtimes/nexus/Cargo.toml b/parachain/runtimes/nexus/Cargo.toml index 72a82072a..dd09674b2 100644 --- a/parachain/runtimes/nexus/Cargo.toml +++ b/parachain/runtimes/nexus/Cargo.toml @@ -94,7 +94,7 @@ pallet-mmr = { workspace = true } pallet-mmr-runtime-api = { workspace = true } sp-mmr-primitives = { workspace = true } -simnode-runtime-api = { workspace = true, optional = true } +simnode-runtime-api = { workspace = true } [features] default = [ @@ -163,7 +163,8 @@ std = [ "orml-xcm-support/std", "orml-traits/std", "pallet-mmr-runtime-api/std", - "sp-mmr-primitives/std" + "sp-mmr-primitives/std", + "simnode-runtime-api/std" ] runtime-benchmarks = [ @@ -213,7 +214,3 @@ try-runtime = [ async-backing = [ "pallet-aura/experimental" ] - -simnode = [ - "simnode-runtime-api" -] \ No newline at end of file diff --git a/parachain/runtimes/nexus/src/lib.rs b/parachain/runtimes/nexus/src/lib.rs index 272d3b99f..d6b17126e 100644 --- a/parachain/runtimes/nexus/src/lib.rs +++ b/parachain/runtimes/nexus/src/lib.rs @@ -778,7 +778,7 @@ impl_runtime_apis! { /// Return the number of MMR leaves. fn mmr_leaf_count() -> Result { - Ok(Mmr::mmr_leaves()) + Ok(Mmr::leaf_count()) } /// Return the on-chain MMR root hash. @@ -943,7 +943,6 @@ impl_runtime_apis! { } } - #[cfg(feature = "simnode")] impl simnode_runtime_api::CreateTransactionApi for Runtime where RuntimeCall: codec::Codec, @@ -961,15 +960,15 @@ impl_runtime_apis! { use sp_core::sr25519; let nonce = frame_system::Pallet::::account_nonce(account.clone()); let extra = ( - frame_system::CheckNonZeroSender::::new(), - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(Era::Immortal), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(0), - ); + frame_system::CheckNonZeroSender::::new(), + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(Era::Immortal), + frame_system::CheckNonce::::from(nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(0), + ); let signature = MultiSignature::from(sr25519::Signature([0_u8;64])); let address = sp_runtime::traits::AccountIdLookup::unlookup(account.into()); let ext = generic::UncheckedExtrinsic::::new_signed( diff --git a/modules/trees/mmr/simnode-tests/Cargo.toml b/parachain/simtests/Cargo.toml similarity index 75% rename from modules/trees/mmr/simnode-tests/Cargo.toml rename to parachain/simtests/Cargo.toml index 8c75f180c..55360b1a4 100644 --- a/modules/trees/mmr/simnode-tests/Cargo.toml +++ b/parachain/simtests/Cargo.toml @@ -1,17 +1,16 @@ [package] -name = "simnode-tests" +name = "simtests" version = "0.1.0" edition = "2021" -description = "Simnode tests for mmr gadget" +description = "Simnode integration tests for the hyperbridge node subsystems" authors = ["Polytope Labs "] -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] subxt = { workspace = true, default-features = true } -anyhow = "1.0.70" +anyhow.workspace = true futures = "0.3.28" tokio = { version = "1.27.0", features = ["macros"] } +indicatif = "0.17.8" codec = { workspace = true, features = ["derive"], default-features = true } sp-core = { workspace = true, features = ["full_crypto", "serde"], default-features = true } @@ -26,3 +25,10 @@ mmr-primitives = { workspace = true, default-features = true } pallet-mmr = { workspace = true, default-features = true } pallet-ismp-rpc = { workspace = true } merkle-mountain-range = { workspace = true } +jsonrpsee-core = { version = "0.22.4", features = ["client"] } +trie-db = { workspace = true } +hash-db = { workspace = true } +sp-trie = { workspace = true } + +[features] +stress-test = [] \ No newline at end of file diff --git a/parachain/simtests/src/lib.rs b/parachain/simtests/src/lib.rs new file mode 100644 index 000000000..c1d00cb6c --- /dev/null +++ b/parachain/simtests/src/lib.rs @@ -0,0 +1,2 @@ +mod pallet_ismp; +mod pallet_mmr; diff --git a/parachain/simtests/src/pallet_ismp.rs b/parachain/simtests/src/pallet_ismp.rs new file mode 100644 index 000000000..2657369b4 --- /dev/null +++ b/parachain/simtests/src/pallet_ismp.rs @@ -0,0 +1,256 @@ +#![cfg(test)] + +use std::{ + collections::HashSet, + env, + time::{SystemTime, UNIX_EPOCH}, +}; + +use anyhow::anyhow; +use codec::Encode; +use sc_consensus_manual_seal::CreatedBlock; +use sp_core::{crypto::Ss58Codec, keccak_256, Bytes, KeccakHasher}; +use sp_keyring::sr25519::Keyring; +use sp_trie::{LayoutV0, MemoryDB}; +use subxt::{error::RpcError, rpc_params, tx::SubmittableExtrinsic}; +use trie_db::{Recorder, Trie, TrieDBBuilder, TrieDBMutBuilder, TrieMut}; + +use ismp::{ + host::StateMachine, + router::{Post, Request}, + util::hash_request, +}; +use pallet_ismp::{ + child_trie, + child_trie::H256, + primitives::{HashAlgorithm, SubstrateStateProof}, +}; +use subxt_utils::{ + gargantua::{ + api, + api::{ + runtime_types, + runtime_types::{ + gargantua_runtime::RuntimeCall, + ismp::{ + consensus::{StateCommitment, StateMachineHeight, StateMachineId}, + messaging::{Message, Proof, RequestMessage}, + }, + }, + }, + }, + Hyperbridge, +}; + +#[derive(Clone, Default)] +pub struct Keccak256; + +impl ismp::util::Keccak256 for Keccak256 { + fn keccak256(bytes: &[u8]) -> H256 + where + Self: Sized, + { + keccak_256(bytes).into() + } +} + +#[tokio::test] +#[ignore] +async fn test_txpool_should_reject_duplicate_requests() -> Result<(), anyhow::Error> { + let port = env::var("PORT").unwrap_or("9990".into()); + let client = subxt_utils::client::ws_client::( + &format!("ws://127.0.0.1:{}", port), + u32::MAX, + ) + .await?; + + let para_id = 3000u32; + // 1. initialize the ismp parachain client by adding the whitelisted paraId + { + let call = RuntimeCall::IsmpParachain( + runtime_types::ismp_parachain::pallet::Call::add_parachain { para_ids: vec![para_id] }, + ); + let call = client.tx().call_data(&api::tx().sudo().sudo(call))?; + let extrinsic: Bytes = client + .rpc() + .request( + "simnode_authorExtrinsic", + // author an extrinsic from alice, the sudo account + rpc_params![Bytes::from(call), Keyring::Alice.to_account_id().to_ss58check()], + ) + .await?; + let submittable = SubmittableExtrinsic::from_bytes(client.clone(), extrinsic.0); + let progress = submittable.submit_and_watch().await?; + let block = client + .rpc() + .request::>("engine_createBlock", rpc_params![true, false]) + .await?; + + let finalized = client + .rpc() + .request::("engine_finalizeBlock", rpc_params![block.hash]) + .await?; + assert!(finalized); + progress.wait_for_finalized_success().await?; + } + + let post = Post { + source: StateMachine::Polkadot(para_id), + dest: StateMachine::Polygon, + nonce: 0, + from: H256::random().as_bytes().to_vec(), + to: H256::random().as_bytes().to_vec(), + timeout_timestamp: 0, + data: H256::random().as_bytes().to_vec(), + }; + let request = Request::Post(post.clone()); + + let commitment = hash_request::(&request); + let mut db = >::default(); + let mut root = Default::default(); + let mut trie = TrieDBMutBuilder::>::new(&mut db, &mut root).build(); + let key = child_trie::request_commitment_storage_key(commitment); + let value = H256::random().as_bytes().to_vec(); + trie.insert(&key, &value).unwrap(); + drop(trie); + + let mut recorder = Recorder::>::new(); + let trie = TrieDBBuilder::>::new(&db, &root) + .with_recorder(&mut recorder) + .build(); + + assert_eq!(trie.get(&key).unwrap().unwrap(), value); + + let proof = recorder + .drain() + .into_iter() + .map(|f| f.data) + .collect::>() + .into_iter() + .collect::>(); + + // 2. first set the state commitment using sudo set_storage + let state_commitment = + StateCommitment { timestamp: 0, overlay_root: Some(root), state_root: root }; + let height = StateMachineHeight { + id: StateMachineId { + state_id: StateMachine::Polkadot(para_id).into(), + consensus_state_id: *b"PARA", + }, + height: 200, + }; + let address1 = api::storage().ismp().state_commitments(&height); + let address2 = api::storage().ismp().state_machine_update_time(&height); + let key1 = client.storage().address_bytes(&address1)?; + let key2 = client.storage().address_bytes(&address2)?; + let start = SystemTime::now(); + let now = start.duration_since(UNIX_EPOCH).expect("Time went backwards"); + + let call = RuntimeCall::System(runtime_types::frame_system::pallet::Call::set_storage { + items: vec![(key1, state_commitment.encode()), (key2, now.as_secs().encode())], + }); + let call = client.tx().call_data(&api::tx().sudo().sudo(call))?; + let extrinsic: Bytes = client + .rpc() + .request( + "simnode_authorExtrinsic", + // author an extrinsic from alice + rpc_params![Bytes::from(call), Keyring::Alice.to_account_id().to_ss58check()], + ) + .await?; + let submittable = SubmittableExtrinsic::from_bytes(client.clone(), extrinsic.0); + submittable.submit().await?; + + // create a block + let _ = client + .rpc() + .request::>("engine_createBlock", rpc_params![true, false]) + .await?; + + // sanity check that it was properly stored + let item = client + .storage() + .at_latest() + .await? + .fetch(&address1) + .await? + .ok_or_else(|| anyhow!("Failed to set state commitment"))?; + + assert_eq!(item, state_commitment); + + let item = client + .storage() + .at_latest() + .await? + .fetch(&address2) + .await? + .ok_or_else(|| anyhow!("Failed to set state commitment"))?; + + assert_eq!(item, now.as_secs()); + + let proof = + SubstrateStateProof::OverlayProof { hasher: HashAlgorithm::Keccak, storage_proof: proof } + .encode(); + let proof = Proof { height, proof }; + + // 3. next send the requests + let tx = api::tx().ismp().handle(vec![Message::Request(RequestMessage { + requests: vec![post.clone().into()], + proof: proof.clone(), + signer: H256::random().as_bytes().to_vec(), + })]); + + // send once + let progress = client.tx().create_unsigned(&tx)?.submit_and_watch().await?; + // send twice, txpool should reject it + { + let tx = api::tx().ismp().handle(vec![Message::Request(RequestMessage { + requests: vec![post.clone().into()], + proof: proof.clone(), + signer: H256::random().as_bytes().to_vec(), + })]); + let error = client.tx().create_unsigned(&tx)?.submit_and_watch().await.unwrap_err(); + let subxt::Error::Rpc(RpcError::ClientError(err)) = error else { + panic!("Unexpected error kind: {error:?}") + }; + let jsonrpsee_error = err.downcast::().unwrap(); + let jsonrpsee_core::ClientError::Call(error) = *jsonrpsee_error else { + panic!("Unexpected error kind: {jsonrpsee_error:?}") + }; + + assert_eq!(error.message(), "Priority is too low: (100 vs 100)"); + }; + + let block = client + .rpc() + .request::>("engine_createBlock", rpc_params![true, false]) + .await?; + + let finalized = client + .rpc() + .request::("engine_finalizeBlock", rpc_params![block.hash]) + .await?; + assert!(finalized); + progress.wait_for_finalized_success().await?; + + // send after block inclusion, txpool should reject it + { + let tx = api::tx().ismp().handle(vec![Message::Request(RequestMessage { + requests: vec![post.into()], + proof, + signer: H256::random().as_bytes().to_vec(), + })]); + let error = client.tx().create_unsigned(&tx)?.submit_and_watch().await.unwrap_err(); + let subxt::Error::Rpc(RpcError::ClientError(err)) = error else { + panic!("Unexpected error kind: {error:?}") + }; + let jsonrpsee_error = err.downcast::().unwrap(); + let jsonrpsee_core::ClientError::Call(error) = *jsonrpsee_error else { + panic!("Unexpected error kind: {jsonrpsee_error:?}") + }; + + assert_eq!(error.message(), "Invalid Transaction"); + }; + + Ok(()) +} diff --git a/modules/trees/mmr/simnode-tests/src/lib.rs b/parachain/simtests/src/pallet_mmr.rs similarity index 83% rename from modules/trees/mmr/simnode-tests/src/lib.rs rename to parachain/simtests/src/pallet_mmr.rs index 593c8a923..8bd70dd1b 100644 --- a/modules/trees/mmr/simnode-tests/src/lib.rs +++ b/parachain/simtests/src/pallet_mmr.rs @@ -1,11 +1,9 @@ #![cfg(test)] +use std::{env, time::Duration}; + use codec::Decode; use merkle_mountain_range::MerkleProof; -use mmr_primitives::{DataOrHash, FullLeaf}; -use pallet_ismp::{mmr::Leaf, ProofKeys}; -use pallet_ismp_rpc::MmrProof; -use pallet_mmr::mmr::Hasher as MmrHasher; use sc_consensus_manual_seal::CreatedBlock; use sp_core::{crypto::Ss58Codec, keccak_256, offchain::StorageKind, Bytes, H256}; use sp_keyring::sr25519::Keyring; @@ -15,8 +13,12 @@ use sp_mmr_primitives::{ INDEXING_PREFIX, }; use sp_runtime::traits::Keccak256; -use std::{env, time::Duration}; -use subxt::{rpc_params, tx::SubmittableExtrinsic, utils::H160, OnlineClient}; +use subxt::{rpc_params, tx::SubmittableExtrinsic, utils::H160}; + +use mmr_primitives::{DataOrHash, FullLeaf}; +use pallet_ismp::{mmr::Leaf, ProofKeys}; +use pallet_ismp_rpc::MmrProof; +use pallet_mmr::mmr::Hasher as MmrHasher; use subxt_utils::{ gargantua, gargantua::api::runtime_types::{ismp::host::Ethereum, pallet_ismp_demo::pallet::EvmParams}, @@ -30,9 +32,72 @@ async fn test_all_features() -> Result<(), anyhow::Error> { Ok(()) } +#[cfg(feature = "stress-test")] +#[tokio::test] +async fn test_insert_1_billion_mmr_leaves() -> Result<(), anyhow::Error> { + // try to estimate the storage requirements on offchaindb with 1 billion leaves in mmr + use indicatif::ProgressBar; + + let port = env::var("PORT").unwrap_or("9990".into()); + let client = subxt_utils::client::ws_client::( + &format!("ws://127.0.0.1:{}", port), + u32::MAX, + ) + .await?; + let pb = ProgressBar::new(100_000); + for pos in 44_243..100_000 { + // Initialize MMR Pallet by dispatching some leaves and finalizing + let params = EvmParams { + module: H160::random(), + destination: Ethereum::ExecutionLayer, + timeout: 0, + count: 10_000, + }; + let call = client + .tx() + .call_data(&gargantua::api::tx().ismp_demo().dispatch_to_evm(params))?; + let _account_id = AsRef::<[u8; 32]>::as_ref(&Keyring::Ferdie.to_account_id()).clone(); + + let _ = client + .rpc() + .request::>("engine_createBlock", rpc_params![true, false]) + .await?; + + let extrinsic: Bytes = client + .rpc() + .request( + "simnode_authorExtrinsic", + // author an extrinsic from alice + rpc_params![Bytes::from(call), Keyring::Ferdie.to_account_id().to_ss58check()], + ) + .await?; + SubmittableExtrinsic::from_bytes(client.clone(), extrinsic.0).submit().await?; + + let created_block = client + .rpc() + .request::>("engine_createBlock", rpc_params![true, false]) + .await?; + + // Finalize a new block so that we are sure mmr gadget gets the notification + let _ = client + .rpc() + .request::("engine_finalizeBlock", rpc_params![created_block.hash]) + .await?; + pb.set_position(pos); + } + + pb.finish_with_message("Inserted 1 billion leaves"); + + Ok(()) +} + async fn dispatch_requests() -> Result<(), anyhow::Error> { let port = env::var("PORT").unwrap_or("9990".into()); - let client = OnlineClient::::from_url(format!("ws://127.0.0.1:{}", port)).await?; + let client = subxt_utils::client::ws_client::( + &format!("ws://127.0.0.1:{}", port), + u32::MAX, + ) + .await?; // Initialize MMR Pallet by dispatching some leaves and finalizing let params = EvmParams { @@ -84,7 +149,7 @@ async fn dispatch_requests() -> Result<(), anyhow::Error> { // Get finalized leaves let mut leaves = vec![]; - for idx in 0..10 { + for idx in 0..=10 { let pos = leaf_index_to_pos(idx as u64); let canon_key = NodesUtils::node_canon_offchain_key(INDEXING_PREFIX, pos); let value = client @@ -343,11 +408,11 @@ async fn dispatch_requests() -> Result<(), anyhow::Error> { let res = merkle_proof .verify( root, - leaves[10..] + leaves[11..] .to_vec() .into_iter() .enumerate() - .map(|(idx, leaf)| (leaf_index_to_pos((10 + idx) as u64), leaf)) + .map(|(idx, leaf)| (leaf_index_to_pos((11 + idx) as u64), leaf)) .collect(), ) .unwrap(); diff --git a/scripts/generate_subxt_types.sh b/scripts/generate_subxt_types.sh new file mode 100755 index 000000000..97543c633 --- /dev/null +++ b/scripts/generate_subxt_types.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +subxt codegen --derive=PartialEq --derive=Eq --derive=Clone --url=$1 | rustfmt --edition=2018 --emit=stdout | tee ./modules/subxt/utils/src/$2.rs